From 84188bbe3122ab67b53870c2c952c51f1813bb68 Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Tue, 9 Apr 2024 22:30:12 +0300 Subject: [PATCH 01/16] unfinished moving meeting comp to lowcoder-comps --- client/packages/lowcoder/package.json | 2 +- .../videoMeetingControllerComp.tsx | 72 ++++++++++--------- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/client/packages/lowcoder/package.json b/client/packages/lowcoder/package.json index d9a05c00d..e9e2f5bc2 100644 --- a/client/packages/lowcoder/package.json +++ b/client/packages/lowcoder/package.json @@ -37,7 +37,7 @@ "@types/react-test-renderer": "^18.0.0", "@types/react-virtualized": "^9.21.21", "agora-access-token": "^2.0.4", - "agora-rtc-sdk-ng": "^4.19.0", + "agora-rtc-sdk-ng": "^4.20.2", "agora-rtm-sdk": "^1.5.1", "antd": "5.13.2", "axios": "^1.6.2", diff --git a/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx b/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx index 90def35ac..de667c712 100644 --- a/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx +++ b/client/packages/lowcoder/src/comps/comps/meetingComp/videoMeetingControllerComp.tsx @@ -512,12 +512,12 @@ let MTComp = (function () { styles={{ wrapper: { maxHeight: "100%", - maxWidth: "100%" - }, + maxWidth: "100%", + }, body: { padding: 0, backgroundColor: props.style.background, - } + }, }} closable={false} placement={props.placement} @@ -569,8 +569,10 @@ let MTComp = (function () { ) .setPropertyViewFn((children) => ( <> - {(useContext(EditorContext).editorModeStatus === "logic" || useContext(EditorContext).editorModeStatus === "both") && ( - <>
+ {(useContext(EditorContext).editorModeStatus === "logic" || + useContext(EditorContext).editorModeStatus === "both") && ( + <> +
{children.appId.propertyView({ label: trans("meeting.appid"), })} @@ -593,38 +595,40 @@ let MTComp = (function () { )} - {(useContext(EditorContext).editorModeStatus === "layout" || useContext(EditorContext).editorModeStatus === "both") && ( - <>
- {children.placement.propertyView({ - label: trans("drawer.placement"), - radioButton: true, - })} - {["top", "bottom"].includes(children.placement.getView()) - ? children.autoHeight.getPropertyView() - : children.width.propertyView({ - label: trans("drawer.width"), - tooltip: trans("drawer.widthTooltip"), + {(useContext(EditorContext).editorModeStatus === "layout" || + useContext(EditorContext).editorModeStatus === "both") && ( + <> +
+ {children.placement.propertyView({ + label: trans("drawer.placement"), + radioButton: true, + })} + {["top", "bottom"].includes(children.placement.getView()) + ? children.autoHeight.getPropertyView() + : children.width.propertyView({ + label: trans("drawer.width"), + tooltip: trans("drawer.widthTooltip"), + placeholder: DEFAULT_SIZE + "", + })} + {!children.autoHeight.getView() && + ["top", "bottom"].includes(children.placement.getView()) && + children.height.propertyView({ + label: trans("drawer.height"), + tooltip: trans("drawer.heightTooltip"), placeholder: DEFAULT_SIZE + "", })} - {!children.autoHeight.getView() && - ["top", "bottom"].includes(children.placement.getView()) && - children.height.propertyView({ - label: trans("drawer.height"), - tooltip: trans("drawer.heightTooltip"), - placeholder: DEFAULT_SIZE + "", + {children.maskClosable.propertyView({ + label: trans("prop.maskClosable"), + })} + {children.showMask.propertyView({ + label: trans("prop.showMask"), })} - {children.maskClosable.propertyView({ - label: trans("prop.maskClosable"), - })} - {children.showMask.propertyView({ - label: trans("prop.showMask"), - })} -
- -
- - {children.style.getPropertyView()} -
+
+ +
+ {children.style.getPropertyView()} +
+ )} )) From 3621bfef3ac33eec9658a122f54ef7e4c176677b Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Tue, 9 Apr 2024 22:30:43 +0300 Subject: [PATCH 02/16] unfinished moving meeting comp to lowcoder-comps --- .../agorameetingControllerComp.tsx | 124 +++ .../agoraMeetingComp/calendarConstants.tsx | 946 ++++++++++++++++++ client/yarn.lock | 4 +- 3 files changed, 1072 insertions(+), 2 deletions(-) create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx new file mode 100644 index 000000000..955fa7545 --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx @@ -0,0 +1,124 @@ +import { + isValidColor, + NameConfig, + NameConfigHidden, + BoolControl, + UICompBuilder, + withDefault, + withExposingConfigs, + NumberControl, + StringControl, + hiddenPropertyView, + ChangeEventHandlerControl, + Section, + sectionNames, + dropdownControl, + styleControl, + ThemeContext, + CalendarStyle, + DateParser, + CustomModal, + jsonValueExposingStateControl, + CalendarDeleteIcon, + Tooltip, +} from "lowcoder-sdk"; +import { trans, getCalendarLocale } from "../../i18n/comps"; +import { + DefaultWithFreeViewOptions, + DefaultWithPremiumViewOptions, + FirstDayOptions, +} from "./calendarConstants"; + +import AgoraRTC, { + type ICameraVideoTrack, + type IMicrophoneAudioTrack, + type IAgoraRTCClient, + type IAgoraRTCRemoteUser, + type UID, + type ILocalVideoTrack, +} from "agora-rtc-sdk-ng"; +import type { RtmChannel, RtmClient } from "agora-rtm-sdk"; + +const childrenMap = { + +}; + +let CalendarBasicComp = (function () { + return new UICompBuilder(childrenMap, (props) => { + + }) + .setPropertyViewFn((children) => { + let licence = children.licenceKey.getView(); + return ( + <> +
+ {children.events.propertyView({})} +
+
+ {children.licenceKey.propertyView({ + label: trans("calendar.licence"), + })} + {children.onEvent.getPropertyView()} +
+
+ {children.editable.propertyView({ + label: trans("calendar.editable"), + })} + {children.defaultDate.propertyView({ + label: trans("calendar.defaultDate"), + tooltip: trans("calendar.defaultDateTooltip"), + })} + {licence == "" + ? children.defaultFreeView.propertyView({ + label: trans("calendar.defaultView"), + tooltip: trans("calendar.defaultViewTooltip"), + }) + : children.defaultPremiumView.propertyView({ + label: trans("calendar.defaultView"), + tooltip: trans("calendar.defaultViewTooltip"), + })} + {children.firstDay.propertyView({ + label: trans("calendar.startWeek"), + })} + {children.showEventTime.propertyView({ + label: trans("calendar.showEventTime"), + tooltip: trans("calendar.showEventTimeTooltip"), + })} + {children.showWeekends.propertyView({ + label: trans("calendar.showWeekends"), + })} + {children.showAllDay.propertyView({ + label: trans("calendar.showAllDay"), + tooltip: trans("calendar.showAllDayTooltip"), + })} + {children.dayMaxEvents.propertyView({ + label: trans("calendar.dayMaxEvents"), + tooltip: trans("calendar.dayMaxEventsTooltip"), + })} + {children.eventMaxStack.propertyView({ + label: trans("calendar.eventMaxStack"), + tooltip: trans("calendar.eventMaxStackTooltip"), + })} +
+
+ {hiddenPropertyView(children)} +
+
+ {children.style.getPropertyView()} +
+ + ); + }) + .build(); +})(); + +CalendarBasicComp = class extends CalendarBasicComp { + override autoHeight(): boolean { + return false; + } +}; + +export const CalendarComp = withExposingConfigs(CalendarBasicComp, [ + new NameConfig("events", trans("calendar.events")), + NameConfigHidden, +]); diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx new file mode 100644 index 000000000..394c0427a --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx @@ -0,0 +1,946 @@ +import { trans } from "../../i18n/comps"; +import { + backgroundToBorder, + CalendarStyleType, + contrastText, + contrastColor, + handleToCalendarHeadSelectBg, + handleToCalendarToday, + genHoverColor, + DATE_FORMAT, + DATE_TIME_FORMAT, + ThemeDetail, + isDarkColor, + darkenColor, + lightenColor, + toHex, + UnderlineCss, +} from "lowcoder-sdk"; +import styled from "styled-components"; +import dayjs from "dayjs"; +import { + DayHeaderContentArg, + FormatterInput, + SlotLabelContentArg, + ViewContentArg, +} from "@fullcalendar/core"; +import { default as Form } from "antd/es/form"; + +export const Wrapper = styled.div<{ + $editable: boolean; + $style: CalendarStyleType; + $theme?: ThemeDetail; + $left?: number; +}>` + position: relative; + height: 100%; + overflow: hidden; + color: ${(props) => props.$style.text}; + .fc-theme-standard .fc-list-day-cushion, + .fc .fc-timegrid-col.fc-day-today, + .fc .fc-daygrid-day.fc-day-today { + background-color: ${(props) => props.$style.background}; + } + .fc .fc-highlight { + background-color: ${(props) => props.$style.selectBackground}; + } + a { + color: ${(props) => props.$style.text}; + } + + .fc .fc-timegrid-slot { + height: 28px; + } + + // day + .fc-timeGridDay-view { + .fc-col-header-cell { + font-size: 20px; + font-weight: 500; + a { + line-height: 67px; + } + } + } + + // list + .fc-list { + .fc-list-table { + table-layout: fixed; + th { + background-color: ${(props) => props.$style.background}; + } + } + .fc-list-event-graphic { + display: none; + } + .fc-list-day-cushion { + font-size: 16px; + font-weight: 500; + line-height: 32px; + padding: 0 24px; + } + .fc-list-day-side-text { + float: left; + margin-left: 24px; + } + .fc-list-day { + th { + padding: 8px 0 3px 0; + } + > th { + border: none; + } + &:not(:nth-of-type(1)) .fc-list-day-cushion { + border-top: 1px solid + ${(props) => + toHex(props.$style.border) === "#D7D9E0" + ? "#E1E3EB" + : lightenColor(props.$style.border, 0.03)}; + } + } + .fc-event + .fc-list-day th { + padding-top: 11px; + .fc-list-day-cushion { + padding-top: 8px; + } + } + .fc-event { + .fc-list-event-time, + .fc-list-event-title { + border: none; + } + &:hover .event { + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); + border-width: 1px; + margin: 2px 5px; + height: 20px; + .event-title { + margin-left: 15px; + } + &::before { + left: 2px; + } + } + } + .fc-event { + font-size: 13px; + line-height: 20px; + display: flex; + align-items: center; + &.no-time { + padding-left: 19px; + } + } + .fc-list-event-time { + padding: 0px 16px 0 24px; + vertical-align: middle; + min-width: 87px; + width: 87px; + box-sizing: content-box; + } + .fc-list-event-title { + min-width: 266px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 0 14px 0 0; + cursor: pointer; + .event { + font-size: 13px; + height: 18px; + line-height: 18px; + margin: 3px 5px; + border-width: 0; + align-items: center; + &::before { + height: 14px; + top: 2px; + left: 3px; + } + .event-time { + display: none; + } + .event-title { + margin-left: 16px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .event-remove { + background-color: inherit; + } + } + } + .fc-event:hover td { + background-color: inherit; + } + } + + // month + .fc-dayGridMonth-view { + .fc-daygrid-day-frame { + min-height: 95px; + height: 100%; + } + .fc-col-header-cell { + font-size: 14px; + font-weight: 400; + text-align: left; + padding-left: 16px; + a { + padding: 0; + line-height: 39px; + } + } + .fc-daygrid-day-number { + font-size: 14px; + line-height: 22px; + font-weight: 500; + padding: 0 6px; + border-radius: 11px; + margin: 12px 0 0 10px; + } + .fc-daygrid-day-top { + flex-direction: inherit; + } + .fc-day-today .fc-daygrid-day-number { + background-color: ${(props) => + props.$theme?.primary ? props.$theme.primary : props.$style.background}; + color: ${(props) => + contrastText( + props.$theme?.primary || "", + props.$theme?.textDark || "#000000", + props.$theme?.textLight || "#ffffff" + )}; + } + .fc-daygrid-day-events { + padding: 1px 0 5px 0; + min-height: unset; + .fc-event { + margin: 2px 4px 2px 12px; + padding: 0; + &:hover .event { + padding-right: 20px; + } + .event { + font-size: 13px; + line-height: 18px; + padding-right: 0; + .event-time { + display: none; + } + .event-title { + margin-left: 15px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + &::before { + height: 14px; + } + } + } + .fc-daygrid-day-bottom { + padding: 2px 2px 0 10px; + } + } + .fc-day-other { + color: ${(props) => props.$style.text}; + .fc-daygrid-day-top, + .fc-daygrid-day-events { + opacity: 0.35; + } + .event::before { + background-color: ${(props) => props.$style.text}; + } + } + } + // month drag event + .fc > .fc-event { + visibility: hidden; + } + + // more link + .fc-view-harness-active .fc-more-popover { + border-radius: 4px; + box-shadow: 0 0px 10px 4px rgba(0, 0, 0, 0.25); + overflow: hidden; + left: ${(props) => `min(${props.$left}px, calc(100% - 210px)) !important`}; + .fc-popover-body { + padding: 4px 0; + min-width: 200px; + width: 200px; + .fc-daygrid-event-harness { + margin: 4px; + .fc-event { + margin: 0; + .event { + height: fit-content; + .event-title { + white-space: pre-wrap; + } + .event-time { + margin-top: 0; + } + } + } + } + } + .fc-popover-header, + .fc-popover-body { + background-color: ${(props) => props.$style.background}; + } + .fc-popover-header .fc-popover-close { + color: #8b8fa3; + &:hover { + color: #222; + } + } + } + + .fc-direction-ltr .fc-timegrid-more-link { + border: 1px solid ${(props) => props.$style.border}; + border-radius: 4px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); + font-size: 13px; + display: inline-block; + font-weight: 500; + background-color: ${(props) => lightenColor(props.$style.background, 0.1)}; + } + + .fc-dayGridMonth-view .fc-more-link { + margin: 0 2px 2px 2px !important; + } + .fc-timeGridWeek-view .fc-more-link, + .fc-timeGridDay-view .fc-more-link { + margin: 2px !important; + } + .fc-daygrid-day-events { + margin: 0 !important; + padding: 2px 0; + .fc-event { + margin: 2px 4px; + } + .fc-daygrid-day-bottom { + line-height: 16px; + padding: 0; + .fc-more-link { + width: calc(100% - 4px); + border: 1px solid ${(props) => props.$style.border}; + border-radius: 4px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); + font-size: 13px; + display: inline-block; + height: 20px; + padding-left: 15px; + font-weight: 500; + background-color: ${(props) => + lightenColor(props.$style.background, 0.1)}; + } + } + } + + // on resize + .fc-media-screen { + height: 100% !important; + } + .fc-scroller { + overflow: hidden auto !important; + overflow: hidden overlay !important; + } + .fc-col-header, + .fc-scroller > div, + .fc-scroller > div > table, + .fc-scrollgrid-sync-table, + .fc-timegrid-cols > table, + .fc .fc-scrollgrid, + .fc .fc-scrollgrid table { + width: 100% !important; + } + + // event + .fc-timegrid-event .fc-event-main { + padding: 4px 0 4px 1px; + } + .fc-event { + position: relative; + height: 100%; + background-color: unset !important; + border: none !important; + box-shadow: none !important; + .event-remove { + color: ${(props) => props.$style.text}; + } + &:hover { + .event-remove { + opacity: ${(props) => (props.$editable ? 1 : undefined)}; + } + } + } + + // left time + .time.past { + opacity: 0.35; + } + + .past .time { + opacity: 0.35; + } + + .future .time { + opacity: 1; + } + + .fc-scrollgrid-liquid > tbody { + & > tr:nth-of-type(2) { + display: ${(props) => props.allDay && 1}; + } + } + .fc .fc-timegrid-slot-label-cushion { + padding: 0 15px; + } + + // border-radius, bg + .fc-theme-standard .fc-list { + background-color: ${(props) => props.$style.background}; + border-radius: ${(props) => + `0 0 ${props.$style.radius} ${props.$style.radius}`}; + border-color: ${(props) => props.$style.border}; + border-top-color: ${(props) => + toHex(props.$style.border) === "#D7D9E0" + ? "#E1E3EB" + : lightenColor(props.$style.border, 0.03)}; + } + .fc-scrollgrid-liquid { + border-radius: ${(props) => + `0 0 ${props.$style.radius} ${props.$style.radius}`}; + overflow: hidden; + border-right-width: 1px; + border-bottom-width: 1px; + border-color: ${(props) => props.$style.border}; + > thead, + > tbody > tr:nth-of-type(1), + .fc-scrollgrid-section-liquid > td { + background-color: ${(props) => props.$style.background}; + } + } + .fc-scrollgrid-section-liquid > td, + .fc-scrollgrid-liquid .fc-scrollgrid-section-header > th { + border: none; + } + .fc-scrollgrid-liquid > tbody > tr:nth-of-type(1) > td { + border-right: none; + } + .fc-theme-standard .fc-scrollgrid { + border-color: ${(props) => + toHex(props.$style.border) === "#D7D9E0" + ? "#E1E3EB" + : lightenColor(props.$style.border, 0.03)}; + } + .fc .fc-scrollgrid { + border-bottom-width: 1px; + border-right-width: 1px; + } + + .fc-day-sat, + .fc-day-sun { + &.fc-timegrid-col, + &.fc-daygrid-day { + background-color: ${(props) => + isDarkColor(props.$style.background) + ? darkenColor(props.$style.background, 0.06) + : darkenColor(props.$style.background, 0.02)}; + } + } + .fc-theme-standard td, + .fc-theme-standard th { + border-color: ${(props) => + toHex(props.$style.border) === "#D7D9E0" + ? "#E1E3EB" + : lightenColor(props.$style.border, 0.03)}; + } + + // header + .fc .fc-toolbar.fc-header-toolbar { + padding: 16px; + margin-bottom: 0; + border: 1px solid ${(props) => props.$style.border}; + border-bottom: none; + border-radius: ${(props) => + `${props.$style.radius} ${props.$style.radius} 0 0`}; + background-color: ${(props) => props.$style.background}; + } + .fc-toolbar-title { + color: ${(props) => props.$style.title}; + font-size: 24px; + line-height: 24px; + display: inline-flex; + } + .fc-toolbar-chunk { + display: inline-flex; + align-items: center; + } + .fc .fc-toolbar-chunk .fc-button.fc-button-primary { + height: 28px; + display: flex; + align-items: center; + justify-content: center; + &:not(:disabled):not(.fc-button-active) { + &:hover, + &:active { + color: ${(props) => props.$style.btnText}; + background-color: ${(props) => + toHex(props.$style.headerBtnBackground) === "#FFFFFF" + ? "#F5F5F6" + : genHoverColor(props.$style.headerBtnBackground)}; + border-color: ${(props) => + toHex(props.$style.headerBtnBackground) === "#FFFFFF" + ? "#D7D9E0" + : backgroundToBorder( + genHoverColor(props.$style.headerBtnBackground) + )}; + } + } + &:not(:disabled):focus { + box-shadow: none; + } + &:disabled { + cursor: not-allowed; + opacity: 1; + &, + &:hover { + background-color: ${(props) => props.$style.headerBtnBackground}; + border-color: ${(props) => + backgroundToBorder(props.$style.headerBtnBackground)}; + color: ${(props) => + toHex(props.$style.btnText) === "#222222" + ? "#B8B9BF" + : contrastColor(props.$style.btnText)}; + } + } + } + .fc .fc-button-primary:not(:disabled).fc-button-active:focus, + .fc .fc-button-primary:not(:disabled):active:focus { + box-shadow: none; + } + .fc-toolbar-chunk:nth-of-type(3) .fc-button-primary { + height: 28px; + display: inline-flex; + font-size: 14px; + margin-left: 8px; + background-color: ${(props) => props.$style.headerBtnBackground}; + border-color: ${(props) => + backgroundToBorder(props.$style.headerBtnBackground)}; + color: ${(props) => props.$style.btnText}; + &.fc-today-button { + min-width: 52px; + } + &.fc-prev-button, + &.fc-next-button { + padding: 0; + width: 28px; + color: ${(props) => lightenColor(props.$style.btnText, 0.4)}; + } + &.fc-prev-button { + margin-left: 12px; + } + } + .fc-toolbar-chunk:nth-of-type(3) .fc-button-group { + background-color: ${(props) => + toHex(props.$style.headerBtnBackground) === "#FFFFFF" + ? "#EFEFF1" + : isDarkColor(props.$style.headerBtnBackground) + ? props.$style.headerBtnBackground + : darkenColor(props.$style.headerBtnBackground, 0.1)}; + border-radius: 4px; + margin-left: 16px; + .fc-button-primary { + background-color: transparent; + min-width: 60px; + border-radius: 4px; + margin: 2px; + border: none; + color: ${(props) => + toHex(props.$style.btnText) === "#222222" + ? "#8B8FA3" + : lightenColor(props.$style.btnText, 0.4)}; + font-weight: 500; + + &.fc-button-active { + background-color: ${(props) => + isDarkColor(props.$style.headerBtnBackground) + ? lightenColor(props.$style.headerBtnBackground, 0.1) + : props.$style.headerBtnBackground}; + color: ${(props) => props.$style.btnText}; + } + } + } + + // week head + .fc-timeGridWeek-view { + .week-head { + display: flex; + flex-direction: column; + font-size: 14px; + font-weight: 400; + &.past span { + opacity: 0.35; + } + .week { + padding-bottom: 3px; + } + .day { + font-size: 20px; + font-weight: 500; + line-height: 22px; + } + } + .fc-day-today.fc-col-header-cell { + background-color: ${(props) => + isDarkColor(props.$style.background) + ? "#ffffff19" + : toHex(props.$theme?.primary!) + "19"}; + a { + color: ${(props) => + !isDarkColor(props.$style.background) && + darkenColor(props.$theme?.primary!, 0.1)}; + } + } + .fc-col-header-cell-cushion { + padding: 8px 0 13px 0; + } + } + + // week left + .fc .fc-timegrid-axis-cushion { + min-width: 62px; + min-height: 52px; + max-width: none; + display: inline-flex; + align-items: center; + justify-content: center; + } + .fc-direction-ltr .fc-timegrid-slot-label-frame { + text-align: center; + } + .fc .fc-timegrid-slot-label { + border: none; + } + + // time can doubleClick + .fc-timegrid-bg-harness, + .fc-daygrid-day-bg { + pointer-events: none; + } +`; + +export const Remove = styled.div<{ isList: boolean }>` + position: absolute; + pointer-events: auto; + top: 0; + right: 0; + display: flex; + padding: 5px; + opacity: 0; + cursor: pointer; + &:hover { + g { + stroke: #315efb; + } + } +`; + +export const Event = styled.div<{ + bg: string; + theme: Object; + isList: boolean; + allDay: boolean; + $style: CalendarStyleType; +}>` + height: 100%; + width: 100%; + pointer-events: none; + border-radius: 4px; + box-shadow: ${(props) => !props.isList && "0 0 5px 0 rgba(0, 0, 0, 0.15)"}; + border: 1px solid ${(props) => props.$style.border}; + display: ${(props) => props.isList && "flex"}; + background-color: ${(props) => + !props.isList && lightenColor(props.$style.background, 0.1)}; + overflow: hidden; + font-size: 13px; + line-height: 19px; + padding-right: 20px; + overflow: hidden; + position: relative; + &::before { + content: ""; + position: absolute; + display: block; + width: 5px; + height: calc(100% - 4px); + left: 2px; + top: 2px; + border-radius: 3px; + background-color: ${(props) => props.bg}; + } + + .event-time { + color: ${(props) => + !props.isList && + (isDarkColor(props.$style.text) + ? lightenColor(props.$style.text, 0.2) + : props.$style.text)}; + margin-left: 15px; + white-space: pre-wrap; + margin-top: 2px; + } + .event-title { + color: ${(props) => !props.isList && props.$style.text}; + font-weight: 500; + margin-left: 15px; + white-space: pre-wrap; + word-break: break-word; + } + + &.small { + height: 20px; + .event-time { + display: none; + } + .event-title { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + &.middle { + padding-top: 2px; + .event-time, + .event-title { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + &.large { + .event-time { + margin-top: 13px; + } + } + &.past { + background-color: ${(props) => + isDarkColor(props.$style.background) && props.$style.background}; + &::before { + background-color: ${(props) => + toHex(props.$style.text) === "#3C3C3C" + ? "#8B8FA3" + : isDarkColor(props.$style.text) + ? lightenColor(props.$style.text, 0.3) + : props.$style.text}; + } + &::before, + .event-title, + .event-time { + opacity: 0.35; + } + } +`; + +export const FormWrapper = styled(Form)` + .ant-form-item-label { + width: 100px; + text-align: left; + line-height: 18px; + label:not(.ant-form-item-required) { + margin-left: 11px; + } + label span { + ${UnderlineCss} + } + } +`; + +export type EventType = { + id?: string; + label?: string; + title?: string; + start?: string; + end?: string; + allDay?: boolean; + color?: string; + groupId?: string; + value?: string; +}; + +export enum ViewType { + MONTH = "dayGridMonth", + WEEK = "timeGridWeek", + DAY = "timeGridDay", + LIST = "listWeek", + TIMEGRID = "timeGridDay", +} + + +export const DefaultWithPremiumViewOptions = [ + { + label: trans("calendar.month"), + value: "dayGridMonth", + }, + { + label: trans("calendar.week"), + value: "timeGridWeek", + }, + { + label: trans("calendar.timeline"), + value: "resourceTimeline", + }, + { + label: trans("calendar.day"), + value: "timeGridDay", + }, + { + label: trans("calendar.list"), + value: "listWeek", + }, +] as const; + +export const DefaultWithFreeViewOptions = [ + { + label: trans("calendar.month"), + value: "dayGridMonth", + }, + { + label: trans("calendar.week"), + value: "timeGridWeek", + }, + { + label: trans("calendar.day"), + value: "timeGridDay", + }, + { + label: trans("calendar.list"), + value: "listWeek", + }, +] as const; + +export const FirstDayOptions = [ + { + label: trans("calendar.monday"), + value: "1", + }, + { + label: trans("calendar.tuesday"), + value: "2", + }, + { + label: trans("calendar.wednesday"), + value: "3", + }, + { + label: trans("calendar.thursday"), + value: "4", + }, + { + label: trans("calendar.friday"), + value: "5", + }, + { + label: trans("calendar.saturday"), + value: "6", + }, + { + label: trans("calendar.sunday"), + value: "0", + }, +]; + +export const defaultData = [ + { + id: "1", + title: "Coding", + start: dayjs().hour(10).minute(0).second(0).format(DATE_TIME_FORMAT), + end: dayjs().hour(12).minute(30).second(0).format(DATE_TIME_FORMAT), + color: "#079968", + }, + { + id: "2", + title: "Rest", + start: dayjs().hour(24).format(DATE_FORMAT), + end: dayjs().hour(48).format(DATE_FORMAT), + allDay: true, + }, +]; + +export const buttonText = { + today: trans("calendar.today"), + month: trans("calendar.month"), + week: trans("calendar.week"), + timeline: trans("calendar.timeline"), + day: trans("calendar.day"), + list: trans("calendar.list"), +}; + +export const headerToolbar = { + left: "title", + right: "prev today next dayGridMonth,timeGridWeek,timeGridDay,listWeek", +}; + +const weekHeadContent = (info: DayHeaderContentArg) => { + const text = info.text.split(" "); + return { + html: ` + ${text[0]} + ${text[1]} + `, + }; +}; + +const leftTimeContent = (info: SlotLabelContentArg) => { + let isPast = false; + if (info.view.type === ViewType.WEEK) { + isPast = dayjs().isAfter(dayjs(dayjs().format("YYYY MM DD " + info.text))); + } else if (info.view.type === ViewType.DAY) { + isPast = dayjs().isAfter( + dayjs(dayjs(info.view.activeStart).format("YYYY MM DD " + info.text)) + ); + } + return { + html: `${info.text}`, + }; +}; + +export const views = { + [ViewType.WEEK]: { + dayHeaderFormat: "ddd DD", + dayHeaderContent: (info: DayHeaderContentArg) => weekHeadContent(info), + slotLabelContent: (info: SlotLabelContentArg) => leftTimeContent(info), + }, + [ViewType.DAY]: { + slotLabelContent: (info: SlotLabelContentArg) => leftTimeContent(info), + }, + [ViewType.LIST]: { + listDayFormat: { weekday: "short" }, + }, +} as const; + +export const slotLabelFormat = [ + { + hour: "2-digit", + minute: "2-digit", + }, +] as FormatterInput[]; + +export const viewClassNames = (info: ViewContentArg) => { + let className = ""; + if ([ViewType.WEEK, ViewType.DAY].includes(info.view.type as ViewType)) { + if (dayjs().isAfter(info.view.activeEnd)) { + className = "past"; + } else if (dayjs().isBefore(info.view.activeStart)) { + className = "future"; + } + } + return className; +}; diff --git a/client/yarn.lock b/client/yarn.lock index 16ca373cb..8ee5fba00 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -5666,7 +5666,7 @@ __metadata: languageName: node linkType: hard -"agora-rtc-sdk-ng@npm:^4.19.0": +"agora-rtc-sdk-ng@npm:^4.20.2": version: 4.20.2 resolution: "agora-rtc-sdk-ng@npm:4.20.2" dependencies: @@ -13658,7 +13658,7 @@ __metadata: "@types/uuid": ^8.3.4 "@vitejs/plugin-react": ^2.2.0 agora-access-token: ^2.0.4 - agora-rtc-sdk-ng: ^4.19.0 + agora-rtc-sdk-ng: ^4.20.2 agora-rtm-sdk: ^1.5.1 antd: 5.13.2 axios: ^1.6.2 From 95c9de916f7e4f6a0bd9db6648a52fe37d403782 Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Thu, 11 Apr 2024 14:06:37 +0300 Subject: [PATCH 03/16] "unfinished agora meeting to lowcoder plugin" --- client/packages/lowcoder-comps/package.json | 8 + .../agorameetingControllerComp.tsx | 891 ++++++++++++++++-- .../src/comps/calendarComp/calendarComp.tsx | 2 +- .../src/i18n/comps/locales/en.ts | 60 ++ client/packages/lowcoder-comps/src/index.ts | 4 +- 5 files changed, 892 insertions(+), 73 deletions(-) diff --git a/client/packages/lowcoder-comps/package.json b/client/packages/lowcoder-comps/package.json index 9f1e232dd..6acb59f12 100644 --- a/client/packages/lowcoder-comps/package.json +++ b/client/packages/lowcoder-comps/package.json @@ -30,6 +30,14 @@ "lowcoder": { "description": "", "comps": { + "agormeetingcontroller": { + "name": "Agora meeting Controller", + "icon": "./icons/icon-chart.svg", + "layoutInfo": { + "w": 15, + "h": 40 + } + }, "chart": { "name": "Chart", "icon": "./icons/icon-chart.svg", diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx index 955fa7545..157d7e9a8 100644 --- a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx @@ -21,13 +21,40 @@ import { jsonValueExposingStateControl, CalendarDeleteIcon, Tooltip, + BooleanStateControl, + AutoHeightControl, + stringStateControl, + InnerGrid, + useUserViewMode, + getData, + DrawerWrapper, + gridItemCompToGridItems, + Layers, + isNumeric, + EditorContext, + withMethodExposing, + eventHandlerControl, + EventOptions, + DrawerStyle, + PositionControl, + jsonObjectExposingStateControl, + stateComp, + Drawer, + changeChildAction, + HintPlaceHolder, + styled, } from "lowcoder-sdk"; + +import { BackgroundColorContext } from "../../../../lowcoder/src/comps/utils/backgroundColorContext"; +import { ContainerCompBuilder } from "../../../../lowcoder/src/comps/comps/containerBase/containerCompBuilder"; +import { Button } from "antd-mobile"; import { trans, getCalendarLocale } from "../../i18n/comps"; import { DefaultWithFreeViewOptions, DefaultWithPremiumViewOptions, FirstDayOptions, } from "./calendarConstants"; +import { default as CloseOutlined } from "@ant-design/icons/CloseOutlined"; import AgoraRTC, { type ICameraVideoTrack, @@ -38,87 +65,809 @@ import AgoraRTC, { type ILocalVideoTrack, } from "agora-rtc-sdk-ng"; import type { RtmChannel, RtmClient } from "agora-rtm-sdk"; +import { useCallback, useContext, useEffect, useState } from "react"; +// import { Drawer, changeChildAction } from "lowcoder-sdk/src"; +import { ResizeHandle } from "react-resizable"; +import { v4 as uuidv4 } from "uuid"; +// import styled from "styled-components/dist/constructors/styled"; + +const DEFAULT_SIZE = 378; +const DEFAULT_PADDING = 16; +function transToPxSize(size: string | number) { + return isNumeric(size) ? size + "px" : (size as string); +} + +export const client: IAgoraRTCClient = AgoraRTC.createClient({ + mode: "rtc", + codec: "vp8", +}); + +AgoraRTC.setLogLevel(4); + +/* +0: DEBUG. Output all API logs. +1: INFO. Output logs of the INFO, WARNING and ERROR level. +2: WARNING. Output logs of the WARNING and ERROR level. +3: ERROR. Output logs of the ERROR level. +4: NONE. Do not output any log. +*/ + +let audioTrack: IMicrophoneAudioTrack; +let videoTrack: ICameraVideoTrack; +let screenShareStream: ILocalVideoTrack; +let userId: UID | null | undefined; +let rtmChannelResponse: RtmChannel; +let rtmClient: RtmClient; +const ButtonStyle = styled(Button)` + position: absolute; + left: 0; + top: 0; + z-index: 10; + font-weight: 700; + box-shadow: none; + color: rgba(0, 0, 0, 0.45); + height: 54px; + width: 54px; + + svg { + width: 16px; + height: 16px; + } + + &, + :hover, + :focus { + background-color: transparent; + border: none; + } + + :hover, + :focus { + color: rgba(0, 0, 0, 0.75); + } +`; +const turnOnCamera = async (flag?: boolean) => { + if (videoTrack) { + return videoTrack.setEnabled(flag!); + } + videoTrack = await AgoraRTC.createCameraVideoTrack(); + videoTrack.play(userId + ""); +}; + +const turnOnMicrophone = async (flag?: boolean) => { + if (audioTrack) { + return audioTrack.setEnabled(flag!); + } + audioTrack = await AgoraRTC.createMicrophoneAudioTrack(); + if (!flag) { + await client.unpublish(audioTrack); + } else { + await client.publish(audioTrack); + } +}; +const shareScreen = async (sharing: boolean) => { + try { + if (sharing === false) { + await client.unpublish(screenShareStream); + screenShareStream.close(); + await client.publish(videoTrack); + videoTrack.play(userId + ""); + } else { + screenShareStream = await AgoraRTC.createScreenVideoTrack( + { + screenSourceType: "screen", + }, + "disable" + ); + await client.unpublish(videoTrack); + screenShareStream.play("share-screen"); + await client.publish(screenShareStream); + } + } catch (error) { + console.error("Failed to create screen share stream:", error); + } +}; +const leaveChannel = async () => { + //stops local sharing video + if (screenShareStream) { + screenShareStream.close(); + } + + //stops local video streaming and puts off the camera + if (videoTrack) { + await client.unpublish(videoTrack); + await turnOnCamera(false); + } + + //mutes and stops locla audio stream + if (audioTrack) { + await turnOnMicrophone(false); + } + await client.leave(); + await rtmChannelResponse.leave(); +}; + +const publishVideo = async ( + appId: string, + channel: string, + rtmToken: string, + rtcToken: string +) => { + // initializing the Agora Meeting Client + await turnOnCamera(true); + await client.join(appId, channel, rtcToken, userId); + await client.publish(videoTrack); + // initializing the Agora RTM Client + await rtmInit(appId, userId, rtmToken, channel); +}; + +const sendMessageRtm = (message: any) => { + rtmChannelResponse.sendMessage({ text: JSON.stringify(message) }); +}; + +const sendPeerMessageRtm = (message: any, toId: string) => { + rtmClient.sendMessageToPeer({ text: JSON.stringify(message) }, toId); +}; + +const rtmInit = async (appId: any, uid: any, token: any, channel: any) => { + const AgoraRTM = (await import("agora-rtm-sdk")).default; + rtmClient = AgoraRTM.createInstance(appId); + let options = { + uid: String(uid), + token: token ? token : null, + }; + await rtmClient.login(options); + + rtmChannelResponse = rtmClient.createChannel(channel); -const childrenMap = { - + await rtmChannelResponse.join(); }; -let CalendarBasicComp = (function () { - return new UICompBuilder(childrenMap, (props) => { - - }) - .setPropertyViewFn((children) => { - let licence = children.licenceKey.getView(); +const CanvasContainerID = "__canvas_container__"; +const meetingControllerChildren = { + visible: withDefault(BooleanStateControl, "false"), + onEvent: eventHandlerControl(EventOptions), + width: StringControl, + height: StringControl, + autoHeight: AutoHeightControl, + style: styleControl(DrawerStyle), + placement: PositionControl, + maskClosable: withDefault(BoolControl, true), + showMask: withDefault(BoolControl, true), + meetingActive: withDefault(BooleanStateControl, "false"), + audioControl: withDefault(BooleanStateControl, "false"), + videoControl: withDefault(BooleanStateControl, "true"), + endCall: withDefault(BooleanStateControl, "false"), + sharing: withDefault(BooleanStateControl, "false"), + appId: withDefault(StringControl, trans("meeting.appid")), + participants: stateComp([]), + usersScreenShared: stateComp([]), + localUser: jsonObjectExposingStateControl(""), + localUserID: withDefault( + stringStateControl(trans("meeting.localUserID")), + uuidv4() + "" + ), + meetingName: withDefault( + stringStateControl(trans("meeting.meetingName")), + uuidv4() + "" + ), + rtmToken: stringStateControl(trans("meeting.rtmToken")), + rtcToken: stringStateControl(trans("meeting.rtcToken")), + messages: stateComp([]), +}; +let MTComp = (function () { + return new ContainerCompBuilder( + meetingControllerChildren, + (props: any, dispatch: any) => { + const isTopBom = ["top", "bottom"].includes(props.placement); + const { items, ...otherContainerProps } = props.container; + const userViewMode = useUserViewMode(); + const resizable = !userViewMode && (!isTopBom || !props.autoHeight); + const onResizeStop = useCallback( + ( + e: React.SyntheticEvent, + node: HTMLElement, + size: { width: number; height: number }, + handle: ResizeHandle + ) => { + isTopBom + ? dispatch(changeChildAction("height", size.height, true)) + : dispatch(changeChildAction("width", size.width, true)); + }, + [dispatch, isTopBom] + ); + const [userIds, setUserIds] = useState([]); + const [updateVolume, setUpdateVolume] = useState({ + update: false, + userid: null, + }); + const [rtmMessages, setRtmMessages] = useState([]); + const [localUserSpeaking, setLocalUserSpeaking] = useState(false); + const [localUserVideo, setLocalUserVideo] = + useState(); + const [userJoined, setUserJoined] = useState(); + const [userLeft, setUserLeft] = useState(); + + useEffect(() => { + if (userJoined) { + let prevUsers: any[] = props.participants as []; + let userData = { + user: userJoined.uid, + audiostatus: userJoined.hasAudio, + streamingVideo: true, + }; + setUserIds((userIds: any) => [...userIds, userData]); + dispatch( + changeChildAction( + "participants", + removeDuplicates(getData([...prevUsers, userData]).data, "user"), + false + ) + ); + } + }, [userJoined]); + + function removeDuplicates(arr: any, prop: any) { + const uniqueObjects = []; + const seenValues = new Set(); + + for (const obj of arr) { + const objValue = obj[prop]; + + if (!seenValues.has(objValue)) { + seenValues.add(objValue); + uniqueObjects.push(obj); + } + } + + return uniqueObjects; + } + useEffect(() => { + if (userLeft) { + let newUsers = userIds.filter( + (item: any) => item.user !== userLeft.uid + ); + let hostExists = newUsers.filter((f: any) => f.host === true); + if (hostExists.length == 0 && newUsers.length > 0) { + newUsers[0].host = true; + } + setUserIds(newUsers); + dispatch( + changeChildAction( + "participants", + removeDuplicates(getData(newUsers).data, "user"), + false + ) + ); + } + }, [userLeft]); + + // console.log("sharing", props.sharing); + + useEffect(() => { + if (updateVolume.userid) { + let prevUsers: [] = props.participants as []; + + const updatedItems = prevUsers.map((userInfo: any) => { + if ( + userInfo.user === updateVolume.userid && + userInfo.speaking != updateVolume.update + ) { + return { ...userInfo, speaking: updateVolume.update }; + } + return userInfo; + }); + dispatch( + changeChildAction("participants", getData(updatedItems).data, false) + ); + } + }, [updateVolume]); + + useEffect(() => { + let prevUsers: [] = props.participants as []; + const updatedItems = prevUsers.map((userInfo: any) => { + if (userInfo.user === localUserVideo?.uid) { + return { ...userInfo, streamingSharing: props.sharing.value }; + } + return userInfo; + }); + dispatch( + changeChildAction("participants", getData(updatedItems).data, false) + ); + + let localObject = { + user: userId + "", + audiostatus: props.audioControl.value, + streamingVideo: props.videoControl.value, + streamingSharing: props.sharing.value, + speaking: localUserSpeaking, + }; + props.localUser.onChange(localObject); + }, [props.sharing.value]); + + useEffect(() => { + let prevUsers: [] = props.participants as []; + const updatedItems = prevUsers.map((userInfo: any) => { + if (userInfo.user === localUserVideo?.uid) { + return { ...userInfo, streamingVideo: localUserVideo?.hasVideo }; + } + return userInfo; + }); + dispatch( + changeChildAction("participants", getData(updatedItems).data, false) + ); + }, [localUserVideo?.hasVideo]); + + useEffect(() => { + if (rtmMessages) { + dispatch( + changeChildAction("messages", getData(rtmMessages).data, false) + ); + } + }, [rtmMessages]); + + useEffect(() => { + if (localUserSpeaking === true || localUserVideo) { + let localObject = { + user: userId + "", + audiostatus: props.audioControl.value, + streamingVideo: props.videoControl.value, + speaking: localUserSpeaking, + }; + props.localUser.onChange(localObject); + } + }, [localUserSpeaking]); + + useEffect(() => { + if (rtmChannelResponse) { + rtmClient.on("MessageFromPeer", function (message, peerId) { + setRtmMessages((prevMessages: any[]) => { + // Check if the messages array exceeds the maximum limit + if (prevMessages.length >= 500) { + prevMessages.pop(); // Remove the oldest message + } + return [ + ...prevMessages, + { peermessage: JSON.parse(message.text + ""), from: peerId }, + ]; + }); + }); + + rtmChannelResponse.on("ChannelMessage", function (message, memberId) { + setRtmMessages((prevMessages: any[]) => { + // Check if the messages array exceeds the maximum limit + if (prevMessages.length >= 500) { + prevMessages.pop(); // Remove the oldest message + } + return [ + ...prevMessages, + { + channelmessage: JSON.parse(message.text + ""), + from: memberId, + }, + ]; + }); + + dispatch( + changeChildAction("messages", getData(rtmMessages).data, false) + ); + }); + } + }, [rtmChannelResponse]); + useEffect(() => { + if (client) { + //Enable Agora to send audio bytes + client.enableAudioVolumeIndicator(); + //user activity listeners + client.on("user-joined", (user: IAgoraRTCRemoteUser) => { + setUserJoined(user); + }); + client.on("user-left", (user: IAgoraRTCRemoteUser, reason: any) => { + setUserLeft(user); + }); + + //listen to user speaking, + client.on("volume-indicator", (volumeInfos: any) => { + if (volumeInfos.length === 0) return; + volumeInfos.map((volumeInfo: any) => { + //when the volume is above 30, user is probably speaking + const speaking = volumeInfo.level >= 30; + if ( + volumeInfo.uid === userId && + props.localUser.value.speaking != speaking + ) { + setLocalUserSpeaking(speaking); + } else { + setUpdateVolume({ update: speaking, userid: volumeInfo.uid }); + } + }); + }); + + client.on( + "user-published", + async (user: IAgoraRTCRemoteUser, mediaType: "video" | "audio") => { + setLocalUserVideo(user); + } + ); + client.on( + "user-unpublished", + (user: IAgoraRTCRemoteUser, mediaType: "video" | "audio") => { + setLocalUserVideo(user); + } + ); + } + }, [client]); + return ( - <> -
- {children.events.propertyView({})} -
-
- {children.licenceKey.propertyView({ - label: trans("calendar.licence"), - })} - {children.onEvent.getPropertyView()} -
-
- {children.editable.propertyView({ - label: trans("calendar.editable"), - })} - {children.defaultDate.propertyView({ - label: trans("calendar.defaultDate"), - tooltip: trans("calendar.defaultDateTooltip"), - })} - {licence == "" - ? children.defaultFreeView.propertyView({ - label: trans("calendar.defaultView"), - tooltip: trans("calendar.defaultViewTooltip"), - }) - : children.defaultPremiumView.propertyView({ - label: trans("calendar.defaultView"), - tooltip: trans("calendar.defaultViewTooltip"), - })} - {children.firstDay.propertyView({ - label: trans("calendar.startWeek"), - })} - {children.showEventTime.propertyView({ - label: trans("calendar.showEventTime"), - tooltip: trans("calendar.showEventTimeTooltip"), - })} - {children.showWeekends.propertyView({ - label: trans("calendar.showWeekends"), - })} - {children.showAllDay.propertyView({ - label: trans("calendar.showAllDay"), - tooltip: trans("calendar.showAllDayTooltip"), - })} - {children.dayMaxEvents.propertyView({ - label: trans("calendar.dayMaxEvents"), - tooltip: trans("calendar.dayMaxEventsTooltip"), - })} - {children.eventMaxStack.propertyView({ - label: trans("calendar.eventMaxStack"), - tooltip: trans("calendar.eventMaxStackTooltip"), - })} -
-
- {hiddenPropertyView(children)} -
-
- {children.style.getPropertyView()} -
- + + + + document.querySelector(`#${CanvasContainerID}`) || document.body + } + footer={null} + width={transToPxSize(props.width || DEFAULT_SIZE)} + height={ + !props.autoHeight + ? transToPxSize(props.height || DEFAULT_SIZE) + : "" + } + onClose={(e) => { + props.visible.onChange(false); + }} + afterOpenChange={(visible) => { + if (!visible) { + props.onEvent("close"); + } + }} + zIndex={Layers.drawer} + maskClosable={props.maskClosable} + mask={props.showMask} + > + { + props.visible.onChange(false); + }} + > + + + + + + ); - }) + } + ) + .setPropertyViewFn((children: any) => ( + <> + {/* {(useContext(EditorContext).editorModeStatus === "logic" || + useContext(EditorContext).editorModeStatus === "both") && ( + <> +
+ {children.appId.propertyView({ + label: trans("meeting.appid"), + })} + {children.meetingName.propertyView({ + label: trans("meeting.meetingName"), + })} + {children.localUserID.propertyView({ + label: trans("meeting.localUserID"), + })} + {children.rtmToken.propertyView({ + label: trans("meeting.rtmToken"), + })} + {children.rtcToken.propertyView({ + label: trans("meeting.rtcToken"), + })} +
+
+ {children.onEvent.getPropertyView()} +
+ + )} */} + + {/* {(useContext(EditorContext).editorModeStatus === "layout" || + useContext(EditorContext).editorModeStatus === "both") && ( */} + {/* <> */} +
+ {children.placement.propertyView({ + label: trans("meeting.placement"), + radioButton: true, + })} + {["top", "bottom"].includes(children.placement.getView()) + ? children.autoHeight.getPropertyView() + : children.width.propertyView({ + label: trans("meeting.width"), + tooltip: trans("meeting.widthTooltip"), + placeholder: DEFAULT_SIZE + "", + })} + {!children.autoHeight.getView() && + ["top", "bottom"].includes(children.placement.getView()) && + children.height.propertyView({ + label: trans("meeting.height"), + tooltip: trans("meeting.heightTooltip"), + placeholder: DEFAULT_SIZE + "", + })} + {children.maskClosable.propertyView({ + label: trans("meeting.maskClosable"), + })} + {children.showMask.propertyView({ + label: trans("meeting.showMask"), + })} +
+ +
+ {children.style.getPropertyView()} +
+ {/* */} + {/* )} */} + + )) .build(); })(); -CalendarBasicComp = class extends CalendarBasicComp { - override autoHeight(): boolean { +MTComp = class extends MTComp { + autoHeight(): boolean { return false; } }; -export const CalendarComp = withExposingConfigs(CalendarBasicComp, [ - new NameConfig("events", trans("calendar.events")), - NameConfigHidden, +MTComp = withMethodExposing(MTComp, [ + { + method: { + name: "openDrawer", + params: [], + }, + execute: (comp: any, values: any) => { + comp.children.visible.getView().onChange(true); + }, + }, + { + method: { + name: "startSharing", + params: [], + }, + execute: async (comp: any, values: any) => { + if (!comp.children.meetingActive.getView().value) return; + let sharing = !comp.children.sharing.getView().value; + await shareScreen(sharing); + comp.children.sharing.change(sharing); + }, + }, + { + method: { + name: "audioControl", + description: trans("meeting.actionBtnDesc"), + params: [], + }, + execute: async (comp: any, values: any) => { + if (!comp.children.meetingActive.getView().value) return; + let value = !comp.children.audioControl.getView().value; + comp.children.localUser.change({ + user: userId + "", + audiostatus: value, + streamingVideo: comp.children.videoControl.getView().value, + speaking: false, + }); + await turnOnMicrophone(value); + comp.children.audioControl.change(value); + }, + }, + { + method: { + name: "videoControl", + description: trans("meeting.actionBtnDesc"), + params: [], + }, + execute: async (comp: any, values: any) => { + //check if meeting is active + if (!comp.children.meetingActive.getView().value) return; + //toggle videoControl + let value = !comp.children.videoControl.getView().value; + if (videoTrack) { + videoTrack.setEnabled(value); + } else { + await turnOnCamera(value); + } + //change my local user data + let localData = { + user: userId + "", + streamingVideo: value, + audiostatus: comp.children.audioControl.getView().value, + speaking: comp.children.localUser.getView().value.speaking, + }; + + comp.children.localUser.change(localData); + comp.children.videoControl.change(value); + }, + }, + { + method: { + name: "startMeeting", + description: trans("meeting.actionBtnDesc"), + params: [], + }, + execute: async (comp: any, values: any) => { + if (comp.children.meetingActive.getView().value) return; + userId = + comp.children.localUserID.getView().value === "" + ? uuidv4() + : comp.children.localUserID.getView().value; + comp.children.localUser.change({ + user: userId + "", + audiostatus: false, + speaking: false, + streamingVideo: true, + }); + + comp.children.localUser.children.value.dispatch( + changeChildAction( + "localUser", + { + user: userId + "", + audiostatus: false, + speaking: false, + streamingVideo: true, + }, + false + ) + ); + comp.children.videoControl.change(true); + await publishVideo( + comp.children.appId.getView(), + comp.children.meetingName.getView().value === "" + ? uuidv4() + : comp.children.meetingName.getView().value, + comp.children.rtmToken.getView().value, + comp.children.rtcToken.getView().value + ); + comp.children.meetingActive.change(true); + }, + }, + { + method: { + name: "broadCast", + description: trans("meeting.broadCast"), + params: [], + }, + execute: async (comp: any, values: any) => { + if (!comp.children.meetingActive.getView().value) return; + let messagedata = + values !== undefined && values[0] !== undefined ? values[0] : ""; + let toUsers: any = + values !== undefined && values[1] !== undefined ? values[1] : ""; + + let message: any = { + time: Date.now(), + message: messagedata, + }; + + if (toUsers.length > 0 && toUsers[0] !== undefined) { + toUsers.forEach((peer: any) => { + message.to = peer; + sendPeerMessageRtm(message, String(peer)); + }); + } else { + sendMessageRtm(message); + } + }, + }, + { + method: { + name: "setMeetingName", + description: trans("meeting.meetingName"), + params: [], + }, + execute: async (comp: any, values: any) => { + let meetingName: any = values[0]; + comp.children.meetingName.change(meetingName); + }, + }, + { + method: { + name: "setUserName", + description: trans("meeting.userName"), + params: [], + }, + execute: async (comp: any, values: any) => { + let userName: any = values[0]; + let userLocal = comp.children.localUser.getView().value; + comp.children.localUser.change({ ...userLocal, userName: userName }); + }, + }, + { + method: { + name: "setRTCToken", + description: trans("meeting.rtcToken"), + params: [], + }, + execute: async (comp: any, values: any) => { + let rtcToken: any = values[0]; + comp.children.rtcToken.change(rtcToken); + }, + }, + { + method: { + name: "setRTMToken", + description: trans("meeting.rtmToken"), + params: [], + }, + execute: async (comp: any, values: any) => { + let rtmToken: any = values[0]; + comp.children.rtmToken.change(rtmToken); + }, + }, + { + method: { + name: "endMeeting", + description: trans("meeting.actionBtnDesc"), + params: [], + }, + execute: async (comp: any, values: any) => { + if (!comp.children.meetingActive.getView().value) return; + + let value = !comp.children.endCall.getView().value; + comp.children.endCall.change(value); + comp.children.meetingActive.change(false); + + await leaveChannel(); + + comp.children.localUser.change({ + user: userId + "", + streamingVideo: false, + }); + }, + }, + // { + // method: { + // name: "closeDrawer", + // description: trans("drawer.closeDrawerDesc"), + // params: [], + // }, + // execute: (comp : any, values: any) => { + // comp.children.visible.getView().onChange(false); + // }, + // }, +]); + +export const AgoraMeetingControllerComp = withExposingConfigs(MTComp, [ + // new NameConfig("visible", trans("export.visibleDesc")), + new NameConfig("appId", trans("meeting.appid")), + new NameConfig("localUser", trans("meeting.host")), + new NameConfig("participants", trans("meeting.participants")), + new NameConfig("meetingActive", trans("meeting.meetingActive")), + new NameConfig("meetingName", trans("meeting.meetingName")), + new NameConfig("localUserID", trans("meeting.localUserID")), + new NameConfig("messages", trans("meeting.messages")), + new NameConfig("rtmToken", trans("meeting.rtmToken")), + new NameConfig("rtcToken", trans("meeting.rtcToken")), ]); diff --git a/client/packages/lowcoder-comps/src/comps/calendarComp/calendarComp.tsx b/client/packages/lowcoder-comps/src/comps/calendarComp/calendarComp.tsx index c65de7873..53598520f 100644 --- a/client/packages/lowcoder-comps/src/comps/calendarComp/calendarComp.tsx +++ b/client/packages/lowcoder-comps/src/comps/calendarComp/calendarComp.tsx @@ -86,7 +86,7 @@ let CalendarBasicComp = (function () { const theme = useContext(ThemeContext); const ref = createRef(); const editEvent = useRef(); - const [form] = Form.useForm(); + const [form] = Form.useForm(); const [left, setLeft] = useState(undefined); const events = props.events.value.map((item: EventType) => { diff --git a/client/packages/lowcoder-comps/src/i18n/comps/locales/en.ts b/client/packages/lowcoder-comps/src/i18n/comps/locales/en.ts index 18c022991..4cbe12e21 100644 --- a/client/packages/lowcoder-comps/src/i18n/comps/locales/en.ts +++ b/client/packages/lowcoder-comps/src/i18n/comps/locales/en.ts @@ -96,6 +96,66 @@ export const en = { dataDesc: "Image Data", buttonTextDesc: "Button Text", }, + meeting: { + logLevel: "Agora SDK Log Level", + placement: "Meeting Drawer Placement", + meeting: "Meeting Settings", + cameraView: "Camera View", + cameraViewDesc: "Camera View of the Local User (Host)", + screenShared: "Screen Shared", + heightTooltip: "Pixel, e.g. 378", + height: "Drawer Height", + widthTooltip: "Pixel or Percentage, e.g. 520, 60%", + width: "Drawer Width", + screenSharedDesc: "Screen Shared by the Local User (Host)", + audioUnmuted: "Audio Unmuted", + audioMuted: "Audio Muted", + videoClicked: "Video Clicked", + showMask: "Show Mask", + maskClosable: "Click Outside to Close", + videoOff: "Video Off", + videoOn: "Video On", + size: "Size", + top: "Top", + host: "Host of the Meeting Room. You would need to manage the host as own Application Logic", + participants: "Participants of the Meeting Room", + shareScreen: "Display Screen Shared by the Local User", + appid: "Agora Application ID", + meetingName: "Meeting Name", + localUserID: "Host User ID", + userName: "Host User Name", + rtmToken: "Agora RTM Token", + rtcToken: "Agora RTC Token", + noVideo: "No Video", + profileImageUrl: "Profile Image URL", + right: "Right", + bottom: "Bottom", + videoId: "Video Stream ID", + audioStatus: "Audio Status", + left: "Left", + widthTooltip: "Pixel or Percentage, e.g. 520, 60%", + heightTooltip: "Pixel, e.g. 378", + openDrawerDesc: "Open Drawer", + closeDrawerDesc: "Close Drawer", + width: "Drawer Width", + height: "Drawer Height", + actionBtnDesc: "Action Button", + broadCast: "Broadcast Messages", + title: "Meeting Title", + meetingCompName: "Agora Meeting Controller", + sharingCompName: "Screen Share Stream", + videoCompName: "Camera Stream", + videoSharingCompName: "Screen Share Stream", + meetingControlCompName: "Control Button", + meetingCompDesc: "Meeting Component", + meetingCompControls: "Meeting Control", + meetingCompKeywords: "Agora Meeting, Web Meeting, Collaboration", + iconSize: "Icon Size", + userId: "Host User ID", + roomId: "Room ID", + meetingActive: "Ongoing Meeting", + messages: "Broadcasted Messages", + }, calendar: { events: "Events Data", editable: "Editable", diff --git a/client/packages/lowcoder-comps/src/index.ts b/client/packages/lowcoder-comps/src/index.ts index 065393b52..5fbe6a340 100644 --- a/client/packages/lowcoder-comps/src/index.ts +++ b/client/packages/lowcoder-comps/src/index.ts @@ -1,11 +1,13 @@ import { ChartCompWithDefault } from "./comps/chartComp/chartComp"; import { ImageEditorComp } from "./comps/imageEditorComp/index"; import { CalendarComp } from "./comps/calendarComp/calendarComp"; -import { MermaidComp } from "comps/mermaidComp"; +import { MermaidComp } from "comps/mermaidComp"; +import { AgoraMeetingControllerComp } from "comps/agoraMeetingComp/agorameetingControllerComp"; export default { chart: ChartCompWithDefault, imageEditor: ImageEditorComp, calendar: CalendarComp, mermaid: MermaidComp, + agoraMeetingComp: AgoraMeetingControllerComp, }; From 25cda6ad6da0a761f4d31158331947842ea9d3bc Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Mon, 15 Apr 2024 11:24:56 +0300 Subject: [PATCH 04/16] with t constructor error --- client/packages/lowcoder-comps/package.json | 2 +- .../agorameetingControllerComp.tsx | 93 +++++++++---------- 2 files changed, 43 insertions(+), 52 deletions(-) diff --git a/client/packages/lowcoder-comps/package.json b/client/packages/lowcoder-comps/package.json index 6acb59f12..07f9fe2d0 100644 --- a/client/packages/lowcoder-comps/package.json +++ b/client/packages/lowcoder-comps/package.json @@ -21,7 +21,7 @@ "echarts-extension-gmap": "^1.6.0", "echarts-wordcloud": "^2.1.0", "lowcoder-cli": "workspace:^", - "lowcoder-sdk": "workspace:^", + "lowcoder-sdk": "/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk", "mermaid": "^10.6.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx index 157d7e9a8..6b4249daf 100644 --- a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx @@ -1,40 +1,24 @@ import { - isValidColor, NameConfig, - NameConfigHidden, BoolControl, - UICompBuilder, withDefault, withExposingConfigs, - NumberControl, StringControl, - hiddenPropertyView, - ChangeEventHandlerControl, Section, sectionNames, - dropdownControl, styleControl, - ThemeContext, - CalendarStyle, - DateParser, - CustomModal, - jsonValueExposingStateControl, - CalendarDeleteIcon, - Tooltip, BooleanStateControl, AutoHeightControl, stringStateControl, InnerGrid, useUserViewMode, getData, - DrawerWrapper, gridItemCompToGridItems, Layers, isNumeric, EditorContext, withMethodExposing, eventHandlerControl, - EventOptions, DrawerStyle, PositionControl, jsonObjectExposingStateControl, @@ -43,10 +27,12 @@ import { changeChildAction, HintPlaceHolder, styled, + BackgroundColorContext, + ContainerCompBuilder, + closeEvent, } from "lowcoder-sdk"; -import { BackgroundColorContext } from "../../../../lowcoder/src/comps/utils/backgroundColorContext"; -import { ContainerCompBuilder } from "../../../../lowcoder/src/comps/comps/containerBase/containerCompBuilder"; +const EventOptions = [closeEvent] as const; import { Button } from "antd-mobile"; import { trans, getCalendarLocale } from "../../i18n/comps"; import { @@ -55,7 +41,10 @@ import { FirstDayOptions, } from "./calendarConstants"; import { default as CloseOutlined } from "@ant-design/icons/CloseOutlined"; - +const DrawerWrapper = styled.div` + // Shield the mouse events of the lower layer, the mask can be closed in the edit mode to prevent the lower layer from sliding + pointer-events: auto; +`; import AgoraRTC, { type ICameraVideoTrack, type IMicrophoneAudioTrack, @@ -64,6 +53,7 @@ import AgoraRTC, { type UID, type ILocalVideoTrack, } from "agora-rtc-sdk-ng"; + import type { RtmChannel, RtmClient } from "agora-rtm-sdk"; import { useCallback, useContext, useEffect, useState } from "react"; // import { Drawer, changeChildAction } from "lowcoder-sdk/src"; @@ -98,34 +88,34 @@ let screenShareStream: ILocalVideoTrack; let userId: UID | null | undefined; let rtmChannelResponse: RtmChannel; let rtmClient: RtmClient; -const ButtonStyle = styled(Button)` - position: absolute; - left: 0; - top: 0; - z-index: 10; - font-weight: 700; - box-shadow: none; - color: rgba(0, 0, 0, 0.45); - height: 54px; - width: 54px; - - svg { - width: 16px; - height: 16px; - } - - &, - :hover, - :focus { - background-color: transparent; - border: none; - } - - :hover, - :focus { - color: rgba(0, 0, 0, 0.75); - } -`; +// const ButtonStyle = styled(Button)` +// position: absolute; +// left: 0; +// top: 0; +// z-index: 10; +// font-weight: 700; +// box-shadow: none; +// color: rgba(0, 0, 0, 0.45); +// height: 54px; +// width: 54px; + +// svg { +// width: 16px; +// height: 16px; +// } + +// &, +// :hover, +// :focus { +// background-color: transparent; +// border: none; +// } + +// :hover, +// :focus { +// color: rgba(0, 0, 0, 0.75); +// } +// `; const turnOnCamera = async (flag?: boolean) => { if (videoTrack) { return videoTrack.setEnabled(flag!); @@ -532,10 +522,10 @@ let MTComp = (function () { ? transToPxSize(props.height || DEFAULT_SIZE) : "" } - onClose={(e) => { + onClose={(e: any) => { props.visible.onChange(false); }} - afterOpenChange={(visible) => { + afterOpenChange={(visible: any) => { if (!visible) { props.onEvent("close"); } @@ -544,13 +534,14 @@ let MTComp = (function () { maskClosable={props.maskClosable} mask={props.showMask} > - sfsd

+ {/* { props.visible.onChange(false); }} > - +
*/} Date: Mon, 15 Apr 2024 11:25:41 +0300 Subject: [PATCH 05/16] exported missing compos to lowcoder sdk --- client/packages/lowcoder/src/index.sdk.ts | 12 ++++++++++++ client/yarn.lock | 14 +++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/client/packages/lowcoder/src/index.sdk.ts b/client/packages/lowcoder/src/index.sdk.ts index 9bec411fc..ee6862166 100644 --- a/client/packages/lowcoder/src/index.sdk.ts +++ b/client/packages/lowcoder/src/index.sdk.ts @@ -4,7 +4,19 @@ import * as uuid from "uuid"; import * as styledNameExports from "styled-components"; import styledDefault from "styled-components"; +export * from "comps/comps/containerBase/containerCompBuilder"; +export * from "comps/utils/backgroundColorContext"; +export { + closeEvent, + eventHandlerControl, +} from "comps/controls/eventHandlerControl"; +export { getData } from "comps/comps/listViewComp/listViewUtils"; +export { + gridItemCompToGridItems, + InnerGrid, +} from "comps/comps/containerComp/containerView"; +export { Layers } from "constants/Layers"; export * from "redux/store/store"; // util diff --git a/client/yarn.lock b/client/yarn.lock index 8ee5fba00..635e76dde 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -13409,7 +13409,7 @@ __metadata: echarts-wordcloud: ^2.1.0 jest: 29.3.0 lowcoder-cli: "workspace:^" - lowcoder-sdk: "workspace:^" + lowcoder-sdk: /Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk mermaid: ^10.6.1 react: ^18.2.0 react-dom: ^18.2.0 @@ -13576,6 +13576,18 @@ __metadata: languageName: unknown linkType: soft +"lowcoder-sdk@file:/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk::locator=lowcoder-comps%40workspace%3Apackages%2Flowcoder-comps": + version: 2.4.0-beta + resolution: "lowcoder-sdk@file:/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk#/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk::hash=bd18d9&locator=lowcoder-comps%40workspace%3Apackages%2Flowcoder-comps" + dependencies: + prettier: ^3.1.1 + peerDependencies: + react: ">=18" + react-dom: ">=18" + checksum: 89abb711cf6d46857c7e9375dcc20e2b7fbffde89fd43c3a7161109c61adbbf0d530ff8c2ebb750b56954ba701061117b82c21f119ee2abd2badfec96e1713f7 + languageName: node + linkType: hard + "lowcoder-sdk@npm:^2.1.10": version: 2.3.4 resolution: "lowcoder-sdk@npm:2.3.4" From bb1014ae2b78e7d1de4fe37260293e2b0803a806 Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Mon, 15 Apr 2024 16:01:09 +0300 Subject: [PATCH 06/16] moved agora meeting components to lowcoder-comps --- client/packages/lowcoder-comps/package.json | 26 +- .../agoraMeetingComp/calendarConstants.tsx | 946 ------------------ .../comps/agoraMeetingComp/controlButton.tsx | 332 ++++++ .../meetingControlerUtils.tsx | 37 + ...llerComp.tsx => meetingControllerComp.tsx} | 135 ++- .../videoMeetingStreamComp.tsx | 249 +++++ .../videoSharingStreamComp.tsx | 238 +++++ .../videobuttonCompConstants.tsx | 111 ++ client/packages/lowcoder-comps/src/index.ts | 9 +- 9 files changed, 1062 insertions(+), 1021 deletions(-) delete mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/controlButton.tsx create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControlerUtils.tsx rename client/packages/lowcoder-comps/src/comps/agoraMeetingComp/{agorameetingControllerComp.tsx => meetingControllerComp.tsx} (88%) create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoMeetingStreamComp.tsx create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoSharingStreamComp.tsx create mode 100644 client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videobuttonCompConstants.tsx diff --git a/client/packages/lowcoder-comps/package.json b/client/packages/lowcoder-comps/package.json index 4c1c880cd..386128841 100644 --- a/client/packages/lowcoder-comps/package.json +++ b/client/packages/lowcoder-comps/package.json @@ -32,6 +32,30 @@ "lowcoder": { "description": "", "comps": { + "meetingSharing": { + "name": "Agora Meeting Sharing", + "icon": "./icons/icon-comp-calendar.svg", + "layoutInfo": { + "w": 15, + "h": 60 + } + }, + "meetingController": { + "name": "Agora Meeting Controller", + "icon": "./icons/icon-comp-calendar.svg", + "layoutInfo": { + "w": 15, + "h": 60 + } + }, + "meetingStream": { + "name": "Video Stream", + "icon": "./icons/icon-comp-calendar.svg", + "layoutInfo": { + "w": 15, + "h": 60 + } + }, "calendar": { "name": "Calendar", "icon": "./icons/icon-comp-calendar.svg", @@ -78,4 +102,4 @@ "vite": "^5.0.12", "vite-tsconfig-paths": "^3.6.0" } -} +} \ No newline at end of file diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx deleted file mode 100644 index 394c0427a..000000000 --- a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/calendarConstants.tsx +++ /dev/null @@ -1,946 +0,0 @@ -import { trans } from "../../i18n/comps"; -import { - backgroundToBorder, - CalendarStyleType, - contrastText, - contrastColor, - handleToCalendarHeadSelectBg, - handleToCalendarToday, - genHoverColor, - DATE_FORMAT, - DATE_TIME_FORMAT, - ThemeDetail, - isDarkColor, - darkenColor, - lightenColor, - toHex, - UnderlineCss, -} from "lowcoder-sdk"; -import styled from "styled-components"; -import dayjs from "dayjs"; -import { - DayHeaderContentArg, - FormatterInput, - SlotLabelContentArg, - ViewContentArg, -} from "@fullcalendar/core"; -import { default as Form } from "antd/es/form"; - -export const Wrapper = styled.div<{ - $editable: boolean; - $style: CalendarStyleType; - $theme?: ThemeDetail; - $left?: number; -}>` - position: relative; - height: 100%; - overflow: hidden; - color: ${(props) => props.$style.text}; - .fc-theme-standard .fc-list-day-cushion, - .fc .fc-timegrid-col.fc-day-today, - .fc .fc-daygrid-day.fc-day-today { - background-color: ${(props) => props.$style.background}; - } - .fc .fc-highlight { - background-color: ${(props) => props.$style.selectBackground}; - } - a { - color: ${(props) => props.$style.text}; - } - - .fc .fc-timegrid-slot { - height: 28px; - } - - // day - .fc-timeGridDay-view { - .fc-col-header-cell { - font-size: 20px; - font-weight: 500; - a { - line-height: 67px; - } - } - } - - // list - .fc-list { - .fc-list-table { - table-layout: fixed; - th { - background-color: ${(props) => props.$style.background}; - } - } - .fc-list-event-graphic { - display: none; - } - .fc-list-day-cushion { - font-size: 16px; - font-weight: 500; - line-height: 32px; - padding: 0 24px; - } - .fc-list-day-side-text { - float: left; - margin-left: 24px; - } - .fc-list-day { - th { - padding: 8px 0 3px 0; - } - > th { - border: none; - } - &:not(:nth-of-type(1)) .fc-list-day-cushion { - border-top: 1px solid - ${(props) => - toHex(props.$style.border) === "#D7D9E0" - ? "#E1E3EB" - : lightenColor(props.$style.border, 0.03)}; - } - } - .fc-event + .fc-list-day th { - padding-top: 11px; - .fc-list-day-cushion { - padding-top: 8px; - } - } - .fc-event { - .fc-list-event-time, - .fc-list-event-title { - border: none; - } - &:hover .event { - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); - border-width: 1px; - margin: 2px 5px; - height: 20px; - .event-title { - margin-left: 15px; - } - &::before { - left: 2px; - } - } - } - .fc-event { - font-size: 13px; - line-height: 20px; - display: flex; - align-items: center; - &.no-time { - padding-left: 19px; - } - } - .fc-list-event-time { - padding: 0px 16px 0 24px; - vertical-align: middle; - min-width: 87px; - width: 87px; - box-sizing: content-box; - } - .fc-list-event-title { - min-width: 266px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - padding: 0 14px 0 0; - cursor: pointer; - .event { - font-size: 13px; - height: 18px; - line-height: 18px; - margin: 3px 5px; - border-width: 0; - align-items: center; - &::before { - height: 14px; - top: 2px; - left: 3px; - } - .event-time { - display: none; - } - .event-title { - margin-left: 16px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .event-remove { - background-color: inherit; - } - } - } - .fc-event:hover td { - background-color: inherit; - } - } - - // month - .fc-dayGridMonth-view { - .fc-daygrid-day-frame { - min-height: 95px; - height: 100%; - } - .fc-col-header-cell { - font-size: 14px; - font-weight: 400; - text-align: left; - padding-left: 16px; - a { - padding: 0; - line-height: 39px; - } - } - .fc-daygrid-day-number { - font-size: 14px; - line-height: 22px; - font-weight: 500; - padding: 0 6px; - border-radius: 11px; - margin: 12px 0 0 10px; - } - .fc-daygrid-day-top { - flex-direction: inherit; - } - .fc-day-today .fc-daygrid-day-number { - background-color: ${(props) => - props.$theme?.primary ? props.$theme.primary : props.$style.background}; - color: ${(props) => - contrastText( - props.$theme?.primary || "", - props.$theme?.textDark || "#000000", - props.$theme?.textLight || "#ffffff" - )}; - } - .fc-daygrid-day-events { - padding: 1px 0 5px 0; - min-height: unset; - .fc-event { - margin: 2px 4px 2px 12px; - padding: 0; - &:hover .event { - padding-right: 20px; - } - .event { - font-size: 13px; - line-height: 18px; - padding-right: 0; - .event-time { - display: none; - } - .event-title { - margin-left: 15px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - &::before { - height: 14px; - } - } - } - .fc-daygrid-day-bottom { - padding: 2px 2px 0 10px; - } - } - .fc-day-other { - color: ${(props) => props.$style.text}; - .fc-daygrid-day-top, - .fc-daygrid-day-events { - opacity: 0.35; - } - .event::before { - background-color: ${(props) => props.$style.text}; - } - } - } - // month drag event - .fc > .fc-event { - visibility: hidden; - } - - // more link - .fc-view-harness-active .fc-more-popover { - border-radius: 4px; - box-shadow: 0 0px 10px 4px rgba(0, 0, 0, 0.25); - overflow: hidden; - left: ${(props) => `min(${props.$left}px, calc(100% - 210px)) !important`}; - .fc-popover-body { - padding: 4px 0; - min-width: 200px; - width: 200px; - .fc-daygrid-event-harness { - margin: 4px; - .fc-event { - margin: 0; - .event { - height: fit-content; - .event-title { - white-space: pre-wrap; - } - .event-time { - margin-top: 0; - } - } - } - } - } - .fc-popover-header, - .fc-popover-body { - background-color: ${(props) => props.$style.background}; - } - .fc-popover-header .fc-popover-close { - color: #8b8fa3; - &:hover { - color: #222; - } - } - } - - .fc-direction-ltr .fc-timegrid-more-link { - border: 1px solid ${(props) => props.$style.border}; - border-radius: 4px; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); - font-size: 13px; - display: inline-block; - font-weight: 500; - background-color: ${(props) => lightenColor(props.$style.background, 0.1)}; - } - - .fc-dayGridMonth-view .fc-more-link { - margin: 0 2px 2px 2px !important; - } - .fc-timeGridWeek-view .fc-more-link, - .fc-timeGridDay-view .fc-more-link { - margin: 2px !important; - } - .fc-daygrid-day-events { - margin: 0 !important; - padding: 2px 0; - .fc-event { - margin: 2px 4px; - } - .fc-daygrid-day-bottom { - line-height: 16px; - padding: 0; - .fc-more-link { - width: calc(100% - 4px); - border: 1px solid ${(props) => props.$style.border}; - border-radius: 4px; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); - font-size: 13px; - display: inline-block; - height: 20px; - padding-left: 15px; - font-weight: 500; - background-color: ${(props) => - lightenColor(props.$style.background, 0.1)}; - } - } - } - - // on resize - .fc-media-screen { - height: 100% !important; - } - .fc-scroller { - overflow: hidden auto !important; - overflow: hidden overlay !important; - } - .fc-col-header, - .fc-scroller > div, - .fc-scroller > div > table, - .fc-scrollgrid-sync-table, - .fc-timegrid-cols > table, - .fc .fc-scrollgrid, - .fc .fc-scrollgrid table { - width: 100% !important; - } - - // event - .fc-timegrid-event .fc-event-main { - padding: 4px 0 4px 1px; - } - .fc-event { - position: relative; - height: 100%; - background-color: unset !important; - border: none !important; - box-shadow: none !important; - .event-remove { - color: ${(props) => props.$style.text}; - } - &:hover { - .event-remove { - opacity: ${(props) => (props.$editable ? 1 : undefined)}; - } - } - } - - // left time - .time.past { - opacity: 0.35; - } - - .past .time { - opacity: 0.35; - } - - .future .time { - opacity: 1; - } - - .fc-scrollgrid-liquid > tbody { - & > tr:nth-of-type(2) { - display: ${(props) => props.allDay && 1}; - } - } - .fc .fc-timegrid-slot-label-cushion { - padding: 0 15px; - } - - // border-radius, bg - .fc-theme-standard .fc-list { - background-color: ${(props) => props.$style.background}; - border-radius: ${(props) => - `0 0 ${props.$style.radius} ${props.$style.radius}`}; - border-color: ${(props) => props.$style.border}; - border-top-color: ${(props) => - toHex(props.$style.border) === "#D7D9E0" - ? "#E1E3EB" - : lightenColor(props.$style.border, 0.03)}; - } - .fc-scrollgrid-liquid { - border-radius: ${(props) => - `0 0 ${props.$style.radius} ${props.$style.radius}`}; - overflow: hidden; - border-right-width: 1px; - border-bottom-width: 1px; - border-color: ${(props) => props.$style.border}; - > thead, - > tbody > tr:nth-of-type(1), - .fc-scrollgrid-section-liquid > td { - background-color: ${(props) => props.$style.background}; - } - } - .fc-scrollgrid-section-liquid > td, - .fc-scrollgrid-liquid .fc-scrollgrid-section-header > th { - border: none; - } - .fc-scrollgrid-liquid > tbody > tr:nth-of-type(1) > td { - border-right: none; - } - .fc-theme-standard .fc-scrollgrid { - border-color: ${(props) => - toHex(props.$style.border) === "#D7D9E0" - ? "#E1E3EB" - : lightenColor(props.$style.border, 0.03)}; - } - .fc .fc-scrollgrid { - border-bottom-width: 1px; - border-right-width: 1px; - } - - .fc-day-sat, - .fc-day-sun { - &.fc-timegrid-col, - &.fc-daygrid-day { - background-color: ${(props) => - isDarkColor(props.$style.background) - ? darkenColor(props.$style.background, 0.06) - : darkenColor(props.$style.background, 0.02)}; - } - } - .fc-theme-standard td, - .fc-theme-standard th { - border-color: ${(props) => - toHex(props.$style.border) === "#D7D9E0" - ? "#E1E3EB" - : lightenColor(props.$style.border, 0.03)}; - } - - // header - .fc .fc-toolbar.fc-header-toolbar { - padding: 16px; - margin-bottom: 0; - border: 1px solid ${(props) => props.$style.border}; - border-bottom: none; - border-radius: ${(props) => - `${props.$style.radius} ${props.$style.radius} 0 0`}; - background-color: ${(props) => props.$style.background}; - } - .fc-toolbar-title { - color: ${(props) => props.$style.title}; - font-size: 24px; - line-height: 24px; - display: inline-flex; - } - .fc-toolbar-chunk { - display: inline-flex; - align-items: center; - } - .fc .fc-toolbar-chunk .fc-button.fc-button-primary { - height: 28px; - display: flex; - align-items: center; - justify-content: center; - &:not(:disabled):not(.fc-button-active) { - &:hover, - &:active { - color: ${(props) => props.$style.btnText}; - background-color: ${(props) => - toHex(props.$style.headerBtnBackground) === "#FFFFFF" - ? "#F5F5F6" - : genHoverColor(props.$style.headerBtnBackground)}; - border-color: ${(props) => - toHex(props.$style.headerBtnBackground) === "#FFFFFF" - ? "#D7D9E0" - : backgroundToBorder( - genHoverColor(props.$style.headerBtnBackground) - )}; - } - } - &:not(:disabled):focus { - box-shadow: none; - } - &:disabled { - cursor: not-allowed; - opacity: 1; - &, - &:hover { - background-color: ${(props) => props.$style.headerBtnBackground}; - border-color: ${(props) => - backgroundToBorder(props.$style.headerBtnBackground)}; - color: ${(props) => - toHex(props.$style.btnText) === "#222222" - ? "#B8B9BF" - : contrastColor(props.$style.btnText)}; - } - } - } - .fc .fc-button-primary:not(:disabled).fc-button-active:focus, - .fc .fc-button-primary:not(:disabled):active:focus { - box-shadow: none; - } - .fc-toolbar-chunk:nth-of-type(3) .fc-button-primary { - height: 28px; - display: inline-flex; - font-size: 14px; - margin-left: 8px; - background-color: ${(props) => props.$style.headerBtnBackground}; - border-color: ${(props) => - backgroundToBorder(props.$style.headerBtnBackground)}; - color: ${(props) => props.$style.btnText}; - &.fc-today-button { - min-width: 52px; - } - &.fc-prev-button, - &.fc-next-button { - padding: 0; - width: 28px; - color: ${(props) => lightenColor(props.$style.btnText, 0.4)}; - } - &.fc-prev-button { - margin-left: 12px; - } - } - .fc-toolbar-chunk:nth-of-type(3) .fc-button-group { - background-color: ${(props) => - toHex(props.$style.headerBtnBackground) === "#FFFFFF" - ? "#EFEFF1" - : isDarkColor(props.$style.headerBtnBackground) - ? props.$style.headerBtnBackground - : darkenColor(props.$style.headerBtnBackground, 0.1)}; - border-radius: 4px; - margin-left: 16px; - .fc-button-primary { - background-color: transparent; - min-width: 60px; - border-radius: 4px; - margin: 2px; - border: none; - color: ${(props) => - toHex(props.$style.btnText) === "#222222" - ? "#8B8FA3" - : lightenColor(props.$style.btnText, 0.4)}; - font-weight: 500; - - &.fc-button-active { - background-color: ${(props) => - isDarkColor(props.$style.headerBtnBackground) - ? lightenColor(props.$style.headerBtnBackground, 0.1) - : props.$style.headerBtnBackground}; - color: ${(props) => props.$style.btnText}; - } - } - } - - // week head - .fc-timeGridWeek-view { - .week-head { - display: flex; - flex-direction: column; - font-size: 14px; - font-weight: 400; - &.past span { - opacity: 0.35; - } - .week { - padding-bottom: 3px; - } - .day { - font-size: 20px; - font-weight: 500; - line-height: 22px; - } - } - .fc-day-today.fc-col-header-cell { - background-color: ${(props) => - isDarkColor(props.$style.background) - ? "#ffffff19" - : toHex(props.$theme?.primary!) + "19"}; - a { - color: ${(props) => - !isDarkColor(props.$style.background) && - darkenColor(props.$theme?.primary!, 0.1)}; - } - } - .fc-col-header-cell-cushion { - padding: 8px 0 13px 0; - } - } - - // week left - .fc .fc-timegrid-axis-cushion { - min-width: 62px; - min-height: 52px; - max-width: none; - display: inline-flex; - align-items: center; - justify-content: center; - } - .fc-direction-ltr .fc-timegrid-slot-label-frame { - text-align: center; - } - .fc .fc-timegrid-slot-label { - border: none; - } - - // time can doubleClick - .fc-timegrid-bg-harness, - .fc-daygrid-day-bg { - pointer-events: none; - } -`; - -export const Remove = styled.div<{ isList: boolean }>` - position: absolute; - pointer-events: auto; - top: 0; - right: 0; - display: flex; - padding: 5px; - opacity: 0; - cursor: pointer; - &:hover { - g { - stroke: #315efb; - } - } -`; - -export const Event = styled.div<{ - bg: string; - theme: Object; - isList: boolean; - allDay: boolean; - $style: CalendarStyleType; -}>` - height: 100%; - width: 100%; - pointer-events: none; - border-radius: 4px; - box-shadow: ${(props) => !props.isList && "0 0 5px 0 rgba(0, 0, 0, 0.15)"}; - border: 1px solid ${(props) => props.$style.border}; - display: ${(props) => props.isList && "flex"}; - background-color: ${(props) => - !props.isList && lightenColor(props.$style.background, 0.1)}; - overflow: hidden; - font-size: 13px; - line-height: 19px; - padding-right: 20px; - overflow: hidden; - position: relative; - &::before { - content: ""; - position: absolute; - display: block; - width: 5px; - height: calc(100% - 4px); - left: 2px; - top: 2px; - border-radius: 3px; - background-color: ${(props) => props.bg}; - } - - .event-time { - color: ${(props) => - !props.isList && - (isDarkColor(props.$style.text) - ? lightenColor(props.$style.text, 0.2) - : props.$style.text)}; - margin-left: 15px; - white-space: pre-wrap; - margin-top: 2px; - } - .event-title { - color: ${(props) => !props.isList && props.$style.text}; - font-weight: 500; - margin-left: 15px; - white-space: pre-wrap; - word-break: break-word; - } - - &.small { - height: 20px; - .event-time { - display: none; - } - .event-title { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - &.middle { - padding-top: 2px; - .event-time, - .event-title { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - &.large { - .event-time { - margin-top: 13px; - } - } - &.past { - background-color: ${(props) => - isDarkColor(props.$style.background) && props.$style.background}; - &::before { - background-color: ${(props) => - toHex(props.$style.text) === "#3C3C3C" - ? "#8B8FA3" - : isDarkColor(props.$style.text) - ? lightenColor(props.$style.text, 0.3) - : props.$style.text}; - } - &::before, - .event-title, - .event-time { - opacity: 0.35; - } - } -`; - -export const FormWrapper = styled(Form)` - .ant-form-item-label { - width: 100px; - text-align: left; - line-height: 18px; - label:not(.ant-form-item-required) { - margin-left: 11px; - } - label span { - ${UnderlineCss} - } - } -`; - -export type EventType = { - id?: string; - label?: string; - title?: string; - start?: string; - end?: string; - allDay?: boolean; - color?: string; - groupId?: string; - value?: string; -}; - -export enum ViewType { - MONTH = "dayGridMonth", - WEEK = "timeGridWeek", - DAY = "timeGridDay", - LIST = "listWeek", - TIMEGRID = "timeGridDay", -} - - -export const DefaultWithPremiumViewOptions = [ - { - label: trans("calendar.month"), - value: "dayGridMonth", - }, - { - label: trans("calendar.week"), - value: "timeGridWeek", - }, - { - label: trans("calendar.timeline"), - value: "resourceTimeline", - }, - { - label: trans("calendar.day"), - value: "timeGridDay", - }, - { - label: trans("calendar.list"), - value: "listWeek", - }, -] as const; - -export const DefaultWithFreeViewOptions = [ - { - label: trans("calendar.month"), - value: "dayGridMonth", - }, - { - label: trans("calendar.week"), - value: "timeGridWeek", - }, - { - label: trans("calendar.day"), - value: "timeGridDay", - }, - { - label: trans("calendar.list"), - value: "listWeek", - }, -] as const; - -export const FirstDayOptions = [ - { - label: trans("calendar.monday"), - value: "1", - }, - { - label: trans("calendar.tuesday"), - value: "2", - }, - { - label: trans("calendar.wednesday"), - value: "3", - }, - { - label: trans("calendar.thursday"), - value: "4", - }, - { - label: trans("calendar.friday"), - value: "5", - }, - { - label: trans("calendar.saturday"), - value: "6", - }, - { - label: trans("calendar.sunday"), - value: "0", - }, -]; - -export const defaultData = [ - { - id: "1", - title: "Coding", - start: dayjs().hour(10).minute(0).second(0).format(DATE_TIME_FORMAT), - end: dayjs().hour(12).minute(30).second(0).format(DATE_TIME_FORMAT), - color: "#079968", - }, - { - id: "2", - title: "Rest", - start: dayjs().hour(24).format(DATE_FORMAT), - end: dayjs().hour(48).format(DATE_FORMAT), - allDay: true, - }, -]; - -export const buttonText = { - today: trans("calendar.today"), - month: trans("calendar.month"), - week: trans("calendar.week"), - timeline: trans("calendar.timeline"), - day: trans("calendar.day"), - list: trans("calendar.list"), -}; - -export const headerToolbar = { - left: "title", - right: "prev today next dayGridMonth,timeGridWeek,timeGridDay,listWeek", -}; - -const weekHeadContent = (info: DayHeaderContentArg) => { - const text = info.text.split(" "); - return { - html: ` - ${text[0]} - ${text[1]} - `, - }; -}; - -const leftTimeContent = (info: SlotLabelContentArg) => { - let isPast = false; - if (info.view.type === ViewType.WEEK) { - isPast = dayjs().isAfter(dayjs(dayjs().format("YYYY MM DD " + info.text))); - } else if (info.view.type === ViewType.DAY) { - isPast = dayjs().isAfter( - dayjs(dayjs(info.view.activeStart).format("YYYY MM DD " + info.text)) - ); - } - return { - html: `${info.text}`, - }; -}; - -export const views = { - [ViewType.WEEK]: { - dayHeaderFormat: "ddd DD", - dayHeaderContent: (info: DayHeaderContentArg) => weekHeadContent(info), - slotLabelContent: (info: SlotLabelContentArg) => leftTimeContent(info), - }, - [ViewType.DAY]: { - slotLabelContent: (info: SlotLabelContentArg) => leftTimeContent(info), - }, - [ViewType.LIST]: { - listDayFormat: { weekday: "short" }, - }, -} as const; - -export const slotLabelFormat = [ - { - hour: "2-digit", - minute: "2-digit", - }, -] as FormatterInput[]; - -export const viewClassNames = (info: ViewContentArg) => { - let className = ""; - if ([ViewType.WEEK, ViewType.DAY].includes(info.view.type as ViewType)) { - if (dayjs().isAfter(info.view.activeEnd)) { - className = "past"; - } else if (dayjs().isBefore(info.view.activeStart)) { - className = "future"; - } - } - return className; -}; diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/controlButton.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/controlButton.tsx new file mode 100644 index 000000000..1f7815a80 --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/controlButton.tsx @@ -0,0 +1,332 @@ +import { BoolCodeControl, StringControl } from "comps/controls/codeControl"; +import { dropdownControl } from "comps/controls/dropdownControl"; +import { ButtonEventHandlerControl } from "comps/controls/eventHandlerControl"; +import { IconControl } from "comps/controls/iconControl"; +import { CompNameContext, EditorContext, EditorState } from "comps/editorState"; +import { withDefault } from "comps/generators"; +import { UICompBuilder } from "comps/generators/uiCompBuilder"; +import _ from "lodash"; +import { + disabledPropertyView, + hiddenPropertyView, + loadingPropertyView, +} from "comps/utils/propertyUtils"; +import { + CommonBlueLabel, + controlItem, + Dropdown, + Section, + sectionNames, +} from "lowcoder-design"; +import { trans } from "i18n"; +import styled, { css } from "styled-components"; + +import { + CommonNameConfig, + NameConfig, + withExposingConfigs, +} from "../../generators/withExposing"; +import { IForm } from "../formComp/formDataConstants"; +import { SimpleNameComp } from "../simpleNameComp"; +import { + Button100, + ButtonStyleControl, +} from "./videobuttonCompConstants"; +import { RefControl } from "comps/controls/refControl"; +import { AutoHeightControl } from "comps/controls/autoHeightControl"; +import { + heightCalculator, + widthCalculator, +} from "comps/controls/styleControlConstants"; +import { useEffect, useRef, useState } from "react"; +import ReactResizeDetector from "react-resize-detector"; + +import { useContext } from "react"; + +const Container = styled.div<{ $style: any }>` + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + ${(props) => props.$style && getStyle(props.$style)} +`; + +const getStyle = (style: any) => { + return css` + button { + border: 1px solid ${style.border}; + border-radius: ${style.radius}; + margin: ${style.margin}; + padding: ${style.padding}; + max-width: ${widthCalculator(style.margin)}; + max-height: ${heightCalculator(style.margin)}; + } + `; +}; + +const FormLabel = styled(CommonBlueLabel)` + font-size: 13px; + margin-right: 4px; +`; + +const IconWrapper = styled.div<{ $style: any }>` + display: flex; + + ${(props) => props.$style && getStyleIcon(props.$style)} +`; + +function getStyleIcon(style: any) { + return css` + svg { + width: ${style.size} !important; + height: ${style.size} !important; + } + `; +} + +function getFormOptions(editorState: EditorState) { + return editorState + .uiCompInfoList() + .filter((info) => info.type === "form") + .map((info) => ({ + label: info.name, + value: info.name, + })); +} + +function getForm(editorState: EditorState, formName: string) { + const comp = editorState?.getUICompByName(formName); + if (comp && comp.children.compType.getView() === "form") { + return comp.children.comp as unknown as IForm; + } +} + +function getFormEventHandlerPropertyView( + editorState: EditorState, + formName: string +) { + const form = getForm(editorState, formName); + if (!form) { + return undefined; + } + return ( + + {form.onEventPropertyView( + <> + + editorState.setSelectedCompNames( + new Set([formName]), + "rightPanel" + ) + } + > + {formName} + + {trans("button.formButtonEvent")} + + )} + + ); +} + +class SelectFormControl extends SimpleNameComp { + override getPropertyView() { + const label = trans("button.formToSubmit"); + return controlItem( + { filterText: label }, + + {(editorState) => ( + <> + this.dispatchChangeValueAction(value)} + allowClear={true} + /> + {getFormEventHandlerPropertyView(editorState, this.value)} + + )} + + ); + } +} + +const typeOptions = [ + { + label: trans("button.default"), + value: "", + }, + { + label: trans("button.submit"), + value: "submit", + }, +] as const; + +function isDefault(type?: string) { + return !type; +} + +function submitForm(editorState: EditorState, formName: string) { + const form = getForm(editorState, formName); + if (form) { + form.submit(); + } +} + +const childrenMap = { + iconSize: withDefault(StringControl, "20px"), + type: dropdownControl(typeOptions, ""), + autoHeight: withDefault(AutoHeightControl, "fixed"), + aspectRatio: withDefault(StringControl, "1 / 1"), + onEvent: ButtonEventHandlerControl, + disabled: BoolCodeControl, + loading: BoolCodeControl, + form: SelectFormControl, + prefixIcon: IconControl, + style: ButtonStyleControl, + viewRef: RefControl, +}; + +let ButtonTmpComp = (function () { + return new UICompBuilder(childrenMap, (props) => { + const [width, setWidth] = useState(120); + const [height, setHeight] = useState(0); + + const imgRef = useRef(null); + const conRef = useRef(null); + useEffect(() => { + if (height && width) { + onResize(); + } + }, [height, width]); + + const setStyle = (height: string, width: string) => { + const img = imgRef.current; + + const imgDiv = img?.getElementsByTagName("button")[0]; + img!.style.height = height; + img!.style.width = width; + imgDiv!.style.height = height; + imgDiv!.style.width = width; + }; + + const onResize = () => { + const img = imgRef.current; + const container = conRef.current; + if ( + !img?.clientWidth || + !img?.clientHeight || + props.autoHeight || + !width + ) { + return; + } + + setStyle(container?.clientHeight + "px", container?.clientWidth + "px"); + }; + + return ( + + {(editorState) => ( + + +
+ + isDefault(props.type) + ? props.onEvent("click") + : submitForm(editorState, props.form) + } + > + {props.prefixIcon && ( + + {props.prefixIcon} + + )} + + +
+
+
+ )} +
+ ); + }) + .setPropertyViewFn((children) => ( + <> +
+ {children.prefixIcon.propertyView({ + label: trans("button.icon"), + })} +
+ + + {(useContext(EditorContext).editorModeStatus === "logic" || useContext(EditorContext).editorModeStatus === "both") && ( +
+ {children.onEvent.getPropertyView()} + {disabledPropertyView(children)} + {hiddenPropertyView(children)} + {loadingPropertyView(children)} +
+ )} + + {(useContext(EditorContext).editorModeStatus === "layout" || useContext(EditorContext).editorModeStatus === "both") && ( + <>
+ {children.autoHeight.getPropertyView()} + {children.iconSize.propertyView({ + label: trans("button.iconSize"), + })} +
+
+ {children.style.getPropertyView()} + {children.aspectRatio.propertyView({ + label: trans("style.aspectRatio"), + })} +
+ )} + + )) + .build(); +})(); +ButtonTmpComp = class extends ButtonTmpComp { + override autoHeight(): boolean { + return this.children.autoHeight.getView(); + } +}; +export const ControlButton = withExposingConfigs(ButtonTmpComp, [ + new NameConfig("loading", trans("button.loadingDesc")), + ...CommonNameConfig, +]); diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControlerUtils.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControlerUtils.tsx new file mode 100644 index 000000000..10e685faf --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControlerUtils.tsx @@ -0,0 +1,37 @@ +import { CheckBox, controlItem, Switch, SwitchWrapper } from "lowcoder-design"; +import { ReactNode } from "react"; +import { ControlParams } from "comps/controls/controlParams"; +import { SimpleComp } from "lowcoder-core"; + +export class BoolShareVideoControl extends SimpleComp { + readonly IGNORABLE_DEFAULT_VALUE = false; + protected getDefaultValue(): boolean { + return false; + } + + getPropertyView(): ReactNode { + return ( + this.dispatchChangeValueAction(x)} + /> + ); + } + + propertyView(params: ControlParams & { type?: "switch" | "checkbox" }) { + return controlItem( + { filterText: params.label }, + + {params.type === "checkbox" ? ( + this.dispatchChangeValueAction(x.target.checked)} + /> + ) : ( + this.getPropertyView() + )} + + ); + } +} diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx similarity index 88% rename from client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx rename to client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx index 6b4249daf..028926c29 100644 --- a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/agorameetingControllerComp.tsx +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx @@ -30,17 +30,11 @@ import { BackgroundColorContext, ContainerCompBuilder, closeEvent, + MeetingEventHandlerControl, } from "lowcoder-sdk"; const EventOptions = [closeEvent] as const; -import { Button } from "antd-mobile"; -import { trans, getCalendarLocale } from "../../i18n/comps"; -import { - DefaultWithFreeViewOptions, - DefaultWithPremiumViewOptions, - FirstDayOptions, -} from "./calendarConstants"; -import { default as CloseOutlined } from "@ant-design/icons/CloseOutlined"; +import { trans } from "../../i18n/comps"; const DrawerWrapper = styled.div` // Shield the mouse events of the lower layer, the mask can be closed in the edit mode to prevent the lower layer from sliding pointer-events: auto; @@ -55,11 +49,9 @@ import AgoraRTC, { } from "agora-rtc-sdk-ng"; import type { RtmChannel, RtmClient } from "agora-rtm-sdk"; -import { useCallback, useContext, useEffect, useState } from "react"; -// import { Drawer, changeChildAction } from "lowcoder-sdk/src"; +import { useCallback, useEffect, useState } from "react"; import { ResizeHandle } from "react-resizable"; import { v4 as uuidv4 } from "uuid"; -// import styled from "styled-components/dist/constructors/styled"; const DEFAULT_SIZE = 378; const DEFAULT_PADDING = 16; @@ -227,6 +219,7 @@ const meetingControllerChildren = { meetingActive: withDefault(BooleanStateControl, "false"), audioControl: withDefault(BooleanStateControl, "false"), videoControl: withDefault(BooleanStateControl, "true"), + onMeetingEvent: MeetingEventHandlerControl, endCall: withDefault(BooleanStateControl, "false"), sharing: withDefault(BooleanStateControl, "false"), appId: withDefault(StringControl, trans("meeting.appid")), @@ -251,8 +244,8 @@ let MTComp = (function () { (props: any, dispatch: any) => { const isTopBom = ["top", "bottom"].includes(props.placement); const { items, ...otherContainerProps } = props.container; - const userViewMode = useUserViewMode(); - const resizable = !userViewMode && (!isTopBom || !props.autoHeight); + // const userViewMode = useUserViewMode(); + // const resizable = !userViewMode && (!isTopBom || !props.autoHeight); const onResizeStop = useCallback( ( e: React.SyntheticEvent, @@ -492,7 +485,7 @@ let MTComp = (function () { -

sfsd

{/* { props.visible.onChange(false); @@ -558,67 +550,68 @@ let MTComp = (function () { ); } ) - .setPropertyViewFn((children: any) => ( + .setPropertyViewFn((children:any) => ( <> - {/* {(useContext(EditorContext).editorModeStatus === "logic" || - useContext(EditorContext).editorModeStatus === "both") && ( - <> -
- {children.appId.propertyView({ - label: trans("meeting.appid"), - })} - {children.meetingName.propertyView({ - label: trans("meeting.meetingName"), - })} - {children.localUserID.propertyView({ - label: trans("meeting.localUserID"), - })} - {children.rtmToken.propertyView({ - label: trans("meeting.rtmToken"), - })} - {children.rtcToken.propertyView({ - label: trans("meeting.rtcToken"), - })} -
-
- {children.onEvent.getPropertyView()} -
- - )} */} - - {/* {(useContext(EditorContext).editorModeStatus === "layout" || - useContext(EditorContext).editorModeStatus === "both") && ( */} - {/* <> */} -
- {children.placement.propertyView({ - label: trans("meeting.placement"), - radioButton: true, + {/* {(EditorContext.editorModeStatus === "logic" || + EditorContext.editorModeStatus === "both") && ( + <> */} +
+ {children.appId.propertyView({ + label: trans("meeting.appid"), + })} + {children.meetingName.propertyView({ + label: trans("meeting.meetingName"), })} - {["top", "bottom"].includes(children.placement.getView()) - ? children.autoHeight.getPropertyView() - : children.width.propertyView({ - label: trans("meeting.width"), - tooltip: trans("meeting.widthTooltip"), - placeholder: DEFAULT_SIZE + "", - })} - {!children.autoHeight.getView() && - ["top", "bottom"].includes(children.placement.getView()) && - children.height.propertyView({ - label: trans("meeting.height"), - tooltip: trans("meeting.heightTooltip"), - placeholder: DEFAULT_SIZE + "", - })} - {children.maskClosable.propertyView({ - label: trans("meeting.maskClosable"), + {children.localUserID.propertyView({ + label: trans("meeting.localUserID"), })} - {children.showMask.propertyView({ - label: trans("meeting.showMask"), + {children.rtmToken.propertyView({ + label: trans("meeting.rtmToken"), + })} + {children.rtcToken.propertyView({ + label: trans("meeting.rtcToken"), })}
- -
- {children.style.getPropertyView()} +
+ {children.onEvent.getPropertyView()} + {children.onMeetingEvent.getPropertyView()}
+ {/* + )} */} + + {/* {(EditorContext.editorModeStatus === "layout" || + EditorContext.editorModeStatus === "both") && ( + <> */} + {/*
+ {children.placement.propertyView({ + label: trans("meeting.placement"), + radioButton: true, + })} + {["top", "bottom"].includes(children.placement.getView()) + ? children.autoHeight.getPropertyView() + : children.width.propertyView({ + label: trans("meeting.width"), + tooltip: trans("meeting.widthTooltip"), + placeholder: DEFAULT_SIZE + "", + })} + {!children.autoHeight.getView() && + ["top", "bottom"].includes(children.placement.getView()) && + children.height.propertyView({ + label: trans("meeting.height"), + tooltip: trans("meeting.heightTooltip"), + placeholder: DEFAULT_SIZE + "", + })} + {children.maskClosable.propertyView({ + label: trans("meeting.maskClosable"), + })} + {children.showMask.propertyView({ + label: trans("meeting.showMask"), + })} +
+ +
+ {children.style.getPropertyView()} +
*/} {/* */} {/* )} */} @@ -850,7 +843,7 @@ MTComp = withMethodExposing(MTComp, [ // }, ]); -export const AgoraMeetingControllerComp = withExposingConfigs(MTComp, [ +export const MeetingControllerComp = withExposingConfigs(MTComp, [ // new NameConfig("visible", trans("export.visibleDesc")), new NameConfig("appId", trans("meeting.appid")), new NameConfig("localUser", trans("meeting.host")), diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoMeetingStreamComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoMeetingStreamComp.tsx new file mode 100644 index 000000000..6ebad7876 --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoMeetingStreamComp.tsx @@ -0,0 +1,249 @@ +import { + NameConfig, + withDefault, + withExposingConfigs, + StringControl, + Section, + sectionNames, + AutoHeightControl, + EditorContext, + styled, + MeetingEventHandlerControl, + BoolCodeControl, + RefControl, + stringExposingStateControl, + StringStateControl, + UICompBuilder, + CommonNameConfig, +} from "lowcoder-sdk"; +import { ButtonStyleControl } from "./videobuttonCompConstants"; +import { trans } from "../../i18n/comps"; + +import { client } from "./meetingControllerComp"; +import type { IAgoraRTCRemoteUser } from "agora-rtc-sdk-ng"; +import { useEffect, useRef, useState } from "react"; +import ReactResizeDetector from "react-resize-detector"; + +const VideoContainer = styled.video` + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: space-around; +`; + +const meetingStreamChildren = { + autoHeight: withDefault(AutoHeightControl, "auto"), + profilePadding: withDefault(StringControl, "0px"), + profileBorderRadius: withDefault(StringControl, "0px"), + videoAspectRatio: withDefault(StringControl, "1 / 1"), + onEvent: MeetingEventHandlerControl, + disabled: BoolCodeControl, + loading: BoolCodeControl, + style: ButtonStyleControl, + viewRef: RefControl, + userId: withDefault(stringExposingStateControl(""), "{{meeting1.localUser}}"), + profileImageUrl: withDefault( + StringStateControl, + "https://api.dicebear.com/7.x/fun-emoji/svg?seed=Peanut&radius=50&backgroundColor=transparent&randomizeIds=true&eyes=wink,sleepClose" + ), + noVideoText: stringExposingStateControl(trans("meeting.noVideo")), +}; + +let VideoCompBuilder = (function () { + return new UICompBuilder(meetingStreamChildren, (props: any) => { + const videoRef = useRef(null); + const conRef = useRef(null); + const [userId, setUserId] = useState(); + const [userName, setUsername] = useState(""); + const [showVideo, setVideo] = useState(true); + + useEffect(() => { + if (props.userId.value !== "") { + let userData = JSON.parse(props.userId?.value); + client.on( + "user-published", + async (user: IAgoraRTCRemoteUser, mediaType: "video" | "audio") => { + if (mediaType === "video") { + const remoteTrack = await client.subscribe(user, mediaType); + let userId = user.uid + ""; + if ( + user.hasVideo && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + props.onEvent("videoOn"); + } + const element = document.getElementById(userId); + + if (element) { + remoteTrack.play(userId); + } + } + if (mediaType === "audio") { + const remoteTrack = await client.subscribe(user, mediaType); + if ( + user.hasAudio && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + userData.audiostatus = user.hasVideo; + + props.onEvent("audioUnmuted"); + } + remoteTrack.play(); + } + } + ); + client.on( + "user-unpublished", + (user: IAgoraRTCRemoteUser, mediaType: "video" | "audio") => { + // console.log("user-unpublished"); + + if (mediaType === "audio") { + if ( + !user.hasAudio && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + userData.audiostatus = user.hasVideo; + props.onEvent("audioMuted"); + } + } + if (mediaType === "video") { + if (videoRef.current && videoRef.current?.id === user.uid + "") { + videoRef.current.srcObject = null; + } + if ( + !user.hasVideo && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + props.onEvent("videoOff"); + } + } + } + ); + + setUserId(userData.user); + setUsername(userData.userName); + setVideo(userData.streamingVideo); + } + }, [props.userId.value]); + + return ( + + {(editorState: any) => ( + +
+ {userId ? ( + props.onEvent("videoClicked")} + ref={videoRef} + style={{ + display: `${showVideo ? "flex" : "none"}`, + aspectRatio: props.videoAspectRatio, + borderRadius: props.style.radius, + width: "auto", + }} + id={userId} + > + ) : ( + <> + )} +
+ +

{userName ?? ""}

+
+
+
+ )} +
+ ); + }) + .setPropertyViewFn((children: any) => ( + <> +
+ {children.userId.propertyView({ label: trans("meeting.videoId") })} + + {children.profileImageUrl.propertyView({ + label: trans("meeting.profileImageUrl"), + placeholder: + "https://api.dicebear.com/7.x/fun-emoji/svg?seed=Peanut&radius=50&backgroundColor=transparent&randomizeIds=true&eyes=wink,sleepClose", + })} +
+ + {/* {(useContext(EditorContext).editorModeStatus === "logic" || + useContext(EditorContext).editorModeStatus === "both") && ( +
+ {children.onEvent.getPropertyView()} + {hiddenPropertyView(children)} +
+ )} + + {(useContext(EditorContext).editorModeStatus === "layout" || + useContext(EditorContext).editorModeStatus === "both") && ( + <> */} +
+ {children.autoHeight.getPropertyView()} +
+
+ {children.profilePadding.propertyView({ + label: "Profile Image Padding", + })} + {children.profileBorderRadius.propertyView({ + label: "Profile Image Border Radius", + })} + {children.videoAspectRatio.propertyView({ + label: "Video Aspect Ratio", + })} + {children.style.getPropertyView()} +
+ {/* */} + {/* )} */} + + )) + .build(); +})(); + +VideoCompBuilder = class extends VideoCompBuilder { + autoHeight(): boolean { + return false; + } +}; + +export const VideoMeetingStreamComp = withExposingConfigs(VideoCompBuilder, [ + // new NameConfig("loading", trans("meeting.loadingDesc")), + new NameConfig("profileImageUrl", trans("meeting.profileImageUrl")), + + ...CommonNameConfig, +]); diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoSharingStreamComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoSharingStreamComp.tsx new file mode 100644 index 000000000..06eab43ae --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videoSharingStreamComp.tsx @@ -0,0 +1,238 @@ +import { + NameConfig, + withDefault, + withExposingConfigs, + StringControl, + Section, + sectionNames, + AutoHeightControl, + EditorContext, + styled, + MeetingEventHandlerControl, + BoolCodeControl, + RefControl, + stringExposingStateControl, + StringStateControl, + UICompBuilder, + CommonNameConfig, + hiddenPropertyView, + // ButtonStyleControl, +} from "lowcoder-sdk"; +import { useEffect, useRef, useState } from "react"; +import { client } from "./meetingControllerComp"; +import type { IAgoraRTCRemoteUser } from "agora-rtc-sdk-ng"; +import { trans } from "../../i18n/comps"; +import { useContext } from "react"; +import ReactResizeDetector from "react-resize-detector"; + +const VideoContainer = styled.video` + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: space-around; +`; + +const sharingStreamChildren = { + autoHeight: withDefault(AutoHeightControl, "fixed"), + profilePadding: withDefault(StringControl, "0px"), + profileBorderRadius: withDefault(StringControl, "0px"), + videoAspectRatio: withDefault(StringControl, ""), + onEvent: MeetingEventHandlerControl, + disabled: BoolCodeControl, + loading: BoolCodeControl, + // style: ButtonStyleControl, + viewRef: RefControl, + userId: withDefault(stringExposingStateControl(""), "{{meeting1.localUser}}"), + noVideoText: stringExposingStateControl(trans("meeting.noVideo")), +}; + +let SharingCompBuilder = (function () { + return new UICompBuilder(sharingStreamChildren, (props: any) => { + const videoRef = useRef(null); + const conRef = useRef(null); + const [userId, setUserId] = useState(); + const [userName, setUsername] = useState(""); + const [showVideoSharing, setVideoSharing] = useState(true); + + useEffect(() => { + if (props.userId.value !== "") { + let userData = JSON.parse(props.userId?.value); + client.on( + "user-published", + async (user: IAgoraRTCRemoteUser, mediaType: "video" | "audio") => { + if (mediaType === "video") { + const remoteTrack = await client.subscribe(user, mediaType); + let userId = user.uid + ""; + if ( + user.hasVideo && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + props.onEvent("videoOn"); + } + const element = document.getElementById(userId); + + if (element) { + remoteTrack.play(userId); + } + } + if (mediaType === "audio") { + const remoteTrack = await client.subscribe(user, mediaType); + if ( + user.hasAudio && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + userData.audiostatus = user.hasVideo; + + props.onEvent("audioUnmuted"); + } + remoteTrack.play(); + } + } + ); + client.on( + "user-unpublished", + (user: IAgoraRTCRemoteUser, mediaType: "video" | "audio") => { + // console.log("user-unpublished"); + + if (mediaType === "audio") { + if ( + !user.hasAudio && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + userData.audiostatus = user.hasVideo; + props.onEvent("audioMuted"); + } + } + if (mediaType === "video") { + if (videoRef.current && videoRef.current?.id === user.uid + "") { + videoRef.current.srcObject = null; + } + if ( + !user.hasVideo && + user.uid + "" !== userData.user && + userData.user !== "" + ) { + props.onEvent("videoOff"); + } + } + } + ); + + setUserId(userData.user); + setUsername(userData.userName); + setVideoSharing(userData.streamingSharing); + } + }, [props.userId.value]); + + return ( + + {(editorState: any) => ( + +
+ {userId ? ( + props.onEvent("videoClicked")} + ref={videoRef} + style={{ + display: `${showVideoSharing ? "flex" : "none"}`, + aspectRatio: props.videoAspectRatio, + borderRadius: props.style.radius, + width: "auto", + }} + id="share-screen" + > + ) : ( + <> + )} + {/*
+ +

{userName ?? ""}

+
*/} +
+
+ )} +
+ ); + }) + .setPropertyViewFn((children: any) => ( + <> +
+ {children.userId.propertyView({ label: trans("meeting.videoId") })} +
+ + {/* {(useContext(EditorContext).editorModeStatus === "logic" || + useContext(EditorContext).editorModeStatus === "both") && ( +
+ {children.onEvent.getPropertyView()} + {hiddenPropertyView(children)} +
+ )} */} + + {/* {(useContext(EditorContext).editorModeStatus === "layout" || + useContext(EditorContext).editorModeStatus === "both") && ( + <> */} +
+ {children.autoHeight.getPropertyView()} +
+
+ {children.profilePadding.propertyView({ + label: "Profile Image Padding", + })} + {children.profileBorderRadius.propertyView({ + label: "Profile Image Border Radius", + })} + {children.videoAspectRatio.propertyView({ + label: "Video Aspect Ratio", + })} + {children.style?.getPropertyView()} +
+ {/* */} + {/* )} */} + + )) + .build(); +})(); + +SharingCompBuilder = class extends SharingCompBuilder { + autoHeight(): boolean { + return false; + } +}; + +export const VideoSharingStreamComp = withExposingConfigs(SharingCompBuilder, [ + // new NameConfig("loading", trans("meeting.loadingDesc")), + ...CommonNameConfig, +]); diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videobuttonCompConstants.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videobuttonCompConstants.tsx new file mode 100644 index 000000000..134edcf98 --- /dev/null +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/videobuttonCompConstants.tsx @@ -0,0 +1,111 @@ +import { default as Button } from "antd/es/button"; +import { + styleControl, + ButtonStyleType, + ButtonStyle, + migrateOldData, + refMethods, + blurMethod, + clickMethod, + focusWithOptions, + genActiveColor, + genHoverColor, +} from "lowcoder-sdk"; +import styled, { css } from "styled-components"; +// import { genActiveColor, genHoverColor } from "lowcoder-design"; + +export function getButtonStyle(buttonStyle: any) { + const hoverColor = genHoverColor(buttonStyle.background); + const activeColor = genActiveColor(buttonStyle.background); + return css` + &&& { + border-radius: ${buttonStyle.radius}; + margin: ${buttonStyle.margin}; + padding: ${buttonStyle.padding}; + &:not(:disabled) { + // click animation color + --antd-wave-shadow-color: ${buttonStyle.border}; + border-color: ${buttonStyle.border}; + color: ${buttonStyle.text}; + background-color: ${buttonStyle.background}; + border-radius: ${buttonStyle.radius}; + margin: ${buttonStyle.margin}; + padding: ${buttonStyle.padding}; + + &:hover, + &:focus { + color: ${buttonStyle.text}; + background-color: ${hoverColor}; + border-color: ${buttonStyle.border === buttonStyle.background + ? hoverColor + : buttonStyle.border}; + } + + &:active { + color: ${buttonStyle.text}; + background-color: ${activeColor}; + border-color: ${buttonStyle.border === buttonStyle.background + ? activeColor + : buttonStyle.border}; + } + } + } + `; +} + +export const Button100 = styled(Button)<{ $buttonStyle?: any }>` + ${(props) => props.$buttonStyle && getButtonStyle(props.$buttonStyle)} + width: 100%; + height: auto; + display: inline-flex; + justify-content: center; + align-items: center; + overflow: hidden; + span { + overflow: hidden; + text-overflow: ellipsis; + } + gap: 6px; +`; + +export const ButtonCompWrapper = styled.div<{ disabled: boolean }>` + // The button component is disabled but can respond to drag & select events + ${(props) => + props.disabled && + ` + cursor: not-allowed; + button:disabled { + pointer-events: none; + } + `}; +`; + +/** + * Compatible with old data 2022-08-05 + */ +function fixOldData(oldData: any) { + if ( + oldData && + (oldData.hasOwnProperty("backgroundColor") || + oldData.hasOwnProperty("borderColor") || + oldData.hasOwnProperty("color")) + ) { + return { + background: oldData.backgroundColor, + border: oldData.borderColor, + text: oldData.color, + }; + } + return oldData; +} +const ButtonTmpStyleControl = styleControl(ButtonStyle); +export const ButtonStyleControl = migrateOldData( + ButtonTmpStyleControl, + fixOldData +); + +// export const buttonRefMethods = refMethods([ +// focusWithOptions, +// blurMethod, +// clickMethod, +// ]); diff --git a/client/packages/lowcoder-comps/src/index.ts b/client/packages/lowcoder-comps/src/index.ts index 5fbe6a340..9d8097d32 100644 --- a/client/packages/lowcoder-comps/src/index.ts +++ b/client/packages/lowcoder-comps/src/index.ts @@ -2,12 +2,15 @@ import { ChartCompWithDefault } from "./comps/chartComp/chartComp"; import { ImageEditorComp } from "./comps/imageEditorComp/index"; import { CalendarComp } from "./comps/calendarComp/calendarComp"; import { MermaidComp } from "comps/mermaidComp"; -import { AgoraMeetingControllerComp } from "comps/agoraMeetingComp/agorameetingControllerComp"; - +import { MeetingControllerComp } from "comps/agoraMeetingComp/meetingControllerComp"; +import { VideoMeetingStreamComp } from "comps/agoraMeetingComp/videoMeetingStreamComp"; +import { VideoSharingStreamComp } from "comps/agoraMeetingComp/videoSharingStreamComp"; export default { chart: ChartCompWithDefault, imageEditor: ImageEditorComp, calendar: CalendarComp, mermaid: MermaidComp, - agoraMeetingComp: AgoraMeetingControllerComp, + meetingController: MeetingControllerComp, + meetingStream: VideoMeetingStreamComp, + meetingSharing: VideoSharingStreamComp, }; From b5653182a2ebe1dbb0bcab959f5a65507b9f1416 Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Mon, 15 Apr 2024 16:01:43 +0300 Subject: [PATCH 07/16] exported missing comps to lowcoder-sdk --- client/packages/lowcoder/src/index.sdk.ts | 9 +++++---- client/yarn.lock | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/client/packages/lowcoder/src/index.sdk.ts b/client/packages/lowcoder/src/index.sdk.ts index ee6862166..99f18331e 100644 --- a/client/packages/lowcoder/src/index.sdk.ts +++ b/client/packages/lowcoder/src/index.sdk.ts @@ -6,10 +6,6 @@ import * as styledNameExports from "styled-components"; import styledDefault from "styled-components"; export * from "comps/comps/containerBase/containerCompBuilder"; export * from "comps/utils/backgroundColorContext"; -export { - closeEvent, - eventHandlerControl, -} from "comps/controls/eventHandlerControl"; export { getData } from "comps/comps/listViewComp/listViewUtils"; export { gridItemCompToGridItems, @@ -17,6 +13,11 @@ export { } from "comps/comps/containerComp/containerView"; export { Layers } from "constants/Layers"; +export * from "comps/controls/eventHandlerControl"; +export * from "comps/utils/methodUtils"; + +export { useUserViewMode } from "util/hooks"; +export * from "comps/editorState"; export * from "redux/store/store"; // util diff --git a/client/yarn.lock b/client/yarn.lock index e823ab30f..2aa94cc81 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -13590,14 +13590,14 @@ __metadata: linkType: soft "lowcoder-sdk@file:/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk::locator=lowcoder-comps%40workspace%3Apackages%2Flowcoder-comps": - version: 2.4.0-beta - resolution: "lowcoder-sdk@file:/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk#/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk::hash=bd18d9&locator=lowcoder-comps%40workspace%3Apackages%2Flowcoder-comps" + version: 2.4.0-beta-4 + resolution: "lowcoder-sdk@file:/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk#/Users/la/Desktop/lowcoder-1/client/packages/lowcoder-sdk::hash=8f69ed&locator=lowcoder-comps%40workspace%3Apackages%2Flowcoder-comps" dependencies: prettier: ^3.1.1 peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 89abb711cf6d46857c7e9375dcc20e2b7fbffde89fd43c3a7161109c61adbbf0d530ff8c2ebb750b56954ba701061117b82c21f119ee2abd2badfec96e1713f7 + checksum: 53389cc347577922de953c5eb86083e7c2942117a241aa589776dd260d27564fc6fec930675cdf4a735cbf15eb2bf5c197e06354be80fa0cb9e52bb32453c392 languageName: node linkType: hard From acfa2a158663b5cd6b8c9921350337f17277e1eb Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Mon, 15 Apr 2024 17:09:53 +0300 Subject: [PATCH 08/16] fixed lowcoder-comps agora loading --- client/packages/lowcoder/package.json | 3 - .../src/comps/comps/remoteComp/loaders.tsx | 4 +- .../src/comps/hooks/agoraFunctions.tsx | 144 ------- client/packages/lowcoder/src/comps/index.tsx | 385 ++++++++++-------- 4 files changed, 207 insertions(+), 329 deletions(-) delete mode 100644 client/packages/lowcoder/src/comps/hooks/agoraFunctions.tsx diff --git a/client/packages/lowcoder/package.json b/client/packages/lowcoder/package.json index e9e2f5bc2..7d39538c1 100644 --- a/client/packages/lowcoder/package.json +++ b/client/packages/lowcoder/package.json @@ -36,9 +36,6 @@ "@types/react-signature-canvas": "^1.0.2", "@types/react-test-renderer": "^18.0.0", "@types/react-virtualized": "^9.21.21", - "agora-access-token": "^2.0.4", - "agora-rtc-sdk-ng": "^4.20.2", - "agora-rtm-sdk": "^1.5.1", "antd": "5.13.2", "axios": "^1.6.2", "buffer": "^6.0.3", diff --git a/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx b/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx index 61140cf1b..0f2389f45 100644 --- a/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx +++ b/client/packages/lowcoder/src/comps/comps/remoteComp/loaders.tsx @@ -15,8 +15,8 @@ async function npmLoader( const localPackageVersion = remoteInfo.packageVersion || "latest"; const { packageName, packageVersion, compName } = remoteInfo; - const entry = `${NPM_PLUGIN_ASSETS_BASE_URL}/${packageName}@${localPackageVersion}/index.js`; - // const entry = `../../../../../public/package/index.js`; + // const entry = `${NPM_PLUGIN_ASSETS_BASE_URL}/${packageName}@${localPackageVersion}/index.js`; + const entry = `../../../../../public/package/index.js`; // console.log("Entry", entry); try { const module = await import( diff --git a/client/packages/lowcoder/src/comps/hooks/agoraFunctions.tsx b/client/packages/lowcoder/src/comps/hooks/agoraFunctions.tsx deleted file mode 100644 index 159ee0547..000000000 --- a/client/packages/lowcoder/src/comps/hooks/agoraFunctions.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import { useEffect, useState } from "react"; -import AgoraRTC, { - type IAgoraRTCClient, - type IAgoraRTCRemoteUser, - type ICameraVideoTrack, - type IMicrophoneAudioTrack, -} from "agora-rtc-sdk-ng"; // Update the import with correct types -import { v4 as uuidv4 } from "uuid"; - -const useAgora = () => { - const [client, setClient] = useState(null); - const [audioTrack, setAudioTrack] = useState( - null - ); - const [videoTrack, setVideoTrack] = useState(null); - const [isJoined, setIsJoined] = useState(false); - const [videoHeight, setHeight] = useState(200); - const [videoWidth, setWidth] = useState(200); - - const initializeAgora = () => { - const agoraClient = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" }); - setClient(agoraClient); - }; - - const turnOnCamera = async (flag: any) => { - if (videoTrack) { - return videoTrack.setEnabled(flag); - } - const newVideoTrack = await AgoraRTC.createCameraVideoTrack(); - newVideoTrack.play("camera-video"); - setVideoTrack(newVideoTrack); - }; - - const turnOnMicrophone = async (flag: any) => { - if (audioTrack) { - return audioTrack.setEnabled(flag); - } - const newAudioTrack = await AgoraRTC.createMicrophoneAudioTrack(); - newAudioTrack.play(); - setAudioTrack(newAudioTrack); - }; - - const leaveChannel = async () => { - if (isJoined) { - if (!client) { - // console.error("Agora client is not initialized"); - return; - } - - if (!client.localTracks.length) { - // console.error("No local tracks to unpublish"); - return; - } - - if (videoTrack) { - await turnOnCamera(false); - await client.unpublish(videoTrack); - videoTrack.stop(); - setVideoTrack(null); - } - - if (audioTrack) { - await turnOnMicrophone(false); - await client.unpublish(audioTrack); - audioTrack.stop(); - setAudioTrack(null); - } - - await client.leave(); - setIsJoined(false); - } - }; - - const joinChannel = async (appId: any, channel: any, token: any) => { - if (!channel) { - channel = "react-room"; - } - - if (isJoined) { - await leaveChannel(); - } - - client?.on("user-published", onUserPublish); - - await client?.join(appId, channel, token || null, uuidv4()); - setIsJoined(true); - }; - - const publishVideo = async (appId: any, channel: any) => { - await turnOnCamera(true); - - if (!isJoined) { - await joinChannel(appId, channel, null); - } - - await client?.publish(videoTrack!); - - const mediaStreamTrack = videoTrack?.getMediaStreamTrack(); - - if (mediaStreamTrack) { - const videoSettings = mediaStreamTrack.getSettings(); - const videoWidth = videoSettings.width; - const videoHeight = videoSettings.height; - setWidth(videoWidth!); - setHeight(videoHeight!); - // console.log(`Video width: ${videoWidth}px, height: ${videoHeight}px`); - } else { - // console.error("Media stream track not found"); - } - }; - - const onUserPublish = async ( - user: IAgoraRTCRemoteUser, - mediaType: string - ) => { - if (mediaType === "video") { - const remoteTrack = await client?.subscribe(user, mediaType); - remoteTrack?.play("remote-video"); - } - if (mediaType === "audio") { - const remoteTrack = await client?.subscribe(user, mediaType); - remoteTrack?.play(); - } - }; - - return { - client, - audioTrack, - videoTrack, - isJoined, - turnOnCamera, - turnOnMicrophone, - leaveChannel, - joinChannel, - publishVideo, - initializeAgora, - videoWidth, - videoHeight, - setHeight, - setWidth, - }; -}; - -export default useAgora; diff --git a/client/packages/lowcoder/src/comps/index.tsx b/client/packages/lowcoder/src/comps/index.tsx index cbb6ff234..eb3e8eff4 100644 --- a/client/packages/lowcoder/src/comps/index.tsx +++ b/client/packages/lowcoder/src/comps/index.tsx @@ -6,10 +6,16 @@ import { ModalComp } from "comps/hooks/modalComp"; import { ButtonComp } from "./comps/buttonComp/buttonComp"; import { DropdownComp } from "./comps/buttonComp/dropdownComp"; import { LinkComp } from "./comps/buttonComp/linkComp"; -import { ContainerComp, defaultContainerData } from "./comps/containerComp/containerComp"; +import { + ContainerComp, + defaultContainerData, +} from "./comps/containerComp/containerComp"; import { defaultCollapsibleContainerData } from "./comps/containerComp/collapsibleContainerComp"; import { ContainerComp as FloatTextContainerComp } from "./comps/containerComp/textContainerComp"; -import { PageLayoutComp, defaultPageLayoutData } from "./comps/containerComp/pageLayoutComp"; +import { + PageLayoutComp, + defaultPageLayoutData, +} from "./comps/containerComp/pageLayoutComp"; import { CustomComp } from "./comps/customComp/customComp"; import { DatePickerComp, DateRangeComp } from "./comps/dateComp/dateComp"; import { DividerComp } from "./comps/dividerComp"; @@ -41,7 +47,12 @@ import { TextAreaComp } from "./comps/textInputComp/textAreaComp"; import { TimePickerComp, TimeRangeComp } from "./comps/dateComp/timeComp"; import { defaultFormData, FormComp } from "./comps/formComp/formComp"; import { IFrameComp } from "./comps/iframeComp"; -import { defaultGridData, defaultListViewData, GridComp, ListViewComp,} from "./comps/listViewComp"; +import { + defaultGridData, + defaultListViewData, + GridComp, + ListViewComp, +} from "./comps/listViewComp"; import { ModuleComp } from "./comps/moduleComp/moduleComp"; import { NavComp } from "./comps/navComp/navComp"; import { TableComp } from "./comps/tableComp"; @@ -52,7 +63,11 @@ import { TreeComp } from "./comps/treeComp/treeComp"; import { TreeSelectComp } from "./comps/treeComp/treeSelectComp"; import { trans } from "i18n"; import { remoteComp } from "./comps/remoteComp/remoteComp"; -import { registerComp, type UICompManifest, type UICompType } from "./uiCompRegistry"; +import { + registerComp, + type UICompManifest, + type UICompType, +} from "./uiCompRegistry"; import { AudioComp } from "./comps/mediaComp/audioComp"; import { VideoComp } from "./comps/mediaComp/videoComp"; import { DrawerComp } from "./hooks/drawerComp"; @@ -66,12 +81,12 @@ import { TimeLineComp } from "./comps/timelineComp/timelineComp"; import { CommentComp } from "./comps/commentComp/commentComp"; import { MentionComp } from "./comps/textInputComp/mentionComp"; import { AutoCompleteComp } from "./comps/autoCompleteComp/autoCompleteComp"; -import { JsonLottieComp } from "./comps/jsonComp/jsonLottieComp"; +import { JsonLottieComp } from "./comps/jsonComp/jsonLottieComp"; import { ResponsiveLayoutComp } from "./comps/responsiveLayout"; import { VideoMeetingStreamComp } from "./comps/meetingComp/videoMeetingStreamComp"; import { ControlButton } from "./comps/meetingComp/controlButton"; import { VideoMeetingControllerComp } from "./comps/meetingComp/videoMeetingControllerComp"; -import { VideoSharingStreamComp } from "./comps/meetingComp/videoSharingStreamComp"; +// import { VideoSharingStreamComp } from "./comps/meetingComp/videoSharingStreamComp"; import { IconComp } from "./comps/iconComp"; import { @@ -154,7 +169,6 @@ const builtInRemoteComps: Omit = { }; export var uiCompMap: Registry = { - // Dashboards chart: { @@ -191,8 +205,8 @@ export var uiCompMap: Registry = { icon: TimeLineIcon, keywords: trans("uiComp.timelineCompKeywords"), lazyLoad: true, - compName: 'TimeLineComp', - compPath: 'comps/timelineComp/timelineComp', + compName: "TimeLineComp", + compPath: "comps/timelineComp/timelineComp", layoutInfo: { w: 12, h: 40, @@ -206,15 +220,15 @@ export var uiCompMap: Registry = { icon: TableCompIcon, keywords: trans("uiComp.tableCompKeywords"), lazyLoad: true, - compName: 'TableComp', - compPath: 'comps/tableComp/index', + compName: "TableComp", + compPath: "comps/tableComp/index", layoutInfo: { w: 12, h: 40, }, withoutLoading: true, - defaultDataFnName: 'defaultTableData', - defaultDataFnPath: 'comps/tableComp/mockTableComp' + defaultDataFnName: "defaultTableData", + defaultDataFnPath: "comps/tableComp/mockTableComp", }, slider: { name: trans("uiComp.sliderCompName"), @@ -224,8 +238,8 @@ export var uiCompMap: Registry = { icon: SliderCompIcon, keywords: trans("uiComp.sliderCompKeywords"), lazyLoad: true, - compName: 'SliderComp', - compPath: 'comps/numberInputComp/sliderComp', + compName: "SliderComp", + compPath: "comps/numberInputComp/sliderComp", layoutInfo: { w: 6, h: 5, @@ -239,8 +253,8 @@ export var uiCompMap: Registry = { icon: RangeSliderCompIcon, keywords: trans("uiComp.rangeSliderCompKeywords"), lazyLoad: true, - compName: 'RangeSliderComp', - compPath: 'comps/numberInputComp/rangeSliderComp', + compName: "RangeSliderComp", + compPath: "comps/numberInputComp/rangeSliderComp", layoutInfo: { w: 6, h: 5, @@ -257,8 +271,8 @@ export var uiCompMap: Registry = { icon: ResponsiveLayoutCompIcon, keywords: trans("uiComp.responsiveLayoutCompKeywords"), lazyLoad: true, - compName: 'ResponsiveLayoutComp', - compPath: 'comps/responsiveLayout/index', + compName: "ResponsiveLayoutComp", + compPath: "comps/responsiveLayout/index", withoutLoading: true, layoutInfo: { w: 24, @@ -274,8 +288,8 @@ export var uiCompMap: Registry = { icon: ContainerCompIcon, keywords: trans("uiComp.containerCompKeywords"), lazyLoad: true, - compName: 'ContainerComp', - compPath: 'comps/containerComp/containerComp', + compName: "ContainerComp", + compPath: "comps/containerComp/containerComp", withoutLoading: true, layoutInfo: { w: 12, @@ -283,8 +297,8 @@ export var uiCompMap: Registry = { // static: true, delayCollision: true, }, - defaultDataFnName: 'defaultContainerData', - defaultDataFnPath: 'comps/containerComp/containerComp' + defaultDataFnName: "defaultContainerData", + defaultDataFnPath: "comps/containerComp/containerComp", }, floatTextContainer: { @@ -295,8 +309,8 @@ export var uiCompMap: Registry = { icon: FloatingTextComp, keywords: trans("uiComp.floatTextContainerCompKeywords"), comp: FloatTextContainerComp, - compName: 'ContainerComp', - compPath: 'comps/containerComp/textContainerComp', + compName: "ContainerComp", + compPath: "comps/containerComp/textContainerComp", withoutLoading: true, layoutInfo: { w: 12, @@ -305,8 +319,8 @@ export var uiCompMap: Registry = { delayCollision: true, }, defaultDataFn: defaultContainerData, - defaultDataFnName: 'defaultContainerData', - defaultDataFnPath: 'comps/containerComp/containerComp' + defaultDataFnName: "defaultContainerData", + defaultDataFnPath: "comps/containerComp/containerComp", }, tabbedContainer: { @@ -317,8 +331,8 @@ export var uiCompMap: Registry = { icon: TabbedContainerCompIcon, keywords: trans("uiComp.tabbedContainerCompKeywords"), lazyLoad: true, - compName: 'TabbedContainerComp', - compPath: 'comps/tabs/index', + compName: "TabbedContainerComp", + compPath: "comps/tabs/index", withoutLoading: true, layoutInfo: { w: 12, @@ -335,8 +349,8 @@ export var uiCompMap: Registry = { icon: CollapsibleContainerCompIcon, keywords: trans("uiComp.collapsibleContainerCompKeywords"), lazyLoad: true, - compName: 'ContainerComp', - compPath: 'comps/containerComp/containerComp', + compName: "ContainerComp", + compPath: "comps/containerComp/containerComp", withoutLoading: true, layoutInfo: { w: 12, @@ -344,8 +358,8 @@ export var uiCompMap: Registry = { // static: true, delayCollision: true, }, - defaultDataFnName: 'defaultCollapsibleContainerData', - defaultDataFnPath: 'comps/containerComp/collapsibleContainerComp', + defaultDataFnName: "defaultCollapsibleContainerData", + defaultDataFnPath: "comps/containerComp/collapsibleContainerComp", }, pageLayout: { name: trans("uiComp.pageLayoutCompName"), @@ -373,15 +387,15 @@ export var uiCompMap: Registry = { categories: ["layout"], keywords: trans("uiComp.listViewCompKeywords"), lazyLoad: true, - compName: 'ListViewComp', - compPath: 'comps/listViewComp/index', + compName: "ListViewComp", + compPath: "comps/listViewComp/index", layoutInfo: { w: 12, h: 40, delayCollision: true, }, - defaultDataFnName: 'defaultListViewData', - defaultDataFnPath: 'comps/listViewComp/index', + defaultDataFnName: "defaultListViewData", + defaultDataFnPath: "comps/listViewComp/index", }, grid: { name: trans("uiComp.gridCompName"), @@ -391,15 +405,15 @@ export var uiCompMap: Registry = { categories: ["layout"], keywords: trans("uiComp.gridCompKeywords"), lazyLoad: true, - compName: 'GridComp', - compPath: 'comps/listViewComp/index', + compName: "GridComp", + compPath: "comps/listViewComp/index", layoutInfo: { w: 12, h: 40, delayCollision: true, }, - defaultDataFnName: 'defaultGridData', - defaultDataFnPath: 'comps/listViewComp/index', + defaultDataFnName: "defaultGridData", + defaultDataFnPath: "comps/listViewComp/index", }, modal: { name: trans("uiComp.modalCompName"), @@ -409,8 +423,8 @@ export var uiCompMap: Registry = { categories: ["layout"], keywords: trans("uiComp.modalCompKeywords"), lazyLoad: true, - compName: 'ModalComp', - compPath: 'hooks/modalComp', + compName: "ModalComp", + compPath: "hooks/modalComp", withoutLoading: true, }, drawer: { @@ -421,8 +435,8 @@ export var uiCompMap: Registry = { icon: DrawerCompIcon, keywords: trans("uiComp.drawerCompKeywords"), lazyLoad: true, - compName: 'DrawerComp', - compPath: 'hooks/drawerComp', + compName: "DrawerComp", + compPath: "hooks/drawerComp", withoutLoading: true, }, navigation: { @@ -433,8 +447,8 @@ export var uiCompMap: Registry = { categories: ["layout"], keywords: trans("uiComp.navigationCompKeywords"), lazyLoad: true, - compName: 'NavComp', - compPath: 'comps/navComp/navComp', + compName: "NavComp", + compPath: "comps/navComp/navComp", layoutInfo: { w: 24, h: 5, @@ -448,8 +462,8 @@ export var uiCompMap: Registry = { icon: CascaderCompIcon, keywords: trans("uiComp.cascaderCompKeywords"), lazyLoad: true, - compName: 'CascaderWithDefault', - compPath: 'comps/selectInputComp/cascaderComp', + compName: "CascaderWithDefault", + compPath: "comps/selectInputComp/cascaderComp", layoutInfo: { w: 9, h: 5, @@ -463,8 +477,8 @@ export var uiCompMap: Registry = { icon: LinkCompIcon, keywords: trans("uiComp.linkCompKeywords"), lazyLoad: true, - compName: 'LinkComp', - compPath: 'comps/buttonComp/linkComp', + compName: "LinkComp", + compPath: "comps/buttonComp/linkComp", layoutInfo: { w: 6, h: 5, @@ -478,8 +492,8 @@ export var uiCompMap: Registry = { icon: DividerCompIcon, keywords: trans("uiComp.dividerCompKeywords"), lazyLoad: true, - compName: 'DividerComp', - compPath: 'comps/dividerComp', + compName: "DividerComp", + compPath: "comps/dividerComp", layoutInfo: { w: 12, h: 1, @@ -512,13 +526,14 @@ export var uiCompMap: Registry = { icon: VideoCompIcon, keywords: trans("meeting.meetingCompKeywords"), lazyLoad: true, - compName: 'VideoSharingStreamComp', - compPath: 'comps/meetingComp/videoSharingStreamComp', + compName: "VideoSharingStreamComp", + // compPath: "comps/meetingComp/videoSharingStreamComp", + comp: remoteComp({ ...builtInRemoteComps, compName: "meetingSharing" }), withoutLoading: true, layoutInfo: { - w: 12, + w: 12, h: 50, - } + }, }, videocomponent: { name: trans("meeting.videoCompName"), @@ -526,15 +541,26 @@ export var uiCompMap: Registry = { description: trans("meeting.videoCompName"), categories: ["collaboration"], icon: VideoCompIcon, + comp: remoteComp({ ...builtInRemoteComps, compName: "meetingStream" }), keywords: trans("meeting.meetingCompKeywords"), - lazyLoad: true, - compName: 'VideoMeetingStreamComp', - compPath: 'comps/meetingComp/videoMeetingStreamComp', - withoutLoading: true, layoutInfo: { - w: 6, + w: 6, h: 32, - } + }, + // name: trans("meeting.videoCompName"), + // enName: "Video", + // description: trans("meeting.videoCompName"), + // categories: ["collaboration"], + // icon: VideoCompIcon, + // keywords: trans("meeting.meetingCompKeywords"), + // lazyLoad: true, + // compName: "VideoMeetingStreamComp", + // compPath: "comps/meetingComp/videoMeetingStreamComp", + // withoutLoading: true, + // layoutInfo: { + // w: 6, + // h: 32, + // }, }, meeting: { name: trans("meeting.meetingCompName"), @@ -544,20 +570,21 @@ export var uiCompMap: Registry = { icon: DrawerCompIcon, keywords: trans("meeting.meetingCompKeywords"), lazyLoad: true, - compName: 'VideoMeetingControllerComp', - compPath: 'comps/meetingComp/videoMeetingControllerComp', + compName: "VideoMeetingControllerComp", + // compPath: "comps/meetingComp/videoMeetingControllerComp", + comp: remoteComp({ ...builtInRemoteComps, compName: "meetingController" }), withoutLoading: true, }, comment: { name: trans("uiComp.commentCompName"), enName: "comment", description: trans("uiComp.commentCompDesc"), - categories: ["forms","collaboration"], + categories: ["forms", "collaboration"], icon: CommentIcon, keywords: trans("uiComp.commentCompKeywords"), lazyLoad: true, - compName: 'CommentComp', - compPath: 'comps/commentComp/commentComp', + compName: "CommentComp", + compPath: "comps/commentComp/commentComp", layoutInfo: { w: 13, h: 55, @@ -567,12 +594,12 @@ export var uiCompMap: Registry = { name: trans("uiComp.mentionCompName"), enName: "mention", description: trans("uiComp.mentionCompDesc"), - categories: ["forms","collaboration"], + categories: ["forms", "collaboration"], icon: MentionIcon, keywords: trans("uiComp.mentionCompKeywords"), lazyLoad: true, - compName: 'MentionComp', - compPath: 'comps/textInputComp/mentionComp', + compName: "MentionComp", + compPath: "comps/textInputComp/mentionComp", }, // Forms @@ -585,8 +612,8 @@ export var uiCompMap: Registry = { icon: FormCompIcon, keywords: trans("uiComp.formCompKeywords"), lazyLoad: true, - compName: 'FormComp', - compPath: 'comps/formComp/formComp', + compName: "FormComp", + compPath: "comps/formComp/formComp", withoutLoading: true, layoutInfo: { w: 12, @@ -594,8 +621,8 @@ export var uiCompMap: Registry = { // static: true, delayCollision: true, }, - defaultDataFnName: 'defaultFormData', - defaultDataFnPath: 'comps/formComp/formComp', + defaultDataFnName: "defaultFormData", + defaultDataFnPath: "comps/formComp/formComp", }, jsonSchemaForm: { name: trans("uiComp.jsonSchemaFormCompName"), @@ -605,8 +632,8 @@ export var uiCompMap: Registry = { icon: JsonFormCompIcon, keywords: trans("uiComp.jsonSchemaFormCompKeywords"), lazyLoad: true, - compName: 'JsonSchemaFormComp', - compPath: 'comps/jsonSchemaFormComp/jsonSchemaFormComp', + compName: "JsonSchemaFormComp", + compPath: "comps/jsonSchemaFormComp/jsonSchemaFormComp", layoutInfo: { w: 12, h: 50, @@ -620,8 +647,8 @@ export var uiCompMap: Registry = { icon: JsonEditorCompIcon, keywords: trans("uiComp.jsonEditorCompKeywords"), lazyLoad: true, - compName: 'JsonEditorComp', - compPath: 'comps/jsonComp/jsonEditorComp', + compName: "JsonEditorComp", + compPath: "comps/jsonComp/jsonEditorComp", layoutInfo: { w: 12, h: 50, @@ -635,8 +662,8 @@ export var uiCompMap: Registry = { icon: JsonExplorerCompIcon, keywords: trans("uiComp.jsonExplorerCompKeywords"), lazyLoad: true, - compName: 'JsonExplorerComp', - compPath: 'comps/jsonComp/jsonExplorerComp', + compName: "JsonExplorerComp", + compPath: "comps/jsonComp/jsonExplorerComp", layoutInfo: { w: 12, h: 50, @@ -650,8 +677,8 @@ export var uiCompMap: Registry = { icon: RichTextEditorCompIcon, keywords: trans("uiComp.richTextEditorCompKeywords"), lazyLoad: true, - compName: 'RichTextEditorComp', - compPath: 'comps/richTextEditorComp', + compName: "RichTextEditorComp", + compPath: "comps/richTextEditorComp", layoutInfo: { w: 12, h: 50, @@ -665,12 +692,12 @@ export var uiCompMap: Registry = { icon: InputCompIcon, keywords: trans("uiComp.inputCompKeywords"), lazyLoad: true, - compName: 'InputComp', - compPath: 'comps/textInputComp/inputComp', + compName: "InputComp", + compPath: "comps/textInputComp/inputComp", layoutInfo: { - w: 6, + w: 6, h: 6, - } + }, }, password: { name: trans("uiComp.passwordCompName"), @@ -680,12 +707,12 @@ export var uiCompMap: Registry = { icon: PasswordCompIcon, keywords: trans("uiComp.passwordCompKeywords"), lazyLoad: true, - compName: 'PasswordComp', - compPath: 'comps/textInputComp/passwordComp', + compName: "PasswordComp", + compPath: "comps/textInputComp/passwordComp", layoutInfo: { - w: 6, + w: 6, h: 6, - } + }, }, numberInput: { name: trans("uiComp.numberInputCompName"), @@ -695,12 +722,12 @@ export var uiCompMap: Registry = { icon: NumberInputCompIcon, keywords: trans("uiComp.numberInputCompKeywords"), lazyLoad: true, - compName: 'NumberInputComp', - compPath: 'comps/numberInputComp/numberInputComp', + compName: "NumberInputComp", + compPath: "comps/numberInputComp/numberInputComp", layoutInfo: { - w: 6, + w: 6, h: 6, - } + }, }, textArea: { name: trans("uiComp.textAreaCompName"), @@ -710,12 +737,12 @@ export var uiCompMap: Registry = { icon: TextAreaCompIcon, keywords: trans("uiComp.textAreaCompKeywords"), lazyLoad: true, - compName: 'TextAreaComp', - compPath: 'comps/textInputComp/textAreaComp', + compName: "TextAreaComp", + compPath: "comps/textInputComp/textAreaComp", layoutInfo: { - w: 6, + w: 6, h: 12, - } + }, }, switch: { name: trans("uiComp.switchCompName"), @@ -725,12 +752,12 @@ export var uiCompMap: Registry = { icon: SwitchCompIcon, keywords: trans("uiComp.switchCompKeywords"), lazyLoad: true, - compName: 'SwitchComp', - compPath: 'comps/switchComp', + compName: "SwitchComp", + compPath: "comps/switchComp", layoutInfo: { - w: 6, + w: 6, h: 6, - } + }, }, checkbox: { name: trans("uiComp.checkboxCompName"), @@ -740,8 +767,8 @@ export var uiCompMap: Registry = { icon: CheckboxCompIcon, keywords: trans("uiComp.checkboxCompKeywords"), lazyLoad: true, - compName: 'CheckboxComp', - compPath: 'comps/selectInputComp/checkboxComp', + compName: "CheckboxComp", + compPath: "comps/selectInputComp/checkboxComp", layoutInfo: { w: 6, h: 6, @@ -755,8 +782,8 @@ export var uiCompMap: Registry = { icon: RadioCompIcon, keywords: trans("uiComp.radioCompKeywords"), lazyLoad: true, - compName: 'RadioComp', - compPath: 'comps/selectInputComp/radioComp', + compName: "RadioComp", + compPath: "comps/selectInputComp/radioComp", layoutInfo: { w: 6, h: 6, @@ -770,8 +797,8 @@ export var uiCompMap: Registry = { icon: DateCompIcon, keywords: trans("uiComp.dateCompKeywords"), lazyLoad: true, - compName: 'DatePickerComp', - compPath: 'comps/dateComp/dateComp', + compName: "DatePickerComp", + compPath: "comps/dateComp/dateComp", layoutInfo: { w: 6, h: 6, @@ -785,8 +812,8 @@ export var uiCompMap: Registry = { icon: DateRangeCompIcon, keywords: trans("uiComp.dateRangeCompKeywords"), lazyLoad: true, - compName: 'DateRangeComp', - compPath: 'comps/dateComp/dateComp', + compName: "DateRangeComp", + compPath: "comps/dateComp/dateComp", layoutInfo: { w: 12, h: 6, @@ -800,8 +827,8 @@ export var uiCompMap: Registry = { icon: TimeCompIcon, keywords: trans("uiComp.timeCompKeywords"), lazyLoad: true, - compName: 'TimePickerComp', - compPath: 'comps/dateComp/timeComp', + compName: "TimePickerComp", + compPath: "comps/dateComp/timeComp", layoutInfo: { w: 6, h: 6, @@ -815,8 +842,8 @@ export var uiCompMap: Registry = { icon: TimeRangeCompIcon, keywords: trans("uiComp.timeRangeCompKeywords"), lazyLoad: true, - compName: 'TimeRangeComp', - compPath: 'comps/dateComp/timeComp', + compName: "TimeRangeComp", + compPath: "comps/dateComp/timeComp", layoutInfo: { w: 12, h: 6, @@ -830,8 +857,8 @@ export var uiCompMap: Registry = { icon: ButtonCompIcon, keywords: trans("uiComp.buttonCompKeywords"), lazyLoad: true, - compName: 'ButtonComp', - compPath: 'comps/buttonComp/buttonComp', + compName: "ButtonComp", + compPath: "comps/buttonComp/buttonComp", layoutInfo: { w: 6, h: 6, @@ -846,8 +873,8 @@ export var uiCompMap: Registry = { icon: ButtonCompIcon, keywords: trans("meeting.meetingCompKeywords"), lazyLoad: true, - compName: 'ControlButton', - compPath: 'comps/meetingComp/controlButton', + compName: "ControlButton", + compPath: "comps/meetingComp/controlButton", withoutLoading: true, layoutInfo: { w: 3, @@ -862,8 +889,8 @@ export var uiCompMap: Registry = { icon: DropdownCompIcon, keywords: trans("uiComp.dropdownCompKeywords"), lazyLoad: true, - compName: 'DropdownComp', - compPath: 'comps/buttonComp/dropdownComp', + compName: "DropdownComp", + compPath: "comps/buttonComp/dropdownComp", layoutInfo: { w: 6, h: 6, @@ -877,8 +904,8 @@ export var uiCompMap: Registry = { icon: ToggleButtonCompIcon, keywords: trans("uiComp.toggleButtonCompKeywords"), lazyLoad: true, - compName: 'ToggleButtonComp', - compPath: 'comps/buttonComp/toggleButtonComp', + compName: "ToggleButtonComp", + compPath: "comps/buttonComp/toggleButtonComp", layoutInfo: { w: 3, h: 6, @@ -892,8 +919,8 @@ export var uiCompMap: Registry = { icon: SegmentedCompIcon, keywords: trans("uiComp.segmentedControlCompKeywords"), lazyLoad: true, - compName: 'SegmentedControlComp', - compPath: 'comps/selectInputComp/segmentedControl', + compName: "SegmentedControlComp", + compPath: "comps/selectInputComp/segmentedControl", layoutInfo: { w: 6, h: 6, @@ -907,8 +934,8 @@ export var uiCompMap: Registry = { icon: SegmentedCompIcon, keywords: trans("uiComp.stepControlCompKeywords"), lazyLoad: true, - compName: 'StepComp', - compPath: 'comps/selectInputComp/stepsControl', + compName: "StepComp", + compPath: "comps/selectInputComp/stepsControl", layoutInfo: { w: 6, h: 6, @@ -923,25 +950,25 @@ export var uiCompMap: Registry = { icon: RatingCompIcon, keywords: trans("uiComp.ratingCompKeywords"), lazyLoad: true, - compName: 'RatingComp', - compPath: 'comps/ratingComp', + compName: "RatingComp", + compPath: "comps/ratingComp", layoutInfo: { - w: 6, + w: 6, h: 6, - } + }, }, autocomplete: { name: trans("uiComp.autoCompleteCompName"), enName: "autoComplete", description: trans("uiComp.autoCompleteCompDesc"), - categories: ["forms","collaboration"], + categories: ["forms", "collaboration"], icon: AutoCompleteCompIcon, keywords: cnchar .spell(trans("uiComp.autoCompleteCompName"), "first", "low") .toString(), lazyLoad: true, - compName: 'AutoCompleteComp', - compPath: 'comps/autoCompleteComp/autoCompleteComp', + compName: "AutoCompleteComp", + compPath: "comps/autoCompleteComp/autoCompleteComp", layoutInfo: { w: 6, h: 5, @@ -958,8 +985,8 @@ export var uiCompMap: Registry = { icon: ProgressCompIcon, keywords: trans("uiComp.progressCompKeywords"), lazyLoad: true, - compName: 'ProgressComp', - compPath: 'comps/progressComp', + compName: "ProgressComp", + compPath: "comps/progressComp", layoutInfo: { w: 6, h: 5, @@ -973,17 +1000,16 @@ export var uiCompMap: Registry = { icon: ProcessCircleCompIcon, keywords: trans("uiComp.progressCircleCompKeywords"), lazyLoad: true, - compName: 'ProgressCircleComp', - compPath: 'comps/progressCircleComp', + compName: "ProgressCircleComp", + compPath: "comps/progressCircleComp", layoutInfo: { w: 6, h: 20, }, - }, - + }, // Document handling - + file: { name: trans("uiComp.fileUploadCompName"), enName: "File Upload", @@ -992,8 +1018,8 @@ export var uiCompMap: Registry = { icon: UploadCompIcon, keywords: trans("uiComp.fileUploadCompKeywords"), lazyLoad: true, - compName: 'FileComp', - compPath: 'comps/fileComp/fileComp', + compName: "FileComp", + compPath: "comps/fileComp/fileComp", layoutInfo: { w: 6, h: 5, @@ -1007,14 +1033,14 @@ export var uiCompMap: Registry = { icon: FileViewerCompIcon, keywords: trans("uiComp.fileViewerCompKeywords"), lazyLoad: true, - compName: 'FileViewerComp', - compPath: 'comps/fileViewerComp', + compName: "FileViewerComp", + compPath: "comps/fileViewerComp", layoutInfo: { w: 12, h: 40, }, }, - + // Multimedia image: { @@ -1025,8 +1051,8 @@ export var uiCompMap: Registry = { icon: ImageCompIcon, keywords: trans("uiComp.imageCompKeywords"), lazyLoad: true, - compName: 'ImageComp', - compPath: 'comps/imageComp', + compName: "ImageComp", + compPath: "comps/imageComp", layoutInfo: { w: 12, h: 40, @@ -1040,8 +1066,8 @@ export var uiCompMap: Registry = { icon: CarouselCompIcon, keywords: trans("uiComp.drawerCompKeywords"), lazyLoad: true, - compName: 'CarouselComp', - compPath: 'comps/carouselComp', + compName: "CarouselComp", + compPath: "comps/carouselComp", withoutLoading: true, layoutInfo: { w: 12, @@ -1056,8 +1082,8 @@ export var uiCompMap: Registry = { icon: AudioCompIcon, keywords: trans("uiComp.audioCompKeywords"), lazyLoad: true, - compName: 'AudioComp', - compPath: 'comps/mediaComp/audioComp', + compName: "AudioComp", + compPath: "comps/mediaComp/audioComp", layoutInfo: { w: 6, h: 5, @@ -1071,8 +1097,8 @@ export var uiCompMap: Registry = { icon: VideoCompIcon, keywords: trans("uiComp.videoCompKeywords"), lazyLoad: true, - compName: 'VideoComp', - compPath: 'comps/mediaComp/videoComp', + compName: "VideoComp", + compPath: "comps/mediaComp/videoComp", layoutInfo: { w: 12, h: 40, @@ -1086,8 +1112,8 @@ export var uiCompMap: Registry = { icon: LottieIcon, keywords: trans("uiComp.jsonLottieCompKeywords"), lazyLoad: true, - compName: 'JsonLottieComp', - compPath: 'comps/jsonComp/jsonLottieComp', + compName: "JsonLottieComp", + compPath: "comps/jsonComp/jsonLottieComp", layoutInfo: { w: 12, h: 40, @@ -1130,8 +1156,8 @@ export var uiCompMap: Registry = { icon: QRCodeCompIcon, keywords: trans("uiComp.qrCodeCompKeywords"), lazyLoad: true, - compName: 'QRCodeComp', - compPath: 'comps/qrCodeComp', + compName: "QRCodeComp", + compPath: "comps/qrCodeComp", layoutInfo: { w: 6, h: 32, @@ -1145,8 +1171,8 @@ export var uiCompMap: Registry = { icon: ScannerIcon, keywords: trans("uiComp.scannerCompKeywords"), lazyLoad: true, - compName: 'ScannerComp', - compPath: 'comps/buttonComp/scannerComp', + compName: "ScannerComp", + compPath: "comps/buttonComp/scannerComp", layoutInfo: { w: 6, h: 5, @@ -1160,8 +1186,8 @@ export var uiCompMap: Registry = { icon: SignatureIcon, keywords: trans("uiComp.signatureCompKeywords"), lazyLoad: true, - compName: 'SignatureComp', - compPath: 'comps/signatureComp', + compName: "SignatureComp", + compPath: "comps/signatureComp", layoutInfo: { w: 12, h: 40, @@ -1175,8 +1201,8 @@ export var uiCompMap: Registry = { icon: SelectCompIcon, keywords: trans("uiComp.selectCompKeywords"), lazyLoad: true, - compName: 'SelectComp', - compPath: 'comps/selectInputComp/selectComp', + compName: "SelectComp", + compPath: "comps/selectInputComp/selectComp", layoutInfo: { w: 6, h: 5, @@ -1190,8 +1216,8 @@ export var uiCompMap: Registry = { icon: MultiSelectCompIcon, keywords: trans("uiComp.multiSelectCompKeywords"), lazyLoad: true, - compName: 'MultiSelectComp', - compPath: 'comps/selectInputComp/multiSelectComp', + compName: "MultiSelectComp", + compPath: "comps/selectInputComp/multiSelectComp", layoutInfo: { w: 6, h: 5, @@ -1205,8 +1231,8 @@ export var uiCompMap: Registry = { icon: TreeIcon, keywords: trans("uiComp.treeCompKeywords"), lazyLoad: true, - compName: 'TreeComp', - compPath: 'comps/treeComp/treeComp', + compName: "TreeComp", + compPath: "comps/treeComp/treeComp", layoutInfo: { w: 12, h: 40, @@ -1220,8 +1246,8 @@ export var uiCompMap: Registry = { icon: TreeSelectIcon, keywords: trans("uiComp.treeSelectCompKeywords"), lazyLoad: true, - compName: 'TreeSelectComp', - compPath: 'comps/treeComp/treeSelectComp', + compName: "TreeSelectComp", + compPath: "comps/treeComp/treeSelectComp", layoutInfo: { w: 12, h: 5, @@ -1238,8 +1264,8 @@ export var uiCompMap: Registry = { categories: ["integration"], keywords: trans("uiComp.iframeCompKeywords"), lazyLoad: true, - compName: 'IFrameComp', - compPath: 'comps/iframeComp', + compName: "IFrameComp", + compPath: "comps/iframeComp", layoutInfo: { w: 12, h: 40, @@ -1253,8 +1279,8 @@ export var uiCompMap: Registry = { categories: ["integration"], keywords: trans("uiComp.customCompKeywords"), lazyLoad: true, - compName: 'CustomComp', - compPath: 'comps/customComp/customComp', + compName: "CustomComp", + compPath: "comps/customComp/customComp", layoutInfo: { w: 12, h: 40, @@ -1268,8 +1294,8 @@ export var uiCompMap: Registry = { categories: [], keywords: trans("uiComp.moduleCompKeywords"), lazyLoad: true, - compName: 'ModuleComp', - compPath: 'comps/moduleComp/moduleComp', + compName: "ModuleComp", + compPath: "comps/moduleComp/moduleComp", layoutInfo: { w: 12, h: 40, @@ -1285,19 +1311,18 @@ export var uiCompMap: Registry = { categories: ["dashboards", "layout", "multimedia"], icon: TextCompIcon, keywords: trans("uiComp.textCompKeywords"), - compName: 'TextComp', + compName: "TextComp", lazyLoad: true, - compPath: 'comps/textComp', + compPath: "comps/textComp", layoutInfo: { w: 6, h: 24, }, }, - }; export function loadComps() { - if(!uiCompMap) return; + if (!uiCompMap) return; const entries = Object.entries(uiCompMap); for (const [compType, manifest] of entries) { registerComp(compType as UICompType, manifest); From ccfa3ebb946bbc1eb640c25d5e2ee1ef110fadf8 Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Mon, 15 Apr 2024 17:10:12 +0300 Subject: [PATCH 09/16] fixed lowcoder-comps agora loading --- client/packages/lowcoder-comps/package.json | 4 +- .../meetingControllerComp.tsx | 11 - client/yarn.lock | 877 +++++++++--------- 3 files changed, 424 insertions(+), 468 deletions(-) diff --git a/client/packages/lowcoder-comps/package.json b/client/packages/lowcoder-comps/package.json index 386128841..292cd1f68 100644 --- a/client/packages/lowcoder-comps/package.json +++ b/client/packages/lowcoder-comps/package.json @@ -19,6 +19,8 @@ "@fullcalendar/timeline": "^6.1.6", "@types/react": "^18.2.45", "@types/react-dom": "^18.2.18", + "agora-rtc-sdk-ng": "^4.20.2", + "agora-rtm-sdk": "^1.5.1", "big.js": "^6.2.1", "echarts-extension-gmap": "^1.6.0", "echarts-wordcloud": "^2.1.0", @@ -102,4 +104,4 @@ "vite": "^5.0.12", "vite-tsconfig-paths": "^3.6.0" } -} \ No newline at end of file +} diff --git a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx index 028926c29..b816a03a6 100644 --- a/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx +++ b/client/packages/lowcoder-comps/src/comps/agoraMeetingComp/meetingControllerComp.tsx @@ -831,20 +831,9 @@ MTComp = withMethodExposing(MTComp, [ }); }, }, - // { - // method: { - // name: "closeDrawer", - // description: trans("drawer.closeDrawerDesc"), - // params: [], - // }, - // execute: (comp : any, values: any) => { - // comp.children.visible.getView().onChange(false); - // }, - // }, ]); export const MeetingControllerComp = withExposingConfigs(MTComp, [ - // new NameConfig("visible", trans("export.visibleDesc")), new NameConfig("appId", trans("meeting.appid")), new NameConfig("localUser", trans("meeting.host")), new NameConfig("participants", trans("meeting.participants")), diff --git a/client/yarn.lock b/client/yarn.lock index 2aa94cc81..cc1045046 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -73,8 +73,8 @@ __metadata: linkType: hard "@ant-design/cssinjs@npm:^1.18.2": - version: 1.18.4 - resolution: "@ant-design/cssinjs@npm:1.18.4" + version: 1.19.1 + resolution: "@ant-design/cssinjs@npm:1.19.1" dependencies: "@babel/runtime": ^7.11.1 "@emotion/hash": ^0.8.0 @@ -86,7 +86,7 @@ __metadata: peerDependencies: react: ">=16.0.0" react-dom: ">=16.0.0" - checksum: c6028097929a9948d1e9d5441aeab51ff824edacf98976fb06c146397c7cc9b2fc3f88765a0d93345b1fbbf6b766f638260652d5637fcbf6e6bbafe4e79e60bd + checksum: d4db654f0bc45932db59b8583587c7e0baf4985074b0e1aa9dd6cbd058fb40a655c103a2c9ba344f36d3048ac3b86c489d538d4d2d95a730d3d8dbee11b70fe2 languageName: node linkType: hard @@ -98,8 +98,8 @@ __metadata: linkType: hard "@ant-design/icons@npm:^5.2.6, @ant-design/icons@npm:^5.3.0": - version: 5.3.4 - resolution: "@ant-design/icons@npm:5.3.4" + version: 5.3.6 + resolution: "@ant-design/icons@npm:5.3.6" dependencies: "@ant-design/colors": ^7.0.0 "@ant-design/icons-svg": ^4.4.0 @@ -109,7 +109,7 @@ __metadata: peerDependencies: react: ">=16.0.0" react-dom: ">=16.0.0" - checksum: 9c3e04e20159250ed9a6e694e2944ce2a5d3f164d41bb024ce64c69692a4b14a31fb3f25c0dd7c6f6770269731e46fc3ac81d8a23bfdcad08178135fe008e8e4 + checksum: bdb57adcdc0c687002e99d91413ac1c9ffd70c8368a54648ef6c3427c074b24376d8dced57542be695f5fdfe81be14a62b58a41cba7f5efdadc77c4161c58cae languageName: node linkType: hard @@ -138,24 +138,24 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5, @babel/compat-data@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/compat-data@npm:7.24.1" - checksum: e14e94b00c3ac57bba929a87da8edb6c6a99d0051c54bf49591a5481440dd4d3ac7b4e4a93b81b54e45c2bca55e538aa1e1ad8281b083440a1598bfa8c8df03a +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5, @babel/compat-data@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/compat-data@npm:7.24.4" + checksum: 52ce371658dc7796c9447c9cb3b9c0659370d141b76997f21c5e0028cca4d026ca546b84bc8d157ce7ca30bd353d89f9238504eb8b7aefa9b1f178b4c100c2d4 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.16.0, @babel/core@npm:^7.19.6, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9": - version: 7.24.3 - resolution: "@babel/core@npm:7.24.3" + version: 7.24.4 + resolution: "@babel/core@npm:7.24.4" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.24.2 - "@babel/generator": ^7.24.1 + "@babel/generator": ^7.24.4 "@babel/helper-compilation-targets": ^7.23.6 "@babel/helper-module-transforms": ^7.23.3 - "@babel/helpers": ^7.24.1 - "@babel/parser": ^7.24.1 + "@babel/helpers": ^7.24.4 + "@babel/parser": ^7.24.4 "@babel/template": ^7.24.0 "@babel/traverse": ^7.24.1 "@babel/types": ^7.24.0 @@ -164,7 +164,7 @@ __metadata: gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 1a33460794f4122cf255b656f4d6586913f41078a1afdf1bcf0365ddbd99c1ddb68f904062f9079445ab26b507c36bc297055192bc26e5c8e6e3def42195f9ab + checksum: 15ecad7581f3329995956ba461961b1af7bed48901f14fe962ccd3217edca60049e9e6ad4ce48134618397e6c90230168c842e2c28e47ef1f16c97dbbf663c61 languageName: node linkType: hard @@ -182,15 +182,15 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.24.1, @babel/generator@npm:^7.7.2": - version: 7.24.1 - resolution: "@babel/generator@npm:7.24.1" +"@babel/generator@npm:^7.24.1, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.7.2": + version: 7.24.4 + resolution: "@babel/generator@npm:7.24.4" dependencies: "@babel/types": ^7.24.0 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 jsesc: ^2.5.1 - checksum: 98c6ce5ec7a1cba2bdf35cdf607273b90cf7cf82bbe75cd0227363fb84d7e1bd8efa74f40247d5900c8c009123f10132ad209a05283757698de918278c3c6700 + checksum: 1b6146c31386c9df3eb594a2c36b5c98da4f67f7c06edb3d68a442b92516b21bb5ba3ad7dbe0058fe76625ed24d66923e15c95b0df75ef1907d4068921a699b8 languageName: node linkType: hard @@ -225,9 +225,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/helper-create-class-features-plugin@npm:7.24.1" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.24.1, @babel/helper-create-class-features-plugin@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/helper-create-class-features-plugin@npm:7.24.4" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.20 @@ -240,7 +240,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 310d063eafbd2a777609770c1aa7b24e43f375122fd84031c45edc512686000197da1cf450b48eca266489131bc06dbaa35db2afed8b7213c9bcfa8c89b82c4d + checksum: 75b0a51ae1f7232932559779b78711c271404d02d069156d1bd9a7982c165c5134058d2ec2d8b5f2e42026ee4f52ba2a30c86a7aa3bce6b5fd0991eb721abc8c languageName: node linkType: hard @@ -432,14 +432,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/helpers@npm:7.24.1" +"@babel/helpers@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/helpers@npm:7.24.4" dependencies: "@babel/template": ^7.24.0 "@babel/traverse": ^7.24.1 "@babel/types": ^7.24.0 - checksum: 0643b8ccf3358682303aea65f0798e482b2c3642040d32ffe130a245f4a46d0d23fe575a5e06e3cda4e8ec4af89d52b94ff1c444a74465d47ccc27da6ddbbb9f + checksum: ecd2dc0b3b32e24b97fa3bcda432dd3235b77c2be1e16eafc35b8ef8f6c461faa99796a8bc2431a408c98b4aabfd572c160e2b67ecea4c5c9dd3a8314a97994a languageName: node linkType: hard @@ -455,12 +455,24 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/parser@npm:7.24.1" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.1, @babel/parser@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/parser@npm:7.24.4" bin: parser: ./bin/babel-parser.js - checksum: a1068941dddf82ffdf572565b8b7b2cddb963ff9ddf97e6e28f50e843d820b4285e6def8f59170104a94e2a91ae2e3b326489886d77a57ea29d468f6a5e79bf9 + checksum: 94c9e3e592894cd6fc57c519f4e06b65463df9be5f01739bb0d0bfce7ffcf99b3c2fdadd44dc59cc858ba2739ce6e469813a941c2f2dfacf333a3b2c9c5c8465 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.4" + dependencies: + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-plugin-utils": ^7.24.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 0be3f41b1b865d7a4ed1a432337be48de67989d0b4e47def34a05097a804b6fc193115f97c954fd757339e0b80030ecf1d0a3d3fd6e7e91718644de0a5aae3d3 languageName: node linkType: hard @@ -900,14 +912,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/plugin-transform-block-scoping@npm:7.24.1" +"@babel/plugin-transform-block-scoping@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/plugin-transform-block-scoping@npm:7.24.4" dependencies: "@babel/helper-plugin-utils": ^7.24.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 65423ee83dba4e84c357f34e0970a96d0f5e727fad327cc7bdb0e1492243eb9c72b95d3c649dc0b488b9b4774dadef5662fed0bf66717b59673ff6d4ffbd6441 + checksum: 5229ffe1c55744b96f791521e2876b01ed05c81df67488a7453ce66c2faceb9d1d653089ce6f0abf512752e15e9acac0e75a797a860f24e05b4d36497c7c3183 languageName: node linkType: hard @@ -923,16 +935,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/plugin-transform-class-static-block@npm:7.24.1" +"@babel/plugin-transform-class-static-block@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/plugin-transform-class-static-block@npm:7.24.4" dependencies: - "@babel/helper-create-class-features-plugin": ^7.24.1 + "@babel/helper-create-class-features-plugin": ^7.24.4 "@babel/helper-plugin-utils": ^7.24.0 "@babel/plugin-syntax-class-static-block": ^7.14.5 peerDependencies: "@babel/core": ^7.12.0 - checksum: 253c627c11d9df79e3b32e78bfa1fe0dd1f91c3579da52bf73f76c83de53b140dcb1c9cc5f4c65ff1505754a01b59bc83987c35bcc8f89492b63dae46adef78f + checksum: 3b1db3308b57ba21d47772a9f183804234c23fd64c9ca40915d2d65c5dc7a48b49a6de16b8b90b7a354eacbb51232a862f0fca3dbd23e27d34641f511decddab languageName: node linkType: hard @@ -1494,16 +1506,16 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/plugin-transform-typescript@npm:7.24.1" + version: 7.24.4 + resolution: "@babel/plugin-transform-typescript@npm:7.24.4" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.24.1 + "@babel/helper-create-class-features-plugin": ^7.24.4 "@babel/helper-plugin-utils": ^7.24.0 "@babel/plugin-syntax-typescript": ^7.24.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1a37fa55ab176b11c3763da4295651b3db38f0a7f3d47b5cd5ab1e33cbcbbf2b471c4bdb7b24f39392d4660409209621c8d11c521de2deffddc3d876a1b60482 + checksum: 57a9a776b1910c706d28972e4b056ced3af8fc59c29b2a6205c2bb2a408141ddb59a8f2f6041f8467a7b260942818767f4ecabb9f63adf7fddf2afa25e774dfc languageName: node linkType: hard @@ -1555,13 +1567,14 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.16.4, @babel/preset-env@npm:^7.19.4, @babel/preset-env@npm:^7.20.2": - version: 7.24.3 - resolution: "@babel/preset-env@npm:7.24.3" + version: 7.24.4 + resolution: "@babel/preset-env@npm:7.24.4" dependencies: - "@babel/compat-data": ^7.24.1 + "@babel/compat-data": ^7.24.4 "@babel/helper-compilation-targets": ^7.23.6 "@babel/helper-plugin-utils": ^7.24.0 "@babel/helper-validator-option": ^7.23.5 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.24.4 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.24.1 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.1 "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.24.1 @@ -1588,9 +1601,9 @@ __metadata: "@babel/plugin-transform-async-generator-functions": ^7.24.3 "@babel/plugin-transform-async-to-generator": ^7.24.1 "@babel/plugin-transform-block-scoped-functions": ^7.24.1 - "@babel/plugin-transform-block-scoping": ^7.24.1 + "@babel/plugin-transform-block-scoping": ^7.24.4 "@babel/plugin-transform-class-properties": ^7.24.1 - "@babel/plugin-transform-class-static-block": ^7.24.1 + "@babel/plugin-transform-class-static-block": ^7.24.4 "@babel/plugin-transform-classes": ^7.24.1 "@babel/plugin-transform-computed-properties": ^7.24.1 "@babel/plugin-transform-destructuring": ^7.24.1 @@ -1640,7 +1653,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4f3376444f938b3884fddd3cded86cfda97a1fb4bccc93b49fb4593a63f79d9b20e6fb0e1a0934736cea6205df3998c752b248c5f5ec398162fbe165c8e69c5c + checksum: 5a057a6463f92b02bfe66257d3f2c76878815bc7847f2a716b0539d9f547eae2a9d1f0fc62a5c0eff6ab0504bb52e815829ef893e4586b641f8dd6a609d114f3 languageName: node linkType: hard @@ -1696,11 +1709,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.10.4, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.6, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.24.1 - resolution: "@babel/runtime@npm:7.24.1" + version: 7.24.4 + resolution: "@babel/runtime@npm:7.24.4" dependencies: regenerator-runtime: ^0.14.0 - checksum: 5c8f3b912ba949865f03b3cf8395c60e1f4ebd1033fbd835bdfe81b6cac8a87d85bc3c7aded5fcdf07be044c9ab8c818f467abe0deca50020c72496782639572 + checksum: 2f27d4c0ffac7ae7999ac0385e1106f2a06992a8bdcbf3da06adcac7413863cd08c198c2e4e970041bbea849e17f02e1df18875539b6afba76c781b6b59a07c3 languageName: node linkType: hard @@ -1759,8 +1772,8 @@ __metadata: linkType: hard "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.11.1": - version: 6.15.0 - resolution: "@codemirror/autocomplete@npm:6.15.0" + version: 6.16.0 + resolution: "@codemirror/autocomplete@npm:6.16.0" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 @@ -1771,7 +1784,7 @@ __metadata: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: fce8d85e34a76d37a009c74d7d25c32a8cf12a9cbcff95211f96ff9afcb092e0d79e1f3b40425b4ea9b797579aaf64dd770ff2187ffabe2e5c9f44da23631363 + checksum: e33d3d8c961c03dc4a70d1ac6f01aee5362d778da9d873a8335aed47f7de9430eab083589736e7922464b941d5da23c51ab6af05400413a8d1a07604ffcb99f7 languageName: node linkType: hard @@ -1801,8 +1814,8 @@ __metadata: linkType: hard "@codemirror/lang-html@npm:^6.4.7": - version: 6.4.8 - resolution: "@codemirror/lang-html@npm:6.4.8" + version: 6.4.9 + resolution: "@codemirror/lang-html@npm:6.4.9" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/lang-css": ^6.0.0 @@ -1813,7 +1826,7 @@ __metadata: "@lezer/common": ^1.0.0 "@lezer/css": ^1.1.0 "@lezer/html": ^1.3.0 - checksum: 9aec56c333cc06f9e4bb6d09806ae83e4a7f235a26b3244010e2dcea83a923cfcd7bec84904b8a59bc81256b0bb579a52bf5614962dad031d7577db1c49a216a + checksum: ac8c3ceb0396f2e032752c5079bd950124dca708bc64e96fc147dc5fe7133e5cee0814fe951abdb953ec1d11fa540e4b30a712b5149d9a36016a197a28de45d7 languageName: node linkType: hard @@ -1843,8 +1856,8 @@ __metadata: linkType: hard "@codemirror/lang-sql@npm:^6.5.4": - version: 6.6.1 - resolution: "@codemirror/lang-sql@npm:6.6.1" + version: 6.6.3 + resolution: "@codemirror/lang-sql@npm:6.6.3" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 @@ -1852,7 +1865,7 @@ __metadata: "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: 65f59b2a4477ddff27aba9435f4c3f1d236cbc03aa7c9cf3b2f70b8bbcd748c8883aae249efd9077fdbd9b23a9c0f046a29c945ffb0d8e6ef4e9ee9f61d35a88 + checksum: b8e554bda9107107283674a6397cdb4816ad8bb429afd739fdc5e0339ef60170f09bdd93e7dc3eaf7f24ffaec5c7477ee42af7c05cb471990657014fac2fea1e languageName: node linkType: hard @@ -1900,13 +1913,13 @@ __metadata: linkType: hard "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0": - version: 6.26.0 - resolution: "@codemirror/view@npm:6.26.0" + version: 6.26.3 + resolution: "@codemirror/view@npm:6.26.3" dependencies: "@codemirror/state": ^6.4.0 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 93c824334228d0ed81c0db8f58a627b69dad1300f4b64df6e19b487aa36cbd8bf624121092119fc09d49c290cd4e1c88680de62bd138a15f89570832f7addd80 + checksum: fdee35fb5e0bbba7b6f1a9b43a865880911bbfafd30360da5dda21b35f81ba2d080ff66b6c3d94dbe946b6b7ec98a76208786360b8f030ef10bcb054b816de05 languageName: node linkType: hard @@ -2462,46 +2475,46 @@ __metadata: languageName: node linkType: hard -"@fortawesome/fontawesome-common-types@npm:6.5.1": - version: 6.5.1 - resolution: "@fortawesome/fontawesome-common-types@npm:6.5.1" - checksum: c597062de8903aae591b652aa03b9b7aaa66e8c71e5950dc34a8b2812851a7f4ad743fba7396bab87d787c5359bb121496769a165bd3399d039dc214434f6f0c +"@fortawesome/fontawesome-common-types@npm:6.5.2": + version: 6.5.2 + resolution: "@fortawesome/fontawesome-common-types@npm:6.5.2" + checksum: 8164f3e16683db5125634a4fbf3db83a5a7366bb830111ffe8538e1b8f98f8fe6dc35609cf2c595a7d6840e27d3fb45b57faf7340e40e98f0d76207fe8f94e79 languageName: node linkType: hard "@fortawesome/fontawesome-svg-core@npm:^6.5.1": - version: 6.5.1 - resolution: "@fortawesome/fontawesome-svg-core@npm:6.5.1" + version: 6.5.2 + resolution: "@fortawesome/fontawesome-svg-core@npm:6.5.2" dependencies: - "@fortawesome/fontawesome-common-types": 6.5.1 - checksum: e17f995abe215d288163b2cd009f935c7f96bc896ab4ea7a75de72789d52a1275bd112eeb60cadd63bb20017a05ed765232157079bfb7efda7347a5614e04ce1 + "@fortawesome/fontawesome-common-types": 6.5.2 + checksum: f0c2a0800074c5bbc143631b9f3f818b94bd14b8590153058eecc9f548ae0ac78cfca61196880f9b3b79b5d5b5afdb140d05da75542da2087701614c9c043905 languageName: node linkType: hard "@fortawesome/free-brands-svg-icons@npm:^6.5.1": - version: 6.5.1 - resolution: "@fortawesome/free-brands-svg-icons@npm:6.5.1" + version: 6.5.2 + resolution: "@fortawesome/free-brands-svg-icons@npm:6.5.2" dependencies: - "@fortawesome/fontawesome-common-types": 6.5.1 - checksum: c29f8a9ad9886c0733d3616b5ea05b08b4943c1b5231c73f31a07e7df36c337e5a51cfe7cc610e623cb2b4a0607e3f82a8a3f46107c4347aa653784489672314 + "@fortawesome/fontawesome-common-types": 6.5.2 + checksum: f037c15978da40942e7962f3ddbddf767bc1a5a126952422c786408e4942f7da4daaefe028ba039b56761636903a5916b845547755a8e04e079c6f92e724fd37 languageName: node linkType: hard "@fortawesome/free-regular-svg-icons@npm:^6.5.1": - version: 6.5.1 - resolution: "@fortawesome/free-regular-svg-icons@npm:6.5.1" + version: 6.5.2 + resolution: "@fortawesome/free-regular-svg-icons@npm:6.5.2" dependencies: - "@fortawesome/fontawesome-common-types": 6.5.1 - checksum: c1809fae5f3bffff2f06d414f552e38acf385f79bb1b1a8e34b6b9c1138e9e6be7f8ed1503da0f72e225079138b8377f95f279d0079bb04ba8d3bfb3025ec512 + "@fortawesome/fontawesome-common-types": 6.5.2 + checksum: e5a6cf019e0252adbfc64d150c47beeb78c90f3d6173df75891a7fd3af45ce187412e498cb21e7d1b0818047febe9ff5a9896d0ca8c279eb5217cb4af63cc71d languageName: node linkType: hard "@fortawesome/free-solid-svg-icons@npm:^6.5.1": - version: 6.5.1 - resolution: "@fortawesome/free-solid-svg-icons@npm:6.5.1" + version: 6.5.2 + resolution: "@fortawesome/free-solid-svg-icons@npm:6.5.2" dependencies: - "@fortawesome/fontawesome-common-types": 6.5.1 - checksum: c544b8389bab4ab375d172feeb334d4a591bd7c594acdcc546b5197f2bcc80be22be119a03994dbe7f13d133c11b41c471b62c92dd318fbe0378202c43c09d7d + "@fortawesome/fontawesome-common-types": 6.5.2 + checksum: f23964434ccbab5114c05bcdabb79d8e801b5be534618db7947d40d4841a3e52177e6145ae5fe59c941d864f70ffcffd0f1e4f0983dfd0048a1f5f3430a00c8c languageName: node linkType: hard @@ -2705,25 +2718,6 @@ __metadata: languageName: node linkType: hard -"@gilbarbara/helpers@npm:^0.9.2": - version: 0.9.2 - resolution: "@gilbarbara/helpers@npm:0.9.2" - dependencies: - "@gilbarbara/types": ^0.2.2 - is-lite: ^1.2.1 - checksum: b6f92e5425bc39a6a7443ef4cc3be356c98e43fff003365f11441ff2564fb6c8db156a09bbccb6c9af47056e00db859ad7236cb1f3c27bbde31970fa01ff6f82 - languageName: node - linkType: hard - -"@gilbarbara/types@npm:^0.2.2": - version: 0.2.2 - resolution: "@gilbarbara/types@npm:0.2.2" - dependencies: - type-fest: ^4.1.0 - checksum: 0c348410efa59a653f0f4f9342950fce08bd86ccc600488fe81ae20b5c040675637569fa9eef9c36d9ed62932c2fa7a996a7ca54b5d40ecbf9738876e269d9d4 - languageName: node - linkType: hard - "@humanwhocodes/config-array@npm:^0.11.14": version: 0.11.14 resolution: "@humanwhocodes/config-array@npm:0.11.14" @@ -2743,9 +2737,9 @@ __metadata: linkType: hard "@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.2 - resolution: "@humanwhocodes/object-schema@npm:2.0.2" - checksum: 2fc11503361b5fb4f14714c700c02a3f4c7c93e9acd6b87a29f62c522d90470f364d6161b03d1cc618b979f2ae02aed1106fd29d302695d8927e2fc8165ba8ee + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 languageName: node linkType: hard @@ -3066,9 +3060,9 @@ __metadata: linkType: hard "@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.4 - resolution: "@leichtgewicht/ip-codec@npm:2.0.4" - checksum: 468de1f04d33de6d300892683d7c8aecbf96d1e2c5fe084f95f816e50a054d45b7c1ebfb141a1447d844b86a948733f6eebd92234da8581c84a1ad4de2946a2d + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 languageName: node linkType: hard @@ -3111,13 +3105,13 @@ __metadata: linkType: hard "@lezer/javascript@npm:^1.0.0": - version: 1.4.13 - resolution: "@lezer/javascript@npm:1.4.13" + version: 1.4.14 + resolution: "@lezer/javascript@npm:1.4.14" dependencies: "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 - checksum: a5e4607fec7671dff66d1f3bfee5a5da7395982f1867e17ac4d8f2d8f223451fb18516ef2699340b148af112176a07e1fcba9e63c5f8397c12895dd0509113d6 + checksum: 4880026f72bcfcd13f204cc57f1469ba04597304ba79d1331048be1e2b0bcb879e9d4b7e57a6a273f38ac66385740b15a6edb4249ecfcc971b94804298399256 languageName: node linkType: hard @@ -3198,15 +3192,15 @@ __metadata: linkType: hard "@npmcli/agent@npm:^2.0.0": - version: 2.2.1 - resolution: "@npmcli/agent@npm:2.2.1" + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" dependencies: agent-base: ^7.1.0 http-proxy-agent: ^7.0.0 https-proxy-agent: ^7.0.1 lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.1 - checksum: c69aca42dbba393f517bc5777ee872d38dc98ea0e5e93c1f6d62b82b8fecdc177a57ea045f07dda1a770c592384b2dd92a5e79e21e2a7cf51c9159466a8f9c9b + socks-proxy-agent: ^8.0.3 + checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 languageName: node linkType: hard @@ -3492,8 +3486,8 @@ __metadata: linkType: hard "@rjsf/antd@npm:^5.15.1": - version: 5.17.1 - resolution: "@rjsf/antd@npm:5.17.1" + version: 5.18.2 + resolution: "@rjsf/antd@npm:5.18.2" dependencies: classnames: ^2.5.1 lodash: ^4.17.21 @@ -3501,18 +3495,18 @@ __metadata: rc-picker: ^2.7.6 peerDependencies: "@ant-design/icons": ^4.0.0 || ^5.0.0 - "@rjsf/core": ^5.16.x - "@rjsf/utils": ^5.16.x + "@rjsf/core": ^5.18.x + "@rjsf/utils": ^5.18.x antd: ^4.24.0 || ^5.8.5 dayjs: ^1.8.0 react: ^16.14.0 || >=17 - checksum: f5b0368007a06cf0430b8211a49bc0399d541c04c2f49cfb6da5ef24538f450af651d49684834c1be7a33213a627b6a088fb291629da642c4b0a86424b4c1824 + checksum: bef08fd4ee6585fbac5c9a4c7eab32a01c09ddebbae556a7ca4198c2a1f160d978d0b80d0d1b14964da245ecb537f0323a334b3c38aad3077a57e588167f760d languageName: node linkType: hard "@rjsf/core@npm:^5.15.1": - version: 5.17.1 - resolution: "@rjsf/core@npm:5.17.1" + version: 5.18.2 + resolution: "@rjsf/core@npm:5.18.2" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -3520,15 +3514,15 @@ __metadata: nanoid: ^3.3.7 prop-types: ^15.8.1 peerDependencies: - "@rjsf/utils": ^5.16.x + "@rjsf/utils": ^5.18.x react: ^16.14.0 || >=17 - checksum: 2dead2886a4db152d259d3e85281c1fa5975eeac5f05c2840201ccc583ef1cf9d48c922cd404d515133e140eae7a8fca4aa63ccde0bcfe63d0b3fbe3cd621aed + checksum: b8b20bd75090b15b19e176aa766c037f3a7f1a27dbbde07ab095376a85e0027fd441b6e37355c8d3b389393db1f1b27699769034146040864c63a8f110d5e2d7 languageName: node linkType: hard "@rjsf/utils@npm:^5.15.1": - version: 5.17.1 - resolution: "@rjsf/utils@npm:5.17.1" + version: 5.18.2 + resolution: "@rjsf/utils@npm:5.18.2" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -3537,21 +3531,21 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 83010de66b06f1046b023a0b7d0bf30b5f47b152893c3b12f1f42faa89e7c7d18b2f04fe2e9035e5f63454317f09e6d5753fc014d43b933c8023b71fc50c3acf + checksum: 19342ce160f5f2ff1b1448bc61b0767c9b19a3c365fe3dca221c9178dff6b54123bdfe9dd4b0314aa7965011edb0e76029f7e76226936066bfacbaaa619546b4 languageName: node linkType: hard "@rjsf/validator-ajv8@npm:^5.15.1": - version: 5.17.1 - resolution: "@rjsf/validator-ajv8@npm:5.17.1" + version: 5.18.2 + resolution: "@rjsf/validator-ajv8@npm:5.18.2" dependencies: ajv: ^8.12.0 ajv-formats: ^2.1.1 lodash: ^4.17.21 lodash-es: ^4.17.21 peerDependencies: - "@rjsf/utils": ^5.16.x - checksum: 6135960e979571839822bff2f62b37288e909ca760d363db1ea7056d96fd38d2e0ff9d70df1d8b2a7f6ffb38d37568354acd368e64c9c5dde69111456a46870d + "@rjsf/utils": ^5.18.x + checksum: 0ed953615b0619a376edfa95ccb891f1aa701e1915a09de562fb1c13a69a4902887359dcf68597f78ffc0a9be9c402c1488ef8ae552be8c8f48aeb7d59d3eae3 languageName: node linkType: hard @@ -3788,101 +3782,122 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.13.0" +"@rollup/rollup-android-arm-eabi@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.14.3" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-android-arm64@npm:4.13.0" +"@rollup/rollup-android-arm64@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-android-arm64@npm:4.14.3" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.13.0" +"@rollup/rollup-darwin-arm64@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.14.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.13.0" +"@rollup/rollup-darwin-x64@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.14.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.14.3" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.13.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.14.3" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.13.0" +"@rollup/rollup-linux-arm64-musl@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.14.3" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.13.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.3" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.14.3" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.13.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.14.3" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.14.3" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.13.0" +"@rollup/rollup-linux-x64-musl@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.14.3" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.13.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.14.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.13.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.14.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.13.0" +"@rollup/rollup-win32-x64-msvc@npm:4.14.3": + version: 4.14.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.14.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@rushstack/eslint-patch@npm:^1.1.0": - version: 1.8.0 - resolution: "@rushstack/eslint-patch@npm:1.8.0" - checksum: 25ba5f5dc8828f9a5499045b28d33c642e3db7cd32b3e5f4fbfa5cc6695c28b3967981d662cf37df4e945ba7f874df9bd559c9b2770a1e7d3b5b36afb45246c3 + version: 1.10.2 + resolution: "@rushstack/eslint-patch@npm:1.10.2" + checksum: 2bac46e0f662c6b9c1f1d2268e4165a779331b9229eaeeb360852feaecdc5cb4adf8e1a36ac510b3545a83f83de702811b984afe26ec7d4a79e1c0ea708e2bfe languageName: node linkType: hard @@ -4247,8 +4262,8 @@ __metadata: linkType: hard "@testing-library/react@npm:^14.1.2": - version: 14.2.2 - resolution: "@testing-library/react@npm:14.2.2" + version: 14.3.1 + resolution: "@testing-library/react@npm:14.3.1" dependencies: "@babel/runtime": ^7.12.5 "@testing-library/dom": ^9.0.0 @@ -4256,7 +4271,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: cb73df588592d9101429f057eaa6f320fc12524d5eb2acc8a16002c1ee2d9422a49e44841003bba42974c9ae1ced6b134f0d647826eca42ab8f19e4592971b16 + checksum: b057d4c9db5a523acfc24d7bc4665a924ab8d6f252c7f51eecf7dd30f1239413e1134925fd5cc9cbdef80496af64c04e6719b2081f89fe05ba87e8c6305bcc16 languageName: node linkType: hard @@ -4428,12 +4443,12 @@ __metadata: linkType: hard "@types/eslint@npm:*": - version: 8.56.6 - resolution: "@types/eslint@npm:8.56.6" + version: 8.56.9 + resolution: "@types/eslint@npm:8.56.9" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 960996940c8702c6e9bf221f2927f088d8f6463ad21ae1eb8260c62642ce48097a79a4277d99cb7cafde6939beadbd79610015fdd08b18679e565bcad5fcd36f + checksum: c0c033fc724774b791bf97465cfe246814eda1f82460aff2daa64dfce1b1a01626c75f4281d2ab10dcd9176446df0b4bf57e8ac542da6476902e28683e89137d languageName: node linkType: hard @@ -4452,14 +4467,14 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": - version: 4.17.43 - resolution: "@types/express-serve-static-core@npm:4.17.43" + version: 4.19.0 + resolution: "@types/express-serve-static-core@npm:4.19.0" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: 08e940cae52eb1388a7b5f61d65f028e783add77d1854243ae920a6a2dfb5febb6acaafbcf38be9d678b0411253b9bc325893c463a93302405f24135664ab1e4 + checksum: 39c09fcb3f61de96ed56d97273874cafe50e6675ac254af4d77014e569e4fdc29d1d0d1dd12e11f008cb9a52785b07c2801c6ba91397965392b20c75ee01fb4e languageName: node linkType: hard @@ -4642,13 +4657,6 @@ __metadata: languageName: node linkType: hard -"@types/mime@npm:*": - version: 3.0.4 - resolution: "@types/mime@npm:3.0.4" - checksum: a6139c8e1f705ef2b064d072f6edc01f3c099023ad7c4fce2afc6c2bf0231888202adadbdb48643e8e20da0ce409481a49922e737eca52871b3dc08017455843 - languageName: node - linkType: hard - "@types/mime@npm:^1": version: 1.3.5 resolution: "@types/mime@npm:1.3.5" @@ -4687,18 +4695,18 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.11.30 - resolution: "@types/node@npm:20.11.30" + version: 20.12.7 + resolution: "@types/node@npm:20.12.7" dependencies: undici-types: ~5.26.4 - checksum: 7597767aa3e44b0f1bf62efa522dd17741135f283c11de6a20ead8bb7016fb4999cc30adcd8f2bb29ebb216906c92894346ccd187de170927dc1e212d2c07c81 + checksum: 7cc979f7e2ca9a339ec71318c3901b9978555257929ef3666987f3e447123bc6dc92afcc89f6347e09e07d602fde7d51bcddea626c23aa2bb74aeaacfd1e1686 languageName: node linkType: hard "@types/node@npm:^16.7.13": - version: 16.18.91 - resolution: "@types/node@npm:16.18.91" - checksum: f5a85c90cf1fcedbeba9e1364cbc738cb8d6a67eee7912470d0d61174f6a70fa819ac53a1ca282689e623c47ea1a164171c22129f1e1e8741911f0009f2197d1 + version: 16.18.96 + resolution: "@types/node@npm:16.18.96" + checksum: c5b4c20868e1ecb2e3b975b37aeeb5790b3a4f1472b496fae779ac4f14ba4fb4c0e9ed8e9b6eb389e5a074371056130c9d6506705b144b4f6985ffa844556242 languageName: node linkType: hard @@ -4726,9 +4734,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0": - version: 15.7.11 - resolution: "@types/prop-types@npm:15.7.11" - checksum: 7519ff11d06fbf6b275029fe03fff9ec377b4cb6e864cac34d87d7146c7f5a7560fd164bdc1d2dbe00b60c43713631251af1fd3d34d46c69cd354602bc0c7c54 + version: 15.7.12 + resolution: "@types/prop-types@npm:15.7.12" + checksum: ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe languageName: node linkType: hard @@ -4765,11 +4773,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.18": - version: 18.2.22 - resolution: "@types/react-dom@npm:18.2.22" + version: 18.2.25 + resolution: "@types/react-dom@npm:18.2.25" dependencies: "@types/react": "*" - checksum: 83bb3ddcd7894f20a9a6cbc2befe75d8b76984734020c455b4c50cad625a4025250d8e1d247ef6264e484d47d5a94f2dd11f77c1dcac6a5de998cb447d85b720 + checksum: 85f9278d6456c6cdc76da6806a33b472588cdd029b08dde32e8b5636b25a3eae529b4ac2e08c848a3d7ca44e4e97ee9a3df406c96fa0768de935c8eed6e07590 languageName: node linkType: hard @@ -4853,23 +4861,22 @@ __metadata: linkType: hard "@types/react-virtualized@npm:^9.21.21": - version: 9.21.29 - resolution: "@types/react-virtualized@npm:9.21.29" + version: 9.21.30 + resolution: "@types/react-virtualized@npm:9.21.30" dependencies: "@types/prop-types": "*" "@types/react": "*" - checksum: df10e8847e20ac2b4bac647a9bfc027edbc73ff41e298024de7b8588e0d8e9b220ba7d65231fced9ca9eb5284a1d6a478ec934f950f33795baed586bd0e30ea0 + checksum: 3beb6bc5e0edc4831094a0911ca0a5bc6a53295a54aa530e376dc5af98fb7c51bb11e293c652d56cfbcd7049b6bee880569939960ac48ca4ac6d63983030818e languageName: node linkType: hard "@types/react@npm:^18": - version: 18.2.67 - resolution: "@types/react@npm:18.2.67" + version: 18.2.78 + resolution: "@types/react@npm:18.2.78" dependencies: "@types/prop-types": "*" - "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 9e48122b0e8d0ae20601f613aca32289eeb94d55c58ff03a7dc532d80ed289a1ba9715f14b773bd926ccdd63e503717f14264143ef531dc370063abe09dee0b2 + checksum: f686d735707d46690d05ac76e8c8a619802ea6a4a8f2837981669f7dc13b6984751edc4994242afa3be279df15c67b72a5a658f02a7c5ca16f9a0b4878f1bf18 languageName: node linkType: hard @@ -4903,13 +4910,6 @@ __metadata: languageName: node linkType: hard -"@types/scheduler@npm:*": - version: 0.16.8 - resolution: "@types/scheduler@npm:0.16.8" - checksum: 6c091b096daa490093bf30dd7947cd28e5b2cd612ec93448432b33f724b162587fed9309a0acc104d97b69b1d49a0f3fc755a62282054d62975d53d7fd13472d - languageName: node - linkType: hard - "@types/semver@npm:^7.3.12": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -4937,13 +4937,13 @@ __metadata: linkType: hard "@types/serve-static@npm:*, @types/serve-static@npm:^1.15.5": - version: 1.15.5 - resolution: "@types/serve-static@npm:1.15.5" + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" dependencies: "@types/http-errors": "*" - "@types/mime": "*" "@types/node": "*" - checksum: 0ff4b3703cf20ba89c9f9e345bc38417860a88e85863c8d6fe274a543220ab7f5f647d307c60a71bb57dc9559f0890a661e8dc771a6ec5ef195d91c8afc4a893 + "@types/send": "*" + checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 languageName: node linkType: hard @@ -5648,12 +5648,12 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" dependencies: debug: ^4.3.4 - checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f + checksum: 51c158769c5c051482f9ca2e6e1ec085ac72b5a418a9b31b4e82fe6c0a6699adb94c1c42d246699a587b3335215037091c79e0de512c516f73b6ea844202f037 languageName: node linkType: hard @@ -5667,16 +5667,6 @@ __metadata: languageName: node linkType: hard -"agora-access-token@npm:^2.0.4": - version: 2.0.4 - resolution: "agora-access-token@npm:2.0.4" - dependencies: - crc-32: 1.2.0 - cuint: 0.2.2 - checksum: 7d91fa01c4ba085f70b8bdac9d296f8a5d29d2dc5a1c5cd995d4fe7bfb557cc3c5223bb0417065e89c584c0dbfaa7ddfdb4b689b0b8fc2459e77ad9d4ff0d52a - languageName: node - linkType: hard - "agora-rtc-sdk-ng@npm:^4.20.2": version: 4.20.2 resolution: "agora-rtc-sdk-ng@npm:4.20.2" @@ -5708,20 +5698,21 @@ __metadata: linkType: hard "ahooks@npm:^3.7.6": - version: 3.7.10 - resolution: "ahooks@npm:3.7.10" + version: 3.7.11 + resolution: "ahooks@npm:3.7.11" dependencies: "@babel/runtime": ^7.21.0 dayjs: ^1.9.1 intersection-observer: ^0.12.0 js-cookie: ^2.x.x lodash: ^4.17.21 + react-fast-compare: ^3.2.2 resize-observer-polyfill: ^1.5.1 screenfull: ^5.0.0 tslib: ^2.4.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 8b5a618a5745f39a9d40e689f8d52938276d03dfda9fcf6c57ff3dec13f7313cb70dc1b5a2d8ca8ddaec650e7045ce2b9bcab5e04f4ebeb41c4ff76318959cd8 + checksum: 290f78a27a25720060e0e4a0b15a772e58f8e02534a000fa60e8fa2e09958c2ec410d382c51e5d510e511a8563f67fdbbee3ffe20680bb2a34573691ba3dbafc languageName: node linkType: hard @@ -5871,8 +5862,8 @@ __metadata: linkType: hard "antd-mobile@npm:^5.34.0": - version: 5.34.0 - resolution: "antd-mobile@npm:5.34.0" + version: 5.35.0 + resolution: "antd-mobile@npm:5.35.0" dependencies: "@floating-ui/dom": ^1.4.2 "@rc-component/mini-decimal": ^1.1.0 @@ -5883,9 +5874,11 @@ __metadata: antd-mobile-v5-count: ^1.0.1 classnames: ^2.3.2 dayjs: ^1.11.7 - lodash: ^4.17.21 + deepmerge: ^4.3.1 + nano-memoize: ^3.0.16 rc-field-form: ~1.27.4 rc-util: ^5.38.1 + react-fast-compare: ^3.2.2 react-is: ^18.2.0 runes2: ^1.1.2 staged-components: ^1.1.3 @@ -5893,7 +5886,7 @@ __metadata: use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: b30dae9507a6e0ee2fb15dea9a1700a8a625668604d6656530ceaff178efb96d16674c86080456af51a3ac6ac9d6c78f1abc3d375e1bdf3ffb18464a91af527c + checksum: cd8eadff320bad28f2e0ff0de42f0320c42cdfdc73d1ebc2d0d262ad5a4d180acdc3751204c035b43dd0557d55b0fe6d68562175d6b073a7da5cb2f54f5d4815 languageName: node linkType: hard @@ -6867,9 +6860,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001599 - resolution: "caniuse-lite@npm:1.0.30001599" - checksum: d7e619e2e723547b7311ba0ca5134d9cd55df548e93dbedcf8a6e4ec74c7db91969c4272fb1ab2fd94cddeac6a8176ebf05853eb06689d5e76bb97d979a214b0 + version: 1.0.30001610 + resolution: "caniuse-lite@npm:1.0.30001610" + checksum: 580c7367aafd7e524f4e3f0e8b22ac08d081a4d44ceece211f1758e214df9a87961750fb1e1ee28a2cd2830f0daf3edafe5e1d87bf1eefbbe7c6cf3d00e2979d languageName: node linkType: hard @@ -7105,19 +7098,19 @@ __metadata: languageName: node linkType: hard -"cnchar-types@npm:^3.2.5": - version: 3.2.5 - resolution: "cnchar-types@npm:3.2.5" - checksum: fbbe186b03c20c50499d37027ae3fbeea695d4f2bd6144baf55a35e890f892ae59d17e1b6918c13addf5f134c8e28dba490a2ad2a2f79cf0eb542b0b3c3343cb +"cnchar-types@npm:^3.2.6": + version: 3.2.6 + resolution: "cnchar-types@npm:3.2.6" + checksum: 4e9bb0d321ca1c57e4f1655294afb1a9ce0194c1d4fa41b3df134be27e513edd3cece26a85847271bff08ac83d9142059b548da85766e0ec7ed72c7a7f98b5d6 languageName: node linkType: hard "cnchar@npm:^3.2.4": - version: 3.2.5 - resolution: "cnchar@npm:3.2.5" + version: 3.2.6 + resolution: "cnchar@npm:3.2.6" dependencies: - cnchar-types: ^3.2.5 - checksum: b12317386642a04b41f791631d7af25cfaa9251572083b102c684a786ac280c61dedcfab31e870acaa1be4498580f1794725ff965c40e9e2fe1fcfde99ef6e1b + cnchar-types: ^3.2.6 + checksum: e51be217e33925662f612f239c9d352bb87c076988ec737b0ff42cfba8ef0704d7ff6271ceb1dda2ad6b631e0e410ac71f1242eac994adb5f2d5dfb19c4d014a languageName: node linkType: hard @@ -7508,18 +7501,6 @@ __metadata: languageName: node linkType: hard -"crc-32@npm:1.2.0": - version: 1.2.0 - resolution: "crc-32@npm:1.2.0" - dependencies: - exit-on-epipe: ~1.0.1 - printj: ~1.1.0 - bin: - crc32: ./bin/crc32.njs - checksum: 7bcde8bea262f6629ac3c70e20bdfa3d058dc77091705ce8620513f76f19b41fc273ddd65a716eef9b4e33fbb61ff7f9b266653d214319aef27e4223789c6b9e - languageName: node - linkType: hard - "crc-32@npm:~1.2.0, crc-32@npm:~1.2.1": version: 1.2.2 resolution: "crc-32@npm:1.2.2" @@ -7646,14 +7627,14 @@ __metadata: linkType: hard "css-loader@npm:^6.10.0": - version: 6.10.0 - resolution: "css-loader@npm:6.10.0" + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" dependencies: icss-utils: ^5.1.0 postcss: ^8.4.33 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.4 - postcss-modules-scope: ^3.1.1 + postcss-modules-extract-imports: ^3.1.0 + postcss-modules-local-by-default: ^4.0.5 + postcss-modules-scope: ^3.2.0 postcss-modules-values: ^4.0.0 postcss-value-parser: ^4.2.0 semver: ^7.5.4 @@ -7665,7 +7646,7 @@ __metadata: optional: true webpack: optional: true - checksum: ee3d62b5f7e4eb24281a22506431e920d07a45bd6ea627731ce583f3c6a846ab8b8b703bace599b9b35256b9e762f9f326d969abb72b69c7e6055eacf39074fd + checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 languageName: node linkType: hard @@ -7828,13 +7809,6 @@ __metadata: languageName: node linkType: hard -"cuint@npm:0.2.2": - version: 0.2.2 - resolution: "cuint@npm:0.2.2" - checksum: b8127a93a7f16ce120ffcb22108014327c9808b258ee20e7dbb4c6740d7cb0f0c12d18a054eb716b0f2470090666abaae8a082d3cd5ef0e94fa447dd155842c4 - languageName: node - linkType: hard - "cytoscape-cose-bilkent@npm:^4.1.0": version: 4.1.0 resolution: "cytoscape-cose-bilkent@npm:4.1.0" @@ -8388,14 +8362,14 @@ __metadata: linkType: hard "dedent@npm:^1.0.0": - version: 1.5.1 - resolution: "dedent@npm:1.5.1" + version: 1.5.3 + resolution: "dedent@npm:1.5.3" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a + checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a languageName: node linkType: hard @@ -8757,9 +8731,9 @@ __metadata: linkType: hard "dompurify@npm:^3.0.5": - version: 3.0.11 - resolution: "dompurify@npm:3.0.11" - checksum: aefb86fbaa2cc6acda1a75ea918f69043689cb726f2932e5c1c3c85904255fd145230d66f0a9493ed27d64d035e990f3a767d99d73b1ae7c0b297782be230658 + version: 3.1.0 + resolution: "dompurify@npm:3.1.0" + checksum: 06fc76607cd076e394b2ea5479ab6f0407b8fedb6877ae95e94207b878365e5e1cd914055dacce152a5f419818afb8d4cd284b780246cf35363f0747c179a0ba languageName: node linkType: hard @@ -8867,20 +8841,20 @@ __metadata: linkType: hard "ejs@npm:^3.1.6": - version: 3.1.9 - resolution: "ejs@npm:3.1.9" + version: 3.1.10 + resolution: "ejs@npm:3.1.10" dependencies: jake: ^10.8.5 bin: ejs: bin/cli.js - checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f + checksum: ce90637e9c7538663ae023b8a7a380b2ef7cc4096de70be85abf5a3b9641912dde65353211d05e24d56b1f242d71185c6d00e02cb8860701d571786d92c71f05 languageName: node linkType: hard "electron-to-chromium@npm:^1.4.668": - version: 1.4.713 - resolution: "electron-to-chromium@npm:1.4.713" - checksum: cffeff470a73c47763463fdc8f58854544102b572afe417defca6f511fa88dbe7e0b1720f0e64cf0cf92053aa3b086f5de24899a68a12a346f6b9b74ff1c0768 + version: 1.4.736 + resolution: "electron-to-chromium@npm:1.4.736" + checksum: dcba6d43ffbc40e5d3decb3a0de67b9721a257fefde4eceac0d75202029c62ace7b377d217f49d1ba9cfbad61f89a14514e85a4de77b7205cee336f2e1f0baee languageName: node linkType: hard @@ -8994,11 +8968,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3": - version: 7.11.1 - resolution: "envinfo@npm:7.11.1" + version: 7.12.0 + resolution: "envinfo@npm:7.12.0" bin: envinfo: dist/cli.js - checksum: f3d38ab6bc62388466e86e2f5665f90f238ca349c81bb36b311d908cb5ca96650569b43b308c9dcb6725a222693f6c43a704794e74a68fb445ec5575a90ca05e + checksum: 4c83a55768cf8b7e553155c29e7fa7bbdb0fb2c1156208efc373fc030045c6aca5e8e642e96027d3eb0c752156922ea3fca6183d9e13f38507f0e02ec82c23a1 languageName: node linkType: hard @@ -9039,8 +9013,8 @@ __metadata: linkType: hard "es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2": - version: 1.23.2 - resolution: "es-abstract@npm:1.23.2" + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" dependencies: array-buffer-byte-length: ^1.0.1 arraybuffer.prototype.slice: ^1.0.3 @@ -9081,14 +9055,14 @@ __metadata: safe-regex-test: ^1.0.3 string.prototype.trim: ^1.2.9 string.prototype.trimend: ^1.0.8 - string.prototype.trimstart: ^1.0.7 + string.prototype.trimstart: ^1.0.8 typed-array-buffer: ^1.0.2 typed-array-byte-length: ^1.0.1 typed-array-byte-offset: ^1.0.2 - typed-array-length: ^1.0.5 + typed-array-length: ^1.0.6 unbox-primitive: ^1.0.2 which-typed-array: ^1.1.15 - checksum: cc6410cb58ba90e3f0f84d83297c372ca545017b94e50fd0020119e82b26f0dbf9885c72335f0063b93669393c505712c6fe82bef7ae4d3d29d770c0dbfb1340 + checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae languageName: node linkType: hard @@ -9148,9 +9122,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.4.2 - resolution: "es-module-lexer@npm:1.4.2" - checksum: f4cfb9e1227f63c786d1c861a086cad477d2b9b29128b343d20e34ae775341a62f62cea0119976a1db58908c99f50a469ef9f3ec0529de012c6d780b41456912 + version: 1.5.0 + resolution: "es-module-lexer@npm:1.5.0" + checksum: adbe0772701e226b4b853f758fd89c0bbfe8357ab93babde7b1cdb4f88c3a31460c908cbe578817e241d116cc4fcf569f7c6f29c4fbfa0aadb0def90f1ad4dd2 languageName: node linkType: hard @@ -9893,13 +9867,6 @@ __metadata: languageName: node linkType: hard -"exit-on-epipe@npm:~1.0.1": - version: 1.0.1 - resolution: "exit-on-epipe@npm:1.0.1" - checksum: e8ab4940416d19f311b3c9226e3725c6c4c6026fe682266ecc0ff33a455d585fe3e4ee757857c7bf1d0491b478cb232b8e395dfb438e65ac87317eda47304c32 - languageName: node - linkType: hard - "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -10583,17 +10550,17 @@ __metadata: linkType: hard "glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": - version: 10.3.10 - resolution: "glob@npm:10.3.10" + version: 10.3.12 + resolution: "glob@npm:10.3.12" dependencies: foreground-child: ^3.1.0 - jackspeak: ^2.3.5 + jackspeak: ^2.3.6 minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 + minipass: ^7.0.4 + path-scurry: ^1.10.2 bin: glob: dist/esm/bin.mjs - checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 + checksum: 2b0949d6363021aaa561b108ac317bf5a97271b8a5d7a5fac1a176e40e8068ecdcccc992f8a7e958593d501103ac06d673de92adc1efcbdab45edefe35f8d7c6 languageName: node linkType: hard @@ -11747,13 +11714,6 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:^5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c - languageName: node - linkType: hard - "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -12052,7 +12012,7 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": +"jackspeak@npm:^2.3.6": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" dependencies: @@ -12880,13 +12840,13 @@ __metadata: linkType: hard "katex@npm:^0.16.9": - version: 0.16.9 - resolution: "katex@npm:0.16.9" + version: 0.16.10 + resolution: "katex@npm:0.16.10" dependencies: commander: ^8.3.0 bin: katex: cli.js - checksum: 861194dfd4d86505e657f688fb73048d46ac498edafce71199502a35b03c0ecc35ba930c631be79c4a09d90a0d23476673cd52f6bc367c7a161854d64005fa95 + checksum: 108e9d810e17840c43eef8d46171096f4cc97852bfd1e2dd1890d9b3435846816e3e98678a31d38bd064eb97eea83b18ff224cb65d5f9511b54ce7ff4359b591 languageName: node linkType: hard @@ -13417,6 +13377,8 @@ __metadata: "@fullcalendar/timeline": ^6.1.6 "@types/react": ^18.2.45 "@types/react-dom": ^18.2.18 + agora-rtc-sdk-ng: ^4.20.2 + agora-rtm-sdk: ^1.5.1 big.js: ^6.2.1 echarts-extension-gmap: ^1.6.0 echarts-wordcloud: ^2.1.0 @@ -13682,9 +13644,6 @@ __metadata: "@types/regenerator-runtime": ^0.13.1 "@types/uuid": ^8.3.4 "@vitejs/plugin-react": ^2.2.0 - agora-access-token: ^2.0.4 - agora-rtc-sdk-ng: ^4.20.2 - agora-rtm-sdk: ^1.5.1 antd: 5.13.2 axios: ^1.6.2 buffer: ^6.0.3 @@ -13774,7 +13733,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.2.0 resolution: "lru-cache@npm:10.2.0" checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db @@ -13859,11 +13818,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.1, magic-string@npm:^0.30.2, magic-string@npm:^0.30.3": - version: 0.30.8 - resolution: "magic-string@npm:0.30.8" + version: 0.30.9 + resolution: "magic-string@npm:0.30.9" dependencies: "@jridgewell/sourcemap-codec": ^1.4.15 - checksum: 79922f4500d3932bb587a04440d98d040170decf432edc0f91c0bf8d41db16d364189bf800e334170ac740918feda62cd39dcc170c337dc18050cfcf00a5f232 + checksum: a97b9a706b39e9569781dcb662b15ab085ca3af8b916cd69d8485e8565108917c17e4eb03b6b1013389387d827bb3025711ebeafe237f742bc95a90708416147 languageName: node linkType: hard @@ -13931,11 +13890,11 @@ __metadata: linkType: hard "markdown-to-jsx@npm:^7.4.1": - version: 7.4.4 - resolution: "markdown-to-jsx@npm:7.4.4" + version: 7.4.7 + resolution: "markdown-to-jsx@npm:7.4.7" peerDependencies: react: ">= 0.14.0" - checksum: a901e68a4cf258095133b659a52b35dc7b8025706d74cb363831c664cf0c948d06098b6327dd956f0f429e31d8c7f2a272a39d16c9b370072d1012557f2ade41 + checksum: bb8a696c8a95dd67ac1eb44255f31cf17e60b6c2ff03bfcd51b5e28da17856c57d7a16da59fda7f3a4eedb01d7e92eeef57a10ff3abd5431e5c80059d4565016 languageName: node linkType: hard @@ -14143,11 +14102,11 @@ __metadata: linkType: hard "memfs@npm:^4.6.0": - version: 4.8.0 - resolution: "memfs@npm:4.8.0" + version: 4.8.2 + resolution: "memfs@npm:4.8.2" dependencies: tslib: ^2.0.0 - checksum: ac371aad4eb51d1ffaec497e9557d8892cfc910a5bc4fd3e32749c002dca71665e8cf5fe91cc381fff4f38df1df53750ea446cb522eff39f2c59dc5d7fafb14d + checksum: ffbc79e89542c57ccdd83f906252313a8354fb050bab6500728a60a321ca2f090e70145c324ff1540b27272a34ff5049b2790e7d5a9af9ec4505fffeca19db8f languageName: node linkType: hard @@ -14672,11 +14631,11 @@ __metadata: linkType: hard "minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" + version: 9.0.4 + resolution: "minimatch@npm:9.0.4" dependencies: brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 languageName: node linkType: hard @@ -14754,7 +14713,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4": version: 7.0.4 resolution: "minipass@npm:7.0.4" checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 @@ -14880,6 +14839,13 @@ __metadata: languageName: node linkType: hard +"nano-memoize@npm:^3.0.16": + version: 3.0.16 + resolution: "nano-memoize@npm:3.0.16" + checksum: b3ed15450f842eeb08fdf434f3ebbfd5a7da07124f1c77428116c1b88eb42a8f973289d7b17fbd20eec3356b39de3d37d574167e4e0a00977d06a2e616a1bea0 + languageName: node + linkType: hard + "nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" @@ -14968,8 +14934,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 10.1.0 + resolution: "node-gyp@npm:10.1.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 @@ -14983,7 +14949,7 @@ __metadata: which: ^4.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 60a74e66d364903ce02049966303a57f898521d139860ac82744a5fdd9f7b7b3b61f75f284f3bfe6e6add3b8f1871ce305a1d41f775c7482de837b50c792223f + checksum: 72e2ab4b23fc32007a763da94018f58069fc0694bf36115d49a2b195c8831e12cf5dd1e7a3718fa85c06969aedf8fc126722d3b672ec1cb27e06ed33caee3c60 languageName: node linkType: hard @@ -15071,11 +15037,11 @@ __metadata: linkType: hard "numbro@npm:^2.3.6": - version: 2.4.0 - resolution: "numbro@npm:2.4.0" + version: 2.5.0 + resolution: "numbro@npm:2.5.0" dependencies: bignumber.js: ^8 || ^9 - checksum: 25400b2dea487ab9033964e15ea2027b4dc32da21f473c04f68dfc23a96ecb9d5c0684af4e817454bced02b69ade790a379307af5c5820d26fb6abc65cb1ffe1 + checksum: 0d0b228eeb6525c4557c273bb860f1425af53289f3be054ad768576ed83060552ae6e14a0d47debb8c7ce9ecf25685e34f1fd30ead7275948af85f94ecdca595 languageName: node linkType: hard @@ -15189,12 +15155,13 @@ __metadata: linkType: hard "object.hasown@npm:^1.1.3": - version: 1.1.3 - resolution: "object.hasown@npm:1.1.3" + version: 1.1.4 + resolution: "object.hasown@npm:1.1.4" dependencies: - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: 76bc17356f6124542fb47e5d0e78d531eafa4bba3fc2d6fc4b1a8ce8b6878912366c0d99f37ce5c84ada8fd79df7aa6ea1214fddf721f43e093ad2df51f27da1 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + checksum: bc46eb5ca22106fcd07aab1411508c2c68b7565fe8fb272f166fb9bf203972e8b5c86a5a4b2c86204beead0626a7a4119d32cefbaf7c5dd57b400bf9e6363cb6 languageName: node linkType: hard @@ -15562,13 +15529,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" +"path-scurry@npm:^1.10.2": + version: 1.10.2 + resolution: "path-scurry@npm:1.10.2" dependencies: - lru-cache: ^9.1.1 || ^10.0.0 + lru-cache: ^10.2.0 minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + checksum: 6739b4290f7d1a949c61c758b481c07ac7d1a841964c68cf5e1fa153d7e18cbde4872b37aadf9c5173c800d627f219c47945859159de36c977dd82419997b9b8 languageName: node linkType: hard @@ -15705,36 +15672,36 @@ __metadata: languageName: node linkType: hard -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" +"postcss-modules-extract-imports@npm:^3.1.0": + version: 3.1.0 + resolution: "postcss-modules-extract-imports@npm:3.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 + checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.4": - version: 4.0.4 - resolution: "postcss-modules-local-by-default@npm:4.0.4" +"postcss-modules-local-by-default@npm:^4.0.5": + version: 4.0.5 + resolution: "postcss-modules-local-by-default@npm:4.0.5" dependencies: icss-utils: ^5.0.0 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 - checksum: 578b955b0773147890caa88c30b10dfc849c5b1412a47ad51751890dba16fca9528c3ab00a19b186a8c2c150c2d08e2ce64d3d907800afee1f37c6d38252e365 + checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 languageName: node linkType: hard -"postcss-modules-scope@npm:^3.1.1": - version: 3.1.1 - resolution: "postcss-modules-scope@npm:3.1.1" +"postcss-modules-scope@npm:^3.2.0": + version: 3.2.0 + resolution: "postcss-modules-scope@npm:3.2.0" dependencies: postcss-selector-parser: ^6.0.4 peerDependencies: postcss: ^8.1.0 - checksum: 9e9d23abb0babc7fa243be65704d72a5a9ceb2bded4dbaef96a88210d468b03c8c3158c197f4e22300c851f08c6fdddd6ebe65f44e4c34448b45b8a2e063a16d + checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae languageName: node linkType: hard @@ -15777,7 +15744,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.27, postcss@npm:^8.4.33, postcss@npm:^8.4.36": +"postcss@npm:^8.4.27, postcss@npm:^8.4.33, postcss@npm:^8.4.38": version: 8.4.38 resolution: "postcss@npm:8.4.38" dependencies: @@ -15840,15 +15807,6 @@ __metadata: languageName: node linkType: hard -"printj@npm:~1.1.0": - version: 1.1.2 - resolution: "printj@npm:1.1.2" - bin: - printj: ./bin/printj.njs - checksum: 1c0c66844545415e339356ad62009cdc467819817b1e0341aba428087a1414d46b84089edb4e77ef24705829f8aae6349724b9c7bd89d8690302b2de7a89b315 - languageName: node - linkType: hard - "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" @@ -15911,9 +15869,9 @@ __metadata: linkType: hard "property-information@npm:^6.0.0": - version: 6.4.1 - resolution: "property-information@npm:6.4.1" - checksum: d9eece5f14b6fea9e6a1fa65fba88554956a58825eb9a5c8327bffee06bcc265117eaeae901871e8e8a5caec8d5e05ce39ab6872d5cef3b49a6f07815b6ef285 + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 6e55664e2f64083b715011e5bafaa1e694faf36986c235b0907e95d09259cc37c38382e3cc94a4c3f56366e05336443db12c8a0f0968a8c0a1b1416eebfc8f53 languageName: node linkType: hard @@ -16401,8 +16359,8 @@ __metadata: linkType: hard "rc-picker@npm:~3.14.6": - version: 3.14.6 - resolution: "rc-picker@npm:3.14.6" + version: 3.14.7 + resolution: "rc-picker@npm:3.14.7" dependencies: "@babel/runtime": ^7.10.1 "@rc-component/trigger": ^1.5.0 @@ -16424,7 +16382,7 @@ __metadata: optional: true moment: optional: true - checksum: e87914c6ffbbcf760b56080d8bf504cf9323885378a6769abcf9a62bb1325f7a9d534c065a683ab1d30269a26a81ce11a008d01aacc800359e3c7a4fbda66e17 + checksum: c6e8cd6f330dd05c736b59bdfae599a76068bf2a6ab4afe121b39f53653622e40929032fa3381ad59152b308a6d5fafdeecffe580bb4c9c3413776203fc99188 languageName: node linkType: hard @@ -16760,7 +16718,7 @@ __metadata: languageName: node linkType: hard -"react-fast-compare@npm:^3.0.1, react-fast-compare@npm:^3.1.1": +"react-fast-compare@npm:^3.0.1, react-fast-compare@npm:^3.1.1, react-fast-compare@npm:^3.2.2": version: 3.2.2 resolution: "react-fast-compare@npm:3.2.2" checksum: 2071415b4f76a3e6b55c84611c4d24dcb12ffc85811a2840b5a3f1ff2d1a99be1020d9437ee7c6e024c9f4cbb84ceb35e48cf84f28fcb00265ad2dfdd3947704 @@ -16857,11 +16815,10 @@ __metadata: linkType: hard "react-joyride@npm:^2.4.0": - version: 2.8.0 - resolution: "react-joyride@npm:2.8.0" + version: 2.8.1 + resolution: "react-joyride@npm:2.8.1" dependencies: "@gilbarbara/deep-equal": ^0.3.1 - "@gilbarbara/helpers": ^0.9.2 deep-diff: ^1.0.2 deepmerge: ^4.3.1 is-lite: ^1.2.1 @@ -16871,11 +16828,11 @@ __metadata: scroll: ^3.0.1 scrollparent: ^2.1.0 tree-changes: ^0.11.2 - type-fest: ^4.12.0 + type-fest: ^4.15.0 peerDependencies: react: 15 - 18 react-dom: 15 - 18 - checksum: b514fca2f3dad79dc7b3f2802b0f8c16230102a196b7734430682ee263a73c3fab2d4e8ebd2763f9638d8150decd474cbacb3b2644883049dc2f8df5bc88012c + checksum: 555394e3f9f2cd91602a8f639c28a9f881d2c8ea82ad93054fb9548cf407da3e17c23e4fc44bca04b4d0acd9955cb3886a61c5f4ebdcee6c512737272a27b38e languageName: node linkType: hard @@ -16928,8 +16885,8 @@ __metadata: linkType: hard "react-player@npm:^2.11.0": - version: 2.15.1 - resolution: "react-player@npm:2.15.1" + version: 2.16.0 + resolution: "react-player@npm:2.16.0" dependencies: deepmerge: ^4.0.0 load-script: ^1.0.0 @@ -16938,7 +16895,7 @@ __metadata: react-fast-compare: ^3.0.1 peerDependencies: react: ">=16.6.0" - checksum: 8e065dd7effcbec0bb770393b676145aa8bd46e4d2f9c46b1c15f5c1dff3f1a334f619aa3cc8525f82e6772b773fb9e96745d5e835b5264cd9ce1166ed9e1492 + checksum: 9cc78a6099fdf06bbb2e1db75aa57461fb152eb6207a00e6e026dde0675b6f4ad02a45cab7b6c18a9f19e001bf9695a5be0cbe7606eca57a0af501ced717fbe9 languageName: node linkType: hard @@ -17955,22 +17912,25 @@ __metadata: linkType: hard "rollup@npm:^4.13.0": - version: 4.13.0 - resolution: "rollup@npm:4.13.0" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.13.0 - "@rollup/rollup-android-arm64": 4.13.0 - "@rollup/rollup-darwin-arm64": 4.13.0 - "@rollup/rollup-darwin-x64": 4.13.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.13.0 - "@rollup/rollup-linux-arm64-gnu": 4.13.0 - "@rollup/rollup-linux-arm64-musl": 4.13.0 - "@rollup/rollup-linux-riscv64-gnu": 4.13.0 - "@rollup/rollup-linux-x64-gnu": 4.13.0 - "@rollup/rollup-linux-x64-musl": 4.13.0 - "@rollup/rollup-win32-arm64-msvc": 4.13.0 - "@rollup/rollup-win32-ia32-msvc": 4.13.0 - "@rollup/rollup-win32-x64-msvc": 4.13.0 + version: 4.14.3 + resolution: "rollup@npm:4.14.3" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.14.3 + "@rollup/rollup-android-arm64": 4.14.3 + "@rollup/rollup-darwin-arm64": 4.14.3 + "@rollup/rollup-darwin-x64": 4.14.3 + "@rollup/rollup-linux-arm-gnueabihf": 4.14.3 + "@rollup/rollup-linux-arm-musleabihf": 4.14.3 + "@rollup/rollup-linux-arm64-gnu": 4.14.3 + "@rollup/rollup-linux-arm64-musl": 4.14.3 + "@rollup/rollup-linux-powerpc64le-gnu": 4.14.3 + "@rollup/rollup-linux-riscv64-gnu": 4.14.3 + "@rollup/rollup-linux-s390x-gnu": 4.14.3 + "@rollup/rollup-linux-x64-gnu": 4.14.3 + "@rollup/rollup-linux-x64-musl": 4.14.3 + "@rollup/rollup-win32-arm64-msvc": 4.14.3 + "@rollup/rollup-win32-ia32-msvc": 4.14.3 + "@rollup/rollup-win32-x64-msvc": 4.14.3 "@types/estree": 1.0.5 fsevents: ~2.3.2 dependenciesMeta: @@ -17984,12 +17944,18 @@ __metadata: optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true "@rollup/rollup-linux-arm64-gnu": optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true "@rollup/rollup-linux-x64-gnu": optional: true "@rollup/rollup-linux-x64-musl": @@ -18004,7 +17970,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: c2c35bee0a71ceb0df37c170c2b73a500bf9ebdffb747487d77831348603d50dcfcdd9d0a937362d3a87edda559c9d1e017fba2d75f05f0c594634d9b8dde9a4 + checksum: f5077037e8514e330db1451a92bf6d9d15b8634698b2e60f56d8d7f30df11cdacfcd1b350a1598ed6516383b5ed2bf3e5a0685e72f81bb2fdb4e630491d09b67 languageName: node linkType: hard @@ -18569,24 +18535,24 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.3 + resolution: "socks-proxy-agent@npm:8.0.3" dependencies: - agent-base: ^7.0.2 + agent-base: ^7.1.1 debug: ^4.3.4 socks: ^2.7.1 - checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d + checksum: 8fab38821c327c190c28f1658087bc520eb065d55bc07b4a0fdf8d1e0e7ad5d115abbb22a95f94f944723ea969dd771ad6416b1e3cde9060c4c71f705c8b85c5 languageName: node linkType: hard "socks@npm:^2.7.1": - version: 2.8.1 - resolution: "socks@npm:2.8.1" + version: 2.8.3 + resolution: "socks@npm:2.8.3" dependencies: ip-address: ^9.0.5 smart-buffer: ^4.2.0 - checksum: 29586d42e9c36c5016632b2bcb6595e3adfbcb694b3a652c51bc8741b079c5ec37bdd5675a1a89a1620078c8137208294991fabb50786f92d47759a725b2b62e + checksum: 7a6b7f6eedf7482b9e4597d9a20e09505824208006ea8f2c49b71657427f3c137ca2ae662089baa73e1971c62322d535d9d0cf1c9235cf6f55e315c18203eadd languageName: node linkType: hard @@ -18938,14 +18904,14 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimstart@npm:1.0.7" +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: 13d0c2cb0d5ff9e926fa0bec559158b062eed2b68cd5be777ffba782c96b2b492944e47057274e064549b94dd27cf81f48b27a31fee8af5b574cff253e7eb613 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96 languageName: node linkType: hard @@ -19203,8 +19169,8 @@ __metadata: linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.0 - resolution: "tar@npm:6.2.0" + version: 6.2.1 + resolution: "tar@npm:6.2.1" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 @@ -19212,7 +19178,7 @@ __metadata: minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c + checksum: f1322768c9741a25356c11373bce918483f40fa9a25c69c59410c8a1247632487edef5fe76c5f12ac51a6356d2f1829e96d2bc34098668a2fc34d76050ac2b6c languageName: node linkType: hard @@ -19256,8 +19222,8 @@ __metadata: linkType: hard "terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.26.0": - version: 5.29.2 - resolution: "terser@npm:5.29.2" + version: 5.30.3 + resolution: "terser@npm:5.30.3" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -19265,7 +19231,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 2310d04e530903ed4da6168c4c90ab65965c5f1f8919733772119ff560e9e9be2def070c9659f7d96f2e28489c4378241c4cef1917f05b9524587436fdd5a802 + checksum: 8c680ed32a948f806fade0969c52aab94b6de174e4a78610f5d3abf9993b161eb19b88b2ceadff09b153858727c02deb6709635e4bfbd519f67d54e0394e2983 languageName: node linkType: hard @@ -19687,10 +19653,10 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.1.0, type-fest@npm:^4.12.0": - version: 4.13.1 - resolution: "type-fest@npm:4.13.1" - checksum: 53959d57d64910a493ec4afb2e98149b6deac73ede4774af15335e7016527524646acd45af1738a0fe7b654c3f655ca6bfe88cc9adc9e8f859548356c6e5a0ec +"type-fest@npm:^4.15.0": + version: 4.15.0 + resolution: "type-fest@npm:4.15.0" + checksum: 8da2b8c4556a6bbafd79c0d50b4f3ba6526942aead9c1687038980276eee72b95a1d195bc6f1408e0ebf96ebfbe9d33436b506b35ed4b68f14f8b3ff56753850 languageName: node linkType: hard @@ -19742,9 +19708,9 @@ __metadata: languageName: node linkType: hard -"typed-array-length@npm:^1.0.5": - version: 1.0.5 - resolution: "typed-array-length@npm:1.0.5" +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" dependencies: call-bind: ^1.0.7 for-each: ^0.3.3 @@ -19752,7 +19718,7 @@ __metadata: has-proto: ^1.0.3 is-typed-array: ^1.1.13 possible-typed-array-names: ^1.0.0 - checksum: 82f5b666155cff1b345a1f3ab018d3f7667990f525435e4c8448cc094ab0f8ea283bb7cbde4d7bc82ea0b9b1072523bf31e86620d72615951d7fa9ccb4f42dfa + checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c languageName: node linkType: hard @@ -20420,8 +20386,8 @@ __metadata: linkType: hard "vite@npm:^4.5.2": - version: 4.5.2 - resolution: "vite@npm:4.5.2" + version: 4.5.3 + resolution: "vite@npm:4.5.3" dependencies: esbuild: ^0.18.10 fsevents: ~2.3.2 @@ -20455,17 +20421,17 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 9d1f84f703c2660aced34deee7f309278ed368880f66e9570ac115c793d91f7fffb80ab19c602b3c8bc1341fe23437d86a3fcca2a9ef82f7ef0cdac5a40d0c86 + checksum: fd3f512ce48ca2a1fe60ad0376283b832de9272725fdbc65064ae9248f792de87b0f27a89573115e23e26784800daca329f8a9234d298ba6f60e808a9c63883c languageName: node linkType: hard "vite@npm:^5.0.12": - version: 5.2.2 - resolution: "vite@npm:5.2.2" + version: 5.2.8 + resolution: "vite@npm:5.2.8" dependencies: esbuild: ^0.20.1 fsevents: ~2.3.3 - postcss: ^8.4.36 + postcss: ^8.4.38 rollup: ^4.13.0 peerDependencies: "@types/node": ^18.0.0 || >=20.0.0 @@ -20495,7 +20461,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: ef20480a0d4145f05378d33d295917995679c75205c19872346f18ad847cca8ac90794b7cfb280f787c0db60a90afcc1ae2c2e5ccedfe4751fb4a3c0ff07be69 + checksum: c0a77271b548fce443af59a383939924ffcba8e6d0ba6ecb2e481d0ec2318465d2116ce9317599c448e6d6d8af11a67b8efc5b52cb1deab37d2e83311ac4f1b5 languageName: node linkType: hard @@ -20680,8 +20646,8 @@ __metadata: linkType: hard "webpack-bundle-analyzer@npm:^4.10.1": - version: 4.10.1 - resolution: "webpack-bundle-analyzer@npm:4.10.1" + version: 4.10.2 + resolution: "webpack-bundle-analyzer@npm:4.10.2" dependencies: "@discoveryjs/json-ext": 0.5.7 acorn: ^8.0.4 @@ -20691,14 +20657,13 @@ __metadata: escape-string-regexp: ^4.0.0 gzip-size: ^6.0.0 html-escaper: ^2.0.2 - is-plain-object: ^5.0.0 opener: ^1.5.2 picocolors: ^1.0.0 sirv: ^2.0.3 ws: ^7.3.1 bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: 77f48f10a493b1cc95674526472978a2de32412ddbf556bd3903738f14890611426f19477352993efe5a9fd6ca16711eb912d986f2221b17ba6eeca1b6f71fb6 + checksum: 4f0275e7d87bb6203a618ca5d2d4953943979d986fa2b91be1bf1ad0bcd22bec13398803273d11699f9fbcf106896311208a72d63fe5f8a47b687a226e598dc1 languageName: node linkType: hard @@ -20735,8 +20700,8 @@ __metadata: linkType: hard "webpack-dev-middleware@npm:^7.1.0": - version: 7.1.1 - resolution: "webpack-dev-middleware@npm:7.1.1" + version: 7.2.1 + resolution: "webpack-dev-middleware@npm:7.2.1" dependencies: colorette: ^2.0.10 memfs: ^4.6.0 @@ -20749,7 +20714,7 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: 54b748ba354649bb5d80862f8828a05e75c0037a64ef3228722ebff1a6a9d5498467edc1a9fe210ed0ff8f37b2d32d2271273d8b6576f8249371881f14a309ad + checksum: bb8c75f7ceabc13ee2c3bc9648190e05a0a8c6d40b940ef72b09ea858a63d16bcb434b49995f1025125a1c3a1c8d40274beb5d26ef2fb1458b19e7f6fe3a91fe languageName: node linkType: hard From 7292e25a1db0f7d8d5e2f9cc38d0873f04297f8d Mon Sep 17 00:00:00 2001 From: freddysundowner Date: Sat, 20 Apr 2024 12:47:27 +0300 Subject: [PATCH 10/16] fixed meeting bug --- .../lowcoder/public/lowcoder-comps-0.0.29.tgz | Bin 0 -> 2775785 bytes .../lowcoder/public/package/02596f6c.js | 1579 + .../lowcoder/public/package/0738aeda.js | 208 + .../lowcoder/public/package/08856db2.js | 162418 +++++++++++++++ .../lowcoder/public/package/0933b788.js | 818 + .../lowcoder/public/package/0c155f84.js | 455 + .../lowcoder/public/package/0ddaa2bc.js | 796 + .../lowcoder/public/package/0fddf2f2.js | 64 + .../lowcoder/public/package/116e77a5.js | 927 + .../lowcoder/public/package/18068d52.js | 1127 + .../lowcoder/public/package/1a7d2804.js | 220 + .../lowcoder/public/package/256b619e.js | 92 + .../lowcoder/public/package/289514c9.js | 8 + .../lowcoder/public/package/2d256667.js | 2501 + .../lowcoder/public/package/2ff2c7a6.js | 6 + .../lowcoder/public/package/2ff7471d.js | 9 + .../lowcoder/public/package/32cceee9.js | 1276 + .../lowcoder/public/package/35fb67fd.js | 19104 ++ .../lowcoder/public/package/4504d077.js | 881 + .../lowcoder/public/package/47848c42.js | 11636 ++ .../lowcoder/public/package/519a1dac.js | 1269 + .../lowcoder/public/package/56525b94.js | 915 + .../lowcoder/public/package/5f94a727.js | 819 + .../lowcoder/public/package/60619617.js | 804 + .../lowcoder/public/package/62954dbd.js | 769 + .../lowcoder/public/package/666097a3.js | 1536 + .../lowcoder/public/package/691304fa.js | 1102 + .../lowcoder/public/package/728928d2.js | 1284 + .../lowcoder/public/package/79929275.js | 25 + .../lowcoder/public/package/7ca39633.js | 391 + .../lowcoder/public/package/85051678.js | 5 + .../lowcoder/public/package/888e22ae.js | 960 + .../lowcoder/public/package/8de27e61.js | 48428 +++++ .../lowcoder/public/package/8e8be6e8.js | 34 + .../lowcoder/public/package/92e85b65.js | 65 + .../lowcoder/public/package/cb6c34e7.js | 268 + .../lowcoder/public/package/dcbd4e73.js | 319 + .../lowcoder/public/package/e158889d.js | 16582 ++ .../lowcoder/public/package/e1e81803.js | 505 + .../lowcoder/public/package/e934239f.js | 2284 + .../lowcoder/public/package/eb460319.js | 86 + .../lowcoder/public/package/f434312e.js | 1089 + .../lowcoder/public/package/f69b998c.js | 2967 + .../lowcoder/public/package/f9637058.js | 16 + .../lowcoder/public/package/f9d0127a.js | 447 + .../lowcoder/public/package/fbf3e70e.js | 237 + .../public/package/icons/icon-chart.svg | 15 + .../package/icons/icon-comp-calendar.svg | 22 + .../public/package/icons/mermaidchart.svg | 18 + .../packages/lowcoder/public/package/index.js | 5 + .../lowcoder/public/package/package.json | 108 + .../comps/comps/layout/mobileTabLayout.tsx | 2 +- .../lowcoder/src/comps/comps/tabs/index.tsx | 2 +- client/packages/lowcoder/src/index.sdk.ts | 2 + 54 files changed, 287503 insertions(+), 2 deletions(-) create mode 100644 client/packages/lowcoder/public/lowcoder-comps-0.0.29.tgz create mode 100644 client/packages/lowcoder/public/package/02596f6c.js create mode 100644 client/packages/lowcoder/public/package/0738aeda.js create mode 100644 client/packages/lowcoder/public/package/08856db2.js create mode 100644 client/packages/lowcoder/public/package/0933b788.js create mode 100644 client/packages/lowcoder/public/package/0c155f84.js create mode 100644 client/packages/lowcoder/public/package/0ddaa2bc.js create mode 100644 client/packages/lowcoder/public/package/0fddf2f2.js create mode 100644 client/packages/lowcoder/public/package/116e77a5.js create mode 100644 client/packages/lowcoder/public/package/18068d52.js create mode 100644 client/packages/lowcoder/public/package/1a7d2804.js create mode 100644 client/packages/lowcoder/public/package/256b619e.js create mode 100644 client/packages/lowcoder/public/package/289514c9.js create mode 100644 client/packages/lowcoder/public/package/2d256667.js create mode 100644 client/packages/lowcoder/public/package/2ff2c7a6.js create mode 100644 client/packages/lowcoder/public/package/2ff7471d.js create mode 100644 client/packages/lowcoder/public/package/32cceee9.js create mode 100644 client/packages/lowcoder/public/package/35fb67fd.js create mode 100644 client/packages/lowcoder/public/package/4504d077.js create mode 100644 client/packages/lowcoder/public/package/47848c42.js create mode 100644 client/packages/lowcoder/public/package/519a1dac.js create mode 100644 client/packages/lowcoder/public/package/56525b94.js create mode 100644 client/packages/lowcoder/public/package/5f94a727.js create mode 100644 client/packages/lowcoder/public/package/60619617.js create mode 100644 client/packages/lowcoder/public/package/62954dbd.js create mode 100644 client/packages/lowcoder/public/package/666097a3.js create mode 100644 client/packages/lowcoder/public/package/691304fa.js create mode 100644 client/packages/lowcoder/public/package/728928d2.js create mode 100644 client/packages/lowcoder/public/package/79929275.js create mode 100644 client/packages/lowcoder/public/package/7ca39633.js create mode 100644 client/packages/lowcoder/public/package/85051678.js create mode 100644 client/packages/lowcoder/public/package/888e22ae.js create mode 100644 client/packages/lowcoder/public/package/8de27e61.js create mode 100644 client/packages/lowcoder/public/package/8e8be6e8.js create mode 100644 client/packages/lowcoder/public/package/92e85b65.js create mode 100644 client/packages/lowcoder/public/package/cb6c34e7.js create mode 100644 client/packages/lowcoder/public/package/dcbd4e73.js create mode 100644 client/packages/lowcoder/public/package/e158889d.js create mode 100644 client/packages/lowcoder/public/package/e1e81803.js create mode 100644 client/packages/lowcoder/public/package/e934239f.js create mode 100644 client/packages/lowcoder/public/package/eb460319.js create mode 100644 client/packages/lowcoder/public/package/f434312e.js create mode 100644 client/packages/lowcoder/public/package/f69b998c.js create mode 100644 client/packages/lowcoder/public/package/f9637058.js create mode 100644 client/packages/lowcoder/public/package/f9d0127a.js create mode 100644 client/packages/lowcoder/public/package/fbf3e70e.js create mode 100644 client/packages/lowcoder/public/package/icons/icon-chart.svg create mode 100644 client/packages/lowcoder/public/package/icons/icon-comp-calendar.svg create mode 100644 client/packages/lowcoder/public/package/icons/mermaidchart.svg create mode 100644 client/packages/lowcoder/public/package/index.js create mode 100644 client/packages/lowcoder/public/package/package.json diff --git a/client/packages/lowcoder/public/lowcoder-comps-0.0.29.tgz b/client/packages/lowcoder/public/lowcoder-comps-0.0.29.tgz new file mode 100644 index 0000000000000000000000000000000000000000..179fd169fa7f10238806d11991f55d904353543b GIT binary patch literal 2775785 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

r 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 DgZKq=wBwm_i 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

9@Pvrw5(Glm5p3QE&HfyT9ITZ@`W7 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±*X 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%0D5M}kqQQVW+9or^-&URQNLh#%C8=jP2 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%0AM>+v9^^_ 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%0DM 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�Pc4EHG=w<9#pO7Yi-qC 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%0DB=wOa7uJ3j=;6!Qe5dEl`Glo&v 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

6)-7GA02KSx|OXbXYfdH?nhYAo}Ox+ca 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

  • _t-0T~TRD4X0}G~quYr_L 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

    KdZgq_b!w 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

    n_*K4ybr) z=(8ke5w(~UJ6>OFwSHi%e;daJ+xl4+20&Z=J`#cAI%Wsh&c(zsx}Mg*r8*}=$U&)5iZcQ6z%(!F1F*OFGr1{9c3&X0*7;QoR7=+ z-|X1UVU30zazr0boCCI|_o4U?J9`fc$RajYh#SjRsWGljC^3mF@*&31p;|a{QQXgT zbM%^cL<*2={|%BabaN43qSU&MnPeUDS6%$o5Py~H*3Yh`w(=ZNg)|tP&0^T!GD)ve zl-GLH-pq6!-gUh1rwy=laIzqgF`LId@Fd9?=HVV2Y6k8ntCKV5%(ZvuL;>n|E zkWr)sqade(ItsQG3PzE3F$%IZ?c>s{<$&G^kisp+aHK;i? z<~CWNonAzWsYrLdAUhzE6cq|lj*942e`3XAe^;y3p(wIvFh)ocVm%sy6hq6SzaP-2 zonc6n*5!&C5o8Do1QqQa2ThNiY|ljfzN8D~MN(<&S?jpeWT}|+gJF&knI$^O-1)M{ z>IA<*?IGLflLTn9Q~fK+b2k{4K)=ytzUMWJgBl4O+J}_RhBcZ-=nJ7{lbJ9(B0hvC zPbmy`P_ByK0rT=|d}%NeccqQIZ^dH_XA(6UJRZr0G>UQDH0@jC0DfEvYi&iz2p0Yh~s%e~m^nidPl0K8+P6=Mq`WlRS@Ls?2xF6Mj=X zUQd*e#V&gl1BR->sdB3il`5KbL?8pd_2Lyt;L?i8g0Cpi!HplsyS4}|@{+Wj85hO$ zdXVfM5)N0ePTbWhB|L>EOWnw1`pE47*OS6GMZWX8YZ>dvPlw`#k_2u2vX|nqD`O=R zI1=ZATNQGcAW54=Fh*P7C{qu$EnkTAXblysUU0QQz@6UsGm-#pkCY4PS8Uk2HA7nG zTR74VRaQB_GE`jak?x^}lUN0D+)MEyVN9sng>cN2lDOZNF_*Y4#{*zSLKyw*}-(D z3m=?3ip>0Y%7-!!1&Ow05-sI43oXuIuAccS3YJIf zx{xyhYAKnGsYjB@arH4S?KyUpp{dR^<;5Qy7i)y+b)%kn#xhKUMg-1idBV=oTyPWAu(#-8~Tt( zx(7_JmGk6LpP$u6Cc9ji2bNH`iuC==+GXhJjBhJD0y(vvh^Qn+#++_8Vq9P3f|$zvC}H?tDE zff4Sdx405Q^-7z^w%%N#uV0bh8@3PcE@gi7yEe3yzp0OL?6M1i8(qdN3A%(jYA55DtaY_^)jHD zu|hsX1;>?2!JzaAGqOySZ$B5vf`L!ShZ$#8d@Wz%reX~Do9$vLv4%T+$l0I933*jb zrvW)#tvFo-w@X}s*uBMB7G9a(W|WjlHU*~#1&#!YmLR`C{5I-k zx!%~yaljf1WJ_8m9{Fnz^6L)S-VZ90n5EEwo^I$&4?UnW)>ApS6c(4vXDqU76Zrc2 zwbnkrY#bOw9Ez1iAPQ>O=MgVKgdnNk~s zalEaR>9t#))5{_g(D2M=j#l4xcy6UtMOvUHRFTO1;2X^D>d+TT(85|LFSjsueZZO_ zGf(LwATz=wJHzmOh@=Wb>`cbr^SMb%UYKDEH|Ds@t0ZPz*99!df)hU)LG$hmQ z&tL@b$COB#f~2ABrJtNmdX(6RIRca$J@{@rzWJ@VdyTTCZ`l*B6{m1g;+SApp-Uwj zr4l*2<=VvSnYdD-6~YF1*$#O@Nose;hVrQLESu5@%^IDwgKC5+%%*80T^OzU_6*R| z>nxl8MKeb;BqDmS5L;o7N6@$X=--$eWtWn!McA?w3Opr=TtvDSfzA>bC}|p^`lvy- zKASg}+Btaz$XhN5^;%+WS&LUBiOVNJXFBk2_15q>e}r8K zM3LC|nq9Oy>8Eh|Zw|u=_V58R6JvN~4LwPjAg4ajf{u2yefgc^T$ym1M%w1D^03=G z(l~huWf}OBr!=g3LLPsCSx3@CGCiUQc@-vMZ~bkFL$x5;t#ByN5afVnB-S~a)=2|4 z3w_Qr))0L-mjYwS`}*cBot&?e%C{k%F#;;vVU%EJIk`r-i_*h~g_*}C!>&jCvRzpo z3s1);1!nb>SF0EYD&F{%8OT9J=GT;`Iu$-7v5>?EfiwLBa4?9bfz%9Ztuv+zw+dmB zU?+t=1ClDIzX;{1ziCV9pHkp!;JMl0gC&eKiUC zBQGWmO%gwhRC#?KGo&b4^yJEmE;jK8uT7vkMlq4ev+%^+v7NFTT5hotkn2~Jz);fK zvvzlFC@T&2SktHhJXC8)MBY>kK9%tDTIV-|8)K%zGt;xVvCM{XY3IJR$iXl!H@ z-}TMjyhP713u!eWaQT|IY*XqIceXn8;$KZ(2CI=rtNqL)N8f2qX9br5`P5c$>eKwX zm6Ao4*^I93wtn7du59nf@a{Er5sk9#?CHm*Mzon?p};STKFz2&a&i0jR@Hf?kHn-c zqWA%wAIZvQW3QC<+bf~{_HuP+Y6V%iH<6HBg^t>@6`nAHovo=x2nh?Q5btJK5K)a5 z0o=`D(AW{VF||`m9CakW^G0J7RDGpzj-yVe#k*G7KmyWt#?Vl8TK3x(Pgn*D_pBu0 z!%7S_b7j1&%o_IWq+N}}C@D8*=qbdtZJG??qYR>G98d$`Q=uSJv8BvdT~Qy9l%8h7 z6;e4lq@xw>X`zsglls82C%*Rd?Pafg*?ZRSMS2r*IRUo`{Sy*1!64ec5>}!p@;*%- zbsPHKHlxLRia#-=mPU2blpRn5Tde2RTo09H8-+Y9<&w9jwx)@l=Wtq>>N-2ywB02W zM19(I_M}Ipo~g_nISO+`t>45y+#&+Hw6z*k2a|2BDfy>*A4LK|nEe`*Mk*eGRp9dT z>9SP5LNz<(JVa)spOq@tO^ZLaID@)1Mp@XItIJa)YJqqs!Y)_X+tO6wID}5&8vU2K zH&h!mXboaSkR1*k!S7vuIlT+(gs}C=Ib+c**lYABKGH`5hLWbNCRM$SjofrY^!Xe@{n6jr7)rYZRgbom>l=GK8Fjx}Ggt|ZMAYnhCP+bitW-2tG7rMj8 zck}Q@Dn?GJ=VOaC2npY*B+H;5C3wU5YJfXqt9@#x&YEX&S|aioX;c!tl%q4*qZQL$ z9;JT!0-K~jFwDCr)}z7DN7a|fjPreG=5pAr5*34cm~ONU;>yV8WDmp2>Td(siNsRK zU5@M;*)~>U&#G?`U1mIHJNA-R&O*m%&X#_W^a0FgUg{PbXOuA_nY7@x3A61oJpi&v zA)*P2R`nifB`aBBp*D~RVwOwQ2R>IHa5lZN0%<7=oh}8`*E}m^{1*tJ(j|%%ZG}JnP|Q7=b&|!+Bkp_+dUkCzOMrZ7skLEj`|$PwYdZ1(u@k)bNyAZl-1u>D z16f-t+D>V4&jg!pbgElBRa{QG)(~c{DH)w^bHS%9oePv#DOD=P>{p|J_nPX!c+GT{ zi920?>HLC>q!|vE`#wjf^G47$Q-%yqco`xK%8Z7t z3Z*+nS~nzoPE0VsVP|^k(Ju7VV!b1>4LTk>No#M!;mdjT&D46#tOFD#5i1(miT;JmCMR;5fi5vp)o+*is*vmLSMgMInN4%0D zUSr!jvh#)!dfJbcdbBbbi##A%J=NzZvf+;?hYjOvd}qY4meLyU)6>ai;_N62Mv%Pv z1ix}63Gu1qdTl%LZYQrVz(zwpyP7^3xxF;n4I0nvTtR)c%ln|(%LA8a9(9+#MTBzGfnHwz^W zJUdbIlGr`wea3eevTVhBorVP}VW0AZsK*Z7eMS53kQqB?I%DU?Rf?S*k*+(K-|X7N zkFFD#_fcaWQfpWq9nu>3I#H#aBU`uc>WVCF)W}jXa_ruM|mI^#MHI}@+g-N#=uh_^WE;mUxD7RNBE^Xi0)7}jAT^g6t ztAu6AaML2eM6#qbspr3l0m?L_Z`U7!u!6vuIk1j4*#&3_NiaAf;Sd9qP&3Jl>CUhh zNtiG62{wp*UM6X&;vV|TXgdJ(l#KbW@>T(J= z0|Zo5G!IjywgK+{lN!Ic;a4J+7}~v>*V^}3n!$jm@&_|}ZF8meTGdiZY^$namMCMW zq{gk71bQC-LDl2J)aeORrw@cCrYfM!iHDsvtk725Bc=*&N9j?U#Q`=$^gR^DUsV50 zPLsP1J((e#yN1#v)xjoFQm%&*KAH`03A{vBBBa%p=lfplLX%Fc&uVSI7=a@g&rFIF zx@BaBfY3QR(0oDPJ5nvxb!w@mZtciN3llZ7Ejx-G-dV0I0F`0BxhDWMQP)@Q?uNS# zHe~L3#4IZp@N(I^@;fj(+wDE?LWyzm)u%6Uu27w7D1Sa(_A8RfLz!JF{T$TYj>u`N zTW0m$W46rZ6w;kNd^7u`op<{~MXxQ358c@4kTy6b(_d%9qutI+FEo1T`S}IzXd4gP z+s2Dj!1<|Y_AUhtjBw@qAvJCWz?qZ?Y(`Tf$te9Jm6dklsceW^|9W08r?sK{Viy{q4gk@Ae)HOLR2j?$$ zj*M>k#fYToU_A4Xz-eos&@okOgz&aG(`3k?K<^k(xR@-C-;NbeGP`{{R&NvkTW8XId&Dn{!LMmQy>MM}qQw91kyPG0wR2-t;|a7Gw{42UV>d!Yc4N2zL-jU*(n%NQISID_IEJX0!f zL~$LpsbV4QWM-Pll#Z&pGAveBvZX3yh`t%O-=!mc(3KuDFzGQ3u6p$Det|wSDAs32 zIX>Q`-}F}MJnyYUcj+xxcj+xxcjaYEd>JA*Ma3rYQ#>{Fh%y!7)15HuA|nM@9lD>p)LV*eT|oLddl@Q=D}wN zmU{r?6QqDdf)p3Wt{1h}wufr|IumEQE#k%#wOw43rxh zoSC&LQYU%t7_U!Jfja5E8+T@-m9YIb%$=#?DzAnGQe;=2Bku4T!W^O)$1`rlaf?SY zaVJNeW5OEtVx^#>0AxU$zZ~i{hx@tkMs&$b8aZiy9Pw=~+NswI8|pDGpW%)%d8KP= zI$<1n?z#fVrO6uD)h$s(T=2#$WRX?hb3-b|=ur~21WB7@Og9$iNlv~sVo+Doh>H!K z%HWzU#2d;UN|IQy>Ol!TxM)VP=@9O7IG72)~F{Knc4*6vSAK z4^z_Zk(p4{!Ow^3tplnv2&%Y>!}iQ35{!eqqCn$vU@0vZ)hzfFc0;a+PxZ8~oR#1W zOyvSP@Fk`ZL?RwRB&=j_BBKoD^=P0-Bi%L3N&u_fkNr3{x6`LlhWh zi6CNmzJE*5%9Xe^OUL<@XJ`zs>=7q={{XPB=JqxLfEXUlqR(Vo<2FW$1}wYdJ=;azeub*#61mK>5xO01!WucH%prF#FeB^- z{Z{e<*l1?$%rKS|9%kE&r~}AfZk5Ou_@2C5F4;L<%ptNEwA2Fq zJEEqgO7HQr?)d&CjN4C0RH_MgW<0bb$AW2(lY2WqxqJ;PvWq$HhNBl&a7c)m>1?Tz~{?-Bsx)f*%s>+5{5Hz#)l}yJbd=q=`BT8aNsnXoE_;#CJ=|DQGnba>Adt zUvem%wJtg2&)%MOW*~VRmC$8e+S+(^S@#PmAStsHS6m$j$>7vzZexmi3-t*mzY;3g zM_dtQ^Xqpbe0LEGKR&H>NQr;y=4?j3o|+kqQYQ2{QutHuY;!%$#VhDjBu<^w0*m8^ zPCQ;r{RXZlEadKfX=+4eO#k&&)f)*dfh?a(6thl;+L_8O3rs=mfqZ~!C}46d)y`!( zOFp3Sma8n8@_y+3SKWxx#o|~Ks1@*)6WR5lBE9^n!>XL9u1cDhg_jfe*m6wwaR4F7*y+{> zG*}dH|9lfjhdv0xs6^0t{!&FQ!YN#wc(n;GQQ@Mn!vo+f_7^QvB62uuVlUN0j83{W zP7CqxjB$XOODw@@r<{ddPtgn7q)*1Y zWHokos)6=BLJI7v?*@&eN#1n6o*OU`X8=~{SA$ylKwu)x8fi@?Gh1D9JHO1HsHmtI zrxsD8It%wtNmUaWR5gL7B*IBCi)<{PIPAQURlY@MOkPUNXe5pp&llym2=d1TA3~c0 zBO7O%BjZ5Pks;MK9vWGG!LgAQ&;@*tGt%C2Rz--+d->&`4A2}+^5L?XqArk>b7qCy zGKD5ell`0;4mp~g7+yR_K{iZcH)()3)ro?Mtc8#(WNxP+J)0`IJfmu@Z;*tNPT7vZ zUzc5L_3K_U=!%l=ncAyfexJ!3anLPn+m>`ys11e3Ju(uuM48?y$Om`GLyl2##$k`}Ha1^>) zfQ|_#Fn|*n?cjdOM8i=SO)SZQc$q4eL_qR8v+YQUqs+uae=l3^9zqltua{u}b#ghc zQW#m*a2BByNlpw|kTfw~G%yM-NRU5mG$B&fS0%{NDjF(T(9Kt{sKl?N=ryRMipn@u z30Gn|H(U{~N>yX*0Q-~xD-R@GYt^QRC&3!tkojm5gd8iaRaZ z5mPzLBPouN64NXiB=wYLR>wq0_b>of72Us5cY7VxWWYn(daB}Zjg2Qv#3xNaKe+~! zw5&Q1|1EGhAE38)nB-EYc!H1JtaY-6*RuHGms$PN;*wWduzBLAgFZK~pjc)v*C*hk z!_uNUq%a#3UQYJdy(#)a8B=vdu05fe^BG3gb6TYXZA4H}Xej^IS(605C%nl{IZi%N zN~t+yq;!YTn`IQ`2*M3QW3U{9j0&+$M!m<#pNG~c*dg$OV8x7&JBb^y$aTSMMWUn; zYb$CgGu@e=DUKScnHY0KH%SBocf}@&q)kF@)9s1&;&Ux~h#iQa$zB?JSV_U=D;56s zyZmk(4ht>Y!$d>>BTO*d#I)%&PBS2JyKbuMX@nW%60uh7oWE z`cTV`fYTYc(rsCNYB|Cauu1k(EipY*2l+Dg{fnW7l|MGY$w@mqTPIy)fuL1iz?kj|1$|#5GpL zQ~kOmlFf%xBTSD8Ct?u%LF;LSD@7cVzYRG?*%|%{IE8`scIjan+aglR%O|T=yH2O z(~Z1j5HYXUacd#HeGO|AxLtyq0nTr)TOL1~b>T&HT`ic_az$N~8j{WoS1($pR{7KZ+~9qD7g6`JaP@YwNkN3WHX_reN6 zBMpBmt>5kVS$F*%M%6t80z*_L z9{f5q!pZ8734riEAz`j*Ir3P!OBPUoNAOxO0N}PtZ9#Vag$s9|fBXCk=U=>VmkKzN z^D_Q>;QQPf!EHzdEtH&#LxfX!UGl*colko;ruHW ztjGK3-#q^=f%P^6tS6>B!@7Un55WFU2ke^-!1ia%z`p7SVE^X^_9g?cTlNpY{x1pa z4F+Jxc4snv)eo@#PY3H;46sguWiZigV0}f>`~lXh2-f@au>OI9|CfaHB{@hR{Jytz zAyEJ4BU4jN?fSojLki7r&lr<9`aMFlCb(ap+@y4ow>cU40Z!EkA|GlFEmZX2Oc;~`N zk;CD;@D602Ts*7-c;W4Zk0Iw2R@6Yf@LMbn|J|#CeBn5@zVP9~sl|ImCDzB|koA!Y z`-R6~IBzW84SjrIR){Q|SbSvRv;}SQ${irR@bTjP3n$w{dEs}^=!Xk$Sc``jA6R%3 z274F$_lSk7W-WXIv;KfA;al)8tP6qo!5qYc@0$%Pg!s~lmzQ3+Z|TI-ODA50KUAzNAgu-y>#Nl z(uq%?a~1Tw@LMGF82oJ_00nI;D8eWB2KiU+tOKenow$dr2{isXsmuOuk32Zo7ak;q zAGDTEz_Pze7N1sr)}qS{83b)M=g=nZOen7Ye$Zw|6n=W#_cZeF?{^*d%zd7QD8qJO z$10xO5ISC9>nhRxZtT`n3>kHumRGYiwWxLu?6l)afR|%J185)*_l@3u*Y}{g?oNRH zFxmEy-R8Dz06@b&^QgVwwhr2`P~L=n(3`S@{Zxf|s}9bZy=v(G5L%SIFw)@ZHs(Lf zE@Eu^k3cA&x0v)ih-6(}ZoD2|1R<@&&k+9tNEHUCmYnCjjkTK_+w4F5ws8|kxh^38*<=^R}Hv^KYeQc)hW#!u_HX_oOyb`zWKJz z1oN+|;My5Z=-@i@bUgp6w)Mv5KOz@5WQe&zw-CeHhK=X?^B-Bf*$(^8vHeev&%Zj* ze(Qbu(fn~In19K#Cu*)WVI2&|Bm1C>vqm`X&cShJ)xdFsZ@WPlg&G^Z&5fA_ECb_a z*KxdQ6^@#ArDtP|Eey4H!+&{5Y~4-j=ol zw@%L(%}rhl_G|;k?%9r=5-{DSgUMMv)NxZ7<*k3)=1;_lZu{F}p^Unva zX8OBDG~b=&Pl67wsu=@)d^)aS*l2hGz;`2~C2&gsH7q+KKF}@tiVH00lo#U}COKu? ze1*{`qcjHNMt@EAb88sbNeSD|rQT>aBa#@?OKIG3pX*B;~ zZ9+E!N4cGv3cL{J-)0U8$jYeOG^{mMEEvP; z>reD}JFG4`QZ?L54iSvQ+tcps?SrywL!gW`tGjJ}uGWMt+NLT2nW3(X%-3^>0;=9V z>;Z>rY>=-7x(?yga;xXUl9gG*6d2faAZ?3mv(SA3EK~)rEZG5tb++C#N(pv@AantP z52n^7eF_MTgDCw1!9c*r#zJn20>C(EV*xliGU#7GJp(C=?MXs>`C;s`p^Vm=zUR(A z%K*)9>mZS8Mt}hn;l*_tNEe+c)Me9mL0x{4r!GH`mLEt9Z0AiYCoP-4ZPK#o2h#HG zla?Oq4t?{x{~nuUeD;&G@11@7>?ePI`0R&gPoDh<{?cqEXOI2)&Obkt z%jKlu>>tj)hMCaRn<|BXig!yDIF&g2Td45S**8T7BNb=Tgus?-M~9%mngKHfe1>e-Lr`=*I>&}Q>g;_S0$PeW&X?4Ov})j!`!^4|aR5%|A{ zpoeUh8htqXI4+O%=X;>aAOC##&-cN^?|}qZ+LO4vFg~pRrUh$x7#GEY^bh}hFHH3# zZ2#_sDw8#-NqJ49xyfBUV#*`$-14)+1abv9Mk)k>wfvijV$gh%N z?}t#otDS%QXfvE96pNIjn-G3xM1atoxI`)1EUxg+4J+Ij|6zr{y%l!1Yvdp_ zqiNgc-wZpe+w6c6){aC$=W-$W|2XLAT)f=WL@@ z1D;}13Ixy&643`6Dx}6=SL#YAAwwWiNl3y)ahZaR7IQ}8#3qz*1eKpehM*E# zH3@GH@q*RO;j|lVv}3ni=~jLz?ZOupWzj+I(s3=H_UQoA-bI%M$gD}N5(rj?=Izgu ztrWxQk-~8w>)u{yLTs~7@<-d22!_p%Hd#>G=tjJTBqZHzTg{O9<|slE>5c3|FSid@ zkLq>A^#gZG#qS&E=b}cIDj0?NIkB_&jmG zC%_YSDv}wvcX{5#M5t3?Z)$!{7b+(0W|FpSqn>)#goz4Igh+)&TiPy$hH>P^UF=yf ztC_@2lKHtQZ+;Hs6WYCJ69D=-07j(_?o;zG)#hJv+#G+IqQ_9q<0jo7rjhgGX5R58 zn19L5iE5sK-2@ma%X(udNGw~^t@uKlZwG-FG|WCYt*VJ%N)zPJEF7X3jkdThwwxNp zgQ2trv~~WasreTJVsf_TpTnnsy;{?y0zxgny1ljLs@WmSgylw9rY!ZJ0>{=r1Bz+E z9{EoQ!tZB0?&xMK8iX3&^7jnirVihRzlz0pH!sE?aCKmQOJe+iZ!E^UAjYpmia+44 zA~BxH@Zt9)!iVi7c&{4~eh8#*g9Puj6XEg3ho{Q$Hfg3ngbz(3{0_I)%!}|t9VK{2 z--666zby9tv&TPs;j?3(J@(n}R6KMLYpT(`xTp!gq33OxcK$l;(M#-lE>W3OLLzr%{{#|_tw(f$J!;2 zxqFu8o=|ec4Uf5dm*(^v9&;y`=H6I({^6y$_w-91bFVGUy}$JQolA2sW{vTy9&@K~ z7+7x(GNGV))no1i8KQpGW9}F!OgnrX8+rb&rMcfgC&oJ;(EZ#iq7%b~4;;m-P}@>F z>~!4&*XRXO{#b`A9x&kNA6%L{3LQMTH1{lBilw>7mgerVXr{&2;SDkdI<Ovj}Szg%pqE|imrut`|VGU2m8N=n;~P+q#dmMVhGg#CteI8plswo znXVe1Y08V^gPH-+^*?@psO>a_%D)j_2-!_J0rmy`(_%+%eHA11F}O`}o{(>#v7lG9@ZU)s+qrkFb1zuuUimAo-5gnr zH%a7)$kNi0#dB5-g>I#RqwC*W_Wo4E4d6dL%L_F5cFb<3 z`fZa9sV}H5!-=gRwKh@(A2vgK-74U>HuAt9b;*b(-5_lmwRi5g*EDVJG0(9lEZYG- zyoTI(8YJliaKwq-n)Lh$7&=01CI_+AV}sr_6Gfik?umYu&OdCpd~!H{`Q&(z&c7j0 zK1eor9aZNeNP+u6MY> z3!@R0zatS<1^e>|?O@0X_^`1*e1|KjjnU)=S;7l%Lo;_%a7-1Qh)-*J6?C+zNyr1p4z@yH)99(nTO zk>6fC@=FyQ7mvJn@yO#Bk34UqL|)KqTt~$vv)uiL?vJzag!|-@hbfpVVM? z@yHVwj~s)NDg-Ycd5R=M)#tK-X??0N<;hUxxW#)vPU=6&#%=&J?I;gvGVLeC3@o+N zPAm&)^+~>N9pp{Y?(YZ$o+KlFh5P{(ALajI|FC|~u@5asuwo>K6%(t5QCaxq!s&%~ z79ae}AO7;#;)7Z^lHV+xgxr&hhZldXha-9PFRw4Wz4&VpE`$dp`Ss$13#au^B)?pE zUkgI=%Y{!C@6yAM{07?8!;g?OYw@oC{nX-}i+4eXZ^Bp%II{4&g_C&o2b_9>w*r7C!#V(+j8m^4P)~uy$`O z-f1noi%A3%Hs&y4^$0f?pLz1)Gp8>;^O#0qo_QS7EHGf+djA#w4UXGv#J=@HWLa~Gd|SS2!2 zw;G+nLEld@@4NWSDI-xSY+j`?&-@yv1C8PGe01@dr*ge&+}6cs?jiZVx%kY-WWJAH zeD+T0#KeGIeC94v_DM2=$4Fiak>Hn{gLK65820O|h@qvToe^TUhJ{FY4iZj$mG zDRw`>wXqzoh3(J!fBf#9e>`{h-yi&=iU5CqaPA+!dnilhK>x>+bANx}NfpX}zvu41 zKcf4a{Nriu;P}TMK2+fNkKcW$f)5h@@!YY$zx>kQkN?gDJKlf-sekB3{^#OKE@-1E0%7mnsVhW>WaTK zO;6+X)uQ{Wx0-LMx`8!p4xHYaf2rWYfoov`kCAZDWyWwQ??x_FDjdi`Z1o7JLrKHd zqK@qFqLzpy!U6W_bDkYIo~t=@ZFONZxfn7}1gU;Q#GbOf~2c{*a=f4S`#} zheR#>XhAcP0xx}<1SiaLguFpQ6Mj1Z5PwJdK*?r>;SXi86?*48}TpbNpcwtbe`|s)!?=HL}jP6<_z?GO; z{vK~6-{akyL(qc2Fjvbm)%WGOa}V(&`2>AH&`$*ZebC^)L!C&DWtrd1g@-uC7+iSX zmtAP5lJo>rr(QRQi3^VI#q&N{H+1BA8Zt>LlzN!ZxrrPatsV#1}E~32(p`t6U+71y*Z}R}MHK6Qr zSAGJCx*DXsZ}G4pFHY$Inp{0wXGb_09dw;QH^JL+a^|T?5%^Ykv>o(5eY#_~RS)E@ zGxz8YZ8Hv_?5B6D(2|p+n*kP#$Q*ZdhP}(C`nB1g-Zf)M?Q1}r_Rc(2bN8D7w;{48 ztmzrYhGqElZdiNx@#)jko}2h?z%D@DoC9FeJKo_AlsV?`j%fbv173^k5wPrT;g3)J zzQ&)sTKH)ruhoE7cXcG1OK#kWWbqKn&}Ioe5ER3Pti>5z)TRio~J zPtC<^aA%IFz)GXmnIlPP=e&Q14(5EAG+^DF2BI|%tusd^p^Mi1@3So0+%HTj4=7^- z8a84An+;6^^OxFPx-fN!Ik_#h+ygKgXjFuY2lfXw{@(xd6kb5a2e@)TT|J)M3(qPK zw**2#c-r)w3+fH2?((C>M>L)0W0-E#W-dNbtj!e7$lA=shctcWvrNs1dczM;VMqs1 z;89^zZT^Z>e~2kJSr46jDxl8&i;s5JY%bnqEgpt3zPb1yKKZinK6Y~&Uw-)*eq;Kb zsM{pk;8TnAs>XgDD`KzLpI9}BvGndcOYc3k^zLa*p@7Lpmfm|@S0%iA&(gcEYpMiD zd+$yt3$2iUU(f0Zox;1Pmfm{=n|${JO`(8kuP(j!t1O3i^*U)*^PX6G_oJovehG!K z3J&oBQvGo#Yg8`q<_&5Etc~50CLcHI6tL=@n|Dcu^ZhY5CyaDOP&Oavc>Bo-y=~3-H36a2W z?1TrWqNZ7}DSl3ZwbEg)pLqlyl=O(nPme-0UVMH)I{6Ztisu{rVLk%T(Z5MHjF{1FCt@jg9xO@J^C@ z=3(;<9=u`|IuqfPcEjpm4py!9Qt6oOrgL>1-mz-PSqnDkq;^?t$NVc1GT$1&Mnla5WtW%aTp3b(zY3=t?Wy@! zH1Q%4DUvz>(hN|#(ICd&u-{9X^RM7tl=)Y>x^CEl(uq3>^XkO0PFNE*l|WpJl!q>? zxLLRFV2=>qngeFkTbqei4yZTG|-;Lc?mFk(t~jTC8yxhj@V33ailVcVdm@g!z(!?f!@{Sp$lF(TPD?wQK%s`N zrM<}yYZGjP%WB%qyhZxbnZ7j>yVqMi2Faz@UR!$o@X~89F1`Nn(ra@|uOD4{?R8B- z@Y+2~uRTjj&9PGW$6;Mx@Y;P#uf0SHyqV>4#ldU$F1_{#lKE_wDO3h9h}S+Q4Z~<2 z*0ct%og|rWD4D#^7fIgRSq9e~U}K-)fL{9zsr!k==RwARjly`0*ZE96s_F!(TZ^yY zJLKP!bZw-XooGKP3QPBvsMaCm$ZN+)=X5n+CbK+7{yt`rfsx-hoQH8Z*yu4aRNBwO zZzquui(G$-@kO~Ee$_U{d(!tn@gu2UwZ%U zrBhGmO^J}Wbn0XmjcMgg&CbY0^c`^O1ybWF^8Y8Hc^%K+zZ2U#^&TCChUceVCbgd? zMc%?8zWiKNwNFuoD%*PaRu2^*kBn<7%(E)(mI#%+jfM z$kHAsKab(hQ^$=;G+fH#tSkiymOV=T_yhTWNPmJX-cgeN#?t$T$)I5z^qu5iZO;&D_n9|+4O@n0v=}OOJ<)D~XU%W}%6_}R=(V|SFrLhR z*s{b}a{ly9+p60KeX}dh{JSxl`Fytqi{vH~Uf_EZ)=W4-A7Ijfls4KcV$Pqy2*KxH zzi|JBdoSE|;eK@$FC6*&mlqx&c}GN^xI*;e=STnc`sYV4+^a4rsi0p1BmF#}F6`ev z{`}a5k8>A@pwp~Pw!SnCi=Kb;{L9e($7c7Y3m<=e6iPu^i#03i|l)QBYPLR|j-J;Tmu{i=cccHi-WhIZQB zWRb$b%#{6?Ln*RLa=?7~~Yuvkd z`bcWD7^Mca+Qkq4Uoi#s3q`q&#^Km6KP_Z<1^ zR}X#p!Q9sm|NiUeKK$y#NB+lqUw(4@>%*_pwEywm*H1kE^>3erLSH}e?*Dz_9UAoI z>$i`6ap!|yp8EGKquZ@(uIlR_=>O?8*Zjw;_kVrt=sy*yzC86n7E_0z)R(6o%+jRz zJYUVdwCwmiUp@L_`}jPN@EUqAUV0E|9%Wx$qXy3}bwzq<3m+=6Cl-*7?ofJa#yd_mti{ndlV zzB>8@U|!eJj=nzjj%iu3`0>{ff1if@-;|6?_bXhw)2F}u=osyqzE4D!ZV!~7m`YxKey1&e)_qDes9{t$#6VgviKR*4`=qIJ0CjB_{Q>ULv`f1S56#ca5XNG?E(a$LT zjML8u{cNP4G5VRNpDpxrfPRMPXD9s()6aJL*-AeX^s|G0w$abc^s|Y6Hqg&4^s}FS zE}@@Y^mCAYHq+0o^m7CK?53aF=;tQ-`33#lK|eRr&(G-xaE7cr{Y3Nw+icBV=|S-g zSCm~iih)|g7Nq;ycR@lL%$^ues21Hv-8kydJwUcgS|NJ-At@N(1#TJJsAX5vq(+PI zgyf)BA~{I<$1>%7O&FH7_F5}Qec!tDQp>~S?e%)>CgrFCxn7lw$}I=@1K%?j6SI*} zk(T+KB4~c(fD6syS%&kJma((5$9fD8gzs=&mmt3BKPX--_Zn9^cwr1Qa)O2kJ zkabW0-X50H@*Ky9vnJvRaNPS?WW6XtW=dnTg2 zU1h&nNA4QZq_jK$a(##59JB)5=Q|)9rzh# z73;+n8>}R$NS7H$6A}{O;3iGUpN)!Yiwp5;gio^SfDk^Qfe%Rm{8vXCT*{Y`P#-or zie^2Q%{t|1CtCGLgEpZl1MnYh(8l$f0#PF*2V+z#A0lSD7P1xpT8AY^v<@6Qx|~uQ zYQ<_fn+TF7F0cncKGw`aS2f>`V=IP+fSf{|*t#Tg?OIaZ7`7&1vjhp_S%Nr;(i&{N z3@zhy(#4;!eoZe%!jZVh;|P?&6t8AA++^5|yeZci#Uh)cur(4za!VQ}yO_Jxjbpok zxLHlY(If(CvRqM7vc|_a>^U3BhC)EnMk&e$4vbLiB^zv2?g$q7@}F4$x^Lf(TXv4@ z+h_gca;p)P$Lt<4tXk9a9cXjF+M}0rl5zt)$yioM}8)ZJsLzRa(zIMDI$+GU9ZsuCa}M+ z?_cnDIORrlA0?S4Y*N}sE%Zac-AfK3J%#DIRoY860pulEQLWc{L11aQy|Cc8100fs z>})UaxV^PBZbH{Rv?whO$3i3WoL*=he`7JiSIdRqCn*D8r3{17xLuoQL}40`R?K6} z$_V`Btv6xnK2Cob&Bd`V_JsT4--MTXsRb+v1v*Buj;&{$}+BBmsOaw9n|Cv zSbf&ID|oV@|JZZfUPPm81b%2kW4>EYcw<1R8eY(gNds-0%fKM7wHOQF9*k!_{;Mvi zWnHI%CyX3C+p@LGie5Spgh_b-1mWJW-i!3K++V4*Usm2CZ1qW4Sr|ba`ko_ERRR7> zfKs7cAMJ~s2{^Ady9de{N|076REqe~@YTaV9qA*^IzJleA6Y-L0Uck|1_&{5gN=w} zdOJN1?`ZMTvSPP}zHKx5M_kT!ll;S(mi=LvaMB0*_ zpxMOp!K$jAVWk7Tanq*H?ZE$CNsuRMjN9ctSUCFs)&46hgF1|-JqMK}(t2A=9a3u1&?m2DqWmG%oS(}eX|b!G3%!xxmN?zcy~J(B16GYhyyIDyR)dg$(|{suqCYK05)CDEKrDN+Ong~& zGWKFI!X~V7Z#-$&P=*Sp;Z!itgusfdTurJ>d?xxjT0kTXm>BrMHM4@tD(stT zj-(N&oE#o5ksT+*uvFGYcP$&;_10AAIk3*)#{}64<>nxZ4Rfld}gNus;eWa z!y%=P(|ouWAMdjTr&J#A#=|5DTP6y;j$w;TvWzshH-rt55t+`qk^-{VQ;?-?4On|v zGA{wp_Epzksf#ldq=xnCM&Y0gQC5Ux=d$HQc7t9_U>cw6avN{Ti@kBrCu7XeBRk$< zT!8Tt?1;xxy|-ycfg8uYb`6zyBpu83PKJ|YCo*N0de8`{YoZ$N@jkZUb$M+am)Fb~ zOz~Z;%#!RT{nvV}$uLUnAi13_A5MUc9dOK< z$y2r~behIxfWE$*xS^!U_(AtCTRa2VQ}%_4K4wJ?bfsXo)xD&b2|DVIZbMGA?LG;h z)i=Dl<=fFVL7fO2-&fqoY)5XD!-#TzJ?&w)BAs1PUrG|W7NnDqA6+wkP2FBUs3|HW zy8tV9?Ipn#&Or70Nu=s$$ri({sO&FEKV_OADKk5`oDJDYcVavm#R-N!;BY>U zu_Vxl@3TSd`p8w3$Sqof5Cn@JoW_+LgIByGLWcVoayLyJ8{YVmgc z7WYD{4n!-(Z1qNaL{DF?rfyt8zV8nRLf8&C};B(MOpk!x(ZJxn*Eny)|Qu7oUGc*j#V*gXl|T;5PdL_ba*Qiwle2>ZC1< zi8+>@o;##ORpNjO%GJ{(1*Y0qvR^sIBy9D)J5m@kAf?3QT#COV#kRGsk~b+z3qk!g zQ7h6vJE({ZMssklZ;!jaW)qSX(^snYVTBg=SmTZMmid(%(Q{-!69SOV6Cr?Bqy=UT zNw=#l6?bjmp@5g|K$^cdQ{ZeNvK;!B7s@Pz@%C}JIb#~jq`X8?Zg(q>HeaCsJ^TmR z2RZ!juVi9@Ozb&REw+*K%>@O+${YIWDTGf!T_$lzHg4S_I@^&x7}iCev<$O+vxeO& zopFcSf$pEX2igv`Jr0`CR~9FFV>{`Qf2N!qUaGSWJz28EPj`cE>g2r`6}yGJT?JN7 ztpL!P=)es2T~)~~ayQl1RSbBq;Yo(-dPZ}VA`LyX=zf!rz%ca3?T9#NQ5zFW(GS2( z3}Pw{ieo|)TB(H2o5{4ng+#n70*nWiXue< z_e#(Qfp_n?a9LER&%HY|GO9{r!o3Kv-KGZH<0ejE1rqjiz^5IdI+p{c5-MU zmMR_bTA66YyhNbQUf}z~>CCxNl{ZNJo&X8o zw-%}rt6({23$xt2I)^LSz;p9+V#zGAI} zM#r8D@Q#Sk)!jq`Y59)TLzIOnzclu2U7Qq!M2AWOXEd5wCjcE#>vA z+|DGKo>!zMq*Fnb=!(j0yAf*YW3J6q=Cxb|!}Xr*tN{2n2>QsTkxiTW^V{0UU>n=K zzAZj>$59(9D(cxHJ$8ZXS>awaEhkW~AfB`%$p|PR=v94%-a%L7orBitg;lSGZ;KXR zv*DUeL+iWd?hUwX(y$93R-Np2ciycWf4Z4OA%@6aO6^bDuGzi3%9C9C$JPriUd)*f z3lhO7uW6KBh;@H37+Ts223O{&cPZ7b0uBdV`&N(%<$aX7aJ63d6M-tSoL+cgrJd!b z&_{2!$PKQYH{&v0;FhgE;2vN7Kh5tmx>J|sw|1FTf|g|GIlGM{Vw%C)WlrJJOWRQ1 zWsIF}GkN5*?Hx{Y*Ce!CEB(^7mE0ynQf|_?+XuW@Ygnez0-I!?x{SGK*#~&hj2m#^$-TOfw#TPW0i(zPV^lN!E@7pA}qllzdmHEq1X{cU;-ruFfL zu$2)(H@V1$R(tz-Xz*UF+KBwkzE9H6jb07v#?~Oj@*aLUjR_$ zwuV5=IElgupkO~*-+!fBAD2-Q=9YGtn{F(WjGCrN@^v$F5wct&$iP|`wmF8;$IV=7 zYossDW^H$^R5Mw@qz-YtS-Zu=RvF`pE$}AuiNV`Ib+lj}$?&S#~YHnPtNhIE%eG=oG=MtNxS3O z62^6|Q<$_wQVSIL=C<*$ll|q^Ne2GB!(Q8|noQ|t&Sm*SoCdJR0UQ7`{ zxwIO$Y{AInU1Ln%g2gvrO^%8koR*6`o(tWWxd?kH3k{*F`g>KRt?G9gzvm(P059H; zX(?p{%AA<8`jRihw`Yx#F)n8=&HIF}ROU}4d2#(l{J-|{;Y=7;!W=3y$V;G+n`?xoSge7=4B?aSF$jozjBn8ZSB(++-k4QPYFkN95j-0_*2g z3KT;9s-lYyNs-wuIixQ6Ef}W*hp{n^Ws&suK@#U=*FIPRJxE5Gp$UL!_sGyrC{b#q ze&P{tPYmB(>H#=y-M(#XGv>*@pd{zkk&&A)Ll$sJ#_-T?Iei#IAJXKTw~UTSZSfqQ zjJ_(~N8TW7Oyki6HDtB5iM*u@WyuXKA(j~kQx73;f+t$qP?Xl|Z@#hCXtrkE{wg(if zb*}6F_B%Os<6M<>9ah!}43*Zm@23gUX0FZ^ZR^xw!SotewyhD{NgCzqT-Cl#nqRX% zy4sCwwLOO{C4IRi!B}LajrcMYjaW;f-T~794egK1m1+~{AjmKk-~$5?g39n$>;kEF z@GlnZO+CYghsH+sA=TfvY5UHtLt|t(Fu+`+>qMjLSJ*1!luAG9yZWa;z3LjVIAn_J zlqv3X#k_mZTop#aZQ(Xsk7;TwYHCdWXcEtm z-s6U8Us*iuYrczFU-jM2dVPM@wqe%m+W>prcQEaB{olc~0ohv`va53)N*yl=BQI@P zL+Ub(7nR$Py)m_sb=bgL8ftZ?sQNGs1(*f0qa3*>?K+8egdx=Er-6Shx#T)y$#taU zUNZ3+5$>49C|1vsP!MbuoVbYLppl9TSPIU>w&iW}y^FqSlw-s3jf=TY%z%nDB{Erx zzEo5yp>3Sbk3?s-WUi=3=5u-^?x9EG2YRg0<@cg9>9jjNm2_Lg&yO#=S5j?+RFe!h zRCb{T7L+Zk@ucs;a#|%hiX~J3BrQ0&Z~qw)1WDM*YfG685xo_?c!$mOv8b9T&9c-n zG73zlcr#nN4qD7LRJ!hxL&=`Ly|X{N9J6v|uqr9iuN0ww-Ol2Y_E>h^RVT@Vwyy1$ z=Hyn<7FtD*2C9Wn*jnp)QbW)fFCMBV=qN@LL^`7`rQPs9YwK2Pc$h!chnk5BRW%fJ zgs>#4%r1IjjZho+C{oqVeOG$g0FJ0HU@awJ;o35VNN!CxX4F7hCh-V@J+qnE)M$KC zBruKxGwC5e#( zXb=e+B%mrHNEG^I%A>?3B3@KvekLASNpo8565)~6c30YBiLf9_TiZySV70kvFKG_b z5ZfB7Lj&)!hI`CPshCy81x9OBK<1(Mv9W0f4VPqXwgbnf`#GW)CBk4h3MY;Ah9kRC zP>WyZ>wY>L!q69!S=&d(3wvOibbzPiH*X5J1O`(6<}D2|!Rec{!vd!d+sVp-UOIFL zcz|gO8!1<;*;&dxk!L~-19SkAPBv|g`k@g7$kif zlkl`AX?Bkl?o~?DklEBH2ulDwQd0@HnnBuHiws$b8Mw2OBlWslOUh+wu9lUysR~EZ z9yxcfu$d<$cD+wrPxBBZ{Go;~G`zioj!s5cqTwN*D>zE*NIQ^7FZ9eC6o3nT7;xBt z<@Ydz*gGguhbbak3WTI3K%hYWcK=v{`gHg? zGYx-j#eYJiGPgO9=GO6H2mI$3W69oX-Sd&P`?6xQg2s&YSo=&w?UpNG zrXy`tnKG8n>|cHDc=@m zaF_h?x4`-eHp;C^oEdIT{8oc-x?HJLlW@!EcK+lA+aWNy9L`~jbXO|&b~g+3qw%)W zJyLqcs2-4$IoCPP6IGUNCr{ScudSjD%1UkLzcV&*ho~y}_6}Csbt;G%o@r2B6%BoPpK}cJW)1Cjw8o?ZKhhd_@7e}ELL&;@BP zD4T(FJnm-tn1G#|{Etg=ASBoN*|q;ad+*xN#*r)xe}3~T zWRCY7$p|5dJ9gp+1CB`yIDlh2m?a}L5@U~MJIFv?l+DO%2U*m+9sAaVkWC#MvC{SJ3i1je-D6BM~Tat)-xU7$L1dlHJ`NL z&KUSZ1G4b&GPHI!<4v0 zj)#_WPn`TNGkwjRfODO2Qfqmcxat%(-(~Hz6wplAxX!YwvT;lU7BwX>ijhykS3J%t z1hScJNlt*W(zIuhmrs^~|4_wN>^b~_rx3Q{`Av1lx}iyShX~_IiaSAI-CDJa5*m?K zV&poRv@M)&0L_srVVKVYKkSZ3EsYrTI4@yTJ9jVl4lZ|9Hbc?IKs^Whan}p+GCoL_ zgSKF+D9RHdk}q?PiKg=)j;m=cXs)5RV>CvmI0hz-ZHx?Z`mIm@DeX z5f{vM=PX0zrt!FUuUsxxDxOTAoqX?5M42lFOkQUC!(oH1|DB;j0(J>_h%3$g^}YOK zSC}x}uUcW>bJ^LJnKbl!0d`gx!ZAi|J`zS160!=UdE6NUsEhG~izhjY#}(P< z3zvSHtIxs%x2))_p^9gBRG~4ZxB~b+@bBE99c4CXB>0v?m0^|b$rRDHP{7ThhLLfL z!CNnz4R`2&2e97-@Y6=4;o@c;Kzmjz3ky=PX-B%0_+}B>8<(0(+q~!kDSw_`mDiBn z<2tdk3utX<%Y}*Gv%+UTEKpoN%<4NI-b48mM?2=y`X=nTbtP<<=heTNfjf*cO0;Qt zul9VG7@+wR&Br16-5!G6(z4N08OZeQL~W8a%8EHTTP_#fvX)2gLJ(WfxoAA_li(ur zmCF@>i-Eyy$Af`K9V%0v_%}l@>K?_{xo(@=F#AFDMjR`xI9a0j8dyzmf#K(~#nt7x zIlT4kbd5vIZ&vm{_|;ne19T*~ap;Fpm$RWl^_5d>7>@fv1jV-9_7UVK>~m?evQ_Om zg_ItB3$||=Q@VF{K6ZtJs>V$;;I%)EE-w8ph`hY@{&DJMNer#(1j zOx5gM*ZCtQ!%vR^`i@3j+p!BSzReF~Q|qEU(kT?60IQ9oB6X{!x9W?Ivdj6pT4XBM z{@zQGbC)uwP@$6{PYT1PjtP}GCq62T>nKQ|+>JsuN^+H-i1(tzSFh~*ZsT~)MUZF~ z>ByD#?E{;9G*Ub(%0vpv9j39$j73qH3(scB^m^KG_vz<= z{*okH{b|-7{xnPDN3&!)m?hJGei-#ijGLX(g}^cgk+$MRpphBK8{_WjSq@oyakA@O zTvh=K3zw^PT&t+VGtT+U+E5`~sPh?;sGU#lV?R_Gx+Q0{8+x4St88FtSrsk}R)iyT zhj(Q~JvyD4JUG!f{{TSw0E<`wGdt=lS`D$O5J)|=#>S&dYlGP-+F+Vp)JfScO7Eji ziVg~#&D2Tez`)uc)cA;q`qas85OM1YJtwCWQx6OC_=k4K$K*Ss7zc$MI(4HFb9Jt( zOqu6Oc0pQ`BM$(>Jv_Fr%)>8?hKk+dHMA6u3jHLVpuF%rs+QPK+O~tJL&4k%iOLV( zPdqbiQ#9R>Gh?>OUcc-)j|z;+C6ED0Q;m){3N8xI%pFUZ#?TtCvo9~aq-_ei;#bN_ zyz=Z?%jX<&>wWCKdLg#~+^T5zH;1w-EvL=ARptE}$=(qtKE}m%A5go1m0v%P#Vy+) zcIMAm=Y8FfaaPWu*S$h@PPYWB9MiS?jmIfE3uSN$l+gy;X72v|Q6&qjWt+SESIXsP z9Uts*>@kTD-r+7E+OJ7{oOqmGm5`_cV|Yt%N=%p z4c?VnGK!I7p2>XU_U%@QsvW%LgCgfG{-J9^WcXL{Z&DgnreS{KDo9ng@PvTQHV5=UspaK#6ZRR(SddnN+`INi7fCQ= zZ=lWvGu%B|w|z-{Yq>tacV%ad&jl*qY_e5T(KUdgbn)aS{uvW*U|VCzz;J_hG8q~z zFzT*wz+_u5m$T2*6>tB>zn~k~RlEz5+i2mfGxRUuY^#6-$)YLTg4v`~Pm{_*rG?i>bgt8cpn{b}`pQ=?i3e2#c-*UyE<%AFz;WuI z;n1jy(P<>DsCqLguquY3ci~qT-zQJsN7d8!Y31xu?criw-JrvU1F|ej{O%ZX>MM$P zjZYC8GDn46qa68tAQaVKzd8N?Drdj_TA8oxd+8;*!)bWKVK}McYrPVX zXZKs6SaW@)*oX+`4phRLb$Cip2=)AV^~$f`{HpJKDUY@hEGnAyrZv_7q`7vdIF?+N zKY~=N`KC^Jtl(dLy7|v9@1t6^f(TSomnEN8x~Hu(y0lQITZ^IG-(mC(9rT4M2#uX6 zj)+_hU@^J06V}8N3Vw9qa|IMX2cikhznaWB^uy7E|6eIcH9o{aM3q60en6rE}P!$jRbAtEc~be+{d&`oX*Mn2~(xda3v2 zs>5%!#bCfRXYs%PtNQ+WzE*`2Umn+E-(AOfK6pX_NVFGNLb44~L3NT_ak?j6(-ShM@73JuEI>SV`in!*y^5&InGrOg zCj+H~q{{nuRgSsBYQL7r*EdaHk+PoGvS-(QRbFO-7@FnVX(RPVX?4Oueavica>-jl z0vG4Iu)JzjSX(vrN_)soMAS-AXM(qAVxj?ja^qJs?3NDUXj_$Iv%DTqryf0qd`~Lr zHW!4U-}gc#7a>tm zsCOEj>2sA^_nQAN2P9qGnqfkU^fJ8+MvZg6q-SN=N4bNfs^4rUN{k~yEEj-Z*+LA zwQ|sODd5J@$0)vzEWjo1n*B{a!HQ*JG-A`ETLRoK2e>~>V?IkoEOFkoZ>?l}LFOjE z9I%&^O|$$BG#NA`o)YkxdJ@D5H(-2dW5pD3p~VDGNmvGMS!4wCv%-iI`XV-ZkRCs- zxYul|0r?Ih{_LIAEayJ>;UjbljGJwPkHvRvj z2cpQTHJE@0mTj#Fkeswtw+ICqG;6}HgUOeLzRJ)=sD zi2G=|U^x%4cxz(QI62b(P1pxCB7#Q361fugJE&`$yG+yJ=HlY@^>yQVsSzjr#n#5g z#^Mb+@0(K^wUNHUH@fO?78OF-c@aL6!sLcM|8-XB1?2FLo8=ARXD)?h3bMW3e~DSw z7jZlk*Ft4SbH=j1(C5WD2cKR%Q^JPYZuqz*B1VUZY~+GX#}8#<1cTI_FJScSkcXOM zw~F?ZCOms}gkW~%Q3Q$KDiWy!GMuKcgvh*e6FP>5)GkiGGAbB#A-0HUYhn#+*H3oh z3!-dw!{;>|Umxu`^f@6+1-w8`+2~41vC(mgsfG_-mn_lO8RLn zGZNd3<|WlMb!?x;elj^G<3$V~QqcM523T4<=EyM`{irXs$5~w+Q))8(A1Rbq^fPjJ zC&_(e^GD=6vBZtP|3hz`HLxtmdrOSE~sJ6#4)BL>NIabG5&1vt9 z<-aa1BNPy-P;lHhKSwRVIS8pe;4th?qB^Hi=THzCb3vVzRCekGIuJtTxF55p8@qVi z#hoZahwaiv?sPxPp{YH&r>OsNy;YH)Dqkm)M$>oee0`I;e$a5oWPRT=s9MnG>w6;9 z7J#t`r#{TQ00{<)Uqk(MBQ(_tDt=gitlv7w`jnWTbYPQSc+B_4+fxxe@YiGX@)Xv3 z8LW*7YrQkZ(^%Jo$jL>!P&CA%T?aGc)2?7<#0<6=IRV4t8r@8xOygQHvIQeP}R13jV^0Dh~ysx(_yQAHFthcpz7yLx*`rj8aj{X8@3Ky?f&>byFYDCP(+vdewPaWW@L zQYJe=wMfqA8P(iQUD_%1D z=a~1;c-ZDF^sb`;iD6B4aZSd&CaWQ>>iCRo%0nApJV=GcPRTDTUH47+85aj5HfAwo zhie}f*G{TORhKh1e=9#WWcGSD5o)56wYkBb?87>gV?#6OzC)p|99q|d+!NjDkZDy2 zJ?~-9MIT6%Dm@LQ=U4EAepyJgDWX~-;V>(AySO9elZ=4NjnRl4t;eeqJPWNAwcfW{ zx7r~nhiBA+r&^%ib2HU+vt+ZDawq~7-pw2JgeOgBHZ{Dz2csA zEECMVa3?t3%1QaUk50y9%hpSgaxJT*tl0}CBL>v5C4Dwc><;Dgrc@!i~(7qZK3J#vaPA7-5!`WbiGnO?G0l= zzug3KSE^{Bw$w`}fqpfjvjlZA7>N{3JdsEhr?NOAhiB?eg;L9sCOV~4i9o*xZcQZo zYN6a~u*1VD5kp#g)Q12shcpI$()Xdd21UT8Jb|mi-YT}(@=cp`hHdo#x8ateP>bXQ zRP)M*sA^r>+J2@f$_%JV>_1CY0--8EL&i$-9%p2Dq%q0q_^d7jWh?}x>+s6(bnLF} zevOv#HrKwbxYf3n>yh|$Pq)ty;d=0^xaKx-OmZvDxQus{yRtc zE{Ib(VojWLh57lEw>h=^xeM!y0}J|S^d|Gc`=7^^g#|vG#{=xU z67OG0GxJ^&?R>tAn@Qy8>`p{MtOub7#uiA6xAFpQp8#$>5e1DCPjKA zVtby8m*`H#Regr8>XS^(wCZzg>nSTBDUISJt){gCiwZ!#Ad7s8A~>+W*ebH4KuZw- z>OzYYaNp63JhN0nw{^V(r>e2WXNAh<_|&nnvy(LuRysu94jLU|J&!M!ThsL^?g+cH zF0*EKm8D9RkWO7@(@r)Wi%zw|Y?qR8E$huR&K=`1TepVP(?i0G%lZ;N^-o>mL~{m& z1ywdb@7uA)oXUn-X!410gqB_|B>N?tBd@1vD&C;2eKTjUx_lsp0kXE3Q5aD);bOAYFn~0nMFBk4rIr(&tF1ftvotQ|wOeVL1RV_LSfo=Md|h3$olQ-OR%mhk zutT#tsx=Kxb?0AKT|r-q>pz~UeocN$P7XvCx1^qu$-q;^qM;`RUF-aXT`QW~qP`Zw zwW#yEPUlr8^(p0D23L*@tk$-D#;Z>^BitI>{YzB;5;G1rlfE0^>X&@-mSFp>GOY|~ zTYE)+we?k2$~M_Ml<}DUn$&Z8hXqo@gXA=$fZoZUlx5VHeAV7LJhpCRp(x_(<8I0< zNhXie;P#AUfUiO^!dM13`8hwy?qp`D*1F@b%N87X&swv_o2jcI%C3fzA?g)S)YYiC zt9vC~&0+g@Afh}i!@TY3n08H{PY{!&Evqa!fJ#{Rv{$uO5TCHv8lb%*qtyJ>H*!YF z?ll-o@hb+mg2mLO7+_UppjTARJtMpu>sWn8pgHAmIGMA-nRx=52a_s3TgB0zL|fgi z3;u8~l6)_Aih6NBM7f!cC`a^pOCd^4qcmd#f!FHLVF3*)v{80d%5QUp=<*|mLtwYz z*Oh%a6L)N)eb;Il`(z)c&?yX=m|?&ehl0;h18nw9*9C6B*)K36_PT{9Dy}3LiT?sN zno`DrC{2s8l$DE*%(X%Xd+hRZ>6kMFzP^G{fotaUgNe=8_s-aIS=n%sE_^gZZ2b{^ zME~I)x!b$rWG355-mDi`Li%Nvkc2}lhNJ!$6xT<9o3rGTVkj%mS+LUHq6^d`P5LqoaixB5- zK;PP|NEDh2qUcGixsdIst(C^`7J`ao6kf~iLizTzd2LP+@XBcAM<%84bVyJ8C4$<4 z-hooB7?e?b_(>Qg+rn-}8OyDt;7IcM*34Fu{#0&N&|I1o9ts%dvt0YRnYVeAZIy9A z&@4B}cuwD65|7F7?;}qCc6imRwKXd}@#%2Nk&tDJz z*LQ&bA$|W)41V2Dr#GKn;NzLjanK2ai1eG3W@%Y1^M(R_*Nd$pODP(~=dFzF_{MD) zqXq@>cr>MLN5dl?R24(PKeh;6MSC)I5V1*K%icU${3)WI~Kv{mz+j8 zgDZ45mbc+7B9tNZr*ho+C5t;h6t{X2#*vSWRv)x#*4-tyH>!FvVJ|cavKD78XN&*S zoozS&w6^`$baTh2*gGioLl$6ZYgSsQe9%}1)+p{|Xk4*zL@T}1{?s>CjI;@NOu!0+ zs;HIDw!3m~fab0_qD@NV-t=f>u1rT}f5019`x=hSsC{1tJy^;OsZ`zAOzaz*<`}$n zzv~<4=W%52p{1D{m6?lBS=pQ}yd~-k)4C_L29-5F#POS*AKyaJG z39ofu&6cWBUui{DO|1*SQ2~sVxteqE6RQ)vxZpM`TB6mm@Z?xm8F0E$J4zuN2xJ2b zvVn%ItRC3d-Bk)fZcpyP^LB~~FsM3iYpkh5EuRkPeu_SC(APeH!s3n2xYG%JJn{s-g@HuS=Orzj zt`B?bkoMvHNM<;0d2}`XfGz?0+UpX3%v=H)wPw*!Ncw?Mb`+n_g%Wn7>zlOyN;?iI-G81e@sqRRY-;B z9N0o%A=$)RUM5BC@ZaRp$TQ%NoXnSIHu2U7zM{yti3YXgM=hdHpZF6R>20F%AikiI zbrUWA>g00}cPDCi9^dlPLW=mtWXLQA_+h$H&!@tcyNH}SNB+D7Fu2Kal$?D)<@hJnB zdxAr`MvR4jIzqzKSgThK+UQZQvIt4_%11OUo_qg(^r(6|zi{^S{rm2G4PS9fw&Q-Q zKHY@RkKVs;)F>akpZdFJrrc9iGP$~U$$v=EZi_v2{a5w0xv=3a^v-@;s;}RYU%eiE zv%SOpGwFBUzpp<0?c?=r-TM3feeL0|80Vn8L~@0B^R#DsZLGJ{r%@1ozA{z~9vso#toK;%;BzSG(C< zYB6woLE?833f0s?;I@{@Q3_xqV5wf$fO#7Xbkq!vQiTHT)ur`i0(x(JaXAV+?s02_ zQLv9^eVsUo2~h#xc|G?p<58;XUTUpE5lW9kUcHdOt=YJ_ywu)kNiq!>T5ieoN`IEx zYpd(}ed33(rf^)#&7~$&00xUy@)Bf{Nf*PIF%jY(UdE}0|I+%}a+9T-Zs0|PS*@kz zmGzbOvP$m9JR?g>obxJ9CJZ+i2qmedu(Gxe!=t3ogN+vnhcJ~(ZNW&D3NtmjHcI9EVl=?i+O77_q70G8mgPF7TCWo;F@y=u~l zK(t`8Um)<9obUtTq1&?^@{ zz!bO52fcLLt>yOmhUt!8D3I7(S~e|POLuL33Aoi#_LE=qDfRtOff72mwq!tQKmya< zT9*$4qT}uLrg~L43TP~7f=)pr2Ia~sGY3r??PUavGsfW~Z&_`w^RA;Cj0ZMX1w>t2 zYPZctwbWNklBSmJb_-XX`7#_QL)|SZZ43m>9|$Yc8*~*0?W0H?oi!0Jg!jeh@?{%E1GY7}~9M z4tF^SVEdEABP}#YHSxuTHwq$^+9m{#yescRY-ru;`YNv<_<%^tOdb|MNY0S}aLY?8 zE0P%C1_$ZM60b%|=_XzWaHzSwzQzRIVqZYwnTT;34;AR$#u5uQdXAQtU~w{<4ZYB} zN#V-s%36zYh(0lxf!(xW>FZ<*&VaM+4VYW?$p-WC(mIgUCH^$@CLTayD1@iEM)N(y zZRT*?>oI)bf1KS<#zYHO*MV(Pidw&`ttR8{FvMLR$WZO&)g`VhzV0eU1pNYj%Tz?6 zAY%C%QzT$bKFpZlX&9Ex&`{MDr|S;b-ST2 z*#VPa)vj^6qBFnb>6@GQG{z6 zGOn)i5(1g-iby}O(6&%Umu9iVX)Q7seY3f0QiX^u0q!vB*!0UvjTCWO*1t~FT%vR8e3 z1r{n5SHcgVG>A*aRI%8oxw{0o@d?t{wfk4-8vj-mbwZ<#chmSK?$Nfr5t(6=|GjQ2ZD7a+ zvbuRH=d`D-Gp)R?utRWsl6VHzjFF^iA-z2%3Qc|t*>y3*5g8PNf64(jlUk?uJuGZUB?} z7F7+0d6$ypb`EhHzMcAK;#Ljyu_;JCBR+GOGr&La4(b*2r>SPyJxk~nxhc9vTR8`P zeFuGg_0V!D0KnTgQE_XnJW-YxKAT06<`sG-VR5iYQ`Eijl{XMU&3KBZb$CE{sIMCn z1;Vp9q#W$3lSr0nqJh3D8-4uKq1bst?;=RqC5hy58{b_m8&d8p8Rr7;BuIZZ^W(CN z!SEt(W}Gev%mEVuYF?c!;YIm*WmVI`mqcDpvaYt)r^^ z4{4pyAul}`+y2lS46`|;Rc}`s#yjNl+_#=P@cgn}bsC;YepzTXR&agDu#~|jTKK>! zgKv=HKydPAmeSlVqW|1D|Owfr-qgMiaGq-+OL@<_9$ z%j5OcAldVWcZ0TZ+6zbv7iPwF%WkHg!h*y<=q-uI=valLfM@Cgu;=`waszdw@K2CM z!MK_PoH=w&6RY5LvFUcFf-zEHs-IiM1i3BtHgu%wpe6VF@;tZ+F+YC=T8J6<2 zXXcg{xf8b;+R3n%r9N0wq7C?umd4MD&bnMkE;JCZy&HRiVxwa{l{^T$W14i8NUzFqDW4mrwz5MKnzyk--8O z2?+*ffD*9#y#0rr8tT+LBnZ0B>d0&TUV(RWPQh~QurF#_d} zBEf-?GG{o)VuBT^iw4|JaUfM~nkl*NN@ya?RvRZLvKOA}Ho6{!#VAb~;O z(wHg!7e@i}AKMP%{V4{VNsds>S8%&ia0Tw9#8Tc@Y!ykF&sN*1oyH{=lutM`NV4O| zMVT&`x-c9VlanGx4-a1#-j~9LoS+*|6$lc%$-gf0)sxDC0{#La#UoopL_uST`74?I zCU2{jh?+|5P5|2+J?lKJ(f0-ek4BB{1)`t<#Ik+(FFbVSIRvKC?a3saqk?2jxL78GW4m10pY z%(K~Dcm93j>HF@ZFZ45CQ>J(LohU95~<1aC=LY zu8Jq&0zV_Iq7@EZ4!u#jhgYvK`1G>#+O(Z2%Z;W``D)hz1*6U^JRll}tYDEDz^lD_4f5zd(_eWBdH@#xHSmPK1+pZFWo{?G<(ODZyJvj|hK}GNgj0 zK5iXj#Ap1iiSKNmByr9e)#O&<0;i8ro?rNuzKyX!=roc@(TIwwvWw&dIFjEn{gO8P z5ydbgTBX$#3qtG`QeJ`!V_BNmKXCwH!8xeAN$>DF7f+?YntJD@UercD>7zh2VBMac z0-dEgc0bFk#MUb`5ZZJV{Ztx9MTU|oSBXqO)uoi3!+mHh32t(iQ_Ppm${WA)V~}ni zA9G60cH^PLs05?EF6_0D_dG=$+$0Q18y;S!>ENFW{L{rhbit;V@nF^}k1vEe8t*{; z0Bb7?e>F8K8!-t~r5t2D+R$v_eqxTdvJYtHA)Eft=y)Rx5KqVNaTs*b0=`CvRWwvN zMHvu$>by2^qT;HXi^^S)HF4ty(@|mFUM@

    xo`LO%h+PWZ)+b-U92wnp|3+glZCnIeCx>qpeLD_Xk+9f6Vei8jnvu5=t(XZ*1>e(fWS zhT21ISQq-y6WRJH1`hvLc3D06(3KAyi;F*@4ZStQzTC^K_GuP)l^Xy>HG7=clbQsY zCy(zXr6q)Ulpjqvbu?2tMx^DgewB1f%9i(P{72zffT0+$MI>#ew{vy#SeyG3QSHIE zqP)1`M;q-jeG|-st_kj`p4}G6jSOHnYWb;z1vqtsYg5cOSo3`M)h8hy)^Njc84MC( z7)%}Sx?10Q&Nsr7Ixd0+BNt{+Px29PszFnX-{e6)jqww49c+{t4&{=xo=%ej*!!NA z<@ER`1y_Q%MZm@BztUpVF*z#-HoRrW0qCDrk0}!Qwvv*LK}wp`9%llVJ93iR@F>=J zNcT~Y*dC$Ab#8crn1#PJ{OS7r8s2~1*V%R`8~<11Kd9)GNC=&l+`W|F&vX;AN~kh575 zNc7e{N(4wC7l%GqKep1EfF{|&@ev<;^UURqAN64*1JU*4)V4kPoa4nteM2@42Ijh~ z6@CdTct3FMO)!z!|NB^XtrIE8JADW{!8 zl8KjA!4p_FEAzCuc3e6l>zYTvKCng(D6rciiiU~A&UR6)v)j_3p%0sYx!OtjZc84u zGeCi_zP~FV2BGD8)iNU-rSWjH#7`F2VLT5?m3CY#sTDPCO|H2hLerbFyYdKIL<>7W zK|^Lvmtbv&<*-g883MMBPC51-XD?pkqK3VjuXoP~HbBY+43UGKu4%U^J`apNyj;aW z7e|uTRH$QuIo7|hfbH1+ul4CSVSAMbh*}-IJcIx-^&tlU$wWE-Ye__p+e$Bppl$U* zk*t@Pp{`dF0oC$9(8~JrQ7zXcQ1Aj!G-?v$A|!V>k3iFK117{Sqgi}eaEF~MLum4W z8_)D(gsu2a5VWAkBj4dGp@fP&BJTptRQaRf_+==IC+5Ab9t@7rK%S~upu-?RdlnuE z?R`SLtl`nBeHQ&7+EbX_q4SF>P02;*dx@fm9UZmW1Y2GJ@M|}mXbAaKPUsN|rXGu~ z0#ekepeB*Z&e*Y;*#eOVuYOrYx4szj$I-+rf1wSnY=+znSzcc}u%ISUt?droZn1o}8f)gXWN zqb~lig9>~KaD2&lNRBO@Q3({gz9*Im3*wj+DD}!7Dop?-KjHQgICzIXpg@TqR_c`> z@WZOD9ep-U{lV+}oJ28-BBJaE9*Daf_bW0T5>`+grF;qAqK<1BPb9BdshB9$g9>lX z><86ho6s40TU@L>hc$<;FA>kXW3=_CC|=W`Jmiu=D=lUzf!7qCx1_=Jnk?I&>36z) zOtusx>eJXnbW6IkF}>TQ9-_4UvM z2OzjMs0vtmP>1r>qL{KUeC_g{0cwypu-AQGH_k72p-*sc6yFnJN?$!LKgPB`T z#!-Zx1j^f1%{XnBARvXud_Yt(IZc&2)O zdTVRE9I0NQR0aL0xjT_@)efW9!^IrgPH8Cu+-VPJ(Zu*CN^%~tD61MSES3= zlo?H;Mw95#*d5zj&Fqg&{hto9v6-&O)e_NO6=<=pj~HlA&F2hP&N+hw{*r~$ znXs`lAvde+zq~K%g)1w@4nm~QpwWx*w11|7&{O*@Yi>XQV5HG=%u>ePGd$Ki7e`f= zCu6uolFSm($ex}(&c=naiHYr_PRiuzz9YPSC_I?Vl4;{1@Ilk^45#2Zv`O$>UI!#1+PA{T)~`)FfolRav-WhfeoBtfLyv#C{I5r=4sqwdj6srM&@36TTj zC%FQ+@4~zYok_WLIRl^x{F8*bX6Y>*W zXFIlO?jaGDAi}76>k=oG$c5p09!-`tpOF{=YloI!=QR=?MjA$#x?UkA-XtC4(yU3O zf|zgCn2a5emp&HzYm|{-P5HC>&xOK^$SRgrCn?hEWF@ECU6A&&kmeZe8A!(jY0DjF zz&5yeGOA#agLy~}C)KV%d6y(7l9mTXLk^4FFJj}t>9~A40uBQi-U;~%Hu|kdTmfs* z!Fe+sE=Ly9spTDroU^&le)M( z0ARIjmYBka0>W4#z30YC_be0~JmnO2Tz7{b)`~ox{_?K{KuMUv>de^i7l7zft2A<< zx_V&lB9qApw6RY_9%x=Rqyc)?JVDk(b(Z;&t(qW#zfes-3cG-*@!kr3p2NBtcvfvf zd09ZW>iC}Octdr_eoK9N%N;eivw25H!xUpYnPp(s}x?=ge1aM6V_EE(zur26{^>A4pF3B-30cq1pahpfnUj8I!I|@8`Vg!CBQCR zgGaEI3KmjyG>hlz;H}<8h<+2TvZu*quEM;ik(_1sw8jcr=iO7~ok_%p%N+Lalt)V)ADx)(@G+ADx+_-8^jCa8|?gsSw=^?vRQ z_^X!AEVF@X!D7gae?Me!4ATaVjl1qZj{dj+pm(VkN`O`fo`NW$T?3xG%u}XKjsX^q zT>&_Msl8{KD{e{~R^QMaT-SAUae#Fb&n0pc;VQz0gkMOk4Z5z8L%m@91y-`?SnINN zSC=bTF#BWTt& z&StLSyR%1|dTqx;*~@3{4ygL(HFAI)SRobdd*?yK*Dx5AW*Q>70tLVem7XNbOv9L_ zAv|L+C-l^Fu1}!4K8AFsYP5aCQ#Y=C0=4(B_KBXFE4n%{IYT8y7k>GmqK_$PW~#x! zU5l))Nn6;d{8YtXF;)Gef=hIcAFoW9CjZJ$CQ|}6O$pGHSOHw!U`z?QFrdJ>e9vD_ zqzcr;S4ZW$IXurfO8L@W@D_uYU(K>7_bjC*qD0(KabZGBh}4SAu+|{gcePqWT`H_o znPPq5;OH)WU>ULJ>pTT|zZg#dtXSPd;Seyz%C^bT{lZtdA0wqi52UwY~Nsi=p619uRYxo2A!{8oo+Fbz%)+O9B$Dx zZd*rH9*YTNn$M3t$D|=Q!?881IFj9?G!weU_6%y7scmQ1KS>FCwd*)SHU?#!o)l^p z4U)|21)j}XQi;cF96X>Fz(c|KUQVIcBl}K-VURI!n z&c&)P*2b4~G+*KM(I2GOwjl6_YOnW>euwflJCm*|S1VOZbh=14IMco6zxGGyXbY}) zm*F!Pp5wlu8Y*R!B~FR&fKTCFpc-cncbR;lNd*hMeCXw!S;|+w;E2#cv}ENhTaC+6 z9LxM?=Vr^=~-+Zlt%#MQFsTP1(V`=UtyI<9Qft(tzb&aVK4GVfJIzkJK zM@M&r;EW3B$;eL))@M}FQLT9W?i@|AQLxM;bLV8U=y=)KATUT35Z%Og8DK1XizuV! z^&B;?=XCk748^Ru(%3e;$~SUVzH+fUy06MN`n@XO!YZw4%0^~SGJ^H~(QGHeRuuc< z=<*+D-wYAj#chB7x9N5u2<&hLHVW_6oW zjPh<1DU=DX3YFu76=D@q=*h%cl@t?e6?+5^R=ib6p(hh`6;t3rMK2v3Sut2Ywe-sg z-_1&n?5M0;)|+HFJhI}jzA`WJ`T3C(QuSOi@W&StIaMxs@i#+c!Xt?li&SN7UViqH z3AwQDN*V@Fe0@|FboFGAOLQF(|`HH-2lafL~tc-8_A# z-9G!|+7e9?-YOr%9`w7KxmNzEs1jc4+hpwPcf+1zA`o$;$#Up`Sf0dZX zzZCd}fT{G3Gp-<9F9#T6Pv5bxOOaiqbJGhPp!+T*(vzBNvk79 z?z%t|hvuf1OI;AOoZdXm^coXSVrhFb^AS0l`e=l4=RyOu-70Ilt+I9fo;MEDY`&si z6gG65cXN^BZAe!bXUWwmhEuP6y799zljEW_i`W{(H`->z#_DOfY*2YR0^9gI6>AOB z{!39+VX6Z+g`Wy96Wf`434U68wy(g@R9xE@VrXi+S<7JP?bl&yuD3V2o^|}sfuC%T z6Yc}&YHCeBKF@PlfVLXpq^S|CNxO{VVHMYGDlu(Ln&jI}+Hjh=6DGG7>QTQ_r-dYU z74Q4PHTQ{cq&#T4?Bm_k%$c}PdrgUSZ|-8YT?MIM1|41)$W46#IsUc~BujPY<3v7A zoR6xMsv-MvVtp(wxvWa6>0Zs0URI^mT&;dXKI&~~J)6pF-#z==vRcL*er)N-iAkNb zR3wi3^JYzFO6kgyScyR` zuAoOun*KefKOY z&Hr$RH2=eNX@0Ni5Rkp*?;#F1ZS%Nf9+yk0hdi2M6H{!m{AZGvR$dUu${sQ#JyGpi zy?klUBBZqMY*RNXtVzL=xs#R++|LvKTq|20dP1B!+nGAu&y#j>o%bB^Qf|Z|a+bo@ z`K}lIWU27`vi`n&w?yRM1Gg`71qs)G?a6LZGG&xNi^H&}rO9HmJfB`OS%ki?yJjdfPA1Fds1nFaV@M`t4(rJ0=KuTNQd~Dky zni?}LwwGTsF{JvNiCjsYd=x%!P)HoK&!@&wFrSZnqNBWg3@CFEITyey)iK-zQzI28 z60thcW<%DwSwm2`G$@!~osX0oQ#@s>HXG|JcDSO4_fi8XEe!mA#7Xc;vRYuxkW8ae z#8`PIl4oM&A=%olhvwL-BlCU25uL2^R@R)lXY@8l1}ten&E7|(%PkdKbQNnDz5O?n z5v;x5lwIAQwtt&Z)no54W@JqdXV5nNM_crlYKuxZdF$)(}={ZoRVsf7P(TI=Q??KURavpvy-3#CTeY8_ID_^gulE;<5h0dx# zZ}KPTtXxX_2ex^K*62Q3p`!0A`uob?Rcmxl9namAvlveb6hF1!sY_aMs$7}U^M6y) z`_tEv-tbQ&y%%3gdN2MXa{fnI^{1ZGO||>T3+Sa*AYU!Z&#Gqn_aHs~&R3D1i$9I@ zjLSW-B3$^g5DnFn)OKA33YoMY8y7EOvvuxOzC%;X>>UTO(7+sR4+FxRcTXN$?Q@Se z?fBUC_$ovuqiIIx^kk+Z_RjGL+7p$6skklqZ=8N04IT3UtAQyvDJVF}7gQ6W2H##P z8hqCpJmhc&PbJC*-?IiU8BH^}!Q;$SF;7=n*f?!2P;gjXJNCaP*VBfCjMJ1XWPx%cJo@V z|1LV4=|{`|W?CD$g?Kl|cl`meLe#$bN9s>4e!IwEB1UH>o<0oYYd4a#v#x56L-V`m z{eP1QQmF_retRzwqF}++%U5rG+TyKGTgvr+t;mw@e8q7DA4H_;@IekESb5dVi!qAU z-{&yGIg3cXf~O=~{{Lph)xQNl`Hw#AZ>SIZKghlQZ>sD5!|;k2Uh?$}FUc^x@K0lS z(N{3M=s%mNzkuoe9kr1Ehba1gl%!LXr2irKMFc!*NM(~5J=_bm-pR${| z58<;*Oe1GAQLHJ{>MkuqwM51%(mT}h2BX1Fk-;c~-*qwC^Kig)-okrLUS zHp_yKEBiH{uaT0urM!yLU7N768C+!%HQnS?@d>k&g{E>-nn*6X7*!20SLEahm8uwR zAW{1pNqzH`z;*;t#ld+sNIs!By=XV79jYtW4UnO({Ww4-K>Wsv%7{tmRT#R^bnlb) z{NhNS1`M`;4|LYCWE=8nC?x7Aw9Ovh>|m11<-l&5Q;nuM)o7Vhjg|(}0)vM%M&(Lx z08&^dfQD#yighkvN{m0q@mM9E33u6^x|)A(|C`@8;K#K2H!vW))A}#ZPXT{y1Hu## z1<}?`tNpuarPW%K`7Ra<$wkk%)(m5xtP}vEnTDxzlo!?hbmeg_q-R#_n&J16IJ9A&aEYP*Z^9U@d*AVM*oO*QS$JG}6X zjH4HDDLtJgA@LHJsdeLv!)o2(RGDh(mIvwLDl@Jw2%tEZDEy%`{;i)Q~j^!O3YAZ3WtSGUM)P^y;tG|Lm=X3EHJ+ z%n-J8D#@$;pLVEcZG;S8PVsJRvz(jdrn$@~NT#F6Y8}tp8BIQFP^@V~&5p0HlBbXF z>Q7=LTxkxgKesb`H*idng zRhsZd>GqrL)^r!q+b!~J4BHml-?yJt4eQ&zSi5MNp+nM#N2U*|eY5b$32O)&tCGd% zGy&^e_WI3|#`Iw4E4kJuc4BI}K%oYv4DXcWgh#6EydDb*4Y~BmnOpJOsesGX>K1-? zufh{uIEb!%hhyZ%L=v=GZ#T%36#z+4R$nIO%UP!OX#+!d(7CEJ<=@Rzeo|0A@d+cR zLROr@H@fk_L;ti5z_Y#&2?I|87Ro3XIXK;yL>(y0ZtmS5(cHVcn@i*4G$BvkIVLTw z&FMu`ozsYezMbp(6>)v8#w*uk`bepBnt<8M|M54Aj~-P1ABMb)fK=}s?!Ou*L2pu7 zYP1^7%9l#@qE>-jjK8u}@uF@ePA~lgsRf6FkCPGPIr2kv(cP_#qb_`fES0UHcL6`D z-Zs>Q#rNaSK^S_KSK|(Rs=Ty5f2s6?^m5z*m<|>%sKrIyoyATVcNVEni!b-KcMpzt zD~}fCpp0($V~5Z)e7MCv;3+B)kMXd#S=s7Qaxi+H#GldM`sEJ!NbhIzb#?OLb)@17 z?Eoqy!H{TUZzuicR;z~|e-rxLfnMVK=yv|Yn49;)P1xv=u7xy6o0W?#-zv!gDTD}Z zk^e_cgEuQjtCUqDfE@Wf^p#I>KoG<|;B8$BAt+xSfAe8Xaj!m%ZKYHuayF2Dz_*(o z<-F9?D(++i@@=M$n@za83kGSknu56C4rPW5Gkw`I~(D(pKb-GpB)mhp! z*kkMhS^=*=BKOz@S%&ctW0bT?zQUdqKK~^3^NO>5gU2u9YuL2|GDEh{%ca>k3G(cy zj^r{8yp*~cv`R80{xI||u%RKH^cLljsI`!%Uz!Ia;zEYwA%7RWrTKp8jVxToz>Jri z^T_Y--VE)U{1It9u*X**gq%PkxxKefe4*f7(Soedtl#DW$mSwXi_3D_4gzCuivFdg zBT)zQ^GY&}P6M^U)b*YQXHI~ityPhUqJp4AS37rxcXDDq=X;+xy-y_~4(w_1NHc{W z)7#`Ua(f!NJw2kH76mA~@+@%(NlXzW0dTY#jvafS{(PRKxsgZ z5r2?oqyja;1JAL+@j1@;gJ#B*!Hp?DFtbcUz&=}=2d%2Cq-wH`hXQcyfzO%<4VuC> zPCBXyF-V6J7if2(N>R)F?G!2FSp@(Tl1jpEGvV-qOsayBiUW?4E^1J|rNOY{9NHZ- zpd$iwOly6PL$+BWJPFH82uwZDVRo^_uaOfn%GIVEWCLqFuJE><^nw}{#7+fC{7!0b z{SYG}GyU}10G^r+z>LI%KRmWo#WKW(#O%sPzslA?8C^WVAVP!%3Q;Vxne0_YrR>ba z@8IDb5{3UTuAa_$bM?xc*Xbnmdy&M^WI&JIE=Y?bdIVK*L%5Nw?6!n9jDV`fXV)$P58wMjz>(XEUBBo$5{1Wm{>IEUS-R)7k-M|auK0k5J z;EH}YKh+0<;y{}733R={54#|&@pIoA2E2g~NKY}B=*6)NjACfQ?`4brw(0K@{avQN zEA)4j{`y{5{c`C`J^D+2PY2XRnvY;WLkObbIOPW#pGy7ap7H9ZZykUBJq$H@h?F#_?Pdk#-r z5NQ5KU!LNqKc}LI(!;pJKLY>=x6i{$y$RDjPAcRF(t)=(|06mftaF8Qxa zF2=#3--Q2q7X<#4@)Fp`Gy-7j^aCrBmfbbL8_$wnEUPs>x}vW0A`a7jI2m5r&meu< zuWBZ}C;)*E)=9{#MBWFn0<0vM5U{j96QL0oVK5weJSb>^mlfa6Z0JtW-2%a48%F-CiRpD{JkzaSYTUN?}ni0I1o4!qGv!AwsPgn{ar^_xoN!#JGu zWBsU_z`DKAZX!`=mBvFCH%QM)PZXJI&P1}LU)5+Dq=G6kz*M2$Rp1kzUeSngI^XE& z?D@|^S*SgK8)s+V15CY934>uAK@U%8S_HJ5JQCuGuhCT;Uio&(ouJnnkNlTG|1u32 z+c9xOB0ZA0eI^8yn0ir4IVA-|@ngNZdj9h;j-`jsfk|zd$7km8d-Hh2kKcRa(J1hu zXW>}-y{Bfn=kH^zHS6&}SOC1n$?y^Y(Vy`9VXvp?um1{_##T>{hyKMl^b&WN$HUmp zbP|M8^~pHti~-z0BXAZbv}Iw=$=EO4Cr%cCNcE%~?Da>&T7uDqmvj|=FZ8?%-+5WU zmE)yu8b-)+Q%1>!n=noSVHZe2hv$mAekrAy~I~TKyaNK%o=!_cLAG%+0`tQUo|HV zfhmbZGC(v#b&+|Q@S`aVi-6xM8Wn?mMyg zh^Ktt$d&&^V8FzWmauto;WHAM5z>f+{jfxt#vn2UD6oC@bqbI#*zxFh5fMP7F|q=s zhaO9nFj5>ilgUnBBWfp3WI9kTlad#}j}Tjg9N;UWgL=L6FFrCNY3UQ=D)EEQ>{mAc z4r9GnRJ9W*tMREz$2e9 zRAY*2nn_2n0f=@K#w>Jn6R+P_7!B(Z_bvPg-0`D7xeP>Z)nqI&g6N1J6&bw@VEsk> z)Mt{U_&EHA9*-yJYT0xk1RaCj^^+i_nG8lEe|`+2jJzr}C{W@U1W3SrhWyJ*+`Ew< z-Xt>t0(LH9!6oymfylc-WMxBAGn5rRP8rIIJOkoi$ODR&@(4S(pevjKh+^W2w9BwS zsdq3QWMvNIvB1IvH*tD^{;E|9oLgihSa@oxhU1QE1qphr*Ez_Q-8c#-{2cPnr*V*Q z=M(=*eqhEVDdqtJEf}d^B?Av(G0+NNE)X+5uuRRRVd#=53l@Jzjvx&(p{L|$kEyFL zH26^r1+X$BVQbMEh%BiMGeVP`9ngy)>KF;xkmX`US!gRwqH)mWSyht)^o;jHqcCP_ z^={cFR={ixK10G7&_NnRa*+mCzNTR)AuV(~fQ-zVH@Xlmivd^hXu(&AqZ3rOz0ZIY z+&8SEhZ6?NZ=w>g&V|us(4+b~z7UB{z*}YB09jNi7}_HEI0{nzVL{0R^pcE2KTE$r zmZ5l)ApL44P>{U9qWh>=0-}V(N0z7PC`})aiHQv*@E)nl!YAn`yhxEZvx)1H94c9_ z0wrCsnCN%=z9Jrgm{+>jN=y!TvxmP6F;aG>E%dG+U~NR`Ndv8ivh0Ee5Wm{BuuL`x zLi4JYf__=>x*x_PBj&-5(igEy-UaLF4fb?_7n$7G8VP$WtW!&UQWf;udYh!>Mtjqw z#63M8mEi2#EV3=-gfOH0?am{kUJy~cL>4|$M?P`_=`22y&H^_tQV4hlnQx5b1!faa zTD>8o8#y$c2(W<}@P3$*1&b?V-F`UG`xk!4K^o#6ii~e2F9g{lG~2@kK@fQx1ooRI zRs3!s#P1rO{HkdSZZ|~*Wn~$Cv|eu9ZE2nn2`&pm((GnDh%Zv_ia{0YO%9%dC{>n) zms-*Rp+X1|Kk4ORqz#lxd%`V;9?a8%E^Y6W4QPdTWd|zB4r)o7$)oWA#YjK7^6AQ+ zlK^bzBBhYYoE!{@*y=i{X9>ZPIRxVLm_PZvM&MUi;LwL14#65sgM3b*Mt6{u04}xw?c`y^e((%CgnpML{`!O!)b>Icq=j2sP#>+0E>es zC@2~*PJqb|aE*^;SMM-(4>t9w^*GU7UZIkHSum)J8;u1oy0~Q6(5q;71(uZLOd6&b zT-LG!k+E@`H?)CLF_ZW(Qd*f#e8Z2Upc8}w3lycKF*Jh!Vt=(T(Qn+>g_~@`#Fa^4 z#n}W-$tc$#2_p?tMB(NFHnS00p`i%IgPs(mQFAvmq?@)Q>`=QC`ZA#}pXpB=!xpfM zA{z=quiR~0q(mTE?Lr!~gw+9IGL$Wd-r@tgjt9|5XX1BF_T{sPh_F+L2RdsPwuzVS z7RPXZdek@uQj*>qktTs25+RvoY%N3tlRbjPE+SZ-!Ntc&RL!AQ3WWOH0+ku=?h;e< z(!>|V{PEf1n3Bj~teduY%qhEwxk$59|@s3od>wN-#&>*0CHYo?yc1&uQn_hMC{crDo zJAHrs{>|B=FY^2T_WkW*A1x6&I@^+DlG5Ay(?3xGy>R+|;r(^v z{kYkDwzlwo{2czBEkeE%lMm5`^PSB<#Bbv*pTB)msVx4p`gD{3>wURQYw2+G^vl2l zu{HjZ`r#M6oCS}g!RX6H(EV~V7!GTjUrzt&Eqp%vateRv8}Ap+=Ak&H;oIifmxs05 zVt})6fcZ%`bVP$r07Hc8|c-w=`qyy{(7G0^$QNOwz(KUmOYgP zt3Jg+H=7Ii({AG5E%@77UB|!c&E5CoHh*q6+Z*_I<@x*Z5+t21_NR7D^eRB+`~D5~ z>{7vN@t=4Y_K^B=W4eoAI6G|sd>>U8=y$$0kGURygN70ZME({ZRsP@k`K#AQyXWVX zM~mtL9UDef@x=A~oNP_b&o?=I4J7TqK0evnezAML`}Wn*CSn+-?jAjpgbpX1?7w=s zcOq%KoVK%dvUR?7asnyaoU(Par&3NhW$*ZW>*dSCH@iFMuaEXN5iunBc>8GY)yetc z(K*($iIYQBK0FZND$k6&$V?{4CZP-BPNC+}YEo*!)OL*gY@vkjd;+&|xaxx2r6 zaI%RIv#gl59RCef*J6r~xUYeq$JcbiZP|4_CFoQ(<@4ijZtImJw=!c%WgVEafta!h zK%09>mrIPV;xM?FP^QdzdgdTpnS!Wy9uFF0(Bbexnl22fu7%OK*MltuSrX8FB(yf# zQXBSaz_txoSAxg<_LrKe*`u1{!H{hI&~6cmJgvIi`CT-r8dVs26&xNq&Ygq2^ z1~p44_SGv}kT5!^ZnMxC@qr-nbdw%|pnn{o2}&QooLeO>gOK_?!VkOV1Bfxu zL9XkuOO4`;;f`Z7w4D%1U`&@`R?VrunDT5V4cRjzDx0@Pd>#3TnnfZpSYKHNZ32V{ zvZ3W0LCl`)XAY{Yi+UvB76!%#;JL_-_0fXT4v zXR-n`i+;fg4vTy0mMTTZc9wC{6L0W*u)K2_{{6)!%^Wo;DhdL(B)iFP7=&4gY-4Kl?rZOdC&j@|FFZsqCXv_Ku6clGpIS z)MEP{Kr8a9vME&fk}@W3<1vG|%!M0Yl<_tz51MsjbxB54lHOA3KJ1kIB%7Od?kt#n zV{t~Ueg8`v4a4|)8%SF`fL&Gh*%(OcUZhsjpU{B^E#p4|9b-K6b%@2+=J6+=Oiw`? zQx6BeFsOZ%a;;KcsFXdGvZWrLtA~f`Axz~VP!Du@4~vgE#UNFJ33zssEC{(;pD(hSxKU-Fm)U7n1oyx=yX(js*S@6eMh zYm!vGpCi5YU*@OrFf9^dNc{?6{lVF=^|MzS`>>%RCHMv3@WHDXC=$Bq&!xP0;QLUp zqvW3U(?4Ppz@i3=aSy65Nwj*&S1(}zu0eP8K|i%NnSE#X$@@O))Ni+VdnIK9^gi8} zK&a-m6DWSNih}gXNwhdj{GN{osTbiG$d0I-^8OZF#h1nuol zfXR1?%A<5sQXW64@<02sFtX)Q7eR7SSuacmS}jo54^f>7lCEoq1f%ogt>?Q=hxFbT zW-U#ufW{?iC7hBd)w!@2*{bhb$LHu?1?X-A5Qp>Z_(%%Hp4by+kMAJ;+VMG6{{`ba zNQIHB@jX90dbYQ7zI}Lb0+MhR5i(yDM)gvWa5A+NAhh*GmBufx3rZKDv-QO;{mCx< z`gr&J)zRVey_bT=P|i-PkPyeRm%{CHy^SDphTo5z?|S2*zaKc?UmyH1@ZlFQ1=pzdVHQ>>arET}wv7ZW!nJ$u4YwwqU2Cs(O*l@pk{EF1{xp z-@G_{xqH5IxcwS;GOFl9`FgZ_^7`liKJTk9Bq%yx&YvG`eQy^I+$<+YuvtQq1awbj zc`o%sueNv3pB?VJQ(vM~b^2iMWbc<AIZ$cK!UAN`G!4I?@Gz9J?w;`c#n!>j%e{l|F`Hmx zSq@-TKcv<23=MnB#heWt#t zAg6k)j-YS*=@yT?zM)fs75H864V%g+e7&kg5G9 z-DSe9RTs$waC3V;PUWr>e@8oQ;KdC}<8jyo`}q9T;mf`4ceSk79=#Haa$EYnqSGGb zP$!A6D_*PmKSfm-H43{%9P+(dSZbAF65}?w;-ML~YGunYo|((B-e_ ztZuBJ$9qg|ike`p@ty_Q>fD?zdh7ZW+#{ruO%_f)R(!ORRwwA767ff0rnSiGwS9M* ziWN1f+x#%bJRioqr+Ue(*>ZylyxdVUh!Q5YR56wkhAzQ5I**)wM=5@^QX!)-!YZ!q z-MY!?7;Nh6b)v<=a)*(tD0Q{1lbsYZ#fh6ql(6Ug^;OA!8+XTV@!KvYif6?KZ)xue zKZ-juAEk_HsiDe+Y#~T<{5(Oe8v*7okZAmi7v?B7JS&n4{w<6kyZ=@=%RevX*M4M;Bz8dVs~!IWqWe^IU(Pi z4;~ywr*G0T-dz{hd}r54Iat!S%X~)Y+=~=DK<&rLl=gSaKyyiF)DNT{7*YvbFcXg! zDtdrUDO7{BDtYXPJ`4s1N%anG0u(KnT`JoW_0CU8F$zbmsy<&eN8G+X9ZVhcGpFRV zO*Kb!QpGkN=9#si&#&KF{_Ogyy=u)NDbFIehxLjnWw%@0W9u}5=H0dkzzz~AGoD$K zc!1dyjm`G=jn&^7+EW%M(<|5NueYi`W3xbnwl7#2jA%+9bbOf8GuzYcLpu5nEoTQd zWbofl2?E>lN>?-_;xSQbcd}lwIMdY1aU&nyK{Z+X`Nr0M@-UzKHH|E& zJ$=I9`tHf1JfL-h;z*7kK&FpZ*z!(~d%XD1)Az~y=zUr_n_twOr&h1X?Zp*((6#62 z?$!1@QPe=|BLC+JN%Exo{&u>O`nxA6&B18+2gS4R{)a|{1{+TnDd7pJi@%$52tU#I zJ)j&8>+X|tM+FZ8pz5E3qdT>4m5=hPY7H0h$bSwv%ie#0Orsjrl0RgQuPm<{2A3^v zrz|IAk7ROFbLwPRoeD!A-7^*K+@z?#*~%M16!{5Bq2Hp8|0#$#n*g2}dVOob^Bmy` zwIjrZXlELFoKdX9e7~W;=Lz&-IL^W80oW*SG|ouyCD>tXse)PW&0GOf#U48SdElsvN)l; z>7aFjGMnZcBfC4jT2Vck`sV90S#2skEuSNhln%f~>uI%JdZTTP+nN29%*V}ibX0~W zd1DfHro>-(yI`oU0+6B&&_6)wk!{Br~|zq87W#rS?J^Bvby->bn*T5 z* zl~597vz94^r0giE_p|@+yZo-?n;9GkfS@EhY1iRZvsOakFc=I5gTVkZ;LHduO{g!= zT@iv+44W_K!cZ;L^$1qnauT4uI3nYNX8q}Y6l%Z5Iv zDOa$r=}$6f?;X$_VO+VQAnb3L3i4q1YjK&(e4Go{ZVR*+AO<^ZAUGfo@Zzm7> zZL!EFyT-zCDoIe18$op)1XHs_es#o56L&~5E`Pfm4NBs^JyrOV7b!1?_QcroN*T8F za@&oQ<5x0^fjM<5DB4bUD&7-V>mA~as)TjYBv6s_Jzoj8N`47L<%eIRp0*9Fs+*mq zauGa)h9)Q!PeCtb@nmthP?z#{IG8NgDac!@XhM4=J}mMlU18x<_ce~V7mGoI&!e2o zl{1RpMR>ty)GK!ShRXpM)i<>Jw5}yAlzw3%pE0|DDAMLopm7e*oIzN`m;s<#9iVu{ zxrKi0cmaC=t7+g}Gf;usK@xVn4i_Oke6=P_|C#V)kmX}6hfxl^4joj;0YlM`6!Es7 z@7c|@%LobM=nBc>4TB_sCT}i4d%YGhcJT_B2TOu7f3hx3?^({F>=rRNZ%4JNlpnHz zeU--Z$4v$b3ndWj=U*z=&%a2p(-oKE)3ga#W+~JRgbz zbnmTr6ak>CaV7C!f`dpL7)0LtFnPbEKvrD5hJ(oiE&ioE_QtfEOh5Shk6Gbi=VJ6E zx8h6tKNl{)rEZb30C?hkUl9DL(EdbbnzC6=iZCTXG4O{jLNzZwJ(&{9LMLCKiejb2 z-tDE-BKhuY`ehkYAGXIS*{*CHBo@!P%muuIJl^?AyxQxuoJ)7o%zlu;{&icRQW%

    `(LLT-rSELuqWuSmzCmFXS*7PvUg= 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 z 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

    2-jr|55qT}lrI^BS3Q>0xC#buD!(stXo@AM=j88 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

    mZiSZwQd=1^)bnXPPXhwvTrnA- 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 z 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⋙;Z43r*y{VUxJm3tq&nZ$^1S+$%r!*R0cuhRt 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 literal 0 HcmV?d00001 diff --git a/client/packages/lowcoder/public/package/02596f6c.js b/client/packages/lowcoder/public/package/02596f6c.js new file mode 100644 index 000000000..c0ff3cf66 --- /dev/null +++ b/client/packages/lowcoder/public/package/02596f6c.js @@ -0,0 +1,1579 @@ +import { s as we, a as Oe, b as Te, d as Re, e as Dt, f as ue, h as De, i as wt, j as Nt, l as le, k as Se, w as Pe, m as Kt, n as oe, o as Me } from "./08856db2.js"; +import { d as Le, g as Ne } from "./0fddf2f2.js"; +var Yt = function() { + var e = function(bt, _, x, m) { + for (x = x || {}, m = bt.length; m--; x[bt[m]] = _) + ; + return x; + }, t = [1, 24], a = [1, 25], o = [1, 26], l = [1, 27], i = [1, 28], s = [1, 63], r = [1, 64], n = [1, 65], h = [1, 66], f = [1, 67], d = [1, 68], p = [1, 69], E = [1, 29], O = [1, 30], R = [1, 31], S = [1, 32], L = [1, 33], Y = [1, 34], Q = [1, 35], H = [1, 36], q = [1, 37], G = [1, 38], K = [1, 39], J = [1, 40], Z = [1, 41], $ = [1, 42], tt = [1, 43], et = [1, 44], it = [1, 45], nt = [1, 46], st = [1, 47], at = [1, 48], rt = [1, 50], lt = [1, 51], ot = [1, 52], ct = [1, 53], ht = [1, 54], ut = [1, 55], dt = [1, 56], ft = [1, 57], pt = [1, 58], yt = [1, 59], gt = [1, 60], At = [14, 42], Vt = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], Ot = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], v = [1, 82], k = [1, 83], A = [1, 84], C = [1, 85], w = [12, 14, 42], ne = [12, 14, 33, 42], Pt = [12, 14, 33, 42, 76, 77, 79, 80], mt = [12, 33], zt = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], Xt = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, mermaidDoc: 4, direction: 5, direction_tb: 6, direction_bt: 7, direction_rl: 8, direction_lr: 9, graphConfig: 10, C4_CONTEXT: 11, NEWLINE: 12, statements: 13, EOF: 14, C4_CONTAINER: 15, C4_COMPONENT: 16, C4_DYNAMIC: 17, C4_DEPLOYMENT: 18, otherStatements: 19, diagramStatements: 20, otherStatement: 21, title: 22, accDescription: 23, acc_title: 24, acc_title_value: 25, acc_descr: 26, acc_descr_value: 27, acc_descr_multiline_value: 28, boundaryStatement: 29, boundaryStartStatement: 30, boundaryStopStatement: 31, boundaryStart: 32, LBRACE: 33, ENTERPRISE_BOUNDARY: 34, attributes: 35, SYSTEM_BOUNDARY: 36, BOUNDARY: 37, CONTAINER_BOUNDARY: 38, NODE: 39, NODE_L: 40, NODE_R: 41, RBRACE: 42, diagramStatement: 43, PERSON: 44, PERSON_EXT: 45, SYSTEM: 46, SYSTEM_DB: 47, SYSTEM_QUEUE: 48, SYSTEM_EXT: 49, SYSTEM_EXT_DB: 50, SYSTEM_EXT_QUEUE: 51, CONTAINER: 52, CONTAINER_DB: 53, CONTAINER_QUEUE: 54, CONTAINER_EXT: 55, CONTAINER_EXT_DB: 56, CONTAINER_EXT_QUEUE: 57, COMPONENT: 58, COMPONENT_DB: 59, COMPONENT_QUEUE: 60, COMPONENT_EXT: 61, COMPONENT_EXT_DB: 62, COMPONENT_EXT_QUEUE: 63, REL: 64, BIREL: 65, REL_U: 66, REL_D: 67, REL_L: 68, REL_R: 69, REL_B: 70, REL_INDEX: 71, UPDATE_EL_STYLE: 72, UPDATE_REL_STYLE: 73, UPDATE_LAYOUT_CONFIG: 74, attribute: 75, STR: 76, STR_KEY: 77, STR_VALUE: 78, ATTRIBUTE: 79, ATTRIBUTE_EMPTY: 80, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 6: "direction_tb", 7: "direction_bt", 8: "direction_rl", 9: "direction_lr", 11: "C4_CONTEXT", 12: "NEWLINE", 14: "EOF", 15: "C4_CONTAINER", 16: "C4_COMPONENT", 17: "C4_DYNAMIC", 18: "C4_DEPLOYMENT", 22: "title", 23: "accDescription", 24: "acc_title", 25: "acc_title_value", 26: "acc_descr", 27: "acc_descr_value", 28: "acc_descr_multiline_value", 33: "LBRACE", 34: "ENTERPRISE_BOUNDARY", 36: "SYSTEM_BOUNDARY", 37: "BOUNDARY", 38: "CONTAINER_BOUNDARY", 39: "NODE", 40: "NODE_L", 41: "NODE_R", 42: "RBRACE", 44: "PERSON", 45: "PERSON_EXT", 46: "SYSTEM", 47: "SYSTEM_DB", 48: "SYSTEM_QUEUE", 49: "SYSTEM_EXT", 50: "SYSTEM_EXT_DB", 51: "SYSTEM_EXT_QUEUE", 52: "CONTAINER", 53: "CONTAINER_DB", 54: "CONTAINER_QUEUE", 55: "CONTAINER_EXT", 56: "CONTAINER_EXT_DB", 57: "CONTAINER_EXT_QUEUE", 58: "COMPONENT", 59: "COMPONENT_DB", 60: "COMPONENT_QUEUE", 61: "COMPONENT_EXT", 62: "COMPONENT_EXT_DB", 63: "COMPONENT_EXT_QUEUE", 64: "REL", 65: "BIREL", 66: "REL_U", 67: "REL_D", 68: "REL_L", 69: "REL_R", 70: "REL_B", 71: "REL_INDEX", 72: "UPDATE_EL_STYLE", 73: "UPDATE_REL_STYLE", 74: "UPDATE_LAYOUT_CONFIG", 76: "STR", 77: "STR_KEY", 78: "STR_VALUE", 79: "ATTRIBUTE", 80: "ATTRIBUTE_EMPTY" }, + productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]], + performAction: function(_, x, m, g, T, u, Tt) { + var y = u.length - 1; + switch (T) { + case 3: + g.setDirection("TB"); + break; + case 4: + g.setDirection("BT"); + break; + case 5: + g.setDirection("RL"); + break; + case 6: + g.setDirection("LR"); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + g.setC4Type(u[y - 3]); + break; + case 19: + g.setTitle(u[y].substring(6)), this.$ = u[y].substring(6); + break; + case 20: + g.setAccDescription(u[y].substring(15)), this.$ = u[y].substring(15); + break; + case 21: + this.$ = u[y].trim(), g.setTitle(this.$); + break; + case 22: + case 23: + this.$ = u[y].trim(), g.setAccDescription(this.$); + break; + case 28: + case 29: + u[y].splice(2, 0, "ENTERPRISE"), g.addPersonOrSystemBoundary(...u[y]), this.$ = u[y]; + break; + case 30: + g.addPersonOrSystemBoundary(...u[y]), this.$ = u[y]; + break; + case 31: + u[y].splice(2, 0, "CONTAINER"), g.addContainerBoundary(...u[y]), this.$ = u[y]; + break; + case 32: + g.addDeploymentNode("node", ...u[y]), this.$ = u[y]; + break; + case 33: + g.addDeploymentNode("nodeL", ...u[y]), this.$ = u[y]; + break; + case 34: + g.addDeploymentNode("nodeR", ...u[y]), this.$ = u[y]; + break; + case 35: + g.popBoundaryParseStack(); + break; + case 39: + g.addPersonOrSystem("person", ...u[y]), this.$ = u[y]; + break; + case 40: + g.addPersonOrSystem("external_person", ...u[y]), this.$ = u[y]; + break; + case 41: + g.addPersonOrSystem("system", ...u[y]), this.$ = u[y]; + break; + case 42: + g.addPersonOrSystem("system_db", ...u[y]), this.$ = u[y]; + break; + case 43: + g.addPersonOrSystem("system_queue", ...u[y]), this.$ = u[y]; + break; + case 44: + g.addPersonOrSystem("external_system", ...u[y]), this.$ = u[y]; + break; + case 45: + g.addPersonOrSystem("external_system_db", ...u[y]), this.$ = u[y]; + break; + case 46: + g.addPersonOrSystem("external_system_queue", ...u[y]), this.$ = u[y]; + break; + case 47: + g.addContainer("container", ...u[y]), this.$ = u[y]; + break; + case 48: + g.addContainer("container_db", ...u[y]), this.$ = u[y]; + break; + case 49: + g.addContainer("container_queue", ...u[y]), this.$ = u[y]; + break; + case 50: + g.addContainer("external_container", ...u[y]), this.$ = u[y]; + break; + case 51: + g.addContainer("external_container_db", ...u[y]), this.$ = u[y]; + break; + case 52: + g.addContainer("external_container_queue", ...u[y]), this.$ = u[y]; + break; + case 53: + g.addComponent("component", ...u[y]), this.$ = u[y]; + break; + case 54: + g.addComponent("component_db", ...u[y]), this.$ = u[y]; + break; + case 55: + g.addComponent("component_queue", ...u[y]), this.$ = u[y]; + break; + case 56: + g.addComponent("external_component", ...u[y]), this.$ = u[y]; + break; + case 57: + g.addComponent("external_component_db", ...u[y]), this.$ = u[y]; + break; + case 58: + g.addComponent("external_component_queue", ...u[y]), this.$ = u[y]; + break; + case 60: + g.addRel("rel", ...u[y]), this.$ = u[y]; + break; + case 61: + g.addRel("birel", ...u[y]), this.$ = u[y]; + break; + case 62: + g.addRel("rel_u", ...u[y]), this.$ = u[y]; + break; + case 63: + g.addRel("rel_d", ...u[y]), this.$ = u[y]; + break; + case 64: + g.addRel("rel_l", ...u[y]), this.$ = u[y]; + break; + case 65: + g.addRel("rel_r", ...u[y]), this.$ = u[y]; + break; + case 66: + g.addRel("rel_b", ...u[y]), this.$ = u[y]; + break; + case 67: + u[y].splice(0, 1), g.addRel("rel", ...u[y]), this.$ = u[y]; + break; + case 68: + g.updateElStyle("update_el_style", ...u[y]), this.$ = u[y]; + break; + case 69: + g.updateRelStyle("update_rel_style", ...u[y]), this.$ = u[y]; + break; + case 70: + g.updateLayoutConfig("update_layout_config", ...u[y]), this.$ = u[y]; + break; + case 71: + this.$ = [u[y]]; + break; + case 72: + u[y].unshift(u[y - 1]), this.$ = u[y]; + break; + case 73: + case 75: + this.$ = u[y].trim(); + break; + case 74: + let Et = {}; + Et[u[y - 1].trim()] = u[y].trim(), this.$ = Et; + break; + case 76: + this.$ = ""; + break; + } + }, + table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: t, 23: a, 24: o, 26: l, 28: i, 29: 49, 30: 61, 32: 62, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 43: 23, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: t, 23: a, 24: o, 26: l, 28: i, 29: 49, 30: 61, 32: 62, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 43: 23, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: t, 23: a, 24: o, 26: l, 28: i, 29: 49, 30: 61, 32: 62, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 43: 23, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: t, 23: a, 24: o, 26: l, 28: i, 29: 49, 30: 61, 32: 62, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 43: 23, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: t, 23: a, 24: o, 26: l, 28: i, 29: 49, 30: 61, 32: 62, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 43: 23, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }, { 14: [1, 74] }, e(At, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }), e(At, [2, 14]), e(Vt, [2, 16], { 12: [1, 76] }), e(At, [2, 36], { 12: [1, 77] }), e(Ot, [2, 19]), e(Ot, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, e(Ot, [2, 23]), { 35: 80, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 86, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 87, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 88, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 89, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 90, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 91, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 92, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 93, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 94, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 95, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 96, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 97, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 98, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 99, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 100, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 101, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 102, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 103, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 104, 75: 81, 76: v, 77: k, 79: A, 80: C }, e(w, [2, 59]), { 35: 105, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 106, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 107, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 108, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 109, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 110, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 111, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 112, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 113, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 114, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 115, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 43: 23, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 120, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 121, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 122, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 123, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 124, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 35: 125, 75: 81, 76: v, 77: k, 79: A, 80: C }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, e(At, [2, 15]), e(Vt, [2, 17], { 21: 22, 19: 130, 22: t, 23: a, 24: o, 26: l, 28: i }), e(At, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: t, 23: a, 24: o, 26: l, 28: i, 34: s, 36: r, 37: n, 38: h, 39: f, 40: d, 41: p, 44: E, 45: O, 46: R, 47: S, 48: L, 49: Y, 50: Q, 51: H, 52: q, 53: G, 54: K, 55: J, 56: Z, 57: $, 58: tt, 59: et, 60: it, 61: nt, 62: st, 63: at, 64: rt, 65: lt, 66: ot, 67: ct, 68: ht, 69: ut, 70: dt, 71: ft, 72: pt, 73: yt, 74: gt }), e(Ot, [2, 21]), e(Ot, [2, 22]), e(w, [2, 39]), e(ne, [2, 71], { 75: 81, 35: 132, 76: v, 77: k, 79: A, 80: C }), e(Pt, [2, 73]), { 78: [1, 133] }, e(Pt, [2, 75]), e(Pt, [2, 76]), e(w, [2, 40]), e(w, [2, 41]), e(w, [2, 42]), e(w, [2, 43]), e(w, [2, 44]), e(w, [2, 45]), e(w, [2, 46]), e(w, [2, 47]), e(w, [2, 48]), e(w, [2, 49]), e(w, [2, 50]), e(w, [2, 51]), e(w, [2, 52]), e(w, [2, 53]), e(w, [2, 54]), e(w, [2, 55]), e(w, [2, 56]), e(w, [2, 57]), e(w, [2, 58]), e(w, [2, 60]), e(w, [2, 61]), e(w, [2, 62]), e(w, [2, 63]), e(w, [2, 64]), e(w, [2, 65]), e(w, [2, 66]), e(w, [2, 67]), e(w, [2, 68]), e(w, [2, 69]), e(w, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, e(mt, [2, 28]), e(mt, [2, 29]), e(mt, [2, 30]), e(mt, [2, 31]), e(mt, [2, 32]), e(mt, [2, 33]), e(mt, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, e(Vt, [2, 18]), e(At, [2, 38]), e(ne, [2, 72]), e(Pt, [2, 74]), e(w, [2, 24]), e(w, [2, 35]), e(zt, [2, 25]), e(zt, [2, 26], { 12: [1, 138] }), e(zt, [2, 27])], + defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] }, + parseError: function(_, x) { + if (x.recoverable) + this.trace(_); + else { + var m = new Error(_); + throw m.hash = x, m; + } + }, + parse: function(_) { + var x = this, m = [0], g = [], T = [null], u = [], Tt = this.table, y = "", Et = 0, se = 0, ve = 2, ae = 1, ke = u.slice.call(arguments, 1), D = Object.create(this.lexer), vt = { yy: {} }; + for (var Qt in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, Qt) && (vt.yy[Qt] = this.yy[Qt]); + D.setInput(_, vt.yy), vt.yy.lexer = D, vt.yy.parser = this, typeof D.yylloc == "undefined" && (D.yylloc = {}); + var Ht = D.yylloc; + u.push(Ht); + var Ae = D.options && D.options.ranges; + typeof vt.yy.parseError == "function" ? this.parseError = vt.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function Ce() { + var X; + return X = g.pop() || D.lex() || ae, typeof X != "number" && (X instanceof Array && (g = X, X = g.pop()), X = x.symbols_[X] || X), X; + } + for (var M, kt, N, qt, Ct = {}, Mt, z, re, Lt; ; ) { + if (kt = m[m.length - 1], this.defaultActions[kt] ? N = this.defaultActions[kt] : ((M === null || typeof M == "undefined") && (M = Ce()), N = Tt[kt] && Tt[kt][M]), typeof N == "undefined" || !N.length || !N[0]) { + var Gt = ""; + Lt = []; + for (Mt in Tt[kt]) + this.terminals_[Mt] && Mt > ve && Lt.push("'" + this.terminals_[Mt] + "'"); + D.showPosition ? Gt = "Parse error on line " + (Et + 1) + `: +` + D.showPosition() + ` +Expecting ` + Lt.join(", ") + ", got '" + (this.terminals_[M] || M) + "'" : Gt = "Parse error on line " + (Et + 1) + ": Unexpected " + (M == ae ? "end of input" : "'" + (this.terminals_[M] || M) + "'"), this.parseError(Gt, { + text: D.match, + token: this.terminals_[M] || M, + line: D.yylineno, + loc: Ht, + expected: Lt + }); + } + if (N[0] instanceof Array && N.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + kt + ", token: " + M); + switch (N[0]) { + case 1: + m.push(M), T.push(D.yytext), u.push(D.yylloc), m.push(N[1]), M = null, se = D.yyleng, y = D.yytext, Et = D.yylineno, Ht = D.yylloc; + break; + case 2: + if (z = this.productions_[N[1]][1], Ct.$ = T[T.length - z], Ct._$ = { + first_line: u[u.length - (z || 1)].first_line, + last_line: u[u.length - 1].last_line, + first_column: u[u.length - (z || 1)].first_column, + last_column: u[u.length - 1].last_column + }, Ae && (Ct._$.range = [ + u[u.length - (z || 1)].range[0], + u[u.length - 1].range[1] + ]), qt = this.performAction.apply(Ct, [ + y, + se, + Et, + vt.yy, + N[1], + T, + u + ].concat(ke)), typeof qt != "undefined") + return qt; + z && (m = m.slice(0, -1 * z * 2), T = T.slice(0, -1 * z), u = u.slice(0, -1 * z)), m.push(this.productions_[N[1]][0]), T.push(Ct.$), u.push(Ct._$), re = Tt[m[m.length - 2]][m[m.length - 1]], m.push(re); + break; + case 3: + return !0; + } + } + return !0; + } + }, Ee = function() { + var bt = { + EOF: 1, + parseError: function(x, m) { + if (this.yy.parser) + this.yy.parser.parseError(x, m); + else + throw new Error(x); + }, + // resets the lexer, sets new input + setInput: function(_, x) { + return this.yy = x || this.yy || {}, this._input = _, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var _ = this._input[0]; + this.yytext += _, this.yyleng++, this.offset++, this.match += _, this.matched += _; + var x = _.match(/(?:\r\n?|\n).*/g); + return x ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), _; + }, + // unshifts one char (or a string) into the input + unput: function(_) { + var x = _.length, m = _.split(/(?:\r\n?|\n)/g); + this._input = _ + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - x), this.offset -= x; + var g = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), m.length - 1 && (this.yylineno -= m.length - 1); + var T = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: m ? (m.length === g.length ? this.yylloc.first_column : 0) + g[g.length - m.length].length - m[0].length : this.yylloc.first_column - x + }, this.options.ranges && (this.yylloc.range = [T[0], T[0] + this.yyleng - x]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(_) { + this.unput(this.match.slice(_)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var _ = this.matched.substr(0, this.matched.length - this.match.length); + return (_.length > 20 ? "..." : "") + _.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var _ = this.match; + return _.length < 20 && (_ += this._input.substr(0, 20 - _.length)), (_.substr(0, 20) + (_.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var _ = this.pastInput(), x = new Array(_.length + 1).join("-"); + return _ + this.upcomingInput() + ` +` + x + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(_, x) { + var m, g, T; + if (this.options.backtrack_lexer && (T = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (T.yylloc.range = this.yylloc.range.slice(0))), g = _[0].match(/(?:\r\n?|\n).*/g), g && (this.yylineno += g.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: g ? g[g.length - 1].length - g[g.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + _[0].length + }, this.yytext += _[0], this.match += _[0], this.matches = _, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(_[0].length), this.matched += _[0], m = this.performAction.call(this, this.yy, this, x, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), m) + return m; + if (this._backtrack) { + for (var u in T) + this[u] = T[u]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var _, x, m, g; + this._more || (this.yytext = "", this.match = ""); + for (var T = this._currentRules(), u = 0; u < T.length; u++) + if (m = this._input.match(this.rules[T[u]]), m && (!x || m[0].length > x[0].length)) { + if (x = m, g = u, this.options.backtrack_lexer) { + if (_ = this.test_match(m, T[u]), _ !== !1) + return _; + if (this._backtrack) { + x = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return x ? (_ = this.test_match(x, T[g]), _ !== !1 ? _ : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var x = this.next(); + return x || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(x) { + this.conditionStack.push(x); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var x = this.conditionStack.length - 1; + return x > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(x) { + return x = this.conditionStack.length - 1 - Math.abs(x || 0), x >= 0 ? this.conditionStack[x] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(x) { + this.begin(x); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: {}, + performAction: function(x, m, g, T) { + switch (g) { + case 0: + return 6; + case 1: + return 7; + case 2: + return 8; + case 3: + return 9; + case 4: + return 22; + case 5: + return 23; + case 6: + return this.begin("acc_title"), 24; + case 7: + return this.popState(), "acc_title_value"; + case 8: + return this.begin("acc_descr"), 26; + case 9: + return this.popState(), "acc_descr_value"; + case 10: + this.begin("acc_descr_multiline"); + break; + case 11: + this.popState(); + break; + case 12: + return "acc_descr_multiline_value"; + case 13: + break; + case 14: + c; + break; + case 15: + return 12; + case 16: + break; + case 17: + return 11; + case 18: + return 15; + case 19: + return 16; + case 20: + return 17; + case 21: + return 18; + case 22: + return this.begin("person_ext"), 45; + case 23: + return this.begin("person"), 44; + case 24: + return this.begin("system_ext_queue"), 51; + case 25: + return this.begin("system_ext_db"), 50; + case 26: + return this.begin("system_ext"), 49; + case 27: + return this.begin("system_queue"), 48; + case 28: + return this.begin("system_db"), 47; + case 29: + return this.begin("system"), 46; + case 30: + return this.begin("boundary"), 37; + case 31: + return this.begin("enterprise_boundary"), 34; + case 32: + return this.begin("system_boundary"), 36; + case 33: + return this.begin("container_ext_queue"), 57; + case 34: + return this.begin("container_ext_db"), 56; + case 35: + return this.begin("container_ext"), 55; + case 36: + return this.begin("container_queue"), 54; + case 37: + return this.begin("container_db"), 53; + case 38: + return this.begin("container"), 52; + case 39: + return this.begin("container_boundary"), 38; + case 40: + return this.begin("component_ext_queue"), 63; + case 41: + return this.begin("component_ext_db"), 62; + case 42: + return this.begin("component_ext"), 61; + case 43: + return this.begin("component_queue"), 60; + case 44: + return this.begin("component_db"), 59; + case 45: + return this.begin("component"), 58; + case 46: + return this.begin("node"), 39; + case 47: + return this.begin("node"), 39; + case 48: + return this.begin("node_l"), 40; + case 49: + return this.begin("node_r"), 41; + case 50: + return this.begin("rel"), 64; + case 51: + return this.begin("birel"), 65; + case 52: + return this.begin("rel_u"), 66; + case 53: + return this.begin("rel_u"), 66; + case 54: + return this.begin("rel_d"), 67; + case 55: + return this.begin("rel_d"), 67; + case 56: + return this.begin("rel_l"), 68; + case 57: + return this.begin("rel_l"), 68; + case 58: + return this.begin("rel_r"), 69; + case 59: + return this.begin("rel_r"), 69; + case 60: + return this.begin("rel_b"), 70; + case 61: + return this.begin("rel_index"), 71; + case 62: + return this.begin("update_el_style"), 72; + case 63: + return this.begin("update_rel_style"), 73; + case 64: + return this.begin("update_layout_config"), 74; + case 65: + return "EOF_IN_STRUCT"; + case 66: + return this.begin("attribute"), "ATTRIBUTE_EMPTY"; + case 67: + this.begin("attribute"); + break; + case 68: + this.popState(), this.popState(); + break; + case 69: + return 80; + case 70: + break; + case 71: + return 80; + case 72: + this.begin("string"); + break; + case 73: + this.popState(); + break; + case 74: + return "STR"; + case 75: + this.begin("string_kv"); + break; + case 76: + return this.begin("string_kv_key"), "STR_KEY"; + case 77: + this.popState(), this.begin("string_kv_value"); + break; + case 78: + return "STR_VALUE"; + case 79: + this.popState(), this.popState(); + break; + case 80: + return "STR"; + case 81: + return "LBRACE"; + case 82: + return "RBRACE"; + case 83: + return "SPACE"; + case 84: + return "EOL"; + case 85: + return 14; + } + }, + rules: [/^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:title\s[^#\n;]+)/, /^(?:accDescription\s[^#\n;]+)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/, /^(?:%%[^\n]*(\r?\n)*)/, /^(?:\s*(\r?\n)+)/, /^(?:\s+)/, /^(?:C4Context\b)/, /^(?:C4Container\b)/, /^(?:C4Component\b)/, /^(?:C4Dynamic\b)/, /^(?:C4Deployment\b)/, /^(?:Person_Ext\b)/, /^(?:Person\b)/, /^(?:SystemQueue_Ext\b)/, /^(?:SystemDb_Ext\b)/, /^(?:System_Ext\b)/, /^(?:SystemQueue\b)/, /^(?:SystemDb\b)/, /^(?:System\b)/, /^(?:Boundary\b)/, /^(?:Enterprise_Boundary\b)/, /^(?:System_Boundary\b)/, /^(?:ContainerQueue_Ext\b)/, /^(?:ContainerDb_Ext\b)/, /^(?:Container_Ext\b)/, /^(?:ContainerQueue\b)/, /^(?:ContainerDb\b)/, /^(?:Container\b)/, /^(?:Container_Boundary\b)/, /^(?:ComponentQueue_Ext\b)/, /^(?:ComponentDb_Ext\b)/, /^(?:Component_Ext\b)/, /^(?:ComponentQueue\b)/, /^(?:ComponentDb\b)/, /^(?:Component\b)/, /^(?:Deployment_Node\b)/, /^(?:Node\b)/, /^(?:Node_L\b)/, /^(?:Node_R\b)/, /^(?:Rel\b)/, /^(?:BiRel\b)/, /^(?:Rel_Up\b)/, /^(?:Rel_U\b)/, /^(?:Rel_Down\b)/, /^(?:Rel_D\b)/, /^(?:Rel_Left\b)/, /^(?:Rel_L\b)/, /^(?:Rel_Right\b)/, /^(?:Rel_R\b)/, /^(?:Rel_Back\b)/, /^(?:RelIndex\b)/, /^(?:UpdateElementStyle\b)/, /^(?:UpdateRelStyle\b)/, /^(?:UpdateLayoutConfig\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*["]["])/, /^(?:[ ]*["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:[ ]*[\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:[^,]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[\s]+)/, /^(?:[\n\r]+)/, /^(?:$)/], + conditions: { acc_descr_multiline: { rules: [11, 12], inclusive: !1 }, acc_descr: { rules: [9], inclusive: !1 }, acc_title: { rules: [7], inclusive: !1 }, string_kv_value: { rules: [78, 79], inclusive: !1 }, string_kv_key: { rules: [77], inclusive: !1 }, string_kv: { rules: [76], inclusive: !1 }, string: { rules: [73, 74], inclusive: !1 }, attribute: { rules: [68, 69, 70, 71, 72, 75, 80], inclusive: !1 }, update_layout_config: { rules: [65, 66, 67, 68], inclusive: !1 }, update_rel_style: { rules: [65, 66, 67, 68], inclusive: !1 }, update_el_style: { rules: [65, 66, 67, 68], inclusive: !1 }, rel_b: { rules: [65, 66, 67, 68], inclusive: !1 }, rel_r: { rules: [65, 66, 67, 68], inclusive: !1 }, rel_l: { rules: [65, 66, 67, 68], inclusive: !1 }, rel_d: { rules: [65, 66, 67, 68], inclusive: !1 }, rel_u: { rules: [65, 66, 67, 68], inclusive: !1 }, rel_bi: { rules: [], inclusive: !1 }, rel: { rules: [65, 66, 67, 68], inclusive: !1 }, node_r: { rules: [65, 66, 67, 68], inclusive: !1 }, node_l: { rules: [65, 66, 67, 68], inclusive: !1 }, node: { rules: [65, 66, 67, 68], inclusive: !1 }, index: { rules: [], inclusive: !1 }, rel_index: { rules: [65, 66, 67, 68], inclusive: !1 }, component_ext_queue: { rules: [], inclusive: !1 }, component_ext_db: { rules: [65, 66, 67, 68], inclusive: !1 }, component_ext: { rules: [65, 66, 67, 68], inclusive: !1 }, component_queue: { rules: [65, 66, 67, 68], inclusive: !1 }, component_db: { rules: [65, 66, 67, 68], inclusive: !1 }, component: { rules: [65, 66, 67, 68], inclusive: !1 }, container_boundary: { rules: [65, 66, 67, 68], inclusive: !1 }, container_ext_queue: { rules: [65, 66, 67, 68], inclusive: !1 }, container_ext_db: { rules: [65, 66, 67, 68], inclusive: !1 }, container_ext: { rules: [65, 66, 67, 68], inclusive: !1 }, container_queue: { rules: [65, 66, 67, 68], inclusive: !1 }, container_db: { rules: [65, 66, 67, 68], inclusive: !1 }, container: { rules: [65, 66, 67, 68], inclusive: !1 }, birel: { rules: [65, 66, 67, 68], inclusive: !1 }, system_boundary: { rules: [65, 66, 67, 68], inclusive: !1 }, enterprise_boundary: { rules: [65, 66, 67, 68], inclusive: !1 }, boundary: { rules: [65, 66, 67, 68], inclusive: !1 }, system_ext_queue: { rules: [65, 66, 67, 68], inclusive: !1 }, system_ext_db: { rules: [65, 66, 67, 68], inclusive: !1 }, system_ext: { rules: [65, 66, 67, 68], inclusive: !1 }, system_queue: { rules: [65, 66, 67, 68], inclusive: !1 }, system_db: { rules: [65, 66, 67, 68], inclusive: !1 }, system: { rules: [65, 66, 67, 68], inclusive: !1 }, person_ext: { rules: [65, 66, 67, 68], inclusive: !1 }, person: { rules: [65, 66, 67, 68], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], inclusive: !0 } } + }; + return bt; + }(); + Xt.lexer = Ee; + function Wt() { + this.yy = {}; + } + return Wt.prototype = Xt, Xt.Parser = Wt, new Wt(); +}(); +Yt.parser = Yt; +const Be = Yt; +let U = [], _t = [""], P = "global", j = "", V = [ + { + alias: "global", + label: { text: "global" }, + type: { text: "global" }, + tags: null, + link: null, + parentBoundary: "" + } +], St = [], te = "", ee = !1, It = 4, jt = 2; +var de; +const Ye = function() { + return de; +}, Ie = function(e) { + de = ue(e, Dt()); +}, je = function(e, t, a, o, l, i, s, r, n) { + if (e == null || t === void 0 || t === null || a === void 0 || a === null || o === void 0 || o === null) + return; + let h = {}; + const f = St.find((d) => d.from === t && d.to === a); + if (f ? h = f : St.push(h), h.type = e, h.from = t, h.to = a, h.label = { text: o }, l == null) + h.techn = { text: "" }; + else if (typeof l == "object") { + let [d, p] = Object.entries(l)[0]; + h[d] = { text: p }; + } else + h.techn = { text: l }; + if (i == null) + h.descr = { text: "" }; + else if (typeof i == "object") { + let [d, p] = Object.entries(i)[0]; + h[d] = { text: p }; + } else + h.descr = { text: i }; + if (typeof s == "object") { + let [d, p] = Object.entries(s)[0]; + h[d] = p; + } else + h.sprite = s; + if (typeof r == "object") { + let [d, p] = Object.entries(r)[0]; + h[d] = p; + } else + h.tags = r; + if (typeof n == "object") { + let [d, p] = Object.entries(n)[0]; + h[d] = p; + } else + h.link = n; + h.wrap = xt(); +}, Ue = function(e, t, a, o, l, i, s) { + if (t === null || a === null) + return; + let r = {}; + const n = U.find((h) => h.alias === t); + if (n && t === n.alias ? r = n : (r.alias = t, U.push(r)), a == null ? r.label = { text: "" } : r.label = { text: a }, o == null) + r.descr = { text: "" }; + else if (typeof o == "object") { + let [h, f] = Object.entries(o)[0]; + r[h] = { text: f }; + } else + r.descr = { text: o }; + if (typeof l == "object") { + let [h, f] = Object.entries(l)[0]; + r[h] = f; + } else + r.sprite = l; + if (typeof i == "object") { + let [h, f] = Object.entries(i)[0]; + r[h] = f; + } else + r.tags = i; + if (typeof s == "object") { + let [h, f] = Object.entries(s)[0]; + r[h] = f; + } else + r.link = s; + r.typeC4Shape = { text: e }, r.parentBoundary = P, r.wrap = xt(); +}, Fe = function(e, t, a, o, l, i, s, r) { + if (t === null || a === null) + return; + let n = {}; + const h = U.find((f) => f.alias === t); + if (h && t === h.alias ? n = h : (n.alias = t, U.push(n)), a == null ? n.label = { text: "" } : n.label = { text: a }, o == null) + n.techn = { text: "" }; + else if (typeof o == "object") { + let [f, d] = Object.entries(o)[0]; + n[f] = { text: d }; + } else + n.techn = { text: o }; + if (l == null) + n.descr = { text: "" }; + else if (typeof l == "object") { + let [f, d] = Object.entries(l)[0]; + n[f] = { text: d }; + } else + n.descr = { text: l }; + if (typeof i == "object") { + let [f, d] = Object.entries(i)[0]; + n[f] = d; + } else + n.sprite = i; + if (typeof s == "object") { + let [f, d] = Object.entries(s)[0]; + n[f] = d; + } else + n.tags = s; + if (typeof r == "object") { + let [f, d] = Object.entries(r)[0]; + n[f] = d; + } else + n.link = r; + n.wrap = xt(), n.typeC4Shape = { text: e }, n.parentBoundary = P; +}, Ve = function(e, t, a, o, l, i, s, r) { + if (t === null || a === null) + return; + let n = {}; + const h = U.find((f) => f.alias === t); + if (h && t === h.alias ? n = h : (n.alias = t, U.push(n)), a == null ? n.label = { text: "" } : n.label = { text: a }, o == null) + n.techn = { text: "" }; + else if (typeof o == "object") { + let [f, d] = Object.entries(o)[0]; + n[f] = { text: d }; + } else + n.techn = { text: o }; + if (l == null) + n.descr = { text: "" }; + else if (typeof l == "object") { + let [f, d] = Object.entries(l)[0]; + n[f] = { text: d }; + } else + n.descr = { text: l }; + if (typeof i == "object") { + let [f, d] = Object.entries(i)[0]; + n[f] = d; + } else + n.sprite = i; + if (typeof s == "object") { + let [f, d] = Object.entries(s)[0]; + n[f] = d; + } else + n.tags = s; + if (typeof r == "object") { + let [f, d] = Object.entries(r)[0]; + n[f] = d; + } else + n.link = r; + n.wrap = xt(), n.typeC4Shape = { text: e }, n.parentBoundary = P; +}, ze = function(e, t, a, o, l) { + if (e === null || t === null) + return; + let i = {}; + const s = V.find((r) => r.alias === e); + if (s && e === s.alias ? i = s : (i.alias = e, V.push(i)), t == null ? i.label = { text: "" } : i.label = { text: t }, a == null) + i.type = { text: "system" }; + else if (typeof a == "object") { + let [r, n] = Object.entries(a)[0]; + i[r] = { text: n }; + } else + i.type = { text: a }; + if (typeof o == "object") { + let [r, n] = Object.entries(o)[0]; + i[r] = n; + } else + i.tags = o; + if (typeof l == "object") { + let [r, n] = Object.entries(l)[0]; + i[r] = n; + } else + i.link = l; + i.parentBoundary = P, i.wrap = xt(), j = P, P = e, _t.push(j); +}, Xe = function(e, t, a, o, l) { + if (e === null || t === null) + return; + let i = {}; + const s = V.find((r) => r.alias === e); + if (s && e === s.alias ? i = s : (i.alias = e, V.push(i)), t == null ? i.label = { text: "" } : i.label = { text: t }, a == null) + i.type = { text: "container" }; + else if (typeof a == "object") { + let [r, n] = Object.entries(a)[0]; + i[r] = { text: n }; + } else + i.type = { text: a }; + if (typeof o == "object") { + let [r, n] = Object.entries(o)[0]; + i[r] = n; + } else + i.tags = o; + if (typeof l == "object") { + let [r, n] = Object.entries(l)[0]; + i[r] = n; + } else + i.link = l; + i.parentBoundary = P, i.wrap = xt(), j = P, P = e, _t.push(j); +}, We = function(e, t, a, o, l, i, s, r) { + if (t === null || a === null) + return; + let n = {}; + const h = V.find((f) => f.alias === t); + if (h && t === h.alias ? n = h : (n.alias = t, V.push(n)), a == null ? n.label = { text: "" } : n.label = { text: a }, o == null) + n.type = { text: "node" }; + else if (typeof o == "object") { + let [f, d] = Object.entries(o)[0]; + n[f] = { text: d }; + } else + n.type = { text: o }; + if (l == null) + n.descr = { text: "" }; + else if (typeof l == "object") { + let [f, d] = Object.entries(l)[0]; + n[f] = { text: d }; + } else + n.descr = { text: l }; + if (typeof s == "object") { + let [f, d] = Object.entries(s)[0]; + n[f] = d; + } else + n.tags = s; + if (typeof r == "object") { + let [f, d] = Object.entries(r)[0]; + n[f] = d; + } else + n.link = r; + n.nodeType = e, n.parentBoundary = P, n.wrap = xt(), j = P, P = t, _t.push(j); +}, Qe = function() { + P = j, _t.pop(), j = _t.pop(), _t.push(j); +}, He = function(e, t, a, o, l, i, s, r, n, h, f) { + let d = U.find((p) => p.alias === t); + if (!(d === void 0 && (d = V.find((p) => p.alias === t), d === void 0))) { + if (a != null) + if (typeof a == "object") { + let [p, E] = Object.entries(a)[0]; + d[p] = E; + } else + d.bgColor = a; + if (o != null) + if (typeof o == "object") { + let [p, E] = Object.entries(o)[0]; + d[p] = E; + } else + d.fontColor = o; + if (l != null) + if (typeof l == "object") { + let [p, E] = Object.entries(l)[0]; + d[p] = E; + } else + d.borderColor = l; + if (i != null) + if (typeof i == "object") { + let [p, E] = Object.entries(i)[0]; + d[p] = E; + } else + d.shadowing = i; + if (s != null) + if (typeof s == "object") { + let [p, E] = Object.entries(s)[0]; + d[p] = E; + } else + d.shape = s; + if (r != null) + if (typeof r == "object") { + let [p, E] = Object.entries(r)[0]; + d[p] = E; + } else + d.sprite = r; + if (n != null) + if (typeof n == "object") { + let [p, E] = Object.entries(n)[0]; + d[p] = E; + } else + d.techn = n; + if (h != null) + if (typeof h == "object") { + let [p, E] = Object.entries(h)[0]; + d[p] = E; + } else + d.legendText = h; + if (f != null) + if (typeof f == "object") { + let [p, E] = Object.entries(f)[0]; + d[p] = E; + } else + d.legendSprite = f; + } +}, qe = function(e, t, a, o, l, i, s) { + const r = St.find((n) => n.from === t && n.to === a); + if (r !== void 0) { + if (o != null) + if (typeof o == "object") { + let [n, h] = Object.entries(o)[0]; + r[n] = h; + } else + r.textColor = o; + if (l != null) + if (typeof l == "object") { + let [n, h] = Object.entries(l)[0]; + r[n] = h; + } else + r.lineColor = l; + if (i != null) + if (typeof i == "object") { + let [n, h] = Object.entries(i)[0]; + r[n] = parseInt(h); + } else + r.offsetX = parseInt(i); + if (s != null) + if (typeof s == "object") { + let [n, h] = Object.entries(s)[0]; + r[n] = parseInt(h); + } else + r.offsetY = parseInt(s); + } +}, Ge = function(e, t, a) { + let o = It, l = jt; + if (typeof t == "object") { + const i = Object.values(t)[0]; + o = parseInt(i); + } else + o = parseInt(t); + if (typeof a == "object") { + const i = Object.values(a)[0]; + l = parseInt(i); + } else + l = parseInt(a); + o >= 1 && (It = o), l >= 1 && (jt = l); +}, Ke = function() { + return It; +}, Je = function() { + return jt; +}, Ze = function() { + return P; +}, $e = function() { + return j; +}, fe = function(e) { + return e == null ? U : U.filter((t) => t.parentBoundary === e); +}, t0 = function(e) { + return U.find((t) => t.alias === e); +}, e0 = function(e) { + return Object.keys(fe(e)); +}, pe = function(e) { + return e == null ? V : V.filter((t) => t.parentBoundary === e); +}, i0 = pe, n0 = function() { + return St; +}, s0 = function() { + return te; +}, a0 = function(e) { + ee = e; +}, xt = function() { + return ee; +}, r0 = function() { + U = [], V = [ + { + alias: "global", + label: { text: "global" }, + type: { text: "global" }, + tags: null, + link: null, + parentBoundary: "" + } + ], j = "", P = "global", _t = [""], St = [], _t = [""], te = "", ee = !1, It = 4, jt = 2; +}, l0 = { + SOLID: 0, + DOTTED: 1, + NOTE: 2, + SOLID_CROSS: 3, + DOTTED_CROSS: 4, + SOLID_OPEN: 5, + DOTTED_OPEN: 6, + LOOP_START: 10, + LOOP_END: 11, + ALT_START: 12, + ALT_ELSE: 13, + ALT_END: 14, + OPT_START: 15, + OPT_END: 16, + ACTIVE_START: 17, + ACTIVE_END: 18, + PAR_START: 19, + PAR_AND: 20, + PAR_END: 21, + RECT_START: 22, + RECT_END: 23, + SOLID_POINT: 24, + DOTTED_POINT: 25 +}, o0 = { + FILLED: 0, + OPEN: 1 +}, c0 = { + LEFTOF: 0, + RIGHTOF: 1, + OVER: 2 +}, h0 = function(e) { + te = ue(e, Dt()); +}, Jt = { + addPersonOrSystem: Ue, + addPersonOrSystemBoundary: ze, + addContainer: Fe, + addContainerBoundary: Xe, + addComponent: Ve, + addDeploymentNode: We, + popBoundaryParseStack: Qe, + addRel: je, + updateElStyle: He, + updateRelStyle: qe, + updateLayoutConfig: Ge, + autoWrap: xt, + setWrap: a0, + getC4ShapeArray: fe, + getC4Shape: t0, + getC4ShapeKeys: e0, + getBoundaries: pe, + getBoundarys: i0, + getCurrentBoundaryParse: Ze, + getParentBoundaryParse: $e, + getRels: n0, + getTitle: s0, + getC4Type: Ye, + getC4ShapeInRow: Ke, + getC4BoundaryInRow: Je, + setAccTitle: we, + getAccTitle: Oe, + getAccDescription: Te, + setAccDescription: Re, + getConfig: () => Dt().c4, + clear: r0, + LINETYPE: l0, + ARROWTYPE: o0, + PLACEMENT: c0, + setTitle: h0, + setC4Type: Ie + // apply, +}, ie = function(e, t) { + return Le(e, t); +}, ye = function(e, t, a, o, l, i) { + const s = e.append("image"); + s.attr("width", t), s.attr("height", a), s.attr("x", o), s.attr("y", l); + let r = i.startsWith("data:image/png;base64") ? i : Me.sanitizeUrl(i); + s.attr("xlink:href", r); +}, u0 = (e, t, a) => { + const o = e.append("g"); + let l = 0; + for (let i of t) { + let s = i.textColor ? i.textColor : "#444444", r = i.lineColor ? i.lineColor : "#444444", n = i.offsetX ? parseInt(i.offsetX) : 0, h = i.offsetY ? parseInt(i.offsetY) : 0, f = ""; + if (l === 0) { + let p = o.append("line"); + p.attr("x1", i.startPoint.x), p.attr("y1", i.startPoint.y), p.attr("x2", i.endPoint.x), p.attr("y2", i.endPoint.y), p.attr("stroke-width", "1"), p.attr("stroke", r), p.style("fill", "none"), i.type !== "rel_b" && p.attr("marker-end", "url(" + f + "#arrowhead)"), (i.type === "birel" || i.type === "rel_b") && p.attr("marker-start", "url(" + f + "#arrowend)"), l = -1; + } else { + let p = o.append("path"); + p.attr("fill", "none").attr("stroke-width", "1").attr("stroke", r).attr( + "d", + "Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx", i.startPoint.x).replaceAll("starty", i.startPoint.y).replaceAll( + "controlx", + i.startPoint.x + (i.endPoint.x - i.startPoint.x) / 2 - (i.endPoint.x - i.startPoint.x) / 4 + ).replaceAll("controly", i.startPoint.y + (i.endPoint.y - i.startPoint.y) / 2).replaceAll("stopx", i.endPoint.x).replaceAll("stopy", i.endPoint.y) + ), i.type !== "rel_b" && p.attr("marker-end", "url(" + f + "#arrowhead)"), (i.type === "birel" || i.type === "rel_b") && p.attr("marker-start", "url(" + f + "#arrowend)"); + } + let d = a.messageFont(); + W(a)( + i.label.text, + o, + Math.min(i.startPoint.x, i.endPoint.x) + Math.abs(i.endPoint.x - i.startPoint.x) / 2 + n, + Math.min(i.startPoint.y, i.endPoint.y) + Math.abs(i.endPoint.y - i.startPoint.y) / 2 + h, + i.label.width, + i.label.height, + { fill: s }, + d + ), i.techn && i.techn.text !== "" && (d = a.messageFont(), W(a)( + "[" + i.techn.text + "]", + o, + Math.min(i.startPoint.x, i.endPoint.x) + Math.abs(i.endPoint.x - i.startPoint.x) / 2 + n, + Math.min(i.startPoint.y, i.endPoint.y) + Math.abs(i.endPoint.y - i.startPoint.y) / 2 + a.messageFontSize + 5 + h, + Math.max(i.label.width, i.techn.width), + i.techn.height, + { fill: s, "font-style": "italic" }, + d + )); + } +}, d0 = function(e, t, a) { + const o = e.append("g"); + let l = t.bgColor ? t.bgColor : "none", i = t.borderColor ? t.borderColor : "#444444", s = t.fontColor ? t.fontColor : "black", r = { "stroke-width": 1, "stroke-dasharray": "7.0,7.0" }; + t.nodeType && (r = { "stroke-width": 1 }); + let n = { + x: t.x, + y: t.y, + fill: l, + stroke: i, + width: t.width, + height: t.height, + rx: 2.5, + ry: 2.5, + attrs: r + }; + ie(o, n); + let h = a.boundaryFont(); + h.fontWeight = "bold", h.fontSize = h.fontSize + 2, h.fontColor = s, W(a)( + t.label.text, + o, + t.x, + t.y + t.label.Y, + t.width, + t.height, + { fill: "#444444" }, + h + ), t.type && t.type.text !== "" && (h = a.boundaryFont(), h.fontColor = s, W(a)( + t.type.text, + o, + t.x, + t.y + t.type.Y, + t.width, + t.height, + { fill: "#444444" }, + h + )), t.descr && t.descr.text !== "" && (h = a.boundaryFont(), h.fontSize = h.fontSize - 2, h.fontColor = s, W(a)( + t.descr.text, + o, + t.x, + t.y + t.descr.Y, + t.width, + t.height, + { fill: "#444444" }, + h + )); +}, f0 = function(e, t, a) { + var o; + let l = t.bgColor ? t.bgColor : a[t.typeC4Shape.text + "_bg_color"], i = t.borderColor ? t.borderColor : a[t.typeC4Shape.text + "_border_color"], s = t.fontColor ? t.fontColor : "#FFFFFF", r = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII="; + switch (t.typeC4Shape.text) { + case "person": + r = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII="; + break; + case "external_person": + r = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="; + break; + } + const n = e.append("g"); + n.attr("class", "person-man"); + const h = Ne(); + switch (t.typeC4Shape.text) { + case "person": + case "external_person": + case "system": + case "external_system": + case "container": + case "external_container": + case "component": + case "external_component": + h.x = t.x, h.y = t.y, h.fill = l, h.width = t.width, h.height = t.height, h.stroke = i, h.rx = 2.5, h.ry = 2.5, h.attrs = { "stroke-width": 0.5 }, ie(n, h); + break; + case "system_db": + case "external_system_db": + case "container_db": + case "external_container_db": + case "component_db": + case "external_component_db": + n.append("path").attr("fill", l).attr("stroke-width", "0.5").attr("stroke", i).attr( + "d", + "Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx", t.x).replaceAll("starty", t.y).replaceAll("half", t.width / 2).replaceAll("height", t.height) + ), n.append("path").attr("fill", "none").attr("stroke-width", "0.5").attr("stroke", i).attr( + "d", + "Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx", t.x).replaceAll("starty", t.y).replaceAll("half", t.width / 2) + ); + break; + case "system_queue": + case "external_system_queue": + case "container_queue": + case "external_container_queue": + case "component_queue": + case "external_component_queue": + n.append("path").attr("fill", l).attr("stroke-width", "0.5").attr("stroke", i).attr( + "d", + "Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx", t.x).replaceAll("starty", t.y).replaceAll("width", t.width).replaceAll("half", t.height / 2) + ), n.append("path").attr("fill", "none").attr("stroke-width", "0.5").attr("stroke", i).attr( + "d", + "Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx", t.x + t.width).replaceAll("starty", t.y).replaceAll("half", t.height / 2) + ); + break; + } + let f = v0(a, t.typeC4Shape.text); + switch (n.append("text").attr("fill", s).attr("font-family", f.fontFamily).attr("font-size", f.fontSize - 2).attr("font-style", "italic").attr("lengthAdjust", "spacing").attr("textLength", t.typeC4Shape.width).attr("x", t.x + t.width / 2 - t.typeC4Shape.width / 2).attr("y", t.y + t.typeC4Shape.Y).text("<<" + t.typeC4Shape.text + ">>"), t.typeC4Shape.text) { + case "person": + case "external_person": + ye( + n, + 48, + 48, + t.x + t.width / 2 - 24, + t.y + t.image.Y, + r + ); + break; + } + let d = a[t.typeC4Shape.text + "Font"](); + return d.fontWeight = "bold", d.fontSize = d.fontSize + 2, d.fontColor = s, W(a)( + t.label.text, + n, + t.x, + t.y + t.label.Y, + t.width, + t.height, + { fill: s }, + d + ), d = a[t.typeC4Shape.text + "Font"](), d.fontColor = s, t.techn && ((o = t.techn) == null ? void 0 : o.text) !== "" ? W(a)( + t.techn.text, + n, + t.x, + t.y + t.techn.Y, + t.width, + t.height, + { fill: s, "font-style": "italic" }, + d + ) : t.type && t.type.text !== "" && W(a)( + t.type.text, + n, + t.x, + t.y + t.type.Y, + t.width, + t.height, + { fill: s, "font-style": "italic" }, + d + ), t.descr && t.descr.text !== "" && (d = a.personFont(), d.fontColor = s, W(a)( + t.descr.text, + n, + t.x, + t.y + t.descr.Y, + t.width, + t.height, + { fill: s }, + d + )), t.height; +}, p0 = function(e) { + e.append("defs").append("symbol").attr("id", "database").attr("fill-rule", "evenodd").attr("clip-rule", "evenodd").append("path").attr("transform", "scale(.5)").attr( + "d", + "M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" + ); +}, y0 = function(e) { + e.append("defs").append("symbol").attr("id", "computer").attr("width", "24").attr("height", "24").append("path").attr("transform", "scale(.5)").attr( + "d", + "M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" + ); +}, g0 = function(e) { + e.append("defs").append("symbol").attr("id", "clock").attr("width", "24").attr("height", "24").append("path").attr("transform", "scale(.5)").attr( + "d", + "M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" + ); +}, b0 = function(e) { + e.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 9).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z"); +}, _0 = function(e) { + e.append("defs").append("marker").attr("id", "arrowend").attr("refX", 1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 10 0 L 0 5 L 10 10 z"); +}, x0 = function(e) { + e.append("defs").append("marker").attr("id", "filled-head").attr("refX", 18).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); +}, m0 = function(e) { + e.append("defs").append("marker").attr("id", "sequencenumber").attr("refX", 15).attr("refY", 15).attr("markerWidth", 60).attr("markerHeight", 40).attr("orient", "auto").append("circle").attr("cx", 15).attr("cy", 15).attr("r", 6); +}, E0 = function(e) { + const a = e.append("defs").append("marker").attr("id", "crosshead").attr("markerWidth", 15).attr("markerHeight", 8).attr("orient", "auto").attr("refX", 16).attr("refY", 4); + a.append("path").attr("fill", "black").attr("stroke", "#000000").style("stroke-dasharray", "0, 0").attr("stroke-width", "1px").attr("d", "M 9,2 V 6 L16,4 Z"), a.append("path").attr("fill", "none").attr("stroke", "#000000").style("stroke-dasharray", "0, 0").attr("stroke-width", "1px").attr("d", "M 0,1 L 6,7 M 6,1 L 0,7"); +}, v0 = (e, t) => ({ + fontFamily: e[t + "FontFamily"], + fontSize: e[t + "FontSize"], + fontWeight: e[t + "FontWeight"] +}), W = function() { + function e(l, i, s, r, n, h, f) { + const d = i.append("text").attr("x", s + n / 2).attr("y", r + h / 2 + 5).style("text-anchor", "middle").text(l); + o(d, f); + } + function t(l, i, s, r, n, h, f, d) { + const { fontSize: p, fontFamily: E, fontWeight: O } = d, R = l.split(Kt.lineBreakRegex); + for (let S = 0; S < R.length; S++) { + const L = S * p - p * (R.length - 1) / 2, Y = i.append("text").attr("x", s + n / 2).attr("y", r).style("text-anchor", "middle").attr("dominant-baseline", "middle").style("font-size", p).style("font-weight", O).style("font-family", E); + Y.append("tspan").attr("dy", L).text(R[S]).attr("alignment-baseline", "mathematical"), o(Y, f); + } + } + function a(l, i, s, r, n, h, f, d) { + const p = i.append("switch"), O = p.append("foreignObject").attr("x", s).attr("y", r).attr("width", n).attr("height", h).append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + O.append("div").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(l), t(l, p, s, r, n, h, f, d), o(O, f); + } + function o(l, i) { + for (const s in i) + i.hasOwnProperty(s) && l.attr(s, i[s]); + } + return function(l) { + return l.textPlacement === "fo" ? a : l.textPlacement === "old" ? e : t; + }; +}(), F = { + drawRect: ie, + drawBoundary: d0, + drawC4Shape: f0, + drawRels: u0, + drawImage: ye, + insertArrowHead: b0, + insertArrowEnd: _0, + insertArrowFilledHead: x0, + insertDynamicNumber: m0, + insertArrowCrossHead: E0, + insertDatabaseIcon: p0, + insertComputerIcon: y0, + insertClockIcon: g0 +}; +let Ut = 0, Ft = 0, ge = 4, Zt = 2; +Yt.yy = Jt; +let b = {}; +class be { + constructor(t) { + this.name = "", this.data = {}, this.data.startx = void 0, this.data.stopx = void 0, this.data.starty = void 0, this.data.stopy = void 0, this.data.widthLimit = void 0, this.nextData = {}, this.nextData.startx = void 0, this.nextData.stopx = void 0, this.nextData.starty = void 0, this.nextData.stopy = void 0, this.nextData.cnt = 0, $t(t.db.getConfig()); + } + setData(t, a, o, l) { + this.nextData.startx = this.data.startx = t, this.nextData.stopx = this.data.stopx = a, this.nextData.starty = this.data.starty = o, this.nextData.stopy = this.data.stopy = l; + } + updateVal(t, a, o, l) { + t[a] === void 0 ? t[a] = o : t[a] = l(o, t[a]); + } + insert(t) { + this.nextData.cnt = this.nextData.cnt + 1; + let a = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + t.margin : this.nextData.stopx + t.margin * 2, o = a + t.width, l = this.nextData.starty + t.margin * 2, i = l + t.height; + (a >= this.data.widthLimit || o >= this.data.widthLimit || this.nextData.cnt > ge) && (a = this.nextData.startx + t.margin + b.nextLinePaddingX, l = this.nextData.stopy + t.margin * 2, this.nextData.stopx = o = a + t.width, this.nextData.starty = this.nextData.stopy, this.nextData.stopy = i = l + t.height, this.nextData.cnt = 1), t.x = a, t.y = l, this.updateVal(this.data, "startx", a, Math.min), this.updateVal(this.data, "starty", l, Math.min), this.updateVal(this.data, "stopx", o, Math.max), this.updateVal(this.data, "stopy", i, Math.max), this.updateVal(this.nextData, "startx", a, Math.min), this.updateVal(this.nextData, "starty", l, Math.min), this.updateVal(this.nextData, "stopx", o, Math.max), this.updateVal(this.nextData, "stopy", i, Math.max); + } + init(t) { + this.name = "", this.data = { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0, + widthLimit: void 0 + }, this.nextData = { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0, + cnt: 0 + }, $t(t.db.getConfig()); + } + bumpLastMargin(t) { + this.data.stopx += t, this.data.stopy += t; + } +} +const $t = function(e) { + De(b, e), e.fontFamily && (b.personFontFamily = b.systemFontFamily = b.messageFontFamily = e.fontFamily), e.fontSize && (b.personFontSize = b.systemFontSize = b.messageFontSize = e.fontSize), e.fontWeight && (b.personFontWeight = b.systemFontWeight = b.messageFontWeight = e.fontWeight); +}, Rt = (e, t) => ({ + fontFamily: e[t + "FontFamily"], + fontSize: e[t + "FontSize"], + fontWeight: e[t + "FontWeight"] +}), Bt = (e) => ({ + fontFamily: e.boundaryFontFamily, + fontSize: e.boundaryFontSize, + fontWeight: e.boundaryFontWeight +}), k0 = (e) => ({ + fontFamily: e.messageFontFamily, + fontSize: e.messageFontSize, + fontWeight: e.messageFontWeight +}); +function I(e, t, a, o, l) { + if (!t[e].width) + if (a) + t[e].text = Pe(t[e].text, l, o), t[e].textLines = t[e].text.split(Kt.lineBreakRegex).length, t[e].width = l, t[e].height = oe(t[e].text, o); + else { + let i = t[e].text.split(Kt.lineBreakRegex); + t[e].textLines = i.length; + let s = 0; + t[e].height = 0, t[e].width = 0; + for (const r of i) + t[e].width = Math.max( + wt(r, o), + t[e].width + ), s = oe(r, o), t[e].height = t[e].height + s; + } +} +const _e = function(e, t, a) { + t.x = a.data.startx, t.y = a.data.starty, t.width = a.data.stopx - a.data.startx, t.height = a.data.stopy - a.data.starty, t.label.y = b.c4ShapeMargin - 35; + let o = t.wrap && b.wrap, l = Bt(b); + l.fontSize = l.fontSize + 2, l.fontWeight = "bold"; + let i = wt(t.label.text, l); + I("label", t, o, l, i), F.drawBoundary(e, t, b); +}, xe = function(e, t, a, o) { + let l = 0; + for (const i of o) { + l = 0; + const s = a[i]; + let r = Rt(b, s.typeC4Shape.text); + switch (r.fontSize = r.fontSize - 2, s.typeC4Shape.width = wt( + "«" + s.typeC4Shape.text + "»", + r + ), s.typeC4Shape.height = r.fontSize + 2, s.typeC4Shape.Y = b.c4ShapePadding, l = s.typeC4Shape.Y + s.typeC4Shape.height - 4, s.image = { width: 0, height: 0, Y: 0 }, s.typeC4Shape.text) { + case "person": + case "external_person": + s.image.width = 48, s.image.height = 48, s.image.Y = l, l = s.image.Y + s.image.height; + break; + } + s.sprite && (s.image.width = 48, s.image.height = 48, s.image.Y = l, l = s.image.Y + s.image.height); + let n = s.wrap && b.wrap, h = b.width - b.c4ShapePadding * 2, f = Rt(b, s.typeC4Shape.text); + if (f.fontSize = f.fontSize + 2, f.fontWeight = "bold", I("label", s, n, f, h), s.label.Y = l + 8, l = s.label.Y + s.label.height, s.type && s.type.text !== "") { + s.type.text = "[" + s.type.text + "]"; + let E = Rt(b, s.typeC4Shape.text); + I("type", s, n, E, h), s.type.Y = l + 5, l = s.type.Y + s.type.height; + } else if (s.techn && s.techn.text !== "") { + s.techn.text = "[" + s.techn.text + "]"; + let E = Rt(b, s.techn.text); + I("techn", s, n, E, h), s.techn.Y = l + 5, l = s.techn.Y + s.techn.height; + } + let d = l, p = s.label.width; + if (s.descr && s.descr.text !== "") { + let E = Rt(b, s.typeC4Shape.text); + I("descr", s, n, E, h), s.descr.Y = l + 20, l = s.descr.Y + s.descr.height, p = Math.max(s.label.width, s.descr.width), d = l - s.descr.textLines * 5; + } + p = p + b.c4ShapePadding, s.width = Math.max(s.width || b.width, p, b.width), s.height = Math.max(s.height || b.height, d, b.height), s.margin = s.margin || b.c4ShapeMargin, e.insert(s), F.drawC4Shape(t, s, b); + } + e.bumpLastMargin(b.c4ShapeMargin); +}; +class B { + constructor(t, a) { + this.x = t, this.y = a; + } +} +let ce = function(e, t) { + let a = e.x, o = e.y, l = t.x, i = t.y, s = a + e.width / 2, r = o + e.height / 2, n = Math.abs(a - l), h = Math.abs(o - i), f = h / n, d = e.height / e.width, p = null; + return o == i && a < l ? p = new B(a + e.width, r) : o == i && a > l ? p = new B(a, r) : a == l && o < i ? p = new B(s, o + e.height) : a == l && o > i && (p = new B(s, o)), a > l && o < i ? d >= f ? p = new B(a, r + f * e.width / 2) : p = new B( + s - n / h * e.height / 2, + o + e.height + ) : a < l && o < i ? d >= f ? p = new B(a + e.width, r + f * e.width / 2) : p = new B( + s + n / h * e.height / 2, + o + e.height + ) : a < l && o > i ? d >= f ? p = new B(a + e.width, r - f * e.width / 2) : p = new B(s + e.height / 2 * n / h, o) : a > l && o > i && (d >= f ? p = new B(a, r - e.width / 2 * f) : p = new B(s - e.height / 2 * n / h, o)), p; +}, A0 = function(e, t) { + let a = { x: 0, y: 0 }; + a.x = t.x + t.width / 2, a.y = t.y + t.height / 2; + let o = ce(e, a); + a.x = e.x + e.width / 2, a.y = e.y + e.height / 2; + let l = ce(t, a); + return { startPoint: o, endPoint: l }; +}; +const C0 = function(e, t, a, o) { + let l = 0; + for (let i of t) { + l = l + 1; + let s = i.wrap && b.wrap, r = k0(b); + o.db.getC4Type() === "C4Dynamic" && (i.label.text = l + ": " + i.label.text); + let h = wt(i.label.text, r); + I("label", i, s, r, h), i.techn && i.techn.text !== "" && (h = wt(i.techn.text, r), I("techn", i, s, r, h)), i.descr && i.descr.text !== "" && (h = wt(i.descr.text, r), I("descr", i, s, r, h)); + let f = a(i.from), d = a(i.to), p = A0(f, d); + i.startPoint = p.startPoint, i.endPoint = p.endPoint; + } + F.drawRels(e, t, b); +}; +function me(e, t, a, o, l) { + let i = new be(l); + i.data.widthLimit = a.data.widthLimit / Math.min(Zt, o.length); + for (let [s, r] of o.entries()) { + let n = 0; + r.image = { width: 0, height: 0, Y: 0 }, r.sprite && (r.image.width = 48, r.image.height = 48, r.image.Y = n, n = r.image.Y + r.image.height); + let h = r.wrap && b.wrap, f = Bt(b); + if (f.fontSize = f.fontSize + 2, f.fontWeight = "bold", I( + "label", + r, + h, + f, + i.data.widthLimit + ), r.label.Y = n + 8, n = r.label.Y + r.label.height, r.type && r.type.text !== "") { + r.type.text = "[" + r.type.text + "]"; + let O = Bt(b); + I( + "type", + r, + h, + O, + i.data.widthLimit + ), r.type.Y = n + 5, n = r.type.Y + r.type.height; + } + if (r.descr && r.descr.text !== "") { + let O = Bt(b); + O.fontSize = O.fontSize - 2, I( + "descr", + r, + h, + O, + i.data.widthLimit + ), r.descr.Y = n + 20, n = r.descr.Y + r.descr.height; + } + if (s == 0 || s % Zt === 0) { + let O = a.data.startx + b.diagramMarginX, R = a.data.stopy + b.diagramMarginY + n; + i.setData(O, O, R, R); + } else { + let O = i.data.stopx !== i.data.startx ? i.data.stopx + b.diagramMarginX : i.data.startx, R = i.data.starty; + i.setData(O, O, R, R); + } + i.name = r.alias; + let d = l.db.getC4ShapeArray(r.alias), p = l.db.getC4ShapeKeys(r.alias); + p.length > 0 && xe( + i, + e, + d, + p + ), t = r.alias; + let E = l.db.getBoundarys(t); + E.length > 0 && me( + e, + t, + i, + E, + l + ), r.alias !== "global" && _e(e, r, i), a.data.stopy = Math.max( + i.data.stopy + b.c4ShapeMargin, + a.data.stopy + ), a.data.stopx = Math.max( + i.data.stopx + b.c4ShapeMargin, + a.data.stopx + ), Ut = Math.max(Ut, a.data.stopx), Ft = Math.max(Ft, a.data.stopy); + } +} +const w0 = function(e, t, a, o) { + b = Dt().c4; + const l = Dt().securityLevel; + let i; + l === "sandbox" && (i = Nt("#i" + t)); + const s = l === "sandbox" ? Nt(i.nodes()[0].contentDocument.body) : Nt("body"); + let r = o.db; + o.db.setWrap(b.wrap), ge = r.getC4ShapeInRow(), Zt = r.getC4BoundaryInRow(), le.debug(`C:${JSON.stringify(b, null, 2)}`); + const n = l === "sandbox" ? s.select(`[id="${t}"]`) : Nt(`[id="${t}"]`); + F.insertComputerIcon(n), F.insertDatabaseIcon(n), F.insertClockIcon(n); + let h = new be(o); + h.setData( + b.diagramMarginX, + b.diagramMarginX, + b.diagramMarginY, + b.diagramMarginY + ), h.data.widthLimit = screen.availWidth, Ut = b.diagramMarginX, Ft = b.diagramMarginY; + const f = o.db.getTitle(); + let d = o.db.getBoundarys(""); + me(n, "", h, d, o), F.insertArrowHead(n), F.insertArrowEnd(n), F.insertArrowCrossHead(n), F.insertArrowFilledHead(n), C0(n, o.db.getRels(), o.db.getC4Shape, o), h.data.stopx = Ut, h.data.stopy = Ft; + const p = h.data; + let O = p.stopy - p.starty + 2 * b.diagramMarginY; + const S = p.stopx - p.startx + 2 * b.diagramMarginX; + f && n.append("text").text(f).attr("x", (p.stopx - p.startx) / 2 - 4 * b.diagramMarginX).attr("y", p.starty + b.diagramMarginY), Se(n, O, S, b.useMaxWidth); + const L = f ? 60 : 0; + n.attr( + "viewBox", + p.startx - b.diagramMarginX + " -" + (b.diagramMarginY + L) + " " + S + " " + (O + L) + ), le.debug("models:", p); +}, he = { + drawPersonOrSystemArray: xe, + drawBoundary: _e, + setConf: $t, + draw: w0 +}, O0 = (e) => `.person { + stroke: ${e.personBorder}; + fill: ${e.personBkg}; + } +`, T0 = O0, S0 = { + parser: Be, + db: Jt, + renderer: he, + styles: T0, + init: ({ c4: e, wrap: t }) => { + he.setConf(e), Jt.setWrap(t); + } +}; +export { + S0 as diagram +}; diff --git a/client/packages/lowcoder/public/package/0738aeda.js b/client/packages/lowcoder/public/package/0738aeda.js new file mode 100644 index 000000000..2362089c2 --- /dev/null +++ b/client/packages/lowcoder/public/package/0738aeda.js @@ -0,0 +1,208 @@ +var B = (e, n, t) => new Promise((i, c) => { + var r = (l) => { + try { + a(t.next(l)); + } catch (s) { + c(s); + } + }, o = (l) => { + try { + a(t.throw(l)); + } catch (s) { + c(s); + } + }, a = (l) => l.done ? i(l.value) : Promise.resolve(l.value).then(r, o); + a((t = t.apply(e, n)).next()); +}); +import { p as Q, d as M, s as X, D as U, a as Z, S as F, b as I, c as tt } from "./888e22ae.js"; +import { G as et } from "./4504d077.js"; +import { l as T, e as g, j as x, C as ot, k as st, m as w } from "./08856db2.js"; +import { r as nt } from "./7ca39633.js"; +import "./666097a3.js"; +import "./289514c9.js"; +import "./691304fa.js"; +import "./f69b998c.js"; +import "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +const h = "rect", C = "rectWithTitle", it = "start", ct = "end", rt = "divider", lt = "roundedWithTitle", at = "note", dt = "noteGroup", u = "statediagram", Et = "state", St = `${u}-${Et}`, V = "transition", Tt = "note", pt = "note-edge", _t = `${V} ${pt}`, ut = `${u}-${Tt}`, Dt = "cluster", bt = `${u}-${Dt}`, ft = "cluster-alt", At = `${u}-${ft}`, Y = "parent", m = "note", ht = "state", N = "----", yt = `${N}${m}`, H = `${N}${Y}`, W = "fill:none", z = "fill: #333", j = "c", q = "text", K = "normal"; +let y = {}, S = 0; +const gt = function(e) { + const n = Object.keys(e); + for (const t of n) + e[t]; +}, $t = function(e, n) { + return n.db.extract(n.db.getRootDocV2()), n.db.getClasses(); +}; +function xt(e) { + return e == null ? "" : e.classes ? e.classes.join(" ") : ""; +} +function R(e = "", n = 0, t = "", i = N) { + const c = t !== null && t.length > 0 ? `${i}${t}` : ""; + return `${ht}-${e}${c}-${n}`; +} +const A = (e, n, t, i, c, r) => { + const o = t.id, a = xt(i[o]); + if (o !== "root") { + let l = h; + t.start === !0 && (l = it), t.start === !1 && (l = ct), t.type !== U && (l = t.type), y[o] || (y[o] = { + id: o, + shape: l, + description: w.sanitizeText(o, g()), + classes: `${a} ${St}` + }); + const s = y[o]; + t.description && (Array.isArray(s.description) ? (s.shape = C, s.description.push(t.description)) : s.description.length > 0 ? (s.shape = C, s.description === o ? s.description = [t.description] : s.description = [s.description, t.description]) : (s.shape = h, s.description = t.description), s.description = w.sanitizeTextOrArray(s.description, g())), s.description.length === 1 && s.shape === C && (s.shape = h), !s.type && t.doc && (T.info("Setting cluster for ", o, G(t)), s.type = "group", s.dir = G(t), s.shape = t.type === Z ? rt : lt, s.classes = s.classes + " " + bt + " " + (r ? At : "")); + const _ = { + labelStyle: "", + shape: s.shape, + labelText: s.description, + // typeof newNode.description === 'object' + // ? newNode.description[0] + // : newNode.description, + classes: s.classes, + style: "", + //styles.style, + id: o, + dir: s.dir, + domId: R(o, S), + type: s.type, + padding: 15 + //getConfig().flowchart.padding + }; + if (_.centerLabel = !0, t.note) { + const d = { + labelStyle: "", + shape: at, + labelText: t.note.text, + classes: ut, + // useHtmlLabels: false, + style: "", + // styles.style, + id: o + yt + "-" + S, + domId: R(o, S, m), + type: s.type, + padding: 15 + //getConfig().flowchart.padding + }, E = { + labelStyle: "", + shape: dt, + labelText: t.note.text, + classes: s.classes, + style: "", + // styles.style, + id: o + H, + domId: R(o, S, Y), + type: "group", + padding: 0 + //getConfig().flowchart.padding + }; + S++; + const D = o + H; + e.setNode(D, E), e.setNode(d.id, d), e.setNode(o, _), e.setParent(o, D), e.setParent(d.id, D); + let p = o, b = d.id; + t.note.position === "left of" && (p = d.id, b = o), e.setEdge(p, b, { + arrowhead: "none", + arrowType: "", + style: W, + labelStyle: "", + classes: _t, + arrowheadStyle: z, + labelpos: j, + labelType: q, + thickness: K + }); + } else + e.setNode(o, _); + } + n && n.id !== "root" && (T.trace("Setting node ", o, " to be child of its parent ", n.id), e.setParent(o, n.id)), t.doc && (T.trace("Adding nodes children "), Ct(e, t, t.doc, i, c, !r)); +}, Ct = (e, n, t, i, c, r) => { + T.trace("items", t), t.forEach((o) => { + switch (o.stmt) { + case I: + A(e, n, o, i, c, r); + break; + case U: + A(e, n, o, i, c, r); + break; + case F: + { + A(e, n, o.state1, i, c, r), A(e, n, o.state2, i, c, r); + const a = { + id: "edge" + S, + arrowhead: "normal", + arrowTypeEnd: "arrow_barb", + style: W, + labelStyle: "", + label: w.sanitizeText(o.description, g()), + arrowheadStyle: z, + labelpos: j, + labelType: q, + thickness: K, + classes: V + }; + e.setEdge(o.state1.id, o.state2.id, a, S), S++; + } + break; + } + }); +}, G = (e, n = tt) => { + let t = n; + if (e.doc) + for (let i = 0; i < e.doc.length; i++) { + const c = e.doc[i]; + c.stmt === "dir" && (t = c.value); + } + return t; +}, Rt = function(e, n, t, i) { + return B(this, null, function* () { + T.info("Drawing state diagram (v2)", n), y = {}, i.db.getDirection(); + const { securityLevel: c, state: r } = g(), o = r.nodeSpacing || 50, a = r.rankSpacing || 50; + T.info(i.db.getRootDocV2()), i.db.extract(i.db.getRootDocV2()), T.info(i.db.getRootDocV2()); + const l = i.db.getStates(), s = new et({ + multigraph: !0, + compound: !0 + }).setGraph({ + rankdir: G(i.db.getRootDocV2()), + nodesep: o, + ranksep: a, + marginx: 8, + marginy: 8 + }).setDefaultEdgeLabel(function() { + return {}; + }); + A(s, void 0, i.db.getRootDocV2(), l, i.db, !0); + let _; + c === "sandbox" && (_ = x("#i" + n)); + const d = c === "sandbox" ? x(_.nodes()[0].contentDocument.body) : x("body"), E = d.select(`[id="${n}"]`), D = d.select("#" + n + " g"); + yield nt(D, s, ["barb"], u, n); + const p = 8; + ot.insertTitle(E, "statediagramTitleText", r.titleTopMargin, i.db.getDiagramTitle()); + const b = E.node().getBBox(), L = b.width + p * 2, P = b.height + p * 2; + E.attr("class", u); + const O = E.node().getBBox(); + st(E, P, L, r.useMaxWidth); + const k = `${O.x - p} ${O.y - p} ${L} ${P}`; + T.debug(`viewBox ${k}`), E.attr("viewBox", k); + const J = document.querySelectorAll('[id="' + n + '"] .edgeLabel .label'); + for (const $ of J) { + const v = $.getBBox(), f = document.createElementNS("http://www.w3.org/2000/svg", h); + f.setAttribute("rx", 0), f.setAttribute("ry", 0), f.setAttribute("width", v.width), f.setAttribute("height", v.height), $.insertBefore(f, $.firstChild); + } + }); +}, wt = { + setConf: gt, + getClasses: $t, + draw: Rt +}, Yt = { + parser: Q, + db: M, + renderer: wt, + styles: X, + init: (e) => { + e.state || (e.state = {}), e.state.arrowMarkerAbsolute = e.arrowMarkerAbsolute, M.clear(); + } +}; +export { + Yt as diagram +}; diff --git a/client/packages/lowcoder/public/package/08856db2.js b/client/packages/lowcoder/public/package/08856db2.js new file mode 100644 index 000000000..8cbdc4292 --- /dev/null +++ b/client/packages/lowcoder/public/package/08856db2.js @@ -0,0 +1,162418 @@ +var uBe = Object.defineProperty, hBe = Object.defineProperties; +var dBe = Object.getOwnPropertyDescriptors; +var xk = Object.getOwnPropertySymbols, fBe = Object.getPrototypeOf, Ire = Object.prototype.hasOwnProperty, xre = Object.prototype.propertyIsEnumerable, pBe = Reflect.get; +var sV = (e, t) => { + if (t = Symbol[e]) + return t; + throw Error("Symbol." + e + " is not defined"); +}, Are = Math.pow, lV = (e, t, r) => t in e ? uBe(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, br = (e, t) => { + for (var r in t || (t = {})) + Ire.call(t, r) && lV(e, r, t[r]); + if (xk) + for (var r of xk(t)) + xre.call(t, r) && lV(e, r, t[r]); + return e; +}, rn = (e, t) => hBe(e, dBe(t)); +var Rre = (e, t) => { + var r = {}; + for (var n in e) + Ire.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && xk) + for (var n of xk(e)) + t.indexOf(n) < 0 && xre.call(e, n) && (r[n] = e[n]); + return r; +}; +var R_ = (e, t, r) => (lV(e, typeof t != "symbol" ? t + "" : t, r), r); +var cV = (e, t, r) => pBe(fBe(e), r, t); +var ye = (e, t, r) => new Promise((n, i) => { + var a = (u) => { + try { + l(r.next(u)); + } catch (d) { + i(d); + } + }, o = (u) => { + try { + l(r.throw(u)); + } catch (d) { + i(d); + } + }, l = (u) => u.done ? n(u.value) : Promise.resolve(u.value).then(a, o); + l((r = r.apply(e, t)).next()); +}), gBe = function(e, t) { + this[0] = e, this[1] = t; +}; +var _A = (e) => { + var t = e[sV("asyncIterator")], r = !1, n, i = {}; + return t == null ? (t = e[sV("iterator")](), n = (a) => i[a] = (o) => t[a](o)) : (t = t.call(e), n = (a) => i[a] = (o) => { + if (r) { + if (r = !1, a === "throw") + throw o; + return o; + } + return r = !0, { + done: !1, + value: new gBe(new Promise((l) => { + var u = t[a](o); + if (!(u instanceof Object)) + throw TypeError("Object expected"); + l(u); + }), 1) + }; + }), i[sV("iterator")] = () => i, n("next"), "throw" in t ? n("throw") : i.throw = (a) => { + throw a; + }, "return" in t && n("return"), i; +}; +var Cpe = "comm", Tpe = "rule", wpe = "decl", vBe = "@import", mBe = "@keyframes", yBe = "@layer", Ipe = Math.abs, V6 = String.fromCharCode; +function xpe(e) { + return e.trim(); +} +function fN(e, t, r) { + return e.replace(t, r); +} +function _Be(e, t, r) { + return e.indexOf(t, r); +} +function tR(e, t) { + return e.charCodeAt(t) | 0; +} +function rR(e, t, r) { + return e.slice(t, r); +} +function Rm(e) { + return e.length; +} +function SBe(e) { + return e.length; +} +function Ak(e, t) { + return t.push(e), e; +} +var nF = 1, Pw = 1, Ape = 0, Ef = 0, gl = 0, cI = ""; +function z6(e, t, r, n, i, a, o, l) { + return { value: e, root: t, parent: r, type: n, props: i, children: a, line: nF, column: Pw, length: o, return: "", siblings: l }; +} +function bBe() { + return gl; +} +function EBe() { + return gl = Ef > 0 ? tR(cI, --Ef) : 0, Pw--, gl === 10 && (Pw = 1, nF--), gl; +} +function xp() { + return gl = Ef < Ape ? tR(cI, Ef++) : 0, Pw++, gl === 10 && (Pw = 1, nF++), gl; +} +function Wb() { + return tR(cI, Ef); +} +function pN() { + return Ef; +} +function iF(e, t) { + return rR(cI, e, t); +} +function rH(e) { + switch (e) { + case 0: + case 9: + case 10: + case 13: + case 32: + return 5; + case 33: + case 43: + case 44: + case 47: + case 62: + case 64: + case 126: + case 59: + case 123: + case 125: + return 4; + case 58: + return 3; + case 34: + case 39: + case 40: + case 91: + return 2; + case 41: + case 93: + return 1; + } + return 0; +} +function CBe(e) { + return nF = Pw = 1, Ape = Rm(cI = e), Ef = 0, []; +} +function TBe(e) { + return cI = "", e; +} +function uV(e) { + return xpe(iF(Ef - 1, nH(e === 91 ? e + 2 : e === 40 ? e + 1 : e))); +} +function wBe(e) { + for (; (gl = Wb()) && gl < 33; ) + xp(); + return rH(e) > 2 || rH(gl) > 3 ? "" : " "; +} +function IBe(e, t) { + for (; --t && xp() && !(gl < 48 || gl > 102 || gl > 57 && gl < 65 || gl > 70 && gl < 97); ) + ; + return iF(e, pN() + (t < 6 && Wb() == 32 && xp() == 32)); +} +function nH(e) { + for (; xp(); ) + switch (gl) { + case e: + return Ef; + case 34: + case 39: + e !== 34 && e !== 39 && nH(gl); + break; + case 40: + e === 41 && nH(e); + break; + case 92: + xp(); + break; + } + return Ef; +} +function xBe(e, t) { + for (; xp() && e + gl !== 47 + 10; ) + if (e + gl === 42 + 42 && Wb() === 47) + break; + return "/*" + iF(t, Ef - 1) + "*" + V6(e === 47 ? e : xp()); +} +function ABe(e) { + for (; !rH(Wb()); ) + xp(); + return iF(e, Ef); +} +function Rpe(e) { + return TBe(gN("", null, null, null, [""], e = CBe(e), 0, [0], e)); +} +function gN(e, t, r, n, i, a, o, l, u) { + for (var d = 0, f = 0, g = o, v = 0, y = 0, C = 0, A = 1, S = 1, _ = 1, E = 0, I = "", w = i, x = a, b = n, R = I; S; ) + switch (C = E, E = xp()) { + case 40: + if (C != 108 && tR(R, g - 1) == 58) { + _Be(R += fN(uV(E), "&", "&\f"), "&\f", Ipe(d ? l[d - 1] : 0)) != -1 && (_ = -1); + break; + } + case 34: + case 39: + case 91: + R += uV(E); + break; + case 9: + case 10: + case 13: + case 32: + R += wBe(C); + break; + case 92: + R += IBe(pN() - 1, 7); + continue; + case 47: + switch (Wb()) { + case 42: + case 47: + Ak(RBe(xBe(xp(), pN()), t, r, u), u); + break; + default: + R += "/"; + } + break; + case 123 * A: + l[d++] = Rm(R) * _; + case 125 * A: + case 59: + case 0: + switch (E) { + case 0: + case 125: + S = 0; + case 59 + f: + _ == -1 && (R = fN(R, /\f/g, "")), y > 0 && Rm(R) - g && Ak(y > 32 ? Ore(R + ";", n, r, g - 1, u) : Ore(fN(R, " ", "") + ";", n, r, g - 2, u), u); + break; + case 59: + R += ";"; + default: + if (Ak(b = Dre(R, t, r, d, f, i, l, I, w = [], x = [], g, a), a), E === 123) + if (f === 0) + gN(R, t, b, b, w, a, g, l, x); + else + switch (v === 99 && tR(R, 3) === 110 ? 100 : v) { + case 100: + case 108: + case 109: + case 115: + gN(e, b, b, n && Ak(Dre(e, b, b, 0, 0, i, l, I, i, w = [], g, x), x), i, x, g, l, n ? w : x); + break; + default: + gN(R, b, b, b, [""], x, 0, l, x); + } + } + d = f = y = 0, A = _ = 1, I = R = "", g = o; + break; + case 58: + g = 1 + Rm(R), y = C; + default: + if (A < 1) { + if (E == 123) + --A; + else if (E == 125 && A++ == 0 && EBe() == 125) + continue; + } + switch (R += V6(E), E * A) { + case 38: + _ = f > 0 ? 1 : (R += "\f", -1); + break; + case 44: + l[d++] = (Rm(R) - 1) * _, _ = 1; + break; + case 64: + Wb() === 45 && (R += uV(xp())), v = Wb(), f = g = Rm(I = R += ABe(pN())), E++; + break; + case 45: + C === 45 && Rm(R) == 2 && (A = 0); + } + } + return a; +} +function Dre(e, t, r, n, i, a, o, l, u, d, f, g) { + for (var v = i - 1, y = i === 0 ? a : [""], C = SBe(y), A = 0, S = 0, _ = 0; A < n; ++A) + for (var E = 0, I = rR(e, v + 1, v = Ipe(S = o[A])), w = e; E < C; ++E) + (w = xpe(S > 0 ? y[E] + " " + I : fN(I, /&\f/g, y[E]))) && (u[_++] = w); + return z6(e, t, r, i === 0 ? Tpe : l, u, d, f, g); +} +function RBe(e, t, r, n) { + return z6(e, t, r, Cpe, V6(bBe()), rR(e, 2, -2), 0, n); +} +function Ore(e, t, r, n, i) { + return z6(e, t, r, wpe, rR(e, 0, n), rR(e, n + 1, -1), n, i); +} +function iL(e, t) { + for (var r = "", n = 0; n < e.length; n++) + r += t(e[n], n, e, t) || ""; + return r; +} +function Dpe(e, t, r, n) { + switch (e.type) { + case yBe: + if (e.children.length) + break; + case vBe: + case wpe: + return e.return = e.return || e.value; + case Cpe: + return ""; + case mBe: + return e.return = e.value + "{" + iL(e.children, n) + "}"; + case Tpe: + if (!Rm(e.value = e.props.join(","))) + return ""; + } + return Rm(r = iL(e.children, n)) ? e.return = e.value + "{" + r + "}" : ""; +} +var iH = function(e, t) { + return iH = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, n) { + r.__proto__ = n; + } || function(r, n) { + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && (r[i] = n[i]); + }, iH(e, t); +}; +function Tc(e, t) { + if (typeof t != "function" && t !== null) + throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); + iH(e, t); + function r() { + this.constructor = e; + } + e.prototype = t === null ? Object.create(t) : (r.prototype = t.prototype, new r()); +} +var si = function() { + return si = Object.assign || function(t) { + for (var r, n = 1, i = arguments.length; n < i; n++) { + r = arguments[n]; + for (var a in r) + Object.prototype.hasOwnProperty.call(r, a) && (t[a] = r[a]); + } + return t; + }, si.apply(this, arguments); +}; +function DBe(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +} +function mc(e, t, r, n) { + var i = arguments.length, a = i < 3 ? t : n === null ? n = Object.getOwnPropertyDescriptor(t, r) : n, o; + if (typeof Reflect == "object" && typeof Reflect.decorate == "function") + a = Reflect.decorate(e, t, r, n); + else + for (var l = e.length - 1; l >= 0; l--) + (o = e[l]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, r, a) : o(t, r)) || a); + return i > 3 && a && Object.defineProperty(t, r, a), a; +} +function Eh(e, t, r) { + if (r || arguments.length === 2) + for (var n = 0, i = t.length, a; n < i; n++) + (a || !(n in t)) && (a || (a = Array.prototype.slice.call(t, 0, n)), a[n] = t[n]); + return e.concat(a || Array.prototype.slice.call(t)); +} +function OBe(e, t, r) { + return t ? e.length === 0 && t.length === 0 ? !0 : e.length === t.length && t.every(function(n, i) { + var a, o; + return (o = (a = r == null ? void 0 : r[i]) === null || a === void 0 ? void 0 : a.call(r, n, e[i])) !== null && o !== void 0 ? o : n === e[i]; + }) : !1; +} +function MBe(e, t, r, n) { + var i, a = (i = e == null ? void 0 : e.__cache) === null || i === void 0 ? void 0 : i[t]; + if (a && OBe(r, a.args, n)) + return a.result; +} +function kBe(e, t, r, n, i) { + var a = MBe(r, n, t, i); + if (a) + return a.value; + var o = { + id: Symbol("id"), + args: t, + time: Date.now() + }; + r.__cache || (r.__cache = {}), r.__cache[n] = o; + var l = e.apply(r, t); + return o.result = { value: l }, l; +} +function Zc(e) { + return function(t, r, n) { + var i = n.value; + return n.value = function() { + for (var a = [], o = 0; o < arguments.length; o++) + a[o] = arguments[o]; + return kBe(i, a, this, r, e); + }, n; + }; +} +var PBe = 0, NBe = ( + /** @class */ + function() { + function e() { + var t = this; + this.root = Symbol("root"), this.stack = [], this.initRecord = function() { + return { obj: t.root, name: "@root", childrenPerfInfo: [], costMs: 0, depth: 0, info: {} }; + }, this.getRecordByStack = function(r) { + var n = t.record; + return (r != null ? r : t.stack).forEach(function(i) { + n = n.childrenPerfInfo[i]; + }), n; + }, this.clear = function() { + t.record = t.initRecord(); + }, this.print = function(r, n) { + n === void 0 && (n = PBe); + var i = t.getRecordByStack(r); + console.info("~~ PerfInfo. costMs: ".concat(i.costMs.toFixed(3), ", stack: ").concat(r, ", [name]").concat(i.name, ", [info]"), i.info, ", obj: ", i.obj, ", depth: ".concat(i.depth, ", size: ").concat($lodash.size(i.childrenPerfInfo))), i.childrenPerfInfo.forEach(function(a, o) { + a.costMs >= n && console.info(" costMs: ".concat(a.costMs.toFixed(3), " [").concat(o, "]").concat(a.name, " [info]"), a.info, ". obj: ", a.obj, ""); + }); + }, this.record = this.initRecord(); + } + return e.prototype.log = function(t, r, n) { + t[r] = n; + }, e.prototype.perf = function(t, r, n) { + return n($lodash.noop); + }, e; + }() +), Nw = new NBe(); +globalThis.evalPerfUtil = Nw; +var iv = ( + /** @class */ + function() { + function e() { + this.type = "abstract", this.evalCache = {}; + } + return e.prototype.evaluate = function(t, r) { + var n = this; + return Nw.perf(this, "eval", function() { + t = t != null ? t : {}; + var i = n.filterNodes(t); + if (kre(n.evalCache.dependingNodeMap, i)) + return n.evalCache.value; + n.evalCache.cyclic = !1; + var a = n.justEval(t, r); + return n.evalCache.dependingNodeMap = i, n.evalCache.value = a, n.evalCache.cyclic || (n.evalCache.cyclic = n.getChildren().some(function(o) { + return o.hasCycle(); + })), a; + }); + }, e.prototype.hasCycle = function() { + var t; + return (t = this.evalCache.cyclic) !== null && t !== void 0 ? t : !1; + }, e.prototype.dependNames = function() { + return Object.keys(this.dependValues()); + }, e.prototype.isHitEvalCache = function(t) { + t = t != null ? t : {}; + var r = this.filterNodes(t); + return kre(this.evalCache.dependingNodeMap, r); + }, e; + }() +); +function Mre(e) { + var t = /* @__PURE__ */ new Map(); + return e.forEach(function(r, n) { + n.type === "wrap" ? t.set(n.delegate, r) : t.set(n, r); + }), t; +} +function LBe(e, t) { + return t !== void 0 && e.size === t.size && Array.from(t).every(function(r) { + return e.has(r); + }); +} +function kre(e, t) { + if (!e || e.size !== t.size) + return !1; + var r = Mre(e), n = Mre(t), i = !0; + return n.forEach(function(a, o) { + i = i && LBe(a, r.get(o)); + }), i; +} +var FBe = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r, n) { + var i = e.call(this) || this; + return i.child = r, i.func = n, i.type = "function", i; + } + return t.prototype.filterNodes = function(r) { + var n = this; + return Nw.perf(this, "filterNodes", function() { + return n.child.filterNodes(r); + }); + }, t.prototype.justEval = function(r, n) { + return this.func(this.child.evaluate(r, n)); + }, t.prototype.getChildren = function() { + return [this.child]; + }, t.prototype.dependValues = function() { + return this.child.dependValues(); + }, t.prototype.fetchInfo = function(r, n) { + return this.child.fetchInfo(r, n); + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), mc([ + Zc() + ], t.prototype, "fetchInfo", null), t; + }(iv) +); +function Ope(e, t) { + return new FBe(e, t); +} +function H6(e, t, r) { + if (t) { + var n = e.get(t); + n === void 0 && (n = /* @__PURE__ */ new Set(), e.set(t, n)), r.forEach(function(i) { + return n == null ? void 0 : n.add(i); + }); + } +} +function aL(e, t) { + return t == null || t.forEach(function(r, n) { + return H6(e, n, r); + }), e; +} +var BBe = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r) { + var n = e.call(this) || this; + return n.children = r, n.type = "record", n; + } + return t.prototype.filterNodes = function(r) { + var n = this; + return Nw.perf(this, "filterNodes", function() { + var i = /* @__PURE__ */ new Map(); + return Object.values(n.children).forEach(function(a) { + aL(i, a.filterNodes(r)); + }), i; + }); + }, t.prototype.justEval = function(r, n) { + var i = this; + return $lodash.mapValues(this.children, function(a, o) { + return Nw.perf(i, "eval-".concat(o), function() { + return a.evaluate(r, n); + }); + }); + }, t.prototype.getChildren = function() { + return Object.values(this.children); + }, t.prototype.dependValues = function() { + var r = Object.values(this.children); + if (r.length === 1) + return r[0].dependValues(); + var n = {}; + return r.forEach(function(i) { + Object.entries(i.dependValues()).forEach(function(a) { + var o = a[0], l = a[1]; + n[o] = l; + }); + }), n; + }, t.prototype.fetchInfo = function(r, n) { + var i = !1, a = !0; + return Object.entries(this.children).forEach(function(o) { + o[0]; + var l = o[1], u = l.fetchInfo(r, n); + i = u.isFetching || i, a = u.ready && a; + }), { isFetching: i, ready: a }; + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), mc([ + Zc() + ], t.prototype, "fetchInfo", null), t; + }(iv) +); +function aF(e) { + return new BBe(e); +} +(function(e) { + Tc(t, e); + function t(r) { + var n = e.call(this) || this; + return n.type = "cached", n.child = UBe(r), n; + } + return t.prototype.filterNodes = function(r) { + return this.child.filterNodes(r); + }, t.prototype.justEval = function(r, n) { + var i = this.child.isHitEvalCache(r), a = this.child.evaluate(r, n); + return { value: a, isCached: i }; + }, t.prototype.getChildren = function() { + return [this.child]; + }, t.prototype.dependValues = function() { + return this.child.dependValues(); + }, t.prototype.fetchInfo = function(r) { + return this.child.fetchInfo(r); + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), t; +})(iv); +function UBe(e) { + var t = Ope(e, function(r) { + return r; + }); + return t.evalCache = si({}, e.evalCache), t; +} +function jBe(e) { + return e instanceof RegExp ? e.toString() : e === void 0 || typeof e == "number" ? e + "" : typeof e == "string" ? '"' + e + '"' : JSON.stringify(e, function(t, r) { + switch (typeof r) { + case "function": + case "bigint": + case "symbol": + case "undefined": + return r + ""; + case "number": + if (!isFinite(r)) + return r + ""; + } + return r; + }); +} +var Zg = ( + /** @class */ + function() { + function e(t, r, n, i) { + this.value = t, this.msg = r, this.extra = n, this.midValue = i; + } + return e.prototype.hasError = function() { + return this.msg !== void 0; + }, e.prototype.getMsg = function(t) { + var r; + return t === void 0 && (t = jBe), (r = this.hasError() ? this.msg : t(this.value)) !== null && r !== void 0 ? r : ""; + }, e; + }() +); +function $Be(e) { + return 'DependencyError: "'.concat(e.unevaledValue, '" caused a cyclic dependency.'); +} +function W6(e) { + return e instanceof TypeError && e.hint ? e.hint + ` +` + e.name + ": " + e.message : e instanceof Error ? e.name + ": " + e.message : "UnknownError: unknown exception during eval"; +} +function VBe(e) { + var t = {}; + return e.forEach(function(r, n) { + r.forEach(function(i) { + var a = i.split("."), o = Mpe(a, n), l = a[0], u = kpe(t[l], o); + t[l] = u; + }); + }), t; +} +function Mpe(e, t) { + var r; + if (e.length <= 0) + throw new Error("path length should not be 0"); + return e.length === 1 ? t : Mpe(e.slice(0, -1), aF((r = {}, r[e[e.length - 1]] = t, r))); +} +function kpe(e, t) { + if (!e || e === t) + return t; + if (!oL(e) || !oL(t)) + throw new Error("unevaledNode should be type of RecordNode"); + var r = e.children, n = t.children, i = si({}, r); + return Object.keys(n).forEach(function(a) { + var o = r[a], l = n[a], u = o ? kpe(o, l) : l; + i[a] = u; + }), aF(i); +} +function oL(e) { + return e.type === "record"; +} +var zBe = /{{([\s\S]*?)}}/; +function nR(e) { + return zBe.test(e); +} +function Ppe(e) { + for (var t = [], r = 0, n = e.indexOf("{{"); n >= 0; ) { + for (var i = n + 2; i < e.length && e[i] === "{"; ) + i++; + var a = e.indexOf("}}", i); + if (a < 0) + break; + for (var o = e.indexOf("{{", a + 2), l = o >= 0 ? o : e.length, u = i - n - 2, d = i - n, f = Number.MAX_VALUE, g = Number.MAX_VALUE; i < l; i++) + switch (e[i]) { + case "{": + d++; + break; + case "}": + if (d--, e[i - 1] === "}") { + var v = Math.min(Math.max(d, 0), u), y = Math.abs(d - v); + (y < f || y === f && v < g) && (f = y, g = v, a = i + 1); + } + break; + } + t.push(e.slice(r, n + g), e.slice(n + g, a)), r = a, n = o; + } + return t.push(e.slice(r)), t.filter(function(C) { + return C; + }); +} +function hV(e, t, r) { + for (var n = /* @__PURE__ */ new Map(), i = 0, a = Ppe(e); i < a.length; i++) { + var o = a[i]; + nR(o) && aL(n, Lpe(o.slice(2, -2), t, r)); + } + return n; +} +function HBe(e, t) { + if (!nR(e)) + return !1; + var r = !1; + return Lpe(e.slice(2, -2), t).forEach(function(n, i) { + r = r || i.hasCycle(); + }), r; +} +function Npe(e) { + var t = [], r = /[a-zA-Z_$][a-zA-Z_$0-9.[\]]*/g, n = e.match(r); + n && t.push.apply(t, n); + var i = []; + return (e.match(/\[[a-zA-Z_][a-zA-Z_0-9\[\].]*\]/g) || []).forEach(function(a) { + i.push.apply(i, Npe(a.slice(1, -1))); + }), t.push.apply(t, i), t.length === 0 ? [e] : t; +} +function Lpe(e, t, r) { + var n = /* @__PURE__ */ new Map(), i = Npe(e); + return i.forEach(function(a) { + var o = $lodash.toPath(a), l = WBe(r ? o.slice(0, r) : o, t); + l && H6(n, l[0], [l[1]]); + }), n; +} +function WBe(e, t) { + if (!(e.length <= 0)) { + for (var r = t, n = void 0, i = [], a = 0, o = e; a < o.length; a++) { + var l = o[a], u = r[l]; + if (!r.hasOwnProperty(l) || !u || (n = u, i.push(l), !oL(n))) + break; + r = n.children; + } + return n ? [n, i.join(".")] : void 0; + } +} +var Fpe = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}, aH = {}, GBe = { + get exports() { + return aH; + }, + set exports(e) { + aH = e; + } +}; +(function(e) { + (function(t, r) { + e.exports ? e.exports = r() : t.log = r(); + })(Fpe, function() { + var t = function() { + }, r = "undefined", n = typeof window !== r && typeof window.navigator !== r && /Trident\/|MSIE /.test(window.navigator.userAgent), i = [ + "trace", + "debug", + "info", + "warn", + "error" + ]; + function a(A, S) { + var _ = A[S]; + if (typeof _.bind == "function") + return _.bind(A); + try { + return Function.prototype.bind.call(_, A); + } catch (E) { + return function() { + return Function.prototype.apply.apply(_, [A, arguments]); + }; + } + } + function o() { + console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace(); + } + function l(A) { + return A === "debug" && (A = "log"), typeof console === r ? !1 : A === "trace" && n ? o : console[A] !== void 0 ? a(console, A) : console.log !== void 0 ? a(console, "log") : t; + } + function u(A, S) { + for (var _ = 0; _ < i.length; _++) { + var E = i[_]; + this[E] = _ < A ? t : this.methodFactory(E, A, S); + } + this.log = this.debug; + } + function d(A, S, _) { + return function() { + typeof console !== r && (u.call(this, S, _), this[A].apply(this, arguments)); + }; + } + function f(A, S, _) { + return l(A) || d.apply(this, arguments); + } + function g(A, S, _) { + var E = this, I; + S = S == null ? "WARN" : S; + var w = "loglevel"; + typeof A == "string" ? w += ":" + A : typeof A == "symbol" && (w = void 0); + function x(O) { + var P = (i[O] || "silent").toUpperCase(); + if (!(typeof window === r || !w)) { + try { + window.localStorage[w] = P; + return; + } catch (B) { + } + try { + window.document.cookie = encodeURIComponent(w) + "=" + P + ";"; + } catch (B) { + } + } + } + function b() { + var O; + if (!(typeof window === r || !w)) { + try { + O = window.localStorage[w]; + } catch (H) { + } + if (typeof O === r) + try { + var P = window.document.cookie, B = P.indexOf( + encodeURIComponent(w) + "=" + ); + B !== -1 && (O = /^([^;]+)/.exec(P.slice(B))[1]); + } catch (H) { + } + return E.levels[O] === void 0 && (O = void 0), O; + } + } + function R() { + if (!(typeof window === r || !w)) { + try { + window.localStorage.removeItem(w); + return; + } catch (O) { + } + try { + window.document.cookie = encodeURIComponent(w) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; + } catch (O) { + } + } + } + E.name = A, E.levels = { + TRACE: 0, + DEBUG: 1, + INFO: 2, + WARN: 3, + ERROR: 4, + SILENT: 5 + }, E.methodFactory = _ || f, E.getLevel = function() { + return I; + }, E.setLevel = function(O, P) { + if (typeof O == "string" && E.levels[O.toUpperCase()] !== void 0 && (O = E.levels[O.toUpperCase()]), typeof O == "number" && O >= 0 && O <= E.levels.SILENT) { + if (I = O, P !== !1 && x(O), u.call(E, O, A), typeof console === r && O < E.levels.SILENT) + return "No console available for logging"; + } else + throw "log.setLevel() called with invalid level: " + O; + }, E.setDefaultLevel = function(O) { + S = O, b() || E.setLevel(O, !1); + }, E.resetLevel = function() { + E.setLevel(S, !1), R(); + }, E.enableAll = function(O) { + E.setLevel(E.levels.TRACE, O); + }, E.disableAll = function(O) { + E.setLevel(E.levels.SILENT, O); + }; + var M = b(); + M == null && (M = S), E.setLevel(M, !1); + } + var v = new g(), y = {}; + v.getLogger = function(S) { + if (typeof S != "symbol" && typeof S != "string" || S === "") + throw new TypeError("You must supply a name when creating a logger."); + var _ = y[S]; + return _ || (_ = y[S] = new g( + S, + v.getLevel(), + v.methodFactory + )), _; + }; + var C = typeof window !== r ? window.log : void 0; + return v.noConflict = function() { + return typeof window !== r && window.log === v && (window.log = C), v; + }, v.getLoggers = function() { + return y; + }, v.default = v, v; + }); +})(GBe); +var oF = aH, Bpe = /* @__PURE__ */ new Set([ + "top", + "parent", + "document", + "location", + "chrome", + "fetch", + "XMLHttpRequest", + "importScripts", + "Navigator", + "MutationObserver" +]), Upe = new Set(Eh(Eh([], Array.from(Bpe.values()), !0), [ + "setTimeout", + "setInterval", + "setImmediate" +], !1)), oH = /* @__PURE__ */ new Set(["window", "globalThis", "self", "global"]); +function sH() { + return new Proxy(function() { + return sH(); + }, { + get: function(e, t, r) { + return t === "toString" ? function() { + return ""; + } : t === Symbol.toPrimitive ? function() { + return ""; + } : (oF.log("[Sandbox] access ".concat(String(t), " on black hole, return mock object")), sH()); + } + }); +} +function YBe(e, t, r, n) { + t === void 0 && (t = Upe); + var i = new Proxy(Object.assign({}, e), { + has: function() { + return !0; + }, + set: function(a, o, l) { + return typeof o == "string" && (r == null || r(o)), Reflect.set(a, o, l); + }, + get: function(a, o) { + return o in a ? Reflect.get(a, o) : oH.has(o) ? i : typeof o == "string" && (t != null && t.has(o)) && !n ? (oF.log("[Sandbox] access ".concat(String(o), " on mock window, return mock object")), sH()) : jpe(o); + } + }); + return i; +} +var Rk, Pre = !1; +function XBe(e) { + return e instanceof Element || e instanceof HTMLCollection; +} +function jpe(e) { + var t = Reflect.get(window, e); + if (typeof t == "function" && !t.prototype) + return t.bind(window); + if (!XBe(t)) + return t; +} +function KBe(e, t, r) { + var n = r || {}, i = n.disableLimit, a = i === void 0 ? !1 : i, o = n.scope, l = o === void 0 ? "expression" : o, u = n.onSetGlobalVars, d = function(v) { + return v in e || v in (t || {}) || oH.has(v); + }, f = {}, g = l === "function" ? Bpe : Upe; + return (l === "function" || !Rk || a !== Pre) && (Rk = YBe(Rk, g, u, a)), Pre = a, new Proxy(Rk, { + has: function(v, y) { + return !0; + }, + get: function(v, y, C) { + if (y !== Symbol.unscopables) { + if (y === "toJSON" || oH.has(y)) + return v; + if (y in e) { + if (y in f) + return Reflect.get(f, y); + var A = Reflect.get(e, y, C); + return typeof A == "object" && A !== null && (t && y in t && (A = Object.assign({}, A, Reflect.get(t, y))), Object.freeze(A), Object.values(A).forEach(Object.freeze)), Reflect.set(f, y, A), A; + } + return a ? jpe(y) : Reflect.get(v, y, C); + } + }, + set: function(v, y, C, A) { + if (d(y)) + throw new Error(y.toString() + " can't be modified"); + return Reflect.set(v, y, C, A); + }, + defineProperty: function(v, y, C) { + if (d(y)) + throw new Error("can't define property:" + y.toString()); + return Reflect.defineProperty(v, y, C); + }, + deleteProperty: function(v, y) { + if (d(y)) + throw new Error("can't delete property:" + y.toString()); + return Reflect.deleteProperty(v, y); + }, + setPrototypeOf: function(v, y) { + throw new Error("can't invoke setPrototypeOf"); + } + }); +} +function $pe(e, t, r) { + return Vpe("return (".concat(e, ` +);`), t, r); +} +function Vpe(e, t, r, n, i) { + var a = `with(this){ + return (`.concat(i ? "async " : "", `function() { + 'use strict'; + `).concat(e, `; + }).call(this); + }`), o = new Function(a), l = KBe(t, r, n), u = o.call(l); + return u; +} +var lH = {}, ZBe = { + get exports() { + return lH; + }, + set exports(e) { + lH = e; + } +}, cH = {}, qBe = { + get exports() { + return cH; + }, + set exports(e) { + cH = e; + } +}; +(function(e, t) { + (function(r, n) { + e.exports = n(); + })(Fpe, () => { + return r = { 421: function(i, a) { + var o, l; + o = function(u) { + var d = u; + u.isBooleanArray = function(b) { + return (Array.isArray(b) || b instanceof Int8Array) && b.$type$ === "BooleanArray"; + }, u.isByteArray = function(b) { + return b instanceof Int8Array && b.$type$ !== "BooleanArray"; + }, u.isShortArray = function(b) { + return b instanceof Int16Array; + }, u.isCharArray = function(b) { + return b instanceof Uint16Array && b.$type$ === "CharArray"; + }, u.isIntArray = function(b) { + return b instanceof Int32Array; + }, u.isFloatArray = function(b) { + return b instanceof Float32Array; + }, u.isDoubleArray = function(b) { + return b instanceof Float64Array; + }, u.isLongArray = function(b) { + return Array.isArray(b) && b.$type$ === "LongArray"; + }, u.isArray = function(b) { + return Array.isArray(b) && !b.$type$; + }, u.isArrayish = function(b) { + return Array.isArray(b) || ArrayBuffer.isView(b); + }, u.arrayToString = function(b) { + if (b === null) + return "null"; + var R = u.isCharArray(b) ? String.fromCharCode : u.toString; + return "[" + Array.prototype.map.call(b, function(M) { + return R(M); + }).join(", ") + "]"; + }, u.toByte = function(b) { + return (255 & b) << 24 >> 24; + }, u.toChar = function(b) { + return 65535 & b; + }, u.toBoxedChar = function(b) { + return b == null || b instanceof u.BoxedChar ? b : new u.BoxedChar(b); + }, u.unboxChar = function(b) { + return b == null ? b : u.toChar(b); + }, u.equals = function(b, R) { + return b == null ? R == null : R != null && (b != b ? R != R : typeof b == "object" && typeof b.equals == "function" ? b.equals(R) : typeof b == "number" && typeof R == "number" ? b === R && (b !== 0 || 1 / b == 1 / R) : b === R); + }, u.hashCode = function(b) { + if (b == null) + return 0; + var R = typeof b; + return R === "object" ? typeof b.hashCode == "function" ? b.hashCode() : E(b) : R === "function" ? E(b) : R === "number" ? u.numberHashCode(b) : R === "boolean" ? Number(b) : function(M) { + for (var O = 0, P = 0; P < M.length; P++) + O = 31 * O + M.charCodeAt(P) | 0; + return O; + }(String(b)); + }, u.toString = function(b) { + return b == null ? "null" : u.isArrayish(b) ? "[...]" : b.toString(); + }; + var f, g, v, y, C, A, S, _ = "kotlinHashCodeValue$"; + function E(b) { + if (!(_ in b)) { + var R = 4294967296 * Math.random() | 0; + Object.defineProperty(b, _, { value: R, enumerable: !1 }); + } + return b.kotlinHashCodeValue$; + } + function I() { + throw new Error("This marker function should never been called. Looks like compiler did not eliminate it properly. Please, report an issue if you caught this exception."); + } + function w(b, R) { + return (4294901760 & b) * (65535 & R) + (65535 & b) * (0 | R) | 0; + } + function x(b, R) { + if (b === R) + return !0; + var M = b.$metadata$; + if (M != null) { + for (var O = M.interfaces, P = 0; P < O.length; P++) + if (x(O[P], R)) + return !0; + } + var B = b.prototype != null ? Object.getPrototypeOf(b.prototype) : null, H = B != null ? B.constructor : null; + return H != null && x(H, R); + } + u.identityHashCode = E, u.Long = function(b, R) { + this.low_ = 0 | b, this.high_ = 0 | R; + }, u.Long.$metadata$ = { kind: "class", simpleName: "Long", interfaces: [] }, u.Long.IntCache_ = {}, u.Long.fromInt = function(b) { + if (-128 <= b && b < 128) { + var R = u.Long.IntCache_[b]; + if (R) + return R; + } + var M = new u.Long(0 | b, b < 0 ? -1 : 0); + return -128 <= b && b < 128 && (u.Long.IntCache_[b] = M), M; + }, u.Long.fromNumber = function(b) { + return isNaN(b) ? u.Long.ZERO : b <= -u.Long.TWO_PWR_63_DBL_ ? u.Long.MIN_VALUE : b + 1 >= u.Long.TWO_PWR_63_DBL_ ? u.Long.MAX_VALUE : b < 0 ? u.Long.fromNumber(-b).negate() : new u.Long(b % u.Long.TWO_PWR_32_DBL_ | 0, b / u.Long.TWO_PWR_32_DBL_ | 0); + }, u.Long.fromBits = function(b, R) { + return new u.Long(b, R); + }, u.Long.fromString = function(b, R) { + if (b.length == 0) + throw Error("number format error: empty string"); + var M = R || 10; + if (M < 2 || 36 < M) + throw Error("radix out of range: " + M); + if (b.charAt(0) == "-") + return u.Long.fromString(b.substring(1), M).negate(); + if (b.indexOf("-") >= 0) + throw Error('number format error: interior "-" character: ' + b); + for (var O = u.Long.fromNumber(Math.pow(M, 8)), P = u.Long.ZERO, B = 0; B < b.length; B += 8) { + var H = Math.min(8, b.length - B), Y = parseInt(b.substring(B, B + H), M); + if (H < 8) { + var X = u.Long.fromNumber(Math.pow(M, H)); + P = P.multiply(X).add(u.Long.fromNumber(Y)); + } else + P = (P = P.multiply(O)).add(u.Long.fromNumber(Y)); + } + return P; + }, u.Long.TWO_PWR_16_DBL_ = 65536, u.Long.TWO_PWR_24_DBL_ = 1 << 24, u.Long.TWO_PWR_32_DBL_ = u.Long.TWO_PWR_16_DBL_ * u.Long.TWO_PWR_16_DBL_, u.Long.TWO_PWR_31_DBL_ = u.Long.TWO_PWR_32_DBL_ / 2, u.Long.TWO_PWR_48_DBL_ = u.Long.TWO_PWR_32_DBL_ * u.Long.TWO_PWR_16_DBL_, u.Long.TWO_PWR_64_DBL_ = u.Long.TWO_PWR_32_DBL_ * u.Long.TWO_PWR_32_DBL_, u.Long.TWO_PWR_63_DBL_ = u.Long.TWO_PWR_64_DBL_ / 2, u.Long.ZERO = u.Long.fromInt(0), u.Long.ONE = u.Long.fromInt(1), u.Long.NEG_ONE = u.Long.fromInt(-1), u.Long.MAX_VALUE = u.Long.fromBits(-1, 2147483647), u.Long.MIN_VALUE = u.Long.fromBits(0, -2147483648), u.Long.TWO_PWR_24_ = u.Long.fromInt(1 << 24), u.Long.prototype.toInt = function() { + return this.low_; + }, u.Long.prototype.toNumber = function() { + return this.high_ * u.Long.TWO_PWR_32_DBL_ + this.getLowBitsUnsigned(); + }, u.Long.prototype.hashCode = function() { + return this.high_ ^ this.low_; + }, u.Long.prototype.toString = function(b) { + var R = b || 10; + if (R < 2 || 36 < R) + throw Error("radix out of range: " + R); + if (this.isZero()) + return "0"; + if (this.isNegative()) { + if (this.equalsLong(u.Long.MIN_VALUE)) { + var M = u.Long.fromNumber(R), O = this.div(M), P = O.multiply(M).subtract(this); + return O.toString(R) + P.toInt().toString(R); + } + return "-" + this.negate().toString(R); + } + for (var B = u.Long.fromNumber(Math.pow(R, 5)), H = (P = this, ""); ; ) { + var Y = P.div(B), X = P.subtract(Y.multiply(B)).toInt().toString(R); + if ((P = Y).isZero()) + return X + H; + for (; X.length < 5; ) + X = "0" + X; + H = "" + X + H; + } + }, u.Long.prototype.getHighBits = function() { + return this.high_; + }, u.Long.prototype.getLowBits = function() { + return this.low_; + }, u.Long.prototype.getLowBitsUnsigned = function() { + return this.low_ >= 0 ? this.low_ : u.Long.TWO_PWR_32_DBL_ + this.low_; + }, u.Long.prototype.getNumBitsAbs = function() { + if (this.isNegative()) + return this.equalsLong(u.Long.MIN_VALUE) ? 64 : this.negate().getNumBitsAbs(); + for (var b = this.high_ != 0 ? this.high_ : this.low_, R = 31; R > 0 && !(b & 1 << R); R--) + ; + return this.high_ != 0 ? R + 33 : R + 1; + }, u.Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; + }, u.Long.prototype.isNegative = function() { + return this.high_ < 0; + }, u.Long.prototype.isOdd = function() { + return (1 & this.low_) == 1; + }, u.Long.prototype.equalsLong = function(b) { + return this.high_ == b.high_ && this.low_ == b.low_; + }, u.Long.prototype.notEqualsLong = function(b) { + return this.high_ != b.high_ || this.low_ != b.low_; + }, u.Long.prototype.lessThan = function(b) { + return this.compare(b) < 0; + }, u.Long.prototype.lessThanOrEqual = function(b) { + return this.compare(b) <= 0; + }, u.Long.prototype.greaterThan = function(b) { + return this.compare(b) > 0; + }, u.Long.prototype.greaterThanOrEqual = function(b) { + return this.compare(b) >= 0; + }, u.Long.prototype.compare = function(b) { + if (this.equalsLong(b)) + return 0; + var R = this.isNegative(), M = b.isNegative(); + return R && !M ? -1 : !R && M ? 1 : this.subtract(b).isNegative() ? -1 : 1; + }, u.Long.prototype.negate = function() { + return this.equalsLong(u.Long.MIN_VALUE) ? u.Long.MIN_VALUE : this.not().add(u.Long.ONE); + }, u.Long.prototype.add = function(b) { + var R = this.high_ >>> 16, M = 65535 & this.high_, O = this.low_ >>> 16, P = 65535 & this.low_, B = b.high_ >>> 16, H = 65535 & b.high_, Y = b.low_ >>> 16, X = 0, ee = 0, ae = 0, J = 0; + return ae += (J += P + (65535 & b.low_)) >>> 16, J &= 65535, ee += (ae += O + Y) >>> 16, ae &= 65535, X += (ee += M + H) >>> 16, ee &= 65535, X += R + B, X &= 65535, u.Long.fromBits(ae << 16 | J, X << 16 | ee); + }, u.Long.prototype.subtract = function(b) { + return this.add(b.negate()); + }, u.Long.prototype.multiply = function(b) { + if (this.isZero() || b.isZero()) + return u.Long.ZERO; + if (this.equalsLong(u.Long.MIN_VALUE)) + return b.isOdd() ? u.Long.MIN_VALUE : u.Long.ZERO; + if (b.equalsLong(u.Long.MIN_VALUE)) + return this.isOdd() ? u.Long.MIN_VALUE : u.Long.ZERO; + if (this.isNegative()) + return b.isNegative() ? this.negate().multiply(b.negate()) : this.negate().multiply(b).negate(); + if (b.isNegative()) + return this.multiply(b.negate()).negate(); + if (this.lessThan(u.Long.TWO_PWR_24_) && b.lessThan(u.Long.TWO_PWR_24_)) + return u.Long.fromNumber(this.toNumber() * b.toNumber()); + var R = this.high_ >>> 16, M = 65535 & this.high_, O = this.low_ >>> 16, P = 65535 & this.low_, B = b.high_ >>> 16, H = 65535 & b.high_, Y = b.low_ >>> 16, X = 65535 & b.low_, ee = 0, ae = 0, J = 0, ne = 0; + return J += (ne += P * X) >>> 16, ne &= 65535, ae += (J += O * X) >>> 16, J &= 65535, ae += (J += P * Y) >>> 16, J &= 65535, ee += (ae += M * X) >>> 16, ae &= 65535, ee += (ae += O * Y) >>> 16, ae &= 65535, ee += (ae += P * H) >>> 16, ae &= 65535, ee += R * X + M * Y + O * H + P * B, ee &= 65535, u.Long.fromBits(J << 16 | ne, ee << 16 | ae); + }, u.Long.prototype.div = function(b) { + if (b.isZero()) + throw Error("division by zero"); + if (this.isZero()) + return u.Long.ZERO; + if (this.equalsLong(u.Long.MIN_VALUE)) { + if (b.equalsLong(u.Long.ONE) || b.equalsLong(u.Long.NEG_ONE)) + return u.Long.MIN_VALUE; + if (b.equalsLong(u.Long.MIN_VALUE)) + return u.Long.ONE; + if ((O = this.shiftRight(1).div(b).shiftLeft(1)).equalsLong(u.Long.ZERO)) + return b.isNegative() ? u.Long.ONE : u.Long.NEG_ONE; + var R = this.subtract(b.multiply(O)); + return O.add(R.div(b)); + } + if (b.equalsLong(u.Long.MIN_VALUE)) + return u.Long.ZERO; + if (this.isNegative()) + return b.isNegative() ? this.negate().div(b.negate()) : this.negate().div(b).negate(); + if (b.isNegative()) + return this.div(b.negate()).negate(); + var M = u.Long.ZERO; + for (R = this; R.greaterThanOrEqual(b); ) { + for (var O = Math.max(1, Math.floor(R.toNumber() / b.toNumber())), P = Math.ceil(Math.log(O) / Math.LN2), B = P <= 48 ? 1 : Math.pow(2, P - 48), H = u.Long.fromNumber(O), Y = H.multiply(b); Y.isNegative() || Y.greaterThan(R); ) + O -= B, Y = (H = u.Long.fromNumber(O)).multiply(b); + H.isZero() && (H = u.Long.ONE), M = M.add(H), R = R.subtract(Y); + } + return M; + }, u.Long.prototype.modulo = function(b) { + return this.subtract(this.div(b).multiply(b)); + }, u.Long.prototype.not = function() { + return u.Long.fromBits(~this.low_, ~this.high_); + }, u.Long.prototype.and = function(b) { + return u.Long.fromBits(this.low_ & b.low_, this.high_ & b.high_); + }, u.Long.prototype.or = function(b) { + return u.Long.fromBits(this.low_ | b.low_, this.high_ | b.high_); + }, u.Long.prototype.xor = function(b) { + return u.Long.fromBits(this.low_ ^ b.low_, this.high_ ^ b.high_); + }, u.Long.prototype.shiftLeft = function(b) { + if ((b &= 63) == 0) + return this; + var R = this.low_; + if (b < 32) { + var M = this.high_; + return u.Long.fromBits(R << b, M << b | R >>> 32 - b); + } + return u.Long.fromBits(0, R << b - 32); + }, u.Long.prototype.shiftRight = function(b) { + if ((b &= 63) == 0) + return this; + var R = this.high_; + if (b < 32) { + var M = this.low_; + return u.Long.fromBits(M >>> b | R << 32 - b, R >> b); + } + return u.Long.fromBits(R >> b - 32, R >= 0 ? 0 : -1); + }, u.Long.prototype.shiftRightUnsigned = function(b) { + if ((b &= 63) == 0) + return this; + var R = this.high_; + if (b < 32) { + var M = this.low_; + return u.Long.fromBits(M >>> b | R << 32 - b, R >>> b); + } + return b == 32 ? u.Long.fromBits(R, 0) : u.Long.fromBits(R >>> b - 32, 0); + }, u.Long.prototype.equals = function(b) { + return b instanceof u.Long && this.equalsLong(b); + }, u.Long.prototype.compareTo_11rb$ = u.Long.prototype.compare, u.Long.prototype.inc = function() { + return this.add(u.Long.ONE); + }, u.Long.prototype.dec = function() { + return this.add(u.Long.NEG_ONE); + }, u.Long.prototype.valueOf = function() { + return this.toNumber(); + }, u.Long.prototype.unaryPlus = function() { + return this; + }, u.Long.prototype.unaryMinus = u.Long.prototype.negate, u.Long.prototype.inv = u.Long.prototype.not, u.Long.prototype.rangeTo = function(b) { + return new u.kotlin.ranges.LongRange(this, b); + }, u.defineInlineFunction = function(b, R) { + return R; + }, u.wrapFunction = function(b) { + var R = function() { + return (R = b()).apply(this, arguments); + }; + return function() { + return R.apply(this, arguments); + }; + }, u.suspendCall = function(b) { + return b; + }, u.coroutineResult = function(b) { + I(); + }, u.coroutineReceiver = function(b) { + I(); + }, u.compareTo = function(b, R) { + var M = typeof b; + return M === "number" ? typeof R == "number" ? u.doubleCompareTo(b, R) : u.primitiveCompareTo(b, R) : M === "string" || M === "boolean" ? u.primitiveCompareTo(b, R) : b.compareTo_11rb$(R); + }, u.primitiveCompareTo = function(b, R) { + return b < R ? -1 : b > R ? 1 : 0; + }, u.doubleCompareTo = function(b, R) { + if (b < R) + return -1; + if (b > R) + return 1; + if (b === R) { + if (b !== 0) + return 0; + var M = 1 / b; + return M === 1 / R ? 0 : M < 0 ? -1 : 1; + } + return b != b ? R != R ? 0 : 1 : -1; + }, u.imul = Math.imul || w, u.imulEmulated = w, f = new ArrayBuffer(8), g = new Float64Array(f), v = new Int32Array(f), y = 0, C = 1, g[0] = -1, v[y] !== 0 && (y = 1, C = 0), u.numberHashCode = function(b) { + return (0 | b) === b ? 0 | b : (g[0] = b, (31 * v[C] | 0) + v[y] | 0); + }, u.ensureNotNull = function(b) { + return b != null ? b : u.throwNPE(); + }, String.prototype.startsWith === void 0 && Object.defineProperty(String.prototype, "startsWith", { value: function(b, R) { + return R = R || 0, this.lastIndexOf(b, R) === R; + } }), String.prototype.endsWith === void 0 && Object.defineProperty(String.prototype, "endsWith", { value: function(b, R) { + var M = this.toString(); + (R === void 0 || R > M.length) && (R = M.length), R -= b.length; + var O = M.indexOf(b, R); + return O !== -1 && O === R; + } }), Math.sign === void 0 && (Math.sign = function(b) { + return (b = +b) == 0 || isNaN(b) ? Number(b) : b > 0 ? 1 : -1; + }), Math.trunc === void 0 && (Math.trunc = function(b) { + return isNaN(b) ? NaN : b > 0 ? Math.floor(b) : Math.ceil(b); + }), function() { + var b = Math.sqrt(2220446049250313e-31), R = Math.sqrt(b), M = 1 / b, O = 1 / R; + if (Math.sinh === void 0 && (Math.sinh = function(B) { + if (Math.abs(B) < R) { + var H = B; + return Math.abs(B) > b && (H += B * B * B / 6), H; + } + var Y = Math.exp(B), X = 1 / Y; + return isFinite(Y) ? isFinite(X) ? (Y - X) / 2 : -Math.exp(-B - Math.LN2) : Math.exp(B - Math.LN2); + }), Math.cosh === void 0 && (Math.cosh = function(B) { + var H = Math.exp(B), Y = 1 / H; + return isFinite(H) && isFinite(Y) ? (H + Y) / 2 : Math.exp(Math.abs(B) - Math.LN2); + }), Math.tanh === void 0 && (Math.tanh = function(B) { + if (Math.abs(B) < R) { + var H = B; + return Math.abs(B) > b && (H -= B * B * B / 3), H; + } + var Y = Math.exp(+B), X = Math.exp(-B); + return Y === 1 / 0 ? 1 : X === 1 / 0 ? -1 : (Y - X) / (Y + X); + }), Math.asinh === void 0) { + var P = function(B) { + if (B >= +R) + return B > O ? B > M ? Math.log(B) + Math.LN2 : Math.log(2 * B + 1 / (2 * B)) : Math.log(B + Math.sqrt(B * B + 1)); + if (B <= -R) + return -P(-B); + var H = B; + return Math.abs(B) >= b && (H -= B * B * B / 6), H; + }; + Math.asinh = P; + } + Math.acosh === void 0 && (Math.acosh = function(B) { + if (B < 1) + return NaN; + if (B - 1 >= R) + return B > M ? Math.log(B) + Math.LN2 : Math.log(B + Math.sqrt(B * B - 1)); + var H = Math.sqrt(B - 1), Y = H; + return H >= b && (Y -= H * H * H / 12), Math.sqrt(2) * Y; + }), Math.atanh === void 0 && (Math.atanh = function(B) { + if (Math.abs(B) < R) { + var H = B; + return Math.abs(B) > b && (H += B * B * B / 3), H; + } + return Math.log((1 + B) / (1 - B)) / 2; + }), Math.log1p === void 0 && (Math.log1p = function(B) { + if (Math.abs(B) < R) { + var H = B * B, Y = H * B; + return -Y * B / 4 + Y / 3 - H / 2 + B; + } + return Math.log(B + 1); + }), Math.expm1 === void 0 && (Math.expm1 = function(B) { + if (Math.abs(B) < R) { + var H = B * B, Y = H * B; + return Y * B / 24 + Y / 6 + H / 2 + B; + } + return Math.exp(B) - 1; + }); + }(), Math.hypot === void 0 && (Math.hypot = function() { + for (var b = 0, R = arguments.length, M = 0; M < R; M++) { + if (arguments[M] === 1 / 0 || arguments[M] === -1 / 0) + return 1 / 0; + b += arguments[M] * arguments[M]; + } + return Math.sqrt(b); + }), Math.log10 === void 0 && (Math.log10 = function(b) { + return Math.log(b) * Math.LOG10E; + }), Math.log2 === void 0 && (Math.log2 = function(b) { + return Math.log(b) * Math.LOG2E; + }), Math.clz32 === void 0 && (Math.clz32 = (A = Math.log, S = Math.LN2, function(b) { + var R = b >>> 0; + return R === 0 ? 32 : 31 - (A(R) / S | 0) | 0; + })), ArrayBuffer.isView === void 0 && (ArrayBuffer.isView = function(b) { + return b != null && b.__proto__ != null && b.__proto__.__proto__ === Int8Array.prototype.__proto__; + }), Array.prototype.fill === void 0 && Object.defineProperty(Array.prototype, "fill", { value: function(b) { + if (this == null) + throw new TypeError("this is null or not defined"); + for (var R = Object(this), M = R.length >>> 0, O = arguments[1] >> 0, P = O < 0 ? Math.max(M + O, 0) : Math.min(O, M), B = arguments[2], H = B === void 0 ? M : B >> 0, Y = H < 0 ? Math.max(M + H, 0) : Math.min(H, M); P < Y; ) + R[P] = b, P++; + return R; + } }), function() { + function b(Y, X) { + return Y < 0 ? Math.max(0, Y + X) : Math.min(Y, X); + } + function R(Y, X) { + return X === void 0 && (X = this.length), Y = b(Y || 0, this.length), X = Math.max(Y, b(X, this.length)), new this.constructor(this.subarray(Y, X)); + } + for (var M = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array], O = 0; O < M.length; ++O) + (H = M[O]).prototype.fill === void 0 && Object.defineProperty(H.prototype, "fill", { value: Array.prototype.fill }), H.prototype.slice === void 0 && Object.defineProperty(H.prototype, "slice", { value: R }); + try { + (function() { + }).apply(null, new Int32Array(0)); + } catch (Y) { + var P = Function.prototype.apply; + Object.defineProperty(Function.prototype, "apply", { value: function(X, ee) { + return P.call(this, X, [].slice.call(ee)); + } }); + } + for (O = 0; O < M.length; ++O) + (H = M[O]).prototype.map === void 0 && Object.defineProperty(H.prototype, "map", { value: function(Y, X) { + return [].slice.call(this).map(Y, X); + } }); + var B = function(Y, X) { + if (Y < X) + return -1; + if (Y > X) + return 1; + if (Y === X) { + if (Y !== 0) + return 0; + var ee = 1 / Y; + return ee === 1 / X ? 0 : ee < 0 ? -1 : 1; + } + return Y != Y ? X != X ? 0 : 1 : -1; + }; + for (O = 0; O < M.length; ++O) { + var H; + (H = M[O]).prototype.sort === void 0 && Object.defineProperty(H.prototype, "sort", { value: function(Y) { + return Array.prototype.sort.call(this, Y || B); + } }); + } + }(), u.Kind = { CLASS: "class", INTERFACE: "interface", OBJECT: "object" }, u.isType = function(b, R) { + if (R === Object) + switch (typeof b) { + case "string": + case "number": + case "boolean": + case "function": + return !0; + default: + return b instanceof Object; + } + if (b == null || R == null || typeof b != "object" && typeof b != "function") + return !1; + if (typeof R == "function" && b instanceof R) + return !0; + var M = Object.getPrototypeOf(R), O = M != null ? M.constructor : null; + if (O != null && "$metadata$" in O && O.$metadata$.kind === u.Kind.OBJECT) + return b === R; + var P = R.$metadata$; + return P == null ? b instanceof R : P.kind === u.Kind.INTERFACE && b.constructor != null && x(b.constructor, R); + }, u.isNumber = function(b) { + return typeof b == "number" || b instanceof u.Long; + }, u.isChar = function(b) { + return b instanceof u.BoxedChar; + }, u.isCharSequence = function(b) { + return typeof b == "string" || u.isType(b, u.kotlin.CharSequence); + }, function() { + var b = u.Kind.INTERFACE, R = u.Kind.OBJECT, M = u.Kind.CLASS, O = (u.defineInlineFunction, u.wrapFunction, u.equals); + function P() { + } + function B() { + X(), this.name$ = "", this.ordinal$ = 0; + } + function H() { + Y = this; + } + u.Long.ZERO, P.$metadata$ = { kind: b, simpleName: "Comparable", interfaces: [] }, Object.defineProperty(B.prototype, "name", { configurable: !0, get: function() { + return this.name$; + } }), Object.defineProperty(B.prototype, "ordinal", { configurable: !0, get: function() { + return this.ordinal$; + } }), B.prototype.compareTo_11rb$ = function(Me) { + return u.primitiveCompareTo(this.ordinal, Me.ordinal); + }, B.prototype.equals = function(Me) { + return this === Me; + }, B.prototype.hashCode = function() { + return u.identityHashCode(this); + }, B.prototype.toString = function() { + return this.name; + }, H.$metadata$ = { kind: R, simpleName: "Companion", interfaces: [] }; + var Y = null; + function X() { + return Y === null && new H(), Y; + } + function ee() { + ae = this, this.MIN_VALUE = 5e-324, this.MAX_VALUE = 17976931348623157e292, this.POSITIVE_INFINITY = 1 / 0, this.NEGATIVE_INFINITY = -1 / 0, this.NaN = NaN, this.SIZE_BYTES = 8, this.SIZE_BITS = 64; + } + B.$metadata$ = { kind: M, simpleName: "Enum", interfaces: [P] }, ee.$metadata$ = { kind: R, simpleName: "DoubleCompanionObject", interfaces: [] }; + var ae = null; + function J() { + ne = this, this.MIN_VALUE = 14e-46, this.MAX_VALUE = 34028235e31, this.POSITIVE_INFINITY = 1 / 0, this.NEGATIVE_INFINITY = -1 / 0, this.NaN = NaN, this.SIZE_BYTES = 4, this.SIZE_BITS = 32; + } + J.$metadata$ = { kind: R, simpleName: "FloatCompanionObject", interfaces: [] }; + var ne = null; + function fe() { + de = this, this.MIN_VALUE = -2147483648, this.MAX_VALUE = 2147483647, this.SIZE_BYTES = 4, this.SIZE_BITS = 32; + } + fe.$metadata$ = { kind: R, simpleName: "IntCompanionObject", interfaces: [] }; + var de = null; + function Te() { + be = this, this.MIN_VALUE = u.Long.MIN_VALUE, this.MAX_VALUE = u.Long.MAX_VALUE, this.SIZE_BYTES = 8, this.SIZE_BITS = 64; + } + Te.$metadata$ = { kind: R, simpleName: "LongCompanionObject", interfaces: [] }; + var be = null; + function Ve() { + pe = this, this.MIN_VALUE = 0, this.MAX_VALUE = 65535, this.MIN_HIGH_SURROGATE = 55296, this.MAX_HIGH_SURROGATE = 56319, this.MIN_LOW_SURROGATE = 56320, this.MAX_LOW_SURROGATE = 57343, this.MIN_SURROGATE = this.MIN_HIGH_SURROGATE, this.MAX_SURROGATE = this.MAX_LOW_SURROGATE, this.SIZE_BYTES = 2, this.SIZE_BITS = 16; + } + Ve.$metadata$ = { kind: R, simpleName: "CharCompanionObject", interfaces: [] }; + var pe = null; + function Be() { + Ue = this; + } + Be.$metadata$ = { kind: R, simpleName: "StringCompanionObject", interfaces: [] }; + var Ue = null, Qe = d.kotlin || (d.kotlin = {}); + Qe.Comparable = P, Object.defineProperty(B, "Companion", { get: X }), Qe.Enum = B, d.newArray = function(Me, we) { + return function(He, Ie) { + var Ae; + Ae = He.length - 1 | 0; + for (var Fe = 0; Fe <= Ae; Fe++) + He[Fe] = Ie; + return He; + }(Array(Me), we); + }, d.charArray = function(Me, we) { + var He, Ie = new Uint16Array(Me); + if (Ie.$type$ = "CharArray", we == null || O(we, !0) || O(we, !1)) + He = Ie; + else { + var Ae; + Ae = Ie.length - 1 | 0; + for (var Fe = 0; Fe <= Ae; Fe++) + Ie[Fe] = we(Fe); + He = Ie; + } + return He; + }; + var Re = Qe.js || (Qe.js = {}), Ne = Re.internal || (Re.internal = {}); + Object.defineProperty(Ne, "DoubleCompanionObject", { get: function() { + return ae === null && new ee(), ae; + } }), Object.defineProperty(Ne, "FloatCompanionObject", { get: function() { + return ne === null && new J(), ne; + } }), Object.defineProperty(Ne, "IntCompanionObject", { get: function() { + return de === null && new fe(), de; + } }), Object.defineProperty(Ne, "LongCompanionObject", { get: function() { + return be === null && new Te(), be; + } }), Object.defineProperty(Ne, "CharCompanionObject", { get: function() { + return pe === null && new Ve(), pe; + } }), Object.defineProperty(Ne, "StringCompanionObject", { get: function() { + return Ue === null && new Be(), Ue; + } }); + }(), function() { + var b = u.Kind.CLASS, R = u.defineInlineFunction, M = u.wrapFunction, O = u.equals, P = u.toBoxedChar, B = u.unboxChar, H = (u.kotlin.js.internal.DoubleCompanionObject, u.Long.ZERO), Y = Math, X = u.toChar, ee = (u.Long.NEG_ONE, u.toByte), ae = (u.Long.fromInt(-128), u.Long.fromInt(127), u.Long.fromInt(-2147483648), u.Long.fromInt(2147483647), u.Long.MIN_VALUE), J = u.Long.MAX_VALUE, ne = (u.Long.fromInt(-32768), u.Long.fromInt(32767), u.toString), fe = u.throwCCE, de = (u.Long.fromInt(255), new u.Long(-1, 0), u.Long.fromInt(65535), u.Kind.INTERFACE), Te = u.Kind.OBJECT, be = u.kotlin.Enum, Ve = u.kotlin.Comparable, pe = u.ensureNotNull, Be = Object, Ue = Error, Qe = u.arrayToString, Re = ArrayBuffer.isView, Ne = u.hashCode, Me = (u.kotlin.js.internal.FloatCompanionObject, u.kotlin.js.internal.CharCompanionObject), we = (new u.Long(-1478467534, -1720727600), new u.Long(-888910638, 1920087921), new u.Long(1993859828, 793161749)), He = u.Long.ONE; + function Ie(z, Q) { + return Fe(z, Q) >= 0; + } + function Ae(z, Q) { + if (Q == null) { + for (var Se = 0; Se !== z.length; ++Se) + if (z[Se] == null) + return Se; + } else + for (var Ze = 0; Ze !== z.length; ++Ze) + if (O(Q, z[Ze])) + return Ze; + return -1; + } + function Fe(z, Q) { + for (var Se = 0; Se !== z.length; ++Se) + if (Q === z[Se]) + return Se; + return -1; + } + function $e(z, Q) { + var Se, Ze; + if (Q == null) + for (Se = Ct(it(z)).iterator(); Se.hasNext(); ) { + var bt = Se.next(); + if (z[bt] == null) + return bt; + } + else + for (Ze = Ct(it(z)).iterator(); Ze.hasNext(); ) { + var ar = Ze.next(); + if (O(Q, z[ar])) + return ar; + } + return -1; + } + function lt(z) { + var Q; + switch (z.length) { + case 0: + throw new Br("Array is empty."); + case 1: + Q = z[0]; + break; + default: + throw vn("Array has more than one element."); + } + return Q; + } + function it(z) { + return new Io(0, nt(z)); + } + function nt(z) { + return z.length - 1 | 0; + } + function ut(z, Q) { + var Se; + for (Se = 0; Se !== z.length; ++Se) { + var Ze = z[Se]; + Q.add_11rb$(Ze); + } + return Q; + } + function rt(z) { + var Q; + switch (z.length) { + case 0: + Q = Jp(); + break; + case 1: + Q = Rs(z[0]); + break; + default: + Q = ut(z, oc(z.length)); + } + return Q; + } + function Ke(z) { + this.closure$iterator = z; + } + function ze(z, Q) { + return u.isType(z, an) ? z.contains_11rb$(Q) : qe(z, Q) >= 0; + } + function qe(z, Q) { + var Se; + if (u.isType(z, Lt)) + return z.indexOf_11rb$(Q); + var Ze = 0; + for (Se = z.iterator(); Se.hasNext(); ) { + var bt = Se.next(); + if (ic(Ze), O(Q, bt)) + return Ze; + Ze = Ze + 1 | 0; + } + return -1; + } + function ct(z, Q) { + var Se; + for (Se = z.iterator(); Se.hasNext(); ) { + var Ze = Se.next(); + Q.add_11rb$(Ze); + } + return Q; + } + function ft(z) { + var Q; + if (u.isType(z, an)) { + switch (z.size) { + case 0: + Q = Jp(); + break; + case 1: + Q = Rs(u.isType(z, Lt) ? z.get_za3lpa$(0) : z.iterator().next()); + break; + default: + Q = ct(z, oc(z.size)); + } + return Q; + } + return qE(ct(z, ji())); + } + function _t(z, Q, Se, Ze, bt, ar, Vr, Wn) { + var tn; + Se === void 0 && (Se = ", "), Ze === void 0 && (Ze = ""), bt === void 0 && (bt = ""), ar === void 0 && (ar = -1), Vr === void 0 && (Vr = "..."), Wn === void 0 && (Wn = null), Q.append_gw00v9$(Ze); + var Ni = 0; + for (tn = z.iterator(); tn.hasNext(); ) { + var yo = tn.next(); + if ((Ni = Ni + 1 | 0) > 1 && Q.append_gw00v9$(Se), !(ar < 0 || Ni <= ar)) + break; + oC(Q, yo, Wn); + } + return ar >= 0 && Ni > ar && Q.append_gw00v9$(Vr), Q.append_gw00v9$(bt), Q; + } + function Nt(z, Q, Se, Ze, bt, ar, Vr) { + return Q === void 0 && (Q = ", "), Se === void 0 && (Se = ""), Ze === void 0 && (Ze = ""), bt === void 0 && (bt = -1), ar === void 0 && (ar = "..."), Vr === void 0 && (Vr = null), _t(z, mo(), Q, Se, Ze, bt, ar, Vr).toString(); + } + function Yt(z) { + return new Ke((Q = z, function() { + return Q.iterator(); + })); + var Q; + } + function tr(z, Q) { + return jv().fromClosedRange_qt1dr2$(z, Q, -1); + } + function Ct(z) { + return jv().fromClosedRange_qt1dr2$(z.last, z.first, 0 | -z.step); + } + function hr(z, Q) { + return z < Q ? Q : z; + } + function Er(z, Q) { + return z > Q ? Q : z; + } + function Fr(z, Q) { + if (!(Q >= 0)) + throw vn(("Requested element count " + Q + " is less than zero.").toString()); + return Q === 0 ? Gf() : u.isType(z, Zp) ? z.take_za3lpa$(Q) : new Rd(z, Q); + } + function Dn(z, Q) { + return new lu(z, Q); + } + function hn() { + } + function Jn() { + } + function nn() { + } + function dn() { + } + function an() { + } + function zn() { + } + function Lt() { + } + function Ot() { + } + function Jt() { + } + function jt() { + } + function nr() { + } + function Ht() { + } + function wn() { + } + function On() { + } + function or() { + } + function Pt() { + } + function Qr() { + } + function Bn() { + } + function Un() { + Yn = this; + } + new u.Long(1, -2147483648), new u.Long(1908874354, -59652324), new u.Long(1, -1073741824), new u.Long(1108857478, -1074), u.Long.fromInt(-2147483647), new u.Long(2077252342, 2147), new u.Long(-2077252342, -2148), new u.Long(1316134911, 2328), new u.Long(387905, -1073741824), new u.Long(-387905, 1073741823), new u.Long(-1, 1073741823), new u.Long(-1108857478, 1073), u.Long.fromInt(2047), Xt.prototype = Object.create(Ue.prototype), Xt.prototype.constructor = Xt, Wt.prototype = Object.create(Xt.prototype), Wt.prototype.constructor = Wt, Cr.prototype = Object.create(Ue.prototype), Cr.prototype.constructor = Cr, _r.prototype = Object.create(Wt.prototype), _r.prototype.constructor = _r, Xe.prototype = Object.create(Wt.prototype), Xe.prototype.constructor = Xe, Bt.prototype = Object.create(Wt.prototype), Bt.prototype.constructor = Bt, Gt.prototype = Object.create(Wt.prototype), Gt.prototype.constructor = Gt, Mr.prototype = Object.create(_r.prototype), Mr.prototype.constructor = Mr, ai.prototype = Object.create(Wt.prototype), ai.prototype.constructor = ai, en.prototype = Object.create(Wt.prototype), en.prototype.constructor = en, Br.prototype = Object.create(Wt.prototype), Br.prototype.constructor = Br, ir.prototype = Object.create(Wt.prototype), ir.prototype.constructor = ir, cs.prototype = Object.create(wo.prototype), cs.prototype.constructor = cs, Ia.prototype = Object.create(wo.prototype), Ia.prototype.constructor = Ia, Xa.prototype = Object.create(Ds.prototype), Xa.prototype.constructor = Xa, oi.prototype = Object.create(Ia.prototype), oi.prototype.constructor = oi, xa.prototype = Object.create(oi.prototype), xa.prototype.constructor = xa, sa.prototype = Object.create(Ia.prototype), sa.prototype.constructor = sa, fa.prototype = Object.create(sa.prototype), fa.prototype.constructor = fa, os.prototype = Object.create(sa.prototype), os.prototype.constructor = os, Os.prototype = Object.create(Ia.prototype), Os.prototype.constructor = Os, oa.prototype = Object.create(Xo.prototype), oa.prototype.constructor = oa, pi.prototype = Object.create(oi.prototype), pi.prototype.constructor = pi, Hn.prototype = Object.create(fa.prototype), Hn.prototype.constructor = Hn, Ki.prototype = Object.create(oa.prototype), Ki.prototype.constructor = Ki, la.prototype = Object.create(sa.prototype), la.prototype.constructor = la, go.prototype = Object.create(ma.prototype), go.prototype.constructor = go, Ms.prototype = Object.create(fa.prototype), Ms.prototype.constructor = Ms, $a.prototype = Object.create(Ki.prototype), $a.prototype.constructor = $a, Wo.prototype = Object.create(la.prototype), Wo.prototype.constructor = Wo, jl.prototype = Object.create(An.prototype), jl.prototype.constructor = jl, kr.prototype = Object.create(An.prototype), kr.prototype.constructor = kr, sc.prototype = Object.create(kr.prototype), sc.prototype.constructor = sc, Yo.prototype = Object.create(no.prototype), Yo.prototype.constructor = Yo, Zi.prototype = Object.create(no.prototype), Zi.prototype.constructor = Zi, vo.prototype = Object.create(no.prototype), vo.prototype.constructor = vo, Ad.prototype = Object.create(cs.prototype), Ad.prototype.constructor = Ad, Hu.prototype = Object.create(wo.prototype), Hu.prototype.constructor = Hu, Mh.prototype = Object.create(cs.prototype), Mh.prototype.constructor = Mh, su.prototype = Object.create(kh.prototype), su.prototype.constructor = su, Ic.prototype = Object.create(wo.prototype), Ic.prototype.constructor = Ic, Nh.prototype = Object.create(Ic.prototype), Nh.prototype.constructor = Nh, Lh.prototype = Object.create(wo.prototype), Lh.prototype.constructor = Lh, Tl.prototype = Object.create(Ku.prototype), Tl.prototype.constructor = Tl, cc.prototype = Object.create(be.prototype), cc.prototype.constructor = cc, ms.prototype = Object.create(Il.prototype), ms.prototype.constructor = ms, Io.prototype = Object.create(zl.prototype), Io.prototype.constructor = Io, xo.prototype = Object.create(uc.prototype), xo.prototype.constructor = xo, Vl.prototype = Object.create(Xu.prototype), Vl.prototype.constructor = Vl, hu.prototype = Object.create(zf.prototype), hu.prototype.constructor = hu, Dd.prototype = Object.create(Hf.prototype), Dd.prototype.constructor = Dd, Jf.prototype = Object.create(Xu.prototype), Jf.prototype.constructor = Jf, Wl.prototype = Object.create(Cr.prototype), Wl.prototype.constructor = Wl, Ke.prototype.iterator = function() { + return this.closure$iterator(); + }, Ke.$metadata$ = { kind: b, interfaces: [xc] }, hn.$metadata$ = { kind: de, simpleName: "Annotation", interfaces: [] }, Jn.$metadata$ = { kind: de, simpleName: "CharSequence", interfaces: [] }, nn.$metadata$ = { kind: de, simpleName: "Iterable", interfaces: [] }, dn.$metadata$ = { kind: de, simpleName: "MutableIterable", interfaces: [nn] }, an.$metadata$ = { kind: de, simpleName: "Collection", interfaces: [nn] }, zn.$metadata$ = { kind: de, simpleName: "MutableCollection", interfaces: [dn, an] }, Lt.$metadata$ = { kind: de, simpleName: "List", interfaces: [an] }, Ot.$metadata$ = { kind: de, simpleName: "MutableList", interfaces: [zn, Lt] }, Jt.$metadata$ = { kind: de, simpleName: "Set", interfaces: [an] }, jt.$metadata$ = { kind: de, simpleName: "MutableSet", interfaces: [zn, Jt] }, nr.prototype.getOrDefault_xwzc9p$ = function(z, Q) { + throw new Wl(); + }, Ht.$metadata$ = { kind: de, simpleName: "Entry", interfaces: [] }, nr.$metadata$ = { kind: de, simpleName: "Map", interfaces: [] }, wn.prototype.remove_xwzc9p$ = function(z, Q) { + return !0; + }, On.$metadata$ = { kind: de, simpleName: "MutableEntry", interfaces: [Ht] }, wn.$metadata$ = { kind: de, simpleName: "MutableMap", interfaces: [nr] }, or.$metadata$ = { kind: de, simpleName: "Iterator", interfaces: [] }, Pt.$metadata$ = { kind: de, simpleName: "MutableIterator", interfaces: [or] }, Qr.$metadata$ = { kind: de, simpleName: "ListIterator", interfaces: [or] }, Bn.$metadata$ = { kind: de, simpleName: "MutableListIterator", interfaces: [Pt, Qr] }, Un.prototype.toString = function() { + return "kotlin.Unit"; + }, Un.$metadata$ = { kind: Te, simpleName: "Unit", interfaces: [] }; + var Yn = null; + function fi() { + return Yn === null && new Un(), Yn; + } + function xn(z) { + this.c = z; + } + function Or(z) { + this.resultContinuation_0 = z, this.state_0 = 0, this.exceptionState_0 = 0, this.result_0 = null, this.exception_0 = null, this.finallyPath_0 = null, this.context_hxcuhl$_0 = this.resultContinuation_0.context, this.intercepted__0 = null; + } + function Dr() { + po = this; + } + xn.prototype.equals = function(z) { + return u.isType(z, xn) && this.c === z.c; + }, xn.prototype.hashCode = function() { + return this.c; + }, xn.prototype.toString = function() { + return String.fromCharCode(B(this.c)); + }, xn.prototype.compareTo_11rb$ = function(z) { + return this.c - z; + }, xn.prototype.valueOf = function() { + return this.c; + }, xn.$metadata$ = { kind: b, simpleName: "BoxedChar", interfaces: [Ve] }, Object.defineProperty(Or.prototype, "context", { configurable: !0, get: function() { + return this.context_hxcuhl$_0; + } }), Or.prototype.intercepted = function() { + var z, Q, Se, Ze; + if ((Se = this.intercepted__0) != null) + Ze = Se; + else { + var bt = (Q = (z = this.context.get_j3r2sn$(Qp())) != null ? z.interceptContinuation_wj8d80$(this) : null) != null ? Q : this; + this.intercepted__0 = bt, Ze = bt; + } + return Ze; + }, Or.prototype.resumeWith_tl1gpc$ = function(z) { + for (var Q, Se = { v: this }, Ze = { v: z.isFailure ? null : (Q = z.value) == null || u.isType(Q, Be) ? Q : fe() }, bt = { v: z.exceptionOrNull() }; ; ) { + var ar, Vr, Wn = Se.v, tn = Wn.resultContinuation_0; + bt.v == null ? Wn.result_0 = Ze.v : (Wn.state_0 = Wn.exceptionState_0, Wn.exception_0 = bt.v); + try { + var Ni = Wn.doResume(); + if (Ni === al()) + return; + Ze.v = Ni, bt.v = null; + } catch (yo) { + Ze.v = null, bt.v = yo; + } + if (Wn.releaseIntercepted_0(), !u.isType(tn, Or)) + return (ar = bt.v) != null ? (tn.resumeWith_tl1gpc$(new zs(ig(ar))), Vr = Un) : Vr = null, void (Vr == null && tn.resumeWith_tl1gpc$(new zs(Ze.v))); + Se.v = tn; + } + }, Or.prototype.releaseIntercepted_0 = function() { + var z = this.intercepted__0; + z != null && z !== this && pe(this.context.get_j3r2sn$(Qp())).releaseInterceptedContinuation_k98bjh$(z), this.intercepted__0 = as(); + }, Or.$metadata$ = { kind: b, simpleName: "CoroutineImpl", interfaces: [Zu] }, Object.defineProperty(Dr.prototype, "context", { configurable: !0, get: function() { + throw Tt("This continuation is already complete".toString()); + } }), Dr.prototype.resumeWith_tl1gpc$ = function(z) { + throw Tt("This continuation is already complete".toString()); + }, Dr.prototype.toString = function() { + return "This continuation is already complete"; + }, Dr.$metadata$ = { kind: Te, simpleName: "CompletedContinuation", interfaces: [Zu] }; + var po = null; + function as() { + return po === null && new Dr(), po; + } + function zo(z, Q) { + this.closure$block = z, Or.call(this, Q); + } + function Bs(z, Q, Se) { + return z.length == 3 ? z(Q, Se, !0) : new zo((Ze = z, bt = Q, ar = Se, function() { + return Ze(bt, ar); + }), u.isType(Vr = Se, Zu) ? Vr : Go()); + var Ze, bt, ar, Vr; + } + function Cr(z, Q) { + var Se; + Ue.call(this), Se = Q != null ? Q : null, this.message_q7r8iu$_0 = z === void 0 && Se != null ? u.toString(Se) : z, this.cause_us9j0c$_0 = Se, u.captureStack(Ue, this), this.name = "Error"; + } + function gt(z, Q) { + return Q = Q || Object.create(Cr.prototype), Cr.call(Q, z, null), Q; + } + function Xt(z, Q) { + var Se; + Ue.call(this), Se = Q != null ? Q : null, this.message_8yp7un$_0 = z === void 0 && Se != null ? u.toString(Se) : z, this.cause_th0jdv$_0 = Se, u.captureStack(Ue, this), this.name = "Exception"; + } + function Wt(z, Q) { + Xt.call(this, z, Q), this.name = "RuntimeException"; + } + function zr(z, Q) { + return Q = Q || Object.create(Wt.prototype), Wt.call(Q, z, null), Q; + } + function _r(z, Q) { + Wt.call(this, z, Q), this.name = "IllegalArgumentException"; + } + function vn(z, Q) { + return Q = Q || Object.create(_r.prototype), _r.call(Q, z, null), Q; + } + function Xe(z, Q) { + Wt.call(this, z, Q), this.name = "IllegalStateException"; + } + function Tt(z, Q) { + return Q = Q || Object.create(Xe.prototype), Xe.call(Q, z, null), Q; + } + function Bt(z) { + zr(z, this), this.name = "IndexOutOfBoundsException"; + } + function Gt(z, Q) { + Wt.call(this, z, Q), this.name = "UnsupportedOperationException"; + } + function ur(z) { + return z = z || Object.create(Gt.prototype), Gt.call(z, null, null), z; + } + function Ur(z, Q) { + return Q = Q || Object.create(Gt.prototype), Gt.call(Q, z, null), Q; + } + function Mr(z) { + vn(z, this), this.name = "NumberFormatException"; + } + function ai(z) { + zr(z, this), this.name = "NullPointerException"; + } + function en(z) { + zr(z, this), this.name = "ClassCastException"; + } + function Br(z) { + zr(z, this), this.name = "NoSuchElementException"; + } + function Xn(z) { + return z = z || Object.create(Br.prototype), Br.call(z, null), z; + } + function ir(z) { + zr(z, this), this.name = "ArithmeticException"; + } + function Fi(z, Q, Se) { + return Pi().checkRangeIndexes_cub51b$(Q, Se, z.length), z.slice(Q, Se); + } + function wi() { + gs = this, this.rangeStart_8be2vx$ = new Int32Array([48, 1632, 1776, 1984, 2406, 2534, 2662, 2790, 2918, 3046, 3174, 3302, 3430, 3558, 3664, 3792, 3872, 4160, 4240, 6112, 6160, 6470, 6608, 6784, 6800, 6992, 7088, 7232, 7248, 42528, 43216, 43264, 43472, 43504, 43600, 44016, 65296]); + } + zo.prototype = Object.create(Or.prototype), zo.prototype.constructor = zo, zo.prototype.doResume = function() { + var z; + if ((z = this.exception_0) != null) + throw z; + return this.closure$block(); + }, zo.$metadata$ = { kind: b, interfaces: [Or] }, Object.defineProperty(Cr.prototype, "message", { get: function() { + return this.message_q7r8iu$_0; + } }), Object.defineProperty(Cr.prototype, "cause", { get: function() { + return this.cause_us9j0c$_0; + } }), Cr.$metadata$ = { kind: b, simpleName: "Error", interfaces: [Ue] }, Object.defineProperty(Xt.prototype, "message", { get: function() { + return this.message_8yp7un$_0; + } }), Object.defineProperty(Xt.prototype, "cause", { get: function() { + return this.cause_th0jdv$_0; + } }), Xt.$metadata$ = { kind: b, simpleName: "Exception", interfaces: [Ue] }, Wt.$metadata$ = { kind: b, simpleName: "RuntimeException", interfaces: [Xt] }, _r.$metadata$ = { kind: b, simpleName: "IllegalArgumentException", interfaces: [Wt] }, Xe.$metadata$ = { kind: b, simpleName: "IllegalStateException", interfaces: [Wt] }, Bt.$metadata$ = { kind: b, simpleName: "IndexOutOfBoundsException", interfaces: [Wt] }, Gt.$metadata$ = { kind: b, simpleName: "UnsupportedOperationException", interfaces: [Wt] }, Mr.$metadata$ = { kind: b, simpleName: "NumberFormatException", interfaces: [_r] }, ai.$metadata$ = { kind: b, simpleName: "NullPointerException", interfaces: [Wt] }, en.$metadata$ = { kind: b, simpleName: "ClassCastException", interfaces: [Wt] }, Br.$metadata$ = { kind: b, simpleName: "NoSuchElementException", interfaces: [Wt] }, ir.$metadata$ = { kind: b, simpleName: "ArithmeticException", interfaces: [Wt] }, wi.$metadata$ = { kind: Te, simpleName: "Digit", interfaces: [] }; + var gs = null; + function Bi() { + return gs === null && new wi(), gs; + } + function nc(z, Q) { + for (var Se = 0, Ze = z.length - 1 | 0, bt = -1, ar = 0; Se <= Ze; ) + if (Q > (ar = z[bt = (Se + Ze | 0) / 2 | 0])) + Se = bt + 1 | 0; + else { + if (Q === ar) + return bt; + Ze = bt - 1 | 0; + } + return bt - (Q < ar ? 1 : 0) | 0; + } + function aa(z) { + var Q = 0 | z, Se = nc(Bi().rangeStart_8be2vx$, Q), Ze = Q - Bi().rangeStart_8be2vx$[Se] | 0; + return Ze < 10 ? Ze : -1; + } + function Lo(z) { + this.function$ = z; + } + function Ua(z) { + return z.toArray !== void 0 ? z.toArray() : As(z); + } + function As(z) { + for (var Q = [], Se = z.iterator(); Se.hasNext(); ) + Q.push(Se.next()); + return Q; + } + function Ho(z, Q) { + var Se; + if (Q.length < z.size) + return As(z); + for (var Ze = z.iterator(), bt = 0; Ze.hasNext(); ) + Q[Se = bt, bt = Se + 1 | 0, Se] = Ze.next(); + return bt < Q.length && (Q[bt] = null), Q; + } + function Rs(z) { + return wy([z]); + } + function Vu(z, Q, Se, Ze, bt) { + Pi().checkRangeIndexes_cub51b$(Ze, bt, z.length); + var ar = bt - Ze | 0; + if (Pi().checkRangeIndexes_cub51b$(Se, Se + ar | 0, Q.length), Re(Q) && Re(z)) { + var Vr = z.subarray(Ze, bt); + Q.set(Vr, Se); + } else if (z !== Q || Se <= Ze) + for (var Wn = 0; Wn < ar; Wn++) + Q[Se + Wn | 0] = z[Ze + Wn | 0]; + else + for (var tn = ar - 1 | 0; tn >= 0; tn--) + Q[Se + tn | 0] = z[Ze + tn | 0]; + } + function ic(z) { + return z < 0 && $l(), z; + } + function vs(z) { + return z; + } + function Ia() { + wo.call(this); + } + function oi() { + Ia.call(this), this.modCount = 0; + } + function Ds(z) { + this.$outer = z, this.index_0 = 0, this.last_0 = -1; + } + function Xa(z, Q) { + this.$outer = z, Ds.call(this, this.$outer), Pi().checkPositionIndex_6xvm5r$(Q, this.$outer.size), this.index_0 = Q; + } + function xa(z, Q, Se) { + oi.call(this), this.list_0 = z, this.fromIndex_0 = Q, this._size_0 = 0, Pi().checkRangeIndexes_cub51b$(this.fromIndex_0, Se, this.list_0.size), this._size_0 = Se - this.fromIndex_0 | 0; + } + function oa() { + Xo.call(this), this._keys_qe2m0n$_0 = null, this._values_kxdlqh$_0 = null; + } + function ma(z, Q) { + this.key_5xhq3d$_0 = z, this._value_0 = Q; + } + function fa() { + sa.call(this); + } + function os(z) { + this.this$AbstractMutableMap = z, sa.call(this); + } + function Ul(z) { + this.closure$entryIterator = z; + } + function Os(z) { + this.this$AbstractMutableMap = z, Ia.call(this); + } + function ja(z) { + this.closure$entryIterator = z; + } + function sa() { + Ia.call(this); + } + function pi(z) { + oi.call(this), this.array_hd7ov6$_0 = z, this.isReadOnly_dbt2oh$_0 = !1; + } + function Xr(z) { + return z = z || Object.create(pi.prototype), pi.call(z, []), z; + } + function Mn() { + } + function pa() { + Qa = this; + } + Lo.prototype.compare = function(z, Q) { + return this.function$(z, Q); + }, Lo.$metadata$ = { kind: de, simpleName: "Comparator", interfaces: [] }, Ia.prototype.remove_11rb$ = function(z) { + this.checkIsMutable(); + for (var Q = this.iterator(); Q.hasNext(); ) + if (O(Q.next(), z)) + return Q.remove(), !0; + return !1; + }, Ia.prototype.addAll_brywnq$ = function(z) { + var Q; + this.checkIsMutable(); + var Se = !1; + for (Q = z.iterator(); Q.hasNext(); ) { + var Ze = Q.next(); + this.add_11rb$(Ze) && (Se = !0); + } + return Se; + }, Ia.prototype.removeAll_brywnq$ = function(z) { + var Q; + return this.checkIsMutable(), _y(u.isType(this, dn) ? this : Go(), (Q = z, function(Se) { + return Q.contains_11rb$(Se); + })); + }, Ia.prototype.retainAll_brywnq$ = function(z) { + var Q; + return this.checkIsMutable(), _y(u.isType(this, dn) ? this : Go(), (Q = z, function(Se) { + return !Q.contains_11rb$(Se); + })); + }, Ia.prototype.clear = function() { + this.checkIsMutable(); + for (var z = this.iterator(); z.hasNext(); ) + z.next(), z.remove(); + }, Ia.prototype.toJSON = function() { + return this.toArray(); + }, Ia.prototype.checkIsMutable = function() { + }, Ia.$metadata$ = { kind: b, simpleName: "AbstractMutableCollection", interfaces: [zn, wo] }, oi.prototype.add_11rb$ = function(z) { + return this.checkIsMutable(), this.add_wxm5ur$(this.size, z), !0; + }, oi.prototype.addAll_u57x28$ = function(z, Q) { + var Se, Ze; + Pi().checkPositionIndex_6xvm5r$(z, this.size), this.checkIsMutable(); + var bt = z, ar = !1; + for (Se = Q.iterator(); Se.hasNext(); ) { + var Vr = Se.next(); + this.add_wxm5ur$((bt = (Ze = bt) + 1 | 0, Ze), Vr), ar = !0; + } + return ar; + }, oi.prototype.clear = function() { + this.checkIsMutable(), this.removeRange_vux9f0$(0, this.size); + }, oi.prototype.removeAll_brywnq$ = function(z) { + return this.checkIsMutable(), Sy(this, (Q = z, function(Se) { + return Q.contains_11rb$(Se); + })); + var Q; + }, oi.prototype.retainAll_brywnq$ = function(z) { + return this.checkIsMutable(), Sy(this, (Q = z, function(Se) { + return !Q.contains_11rb$(Se); + })); + var Q; + }, oi.prototype.iterator = function() { + return new Ds(this); + }, oi.prototype.contains_11rb$ = function(z) { + return this.indexOf_11rb$(z) >= 0; + }, oi.prototype.indexOf_11rb$ = function(z) { + var Q; + Q = Vf(this); + for (var Se = 0; Se <= Q; Se++) + if (O(this.get_za3lpa$(Se), z)) + return Se; + return -1; + }, oi.prototype.lastIndexOf_11rb$ = function(z) { + for (var Q = Vf(this); Q >= 0; Q--) + if (O(this.get_za3lpa$(Q), z)) + return Q; + return -1; + }, oi.prototype.listIterator = function() { + return this.listIterator_za3lpa$(0); + }, oi.prototype.listIterator_za3lpa$ = function(z) { + return new Xa(this, z); + }, oi.prototype.subList_vux9f0$ = function(z, Q) { + return new xa(this, z, Q); + }, oi.prototype.removeRange_vux9f0$ = function(z, Q) { + for (var Se = this.listIterator_za3lpa$(z), Ze = Q - z | 0, bt = 0; bt < Ze; bt++) + Se.next(), Se.remove(); + }, oi.prototype.equals = function(z) { + return z === this || !!u.isType(z, Lt) && Pi().orderedEquals_e92ka7$(this, z); + }, oi.prototype.hashCode = function() { + return Pi().orderedHashCode_nykoif$(this); + }, Ds.prototype.hasNext = function() { + return this.index_0 < this.$outer.size; + }, Ds.prototype.next = function() { + var z; + if (!this.hasNext()) + throw Xn(); + return this.last_0 = (z = this.index_0, this.index_0 = z + 1 | 0, z), this.$outer.get_za3lpa$(this.last_0); + }, Ds.prototype.remove = function() { + if (this.last_0 === -1) + throw Tt("Call next() or previous() before removing element from the iterator.".toString()); + this.$outer.removeAt_za3lpa$(this.last_0), this.index_0 = this.last_0, this.last_0 = -1; + }, Ds.$metadata$ = { kind: b, simpleName: "IteratorImpl", interfaces: [Pt] }, Xa.prototype.hasPrevious = function() { + return this.index_0 > 0; + }, Xa.prototype.nextIndex = function() { + return this.index_0; + }, Xa.prototype.previous = function() { + if (!this.hasPrevious()) + throw Xn(); + return this.last_0 = (this.index_0 = this.index_0 - 1 | 0, this.index_0), this.$outer.get_za3lpa$(this.last_0); + }, Xa.prototype.previousIndex = function() { + return this.index_0 - 1 | 0; + }, Xa.prototype.add_11rb$ = function(z) { + this.$outer.add_wxm5ur$(this.index_0, z), this.index_0 = this.index_0 + 1 | 0, this.last_0 = -1; + }, Xa.prototype.set_11rb$ = function(z) { + if (this.last_0 === -1) + throw Tt("Call next() or previous() before updating element value with the iterator.".toString()); + this.$outer.set_wxm5ur$(this.last_0, z); + }, Xa.$metadata$ = { kind: b, simpleName: "ListIteratorImpl", interfaces: [Bn, Ds] }, xa.prototype.add_wxm5ur$ = function(z, Q) { + Pi().checkPositionIndex_6xvm5r$(z, this._size_0), this.list_0.add_wxm5ur$(this.fromIndex_0 + z | 0, Q), this._size_0 = this._size_0 + 1 | 0; + }, xa.prototype.get_za3lpa$ = function(z) { + return Pi().checkElementIndex_6xvm5r$(z, this._size_0), this.list_0.get_za3lpa$(this.fromIndex_0 + z | 0); + }, xa.prototype.removeAt_za3lpa$ = function(z) { + Pi().checkElementIndex_6xvm5r$(z, this._size_0); + var Q = this.list_0.removeAt_za3lpa$(this.fromIndex_0 + z | 0); + return this._size_0 = this._size_0 - 1 | 0, Q; + }, xa.prototype.set_wxm5ur$ = function(z, Q) { + return Pi().checkElementIndex_6xvm5r$(z, this._size_0), this.list_0.set_wxm5ur$(this.fromIndex_0 + z | 0, Q); + }, Object.defineProperty(xa.prototype, "size", { configurable: !0, get: function() { + return this._size_0; + } }), xa.prototype.checkIsMutable = function() { + this.list_0.checkIsMutable(); + }, xa.$metadata$ = { kind: b, simpleName: "SubList", interfaces: [mn, oi] }, oi.$metadata$ = { kind: b, simpleName: "AbstractMutableList", interfaces: [Ot, Ia] }, Object.defineProperty(ma.prototype, "key", { get: function() { + return this.key_5xhq3d$_0; + } }), Object.defineProperty(ma.prototype, "value", { configurable: !0, get: function() { + return this._value_0; + } }), ma.prototype.setValue_11rc$ = function(z) { + var Q = this._value_0; + return this._value_0 = z, Q; + }, ma.prototype.hashCode = function() { + return Yp().entryHashCode_9fthdn$(this); + }, ma.prototype.toString = function() { + return Yp().entryToString_9fthdn$(this); + }, ma.prototype.equals = function(z) { + return Yp().entryEquals_js7fox$(this, z); + }, ma.$metadata$ = { kind: b, simpleName: "SimpleEntry", interfaces: [On] }, fa.prototype.contains_11rb$ = function(z) { + return this.containsEntry_kw6fkd$(z); + }, fa.prototype.remove_11rb$ = function(z) { + return this.removeEntry_kw6fkd$(z); + }, fa.$metadata$ = { kind: b, simpleName: "AbstractEntrySet", interfaces: [sa] }, oa.prototype.clear = function() { + this.entries.clear(); + }, os.prototype.add_11rb$ = function(z) { + throw Ur("Add is not supported on keys"); + }, os.prototype.clear = function() { + this.this$AbstractMutableMap.clear(); + }, os.prototype.contains_11rb$ = function(z) { + return this.this$AbstractMutableMap.containsKey_11rb$(z); + }, Ul.prototype.hasNext = function() { + return this.closure$entryIterator.hasNext(); + }, Ul.prototype.next = function() { + return this.closure$entryIterator.next().key; + }, Ul.prototype.remove = function() { + this.closure$entryIterator.remove(); + }, Ul.$metadata$ = { kind: b, interfaces: [Pt] }, os.prototype.iterator = function() { + return new Ul(this.this$AbstractMutableMap.entries.iterator()); + }, os.prototype.remove_11rb$ = function(z) { + return this.checkIsMutable(), !!this.this$AbstractMutableMap.containsKey_11rb$(z) && (this.this$AbstractMutableMap.remove_11rb$(z), !0); + }, Object.defineProperty(os.prototype, "size", { configurable: !0, get: function() { + return this.this$AbstractMutableMap.size; + } }), os.prototype.checkIsMutable = function() { + this.this$AbstractMutableMap.checkIsMutable(); + }, os.$metadata$ = { kind: b, interfaces: [sa] }, Object.defineProperty(oa.prototype, "keys", { configurable: !0, get: function() { + return this._keys_qe2m0n$_0 == null && (this._keys_qe2m0n$_0 = new os(this)), pe(this._keys_qe2m0n$_0); + } }), oa.prototype.putAll_a2k3zr$ = function(z) { + var Q; + for (this.checkIsMutable(), Q = z.entries.iterator(); Q.hasNext(); ) { + var Se = Q.next(), Ze = Se.key, bt = Se.value; + this.put_xwzc9p$(Ze, bt); + } + }, Os.prototype.add_11rb$ = function(z) { + throw Ur("Add is not supported on values"); + }, Os.prototype.clear = function() { + this.this$AbstractMutableMap.clear(); + }, Os.prototype.contains_11rb$ = function(z) { + return this.this$AbstractMutableMap.containsValue_11rc$(z); + }, ja.prototype.hasNext = function() { + return this.closure$entryIterator.hasNext(); + }, ja.prototype.next = function() { + return this.closure$entryIterator.next().value; + }, ja.prototype.remove = function() { + this.closure$entryIterator.remove(); + }, ja.$metadata$ = { kind: b, interfaces: [Pt] }, Os.prototype.iterator = function() { + return new ja(this.this$AbstractMutableMap.entries.iterator()); + }, Object.defineProperty(Os.prototype, "size", { configurable: !0, get: function() { + return this.this$AbstractMutableMap.size; + } }), Os.prototype.checkIsMutable = function() { + this.this$AbstractMutableMap.checkIsMutable(); + }, Os.$metadata$ = { kind: b, interfaces: [Ia] }, Object.defineProperty(oa.prototype, "values", { configurable: !0, get: function() { + return this._values_kxdlqh$_0 == null && (this._values_kxdlqh$_0 = new Os(this)), pe(this._values_kxdlqh$_0); + } }), oa.prototype.remove_11rb$ = function(z) { + this.checkIsMutable(); + for (var Q = this.entries.iterator(); Q.hasNext(); ) { + var Se = Q.next(), Ze = Se.key; + if (O(z, Ze)) { + var bt = Se.value; + return Q.remove(), bt; + } + } + return null; + }, oa.prototype.checkIsMutable = function() { + }, oa.$metadata$ = { kind: b, simpleName: "AbstractMutableMap", interfaces: [wn, Xo] }, sa.prototype.equals = function(z) { + return z === this || !!u.isType(z, Jt) && $f().setEquals_y8f7en$(this, z); + }, sa.prototype.hashCode = function() { + return $f().unorderedHashCode_nykoif$(this); + }, sa.$metadata$ = { kind: b, simpleName: "AbstractMutableSet", interfaces: [jt, Ia] }, pi.prototype.build = function() { + return this.checkIsMutable(), this.isReadOnly_dbt2oh$_0 = !0, this; + }, pi.prototype.trimToSize = function() { + }, pi.prototype.ensureCapacity_za3lpa$ = function(z) { + }, Object.defineProperty(pi.prototype, "size", { configurable: !0, get: function() { + return this.array_hd7ov6$_0.length; + } }), pi.prototype.get_za3lpa$ = function(z) { + var Q; + return (Q = this.array_hd7ov6$_0[this.rangeCheck_xcmk5o$_0(z)]) == null || u.isType(Q, Be) ? Q : Go(); + }, pi.prototype.set_wxm5ur$ = function(z, Q) { + var Se; + this.checkIsMutable(), this.rangeCheck_xcmk5o$_0(z); + var Ze = this.array_hd7ov6$_0[z]; + return this.array_hd7ov6$_0[z] = Q, (Se = Ze) == null || u.isType(Se, Be) ? Se : Go(); + }, pi.prototype.add_11rb$ = function(z) { + return this.checkIsMutable(), this.array_hd7ov6$_0.push(z), this.modCount = this.modCount + 1 | 0, !0; + }, pi.prototype.add_wxm5ur$ = function(z, Q) { + this.checkIsMutable(), this.array_hd7ov6$_0.splice(this.insertionRangeCheck_xwivfl$_0(z), 0, Q), this.modCount = this.modCount + 1 | 0; + }, pi.prototype.addAll_brywnq$ = function(z) { + return this.checkIsMutable(), !z.isEmpty() && (this.array_hd7ov6$_0 = this.array_hd7ov6$_0.concat(Ua(z)), this.modCount = this.modCount + 1 | 0, !0); + }, pi.prototype.addAll_u57x28$ = function(z, Q) { + return this.checkIsMutable(), this.insertionRangeCheck_xwivfl$_0(z), z === this.size ? this.addAll_brywnq$(Q) : !Q.isEmpty() && (z === this.size ? this.addAll_brywnq$(Q) : (this.array_hd7ov6$_0 = z === 0 ? Ua(Q).concat(this.array_hd7ov6$_0) : Fi(this.array_hd7ov6$_0, 0, z).concat(Ua(Q), Fi(this.array_hd7ov6$_0, z, this.size)), this.modCount = this.modCount + 1 | 0, !0)); + }, pi.prototype.removeAt_za3lpa$ = function(z) { + return this.checkIsMutable(), this.rangeCheck_xcmk5o$_0(z), this.modCount = this.modCount + 1 | 0, z === Vf(this) ? this.array_hd7ov6$_0.pop() : this.array_hd7ov6$_0.splice(z, 1)[0]; + }, pi.prototype.remove_11rb$ = function(z) { + var Q; + this.checkIsMutable(), Q = this.array_hd7ov6$_0; + for (var Se = 0; Se !== Q.length; ++Se) + if (O(this.array_hd7ov6$_0[Se], z)) + return this.array_hd7ov6$_0.splice(Se, 1), this.modCount = this.modCount + 1 | 0, !0; + return !1; + }, pi.prototype.removeRange_vux9f0$ = function(z, Q) { + this.checkIsMutable(), this.modCount = this.modCount + 1 | 0, this.array_hd7ov6$_0.splice(z, Q - z | 0); + }, pi.prototype.clear = function() { + this.checkIsMutable(), this.array_hd7ov6$_0 = [], this.modCount = this.modCount + 1 | 0; + }, pi.prototype.indexOf_11rb$ = function(z) { + return Ae(this.array_hd7ov6$_0, z); + }, pi.prototype.lastIndexOf_11rb$ = function(z) { + return $e(this.array_hd7ov6$_0, z); + }, pi.prototype.toString = function() { + return Qe(this.array_hd7ov6$_0); + }, pi.prototype.toArray_ro6dgy$ = function(z) { + var Q, Se; + if (z.length < this.size) + return u.isArray(Q = this.toArray()) ? Q : Go(); + var Ze = u.isArray(Se = this.array_hd7ov6$_0) ? Se : Go(); + return Vu(Ze, z, 0, 0, Ze.length), z.length > this.size && (z[this.size] = null), z; + }, pi.prototype.toArray = function() { + return [].slice.call(this.array_hd7ov6$_0); + }, pi.prototype.checkIsMutable = function() { + if (this.isReadOnly_dbt2oh$_0) + throw ur(); + }, pi.prototype.rangeCheck_xcmk5o$_0 = function(z) { + return Pi().checkElementIndex_6xvm5r$(z, this.size), z; + }, pi.prototype.insertionRangeCheck_xwivfl$_0 = function(z) { + return Pi().checkPositionIndex_6xvm5r$(z, this.size), z; + }, pi.$metadata$ = { kind: b, simpleName: "ArrayList", interfaces: [mn, oi, Ot] }, pa.prototype.equals_oaftn8$ = function(z, Q) { + return O(z, Q); + }, pa.prototype.getHashCode_s8jyv4$ = function(z) { + var Q; + return (Q = z != null ? Ne(z) : null) != null ? Q : 0; + }, pa.$metadata$ = { kind: Te, simpleName: "HashCode", interfaces: [Mn] }; + var Qa = null; + function ya() { + return Qa === null && new pa(), Qa; + } + function Ki() { + this.internalMap_uxhen5$_0 = null, this.equality_vgh6cm$_0 = null, this._entries_7ih87x$_0 = null; + } + function Hn(z) { + this.$outer = z, fa.call(this); + } + function ka(z, Q) { + return Q = Q || Object.create(Ki.prototype), oa.call(Q), Ki.call(Q), Q.internalMap_uxhen5$_0 = z, Q.equality_vgh6cm$_0 = z.equality, Q; + } + function gi(z) { + return z = z || Object.create(Ki.prototype), ka(new Ui(ya()), z), z; + } + function Lf(z, Q, Se) { + if (gi(Se = Se || Object.create(Ki.prototype)), !(z >= 0)) + throw vn(("Negative initial capacity: " + z).toString()); + if (!(Q >= 0)) + throw vn(("Non-positive load factor: " + Q).toString()); + return Se; + } + function la() { + this.map_8be2vx$ = null; + } + function tu(z, Q, Se) { + return Se = Se || Object.create(la.prototype), sa.call(Se), la.call(Se), Se.map_8be2vx$ = Lf(z, Q), Se; + } + function jp(z, Q) { + return tu(z, 0, Q = Q || Object.create(la.prototype)), Q; + } + function bl(z, Q) { + return Q = Q || Object.create(la.prototype), sa.call(Q), la.call(Q), Q.map_8be2vx$ = z, Q; + } + function Ui(z) { + this.equality_mamlu8$_0 = z, this.backingMap_0 = this.createJsMap(), this.size_x3bm7r$_0 = 0; + } + function rl(z) { + this.this$InternalHashCodeMap = z, this.state = -1, this.keys = Object.keys(z.backingMap_0), this.keyIndex = -1, this.chainOrEntry = null, this.isChain = !1, this.itemIndex = -1, this.lastEntry = null; + } + function El() { + } + function yv(z) { + this.equality_qma612$_0 = z, this.backingMap_0 = this.createJsMap(), this.size_6u3ykz$_0 = 0; + } + function $a() { + this.head_1lr44l$_0 = null, this.map_97q5dv$_0 = null, this.isReadOnly_uhyvn5$_0 = !1; + } + function go(z, Q, Se) { + this.$outer = z, ma.call(this, Q, Se), this.next_8be2vx$ = null, this.prev_8be2vx$ = null; + } + function Ms(z) { + this.$outer = z, fa.call(this); + } + function Zt(z) { + this.$outer = z, this.last_0 = null, this.next_0 = null, this.next_0 = this.$outer.$outer.head_1lr44l$_0; + } + function Rh(z) { + return gi(z = z || Object.create($a.prototype)), $a.call(z), z.map_97q5dv$_0 = gi(), z; + } + function ac(z, Q, Se) { + return Lf(z, Q, Se = Se || Object.create($a.prototype)), $a.call(Se), Se.map_97q5dv$_0 = gi(), Se; + } + function Wo() { + } + function ji(z) { + return z = z || Object.create(Wo.prototype), bl(Rh(), z), Wo.call(z), z; + } + function ru(z, Q, Se) { + return Se = Se || Object.create(Wo.prototype), bl(ac(z, Q), Se), Wo.call(Se), Se; + } + function oc(z, Q) { + return ru(z, 0, Q = Q || Object.create(Wo.prototype)), Q; + } + function mn() { + } + function An() { + } + function jl(z) { + An.call(this), this.outputStream = z; + } + function kr() { + An.call(this), this.buffer = ""; + } + function sc() { + kr.call(this); + } + function ro(z, Q) { + this.delegate_0 = z, this.result_0 = Q; + } + function lc(z, Q) { + this.closure$context = z, this.closure$resumeWith = Q; + } + function Go() { + throw new en("Illegal cast"); + } + function ly(z) { + throw Tt(z); + } + function Cl() { + } + function nl() { + } + function Pa() { + } + function no(z) { + this.jClass_1ppatx$_0 = z; + } + function Yo(z) { + var Q; + no.call(this, z), this.simpleName_m7mxi0$_0 = (Q = z.$metadata$) != null ? Q.simpleName : null; + } + function Zi(z, Q, Se) { + no.call(this, z), this.givenSimpleName_0 = Q, this.isInstanceFunction_0 = Se; + } + function vo() { + Ff = this, no.call(this, Object), this.simpleName_lnzy73$_0 = "Nothing"; + } + Mn.$metadata$ = { kind: de, simpleName: "EqualityComparator", interfaces: [] }, Hn.prototype.add_11rb$ = function(z) { + throw Ur("Add is not supported on entries"); + }, Hn.prototype.clear = function() { + this.$outer.clear(); + }, Hn.prototype.containsEntry_kw6fkd$ = function(z) { + return this.$outer.containsEntry_8hxqw4$(z); + }, Hn.prototype.iterator = function() { + return this.$outer.internalMap_uxhen5$_0.iterator(); + }, Hn.prototype.removeEntry_kw6fkd$ = function(z) { + return !!ze(this, z) && (this.$outer.remove_11rb$(z.key), !0); + }, Object.defineProperty(Hn.prototype, "size", { configurable: !0, get: function() { + return this.$outer.size; + } }), Hn.$metadata$ = { kind: b, simpleName: "EntrySet", interfaces: [fa] }, Ki.prototype.clear = function() { + this.internalMap_uxhen5$_0.clear(); + }, Ki.prototype.containsKey_11rb$ = function(z) { + return this.internalMap_uxhen5$_0.contains_11rb$(z); + }, Ki.prototype.containsValue_11rc$ = function(z) { + var Q, Se = this.internalMap_uxhen5$_0; + e: + do { + var Ze; + if (u.isType(Se, an) && Se.isEmpty()) { + Q = !1; + break e; + } + for (Ze = Se.iterator(); Ze.hasNext(); ) { + var bt = Ze.next(); + if (this.equality_vgh6cm$_0.equals_oaftn8$(bt.value, z)) { + Q = !0; + break e; + } + } + Q = !1; + } while (0); + return Q; + }, Object.defineProperty(Ki.prototype, "entries", { configurable: !0, get: function() { + return this._entries_7ih87x$_0 == null && (this._entries_7ih87x$_0 = this.createEntrySet()), pe(this._entries_7ih87x$_0); + } }), Ki.prototype.createEntrySet = function() { + return new Hn(this); + }, Ki.prototype.get_11rb$ = function(z) { + return this.internalMap_uxhen5$_0.get_11rb$(z); + }, Ki.prototype.put_xwzc9p$ = function(z, Q) { + return this.internalMap_uxhen5$_0.put_xwzc9p$(z, Q); + }, Ki.prototype.remove_11rb$ = function(z) { + return this.internalMap_uxhen5$_0.remove_11rb$(z); + }, Object.defineProperty(Ki.prototype, "size", { configurable: !0, get: function() { + return this.internalMap_uxhen5$_0.size; + } }), Ki.$metadata$ = { kind: b, simpleName: "HashMap", interfaces: [oa, wn] }, la.prototype.add_11rb$ = function(z) { + return this.map_8be2vx$.put_xwzc9p$(z, this) == null; + }, la.prototype.clear = function() { + this.map_8be2vx$.clear(); + }, la.prototype.contains_11rb$ = function(z) { + return this.map_8be2vx$.containsKey_11rb$(z); + }, la.prototype.isEmpty = function() { + return this.map_8be2vx$.isEmpty(); + }, la.prototype.iterator = function() { + return this.map_8be2vx$.keys.iterator(); + }, la.prototype.remove_11rb$ = function(z) { + return this.map_8be2vx$.remove_11rb$(z) != null; + }, Object.defineProperty(la.prototype, "size", { configurable: !0, get: function() { + return this.map_8be2vx$.size; + } }), la.$metadata$ = { kind: b, simpleName: "HashSet", interfaces: [sa, jt] }, Object.defineProperty(Ui.prototype, "equality", { get: function() { + return this.equality_mamlu8$_0; + } }), Object.defineProperty(Ui.prototype, "size", { configurable: !0, get: function() { + return this.size_x3bm7r$_0; + }, set: function(z) { + this.size_x3bm7r$_0 = z; + } }), Ui.prototype.put_xwzc9p$ = function(z, Q) { + var Se = this.equality.getHashCode_s8jyv4$(z), Ze = this.getChainOrEntryOrNull_0(Se); + if (Ze == null) + this.backingMap_0[Se] = new ma(z, Q); + else { + if (!u.isArray(Ze)) { + var bt = Ze; + return this.equality.equals_oaftn8$(bt.key, z) ? bt.setValue_11rc$(Q) : (this.backingMap_0[Se] = [bt, new ma(z, Q)], this.size = this.size + 1 | 0, null); + } + var ar = Ze, Vr = this.findEntryInChain_0(ar, z); + if (Vr != null) + return Vr.setValue_11rc$(Q); + ar.push(new ma(z, Q)); + } + return this.size = this.size + 1 | 0, null; + }, Ui.prototype.remove_11rb$ = function(z) { + var Q, Se = this.equality.getHashCode_s8jyv4$(z); + if ((Q = this.getChainOrEntryOrNull_0(Se)) == null) + return null; + var Ze = Q; + if (!u.isArray(Ze)) { + var bt = Ze; + return this.equality.equals_oaftn8$(bt.key, z) ? (delete this.backingMap_0[Se], this.size = this.size - 1 | 0, bt.value) : null; + } + for (var ar = Ze, Vr = 0; Vr !== ar.length; ++Vr) { + var Wn = ar[Vr]; + if (this.equality.equals_oaftn8$(z, Wn.key)) + return ar.length === 1 ? (ar.length = 0, delete this.backingMap_0[Se]) : ar.splice(Vr, 1), this.size = this.size - 1 | 0, Wn.value; + } + return null; + }, Ui.prototype.clear = function() { + this.backingMap_0 = this.createJsMap(), this.size = 0; + }, Ui.prototype.contains_11rb$ = function(z) { + return this.getEntry_0(z) != null; + }, Ui.prototype.get_11rb$ = function(z) { + var Q; + return (Q = this.getEntry_0(z)) != null ? Q.value : null; + }, Ui.prototype.getEntry_0 = function(z) { + var Q; + if ((Q = this.getChainOrEntryOrNull_0(this.equality.getHashCode_s8jyv4$(z))) == null) + return null; + var Se = Q; + if (u.isArray(Se)) { + var Ze = Se; + return this.findEntryInChain_0(Ze, z); + } + var bt = Se; + return this.equality.equals_oaftn8$(bt.key, z) ? bt : null; + }, Ui.prototype.findEntryInChain_0 = function(z, Q) { + var Se; + e: + do { + var Ze; + for (Ze = 0; Ze !== z.length; ++Ze) { + var bt = z[Ze]; + if (this.equality.equals_oaftn8$(bt.key, Q)) { + Se = bt; + break e; + } + } + Se = null; + } while (0); + return Se; + }, rl.prototype.computeNext_0 = function() { + if (this.chainOrEntry != null && this.isChain) { + var z = this.chainOrEntry.length; + if (this.itemIndex = this.itemIndex + 1 | 0, this.itemIndex < z) + return 0; + } + return this.keyIndex = this.keyIndex + 1 | 0, this.keyIndex < this.keys.length ? (this.chainOrEntry = this.this$InternalHashCodeMap.backingMap_0[this.keys[this.keyIndex]], this.isChain = u.isArray(this.chainOrEntry), this.itemIndex = 0, 0) : (this.chainOrEntry = null, 1); + }, rl.prototype.hasNext = function() { + return this.state === -1 && (this.state = this.computeNext_0()), this.state === 0; + }, rl.prototype.next = function() { + if (!this.hasNext()) + throw Xn(); + var z = this.isChain ? this.chainOrEntry[this.itemIndex] : this.chainOrEntry; + return this.lastEntry = z, this.state = -1, z; + }, rl.prototype.remove = function() { + if (this.lastEntry == null) + throw Tt("Required value was null.".toString()); + this.this$InternalHashCodeMap.remove_11rb$(pe(this.lastEntry).key), this.lastEntry = null, this.itemIndex = this.itemIndex - 1 | 0; + }, rl.$metadata$ = { kind: b, interfaces: [Pt] }, Ui.prototype.iterator = function() { + return new rl(this); + }, Ui.prototype.getChainOrEntryOrNull_0 = function(z) { + var Q = this.backingMap_0[z]; + return Q === void 0 ? null : Q; + }, Ui.$metadata$ = { kind: b, simpleName: "InternalHashCodeMap", interfaces: [El] }, El.prototype.createJsMap = function() { + var z = /* @__PURE__ */ Object.create(null); + return z.foo = 1, delete z.foo, z; + }, El.$metadata$ = { kind: de, simpleName: "InternalMap", interfaces: [dn] }, go.prototype.setValue_11rc$ = function(z) { + return this.$outer.checkIsMutable(), ma.prototype.setValue_11rc$.call(this, z); + }, go.$metadata$ = { kind: b, simpleName: "ChainEntry", interfaces: [ma] }, Zt.prototype.hasNext = function() { + return this.next_0 !== null; + }, Zt.prototype.next = function() { + if (!this.hasNext()) + throw Xn(); + var z = pe(this.next_0); + this.last_0 = z; + var Q = z.next_8be2vx$; + return this.$outer.$outer, this.next_0 = Q !== this.$outer.$outer.head_1lr44l$_0 ? Q : null, z; + }, Zt.prototype.remove = function() { + if (this.last_0 == null) + throw Tt("Check failed.".toString()); + this.$outer.checkIsMutable(), this.$outer.$outer.remove_njjxy0$_0(pe(this.last_0)), this.$outer.$outer.map_97q5dv$_0.remove_11rb$(pe(this.last_0).key), this.last_0 = null; + }, Zt.$metadata$ = { kind: b, simpleName: "EntryIterator", interfaces: [Pt] }, Ms.prototype.add_11rb$ = function(z) { + throw Ur("Add is not supported on entries"); + }, Ms.prototype.clear = function() { + this.$outer.clear(); + }, Ms.prototype.containsEntry_kw6fkd$ = function(z) { + return this.$outer.containsEntry_8hxqw4$(z); + }, Ms.prototype.iterator = function() { + return new Zt(this); + }, Ms.prototype.removeEntry_kw6fkd$ = function(z) { + return this.checkIsMutable(), !!ze(this, z) && (this.$outer.remove_11rb$(z.key), !0); + }, Object.defineProperty(Ms.prototype, "size", { configurable: !0, get: function() { + return this.$outer.size; + } }), Ms.prototype.checkIsMutable = function() { + this.$outer.checkIsMutable(); + }, Ms.$metadata$ = { kind: b, simpleName: "EntrySet", interfaces: [fa] }, $a.prototype.addToEnd_lfi3hf$_0 = function(z) { + if (z.next_8be2vx$ != null || z.prev_8be2vx$ != null) + throw Tt("Check failed.".toString()); + var Q = this.head_1lr44l$_0; + if (Q == null) + this.head_1lr44l$_0 = z, z.next_8be2vx$ = z, z.prev_8be2vx$ = z; + else { + var Se = Q.prev_8be2vx$; + if (Se == null) + throw Tt("Required value was null.".toString()); + var Ze = Se; + z.prev_8be2vx$ = Ze, z.next_8be2vx$ = Q, Q.prev_8be2vx$ = z, Ze.next_8be2vx$ = z; + } + }, $a.prototype.remove_njjxy0$_0 = function(z) { + z.next_8be2vx$ === z ? this.head_1lr44l$_0 = null : (this.head_1lr44l$_0 === z && (this.head_1lr44l$_0 = z.next_8be2vx$), pe(z.next_8be2vx$).prev_8be2vx$ = z.prev_8be2vx$, pe(z.prev_8be2vx$).next_8be2vx$ = z.next_8be2vx$), z.next_8be2vx$ = null, z.prev_8be2vx$ = null; + }, $a.prototype.build = function() { + return this.checkIsMutable(), this.isReadOnly_uhyvn5$_0 = !0, this; + }, $a.prototype.clear = function() { + this.checkIsMutable(), this.map_97q5dv$_0.clear(), this.head_1lr44l$_0 = null; + }, $a.prototype.containsKey_11rb$ = function(z) { + return this.map_97q5dv$_0.containsKey_11rb$(z); + }, $a.prototype.containsValue_11rc$ = function(z) { + var Q; + if ((Q = this.head_1lr44l$_0) == null) + return !1; + var Se = Q; + do { + if (O(Se.value, z)) + return !0; + Se = pe(Se.next_8be2vx$); + } while (Se !== this.head_1lr44l$_0); + return !1; + }, $a.prototype.createEntrySet = function() { + return new Ms(this); + }, $a.prototype.get_11rb$ = function(z) { + var Q; + return (Q = this.map_97q5dv$_0.get_11rb$(z)) != null ? Q.value : null; + }, $a.prototype.put_xwzc9p$ = function(z, Q) { + this.checkIsMutable(); + var Se = this.map_97q5dv$_0.get_11rb$(z); + if (Se == null) { + var Ze = new go(this, z, Q); + return this.map_97q5dv$_0.put_xwzc9p$(z, Ze), this.addToEnd_lfi3hf$_0(Ze), null; + } + return Se.setValue_11rc$(Q); + }, $a.prototype.remove_11rb$ = function(z) { + this.checkIsMutable(); + var Q = this.map_97q5dv$_0.remove_11rb$(z); + return Q != null ? (this.remove_njjxy0$_0(Q), Q.value) : null; + }, Object.defineProperty($a.prototype, "size", { configurable: !0, get: function() { + return this.map_97q5dv$_0.size; + } }), $a.prototype.checkIsMutable = function() { + if (this.isReadOnly_uhyvn5$_0) + throw ur(); + }, $a.$metadata$ = { kind: b, simpleName: "LinkedHashMap", interfaces: [Ki, wn] }, Wo.prototype.build = function() { + var z; + return (u.isType(z = this.map_8be2vx$, $a) ? z : Go()).build(), this; + }, Wo.prototype.checkIsMutable = function() { + this.map_8be2vx$.checkIsMutable(); + }, Wo.$metadata$ = { kind: b, simpleName: "LinkedHashSet", interfaces: [la, jt] }, mn.$metadata$ = { kind: de, simpleName: "RandomAccess", interfaces: [] }, An.prototype.println = function() { + this.print_s8jyv4$(` +`); + }, An.prototype.println_s8jyv4$ = function(z) { + this.print_s8jyv4$(z), this.println(); + }, An.prototype.flush = function() { + }, An.$metadata$ = { kind: b, simpleName: "BaseOutput", interfaces: [] }, jl.prototype.print_s8jyv4$ = function(z) { + var Q = String(z); + this.outputStream.write(Q); + }, jl.$metadata$ = { kind: b, simpleName: "NodeJsOutput", interfaces: [An] }, kr.prototype.print_s8jyv4$ = function(z) { + this.buffer += String(z); + }, kr.prototype.flush = function() { + this.buffer = ""; + }, kr.$metadata$ = { kind: b, simpleName: "BufferedOutput", interfaces: [An] }, sc.prototype.print_s8jyv4$ = function(z) { + var Q = String(z), Se = Q.lastIndexOf(` +`, 0); + Se >= 0 && (this.buffer = this.buffer + Q.substring(0, Se), this.flush(), Q = Q.substring(Se + 1 | 0)), this.buffer = this.buffer + Q; + }, sc.prototype.flush = function() { + console.log(this.buffer), this.buffer = ""; + }, sc.$metadata$ = { kind: b, simpleName: "BufferedOutputToConsoleLog", interfaces: [kr] }, Object.defineProperty(ro.prototype, "context", { configurable: !0, get: function() { + return this.delegate_0.context; + } }), ro.prototype.resumeWith_tl1gpc$ = function(z) { + var Q = this.result_0; + if (Q === Kf()) + this.result_0 = z.value; + else { + if (Q !== al()) + throw Tt("Already resumed"); + this.result_0 = Bv(), this.delegate_0.resumeWith_tl1gpc$(z); + } + }, ro.prototype.getOrThrow = function() { + var z; + if (this.result_0 === Kf()) + return this.result_0 = al(), al(); + var Q = this.result_0; + if (Q === Bv()) + z = al(); + else { + if (u.isType(Q, Hl)) + throw Q.exception; + z = Q; + } + return z; + }, ro.$metadata$ = { kind: b, simpleName: "SafeContinuation", interfaces: [Zu] }, Object.defineProperty(lc.prototype, "context", { configurable: !0, get: function() { + return this.closure$context; + } }), lc.prototype.resumeWith_tl1gpc$ = function(z) { + this.closure$resumeWith(z); + }, lc.$metadata$ = { kind: b, interfaces: [Zu] }, Cl.$metadata$ = { kind: de, simpleName: "Serializable", interfaces: [] }, nl.$metadata$ = { kind: de, simpleName: "KCallable", interfaces: [] }, Pa.$metadata$ = { kind: de, simpleName: "KClass", interfaces: [$v] }, Object.defineProperty(no.prototype, "jClass", { get: function() { + return this.jClass_1ppatx$_0; + } }), Object.defineProperty(no.prototype, "qualifiedName", { configurable: !0, get: function() { + throw new Wl(); + } }), no.prototype.equals = function(z) { + return u.isType(z, no) && O(this.jClass, z.jClass); + }, no.prototype.hashCode = function() { + var z, Q; + return (Q = (z = this.simpleName) != null ? Ne(z) : null) != null ? Q : 0; + }, no.prototype.toString = function() { + return "class " + ne(this.simpleName); + }, no.$metadata$ = { kind: b, simpleName: "KClassImpl", interfaces: [Pa] }, Object.defineProperty(Yo.prototype, "simpleName", { configurable: !0, get: function() { + return this.simpleName_m7mxi0$_0; + } }), Yo.prototype.isInstance_s8jyv4$ = function(z) { + var Q = this.jClass; + return u.isType(z, Q); + }, Yo.$metadata$ = { kind: b, simpleName: "SimpleKClassImpl", interfaces: [no] }, Zi.prototype.equals = function(z) { + return !!u.isType(z, Zi) && no.prototype.equals.call(this, z) && O(this.givenSimpleName_0, z.givenSimpleName_0); + }, Object.defineProperty(Zi.prototype, "simpleName", { configurable: !0, get: function() { + return this.givenSimpleName_0; + } }), Zi.prototype.isInstance_s8jyv4$ = function(z) { + return this.isInstanceFunction_0(z); + }, Zi.$metadata$ = { kind: b, simpleName: "PrimitiveKClassImpl", interfaces: [no] }, Object.defineProperty(vo.prototype, "simpleName", { configurable: !0, get: function() { + return this.simpleName_lnzy73$_0; + } }), vo.prototype.isInstance_s8jyv4$ = function(z) { + return !1; + }, Object.defineProperty(vo.prototype, "jClass", { configurable: !0, get: function() { + throw Ur("There's no native JS class for Nothing type"); + } }), vo.prototype.equals = function(z) { + return z === this; + }, vo.prototype.hashCode = function() { + return 0; + }, vo.$metadata$ = { kind: Te, simpleName: "NothingKClassImpl", interfaces: [no] }; + var Ff = null; + function ki() { + return Ff === null && new vo(), Ff; + } + function nu() { + } + function Dh() { + } + function on() { + } + function iu() { + } + function _v() { + } + function Bf() { + } + function $p() { + } + function Uf() { + at = this, this.anyClass = new Zi(Object, "Any", Sv), this.numberClass = new Zi(Number, "Number", bv), this.nothingClass = ki(), this.booleanClass = new Zi(Boolean, "Boolean", Ev), this.byteClass = new Zi(Number, "Byte", au), this.shortClass = new Zi(Number, "Short", Cv), this.intClass = new Zi(Number, "Int", cy), this.floatClass = new Zi(Number, "Float", uy), this.doubleClass = new Zi(Number, "Double", Va), this.arrayClass = new Zi(Array, "Array", Oh), this.stringClass = new Zi(String, "String", Vp), this.throwableClass = new Zi(Error, "Throwable", Tv), this.booleanArrayClass = new Zi(Array, "BooleanArray", wc), this.charArrayClass = new Zi(Uint16Array, "CharArray", zp), this.byteArrayClass = new Zi(Int8Array, "ByteArray", hy), this.shortArrayClass = new Zi(Int16Array, "ShortArray", Id), this.intArrayClass = new Zi(Int32Array, "IntArray", ti), this.longArrayClass = new Zi(Array, "LongArray", ss), this.floatArrayClass = new Zi(Float32Array, "FloatArray", ta), this.doubleArrayClass = new Zi(Float64Array, "DoubleArray", te); + } + function Sv(z) { + return u.isType(z, Be); + } + function bv(z) { + return u.isNumber(z); + } + function Ev(z) { + return typeof z == "boolean"; + } + function au(z) { + return typeof z == "number"; + } + function Cv(z) { + return typeof z == "number"; + } + function cy(z) { + return typeof z == "number"; + } + function uy(z) { + return typeof z == "number"; + } + function Va(z) { + return typeof z == "number"; + } + function Oh(z) { + return u.isArray(z); + } + function Vp(z) { + return typeof z == "string"; + } + function Tv(z) { + return u.isType(z, Ue); + } + function wc(z) { + return u.isBooleanArray(z); + } + function zp(z) { + return u.isCharArray(z); + } + function hy(z) { + return u.isByteArray(z); + } + function Id(z) { + return u.isShortArray(z); + } + function ti(z) { + return u.isIntArray(z); + } + function ss(z) { + return u.isLongArray(z); + } + function ta(z) { + return u.isFloatArray(z); + } + function te(z) { + return u.isDoubleArray(z); + } + Object.defineProperty(nu.prototype, "simpleName", { configurable: !0, get: function() { + throw Tt("Unknown simpleName for ErrorKClass".toString()); + } }), Object.defineProperty(nu.prototype, "qualifiedName", { configurable: !0, get: function() { + throw Tt("Unknown qualifiedName for ErrorKClass".toString()); + } }), nu.prototype.isInstance_s8jyv4$ = function(z) { + throw Tt("Can's check isInstance on ErrorKClass".toString()); + }, nu.prototype.equals = function(z) { + return z === this; + }, nu.prototype.hashCode = function() { + return 0; + }, nu.$metadata$ = { kind: b, simpleName: "ErrorKClass", interfaces: [Pa] }, Dh.$metadata$ = { kind: de, simpleName: "KProperty", interfaces: [nl] }, on.$metadata$ = { kind: de, simpleName: "KMutableProperty", interfaces: [Dh] }, iu.$metadata$ = { kind: de, simpleName: "KProperty0", interfaces: [Dh] }, _v.$metadata$ = { kind: de, simpleName: "KMutableProperty0", interfaces: [on, iu] }, Bf.$metadata$ = { kind: de, simpleName: "KProperty1", interfaces: [Dh] }, $p.$metadata$ = { kind: de, simpleName: "KMutableProperty1", interfaces: [on, Bf] }, Uf.prototype.functionClass = function(z) { + var Q, Se, Ze; + if ((Q = xe[z]) != null) + Se = Q; + else { + var bt = new Zi(Function, "Function" + z, (Ze = z, function(ar) { + return typeof ar == "function" && ar.length === Ze; + })); + xe[z] = bt, Se = bt; + } + return Se; + }, Uf.$metadata$ = { kind: Te, simpleName: "PrimitiveClasses", interfaces: [] }; + var xe, at = null; + function wt() { + return at === null && new Uf(), at; + } + function Tr(z) { + return Array.isArray(z) ? jr(z) : Sn(z); + } + function jr(z) { + switch (z.length) { + case 1: + return Sn(z[0]); + case 0: + return ki(); + default: + return new nu(); + } + } + function Sn(z) { + var Q; + if (z === String) + return wt().stringClass; + var Se = z.$metadata$; + if (Se != null) + if (Se.$kClass$ == null) { + var Ze = new Yo(z); + Se.$kClass$ = Ze, Q = Ze; + } else + Q = Se.$kClass$; + else + Q = new Yo(z); + return Q; + } + function Oi(z) { + z.lastIndex = 0; + } + function Ii() { + } + function ln(z) { + this.string_0 = z !== void 0 ? z : ""; + } + function Vs(z, Q) { + return mo(Q = Q || Object.create(ln.prototype)), Q; + } + function mo(z) { + return z = z || Object.create(ln.prototype), ln.call(z, ""), z; + } + function zu(z) { + var Q = String.fromCharCode(z).toUpperCase(); + return Q.length > 1 ? z : Q.charCodeAt(0); + } + function dy(z) { + return new ms(Me.MIN_HIGH_SURROGATE, Me.MAX_HIGH_SURROGATE).contains_mef7kx$(z); + } + function jf(z) { + return new ms(Me.MIN_LOW_SURROGATE, Me.MAX_LOW_SURROGATE).contains_mef7kx$(z); + } + function fy(z) { + var Q; + return (Q = Vv(z)) != null ? Q : nS(z); + } + function Hp(z) { + if (!(2 <= z && z <= 36)) + throw vn("radix " + z + " was not in valid range 2..36"); + return z; + } + function WE(z, Q) { + var Se; + return (Se = z >= 48 && z <= 57 ? z - 48 : z >= 65 && z <= 90 ? z - 65 + 10 | 0 : z >= 97 && z <= 122 ? z - 97 + 10 | 0 : z < 128 ? -1 : z >= 65313 && z <= 65338 ? z - 65313 + 10 | 0 : z >= 65345 && z <= 65370 ? z - 65345 + 10 | 0 : aa(z)) >= Q ? -1 : Se; + } + function VI(z) { + return z.value; + } + function py(z, Q) { + return Nt(z, "", Q, void 0, void 0, void 0, VI); + } + function ou(z) { + this.value = z; + } + function GE(z, Q) { + var Se, Ze; + if ((Ze = u.isType(Se = z, Fy) ? Se : null) == null) + throw Ur("Retrieving groups by name is not supported on this platform."); + return Ze.get_61zpoe$(Q); + } + function ls(z, Q) { + Iv(), this.pattern = z, this.options = ft(Q), this.nativePattern_0 = new RegExp(z, py(Q, "gu")), this.nativeStickyPattern_0 = null, this.nativeMatchesEntirePattern_0 = null; + } + function B0(z) { + return z.next(); + } + function xd(z, Q, Se, Ze, bt, ar) { + Or.call(this, ar), this.$controller = bt, this.exceptionState_0 = 1, this.local$closure$input = z, this.local$this$Regex = Q, this.local$closure$limit = Se, this.local$match = void 0, this.local$nextStart = void 0, this.local$splitCount = void 0, this.local$foundMatch = void 0, this.local$$receiver = Ze; + } + function rr() { + wv = this, this.patternEscape_0 = new RegExp("[\\\\^$*+?.()|[\\]{}]", "g"), this.replacementEscape_0 = new RegExp("[\\\\$]", "g"), this.nativeReplacementEscape_0 = new RegExp("\\$", "g"); + } + Ii.$metadata$ = { kind: de, simpleName: "Appendable", interfaces: [] }, Object.defineProperty(ln.prototype, "length", { configurable: !0, get: function() { + return this.string_0.length; + } }), ln.prototype.charCodeAt = function(z) { + var Q = this.string_0; + if (!(z >= 0 && z <= Od(Q))) + throw new Bt("index: " + z + ", length: " + this.length + "}"); + return Q.charCodeAt(z); + }, ln.prototype.subSequence_vux9f0$ = function(z, Q) { + return this.string_0.substring(z, Q); + }, ln.prototype.append_s8itvh$ = function(z) { + return this.string_0 += String.fromCharCode(z), this; + }, ln.prototype.append_gw00v9$ = function(z) { + return this.string_0 += ne(z), this; + }, ln.prototype.append_ezbsdh$ = function(z, Q, Se) { + return this.appendRange_3peag4$(z != null ? z : "null", Q, Se); + }, ln.prototype.reverse = function() { + for (var z, Q, Se = "", Ze = this.string_0.length - 1 | 0; Ze >= 0; ) { + var bt = this.string_0.charCodeAt((Ze = (z = Ze) - 1 | 0, z)); + if (jf(bt) && Ze >= 0) { + var ar = this.string_0.charCodeAt((Ze = (Q = Ze) - 1 | 0, Q)); + Se = dy(ar) ? Se + String.fromCharCode(P(ar)) + String.fromCharCode(P(bt)) : Se + String.fromCharCode(P(bt)) + String.fromCharCode(P(ar)); + } else + Se += String.fromCharCode(bt); + } + return this.string_0 = Se, this; + }, ln.prototype.append_s8jyv4$ = function(z) { + return this.string_0 += ne(z), this; + }, ln.prototype.append_6taknv$ = function(z) { + return this.string_0 += z, this; + }, ln.prototype.append_4hbowm$ = function(z) { + return this.string_0 += Av(z), this; + }, ln.prototype.append_61zpoe$ = function(z) { + return this.append_pdl1vj$(z); + }, ln.prototype.append_pdl1vj$ = function(z) { + return this.string_0 = this.string_0 + (z != null ? z : "null"), this; + }, ln.prototype.capacity = function() { + return this.length; + }, ln.prototype.ensureCapacity_za3lpa$ = function(z) { + }, ln.prototype.indexOf_61zpoe$ = function(z) { + return this.string_0.indexOf(z); + }, ln.prototype.indexOf_bm4lxs$ = function(z, Q) { + return this.string_0.indexOf(z, Q); + }, ln.prototype.lastIndexOf_61zpoe$ = function(z) { + return this.string_0.lastIndexOf(z); + }, ln.prototype.lastIndexOf_bm4lxs$ = function(z, Q) { + return z.length === 0 && Q < 0 ? -1 : this.string_0.lastIndexOf(z, Q); + }, ln.prototype.insert_fzusl$ = function(z, Q) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + ne(Q) + this.string_0.substring(z), this; + }, ln.prototype.insert_6t1mh3$ = function(z, Q) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + String.fromCharCode(P(Q)) + this.string_0.substring(z), this; + }, ln.prototype.insert_7u455s$ = function(z, Q) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + Av(Q) + this.string_0.substring(z), this; + }, ln.prototype.insert_1u9bqd$ = function(z, Q) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + ne(Q) + this.string_0.substring(z), this; + }, ln.prototype.insert_6t2rgq$ = function(z, Q) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + ne(Q) + this.string_0.substring(z), this; + }, ln.prototype.insert_19mbxw$ = function(z, Q) { + return this.insert_vqvrqt$(z, Q); + }, ln.prototype.insert_vqvrqt$ = function(z, Q) { + Pi().checkPositionIndex_6xvm5r$(z, this.length); + var Se = Q != null ? Q : "null"; + return this.string_0 = this.string_0.substring(0, z) + Se + this.string_0.substring(z), this; + }, ln.prototype.setLength_za3lpa$ = function(z) { + if (z < 0) + throw vn("Negative new length: " + z + "."); + if (z <= this.length) + this.string_0 = this.string_0.substring(0, z); + else + for (var Q = this.length; Q < z; Q++) + this.string_0 += String.fromCharCode(0); + }, ln.prototype.substring_za3lpa$ = function(z) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0.substring(z); + }, ln.prototype.substring_vux9f0$ = function(z, Q) { + return Pi().checkBoundsIndexes_cub51b$(z, Q, this.length), this.string_0.substring(z, Q); + }, ln.prototype.trimToSize = function() { + }, ln.prototype.toString = function() { + return this.string_0; + }, ln.prototype.clear = function() { + return this.string_0 = "", this; + }, ln.prototype.set_6t1mh3$ = function(z, Q) { + Pi().checkElementIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + String.fromCharCode(P(Q)) + this.string_0.substring(z + 1 | 0); + }, ln.prototype.setRange_98i29q$ = function(z, Q, Se) { + return this.checkReplaceRange_0(z, Q, this.length), this.string_0 = this.string_0.substring(0, z) + Se + this.string_0.substring(Q), this; + }, ln.prototype.checkReplaceRange_0 = function(z, Q, Se) { + if (z < 0 || z > Se) + throw new Bt("startIndex: " + z + ", length: " + Se); + if (z > Q) + throw vn("startIndex(" + z + ") > endIndex(" + Q + ")"); + }, ln.prototype.deleteAt_za3lpa$ = function(z) { + return Pi().checkElementIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + this.string_0.substring(z + 1 | 0), this; + }, ln.prototype.deleteRange_vux9f0$ = function(z, Q) { + return this.checkReplaceRange_0(z, Q, this.length), this.string_0 = this.string_0.substring(0, z) + this.string_0.substring(Q), this; + }, ln.prototype.toCharArray_pqkatk$ = function(z, Q, Se, Ze) { + var bt; + Q === void 0 && (Q = 0), Se === void 0 && (Se = 0), Ze === void 0 && (Ze = this.length), Pi().checkBoundsIndexes_cub51b$(Se, Ze, this.length), Pi().checkBoundsIndexes_cub51b$(Q, Q + Ze - Se | 0, z.length); + for (var ar = Q, Vr = Se; Vr < Ze; Vr++) + z[bt = ar, ar = bt + 1 | 0, bt] = this.string_0.charCodeAt(Vr); + }, ln.prototype.appendRange_8chfmy$ = function(z, Q, Se) { + return this.string_0 += vy(z, Q, Se), this; + }, ln.prototype.appendRange_3peag4$ = function(z, Q, Se) { + var Ze = z.toString(); + return Pi().checkBoundsIndexes_cub51b$(Q, Se, Ze.length), this.string_0 += Ze.substring(Q, Se), this; + }, ln.prototype.insertRange_ar8yzk$ = function(z, Q, Se, Ze) { + return Pi().checkPositionIndex_6xvm5r$(z, this.length), this.string_0 = this.string_0.substring(0, z) + vy(Q, Se, Ze) + this.string_0.substring(z), this; + }, ln.prototype.insertRange_mnv9ne$ = function(z, Q, Se, Ze) { + Pi().checkPositionIndex_6xvm5r$(z, this.length); + var bt = Q.toString(); + return Pi().checkBoundsIndexes_cub51b$(Se, Ze, bt.length), this.string_0 = this.string_0.substring(0, z) + bt.substring(Se, Ze) + this.string_0.substring(z), this; + }, ln.$metadata$ = { kind: b, simpleName: "StringBuilder", interfaces: [Jn, Ii] }, ou.$metadata$ = { kind: b, simpleName: "MatchGroup", interfaces: [] }, ou.prototype.component1 = function() { + return this.value; + }, ou.prototype.copy_61zpoe$ = function(z) { + return new ou(z === void 0 ? this.value : z); + }, ou.prototype.toString = function() { + return "MatchGroup(value=" + u.toString(this.value) + ")"; + }, ou.prototype.hashCode = function() { + var z = 0; + return 31 * z + u.hashCode(this.value) | 0; + }, ou.prototype.equals = function(z) { + return this === z || z !== null && typeof z == "object" && Object.getPrototypeOf(this) === Object.getPrototypeOf(z) && u.equals(this.value, z.value); + }, ls.prototype.initStickyPattern_0 = function() { + var z, Q; + if ((z = this.nativeStickyPattern_0) != null) + Q = z; + else { + var Se = new RegExp(this.pattern, py(this.options, "yu")); + this.nativeStickyPattern_0 = Se, Q = Se; + } + return Q; + }, ls.prototype.initMatchesEntirePattern_0 = function() { + var z, Q; + if ((z = this.nativeMatchesEntirePattern_0) != null) + Q = z; + else { + if (!aS(this.pattern, 94) || !tg(this.pattern, 36)) + return new RegExp("^" + lC(iS(this.pattern, u.charArrayOf(94)), u.charArrayOf(36)) + "$", py(this.options, "gu")); + var Se = this.nativePattern_0; + this.nativeMatchesEntirePattern_0 = Se, Q = Se; + } + return Q; + }, ls.prototype.matches_6bul2c$ = function(z) { + Oi(this.nativePattern_0); + var Q = this.nativePattern_0.exec(z.toString()); + return Q != null && Q.index === 0 && this.nativePattern_0.lastIndex === z.length; + }, ls.prototype.containsMatchIn_6bul2c$ = function(z) { + return Oi(this.nativePattern_0), this.nativePattern_0.test(z.toString()); + }, ls.prototype.matchesAt_905azu$ = function(z, Q) { + if (Q < 0 || Q > z.length) + throw new Bt("index out of bounds: " + Q + ", input length: " + z.length); + var Se = this.initStickyPattern_0(); + return Se.lastIndex = Q, Se.test(z.toString()); + }, ls.prototype.find_905azu$ = function(z, Q) { + if (Q === void 0 && (Q = 0), Q < 0 || Q > z.length) + throw new Bt("Start index out of bounds: " + Q + ", input length: " + z.length); + return xv(this.nativePattern_0, z.toString(), Q, this.nativePattern_0); + }, ls.prototype.findAll_905azu$ = function(z, Q) { + if (Q === void 0 && (Q = 0), Q < 0 || Q > z.length) + throw new Bt("Start index out of bounds: " + Q + ", input length: " + z.length); + return Ty((Se = z, Ze = Q, bt = this, function() { + return bt.find_905azu$(Se, Ze); + }), B0); + var Se, Ze, bt; + }, ls.prototype.matchEntire_6bul2c$ = function(z) { + return xv(this.initMatchesEntirePattern_0(), z.toString(), 0, this.nativePattern_0); + }, ls.prototype.matchAt_905azu$ = function(z, Q) { + if (Q < 0 || Q > z.length) + throw new Bt("index out of bounds: " + Q + ", input length: " + z.length); + return xv(this.initStickyPattern_0(), z.toString(), Q, this.nativePattern_0); + }, ls.prototype.replace_x2uqeu$ = function(z, Q) { + return Qu(Q, 92) || Qu(Q, 36) ? this.replace_20wsma$(z, (Se = Q, function(Ze) { + return gy(Ze, Se); + })) : z.toString().replace(this.nativePattern_0, Q); + var Se; + }, ls.prototype.replace_20wsma$ = function(z, Q) { + var Se = this.find_905azu$(z); + if (Se == null) + return z.toString(); + var Ze = 0, bt = z.length, ar = Vs(); + do { + var Vr = pe(Se); + ar.append_ezbsdh$(z, Ze, Vr.range.start), ar.append_gw00v9$(Q(Vr)), Ze = Vr.range.endInclusive + 1 | 0, Se = Vr.next(); + } while (Ze < bt && Se != null); + return Ze < bt && ar.append_ezbsdh$(z, Ze, bt), ar.toString(); + }, ls.prototype.replaceFirst_x2uqeu$ = function(z, Q) { + var Se; + if (!Qu(Q, 92) && !Qu(Q, 36)) { + var Ze = py(this.options, "u"); + return z.toString().replace(new RegExp(this.pattern, Ze), Q); + } + if ((Se = this.find_905azu$(z)) == null) + return z.toString(); + var bt = Se, ar = mo(); + return ar.append_pdl1vj$(u.subSequence(z, 0, bt.range.first).toString()), ar.append_pdl1vj$(gy(bt, Q)), ar.append_pdl1vj$(u.subSequence(z, bt.range.last + 1 | 0, z.length).toString()), ar.toString(); + }, ls.prototype.split_905azu$ = function(z, Q) { + var Se; + Q === void 0 && (Q = 0), eh(Q); + var Ze = this.findAll_905azu$(z), bt = Q === 0 ? Ze : Fr(Ze, Q - 1 | 0), ar = Xr(), Vr = 0; + for (Se = bt.iterator(); Se.hasNext(); ) { + var Wn = Se.next(); + ar.add_11rb$(u.subSequence(z, Vr, Wn.range.start).toString()), Vr = Wn.range.endInclusive + 1 | 0; + } + return ar.add_11rb$(u.subSequence(z, Vr, z.length).toString()), ar; + }, xd.$metadata$ = { kind: u.Kind.CLASS, simpleName: null, interfaces: [Or] }, xd.prototype = Object.create(Or.prototype), xd.prototype.constructor = xd, xd.prototype.doResume = function() { + for (; ; ) + try { + switch (this.state_0) { + case 0: + if (this.local$match = this.local$this$Regex.find_905azu$(this.local$closure$input), this.local$match == null || this.local$closure$limit === 1) { + if (this.state_0 = 2, this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$input.toString(), this), this.result_0 === al()) + return al(); + continue; + } + this.state_0 = 3; + continue; + case 1: + throw this.exception_0; + case 2: + return; + case 3: + this.local$nextStart = 0, this.local$splitCount = 0, this.state_0 = 4; + continue; + case 4: + if (this.local$foundMatch = pe(this.local$match), this.state_0 = 5, this.result_0 = this.local$$receiver.yield_11rb$(u.subSequence(this.local$closure$input, this.local$nextStart, this.local$foundMatch.range.first).toString(), this), this.result_0 === al()) + return al(); + continue; + case 5: + if (this.local$nextStart = this.local$foundMatch.range.endInclusive + 1 | 0, this.local$match = this.local$foundMatch.next(), this.local$splitCount = this.local$splitCount + 1 | 0, this.local$splitCount === (this.local$closure$limit - 1 | 0) || this.local$match == null) { + this.state_0 = 6; + continue; + } + this.state_0 = 4; + continue; + case 6: + if (this.state_0 = 7, this.result_0 = this.local$$receiver.yield_11rb$(u.subSequence(this.local$closure$input, this.local$nextStart, this.local$closure$input.length).toString(), this), this.result_0 === al()) + return al(); + continue; + case 7: + return this.result_0; + default: + throw this.state_0 = 1, new Error("State Machine Unreachable execution"); + } + } catch (z) { + if (this.state_0 === 1) + throw this.exceptionState_0 = this.state_0, z; + this.state_0 = this.exceptionState_0, this.exception_0 = z; + } + }, ls.prototype.splitToSequence_905azu$ = function(z, Q) { + return Q === void 0 && (Q = 0), eh(Q), Wf((Se = z, Ze = this, bt = Q, function(ar, Vr, Wn) { + var tn = new xd(Se, Ze, bt, ar, this, Vr); + return Wn ? tn : tn.doResume(null); + })); + var Se, Ze, bt; + }, ls.prototype.toString = function() { + return this.nativePattern_0.toString(); + }, rr.prototype.fromLiteral_61zpoe$ = function(z) { + return Wp(this.escape_61zpoe$(z)); + }, rr.prototype.escape_61zpoe$ = function(z) { + return z.replace(this.patternEscape_0, "\\$&"); + }, rr.prototype.escapeReplacement_61zpoe$ = function(z) { + return z.replace(this.replacementEscape_0, "\\$&"); + }, rr.prototype.nativeEscapeReplacement_y4putb$ = function(z) { + return z.replace(this.nativeReplacementEscape_0, "$$$$"); + }, rr.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var wv = null; + function Iv() { + return wv === null && new rr(), wv; + } + function Wp(z, Q) { + return Q = Q || Object.create(ls.prototype), ls.call(Q, z, Jp()), Q; + } + function il(z, Q, Se, Ze) { + this.closure$match = z, this.closure$nextPattern = Q, this.closure$input = Se, this.closure$range = Ze, this.range_co6b9w$_0 = Ze, this.groups_qcaztb$_0 = new Hu(z, this), this.groupValues__0 = null; + } + function Ad(z) { + this.closure$match = z, cs.call(this); + } + function Hu(z, Q) { + this.closure$match = z, this.this$ = Q, wo.call(this); + } + function xv(z, Q, Se, Ze) { + z.lastIndex = Se; + var bt = z.exec(Q); + return bt == null ? null : new il(bt, Ze, Q, new Io(bt.index, z.lastIndex - 1 | 0)); + } + function gy(z, Q) { + for (var Se, Ze, bt, ar, Vr, Wn, tn = 0, Ni = mo(); tn < Q.length; ) { + var yo = Q.charCodeAt((tn = (Se = tn) + 1 | 0, Se)); + if (yo === 92) { + if (tn === Q.length) + throw vn("The Char to be escaped is missing"); + Ni.append_s8itvh$(Q.charCodeAt((tn = (Ze = tn) + 1 | 0, Ze))); + } else if (yo === 36) { + if (tn === Q.length) + throw vn("Capturing group index is missing"); + if (Q.charCodeAt(tn) === 123) { + var us = YE(Q, tn = tn + 1 | 0); + if (tn === us) + throw vn("Named capturing group reference should have a non-empty name"); + if (us === Q.length || Q.charCodeAt(us) !== 125) + throw vn("Named capturing group reference is missing trailing '}'"); + var Dc = Q.substring(tn, us); + Ni.append_pdl1vj$((ar = (bt = GE(z.groups, Dc)) != null ? bt.value : null) != null ? ar : ""), tn = us + 1 | 0; + } else { + if (!new ms(48, 57).contains_mef7kx$(Q.charCodeAt(tn))) + throw vn("Invalid capturing group reference"); + var sg = z.groups, kd = XE(Q, tn, sg.size), Xv = fy(Q.substring(tn, kd)); + if (Xv >= sg.size) + throw new Bt("Group with index " + Xv + " does not exist"); + Ni.append_pdl1vj$((Wn = (Vr = sg.get_za3lpa$(Xv)) != null ? Vr.value : null) != null ? Wn : ""), tn = kd; + } + } else + Ni.append_s8itvh$(yo); + } + return Ni.toString(); + } + function YE(z, Q) { + for (var Se = Q; Se < z.length && z.charCodeAt(Se) !== 125; ) + Se = Se + 1 | 0; + return Se; + } + function XE(z, Q, Se) { + for (var Ze = Q + 1 | 0, bt = z.charCodeAt(Q) - 48; Ze < z.length && new ms(48, 57).contains_mef7kx$(z.charCodeAt(Ze)); ) { + var ar = (10 * bt | 0) + (z.charCodeAt(Ze) - 48) | 0; + if (!(0 <= ar && ar < Se)) + break; + bt = ar, Ze = Ze + 1 | 0; + } + return Ze; + } + function Av(z) { + var Q, Se = ""; + for (Q = 0; Q !== z.length; ++Q) { + var Ze = B(z[Q]); + Se += String.fromCharCode(Ze); + } + return Se; + } + function vy(z, Q, Se) { + Q === void 0 && (Q = 0), Se === void 0 && (Se = z.length), Pi().checkBoundsIndexes_cub51b$(Q, Se, z.length); + for (var Ze = "", bt = Q; bt < Se; bt++) + Ze += String.fromCharCode(z[bt]); + return Ze; + } + function KE(z, Q, Se) { + if (Se === void 0 && (Se = !1), Se) { + var Ze = z.length, bt = Q.length, ar = Y.min(Ze, bt); + if (ar === 0) + return Ze - bt | 0; + for (var Vr = 0; Vr < ar; Vr++) { + var Wn = z.charCodeAt(Vr), tn = Q.charCodeAt(Vr); + if (Wn !== tn && (Wn = zu(Wn)) !== (tn = zu(tn))) { + var Ni = Wn, yo = tn; + if ((Wn = String.fromCharCode(Ni).toLowerCase().charCodeAt(0)) !== (tn = String.fromCharCode(yo).toLowerCase().charCodeAt(0))) + return u.compareTo(Wn, tn); + } + } + return Ze - bt | 0; + } + return u.compareTo(z, Q); + } + function U0(z, Q, Se, Ze, bt, ar) { + return ar === void 0 && (ar = !1), zv(z, Q, Se, Ze, bt, ar); + } + function wo() { + } + function cs() { + Pi(), wo.call(this); + } + function Mh(z, Q, Se) { + cs.call(this), this.list_0 = z, this.fromIndex_0 = Q, this._size_0 = 0, Pi().checkRangeIndexes_cub51b$(this.fromIndex_0, Se, this.list_0.size), this._size_0 = Se - this.fromIndex_0 | 0; + } + function kh(z) { + this.$outer = z, this.index_0 = 0; + } + function su(z, Q) { + this.$outer = z, kh.call(this, this.$outer), Pi().checkPositionIndex_6xvm5r$(Q, this.$outer.size), this.index_0 = Q; + } + function Ph() { + my = this; + } + ls.$metadata$ = { kind: b, simpleName: "Regex", interfaces: [] }, Object.defineProperty(il.prototype, "range", { configurable: !0, get: function() { + return this.range_co6b9w$_0; + } }), Object.defineProperty(il.prototype, "value", { configurable: !0, get: function() { + return pe(this.closure$match[0]); + } }), Object.defineProperty(il.prototype, "groups", { configurable: !0, get: function() { + return this.groups_qcaztb$_0; + } }), il.prototype.hasOwnPrototypeProperty_0 = function(z, Q) { + return Object.prototype.hasOwnProperty.call(z, Q); + }, Object.defineProperty(Ad.prototype, "size", { configurable: !0, get: function() { + return this.closure$match.length; + } }), Ad.prototype.get_za3lpa$ = function(z) { + var Q; + return (Q = this.closure$match[z]) != null ? Q : ""; + }, Ad.$metadata$ = { kind: b, interfaces: [cs] }, Object.defineProperty(il.prototype, "groupValues", { configurable: !0, get: function() { + return this.groupValues__0 == null && (this.groupValues__0 = new Ad(this.closure$match)), pe(this.groupValues__0); + } }), il.prototype.next = function() { + return xv(this.closure$nextPattern, this.closure$input, this.closure$range.isEmpty() ? this.advanceToNextCharacter_0(this.closure$range.start) : this.closure$range.endInclusive + 1 | 0, this.closure$nextPattern); + }, il.prototype.advanceToNextCharacter_0 = function(z) { + if (z < Od(this.closure$input)) { + var Q = this.closure$input.charCodeAt(z); + if (55296 <= Q && Q <= 56319) { + var Se = this.closure$input.charCodeAt(z + 1 | 0); + if (56320 <= Se && Se <= 57343) + return z + 2 | 0; + } + } + return z + 1 | 0; + }, Object.defineProperty(Hu.prototype, "size", { configurable: !0, get: function() { + return this.closure$match.length; + } }), Hu.prototype.iterator = function() { + return Dn(Yt(Xp(this)), (z = this, function(Q) { + return z.get_za3lpa$(Q); + })).iterator(); + var z; + }, Hu.prototype.get_za3lpa$ = function(z) { + var Q; + return (Q = this.closure$match[z]) != null ? new ou(Q) : null; + }, Hu.prototype.get_61zpoe$ = function(z) { + var Q, Se; + if ((Q = this.closure$match.groups) == null) + throw vn("Capturing group with name {" + z + "} does not exist. No named capturing group was defined in Regex"); + var Ze = Q; + if (!this.this$.hasOwnPrototypeProperty_0(Ze, z)) + throw vn("Capturing group with name {" + z + "} does not exist"); + var bt = Ze[z]; + return bt == null ? null : new ou(typeof (Se = bt) == "string" ? Se : Go()); + }, Hu.$metadata$ = { kind: b, interfaces: [wo, Fy] }, il.$metadata$ = { kind: b, interfaces: [rg] }, wo.prototype.contains_11rb$ = function(z) { + var Q; + e: + do { + var Se; + if (u.isType(this, an) && this.isEmpty()) { + Q = !1; + break e; + } + for (Se = this.iterator(); Se.hasNext(); ) { + var Ze = Se.next(); + if (O(Ze, z)) { + Q = !0; + break e; + } + } + Q = !1; + } while (0); + return Q; + }, wo.prototype.containsAll_brywnq$ = function(z) { + var Q; + e: + do { + var Se; + if (u.isType(z, an) && z.isEmpty()) { + Q = !0; + break e; + } + for (Se = z.iterator(); Se.hasNext(); ) { + var Ze = Se.next(); + if (!this.contains_11rb$(Ze)) { + Q = !1; + break e; + } + } + Q = !0; + } while (0); + return Q; + }, wo.prototype.isEmpty = function() { + return this.size === 0; + }, wo.prototype.toString = function() { + return Nt(this, ", ", "[", "]", void 0, void 0, (z = this, function(Q) { + return Q === z ? "(this Collection)" : ne(Q); + })); + var z; + }, wo.prototype.toArray = function() { + return As(this); + }, wo.prototype.toArray_ro6dgy$ = function(z) { + return Ho(this, z); + }, wo.$metadata$ = { kind: b, simpleName: "AbstractCollection", interfaces: [an] }, cs.prototype.iterator = function() { + return new kh(this); + }, cs.prototype.indexOf_11rb$ = function(z) { + var Q; + e: + do { + var Se, Ze = 0; + for (Se = this.iterator(); Se.hasNext(); ) { + var bt = Se.next(); + if (O(bt, z)) { + Q = Ze; + break e; + } + Ze = Ze + 1 | 0; + } + Q = -1; + } while (0); + return Q; + }, cs.prototype.lastIndexOf_11rb$ = function(z) { + var Q; + e: + do { + for (var Se = this.listIterator_za3lpa$(this.size); Se.hasPrevious(); ) + if (O(Se.previous(), z)) { + Q = Se.nextIndex(); + break e; + } + Q = -1; + } while (0); + return Q; + }, cs.prototype.listIterator = function() { + return new su(this, 0); + }, cs.prototype.listIterator_za3lpa$ = function(z) { + return new su(this, z); + }, cs.prototype.subList_vux9f0$ = function(z, Q) { + return new Mh(this, z, Q); + }, Mh.prototype.get_za3lpa$ = function(z) { + return Pi().checkElementIndex_6xvm5r$(z, this._size_0), this.list_0.get_za3lpa$(this.fromIndex_0 + z | 0); + }, Object.defineProperty(Mh.prototype, "size", { configurable: !0, get: function() { + return this._size_0; + } }), Mh.$metadata$ = { kind: b, simpleName: "SubList", interfaces: [mn, cs] }, cs.prototype.equals = function(z) { + return z === this || !!u.isType(z, Lt) && Pi().orderedEquals_e92ka7$(this, z); + }, cs.prototype.hashCode = function() { + return Pi().orderedHashCode_nykoif$(this); + }, kh.prototype.hasNext = function() { + return this.index_0 < this.$outer.size; + }, kh.prototype.next = function() { + var z, Q; + if (!this.hasNext()) + throw Xn(); + return z = this.index_0, this.index_0 = z + 1 | 0, Q = z, this.$outer.get_za3lpa$(Q); + }, kh.$metadata$ = { kind: b, simpleName: "IteratorImpl", interfaces: [or] }, su.prototype.hasPrevious = function() { + return this.index_0 > 0; + }, su.prototype.nextIndex = function() { + return this.index_0; + }, su.prototype.previous = function() { + if (!this.hasPrevious()) + throw Xn(); + return this.$outer.get_za3lpa$((this.index_0 = this.index_0 - 1 | 0, this.index_0)); + }, su.prototype.previousIndex = function() { + return this.index_0 - 1 | 0; + }, su.$metadata$ = { kind: b, simpleName: "ListIteratorImpl", interfaces: [Qr, kh] }, Ph.prototype.checkElementIndex_6xvm5r$ = function(z, Q) { + if (z < 0 || z >= Q) + throw new Bt("index: " + z + ", size: " + Q); + }, Ph.prototype.checkPositionIndex_6xvm5r$ = function(z, Q) { + if (z < 0 || z > Q) + throw new Bt("index: " + z + ", size: " + Q); + }, Ph.prototype.checkRangeIndexes_cub51b$ = function(z, Q, Se) { + if (z < 0 || Q > Se) + throw new Bt("fromIndex: " + z + ", toIndex: " + Q + ", size: " + Se); + if (z > Q) + throw vn("fromIndex: " + z + " > toIndex: " + Q); + }, Ph.prototype.checkBoundsIndexes_cub51b$ = function(z, Q, Se) { + if (z < 0 || Q > Se) + throw new Bt("startIndex: " + z + ", endIndex: " + Q + ", size: " + Se); + if (z > Q) + throw vn("startIndex: " + z + " > endIndex: " + Q); + }, Ph.prototype.orderedHashCode_nykoif$ = function(z) { + var Q, Se, Ze = 1; + for (Q = z.iterator(); Q.hasNext(); ) { + var bt = Q.next(); + Ze = (31 * Ze | 0) + ((Se = bt != null ? Ne(bt) : null) != null ? Se : 0) | 0; + } + return Ze; + }, Ph.prototype.orderedEquals_e92ka7$ = function(z, Q) { + var Se; + if (z.size !== Q.size) + return !1; + var Ze = Q.iterator(); + for (Se = z.iterator(); Se.hasNext(); ) { + var bt = Se.next(), ar = Ze.next(); + if (!O(bt, ar)) + return !1; + } + return !0; + }, Ph.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var my = null; + function Pi() { + return my === null && new Ph(), my; + } + function Xo() { + Yp(), this._keys_up5z3z$_0 = null, this._values_6nw1f1$_0 = null; + } + function Nh(z) { + this.this$AbstractMap = z, Ic.call(this); + } + function Gp(z) { + this.closure$entryIterator = z; + } + function Lh(z) { + this.this$AbstractMap = z, wo.call(this); + } + function Wu(z) { + this.closure$entryIterator = z; + } + function Gu() { + Rv = this; + } + cs.$metadata$ = { kind: b, simpleName: "AbstractList", interfaces: [Lt, wo] }, Xo.prototype.containsKey_11rb$ = function(z) { + return this.implFindEntry_8k1i24$_0(z) != null; + }, Xo.prototype.containsValue_11rc$ = function(z) { + var Q, Se = this.entries; + e: + do { + var Ze; + if (u.isType(Se, an) && Se.isEmpty()) { + Q = !1; + break e; + } + for (Ze = Se.iterator(); Ze.hasNext(); ) { + var bt = Ze.next(); + if (O(bt.value, z)) { + Q = !0; + break e; + } + } + Q = !1; + } while (0); + return Q; + }, Xo.prototype.containsEntry_8hxqw4$ = function(z) { + if (!u.isType(z, Ht)) + return !1; + var Q = z.key, Se = z.value, Ze = (u.isType(this, nr) ? this : fe()).get_11rb$(Q); + if (!O(Se, Ze)) + return !1; + var bt = Ze == null; + return bt && (bt = !(u.isType(this, nr) ? this : fe()).containsKey_11rb$(Q)), !bt; + }, Xo.prototype.equals = function(z) { + if (z === this) + return !0; + if (!u.isType(z, nr) || this.size !== z.size) + return !1; + var Q, Se = z.entries; + e: + do { + var Ze; + if (u.isType(Se, an) && Se.isEmpty()) { + Q = !0; + break e; + } + for (Ze = Se.iterator(); Ze.hasNext(); ) { + var bt = Ze.next(); + if (!this.containsEntry_8hxqw4$(bt)) { + Q = !1; + break e; + } + } + Q = !0; + } while (0); + return Q; + }, Xo.prototype.get_11rb$ = function(z) { + var Q; + return (Q = this.implFindEntry_8k1i24$_0(z)) != null ? Q.value : null; + }, Xo.prototype.hashCode = function() { + return Ne(this.entries); + }, Xo.prototype.isEmpty = function() { + return this.size === 0; + }, Object.defineProperty(Xo.prototype, "size", { configurable: !0, get: function() { + return this.entries.size; + } }), Nh.prototype.contains_11rb$ = function(z) { + return this.this$AbstractMap.containsKey_11rb$(z); + }, Gp.prototype.hasNext = function() { + return this.closure$entryIterator.hasNext(); + }, Gp.prototype.next = function() { + return this.closure$entryIterator.next().key; + }, Gp.$metadata$ = { kind: b, interfaces: [or] }, Nh.prototype.iterator = function() { + return new Gp(this.this$AbstractMap.entries.iterator()); + }, Object.defineProperty(Nh.prototype, "size", { configurable: !0, get: function() { + return this.this$AbstractMap.size; + } }), Nh.$metadata$ = { kind: b, interfaces: [Ic] }, Object.defineProperty(Xo.prototype, "keys", { configurable: !0, get: function() { + return this._keys_up5z3z$_0 == null && (this._keys_up5z3z$_0 = new Nh(this)), pe(this._keys_up5z3z$_0); + } }), Xo.prototype.toString = function() { + return Nt(this.entries, ", ", "{", "}", void 0, void 0, (z = this, function(Q) { + return z.toString_55he67$_0(Q); + })); + var z; + }, Xo.prototype.toString_55he67$_0 = function(z) { + return this.toString_kthv8s$_0(z.key) + "=" + this.toString_kthv8s$_0(z.value); + }, Xo.prototype.toString_kthv8s$_0 = function(z) { + return z === this ? "(this Map)" : ne(z); + }, Lh.prototype.contains_11rb$ = function(z) { + return this.this$AbstractMap.containsValue_11rc$(z); + }, Wu.prototype.hasNext = function() { + return this.closure$entryIterator.hasNext(); + }, Wu.prototype.next = function() { + return this.closure$entryIterator.next().value; + }, Wu.$metadata$ = { kind: b, interfaces: [or] }, Lh.prototype.iterator = function() { + return new Wu(this.this$AbstractMap.entries.iterator()); + }, Object.defineProperty(Lh.prototype, "size", { configurable: !0, get: function() { + return this.this$AbstractMap.size; + } }), Lh.$metadata$ = { kind: b, interfaces: [wo] }, Object.defineProperty(Xo.prototype, "values", { configurable: !0, get: function() { + return this._values_6nw1f1$_0 == null && (this._values_6nw1f1$_0 = new Lh(this)), pe(this._values_6nw1f1$_0); + } }), Xo.prototype.implFindEntry_8k1i24$_0 = function(z) { + var Q, Se = this.entries; + e: + do { + var Ze; + for (Ze = Se.iterator(); Ze.hasNext(); ) { + var bt = Ze.next(); + if (O(bt.key, z)) { + Q = bt; + break e; + } + } + Q = null; + } while (0); + return Q; + }, Gu.prototype.entryHashCode_9fthdn$ = function(z) { + var Q, Se, Ze, bt; + return ((Se = (Q = z.key) != null ? Ne(Q) : null) != null ? Se : 0) ^ ((bt = (Ze = z.value) != null ? Ne(Ze) : null) != null ? bt : 0); + }, Gu.prototype.entryToString_9fthdn$ = function(z) { + return ne(z.key) + "=" + ne(z.value); + }, Gu.prototype.entryEquals_js7fox$ = function(z, Q) { + return !!u.isType(Q, Ht) && O(z.key, Q.key) && O(z.value, Q.value); + }, Gu.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var Rv = null; + function Yp() { + return Rv === null && new Gu(), Rv; + } + function Ic() { + $f(), wo.call(this); + } + function Yu() { + Dv = this; + } + Xo.$metadata$ = { kind: b, simpleName: "AbstractMap", interfaces: [nr] }, Ic.prototype.equals = function(z) { + return z === this || !!u.isType(z, Jt) && $f().setEquals_y8f7en$(this, z); + }, Ic.prototype.hashCode = function() { + return $f().unorderedHashCode_nykoif$(this); + }, Yu.prototype.unorderedHashCode_nykoif$ = function(z) { + var Q, Se = 0; + for (Q = z.iterator(); Q.hasNext(); ) { + var Ze, bt = Q.next(); + Se = Se + ((Ze = bt != null ? Ne(bt) : null) != null ? Ze : 0) | 0; + } + return Se; + }, Yu.prototype.setEquals_y8f7en$ = function(z, Q) { + return z.size === Q.size && z.containsAll_brywnq$(Q); + }, Yu.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var Dv = null; + function $f() { + return Dv === null && new Yu(), Dv; + } + function Fh() { + Ov = this; + } + Ic.$metadata$ = { kind: b, simpleName: "AbstractSet", interfaces: [Jt, wo] }, Fh.prototype.hasNext = function() { + return !1; + }, Fh.prototype.hasPrevious = function() { + return !1; + }, Fh.prototype.nextIndex = function() { + return 0; + }, Fh.prototype.previousIndex = function() { + return -1; + }, Fh.prototype.next = function() { + throw Xn(); + }, Fh.prototype.previous = function() { + throw Xn(); + }, Fh.$metadata$ = { kind: Te, simpleName: "EmptyIterator", interfaces: [Qr] }; + var Ov = null; + function yy() { + return Ov === null && new Fh(), Ov; + } + function Xp(z) { + return new Io(0, z.size - 1 | 0); + } + function Vf(z) { + return z.size - 1 | 0; + } + function $l() { + throw new ir("Index overflow has happened."); + } + function _y(z, Q) { + return j0(z, Q, !0); + } + function j0(z, Q, Se) { + for (var Ze = { v: !1 }, bt = z.iterator(); bt.hasNext(); ) + Q(bt.next()) === Se && (bt.remove(), Ze.v = !0); + return Ze.v; + } + function Sy(z, Q) { + return function(Se, Ze, bt) { + var ar, Vr, Wn; + if (!u.isType(Se, mn)) + return j0(u.isType(ar = Se, dn) ? ar : Go(), Ze, bt); + var tn = 0; + Vr = Vf(Se); + for (var Ni = 0; Ni <= Vr; Ni++) { + var yo = Se.get_za3lpa$(Ni); + Ze(yo) !== bt && (tn !== Ni && Se.set_wxm5ur$(tn, yo), tn = tn + 1 | 0); + } + if (tn < Se.size) { + Wn = tn; + for (var us = Vf(Se); us >= Wn; us--) + Se.removeAt_za3lpa$(us); + return !0; + } + return !1; + }(z, Q, !0); + } + function Xu() { + } + function zf() { + } + function Hf() { + } + function xc() { + } + function by(z) { + this.closure$iterator = z; + } + function Wf(z) { + return new by((Q = z, function() { + return ZE(Q); + })); + var Q; + } + function ZE(z) { + var Q = new Tl(); + return Q.nextStep = Bs(z, Q, Q), Q; + } + function Ku() { + } + function Tl() { + Ku.call(this), this.state_0 = 0, this.nextValue_0 = null, this.nextIterator_0 = null, this.nextStep = null; + } + function Gf() { + return Mv(); + } + function Bh() { + Yf = this; + } + Xu.prototype.next = function() { + return P(this.nextChar()); + }, Xu.$metadata$ = { kind: b, simpleName: "CharIterator", interfaces: [or] }, zf.prototype.next = function() { + return this.nextInt(); + }, zf.$metadata$ = { kind: b, simpleName: "IntIterator", interfaces: [or] }, Hf.prototype.next = function() { + return this.nextLong(); + }, Hf.$metadata$ = { kind: b, simpleName: "LongIterator", interfaces: [or] }, xc.$metadata$ = { kind: de, simpleName: "Sequence", interfaces: [] }, by.prototype.iterator = function() { + return this.closure$iterator(); + }, by.$metadata$ = { kind: b, interfaces: [xc] }, Ku.prototype.yieldAll_p1ys8y$ = function(z, Q) { + if (!u.isType(z, an) || !z.isEmpty()) + return this.yieldAll_1phuh2$(z.iterator(), Q); + }, Ku.prototype.yieldAll_swo9gw$ = function(z, Q) { + return this.yieldAll_1phuh2$(z.iterator(), Q); + }, Ku.$metadata$ = { kind: b, simpleName: "SequenceScope", interfaces: [] }, Tl.prototype.hasNext = function() { + for (; ; ) { + switch (this.state_0) { + case 0: + break; + case 1: + if (pe(this.nextIterator_0).hasNext()) + return this.state_0 = 2, !0; + this.nextIterator_0 = null; + break; + case 4: + return !1; + case 3: + case 2: + return !0; + default: + throw this.exceptionalState_0(); + } + this.state_0 = 5; + var z = pe(this.nextStep); + this.nextStep = null, z.resumeWith_tl1gpc$(new zs(fi())); + } + }, Tl.prototype.next = function() { + var z; + switch (this.state_0) { + case 0: + case 1: + return this.nextNotReady_0(); + case 2: + return this.state_0 = 1, pe(this.nextIterator_0).next(); + case 3: + this.state_0 = 0; + var Q = (z = this.nextValue_0) == null || u.isType(z, Be) ? z : Go(); + return this.nextValue_0 = null, Q; + default: + throw this.exceptionalState_0(); + } + }, Tl.prototype.nextNotReady_0 = function() { + if (this.hasNext()) + return this.next(); + throw Xn(); + }, Tl.prototype.exceptionalState_0 = function() { + switch (this.state_0) { + case 4: + return Xn(); + case 5: + return Tt("Iterator has failed."); + default: + return Tt("Unexpected state of the iterator: " + this.state_0); + } + }, Tl.prototype.yield_11rb$ = function(z, Q) { + return this.nextValue_0 = z, this.state_0 = 3, (Se = this, function(Ze) { + return Se.nextStep = Ze, al(); + })(Q); + var Se; + }, Tl.prototype.yieldAll_1phuh2$ = function(z, Q) { + if (z.hasNext()) + return this.nextIterator_0 = z, this.state_0 = 2, (Se = this, function(Ze) { + return Se.nextStep = Ze, al(); + })(Q); + var Se; + }, Tl.prototype.resumeWith_tl1gpc$ = function(z) { + var Q; + lS(z), (Q = z.value) == null || u.isType(Q, Be) || fe(), this.state_0 = 4; + }, Object.defineProperty(Tl.prototype, "context", { configurable: !0, get: function() { + return Ju(); + } }), Tl.$metadata$ = { kind: b, simpleName: "SequenceBuilderIterator", interfaces: [Zu, or, Ku] }, Bh.prototype.iterator = function() { + return yy(); + }, Bh.prototype.drop_za3lpa$ = function(z) { + return Mv(); + }, Bh.prototype.take_za3lpa$ = function(z) { + return Mv(); + }, Bh.$metadata$ = { kind: Te, simpleName: "EmptySequence", interfaces: [Zp, xc] }; + var Yf = null; + function Mv() { + return Yf === null && new Bh(), Yf; + } + function lu(z, Q) { + this.sequence_0 = z, this.transformer_0 = Q; + } + function Xf(z) { + this.this$TransformingSequence = z, this.iterator = z.sequence_0.iterator(); + } + function Ey(z, Q, Se) { + this.sequence_0 = z, this.transformer_0 = Q, this.iterator_0 = Se; + } + function Kp(z) { + this.this$FlatteningSequence = z, this.iterator = z.sequence_0.iterator(), this.itemIterator = null; + } + function Zp() { + } + function Uh(z, Q, Se) { + if (this.sequence_0 = z, this.startIndex_0 = Q, this.endIndex_0 = Se, !(this.startIndex_0 >= 0)) + throw vn(("startIndex should be non-negative, but is " + this.startIndex_0).toString()); + if (!(this.endIndex_0 >= 0)) + throw vn(("endIndex should be non-negative, but is " + this.endIndex_0).toString()); + if (!(this.endIndex_0 >= this.startIndex_0)) + throw vn(("endIndex should be not less than startIndex, but was " + this.endIndex_0 + " < " + this.startIndex_0).toString()); + } + function qp(z) { + this.this$SubSequence = z, this.iterator = z.sequence_0.iterator(), this.position = 0; + } + function Rd(z, Q) { + if (this.sequence_0 = z, this.count_0 = Q, !(this.count_0 >= 0)) + throw vn(("count must be non-negative, but was " + this.count_0 + ".").toString()); + } + function Cy(z) { + this.left = z.count_0, this.iterator = z.sequence_0.iterator(); + } + function $0(z, Q) { + this.getInitialValue_0 = z, this.getNextValue_0 = Q; + } + function kv(z) { + this.this$GeneratorSequence = z, this.nextItem = null, this.nextState = -2; + } + function Ty(z, Q) { + return new $0(z, Q); + } + function cu() { + V0 = this, this.serialVersionUID_0 = we; + } + Xf.prototype.next = function() { + return this.this$TransformingSequence.transformer_0(this.iterator.next()); + }, Xf.prototype.hasNext = function() { + return this.iterator.hasNext(); + }, Xf.$metadata$ = { kind: b, interfaces: [or] }, lu.prototype.iterator = function() { + return new Xf(this); + }, lu.prototype.flatten_1tglza$ = function(z) { + return new Ey(this.sequence_0, this.transformer_0, z); + }, lu.$metadata$ = { kind: b, simpleName: "TransformingSequence", interfaces: [xc] }, Kp.prototype.next = function() { + if (!this.ensureItemIterator_0()) + throw Xn(); + return pe(this.itemIterator).next(); + }, Kp.prototype.hasNext = function() { + return this.ensureItemIterator_0(); + }, Kp.prototype.ensureItemIterator_0 = function() { + var z; + for (((z = this.itemIterator) != null ? z.hasNext() : null) === !1 && (this.itemIterator = null); this.itemIterator == null; ) { + if (!this.iterator.hasNext()) + return !1; + var Q = this.iterator.next(), Se = this.this$FlatteningSequence.iterator_0(this.this$FlatteningSequence.transformer_0(Q)); + if (Se.hasNext()) + return this.itemIterator = Se, !0; + } + return !0; + }, Kp.$metadata$ = { kind: b, interfaces: [or] }, Ey.prototype.iterator = function() { + return new Kp(this); + }, Ey.$metadata$ = { kind: b, simpleName: "FlatteningSequence", interfaces: [xc] }, Zp.$metadata$ = { kind: de, simpleName: "DropTakeSequence", interfaces: [xc] }, Object.defineProperty(Uh.prototype, "count_0", { configurable: !0, get: function() { + return this.endIndex_0 - this.startIndex_0 | 0; + } }), Uh.prototype.drop_za3lpa$ = function(z) { + return z >= this.count_0 ? Gf() : new Uh(this.sequence_0, this.startIndex_0 + z | 0, this.endIndex_0); + }, Uh.prototype.take_za3lpa$ = function(z) { + return z >= this.count_0 ? this : new Uh(this.sequence_0, this.startIndex_0, this.startIndex_0 + z | 0); + }, qp.prototype.drop_0 = function() { + for (; this.position < this.this$SubSequence.startIndex_0 && this.iterator.hasNext(); ) + this.iterator.next(), this.position = this.position + 1 | 0; + }, qp.prototype.hasNext = function() { + return this.drop_0(), this.position < this.this$SubSequence.endIndex_0 && this.iterator.hasNext(); + }, qp.prototype.next = function() { + if (this.drop_0(), this.position >= this.this$SubSequence.endIndex_0) + throw Xn(); + return this.position = this.position + 1 | 0, this.iterator.next(); + }, qp.$metadata$ = { kind: b, interfaces: [or] }, Uh.prototype.iterator = function() { + return new qp(this); + }, Uh.$metadata$ = { kind: b, simpleName: "SubSequence", interfaces: [Zp, xc] }, Rd.prototype.drop_za3lpa$ = function(z) { + return z >= this.count_0 ? Gf() : new Uh(this.sequence_0, z, this.count_0); + }, Rd.prototype.take_za3lpa$ = function(z) { + return z >= this.count_0 ? this : new Rd(this.sequence_0, z); + }, Cy.prototype.next = function() { + if (this.left === 0) + throw Xn(); + return this.left = this.left - 1 | 0, this.iterator.next(); + }, Cy.prototype.hasNext = function() { + return this.left > 0 && this.iterator.hasNext(); + }, Cy.$metadata$ = { kind: b, interfaces: [or] }, Rd.prototype.iterator = function() { + return new Cy(this); + }, Rd.$metadata$ = { kind: b, simpleName: "TakeSequence", interfaces: [Zp, xc] }, kv.prototype.calcNext_0 = function() { + this.nextItem = this.nextState === -2 ? this.this$GeneratorSequence.getInitialValue_0() : this.this$GeneratorSequence.getNextValue_0(pe(this.nextItem)), this.nextState = this.nextItem == null ? 0 : 1; + }, kv.prototype.next = function() { + var z; + if (this.nextState < 0 && this.calcNext_0(), this.nextState === 0) + throw Xn(); + var Q = u.isType(z = this.nextItem, Be) ? z : Go(); + return this.nextState = -1, Q; + }, kv.prototype.hasNext = function() { + return this.nextState < 0 && this.calcNext_0(), this.nextState === 1; + }, kv.$metadata$ = { kind: b, interfaces: [or] }, $0.prototype.iterator = function() { + return new kv(this); + }, $0.$metadata$ = { kind: b, simpleName: "GeneratorSequence", interfaces: [xc] }, cu.prototype.equals = function(z) { + return u.isType(z, Jt) && z.isEmpty(); + }, cu.prototype.hashCode = function() { + return 0; + }, cu.prototype.toString = function() { + return "[]"; + }, Object.defineProperty(cu.prototype, "size", { configurable: !0, get: function() { + return 0; + } }), cu.prototype.isEmpty = function() { + return !0; + }, cu.prototype.contains_11rb$ = function(z) { + return !1; + }, cu.prototype.containsAll_brywnq$ = function(z) { + return z.isEmpty(); + }, cu.prototype.iterator = function() { + return yy(); + }, cu.prototype.readResolve_0 = function() { + return z0(); + }, cu.$metadata$ = { kind: Te, simpleName: "EmptySet", interfaces: [Cl, Jt] }; + var V0 = null; + function z0() { + return V0 === null && new cu(), V0; + } + function Jp() { + return z0(); + } + function wy(z) { + return ut(z, jp(z.length)); + } + function qE(z) { + switch (z.size) { + case 0: + return Jp(); + case 1: + return Rs(z.iterator().next()); + default: + return z; + } + } + function Zu() { + } + function Iy() { + Qp(); + } + function H0() { + xy = this; + } + Zu.$metadata$ = { kind: de, simpleName: "Continuation", interfaces: [] }, R("kotlin.kotlin.coroutines.suspendCoroutine_922awp$", M(function() { + var z = d.kotlin.coroutines.intrinsics.intercepted_f9mg25$, Q = d.kotlin.coroutines.SafeContinuation_init_wj8d80$; + return function(Se, Ze) { + return u.suspendCall((bt = Se, function(ar) { + var Vr = Q(z(ar)); + return bt(Vr), Vr.getOrThrow(); + })(u.coroutineReceiver())), u.coroutineResult(u.coroutineReceiver()); + var bt; + }; + })), H0.$metadata$ = { kind: Te, simpleName: "Key", interfaces: [W0] }; + var xy = null; + function Qp() { + return xy === null && new H0(), xy; + } + function uu() { + } + function JE(z, Q) { + var Se = z.minusKey_yeqjby$(Q.key); + if (Se === Ju()) + return Q; + var Ze = Se.get_j3r2sn$(Qp()); + if (Ze == null) + return new Ko(Se, Q); + var bt = Se.minusKey_yeqjby$(Qp()); + return bt === Ju() ? new Ko(Q, Ze) : new Ko(new Ko(bt, Q), Ze); + } + function W0() { + } + function wl() { + } + function Pv(z) { + this.key_no4tas$_0 = z; + } + function qu() { + Nv = this, this.serialVersionUID_0 = H; + } + uu.prototype.plus_1fupul$ = function(z) { + return z === Ju() ? this : z.fold_3cc69b$(this, JE); + }, W0.$metadata$ = { kind: de, simpleName: "Key", interfaces: [] }, wl.prototype.get_j3r2sn$ = function(z) { + return O(this.key, z) ? u.isType(this, wl) ? this : Go() : null; + }, wl.prototype.fold_3cc69b$ = function(z, Q) { + return Q(z, this); + }, wl.prototype.minusKey_yeqjby$ = function(z) { + return O(this.key, z) ? Ju() : this; + }, wl.$metadata$ = { kind: de, simpleName: "Element", interfaces: [uu] }, uu.$metadata$ = { kind: de, simpleName: "CoroutineContext", interfaces: [] }, qu.prototype.readResolve_0 = function() { + return Ju(); + }, qu.prototype.get_j3r2sn$ = function(z) { + return null; + }, qu.prototype.fold_3cc69b$ = function(z, Q) { + return z; + }, qu.prototype.plus_1fupul$ = function(z) { + return z; + }, qu.prototype.minusKey_yeqjby$ = function(z) { + return this; + }, qu.prototype.hashCode = function() { + return 0; + }, qu.prototype.toString = function() { + return "EmptyCoroutineContext"; + }, qu.$metadata$ = { kind: Te, simpleName: "EmptyCoroutineContext", interfaces: [Cl, uu] }; + var Nv = null; + function Ju() { + return Nv === null && new qu(), Nv; + } + function Ko(z, Q) { + this.left_0 = z, this.element_0 = Q; + } + function Lv(z, Q) { + return z.length === 0 ? Q.toString() : z + ", " + Q; + } + function Ay(z) { + this.elements = z; + } + Ko.prototype.get_j3r2sn$ = function(z) { + for (var Q, Se = this; ; ) { + if ((Q = Se.element_0.get_j3r2sn$(z)) != null) + return Q; + var Ze = Se.left_0; + if (!u.isType(Ze, Ko)) + return Ze.get_j3r2sn$(z); + Se = Ze; + } + }, Ko.prototype.fold_3cc69b$ = function(z, Q) { + return Q(this.left_0.fold_3cc69b$(z, Q), this.element_0); + }, Ko.prototype.minusKey_yeqjby$ = function(z) { + if (this.element_0.get_j3r2sn$(z) != null) + return this.left_0; + var Q = this.left_0.minusKey_yeqjby$(z); + return Q === this.left_0 ? this : Q === Ju() ? this.element_0 : new Ko(Q, this.element_0); + }, Ko.prototype.size_0 = function() { + for (var z, Q, Se = this, Ze = 2; ; ) { + if ((Q = u.isType(z = Se.left_0, Ko) ? z : null) == null) + return Ze; + Se = Q, Ze = Ze + 1 | 0; + } + }, Ko.prototype.contains_0 = function(z) { + return O(this.get_j3r2sn$(z.key), z); + }, Ko.prototype.containsAll_0 = function(z) { + for (var Q, Se = z; ; ) { + if (!this.contains_0(Se.element_0)) + return !1; + var Ze = Se.left_0; + if (!u.isType(Ze, Ko)) + return this.contains_0(u.isType(Q = Ze, wl) ? Q : Go()); + Se = Ze; + } + }, Ko.prototype.equals = function(z) { + return this === z || u.isType(z, Ko) && z.size_0() === this.size_0() && z.containsAll_0(this); + }, Ko.prototype.hashCode = function() { + return Ne(this.left_0) + Ne(this.element_0) | 0; + }, Ko.prototype.toString = function() { + return "[" + this.fold_3cc69b$("", Lv) + "]"; + }, Ko.prototype.writeReplace_0 = function() { + var z, Q, Se, Ze = this.size_0(), bt = u.newArray(Ze, null), ar = { v: 0 }; + if (this.fold_3cc69b$(fi(), (Q = bt, Se = ar, function(Vr, Wn) { + var tn; + return Q[tn = Se.v, Se.v = tn + 1 | 0, tn] = Wn, Un; + })), ar.v !== Ze) + throw Tt("Check failed.".toString()); + return new Ay(u.isArray(z = bt) ? z : Go()); + }; + var Ry, G0, QE; + function al() { + return Dy(); + } + function cc(z, Q) { + be.call(this), this.name$ = z, this.ordinal$ = Q; + } + function Fv() { + Fv = function() { + }, Ry = new cc("COROUTINE_SUSPENDED", 0), G0 = new cc("UNDECIDED", 1), QE = new cc("RESUMED", 2); + } + function Dy() { + return Fv(), Ry; + } + function Kf() { + return Fv(), G0; + } + function Bv() { + return Fv(), QE; + } + function Y0(z, Q) { + var Se = z % Q | 0; + return Se >= 0 ? Se : Se + Q | 0; + } + function X0(z, Q) { + var Se = z.modulo(Q); + return Se.toNumber() >= 0 ? Se : Se.add(Q); + } + function eC(z, Q, Se) { + return Y0(Y0(z, Se) - Y0(Q, Se) | 0, Se); + } + function tC(z, Q, Se) { + return X0(X0(z, Se).subtract(X0(Q, Se)), Se); + } + function K0(z, Q, Se) { + if (Se > 0) + return z >= Q ? Q : Q - eC(Q, z, Se) | 0; + if (Se < 0) + return z <= Q ? Q : Q + eC(z, Q, 0 | -Se) | 0; + throw vn("Step is zero."); + } + function rC(z, Q, Se) { + if (Se.toNumber() > 0) + return z.compareTo_11rb$(Q) >= 0 ? Q : Q.subtract(tC(Q, z, Se)); + if (Se.toNumber() < 0) + return z.compareTo_11rb$(Q) <= 0 ? Q : Q.add(tC(z, Q, Se.unaryMinus())); + throw vn("Step is zero."); + } + function ms(z, Q) { + Z0(), Il.call(this, z, Q, 1); + } + function nC() { + Oy = this, this.EMPTY = new ms(X(1), X(0)); + } + Ay.prototype.readResolve_0 = function() { + var z, Q = this.elements, Se = Ju(); + for (z = 0; z !== Q.length; ++z) { + var Ze = Q[z]; + Se = Se.plus_1fupul$(Ze); + } + return Se; + }, Ay.$metadata$ = { kind: b, simpleName: "Serialized", interfaces: [Cl] }, Ko.$metadata$ = { kind: b, simpleName: "CombinedContext", interfaces: [Cl, uu] }, R("kotlin.kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn_zb0pmy$", M(function() { + var z = d.kotlin.NotImplementedError; + return function(Q, Se) { + throw new z("Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic"); + }; + })), cc.$metadata$ = { kind: b, simpleName: "CoroutineSingletons", interfaces: [be] }, cc.values = function() { + return [Dy(), Kf(), Bv()]; + }, cc.valueOf_61zpoe$ = function(z) { + switch (z) { + case "COROUTINE_SUSPENDED": + return Dy(); + case "UNDECIDED": + return Kf(); + case "RESUMED": + return Bv(); + default: + ly("No enum constant kotlin.coroutines.intrinsics.CoroutineSingletons." + z); + } + }, Object.defineProperty(ms.prototype, "start", { configurable: !0, get: function() { + return P(this.first); + } }), Object.defineProperty(ms.prototype, "endInclusive", { configurable: !0, get: function() { + return P(this.last); + } }), Object.defineProperty(ms.prototype, "endExclusive", { configurable: !0, get: function() { + if (this.last === Me.MAX_VALUE) + throw Tt("Cannot return the exclusive upper bound of a range that includes MAX_VALUE.".toString()); + return P(X(this.last + 1)); + } }), ms.prototype.contains_mef7kx$ = function(z) { + return this.first <= z && z <= this.last; + }, ms.prototype.isEmpty = function() { + return this.first > this.last; + }, ms.prototype.equals = function(z) { + return u.isType(z, ms) && (this.isEmpty() && z.isEmpty() || this.first === z.first && this.last === z.last); + }, ms.prototype.hashCode = function() { + return this.isEmpty() ? -1 : (31 * (0 | this.first) | 0) + (0 | this.last) | 0; + }, ms.prototype.toString = function() { + return String.fromCharCode(this.first) + ".." + String.fromCharCode(this.last); + }, nC.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var Oy = null; + function Z0() { + return Oy === null && new nC(), Oy; + } + function Io(z, Q) { + J0(), zl.call(this, z, Q, 1); + } + function iC() { + q0 = this, this.EMPTY = new Io(1, 0); + } + ms.$metadata$ = { kind: b, simpleName: "CharRange", interfaces: [Ac, jh, Il] }, Object.defineProperty(Io.prototype, "start", { configurable: !0, get: function() { + return this.first; + } }), Object.defineProperty(Io.prototype, "endInclusive", { configurable: !0, get: function() { + return this.last; + } }), Object.defineProperty(Io.prototype, "endExclusive", { configurable: !0, get: function() { + if (this.last === 2147483647) + throw Tt("Cannot return the exclusive upper bound of a range that includes MAX_VALUE.".toString()); + return this.last + 1 | 0; + } }), Io.prototype.contains_mef7kx$ = function(z) { + return this.first <= z && z <= this.last; + }, Io.prototype.isEmpty = function() { + return this.first > this.last; + }, Io.prototype.equals = function(z) { + return u.isType(z, Io) && (this.isEmpty() && z.isEmpty() || this.first === z.first && this.last === z.last); + }, Io.prototype.hashCode = function() { + return this.isEmpty() ? -1 : (31 * this.first | 0) + this.last | 0; + }, Io.prototype.toString = function() { + return this.first.toString() + ".." + this.last; + }, iC.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var q0 = null; + function J0() { + return q0 === null && new iC(), q0; + } + function xo(z, Q) { + Uv(), uc.call(this, z, Q, He); + } + function Q0() { + Zf = this, this.EMPTY = new xo(He, H); + } + Io.$metadata$ = { kind: b, simpleName: "IntRange", interfaces: [Ac, jh, zl] }, Object.defineProperty(xo.prototype, "start", { configurable: !0, get: function() { + return this.first; + } }), Object.defineProperty(xo.prototype, "endInclusive", { configurable: !0, get: function() { + return this.last; + } }), Object.defineProperty(xo.prototype, "endExclusive", { configurable: !0, get: function() { + if (O(this.last, J)) + throw Tt("Cannot return the exclusive upper bound of a range that includes MAX_VALUE.".toString()); + return this.last.add(u.Long.fromInt(1)); + } }), xo.prototype.contains_mef7kx$ = function(z) { + return this.first.compareTo_11rb$(z) <= 0 && z.compareTo_11rb$(this.last) <= 0; + }, xo.prototype.isEmpty = function() { + return this.first.compareTo_11rb$(this.last) > 0; + }, xo.prototype.equals = function(z) { + return u.isType(z, xo) && (this.isEmpty() && z.isEmpty() || O(this.first, z.first) && O(this.last, z.last)); + }, xo.prototype.hashCode = function() { + return this.isEmpty() ? -1 : u.Long.fromInt(31).multiply(this.first.xor(this.first.shiftRightUnsigned(32))).add(this.last.xor(this.last.shiftRightUnsigned(32))).toInt(); + }, xo.prototype.toString = function() { + return this.first.toString() + ".." + this.last.toString(); + }, Q0.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var Zf = null; + function Uv() { + return Zf === null && new Q0(), Zf; + } + function Vl(z, Q, Se) { + Xu.call(this), this.step = Se, this.finalElement_0 = 0 | Q, this.hasNext_0 = this.step > 0 ? z <= Q : z >= Q, this.next_0 = this.hasNext_0 ? 0 | z : this.finalElement_0; + } + function hu(z, Q, Se) { + zf.call(this), this.step = Se, this.finalElement_0 = Q, this.hasNext_0 = this.step > 0 ? z <= Q : z >= Q, this.next_0 = this.hasNext_0 ? z : this.finalElement_0; + } + function Dd(z, Q, Se) { + Hf.call(this), this.step = Se, this.finalElement_0 = Q, this.hasNext_0 = this.step.toNumber() > 0 ? z.compareTo_11rb$(Q) <= 0 : z.compareTo_11rb$(Q) >= 0, this.next_0 = this.hasNext_0 ? z : this.finalElement_0; + } + function Il(z, Q, Se) { + if (Py(), Se === 0) + throw vn("Step must be non-zero."); + if (Se === -2147483648) + throw vn("Step must be greater than Int.MIN_VALUE to avoid overflow on negation."); + this.first = z, this.last = X(K0(0 | z, 0 | Q, Se)), this.step = Se; + } + function My() { + ky = this; + } + xo.$metadata$ = { kind: b, simpleName: "LongRange", interfaces: [Ac, jh, uc] }, Vl.prototype.hasNext = function() { + return this.hasNext_0; + }, Vl.prototype.nextChar = function() { + var z = this.next_0; + if (z === this.finalElement_0) { + if (!this.hasNext_0) + throw Xn(); + this.hasNext_0 = !1; + } else + this.next_0 = this.next_0 + this.step | 0; + return X(z); + }, Vl.$metadata$ = { kind: b, simpleName: "CharProgressionIterator", interfaces: [Xu] }, hu.prototype.hasNext = function() { + return this.hasNext_0; + }, hu.prototype.nextInt = function() { + var z = this.next_0; + if (z === this.finalElement_0) { + if (!this.hasNext_0) + throw Xn(); + this.hasNext_0 = !1; + } else + this.next_0 = this.next_0 + this.step | 0; + return z; + }, hu.$metadata$ = { kind: b, simpleName: "IntProgressionIterator", interfaces: [zf] }, Dd.prototype.hasNext = function() { + return this.hasNext_0; + }, Dd.prototype.nextLong = function() { + var z = this.next_0; + if (O(z, this.finalElement_0)) { + if (!this.hasNext_0) + throw Xn(); + this.hasNext_0 = !1; + } else + this.next_0 = this.next_0.add(this.step); + return z; + }, Dd.$metadata$ = { kind: b, simpleName: "LongProgressionIterator", interfaces: [Hf] }, Il.prototype.iterator = function() { + return new Vl(this.first, this.last, this.step); + }, Il.prototype.isEmpty = function() { + return this.step > 0 ? this.first > this.last : this.first < this.last; + }, Il.prototype.equals = function(z) { + return u.isType(z, Il) && (this.isEmpty() && z.isEmpty() || this.first === z.first && this.last === z.last && this.step === z.step); + }, Il.prototype.hashCode = function() { + return this.isEmpty() ? -1 : (31 * ((31 * (0 | this.first) | 0) + (0 | this.last) | 0) | 0) + this.step | 0; + }, Il.prototype.toString = function() { + return this.step > 0 ? String.fromCharCode(this.first) + ".." + String.fromCharCode(this.last) + " step " + this.step : String.fromCharCode(this.first) + " downTo " + String.fromCharCode(this.last) + " step " + (0 | -this.step); + }, My.prototype.fromClosedRange_ayra44$ = function(z, Q, Se) { + return new Il(z, Q, Se); + }, My.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var ky = null; + function Py() { + return ky === null && new My(), ky; + } + function zl(z, Q, Se) { + if (jv(), Se === 0) + throw vn("Step must be non-zero."); + if (Se === -2147483648) + throw vn("Step must be greater than Int.MIN_VALUE to avoid overflow on negation."); + this.first = z, this.last = K0(z, Q, Se), this.step = Se; + } + function eS() { + eg = this; + } + Il.$metadata$ = { kind: b, simpleName: "CharProgression", interfaces: [nn] }, zl.prototype.iterator = function() { + return new hu(this.first, this.last, this.step); + }, zl.prototype.isEmpty = function() { + return this.step > 0 ? this.first > this.last : this.first < this.last; + }, zl.prototype.equals = function(z) { + return u.isType(z, zl) && (this.isEmpty() && z.isEmpty() || this.first === z.first && this.last === z.last && this.step === z.step); + }, zl.prototype.hashCode = function() { + return this.isEmpty() ? -1 : (31 * ((31 * this.first | 0) + this.last | 0) | 0) + this.step | 0; + }, zl.prototype.toString = function() { + return this.step > 0 ? this.first.toString() + ".." + this.last + " step " + this.step : this.first.toString() + " downTo " + this.last + " step " + (0 | -this.step); + }, eS.prototype.fromClosedRange_qt1dr2$ = function(z, Q, Se) { + return new zl(z, Q, Se); + }, eS.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var eg = null; + function jv() { + return eg === null && new eS(), eg; + } + function uc(z, Q, Se) { + if (aC(), O(Se, H)) + throw vn("Step must be non-zero."); + if (O(Se, ae)) + throw vn("Step must be greater than Long.MIN_VALUE to avoid overflow on negation."); + this.first = z, this.last = rC(z, Q, Se), this.step = Se; + } + function tS() { + rS = this; + } + zl.$metadata$ = { kind: b, simpleName: "IntProgression", interfaces: [nn] }, uc.prototype.iterator = function() { + return new Dd(this.first, this.last, this.step); + }, uc.prototype.isEmpty = function() { + return this.step.toNumber() > 0 ? this.first.compareTo_11rb$(this.last) > 0 : this.first.compareTo_11rb$(this.last) < 0; + }, uc.prototype.equals = function(z) { + return u.isType(z, uc) && (this.isEmpty() && z.isEmpty() || O(this.first, z.first) && O(this.last, z.last) && O(this.step, z.step)); + }, uc.prototype.hashCode = function() { + return this.isEmpty() ? -1 : u.Long.fromInt(31).multiply(u.Long.fromInt(31).multiply(this.first.xor(this.first.shiftRightUnsigned(32))).add(this.last.xor(this.last.shiftRightUnsigned(32)))).add(this.step.xor(this.step.shiftRightUnsigned(32))).toInt(); + }, uc.prototype.toString = function() { + return this.step.toNumber() > 0 ? this.first.toString() + ".." + this.last.toString() + " step " + this.step.toString() : this.first.toString() + " downTo " + this.last.toString() + " step " + this.step.unaryMinus().toString(); + }, tS.prototype.fromClosedRange_b9bd0d$ = function(z, Q, Se) { + return new uc(z, Q, Se); + }, tS.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var rS = null; + function aC() { + return rS === null && new tS(), rS; + } + function jh() { + } + function Ac() { + } + function $v() { + } + function oC(z, Q, Se) { + Se != null ? z.append_gw00v9$(Se(Q)) : Q == null || u.isCharSequence(Q) ? z.append_gw00v9$(Q) : u.isChar(Q) ? z.append_s8itvh$(B(Q)) : z.append_gw00v9$(ne(Q)); + } + function qf(z, Q, Se) { + if (Se === void 0 && (Se = !1), z === Q) + return !0; + if (!Se) + return !1; + var Ze = zu(z), bt = zu(Q), ar = Ze === bt; + return ar || (ar = String.fromCharCode(Ze).toLowerCase().charCodeAt(0) === String.fromCharCode(bt).toLowerCase().charCodeAt(0)), ar; + } + function Vv(z) { + return sC(z, 10); + } + function sC(z, Q) { + Hp(Q); + var Se, Ze, bt, ar = z.length; + if (ar === 0) + return null; + var Vr = z.charCodeAt(0); + if (Vr < 48) { + if (ar === 1) + return null; + if (Se = 1, Vr === 45) + Ze = !0, bt = -2147483648; + else { + if (Vr !== 43) + return null; + Ze = !1, bt = -2147483647; + } + } else + Se = 0, Ze = !1, bt = -2147483647; + for (var Wn = -59652323, tn = Wn, Ni = 0, yo = Se; yo < ar; yo++) { + var us = WE(z.charCodeAt(yo), Q); + if (us < 0 || Ni < tn && (tn !== Wn || Ni < (tn = bt / Q | 0)) || (Ni = u.imul(Ni, Q)) < (bt + us | 0)) + return null; + Ni = Ni - us | 0; + } + return Ze ? Ni : 0 | -Ni; + } + function nS(z) { + throw new Mr("Invalid number format: '" + z + "'"); + } + function iS(z, Q) { + var Se, Ze, bt = u.isCharSequence(Se = z) ? Se : fe(); + e: + do { + var ar, Vr, Wn, tn; + Vr = (ar = Ny(bt)).first, Wn = ar.last, tn = ar.step; + for (var Ni = Vr; Ni <= Wn; Ni += tn) + if (!Ie(Q, B(P(bt.charCodeAt(Ni))))) { + Ze = u.subSequence(bt, Ni, bt.length); + break e; + } + Ze = ""; + } while (0); + return Ze.toString(); + } + function lC(z, Q) { + var Se, Ze, bt = u.isCharSequence(Se = z) ? Se : fe(); + e: + do { + var ar; + for (ar = Ct(Ny(bt)).iterator(); ar.hasNext(); ) { + var Vr = ar.next(); + if (!Ie(Q, B(P(bt.charCodeAt(Vr))))) { + Ze = u.subSequence(bt, 0, Vr + 1 | 0); + break e; + } + } + Ze = ""; + } while (0); + return Ze.toString(); + } + function Jf(z) { + this.this$iterator = z, Xu.call(this), this.index_0 = 0; + } + function Ny(z) { + return new Io(0, z.length - 1 | 0); + } + function Od(z) { + return z.length - 1 | 0; + } + function zv(z, Q, Se, Ze, bt, ar) { + if (Ze < 0 || Q < 0 || Q > (z.length - bt | 0) || Ze > (Se.length - bt | 0)) + return !1; + for (var Vr = 0; Vr < bt; Vr++) + if (!qf(z.charCodeAt(Q + Vr | 0), Se.charCodeAt(Ze + Vr | 0), ar)) + return !1; + return !0; + } + function aS(z, Q, Se) { + return Se === void 0 && (Se = !1), z.length > 0 && qf(z.charCodeAt(0), Q, Se); + } + function tg(z, Q, Se) { + return Se === void 0 && (Se = !1), z.length > 0 && qf(z.charCodeAt(Od(z)), Q, Se); + } + function Ly(z, Q, Se, Ze) { + var bt, ar; + if (Se === void 0 && (Se = 0), Ze === void 0 && (Ze = !1), !Ze && Q.length === 1 && typeof z == "string") { + var Vr = lt(Q); + return z.indexOf(String.fromCharCode(Vr), Se); + } + bt = hr(Se, 0), ar = Od(z); + for (var Wn = bt; Wn <= ar; Wn++) { + var tn, Ni = z.charCodeAt(Wn); + e: + do { + var yo; + for (yo = 0; yo !== Q.length; ++yo) { + var us = B(Q[yo]); + if (qf(B(P(us)), Ni, Ze)) { + tn = !0; + break e; + } + } + tn = !1; + } while (0); + if (tn) + return Wn; + } + return -1; + } + function Hv(z, Q, Se, Ze) { + return Se === void 0 && (Se = 0), Ze === void 0 && (Ze = !1), Ze || typeof z != "string" ? Ly(z, u.charArrayOf(Q), Se, Ze) : z.indexOf(String.fromCharCode(Q), Se); + } + function Qu(z, Q, Se) { + return Se === void 0 && (Se = !1), Hv(z, Q, void 0, Se) >= 0; + } + function eh(z) { + if (!(z >= 0)) + throw vn(("Limit must be non-negative, but was " + z).toString()); + } + function Qf() { + } + function Fy() { + } + function rg() { + } + function xl(z) { + this.match = z; + } + function ng() { + } + function oS() { + sS = this; + } + uc.$metadata$ = { kind: b, simpleName: "LongProgression", interfaces: [nn] }, jh.prototype.contains_mef7kx$ = function(z) { + return u.compareTo(z, this.start) >= 0 && u.compareTo(z, this.endInclusive) <= 0; + }, jh.prototype.isEmpty = function() { + return u.compareTo(this.start, this.endInclusive) > 0; + }, jh.$metadata$ = { kind: de, simpleName: "ClosedRange", interfaces: [] }, Ac.prototype.contains_mef7kx$ = function(z) { + return u.compareTo(z, this.start) >= 0 && u.compareTo(z, this.endExclusive) < 0; + }, Ac.prototype.isEmpty = function() { + return u.compareTo(this.start, this.endExclusive) >= 0; + }, Ac.$metadata$ = { kind: de, simpleName: "OpenEndRange", interfaces: [] }, $v.$metadata$ = { kind: de, simpleName: "KClassifier", interfaces: [] }, Jf.prototype.nextChar = function() { + var z, Q; + return z = this.index_0, this.index_0 = z + 1 | 0, Q = z, this.this$iterator.charCodeAt(Q); + }, Jf.prototype.hasNext = function() { + return this.index_0 < this.this$iterator.length; + }, Jf.$metadata$ = { kind: b, interfaces: [Xu] }, Qf.$metadata$ = { kind: de, simpleName: "MatchGroupCollection", interfaces: [an] }, Fy.$metadata$ = { kind: de, simpleName: "MatchNamedGroupCollection", interfaces: [Qf] }, Object.defineProperty(rg.prototype, "destructured", { configurable: !0, get: function() { + return new xl(this); + } }), xl.prototype.component1 = R("kotlin.kotlin.text.MatchResult.Destructured.component1", function() { + return this.match.groupValues.get_za3lpa$(1); + }), xl.prototype.component2 = R("kotlin.kotlin.text.MatchResult.Destructured.component2", function() { + return this.match.groupValues.get_za3lpa$(2); + }), xl.prototype.component3 = R("kotlin.kotlin.text.MatchResult.Destructured.component3", function() { + return this.match.groupValues.get_za3lpa$(3); + }), xl.prototype.component4 = R("kotlin.kotlin.text.MatchResult.Destructured.component4", function() { + return this.match.groupValues.get_za3lpa$(4); + }), xl.prototype.component5 = R("kotlin.kotlin.text.MatchResult.Destructured.component5", function() { + return this.match.groupValues.get_za3lpa$(5); + }), xl.prototype.component6 = R("kotlin.kotlin.text.MatchResult.Destructured.component6", function() { + return this.match.groupValues.get_za3lpa$(6); + }), xl.prototype.component7 = R("kotlin.kotlin.text.MatchResult.Destructured.component7", function() { + return this.match.groupValues.get_za3lpa$(7); + }), xl.prototype.component8 = R("kotlin.kotlin.text.MatchResult.Destructured.component8", function() { + return this.match.groupValues.get_za3lpa$(8); + }), xl.prototype.component9 = R("kotlin.kotlin.text.MatchResult.Destructured.component9", function() { + return this.match.groupValues.get_za3lpa$(9); + }), xl.prototype.component10 = R("kotlin.kotlin.text.MatchResult.Destructured.component10", function() { + return this.match.groupValues.get_za3lpa$(10); + }), xl.prototype.toList = function() { + return this.match.groupValues.subList_vux9f0$(1, this.match.groupValues.size); + }, xl.$metadata$ = { kind: b, simpleName: "Destructured", interfaces: [] }, rg.$metadata$ = { kind: de, simpleName: "MatchResult", interfaces: [] }, ng.$metadata$ = { kind: de, simpleName: "Lazy", interfaces: [] }, oS.$metadata$ = { kind: Te, simpleName: "UNINITIALIZED_VALUE", interfaces: [] }; + var sS = null; + function By() { + return sS === null && new oS(), sS; + } + function ep(z) { + this.initializer_0 = z, this._value_0 = By(); + } + function Md(z) { + this.value_7taq70$_0 = z; + } + function zs(z) { + $h(), this.value = z; + } + function Wv() { + Uy = this; + } + Object.defineProperty(ep.prototype, "value", { configurable: !0, get: function() { + var z; + return this._value_0 === By() && (this._value_0 = pe(this.initializer_0)(), this.initializer_0 = null), (z = this._value_0) == null || u.isType(z, Be) ? z : Go(); + } }), ep.prototype.isInitialized = function() { + return this._value_0 !== By(); + }, ep.prototype.toString = function() { + return this.isInitialized() ? ne(this.value) : "Lazy value not initialized yet."; + }, ep.prototype.writeReplace_0 = function() { + return new Md(this.value); + }, ep.$metadata$ = { kind: b, simpleName: "UnsafeLazyImpl", interfaces: [Cl, ng] }, Object.defineProperty(Md.prototype, "value", { get: function() { + return this.value_7taq70$_0; + } }), Md.prototype.isInitialized = function() { + return !0; + }, Md.prototype.toString = function() { + return ne(this.value); + }, Md.$metadata$ = { kind: b, simpleName: "InitializedLazyImpl", interfaces: [Cl, ng] }, Object.defineProperty(zs.prototype, "isSuccess", { configurable: !0, get: function() { + return !u.isType(this.value, Hl); + } }), Object.defineProperty(zs.prototype, "isFailure", { configurable: !0, get: function() { + return u.isType(this.value, Hl); + } }), zs.prototype.getOrNull = R("kotlin.kotlin.Result.getOrNull", M(function() { + var z = Object, Q = u.throwCCE; + return function() { + var Se; + return this.isFailure ? null : (Se = this.value) == null || u.isType(Se, z) ? Se : Q(); + }; + })), zs.prototype.exceptionOrNull = function() { + return u.isType(this.value, Hl) ? this.value.exception : null; + }, zs.prototype.toString = function() { + return u.isType(this.value, Hl) ? this.value.toString() : "Success(" + ne(this.value) + ")"; + }, Wv.prototype.success_mh5how$ = R("kotlin.kotlin.Result.Companion.success_mh5how$", M(function() { + var z = d.kotlin.Result; + return function(Q) { + return new z(Q); + }; + })), Wv.prototype.failure_lsqlk3$ = R("kotlin.kotlin.Result.Companion.failure_lsqlk3$", M(function() { + var z = d.kotlin.createFailure_tcv7n7$, Q = d.kotlin.Result; + return function(Se) { + return new Q(z(Se)); + }; + })), Wv.$metadata$ = { kind: Te, simpleName: "Companion", interfaces: [] }; + var Uy = null; + function $h() { + return Uy === null && new Wv(), Uy; + } + function Hl(z) { + this.exception = z; + } + function ig(z) { + return new Hl(z); + } + function lS(z) { + if (u.isType(z.value, Hl)) + throw z.value.exception; + } + function Wl(z) { + z === void 0 && (z = "An operation is not implemented."), gt(z, this), this.name = "NotImplementedError"; + } + Hl.prototype.equals = function(z) { + return u.isType(z, Hl) && O(this.exception, z.exception); + }, Hl.prototype.hashCode = function() { + return Ne(this.exception); + }, Hl.prototype.toString = function() { + return "Failure(" + this.exception + ")"; + }, Hl.$metadata$ = { kind: b, simpleName: "Failure", interfaces: [Cl] }, zs.$metadata$ = { kind: b, simpleName: "Result", interfaces: [Cl] }, zs.prototype.unbox = function() { + return this.value; + }, zs.prototype.hashCode = function() { + var z = 0; + return 31 * z + u.hashCode(this.value) | 0; + }, zs.prototype.equals = function(z) { + return this === z || z !== null && typeof z == "object" && Object.getPrototypeOf(this) === Object.getPrototypeOf(z) && u.equals(this.value, z.value); + }, Wl.$metadata$ = { kind: b, simpleName: "NotImplementedError", interfaces: [Cr] }; + var ri = d.kotlin || (d.kotlin = {}), Gv = ri.internal || (ri.internal = {}), Ir = ri.collections || (ri.collections = {}); + Ir.contains_o2f9me$ = Ie, Ir.get_lastIndex_m7z4lg$ = nt, Ir.indexOf_mjy6jw$ = Ae, Ir.indexOf_o2f9me$ = Fe, Ir.get_indices_m7z4lg$ = it; + var Al = ri.ranges || (ri.ranges = {}); + Al.reversed_zf1xzc$ = Ct, Ir.lastIndexOf_mjy6jw$ = $e, Ir.single_355ntz$ = lt, ri.IllegalArgumentException_init_pdl1vj$ = vn, Ir.ArrayList_init_287e2$ = Xr, Ir.mapCapacity_za3lpa$ = vs, Al.coerceAtLeast_dqglrj$ = hr, Al.coerceAtMost_dqglrj$ = Er, Ir.toCollection_5n4o2z$ = ut, Ir.toSet_us0mfu$ = rt, Ir.LinkedHashMap_init_q3lmfv$ = Rh, Ir.ArrayList_init_ww73n8$ = function(z, Q) { + return Q = Q || Object.create(pi.prototype), pi.call(Q, []), Q; + }, ri.NoSuchElementException_init = Xn, ri.UnsupportedOperationException_init_pdl1vj$ = Ur, Ir.contains_2ws7j4$ = ze, Ir.get_lastIndex_55thoc$ = Vf, Ir.indexOf_2ws7j4$ = qe, Ir.checkIndexOverflow_za3lpa$ = ic, Ir.toCollection_5cfyqp$ = ct, Ir.toSet_7wnvza$ = ft, Ir.Collection = an, Ir.joinTo_gcc71v$ = _t, Ir.joinToString_fmv235$ = Nt, Ir.asSequence_7wnvza$ = Yt; + var mi = ri.text || (ri.text = {}); + Al.ClosedRange = jh, Al.downTo_dqglrj$ = tr; + var Hs = ri.sequences || (ri.sequences = {}); + Hs.Sequence = xc, Hs.take_wuwhe2$ = Fr, Hs.map_z5avom$ = Dn, mi.get_lastIndex_gw00vp$ = Od, mi.iterator_gw00vp$ = function(z) { + return new Jf(z); + }, mi.get_indices_gw00vp$ = Ny, mi.StringBuilder_init = mo; + var jy = ri.js || (ri.js = {}), ag = ri.io || (ri.io = {}); + ri.Annotation = hn, ri.CharSequence = Jn, Ir.Iterable = nn, Ir.MutableIterable = dn, Ir.MutableCollection = zn, Ir.List = Lt, Ir.MutableList = Ot, Ir.Set = Jt, Ir.MutableSet = jt, nr.Entry = Ht, Ir.Map = nr, wn.MutableEntry = On, Ir.MutableMap = wn, Ir.Iterator = or, Ir.MutableIterator = Pt, Ir.ListIterator = Qr, Ir.MutableListIterator = Bn, Object.defineProperty(ri, "Unit", { get: fi }), d.subSequence = function(z, Q, Se) { + return typeof z == "string" ? z.substring(Q, Se) : z.subSequence_vux9f0$(Q, Se); + }, d.captureStack = function(z, Q) { + Error.captureStackTrace ? Error.captureStackTrace(Q) : Q.stack = new Error().stack; + }, d.newThrowable = function(z, Q) { + var Se, Ze = new Error(); + return Se = O(typeof z, "undefined") ? Q != null ? Q.toString() : null : z, Ze.message = Se, Ze.cause = Q, Ze.name = "Throwable", Ze; + }, d.BoxedChar = xn, d.charArrayOf = function() { + var z = "CharArray", Q = new Uint16Array(arguments); + return Q.$type$ = z, Q; + }; + var Rc = ri.coroutines || (ri.coroutines = {}); + Rc.CoroutineImpl = Or, Object.defineProperty(Rc, "CompletedContinuation", { get: as }); + var Yv = Rc.intrinsics || (Rc.intrinsics = {}); + Yv.createCoroutineUnintercepted_3a617i$ = Bs, Yv.intercepted_f9mg25$ = function(z) { + var Q, Se, Ze; + return (Ze = (Se = u.isType(Q = z, Or) ? Q : null) != null ? Se.intercepted() : null) != null ? Ze : z; + }, ri.Error_init_pdl1vj$ = gt, ri.Error = Cr, ri.Exception = Xt, ri.RuntimeException_init_pdl1vj$ = zr, ri.RuntimeException = Wt, ri.IllegalArgumentException = _r, ri.IllegalStateException_init_pdl1vj$ = Tt, ri.IllegalStateException = Xe, ri.IndexOutOfBoundsException = Bt, ri.UnsupportedOperationException_init = ur, ri.UnsupportedOperationException = Gt, ri.NumberFormatException = Mr, ri.NullPointerException = ai, ri.ClassCastException = en, ri.NoSuchElementException = Br, ri.ArithmeticException = ir, ri.lazy_klfg04$ = function(z) { + return new ep(z); + }, Ir.arrayCopy = Vu, Ir.copyOfRange_5f8l3u$ = Fi, mi.binarySearchRange_wmnbas$ = nc, mi.digitToIntImpl_nupfqh$ = aa, ri.Comparator = Lo, Ir.copyToArray = Ua, Ir.copyToArrayImpl = As, Ir.copyToExistingArrayImpl = Ho, Ir.setOf_mh5how$ = Rs, Ir.LinkedHashSet_init_287e2$ = ji, Ir.LinkedHashSet_init_ww73n8$ = oc, Ir.AbstractMutableCollection = Ia, Ir.AbstractMutableList = oi, oa.SimpleEntry_init_trwmqg$ = function(z, Q) { + return Q = Q || Object.create(ma.prototype), ma.call(Q, z.key, z.value), Q; + }, oa.SimpleEntry = ma, oa.AbstractEntrySet = fa, Ir.AbstractMutableMap = oa, Ir.AbstractMutableSet = sa, Ir.ArrayList_init_mqih57$ = function(z, Q) { + return Q = Q || Object.create(pi.prototype), pi.call(Q, Ua(z)), Q; + }, Ir.ArrayList = pi, Object.defineProperty(Mn, "HashCode", { get: ya }), Ir.EqualityComparator = Mn, Ir.HashMap_init_va96d4$ = ka, Ir.HashMap_init_q3lmfv$ = gi, Ir.HashMap_init_xf5xz2$ = Lf, Ir.HashMap = Ki, Ir.HashSet_init_2wofer$ = tu, Ir.HashSet_init_ww73n8$ = jp, Ir.HashSet_init_nn01ho$ = bl, Ir.HashSet = la, Ir.InternalHashCodeMap = Ui, Ir.InternalMap = El, Ir.InternalStringMap = yv, Ir.LinkedHashMap_init_xf5xz2$ = ac, Ir.LinkedHashMap = $a, Ir.LinkedHashSet_init_2wofer$ = ru, Ir.LinkedHashSet = Wo, Ir.RandomAccess = mn, ag.BaseOutput = An, ag.NodeJsOutput = jl, ag.BufferedOutput = kr, ag.BufferedOutputToConsoleLog = sc, Rc.SafeContinuation_init_wj8d80$ = function(z, Q) { + return Q = Q || Object.create(ro.prototype), ro.call(Q, z, Kf()), Q; + }, Rc.SafeContinuation = ro, d.throwNPE = function(z) { + throw new ai(z); + }, d.throwCCE = Go, d.throwISE = ly, ag.Serializable = Cl; + var du = ri.reflect || (ri.reflect = {}); + du.KCallable = nl, du.KClass = Pa; + var Fo = du.js || (du.js = {}), og = Fo.internal || (Fo.internal = {}); + og.KClassImpl = no, og.SimpleKClassImpl = Yo, og.PrimitiveKClassImpl = Zi, Object.defineProperty(og, "NothingKClassImpl", { get: ki }), og.ErrorKClass = nu, du.KProperty = Dh, du.KMutableProperty = on, du.KProperty0 = iu, du.KMutableProperty0 = _v, du.KProperty1 = Bf, du.KMutableProperty1 = $p, Object.defineProperty(og, "PrimitiveClasses", { get: wt }), d.getKClass = Tr, d.getKClassM = jr, d.getKClassFromExpression = function(z) { + var Q; + switch (typeof z) { + case "string": + Q = wt().stringClass; + break; + case "number": + Q = (0 | z) === z ? wt().intClass : wt().doubleClass; + break; + case "boolean": + Q = wt().booleanClass; + break; + case "function": + Q = wt().functionClass(z.length); + break; + default: + if (u.isBooleanArray(z)) + Q = wt().booleanArrayClass; + else if (u.isCharArray(z)) + Q = wt().charArrayClass; + else if (u.isByteArray(z)) + Q = wt().byteArrayClass; + else if (u.isShortArray(z)) + Q = wt().shortArrayClass; + else if (u.isIntArray(z)) + Q = wt().intArrayClass; + else if (u.isLongArray(z)) + Q = wt().longArrayClass; + else if (u.isFloatArray(z)) + Q = wt().floatArrayClass; + else if (u.isDoubleArray(z)) + Q = wt().doubleArrayClass; + else if (u.isType(z, Pa)) + Q = Tr(Pa); + else if (u.isArray(z)) + Q = wt().arrayClass; + else { + var Se = Object.getPrototypeOf(z).constructor; + Q = Se === Object ? wt().anyClass : Se === Error ? wt().throwableClass : Sn(Se); + } + } + return Q; + }, d.getKClass1 = Sn, jy.reset_xjqeni$ = Oi, mi.Appendable = Ii, mi.StringBuilder_init_za3lpa$ = Vs, mi.StringBuilder = ln, mi.uppercaseChar_myv2d0$ = zu, mi.isHighSurrogate_myv2d0$ = dy, mi.isLowSurrogate_myv2d0$ = jf, mi.toInt_pdl1vz$ = fy, mi.checkRadix_za3lpa$ = Hp, mi.digitOf_xvg9q0$ = WE, mi.MatchGroup = ou, mi.get_bnt56j$ = GE, Object.defineProperty(ls, "Companion", { get: Iv }), mi.Regex_init_61zpoe$ = Wp, mi.Regex = ls, mi.concatToString_355ntz$ = Av, mi.concatToString_wlitf7$ = vy, mi.compareTo_7epoxm$ = KE, mi.regionMatches_h3ii2q$ = U0, mi.replace_680rmw$ = function(z, Q, Se, Ze) { + return Ze === void 0 && (Ze = !1), z.replace(new RegExp(Iv().escape_61zpoe$(Q), Ze ? "gui" : "gu"), Iv().nativeEscapeReplacement_y4putb$(Se)); + }, Ir.AbstractCollection = wo, Object.defineProperty(cs, "Companion", { get: Pi }), Ir.AbstractList = cs, Object.defineProperty(Xo, "Companion", { get: Yp }), Ir.AbstractMap = Xo, Object.defineProperty(Ic, "Companion", { get: $f }), Ir.AbstractSet = Ic, Object.defineProperty(Ir, "EmptyIterator", { get: yy }), Ir.get_indices_gzk92b$ = Xp, Ir.throwIndexOverflow = $l, Ir.removeAll_uhyeqt$ = _y, Ir.removeAll_qafx1e$ = Sy, Ir.CharIterator = Xu, Ir.IntIterator = zf, Ir.LongIterator = Hf, Hs.sequence_o0x0bg$ = Wf, Hs.iterator_o0x0bg$ = ZE, Hs.SequenceScope = Ku, Hs.emptySequence_287e2$ = Gf, Hs.TransformingSequence = lu, Hs.FlatteningSequence = Ey, Hs.DropTakeSequence = Zp, Hs.SubSequence = Uh, Hs.TakeSequence = Rd, Hs.generateSequence_c6s9hp$ = Ty, Object.defineProperty(Ir, "EmptySet", { get: z0 }), Ir.emptySet_287e2$ = Jp, Ir.setOf_i5x0yv$ = function(z) { + return z.length > 0 ? rt(z) : Jp(); + }, Ir.hashSetOf_i5x0yv$ = wy, Ir.optimizeReadOnlySet_94kdbt$ = qE, Rc.Continuation = Zu, ri.Result = zs, Yv.get_COROUTINE_SUSPENDED = al, Object.defineProperty(Iy, "Key", { get: Qp }), Rc.ContinuationInterceptor = Iy, uu.Key = W0, uu.Element = wl, Rc.CoroutineContext = uu, Rc.AbstractCoroutineContextElement = Pv, Object.defineProperty(Rc, "EmptyCoroutineContext", { get: Ju }), Rc.CombinedContext = Ko, Object.defineProperty(Yv, "COROUTINE_SUSPENDED", { get: al }), Object.defineProperty(cc, "COROUTINE_SUSPENDED", { get: Dy }), Object.defineProperty(cc, "UNDECIDED", { get: Kf }), Object.defineProperty(cc, "RESUMED", { get: Bv }), Yv.CoroutineSingletons = cc, Gv.getProgressionLastElement_qt1dr2$ = K0, Gv.getProgressionLastElement_b9bd0d$ = rC, Object.defineProperty(ms, "Companion", { get: Z0 }), Al.CharRange = ms, Object.defineProperty(Io, "Companion", { get: J0 }), Al.IntRange = Io, Object.defineProperty(xo, "Companion", { get: Uv }), Al.LongRange = xo, Al.CharProgressionIterator = Vl, Al.IntProgressionIterator = hu, Al.LongProgressionIterator = Dd, Object.defineProperty(Il, "Companion", { get: Py }), Al.CharProgression = Il, Object.defineProperty(zl, "Companion", { get: jv }), Al.IntProgression = zl, Object.defineProperty(uc, "Companion", { get: aC }), Al.LongProgression = uc, Al.OpenEndRange = Ac, du.KClassifier = $v, mi.appendElement_k2zgzt$ = oC, mi.equals_4lte5s$ = qf, mi.toIntOrNull_pdl1vz$ = Vv, mi.toIntOrNull_6ic1pp$ = sC, mi.numberFormatError_y4putb$ = nS, mi.trimStart_wqw3xr$ = iS, mi.trimEnd_wqw3xr$ = lC, mi.regionMatchesImpl_4c7s8r$ = zv, mi.startsWith_sgbm27$ = aS, mi.endsWith_sgbm27$ = tg, mi.indexOfAny_junqau$ = Ly, mi.indexOf_8eortd$ = Hv, mi.indexOf_l5u8uk$ = function(z, Q, Se, Ze) { + return Se === void 0 && (Se = 0), Ze === void 0 && (Ze = !1), Ze || typeof z != "string" ? function(bt, ar, Vr, Wn, tn, Ni) { + var yo, us; + Ni === void 0 && (Ni = !1); + var Dc = Ni ? tr(Er(Vr, Od(bt)), hr(Wn, 0)) : new Io(hr(Vr, 0), Er(Wn, bt.length)); + if (typeof bt == "string" && typeof ar == "string") + for (yo = Dc.iterator(); yo.hasNext(); ) { + var sg = yo.next(); + if (U0(ar, 0, bt, sg, ar.length, tn)) + return sg; + } + else + for (us = Dc.iterator(); us.hasNext(); ) { + var kd = us.next(); + if (zv(ar, 0, bt, kd, ar.length, tn)) + return kd; + } + return -1; + }(z, Q, Se, z.length, Ze) : z.indexOf(Q, Se); + }, mi.contains_sgbm27$ = Qu, mi.requireNonNegativeLimit_kcn2v3$ = eh, mi.MatchGroupCollection = Qf, mi.MatchNamedGroupCollection = Fy, rg.Destructured = xl, mi.MatchResult = rg, ri.Lazy = ng, Object.defineProperty(ri, "UNINITIALIZED_VALUE", { get: By }), ri.UnsafeLazyImpl = ep, ri.InitializedLazyImpl = Md, ri.createFailure_tcv7n7$ = ig, Object.defineProperty(zs, "Companion", { get: $h }), zs.Failure = Hl, ri.throwOnFailure_iacion$ = lS, ri.NotImplementedError = Wl, wn.prototype.getOrDefault_xwzc9p$ = nr.prototype.getOrDefault_xwzc9p$, Xo.prototype.getOrDefault_xwzc9p$ = nr.prototype.getOrDefault_xwzc9p$, oa.prototype.remove_xwzc9p$ = wn.prototype.remove_xwzc9p$, Ui.prototype.createJsMap = El.prototype.createJsMap, yv.prototype.createJsMap = El.prototype.createJsMap, Object.defineProperty(il.prototype, "destructured", Object.getOwnPropertyDescriptor(rg.prototype, "destructured")), nr.prototype.getOrDefault_xwzc9p$, wn.prototype.remove_xwzc9p$, wn.prototype.getOrDefault_xwzc9p$, nr.prototype.getOrDefault_xwzc9p$, wl.prototype.plus_1fupul$ = uu.prototype.plus_1fupul$, Iy.prototype.fold_3cc69b$ = wl.prototype.fold_3cc69b$, Iy.prototype.plus_1fupul$ = wl.prototype.plus_1fupul$, Pv.prototype.get_j3r2sn$ = wl.prototype.get_j3r2sn$, Pv.prototype.fold_3cc69b$ = wl.prototype.fold_3cc69b$, Pv.prototype.minusKey_yeqjby$ = wl.prototype.minusKey_yeqjby$, Pv.prototype.plus_1fupul$ = wl.prototype.plus_1fupul$, Ko.prototype.plus_1fupul$ = uu.prototype.plus_1fupul$, jh.prototype.contains_mef7kx$, jh.prototype.isEmpty, Ac.prototype.contains_mef7kx$, Ac.prototype.isEmpty, typeof process != "undefined" && process.versions && process.versions.node ? new jl(process.stdout) : new sc(), new lc(Ju(), function(z) { + var Q; + return lS(z), (Q = z.value) == null || u.isType(Q, Be) || fe(), Un; + }), xe = u.newArray(0, null), new Int8Array([ee(239), ee(191), ee(189)]), new zs(al()); + }(); + }, (l = o.apply(a, [a])) === void 0 || (i.exports = l); + }, 42: function(i, a, o) { + var l, u, d; + u = [a, o(421)], (d = typeof (l = function(f, g) { + var v = g.Kind.OBJECT, y = g.Kind.CLASS, C = (g.kotlin.js.internal.StringCompanionObject, Error), A = g.Kind.INTERFACE, S = g.toChar, _ = g.ensureNotNull, E = g.kotlin.Unit, I = (g.kotlin.js.internal.IntCompanionObject, g.kotlin.js.internal.LongCompanionObject, g.kotlin.js.internal.FloatCompanionObject, g.kotlin.js.internal.DoubleCompanionObject, g.kotlin.collections.MutableIterator), w = g.hashCode, x = g.throwCCE, b = g.equals, R = g.kotlin.collections.MutableIterable, M = g.kotlin.collections.ArrayList_init_mqih57$, O = g.getKClass, P = g.kotlin.collections.Iterator, B = g.toByte, H = g.kotlin.collections.Iterable, Y = g.toString, X = g.unboxChar, ee = g.kotlin.collections.joinToString_fmv235$, ae = g.kotlin.collections.setOf_i5x0yv$, J = g.kotlin.collections.ArrayList_init_ww73n8$, ne = g.kotlin.text.iterator_gw00vp$, fe = g.toBoxedChar, de = Math, Te = g.kotlin.text.Regex_init_61zpoe$, be = g.kotlin.lazy_klfg04$, Ve = g.kotlin.text.replace_680rmw$, pe = g.kotlin.Annotation, Be = String, Ue = g.kotlin.text.indexOf_l5u8uk$, Qe = g.kotlin.NumberFormatException, Re = g.kotlin.Exception, Ne = Object, Me = g.kotlin.collections.MutableList; + function we() { + He = this; + } + ze.prototype = Object.create(C.prototype), ze.prototype.constructor = ze, qe.prototype = Object.create(C.prototype), qe.prototype.constructor = qe, ft.prototype = Object.create(C.prototype), ft.prototype.constructor = ft, _t.prototype = Object.create(C.prototype), _t.prototype.constructor = _t, tr.prototype = Object.create(C.prototype), tr.prototype.constructor = tr, Fr.prototype = Object.create(or.prototype), Fr.prototype.constructor = Fr, On.prototype = Object.create(C.prototype), On.prototype.constructor = On, fi.prototype = Object.create(Xt.prototype), fi.prototype.constructor = fi, Dr.prototype = Object.create(Br.prototype), Dr.prototype.constructor = Dr, Wt.prototype = Object.create(Br.prototype), Wt.prototype.constructor = Wt, zr.prototype = Object.create(Br.prototype), zr.prototype.constructor = zr, _r.prototype = Object.create(Br.prototype), _r.prototype.constructor = _r, en.prototype = Object.create(Br.prototype), en.prototype.constructor = en, Ua.prototype = Object.create(C.prototype), Ua.prototype.constructor = Ua, Ho.prototype = Object.create(wi.prototype), Ho.prototype.constructor = Ho, As.prototype = Object.create(vs.prototype), As.prototype.constructor = As, oi.prototype = Object.create(vs.prototype), oi.prototype.constructor = oi, xa.prototype = Object.create(or.prototype), xa.prototype.constructor = xa, oa.prototype = Object.create(C.prototype), oa.prototype.constructor = oa, ma.prototype = Object.create(C.prototype), ma.prototype.constructor = ma, Hn.prototype = Object.create(Ki.prototype), Hn.prototype.constructor = Hn, ka.prototype = Object.create(Ki.prototype), ka.prototype.constructor = ka, gi.prototype = Object.create(Ki.prototype), gi.prototype.constructor = gi, la.prototype = Object.create(C.prototype), la.prototype.constructor = la, tu.prototype = Object.create(C.prototype), tu.prototype.constructor = tu, El.prototype = Object.create(C.prototype), El.prototype.constructor = El, $a.prototype = Object.create(gi.prototype), $a.prototype.constructor = $a, go.prototype = Object.create(gi.prototype), go.prototype.constructor = go, Ms.prototype = Object.create(gi.prototype), Ms.prototype.constructor = Ms, Zt.prototype = Object.create(gi.prototype), Zt.prototype.constructor = Zt, Rh.prototype = Object.create(gi.prototype), Rh.prototype.constructor = Rh, ac.prototype = Object.create(gi.prototype), ac.prototype.constructor = ac, Wo.prototype = Object.create(gi.prototype), Wo.prototype.constructor = Wo, ji.prototype = Object.create(gi.prototype), ji.prototype.constructor = ji, ru.prototype = Object.create(gi.prototype), ru.prototype.constructor = ru, oc.prototype = Object.create(gi.prototype), oc.prototype.constructor = oc, we.prototype.fill_ugzc7n$ = function(te, xe) { + var at; + at = te.length - 1 | 0; + for (var wt = 0; wt <= at; wt++) + te[wt] = xe; + }, we.$metadata$ = { kind: v, simpleName: "Arrays", interfaces: [] }; + var He = null; + function Ie() { + return He === null && new we(), He; + } + function Ae(te) { + te === void 0 && (te = ""), this.src = te; + } + function Fe(te) { + this.this$ByteInputStream = te, this.next = 0; + } + function $e() { + lt = this; + } + Fe.prototype.read_8chfmy$ = function(te, xe, at) { + var wt, Tr, jr = 0; + wt = xe + at - 1 | 0; + for (var Sn = xe; Sn <= wt && !(this.next >= this.this$ByteInputStream.src.length); Sn++) + te[Sn] = this.this$ByteInputStream.src.charCodeAt((Tr = this.next, this.next = Tr + 1 | 0, Tr)), jr = jr + 1 | 0; + return jr === 0 ? -1 : jr; + }, Fe.$metadata$ = { kind: y, interfaces: [Yt] }, Ae.prototype.bufferedReader = function() { + return new Fe(this); + }, Ae.prototype.reader = function() { + return this.bufferedReader(); + }, Ae.$metadata$ = { kind: y, simpleName: "ByteInputStream", interfaces: [ct] }, $e.prototype.isWhitespace_s8itvh$ = function(te) { + var xe; + switch (te) { + case 32: + case 9: + case 10: + case 13: + xe = !0; + break; + default: + xe = !1; + } + return xe; + }, $e.$metadata$ = { kind: v, simpleName: "Character", interfaces: [] }; + var lt = null; + function it() { + nt = this; + } + it.prototype.unmodifiableList_zfnyf4$ = function(te) { + Ot("not implemented"); + }, it.$metadata$ = { kind: v, simpleName: "Collections", interfaces: [] }; + var nt = null; + function ut() { + return nt === null && new it(), nt; + } + function rt(te, xe, at, wt, Tr) { + var jr, Sn, Oi = at; + jr = wt + Tr - 1 | 0; + for (var Ii = wt; Ii <= jr; Ii++) + xe[Sn = Oi, Oi = Sn + 1 | 0, Sn] = te.charCodeAt(Ii); + } + function Ke(te, xe, at, wt) { + return Ev().create_8chfmy$(xe, at, wt); + } + function ze(te) { + te === void 0 && (te = null), C.call(this), this.message_opjsbb$_0 = te, this.cause_18nhvr$_0 = null, g.captureStack(C, this), this.name = "IOException"; + } + function qe(te) { + te === void 0 && (te = null), C.call(this), this.message_nykor0$_0 = te, this.cause_n038z2$_0 = null, g.captureStack(C, this), this.name = "IllegalArgumentException"; + } + function ct() { + } + function ft(te) { + te === void 0 && (te = null), C.call(this), this.message_77za5l$_0 = te, this.cause_jiegcr$_0 = null, g.captureStack(C, this), this.name = "NullPointerException"; + } + function _t() { + C.call(this), this.message_l78tod$_0 = void 0, this.cause_y27uld$_0 = null, g.captureStack(C, this), this.name = "NumberFormatException"; + } + function Nt() { + } + function Yt() { + } + function tr(te) { + te === void 0 && (te = null), C.call(this), this.message_2hhrll$_0 = te, this.cause_blbmi1$_0 = null, g.captureStack(C, this), this.name = "RuntimeException"; + } + function Ct(te, xe) { + return xe = xe || Object.create(tr.prototype), tr.call(xe, te.message), xe; + } + function hr() { + this.value = ""; + } + function Er(te) { + this.string = te, this.nextPos_0 = 0; + } + function Fr() { + Un(this), this.value = ""; + } + function Dn(te, xe) { + xe(); + } + function hn(te) { + return new Ae(te); + } + function Jn(te, xe, at) { + Ot("implement"); + } + function nn(te, xe) { + Ot("implement"); + } + function dn(te, xe, at) { + Ot("implement"); + } + function an(te, xe, at) { + Ot("implement"); + } + function zn(te, xe) { + Ot("implement"); + } + function Lt(te, xe) { + Ot("implement"); + } + function Ot(te) { + throw g.newThrowable(te); + } + function Jt(te, xe) { + Ot("implement"); + } + function jt(te, xe) { + Ot("implement"); + } + function nr(te, xe) { + Ot("implement"); + } + function Ht(te, xe) { + Ot("implement"); + } + function wn(te, xe) { + Ot("implement"); + } + function On(te) { + te === void 0 && (te = null), C.call(this), this.message_3rkdyj$_0 = te, this.cause_2kxft9$_0 = null, g.captureStack(C, this), this.name = "UnsupportedOperationException"; + } + function or() { + Bn(), this.writeBuffer_9jar4r$_0 = null, this.lock = null; + } + function Pt() { + Qr = this, this.WRITE_BUFFER_SIZE_0 = 1024; + } + Object.defineProperty(ze.prototype, "message", { get: function() { + return this.message_opjsbb$_0; + } }), Object.defineProperty(ze.prototype, "cause", { get: function() { + return this.cause_18nhvr$_0; + } }), ze.$metadata$ = { kind: y, simpleName: "IOException", interfaces: [C] }, Object.defineProperty(qe.prototype, "message", { get: function() { + return this.message_nykor0$_0; + } }), Object.defineProperty(qe.prototype, "cause", { get: function() { + return this.cause_n038z2$_0; + } }), qe.$metadata$ = { kind: y, simpleName: "IllegalArgumentException", interfaces: [C] }, ct.$metadata$ = { kind: A, simpleName: "InputStream", interfaces: [] }, Object.defineProperty(ft.prototype, "message", { get: function() { + return this.message_77za5l$_0; + } }), Object.defineProperty(ft.prototype, "cause", { get: function() { + return this.cause_jiegcr$_0; + } }), ft.$metadata$ = { kind: y, simpleName: "NullPointerException", interfaces: [C] }, Object.defineProperty(_t.prototype, "message", { get: function() { + return this.message_l78tod$_0; + } }), Object.defineProperty(_t.prototype, "cause", { get: function() { + return this.cause_y27uld$_0; + } }), _t.$metadata$ = { kind: y, simpleName: "NumberFormatException", interfaces: [C] }, Nt.prototype.defaultReadObject = function() { + Ot("not implemented"); + }, Nt.$metadata$ = { kind: A, simpleName: "ObjectInputStream", interfaces: [] }, Yt.$metadata$ = { kind: A, simpleName: "Reader", interfaces: [] }, Object.defineProperty(tr.prototype, "message", { get: function() { + return this.message_2hhrll$_0; + } }), Object.defineProperty(tr.prototype, "cause", { get: function() { + return this.cause_blbmi1$_0; + } }), tr.$metadata$ = { kind: y, simpleName: "RuntimeException", interfaces: [C] }, Object.defineProperty(hr.prototype, "length", { configurable: !0, get: function() { + return this.value.length; + }, set: function(te) { + this.value = this.value.substring(0, te); + } }), hr.prototype.append_8chfmy$ = function(te, xe, at) { + var wt; + wt = xe + at - 1 | 0; + for (var Tr = xe; Tr <= wt; Tr++) + this.value += String.fromCharCode(te[Tr]); + }, hr.prototype.append_s8itvh$ = function(te) { + this.value += String.fromCharCode(te); + }, hr.prototype.append_61zpoe$ = function(te) { + var xe; + xe = te.length - 1 | 0; + for (var at = 0; at <= xe; at++) + this.value += String.fromCharCode(te.charCodeAt(at)); + }, hr.prototype.isEmpty = function() { + return this.length === 0; + }, hr.prototype.toString = function() { + return this.value; + }, hr.prototype.byteInputStream = function() { + return new Ae(this.value); + }, hr.$metadata$ = { kind: y, simpleName: "StringBuilder", interfaces: [] }, Er.prototype.read_8chfmy$ = function(te, xe, at) { + var wt, Tr, jr = 0; + wt = xe + at - 1 | 0; + for (var Sn = xe; Sn <= wt && !(this.nextPos_0 >= this.string.length); Sn++) + te[Sn] = this.string.charCodeAt((Tr = this.nextPos_0, this.nextPos_0 = Tr + 1 | 0, Tr)), jr = jr + 1 | 0; + return jr > 0 ? jr : -1; + }, Er.$metadata$ = { kind: y, simpleName: "StringReader", interfaces: [Yt] }, Fr.prototype.write_8chfmy$ = function(te, xe, at) { + var wt; + wt = xe + at - 1 | 0; + for (var Tr = xe; Tr <= wt; Tr++) + this.value += String.fromCharCode(te[Tr]); + }, Fr.prototype.flush = function() { + this.value = ""; + }, Fr.prototype.close = function() { + }, Fr.prototype.toString = function() { + return this.value; + }, Fr.$metadata$ = { kind: y, simpleName: "StringWriter", interfaces: [or] }, Object.defineProperty(On.prototype, "message", { get: function() { + return this.message_3rkdyj$_0; + } }), Object.defineProperty(On.prototype, "cause", { get: function() { + return this.cause_2kxft9$_0; + } }), On.$metadata$ = { kind: y, simpleName: "UnsupportedOperationException", interfaces: [C] }, or.prototype.write_za3lpa$ = function(te) { + var xe, at; + Dn(this.lock, (xe = this, at = te, function() { + return xe.writeBuffer_9jar4r$_0 == null && (xe.writeBuffer_9jar4r$_0 = g.charArray(Bn().WRITE_BUFFER_SIZE_0)), _(xe.writeBuffer_9jar4r$_0)[0] = S(at), xe.write_8chfmy$(_(xe.writeBuffer_9jar4r$_0), 0, 1), E; + })); + }, or.prototype.write_4hbowm$ = function(te) { + this.write_8chfmy$(te, 0, te.length); + }, or.prototype.write_61zpoe$ = function(te) { + this.write_3m52m6$(te, 0, te.length); + }, or.prototype.write_3m52m6$ = function(te, xe, at) { + var wt, Tr, jr, Sn; + Dn(this.lock, (wt = at, Tr = this, jr = te, Sn = xe, function() { + var Oi; + return wt <= Bn().WRITE_BUFFER_SIZE_0 ? (Tr.writeBuffer_9jar4r$_0 == null && (Tr.writeBuffer_9jar4r$_0 = g.charArray(Bn().WRITE_BUFFER_SIZE_0)), Oi = _(Tr.writeBuffer_9jar4r$_0)) : Oi = g.charArray(wt), rt(jr, Oi, 0, Sn, Sn + wt | 0), Tr.write_8chfmy$(Oi, 0, wt), E; + })); + }, or.prototype.append_gw00v9$ = function(te) { + return te == null ? this.write_61zpoe$("null") : this.write_61zpoe$(te.toString()), this; + }, or.prototype.append_ezbsdh$ = function(te, xe, at) { + var wt = te != null ? te : "null"; + return this.write_61zpoe$(g.subSequence(wt, xe, at).toString()), this; + }, or.prototype.append_s8itvh$ = function(te) { + return this.write_za3lpa$(0 | te), this; + }, Pt.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Qr = null; + function Bn() { + return Qr === null && new Pt(), Qr; + } + function Un(te) { + return te = te || Object.create(or.prototype), or.call(te), te.lock = te, te; + } + function Yn() { + xn = this, this.NULL = new Wt("null"), this.TRUE = new Wt("true"), this.FALSE = new Wt("false"); + } + function fi() { + Xt.call(this), this.value_wcgww9$_0 = null; + } + or.$metadata$ = { kind: y, simpleName: "Writer", interfaces: [] }, Yn.prototype.value_za3lpa$ = function(te) { + return new zr(an()); + }, Yn.prototype.value_s8cxhz$ = function(te) { + return new zr(dn()); + }, Yn.prototype.value_mx4ult$ = function(te) { + if (nr() || jt()) + throw new qe("Infinite and NaN values not permitted in JSON"); + return new zr(this.cutOffPointZero_0(zn())); + }, Yn.prototype.value_14dthe$ = function(te) { + if (wn() || Ht()) + throw new qe("Infinite and NaN values not permitted in JSON"); + return new zr(this.cutOffPointZero_0(Lt())); + }, Yn.prototype.value_pdl1vj$ = function(te) { + return te == null ? this.NULL : new en(te); + }, Yn.prototype.value_6taknv$ = function(te) { + return te ? this.TRUE : this.FALSE; + }, Yn.prototype.array = function() { + return Cr(); + }, Yn.prototype.array_pmhfmb$ = function(te) { + var xe, at = Cr(); + for (xe = 0; xe !== te.length; ++xe) { + var wt = te[xe]; + at.add_za3lpa$(wt); + } + return at; + }, Yn.prototype.array_2muz52$ = function(te) { + var xe, at = Cr(); + for (xe = 0; xe !== te.length; ++xe) { + var wt = te[xe]; + at.add_s8cxhz$(wt); + } + return at; + }, Yn.prototype.array_8cqhcw$ = function(te) { + var xe, at = Cr(); + for (xe = 0; xe !== te.length; ++xe) { + var wt = te[xe]; + at.add_mx4ult$(wt); + } + return at; + }, Yn.prototype.array_yqxtqz$ = function(te) { + var xe, at = Cr(); + for (xe = 0; xe !== te.length; ++xe) { + var wt = te[xe]; + at.add_14dthe$(wt); + } + return at; + }, Yn.prototype.array_wwrst0$ = function(te) { + var xe, at = Cr(); + for (xe = 0; xe !== te.length; ++xe) { + var wt = te[xe]; + at.add_6taknv$(wt); + } + return at; + }, Yn.prototype.array_vqirvp$ = function(te) { + var xe, at = Cr(); + for (xe = 0; xe !== te.length; ++xe) { + var wt = te[xe]; + at.add_61zpoe$(wt); + } + return at; + }, Yn.prototype.object = function() { + return Mr(); + }, Yn.prototype.parse_61zpoe$ = function(te) { + return new Pa().parse_61zpoe$(te); + }, Yn.prototype.parse_6nb378$ = function(te) { + return new Pa().streamToValue(new iu(te)); + }, Yn.prototype.cutOffPointZero_0 = function(te) { + var xe; + if (Jt()) { + var at = te.length - 2 | 0; + xe = te.substring(0, at); + } else + xe = te; + return xe; + }, Object.defineProperty(fi.prototype, "value", { configurable: !0, get: function() { + return this.value_wcgww9$_0; + }, set: function(te) { + this.value_wcgww9$_0 = te; + } }), fi.prototype.startArray = function() { + return Cr(); + }, fi.prototype.startObject = function() { + return Mr(); + }, fi.prototype.endNull = function() { + this.value = Or().NULL; + }, fi.prototype.endBoolean_6taknv$ = function(te) { + this.value = te ? Or().TRUE : Or().FALSE; + }, fi.prototype.endString_61zpoe$ = function(te) { + this.value = new en(te); + }, fi.prototype.endNumber_61zpoe$ = function(te) { + this.value = new zr(te); + }, fi.prototype.endArray_11rb$ = function(te) { + this.value = te; + }, fi.prototype.endObject_11rc$ = function(te) { + this.value = te; + }, fi.prototype.endArrayValue_11rb$ = function(te) { + te != null && te.add_luq74r$(this.value); + }, fi.prototype.endObjectValue_otyqx2$ = function(te, xe) { + te != null && te.add_8kvr2e$(xe, this.value); + }, fi.$metadata$ = { kind: y, simpleName: "DefaultHandler", interfaces: [Xt] }, Yn.$metadata$ = { kind: v, simpleName: "Json", interfaces: [] }; + var xn = null; + function Or() { + return xn === null && new Yn(), xn; + } + function Dr() { + Bs(), this.values_0 = null; + } + function po(te) { + this.closure$iterator = te; + } + function as() { + zo = this; + } + Object.defineProperty(Dr.prototype, "isEmpty", { configurable: !0, get: function() { + return this.values_0.isEmpty(); + } }), Dr.prototype.add_za3lpa$ = function(te) { + return this.values_0.add_11rb$(Or().value_za3lpa$(te)), this; + }, Dr.prototype.add_s8cxhz$ = function(te) { + return this.values_0.add_11rb$(Or().value_s8cxhz$(te)), this; + }, Dr.prototype.add_mx4ult$ = function(te) { + return this.values_0.add_11rb$(Or().value_mx4ult$(te)), this; + }, Dr.prototype.add_14dthe$ = function(te) { + return this.values_0.add_11rb$(Or().value_14dthe$(te)), this; + }, Dr.prototype.add_6taknv$ = function(te) { + return this.values_0.add_11rb$(Or().value_6taknv$(te)), this; + }, Dr.prototype.add_61zpoe$ = function(te) { + return this.values_0.add_11rb$(Or().value_pdl1vj$(te)), this; + }, Dr.prototype.add_luq74r$ = function(te) { + if (te == null) + throw new ft("value is null"); + return this.values_0.add_11rb$(te), this; + }, Dr.prototype.set_vux9f0$ = function(te, xe) { + return this.values_0.set_wxm5ur$(te, Or().value_za3lpa$(xe)), this; + }, Dr.prototype.set_6svq3l$ = function(te, xe) { + return this.values_0.set_wxm5ur$(te, Or().value_s8cxhz$(xe)), this; + }, Dr.prototype.set_24o109$ = function(te, xe) { + return this.values_0.set_wxm5ur$(te, Or().value_mx4ult$(xe)), this; + }, Dr.prototype.set_5wr77w$ = function(te, xe) { + return this.values_0.set_wxm5ur$(te, Or().value_14dthe$(xe)), this; + }, Dr.prototype.set_fzusl$ = function(te, xe) { + return this.values_0.set_wxm5ur$(te, Or().value_6taknv$(xe)), this; + }, Dr.prototype.set_19mbxw$ = function(te, xe) { + return this.values_0.set_wxm5ur$(te, Or().value_pdl1vj$(xe)), this; + }, Dr.prototype.set_zefct7$ = function(te, xe) { + if (xe == null) + throw new ft("value is null"); + return this.values_0.set_wxm5ur$(te, xe), this; + }, Dr.prototype.remove_za3lpa$ = function(te) { + return this.values_0.removeAt_za3lpa$(te), this; + }, Dr.prototype.size = function() { + return this.values_0.size; + }, Dr.prototype.get_za3lpa$ = function(te) { + return this.values_0.get_za3lpa$(te); + }, Dr.prototype.values = function() { + return ut().unmodifiableList_zfnyf4$(this.values_0); + }, po.prototype.hasNext = function() { + return this.closure$iterator.hasNext(); + }, po.prototype.next = function() { + return this.closure$iterator.next(); + }, po.prototype.remove = function() { + throw new On(); + }, po.$metadata$ = { kind: y, interfaces: [I] }, Dr.prototype.iterator = function() { + return new po(this.values_0.iterator()); + }, Dr.prototype.write_l4e0ba$ = function(te) { + te.writeArrayOpen(); + var xe = this.iterator(); + if (xe.hasNext()) + for (xe.next().write_l4e0ba$(te); xe.hasNext(); ) + te.writeArraySeparator(), xe.next().write_l4e0ba$(te); + te.writeArrayClose(); + }, Object.defineProperty(Dr.prototype, "isArray", { configurable: !0, get: function() { + return !0; + } }), Dr.prototype.asArray = function() { + return this; + }, Dr.prototype.hashCode = function() { + return w(this.values_0); + }, Dr.prototype.equals = function(te) { + var xe, at; + if (this === te) + return !0; + if (te == null || (xe = g.getKClassFromExpression(this)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var wt = (at = te) == null || g.isType(at, Dr) ? at : x(); + return b(this.values_0, _(wt).values_0); + }, as.prototype.readFrom_6nb378$ = function(te) { + return Fi().readFromReader_6nb378$(te).asArray(); + }, as.prototype.readFrom_61zpoe$ = function(te) { + return Fi().readFrom_61zpoe$(te).asArray(); + }, as.prototype.unmodifiableArray_v27daa$ = function(te) { + return gt(te, !0); + }, as.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var zo = null; + function Bs() { + return zo === null && new as(), zo; + } + function Cr(te) { + return te = te || Object.create(Dr.prototype), Br.call(te), Dr.call(te), te.values_0 = new Va(), te; + } + function gt(te, xe, at) { + if (at = at || Object.create(Dr.prototype), Br.call(at), Dr.call(at), te == null) + throw new ft("array is null"); + return at.values_0 = xe ? ut().unmodifiableList_zfnyf4$(te.values_0) : M(te.values_0), at; + } + function Xt() { + this.parser_3qxlfk$_0 = null; + } + function Wt(te) { + Br.call(this), this.value = te, this.isNull_35npp$_0 = b("null", this.value), this.isTrue_3de4$_0 = b("true", this.value), this.isFalse_6t83vt$_0 = b("false", this.value); + } + function zr(te) { + Br.call(this), this.string_0 = te; + } + function _r() { + Ur(), this.names_0 = null, this.values_0 = null, this.table_0 = null; + } + function vn(te, xe) { + this.closure$namesIterator = te, this.closure$valuesIterator = xe; + } + function Xe(te, xe) { + this.name = te, this.value = xe; + } + function Tt() { + this.hashTable_0 = new Int8Array(32); + } + function Bt(te) { + return te = te || Object.create(Tt.prototype), Tt.call(te), te; + } + function Gt() { + ur = this; + } + Dr.$metadata$ = { kind: y, simpleName: "JsonArray", interfaces: [R, Br] }, Object.defineProperty(Xt.prototype, "parser", { configurable: !0, get: function() { + return this.parser_3qxlfk$_0; + }, set: function(te) { + this.parser_3qxlfk$_0 = te; + } }), Object.defineProperty(Xt.prototype, "location", { configurable: !0, get: function() { + return _(this.parser).location; + } }), Xt.prototype.startNull = function() { + }, Xt.prototype.endNull = function() { + }, Xt.prototype.startBoolean = function() { + }, Xt.prototype.endBoolean_6taknv$ = function(te) { + }, Xt.prototype.startString = function() { + }, Xt.prototype.endString_61zpoe$ = function(te) { + }, Xt.prototype.startNumber = function() { + }, Xt.prototype.endNumber_61zpoe$ = function(te) { + }, Xt.prototype.startArray = function() { + return null; + }, Xt.prototype.endArray_11rb$ = function(te) { + }, Xt.prototype.startArrayValue_11rb$ = function(te) { + }, Xt.prototype.endArrayValue_11rb$ = function(te) { + }, Xt.prototype.startObject = function() { + return null; + }, Xt.prototype.endObject_11rc$ = function(te) { + }, Xt.prototype.startObjectName_11rc$ = function(te) { + }, Xt.prototype.endObjectName_otyqx2$ = function(te, xe) { + }, Xt.prototype.startObjectValue_otyqx2$ = function(te, xe) { + }, Xt.prototype.endObjectValue_otyqx2$ = function(te, xe) { + }, Xt.$metadata$ = { kind: y, simpleName: "JsonHandler", interfaces: [] }, Object.defineProperty(Wt.prototype, "isNull", { configurable: !0, get: function() { + return this.isNull_35npp$_0; + } }), Object.defineProperty(Wt.prototype, "isTrue", { configurable: !0, get: function() { + return this.isTrue_3de4$_0; + } }), Object.defineProperty(Wt.prototype, "isFalse", { configurable: !0, get: function() { + return this.isFalse_6t83vt$_0; + } }), Object.defineProperty(Wt.prototype, "isBoolean", { configurable: !0, get: function() { + return this.isTrue || this.isFalse; + } }), Wt.prototype.write_l4e0ba$ = function(te) { + te.writeLiteral_y4putb$(this.value); + }, Wt.prototype.toString = function() { + return this.value; + }, Wt.prototype.hashCode = function() { + return w(this.value); + }, Wt.prototype.asBoolean = function() { + return this.isNull ? Br.prototype.asBoolean.call(this) : this.isTrue; + }, Wt.prototype.equals = function(te) { + var xe, at; + if (this === te) + return !0; + if (te == null || (xe = O(Wt)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var wt = (at = te) == null || g.isType(at, Wt) ? at : x(); + return b(this.value, _(wt).value); + }, Wt.$metadata$ = { kind: y, simpleName: "JsonLiteral", interfaces: [Br] }, Object.defineProperty(zr.prototype, "isNumber", { configurable: !0, get: function() { + return !0; + } }), zr.prototype.toString = function() { + return this.string_0; + }, zr.prototype.write_l4e0ba$ = function(te) { + te.writeNumber_y4putb$(this.string_0); + }, zr.prototype.asInt = function() { + return zp(0, this.string_0, 10); + }, zr.prototype.asLong = function() { + return Jn(0, this.string_0); + }, zr.prototype.asFloat = function() { + return nn(0, this.string_0); + }, zr.prototype.asDouble = function() { + return uy(0, this.string_0); + }, zr.prototype.hashCode = function() { + return w(this.string_0); + }, zr.prototype.equals = function(te) { + var xe, at; + if (this === te) + return !0; + if (te == null || (xe = g.getKClassFromExpression(this)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var wt = (at = te) == null || g.isType(at, zr) ? at : x(); + return b(this.string_0, _(wt).string_0); + }, zr.$metadata$ = { kind: y, simpleName: "JsonNumber", interfaces: [Br] }, Object.defineProperty(_r.prototype, "isEmpty", { configurable: !0, get: function() { + return this.names_0.isEmpty(); + } }), Object.defineProperty(_r.prototype, "isObject", { configurable: !0, get: function() { + return !0; + } }), _r.prototype.add_bm4lxs$ = function(te, xe) { + return this.add_8kvr2e$(te, Or().value_za3lpa$(xe)), this; + }, _r.prototype.add_4wgjuj$ = function(te, xe) { + return this.add_8kvr2e$(te, Or().value_s8cxhz$(xe)), this; + }, _r.prototype.add_9sobi5$ = function(te, xe) { + return this.add_8kvr2e$(te, Or().value_mx4ult$(xe)), this; + }, _r.prototype.add_io5o9c$ = function(te, xe) { + return this.add_8kvr2e$(te, Or().value_14dthe$(xe)), this; + }, _r.prototype.add_ivxn3r$ = function(te, xe) { + return this.add_8kvr2e$(te, Or().value_6taknv$(xe)), this; + }, _r.prototype.add_puj7f4$ = function(te, xe) { + return this.add_8kvr2e$(te, Or().value_pdl1vj$(xe)), this; + }, _r.prototype.add_8kvr2e$ = function(te, xe) { + if (te == null) + throw new ft("name is null"); + if (xe == null) + throw new ft("value is null"); + return _(this.table_0).add_bm4lxs$(te, this.names_0.size), this.names_0.add_11rb$(te), this.values_0.add_11rb$(xe), this; + }, _r.prototype.set_bm4lxs$ = function(te, xe) { + return this.set_8kvr2e$(te, Or().value_za3lpa$(xe)), this; + }, _r.prototype.set_4wgjuj$ = function(te, xe) { + return this.set_8kvr2e$(te, Or().value_s8cxhz$(xe)), this; + }, _r.prototype.set_9sobi5$ = function(te, xe) { + return this.set_8kvr2e$(te, Or().value_mx4ult$(xe)), this; + }, _r.prototype.set_io5o9c$ = function(te, xe) { + return this.set_8kvr2e$(te, Or().value_14dthe$(xe)), this; + }, _r.prototype.set_ivxn3r$ = function(te, xe) { + return this.set_8kvr2e$(te, Or().value_6taknv$(xe)), this; + }, _r.prototype.set_puj7f4$ = function(te, xe) { + return this.set_8kvr2e$(te, Or().value_pdl1vj$(xe)), this; + }, _r.prototype.set_8kvr2e$ = function(te, xe) { + if (te == null) + throw new ft("name is null"); + if (xe == null) + throw new ft("value is null"); + var at = this.indexOf_y4putb$(te); + return at !== -1 ? this.values_0.set_wxm5ur$(at, xe) : (_(this.table_0).add_bm4lxs$(te, this.names_0.size), this.names_0.add_11rb$(te), this.values_0.add_11rb$(xe)), this; + }, _r.prototype.remove_pdl1vj$ = function(te) { + if (te == null) + throw new ft("name is null"); + var xe = this.indexOf_y4putb$(te); + return xe !== -1 && (_(this.table_0).remove_za3lpa$(xe), this.names_0.removeAt_za3lpa$(xe), this.values_0.removeAt_za3lpa$(xe)), this; + }, _r.prototype.merge_1kkabt$ = function(te) { + var xe; + if (te == null) + throw new ft("object is null"); + for (xe = te.iterator(); xe.hasNext(); ) { + var at = xe.next(); + this.set_8kvr2e$(at.name, at.value); + } + return this; + }, _r.prototype.get_pdl1vj$ = function(te) { + if (te == null) + throw new ft("name is null"); + var xe = this.indexOf_y4putb$(te); + return xe !== -1 ? this.values_0.get_za3lpa$(xe) : null; + }, _r.prototype.getInt_bm4lxs$ = function(te, xe) { + var at, wt = this.get_pdl1vj$(te); + return (at = wt != null ? wt.asInt() : null) != null ? at : xe; + }, _r.prototype.getLong_4wgjuj$ = function(te, xe) { + var at, wt = this.get_pdl1vj$(te); + return (at = wt != null ? wt.asLong() : null) != null ? at : xe; + }, _r.prototype.getFloat_9sobi5$ = function(te, xe) { + var at, wt = this.get_pdl1vj$(te); + return (at = wt != null ? wt.asFloat() : null) != null ? at : xe; + }, _r.prototype.getDouble_io5o9c$ = function(te, xe) { + var at, wt = this.get_pdl1vj$(te); + return (at = wt != null ? wt.asDouble() : null) != null ? at : xe; + }, _r.prototype.getBoolean_ivxn3r$ = function(te, xe) { + var at, wt = this.get_pdl1vj$(te); + return (at = wt != null ? wt.asBoolean() : null) != null ? at : xe; + }, _r.prototype.getString_puj7f4$ = function(te, xe) { + var at = this.get_pdl1vj$(te); + return at != null ? at.asString() : xe; + }, _r.prototype.size = function() { + return this.names_0.size; + }, _r.prototype.names = function() { + return ut().unmodifiableList_zfnyf4$(this.names_0); + }, vn.prototype.hasNext = function() { + return this.closure$namesIterator.hasNext(); + }, vn.prototype.next = function() { + return new Xe(this.closure$namesIterator.next(), this.closure$valuesIterator.next()); + }, vn.$metadata$ = { kind: y, interfaces: [P] }, _r.prototype.iterator = function() { + return new vn(this.names_0.iterator(), this.values_0.iterator()); + }, _r.prototype.write_l4e0ba$ = function(te) { + te.writeObjectOpen(); + var xe = this.names_0.iterator(), at = this.values_0.iterator(); + if (xe.hasNext()) + for (te.writeMemberName_y4putb$(xe.next()), te.writeMemberSeparator(), at.next().write_l4e0ba$(te); xe.hasNext(); ) + te.writeObjectSeparator(), te.writeMemberName_y4putb$(xe.next()), te.writeMemberSeparator(), at.next().write_l4e0ba$(te); + te.writeObjectClose(); + }, _r.prototype.asObject = function() { + return this; + }, _r.prototype.hashCode = function() { + var te = 1; + return (31 * (te = (31 * te | 0) + w(this.names_0) | 0) | 0) + w(this.values_0) | 0; + }, _r.prototype.equals = function(te) { + var xe, at; + if (this === te) + return !0; + if (te == null || (xe = g.getKClassFromExpression(this)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var wt = (at = te) == null || g.isType(at, _r) ? at : x(); + return b(this.names_0, _(wt).names_0) && b(this.values_0, wt.values_0); + }, _r.prototype.indexOf_y4putb$ = function(te) { + var xe = _(this.table_0).get_za3rmp$(te); + return xe !== -1 && b(te, this.names_0.get_za3lpa$(xe)) ? xe : this.names_0.lastIndexOf_11rb$(te); + }, _r.prototype.readObject_0 = function(te) { + te.defaultReadObject(), this.table_0 = Bt(), this.updateHashIndex_0(); + }, _r.prototype.updateHashIndex_0 = function() { + var te; + te = this.names_0.size - 1 | 0; + for (var xe = 0; xe <= te; xe++) + _(this.table_0).add_bm4lxs$(this.names_0.get_za3lpa$(xe), xe); + }, Xe.prototype.hashCode = function() { + var te = 1; + return (31 * (te = (31 * te | 0) + w(this.name) | 0) | 0) + w(this.value) | 0; + }, Xe.prototype.equals = function(te) { + var xe, at, wt; + if (this === te) + return !0; + if (te == null || (xe = g.getKClassFromExpression(this)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var Tr = (at = te) == null || g.isType(at, Xe) ? at : x(); + return b(this.name, _(Tr).name) && ((wt = this.value) != null ? wt.equals(Tr.value) : null); + }, Xe.$metadata$ = { kind: y, simpleName: "Member", interfaces: [] }, Tt.prototype.add_bm4lxs$ = function(te, xe) { + var at = this.hashSlotFor_0(te); + this.hashTable_0[at] = xe < 255 ? B(xe + 1 | 0) : 0; + }, Tt.prototype.remove_za3lpa$ = function(te) { + var xe; + xe = this.hashTable_0.length - 1 | 0; + for (var at = 0; at <= xe; at++) + if (this.hashTable_0[at] === (te + 1 | 0)) + this.hashTable_0[at] = 0; + else if (this.hashTable_0[at] > (te + 1 | 0)) { + var wt; + (wt = this.hashTable_0)[at] = B(wt[at] - 1); + } + }, Tt.prototype.get_za3rmp$ = function(te) { + var xe = this.hashSlotFor_0(te); + return (255 & this.hashTable_0[xe]) - 1 | 0; + }, Tt.prototype.hashSlotFor_0 = function(te) { + return w(te) & this.hashTable_0.length - 1; + }, Tt.$metadata$ = { kind: y, simpleName: "HashIndexTable", interfaces: [] }, Gt.prototype.readFrom_6nb378$ = function(te) { + return Fi().readFromReader_6nb378$(te).asObject(); + }, Gt.prototype.readFrom_61zpoe$ = function(te) { + return Fi().readFrom_61zpoe$(te).asObject(); + }, Gt.prototype.unmodifiableObject_p5jd56$ = function(te) { + return ai(te, !0); + }, Gt.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var ur = null; + function Ur() { + return ur === null && new Gt(), ur; + } + function Mr(te) { + return te = te || Object.create(_r.prototype), Br.call(te), _r.call(te), te.names_0 = new Va(), te.values_0 = new Va(), te.table_0 = Bt(), te; + } + function ai(te, xe, at) { + if (at = at || Object.create(_r.prototype), Br.call(at), _r.call(at), te == null) + throw new ft("object is null"); + return xe ? (at.names_0 = ut().unmodifiableList_zfnyf4$(te.names_0), at.values_0 = ut().unmodifiableList_zfnyf4$(te.values_0)) : (at.names_0 = M(te.names_0), at.values_0 = M(te.values_0)), at.table_0 = Bt(), at.updateHashIndex_0(), at; + } + function en(te) { + Br.call(this), this.string_0 = te; + } + function Br() { + Fi(); + } + function Xn() { + ir = this, this.TRUE = new Wt("true"), this.FALSE = new Wt("false"), this.NULL = new Wt("null"); + } + _r.$metadata$ = { kind: y, simpleName: "JsonObject", interfaces: [H, Br] }, en.prototype.write_l4e0ba$ = function(te) { + te.writeString_y4putb$(this.string_0); + }, Object.defineProperty(en.prototype, "isString", { configurable: !0, get: function() { + return !0; + } }), en.prototype.asString = function() { + return this.string_0; + }, en.prototype.hashCode = function() { + return w(this.string_0); + }, en.prototype.equals = function(te) { + var xe, at; + if (this === te) + return !0; + if (te == null || (xe = g.getKClassFromExpression(this)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var wt = (at = te) == null || g.isType(at, en) ? at : x(); + return b(this.string_0, _(wt).string_0); + }, en.$metadata$ = { kind: y, simpleName: "JsonString", interfaces: [Br] }, Object.defineProperty(Br.prototype, "isObject", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isArray", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isNumber", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isString", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isBoolean", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isTrue", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isFalse", { configurable: !0, get: function() { + return !1; + } }), Object.defineProperty(Br.prototype, "isNull", { configurable: !0, get: function() { + return !1; + } }), Br.prototype.asObject = function() { + throw new On("Not an object: " + this.toString()); + }, Br.prototype.asArray = function() { + throw new On("Not an array: " + this.toString()); + }, Br.prototype.asInt = function() { + throw new On("Not a number: " + this.toString()); + }, Br.prototype.asLong = function() { + throw new On("Not a number: " + this.toString()); + }, Br.prototype.asFloat = function() { + throw new On("Not a number: " + this.toString()); + }, Br.prototype.asDouble = function() { + throw new On("Not a number: " + this.toString()); + }, Br.prototype.asString = function() { + throw new On("Not a string: " + this.toString()); + }, Br.prototype.asBoolean = function() { + throw new On("Not a boolean: " + this.toString()); + }, Br.prototype.writeTo_j6tqms$ = function(te, xe) { + if (xe === void 0 && (xe = Xa().MINIMAL), te == null) + throw new ft("writer is null"); + if (xe == null) + throw new ft("config is null"); + var at = new xa(te, 128); + this.write_l4e0ba$(xe.createWriter_97tyn8$(at)), at.flush(); + }, Br.prototype.toString = function() { + return this.toString_fmi98k$(Xa().MINIMAL); + }, Br.prototype.toString_fmi98k$ = function(te) { + var xe = new Fr(); + try { + this.writeTo_j6tqms$(xe, te); + } catch (at) { + throw g.isType(at, ze) ? Ct(at) : at; + } + return xe.toString(); + }, Br.prototype.equals = function(te) { + return this === te; + }, Xn.prototype.readFromReader_6nb378$ = function(te) { + return Or().parse_6nb378$(te); + }, Xn.prototype.readFrom_61zpoe$ = function(te) { + return Or().parse_61zpoe$(te); + }, Xn.prototype.valueOf_za3lpa$ = function(te) { + return Or().value_za3lpa$(te); + }, Xn.prototype.valueOf_s8cxhz$ = function(te) { + return Or().value_s8cxhz$(te); + }, Xn.prototype.valueOf_mx4ult$ = function(te) { + return Or().value_mx4ult$(te); + }, Xn.prototype.valueOf_14dthe$ = function(te) { + return Or().value_14dthe$(te); + }, Xn.prototype.valueOf_61zpoe$ = function(te) { + return Or().value_pdl1vj$(te); + }, Xn.prototype.valueOf_6taknv$ = function(te) { + return Or().value_6taknv$(te); + }, Xn.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var ir = null; + function Fi() { + return ir === null && new Xn(), ir; + } + function wi(te) { + nc(), this.writer = te; + } + function gs() { + Bi = this, this.CONTROL_CHARACTERS_END_0 = 31, this.QUOT_CHARS_0 = g.charArrayOf(92, 34), this.BS_CHARS_0 = g.charArrayOf(92, 92), this.LF_CHARS_0 = g.charArrayOf(92, 110), this.CR_CHARS_0 = g.charArrayOf(92, 114), this.TAB_CHARS_0 = g.charArrayOf(92, 116), this.UNICODE_2028_CHARS_0 = g.charArrayOf(92, 117, 50, 48, 50, 56), this.UNICODE_2029_CHARS_0 = g.charArrayOf(92, 117, 50, 48, 50, 57), this.HEX_DIGITS_0 = g.charArrayOf(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102); + } + Br.$metadata$ = { kind: y, simpleName: "JsonValue", interfaces: [] }, wi.prototype.writeLiteral_y4putb$ = function(te) { + this.writer.write_61zpoe$(te); + }, wi.prototype.writeNumber_y4putb$ = function(te) { + this.writer.write_61zpoe$(te); + }, wi.prototype.writeString_y4putb$ = function(te) { + aa(this.writer, 34), this.writeJsonString_y4putb$(te), aa(this.writer, 34); + }, wi.prototype.writeArrayOpen = function() { + aa(this.writer, 91); + }, wi.prototype.writeArrayClose = function() { + aa(this.writer, 93); + }, wi.prototype.writeArraySeparator = function() { + aa(this.writer, 44); + }, wi.prototype.writeObjectOpen = function() { + aa(this.writer, 123); + }, wi.prototype.writeObjectClose = function() { + aa(this.writer, 125); + }, wi.prototype.writeMemberName_y4putb$ = function(te) { + aa(this.writer, 34), this.writeJsonString_y4putb$(te), aa(this.writer, 34); + }, wi.prototype.writeMemberSeparator = function() { + aa(this.writer, 58); + }, wi.prototype.writeObjectSeparator = function() { + aa(this.writer, 44); + }, wi.prototype.writeJsonString_y4putb$ = function(te) { + var xe, at = te.length, wt = 0; + xe = at - 1 | 0; + for (var Tr = 0; Tr <= xe; Tr++) { + var jr = nc().getReplacementChars_0(te.charCodeAt(Tr)); + jr != null && (this.writer.write_3m52m6$(te, wt, Tr - wt | 0), this.writer.write_4hbowm$(jr), wt = Tr + 1 | 0); + } + this.writer.write_3m52m6$(te, wt, at - wt | 0); + }, gs.prototype.getReplacementChars_0 = function(te) { + return te > 92 ? te < 8232 || te > 8233 ? null : te === 8232 ? this.UNICODE_2028_CHARS_0 : this.UNICODE_2029_CHARS_0 : te === 92 ? this.BS_CHARS_0 : te > 34 ? null : te === 34 ? this.QUOT_CHARS_0 : (0 | te) > this.CONTROL_CHARACTERS_END_0 ? null : te === 10 ? this.LF_CHARS_0 : te === 13 ? this.CR_CHARS_0 : te === 9 ? this.TAB_CHARS_0 : g.charArrayOf(92, 117, 48, 48, this.HEX_DIGITS_0[(0 | te) >> 4 & 15], this.HEX_DIGITS_0[15 & (0 | te)]); + }, gs.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Bi = null; + function nc() { + return Bi === null && new gs(), Bi; + } + function aa(te, xe) { + te.write_za3lpa$(0 | xe); + } + function Lo(te, xe, at) { + this.offset = te, this.line = xe, this.column = at; + } + function Ua(te, xe) { + C.call(this), this.message_72rz6e$_0 = te + " at " + Y(xe), this.cause_95carw$_0 = null, this.location = xe, g.captureStack(C, this), this.name = "ParseException"; + } + function As(te) { + ic(), vs.call(this), this.indentChars_0 = te; + } + function Ho(te, xe) { + wi.call(this, te), this.indentChars_0 = xe, this.indent_0 = 0; + } + function Rs() { + Vu = this; + } + wi.$metadata$ = { kind: y, simpleName: "JsonWriter", interfaces: [] }, Lo.prototype.toString = function() { + return this.line.toString() + ":" + Y(this.column); + }, Lo.prototype.hashCode = function() { + return this.offset; + }, Lo.prototype.equals = function(te) { + var xe, at; + if (this === te) + return !0; + if (te == null || (xe = g.getKClassFromExpression(this)) == null || !xe.equals(g.getKClassFromExpression(te))) + return !1; + var wt = (at = te) == null || g.isType(at, Lo) ? at : x(); + return this.offset === _(wt).offset && this.column === wt.column && this.line === wt.line; + }, Lo.$metadata$ = { kind: y, simpleName: "Location", interfaces: [] }, Object.defineProperty(Ua.prototype, "offset", { configurable: !0, get: function() { + return this.location.offset; + } }), Object.defineProperty(Ua.prototype, "line", { configurable: !0, get: function() { + return this.location.line; + } }), Object.defineProperty(Ua.prototype, "column", { configurable: !0, get: function() { + return this.location.column; + } }), Object.defineProperty(Ua.prototype, "message", { get: function() { + return this.message_72rz6e$_0; + } }), Object.defineProperty(Ua.prototype, "cause", { get: function() { + return this.cause_95carw$_0; + } }), Ua.$metadata$ = { kind: y, simpleName: "ParseException", interfaces: [C] }, As.prototype.createWriter_97tyn8$ = function(te) { + return new Ho(te, this.indentChars_0); + }, Ho.prototype.writeArrayOpen = function() { + this.indent_0 = this.indent_0 + 1 | 0, this.writer.write_za3lpa$(91), this.writeNewLine_0(); + }, Ho.prototype.writeArrayClose = function() { + this.indent_0 = this.indent_0 - 1 | 0, this.writeNewLine_0(), this.writer.write_za3lpa$(93); + }, Ho.prototype.writeArraySeparator = function() { + this.writer.write_za3lpa$(44), this.writeNewLine_0() || this.writer.write_za3lpa$(32); + }, Ho.prototype.writeObjectOpen = function() { + this.indent_0 = this.indent_0 + 1 | 0, this.writer.write_za3lpa$(123), this.writeNewLine_0(); + }, Ho.prototype.writeObjectClose = function() { + this.indent_0 = this.indent_0 - 1 | 0, this.writeNewLine_0(), this.writer.write_za3lpa$(125); + }, Ho.prototype.writeMemberSeparator = function() { + this.writer.write_za3lpa$(58), this.writer.write_za3lpa$(32); + }, Ho.prototype.writeObjectSeparator = function() { + this.writer.write_za3lpa$(44), this.writeNewLine_0() || this.writer.write_za3lpa$(32); + }, Ho.prototype.writeNewLine_0 = function() { + var te; + if (this.indentChars_0 == null) + return !1; + this.writer.write_za3lpa$(10), te = this.indent_0 - 1 | 0; + for (var xe = 0; xe <= te; xe++) + this.writer.write_4hbowm$(this.indentChars_0); + return !0; + }, Ho.$metadata$ = { kind: y, simpleName: "PrettyPrintWriter", interfaces: [wi] }, Rs.prototype.singleLine = function() { + return new As(g.charArray(0)); + }, Rs.prototype.indentWithSpaces_za3lpa$ = function(te) { + if (te < 0) + throw new qe("number is negative"); + var xe = g.charArray(te); + return Ie().fill_ugzc7n$(xe, 32), new As(xe); + }, Rs.prototype.indentWithTabs = function() { + return new As(g.charArrayOf(9)); + }, Rs.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Vu = null; + function ic() { + return Vu === null && new Rs(), Vu; + } + function vs() { + Xa(); + } + function Ia() { + Ds = this, this.MINIMAL = new oi(), this.PRETTY_PRINT = ic().indentWithSpaces_za3lpa$(2); + } + function oi() { + vs.call(this); + } + As.$metadata$ = { kind: y, simpleName: "PrettyPrint", interfaces: [vs] }, oi.prototype.createWriter_97tyn8$ = function(te) { + return new wi(te); + }, oi.$metadata$ = { kind: y, interfaces: [vs] }, Ia.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Ds = null; + function Xa() { + return Ds === null && new Ia(), Ds; + } + function xa(te, xe) { + xe === void 0 && (xe = 16), Un(this), this.writer_0 = te, this.buffer_0 = null, this.fill_0 = 0, this.buffer_0 = g.charArray(xe); + } + function oa(te) { + te === void 0 && (te = null), C.call(this), this.message_y7nasg$_0 = te, this.cause_26vz5q$_0 = null, g.captureStack(C, this), this.name = "SyntaxException"; + } + function ma(te) { + te === void 0 && (te = null), C.call(this), this.message_kt89er$_0 = te, this.cause_c2uidd$_0 = null, g.captureStack(C, this), this.name = "IoException"; + } + function fa(te) { + Os(), this.flex = te, this.myTokenType_0 = null, this.bufferSequence_i8enee$_0 = null, this.myTokenStart_0 = 0, this.myTokenEnd_0 = 0, this.bufferEnd_7ee91e$_0 = 0, this.myState_0 = 0, this.myFailed_0 = !1; + } + function os() { + Ul = this; + } + vs.$metadata$ = { kind: y, simpleName: "WriterConfig", interfaces: [] }, xa.prototype.write_za3lpa$ = function(te) { + var xe; + this.fill_0 > (this.buffer_0.length - 1 | 0) && this.flush(), this.buffer_0[xe = this.fill_0, this.fill_0 = xe + 1 | 0, xe] = S(te); + }, xa.prototype.write_8chfmy$ = function(te, xe, at) { + this.fill_0 > (this.buffer_0.length - at | 0) && (this.flush(), at > this.buffer_0.length) ? this.writer_0.write_8chfmy$(te, xe, at) : (wc().arraycopy_yp22ie$(te, xe, this.buffer_0, this.fill_0, at), this.fill_0 = this.fill_0 + at | 0); + }, xa.prototype.write_3m52m6$ = function(te, xe, at) { + this.fill_0 > (this.buffer_0.length - at | 0) && (this.flush(), at > this.buffer_0.length) ? this.writer_0.write_3m52m6$(te, xe, at) : (rt(te, this.buffer_0, this.fill_0, xe, at), this.fill_0 = this.fill_0 + at | 0); + }, xa.prototype.flush = function() { + this.writer_0.write_8chfmy$(this.buffer_0, 0, this.fill_0), this.fill_0 = 0; + }, xa.prototype.close = function() { + }, xa.$metadata$ = { kind: y, simpleName: "WritingBuffer", interfaces: [or] }, Object.defineProperty(oa.prototype, "message", { get: function() { + return this.message_y7nasg$_0; + } }), Object.defineProperty(oa.prototype, "cause", { get: function() { + return this.cause_26vz5q$_0; + } }), oa.$metadata$ = { kind: y, simpleName: "SyntaxException", interfaces: [C] }, Object.defineProperty(ma.prototype, "message", { get: function() { + return this.message_kt89er$_0; + } }), Object.defineProperty(ma.prototype, "cause", { get: function() { + return this.cause_c2uidd$_0; + } }), ma.$metadata$ = { kind: y, simpleName: "IoException", interfaces: [C] }, Object.defineProperty(fa.prototype, "bufferSequence", { configurable: !0, get: function() { + return this.bufferSequence_i8enee$_0; + }, set: function(te) { + this.bufferSequence_i8enee$_0 = te; + } }), Object.defineProperty(fa.prototype, "bufferEnd", { configurable: !0, get: function() { + return this.bufferEnd_7ee91e$_0; + }, set: function(te) { + this.bufferEnd_7ee91e$_0 = te; + } }), Object.defineProperty(fa.prototype, "state", { configurable: !0, get: function() { + return this.locateToken_0(), this.myState_0; + } }), Object.defineProperty(fa.prototype, "tokenType", { configurable: !0, get: function() { + return this.locateToken_0(), this.myTokenType_0; + } }), Object.defineProperty(fa.prototype, "tokenStart", { configurable: !0, get: function() { + return this.locateToken_0(), this.myTokenStart_0; + } }), Object.defineProperty(fa.prototype, "tokenEnd", { configurable: !0, get: function() { + return this.locateToken_0(), this.myTokenEnd_0; + } }), fa.prototype.start_6na8x6$ = function(te, xe, at, wt) { + this.bufferSequence = te, this.myTokenEnd_0 = xe, this.myTokenStart_0 = this.myTokenEnd_0, this.bufferEnd = at, this.flex.reset_6na8x6$(_(this.bufferSequence), xe, at, wt), this.myTokenType_0 = null; + }, fa.prototype.advance = function() { + this.locateToken_0(), this.myTokenType_0 = null; + }, fa.prototype.locateToken_0 = function() { + if (this.myTokenType_0 == null && (this.myTokenStart_0 = this.myTokenEnd_0, !this.myFailed_0)) + try { + this.myState_0 = this.flex.yystate(), this.myTokenType_0 = this.flex.advance(); + } catch (te) { + if (g.isType(te, El) || !g.isType(te, C)) + throw te; + this.myFailed_0 = !0, this.myTokenType_0 = on().BAD_CHARACTER, this.myTokenEnd_0 = this.bufferEnd; + } + }, os.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Ul = null; + function Os() { + return Ul === null && new os(), Ul; + } + function ja(te) { + te === void 0 && (te = new sa()), this.options_0 = te, this.buffer_0 = new hr(), this.level_0 = 0; + } + function sa() { + pa(), this.target = "json", this.quoteFallback = "double", this.useQuotes = !0, this.usePropertyNameQuotes = !0, this.useArrayCommas = !0, this.useObjectCommas = !0, this.indentLevel = 2, this.objectItemNewline = !1, this.arrayItemNewline = !1, this.isSpaceAfterComma = !0, this.isSpaceAfterColon = !0, this.escapeUnicode = !1; + } + function pi() { + Mn = this; + } + fa.$metadata$ = { kind: y, simpleName: "FlexAdapter", interfaces: [] }, Object.defineProperty(pi.prototype, "RJsonCompact", { configurable: !0, get: function() { + var te = new sa(); + return te.target = "rjson", te.useQuotes = !1, te.usePropertyNameQuotes = !1, te.quoteFallback = "single", te.useArrayCommas = !1, te.useObjectCommas = !1, te.objectItemNewline = !1, te.arrayItemNewline = !1, te.isSpaceAfterComma = !1, te.isSpaceAfterColon = !1, te; + } }), Object.defineProperty(pi.prototype, "RJsonPretty", { configurable: !0, get: function() { + var te = new sa(); + return te.target = "rjson", te.useQuotes = !1, te.usePropertyNameQuotes = !1, te.quoteFallback = "single", te.useArrayCommas = !1, te.useObjectCommas = !1, te.objectItemNewline = !0, te.arrayItemNewline = !0, te.isSpaceAfterComma = !0, te.isSpaceAfterColon = !0, te; + } }), Object.defineProperty(pi.prototype, "JsonCompact", { configurable: !0, get: function() { + var te = new sa(); + return te.target = "json", te.useQuotes = !0, te.usePropertyNameQuotes = !0, te.useArrayCommas = !0, te.useObjectCommas = !0, te.objectItemNewline = !1, te.arrayItemNewline = !1, te.isSpaceAfterComma = !1, te.isSpaceAfterColon = !1, te; + } }), Object.defineProperty(pi.prototype, "JsonPretty", { configurable: !0, get: function() { + var te = new sa(); + return te.target = "json", te.useQuotes = !0, te.usePropertyNameQuotes = !0, te.useArrayCommas = !0, te.useObjectCommas = !0, te.objectItemNewline = !0, te.arrayItemNewline = !0, te.isSpaceAfterComma = !0, te.isSpaceAfterColon = !0, te; + } }), Object.defineProperty(pi.prototype, "JsCompact", { configurable: !0, get: function() { + var te = new sa(); + return te.target = "js", te.useQuotes = !0, te.usePropertyNameQuotes = !1, te.quoteFallback = "single", te.useArrayCommas = !0, te.useObjectCommas = !0, te.objectItemNewline = !1, te.arrayItemNewline = !1, te.isSpaceAfterComma = !1, te.isSpaceAfterColon = !1, te; + } }), Object.defineProperty(pi.prototype, "JsPretty", { configurable: !0, get: function() { + var te = new sa(); + return te.target = "js", te.useQuotes = !0, te.usePropertyNameQuotes = !1, te.quoteFallback = "single", te.useArrayCommas = !0, te.useObjectCommas = !0, te.objectItemNewline = !0, te.arrayItemNewline = !0, te.isSpaceAfterComma = !0, te.isSpaceAfterColon = !0, te; + } }), pi.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Xr, Mn = null; + function pa() { + return Mn === null && new pi(), Mn; + } + function Qa(te) { + return !!Xr.contains_11rb$(te) || !Te("[a-zA-Z_][a-zA-Z_0-9]*").matches_6bul2c$(te); + } + function ya(te) { + this.elementType = te; + } + function Ki(te) { + this.id = te; + } + function Hn(te) { + Ki.call(this, te); + } + function ka(te) { + Ki.call(this, te); + } + function gi(te) { + Ki.call(this, te.elementType.id), this.node = te; + } + function Lf(te) { + this.string = te; + } + function la() { + C.call(this), this.message_5xs4d4$_0 = void 0, this.cause_f0a41y$_0 = null, g.captureStack(C, this), this.name = "ArrayIndexOutOfBoundsException"; + } + function tu(te) { + C.call(this), this.message_v24yh0$_0 = te, this.cause_rj05em$_0 = null, g.captureStack(C, this), this.name = "Error"; + } + function jp() { + rl(); + } + function bl() { + Ui = this; + } + sa.$metadata$ = { kind: y, simpleName: "Options", interfaces: [] }, ja.prototype.valueToStream = function(te) { + return this.buffer_0.length = 0, this.printValue_0(te), this.buffer_0.byteInputStream(); + }, ja.prototype.valueToString = function(te) { + return this.buffer_0.length = 0, this.printValue_0(te), this.buffer_0.toString(); + }, ja.prototype.stringToString = function(te) { + var xe = nl().getDefault().createParser().streamToValue(hn(te)); + return this.buffer_0.length = 0, this.printValue_0(xe), this.buffer_0.toString(); + }, ja.prototype.streamToStream = function(te) { + var xe = nl().getDefault().createParser().streamToValue(te); + return this.buffer_0.length = 0, this.printValue_0(xe), this.buffer_0.byteInputStream(); + }, ja.prototype.streamToString = function(te) { + var xe = nl().getDefault().createParser().streamToValue(te); + return this.printValue_0(xe), this.buffer_0.toString(); + }, ja.prototype.printValue_0 = function(te, xe) { + if (xe === void 0 && (xe = !1), g.isType(te, Wt)) + this.append_0(te.value, void 0, xe); + else if (g.isType(te, en)) { + var at = this.tryEscapeUnicode_0(te.asString()); + this.append_0(Cv(at, this.options_0, !1), void 0, xe); + } else if (g.isType(te, zr)) + this.append_0(this.toIntOrDecimalString_0(te), void 0, xe); + else if (g.isType(te, _r)) + this.printObject_0(te, xe); + else { + if (!g.isType(te, Dr)) + throw new oa("Unexpected type: " + g.getKClassFromExpression(te).toString()); + this.printArray_0(te, xe); + } + }, ja.prototype.tryEscapeUnicode_0 = function(te) { + var xe; + if (this.options_0.escapeUnicode) { + var at, wt = J(te.length); + for (at = ne(te); at.hasNext(); ) { + var Tr, jr = X(at.next()), Sn = wt.add_11rb$, Oi = fe(jr); + if ((0 | X(Oi)) > 2047) { + for (var Ii = "\\u" + au(0 | X(Oi)); Ii.length < 4; ) + Ii = "0" + Ii; + Tr = Ii; + } else + Tr = String.fromCharCode(X(Oi)); + Sn.call(wt, Tr); + } + xe = ee(wt, ""); + } else + xe = te; + return xe; + }, ja.prototype.printObject_0 = function(te, xe) { + this.append_0("{", void 0, xe), this.level_0 = this.level_0 + 1 | 0; + for (var at = !!this.options_0.objectItemNewline && this.options_0.arrayItemNewline, wt = 0, Tr = te.iterator(); Tr.hasNext(); ++wt) { + var jr = Tr.next(); + this.options_0.objectItemNewline && this.buffer_0.append_61zpoe$(` +`), this.printPair_0(jr.name, jr.value, at), wt < (te.size() - 1 | 0) && (this.options_0.useObjectCommas ? (this.append_0(",", void 0, !1), this.options_0.isSpaceAfterComma && !this.options_0.objectItemNewline && this.append_0(" ", void 0, !1)) : this.options_0.objectItemNewline || this.append_0(" ", void 0, !1)); + } + this.level_0 = this.level_0 - 1 | 0, this.options_0.objectItemNewline && this.buffer_0.append_61zpoe$(` +`), this.append_0("}", void 0, this.options_0.objectItemNewline); + }, ja.prototype.printArray_0 = function(te, xe) { + var at; + xe === void 0 && (xe = !0), this.append_0("[", void 0, xe), this.level_0 = this.level_0 + 1 | 0; + var wt = 0; + for (at = te.iterator(); at.hasNext(); ) { + var Tr = at.next(), jr = this.options_0.arrayItemNewline; + this.options_0.arrayItemNewline && this.buffer_0.append_61zpoe$(` +`), this.printValue_0(Tr, jr), wt < (te.size() - 1 | 0) && (this.options_0.useArrayCommas ? (this.append_0(",", void 0, !1), this.options_0.isSpaceAfterComma && !this.options_0.arrayItemNewline && this.append_0(" ", void 0, !1)) : this.options_0.arrayItemNewline || this.append_0(" ", void 0, !1)), wt = wt + 1 | 0; + } + this.level_0 = this.level_0 - 1 | 0, this.options_0.arrayItemNewline && this.buffer_0.append_61zpoe$(` +`), this.append_0("]", void 0, this.options_0.arrayItemNewline); + }, ja.prototype.printPair_0 = function(te, xe, at) { + at === void 0 && (at = !0), this.printKey_0(te, at), this.append_0(":", void 0, !1), this.options_0.isSpaceAfterColon && this.append_0(" ", void 0, !1), this.printValue_0(xe, !1); + }, ja.prototype.printKey_0 = function(te, xe) { + if (xe === void 0 && (xe = !0), !this.options_0.usePropertyNameQuotes && cy(te)) + this.append_0(te, void 0, xe); + else { + var at = this.tryEscapeUnicode_0(te); + this.append_0(Cv(at, this.options_0, !0), void 0, xe); + } + }, ja.prototype.append_0 = function(te, xe, at) { + var wt, Tr; + if (xe === void 0 && (xe = !1), at === void 0 && (at = !0), xe && this.buffer_0.append_61zpoe$(` +`), at) { + wt = this.level_0; + for (var jr = 0; jr < wt; jr++) { + Tr = this.options_0.indentLevel; + for (var Sn = 0; Sn < Tr; Sn++) + this.buffer_0.append_61zpoe$(" "); + } + } + this.buffer_0.append_61zpoe$(te); + }, ja.prototype.toIntOrDecimalString_0 = function(te) { + var xe, at = te.asDouble(), wt = te.asDouble(); + if (at === de.floor(wt)) + return te.asInt().toString(); + try { + return te.asDouble().toString(); + } catch (Tr) { + if (!g.isType(Tr, C)) + throw Tr; + xe = te.asInt().toString(); + } + return xe; + }, ja.$metadata$ = { kind: y, simpleName: "PrettyPrinter", interfaces: [] }, ya.$metadata$ = { kind: y, simpleName: "ASTNode", interfaces: [] }, Ki.$metadata$ = { kind: y, simpleName: "IElementType", interfaces: [] }, Hn.$metadata$ = { kind: y, simpleName: "RJsonElementType", interfaces: [Ki] }, ka.$metadata$ = { kind: y, simpleName: "RJsonTokenType", interfaces: [Ki] }, gi.$metadata$ = { kind: y, simpleName: "PsiElement", interfaces: [Ki] }, Lf.$metadata$ = { kind: y, simpleName: "Reader", interfaces: [] }, Object.defineProperty(la.prototype, "message", { get: function() { + return this.message_5xs4d4$_0; + } }), Object.defineProperty(la.prototype, "cause", { get: function() { + return this.cause_f0a41y$_0; + } }), la.$metadata$ = { kind: y, simpleName: "ArrayIndexOutOfBoundsException", interfaces: [C] }, Object.defineProperty(tu.prototype, "message", { get: function() { + return this.message_v24yh0$_0; + } }), Object.defineProperty(tu.prototype, "cause", { get: function() { + return this.cause_rj05em$_0; + } }), tu.$metadata$ = { kind: y, simpleName: "Error", interfaces: [C] }, bl.prototype.codePointAt_905azu$ = function(te, xe) { + return 0 | te.charCodeAt(xe); + }, bl.prototype.charCount_za3lpa$ = function(te) { + return 1; + }, bl.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Ui = null; + function rl() { + return Ui === null && new bl(), Ui; + } + function El() { + C.call(this), this.message_us6fov$_0 = void 0, this.cause_i5ew99$_0 = null, g.captureStack(C, this), this.name = "ProcessCanceledException"; + } + function yv() { + } + function $a(te) { + gi.call(this, te); + } + function go(te) { + gi.call(this, te); + } + function Ms(te) { + gi.call(this, te); + } + function Zt(te) { + gi.call(this, te); + } + function Rh(te) { + gi.call(this, te); + } + function ac(te) { + gi.call(this, te); + } + function Wo(te) { + gi.call(this, te); + } + function ji(te) { + gi.call(this, te); + } + function ru(te) { + gi.call(this, te); + } + function oc(te) { + gi.call(this, te); + } + function mn(te) { + kr(), this.zzReader_0 = te, this.zzState_0 = 0, this.zzLexicalState_0 = 0, this.zzBuffer_0 = "", this.zzMarkedPos_0 = 0, this.zzCurrentPos_0 = 0, this.zzStartRead_amyg19$_0 = 0, this.zzEndRead_0 = 0, this.zzAtBOL_0 = !0, this.zzAtEOF_0 = !1, this.zzEOFDone_0 = !1, this.yychar = 0, this.yycolumn = 0, this.yyline = 0; + } + function An() { + jl = this, this.YYEOF = -1, this.ZZ_BUFFERSIZE_0 = 16384, this.YYINITIAL = 0, this.ZZ_LEXSTATE_0 = new Int32Array([0, 0]), this.ZZ_CMAP_Z = this.zzUnpackCMap_0("\0C€"), this.ZZ_CMAP_Y = this.zzUnpackCMap_0("\0+Ÿ"), this.ZZ_CMAP_A = this.zzUnpackCMap_0(` \0\0\0\x07\0 \0\v\v\f \r\0\0\0 \0\0\b\0 +!\0\0"\0\0# \0\0\0\x1B\x07\0\0ß\0\0\v\0\0/\0 \0`), this.ZZ_ACTION_PACKED_0_0 = `\0\x07\b  +\0\v\f\0\r\0\0\0\f\0`, this.ZZ_ACTION_0 = this.zzUnpackActionx_0(), this.ZZ_ROWMAP_PACKED_0_0 = "\0\0\0$\0H\0l\0\0´\0Ø\0ü\0Ġ\0ń\0Ũ\0ƌ\0ư\0ǔ\0Ǹ\0Ȝ\0ɀ\0ɤ\0\0\0\0\0\0\0ʈ\0Ø\0ʬ\0ː\0˴\0\0̘\0̼\0͠\0\0΄\0Ψ\0\0ό\0ϰ\0Д\0и\0ќ\0Ҁ\0Ҥ\0ӈ\0Ӭ\0Ԑ\0Դ\0՘\0ռ\0ϰ\0֠\0ׄ\0ר\0،\0$\0\0´\0ü\0Ġ\0ذ\0$\0ٔ\0$\0ٸ\0$\0ڜ\0ۀ", this.ZZ_ROWMAP_0 = this.zzUnpackRowMap_1(), this.ZZ_TRANS_PACKED_0_0 = `\x07\b  +\v\f\r\0\0\0\0\0 \0\x1B$\0\0\x1B\0! \0 !" #\0#$#%#\0\0\0\v\f\r\0\0\0\0\r&'\b\0&\0\0\0\f\r& \0&\0\0\0(\v\0\0\0\0\x07)\0\0\0\0\0*\0\0\0\r+\0\0\0\0\0,\0\0\0\r-\0 +\0\x1B\0!\x1B.\0/\0! \0 0"\x1B \0! #\0#1#%#\0!#\0\0\02\v\0\03\0\03333\03\0\0\0(& \0&\0\0\0\b4\0\0\0\0\05\0\0\0\06\0\0\0\07\0\0\0\f8\09.\0:! \0;! #\0\0\0\0\0?\0\0\0\0@\0\0\0\x07A\0\0\0\0\0B\0\0\0 C\0\0\0\0 +D\0\0\0\0\v8\0`, this.ZZ_TRANS_0 = this.zzUnpackTrans_1(), this.ZZ_UNKNOWN_ERROR_0 = 0, this.ZZ_NO_MATCH_0 = 1, this.ZZ_PUSHBACK_2BIG_0 = 2, this.ZZ_ERROR_MSG_0 = ["Unknown internal scanner error", "Error: could not match input", "Error: pushback value was too large"], this.ZZ_ATTRIBUTE_PACKED_0_0 = "\0 \r \0\0 \0 \0 \b\0\x07 \0\b", this.ZZ_ATTRIBUTE_0 = this.zzUnpackAttribute_1(); + } + jp.$metadata$ = { kind: y, simpleName: "Character", interfaces: [] }, Object.defineProperty(El.prototype, "message", { get: function() { + return this.message_us6fov$_0; + } }), Object.defineProperty(El.prototype, "cause", { get: function() { + return this.cause_i5ew99$_0; + } }), El.$metadata$ = { kind: y, simpleName: "ProcessCanceledException", interfaces: [C] }, yv.$metadata$ = { kind: y, simpleName: "StringBuffer", interfaces: [] }, $a.$metadata$ = { kind: y, simpleName: "RJsonIdImpl", interfaces: [gi] }, go.$metadata$ = { kind: y, simpleName: "RJsonBooleanImpl", interfaces: [gi] }, Ms.$metadata$ = { kind: y, simpleName: "RJsonCommentImpl", interfaces: [gi] }, Zt.$metadata$ = { kind: y, simpleName: "RJsonListImpl", interfaces: [gi] }, Rh.$metadata$ = { kind: y, simpleName: "RJsonObjectImpl", interfaces: [gi] }, ac.$metadata$ = { kind: y, simpleName: "RJsonPairImpl", interfaces: [gi] }, Wo.$metadata$ = { kind: y, simpleName: "RJsonStringImpl", interfaces: [gi] }, ji.$metadata$ = { kind: y, simpleName: "RJsonValueImpl", interfaces: [gi] }, ru.$metadata$ = { kind: y, simpleName: "RJsonWhiteSpaceImpl", interfaces: [gi] }, oc.$metadata$ = { kind: y, simpleName: "RJsonBadCharacterImpl", interfaces: [gi] }, Object.defineProperty(mn.prototype, "zzStartRead", { configurable: !0, get: function() { + return this.zzStartRead_amyg19$_0; + }, set: function(te) { + this.zzStartRead_amyg19$_0 = te; + } }), mn.prototype.getTokenStart = function() { + return this.zzStartRead; + }, mn.prototype.getTokenEnd = function() { + return this.getTokenStart() + this.yylength() | 0; + }, mn.prototype.reset_6na8x6$ = function(te, xe, at, wt) { + this.zzBuffer_0 = te, this.zzStartRead = xe, this.zzMarkedPos_0 = this.zzStartRead, this.zzCurrentPos_0 = this.zzMarkedPos_0, this.zzAtEOF_0 = !1, this.zzAtBOL_0 = !0, this.zzEndRead_0 = at, this.yybegin_za3lpa$(wt); + }, mn.prototype.zzRefill_0 = function() { + return !0; + }, mn.prototype.yystate = function() { + return this.zzLexicalState_0; + }, mn.prototype.yybegin_za3lpa$ = function(te) { + this.zzLexicalState_0 = te; + }, mn.prototype.yytext = function() { + return g.subSequence(this.zzBuffer_0, this.zzStartRead, this.zzMarkedPos_0); + }, mn.prototype.yycharat_za3lpa$ = function(te) { + return fe(this.zzBuffer_0.charCodeAt(this.zzStartRead + te | 0)); + }, mn.prototype.yylength = function() { + return this.zzMarkedPos_0 - this.zzStartRead | 0; + }, mn.prototype.zzScanError_0 = function(te) { + var xe; + try { + xe = kr().ZZ_ERROR_MSG_0[te]; + } catch (at) { + if (!g.isType(at, la)) + throw at; + xe = kr().ZZ_ERROR_MSG_0[0]; + } + throw new tu(xe); + }, mn.prototype.yypushback_za3lpa$ = function(te) { + te > this.yylength() && this.zzScanError_0(2), this.zzMarkedPos_0 = this.zzMarkedPos_0 - te | 0; + }, mn.prototype.zzDoEOF_0 = function() { + this.zzEOFDone_0 || (this.zzEOFDone_0 = !0); + }, mn.prototype.advance = function() { + for (var te = { v: 0 }, xe = { v: null }, at = { v: null }, wt = { v: null }, Tr = { v: this.zzEndRead_0 }, jr = { v: this.zzBuffer_0 }, Sn = kr().ZZ_TRANS_0, Oi = kr().ZZ_ROWMAP_0, Ii = kr().ZZ_ATTRIBUTE_0; ; ) { + wt.v = this.zzMarkedPos_0, this.yychar = this.yychar + (wt.v - this.zzStartRead) | 0; + var ln, Vs, mo = !1; + for (at.v = this.zzStartRead; at.v < wt.v; ) { + switch (ln = rl().codePointAt_905azu$(jr.v, at.v), Vs = rl().charCount_za3lpa$(ln), ln) { + case 11: + case 12: + case 133: + case 8232: + case 8233: + this.yyline = this.yyline + 1 | 0, this.yycolumn = 0, mo = !1; + break; + case 13: + this.yyline = this.yyline + 1 | 0, this.yycolumn = 0, mo = !0; + break; + case 10: + mo ? mo = !1 : (this.yyline = this.yyline + 1 | 0, this.yycolumn = 0); + break; + default: + mo = !1, this.yycolumn = this.yycolumn + Vs | 0; + } + at.v = at.v + Vs | 0; + } + if (mo) { + var zu; + if (wt.v < Tr.v) + zu = jr.v.charCodeAt(wt.v) === 10; + else if (this.zzAtEOF_0) + zu = !1; + else { + var dy = this.zzRefill_0(); + Tr.v = this.zzEndRead_0, wt.v = this.zzMarkedPos_0, jr.v = this.zzBuffer_0, zu = !dy && jr.v.charCodeAt(wt.v) === 10; + } + zu && (this.yyline = this.yyline - 1 | 0); + } + xe.v = -1, this.zzStartRead = wt.v, this.zzCurrentPos_0 = this.zzStartRead, at.v = this.zzCurrentPos_0, this.zzState_0 = kr().ZZ_LEXSTATE_0[this.zzLexicalState_0]; + var jf = { v: Ii[this.zzState_0] }; + for ((1 & jf.v) == 1 && (xe.v = this.zzState_0); ; ) { + if (at.v < Tr.v) + te.v = rl().codePointAt_905azu$(jr.v, at.v), at.v = at.v + rl().charCount_za3lpa$(te.v) | 0; + else { + if (this.zzAtEOF_0) { + te.v = -1; + break; + } + this.zzCurrentPos_0 = at.v, this.zzMarkedPos_0 = wt.v; + var fy = this.zzRefill_0(); + if (at.v = this.zzCurrentPos_0, wt.v = this.zzMarkedPos_0, jr.v = this.zzBuffer_0, Tr.v = this.zzEndRead_0, fy) { + te.v = -1; + break; + } + te.v = rl().codePointAt_905azu$(jr.v, at.v), at.v = at.v + rl().charCount_za3lpa$(te.v) | 0; + } + var Hp = Sn[Oi[this.zzState_0] + kr().ZZ_CMAP_za3lpa$(te.v) | 0]; + if (Hp === -1 || (this.zzState_0 = Hp, jf.v = Ii[this.zzState_0], (1 & jf.v) == 1 && (xe.v = this.zzState_0, wt.v = at.v, (8 & jf.v) == 8))) + break; + } + if (this.zzMarkedPos_0 = wt.v, te.v === -1 && this.zzStartRead === this.zzCurrentPos_0) + return this.zzAtEOF_0 = !0, this.zzDoEOF_0(), null; + switch (xe.v < 0 ? xe.v : kr().ZZ_ACTION_0[xe.v]) { + case 1: + return on().BARE_STRING; + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + break; + case 2: + return on().WHITE_SPACE; + case 3: + return on().BAD_CHARACTER; + case 4: + return on().NUMBER; + case 5: + return on().COLON; + case 6: + return on().L_CURLY; + case 7: + return on().R_CURLY; + case 8: + return on().L_BRACKET; + case 9: + return on().R_BRACKET; + case 10: + return on().COMMA; + case 11: + return on().LINE_COMMENT; + case 12: + return on().BLOCK_COMMENT; + case 13: + return on().DOUBLE_QUOTED_STRING; + case 14: + return on().SINGLE_QUOTED_STRING; + case 15: + return on().TICK_QUOTED_STRING; + case 16: + return on().NULL; + case 17: + return on().TRUE; + case 18: + return on().FALSE; + default: + this.zzScanError_0(1); + } + } + }, An.prototype.ZZ_CMAP_za3lpa$ = function(te) { + return 0 | this.ZZ_CMAP_A[(0 | this.ZZ_CMAP_Y[0 | this.ZZ_CMAP_Z[te >> 14] | te >> 7 & 127]) << 7 | 127 & te]; + }, An.prototype.zzUnpackActionx_0 = function() { + var te = new Int32Array(68), xe = 0; + return xe = this.zzUnpackAction_0(this.ZZ_ACTION_PACKED_0_0, xe, te), te; + }, An.prototype.zzUnpackAction_0 = function(te, xe, at) { + for (var wt, Tr, jr, Sn = 0, Oi = xe, Ii = te.length; Sn < Ii; ) { + var ln = 0 | te.charCodeAt((Sn = (wt = Sn) + 1 | 0, wt)), Vs = 0 | te.charCodeAt((Sn = (Tr = Sn) + 1 | 0, Tr)); + do + at[jr = Oi, Oi = jr + 1 | 0, jr] = Vs; + while ((ln = ln - 1 | 0) > 0); + } + return Oi; + }, An.prototype.zzUnpackRowMap_1 = function() { + var te = new Int32Array(68), xe = 0; + return xe = this.zzUnpackRowMap_0(this.ZZ_ROWMAP_PACKED_0_0, xe, te), te; + }, An.prototype.zzUnpackRowMap_0 = function(te, xe, at) { + for (var wt, Tr, jr, Sn = 0, Oi = xe, Ii = te.length; Sn < Ii; ) { + var ln = (0 | te.charCodeAt((Sn = (wt = Sn) + 1 | 0, wt))) << 16; + at[jr = Oi, Oi = jr + 1 | 0, jr] = 0 | ln | te.charCodeAt((Sn = (Tr = Sn) + 1 | 0, Tr)); + } + return Oi; + }, An.prototype.zzUnpackTrans_1 = function() { + var te = new Int32Array(1764), xe = 0; + return xe = this.zzUnpackTrans_0(this.ZZ_TRANS_PACKED_0_0, xe, te), te; + }, An.prototype.zzUnpackTrans_0 = function(te, xe, at) { + for (var wt, Tr, jr, Sn = 0, Oi = xe, Ii = te.length; Sn < Ii; ) { + var ln = 0 | te.charCodeAt((Sn = (wt = Sn) + 1 | 0, wt)), Vs = 0 | te.charCodeAt((Sn = (Tr = Sn) + 1 | 0, Tr)); + Vs = Vs - 1 | 0; + do + at[jr = Oi, Oi = jr + 1 | 0, jr] = Vs; + while ((ln = ln - 1 | 0) > 0); + } + return Oi; + }, An.prototype.zzUnpackAttribute_1 = function() { + var te = new Int32Array(68), xe = 0; + return xe = this.zzUnpackAttribute_0(this.ZZ_ATTRIBUTE_PACKED_0_0, xe, te), te; + }, An.prototype.zzUnpackAttribute_0 = function(te, xe, at) { + for (var wt, Tr, jr, Sn = 0, Oi = xe, Ii = te.length; Sn < Ii; ) { + var ln = 0 | te.charCodeAt((Sn = (wt = Sn) + 1 | 0, wt)), Vs = 0 | te.charCodeAt((Sn = (Tr = Sn) + 1 | 0, Tr)); + do + at[jr = Oi, Oi = jr + 1 | 0, jr] = Vs; + while ((ln = ln - 1 | 0) > 0); + } + return Oi; + }, An.prototype.zzUnpackCMap_0 = function(te) { + for (var xe, at, wt, Tr = { v: 0 }, jr = 0, Sn = te.length; jr < Sn; ) + Tr.v = Tr.v + (0 | te.charCodeAt(jr)) | 0, jr = jr + 2 | 0; + for (var Oi = g.charArray(Tr.v), Ii = 0, ln = 0; Ii < te.length; ) { + var Vs = 0 | te.charCodeAt((Ii = (xe = Ii) + 1 | 0, xe)), mo = te.charCodeAt((Ii = (at = Ii) + 1 | 0, at)); + do + Oi[wt = ln, ln = wt + 1 | 0, wt] = mo; + while ((Vs = Vs - 1 | 0) > 0); + } + return Oi; + }, An.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var jl = null; + function kr() { + return jl === null && new An(), jl; + } + function sc() { + } + function ro() { + } + function lc() { + nl(); + } + function Go() { + Cl = this, this.factory_2h3e2k$_0 = be(ly); + } + function ly() { + return new lc(); + } + mn.$metadata$ = { kind: y, simpleName: "RJsonLexer", interfaces: [] }, sc.$metadata$ = { kind: A, simpleName: "RJsonParser", interfaces: [] }, ro.prototype.stringToJson = function(te) { + return Or().parse_61zpoe$(te).toString(); + }, ro.prototype.stringToValue = function(te) { + return Or().parse_61zpoe$(te); + }, ro.prototype.streamToValue = function(te) { + return Or().parse_6nb378$(te.reader()); + }, ro.prototype.streamToJsonStream = function(te) { + return new Ae(Or().parse_6nb378$(te.reader()).toString()); + }, ro.prototype.streamToRJsonStream = function(te) { + var xe = Or().parse_6nb378$(te.bufferedReader()); + return new ja(pa().RJsonCompact).valueToStream(xe); + }, ro.$metadata$ = { kind: y, simpleName: "RJsonParserImpl", interfaces: [sc] }, Object.defineProperty(Go.prototype, "factory_0", { configurable: !0, get: function() { + return this.factory_2h3e2k$_0.value; + } }), Go.prototype.getDefault = function() { + return this.factory_0; + }, Go.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Cl = null; + function nl() { + return Cl === null && new Go(), Cl; + } + function Pa() { + this.lexer = new mn(null), this.type = null, this.location_i61z51$_0 = new Lo(this.lexer.yychar, this.lexer.yyline, this.lexer.yycolumn), this.rxUnicode_0 = Te("\\\\u([a-fA-F0-9]{4})"), this.rxBareEscape_0 = Te("\\\\."); + } + function no(te) { + return "" + String.fromCharCode(fe(S(zp(0, _(te.groups.get_za3lpa$(1)).value, 16)))); + } + function Yo(te) { + return "" + String.fromCharCode(fe(S(zp(0, _(te.groups.get_za3lpa$(1)).value, 16)))); + } + function Zi(te) { + return te.value.substring(1); + } + function vo() { + on(); + } + function Ff() { + ki = this; + } + lc.prototype.createParser = function() { + return new Pa(); + }, lc.$metadata$ = { kind: y, simpleName: "RJsonParserFactory", interfaces: [] }, Object.defineProperty(Pa.prototype, "location", { configurable: !0, get: function() { + return new Lo(this.lexer.yychar, this.lexer.yyline, this.lexer.yycolumn); + }, set: function(te) { + this.location_i61z51$_0 = te; + } }), Pa.prototype.parse_61zpoe$ = function(te) { + var xe; + this.lexer.reset_6na8x6$(te, 0, te.length, 0), this.advance_0(), this.skipWhitespaceAndComments_0(); + try { + xe = this.readValue_0(); + } catch (at) { + throw g.isType(at, Ua) ? at : g.isType(at, C) ? new Ua("Expected value", this.location) : at; + } + if (this.skipWhitespaceAndComments_0(), this.type != null) + throw new Ua("Expected EOF but received " + this.currentTokenString_0(), this.location); + return xe; + }, Pa.prototype.stringToValue = function(te) { + return this.parse_61zpoe$(te); + }, Pa.prototype.stringToJson = function(te) { + return this.stringToValue(te).toString(); + }, Pa.prototype.streamToValue = function(te) { + return g.isType(te, Ae) ? this.parse_61zpoe$(te.src) : this.parse_61zpoe$(te.bufferedReader().toString()); + }, Pa.prototype.streamToJsonStream = function(te) { + return new ja(pa().JsonCompact).streamToStream(te); + }, Pa.prototype.streamToRJsonStream = function(te) { + return new ja(pa().RJsonCompact).streamToStream(te); + }, Pa.prototype.advance_0 = function() { + this.type = this.lexer.advance(); + }, Pa.prototype.readValue_0 = function() { + var te; + if (this.skipWhitespaceAndComments_0(), _(this.type), te = this.type, b(te, on().L_BRACKET)) + return this.advance_0(), this.readList_0(); + if (b(te, on().L_CURLY)) + return this.advance_0(), this.readObject_0(); + if (b(te, on().BARE_STRING)) { + var xe = new en(this.unescapeBare_0(this.lexer.yytext().toString())); + return this.advance_0(), xe; + } + if (b(te, on().DOUBLE_QUOTED_STRING) || b(te, on().SINGLE_QUOTED_STRING) || b(te, on().TICK_QUOTED_STRING)) { + var at = this.lexer.yytext().toString(), wt = at.length - 1 | 0, Tr = new en(this.unescape_0(at.substring(1, wt))); + return this.advance_0(), Tr; + } + if (b(te, on().TRUE)) { + var jr = new Wt(this.lexer.yytext().toString()); + return this.advance_0(), jr; + } + if (b(te, on().FALSE)) { + var Sn = new Wt(this.lexer.yytext().toString()); + return this.advance_0(), Sn; + } + if (b(te, on().NULL)) { + var Oi = new Wt(this.lexer.yytext().toString()); + return this.advance_0(), Oi; + } + if (b(te, on().NUMBER)) { + var Ii = new zr(this.lexer.yytext().toString()); + return this.advance_0(), Ii; + } + throw new Ua("Did not expect " + this.currentTokenString_0(), this.location); + }, Pa.prototype.currentTokenString_0 = function() { + return b(this.type, on().BAD_CHARACTER) ? "(" + this.lexer.yytext() + ")" : _(this.type).id; + }, Pa.prototype.skipWhitespaceAndComments_0 = function() { + for (var te; ; ) { + if (te = this.type, !(b(te, on().WHITE_SPACE) || b(te, on().BLOCK_COMMENT) || b(te, on().LINE_COMMENT))) + return; + this.advance_0(); + } + }, Pa.prototype.skipComma_0 = function() { + for (var te; ; ) { + if (te = this.type, !(b(te, on().WHITE_SPACE) || b(te, on().BLOCK_COMMENT) || b(te, on().LINE_COMMENT) || b(te, on().COMMA))) + return; + this.advance_0(); + } + }, Pa.prototype.readList_0 = function() { + for (var te = Cr(); ; ) { + if (this.skipWhitespaceAndComments_0(), b(this.type, on().R_BRACKET)) + return this.advance_0(), te; + try { + te.add_luq74r$(this.readValue_0()); + } catch (xe) { + throw g.isType(xe, C) ? new Ua("Expected value or R_BRACKET", this.location) : xe; + } + this.skipComma_0(); + } + }, Pa.prototype.readObject_0 = function() { + for (var te = Mr(); ; ) { + if (this.skipWhitespaceAndComments_0(), b(this.type, on().R_CURLY)) + return this.advance_0(), te; + var xe, at; + try { + xe = this.readName_0(); + } catch (wt) { + throw g.isType(wt, C) ? new Ua("Expected object property name or R_CURLY", this.location) : wt; + } + this.skipWhitespaceAndComments_0(), this.consume_0(on().COLON), this.skipWhitespaceAndComments_0(); + try { + at = this.readValue_0(); + } catch (wt) { + throw g.isType(wt, C) ? new Ua("Expected value or R_CURLY", this.location) : wt; + } + this.skipComma_0(), te.add_8kvr2e$(xe, at); + } + }, Pa.prototype.consume_0 = function(te) { + if (this.skipWhitespaceAndComments_0(), !b(this.type, te)) + throw new Ua("Expected " + te.id, new Lo(this.lexer.yychar, this.lexer.yyline, this.lexer.yycolumn)); + this.advance_0(); + }, Pa.prototype.readName_0 = function() { + var te; + if (this.skipWhitespaceAndComments_0(), te = this.type, b(te, on().NUMBER) || b(te, on().TRUE) || b(te, on().FALSE) || b(te, on().NULL)) { + var xe = this.lexer.yytext().toString(); + return this.advance_0(), xe; + } + if (b(te, on().BARE_STRING)) { + var at = this.lexer.yytext().toString(); + return this.advance_0(), this.unescapeBare_0(at); + } + if (b(te, on().DOUBLE_QUOTED_STRING) || b(te, on().SINGLE_QUOTED_STRING) || b(te, on().TICK_QUOTED_STRING)) { + var wt = this.lexer.yytext().toString(), Tr = wt.length - 1 | 0, jr = wt.substring(1, Tr); + return this.advance_0(), this.unescape_0(jr); + } + throw new Ua("Expected property name or R_CURLY, not " + this.currentTokenString_0(), new Lo(this.lexer.yychar, this.lexer.yyline, this.lexer.yycolumn)); + }, Pa.prototype.unescape_0 = function(te) { + var xe = this.rxUnicode_0.replace_20wsma$(te, no); + return xe = Ve(xe, "\\'", "'"), xe = Ve(xe, "\\`", "`"), xe = Ve(xe, '\\"', '"'), xe = Ve(xe, "\\ ", " "), Ve(xe, `\\ +`, ""); + }, Pa.prototype.unescapeBare_0 = function(te) { + var xe = this.rxUnicode_0.replace_20wsma$(te, Yo), at = xe; + return this.rxBareEscape_0.replace_20wsma$(at, Zi); + }, Pa.$metadata$ = { kind: y, simpleName: "RJsonParser2", interfaces: [sc] }, Ff.prototype.createElement_a4qy0p$ = function(te) { + var xe = te.elementType; + if (xe === on().BOOLEAN) + return new go(te); + if (xe === on().COMMENT) + return new Ms(te); + if (xe === on().ID) + return new $a(te); + if (xe === on().LIST) + return new Zt(te); + if (xe === on().OBJECT) + return new Rh(te); + if (xe === on().PAIR) + return new ac(te); + if (xe === on().STRING) + return new Wo(te); + if (xe === on().VALUE) + return new ji(te); + if (xe === on().WHITE_SPACE) + return new ru(te); + if (xe === on().BAD_CHARACTER) + return new oc(te); + throw g.newThrowable("Unknown element type: " + xe); + }, Ff.$metadata$ = { kind: v, simpleName: "Factory", interfaces: [] }; + var ki = null; + function nu() { + Dh = this, this.BOOLEAN = new Hn("BOOLEAN"), this.COMMENT = new Hn("COMMENT"), this.ID = new Hn("ID"), this.LIST = new Hn("LIST"), this.OBJECT = new Hn("OBJECT"), this.PAIR = new Hn("PAIR"), this.STRING = new Hn("STRING"), this.VALUE = new Hn("VALUE"), this.BARE_STRING = new ka("BARE_STRING"), this.BLOCK_COMMENT = new ka("BLOCK_COMMENT"), this.COLON = new ka("COLON"), this.COMMA = new ka("COMMA"), this.DOUBLE_QUOTED_STRING = new ka("DOUBLE_QUOTED_STRING"), this.FALSE = new ka("FALSE"), this.LINE_COMMENT = new ka("LINE_COMMENT"), this.L_BRACKET = new ka("L_BRACKET"), this.L_CURLY = new ka("L_CURLY"), this.NULL = new ka("NULL"), this.NUMBER = new ka("NUMBER"), this.R_BRACKET = new ka("R_BRACKET"), this.R_CURLY = new ka("R_CURLY"), this.SINGLE_QUOTED_STRING = new ka("SINGLE_QUOTED_STRING"), this.TICK_QUOTED_STRING = new ka("TICK_QUOTED_STRING"), this.TRUE = new ka("TRUE"), this.WHITE_SPACE = new ka("WHITE_SPACE"), this.BAD_CHARACTER = new ka("BAD_CHARACTER"); + } + nu.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Dh = null; + function on() { + return Dh === null && new nu(), Dh; + } + function iu(te) { + this.theReader_0 = te; + } + function _v() { + } + function Bf() { + Ev(); + } + function $p() { + bv = this; + } + vo.$metadata$ = { kind: A, simpleName: "RJsonTypes", interfaces: [] }, iu.prototype.reader = function() { + return this.theReader_0; + }, iu.prototype.bufferedReader = function() { + return this.reader(); + }, iu.$metadata$ = { kind: y, simpleName: "ReaderInputStream", interfaces: [ct] }, _v.$metadata$ = { kind: y, simpleName: "JsDummy", interfaces: [pe] }, $p.prototype.create_8chfmy$ = function(te, xe, at) { + var wt, Tr = new Be(); + wt = xe + at - 1 | 0; + for (var jr = xe; jr <= wt; jr++) + Tr += String.fromCharCode(fe(te[jr])); + return Tr; + }, $p.$metadata$ = { kind: v, simpleName: "Companion", interfaces: [] }; + var Uf, Sv, bv = null; + function Ev() { + return bv === null && new $p(), bv; + } + function au(te) { + return te.toString(16); + } + function Cv(te, xe, at) { + var wt; + if (!isNaN(parseFloat(te))) + return b(xe.quoteFallback, "single") ? "'" + te + "'" : b(xe.quoteFallback, "backtick") ? "`" + te + "`" : '"' + te + '"'; + var Tr = at ? xe.usePropertyNameQuotes : xe.useQuotes; + if (!Tr && Uf.test(te) && (Tr = !0), !Tr && b(te, "") && (Tr = !0), !Tr && at && b(xe.target, "js") && (Tr = Qa(te)), Tr) { + var jr = te; + wt = b(xe.quoteFallback, "single") && Ue(te, "'") === -1 ? "'" + (jr = Ve(jr, "'", "\\'")) + "'" : b(xe.quoteFallback, "backtick") && Ue(te, "`") === -1 ? "`" + (jr = Ve(jr, "`", "\\`")) + "`" : '"' + (jr = Ve(jr, '"', '\\"')) + '"'; + } else + wt = te; + return wt; + } + function cy(te) { + return Sv.test(te); + } + function uy(te, xe) { + try { + if (!Sv.test(xe)) + throw new Qe("not a float"); + var at = parseFloat(xe); + if (!isFinite(at)) + throw new Qe("not finite"); + return at; + } catch (wt) { + throw g.isType(wt, Re) ? new Qe(wt.message) : wt; + } + } + function Va() { + this.a = []; + } + function Oh(te) { + this.this$ArrayList = te, this._n = 0; + } + function Vp() { + Tv = this; + } + Bf.$metadata$ = { kind: y, simpleName: "XString", interfaces: [] }, Va.prototype.add_11rb$ = function(te) { + return this.a.push(te), !0; + }, Va.prototype.add_wxm5ur$ = function(te, xe) { + Ot("not implemented"); + }, Va.prototype.addAll_u57x28$ = function(te, xe) { + Ot("not implemented"); + }, Va.prototype.addAll_brywnq$ = function(te) { + Ot("not implemented"); + }, Va.prototype.clear = function() { + Ot("not implemented"); + }, Va.prototype.listIterator = function() { + Ot("not implemented"); + }, Va.prototype.listIterator_za3lpa$ = function(te) { + Ot("not implemented"); + }, Va.prototype.remove_11rb$ = function(te) { + Ot("not implemented"); + }, Va.prototype.removeAll_brywnq$ = function(te) { + Ot("not implemented"); + }, Va.prototype.removeAt_za3lpa$ = function(te) { + Ot("not implemented"); + }, Va.prototype.retainAll_brywnq$ = function(te) { + Ot("not implemented"); + }, Va.prototype.subList_vux9f0$ = function(te, xe) { + Ot("not implemented"); + }, Object.defineProperty(Va.prototype, "size", { configurable: !0, get: function() { + return this.a.length; + } }), Va.prototype.contains_11rb$ = function(te) { + Ot("not implemented"); + }, Va.prototype.containsAll_brywnq$ = function(te) { + Ot("not implemented"); + }, Va.prototype.get_za3lpa$ = function(te) { + return this.a[te]; + }, Va.prototype.indexOf_11rb$ = function(te) { + Ot("not implemented"); + }, Va.prototype.isEmpty = function() { + Ot("not implemented"); + }, Oh.prototype.hasNext = function() { + var te; + return this._n < (typeof (te = this.this$ArrayList.a.length) == "number" ? te : x()); + }, Oh.prototype.next = function() { + var te, xe; + return (xe = this.this$ArrayList.a[te = this._n, this._n = te + 1 | 0, te]) == null || g.isType(xe, Ne) ? xe : x(); + }, Oh.prototype.remove = function() { + Ot("not implemented"); + }, Oh.$metadata$ = { kind: y, interfaces: [I] }, Va.prototype.iterator = function() { + return new Oh(this); + }, Va.prototype.set_wxm5ur$ = function(te, xe) { + Ot("not implemented"); + }, Va.prototype.lastIndexOf_11rb$ = function(te) { + Ot("not implemented"); + }, Va.$metadata$ = { kind: y, simpleName: "ArrayList", interfaces: [Me] }, Vp.prototype.arraycopy_yp22ie$ = function(te, xe, at, wt, Tr) { + var jr, Sn, Oi = wt; + jr = xe + Tr | 0; + for (var Ii = xe; Ii < jr; Ii++) + at[Sn = Oi, Oi = Sn + 1 | 0, Sn] = te[Ii]; + }, Vp.prototype.arraycopy_nlwz52$ = function(te, xe, at, wt, Tr) { + Ot("not implemented"); + }, Vp.$metadata$ = { kind: v, simpleName: "System", interfaces: [] }; + var Tv = null; + function wc() { + return Tv === null && new Vp(), Tv; + } + function zp(te, xe, at) { + try { + return parseInt(xe, at); + } catch (wt) { + throw g.isType(wt, C) ? g.newThrowable(wt.message) : wt; + } + } + var hy = f.tv || (f.tv = {}), Id = hy.twelvetone || (hy.twelvetone = {}), ti = Id.io || (Id.io = {}); + Object.defineProperty(ti, "Arrays", { get: Ie }), ti.ByteInputStream = Ae, Object.defineProperty(ti, "Character", { get: function() { + return lt === null && new $e(), lt; + } }), Object.defineProperty(ti, "Collections", { get: ut }), ti.toCharArray_s3n7h2$ = rt, ti.create_cqx1qy$ = function(te, xe) { + return Ke(0, xe, 0, xe.length); + }, ti.create_h51huu$ = Ke, ti.IOException = ze, ti.IllegalArgumentException = qe, ti.InputStream = ct, ti.NullPointerException = ft, ti.NumberFormatException = _t, ti.ObjectInputStream = Nt, ti.Reader = Yt, ti.RuntimeException_init_tcv7n7$ = Ct, ti.RuntimeException = tr, ti.StringBuilder = hr, ti.StringReader = Er, ti.StringWriter = Fr, ti.synchronized_d6h5k9$ = Dn, ti.byteInputStream_7efafi$ = hn, ti.parseLong_bufzu3$ = Jn, ti.parseFloat_b12yl5$ = nn, ti.toString_esb6h6$ = dn, ti.toString_mgw2my$ = an, ti.toString_4qhq6s$ = zn, ti.toString_9s8ssy$ = Lt, ti.TODO_y4putb$ = Ot, ti.endsWith_7azisw$ = Jt, ti.isNaN_4qhq6s$ = jt, ti.isInfinite_4qhq6s$ = nr, ti.isNaN_9s8ssy$ = Ht, ti.isInfinite_9s8ssy$ = wn, ti.UnsupportedOperationException = On, Object.defineProperty(or, "Companion", { get: Bn }), ti.Writer_init = Un, ti.Writer_init_s8jyv4$ = function(te, xe) { + if (xe = xe || Object.create(or.prototype), or.call(xe), te == null) + throw new ft(); + return xe.lock = te, xe; + }, ti.Writer = or, Yn.prototype.DefaultHandler = fi; + var ss = Id.json || (Id.json = {}); + Object.defineProperty(ss, "Json", { get: Or }), Object.defineProperty(Dr, "Companion", { get: Bs }), ss.JsonArray_init = Cr, ss.JsonArray_init_v27daa$ = function(te, xe) { + return gt(te, !1, xe = xe || Object.create(Dr.prototype)), xe; + }, ss.JsonArray = Dr, ss.JsonHandler = Xt, ss.JsonLiteral = Wt, ss.JsonNumber = zr, _r.Member = Xe, _r.HashIndexTable_init = Bt, _r.HashIndexTable_init_s5uoma$ = function(te, xe) { + return xe = xe || Object.create(Tt.prototype), Tt.call(xe), wc().arraycopy_nlwz52$(te.hashTable_0, 0, xe.hashTable_0, 0, xe.hashTable_0.length), xe; + }, _r.HashIndexTable = Tt, Object.defineProperty(_r, "Companion", { get: Ur }), ss.JsonObject_init = Mr, ss.JsonObject_init_p5jd56$ = function(te, xe) { + return ai(te, !1, xe = xe || Object.create(_r.prototype)), xe; + }, ss.JsonObject = _r, ss.JsonString = en, Object.defineProperty(Br, "Companion", { get: Fi }), ss.JsonValue = Br, Object.defineProperty(wi, "Companion", { get: nc }), ss.JsonWriter = wi, ss.write_cm3p45$ = aa, ss.Location = Lo, ss.ParseException = Ua, Object.defineProperty(As, "Companion", { get: ic }), ss.PrettyPrint = As, Object.defineProperty(vs, "Companion", { get: Xa }), ss.WriterConfig = vs, ss.WritingBuffer = xa; + var ta = Id.rjson || (Id.rjson = {}); + return ta.SyntaxException = oa, ta.IoException = ma, Object.defineProperty(fa, "Companion", { get: Os }), ta.FlexAdapter = fa, Object.defineProperty(sa, "Companion", { get: pa }), ja.Options = sa, ta.PrettyPrinter = ja, Object.defineProperty(ta, "es3keywords", { get: function() { + return Xr; + } }), ta.needsPropertyNameQuotes_y4putb$ = Qa, ta.ASTNode = ya, ta.IElementType = Ki, ta.RJsonElementType = Hn, ta.RJsonTokenType = ka, ta.PsiElement = gi, ta.Reader = Lf, ta.ArrayIndexOutOfBoundsException = la, ta.Error = tu, Object.defineProperty(jp, "Companion", { get: rl }), ta.Character = jp, ta.ProcessCanceledException = El, ta.StringBuffer = yv, ta.RJsonIdImpl = $a, ta.RJsonBooleanImpl = go, ta.RJsonCommentImpl = Ms, ta.RJsonListImpl = Zt, ta.RJsonObjectImpl = Rh, ta.RJsonPairImpl = ac, ta.RJsonStringImpl = Wo, ta.RJsonValueImpl = ji, ta.RJsonWhiteSpaceImpl = ru, ta.RJsonBadCharacterImpl = oc, Object.defineProperty(mn, "Companion", { get: kr }), ta.RJsonLexer = mn, ta.RJsonParser = sc, ta.RJsonParserImpl = ro, Object.defineProperty(lc, "Companion", { get: nl }), ta.RJsonParserFactory = lc, ta.RJsonParser2 = Pa, Object.defineProperty(vo, "Factory", { get: function() { + return ki === null && new Ff(), ki; + } }), Object.defineProperty(vo, "Companion", { get: on }), ta.RJsonTypes = vo, ta.ReaderInputStream = iu, ti.JsDummy = _v, Object.defineProperty(Bf, "Companion", { get: Ev }), ti.XString = Bf, ti.toHexString_kcn2v3$ = au, ti.startsWith_7azisw$ = function(te, xe) { + return te.startsWith(xe); + }, ti.escapeIfNeeded_po7bw7$ = Cv, ti.isNumber_y4putb$ = cy, ti.parseDouble_2lv9n6$ = uy, ti.ArrayList = Va, Object.defineProperty(ti, "System", { get: wc }), ti.parseInt_doe1q$ = zp, ti.substring_2ag3u6$ = function(te, xe, at, wt) { + return xe.substring(at, wt); + }, Xr = ae(["abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double", "else", "enum", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with"]), Uf = /[\s\u0012:\[\]\{\},\\"']/, Sv = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/, f; + }) == "function" ? l.apply(a, u) : l) === void 0 || (i.exports = d); + } }, n = {}, function i(a) { + var o = n[a]; + if (o !== void 0) + return o.exports; + var l = n[a] = { exports: {} }; + return r[a].call(l.exports, l, l.exports, i), l.exports; + }(42); + var r, n; + }); +})(qBe); +(function(e) { + const t = cH, r = t.tv.twelvetone.rjson, n = r.PrettyPrinter.Options; + n.JsonCompact = n.Companion.JsonCompact, n.JsonPretty = n.Companion.JsonPretty, n.RJsonCompact = n.Companion.RJsonCompact, n.RJsonPretty = n.Companion.RJsonPretty, n.JsCompact = n.Companion.JsCompact, n.JsPretty = n.Companion.JsPretty, e.exports = { + createParser: () => r.RJsonParserFactory.Companion.getDefault().createParser(), + createParserFactory: () => r.RJsonParserFactory.Companion.getDefault(), + PrettyPrinter: r.PrettyPrinter, + /** + * @deprecated since 0.1.0. Use toJson() instead. + * @param rjsonString {String} + * @returns {String} + */ + convert: function(i) { + return r.RJsonParserFactory.Companion.getDefault().createParser().stringToJson(i); + }, + /** + * + * @param rjsonString {String} + * @param compact {Boolean} + * @returns {String} + */ + toJson: function(i, a = !0) { + const l = r.RJsonParserFactory.Companion.getDefault().createParser().stringToValue(i); + let u; + return a ? u = r.PrettyPrinter.Options.Companion.JsonCompact : u = r.PrettyPrinter.Options.Companion.JsonPretty, new r.PrettyPrinter(u).valueToString(l); + }, + /** + * + * @param rjsonString {String} + * @param compact {Boolean} + * @returns {String} + */ + toRJson: function(i, a = !0) { + const l = r.RJsonParserFactory.Companion.getDefault().createParser().stringToValue(i); + let u; + return a ? u = r.PrettyPrinter.Options.Companion.RJsonCompact : u = r.PrettyPrinter.Options.Companion.RJsonPretty, new r.PrettyPrinter(u).valueToString(l); + }, + /** + * + * @param rjsonString {String} + * @param compact {Boolean} + * @returns {String} + */ + toJs: function(i, a = !0) { + const l = r.RJsonParserFactory.Companion.getDefault().createParser().stringToValue(i); + let u; + return a ? u = r.PrettyPrinter.Options.Companion.JsCompact : u = r.PrettyPrinter.Options.Companion.JsPretty, new r.PrettyPrinter(u).valueToString(l); + }, + /** + * + * @param options {Options} PrettyPrinter options + * @param stringOrValue {string|object} a JsonLike string or JsonValue + * @returns {string} + */ + prettyPrint: function(i, a) { + const o = new r.PrettyPrinter(i); + return typeof a == "string" ? o.stringToString(a) : o.valueToString(a); + }, + api: t, + PrettyPrinter: r.PrettyPrinter, + Options: n + }, e.exports.default = e.exports; +})(ZBe); +function JBe(e, t) { + return e.trim().length === 0 ? "" : lH.toJson(e, t); +} +function QBe(e, t, r) { + if (!e) + return new Zg("", void 0, { segments: [{ value: r, success: !0 }] }); + try { + var n = $pe(e, t); + return new Zg(n, void 0, { segments: [{ value: r, success: !0 }] }); + } catch (i) { + return new Zg("", W6(i), { + segments: [{ value: r, success: !1 }] + }); + } +} +function eUe(e, t) { + return new zpe(e, t).parse(); +} +var zpe = ( + /** @class */ + function() { + function e(t, r) { + this.context = r, this.valueAndMsgs = [], this.segments = Ppe(t.trim()); + } + return e.prototype.parse = function() { + var t; + try { + var r = this.parseObject(); + return this.valueAndMsgs.length === 0 ? new Zg(r) : new Zg(r, (t = $lodash.find(this.valueAndMsgs, "msg")) === null || t === void 0 ? void 0 : t.msg, { + segments: this.valueAndMsgs.flatMap(function(n) { + var i, a; + return (a = (i = n == null ? void 0 : n.extra) === null || i === void 0 ? void 0 : i.segments) !== null && a !== void 0 ? a : []; + }) + }); + } catch (n) { + return new Zg("", W6(n)); + } + }, e.prototype.parseObject = function() { + var t = this, r = this.segments.map(function(n) { + return nR(n) ? t.evalDynamicSegment(n) : n; + }); + return r.length === 1 ? r[0] : r.join(""); + }, e.prototype.evalDynamicSegment = function(t) { + var r = QBe(t.slice(2, -2).trim(), this.context, t); + return this.valueAndMsgs.push(r), r.value; + }, e; + }() +); +function tUe(e, t) { + return new rUe(e, t).parse(); +} +var rUe = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r, n) { + var i = e.call(this, r, n) || this; + return i.evalIndexedObject = i.evalIndexedObject.bind(i), i; + } + return t.prototype.parseObject = function() { + try { + return this.parseRelaxedJson(); + } catch (r) { + return e.prototype.parseObject.call(this); + } + }, t.prototype.parseRelaxedJson = function() { + var r = this.segments.map(function(a, o) { + return nR(a) ? "\\{\\{" + o + "\\}\\}" : a; + }).join(""); + if (r.length === 0) + return ""; + var n = JBe(r, !0), i = $pe(n.replace(/\\{\\{\d+\\}\\}/g, function(a) { + return "\\\\{\\\\{" + a.slice(4, -4) + "\\\\}\\\\}"; + }), {}); + return this.evalIndexedObject(i); + }, t.prototype.evalIndexedObject = function(r) { + if (typeof r == "string") + return this.evalIndexedStringToObject(r); + if (typeof r != "object" || r === null) + return r; + if (Array.isArray(r)) + return r.map(this.evalIndexedObject); + for (var n = {}, i = 0, a = Object.entries(r); i < a.length; i++) { + var o = a[i], l = o[0], u = o[1]; + n[this.evalIndexedStringToString(l)] = this.evalIndexedObject(u); + } + return n; + }, t.prototype.evalIndexedStringToObject = function(r) { + return r.match(/^{{\d+}}$/) ? this.evalIndexedSnippet(r) : this.evalIndexedStringToString(r); + }, t.prototype.evalIndexedStringToString = function(r) { + var n = this; + return r.replace(/({{\d+}})|(\\{\\{\d+\\}\\})/g, function(i) { + return n.evalIndexedSnippet(i) + ""; + }); + }, t.prototype.evalIndexedSnippet = function(r) { + var n = parseInt(r.startsWith("{{") ? r.slice(2, -2) : r.slice(4, -4)); + if (n >= 0 && n < this.segments.length) { + var i = this.segments[n]; + if (nR(i)) + return this.evalDynamicSegment(i); + } + return r; + }, t; + }(zpe) +); +function nUe(e, t, r, n) { + try { + return new Zg(function(i, a, o) { + return a === void 0 && (a = !1), o === void 0 && (o = "function"), Vpe(e.startsWith("return") ? e + ` +` : "return ".concat(n ? "async " : "", "function(){'use strict'; ").concat(e, ` +}()`), i ? si(si({}, t), i) : t, r, { disableLimit: a, scope: o }, n); + }); + } catch (i) { + return new Zg(function() { + }, W6(i)); + } +} +function iUe(e, t, r) { + if (t) + switch (t) { + case "JSON": + return function(n) { + return tUe(e, n); + }; + case "Function": + return function(n) { + return nUe(e, n, r); + }; + } + return function(n) { + return eUe(e, n); + }; +} +var Nre = "isFetching", Lre = "latestEndTime", aUe = "triggerType"; +(function(e) { + Tc(t, e); + function t(r, n) { + var i = this, a; + return i = e.call(this) || this, i.unevaledValue = r, i.options = n, i.type = "input", i.directDepends = /* @__PURE__ */ new Map(), i.codeType = n == null ? void 0 : n.codeType, i.evalWithMethods = (a = n == null ? void 0 : n.evalWithMethods) !== null && a !== void 0 ? a : !0, i; + } + return t.prototype.convertedValue = function() { + return this.codeType === "Function" ? "{{function(){".concat(this.unevaledValue, "}}}") : this.unevaledValue; + }, t.prototype.filterNodes = function(r) { + if (this.evalCache.inFilterNodes) + return /* @__PURE__ */ new Map(); + this.evalCache.inFilterNodes = !0; + try { + var n = this.filterDirectDepends(r), i = aL(/* @__PURE__ */ new Map(), n); + n.forEach(function(o, l) { + aL(i, l.filterNodes(r)); + }); + var a = hV(this.convertedValue(), r, 1); + return a.forEach(function(o, l) { + if (oL(l)) + for (var u = function(v) { + var y = l.children[v]; + y && H6(i, y, Array.from(o).map(function(C) { + return C + "." + v; + })); + }, d = 0, f = [Nre, Lre]; d < f.length; d++) { + var g = f[d]; + u(g); + } + }), i; + } finally { + this.evalCache.inFilterNodes = !1; + } + }, t.prototype.filterDirectDepends = function(r) { + return hV(this.convertedValue(), r); + }, t.prototype.justEval = function(r, n) { + if (this.evalCache.inEval) + return this.evalCache.cyclic = !0, new Zg(""); + this.evalCache.inEval = !0; + try { + var i = this.filterDirectDepends(r); + this.directDepends = i; + var a = VBe(i), o = iUe(this.unevaledValue, this.codeType, this.evalWithMethods ? n : {}), l = Ope(aF(a), o), u = l.evaluate(r); + return this.evalCache.cyclic && (u = new Zg(u.value, (u.msg ? u.msg + ` +` : "") + $Be(this), oUe(u.extra, r))), u; + } finally { + this.evalCache.inEval = !1; + } + }, t.prototype.getChildren = function() { + return this.directDepends ? Array.from(this.directDepends.keys()) : []; + }, t.prototype.dependValues = function() { + var r = {}; + return this.directDepends.forEach(function(n, i) { + i instanceof iv && n.forEach(function(a) { + r[a] = i.evalCache.value; + }); + }), r; + }, t.prototype.fetchInfo = function(r, n) { + if (this.evalCache.inIsFetching) + return { + isFetching: !1, + ready: !0 + }; + this.evalCache.inIsFetching = !0; + try { + var i = hV(this.convertedValue(), r, 1), a = !1, o = !0; + i.forEach(function(u, d) { + var f = d.evaluate(r); + n != null && n.ignoreManualDepReadyStatus && $lodash.has(f, aUe) && f.triggerType === "manual" || ($lodash.has(f, Nre) && (a = a || f.isFetching === !0), $lodash.has(f, Lre) && (o = o && f.latestEndTime > 0)); + }); + var l = this.filterNodes(r); + return l.forEach(function(u, d) { + var f = d.fetchInfo(r, n); + a = a || f.isFetching, o = o && f.ready; + }), { + isFetching: a, + ready: o + }; + } finally { + this.evalCache.inIsFetching = !1; + } + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), mc([ + Zc() + ], t.prototype, "filterDirectDepends", null), mc([ + Zc() + ], t.prototype, "fetchInfo", null), t; +})(iv); +function oUe(e, t) { + var r; + return (r = e == null ? void 0 : e.segments) === null || r === void 0 || r.forEach(function(n) { + n.success && (n.success = !HBe(n.value, t)); + }), e; +} +(function(e) { + Tc(t, e); + function t(r, n) { + var i = e.call(this) || this; + return i.child = r, i.options = n, i.type = "fetchCheck", i; + } + return t.prototype.filterNodes = function(r) { + return this.child.filterNodes(r); + }, t.prototype.justEval = function(r) { + return this.fetchInfo(r); + }, t.prototype.getChildren = function() { + return [this.child]; + }, t.prototype.dependValues = function() { + return this.child.dependValues(); + }, t.prototype.fetchInfo = function(r) { + return this.child.fetchInfo(r, this.options); + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), mc([ + Zc() + ], t.prototype, "fetchInfo", null), t; +})(iv); +const SA = typeof performance == "object" && performance && typeof performance.now == "function" ? performance : Date, sUe = typeof AbortController == "function", sL = sUe ? AbortController : class { + constructor() { + this.signal = new Hpe(); + } + abort(t = new Error("This operation was aborted")) { + this.signal.reason = this.signal.reason || t, this.signal.aborted = !0, this.signal.dispatchEvent({ + type: "abort", + target: this.signal + }); + } +}, lUe = typeof AbortSignal == "function", cUe = typeof sL.AbortSignal == "function", Hpe = lUe ? AbortSignal : cUe ? sL.AbortController : class { + constructor() { + this.reason = void 0, this.aborted = !1, this._listeners = []; + } + dispatchEvent(t) { + t.type === "abort" && (this.aborted = !0, this.onabort(t), this._listeners.forEach((r) => r(t), this)); + } + onabort() { + } + addEventListener(t, r) { + t === "abort" && this._listeners.push(r); + } + removeEventListener(t, r) { + t === "abort" && (this._listeners = this._listeners.filter((n) => n !== r)); + } +}, G6 = /* @__PURE__ */ new Set(), dV = (e, t) => { + const r = `LRU_CACHE_OPTION_${e}`; + sF(r) && Y6(r, `${e} option`, `options.${t}`, lE); +}, fV = (e, t) => { + const r = `LRU_CACHE_METHOD_${e}`; + if (sF(r)) { + const { prototype: n } = lE, { get: i } = Object.getOwnPropertyDescriptor(n, e); + Y6(r, `${e} method`, `cache.${t}()`, i); + } +}, uUe = (e, t) => { + const r = `LRU_CACHE_PROPERTY_${e}`; + if (sF(r)) { + const { prototype: n } = lE, { get: i } = Object.getOwnPropertyDescriptor(n, e); + Y6(r, `${e} property`, `cache.${t}`, i); + } +}, Wpe = (...e) => { + typeof process == "object" && process && typeof process.emitWarning == "function" ? process.emitWarning(...e) : console.error(...e); +}, sF = (e) => !G6.has(e), Y6 = (e, t, r, n) => { + G6.add(e); + const i = `The ${t} is deprecated. Please use ${r} instead.`; + Wpe(i, "DeprecationWarning", e, n); +}, U_ = (e) => e && e === Math.floor(e) && e > 0 && isFinite(e), Gpe = (e) => U_(e) ? e <= Math.pow(2, 8) ? Uint8Array : e <= Math.pow(2, 16) ? Uint16Array : e <= Math.pow(2, 32) ? Uint32Array : e <= Number.MAX_SAFE_INTEGER ? vN : null : null; +class vN extends Array { + constructor(t) { + super(t), this.fill(0); + } +} +let hUe = class { + constructor(t) { + if (t === 0) + return []; + const r = Gpe(t); + this.heap = new r(t), this.length = 0; + } + push(t) { + this.heap[this.length++] = t; + } + pop() { + return this.heap[--this.length]; + } +}; +class lE { + constructor(t = {}) { + const { + max: r = 0, + ttl: n, + ttlResolution: i = 1, + ttlAutopurge: a, + updateAgeOnGet: o, + updateAgeOnHas: l, + allowStale: u, + dispose: d, + disposeAfter: f, + noDisposeOnSet: g, + noUpdateTTL: v, + maxSize: y = 0, + maxEntrySize: C = 0, + sizeCalculation: A, + fetchMethod: S, + fetchContext: _, + noDeleteOnFetchRejection: E, + noDeleteOnStaleGet: I, + allowStaleOnFetchRejection: w, + allowStaleOnFetchAbort: x, + ignoreFetchAbort: b + } = t, { length: R, maxAge: M, stale: O } = t instanceof lE ? {} : t; + if (r !== 0 && !U_(r)) + throw new TypeError("max option must be a nonnegative integer"); + const P = r ? Gpe(r) : Array; + if (!P) + throw new Error("invalid max value: " + r); + if (this.max = r, this.maxSize = y, this.maxEntrySize = C || this.maxSize, this.sizeCalculation = A || R, this.sizeCalculation) { + if (!this.maxSize && !this.maxEntrySize) + throw new TypeError( + "cannot set sizeCalculation without setting maxSize or maxEntrySize" + ); + if (typeof this.sizeCalculation != "function") + throw new TypeError("sizeCalculation set to non-function"); + } + if (this.fetchMethod = S || null, this.fetchMethod && typeof this.fetchMethod != "function") + throw new TypeError( + "fetchMethod must be a function if specified" + ); + if (this.fetchContext = _, !this.fetchMethod && _ !== void 0) + throw new TypeError( + "cannot set fetchContext without fetchMethod" + ); + if (this.keyMap = /* @__PURE__ */ new Map(), this.keyList = new Array(r).fill(null), this.valList = new Array(r).fill(null), this.next = new P(r), this.prev = new P(r), this.head = 0, this.tail = 0, this.free = new hUe(r), this.initialFill = 1, this.size = 0, typeof d == "function" && (this.dispose = d), typeof f == "function" ? (this.disposeAfter = f, this.disposed = []) : (this.disposeAfter = null, this.disposed = null), this.noDisposeOnSet = !!g, this.noUpdateTTL = !!v, this.noDeleteOnFetchRejection = !!E, this.allowStaleOnFetchRejection = !!w, this.allowStaleOnFetchAbort = !!x, this.ignoreFetchAbort = !!b, this.maxEntrySize !== 0) { + if (this.maxSize !== 0 && !U_(this.maxSize)) + throw new TypeError( + "maxSize must be a positive integer if specified" + ); + if (!U_(this.maxEntrySize)) + throw new TypeError( + "maxEntrySize must be a positive integer if specified" + ); + this.initializeSizeTracking(); + } + if (this.allowStale = !!u || !!O, this.noDeleteOnStaleGet = !!I, this.updateAgeOnGet = !!o, this.updateAgeOnHas = !!l, this.ttlResolution = U_(i) || i === 0 ? i : 1, this.ttlAutopurge = !!a, this.ttl = n || M || 0, this.ttl) { + if (!U_(this.ttl)) + throw new TypeError( + "ttl must be a positive integer if specified" + ); + this.initializeTTLTracking(); + } + if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) + throw new TypeError( + "At least one of max, maxSize, or ttl is required" + ); + if (!this.ttlAutopurge && !this.max && !this.maxSize) { + const B = "LRU_CACHE_UNBOUNDED"; + sF(B) && (G6.add(B), Wpe("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.", "UnboundedCacheWarning", B, lE)); + } + O && dV("stale", "allowStale"), M && dV("maxAge", "ttl"), R && dV("length", "sizeCalculation"); + } + getRemainingTTL(t) { + return this.has(t, { updateAgeOnHas: !1 }) ? 1 / 0 : 0; + } + initializeTTLTracking() { + this.ttls = new vN(this.max), this.starts = new vN(this.max), this.setItemTTL = (n, i, a = SA.now()) => { + if (this.starts[n] = i !== 0 ? a : 0, this.ttls[n] = i, i !== 0 && this.ttlAutopurge) { + const o = setTimeout(() => { + this.isStale(n) && this.delete(this.keyList[n]); + }, i + 1); + o.unref && o.unref(); + } + }, this.updateItemAge = (n) => { + this.starts[n] = this.ttls[n] !== 0 ? SA.now() : 0; + }, this.statusTTL = (n, i) => { + n && (n.ttl = this.ttls[i], n.start = this.starts[i], n.now = t || r(), n.remainingTTL = n.now + n.ttl - n.start); + }; + let t = 0; + const r = () => { + const n = SA.now(); + if (this.ttlResolution > 0) { + t = n; + const i = setTimeout( + () => t = 0, + this.ttlResolution + ); + i.unref && i.unref(); + } + return n; + }; + this.getRemainingTTL = (n) => { + const i = this.keyMap.get(n); + return i === void 0 ? 0 : this.ttls[i] === 0 || this.starts[i] === 0 ? 1 / 0 : this.starts[i] + this.ttls[i] - (t || r()); + }, this.isStale = (n) => this.ttls[n] !== 0 && this.starts[n] !== 0 && (t || r()) - this.starts[n] > this.ttls[n]; + } + updateItemAge(t) { + } + statusTTL(t, r) { + } + setItemTTL(t, r, n) { + } + isStale(t) { + return !1; + } + initializeSizeTracking() { + this.calculatedSize = 0, this.sizes = new vN(this.max), this.removeItemSize = (t) => { + this.calculatedSize -= this.sizes[t], this.sizes[t] = 0; + }, this.requireSize = (t, r, n, i) => { + if (this.isBackgroundFetch(r)) + return 0; + if (!U_(n)) + if (i) { + if (typeof i != "function") + throw new TypeError("sizeCalculation must be a function"); + if (n = i(r, t), !U_(n)) + throw new TypeError( + "sizeCalculation return invalid (expect positive integer)" + ); + } else + throw new TypeError( + "invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set." + ); + return n; + }, this.addItemSize = (t, r, n) => { + if (this.sizes[t] = r, this.maxSize) { + const i = this.maxSize - this.sizes[t]; + for (; this.calculatedSize > i; ) + this.evict(!0); + } + this.calculatedSize += this.sizes[t], n && (n.entrySize = r, n.totalCalculatedSize = this.calculatedSize); + }; + } + removeItemSize(t) { + } + addItemSize(t, r) { + } + requireSize(t, r, n, i) { + if (n || i) + throw new TypeError( + "cannot set size without setting maxSize or maxEntrySize on cache" + ); + } + *indexes({ allowStale: t = this.allowStale } = {}) { + if (this.size) + for (let r = this.tail; !(!this.isValidIndex(r) || ((t || !this.isStale(r)) && (yield r), r === this.head)); ) + r = this.prev[r]; + } + *rindexes({ allowStale: t = this.allowStale } = {}) { + if (this.size) + for (let r = this.head; !(!this.isValidIndex(r) || ((t || !this.isStale(r)) && (yield r), r === this.tail)); ) + r = this.next[r]; + } + isValidIndex(t) { + return t !== void 0 && this.keyMap.get(this.keyList[t]) === t; + } + *entries() { + for (const t of this.indexes()) + this.valList[t] !== void 0 && this.keyList[t] !== void 0 && !this.isBackgroundFetch(this.valList[t]) && (yield [this.keyList[t], this.valList[t]]); + } + *rentries() { + for (const t of this.rindexes()) + this.valList[t] !== void 0 && this.keyList[t] !== void 0 && !this.isBackgroundFetch(this.valList[t]) && (yield [this.keyList[t], this.valList[t]]); + } + *keys() { + for (const t of this.indexes()) + this.keyList[t] !== void 0 && !this.isBackgroundFetch(this.valList[t]) && (yield this.keyList[t]); + } + *rkeys() { + for (const t of this.rindexes()) + this.keyList[t] !== void 0 && !this.isBackgroundFetch(this.valList[t]) && (yield this.keyList[t]); + } + *values() { + for (const t of this.indexes()) + this.valList[t] !== void 0 && !this.isBackgroundFetch(this.valList[t]) && (yield this.valList[t]); + } + *rvalues() { + for (const t of this.rindexes()) + this.valList[t] !== void 0 && !this.isBackgroundFetch(this.valList[t]) && (yield this.valList[t]); + } + [Symbol.iterator]() { + return this.entries(); + } + find(t, r) { + for (const n of this.indexes()) { + const i = this.valList[n], a = this.isBackgroundFetch(i) ? i.__staleWhileFetching : i; + if (a !== void 0 && t(a, this.keyList[n], this)) + return this.get(this.keyList[n], r); + } + } + forEach(t, r = this) { + for (const n of this.indexes()) { + const i = this.valList[n], a = this.isBackgroundFetch(i) ? i.__staleWhileFetching : i; + a !== void 0 && t.call(r, a, this.keyList[n], this); + } + } + rforEach(t, r = this) { + for (const n of this.rindexes()) { + const i = this.valList[n], a = this.isBackgroundFetch(i) ? i.__staleWhileFetching : i; + a !== void 0 && t.call(r, a, this.keyList[n], this); + } + } + get prune() { + return fV("prune", "purgeStale"), this.purgeStale; + } + purgeStale() { + let t = !1; + for (const r of this.rindexes({ allowStale: !0 })) + this.isStale(r) && (this.delete(this.keyList[r]), t = !0); + return t; + } + dump() { + const t = []; + for (const r of this.indexes({ allowStale: !0 })) { + const n = this.keyList[r], i = this.valList[r], a = this.isBackgroundFetch(i) ? i.__staleWhileFetching : i; + if (a === void 0) + continue; + const o = { value: a }; + if (this.ttls) { + o.ttl = this.ttls[r]; + const l = SA.now() - this.starts[r]; + o.start = Math.floor(Date.now() - l); + } + this.sizes && (o.size = this.sizes[r]), t.unshift([n, o]); + } + return t; + } + load(t) { + this.clear(); + for (const [r, n] of t) { + if (n.start) { + const i = Date.now() - n.start; + n.start = SA.now() - i; + } + this.set(r, n.value, n); + } + } + dispose(t, r, n) { + } + set(t, r, { + ttl: n = this.ttl, + start: i, + noDisposeOnSet: a = this.noDisposeOnSet, + size: o = 0, + sizeCalculation: l = this.sizeCalculation, + noUpdateTTL: u = this.noUpdateTTL, + status: d + } = {}) { + if (o = this.requireSize(t, r, o, l), this.maxEntrySize && o > this.maxEntrySize) + return d && (d.set = "miss", d.maxEntrySizeExceeded = !0), this.delete(t), this; + let f = this.size === 0 ? void 0 : this.keyMap.get(t); + if (f === void 0) + f = this.newIndex(), this.keyList[f] = t, this.valList[f] = r, this.keyMap.set(t, f), this.next[this.tail] = f, this.prev[f] = this.tail, this.tail = f, this.size++, this.addItemSize(f, o, d), d && (d.set = "add"), u = !1; + else { + this.moveToTail(f); + const g = this.valList[f]; + if (r !== g) { + if (this.isBackgroundFetch(g) ? g.__abortController.abort(new Error("replaced")) : a || (this.dispose(g, t, "set"), this.disposeAfter && this.disposed.push([g, t, "set"])), this.removeItemSize(f), this.valList[f] = r, this.addItemSize(f, o, d), d) { + d.set = "replace"; + const v = g && this.isBackgroundFetch(g) ? g.__staleWhileFetching : g; + v !== void 0 && (d.oldValue = v); + } + } else + d && (d.set = "update"); + } + if (n !== 0 && this.ttl === 0 && !this.ttls && this.initializeTTLTracking(), u || this.setItemTTL(f, n, i), this.statusTTL(d, f), this.disposeAfter) + for (; this.disposed.length; ) + this.disposeAfter(...this.disposed.shift()); + return this; + } + newIndex() { + return this.size === 0 ? this.tail : this.size === this.max && this.max !== 0 ? this.evict(!1) : this.free.length !== 0 ? this.free.pop() : this.initialFill++; + } + pop() { + if (this.size) { + const t = this.valList[this.head]; + return this.evict(!0), t; + } + } + evict(t) { + const r = this.head, n = this.keyList[r], i = this.valList[r]; + return this.isBackgroundFetch(i) ? i.__abortController.abort(new Error("evicted")) : (this.dispose(i, n, "evict"), this.disposeAfter && this.disposed.push([i, n, "evict"])), this.removeItemSize(r), t && (this.keyList[r] = null, this.valList[r] = null, this.free.push(r)), this.head = this.next[r], this.keyMap.delete(n), this.size--, r; + } + has(t, { updateAgeOnHas: r = this.updateAgeOnHas, status: n } = {}) { + const i = this.keyMap.get(t); + if (i !== void 0) + if (this.isStale(i)) + n && (n.has = "stale", this.statusTTL(n, i)); + else + return r && this.updateItemAge(i), n && (n.has = "hit"), this.statusTTL(n, i), !0; + else + n && (n.has = "miss"); + return !1; + } + // like get(), but without any LRU updating or TTL expiration + peek(t, { allowStale: r = this.allowStale } = {}) { + const n = this.keyMap.get(t); + if (n !== void 0 && (r || !this.isStale(n))) { + const i = this.valList[n]; + return this.isBackgroundFetch(i) ? i.__staleWhileFetching : i; + } + } + backgroundFetch(t, r, n, i) { + const a = r === void 0 ? void 0 : this.valList[r]; + if (this.isBackgroundFetch(a)) + return a; + const o = new sL(); + n.signal && n.signal.addEventListener( + "abort", + () => o.abort(n.signal.reason) + ); + const l = { + signal: o.signal, + options: n, + context: i + }, u = (y, C = !1) => { + const { aborted: A } = o.signal, S = n.ignoreFetchAbort && y !== void 0; + return n.status && (A && !C ? (n.status.fetchAborted = !0, n.status.fetchError = o.signal.reason, S && (n.status.fetchAbortIgnored = !0)) : n.status.fetchResolved = !0), A && !S && !C ? f(o.signal.reason) : (this.valList[r] === v && (y === void 0 ? v.__staleWhileFetching ? this.valList[r] = v.__staleWhileFetching : this.delete(t) : (n.status && (n.status.fetchUpdated = !0), this.set(t, y, l.options))), y); + }, d = (y) => (n.status && (n.status.fetchRejected = !0, n.status.fetchError = y), f(y)), f = (y) => { + const { aborted: C } = o.signal, A = C && n.allowStaleOnFetchAbort, S = A || n.allowStaleOnFetchRejection, _ = S || n.noDeleteOnFetchRejection; + if (this.valList[r] === v && (!_ || v.__staleWhileFetching === void 0 ? this.delete(t) : A || (this.valList[r] = v.__staleWhileFetching)), S) + return n.status && v.__staleWhileFetching !== void 0 && (n.status.returnedStale = !0), v.__staleWhileFetching; + if (v.__returned === v) + throw y; + }, g = (y, C) => { + this.fetchMethod(t, a, l).then((A) => y(A), C), o.signal.addEventListener("abort", () => { + (!n.ignoreFetchAbort || n.allowStaleOnFetchAbort) && (y(), n.allowStaleOnFetchAbort && (y = (A) => u(A, !0))); + }); + }; + n.status && (n.status.fetchDispatched = !0); + const v = new Promise(g).then(u, d); + return v.__abortController = o, v.__staleWhileFetching = a, v.__returned = null, r === void 0 ? (this.set(t, v, rn(br({}, l.options), { status: void 0 })), r = this.keyMap.get(t)) : this.valList[r] = v, v; + } + isBackgroundFetch(t) { + return t && typeof t == "object" && typeof t.then == "function" && Object.prototype.hasOwnProperty.call( + t, + "__staleWhileFetching" + ) && Object.prototype.hasOwnProperty.call(t, "__returned") && (t.__returned === t || t.__returned === null); + } + // this takes the union of get() and set() opts, because it does both + fetch(E) { + return ye(this, arguments, function* (t, { + // get options + allowStale: r = this.allowStale, + updateAgeOnGet: n = this.updateAgeOnGet, + noDeleteOnStaleGet: i = this.noDeleteOnStaleGet, + // set options + ttl: a = this.ttl, + noDisposeOnSet: o = this.noDisposeOnSet, + size: l = 0, + sizeCalculation: u = this.sizeCalculation, + noUpdateTTL: d = this.noUpdateTTL, + // fetch exclusive options + noDeleteOnFetchRejection: f = this.noDeleteOnFetchRejection, + allowStaleOnFetchRejection: g = this.allowStaleOnFetchRejection, + ignoreFetchAbort: v = this.ignoreFetchAbort, + allowStaleOnFetchAbort: y = this.allowStaleOnFetchAbort, + fetchContext: C = this.fetchContext, + forceRefresh: A = !1, + status: S, + signal: _ + } = {}) { + if (!this.fetchMethod) + return S && (S.fetch = "get"), this.get(t, { + allowStale: r, + updateAgeOnGet: n, + noDeleteOnStaleGet: i, + status: S + }); + const I = { + allowStale: r, + updateAgeOnGet: n, + noDeleteOnStaleGet: i, + ttl: a, + noDisposeOnSet: o, + size: l, + sizeCalculation: u, + noUpdateTTL: d, + noDeleteOnFetchRejection: f, + allowStaleOnFetchRejection: g, + allowStaleOnFetchAbort: y, + ignoreFetchAbort: v, + status: S, + signal: _ + }; + let w = this.keyMap.get(t); + if (w === void 0) { + S && (S.fetch = "miss"); + const x = this.backgroundFetch(t, w, I, C); + return x.__returned = x; + } else { + const x = this.valList[w]; + if (this.isBackgroundFetch(x)) { + const P = r && x.__staleWhileFetching !== void 0; + return S && (S.fetch = "inflight", P && (S.returnedStale = !0)), P ? x.__staleWhileFetching : x.__returned = x; + } + const b = this.isStale(w); + if (!A && !b) + return S && (S.fetch = "hit"), this.moveToTail(w), n && this.updateItemAge(w), this.statusTTL(S, w), x; + const R = this.backgroundFetch(t, w, I, C), M = R.__staleWhileFetching !== void 0, O = M && r; + return S && (S.fetch = M && b ? "stale" : "refresh", O && b && (S.returnedStale = !0)), O ? R.__staleWhileFetching : R.__returned = R; + } + }); + } + get(t, { + allowStale: r = this.allowStale, + updateAgeOnGet: n = this.updateAgeOnGet, + noDeleteOnStaleGet: i = this.noDeleteOnStaleGet, + status: a + } = {}) { + const o = this.keyMap.get(t); + if (o !== void 0) { + const l = this.valList[o], u = this.isBackgroundFetch(l); + return this.statusTTL(a, o), this.isStale(o) ? (a && (a.get = "stale"), u ? (a && (a.returnedStale = r && l.__staleWhileFetching !== void 0), r ? l.__staleWhileFetching : void 0) : (i || this.delete(t), a && (a.returnedStale = r), r ? l : void 0)) : (a && (a.get = "hit"), u ? l.__staleWhileFetching : (this.moveToTail(o), n && this.updateItemAge(o), l)); + } else + a && (a.get = "miss"); + } + connect(t, r) { + this.prev[r] = t, this.next[t] = r; + } + moveToTail(t) { + t !== this.tail && (t === this.head ? this.head = this.next[t] : this.connect(this.prev[t], this.next[t]), this.connect(this.tail, t), this.tail = t); + } + get del() { + return fV("del", "delete"), this.delete; + } + delete(t) { + let r = !1; + if (this.size !== 0) { + const n = this.keyMap.get(t); + if (n !== void 0) + if (r = !0, this.size === 1) + this.clear(); + else { + this.removeItemSize(n); + const i = this.valList[n]; + this.isBackgroundFetch(i) ? i.__abortController.abort(new Error("deleted")) : (this.dispose(i, t, "delete"), this.disposeAfter && this.disposed.push([i, t, "delete"])), this.keyMap.delete(t), this.keyList[n] = null, this.valList[n] = null, n === this.tail ? this.tail = this.prev[n] : n === this.head ? this.head = this.next[n] : (this.next[this.prev[n]] = this.next[n], this.prev[this.next[n]] = this.prev[n]), this.size--, this.free.push(n); + } + } + if (this.disposed) + for (; this.disposed.length; ) + this.disposeAfter(...this.disposed.shift()); + return r; + } + clear() { + for (const t of this.rindexes({ allowStale: !0 })) { + const r = this.valList[t]; + if (this.isBackgroundFetch(r)) + r.__abortController.abort(new Error("deleted")); + else { + const n = this.keyList[t]; + this.dispose(r, n, "delete"), this.disposeAfter && this.disposed.push([r, n, "delete"]); + } + } + if (this.keyMap.clear(), this.valList.fill(null), this.keyList.fill(null), this.ttls && (this.ttls.fill(0), this.starts.fill(0)), this.sizes && this.sizes.fill(0), this.head = 0, this.tail = 0, this.initialFill = 1, this.free.length = 0, this.calculatedSize = 0, this.size = 0, this.disposed) + for (; this.disposed.length; ) + this.disposeAfter(...this.disposed.shift()); + } + get reset() { + return fV("reset", "clear"), this.clear; + } + get length() { + return uUe("length", "size"), this.size; + } + static get AbortController() { + return sL; + } + static get AbortSignal() { + return Hpe; + } +} +var dUe = lE, fUe = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r) { + var n = e.call(this) || this; + return n.value = r, n.type = "simple", n; + } + return t.prototype.filterNodes = function(r) { + return Nw.perf(this, "filterNodes", function() { + return /* @__PURE__ */ new Map(); + }); + }, t.prototype.justEval = function(r) { + return this.value; + }, t.prototype.getChildren = function() { + return []; + }, t.prototype.dependValues = function() { + return {}; + }, t.prototype.fetchInfo = function(r) { + return { + isFetching: !1, + ready: !0 + }; + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), t; + }(iv) +); +function Ype(e) { + return new fUe(e); +} +var Fre = new dUe({ max: 16384 }); +function pUe(e) { + var t = Fre.get(e); + return t === void 0 && (t = Ype(e), Fre.set(e, t)), t; +} +(function(e) { + Tc(t, e); + function t(r, n, i, a) { + var o = e.call(this) || this; + return o.delegate = r, o.moduleExposingNodes = n, o.moduleExposingMethods = i, o.inputNodes = a, o.type = "wrap", o; + } + return t.prototype.wrap = function(r, n) { + if (!this.inputNodes) + return this.moduleExposingNodes; + var i = Object.entries(this.inputNodes); + if (i.length === 0) + return this.moduleExposingNodes; + var a = {}; + return i.forEach(function(o) { + var l = o[0], u = o[1], d = typeof u == "string" ? r[u] : u; + d && (a[l] = new t(d, r, n)); + }), si(si({}, this.moduleExposingNodes), a); + }, t.prototype.filterNodes = function(r) { + return this.delegate.filterNodes(this.wrap(r, {})); + }, t.prototype.justEval = function(r, n) { + return this.delegate.evaluate(this.wrap(r, n), this.moduleExposingMethods); + }, t.prototype.fetchInfo = function(r) { + return this.delegate.fetchInfo(this.wrap(r, {})); + }, t.prototype.getChildren = function() { + return [this.delegate]; + }, t.prototype.dependValues = function() { + return {}; + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), mc([ + Zc() + ], t.prototype, "fetchInfo", null), t; +})(iv); +(function(e) { + Tc(t, e); + function t(r) { + var n = e.call(this) || this; + return n.child = r, n.type = "wrapContext", n; + } + return t.prototype.filterNodes = function(r) { + return this.child.filterNodes(r); + }, t.prototype.justEval = function(r, n) { + var i = this; + return function(a) { + var o; + return a ? (o = si({}, r), Object.entries(a).forEach(function(l) { + var u = l[0], d = l[1]; + o[u] = pUe(d); + })) : o = r, i.child.evaluate(o, n); + }; + }, t.prototype.getChildren = function() { + return [this.child]; + }, t.prototype.dependValues = function() { + return this.child.dependValues(); + }, t.prototype.fetchInfo = function(r) { + return this.child.fetchInfo(r); + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), t; +})(iv); +(function(e) { + Tc(t, e); + function t(r, n) { + var i = e.call(this) || this; + return i.child = r, i.paramNodes = n, i.type = "wrapContextV2", i; + } + return t.prototype.filterNodes = function(r) { + return this.child.filterNodes(r); + }, t.prototype.justEval = function(r, n) { + return this.child.evaluate(this.wrap(r), n); + }, t.prototype.getChildren = function() { + return [this.child]; + }, t.prototype.dependValues = function() { + return this.child.dependValues(); + }, t.prototype.fetchInfo = function(r) { + return this.child.fetchInfo(this.wrap(r)); + }, t.prototype.wrap = function(r) { + return si(si({}, r), this.paramNodes); + }, mc([ + Zc() + ], t.prototype, "filterNodes", null), mc([ + Zc() + ], t.prototype, "wrap", null), t; +})(iv); +var Gc; +(function(e) { + e.CHANGE_VALUE = "CHANGE_VALUE", e.RENAME = "RENAME", e.MULTI_CHANGE = "MULTI_CHANGE", e.DELETE_COMP = "DELETE_COMP", e.REPLACE_COMP = "REPLACE_COMP", e.ONLY_EVAL = "NEED_EVAL", e.UPDATE_NODES_V2 = "UPDATE_NODES_V2", e.EXECUTE_QUERY = "EXECUTE_QUERY", e.TRIGGER_MODULE_EVENT = "TRIGGER_MODULE_EVENT", e.ROUTE_BY_NAME = "ROUTE_BY_NAME", e.UPDATE_ACTION_CONTEXT = "UPDATE_ACTION_CONTEXT", e.CUSTOM = "CUSTOM", e.BROADCAST = "BROADCAST"; +})(Gc || (Gc = {})); +function gUe(e, t) { + return { + type: Gc.CUSTOM, + path: [], + value: e, + editDSL: t + }; +} +function vUe(e, t) { + return !Xpe(e) && mUe(e, t); +} +function mUe(e, t) { + return e.type === Gc.CUSTOM && $lodash.get(e.value, "type") === t; +} +function iR(e, t) { + return { + type: Gc.CHANGE_VALUE, + path: [], + editDSL: t, + value: e + }; +} +function yw(e, t) { + return si(si({}, t), { path: Eh([e], t.path, !0) }); +} +function Xpe(e) { + var t, r; + return ((r = (t = e == null ? void 0 : e.path) === null || t === void 0 ? void 0 : t.length) !== null && r !== void 0 ? r : 0) > 0; +} +function yUe(e) { + return [e.path[0], si(si({}, e), { path: e.path.slice(1) })]; +} +function uH(e, t, r) { + return yw(e, iR(t, r)); +} +function _Ue(e) { + return { + type: Gc.UPDATE_NODES_V2, + path: [], + editDSL: !1, + value: e + }; +} +var lL = "__cache__"; +function SUe(e, t, r) { + var n = r.value, i = lL + t; + r.value = function() { + for (var a = [], o = 0; o < arguments.length; o++) + a[o] = arguments[o]; + var l = this; + return l[i] || (l[i] = [n.apply(this, a)]), l[i][0]; + }; +} +function Bre(e, t) { + return e === t ? !0 : Object.keys(e).length === Object.keys(t).length && Object.keys(e).every(function(r) { + return t.hasOwnProperty(r) && e[r] === t[r]; + }); +} +function bUe(e, t) { + if (t === void 0) + return !0; + var r = Object.keys(t).findIndex(function(n) { + return e[n] !== t[n]; + }); + return r === -1; +} +function cL(e, t, r) { + var n = Object.assign(Object.create(Object.getPrototypeOf(e)), e); + return Object.keys(n).forEach(function(i) { + if (i.startsWith(lL)) { + var a = i.slice(lL.length); + (!(r != null && r.keepCacheKeys) || !(r != null && r.keepCacheKeys.includes(a))) && delete n[i]; + } + }), Object.assign(n, t); +} +var Kpe = ( + /** @class */ + function() { + function e(t) { + var r; + this.dispatch = (r = t.dispatch) !== null && r !== void 0 ? r : function(n) { + }; + } + return e.prototype.changeDispatch = function(t) { + return cL(this, { dispatch: t }, { keepCacheKeys: ["node"] }); + }, e.prototype.dispatchChangeValueAction = function(t) { + this.dispatch(this.changeValueAction(t)); + }, e.prototype.changeValueAction = function(t) { + return iR(t, !0); + }, e.prototype.node = function() { + return this.nodeWithoutCache(); + }, mc([ + SUe + ], e.prototype, "node", null), e; + }() +); +function Ure(e, t) { + return function(r) { + e && e(yw(t, r)); + }; +} +(function(e) { + Tc(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.IGNORABLE_DEFAULT_VALUE = {}, n.children = n.parseChildrenFromValue(r), n; + } + return t.prototype.reduce = function(r) { + var n = this.reduceOrUndefined(r); + return n || (console.warn("not supported action, should not happen, action:", r, ` +current comp:`, this), this); + }, t.prototype.reduceOrUndefined = function(r) { + var n, i, a; + if (r.type === Gc.DELETE_COMP && r.path.length === 1) + return this.setChildren($lodash.omit(this.children, r.path[0])); + if (r.type === Gc.REPLACE_COMP && r.path.length === 1) { + var o = r.compFactory; + if (!o) + return this; + var l = r.path[0], u = this.children[l], d = u.toJsonValue(), f = new o({ + value: d, + dispatch: Ure(this.dispatch, l) + }); + return this.setChildren(si(si({}, this.children), (n = {}, n[l] = f, n))); + } + if (Xpe(r)) { + var g = yUe(r), v = g[0], y = g[1], C = this.children[v]; + if (!C) + return oF.error("found bad action path ", v), this; + var A = C.reduce(y); + return this.setChild(v, A); + } + switch (r.type) { + case Gc.MULTI_CHANGE: { + var S = r.changes, _ = $lodash.omitBy(this.children, function(b, R) { + var M = S[R]; + return M && M.type === Gc.DELETE_COMP && M.path.length === 0; + }); + return _ = $lodash.mapValues(_, function(b, R) { + var M = S[R]; + return M ? b.reduce(M) : b; + }), this.setChildren(_); + } + case Gc.UPDATE_NODES_V2: { + var E = r.value; + if (E === void 0) + return this; + var I = lL + "REDUCE_UPDATE_NODE"; + if (this[I] === E) + return this; + var w = $lodash.mapValues(this.children, function(b, R) { + return E.hasOwnProperty(R) ? b.reduce(_Ue(E[R])) : b; + }), x = (a = this.extraNode()) === null || a === void 0 ? void 0 : a.updateNodeFields(E); + return Bre(w, this.children) && bUe(this, x) ? this : cL(this, si((i = { children: w }, i[I] = E, i), x), { keepCacheKeys: ["node"] }); + } + case Gc.CHANGE_VALUE: + return this.setChildren(this.parseChildrenFromValue({ + dispatch: this.dispatch, + value: r.value + })); + case Gc.BROADCAST: + return this.setChildren($lodash.mapValues(this.children, function(b) { + return b.reduce(r); + })); + case Gc.ONLY_EVAL: + return this; + } + }, t.prototype.setChild = function(r, n) { + var i; + return this.children[r] === n ? this : this.setChildren(si(si({}, this.children), (i = {}, i[r] = n, i))); + }, t.prototype.setChildren = function(r, n) { + return Bre(r, this.children) ? this : cL(this, { children: r }, n); + }, t.prototype.extraNode = function() { + }, t.prototype.childrenNode = function() { + var r = this, n = {}; + return Object.keys(this.children).forEach(function(i) { + var a = r.children[i].node(); + a !== void 0 && (n[i] = a); + }), n; + }, t.prototype.nodeWithoutCache = function() { + var r; + return aF(si(si({}, this.childrenNode()), (r = this.extraNode()) === null || r === void 0 ? void 0 : r.node)); + }, t.prototype.changeDispatch = function(r) { + var n = $lodash.mapValues(this.children, function(i, a) { + return i.changeDispatch(Ure(r, a)); + }); + return e.prototype.changeDispatch.call(this, r).setChildren(n, { keepCacheKeys: ["node"] }); + }, t.prototype.ignoreChildDefaultValue = function() { + return !1; + }, t.prototype.toJsonValue = function() { + var r = this, n = {}, i = this.ignoreChildDefaultValue(); + return Object.keys(this.children).forEach(function(a) { + var o = r.children[a]; + if (!o.hasOwnProperty("NO_PERSISTENCE")) { + var l = o.toJsonValue(); + i && $lodash.isEqual(l, o.IGNORABLE_DEFAULT_VALUE) || (n[a] = l); + } + }), n; + }, t.prototype.autoHeight = function() { + return !0; + }, t.prototype.changeChildAction = function(r, n) { + return yw(r, this.children[r].changeValueAction(n)); + }, t; +})(Kpe); +var EUe = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r) { + var n = this, i; + return n = e.call(this, r) || this, n.value = (i = n.oldValueToNew(r.value)) !== null && i !== void 0 ? i : n.getDefaultValue(), n; + } + return t.prototype.oldValueToNew = function(r) { + return r; + }, t.prototype.reduce = function(r) { + return r.type === Gc.CHANGE_VALUE ? this.value === r.value ? this : cL(this, { value: r.value }) : this; + }, t.prototype.nodeWithoutCache = function() { + return Ype(this.value); + }, t.prototype.exposingNode = function() { + return this.node(); + }, t.prototype.toJsonValue = function() { + return this.value; + }, t; + }(Kpe) +); +(function(e) { + Tc(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.getView = function() { + return this.value; + }, t; +})(EUe); +var hH = {}, CUe = { + get exports() { + return hH; + }, + set exports(e) { + hH = e; + } +}, yT = {}; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +var pV, jre; +function Zpe() { + if (jre) + return pV; + jre = 1; + var e = Object.getOwnPropertySymbols, t = Object.prototype.hasOwnProperty, r = Object.prototype.propertyIsEnumerable; + function n(a) { + if (a == null) + throw new TypeError("Object.assign cannot be called with null or undefined"); + return Object(a); + } + function i() { + try { + if (!Object.assign) + return !1; + var a = new String("abc"); + if (a[5] = "de", Object.getOwnPropertyNames(a)[0] === "5") + return !1; + for (var o = {}, l = 0; l < 10; l++) + o["_" + String.fromCharCode(l)] = l; + var u = Object.getOwnPropertyNames(o).map(function(f) { + return o[f]; + }); + if (u.join("") !== "0123456789") + return !1; + var d = {}; + return "abcdefghijklmnopqrst".split("").forEach(function(f) { + d[f] = f; + }), Object.keys(Object.assign({}, d)).join("") === "abcdefghijklmnopqrst"; + } catch (f) { + return !1; + } + } + return pV = i() ? Object.assign : function(a, o) { + for (var l, u = n(a), d, f = 1; f < arguments.length; f++) { + l = Object(arguments[f]); + for (var g in l) + t.call(l, g) && (u[g] = l[g]); + if (e) { + d = e(l); + for (var v = 0; v < d.length; v++) + r.call(l, d[v]) && (u[d[v]] = l[d[v]]); + } + } + return u; + }, pV; +} +var uL = {}, TUe = { + get exports() { + return uL; + }, + set exports(e) { + uL = e; + } +}, Fa = {}; +/** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var $re; +function wUe() { + if ($re) + return Fa; + $re = 1; + var e = Zpe(), t = 60103, r = 60106; + Fa.Fragment = 60107, Fa.StrictMode = 60108, Fa.Profiler = 60114; + var n = 60109, i = 60110, a = 60112; + Fa.Suspense = 60113; + var o = 60115, l = 60116; + if (typeof Symbol == "function" && Symbol.for) { + var u = Symbol.for; + t = u("react.element"), r = u("react.portal"), Fa.Fragment = u("react.fragment"), Fa.StrictMode = u("react.strict_mode"), Fa.Profiler = u("react.profiler"), n = u("react.provider"), i = u("react.context"), a = u("react.forward_ref"), Fa.Suspense = u("react.suspense"), o = u("react.memo"), l = u("react.lazy"); + } + var d = typeof Symbol == "function" && Symbol.iterator; + function f(J) { + return J === null || typeof J != "object" ? null : (J = d && J[d] || J["@@iterator"], typeof J == "function" ? J : null); + } + function g(J) { + for (var ne = "https://reactjs.org/docs/error-decoder.html?invariant=" + J, fe = 1; fe < arguments.length; fe++) + ne += "&args[]=" + encodeURIComponent(arguments[fe]); + return "Minified React error #" + J + "; visit " + ne + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; + } + var v = { isMounted: function() { + return !1; + }, enqueueForceUpdate: function() { + }, enqueueReplaceState: function() { + }, enqueueSetState: function() { + } }, y = {}; + function C(J, ne, fe) { + this.props = J, this.context = ne, this.refs = y, this.updater = fe || v; + } + C.prototype.isReactComponent = {}, C.prototype.setState = function(J, ne) { + if (typeof J != "object" && typeof J != "function" && J != null) + throw Error(g(85)); + this.updater.enqueueSetState(this, J, ne, "setState"); + }, C.prototype.forceUpdate = function(J) { + this.updater.enqueueForceUpdate(this, J, "forceUpdate"); + }; + function A() { + } + A.prototype = C.prototype; + function S(J, ne, fe) { + this.props = J, this.context = ne, this.refs = y, this.updater = fe || v; + } + var _ = S.prototype = new A(); + _.constructor = S, e(_, C.prototype), _.isPureReactComponent = !0; + var E = { current: null }, I = Object.prototype.hasOwnProperty, w = { key: !0, ref: !0, __self: !0, __source: !0 }; + function x(J, ne, fe) { + var de, Te = {}, be = null, Ve = null; + if (ne != null) + for (de in ne.ref !== void 0 && (Ve = ne.ref), ne.key !== void 0 && (be = "" + ne.key), ne) + I.call(ne, de) && !w.hasOwnProperty(de) && (Te[de] = ne[de]); + var pe = arguments.length - 2; + if (pe === 1) + Te.children = fe; + else if (1 < pe) { + for (var Be = Array(pe), Ue = 0; Ue < pe; Ue++) + Be[Ue] = arguments[Ue + 2]; + Te.children = Be; + } + if (J && J.defaultProps) + for (de in pe = J.defaultProps, pe) + Te[de] === void 0 && (Te[de] = pe[de]); + return { $$typeof: t, type: J, key: be, ref: Ve, props: Te, _owner: E.current }; + } + function b(J, ne) { + return { $$typeof: t, type: J.type, key: ne, ref: J.ref, props: J.props, _owner: J._owner }; + } + function R(J) { + return typeof J == "object" && J !== null && J.$$typeof === t; + } + function M(J) { + var ne = { "=": "=0", ":": "=2" }; + return "$" + J.replace(/[=:]/g, function(fe) { + return ne[fe]; + }); + } + var O = /\/+/g; + function P(J, ne) { + return typeof J == "object" && J !== null && J.key != null ? M("" + J.key) : ne.toString(36); + } + function B(J, ne, fe, de, Te) { + var be = typeof J; + (be === "undefined" || be === "boolean") && (J = null); + var Ve = !1; + if (J === null) + Ve = !0; + else + switch (be) { + case "string": + case "number": + Ve = !0; + break; + case "object": + switch (J.$$typeof) { + case t: + case r: + Ve = !0; + } + } + if (Ve) + return Ve = J, Te = Te(Ve), J = de === "" ? "." + P(Ve, 0) : de, Array.isArray(Te) ? (fe = "", J != null && (fe = J.replace(O, "$&/") + "/"), B(Te, ne, fe, "", function(Ue) { + return Ue; + })) : Te != null && (R(Te) && (Te = b(Te, fe + (!Te.key || Ve && Ve.key === Te.key ? "" : ("" + Te.key).replace(O, "$&/") + "/") + J)), ne.push(Te)), 1; + if (Ve = 0, de = de === "" ? "." : de + ":", Array.isArray(J)) + for (var pe = 0; pe < J.length; pe++) { + be = J[pe]; + var Be = de + P(be, pe); + Ve += B(be, ne, fe, Be, Te); + } + else if (Be = f(J), typeof Be == "function") + for (J = Be.call(J), pe = 0; !(be = J.next()).done; ) + be = be.value, Be = de + P(be, pe++), Ve += B(be, ne, fe, Be, Te); + else if (be === "object") + throw ne = "" + J, Error(g(31, ne === "[object Object]" ? "object with keys {" + Object.keys(J).join(", ") + "}" : ne)); + return Ve; + } + function H(J, ne, fe) { + if (J == null) + return J; + var de = [], Te = 0; + return B(J, de, "", "", function(be) { + return ne.call(fe, be, Te++); + }), de; + } + function Y(J) { + if (J._status === -1) { + var ne = J._result; + ne = ne(), J._status = 0, J._result = ne, ne.then(function(fe) { + J._status === 0 && (fe = fe.default, J._status = 1, J._result = fe); + }, function(fe) { + J._status === 0 && (J._status = 2, J._result = fe); + }); + } + if (J._status === 1) + return J._result; + throw J._result; + } + var X = { current: null }; + function ee() { + var J = X.current; + if (J === null) + throw Error(g(321)); + return J; + } + var ae = { ReactCurrentDispatcher: X, ReactCurrentBatchConfig: { transition: 0 }, ReactCurrentOwner: E, IsSomeRendererActing: { current: !1 }, assign: e }; + return Fa.Children = { map: H, forEach: function(J, ne, fe) { + H(J, function() { + ne.apply(this, arguments); + }, fe); + }, count: function(J) { + var ne = 0; + return H(J, function() { + ne++; + }), ne; + }, toArray: function(J) { + return H(J, function(ne) { + return ne; + }) || []; + }, only: function(J) { + if (!R(J)) + throw Error(g(143)); + return J; + } }, Fa.Component = C, Fa.PureComponent = S, Fa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ae, Fa.cloneElement = function(J, ne, fe) { + if (J == null) + throw Error(g(267, J)); + var de = e({}, J.props), Te = J.key, be = J.ref, Ve = J._owner; + if (ne != null) { + if (ne.ref !== void 0 && (be = ne.ref, Ve = E.current), ne.key !== void 0 && (Te = "" + ne.key), J.type && J.type.defaultProps) + var pe = J.type.defaultProps; + for (Be in ne) + I.call(ne, Be) && !w.hasOwnProperty(Be) && (de[Be] = ne[Be] === void 0 && pe !== void 0 ? pe[Be] : ne[Be]); + } + var Be = arguments.length - 2; + if (Be === 1) + de.children = fe; + else if (1 < Be) { + pe = Array(Be); + for (var Ue = 0; Ue < Be; Ue++) + pe[Ue] = arguments[Ue + 2]; + de.children = pe; + } + return { + $$typeof: t, + type: J.type, + key: Te, + ref: be, + props: de, + _owner: Ve + }; + }, Fa.createContext = function(J, ne) { + return ne === void 0 && (ne = null), J = { $$typeof: i, _calculateChangedBits: ne, _currentValue: J, _currentValue2: J, _threadCount: 0, Provider: null, Consumer: null }, J.Provider = { $$typeof: n, _context: J }, J.Consumer = J; + }, Fa.createElement = x, Fa.createFactory = function(J) { + var ne = x.bind(null, J); + return ne.type = J, ne; + }, Fa.createRef = function() { + return { current: null }; + }, Fa.forwardRef = function(J) { + return { $$typeof: a, render: J }; + }, Fa.isValidElement = R, Fa.lazy = function(J) { + return { $$typeof: l, _payload: { _status: -1, _result: J }, _init: Y }; + }, Fa.memo = function(J, ne) { + return { $$typeof: o, type: J, compare: ne === void 0 ? null : ne }; + }, Fa.useCallback = function(J, ne) { + return ee().useCallback(J, ne); + }, Fa.useContext = function(J, ne) { + return ee().useContext(J, ne); + }, Fa.useDebugValue = function() { + }, Fa.useEffect = function(J, ne) { + return ee().useEffect(J, ne); + }, Fa.useImperativeHandle = function(J, ne, fe) { + return ee().useImperativeHandle(J, ne, fe); + }, Fa.useLayoutEffect = function(J, ne) { + return ee().useLayoutEffect(J, ne); + }, Fa.useMemo = function(J, ne) { + return ee().useMemo(J, ne); + }, Fa.useReducer = function(J, ne, fe) { + return ee().useReducer(J, ne, fe); + }, Fa.useRef = function(J) { + return ee().useRef(J); + }, Fa.useState = function(J) { + return ee().useState(J); + }, Fa.version = "17.0.2", Fa; +} +(function(e) { + e.exports = wUe(); +})(TUe); +/** @license React v17.0.2 + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var Vre; +function IUe() { + if (Vre) + return yT; + Vre = 1, Zpe(); + var e = uL, t = 60103; + if (yT.Fragment = 60107, typeof Symbol == "function" && Symbol.for) { + var r = Symbol.for; + t = r("react.element"), yT.Fragment = r("react.fragment"); + } + var n = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, i = Object.prototype.hasOwnProperty, a = { key: !0, ref: !0, __self: !0, __source: !0 }; + function o(l, u, d) { + var f, g = {}, v = null, y = null; + d !== void 0 && (v = "" + d), u.key !== void 0 && (v = "" + u.key), u.ref !== void 0 && (y = u.ref); + for (f in u) + i.call(u, f) && !a.hasOwnProperty(f) && (g[f] = u[f]); + if (l && l.defaultProps) + for (f in u = l.defaultProps, u) + g[f] === void 0 && (g[f] = u[f]); + return { $$typeof: t, type: l, key: v, ref: y, props: g, _owner: n.current }; + } + return yT.jsx = o, yT.jsxs = o, yT; +} +(function(e) { + e.exports = IUe(); +})(CUe); +var xUe = {}, AUe = {}, qpe = /* @__PURE__ */ Object.freeze({ + __proto__: null, + en: xUe, + zh: AUe +}), Oa; +(function(e) { + e[e.EXPECT_ARGUMENT_CLOSING_BRACE = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE", e[e.EMPTY_ARGUMENT = 2] = "EMPTY_ARGUMENT", e[e.MALFORMED_ARGUMENT = 3] = "MALFORMED_ARGUMENT", e[e.EXPECT_ARGUMENT_TYPE = 4] = "EXPECT_ARGUMENT_TYPE", e[e.INVALID_ARGUMENT_TYPE = 5] = "INVALID_ARGUMENT_TYPE", e[e.EXPECT_ARGUMENT_STYLE = 6] = "EXPECT_ARGUMENT_STYLE", e[e.INVALID_NUMBER_SKELETON = 7] = "INVALID_NUMBER_SKELETON", e[e.INVALID_DATE_TIME_SKELETON = 8] = "INVALID_DATE_TIME_SKELETON", e[e.EXPECT_NUMBER_SKELETON = 9] = "EXPECT_NUMBER_SKELETON", e[e.EXPECT_DATE_TIME_SKELETON = 10] = "EXPECT_DATE_TIME_SKELETON", e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE = 11] = "UNCLOSED_QUOTE_IN_ARGUMENT_STYLE", e[e.EXPECT_SELECT_ARGUMENT_OPTIONS = 12] = "EXPECT_SELECT_ARGUMENT_OPTIONS", e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE = 13] = "EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE", e[e.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE = 14] = "INVALID_PLURAL_ARGUMENT_OFFSET_VALUE", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR = 15] = "EXPECT_SELECT_ARGUMENT_SELECTOR", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR = 16] = "EXPECT_PLURAL_ARGUMENT_SELECTOR", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT = 17] = "EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT = 18] = "EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT", e[e.INVALID_PLURAL_ARGUMENT_SELECTOR = 19] = "INVALID_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR = 20] = "DUPLICATE_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR = 21] = "DUPLICATE_SELECT_ARGUMENT_SELECTOR", e[e.MISSING_OTHER_CLAUSE = 22] = "MISSING_OTHER_CLAUSE", e[e.INVALID_TAG = 23] = "INVALID_TAG", e[e.INVALID_TAG_NAME = 25] = "INVALID_TAG_NAME", e[e.UNMATCHED_CLOSING_TAG = 26] = "UNMATCHED_CLOSING_TAG", e[e.UNCLOSED_TAG = 27] = "UNCLOSED_TAG"; +})(Oa || (Oa = {})); +var ws; +(function(e) { + e[e.literal = 0] = "literal", e[e.argument = 1] = "argument", e[e.number = 2] = "number", e[e.date = 3] = "date", e[e.time = 4] = "time", e[e.select = 5] = "select", e[e.plural = 6] = "plural", e[e.pound = 7] = "pound", e[e.tag = 8] = "tag"; +})(ws || (ws = {})); +var Lw; +(function(e) { + e[e.number = 0] = "number", e[e.dateTime = 1] = "dateTime"; +})(Lw || (Lw = {})); +function zre(e) { + return e.type === ws.literal; +} +function RUe(e) { + return e.type === ws.argument; +} +function Jpe(e) { + return e.type === ws.number; +} +function Qpe(e) { + return e.type === ws.date; +} +function ege(e) { + return e.type === ws.time; +} +function tge(e) { + return e.type === ws.select; +} +function rge(e) { + return e.type === ws.plural; +} +function DUe(e) { + return e.type === ws.pound; +} +function nge(e) { + return e.type === ws.tag; +} +function ige(e) { + return !!(e && typeof e == "object" && e.type === Lw.number); +} +function dH(e) { + return !!(e && typeof e == "object" && e.type === Lw.dateTime); +} +var age = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/, OUe = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g; +function MUe(e) { + var t = {}; + return e.replace(OUe, function(r) { + var n = r.length; + switch (r[0]) { + case "G": + t.era = n === 4 ? "long" : n === 5 ? "narrow" : "short"; + break; + case "y": + t.year = n === 2 ? "2-digit" : "numeric"; + break; + case "Y": + case "u": + case "U": + case "r": + throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead"); + case "q": + case "Q": + throw new RangeError("`q/Q` (quarter) patterns are not supported"); + case "M": + case "L": + t.month = ["numeric", "2-digit", "short", "long", "narrow"][n - 1]; + break; + case "w": + case "W": + throw new RangeError("`w/W` (week) patterns are not supported"); + case "d": + t.day = ["numeric", "2-digit"][n - 1]; + break; + case "D": + case "F": + case "g": + throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead"); + case "E": + t.weekday = n === 4 ? "long" : n === 5 ? "narrow" : "short"; + break; + case "e": + if (n < 4) + throw new RangeError("`e..eee` (weekday) patterns are not supported"); + t.weekday = ["short", "long", "narrow", "short"][n - 4]; + break; + case "c": + if (n < 4) + throw new RangeError("`c..ccc` (weekday) patterns are not supported"); + t.weekday = ["short", "long", "narrow", "short"][n - 4]; + break; + case "a": + t.hour12 = !0; + break; + case "b": + case "B": + throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead"); + case "h": + t.hourCycle = "h12", t.hour = ["numeric", "2-digit"][n - 1]; + break; + case "H": + t.hourCycle = "h23", t.hour = ["numeric", "2-digit"][n - 1]; + break; + case "K": + t.hourCycle = "h11", t.hour = ["numeric", "2-digit"][n - 1]; + break; + case "k": + t.hourCycle = "h24", t.hour = ["numeric", "2-digit"][n - 1]; + break; + case "j": + case "J": + case "C": + throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead"); + case "m": + t.minute = ["numeric", "2-digit"][n - 1]; + break; + case "s": + t.second = ["numeric", "2-digit"][n - 1]; + break; + case "S": + case "A": + throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead"); + case "z": + t.timeZoneName = n < 4 ? "short" : "long"; + break; + case "Z": + case "O": + case "v": + case "V": + case "X": + case "x": + throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead"); + } + return ""; + }), t; +} +var kUe = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i; +function PUe(e) { + if (e.length === 0) + throw new Error("Number skeleton cannot be empty"); + for (var t = e.split(kUe).filter(function(v) { + return v.length > 0; + }), r = [], n = 0, i = t; n < i.length; n++) { + var a = i[n], o = a.split("/"); + if (o.length === 0) + throw new Error("Invalid number skeleton"); + for (var l = o[0], u = o.slice(1), d = 0, f = u; d < f.length; d++) { + var g = f[d]; + if (g.length === 0) + throw new Error("Invalid number skeleton"); + } + r.push({ stem: l, options: u }); + } + return r; +} +function NUe(e) { + return e.replace(/^(.*?)-/, ""); +} +var Hre = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g, oge = /^(@+)?(\+|#+)?[rs]?$/g, LUe = /(\*)(0+)|(#+)(0+)|(0+)/g, sge = /^(0+)$/; +function Wre(e) { + var t = {}; + return e[e.length - 1] === "r" ? t.roundingPriority = "morePrecision" : e[e.length - 1] === "s" && (t.roundingPriority = "lessPrecision"), e.replace(oge, function(r, n, i) { + return typeof i != "string" ? (t.minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length) : i === "+" ? t.minimumSignificantDigits = n.length : n[0] === "#" ? t.maximumSignificantDigits = n.length : (t.minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length + (typeof i == "string" ? i.length : 0)), ""; + }), t; +} +function lge(e) { + switch (e) { + case "sign-auto": + return { + signDisplay: "auto" + }; + case "sign-accounting": + case "()": + return { + currencySign: "accounting" + }; + case "sign-always": + case "+!": + return { + signDisplay: "always" + }; + case "sign-accounting-always": + case "()!": + return { + signDisplay: "always", + currencySign: "accounting" + }; + case "sign-except-zero": + case "+?": + return { + signDisplay: "exceptZero" + }; + case "sign-accounting-except-zero": + case "()?": + return { + signDisplay: "exceptZero", + currencySign: "accounting" + }; + case "sign-never": + case "+_": + return { + signDisplay: "never" + }; + } +} +function FUe(e) { + var t; + if (e[0] === "E" && e[1] === "E" ? (t = { + notation: "engineering" + }, e = e.slice(2)) : e[0] === "E" && (t = { + notation: "scientific" + }, e = e.slice(1)), t) { + var r = e.slice(0, 2); + if (r === "+!" ? (t.signDisplay = "always", e = e.slice(2)) : r === "+?" && (t.signDisplay = "exceptZero", e = e.slice(2)), !sge.test(e)) + throw new Error("Malformed concise eng/scientific notation"); + t.minimumIntegerDigits = e.length; + } + return t; +} +function Gre(e) { + var t = {}, r = lge(e); + return r || t; +} +function BUe(e) { + for (var t = {}, r = 0, n = e; r < n.length; r++) { + var i = n[r]; + switch (i.stem) { + case "percent": + case "%": + t.style = "percent"; + continue; + case "%x100": + t.style = "percent", t.scale = 100; + continue; + case "currency": + t.style = "currency", t.currency = i.options[0]; + continue; + case "group-off": + case ",_": + t.useGrouping = !1; + continue; + case "precision-integer": + case ".": + t.maximumFractionDigits = 0; + continue; + case "measure-unit": + case "unit": + t.style = "unit", t.unit = NUe(i.options[0]); + continue; + case "compact-short": + case "K": + t.notation = "compact", t.compactDisplay = "short"; + continue; + case "compact-long": + case "KK": + t.notation = "compact", t.compactDisplay = "long"; + continue; + case "scientific": + t = si(si(si({}, t), { notation: "scientific" }), i.options.reduce(function(u, d) { + return si(si({}, u), Gre(d)); + }, {})); + continue; + case "engineering": + t = si(si(si({}, t), { notation: "engineering" }), i.options.reduce(function(u, d) { + return si(si({}, u), Gre(d)); + }, {})); + continue; + case "notation-simple": + t.notation = "standard"; + continue; + case "unit-width-narrow": + t.currencyDisplay = "narrowSymbol", t.unitDisplay = "narrow"; + continue; + case "unit-width-short": + t.currencyDisplay = "code", t.unitDisplay = "short"; + continue; + case "unit-width-full-name": + t.currencyDisplay = "name", t.unitDisplay = "long"; + continue; + case "unit-width-iso-code": + t.currencyDisplay = "symbol"; + continue; + case "scale": + t.scale = parseFloat(i.options[0]); + continue; + case "integer-width": + if (i.options.length > 1) + throw new RangeError("integer-width stems only accept a single optional option"); + i.options[0].replace(LUe, function(u, d, f, g, v, y) { + if (d) + t.minimumIntegerDigits = f.length; + else { + if (g && v) + throw new Error("We currently do not support maximum integer digits"); + if (y) + throw new Error("We currently do not support exact integer digits"); + } + return ""; + }); + continue; + } + if (sge.test(i.stem)) { + t.minimumIntegerDigits = i.stem.length; + continue; + } + if (Hre.test(i.stem)) { + if (i.options.length > 1) + throw new RangeError("Fraction-precision stems only accept a single optional option"); + i.stem.replace(Hre, function(u, d, f, g, v, y) { + return f === "*" ? t.minimumFractionDigits = d.length : g && g[0] === "#" ? t.maximumFractionDigits = g.length : v && y ? (t.minimumFractionDigits = v.length, t.maximumFractionDigits = v.length + y.length) : (t.minimumFractionDigits = d.length, t.maximumFractionDigits = d.length), ""; + }); + var a = i.options[0]; + a === "w" ? t = si(si({}, t), { trailingZeroDisplay: "stripIfInteger" }) : a && (t = si(si({}, t), Wre(a))); + continue; + } + if (oge.test(i.stem)) { + t = si(si({}, t), Wre(i.stem)); + continue; + } + var o = lge(i.stem); + o && (t = si(si({}, t), o)); + var l = FUe(i.stem); + l && (t = si(si({}, t), l)); + } + return t; +} +var Dk = { + "001": [ + "H", + "h" + ], + AC: [ + "H", + "h", + "hb", + "hB" + ], + AD: [ + "H", + "hB" + ], + AE: [ + "h", + "hB", + "hb", + "H" + ], + AF: [ + "H", + "hb", + "hB", + "h" + ], + AG: [ + "h", + "hb", + "H", + "hB" + ], + AI: [ + "H", + "h", + "hb", + "hB" + ], + AL: [ + "h", + "H", + "hB" + ], + AM: [ + "H", + "hB" + ], + AO: [ + "H", + "hB" + ], + AR: [ + "H", + "h", + "hB", + "hb" + ], + AS: [ + "h", + "H" + ], + AT: [ + "H", + "hB" + ], + AU: [ + "h", + "hb", + "H", + "hB" + ], + AW: [ + "H", + "hB" + ], + AX: [ + "H" + ], + AZ: [ + "H", + "hB", + "h" + ], + BA: [ + "H", + "hB", + "h" + ], + BB: [ + "h", + "hb", + "H", + "hB" + ], + BD: [ + "h", + "hB", + "H" + ], + BE: [ + "H", + "hB" + ], + BF: [ + "H", + "hB" + ], + BG: [ + "H", + "hB", + "h" + ], + BH: [ + "h", + "hB", + "hb", + "H" + ], + BI: [ + "H", + "h" + ], + BJ: [ + "H", + "hB" + ], + BL: [ + "H", + "hB" + ], + BM: [ + "h", + "hb", + "H", + "hB" + ], + BN: [ + "hb", + "hB", + "h", + "H" + ], + BO: [ + "H", + "hB", + "h", + "hb" + ], + BQ: [ + "H" + ], + BR: [ + "H", + "hB" + ], + BS: [ + "h", + "hb", + "H", + "hB" + ], + BT: [ + "h", + "H" + ], + BW: [ + "H", + "h", + "hb", + "hB" + ], + BY: [ + "H", + "h" + ], + BZ: [ + "H", + "h", + "hb", + "hB" + ], + CA: [ + "h", + "hb", + "H", + "hB" + ], + CC: [ + "H", + "h", + "hb", + "hB" + ], + CD: [ + "hB", + "H" + ], + CF: [ + "H", + "h", + "hB" + ], + CG: [ + "H", + "hB" + ], + CH: [ + "H", + "hB", + "h" + ], + CI: [ + "H", + "hB" + ], + CK: [ + "H", + "h", + "hb", + "hB" + ], + CL: [ + "H", + "h", + "hB", + "hb" + ], + CM: [ + "H", + "h", + "hB" + ], + CN: [ + "H", + "hB", + "hb", + "h" + ], + CO: [ + "h", + "H", + "hB", + "hb" + ], + CP: [ + "H" + ], + CR: [ + "H", + "h", + "hB", + "hb" + ], + CU: [ + "H", + "h", + "hB", + "hb" + ], + CV: [ + "H", + "hB" + ], + CW: [ + "H", + "hB" + ], + CX: [ + "H", + "h", + "hb", + "hB" + ], + CY: [ + "h", + "H", + "hb", + "hB" + ], + CZ: [ + "H" + ], + DE: [ + "H", + "hB" + ], + DG: [ + "H", + "h", + "hb", + "hB" + ], + DJ: [ + "h", + "H" + ], + DK: [ + "H" + ], + DM: [ + "h", + "hb", + "H", + "hB" + ], + DO: [ + "h", + "H", + "hB", + "hb" + ], + DZ: [ + "h", + "hB", + "hb", + "H" + ], + EA: [ + "H", + "h", + "hB", + "hb" + ], + EC: [ + "H", + "hB", + "h", + "hb" + ], + EE: [ + "H", + "hB" + ], + EG: [ + "h", + "hB", + "hb", + "H" + ], + EH: [ + "h", + "hB", + "hb", + "H" + ], + ER: [ + "h", + "H" + ], + ES: [ + "H", + "hB", + "h", + "hb" + ], + ET: [ + "hB", + "hb", + "h", + "H" + ], + FI: [ + "H" + ], + FJ: [ + "h", + "hb", + "H", + "hB" + ], + FK: [ + "H", + "h", + "hb", + "hB" + ], + FM: [ + "h", + "hb", + "H", + "hB" + ], + FO: [ + "H", + "h" + ], + FR: [ + "H", + "hB" + ], + GA: [ + "H", + "hB" + ], + GB: [ + "H", + "h", + "hb", + "hB" + ], + GD: [ + "h", + "hb", + "H", + "hB" + ], + GE: [ + "H", + "hB", + "h" + ], + GF: [ + "H", + "hB" + ], + GG: [ + "H", + "h", + "hb", + "hB" + ], + GH: [ + "h", + "H" + ], + GI: [ + "H", + "h", + "hb", + "hB" + ], + GL: [ + "H", + "h" + ], + GM: [ + "h", + "hb", + "H", + "hB" + ], + GN: [ + "H", + "hB" + ], + GP: [ + "H", + "hB" + ], + GQ: [ + "H", + "hB", + "h", + "hb" + ], + GR: [ + "h", + "H", + "hb", + "hB" + ], + GT: [ + "H", + "h", + "hB", + "hb" + ], + GU: [ + "h", + "hb", + "H", + "hB" + ], + GW: [ + "H", + "hB" + ], + GY: [ + "h", + "hb", + "H", + "hB" + ], + HK: [ + "h", + "hB", + "hb", + "H" + ], + HN: [ + "H", + "h", + "hB", + "hb" + ], + HR: [ + "H", + "hB" + ], + HU: [ + "H", + "h" + ], + IC: [ + "H", + "h", + "hB", + "hb" + ], + ID: [ + "H" + ], + IE: [ + "H", + "h", + "hb", + "hB" + ], + IL: [ + "H", + "hB" + ], + IM: [ + "H", + "h", + "hb", + "hB" + ], + IN: [ + "h", + "H" + ], + IO: [ + "H", + "h", + "hb", + "hB" + ], + IQ: [ + "h", + "hB", + "hb", + "H" + ], + IR: [ + "hB", + "H" + ], + IS: [ + "H" + ], + IT: [ + "H", + "hB" + ], + JE: [ + "H", + "h", + "hb", + "hB" + ], + JM: [ + "h", + "hb", + "H", + "hB" + ], + JO: [ + "h", + "hB", + "hb", + "H" + ], + JP: [ + "H", + "K", + "h" + ], + KE: [ + "hB", + "hb", + "H", + "h" + ], + KG: [ + "H", + "h", + "hB", + "hb" + ], + KH: [ + "hB", + "h", + "H", + "hb" + ], + KI: [ + "h", + "hb", + "H", + "hB" + ], + KM: [ + "H", + "h", + "hB", + "hb" + ], + KN: [ + "h", + "hb", + "H", + "hB" + ], + KP: [ + "h", + "H", + "hB", + "hb" + ], + KR: [ + "h", + "H", + "hB", + "hb" + ], + KW: [ + "h", + "hB", + "hb", + "H" + ], + KY: [ + "h", + "hb", + "H", + "hB" + ], + KZ: [ + "H", + "hB" + ], + LA: [ + "H", + "hb", + "hB", + "h" + ], + LB: [ + "h", + "hB", + "hb", + "H" + ], + LC: [ + "h", + "hb", + "H", + "hB" + ], + LI: [ + "H", + "hB", + "h" + ], + LK: [ + "H", + "h", + "hB", + "hb" + ], + LR: [ + "h", + "hb", + "H", + "hB" + ], + LS: [ + "h", + "H" + ], + LT: [ + "H", + "h", + "hb", + "hB" + ], + LU: [ + "H", + "h", + "hB" + ], + LV: [ + "H", + "hB", + "hb", + "h" + ], + LY: [ + "h", + "hB", + "hb", + "H" + ], + MA: [ + "H", + "h", + "hB", + "hb" + ], + MC: [ + "H", + "hB" + ], + MD: [ + "H", + "hB" + ], + ME: [ + "H", + "hB", + "h" + ], + MF: [ + "H", + "hB" + ], + MG: [ + "H", + "h" + ], + MH: [ + "h", + "hb", + "H", + "hB" + ], + MK: [ + "H", + "h", + "hb", + "hB" + ], + ML: [ + "H" + ], + MM: [ + "hB", + "hb", + "H", + "h" + ], + MN: [ + "H", + "h", + "hb", + "hB" + ], + MO: [ + "h", + "hB", + "hb", + "H" + ], + MP: [ + "h", + "hb", + "H", + "hB" + ], + MQ: [ + "H", + "hB" + ], + MR: [ + "h", + "hB", + "hb", + "H" + ], + MS: [ + "H", + "h", + "hb", + "hB" + ], + MT: [ + "H", + "h" + ], + MU: [ + "H", + "h" + ], + MV: [ + "H", + "h" + ], + MW: [ + "h", + "hb", + "H", + "hB" + ], + MX: [ + "H", + "h", + "hB", + "hb" + ], + MY: [ + "hb", + "hB", + "h", + "H" + ], + MZ: [ + "H", + "hB" + ], + NA: [ + "h", + "H", + "hB", + "hb" + ], + NC: [ + "H", + "hB" + ], + NE: [ + "H" + ], + NF: [ + "H", + "h", + "hb", + "hB" + ], + NG: [ + "H", + "h", + "hb", + "hB" + ], + NI: [ + "H", + "h", + "hB", + "hb" + ], + NL: [ + "H", + "hB" + ], + NO: [ + "H", + "h" + ], + NP: [ + "H", + "h", + "hB" + ], + NR: [ + "H", + "h", + "hb", + "hB" + ], + NU: [ + "H", + "h", + "hb", + "hB" + ], + NZ: [ + "h", + "hb", + "H", + "hB" + ], + OM: [ + "h", + "hB", + "hb", + "H" + ], + PA: [ + "h", + "H", + "hB", + "hb" + ], + PE: [ + "H", + "hB", + "h", + "hb" + ], + PF: [ + "H", + "h", + "hB" + ], + PG: [ + "h", + "H" + ], + PH: [ + "h", + "hB", + "hb", + "H" + ], + PK: [ + "h", + "hB", + "H" + ], + PL: [ + "H", + "h" + ], + PM: [ + "H", + "hB" + ], + PN: [ + "H", + "h", + "hb", + "hB" + ], + PR: [ + "h", + "H", + "hB", + "hb" + ], + PS: [ + "h", + "hB", + "hb", + "H" + ], + PT: [ + "H", + "hB" + ], + PW: [ + "h", + "H" + ], + PY: [ + "H", + "h", + "hB", + "hb" + ], + QA: [ + "h", + "hB", + "hb", + "H" + ], + RE: [ + "H", + "hB" + ], + RO: [ + "H", + "hB" + ], + RS: [ + "H", + "hB", + "h" + ], + RU: [ + "H" + ], + RW: [ + "H", + "h" + ], + SA: [ + "h", + "hB", + "hb", + "H" + ], + SB: [ + "h", + "hb", + "H", + "hB" + ], + SC: [ + "H", + "h", + "hB" + ], + SD: [ + "h", + "hB", + "hb", + "H" + ], + SE: [ + "H" + ], + SG: [ + "h", + "hb", + "H", + "hB" + ], + SH: [ + "H", + "h", + "hb", + "hB" + ], + SI: [ + "H", + "hB" + ], + SJ: [ + "H" + ], + SK: [ + "H" + ], + SL: [ + "h", + "hb", + "H", + "hB" + ], + SM: [ + "H", + "h", + "hB" + ], + SN: [ + "H", + "h", + "hB" + ], + SO: [ + "h", + "H" + ], + SR: [ + "H", + "hB" + ], + SS: [ + "h", + "hb", + "H", + "hB" + ], + ST: [ + "H", + "hB" + ], + SV: [ + "H", + "h", + "hB", + "hb" + ], + SX: [ + "H", + "h", + "hb", + "hB" + ], + SY: [ + "h", + "hB", + "hb", + "H" + ], + SZ: [ + "h", + "hb", + "H", + "hB" + ], + TA: [ + "H", + "h", + "hb", + "hB" + ], + TC: [ + "h", + "hb", + "H", + "hB" + ], + TD: [ + "h", + "H", + "hB" + ], + TF: [ + "H", + "h", + "hB" + ], + TG: [ + "H", + "hB" + ], + TH: [ + "H", + "h" + ], + TJ: [ + "H", + "h" + ], + TL: [ + "H", + "hB", + "hb", + "h" + ], + TM: [ + "H", + "h" + ], + TN: [ + "h", + "hB", + "hb", + "H" + ], + TO: [ + "h", + "H" + ], + TR: [ + "H", + "hB" + ], + TT: [ + "h", + "hb", + "H", + "hB" + ], + TW: [ + "hB", + "hb", + "h", + "H" + ], + TZ: [ + "hB", + "hb", + "H", + "h" + ], + UA: [ + "H", + "hB", + "h" + ], + UG: [ + "hB", + "hb", + "H", + "h" + ], + UM: [ + "h", + "hb", + "H", + "hB" + ], + US: [ + "h", + "hb", + "H", + "hB" + ], + UY: [ + "H", + "h", + "hB", + "hb" + ], + UZ: [ + "H", + "hB", + "h" + ], + VA: [ + "H", + "h", + "hB" + ], + VC: [ + "h", + "hb", + "H", + "hB" + ], + VE: [ + "h", + "H", + "hB", + "hb" + ], + VG: [ + "h", + "hb", + "H", + "hB" + ], + VI: [ + "h", + "hb", + "H", + "hB" + ], + VN: [ + "H", + "h" + ], + VU: [ + "h", + "H" + ], + WF: [ + "H", + "hB" + ], + WS: [ + "h", + "H" + ], + XK: [ + "H", + "hB", + "h" + ], + YE: [ + "h", + "hB", + "hb", + "H" + ], + YT: [ + "H", + "hB" + ], + ZA: [ + "H", + "h", + "hb", + "hB" + ], + ZM: [ + "h", + "hb", + "H", + "hB" + ], + ZW: [ + "H", + "h" + ], + "af-ZA": [ + "H", + "h", + "hB", + "hb" + ], + "ar-001": [ + "h", + "hB", + "hb", + "H" + ], + "ca-ES": [ + "H", + "h", + "hB" + ], + "en-001": [ + "h", + "hb", + "H", + "hB" + ], + "es-BO": [ + "H", + "h", + "hB", + "hb" + ], + "es-BR": [ + "H", + "h", + "hB", + "hb" + ], + "es-EC": [ + "H", + "h", + "hB", + "hb" + ], + "es-ES": [ + "H", + "h", + "hB", + "hb" + ], + "es-GQ": [ + "H", + "h", + "hB", + "hb" + ], + "es-PE": [ + "H", + "h", + "hB", + "hb" + ], + "fr-CA": [ + "H", + "h", + "hB" + ], + "gl-ES": [ + "H", + "h", + "hB" + ], + "gu-IN": [ + "hB", + "hb", + "h", + "H" + ], + "hi-IN": [ + "hB", + "h", + "H" + ], + "it-CH": [ + "H", + "h", + "hB" + ], + "it-IT": [ + "H", + "h", + "hB" + ], + "kn-IN": [ + "hB", + "h", + "H" + ], + "ml-IN": [ + "hB", + "h", + "H" + ], + "mr-IN": [ + "hB", + "hb", + "h", + "H" + ], + "pa-IN": [ + "hB", + "hb", + "h", + "H" + ], + "ta-IN": [ + "hB", + "h", + "hb", + "H" + ], + "te-IN": [ + "hB", + "h", + "H" + ], + "zu-ZA": [ + "H", + "hB", + "hb", + "h" + ] +}; +function UUe(e, t) { + for (var r = "", n = 0; n < e.length; n++) { + var i = e.charAt(n); + if (i === "j") { + for (var a = 0; n + 1 < e.length && e.charAt(n + 1) === i; ) + a++, n++; + var o = 1 + (a & 1), l = a < 2 ? 1 : 3 + (a >> 1), u = "a", d = jUe(t); + for ((d == "H" || d == "k") && (l = 0); l-- > 0; ) + r += u; + for (; o-- > 0; ) + r = d + r; + } else + i === "J" ? r += "H" : r += i; + } + return r; +} +function jUe(e) { + var t = e.hourCycle; + if (t === void 0 && // @ts-ignore hourCycle(s) is not identified yet + e.hourCycles && // @ts-ignore + e.hourCycles.length && (t = e.hourCycles[0]), t) + switch (t) { + case "h24": + return "k"; + case "h23": + return "H"; + case "h12": + return "h"; + case "h11": + return "K"; + default: + throw new Error("Invalid hourCycle"); + } + var r = e.language, n; + r !== "root" && (n = e.maximize().region); + var i = Dk[n || ""] || Dk[r || ""] || Dk["".concat(r, "-001")] || Dk["001"]; + return i[0]; +} +var gV, $Ue = new RegExp("^".concat(age.source, "*")), VUe = new RegExp("".concat(age.source, "*$")); +function Ba(e, t) { + return { start: e, end: t }; +} +var zUe = !!String.prototype.startsWith && "_a".startsWith("a", 1), HUe = !!String.fromCodePoint, WUe = !!Object.fromEntries, GUe = !!String.prototype.codePointAt, YUe = !!String.prototype.trimStart, XUe = !!String.prototype.trimEnd, KUe = !!Number.isSafeInteger, ZUe = KUe ? Number.isSafeInteger : function(e) { + return typeof e == "number" && isFinite(e) && Math.floor(e) === e && Math.abs(e) <= 9007199254740991; +}, fH = !0; +try { + var qUe = uge("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu"); + fH = ((gV = qUe.exec("a")) === null || gV === void 0 ? void 0 : gV[0]) === "a"; +} catch (e) { + fH = !1; +} +var Yre = zUe ? ( + // Native + function(t, r, n) { + return t.startsWith(r, n); + } +) : ( + // For IE11 + function(t, r, n) { + return t.slice(n, n + r.length) === r; + } +), pH = HUe ? String.fromCodePoint : ( + // IE11 + function() { + for (var t = [], r = 0; r < arguments.length; r++) + t[r] = arguments[r]; + for (var n = "", i = t.length, a = 0, o; i > a; ) { + if (o = t[a++], o > 1114111) + throw RangeError(o + " is not a valid code point"); + n += o < 65536 ? String.fromCharCode(o) : String.fromCharCode(((o -= 65536) >> 10) + 55296, o % 1024 + 56320); + } + return n; + } +), Xre = ( + // native + WUe ? Object.fromEntries : ( + // Ponyfill + function(t) { + for (var r = {}, n = 0, i = t; n < i.length; n++) { + var a = i[n], o = a[0], l = a[1]; + r[o] = l; + } + return r; + } + ) +), cge = GUe ? ( + // Native + function(t, r) { + return t.codePointAt(r); + } +) : ( + // IE 11 + function(t, r) { + var n = t.length; + if (!(r < 0 || r >= n)) { + var i = t.charCodeAt(r), a; + return i < 55296 || i > 56319 || r + 1 === n || (a = t.charCodeAt(r + 1)) < 56320 || a > 57343 ? i : (i - 55296 << 10) + (a - 56320) + 65536; + } + } +), JUe = YUe ? ( + // Native + function(t) { + return t.trimStart(); + } +) : ( + // Ponyfill + function(t) { + return t.replace($Ue, ""); + } +), QUe = XUe ? ( + // Native + function(t) { + return t.trimEnd(); + } +) : ( + // Ponyfill + function(t) { + return t.replace(VUe, ""); + } +); +function uge(e, t) { + return new RegExp(e, t); +} +var gH; +if (fH) { + var Kre = uge("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu"); + gH = function(t, r) { + var n; + Kre.lastIndex = r; + var i = Kre.exec(t); + return (n = i[1]) !== null && n !== void 0 ? n : ""; + }; +} else + gH = function(t, r) { + for (var n = []; ; ) { + var i = cge(t, r); + if (i === void 0 || hge(i) || nje(i)) + break; + n.push(i), r += i >= 65536 ? 2 : 1; + } + return pH.apply(void 0, n); + }; +var eje = ( + /** @class */ + function() { + function e(t, r) { + r === void 0 && (r = {}), this.message = t, this.position = { offset: 0, line: 1, column: 1 }, this.ignoreTag = !!r.ignoreTag, this.locale = r.locale, this.requiresOtherClause = !!r.requiresOtherClause, this.shouldParseSkeletons = !!r.shouldParseSkeletons; + } + return e.prototype.parse = function() { + if (this.offset() !== 0) + throw Error("parser can only be used once"); + return this.parseMessage(0, "", !1); + }, e.prototype.parseMessage = function(t, r, n) { + for (var i = []; !this.isEOF(); ) { + var a = this.char(); + if (a === 123) { + var o = this.parseArgument(t, n); + if (o.err) + return o; + i.push(o.val); + } else { + if (a === 125 && t > 0) + break; + if (a === 35 && (r === "plural" || r === "selectordinal")) { + var l = this.clonePosition(); + this.bump(), i.push({ + type: ws.pound, + location: Ba(l, this.clonePosition()) + }); + } else if (a === 60 && !this.ignoreTag && this.peek() === 47) { + if (n) + break; + return this.error(Oa.UNMATCHED_CLOSING_TAG, Ba(this.clonePosition(), this.clonePosition())); + } else if (a === 60 && !this.ignoreTag && vH(this.peek() || 0)) { + var o = this.parseTag(t, r); + if (o.err) + return o; + i.push(o.val); + } else { + var o = this.parseLiteral(t, r); + if (o.err) + return o; + i.push(o.val); + } + } + } + return { val: i, err: null }; + }, e.prototype.parseTag = function(t, r) { + var n = this.clonePosition(); + this.bump(); + var i = this.parseTagName(); + if (this.bumpSpace(), this.bumpIf("/>")) + return { + val: { + type: ws.literal, + value: "<".concat(i, "/>"), + location: Ba(n, this.clonePosition()) + }, + err: null + }; + if (this.bumpIf(">")) { + var a = this.parseMessage(t + 1, r, !0); + if (a.err) + return a; + var o = a.val, l = this.clonePosition(); + if (this.bumpIf("") ? { + val: { + type: ws.tag, + value: i, + children: o, + location: Ba(n, this.clonePosition()) + }, + err: null + } : this.error(Oa.INVALID_TAG, Ba(l, this.clonePosition()))); + } else + return this.error(Oa.UNCLOSED_TAG, Ba(n, this.clonePosition())); + } else + return this.error(Oa.INVALID_TAG, Ba(n, this.clonePosition())); + }, e.prototype.parseTagName = function() { + var t = this.offset(); + for (this.bump(); !this.isEOF() && rje(this.char()); ) + this.bump(); + return this.message.slice(t, this.offset()); + }, e.prototype.parseLiteral = function(t, r) { + for (var n = this.clonePosition(), i = ""; ; ) { + var a = this.tryParseQuote(r); + if (a) { + i += a; + continue; + } + var o = this.tryParseUnquoted(t, r); + if (o) { + i += o; + continue; + } + var l = this.tryParseLeftAngleBracket(); + if (l) { + i += l; + continue; + } + break; + } + var u = Ba(n, this.clonePosition()); + return { + val: { type: ws.literal, value: i, location: u }, + err: null + }; + }, e.prototype.tryParseLeftAngleBracket = function() { + return !this.isEOF() && this.char() === 60 && (this.ignoreTag || // If at the opening tag or closing tag position, bail. + !tje(this.peek() || 0)) ? (this.bump(), "<") : null; + }, e.prototype.tryParseQuote = function(t) { + if (this.isEOF() || this.char() !== 39) + return null; + switch (this.peek()) { + case 39: + return this.bump(), this.bump(), "'"; + case 123: + case 60: + case 62: + case 125: + break; + case 35: + if (t === "plural" || t === "selectordinal") + break; + return null; + default: + return null; + } + this.bump(); + var r = [this.char()]; + for (this.bump(); !this.isEOF(); ) { + var n = this.char(); + if (n === 39) + if (this.peek() === 39) + r.push(39), this.bump(); + else { + this.bump(); + break; + } + else + r.push(n); + this.bump(); + } + return pH.apply(void 0, r); + }, e.prototype.tryParseUnquoted = function(t, r) { + if (this.isEOF()) + return null; + var n = this.char(); + return n === 60 || n === 123 || n === 35 && (r === "plural" || r === "selectordinal") || n === 125 && t > 0 ? null : (this.bump(), pH(n)); + }, e.prototype.parseArgument = function(t, r) { + var n = this.clonePosition(); + if (this.bump(), this.bumpSpace(), this.isEOF()) + return this.error(Oa.EXPECT_ARGUMENT_CLOSING_BRACE, Ba(n, this.clonePosition())); + if (this.char() === 125) + return this.bump(), this.error(Oa.EMPTY_ARGUMENT, Ba(n, this.clonePosition())); + var i = this.parseIdentifierIfPossible().value; + if (!i) + return this.error(Oa.MALFORMED_ARGUMENT, Ba(n, this.clonePosition())); + if (this.bumpSpace(), this.isEOF()) + return this.error(Oa.EXPECT_ARGUMENT_CLOSING_BRACE, Ba(n, this.clonePosition())); + switch (this.char()) { + case 125: + return this.bump(), { + val: { + type: ws.argument, + // value does not include the opening and closing braces. + value: i, + location: Ba(n, this.clonePosition()) + }, + err: null + }; + case 44: + return this.bump(), this.bumpSpace(), this.isEOF() ? this.error(Oa.EXPECT_ARGUMENT_CLOSING_BRACE, Ba(n, this.clonePosition())) : this.parseArgumentOptions(t, r, i, n); + default: + return this.error(Oa.MALFORMED_ARGUMENT, Ba(n, this.clonePosition())); + } + }, e.prototype.parseIdentifierIfPossible = function() { + var t = this.clonePosition(), r = this.offset(), n = gH(this.message, r), i = r + n.length; + this.bumpTo(i); + var a = this.clonePosition(), o = Ba(t, a); + return { value: n, location: o }; + }, e.prototype.parseArgumentOptions = function(t, r, n, i) { + var a, o = this.clonePosition(), l = this.parseIdentifierIfPossible().value, u = this.clonePosition(); + switch (l) { + case "": + return this.error(Oa.EXPECT_ARGUMENT_TYPE, Ba(o, u)); + case "number": + case "date": + case "time": { + this.bumpSpace(); + var d = null; + if (this.bumpIf(",")) { + this.bumpSpace(); + var f = this.clonePosition(), g = this.parseSimpleArgStyleIfPossible(); + if (g.err) + return g; + var v = QUe(g.val); + if (v.length === 0) + return this.error(Oa.EXPECT_ARGUMENT_STYLE, Ba(this.clonePosition(), this.clonePosition())); + var y = Ba(f, this.clonePosition()); + d = { style: v, styleLocation: y }; + } + var C = this.tryParseArgumentClose(i); + if (C.err) + return C; + var A = Ba(i, this.clonePosition()); + if (d && Yre(d == null ? void 0 : d.style, "::", 0)) { + var S = JUe(d.style.slice(2)); + if (l === "number") { + var g = this.parseNumberSkeletonFromString(S, d.styleLocation); + return g.err ? g : { + val: { type: ws.number, value: n, location: A, style: g.val }, + err: null + }; + } else { + if (S.length === 0) + return this.error(Oa.EXPECT_DATE_TIME_SKELETON, A); + var _ = S; + this.locale && (_ = UUe(S, this.locale)); + var v = { + type: Lw.dateTime, + pattern: _, + location: d.styleLocation, + parsedOptions: this.shouldParseSkeletons ? MUe(_) : {} + }, E = l === "date" ? ws.date : ws.time; + return { + val: { type: E, value: n, location: A, style: v }, + err: null + }; + } + } + return { + val: { + type: l === "number" ? ws.number : l === "date" ? ws.date : ws.time, + value: n, + location: A, + style: (a = d == null ? void 0 : d.style) !== null && a !== void 0 ? a : null + }, + err: null + }; + } + case "plural": + case "selectordinal": + case "select": { + var I = this.clonePosition(); + if (this.bumpSpace(), !this.bumpIf(",")) + return this.error(Oa.EXPECT_SELECT_ARGUMENT_OPTIONS, Ba(I, si({}, I))); + this.bumpSpace(); + var w = this.parseIdentifierIfPossible(), x = 0; + if (l !== "select" && w.value === "offset") { + if (!this.bumpIf(":")) + return this.error(Oa.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, Ba(this.clonePosition(), this.clonePosition())); + this.bumpSpace(); + var g = this.tryParseDecimalInteger(Oa.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, Oa.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE); + if (g.err) + return g; + this.bumpSpace(), w = this.parseIdentifierIfPossible(), x = g.val; + } + var b = this.tryParsePluralOrSelectOptions(t, l, r, w); + if (b.err) + return b; + var C = this.tryParseArgumentClose(i); + if (C.err) + return C; + var R = Ba(i, this.clonePosition()); + return l === "select" ? { + val: { + type: ws.select, + value: n, + options: Xre(b.val), + location: R + }, + err: null + } : { + val: { + type: ws.plural, + value: n, + options: Xre(b.val), + offset: x, + pluralType: l === "plural" ? "cardinal" : "ordinal", + location: R + }, + err: null + }; + } + default: + return this.error(Oa.INVALID_ARGUMENT_TYPE, Ba(o, u)); + } + }, e.prototype.tryParseArgumentClose = function(t) { + return this.isEOF() || this.char() !== 125 ? this.error(Oa.EXPECT_ARGUMENT_CLOSING_BRACE, Ba(t, this.clonePosition())) : (this.bump(), { val: !0, err: null }); + }, e.prototype.parseSimpleArgStyleIfPossible = function() { + for (var t = 0, r = this.clonePosition(); !this.isEOF(); ) { + var n = this.char(); + switch (n) { + case 39: { + this.bump(); + var i = this.clonePosition(); + if (!this.bumpUntil("'")) + return this.error(Oa.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, Ba(i, this.clonePosition())); + this.bump(); + break; + } + case 123: { + t += 1, this.bump(); + break; + } + case 125: { + if (t > 0) + t -= 1; + else + return { + val: this.message.slice(r.offset, this.offset()), + err: null + }; + break; + } + default: + this.bump(); + break; + } + } + return { + val: this.message.slice(r.offset, this.offset()), + err: null + }; + }, e.prototype.parseNumberSkeletonFromString = function(t, r) { + var n = []; + try { + n = PUe(t); + } catch (i) { + return this.error(Oa.INVALID_NUMBER_SKELETON, r); + } + return { + val: { + type: Lw.number, + tokens: n, + location: r, + parsedOptions: this.shouldParseSkeletons ? BUe(n) : {} + }, + err: null + }; + }, e.prototype.tryParsePluralOrSelectOptions = function(t, r, n, i) { + for (var a, o = !1, l = [], u = /* @__PURE__ */ new Set(), d = i.value, f = i.location; ; ) { + if (d.length === 0) { + var g = this.clonePosition(); + if (r !== "select" && this.bumpIf("=")) { + var v = this.tryParseDecimalInteger(Oa.EXPECT_PLURAL_ARGUMENT_SELECTOR, Oa.INVALID_PLURAL_ARGUMENT_SELECTOR); + if (v.err) + return v; + f = Ba(g, this.clonePosition()), d = this.message.slice(g.offset, this.offset()); + } else + break; + } + if (u.has(d)) + return this.error(r === "select" ? Oa.DUPLICATE_SELECT_ARGUMENT_SELECTOR : Oa.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, f); + d === "other" && (o = !0), this.bumpSpace(); + var y = this.clonePosition(); + if (!this.bumpIf("{")) + return this.error(r === "select" ? Oa.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : Oa.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, Ba(this.clonePosition(), this.clonePosition())); + var C = this.parseMessage(t + 1, r, n); + if (C.err) + return C; + var A = this.tryParseArgumentClose(y); + if (A.err) + return A; + l.push([ + d, + { + value: C.val, + location: Ba(y, this.clonePosition()) + } + ]), u.add(d), this.bumpSpace(), a = this.parseIdentifierIfPossible(), d = a.value, f = a.location; + } + return l.length === 0 ? this.error(r === "select" ? Oa.EXPECT_SELECT_ARGUMENT_SELECTOR : Oa.EXPECT_PLURAL_ARGUMENT_SELECTOR, Ba(this.clonePosition(), this.clonePosition())) : this.requiresOtherClause && !o ? this.error(Oa.MISSING_OTHER_CLAUSE, Ba(this.clonePosition(), this.clonePosition())) : { val: l, err: null }; + }, e.prototype.tryParseDecimalInteger = function(t, r) { + var n = 1, i = this.clonePosition(); + this.bumpIf("+") || this.bumpIf("-") && (n = -1); + for (var a = !1, o = 0; !this.isEOF(); ) { + var l = this.char(); + if (l >= 48 && l <= 57) + a = !0, o = o * 10 + (l - 48), this.bump(); + else + break; + } + var u = Ba(i, this.clonePosition()); + return a ? (o *= n, ZUe(o) ? { val: o, err: null } : this.error(r, u)) : this.error(t, u); + }, e.prototype.offset = function() { + return this.position.offset; + }, e.prototype.isEOF = function() { + return this.offset() === this.message.length; + }, e.prototype.clonePosition = function() { + return { + offset: this.position.offset, + line: this.position.line, + column: this.position.column + }; + }, e.prototype.char = function() { + var t = this.position.offset; + if (t >= this.message.length) + throw Error("out of bound"); + var r = cge(this.message, t); + if (r === void 0) + throw Error("Offset ".concat(t, " is at invalid UTF-16 code unit boundary")); + return r; + }, e.prototype.error = function(t, r) { + return { + val: null, + err: { + kind: t, + message: this.message, + location: r + } + }; + }, e.prototype.bump = function() { + if (!this.isEOF()) { + var t = this.char(); + t === 10 ? (this.position.line += 1, this.position.column = 1, this.position.offset += 1) : (this.position.column += 1, this.position.offset += t < 65536 ? 1 : 2); + } + }, e.prototype.bumpIf = function(t) { + if (Yre(this.message, t, this.offset())) { + for (var r = 0; r < t.length; r++) + this.bump(); + return !0; + } + return !1; + }, e.prototype.bumpUntil = function(t) { + var r = this.offset(), n = this.message.indexOf(t, r); + return n >= 0 ? (this.bumpTo(n), !0) : (this.bumpTo(this.message.length), !1); + }, e.prototype.bumpTo = function(t) { + if (this.offset() > t) + throw Error("targetOffset ".concat(t, " must be greater than or equal to the current offset ").concat(this.offset())); + for (t = Math.min(t, this.message.length); ; ) { + var r = this.offset(); + if (r === t) + break; + if (r > t) + throw Error("targetOffset ".concat(t, " is at invalid UTF-16 code unit boundary")); + if (this.bump(), this.isEOF()) + break; + } + }, e.prototype.bumpSpace = function() { + for (; !this.isEOF() && hge(this.char()); ) + this.bump(); + }, e.prototype.peek = function() { + if (this.isEOF()) + return null; + var t = this.char(), r = this.offset(), n = this.message.charCodeAt(r + (t >= 65536 ? 2 : 1)); + return n != null ? n : null; + }, e; + }() +); +function vH(e) { + return e >= 97 && e <= 122 || e >= 65 && e <= 90; +} +function tje(e) { + return vH(e) || e === 47; +} +function rje(e) { + return e === 45 || e === 46 || e >= 48 && e <= 57 || e === 95 || e >= 97 && e <= 122 || e >= 65 && e <= 90 || e == 183 || e >= 192 && e <= 214 || e >= 216 && e <= 246 || e >= 248 && e <= 893 || e >= 895 && e <= 8191 || e >= 8204 && e <= 8205 || e >= 8255 && e <= 8256 || e >= 8304 && e <= 8591 || e >= 11264 && e <= 12271 || e >= 12289 && e <= 55295 || e >= 63744 && e <= 64975 || e >= 65008 && e <= 65533 || e >= 65536 && e <= 983039; +} +function hge(e) { + return e >= 9 && e <= 13 || e === 32 || e === 133 || e >= 8206 && e <= 8207 || e === 8232 || e === 8233; +} +function nje(e) { + return e >= 33 && e <= 35 || e === 36 || e >= 37 && e <= 39 || e === 40 || e === 41 || e === 42 || e === 43 || e === 44 || e === 45 || e >= 46 && e <= 47 || e >= 58 && e <= 59 || e >= 60 && e <= 62 || e >= 63 && e <= 64 || e === 91 || e === 92 || e === 93 || e === 94 || e === 96 || e === 123 || e === 124 || e === 125 || e === 126 || e === 161 || e >= 162 && e <= 165 || e === 166 || e === 167 || e === 169 || e === 171 || e === 172 || e === 174 || e === 176 || e === 177 || e === 182 || e === 187 || e === 191 || e === 215 || e === 247 || e >= 8208 && e <= 8213 || e >= 8214 && e <= 8215 || e === 8216 || e === 8217 || e === 8218 || e >= 8219 && e <= 8220 || e === 8221 || e === 8222 || e === 8223 || e >= 8224 && e <= 8231 || e >= 8240 && e <= 8248 || e === 8249 || e === 8250 || e >= 8251 && e <= 8254 || e >= 8257 && e <= 8259 || e === 8260 || e === 8261 || e === 8262 || e >= 8263 && e <= 8273 || e === 8274 || e === 8275 || e >= 8277 && e <= 8286 || e >= 8592 && e <= 8596 || e >= 8597 && e <= 8601 || e >= 8602 && e <= 8603 || e >= 8604 && e <= 8607 || e === 8608 || e >= 8609 && e <= 8610 || e === 8611 || e >= 8612 && e <= 8613 || e === 8614 || e >= 8615 && e <= 8621 || e === 8622 || e >= 8623 && e <= 8653 || e >= 8654 && e <= 8655 || e >= 8656 && e <= 8657 || e === 8658 || e === 8659 || e === 8660 || e >= 8661 && e <= 8691 || e >= 8692 && e <= 8959 || e >= 8960 && e <= 8967 || e === 8968 || e === 8969 || e === 8970 || e === 8971 || e >= 8972 && e <= 8991 || e >= 8992 && e <= 8993 || e >= 8994 && e <= 9e3 || e === 9001 || e === 9002 || e >= 9003 && e <= 9083 || e === 9084 || e >= 9085 && e <= 9114 || e >= 9115 && e <= 9139 || e >= 9140 && e <= 9179 || e >= 9180 && e <= 9185 || e >= 9186 && e <= 9254 || e >= 9255 && e <= 9279 || e >= 9280 && e <= 9290 || e >= 9291 && e <= 9311 || e >= 9472 && e <= 9654 || e === 9655 || e >= 9656 && e <= 9664 || e === 9665 || e >= 9666 && e <= 9719 || e >= 9720 && e <= 9727 || e >= 9728 && e <= 9838 || e === 9839 || e >= 9840 && e <= 10087 || e === 10088 || e === 10089 || e === 10090 || e === 10091 || e === 10092 || e === 10093 || e === 10094 || e === 10095 || e === 10096 || e === 10097 || e === 10098 || e === 10099 || e === 10100 || e === 10101 || e >= 10132 && e <= 10175 || e >= 10176 && e <= 10180 || e === 10181 || e === 10182 || e >= 10183 && e <= 10213 || e === 10214 || e === 10215 || e === 10216 || e === 10217 || e === 10218 || e === 10219 || e === 10220 || e === 10221 || e === 10222 || e === 10223 || e >= 10224 && e <= 10239 || e >= 10240 && e <= 10495 || e >= 10496 && e <= 10626 || e === 10627 || e === 10628 || e === 10629 || e === 10630 || e === 10631 || e === 10632 || e === 10633 || e === 10634 || e === 10635 || e === 10636 || e === 10637 || e === 10638 || e === 10639 || e === 10640 || e === 10641 || e === 10642 || e === 10643 || e === 10644 || e === 10645 || e === 10646 || e === 10647 || e === 10648 || e >= 10649 && e <= 10711 || e === 10712 || e === 10713 || e === 10714 || e === 10715 || e >= 10716 && e <= 10747 || e === 10748 || e === 10749 || e >= 10750 && e <= 11007 || e >= 11008 && e <= 11055 || e >= 11056 && e <= 11076 || e >= 11077 && e <= 11078 || e >= 11079 && e <= 11084 || e >= 11085 && e <= 11123 || e >= 11124 && e <= 11125 || e >= 11126 && e <= 11157 || e === 11158 || e >= 11159 && e <= 11263 || e >= 11776 && e <= 11777 || e === 11778 || e === 11779 || e === 11780 || e === 11781 || e >= 11782 && e <= 11784 || e === 11785 || e === 11786 || e === 11787 || e === 11788 || e === 11789 || e >= 11790 && e <= 11798 || e === 11799 || e >= 11800 && e <= 11801 || e === 11802 || e === 11803 || e === 11804 || e === 11805 || e >= 11806 && e <= 11807 || e === 11808 || e === 11809 || e === 11810 || e === 11811 || e === 11812 || e === 11813 || e === 11814 || e === 11815 || e === 11816 || e === 11817 || e >= 11818 && e <= 11822 || e === 11823 || e >= 11824 && e <= 11833 || e >= 11834 && e <= 11835 || e >= 11836 && e <= 11839 || e === 11840 || e === 11841 || e === 11842 || e >= 11843 && e <= 11855 || e >= 11856 && e <= 11857 || e === 11858 || e >= 11859 && e <= 11903 || e >= 12289 && e <= 12291 || e === 12296 || e === 12297 || e === 12298 || e === 12299 || e === 12300 || e === 12301 || e === 12302 || e === 12303 || e === 12304 || e === 12305 || e >= 12306 && e <= 12307 || e === 12308 || e === 12309 || e === 12310 || e === 12311 || e === 12312 || e === 12313 || e === 12314 || e === 12315 || e === 12316 || e === 12317 || e >= 12318 && e <= 12319 || e === 12320 || e === 12336 || e === 64830 || e === 64831 || e >= 65093 && e <= 65094; +} +function mH(e) { + e.forEach(function(t) { + if (delete t.location, tge(t) || rge(t)) + for (var r in t.options) + delete t.options[r].location, mH(t.options[r].value); + else + Jpe(t) && ige(t.style) || (Qpe(t) || ege(t)) && dH(t.style) ? delete t.style.location : nge(t) && mH(t.children); + }); +} +function ije(e, t) { + t === void 0 && (t = {}), t = si({ shouldParseSkeletons: !0, requiresOtherClause: !0 }, t); + var r = new eje(e, t).parse(); + if (r.err) { + var n = SyntaxError(Oa[r.err.kind]); + throw n.location = r.err.location, n.originalMessage = r.err.message, n; + } + return t != null && t.captureLocation || mH(r.val), r.val; +} +function vV(e, t) { + var r = t && t.cache ? t.cache : uje, n = t && t.serializer ? t.serializer : cje, i = t && t.strategy ? t.strategy : oje; + return i(e, { + cache: r, + serializer: n + }); +} +function aje(e) { + return e == null || typeof e == "number" || typeof e == "boolean"; +} +function dge(e, t, r, n) { + var i = aje(n) ? n : r(n), a = t.get(i); + return typeof a == "undefined" && (a = e.call(this, n), t.set(i, a)), a; +} +function fge(e, t, r) { + var n = Array.prototype.slice.call(arguments, 3), i = r(n), a = t.get(i); + return typeof a == "undefined" && (a = e.apply(this, n), t.set(i, a)), a; +} +function X6(e, t, r, n, i) { + return r.bind(t, e, n, i); +} +function oje(e, t) { + var r = e.length === 1 ? dge : fge; + return X6(e, this, r, t.cache.create(), t.serializer); +} +function sje(e, t) { + return X6(e, this, fge, t.cache.create(), t.serializer); +} +function lje(e, t) { + return X6(e, this, dge, t.cache.create(), t.serializer); +} +var cje = function() { + return JSON.stringify(arguments); +}; +function K6() { + this.cache = /* @__PURE__ */ Object.create(null); +} +K6.prototype.get = function(e) { + return this.cache[e]; +}; +K6.prototype.set = function(e, t) { + this.cache[e] = t; +}; +var uje = { + create: function() { + return new K6(); + } +}, mV = { + variadic: sje, + monadic: lje +}, Fw; +(function(e) { + e.MISSING_VALUE = "MISSING_VALUE", e.INVALID_VALUE = "INVALID_VALUE", e.MISSING_INTL_API = "MISSING_INTL_API"; +})(Fw || (Fw = {})); +var lF = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r, n, i) { + var a = e.call(this, r) || this; + return a.code = n, a.originalMessage = i, a; + } + return t.prototype.toString = function() { + return "[formatjs Error: ".concat(this.code, "] ").concat(this.message); + }, t; + }(Error) +), Zre = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r, n, i, a) { + return e.call(this, 'Invalid values for "'.concat(r, '": "').concat(n, '". Options are "').concat(Object.keys(i).join('", "'), '"'), Fw.INVALID_VALUE, a) || this; + } + return t; + }(lF) +), hje = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r, n, i) { + return e.call(this, 'Value for "'.concat(r, '" must be of type ').concat(n), Fw.INVALID_VALUE, i) || this; + } + return t; + }(lF) +), dje = ( + /** @class */ + function(e) { + Tc(t, e); + function t(r, n) { + return e.call(this, 'The intl string context variable "'.concat(r, '" was not provided to the string "').concat(n, '"'), Fw.MISSING_VALUE, n) || this; + } + return t; + }(lF) +), wu; +(function(e) { + e[e.literal = 0] = "literal", e[e.object = 1] = "object"; +})(wu || (wu = {})); +function fje(e) { + return e.length < 2 ? e : e.reduce(function(t, r) { + var n = t[t.length - 1]; + return !n || n.type !== wu.literal || r.type !== wu.literal ? t.push(r) : n.value += r.value, t; + }, []); +} +function pje(e) { + return typeof e == "function"; +} +function mN(e, t, r, n, i, a, o) { + if (e.length === 1 && zre(e[0])) + return [ + { + type: wu.literal, + value: e[0].value + } + ]; + for (var l = [], u = 0, d = e; u < d.length; u++) { + var f = d[u]; + if (zre(f)) { + l.push({ + type: wu.literal, + value: f.value + }); + continue; + } + if (DUe(f)) { + typeof a == "number" && l.push({ + type: wu.literal, + value: r.getNumberFormat(t).format(a) + }); + continue; + } + var g = f.value; + if (!(i && g in i)) + throw new dje(g, o); + var v = i[g]; + if (RUe(f)) { + (!v || typeof v == "string" || typeof v == "number") && (v = typeof v == "string" || typeof v == "number" ? String(v) : ""), l.push({ + type: typeof v == "string" ? wu.literal : wu.object, + value: v + }); + continue; + } + if (Qpe(f)) { + var y = typeof f.style == "string" ? n.date[f.style] : dH(f.style) ? f.style.parsedOptions : void 0; + l.push({ + type: wu.literal, + value: r.getDateTimeFormat(t, y).format(v) + }); + continue; + } + if (ege(f)) { + var y = typeof f.style == "string" ? n.time[f.style] : dH(f.style) ? f.style.parsedOptions : n.time.medium; + l.push({ + type: wu.literal, + value: r.getDateTimeFormat(t, y).format(v) + }); + continue; + } + if (Jpe(f)) { + var y = typeof f.style == "string" ? n.number[f.style] : ige(f.style) ? f.style.parsedOptions : void 0; + y && y.scale && (v = v * (y.scale || 1)), l.push({ + type: wu.literal, + value: r.getNumberFormat(t, y).format(v) + }); + continue; + } + if (nge(f)) { + var C = f.children, A = f.value, S = i[A]; + if (!pje(S)) + throw new hje(A, "function", o); + var _ = mN(C, t, r, n, i, a), E = S(_.map(function(x) { + return x.value; + })); + Array.isArray(E) || (E = [E]), l.push.apply(l, E.map(function(x) { + return { + type: typeof x == "string" ? wu.literal : wu.object, + value: x + }; + })); + } + if (tge(f)) { + var I = f.options[v] || f.options.other; + if (!I) + throw new Zre(f.value, v, Object.keys(f.options), o); + l.push.apply(l, mN(I.value, t, r, n, i)); + continue; + } + if (rge(f)) { + var I = f.options["=".concat(v)]; + if (!I) { + if (!Intl.PluralRules) + throw new lF(`Intl.PluralRules is not available in this environment. +Try polyfilling it using "@formatjs/intl-pluralrules" +`, Fw.MISSING_INTL_API, o); + var w = r.getPluralRules(t, { type: f.pluralType }).select(v - (f.offset || 0)); + I = f.options[w] || f.options.other; + } + if (!I) + throw new Zre(f.value, v, Object.keys(f.options), o); + l.push.apply(l, mN(I.value, t, r, n, i, v - (f.offset || 0))); + continue; + } + } + return fje(l); +} +function gje(e, t) { + return t ? si(si(si({}, e || {}), t || {}), Object.keys(e).reduce(function(r, n) { + return r[n] = si(si({}, e[n]), t[n] || {}), r; + }, {})) : e; +} +function vje(e, t) { + return t ? Object.keys(e).reduce(function(r, n) { + return r[n] = gje(e[n], t[n]), r; + }, si({}, e)) : e; +} +function yV(e) { + return { + create: function() { + return { + get: function(t) { + return e[t]; + }, + set: function(t, r) { + e[t] = r; + } + }; + } + }; +} +function mje(e) { + return e === void 0 && (e = { + number: {}, + dateTime: {}, + pluralRules: {} + }), { + getNumberFormat: vV(function() { + for (var t, r = [], n = 0; n < arguments.length; n++) + r[n] = arguments[n]; + return new ((t = Intl.NumberFormat).bind.apply(t, Eh([void 0], r, !1)))(); + }, { + cache: yV(e.number), + strategy: mV.variadic + }), + getDateTimeFormat: vV(function() { + for (var t, r = [], n = 0; n < arguments.length; n++) + r[n] = arguments[n]; + return new ((t = Intl.DateTimeFormat).bind.apply(t, Eh([void 0], r, !1)))(); + }, { + cache: yV(e.dateTime), + strategy: mV.variadic + }), + getPluralRules: vV(function() { + for (var t, r = [], n = 0; n < arguments.length; n++) + r[n] = arguments[n]; + return new ((t = Intl.PluralRules).bind.apply(t, Eh([void 0], r, !1)))(); + }, { + cache: yV(e.pluralRules), + strategy: mV.variadic + }) + }; +} +var yje = ( + /** @class */ + function() { + function e(t, r, n, i) { + var a = this; + if (r === void 0 && (r = e.defaultLocale), this.formatterCache = { + number: {}, + dateTime: {}, + pluralRules: {} + }, this.format = function(u) { + var d = a.formatToParts(u); + if (d.length === 1) + return d[0].value; + var f = d.reduce(function(g, v) { + return !g.length || v.type !== wu.literal || typeof g[g.length - 1] != "string" ? g.push(v.value) : g[g.length - 1] += v.value, g; + }, []); + return f.length <= 1 ? f[0] || "" : f; + }, this.formatToParts = function(u) { + return mN(a.ast, a.locales, a.formatters, a.formats, u, void 0, a.message); + }, this.resolvedOptions = function() { + var u; + return { + locale: ((u = a.resolvedLocale) === null || u === void 0 ? void 0 : u.toString()) || Intl.NumberFormat.supportedLocalesOf(a.locales)[0] + }; + }, this.getAst = function() { + return a.ast; + }, this.locales = r, this.resolvedLocale = e.resolveLocale(r), typeof t == "string") { + if (this.message = t, !e.__parse) + throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`"); + var o = i || {}; + o.formatters; + var l = DBe(o, ["formatters"]); + this.ast = e.__parse(t, si(si({}, l), { locale: this.resolvedLocale })); + } else + this.ast = t; + if (!Array.isArray(this.ast)) + throw new TypeError("A message must be provided as a String or AST. " + this.ast); + this.formats = vje(e.formats, n), this.formatters = i && i.formatters || mje(this.formatterCache); + } + return Object.defineProperty(e, "defaultLocale", { + get: function() { + return e.memoizedDefaultLocale || (e.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale), e.memoizedDefaultLocale; + }, + enumerable: !1, + configurable: !0 + }), e.memoizedDefaultLocale = null, e.resolveLocale = function(t) { + if (typeof Intl.Locale != "undefined") { + var r = Intl.NumberFormat.supportedLocalesOf(t); + return r.length > 0 ? new Intl.Locale(r[0]) : new Intl.Locale(typeof t == "string" ? t : t[0]); + } + }, e.__parse = ije, e.formats = { + number: { + integer: { + maximumFractionDigits: 0 + }, + currency: { + style: "currency" + }, + percent: { + style: "percent" + } + }, + date: { + short: { + month: "numeric", + day: "numeric", + year: "2-digit" + }, + medium: { + month: "short", + day: "numeric", + year: "numeric" + }, + long: { + month: "long", + day: "numeric", + year: "numeric" + }, + full: { + weekday: "long", + month: "long", + day: "numeric", + year: "numeric" + } + }, + time: { + short: { + hour: "numeric", + minute: "numeric" + }, + medium: { + hour: "numeric", + minute: "numeric", + second: "numeric" + }, + long: { + hour: "numeric", + minute: "numeric", + second: "numeric", + timeZoneName: "short" + }, + full: { + hour: "numeric", + minute: "numeric", + second: "numeric", + timeZoneName: "short" + } + } + }, e; + }() +), _je = yje, hL = "en", _w = [hL]; +globalThis.navigator && (navigator.languages && navigator.languages.length > 0 ? _w = Eh([], navigator.languages, !0) : _w = [navigator.language || navigator.userLanguage || hL]); +function Sje(e) { + var t = e.trim(); + if (t) + try { + if (Intl.Locale) { + var r = new Intl.Locale(t), n = r.language, i = r.region; + return { locale: t, language: n, region: i }; + } + var a = t.split("-"), o = a.slice(1, 3).find(function(l) { + return l.length === 2; + }); + return { locale: t, language: a[0].toLowerCase(), region: o == null ? void 0 : o.toUpperCase() }; + } catch (l) { + oF.error("Parse locale:".concat(t, " failed."), l); + } +} +function yH(e) { + return e.map(Sje).filter(function(t) { + return t; + }); +} +var Z6 = yH(_w.includes(hL) ? _w : Eh(Eh([], _w, !0), [hL], !1)), pge = si({ locales: _w }, Z6[0]); +function bje(e, t) { + for (var r = 0, n = Z6; r < n.length; r++) { + var i = n[r], a = t(i); + if (a !== void 0) + return a; + } + return e; +} +function q6(e, t, r, n) { + var i = Eh([], Z6, !0), a = yH(n || []); + a.length > 0 && (i = Eh(Eh([], a, !0), i, !0)); + for (var o = yH((r != null ? r : "").split(",")).map(function(v) { + var y; + return v.language + ((y = v.region) !== null && y !== void 0 ? y : ""); + }).filter(function(v) { + return e[v + t] !== void 0; + }), l = Eh(Eh([], i.flatMap(function(v) { + var y = v.language, C = v.region; + return [ + C ? y + C : void 0, + y, + o.find(function(A) { + return A.startsWith(y); + }) + ]; + }).filter(function(v) { + return v && (!r || o.includes(v)); + }), !0), o, !0).map(function(v) { + return v + t; + }), u = 0, d = l; u < d.length; u++) { + var f = d[u], g = e[f]; + if (g !== void 0) + return { data: g, language: f.slice(0, 2) }; + } + throw new Error("Not found ".concat(l)); +} +var Eje = "@", Cje = Object.fromEntries(Object.entries(q6(qpe, "").data).map(function(e) { + var t = e[0], r = e[1]; + return [ + Eje + t, + r + ]; +})), Tje = ( + /** @class */ + function() { + function e(t, r, n) { + var i = q6(t, "", r, n), a = i.data, o = i.language; + this.messages = Object.assign({}, a, Cje), this.language = o, this.trans = this.trans.bind(this), this.transToNode = this.transToNode.bind(this); + } + return e.prototype.trans = function(t, r) { + return this.transToNode(t, r).toString(); + }, e.prototype.transToNode = function(t, r) { + var n = this.getMessage(t), i = new _je(n, pge.locale).format(r); + return Array.isArray(i) ? i.map(function(a, o) { + return hH.jsx(uL.Fragment, { children: a }, o); + }) : i; + }, e.prototype.getMessage = function(t) { + var r = this.getNestedMessage(this.messages, t); + return r === void 0 && (r = this.getNestedMessage(qpe.en, t)), r === void 0 ? (console.warn(`Translation missing for key: ${t}`), `oups! ${t}`) : r; + }, e.prototype.getNestedMessage = function(t, r) { + for (var n = 0, i = r.split("."); n < i.length; n++) { + var a = i[n]; + t !== void 0 && (t = t[a]); + } + return t; + }, e; + }() +); +function wje(e, t) { + return q6(e, "Obj", t).data; +} +const Ije = { + chart: { + delete: "Delete", + data: "Data", + mode: "Mode", + config: "Configuration", + UIMode: "UI Mode", + chartType: "Chart Type", + xAxis: "X-axis", + chartSeries: "Chart Series", + customSeries: "Custom Series", + add: "Add", + confirmDelete: "Confirm Delete: ", + seriesName: "Series Name", + dataColumns: "Data Columns", + title: "Title", + xAxisDirection: "X-axis Direction", + xAxisName: "X-axis Name", + xAxisType: "X-axis Type", + xAxisTypeTooltip: "Automatically detected based on X-axis data. For type description, refer to: ", + logBase: "Log Base", + yAxisName: "Y-axis Name", + yAxisType: "Y-axis Type", + yAxisDataFormat: "Y-axis Data Type", + yAxisDataFormatTooltip: `Indicates the value of each coordinate. Example: '{{value * 100 + "%"}}'`, + basicBar: "Basic Bar", + stackedBar: "Stacked Bar", + barType: "Bar Chart Type", + categoryAxis: "Category Axis", + valueAxis: "Value Axis", + timeAxis: "Time Axis", + logAxis: "Log Axis", + auto: "Default", + legendPosition: "Legend Position", + basicLine: "Basic Line", + stackedLine: "Stacked Line", + areaLine: "Area Line", + smooth: "Smooth Curve", + lineType: "Line Chart Type", + basicPie: "Basic Pie", + doughnutPie: "Doughnut Pie", + rosePie: "Rose Pie", + pieType: "Pie Chart Type", + spending: "Spending", + budget: "Budget", + bar: "Bar Chart", + line: "Line Chart", + scatter: "Scatter Chart", + pie: "Pie Chart", + horizontal: "Horizontal", + vertical: "Vertical", + noData: "No Data", + unknown: "Unknown", + select: "Select", + unSelect: "Unselect", + echartsOptionLabel: "Option", + echartsOptionTooltip: "ECharts Option", + echartsOptionExamples: "ECharts Examples", + echartsMapOptionTooltip: "ECharts Map Option", + echartsMapOptionExamples: "ECharts Map Examples", + selectDesc: "Triggered when a user selects part of the data in the chart", + unselectDesc: "Triggered when a user unselects part of the data in the chart", + selectedPointsDesc: "Selected Points", + dataDesc: "JSON Data for the Chart", + titleDesc: "Current Chart Title", + scatterShape: "Scatter Shape", + circle: "Circle", + rect: "Rectangle", + triangle: "Triangle", + diamond: "Diamond", + pin: "Pin", + arrow: "Arrow", + pointColorLabel: "Point Color", + pointColorTooltip: `Set point color based on series name and value. Variables: seriesName, value. Example: '{{value < 25000 ? "red" : "green"}}'`, + mapReady: "Map Ready", + mapReadyDesc: "Triggers when the map is ready", + zoomLevelChange: "Zoom Level Change", + zoomLevelChangeDesc: "Triggers when the map zoom level changes", + centerPositionChange: "Center Position Change", + centerPositionChangeDesc: "Triggers when the map center position changes" + }, + imageEditor: { + defaultSrc: "", + save: "Save", + saveDesc: "Save Image", + src: "Image Source", + name: "Image Name", + buttonText: "Button Text", + srcDesc: "Image Source", + nameDesc: "Image Name", + dataURIDesc: "Image Data URI", + dataDesc: "Image Data", + buttonTextDesc: "Button Text" + }, + meeting: { + logLevel: "Agora SDK Log Level", + placement: "Meeting Drawer Placement", + meeting: "Meeting Settings", + loadingDesc: "loadingDesc", + cameraView: "Camera View", + cameraViewDesc: "Camera View of the Local User (Host)", + screenShared: "Screen Shared", + heightTooltip: "Pixel, e.g. 378", + height: "Drawer Height", + widthTooltip: "Pixel or Percentage, e.g. 520, 60%", + width: "Drawer Width", + screenSharedDesc: "Screen Shared by the Local User (Host)", + audioUnmuted: "Audio Unmuted", + audioMuted: "Audio Muted", + videoClicked: "Video Clicked", + showMask: "Show Mask", + maskClosable: "Click Outside to Close", + videoOff: "Video Off", + videoOn: "Video On", + size: "Size", + top: "Top", + host: "Host of the Meeting Room. You would need to manage the host as own Application Logic", + participants: "Participants of the Meeting Room", + shareScreen: "Display Screen Shared by the Local User", + appid: "Agora Application ID", + meetingName: "Meeting Name", + localUserID: "Host User ID", + userName: "Host User Name", + rtmToken: "Agora RTM Token", + rtcToken: "Agora RTC Token", + noVideo: "No Video", + profileImageUrl: "Profile Image URL", + right: "Right", + bottom: "Bottom", + videoId: "Video Stream ID", + audioStatus: "Audio Status", + left: "Left", + widthTooltip: "Pixel or Percentage, e.g. 520, 60%", + heightTooltip: "Pixel, e.g. 378", + openDrawerDesc: "Open Drawer", + closeDrawerDesc: "Close Drawer", + width: "Drawer Width", + height: "Drawer Height", + actionBtnDesc: "Action Button", + broadCast: "Broadcast Messages", + title: "Meeting Title", + meetingCompName: "Agora Meeting Controller", + sharingCompName: "Screen Share Stream", + videoCompName: "Camera Stream", + videoSharingCompName: "Screen Share Stream", + meetingControlCompName: "Control Button", + meetingCompDesc: "Meeting Component", + meetingCompControls: "Meeting Control", + meetingCompKeywords: "Agora Meeting, Web Meeting, Collaboration", + iconSize: "Icon Size", + userId: "Host User ID", + roomId: "Room ID", + meetingActive: "Ongoing Meeting", + messages: "Broadcasted Messages" + }, + calendar: { + events: "Events Data", + resources: "Resources", + resourcesDefault: "Rooms", + resourcesName: "Resource Name", + resourcesEvents: "Resources Events Data", + editable: "Editable", + license: "Licence Key", + licenseTooltip: "Get your licence key from https://fullcalendar.io/purchase to enable premium views like Resource Timeline and Resource Grid.", + defaultDate: "Default Date", + defaultDateTooltip: "Initial display date of the calendar", + defaultView: "Default View", + defaultViewTooltip: "Initial view of the calendar", + showEventTime: "Show Event Times", + showEventTimeTooltip: "Display event time text", + showWeekends: "Show Weekends", + showAllDay: "Show All-Day", + showAllDayTooltip: "Display all-day slot in week and day views", + dayMaxEvents: "Day Max Events", + dayMaxEventsTooltip: "Max events per day in month view, 0 for cell height limit", + eventMaxStack: "Event Max Stack", + eventMaxStackTooltip: "Max events to stack horizontally in week and day views, 0 for no limit", + selectInterval: "Selected Interval", + selectEvent: "Selected Event", + changeSet: "Changed Event Object", + headerBtnBackground: "Button Background", + btnText: "Button Text", + title: "Title", + selectBackground: "Selected Background", + today: "Today", + month: "Month", + week: "Week", + weekdaygrid: "Days of Week", + daygrid: "Day Events List", + year: "Year", + day: "Day", + list: "Events List", + timeline: "Resource Timeline", + //added by fred + resourceTimeGridDay: "Resource Grid", + //added by fred + monday: "Monday", + tuesday: "Tuesday", + wednesday: "Wednesday", + thursday: "Thursday", + friday: "Friday", + saturday: "Saturday", + sunday: "Sunday", + startWeek: "Start From", + creatEvent: "Create Event", + editEvent: "Edit Event", + eventName: "Event Name", + eventColor: "Event Color", + eventGroupId: "Group ID", + groupIdTooltip: "Group ID groups events for drag and resize together.", + more: "More", + allDay: "All Day", + eventNameRequire: "Enter Event Name", + eventId: "Event ID", + eventIdRequire: "Enter Event ID", + eventIdTooltip: "Unique ID for each event", + eventIdExist: "ID Exists" + } +}, xje = { + chart: { + delete: "删除", + data: "数据", + mode: "模式", + config: "配置", + UIMode: "UI模式", + chartType: "图表类型", + xAxis: "X轴", + chartSeries: "图表系列", + customSeries: "自定义系列", + add: "添加", + confirmDelete: "确认删除:", + seriesName: "系列名称", + dataColumns: "数据列", + title: "标题", + xAxisDirection: "X轴方向", + xAxisName: "X轴名称", + xAxisType: "X轴类型", + xAxisTypeTooltip: "默认情况下,根据X轴数据自动检测.有关类型描述,请参考:", + logBase: "对数底数", + yAxisName: "Y轴名称", + yAxisType: "Y轴类型", + yAxisDataFormat: "Y轴数据格式", + yAxisDataFormatTooltip: `值表示每个坐标的值.示例:'{{value * 100 + "%"}}'`, + basicBar: "基本柱状图", + stackedBar: "堆叠柱状图", + barType: "柱状图类型", + categoryAxis: "分类轴", + valueAxis: "值轴", + timeAxis: "时间轴", + logAxis: "对数轴", + auto: "自动", + legendPosition: "图例位置", + basicLine: "基本折线图", + stackedLine: "堆叠折线图", + areaLine: "区域折线图", + smooth: "平滑曲线", + lineType: "折线图类型", + basicPie: "基本饼图", + doughnutPie: "环形饼图", + rosePie: "玫瑰饼图", + pieType: "饼图类型", + spending: "支出", + budget: "预算", + bar: "柱状图", + line: "折线图", + scatter: "散点图", + pie: "饼图", + horizontal: "水平", + vertical: "垂直", + noData: "无数据", + unknown: "未知", + select: "选择", + unSelect: "取消选择", + echartsOptionLabel: "选项", + echartsOptionTooltip: "ECharts选项", + echartsOptionExamples: "ECharts示例", + echartsMapOptionTooltip: "ECharts地图选项", + echartsMapOptionExamples: "ECharts地图示例", + selectDesc: "当用户选择图表中的部分数据时触发", + unselectDesc: "当用户取消选择图表中的部分数据时触发", + selectedPointsDesc: "已选中的数据点", + dataDesc: "当前图表使用的原始数据", + titleDesc: "当前图表标题", + scatterShape: "散点形状", + circle: "圆形", + rect: "矩形", + triangle: "三角形", + diamond: "菱形", + pin: "图钉", + arrow: "箭头", + pointColorLabel: "数据点颜色", + pointColorTooltip: `根据系列名称和当前数据点值设置数据点颜色,可选变量:seriesName、value.示例:'{{value < 25000 ? "red" : "green"}}'`, + mapReady: "地图就绪", + mapReadyDesc: "地图准备好时触发", + zoomLevelChange: "缩放级别更改", + zoomLevelChangeDesc: "地图缩放级别更改时触发", + centerPositionChange: "中心位置变化", + centerPositionChangeDesc: "地图中心位置改变时触发" + }, + imageEditor: { + defaultSrc: "", + save: "保存", + saveDesc: "保存图像", + src: "图像来源", + name: "图像名称", + buttonText: "按钮文本", + srcDesc: "图像来源", + nameDesc: "图像名称", + dataURIDesc: "图像数据URI", + dataDesc: "图像数据", + buttonTextDesc: "按钮文本" + }, + calendar: { + events: "事件数据", + resources: "资源数据", + resourcesDefault: "客房", + resourcesEvents: "资源事件", + resourcesName: "资源名称", + license: "许可证密钥", + licenseTooltip: "从 https://fullcalendar.io/purchase 获取许可证密钥,启用资源时间轴和资源网格等高级视图。", + editable: "可编辑", + defaultDate: "默认日期", + defaultDateTooltip: "日历最初显示的日期", + defaultView: "默认视图", + defaultViewTooltip: "日历最初显示的视图", + showEventTime: "显示事件时间", + showEventTimeTooltip: "是否显示事件的时间文本", + showWeekends: "显示周末", + showAllDay: "显示全天", + showAllDayTooltip: "是否在周视图和日视图中显示全天时间段", + dayMaxEvents: "每日最多事件数", + dayMaxEventsTooltip: "在月视图中每天显示的事件最大数量,为0表示限制为单元格的高度", + eventMaxStack: "事件最大堆叠数", + eventMaxStackTooltip: "在周视图和日视图中水平堆叠的事件的最大数量,为0表示没有限制", + selectInterval: "日历上选择的时间间隔", + selectEvent: "已选事件", + changeSet: "拖动日历中更改的事件对象,键为eventId,值为事件对象", + headerBtnBackground: "按钮背景", + btnText: "按钮文本", + title: "标题", + selectBackground: "选择背景", + today: "今天", + month: "月", + week: "周", + day: "日", + list: "列表", + timeline: "时间轴", + resourceTimeGridDay: "资源时间网格日", + monday: "星期一", + tuesday: "星期二", + wednesday: "星期三", + thursday: "星期四", + friday: "星期五", + saturday: "星期六", + sunday: "星期日", + startWeek: "起始星期", + creatEvent: "创建事件", + editEvent: "编辑事件", + eventName: "事件名称", + eventColor: "事件颜色", + eventGroupId: "分组ID", + groupIdTooltip: "分组ID用于将不同的事件分组,同一组内的事件可以一起拖动和调整大小.", + more: "更多", + allDay: "全天", + eventNameRequire: "请输入事件名称", + eventId: "事件ID", + eventIdRequire: "请输入事件ID", + eventIdTooltip: "每个事件的唯一标识符", + eventIdExist: "ID已存在" + } +}, Aje = { + tooltip: { + trigger: "item" + }, + animation: !0, + series: [{ + name: "Population", + type: "scatter", + coordinateSystem: "gmap", + itemStyle: { + color: "#00c1de" + }, + data: [{ + name: "Azerbaijan", + value: [47.395, 40.43, 8352021] + }, { + name: "Albania", + value: [20.068, 41.143, 3153731] + }, { + name: "Armenia", + value: [44.563, 40.534, 3017661] + }, { + name: "Bosnia and Herzegovina", + value: [17.786, 44.169, 3915238] + }, { + name: "Bulgaria", + value: [25.231, 42.761, 7744591] + }, { + name: "Cyprus", + value: [33.219, 35.043, 836321] + }, { + name: "Denmark", + value: [9.264, 56.058, 5416945] + }, { + name: "Ireland", + value: [-8.152, 53.177, 4143294] + }, { + name: "Estonia", + value: [25.793, 58.674, 1344312] + }, { + name: "Austria", + value: [14.912, 47.683, 8291979] + }, { + name: "Czech Republic", + value: [15.338, 49.743, 10191762] + }, { + name: "Finland", + value: [26.272, 64.504, 5246004] + }, { + name: "France", + value: [2.55, 46.565, 60990544] + }, { + name: "Georgia", + value: [43.518, 42.176, 4473409] + }, { + name: "Germany", + value: [9.851, 51.11, 82652369] + }, { + name: "Greece", + value: [21.766, 39.666, 11099737] + }, { + name: "Croatia", + value: [16.693, 45.723, 455149] + }, { + name: "Hungary", + value: [19.134, 47.07, 10086387] + }, { + name: "Iceland", + value: [-18.48, 64.764, 295732] + }, { + name: "Israel", + value: [34.851, 31.026, 6692037] + }, { + name: "Italy", + value: [12.8, 42.7, 5864636] + }, { + name: "Latvia", + value: [25.641, 56.858, 2301793] + }, { + name: "Belarus", + value: [28.047, 53.54, 9795287] + }, { + name: "Lithuania", + value: [23.897, 55.336, 3425077] + }, { + name: "Slovakia", + value: [19.491, 48.707, 5386995] + }, { + name: "Liechtenstein", + value: [9.555, 47.153, 34598] + }, { + name: "The former Yugoslav Republic of Macedonia", + value: [21.698, 41.6, 2033655] + }, { + name: "Malta", + value: [14.442, 35.89, 402617] + }, { + name: "Belgium", + value: [4.664, 50.643, 10398049] + }, { + name: "Faroe Islands", + value: [-6.864, 62.05, 48205] + }, { + name: "Andorra", + value: [1.576, 42.549, 73483] + }, { + name: "Luxembourg", + value: [6.088, 49.771, 456613] + }, { + name: "Monaco", + value: [7.412, 43.75, 325] + }, { + name: "Montenegro", + value: [19.254, 42.792, 607969] + }, { + name: "Netherlands", + value: [5.389, 52.077, 1632769] + }, { + name: "Norway", + value: [8.74, 61.152, 4638836] + }, { + name: "Poland", + value: [19.401, 52.125, 38195558] + }, { + name: "Portugal", + value: [-8.058, 40.309, 10528226] + }, { + name: "Romania", + value: [24.969, 45.844, 21627557] + }, { + name: "Republic of Moldova", + value: [28.599, 47.193, 3876661] + }, { + name: "Slovenia", + value: [14.827, 46.124, 1999425] + }, { + name: "Spain", + value: [-3.649, 40.227, 43397491] + }, { + name: "Sweden", + value: [15.27, 62.011, 9038049] + }, { + name: "Switzerland", + value: [7.908, 46.861, 7424389] + }, { + name: "Turkey", + value: [35.179, 39.061, 72969723] + }, { + name: "United Kingdom", + value: [-1.6, 53, 60244834] + }, { + name: "Ukraine", + value: [31.388, 49.016, 46917544] + }, { + name: "San Marino", + value: [12.46, 43.942, 30214] + }, { + name: "Serbia", + value: [20.806, 44.032, 9863026] + }, { + name: "Holy See (Vatican City)", + value: [12.451, 41.904, 783] + }, { + name: "Russia", + value: [96.689, 61.988, 143953092] + }], + encode: { + value: 2, + lng: 0, + lat: 1 + } + }] +}, Rje = { + defaultDataSource: [{ + date: "2021-09", + department: "Administration", + spending: 9003, + budget: 8e3 + }, { + date: "2021-09", + department: "Finance", + spending: 3033, + budget: 4e3 + }, { + date: "2021-09", + department: "Sales", + spending: 9230, + budget: 8e3 + }, { + date: "2021-10", + department: "Administration", + spending: 13032, + budget: 15e3 + }, { + date: "2021-10", + department: "Finance", + spending: 2300, + budget: 5e3 + }, { + date: "2021-10", + department: "Sales", + spending: 7323.5, + budget: 8e3 + }, { + date: "2021-11", + department: "Administration", + spending: 13e3, + budget: 16023 + }, { + date: "2021-11", + department: "Finance", + spending: 3569.5, + budget: 3e3 + }, { + date: "2021-11", + department: "Sales", + spending: 1e4, + budget: 9932 + }, { + date: "2021-12", + department: "Administration", + spending: 18033, + budget: 2e4 + }, { + date: "2021-12", + department: "Finance", + spending: 4890, + budget: 4500 + }, { + date: "2021-12", + department: "Sales", + spending: 9322, + budget: 8e3 + }], + defaultEchartsJsonOption: { + title: { + text: "Funnel Chart", + left: "center" + }, + backgroundColor: "#ffffff", + color: $lowcoder_sdk.chartColorPalette, + tooltip: { + trigger: "item", + formatter: "{a}
    {b} : {c}%" + }, + legend: { + data: ["Show", "Click", "Visit", "Query", "Buy"], + top: "bottom" + }, + series: [{ + name: "Funnel", + type: "funnel", + left: "10%", + top: 60, + bottom: 60, + width: "80%", + min: 0, + max: 100, + gap: 2, + label: { + show: !0, + position: "inside" + }, + data: [{ + value: 100, + name: "Show" + }, { + value: 80, + name: "Click" + }, { + value: 60, + name: "Visit" + }, { + value: 40, + name: "Query" + }, { + value: 20, + name: "Buy" + }] + }] + }, + defaultMapJsonOption: Aje +}, Dje = void 0, gge = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + en: Ije, + enObj: Rje, + zh: xje, + zhObj: Dje +}, Symbol.toStringTag, { value: "Module" })), { + trans: yt, + language: vge +} = new Tje(gge, ""), lD = wje(gge, ""); +function Oje() { + return bje("EN", (e) => { + switch (e.language) { + case "en": + return "EN"; + case "zh": + return "ZH"; + } + }); +} +function Mje() { + switch (vge) { + case "zh": + return "zh-cn"; + default: + return "en-gb"; + } +} +const mge = vge === "zh" ? "zh" : "en", yge = `https://echarts.apache.org/${mge}/option.html`, kje = `https://echarts.apache.org/examples/${mge}/index.html`, Pje = `${yge}#xAxis.type`, qre = "https://maps.googleapis.com/maps/api/js", Nje = "https://github.com/plainheart/echarts-extension-gmap", Lje = "https://codepen.io/plainheart/pen/VweLGbR"; +var s1 = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}; +function cD(e) { + return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; +} +var _ge = { exports: {} }, cF = {}; +const Fje = $react; +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var Bje = Fje, Uje = Symbol.for("react.element"), jje = Symbol.for("react.fragment"), $je = Object.prototype.hasOwnProperty, Vje = Bje.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, zje = { key: !0, ref: !0, __self: !0, __source: !0 }; +function Sge(e, t, r) { + var n, i = {}, a = null, o = null; + r !== void 0 && (a = "" + r), t.key !== void 0 && (a = "" + t.key), t.ref !== void 0 && (o = t.ref); + for (n in t) + $je.call(t, n) && !zje.hasOwnProperty(n) && (i[n] = t[n]); + if (e && e.defaultProps) + for (n in t = e.defaultProps, t) + i[n] === void 0 && (i[n] = t[n]); + return { $$typeof: Uje, type: e, key: a, ref: o, props: i, _owner: Vje.current }; +} +cF.Fragment = jje; +cF.jsx = Sge; +cF.jsxs = Sge; +_ge.exports = cF; +var J6 = _ge.exports; +const Ta = J6.Fragment, dt = J6.jsx, gn = J6.jsxs, Hje = [{ + label: yt("chart.auto"), + value: "default" +}, { + label: yt("chart.categoryAxis"), + value: "category" +}, { + label: yt("chart.valueAxis"), + value: "value" +}, { + label: yt("chart.timeAxis"), + value: "time" +}, { + label: yt("chart.logAxis"), + value: "log" +}], Wje = [{ + label: yt("chart.valueAxis"), + value: "value" +}, { + label: yt("chart.categoryAxis"), + value: "category" +}, { + label: yt("chart.timeAxis"), + value: "time" +}, { + label: yt("chart.logAxis"), + value: "log" +}], bge = { + axisName: $lowcoder_sdk.StringControl, + logBase: $lowcoder_sdk.NumberControl +}, Ege = $lowcoder_sdk.withContext(new $lowcoder_sdk.MultiCompBuilder({ + value: $lowcoder_sdk.StringControl +}, (e) => e.value).setPropertyViewFn((e) => e.value.propertyView({ + label: yt("chart.yAxisDataFormat"), + placeholder: "{{value}}", + tooltip: yt("chart.yAxisDataFormatTooltip") +})).build(), ["value"]), Gje = function() { + return new $lowcoder_sdk.MultiCompBuilder(rn(br({}, bge), { + type: $lowcoder_sdk.dropdownControl(Hje, "default") + }), (e) => { + const t = { + name: e.axisName, + nameGap: 22, + // @ts-ignore + nameLocation: "middle" + }; + return e.type !== "default" && (t.type = e.type), t; + }).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [e.axisName.propertyView({ + label: yt("chart.xAxisName") + }), e.type.propertyView({ + label: yt("chart.xAxisType"), + tooltip: /* @__PURE__ */ gn(Ta, { + children: [yt("chart.xAxisTypeTooltip"), /* @__PURE__ */ dt("a", { + href: Pje, + target: "_blank", + rel: "noreferrer", + children: yt("chart.xAxisType") + })] + }) + }), e.type.getView() === "log" && e.logBase.propertyView({ + label: yt("chart.logBase") + })] + })).build(); +}(), Yje = function() { + return new $lowcoder_sdk.MultiCompBuilder(rn(br({}, bge), { + // the old data has "type" field with default value "category". change field name to "yAxisType" for compatibility + yAxisType: $lowcoder_sdk.dropdownControl(Wje, "value"), + formatter: Ege + }), (e) => () => { + const t = { + name: e.axisName, + type: e.yAxisType, + nameTextStyle: { + align: "left" + } + }, r = new Intl.NumberFormat(pge.locales, { + notation: "compact" + }); + return t.axisLabel = { + formatter: (n) => { + const i = e.formatter({ + value: n + }); + return !$lodash.isNil(i) && i !== "" ? i : (e.yAxisType === "value" || e.yAxisType === "log") && typeof n == "number" ? r.format(n) : n + ""; + } + }, e.yAxisType === "log" && (t.logBase = e.logBase || 10), t; + }).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [e.axisName.propertyView({ + label: yt("chart.yAxisName") + }), e.yAxisType.propertyView({ + label: yt("chart.yAxisType") + }), e.yAxisType.getView() === "log" && e.logBase.propertyView({ + label: yt("chart.logBase") + }), e.formatter.getPropertyView()] + })).build(); +}(); +function Xje(e) { + if (!e || e.length <= 0) + return "category"; + const t = e[0]; + return t ? $lowcoder_sdk.isNumeric(t) ? "value" : isNaN(new Date(t.toString()).getDate()) ? "category" : "time" : "category"; +} +const _V = { + year: 3600 * 24 * 1e3 * 365, + month: 3600 * 24 * 1e3 * 28, + day: 3600 * 24 * 1e3 +}; +function Kje(e) { + const t = e.map((r) => { + if (!r) + return 1; + const n = r.toString().length; + return n === 4 ? _V.year : n === 6 || n === 7 ? _V.month : n === 10 || n === 8 ? _V.day : 1; + }); + return $lodash.min(t); +} +let Jre; +function Zje(e) { + const r = (Jre || (Jre = document.createElement("canvas"))).getContext("2d"); + return r ? (r.font = "normal 12px sans-serif", e.map((n) => n ? r.measureText(n.toString()).width + 2 : 0)) : []; +} +function qje(e, t, r, n, i) { + const a = br({}, e), o = br({}, t); + if (a.type || (a.type = Xje(n)), a.type === "category" && i) { + const l = Zje(n), u = $lodash.max(l), d = l[l.length - 1]; + let f = i.w / n.length, g = 0, v = u; + if (u && f < u && r === "horizontal") { + v = Math.min(u, 150); + const y = d && d * 0.87 > f / 2 + i.right; + g = y ? 270 : 330, a.nameGap = y ? v + 5 : v / 2 + 10; + } else + r === "vertical" && u && (a.nameGap = u + 10); + a.axisLabel = { + interval: 0, + width: v, + // @ts-ignore + overflow: "truncate", + rotate: g + }; + } else if (a.type === "time") { + a.minInterval = Kje(n); + const l = lD.timeXAxisLabel; + l && (a.axisLabel = l); + } + return r === "vertical" && (o.nameLocation = "middle", o.nameGap = 25), r === "horizontal" ? { + xConfig: a, + yConfig: o + } : { + xConfig: o, + yConfig: a + }; +} +const Jje = [{ + label: yt("chart.basicBar"), + value: "basicBar" +}, { + label: yt("chart.stackedBar"), + value: "stackedBar" +}], Qje = function() { + return new $lowcoder_sdk.MultiCompBuilder({ + showLabel: $lowcoder_sdk.BoolControl, + type: $lowcoder_sdk.dropdownControl(Jje, "basicBar") + }, (e) => { + const t = { + type: "bar", + label: { + show: e.showLabel, + position: "top" + } + }; + return e.type === "stackedBar" && (t.stack = "stackValue"), t; + }).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [$lowcoder_sdk.showLabelPropertyView(e), e.type.propertyView({ + label: yt("chart.barType"), + radioButton: !0 + })] + })).build(); +}(), e5e = [{ + label: /* @__PURE__ */ dt($lowcoder_sdk.AlignBottom, {}), + value: "bottom" +}, { + label: /* @__PURE__ */ dt($lowcoder_sdk.AlignRight, {}), + value: "right" +}, { + label: /* @__PURE__ */ dt($lowcoder_sdk.AlignClose, {}), + value: "close" +}], t5e = function() { + return new $lowcoder_sdk.MultiCompBuilder({ + position: $lowcoder_sdk.dropdownControl(e5e, "bottom") + }, (e) => { + const t = { + top: "bottom", + type: "scroll" + }; + return e.position === "right" ? (t.top = "center", t.left = "right", t.orient = "vertical") : e.position === "close" && (t.show = !1), t; + }).setPropertyViewFn((e) => /* @__PURE__ */ dt(Ta, { + children: e.position.propertyView({ + label: yt("chart.legendPosition"), + radioButton: !0 + }) + })).build(); +}(), r5e = [{ + label: yt("chart.basicLine"), + value: "basicLine" +}, { + label: yt("chart.stackedLine"), + value: "stackedLine" +}, { + label: yt("chart.areaLine"), + value: "areaLine" +}], Cge = $lowcoder_sdk.withContext(new $lowcoder_sdk.MultiCompBuilder({ + value: $lowcoder_sdk.ColorOrBoolCodeControl +}, (e) => e.value).setPropertyViewFn((e) => e.value.propertyView({ + label: yt("chart.pointColorLabel"), + placeholder: "{{value < 25000}}", + tooltip: yt("chart.pointColorTooltip") +})).build(), ["seriesName", "value"]), n5e = function() { + return new $lowcoder_sdk.MultiCompBuilder({ + showLabel: $lowcoder_sdk.BoolControl, + type: $lowcoder_sdk.dropdownControl(r5e, "basicLine"), + smooth: $lowcoder_sdk.BoolControl, + itemColor: Cge + }, (e) => { + const t = { + type: "line", + label: { + show: e.showLabel + }, + itemStyle: { + color: (r) => { + if (!r.encode || !r.dimensionNames) + return r.color; + const n = r.dimensionNames[r.encode.y[0]], i = e.itemColor({ + seriesName: r.seriesName, + value: r.data[n] + }); + return i === "true" ? "red" : i === "false" || !i ? r.color : i; + } + } + }; + return e.type === "stackedLine" ? t.stack = "stackValue" : e.type === "areaLine" && (t.areaStyle = {}), e.smooth && (t.smooth = !0), t; + }).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [e.type.propertyView({ + label: yt("chart.lineType") + }), $lowcoder_sdk.showLabelPropertyView(e), e.smooth.propertyView({ + label: yt("chart.smooth") + }), e.itemColor.getPropertyView()] + })).build(); +}(), i5e = [{ + label: yt("chart.basicPie"), + value: "basicPie" +}, { + label: yt("chart.doughnutPie"), + value: "doughnutPie" +}, { + label: yt("chart.rosePie"), + value: "rosePie" +}], Qre = [65, 35, 20], a5e = function() { + return new $lowcoder_sdk.MultiCompBuilder({ + type: $lowcoder_sdk.dropdownControl(i5e, "basicPie") + }, (e) => { + const t = { + type: "pie", + label: { + show: !0, + formatter: "{d}%" + } + }; + return e.type === "rosePie" ? t.roseType = "area" : e.type === "doughnutPie" && (t.radius = ["40%", "60%"]), t; + }).setPropertyViewFn((e) => /* @__PURE__ */ dt(Ta, { + children: e.type.propertyView({ + label: yt("chart.pieType") + }) + })).build(); +}(); +function o5e(e, t, r) { + const n = Math.min(e, Qre.length), i = Qre[n - 1], o = Array.isArray(r.radius) ? [(i / 1.6).toFixed(2) + "%", i + "%"] : i + "%", l = 100 / n, u = (l * (t % n) + l / 2).toFixed(2) + "%", d = Math.floor(t / n) + 1, f = (100 / Math.floor((n * 2 + e - 1) / n) * d).toFixed(2) + "%"; + return { + radius: o, + center: [u, f] + }; +} +const s5e = [{ + label: yt("chart.circle"), + value: "circle" +}, { + label: yt("chart.rect"), + value: "rect" +}, { + label: yt("chart.triangle"), + value: "triangle" +}, { + label: yt("chart.diamond"), + value: "diamond" +}, { + label: yt("chart.pin"), + value: "pin" +}, { + label: yt("chart.arrow"), + value: "arrow" +}], l5e = function() { + return new $lowcoder_sdk.MultiCompBuilder({ + showLabel: $lowcoder_sdk.BoolControl, + shape: $lowcoder_sdk.dropdownControl(s5e, "circle") + }, (e) => ({ + type: "scatter", + symbol: e.shape, + label: { + show: e.showLabel + } + })).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [$lowcoder_sdk.showLabelPropertyView(e), e.shape.propertyView({ + label: yt("chart.scatterShape") + })] + })).build(); +}(); +function Tge(e, t) { + return { + seriesName: e, + columnName: t, + dataIndex: $lowcoder_sdk.genRandomKey() + }; +} +const c5e = { + columnName: $lowcoder_sdk.StringControl, + seriesName: $lowcoder_sdk.StringControl, + hide: $lowcoder_sdk.BoolControl, + // unique key, for sort + dataIndex: $lowcoder_sdk.valueComp("") +}, u5e = new $lowcoder_sdk.MultiCompBuilder(c5e, (e) => e).setPropertyViewFn(() => /* @__PURE__ */ dt(Ta, {})).build(); +class h5e extends u5e { + getPropertyViewWithData(t) { + return /* @__PURE__ */ gn(Ta, { + children: [this.children.seriesName.propertyView({ + label: yt("chart.seriesName") + }), /* @__PURE__ */ dt($lowcoder_sdk.Dropdown, { + value: this.children.columnName.getView(), + options: t, + label: yt("chart.dataColumns"), + onChange: (r) => { + this.children.columnName.dispatchChangeValueAction(r); + } + })] + }); + } +} +const d5e = $lowcoder_sdk.list(h5e); +class f5e extends d5e { + reduce(t) { + if (vUe(t, "chartDataChanged")) { + const r = this.genExampleSeriesActions(t.value.chartData); + return this.reduce(this.multiAction(r)); + } + return super.reduce(t); + } + genExampleSeriesActions(t) { + const r = []; + if (!t || t.length <= 0 || !t[0]) + return r; + let n = 0; + const i = this.getView().map((o) => o.getView().columnName); + return i.forEach((o) => { + var l; + ((l = t[0]) == null ? void 0 : l[o]) === void 0 && (r.push(this.deleteAction(0)), n++); + }), i.length > n || Object.keys(t[0]).filter((o) => !i.includes(o) && $lowcoder_sdk.isNumeric(t[0][o])).slice(0, 3).forEach((o) => r.push(this.pushAction(Tge(o, o)))), r; + } + dispatchDataChanged(t) { + this.dispatch(gUe({ + type: "chartDataChanged", + chartData: t + })); + } +} +const p5e = [{ + label: yt("chart.bar"), + value: "bar" +}, { + label: yt("chart.line"), + value: "line" +}, { + label: yt("chart.scatter"), + value: "scatter" +}, { + label: yt("chart.pie"), + value: "pie" +}], g5e = [{ + label: yt("chart.UIMode"), + value: "ui" +}, { + label: "ECharts JSON", + value: "json" +}, { + label: "Map", + value: "map" +}], v5e = [{ + label: yt("chart.select"), + value: "select", + description: yt("chart.selectDesc") +}, { + label: yt("chart.unSelect"), + value: "unselect", + description: yt("chart.unselectDesc") +}], m5e = [{ + label: yt("chart.mapReady"), + value: "mapReady", + description: yt("chart.mapReadyDesc") +}, { + label: yt("chart.zoomLevelChange"), + value: "zoomLevelChange", + description: yt("chart.zoomLevelChangeDesc") +}, { + label: yt("chart.centerPositionChange"), + value: "centerPositionChange", + description: yt("chart.centerPositionChangeDesc") +}], y5e = [{ + label: yt("chart.horizontal"), + value: "horizontal" +}, { + label: yt("chart.vertical"), + value: "vertical" +}], _5e = { + animation: !1, + xAxis: { + type: "category", + name: yt("chart.noData"), + nameLocation: "middle", + data: [], + axisLine: { + lineStyle: { + color: "#8B8FA3" + } + } + }, + yAxis: { + type: "value", + axisLabel: { + color: "#8B8FA3" + }, + splitLine: { + lineStyle: { + color: "#F0F0F0" + } + } + }, + tooltip: { + show: !1 + }, + series: [{ + data: [700], + type: "line", + itemStyle: { + opacity: 0 + } + }] +}, S5e = { + animation: !1, + tooltip: { + show: !1 + }, + legend: { + formatter: yt("chart.unknown"), + top: "bottom", + selectedMode: !1 + }, + color: ["#B8BBCC", "#CED0D9", "#DCDEE6", "#E6E6EB"], + series: [{ + type: "pie", + radius: "35%", + center: ["25%", "50%"], + silent: !0, + label: { + show: !1 + }, + data: [{ + name: "1", + value: 70 + }, { + name: "2", + value: 68 + }, { + name: "3", + value: 48 + }, { + name: "4", + value: 40 + }] + }, { + type: "pie", + radius: "35%", + center: ["75%", "50%"], + silent: !0, + label: { + show: !1 + }, + data: [{ + name: "1", + value: 70 + }, { + name: "2", + value: 68 + }, { + name: "3", + value: 48 + }, { + name: "4", + value: 40 + }] + }] +}, wge = (e) => { + if (!e) + return []; + const t = []; + return e.slice(0, 50).forEach((r) => { + Object.keys(r).forEach((n) => { + t.includes(n) || t.push(n); + }); + }), t; +}, b5e = { + bar: Qje, + line: n5e, + pie: a5e, + scatter: l5e +}, E5e = $lowcoder_sdk.withType(b5e, "bar"), C5e = { + title: $lowcoder_sdk.StringControl, + data: $lowcoder_sdk.jsonControl($lowcoder_sdk.toJSONObjectArray, lD.defaultDataSource), + xAxisKey: $lowcoder_sdk.valueComp(""), + // x-axis, key from data + xAxisDirection: $lowcoder_sdk.dropdownControl(y5e, "horizontal"), + series: f5e, + xConfig: Gje, + yConfig: Yje, + legendConfig: t5e, + chartConfig: E5e, + onUIEvent: $lowcoder_sdk.eventHandlerControl(v5e) +}, T5e = { + mapInstance: $lowcoder_sdk.stateComp(), + getMapInstance: $lowcoder_sdk.FunctionControl, + mapApiKey: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, ""), + mapZoomLevel: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 3), + mapCenterLng: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 15.932644), + mapCenterLat: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 50.942063), + mapOptions: $lowcoder_sdk.jsonControl($lowcoder_sdk.toObject, lD.defaultMapJsonOption), + onMapEvent: $lowcoder_sdk.eventHandlerControl(m5e), + showCharts: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0) +}, Ige = br(br({ + mode: $lowcoder_sdk.dropdownControl(g5e, "ui"), + echartsOption: $lowcoder_sdk.jsonControl($lowcoder_sdk.toObject, lD.defaultEchartsJsonOption), + selectedPoints: $lowcoder_sdk.stateComp([]) +}, C5e), T5e); +$lowcoder_sdk.uiChildren(Ige); +function w5e(e, t) { + const r = e.series.getView(), n = wge(e.data.getView()).map((u) => ({ + label: u, + value: u + })), i = /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: yt("chart.data"), + children: [e.data.propertyView({ + label: yt("chart.data") + }), /* @__PURE__ */ dt($lowcoder_sdk.Dropdown, { + value: e.chartConfig.children.compType.getView(), + options: p5e, + label: yt("chart.chartType"), + onChange: (u) => { + e.chartConfig.children.comp.children.hasOwnProperty("showLabel") ? e.chartConfig.dispatchChangeValueAction({ + compType: u, + comp: { + showLabel: e.chartConfig.children.comp.children.showLabel.toJsonValue() + } + }) : e.chartConfig.dispatchChangeValueAction({ + compType: u + }); + } + }), /* @__PURE__ */ dt($lowcoder_sdk.Dropdown, { + value: e.xAxisKey.getView(), + options: n, + label: yt("chart.xAxis"), + onChange: (u) => { + t(uH("xAxisKey", u)); + } + }), /* @__PURE__ */ dt($lowcoder_sdk.Option, { + items: r, + title: yt("chart.chartSeries"), + itemTitle: (u) => u.getView().seriesName, + popoverTitle: (u) => u.getView().columnName, + content: (u, d) => /* @__PURE__ */ gn(Ta, { + children: [u.getPropertyViewWithData(n), /* @__PURE__ */ dt($lowcoder_sdk.RedButton, { + onClick: () => { + $lowcoder_sdk.CustomModal.confirm({ + title: yt("chart.delete"), + content: yt("chart.confirmDelete") + `${u.getView().seriesName}?`, + onConfirm: () => e.series.dispatch(e.series.deleteAction(d)), + confirmBtnType: "delete", + okText: yt("chart.delete") + }); + }, + children: yt("chart.delete") + })] + }), + onAdd: () => { + n.length <= 0 || e.series.dispatch(e.series.pushAction(Tge(yt("chart.customSeries"), n[0].value))); + }, + onMove: (u, d) => { + const f = e.series.arrayMoveAction(u, d); + e.series.dispatch(f); + }, + hide: (u) => u.getView().hide, + onHide: (u, d) => u.children.hide.dispatchChangeValueAction(d), + dataIndex: (u) => u.getView().dataIndex + })] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.interaction, + children: e.onUIEvent.getPropertyView() + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: [e.title.propertyView({ + label: yt("chart.title") + }), e.chartConfig.children.compType.getView() !== "pie" && /* @__PURE__ */ gn(Ta, { + children: [e.xAxisDirection.propertyView({ + label: yt("chart.xAxisDirection"), + radioButton: !0 + }), e.xConfig.getPropertyView(), e.yConfig.getPropertyView()] + }), e.legendConfig.getPropertyView(), $lowcoder_sdk.hiddenPropertyView(e)] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.style, + children: e.chartConfig.getPropertyView() + })] + }), a = /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: yt("chart.config"), + children: e.echartsOption.propertyView({ + label: yt("chart.echartsOptionLabel"), + styleName: "higher", + tooltip: /* @__PURE__ */ gn("div", { + children: [/* @__PURE__ */ dt("a", { + href: yge, + target: "_blank", + rel: "noopener noreferrer", + children: yt("chart.echartsOptionTooltip") + }), /* @__PURE__ */ dt("br", {}), /* @__PURE__ */ dt("a", { + href: kje, + target: "_blank", + rel: "noopener noreferrer", + children: yt("chart.echartsOptionExamples") + })] + }) + }) + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: $lowcoder_sdk.hiddenPropertyView(e) + })] + }), o = /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: "Map Configuration", + children: [e.mapApiKey.propertyView({ + label: "API Key" + }), e.mapZoomLevel.propertyView({ + label: "Zoom Level" + }), $lowcoder_sdk.controlItem({}, /* @__PURE__ */ dt("b", { + style: { + marginTop: "8px" + }, + children: "Center Position" + })), e.mapCenterLng.propertyView({ + label: "Longitude" + }), e.mapCenterLat.propertyView({ + label: "Latitude" + }), e.showCharts.propertyView({ + label: "Show Charts" + })] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: "Map Data", + children: e.mapOptions.propertyView({ + label: yt("chart.echartsOptionLabel"), + styleName: "higher", + tooltip: /* @__PURE__ */ gn("div", { + children: [/* @__PURE__ */ dt("a", { + href: Nje, + target: "_blank", + rel: "noopener noreferrer", + children: yt("chart.echartsMapOptionTooltip") + }), /* @__PURE__ */ dt("br", {}), /* @__PURE__ */ dt("a", { + href: Lje, + target: "_blank", + rel: "noopener noreferrer", + children: yt("chart.echartsMapOptionExamples") + })] + }) + }) + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.interaction, + children: e.onMapEvent.getPropertyView() + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: $lowcoder_sdk.hiddenPropertyView(e) + })] + }), l = (u) => { + switch (u) { + case "ui": + return i; + case "json": + return a; + case "map": + return o; + } + }; + return /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: yt("chart.mode"), + children: e.mode.propertyView({ + label: "", + radioButton: !0 + }) + }), l(e.mode.getView())] + }); +} +var _H = function(e, t) { + return _H = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, n) { + r.__proto__ = n; + } || function(r, n) { + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && (r[i] = n[i]); + }, _H(e, t); +}; +function I5e(e, t) { + if (typeof t != "function" && t !== null) + throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); + _H(e, t); + function r() { + this.constructor = e; + } + e.prototype = t === null ? Object.create(t) : (r.prototype = t.prototype, new r()); +} +function x5e(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +} +var Ok = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}; +function A5e(e) { + var t = typeof e; + return e != null && (t == "object" || t == "function"); +} +var Q6 = A5e, R5e = typeof Ok == "object" && Ok && Ok.Object === Object && Ok, D5e = R5e, O5e = D5e, M5e = typeof self == "object" && self && self.Object === Object && self, k5e = O5e || M5e || Function("return this")(), xge = k5e, P5e = xge, N5e = function() { + return P5e.Date.now(); +}, L5e = N5e, F5e = /\s/; +function B5e(e) { + for (var t = e.length; t-- && F5e.test(e.charAt(t)); ) + ; + return t; +} +var U5e = B5e, j5e = U5e, $5e = /^\s+/; +function V5e(e) { + return e && e.slice(0, j5e(e) + 1).replace($5e, ""); +} +var z5e = V5e, H5e = xge, W5e = H5e.Symbol, Age = W5e, ene = Age, Rge = Object.prototype, G5e = Rge.hasOwnProperty, Y5e = Rge.toString, bA = ene ? ene.toStringTag : void 0; +function X5e(e) { + var t = G5e.call(e, bA), r = e[bA]; + try { + e[bA] = void 0; + var n = !0; + } catch (a) { + } + var i = Y5e.call(e); + return n && (t ? e[bA] = r : delete e[bA]), i; +} +var K5e = X5e, Z5e = Object.prototype, q5e = Z5e.toString; +function J5e(e) { + return q5e.call(e); +} +var Q5e = J5e, tne = Age, e$e = K5e, t$e = Q5e, r$e = "[object Null]", n$e = "[object Undefined]", rne = tne ? tne.toStringTag : void 0; +function i$e(e) { + return e == null ? e === void 0 ? n$e : r$e : rne && rne in Object(e) ? e$e(e) : t$e(e); +} +var a$e = i$e; +function o$e(e) { + return e != null && typeof e == "object"; +} +var s$e = o$e, l$e = a$e, c$e = s$e, u$e = "[object Symbol]"; +function h$e(e) { + return typeof e == "symbol" || c$e(e) && l$e(e) == u$e; +} +var d$e = h$e, f$e = z5e, nne = Q6, p$e = d$e, ine = 0 / 0, g$e = /^[-+]0x[0-9a-f]+$/i, v$e = /^0b[01]+$/i, m$e = /^0o[0-7]+$/i, y$e = parseInt; +function _$e(e) { + if (typeof e == "number") + return e; + if (p$e(e)) + return ine; + if (nne(e)) { + var t = typeof e.valueOf == "function" ? e.valueOf() : e; + e = nne(t) ? t + "" : t; + } + if (typeof e != "string") + return e === 0 ? e : +e; + e = f$e(e); + var r = v$e.test(e); + return r || m$e.test(e) ? y$e(e.slice(2), r ? 2 : 8) : g$e.test(e) ? ine : +e; +} +var S$e = _$e, b$e = Q6, SV = L5e, ane = S$e, E$e = "Expected a function", C$e = Math.max, T$e = Math.min; +function w$e(e, t, r) { + var n, i, a, o, l, u, d = 0, f = !1, g = !1, v = !0; + if (typeof e != "function") + throw new TypeError(E$e); + t = ane(t) || 0, b$e(r) && (f = !!r.leading, g = "maxWait" in r, a = g ? C$e(ane(r.maxWait) || 0, t) : a, v = "trailing" in r ? !!r.trailing : v); + function y(b) { + var R = n, M = i; + return n = i = void 0, d = b, o = e.apply(M, R), o; + } + function C(b) { + return d = b, l = setTimeout(_, t), f ? y(b) : o; + } + function A(b) { + var R = b - u, M = b - d, O = t - R; + return g ? T$e(O, a - M) : O; + } + function S(b) { + var R = b - u, M = b - d; + return u === void 0 || R >= t || R < 0 || g && M >= a; + } + function _() { + var b = SV(); + if (S(b)) + return E(b); + l = setTimeout(_, A(b)); + } + function E(b) { + return l = void 0, v && n ? y(b) : (n = i = void 0, o); + } + function I() { + l !== void 0 && clearTimeout(l), d = 0, n = u = i = l = void 0; + } + function w() { + return l === void 0 ? o : E(SV()); + } + function x() { + var b = SV(), R = S(b); + if (n = arguments, i = this, u = b, R) { + if (l === void 0) + return C(u); + if (g) + return clearTimeout(l), l = setTimeout(_, t), y(u); + } + return l === void 0 && (l = setTimeout(_, t)), o; + } + return x.cancel = I, x.flush = w, x; +} +var Dge = w$e, I$e = Dge, x$e = Q6, A$e = "Expected a function"; +function R$e(e, t, r) { + var n = !0, i = !0; + if (typeof e != "function") + throw new TypeError(A$e); + return x$e(r) && (n = "leading" in r ? !!r.leading : n, i = "trailing" in r ? !!r.trailing : i), I$e(e, t, { + leading: n, + maxWait: t, + trailing: i + }); +} +var D$e = R$e, O$e = function(e, t, r, n) { + switch (t) { + case "debounce": + return Dge(e, r, n); + case "throttle": + return D$e(e, r, n); + default: + return e; + } +}, SH = function(e) { + return typeof e == "function"; +}, XT = function() { + return typeof window == "undefined"; +}, one = function(e) { + return e instanceof Element || e instanceof HTMLDocument; +}, M$e = function(e, t, r, n) { + return function(i) { + var a = i.width, o = i.height; + t(function(l) { + return l.width === a && l.height === o || l.width === a && !n || l.height === o && !r ? l : (e && SH(e) && e(a, o), { width: a, height: o }); + }); + }; +}, uF = ( + /** @class */ + function(e) { + I5e(t, e); + function t(r) { + var n = e.call(this, r) || this; + n.cancelHandler = function() { + n.resizeHandler && n.resizeHandler.cancel && (n.resizeHandler.cancel(), n.resizeHandler = null); + }, n.attachObserver = function() { + var d = n.props, f = d.targetRef, g = d.observerOptions; + if (!XT()) { + f && f.current && (n.targetRef.current = f.current); + var v = n.getElement(); + v && (n.observableElement && n.observableElement === v || (n.observableElement = v, n.resizeObserver.observe(v, g))); + } + }, n.getElement = function() { + var d = n.props, f = d.querySelector, g = d.targetDomEl; + if (XT()) + return null; + if (f) + return document.querySelector(f); + if (g && one(g)) + return g; + if (n.targetRef && one(n.targetRef.current)) + return n.targetRef.current; + var v = $react_dom.findDOMNode(n); + if (!v) + return null; + var y = n.getRenderType(); + switch (y) { + case "renderProp": + return v; + case "childFunction": + return v; + case "child": + return v; + case "childArray": + return v; + default: + return v.parentElement; + } + }, n.createResizeHandler = function(d) { + var f = n.props, g = f.handleWidth, v = g === void 0 ? !0 : g, y = f.handleHeight, C = y === void 0 ? !0 : y, A = f.onResize; + if (!(!v && !C)) { + var S = M$e(A, n.setState.bind(n), v, C); + d.forEach(function(_) { + var E = _ && _.contentRect || {}, I = E.width, w = E.height, x = !n.skipOnMount && !XT(); + x && S({ width: I, height: w }), n.skipOnMount = !1; + }); + } + }, n.getRenderType = function() { + var d = n.props, f = d.render, g = d.children; + return SH(f) ? "renderProp" : SH(g) ? "childFunction" : $react.isValidElement(g) ? "child" : Array.isArray(g) ? "childArray" : "parent"; + }; + var i = r.skipOnMount, a = r.refreshMode, o = r.refreshRate, l = o === void 0 ? 1e3 : o, u = r.refreshOptions; + return n.state = { + width: void 0, + height: void 0 + }, n.skipOnMount = i, n.targetRef = $react.createRef(), n.observableElement = null, XT() || (n.resizeHandler = O$e(n.createResizeHandler, a, l, u), n.resizeObserver = new window.ResizeObserver(n.resizeHandler)), n; + } + return t.prototype.componentDidMount = function() { + this.attachObserver(); + }, t.prototype.componentDidUpdate = function() { + this.attachObserver(); + }, t.prototype.componentWillUnmount = function() { + XT() || (this.observableElement = null, this.resizeObserver.disconnect(), this.cancelHandler()); + }, t.prototype.render = function() { + var r = this.props, n = r.render, i = r.children, a = r.nodeType, o = a === void 0 ? "div" : a, l = this.state, u = l.width, d = l.height, f = { width: u, height: d, targetRef: this.targetRef }, g = this.getRenderType(), v; + switch (g) { + case "renderProp": + return n && n(f); + case "childFunction": + return v = i, v(f); + case "child": + if (v = i, v.type && typeof v.type == "string") { + f.targetRef; + var y = x5e(f, ["targetRef"]); + return $react.cloneElement(v, y); + } + return $react.cloneElement(v, f); + case "childArray": + return v = i, v.map(function(C) { + return !!C && $react.cloneElement(C, f); + }); + default: + return $react.createElement(o, null); + } + }, t; + }($react.PureComponent) +); +XT() ? $react.useEffect : $react.useLayoutEffect; +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var bH = function(e, t) { + return bH = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, n) { + r.__proto__ = n; + } || function(r, n) { + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && (r[i] = n[i]); + }, bH(e, t); +}; +function Dt(e, t) { + if (typeof t != "function" && t !== null) + throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); + bH(e, t); + function r() { + this.constructor = e; + } + e.prototype = t === null ? Object.create(t) : (r.prototype = t.prototype, new r()); +} +var k$e = function() { + function e() { + this.firefox = !1, this.ie = !1, this.edge = !1, this.newEdge = !1, this.weChat = !1; + } + return e; +}(), P$e = function() { + function e() { + this.browser = new k$e(), this.node = !1, this.wxa = !1, this.worker = !1, this.svgSupported = !1, this.touchEventsSupported = !1, this.pointerEventsSupported = !1, this.domSupported = !1, this.transformSupported = !1, this.transform3dSupported = !1, this.hasGlobalWindow = typeof window != "undefined"; + } + return e; +}(), fb = new P$e(); +typeof wx == "object" && typeof wx.getSystemInfoSync == "function" ? (fb.wxa = !0, fb.touchEventsSupported = !0) : typeof document == "undefined" && typeof self != "undefined" ? fb.worker = !0 : typeof navigator == "undefined" || navigator.userAgent.indexOf("Node.js") === 0 ? (fb.node = !0, fb.svgSupported = !0) : N$e(navigator.userAgent, fb); +function N$e(e, t) { + var r = t.browser, n = e.match(/Firefox\/([\d.]+)/), i = e.match(/MSIE\s([\d.]+)/) || e.match(/Trident\/.+?rv:(([\d.]+))/), a = e.match(/Edge?\/([\d.]+)/), o = /micromessenger/i.test(e); + n && (r.firefox = !0, r.version = n[1]), i && (r.ie = !0, r.version = i[1]), a && (r.edge = !0, r.version = a[1], r.newEdge = +a[1].split(".")[0] > 18), o && (r.weChat = !0), t.svgSupported = typeof SVGRect != "undefined", t.touchEventsSupported = "ontouchstart" in window && !r.ie && !r.edge, t.pointerEventsSupported = "onpointerdown" in window && (r.edge || r.ie && +r.version >= 11), t.domSupported = typeof document != "undefined"; + var l = document.documentElement.style; + t.transform3dSupported = (r.ie && "transition" in l || r.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix() || "MozPerspective" in l) && !("OTransition" in l), t.transformSupported = t.transform3dSupported || r.ie && +r.version >= 9; +} +const Yi = fb; +var e8 = 12, Oge = "sans-serif", p0 = e8 + "px " + Oge, L$e = 20, F$e = 100, B$e = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"; +function U$e(e) { + var t = {}; + if (typeof JSON == "undefined") + return t; + for (var r = 0; r < e.length; r++) { + var n = String.fromCharCode(r + 32), i = (e.charCodeAt(r) - L$e) / F$e; + t[n] = i; + } + return t; +} +var j$e = U$e(B$e), kp = { + createCanvas: function() { + return typeof document != "undefined" && document.createElement("canvas"); + }, + measureText: function() { + var e, t; + return function(r, n) { + if (!e) { + var i = kp.createCanvas(); + e = i && i.getContext("2d"); + } + if (e) + return t !== n && (t = e.font = n || p0), e.measureText(r); + r = r || "", n = n || p0; + var a = /(\d+)px/.exec(n), o = a && +a[1] || e8, l = 0; + if (n.indexOf("mono") >= 0) + l = o * r.length; + else + for (var u = 0; u < r.length; u++) { + var d = j$e[r[u]]; + l += d == null ? o : d * o; + } + return { width: l }; + }; + }(), + loadImage: function(e, t, r) { + var n = new Image(); + return n.onload = t, n.onerror = r, n.src = e, n; + } +}; +function t8(e) { + for (var t in kp) + e[t] && (kp[t] = e[t]); +} +var Mge = Cf([ + "Function", + "RegExp", + "Date", + "Error", + "CanvasGradient", + "CanvasPattern", + "Image", + "Canvas" +], function(e, t) { + return e["[object " + t + "]"] = !0, e; +}, {}), kge = Cf([ + "Int8", + "Uint8", + "Uint8Clamped", + "Int16", + "Uint16", + "Int32", + "Uint32", + "Float32", + "Float64" +], function(e, t) { + return e["[object " + t + "Array]"] = !0, e; +}, {}), uI = Object.prototype.toString, hF = Array.prototype, $$e = hF.forEach, V$e = hF.filter, r8 = hF.slice, z$e = hF.map, sne = function() { +}.constructor, Mk = sne ? sne.prototype : null, n8 = "__proto__", H$e = 2311; +function i8() { + return H$e++; +} +function dF() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + typeof console != "undefined" && console.error.apply(console, e); +} +function cn(e) { + if (e == null || typeof e != "object") + return e; + var t = e, r = uI.call(e); + if (r === "[object Array]") { + if (!Sw(e)) { + t = []; + for (var n = 0, i = e.length; n < i; n++) + t[n] = cn(e[n]); + } + } else if (kge[r]) { + if (!Sw(e)) { + var a = e.constructor; + if (a.from) + t = a.from(e); + else { + t = new a(e.length); + for (var n = 0, i = e.length; n < i; n++) + t[n] = e[n]; + } + } + } else if (!Mge[r] && !Sw(e) && !cE(e)) { + t = {}; + for (var o in e) + e.hasOwnProperty(o) && o !== n8 && (t[o] = cn(e[o])); + } + return t; +} +function Qn(e, t, r) { + if (!sn(t) || !sn(e)) + return r ? cn(t) : e; + for (var n in t) + if (t.hasOwnProperty(n) && n !== n8) { + var i = e[n], a = t[n]; + sn(a) && sn(i) && !qt(a) && !qt(i) && !cE(a) && !cE(i) && !EH(a) && !EH(i) && !Sw(a) && !Sw(i) ? Qn(i, a, r) : (r || !(n in e)) && (e[n] = cn(t[n])); + } + return e; +} +function fF(e, t) { + for (var r = e[0], n = 1, i = e.length; n < i; n++) + r = Qn(r, e[n], t); + return r; +} +function $t(e, t) { + if (Object.assign) + Object.assign(e, t); + else + for (var r in t) + t.hasOwnProperty(r) && r !== n8 && (e[r] = t[r]); + return e; +} +function Jr(e, t, r) { + for (var n = Ri(t), i = 0; i < n.length; i++) { + var a = n[i]; + (r ? t[a] != null : e[a] == null) && (e[a] = t[a]); + } + return e; +} +var W$e = kp.createCanvas; +function di(e, t) { + if (e) { + if (e.indexOf) + return e.indexOf(t); + for (var r = 0, n = e.length; r < n; r++) + if (e[r] === t) + return r; + } + return -1; +} +function a8(e, t) { + var r = e.prototype; + function n() { + } + n.prototype = t.prototype, e.prototype = new n(); + for (var i in r) + r.hasOwnProperty(i) && (e.prototype[i] = r[i]); + e.prototype.constructor = e, e.superClass = t; +} +function Fs(e, t, r) { + if (e = "prototype" in e ? e.prototype : e, t = "prototype" in t ? t.prototype : t, Object.getOwnPropertyNames) + for (var n = Object.getOwnPropertyNames(t), i = 0; i < n.length; i++) { + var a = n[i]; + a !== "constructor" && (r ? t[a] != null : e[a] == null) && (e[a] = t[a]); + } + else + Jr(e, t, r); +} +function Sc(e) { + return !e || typeof e == "string" ? !1 : typeof e.length == "number"; +} +function Ee(e, t, r) { + if (e && t) + if (e.forEach && e.forEach === $$e) + e.forEach(t, r); + else if (e.length === +e.length) + for (var n = 0, i = e.length; n < i; n++) + t.call(r, e[n], n, e); + else + for (var a in e) + e.hasOwnProperty(a) && t.call(r, e[a], a, e); +} +function er(e, t, r) { + if (!e) + return []; + if (!t) + return pF(e); + if (e.map && e.map === z$e) + return e.map(t, r); + for (var n = [], i = 0, a = e.length; i < a; i++) + n.push(t.call(r, e[i], i, e)); + return n; +} +function Cf(e, t, r, n) { + if (e && t) { + for (var i = 0, a = e.length; i < a; i++) + r = t.call(n, r, e[i], i, e); + return r; + } +} +function Ma(e, t, r) { + if (!e) + return []; + if (!t) + return pF(e); + if (e.filter && e.filter === V$e) + return e.filter(t, r); + for (var n = [], i = 0, a = e.length; i < a; i++) + t.call(r, e[i], i, e) && n.push(e[i]); + return n; +} +function Pge(e, t, r) { + if (e && t) { + for (var n = 0, i = e.length; n < i; n++) + if (t.call(r, e[n], n, e)) + return e[n]; + } +} +function Ri(e) { + if (!e) + return []; + if (Object.keys) + return Object.keys(e); + var t = []; + for (var r in e) + e.hasOwnProperty(r) && t.push(r); + return t; +} +function G$e(e, t) { + for (var r = [], n = 2; n < arguments.length; n++) + r[n - 2] = arguments[n]; + return function() { + return e.apply(t, r.concat(r8.call(arguments))); + }; +} +var Ar = Mk && Kr(Mk.bind) ? Mk.call.bind(Mk.bind) : G$e; +function Ln(e) { + for (var t = [], r = 1; r < arguments.length; r++) + t[r - 1] = arguments[r]; + return function() { + return e.apply(this, t.concat(r8.call(arguments))); + }; +} +function qt(e) { + return Array.isArray ? Array.isArray(e) : uI.call(e) === "[object Array]"; +} +function Kr(e) { + return typeof e == "function"; +} +function wr(e) { + return typeof e == "string"; +} +function dL(e) { + return uI.call(e) === "[object String]"; +} +function Qi(e) { + return typeof e == "number"; +} +function sn(e) { + var t = typeof e; + return t === "function" || !!e && t === "object"; +} +function EH(e) { + return !!Mge[uI.call(e)]; +} +function Nu(e) { + return !!kge[uI.call(e)]; +} +function cE(e) { + return typeof e == "object" && typeof e.nodeType == "number" && typeof e.ownerDocument == "object"; +} +function uD(e) { + return e.colorStops != null; +} +function Nge(e) { + return e.image != null; +} +function Lge(e) { + return uI.call(e) === "[object RegExp]"; +} +function Bw(e) { + return e !== e; +} +function kl() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + for (var r = 0, n = e.length; r < n; r++) + if (e[r] != null) + return e[r]; +} +function Fn(e, t) { + return e != null ? e : t; +} +function Ap(e, t, r) { + return e != null ? e : t != null ? t : r; +} +function pF(e) { + for (var t = [], r = 1; r < arguments.length; r++) + t[r - 1] = arguments[r]; + return r8.apply(e, t); +} +function gF(e) { + if (typeof e == "number") + return [e, e, e, e]; + var t = e.length; + return t === 2 ? [e[0], e[1], e[0], e[1]] : t === 3 ? [e[0], e[1], e[2], e[1]] : e; +} +function Qc(e, t) { + if (!e) + throw new Error(t); +} +function yf(e) { + return e == null ? null : typeof e.trim == "function" ? e.trim() : e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); +} +var Fge = "__ec_primitive__"; +function aR(e) { + e[Fge] = !0; +} +function Sw(e) { + return e[Fge]; +} +var Y$e = function() { + function e() { + this.data = {}; + } + return e.prototype.delete = function(t) { + var r = this.has(t); + return r && delete this.data[t], r; + }, e.prototype.has = function(t) { + return this.data.hasOwnProperty(t); + }, e.prototype.get = function(t) { + return this.data[t]; + }, e.prototype.set = function(t, r) { + return this.data[t] = r, this; + }, e.prototype.keys = function() { + return Ri(this.data); + }, e.prototype.forEach = function(t) { + var r = this.data; + for (var n in r) + r.hasOwnProperty(n) && t(r[n], n); + }, e; +}(), Bge = typeof Map == "function"; +function X$e() { + return Bge ? /* @__PURE__ */ new Map() : new Y$e(); +} +var Uge = function() { + function e(t) { + var r = qt(t); + this.data = X$e(); + var n = this; + t instanceof e ? t.each(i) : t && Ee(t, i); + function i(a, o) { + r ? n.set(a, o) : n.set(o, a); + } + } + return e.prototype.hasKey = function(t) { + return this.data.has(t); + }, e.prototype.get = function(t) { + return this.data.get(t); + }, e.prototype.set = function(t, r) { + return this.data.set(t, r), r; + }, e.prototype.each = function(t, r) { + this.data.forEach(function(n, i) { + t.call(r, n, i); + }); + }, e.prototype.keys = function() { + var t = this.data.keys(); + return Bge ? Array.from(t) : t; + }, e.prototype.removeKey = function(t) { + this.data.delete(t); + }, e; +}(); +function $r(e) { + return new Uge(e); +} +function oR(e, t) { + for (var r = new e.constructor(e.length + t.length), n = 0; n < e.length; n++) + r[n] = e[n]; + for (var i = e.length, n = 0; n < t.length; n++) + r[n + i] = t[n]; + return r; +} +function hD(e, t) { + var r; + if (Object.create) + r = Object.create(e); + else { + var n = function() { + }; + n.prototype = e, r = new n(); + } + return t && $t(r, t), r; +} +function o8(e) { + var t = e.style; + t.webkitUserSelect = "none", t.userSelect = "none", t.webkitTapHighlightColor = "rgba(0,0,0,0)", t["-webkit-touch-callout"] = "none"; +} +function Lr(e, t) { + return e.hasOwnProperty(t); +} +function Ls() { +} +var T1 = 180 / Math.PI; +const jge = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + HashMap: Uge, + RADIAN_TO_DEGREE: T1, + assert: Qc, + bind: Ar, + clone: cn, + concatArray: oR, + createCanvas: W$e, + createHashMap: $r, + createObject: hD, + curry: Ln, + defaults: Jr, + disableUserSelect: o8, + each: Ee, + eqNaN: Bw, + extend: $t, + filter: Ma, + find: Pge, + guid: i8, + hasOwn: Lr, + indexOf: di, + inherits: a8, + isArray: qt, + isArrayLike: Sc, + isBuiltInObject: EH, + isDom: cE, + isFunction: Kr, + isGradientObject: uD, + isImagePatternObject: Nge, + isNumber: Qi, + isObject: sn, + isPrimitive: Sw, + isRegExp: Lge, + isString: wr, + isStringSafe: dL, + isTypedArray: Nu, + keys: Ri, + logError: dF, + map: er, + merge: Qn, + mergeAll: fF, + mixin: Fs, + noop: Ls, + normalizeCssArray: gF, + reduce: Cf, + retrieve: kl, + retrieve2: Fn, + retrieve3: Ap, + setAsPrimitive: aR, + slice: pF, + trim: yf +}, Symbol.toStringTag, { value: "Module" })); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var CH = function(e, t) { + return CH = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, n) { + r.__proto__ = n; + } || function(r, n) { + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && (r[i] = n[i]); + }, CH(e, t); +}; +function No(e, t) { + if (typeof t != "function" && t !== null) + throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); + CH(e, t); + function r() { + this.constructor = e; + } + e.prototype = t === null ? Object.create(t) : (r.prototype = t.prototype, new r()); +} +function A0(e, t) { + return e == null && (e = 0), t == null && (t = 0), [e, t]; +} +function Wc(e, t) { + return e[0] = t[0], e[1] = t[1], e; +} +function qg(e) { + return [e[0], e[1]]; +} +function $ge(e, t, r) { + return e[0] = t, e[1] = r, e; +} +function TH(e, t, r) { + return e[0] = t[0] + r[0], e[1] = t[1] + r[1], e; +} +function fL(e, t, r, n) { + return e[0] = t[0] + r[0] * n, e[1] = t[1] + r[1] * n, e; +} +function Y_(e, t, r) { + return e[0] = t[0] - r[0], e[1] = t[1] - r[1], e; +} +function sR(e) { + return Math.sqrt(s8(e)); +} +var K$e = sR; +function s8(e) { + return e[0] * e[0] + e[1] * e[1]; +} +var Z$e = s8; +function q$e(e, t, r) { + return e[0] = t[0] * r[0], e[1] = t[1] * r[1], e; +} +function J$e(e, t, r) { + return e[0] = t[0] / r[0], e[1] = t[1] / r[1], e; +} +function Q$e(e, t) { + return e[0] * t[0] + e[1] * t[1]; +} +function w1(e, t, r) { + return e[0] = t[0] * r, e[1] = t[1] * r, e; +} +function AE(e, t) { + var r = sR(t); + return r === 0 ? (e[0] = 0, e[1] = 0) : (e[0] = t[0] / r, e[1] = t[1] / r), e; +} +function pL(e, t) { + return Math.sqrt((e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1])); +} +var Om = pL; +function Vge(e, t) { + return (e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1]); +} +var o0 = Vge; +function eVe(e, t) { + return e[0] = -t[0], e[1] = -t[1], e; +} +function I1(e, t, r, n) { + return e[0] = t[0] + n * (r[0] - t[0]), e[1] = t[1] + n * (r[1] - t[1]), e; +} +function Jl(e, t, r) { + var n = t[0], i = t[1]; + return e[0] = r[0] * n + r[2] * i + r[4], e[1] = r[1] * n + r[3] * i + r[5], e; +} +function Mm(e, t, r) { + return e[0] = Math.min(t[0], r[0]), e[1] = Math.min(t[1], r[1]), e; +} +function km(e, t, r) { + return e[0] = Math.max(t[0], r[0]), e[1] = Math.max(t[1], r[1]), e; +} +const zge = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + add: TH, + applyTransform: Jl, + clone: qg, + copy: Wc, + create: A0, + dist: Om, + distSquare: o0, + distance: pL, + distanceSquare: Vge, + div: J$e, + dot: Q$e, + len: sR, + lenSquare: s8, + length: K$e, + lengthSquare: Z$e, + lerp: I1, + max: km, + min: Mm, + mul: q$e, + negate: eVe, + normalize: AE, + scale: w1, + scaleAndAdd: fL, + set: $ge, + sub: Y_ +}, Symbol.toStringTag, { value: "Module" })); +var _T = function() { + function e(t, r) { + this.target = t, this.topTarget = r && r.topTarget; + } + return e; +}(), tVe = function() { + function e(t) { + this.handler = t, t.on("mousedown", this._dragStart, this), t.on("mousemove", this._drag, this), t.on("mouseup", this._dragEnd, this); + } + return e.prototype._dragStart = function(t) { + for (var r = t.target; r && !r.draggable; ) + r = r.parent || r.__hostTarget; + r && (this._draggingTarget = r, r.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this.handler.dispatchToElement(new _T(r, t), "dragstart", t.event)); + }, e.prototype._drag = function(t) { + var r = this._draggingTarget; + if (r) { + var n = t.offsetX, i = t.offsetY, a = n - this._x, o = i - this._y; + this._x = n, this._y = i, r.drift(a, o, t), this.handler.dispatchToElement(new _T(r, t), "drag", t.event); + var l = this.handler.findHover(n, i, r).target, u = this._dropTarget; + this._dropTarget = l, r !== l && (u && l !== u && this.handler.dispatchToElement(new _T(u, t), "dragleave", t.event), l && l !== u && this.handler.dispatchToElement(new _T(l, t), "dragenter", t.event)); + } + }, e.prototype._dragEnd = function(t) { + var r = this._draggingTarget; + r && (r.dragging = !1), this.handler.dispatchToElement(new _T(r, t), "dragend", t.event), this._dropTarget && this.handler.dispatchToElement(new _T(this._dropTarget, t), "drop", t.event), this._draggingTarget = null, this._dropTarget = null; + }, e; +}(); +const rVe = tVe; +var nVe = function() { + function e(t) { + t && (this._$eventProcessor = t); + } + return e.prototype.on = function(t, r, n, i) { + this._$handlers || (this._$handlers = {}); + var a = this._$handlers; + if (typeof r == "function" && (i = n, n = r, r = null), !n || !t) + return this; + var o = this._$eventProcessor; + r != null && o && o.normalizeQuery && (r = o.normalizeQuery(r)), a[t] || (a[t] = []); + for (var l = 0; l < a[t].length; l++) + if (a[t][l].h === n) + return this; + var u = { + h: n, + query: r, + ctx: i || this, + callAtLast: n.zrEventfulCallAtLast + }, d = a[t].length - 1, f = a[t][d]; + return f && f.callAtLast ? a[t].splice(d, 0, u) : a[t].push(u), this; + }, e.prototype.isSilent = function(t) { + var r = this._$handlers; + return !r || !r[t] || !r[t].length; + }, e.prototype.off = function(t, r) { + var n = this._$handlers; + if (!n) + return this; + if (!t) + return this._$handlers = {}, this; + if (r) { + if (n[t]) { + for (var i = [], a = 0, o = n[t].length; a < o; a++) + n[t][a].h !== r && i.push(n[t][a]); + n[t] = i; + } + n[t] && n[t].length === 0 && delete n[t]; + } else + delete n[t]; + return this; + }, e.prototype.trigger = function(t) { + for (var r = [], n = 1; n < arguments.length; n++) + r[n - 1] = arguments[n]; + if (!this._$handlers) + return this; + var i = this._$handlers[t], a = this._$eventProcessor; + if (i) + for (var o = r.length, l = i.length, u = 0; u < l; u++) { + var d = i[u]; + if (!(a && a.filter && d.query != null && !a.filter(t, d.query))) + switch (o) { + case 0: + d.h.call(d.ctx); + break; + case 1: + d.h.call(d.ctx, r[0]); + break; + case 2: + d.h.call(d.ctx, r[0], r[1]); + break; + default: + d.h.apply(d.ctx, r); + break; + } + } + return a && a.afterTrigger && a.afterTrigger(t), this; + }, e.prototype.triggerWithContext = function(t) { + for (var r = [], n = 1; n < arguments.length; n++) + r[n - 1] = arguments[n]; + if (!this._$handlers) + return this; + var i = this._$handlers[t], a = this._$eventProcessor; + if (i) + for (var o = r.length, l = r[o - 1], u = i.length, d = 0; d < u; d++) { + var f = i[d]; + if (!(a && a.filter && f.query != null && !a.filter(t, f.query))) + switch (o) { + case 0: + f.h.call(l); + break; + case 1: + f.h.call(l, r[0]); + break; + case 2: + f.h.call(l, r[0], r[1]); + break; + default: + f.h.apply(l, r.slice(1, o - 1)); + break; + } + } + return a && a.afterTrigger && a.afterTrigger(t), this; + }, e; +}(); +const Rf = nVe; +var iVe = Math.log(2); +function wH(e, t, r, n, i, a) { + var o = n + "-" + i, l = e.length; + if (a.hasOwnProperty(o)) + return a[o]; + if (t === 1) { + var u = Math.round(Math.log((1 << l) - 1 & ~i) / iVe); + return e[r][u]; + } + for (var d = n | 1 << r, f = r + 1; n & 1 << f; ) + f++; + for (var g = 0, v = 0, y = 0; v < l; v++) { + var C = 1 << v; + C & i || (g += (y % 2 ? -1 : 1) * e[r][v] * wH(e, t - 1, f, d, i | C, a), y++); + } + return a[o] = g, g; +} +function lne(e, t) { + var r = [ + [e[0], e[1], 1, 0, 0, 0, -t[0] * e[0], -t[0] * e[1]], + [0, 0, 0, e[0], e[1], 1, -t[1] * e[0], -t[1] * e[1]], + [e[2], e[3], 1, 0, 0, 0, -t[2] * e[2], -t[2] * e[3]], + [0, 0, 0, e[2], e[3], 1, -t[3] * e[2], -t[3] * e[3]], + [e[4], e[5], 1, 0, 0, 0, -t[4] * e[4], -t[4] * e[5]], + [0, 0, 0, e[4], e[5], 1, -t[5] * e[4], -t[5] * e[5]], + [e[6], e[7], 1, 0, 0, 0, -t[6] * e[6], -t[6] * e[7]], + [0, 0, 0, e[6], e[7], 1, -t[7] * e[6], -t[7] * e[7]] + ], n = {}, i = wH(r, 8, 0, 0, 0, n); + if (i !== 0) { + for (var a = [], o = 0; o < 8; o++) + for (var l = 0; l < 8; l++) + a[l] == null && (a[l] = 0), a[l] += ((o + l) % 2 ? -1 : 1) * wH(r, 7, o === 0 ? 1 : 0, 1 << o, 1 << l, n) / i * t[o]; + return function(u, d, f) { + var g = d * a[6] + f * a[7] + 1; + u[0] = (d * a[0] + f * a[1] + a[2]) / g, u[1] = (d * a[3] + f * a[4] + a[5]) / g; + }; + } +} +var cne = "___zrEVENTSAVED", bV = []; +function aVe(e, t, r, n, i) { + return IH(bV, t, n, i, !0) && IH(e, r, bV[0], bV[1]); +} +function IH(e, t, r, n, i) { + if (t.getBoundingClientRect && Yi.domSupported && !Hge(t)) { + var a = t[cne] || (t[cne] = {}), o = oVe(t, a), l = sVe(o, a, i); + if (l) + return l(e, r, n), !0; + } + return !1; +} +function oVe(e, t) { + var r = t.markers; + if (r) + return r; + r = t.markers = []; + for (var n = ["left", "right"], i = ["top", "bottom"], a = 0; a < 4; a++) { + var o = document.createElement("div"), l = o.style, u = a % 2, d = (a >> 1) % 2; + l.cssText = [ + "position: absolute", + "visibility: hidden", + "padding: 0", + "margin: 0", + "border-width: 0", + "user-select: none", + "width:0", + "height:0", + n[u] + ":0", + i[d] + ":0", + n[1 - u] + ":auto", + i[1 - d] + ":auto", + "" + ].join("!important;"), e.appendChild(o), r.push(o); + } + return r; +} +function sVe(e, t, r) { + for (var n = r ? "invTrans" : "trans", i = t[n], a = t.srcCoords, o = [], l = [], u = !0, d = 0; d < 4; d++) { + var f = e[d].getBoundingClientRect(), g = 2 * d, v = f.left, y = f.top; + o.push(v, y), u = u && a && v === a[g] && y === a[g + 1], l.push(e[d].offsetLeft, e[d].offsetTop); + } + return u && i ? i : (t.srcCoords = o, t[n] = r ? lne(l, o) : lne(o, l)); +} +function Hge(e) { + return e.nodeName.toUpperCase() === "CANVAS"; +} +var lVe = /([&<>"'])/g, cVe = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" +}; +function Du(e) { + return e == null ? "" : (e + "").replace(lVe, function(t, r) { + return cVe[r]; + }); +} +var uVe = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, EV = [], hVe = Yi.browser.firefox && +Yi.browser.version.split(".")[0] < 39; +function xH(e, t, r, n) { + return r = r || {}, n ? une(e, t, r) : hVe && t.layerX != null && t.layerX !== t.offsetX ? (r.zrX = t.layerX, r.zrY = t.layerY) : t.offsetX != null ? (r.zrX = t.offsetX, r.zrY = t.offsetY) : une(e, t, r), r; +} +function une(e, t, r) { + if (Yi.domSupported && e.getBoundingClientRect) { + var n = t.clientX, i = t.clientY; + if (Hge(e)) { + var a = e.getBoundingClientRect(); + r.zrX = n - a.left, r.zrY = i - a.top; + return; + } else if (IH(EV, e, n, i)) { + r.zrX = EV[0], r.zrY = EV[1]; + return; + } + } + r.zrX = r.zrY = 0; +} +function l8(e) { + return e || window.event; +} +function cf(e, t, r) { + if (t = l8(t), t.zrX != null) + return t; + var n = t.type, i = n && n.indexOf("touch") >= 0; + if (i) { + var o = n !== "touchend" ? t.targetTouches[0] : t.changedTouches[0]; + o && xH(e, o, t, r); + } else { + xH(e, t, t, r); + var a = dVe(t); + t.zrDelta = a ? a / 120 : -(t.detail || 0) / 3; + } + var l = t.button; + return t.which == null && l !== void 0 && uVe.test(t.type) && (t.which = l & 1 ? 1 : l & 2 ? 3 : l & 4 ? 2 : 0), t; +} +function dVe(e) { + var t = e.wheelDelta; + if (t) + return t; + var r = e.deltaX, n = e.deltaY; + if (r == null || n == null) + return t; + var i = Math.abs(n !== 0 ? n : r), a = n > 0 ? -1 : n < 0 ? 1 : r > 0 ? -1 : 1; + return 3 * i * a; +} +function AH(e, t, r, n) { + e.addEventListener(t, r, n); +} +function fVe(e, t, r, n) { + e.removeEventListener(t, r, n); +} +var zm = function(e) { + e.preventDefault(), e.stopPropagation(), e.cancelBubble = !0; +}; +function hne(e) { + return e.which === 2 || e.which === 3; +} +var pVe = function() { + function e() { + this._track = []; + } + return e.prototype.recognize = function(t, r, n) { + return this._doTrack(t, r, n), this._recognize(t); + }, e.prototype.clear = function() { + return this._track.length = 0, this; + }, e.prototype._doTrack = function(t, r, n) { + var i = t.touches; + if (i) { + for (var a = { + points: [], + touches: [], + target: r, + event: t + }, o = 0, l = i.length; o < l; o++) { + var u = i[o], d = xH(n, u, {}); + a.points.push([d.zrX, d.zrY]), a.touches.push(u); + } + this._track.push(a); + } + }, e.prototype._recognize = function(t) { + for (var r in CV) + if (CV.hasOwnProperty(r)) { + var n = CV[r](this._track, t); + if (n) + return n; + } + }, e; +}(); +function dne(e) { + var t = e[1][0] - e[0][0], r = e[1][1] - e[0][1]; + return Math.sqrt(t * t + r * r); +} +function gVe(e) { + return [ + (e[0][0] + e[1][0]) / 2, + (e[0][1] + e[1][1]) / 2 + ]; +} +var CV = { + pinch: function(e, t) { + var r = e.length; + if (r) { + var n = (e[r - 1] || {}).points, i = (e[r - 2] || {}).points || n; + if (i && i.length > 1 && n && n.length > 1) { + var a = dne(n) / dne(i); + !isFinite(a) && (a = 1), t.pinchScale = a; + var o = gVe(n); + return t.pinchX = o[0], t.pinchY = o[1], { + type: "pinch", + target: e[0].target, + event: t + }; + } + } + } +}; +function ku() { + return [1, 0, 0, 1, 0, 0]; +} +function dD(e) { + return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 1, e[4] = 0, e[5] = 0, e; +} +function vF(e, t) { + return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4], e[5] = t[5], e; +} +function Jg(e, t, r) { + var n = t[0] * r[0] + t[2] * r[1], i = t[1] * r[0] + t[3] * r[1], a = t[0] * r[2] + t[2] * r[3], o = t[1] * r[2] + t[3] * r[3], l = t[0] * r[4] + t[2] * r[5] + t[4], u = t[1] * r[4] + t[3] * r[5] + t[5]; + return e[0] = n, e[1] = i, e[2] = a, e[3] = o, e[4] = l, e[5] = u, e; +} +function Pp(e, t, r) { + return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4] + r[0], e[5] = t[5] + r[1], e; +} +function R0(e, t, r, n) { + n === void 0 && (n = [0, 0]); + var i = t[0], a = t[2], o = t[4], l = t[1], u = t[3], d = t[5], f = Math.sin(r), g = Math.cos(r); + return e[0] = i * g + l * f, e[1] = -i * f + l * g, e[2] = a * g + u * f, e[3] = -a * f + g * u, e[4] = g * (o - n[0]) + f * (d - n[1]) + n[0], e[5] = g * (d - n[1]) - f * (o - n[0]) + n[1], e; +} +function mF(e, t, r) { + var n = r[0], i = r[1]; + return e[0] = t[0] * n, e[1] = t[1] * i, e[2] = t[2] * n, e[3] = t[3] * i, e[4] = t[4] * n, e[5] = t[5] * i, e; +} +function RE(e, t) { + var r = t[0], n = t[2], i = t[4], a = t[1], o = t[3], l = t[5], u = r * o - a * n; + return u ? (u = 1 / u, e[0] = o * u, e[1] = -a * u, e[2] = -n * u, e[3] = r * u, e[4] = (n * l - o * i) * u, e[5] = (a * i - r * l) * u, e) : null; +} +function Wge(e) { + var t = ku(); + return vF(t, e), t; +} +const Gge = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + clone: Wge, + copy: vF, + create: ku, + identity: dD, + invert: RE, + mul: Jg, + rotate: R0, + scale: mF, + translate: Pp +}, Symbol.toStringTag, { value: "Module" })); +var vVe = function() { + function e(t, r) { + this.x = t || 0, this.y = r || 0; + } + return e.prototype.copy = function(t) { + return this.x = t.x, this.y = t.y, this; + }, e.prototype.clone = function() { + return new e(this.x, this.y); + }, e.prototype.set = function(t, r) { + return this.x = t, this.y = r, this; + }, e.prototype.equal = function(t) { + return t.x === this.x && t.y === this.y; + }, e.prototype.add = function(t) { + return this.x += t.x, this.y += t.y, this; + }, e.prototype.scale = function(t) { + this.x *= t, this.y *= t; + }, e.prototype.scaleAndAdd = function(t, r) { + this.x += t.x * r, this.y += t.y * r; + }, e.prototype.sub = function(t) { + return this.x -= t.x, this.y -= t.y, this; + }, e.prototype.dot = function(t) { + return this.x * t.x + this.y * t.y; + }, e.prototype.len = function() { + return Math.sqrt(this.x * this.x + this.y * this.y); + }, e.prototype.lenSquare = function() { + return this.x * this.x + this.y * this.y; + }, e.prototype.normalize = function() { + var t = this.len(); + return this.x /= t, this.y /= t, this; + }, e.prototype.distance = function(t) { + var r = this.x - t.x, n = this.y - t.y; + return Math.sqrt(r * r + n * n); + }, e.prototype.distanceSquare = function(t) { + var r = this.x - t.x, n = this.y - t.y; + return r * r + n * n; + }, e.prototype.negate = function() { + return this.x = -this.x, this.y = -this.y, this; + }, e.prototype.transform = function(t) { + if (t) { + var r = this.x, n = this.y; + return this.x = t[0] * r + t[2] * n + t[4], this.y = t[1] * r + t[3] * n + t[5], this; + } + }, e.prototype.toArray = function(t) { + return t[0] = this.x, t[1] = this.y, t; + }, e.prototype.fromArray = function(t) { + this.x = t[0], this.y = t[1]; + }, e.set = function(t, r, n) { + t.x = r, t.y = n; + }, e.copy = function(t, r) { + t.x = r.x, t.y = r.y; + }, e.len = function(t) { + return Math.sqrt(t.x * t.x + t.y * t.y); + }, e.lenSquare = function(t) { + return t.x * t.x + t.y * t.y; + }, e.dot = function(t, r) { + return t.x * r.x + t.y * r.y; + }, e.add = function(t, r, n) { + t.x = r.x + n.x, t.y = r.y + n.y; + }, e.sub = function(t, r, n) { + t.x = r.x - n.x, t.y = r.y - n.y; + }, e.scale = function(t, r, n) { + t.x = r.x * n, t.y = r.y * n; + }, e.scaleAndAdd = function(t, r, n, i) { + t.x = r.x + n.x * i, t.y = r.y + n.y * i; + }, e.lerp = function(t, r, n, i) { + var a = 1 - i; + t.x = a * r.x + i * n.x, t.y = a * r.y + i * n.y; + }, e; +}(); +const ni = vVe; +var kk = Math.min, Pk = Math.max, zS = new ni(), HS = new ni(), WS = new ni(), GS = new ni(), EA = new ni(), CA = new ni(), mVe = function() { + function e(t, r, n, i) { + n < 0 && (t = t + n, n = -n), i < 0 && (r = r + i, i = -i), this.x = t, this.y = r, this.width = n, this.height = i; + } + return e.prototype.union = function(t) { + var r = kk(t.x, this.x), n = kk(t.y, this.y); + isFinite(this.x) && isFinite(this.width) ? this.width = Pk(t.x + t.width, this.x + this.width) - r : this.width = t.width, isFinite(this.y) && isFinite(this.height) ? this.height = Pk(t.y + t.height, this.y + this.height) - n : this.height = t.height, this.x = r, this.y = n; + }, e.prototype.applyTransform = function(t) { + e.applyTransform(this, this, t); + }, e.prototype.calculateTransform = function(t) { + var r = this, n = t.width / r.width, i = t.height / r.height, a = ku(); + return Pp(a, a, [-r.x, -r.y]), mF(a, a, [n, i]), Pp(a, a, [t.x, t.y]), a; + }, e.prototype.intersect = function(t, r) { + if (!t) + return !1; + t instanceof e || (t = e.create(t)); + var n = this, i = n.x, a = n.x + n.width, o = n.y, l = n.y + n.height, u = t.x, d = t.x + t.width, f = t.y, g = t.y + t.height, v = !(a < u || d < i || l < f || g < o); + if (r) { + var y = 1 / 0, C = 0, A = Math.abs(a - u), S = Math.abs(d - i), _ = Math.abs(l - f), E = Math.abs(g - o), I = Math.min(A, S), w = Math.min(_, E); + a < u || d < i ? I > C && (C = I, A < S ? ni.set(CA, -A, 0) : ni.set(CA, S, 0)) : I < y && (y = I, A < S ? ni.set(EA, A, 0) : ni.set(EA, -S, 0)), l < f || g < o ? w > C && (C = w, _ < E ? ni.set(CA, 0, -_) : ni.set(CA, 0, E)) : I < y && (y = I, _ < E ? ni.set(EA, 0, _) : ni.set(EA, 0, -E)); + } + return r && ni.copy(r, v ? EA : CA), v; + }, e.prototype.contain = function(t, r) { + var n = this; + return t >= n.x && t <= n.x + n.width && r >= n.y && r <= n.y + n.height; + }, e.prototype.clone = function() { + return new e(this.x, this.y, this.width, this.height); + }, e.prototype.copy = function(t) { + e.copy(this, t); + }, e.prototype.plain = function() { + return { + x: this.x, + y: this.y, + width: this.width, + height: this.height + }; + }, e.prototype.isFinite = function() { + return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height); + }, e.prototype.isZero = function() { + return this.width === 0 || this.height === 0; + }, e.create = function(t) { + return new e(t.x, t.y, t.width, t.height); + }, e.copy = function(t, r) { + t.x = r.x, t.y = r.y, t.width = r.width, t.height = r.height; + }, e.applyTransform = function(t, r, n) { + if (!n) { + t !== r && e.copy(t, r); + return; + } + if (n[1] < 1e-5 && n[1] > -1e-5 && n[2] < 1e-5 && n[2] > -1e-5) { + var i = n[0], a = n[3], o = n[4], l = n[5]; + t.x = r.x * i + o, t.y = r.y * a + l, t.width = r.width * i, t.height = r.height * a, t.width < 0 && (t.x += t.width, t.width = -t.width), t.height < 0 && (t.y += t.height, t.height = -t.height); + return; + } + zS.x = WS.x = r.x, zS.y = GS.y = r.y, HS.x = GS.x = r.x + r.width, HS.y = WS.y = r.y + r.height, zS.transform(n), GS.transform(n), HS.transform(n), WS.transform(n), t.x = kk(zS.x, HS.x, WS.x, GS.x), t.y = kk(zS.y, HS.y, WS.y, GS.y); + var u = Pk(zS.x, HS.x, WS.x, GS.x), d = Pk(zS.y, HS.y, WS.y, GS.y); + t.width = u - t.x, t.height = d - t.y; + }, e; +}(); +const ei = mVe; +var Yge = "silent"; +function yVe(e, t, r) { + return { + type: e, + event: r, + target: t.target, + topTarget: t.topTarget, + cancelBubble: !1, + offsetX: r.zrX, + offsetY: r.zrY, + gestureEvent: r.gestureEvent, + pinchX: r.pinchX, + pinchY: r.pinchY, + pinchScale: r.pinchScale, + wheelDelta: r.zrDelta, + zrByTouch: r.zrByTouch, + which: r.which, + stop: _Ve + }; +} +function _Ve() { + zm(this.event); +} +var SVe = function(e) { + No(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.handler = null, r; + } + return t.prototype.dispose = function() { + }, t.prototype.setCursor = function() { + }, t; +}(Rf), TA = function() { + function e(t, r) { + this.x = t, this.y = r; + } + return e; +}(), bVe = [ + "click", + "dblclick", + "mousewheel", + "mouseout", + "mouseup", + "mousedown", + "mousemove", + "contextmenu" +], TV = new ei(0, 0, 0, 0), Xge = function(e) { + No(t, e); + function t(r, n, i, a, o) { + var l = e.call(this) || this; + return l._hovered = new TA(0, 0), l.storage = r, l.painter = n, l.painterRoot = a, l._pointerSize = o, i = i || new SVe(), l.proxy = null, l.setHandlerProxy(i), l._draggingMgr = new rVe(l), l; + } + return t.prototype.setHandlerProxy = function(r) { + this.proxy && this.proxy.dispose(), r && (Ee(bVe, function(n) { + r.on && r.on(n, this[n], this); + }, this), r.handler = this), this.proxy = r; + }, t.prototype.mousemove = function(r) { + var n = r.zrX, i = r.zrY, a = Kge(this, n, i), o = this._hovered, l = o.target; + l && !l.__zr && (o = this.findHover(o.x, o.y), l = o.target); + var u = this._hovered = a ? new TA(n, i) : this.findHover(n, i), d = u.target, f = this.proxy; + f.setCursor && f.setCursor(d ? d.cursor : "default"), l && d !== l && this.dispatchToElement(o, "mouseout", r), this.dispatchToElement(u, "mousemove", r), d && d !== l && this.dispatchToElement(u, "mouseover", r); + }, t.prototype.mouseout = function(r) { + var n = r.zrEventControl; + n !== "only_globalout" && this.dispatchToElement(this._hovered, "mouseout", r), n !== "no_globalout" && this.trigger("globalout", { type: "globalout", event: r }); + }, t.prototype.resize = function() { + this._hovered = new TA(0, 0); + }, t.prototype.dispatch = function(r, n) { + var i = this[r]; + i && i.call(this, n); + }, t.prototype.dispose = function() { + this.proxy.dispose(), this.storage = null, this.proxy = null, this.painter = null; + }, t.prototype.setCursorStyle = function(r) { + var n = this.proxy; + n.setCursor && n.setCursor(r); + }, t.prototype.dispatchToElement = function(r, n, i) { + r = r || {}; + var a = r.target; + if (!(a && a.silent)) { + for (var o = "on" + n, l = yVe(n, r, i); a && (a[o] && (l.cancelBubble = !!a[o].call(a, l)), a.trigger(n, l), a = a.__hostTarget ? a.__hostTarget : a.parent, !l.cancelBubble); ) + ; + l.cancelBubble || (this.trigger(n, l), this.painter && this.painter.eachOtherLayer && this.painter.eachOtherLayer(function(u) { + typeof u[o] == "function" && u[o].call(u, l), u.trigger && u.trigger(n, l); + })); + } + }, t.prototype.findHover = function(r, n, i) { + var a = this.storage.getDisplayList(), o = new TA(r, n); + if (fne(a, o, r, n, i), this._pointerSize && !o.target) { + for (var l = [], u = this._pointerSize, d = u / 2, f = new ei(r - d, n - d, u, u), g = a.length - 1; g >= 0; g--) { + var v = a[g]; + v !== i && !v.ignore && !v.ignoreCoarsePointer && (!v.parent || !v.parent.ignoreCoarsePointer) && (TV.copy(v.getBoundingRect()), v.transform && TV.applyTransform(v.transform), TV.intersect(f) && l.push(v)); + } + if (l.length) + for (var y = 4, C = Math.PI / 12, A = Math.PI * 2, S = 0; S < d; S += y) + for (var _ = 0; _ < A; _ += C) { + var E = r + S * Math.cos(_), I = n + S * Math.sin(_); + if (fne(l, o, E, I, i), o.target) + return o; + } + } + return o; + }, t.prototype.processGesture = function(r, n) { + this._gestureMgr || (this._gestureMgr = new pVe()); + var i = this._gestureMgr; + n === "start" && i.clear(); + var a = i.recognize(r, this.findHover(r.zrX, r.zrY, null).target, this.proxy.dom); + if (n === "end" && i.clear(), a) { + var o = a.type; + r.gestureEvent = o; + var l = new TA(); + l.target = a.target, this.dispatchToElement(l, o, a.event); + } + }, t; +}(Rf); +Ee(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(e) { + Xge.prototype[e] = function(t) { + var r = t.zrX, n = t.zrY, i = Kge(this, r, n), a, o; + if ((e !== "mouseup" || !i) && (a = this.findHover(r, n), o = a.target), e === "mousedown") + this._downEl = o, this._downPoint = [t.zrX, t.zrY], this._upEl = o; + else if (e === "mouseup") + this._upEl = o; + else if (e === "click") { + if (this._downEl !== this._upEl || !this._downPoint || Om(this._downPoint, [t.zrX, t.zrY]) > 4) + return; + this._downPoint = null; + } + this.dispatchToElement(a, e, t); + }; +}); +function EVe(e, t, r) { + if (e[e.rectHover ? "rectContain" : "contain"](t, r)) { + for (var n = e, i = void 0, a = !1; n; ) { + if (n.ignoreClip && (a = !0), !a) { + var o = n.getClipPath(); + if (o && !o.contain(t, r)) + return !1; + } + n.silent && (i = !0); + var l = n.__hostTarget; + n = l || n.parent; + } + return i ? Yge : !0; + } + return !1; +} +function fne(e, t, r, n, i) { + for (var a = e.length - 1; a >= 0; a--) { + var o = e[a], l = void 0; + if (o !== i && !o.ignore && (l = EVe(o, r, n)) && (!t.topTarget && (t.topTarget = o), l !== Yge)) { + t.target = o; + break; + } + } +} +function Kge(e, t, r) { + var n = e.painter; + return t < 0 || t > n.getWidth() || r < 0 || r > n.getHeight(); +} +const CVe = Xge; +var Zge = 32, wA = 7; +function TVe(e) { + for (var t = 0; e >= Zge; ) + t |= e & 1, e >>= 1; + return e + t; +} +function pne(e, t, r, n) { + var i = t + 1; + if (i === r) + return 1; + if (n(e[i++], e[t]) < 0) { + for (; i < r && n(e[i], e[i - 1]) < 0; ) + i++; + wVe(e, t, i); + } else + for (; i < r && n(e[i], e[i - 1]) >= 0; ) + i++; + return i - t; +} +function wVe(e, t, r) { + for (r--; t < r; ) { + var n = e[t]; + e[t++] = e[r], e[r--] = n; + } +} +function gne(e, t, r, n, i) { + for (n === t && n++; n < r; n++) { + for (var a = e[n], o = t, l = n, u; o < l; ) + u = o + l >>> 1, i(a, e[u]) < 0 ? l = u : o = u + 1; + var d = n - o; + switch (d) { + case 3: + e[o + 3] = e[o + 2]; + case 2: + e[o + 2] = e[o + 1]; + case 1: + e[o + 1] = e[o]; + break; + default: + for (; d > 0; ) + e[o + d] = e[o + d - 1], d--; + } + e[o] = a; + } +} +function wV(e, t, r, n, i, a) { + var o = 0, l = 0, u = 1; + if (a(e, t[r + i]) > 0) { + for (l = n - i; u < l && a(e, t[r + i + u]) > 0; ) + o = u, u = (u << 1) + 1, u <= 0 && (u = l); + u > l && (u = l), o += i, u += i; + } else { + for (l = i + 1; u < l && a(e, t[r + i - u]) <= 0; ) + o = u, u = (u << 1) + 1, u <= 0 && (u = l); + u > l && (u = l); + var d = o; + o = i - u, u = i - d; + } + for (o++; o < u; ) { + var f = o + (u - o >>> 1); + a(e, t[r + f]) > 0 ? o = f + 1 : u = f; + } + return u; +} +function IV(e, t, r, n, i, a) { + var o = 0, l = 0, u = 1; + if (a(e, t[r + i]) < 0) { + for (l = i + 1; u < l && a(e, t[r + i - u]) < 0; ) + o = u, u = (u << 1) + 1, u <= 0 && (u = l); + u > l && (u = l); + var d = o; + o = i - u, u = i - d; + } else { + for (l = n - i; u < l && a(e, t[r + i + u]) >= 0; ) + o = u, u = (u << 1) + 1, u <= 0 && (u = l); + u > l && (u = l), o += i, u += i; + } + for (o++; o < u; ) { + var f = o + (u - o >>> 1); + a(e, t[r + f]) < 0 ? u = f : o = f + 1; + } + return u; +} +function IVe(e, t) { + var r = wA, n, i, a = 0, o = []; + n = [], i = []; + function l(y, C) { + n[a] = y, i[a] = C, a += 1; + } + function u() { + for (; a > 1; ) { + var y = a - 2; + if (y >= 1 && i[y - 1] <= i[y] + i[y + 1] || y >= 2 && i[y - 2] <= i[y] + i[y - 1]) + i[y - 1] < i[y + 1] && y--; + else if (i[y] > i[y + 1]) + break; + f(y); + } + } + function d() { + for (; a > 1; ) { + var y = a - 2; + y > 0 && i[y - 1] < i[y + 1] && y--, f(y); + } + } + function f(y) { + var C = n[y], A = i[y], S = n[y + 1], _ = i[y + 1]; + i[y] = A + _, y === a - 3 && (n[y + 1] = n[y + 2], i[y + 1] = i[y + 2]), a--; + var E = IV(e[S], e, C, A, 0, t); + C += E, A -= E, A !== 0 && (_ = wV(e[C + A - 1], e, S, _, _ - 1, t), _ !== 0 && (A <= _ ? g(C, A, S, _) : v(C, A, S, _))); + } + function g(y, C, A, S) { + var _ = 0; + for (_ = 0; _ < C; _++) + o[_] = e[y + _]; + var E = 0, I = A, w = y; + if (e[w++] = e[I++], --S === 0) { + for (_ = 0; _ < C; _++) + e[w + _] = o[E + _]; + return; + } + if (C === 1) { + for (_ = 0; _ < S; _++) + e[w + _] = e[I + _]; + e[w + S] = o[E]; + return; + } + for (var x = r, b, R, M; ; ) { + b = 0, R = 0, M = !1; + do + if (t(e[I], o[E]) < 0) { + if (e[w++] = e[I++], R++, b = 0, --S === 0) { + M = !0; + break; + } + } else if (e[w++] = o[E++], b++, R = 0, --C === 1) { + M = !0; + break; + } + while ((b | R) < x); + if (M) + break; + do { + if (b = IV(e[I], o, E, C, 0, t), b !== 0) { + for (_ = 0; _ < b; _++) + e[w + _] = o[E + _]; + if (w += b, E += b, C -= b, C <= 1) { + M = !0; + break; + } + } + if (e[w++] = e[I++], --S === 0) { + M = !0; + break; + } + if (R = wV(o[E], e, I, S, 0, t), R !== 0) { + for (_ = 0; _ < R; _++) + e[w + _] = e[I + _]; + if (w += R, I += R, S -= R, S === 0) { + M = !0; + break; + } + } + if (e[w++] = o[E++], --C === 1) { + M = !0; + break; + } + x--; + } while (b >= wA || R >= wA); + if (M) + break; + x < 0 && (x = 0), x += 2; + } + if (r = x, r < 1 && (r = 1), C === 1) { + for (_ = 0; _ < S; _++) + e[w + _] = e[I + _]; + e[w + S] = o[E]; + } else { + if (C === 0) + throw new Error(); + for (_ = 0; _ < C; _++) + e[w + _] = o[E + _]; + } + } + function v(y, C, A, S) { + var _ = 0; + for (_ = 0; _ < S; _++) + o[_] = e[A + _]; + var E = y + C - 1, I = S - 1, w = A + S - 1, x = 0, b = 0; + if (e[w--] = e[E--], --C === 0) { + for (x = w - (S - 1), _ = 0; _ < S; _++) + e[x + _] = o[_]; + return; + } + if (S === 1) { + for (w -= C, E -= C, b = w + 1, x = E + 1, _ = C - 1; _ >= 0; _--) + e[b + _] = e[x + _]; + e[w] = o[I]; + return; + } + for (var R = r; ; ) { + var M = 0, O = 0, P = !1; + do + if (t(o[I], e[E]) < 0) { + if (e[w--] = e[E--], M++, O = 0, --C === 0) { + P = !0; + break; + } + } else if (e[w--] = o[I--], O++, M = 0, --S === 1) { + P = !0; + break; + } + while ((M | O) < R); + if (P) + break; + do { + if (M = C - IV(o[I], e, y, C, C - 1, t), M !== 0) { + for (w -= M, E -= M, C -= M, b = w + 1, x = E + 1, _ = M - 1; _ >= 0; _--) + e[b + _] = e[x + _]; + if (C === 0) { + P = !0; + break; + } + } + if (e[w--] = o[I--], --S === 1) { + P = !0; + break; + } + if (O = S - wV(e[E], o, 0, S, S - 1, t), O !== 0) { + for (w -= O, I -= O, S -= O, b = w + 1, x = I + 1, _ = 0; _ < O; _++) + e[b + _] = o[x + _]; + if (S <= 1) { + P = !0; + break; + } + } + if (e[w--] = e[E--], --C === 0) { + P = !0; + break; + } + R--; + } while (M >= wA || O >= wA); + if (P) + break; + R < 0 && (R = 0), R += 2; + } + if (r = R, r < 1 && (r = 1), S === 1) { + for (w -= C, E -= C, b = w + 1, x = E + 1, _ = C - 1; _ >= 0; _--) + e[b + _] = e[x + _]; + e[w] = o[I]; + } else { + if (S === 0) + throw new Error(); + for (x = w - (S - 1), _ = 0; _ < S; _++) + e[x + _] = o[_]; + } + } + return { + mergeRuns: u, + forceMergeRuns: d, + pushRun: l + }; +} +function yN(e, t, r, n) { + r || (r = 0), n || (n = e.length); + var i = n - r; + if (!(i < 2)) { + var a = 0; + if (i < Zge) { + a = pne(e, r, n, t), gne(e, r, n, r + a, t); + return; + } + var o = IVe(e, t), l = TVe(i); + do { + if (a = pne(e, r, n, t), a < l) { + var u = i; + u > l && (u = l), gne(e, r, r + u, r + a, t), a = u; + } + o.pushRun(r, a), o.mergeRuns(), i -= a, r += a; + } while (i !== 0); + o.forceMergeRuns(); + } +} +var od = 1, l1 = 2, KT = 4, vne = !1; +function xV() { + vne || (vne = !0, console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors")); +} +function mne(e, t) { + return e.zlevel === t.zlevel ? e.z === t.z ? e.z2 - t.z2 : e.z - t.z : e.zlevel - t.zlevel; +} +var xVe = function() { + function e() { + this._roots = [], this._displayList = [], this._displayListLen = 0, this.displayableSortFunc = mne; + } + return e.prototype.traverse = function(t, r) { + for (var n = 0; n < this._roots.length; n++) + this._roots[n].traverse(t, r); + }, e.prototype.getDisplayList = function(t, r) { + r = r || !1; + var n = this._displayList; + return (t || !n.length) && this.updateDisplayList(r), n; + }, e.prototype.updateDisplayList = function(t) { + this._displayListLen = 0; + for (var r = this._roots, n = this._displayList, i = 0, a = r.length; i < a; i++) + this._updateAndAddDisplayable(r[i], null, t); + n.length = this._displayListLen, yN(n, mne); + }, e.prototype._updateAndAddDisplayable = function(t, r, n) { + if (!(t.ignore && !n)) { + t.beforeUpdate(), t.update(), t.afterUpdate(); + var i = t.getClipPath(); + if (t.ignoreClip) + r = null; + else if (i) { + r ? r = r.slice() : r = []; + for (var a = i, o = t; a; ) + a.parent = o, a.updateTransform(), r.push(a), o = a, a = a.getClipPath(); + } + if (t.childrenRef) { + for (var l = t.childrenRef(), u = 0; u < l.length; u++) { + var d = l[u]; + t.__dirty && (d.__dirty |= od), this._updateAndAddDisplayable(d, r, n); + } + t.__dirty = 0; + } else { + var f = t; + r && r.length ? f.__clipPaths = r : f.__clipPaths && f.__clipPaths.length > 0 && (f.__clipPaths = []), isNaN(f.z) && (xV(), f.z = 0), isNaN(f.z2) && (xV(), f.z2 = 0), isNaN(f.zlevel) && (xV(), f.zlevel = 0), this._displayList[this._displayListLen++] = f; + } + var g = t.getDecalElement && t.getDecalElement(); + g && this._updateAndAddDisplayable(g, r, n); + var v = t.getTextGuideLine(); + v && this._updateAndAddDisplayable(v, r, n); + var y = t.getTextContent(); + y && this._updateAndAddDisplayable(y, r, n); + } + }, e.prototype.addRoot = function(t) { + t.__zr && t.__zr.storage === this || this._roots.push(t); + }, e.prototype.delRoot = function(t) { + if (t instanceof Array) { + for (var r = 0, n = t.length; r < n; r++) + this.delRoot(t[r]); + return; + } + var i = di(this._roots, t); + i >= 0 && this._roots.splice(i, 1); + }, e.prototype.delAllRoots = function() { + this._roots = [], this._displayList = [], this._displayListLen = 0; + }, e.prototype.getRoots = function() { + return this._roots; + }, e.prototype.dispose = function() { + this._displayList = null, this._roots = null; + }, e; +}(); +const AVe = xVe; +var qge; +qge = Yi.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(e) { + return setTimeout(e, 16); +}; +const RH = qge; +var _N = { + linear: function(e) { + return e; + }, + quadraticIn: function(e) { + return e * e; + }, + quadraticOut: function(e) { + return e * (2 - e); + }, + quadraticInOut: function(e) { + return (e *= 2) < 1 ? 0.5 * e * e : -0.5 * (--e * (e - 2) - 1); + }, + cubicIn: function(e) { + return e * e * e; + }, + cubicOut: function(e) { + return --e * e * e + 1; + }, + cubicInOut: function(e) { + return (e *= 2) < 1 ? 0.5 * e * e * e : 0.5 * ((e -= 2) * e * e + 2); + }, + quarticIn: function(e) { + return e * e * e * e; + }, + quarticOut: function(e) { + return 1 - --e * e * e * e; + }, + quarticInOut: function(e) { + return (e *= 2) < 1 ? 0.5 * e * e * e * e : -0.5 * ((e -= 2) * e * e * e - 2); + }, + quinticIn: function(e) { + return e * e * e * e * e; + }, + quinticOut: function(e) { + return --e * e * e * e * e + 1; + }, + quinticInOut: function(e) { + return (e *= 2) < 1 ? 0.5 * e * e * e * e * e : 0.5 * ((e -= 2) * e * e * e * e + 2); + }, + sinusoidalIn: function(e) { + return 1 - Math.cos(e * Math.PI / 2); + }, + sinusoidalOut: function(e) { + return Math.sin(e * Math.PI / 2); + }, + sinusoidalInOut: function(e) { + return 0.5 * (1 - Math.cos(Math.PI * e)); + }, + exponentialIn: function(e) { + return e === 0 ? 0 : Math.pow(1024, e - 1); + }, + exponentialOut: function(e) { + return e === 1 ? 1 : 1 - Math.pow(2, -10 * e); + }, + exponentialInOut: function(e) { + return e === 0 ? 0 : e === 1 ? 1 : (e *= 2) < 1 ? 0.5 * Math.pow(1024, e - 1) : 0.5 * (-Math.pow(2, -10 * (e - 1)) + 2); + }, + circularIn: function(e) { + return 1 - Math.sqrt(1 - e * e); + }, + circularOut: function(e) { + return Math.sqrt(1 - --e * e); + }, + circularInOut: function(e) { + return (e *= 2) < 1 ? -0.5 * (Math.sqrt(1 - e * e) - 1) : 0.5 * (Math.sqrt(1 - (e -= 2) * e) + 1); + }, + elasticIn: function(e) { + var t, r = 0.1, n = 0.4; + return e === 0 ? 0 : e === 1 ? 1 : (!r || r < 1 ? (r = 1, t = n / 4) : t = n * Math.asin(1 / r) / (2 * Math.PI), -(r * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / n))); + }, + elasticOut: function(e) { + var t, r = 0.1, n = 0.4; + return e === 0 ? 0 : e === 1 ? 1 : (!r || r < 1 ? (r = 1, t = n / 4) : t = n * Math.asin(1 / r) / (2 * Math.PI), r * Math.pow(2, -10 * e) * Math.sin((e - t) * (2 * Math.PI) / n) + 1); + }, + elasticInOut: function(e) { + var t, r = 0.1, n = 0.4; + return e === 0 ? 0 : e === 1 ? 1 : (!r || r < 1 ? (r = 1, t = n / 4) : t = n * Math.asin(1 / r) / (2 * Math.PI), (e *= 2) < 1 ? -0.5 * (r * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / n)) : r * Math.pow(2, -10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / n) * 0.5 + 1); + }, + backIn: function(e) { + var t = 1.70158; + return e * e * ((t + 1) * e - t); + }, + backOut: function(e) { + var t = 1.70158; + return --e * e * ((t + 1) * e + t) + 1; + }, + backInOut: function(e) { + var t = 2.5949095; + return (e *= 2) < 1 ? 0.5 * (e * e * ((t + 1) * e - t)) : 0.5 * ((e -= 2) * e * ((t + 1) * e + t) + 2); + }, + bounceIn: function(e) { + return 1 - _N.bounceOut(1 - e); + }, + bounceOut: function(e) { + return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + 0.75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + 0.9375 : 7.5625 * (e -= 2.625 / 2.75) * e + 0.984375; + }, + bounceInOut: function(e) { + return e < 0.5 ? _N.bounceIn(e * 2) * 0.5 : _N.bounceOut(e * 2 - 1) * 0.5 + 0.5; + } +}; +const Jge = _N; +var Nk = Math.pow, s0 = Math.sqrt, gL = 1e-8, Qge = 1e-4, yne = s0(3), Lk = 1 / 3, Hg = A0(), pf = A0(), bw = A0(); +function X_(e) { + return e > -gL && e < gL; +} +function eve(e) { + return e > gL || e < -gL; +} +function Ml(e, t, r, n, i) { + var a = 1 - i; + return a * a * (a * e + 3 * i * t) + i * i * (i * n + 3 * a * r); +} +function _ne(e, t, r, n, i) { + var a = 1 - i; + return 3 * (((t - e) * a + 2 * (r - t) * i) * a + (n - r) * i * i); +} +function vL(e, t, r, n, i, a) { + var o = n + 3 * (t - r) - e, l = 3 * (r - t * 2 + e), u = 3 * (t - e), d = e - i, f = l * l - 3 * o * u, g = l * u - 9 * o * d, v = u * u - 3 * l * d, y = 0; + if (X_(f) && X_(g)) + if (X_(l)) + a[0] = 0; + else { + var C = -u / l; + C >= 0 && C <= 1 && (a[y++] = C); + } + else { + var A = g * g - 4 * f * v; + if (X_(A)) { + var S = g / f, C = -l / o + S, _ = -S / 2; + C >= 0 && C <= 1 && (a[y++] = C), _ >= 0 && _ <= 1 && (a[y++] = _); + } else if (A > 0) { + var E = s0(A), I = f * l + 1.5 * o * (-g + E), w = f * l + 1.5 * o * (-g - E); + I < 0 ? I = -Nk(-I, Lk) : I = Nk(I, Lk), w < 0 ? w = -Nk(-w, Lk) : w = Nk(w, Lk); + var C = (-l - (I + w)) / (3 * o); + C >= 0 && C <= 1 && (a[y++] = C); + } else { + var x = (2 * f * l - 3 * o * g) / (2 * s0(f * f * f)), b = Math.acos(x) / 3, R = s0(f), M = Math.cos(b), C = (-l - 2 * R * M) / (3 * o), _ = (-l + R * (M + yne * Math.sin(b))) / (3 * o), O = (-l + R * (M - yne * Math.sin(b))) / (3 * o); + C >= 0 && C <= 1 && (a[y++] = C), _ >= 0 && _ <= 1 && (a[y++] = _), O >= 0 && O <= 1 && (a[y++] = O); + } + } + return y; +} +function tve(e, t, r, n, i) { + var a = 6 * r - 12 * t + 6 * e, o = 9 * t + 3 * n - 3 * e - 9 * r, l = 3 * t - 3 * e, u = 0; + if (X_(o)) { + if (eve(a)) { + var d = -l / a; + d >= 0 && d <= 1 && (i[u++] = d); + } + } else { + var f = a * a - 4 * o * l; + if (X_(f)) + i[0] = -a / (2 * o); + else if (f > 0) { + var g = s0(f), d = (-a + g) / (2 * o), v = (-a - g) / (2 * o); + d >= 0 && d <= 1 && (i[u++] = d), v >= 0 && v <= 1 && (i[u++] = v); + } + } + return u; +} +function g0(e, t, r, n, i, a) { + var o = (t - e) * i + e, l = (r - t) * i + t, u = (n - r) * i + r, d = (l - o) * i + o, f = (u - l) * i + l, g = (f - d) * i + d; + a[0] = e, a[1] = o, a[2] = d, a[3] = g, a[4] = g, a[5] = f, a[6] = u, a[7] = n; +} +function rve(e, t, r, n, i, a, o, l, u, d, f) { + var g, v = 5e-3, y = 1 / 0, C, A, S, _; + Hg[0] = u, Hg[1] = d; + for (var E = 0; E < 1; E += 0.05) + pf[0] = Ml(e, r, i, o, E), pf[1] = Ml(t, n, a, l, E), S = o0(Hg, pf), S < y && (g = E, y = S); + y = 1 / 0; + for (var I = 0; I < 32 && !(v < Qge); I++) + C = g - v, A = g + v, pf[0] = Ml(e, r, i, o, C), pf[1] = Ml(t, n, a, l, C), S = o0(pf, Hg), C >= 0 && S < y ? (g = C, y = S) : (bw[0] = Ml(e, r, i, o, A), bw[1] = Ml(t, n, a, l, A), _ = o0(bw, Hg), A <= 1 && _ < y ? (g = A, y = _) : v *= 0.5); + return f && (f[0] = Ml(e, r, i, o, g), f[1] = Ml(t, n, a, l, g)), s0(y); +} +function RVe(e, t, r, n, i, a, o, l, u) { + for (var d = e, f = t, g = 0, v = 1 / u, y = 1; y <= u; y++) { + var C = y * v, A = Ml(e, r, i, o, C), S = Ml(t, n, a, l, C), _ = A - d, E = S - f; + g += Math.sqrt(_ * _ + E * E), d = A, f = S; + } + return g; +} +function Kl(e, t, r, n) { + var i = 1 - n; + return i * (i * e + 2 * n * t) + n * n * r; +} +function DH(e, t, r, n) { + return 2 * ((1 - n) * (t - e) + n * (r - t)); +} +function DVe(e, t, r, n, i) { + var a = e - 2 * t + r, o = 2 * (t - e), l = e - n, u = 0; + if (X_(a)) { + if (eve(o)) { + var d = -l / o; + d >= 0 && d <= 1 && (i[u++] = d); + } + } else { + var f = o * o - 4 * a * l; + if (X_(f)) { + var d = -o / (2 * a); + d >= 0 && d <= 1 && (i[u++] = d); + } else if (f > 0) { + var g = s0(f), d = (-o + g) / (2 * a), v = (-o - g) / (2 * a); + d >= 0 && d <= 1 && (i[u++] = d), v >= 0 && v <= 1 && (i[u++] = v); + } + } + return u; +} +function nve(e, t, r) { + var n = e + r - 2 * t; + return n === 0 ? 0.5 : (e - t) / n; +} +function lR(e, t, r, n, i) { + var a = (t - e) * n + e, o = (r - t) * n + t, l = (o - a) * n + a; + i[0] = e, i[1] = a, i[2] = l, i[3] = l, i[4] = o, i[5] = r; +} +function ive(e, t, r, n, i, a, o, l, u) { + var d, f = 5e-3, g = 1 / 0; + Hg[0] = o, Hg[1] = l; + for (var v = 0; v < 1; v += 0.05) { + pf[0] = Kl(e, r, i, v), pf[1] = Kl(t, n, a, v); + var y = o0(Hg, pf); + y < g && (d = v, g = y); + } + g = 1 / 0; + for (var C = 0; C < 32 && !(f < Qge); C++) { + var A = d - f, S = d + f; + pf[0] = Kl(e, r, i, A), pf[1] = Kl(t, n, a, A); + var y = o0(pf, Hg); + if (A >= 0 && y < g) + d = A, g = y; + else { + bw[0] = Kl(e, r, i, S), bw[1] = Kl(t, n, a, S); + var _ = o0(bw, Hg); + S <= 1 && _ < g ? (d = S, g = _) : f *= 0.5; + } + } + return u && (u[0] = Kl(e, r, i, d), u[1] = Kl(t, n, a, d)), s0(g); +} +function OVe(e, t, r, n, i, a, o) { + for (var l = e, u = t, d = 0, f = 1 / o, g = 1; g <= o; g++) { + var v = g * f, y = Kl(e, r, i, v), C = Kl(t, n, a, v), A = y - l, S = C - u; + d += Math.sqrt(A * A + S * S), l = y, u = C; + } + return d; +} +var MVe = /cubic-bezier\(([0-9,\.e ]+)\)/; +function c8(e) { + var t = e && MVe.exec(e); + if (t) { + var r = t[1].split(","), n = +yf(r[0]), i = +yf(r[1]), a = +yf(r[2]), o = +yf(r[3]); + if (isNaN(n + i + a + o)) + return; + var l = []; + return function(u) { + return u <= 0 ? 0 : u >= 1 ? 1 : vL(0, n, a, 1, u, l) && Ml(0, i, o, 1, l[0]); + }; + } +} +var kVe = function() { + function e(t) { + this._inited = !1, this._startTime = 0, this._pausedTime = 0, this._paused = !1, this._life = t.life || 1e3, this._delay = t.delay || 0, this.loop = t.loop || !1, this.onframe = t.onframe || Ls, this.ondestroy = t.ondestroy || Ls, this.onrestart = t.onrestart || Ls, t.easing && this.setEasing(t.easing); + } + return e.prototype.step = function(t, r) { + if (this._inited || (this._startTime = t + this._delay, this._inited = !0), this._paused) { + this._pausedTime += r; + return; + } + var n = this._life, i = t - this._startTime - this._pausedTime, a = i / n; + a < 0 && (a = 0), a = Math.min(a, 1); + var o = this.easingFunc, l = o ? o(a) : a; + if (this.onframe(l), a === 1) + if (this.loop) { + var u = i % n; + this._startTime = t - u, this._pausedTime = 0, this.onrestart(); + } else + return !0; + return !1; + }, e.prototype.pause = function() { + this._paused = !0; + }, e.prototype.resume = function() { + this._paused = !1; + }, e.prototype.setEasing = function(t) { + this.easing = t, this.easingFunc = Kr(t) ? t : Jge[t] || c8(t); + }, e; +}(); +const PVe = kVe; +var ave = function() { + function e(t) { + this.value = t; + } + return e; +}(), NVe = function() { + function e() { + this._len = 0; + } + return e.prototype.insert = function(t) { + var r = new ave(t); + return this.insertEntry(r), r; + }, e.prototype.insertEntry = function(t) { + this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, this._len++; + }, e.prototype.remove = function(t) { + var r = t.prev, n = t.next; + r ? r.next = n : this.head = n, n ? n.prev = r : this.tail = r, t.next = t.prev = null, this._len--; + }, e.prototype.len = function() { + return this._len; + }, e.prototype.clear = function() { + this.head = this.tail = null, this._len = 0; + }, e; +}(), LVe = function() { + function e(t) { + this._list = new NVe(), this._maxSize = 10, this._map = {}, this._maxSize = t; + } + return e.prototype.put = function(t, r) { + var n = this._list, i = this._map, a = null; + if (i[t] == null) { + var o = n.len(), l = this._lastRemovedEntry; + if (o >= this._maxSize && o > 0) { + var u = n.head; + n.remove(u), delete i[u.key], a = u.value, this._lastRemovedEntry = u; + } + l ? l.value = r : l = new ave(r), l.key = t, n.insertEntry(l), i[t] = l; + } + return a; + }, e.prototype.get = function(t) { + var r = this._map[t], n = this._list; + if (r != null) + return r !== n.tail && (n.remove(r), n.insertEntry(r)), r.value; + }, e.prototype.clear = function() { + this._list.clear(), this._map = {}; + }, e.prototype.len = function() { + return this._list.len(); + }, e; +}(); +const fD = LVe; +var Sne = { + transparent: [0, 0, 0, 0], + aliceblue: [240, 248, 255, 1], + antiquewhite: [250, 235, 215, 1], + aqua: [0, 255, 255, 1], + aquamarine: [127, 255, 212, 1], + azure: [240, 255, 255, 1], + beige: [245, 245, 220, 1], + bisque: [255, 228, 196, 1], + black: [0, 0, 0, 1], + blanchedalmond: [255, 235, 205, 1], + blue: [0, 0, 255, 1], + blueviolet: [138, 43, 226, 1], + brown: [165, 42, 42, 1], + burlywood: [222, 184, 135, 1], + cadetblue: [95, 158, 160, 1], + chartreuse: [127, 255, 0, 1], + chocolate: [210, 105, 30, 1], + coral: [255, 127, 80, 1], + cornflowerblue: [100, 149, 237, 1], + cornsilk: [255, 248, 220, 1], + crimson: [220, 20, 60, 1], + cyan: [0, 255, 255, 1], + darkblue: [0, 0, 139, 1], + darkcyan: [0, 139, 139, 1], + darkgoldenrod: [184, 134, 11, 1], + darkgray: [169, 169, 169, 1], + darkgreen: [0, 100, 0, 1], + darkgrey: [169, 169, 169, 1], + darkkhaki: [189, 183, 107, 1], + darkmagenta: [139, 0, 139, 1], + darkolivegreen: [85, 107, 47, 1], + darkorange: [255, 140, 0, 1], + darkorchid: [153, 50, 204, 1], + darkred: [139, 0, 0, 1], + darksalmon: [233, 150, 122, 1], + darkseagreen: [143, 188, 143, 1], + darkslateblue: [72, 61, 139, 1], + darkslategray: [47, 79, 79, 1], + darkslategrey: [47, 79, 79, 1], + darkturquoise: [0, 206, 209, 1], + darkviolet: [148, 0, 211, 1], + deeppink: [255, 20, 147, 1], + deepskyblue: [0, 191, 255, 1], + dimgray: [105, 105, 105, 1], + dimgrey: [105, 105, 105, 1], + dodgerblue: [30, 144, 255, 1], + firebrick: [178, 34, 34, 1], + floralwhite: [255, 250, 240, 1], + forestgreen: [34, 139, 34, 1], + fuchsia: [255, 0, 255, 1], + gainsboro: [220, 220, 220, 1], + ghostwhite: [248, 248, 255, 1], + gold: [255, 215, 0, 1], + goldenrod: [218, 165, 32, 1], + gray: [128, 128, 128, 1], + green: [0, 128, 0, 1], + greenyellow: [173, 255, 47, 1], + grey: [128, 128, 128, 1], + honeydew: [240, 255, 240, 1], + hotpink: [255, 105, 180, 1], + indianred: [205, 92, 92, 1], + indigo: [75, 0, 130, 1], + ivory: [255, 255, 240, 1], + khaki: [240, 230, 140, 1], + lavender: [230, 230, 250, 1], + lavenderblush: [255, 240, 245, 1], + lawngreen: [124, 252, 0, 1], + lemonchiffon: [255, 250, 205, 1], + lightblue: [173, 216, 230, 1], + lightcoral: [240, 128, 128, 1], + lightcyan: [224, 255, 255, 1], + lightgoldenrodyellow: [250, 250, 210, 1], + lightgray: [211, 211, 211, 1], + lightgreen: [144, 238, 144, 1], + lightgrey: [211, 211, 211, 1], + lightpink: [255, 182, 193, 1], + lightsalmon: [255, 160, 122, 1], + lightseagreen: [32, 178, 170, 1], + lightskyblue: [135, 206, 250, 1], + lightslategray: [119, 136, 153, 1], + lightslategrey: [119, 136, 153, 1], + lightsteelblue: [176, 196, 222, 1], + lightyellow: [255, 255, 224, 1], + lime: [0, 255, 0, 1], + limegreen: [50, 205, 50, 1], + linen: [250, 240, 230, 1], + magenta: [255, 0, 255, 1], + maroon: [128, 0, 0, 1], + mediumaquamarine: [102, 205, 170, 1], + mediumblue: [0, 0, 205, 1], + mediumorchid: [186, 85, 211, 1], + mediumpurple: [147, 112, 219, 1], + mediumseagreen: [60, 179, 113, 1], + mediumslateblue: [123, 104, 238, 1], + mediumspringgreen: [0, 250, 154, 1], + mediumturquoise: [72, 209, 204, 1], + mediumvioletred: [199, 21, 133, 1], + midnightblue: [25, 25, 112, 1], + mintcream: [245, 255, 250, 1], + mistyrose: [255, 228, 225, 1], + moccasin: [255, 228, 181, 1], + navajowhite: [255, 222, 173, 1], + navy: [0, 0, 128, 1], + oldlace: [253, 245, 230, 1], + olive: [128, 128, 0, 1], + olivedrab: [107, 142, 35, 1], + orange: [255, 165, 0, 1], + orangered: [255, 69, 0, 1], + orchid: [218, 112, 214, 1], + palegoldenrod: [238, 232, 170, 1], + palegreen: [152, 251, 152, 1], + paleturquoise: [175, 238, 238, 1], + palevioletred: [219, 112, 147, 1], + papayawhip: [255, 239, 213, 1], + peachpuff: [255, 218, 185, 1], + peru: [205, 133, 63, 1], + pink: [255, 192, 203, 1], + plum: [221, 160, 221, 1], + powderblue: [176, 224, 230, 1], + purple: [128, 0, 128, 1], + red: [255, 0, 0, 1], + rosybrown: [188, 143, 143, 1], + royalblue: [65, 105, 225, 1], + saddlebrown: [139, 69, 19, 1], + salmon: [250, 128, 114, 1], + sandybrown: [244, 164, 96, 1], + seagreen: [46, 139, 87, 1], + seashell: [255, 245, 238, 1], + sienna: [160, 82, 45, 1], + silver: [192, 192, 192, 1], + skyblue: [135, 206, 235, 1], + slateblue: [106, 90, 205, 1], + slategray: [112, 128, 144, 1], + slategrey: [112, 128, 144, 1], + snow: [255, 250, 250, 1], + springgreen: [0, 255, 127, 1], + steelblue: [70, 130, 180, 1], + tan: [210, 180, 140, 1], + teal: [0, 128, 128, 1], + thistle: [216, 191, 216, 1], + tomato: [255, 99, 71, 1], + turquoise: [64, 224, 208, 1], + violet: [238, 130, 238, 1], + wheat: [245, 222, 179, 1], + white: [255, 255, 255, 1], + whitesmoke: [245, 245, 245, 1], + yellow: [255, 255, 0, 1], + yellowgreen: [154, 205, 50, 1] +}; +function Rp(e) { + return e = Math.round(e), e < 0 ? 0 : e > 255 ? 255 : e; +} +function FVe(e) { + return e = Math.round(e), e < 0 ? 0 : e > 360 ? 360 : e; +} +function cR(e) { + return e < 0 ? 0 : e > 1 ? 1 : e; +} +function AV(e) { + var t = e; + return t.length && t.charAt(t.length - 1) === "%" ? Rp(parseFloat(t) / 100 * 255) : Rp(parseInt(t, 10)); +} +function Gb(e) { + var t = e; + return t.length && t.charAt(t.length - 1) === "%" ? cR(parseFloat(t) / 100) : cR(parseFloat(t)); +} +function RV(e, t, r) { + return r < 0 ? r += 1 : r > 1 && (r -= 1), r * 6 < 1 ? e + (t - e) * r * 6 : r * 2 < 1 ? t : r * 3 < 2 ? e + (t - e) * (2 / 3 - r) * 6 : e; +} +function K_(e, t, r) { + return e + (t - e) * r; +} +function lf(e, t, r, n, i) { + return e[0] = t, e[1] = r, e[2] = n, e[3] = i, e; +} +function OH(e, t) { + return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e; +} +var ove = new fD(20), Fk = null; +function ST(e, t) { + Fk && OH(Fk, t), Fk = ove.put(e, Fk || t.slice()); +} +function Pu(e, t) { + if (e) { + t = t || []; + var r = ove.get(e); + if (r) + return OH(t, r); + e = e + ""; + var n = e.replace(/ /g, "").toLowerCase(); + if (n in Sne) + return OH(t, Sne[n]), ST(e, t), t; + var i = n.length; + if (n.charAt(0) === "#") { + if (i === 4 || i === 5) { + var a = parseInt(n.slice(1, 4), 16); + if (!(a >= 0 && a <= 4095)) { + lf(t, 0, 0, 0, 1); + return; + } + return lf(t, (a & 3840) >> 4 | (a & 3840) >> 8, a & 240 | (a & 240) >> 4, a & 15 | (a & 15) << 4, i === 5 ? parseInt(n.slice(4), 16) / 15 : 1), ST(e, t), t; + } else if (i === 7 || i === 9) { + var a = parseInt(n.slice(1, 7), 16); + if (!(a >= 0 && a <= 16777215)) { + lf(t, 0, 0, 0, 1); + return; + } + return lf(t, (a & 16711680) >> 16, (a & 65280) >> 8, a & 255, i === 9 ? parseInt(n.slice(7), 16) / 255 : 1), ST(e, t), t; + } + return; + } + var o = n.indexOf("("), l = n.indexOf(")"); + if (o !== -1 && l + 1 === i) { + var u = n.substr(0, o), d = n.substr(o + 1, l - (o + 1)).split(","), f = 1; + switch (u) { + case "rgba": + if (d.length !== 4) + return d.length === 3 ? lf(t, +d[0], +d[1], +d[2], 1) : lf(t, 0, 0, 0, 1); + f = Gb(d.pop()); + case "rgb": + if (d.length >= 3) + return lf(t, AV(d[0]), AV(d[1]), AV(d[2]), d.length === 3 ? f : Gb(d[3])), ST(e, t), t; + lf(t, 0, 0, 0, 1); + return; + case "hsla": + if (d.length !== 4) { + lf(t, 0, 0, 0, 1); + return; + } + return d[3] = Gb(d[3]), MH(d, t), ST(e, t), t; + case "hsl": + if (d.length !== 3) { + lf(t, 0, 0, 0, 1); + return; + } + return MH(d, t), ST(e, t), t; + default: + return; + } + } + lf(t, 0, 0, 0, 1); + } +} +function MH(e, t) { + var r = (parseFloat(e[0]) % 360 + 360) % 360 / 360, n = Gb(e[1]), i = Gb(e[2]), a = i <= 0.5 ? i * (n + 1) : i + n - i * n, o = i * 2 - a; + return t = t || [], lf(t, Rp(RV(o, a, r + 1 / 3) * 255), Rp(RV(o, a, r) * 255), Rp(RV(o, a, r - 1 / 3) * 255), 1), e.length === 4 && (t[3] = e[3]), t; +} +function BVe(e) { + if (e) { + var t = e[0] / 255, r = e[1] / 255, n = e[2] / 255, i = Math.min(t, r, n), a = Math.max(t, r, n), o = a - i, l = (a + i) / 2, u, d; + if (o === 0) + u = 0, d = 0; + else { + l < 0.5 ? d = o / (a + i) : d = o / (2 - a - i); + var f = ((a - t) / 6 + o / 2) / o, g = ((a - r) / 6 + o / 2) / o, v = ((a - n) / 6 + o / 2) / o; + t === a ? u = v - g : r === a ? u = 1 / 3 + f - v : n === a && (u = 2 / 3 + g - f), u < 0 && (u += 1), u > 1 && (u -= 1); + } + var y = [u * 360, d, l]; + return e[3] != null && y.push(e[3]), y; + } +} +function mL(e, t) { + var r = Pu(e); + if (r) { + for (var n = 0; n < 3; n++) + t < 0 ? r[n] = r[n] * (1 - t) | 0 : r[n] = (255 - r[n]) * t + r[n] | 0, r[n] > 255 ? r[n] = 255 : r[n] < 0 && (r[n] = 0); + return Dp(r, r.length === 4 ? "rgba" : "rgb"); + } +} +function UVe(e) { + var t = Pu(e); + if (t) + return ((1 << 24) + (t[0] << 16) + (t[1] << 8) + +t[2]).toString(16).slice(1); +} +function x1(e, t, r) { + if (!(!(t && t.length) || !(e >= 0 && e <= 1))) { + r = r || []; + var n = e * (t.length - 1), i = Math.floor(n), a = Math.ceil(n), o = t[i], l = t[a], u = n - i; + return r[0] = Rp(K_(o[0], l[0], u)), r[1] = Rp(K_(o[1], l[1], u)), r[2] = Rp(K_(o[2], l[2], u)), r[3] = cR(K_(o[3], l[3], u)), r; + } +} +var jVe = x1; +function u8(e, t, r) { + if (!(!(t && t.length) || !(e >= 0 && e <= 1))) { + var n = e * (t.length - 1), i = Math.floor(n), a = Math.ceil(n), o = Pu(t[i]), l = Pu(t[a]), u = n - i, d = Dp([ + Rp(K_(o[0], l[0], u)), + Rp(K_(o[1], l[1], u)), + Rp(K_(o[2], l[2], u)), + cR(K_(o[3], l[3], u)) + ], "rgba"); + return r ? { + color: d, + leftIndex: i, + rightIndex: a, + value: n + } : d; + } +} +var $Ve = u8; +function Ew(e, t, r, n) { + var i = Pu(e); + if (e) + return i = BVe(i), t != null && (i[0] = FVe(t)), r != null && (i[1] = Gb(r)), n != null && (i[2] = Gb(n)), Dp(MH(i), "rgba"); +} +function uR(e, t) { + var r = Pu(e); + if (r && t != null) + return r[3] = cR(t), Dp(r, "rgba"); +} +function Dp(e, t) { + if (!(!e || !e.length)) { + var r = e[0] + "," + e[1] + "," + e[2]; + return (t === "rgba" || t === "hsva" || t === "hsla") && (r += "," + e[3]), t + "(" + r + ")"; + } +} +function hR(e, t) { + var r = Pu(e); + return r ? (0.299 * r[0] + 0.587 * r[1] + 0.114 * r[2]) * r[3] / 255 + (1 - r[3]) * t : 0; +} +function VVe() { + return Dp([ + Math.round(Math.random() * 255), + Math.round(Math.random() * 255), + Math.round(Math.random() * 255) + ], "rgb"); +} +var bne = new fD(100); +function yL(e) { + if (wr(e)) { + var t = bne.get(e); + return t || (t = mL(e, -0.1), bne.put(e, t)), t; + } else if (uD(e)) { + var r = $t({}, e); + return r.colorStops = er(e.colorStops, function(n) { + return { + offset: n.offset, + color: mL(n.color, -0.1) + }; + }), r; + } + return e; +} +const sve = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + fastLerp: x1, + fastMapToColor: jVe, + lerp: u8, + lift: mL, + liftColor: yL, + lum: hR, + mapToColor: $Ve, + modifyAlpha: uR, + modifyHSL: Ew, + parse: Pu, + random: VVe, + stringify: Dp, + toHex: UVe +}, Symbol.toStringTag, { value: "Module" })); +var _L = Math.round; +function dR(e) { + var t; + if (!e || e === "transparent") + e = "none"; + else if (typeof e == "string" && e.indexOf("rgba") > -1) { + var r = Pu(e); + r && (e = "rgb(" + r[0] + "," + r[1] + "," + r[2] + ")", t = r[3]); + } + return { + color: e, + opacity: t == null ? 1 : t + }; +} +var Ene = 1e-4; +function Z_(e) { + return e < Ene && e > -Ene; +} +function Bk(e) { + return _L(e * 1e3) / 1e3; +} +function kH(e) { + return _L(e * 1e4) / 1e4; +} +function zVe(e) { + return "matrix(" + Bk(e[0]) + "," + Bk(e[1]) + "," + Bk(e[2]) + "," + Bk(e[3]) + "," + kH(e[4]) + "," + kH(e[5]) + ")"; +} +var HVe = { + left: "start", + right: "end", + center: "middle", + middle: "middle" +}; +function WVe(e, t, r) { + return r === "top" ? e += t / 2 : r === "bottom" && (e -= t / 2), e; +} +function GVe(e) { + return e && (e.shadowBlur || e.shadowOffsetX || e.shadowOffsetY); +} +function YVe(e) { + var t = e.style, r = e.getGlobalScale(); + return [ + t.shadowColor, + (t.shadowBlur || 0).toFixed(2), + (t.shadowOffsetX || 0).toFixed(2), + (t.shadowOffsetY || 0).toFixed(2), + r[0], + r[1] + ].join(","); +} +function lve(e) { + return e && !!e.image; +} +function XVe(e) { + return e && !!e.svgElement; +} +function h8(e) { + return lve(e) || XVe(e); +} +function cve(e) { + return e.type === "linear"; +} +function uve(e) { + return e.type === "radial"; +} +function hve(e) { + return e && (e.type === "linear" || e.type === "radial"); +} +function yF(e) { + return "url(#" + e + ")"; +} +function dve(e) { + var t = e.getGlobalScale(), r = Math.max(t[0], t[1]); + return Math.max(Math.ceil(Math.log(r) / Math.log(10)), 1); +} +function fve(e) { + var t = e.x || 0, r = e.y || 0, n = (e.rotation || 0) * T1, i = Fn(e.scaleX, 1), a = Fn(e.scaleY, 1), o = e.skewX || 0, l = e.skewY || 0, u = []; + return (t || r) && u.push("translate(" + t + "px," + r + "px)"), n && u.push("rotate(" + n + ")"), (i !== 1 || a !== 1) && u.push("scale(" + i + "," + a + ")"), (o || l) && u.push("skew(" + _L(o * T1) + "deg, " + _L(l * T1) + "deg)"), u.join(" "); +} +var KVe = function() { + return Yi.hasGlobalWindow && Kr(window.btoa) ? function(e) { + return window.btoa(unescape(encodeURIComponent(e))); + } : typeof Buffer != "undefined" ? function(e) { + return Buffer.from(e).toString("base64"); + } : function(e) { + return null; + }; +}(), PH = Array.prototype.slice; +function xm(e, t, r) { + return (t - e) * r + e; +} +function DV(e, t, r, n) { + for (var i = t.length, a = 0; a < i; a++) + e[a] = xm(t[a], r[a], n); + return e; +} +function ZVe(e, t, r, n) { + for (var i = t.length, a = i && t[0].length, o = 0; o < i; o++) { + e[o] || (e[o] = []); + for (var l = 0; l < a; l++) + e[o][l] = xm(t[o][l], r[o][l], n); + } + return e; +} +function Uk(e, t, r, n) { + for (var i = t.length, a = 0; a < i; a++) + e[a] = t[a] + r[a] * n; + return e; +} +function Cne(e, t, r, n) { + for (var i = t.length, a = i && t[0].length, o = 0; o < i; o++) { + e[o] || (e[o] = []); + for (var l = 0; l < a; l++) + e[o][l] = t[o][l] + r[o][l] * n; + } + return e; +} +function qVe(e, t) { + for (var r = e.length, n = t.length, i = r > n ? t : e, a = Math.min(r, n), o = i[a - 1] || { color: [0, 0, 0, 0], offset: 0 }, l = a; l < Math.max(r, n); l++) + i.push({ + offset: o.offset, + color: o.color.slice() + }); +} +function JVe(e, t, r) { + var n = e, i = t; + if (!(!n.push || !i.push)) { + var a = n.length, o = i.length; + if (a !== o) { + var l = a > o; + if (l) + n.length = o; + else + for (var u = a; u < o; u++) + n.push(r === 1 ? i[u] : PH.call(i[u])); + } + for (var d = n[0] && n[0].length, u = 0; u < n.length; u++) + if (r === 1) + isNaN(n[u]) && (n[u] = i[u]); + else + for (var f = 0; f < d; f++) + isNaN(n[u][f]) && (n[u][f] = i[u][f]); + } +} +function A1(e) { + if (Sc(e)) { + var t = e.length; + if (Sc(e[0])) { + for (var r = [], n = 0; n < t; n++) + r.push(PH.call(e[n])); + return r; + } + return PH.call(e); + } + return e; +} +function SN(e) { + return e[0] = Math.floor(e[0]) || 0, e[1] = Math.floor(e[1]) || 0, e[2] = Math.floor(e[2]) || 0, e[3] = e[3] == null ? 1 : e[3], "rgba(" + e.join(",") + ")"; +} +function QVe(e) { + return Sc(e && e[0]) ? 2 : 1; +} +var jk = 0, bN = 1, pve = 2, c1 = 3, NH = 4, LH = 5, Tne = 6; +function wne(e) { + return e === NH || e === LH; +} +function $k(e) { + return e === bN || e === pve; +} +var IA = [0, 0, 0, 0], eze = function() { + function e(t) { + this.keyframes = [], this.discrete = !1, this._invalid = !1, this._needsSort = !1, this._lastFr = 0, this._lastFrP = 0, this.propName = t; + } + return e.prototype.isFinished = function() { + return this._finished; + }, e.prototype.setFinished = function() { + this._finished = !0, this._additiveTrack && this._additiveTrack.setFinished(); + }, e.prototype.needsAnimate = function() { + return this.keyframes.length >= 1; + }, e.prototype.getAdditiveTrack = function() { + return this._additiveTrack; + }, e.prototype.addKeyframe = function(t, r, n) { + this._needsSort = !0; + var i = this.keyframes, a = i.length, o = !1, l = Tne, u = r; + if (Sc(r)) { + var d = QVe(r); + l = d, (d === 1 && !Qi(r[0]) || d === 2 && !Qi(r[0][0])) && (o = !0); + } else if (Qi(r) && !Bw(r)) + l = jk; + else if (wr(r)) + if (!isNaN(+r)) + l = jk; + else { + var f = Pu(r); + f && (u = f, l = c1); + } + else if (uD(r)) { + var g = $t({}, u); + g.colorStops = er(r.colorStops, function(y) { + return { + offset: y.offset, + color: Pu(y.color) + }; + }), cve(r) ? l = NH : uve(r) && (l = LH), u = g; + } + a === 0 ? this.valType = l : (l !== this.valType || l === Tne) && (o = !0), this.discrete = this.discrete || o; + var v = { + time: t, + value: u, + rawValue: r, + percent: 0 + }; + return n && (v.easing = n, v.easingFunc = Kr(n) ? n : Jge[n] || c8(n)), i.push(v), v; + }, e.prototype.prepare = function(t, r) { + var n = this.keyframes; + this._needsSort && n.sort(function(A, S) { + return A.time - S.time; + }); + for (var i = this.valType, a = n.length, o = n[a - 1], l = this.discrete, u = $k(i), d = wne(i), f = 0; f < a; f++) { + var g = n[f], v = g.value, y = o.value; + g.percent = g.time / t, l || (u && f !== a - 1 ? JVe(v, y, i) : d && qVe(v.colorStops, y.colorStops)); + } + if (!l && i !== LH && r && this.needsAnimate() && r.needsAnimate() && i === r.valType && !r._finished) { + this._additiveTrack = r; + for (var C = n[0].value, f = 0; f < a; f++) + i === jk ? n[f].additiveValue = n[f].value - C : i === c1 ? n[f].additiveValue = Uk([], n[f].value, C, -1) : $k(i) && (n[f].additiveValue = i === bN ? Uk([], n[f].value, C, -1) : Cne([], n[f].value, C, -1)); + } + }, e.prototype.step = function(t, r) { + if (!this._finished) { + this._additiveTrack && this._additiveTrack._finished && (this._additiveTrack = null); + var n = this._additiveTrack != null, i = n ? "additiveValue" : "value", a = this.valType, o = this.keyframes, l = o.length, u = this.propName, d = a === c1, f, g = this._lastFr, v = Math.min, y, C; + if (l === 1) + y = C = o[0]; + else { + if (r < 0) + f = 0; + else if (r < this._lastFrP) { + var A = v(g + 1, l - 1); + for (f = A; f >= 0 && !(o[f].percent <= r); f--) + ; + f = v(f, l - 2); + } else { + for (f = g; f < l && !(o[f].percent > r); f++) + ; + f = v(f - 1, l - 2); + } + C = o[f + 1], y = o[f]; + } + if (y && C) { + this._lastFr = f, this._lastFrP = r; + var S = C.percent - y.percent, _ = S === 0 ? 1 : v((r - y.percent) / S, 1); + C.easingFunc && (_ = C.easingFunc(_)); + var E = n ? this._additiveValue : d ? IA : t[u]; + if (($k(a) || d) && !E && (E = this._additiveValue = []), this.discrete) + t[u] = _ < 1 ? y.rawValue : C.rawValue; + else if ($k(a)) + a === bN ? DV(E, y[i], C[i], _) : ZVe(E, y[i], C[i], _); + else if (wne(a)) { + var I = y[i], w = C[i], x = a === NH; + t[u] = { + type: x ? "linear" : "radial", + x: xm(I.x, w.x, _), + y: xm(I.y, w.y, _), + colorStops: er(I.colorStops, function(R, M) { + var O = w.colorStops[M]; + return { + offset: xm(R.offset, O.offset, _), + color: SN(DV([], R.color, O.color, _)) + }; + }), + global: w.global + }, x ? (t[u].x2 = xm(I.x2, w.x2, _), t[u].y2 = xm(I.y2, w.y2, _)) : t[u].r = xm(I.r, w.r, _); + } else if (d) + DV(E, y[i], C[i], _), n || (t[u] = SN(E)); + else { + var b = xm(y[i], C[i], _); + n ? this._additiveValue = b : t[u] = b; + } + n && this._addToTarget(t); + } + } + }, e.prototype._addToTarget = function(t) { + var r = this.valType, n = this.propName, i = this._additiveValue; + r === jk ? t[n] = t[n] + i : r === c1 ? (Pu(t[n], IA), Uk(IA, IA, i, 1), t[n] = SN(IA)) : r === bN ? Uk(t[n], t[n], i, 1) : r === pve && Cne(t[n], t[n], i, 1); + }, e; +}(), tze = function() { + function e(t, r, n, i) { + if (this._tracks = {}, this._trackKeys = [], this._maxTime = 0, this._started = 0, this._clip = null, this._target = t, this._loop = r, r && i) { + dF("Can' use additive animation on looped animation."); + return; + } + this._additiveAnimators = i, this._allowDiscrete = n; + } + return e.prototype.getMaxTime = function() { + return this._maxTime; + }, e.prototype.getDelay = function() { + return this._delay; + }, e.prototype.getLoop = function() { + return this._loop; + }, e.prototype.getTarget = function() { + return this._target; + }, e.prototype.changeTarget = function(t) { + this._target = t; + }, e.prototype.when = function(t, r, n) { + return this.whenWithKeys(t, r, Ri(r), n); + }, e.prototype.whenWithKeys = function(t, r, n, i) { + for (var a = this._tracks, o = 0; o < n.length; o++) { + var l = n[o], u = a[l]; + if (!u) { + u = a[l] = new eze(l); + var d = void 0, f = this._getAdditiveTrack(l); + if (f) { + var g = f.keyframes, v = g[g.length - 1]; + d = v && v.value, f.valType === c1 && d && (d = SN(d)); + } else + d = this._target[l]; + if (d == null) + continue; + t > 0 && u.addKeyframe(0, A1(d), i), this._trackKeys.push(l); + } + u.addKeyframe(t, A1(r[l]), i); + } + return this._maxTime = Math.max(this._maxTime, t), this; + }, e.prototype.pause = function() { + this._clip.pause(), this._paused = !0; + }, e.prototype.resume = function() { + this._clip.resume(), this._paused = !1; + }, e.prototype.isPaused = function() { + return !!this._paused; + }, e.prototype.duration = function(t) { + return this._maxTime = t, this._force = !0, this; + }, e.prototype._doneCallback = function() { + this._setTracksFinished(), this._clip = null; + var t = this._doneCbs; + if (t) + for (var r = t.length, n = 0; n < r; n++) + t[n].call(this); + }, e.prototype._abortedCallback = function() { + this._setTracksFinished(); + var t = this.animation, r = this._abortedCbs; + if (t && t.removeClip(this._clip), this._clip = null, r) + for (var n = 0; n < r.length; n++) + r[n].call(this); + }, e.prototype._setTracksFinished = function() { + for (var t = this._tracks, r = this._trackKeys, n = 0; n < r.length; n++) + t[r[n]].setFinished(); + }, e.prototype._getAdditiveTrack = function(t) { + var r, n = this._additiveAnimators; + if (n) + for (var i = 0; i < n.length; i++) { + var a = n[i].getTrack(t); + a && (r = a); + } + return r; + }, e.prototype.start = function(t) { + if (!(this._started > 0)) { + this._started = 1; + for (var r = this, n = [], i = this._maxTime || 0, a = 0; a < this._trackKeys.length; a++) { + var o = this._trackKeys[a], l = this._tracks[o], u = this._getAdditiveTrack(o), d = l.keyframes, f = d.length; + if (l.prepare(i, u), l.needsAnimate()) + if (!this._allowDiscrete && l.discrete) { + var g = d[f - 1]; + g && (r._target[l.propName] = g.rawValue), l.setFinished(); + } else + n.push(l); + } + if (n.length || this._force) { + var v = new PVe({ + life: i, + loop: this._loop, + delay: this._delay || 0, + onframe: function(y) { + r._started = 2; + var C = r._additiveAnimators; + if (C) { + for (var A = !1, S = 0; S < C.length; S++) + if (C[S]._clip) { + A = !0; + break; + } + A || (r._additiveAnimators = null); + } + for (var S = 0; S < n.length; S++) + n[S].step(r._target, y); + var _ = r._onframeCbs; + if (_) + for (var S = 0; S < _.length; S++) + _[S](r._target, y); + }, + ondestroy: function() { + r._doneCallback(); + } + }); + this._clip = v, this.animation && this.animation.addClip(v), t && v.setEasing(t); + } else + this._doneCallback(); + return this; + } + }, e.prototype.stop = function(t) { + if (this._clip) { + var r = this._clip; + t && r.onframe(1), this._abortedCallback(); + } + }, e.prototype.delay = function(t) { + return this._delay = t, this; + }, e.prototype.during = function(t) { + return t && (this._onframeCbs || (this._onframeCbs = []), this._onframeCbs.push(t)), this; + }, e.prototype.done = function(t) { + return t && (this._doneCbs || (this._doneCbs = []), this._doneCbs.push(t)), this; + }, e.prototype.aborted = function(t) { + return t && (this._abortedCbs || (this._abortedCbs = []), this._abortedCbs.push(t)), this; + }, e.prototype.getClip = function() { + return this._clip; + }, e.prototype.getTrack = function(t) { + return this._tracks[t]; + }, e.prototype.getTracks = function() { + var t = this; + return er(this._trackKeys, function(r) { + return t._tracks[r]; + }); + }, e.prototype.stopTracks = function(t, r) { + if (!t.length || !this._clip) + return !0; + for (var n = this._tracks, i = this._trackKeys, a = 0; a < t.length; a++) { + var o = n[t[a]]; + o && !o.isFinished() && (r ? o.step(this._target, 1) : this._started === 1 && o.step(this._target, 0), o.setFinished()); + } + for (var l = !0, a = 0; a < i.length; a++) + if (!n[i[a]].isFinished()) { + l = !1; + break; + } + return l && this._abortedCallback(), l; + }, e.prototype.saveTo = function(t, r, n) { + if (t) { + r = r || this._trackKeys; + for (var i = 0; i < r.length; i++) { + var a = r[i], o = this._tracks[a]; + if (!(!o || o.isFinished())) { + var l = o.keyframes, u = l[n ? 0 : l.length - 1]; + u && (t[a] = A1(u.rawValue)); + } + } + } + }, e.prototype.__changeFinalValue = function(t, r) { + r = r || Ri(t); + for (var n = 0; n < r.length; n++) { + var i = r[n], a = this._tracks[i]; + if (a) { + var o = a.keyframes; + if (o.length > 1) { + var l = o.pop(); + a.addKeyframe(l.time, t[i]), a.prepare(this._maxTime, a.getAdditiveTrack()); + } + } + } + }, e; +}(); +const d8 = tze; +function sw() { + return (/* @__PURE__ */ new Date()).getTime(); +} +var rze = function(e) { + No(t, e); + function t(r) { + var n = e.call(this) || this; + return n._running = !1, n._time = 0, n._pausedTime = 0, n._pauseStart = 0, n._paused = !1, r = r || {}, n.stage = r.stage || {}, n; + } + return t.prototype.addClip = function(r) { + r.animation && this.removeClip(r), this._head ? (this._tail.next = r, r.prev = this._tail, r.next = null, this._tail = r) : this._head = this._tail = r, r.animation = this; + }, t.prototype.addAnimator = function(r) { + r.animation = this; + var n = r.getClip(); + n && this.addClip(n); + }, t.prototype.removeClip = function(r) { + if (r.animation) { + var n = r.prev, i = r.next; + n ? n.next = i : this._head = i, i ? i.prev = n : this._tail = n, r.next = r.prev = r.animation = null; + } + }, t.prototype.removeAnimator = function(r) { + var n = r.getClip(); + n && this.removeClip(n), r.animation = null; + }, t.prototype.update = function(r) { + for (var n = sw() - this._pausedTime, i = n - this._time, a = this._head; a; ) { + var o = a.next, l = a.step(n, i); + l && (a.ondestroy(), this.removeClip(a)), a = o; + } + this._time = n, r || (this.trigger("frame", i), this.stage.update && this.stage.update()); + }, t.prototype._startLoop = function() { + var r = this; + this._running = !0; + function n() { + r._running && (RH(n), !r._paused && r.update()); + } + RH(n); + }, t.prototype.start = function() { + this._running || (this._time = sw(), this._pausedTime = 0, this._startLoop()); + }, t.prototype.stop = function() { + this._running = !1; + }, t.prototype.pause = function() { + this._paused || (this._pauseStart = sw(), this._paused = !0); + }, t.prototype.resume = function() { + this._paused && (this._pausedTime += sw() - this._pauseStart, this._paused = !1); + }, t.prototype.clear = function() { + for (var r = this._head; r; ) { + var n = r.next; + r.prev = r.next = r.animation = null, r = n; + } + this._head = this._tail = null; + }, t.prototype.isFinished = function() { + return this._head == null; + }, t.prototype.animate = function(r, n) { + n = n || {}, this.start(); + var i = new d8(r, n.loop); + return this.addAnimator(i), i; + }, t; +}(Rf); +const nze = rze; +var ize = 300, OV = Yi.domSupported, MV = function() { + var e = [ + "click", + "dblclick", + "mousewheel", + "wheel", + "mouseout", + "mouseup", + "mousedown", + "mousemove", + "contextmenu" + ], t = [ + "touchstart", + "touchend", + "touchmove" + ], r = { + pointerdown: 1, + pointerup: 1, + pointermove: 1, + pointerout: 1 + }, n = er(e, function(i) { + var a = i.replace("mouse", "pointer"); + return r.hasOwnProperty(a) ? a : i; + }); + return { + mouse: e, + touch: t, + pointer: n + }; +}(), Ine = { + mouse: ["mousemove", "mouseup"], + pointer: ["pointermove", "pointerup"] +}, xne = !1; +function FH(e) { + var t = e.pointerType; + return t === "pen" || t === "touch"; +} +function aze(e) { + e.touching = !0, e.touchTimer != null && (clearTimeout(e.touchTimer), e.touchTimer = null), e.touchTimer = setTimeout(function() { + e.touching = !1, e.touchTimer = null; + }, 700); +} +function kV(e) { + e && (e.zrByTouch = !0); +} +function oze(e, t) { + return cf(e.dom, new sze(e, t), !0); +} +function gve(e, t) { + for (var r = t, n = !1; r && r.nodeType !== 9 && !(n = r.domBelongToZr || r !== t && r === e.painterRoot); ) + r = r.parentNode; + return n; +} +var sze = function() { + function e(t, r) { + this.stopPropagation = Ls, this.stopImmediatePropagation = Ls, this.preventDefault = Ls, this.type = r.type, this.target = this.currentTarget = t.dom, this.pointerType = r.pointerType, this.clientX = r.clientX, this.clientY = r.clientY; + } + return e; +}(), yp = { + mousedown: function(e) { + e = cf(this.dom, e), this.__mayPointerCapture = [e.zrX, e.zrY], this.trigger("mousedown", e); + }, + mousemove: function(e) { + e = cf(this.dom, e); + var t = this.__mayPointerCapture; + t && (e.zrX !== t[0] || e.zrY !== t[1]) && this.__togglePointerCapture(!0), this.trigger("mousemove", e); + }, + mouseup: function(e) { + e = cf(this.dom, e), this.__togglePointerCapture(!1), this.trigger("mouseup", e); + }, + mouseout: function(e) { + e = cf(this.dom, e); + var t = e.toElement || e.relatedTarget; + gve(this, t) || (this.__pointerCapturing && (e.zrEventControl = "no_globalout"), this.trigger("mouseout", e)); + }, + wheel: function(e) { + xne = !0, e = cf(this.dom, e), this.trigger("mousewheel", e); + }, + mousewheel: function(e) { + xne || (e = cf(this.dom, e), this.trigger("mousewheel", e)); + }, + touchstart: function(e) { + e = cf(this.dom, e), kV(e), this.__lastTouchMoment = /* @__PURE__ */ new Date(), this.handler.processGesture(e, "start"), yp.mousemove.call(this, e), yp.mousedown.call(this, e); + }, + touchmove: function(e) { + e = cf(this.dom, e), kV(e), this.handler.processGesture(e, "change"), yp.mousemove.call(this, e); + }, + touchend: function(e) { + e = cf(this.dom, e), kV(e), this.handler.processGesture(e, "end"), yp.mouseup.call(this, e), +/* @__PURE__ */ new Date() - +this.__lastTouchMoment < ize && yp.click.call(this, e); + }, + pointerdown: function(e) { + yp.mousedown.call(this, e); + }, + pointermove: function(e) { + FH(e) || yp.mousemove.call(this, e); + }, + pointerup: function(e) { + yp.mouseup.call(this, e); + }, + pointerout: function(e) { + FH(e) || yp.mouseout.call(this, e); + } +}; +Ee(["click", "dblclick", "contextmenu"], function(e) { + yp[e] = function(t) { + t = cf(this.dom, t), this.trigger(e, t); + }; +}); +var BH = { + pointermove: function(e) { + FH(e) || BH.mousemove.call(this, e); + }, + pointerup: function(e) { + BH.mouseup.call(this, e); + }, + mousemove: function(e) { + this.trigger("mousemove", e); + }, + mouseup: function(e) { + var t = this.__pointerCapturing; + this.__togglePointerCapture(!1), this.trigger("mouseup", e), t && (e.zrEventControl = "only_globalout", this.trigger("mouseout", e)); + } +}; +function lze(e, t) { + var r = t.domHandlers; + Yi.pointerEventsSupported ? Ee(MV.pointer, function(n) { + EN(t, n, function(i) { + r[n].call(e, i); + }); + }) : (Yi.touchEventsSupported && Ee(MV.touch, function(n) { + EN(t, n, function(i) { + r[n].call(e, i), aze(t); + }); + }), Ee(MV.mouse, function(n) { + EN(t, n, function(i) { + i = l8(i), t.touching || r[n].call(e, i); + }); + })); +} +function cze(e, t) { + Yi.pointerEventsSupported ? Ee(Ine.pointer, r) : Yi.touchEventsSupported || Ee(Ine.mouse, r); + function r(n) { + function i(a) { + a = l8(a), gve(e, a.target) || (a = oze(e, a), t.domHandlers[n].call(e, a)); + } + EN(t, n, i, { capture: !0 }); + } +} +function EN(e, t, r, n) { + e.mounted[t] = r, e.listenerOpts[t] = n, AH(e.domTarget, t, r, n); +} +function PV(e) { + var t = e.mounted; + for (var r in t) + t.hasOwnProperty(r) && fVe(e.domTarget, r, t[r], e.listenerOpts[r]); + e.mounted = {}; +} +var Ane = function() { + function e(t, r) { + this.mounted = {}, this.listenerOpts = {}, this.touching = !1, this.domTarget = t, this.domHandlers = r; + } + return e; +}(), uze = function(e) { + No(t, e); + function t(r, n) { + var i = e.call(this) || this; + return i.__pointerCapturing = !1, i.dom = r, i.painterRoot = n, i._localHandlerScope = new Ane(r, yp), OV && (i._globalHandlerScope = new Ane(document, BH)), lze(i, i._localHandlerScope), i; + } + return t.prototype.dispose = function() { + PV(this._localHandlerScope), OV && PV(this._globalHandlerScope); + }, t.prototype.setCursor = function(r) { + this.dom.style && (this.dom.style.cursor = r || "default"); + }, t.prototype.__togglePointerCapture = function(r) { + if (this.__mayPointerCapture = null, OV && +this.__pointerCapturing ^ +r) { + this.__pointerCapturing = r; + var n = this._globalHandlerScope; + r ? cze(this, n) : PV(n); + } + }, t; +}(Rf); +const hze = uze; +var vve = 1; +Yi.hasGlobalWindow && (vve = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1)); +var SL = vve, UH = 0.4, jH = "#333", $H = "#ccc", dze = "#eee", Rne = dD, Dne = 5e-5; +function YS(e) { + return e > Dne || e < -Dne; +} +var XS = [], bT = [], NV = ku(), LV = Math.abs, fze = function() { + function e() { + } + return e.prototype.getLocalTransform = function(t) { + return e.getLocalTransform(this, t); + }, e.prototype.setPosition = function(t) { + this.x = t[0], this.y = t[1]; + }, e.prototype.setScale = function(t) { + this.scaleX = t[0], this.scaleY = t[1]; + }, e.prototype.setSkew = function(t) { + this.skewX = t[0], this.skewY = t[1]; + }, e.prototype.setOrigin = function(t) { + this.originX = t[0], this.originY = t[1]; + }, e.prototype.needLocalTransform = function() { + return YS(this.rotation) || YS(this.x) || YS(this.y) || YS(this.scaleX - 1) || YS(this.scaleY - 1) || YS(this.skewX) || YS(this.skewY); + }, e.prototype.updateTransform = function() { + var t = this.parent && this.parent.transform, r = this.needLocalTransform(), n = this.transform; + if (!(r || t)) { + n && (Rne(n), this.invTransform = null); + return; + } + n = n || ku(), r ? this.getLocalTransform(n) : Rne(n), t && (r ? Jg(n, t, n) : vF(n, t)), this.transform = n, this._resolveGlobalScaleRatio(n); + }, e.prototype._resolveGlobalScaleRatio = function(t) { + var r = this.globalScaleRatio; + if (r != null && r !== 1) { + this.getGlobalScale(XS); + var n = XS[0] < 0 ? -1 : 1, i = XS[1] < 0 ? -1 : 1, a = ((XS[0] - n) * r + n) / XS[0] || 0, o = ((XS[1] - i) * r + i) / XS[1] || 0; + t[0] *= a, t[1] *= a, t[2] *= o, t[3] *= o; + } + this.invTransform = this.invTransform || ku(), RE(this.invTransform, t); + }, e.prototype.getComputedTransform = function() { + for (var t = this, r = []; t; ) + r.push(t), t = t.parent; + for (; t = r.pop(); ) + t.updateTransform(); + return this.transform; + }, e.prototype.setLocalTransform = function(t) { + if (t) { + var r = t[0] * t[0] + t[1] * t[1], n = t[2] * t[2] + t[3] * t[3], i = Math.atan2(t[1], t[0]), a = Math.PI / 2 + i - Math.atan2(t[3], t[2]); + n = Math.sqrt(n) * Math.cos(a), r = Math.sqrt(r), this.skewX = a, this.skewY = 0, this.rotation = -i, this.x = +t[4], this.y = +t[5], this.scaleX = r, this.scaleY = n, this.originX = 0, this.originY = 0; + } + }, e.prototype.decomposeTransform = function() { + if (this.transform) { + var t = this.parent, r = this.transform; + t && t.transform && (t.invTransform = t.invTransform || ku(), Jg(bT, t.invTransform, r), r = bT); + var n = this.originX, i = this.originY; + (n || i) && (NV[4] = n, NV[5] = i, Jg(bT, r, NV), bT[4] -= n, bT[5] -= i, r = bT), this.setLocalTransform(r); + } + }, e.prototype.getGlobalScale = function(t) { + var r = this.transform; + return t = t || [], r ? (t[0] = Math.sqrt(r[0] * r[0] + r[1] * r[1]), t[1] = Math.sqrt(r[2] * r[2] + r[3] * r[3]), r[0] < 0 && (t[0] = -t[0]), r[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, t); + }, e.prototype.transformCoordToLocal = function(t, r) { + var n = [t, r], i = this.invTransform; + return i && Jl(n, n, i), n; + }, e.prototype.transformCoordToGlobal = function(t, r) { + var n = [t, r], i = this.transform; + return i && Jl(n, n, i), n; + }, e.prototype.getLineScale = function() { + var t = this.transform; + return t && LV(t[0] - 1) > 1e-10 && LV(t[3] - 1) > 1e-10 ? Math.sqrt(LV(t[0] * t[3] - t[2] * t[1])) : 1; + }, e.prototype.copyTransform = function(t) { + mve(this, t); + }, e.getLocalTransform = function(t, r) { + r = r || []; + var n = t.originX || 0, i = t.originY || 0, a = t.scaleX, o = t.scaleY, l = t.anchorX, u = t.anchorY, d = t.rotation || 0, f = t.x, g = t.y, v = t.skewX ? Math.tan(t.skewX) : 0, y = t.skewY ? Math.tan(-t.skewY) : 0; + if (n || i || l || u) { + var C = n + l, A = i + u; + r[4] = -C * a - v * A * o, r[5] = -A * o - y * C * a; + } else + r[4] = r[5] = 0; + return r[0] = a, r[3] = o, r[1] = y * a, r[2] = v * o, d && R0(r, r, d), r[4] += n + f, r[5] += i + g, r; + }, e.initDefaultProps = function() { + var t = e.prototype; + t.scaleX = t.scaleY = t.globalScaleRatio = 1, t.x = t.y = t.originX = t.originY = t.skewX = t.skewY = t.rotation = t.anchorX = t.anchorY = 0; + }(), e; +}(), av = [ + "x", + "y", + "originX", + "originY", + "anchorX", + "anchorY", + "rotation", + "scaleX", + "scaleY", + "skewX", + "skewY" +]; +function mve(e, t) { + for (var r = 0; r < av.length; r++) { + var n = av[r]; + e[n] = t[n]; + } +} +const Pm = fze; +var One = {}; +function dd(e, t) { + t = t || p0; + var r = One[t]; + r || (r = One[t] = new fD(500)); + var n = r.get(e); + return n == null && (n = kp.measureText(e, t).width, r.put(e, n)), n; +} +function Mne(e, t, r, n) { + var i = dd(e, t), a = _F(t), o = u1(0, i, r), l = ZT(0, a, n), u = new ei(o, l, i, a); + return u; +} +function pD(e, t, r, n) { + var i = ((e || "") + "").split(` +`), a = i.length; + if (a === 1) + return Mne(i[0], t, r, n); + for (var o = new ei(0, 0, 0, 0), l = 0; l < i.length; l++) { + var u = Mne(i[l], t, r, n); + l === 0 ? o.copy(u) : o.union(u); + } + return o; +} +function u1(e, t, r) { + return r === "right" ? e -= t : r === "center" && (e -= t / 2), e; +} +function ZT(e, t, r) { + return r === "middle" ? e -= t / 2 : r === "bottom" && (e -= t), e; +} +function _F(e) { + return dd("国", e); +} +function Np(e, t) { + return typeof e == "string" ? e.lastIndexOf("%") >= 0 ? parseFloat(e) / 100 * t : parseFloat(e) : e; +} +function bL(e, t, r) { + var n = t.position || "inside", i = t.distance != null ? t.distance : 5, a = r.height, o = r.width, l = a / 2, u = r.x, d = r.y, f = "left", g = "top"; + if (n instanceof Array) + u += Np(n[0], r.width), d += Np(n[1], r.height), f = null, g = null; + else + switch (n) { + case "left": + u -= i, d += l, f = "right", g = "middle"; + break; + case "right": + u += i + o, d += l, g = "middle"; + break; + case "top": + u += o / 2, d -= i, f = "center", g = "bottom"; + break; + case "bottom": + u += o / 2, d += a + i, f = "center"; + break; + case "inside": + u += o / 2, d += l, f = "center", g = "middle"; + break; + case "insideLeft": + u += i, d += l, g = "middle"; + break; + case "insideRight": + u += o - i, d += l, f = "right", g = "middle"; + break; + case "insideTop": + u += o / 2, d += i, f = "center"; + break; + case "insideBottom": + u += o / 2, d += a - i, f = "center", g = "bottom"; + break; + case "insideTopLeft": + u += i, d += i; + break; + case "insideTopRight": + u += o - i, d += i, f = "right"; + break; + case "insideBottomLeft": + u += i, d += a - i, g = "bottom"; + break; + case "insideBottomRight": + u += o - i, d += a - i, f = "right", g = "bottom"; + break; + } + return e = e || {}, e.x = u, e.y = d, e.align = f, e.verticalAlign = g, e; +} +var FV = "__zr_normal__", BV = av.concat(["ignore"]), pze = Cf(av, function(e, t) { + return e[t] = !0, e; +}, { ignore: !1 }), ET = {}, gze = new ei(0, 0, 0, 0), f8 = function() { + function e(t) { + this.id = i8(), this.animators = [], this.currentStates = [], this.states = {}, this._init(t); + } + return e.prototype._init = function(t) { + this.attr(t); + }, e.prototype.drift = function(t, r, n) { + switch (this.draggable) { + case "horizontal": + r = 0; + break; + case "vertical": + t = 0; + break; + } + var i = this.transform; + i || (i = this.transform = [1, 0, 0, 1, 0, 0]), i[4] += t, i[5] += r, this.decomposeTransform(), this.markRedraw(); + }, e.prototype.beforeUpdate = function() { + }, e.prototype.afterUpdate = function() { + }, e.prototype.update = function() { + this.updateTransform(), this.__dirty && this.updateInnerText(); + }, e.prototype.updateInnerText = function(t) { + var r = this._textContent; + if (r && (!r.ignore || t)) { + this.textConfig || (this.textConfig = {}); + var n = this.textConfig, i = n.local, a = r.innerTransformable, o = void 0, l = void 0, u = !1; + a.parent = i ? this : null; + var d = !1; + if (a.copyTransform(r), n.position != null) { + var f = gze; + n.layoutRect ? f.copy(n.layoutRect) : f.copy(this.getBoundingRect()), i || f.applyTransform(this.transform), this.calculateTextPosition ? this.calculateTextPosition(ET, n, f) : bL(ET, n, f), a.x = ET.x, a.y = ET.y, o = ET.align, l = ET.verticalAlign; + var g = n.origin; + if (g && n.rotation != null) { + var v = void 0, y = void 0; + g === "center" ? (v = f.width * 0.5, y = f.height * 0.5) : (v = Np(g[0], f.width), y = Np(g[1], f.height)), d = !0, a.originX = -a.x + v + (i ? 0 : f.x), a.originY = -a.y + y + (i ? 0 : f.y); + } + } + n.rotation != null && (a.rotation = n.rotation); + var C = n.offset; + C && (a.x += C[0], a.y += C[1], d || (a.originX = -C[0], a.originY = -C[1])); + var A = n.inside == null ? typeof n.position == "string" && n.position.indexOf("inside") >= 0 : n.inside, S = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}), _ = void 0, E = void 0, I = void 0; + A && this.canBeInsideText() ? (_ = n.insideFill, E = n.insideStroke, (_ == null || _ === "auto") && (_ = this.getInsideTextFill()), (E == null || E === "auto") && (E = this.getInsideTextStroke(_), I = !0)) : (_ = n.outsideFill, E = n.outsideStroke, (_ == null || _ === "auto") && (_ = this.getOutsideFill()), (E == null || E === "auto") && (E = this.getOutsideStroke(_), I = !0)), _ = _ || "#000", (_ !== S.fill || E !== S.stroke || I !== S.autoStroke || o !== S.align || l !== S.verticalAlign) && (u = !0, S.fill = _, S.stroke = E, S.autoStroke = I, S.align = o, S.verticalAlign = l, r.setDefaultTextStyle(S)), r.__dirty |= od, u && r.dirtyStyle(!0); + } + }, e.prototype.canBeInsideText = function() { + return !0; + }, e.prototype.getInsideTextFill = function() { + return "#fff"; + }, e.prototype.getInsideTextStroke = function(t) { + return "#000"; + }, e.prototype.getOutsideFill = function() { + return this.__zr && this.__zr.isDarkMode() ? $H : jH; + }, e.prototype.getOutsideStroke = function(t) { + var r = this.__zr && this.__zr.getBackgroundColor(), n = typeof r == "string" && Pu(r); + n || (n = [255, 255, 255, 1]); + for (var i = n[3], a = this.__zr.isDarkMode(), o = 0; o < 3; o++) + n[o] = n[o] * i + (a ? 0 : 255) * (1 - i); + return n[3] = 1, Dp(n, "rgba"); + }, e.prototype.traverse = function(t, r) { + }, e.prototype.attrKV = function(t, r) { + t === "textConfig" ? this.setTextConfig(r) : t === "textContent" ? this.setTextContent(r) : t === "clipPath" ? this.setClipPath(r) : t === "extra" ? (this.extra = this.extra || {}, $t(this.extra, r)) : this[t] = r; + }, e.prototype.hide = function() { + this.ignore = !0, this.markRedraw(); + }, e.prototype.show = function() { + this.ignore = !1, this.markRedraw(); + }, e.prototype.attr = function(t, r) { + if (typeof t == "string") + this.attrKV(t, r); + else if (sn(t)) + for (var n = t, i = Ri(n), a = 0; a < i.length; a++) { + var o = i[a]; + this.attrKV(o, t[o]); + } + return this.markRedraw(), this; + }, e.prototype.saveCurrentToNormalState = function(t) { + this._innerSaveToNormal(t); + for (var r = this._normalState, n = 0; n < this.animators.length; n++) { + var i = this.animators[n], a = i.__fromStateTransition; + if (!(i.getLoop() || a && a !== FV)) { + var o = i.targetName, l = o ? r[o] : r; + i.saveTo(l); + } + } + }, e.prototype._innerSaveToNormal = function(t) { + var r = this._normalState; + r || (r = this._normalState = {}), t.textConfig && !r.textConfig && (r.textConfig = this.textConfig), this._savePrimaryToNormal(t, r, BV); + }, e.prototype._savePrimaryToNormal = function(t, r, n) { + for (var i = 0; i < n.length; i++) { + var a = n[i]; + t[a] != null && !(a in r) && (r[a] = this[a]); + } + }, e.prototype.hasState = function() { + return this.currentStates.length > 0; + }, e.prototype.getState = function(t) { + return this.states[t]; + }, e.prototype.ensureState = function(t) { + var r = this.states; + return r[t] || (r[t] = {}), r[t]; + }, e.prototype.clearStates = function(t) { + this.useState(FV, !1, t); + }, e.prototype.useState = function(t, r, n, i) { + var a = t === FV, o = this.hasState(); + if (!(!o && a)) { + var l = this.currentStates, u = this.stateTransition; + if (!(di(l, t) >= 0 && (r || l.length === 1))) { + var d; + if (this.stateProxy && !a && (d = this.stateProxy(t)), d || (d = this.states && this.states[t]), !d && !a) { + dF("State " + t + " not exists."); + return; + } + a || this.saveCurrentToNormalState(d); + var f = !!(d && d.hoverLayer || i); + f && this._toggleHoverLayerFlag(!0), this._applyStateObj(t, d, this._normalState, r, !n && !this.__inHover && u && u.duration > 0, u); + var g = this._textContent, v = this._textGuide; + return g && g.useState(t, r, n, f), v && v.useState(t, r, n, f), a ? (this.currentStates = [], this._normalState = {}) : r ? this.currentStates.push(t) : this.currentStates = [t], this._updateAnimationTargets(), this.markRedraw(), !f && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= ~od), d; + } + } + }, e.prototype.useStates = function(t, r, n) { + if (!t.length) + this.clearStates(); + else { + var i = [], a = this.currentStates, o = t.length, l = o === a.length; + if (l) { + for (var u = 0; u < o; u++) + if (t[u] !== a[u]) { + l = !1; + break; + } + } + if (l) + return; + for (var u = 0; u < o; u++) { + var d = t[u], f = void 0; + this.stateProxy && (f = this.stateProxy(d, t)), f || (f = this.states[d]), f && i.push(f); + } + var g = i[o - 1], v = !!(g && g.hoverLayer || n); + v && this._toggleHoverLayerFlag(!0); + var y = this._mergeStates(i), C = this.stateTransition; + this.saveCurrentToNormalState(y), this._applyStateObj(t.join(","), y, this._normalState, !1, !r && !this.__inHover && C && C.duration > 0, C); + var A = this._textContent, S = this._textGuide; + A && A.useStates(t, r, v), S && S.useStates(t, r, v), this._updateAnimationTargets(), this.currentStates = t.slice(), this.markRedraw(), !v && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= ~od); + } + }, e.prototype.isSilent = function() { + for (var t = this.silent, r = this.parent; !t && r; ) { + if (r.silent) { + t = !0; + break; + } + r = r.parent; + } + return t; + }, e.prototype._updateAnimationTargets = function() { + for (var t = 0; t < this.animators.length; t++) { + var r = this.animators[t]; + r.targetName && r.changeTarget(this[r.targetName]); + } + }, e.prototype.removeState = function(t) { + var r = di(this.currentStates, t); + if (r >= 0) { + var n = this.currentStates.slice(); + n.splice(r, 1), this.useStates(n); + } + }, e.prototype.replaceState = function(t, r, n) { + var i = this.currentStates.slice(), a = di(i, t), o = di(i, r) >= 0; + a >= 0 ? o ? i.splice(a, 1) : i[a] = r : n && !o && i.push(r), this.useStates(i); + }, e.prototype.toggleState = function(t, r) { + r ? this.useState(t, !0) : this.removeState(t); + }, e.prototype._mergeStates = function(t) { + for (var r = {}, n, i = 0; i < t.length; i++) { + var a = t[i]; + $t(r, a), a.textConfig && (n = n || {}, $t(n, a.textConfig)); + } + return n && (r.textConfig = n), r; + }, e.prototype._applyStateObj = function(t, r, n, i, a, o) { + var l = !(r && i); + r && r.textConfig ? (this.textConfig = $t({}, i ? this.textConfig : n.textConfig), $t(this.textConfig, r.textConfig)) : l && n.textConfig && (this.textConfig = n.textConfig); + for (var u = {}, d = !1, f = 0; f < BV.length; f++) { + var g = BV[f], v = a && pze[g]; + r && r[g] != null ? v ? (d = !0, u[g] = r[g]) : this[g] = r[g] : l && n[g] != null && (v ? (d = !0, u[g] = n[g]) : this[g] = n[g]); + } + if (!a) + for (var f = 0; f < this.animators.length; f++) { + var y = this.animators[f], C = y.targetName; + y.getLoop() || y.__changeFinalValue(C ? (r || n)[C] : r || n); + } + d && this._transitionState(t, u, o); + }, e.prototype._attachComponent = function(t) { + if (!(t.__zr && !t.__hostTarget) && t !== this) { + var r = this.__zr; + r && t.addSelfToZr(r), t.__zr = r, t.__hostTarget = this; + } + }, e.prototype._detachComponent = function(t) { + t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__hostTarget = null; + }, e.prototype.getClipPath = function() { + return this._clipPath; + }, e.prototype.setClipPath = function(t) { + this._clipPath && this._clipPath !== t && this.removeClipPath(), this._attachComponent(t), this._clipPath = t, this.markRedraw(); + }, e.prototype.removeClipPath = function() { + var t = this._clipPath; + t && (this._detachComponent(t), this._clipPath = null, this.markRedraw()); + }, e.prototype.getTextContent = function() { + return this._textContent; + }, e.prototype.setTextContent = function(t) { + var r = this._textContent; + r !== t && (r && r !== t && this.removeTextContent(), t.innerTransformable = new Pm(), this._attachComponent(t), this._textContent = t, this.markRedraw()); + }, e.prototype.setTextConfig = function(t) { + this.textConfig || (this.textConfig = {}), $t(this.textConfig, t), this.markRedraw(); + }, e.prototype.removeTextConfig = function() { + this.textConfig = null, this.markRedraw(); + }, e.prototype.removeTextContent = function() { + var t = this._textContent; + t && (t.innerTransformable = null, this._detachComponent(t), this._textContent = null, this._innerTextDefaultStyle = null, this.markRedraw()); + }, e.prototype.getTextGuideLine = function() { + return this._textGuide; + }, e.prototype.setTextGuideLine = function(t) { + this._textGuide && this._textGuide !== t && this.removeTextGuideLine(), this._attachComponent(t), this._textGuide = t, this.markRedraw(); + }, e.prototype.removeTextGuideLine = function() { + var t = this._textGuide; + t && (this._detachComponent(t), this._textGuide = null, this.markRedraw()); + }, e.prototype.markRedraw = function() { + this.__dirty |= od; + var t = this.__zr; + t && (this.__inHover ? t.refreshHover() : t.refresh()), this.__hostTarget && this.__hostTarget.markRedraw(); + }, e.prototype.dirty = function() { + this.markRedraw(); + }, e.prototype._toggleHoverLayerFlag = function(t) { + this.__inHover = t; + var r = this._textContent, n = this._textGuide; + r && (r.__inHover = t), n && (n.__inHover = t); + }, e.prototype.addSelfToZr = function(t) { + if (this.__zr !== t) { + this.__zr = t; + var r = this.animators; + if (r) + for (var n = 0; n < r.length; n++) + t.animation.addAnimator(r[n]); + this._clipPath && this._clipPath.addSelfToZr(t), this._textContent && this._textContent.addSelfToZr(t), this._textGuide && this._textGuide.addSelfToZr(t); + } + }, e.prototype.removeSelfFromZr = function(t) { + if (this.__zr) { + this.__zr = null; + var r = this.animators; + if (r) + for (var n = 0; n < r.length; n++) + t.animation.removeAnimator(r[n]); + this._clipPath && this._clipPath.removeSelfFromZr(t), this._textContent && this._textContent.removeSelfFromZr(t), this._textGuide && this._textGuide.removeSelfFromZr(t); + } + }, e.prototype.animate = function(t, r, n) { + var i = t ? this[t] : this, a = new d8(i, r, n); + return t && (a.targetName = t), this.addAnimator(a, t), a; + }, e.prototype.addAnimator = function(t, r) { + var n = this.__zr, i = this; + t.during(function() { + i.updateDuringAnimation(r); + }).done(function() { + var a = i.animators, o = di(a, t); + o >= 0 && a.splice(o, 1); + }), this.animators.push(t), n && n.animation.addAnimator(t), n && n.wakeUp(); + }, e.prototype.updateDuringAnimation = function(t) { + this.markRedraw(); + }, e.prototype.stopAnimation = function(t, r) { + for (var n = this.animators, i = n.length, a = [], o = 0; o < i; o++) { + var l = n[o]; + !t || t === l.scope ? l.stop(r) : a.push(l); + } + return this.animators = a, this; + }, e.prototype.animateTo = function(t, r, n) { + UV(this, t, r, n); + }, e.prototype.animateFrom = function(t, r, n) { + UV(this, t, r, n, !0); + }, e.prototype._transitionState = function(t, r, n, i) { + for (var a = UV(this, r, n, i), o = 0; o < a.length; o++) + a[o].__fromStateTransition = t; + }, e.prototype.getBoundingRect = function() { + return null; + }, e.prototype.getPaintRect = function() { + return null; + }, e.initDefaultProps = function() { + var t = e.prototype; + t.type = "element", t.name = "", t.ignore = t.silent = t.isGroup = t.draggable = t.dragging = t.ignoreClip = t.__inHover = !1, t.__dirty = od; + function r(n, i, a, o) { + Object.defineProperty(t, n, { + get: function() { + if (!this[i]) { + var u = this[i] = []; + l(this, u); + } + return this[i]; + }, + set: function(u) { + this[a] = u[0], this[o] = u[1], this[i] = u, l(this, u); + } + }); + function l(u, d) { + Object.defineProperty(d, 0, { + get: function() { + return u[a]; + }, + set: function(f) { + u[a] = f; + } + }), Object.defineProperty(d, 1, { + get: function() { + return u[o]; + }, + set: function(f) { + u[o] = f; + } + }); + } + } + Object.defineProperty && (r("position", "_legacyPos", "x", "y"), r("scale", "_legacyScale", "scaleX", "scaleY"), r("origin", "_legacyOrigin", "originX", "originY")); + }(), e; +}(); +Fs(f8, Rf); +Fs(f8, Pm); +function UV(e, t, r, n, i) { + r = r || {}; + var a = []; + yve(e, "", e, t, r, n, a, i); + var o = a.length, l = !1, u = r.done, d = r.aborted, f = function() { + l = !0, o--, o <= 0 && (l ? u && u() : d && d()); + }, g = function() { + o--, o <= 0 && (l ? u && u() : d && d()); + }; + o || u && u(), a.length > 0 && r.during && a[0].during(function(C, A) { + r.during(A); + }); + for (var v = 0; v < a.length; v++) { + var y = a[v]; + f && y.done(f), g && y.aborted(g), r.force && y.duration(r.duration), y.start(r.easing); + } + return a; +} +function jV(e, t, r) { + for (var n = 0; n < r; n++) + e[n] = t[n]; +} +function vze(e) { + return Sc(e[0]); +} +function mze(e, t, r) { + if (Sc(t[r])) + if (Sc(e[r]) || (e[r] = []), Nu(t[r])) { + var n = t[r].length; + e[r].length !== n && (e[r] = new t[r].constructor(n), jV(e[r], t[r], n)); + } else { + var i = t[r], a = e[r], o = i.length; + if (vze(i)) + for (var l = i[0].length, u = 0; u < o; u++) + a[u] ? jV(a[u], i[u], l) : a[u] = Array.prototype.slice.call(i[u]); + else + jV(a, i, o); + a.length = i.length; + } + else + e[r] = t[r]; +} +function yze(e, t) { + return e === t || Sc(e) && Sc(t) && _ze(e, t); +} +function _ze(e, t) { + var r = e.length; + if (r !== t.length) + return !1; + for (var n = 0; n < r; n++) + if (e[n] !== t[n]) + return !1; + return !0; +} +function yve(e, t, r, n, i, a, o, l) { + for (var u = Ri(n), d = i.duration, f = i.delay, g = i.additive, v = i.setToFinal, y = !sn(a), C = e.animators, A = [], S = 0; S < u.length; S++) { + var _ = u[S], E = n[_]; + if (E != null && r[_] != null && (y || a[_])) + if (sn(E) && !Sc(E) && !uD(E)) { + if (t) { + l || (r[_] = E, e.updateDuringAnimation(t)); + continue; + } + yve(e, _, r[_], E, i, a && a[_], o, l); + } else + A.push(_); + else + l || (r[_] = E, e.updateDuringAnimation(t), A.push(_)); + } + var I = A.length; + if (!g && I) + for (var w = 0; w < C.length; w++) { + var x = C[w]; + if (x.targetName === t) { + var b = x.stopTracks(A); + if (b) { + var R = di(C, x); + C.splice(R, 1); + } + } + } + if (i.force || (A = Ma(A, function(B) { + return !yze(n[B], r[B]); + }), I = A.length), I > 0 || i.force && !o.length) { + var M = void 0, O = void 0, P = void 0; + if (l) { + O = {}, v && (M = {}); + for (var w = 0; w < I; w++) { + var _ = A[w]; + O[_] = r[_], v ? M[_] = n[_] : r[_] = n[_]; + } + } else if (v) { + P = {}; + for (var w = 0; w < I; w++) { + var _ = A[w]; + P[_] = A1(r[_]), mze(r, n, _); + } + } + var x = new d8(r, !1, !1, g ? Ma(C, function(H) { + return H.targetName === t; + }) : null); + x.targetName = t, i.scope && (x.scope = i.scope), v && M && x.whenWithKeys(0, M, A), P && x.whenWithKeys(0, P, A), x.whenWithKeys(d == null ? 500 : d, l ? O : n, A).delay(f || 0), e.addAnimator(x, t), o.push(x); + } +} +const _ve = f8; +var Sve = function(e) { + No(t, e); + function t(r) { + var n = e.call(this) || this; + return n.isGroup = !0, n._children = [], n.attr(r), n; + } + return t.prototype.childrenRef = function() { + return this._children; + }, t.prototype.children = function() { + return this._children.slice(); + }, t.prototype.childAt = function(r) { + return this._children[r]; + }, t.prototype.childOfName = function(r) { + for (var n = this._children, i = 0; i < n.length; i++) + if (n[i].name === r) + return n[i]; + }, t.prototype.childCount = function() { + return this._children.length; + }, t.prototype.add = function(r) { + return r && r !== this && r.parent !== this && (this._children.push(r), this._doAdd(r)), this; + }, t.prototype.addBefore = function(r, n) { + if (r && r !== this && r.parent !== this && n && n.parent === this) { + var i = this._children, a = i.indexOf(n); + a >= 0 && (i.splice(a, 0, r), this._doAdd(r)); + } + return this; + }, t.prototype.replace = function(r, n) { + var i = di(this._children, r); + return i >= 0 && this.replaceAt(n, i), this; + }, t.prototype.replaceAt = function(r, n) { + var i = this._children, a = i[n]; + if (r && r !== this && r.parent !== this && r !== a) { + i[n] = r, a.parent = null; + var o = this.__zr; + o && a.removeSelfFromZr(o), this._doAdd(r); + } + return this; + }, t.prototype._doAdd = function(r) { + r.parent && r.parent.remove(r), r.parent = this; + var n = this.__zr; + n && n !== r.__zr && r.addSelfToZr(n), n && n.refresh(); + }, t.prototype.remove = function(r) { + var n = this.__zr, i = this._children, a = di(i, r); + return a < 0 ? this : (i.splice(a, 1), r.parent = null, n && r.removeSelfFromZr(n), n && n.refresh(), this); + }, t.prototype.removeAll = function() { + for (var r = this._children, n = this.__zr, i = 0; i < r.length; i++) { + var a = r[i]; + n && a.removeSelfFromZr(n), a.parent = null; + } + return r.length = 0, this; + }, t.prototype.eachChild = function(r, n) { + for (var i = this._children, a = 0; a < i.length; a++) { + var o = i[a]; + r.call(n, o, a); + } + return this; + }, t.prototype.traverse = function(r, n) { + for (var i = 0; i < this._children.length; i++) { + var a = this._children[i], o = r.call(n, a); + a.isGroup && !o && a.traverse(r, n); + } + return this; + }, t.prototype.addSelfToZr = function(r) { + e.prototype.addSelfToZr.call(this, r); + for (var n = 0; n < this._children.length; n++) { + var i = this._children[n]; + i.addSelfToZr(r); + } + }, t.prototype.removeSelfFromZr = function(r) { + e.prototype.removeSelfFromZr.call(this, r); + for (var n = 0; n < this._children.length; n++) { + var i = this._children[n]; + i.removeSelfFromZr(r); + } + }, t.prototype.getBoundingRect = function(r) { + for (var n = new ei(0, 0, 0, 0), i = r || this._children, a = [], o = null, l = 0; l < i.length; l++) { + var u = i[l]; + if (!(u.ignore || u.invisible)) { + var d = u.getBoundingRect(), f = u.getLocalTransform(a); + f ? (ei.applyTransform(n, d, f), o = o || n.clone(), o.union(n)) : (o = o || d.clone(), o.union(d)); + } + } + return o || n; + }, t; +}(_ve); +Sve.prototype.type = "group"; +const _n = Sve; +/*! +* ZRender, a high performance 2d drawing library. +* +* Copyright (c) 2013, Baidu Inc. +* All rights reserved. +* +* LICENSE +* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt +*/ +var CN = {}, kb = {}; +function Sze(e) { + delete kb[e]; +} +function bze(e) { + if (!e) + return !1; + if (typeof e == "string") + return hR(e, 1) < UH; + if (e.colorStops) { + for (var t = e.colorStops, r = 0, n = t.length, i = 0; i < n; i++) + r += hR(t[i].color, 1); + return r /= n, r < UH; + } + return !1; +} +var Eze = function() { + function e(t, r, n) { + var i = this; + this._sleepAfterStill = 10, this._stillFrameAccum = 0, this._needsRefresh = !0, this._needsRefreshHover = !0, this._darkMode = !1, n = n || {}, this.dom = r, this.id = t; + var a = new AVe(), o = n.renderer || "canvas"; + CN[o] || (o = Ri(CN)[0]), n.useDirtyRect = n.useDirtyRect == null ? !1 : n.useDirtyRect; + var l = new CN[o](r, a, n, t), u = n.ssr || l.ssrOnly; + this.storage = a, this.painter = l; + var d = !Yi.node && !Yi.worker && !u ? new hze(l.getViewportRoot(), l.root) : null, f = n.useCoarsePointer, g = f == null || f === "auto" ? Yi.touchEventsSupported : !!f, v = 44, y; + g && (y = Fn(n.pointerSize, v)), this.handler = new CVe(a, l, d, l.root, y), this.animation = new nze({ + stage: { + update: u ? null : function() { + return i._flush(!0); + } + } + }), u || this.animation.start(); + } + return e.prototype.add = function(t) { + this._disposed || !t || (this.storage.addRoot(t), t.addSelfToZr(this), this.refresh()); + }, e.prototype.remove = function(t) { + this._disposed || !t || (this.storage.delRoot(t), t.removeSelfFromZr(this), this.refresh()); + }, e.prototype.configLayer = function(t, r) { + this._disposed || (this.painter.configLayer && this.painter.configLayer(t, r), this.refresh()); + }, e.prototype.setBackgroundColor = function(t) { + this._disposed || (this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this.refresh(), this._backgroundColor = t, this._darkMode = bze(t)); + }, e.prototype.getBackgroundColor = function() { + return this._backgroundColor; + }, e.prototype.setDarkMode = function(t) { + this._darkMode = t; + }, e.prototype.isDarkMode = function() { + return this._darkMode; + }, e.prototype.refreshImmediately = function(t) { + this._disposed || (t || this.animation.update(!0), this._needsRefresh = !1, this.painter.refresh(), this._needsRefresh = !1); + }, e.prototype.refresh = function() { + this._disposed || (this._needsRefresh = !0, this.animation.start()); + }, e.prototype.flush = function() { + this._disposed || this._flush(!1); + }, e.prototype._flush = function(t) { + var r, n = sw(); + this._needsRefresh && (r = !0, this.refreshImmediately(t)), this._needsRefreshHover && (r = !0, this.refreshHoverImmediately()); + var i = sw(); + r ? (this._stillFrameAccum = 0, this.trigger("rendered", { + elapsedTime: i - n + })) : this._sleepAfterStill > 0 && (this._stillFrameAccum++, this._stillFrameAccum > this._sleepAfterStill && this.animation.stop()); + }, e.prototype.setSleepAfterStill = function(t) { + this._sleepAfterStill = t; + }, e.prototype.wakeUp = function() { + this._disposed || (this.animation.start(), this._stillFrameAccum = 0); + }, e.prototype.refreshHover = function() { + this._needsRefreshHover = !0; + }, e.prototype.refreshHoverImmediately = function() { + this._disposed || (this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.getType() === "canvas" && this.painter.refreshHover()); + }, e.prototype.resize = function(t) { + this._disposed || (t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize()); + }, e.prototype.clearAnimation = function() { + this._disposed || this.animation.clear(); + }, e.prototype.getWidth = function() { + if (!this._disposed) + return this.painter.getWidth(); + }, e.prototype.getHeight = function() { + if (!this._disposed) + return this.painter.getHeight(); + }, e.prototype.setCursorStyle = function(t) { + this._disposed || this.handler.setCursorStyle(t); + }, e.prototype.findHover = function(t, r) { + if (!this._disposed) + return this.handler.findHover(t, r); + }, e.prototype.on = function(t, r, n) { + return this._disposed || this.handler.on(t, r, n), this; + }, e.prototype.off = function(t, r) { + this._disposed || this.handler.off(t, r); + }, e.prototype.trigger = function(t, r) { + this._disposed || this.handler.trigger(t, r); + }, e.prototype.clear = function() { + if (!this._disposed) { + for (var t = this.storage.getRoots(), r = 0; r < t.length; r++) + t[r] instanceof _n && t[r].removeSelfFromZr(this); + this.storage.delAllRoots(), this.painter.clear(); + } + }, e.prototype.dispose = function() { + this._disposed || (this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, this._disposed = !0, Sze(this.id)); + }, e; +}(); +function VH(e, t) { + var r = new Eze(i8(), e, t); + return kb[r.id] = r, r; +} +function Cze(e) { + e.dispose(); +} +function Tze() { + for (var e in kb) + kb.hasOwnProperty(e) && kb[e].dispose(); + kb = {}; +} +function wze(e) { + return kb[e]; +} +function bve(e, t) { + CN[e] = t; +} +var zH; +function Eve(e) { + if (typeof zH == "function") + return zH(e); +} +function Cve(e) { + zH = e; +} +var Ize = "5.5.0"; +const Tve = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + dispose: Cze, + disposeAll: Tze, + getElementSSRData: Eve, + getInstance: wze, + init: VH, + registerPainter: bve, + registerSSRDataGetter: Cve, + version: Ize +}, Symbol.toStringTag, { value: "Module" })); +var kne = 1e-4, wve = 20; +function xze(e) { + return e.replace(/^\s+|\s+$/g, ""); +} +function Ea(e, t, r, n) { + var i = t[0], a = t[1], o = r[0], l = r[1], u = a - i, d = l - o; + if (u === 0) + return d === 0 ? o : (o + l) / 2; + if (n) + if (u > 0) { + if (e <= i) + return o; + if (e >= a) + return l; + } else { + if (e >= i) + return o; + if (e <= a) + return l; + } + else { + if (e === i) + return o; + if (e === a) + return l; + } + return (e - i) / u * d + o; +} +function yr(e, t) { + switch (e) { + case "center": + case "middle": + e = "50%"; + break; + case "left": + case "top": + e = "0%"; + break; + case "right": + case "bottom": + e = "100%"; + break; + } + return wr(e) ? xze(e).match(/%$/) ? parseFloat(e) / 100 * t : parseFloat(e) : e == null ? NaN : +e; +} +function Is(e, t, r) { + return t == null && (t = 10), t = Math.min(Math.max(0, t), wve), e = (+e).toFixed(t), r ? e : +e; +} +function ld(e) { + return e.sort(function(t, r) { + return t - r; + }), e; +} +function wp(e) { + if (e = +e, isNaN(e)) + return 0; + if (e > 1e-14) { + for (var t = 1, r = 0; r < 15; r++, t *= 10) + if (Math.round(e * t) / t === e) + return r; + } + return Ive(e); +} +function Ive(e) { + var t = e.toString().toLowerCase(), r = t.indexOf("e"), n = r > 0 ? +t.slice(r + 1) : 0, i = r > 0 ? r : t.length, a = t.indexOf("."), o = a < 0 ? 0 : i - 1 - a; + return Math.max(0, o - n); +} +function p8(e, t) { + var r = Math.log, n = Math.LN10, i = Math.floor(r(e[1] - e[0]) / n), a = Math.round(r(Math.abs(t[1] - t[0])) / n), o = Math.min(Math.max(-i + a, 0), 20); + return isFinite(o) ? o : 20; +} +function Aze(e, t, r) { + if (!e[t]) + return 0; + var n = xve(e, r); + return n[t] || 0; +} +function xve(e, t) { + var r = Cf(e, function(y, C) { + return y + (isNaN(C) ? 0 : C); + }, 0); + if (r === 0) + return []; + for (var n = Math.pow(10, t), i = er(e, function(y) { + return (isNaN(y) ? 0 : y) / r * n * 100; + }), a = n * 100, o = er(i, function(y) { + return Math.floor(y); + }), l = Cf(o, function(y, C) { + return y + C; + }, 0), u = er(i, function(y, C) { + return y - o[C]; + }); l < a; ) { + for (var d = Number.NEGATIVE_INFINITY, f = null, g = 0, v = u.length; g < v; ++g) + u[g] > d && (d = u[g], f = g); + ++o[f], u[f] = 0, ++l; + } + return er(o, function(y) { + return y / n; + }); +} +function Rze(e, t) { + var r = Math.max(wp(e), wp(t)), n = e + t; + return r > wve ? n : Is(n, r); +} +var HH = 9007199254740991; +function g8(e) { + var t = Math.PI * 2; + return (e % t + t) % t; +} +function Uw(e) { + return e > -kne && e < kne; +} +var Dze = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/; +function vd(e) { + if (e instanceof Date) + return e; + if (wr(e)) { + var t = Dze.exec(e); + if (!t) + return /* @__PURE__ */ new Date(NaN); + if (t[8]) { + var r = +t[4] || 0; + return t[8].toUpperCase() !== "Z" && (r -= +t[8].slice(0, 3)), new Date(Date.UTC(+t[1], +(t[2] || 1) - 1, +t[3] || 1, r, +(t[5] || 0), +t[6] || 0, t[7] ? +t[7].substring(0, 3) : 0)); + } else + return new Date(+t[1], +(t[2] || 1) - 1, +t[3] || 1, +t[4] || 0, +(t[5] || 0), +t[6] || 0, t[7] ? +t[7].substring(0, 3) : 0); + } else if (e == null) + return /* @__PURE__ */ new Date(NaN); + return new Date(Math.round(e)); +} +function Ave(e) { + return Math.pow(10, SF(e)); +} +function SF(e) { + if (e === 0) + return 0; + var t = Math.floor(Math.log(e) / Math.LN10); + return e / Math.pow(10, t) >= 10 && t++, t; +} +function v8(e, t) { + var r = SF(e), n = Math.pow(10, r), i = e / n, a; + return t ? i < 1.5 ? a = 1 : i < 2.5 ? a = 2 : i < 4 ? a = 3 : i < 7 ? a = 5 : a = 10 : i < 1 ? a = 1 : i < 2 ? a = 2 : i < 3 ? a = 3 : i < 5 ? a = 5 : a = 10, e = a * n, r >= -20 ? +e.toFixed(r < 0 ? -r : 0) : e; +} +function TN(e, t) { + var r = (e.length - 1) * t + 1, n = Math.floor(r), i = +e[n - 1], a = r - n; + return a ? i + a * (e[n] - i) : i; +} +function WH(e) { + e.sort(function(u, d) { + return l(u, d, 0) ? -1 : 1; + }); + for (var t = -1 / 0, r = 1, n = 0; n < e.length; ) { + for (var i = e[n].interval, a = e[n].close, o = 0; o < 2; o++) + i[o] <= t && (i[o] = t, a[o] = o ? 1 : 1 - r), t = i[o], r = a[o]; + i[0] === i[1] && a[0] * a[1] !== 1 ? e.splice(n, 1) : n++; + } + return e; + function l(u, d, f) { + return u.interval[f] < d.interval[f] || u.interval[f] === d.interval[f] && (u.close[f] - d.close[f] === (f ? -1 : 1) || !f && l(u, d, 1)); + } +} +function ov(e) { + var t = parseFloat(e); + return t == e && (t !== 0 || !wr(e) || e.indexOf("x") <= 0) ? t : NaN; +} +function m8(e) { + return !isNaN(ov(e)); +} +function Rve() { + return Math.round(Math.random() * 9); +} +function Dve(e, t) { + return t === 0 ? e : Dve(t, e % t); +} +function Pne(e, t) { + return e == null ? t : t == null ? e : e * t / Dve(e, t); +} +function Ca(e) { + throw new Error(e); +} +function Nne(e, t, r) { + return (t - e) * r + e; +} +var Ove = "series\0", Mve = "\0_ec_\0"; +function qa(e) { + return e instanceof Array ? e : e == null ? [] : [e]; +} +function uE(e, t, r) { + if (e) { + e[t] = e[t] || {}, e.emphasis = e.emphasis || {}, e.emphasis[t] = e.emphasis[t] || {}; + for (var n = 0, i = r.length; n < i; n++) { + var a = r[n]; + !e.emphasis[t].hasOwnProperty(a) && e[t].hasOwnProperty(a) && (e.emphasis[t][a] = e[t][a]); + } + } +} +var Lne = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"]; +function hI(e) { + return sn(e) && !qt(e) && !(e instanceof Date) ? e.value : e; +} +function Oze(e) { + return sn(e) && !(e instanceof Array); +} +function kve(e, t, r) { + var n = r === "normalMerge", i = r === "replaceMerge", a = r === "replaceAll"; + e = e || [], t = (t || []).slice(); + var o = $r(); + Ee(t, function(u, d) { + if (!sn(u)) { + t[d] = null; + return; + } + }); + var l = Mze(e, o, r); + return (n || i) && kze(l, e, o, t), n && Pze(l, t), n || i ? Nze(l, t, i) : a && Lze(l, t), Fze(l), l; +} +function Mze(e, t, r) { + var n = []; + if (r === "replaceAll") + return n; + for (var i = 0; i < e.length; i++) { + var a = e[i]; + a && a.id != null && t.set(a.id, i), n.push({ + existing: r === "replaceMerge" || fR(a) ? null : a, + newOption: null, + keyInfo: null, + brandNew: null + }); + } + return n; +} +function kze(e, t, r, n) { + Ee(n, function(i, a) { + if (!(!i || i.id == null)) { + var o = R1(i.id), l = r.get(o); + if (l != null) { + var u = e[l]; + Qc(!u.newOption, 'Duplicated option on id "' + o + '".'), u.newOption = i, u.existing = t[l], n[a] = null; + } + } + }); +} +function Pze(e, t) { + Ee(t, function(r, n) { + if (!(!r || r.name == null)) + for (var i = 0; i < e.length; i++) { + var a = e[i].existing; + if (!e[i].newOption && a && (a.id == null || r.id == null) && !fR(r) && !fR(a) && Pve("name", a, r)) { + e[i].newOption = r, t[n] = null; + return; + } + } + }); +} +function Nze(e, t, r) { + Ee(t, function(n) { + if (n) { + for ( + var i, a = 0; + // Be `!resultItem` only when `nextIdx >= result.length`. + (i = e[a]) && (i.newOption || fR(i.existing) || // In mode "replaceMerge", here no not-mapped-non-internal-existing. + i.existing && n.id != null && !Pve("id", n, i.existing)); + ) + a++; + i ? (i.newOption = n, i.brandNew = r) : e.push({ + newOption: n, + brandNew: r, + existing: null, + keyInfo: null + }), a++; + } + }); +} +function Lze(e, t) { + Ee(t, function(r) { + e.push({ + newOption: r, + brandNew: !0, + existing: null, + keyInfo: null + }); + }); +} +function Fze(e) { + var t = $r(); + Ee(e, function(r) { + var n = r.existing; + n && t.set(n.id, r); + }), Ee(e, function(r) { + var n = r.newOption; + Qc(!n || n.id == null || !t.get(n.id) || t.get(n.id) === r, "id duplicates: " + (n && n.id)), n && n.id != null && t.set(n.id, r), !r.keyInfo && (r.keyInfo = {}); + }), Ee(e, function(r, n) { + var i = r.existing, a = r.newOption, o = r.keyInfo; + if (sn(a)) { + if (o.name = a.name != null ? R1(a.name) : i ? i.name : Ove + n, i) + o.id = R1(i.id); + else if (a.id != null) + o.id = R1(a.id); + else { + var l = 0; + do + o.id = "\0" + o.name + "\0" + l++; + while (t.get(o.id)); + } + t.set(o.id, r); + } + }); +} +function Pve(e, t, r) { + var n = ml(t[e], null), i = ml(r[e], null); + return n != null && i != null && n === i; +} +function R1(e) { + return ml(e, ""); +} +function ml(e, t) { + return e == null ? t : wr(e) ? e : Qi(e) || dL(e) ? e + "" : t; +} +function y8(e) { + var t = e.name; + return !!(t && t.indexOf(Ove)); +} +function fR(e) { + return e && e.id != null && R1(e.id).indexOf(Mve) === 0; +} +function Bze(e) { + return Mve + e; +} +function Uze(e, t, r) { + Ee(e, function(n) { + var i = n.newOption; + sn(i) && (n.keyInfo.mainType = t, n.keyInfo.subType = jze(t, i, n.existing, r)); + }); +} +function jze(e, t, r, n) { + var i = t.type ? t.type : r ? r.subType : n.determineSubType(e, t); + return i; +} +function $ze(e, t) { + var r = {}, n = {}; + return i(e || [], r), i(t || [], n, r), [a(r), a(n)]; + function i(o, l, u) { + for (var d = 0, f = o.length; d < f; d++) { + var g = ml(o[d].seriesId, null); + if (g == null) + return; + for (var v = qa(o[d].dataIndex), y = u && u[g], C = 0, A = v.length; C < A; C++) { + var S = v[C]; + y && y[S] ? y[S] = null : (l[g] || (l[g] = {}))[S] = 1; + } + } + } + function a(o, l) { + var u = []; + for (var d in o) + if (o.hasOwnProperty(d) && o[d] != null) + if (l) + u.push(+d); + else { + var f = a(o[d], !0); + f.length && u.push({ + seriesId: d, + dataIndex: f + }); + } + return u; + } +} +function hE(e, t) { + if (t.dataIndexInside != null) + return t.dataIndexInside; + if (t.dataIndex != null) + return qt(t.dataIndex) ? er(t.dataIndex, function(r) { + return e.indexOfRawIndex(r); + }) : e.indexOfRawIndex(t.dataIndex); + if (t.name != null) + return qt(t.name) ? er(t.name, function(r) { + return e.indexOfName(r); + }) : e.indexOfName(t.name); +} +function ea() { + var e = "__ec_inner_" + Vze++; + return function(t) { + return t[e] || (t[e] = {}); + }; +} +var Vze = Rve(); +function D1(e, t, r) { + var n = _8(t, r), i = n.mainTypeSpecified, a = n.queryOptionMap, o = n.others, l = o, u = r ? r.defaultMainType : null; + return !i && u && a.set(u, {}), a.each(function(d, f) { + var g = gD(e, f, d, { + useDefault: u === f, + enableAll: r && r.enableAll != null ? r.enableAll : !0, + enableNone: r && r.enableNone != null ? r.enableNone : !0 + }); + l[f + "Models"] = g.models, l[f + "Model"] = g.models[0]; + }), l; +} +function _8(e, t) { + var r; + if (wr(e)) { + var n = {}; + n[e + "Index"] = 0, r = n; + } else + r = e; + var i = $r(), a = {}, o = !1; + return Ee(r, function(l, u) { + if (u === "dataIndex" || u === "dataIndexInside") { + a[u] = l; + return; + } + var d = u.match(/^(\w+)(Index|Id|Name)$/) || [], f = d[1], g = (d[2] || "").toLowerCase(); + if (!(!f || !g || t && t.includeMainTypes && di(t.includeMainTypes, f) < 0)) { + o = o || !!f; + var v = i.get(f) || i.set(f, {}); + v[g] = l; + } + }), { + mainTypeSpecified: o, + queryOptionMap: i, + others: a + }; +} +var tl = { + useDefault: !0, + enableAll: !1, + enableNone: !1 +}, zze = { + useDefault: !1, + enableAll: !0, + enableNone: !0 +}; +function gD(e, t, r, n) { + n = n || tl; + var i = r.index, a = r.id, o = r.name, l = { + models: null, + specified: i != null || a != null || o != null + }; + if (!l.specified) { + var u = void 0; + return l.models = n.useDefault && (u = e.getComponent(t)) ? [u] : [], l; + } + return i === "none" || i === !1 ? (Qc(n.enableNone, '`"none"` or `false` is not a valid value on index option.'), l.models = [], l) : (i === "all" && (Qc(n.enableAll, '`"all"` is not a valid value on index option.'), i = a = o = null), l.models = e.queryComponents({ + mainType: t, + index: i, + id: a, + name: o + }), l); +} +function Nve(e, t, r) { + e.setAttribute ? e.setAttribute(t, r) : e[t] = r; +} +function Hze(e, t) { + return e.getAttribute ? e.getAttribute(t) : e[t]; +} +function Wze(e) { + return e === "auto" ? Yi.domSupported ? "html" : "richText" : e || "html"; +} +function GH(e, t) { + var r = $r(), n = []; + return Ee(e, function(i) { + var a = t(i); + (r.get(a) || (n.push(a), r.set(a, []))).push(i); + }), { + keys: n, + buckets: r + }; +} +function Lve(e, t, r, n, i) { + var a = t == null || t === "auto"; + if (n == null) + return n; + if (Qi(n)) { + var o = Nne(r || 0, n, i); + return Is(o, a ? Math.max(wp(r || 0), wp(n)) : t); + } else { + if (wr(n)) + return i < 1 ? r : n; + for (var l = [], u = r, d = n, f = Math.max(u ? u.length : 0, d.length), g = 0; g < f; ++g) { + var v = e.getDimensionInfo(g); + if (v && v.type === "ordinal") + l[g] = (i < 1 && u ? u : d)[g]; + else { + var y = u && u[g] ? u[g] : 0, C = d[g], o = Nne(y, C, i); + l[g] = Is(o, a ? Math.max(wp(y), wp(C)) : t); + } + } + return l; + } +} +var Gze = ".", KS = "___EC__COMPONENT__CONTAINER___", Fve = "___EC__EXTENDED_CLASS___"; +function Gg(e) { + var t = { + main: "", + sub: "" + }; + if (e) { + var r = e.split(Gze); + t.main = r[0] || "", t.sub = r[1] || ""; + } + return t; +} +function Yze(e) { + Qc(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e), 'componentType "' + e + '" illegal'); +} +function Xze(e) { + return !!(e && e[Fve]); +} +function S8(e, t) { + e.$constructor = e, e.extend = function(r) { + var n = this, i; + return Kze(n) ? i = /** @class */ + function(a) { + Dt(o, a); + function o() { + return a.apply(this, arguments) || this; + } + return o; + }(n) : (i = function() { + (r.$constructor || n).apply(this, arguments); + }, a8(i, this)), $t(i.prototype, r), i[Fve] = !0, i.extend = this.extend, i.superCall = Jze, i.superApply = Qze, i.superClass = n, i; + }; +} +function Kze(e) { + return Kr(e) && /^class\s/.test(Function.prototype.toString.call(e)); +} +function Bve(e, t) { + e.extend = t.extend; +} +var Zze = Math.round(Math.random() * 10); +function qze(e) { + var t = ["__\0is_clz", Zze++].join("_"); + e.prototype[t] = !0, e.isInstance = function(r) { + return !!(r && r[t]); + }; +} +function Jze(e, t) { + for (var r = [], n = 2; n < arguments.length; n++) + r[n - 2] = arguments[n]; + return this.superClass.prototype[t].apply(e, r); +} +function Qze(e, t, r) { + return this.superClass.prototype[t].apply(e, r); +} +function bF(e) { + var t = {}; + e.registerClass = function(n) { + var i = n.type || n.prototype.type; + if (i) { + Yze(i), n.prototype.type = i; + var a = Gg(i); + if (!a.sub) + t[a.main] = n; + else if (a.sub !== KS) { + var o = r(a); + o[a.sub] = n; + } + } + return n; + }, e.getClass = function(n, i, a) { + var o = t[n]; + if (o && o[KS] && (o = i ? o[i] : null), a && !o) + throw new Error(i ? "Component " + n + "." + (i || "") + " is used but not imported." : n + ".type should be specified."); + return o; + }, e.getClassesByMainType = function(n) { + var i = Gg(n), a = [], o = t[i.main]; + return o && o[KS] ? Ee(o, function(l, u) { + u !== KS && a.push(l); + }) : a.push(o), a; + }, e.hasClass = function(n) { + var i = Gg(n); + return !!t[i.main]; + }, e.getAllClassMainTypes = function() { + var n = []; + return Ee(t, function(i, a) { + n.push(a); + }), n; + }, e.hasSubTypes = function(n) { + var i = Gg(n), a = t[i.main]; + return a && a[KS]; + }; + function r(n) { + var i = t[n.main]; + return (!i || !i[KS]) && (i = t[n.main] = {}, i[KS] = !0), i; + } +} +function dE(e, t) { + for (var r = 0; r < e.length; r++) + e[r][1] || (e[r][1] = e[r][0]); + return t = t || !1, function(n, i, a) { + for (var o = {}, l = 0; l < e.length; l++) { + var u = e[l][1]; + if (!(i && di(i, u) >= 0 || a && di(a, u) < 0)) { + var d = n.getShallow(u, t); + d != null && (o[e[l][0]] = d); + } + } + return o; + }; +} +var e3e = [ + ["fill", "color"], + ["shadowBlur"], + ["shadowOffsetX"], + ["shadowOffsetY"], + ["opacity"], + ["shadowColor"] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. +], t3e = dE(e3e), r3e = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getAreaStyle = function(t, r) { + return t3e(this, t, r); + }, e; + }() +), YH = new fD(50); +function n3e(e) { + if (typeof e == "string") { + var t = YH.get(e); + return t && t.image; + } else + return e; +} +function b8(e, t, r, n, i) { + if (e) + if (typeof e == "string") { + if (t && t.__zrImageSrc === e || !r) + return t; + var a = YH.get(e), o = { hostEl: r, cb: n, cbPayload: i }; + return a ? (t = a.image, !EF(t) && a.pending.push(o)) : (t = kp.loadImage(e, Fne, Fne), t.__zrImageSrc = e, YH.put(e, t.__cachedImgObj = { + image: t, + pending: [o] + })), t; + } else + return e; + else + return t; +} +function Fne() { + var e = this.__cachedImgObj; + this.onload = this.onerror = this.__cachedImgObj = null; + for (var t = 0; t < e.pending.length; t++) { + var r = e.pending[t], n = r.cb; + n && n(this, r.cbPayload), r.hostEl.dirty(); + } + e.pending.length = 0; +} +function EF(e) { + return e && e.width && e.height; +} +var $V = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g; +function Uve(e, t, r, n, i) { + if (!t) + return ""; + var a = (e + "").split(` +`); + i = jve(t, r, n, i); + for (var o = 0, l = a.length; o < l; o++) + a[o] = $ve(a[o], i); + return a.join(` +`); +} +function jve(e, t, r, n) { + n = n || {}; + var i = $t({}, n); + i.font = t, r = Fn(r, "..."), i.maxIterations = Fn(n.maxIterations, 2); + var a = i.minChar = Fn(n.minChar, 0); + i.cnCharWidth = dd("国", t); + var o = i.ascCharWidth = dd("a", t); + i.placeholder = Fn(n.placeholder, ""); + for (var l = e = Math.max(0, e - 1), u = 0; u < a && l >= o; u++) + l -= o; + var d = dd(r, t); + return d > l && (r = "", d = 0), l = e - d, i.ellipsis = r, i.ellipsisWidth = d, i.contentWidth = l, i.containerWidth = e, i; +} +function $ve(e, t) { + var r = t.containerWidth, n = t.font, i = t.contentWidth; + if (!r) + return ""; + var a = dd(e, n); + if (a <= r) + return e; + for (var o = 0; ; o++) { + if (a <= i || o >= t.maxIterations) { + e += t.ellipsis; + break; + } + var l = o === 0 ? i3e(e, i, t.ascCharWidth, t.cnCharWidth) : a > 0 ? Math.floor(e.length * i / a) : 0; + e = e.substr(0, l), a = dd(e, n); + } + return e === "" && (e = t.placeholder), e; +} +function i3e(e, t, r, n) { + for (var i = 0, a = 0, o = e.length; a < o && i < t; a++) { + var l = e.charCodeAt(a); + i += 0 <= l && l <= 127 ? r : n; + } + return a; +} +function a3e(e, t) { + e != null && (e += ""); + var r = t.overflow, n = t.padding, i = t.font, a = r === "truncate", o = _F(i), l = Fn(t.lineHeight, o), u = !!t.backgroundColor, d = t.lineOverflow === "truncate", f = t.width, g; + f != null && (r === "break" || r === "breakAll") ? g = e ? Vve(e, t.font, f, r === "breakAll", 0).lines : [] : g = e ? e.split(` +`) : []; + var v = g.length * l, y = Fn(t.height, v); + if (v > y && d) { + var C = Math.floor(y / l); + g = g.slice(0, C); + } + if (e && a && f != null) + for (var A = jve(f, i, t.ellipsis, { + minChar: t.truncateMinChar, + placeholder: t.placeholder + }), S = 0; S < g.length; S++) + g[S] = $ve(g[S], A); + for (var _ = y, E = 0, S = 0; S < g.length; S++) + E = Math.max(dd(g[S], i), E); + f == null && (f = E); + var I = E; + return n && (_ += n[0] + n[2], I += n[1] + n[3], f += n[1] + n[3]), u && (I = f), { + lines: g, + height: y, + outerWidth: I, + outerHeight: _, + lineHeight: l, + calculatedLineHeight: o, + contentWidth: E, + contentHeight: v, + width: f + }; +} +var o3e = function() { + function e() { + } + return e; +}(), Bne = function() { + function e(t) { + this.tokens = [], t && (this.tokens = t); + } + return e; +}(), s3e = function() { + function e() { + this.width = 0, this.height = 0, this.contentWidth = 0, this.contentHeight = 0, this.outerWidth = 0, this.outerHeight = 0, this.lines = []; + } + return e; +}(); +function l3e(e, t) { + var r = new s3e(); + if (e != null && (e += ""), !e) + return r; + for (var n = t.width, i = t.height, a = t.overflow, o = (a === "break" || a === "breakAll") && n != null ? { width: n, accumWidth: 0, breakAll: a === "breakAll" } : null, l = $V.lastIndex = 0, u; (u = $V.exec(e)) != null; ) { + var d = u.index; + d > l && VV(r, e.substring(l, d), t, o), VV(r, u[2], t, o, u[1]), l = $V.lastIndex; + } + l < e.length && VV(r, e.substring(l, e.length), t, o); + var f = [], g = 0, v = 0, y = t.padding, C = a === "truncate", A = t.lineOverflow === "truncate"; + function S(ne, fe, de) { + ne.width = fe, ne.lineHeight = de, g += de, v = Math.max(v, fe); + } + e: + for (var _ = 0; _ < r.lines.length; _++) { + for (var E = r.lines[_], I = 0, w = 0, x = 0; x < E.tokens.length; x++) { + var b = E.tokens[x], R = b.styleName && t.rich[b.styleName] || {}, M = b.textPadding = R.padding, O = M ? M[1] + M[3] : 0, P = b.font = R.font || t.font; + b.contentHeight = _F(P); + var B = Fn(R.height, b.contentHeight); + if (b.innerHeight = B, M && (B += M[0] + M[2]), b.height = B, b.lineHeight = Ap(R.lineHeight, t.lineHeight, B), b.align = R && R.align || t.align, b.verticalAlign = R && R.verticalAlign || "middle", A && i != null && g + b.lineHeight > i) { + x > 0 ? (E.tokens = E.tokens.slice(0, x), S(E, w, I), r.lines = r.lines.slice(0, _ + 1)) : r.lines = r.lines.slice(0, _); + break e; + } + var H = R.width, Y = H == null || H === "auto"; + if (typeof H == "string" && H.charAt(H.length - 1) === "%") + b.percentWidth = H, f.push(b), b.contentWidth = dd(b.text, P); + else { + if (Y) { + var X = R.backgroundColor, ee = X && X.image; + ee && (ee = n3e(ee), EF(ee) && (b.width = Math.max(b.width, ee.width * B / ee.height))); + } + var ae = C && n != null ? n - w : null; + ae != null && ae < b.width ? !Y || ae < O ? (b.text = "", b.width = b.contentWidth = 0) : (b.text = Uve(b.text, ae - O, P, t.ellipsis, { minChar: t.truncateMinChar }), b.width = b.contentWidth = dd(b.text, P)) : b.contentWidth = dd(b.text, P); + } + b.width += O, w += b.width, R && (I = Math.max(I, b.lineHeight)); + } + S(E, w, I); + } + r.outerWidth = r.width = Fn(n, v), r.outerHeight = r.height = Fn(i, g), r.contentHeight = g, r.contentWidth = v, y && (r.outerWidth += y[1] + y[3], r.outerHeight += y[0] + y[2]); + for (var _ = 0; _ < f.length; _++) { + var b = f[_], J = b.percentWidth; + b.width = parseInt(J, 10) / 100 * r.width; + } + return r; +} +function VV(e, t, r, n, i) { + var a = t === "", o = i && r.rich[i] || {}, l = e.lines, u = o.font || r.font, d = !1, f, g; + if (n) { + var v = o.padding, y = v ? v[1] + v[3] : 0; + if (o.width != null && o.width !== "auto") { + var C = Np(o.width, n.width) + y; + l.length > 0 && C + n.accumWidth > n.width && (f = t.split(` +`), d = !0), n.accumWidth = C; + } else { + var A = Vve(t, u, n.width, n.breakAll, n.accumWidth); + n.accumWidth = A.accumWidth + y, g = A.linesWidths, f = A.lines; + } + } else + f = t.split(` +`); + for (var S = 0; S < f.length; S++) { + var _ = f[S], E = new o3e(); + if (E.styleName = i, E.text = _, E.isLineHolder = !_ && !a, typeof o.width == "number" ? E.width = o.width : E.width = g ? g[S] : dd(_, u), !S && !d) { + var I = (l[l.length - 1] || (l[0] = new Bne())).tokens, w = I.length; + w === 1 && I[0].isLineHolder ? I[0] = E : (_ || !w || a) && I.push(E); + } else + l.push(new Bne([E])); + } +} +function c3e(e) { + var t = e.charCodeAt(0); + return t >= 32 && t <= 591 || t >= 880 && t <= 4351 || t >= 4608 && t <= 5119 || t >= 7680 && t <= 8303; +} +var u3e = Cf(",&?/;] ".split(""), function(e, t) { + return e[t] = !0, e; +}, {}); +function h3e(e) { + return c3e(e) ? !!u3e[e] : !0; +} +function Vve(e, t, r, n, i) { + for (var a = [], o = [], l = "", u = "", d = 0, f = 0, g = 0; g < e.length; g++) { + var v = e.charAt(g); + if (v === ` +`) { + u && (l += u, f += d), a.push(l), o.push(f), l = "", u = "", d = 0, f = 0; + continue; + } + var y = dd(v, t), C = n ? !1 : !h3e(v); + if (a.length ? f + y > r : i + f + y > r) { + f ? (l || u) && (C ? (l || (l = u, u = "", d = 0, f = d), a.push(l), o.push(f - d), u += v, d += y, l = "", f = d) : (u && (l += u, u = "", d = 0), a.push(l), o.push(f), l = v, f = y)) : C ? (a.push(u), o.push(d), u = v, d = y) : (a.push(v), o.push(y)); + continue; + } + f += y, C ? (u += v, d += y) : (u && (l += u, u = "", d = 0), l += v); + } + return !a.length && !l && (l = e, u = "", d = 0), u && (l += u), l && (a.push(l), o.push(f)), a.length === 1 && (f += i), { + accumWidth: f, + lines: a, + linesWidths: o + }; +} +var XH = "__zr_style_" + Math.round(Math.random() * 10), Yb = { + shadowBlur: 0, + shadowOffsetX: 0, + shadowOffsetY: 0, + shadowColor: "#000", + opacity: 1, + blend: "source-over" +}, CF = { + style: { + shadowBlur: !0, + shadowOffsetX: !0, + shadowOffsetY: !0, + shadowColor: !0, + opacity: !0 + } +}; +Yb[XH] = !0; +var Une = ["z", "z2", "invisible"], d3e = ["invisible"], f3e = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype._init = function(r) { + for (var n = Ri(r), i = 0; i < n.length; i++) { + var a = n[i]; + a === "style" ? this.useStyle(r[a]) : e.prototype.attrKV.call(this, a, r[a]); + } + this.style || this.useStyle({}); + }, t.prototype.beforeBrush = function() { + }, t.prototype.afterBrush = function() { + }, t.prototype.innerBeforeBrush = function() { + }, t.prototype.innerAfterBrush = function() { + }, t.prototype.shouldBePainted = function(r, n, i, a) { + var o = this.transform; + if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && p3e(this, r, n) || o && !o[0] && !o[3]) + return !1; + if (i && this.__clipPaths) { + for (var l = 0; l < this.__clipPaths.length; ++l) + if (this.__clipPaths[l].isZeroArea()) + return !1; + } + if (a && this.parent) + for (var u = this.parent; u; ) { + if (u.ignore) + return !1; + u = u.parent; + } + return !0; + }, t.prototype.contain = function(r, n) { + return this.rectContain(r, n); + }, t.prototype.traverse = function(r, n) { + r.call(n, this); + }, t.prototype.rectContain = function(r, n) { + var i = this.transformCoordToLocal(r, n), a = this.getBoundingRect(); + return a.contain(i[0], i[1]); + }, t.prototype.getPaintRect = function() { + var r = this._paintRect; + if (!this._paintRect || this.__dirty) { + var n = this.transform, i = this.getBoundingRect(), a = this.style, o = a.shadowBlur || 0, l = a.shadowOffsetX || 0, u = a.shadowOffsetY || 0; + r = this._paintRect || (this._paintRect = new ei(0, 0, 0, 0)), n ? ei.applyTransform(r, i, n) : r.copy(i), (o || l || u) && (r.width += o * 2 + Math.abs(l), r.height += o * 2 + Math.abs(u), r.x = Math.min(r.x, r.x + l - o), r.y = Math.min(r.y, r.y + u - o)); + var d = this.dirtyRectTolerance; + r.isZero() || (r.x = Math.floor(r.x - d), r.y = Math.floor(r.y - d), r.width = Math.ceil(r.width + 1 + d * 2), r.height = Math.ceil(r.height + 1 + d * 2)); + } + return r; + }, t.prototype.setPrevPaintRect = function(r) { + r ? (this._prevPaintRect = this._prevPaintRect || new ei(0, 0, 0, 0), this._prevPaintRect.copy(r)) : this._prevPaintRect = null; + }, t.prototype.getPrevPaintRect = function() { + return this._prevPaintRect; + }, t.prototype.animateStyle = function(r) { + return this.animate("style", r); + }, t.prototype.updateDuringAnimation = function(r) { + r === "style" ? this.dirtyStyle() : this.markRedraw(); + }, t.prototype.attrKV = function(r, n) { + r !== "style" ? e.prototype.attrKV.call(this, r, n) : this.style ? this.setStyle(n) : this.useStyle(n); + }, t.prototype.setStyle = function(r, n) { + return typeof r == "string" ? this.style[r] = n : $t(this.style, r), this.dirtyStyle(), this; + }, t.prototype.dirtyStyle = function(r) { + r || this.markRedraw(), this.__dirty |= l1, this._rect && (this._rect = null); + }, t.prototype.dirty = function() { + this.dirtyStyle(); + }, t.prototype.styleChanged = function() { + return !!(this.__dirty & l1); + }, t.prototype.styleUpdated = function() { + this.__dirty &= ~l1; + }, t.prototype.createStyle = function(r) { + return hD(Yb, r); + }, t.prototype.useStyle = function(r) { + r[XH] || (r = this.createStyle(r)), this.__inHover ? this.__hoverStyle = r : this.style = r, this.dirtyStyle(); + }, t.prototype.isStyleObject = function(r) { + return r[XH]; + }, t.prototype._innerSaveToNormal = function(r) { + e.prototype._innerSaveToNormal.call(this, r); + var n = this._normalState; + r.style && !n.style && (n.style = this._mergeStyle(this.createStyle(), this.style)), this._savePrimaryToNormal(r, n, Une); + }, t.prototype._applyStateObj = function(r, n, i, a, o, l) { + e.prototype._applyStateObj.call(this, r, n, i, a, o, l); + var u = !(n && a), d; + if (n && n.style ? o ? a ? d = n.style : (d = this._mergeStyle(this.createStyle(), i.style), this._mergeStyle(d, n.style)) : (d = this._mergeStyle(this.createStyle(), a ? this.style : i.style), this._mergeStyle(d, n.style)) : u && (d = i.style), d) + if (o) { + var f = this.style; + if (this.style = this.createStyle(u ? {} : f), u) + for (var g = Ri(f), v = 0; v < g.length; v++) { + var y = g[v]; + y in d && (d[y] = d[y], this.style[y] = f[y]); + } + for (var C = Ri(d), v = 0; v < C.length; v++) { + var y = C[v]; + this.style[y] = this.style[y]; + } + this._transitionState(r, { + style: d + }, l, this.getAnimationStyleProps()); + } else + this.useStyle(d); + for (var A = this.__inHover ? d3e : Une, v = 0; v < A.length; v++) { + var y = A[v]; + n && n[y] != null ? this[y] = n[y] : u && i[y] != null && (this[y] = i[y]); + } + }, t.prototype._mergeStates = function(r) { + for (var n = e.prototype._mergeStates.call(this, r), i, a = 0; a < r.length; a++) { + var o = r[a]; + o.style && (i = i || {}, this._mergeStyle(i, o.style)); + } + return i && (n.style = i), n; + }, t.prototype._mergeStyle = function(r, n) { + return $t(r, n), r; + }, t.prototype.getAnimationStyleProps = function() { + return CF; + }, t.initDefaultProps = function() { + var r = t.prototype; + r.type = "displayable", r.invisible = !1, r.z = 0, r.z2 = 0, r.zlevel = 0, r.culling = !1, r.cursor = "pointer", r.rectHover = !1, r.incremental = !1, r._rect = null, r.dirtyRectTolerance = 0, r.__dirty = od | l1; + }(), t; +}(_ve), zV = new ei(0, 0, 0, 0), HV = new ei(0, 0, 0, 0); +function p3e(e, t, r) { + return zV.copy(e.getBoundingRect()), e.transform && zV.applyTransform(e.transform), HV.width = t, HV.height = r, !zV.intersect(HV); +} +const Tf = f3e; +var _h = Math.min, Sh = Math.max, WV = Math.sin, GV = Math.cos, ZS = Math.PI * 2, Vk = A0(), zk = A0(), Hk = A0(); +function TF(e, t, r) { + if (e.length !== 0) { + for (var n = e[0], i = n[0], a = n[0], o = n[1], l = n[1], u = 1; u < e.length; u++) + n = e[u], i = _h(i, n[0]), a = Sh(a, n[0]), o = _h(o, n[1]), l = Sh(l, n[1]); + t[0] = i, t[1] = o, r[0] = a, r[1] = l; + } +} +function jne(e, t, r, n, i, a) { + i[0] = _h(e, r), i[1] = _h(t, n), a[0] = Sh(e, r), a[1] = Sh(t, n); +} +var $ne = [], Vne = []; +function g3e(e, t, r, n, i, a, o, l, u, d) { + var f = tve, g = Ml, v = f(e, r, i, o, $ne); + u[0] = 1 / 0, u[1] = 1 / 0, d[0] = -1 / 0, d[1] = -1 / 0; + for (var y = 0; y < v; y++) { + var C = g(e, r, i, o, $ne[y]); + u[0] = _h(C, u[0]), d[0] = Sh(C, d[0]); + } + v = f(t, n, a, l, Vne); + for (var y = 0; y < v; y++) { + var A = g(t, n, a, l, Vne[y]); + u[1] = _h(A, u[1]), d[1] = Sh(A, d[1]); + } + u[0] = _h(e, u[0]), d[0] = Sh(e, d[0]), u[0] = _h(o, u[0]), d[0] = Sh(o, d[0]), u[1] = _h(t, u[1]), d[1] = Sh(t, d[1]), u[1] = _h(l, u[1]), d[1] = Sh(l, d[1]); +} +function v3e(e, t, r, n, i, a, o, l) { + var u = nve, d = Kl, f = Sh(_h(u(e, r, i), 1), 0), g = Sh(_h(u(t, n, a), 1), 0), v = d(e, r, i, f), y = d(t, n, a, g); + o[0] = _h(e, i, v), o[1] = _h(t, a, y), l[0] = Sh(e, i, v), l[1] = Sh(t, a, y); +} +function m3e(e, t, r, n, i, a, o, l, u) { + var d = Mm, f = km, g = Math.abs(i - a); + if (g % ZS < 1e-4 && g > 1e-4) { + l[0] = e - r, l[1] = t - n, u[0] = e + r, u[1] = t + n; + return; + } + if (Vk[0] = GV(i) * r + e, Vk[1] = WV(i) * n + t, zk[0] = GV(a) * r + e, zk[1] = WV(a) * n + t, d(l, Vk, zk), f(u, Vk, zk), i = i % ZS, i < 0 && (i = i + ZS), a = a % ZS, a < 0 && (a = a + ZS), i > a && !o ? a += ZS : i < a && o && (i += ZS), o) { + var v = a; + a = i, i = v; + } + for (var y = 0; y < a; y += Math.PI / 2) + y > i && (Hk[0] = GV(y) * r + e, Hk[1] = WV(y) * n + t, d(l, Hk, l), f(u, Hk, u)); +} +var lo = { + M: 1, + L: 2, + C: 3, + Q: 4, + A: 5, + Z: 6, + R: 7 +}, qS = [], JS = [], Pg = [], D_ = [], Ng = [], Lg = [], YV = Math.min, XV = Math.max, QS = Math.cos, eb = Math.sin, _m = Math.abs, KH = Math.PI, j_ = KH * 2, KV = typeof Float32Array != "undefined", xA = []; +function ZV(e) { + var t = Math.round(e / KH * 1e8) / 1e8; + return t % 2 * KH; +} +function E8(e, t) { + var r = ZV(e[0]); + r < 0 && (r += j_); + var n = r - e[0], i = e[1]; + i += n, !t && i - r >= j_ ? i = r + j_ : t && r - i >= j_ ? i = r - j_ : !t && r > i ? i = r + (j_ - ZV(r - i)) : t && r < i && (i = r - (j_ - ZV(i - r))), e[0] = r, e[1] = i; +} +var y3e = function() { + function e(t) { + this.dpr = 1, this._xi = 0, this._yi = 0, this._x0 = 0, this._y0 = 0, this._len = 0, t && (this._saveData = !1), this._saveData && (this.data = []); + } + return e.prototype.increaseVersion = function() { + this._version++; + }, e.prototype.getVersion = function() { + return this._version; + }, e.prototype.setScale = function(t, r, n) { + n = n || 0, n > 0 && (this._ux = _m(n / SL / t) || 0, this._uy = _m(n / SL / r) || 0); + }, e.prototype.setDPR = function(t) { + this.dpr = t; + }, e.prototype.setContext = function(t) { + this._ctx = t; + }, e.prototype.getContext = function() { + return this._ctx; + }, e.prototype.beginPath = function() { + return this._ctx && this._ctx.beginPath(), this.reset(), this; + }, e.prototype.reset = function() { + this._saveData && (this._len = 0), this._pathSegLen && (this._pathSegLen = null, this._pathLen = 0), this._version++; + }, e.prototype.moveTo = function(t, r) { + return this._drawPendingPt(), this.addData(lo.M, t, r), this._ctx && this._ctx.moveTo(t, r), this._x0 = t, this._y0 = r, this._xi = t, this._yi = r, this; + }, e.prototype.lineTo = function(t, r) { + var n = _m(t - this._xi), i = _m(r - this._yi), a = n > this._ux || i > this._uy; + if (this.addData(lo.L, t, r), this._ctx && a && this._ctx.lineTo(t, r), a) + this._xi = t, this._yi = r, this._pendingPtDist = 0; + else { + var o = n * n + i * i; + o > this._pendingPtDist && (this._pendingPtX = t, this._pendingPtY = r, this._pendingPtDist = o); + } + return this; + }, e.prototype.bezierCurveTo = function(t, r, n, i, a, o) { + return this._drawPendingPt(), this.addData(lo.C, t, r, n, i, a, o), this._ctx && this._ctx.bezierCurveTo(t, r, n, i, a, o), this._xi = a, this._yi = o, this; + }, e.prototype.quadraticCurveTo = function(t, r, n, i) { + return this._drawPendingPt(), this.addData(lo.Q, t, r, n, i), this._ctx && this._ctx.quadraticCurveTo(t, r, n, i), this._xi = n, this._yi = i, this; + }, e.prototype.arc = function(t, r, n, i, a, o) { + this._drawPendingPt(), xA[0] = i, xA[1] = a, E8(xA, o), i = xA[0], a = xA[1]; + var l = a - i; + return this.addData(lo.A, t, r, n, n, i, l, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, r, n, i, a, o), this._xi = QS(a) * n + t, this._yi = eb(a) * n + r, this; + }, e.prototype.arcTo = function(t, r, n, i, a) { + return this._drawPendingPt(), this._ctx && this._ctx.arcTo(t, r, n, i, a), this; + }, e.prototype.rect = function(t, r, n, i) { + return this._drawPendingPt(), this._ctx && this._ctx.rect(t, r, n, i), this.addData(lo.R, t, r, n, i), this; + }, e.prototype.closePath = function() { + this._drawPendingPt(), this.addData(lo.Z); + var t = this._ctx, r = this._x0, n = this._y0; + return t && t.closePath(), this._xi = r, this._yi = n, this; + }, e.prototype.fill = function(t) { + t && t.fill(), this.toStatic(); + }, e.prototype.stroke = function(t) { + t && t.stroke(), this.toStatic(); + }, e.prototype.len = function() { + return this._len; + }, e.prototype.setData = function(t) { + var r = t.length; + !(this.data && this.data.length === r) && KV && (this.data = new Float32Array(r)); + for (var n = 0; n < r; n++) + this.data[n] = t[n]; + this._len = r; + }, e.prototype.appendPath = function(t) { + t instanceof Array || (t = [t]); + for (var r = t.length, n = 0, i = this._len, a = 0; a < r; a++) + n += t[a].len(); + KV && this.data instanceof Float32Array && (this.data = new Float32Array(i + n)); + for (var a = 0; a < r; a++) + for (var o = t[a].data, l = 0; l < o.length; l++) + this.data[i++] = o[l]; + this._len = i; + }, e.prototype.addData = function(t, r, n, i, a, o, l, u, d) { + if (this._saveData) { + var f = this.data; + this._len + arguments.length > f.length && (this._expandData(), f = this.data); + for (var g = 0; g < arguments.length; g++) + f[this._len++] = arguments[g]; + } + }, e.prototype._drawPendingPt = function() { + this._pendingPtDist > 0 && (this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY), this._pendingPtDist = 0); + }, e.prototype._expandData = function() { + if (!(this.data instanceof Array)) { + for (var t = [], r = 0; r < this._len; r++) + t[r] = this.data[r]; + this.data = t; + } + }, e.prototype.toStatic = function() { + if (this._saveData) { + this._drawPendingPt(); + var t = this.data; + t instanceof Array && (t.length = this._len, KV && this._len > 11 && (this.data = new Float32Array(t))); + } + }, e.prototype.getBoundingRect = function() { + Pg[0] = Pg[1] = Ng[0] = Ng[1] = Number.MAX_VALUE, D_[0] = D_[1] = Lg[0] = Lg[1] = -Number.MAX_VALUE; + var t = this.data, r = 0, n = 0, i = 0, a = 0, o; + for (o = 0; o < this._len; ) { + var l = t[o++], u = o === 1; + switch (u && (r = t[o], n = t[o + 1], i = r, a = n), l) { + case lo.M: + r = i = t[o++], n = a = t[o++], Ng[0] = i, Ng[1] = a, Lg[0] = i, Lg[1] = a; + break; + case lo.L: + jne(r, n, t[o], t[o + 1], Ng, Lg), r = t[o++], n = t[o++]; + break; + case lo.C: + g3e(r, n, t[o++], t[o++], t[o++], t[o++], t[o], t[o + 1], Ng, Lg), r = t[o++], n = t[o++]; + break; + case lo.Q: + v3e(r, n, t[o++], t[o++], t[o], t[o + 1], Ng, Lg), r = t[o++], n = t[o++]; + break; + case lo.A: + var d = t[o++], f = t[o++], g = t[o++], v = t[o++], y = t[o++], C = t[o++] + y; + o += 1; + var A = !t[o++]; + u && (i = QS(y) * g + d, a = eb(y) * v + f), m3e(d, f, g, v, y, C, A, Ng, Lg), r = QS(C) * g + d, n = eb(C) * v + f; + break; + case lo.R: + i = r = t[o++], a = n = t[o++]; + var S = t[o++], _ = t[o++]; + jne(i, a, i + S, a + _, Ng, Lg); + break; + case lo.Z: + r = i, n = a; + break; + } + Mm(Pg, Pg, Ng), km(D_, D_, Lg); + } + return o === 0 && (Pg[0] = Pg[1] = D_[0] = D_[1] = 0), new ei(Pg[0], Pg[1], D_[0] - Pg[0], D_[1] - Pg[1]); + }, e.prototype._calculateLength = function() { + var t = this.data, r = this._len, n = this._ux, i = this._uy, a = 0, o = 0, l = 0, u = 0; + this._pathSegLen || (this._pathSegLen = []); + for (var d = this._pathSegLen, f = 0, g = 0, v = 0; v < r; ) { + var y = t[v++], C = v === 1; + C && (a = t[v], o = t[v + 1], l = a, u = o); + var A = -1; + switch (y) { + case lo.M: + a = l = t[v++], o = u = t[v++]; + break; + case lo.L: { + var S = t[v++], _ = t[v++], E = S - a, I = _ - o; + (_m(E) > n || _m(I) > i || v === r - 1) && (A = Math.sqrt(E * E + I * I), a = S, o = _); + break; + } + case lo.C: { + var w = t[v++], x = t[v++], S = t[v++], _ = t[v++], b = t[v++], R = t[v++]; + A = RVe(a, o, w, x, S, _, b, R, 10), a = b, o = R; + break; + } + case lo.Q: { + var w = t[v++], x = t[v++], S = t[v++], _ = t[v++]; + A = OVe(a, o, w, x, S, _, 10), a = S, o = _; + break; + } + case lo.A: + var M = t[v++], O = t[v++], P = t[v++], B = t[v++], H = t[v++], Y = t[v++], X = Y + H; + v += 1, C && (l = QS(H) * P + M, u = eb(H) * B + O), A = XV(P, B) * YV(j_, Math.abs(Y)), a = QS(X) * P + M, o = eb(X) * B + O; + break; + case lo.R: { + l = a = t[v++], u = o = t[v++]; + var ee = t[v++], ae = t[v++]; + A = ee * 2 + ae * 2; + break; + } + case lo.Z: { + var E = l - a, I = u - o; + A = Math.sqrt(E * E + I * I), a = l, o = u; + break; + } + } + A >= 0 && (d[g++] = A, f += A); + } + return this._pathLen = f, f; + }, e.prototype.rebuildPath = function(t, r) { + var n = this.data, i = this._ux, a = this._uy, o = this._len, l, u, d, f, g, v, y = r < 1, C, A, S = 0, _ = 0, E, I = 0, w, x; + if (!(y && (this._pathSegLen || this._calculateLength(), C = this._pathSegLen, A = this._pathLen, E = r * A, !E))) + e: + for (var b = 0; b < o; ) { + var R = n[b++], M = b === 1; + switch (M && (d = n[b], f = n[b + 1], l = d, u = f), R !== lo.L && I > 0 && (t.lineTo(w, x), I = 0), R) { + case lo.M: + l = d = n[b++], u = f = n[b++], t.moveTo(d, f); + break; + case lo.L: { + g = n[b++], v = n[b++]; + var O = _m(g - d), P = _m(v - f); + if (O > i || P > a) { + if (y) { + var B = C[_++]; + if (S + B > E) { + var H = (E - S) / B; + t.lineTo(d * (1 - H) + g * H, f * (1 - H) + v * H); + break e; + } + S += B; + } + t.lineTo(g, v), d = g, f = v, I = 0; + } else { + var Y = O * O + P * P; + Y > I && (w = g, x = v, I = Y); + } + break; + } + case lo.C: { + var X = n[b++], ee = n[b++], ae = n[b++], J = n[b++], ne = n[b++], fe = n[b++]; + if (y) { + var B = C[_++]; + if (S + B > E) { + var H = (E - S) / B; + g0(d, X, ae, ne, H, qS), g0(f, ee, J, fe, H, JS), t.bezierCurveTo(qS[1], JS[1], qS[2], JS[2], qS[3], JS[3]); + break e; + } + S += B; + } + t.bezierCurveTo(X, ee, ae, J, ne, fe), d = ne, f = fe; + break; + } + case lo.Q: { + var X = n[b++], ee = n[b++], ae = n[b++], J = n[b++]; + if (y) { + var B = C[_++]; + if (S + B > E) { + var H = (E - S) / B; + lR(d, X, ae, H, qS), lR(f, ee, J, H, JS), t.quadraticCurveTo(qS[1], JS[1], qS[2], JS[2]); + break e; + } + S += B; + } + t.quadraticCurveTo(X, ee, ae, J), d = ae, f = J; + break; + } + case lo.A: + var de = n[b++], Te = n[b++], be = n[b++], Ve = n[b++], pe = n[b++], Be = n[b++], Ue = n[b++], Qe = !n[b++], Re = be > Ve ? be : Ve, Ne = _m(be - Ve) > 1e-3, Me = pe + Be, we = !1; + if (y) { + var B = C[_++]; + S + B > E && (Me = pe + Be * (E - S) / B, we = !0), S += B; + } + if (Ne && t.ellipse ? t.ellipse(de, Te, be, Ve, Ue, pe, Me, Qe) : t.arc(de, Te, Re, pe, Me, Qe), we) + break e; + M && (l = QS(pe) * be + de, u = eb(pe) * Ve + Te), d = QS(Me) * be + de, f = eb(Me) * Ve + Te; + break; + case lo.R: + l = d = n[b], u = f = n[b + 1], g = n[b++], v = n[b++]; + var He = n[b++], Ie = n[b++]; + if (y) { + var B = C[_++]; + if (S + B > E) { + var Ae = E - S; + t.moveTo(g, v), t.lineTo(g + YV(Ae, He), v), Ae -= He, Ae > 0 && t.lineTo(g + He, v + YV(Ae, Ie)), Ae -= Ie, Ae > 0 && t.lineTo(g + XV(He - Ae, 0), v + Ie), Ae -= He, Ae > 0 && t.lineTo(g, v + XV(Ie - Ae, 0)); + break e; + } + S += B; + } + t.rect(g, v, He, Ie); + break; + case lo.Z: + if (y) { + var B = C[_++]; + if (S + B > E) { + var H = (E - S) / B; + t.lineTo(d * (1 - H) + l * H, f * (1 - H) + u * H); + break e; + } + S += B; + } + t.closePath(), d = l, f = u; + } + } + }, e.prototype.clone = function() { + var t = new e(), r = this.data; + return t.data = r.slice ? r.slice() : Array.prototype.slice.call(r), t._len = this._len, t; + }, e.CMD = lo, e.initDefaultProps = function() { + var t = e.prototype; + t._saveData = !0, t._ux = 0, t._uy = 0, t._pendingPtDist = 0, t._version = 0; + }(), e; +}(); +const sv = y3e; +function H_(e, t, r, n, i, a, o) { + if (i === 0) + return !1; + var l = i, u = 0, d = e; + if (o > t + l && o > n + l || o < t - l && o < n - l || a > e + l && a > r + l || a < e - l && a < r - l) + return !1; + if (e !== r) + u = (t - n) / (e - r), d = (e * n - r * t) / (e - r); + else + return Math.abs(a - e) <= l / 2; + var f = u * a - o + d, g = f * f / (u * u + 1); + return g <= l / 2 * l / 2; +} +function _3e(e, t, r, n, i, a, o, l, u, d, f) { + if (u === 0) + return !1; + var g = u; + if (f > t + g && f > n + g && f > a + g && f > l + g || f < t - g && f < n - g && f < a - g && f < l - g || d > e + g && d > r + g && d > i + g && d > o + g || d < e - g && d < r - g && d < i - g && d < o - g) + return !1; + var v = rve(e, t, r, n, i, a, o, l, d, f, null); + return v <= g / 2; +} +function zve(e, t, r, n, i, a, o, l, u) { + if (o === 0) + return !1; + var d = o; + if (u > t + d && u > n + d && u > a + d || u < t - d && u < n - d && u < a - d || l > e + d && l > r + d && l > i + d || l < e - d && l < r - d && l < i - d) + return !1; + var f = ive(e, t, r, n, i, a, l, u, null); + return f <= d / 2; +} +var zne = Math.PI * 2; +function cd(e) { + return e %= zne, e < 0 && (e += zne), e; +} +var AA = Math.PI * 2; +function S3e(e, t, r, n, i, a, o, l, u) { + if (o === 0) + return !1; + var d = o; + l -= e, u -= t; + var f = Math.sqrt(l * l + u * u); + if (f - d > r || f + d < r) + return !1; + if (Math.abs(n - i) % AA < 1e-4) + return !0; + if (a) { + var g = n; + n = cd(i), i = cd(g); + } else + n = cd(n), i = cd(i); + n > i && (i += AA); + var v = Math.atan2(u, l); + return v < 0 && (v += AA), v >= n && v <= i || v + AA >= n && v + AA <= i; +} +function Am(e, t, r, n, i, a) { + if (a > t && a > n || a < t && a < n || n === t) + return 0; + var o = (a - t) / (n - t), l = n < t ? 1 : -1; + (o === 1 || o === 0) && (l = n < t ? 0.5 : -0.5); + var u = o * (r - e) + e; + return u === i ? 1 / 0 : u > i ? l : 0; +} +var O_ = sv.CMD, tb = Math.PI * 2, b3e = 1e-4; +function E3e(e, t) { + return Math.abs(e - t) < b3e; +} +var Iu = [-1, -1, -1], hf = [-1, -1]; +function C3e() { + var e = hf[0]; + hf[0] = hf[1], hf[1] = e; +} +function T3e(e, t, r, n, i, a, o, l, u, d) { + if (d > t && d > n && d > a && d > l || d < t && d < n && d < a && d < l) + return 0; + var f = vL(t, n, a, l, d, Iu); + if (f === 0) + return 0; + for (var g = 0, v = -1, y = void 0, C = void 0, A = 0; A < f; A++) { + var S = Iu[A], _ = S === 0 || S === 1 ? 0.5 : 1, E = Ml(e, r, i, o, S); + E < u || (v < 0 && (v = tve(t, n, a, l, hf), hf[1] < hf[0] && v > 1 && C3e(), y = Ml(t, n, a, l, hf[0]), v > 1 && (C = Ml(t, n, a, l, hf[1]))), v === 2 ? S < hf[0] ? g += y < t ? _ : -_ : S < hf[1] ? g += C < y ? _ : -_ : g += l < C ? _ : -_ : S < hf[0] ? g += y < t ? _ : -_ : g += l < y ? _ : -_); + } + return g; +} +function w3e(e, t, r, n, i, a, o, l) { + if (l > t && l > n && l > a || l < t && l < n && l < a) + return 0; + var u = DVe(t, n, a, l, Iu); + if (u === 0) + return 0; + var d = nve(t, n, a); + if (d >= 0 && d <= 1) { + for (var f = 0, g = Kl(t, n, a, d), v = 0; v < u; v++) { + var y = Iu[v] === 0 || Iu[v] === 1 ? 0.5 : 1, C = Kl(e, r, i, Iu[v]); + C < o || (Iu[v] < d ? f += g < t ? y : -y : f += a < g ? y : -y); + } + return f; + } else { + var y = Iu[0] === 0 || Iu[0] === 1 ? 0.5 : 1, C = Kl(e, r, i, Iu[0]); + return C < o ? 0 : a < t ? y : -y; + } +} +function I3e(e, t, r, n, i, a, o, l) { + if (l -= t, l > r || l < -r) + return 0; + var u = Math.sqrt(r * r - l * l); + Iu[0] = -u, Iu[1] = u; + var d = Math.abs(n - i); + if (d < 1e-4) + return 0; + if (d >= tb - 1e-4) { + n = 0, i = tb; + var f = a ? 1 : -1; + return o >= Iu[0] + e && o <= Iu[1] + e ? f : 0; + } + if (n > i) { + var g = n; + n = i, i = g; + } + n < 0 && (n += tb, i += tb); + for (var v = 0, y = 0; y < 2; y++) { + var C = Iu[y]; + if (C + e > o) { + var A = Math.atan2(l, C), f = a ? 1 : -1; + A < 0 && (A = tb + A), (A >= n && A <= i || A + tb >= n && A + tb <= i) && (A > Math.PI / 2 && A < Math.PI * 1.5 && (f = -f), v += f); + } + } + return v; +} +function Hve(e, t, r, n, i) { + for (var a = e.data, o = e.len(), l = 0, u = 0, d = 0, f = 0, g = 0, v, y, C = 0; C < o; ) { + var A = a[C++], S = C === 1; + switch (A === O_.M && C > 1 && (r || (l += Am(u, d, f, g, n, i))), S && (u = a[C], d = a[C + 1], f = u, g = d), A) { + case O_.M: + f = a[C++], g = a[C++], u = f, d = g; + break; + case O_.L: + if (r) { + if (H_(u, d, a[C], a[C + 1], t, n, i)) + return !0; + } else + l += Am(u, d, a[C], a[C + 1], n, i) || 0; + u = a[C++], d = a[C++]; + break; + case O_.C: + if (r) { + if (_3e(u, d, a[C++], a[C++], a[C++], a[C++], a[C], a[C + 1], t, n, i)) + return !0; + } else + l += T3e(u, d, a[C++], a[C++], a[C++], a[C++], a[C], a[C + 1], n, i) || 0; + u = a[C++], d = a[C++]; + break; + case O_.Q: + if (r) { + if (zve(u, d, a[C++], a[C++], a[C], a[C + 1], t, n, i)) + return !0; + } else + l += w3e(u, d, a[C++], a[C++], a[C], a[C + 1], n, i) || 0; + u = a[C++], d = a[C++]; + break; + case O_.A: + var _ = a[C++], E = a[C++], I = a[C++], w = a[C++], x = a[C++], b = a[C++]; + C += 1; + var R = !!(1 - a[C++]); + v = Math.cos(x) * I + _, y = Math.sin(x) * w + E, S ? (f = v, g = y) : l += Am(u, d, v, y, n, i); + var M = (n - _) * w / I + _; + if (r) { + if (S3e(_, E, w, x, x + b, R, t, M, i)) + return !0; + } else + l += I3e(_, E, w, x, x + b, R, M, i); + u = Math.cos(x + b) * I + _, d = Math.sin(x + b) * w + E; + break; + case O_.R: + f = u = a[C++], g = d = a[C++]; + var O = a[C++], P = a[C++]; + if (v = f + O, y = g + P, r) { + if (H_(f, g, v, g, t, n, i) || H_(v, g, v, y, t, n, i) || H_(v, y, f, y, t, n, i) || H_(f, y, f, g, t, n, i)) + return !0; + } else + l += Am(v, g, v, y, n, i), l += Am(f, y, f, g, n, i); + break; + case O_.Z: + if (r) { + if (H_(u, d, f, g, t, n, i)) + return !0; + } else + l += Am(u, d, f, g, n, i); + u = f, d = g; + break; + } + } + return !r && !E3e(d, g) && (l += Am(u, d, f, g, n, i) || 0), l !== 0; +} +function x3e(e, t, r) { + return Hve(e, 0, !1, t, r); +} +function A3e(e, t, r, n) { + return Hve(e, t, !0, r, n); +} +var EL = Jr({ + fill: "#000", + stroke: null, + strokePercent: 1, + fillOpacity: 1, + strokeOpacity: 1, + lineDashOffset: 0, + lineWidth: 1, + lineCap: "butt", + miterLimit: 10, + strokeNoScale: !1, + strokeFirst: !1 +}, Yb), R3e = { + style: Jr({ + fill: !0, + stroke: !0, + strokePercent: !0, + fillOpacity: !0, + strokeOpacity: !0, + lineDashOffset: !0, + lineWidth: !0, + miterLimit: !0 + }, CF.style) +}, qV = av.concat([ + "invisible", + "culling", + "z", + "z2", + "zlevel", + "parent" +]), D3e = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.update = function() { + var r = this; + e.prototype.update.call(this); + var n = this.style; + if (n.decal) { + var i = this._decalEl = this._decalEl || new t(); + i.buildPath === t.prototype.buildPath && (i.buildPath = function(u) { + r.buildPath(u, r.shape); + }), i.silent = !0; + var a = i.style; + for (var o in n) + a[o] !== n[o] && (a[o] = n[o]); + a.fill = n.fill ? n.decal : null, a.decal = null, a.shadowColor = null, n.strokeFirst && (a.stroke = null); + for (var l = 0; l < qV.length; ++l) + i[qV[l]] = this[qV[l]]; + i.__dirty |= od; + } else + this._decalEl && (this._decalEl = null); + }, t.prototype.getDecalElement = function() { + return this._decalEl; + }, t.prototype._init = function(r) { + var n = Ri(r); + this.shape = this.getDefaultShape(); + var i = this.getDefaultStyle(); + i && this.useStyle(i); + for (var a = 0; a < n.length; a++) { + var o = n[a], l = r[o]; + o === "style" ? this.style ? $t(this.style, l) : this.useStyle(l) : o === "shape" ? $t(this.shape, l) : e.prototype.attrKV.call(this, o, l); + } + this.style || this.useStyle({}); + }, t.prototype.getDefaultStyle = function() { + return null; + }, t.prototype.getDefaultShape = function() { + return {}; + }, t.prototype.canBeInsideText = function() { + return this.hasFill(); + }, t.prototype.getInsideTextFill = function() { + var r = this.style.fill; + if (r !== "none") { + if (wr(r)) { + var n = hR(r, 0); + return n > 0.5 ? jH : n > 0.2 ? dze : $H; + } else if (r) + return $H; + } + return jH; + }, t.prototype.getInsideTextStroke = function(r) { + var n = this.style.fill; + if (wr(n)) { + var i = this.__zr, a = !!(i && i.isDarkMode()), o = hR(r, 0) < UH; + if (a === o) + return n; + } + }, t.prototype.buildPath = function(r, n, i) { + }, t.prototype.pathUpdated = function() { + this.__dirty &= ~KT; + }, t.prototype.getUpdatedPathProxy = function(r) { + return !this.path && this.createPathProxy(), this.path.beginPath(), this.buildPath(this.path, this.shape, r), this.path; + }, t.prototype.createPathProxy = function() { + this.path = new sv(!1); + }, t.prototype.hasStroke = function() { + var r = this.style, n = r.stroke; + return !(n == null || n === "none" || !(r.lineWidth > 0)); + }, t.prototype.hasFill = function() { + var r = this.style, n = r.fill; + return n != null && n !== "none"; + }, t.prototype.getBoundingRect = function() { + var r = this._rect, n = this.style, i = !r; + if (i) { + var a = !1; + this.path || (a = !0, this.createPathProxy()); + var o = this.path; + (a || this.__dirty & KT) && (o.beginPath(), this.buildPath(o, this.shape, !1), this.pathUpdated()), r = o.getBoundingRect(); + } + if (this._rect = r, this.hasStroke() && this.path && this.path.len() > 0) { + var l = this._rectStroke || (this._rectStroke = r.clone()); + if (this.__dirty || i) { + l.copy(r); + var u = n.strokeNoScale ? this.getLineScale() : 1, d = n.lineWidth; + if (!this.hasFill()) { + var f = this.strokeContainThreshold; + d = Math.max(d, f == null ? 4 : f); + } + u > 1e-10 && (l.width += d / u, l.height += d / u, l.x -= d / u / 2, l.y -= d / u / 2); + } + return l; + } + return r; + }, t.prototype.contain = function(r, n) { + var i = this.transformCoordToLocal(r, n), a = this.getBoundingRect(), o = this.style; + if (r = i[0], n = i[1], a.contain(r, n)) { + var l = this.path; + if (this.hasStroke()) { + var u = o.lineWidth, d = o.strokeNoScale ? this.getLineScale() : 1; + if (d > 1e-10 && (this.hasFill() || (u = Math.max(u, this.strokeContainThreshold)), A3e(l, u / d, r, n))) + return !0; + } + if (this.hasFill()) + return x3e(l, r, n); + } + return !1; + }, t.prototype.dirtyShape = function() { + this.__dirty |= KT, this._rect && (this._rect = null), this._decalEl && this._decalEl.dirtyShape(), this.markRedraw(); + }, t.prototype.dirty = function() { + this.dirtyStyle(), this.dirtyShape(); + }, t.prototype.animateShape = function(r) { + return this.animate("shape", r); + }, t.prototype.updateDuringAnimation = function(r) { + r === "style" ? this.dirtyStyle() : r === "shape" ? this.dirtyShape() : this.markRedraw(); + }, t.prototype.attrKV = function(r, n) { + r === "shape" ? this.setShape(n) : e.prototype.attrKV.call(this, r, n); + }, t.prototype.setShape = function(r, n) { + var i = this.shape; + return i || (i = this.shape = {}), typeof r == "string" ? i[r] = n : $t(i, r), this.dirtyShape(), this; + }, t.prototype.shapeChanged = function() { + return !!(this.__dirty & KT); + }, t.prototype.createStyle = function(r) { + return hD(EL, r); + }, t.prototype._innerSaveToNormal = function(r) { + e.prototype._innerSaveToNormal.call(this, r); + var n = this._normalState; + r.shape && !n.shape && (n.shape = $t({}, this.shape)); + }, t.prototype._applyStateObj = function(r, n, i, a, o, l) { + e.prototype._applyStateObj.call(this, r, n, i, a, o, l); + var u = !(n && a), d; + if (n && n.shape ? o ? a ? d = n.shape : (d = $t({}, i.shape), $t(d, n.shape)) : (d = $t({}, a ? this.shape : i.shape), $t(d, n.shape)) : u && (d = i.shape), d) + if (o) { + this.shape = $t({}, this.shape); + for (var f = {}, g = Ri(d), v = 0; v < g.length; v++) { + var y = g[v]; + typeof d[y] == "object" ? this.shape[y] = d[y] : f[y] = d[y]; + } + this._transitionState(r, { + shape: f + }, l); + } else + this.shape = d, this.dirtyShape(); + }, t.prototype._mergeStates = function(r) { + for (var n = e.prototype._mergeStates.call(this, r), i, a = 0; a < r.length; a++) { + var o = r[a]; + o.shape && (i = i || {}, this._mergeStyle(i, o.shape)); + } + return i && (n.shape = i), n; + }, t.prototype.getAnimationStyleProps = function() { + return R3e; + }, t.prototype.isZeroArea = function() { + return !1; + }, t.extend = function(r) { + var n = function(a) { + No(o, a); + function o(l) { + var u = a.call(this, l) || this; + return r.init && r.init.call(u, l), u; + } + return o.prototype.getDefaultStyle = function() { + return cn(r.style); + }, o.prototype.getDefaultShape = function() { + return cn(r.shape); + }, o; + }(t); + for (var i in r) + typeof r[i] == "function" && (n.prototype[i] = r[i]); + return n; + }, t.initDefaultProps = function() { + var r = t.prototype; + r.type = "path", r.strokeContainThreshold = 5, r.segmentIgnoreThreshold = 0, r.subPixelOptimize = !1, r.autoBatch = !1, r.__dirty = od | l1 | KT; + }(), t; +}(Tf); +const Ei = D3e; +var O3e = Jr({ + strokeFirst: !0, + font: p0, + x: 0, + y: 0, + textAlign: "left", + textBaseline: "top", + miterLimit: 2 +}, EL), Wve = function(e) { + No(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.hasStroke = function() { + var r = this.style, n = r.stroke; + return n != null && n !== "none" && r.lineWidth > 0; + }, t.prototype.hasFill = function() { + var r = this.style, n = r.fill; + return n != null && n !== "none"; + }, t.prototype.createStyle = function(r) { + return hD(O3e, r); + }, t.prototype.setBoundingRect = function(r) { + this._rect = r; + }, t.prototype.getBoundingRect = function() { + var r = this.style; + if (!this._rect) { + var n = r.text; + n != null ? n += "" : n = ""; + var i = pD(n, r.font, r.textAlign, r.textBaseline); + if (i.x += r.x || 0, i.y += r.y || 0, this.hasStroke()) { + var a = r.lineWidth; + i.x -= a / 2, i.y -= a / 2, i.width += a, i.height += a; + } + this._rect = i; + } + return this._rect; + }, t.initDefaultProps = function() { + var r = t.prototype; + r.dirtyRectTolerance = 10; + }(), t; +}(Tf); +Wve.prototype.type = "tspan"; +const pR = Wve; +var M3e = Jr({ + x: 0, + y: 0 +}, Yb), k3e = { + style: Jr({ + x: !0, + y: !0, + width: !0, + height: !0, + sx: !0, + sy: !0, + sWidth: !0, + sHeight: !0 + }, CF.style) +}; +function P3e(e) { + return !!(e && typeof e != "string" && e.width && e.height); +} +var Gve = function(e) { + No(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.createStyle = function(r) { + return hD(M3e, r); + }, t.prototype._getSize = function(r) { + var n = this.style, i = n[r]; + if (i != null) + return i; + var a = P3e(n.image) ? n.image : this.__image; + if (!a) + return 0; + var o = r === "width" ? "height" : "width", l = n[o]; + return l == null ? a[r] : a[r] / a[o] * l; + }, t.prototype.getWidth = function() { + return this._getSize("width"); + }, t.prototype.getHeight = function() { + return this._getSize("height"); + }, t.prototype.getAnimationStyleProps = function() { + return k3e; + }, t.prototype.getBoundingRect = function() { + var r = this.style; + return this._rect || (this._rect = new ei(r.x || 0, r.y || 0, this.getWidth(), this.getHeight())), this._rect; + }, t; +}(Tf); +Gve.prototype.type = "image"; +const ec = Gve; +function N3e(e, t) { + var r = t.x, n = t.y, i = t.width, a = t.height, o = t.r, l, u, d, f; + i < 0 && (r = r + i, i = -i), a < 0 && (n = n + a, a = -a), typeof o == "number" ? l = u = d = f = o : o instanceof Array ? o.length === 1 ? l = u = d = f = o[0] : o.length === 2 ? (l = d = o[0], u = f = o[1]) : o.length === 3 ? (l = o[0], u = f = o[1], d = o[2]) : (l = o[0], u = o[1], d = o[2], f = o[3]) : l = u = d = f = 0; + var g; + l + u > i && (g = l + u, l *= i / g, u *= i / g), d + f > i && (g = d + f, d *= i / g, f *= i / g), u + d > a && (g = u + d, u *= a / g, d *= a / g), l + f > a && (g = l + f, l *= a / g, f *= a / g), e.moveTo(r + l, n), e.lineTo(r + i - u, n), u !== 0 && e.arc(r + i - u, n + u, u, -Math.PI / 2, 0), e.lineTo(r + i, n + a - d), d !== 0 && e.arc(r + i - d, n + a - d, d, 0, Math.PI / 2), e.lineTo(r + f, n + a), f !== 0 && e.arc(r + f, n + a - f, f, Math.PI / 2, Math.PI), e.lineTo(r, n + l), l !== 0 && e.arc(r + l, n + l, l, Math.PI, Math.PI * 1.5); +} +var lw = Math.round; +function Yve(e, t, r) { + if (t) { + var n = t.x1, i = t.x2, a = t.y1, o = t.y2; + e.x1 = n, e.x2 = i, e.y1 = a, e.y2 = o; + var l = r && r.lineWidth; + return l && (lw(n * 2) === lw(i * 2) && (e.x1 = e.x2 = Pb(n, l, !0)), lw(a * 2) === lw(o * 2) && (e.y1 = e.y2 = Pb(a, l, !0))), e; + } +} +function Xve(e, t, r) { + if (t) { + var n = t.x, i = t.y, a = t.width, o = t.height; + e.x = n, e.y = i, e.width = a, e.height = o; + var l = r && r.lineWidth; + return l && (e.x = Pb(n, l, !0), e.y = Pb(i, l, !0), e.width = Math.max(Pb(n + a, l, !1) - e.x, a === 0 ? 0 : 1), e.height = Math.max(Pb(i + o, l, !1) - e.y, o === 0 ? 0 : 1)), e; + } +} +function Pb(e, t, r) { + if (!t) + return e; + var n = lw(e * 2); + return (n + lw(t)) % 2 === 0 ? n / 2 : (n + (r ? 1 : -1)) / 2; +} +var L3e = function() { + function e() { + this.x = 0, this.y = 0, this.width = 0, this.height = 0; + } + return e; +}(), F3e = {}, Kve = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new L3e(); + }, t.prototype.buildPath = function(r, n) { + var i, a, o, l; + if (this.subPixelOptimize) { + var u = Xve(F3e, n, this.style); + i = u.x, a = u.y, o = u.width, l = u.height, u.r = n.r, n = u; + } else + i = n.x, a = n.y, o = n.width, l = n.height; + n.r ? N3e(r, n) : r.rect(i, a, o, l); + }, t.prototype.isZeroArea = function() { + return !this.shape.width || !this.shape.height; + }, t; +}(Ei); +Kve.prototype.type = "rect"; +const Xi = Kve; +var Hne = { + fill: "#000" +}, Wne = 2, B3e = { + style: Jr({ + fill: !0, + stroke: !0, + fillOpacity: !0, + strokeOpacity: !0, + lineWidth: !0, + fontSize: !0, + lineHeight: !0, + width: !0, + height: !0, + textShadowColor: !0, + textShadowBlur: !0, + textShadowOffsetX: !0, + textShadowOffsetY: !0, + backgroundColor: !0, + padding: !0, + borderColor: !0, + borderWidth: !0, + borderRadius: !0 + }, CF.style) +}, Zve = function(e) { + No(t, e); + function t(r) { + var n = e.call(this) || this; + return n.type = "text", n._children = [], n._defaultStyle = Hne, n.attr(r), n; + } + return t.prototype.childrenRef = function() { + return this._children; + }, t.prototype.update = function() { + e.prototype.update.call(this), this.styleChanged() && this._updateSubTexts(); + for (var r = 0; r < this._children.length; r++) { + var n = this._children[r]; + n.zlevel = this.zlevel, n.z = this.z, n.z2 = this.z2, n.culling = this.culling, n.cursor = this.cursor, n.invisible = this.invisible; + } + }, t.prototype.updateTransform = function() { + var r = this.innerTransformable; + r ? (r.updateTransform(), r.transform && (this.transform = r.transform)) : e.prototype.updateTransform.call(this); + }, t.prototype.getLocalTransform = function(r) { + var n = this.innerTransformable; + return n ? n.getLocalTransform(r) : e.prototype.getLocalTransform.call(this, r); + }, t.prototype.getComputedTransform = function() { + return this.__hostTarget && (this.__hostTarget.getComputedTransform(), this.__hostTarget.updateInnerText(!0)), e.prototype.getComputedTransform.call(this); + }, t.prototype._updateSubTexts = function() { + this._childCursor = 0, $3e(this.style), this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(), this._children.length = this._childCursor, this.styleUpdated(); + }, t.prototype.addSelfToZr = function(r) { + e.prototype.addSelfToZr.call(this, r); + for (var n = 0; n < this._children.length; n++) + this._children[n].__zr = r; + }, t.prototype.removeSelfFromZr = function(r) { + e.prototype.removeSelfFromZr.call(this, r); + for (var n = 0; n < this._children.length; n++) + this._children[n].__zr = null; + }, t.prototype.getBoundingRect = function() { + if (this.styleChanged() && this._updateSubTexts(), !this._rect) { + for (var r = new ei(0, 0, 0, 0), n = this._children, i = [], a = null, o = 0; o < n.length; o++) { + var l = n[o], u = l.getBoundingRect(), d = l.getLocalTransform(i); + d ? (r.copy(u), r.applyTransform(d), a = a || r.clone(), a.union(r)) : (a = a || u.clone(), a.union(u)); + } + this._rect = a || r; + } + return this._rect; + }, t.prototype.setDefaultTextStyle = function(r) { + this._defaultStyle = r || Hne; + }, t.prototype.setTextContent = function(r) { + }, t.prototype._mergeStyle = function(r, n) { + if (!n) + return r; + var i = n.rich, a = r.rich || i && {}; + return $t(r, n), i && a ? (this._mergeRich(a, i), r.rich = a) : a && (r.rich = a), r; + }, t.prototype._mergeRich = function(r, n) { + for (var i = Ri(n), a = 0; a < i.length; a++) { + var o = i[a]; + r[o] = r[o] || {}, $t(r[o], n[o]); + } + }, t.prototype.getAnimationStyleProps = function() { + return B3e; + }, t.prototype._getOrCreateChild = function(r) { + var n = this._children[this._childCursor]; + return (!n || !(n instanceof r)) && (n = new r()), this._children[this._childCursor++] = n, n.__zr = this.__zr, n.parent = this, n; + }, t.prototype._updatePlainTexts = function() { + var r = this.style, n = r.font || p0, i = r.padding, a = Jne(r), o = a3e(a, r), l = JV(r), u = !!r.backgroundColor, d = o.outerHeight, f = o.outerWidth, g = o.contentWidth, v = o.lines, y = o.lineHeight, C = this._defaultStyle, A = r.x || 0, S = r.y || 0, _ = r.align || C.align || "left", E = r.verticalAlign || C.verticalAlign || "top", I = A, w = ZT(S, o.contentHeight, E); + if (l || i) { + var x = u1(A, f, _), b = ZT(S, d, E); + l && this._renderBackground(r, r, x, b, f, d); + } + w += y / 2, i && (I = qne(A, _, i), E === "top" ? w += i[0] : E === "bottom" && (w -= i[2])); + for (var R = 0, M = !1, O = Zne("fill" in r ? r.fill : (M = !0, C.fill)), P = Kne("stroke" in r ? r.stroke : !u && (!C.autoStroke || M) ? (R = Wne, C.stroke) : null), B = r.textShadowBlur > 0, H = r.width != null && (r.overflow === "truncate" || r.overflow === "break" || r.overflow === "breakAll"), Y = o.calculatedLineHeight, X = 0; X < v.length; X++) { + var ee = this._getOrCreateChild(pR), ae = ee.createStyle(); + ee.useStyle(ae), ae.text = v[X], ae.x = I, ae.y = w, _ && (ae.textAlign = _), ae.textBaseline = "middle", ae.opacity = r.opacity, ae.strokeFirst = !0, B && (ae.shadowBlur = r.textShadowBlur || 0, ae.shadowColor = r.textShadowColor || "transparent", ae.shadowOffsetX = r.textShadowOffsetX || 0, ae.shadowOffsetY = r.textShadowOffsetY || 0), ae.stroke = P, ae.fill = O, P && (ae.lineWidth = r.lineWidth || R, ae.lineDash = r.lineDash, ae.lineDashOffset = r.lineDashOffset || 0), ae.font = n, Yne(ae, r), w += y, H && ee.setBoundingRect(new ei(u1(ae.x, r.width, ae.textAlign), ZT(ae.y, Y, ae.textBaseline), g, Y)); + } + }, t.prototype._updateRichTexts = function() { + var r = this.style, n = Jne(r), i = l3e(n, r), a = i.width, o = i.outerWidth, l = i.outerHeight, u = r.padding, d = r.x || 0, f = r.y || 0, g = this._defaultStyle, v = r.align || g.align, y = r.verticalAlign || g.verticalAlign, C = u1(d, o, v), A = ZT(f, l, y), S = C, _ = A; + u && (S += u[3], _ += u[0]); + var E = S + a; + JV(r) && this._renderBackground(r, r, C, A, o, l); + for (var I = !!r.backgroundColor, w = 0; w < i.lines.length; w++) { + for (var x = i.lines[w], b = x.tokens, R = b.length, M = x.lineHeight, O = x.width, P = 0, B = S, H = E, Y = R - 1, X = void 0; P < R && (X = b[P], !X.align || X.align === "left"); ) + this._placeToken(X, r, M, _, B, "left", I), O -= X.width, B += X.width, P++; + for (; Y >= 0 && (X = b[Y], X.align === "right"); ) + this._placeToken(X, r, M, _, H, "right", I), O -= X.width, H -= X.width, Y--; + for (B += (a - (B - S) - (E - H) - O) / 2; P <= Y; ) + X = b[P], this._placeToken(X, r, M, _, B + X.width / 2, "center", I), B += X.width, P++; + _ += M; + } + }, t.prototype._placeToken = function(r, n, i, a, o, l, u) { + var d = n.rich[r.styleName] || {}; + d.text = r.text; + var f = r.verticalAlign, g = a + i / 2; + f === "top" ? g = a + r.height / 2 : f === "bottom" && (g = a + i - r.height / 2); + var v = !r.isLineHolder && JV(d); + v && this._renderBackground(d, n, l === "right" ? o - r.width : l === "center" ? o - r.width / 2 : o, g - r.height / 2, r.width, r.height); + var y = !!d.backgroundColor, C = r.textPadding; + C && (o = qne(o, l, C), g -= r.height / 2 - C[0] - r.innerHeight / 2); + var A = this._getOrCreateChild(pR), S = A.createStyle(); + A.useStyle(S); + var _ = this._defaultStyle, E = !1, I = 0, w = Zne("fill" in d ? d.fill : "fill" in n ? n.fill : (E = !0, _.fill)), x = Kne("stroke" in d ? d.stroke : "stroke" in n ? n.stroke : !y && !u && (!_.autoStroke || E) ? (I = Wne, _.stroke) : null), b = d.textShadowBlur > 0 || n.textShadowBlur > 0; + S.text = r.text, S.x = o, S.y = g, b && (S.shadowBlur = d.textShadowBlur || n.textShadowBlur || 0, S.shadowColor = d.textShadowColor || n.textShadowColor || "transparent", S.shadowOffsetX = d.textShadowOffsetX || n.textShadowOffsetX || 0, S.shadowOffsetY = d.textShadowOffsetY || n.textShadowOffsetY || 0), S.textAlign = l, S.textBaseline = "middle", S.font = r.font || p0, S.opacity = Ap(d.opacity, n.opacity, 1), Yne(S, d), x && (S.lineWidth = Ap(d.lineWidth, n.lineWidth, I), S.lineDash = Fn(d.lineDash, n.lineDash), S.lineDashOffset = n.lineDashOffset || 0, S.stroke = x), w && (S.fill = w); + var R = r.contentWidth, M = r.contentHeight; + A.setBoundingRect(new ei(u1(S.x, R, S.textAlign), ZT(S.y, M, S.textBaseline), R, M)); + }, t.prototype._renderBackground = function(r, n, i, a, o, l) { + var u = r.backgroundColor, d = r.borderWidth, f = r.borderColor, g = u && u.image, v = u && !g, y = r.borderRadius, C = this, A, S; + if (v || r.lineHeight || d && f) { + A = this._getOrCreateChild(Xi), A.useStyle(A.createStyle()), A.style.fill = null; + var _ = A.shape; + _.x = i, _.y = a, _.width = o, _.height = l, _.r = y, A.dirtyShape(); + } + if (v) { + var E = A.style; + E.fill = u || null, E.fillOpacity = Fn(r.fillOpacity, 1); + } else if (g) { + S = this._getOrCreateChild(ec), S.onload = function() { + C.dirtyStyle(); + }; + var I = S.style; + I.image = u.image, I.x = i, I.y = a, I.width = o, I.height = l; + } + if (d && f) { + var E = A.style; + E.lineWidth = d, E.stroke = f, E.strokeOpacity = Fn(r.strokeOpacity, 1), E.lineDash = r.borderDash, E.lineDashOffset = r.borderDashOffset || 0, A.strokeContainThreshold = 0, A.hasFill() && A.hasStroke() && (E.strokeFirst = !0, E.lineWidth *= 2); + } + var w = (A || S).style; + w.shadowBlur = r.shadowBlur || 0, w.shadowColor = r.shadowColor || "transparent", w.shadowOffsetX = r.shadowOffsetX || 0, w.shadowOffsetY = r.shadowOffsetY || 0, w.opacity = Ap(r.opacity, n.opacity, 1); + }, t.makeFont = function(r) { + var n = ""; + return Jve(r) && (n = [ + r.fontStyle, + r.fontWeight, + qve(r.fontSize), + r.fontFamily || "sans-serif" + ].join(" ")), n && yf(n) || r.textFont || r.font; + }, t; +}(Tf), U3e = { left: !0, right: 1, center: 1 }, j3e = { top: 1, bottom: 1, middle: 1 }, Gne = ["fontStyle", "fontWeight", "fontSize", "fontFamily"]; +function qve(e) { + return typeof e == "string" && (e.indexOf("px") !== -1 || e.indexOf("rem") !== -1 || e.indexOf("em") !== -1) ? e : isNaN(+e) ? e8 + "px" : e + "px"; +} +function Yne(e, t) { + for (var r = 0; r < Gne.length; r++) { + var n = Gne[r], i = t[n]; + i != null && (e[n] = i); + } +} +function Jve(e) { + return e.fontSize != null || e.fontFamily || e.fontWeight; +} +function $3e(e) { + return Xne(e), Ee(e.rich, Xne), e; +} +function Xne(e) { + if (e) { + e.font = Zve.makeFont(e); + var t = e.align; + t === "middle" && (t = "center"), e.align = t == null || U3e[t] ? t : "left"; + var r = e.verticalAlign; + r === "center" && (r = "middle"), e.verticalAlign = r == null || j3e[r] ? r : "top"; + var n = e.padding; + n && (e.padding = gF(e.padding)); + } +} +function Kne(e, t) { + return e == null || t <= 0 || e === "transparent" || e === "none" ? null : e.image || e.colorStops ? "#000" : e; +} +function Zne(e) { + return e == null || e === "none" ? null : e.image || e.colorStops ? "#000" : e; +} +function qne(e, t, r) { + return t === "right" ? e - r[1] : t === "center" ? e + r[3] / 2 - r[1] / 2 : e + r[3]; +} +function Jne(e) { + var t = e.text; + return t != null && (t += ""), t; +} +function JV(e) { + return !!(e.backgroundColor || e.lineHeight || e.borderWidth && e.borderColor); +} +const Hi = Zve; +var Tn = ea(), ZH = function(e, t, r, n) { + if (n) { + var i = Tn(n); + i.dataIndex = r, i.dataType = t, i.seriesIndex = e, i.ssrType = "chart", n.type === "group" && n.traverse(function(a) { + var o = Tn(a); + o.seriesIndex = e, o.dataIndex = r, o.dataType = t, o.ssrType = "chart"; + }); + } +}, Qne = 1, eie = {}, Qve = ea(), C8 = ea(), T8 = 0, vD = 1, wF = 2, Lu = ["emphasis", "blur", "select"], gR = ["normal", "emphasis", "blur", "select"], dI = 10, V3e = 9, Xb = "highlight", wN = "downplay", O1 = "select", IN = "unselect", M1 = "toggleSelect"; +function CT(e) { + return e != null && e !== "none"; +} +function IF(e, t, r) { + e.onHoverStateChange && (e.hoverState || 0) !== r && e.onHoverStateChange(t), e.hoverState = r; +} +function eme(e) { + IF(e, "emphasis", wF); +} +function tme(e) { + e.hoverState === wF && IF(e, "normal", T8); +} +function w8(e) { + IF(e, "blur", vD); +} +function rme(e) { + e.hoverState === vD && IF(e, "normal", T8); +} +function z3e(e) { + e.selected = !0; +} +function H3e(e) { + e.selected = !1; +} +function tie(e, t, r) { + t(e, r); +} +function ry(e, t, r) { + tie(e, t, r), e.isGroup && e.traverse(function(n) { + tie(n, t, r); + }); +} +function CL(e, t) { + switch (t) { + case "emphasis": + e.hoverState = wF; + break; + case "normal": + e.hoverState = T8; + break; + case "blur": + e.hoverState = vD; + break; + case "select": + e.selected = !0; + } +} +function W3e(e, t, r, n) { + for (var i = e.style, a = {}, o = 0; o < t.length; o++) { + var l = t[o], u = i[l]; + a[l] = u == null ? n && n[l] : u; + } + for (var o = 0; o < e.animators.length; o++) { + var d = e.animators[o]; + d.__fromStateTransition && d.__fromStateTransition.indexOf(r) < 0 && d.targetName === "style" && d.saveTo(a, t); + } + return a; +} +function G3e(e, t, r, n) { + var i = r && di(r, "select") >= 0, a = !1; + if (e instanceof Ei) { + var o = Qve(e), l = i && o.selectFill || o.normalFill, u = i && o.selectStroke || o.normalStroke; + if (CT(l) || CT(u)) { + n = n || {}; + var d = n.style || {}; + d.fill === "inherit" ? (a = !0, n = $t({}, n), d = $t({}, d), d.fill = l) : !CT(d.fill) && CT(l) ? (a = !0, n = $t({}, n), d = $t({}, d), d.fill = yL(l)) : !CT(d.stroke) && CT(u) && (a || (n = $t({}, n), d = $t({}, d)), d.stroke = yL(u)), n.style = d; + } + } + if (n && n.z2 == null) { + a || (n = $t({}, n)); + var f = e.z2EmphasisLift; + n.z2 = e.z2 + (f != null ? f : dI); + } + return n; +} +function Y3e(e, t, r) { + if (r && r.z2 == null) { + r = $t({}, r); + var n = e.z2SelectLift; + r.z2 = e.z2 + (n != null ? n : V3e); + } + return r; +} +function X3e(e, t, r) { + var n = di(e.currentStates, t) >= 0, i = e.style.opacity, a = n ? null : W3e(e, ["opacity"], t, { + opacity: 1 + }); + r = r || {}; + var o = r.style || {}; + return o.opacity == null && (r = $t({}, r), o = $t({ + // Already being applied 'emphasis'. DON'T mul opacity multiple times. + opacity: n ? i : a.opacity * 0.1 + }, o), r.style = o), r; +} +function QV(e, t) { + var r = this.states[e]; + if (this.style) { + if (e === "emphasis") + return G3e(this, e, t, r); + if (e === "blur") + return X3e(this, e, r); + if (e === "select") + return Y3e(this, e, r); + } + return r; +} +function fE(e) { + e.stateProxy = QV; + var t = e.getTextContent(), r = e.getTextGuideLine(); + t && (t.stateProxy = QV), r && (r.stateProxy = QV); +} +function rie(e, t) { + !ome(e, t) && !e.__highByOuter && ry(e, eme); +} +function nie(e, t) { + !ome(e, t) && !e.__highByOuter && ry(e, tme); +} +function Hm(e, t) { + e.__highByOuter |= 1 << (t || 0), ry(e, eme); +} +function Wm(e, t) { + !(e.__highByOuter &= ~(1 << (t || 0))) && ry(e, tme); +} +function nme(e) { + ry(e, w8); +} +function I8(e) { + ry(e, rme); +} +function ime(e) { + ry(e, z3e); +} +function ame(e) { + ry(e, H3e); +} +function ome(e, t) { + return e.__highDownSilentOnTouch && t.zrByTouch; +} +function sme(e) { + var t = e.getModel(), r = [], n = []; + t.eachComponent(function(i, a) { + var o = C8(a), l = i === "series", u = l ? e.getViewOfSeriesModel(a) : e.getViewOfComponentModel(a); + !l && n.push(u), o.isBlured && (u.group.traverse(function(d) { + rme(d); + }), l && r.push(a)), o.isBlured = !1; + }), Ee(n, function(i) { + i && i.toggleBlurSeries && i.toggleBlurSeries(r, !1, t); + }); +} +function qH(e, t, r, n) { + var i = n.getModel(); + r = r || "coordinateSystem"; + function a(d, f) { + for (var g = 0; g < f.length; g++) { + var v = d.getItemGraphicEl(f[g]); + v && I8(v); + } + } + if (e != null && !(!t || t === "none")) { + var o = i.getSeriesByIndex(e), l = o.coordinateSystem; + l && l.master && (l = l.master); + var u = []; + i.eachSeries(function(d) { + var f = o === d, g = d.coordinateSystem; + g && g.master && (g = g.master); + var v = g && l ? g === l : f; + if (!// Not blur other series if blurScope series + (r === "series" && !f || r === "coordinateSystem" && !v || t === "series" && f)) { + var y = n.getViewOfSeriesModel(d); + if (y.group.traverse(function(S) { + S.__highByOuter && f && t === "self" || w8(S); + }), Sc(t)) + a(d.getData(), t); + else if (sn(t)) + for (var C = Ri(t), A = 0; A < C.length; A++) + a(d.getData(C[A]), t[C[A]]); + u.push(d), C8(d).isBlured = !0; + } + }), i.eachComponent(function(d, f) { + if (d !== "series") { + var g = n.getViewOfComponentModel(f); + g && g.toggleBlurSeries && g.toggleBlurSeries(u, !0, i); + } + }); + } +} +function JH(e, t, r) { + if (!(e == null || t == null)) { + var n = r.getModel().getComponent(e, t); + if (n) { + C8(n).isBlured = !0; + var i = r.getViewOfComponentModel(n); + !i || !i.focusBlurEnabled || i.group.traverse(function(a) { + w8(a); + }); + } + } +} +function K3e(e, t, r) { + var n = e.seriesIndex, i = e.getData(t.dataType); + if (i) { + var a = hE(i, t); + a = (qt(a) ? a[0] : a) || 0; + var o = i.getItemGraphicEl(a); + if (!o) + for (var l = i.count(), u = 0; !o && u < l; ) + o = i.getItemGraphicEl(u++); + if (o) { + var d = Tn(o); + qH(n, d.focus, d.blurScope, r); + } else { + var f = e.get(["emphasis", "focus"]), g = e.get(["emphasis", "blurScope"]); + f != null && qH(n, f, g, r); + } + } +} +function x8(e, t, r, n) { + var i = { + focusSelf: !1, + dispatchers: null + }; + if (e == null || e === "series" || t == null || r == null) + return i; + var a = n.getModel().getComponent(e, t); + if (!a) + return i; + var o = n.getViewOfComponentModel(a); + if (!o || !o.findHighDownDispatchers) + return i; + for (var l = o.findHighDownDispatchers(r), u, d = 0; d < l.length; d++) + if (Tn(l[d]).focus === "self") { + u = !0; + break; + } + return { + focusSelf: u, + dispatchers: l + }; +} +function Z3e(e, t, r) { + var n = Tn(e), i = x8(n.componentMainType, n.componentIndex, n.componentHighDownName, r), a = i.dispatchers, o = i.focusSelf; + a ? (o && JH(n.componentMainType, n.componentIndex, r), Ee(a, function(l) { + return rie(l, t); + })) : (qH(n.seriesIndex, n.focus, n.blurScope, r), n.focus === "self" && JH(n.componentMainType, n.componentIndex, r), rie(e, t)); +} +function q3e(e, t, r) { + sme(r); + var n = Tn(e), i = x8(n.componentMainType, n.componentIndex, n.componentHighDownName, r).dispatchers; + i ? Ee(i, function(a) { + return nie(a, t); + }) : nie(e, t); +} +function J3e(e, t, r) { + if (eW(t)) { + var n = t.dataType, i = e.getData(n), a = hE(i, t); + qt(a) || (a = [a]), e[t.type === M1 ? "toggleSelect" : t.type === O1 ? "select" : "unselect"](a, n); + } +} +function iie(e) { + var t = e.getAllData(); + Ee(t, function(r) { + var n = r.data, i = r.type; + n.eachItemGraphicEl(function(a, o) { + e.isSelected(o, i) ? ime(a) : ame(a); + }); + }); +} +function Q3e(e) { + var t = []; + return e.eachSeries(function(r) { + var n = r.getAllData(); + Ee(n, function(i) { + i.data; + var a = i.type, o = r.getSelectedDataIndices(); + if (o.length > 0) { + var l = { + dataIndex: o, + seriesIndex: r.seriesIndex + }; + a != null && (l.dataType = a), t.push(l); + } + }); + }), t; +} +function Lm(e, t, r) { + Nb(e, !0), ry(e, fE), QH(e, t, r); +} +function e4e(e) { + Nb(e, !1); +} +function xs(e, t, r, n) { + n ? e4e(e) : Lm(e, t, r); +} +function QH(e, t, r) { + var n = Tn(e); + t != null ? (n.focus = t, n.blurScope = r) : n.focus && (n.focus = null); +} +var aie = ["emphasis", "blur", "select"], t4e = { + itemStyle: "getItemStyle", + lineStyle: "getLineStyle", + areaStyle: "getAreaStyle" +}; +function bc(e, t, r, n) { + r = r || "itemStyle"; + for (var i = 0; i < aie.length; i++) { + var a = aie[i], o = t.getModel([a, r]), l = e.ensureState(a); + l.style = n ? n(o) : o[t4e[r]](); + } +} +function Nb(e, t) { + var r = t === !1, n = e; + e.highDownSilentOnTouch && (n.__highDownSilentOnTouch = e.highDownSilentOnTouch), (!r || n.__highDownDispatcher) && (n.__highByOuter = n.__highByOuter || 0, n.__highDownDispatcher = !r); +} +function vR(e) { + return !!(e && e.__highDownDispatcher); +} +function r4e(e, t, r) { + var n = Tn(e); + n.componentMainType = t.mainType, n.componentIndex = t.componentIndex, n.componentHighDownName = r; +} +function n4e(e) { + var t = eie[e]; + return t == null && Qne <= 32 && (t = eie[e] = Qne++), t; +} +function eW(e) { + var t = e.type; + return t === O1 || t === IN || t === M1; +} +function oie(e) { + var t = e.type; + return t === Xb || t === wN; +} +function i4e(e) { + var t = Qve(e); + t.normalFill = e.style.fill, t.normalStroke = e.style.stroke; + var r = e.states.select || {}; + t.selectFill = r.style && r.style.fill || null, t.selectStroke = r.style && r.style.stroke || null; +} +var TT = sv.CMD, a4e = [[], [], []], sie = Math.sqrt, o4e = Math.atan2; +function lme(e, t) { + if (t) { + var r = e.data, n = e.len(), i, a, o, l, u, d, f = TT.M, g = TT.C, v = TT.L, y = TT.R, C = TT.A, A = TT.Q; + for (o = 0, l = 0; o < n; ) { + switch (i = r[o++], l = o, a = 0, i) { + case f: + a = 1; + break; + case v: + a = 1; + break; + case g: + a = 3; + break; + case A: + a = 2; + break; + case C: + var S = t[4], _ = t[5], E = sie(t[0] * t[0] + t[1] * t[1]), I = sie(t[2] * t[2] + t[3] * t[3]), w = o4e(-t[1] / I, t[0] / E); + r[o] *= E, r[o++] += S, r[o] *= I, r[o++] += _, r[o++] *= E, r[o++] *= I, r[o++] += w, r[o++] += w, o += 2, l = o; + break; + case y: + d[0] = r[o++], d[1] = r[o++], Jl(d, d, t), r[l++] = d[0], r[l++] = d[1], d[0] += r[o++], d[1] += r[o++], Jl(d, d, t), r[l++] = d[0], r[l++] = d[1]; + } + for (u = 0; u < a; u++) { + var x = a4e[u]; + x[0] = r[o++], x[1] = r[o++], Jl(x, x, t), r[l++] = x[0], r[l++] = x[1]; + } + } + e.increaseVersion(); + } +} +var ez = Math.sqrt, Wk = Math.sin, Gk = Math.cos, RA = Math.PI; +function lie(e) { + return Math.sqrt(e[0] * e[0] + e[1] * e[1]); +} +function tW(e, t) { + return (e[0] * t[0] + e[1] * t[1]) / (lie(e) * lie(t)); +} +function cie(e, t) { + return (e[0] * t[1] < e[1] * t[0] ? -1 : 1) * Math.acos(tW(e, t)); +} +function uie(e, t, r, n, i, a, o, l, u, d, f) { + var g = u * (RA / 180), v = Gk(g) * (e - r) / 2 + Wk(g) * (t - n) / 2, y = -1 * Wk(g) * (e - r) / 2 + Gk(g) * (t - n) / 2, C = v * v / (o * o) + y * y / (l * l); + C > 1 && (o *= ez(C), l *= ez(C)); + var A = (i === a ? -1 : 1) * ez((o * o * (l * l) - o * o * (y * y) - l * l * (v * v)) / (o * o * (y * y) + l * l * (v * v))) || 0, S = A * o * y / l, _ = A * -l * v / o, E = (e + r) / 2 + Gk(g) * S - Wk(g) * _, I = (t + n) / 2 + Wk(g) * S + Gk(g) * _, w = cie([1, 0], [(v - S) / o, (y - _) / l]), x = [(v - S) / o, (y - _) / l], b = [(-1 * v - S) / o, (-1 * y - _) / l], R = cie(x, b); + if (tW(x, b) <= -1 && (R = RA), tW(x, b) >= 1 && (R = 0), R < 0) { + var M = Math.round(R / RA * 1e6) / 1e6; + R = RA * 2 + M % 2 * RA; + } + f.addData(d, E, I, o, l, w, R, g, a); +} +var s4e = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig, l4e = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; +function c4e(e) { + var t = new sv(); + if (!e) + return t; + var r = 0, n = 0, i = r, a = n, o, l = sv.CMD, u = e.match(s4e); + if (!u) + return t; + for (var d = 0; d < u.length; d++) { + for (var f = u[d], g = f.charAt(0), v = void 0, y = f.match(l4e) || [], C = y.length, A = 0; A < C; A++) + y[A] = parseFloat(y[A]); + for (var S = 0; S < C; ) { + var _ = void 0, E = void 0, I = void 0, w = void 0, x = void 0, b = void 0, R = void 0, M = r, O = n, P = void 0, B = void 0; + switch (g) { + case "l": + r += y[S++], n += y[S++], v = l.L, t.addData(v, r, n); + break; + case "L": + r = y[S++], n = y[S++], v = l.L, t.addData(v, r, n); + break; + case "m": + r += y[S++], n += y[S++], v = l.M, t.addData(v, r, n), i = r, a = n, g = "l"; + break; + case "M": + r = y[S++], n = y[S++], v = l.M, t.addData(v, r, n), i = r, a = n, g = "L"; + break; + case "h": + r += y[S++], v = l.L, t.addData(v, r, n); + break; + case "H": + r = y[S++], v = l.L, t.addData(v, r, n); + break; + case "v": + n += y[S++], v = l.L, t.addData(v, r, n); + break; + case "V": + n = y[S++], v = l.L, t.addData(v, r, n); + break; + case "C": + v = l.C, t.addData(v, y[S++], y[S++], y[S++], y[S++], y[S++], y[S++]), r = y[S - 2], n = y[S - 1]; + break; + case "c": + v = l.C, t.addData(v, y[S++] + r, y[S++] + n, y[S++] + r, y[S++] + n, y[S++] + r, y[S++] + n), r += y[S - 2], n += y[S - 1]; + break; + case "S": + _ = r, E = n, P = t.len(), B = t.data, o === l.C && (_ += r - B[P - 4], E += n - B[P - 3]), v = l.C, M = y[S++], O = y[S++], r = y[S++], n = y[S++], t.addData(v, _, E, M, O, r, n); + break; + case "s": + _ = r, E = n, P = t.len(), B = t.data, o === l.C && (_ += r - B[P - 4], E += n - B[P - 3]), v = l.C, M = r + y[S++], O = n + y[S++], r += y[S++], n += y[S++], t.addData(v, _, E, M, O, r, n); + break; + case "Q": + M = y[S++], O = y[S++], r = y[S++], n = y[S++], v = l.Q, t.addData(v, M, O, r, n); + break; + case "q": + M = y[S++] + r, O = y[S++] + n, r += y[S++], n += y[S++], v = l.Q, t.addData(v, M, O, r, n); + break; + case "T": + _ = r, E = n, P = t.len(), B = t.data, o === l.Q && (_ += r - B[P - 4], E += n - B[P - 3]), r = y[S++], n = y[S++], v = l.Q, t.addData(v, _, E, r, n); + break; + case "t": + _ = r, E = n, P = t.len(), B = t.data, o === l.Q && (_ += r - B[P - 4], E += n - B[P - 3]), r += y[S++], n += y[S++], v = l.Q, t.addData(v, _, E, r, n); + break; + case "A": + I = y[S++], w = y[S++], x = y[S++], b = y[S++], R = y[S++], M = r, O = n, r = y[S++], n = y[S++], v = l.A, uie(M, O, r, n, b, R, I, w, x, v, t); + break; + case "a": + I = y[S++], w = y[S++], x = y[S++], b = y[S++], R = y[S++], M = r, O = n, r += y[S++], n += y[S++], v = l.A, uie(M, O, r, n, b, R, I, w, x, v, t); + break; + } + } + (g === "z" || g === "Z") && (v = l.Z, t.addData(v), r = i, n = a), o = v; + } + return t.toStatic(), t; +} +var cme = function(e) { + No(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.applyTransform = function(r) { + }, t; +}(Ei); +function ume(e) { + return e.setData != null; +} +function hme(e, t) { + var r = c4e(e), n = $t({}, t); + return n.buildPath = function(i) { + if (ume(i)) { + i.setData(r.data); + var a = i.getContext(); + a && i.rebuildPath(a, 1); + } else { + var a = i; + r.rebuildPath(a, 1); + } + }, n.applyTransform = function(i) { + lme(r, i), this.dirtyShape(); + }, n; +} +function dme(e, t) { + return new cme(hme(e, t)); +} +function u4e(e, t) { + var r = hme(e, t), n = function(i) { + No(a, i); + function a(o) { + var l = i.call(this, o) || this; + return l.applyTransform = r.applyTransform, l.buildPath = r.buildPath, l; + } + return a; + }(cme); + return n; +} +function h4e(e, t) { + for (var r = [], n = e.length, i = 0; i < n; i++) { + var a = e[i]; + r.push(a.getUpdatedPathProxy(!0)); + } + var o = new Ei(t); + return o.createPathProxy(), o.buildPath = function(l) { + if (ume(l)) { + l.appendPath(r); + var u = l.getContext(); + u && l.rebuildPath(u, 1); + } + }, o; +} +function A8(e, t) { + t = t || {}; + var r = new Ei(); + return e.shape && r.setShape(e.shape), r.setStyle(e.style), t.bakeTransform ? lme(r.path, e.getComputedTransform()) : t.toLocal ? r.setLocalTransform(e.getComputedTransform()) : r.copyTransform(e), r.buildPath = e.buildPath, r.applyTransform = r.applyTransform, r.z = e.z, r.z2 = e.z2, r.zlevel = e.zlevel, r; +} +var d4e = function() { + function e() { + this.cx = 0, this.cy = 0, this.r = 0; + } + return e; +}(), fme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new d4e(); + }, t.prototype.buildPath = function(r, n) { + r.moveTo(n.cx + n.r, n.cy), r.arc(n.cx, n.cy, n.r, 0, Math.PI * 2); + }, t; +}(Ei); +fme.prototype.type = "circle"; +const ny = fme; +var f4e = function() { + function e() { + this.cx = 0, this.cy = 0, this.rx = 0, this.ry = 0; + } + return e; +}(), pme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new f4e(); + }, t.prototype.buildPath = function(r, n) { + var i = 0.5522848, a = n.cx, o = n.cy, l = n.rx, u = n.ry, d = l * i, f = u * i; + r.moveTo(a - l, o), r.bezierCurveTo(a - l, o - f, a - d, o - u, a, o - u), r.bezierCurveTo(a + d, o - u, a + l, o - f, a + l, o), r.bezierCurveTo(a + l, o + f, a + d, o + u, a, o + u), r.bezierCurveTo(a - d, o + u, a - l, o + f, a - l, o), r.closePath(); + }, t; +}(Ei); +pme.prototype.type = "ellipse"; +const xF = pme; +var gme = Math.PI, tz = gme * 2, rb = Math.sin, wT = Math.cos, p4e = Math.acos, Vc = Math.atan2, hie = Math.abs, k1 = Math.sqrt, h1 = Math.max, Fg = Math.min, vp = 1e-4; +function g4e(e, t, r, n, i, a, o, l) { + var u = r - e, d = n - t, f = o - i, g = l - a, v = g * u - f * d; + if (!(v * v < vp)) + return v = (f * (t - a) - g * (e - i)) / v, [e + v * u, t + v * d]; +} +function Yk(e, t, r, n, i, a, o) { + var l = e - r, u = t - n, d = (o ? a : -a) / k1(l * l + u * u), f = d * u, g = -d * l, v = e + f, y = t + g, C = r + f, A = n + g, S = (v + C) / 2, _ = (y + A) / 2, E = C - v, I = A - y, w = E * E + I * I, x = i - a, b = v * A - C * y, R = (I < 0 ? -1 : 1) * k1(h1(0, x * x * w - b * b)), M = (b * I - E * R) / w, O = (-b * E - I * R) / w, P = (b * I + E * R) / w, B = (-b * E + I * R) / w, H = M - S, Y = O - _, X = P - S, ee = B - _; + return H * H + Y * Y > X * X + ee * ee && (M = P, O = B), { + cx: M, + cy: O, + x0: -f, + y0: -g, + x1: M * (i / x - 1), + y1: O * (i / x - 1) + }; +} +function v4e(e) { + var t; + if (qt(e)) { + var r = e.length; + if (!r) + return e; + r === 1 ? t = [e[0], e[0], 0, 0] : r === 2 ? t = [e[0], e[0], e[1], e[1]] : r === 3 ? t = e.concat(e[2]) : t = e; + } else + t = [e, e, e, e]; + return t; +} +function m4e(e, t) { + var r, n = h1(t.r, 0), i = h1(t.r0 || 0, 0), a = n > 0, o = i > 0; + if (!(!a && !o)) { + if (a || (n = i, i = 0), i > n) { + var l = n; + n = i, i = l; + } + var u = t.startAngle, d = t.endAngle; + if (!(isNaN(u) || isNaN(d))) { + var f = t.cx, g = t.cy, v = !!t.clockwise, y = hie(d - u), C = y > tz && y % tz; + if (C > vp && (y = C), !(n > vp)) + e.moveTo(f, g); + else if (y > tz - vp) + e.moveTo(f + n * wT(u), g + n * rb(u)), e.arc(f, g, n, u, d, !v), i > vp && (e.moveTo(f + i * wT(d), g + i * rb(d)), e.arc(f, g, i, d, u, v)); + else { + var A = void 0, S = void 0, _ = void 0, E = void 0, I = void 0, w = void 0, x = void 0, b = void 0, R = void 0, M = void 0, O = void 0, P = void 0, B = void 0, H = void 0, Y = void 0, X = void 0, ee = n * wT(u), ae = n * rb(u), J = i * wT(d), ne = i * rb(d), fe = y > vp; + if (fe) { + var de = t.cornerRadius; + de && (r = v4e(de), A = r[0], S = r[1], _ = r[2], E = r[3]); + var Te = hie(n - i) / 2; + if (I = Fg(Te, _), w = Fg(Te, E), x = Fg(Te, A), b = Fg(Te, S), O = R = h1(I, w), P = M = h1(x, b), (R > vp || M > vp) && (B = n * wT(d), H = n * rb(d), Y = i * wT(u), X = i * rb(u), y < gme)) { + var be = g4e(ee, ae, Y, X, B, H, J, ne); + if (be) { + var Ve = ee - be[0], pe = ae - be[1], Be = B - be[0], Ue = H - be[1], Qe = 1 / rb(p4e((Ve * Be + pe * Ue) / (k1(Ve * Ve + pe * pe) * k1(Be * Be + Ue * Ue))) / 2), Re = k1(be[0] * be[0] + be[1] * be[1]); + O = Fg(R, (n - Re) / (Qe + 1)), P = Fg(M, (i - Re) / (Qe - 1)); + } + } + } + if (!fe) + e.moveTo(f + ee, g + ae); + else if (O > vp) { + var Ne = Fg(_, O), Me = Fg(E, O), we = Yk(Y, X, ee, ae, n, Ne, v), He = Yk(B, H, J, ne, n, Me, v); + e.moveTo(f + we.cx + we.x0, g + we.cy + we.y0), O < R && Ne === Me ? e.arc(f + we.cx, g + we.cy, O, Vc(we.y0, we.x0), Vc(He.y0, He.x0), !v) : (Ne > 0 && e.arc(f + we.cx, g + we.cy, Ne, Vc(we.y0, we.x0), Vc(we.y1, we.x1), !v), e.arc(f, g, n, Vc(we.cy + we.y1, we.cx + we.x1), Vc(He.cy + He.y1, He.cx + He.x1), !v), Me > 0 && e.arc(f + He.cx, g + He.cy, Me, Vc(He.y1, He.x1), Vc(He.y0, He.x0), !v)); + } else + e.moveTo(f + ee, g + ae), e.arc(f, g, n, u, d, !v); + if (!(i > vp) || !fe) + e.lineTo(f + J, g + ne); + else if (P > vp) { + var Ne = Fg(A, P), Me = Fg(S, P), we = Yk(J, ne, B, H, i, -Me, v), He = Yk(ee, ae, Y, X, i, -Ne, v); + e.lineTo(f + we.cx + we.x0, g + we.cy + we.y0), P < M && Ne === Me ? e.arc(f + we.cx, g + we.cy, P, Vc(we.y0, we.x0), Vc(He.y0, He.x0), !v) : (Me > 0 && e.arc(f + we.cx, g + we.cy, Me, Vc(we.y0, we.x0), Vc(we.y1, we.x1), !v), e.arc(f, g, i, Vc(we.cy + we.y1, we.cx + we.x1), Vc(He.cy + He.y1, He.cx + He.x1), v), Ne > 0 && e.arc(f + He.cx, g + He.cy, Ne, Vc(He.y1, He.x1), Vc(He.y0, He.x0), !v)); + } else + e.lineTo(f + J, g + ne), e.arc(f, g, i, d, u, v); + } + e.closePath(); + } + } +} +var y4e = function() { + function e() { + this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = Math.PI * 2, this.clockwise = !0, this.cornerRadius = 0; + } + return e; +}(), vme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new y4e(); + }, t.prototype.buildPath = function(r, n) { + m4e(r, n); + }, t.prototype.isZeroArea = function() { + return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0; + }, t; +}(Ei); +vme.prototype.type = "sector"; +const Fu = vme; +var _4e = function() { + function e() { + this.cx = 0, this.cy = 0, this.r = 0, this.r0 = 0; + } + return e; +}(), mme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new _4e(); + }, t.prototype.buildPath = function(r, n) { + var i = n.cx, a = n.cy, o = Math.PI * 2; + r.moveTo(i + n.r, a), r.arc(i, a, n.r, 0, o, !1), r.moveTo(i + n.r0, a), r.arc(i, a, n.r0, 0, o, !0); + }, t; +}(Ei); +mme.prototype.type = "ring"; +const mD = mme; +function S4e(e, t, r, n) { + var i = [], a = [], o = [], l = [], u, d, f, g; + if (n) { + f = [1 / 0, 1 / 0], g = [-1 / 0, -1 / 0]; + for (var v = 0, y = e.length; v < y; v++) + Mm(f, f, e[v]), km(g, g, e[v]); + Mm(f, f, n[0]), km(g, g, n[1]); + } + for (var v = 0, y = e.length; v < y; v++) { + var C = e[v]; + if (r) + u = e[v ? v - 1 : y - 1], d = e[(v + 1) % y]; + else if (v === 0 || v === y - 1) { + i.push(qg(e[v])); + continue; + } else + u = e[v - 1], d = e[v + 1]; + Y_(a, d, u), w1(a, a, t); + var A = pL(C, u), S = pL(C, d), _ = A + S; + _ !== 0 && (A /= _, S /= _), w1(o, a, -A), w1(l, a, S); + var E = TH([], C, o), I = TH([], C, l); + n && (km(E, E, f), Mm(E, E, g), km(I, I, f), Mm(I, I, g)), i.push(E), i.push(I); + } + return r && i.push(i.shift()), i; +} +function yme(e, t, r) { + var n = t.smooth, i = t.points; + if (i && i.length >= 2) { + if (n) { + var a = S4e(i, n, r, t.smoothConstraint); + e.moveTo(i[0][0], i[0][1]); + for (var o = i.length, l = 0; l < (r ? o : o - 1); l++) { + var u = a[l * 2], d = a[l * 2 + 1], f = i[(l + 1) % o]; + e.bezierCurveTo(u[0], u[1], d[0], d[1], f[0], f[1]); + } + } else { + e.moveTo(i[0][0], i[0][1]); + for (var l = 1, g = i.length; l < g; l++) + e.lineTo(i[l][0], i[l][1]); + } + r && e.closePath(); + } +} +var b4e = function() { + function e() { + this.points = null, this.smooth = 0, this.smoothConstraint = null; + } + return e; +}(), _me = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new b4e(); + }, t.prototype.buildPath = function(r, n) { + yme(r, n, !0); + }, t; +}(Ei); +_me.prototype.type = "polygon"; +const Bu = _me; +var E4e = function() { + function e() { + this.points = null, this.percent = 1, this.smooth = 0, this.smoothConstraint = null; + } + return e; +}(), Sme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new E4e(); + }, t.prototype.buildPath = function(r, n) { + yme(r, n, !1); + }, t; +}(Ei); +Sme.prototype.type = "polyline"; +const $u = Sme; +var C4e = {}, T4e = function() { + function e() { + this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1; + } + return e; +}(), bme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new T4e(); + }, t.prototype.buildPath = function(r, n) { + var i, a, o, l; + if (this.subPixelOptimize) { + var u = Yve(C4e, n, this.style); + i = u.x1, a = u.y1, o = u.x2, l = u.y2; + } else + i = n.x1, a = n.y1, o = n.x2, l = n.y2; + var d = n.percent; + d !== 0 && (r.moveTo(i, a), d < 1 && (o = i * (1 - d) + o * d, l = a * (1 - d) + l * d), r.lineTo(o, l)); + }, t.prototype.pointAt = function(r) { + var n = this.shape; + return [ + n.x1 * (1 - r) + n.x2 * r, + n.y1 * (1 - r) + n.y2 * r + ]; + }, t; +}(Ei); +bme.prototype.type = "line"; +const Pl = bme; +var vh = [], w4e = function() { + function e() { + this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.percent = 1; + } + return e; +}(); +function die(e, t, r) { + var n = e.cpx2, i = e.cpy2; + return n != null || i != null ? [ + (r ? _ne : Ml)(e.x1, e.cpx1, e.cpx2, e.x2, t), + (r ? _ne : Ml)(e.y1, e.cpy1, e.cpy2, e.y2, t) + ] : [ + (r ? DH : Kl)(e.x1, e.cpx1, e.x2, t), + (r ? DH : Kl)(e.y1, e.cpy1, e.y2, t) + ]; +} +var Eme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new w4e(); + }, t.prototype.buildPath = function(r, n) { + var i = n.x1, a = n.y1, o = n.x2, l = n.y2, u = n.cpx1, d = n.cpy1, f = n.cpx2, g = n.cpy2, v = n.percent; + v !== 0 && (r.moveTo(i, a), f == null || g == null ? (v < 1 && (lR(i, u, o, v, vh), u = vh[1], o = vh[2], lR(a, d, l, v, vh), d = vh[1], l = vh[2]), r.quadraticCurveTo(u, d, o, l)) : (v < 1 && (g0(i, u, f, o, v, vh), u = vh[1], f = vh[2], o = vh[3], g0(a, d, g, l, v, vh), d = vh[1], g = vh[2], l = vh[3]), r.bezierCurveTo(u, d, f, g, o, l))); + }, t.prototype.pointAt = function(r) { + return die(this.shape, r, !1); + }, t.prototype.tangentAt = function(r) { + var n = die(this.shape, r, !0); + return AE(n, n); + }, t; +}(Ei); +Eme.prototype.type = "bezier-curve"; +const yD = Eme; +var I4e = function() { + function e() { + this.cx = 0, this.cy = 0, this.r = 0, this.startAngle = 0, this.endAngle = Math.PI * 2, this.clockwise = !0; + } + return e; +}(), Cme = function(e) { + No(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new I4e(); + }, t.prototype.buildPath = function(r, n) { + var i = n.cx, a = n.cy, o = Math.max(n.r, 0), l = n.startAngle, u = n.endAngle, d = n.clockwise, f = Math.cos(l), g = Math.sin(l); + r.moveTo(f * o + i, g * o + a), r.arc(i, a, o, l, u, !d); + }, t; +}(Ei); +Cme.prototype.type = "arc"; +const AF = Cme; +var x4e = function(e) { + No(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "compound", r; + } + return t.prototype._updatePathDirty = function() { + for (var r = this.shape.paths, n = this.shapeChanged(), i = 0; i < r.length; i++) + n = n || r[i].shapeChanged(); + n && this.dirtyShape(); + }, t.prototype.beforeBrush = function() { + this._updatePathDirty(); + for (var r = this.shape.paths || [], n = this.getGlobalScale(), i = 0; i < r.length; i++) + r[i].path || r[i].createPathProxy(), r[i].path.setScale(n[0], n[1], r[i].segmentIgnoreThreshold); + }, t.prototype.buildPath = function(r, n) { + for (var i = n.paths || [], a = 0; a < i.length; a++) + i[a].buildPath(r, i[a].shape, !0); + }, t.prototype.afterBrush = function() { + for (var r = this.shape.paths || [], n = 0; n < r.length; n++) + r[n].pathUpdated(); + }, t.prototype.getBoundingRect = function() { + return this._updatePathDirty.call(this), Ei.prototype.getBoundingRect.call(this); + }, t; +}(Ei); +const RF = x4e; +var A4e = function() { + function e(t) { + this.colorStops = t || []; + } + return e.prototype.addColorStop = function(t, r) { + this.colorStops.push({ + offset: t, + color: r + }); + }, e; +}(); +const Tme = A4e; +var R4e = function(e) { + No(t, e); + function t(r, n, i, a, o, l) { + var u = e.call(this, o) || this; + return u.x = r == null ? 0 : r, u.y = n == null ? 0 : n, u.x2 = i == null ? 1 : i, u.y2 = a == null ? 0 : a, u.type = "linear", u.global = l || !1, u; + } + return t; +}(Tme); +const fI = R4e; +var D4e = function(e) { + No(t, e); + function t(r, n, i, a, o) { + var l = e.call(this, a) || this; + return l.x = r == null ? 0.5 : r, l.y = n == null ? 0.5 : n, l.r = i == null ? 0.5 : i, l.type = "radial", l.global = o || !1, l; + } + return t; +}(Tme); +const R8 = D4e; +var nb = [0, 0], ib = [0, 0], Xk = new ni(), Kk = new ni(), O4e = function() { + function e(t, r) { + this._corners = [], this._axes = [], this._origin = [0, 0]; + for (var n = 0; n < 4; n++) + this._corners[n] = new ni(); + for (var n = 0; n < 2; n++) + this._axes[n] = new ni(); + t && this.fromBoundingRect(t, r); + } + return e.prototype.fromBoundingRect = function(t, r) { + var n = this._corners, i = this._axes, a = t.x, o = t.y, l = a + t.width, u = o + t.height; + if (n[0].set(a, o), n[1].set(l, o), n[2].set(l, u), n[3].set(a, u), r) + for (var d = 0; d < 4; d++) + n[d].transform(r); + ni.sub(i[0], n[1], n[0]), ni.sub(i[1], n[3], n[0]), i[0].normalize(), i[1].normalize(); + for (var d = 0; d < 2; d++) + this._origin[d] = i[d].dot(n[0]); + }, e.prototype.intersect = function(t, r) { + var n = !0, i = !r; + return Xk.set(1 / 0, 1 / 0), Kk.set(0, 0), !this._intersectCheckOneSide(this, t, Xk, Kk, i, 1) && (n = !1, i) || !this._intersectCheckOneSide(t, this, Xk, Kk, i, -1) && (n = !1, i) || i || ni.copy(r, n ? Xk : Kk), n; + }, e.prototype._intersectCheckOneSide = function(t, r, n, i, a, o) { + for (var l = !0, u = 0; u < 2; u++) { + var d = this._axes[u]; + if (this._getProjMinMaxOnAxis(u, t._corners, nb), this._getProjMinMaxOnAxis(u, r._corners, ib), nb[1] < ib[0] || nb[0] > ib[1]) { + if (l = !1, a) + return l; + var f = Math.abs(ib[0] - nb[1]), g = Math.abs(nb[0] - ib[1]); + Math.min(f, g) > i.len() && (f < g ? ni.scale(i, d, -f * o) : ni.scale(i, d, g * o)); + } else if (n) { + var f = Math.abs(ib[0] - nb[1]), g = Math.abs(nb[0] - ib[1]); + Math.min(f, g) < n.len() && (f < g ? ni.scale(n, d, f * o) : ni.scale(n, d, -g * o)); + } + } + return l; + }, e.prototype._getProjMinMaxOnAxis = function(t, r, n) { + for (var i = this._axes[t], a = this._origin, o = r[0].dot(i) + a[t], l = o, u = o, d = 1; d < r.length; d++) { + var f = r[d].dot(i) + a[t]; + l = Math.min(f, l), u = Math.max(f, u); + } + n[0] = l, n[1] = u; + }, e; +}(); +const TL = O4e; +var M4e = [], k4e = function(e) { + No(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.notClear = !0, r.incremental = !0, r._displayables = [], r._temporaryDisplayables = [], r._cursor = 0, r; + } + return t.prototype.traverse = function(r, n) { + r.call(n, this); + }, t.prototype.useStyle = function() { + this.style = {}; + }, t.prototype.getCursor = function() { + return this._cursor; + }, t.prototype.innerAfterBrush = function() { + this._cursor = this._displayables.length; + }, t.prototype.clearDisplaybles = function() { + this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.markRedraw(), this.notClear = !1; + }, t.prototype.clearTemporalDisplayables = function() { + this._temporaryDisplayables = []; + }, t.prototype.addDisplayable = function(r, n) { + n ? this._temporaryDisplayables.push(r) : this._displayables.push(r), this.markRedraw(); + }, t.prototype.addDisplayables = function(r, n) { + n = n || !1; + for (var i = 0; i < r.length; i++) + this.addDisplayable(r[i], n); + }, t.prototype.getDisplayables = function() { + return this._displayables; + }, t.prototype.getTemporalDisplayables = function() { + return this._temporaryDisplayables; + }, t.prototype.eachPendingDisplayable = function(r) { + for (var n = this._cursor; n < this._displayables.length; n++) + r && r(this._displayables[n]); + for (var n = 0; n < this._temporaryDisplayables.length; n++) + r && r(this._temporaryDisplayables[n]); + }, t.prototype.update = function() { + this.updateTransform(); + for (var r = this._cursor; r < this._displayables.length; r++) { + var n = this._displayables[r]; + n.parent = this, n.update(), n.parent = null; + } + for (var r = 0; r < this._temporaryDisplayables.length; r++) { + var n = this._temporaryDisplayables[r]; + n.parent = this, n.update(), n.parent = null; + } + }, t.prototype.getBoundingRect = function() { + if (!this._rect) { + for (var r = new ei(1 / 0, 1 / 0, -1 / 0, -1 / 0), n = 0; n < this._displayables.length; n++) { + var i = this._displayables[n], a = i.getBoundingRect().clone(); + i.needLocalTransform() && a.applyTransform(i.getLocalTransform(M4e)), r.union(a); + } + this._rect = r; + } + return this._rect; + }, t.prototype.contain = function(r, n) { + var i = this.transformCoordToLocal(r, n), a = this.getBoundingRect(); + if (a.contain(i[0], i[1])) + for (var o = 0; o < this._displayables.length; o++) { + var l = this._displayables[o]; + if (l.contain(r, n)) + return !0; + } + return !1; + }, t; +}(Tf); +const wme = k4e; +var Ime = ea(); +function pI(e, t, r, n, i) { + var a; + if (t && t.ecModel) { + var o = t.ecModel.getUpdatePayload(); + a = o && o.animation; + } + var l = t && t.isAnimationEnabled(), u = e === "update"; + if (l) { + var d = void 0, f = void 0, g = void 0; + n ? (d = Fn(n.duration, 200), f = Fn(n.easing, "cubicOut"), g = 0) : (d = t.getShallow(u ? "animationDurationUpdate" : "animationDuration"), f = t.getShallow(u ? "animationEasingUpdate" : "animationEasing"), g = t.getShallow(u ? "animationDelayUpdate" : "animationDelay")), a && (a.duration != null && (d = a.duration), a.easing != null && (f = a.easing), a.delay != null && (g = a.delay)), Kr(g) && (g = g(r, i)), Kr(d) && (d = d(r)); + var v = { + duration: d || 0, + delay: g, + easing: f + }; + return v; + } else + return null; +} +function D8(e, t, r, n, i, a, o) { + var l = !1, u; + Kr(i) ? (o = a, a = i, i = null) : sn(i) && (a = i.cb, o = i.during, l = i.isFrom, u = i.removeOpt, i = i.dataIndex); + var d = e === "leave"; + d || t.stopAnimation("leave"); + var f = pI(e, n, i, d ? u || {} : null, n && n.getAnimationDelayParams ? n.getAnimationDelayParams(t, i) : null); + if (f && f.duration > 0) { + var g = f.duration, v = f.delay, y = f.easing, C = { + duration: g, + delay: v || 0, + easing: y, + done: a, + force: !!a || !!o, + // Set to final state in update/init animation. + // So the post processing based on the path shape can be done correctly. + setToFinal: !d, + scope: e, + during: o + }; + l ? t.animateFrom(r, C) : t.animateTo(r, C); + } else + t.stopAnimation(), !l && t.attr(r), o && o(1), a && a(); +} +function ia(e, t, r, n, i, a) { + D8("update", e, t, r, n, i, a); +} +function Po(e, t, r, n, i, a) { + D8("enter", e, t, r, n, i, a); +} +function Cw(e) { + if (!e.__zr) + return !0; + for (var t = 0; t < e.animators.length; t++) { + var r = e.animators[t]; + if (r.scope === "leave") + return !0; + } + return !1; +} +function v0(e, t, r, n, i, a) { + Cw(e) || D8("leave", e, t, r, n, i, a); +} +function fie(e, t, r, n) { + e.removeTextContent(), e.removeTextGuideLine(), v0(e, { + style: { + opacity: 0 + } + }, t, r, n); +} +function mR(e, t, r) { + function n() { + e.parent && e.parent.remove(e); + } + e.isGroup ? e.traverse(function(i) { + i.isGroup || fie(i, t, r, n); + }) : fie(e, t, r, n); +} +function Lp(e) { + Ime(e).oldStyle = e.style; +} +function P4e(e) { + return Ime(e).oldStyle; +} +var wL = Math.max, IL = Math.min, rW = {}; +function xme(e) { + return Ei.extend(e); +} +var N4e = u4e; +function Ame(e, t) { + return N4e(e, t); +} +function Df(e, t) { + rW[e] = t; +} +function DF(e) { + if (rW.hasOwnProperty(e)) + return rW[e]; +} +function _D(e, t, r, n) { + var i = dme(e, t); + return r && (n === "center" && (r = Rme(r, i.getBoundingRect())), M8(i, r)), i; +} +function O8(e, t, r) { + var n = new ec({ + style: { + image: e, + x: t.x, + y: t.y, + width: t.width, + height: t.height + }, + onload: function(i) { + if (r === "center") { + var a = { + width: i.width, + height: i.height + }; + n.setStyle(Rme(t, a)); + } + } + }); + return n; +} +function Rme(e, t) { + var r = t.width / t.height, n = e.height * r, i; + n <= e.width ? i = e.height : (n = e.width, i = n / r); + var a = e.x + e.width / 2, o = e.y + e.height / 2; + return { + x: a - n / 2, + y: o - i / 2, + width: n, + height: i + }; +} +var sd = h4e; +function M8(e, t) { + if (e.applyTransform) { + var r = e.getBoundingRect(), n = r.calculateTransform(t); + e.applyTransform(n); + } +} +function jw(e, t) { + return Yve(e, e, { + lineWidth: t + }), e; +} +function L4e(e) { + return Xve(e.shape, e.shape, e.style), e; +} +var xN = Pb; +function l0(e, t) { + for (var r = dD([]); e && e !== t; ) + Jg(r, e.getLocalTransform(), r), e = e.parent; + return r; +} +function Op(e, t, r) { + return t && !Sc(t) && (t = Pm.getLocalTransform(t)), r && (t = RE([], t)), Jl([], e, t); +} +function OF(e, t, r) { + var n = t[4] === 0 || t[5] === 0 || t[0] === 0 ? 1 : Math.abs(2 * t[4] / t[0]), i = t[4] === 0 || t[5] === 0 || t[2] === 0 ? 1 : Math.abs(2 * t[4] / t[2]), a = [e === "left" ? -n : e === "right" ? n : 0, e === "top" ? -i : e === "bottom" ? i : 0]; + return a = Op(a, t, r), Math.abs(a[0]) > Math.abs(a[1]) ? a[0] > 0 ? "right" : "left" : a[1] > 0 ? "bottom" : "top"; +} +function pie(e) { + return !e.isGroup; +} +function F4e(e) { + return e.shape != null; +} +function SD(e, t, r) { + if (!e || !t) + return; + function n(o) { + var l = {}; + return o.traverse(function(u) { + pie(u) && u.anid && (l[u.anid] = u); + }), l; + } + function i(o) { + var l = { + x: o.x, + y: o.y, + rotation: o.rotation + }; + return F4e(o) && (l.shape = $t({}, o.shape)), l; + } + var a = n(e); + t.traverse(function(o) { + if (pie(o) && o.anid) { + var l = a[o.anid]; + if (l) { + var u = i(o); + o.attr(i(l)), ia(o, u, r, Tn(o).dataIndex); + } + } + }); +} +function k8(e, t) { + return er(e, function(r) { + var n = r[0]; + n = wL(n, t.x), n = IL(n, t.x + t.width); + var i = r[1]; + return i = wL(i, t.y), i = IL(i, t.y + t.height), [n, i]; + }); +} +function Dme(e, t) { + var r = wL(e.x, t.x), n = IL(e.x + e.width, t.x + t.width), i = wL(e.y, t.y), a = IL(e.y + e.height, t.y + t.height); + if (n >= r && a >= i) + return { + x: r, + y: i, + width: n - r, + height: a - i + }; +} +function gI(e, t, r) { + var n = $t({ + rectHover: !0 + }, t), i = n.style = { + strokeNoScale: !0 + }; + if (r = r || { + x: -1, + y: -1, + width: 2, + height: 2 + }, e) + return e.indexOf("image://") === 0 ? (i.image = e.slice(8), Jr(i, r), new ec(n)) : _D(e.replace("path://", ""), n, r, "center"); +} +function d1(e, t, r, n, i) { + for (var a = 0, o = i[i.length - 1]; a < i.length; a++) { + var l = i[a]; + if (Ome(e, t, r, n, l[0], l[1], o[0], o[1])) + return !0; + o = l; + } +} +function Ome(e, t, r, n, i, a, o, l) { + var u = r - e, d = n - t, f = o - i, g = l - a, v = rz(f, g, u, d); + if (B4e(v)) + return !1; + var y = e - i, C = t - a, A = rz(y, C, u, d) / v; + if (A < 0 || A > 1) + return !1; + var S = rz(y, C, f, g) / v; + return !(S < 0 || S > 1); +} +function rz(e, t, r, n) { + return e * n - r * t; +} +function B4e(e) { + return e <= 1e-6 && e >= -1e-6; +} +function vI(e) { + var t = e.itemTooltipOption, r = e.componentModel, n = e.itemName, i = wr(t) ? { + formatter: t + } : t, a = r.mainType, o = r.componentIndex, l = { + componentType: a, + name: n, + $vars: ["name"] + }; + l[a + "Index"] = o; + var u = e.formatterParamsExtra; + u && Ee(Ri(u), function(f) { + Lr(l, f) || (l[f] = u[f], l.$vars.push(f)); + }); + var d = Tn(e.el); + d.componentMainType = a, d.componentIndex = o, d.tooltipConfig = { + name: n, + option: Jr({ + content: n, + formatterParams: l + }, i) + }; +} +function gie(e, t) { + var r; + e.isGroup && (r = t(e)), r || e.traverse(t); +} +function D0(e, t) { + if (e) + if (qt(e)) + for (var r = 0; r < e.length; r++) + gie(e[r], t); + else + gie(e, t); +} +Df("circle", ny); +Df("ellipse", xF); +Df("sector", Fu); +Df("ring", mD); +Df("polygon", Bu); +Df("polyline", $u); +Df("rect", Xi); +Df("line", Pl); +Df("bezierCurve", yD); +Df("arc", AF); +const DE = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Arc: AF, + BezierCurve: yD, + BoundingRect: ei, + Circle: ny, + CompoundPath: RF, + Ellipse: xF, + Group: _n, + Image: ec, + IncrementalDisplayable: wme, + Line: Pl, + LinearGradient: fI, + OrientedBoundingRect: TL, + Path: Ei, + Point: ni, + Polygon: Bu, + Polyline: $u, + RadialGradient: R8, + Rect: Xi, + Ring: mD, + Sector: Fu, + Text: Hi, + applyTransform: Op, + clipPointsByRect: k8, + clipRectByRect: Dme, + createIcon: gI, + extendPath: Ame, + extendShape: xme, + getShapeClass: DF, + getTransform: l0, + groupTransition: SD, + initProps: Po, + isElementRemoved: Cw, + lineLineIntersect: Ome, + linePolygonIntersect: d1, + makeImage: O8, + makePath: _D, + mergePath: sd, + registerShape: Df, + removeElement: v0, + removeElementWithFadeOut: mR, + resizePath: M8, + setTooltipConfig: vI, + subPixelOptimize: xN, + subPixelOptimizeLine: jw, + subPixelOptimizeRect: L4e, + transformDirection: OF, + traverseElements: D0, + updateProps: ia +}, Symbol.toStringTag, { value: "Module" })); +var MF = {}; +function Mme(e, t) { + for (var r = 0; r < Lu.length; r++) { + var n = Lu[r], i = t[n], a = e.ensureState(n); + a.style = a.style || {}, a.style.text = i; + } + var o = e.currentStates.slice(); + e.clearStates(!0), e.setStyle({ + text: t.normal + }), e.useStates(o, !0); +} +function nW(e, t, r) { + var n = e.labelFetcher, i = e.labelDataIndex, a = e.labelDimIndex, o = t.normal, l; + n && (l = n.getFormattedLabel(i, "normal", null, a, o && o.get("formatter"), r != null ? { + interpolatedValue: r + } : null)), l == null && (l = Kr(e.defaultText) ? e.defaultText(i, e, r) : e.defaultText); + for (var u = { + normal: l + }, d = 0; d < Lu.length; d++) { + var f = Lu[d], g = t[f]; + u[f] = Fn(n ? n.getFormattedLabel(i, f, null, a, g && g.get("formatter")) : null, l); + } + return u; +} +function Ec(e, t, r, n) { + r = r || MF; + for (var i = e instanceof Hi, a = !1, o = 0; o < gR.length; o++) { + var l = t[gR[o]]; + if (l && l.getShallow("show")) { + a = !0; + break; + } + } + var u = i ? e : e.getTextContent(); + if (a) { + i || (u || (u = new Hi(), e.setTextContent(u)), e.stateProxy && (u.stateProxy = e.stateProxy)); + var d = nW(r, t), f = t.normal, g = !!f.getShallow("show"), v = uo(f, n && n.normal, r, !1, !i); + v.text = d.normal, i || e.setTextConfig(xL(f, r, !1)); + for (var o = 0; o < Lu.length; o++) { + var y = Lu[o], l = t[y]; + if (l) { + var C = u.ensureState(y), A = !!Fn(l.getShallow("show"), g); + if (A !== g && (C.ignore = !A), C.style = uo(l, n && n[y], r, !0, !i), C.style.text = d[y], !i) { + var S = e.ensureState(y); + S.textConfig = xL(l, r, !0); + } + } + } + u.silent = !!f.getShallow("silent"), u.style.x != null && (v.x = u.style.x), u.style.y != null && (v.y = u.style.y), u.ignore = !g, u.useStyle(v), u.dirty(), r.enableTextSetter && (mI(u).setLabelText = function(_) { + var E = nW(r, t, _); + Mme(u, E); + }); + } else + u && (u.ignore = !0); + e.dirty(); +} +function Ll(e, t) { + t = t || "label"; + for (var r = { + normal: e.getModel(t) + }, n = 0; n < Lu.length; n++) { + var i = Lu[n]; + r[i] = e.getModel([i, t]); + } + return r; +} +function uo(e, t, r, n, i) { + var a = {}; + return U4e(a, e, r, n, i), t && $t(a, t), a; +} +function xL(e, t, r) { + t = t || {}; + var n = {}, i, a = e.getShallow("rotate"), o = Fn(e.getShallow("distance"), r ? null : 5), l = e.getShallow("offset"); + return i = e.getShallow("position") || (r ? null : "inside"), i === "outside" && (i = t.defaultOutsidePosition || "top"), i != null && (n.position = i), l != null && (n.offset = l), a != null && (a *= Math.PI / 180, n.rotation = a), o != null && (n.distance = o), n.outsideFill = e.get("color") === "inherit" ? t.inheritColor || null : "auto", n; +} +function U4e(e, t, r, n, i) { + r = r || MF; + var a = t.ecModel, o = a && a.option.textStyle, l = j4e(t), u; + if (l) { + u = {}; + for (var d in l) + if (l.hasOwnProperty(d)) { + var f = t.getModel(["rich", d]); + _ie(u[d] = {}, f, o, r, n, i, !1, !0); + } + } + u && (e.rich = u); + var g = t.get("overflow"); + g && (e.overflow = g); + var v = t.get("minMargin"); + v != null && (e.margin = v), _ie(e, t, o, r, n, i, !0, !1); +} +function j4e(e) { + for (var t; e && e !== e.ecModel; ) { + var r = (e.option || MF).rich; + if (r) { + t = t || {}; + for (var n = Ri(r), i = 0; i < n.length; i++) { + var a = n[i]; + t[a] = 1; + } + } + e = e.parentModel; + } + return t; +} +var vie = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], mie = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"], yie = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]; +function _ie(e, t, r, n, i, a, o, l) { + r = !i && r || MF; + var u = n && n.inheritColor, d = t.getShallow("color"), f = t.getShallow("textBorderColor"), g = Fn(t.getShallow("opacity"), r.opacity); + (d === "inherit" || d === "auto") && (u ? d = u : d = null), (f === "inherit" || f === "auto") && (u ? f = u : f = null), a || (d = d || r.color, f = f || r.textBorderColor), d != null && (e.fill = d), f != null && (e.stroke = f); + var v = Fn(t.getShallow("textBorderWidth"), r.textBorderWidth); + v != null && (e.lineWidth = v); + var y = Fn(t.getShallow("textBorderType"), r.textBorderType); + y != null && (e.lineDash = y); + var C = Fn(t.getShallow("textBorderDashOffset"), r.textBorderDashOffset); + C != null && (e.lineDashOffset = C), !i && g == null && !l && (g = n && n.defaultOpacity), g != null && (e.opacity = g), !i && !a && e.fill == null && n.inheritColor && (e.fill = n.inheritColor); + for (var A = 0; A < vie.length; A++) { + var S = vie[A], _ = Fn(t.getShallow(S), r[S]); + _ != null && (e[S] = _); + } + for (var A = 0; A < mie.length; A++) { + var S = mie[A], _ = t.getShallow(S); + _ != null && (e[S] = _); + } + if (e.verticalAlign == null) { + var E = t.getShallow("baseline"); + E != null && (e.verticalAlign = E); + } + if (!o || !n.disableBox) { + for (var A = 0; A < yie.length; A++) { + var S = yie[A], _ = t.getShallow(S); + _ != null && (e[S] = _); + } + var I = t.getShallow("borderType"); + I != null && (e.borderDash = I), (e.backgroundColor === "auto" || e.backgroundColor === "inherit") && u && (e.backgroundColor = u), (e.borderColor === "auto" || e.borderColor === "inherit") && u && (e.borderColor = u); + } +} +function P8(e, t) { + var r = t && t.getModel("textStyle"); + return yf([ + // FIXME in node-canvas fontWeight is before fontStyle + e.fontStyle || r && r.getShallow("fontStyle") || "", + e.fontWeight || r && r.getShallow("fontWeight") || "", + (e.fontSize || r && r.getShallow("fontSize") || 12) + "px", + e.fontFamily || r && r.getShallow("fontFamily") || "sans-serif" + ].join(" ")); +} +var mI = ea(); +function kme(e, t, r, n) { + if (e) { + var i = mI(e); + i.prevValue = i.value, i.value = r; + var a = t.normal; + i.valueAnimation = a.get("valueAnimation"), i.valueAnimation && (i.precision = a.get("precision"), i.defaultInterpolatedText = n, i.statesModels = t); + } +} +function Pme(e, t, r, n, i) { + var a = mI(e); + if (!a.valueAnimation || a.prevValue === a.value) + return; + var o = a.defaultInterpolatedText, l = Fn(a.interpolatedValue, a.prevValue), u = a.value; + function d(f) { + var g = Lve(r, a.precision, l, u, f); + a.interpolatedValue = f === 1 ? null : g; + var v = nW({ + labelDataIndex: t, + labelFetcher: i, + defaultText: o ? o(g) : g + "" + }, a.statesModels, g); + Mme(e, v); + } + e.percent = 0, (a.prevValue == null ? Po : ia)(e, { + // percent is used to prevent animation from being aborted #15916 + percent: 1 + }, n, t, null, d); +} +var $4e = ["textStyle", "color"], nz = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width", "height", "overflow"], iz = new Hi(), V4e = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getTextColor = function(t) { + var r = this.ecModel; + return this.getShallow("color") || (!t && r ? r.get($4e) : null); + }, e.prototype.getFont = function() { + return P8({ + fontStyle: this.getShallow("fontStyle"), + fontWeight: this.getShallow("fontWeight"), + fontSize: this.getShallow("fontSize"), + fontFamily: this.getShallow("fontFamily") + }, this.ecModel); + }, e.prototype.getTextRect = function(t) { + for (var r = { + text: t, + verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline") + }, n = 0; n < nz.length; n++) + r[nz[n]] = this.getShallow(nz[n]); + return iz.useStyle(r), iz.update(), iz.getBoundingRect(); + }, e; + }() +); +const z4e = V4e; +var Nme = [ + ["lineWidth", "width"], + ["stroke", "color"], + ["opacity"], + ["shadowBlur"], + ["shadowOffsetX"], + ["shadowOffsetY"], + ["shadowColor"], + ["lineDash", "type"], + ["lineDashOffset", "dashOffset"], + ["lineCap", "cap"], + ["lineJoin", "join"], + ["miterLimit"] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. +], H4e = dE(Nme), W4e = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getLineStyle = function(t) { + return H4e(this, t); + }, e; + }() +), Lme = [ + ["fill", "color"], + ["stroke", "borderColor"], + ["lineWidth", "borderWidth"], + ["opacity"], + ["shadowBlur"], + ["shadowOffsetX"], + ["shadowOffsetY"], + ["shadowColor"], + ["lineDash", "borderType"], + ["lineDashOffset", "borderDashOffset"], + ["lineCap", "borderCap"], + ["lineJoin", "borderJoin"], + ["miterLimit", "borderMiterLimit"] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. +], G4e = dE(Lme), Y4e = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getItemStyle = function(t, r) { + return G4e(this, t, r); + }, e; + }() +), OE = ( + /** @class */ + function() { + function e(t, r, n) { + this.parentModel = r, this.ecModel = n, this.option = t; + } + return e.prototype.init = function(t, r, n) { + }, e.prototype.mergeOption = function(t, r) { + Qn(this.option, t, !0); + }, e.prototype.get = function(t, r) { + return t == null ? this.option : this._doGet(this.parsePath(t), !r && this.parentModel); + }, e.prototype.getShallow = function(t, r) { + var n = this.option, i = n == null ? n : n[t]; + if (i == null && !r) { + var a = this.parentModel; + a && (i = a.getShallow(t)); + } + return i; + }, e.prototype.getModel = function(t, r) { + var n = t != null, i = n ? this.parsePath(t) : null, a = n ? this._doGet(i) : this.option; + return r = r || this.parentModel && this.parentModel.getModel(this.resolveParentPath(i)), new e(a, r, this.ecModel); + }, e.prototype.isEmpty = function() { + return this.option == null; + }, e.prototype.restoreData = function() { + }, e.prototype.clone = function() { + var t = this.constructor; + return new t(cn(this.option)); + }, e.prototype.parsePath = function(t) { + return typeof t == "string" ? t.split(".") : t; + }, e.prototype.resolveParentPath = function(t) { + return t; + }, e.prototype.isAnimationEnabled = function() { + if (!Yi.node && this.option) { + if (this.option.animation != null) + return !!this.option.animation; + if (this.parentModel) + return this.parentModel.isAnimationEnabled(); + } + }, e.prototype._doGet = function(t, r) { + var n = this.option; + if (!t) + return n; + for (var i = 0; i < t.length && !(t[i] && (n = n && typeof n == "object" ? n[t[i]] : null, n == null)); i++) + ; + return n == null && r && (n = r._doGet(this.resolveParentPath(t), r.parentModel)), n; + }, e; + }() +); +S8(OE); +qze(OE); +Fs(OE, W4e); +Fs(OE, Y4e); +Fs(OE, r3e); +Fs(OE, z4e); +const Wa = OE; +var X4e = Math.round(Math.random() * 10); +function yI(e) { + return [e || "", X4e++].join("_"); +} +function K4e(e) { + var t = {}; + e.registerSubTypeDefaulter = function(r, n) { + var i = Gg(r); + t[i.main] = n; + }, e.determineSubType = function(r, n) { + var i = n.type; + if (!i) { + var a = Gg(r).main; + e.hasSubTypes(r) && t[a] && (i = t[a](n)); + } + return i; + }; +} +function Z4e(e, t) { + e.topologicalTravel = function(a, o, l, u) { + if (!a.length) + return; + var d = r(o), f = d.graph, g = d.noEntryList, v = {}; + for (Ee(a, function(E) { + v[E] = !0; + }); g.length; ) { + var y = g.pop(), C = f[y], A = !!v[y]; + A && (l.call(u, y, C.originalDeps.slice()), delete v[y]), Ee(C.successor, A ? _ : S); + } + Ee(v, function() { + var E = ""; + throw new Error(E); + }); + function S(E) { + f[E].entryCount--, f[E].entryCount === 0 && g.push(E); + } + function _(E) { + v[E] = !0, S(E); + } + }; + function r(a) { + var o = {}, l = []; + return Ee(a, function(u) { + var d = n(o, u), f = d.originalDeps = t(u), g = i(f, a); + d.entryCount = g.length, d.entryCount === 0 && l.push(u), Ee(g, function(v) { + di(d.predecessor, v) < 0 && d.predecessor.push(v); + var y = n(o, v); + di(y.successor, v) < 0 && y.successor.push(u); + }); + }), { + graph: o, + noEntryList: l + }; + } + function n(a, o) { + return a[o] || (a[o] = { + predecessor: [], + successor: [] + }), a[o]; + } + function i(a, o) { + var l = []; + return Ee(a, function(u) { + di(o, u) >= 0 && l.push(u); + }), l; + } +} +function O0(e, t) { + return Qn(Qn({}, e, !0), t, !0); +} +const q4e = { + time: { + month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] + }, + legend: { + selector: { + all: "All", + inverse: "Inv" + } + }, + toolbox: { + brush: { + title: { + rect: "Box Select", + polygon: "Lasso Select", + lineX: "Horizontally Select", + lineY: "Vertically Select", + keep: "Keep Selections", + clear: "Clear Selections" + } + }, + dataView: { + title: "Data View", + lang: ["Data View", "Close", "Refresh"] + }, + dataZoom: { + title: { + zoom: "Zoom", + back: "Zoom Reset" + } + }, + magicType: { + title: { + line: "Switch to Line Chart", + bar: "Switch to Bar Chart", + stack: "Stack", + tiled: "Tile" + } + }, + restore: { + title: "Restore" + }, + saveAsImage: { + title: "Save as Image", + lang: ["Right Click to Save Image"] + } + }, + series: { + typeNames: { + pie: "Pie chart", + bar: "Bar chart", + line: "Line chart", + scatter: "Scatter plot", + effectScatter: "Ripple scatter plot", + radar: "Radar chart", + tree: "Tree", + treemap: "Treemap", + boxplot: "Boxplot", + candlestick: "Candlestick", + k: "K line chart", + heatmap: "Heat map", + map: "Map", + parallel: "Parallel coordinate map", + lines: "Line graph", + graph: "Relationship graph", + sankey: "Sankey diagram", + funnel: "Funnel chart", + gauge: "Gauge", + pictorialBar: "Pictorial bar", + themeRiver: "Theme River Map", + sunburst: "Sunburst", + custom: "Custom chart", + chart: "Chart" + } + }, + aria: { + general: { + withTitle: 'This is a chart about "{title}"', + withoutTitle: "This is a chart" + }, + series: { + single: { + prefix: "", + withName: " with type {seriesType} named {seriesName}.", + withoutName: " with type {seriesType}." + }, + multiple: { + prefix: ". It consists of {seriesCount} series count.", + withName: " The {seriesId} series is a {seriesType} representing {seriesName}.", + withoutName: " The {seriesId} series is a {seriesType}.", + separator: { + middle: "", + end: "" + } + } + }, + data: { + allData: "The data is as follows: ", + partialData: "The first {displayCnt} items are: ", + withName: "the data for {name} is {value}", + withoutName: "{value}", + separator: { + middle: ", ", + end: ". " + } + } + } +}, J4e = { + time: { + month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], + monthAbbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"], + dayOfWeekAbbr: ["日", "一", "二", "三", "四", "五", "六"] + }, + legend: { + selector: { + all: "全选", + inverse: "反选" + } + }, + toolbox: { + brush: { + title: { + rect: "矩形选择", + polygon: "圈选", + lineX: "横向选择", + lineY: "纵向选择", + keep: "保持选择", + clear: "清除选择" + } + }, + dataView: { + title: "数据视图", + lang: ["数据视图", "关闭", "刷新"] + }, + dataZoom: { + title: { + zoom: "区域缩放", + back: "区域缩放还原" + } + }, + magicType: { + title: { + line: "切换为折线图", + bar: "切换为柱状图", + stack: "切换为堆叠", + tiled: "切换为平铺" + } + }, + restore: { + title: "还原" + }, + saveAsImage: { + title: "保存为图片", + lang: ["右键另存为图片"] + } + }, + series: { + typeNames: { + pie: "饼图", + bar: "柱状图", + line: "折线图", + scatter: "散点图", + effectScatter: "涟漪散点图", + radar: "雷达图", + tree: "树图", + treemap: "矩形树图", + boxplot: "箱型图", + candlestick: "K线图", + k: "K线图", + heatmap: "热力图", + map: "地图", + parallel: "平行坐标图", + lines: "线图", + graph: "关系图", + sankey: "桑基图", + funnel: "漏斗图", + gauge: "仪表盘图", + pictorialBar: "象形柱图", + themeRiver: "主题河流图", + sunburst: "旭日图", + custom: "自定义图表", + chart: "图表" + } + }, + aria: { + general: { + withTitle: "这是一个关于“{title}”的图表。", + withoutTitle: "这是一个图表," + }, + series: { + single: { + prefix: "", + withName: "图表类型是{seriesType},表示{seriesName}。", + withoutName: "图表类型是{seriesType}。" + }, + multiple: { + prefix: "它由{seriesCount}个图表系列组成。", + withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},", + withoutName: "第{seriesId}个系列是一个{seriesType},", + separator: { + middle: ";", + end: "。" + } + } + }, + data: { + allData: "其数据是——", + partialData: "其中,前{displayCnt}项是——", + withName: "{name}的数据是{value}", + withoutName: "{value}", + separator: { + middle: ",", + end: "" + } + } + } +}; +var AL = "ZH", N8 = "EN", Tw = N8, AN = {}, L8 = {}, Fme = Yi.domSupported ? function() { + var e = ( + /* eslint-disable-next-line */ + (document.documentElement.lang || navigator.language || navigator.browserLanguage || Tw).toUpperCase() + ); + return e.indexOf(AL) > -1 ? AL : Tw; +}() : Tw; +function kF(e, t) { + e = e.toUpperCase(), L8[e] = new Wa(t), AN[e] = t; +} +function Q4e(e) { + if (wr(e)) { + var t = AN[e.toUpperCase()] || {}; + return e === AL || e === N8 ? cn(t) : Qn(cn(t), cn(AN[Tw]), !1); + } else + return Qn(cn(e), cn(AN[Tw]), !1); +} +function iW(e) { + return L8[e]; +} +function eHe() { + return L8[Tw]; +} +kF(N8, q4e); +kF(AL, J4e); +var F8 = 1e3, B8 = F8 * 60, P1 = B8 * 60, vf = P1 * 24, Sie = vf * 365, f1 = { + year: "{yyyy}", + month: "{MMM}", + day: "{d}", + hour: "{HH}:{mm}", + minute: "{HH}:{mm}", + second: "{HH}:{mm}:{ss}", + millisecond: "{HH}:{mm}:{ss} {SSS}", + none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}" +}, Zk = "{yyyy}-{MM}-{dd}", bie = { + year: "{yyyy}", + month: "{yyyy}-{MM}", + day: Zk, + hour: Zk + " " + f1.hour, + minute: Zk + " " + f1.minute, + second: Zk + " " + f1.second, + millisecond: f1.none +}, az = ["year", "month", "day", "hour", "minute", "second", "millisecond"], Bme = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"]; +function xu(e, t) { + return e += "", "0000".substr(0, t - e.length) + e; +} +function ww(e) { + switch (e) { + case "half-year": + case "quarter": + return "month"; + case "week": + case "half-week": + return "day"; + case "half-day": + case "quarter-day": + return "hour"; + default: + return e; + } +} +function tHe(e) { + return e === ww(e); +} +function rHe(e) { + switch (e) { + case "year": + case "month": + return "day"; + case "millisecond": + return "millisecond"; + default: + return "second"; + } +} +function bD(e, t, r, n) { + var i = vd(e), a = i[U8(r)](), o = i[Iw(r)]() + 1, l = Math.floor((o - 1) / 3) + 1, u = i[PF(r)](), d = i["get" + (r ? "UTC" : "") + "Day"](), f = i[yR(r)](), g = (f - 1) % 12 + 1, v = i[NF(r)](), y = i[LF(r)](), C = i[FF(r)](), A = n instanceof Wa ? n : iW(n || Fme) || eHe(), S = A.getModel("time"), _ = S.get("month"), E = S.get("monthAbbr"), I = S.get("dayOfWeek"), w = S.get("dayOfWeekAbbr"); + return (t || "").replace(/{yyyy}/g, a + "").replace(/{yy}/g, xu(a % 100 + "", 2)).replace(/{Q}/g, l + "").replace(/{MMMM}/g, _[o - 1]).replace(/{MMM}/g, E[o - 1]).replace(/{MM}/g, xu(o, 2)).replace(/{M}/g, o + "").replace(/{dd}/g, xu(u, 2)).replace(/{d}/g, u + "").replace(/{eeee}/g, I[d]).replace(/{ee}/g, w[d]).replace(/{e}/g, d + "").replace(/{HH}/g, xu(f, 2)).replace(/{H}/g, f + "").replace(/{hh}/g, xu(g + "", 2)).replace(/{h}/g, g + "").replace(/{mm}/g, xu(v, 2)).replace(/{m}/g, v + "").replace(/{ss}/g, xu(y, 2)).replace(/{s}/g, y + "").replace(/{SSS}/g, xu(C, 3)).replace(/{S}/g, C + ""); +} +function nHe(e, t, r, n, i) { + var a = null; + if (wr(r)) + a = r; + else if (Kr(r)) + a = r(e.value, t, { + level: e.level + }); + else { + var o = $t({}, f1); + if (e.level > 0) + for (var l = 0; l < az.length; ++l) + o[az[l]] = "{primary|" + o[az[l]] + "}"; + var u = r ? r.inherit === !1 ? r : Jr(r, o) : o, d = Ume(e.value, i); + if (u[d]) + a = u[d]; + else if (u.inherit) { + for (var f = Bme.indexOf(d), l = f - 1; l >= 0; --l) + if (u[d]) { + a = u[d]; + break; + } + a = a || o.none; + } + if (qt(a)) { + var g = e.level == null ? 0 : e.level >= 0 ? e.level : a.length + e.level; + g = Math.min(g, a.length - 1), a = a[g]; + } + } + return bD(new Date(e.value), a, i, n); +} +function Ume(e, t) { + var r = vd(e), n = r[Iw(t)]() + 1, i = r[PF(t)](), a = r[yR(t)](), o = r[NF(t)](), l = r[LF(t)](), u = r[FF(t)](), d = u === 0, f = d && l === 0, g = f && o === 0, v = g && a === 0, y = v && i === 1, C = y && n === 1; + return C ? "year" : y ? "month" : v ? "day" : g ? "hour" : f ? "minute" : d ? "second" : "millisecond"; +} +function Eie(e, t, r) { + var n = Qi(e) ? vd(e) : e; + switch (t = t || Ume(e, r), t) { + case "year": + return n[U8(r)](); + case "half-year": + return n[Iw(r)]() >= 6 ? 1 : 0; + case "quarter": + return Math.floor((n[Iw(r)]() + 1) / 4); + case "month": + return n[Iw(r)](); + case "day": + return n[PF(r)](); + case "half-day": + return n[yR(r)]() / 24; + case "hour": + return n[yR(r)](); + case "minute": + return n[NF(r)](); + case "second": + return n[LF(r)](); + case "millisecond": + return n[FF(r)](); + } +} +function U8(e) { + return e ? "getUTCFullYear" : "getFullYear"; +} +function Iw(e) { + return e ? "getUTCMonth" : "getMonth"; +} +function PF(e) { + return e ? "getUTCDate" : "getDate"; +} +function yR(e) { + return e ? "getUTCHours" : "getHours"; +} +function NF(e) { + return e ? "getUTCMinutes" : "getMinutes"; +} +function LF(e) { + return e ? "getUTCSeconds" : "getSeconds"; +} +function FF(e) { + return e ? "getUTCMilliseconds" : "getMilliseconds"; +} +function iHe(e) { + return e ? "setUTCFullYear" : "setFullYear"; +} +function jme(e) { + return e ? "setUTCMonth" : "setMonth"; +} +function $me(e) { + return e ? "setUTCDate" : "setDate"; +} +function Vme(e) { + return e ? "setUTCHours" : "setHours"; +} +function zme(e) { + return e ? "setUTCMinutes" : "setMinutes"; +} +function Hme(e) { + return e ? "setUTCSeconds" : "setSeconds"; +} +function Wme(e) { + return e ? "setUTCMilliseconds" : "setMilliseconds"; +} +function aHe(e, t, r, n, i, a, o, l) { + var u = new Hi({ + style: { + text: e, + font: t, + align: r, + verticalAlign: n, + padding: i, + rich: a, + overflow: o ? "truncate" : null, + lineHeight: l + } + }); + return u.getBoundingRect(); +} +function j8(e) { + if (!m8(e)) + return wr(e) ? e : "-"; + var t = (e + "").split("."); + return t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (t.length > 1 ? "." + t[1] : ""); +} +function $8(e, t) { + return e = (e || "").toLowerCase().replace(/-(.)/g, function(r, n) { + return n.toUpperCase(); + }), t && e && (e = e.charAt(0).toUpperCase() + e.slice(1)), e; +} +var ME = gF; +function aW(e, t, r) { + var n = "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}"; + function i(f) { + return f && yf(f) ? f : "-"; + } + function a(f) { + return !!(f != null && !isNaN(f) && isFinite(f)); + } + var o = t === "time", l = e instanceof Date; + if (o || l) { + var u = o ? vd(e) : e; + if (isNaN(+u)) { + if (l) + return "-"; + } else + return bD(u, n, r); + } + if (t === "ordinal") + return dL(e) ? i(e) : Qi(e) && a(e) ? e + "" : "-"; + var d = ov(e); + return a(d) ? j8(d) : dL(e) ? i(e) : typeof e == "boolean" ? e + "" : "-"; +} +var Cie = ["a", "b", "c", "d", "e", "f", "g"], oz = function(e, t) { + return "{" + e + (t == null ? "" : t) + "}"; +}; +function V8(e, t, r) { + qt(t) || (t = [t]); + var n = t.length; + if (!n) + return ""; + for (var i = t[0].$vars || [], a = 0; a < i.length; a++) { + var o = Cie[a]; + e = e.replace(oz(o), oz(o, 0)); + } + for (var l = 0; l < n; l++) + for (var u = 0; u < i.length; u++) { + var d = t[l][i[u]]; + e = e.replace(oz(Cie[u], l), r ? Du(d) : d); + } + return e; +} +function oHe(e, t, r) { + return Ee(t, function(n, i) { + e = e.replace("{" + i + "}", r ? Du(n) : n); + }), e; +} +function Gme(e, t) { + var r = wr(e) ? { + color: e, + extraCssText: t + } : e || {}, n = r.color, i = r.type; + t = r.extraCssText; + var a = r.renderMode || "html"; + if (!n) + return ""; + if (a === "html") + return i === "subItem" ? '' : ''; + var o = r.markerId || "markerX"; + return { + renderMode: a, + content: "{" + o + "|} ", + style: i === "subItem" ? { + width: 4, + height: 4, + borderRadius: 2, + backgroundColor: n + } : { + width: 10, + height: 10, + borderRadius: 5, + backgroundColor: n + } + }; +} +function sHe(e, t, r) { + (e === "week" || e === "month" || e === "quarter" || e === "half-year" || e === "year") && (e = `MM-dd +yyyy`); + var n = vd(t), i = r ? "getUTC" : "get", a = n[i + "FullYear"](), o = n[i + "Month"]() + 1, l = n[i + "Date"](), u = n[i + "Hours"](), d = n[i + "Minutes"](), f = n[i + "Seconds"](), g = n[i + "Milliseconds"](); + return e = e.replace("MM", xu(o, 2)).replace("M", o).replace("yyyy", a).replace("yy", xu(a % 100 + "", 2)).replace("dd", xu(l, 2)).replace("d", l).replace("hh", xu(u, 2)).replace("h", u).replace("mm", xu(d, 2)).replace("m", d).replace("ss", xu(f, 2)).replace("s", f).replace("SSS", xu(g, 3)), e; +} +function Yme(e) { + return e && e.charAt(0).toUpperCase() + e.substr(1); +} +function pE(e, t) { + return t = t || "transparent", wr(e) ? e : sn(e) && e.colorStops && (e.colorStops[0] || {}).color || t; +} +function RL(e, t) { + if (t === "_blank" || t === "blank") { + var r = window.open(); + r.opener = null, r.location.href = e; + } else + window.open(e, t); +} +var RN = Ee, Xme = ["left", "right", "top", "bottom", "width", "height"], Lb = [["width", "left", "right"], ["height", "top", "bottom"]]; +function z8(e, t, r, n, i) { + var a = 0, o = 0; + n == null && (n = 1 / 0), i == null && (i = 1 / 0); + var l = 0; + t.eachChild(function(u, d) { + var f = u.getBoundingRect(), g = t.childAt(d + 1), v = g && g.getBoundingRect(), y, C; + if (e === "horizontal") { + var A = f.width + (v ? -v.x + f.x : 0); + y = a + A, y > n || u.newline ? (a = 0, y = A, o += l + r, l = f.height) : l = Math.max(l, f.height); + } else { + var S = f.height + (v ? -v.y + f.y : 0); + C = o + S, C > i || u.newline ? (a += l + r, o = 0, C = S, l = f.width) : l = Math.max(l, f.width); + } + u.newline || (u.x = a, u.y = o, u.markRedraw(), e === "horizontal" ? a = y + r : o = C + r); + }); +} +var Kb = z8; +Ln(z8, "vertical"); +Ln(z8, "horizontal"); +function lHe(e, t, r) { + var n = t.width, i = t.height, a = yr(e.left, n), o = yr(e.top, i), l = yr(e.right, n), u = yr(e.bottom, i); + return (isNaN(a) || isNaN(parseFloat(e.left))) && (a = 0), (isNaN(l) || isNaN(parseFloat(e.right))) && (l = n), (isNaN(o) || isNaN(parseFloat(e.top))) && (o = 0), (isNaN(u) || isNaN(parseFloat(e.bottom))) && (u = i), r = ME(r || 0), { + width: Math.max(l - a - r[1] - r[3], 0), + height: Math.max(u - o - r[0] - r[2], 0) + }; +} +function js(e, t, r) { + r = ME(r || 0); + var n = t.width, i = t.height, a = yr(e.left, n), o = yr(e.top, i), l = yr(e.right, n), u = yr(e.bottom, i), d = yr(e.width, n), f = yr(e.height, i), g = r[2] + r[0], v = r[1] + r[3], y = e.aspect; + switch (isNaN(d) && (d = n - l - v - a), isNaN(f) && (f = i - u - g - o), y != null && (isNaN(d) && isNaN(f) && (y > n / i ? d = n * 0.8 : f = i * 0.8), isNaN(d) && (d = y * f), isNaN(f) && (f = d / y)), isNaN(a) && (a = n - l - d - v), isNaN(o) && (o = i - u - f - g), e.left || e.right) { + case "center": + a = n / 2 - d / 2 - r[3]; + break; + case "right": + a = n - d - v; + break; + } + switch (e.top || e.bottom) { + case "middle": + case "center": + o = i / 2 - f / 2 - r[0]; + break; + case "bottom": + o = i - f - g; + break; + } + a = a || 0, o = o || 0, isNaN(d) && (d = n - v - a - (l || 0)), isNaN(f) && (f = i - g - o - (u || 0)); + var C = new ei(a + r[3], o + r[0], d, f); + return C.margin = r, C; +} +function BF(e, t, r, n, i, a) { + var o = !i || !i.hv || i.hv[0], l = !i || !i.hv || i.hv[1], u = i && i.boundingMode || "all"; + if (a = a || e, a.x = e.x, a.y = e.y, !o && !l) + return !1; + var d; + if (u === "raw") + d = e.type === "group" ? new ei(0, 0, +t.width || 0, +t.height || 0) : e.getBoundingRect(); + else if (d = e.getBoundingRect(), e.needLocalTransform()) { + var f = e.getLocalTransform(); + d = d.clone(), d.applyTransform(f); + } + var g = js(Jr({ + width: d.width, + height: d.height + }, t), r, n), v = o ? g.x - d.x : 0, y = l ? g.y - d.y : 0; + return u === "raw" ? (a.x = v, a.y = y) : (a.x += v, a.y += y), a === e && e.markRedraw(), !0; +} +function cHe(e, t) { + return e[Lb[t][0]] != null || e[Lb[t][1]] != null && e[Lb[t][2]] != null; +} +function _R(e) { + var t = e.layoutMode || e.constructor.layoutMode; + return sn(t) ? t : t ? { + type: t + } : null; +} +function m0(e, t, r) { + var n = r && r.ignoreSize; + !qt(n) && (n = [n, n]); + var i = o(Lb[0], 0), a = o(Lb[1], 1); + d(Lb[0], e, i), d(Lb[1], e, a); + function o(f, g) { + var v = {}, y = 0, C = {}, A = 0, S = 2; + if (RN(f, function(I) { + C[I] = e[I]; + }), RN(f, function(I) { + l(t, I) && (v[I] = C[I] = t[I]), u(v, I) && y++, u(C, I) && A++; + }), n[g]) + return u(t, f[1]) ? C[f[2]] = null : u(t, f[2]) && (C[f[1]] = null), C; + if (A === S || !y) + return C; + if (y >= S) + return v; + for (var _ = 0; _ < f.length; _++) { + var E = f[_]; + if (!l(v, E) && l(e, E)) { + v[E] = e[E]; + break; + } + } + return v; + } + function l(f, g) { + return f.hasOwnProperty(g); + } + function u(f, g) { + return f[g] != null && f[g] !== "auto"; + } + function d(f, g, v) { + RN(f, function(y) { + g[y] = v[y]; + }); + } +} +function _I(e) { + return Kme({}, e); +} +function Kme(e, t) { + return t && e && RN(Xme, function(r) { + t.hasOwnProperty(r) && (e[r] = t[r]); + }), e; +} +var uHe = ea(), SI = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this, r, n, i) || this; + return a.uid = yI("ec_cpt_model"), a; + } + return t.prototype.init = function(r, n, i) { + this.mergeDefaultAndTheme(r, i); + }, t.prototype.mergeDefaultAndTheme = function(r, n) { + var i = _R(this), a = i ? _I(r) : {}, o = n.getTheme(); + Qn(r, o.get(this.mainType)), Qn(r, this.getDefaultOption()), i && m0(r, a, i); + }, t.prototype.mergeOption = function(r, n) { + Qn(this.option, r, !0); + var i = _R(this); + i && m0(this.option, r, i); + }, t.prototype.optionUpdated = function(r, n) { + }, t.prototype.getDefaultOption = function() { + var r = this.constructor; + if (!Xze(r)) + return r.defaultOption; + var n = uHe(this); + if (!n.defaultOption) { + for (var i = [], a = r; a; ) { + var o = a.prototype.defaultOption; + o && i.push(o), a = a.superClass; + } + for (var l = {}, u = i.length - 1; u >= 0; u--) + l = Qn(l, i[u], !0); + n.defaultOption = l; + } + return n.defaultOption; + }, t.prototype.getReferringComponents = function(r, n) { + var i = r + "Index", a = r + "Id"; + return gD(this.ecModel, r, { + index: this.get(i, !0), + id: this.get(a, !0) + }, n); + }, t.prototype.getBoxLayoutParams = function() { + var r = this; + return { + left: r.get("left"), + top: r.get("top"), + right: r.get("right"), + bottom: r.get("bottom"), + width: r.get("width"), + height: r.get("height") + }; + }, t.prototype.getZLevelKey = function() { + return ""; + }, t.prototype.setZLevel = function(r) { + this.option.zlevel = r; + }, t.protoInitialize = function() { + var r = t.prototype; + r.type = "component", r.id = "", r.name = "", r.mainType = "", r.subType = "", r.componentIndex = 0; + }(), t; + }(Wa) +); +Bve(SI, Wa); +bF(SI); +K4e(SI); +Z4e(SI, hHe); +function hHe(e) { + var t = []; + return Ee(SI.getClassesByMainType(e), function(r) { + t = t.concat(r.dependencies || r.prototype.dependencies || []); + }), t = er(t, function(r) { + return Gg(r).main; + }), e !== "dataset" && di(t, "dataset") <= 0 && t.unshift("dataset"), t; +} +const Mi = SI; +var Zme = ""; +typeof navigator != "undefined" && (Zme = navigator.platform || ""); +var IT = "rgba(0, 0, 0, 0.2)"; +const dHe = { + darkMode: "auto", + // backgroundColor: 'rgba(0,0,0,0)', + colorBy: "series", + color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"], + gradientColor: ["#f6efa6", "#d88273", "#bf444c"], + aria: { + decal: { + decals: [{ + color: IT, + dashArrayX: [1, 0], + dashArrayY: [2, 5], + symbolSize: 1, + rotation: Math.PI / 6 + }, { + color: IT, + symbol: "circle", + dashArrayX: [[8, 8], [0, 8, 8, 0]], + dashArrayY: [6, 0], + symbolSize: 0.8 + }, { + color: IT, + dashArrayX: [1, 0], + dashArrayY: [4, 3], + rotation: -Math.PI / 4 + }, { + color: IT, + dashArrayX: [[6, 6], [0, 6, 6, 0]], + dashArrayY: [6, 0] + }, { + color: IT, + dashArrayX: [[1, 0], [1, 6]], + dashArrayY: [1, 0, 6, 0], + rotation: Math.PI / 4 + }, { + color: IT, + symbol: "triangle", + dashArrayX: [[9, 9], [0, 9, 9, 0]], + dashArrayY: [7, 2], + symbolSize: 0.75 + }] + } + }, + // If xAxis and yAxis declared, grid is created by default. + // grid: {}, + textStyle: { + // color: '#000', + // decoration: 'none', + // PENDING + fontFamily: Zme.match(/^Win/) ? "Microsoft YaHei" : "sans-serif", + // fontFamily: 'Arial, Verdana, sans-serif', + fontSize: 12, + fontStyle: "normal", + fontWeight: "normal" + }, + // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/ + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation + // Default is source-over + blendMode: null, + stateAnimation: { + duration: 300, + easing: "cubicOut" + }, + animation: "auto", + animationDuration: 1e3, + animationDurationUpdate: 500, + animationEasing: "cubicInOut", + animationEasingUpdate: "cubicInOut", + animationThreshold: 2e3, + // Configuration for progressive/incremental rendering + progressiveThreshold: 3e3, + progressive: 400, + // Threshold of if use single hover layer to optimize. + // It is recommended that `hoverLayerThreshold` is equivalent to or less than + // `progressiveThreshold`, otherwise hover will cause restart of progressive, + // which is unexpected. + // see example . + hoverLayerThreshold: 3e3, + // See: module:echarts/scale/Time + useUTC: !1 +}; +var qme = $r(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]), Of = "original", eu = "arrayRows", Mf = "objectRows", dv = "keyedColumns", c0 = "typedArray", Jme = "unknown", Qg = "column", bI = "row", gc = { + Must: 1, + Might: 2, + Not: 3 + // Other cases +}, Qme = ea(); +function fHe(e) { + Qme(e).datasetMap = $r(); +} +function eye(e, t, r) { + var n = {}, i = W8(t); + if (!i || !e) + return n; + var a = [], o = [], l = t.ecModel, u = Qme(l).datasetMap, d = i.uid + "_" + r.seriesLayoutBy, f, g; + e = e.slice(), Ee(e, function(A, S) { + var _ = sn(A) ? A : e[S] = { + name: A + }; + _.type === "ordinal" && f == null && (f = S, g = C(_)), n[_.name] = []; + }); + var v = u.get(d) || u.set(d, { + categoryWayDim: g, + valueWayDim: 0 + }); + Ee(e, function(A, S) { + var _ = A.name, E = C(A); + if (f == null) { + var I = v.valueWayDim; + y(n[_], I, E), y(o, I, E), v.valueWayDim += E; + } else if (f === S) + y(n[_], 0, E), y(a, 0, E); + else { + var I = v.categoryWayDim; + y(n[_], I, E), y(o, I, E), v.categoryWayDim += E; + } + }); + function y(A, S, _) { + for (var E = 0; E < _; E++) + A.push(S + E); + } + function C(A) { + var S = A.dimsDef; + return S ? S.length : 1; + } + return a.length && (n.itemName = a), o.length && (n.seriesName = o), n; +} +function H8(e, t, r) { + var n = {}, i = W8(e); + if (!i) + return n; + var a = t.sourceFormat, o = t.dimensionsDefine, l; + (a === Mf || a === dv) && Ee(o, function(f, g) { + (sn(f) ? f.name : f) === "name" && (l = g); + }); + var u = function() { + for (var f = {}, g = {}, v = [], y = 0, C = Math.min(5, r); y < C; y++) { + var A = rye(t.data, a, t.seriesLayoutBy, o, t.startIndex, y); + v.push(A); + var S = A === gc.Not; + if (S && f.v == null && y !== l && (f.v = y), (f.n == null || f.n === f.v || !S && v[f.n] === gc.Not) && (f.n = y), _(f) && v[f.n] !== gc.Not) + return f; + S || (A === gc.Might && g.v == null && y !== l && (g.v = y), (g.n == null || g.n === g.v) && (g.n = y)); + } + function _(E) { + return E.v != null && E.n != null; + } + return _(f) ? f : _(g) ? g : null; + }(); + if (u) { + n.value = [u.v]; + var d = l != null ? l : u.n; + n.itemName = [d], n.seriesName = [d]; + } + return n; +} +function W8(e) { + var t = e.get("data", !0); + if (!t) + return gD(e.ecModel, "dataset", { + index: e.get("datasetIndex", !0), + id: e.get("datasetId", !0) + }, tl).models[0]; +} +function pHe(e) { + return !e.get("transform", !0) && !e.get("fromTransformResult", !0) ? [] : gD(e.ecModel, "dataset", { + index: e.get("fromDatasetIndex", !0), + id: e.get("fromDatasetId", !0) + }, tl).models; +} +function tye(e, t) { + return rye(e.data, e.sourceFormat, e.seriesLayoutBy, e.dimensionsDefine, e.startIndex, t); +} +function rye(e, t, r, n, i, a) { + var o, l = 5; + if (Nu(e)) + return gc.Not; + var u, d; + if (n) { + var f = n[a]; + sn(f) ? (u = f.name, d = f.type) : wr(f) && (u = f); + } + if (d != null) + return d === "ordinal" ? gc.Must : gc.Not; + if (t === eu) { + var g = e; + if (r === bI) { + for (var v = g[a], y = 0; y < (v || []).length && y < l; y++) + if ((o = w(v[i + y])) != null) + return o; + } else + for (var y = 0; y < g.length && y < l; y++) { + var C = g[i + y]; + if (C && (o = w(C[a])) != null) + return o; + } + } else if (t === Mf) { + var A = e; + if (!u) + return gc.Not; + for (var y = 0; y < A.length && y < l; y++) { + var S = A[y]; + if (S && (o = w(S[u])) != null) + return o; + } + } else if (t === dv) { + var _ = e; + if (!u) + return gc.Not; + var v = _[u]; + if (!v || Nu(v)) + return gc.Not; + for (var y = 0; y < v.length && y < l; y++) + if ((o = w(v[y])) != null) + return o; + } else if (t === Of) + for (var E = e, y = 0; y < E.length && y < l; y++) { + var S = E[y], I = hI(S); + if (!qt(I)) + return gc.Not; + if ((o = w(I[a])) != null) + return o; + } + function w(x) { + var b = wr(x); + if (x != null && isFinite(x) && x !== "") + return b ? gc.Might : gc.Not; + if (b && x !== "-") + return gc.Must; + } + return gc.Not; +} +var oW = $r(); +function gHe(e, t) { + Qc(oW.get(e) == null && t), oW.set(e, t); +} +function vHe(e, t, r) { + var n = oW.get(t); + if (!n) + return r; + var i = n(e); + return i ? r.concat(i) : r; +} +var Tie = ea(), mHe = ea(), G8 = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getColorFromPalette = function(t, r, n) { + var i = qa(this.get("color", !0)), a = this.get("colorLayer", !0); + return nye(this, Tie, i, a, t, r, n); + }, e.prototype.clearColorPalette = function() { + _He(this, Tie); + }, e; + }() +); +function sW(e, t, r, n) { + var i = qa(e.get(["aria", "decal", "decals"])); + return nye(e, mHe, i, null, t, r, n); +} +function yHe(e, t) { + for (var r = e.length, n = 0; n < r; n++) + if (e[n].length > t) + return e[n]; + return e[r - 1]; +} +function nye(e, t, r, n, i, a, o) { + a = a || e; + var l = t(a), u = l.paletteIdx || 0, d = l.paletteNameMap = l.paletteNameMap || {}; + if (d.hasOwnProperty(i)) + return d[i]; + var f = o == null || !n ? r : yHe(n, o); + if (f = f || r, !(!f || !f.length)) { + var g = f[u]; + return i && (d[i] = g), l.paletteIdx = (u + 1) % f.length, g; + } +} +function _He(e, t) { + t(e).paletteIdx = 0, t(e).paletteNameMap = {}; +} +var qk, DA, wie, Iie = "\0_ec_inner", SHe = 1, iye = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.init = function(r, n, i, a, o, l) { + a = a || {}, this.option = null, this._theme = new Wa(a), this._locale = new Wa(o), this._optionManager = l; + }, t.prototype.setOption = function(r, n, i) { + var a = Rie(n); + this._optionManager.setOption(r, i, a), this._resetOption(null, a); + }, t.prototype.resetOption = function(r, n) { + return this._resetOption(r, Rie(n)); + }, t.prototype._resetOption = function(r, n) { + var i = !1, a = this._optionManager; + if (!r || r === "recreate") { + var o = a.mountOption(r === "recreate"); + !this.option || r === "recreate" ? wie(this, o) : (this.restoreData(), this._mergeOption(o, n)), i = !0; + } + if ((r === "timeline" || r === "media") && this.restoreData(), !r || r === "recreate" || r === "timeline") { + var l = a.getTimelineOption(this); + l && (i = !0, this._mergeOption(l, n)); + } + if (!r || r === "recreate" || r === "media") { + var u = a.getMediaOption(this); + u.length && Ee(u, function(d) { + i = !0, this._mergeOption(d, n); + }, this); + } + return i; + }, t.prototype.mergeOption = function(r) { + this._mergeOption(r, null); + }, t.prototype._mergeOption = function(r, n) { + var i = this.option, a = this._componentsMap, o = this._componentsCount, l = [], u = $r(), d = n && n.replaceMergeMainTypeMap; + fHe(this), Ee(r, function(g, v) { + g != null && (Mi.hasClass(v) ? v && (l.push(v), u.set(v, !0)) : i[v] = i[v] == null ? cn(g) : Qn(i[v], g, !0)); + }), d && d.each(function(g, v) { + Mi.hasClass(v) && !u.get(v) && (l.push(v), u.set(v, !0)); + }), Mi.topologicalTravel(l, Mi.getAllClassMainTypes(), f, this); + function f(g) { + var v = vHe(this, g, qa(r[g])), y = a.get(g), C = ( + // `!oldCmptList` means init. See the comment in `mappingToExists` + y ? d && d.get(g) ? "replaceMerge" : "normalMerge" : "replaceAll" + ), A = kve(y, v, C); + Uze(A, g, Mi), i[g] = null, a.set(g, null), o.set(g, 0); + var S = [], _ = [], E = 0, I; + Ee(A, function(w, x) { + var b = w.existing, R = w.newOption; + if (!R) + b && (b.mergeOption({}, this), b.optionUpdated({}, !1)); + else { + var M = g === "series", O = Mi.getClass( + g, + w.keyInfo.subType, + !M + // Give a more detailed warn later if series don't exists + ); + if (!O) + return; + if (g === "tooltip") { + if (I) + return; + I = !0; + } + if (b && b.constructor === O) + b.name = w.keyInfo.name, b.mergeOption(R, this), b.optionUpdated(R, !1); + else { + var P = $t({ + componentIndex: x + }, w.keyInfo); + b = new O(R, this, this, P), $t(b, P), w.brandNew && (b.__requireNewView = !0), b.init(R, this, this), b.optionUpdated(null, !0); + } + } + b ? (S.push(b.option), _.push(b), E++) : (S.push(void 0), _.push(void 0)); + }, this), i[g] = S, a.set(g, _), o.set(g, E), g === "series" && qk(this); + } + this._seriesIndices || qk(this); + }, t.prototype.getOption = function() { + var r = cn(this.option); + return Ee(r, function(n, i) { + if (Mi.hasClass(i)) { + for (var a = qa(n), o = a.length, l = !1, u = o - 1; u >= 0; u--) + a[u] && !fR(a[u]) ? l = !0 : (a[u] = null, !l && o--); + a.length = o, r[i] = a; + } + }), delete r[Iie], r; + }, t.prototype.getTheme = function() { + return this._theme; + }, t.prototype.getLocaleModel = function() { + return this._locale; + }, t.prototype.setUpdatePayload = function(r) { + this._payload = r; + }, t.prototype.getUpdatePayload = function() { + return this._payload; + }, t.prototype.getComponent = function(r, n) { + var i = this._componentsMap.get(r); + if (i) { + var a = i[n || 0]; + if (a) + return a; + if (n == null) { + for (var o = 0; o < i.length; o++) + if (i[o]) + return i[o]; + } + } + }, t.prototype.queryComponents = function(r) { + var n = r.mainType; + if (!n) + return []; + var i = r.index, a = r.id, o = r.name, l = this._componentsMap.get(n); + if (!l || !l.length) + return []; + var u; + return i != null ? (u = [], Ee(qa(i), function(d) { + l[d] && u.push(l[d]); + })) : a != null ? u = xie("id", a, l) : o != null ? u = xie("name", o, l) : u = Ma(l, function(d) { + return !!d; + }), Aie(u, r); + }, t.prototype.findComponents = function(r) { + var n = r.query, i = r.mainType, a = l(n), o = a ? this.queryComponents(a) : Ma(this._componentsMap.get(i), function(d) { + return !!d; + }); + return u(Aie(o, r)); + function l(d) { + var f = i + "Index", g = i + "Id", v = i + "Name"; + return d && (d[f] != null || d[g] != null || d[v] != null) ? { + mainType: i, + // subType will be filtered finally. + index: d[f], + id: d[g], + name: d[v] + } : null; + } + function u(d) { + return r.filter ? Ma(d, r.filter) : d; + } + }, t.prototype.eachComponent = function(r, n, i) { + var a = this._componentsMap; + if (Kr(r)) { + var o = n, l = r; + a.each(function(g, v) { + for (var y = 0; g && y < g.length; y++) { + var C = g[y]; + C && l.call(o, v, C, C.componentIndex); + } + }); + } else + for (var u = wr(r) ? a.get(r) : sn(r) ? this.findComponents(r) : null, d = 0; u && d < u.length; d++) { + var f = u[d]; + f && n.call(i, f, f.componentIndex); + } + }, t.prototype.getSeriesByName = function(r) { + var n = ml(r, null); + return Ma(this._componentsMap.get("series"), function(i) { + return !!i && n != null && i.name === n; + }); + }, t.prototype.getSeriesByIndex = function(r) { + return this._componentsMap.get("series")[r]; + }, t.prototype.getSeriesByType = function(r) { + return Ma(this._componentsMap.get("series"), function(n) { + return !!n && n.subType === r; + }); + }, t.prototype.getSeries = function() { + return Ma(this._componentsMap.get("series"), function(r) { + return !!r; + }); + }, t.prototype.getSeriesCount = function() { + return this._componentsCount.get("series"); + }, t.prototype.eachSeries = function(r, n) { + DA(this), Ee(this._seriesIndices, function(i) { + var a = this._componentsMap.get("series")[i]; + r.call(n, a, i); + }, this); + }, t.prototype.eachRawSeries = function(r, n) { + Ee(this._componentsMap.get("series"), function(i) { + i && r.call(n, i, i.componentIndex); + }); + }, t.prototype.eachSeriesByType = function(r, n, i) { + DA(this), Ee(this._seriesIndices, function(a) { + var o = this._componentsMap.get("series")[a]; + o.subType === r && n.call(i, o, a); + }, this); + }, t.prototype.eachRawSeriesByType = function(r, n, i) { + return Ee(this.getSeriesByType(r), n, i); + }, t.prototype.isSeriesFiltered = function(r) { + return DA(this), this._seriesIndicesMap.get(r.componentIndex) == null; + }, t.prototype.getCurrentSeriesIndices = function() { + return (this._seriesIndices || []).slice(); + }, t.prototype.filterSeries = function(r, n) { + DA(this); + var i = []; + Ee(this._seriesIndices, function(a) { + var o = this._componentsMap.get("series")[a]; + r.call(n, o, a) && i.push(a); + }, this), this._seriesIndices = i, this._seriesIndicesMap = $r(i); + }, t.prototype.restoreData = function(r) { + qk(this); + var n = this._componentsMap, i = []; + n.each(function(a, o) { + Mi.hasClass(o) && i.push(o); + }), Mi.topologicalTravel(i, Mi.getAllClassMainTypes(), function(a) { + Ee(n.get(a), function(o) { + o && (a !== "series" || !bHe(o, r)) && o.restoreData(); + }); + }); + }, t.internalField = function() { + qk = function(r) { + var n = r._seriesIndices = []; + Ee(r._componentsMap.get("series"), function(i) { + i && n.push(i.componentIndex); + }), r._seriesIndicesMap = $r(n); + }, DA = function(r) { + }, wie = function(r, n) { + r.option = {}, r.option[Iie] = SHe, r._componentsMap = $r({ + series: [] + }), r._componentsCount = $r(); + var i = n.aria; + sn(i) && i.enabled == null && (i.enabled = !0), EHe(n, r._theme.option), Qn(n, dHe, !1), r._mergeOption(n, null); + }; + }(), t; + }(Wa) +); +function bHe(e, t) { + if (t) { + var r = t.seriesIndex, n = t.seriesId, i = t.seriesName; + return r != null && e.componentIndex !== r || n != null && e.id !== n || i != null && e.name !== i; + } +} +function EHe(e, t) { + var r = e.color && !e.colorLayer; + Ee(t, function(n, i) { + i === "colorLayer" && r || Mi.hasClass(i) || (typeof n == "object" ? e[i] = e[i] ? Qn(e[i], n, !1) : cn(n) : e[i] == null && (e[i] = n)); + }); +} +function xie(e, t, r) { + if (qt(t)) { + var n = $r(); + return Ee(t, function(a) { + if (a != null) { + var o = ml(a, null); + o != null && n.set(a, !0); + } + }), Ma(r, function(a) { + return a && n.get(a[e]); + }); + } else { + var i = ml(t, null); + return Ma(r, function(a) { + return a && i != null && a[e] === i; + }); + } +} +function Aie(e, t) { + return t.hasOwnProperty("subType") ? Ma(e, function(r) { + return r && r.subType === t.subType; + }) : e; +} +function Rie(e) { + var t = $r(); + return e && Ee(qa(e.replaceMerge), function(r) { + t.set(r, !0); + }), { + replaceMergeMainTypeMap: t + }; +} +Fs(iye, G8); +const aye = iye; +var CHe = [ + "getDom", + "getZr", + "getWidth", + "getHeight", + "getDevicePixelRatio", + "dispatchAction", + "isSSR", + "isDisposed", + "on", + "off", + "getDataURL", + "getConnectedDataURL", + // 'getModel', + "getOption", + // 'getViewOfComponentModel', + // 'getViewOfSeriesModel', + "getId", + "updateLabelLayout" +], THe = ( + /** @class */ + function() { + function e(t) { + Ee(CHe, function(r) { + this[r] = Ar(t[r], t); + }, this); + } + return e; + }() +); +const oye = THe; +var sz = {}, wHe = ( + /** @class */ + function() { + function e() { + this._coordinateSystems = []; + } + return e.prototype.create = function(t, r) { + var n = []; + Ee(sz, function(i, a) { + var o = i.create(t, r); + n = n.concat(o || []); + }), this._coordinateSystems = n; + }, e.prototype.update = function(t, r) { + Ee(this._coordinateSystems, function(n) { + n.update && n.update(t, r); + }); + }, e.prototype.getCoordinateSystems = function() { + return this._coordinateSystems.slice(); + }, e.register = function(t, r) { + sz[t] = r; + }, e.get = function(t) { + return sz[t]; + }, e; + }() +); +const EI = wHe; +var IHe = /^(min|max)?(.+)$/, xHe = ( + /** @class */ + function() { + function e(t) { + this._timelineOptions = [], this._mediaList = [], this._currentMediaIndices = [], this._api = t; + } + return e.prototype.setOption = function(t, r, n) { + t && (Ee(qa(t.series), function(o) { + o && o.data && Nu(o.data) && aR(o.data); + }), Ee(qa(t.dataset), function(o) { + o && o.source && Nu(o.source) && aR(o.source); + })), t = cn(t); + var i = this._optionBackup, a = AHe(t, r, !i); + this._newBaseOption = a.baseOption, i ? (a.timelineOptions.length && (i.timelineOptions = a.timelineOptions), a.mediaList.length && (i.mediaList = a.mediaList), a.mediaDefault && (i.mediaDefault = a.mediaDefault)) : this._optionBackup = a; + }, e.prototype.mountOption = function(t) { + var r = this._optionBackup; + return this._timelineOptions = r.timelineOptions, this._mediaList = r.mediaList, this._mediaDefault = r.mediaDefault, this._currentMediaIndices = [], cn(t ? r.baseOption : this._newBaseOption); + }, e.prototype.getTimelineOption = function(t) { + var r, n = this._timelineOptions; + if (n.length) { + var i = t.getComponent("timeline"); + i && (r = cn( + // FIXME:TS as TimelineModel or quivlant interface + n[i.getCurrentIndex()] + )); + } + return r; + }, e.prototype.getMediaOption = function(t) { + var r = this._api.getWidth(), n = this._api.getHeight(), i = this._mediaList, a = this._mediaDefault, o = [], l = []; + if (!i.length && !a) + return l; + for (var u = 0, d = i.length; u < d; u++) + RHe(i[u].query, r, n) && o.push(u); + return !o.length && a && (o = [-1]), o.length && !OHe(o, this._currentMediaIndices) && (l = er(o, function(f) { + return cn(f === -1 ? a.option : i[f].option); + })), this._currentMediaIndices = o, l; + }, e; + }() +); +function AHe(e, t, r) { + var n = [], i, a, o = e.baseOption, l = e.timeline, u = e.options, d = e.media, f = !!e.media, g = !!(u || l || o && o.timeline); + o ? (a = o, a.timeline || (a.timeline = l)) : ((g || f) && (e.options = e.media = null), a = e), f && qt(d) && Ee(d, function(y) { + y && y.option && (y.query ? n.push(y) : i || (i = y)); + }), v(a), Ee(u, function(y) { + return v(y); + }), Ee(n, function(y) { + return v(y.option); + }); + function v(y) { + Ee(t, function(C) { + C(y, r); + }); + } + return { + baseOption: a, + timelineOptions: u || [], + mediaDefault: i, + mediaList: n + }; +} +function RHe(e, t, r) { + var n = { + width: t, + height: r, + aspectratio: t / r + // lower case for convenience. + }, i = !0; + return Ee(e, function(a, o) { + var l = o.match(IHe); + if (!(!l || !l[1] || !l[2])) { + var u = l[1], d = l[2].toLowerCase(); + DHe(n[d], a, u) || (i = !1); + } + }), i; +} +function DHe(e, t, r) { + return r === "min" ? e >= t : r === "max" ? e <= t : e === t; +} +function OHe(e, t) { + return e.join(",") === t.join(","); +} +const MHe = xHe; +var pp = Ee, SR = sn, Die = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"]; +function lz(e) { + var t = e && e.itemStyle; + if (t) + for (var r = 0, n = Die.length; r < n; r++) { + var i = Die[r], a = t.normal, o = t.emphasis; + a && a[i] && (e[i] = e[i] || {}, e[i].normal ? Qn(e[i].normal, a[i]) : e[i].normal = a[i], a[i] = null), o && o[i] && (e[i] = e[i] || {}, e[i].emphasis ? Qn(e[i].emphasis, o[i]) : e[i].emphasis = o[i], o[i] = null); + } +} +function Yc(e, t, r) { + if (e && e[t] && (e[t].normal || e[t].emphasis)) { + var n = e[t].normal, i = e[t].emphasis; + n && (r ? (e[t].normal = e[t].emphasis = null, Jr(e[t], n)) : e[t] = n), i && (e.emphasis = e.emphasis || {}, e.emphasis[t] = i, i.focus && (e.emphasis.focus = i.focus), i.blurScope && (e.emphasis.blurScope = i.blurScope)); + } +} +function p1(e) { + Yc(e, "itemStyle"), Yc(e, "lineStyle"), Yc(e, "areaStyle"), Yc(e, "label"), Yc(e, "labelLine"), Yc(e, "upperLabel"), Yc(e, "edgeLabel"); +} +function el(e, t) { + var r = SR(e) && e[t], n = SR(r) && r.textStyle; + if (n) + for (var i = 0, a = Lne.length; i < a; i++) { + var o = Lne[i]; + n.hasOwnProperty(o) && (r[o] = n[o]); + } +} +function uf(e) { + e && (p1(e), el(e, "label"), e.emphasis && el(e.emphasis, "label")); +} +function kHe(e) { + if (SR(e)) { + lz(e), p1(e), el(e, "label"), el(e, "upperLabel"), el(e, "edgeLabel"), e.emphasis && (el(e.emphasis, "label"), el(e.emphasis, "upperLabel"), el(e.emphasis, "edgeLabel")); + var t = e.markPoint; + t && (lz(t), uf(t)); + var r = e.markLine; + r && (lz(r), uf(r)); + var n = e.markArea; + n && uf(n); + var i = e.data; + if (e.type === "graph") { + i = i || e.nodes; + var a = e.links || e.edges; + if (a && !Nu(a)) + for (var o = 0; o < a.length; o++) + uf(a[o]); + Ee(e.categories, function(d) { + p1(d); + }); + } + if (i && !Nu(i)) + for (var o = 0; o < i.length; o++) + uf(i[o]); + if (t = e.markPoint, t && t.data) + for (var l = t.data, o = 0; o < l.length; o++) + uf(l[o]); + if (r = e.markLine, r && r.data) + for (var u = r.data, o = 0; o < u.length; o++) + qt(u[o]) ? (uf(u[o][0]), uf(u[o][1])) : uf(u[o]); + e.type === "gauge" ? (el(e, "axisLabel"), el(e, "title"), el(e, "detail")) : e.type === "treemap" ? (Yc(e.breadcrumb, "itemStyle"), Ee(e.levels, function(d) { + p1(d); + })) : e.type === "tree" && p1(e.leaves); + } +} +function Sm(e) { + return qt(e) ? e : e ? [e] : []; +} +function Oie(e) { + return (qt(e) ? e[0] : e) || {}; +} +function PHe(e, t) { + pp(Sm(e.series), function(n) { + SR(n) && kHe(n); + }); + var r = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"]; + t && r.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), pp(r, function(n) { + pp(Sm(e[n]), function(i) { + i && (el(i, "axisLabel"), el(i.axisPointer, "label")); + }); + }), pp(Sm(e.parallel), function(n) { + var i = n && n.parallelAxisDefault; + el(i, "axisLabel"), el(i && i.axisPointer, "label"); + }), pp(Sm(e.calendar), function(n) { + Yc(n, "itemStyle"), el(n, "dayLabel"), el(n, "monthLabel"), el(n, "yearLabel"); + }), pp(Sm(e.radar), function(n) { + el(n, "name"), n.name && n.axisName == null && (n.axisName = n.name, delete n.name), n.nameGap != null && n.axisNameGap == null && (n.axisNameGap = n.nameGap, delete n.nameGap); + }), pp(Sm(e.geo), function(n) { + SR(n) && (uf(n), pp(Sm(n.regions), function(i) { + uf(i); + })); + }), pp(Sm(e.timeline), function(n) { + uf(n), Yc(n, "label"), Yc(n, "itemStyle"), Yc(n, "controlStyle", !0); + var i = n.data; + qt(i) && Ee(i, function(a) { + sn(a) && (Yc(a, "label"), Yc(a, "itemStyle")); + }); + }), pp(Sm(e.toolbox), function(n) { + Yc(n, "iconStyle"), pp(n.feature, function(i) { + Yc(i, "iconStyle"); + }); + }), el(Oie(e.axisPointer), "label"), el(Oie(e.tooltip).axisPointer, "label"); +} +function NHe(e, t) { + for (var r = t.split(","), n = e, i = 0; i < r.length && (n = n && n[r[i]], n != null); i++) + ; + return n; +} +function LHe(e, t, r, n) { + for (var i = t.split(","), a = e, o, l = 0; l < i.length - 1; l++) + o = i[l], a[o] == null && (a[o] = {}), a = a[o]; + (n || a[i[l]] == null) && (a[i[l]] = r); +} +function Mie(e) { + e && Ee(FHe, function(t) { + t[0] in e && !(t[1] in e) && (e[t[1]] = e[t[0]]); + }); +} +var FHe = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]], BHe = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"], cz = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]]; +function OA(e) { + var t = e && e.itemStyle; + if (t) + for (var r = 0; r < cz.length; r++) { + var n = cz[r][1], i = cz[r][0]; + t[n] != null && (t[i] = t[n]); + } +} +function kie(e) { + e && e.alignTo === "edge" && e.margin != null && e.edgeDistance == null && (e.edgeDistance = e.margin); +} +function Pie(e) { + e && e.downplay && !e.blur && (e.blur = e.downplay); +} +function UHe(e) { + e && e.focusNodeAdjacency != null && (e.emphasis = e.emphasis || {}, e.emphasis.focus == null && (e.emphasis.focus = "adjacency")); +} +function sye(e, t) { + if (e) + for (var r = 0; r < e.length; r++) + t(e[r]), e[r] && sye(e[r].children, t); +} +function lye(e, t) { + PHe(e, t), e.series = qa(e.series), Ee(e.series, function(r) { + if (sn(r)) { + var n = r.type; + if (n === "line") + r.clipOverflow != null && (r.clip = r.clipOverflow); + else if (n === "pie" || n === "gauge") { + r.clockWise != null && (r.clockwise = r.clockWise), kie(r.label); + var i = r.data; + if (i && !Nu(i)) + for (var a = 0; a < i.length; a++) + kie(i[a]); + r.hoverOffset != null && (r.emphasis = r.emphasis || {}, (r.emphasis.scaleSize = null) && (r.emphasis.scaleSize = r.hoverOffset)); + } else if (n === "gauge") { + var o = NHe(r, "pointer.color"); + o != null && LHe(r, "itemStyle.color", o); + } else if (n === "bar") { + OA(r), OA(r.backgroundStyle), OA(r.emphasis); + var i = r.data; + if (i && !Nu(i)) + for (var a = 0; a < i.length; a++) + typeof i[a] == "object" && (OA(i[a]), OA(i[a] && i[a].emphasis)); + } else if (n === "sunburst") { + var l = r.highlightPolicy; + l && (r.emphasis = r.emphasis || {}, r.emphasis.focus || (r.emphasis.focus = l)), Pie(r), sye(r.data, Pie); + } else + n === "graph" || n === "sankey" ? UHe(r) : n === "map" && (r.mapType && !r.map && (r.map = r.mapType), r.mapLocation && Jr(r, r.mapLocation)); + r.hoverAnimation != null && (r.emphasis = r.emphasis || {}, r.emphasis && r.emphasis.scale == null && (r.emphasis.scale = r.hoverAnimation)), Mie(r); + } + }), e.dataRange && (e.visualMap = e.dataRange), Ee(BHe, function(r) { + var n = e[r]; + n && (qt(n) || (n = [n]), Ee(n, function(i) { + Mie(i); + })); + }); +} +function jHe(e) { + var t = $r(); + e.eachSeries(function(r) { + var n = r.get("stack"); + if (n) { + var i = t.get(n) || t.set(n, []), a = r.getData(), o = { + // Used for calculate axis extent automatically. + // TODO: Type getCalculationInfo return more specific type? + stackResultDimension: a.getCalculationInfo("stackResultDimension"), + stackedOverDimension: a.getCalculationInfo("stackedOverDimension"), + stackedDimension: a.getCalculationInfo("stackedDimension"), + stackedByDimension: a.getCalculationInfo("stackedByDimension"), + isStackedByIndex: a.getCalculationInfo("isStackedByIndex"), + data: a, + seriesModel: r + }; + if (!o.stackedDimension || !(o.isStackedByIndex || o.stackedByDimension)) + return; + i.length && a.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), i.push(o); + } + }), t.each($He); +} +function $He(e) { + Ee(e, function(t, r) { + var n = [], i = [NaN, NaN], a = [t.stackResultDimension, t.stackedOverDimension], o = t.data, l = t.isStackedByIndex, u = t.seriesModel.get("stackStrategy") || "samesign"; + o.modify(a, function(d, f, g) { + var v = o.get(t.stackedDimension, g); + if (isNaN(v)) + return i; + var y, C; + l ? C = o.getRawIndex(g) : y = o.get(t.stackedByDimension, g); + for (var A = NaN, S = r - 1; S >= 0; S--) { + var _ = e[S]; + if (l || (C = _.data.rawIndexOf(_.stackedByDimension, y)), C >= 0) { + var E = _.data.getByRawIndex(_.stackResultDimension, C); + if (u === "all" || u === "positive" && E > 0 || u === "negative" && E < 0 || u === "samesign" && v >= 0 && E > 0 || u === "samesign" && v <= 0 && E < 0) { + v = Rze(v, E), A = E; + break; + } + } + } + return n[0] = v, n[1] = A, n; + }); + }); +} +var UF = ( + /** @class */ + function() { + function e(t) { + this.data = t.data || (t.sourceFormat === dv ? {} : []), this.sourceFormat = t.sourceFormat || Jme, this.seriesLayoutBy = t.seriesLayoutBy || Qg, this.startIndex = t.startIndex || 0, this.dimensionsDetectedCount = t.dimensionsDetectedCount, this.metaRawOption = t.metaRawOption; + var r = this.dimensionsDefine = t.dimensionsDefine; + if (r) + for (var n = 0; n < r.length; n++) { + var i = r[n]; + i.type == null && tye(this, n) === gc.Must && (i.type = "ordinal"); + } + } + return e; + }() +); +function Y8(e) { + return e instanceof UF; +} +function lW(e, t, r) { + r = r || cye(e); + var n = t.seriesLayoutBy, i = zHe(e, r, n, t.sourceHeader, t.dimensions), a = new UF({ + data: e, + sourceFormat: r, + seriesLayoutBy: n, + dimensionsDefine: i.dimensionsDefine, + startIndex: i.startIndex, + dimensionsDetectedCount: i.dimensionsDetectedCount, + metaRawOption: cn(t) + }); + return a; +} +function X8(e) { + return new UF({ + data: e, + sourceFormat: Nu(e) ? c0 : Of + }); +} +function VHe(e) { + return new UF({ + data: e.data, + sourceFormat: e.sourceFormat, + seriesLayoutBy: e.seriesLayoutBy, + dimensionsDefine: cn(e.dimensionsDefine), + startIndex: e.startIndex, + dimensionsDetectedCount: e.dimensionsDetectedCount + }); +} +function cye(e) { + var t = Jme; + if (Nu(e)) + t = c0; + else if (qt(e)) { + e.length === 0 && (t = eu); + for (var r = 0, n = e.length; r < n; r++) { + var i = e[r]; + if (i != null) { + if (qt(i) || Nu(i)) { + t = eu; + break; + } else if (sn(i)) { + t = Mf; + break; + } + } + } + } else if (sn(e)) { + for (var a in e) + if (Lr(e, a) && Sc(e[a])) { + t = dv; + break; + } + } + return t; +} +function zHe(e, t, r, n, i) { + var a, o; + if (!e) + return { + dimensionsDefine: Nie(i), + startIndex: o, + dimensionsDetectedCount: a + }; + if (t === eu) { + var l = e; + n === "auto" || n == null ? Lie(function(d) { + d != null && d !== "-" && (wr(d) ? o == null && (o = 1) : o = 0); + }, r, l, 10) : o = Qi(n) ? n : n ? 1 : 0, !i && o === 1 && (i = [], Lie(function(d, f) { + i[f] = d != null ? d + "" : ""; + }, r, l, 1 / 0)), a = i ? i.length : r === bI ? l.length : l[0] ? l[0].length : null; + } else if (t === Mf) + i || (i = HHe(e)); + else if (t === dv) + i || (i = [], Ee(e, function(d, f) { + i.push(f); + })); + else if (t === Of) { + var u = hI(e[0]); + a = qt(u) && u.length || 1; + } + return { + startIndex: o, + dimensionsDefine: Nie(i), + dimensionsDetectedCount: a + }; +} +function HHe(e) { + for (var t = 0, r; t < e.length && !(r = e[t++]); ) + ; + if (r) + return Ri(r); +} +function Nie(e) { + if (e) { + var t = $r(); + return er(e, function(r, n) { + r = sn(r) ? r : { + name: r + }; + var i = { + name: r.name, + displayName: r.displayName, + type: r.type + }; + if (i.name == null) + return i; + i.name += "", i.displayName == null && (i.displayName = i.name); + var a = t.get(i.name); + return a ? i.name += "-" + a.count++ : t.set(i.name, { + count: 1 + }), i; + }); + } +} +function Lie(e, t, r, n) { + if (t === bI) + for (var i = 0; i < r.length && i < n; i++) + e(r[i] ? r[i][0] : null, i); + else + for (var a = r[0] || [], i = 0; i < a.length && i < n; i++) + e(a[i], i); +} +function uye(e) { + var t = e.sourceFormat; + return t === Mf || t === dv; +} +var ab, ob, sb, Fie, Bie, hye = ( + /** @class */ + function() { + function e(t, r) { + var n = Y8(t) ? t : X8(t); + this._source = n; + var i = this._data = n.data; + n.sourceFormat === c0 && (this._offset = 0, this._dimSize = r, this._data = i), Bie(this, i, n); + } + return e.prototype.getSource = function() { + return this._source; + }, e.prototype.count = function() { + return 0; + }, e.prototype.getItem = function(t, r) { + }, e.prototype.appendData = function(t) { + }, e.prototype.clean = function() { + }, e.protoInitialize = function() { + var t = e.prototype; + t.pure = !1, t.persistent = !0; + }(), e.internalField = function() { + var t; + Bie = function(o, l, u) { + var d = u.sourceFormat, f = u.seriesLayoutBy, g = u.startIndex, v = u.dimensionsDefine, y = Fie[K8(d, f)]; + if ($t(o, y), d === c0) + o.getItem = r, o.count = i, o.fillStorage = n; + else { + var C = dye(d, f); + o.getItem = Ar(C, null, l, g, v); + var A = fye(d, f); + o.count = Ar(A, null, l, g, v); + } + }; + var r = function(o, l) { + o = o - this._offset, l = l || []; + for (var u = this._data, d = this._dimSize, f = d * o, g = 0; g < d; g++) + l[g] = u[f + g]; + return l; + }, n = function(o, l, u, d) { + for (var f = this._data, g = this._dimSize, v = 0; v < g; v++) { + for (var y = d[v], C = y[0] == null ? 1 / 0 : y[0], A = y[1] == null ? -1 / 0 : y[1], S = l - o, _ = u[v], E = 0; E < S; E++) { + var I = f[E * g + v]; + _[o + E] = I, I < C && (C = I), I > A && (A = I); + } + y[0] = C, y[1] = A; + } + }, i = function() { + return this._data ? this._data.length / this._dimSize : 0; + }; + Fie = (t = {}, t[eu + "_" + Qg] = { + pure: !0, + appendData: a + }, t[eu + "_" + bI] = { + pure: !0, + appendData: function() { + throw new Error('Do not support appendData when set seriesLayoutBy: "row".'); + } + }, t[Mf] = { + pure: !0, + appendData: a + }, t[dv] = { + pure: !0, + appendData: function(o) { + var l = this._data; + Ee(o, function(u, d) { + for (var f = l[d] || (l[d] = []), g = 0; g < (u || []).length; g++) + f.push(u[g]); + }); + } + }, t[Of] = { + appendData: a + }, t[c0] = { + persistent: !1, + pure: !0, + appendData: function(o) { + this._data = o; + }, + // Clean self if data is already used. + clean: function() { + this._offset += this.count(), this._data = null; + } + }, t); + function a(o) { + for (var l = 0; l < o.length; l++) + this._data.push(o[l]); + } + }(), e; + }() +), Uie = function(e, t, r, n) { + return e[n]; +}, WHe = (ab = {}, ab[eu + "_" + Qg] = function(e, t, r, n) { + return e[n + t]; +}, ab[eu + "_" + bI] = function(e, t, r, n, i) { + n += t; + for (var a = i || [], o = e, l = 0; l < o.length; l++) { + var u = o[l]; + a[l] = u ? u[n] : null; + } + return a; +}, ab[Mf] = Uie, ab[dv] = function(e, t, r, n, i) { + for (var a = i || [], o = 0; o < r.length; o++) { + var l = r[o].name, u = e[l]; + a[o] = u ? u[n] : null; + } + return a; +}, ab[Of] = Uie, ab); +function dye(e, t) { + var r = WHe[K8(e, t)]; + return r; +} +var jie = function(e, t, r) { + return e.length; +}, GHe = (ob = {}, ob[eu + "_" + Qg] = function(e, t, r) { + return Math.max(0, e.length - t); +}, ob[eu + "_" + bI] = function(e, t, r) { + var n = e[0]; + return n ? Math.max(0, n.length - t) : 0; +}, ob[Mf] = jie, ob[dv] = function(e, t, r) { + var n = r[0].name, i = e[n]; + return i ? i.length : 0; +}, ob[Of] = jie, ob); +function fye(e, t) { + var r = GHe[K8(e, t)]; + return r; +} +var uz = function(e, t, r) { + return e[t]; +}, YHe = (sb = {}, sb[eu] = uz, sb[Mf] = function(e, t, r) { + return e[r]; +}, sb[dv] = uz, sb[Of] = function(e, t, r) { + var n = hI(e); + return n instanceof Array ? n[t] : n; +}, sb[c0] = uz, sb); +function pye(e) { + var t = YHe[e]; + return t; +} +function K8(e, t) { + return e === eu ? e + "_" + t : e; +} +function $w(e, t, r) { + if (e) { + var n = e.getRawDataItem(t); + if (n != null) { + var i = e.getStore(), a = i.getSource().sourceFormat; + if (r != null) { + var o = e.getDimensionIndex(r), l = i.getDimensionProperty(o); + return pye(a)(n, o, l); + } else { + var u = n; + return a === Of && (u = hI(n)), u; + } + } + } +} +var XHe = /\{@(.+?)\}/g, Z8 = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getDataParams = function(t, r) { + var n = this.getData(r), i = this.getRawValue(t, r), a = n.getRawIndex(t), o = n.getName(t), l = n.getRawDataItem(t), u = n.getItemVisual(t, "style"), d = u && u[n.getItemVisual(t, "drawType") || "fill"], f = u && u.stroke, g = this.mainType, v = g === "series", y = n.userOutput && n.userOutput.get(); + return { + componentType: g, + componentSubType: this.subType, + componentIndex: this.componentIndex, + seriesType: v ? this.subType : null, + seriesIndex: this.seriesIndex, + seriesId: v ? this.id : null, + seriesName: v ? this.name : null, + name: o, + dataIndex: a, + data: l, + dataType: r, + value: i, + color: d, + borderColor: f, + dimensionNames: y ? y.fullDimensions : null, + encode: y ? y.encode : null, + // Param name list for mapping `a`, `b`, `c`, `d`, `e` + $vars: ["seriesName", "name", "value"] + }; + }, e.prototype.getFormattedLabel = function(t, r, n, i, a, o) { + r = r || "normal"; + var l = this.getData(n), u = this.getDataParams(t, n); + if (o && (u.value = o.interpolatedValue), i != null && qt(u.value) && (u.value = u.value[i]), !a) { + var d = l.getItemModel(t); + a = d.get(r === "normal" ? ["label", "formatter"] : [r, "label", "formatter"]); + } + if (Kr(a)) + return u.status = r, u.dimensionIndex = i, a(u); + if (wr(a)) { + var f = V8(a, u); + return f.replace(XHe, function(g, v) { + var y = v.length, C = v; + C.charAt(0) === "[" && C.charAt(y - 1) === "]" && (C = +C.slice(1, y - 1)); + var A = $w(l, t, C); + if (o && qt(o.interpolatedValue)) { + var S = l.getDimensionIndex(C); + S >= 0 && (A = o.interpolatedValue[S]); + } + return A != null ? A + "" : ""; + }); + } + }, e.prototype.getRawValue = function(t, r) { + return $w(this.getData(r), t); + }, e.prototype.formatTooltip = function(t, r, n) { + }, e; + }() +); +function $ie(e) { + var t, r; + return sn(e) ? e.type && (r = e) : t = e, { + text: t, + // markers: markers || markersExisting, + frag: r + }; +} +function N1(e) { + return new KHe(e); +} +var KHe = ( + /** @class */ + function() { + function e(t) { + t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty, this._dirty = !0; + } + return e.prototype.perform = function(t) { + var r = this._upstream, n = t && t.skip; + if (this._dirty && r) { + var i = this.context; + i.data = i.outputData = r.context.outputData; + } + this.__pipeline && (this.__pipeline.currentTask = this); + var a; + this._plan && !n && (a = this._plan(this.context)); + var o = f(this._modBy), l = this._modDataCount || 0, u = f(t && t.modBy), d = t && t.modDataCount || 0; + (o !== u || l !== d) && (a = "reset"); + function f(E) { + return !(E >= 1) && (E = 1), E; + } + var g; + (this._dirty || a === "reset") && (this._dirty = !1, g = this._doReset(n)), this._modBy = u, this._modDataCount = d; + var v = t && t.step; + if (r ? this._dueEnd = r._outputDueEnd : this._dueEnd = this._count ? this._count(this.context) : 1 / 0, this._progress) { + var y = this._dueIndex, C = Math.min(v != null ? this._dueIndex + v : 1 / 0, this._dueEnd); + if (!n && (g || y < C)) { + var A = this._progress; + if (qt(A)) + for (var S = 0; S < A.length; S++) + this._doProgress(A[S], y, C, u, d); + else + this._doProgress(A, y, C, u, d); + } + this._dueIndex = C; + var _ = this._settedOutputEnd != null ? this._settedOutputEnd : C; + this._outputDueEnd = _; + } else + this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd; + return this.unfinished(); + }, e.prototype.dirty = function() { + this._dirty = !0, this._onDirty && this._onDirty(this.context); + }, e.prototype._doProgress = function(t, r, n, i, a) { + Vie.reset(r, n, i, a), this._callingProgress = t, this._callingProgress({ + start: r, + end: n, + count: n - r, + next: Vie.next + }, this.context); + }, e.prototype._doReset = function(t) { + this._dueIndex = this._outputDueEnd = this._dueEnd = 0, this._settedOutputEnd = null; + var r, n; + !t && this._reset && (r = this._reset(this.context), r && r.progress && (n = r.forceFirstProgress, r = r.progress), qt(r) && !r.length && (r = null)), this._progress = r, this._modBy = this._modDataCount = null; + var i = this._downstream; + return i && i.dirty(), n; + }, e.prototype.unfinished = function() { + return this._progress && this._dueIndex < this._dueEnd; + }, e.prototype.pipe = function(t) { + (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, t.dirty()); + }, e.prototype.dispose = function() { + this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0); + }, e.prototype.getUpstream = function() { + return this._upstream; + }, e.prototype.getDownstream = function() { + return this._downstream; + }, e.prototype.setOutputEnd = function(t) { + this._outputDueEnd = this._settedOutputEnd = t; + }, e; + }() +), Vie = function() { + var e, t, r, n, i, a = { + reset: function(u, d, f, g) { + t = u, e = d, r = f, n = g, i = Math.ceil(n / r), a.next = r > 1 && n > 0 ? l : o; + } + }; + return a; + function o() { + return t < e ? t++ : null; + } + function l() { + var u = t % i * r + Math.ceil(t / i), d = t >= e ? null : u < n ? u : t; + return t++, d; + } +}(); +function u0(e, t) { + var r = t && t.type; + return r === "ordinal" ? e : (r === "time" && !Qi(e) && e != null && e !== "-" && (e = +vd(e)), e == null || e === "" ? NaN : +e); +} +var ZHe = $r({ + number: function(e) { + return parseFloat(e); + }, + time: function(e) { + return +vd(e); + }, + trim: function(e) { + return wr(e) ? yf(e) : e; + } +}); +function gye(e) { + return ZHe.get(e); +} +var vye = { + lt: function(e, t) { + return e < t; + }, + lte: function(e, t) { + return e <= t; + }, + gt: function(e, t) { + return e > t; + }, + gte: function(e, t) { + return e >= t; + } +}, qHe = ( + /** @class */ + function() { + function e(t, r) { + if (!Qi(r)) { + var n = ""; + Ca(n); + } + this._opFn = vye[t], this._rvalFloat = ov(r); + } + return e.prototype.evaluate = function(t) { + return Qi(t) ? this._opFn(t, this._rvalFloat) : this._opFn(ov(t), this._rvalFloat); + }, e; + }() +), mye = ( + /** @class */ + function() { + function e(t, r) { + var n = t === "desc"; + this._resultLT = n ? 1 : -1, r == null && (r = n ? "min" : "max"), this._incomparable = r === "min" ? -1 / 0 : 1 / 0; + } + return e.prototype.evaluate = function(t, r) { + var n = Qi(t) ? t : ov(t), i = Qi(r) ? r : ov(r), a = isNaN(n), o = isNaN(i); + if (a && (n = this._incomparable), o && (i = this._incomparable), a && o) { + var l = wr(t), u = wr(r); + l && (n = u ? t : 0), u && (i = l ? r : 0); + } + return n < i ? this._resultLT : n > i ? -this._resultLT : 0; + }, e; + }() +), JHe = ( + /** @class */ + function() { + function e(t, r) { + this._rval = r, this._isEQ = t, this._rvalTypeof = typeof r, this._rvalFloat = ov(r); + } + return e.prototype.evaluate = function(t) { + var r = t === this._rval; + if (!r) { + var n = typeof t; + n !== this._rvalTypeof && (n === "number" || this._rvalTypeof === "number") && (r = ov(t) === this._rvalFloat); + } + return this._isEQ ? r : !r; + }, e; + }() +); +function QHe(e, t) { + return e === "eq" || e === "ne" ? new JHe(e === "eq", t) : Lr(vye, e) ? new qHe(e, t) : null; +} +var eWe = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getRawData = function() { + throw new Error("not supported"); + }, e.prototype.getRawDataItem = function(t) { + throw new Error("not supported"); + }, e.prototype.cloneRawData = function() { + }, e.prototype.getDimensionInfo = function(t) { + }, e.prototype.cloneAllDimensionInfo = function() { + }, e.prototype.count = function() { + }, e.prototype.retrieveValue = function(t, r) { + }, e.prototype.retrieveValueFromItem = function(t, r) { + }, e.prototype.convertValue = function(t, r) { + return u0(t, r); + }, e; + }() +); +function tWe(e, t) { + var r = new eWe(), n = e.data, i = r.sourceFormat = e.sourceFormat, a = e.startIndex, o = ""; + e.seriesLayoutBy !== Qg && Ca(o); + var l = [], u = {}, d = e.dimensionsDefine; + if (d) + Ee(d, function(A, S) { + var _ = A.name, E = { + index: S, + name: _, + displayName: A.displayName + }; + if (l.push(E), _ != null) { + var I = ""; + Lr(u, _) && Ca(I), u[_] = E; + } + }); + else + for (var f = 0; f < e.dimensionsDetectedCount; f++) + l.push({ + index: f + }); + var g = dye(i, Qg); + t.__isBuiltIn && (r.getRawDataItem = function(A) { + return g(n, a, l, A); + }, r.getRawData = Ar(rWe, null, e)), r.cloneRawData = Ar(nWe, null, e); + var v = fye(i, Qg); + r.count = Ar(v, null, n, a, l); + var y = pye(i); + r.retrieveValue = function(A, S) { + var _ = g(n, a, l, A); + return C(_, S); + }; + var C = r.retrieveValueFromItem = function(A, S) { + if (A != null) { + var _ = l[S]; + if (_) + return y(A, S, _.name); + } + }; + return r.getDimensionInfo = Ar(iWe, null, l, u), r.cloneAllDimensionInfo = Ar(aWe, null, l), r; +} +function rWe(e) { + var t = e.sourceFormat; + if (!q8(t)) { + var r = ""; + Ca(r); + } + return e.data; +} +function nWe(e) { + var t = e.sourceFormat, r = e.data; + if (!q8(t)) { + var n = ""; + Ca(n); + } + if (t === eu) { + for (var i = [], a = 0, o = r.length; a < o; a++) + i.push(r[a].slice()); + return i; + } else if (t === Mf) { + for (var i = [], a = 0, o = r.length; a < o; a++) + i.push($t({}, r[a])); + return i; + } +} +function iWe(e, t, r) { + if (r != null) { + if (Qi(r) || !isNaN(r) && !Lr(t, r)) + return e[r]; + if (Lr(t, r)) + return t[r]; + } +} +function aWe(e) { + return cn(e); +} +var yye = $r(); +function oWe(e) { + e = cn(e); + var t = e.type, r = ""; + t || Ca(r); + var n = t.split(":"); + n.length !== 2 && Ca(r); + var i = !1; + n[0] === "echarts" && (t = n[1], i = !0), e.__isBuiltIn = i, yye.set(t, e); +} +function sWe(e, t, r) { + var n = qa(e), i = n.length, a = ""; + i || Ca(a); + for (var o = 0, l = i; o < l; o++) { + var u = n[o]; + t = lWe(u, t), o !== l - 1 && (t.length = Math.max(t.length, 1)); + } + return t; +} +function lWe(e, t, r, n) { + var i = ""; + t.length || Ca(i), sn(e) || Ca(i); + var a = e.type, o = yye.get(a); + o || Ca(i); + var l = er(t, function(d) { + return tWe(d, o); + }), u = qa(o.transform({ + upstream: l[0], + upstreamList: l, + config: cn(e.config) + })); + return er(u, function(d, f) { + var g = ""; + sn(d) || Ca(g), d.data || Ca(g); + var v = cye(d.data); + q8(v) || Ca(g); + var y, C = t[0]; + if (C && f === 0 && !d.dimensions) { + var A = C.startIndex; + A && (d.data = C.data.slice(0, A).concat(d.data)), y = { + seriesLayoutBy: Qg, + sourceHeader: A, + dimensions: C.metaRawOption.dimensions + }; + } else + y = { + seriesLayoutBy: Qg, + sourceHeader: 0, + dimensions: d.dimensions + }; + return lW(d.data, y, null); + }); +} +function q8(e) { + return e === eu || e === Mf; +} +var jF = "undefined", cWe = typeof Uint32Array === jF ? Array : Uint32Array, uWe = typeof Uint16Array === jF ? Array : Uint16Array, _ye = typeof Int32Array === jF ? Array : Int32Array, zie = typeof Float64Array === jF ? Array : Float64Array, Sye = { + float: zie, + int: _ye, + // Ordinal data type can be string or int + ordinal: Array, + number: Array, + time: zie +}, hz; +function MA(e) { + return e > 65535 ? cWe : uWe; +} +function xT() { + return [1 / 0, -1 / 0]; +} +function hWe(e) { + var t = e.constructor; + return t === Array ? e.slice() : new t(e); +} +function Hie(e, t, r, n, i) { + var a = Sye[r || "float"]; + if (i) { + var o = e[t], l = o && o.length; + if (l !== n) { + for (var u = new a(n), d = 0; d < l; d++) + u[d] = o[d]; + e[t] = u; + } + } else + e[t] = new a(n); +} +var dWe = ( + /** @class */ + function() { + function e() { + this._chunks = [], this._rawExtent = [], this._extent = [], this._count = 0, this._rawCount = 0, this._calcDimNameToIdx = $r(); + } + return e.prototype.initData = function(t, r, n) { + this._provider = t, this._chunks = [], this._indices = null, this.getRawIndex = this._getRawIdxIdentity; + var i = t.getSource(), a = this.defaultDimValueGetter = hz[i.sourceFormat]; + this._dimValueGetter = n || a, this._rawExtent = [], uye(i), this._dimensions = er(r, function(o) { + return { + // Only pick these two props. Not leak other properties like orderMeta. + type: o.type, + property: o.property + }; + }), this._initDataFromProvider(0, t.count()); + }, e.prototype.getProvider = function() { + return this._provider; + }, e.prototype.getSource = function() { + return this._provider.getSource(); + }, e.prototype.ensureCalculationDimension = function(t, r) { + var n = this._calcDimNameToIdx, i = this._dimensions, a = n.get(t); + if (a != null) { + if (i[a].type === r) + return a; + } else + a = i.length; + return i[a] = { + type: r + }, n.set(t, a), this._chunks[a] = new Sye[r || "float"](this._rawCount), this._rawExtent[a] = xT(), a; + }, e.prototype.collectOrdinalMeta = function(t, r) { + var n = this._chunks[t], i = this._dimensions[t], a = this._rawExtent, o = i.ordinalOffset || 0, l = n.length; + o === 0 && (a[t] = xT()); + for (var u = a[t], d = o; d < l; d++) { + var f = n[d] = r.parseAndCollect(n[d]); + isNaN(f) || (u[0] = Math.min(f, u[0]), u[1] = Math.max(f, u[1])); + } + i.ordinalMeta = r, i.ordinalOffset = l, i.type = "ordinal"; + }, e.prototype.getOrdinalMeta = function(t) { + var r = this._dimensions[t], n = r.ordinalMeta; + return n; + }, e.prototype.getDimensionProperty = function(t) { + var r = this._dimensions[t]; + return r && r.property; + }, e.prototype.appendData = function(t) { + var r = this._provider, n = this.count(); + r.appendData(t); + var i = r.count(); + return r.persistent || (i += n), n < i && this._initDataFromProvider(n, i, !0), [n, i]; + }, e.prototype.appendValues = function(t, r) { + for (var n = this._chunks, i = this._dimensions, a = i.length, o = this._rawExtent, l = this.count(), u = l + Math.max(t.length, r || 0), d = 0; d < a; d++) { + var f = i[d]; + Hie(n, d, f.type, u, !0); + } + for (var g = [], v = l; v < u; v++) + for (var y = v - l, C = 0; C < a; C++) { + var f = i[C], A = hz.arrayRows.call(this, t[y] || g, f.property, y, C); + n[C][v] = A; + var S = o[C]; + A < S[0] && (S[0] = A), A > S[1] && (S[1] = A); + } + return this._rawCount = this._count = u, { + start: l, + end: u + }; + }, e.prototype._initDataFromProvider = function(t, r, n) { + for (var i = this._provider, a = this._chunks, o = this._dimensions, l = o.length, u = this._rawExtent, d = er(o, function(E) { + return E.property; + }), f = 0; f < l; f++) { + var g = o[f]; + u[f] || (u[f] = xT()), Hie(a, f, g.type, r, n); + } + if (i.fillStorage) + i.fillStorage(t, r, a, u); + else + for (var v = [], y = t; y < r; y++) { + v = i.getItem(y, v); + for (var C = 0; C < l; C++) { + var A = a[C], S = this._dimValueGetter(v, d[C], y, C); + A[y] = S; + var _ = u[C]; + S < _[0] && (_[0] = S), S > _[1] && (_[1] = S); + } + } + !i.persistent && i.clean && i.clean(), this._rawCount = this._count = r, this._extent = []; + }, e.prototype.count = function() { + return this._count; + }, e.prototype.get = function(t, r) { + if (!(r >= 0 && r < this._count)) + return NaN; + var n = this._chunks[t]; + return n ? n[this.getRawIndex(r)] : NaN; + }, e.prototype.getValues = function(t, r) { + var n = [], i = []; + if (r == null) { + r = t, t = []; + for (var a = 0; a < this._dimensions.length; a++) + i.push(a); + } else + i = t; + for (var a = 0, o = i.length; a < o; a++) + n.push(this.get(i[a], r)); + return n; + }, e.prototype.getByRawIndex = function(t, r) { + if (!(r >= 0 && r < this._rawCount)) + return NaN; + var n = this._chunks[t]; + return n ? n[r] : NaN; + }, e.prototype.getSum = function(t) { + var r = this._chunks[t], n = 0; + if (r) + for (var i = 0, a = this.count(); i < a; i++) { + var o = this.get(t, i); + isNaN(o) || (n += o); + } + return n; + }, e.prototype.getMedian = function(t) { + var r = []; + this.each([t], function(a) { + isNaN(a) || r.push(a); + }); + var n = r.sort(function(a, o) { + return a - o; + }), i = this.count(); + return i === 0 ? 0 : i % 2 === 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2; + }, e.prototype.indexOfRawIndex = function(t) { + if (t >= this._rawCount || t < 0) + return -1; + if (!this._indices) + return t; + var r = this._indices, n = r[t]; + if (n != null && n < this._count && n === t) + return t; + for (var i = 0, a = this._count - 1; i <= a; ) { + var o = (i + a) / 2 | 0; + if (r[o] < t) + i = o + 1; + else if (r[o] > t) + a = o - 1; + else + return o; + } + return -1; + }, e.prototype.indicesOfNearest = function(t, r, n) { + var i = this._chunks, a = i[t], o = []; + if (!a) + return o; + n == null && (n = 1 / 0); + for (var l = 1 / 0, u = -1, d = 0, f = 0, g = this.count(); f < g; f++) { + var v = this.getRawIndex(f), y = r - a[v], C = Math.abs(y); + C <= n && ((C < l || C === l && y >= 0 && u < 0) && (l = C, u = y, d = 0), y === u && (o[d++] = f)); + } + return o.length = d, o; + }, e.prototype.getIndices = function() { + var t, r = this._indices; + if (r) { + var n = r.constructor, i = this._count; + if (n === Array) { + t = new n(i); + for (var a = 0; a < i; a++) + t[a] = r[a]; + } else + t = new n(r.buffer, 0, i); + } else { + var n = MA(this._rawCount); + t = new n(this.count()); + for (var a = 0; a < t.length; a++) + t[a] = a; + } + return t; + }, e.prototype.filter = function(t, r) { + if (!this._count) + return this; + for (var n = this.clone(), i = n.count(), a = MA(n._rawCount), o = new a(i), l = [], u = t.length, d = 0, f = t[0], g = n._chunks, v = 0; v < i; v++) { + var y = void 0, C = n.getRawIndex(v); + if (u === 0) + y = r(v); + else if (u === 1) { + var A = g[f][C]; + y = r(A, v); + } else { + for (var S = 0; S < u; S++) + l[S] = g[t[S]][C]; + l[S] = v, y = r.apply(null, l); + } + y && (o[d++] = C); + } + return d < i && (n._indices = o), n._count = d, n._extent = [], n._updateGetRawIdx(), n; + }, e.prototype.selectRange = function(t) { + var r = this.clone(), n = r._count; + if (!n) + return this; + var i = Ri(t), a = i.length; + if (!a) + return this; + var o = r.count(), l = MA(r._rawCount), u = new l(o), d = 0, f = i[0], g = t[f][0], v = t[f][1], y = r._chunks, C = !1; + if (!r._indices) { + var A = 0; + if (a === 1) { + for (var S = y[i[0]], _ = 0; _ < n; _++) { + var E = S[_]; + (E >= g && E <= v || isNaN(E)) && (u[d++] = A), A++; + } + C = !0; + } else if (a === 2) { + for (var S = y[i[0]], I = y[i[1]], w = t[i[1]][0], x = t[i[1]][1], _ = 0; _ < n; _++) { + var E = S[_], b = I[_]; + (E >= g && E <= v || isNaN(E)) && (b >= w && b <= x || isNaN(b)) && (u[d++] = A), A++; + } + C = !0; + } + } + if (!C) + if (a === 1) + for (var _ = 0; _ < o; _++) { + var R = r.getRawIndex(_), E = y[i[0]][R]; + (E >= g && E <= v || isNaN(E)) && (u[d++] = R); + } + else + for (var _ = 0; _ < o; _++) { + for (var M = !0, R = r.getRawIndex(_), O = 0; O < a; O++) { + var P = i[O], E = y[P][R]; + (E < t[P][0] || E > t[P][1]) && (M = !1); + } + M && (u[d++] = r.getRawIndex(_)); + } + return d < o && (r._indices = u), r._count = d, r._extent = [], r._updateGetRawIdx(), r; + }, e.prototype.map = function(t, r) { + var n = this.clone(t); + return this._updateDims(n, t, r), n; + }, e.prototype.modify = function(t, r) { + this._updateDims(this, t, r); + }, e.prototype._updateDims = function(t, r, n) { + for (var i = t._chunks, a = [], o = r.length, l = t.count(), u = [], d = t._rawExtent, f = 0; f < r.length; f++) + d[r[f]] = xT(); + for (var g = 0; g < l; g++) { + for (var v = t.getRawIndex(g), y = 0; y < o; y++) + u[y] = i[r[y]][v]; + u[o] = g; + var C = n && n.apply(null, u); + if (C != null) { + typeof C != "object" && (a[0] = C, C = a); + for (var f = 0; f < C.length; f++) { + var A = r[f], S = C[f], _ = d[A], E = i[A]; + E && (E[v] = S), S < _[0] && (_[0] = S), S > _[1] && (_[1] = S); + } + } + } + }, e.prototype.lttbDownSample = function(t, r) { + var n = this.clone([t], !0), i = n._chunks, a = i[t], o = this.count(), l = 0, u = Math.floor(1 / r), d = this.getRawIndex(0), f, g, v, y = new (MA(this._rawCount))(Math.min((Math.ceil(o / u) + 2) * 2, o)); + y[l++] = d; + for (var C = 1; C < o - 1; C += u) { + for (var A = Math.min(C + u, o - 1), S = Math.min(C + u * 2, o), _ = (S + A) / 2, E = 0, I = A; I < S; I++) { + var w = this.getRawIndex(I), x = a[w]; + isNaN(x) || (E += x); + } + E /= S - A; + var b = C, R = Math.min(C + u, o), M = C - 1, O = a[d]; + f = -1, v = b; + for (var P = -1, B = 0, I = b; I < R; I++) { + var w = this.getRawIndex(I), x = a[w]; + if (isNaN(x)) { + B++, P < 0 && (P = w); + continue; + } + g = Math.abs((M - _) * (x - O) - (M - I) * (E - O)), g > f && (f = g, v = w); + } + B > 0 && B < R - b && (y[l++] = Math.min(P, v), v = Math.max(P, v)), y[l++] = v, d = v; + } + return y[l++] = this.getRawIndex(o - 1), n._count = l, n._indices = y, n.getRawIndex = this._getRawIdx, n; + }, e.prototype.downSample = function(t, r, n, i) { + for (var a = this.clone([t], !0), o = a._chunks, l = [], u = Math.floor(1 / r), d = o[t], f = this.count(), g = a._rawExtent[t] = xT(), v = new (MA(this._rawCount))(Math.ceil(f / u)), y = 0, C = 0; C < f; C += u) { + u > f - C && (u = f - C, l.length = u); + for (var A = 0; A < u; A++) { + var S = this.getRawIndex(C + A); + l[A] = d[S]; + } + var _ = n(l), E = this.getRawIndex(Math.min(C + i(l, _) || 0, f - 1)); + d[E] = _, _ < g[0] && (g[0] = _), _ > g[1] && (g[1] = _), v[y++] = E; + } + return a._count = y, a._indices = v, a._updateGetRawIdx(), a; + }, e.prototype.each = function(t, r) { + if (this._count) + for (var n = t.length, i = this._chunks, a = 0, o = this.count(); a < o; a++) { + var l = this.getRawIndex(a); + switch (n) { + case 0: + r(a); + break; + case 1: + r(i[t[0]][l], a); + break; + case 2: + r(i[t[0]][l], i[t[1]][l], a); + break; + default: + for (var u = 0, d = []; u < n; u++) + d[u] = i[t[u]][l]; + d[u] = a, r.apply(null, d); + } + } + }, e.prototype.getDataExtent = function(t) { + var r = this._chunks[t], n = xT(); + if (!r) + return n; + var i = this.count(), a = !this._indices, o; + if (a) + return this._rawExtent[t].slice(); + if (o = this._extent[t], o) + return o.slice(); + o = n; + for (var l = o[0], u = o[1], d = 0; d < i; d++) { + var f = this.getRawIndex(d), g = r[f]; + g < l && (l = g), g > u && (u = g); + } + return o = [l, u], this._extent[t] = o, o; + }, e.prototype.getRawDataItem = function(t) { + var r = this.getRawIndex(t); + if (this._provider.persistent) + return this._provider.getItem(r); + for (var n = [], i = this._chunks, a = 0; a < i.length; a++) + n.push(i[a][r]); + return n; + }, e.prototype.clone = function(t, r) { + var n = new e(), i = this._chunks, a = t && Cf(t, function(l, u) { + return l[u] = !0, l; + }, {}); + if (a) + for (var o = 0; o < i.length; o++) + n._chunks[o] = a[o] ? hWe(i[o]) : i[o]; + else + n._chunks = i; + return this._copyCommonProps(n), r || (n._indices = this._cloneIndices()), n._updateGetRawIdx(), n; + }, e.prototype._copyCommonProps = function(t) { + t._count = this._count, t._rawCount = this._rawCount, t._provider = this._provider, t._dimensions = this._dimensions, t._extent = cn(this._extent), t._rawExtent = cn(this._rawExtent); + }, e.prototype._cloneIndices = function() { + if (this._indices) { + var t = this._indices.constructor, r = void 0; + if (t === Array) { + var n = this._indices.length; + r = new t(n); + for (var i = 0; i < n; i++) + r[i] = this._indices[i]; + } else + r = new t(this._indices); + return r; + } + return null; + }, e.prototype._getRawIdxIdentity = function(t) { + return t; + }, e.prototype._getRawIdx = function(t) { + return t < this._count && t >= 0 ? this._indices[t] : -1; + }, e.prototype._updateGetRawIdx = function() { + this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity; + }, e.internalField = function() { + function t(r, n, i, a) { + return u0(r[a], this._dimensions[a]); + } + hz = { + arrayRows: t, + objectRows: function(r, n, i, a) { + return u0(r[n], this._dimensions[a]); + }, + keyedColumns: t, + original: function(r, n, i, a) { + var o = r && (r.value == null ? r : r.value); + return u0(o instanceof Array ? o[a] : o, this._dimensions[a]); + }, + typedArray: function(r, n, i, a) { + return r[a]; + } + }; + }(), e; + }() +); +const cW = dWe; +var bye = ( + /** @class */ + function() { + function e(t) { + this._sourceList = [], this._storeList = [], this._upstreamSignList = [], this._versionSignBase = 0, this._dirty = !0, this._sourceHost = t; + } + return e.prototype.dirty = function() { + this._setLocalSource([], []), this._storeList = [], this._dirty = !0; + }, e.prototype._setLocalSource = function(t, r) { + this._sourceList = t, this._upstreamSignList = r, this._versionSignBase++, this._versionSignBase > 9e10 && (this._versionSignBase = 0); + }, e.prototype._getVersionSign = function() { + return this._sourceHost.uid + "_" + this._versionSignBase; + }, e.prototype.prepareSource = function() { + this._isDirty() && (this._createSource(), this._dirty = !1); + }, e.prototype._createSource = function() { + this._setLocalSource([], []); + var t = this._sourceHost, r = this._getUpstreamSourceManagers(), n = !!r.length, i, a; + if (Jk(t)) { + var o = t, l = void 0, u = void 0, d = void 0; + if (n) { + var f = r[0]; + f.prepareSource(), d = f.getSource(), l = d.data, u = d.sourceFormat, a = [f._getVersionSign()]; + } else + l = o.get("data", !0), u = Nu(l) ? c0 : Of, a = []; + var g = this._getSourceMetaRawOption() || {}, v = d && d.metaRawOption || {}, y = Fn(g.seriesLayoutBy, v.seriesLayoutBy) || null, C = Fn(g.sourceHeader, v.sourceHeader), A = Fn(g.dimensions, v.dimensions), S = y !== v.seriesLayoutBy || !!C != !!v.sourceHeader || A; + i = S ? [lW(l, { + seriesLayoutBy: y, + sourceHeader: C, + dimensions: A + }, u)] : []; + } else { + var _ = t; + if (n) { + var E = this._applyTransform(r); + i = E.sourceList, a = E.upstreamSignList; + } else { + var I = _.get("source", !0); + i = [lW(I, this._getSourceMetaRawOption(), null)], a = []; + } + } + this._setLocalSource(i, a); + }, e.prototype._applyTransform = function(t) { + var r = this._sourceHost, n = r.get("transform", !0), i = r.get("fromTransformResult", !0); + if (i != null) { + var a = ""; + t.length !== 1 && Gie(a); + } + var o, l = [], u = []; + return Ee(t, function(d) { + d.prepareSource(); + var f = d.getSource(i || 0), g = ""; + i != null && !f && Gie(g), l.push(f), u.push(d._getVersionSign()); + }), n ? o = sWe(n, l, { + datasetIndex: r.componentIndex + }) : i != null && (o = [VHe(l[0])]), { + sourceList: o, + upstreamSignList: u + }; + }, e.prototype._isDirty = function() { + if (this._dirty) + return !0; + for (var t = this._getUpstreamSourceManagers(), r = 0; r < t.length; r++) { + var n = t[r]; + if ( + // Consider the case that there is ancestor diry, call it recursively. + // The performance is probably not an issue because usually the chain is not long. + n._isDirty() || this._upstreamSignList[r] !== n._getVersionSign() + ) + return !0; + } + }, e.prototype.getSource = function(t) { + t = t || 0; + var r = this._sourceList[t]; + if (!r) { + var n = this._getUpstreamSourceManagers(); + return n[0] && n[0].getSource(t); + } + return r; + }, e.prototype.getSharedDataStore = function(t) { + var r = t.makeStoreSchema(); + return this._innerGetDataStore(r.dimensions, t.source, r.hash); + }, e.prototype._innerGetDataStore = function(t, r, n) { + var i = 0, a = this._storeList, o = a[i]; + o || (o = a[i] = {}); + var l = o[n]; + if (!l) { + var u = this._getUpstreamSourceManagers()[0]; + Jk(this._sourceHost) && u ? l = u._innerGetDataStore(t, r, n) : (l = new cW(), l.initData(new hye(r, t.length), t)), o[n] = l; + } + return l; + }, e.prototype._getUpstreamSourceManagers = function() { + var t = this._sourceHost; + if (Jk(t)) { + var r = W8(t); + return r ? [r.getSourceManager()] : []; + } else + return er(pHe(t), function(n) { + return n.getSourceManager(); + }); + }, e.prototype._getSourceMetaRawOption = function() { + var t = this._sourceHost, r, n, i; + if (Jk(t)) + r = t.get("seriesLayoutBy", !0), n = t.get("sourceHeader", !0), i = t.get("dimensions", !0); + else if (!this._getUpstreamSourceManagers().length) { + var a = t; + r = a.get("seriesLayoutBy", !0), n = a.get("sourceHeader", !0), i = a.get("dimensions", !0); + } + return { + seriesLayoutBy: r, + sourceHeader: n, + dimensions: i + }; + }, e; + }() +); +function Wie(e) { + var t = e.option.transform; + t && aR(e.option.transform); +} +function Jk(e) { + return e.mainType === "series"; +} +function Gie(e) { + throw new Error(e); +} +var Eye = "line-height:1"; +function Cye(e, t) { + var r = e.color || "#6e7079", n = e.fontSize || 12, i = e.fontWeight || "400", a = e.color || "#464646", o = e.fontSize || 14, l = e.fontWeight || "900"; + return t === "html" ? { + // eslint-disable-next-line max-len + nameStyle: "font-size:" + Du(n + "") + "px;color:" + Du(r) + ";font-weight:" + Du(i + ""), + // eslint-disable-next-line max-len + valueStyle: "font-size:" + Du(o + "") + "px;color:" + Du(a) + ";font-weight:" + Du(l + "") + } : { + nameStyle: { + fontSize: n, + fill: r, + fontWeight: i + }, + valueStyle: { + fontSize: o, + fill: a, + fontWeight: l + } + }; +} +var fWe = [0, 10, 20, 30], pWe = ["", ` +`, ` + +`, ` + + +`]; +function Fl(e, t) { + return t.type = e, t; +} +function uW(e) { + return e.type === "section"; +} +function Tye(e) { + return uW(e) ? gWe : vWe; +} +function wye(e) { + if (uW(e)) { + var t = 0, r = e.blocks.length, n = r > 1 || r > 0 && !e.noHeader; + return Ee(e.blocks, function(i) { + var a = wye(i); + a >= t && (t = a + +(n && // 0 always can not be readable gap level. + (!a || uW(i) && !i.noHeader))); + }), t; + } + return 0; +} +function gWe(e, t, r, n) { + var i = t.noHeader, a = mWe(wye(t)), o = [], l = t.blocks || []; + Qc(!l || qt(l)), l = l || []; + var u = e.orderMode; + if (t.sortBlocks && u) { + l = l.slice(); + var d = { + valueAsc: "asc", + valueDesc: "desc" + }; + if (Lr(d, u)) { + var f = new mye(d[u], null); + l.sort(function(C, A) { + return f.evaluate(C.sortParam, A.sortParam); + }); + } else + u === "seriesDesc" && l.reverse(); + } + Ee(l, function(C, A) { + var S = t.valueFormatter, _ = Tye(C)( + // Inherit valueFormatter + S ? $t($t({}, e), { + valueFormatter: S + }) : e, + C, + A > 0 ? a.html : 0, + n + ); + _ != null && o.push(_); + }); + var g = e.renderMode === "richText" ? o.join(a.richText) : hW(o.join(""), i ? r : a.html); + if (i) + return g; + var v = aW(t.header, "ordinal", e.useUTC), y = Cye(n, e.renderMode).nameStyle; + return e.renderMode === "richText" ? Iye(e, v, y) + a.richText + g : hW('

    " + g, r); +} +function vWe(e, t, r, n) { + var i = e.renderMode, a = t.noName, o = t.noValue, l = !t.markerType, u = t.name, d = e.useUTC, f = t.valueFormatter || e.valueFormatter || function(w) { + return w = qt(w) ? w : [w], er(w, function(x, b) { + return aW(x, qt(y) ? y[b] : y, d); + }); + }; + if (!(a && o)) { + var g = l ? "" : e.markupStyleCreator.makeTooltipMarker(t.markerType, t.markerColor || "#333", i), v = a ? "" : aW(u, "ordinal", d), y = t.valueType, C = o ? [] : f(t.value, t.dataIndex), A = !l || !a, S = !l && a, _ = Cye(n, i), E = _.nameStyle, I = _.valueStyle; + return i === "richText" ? (l ? "" : g) + (a ? "" : Iye(e, v, E)) + (o ? "" : SWe(e, C, A, S, I)) : hW((l ? "" : g) + (a ? "" : yWe(v, !l, E)) + (o ? "" : _We(C, A, S, I)), r); + } +} +function Yie(e, t, r, n, i, a) { + if (e) { + var o = Tye(e), l = { + useUTC: i, + renderMode: r, + orderMode: n, + markupStyleCreator: t, + valueFormatter: e.valueFormatter + }; + return o(l, e, 0, a); + } +} +function mWe(e) { + return { + html: fWe[e], + richText: pWe[e] + }; +} +function hW(e, t) { + var r = '
    ', n = "margin: " + t + "px 0 0"; + return '
    ' + e + r + "
    "; +} +function yWe(e, t, r) { + var n = t ? "margin-left:2px" : ""; + return '' + Du(e) + ""; +} +function _We(e, t, r, n) { + var i = r ? "10px" : "20px", a = t ? "float:right;margin-left:" + i : ""; + return e = qt(e) ? e : [e], '' + er(e, function(o) { + return Du(o); + }).join("  ") + ""; +} +function Iye(e, t, r) { + return e.markupStyleCreator.wrapRichTextStyle(t, r); +} +function SWe(e, t, r, n, i) { + var a = [i], o = n ? 10 : 20; + return r && a.push({ + padding: [0, 0, 0, o], + align: "right" + }), e.markupStyleCreator.wrapRichTextStyle(qt(t) ? t.join(" ") : t, a); +} +function xye(e, t) { + var r = e.getData().getItemVisual(t, "style"), n = r[e.visualDrawType]; + return pE(n); +} +function Aye(e, t) { + var r = e.get("padding"); + return r != null ? r : t === "richText" ? [8, 10] : 10; +} +var dz = ( + /** @class */ + function() { + function e() { + this.richTextStyles = {}, this._nextStyleNameId = Rve(); + } + return e.prototype._generateStyleName = function() { + return "__EC_aUTo_" + this._nextStyleNameId++; + }, e.prototype.makeTooltipMarker = function(t, r, n) { + var i = n === "richText" ? this._generateStyleName() : null, a = Gme({ + color: r, + type: t, + renderMode: n, + markerId: i + }); + return wr(a) ? a : (this.richTextStyles[i] = a.style, a.content); + }, e.prototype.wrapRichTextStyle = function(t, r) { + var n = {}; + qt(r) ? Ee(r, function(a) { + return $t(n, a); + }) : $t(n, r); + var i = this._generateStyleName(); + return this.richTextStyles[i] = n, "{" + i + "|" + t + "}"; + }, e; + }() +); +function Rye(e) { + var t = e.series, r = e.dataIndex, n = e.multipleSeries, i = t.getData(), a = i.mapDimensionsAll("defaultedTooltip"), o = a.length, l = t.getRawValue(r), u = qt(l), d = xye(t, r), f, g, v, y; + if (o > 1 || u && !o) { + var C = bWe(l, t, r, a, d); + f = C.inlineValues, g = C.inlineValueTypes, v = C.blocks, y = C.inlineValues[0]; + } else if (o) { + var A = i.getDimensionInfo(a[0]); + y = f = $w(i, r, a[0]), g = A.type; + } else + y = f = u ? l[0] : l; + var S = y8(t), _ = S && t.name || "", E = i.getName(r), I = n ? _ : E; + return Fl("section", { + header: _, + // When series name is not specified, do not show a header line with only '-'. + // This case always happens in tooltip.trigger: 'item'. + noHeader: n || !S, + sortParam: y, + blocks: [Fl("nameValue", { + markerType: "item", + markerColor: d, + // Do not mix display seriesName and itemName in one tooltip, + // which might confuses users. + name: I, + // name dimension might be auto assigned, where the name might + // be not readable. So we check trim here. + noName: !yf(I), + value: f, + valueType: g, + dataIndex: r + })].concat(v || []) + }); +} +function bWe(e, t, r, n, i) { + var a = t.getData(), o = Cf(e, function(g, v, y) { + var C = a.getDimensionInfo(y); + return g = g || C && C.tooltip !== !1 && C.displayName != null; + }, !1), l = [], u = [], d = []; + n.length ? Ee(n, function(g) { + f($w(a, r, g), g); + }) : Ee(e, f); + function f(g, v) { + var y = a.getDimensionInfo(v); + !y || y.otherDims.tooltip === !1 || (o ? d.push(Fl("nameValue", { + markerType: "subItem", + markerColor: i, + name: y.displayName, + value: g, + valueType: y.type + })) : (l.push(g), u.push(y.type))); + } + return { + inlineValues: l, + inlineValueTypes: u, + blocks: d + }; +} +var M_ = ea(); +function Qk(e, t) { + return e.getName(t) || e.getId(t); +} +var DN = "__universalTransitionEnabled", $F = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r._selectedDataIndicesMap = {}, r; + } + return t.prototype.init = function(r, n, i) { + this.seriesIndex = this.componentIndex, this.dataTask = N1({ + count: CWe, + reset: TWe + }), this.dataTask.context = { + model: this + }, this.mergeDefaultAndTheme(r, i); + var a = M_(this).sourceManager = new bye(this); + a.prepareSource(); + var o = this.getInitialData(r, i); + Kie(o, this), this.dataTask.context.data = o, M_(this).dataBeforeProcessed = o, Xie(this), this._initSelectedMapFromData(o); + }, t.prototype.mergeDefaultAndTheme = function(r, n) { + var i = _R(this), a = i ? _I(r) : {}, o = this.subType; + Mi.hasClass(o) && (o += "Series"), Qn(r, n.getTheme().get(this.subType)), Qn(r, this.getDefaultOption()), uE(r, "label", ["show"]), this.fillDataTextStyle(r.data), i && m0(r, a, i); + }, t.prototype.mergeOption = function(r, n) { + r = Qn(this.option, r, !0), this.fillDataTextStyle(r.data); + var i = _R(this); + i && m0(this.option, r, i); + var a = M_(this).sourceManager; + a.dirty(), a.prepareSource(); + var o = this.getInitialData(r, n); + Kie(o, this), this.dataTask.dirty(), this.dataTask.context.data = o, M_(this).dataBeforeProcessed = o, Xie(this), this._initSelectedMapFromData(o); + }, t.prototype.fillDataTextStyle = function(r) { + if (r && !Nu(r)) + for (var n = ["show"], i = 0; i < r.length; i++) + r[i] && r[i].label && uE(r[i], "label", n); + }, t.prototype.getInitialData = function(r, n) { + }, t.prototype.appendData = function(r) { + var n = this.getRawData(); + n.appendData(r.data); + }, t.prototype.getData = function(r) { + var n = dW(this); + if (n) { + var i = n.context.data; + return r == null ? i : i.getLinkedData(r); + } else + return M_(this).data; + }, t.prototype.getAllData = function() { + var r = this.getData(); + return r && r.getLinkedDataAll ? r.getLinkedDataAll() : [{ + data: r + }]; + }, t.prototype.setData = function(r) { + var n = dW(this); + if (n) { + var i = n.context; + i.outputData = r, n !== this.dataTask && (i.data = r); + } + M_(this).data = r; + }, t.prototype.getEncode = function() { + var r = this.get("encode", !0); + if (r) + return $r(r); + }, t.prototype.getSourceManager = function() { + return M_(this).sourceManager; + }, t.prototype.getSource = function() { + return this.getSourceManager().getSource(); + }, t.prototype.getRawData = function() { + return M_(this).dataBeforeProcessed; + }, t.prototype.getColorBy = function() { + var r = this.get("colorBy"); + return r || "series"; + }, t.prototype.isColorBySeries = function() { + return this.getColorBy() === "series"; + }, t.prototype.getBaseAxis = function() { + var r = this.coordinateSystem; + return r && r.getBaseAxis && r.getBaseAxis(); + }, t.prototype.formatTooltip = function(r, n, i) { + return Rye({ + series: this, + dataIndex: r, + multipleSeries: n + }); + }, t.prototype.isAnimationEnabled = function() { + var r = this.ecModel; + if (Yi.node && !(r && r.ssr)) + return !1; + var n = this.getShallow("animation"); + return n && this.getData().count() > this.getShallow("animationThreshold") && (n = !1), !!n; + }, t.prototype.restoreData = function() { + this.dataTask.dirty(); + }, t.prototype.getColorFromPalette = function(r, n, i) { + var a = this.ecModel, o = G8.prototype.getColorFromPalette.call(this, r, n, i); + return o || (o = a.getColorFromPalette(r, n, i)), o; + }, t.prototype.coordDimToDataDim = function(r) { + return this.getRawData().mapDimensionsAll(r); + }, t.prototype.getProgressive = function() { + return this.get("progressive"); + }, t.prototype.getProgressiveThreshold = function() { + return this.get("progressiveThreshold"); + }, t.prototype.select = function(r, n) { + this._innerSelect(this.getData(n), r); + }, t.prototype.unselect = function(r, n) { + var i = this.option.selectedMap; + if (i) { + var a = this.option.selectedMode, o = this.getData(n); + if (a === "series" || i === "all") { + this.option.selectedMap = {}, this._selectedDataIndicesMap = {}; + return; + } + for (var l = 0; l < r.length; l++) { + var u = r[l], d = Qk(o, u); + i[d] = !1, this._selectedDataIndicesMap[d] = -1; + } + } + }, t.prototype.toggleSelect = function(r, n) { + for (var i = [], a = 0; a < r.length; a++) + i[0] = r[a], this.isSelected(r[a], n) ? this.unselect(i, n) : this.select(i, n); + }, t.prototype.getSelectedDataIndices = function() { + if (this.option.selectedMap === "all") + return [].slice.call(this.getData().getIndices()); + for (var r = this._selectedDataIndicesMap, n = Ri(r), i = [], a = 0; a < n.length; a++) { + var o = r[n[a]]; + o >= 0 && i.push(o); + } + return i; + }, t.prototype.isSelected = function(r, n) { + var i = this.option.selectedMap; + if (!i) + return !1; + var a = this.getData(n); + return (i === "all" || i[Qk(a, r)]) && !a.getItemModel(r).get(["select", "disabled"]); + }, t.prototype.isUniversalTransitionEnabled = function() { + if (this[DN]) + return !0; + var r = this.option.universalTransition; + return r ? r === !0 ? !0 : r && r.enabled : !1; + }, t.prototype._innerSelect = function(r, n) { + var i, a, o = this.option, l = o.selectedMode, u = n.length; + if (!(!l || !u)) { + if (l === "series") + o.selectedMap = "all"; + else if (l === "multiple") { + sn(o.selectedMap) || (o.selectedMap = {}); + for (var d = o.selectedMap, f = 0; f < u; f++) { + var g = n[f], v = Qk(r, g); + d[v] = !0, this._selectedDataIndicesMap[v] = r.getRawIndex(g); + } + } else if (l === "single" || l === !0) { + var y = n[u - 1], v = Qk(r, y); + o.selectedMap = (i = {}, i[v] = !0, i), this._selectedDataIndicesMap = (a = {}, a[v] = r.getRawIndex(y), a); + } + } + }, t.prototype._initSelectedMapFromData = function(r) { + if (!this.option.selectedMap) { + var n = []; + r.hasItemOption && r.each(function(i) { + var a = r.getRawDataItem(i); + a && a.selected && n.push(i); + }), n.length > 0 && this._innerSelect(r, n); + } + }, t.registerClass = function(r) { + return Mi.registerClass(r); + }, t.protoInitialize = function() { + var r = t.prototype; + r.type = "series.__base__", r.seriesIndex = 0, r.ignoreStyleOnData = !1, r.hasSymbolVisual = !1, r.defaultSymbol = "circle", r.visualStyleAccessPath = "itemStyle", r.visualDrawType = "fill"; + }(), t; + }(Mi) +); +Fs($F, Z8); +Fs($F, G8); +Bve($F, Mi); +function Xie(e) { + var t = e.name; + y8(e) || (e.name = EWe(e) || t); +} +function EWe(e) { + var t = e.getRawData(), r = t.mapDimensionsAll("seriesName"), n = []; + return Ee(r, function(i) { + var a = t.getDimensionInfo(i); + a.displayName && n.push(a.displayName); + }), n.join(" "); +} +function CWe(e) { + return e.model.getRawData().count(); +} +function TWe(e) { + var t = e.model; + return t.setData(t.getRawData().cloneShallow()), wWe; +} +function wWe(e, t) { + t.outputData && e.end > t.outputData.count() && t.model.getRawData().cloneShallow(t.outputData); +} +function Kie(e, t) { + Ee(oR(e.CHANGABLE_METHODS, e.DOWNSAMPLE_METHODS), function(r) { + e.wrapMethod(r, Ln(IWe, t)); + }); +} +function IWe(e, t) { + var r = dW(e); + return r && r.setOutputEnd((t || this).count()), t; +} +function dW(e) { + var t = (e.ecModel || {}).scheduler, r = t && t.getPipeline(e.uid); + if (r) { + var n = r.currentTask; + if (n) { + var i = n.agentStubMap; + i && (n = i.get(e.uid)); + } + return n; + } +} +const fo = $F; +var J8 = ( + /** @class */ + function() { + function e() { + this.group = new _n(), this.uid = yI("viewComponent"); + } + return e.prototype.init = function(t, r) { + }, e.prototype.render = function(t, r, n, i) { + }, e.prototype.dispose = function(t, r) { + }, e.prototype.updateView = function(t, r, n, i) { + }, e.prototype.updateLayout = function(t, r, n, i) { + }, e.prototype.updateVisual = function(t, r, n, i) { + }, e.prototype.toggleBlurSeries = function(t, r, n) { + }, e.prototype.eachRendered = function(t) { + var r = this.group; + r && r.traverse(t); + }, e; + }() +); +S8(J8); +bF(J8); +const Co = J8; +function CI() { + var e = ea(); + return function(t) { + var r = e(t), n = t.pipelineContext, i = !!r.large, a = !!r.progressiveRender, o = r.large = !!(n && n.large), l = r.progressiveRender = !!(n && n.progressiveRender); + return (i !== o || a !== l) && "reset"; + }; +} +var Dye = ea(), xWe = CI(), Q8 = ( + /** @class */ + function() { + function e() { + this.group = new _n(), this.uid = yI("viewChart"), this.renderTask = N1({ + plan: AWe, + reset: RWe + }), this.renderTask.context = { + view: this + }; + } + return e.prototype.init = function(t, r) { + }, e.prototype.render = function(t, r, n, i) { + }, e.prototype.highlight = function(t, r, n, i) { + var a = t.getData(i && i.dataType); + a && qie(a, i, "emphasis"); + }, e.prototype.downplay = function(t, r, n, i) { + var a = t.getData(i && i.dataType); + a && qie(a, i, "normal"); + }, e.prototype.remove = function(t, r) { + this.group.removeAll(); + }, e.prototype.dispose = function(t, r) { + }, e.prototype.updateView = function(t, r, n, i) { + this.render(t, r, n, i); + }, e.prototype.updateLayout = function(t, r, n, i) { + this.render(t, r, n, i); + }, e.prototype.updateVisual = function(t, r, n, i) { + this.render(t, r, n, i); + }, e.prototype.eachRendered = function(t) { + D0(this.group, t); + }, e.markUpdateMethod = function(t, r) { + Dye(t).updateMethod = r; + }, e.protoInitialize = function() { + var t = e.prototype; + t.type = "chart"; + }(), e; + }() +); +function Zie(e, t, r) { + e && vR(e) && (t === "emphasis" ? Hm : Wm)(e, r); +} +function qie(e, t, r) { + var n = hE(e, t), i = t && t.highlightKey != null ? n4e(t.highlightKey) : null; + n != null ? Ee(qa(n), function(a) { + Zie(e.getItemGraphicEl(a), r, i); + }) : e.eachItemGraphicEl(function(a) { + Zie(a, r, i); + }); +} +S8(Q8); +bF(Q8); +function AWe(e) { + return xWe(e.model); +} +function RWe(e) { + var t = e.model, r = e.ecModel, n = e.api, i = e.payload, a = t.pipelineContext.progressiveRender, o = e.view, l = i && Dye(i).updateMethod, u = a ? "incrementalPrepareRender" : l && o[l] ? l : "render"; + return u !== "render" && o[u](t, r, n, i), DWe[u]; +} +var DWe = { + incrementalPrepareRender: { + progress: function(e, t) { + t.view.incrementalRender(e, t.model, t.ecModel, t.api, t.payload); + } + }, + render: { + // Put view.render in `progress` to support appendData. But in this case + // view.render should not be called in reset, otherwise it will be called + // twise. Use `forceFirstProgress` to make sure that view.render is called + // in any cases. + forceFirstProgress: !0, + progress: function(e, t) { + t.view.render(t.model, t.ecModel, t.api, t.payload); + } + } +}; +const Ya = Q8; +var DL = "\0__throttleOriginMethod", Jie = "\0__throttleRate", Qie = "\0__throttleType"; +function gE(e, t, r) { + var n, i = 0, a = 0, o = null, l, u, d, f; + t = t || 0; + function g() { + a = (/* @__PURE__ */ new Date()).getTime(), o = null, e.apply(u, d || []); + } + var v = function() { + for (var y = [], C = 0; C < arguments.length; C++) + y[C] = arguments[C]; + n = (/* @__PURE__ */ new Date()).getTime(), u = this, d = y; + var A = f || t, S = f || r; + f = null, l = n - (S ? i : a) - A, clearTimeout(o), S ? o = setTimeout(g, A) : l >= 0 ? g() : o = setTimeout(g, -l), i = n; + }; + return v.clear = function() { + o && (clearTimeout(o), o = null); + }, v.debounceNextCall = function(y) { + f = y; + }, v; +} +function TI(e, t, r, n) { + var i = e[t]; + if (i) { + var a = i[DL] || i, o = i[Qie], l = i[Jie]; + if (l !== r || o !== n) { + if (r == null || !n) + return e[t] = a; + i = e[t] = gE(a, r, n === "debounce"), i[DL] = a, i[Qie] = n, i[Jie] = r; + } + return i; + } +} +function bR(e, t) { + var r = e[t]; + r && r[DL] && (r.clear && r.clear(), e[t] = r[DL]); +} +var eae = ea(), tae = { + itemStyle: dE(Lme, !0), + lineStyle: dE(Nme, !0) +}, OWe = { + lineStyle: "stroke", + itemStyle: "fill" +}; +function Oye(e, t) { + var r = e.visualStyleMapper || tae[t]; + return r || (console.warn("Unknown style type '" + t + "'."), tae.itemStyle); +} +function Mye(e, t) { + var r = e.visualDrawType || OWe[t]; + return r || (console.warn("Unknown style type '" + t + "'."), "fill"); +} +var MWe = { + createOnAllSeries: !0, + performRawSeries: !0, + reset: function(e, t) { + var r = e.getData(), n = e.visualStyleAccessPath || "itemStyle", i = e.getModel(n), a = Oye(e, n), o = a(i), l = i.getShallow("decal"); + l && (r.setVisual("decal", l), l.dirty = !0); + var u = Mye(e, n), d = o[u], f = Kr(d) ? d : null, g = o.fill === "auto" || o.stroke === "auto"; + if (!o[u] || f || g) { + var v = e.getColorFromPalette( + // TODO series count changed. + e.name, + null, + t.getSeriesCount() + ); + o[u] || (o[u] = v, r.setVisual("colorFromPalette", !0)), o.fill = o.fill === "auto" || Kr(o.fill) ? v : o.fill, o.stroke = o.stroke === "auto" || Kr(o.stroke) ? v : o.stroke; + } + if (r.setVisual("style", o), r.setVisual("drawType", u), !t.isSeriesFiltered(e) && f) + return r.setVisual("colorFromPalette", !1), { + dataEach: function(y, C) { + var A = e.getDataParams(C), S = $t({}, o); + S[u] = f(A), y.setItemVisual(C, "style", S); + } + }; + } +}, kA = new Wa(), kWe = { + createOnAllSeries: !0, + performRawSeries: !0, + reset: function(e, t) { + if (!(e.ignoreStyleOnData || t.isSeriesFiltered(e))) { + var r = e.getData(), n = e.visualStyleAccessPath || "itemStyle", i = Oye(e, n), a = r.getVisual("drawType"); + return { + dataEach: r.hasItemOption ? function(o, l) { + var u = o.getRawDataItem(l); + if (u && u[n]) { + kA.option = u[n]; + var d = i(kA), f = o.ensureUniqueItemVisual(l, "style"); + $t(f, d), kA.option.decal && (o.setItemVisual(l, "decal", kA.option.decal), kA.option.decal.dirty = !0), a in d && o.setItemVisual(l, "colorFromPalette", !1); + } + } : null + }; + } + } +}, PWe = { + performRawSeries: !0, + overallReset: function(e) { + var t = $r(); + e.eachSeries(function(r) { + var n = r.getColorBy(); + if (!r.isColorBySeries()) { + var i = r.type + "-" + n, a = t.get(i); + a || (a = {}, t.set(i, a)), eae(r).scope = a; + } + }), e.eachSeries(function(r) { + if (!(r.isColorBySeries() || e.isSeriesFiltered(r))) { + var n = r.getRawData(), i = {}, a = r.getData(), o = eae(r).scope, l = r.visualStyleAccessPath || "itemStyle", u = Mye(r, l); + a.each(function(d) { + var f = a.getRawIndex(d); + i[f] = d; + }), n.each(function(d) { + var f = i[d], g = a.getItemVisual(f, "colorFromPalette"); + if (g) { + var v = a.ensureUniqueItemVisual(f, "style"), y = n.getName(d) || d + "", C = n.count(); + v[u] = r.getColorFromPalette(y, o, C); + } + }); + } + }); + } +}, eP = Math.PI; +function NWe(e, t) { + t = t || {}, Jr(t, { + text: "loading", + textColor: "#000", + fontSize: 12, + fontWeight: "normal", + fontStyle: "normal", + fontFamily: "sans-serif", + maskColor: "rgba(255, 255, 255, 0.8)", + showSpinner: !0, + color: "#5470c6", + spinnerRadius: 10, + lineWidth: 5, + zlevel: 0 + }); + var r = new _n(), n = new Xi({ + style: { + fill: t.maskColor + }, + zlevel: t.zlevel, + z: 1e4 + }); + r.add(n); + var i = new Hi({ + style: { + text: t.text, + fill: t.textColor, + fontSize: t.fontSize, + fontWeight: t.fontWeight, + fontStyle: t.fontStyle, + fontFamily: t.fontFamily + }, + zlevel: t.zlevel, + z: 10001 + }), a = new Xi({ + style: { + fill: "none" + }, + textContent: i, + textConfig: { + position: "right", + distance: 10 + }, + zlevel: t.zlevel, + z: 10001 + }); + r.add(a); + var o; + return t.showSpinner && (o = new AF({ + shape: { + startAngle: -eP / 2, + endAngle: -eP / 2 + 0.1, + r: t.spinnerRadius + }, + style: { + stroke: t.color, + lineCap: "round", + lineWidth: t.lineWidth + }, + zlevel: t.zlevel, + z: 10001 + }), o.animateShape(!0).when(1e3, { + endAngle: eP * 3 / 2 + }).start("circularInOut"), o.animateShape(!0).when(1e3, { + startAngle: eP * 3 / 2 + }).delay(300).start("circularInOut"), r.add(o)), r.resize = function() { + var l = i.getBoundingRect().width, u = t.showSpinner ? t.spinnerRadius : 0, d = (e.getWidth() - u * 2 - (t.showSpinner && l ? 10 : 0) - l) / 2 - (t.showSpinner && l ? 0 : 5 + l / 2) + (t.showSpinner ? 0 : l / 2) + (l ? 0 : u), f = e.getHeight() / 2; + t.showSpinner && o.setShape({ + cx: d, + cy: f + }), a.setShape({ + x: d - u, + y: f - u, + width: u * 2, + height: u * 2 + }), n.setShape({ + x: 0, + y: 0, + width: e.getWidth(), + height: e.getHeight() + }); + }, r.resize(), r; +} +var LWe = ( + /** @class */ + function() { + function e(t, r, n, i) { + this._stageTaskMap = $r(), this.ecInstance = t, this.api = r, n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice(), this._allHandlers = n.concat(i); + } + return e.prototype.restoreData = function(t, r) { + t.restoreData(r), this._stageTaskMap.each(function(n) { + var i = n.overallTask; + i && i.dirty(); + }); + }, e.prototype.getPerformArgs = function(t, r) { + if (t.__pipeline) { + var n = this._pipelineMap.get(t.__pipeline.id), i = n.context, a = !r && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n.blockIndex, o = a ? n.step : null, l = i && i.modDataCount, u = l != null ? Math.ceil(l / o) : null; + return { + step: o, + modBy: u, + modDataCount: l + }; + } + }, e.prototype.getPipeline = function(t) { + return this._pipelineMap.get(t); + }, e.prototype.updateStreamModes = function(t, r) { + var n = this._pipelineMap.get(t.uid), i = t.getData(), a = i.count(), o = n.progressiveEnabled && r.incrementalPrepareRender && a >= n.threshold, l = t.get("large") && a >= t.get("largeThreshold"), u = t.get("progressiveChunkMode") === "mod" ? a : null; + t.pipelineContext = n.context = { + progressiveRender: o, + modDataCount: u, + large: l + }; + }, e.prototype.restorePipelines = function(t) { + var r = this, n = r._pipelineMap = $r(); + t.eachSeries(function(i) { + var a = i.getProgressive(), o = i.uid; + n.set(o, { + id: o, + head: null, + tail: null, + threshold: i.getProgressiveThreshold(), + progressiveEnabled: a && !(i.preventIncremental && i.preventIncremental()), + blockIndex: -1, + step: Math.round(a || 700), + count: 0 + }), r._pipe(i, i.dataTask); + }); + }, e.prototype.prepareStageTasks = function() { + var t = this._stageTaskMap, r = this.api.getModel(), n = this.api; + Ee(this._allHandlers, function(i) { + var a = t.get(i.uid) || t.set(i.uid, {}), o = ""; + Qc(!(i.reset && i.overallReset), o), i.reset && this._createSeriesStageTask(i, a, r, n), i.overallReset && this._createOverallStageTask(i, a, r, n); + }, this); + }, e.prototype.prepareView = function(t, r, n, i) { + var a = t.renderTask, o = a.context; + o.model = r, o.ecModel = n, o.api = i, a.__block = !t.incrementalPrepareRender, this._pipe(r, a); + }, e.prototype.performDataProcessorTasks = function(t, r) { + this._performStageTasks(this._dataProcessorHandlers, t, r, { + block: !0 + }); + }, e.prototype.performVisualTasks = function(t, r, n) { + this._performStageTasks(this._visualHandlers, t, r, n); + }, e.prototype._performStageTasks = function(t, r, n, i) { + i = i || {}; + var a = !1, o = this; + Ee(t, function(u, d) { + if (!(i.visualType && i.visualType !== u.visualType)) { + var f = o._stageTaskMap.get(u.uid), g = f.seriesTaskMap, v = f.overallTask; + if (v) { + var y, C = v.agentStubMap; + C.each(function(S) { + l(i, S) && (S.dirty(), y = !0); + }), y && v.dirty(), o.updatePayload(v, n); + var A = o.getPerformArgs(v, i.block); + C.each(function(S) { + S.perform(A); + }), v.perform(A) && (a = !0); + } else + g && g.each(function(S, _) { + l(i, S) && S.dirty(); + var E = o.getPerformArgs(S, i.block); + E.skip = !u.performRawSeries && r.isSeriesFiltered(S.context.model), o.updatePayload(S, n), S.perform(E) && (a = !0); + }); + } + }); + function l(u, d) { + return u.setDirty && (!u.dirtyMap || u.dirtyMap.get(d.__pipeline.id)); + } + this.unfinished = a || this.unfinished; + }, e.prototype.performSeriesTasks = function(t) { + var r; + t.eachSeries(function(n) { + r = n.dataTask.perform() || r; + }), this.unfinished = r || this.unfinished; + }, e.prototype.plan = function() { + this._pipelineMap.each(function(t) { + var r = t.tail; + do { + if (r.__block) { + t.blockIndex = r.__idxInPipeline; + break; + } + r = r.getUpstream(); + } while (r); + }); + }, e.prototype.updatePayload = function(t, r) { + r !== "remain" && (t.context.payload = r); + }, e.prototype._createSeriesStageTask = function(t, r, n, i) { + var a = this, o = r.seriesTaskMap, l = r.seriesTaskMap = $r(), u = t.seriesType, d = t.getTargetSeries; + t.createOnAllSeries ? n.eachRawSeries(f) : u ? n.eachRawSeriesByType(u, f) : d && d(n, i).each(f); + function f(g) { + var v = g.uid, y = l.set(v, o && o.get(v) || N1({ + plan: $We, + reset: VWe, + count: HWe + })); + y.context = { + model: g, + ecModel: n, + api: i, + // PENDING: `useClearVisual` not used? + useClearVisual: t.isVisual && !t.isLayout, + plan: t.plan, + reset: t.reset, + scheduler: a + }, a._pipe(g, y); + } + }, e.prototype._createOverallStageTask = function(t, r, n, i) { + var a = this, o = r.overallTask = r.overallTask || N1({ + reset: FWe + }); + o.context = { + ecModel: n, + api: i, + overallReset: t.overallReset, + scheduler: a + }; + var l = o.agentStubMap, u = o.agentStubMap = $r(), d = t.seriesType, f = t.getTargetSeries, g = !0, v = !1, y = ""; + Qc(!t.createOnAllSeries, y), d ? n.eachRawSeriesByType(d, C) : f ? f(n, i).each(C) : (g = !1, Ee(n.getSeries(), C)); + function C(A) { + var S = A.uid, _ = u.set(S, l && l.get(S) || // When the result of `getTargetSeries` changed, the overallTask + // should be set as dirty and re-performed. + (v = !0, N1({ + reset: BWe, + onDirty: jWe + }))); + _.context = { + model: A, + overallProgress: g + // FIXME:TS never used, so comment it + // modifyOutputEnd: modifyOutputEnd + }, _.agent = o, _.__block = g, a._pipe(A, _); + } + v && o.dirty(); + }, e.prototype._pipe = function(t, r) { + var n = t.uid, i = this._pipelineMap.get(n); + !i.head && (i.head = r), i.tail && i.tail.pipe(r), i.tail = r, r.__idxInPipeline = i.count++, r.__pipeline = i; + }, e.wrapStageHandler = function(t, r) { + return Kr(t) && (t = { + overallReset: t, + seriesType: WWe(t) + }), t.uid = yI("stageHandler"), r && (t.visualType = r), t; + }, e; + }() +); +function FWe(e) { + e.overallReset(e.ecModel, e.api, e.payload); +} +function BWe(e) { + return e.overallProgress && UWe; +} +function UWe() { + this.agent.dirty(), this.getDownstream().dirty(); +} +function jWe() { + this.agent && this.agent.dirty(); +} +function $We(e) { + return e.plan ? e.plan(e.model, e.ecModel, e.api, e.payload) : null; +} +function VWe(e) { + e.useClearVisual && e.data.clearAllVisual(); + var t = e.resetDefines = qa(e.reset(e.model, e.ecModel, e.api, e.payload)); + return t.length > 1 ? er(t, function(r, n) { + return kye(n); + }) : zWe; +} +var zWe = kye(0); +function kye(e) { + return function(t, r) { + var n = r.data, i = r.resetDefines[e]; + if (i && i.dataEach) + for (var a = t.start; a < t.end; a++) + i.dataEach(n, a); + else + i && i.progress && i.progress(t, n); + }; +} +function HWe(e) { + return e.data.count(); +} +function WWe(e) { + OL = null; + try { + e(ER, Pye); + } catch (t) { + } + return OL; +} +var ER = {}, Pye = {}, OL; +Nye(ER, aye); +Nye(Pye, oye); +ER.eachSeriesByType = ER.eachRawSeriesByType = function(e) { + OL = e; +}; +ER.eachComponent = function(e) { + e.mainType === "series" && e.subType && (OL = e.subType); +}; +function Nye(e, t) { + for (var r in t.prototype) + e[r] = Ls; +} +const Lye = LWe; +var rae = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"]; +const GWe = { + color: rae, + colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], rae] +}; +var Tu = "#B9B8CE", nae = "#100C2A", tP = function() { + return { + axisLine: { + lineStyle: { + color: Tu + } + }, + splitLine: { + lineStyle: { + color: "#484753" + } + }, + splitArea: { + areaStyle: { + color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"] + } + }, + minorSplitLine: { + lineStyle: { + color: "#20203B" + } + } + }; +}, iae = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"], Fye = { + darkMode: !0, + color: iae, + backgroundColor: nae, + axisPointer: { + lineStyle: { + color: "#817f91" + }, + crossStyle: { + color: "#817f91" + }, + label: { + // TODO Contrast of label backgorundColor + color: "#fff" + } + }, + legend: { + textStyle: { + color: Tu + } + }, + textStyle: { + color: Tu + }, + title: { + textStyle: { + color: "#EEF1FA" + }, + subtextStyle: { + color: "#B9B8CE" + } + }, + toolbox: { + iconStyle: { + borderColor: Tu + } + }, + dataZoom: { + borderColor: "#71708A", + textStyle: { + color: Tu + }, + brushStyle: { + color: "rgba(135,163,206,0.3)" + }, + handleStyle: { + color: "#353450", + borderColor: "#C5CBE3" + }, + moveHandleStyle: { + color: "#B0B6C3", + opacity: 0.3 + }, + fillerColor: "rgba(135,163,206,0.2)", + emphasis: { + handleStyle: { + borderColor: "#91B7F2", + color: "#4D587D" + }, + moveHandleStyle: { + color: "#636D9A", + opacity: 0.7 + } + }, + dataBackground: { + lineStyle: { + color: "#71708A", + width: 1 + }, + areaStyle: { + color: "#71708A" + } + }, + selectedDataBackground: { + lineStyle: { + color: "#87A3CE" + }, + areaStyle: { + color: "#87A3CE" + } + } + }, + visualMap: { + textStyle: { + color: Tu + } + }, + timeline: { + lineStyle: { + color: Tu + }, + label: { + color: Tu + }, + controlStyle: { + color: Tu, + borderColor: Tu + } + }, + calendar: { + itemStyle: { + color: nae + }, + dayLabel: { + color: Tu + }, + monthLabel: { + color: Tu + }, + yearLabel: { + color: Tu + } + }, + timeAxis: tP(), + logAxis: tP(), + valueAxis: tP(), + categoryAxis: tP(), + line: { + symbol: "circle" + }, + graph: { + color: iae + }, + gauge: { + title: { + color: Tu + }, + axisLine: { + lineStyle: { + color: [[1, "rgba(207,212,219,0.2)"]] + } + }, + axisLabel: { + color: Tu + }, + detail: { + color: "#EEF1FA" + } + }, + candlestick: { + itemStyle: { + color: "#f64e56", + color0: "#54ea92", + borderColor: "#f64e56", + borderColor0: "#54ea92" + // borderColor: '#ca2824', + // borderColor0: '#09a443' + } + } +}; +Fye.categoryAxis.splitLine.show = !1; +const YWe = Fye; +var XWe = ( + /** @class */ + function() { + function e() { + } + return e.prototype.normalizeQuery = function(t) { + var r = {}, n = {}, i = {}; + if (wr(t)) { + var a = Gg(t); + r.mainType = a.main || null, r.subType = a.sub || null; + } else { + var o = ["Index", "Name", "Id"], l = { + name: 1, + dataIndex: 1, + dataType: 1 + }; + Ee(t, function(u, d) { + for (var f = !1, g = 0; g < o.length; g++) { + var v = o[g], y = d.lastIndexOf(v); + if (y > 0 && y === d.length - v.length) { + var C = d.slice(0, y); + C !== "data" && (r.mainType = C, r[v.toLowerCase()] = u, f = !0); + } + } + l.hasOwnProperty(d) && (n[d] = u, f = !0), f || (i[d] = u); + }); + } + return { + cptQuery: r, + dataQuery: n, + otherQuery: i + }; + }, e.prototype.filter = function(t, r) { + var n = this.eventInfo; + if (!n) + return !0; + var i = n.targetEl, a = n.packedEvent, o = n.model, l = n.view; + if (!o || !l) + return !0; + var u = r.cptQuery, d = r.dataQuery; + return f(u, o, "mainType") && f(u, o, "subType") && f(u, o, "index", "componentIndex") && f(u, o, "name") && f(u, o, "id") && f(d, a, "name") && f(d, a, "dataIndex") && f(d, a, "dataType") && (!l.filterForExposedEvent || l.filterForExposedEvent(t, r.otherQuery, i, a)); + function f(g, v, y, C) { + return g[y] == null || v[C || y] === g[y]; + } + }, e.prototype.afterTrigger = function() { + this.eventInfo = null; + }, e; + }() +), fW = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"], aae = fW.concat(["symbolKeepAspect"]), KWe = { + createOnAllSeries: !0, + // For legend. + performRawSeries: !0, + reset: function(e, t) { + var r = e.getData(); + if (e.legendIcon && r.setVisual("legendIcon", e.legendIcon), !e.hasSymbolVisual) + return; + for (var n = {}, i = {}, a = !1, o = 0; o < fW.length; o++) { + var l = fW[o], u = e.get(l); + Kr(u) ? (a = !0, i[l] = u) : n[l] = u; + } + if (n.symbol = n.symbol || e.defaultSymbol, r.setVisual($t({ + legendIcon: e.legendIcon || n.symbol, + symbolKeepAspect: e.get("symbolKeepAspect") + }, n)), t.isSeriesFiltered(e)) + return; + var d = Ri(i); + function f(g, v) { + for (var y = e.getRawValue(v), C = e.getDataParams(v), A = 0; A < d.length; A++) { + var S = d[A]; + g.setItemVisual(v, S, i[S](y, C)); + } + } + return { + dataEach: a ? f : null + }; + } +}, ZWe = { + createOnAllSeries: !0, + // For legend. + performRawSeries: !0, + reset: function(e, t) { + if (!e.hasSymbolVisual || t.isSeriesFiltered(e)) + return; + var r = e.getData(); + function n(i, a) { + for (var o = i.getItemModel(a), l = 0; l < aae.length; l++) { + var u = aae[l], d = o.getShallow(u, !0); + d != null && i.setItemVisual(a, u, d); + } + } + return { + dataEach: r.hasItemOption ? n : null + }; + } +}; +function e9(e, t, r) { + switch (r) { + case "color": + var n = e.getItemVisual(t, "style"); + return n[e.getVisual("drawType")]; + case "opacity": + return e.getItemVisual(t, "style").opacity; + case "symbol": + case "symbolSize": + case "liftZ": + return e.getItemVisual(t, r); + } +} +function ED(e, t) { + switch (t) { + case "color": + var r = e.getVisual("style"); + return r[e.getVisual("drawType")]; + case "opacity": + return e.getVisual("style").opacity; + case "symbol": + case "symbolSize": + case "liftZ": + return e.getVisual(t); + } +} +function Bye(e, t, r, n) { + switch (r) { + case "color": + var i = e.ensureUniqueItemVisual(t, "style"); + i[e.getVisual("drawType")] = n, e.setItemVisual(t, "colorFromPalette", !1); + break; + case "opacity": + e.ensureUniqueItemVisual(t, "style").opacity = n; + break; + case "symbol": + case "symbolSize": + case "liftZ": + e.setItemVisual(t, r, n); + break; + } +} +function Uye(e, t) { + function r(n, i) { + var a = []; + return n.eachComponent({ + mainType: "series", + subType: e, + query: i + }, function(o) { + a.push(o.seriesIndex); + }), a; + } + Ee([[e + "ToggleSelect", "toggleSelect"], [e + "Select", "select"], [e + "UnSelect", "unselect"]], function(n) { + t(n[0], function(i, a, o) { + i = $t({}, i), o.dispatchAction($t(i, { + type: n[1], + seriesIndex: r(a, i) + })); + }); + }); +} +function AT(e, t, r, n, i) { + var a = e + t; + r.isSilent(a) || n.eachComponent({ + mainType: "series", + subType: "pie" + }, function(o) { + for (var l = o.seriesIndex, u = o.option.selectedMap, d = i.selected, f = 0; f < d.length; f++) + if (d[f].seriesIndex === l) { + var g = o.getData(), v = hE(g, i.fromActionPayload); + r.trigger(a, { + type: a, + seriesId: o.id, + name: qt(v) ? g.getName(v[0]) : g.getName(v), + selected: wr(u) ? u : $t({}, u) + }); + } + }); +} +function qWe(e, t, r) { + e.on("selectchanged", function(n) { + var i = r.getModel(); + n.isFromClick ? (AT("map", "selectchanged", t, i, n), AT("pie", "selectchanged", t, i, n)) : n.fromAction === "select" ? (AT("map", "selected", t, i, n), AT("pie", "selected", t, i, n)) : n.fromAction === "unselect" && (AT("map", "unselected", t, i, n), AT("pie", "unselected", t, i, n)); + }); +} +function Fb(e, t, r) { + for (var n; e && !(t(e) && (n = e, r)); ) + e = e.__hostTarget || e.parent; + return n; +} +var JWe = Math.round(Math.random() * 9), QWe = typeof Object.defineProperty == "function", eGe = function() { + function e() { + this._id = "__ec_inner_" + JWe++; + } + return e.prototype.get = function(t) { + return this._guard(t)[this._id]; + }, e.prototype.set = function(t, r) { + var n = this._guard(t); + return QWe ? Object.defineProperty(n, this._id, { + value: r, + enumerable: !1, + configurable: !0 + }) : n[this._id] = r, this; + }, e.prototype.delete = function(t) { + return this.has(t) ? (delete this._guard(t)[this._id], !0) : !1; + }, e.prototype.has = function(t) { + return !!this._guard(t)[this._id]; + }, e.prototype._guard = function(t) { + if (t !== Object(t)) + throw TypeError("Value of WeakMap is not a non-null object."); + return t; + }, e; +}(); +const tGe = eGe; +var rGe = Ei.extend({ + type: "triangle", + shape: { + cx: 0, + cy: 0, + width: 0, + height: 0 + }, + buildPath: function(e, t) { + var r = t.cx, n = t.cy, i = t.width / 2, a = t.height / 2; + e.moveTo(r, n - a), e.lineTo(r + i, n + a), e.lineTo(r - i, n + a), e.closePath(); + } +}), nGe = Ei.extend({ + type: "diamond", + shape: { + cx: 0, + cy: 0, + width: 0, + height: 0 + }, + buildPath: function(e, t) { + var r = t.cx, n = t.cy, i = t.width / 2, a = t.height / 2; + e.moveTo(r, n - a), e.lineTo(r + i, n), e.lineTo(r, n + a), e.lineTo(r - i, n), e.closePath(); + } +}), iGe = Ei.extend({ + type: "pin", + shape: { + // x, y on the cusp + x: 0, + y: 0, + width: 0, + height: 0 + }, + buildPath: function(e, t) { + var r = t.x, n = t.y, i = t.width / 5 * 3, a = Math.max(i, t.height), o = i / 2, l = o * o / (a - o), u = n - a + o + l, d = Math.asin(l / o), f = Math.cos(d) * o, g = Math.sin(d), v = Math.cos(d), y = o * 0.6, C = o * 0.7; + e.moveTo(r - f, u + l), e.arc(r, u, o, Math.PI - d, Math.PI * 2 + d), e.bezierCurveTo(r + f - g * y, u + l + v * y, r, n - C, r, n), e.bezierCurveTo(r, n - C, r - f + g * y, u + l + v * y, r - f, u + l), e.closePath(); + } +}), aGe = Ei.extend({ + type: "arrow", + shape: { + x: 0, + y: 0, + width: 0, + height: 0 + }, + buildPath: function(e, t) { + var r = t.height, n = t.width, i = t.x, a = t.y, o = n / 3 * 2; + e.moveTo(i, a), e.lineTo(i + o, a + r), e.lineTo(i, a + r / 4 * 3), e.lineTo(i - o, a + r), e.lineTo(i, a), e.closePath(); + } +}), oGe = { + line: Pl, + rect: Xi, + roundRect: Xi, + square: Xi, + circle: ny, + diamond: nGe, + pin: iGe, + arrow: aGe, + triangle: rGe +}, sGe = { + line: function(e, t, r, n, i) { + i.x1 = e, i.y1 = t + n / 2, i.x2 = e + r, i.y2 = t + n / 2; + }, + rect: function(e, t, r, n, i) { + i.x = e, i.y = t, i.width = r, i.height = n; + }, + roundRect: function(e, t, r, n, i) { + i.x = e, i.y = t, i.width = r, i.height = n, i.r = Math.min(r, n) / 4; + }, + square: function(e, t, r, n, i) { + var a = Math.min(r, n); + i.x = e, i.y = t, i.width = a, i.height = a; + }, + circle: function(e, t, r, n, i) { + i.cx = e + r / 2, i.cy = t + n / 2, i.r = Math.min(r, n) / 2; + }, + diamond: function(e, t, r, n, i) { + i.cx = e + r / 2, i.cy = t + n / 2, i.width = r, i.height = n; + }, + pin: function(e, t, r, n, i) { + i.x = e + r / 2, i.y = t + n / 2, i.width = r, i.height = n; + }, + arrow: function(e, t, r, n, i) { + i.x = e + r / 2, i.y = t + n / 2, i.width = r, i.height = n; + }, + triangle: function(e, t, r, n, i) { + i.cx = e + r / 2, i.cy = t + n / 2, i.width = r, i.height = n; + } +}, ML = {}; +Ee(oGe, function(e, t) { + ML[t] = new e(); +}); +var lGe = Ei.extend({ + type: "symbol", + shape: { + symbolType: "", + x: 0, + y: 0, + width: 0, + height: 0 + }, + calculateTextPosition: function(e, t, r) { + var n = bL(e, t, r), i = this.shape; + return i && i.symbolType === "pin" && t.position === "inside" && (n.y = r.y + r.height * 0.4), n; + }, + buildPath: function(e, t, r) { + var n = t.symbolType; + if (n !== "none") { + var i = ML[n]; + i || (n = "rect", i = ML[n]), sGe[n](t.x, t.y, t.width, t.height, i.shape), i.buildPath(e, i.shape, r); + } + } +}); +function cGe(e, t) { + if (this.type !== "image") { + var r = this.style; + this.__isEmptyBrush ? (r.stroke = e, r.fill = t || "#fff", r.lineWidth = 2) : this.shape.symbolType === "line" ? r.stroke = e : r.fill = e, this.markRedraw(); + } +} +function $s(e, t, r, n, i, a, o) { + var l = e.indexOf("empty") === 0; + l && (e = e.substr(5, 1).toLowerCase() + e.substr(6)); + var u; + return e.indexOf("image://") === 0 ? u = O8(e.slice(8), new ei(t, r, n, i), o ? "center" : "cover") : e.indexOf("path://") === 0 ? u = _D(e.slice(7), {}, new ei(t, r, n, i), o ? "center" : "cover") : u = new lGe({ + shape: { + symbolType: e, + x: t, + y: r, + width: n, + height: i + } + }), u.__isEmptyBrush = l, u.setColor = cGe, a && u.setColor(a), u; +} +function wI(e) { + return qt(e) || (e = [+e, +e]), [e[0] || 0, e[1] || 0]; +} +function kE(e, t) { + if (e != null) + return qt(e) || (e = [e, e]), [yr(e[0], t[0]) || 0, yr(Fn(e[1], e[0]), t[1]) || 0]; +} +function Bb(e) { + return isFinite(e); +} +function uGe(e, t, r) { + var n = t.x == null ? 0 : t.x, i = t.x2 == null ? 1 : t.x2, a = t.y == null ? 0 : t.y, o = t.y2 == null ? 0 : t.y2; + t.global || (n = n * r.width + r.x, i = i * r.width + r.x, a = a * r.height + r.y, o = o * r.height + r.y), n = Bb(n) ? n : 0, i = Bb(i) ? i : 1, a = Bb(a) ? a : 0, o = Bb(o) ? o : 0; + var l = e.createLinearGradient(n, a, i, o); + return l; +} +function hGe(e, t, r) { + var n = r.width, i = r.height, a = Math.min(n, i), o = t.x == null ? 0.5 : t.x, l = t.y == null ? 0.5 : t.y, u = t.r == null ? 0.5 : t.r; + t.global || (o = o * n + r.x, l = l * i + r.y, u = u * a), o = Bb(o) ? o : 0.5, l = Bb(l) ? l : 0.5, u = u >= 0 && Bb(u) ? u : 0.5; + var d = e.createRadialGradient(o, l, 0, o, l, u); + return d; +} +function pW(e, t, r) { + for (var n = t.type === "radial" ? hGe(e, t, r) : uGe(e, t, r), i = t.colorStops, a = 0; a < i.length; a++) + n.addColorStop(i[a].offset, i[a].color); + return n; +} +function dGe(e, t) { + if (e === t || !e && !t) + return !1; + if (!e || !t || e.length !== t.length) + return !0; + for (var r = 0; r < e.length; r++) + if (e[r] !== t[r]) + return !0; + return !1; +} +function rP(e) { + return parseInt(e, 10); +} +function cw(e, t, r) { + var n = ["width", "height"][t], i = ["clientWidth", "clientHeight"][t], a = ["paddingLeft", "paddingTop"][t], o = ["paddingRight", "paddingBottom"][t]; + if (r[n] != null && r[n] !== "auto") + return parseFloat(r[n]); + var l = document.defaultView.getComputedStyle(e); + return (e[i] || rP(l[n]) || rP(e.style[n])) - (rP(l[a]) || 0) - (rP(l[o]) || 0) | 0; +} +function fGe(e, t) { + return !e || e === "solid" || !(t > 0) ? null : e === "dashed" ? [4 * t, 2 * t] : e === "dotted" ? [t] : Qi(e) ? [e] : qt(e) ? e : null; +} +function t9(e) { + var t = e.style, r = t.lineDash && t.lineWidth > 0 && fGe(t.lineDash, t.lineWidth), n = t.lineDashOffset; + if (r) { + var i = t.strokeNoScale && e.getLineScale ? e.getLineScale() : 1; + i && i !== 1 && (r = er(r, function(a) { + return a / i; + }), n /= i); + } + return [r, n]; +} +var pGe = new sv(!0); +function kL(e) { + var t = e.stroke; + return !(t == null || t === "none" || !(e.lineWidth > 0)); +} +function oae(e) { + return typeof e == "string" && e !== "none"; +} +function PL(e) { + var t = e.fill; + return t != null && t !== "none"; +} +function sae(e, t) { + if (t.fillOpacity != null && t.fillOpacity !== 1) { + var r = e.globalAlpha; + e.globalAlpha = t.fillOpacity * t.opacity, e.fill(), e.globalAlpha = r; + } else + e.fill(); +} +function lae(e, t) { + if (t.strokeOpacity != null && t.strokeOpacity !== 1) { + var r = e.globalAlpha; + e.globalAlpha = t.strokeOpacity * t.opacity, e.stroke(), e.globalAlpha = r; + } else + e.stroke(); +} +function gW(e, t, r) { + var n = b8(t.image, t.__image, r); + if (EF(n)) { + var i = e.createPattern(n, t.repeat || "repeat"); + if (typeof DOMMatrix == "function" && i && i.setTransform) { + var a = new DOMMatrix(); + a.translateSelf(t.x || 0, t.y || 0), a.rotateSelf(0, 0, (t.rotation || 0) * T1), a.scaleSelf(t.scaleX || 1, t.scaleY || 1), i.setTransform(a); + } + return i; + } +} +function gGe(e, t, r, n) { + var i, a = kL(r), o = PL(r), l = r.strokePercent, u = l < 1, d = !t.path; + (!t.silent || u) && d && t.createPathProxy(); + var f = t.path || pGe, g = t.__dirty; + if (!n) { + var v = r.fill, y = r.stroke, C = o && !!v.colorStops, A = a && !!y.colorStops, S = o && !!v.image, _ = a && !!y.image, E = void 0, I = void 0, w = void 0, x = void 0, b = void 0; + (C || A) && (b = t.getBoundingRect()), C && (E = g ? pW(e, v, b) : t.__canvasFillGradient, t.__canvasFillGradient = E), A && (I = g ? pW(e, y, b) : t.__canvasStrokeGradient, t.__canvasStrokeGradient = I), S && (w = g || !t.__canvasFillPattern ? gW(e, v, t) : t.__canvasFillPattern, t.__canvasFillPattern = w), _ && (x = g || !t.__canvasStrokePattern ? gW(e, y, t) : t.__canvasStrokePattern, t.__canvasStrokePattern = w), C ? e.fillStyle = E : S && (w ? e.fillStyle = w : o = !1), A ? e.strokeStyle = I : _ && (x ? e.strokeStyle = x : a = !1); + } + var R = t.getGlobalScale(); + f.setScale(R[0], R[1], t.segmentIgnoreThreshold); + var M, O; + e.setLineDash && r.lineDash && (i = t9(t), M = i[0], O = i[1]); + var P = !0; + (d || g & KT) && (f.setDPR(e.dpr), u ? f.setContext(null) : (f.setContext(e), P = !1), f.reset(), t.buildPath(f, t.shape, n), f.toStatic(), t.pathUpdated()), P && f.rebuildPath(e, u ? l : 1), M && (e.setLineDash(M), e.lineDashOffset = O), n || (r.strokeFirst ? (a && lae(e, r), o && sae(e, r)) : (o && sae(e, r), a && lae(e, r))), M && e.setLineDash([]); +} +function vGe(e, t, r) { + var n = t.__image = b8(r.image, t.__image, t, t.onload); + if (!(!n || !EF(n))) { + var i = r.x || 0, a = r.y || 0, o = t.getWidth(), l = t.getHeight(), u = n.width / n.height; + if (o == null && l != null ? o = l * u : l == null && o != null ? l = o / u : o == null && l == null && (o = n.width, l = n.height), r.sWidth && r.sHeight) { + var d = r.sx || 0, f = r.sy || 0; + e.drawImage(n, d, f, r.sWidth, r.sHeight, i, a, o, l); + } else if (r.sx && r.sy) { + var d = r.sx, f = r.sy, g = o - d, v = l - f; + e.drawImage(n, d, f, g, v, i, a, o, l); + } else + e.drawImage(n, i, a, o, l); + } +} +function mGe(e, t, r) { + var n, i = r.text; + if (i != null && (i += ""), i) { + e.font = r.font || p0, e.textAlign = r.textAlign, e.textBaseline = r.textBaseline; + var a = void 0, o = void 0; + e.setLineDash && r.lineDash && (n = t9(t), a = n[0], o = n[1]), a && (e.setLineDash(a), e.lineDashOffset = o), r.strokeFirst ? (kL(r) && e.strokeText(i, r.x, r.y), PL(r) && e.fillText(i, r.x, r.y)) : (PL(r) && e.fillText(i, r.x, r.y), kL(r) && e.strokeText(i, r.x, r.y)), a && e.setLineDash([]); + } +} +var cae = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"], uae = [ + ["lineCap", "butt"], + ["lineJoin", "miter"], + ["miterLimit", 10] +]; +function jye(e, t, r, n, i) { + var a = !1; + if (!n && (r = r || {}, t === r)) + return !1; + if (n || t.opacity !== r.opacity) { + Ch(e, i), a = !0; + var o = Math.max(Math.min(t.opacity, 1), 0); + e.globalAlpha = isNaN(o) ? Yb.opacity : o; + } + (n || t.blend !== r.blend) && (a || (Ch(e, i), a = !0), e.globalCompositeOperation = t.blend || Yb.blend); + for (var l = 0; l < cae.length; l++) { + var u = cae[l]; + (n || t[u] !== r[u]) && (a || (Ch(e, i), a = !0), e[u] = e.dpr * (t[u] || 0)); + } + return (n || t.shadowColor !== r.shadowColor) && (a || (Ch(e, i), a = !0), e.shadowColor = t.shadowColor || Yb.shadowColor), a; +} +function hae(e, t, r, n, i) { + var a = CR(t, i.inHover), o = n ? null : r && CR(r, i.inHover) || {}; + if (a === o) + return !1; + var l = jye(e, a, o, n, i); + if ((n || a.fill !== o.fill) && (l || (Ch(e, i), l = !0), oae(a.fill) && (e.fillStyle = a.fill)), (n || a.stroke !== o.stroke) && (l || (Ch(e, i), l = !0), oae(a.stroke) && (e.strokeStyle = a.stroke)), (n || a.opacity !== o.opacity) && (l || (Ch(e, i), l = !0), e.globalAlpha = a.opacity == null ? 1 : a.opacity), t.hasStroke()) { + var u = a.lineWidth, d = u / (a.strokeNoScale && t.getLineScale ? t.getLineScale() : 1); + e.lineWidth !== d && (l || (Ch(e, i), l = !0), e.lineWidth = d); + } + for (var f = 0; f < uae.length; f++) { + var g = uae[f], v = g[0]; + (n || a[v] !== o[v]) && (l || (Ch(e, i), l = !0), e[v] = a[v] || g[1]); + } + return l; +} +function yGe(e, t, r, n, i) { + return jye(e, CR(t, i.inHover), r && CR(r, i.inHover), n, i); +} +function $ye(e, t) { + var r = t.transform, n = e.dpr || 1; + r ? e.setTransform(n * r[0], n * r[1], n * r[2], n * r[3], n * r[4], n * r[5]) : e.setTransform(n, 0, 0, n, 0, 0); +} +function _Ge(e, t, r) { + for (var n = !1, i = 0; i < e.length; i++) { + var a = e[i]; + n = n || a.isZeroArea(), $ye(t, a), t.beginPath(), a.buildPath(t, a.shape), t.clip(); + } + r.allClipped = n; +} +function SGe(e, t) { + return e && t ? e[0] !== t[0] || e[1] !== t[1] || e[2] !== t[2] || e[3] !== t[3] || e[4] !== t[4] || e[5] !== t[5] : !(!e && !t); +} +var dae = 1, fae = 2, pae = 3, gae = 4; +function bGe(e) { + var t = PL(e), r = kL(e); + return !(e.lineDash || !(+t ^ +r) || t && typeof e.fill != "string" || r && typeof e.stroke != "string" || e.strokePercent < 1 || e.strokeOpacity < 1 || e.fillOpacity < 1); +} +function Ch(e, t) { + t.batchFill && e.fill(), t.batchStroke && e.stroke(), t.batchFill = "", t.batchStroke = ""; +} +function CR(e, t) { + return t && e.__hoverStyle || e.style; +} +function VF(e, t) { + Ub(e, t, { inHover: !1, viewWidth: 0, viewHeight: 0 }, !0); +} +function Ub(e, t, r, n) { + var i = t.transform; + if (!t.shouldBePainted(r.viewWidth, r.viewHeight, !1, !1)) { + t.__dirty &= ~od, t.__isRendered = !1; + return; + } + var a = t.__clipPaths, o = r.prevElClipPaths, l = !1, u = !1; + if ((!o || dGe(a, o)) && (o && o.length && (Ch(e, r), e.restore(), u = l = !0, r.prevElClipPaths = null, r.allClipped = !1, r.prevEl = null), a && a.length && (Ch(e, r), e.save(), _Ge(a, e, r), l = !0), r.prevElClipPaths = a), r.allClipped) { + t.__isRendered = !1; + return; + } + t.beforeBrush && t.beforeBrush(), t.innerBeforeBrush(); + var d = r.prevEl; + d || (u = l = !0); + var f = t instanceof Ei && t.autoBatch && bGe(t.style); + l || SGe(i, d.transform) ? (Ch(e, r), $ye(e, t)) : f || Ch(e, r); + var g = CR(t, r.inHover); + t instanceof Ei ? (r.lastDrawType !== dae && (u = !0, r.lastDrawType = dae), hae(e, t, d, u, r), (!f || !r.batchFill && !r.batchStroke) && e.beginPath(), gGe(e, t, g, f), f && (r.batchFill = g.fill || "", r.batchStroke = g.stroke || "")) : t instanceof pR ? (r.lastDrawType !== pae && (u = !0, r.lastDrawType = pae), hae(e, t, d, u, r), mGe(e, t, g)) : t instanceof ec ? (r.lastDrawType !== fae && (u = !0, r.lastDrawType = fae), yGe(e, t, d, u, r), vGe(e, t, g)) : t.getTemporalDisplayables && (r.lastDrawType !== gae && (u = !0, r.lastDrawType = gae), EGe(e, t, r)), f && n && Ch(e, r), t.innerAfterBrush(), t.afterBrush && t.afterBrush(), r.prevEl = t, t.__dirty = 0, t.__isRendered = !0; +} +function EGe(e, t, r) { + var n = t.getDisplayables(), i = t.getTemporalDisplayables(); + e.save(); + var a = { + prevElClipPaths: null, + prevEl: null, + allClipped: !1, + viewWidth: r.viewWidth, + viewHeight: r.viewHeight, + inHover: r.inHover + }, o, l; + for (o = t.getCursor(), l = n.length; o < l; o++) { + var u = n[o]; + u.beforeBrush && u.beforeBrush(), u.innerBeforeBrush(), Ub(e, u, a, o === l - 1), u.innerAfterBrush(), u.afterBrush && u.afterBrush(), a.prevEl = u; + } + for (var d = 0, f = i.length; d < f; d++) { + var u = i[d]; + u.beforeBrush && u.beforeBrush(), u.innerBeforeBrush(), Ub(e, u, a, d === f - 1), u.innerAfterBrush(), u.afterBrush && u.afterBrush(), a.prevEl = u; + } + t.clearTemporalDisplayables(), t.notClear = !0, e.restore(); +} +var fz = new tGe(), vae = new fD(100), mae = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"]; +function Vw(e, t) { + if (e === "none") + return null; + var r = t.getDevicePixelRatio(), n = t.getZr(), i = n.painter.type === "svg"; + e.dirty && fz.delete(e); + var a = fz.get(e); + if (a) + return a; + var o = Jr(e, { + symbol: "rect", + symbolSize: 1, + symbolKeepAspect: !0, + color: "rgba(0, 0, 0, 0.2)", + backgroundColor: null, + dashArrayX: 5, + dashArrayY: 5, + rotation: 0, + maxTileWidth: 512, + maxTileHeight: 512 + }); + o.backgroundColor === "none" && (o.backgroundColor = null); + var l = { + repeat: "repeat" + }; + return u(l), l.rotation = o.rotation, l.scaleX = l.scaleY = i ? 1 : 1 / r, fz.set(e, l), e.dirty = !1, l; + function u(d) { + for (var f = [r], g = !0, v = 0; v < mae.length; ++v) { + var y = o[mae[v]]; + if (y != null && !qt(y) && !wr(y) && !Qi(y) && typeof y != "boolean") { + g = !1; + break; + } + f.push(y); + } + var C; + if (g) { + C = f.join(",") + (i ? "-svg" : ""); + var A = vae.get(C); + A && (i ? d.svgElement = A : d.image = A); + } + var S = zye(o.dashArrayX), _ = CGe(o.dashArrayY), E = Vye(o.symbol), I = TGe(S), w = Hye(_), x = !i && kp.createCanvas(), b = i && { + tag: "g", + attrs: {}, + key: "dcl", + children: [] + }, R = O(), M; + x && (x.width = R.width * r, x.height = R.height * r, M = x.getContext("2d")), P(), g && vae.put(C, x || b), d.image = x, d.svgElement = b, d.svgWidth = R.width, d.svgHeight = R.height; + function O() { + for (var B = 1, H = 0, Y = I.length; H < Y; ++H) + B = Pne(B, I[H]); + for (var X = 1, H = 0, Y = E.length; H < Y; ++H) + X = Pne(X, E[H].length); + B *= X; + var ee = w * I.length * E.length; + return { + width: Math.max(1, Math.min(B, o.maxTileWidth)), + height: Math.max(1, Math.min(ee, o.maxTileHeight)) + }; + } + function P() { + M && (M.clearRect(0, 0, x.width, x.height), o.backgroundColor && (M.fillStyle = o.backgroundColor, M.fillRect(0, 0, x.width, x.height))); + for (var B = 0, H = 0; H < _.length; ++H) + B += _[H]; + if (B <= 0) + return; + for (var Y = -w, X = 0, ee = 0, ae = 0; Y < R.height; ) { + if (X % 2 === 0) { + for (var J = ee / 2 % E.length, ne = 0, fe = 0, de = 0; ne < R.width * 2; ) { + for (var Te = 0, H = 0; H < S[ae].length; ++H) + Te += S[ae][H]; + if (Te <= 0) + break; + if (fe % 2 === 0) { + var be = (1 - o.symbolSize) * 0.5, Ve = ne + S[ae][fe] * be, pe = Y + _[X] * be, Be = S[ae][fe] * o.symbolSize, Ue = _[X] * o.symbolSize, Qe = de / 2 % E[J].length; + Re(Ve, pe, Be, Ue, E[J][Qe]); + } + ne += S[ae][fe], ++de, ++fe, fe === S[ae].length && (fe = 0); + } + ++ae, ae === S.length && (ae = 0); + } + Y += _[X], ++ee, ++X, X === _.length && (X = 0); + } + function Re(Ne, Me, we, He, Ie) { + var Ae = i ? 1 : r, Fe = $s(Ie, Ne * Ae, Me * Ae, we * Ae, He * Ae, o.color, o.symbolKeepAspect); + if (i) { + var $e = n.painter.renderOneToVNode(Fe); + $e && b.children.push($e); + } else + VF(M, Fe); + } + } + } +} +function Vye(e) { + if (!e || e.length === 0) + return [["rect"]]; + if (wr(e)) + return [[e]]; + for (var t = !0, r = 0; r < e.length; ++r) + if (!wr(e[r])) { + t = !1; + break; + } + if (t) + return Vye([e]); + for (var n = [], r = 0; r < e.length; ++r) + wr(e[r]) ? n.push([e[r]]) : n.push(e[r]); + return n; +} +function zye(e) { + if (!e || e.length === 0) + return [[0, 0]]; + if (Qi(e)) { + var t = Math.ceil(e); + return [[t, t]]; + } + for (var r = !0, n = 0; n < e.length; ++n) + if (!Qi(e[n])) { + r = !1; + break; + } + if (r) + return zye([e]); + for (var i = [], n = 0; n < e.length; ++n) + if (Qi(e[n])) { + var t = Math.ceil(e[n]); + i.push([t, t]); + } else { + var t = er(e[n], function(l) { + return Math.ceil(l); + }); + t.length % 2 === 1 ? i.push(t.concat(t)) : i.push(t); + } + return i; +} +function CGe(e) { + if (!e || typeof e == "object" && e.length === 0) + return [0, 0]; + if (Qi(e)) { + var t = Math.ceil(e); + return [t, t]; + } + var r = er(e, function(n) { + return Math.ceil(n); + }); + return e.length % 2 ? r.concat(r) : r; +} +function TGe(e) { + return er(e, function(t) { + return Hye(t); + }); +} +function Hye(e) { + for (var t = 0, r = 0; r < e.length; ++r) + t += e[r]; + return e.length % 2 === 1 ? t * 2 : t; +} +function wGe(e, t) { + e.eachRawSeries(function(r) { + if (!e.isSeriesFiltered(r)) { + var n = r.getData(); + n.hasItemVisual() && n.each(function(o) { + var l = n.getItemVisual(o, "decal"); + if (l) { + var u = n.ensureUniqueItemVisual(o, "style"); + u.decal = Vw(l, t); + } + }); + var i = n.getVisual("decal"); + if (i) { + var a = n.getVisual("style"); + a.decal = Vw(i, t); + } + } + }); +} +var IGe = new Rf(); +const _p = IGe; +var Wye = {}; +function xGe(e, t) { + Wye[e] = t; +} +function Gye(e) { + return Wye[e]; +} +var r9 = "5.5.0", Yye = { + zrender: "5.5.0" +}, AGe = 1, RGe = 800, DGe = 900, OGe = 1e3, MGe = 2e3, kGe = 5e3, Xye = 1e3, PGe = 1100, n9 = 2e3, Kye = 3e3, NGe = 4e3, zF = 4500, LGe = 4600, FGe = 5e3, BGe = 6e3, Zye = 7e3, i9 = { + PROCESSOR: { + FILTER: OGe, + SERIES_FILTER: RGe, + STATISTIC: kGe + }, + VISUAL: { + LAYOUT: Xye, + PROGRESSIVE_LAYOUT: PGe, + GLOBAL: n9, + CHART: Kye, + POST_CHART_LAYOUT: LGe, + COMPONENT: NGe, + BRUSH: FGe, + CHART_ITEM: zF, + ARIA: BGe, + DECAL: Zye + } +}, zc = "__flagInMainProcess", mh = "__pendingUpdate", pz = "__needsUpdateStatus", yae = /^[a-zA-Z0-9_]+$/, gz = "__connectUpdateStatus", _ae = 0, UGe = 1, jGe = 2; +function qye(e) { + return function() { + for (var t = [], r = 0; r < arguments.length; r++) + t[r] = arguments[r]; + if (this.isDisposed()) { + this.id; + return; + } + return Qye(this, e, t); + }; +} +function Jye(e) { + return function() { + for (var t = [], r = 0; r < arguments.length; r++) + t[r] = arguments[r]; + return Qye(this, e, t); + }; +} +function Qye(e, t, r) { + return r[0] = r[0] && r[0].toLowerCase(), Rf.prototype[t].apply(e, r); +} +var e_e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t; + }(Rf) +), t_e = e_e.prototype; +t_e.on = Jye("on"); +t_e.off = Jye("off"); +var RT, vz, nP, k_, mz, yz, _z, PA, NA, Sae, bae, Sz, Eae, iP, Cae, r_e, Qd, Tae, NL = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this, new XWe()) || this; + a._chartsViews = [], a._chartsMap = {}, a._componentsViews = [], a._componentsMap = {}, a._pendingActions = [], i = i || {}, wr(n) && (n = n_e[n]), a._dom = r; + var o = "canvas", l = "auto", u = !1; + i.ssr && Cve(function(v) { + var y = Tn(v), C = y.dataIndex; + if (C != null) { + var A = $r(); + return A.set("series_index", y.seriesIndex), A.set("data_index", C), y.ssrType && A.set("ssr_type", y.ssrType), A; + } + }); + var d = a._zr = VH(r, { + renderer: i.renderer || o, + devicePixelRatio: i.devicePixelRatio, + width: i.width, + height: i.height, + ssr: i.ssr, + useDirtyRect: Fn(i.useDirtyRect, u), + useCoarsePointer: Fn(i.useCoarsePointer, l), + pointerSize: i.pointerSize + }); + a._ssr = i.ssr, a._throttledZrFlush = gE(Ar(d.flush, d), 17), n = cn(n), n && lye(n, !0), a._theme = n, a._locale = Q4e(i.locale || Fme), a._coordSysMgr = new EI(); + var f = a._api = Cae(a); + function g(v, y) { + return v.__prio - y.__prio; + } + return yN(FL, g), yN(vW, g), a._scheduler = new Lye(a, f, vW, FL), a._messageCenter = new e_e(), a._initEvents(), a.resize = Ar(a.resize, a), d.animation.on("frame", a._onframe, a), Sae(d, a), bae(d, a), aR(a), a; + } + return t.prototype._onframe = function() { + if (!this._disposed) { + Tae(this); + var r = this._scheduler; + if (this[mh]) { + var n = this[mh].silent; + this[zc] = !0; + try { + RT(this), k_.update.call(this, null, this[mh].updateParams); + } catch (u) { + throw this[zc] = !1, this[mh] = null, u; + } + this._zr.flush(), this[zc] = !1, this[mh] = null, PA.call(this, n), NA.call(this, n); + } else if (r.unfinished) { + var i = AGe, a = this._model, o = this._api; + r.unfinished = !1; + do { + var l = +/* @__PURE__ */ new Date(); + r.performSeriesTasks(a), r.performDataProcessorTasks(a), yz(this, a), r.performVisualTasks(a), iP(this, this._model, o, "remain", {}), i -= +/* @__PURE__ */ new Date() - l; + } while (i > 0 && r.unfinished); + r.unfinished || this._zr.flush(); + } + } + }, t.prototype.getDom = function() { + return this._dom; + }, t.prototype.getId = function() { + return this.id; + }, t.prototype.getZr = function() { + return this._zr; + }, t.prototype.isSSR = function() { + return this._ssr; + }, t.prototype.setOption = function(r, n, i) { + if (!this[zc]) { + if (this._disposed) { + this.id; + return; + } + var a, o, l; + if (sn(n) && (i = n.lazyUpdate, a = n.silent, o = n.replaceMerge, l = n.transition, n = n.notMerge), this[zc] = !0, !this._model || n) { + var u = new MHe(this._api), d = this._theme, f = this._model = new aye(); + f.scheduler = this._scheduler, f.ssr = this._ssr, f.init(null, null, null, d, this._locale, u); + } + this._model.setOption(r, { + replaceMerge: o + }, mW); + var g = { + seriesTransition: l, + optionChanged: !0 + }; + if (i) + this[mh] = { + silent: a, + updateParams: g + }, this[zc] = !1, this.getZr().wakeUp(); + else { + try { + RT(this), k_.update.call(this, null, g); + } catch (v) { + throw this[mh] = null, this[zc] = !1, v; + } + this._ssr || this._zr.flush(), this[mh] = null, this[zc] = !1, PA.call(this, a), NA.call(this, a); + } + } + }, t.prototype.setTheme = function() { + }, t.prototype.getModel = function() { + return this._model; + }, t.prototype.getOption = function() { + return this._model && this._model.getOption(); + }, t.prototype.getWidth = function() { + return this._zr.getWidth(); + }, t.prototype.getHeight = function() { + return this._zr.getHeight(); + }, t.prototype.getDevicePixelRatio = function() { + return this._zr.painter.dpr || Yi.hasGlobalWindow && window.devicePixelRatio || 1; + }, t.prototype.getRenderedCanvas = function(r) { + return this.renderToCanvas(r); + }, t.prototype.renderToCanvas = function(r) { + r = r || {}; + var n = this._zr.painter; + return n.getRenderedCanvas({ + backgroundColor: r.backgroundColor || this._model.get("backgroundColor"), + pixelRatio: r.pixelRatio || this.getDevicePixelRatio() + }); + }, t.prototype.renderToSVGString = function(r) { + r = r || {}; + var n = this._zr.painter; + return n.renderToString({ + useViewBox: r.useViewBox + }); + }, t.prototype.getSvgDataURL = function() { + if (Yi.svgSupported) { + var r = this._zr, n = r.storage.getDisplayList(); + return Ee(n, function(i) { + i.stopAnimation(null, !0); + }), r.painter.toDataURL(); + } + }, t.prototype.getDataURL = function(r) { + if (this._disposed) { + this.id; + return; + } + r = r || {}; + var n = r.excludeComponents, i = this._model, a = [], o = this; + Ee(n, function(u) { + i.eachComponent({ + mainType: u + }, function(d) { + var f = o._componentsMap[d.__viewId]; + f.group.ignore || (a.push(f), f.group.ignore = !0); + }); + }); + var l = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.renderToCanvas(r).toDataURL("image/" + (r && r.type || "png")); + return Ee(a, function(u) { + u.group.ignore = !1; + }), l; + }, t.prototype.getConnectedDataURL = function(r) { + if (this._disposed) { + this.id; + return; + } + var n = r.type === "svg", i = this.group, a = Math.min, o = Math.max, l = 1 / 0; + if (BL[i]) { + var u = l, d = l, f = -l, g = -l, v = [], y = r && r.pixelRatio || this.getDevicePixelRatio(); + Ee(Zb, function(I, w) { + if (I.group === i) { + var x = n ? I.getZr().painter.getSvgDom().innerHTML : I.renderToCanvas(cn(r)), b = I.getDom().getBoundingClientRect(); + u = a(b.left, u), d = a(b.top, d), f = o(b.right, f), g = o(b.bottom, g), v.push({ + dom: x, + left: b.left, + top: b.top + }); + } + }), u *= y, d *= y, f *= y, g *= y; + var C = f - u, A = g - d, S = kp.createCanvas(), _ = VH(S, { + renderer: n ? "svg" : "canvas" + }); + if (_.resize({ + width: C, + height: A + }), n) { + var E = ""; + return Ee(v, function(I) { + var w = I.left - u, x = I.top - d; + E += '' + I.dom + ""; + }), _.painter.getSvgRoot().innerHTML = E, r.connectedBackgroundColor && _.painter.setBackgroundColor(r.connectedBackgroundColor), _.refreshImmediately(), _.painter.toDataURL(); + } else + return r.connectedBackgroundColor && _.add(new Xi({ + shape: { + x: 0, + y: 0, + width: C, + height: A + }, + style: { + fill: r.connectedBackgroundColor + } + })), Ee(v, function(I) { + var w = new ec({ + style: { + x: I.left * y - u, + y: I.top * y - d, + image: I.dom + } + }); + _.add(w); + }), _.refreshImmediately(), S.toDataURL("image/" + (r && r.type || "png")); + } else + return this.getDataURL(r); + }, t.prototype.convertToPixel = function(r, n) { + return mz(this, "convertToPixel", r, n); + }, t.prototype.convertFromPixel = function(r, n) { + return mz(this, "convertFromPixel", r, n); + }, t.prototype.containPixel = function(r, n) { + if (this._disposed) { + this.id; + return; + } + var i = this._model, a, o = D1(i, r); + return Ee(o, function(l, u) { + u.indexOf("Models") >= 0 && Ee(l, function(d) { + var f = d.coordinateSystem; + if (f && f.containPoint) + a = a || !!f.containPoint(n); + else if (u === "seriesModels") { + var g = this._chartsMap[d.__viewId]; + g && g.containPoint && (a = a || g.containPoint(n, d)); + } + }, this); + }, this), !!a; + }, t.prototype.getVisual = function(r, n) { + var i = this._model, a = D1(i, r, { + defaultMainType: "series" + }), o = a.seriesModel, l = o.getData(), u = a.hasOwnProperty("dataIndexInside") ? a.dataIndexInside : a.hasOwnProperty("dataIndex") ? l.indexOfRawIndex(a.dataIndex) : null; + return u != null ? e9(l, u, n) : ED(l, n); + }, t.prototype.getViewOfComponentModel = function(r) { + return this._componentsMap[r.__viewId]; + }, t.prototype.getViewOfSeriesModel = function(r) { + return this._chartsMap[r.__viewId]; + }, t.prototype._initEvents = function() { + var r = this; + Ee($Ge, function(n) { + var i = function(a) { + var o = r.getModel(), l = a.target, u, d = n === "globalout"; + if (d ? u = {} : l && Fb(l, function(C) { + var A = Tn(C); + if (A && A.dataIndex != null) { + var S = A.dataModel || o.getSeriesByIndex(A.seriesIndex); + return u = S && S.getDataParams(A.dataIndex, A.dataType, l) || {}, !0; + } else if (A.eventData) + return u = $t({}, A.eventData), !0; + }, !0), u) { + var f = u.componentType, g = u.componentIndex; + (f === "markLine" || f === "markPoint" || f === "markArea") && (f = "series", g = u.seriesIndex); + var v = f && g != null && o.getComponent(f, g), y = v && r[v.mainType === "series" ? "_chartsMap" : "_componentsMap"][v.__viewId]; + u.event = a, u.type = n, r._$eventProcessor.eventInfo = { + targetEl: l, + packedEvent: u, + model: v, + view: y + }, r.trigger(n, u); + } + }; + i.zrEventfulCallAtLast = !0, r._zr.on(n, i, r); + }), Ee(L1, function(n, i) { + r._messageCenter.on(i, function(a) { + this.trigger(i, a); + }, r); + }), Ee(["selectchanged"], function(n) { + r._messageCenter.on(n, function(i) { + this.trigger(n, i); + }, r); + }), qWe(this._messageCenter, this, this._api); + }, t.prototype.isDisposed = function() { + return this._disposed; + }, t.prototype.clear = function() { + if (this._disposed) { + this.id; + return; + } + this.setOption({ + series: [] + }, !0); + }, t.prototype.dispose = function() { + if (this._disposed) { + this.id; + return; + } + this._disposed = !0; + var r = this.getDom(); + r && Nve(this.getDom(), o9, ""); + var n = this, i = n._api, a = n._model; + Ee(n._componentsViews, function(o) { + o.dispose(a, i); + }), Ee(n._chartsViews, function(o) { + o.dispose(a, i); + }), n._zr.dispose(), n._dom = n._model = n._chartsMap = n._componentsMap = n._chartsViews = n._componentsViews = n._scheduler = n._api = n._zr = n._throttledZrFlush = n._theme = n._coordSysMgr = n._messageCenter = null, delete Zb[n.id]; + }, t.prototype.resize = function(r) { + if (!this[zc]) { + if (this._disposed) { + this.id; + return; + } + this._zr.resize(r); + var n = this._model; + if (this._loadingFX && this._loadingFX.resize(), !!n) { + var i = n.resetOption("media"), a = r && r.silent; + this[mh] && (a == null && (a = this[mh].silent), i = !0, this[mh] = null), this[zc] = !0; + try { + i && RT(this), k_.update.call(this, { + type: "resize", + animation: $t({ + // Disable animation + duration: 0 + }, r && r.animation) + }); + } catch (o) { + throw this[zc] = !1, o; + } + this[zc] = !1, PA.call(this, a), NA.call(this, a); + } + } + }, t.prototype.showLoading = function(r, n) { + if (this._disposed) { + this.id; + return; + } + if (sn(r) && (n = r, r = ""), r = r || "default", this.hideLoading(), !!yW[r]) { + var i = yW[r](this._api, n), a = this._zr; + this._loadingFX = i, a.add(i); + } + }, t.prototype.hideLoading = function() { + if (this._disposed) { + this.id; + return; + } + this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null; + }, t.prototype.makeActionFromEvent = function(r) { + var n = $t({}, r); + return n.type = L1[r.type], n; + }, t.prototype.dispatchAction = function(r, n) { + if (this._disposed) { + this.id; + return; + } + if (sn(n) || (n = { + silent: !!n + }), !!LL[r.type] && this._model) { + if (this[zc]) { + this._pendingActions.push(r); + return; + } + var i = n.silent; + _z.call(this, r, i); + var a = n.flush; + a ? this._zr.flush() : a !== !1 && Yi.browser.weChat && this._throttledZrFlush(), PA.call(this, i), NA.call(this, i); + } + }, t.prototype.updateLabelLayout = function() { + _p.trigger("series:layoutlabels", this._model, this._api, { + // Not adding series labels. + // TODO + updatedSeries: [] + }); + }, t.prototype.appendData = function(r) { + if (this._disposed) { + this.id; + return; + } + var n = r.seriesIndex, i = this.getModel(), a = i.getSeriesByIndex(n); + a.appendData(r), this._scheduler.unfinished = !0, this.getZr().wakeUp(); + }, t.internalField = function() { + RT = function(g) { + var v = g._scheduler; + v.restorePipelines(g._model), v.prepareStageTasks(), vz(g, !0), vz(g, !1), v.plan(); + }, vz = function(g, v) { + for (var y = g._model, C = g._scheduler, A = v ? g._componentsViews : g._chartsViews, S = v ? g._componentsMap : g._chartsMap, _ = g._zr, E = g._api, I = 0; I < A.length; I++) + A[I].__alive = !1; + v ? y.eachComponent(function(b, R) { + b !== "series" && w(R); + }) : y.eachSeries(w); + function w(b) { + var R = b.__requireNewView; + b.__requireNewView = !1; + var M = "_ec_" + b.id + "_" + b.type, O = !R && S[M]; + if (!O) { + var P = Gg(b.type), B = v ? Co.getClass(P.main, P.sub) : ( + // FIXME:TS + // (ChartView as ChartViewConstructor).getClass('series', classType.sub) + // For backward compat, still support a chart type declared as only subType + // like "liquidfill", but recommend "series.liquidfill" + // But need a base class to make a type series. + Ya.getClass(P.sub) + ); + O = new B(), O.init(y, E), S[M] = O, A.push(O), _.add(O.group); + } + b.__viewId = O.__id = M, O.__alive = !0, O.__model = b, O.group.__ecComponentInfo = { + mainType: b.mainType, + index: b.componentIndex + }, !v && C.prepareView(O, b, y, E); + } + for (var I = 0; I < A.length; ) { + var x = A[I]; + x.__alive ? I++ : (!v && x.renderTask.dispose(), _.remove(x.group), x.dispose(y, E), A.splice(I, 1), S[x.__id] === x && delete S[x.__id], x.__id = x.group.__ecComponentInfo = null); + } + }, nP = function(g, v, y, C, A) { + var S = g._model; + if (S.setUpdatePayload(y), !C) { + Ee([].concat(g._componentsViews).concat(g._chartsViews), x); + return; + } + var _ = {}; + _[C + "Id"] = y[C + "Id"], _[C + "Index"] = y[C + "Index"], _[C + "Name"] = y[C + "Name"]; + var E = { + mainType: C, + query: _ + }; + A && (E.subType = A); + var I = y.excludeSeriesId, w; + I != null && (w = $r(), Ee(qa(I), function(b) { + var R = ml(b, null); + R != null && w.set(R, !0); + })), S && S.eachComponent(E, function(b) { + var R = w && w.get(b.id) != null; + if (!R) + if (oie(y)) + if (b instanceof fo) + y.type === Xb && !y.notBlur && !b.get(["emphasis", "disabled"]) && K3e(b, y, g._api); + else { + var M = x8(b.mainType, b.componentIndex, y.name, g._api), O = M.focusSelf, P = M.dispatchers; + y.type === Xb && O && !y.notBlur && JH(b.mainType, b.componentIndex, g._api), P && Ee(P, function(B) { + y.type === Xb ? Hm(B) : Wm(B); + }); + } + else + eW(y) && b instanceof fo && (J3e(b, y, g._api), iie(b), Qd(g)); + }, g), S && S.eachComponent(E, function(b) { + var R = w && w.get(b.id) != null; + R || x(g[C === "series" ? "_chartsMap" : "_componentsMap"][b.__viewId]); + }, g); + function x(b) { + b && b.__alive && b[v] && b[v](b.__model, S, g._api, y); + } + }, k_ = { + prepareAndUpdate: function(g) { + RT(this), k_.update.call(this, g, { + // Needs to mark option changed if newOption is given. + // It's from MagicType. + // TODO If use a separate flag optionChanged in payload? + optionChanged: g.newOption != null + }); + }, + update: function(g, v) { + var y = this._model, C = this._api, A = this._zr, S = this._coordSysMgr, _ = this._scheduler; + if (y) { + y.setUpdatePayload(g), _.restoreData(y, g), _.performSeriesTasks(y), S.create(y, C), _.performDataProcessorTasks(y, g), yz(this, y), S.update(y, C), r(y), _.performVisualTasks(y, g), Sz(this, y, C, g, v); + var E = y.get("backgroundColor") || "transparent", I = y.get("darkMode"); + A.setBackgroundColor(E), I != null && I !== "auto" && A.setDarkMode(I), _p.trigger("afterupdate", y, C); + } + }, + updateTransform: function(g) { + var v = this, y = this._model, C = this._api; + if (y) { + y.setUpdatePayload(g); + var A = []; + y.eachComponent(function(_, E) { + if (_ !== "series") { + var I = v.getViewOfComponentModel(E); + if (I && I.__alive) + if (I.updateTransform) { + var w = I.updateTransform(E, y, C, g); + w && w.update && A.push(I); + } else + A.push(I); + } + }); + var S = $r(); + y.eachSeries(function(_) { + var E = v._chartsMap[_.__viewId]; + if (E.updateTransform) { + var I = E.updateTransform(_, y, C, g); + I && I.update && S.set(_.uid, 1); + } else + S.set(_.uid, 1); + }), r(y), this._scheduler.performVisualTasks(y, g, { + setDirty: !0, + dirtyMap: S + }), iP(this, y, C, g, {}, S), _p.trigger("afterupdate", y, C); + } + }, + updateView: function(g) { + var v = this._model; + v && (v.setUpdatePayload(g), Ya.markUpdateMethod(g, "updateView"), r(v), this._scheduler.performVisualTasks(v, g, { + setDirty: !0 + }), Sz(this, v, this._api, g, {}), _p.trigger("afterupdate", v, this._api)); + }, + updateVisual: function(g) { + var v = this, y = this._model; + y && (y.setUpdatePayload(g), y.eachSeries(function(C) { + C.getData().clearAllVisual(); + }), Ya.markUpdateMethod(g, "updateVisual"), r(y), this._scheduler.performVisualTasks(y, g, { + visualType: "visual", + setDirty: !0 + }), y.eachComponent(function(C, A) { + if (C !== "series") { + var S = v.getViewOfComponentModel(A); + S && S.__alive && S.updateVisual(A, y, v._api, g); + } + }), y.eachSeries(function(C) { + var A = v._chartsMap[C.__viewId]; + A.updateVisual(C, y, v._api, g); + }), _p.trigger("afterupdate", y, this._api)); + }, + updateLayout: function(g) { + k_.update.call(this, g); + } + }, mz = function(g, v, y, C) { + if (g._disposed) { + g.id; + return; + } + for (var A = g._model, S = g._coordSysMgr.getCoordinateSystems(), _, E = D1(A, y), I = 0; I < S.length; I++) { + var w = S[I]; + if (w[v] && (_ = w[v](A, E, C)) != null) + return _; + } + }, yz = function(g, v) { + var y = g._chartsMap, C = g._scheduler; + v.eachSeries(function(A) { + C.updateStreamModes(A, y[A.__viewId]); + }); + }, _z = function(g, v) { + var y = this, C = this.getModel(), A = g.type, S = g.escapeConnect, _ = LL[A], E = _.actionInfo, I = (E.update || "update").split(":"), w = I.pop(), x = I[0] != null && Gg(I[0]); + this[zc] = !0; + var b = [g], R = !1; + g.batch && (R = !0, b = er(g.batch, function(X) { + return X = Jr($t({}, X), g), X.batch = null, X; + })); + var M = [], O, P = eW(g), B = oie(g); + if (B && sme(this._api), Ee(b, function(X) { + if (O = _.action(X, y._model, y._api), O = O || $t({}, X), O.type = E.event || O.type, M.push(O), B) { + var ee = _8(g), ae = ee.queryOptionMap, J = ee.mainTypeSpecified, ne = J ? ae.keys()[0] : "series"; + nP(y, w, X, ne), Qd(y); + } else + P ? (nP(y, w, X, "series"), Qd(y)) : x && nP(y, w, X, x.main, x.sub); + }), w !== "none" && !B && !P && !x) + try { + this[mh] ? (RT(this), k_.update.call(this, g), this[mh] = null) : k_[w].call(this, g); + } catch (X) { + throw this[zc] = !1, X; + } + if (R ? O = { + type: E.event || A, + escapeConnect: S, + batch: M + } : O = M[0], this[zc] = !1, !v) { + var H = this._messageCenter; + if (H.trigger(O.type, O), P) { + var Y = { + type: "selectchanged", + escapeConnect: S, + selected: Q3e(C), + isFromClick: g.isFromClick || !1, + fromAction: g.type, + fromActionPayload: g + }; + H.trigger(Y.type, Y); + } + } + }, PA = function(g) { + for (var v = this._pendingActions; v.length; ) { + var y = v.shift(); + _z.call(this, y, g); + } + }, NA = function(g) { + !g && this.trigger("updated"); + }, Sae = function(g, v) { + g.on("rendered", function(y) { + v.trigger("rendered", y), // Although zr is dirty if initial animation is not finished + // and this checking is called on frame, we also check + // animation finished for robustness. + g.animation.isFinished() && !v[mh] && !v._scheduler.unfinished && !v._pendingActions.length && v.trigger("finished"); + }); + }, bae = function(g, v) { + g.on("mouseover", function(y) { + var C = y.target, A = Fb(C, vR); + A && (Z3e(A, y, v._api), Qd(v)); + }).on("mouseout", function(y) { + var C = y.target, A = Fb(C, vR); + A && (q3e(A, y, v._api), Qd(v)); + }).on("click", function(y) { + var C = y.target, A = Fb(C, function(E) { + return Tn(E).dataIndex != null; + }, !0); + if (A) { + var S = A.selected ? "unselect" : "select", _ = Tn(A); + v._api.dispatchAction({ + type: S, + dataType: _.dataType, + dataIndexInside: _.dataIndex, + seriesIndex: _.seriesIndex, + isFromClick: !0 + }); + } + }); + }; + function r(g) { + g.clearColorPalette(), g.eachSeries(function(v) { + v.clearColorPalette(); + }); + } + function n(g) { + var v = [], y = [], C = !1; + if (g.eachComponent(function(E, I) { + var w = I.get("zlevel") || 0, x = I.get("z") || 0, b = I.getZLevelKey(); + C = C || !!b, (E === "series" ? y : v).push({ + zlevel: w, + z: x, + idx: I.componentIndex, + type: E, + key: b + }); + }), C) { + var A = v.concat(y), S, _; + yN(A, function(E, I) { + return E.zlevel === I.zlevel ? E.z - I.z : E.zlevel - I.zlevel; + }), Ee(A, function(E) { + var I = g.getComponent(E.type, E.idx), w = E.zlevel, x = E.key; + S != null && (w = Math.max(S, w)), x ? (w === S && x !== _ && w++, _ = x) : _ && (w === S && w++, _ = ""), S = w, I.setZLevel(w); + }); + } + } + Sz = function(g, v, y, C, A) { + n(v), Eae(g, v, y, C, A), Ee(g._chartsViews, function(S) { + S.__alive = !1; + }), iP(g, v, y, C, A), Ee(g._chartsViews, function(S) { + S.__alive || S.remove(v, y); + }); + }, Eae = function(g, v, y, C, A, S) { + Ee(S || g._componentsViews, function(_) { + var E = _.__model; + d(E, _), _.render(E, v, y, C), l(E, _), f(E, _); + }); + }, iP = function(g, v, y, C, A, S) { + var _ = g._scheduler; + A = $t(A || {}, { + updatedSeries: v.getSeries() + }), _p.trigger("series:beforeupdate", v, y, A); + var E = !1; + v.eachSeries(function(I) { + var w = g._chartsMap[I.__viewId]; + w.__alive = !0; + var x = w.renderTask; + _.updatePayload(x, C), d(I, w), S && S.get(I.uid) && x.dirty(), x.perform(_.getPerformArgs(x)) && (E = !0), w.group.silent = !!I.get("silent"), o(I, w), iie(I); + }), _.unfinished = E || _.unfinished, _p.trigger("series:layoutlabels", v, y, A), _p.trigger("series:transition", v, y, A), v.eachSeries(function(I) { + var w = g._chartsMap[I.__viewId]; + l(I, w), f(I, w); + }), a(g, v), _p.trigger("series:afterupdate", v, y, A); + }, Qd = function(g) { + g[pz] = !0, g.getZr().wakeUp(); + }, Tae = function(g) { + g[pz] && (g.getZr().storage.traverse(function(v) { + Cw(v) || i(v); + }), g[pz] = !1); + }; + function i(g) { + for (var v = [], y = g.currentStates, C = 0; C < y.length; C++) { + var A = y[C]; + A === "emphasis" || A === "blur" || A === "select" || v.push(A); + } + g.selected && g.states.select && v.push("select"), g.hoverState === wF && g.states.emphasis ? v.push("emphasis") : g.hoverState === vD && g.states.blur && v.push("blur"), g.useStates(v); + } + function a(g, v) { + var y = g._zr, C = y.storage, A = 0; + C.traverse(function(S) { + S.isGroup || A++; + }), A > v.get("hoverLayerThreshold") && !Yi.node && !Yi.worker && v.eachSeries(function(S) { + if (!S.preventUsingHoverLayer) { + var _ = g._chartsMap[S.__viewId]; + _.__alive && _.eachRendered(function(E) { + E.states.emphasis && (E.states.emphasis.hoverLayer = !0); + }); + } + }); + } + function o(g, v) { + var y = g.get("blendMode") || null; + v.eachRendered(function(C) { + C.isGroup || (C.style.blend = y); + }); + } + function l(g, v) { + if (!g.preventAutoZ) { + var y = g.get("z") || 0, C = g.get("zlevel") || 0; + v.eachRendered(function(A) { + return u(A, y, C, -1 / 0), !0; + }); + } + } + function u(g, v, y, C) { + var A = g.getTextContent(), S = g.getTextGuideLine(), _ = g.isGroup; + if (_) + for (var E = g.childrenRef(), I = 0; I < E.length; I++) + C = Math.max(u(E[I], v, y, C), C); + else + g.z = v, g.zlevel = y, C = Math.max(g.z2, C); + if (A && (A.z = v, A.zlevel = y, isFinite(C) && (A.z2 = C + 2)), S) { + var w = g.textGuideLineConfig; + S.z = v, S.zlevel = y, isFinite(C) && (S.z2 = C + (w && w.showAbove ? 1 : -1)); + } + return C; + } + function d(g, v) { + v.eachRendered(function(y) { + if (!Cw(y)) { + var C = y.getTextContent(), A = y.getTextGuideLine(); + y.stateTransition && (y.stateTransition = null), C && C.stateTransition && (C.stateTransition = null), A && A.stateTransition && (A.stateTransition = null), y.hasState() ? (y.prevStates = y.currentStates, y.clearStates()) : y.prevStates && (y.prevStates = null); + } + }); + } + function f(g, v) { + var y = g.getModel("stateAnimation"), C = g.isAnimationEnabled(), A = y.get("duration"), S = A > 0 ? { + duration: A, + delay: y.get("delay"), + easing: y.get("easing") + // additive: stateAnimationModel.get('additive') + } : null; + v.eachRendered(function(_) { + if (_.states && _.states.emphasis) { + if (Cw(_)) + return; + if (_ instanceof Ei && i4e(_), _.__dirty) { + var E = _.prevStates; + E && _.useStates(E); + } + if (C) { + _.stateTransition = S; + var I = _.getTextContent(), w = _.getTextGuideLine(); + I && (I.stateTransition = S), w && (w.stateTransition = S); + } + _.__dirty && i(_); + } + }); + } + Cae = function(g) { + return new /** @class */ + (function(v) { + Dt(y, v); + function y() { + return v !== null && v.apply(this, arguments) || this; + } + return y.prototype.getCoordinateSystems = function() { + return g._coordSysMgr.getCoordinateSystems(); + }, y.prototype.getComponentByElement = function(C) { + for (; C; ) { + var A = C.__ecComponentInfo; + if (A != null) + return g._model.getComponent(A.mainType, A.index); + C = C.parent; + } + }, y.prototype.enterEmphasis = function(C, A) { + Hm(C, A), Qd(g); + }, y.prototype.leaveEmphasis = function(C, A) { + Wm(C, A), Qd(g); + }, y.prototype.enterBlur = function(C) { + nme(C), Qd(g); + }, y.prototype.leaveBlur = function(C) { + I8(C), Qd(g); + }, y.prototype.enterSelect = function(C) { + ime(C), Qd(g); + }, y.prototype.leaveSelect = function(C) { + ame(C), Qd(g); + }, y.prototype.getModel = function() { + return g.getModel(); + }, y.prototype.getViewOfComponentModel = function(C) { + return g.getViewOfComponentModel(C); + }, y.prototype.getViewOfSeriesModel = function(C) { + return g.getViewOfSeriesModel(C); + }, y; + }(oye))(g); + }, r_e = function(g) { + function v(y, C) { + for (var A = 0; A < y.length; A++) { + var S = y[A]; + S[gz] = C; + } + } + Ee(L1, function(y, C) { + g._messageCenter.on(C, function(A) { + if (BL[g.group] && g[gz] !== _ae) { + if (A && A.escapeConnect) + return; + var S = g.makeActionFromEvent(A), _ = []; + Ee(Zb, function(E) { + E !== g && E.group === g.group && _.push(E); + }), v(_, _ae), Ee(_, function(E) { + E[gz] !== UGe && E.dispatchAction(S); + }), v(_, jGe); + } + }); + }); + }; + }(), t; + }(Rf) +), a9 = NL.prototype; +a9.on = qye("on"); +a9.off = qye("off"); +a9.one = function(e, t, r) { + var n = this; + function i() { + for (var a = [], o = 0; o < arguments.length; o++) + a[o] = arguments[o]; + t && t.apply && t.apply(this, a), n.off(e, i); + } + this.on.call(this, e, i, r); +}; +var $Ge = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"]; +var LL = {}, L1 = {}, vW = [], mW = [], FL = [], n_e = {}, yW = {}, Zb = {}, BL = {}, VGe = +/* @__PURE__ */ new Date() - 0, zGe = +/* @__PURE__ */ new Date() - 0, o9 = "_echarts_instance_"; +function s9(e, t, r) { + var n = !(r && r.ssr); + if (n) { + var i = CD(e); + if (i) + return i; + } + var a = new NL(e, t, r); + return a.id = "ec_" + VGe++, Zb[a.id] = a, n && Nve(e, o9, a.id), r_e(a), _p.trigger("afterinit", a), a; +} +function i_e(e) { + if (qt(e)) { + var t = e; + e = null, Ee(t, function(r) { + r.group != null && (e = r.group); + }), e = e || "g_" + zGe++, Ee(t, function(r) { + r.group = e; + }); + } + return BL[e] = !0, e; +} +function l9(e) { + BL[e] = !1; +} +var a_e = l9; +function o_e(e) { + wr(e) ? e = Zb[e] : e instanceof NL || (e = CD(e)), e instanceof NL && !e.isDisposed() && e.dispose(); +} +function CD(e) { + return Zb[Hze(e, o9)]; +} +function s_e(e) { + return Zb[e]; +} +function HF(e, t) { + n_e[e] = t; +} +function TD(e) { + di(mW, e) < 0 && mW.push(e); +} +function WF(e, t) { + d9(vW, e, t, MGe); +} +function c9(e) { + wD("afterinit", e); +} +function u9(e) { + wD("afterupdate", e); +} +function wD(e, t) { + _p.on(e, t); +} +function kf(e, t, r) { + Kr(t) && (r = t, t = ""); + var n = sn(e) ? e.type : [e, e = { + event: t + }][0]; + e.event = (e.event || n).toLowerCase(), t = e.event, !L1[t] && (Qc(yae.test(n) && yae.test(t)), LL[n] || (LL[n] = { + action: r, + actionInfo: e + }), L1[t] = n); +} +function h9(e, t) { + EI.register(e, t); +} +function l_e(e) { + var t = EI.get(e); + if (t) + return t.getDimensionsInfo ? t.getDimensionsInfo() : t.dimensions.slice(); +} +function GF(e, t) { + d9(FL, e, t, Xye, "layout"); +} +function iy(e, t) { + d9(FL, e, t, Kye, "visual"); +} +var wae = []; +function d9(e, t, r, n, i) { + if ((Kr(t) || sn(t)) && (r = t, t = n), !(di(wae, r) >= 0)) { + wae.push(r); + var a = Lye.wrapStageHandler(r, i); + a.__prio = t, a.__raw = r, e.push(a); + } +} +function YF(e, t) { + yW[e] = t; +} +function c_e(e) { + t8({ + createCanvas: e + }); +} +function f9(e, t, r) { + var n = Gye("registerMap"); + n && n(e, t, r); +} +function u_e(e) { + var t = Gye("getMap"); + return t && t(e); +} +var p9 = oWe; +iy(n9, MWe); +iy(zF, kWe); +iy(zF, PWe); +iy(n9, KWe); +iy(zF, ZWe); +iy(Zye, wGe); +TD(lye); +WF(DGe, jHe); +YF("default", NWe); +kf({ + type: Xb, + event: Xb, + update: Xb +}, Ls); +kf({ + type: wN, + event: wN, + update: wN +}, Ls); +kf({ + type: O1, + event: O1, + update: O1 +}, Ls); +kf({ + type: IN, + event: IN, + update: IN +}, Ls); +kf({ + type: M1, + event: M1, + update: M1 +}, Ls); +HF("light", GWe); +HF("dark", YWe); +var h_e = {}, Iae = [], HGe = { + registerPreprocessor: TD, + registerProcessor: WF, + registerPostInit: c9, + registerPostUpdate: u9, + registerUpdateLifecycle: wD, + registerAction: kf, + registerCoordinateSystem: h9, + registerLayout: GF, + registerVisual: iy, + registerTransform: p9, + registerLoading: YF, + registerMap: f9, + registerImpl: xGe, + PRIORITY: i9, + ComponentModel: Mi, + ComponentView: Co, + SeriesModel: fo, + ChartView: Ya, + // TODO Use ComponentModel and SeriesModel instead of Constructor + registerComponentModel: function(e) { + Mi.registerClass(e); + }, + registerComponentView: function(e) { + Co.registerClass(e); + }, + registerSeriesModel: function(e) { + fo.registerClass(e); + }, + registerChartView: function(e) { + Ya.registerClass(e); + }, + registerSubTypeDefaulter: function(e, t) { + Mi.registerSubTypeDefaulter(e, t); + }, + registerPainter: function(e, t) { + bve(e, t); + } +}; +function ii(e) { + if (qt(e)) { + Ee(e, function(t) { + ii(t); + }); + return; + } + di(Iae, e) >= 0 || (Iae.push(e), Kr(e) && (e = { + install: e + }), e.install(HGe)); +} +function LA(e) { + return e == null ? 0 : e.length || 1; +} +function xae(e) { + return e; +} +var WGe = ( + /** @class */ + function() { + function e(t, r, n, i, a, o) { + this._old = t, this._new = r, this._oldKeyGetter = n || xae, this._newKeyGetter = i || xae, this.context = a, this._diffModeMultiple = o === "multiple"; + } + return e.prototype.add = function(t) { + return this._add = t, this; + }, e.prototype.update = function(t) { + return this._update = t, this; + }, e.prototype.updateManyToOne = function(t) { + return this._updateManyToOne = t, this; + }, e.prototype.updateOneToMany = function(t) { + return this._updateOneToMany = t, this; + }, e.prototype.updateManyToMany = function(t) { + return this._updateManyToMany = t, this; + }, e.prototype.remove = function(t) { + return this._remove = t, this; + }, e.prototype.execute = function() { + this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"](); + }, e.prototype._executeOneToOne = function() { + var t = this._old, r = this._new, n = {}, i = new Array(t.length), a = new Array(r.length); + this._initIndexMap(t, null, i, "_oldKeyGetter"), this._initIndexMap(r, n, a, "_newKeyGetter"); + for (var o = 0; o < t.length; o++) { + var l = i[o], u = n[l], d = LA(u); + if (d > 1) { + var f = u.shift(); + u.length === 1 && (n[l] = u[0]), this._update && this._update(f, o); + } else + d === 1 ? (n[l] = null, this._update && this._update(u, o)) : this._remove && this._remove(o); + } + this._performRestAdd(a, n); + }, e.prototype._executeMultiple = function() { + var t = this._old, r = this._new, n = {}, i = {}, a = [], o = []; + this._initIndexMap(t, n, a, "_oldKeyGetter"), this._initIndexMap(r, i, o, "_newKeyGetter"); + for (var l = 0; l < a.length; l++) { + var u = a[l], d = n[u], f = i[u], g = LA(d), v = LA(f); + if (g > 1 && v === 1) + this._updateManyToOne && this._updateManyToOne(f, d), i[u] = null; + else if (g === 1 && v > 1) + this._updateOneToMany && this._updateOneToMany(f, d), i[u] = null; + else if (g === 1 && v === 1) + this._update && this._update(f, d), i[u] = null; + else if (g > 1 && v > 1) + this._updateManyToMany && this._updateManyToMany(f, d), i[u] = null; + else if (g > 1) + for (var y = 0; y < g; y++) + this._remove && this._remove(d[y]); + else + this._remove && this._remove(d); + } + this._performRestAdd(o, i); + }, e.prototype._performRestAdd = function(t, r) { + for (var n = 0; n < t.length; n++) { + var i = t[n], a = r[i], o = LA(a); + if (o > 1) + for (var l = 0; l < o; l++) + this._add && this._add(a[l]); + else + o === 1 && this._add && this._add(a); + r[i] = null; + } + }, e.prototype._initIndexMap = function(t, r, n, i) { + for (var a = this._diffModeMultiple, o = 0; o < t.length; o++) { + var l = "_ec_" + this[i](t[o], o); + if (a || (n[o] = l), !!r) { + var u = r[l], d = LA(u); + d === 0 ? (r[l] = o, a && n.push(l)) : d === 1 ? r[l] = [u, o] : u.push(o); + } + } + }, e; + }() +); +const Gm = WGe; +var GGe = ( + /** @class */ + function() { + function e(t, r) { + this._encode = t, this._schema = r; + } + return e.prototype.get = function() { + return { + // Do not generate full dimension name until fist used. + fullDimensions: this._getFullDimensionNames(), + encode: this._encode + }; + }, e.prototype._getFullDimensionNames = function() { + return this._cachedDimNames || (this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []), this._cachedDimNames; + }, e; + }() +); +function YGe(e, t) { + var r = {}, n = r.encode = {}, i = $r(), a = [], o = [], l = {}; + Ee(e.dimensions, function(v) { + var y = e.getDimensionInfo(v), C = y.coordDim; + if (C) { + var A = y.coordDimIndex; + bz(n, C)[A] = v, y.isExtraCoord || (i.set(C, 1), XGe(y.type) && (a[0] = v), bz(l, C)[A] = e.getDimensionIndex(y.name)), y.defaultTooltip && o.push(v); + } + qme.each(function(S, _) { + var E = bz(n, _), I = y.otherDims[_]; + I != null && I !== !1 && (E[I] = y.name); + }); + }); + var u = [], d = {}; + i.each(function(v, y) { + var C = n[y]; + d[y] = C[0], u = u.concat(C); + }), r.dataDimsOnCoord = u, r.dataDimIndicesOnCoord = er(u, function(v) { + return e.getDimensionInfo(v).storeDimIndex; + }), r.encodeFirstDimNotExtra = d; + var f = n.label; + f && f.length && (a = f.slice()); + var g = n.tooltip; + return g && g.length ? o = g.slice() : o.length || (o = a.slice()), n.defaultedLabel = a, n.defaultedTooltip = o, r.userOutput = new GGe(l, t), r; +} +function bz(e, t) { + return e.hasOwnProperty(t) || (e[t] = []), e[t]; +} +function UL(e) { + return e === "category" ? "ordinal" : e === "time" ? "time" : "float"; +} +function XGe(e) { + return !(e === "ordinal" || e === "time"); +} +var KGe = ( + /** @class */ + function() { + function e(t) { + this.otherDims = {}, t != null && $t(this, t); + } + return e; + }() +); +const ON = KGe; +var ZGe = ea(), qGe = { + float: "f", + int: "i", + ordinal: "o", + number: "n", + time: "t" +}, d_e = ( + /** @class */ + function() { + function e(t) { + this.dimensions = t.dimensions, this._dimOmitted = t.dimensionOmitted, this.source = t.source, this._fullDimCount = t.fullDimensionCount, this._updateDimOmitted(t.dimensionOmitted); + } + return e.prototype.isDimensionOmitted = function() { + return this._dimOmitted; + }, e.prototype._updateDimOmitted = function(t) { + this._dimOmitted = t, t && (this._dimNameMap || (this._dimNameMap = g_e(this.source))); + }, e.prototype.getSourceDimensionIndex = function(t) { + return Fn(this._dimNameMap.get(t), -1); + }, e.prototype.getSourceDimension = function(t) { + var r = this.source.dimensionsDefine; + if (r) + return r[t]; + }, e.prototype.makeStoreSchema = function() { + for (var t = this._fullDimCount, r = uye(this.source), n = !v_e(t), i = "", a = [], o = 0, l = 0; o < t; o++) { + var u = void 0, d = void 0, f = void 0, g = this.dimensions[l]; + if (g && g.storeDimIndex === o) + u = r ? g.name : null, d = g.type, f = g.ordinalMeta, l++; + else { + var v = this.getSourceDimension(o); + v && (u = r ? v.name : null, d = v.type); + } + a.push({ + property: u, + type: d, + ordinalMeta: f + }), r && u != null && (!g || !g.isCalculationCoord) && (i += n ? u.replace(/\`/g, "`1").replace(/\$/g, "`2") : u), i += "$", i += qGe[d] || "f", f && (i += f.uid), i += "$"; + } + var y = this.source, C = [y.seriesLayoutBy, y.startIndex, i].join("$$"); + return { + dimensions: a, + hash: C + }; + }, e.prototype.makeOutputDimensionNames = function() { + for (var t = [], r = 0, n = 0; r < this._fullDimCount; r++) { + var i = void 0, a = this.dimensions[n]; + if (a && a.storeDimIndex === r) + a.isCalculationCoord || (i = a.name), n++; + else { + var o = this.getSourceDimension(r); + o && (i = o.name); + } + t.push(i); + } + return t; + }, e.prototype.appendCalculationDimension = function(t) { + this.dimensions.push(t), t.isCalculationCoord = !0, this._fullDimCount++, this._updateDimOmitted(!0); + }, e; + }() +); +function f_e(e) { + return e instanceof d_e; +} +function p_e(e) { + for (var t = $r(), r = 0; r < (e || []).length; r++) { + var n = e[r], i = sn(n) ? n.name : n; + i != null && t.get(i) == null && t.set(i, r); + } + return t; +} +function g_e(e) { + var t = ZGe(e); + return t.dimNameMap || (t.dimNameMap = p_e(e.dimensionsDefine)); +} +function v_e(e) { + return e > 30; +} +var FA = sn, P_ = er, JGe = typeof Int32Array == "undefined" ? Array : Int32Array, QGe = "e\0\0", Aae = -1, e6e = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"], t6e = ["_approximateExtent"], Rae, aP, BA, UA, Ez, oP, Cz, r6e = ( + /** @class */ + function() { + function e(t, r) { + this.type = "list", this._dimOmitted = !1, this._nameList = [], this._idList = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this._itemLayouts = [], this._graphicEls = [], this._approximateExtent = {}, this._calculationInfo = {}, this.hasItemOption = !1, this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "lttbDownSample", "map"], this.CHANGABLE_METHODS = ["filterSelf", "selectRange"], this.DOWNSAMPLE_METHODS = ["downSample", "lttbDownSample"]; + var n, i = !1; + f_e(t) ? (n = t.dimensions, this._dimOmitted = t.isDimensionOmitted(), this._schema = t) : (i = !0, n = t), n = n || ["x", "y"]; + for (var a = {}, o = [], l = {}, u = !1, d = {}, f = 0; f < n.length; f++) { + var g = n[f], v = wr(g) ? new ON({ + name: g + }) : g instanceof ON ? g : new ON(g), y = v.name; + v.type = v.type || "float", v.coordDim || (v.coordDim = y, v.coordDimIndex = 0); + var C = v.otherDims = v.otherDims || {}; + o.push(y), a[y] = v, d[y] != null && (u = !0), v.createInvertedIndices && (l[y] = []), C.itemName === 0 && (this._nameDimIdx = f), C.itemId === 0 && (this._idDimIdx = f), i && (v.storeDimIndex = f); + } + if (this.dimensions = o, this._dimInfos = a, this._initGetDimensionInfo(u), this.hostModel = r, this._invertedIndicesMap = l, this._dimOmitted) { + var A = this._dimIdxToName = $r(); + Ee(o, function(S) { + A.set(a[S].storeDimIndex, S); + }); + } + } + return e.prototype.getDimension = function(t) { + var r = this._recognizeDimIndex(t); + if (r == null) + return t; + if (r = t, !this._dimOmitted) + return this.dimensions[r]; + var n = this._dimIdxToName.get(r); + if (n != null) + return n; + var i = this._schema.getSourceDimension(r); + if (i) + return i.name; + }, e.prototype.getDimensionIndex = function(t) { + var r = this._recognizeDimIndex(t); + if (r != null) + return r; + if (t == null) + return -1; + var n = this._getDimInfo(t); + return n ? n.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(t) : -1; + }, e.prototype._recognizeDimIndex = function(t) { + if (Qi(t) || t != null && !isNaN(t) && !this._getDimInfo(t) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(t) < 0)) + return +t; + }, e.prototype._getStoreDimIndex = function(t) { + var r = this.getDimensionIndex(t); + return r; + }, e.prototype.getDimensionInfo = function(t) { + return this._getDimInfo(this.getDimension(t)); + }, e.prototype._initGetDimensionInfo = function(t) { + var r = this._dimInfos; + this._getDimInfo = t ? function(n) { + return r.hasOwnProperty(n) ? r[n] : void 0; + } : function(n) { + return r[n]; + }; + }, e.prototype.getDimensionsOnCoord = function() { + return this._dimSummary.dataDimsOnCoord.slice(); + }, e.prototype.mapDimension = function(t, r) { + var n = this._dimSummary; + if (r == null) + return n.encodeFirstDimNotExtra[t]; + var i = n.encode[t]; + return i ? i[r] : null; + }, e.prototype.mapDimensionsAll = function(t) { + var r = this._dimSummary, n = r.encode[t]; + return (n || []).slice(); + }, e.prototype.getStore = function() { + return this._store; + }, e.prototype.initData = function(t, r, n) { + var i = this, a; + if (t instanceof cW && (a = t), !a) { + var o = this.dimensions, l = Y8(t) || Sc(t) ? new hye(t, o.length) : t; + a = new cW(); + var u = P_(o, function(d) { + return { + type: i._dimInfos[d].type, + property: d + }; + }); + a.initData(l, u, n); + } + this._store = a, this._nameList = (r || []).slice(), this._idList = [], this._nameRepeatCount = {}, this._doInit(0, a.count()), this._dimSummary = YGe(this, this._schema), this.userOutput = this._dimSummary.userOutput; + }, e.prototype.appendData = function(t) { + var r = this._store.appendData(t); + this._doInit(r[0], r[1]); + }, e.prototype.appendValues = function(t, r) { + var n = this._store.appendValues(t, r.length), i = n.start, a = n.end, o = this._shouldMakeIdFromName(); + if (this._updateOrdinalMeta(), r) + for (var l = i; l < a; l++) { + var u = l - i; + this._nameList[l] = r[u], o && Cz(this, l); + } + }, e.prototype._updateOrdinalMeta = function() { + for (var t = this._store, r = this.dimensions, n = 0; n < r.length; n++) { + var i = this._dimInfos[r[n]]; + i.ordinalMeta && t.collectOrdinalMeta(i.storeDimIndex, i.ordinalMeta); + } + }, e.prototype._shouldMakeIdFromName = function() { + var t = this._store.getProvider(); + return this._idDimIdx == null && t.getSource().sourceFormat !== c0 && !t.fillStorage; + }, e.prototype._doInit = function(t, r) { + if (!(t >= r)) { + var n = this._store, i = n.getProvider(); + this._updateOrdinalMeta(); + var a = this._nameList, o = this._idList, l = i.getSource().sourceFormat, u = l === Of; + if (u && !i.pure) + for (var d = [], f = t; f < r; f++) { + var g = i.getItem(f, d); + if (!this.hasItemOption && Oze(g) && (this.hasItemOption = !0), g) { + var v = g.name; + a[f] == null && v != null && (a[f] = ml(v, null)); + var y = g.id; + o[f] == null && y != null && (o[f] = ml(y, null)); + } + } + if (this._shouldMakeIdFromName()) + for (var f = t; f < r; f++) + Cz(this, f); + Rae(this); + } + }, e.prototype.getApproximateExtent = function(t) { + return this._approximateExtent[t] || this._store.getDataExtent(this._getStoreDimIndex(t)); + }, e.prototype.setApproximateExtent = function(t, r) { + r = this.getDimension(r), this._approximateExtent[r] = t.slice(); + }, e.prototype.getCalculationInfo = function(t) { + return this._calculationInfo[t]; + }, e.prototype.setCalculationInfo = function(t, r) { + FA(t) ? $t(this._calculationInfo, t) : this._calculationInfo[t] = r; + }, e.prototype.getName = function(t) { + var r = this.getRawIndex(t), n = this._nameList[r]; + return n == null && this._nameDimIdx != null && (n = BA(this, this._nameDimIdx, r)), n == null && (n = ""), n; + }, e.prototype._getCategory = function(t, r) { + var n = this._store.get(t, r), i = this._store.getOrdinalMeta(t); + return i ? i.categories[n] : n; + }, e.prototype.getId = function(t) { + return aP(this, this.getRawIndex(t)); + }, e.prototype.count = function() { + return this._store.count(); + }, e.prototype.get = function(t, r) { + var n = this._store, i = this._dimInfos[t]; + if (i) + return n.get(i.storeDimIndex, r); + }, e.prototype.getByRawIndex = function(t, r) { + var n = this._store, i = this._dimInfos[t]; + if (i) + return n.getByRawIndex(i.storeDimIndex, r); + }, e.prototype.getIndices = function() { + return this._store.getIndices(); + }, e.prototype.getDataExtent = function(t) { + return this._store.getDataExtent(this._getStoreDimIndex(t)); + }, e.prototype.getSum = function(t) { + return this._store.getSum(this._getStoreDimIndex(t)); + }, e.prototype.getMedian = function(t) { + return this._store.getMedian(this._getStoreDimIndex(t)); + }, e.prototype.getValues = function(t, r) { + var n = this, i = this._store; + return qt(t) ? i.getValues(P_(t, function(a) { + return n._getStoreDimIndex(a); + }), r) : i.getValues(t); + }, e.prototype.hasValue = function(t) { + for (var r = this._dimSummary.dataDimIndicesOnCoord, n = 0, i = r.length; n < i; n++) + if (isNaN(this._store.get(r[n], t))) + return !1; + return !0; + }, e.prototype.indexOfName = function(t) { + for (var r = 0, n = this._store.count(); r < n; r++) + if (this.getName(r) === t) + return r; + return -1; + }, e.prototype.getRawIndex = function(t) { + return this._store.getRawIndex(t); + }, e.prototype.indexOfRawIndex = function(t) { + return this._store.indexOfRawIndex(t); + }, e.prototype.rawIndexOf = function(t, r) { + var n = t && this._invertedIndicesMap[t], i = n[r]; + return i == null || isNaN(i) ? Aae : i; + }, e.prototype.indicesOfNearest = function(t, r, n) { + return this._store.indicesOfNearest(this._getStoreDimIndex(t), r, n); + }, e.prototype.each = function(t, r, n) { + Kr(t) && (n = r, r = t, t = []); + var i = n || this, a = P_(UA(t), this._getStoreDimIndex, this); + this._store.each(a, i ? Ar(r, i) : r); + }, e.prototype.filterSelf = function(t, r, n) { + Kr(t) && (n = r, r = t, t = []); + var i = n || this, a = P_(UA(t), this._getStoreDimIndex, this); + return this._store = this._store.filter(a, i ? Ar(r, i) : r), this; + }, e.prototype.selectRange = function(t) { + var r = this, n = {}, i = Ri(t); + return Ee(i, function(a) { + var o = r._getStoreDimIndex(a); + n[o] = t[a]; + }), this._store = this._store.selectRange(n), this; + }, e.prototype.mapArray = function(t, r, n) { + Kr(t) && (n = r, r = t, t = []), n = n || this; + var i = []; + return this.each(t, function() { + i.push(r && r.apply(this, arguments)); + }, n), i; + }, e.prototype.map = function(t, r, n, i) { + var a = n || i || this, o = P_(UA(t), this._getStoreDimIndex, this), l = oP(this); + return l._store = this._store.map(o, a ? Ar(r, a) : r), l; + }, e.prototype.modify = function(t, r, n, i) { + var a = n || i || this, o = P_(UA(t), this._getStoreDimIndex, this); + this._store.modify(o, a ? Ar(r, a) : r); + }, e.prototype.downSample = function(t, r, n, i) { + var a = oP(this); + return a._store = this._store.downSample(this._getStoreDimIndex(t), r, n, i), a; + }, e.prototype.lttbDownSample = function(t, r) { + var n = oP(this); + return n._store = this._store.lttbDownSample(this._getStoreDimIndex(t), r), n; + }, e.prototype.getRawDataItem = function(t) { + return this._store.getRawDataItem(t); + }, e.prototype.getItemModel = function(t) { + var r = this.hostModel, n = this.getRawDataItem(t); + return new Wa(n, r, r && r.ecModel); + }, e.prototype.diff = function(t) { + var r = this; + return new Gm(t ? t.getStore().getIndices() : [], this.getStore().getIndices(), function(n) { + return aP(t, n); + }, function(n) { + return aP(r, n); + }); + }, e.prototype.getVisual = function(t) { + var r = this._visual; + return r && r[t]; + }, e.prototype.setVisual = function(t, r) { + this._visual = this._visual || {}, FA(t) ? $t(this._visual, t) : this._visual[t] = r; + }, e.prototype.getItemVisual = function(t, r) { + var n = this._itemVisuals[t], i = n && n[r]; + return i == null ? this.getVisual(r) : i; + }, e.prototype.hasItemVisual = function() { + return this._itemVisuals.length > 0; + }, e.prototype.ensureUniqueItemVisual = function(t, r) { + var n = this._itemVisuals, i = n[t]; + i || (i = n[t] = {}); + var a = i[r]; + return a == null && (a = this.getVisual(r), qt(a) ? a = a.slice() : FA(a) && (a = $t({}, a)), i[r] = a), a; + }, e.prototype.setItemVisual = function(t, r, n) { + var i = this._itemVisuals[t] || {}; + this._itemVisuals[t] = i, FA(r) ? $t(i, r) : i[r] = n; + }, e.prototype.clearAllVisual = function() { + this._visual = {}, this._itemVisuals = []; + }, e.prototype.setLayout = function(t, r) { + FA(t) ? $t(this._layout, t) : this._layout[t] = r; + }, e.prototype.getLayout = function(t) { + return this._layout[t]; + }, e.prototype.getItemLayout = function(t) { + return this._itemLayouts[t]; + }, e.prototype.setItemLayout = function(t, r, n) { + this._itemLayouts[t] = n ? $t(this._itemLayouts[t] || {}, r) : r; + }, e.prototype.clearItemLayouts = function() { + this._itemLayouts.length = 0; + }, e.prototype.setItemGraphicEl = function(t, r) { + var n = this.hostModel && this.hostModel.seriesIndex; + ZH(n, this.dataType, t, r), this._graphicEls[t] = r; + }, e.prototype.getItemGraphicEl = function(t) { + return this._graphicEls[t]; + }, e.prototype.eachItemGraphicEl = function(t, r) { + Ee(this._graphicEls, function(n, i) { + n && t && t.call(r, n, i); + }); + }, e.prototype.cloneShallow = function(t) { + return t || (t = new e(this._schema ? this._schema : P_(this.dimensions, this._getDimInfo, this), this.hostModel)), Ez(t, this), t._store = this._store, t; + }, e.prototype.wrapMethod = function(t, r) { + var n = this[t]; + Kr(n) && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[t] = function() { + var i = n.apply(this, arguments); + return r.apply(this, [i].concat(pF(arguments))); + }); + }, e.internalField = function() { + Rae = function(t) { + var r = t._invertedIndicesMap; + Ee(r, function(n, i) { + var a = t._dimInfos[i], o = a.ordinalMeta, l = t._store; + if (o) { + n = r[i] = new JGe(o.categories.length); + for (var u = 0; u < n.length; u++) + n[u] = Aae; + for (var u = 0; u < l.count(); u++) + n[l.get(a.storeDimIndex, u)] = u; + } + }); + }, BA = function(t, r, n) { + return ml(t._getCategory(r, n), null); + }, aP = function(t, r) { + var n = t._idList[r]; + return n == null && t._idDimIdx != null && (n = BA(t, t._idDimIdx, r)), n == null && (n = QGe + r), n; + }, UA = function(t) { + return qt(t) || (t = t != null ? [t] : []), t; + }, oP = function(t) { + var r = new e(t._schema ? t._schema : P_(t.dimensions, t._getDimInfo, t), t.hostModel); + return Ez(r, t), r; + }, Ez = function(t, r) { + Ee(e6e.concat(r.__wrappedMethods || []), function(n) { + r.hasOwnProperty(n) && (t[n] = r[n]); + }), t.__wrappedMethods = r.__wrappedMethods, Ee(t6e, function(n) { + t[n] = cn(r[n]); + }), t._calculationInfo = $t({}, r._calculationInfo); + }, Cz = function(t, r) { + var n = t._nameList, i = t._idList, a = t._nameDimIdx, o = t._idDimIdx, l = n[r], u = i[r]; + if (l == null && a != null && (n[r] = l = BA(t, a, r)), u == null && o != null && (i[r] = u = BA(t, o, r)), u == null && l != null) { + var d = t._nameRepeatCount, f = d[l] = (d[l] || 0) + 1; + u = l, f > 1 && (u += "__ec__" + f), i[r] = u; + } + }; + }(), e; + }() +); +const Ql = r6e; +function m_e(e, t) { + return II(e, t).dimensions; +} +function II(e, t) { + Y8(e) || (e = X8(e)), t = t || {}; + var r = t.coordDimensions || [], n = t.dimensionsDefine || e.dimensionsDefine || [], i = $r(), a = [], o = i6e(e, r, n, t.dimensionsCount), l = t.canOmitUnusedDimensions && v_e(o), u = n === e.dimensionsDefine, d = u ? g_e(e) : p_e(n), f = t.encodeDefine; + !f && t.encodeDefaulter && (f = t.encodeDefaulter(e, o)); + for (var g = $r(f), v = new _ye(o), y = 0; y < v.length; y++) + v[y] = -1; + function C(O) { + var P = v[O]; + if (P < 0) { + var B = n[O], H = sn(B) ? B : { + name: B + }, Y = new ON(), X = H.name; + X != null && d.get(X) != null && (Y.name = Y.displayName = X), H.type != null && (Y.type = H.type), H.displayName != null && (Y.displayName = H.displayName); + var ee = a.length; + return v[O] = ee, Y.storeDimIndex = O, a.push(Y), Y; + } + return a[P]; + } + if (!l) + for (var y = 0; y < o; y++) + C(y); + g.each(function(O, P) { + var B = qa(O).slice(); + if (B.length === 1 && !wr(B[0]) && B[0] < 0) { + g.set(P, !1); + return; + } + var H = g.set(P, []); + Ee(B, function(Y, X) { + var ee = wr(Y) ? d.get(Y) : Y; + ee != null && ee < o && (H[X] = ee, S(C(ee), P, X)); + }); + }); + var A = 0; + Ee(r, function(O) { + var P, B, H, Y; + if (wr(O)) + P = O, Y = {}; + else { + Y = O, P = Y.name; + var X = Y.ordinalMeta; + Y.ordinalMeta = null, Y = $t({}, Y), Y.ordinalMeta = X, B = Y.dimsDef, H = Y.otherDims, Y.name = Y.coordDim = Y.coordDimIndex = Y.dimsDef = Y.otherDims = null; + } + var ee = g.get(P); + if (ee !== !1) { + if (ee = qa(ee), !ee.length) + for (var ae = 0; ae < (B && B.length || 1); ae++) { + for (; A < o && C(A).coordDim != null; ) + A++; + A < o && ee.push(A++); + } + Ee(ee, function(J, ne) { + var fe = C(J); + if (u && Y.type != null && (fe.type = Y.type), S(Jr(fe, Y), P, ne), fe.name == null && B) { + var de = B[ne]; + !sn(de) && (de = { + name: de + }), fe.name = fe.displayName = de.name, fe.defaultTooltip = de.defaultTooltip; + } + H && Jr(fe.otherDims, H); + }); + } + }); + function S(O, P, B) { + qme.get(P) != null ? O.otherDims[P] = B : (O.coordDim = P, O.coordDimIndex = B, i.set(P, !0)); + } + var _ = t.generateCoord, E = t.generateCoordCount, I = E != null; + E = _ ? E || 1 : 0; + var w = _ || "value"; + function x(O) { + O.name == null && (O.name = O.coordDim); + } + if (l) + Ee(a, function(O) { + x(O); + }), a.sort(function(O, P) { + return O.storeDimIndex - P.storeDimIndex; + }); + else + for (var b = 0; b < o; b++) { + var R = C(b), M = R.coordDim; + M == null && (R.coordDim = a6e(w, i, I), R.coordDimIndex = 0, (!_ || E <= 0) && (R.isExtraCoord = !0), E--), x(R), R.type == null && (tye(e, b) === gc.Must || R.isExtraCoord && (R.otherDims.itemName != null || R.otherDims.seriesName != null)) && (R.type = "ordinal"); + } + return n6e(a), new d_e({ + source: e, + dimensions: a, + fullDimensionCount: o, + dimensionOmitted: l + }); +} +function n6e(e) { + for (var t = $r(), r = 0; r < e.length; r++) { + var n = e[r], i = n.name, a = t.get(i) || 0; + a > 0 && (n.name = i + (a - 1)), a++, t.set(i, a); + } +} +function i6e(e, t, r, n) { + var i = Math.max(e.dimensionsDetectedCount || 1, t.length, r.length, n || 0); + return Ee(t, function(a) { + var o; + sn(a) && (o = a.dimsDef) && (i = Math.max(i, o.length)); + }), i; +} +function a6e(e, t, r) { + if (r || t.hasKey(e)) { + for (var n = 0; t.hasKey(e + n); ) + n++; + e += n; + } + return t.set(e, !0), e; +} +var o6e = ( + /** @class */ + function() { + function e(t) { + this.coordSysDims = [], this.axisMap = $r(), this.categoryAxisMap = $r(), this.coordSysName = t; + } + return e; + }() +); +function s6e(e) { + var t = e.get("coordinateSystem"), r = new o6e(t), n = l6e[t]; + if (n) + return n(e, r, r.axisMap, r.categoryAxisMap), r; +} +var l6e = { + cartesian2d: function(e, t, r, n) { + var i = e.getReferringComponents("xAxis", tl).models[0], a = e.getReferringComponents("yAxis", tl).models[0]; + t.coordSysDims = ["x", "y"], r.set("x", i), r.set("y", a), DT(i) && (n.set("x", i), t.firstCategoryDimIndex = 0), DT(a) && (n.set("y", a), t.firstCategoryDimIndex == null && (t.firstCategoryDimIndex = 1)); + }, + singleAxis: function(e, t, r, n) { + var i = e.getReferringComponents("singleAxis", tl).models[0]; + t.coordSysDims = ["single"], r.set("single", i), DT(i) && (n.set("single", i), t.firstCategoryDimIndex = 0); + }, + polar: function(e, t, r, n) { + var i = e.getReferringComponents("polar", tl).models[0], a = i.findAxisModel("radiusAxis"), o = i.findAxisModel("angleAxis"); + t.coordSysDims = ["radius", "angle"], r.set("radius", a), r.set("angle", o), DT(a) && (n.set("radius", a), t.firstCategoryDimIndex = 0), DT(o) && (n.set("angle", o), t.firstCategoryDimIndex == null && (t.firstCategoryDimIndex = 1)); + }, + geo: function(e, t, r, n) { + t.coordSysDims = ["lng", "lat"]; + }, + parallel: function(e, t, r, n) { + var i = e.ecModel, a = i.getComponent("parallel", e.get("parallelIndex")), o = t.coordSysDims = a.dimensions.slice(); + Ee(a.parallelAxisIndex, function(l, u) { + var d = i.getComponent("parallelAxis", l), f = o[u]; + r.set(f, d), DT(d) && (n.set(f, d), t.firstCategoryDimIndex == null && (t.firstCategoryDimIndex = u)); + }); + } +}; +function DT(e) { + return e.get("type") === "category"; +} +function y_e(e, t, r) { + r = r || {}; + var n = r.byIndex, i = r.stackedCoordDimension, a, o, l; + c6e(t) ? a = t : (o = t.schema, a = o.dimensions, l = t.store); + var u = !!(e && e.get("stack")), d, f, g, v; + if (Ee(a, function(E, I) { + wr(E) && (a[I] = E = { + name: E + }), u && !E.isExtraCoord && (!n && !d && E.ordinalMeta && (d = E), !f && E.type !== "ordinal" && E.type !== "time" && (!i || i === E.coordDim) && (f = E)); + }), f && !n && !d && (n = !0), f) { + g = "__\0ecstackresult_" + e.id, v = "__\0ecstackedover_" + e.id, d && (d.createInvertedIndices = !0); + var y = f.coordDim, C = f.type, A = 0; + Ee(a, function(E) { + E.coordDim === y && A++; + }); + var S = { + name: g, + coordDim: y, + coordDimIndex: A, + type: C, + isExtraCoord: !0, + isCalculationCoord: !0, + storeDimIndex: a.length + }, _ = { + name: v, + // This dimension contains stack base (generally, 0), so do not set it as + // `stackedDimCoordDim` to avoid extent calculation, consider log scale. + coordDim: v, + coordDimIndex: A + 1, + type: C, + isExtraCoord: !0, + isCalculationCoord: !0, + storeDimIndex: a.length + 1 + }; + o ? (l && (S.storeDimIndex = l.ensureCalculationDimension(v, C), _.storeDimIndex = l.ensureCalculationDimension(g, C)), o.appendCalculationDimension(S), o.appendCalculationDimension(_)) : (a.push(S), a.push(_)); + } + return { + stackedDimension: f && f.name, + stackedByDimension: d && d.name, + isStackedByIndex: n, + stackedOverDimension: v, + stackResultDimension: g + }; +} +function c6e(e) { + return !f_e(e.schema); +} +function Ym(e, t) { + return !!t && t === e.getCalculationInfo("stackedDimension"); +} +function g9(e, t) { + return Ym(e, t) ? e.getCalculationInfo("stackResultDimension") : t; +} +function u6e(e, t) { + var r = e.get("coordinateSystem"), n = EI.get(r), i; + return t && t.coordSysDims && (i = er(t.coordSysDims, function(a) { + var o = { + name: a + }, l = t.axisMap.get(a); + if (l) { + var u = l.get("type"); + o.type = UL(u); + } + return o; + })), i || (i = n && (n.getDimensionsInfo ? n.getDimensionsInfo() : n.dimensions.slice()) || ["x", "y"]), i; +} +function h6e(e, t, r) { + var n, i; + return r && Ee(e, function(a, o) { + var l = a.coordDim, u = r.categoryAxisMap.get(l); + u && (n == null && (n = o), a.ordinalMeta = u.getOrdinalMeta(), t && (a.createInvertedIndices = !0)), a.otherDims.itemName != null && (i = !0); + }), !i && n != null && (e[n].otherDims.itemName = 0), n; +} +function fv(e, t, r) { + r = r || {}; + var n = t.getSourceManager(), i, a = !1; + e ? (a = !0, i = X8(e)) : (i = n.getSource(), a = i.sourceFormat === Of); + var o = s6e(t), l = u6e(t, o), u = r.useEncodeDefaulter, d = Kr(u) ? u : u ? Ln(eye, l, t) : null, f = { + coordDimensions: l, + generateCoord: r.generateCoord, + encodeDefine: t.getEncode(), + encodeDefaulter: d, + canOmitUnusedDimensions: !a + }, g = II(i, f), v = h6e(g.dimensions, r.createInvertedIndices, o), y = a ? null : n.getSharedDataStore(g), C = y_e(t, { + schema: g, + store: y + }), A = new Ql(g, t); + A.setCalculationInfo(C); + var S = v != null && d6e(i) ? function(_, E, I, w) { + return w === v ? I : this.defaultDimValueGetter(_, E, I, w); + } : null; + return A.hasItemOption = !1, A.initData( + // Try to reuse the data store in sourceManager if using dataset. + a ? i : y, + null, + S + ), A; +} +function d6e(e) { + if (e.sourceFormat === Of) { + var t = f6e(e.data || []); + return !qt(hI(t)); + } +} +function f6e(e) { + for (var t = 0; t < e.length && e[t] == null; ) + t++; + return e[t]; +} +var __e = ( + /** @class */ + function() { + function e(t) { + this._setting = t || {}, this._extent = [1 / 0, -1 / 0]; + } + return e.prototype.getSetting = function(t) { + return this._setting[t]; + }, e.prototype.unionExtent = function(t) { + var r = this._extent; + t[0] < r[0] && (r[0] = t[0]), t[1] > r[1] && (r[1] = t[1]); + }, e.prototype.unionExtentFromData = function(t, r) { + this.unionExtent(t.getApproximateExtent(r)); + }, e.prototype.getExtent = function() { + return this._extent.slice(); + }, e.prototype.setExtent = function(t, r) { + var n = this._extent; + isNaN(t) || (n[0] = t), isNaN(r) || (n[1] = r); + }, e.prototype.isInExtentRange = function(t) { + return this._extent[0] <= t && this._extent[1] >= t; + }, e.prototype.isBlank = function() { + return this._isBlank; + }, e.prototype.setBlank = function(t) { + this._isBlank = t; + }, e; + }() +); +bF(__e); +const ay = __e; +var p6e = 0, g6e = ( + /** @class */ + function() { + function e(t) { + this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, this.uid = ++p6e; + } + return e.createByAxisModel = function(t) { + var r = t.option, n = r.data, i = n && er(n, v6e); + return new e({ + categories: i, + needCollect: !i, + // deduplication is default in axis. + deduplication: r.dedplication !== !1 + }); + }, e.prototype.getOrdinal = function(t) { + return this._getOrCreateMap().get(t); + }, e.prototype.parseAndCollect = function(t) { + var r, n = this._needCollect; + if (!wr(t) && !n) + return t; + if (n && !this._deduplication) + return r = this.categories.length, this.categories[r] = t, r; + var i = this._getOrCreateMap(); + return r = i.get(t), r == null && (n ? (r = this.categories.length, this.categories[r] = t, i.set(t, r)) : r = NaN), r; + }, e.prototype._getOrCreateMap = function() { + return this._map || (this._map = $r(this.categories)); + }, e; + }() +); +function v6e(e) { + return sn(e) && e.value != null ? e.value : e + ""; +} +const _W = g6e; +function SW(e) { + return e.type === "interval" || e.type === "log"; +} +function m6e(e, t, r, n) { + var i = {}, a = e[1] - e[0], o = i.interval = v8(a / t, !0); + r != null && o < r && (o = i.interval = r), n != null && o > n && (o = i.interval = n); + var l = i.intervalPrecision = S_e(o), u = i.niceTickExtent = [Is(Math.ceil(e[0] / o) * o, l), Is(Math.floor(e[1] / o) * o, l)]; + return y6e(u, e), i; +} +function Tz(e) { + var t = Math.pow(10, SF(e)), r = e / t; + return r ? r === 2 ? r = 3 : r === 3 ? r = 5 : r *= 2 : r = 1, Is(r * t); +} +function S_e(e) { + return wp(e) + 2; +} +function Dae(e, t, r) { + e[t] = Math.max(Math.min(e[t], r[1]), r[0]); +} +function y6e(e, t) { + !isFinite(e[0]) && (e[0] = t[0]), !isFinite(e[1]) && (e[1] = t[1]), Dae(e, 0, t), Dae(e, 1, t), e[0] > e[1] && (e[0] = e[1]); +} +function XF(e, t) { + return e >= t[0] && e <= t[1]; +} +function KF(e, t) { + return t[1] === t[0] ? 0.5 : (e - t[0]) / (t[1] - t[0]); +} +function ZF(e, t) { + return e * (t[1] - t[0]) + t[0]; +} +var b_e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + n.type = "ordinal"; + var i = n.getSetting("ordinalMeta"); + return i || (i = new _W({})), qt(i) && (i = new _W({ + categories: er(i, function(a) { + return sn(a) ? a.value : a; + }) + })), n._ordinalMeta = i, n._extent = n.getSetting("extent") || [0, i.categories.length - 1], n; + } + return t.prototype.parse = function(r) { + return r == null ? NaN : wr(r) ? this._ordinalMeta.getOrdinal(r) : Math.round(r); + }, t.prototype.contain = function(r) { + return r = this.parse(r), XF(r, this._extent) && this._ordinalMeta.categories[r] != null; + }, t.prototype.normalize = function(r) { + return r = this._getTickNumber(this.parse(r)), KF(r, this._extent); + }, t.prototype.scale = function(r) { + return r = Math.round(ZF(r, this._extent)), this.getRawOrdinalNumber(r); + }, t.prototype.getTicks = function() { + for (var r = [], n = this._extent, i = n[0]; i <= n[1]; ) + r.push({ + value: i + }), i++; + return r; + }, t.prototype.getMinorTicks = function(r) { + }, t.prototype.setSortInfo = function(r) { + if (r == null) { + this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null; + return; + } + for (var n = r.ordinalNumbers, i = this._ordinalNumbersByTick = [], a = this._ticksByOrdinalNumber = [], o = 0, l = this._ordinalMeta.categories.length, u = Math.min(l, n.length); o < u; ++o) { + var d = n[o]; + i[o] = d, a[d] = o; + } + for (var f = 0; o < l; ++o) { + for (; a[f] != null; ) + f++; + i.push(f), a[f] = o; + } + }, t.prototype._getTickNumber = function(r) { + var n = this._ticksByOrdinalNumber; + return n && r >= 0 && r < n.length ? n[r] : r; + }, t.prototype.getRawOrdinalNumber = function(r) { + var n = this._ordinalNumbersByTick; + return n && r >= 0 && r < n.length ? n[r] : r; + }, t.prototype.getLabel = function(r) { + if (!this.isBlank()) { + var n = this.getRawOrdinalNumber(r.value), i = this._ordinalMeta.categories[n]; + return i == null ? "" : i + ""; + } + }, t.prototype.count = function() { + return this._extent[1] - this._extent[0] + 1; + }, t.prototype.unionExtentFromData = function(r, n) { + this.unionExtent(r.getApproximateExtent(n)); + }, t.prototype.isInExtentRange = function(r) { + return r = this._getTickNumber(r), this._extent[0] <= r && this._extent[1] >= r; + }, t.prototype.getOrdinalMeta = function() { + return this._ordinalMeta; + }, t.prototype.calcNiceTicks = function() { + }, t.prototype.calcNiceExtent = function() { + }, t.type = "ordinal", t; + }(ay) +); +ay.registerClass(b_e); +const v9 = b_e; +var lb = Is, E_e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "interval", r._interval = 0, r._intervalPrecision = 2, r; + } + return t.prototype.parse = function(r) { + return r; + }, t.prototype.contain = function(r) { + return XF(r, this._extent); + }, t.prototype.normalize = function(r) { + return KF(r, this._extent); + }, t.prototype.scale = function(r) { + return ZF(r, this._extent); + }, t.prototype.setExtent = function(r, n) { + var i = this._extent; + isNaN(r) || (i[0] = parseFloat(r)), isNaN(n) || (i[1] = parseFloat(n)); + }, t.prototype.unionExtent = function(r) { + var n = this._extent; + r[0] < n[0] && (n[0] = r[0]), r[1] > n[1] && (n[1] = r[1]), this.setExtent(n[0], n[1]); + }, t.prototype.getInterval = function() { + return this._interval; + }, t.prototype.setInterval = function(r) { + this._interval = r, this._niceExtent = this._extent.slice(), this._intervalPrecision = S_e(r); + }, t.prototype.getTicks = function(r) { + var n = this._interval, i = this._extent, a = this._niceExtent, o = this._intervalPrecision, l = []; + if (!n) + return l; + var u = 1e4; + i[0] < a[0] && (r ? l.push({ + value: lb(a[0] - n, o) + }) : l.push({ + value: i[0] + })); + for (var d = a[0]; d <= a[1] && (l.push({ + value: d + }), d = lb(d + n, o), d !== l[l.length - 1].value); ) + if (l.length > u) + return []; + var f = l.length ? l[l.length - 1].value : a[1]; + return i[1] > f && (r ? l.push({ + value: lb(f + n, o) + }) : l.push({ + value: i[1] + })), l; + }, t.prototype.getMinorTicks = function(r) { + for (var n = this.getTicks(!0), i = [], a = this.getExtent(), o = 1; o < n.length; o++) { + for (var l = n[o], u = n[o - 1], d = 0, f = [], g = l.value - u.value, v = g / r; d < r - 1; ) { + var y = lb(u.value + (d + 1) * v); + y > a[0] && y < a[1] && f.push(y), d++; + } + i.push(f); + } + return i; + }, t.prototype.getLabel = function(r, n) { + if (r == null) + return ""; + var i = n && n.precision; + i == null ? i = wp(r.value) || 0 : i === "auto" && (i = this._intervalPrecision); + var a = lb(r.value, i, !0); + return j8(a); + }, t.prototype.calcNiceTicks = function(r, n, i) { + r = r || 5; + var a = this._extent, o = a[1] - a[0]; + if (isFinite(o)) { + o < 0 && (o = -o, a.reverse()); + var l = m6e(a, r, n, i); + this._intervalPrecision = l.intervalPrecision, this._interval = l.interval, this._niceExtent = l.niceTickExtent; + } + }, t.prototype.calcNiceExtent = function(r) { + var n = this._extent; + if (n[0] === n[1]) + if (n[0] !== 0) { + var i = Math.abs(n[0]); + r.fixMax || (n[1] += i / 2), n[0] -= i / 2; + } else + n[1] = 1; + var a = n[1] - n[0]; + isFinite(a) || (n[0] = 0, n[1] = 1), this.calcNiceTicks(r.splitNumber, r.minInterval, r.maxInterval); + var o = this._interval; + r.fixMin || (n[0] = lb(Math.floor(n[0] / o) * o)), r.fixMax || (n[1] = lb(Math.ceil(n[1] / o) * o)); + }, t.prototype.setNiceExtent = function(r, n) { + this._niceExtent = [r, n]; + }, t.type = "interval", t; + }(ay) +); +ay.registerClass(E_e); +const y0 = E_e; +var C_e = typeof Float32Array != "undefined", _6e = C_e ? Float32Array : Array; +function Yg(e) { + return qt(e) ? C_e ? new Float32Array(e) : e : new _6e(e); +} +var bW = "__ec_stack_"; +function m9(e) { + return e.get("stack") || bW + e.seriesIndex; +} +function y9(e) { + return e.dim + e.index; +} +function S6e(e) { + var t = [], r = e.axis, n = "axis0"; + if (r.type === "category") { + for (var i = r.getBandWidth(), a = 0; a < e.count; a++) + t.push(Jr({ + bandWidth: i, + axisKey: n, + stackId: bW + a + }, e)); + for (var o = I_e(t), l = [], a = 0; a < e.count; a++) { + var u = o[n][bW + a]; + u.offsetCenter = u.offset + u.width / 2, l.push(u); + } + return l; + } +} +function T_e(e, t) { + var r = []; + return t.eachSeriesByType(e, function(n) { + R_e(n) && r.push(n); + }), r; +} +function b6e(e) { + var t = {}; + Ee(e, function(u) { + var d = u.coordinateSystem, f = d.getBaseAxis(); + if (!(f.type !== "time" && f.type !== "value")) + for (var g = u.getData(), v = f.dim + "_" + f.index, y = g.getDimensionIndex(g.mapDimension(f.dim)), C = g.getStore(), A = 0, S = C.count(); A < S; ++A) { + var _ = C.get(y, A); + t[v] ? t[v].push(_) : t[v] = [_]; + } + }); + var r = {}; + for (var n in t) + if (t.hasOwnProperty(n)) { + var i = t[n]; + if (i) { + i.sort(function(u, d) { + return u - d; + }); + for (var a = null, o = 1; o < i.length; ++o) { + var l = i[o] - i[o - 1]; + l > 0 && (a = a === null ? l : Math.min(a, l)); + } + r[n] = a; + } + } + return r; +} +function w_e(e) { + var t = b6e(e), r = []; + return Ee(e, function(n) { + var i = n.coordinateSystem, a = i.getBaseAxis(), o = a.getExtent(), l; + if (a.type === "category") + l = a.getBandWidth(); + else if (a.type === "value" || a.type === "time") { + var u = a.dim + "_" + a.index, d = t[u], f = Math.abs(o[1] - o[0]), g = a.scale.getExtent(), v = Math.abs(g[1] - g[0]); + l = d ? f / v * d : f; + } else { + var y = n.getData(); + l = Math.abs(o[1] - o[0]) / y.count(); + } + var C = yr(n.get("barWidth"), l), A = yr(n.get("barMaxWidth"), l), S = yr( + // barMinWidth by default is 0.5 / 1 in cartesian. Because in value axis, + // the auto-calculated bar width might be less than 0.5 / 1. + n.get("barMinWidth") || (D_e(n) ? 0.5 : 1), + l + ), _ = n.get("barGap"), E = n.get("barCategoryGap"); + r.push({ + bandWidth: l, + barWidth: C, + barMaxWidth: A, + barMinWidth: S, + barGap: _, + barCategoryGap: E, + axisKey: y9(a), + stackId: m9(n) + }); + }), I_e(r); +} +function I_e(e) { + var t = {}; + Ee(e, function(n, i) { + var a = n.axisKey, o = n.bandWidth, l = t[a] || { + bandWidth: o, + remainedWidth: o, + autoWidthCount: 0, + categoryGap: null, + gap: "20%", + stacks: {} + }, u = l.stacks; + t[a] = l; + var d = n.stackId; + u[d] || l.autoWidthCount++, u[d] = u[d] || { + width: 0, + maxWidth: 0 + }; + var f = n.barWidth; + f && !u[d].width && (u[d].width = f, f = Math.min(l.remainedWidth, f), l.remainedWidth -= f); + var g = n.barMaxWidth; + g && (u[d].maxWidth = g); + var v = n.barMinWidth; + v && (u[d].minWidth = v); + var y = n.barGap; + y != null && (l.gap = y); + var C = n.barCategoryGap; + C != null && (l.categoryGap = C); + }); + var r = {}; + return Ee(t, function(n, i) { + r[i] = {}; + var a = n.stacks, o = n.bandWidth, l = n.categoryGap; + if (l == null) { + var u = Ri(a).length; + l = Math.max(35 - u * 4, 15) + "%"; + } + var d = yr(l, o), f = yr(n.gap, 1), g = n.remainedWidth, v = n.autoWidthCount, y = (g - d) / (v + (v - 1) * f); + y = Math.max(y, 0), Ee(a, function(_) { + var E = _.maxWidth, I = _.minWidth; + if (_.width) { + var w = _.width; + E && (w = Math.min(w, E)), I && (w = Math.max(w, I)), _.width = w, g -= w + f * w, v--; + } else { + var w = y; + E && E < w && (w = Math.min(E, g)), I && I > w && (w = I), w !== y && (_.width = w, g -= w + f * w, v--); + } + }), y = (g - d) / (v + (v - 1) * f), y = Math.max(y, 0); + var C = 0, A; + Ee(a, function(_, E) { + _.width || (_.width = y), A = _, C += _.width * (1 + f); + }), A && (C -= A.width * f); + var S = -C / 2; + Ee(a, function(_, E) { + r[i][E] = r[i][E] || { + bandWidth: o, + offset: S, + width: _.width + }, S += _.width * (1 + f); + }); + }), r; +} +function E6e(e, t, r) { + if (e && t) { + var n = e[y9(t)]; + return n != null && r != null ? n[m9(r)] : n; + } +} +function x_e(e, t) { + var r = T_e(e, t), n = w_e(r); + Ee(r, function(i) { + var a = i.getData(), o = i.coordinateSystem, l = o.getBaseAxis(), u = m9(i), d = n[y9(l)][u], f = d.offset, g = d.width; + a.setLayout({ + bandWidth: d.bandWidth, + offset: f, + size: g + }); + }); +} +function A_e(e) { + return { + seriesType: e, + plan: CI(), + reset: function(t) { + if (R_e(t)) { + var r = t.getData(), n = t.coordinateSystem, i = n.getBaseAxis(), a = n.getOtherAxis(i), o = r.getDimensionIndex(r.mapDimension(a.dim)), l = r.getDimensionIndex(r.mapDimension(i.dim)), u = t.get("showBackground", !0), d = r.mapDimension(a.dim), f = r.getCalculationInfo("stackResultDimension"), g = Ym(r, d) && !!r.getCalculationInfo("stackedOnSeries"), v = a.isHorizontal(), y = C6e(i, a), C = D_e(t), A = t.get("barMinHeight") || 0, S = f && r.getDimensionIndex(f), _ = r.getLayout("size"), E = r.getLayout("offset"); + return { + progress: function(I, w) { + for (var x = I.count, b = C && Yg(x * 3), R = C && u && Yg(x * 3), M = C && Yg(x), O = n.master.getRect(), P = v ? O.width : O.height, B, H = w.getStore(), Y = 0; (B = I.next()) != null; ) { + var X = H.get(g ? S : o, B), ee = H.get(l, B), ae = y, J = void 0; + g && (J = +X - H.get(o, B)); + var ne = void 0, fe = void 0, de = void 0, Te = void 0; + if (v) { + var be = n.dataToPoint([X, ee]); + if (g) { + var Ve = n.dataToPoint([J, ee]); + ae = Ve[0]; + } + ne = ae, fe = be[1] + E, de = be[0] - ae, Te = _, Math.abs(de) < A && (de = (de < 0 ? -1 : 1) * A); + } else { + var be = n.dataToPoint([ee, X]); + if (g) { + var Ve = n.dataToPoint([ee, J]); + ae = Ve[1]; + } + ne = be[0] + E, fe = ae, de = _, Te = be[1] - ae, Math.abs(Te) < A && (Te = (Te <= 0 ? -1 : 1) * A); + } + C ? (b[Y] = ne, b[Y + 1] = fe, b[Y + 2] = v ? de : Te, R && (R[Y] = v ? O.x : ne, R[Y + 1] = v ? fe : O.y, R[Y + 2] = P), M[B] = B) : w.setItemLayout(B, { + x: ne, + y: fe, + width: de, + height: Te + }), Y += 3; + } + C && w.setLayout({ + largePoints: b, + largeDataIndices: M, + largeBackgroundPoints: R, + valueAxisHorizontal: v + }); + } + }; + } + } + }; +} +function R_e(e) { + return e.coordinateSystem && e.coordinateSystem.type === "cartesian2d"; +} +function D_e(e) { + return e.pipelineContext && e.pipelineContext.large; +} +function C6e(e, t) { + return t.toGlobalCoord(t.dataToCoord(t.type === "log" ? 1 : 0)); +} +var T6e = function(e, t, r, n) { + for (; r < n; ) { + var i = r + n >>> 1; + e[i][1] < t ? r = i + 1 : n = i; + } + return r; +}, O_e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "time", n; + } + return t.prototype.getLabel = function(r) { + var n = this.getSetting("useUTC"); + return bD(r.value, bie[rHe(ww(this._minLevelUnit))] || bie.second, n, this.getSetting("locale")); + }, t.prototype.getFormattedLabel = function(r, n, i) { + var a = this.getSetting("useUTC"), o = this.getSetting("locale"); + return nHe(r, n, i, o, a); + }, t.prototype.getTicks = function() { + var r = this._interval, n = this._extent, i = []; + if (!r) + return i; + i.push({ + value: n[0], + level: 0 + }); + var a = this.getSetting("useUTC"), o = O6e(this._minLevelUnit, this._approxInterval, a, n); + return i = i.concat(o), i.push({ + value: n[1], + level: 0 + }), i; + }, t.prototype.calcNiceExtent = function(r) { + var n = this._extent; + if (n[0] === n[1] && (n[0] -= vf, n[1] += vf), n[1] === -1 / 0 && n[0] === 1 / 0) { + var i = /* @__PURE__ */ new Date(); + n[1] = +new Date(i.getFullYear(), i.getMonth(), i.getDate()), n[0] = n[1] - vf; + } + this.calcNiceTicks(r.splitNumber, r.minInterval, r.maxInterval); + }, t.prototype.calcNiceTicks = function(r, n, i) { + r = r || 10; + var a = this._extent, o = a[1] - a[0]; + this._approxInterval = o / r, n != null && this._approxInterval < n && (this._approxInterval = n), i != null && this._approxInterval > i && (this._approxInterval = i); + var l = sP.length, u = Math.min(T6e(sP, this._approxInterval, 0, l), l - 1); + this._interval = sP[u][1], this._minLevelUnit = sP[Math.max(u - 1, 0)][0]; + }, t.prototype.parse = function(r) { + return Qi(r) ? r : +vd(r); + }, t.prototype.contain = function(r) { + return XF(this.parse(r), this._extent); + }, t.prototype.normalize = function(r) { + return KF(this.parse(r), this._extent); + }, t.prototype.scale = function(r) { + return ZF(r, this._extent); + }, t.type = "time", t; + }(y0) +), sP = [ + // Format interval + ["second", F8], + ["minute", B8], + ["hour", P1], + ["quarter-day", P1 * 6], + ["half-day", P1 * 12], + ["day", vf * 1.2], + ["half-week", vf * 3.5], + ["week", vf * 7], + ["month", vf * 31], + ["quarter", vf * 95], + ["half-year", Sie / 2], + ["year", Sie] + // 1Y +]; +function w6e(e, t, r, n) { + var i = vd(t), a = vd(r), o = function(C) { + return Eie(i, C, n) === Eie(a, C, n); + }, l = function() { + return o("year"); + }, u = function() { + return l() && o("month"); + }, d = function() { + return u() && o("day"); + }, f = function() { + return d() && o("hour"); + }, g = function() { + return f() && o("minute"); + }, v = function() { + return g() && o("second"); + }, y = function() { + return v() && o("millisecond"); + }; + switch (e) { + case "year": + return l(); + case "month": + return u(); + case "day": + return d(); + case "hour": + return f(); + case "minute": + return g(); + case "second": + return v(); + case "millisecond": + return y(); + } +} +function I6e(e, t) { + return e /= vf, e > 16 ? 16 : e > 7.5 ? 7 : e > 3.5 ? 4 : e > 1.5 ? 2 : 1; +} +function x6e(e) { + var t = 30 * vf; + return e /= t, e > 6 ? 6 : e > 3 ? 3 : e > 2 ? 2 : 1; +} +function A6e(e) { + return e /= P1, e > 12 ? 12 : e > 6 ? 6 : e > 3.5 ? 4 : e > 2 ? 2 : 1; +} +function Oae(e, t) { + return e /= t ? B8 : F8, e > 30 ? 30 : e > 20 ? 20 : e > 15 ? 15 : e > 10 ? 10 : e > 5 ? 5 : e > 2 ? 2 : 1; +} +function R6e(e) { + return v8(e, !0); +} +function D6e(e, t, r) { + var n = new Date(e); + switch (ww(t)) { + case "year": + case "month": + n[jme(r)](0); + case "day": + n[$me(r)](1); + case "hour": + n[Vme(r)](0); + case "minute": + n[zme(r)](0); + case "second": + n[Hme(r)](0), n[Wme(r)](0); + } + return n.getTime(); +} +function O6e(e, t, r, n) { + var i = 1e4, a = Bme, o = 0; + function l(P, B, H, Y, X, ee, ae) { + for (var J = new Date(B), ne = B, fe = J[Y](); ne < H && ne <= n[1]; ) + ae.push({ + value: ne + }), fe += P, J[X](fe), ne = J.getTime(); + ae.push({ + value: ne, + notAdd: !0 + }); + } + function u(P, B, H) { + var Y = [], X = !B.length; + if (!w6e(ww(P), n[0], n[1], r)) { + X && (B = [{ + // TODO Optimize. Not include so may ticks. + value: D6e(new Date(n[0]), P, r) + }, { + value: n[1] + }]); + for (var ee = 0; ee < B.length - 1; ee++) { + var ae = B[ee].value, J = B[ee + 1].value; + if (ae !== J) { + var ne = void 0, fe = void 0, de = void 0, Te = !1; + switch (P) { + case "year": + ne = Math.max(1, Math.round(t / vf / 365)), fe = U8(r), de = iHe(r); + break; + case "half-year": + case "quarter": + case "month": + ne = x6e(t), fe = Iw(r), de = jme(r); + break; + case "week": + case "half-week": + case "day": + ne = I6e(t), fe = PF(r), de = $me(r), Te = !0; + break; + case "half-day": + case "quarter-day": + case "hour": + ne = A6e(t), fe = yR(r), de = Vme(r); + break; + case "minute": + ne = Oae(t, !0), fe = NF(r), de = zme(r); + break; + case "second": + ne = Oae(t, !1), fe = LF(r), de = Hme(r); + break; + case "millisecond": + ne = R6e(t), fe = FF(r), de = Wme(r); + break; + } + l(ne, ae, J, fe, de, Te, Y), P === "year" && H.length > 1 && ee === 0 && H.unshift({ + value: H[0].value - ne + }); + } + } + for (var ee = 0; ee < Y.length; ee++) + H.push(Y[ee]); + return Y; + } + } + for (var d = [], f = [], g = 0, v = 0, y = 0; y < a.length && o++ < i; ++y) { + var C = ww(a[y]); + if (tHe(a[y])) { + u(a[y], d[d.length - 1] || [], f); + var A = a[y + 1] ? ww(a[y + 1]) : null; + if (C !== A) { + if (f.length) { + v = g, f.sort(function(P, B) { + return P.value - B.value; + }); + for (var S = [], _ = 0; _ < f.length; ++_) { + var E = f[_].value; + (_ === 0 || f[_ - 1].value !== E) && (S.push(f[_]), E >= n[0] && E <= n[1] && g++); + } + var I = (n[1] - n[0]) / t; + if (g > I * 1.5 && v > I / 1.5 || (d.push(S), g > I || e === a[y])) + break; + } + f = []; + } + } + } + for (var w = Ma(er(d, function(P) { + return Ma(P, function(B) { + return B.value >= n[0] && B.value <= n[1] && !B.notAdd; + }); + }), function(P) { + return P.length > 0; + }), x = [], b = w.length - 1, y = 0; y < w.length; ++y) + for (var R = w[y], M = 0; M < R.length; ++M) + x.push({ + value: R[M].value, + level: b - y + }); + x.sort(function(P, B) { + return P.value - B.value; + }); + for (var O = [], y = 0; y < x.length; ++y) + (y === 0 || x[y].value !== x[y - 1].value) && O.push(x[y]); + return O; +} +ay.registerClass(O_e); +const M_e = O_e; +var Mae = ay.prototype, F1 = y0.prototype, M6e = Is, k6e = Math.floor, P6e = Math.ceil, lP = Math.pow, gp = Math.log, _9 = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "log", r.base = 10, r._originalScale = new y0(), r._interval = 0, r; + } + return t.prototype.getTicks = function(r) { + var n = this._originalScale, i = this._extent, a = n.getExtent(), o = F1.getTicks.call(this, r); + return er(o, function(l) { + var u = l.value, d = Is(lP(this.base, u)); + return d = u === i[0] && this._fixMin ? cP(d, a[0]) : d, d = u === i[1] && this._fixMax ? cP(d, a[1]) : d, { + value: d + }; + }, this); + }, t.prototype.setExtent = function(r, n) { + var i = gp(this.base); + r = gp(Math.max(0, r)) / i, n = gp(Math.max(0, n)) / i, F1.setExtent.call(this, r, n); + }, t.prototype.getExtent = function() { + var r = this.base, n = Mae.getExtent.call(this); + n[0] = lP(r, n[0]), n[1] = lP(r, n[1]); + var i = this._originalScale, a = i.getExtent(); + return this._fixMin && (n[0] = cP(n[0], a[0])), this._fixMax && (n[1] = cP(n[1], a[1])), n; + }, t.prototype.unionExtent = function(r) { + this._originalScale.unionExtent(r); + var n = this.base; + r[0] = gp(r[0]) / gp(n), r[1] = gp(r[1]) / gp(n), Mae.unionExtent.call(this, r); + }, t.prototype.unionExtentFromData = function(r, n) { + this.unionExtent(r.getApproximateExtent(n)); + }, t.prototype.calcNiceTicks = function(r) { + r = r || 10; + var n = this._extent, i = n[1] - n[0]; + if (!(i === 1 / 0 || i <= 0)) { + var a = Ave(i), o = r / i * a; + for (o <= 0.5 && (a *= 10); !isNaN(a) && Math.abs(a) < 1 && Math.abs(a) > 0; ) + a *= 10; + var l = [Is(P6e(n[0] / a) * a), Is(k6e(n[1] / a) * a)]; + this._interval = a, this._niceExtent = l; + } + }, t.prototype.calcNiceExtent = function(r) { + F1.calcNiceExtent.call(this, r), this._fixMin = r.fixMin, this._fixMax = r.fixMax; + }, t.prototype.parse = function(r) { + return r; + }, t.prototype.contain = function(r) { + return r = gp(r) / gp(this.base), XF(r, this._extent); + }, t.prototype.normalize = function(r) { + return r = gp(r) / gp(this.base), KF(r, this._extent); + }, t.prototype.scale = function(r) { + return r = ZF(r, this._extent), lP(this.base, r); + }, t.type = "log", t; + }(ay) +), k_e = _9.prototype; +k_e.getMinorTicks = F1.getMinorTicks; +k_e.getLabel = F1.getLabel; +function cP(e, t) { + return M6e(e, wp(t)); +} +ay.registerClass(_9); +const N6e = _9; +var L6e = ( + /** @class */ + function() { + function e(t, r, n) { + this._prepareParams(t, r, n); + } + return e.prototype._prepareParams = function(t, r, n) { + n[1] < n[0] && (n = [NaN, NaN]), this._dataMin = n[0], this._dataMax = n[1]; + var i = this._isOrdinal = t.type === "ordinal"; + this._needCrossZero = t.type === "interval" && r.getNeedCrossZero && r.getNeedCrossZero(); + var a = this._modelMinRaw = r.get("min", !0); + Kr(a) ? this._modelMinNum = uP(t, a({ + min: n[0], + max: n[1] + })) : a !== "dataMin" && (this._modelMinNum = uP(t, a)); + var o = this._modelMaxRaw = r.get("max", !0); + if (Kr(o) ? this._modelMaxNum = uP(t, o({ + min: n[0], + max: n[1] + })) : o !== "dataMax" && (this._modelMaxNum = uP(t, o)), i) + this._axisDataLen = r.getCategories().length; + else { + var l = r.get("boundaryGap"), u = qt(l) ? l : [l || 0, l || 0]; + typeof u[0] == "boolean" || typeof u[1] == "boolean" ? this._boundaryGapInner = [0, 0] : this._boundaryGapInner = [Np(u[0], 1), Np(u[1], 1)]; + } + }, e.prototype.calculate = function() { + var t = this._isOrdinal, r = this._dataMin, n = this._dataMax, i = this._axisDataLen, a = this._boundaryGapInner, o = t ? null : n - r || Math.abs(r), l = this._modelMinRaw === "dataMin" ? r : this._modelMinNum, u = this._modelMaxRaw === "dataMax" ? n : this._modelMaxNum, d = l != null, f = u != null; + l == null && (l = t ? i ? 0 : NaN : r - a[0] * o), u == null && (u = t ? i ? i - 1 : NaN : n + a[1] * o), (l == null || !isFinite(l)) && (l = NaN), (u == null || !isFinite(u)) && (u = NaN); + var g = Bw(l) || Bw(u) || t && !i; + this._needCrossZero && (l > 0 && u > 0 && !d && (l = 0), l < 0 && u < 0 && !f && (u = 0)); + var v = this._determinedMin, y = this._determinedMax; + return v != null && (l = v, d = !0), y != null && (u = y, f = !0), { + min: l, + max: u, + minFixed: d, + maxFixed: f, + isBlank: g + }; + }, e.prototype.modifyDataMinMax = function(t, r) { + this[B6e[t]] = r; + }, e.prototype.setDeterminedMinMax = function(t, r) { + var n = F6e[t]; + this[n] = r; + }, e.prototype.freeze = function() { + this.frozen = !0; + }, e; + }() +), F6e = { + min: "_determinedMin", + max: "_determinedMax" +}, B6e = { + min: "_dataMin", + max: "_dataMax" +}; +function P_e(e, t, r) { + var n = e.rawExtentInfo; + return n || (n = new L6e(e, t, r), e.rawExtentInfo = n, n); +} +function uP(e, t) { + return t == null ? null : Bw(t) ? NaN : e.parse(t); +} +function N_e(e, t) { + var r = e.type, n = P_e(e, t, e.getExtent()).calculate(); + e.setBlank(n.isBlank); + var i = n.min, a = n.max, o = t.ecModel; + if (o && r === "time") { + var l = T_e("bar", o), u = !1; + if (Ee(l, function(g) { + u = u || g.getBaseAxis() === t.axis; + }), u) { + var d = w_e(l), f = U6e(i, a, t, d); + i = f.min, a = f.max; + } + } + return { + extent: [i, a], + // "fix" means "fixed", the value should not be + // changed in the subsequent steps. + fixMin: n.minFixed, + fixMax: n.maxFixed + }; +} +function U6e(e, t, r, n) { + var i = r.axis.getExtent(), a = i[1] - i[0], o = E6e(n, r.axis); + if (o === void 0) + return { + min: e, + max: t + }; + var l = 1 / 0; + Ee(o, function(y) { + l = Math.min(y.offset, l); + }); + var u = -1 / 0; + Ee(o, function(y) { + u = Math.max(y.offset + y.width, u); + }), l = Math.abs(l), u = Math.abs(u); + var d = l + u, f = t - e, g = 1 - (l + u) / a, v = f / g - f; + return t += v * (u / d), e -= v * (l / d), { + min: e, + max: t + }; +} +function vE(e, t) { + var r = t, n = N_e(e, r), i = n.extent, a = r.get("splitNumber"); + e instanceof N6e && (e.base = r.get("logBase")); + var o = e.type, l = r.get("interval"), u = o === "interval" || o === "time"; + e.setExtent(i[0], i[1]), e.calcNiceExtent({ + splitNumber: a, + fixMin: n.fixMin, + fixMax: n.fixMax, + minInterval: u ? r.get("minInterval") : null, + maxInterval: u ? r.get("maxInterval") : null + }), l != null && e.setInterval && e.setInterval(l); +} +function ID(e, t) { + if (t = t || e.get("type"), t) + switch (t) { + case "category": + return new v9({ + ordinalMeta: e.getOrdinalMeta ? e.getOrdinalMeta() : e.getCategories(), + extent: [1 / 0, -1 / 0] + }); + case "time": + return new M_e({ + locale: e.ecModel.getLocaleModel(), + useUTC: e.ecModel.get("useUTC") + }); + default: + return new (ay.getClass(t) || y0)(); + } +} +function j6e(e) { + var t = e.scale.getExtent(), r = t[0], n = t[1]; + return !(r > 0 && n > 0 || r < 0 && n < 0); +} +function xD(e) { + var t = e.getLabelModel().get("formatter"), r = e.type === "category" ? e.scale.getExtent()[0] : null; + return e.scale.type === "time" ? function(n) { + return function(i, a) { + return e.scale.getFormattedLabel(i, a, n); + }; + }(t) : wr(t) ? function(n) { + return function(i) { + var a = e.scale.getLabel(i), o = n.replace("{value}", a != null ? a : ""); + return o; + }; + }(t) : Kr(t) ? function(n) { + return function(i, a) { + return r != null && (a = i.value - r), n(S9(e, i), a, i.level != null ? { + level: i.level + } : null); + }; + }(t) : function(n) { + return e.scale.getLabel(n); + }; +} +function S9(e, t) { + return e.type === "category" ? e.scale.getLabel(t) : t.value; +} +function $6e(e) { + var t = e.model, r = e.scale; + if (!(!t.get(["axisLabel", "show"]) || r.isBlank())) { + var n, i, a = r.getExtent(); + r instanceof v9 ? i = r.count() : (n = r.getTicks(), i = n.length); + var o = e.getLabelModel(), l = xD(e), u, d = 1; + i > 40 && (d = Math.ceil(i / 40)); + for (var f = 0; f < i; f += d) { + var g = n ? n[f] : { + value: a[0] + f + }, v = l(g, f), y = o.getTextRect(v), C = V6e(y, o.get("rotate") || 0); + u ? u.union(C) : u = C; + } + return u; + } +} +function V6e(e, t) { + var r = t * Math.PI / 180, n = e.width, i = e.height, a = n * Math.abs(Math.cos(r)) + Math.abs(i * Math.sin(r)), o = n * Math.abs(Math.sin(r)) + Math.abs(i * Math.cos(r)), l = new ei(e.x, e.y, a, o); + return l; +} +function b9(e) { + var t = e.get("interval"); + return t == null ? "auto" : t; +} +function L_e(e) { + return e.type === "category" && b9(e.getLabelModel()) === 0; +} +function jL(e, t) { + var r = {}; + return Ee(e.mapDimensionsAll(t), function(n) { + r[g9(e, n)] = !0; + }), Ri(r); +} +function z6e(e, t, r) { + t && Ee(jL(t, r), function(n) { + var i = t.getApproximateExtent(n); + i[0] < e[0] && (e[0] = i[0]), i[1] > e[1] && (e[1] = i[1]); + }); +} +var xI = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getNeedCrossZero = function() { + var t = this.option; + return !t.scale; + }, e.prototype.getCoordSysModel = function() { + }, e; + }() +); +function H6e(e) { + return fv(null, e); +} +var W6e = { + isDimensionStacked: Ym, + enableDataStack: y_e, + getStackedDimension: g9 +}; +function G6e(e, t) { + var r = t; + t instanceof Wa || (r = new Wa(t)); + var n = ID(r); + return n.setExtent(e[0], e[1]), vE(n, r), n; +} +function Y6e(e) { + Fs(e, xI); +} +function MN(e, t) { + return t = t || {}, uo(e, null, null, t.state !== "normal"); +} +const F_e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + createDimensions: m_e, + createList: H6e, + createScale: G6e, + createSymbol: $s, + createTextStyle: MN, + dataStack: W6e, + enableHoverEmphasis: Lm, + getECData: Tn, + getLayoutRect: js, + mixinAxisModelCommonMethods: Y6e +}, Symbol.toStringTag, { value: "Module" })); +var X6e = 1e-8; +function kae(e, t) { + return Math.abs(e - t) < X6e; +} +function Ib(e, t, r) { + var n = 0, i = e[0]; + if (!i) + return !1; + for (var a = 1; a < e.length; a++) { + var o = e[a]; + n += Am(i[0], i[1], o[0], o[1], t, r), i = o; + } + var l = e[0]; + return (!kae(i[0], l[0]) || !kae(i[1], l[1])) && (n += Am(i[0], i[1], l[0], l[1], t, r)), n !== 0; +} +var K6e = []; +function wz(e, t) { + for (var r = 0; r < e.length; r++) + Jl(e[r], e[r], t); +} +function Pae(e, t, r, n) { + for (var i = 0; i < e.length; i++) { + var a = e[i]; + n && (a = n.project(a)), a && isFinite(a[0]) && isFinite(a[1]) && (Mm(t, t, a), km(r, r, a)); + } +} +function Z6e(e) { + for (var t = 0, r = 0, n = 0, i = e.length, a = e[i - 1][0], o = e[i - 1][1], l = 0; l < i; l++) { + var u = e[l][0], d = e[l][1], f = a * d - u * o; + t += f, r += (a + u) * f, n += (o + d) * f, a = u, o = d; + } + return t ? [r / t / 3, n / t / 3, t] : [e[0][0] || 0, e[0][1] || 0]; +} +var B_e = ( + /** @class */ + function() { + function e(t) { + this.name = t; + } + return e.prototype.setCenter = function(t) { + this._center = t; + }, e.prototype.getCenter = function() { + var t = this._center; + return t || (t = this._center = this.calcCenter()), t; + }, e; + }() +), Nae = ( + /** @class */ + function() { + function e(t, r) { + this.type = "polygon", this.exterior = t, this.interiors = r; + } + return e; + }() +), Lae = ( + /** @class */ + function() { + function e(t) { + this.type = "linestring", this.points = t; + } + return e; + }() +), U_e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this, r) || this; + return a.type = "geoJSON", a.geometries = n, a._center = i && [i[0], i[1]], a; + } + return t.prototype.calcCenter = function() { + for (var r = this.geometries, n, i = 0, a = 0; a < r.length; a++) { + var o = r[a], l = o.exterior, u = l && l.length; + u > i && (n = o, i = u); + } + if (n) + return Z6e(n.exterior); + var d = this.getBoundingRect(); + return [d.x + d.width / 2, d.y + d.height / 2]; + }, t.prototype.getBoundingRect = function(r) { + var n = this._rect; + if (n && !r) + return n; + var i = [1 / 0, 1 / 0], a = [-1 / 0, -1 / 0], o = this.geometries; + return Ee(o, function(l) { + l.type === "polygon" ? Pae(l.exterior, i, a, r) : Ee(l.points, function(u) { + Pae(u, i, a, r); + }); + }), isFinite(i[0]) && isFinite(i[1]) && isFinite(a[0]) && isFinite(a[1]) || (i[0] = i[1] = a[0] = a[1] = 0), n = new ei(i[0], i[1], a[0] - i[0], a[1] - i[1]), r || (this._rect = n), n; + }, t.prototype.contain = function(r) { + var n = this.getBoundingRect(), i = this.geometries; + if (!n.contain(r[0], r[1])) + return !1; + e: + for (var a = 0, o = i.length; a < o; a++) { + var l = i[a]; + if (l.type === "polygon") { + var u = l.exterior, d = l.interiors; + if (Ib(u, r[0], r[1])) { + for (var f = 0; f < (d ? d.length : 0); f++) + if (Ib(d[f], r[0], r[1])) + continue e; + return !0; + } + } + } + return !1; + }, t.prototype.transformTo = function(r, n, i, a) { + var o = this.getBoundingRect(), l = o.width / o.height; + i ? a || (a = i / l) : i = l * a; + for (var u = new ei(r, n, i, a), d = o.calculateTransform(u), f = this.geometries, g = 0; g < f.length; g++) { + var v = f[g]; + v.type === "polygon" ? (wz(v.exterior, d), Ee(v.interiors, function(y) { + wz(y, d); + })) : Ee(v.points, function(y) { + wz(y, d); + }); + } + o = this._rect, o.copy(u), this._center = [o.x + o.width / 2, o.y + o.height / 2]; + }, t.prototype.cloneShallow = function(r) { + r == null && (r = this.name); + var n = new t(r, this.geometries, this._center); + return n._rect = this._rect, n.transformTo = null, n; + }, t; + }(B_e) +), q6e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n) { + var i = e.call(this, r) || this; + return i.type = "geoSVG", i._elOnlyForCalculate = n, i; + } + return t.prototype.calcCenter = function() { + for (var r = this._elOnlyForCalculate, n = r.getBoundingRect(), i = [n.x + n.width / 2, n.y + n.height / 2], a = dD(K6e), o = r; o && !o.isGeoSVGGraphicRoot; ) + Jg(a, o.getLocalTransform(), a), o = o.parent; + return RE(a, a), Jl(i, i, a), i; + }, t; + }(B_e) +); +function J6e(e) { + if (!e.UTF8Encoding) + return e; + var t = e, r = t.UTF8Scale; + r == null && (r = 1024); + var n = t.features; + return Ee(n, function(i) { + var a = i.geometry, o = a.encodeOffsets, l = a.coordinates; + if (o) + switch (a.type) { + case "LineString": + a.coordinates = j_e(l, o, r); + break; + case "Polygon": + Iz(l, o, r); + break; + case "MultiLineString": + Iz(l, o, r); + break; + case "MultiPolygon": + Ee(l, function(u, d) { + return Iz(u, o[d], r); + }); + } + }), t.UTF8Encoding = !1, t; +} +function Iz(e, t, r) { + for (var n = 0; n < e.length; n++) + e[n] = j_e(e[n], t[n], r); +} +function j_e(e, t, r) { + for (var n = [], i = t[0], a = t[1], o = 0; o < e.length; o += 2) { + var l = e.charCodeAt(o) - 64, u = e.charCodeAt(o + 1) - 64; + l = l >> 1 ^ -(l & 1), u = u >> 1 ^ -(u & 1), l += i, u += a, i = l, a = u, n.push([l / r, u / r]); + } + return n; +} +function TR(e, t) { + return e = J6e(e), er(Ma(e.features, function(r) { + return r.geometry && r.properties && r.geometry.coordinates.length > 0; + }), function(r) { + var n = r.properties, i = r.geometry, a = []; + switch (i.type) { + case "Polygon": + var o = i.coordinates; + a.push(new Nae(o[0], o.slice(1))); + break; + case "MultiPolygon": + Ee(i.coordinates, function(u) { + u[0] && a.push(new Nae(u[0], u.slice(1))); + }); + break; + case "LineString": + a.push(new Lae([i.coordinates])); + break; + case "MultiLineString": + a.push(new Lae(i.coordinates)); + } + var l = new U_e(n[t || "name"], a, n.cp); + return l.properties = n, l; + }); +} +const $_e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + MAX_SAFE_INTEGER: HH, + asc: ld, + getPercentWithPrecision: Aze, + getPixelPrecision: p8, + getPrecision: wp, + getPrecisionSafe: Ive, + isNumeric: m8, + isRadianAroundZero: Uw, + linearMap: Ea, + nice: v8, + numericToNumber: ov, + parseDate: vd, + quantile: TN, + quantity: Ave, + quantityExponent: SF, + reformIntervals: WH, + remRadian: g8, + round: Is +}, Symbol.toStringTag, { value: "Module" })), V_e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + format: bD, + parse: vd +}, Symbol.toStringTag, { value: "Module" })), z_e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Arc: AF, + BezierCurve: yD, + BoundingRect: ei, + Circle: ny, + CompoundPath: RF, + Ellipse: xF, + Group: _n, + Image: ec, + IncrementalDisplayable: wme, + Line: Pl, + LinearGradient: fI, + Polygon: Bu, + Polyline: $u, + RadialGradient: R8, + Rect: Xi, + Ring: mD, + Sector: Fu, + Text: Hi, + clipPointsByRect: k8, + clipRectByRect: Dme, + createIcon: gI, + extendPath: Ame, + extendShape: xme, + getShapeClass: DF, + getTransform: l0, + initProps: Po, + makeImage: O8, + makePath: _D, + mergePath: sd, + registerShape: Df, + resizePath: M8, + updateProps: ia +}, Symbol.toStringTag, { value: "Module" })), H_e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + addCommas: j8, + capitalFirst: Yme, + encodeHTML: Du, + formatTime: sHe, + formatTpl: V8, + getTextRect: aHe, + getTooltipMarker: Gme, + normalizeCssArray: ME, + toCamelCase: $8, + truncateText: Uve +}, Symbol.toStringTag, { value: "Module" })), W_e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + bind: Ar, + clone: cn, + curry: Ln, + defaults: Jr, + each: Ee, + extend: $t, + filter: Ma, + indexOf: di, + inherits: a8, + isArray: qt, + isFunction: Kr, + isObject: sn, + isString: wr, + map: er, + merge: Qn, + reduce: Cf +}, Symbol.toStringTag, { value: "Module" })); +var wR = ea(); +function Q6e(e) { + return e.type === "category" ? t8e(e) : n8e(e); +} +function e8e(e, t) { + return e.type === "category" ? r8e(e, t) : { + ticks: er(e.scale.getTicks(), function(r) { + return r.value; + }) + }; +} +function t8e(e) { + var t = e.getLabelModel(), r = G_e(e, t); + return !t.get("show") || e.scale.isBlank() ? { + labels: [], + labelCategoryInterval: r.labelCategoryInterval + } : r; +} +function G_e(e, t) { + var r = Y_e(e, "labels"), n = b9(t), i = X_e(r, n); + if (i) + return i; + var a, o; + return Kr(n) ? a = q_e(e, n) : (o = n === "auto" ? i8e(e) : n, a = Z_e(e, o)), K_e(r, n, { + labels: a, + labelCategoryInterval: o + }); +} +function r8e(e, t) { + var r = Y_e(e, "ticks"), n = b9(t), i = X_e(r, n); + if (i) + return i; + var a, o; + if ((!t.get("show") || e.scale.isBlank()) && (a = []), Kr(n)) + a = q_e(e, n, !0); + else if (n === "auto") { + var l = G_e(e, e.getLabelModel()); + o = l.labelCategoryInterval, a = er(l.labels, function(u) { + return u.tickValue; + }); + } else + o = n, a = Z_e(e, o, !0); + return K_e(r, n, { + ticks: a, + tickCategoryInterval: o + }); +} +function n8e(e) { + var t = e.scale.getTicks(), r = xD(e); + return { + labels: er(t, function(n, i) { + return { + level: n.level, + formattedLabel: r(n, i), + rawLabel: e.scale.getLabel(n), + tickValue: n.value + }; + }) + }; +} +function Y_e(e, t) { + return wR(e)[t] || (wR(e)[t] = []); +} +function X_e(e, t) { + for (var r = 0; r < e.length; r++) + if (e[r].key === t) + return e[r].value; +} +function K_e(e, t, r) { + return e.push({ + key: t, + value: r + }), r; +} +function i8e(e) { + var t = wR(e).autoInterval; + return t != null ? t : wR(e).autoInterval = e.calculateCategoryInterval(); +} +function a8e(e) { + var t = o8e(e), r = xD(e), n = (t.axisRotate - t.labelRotate) / 180 * Math.PI, i = e.scale, a = i.getExtent(), o = i.count(); + if (a[1] - a[0] < 1) + return 0; + var l = 1; + o > 40 && (l = Math.max(1, Math.floor(o / 40))); + for (var u = a[0], d = e.dataToCoord(u + 1) - e.dataToCoord(u), f = Math.abs(d * Math.cos(n)), g = Math.abs(d * Math.sin(n)), v = 0, y = 0; u <= a[1]; u += l) { + var C = 0, A = 0, S = pD(r({ + value: u + }), t.font, "center", "top"); + C = S.width * 1.3, A = S.height * 1.3, v = Math.max(v, C, 7), y = Math.max(y, A, 7); + } + var _ = v / f, E = y / g; + isNaN(_) && (_ = 1 / 0), isNaN(E) && (E = 1 / 0); + var I = Math.max(0, Math.floor(Math.min(_, E))), w = wR(e.model), x = e.getExtent(), b = w.lastAutoInterval, R = w.lastTickCount; + return b != null && R != null && Math.abs(b - I) <= 1 && Math.abs(R - o) <= 1 && b > I && w.axisExtent0 === x[0] && w.axisExtent1 === x[1] ? I = b : (w.lastTickCount = o, w.lastAutoInterval = I, w.axisExtent0 = x[0], w.axisExtent1 = x[1]), I; +} +function o8e(e) { + var t = e.getLabelModel(); + return { + axisRotate: e.getRotate ? e.getRotate() : e.isHorizontal && !e.isHorizontal() ? 90 : 0, + labelRotate: t.get("rotate") || 0, + font: t.getFont() + }; +} +function Z_e(e, t, r) { + var n = xD(e), i = e.scale, a = i.getExtent(), o = e.getLabelModel(), l = [], u = Math.max((t || 0) + 1, 1), d = a[0], f = i.count(); + d !== 0 && u > 1 && f / u > 2 && (d = Math.round(Math.ceil(d / u) * u)); + var g = L_e(e), v = o.get("showMinLabel") || g, y = o.get("showMaxLabel") || g; + v && d !== a[0] && A(a[0]); + for (var C = d; C <= a[1]; C += u) + A(C); + y && C - u !== a[1] && A(a[1]); + function A(S) { + var _ = { + value: S + }; + l.push(r ? S : { + formattedLabel: n(_), + rawLabel: i.getLabel(_), + tickValue: S + }); + } + return l; +} +function q_e(e, t, r) { + var n = e.scale, i = xD(e), a = []; + return Ee(n.getTicks(), function(o) { + var l = n.getLabel(o), u = o.value; + t(o.value, l) && a.push(r ? u : { + formattedLabel: i(o), + rawLabel: l, + tickValue: u + }); + }), a; +} +var Fae = [0, 1], s8e = ( + /** @class */ + function() { + function e(t, r, n) { + this.onBand = !1, this.inverse = !1, this.dim = t, this.scale = r, this._extent = n || [0, 0]; + } + return e.prototype.contain = function(t) { + var r = this._extent, n = Math.min(r[0], r[1]), i = Math.max(r[0], r[1]); + return t >= n && t <= i; + }, e.prototype.containData = function(t) { + return this.scale.contain(t); + }, e.prototype.getExtent = function() { + return this._extent.slice(); + }, e.prototype.getPixelPrecision = function(t) { + return p8(t || this.scale.getExtent(), this._extent); + }, e.prototype.setExtent = function(t, r) { + var n = this._extent; + n[0] = t, n[1] = r; + }, e.prototype.dataToCoord = function(t, r) { + var n = this._extent, i = this.scale; + return t = i.normalize(t), this.onBand && i.type === "ordinal" && (n = n.slice(), Bae(n, i.count())), Ea(t, Fae, n, r); + }, e.prototype.coordToData = function(t, r) { + var n = this._extent, i = this.scale; + this.onBand && i.type === "ordinal" && (n = n.slice(), Bae(n, i.count())); + var a = Ea(t, n, Fae, r); + return this.scale.scale(a); + }, e.prototype.pointToData = function(t, r) { + }, e.prototype.getTicksCoords = function(t) { + t = t || {}; + var r = t.tickModel || this.getTickModel(), n = e8e(this, r), i = n.ticks, a = er(i, function(l) { + return { + coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(l) : l), + tickValue: l + }; + }, this), o = r.get("alignWithLabel"); + return l8e(this, a, o, t.clamp), a; + }, e.prototype.getMinorTicksCoords = function() { + if (this.scale.type === "ordinal") + return []; + var t = this.model.getModel("minorTick"), r = t.get("splitNumber"); + r > 0 && r < 100 || (r = 5); + var n = this.scale.getMinorTicks(r), i = er(n, function(a) { + return er(a, function(o) { + return { + coord: this.dataToCoord(o), + tickValue: o + }; + }, this); + }, this); + return i; + }, e.prototype.getViewLabels = function() { + return Q6e(this).labels; + }, e.prototype.getLabelModel = function() { + return this.model.getModel("axisLabel"); + }, e.prototype.getTickModel = function() { + return this.model.getModel("axisTick"); + }, e.prototype.getBandWidth = function() { + var t = this._extent, r = this.scale.getExtent(), n = r[1] - r[0] + (this.onBand ? 1 : 0); + n === 0 && (n = 1); + var i = Math.abs(t[1] - t[0]); + return Math.abs(i) / n; + }, e.prototype.calculateCategoryInterval = function() { + return a8e(this); + }, e; + }() +); +function Bae(e, t) { + var r = e[1] - e[0], n = t, i = r / n / 2; + e[0] += i, e[1] -= i; +} +function l8e(e, t, r, n) { + var i = t.length; + if (!e.onBand || r || !i) + return; + var a = e.getExtent(), o, l; + if (i === 1) + t[0].coord = a[0], o = t[1] = { + coord: a[1] + }; + else { + var u = t[i - 1].tickValue - t[0].tickValue, d = (t[i - 1].coord - t[0].coord) / u; + Ee(t, function(y) { + y.coord -= d / 2; + }); + var f = e.scale.getExtent(); + l = 1 + f[1] - t[i - 1].tickValue, o = { + coord: t[i - 1].coord + d * l + }, t.push(o); + } + var g = a[0] > a[1]; + v(t[0].coord, a[0]) && (n ? t[0].coord = a[0] : t.shift()), n && v(a[0], t[0].coord) && t.unshift({ + coord: a[0] + }), v(a[1], o.coord) && (n ? o.coord = a[1] : t.pop()), n && v(o.coord, a[1]) && t.push({ + coord: a[1] + }); + function v(y, C) { + return y = Is(y), C = Is(C), g ? y > C : y < C; + } +} +const Ed = s8e; +function J_e(e) { + var t = Mi.extend(e); + return Mi.registerClass(t), t; +} +function Q_e(e) { + var t = Co.extend(e); + return Co.registerClass(t), t; +} +function E9(e) { + var t = fo.extend(e); + return fo.registerClass(t), t; +} +function C9(e) { + var t = Ya.extend(e); + return Ya.registerClass(t), t; +} +var jA = Math.PI * 2, cb = sv.CMD, c8e = ["top", "right", "bottom", "left"]; +function u8e(e, t, r, n, i) { + var a = r.width, o = r.height; + switch (e) { + case "top": + n.set(r.x + a / 2, r.y - t), i.set(0, -1); + break; + case "bottom": + n.set(r.x + a / 2, r.y + o + t), i.set(0, 1); + break; + case "left": + n.set(r.x - t, r.y + o / 2), i.set(-1, 0); + break; + case "right": + n.set(r.x + a + t, r.y + o / 2), i.set(1, 0); + break; + } +} +function h8e(e, t, r, n, i, a, o, l, u) { + o -= e, l -= t; + var d = Math.sqrt(o * o + l * l); + o /= d, l /= d; + var f = o * r + e, g = l * r + t; + if (Math.abs(n - i) % jA < 1e-4) + return u[0] = f, u[1] = g, d - r; + if (a) { + var v = n; + n = cd(i), i = cd(v); + } else + n = cd(n), i = cd(i); + n > i && (i += jA); + var y = Math.atan2(l, o); + if (y < 0 && (y += jA), y >= n && y <= i || y + jA >= n && y + jA <= i) + return u[0] = f, u[1] = g, d - r; + var C = r * Math.cos(n) + e, A = r * Math.sin(n) + t, S = r * Math.cos(i) + e, _ = r * Math.sin(i) + t, E = (C - o) * (C - o) + (A - l) * (A - l), I = (S - o) * (S - o) + (_ - l) * (_ - l); + return E < I ? (u[0] = C, u[1] = A, Math.sqrt(E)) : (u[0] = S, u[1] = _, Math.sqrt(I)); +} +function $L(e, t, r, n, i, a, o, l) { + var u = i - e, d = a - t, f = r - e, g = n - t, v = Math.sqrt(f * f + g * g); + f /= v, g /= v; + var y = u * f + d * g, C = y / v; + l && (C = Math.min(Math.max(C, 0), 1)), C *= v; + var A = o[0] = e + C * f, S = o[1] = t + C * g; + return Math.sqrt((A - i) * (A - i) + (S - a) * (S - a)); +} +function e0e(e, t, r, n, i, a, o) { + r < 0 && (e = e + r, r = -r), n < 0 && (t = t + n, n = -n); + var l = e + r, u = t + n, d = o[0] = Math.min(Math.max(i, e), l), f = o[1] = Math.min(Math.max(a, t), u); + return Math.sqrt((d - i) * (d - i) + (f - a) * (f - a)); +} +var bp = []; +function d8e(e, t, r) { + var n = e0e(t.x, t.y, t.width, t.height, e.x, e.y, bp); + return r.set(bp[0], bp[1]), n; +} +function f8e(e, t, r) { + for (var n = 0, i = 0, a = 0, o = 0, l, u, d = 1 / 0, f = t.data, g = e.x, v = e.y, y = 0; y < f.length; ) { + var C = f[y++]; + y === 1 && (n = f[y], i = f[y + 1], a = n, o = i); + var A = d; + switch (C) { + case cb.M: + a = f[y++], o = f[y++], n = a, i = o; + break; + case cb.L: + A = $L(n, i, f[y], f[y + 1], g, v, bp, !0), n = f[y++], i = f[y++]; + break; + case cb.C: + A = rve(n, i, f[y++], f[y++], f[y++], f[y++], f[y], f[y + 1], g, v, bp), n = f[y++], i = f[y++]; + break; + case cb.Q: + A = ive(n, i, f[y++], f[y++], f[y], f[y + 1], g, v, bp), n = f[y++], i = f[y++]; + break; + case cb.A: + var S = f[y++], _ = f[y++], E = f[y++], I = f[y++], w = f[y++], x = f[y++]; + y += 1; + var b = !!(1 - f[y++]); + l = Math.cos(w) * E + S, u = Math.sin(w) * I + _, y <= 1 && (a = l, o = u); + var R = (g - S) * I / E + S; + A = h8e(S, _, I, w, w + x, b, R, v, bp), n = Math.cos(w + x) * E + S, i = Math.sin(w + x) * I + _; + break; + case cb.R: + a = n = f[y++], o = i = f[y++]; + var M = f[y++], O = f[y++]; + A = e0e(a, o, M, O, g, v, bp); + break; + case cb.Z: + A = $L(n, i, a, o, g, v, bp, !0), n = a, i = o; + break; + } + A < d && (d = A, r.set(bp[0], bp[1])); + } + return d; +} +var Ip = new ni(), bo = new ni(), Us = new ni(), Xg = new ni(), Wg = new ni(); +function Uae(e, t) { + if (e) { + var r = e.getTextGuideLine(), n = e.getTextContent(); + if (n && r) { + var i = e.textGuideLineConfig || {}, a = [[0, 0], [0, 0], [0, 0]], o = i.candidates || c8e, l = n.getBoundingRect().clone(); + l.applyTransform(n.getComputedTransform()); + var u = 1 / 0, d = i.anchor, f = e.getComputedTransform(), g = f && RE([], f), v = t.get("length2") || 0; + d && Us.copy(d); + for (var y = 0; y < o.length; y++) { + var C = o[y]; + u8e(C, 0, l, Ip, Xg), ni.scaleAndAdd(bo, Ip, Xg, v), bo.transform(g); + var A = e.getBoundingRect(), S = d ? d.distance(bo) : e instanceof Ei ? f8e(bo, e.path, Us) : d8e(bo, A, Us); + S < u && (u = S, bo.transform(f), Us.transform(f), Us.toArray(a[0]), bo.toArray(a[1]), Ip.toArray(a[2])); + } + t0e(a, t.get("minTurnAngle")), r.setShape({ + points: a + }); + } + } +} +var VL = [], Au = new ni(); +function t0e(e, t) { + if (t <= 180 && t > 0) { + t = t / 180 * Math.PI, Ip.fromArray(e[0]), bo.fromArray(e[1]), Us.fromArray(e[2]), ni.sub(Xg, Ip, bo), ni.sub(Wg, Us, bo); + var r = Xg.len(), n = Wg.len(); + if (!(r < 1e-3 || n < 1e-3)) { + Xg.scale(1 / r), Wg.scale(1 / n); + var i = Xg.dot(Wg), a = Math.cos(t); + if (a < i) { + var o = $L(bo.x, bo.y, Us.x, Us.y, Ip.x, Ip.y, VL, !1); + Au.fromArray(VL), Au.scaleAndAdd(Wg, o / Math.tan(Math.PI - t)); + var l = Us.x !== bo.x ? (Au.x - bo.x) / (Us.x - bo.x) : (Au.y - bo.y) / (Us.y - bo.y); + if (isNaN(l)) + return; + l < 0 ? ni.copy(Au, bo) : l > 1 && ni.copy(Au, Us), Au.toArray(e[1]); + } + } + } +} +function p8e(e, t, r) { + if (r <= 180 && r > 0) { + r = r / 180 * Math.PI, Ip.fromArray(e[0]), bo.fromArray(e[1]), Us.fromArray(e[2]), ni.sub(Xg, bo, Ip), ni.sub(Wg, Us, bo); + var n = Xg.len(), i = Wg.len(); + if (!(n < 1e-3 || i < 1e-3)) { + Xg.scale(1 / n), Wg.scale(1 / i); + var a = Xg.dot(t), o = Math.cos(r); + if (a < o) { + var l = $L(bo.x, bo.y, Us.x, Us.y, Ip.x, Ip.y, VL, !1); + Au.fromArray(VL); + var u = Math.PI / 2, d = Math.acos(Wg.dot(t)), f = u + d - r; + if (f >= u) + ni.copy(Au, Us); + else { + Au.scaleAndAdd(Wg, l / Math.tan(Math.PI / 2 - f)); + var g = Us.x !== bo.x ? (Au.x - bo.x) / (Us.x - bo.x) : (Au.y - bo.y) / (Us.y - bo.y); + if (isNaN(g)) + return; + g < 0 ? ni.copy(Au, bo) : g > 1 && ni.copy(Au, Us); + } + Au.toArray(e[1]); + } + } + } +} +function xz(e, t, r, n) { + var i = r === "normal", a = i ? e : e.ensureState(r); + a.ignore = t; + var o = n.get("smooth"); + o && o === !0 && (o = 0.3), a.shape = a.shape || {}, o > 0 && (a.shape.smooth = o); + var l = n.getModel("lineStyle").getLineStyle(); + i ? e.useStyle(l) : a.style = l; +} +function g8e(e, t) { + var r = t.smooth, n = t.points; + if (n) + if (e.moveTo(n[0][0], n[0][1]), r > 0 && n.length >= 3) { + var i = Om(n[0], n[1]), a = Om(n[1], n[2]); + if (!i || !a) { + e.lineTo(n[1][0], n[1][1]), e.lineTo(n[2][0], n[2][1]); + return; + } + var o = Math.min(i, a) * r, l = I1([], n[1], n[0], o / i), u = I1([], n[1], n[2], o / a), d = I1([], l, u, 0.5); + e.bezierCurveTo(l[0], l[1], l[0], l[1], d[0], d[1]), e.bezierCurveTo(u[0], u[1], u[0], u[1], n[2][0], n[2][1]); + } else + for (var f = 1; f < n.length; f++) + e.lineTo(n[f][0], n[f][1]); +} +function T9(e, t, r) { + var n = e.getTextGuideLine(), i = e.getTextContent(); + if (!i) { + n && e.removeTextGuideLine(); + return; + } + for (var a = t.normal, o = a.get("show"), l = i.ignore, u = 0; u < gR.length; u++) { + var d = gR[u], f = t[d], g = d === "normal"; + if (f) { + var v = f.get("show"), y = g ? l : Fn(i.states[d] && i.states[d].ignore, l); + if (y || !Fn(v, o)) { + var C = g ? n : n && n.states[d]; + C && (C.ignore = !0), n && xz(n, !0, d, f); + continue; + } + n || (n = new $u(), e.setTextGuideLine(n), !g && (l || !o) && xz(n, !0, "normal", t.normal), e.stateProxy && (n.stateProxy = e.stateProxy)), xz(n, !1, d, f); + } + } + if (n) { + Jr(n.style, r), n.style.fill = null; + var A = a.get("showAbove"), S = e.textGuideLineConfig = e.textGuideLineConfig || {}; + S.showAbove = A || !1, n.buildPath = g8e; + } +} +function w9(e, t) { + t = t || "labelLine"; + for (var r = { + normal: e.getModel(t) + }, n = 0; n < Lu.length; n++) { + var i = Lu[n]; + r[i] = e.getModel([i, t]); + } + return r; +} +function r0e(e) { + for (var t = [], r = 0; r < e.length; r++) { + var n = e[r]; + if (!n.defaultAttr.ignore) { + var i = n.label, a = i.getComputedTransform(), o = i.getBoundingRect(), l = !a || a[1] < 1e-5 && a[2] < 1e-5, u = i.style.margin || 0, d = o.clone(); + d.applyTransform(a), d.x -= u / 2, d.y -= u / 2, d.width += u, d.height += u; + var f = l ? new TL(o, a) : null; + t.push({ + label: i, + labelLine: n.labelLine, + rect: d, + localRect: o, + obb: f, + priority: n.priority, + defaultAttr: n.defaultAttr, + layoutOption: n.computedLayoutOption, + axisAligned: l, + transform: a + }); + } + } + return t; +} +function n0e(e, t, r, n, i, a) { + var o = e.length; + if (o < 2) + return; + e.sort(function(M, O) { + return M.rect[t] - O.rect[t]; + }); + for (var l = 0, u, d = !1, f = 0, g = 0; g < o; g++) { + var v = e[g], y = v.rect; + u = y[t] - l, u < 0 && (y[t] -= u, v.label[t] -= u, d = !0); + var C = Math.max(-u, 0); + f += C, l = y[t] + y[r]; + } + f > 0 && a && x(-f / o, 0, o); + var A = e[0], S = e[o - 1], _, E; + I(), _ < 0 && b(-_, 0.8), E < 0 && b(E, 0.8), I(), w(_, E, 1), w(E, _, -1), I(), _ < 0 && R(-_), E < 0 && R(E); + function I() { + _ = A.rect[t] - n, E = i - S.rect[t] - S.rect[r]; + } + function w(M, O, P) { + if (M < 0) { + var B = Math.min(O, -M); + if (B > 0) { + x(B * P, 0, o); + var H = B + M; + H < 0 && b(-H * P, 1); + } else + b(-M * P, 1); + } + } + function x(M, O, P) { + M !== 0 && (d = !0); + for (var B = O; B < P; B++) { + var H = e[B], Y = H.rect; + Y[t] += M, H.label[t] += M; + } + } + function b(M, O) { + for (var P = [], B = 0, H = 1; H < o; H++) { + var Y = e[H - 1].rect, X = Math.max(e[H].rect[t] - Y[t] - Y[r], 0); + P.push(X), B += X; + } + if (B) { + var ee = Math.min(Math.abs(M) / B, O); + if (M > 0) + for (var H = 0; H < o - 1; H++) { + var ae = P[H] * ee; + x(ae, 0, H + 1); + } + else + for (var H = o - 1; H > 0; H--) { + var ae = P[H - 1] * ee; + x(-ae, H, o); + } + } + } + function R(M) { + var O = M < 0 ? -1 : 1; + M = Math.abs(M); + for (var P = Math.ceil(M / (o - 1)), B = 0; B < o - 1; B++) + if (O > 0 ? x(P, 0, B + 1) : x(-P, o - B - 1, o), M -= P, M <= 0) + return; + } + return d; +} +function v8e(e, t, r, n) { + return n0e(e, "x", "width", t, r, n); +} +function i0e(e, t, r, n) { + return n0e(e, "y", "height", t, r, n); +} +function a0e(e) { + var t = []; + e.sort(function(A, S) { + return S.priority - A.priority; + }); + var r = new ei(0, 0, 0, 0); + function n(A) { + if (!A.ignore) { + var S = A.ensureState("emphasis"); + S.ignore == null && (S.ignore = !1); + } + A.ignore = !0; + } + for (var i = 0; i < e.length; i++) { + var a = e[i], o = a.axisAligned, l = a.localRect, u = a.transform, d = a.label, f = a.labelLine; + r.copy(a.rect), r.width -= 0.1, r.height -= 0.1, r.x += 0.05, r.y += 0.05; + for (var g = a.obb, v = !1, y = 0; y < t.length; y++) { + var C = t[y]; + if (r.intersect(C.rect)) { + if (o && C.axisAligned) { + v = !0; + break; + } + if (C.obb || (C.obb = new TL(C.localRect, C.transform)), g || (g = new TL(l, u)), g.intersect(C.obb)) { + v = !0; + break; + } + } + } + v ? (n(d), f && n(f)) : (d.attr("ignore", a.defaultAttr.ignore), f && f.attr("ignore", a.defaultAttr.labelGuideIgnore), t.push(a)); + } +} +function m8e(e) { + if (e) { + for (var t = [], r = 0; r < e.length; r++) + t.push(e[r].slice()); + return t; + } +} +function y8e(e, t) { + var r = e.label, n = t && t.getTextGuideLine(); + return { + dataIndex: e.dataIndex, + dataType: e.dataType, + seriesIndex: e.seriesModel.seriesIndex, + text: e.label.style.text, + rect: e.hostRect, + labelRect: e.rect, + // x: labelAttr.x, + // y: labelAttr.y, + align: r.style.align, + verticalAlign: r.style.verticalAlign, + labelLinePoints: m8e(n && n.shape.points) + }; +} +var jae = ["align", "verticalAlign", "width", "height", "fontSize"], Cu = new Pm(), Az = ea(), _8e = ea(); +function hP(e, t, r) { + for (var n = 0; n < r.length; n++) { + var i = r[n]; + t[i] != null && (e[i] = t[i]); + } +} +var dP = ["x", "y", "rotation"], S8e = ( + /** @class */ + function() { + function e() { + this._labelList = [], this._chartViewList = []; + } + return e.prototype.clearLabels = function() { + this._labelList = [], this._chartViewList = []; + }, e.prototype._addLabel = function(t, r, n, i, a) { + var o = i.style, l = i.__hostTarget, u = l.textConfig || {}, d = i.getComputedTransform(), f = i.getBoundingRect().plain(); + ei.applyTransform(f, f, d), d ? Cu.setLocalTransform(d) : (Cu.x = Cu.y = Cu.rotation = Cu.originX = Cu.originY = 0, Cu.scaleX = Cu.scaleY = 1), Cu.rotation = cd(Cu.rotation); + var g = i.__hostTarget, v; + if (g) { + v = g.getBoundingRect().plain(); + var y = g.getComputedTransform(); + ei.applyTransform(v, v, y); + } + var C = v && g.getTextGuideLine(); + this._labelList.push({ + label: i, + labelLine: C, + seriesModel: n, + dataIndex: t, + dataType: r, + layoutOption: a, + computedLayoutOption: null, + rect: f, + hostRect: v, + // Label with lower priority will be hidden when overlapped + // Use rect size as default priority + priority: v ? v.width * v.height : 0, + // Save default label attributes. + // For restore if developers want get back to default value in callback. + defaultAttr: { + ignore: i.ignore, + labelGuideIgnore: C && C.ignore, + x: Cu.x, + y: Cu.y, + scaleX: Cu.scaleX, + scaleY: Cu.scaleY, + rotation: Cu.rotation, + style: { + x: o.x, + y: o.y, + align: o.align, + verticalAlign: o.verticalAlign, + width: o.width, + height: o.height, + fontSize: o.fontSize + }, + cursor: i.cursor, + attachedPos: u.position, + attachedRot: u.rotation + } + }); + }, e.prototype.addLabelsOfSeries = function(t) { + var r = this; + this._chartViewList.push(t); + var n = t.__model, i = n.get("labelLayout"); + (Kr(i) || Ri(i).length) && t.group.traverse(function(a) { + if (a.ignore) + return !0; + var o = a.getTextContent(), l = Tn(a); + o && !o.disableLabelLayout && r._addLabel(l.dataIndex, l.dataType, n, o, i); + }); + }, e.prototype.updateLayoutConfig = function(t) { + var r = t.getWidth(), n = t.getHeight(); + function i(I, w) { + return function() { + Uae(I, w); + }; + } + for (var a = 0; a < this._labelList.length; a++) { + var o = this._labelList[a], l = o.label, u = l.__hostTarget, d = o.defaultAttr, f = void 0; + Kr(o.layoutOption) ? f = o.layoutOption(y8e(o, u)) : f = o.layoutOption, f = f || {}, o.computedLayoutOption = f; + var g = Math.PI / 180; + u && u.setTextConfig({ + // Force to set local false. + local: !1, + // Ignore position and rotation config on the host el if x or y is changed. + position: f.x != null || f.y != null ? null : d.attachedPos, + // Ignore rotation config on the host el if rotation is changed. + rotation: f.rotate != null ? f.rotate * g : d.attachedRot, + offset: [f.dx || 0, f.dy || 0] + }); + var v = !1; + if (f.x != null ? (l.x = yr(f.x, r), l.setStyle("x", 0), v = !0) : (l.x = d.x, l.setStyle("x", d.style.x)), f.y != null ? (l.y = yr(f.y, n), l.setStyle("y", 0), v = !0) : (l.y = d.y, l.setStyle("y", d.style.y)), f.labelLinePoints) { + var y = u.getTextGuideLine(); + y && (y.setShape({ + points: f.labelLinePoints + }), v = !1); + } + var C = Az(l); + C.needsUpdateLabelLine = v, l.rotation = f.rotate != null ? f.rotate * g : d.rotation, l.scaleX = d.scaleX, l.scaleY = d.scaleY; + for (var A = 0; A < jae.length; A++) { + var S = jae[A]; + l.setStyle(S, f[S] != null ? f[S] : d.style[S]); + } + if (f.draggable) { + if (l.draggable = !0, l.cursor = "move", u) { + var _ = o.seriesModel; + if (o.dataIndex != null) { + var E = o.seriesModel.getData(o.dataType); + _ = E.getItemModel(o.dataIndex); + } + l.on("drag", i(u, _.getModel("labelLine"))); + } + } else + l.off("drag"), l.cursor = d.cursor; + } + }, e.prototype.layout = function(t) { + var r = t.getWidth(), n = t.getHeight(), i = r0e(this._labelList), a = Ma(i, function(u) { + return u.layoutOption.moveOverlap === "shiftX"; + }), o = Ma(i, function(u) { + return u.layoutOption.moveOverlap === "shiftY"; + }); + v8e(a, 0, r), i0e(o, 0, n); + var l = Ma(i, function(u) { + return u.layoutOption.hideOverlap; + }); + a0e(l); + }, e.prototype.processLabelsOverall = function() { + var t = this; + Ee(this._chartViewList, function(r) { + var n = r.__model, i = r.ignoreLabelLineUpdate, a = n.isAnimationEnabled(); + r.group.traverse(function(o) { + if (o.ignore && !o.forceLabelAnimation) + return !0; + var l = !i, u = o.getTextContent(); + !l && u && (l = Az(u).needsUpdateLabelLine), l && t._updateLabelLine(o, n), a && t._animateLabels(o, n); + }); + }); + }, e.prototype._updateLabelLine = function(t, r) { + var n = t.getTextContent(), i = Tn(t), a = i.dataIndex; + if (n && a != null) { + var o = r.getData(i.dataType), l = o.getItemModel(a), u = {}, d = o.getItemVisual(a, "style"); + if (d) { + var f = o.getVisual("drawType"); + u.stroke = d[f]; + } + var g = l.getModel("labelLine"); + T9(t, w9(l), u), Uae(t, g); + } + }, e.prototype._animateLabels = function(t, r) { + var n = t.getTextContent(), i = t.getTextGuideLine(); + if (n && (t.forceLabelAnimation || !n.ignore && !n.invisible && !t.disableLabelAnimation && !Cw(t))) { + var a = Az(n), o = a.oldLayout, l = Tn(t), u = l.dataIndex, d = { + x: n.x, + y: n.y, + rotation: n.rotation + }, f = r.getData(l.dataType); + if (o) { + n.attr(o); + var v = t.prevStates; + v && (di(v, "select") >= 0 && n.attr(a.oldLayoutSelect), di(v, "emphasis") >= 0 && n.attr(a.oldLayoutEmphasis)), ia(n, d, r, u); + } else if (n.attr(d), !mI(n).valueAnimation) { + var g = Fn(n.style.opacity, 1); + n.style.opacity = 0, Po(n, { + style: { + opacity: g + } + }, r, u); + } + if (a.oldLayout = d, n.states.select) { + var y = a.oldLayoutSelect = {}; + hP(y, d, dP), hP(y, n.states.select, dP); + } + if (n.states.emphasis) { + var C = a.oldLayoutEmphasis = {}; + hP(C, d, dP), hP(C, n.states.emphasis, dP); + } + Pme(n, u, f, r, r); + } + if (i && !i.ignore && !i.invisible) { + var a = _8e(i), o = a.oldLayout, A = { + points: i.shape.points + }; + o ? (i.attr({ + shape: o + }), ia(i, { + shape: A + }, r)) : (i.setShape(A), i.style.strokePercent = 0, Po(i, { + style: { + strokePercent: 1 + } + }, r)), a.oldLayout = A; + } + }, e; + }() +); +const b8e = S8e; +var Rz = ea(); +function o0e(e) { + e.registerUpdateLifecycle("series:beforeupdate", function(t, r, n) { + var i = Rz(r).labelManager; + i || (i = Rz(r).labelManager = new b8e()), i.clearLabels(); + }), e.registerUpdateLifecycle("series:layoutlabels", function(t, r, n) { + var i = Rz(r).labelManager; + n.updatedSeries.forEach(function(a) { + i.addLabelsOfSeries(r.getViewOfSeriesModel(a)); + }), i.updateLayoutConfig(r), i.layout(r), i.processLabelsOverall(); + }); +} +var Dz = Math.sin, Oz = Math.cos, s0e = Math.PI, ub = Math.PI * 2, E8e = 180 / s0e, C8e = function() { + function e() { + } + return e.prototype.reset = function(t) { + this._start = !0, this._d = [], this._str = "", this._p = Math.pow(10, t || 4); + }, e.prototype.moveTo = function(t, r) { + this._add("M", t, r); + }, e.prototype.lineTo = function(t, r) { + this._add("L", t, r); + }, e.prototype.bezierCurveTo = function(t, r, n, i, a, o) { + this._add("C", t, r, n, i, a, o); + }, e.prototype.quadraticCurveTo = function(t, r, n, i) { + this._add("Q", t, r, n, i); + }, e.prototype.arc = function(t, r, n, i, a, o) { + this.ellipse(t, r, n, n, 0, i, a, o); + }, e.prototype.ellipse = function(t, r, n, i, a, o, l, u) { + var d = l - o, f = !u, g = Math.abs(d), v = Z_(g - ub) || (f ? d >= ub : -d >= ub), y = d > 0 ? d % ub : d % ub + ub, C = !1; + v ? C = !0 : Z_(g) ? C = !1 : C = y >= s0e == !!f; + var A = t + n * Oz(o), S = r + i * Dz(o); + this._start && this._add("M", A, S); + var _ = Math.round(a * E8e); + if (v) { + var E = 1 / this._p, I = (f ? 1 : -1) * (ub - E); + this._add("A", n, i, _, 1, +f, t + n * Oz(o + I), r + i * Dz(o + I)), E > 0.01 && this._add("A", n, i, _, 0, +f, A, S); + } else { + var w = t + n * Oz(l), x = r + i * Dz(l); + this._add("A", n, i, _, +C, +f, w, x); + } + }, e.prototype.rect = function(t, r, n, i) { + this._add("M", t, r), this._add("l", n, 0), this._add("l", 0, i), this._add("l", -n, 0), this._add("Z"); + }, e.prototype.closePath = function() { + this._d.length > 0 && this._add("Z"); + }, e.prototype._add = function(t, r, n, i, a, o, l, u, d) { + for (var f = [], g = this._p, v = 1; v < arguments.length; v++) { + var y = arguments[v]; + if (isNaN(y)) { + this._invalid = !0; + return; + } + f.push(Math.round(y * g) / g); + } + this._d.push(t + f.join(" ")), this._start = t === "Z"; + }, e.prototype.generateStr = function() { + this._str = this._invalid ? "" : this._d.join(""), this._d = []; + }, e.prototype.getStr = function() { + return this._str; + }, e; +}(); +const l0e = C8e; +var B1 = "none", T8e = Math.round; +function w8e(e) { + var t = e.fill; + return t != null && t !== B1; +} +function I8e(e) { + var t = e.stroke; + return t != null && t !== B1; +} +var EW = ["lineCap", "miterLimit", "lineJoin"], x8e = er(EW, function(e) { + return "stroke-" + e.toLowerCase(); +}); +function A8e(e, t, r, n) { + var i = t.opacity == null ? 1 : t.opacity; + if (r instanceof ec) { + e("opacity", i); + return; + } + if (w8e(t)) { + var a = dR(t.fill); + e("fill", a.color); + var o = t.fillOpacity != null ? t.fillOpacity * a.opacity * i : a.opacity * i; + (n || o < 1) && e("fill-opacity", o); + } else + e("fill", B1); + if (I8e(t)) { + var l = dR(t.stroke); + e("stroke", l.color); + var u = t.strokeNoScale ? r.getLineScale() : 1, d = u ? (t.lineWidth || 0) / u : 0, f = t.strokeOpacity != null ? t.strokeOpacity * l.opacity * i : l.opacity * i, g = t.strokeFirst; + if ((n || d !== 1) && e("stroke-width", d), (n || g) && e("paint-order", g ? "stroke" : "fill"), (n || f < 1) && e("stroke-opacity", f), t.lineDash) { + var v = t9(r), y = v[0], C = v[1]; + y && (C = T8e(C || 0), e("stroke-dasharray", y.join(",")), (C || n) && e("stroke-dashoffset", C)); + } else + n && e("stroke-dasharray", B1); + for (var A = 0; A < EW.length; A++) { + var S = EW[A]; + if (n || t[S] !== EL[S]) { + var _ = t[S] || EL[S]; + _ && e(x8e[A], _); + } + } + } else + n && e("stroke", B1); +} +var c0e = "http://www.w3.org/2000/svg", u0e = "http://www.w3.org/1999/xlink", R8e = "http://www.w3.org/2000/xmlns/", D8e = "http://www.w3.org/XML/1998/namespace", $ae = "ecmeta_"; +function h0e(e) { + return document.createElementNS(c0e, e); +} +function Nl(e, t, r, n, i) { + return { + tag: e, + attrs: r || {}, + children: n, + text: i, + key: t + }; +} +function O8e(e, t) { + var r = []; + if (t) + for (var n in t) { + var i = t[n], a = n; + i !== !1 && (i !== !0 && i != null && (a += '="' + i + '"'), r.push(a)); + } + return "<" + e + " " + r.join(" ") + ">"; +} +function M8e(e) { + return ""; +} +function I9(e, t) { + t = t || {}; + var r = t.newline ? ` +` : ""; + function n(i) { + var a = i.children, o = i.tag, l = i.attrs, u = i.text; + return O8e(o, l) + (o !== "style" ? Du(u) : u || "") + (a ? "" + r + er(a, function(d) { + return n(d); + }).join(r) + r : "") + M8e(o); + } + return n(e); +} +function k8e(e, t, r) { + r = r || {}; + var n = r.newline ? ` +` : "", i = " {" + n, a = n + "}", o = er(Ri(e), function(u) { + return u + i + er(Ri(e[u]), function(d) { + return d + ":" + e[u][d] + ";"; + }).join(n) + a; + }).join(n), l = er(Ri(t), function(u) { + return "@keyframes " + u + i + er(Ri(t[u]), function(d) { + return d + i + er(Ri(t[u][d]), function(f) { + var g = t[u][d][f]; + return f === "d" && (g = 'path("' + g + '")'), f + ":" + g + ";"; + }).join(n) + a; + }).join(n) + a; + }).join(n); + return !o && !l ? "" : [""].join(n); +} +function CW(e) { + return { + zrId: e, + shadowCache: {}, + patternCache: {}, + gradientCache: {}, + clipPathCache: {}, + defs: {}, + cssNodes: {}, + cssAnims: {}, + cssStyleCache: {}, + cssAnimIdx: 0, + shadowIdx: 0, + gradientIdx: 0, + patternIdx: 0, + clipPathIdx: 0 + }; +} +function Vae(e, t, r, n) { + return Nl("svg", "root", { + width: e, + height: t, + xmlns: c0e, + "xmlns:xlink": u0e, + version: "1.1", + baseProfile: "full", + viewBox: n ? "0 0 " + e + " " + t : !1 + }, r); +} +var P8e = 0; +function d0e() { + return P8e++; +} +var zae = { + cubicIn: "0.32,0,0.67,0", + cubicOut: "0.33,1,0.68,1", + cubicInOut: "0.65,0,0.35,1", + quadraticIn: "0.11,0,0.5,0", + quadraticOut: "0.5,1,0.89,1", + quadraticInOut: "0.45,0,0.55,1", + quarticIn: "0.5,0,0.75,0", + quarticOut: "0.25,1,0.5,1", + quarticInOut: "0.76,0,0.24,1", + quinticIn: "0.64,0,0.78,0", + quinticOut: "0.22,1,0.36,1", + quinticInOut: "0.83,0,0.17,1", + sinusoidalIn: "0.12,0,0.39,0", + sinusoidalOut: "0.61,1,0.88,1", + sinusoidalInOut: "0.37,0,0.63,1", + exponentialIn: "0.7,0,0.84,0", + exponentialOut: "0.16,1,0.3,1", + exponentialInOut: "0.87,0,0.13,1", + circularIn: "0.55,0,1,0.45", + circularOut: "0,0.55,0.45,1", + circularInOut: "0.85,0,0.15,1" +}, pb = "transform-origin"; +function N8e(e, t, r) { + var n = $t({}, e.shape); + $t(n, t), e.buildPath(r, n); + var i = new l0e(); + return i.reset(dve(e)), r.rebuildPath(i, 1), i.generateStr(), i.getStr(); +} +function L8e(e, t) { + var r = t.originX, n = t.originY; + (r || n) && (e[pb] = r + "px " + n + "px"); +} +var F8e = { + fill: "fill", + opacity: "opacity", + lineWidth: "stroke-width", + lineDashOffset: "stroke-dashoffset" +}; +function f0e(e, t) { + var r = t.zrId + "-ani-" + t.cssAnimIdx++; + return t.cssAnims[r] = e, r; +} +function B8e(e, t, r) { + var n = e.shape.paths, i = {}, a, o; + if (Ee(n, function(u) { + var d = CW(r.zrId); + d.animation = !0, qF(u, {}, d, !0); + var f = d.cssAnims, g = d.cssNodes, v = Ri(f), y = v.length; + if (y) { + o = v[y - 1]; + var C = f[o]; + for (var A in C) { + var S = C[A]; + i[A] = i[A] || { d: "" }, i[A].d += S.d || ""; + } + for (var _ in g) { + var E = g[_].animation; + E.indexOf(o) >= 0 && (a = E); + } + } + }), !!a) { + t.d = !1; + var l = f0e(i, r); + return a.replace(o, l); + } +} +function Hae(e) { + return wr(e) ? zae[e] ? "cubic-bezier(" + zae[e] + ")" : c8(e) ? e : "" : ""; +} +function qF(e, t, r, n) { + var i = e.animators, a = i.length, o = []; + if (e instanceof RF) { + var l = B8e(e, t, r); + if (l) + o.push(l); + else if (!a) + return; + } else if (!a) + return; + for (var u = {}, d = 0; d < a; d++) { + var f = i[d], g = [f.getMaxTime() / 1e3 + "s"], v = Hae(f.getClip().easing), y = f.getDelay(); + v ? g.push(v) : g.push("linear"), y && g.push(y / 1e3 + "s"), f.getLoop() && g.push("infinite"); + var C = g.join(" "); + u[C] = u[C] || [C, []], u[C][1].push(f); + } + function A(E) { + var I = E[1], w = I.length, x = {}, b = {}, R = {}, M = "animation-timing-function"; + function O(Re, Ne, Me) { + for (var we = Re.getTracks(), He = Re.getMaxTime(), Ie = 0; Ie < we.length; Ie++) { + var Ae = we[Ie]; + if (Ae.needsAnimate()) { + var Fe = Ae.keyframes, $e = Ae.propName; + if (Me && ($e = Me($e)), $e) + for (var lt = 0; lt < Fe.length; lt++) { + var it = Fe[lt], nt = Math.round(it.time / He * 100) + "%", ut = Hae(it.easing), rt = it.rawValue; + (wr(rt) || Qi(rt)) && (Ne[nt] = Ne[nt] || {}, Ne[nt][$e] = it.rawValue, ut && (Ne[nt][M] = ut)); + } + } + } + } + for (var P = 0; P < w; P++) { + var B = I[P], H = B.targetName; + H ? H === "shape" && O(B, b) : !n && O(B, x); + } + for (var Y in x) { + var X = {}; + mve(X, e), $t(X, x[Y]); + var ee = fve(X), ae = x[Y][M]; + R[Y] = ee ? { + transform: ee + } : {}, L8e(R[Y], X), ae && (R[Y][M] = ae); + } + var J, ne = !0; + for (var Y in b) { + R[Y] = R[Y] || {}; + var fe = !J, ae = b[Y][M]; + fe && (J = new sv()); + var de = J.len(); + J.reset(), R[Y].d = N8e(e, b[Y], J); + var Te = J.len(); + if (!fe && de !== Te) { + ne = !1; + break; + } + ae && (R[Y][M] = ae); + } + if (!ne) + for (var Y in R) + delete R[Y].d; + if (!n) + for (var P = 0; P < w; P++) { + var B = I[P], H = B.targetName; + H === "style" && O(B, R, function(we) { + return F8e[we]; + }); + } + for (var be = Ri(R), Ve = !0, pe, P = 1; P < be.length; P++) { + var Be = be[P - 1], Ue = be[P]; + if (R[Be][pb] !== R[Ue][pb]) { + Ve = !1; + break; + } + pe = R[Be][pb]; + } + if (Ve && pe) { + for (var Y in R) + R[Y][pb] && delete R[Y][pb]; + t[pb] = pe; + } + if (Ma(be, function(Re) { + return Ri(R[Re]).length > 0; + }).length) { + var Qe = f0e(R, r); + return Qe + " " + E[0] + " both"; + } + } + for (var S in u) { + var l = A(u[S]); + l && o.push(l); + } + if (o.length) { + var _ = r.zrId + "-cls-" + d0e(); + r.cssNodes["." + _] = { + animation: o.join(",") + }, t.class = _; + } +} +function U8e(e, t, r) { + if (!e.ignore) + if (e.isSilent()) { + var n = { + "pointer-events": "none" + }; + Wae(n, t, r, !0); + } else { + var i = e.states.emphasis && e.states.emphasis.style ? e.states.emphasis.style : {}, a = i.fill; + if (!a) { + var o = e.style && e.style.fill, l = e.states.select && e.states.select.style && e.states.select.style.fill, u = e.currentStates.indexOf("select") >= 0 && l || o; + u && (a = yL(u)); + } + var d = i.lineWidth; + if (d) { + var f = !i.strokeNoScale && e.transform ? e.transform[0] : 1; + d = d / f; + } + var n = { + cursor: "pointer" + }; + a && (n.fill = a), i.stroke && (n.stroke = i.stroke), d && (n["stroke-width"] = d), Wae(n, t, r, !0); + } +} +function Wae(e, t, r, n) { + var i = JSON.stringify(e), a = r.cssStyleCache[i]; + a || (a = r.zrId + "-cls-" + d0e(), r.cssStyleCache[i] = a, r.cssNodes["." + a + (n ? ":hover" : "")] = e), t.class = t.class ? t.class + " " + a : a; +} +var IR = Math.round; +function p0e(e) { + return e && wr(e.src); +} +function g0e(e) { + return e && Kr(e.toDataURL); +} +function x9(e, t, r, n) { + A8e(function(i, a) { + var o = i === "fill" || i === "stroke"; + o && hve(a) ? m0e(t, e, i, n) : o && h8(a) ? y0e(r, e, i, n) : o && a === "none" ? e[i] = "transparent" : e[i] = a; + }, t, r, !1), G8e(r, e, n); +} +function A9(e, t) { + var r = Eve(t); + r && (r.each(function(n, i) { + n != null && (e[($ae + i).toLowerCase()] = n + ""); + }), t.isSilent() && (e[$ae + "silent"] = "true")); +} +function Gae(e) { + return Z_(e[0] - 1) && Z_(e[1]) && Z_(e[2]) && Z_(e[3] - 1); +} +function j8e(e) { + return Z_(e[4]) && Z_(e[5]); +} +function R9(e, t, r) { + if (t && !(j8e(t) && Gae(t))) { + var n = r ? 10 : 1e4; + e.transform = Gae(t) ? "translate(" + IR(t[4] * n) / n + " " + IR(t[5] * n) / n + ")" : zVe(t); + } +} +function Yae(e, t, r) { + for (var n = e.points, i = [], a = 0; a < n.length; a++) + i.push(IR(n[a][0] * r) / r), i.push(IR(n[a][1] * r) / r); + t.points = i.join(" "); +} +function Xae(e) { + return !e.smooth; +} +function $8e(e) { + var t = er(e, function(r) { + return typeof r == "string" ? [r, r] : r; + }); + return function(r, n, i) { + for (var a = 0; a < t.length; a++) { + var o = t[a], l = r[o[0]]; + l != null && (n[o[1]] = IR(l * i) / i); + } + }; +} +var V8e = { + circle: [$8e(["cx", "cy", "r"])], + polyline: [Yae, Xae], + polygon: [Yae, Xae] +}; +function z8e(e) { + for (var t = e.animators, r = 0; r < t.length; r++) + if (t[r].targetName === "shape") + return !0; + return !1; +} +function v0e(e, t) { + var r = e.style, n = e.shape, i = V8e[e.type], a = {}, o = t.animation, l = "path", u = e.style.strokePercent, d = t.compress && dve(e) || 4; + if (i && !t.willUpdate && !(i[1] && !i[1](n)) && !(o && z8e(e)) && !(u < 1)) { + l = e.type; + var f = Math.pow(10, d); + i[0](n, a, f); + } else { + var g = !e.path || e.shapeChanged(); + e.path || e.createPathProxy(); + var v = e.path; + g && (v.beginPath(), e.buildPath(v, e.shape), e.pathUpdated()); + var y = v.getVersion(), C = e, A = C.__svgPathBuilder; + (C.__svgPathVersion !== y || !A || u !== C.__svgPathStrokePercent) && (A || (A = C.__svgPathBuilder = new l0e()), A.reset(d), v.rebuildPath(A, u), A.generateStr(), C.__svgPathVersion = y, C.__svgPathStrokePercent = u), a.d = A.getStr(); + } + return R9(a, e.transform), x9(a, r, e, t), A9(a, e), t.animation && qF(e, a, t), t.emphasis && U8e(e, a, t), Nl(l, e.id + "", a); +} +function H8e(e, t) { + var r = e.style, n = r.image; + if (n && !wr(n) && (p0e(n) ? n = n.src : g0e(n) && (n = n.toDataURL())), !!n) { + var i = r.x || 0, a = r.y || 0, o = r.width, l = r.height, u = { + href: n, + width: o, + height: l + }; + return i && (u.x = i), a && (u.y = a), R9(u, e.transform), x9(u, r, e, t), A9(u, e), t.animation && qF(e, u, t), Nl("image", e.id + "", u); + } +} +function W8e(e, t) { + var r = e.style, n = r.text; + if (n != null && (n += ""), !(!n || isNaN(r.x) || isNaN(r.y))) { + var i = r.font || p0, a = r.x || 0, o = WVe(r.y || 0, _F(i), r.textBaseline), l = HVe[r.textAlign] || r.textAlign, u = { + "dominant-baseline": "central", + "text-anchor": l + }; + if (Jve(r)) { + var d = "", f = r.fontStyle, g = qve(r.fontSize); + if (!parseFloat(g)) + return; + var v = r.fontFamily || Oge, y = r.fontWeight; + d += "font-size:" + g + ";font-family:" + v + ";", f && f !== "normal" && (d += "font-style:" + f + ";"), y && y !== "normal" && (d += "font-weight:" + y + ";"), u.style = d; + } else + u.style = "font: " + i; + return n.match(/\s/) && (u["xml:space"] = "preserve"), a && (u.x = a), o && (u.y = o), R9(u, e.transform), x9(u, r, e, t), A9(u, e), t.animation && qF(e, u, t), Nl("text", e.id + "", u, void 0, n); + } +} +function Kae(e, t) { + if (e instanceof Ei) + return v0e(e, t); + if (e instanceof ec) + return H8e(e, t); + if (e instanceof pR) + return W8e(e, t); +} +function G8e(e, t, r) { + var n = e.style; + if (GVe(n)) { + var i = YVe(e), a = r.shadowCache, o = a[i]; + if (!o) { + var l = e.getGlobalScale(), u = l[0], d = l[1]; + if (!u || !d) + return; + var f = n.shadowOffsetX || 0, g = n.shadowOffsetY || 0, v = n.shadowBlur, y = dR(n.shadowColor), C = y.opacity, A = y.color, S = v / 2 / u, _ = v / 2 / d, E = S + " " + _; + o = r.zrId + "-s" + r.shadowIdx++, r.defs[o] = Nl("filter", o, { + id: o, + x: "-100%", + y: "-100%", + width: "300%", + height: "300%" + }, [ + Nl("feDropShadow", "", { + dx: f / u, + dy: g / d, + stdDeviation: E, + "flood-color": A, + "flood-opacity": C + }) + ]), a[i] = o; + } + t.filter = yF(o); + } +} +function m0e(e, t, r, n) { + var i = e[r], a, o = { + gradientUnits: i.global ? "userSpaceOnUse" : "objectBoundingBox" + }; + if (cve(i)) + a = "linearGradient", o.x1 = i.x, o.y1 = i.y, o.x2 = i.x2, o.y2 = i.y2; + else if (uve(i)) + a = "radialGradient", o.cx = Fn(i.x, 0.5), o.cy = Fn(i.y, 0.5), o.r = Fn(i.r, 0.5); + else + return; + for (var l = i.colorStops, u = [], d = 0, f = l.length; d < f; ++d) { + var g = kH(l[d].offset) * 100 + "%", v = l[d].color, y = dR(v), C = y.color, A = y.opacity, S = { + offset: g + }; + S["stop-color"] = C, A < 1 && (S["stop-opacity"] = A), u.push(Nl("stop", d + "", S)); + } + var _ = Nl(a, "", o, u), E = I9(_), I = n.gradientCache, w = I[E]; + w || (w = n.zrId + "-g" + n.gradientIdx++, I[E] = w, o.id = w, n.defs[w] = Nl(a, w, o, u)), t[r] = yF(w); +} +function y0e(e, t, r, n) { + var i = e.style[r], a = e.getBoundingRect(), o = {}, l = i.repeat, u = l === "no-repeat", d = l === "repeat-x", f = l === "repeat-y", g; + if (lve(i)) { + var v = i.imageWidth, y = i.imageHeight, C = void 0, A = i.image; + if (wr(A) ? C = A : p0e(A) ? C = A.src : g0e(A) && (C = A.toDataURL()), typeof Image == "undefined") { + var S = "Image width/height must been given explictly in svg-ssr renderer."; + Qc(v, S), Qc(y, S); + } else if (v == null || y == null) { + var _ = function(P, B) { + if (P) { + var H = P.elm, Y = v || B.width, X = y || B.height; + P.tag === "pattern" && (d ? (X = 1, Y /= a.width) : f && (Y = 1, X /= a.height)), P.attrs.width = Y, P.attrs.height = X, H && (H.setAttribute("width", Y), H.setAttribute("height", X)); + } + }, E = b8(C, null, e, function(P) { + u || _(b, P), _(g, P); + }); + E && E.width && E.height && (v = v || E.width, y = y || E.height); + } + g = Nl("image", "img", { + href: C, + width: v, + height: y + }), o.width = v, o.height = y; + } else + i.svgElement && (g = cn(i.svgElement), o.width = i.svgWidth, o.height = i.svgHeight); + if (g) { + var I, w; + u ? I = w = 1 : d ? (w = 1, I = o.width / a.width) : f ? (I = 1, w = o.height / a.height) : o.patternUnits = "userSpaceOnUse", I != null && !isNaN(I) && (o.width = I), w != null && !isNaN(w) && (o.height = w); + var x = fve(i); + x && (o.patternTransform = x); + var b = Nl("pattern", "", o, [g]), R = I9(b), M = n.patternCache, O = M[R]; + O || (O = n.zrId + "-p" + n.patternIdx++, M[R] = O, o.id = O, b = n.defs[O] = Nl("pattern", O, o, [g])), t[r] = yF(O); + } +} +function Y8e(e, t, r) { + var n = r.clipPathCache, i = r.defs, a = n[e.id]; + if (!a) { + a = r.zrId + "-c" + r.clipPathIdx++; + var o = { + id: a + }; + n[e.id] = a, i[a] = Nl("clipPath", a, o, [v0e(e, r)]); + } + t["clip-path"] = yF(a); +} +function Zae(e) { + return document.createTextNode(e); +} +function xb(e, t, r) { + e.insertBefore(t, r); +} +function qae(e, t) { + e.removeChild(t); +} +function Jae(e, t) { + e.appendChild(t); +} +function _0e(e) { + return e.parentNode; +} +function S0e(e) { + return e.nextSibling; +} +function Mz(e, t) { + e.textContent = t; +} +var Qae = 58, X8e = 120, K8e = Nl("", ""); +function TW(e) { + return e === void 0; +} +function $g(e) { + return e !== void 0; +} +function Z8e(e, t, r) { + for (var n = {}, i = t; i <= r; ++i) { + var a = e[i].key; + a !== void 0 && (n[a] = i); + } + return n; +} +function g1(e, t) { + var r = e.key === t.key, n = e.tag === t.tag; + return n && r; +} +function xR(e) { + var t, r = e.children, n = e.tag; + if ($g(n)) { + var i = e.elm = h0e(n); + if (D9(K8e, e), qt(r)) + for (t = 0; t < r.length; ++t) { + var a = r[t]; + a != null && Jae(i, xR(a)); + } + else + $g(e.text) && !sn(e.text) && Jae(i, Zae(e.text)); + } else + e.elm = Zae(e.text); + return e.elm; +} +function b0e(e, t, r, n, i) { + for (; n <= i; ++n) { + var a = r[n]; + a != null && xb(e, xR(a), t); + } +} +function zL(e, t, r, n) { + for (; r <= n; ++r) { + var i = t[r]; + if (i != null) + if ($g(i.tag)) { + var a = _0e(i.elm); + qae(a, i.elm); + } else + qae(e, i.elm); + } +} +function D9(e, t) { + var r, n = t.elm, i = e && e.attrs || {}, a = t.attrs || {}; + if (i !== a) { + for (r in a) { + var o = a[r], l = i[r]; + l !== o && (o === !0 ? n.setAttribute(r, "") : o === !1 ? n.removeAttribute(r) : r === "style" ? n.style.cssText = o : r.charCodeAt(0) !== X8e ? n.setAttribute(r, o) : r === "xmlns:xlink" || r === "xmlns" ? n.setAttributeNS(R8e, r, o) : r.charCodeAt(3) === Qae ? n.setAttributeNS(D8e, r, o) : r.charCodeAt(5) === Qae ? n.setAttributeNS(u0e, r, o) : n.setAttribute(r, o)); + } + for (r in i) + r in a || n.removeAttribute(r); + } +} +function q8e(e, t, r) { + for (var n = 0, i = 0, a = t.length - 1, o = t[0], l = t[a], u = r.length - 1, d = r[0], f = r[u], g, v, y, C; n <= a && i <= u; ) + o == null ? o = t[++n] : l == null ? l = t[--a] : d == null ? d = r[++i] : f == null ? f = r[--u] : g1(o, d) ? (qT(o, d), o = t[++n], d = r[++i]) : g1(l, f) ? (qT(l, f), l = t[--a], f = r[--u]) : g1(o, f) ? (qT(o, f), xb(e, o.elm, S0e(l.elm)), o = t[++n], f = r[--u]) : g1(l, d) ? (qT(l, d), xb(e, l.elm, o.elm), l = t[--a], d = r[++i]) : (TW(g) && (g = Z8e(t, n, a)), v = g[d.key], TW(v) ? xb(e, xR(d), o.elm) : (y = t[v], y.tag !== d.tag ? xb(e, xR(d), o.elm) : (qT(y, d), t[v] = void 0, xb(e, y.elm, o.elm))), d = r[++i]); + (n <= a || i <= u) && (n > a ? (C = r[u + 1] == null ? null : r[u + 1].elm, b0e(e, C, r, i, u)) : zL(e, t, n, a)); +} +function qT(e, t) { + var r = t.elm = e.elm, n = e.children, i = t.children; + e !== t && (D9(e, t), TW(t.text) ? $g(n) && $g(i) ? n !== i && q8e(r, n, i) : $g(i) ? ($g(e.text) && Mz(r, ""), b0e(r, null, i, 0, i.length - 1)) : $g(n) ? zL(r, n, 0, n.length - 1) : $g(e.text) && Mz(r, "") : e.text !== t.text && ($g(n) && zL(r, n, 0, n.length - 1), Mz(r, t.text))); +} +function J8e(e, t) { + if (g1(e, t)) + qT(e, t); + else { + var r = e.elm, n = _0e(r); + xR(t), n !== null && (xb(n, t.elm, S0e(r)), zL(n, [e], 0, 0)); + } + return t; +} +var Q8e = 0, e9e = function() { + function e(t, r, n) { + if (this.type = "svg", this.refreshHover = eoe(), this.configLayer = eoe(), this.storage = r, this._opts = n = $t({}, n), this.root = t, this._id = "zr" + Q8e++, this._oldVNode = Vae(n.width, n.height), t && !n.ssr) { + var i = this._viewport = document.createElement("div"); + i.style.cssText = "position:relative;overflow:hidden"; + var a = this._svgDom = this._oldVNode.elm = h0e("svg"); + D9(null, this._oldVNode), i.appendChild(a), t.appendChild(i); + } + this.resize(n.width, n.height); + } + return e.prototype.getType = function() { + return this.type; + }, e.prototype.getViewportRoot = function() { + return this._viewport; + }, e.prototype.getViewportRootOffset = function() { + var t = this.getViewportRoot(); + if (t) + return { + offsetLeft: t.offsetLeft || 0, + offsetTop: t.offsetTop || 0 + }; + }, e.prototype.getSvgDom = function() { + return this._svgDom; + }, e.prototype.refresh = function() { + if (this.root) { + var t = this.renderToVNode({ + willUpdate: !0 + }); + t.attrs.style = "position:absolute;left:0;top:0;user-select:none", J8e(this._oldVNode, t), this._oldVNode = t; + } + }, e.prototype.renderOneToVNode = function(t) { + return Kae(t, CW(this._id)); + }, e.prototype.renderToVNode = function(t) { + t = t || {}; + var r = this.storage.getDisplayList(!0), n = this._width, i = this._height, a = CW(this._id); + a.animation = t.animation, a.willUpdate = t.willUpdate, a.compress = t.compress, a.emphasis = t.emphasis; + var o = [], l = this._bgVNode = t9e(n, i, this._backgroundColor, a); + l && o.push(l); + var u = t.compress ? null : this._mainVNode = Nl("g", "main", {}, []); + this._paintList(r, a, u ? u.children : o), u && o.push(u); + var d = er(Ri(a.defs), function(v) { + return a.defs[v]; + }); + if (d.length && o.push(Nl("defs", "defs", {}, d)), t.animation) { + var f = k8e(a.cssNodes, a.cssAnims, { newline: !0 }); + if (f) { + var g = Nl("style", "stl", {}, [], f); + o.push(g); + } + } + return Vae(n, i, o, t.useViewBox); + }, e.prototype.renderToString = function(t) { + return t = t || {}, I9(this.renderToVNode({ + animation: Fn(t.cssAnimation, !0), + emphasis: Fn(t.cssEmphasis, !0), + willUpdate: !1, + compress: !0, + useViewBox: Fn(t.useViewBox, !0) + }), { newline: !0 }); + }, e.prototype.setBackgroundColor = function(t) { + this._backgroundColor = t; + }, e.prototype.getSvgRoot = function() { + return this._mainVNode && this._mainVNode.elm; + }, e.prototype._paintList = function(t, r, n) { + for (var i = t.length, a = [], o = 0, l, u, d = 0, f = 0; f < i; f++) { + var g = t[f]; + if (!g.invisible) { + var v = g.__clipPaths, y = v && v.length || 0, C = u && u.length || 0, A = void 0; + for (A = Math.max(y - 1, C - 1); A >= 0 && !(v && u && v[A] === u[A]); A--) + ; + for (var S = C - 1; S > A; S--) + o--, l = a[o - 1]; + for (var _ = A + 1; _ < y; _++) { + var E = {}; + Y8e(v[_], E, r); + var I = Nl("g", "clip-g-" + d++, E, []); + (l ? l.children : n).push(I), a[o++] = I, l = I; + } + u = v; + var w = Kae(g, r); + w && (l ? l.children : n).push(w); + } + } + }, e.prototype.resize = function(t, r) { + var n = this._opts, i = this.root, a = this._viewport; + if (t != null && (n.width = t), r != null && (n.height = r), i && a && (a.style.display = "none", t = cw(i, 0, n), r = cw(i, 1, n), a.style.display = ""), this._width !== t || this._height !== r) { + if (this._width = t, this._height = r, a) { + var o = a.style; + o.width = t + "px", o.height = r + "px"; + } + if (h8(this._backgroundColor)) + this.refresh(); + else { + var l = this._svgDom; + l && (l.setAttribute("width", t), l.setAttribute("height", r)); + var u = this._bgVNode && this._bgVNode.elm; + u && (u.setAttribute("width", t), u.setAttribute("height", r)); + } + } + }, e.prototype.getWidth = function() { + return this._width; + }, e.prototype.getHeight = function() { + return this._height; + }, e.prototype.dispose = function() { + this.root && (this.root.innerHTML = ""), this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null; + }, e.prototype.clear = function() { + this._svgDom && (this._svgDom.innerHTML = null), this._oldVNode = null; + }, e.prototype.toDataURL = function(t) { + var r = this.renderToString(), n = "data:image/svg+xml;"; + return t ? (r = KVe(r), r && n + "base64," + r) : n + "charset=UTF-8," + encodeURIComponent(r); + }, e; +}(); +function eoe(e) { + return function() { + }; +} +function t9e(e, t, r, n) { + var i; + if (r && r !== "none") + if (i = Nl("rect", "bg", { + width: e, + height: t, + x: "0", + y: "0" + }), hve(r)) + m0e({ fill: r }, i.attrs, "fill", n); + else if (h8(r)) + y0e({ + style: { + fill: r + }, + dirty: Ls, + getBoundingRect: function() { + return { width: e, height: t }; + } + }, i.attrs, "fill", n); + else { + var a = dR(r), o = a.color, l = a.opacity; + i.attrs.fill = o, l < 1 && (i.attrs["fill-opacity"] = l); + } + return i; +} +const r9e = e9e; +function n9e(e) { + e.registerPainter("svg", r9e); +} +function toe(e, t, r) { + var n = kp.createCanvas(), i = t.getWidth(), a = t.getHeight(), o = n.style; + return o && (o.position = "absolute", o.left = "0", o.top = "0", o.width = i + "px", o.height = a + "px", n.setAttribute("data-zr-dom-id", e)), n.width = i * r, n.height = a * r, n; +} +var i9e = function(e) { + No(t, e); + function t(r, n, i) { + var a = e.call(this) || this; + a.motionBlur = !1, a.lastFrameAlpha = 0.7, a.dpr = 1, a.virtual = !1, a.config = {}, a.incremental = !1, a.zlevel = 0, a.maxRepaintRectCount = 5, a.__dirty = !0, a.__firstTimePaint = !0, a.__used = !1, a.__drawIndex = 0, a.__startIndex = 0, a.__endIndex = 0, a.__prevStartIndex = null, a.__prevEndIndex = null; + var o; + i = i || SL, typeof r == "string" ? o = toe(r, n, i) : sn(r) && (o = r, r = o.id), a.id = r, a.dom = o; + var l = o.style; + return l && (o8(o), o.onselectstart = function() { + return !1; + }, l.padding = "0", l.margin = "0", l.borderWidth = "0"), a.painter = n, a.dpr = i, a; + } + return t.prototype.getElementCount = function() { + return this.__endIndex - this.__startIndex; + }, t.prototype.afterBrush = function() { + this.__prevStartIndex = this.__startIndex, this.__prevEndIndex = this.__endIndex; + }, t.prototype.initContext = function() { + this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr; + }, t.prototype.setUnpainted = function() { + this.__firstTimePaint = !0; + }, t.prototype.createBackBuffer = function() { + var r = this.dpr; + this.domBack = toe("back-" + this.id, this.painter, r), this.ctxBack = this.domBack.getContext("2d"), r !== 1 && this.ctxBack.scale(r, r); + }, t.prototype.createRepaintRects = function(r, n, i, a) { + if (this.__firstTimePaint) + return this.__firstTimePaint = !1, null; + var o = [], l = this.maxRepaintRectCount, u = !1, d = new ei(0, 0, 0, 0); + function f(E) { + if (!(!E.isFinite() || E.isZero())) + if (o.length === 0) { + var I = new ei(0, 0, 0, 0); + I.copy(E), o.push(I); + } else { + for (var w = !1, x = 1 / 0, b = 0, R = 0; R < o.length; ++R) { + var M = o[R]; + if (M.intersect(E)) { + var O = new ei(0, 0, 0, 0); + O.copy(M), O.union(E), o[R] = O, w = !0; + break; + } else if (u) { + d.copy(E), d.union(M); + var P = E.width * E.height, B = M.width * M.height, H = d.width * d.height, Y = H - P - B; + Y < x && (x = Y, b = R); + } + } + if (u && (o[b].union(E), w = !0), !w) { + var I = new ei(0, 0, 0, 0); + I.copy(E), o.push(I); + } + u || (u = o.length >= l); + } + } + for (var g = this.__startIndex; g < this.__endIndex; ++g) { + var v = r[g]; + if (v) { + var y = v.shouldBePainted(i, a, !0, !0), C = v.__isRendered && (v.__dirty & od || !y) ? v.getPrevPaintRect() : null; + C && f(C); + var A = y && (v.__dirty & od || !v.__isRendered) ? v.getPaintRect() : null; + A && f(A); + } + } + for (var g = this.__prevStartIndex; g < this.__prevEndIndex; ++g) { + var v = n[g], y = v && v.shouldBePainted(i, a, !0, !0); + if (v && (!y || !v.__zr) && v.__isRendered) { + var C = v.getPrevPaintRect(); + C && f(C); + } + } + var S; + do { + S = !1; + for (var g = 0; g < o.length; ) { + if (o[g].isZero()) { + o.splice(g, 1); + continue; + } + for (var _ = g + 1; _ < o.length; ) + o[g].intersect(o[_]) ? (S = !0, o[g].union(o[_]), o.splice(_, 1)) : _++; + g++; + } + } while (S); + return this._paintRects = o, o; + }, t.prototype.debugGetPaintRects = function() { + return (this._paintRects || []).slice(); + }, t.prototype.resize = function(r, n) { + var i = this.dpr, a = this.dom, o = a.style, l = this.domBack; + o && (o.width = r + "px", o.height = n + "px"), a.width = r * i, a.height = n * i, l && (l.width = r * i, l.height = n * i, i !== 1 && this.ctxBack.scale(i, i)); + }, t.prototype.clear = function(r, n, i) { + var a = this.dom, o = this.ctx, l = a.width, u = a.height; + n = n || this.clearColor; + var d = this.motionBlur && !r, f = this.lastFrameAlpha, g = this.dpr, v = this; + d && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(a, 0, 0, l / g, u / g)); + var y = this.domBack; + function C(A, S, _, E) { + if (o.clearRect(A, S, _, E), n && n !== "transparent") { + var I = void 0; + if (uD(n)) { + var w = n.global || n.__width === _ && n.__height === E; + I = w && n.__canvasGradient || pW(o, n, { + x: 0, + y: 0, + width: _, + height: E + }), n.__canvasGradient = I, n.__width = _, n.__height = E; + } else + Nge(n) && (n.scaleX = n.scaleX || g, n.scaleY = n.scaleY || g, I = gW(o, n, { + dirty: function() { + v.setUnpainted(), v.painter.refresh(); + } + })); + o.save(), o.fillStyle = I || n, o.fillRect(A, S, _, E), o.restore(); + } + d && (o.save(), o.globalAlpha = f, o.drawImage(y, A, S, _, E), o.restore()); + } + !i || d ? C(0, 0, l, u) : i.length && Ee(i, function(A) { + C(A.x * g, A.y * g, A.width * g, A.height * g); + }); + }, t; +}(Rf); +const kz = i9e; +var roe = 1e5, hb = 314159, fP = 0.01, a9e = 1e-3; +function o9e(e) { + return e ? e.__builtin__ ? !0 : !(typeof e.resize != "function" || typeof e.refresh != "function") : !1; +} +function s9e(e, t) { + var r = document.createElement("div"); + return r.style.cssText = [ + "position:relative", + "width:" + e + "px", + "height:" + t + "px", + "padding:0", + "margin:0", + "border-width:0" + ].join(";") + ";", r; +} +var l9e = function() { + function e(t, r, n, i) { + this.type = "canvas", this._zlevelList = [], this._prevDisplayList = [], this._layers = {}, this._layerConfig = {}, this._needsManuallyCompositing = !1, this.type = "canvas"; + var a = !t.nodeName || t.nodeName.toUpperCase() === "CANVAS"; + this._opts = n = $t({}, n || {}), this.dpr = n.devicePixelRatio || SL, this._singleCanvas = a, this.root = t; + var o = t.style; + o && (o8(t), t.innerHTML = ""), this.storage = r; + var l = this._zlevelList; + this._prevDisplayList = []; + var u = this._layers; + if (a) { + var f = t, g = f.width, v = f.height; + n.width != null && (g = n.width), n.height != null && (v = n.height), this.dpr = n.devicePixelRatio || 1, f.width = g * this.dpr, f.height = v * this.dpr, this._width = g, this._height = v; + var y = new kz(f, this, this.dpr); + y.__builtin__ = !0, y.initContext(), u[hb] = y, y.zlevel = hb, l.push(hb), this._domRoot = t; + } else { + this._width = cw(t, 0, n), this._height = cw(t, 1, n); + var d = this._domRoot = s9e(this._width, this._height); + t.appendChild(d); + } + } + return e.prototype.getType = function() { + return "canvas"; + }, e.prototype.isSingleCanvas = function() { + return this._singleCanvas; + }, e.prototype.getViewportRoot = function() { + return this._domRoot; + }, e.prototype.getViewportRootOffset = function() { + var t = this.getViewportRoot(); + if (t) + return { + offsetLeft: t.offsetLeft || 0, + offsetTop: t.offsetTop || 0 + }; + }, e.prototype.refresh = function(t) { + var r = this.storage.getDisplayList(!0), n = this._prevDisplayList, i = this._zlevelList; + this._redrawId = Math.random(), this._paintList(r, n, t, this._redrawId); + for (var a = 0; a < i.length; a++) { + var o = i[a], l = this._layers[o]; + if (!l.__builtin__ && l.refresh) { + var u = a === 0 ? this._backgroundColor : null; + l.refresh(u); + } + } + return this._opts.useDirtyRect && (this._prevDisplayList = r.slice()), this; + }, e.prototype.refreshHover = function() { + this._paintHoverList(this.storage.getDisplayList(!1)); + }, e.prototype._paintHoverList = function(t) { + var r = t.length, n = this._hoverlayer; + if (n && n.clear(), !!r) { + for (var i = { + inHover: !0, + viewWidth: this._width, + viewHeight: this._height + }, a, o = 0; o < r; o++) { + var l = t[o]; + l.__inHover && (n || (n = this._hoverlayer = this.getLayer(roe)), a || (a = n.ctx, a.save()), Ub(a, l, i, o === r - 1)); + } + a && a.restore(); + } + }, e.prototype.getHoverLayer = function() { + return this.getLayer(roe); + }, e.prototype.paintOne = function(t, r) { + VF(t, r); + }, e.prototype._paintList = function(t, r, n, i) { + if (this._redrawId === i) { + n = n || !1, this._updateLayerStatus(t); + var a = this._doPaintList(t, r, n), o = a.finished, l = a.needsRefreshHover; + if (this._needsManuallyCompositing && this._compositeManually(), l && this._paintHoverList(t), o) + this.eachLayer(function(d) { + d.afterBrush && d.afterBrush(); + }); + else { + var u = this; + RH(function() { + u._paintList(t, r, n, i); + }); + } + } + }, e.prototype._compositeManually = function() { + var t = this.getLayer(hb).ctx, r = this._domRoot.width, n = this._domRoot.height; + t.clearRect(0, 0, r, n), this.eachBuiltinLayer(function(i) { + i.virtual && t.drawImage(i.dom, 0, 0, r, n); + }); + }, e.prototype._doPaintList = function(t, r, n) { + for (var i = this, a = [], o = this._opts.useDirtyRect, l = 0; l < this._zlevelList.length; l++) { + var u = this._zlevelList[l], d = this._layers[u]; + d.__builtin__ && d !== this._hoverlayer && (d.__dirty || n) && a.push(d); + } + for (var f = !0, g = !1, v = function(A) { + var S = a[A], _ = S.ctx, E = o && S.createRepaintRects(t, r, y._width, y._height), I = n ? S.__startIndex : S.__drawIndex, w = !n && S.incremental && Date.now, x = w && Date.now(), b = S.zlevel === y._zlevelList[0] ? y._backgroundColor : null; + if (S.__startIndex === S.__endIndex) + S.clear(!1, b, E); + else if (I === S.__startIndex) { + var R = t[I]; + (!R.incremental || !R.notClear || n) && S.clear(!1, b, E); + } + I === -1 && (console.error("For some unknown reason. drawIndex is -1"), I = S.__startIndex); + var M, O = function(Y) { + var X = { + inHover: !1, + allClipped: !1, + prevEl: null, + viewWidth: i._width, + viewHeight: i._height + }; + for (M = I; M < S.__endIndex; M++) { + var ee = t[M]; + if (ee.__inHover && (g = !0), i._doPaintEl(ee, S, o, Y, X, M === S.__endIndex - 1), w) { + var ae = Date.now() - x; + if (ae > 15) + break; + } + } + X.prevElClipPaths && _.restore(); + }; + if (E) + if (E.length === 0) + M = S.__endIndex; + else + for (var P = y.dpr, B = 0; B < E.length; ++B) { + var H = E[B]; + _.save(), _.beginPath(), _.rect(H.x * P, H.y * P, H.width * P, H.height * P), _.clip(), O(H), _.restore(); + } + else + _.save(), O(), _.restore(); + S.__drawIndex = M, S.__drawIndex < S.__endIndex && (f = !1); + }, y = this, C = 0; C < a.length; C++) + v(C); + return Yi.wxa && Ee(this._layers, function(A) { + A && A.ctx && A.ctx.draw && A.ctx.draw(); + }), { + finished: f, + needsRefreshHover: g + }; + }, e.prototype._doPaintEl = function(t, r, n, i, a, o) { + var l = r.ctx; + if (n) { + var u = t.getPaintRect(); + (!i || u && u.intersect(i)) && (Ub(l, t, a, o), t.setPrevPaintRect(u)); + } else + Ub(l, t, a, o); + }, e.prototype.getLayer = function(t, r) { + this._singleCanvas && !this._needsManuallyCompositing && (t = hb); + var n = this._layers[t]; + return n || (n = new kz("zr_" + t, this, this.dpr), n.zlevel = t, n.__builtin__ = !0, this._layerConfig[t] ? Qn(n, this._layerConfig[t], !0) : this._layerConfig[t - fP] && Qn(n, this._layerConfig[t - fP], !0), r && (n.virtual = r), this.insertLayer(t, n), n.initContext()), n; + }, e.prototype.insertLayer = function(t, r) { + var n = this._layers, i = this._zlevelList, a = i.length, o = this._domRoot, l = null, u = -1; + if (!n[t] && o9e(r)) { + if (a > 0 && t > i[0]) { + for (u = 0; u < a - 1 && !(i[u] < t && i[u + 1] > t); u++) + ; + l = n[i[u]]; + } + if (i.splice(u + 1, 0, t), n[t] = r, !r.virtual) + if (l) { + var d = l.dom; + d.nextSibling ? o.insertBefore(r.dom, d.nextSibling) : o.appendChild(r.dom); + } else + o.firstChild ? o.insertBefore(r.dom, o.firstChild) : o.appendChild(r.dom); + r.painter || (r.painter = this); + } + }, e.prototype.eachLayer = function(t, r) { + for (var n = this._zlevelList, i = 0; i < n.length; i++) { + var a = n[i]; + t.call(r, this._layers[a], a); + } + }, e.prototype.eachBuiltinLayer = function(t, r) { + for (var n = this._zlevelList, i = 0; i < n.length; i++) { + var a = n[i], o = this._layers[a]; + o.__builtin__ && t.call(r, o, a); + } + }, e.prototype.eachOtherLayer = function(t, r) { + for (var n = this._zlevelList, i = 0; i < n.length; i++) { + var a = n[i], o = this._layers[a]; + o.__builtin__ || t.call(r, o, a); + } + }, e.prototype.getLayers = function() { + return this._layers; + }, e.prototype._updateLayerStatus = function(t) { + this.eachBuiltinLayer(function(g, v) { + g.__dirty = g.__used = !1; + }); + function r(g) { + a && (a.__endIndex !== g && (a.__dirty = !0), a.__endIndex = g); + } + if (this._singleCanvas) + for (var n = 1; n < t.length; n++) { + var i = t[n]; + if (i.zlevel !== t[n - 1].zlevel || i.incremental) { + this._needsManuallyCompositing = !0; + break; + } + } + var a = null, o = 0, l, u; + for (u = 0; u < t.length; u++) { + var i = t[u], d = i.zlevel, f = void 0; + l !== d && (l = d, o = 0), i.incremental ? (f = this.getLayer(d + a9e, this._needsManuallyCompositing), f.incremental = !0, o = 1) : f = this.getLayer(d + (o > 0 ? fP : 0), this._needsManuallyCompositing), f.__builtin__ || dF("ZLevel " + d + " has been used by unkown layer " + f.id), f !== a && (f.__used = !0, f.__startIndex !== u && (f.__dirty = !0), f.__startIndex = u, f.incremental ? f.__drawIndex = -1 : f.__drawIndex = u, r(u), a = f), i.__dirty & od && !i.__inHover && (f.__dirty = !0, f.incremental && f.__drawIndex < 0 && (f.__drawIndex = u)); + } + r(u), this.eachBuiltinLayer(function(g, v) { + !g.__used && g.getElementCount() > 0 && (g.__dirty = !0, g.__startIndex = g.__endIndex = g.__drawIndex = 0), g.__dirty && g.__drawIndex < 0 && (g.__drawIndex = g.__startIndex); + }); + }, e.prototype.clear = function() { + return this.eachBuiltinLayer(this._clearLayer), this; + }, e.prototype._clearLayer = function(t) { + t.clear(); + }, e.prototype.setBackgroundColor = function(t) { + this._backgroundColor = t, Ee(this._layers, function(r) { + r.setUnpainted(); + }); + }, e.prototype.configLayer = function(t, r) { + if (r) { + var n = this._layerConfig; + n[t] ? Qn(n[t], r, !0) : n[t] = r; + for (var i = 0; i < this._zlevelList.length; i++) { + var a = this._zlevelList[i]; + if (a === t || a === t + fP) { + var o = this._layers[a]; + Qn(o, n[t], !0); + } + } + } + }, e.prototype.delLayer = function(t) { + var r = this._layers, n = this._zlevelList, i = r[t]; + i && (i.dom.parentNode.removeChild(i.dom), delete r[t], n.splice(di(n, t), 1)); + }, e.prototype.resize = function(t, r) { + if (this._domRoot.style) { + var n = this._domRoot; + n.style.display = "none"; + var i = this._opts, a = this.root; + if (t != null && (i.width = t), r != null && (i.height = r), t = cw(a, 0, i), r = cw(a, 1, i), n.style.display = "", this._width !== t || r !== this._height) { + n.style.width = t + "px", n.style.height = r + "px"; + for (var o in this._layers) + this._layers.hasOwnProperty(o) && this._layers[o].resize(t, r); + this.refresh(!0); + } + this._width = t, this._height = r; + } else { + if (t == null || r == null) + return; + this._width = t, this._height = r, this.getLayer(hb).resize(t, r); + } + return this; + }, e.prototype.clearLayer = function(t) { + var r = this._layers[t]; + r && r.clear(); + }, e.prototype.dispose = function() { + this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null; + }, e.prototype.getRenderedCanvas = function(t) { + if (t = t || {}, this._singleCanvas && !this._compositeManually) + return this._layers[hb].dom; + var r = new kz("image", this, t.pixelRatio || this.dpr); + r.initContext(), r.clear(!1, t.backgroundColor || this._backgroundColor); + var n = r.ctx; + if (t.pixelRatio <= this.dpr) { + this.refresh(); + var i = r.dom.width, a = r.dom.height; + this.eachLayer(function(g) { + g.__builtin__ ? n.drawImage(g.dom, 0, 0, i, a) : g.renderToCanvas && (n.save(), g.renderToCanvas(n), n.restore()); + }); + } else + for (var o = { + inHover: !1, + viewWidth: this._width, + viewHeight: this._height + }, l = this.storage.getDisplayList(!0), u = 0, d = l.length; u < d; u++) { + var f = l[u]; + Ub(n, f, o, u === d - 1); + } + return r.dom; + }, e.prototype.getWidth = function() { + return this._width; + }, e.prototype.getHeight = function() { + return this._height; + }, e; +}(); +const c9e = l9e; +function E0e(e) { + e.registerPainter("canvas", c9e); +} +var u9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.hasSymbolVisual = !0, r; + } + return t.prototype.getInitialData = function(r) { + return fv(null, this, { + useEncodeDefaulter: !0 + }); + }, t.prototype.getLegendIcon = function(r) { + var n = new _n(), i = $s("line", 0, r.itemHeight / 2, r.itemWidth, 0, r.lineStyle.stroke, !1); + n.add(i), i.setStyle(r.lineStyle); + var a = this.getData().getVisual("symbol"), o = this.getData().getVisual("symbolRotate"), l = a === "none" ? "circle" : a, u = r.itemHeight * 0.8, d = $s(l, (r.itemWidth - u) / 2, (r.itemHeight - u) / 2, u, u, r.itemStyle.fill); + n.add(d), d.setStyle(r.itemStyle); + var f = r.iconRotate === "inherit" ? o : r.iconRotate || 0; + return d.rotation = f * Math.PI / 180, d.setOrigin([r.itemWidth / 2, r.itemHeight / 2]), l.indexOf("empty") > -1 && (d.style.stroke = d.style.fill, d.style.fill = "#fff", d.style.lineWidth = 2), n; + }, t.type = "series.line", t.dependencies = ["grid", "polar"], t.defaultOption = { + // zlevel: 0, + z: 3, + coordinateSystem: "cartesian2d", + legendHoverLink: !0, + clip: !0, + label: { + position: "top" + }, + // itemStyle: { + // }, + endLabel: { + show: !1, + valueAnimation: !0, + distance: 8 + }, + lineStyle: { + width: 2, + type: "solid" + }, + emphasis: { + scale: !0 + }, + // areaStyle: { + // origin of areaStyle. Valid values: + // `'auto'/null/undefined`: from axisLine to data + // `'start'`: from min to data + // `'end'`: from data to max + // origin: 'auto' + // }, + // false, 'start', 'end', 'middle' + step: !1, + // Disabled if step is true + smooth: !1, + smoothMonotone: null, + symbol: "emptyCircle", + symbolSize: 4, + symbolRotate: null, + showSymbol: !0, + // `false`: follow the label interval strategy. + // `true`: show all symbols. + // `'auto'`: If possible, show all symbols, otherwise + // follow the label interval strategy. + showAllSymbol: "auto", + // Whether to connect break point. + connectNulls: !1, + // Sampling for large data. Can be: 'average', 'max', 'min', 'sum', 'lttb'. + sampling: "none", + animationEasing: "linear", + // Disable progressive + progressive: 0, + hoverLayerThreshold: 1 / 0, + universalTransition: { + divideShape: "clone" + }, + triggerLineEvent: !1 + }, t; + }(fo) +); +const h9e = u9e; +function zw(e, t) { + var r = e.mapDimensionsAll("defaultedLabel"), n = r.length; + if (n === 1) { + var i = $w(e, t, r[0]); + return i != null ? i + "" : null; + } else if (n) { + for (var a = [], o = 0; o < r.length; o++) + a.push($w(e, t, r[o])); + return a.join(" "); + } +} +function C0e(e, t) { + var r = e.mapDimensionsAll("defaultedLabel"); + if (!qt(t)) + return t + ""; + for (var n = [], i = 0; i < r.length; i++) { + var a = e.getDimensionIndex(r[i]); + a >= 0 && n.push(t[a]); + } + return n.join(" "); +} +var d9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i, a) { + var o = e.call(this) || this; + return o.updateData(r, n, i, a), o; + } + return t.prototype._createSymbol = function(r, n, i, a, o) { + this.removeAll(); + var l = $s(r, -1, -1, 2, 2, null, o); + l.attr({ + z2: 100, + culling: !0, + scaleX: a[0] / 2, + scaleY: a[1] / 2 + }), l.drift = f9e, this._symbolType = r, this.add(l); + }, t.prototype.stopSymbolAnimation = function(r) { + this.childAt(0).stopAnimation(null, r); + }, t.prototype.getSymbolType = function() { + return this._symbolType; + }, t.prototype.getSymbolPath = function() { + return this.childAt(0); + }, t.prototype.highlight = function() { + Hm(this.childAt(0)); + }, t.prototype.downplay = function() { + Wm(this.childAt(0)); + }, t.prototype.setZ = function(r, n) { + var i = this.childAt(0); + i.zlevel = r, i.z = n; + }, t.prototype.setDraggable = function(r, n) { + var i = this.childAt(0); + i.draggable = r, i.cursor = !n && r ? "move" : i.cursor; + }, t.prototype.updateData = function(r, n, i, a) { + this.silent = !1; + var o = r.getItemVisual(n, "symbol") || "circle", l = r.hostModel, u = t.getSymbolSize(r, n), d = o !== this._symbolType, f = a && a.disableAnimation; + if (d) { + var g = r.getItemVisual(n, "symbolKeepAspect"); + this._createSymbol(o, r, n, u, g); + } else { + var v = this.childAt(0); + v.silent = !1; + var y = { + scaleX: u[0] / 2, + scaleY: u[1] / 2 + }; + f ? v.attr(y) : ia(v, y, l, n), Lp(v); + } + if (this._updateCommon(r, n, u, i, a), d) { + var v = this.childAt(0); + if (!f) { + var y = { + scaleX: this._sizeX, + scaleY: this._sizeY, + style: { + // Always fadeIn. Because it has fadeOut animation when symbol is removed.. + opacity: v.style.opacity + } + }; + v.scaleX = v.scaleY = 0, v.style.opacity = 0, Po(v, y, l, n); + } + } + f && this.childAt(0).stopAnimation("leave"); + }, t.prototype._updateCommon = function(r, n, i, a, o) { + var l = this.childAt(0), u = r.hostModel, d, f, g, v, y, C, A, S, _; + if (a && (d = a.emphasisItemStyle, f = a.blurItemStyle, g = a.selectItemStyle, v = a.focus, y = a.blurScope, A = a.labelStatesModels, S = a.hoverScale, _ = a.cursorStyle, C = a.emphasisDisabled), !a || r.hasItemOption) { + var E = a && a.itemModel ? a.itemModel : r.getItemModel(n), I = E.getModel("emphasis"); + d = I.getModel("itemStyle").getItemStyle(), g = E.getModel(["select", "itemStyle"]).getItemStyle(), f = E.getModel(["blur", "itemStyle"]).getItemStyle(), v = I.get("focus"), y = I.get("blurScope"), C = I.get("disabled"), A = Ll(E), S = I.getShallow("scale"), _ = E.getShallow("cursor"); + } + var w = r.getItemVisual(n, "symbolRotate"); + l.attr("rotation", (w || 0) * Math.PI / 180 || 0); + var x = kE(r.getItemVisual(n, "symbolOffset"), i); + x && (l.x = x[0], l.y = x[1]), _ && l.attr("cursor", _); + var b = r.getItemVisual(n, "style"), R = b.fill; + if (l instanceof ec) { + var M = l.style; + l.useStyle($t({ + // TODO other properties like x, y ? + image: M.image, + x: M.x, + y: M.y, + width: M.width, + height: M.height + }, b)); + } else + l.__isEmptyBrush ? l.useStyle($t({}, b)) : l.useStyle(b), l.style.decal = null, l.setColor(R, o && o.symbolInnerColor), l.style.strokeNoScale = !0; + var O = r.getItemVisual(n, "liftZ"), P = this._z2; + O != null ? P == null && (this._z2 = l.z2, l.z2 += O) : P != null && (l.z2 = P, this._z2 = null); + var B = o && o.useNameLabel; + Ec(l, A, { + labelFetcher: u, + labelDataIndex: n, + defaultText: H, + inheritColor: R, + defaultOpacity: b.opacity + }); + function H(ee) { + return B ? r.getName(ee) : zw(r, ee); + } + this._sizeX = i[0] / 2, this._sizeY = i[1] / 2; + var Y = l.ensureState("emphasis"); + Y.style = d, l.ensureState("select").style = g, l.ensureState("blur").style = f; + var X = S == null || S === !0 ? Math.max(1.1, 3 / this._sizeY) : isFinite(S) && S > 0 ? +S : 1; + Y.scaleX = this._sizeX * X, Y.scaleY = this._sizeY * X, this.setSymbolScale(1), xs(this, v, y, C); + }, t.prototype.setSymbolScale = function(r) { + this.scaleX = this.scaleY = r; + }, t.prototype.fadeOut = function(r, n, i) { + var a = this.childAt(0), o = Tn(this).dataIndex, l = i && i.animation; + if (this.silent = a.silent = !0, i && i.fadeLabel) { + var u = a.getTextContent(); + u && v0(u, { + style: { + opacity: 0 + } + }, n, { + dataIndex: o, + removeOpt: l, + cb: function() { + a.removeTextContent(); + } + }); + } else + a.removeTextContent(); + v0(a, { + style: { + opacity: 0 + }, + scaleX: 0, + scaleY: 0 + }, n, { + dataIndex: o, + cb: r, + removeOpt: l + }); + }, t.getSymbolSize = function(r, n) { + return wI(r.getItemVisual(n, "symbolSize")); + }, t; + }(_n) +); +function f9e(e, t) { + this.parent.drift(e, t); +} +const AD = d9e; +function Pz(e, t, r, n) { + return t && !isNaN(t[0]) && !isNaN(t[1]) && !(n.isIgnore && n.isIgnore(r)) && !(n.clipShape && !n.clipShape.contain(t[0], t[1])) && e.getItemVisual(r, "symbol") !== "none"; +} +function noe(e) { + return e != null && !sn(e) && (e = { + isIgnore: e + }), e || {}; +} +function ioe(e) { + var t = e.hostModel, r = t.getModel("emphasis"); + return { + emphasisItemStyle: r.getModel("itemStyle").getItemStyle(), + blurItemStyle: t.getModel(["blur", "itemStyle"]).getItemStyle(), + selectItemStyle: t.getModel(["select", "itemStyle"]).getItemStyle(), + focus: r.get("focus"), + blurScope: r.get("blurScope"), + emphasisDisabled: r.get("disabled"), + hoverScale: r.get("scale"), + labelStatesModels: Ll(t), + cursorStyle: t.get("cursor") + }; +} +var p9e = ( + /** @class */ + function() { + function e(t) { + this.group = new _n(), this._SymbolCtor = t || AD; + } + return e.prototype.updateData = function(t, r) { + this._progressiveEls = null, r = noe(r); + var n = this.group, i = t.hostModel, a = this._data, o = this._SymbolCtor, l = r.disableAnimation, u = ioe(t), d = { + disableAnimation: l + }, f = r.getSymbolPoint || function(g) { + return t.getItemLayout(g); + }; + a || n.removeAll(), t.diff(a).add(function(g) { + var v = f(g); + if (Pz(t, v, g, r)) { + var y = new o(t, g, u, d); + y.setPosition(v), t.setItemGraphicEl(g, y), n.add(y); + } + }).update(function(g, v) { + var y = a.getItemGraphicEl(v), C = f(g); + if (!Pz(t, C, g, r)) { + n.remove(y); + return; + } + var A = t.getItemVisual(g, "symbol") || "circle", S = y && y.getSymbolType && y.getSymbolType(); + if (!y || S && S !== A) + n.remove(y), y = new o(t, g, u, d), y.setPosition(C); + else { + y.updateData(t, g, u, d); + var _ = { + x: C[0], + y: C[1] + }; + l ? y.attr(_) : ia(y, _, i); + } + n.add(y), t.setItemGraphicEl(g, y); + }).remove(function(g) { + var v = a.getItemGraphicEl(g); + v && v.fadeOut(function() { + n.remove(v); + }, i); + }).execute(), this._getSymbolPoint = f, this._data = t; + }, e.prototype.updateLayout = function() { + var t = this, r = this._data; + r && r.eachItemGraphicEl(function(n, i) { + var a = t._getSymbolPoint(i); + n.setPosition(a), n.markRedraw(); + }); + }, e.prototype.incrementalPrepareUpdate = function(t) { + this._seriesScope = ioe(t), this._data = null, this.group.removeAll(); + }, e.prototype.incrementalUpdate = function(t, r, n) { + this._progressiveEls = [], n = noe(n); + function i(u) { + u.isGroup || (u.incremental = !0, u.ensureState("emphasis").hoverLayer = !0); + } + for (var a = t.start; a < t.end; a++) { + var o = r.getItemLayout(a); + if (Pz(r, o, a, n)) { + var l = new this._SymbolCtor(r, a, this._seriesScope); + l.traverse(i), l.setPosition(o), this.group.add(l), r.setItemGraphicEl(a, l), this._progressiveEls.push(l); + } + } + }, e.prototype.eachRendered = function(t) { + D0(this._progressiveEls || this.group, t); + }, e.prototype.remove = function(t) { + var r = this.group, n = this._data; + n && t ? n.eachItemGraphicEl(function(i) { + i.fadeOut(function() { + r.remove(i); + }, n.hostModel); + }) : r.removeAll(); + }, e; + }() +); +const RD = p9e; +function T0e(e, t, r) { + var n = e.getBaseAxis(), i = e.getOtherAxis(n), a = g9e(i, r), o = n.dim, l = i.dim, u = t.mapDimension(l), d = t.mapDimension(o), f = l === "x" || l === "radius" ? 1 : 0, g = er(e.dimensions, function(C) { + return t.mapDimension(C); + }), v = !1, y = t.getCalculationInfo("stackResultDimension"); + return Ym( + t, + g[0] + /* , dims[1] */ + ) && (v = !0, g[0] = y), Ym( + t, + g[1] + /* , dims[0] */ + ) && (v = !0, g[1] = y), { + dataDimsForPoint: g, + valueStart: a, + valueAxisDim: l, + baseAxisDim: o, + stacked: !!v, + valueDim: u, + baseDim: d, + baseDataOffset: f, + stackedOverDimension: t.getCalculationInfo("stackedOverDimension") + }; +} +function g9e(e, t) { + var r = 0, n = e.scale.getExtent(); + return t === "start" ? r = n[0] : t === "end" ? r = n[1] : Qi(t) && !isNaN(t) ? r = t : n[0] > 0 ? r = n[0] : n[1] < 0 && (r = n[1]), r; +} +function w0e(e, t, r, n) { + var i = NaN; + e.stacked && (i = r.get(r.getCalculationInfo("stackedOverDimension"), n)), isNaN(i) && (i = e.valueStart); + var a = e.baseDataOffset, o = []; + return o[a] = r.get(e.baseDim, n), o[1 - a] = i, t.dataToPoint(o); +} +function v9e(e, t) { + var r = []; + return t.diff(e).add(function(n) { + r.push({ + cmd: "+", + idx: n + }); + }).update(function(n, i) { + r.push({ + cmd: "=", + idx: i, + idx1: n + }); + }).remove(function(n) { + r.push({ + cmd: "-", + idx: n + }); + }).execute(), r; +} +function m9e(e, t, r, n, i, a, o, l) { + for (var u = v9e(e, t), d = [], f = [], g = [], v = [], y = [], C = [], A = [], S = T0e(i, t, o), _ = e.getLayout("points") || [], E = t.getLayout("points") || [], I = 0; I < u.length; I++) { + var w = u[I], x = !0, b = void 0, R = void 0; + switch (w.cmd) { + case "=": + b = w.idx * 2, R = w.idx1 * 2; + var M = _[b], O = _[b + 1], P = E[R], B = E[R + 1]; + (isNaN(M) || isNaN(O)) && (M = P, O = B), d.push(M, O), f.push(P, B), g.push(r[b], r[b + 1]), v.push(n[R], n[R + 1]), A.push(t.getRawIndex(w.idx1)); + break; + case "+": + var H = w.idx, Y = S.dataDimsForPoint, X = i.dataToPoint([t.get(Y[0], H), t.get(Y[1], H)]); + R = H * 2, d.push(X[0], X[1]), f.push(E[R], E[R + 1]); + var ee = w0e(S, i, t, H); + g.push(ee[0], ee[1]), v.push(n[R], n[R + 1]), A.push(t.getRawIndex(H)); + break; + case "-": + x = !1; + } + x && (y.push(w), C.push(C.length)); + } + C.sort(function(Be, Ue) { + return A[Be] - A[Ue]; + }); + for (var ae = d.length, J = Yg(ae), ne = Yg(ae), fe = Yg(ae), de = Yg(ae), Te = [], I = 0; I < C.length; I++) { + var be = C[I], Ve = I * 2, pe = be * 2; + J[Ve] = d[pe], J[Ve + 1] = d[pe + 1], ne[Ve] = f[pe], ne[Ve + 1] = f[pe + 1], fe[Ve] = g[pe], fe[Ve + 1] = g[pe + 1], de[Ve] = v[pe], de[Ve + 1] = v[pe + 1], Te[I] = y[be]; + } + return { + current: J, + next: ne, + stackedOnCurrent: fe, + stackedOnNext: de, + status: Te + }; +} +var N_ = Math.min, L_ = Math.max; +function qb(e, t) { + return isNaN(e) || isNaN(t); +} +function wW(e, t, r, n, i, a, o, l, u) { + for (var d, f, g, v, y, C, A = r, S = 0; S < n; S++) { + var _ = t[A * 2], E = t[A * 2 + 1]; + if (A >= i || A < 0) + break; + if (qb(_, E)) { + if (u) { + A += a; + continue; + } + break; + } + if (A === r) + e[a > 0 ? "moveTo" : "lineTo"](_, E), g = _, v = E; + else { + var I = _ - d, w = E - f; + if (I * I + w * w < 0.5) { + A += a; + continue; + } + if (o > 0) { + for (var x = A + a, b = t[x * 2], R = t[x * 2 + 1]; b === _ && R === E && S < n; ) + S++, x += a, A += a, b = t[x * 2], R = t[x * 2 + 1], _ = t[A * 2], E = t[A * 2 + 1], I = _ - d, w = E - f; + var M = S + 1; + if (u) + for (; qb(b, R) && M < n; ) + M++, x += a, b = t[x * 2], R = t[x * 2 + 1]; + var O = 0.5, P = 0, B = 0, H = void 0, Y = void 0; + if (M >= n || qb(b, R)) + y = _, C = E; + else { + P = b - d, B = R - f; + var X = _ - d, ee = b - _, ae = E - f, J = R - E, ne = void 0, fe = void 0; + if (l === "x") { + ne = Math.abs(X), fe = Math.abs(ee); + var de = P > 0 ? 1 : -1; + y = _ - de * ne * o, C = E, H = _ + de * fe * o, Y = E; + } else if (l === "y") { + ne = Math.abs(ae), fe = Math.abs(J); + var Te = B > 0 ? 1 : -1; + y = _, C = E - Te * ne * o, H = _, Y = E + Te * fe * o; + } else + ne = Math.sqrt(X * X + ae * ae), fe = Math.sqrt(ee * ee + J * J), O = fe / (fe + ne), y = _ - P * o * (1 - O), C = E - B * o * (1 - O), H = _ + P * o * O, Y = E + B * o * O, H = N_(H, L_(b, _)), Y = N_(Y, L_(R, E)), H = L_(H, N_(b, _)), Y = L_(Y, N_(R, E)), P = H - _, B = Y - E, y = _ - P * ne / fe, C = E - B * ne / fe, y = N_(y, L_(d, _)), C = N_(C, L_(f, E)), y = L_(y, N_(d, _)), C = L_(C, N_(f, E)), P = _ - y, B = E - C, H = _ + P * fe / ne, Y = E + B * fe / ne; + } + e.bezierCurveTo(g, v, y, C, _, E), g = H, v = Y; + } else + e.lineTo(_, E); + } + d = _, f = E, A += a; + } + return S; +} +var I0e = ( + /** @class */ + function() { + function e() { + this.smooth = 0, this.smoothConstraint = !0; + } + return e; + }() +), y9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "ec-polyline", n; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new I0e(); + }, t.prototype.buildPath = function(r, n) { + var i = n.points, a = 0, o = i.length / 2; + if (n.connectNulls) { + for (; o > 0 && qb(i[o * 2 - 2], i[o * 2 - 1]); o--) + ; + for (; a < o && qb(i[a * 2], i[a * 2 + 1]); a++) + ; + } + for (; a < o; ) + a += wW(r, i, a, o, o, 1, n.smooth, n.smoothMonotone, n.connectNulls) + 1; + }, t.prototype.getPointOn = function(r, n) { + this.path || (this.createPathProxy(), this.buildPath(this.path, this.shape)); + for (var i = this.path, a = i.data, o = sv.CMD, l, u, d = n === "x", f = [], g = 0; g < a.length; ) { + var v = a[g++], y = void 0, C = void 0, A = void 0, S = void 0, _ = void 0, E = void 0, I = void 0; + switch (v) { + case o.M: + l = a[g++], u = a[g++]; + break; + case o.L: + if (y = a[g++], C = a[g++], I = d ? (r - l) / (y - l) : (r - u) / (C - u), I <= 1 && I >= 0) { + var w = d ? (C - u) * I + u : (y - l) * I + l; + return d ? [r, w] : [w, r]; + } + l = y, u = C; + break; + case o.C: + y = a[g++], C = a[g++], A = a[g++], S = a[g++], _ = a[g++], E = a[g++]; + var x = d ? vL(l, y, A, _, r, f) : vL(u, C, S, E, r, f); + if (x > 0) + for (var b = 0; b < x; b++) { + var R = f[b]; + if (R <= 1 && R >= 0) { + var w = d ? Ml(u, C, S, E, R) : Ml(l, y, A, _, R); + return d ? [r, w] : [w, r]; + } + } + l = _, u = E; + break; + } + } + }, t; + }(Ei) +), _9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t; + }(I0e) +), x0e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "ec-polygon", n; + } + return t.prototype.getDefaultShape = function() { + return new _9e(); + }, t.prototype.buildPath = function(r, n) { + var i = n.points, a = n.stackedOnPoints, o = 0, l = i.length / 2, u = n.smoothMonotone; + if (n.connectNulls) { + for (; l > 0 && qb(i[l * 2 - 2], i[l * 2 - 1]); l--) + ; + for (; o < l && qb(i[o * 2], i[o * 2 + 1]); o++) + ; + } + for (; o < l; ) { + var d = wW(r, i, o, l, l, 1, n.smooth, u, n.connectNulls); + wW(r, a, o + d - 1, d, l, -1, n.stackedOnSmooth, u, n.connectNulls), o += d + 1, r.closePath(); + } + }, t; + }(Ei) +); +function A0e(e, t, r, n, i) { + var a = e.getArea(), o = a.x, l = a.y, u = a.width, d = a.height, f = r.get(["lineStyle", "width"]) || 2; + o -= f / 2, l -= f / 2, u += f, d += f, u = Math.ceil(u), o !== Math.floor(o) && (o = Math.floor(o), u++); + var g = new Xi({ + shape: { + x: o, + y: l, + width: u, + height: d + } + }); + if (t) { + var v = e.getBaseAxis(), y = v.isHorizontal(), C = v.inverse; + y ? (C && (g.shape.x += u), g.shape.width = 0) : (C || (g.shape.y += d), g.shape.height = 0); + var A = Kr(i) ? function(S) { + i(S, g); + } : null; + Po(g, { + shape: { + width: u, + height: d, + x: o, + y: l + } + }, r, null, n, A); + } + return g; +} +function R0e(e, t, r) { + var n = e.getArea(), i = Is(n.r0, 1), a = Is(n.r, 1), o = new Fu({ + shape: { + cx: Is(e.cx, 1), + cy: Is(e.cy, 1), + r0: i, + r: a, + startAngle: n.startAngle, + endAngle: n.endAngle, + clockwise: n.clockwise + } + }); + if (t) { + var l = e.getBaseAxis().dim === "angle"; + l ? o.shape.endAngle = n.startAngle : o.shape.r = i, Po(o, { + shape: { + endAngle: n.endAngle, + r: a + } + }, r); + } + return o; +} +function DD(e, t, r, n, i) { + if (e) { + if (e.type === "polar") + return R0e(e, t, r); + if (e.type === "cartesian2d") + return A0e(e, t, r, n, i); + } else + return null; + return null; +} +function PE(e, t) { + return e.type === t; +} +function aoe(e, t) { + if (e.length === t.length) { + for (var r = 0; r < e.length; r++) + if (e[r] !== t[r]) + return; + return !0; + } +} +function ooe(e) { + for (var t = 1 / 0, r = 1 / 0, n = -1 / 0, i = -1 / 0, a = 0; a < e.length; ) { + var o = e[a++], l = e[a++]; + isNaN(o) || (t = Math.min(o, t), n = Math.max(o, n)), isNaN(l) || (r = Math.min(l, r), i = Math.max(l, i)); + } + return [[t, r], [n, i]]; +} +function soe(e, t) { + var r = ooe(e), n = r[0], i = r[1], a = ooe(t), o = a[0], l = a[1]; + return Math.max(Math.abs(n[0] - o[0]), Math.abs(n[1] - o[1]), Math.abs(i[0] - l[0]), Math.abs(i[1] - l[1])); +} +function loe(e) { + return Qi(e) ? e : e ? 0.5 : 0; +} +function S9e(e, t, r) { + if (!r.valueDim) + return []; + for (var n = t.count(), i = Yg(n * 2), a = 0; a < n; a++) { + var o = w0e(r, e, t, a); + i[a * 2] = o[0], i[a * 2 + 1] = o[1]; + } + return i; +} +function F_(e, t, r, n) { + var i = t.getBaseAxis(), a = i.dim === "x" || i.dim === "radius" ? 0 : 1, o = [], l = 0, u = [], d = [], f = [], g = []; + if (n) { + for (l = 0; l < e.length; l += 2) + !isNaN(e[l]) && !isNaN(e[l + 1]) && g.push(e[l], e[l + 1]); + e = g; + } + for (l = 0; l < e.length - 2; l += 2) + switch (f[0] = e[l + 2], f[1] = e[l + 3], d[0] = e[l], d[1] = e[l + 1], o.push(d[0], d[1]), r) { + case "end": + u[a] = f[a], u[1 - a] = d[1 - a], o.push(u[0], u[1]); + break; + case "middle": + var v = (d[a] + f[a]) / 2, y = []; + u[a] = y[a] = v, u[1 - a] = d[1 - a], y[1 - a] = f[1 - a], o.push(u[0], u[1]), o.push(y[0], y[1]); + break; + default: + u[a] = d[a], u[1 - a] = f[1 - a], o.push(u[0], u[1]); + } + return o.push(e[l++], e[l++]), o; +} +function b9e(e, t) { + var r = [], n = e.length, i, a; + function o(f, g, v) { + var y = f.coord, C = (v - y) / (g.coord - y), A = u8(C, [f.color, g.color]); + return { + coord: v, + color: A + }; + } + for (var l = 0; l < n; l++) { + var u = e[l], d = u.coord; + if (d < 0) + i = u; + else if (d > t) { + a ? r.push(o(a, u, t)) : i && r.push(o(i, u, 0), o(i, u, t)); + break; + } else + i && (r.push(o(i, u, 0)), i = null), r.push(u), a = u; + } + return r; +} +function E9e(e, t, r) { + var n = e.getVisual("visualMeta"); + if (!(!n || !n.length || !e.count()) && t.type === "cartesian2d") { + for (var i, a, o = n.length - 1; o >= 0; o--) { + var l = e.getDimensionInfo(n[o].dimension); + if (i = l && l.coordDim, i === "x" || i === "y") { + a = n[o]; + break; + } + } + if (a) { + var u = t.getAxis(i), d = er(a.stops, function(I) { + return { + coord: u.toGlobalCoord(u.dataToCoord(I.value)), + color: I.color + }; + }), f = d.length, g = a.outerColors.slice(); + f && d[0].coord > d[f - 1].coord && (d.reverse(), g.reverse()); + var v = b9e(d, i === "x" ? r.getWidth() : r.getHeight()), y = v.length; + if (!y && f) + return d[0].coord < 0 ? g[1] ? g[1] : d[f - 1].color : g[0] ? g[0] : d[0].color; + var C = 10, A = v[0].coord - C, S = v[y - 1].coord + C, _ = S - A; + if (_ < 1e-3) + return "transparent"; + Ee(v, function(I) { + I.offset = (I.coord - A) / _; + }), v.push({ + // NOTE: inRangeStopLen may still be 0 if stoplen is zero. + offset: y ? v[y - 1].offset : 0.5, + color: g[1] || "transparent" + }), v.unshift({ + offset: y ? v[0].offset : 0.5, + color: g[0] || "transparent" + }); + var E = new fI(0, 0, 0, 0, v, !0); + return E[i] = A, E[i + "2"] = S, E; + } + } +} +function C9e(e, t, r) { + var n = e.get("showAllSymbol"), i = n === "auto"; + if (!(n && !i)) { + var a = r.getAxesByScale("ordinal")[0]; + if (a && !(i && T9e(a, t))) { + var o = t.mapDimension(a.dim), l = {}; + return Ee(a.getViewLabels(), function(u) { + var d = a.scale.getRawOrdinalNumber(u.tickValue); + l[d] = 1; + }), function(u) { + return !l.hasOwnProperty(t.get(o, u)); + }; + } + } +} +function T9e(e, t) { + var r = e.getExtent(), n = Math.abs(r[1] - r[0]) / e.scale.count(); + isNaN(n) && (n = 0); + for (var i = t.count(), a = Math.max(1, Math.round(i / 5)), o = 0; o < i; o += a) + if (AD.getSymbolSize( + t, + o + // Only for cartesian, where `isHorizontal` exists. + )[e.isHorizontal() ? 1 : 0] * 1.5 > n) + return !1; + return !0; +} +function w9e(e, t) { + return isNaN(e) || isNaN(t); +} +function I9e(e) { + for (var t = e.length / 2; t > 0 && w9e(e[t * 2 - 2], e[t * 2 - 1]); t--) + ; + return t - 1; +} +function coe(e, t) { + return [e[t * 2], e[t * 2 + 1]]; +} +function x9e(e, t, r) { + for (var n = e.length / 2, i = r === "x" ? 0 : 1, a, o, l = 0, u = -1, d = 0; d < n; d++) + if (o = e[d * 2 + i], !(isNaN(o) || isNaN(e[d * 2 + 1 - i]))) { + if (d === 0) { + a = o; + continue; + } + if (a <= t && o >= t || a >= t && o <= t) { + u = d; + break; + } + l = d, a = o; + } + return { + range: [l, u], + t: (t - a) / (o - a) + }; +} +function D0e(e) { + if (e.get(["endLabel", "show"])) + return !0; + for (var t = 0; t < Lu.length; t++) + if (e.get([Lu[t], "endLabel", "show"])) + return !0; + return !1; +} +function Nz(e, t, r, n) { + if (PE(t, "cartesian2d")) { + var i = n.getModel("endLabel"), a = i.get("valueAnimation"), o = n.getData(), l = { + lastFrameIndex: 0 + }, u = D0e(n) ? function(y, C) { + e._endLabelOnDuring(y, C, o, l, a, i, t); + } : null, d = t.getBaseAxis().isHorizontal(), f = A0e(t, r, n, function() { + var y = e._endLabel; + y && r && l.originalX != null && y.attr({ + x: l.originalX, + y: l.originalY + }); + }, u); + if (!n.get("clip", !0)) { + var g = f.shape, v = Math.max(g.width, g.height); + d ? (g.y -= v, g.height += v * 2) : (g.x -= v, g.width += v * 2); + } + return u && u(1, f), f; + } else + return R0e(t, r, n); +} +function A9e(e, t) { + var r = t.getBaseAxis(), n = r.isHorizontal(), i = r.inverse, a = n ? i ? "right" : "left" : "center", o = n ? "middle" : i ? "top" : "bottom"; + return { + normal: { + align: e.get("align") || a, + verticalAlign: e.get("verticalAlign") || o + } + }; +} +var R9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.init = function() { + var r = new _n(), n = new RD(); + this.group.add(n.group), this._symbolDraw = n, this._lineGroup = r; + }, t.prototype.render = function(r, n, i) { + var a = this, o = r.coordinateSystem, l = this.group, u = r.getData(), d = r.getModel("lineStyle"), f = r.getModel("areaStyle"), g = u.getLayout("points") || [], v = o.type === "polar", y = this._coordSys, C = this._symbolDraw, A = this._polyline, S = this._polygon, _ = this._lineGroup, E = !n.ssr && r.get("animation"), I = !f.isEmpty(), w = f.get("origin"), x = T0e(o, u, w), b = I && S9e(o, u, x), R = r.get("showSymbol"), M = r.get("connectNulls"), O = R && !v && C9e(r, u, o), P = this._data; + P && P.eachItemGraphicEl(function(Ue, Qe) { + Ue.__temp && (l.remove(Ue), P.setItemGraphicEl(Qe, null)); + }), R || C.remove(), l.add(_); + var B = v ? !1 : r.get("step"), H; + o && o.getArea && r.get("clip", !0) && (H = o.getArea(), H.width != null ? (H.x -= 0.1, H.y -= 0.1, H.width += 0.2, H.height += 0.2) : H.r0 && (H.r0 -= 0.5, H.r += 0.5)), this._clipShapeForSymbol = H; + var Y = E9e(u, o, i) || u.getVisual("style")[u.getVisual("drawType")]; + if (!(A && y.type === o.type && B === this._step)) + R && C.updateData(u, { + isIgnore: O, + clipShape: H, + disableAnimation: !0, + getSymbolPoint: function(Ue) { + return [g[Ue * 2], g[Ue * 2 + 1]]; + } + }), E && this._initSymbolLabelAnimation(u, o, H), B && (g = F_(g, o, B, M), b && (b = F_(b, o, B, M))), A = this._newPolyline(g), I ? S = this._newPolygon(g, b) : S && (_.remove(S), S = this._polygon = null), v || this._initOrUpdateEndLabel(r, o, pE(Y)), _.setClipPath(Nz(this, o, !0, r)); + else { + I && !S ? S = this._newPolygon(g, b) : S && !I && (_.remove(S), S = this._polygon = null), v || this._initOrUpdateEndLabel(r, o, pE(Y)); + var X = _.getClipPath(); + if (X) { + var ee = Nz(this, o, !1, r); + Po(X, { + shape: ee.shape + }, r); + } else + _.setClipPath(Nz(this, o, !0, r)); + R && C.updateData(u, { + isIgnore: O, + clipShape: H, + disableAnimation: !0, + getSymbolPoint: function(Ue) { + return [g[Ue * 2], g[Ue * 2 + 1]]; + } + }), (!aoe(this._stackedOnPoints, b) || !aoe(this._points, g)) && (E ? this._doUpdateAnimation(u, b, o, i, B, w, M) : (B && (g = F_(g, o, B, M), b && (b = F_(b, o, B, M))), A.setShape({ + points: g + }), S && S.setShape({ + points: g, + stackedOnPoints: b + }))); + } + var ae = r.getModel("emphasis"), J = ae.get("focus"), ne = ae.get("blurScope"), fe = ae.get("disabled"); + if (A.useStyle(Jr( + // Use color in lineStyle first + d.getLineStyle(), + { + fill: "none", + stroke: Y, + lineJoin: "bevel" + } + )), bc(A, r, "lineStyle"), A.style.lineWidth > 0 && r.get(["emphasis", "lineStyle", "width"]) === "bolder") { + var de = A.getState("emphasis").style; + de.lineWidth = +A.style.lineWidth + 1; + } + Tn(A).seriesIndex = r.seriesIndex, xs(A, J, ne, fe); + var Te = loe(r.get("smooth")), be = r.get("smoothMonotone"); + if (A.setShape({ + smooth: Te, + smoothMonotone: be, + connectNulls: M + }), S) { + var Ve = u.getCalculationInfo("stackedOnSeries"), pe = 0; + S.useStyle(Jr(f.getAreaStyle(), { + fill: Y, + opacity: 0.7, + lineJoin: "bevel", + decal: u.getVisual("style").decal + })), Ve && (pe = loe(Ve.get("smooth"))), S.setShape({ + smooth: Te, + stackedOnSmooth: pe, + smoothMonotone: be, + connectNulls: M + }), bc(S, r, "areaStyle"), Tn(S).seriesIndex = r.seriesIndex, xs(S, J, ne, fe); + } + var Be = function(Ue) { + a._changePolyState(Ue); + }; + u.eachItemGraphicEl(function(Ue) { + Ue && (Ue.onHoverStateChange = Be); + }), this._polyline.onHoverStateChange = Be, this._data = u, this._coordSys = o, this._stackedOnPoints = b, this._points = g, this._step = B, this._valueOrigin = w, r.get("triggerLineEvent") && (this.packEventData(r, A), S && this.packEventData(r, S)); + }, t.prototype.packEventData = function(r, n) { + Tn(n).eventData = { + componentType: "series", + componentSubType: "line", + componentIndex: r.componentIndex, + seriesIndex: r.seriesIndex, + seriesName: r.name, + seriesType: "line" + }; + }, t.prototype.highlight = function(r, n, i, a) { + var o = r.getData(), l = hE(o, a); + if (this._changePolyState("emphasis"), !(l instanceof Array) && l != null && l >= 0) { + var u = o.getLayout("points"), d = o.getItemGraphicEl(l); + if (!d) { + var f = u[l * 2], g = u[l * 2 + 1]; + if (isNaN(f) || isNaN(g) || this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(f, g)) + return; + var v = r.get("zlevel") || 0, y = r.get("z") || 0; + d = new AD(o, l), d.x = f, d.y = g, d.setZ(v, y); + var C = d.getSymbolPath().getTextContent(); + C && (C.zlevel = v, C.z = y, C.z2 = this._polyline.z2 + 1), d.__temp = !0, o.setItemGraphicEl(l, d), d.stopSymbolAnimation(!0), this.group.add(d); + } + d.highlight(); + } else + Ya.prototype.highlight.call(this, r, n, i, a); + }, t.prototype.downplay = function(r, n, i, a) { + var o = r.getData(), l = hE(o, a); + if (this._changePolyState("normal"), l != null && l >= 0) { + var u = o.getItemGraphicEl(l); + u && (u.__temp ? (o.setItemGraphicEl(l, null), this.group.remove(u)) : u.downplay()); + } else + Ya.prototype.downplay.call(this, r, n, i, a); + }, t.prototype._changePolyState = function(r) { + var n = this._polygon; + CL(this._polyline, r), n && CL(n, r); + }, t.prototype._newPolyline = function(r) { + var n = this._polyline; + return n && this._lineGroup.remove(n), n = new y9e({ + shape: { + points: r + }, + segmentIgnoreThreshold: 2, + z2: 10 + }), this._lineGroup.add(n), this._polyline = n, n; + }, t.prototype._newPolygon = function(r, n) { + var i = this._polygon; + return i && this._lineGroup.remove(i), i = new x0e({ + shape: { + points: r, + stackedOnPoints: n + }, + segmentIgnoreThreshold: 2 + }), this._lineGroup.add(i), this._polygon = i, i; + }, t.prototype._initSymbolLabelAnimation = function(r, n, i) { + var a, o, l = n.getBaseAxis(), u = l.inverse; + n.type === "cartesian2d" ? (a = l.isHorizontal(), o = !1) : n.type === "polar" && (a = l.dim === "angle", o = !0); + var d = r.hostModel, f = d.get("animationDuration"); + Kr(f) && (f = f(null)); + var g = d.get("animationDelay") || 0, v = Kr(g) ? g(null) : g; + r.eachItemGraphicEl(function(y, C) { + var A = y; + if (A) { + var S = [y.x, y.y], _ = void 0, E = void 0, I = void 0; + if (i) + if (o) { + var w = i, x = n.pointToCoord(S); + a ? (_ = w.startAngle, E = w.endAngle, I = -x[1] / 180 * Math.PI) : (_ = w.r0, E = w.r, I = x[0]); + } else { + var b = i; + a ? (_ = b.x, E = b.x + b.width, I = y.x) : (_ = b.y + b.height, E = b.y, I = y.y); + } + var R = E === _ ? 0 : (I - _) / (E - _); + u && (R = 1 - R); + var M = Kr(g) ? g(C) : f * R + v, O = A.getSymbolPath(), P = O.getTextContent(); + A.attr({ + scaleX: 0, + scaleY: 0 + }), A.animateTo({ + scaleX: 1, + scaleY: 1 + }, { + duration: 200, + setToFinal: !0, + delay: M + }), P && P.animateFrom({ + style: { + opacity: 0 + } + }, { + duration: 300, + delay: M + }), O.disableLabelAnimation = !0; + } + }); + }, t.prototype._initOrUpdateEndLabel = function(r, n, i) { + var a = r.getModel("endLabel"); + if (D0e(r)) { + var o = r.getData(), l = this._polyline, u = o.getLayout("points"); + if (!u) { + l.removeTextContent(), this._endLabel = null; + return; + } + var d = this._endLabel; + d || (d = this._endLabel = new Hi({ + z2: 200 + // should be higher than item symbol + }), d.ignoreClip = !0, l.setTextContent(this._endLabel), l.disableLabelAnimation = !0); + var f = I9e(u); + f >= 0 && (Ec(l, Ll(r, "endLabel"), { + inheritColor: i, + labelFetcher: r, + labelDataIndex: f, + defaultText: function(g, v, y) { + return y != null ? C0e(o, y) : zw(o, g); + }, + enableTextSetter: !0 + }, A9e(a, n)), l.textConfig.position = null); + } else + this._endLabel && (this._polyline.removeTextContent(), this._endLabel = null); + }, t.prototype._endLabelOnDuring = function(r, n, i, a, o, l, u) { + var d = this._endLabel, f = this._polyline; + if (d) { + r < 1 && a.originalX == null && (a.originalX = d.x, a.originalY = d.y); + var g = i.getLayout("points"), v = i.hostModel, y = v.get("connectNulls"), C = l.get("precision"), A = l.get("distance") || 0, S = u.getBaseAxis(), _ = S.isHorizontal(), E = S.inverse, I = n.shape, w = E ? _ ? I.x : I.y + I.height : _ ? I.x + I.width : I.y, x = (_ ? A : 0) * (E ? -1 : 1), b = (_ ? 0 : -A) * (E ? -1 : 1), R = _ ? "x" : "y", M = x9e(g, w, R), O = M.range, P = O[1] - O[0], B = void 0; + if (P >= 1) { + if (P > 1 && !y) { + var H = coe(g, O[0]); + d.attr({ + x: H[0] + x, + y: H[1] + b + }), o && (B = v.getRawValue(O[0])); + } else { + var H = f.getPointOn(w, R); + H && d.attr({ + x: H[0] + x, + y: H[1] + b + }); + var Y = v.getRawValue(O[0]), X = v.getRawValue(O[1]); + o && (B = Lve(i, C, Y, X, M.t)); + } + a.lastFrameIndex = O[0]; + } else { + var ee = r === 1 || a.lastFrameIndex > 0 ? O[0] : 0, H = coe(g, ee); + o && (B = v.getRawValue(ee)), d.attr({ + x: H[0] + x, + y: H[1] + b + }); + } + if (o) { + var ae = mI(d); + typeof ae.setLabelText == "function" && ae.setLabelText(B); + } + } + }, t.prototype._doUpdateAnimation = function(r, n, i, a, o, l, u) { + var d = this._polyline, f = this._polygon, g = r.hostModel, v = m9e(this._data, r, this._stackedOnPoints, n, this._coordSys, i, this._valueOrigin), y = v.current, C = v.stackedOnCurrent, A = v.next, S = v.stackedOnNext; + if (o && (y = F_(v.current, i, o, u), C = F_(v.stackedOnCurrent, i, o, u), A = F_(v.next, i, o, u), S = F_(v.stackedOnNext, i, o, u)), soe(y, A) > 3e3 || f && soe(C, S) > 3e3) { + d.stopAnimation(), d.setShape({ + points: A + }), f && (f.stopAnimation(), f.setShape({ + points: A, + stackedOnPoints: S + })); + return; + } + d.shape.__points = v.current, d.shape.points = y; + var _ = { + shape: { + points: A + } + }; + v.current !== y && (_.shape.__points = v.next), d.stopAnimation(), ia(d, _, g), f && (f.setShape({ + // Reuse the points with polyline. + points: y, + stackedOnPoints: C + }), f.stopAnimation(), ia(f, { + shape: { + stackedOnPoints: S + } + }, g), d.shape.points !== f.shape.points && (f.shape.points = d.shape.points)); + for (var E = [], I = v.status, w = 0; w < I.length; w++) { + var x = I[w].cmd; + if (x === "=") { + var b = r.getItemGraphicEl(I[w].idx1); + b && E.push({ + el: b, + ptIdx: w + // Index of points + }); + } + } + d.animators && d.animators.length && d.animators[0].during(function() { + f && f.dirtyShape(); + for (var R = d.shape.__points, M = 0; M < E.length; M++) { + var O = E[M].el, P = E[M].ptIdx * 2; + O.x = R[P], O.y = R[P + 1], O.markRedraw(); + } + }); + }, t.prototype.remove = function(r) { + var n = this.group, i = this._data; + this._lineGroup.removeAll(), this._symbolDraw.remove(!0), i && i.eachItemGraphicEl(function(a, o) { + a.__temp && (n.remove(a), i.setItemGraphicEl(o, null)); + }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null; + }, t.type = "line", t; + }(Ya) +); +const D9e = R9e; +function OD(e, t) { + return { + seriesType: e, + plan: CI(), + reset: function(r) { + var n = r.getData(), i = r.coordinateSystem, a = r.pipelineContext, o = t || a.large; + if (i) { + var l = er(i.dimensions, function(y) { + return n.mapDimension(y); + }).slice(0, 2), u = l.length, d = n.getCalculationInfo("stackResultDimension"); + Ym(n, l[0]) && (l[0] = d), Ym(n, l[1]) && (l[1] = d); + var f = n.getStore(), g = n.getDimensionIndex(l[0]), v = n.getDimensionIndex(l[1]); + return u && { + progress: function(y, C) { + for (var A = y.end - y.start, S = o && Yg(A * u), _ = [], E = [], I = y.start, w = 0; I < y.end; I++) { + var x = void 0; + if (u === 1) { + var b = f.get(g, I); + x = i.dataToPoint(b, null, E); + } else + _[0] = f.get(g, I), _[1] = f.get(v, I), x = i.dataToPoint(_, null, E); + o ? (S[w++] = x[0], S[w++] = x[1]) : C.setItemLayout(I, x.slice()); + } + o && C.setLayout("points", S); + } + }; + } + } + }; +} +var O9e = { + average: function(e) { + for (var t = 0, r = 0, n = 0; n < e.length; n++) + isNaN(e[n]) || (t += e[n], r++); + return r === 0 ? NaN : t / r; + }, + sum: function(e) { + for (var t = 0, r = 0; r < e.length; r++) + t += e[r] || 0; + return t; + }, + max: function(e) { + for (var t = -1 / 0, r = 0; r < e.length; r++) + e[r] > t && (t = e[r]); + return isFinite(t) ? t : NaN; + }, + min: function(e) { + for (var t = 1 / 0, r = 0; r < e.length; r++) + e[r] < t && (t = e[r]); + return isFinite(t) ? t : NaN; + }, + minmax: function(e) { + for (var t = -1 / 0, r = -1 / 0, n = 0; n < e.length; n++) { + var i = e[n], a = Math.abs(i); + a > t && (t = a, r = i); + } + return isFinite(r) ? r : NaN; + }, + // TODO + // Median + nearest: function(e) { + return e[0]; + } +}, M9e = function(e) { + return Math.round(e.length / 2); +}; +function O0e(e) { + return { + seriesType: e, + // FIXME:TS never used, so comment it + // modifyOutputEnd: true, + reset: function(t, r, n) { + var i = t.getData(), a = t.get("sampling"), o = t.coordinateSystem, l = i.count(); + if (l > 10 && o.type === "cartesian2d" && a) { + var u = o.getBaseAxis(), d = o.getOtherAxis(u), f = u.getExtent(), g = n.getDevicePixelRatio(), v = Math.abs(f[1] - f[0]) * (g || 1), y = Math.round(l / v); + if (isFinite(y) && y > 1) { + a === "lttb" && t.setData(i.lttbDownSample(i.mapDimension(d.dim), 1 / y)); + var C = void 0; + wr(a) ? C = O9e[a] : Kr(a) && (C = a), C && t.setData(i.downSample(i.mapDimension(d.dim), 1 / y, C, M9e)); + } + } + } + }; +} +function k9e(e) { + e.registerChartView(D9e), e.registerSeriesModel(h9e), e.registerLayout(OD("line", !0)), e.registerVisual({ + seriesType: "line", + reset: function(t) { + var r = t.getData(), n = t.getModel("lineStyle").getLineStyle(); + n && !n.stroke && (n.stroke = r.getVisual("style").fill), r.setVisual("legendLineStyle", n); + } + }), e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC, O0e("line")); +} +var M0e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.getInitialData = function(r, n) { + return fv(null, this, { + useEncodeDefaulter: !0 + }); + }, t.prototype.getMarkerPosition = function(r, n, i) { + var a = this.coordinateSystem; + if (a && a.clampData) { + var o = a.clampData(r), l = a.dataToPoint(o); + if (i) + Ee(a.getAxes(), function(v, y) { + if (v.type === "category" && n != null) { + var C = v.getTicksCoords(), A = v.getTickModel().get("alignWithLabel"), S = o[y], _ = n[y] === "x1" || n[y] === "y1"; + if (_ && !A && (S += 1), C.length < 2) + return; + if (C.length === 2) { + l[y] = v.toGlobalCoord(v.getExtent()[_ ? 1 : 0]); + return; + } + for (var E = void 0, I = void 0, w = 1, x = 0; x < C.length; x++) { + var b = C[x].coord, R = x === C.length - 1 ? C[x - 1].tickValue + w : C[x].tickValue; + if (R === S) { + I = b; + break; + } else if (R < S) + E = b; + else if (E != null && R > S) { + I = (b + E) / 2; + break; + } + x === 1 && (w = R - C[0].tickValue); + } + I == null && (E ? E && (I = C[C.length - 1].coord) : I = C[0].coord), l[y] = v.toGlobalCoord(I); + } + }); + else { + var u = this.getData(), d = u.getLayout("offset"), f = u.getLayout("size"), g = a.getBaseAxis().isHorizontal() ? 0 : 1; + l[g] += d + f / 2; + } + return l; + } + return [NaN, NaN]; + }, t.type = "series.__base_bar__", t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "cartesian2d", + legendHoverLink: !0, + // stack: null + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + barMinHeight: 0, + barMinAngle: 0, + // cursor: null, + large: !1, + largeThreshold: 400, + progressive: 3e3, + progressiveChunkMode: "mod" + }, t; + }(fo) +); +fo.registerClass(M0e); +const HL = M0e; +var P9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.getInitialData = function() { + return fv(null, this, { + useEncodeDefaulter: !0, + createInvertedIndices: !!this.get("realtimeSort", !0) || null + }); + }, t.prototype.getProgressive = function() { + return this.get("large") ? this.get("progressive") : !1; + }, t.prototype.getProgressiveThreshold = function() { + var r = this.get("progressiveThreshold"), n = this.get("largeThreshold"); + return n > r && (r = n), r; + }, t.prototype.brushSelector = function(r, n, i) { + return i.rect(n.getItemLayout(r)); + }, t.type = "series.bar", t.dependencies = ["grid", "polar"], t.defaultOption = O0(HL.defaultOption, { + // If clipped + // Only available on cartesian2d + clip: !0, + roundCap: !1, + showBackground: !1, + backgroundStyle: { + color: "rgba(180, 180, 180, 0.2)", + borderColor: null, + borderWidth: 0, + borderType: "solid", + borderRadius: 0, + shadowBlur: 0, + shadowColor: null, + shadowOffsetX: 0, + shadowOffsetY: 0, + opacity: 1 + }, + select: { + itemStyle: { + borderColor: "#212121" + } + }, + realtimeSort: !1 + }), t; + }(HL) +); +const N9e = P9e; +var L9e = ( + /** @class */ + function() { + function e() { + this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = Math.PI * 2, this.clockwise = !0; + } + return e; + }() +), F9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "sausage", n; + } + return t.prototype.getDefaultShape = function() { + return new L9e(); + }, t.prototype.buildPath = function(r, n) { + var i = n.cx, a = n.cy, o = Math.max(n.r0 || 0, 0), l = Math.max(n.r, 0), u = (l - o) * 0.5, d = o + u, f = n.startAngle, g = n.endAngle, v = n.clockwise, y = Math.PI * 2, C = v ? g - f < y : f - g < y; + C || (f = g - (v ? y : -y)); + var A = Math.cos(f), S = Math.sin(f), _ = Math.cos(g), E = Math.sin(g); + C ? (r.moveTo(A * o + i, S * o + a), r.arc(A * d + i, S * d + a, u, -Math.PI + f, f, !v)) : r.moveTo(A * l + i, S * l + a), r.arc(i, a, l, f, g, !v), r.arc(_ * d + i, E * d + a, u, g - Math.PI * 2, g - Math.PI, !v), o !== 0 && r.arc(i, a, o, g, f, v); + }, t; + }(Ei) +); +const WL = F9e; +function B9e(e, t) { + t = t || {}; + var r = t.isRoundCap; + return function(n, i, a) { + var o = i.position; + if (!o || o instanceof Array) + return bL(n, i, a); + var l = e(o), u = i.distance != null ? i.distance : 5, d = this.shape, f = d.cx, g = d.cy, v = d.r, y = d.r0, C = (v + y) / 2, A = d.startAngle, S = d.endAngle, _ = (A + S) / 2, E = r ? Math.abs(v - y) / 2 : 0, I = Math.cos, w = Math.sin, x = f + v * I(A), b = g + v * w(A), R = "left", M = "top"; + switch (l) { + case "startArc": + x = f + (y - u) * I(_), b = g + (y - u) * w(_), R = "center", M = "top"; + break; + case "insideStartArc": + x = f + (y + u) * I(_), b = g + (y + u) * w(_), R = "center", M = "bottom"; + break; + case "startAngle": + x = f + C * I(A) + pP(A, u + E, !1), b = g + C * w(A) + gP(A, u + E, !1), R = "right", M = "middle"; + break; + case "insideStartAngle": + x = f + C * I(A) + pP(A, -u + E, !1), b = g + C * w(A) + gP(A, -u + E, !1), R = "left", M = "middle"; + break; + case "middle": + x = f + C * I(_), b = g + C * w(_), R = "center", M = "middle"; + break; + case "endArc": + x = f + (v + u) * I(_), b = g + (v + u) * w(_), R = "center", M = "bottom"; + break; + case "insideEndArc": + x = f + (v - u) * I(_), b = g + (v - u) * w(_), R = "center", M = "top"; + break; + case "endAngle": + x = f + C * I(S) + pP(S, u + E, !0), b = g + C * w(S) + gP(S, u + E, !0), R = "left", M = "middle"; + break; + case "insideEndAngle": + x = f + C * I(S) + pP(S, -u + E, !0), b = g + C * w(S) + gP(S, -u + E, !0), R = "right", M = "middle"; + break; + default: + return bL(n, i, a); + } + return n = n || {}, n.x = x, n.y = b, n.align = R, n.verticalAlign = M, n; + }; +} +function U9e(e, t, r, n) { + if (Qi(n)) { + e.setTextConfig({ + rotation: n + }); + return; + } else if (qt(t)) { + e.setTextConfig({ + rotation: 0 + }); + return; + } + var i = e.shape, a = i.clockwise ? i.startAngle : i.endAngle, o = i.clockwise ? i.endAngle : i.startAngle, l = (a + o) / 2, u, d = r(t); + switch (d) { + case "startArc": + case "insideStartArc": + case "middle": + case "insideEndArc": + case "endArc": + u = l; + break; + case "startAngle": + case "insideStartAngle": + u = a; + break; + case "endAngle": + case "insideEndAngle": + u = o; + break; + default: + e.setTextConfig({ + rotation: 0 + }); + return; + } + var f = Math.PI * 1.5 - u; + d === "middle" && f > Math.PI / 2 && f < Math.PI * 1.5 && (f -= Math.PI), e.setTextConfig({ + rotation: f + }); +} +function pP(e, t, r) { + return t * Math.sin(e) * (r ? -1 : 1); +} +function gP(e, t, r) { + return t * Math.cos(e) * (r ? 1 : -1); +} +function jb(e, t, r) { + var n = e.get("borderRadius"); + if (n == null) + return r ? { + cornerRadius: 0 + } : null; + qt(n) || (n = [n, n, n, n]); + var i = Math.abs(t.r || 0 - t.r0 || 0); + return { + cornerRadius: er(n, function(a) { + return Np(a, i); + }) + }; +} +var Lz = Math.max, Fz = Math.min; +function j9e(e, t) { + var r = e.getArea && e.getArea(); + if (PE(e, "cartesian2d")) { + var n = e.getBaseAxis(); + if (n.type !== "category" || !n.onBand) { + var i = t.getLayout("bandWidth"); + n.isHorizontal() ? (r.x -= i, r.width += i * 2) : (r.y -= i, r.height += i * 2); + } + } + return r; +} +var $9e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e.call(this) || this; + return r.type = t.type, r._isFirstFrame = !0, r; + } + return t.prototype.render = function(r, n, i, a) { + this._model = r, this._removeOnRenderedListener(i), this._updateDrawMode(r); + var o = r.get("coordinateSystem"); + (o === "cartesian2d" || o === "polar") && (this._progressiveEls = null, this._isLargeDraw ? this._renderLarge(r, n, i) : this._renderNormal(r, n, i, a)); + }, t.prototype.incrementalPrepareRender = function(r) { + this._clear(), this._updateDrawMode(r), this._updateLargeClip(r); + }, t.prototype.incrementalRender = function(r, n) { + this._progressiveEls = [], this._incrementalRenderLarge(r, n); + }, t.prototype.eachRendered = function(r) { + D0(this._progressiveEls || this.group, r); + }, t.prototype._updateDrawMode = function(r) { + var n = r.pipelineContext.large; + (this._isLargeDraw == null || n !== this._isLargeDraw) && (this._isLargeDraw = n, this._clear()); + }, t.prototype._renderNormal = function(r, n, i, a) { + var o = this.group, l = r.getData(), u = this._data, d = r.coordinateSystem, f = d.getBaseAxis(), g; + d.type === "cartesian2d" ? g = f.isHorizontal() : d.type === "polar" && (g = f.dim === "angle"); + var v = r.isAnimationEnabled() ? r : null, y = V9e(r, d); + y && this._enableRealtimeSort(y, l, i); + var C = r.get("clip", !0) || y, A = j9e(d, l); + o.removeClipPath(); + var S = r.get("roundCap", !0), _ = r.get("showBackground", !0), E = r.getModel("backgroundStyle"), I = E.get("borderRadius") || 0, w = [], x = this._backgroundEls, b = a && a.isInitSort, R = a && a.type === "changeAxisOrder"; + function M(B) { + var H = vP[d.type](l, B), Y = K9e(d, g, H); + return Y.useStyle(E.getItemStyle()), d.type === "cartesian2d" ? Y.setShape("r", I) : Y.setShape("cornerRadius", I), w[B] = Y, Y; + } + l.diff(u).add(function(B) { + var H = l.getItemModel(B), Y = vP[d.type](l, B, H); + if (_ && M(B), !(!l.hasValue(B) || !poe[d.type](Y))) { + var X = !1; + C && (X = uoe[d.type](A, Y)); + var ee = hoe[d.type](r, l, B, Y, g, v, f.model, !1, S); + y && (ee.forceLabelAnimation = !0), goe(ee, l, B, H, Y, r, g, d.type === "polar"), b ? ee.attr({ + shape: Y + }) : y ? doe(y, v, ee, Y, B, g, !1, !1) : Po(ee, { + shape: Y + }, r, B), l.setItemGraphicEl(B, ee), o.add(ee), ee.ignore = X; + } + }).update(function(B, H) { + var Y = l.getItemModel(B), X = vP[d.type](l, B, Y); + if (_) { + var ee = void 0; + x.length === 0 ? ee = M(H) : (ee = x[H], ee.useStyle(E.getItemStyle()), d.type === "cartesian2d" ? ee.setShape("r", I) : ee.setShape("cornerRadius", I), w[B] = ee); + var ae = vP[d.type](l, B), J = P0e(g, ae, d); + ia(ee, { + shape: J + }, v, B); + } + var ne = u.getItemGraphicEl(H); + if (!l.hasValue(B) || !poe[d.type](X)) { + o.remove(ne); + return; + } + var fe = !1; + if (C && (fe = uoe[d.type](A, X), fe && o.remove(ne)), ne ? Lp(ne) : ne = hoe[d.type](r, l, B, X, g, v, f.model, !!ne, S), y && (ne.forceLabelAnimation = !0), R) { + var de = ne.getTextContent(); + if (de) { + var Te = mI(de); + Te.prevValue != null && (Te.prevValue = Te.value); + } + } else + goe(ne, l, B, Y, X, r, g, d.type === "polar"); + b ? ne.attr({ + shape: X + }) : y ? doe(y, v, ne, X, B, g, !0, R) : ia(ne, { + shape: X + }, r, B, null), l.setItemGraphicEl(B, ne), ne.ignore = fe, o.add(ne); + }).remove(function(B) { + var H = u.getItemGraphicEl(B); + H && mR(H, r, B); + }).execute(); + var O = this._backgroundGroup || (this._backgroundGroup = new _n()); + O.removeAll(); + for (var P = 0; P < w.length; ++P) + O.add(w[P]); + o.add(O), this._backgroundEls = w, this._data = l; + }, t.prototype._renderLarge = function(r, n, i) { + this._clear(), moe(r, this.group), this._updateLargeClip(r); + }, t.prototype._incrementalRenderLarge = function(r, n) { + this._removeBackground(), moe(n, this.group, this._progressiveEls, !0); + }, t.prototype._updateLargeClip = function(r) { + var n = r.get("clip", !0) && DD(r.coordinateSystem, !1, r), i = this.group; + n ? i.setClipPath(n) : i.removeClipPath(); + }, t.prototype._enableRealtimeSort = function(r, n, i) { + var a = this; + if (n.count()) { + var o = r.baseAxis; + if (this._isFirstFrame) + this._dispatchInitSort(n, r, i), this._isFirstFrame = !1; + else { + var l = function(u) { + var d = n.getItemGraphicEl(u), f = d && d.shape; + return f && // The result should be consistent with the initial sort by data value. + // Do not support the case that both positive and negative exist. + Math.abs(o.isHorizontal() ? f.height : f.width) || 0; + }; + this._onRendered = function() { + a._updateSortWithinSameData(n, l, o, i); + }, i.getZr().on("rendered", this._onRendered); + } + } + }, t.prototype._dataSort = function(r, n, i) { + var a = []; + return r.each(r.mapDimension(n.dim), function(o, l) { + var u = i(l); + u = u == null ? NaN : u, a.push({ + dataIndex: l, + mappedValue: u, + ordinalNumber: o + }); + }), a.sort(function(o, l) { + return l.mappedValue - o.mappedValue; + }), { + ordinalNumbers: er(a, function(o) { + return o.ordinalNumber; + }) + }; + }, t.prototype._isOrderChangedWithinSameData = function(r, n, i) { + for (var a = i.scale, o = r.mapDimension(i.dim), l = Number.MAX_VALUE, u = 0, d = a.getOrdinalMeta().categories.length; u < d; ++u) { + var f = r.rawIndexOf(o, a.getRawOrdinalNumber(u)), g = f < 0 ? Number.MIN_VALUE : n(r.indexOfRawIndex(f)); + if (g > l) + return !0; + l = g; + } + return !1; + }, t.prototype._isOrderDifferentInView = function(r, n) { + for (var i = n.scale, a = i.getExtent(), o = Math.max(0, a[0]), l = Math.min(a[1], i.getOrdinalMeta().categories.length - 1); o <= l; ++o) + if (r.ordinalNumbers[o] !== i.getRawOrdinalNumber(o)) + return !0; + }, t.prototype._updateSortWithinSameData = function(r, n, i, a) { + if (this._isOrderChangedWithinSameData(r, n, i)) { + var o = this._dataSort(r, i, n); + this._isOrderDifferentInView(o, i) && (this._removeOnRenderedListener(a), a.dispatchAction({ + type: "changeAxisOrder", + componentType: i.dim + "Axis", + axisId: i.index, + sortInfo: o + })); + } + }, t.prototype._dispatchInitSort = function(r, n, i) { + var a = n.baseAxis, o = this._dataSort(r, a, function(l) { + return r.get(r.mapDimension(n.otherAxis.dim), l); + }); + i.dispatchAction({ + type: "changeAxisOrder", + componentType: a.dim + "Axis", + isInitSort: !0, + axisId: a.index, + sortInfo: o + }); + }, t.prototype.remove = function(r, n) { + this._clear(this._model), this._removeOnRenderedListener(n); + }, t.prototype.dispose = function(r, n) { + this._removeOnRenderedListener(n); + }, t.prototype._removeOnRenderedListener = function(r) { + this._onRendered && (r.getZr().off("rendered", this._onRendered), this._onRendered = null); + }, t.prototype._clear = function(r) { + var n = this.group, i = this._data; + r && r.isAnimationEnabled() && i && !this._isLargeDraw ? (this._removeBackground(), this._backgroundEls = [], i.eachItemGraphicEl(function(a) { + mR(a, r, Tn(a).dataIndex); + })) : n.removeAll(), this._data = null, this._isFirstFrame = !0; + }, t.prototype._removeBackground = function() { + this.group.remove(this._backgroundGroup), this._backgroundGroup = null; + }, t.type = "bar", t; + }(Ya) +), uoe = { + cartesian2d: function(e, t) { + var r = t.width < 0 ? -1 : 1, n = t.height < 0 ? -1 : 1; + r < 0 && (t.x += t.width, t.width = -t.width), n < 0 && (t.y += t.height, t.height = -t.height); + var i = e.x + e.width, a = e.y + e.height, o = Lz(t.x, e.x), l = Fz(t.x + t.width, i), u = Lz(t.y, e.y), d = Fz(t.y + t.height, a), f = l < o, g = d < u; + return t.x = f && o > i ? l : o, t.y = g && u > a ? d : u, t.width = f ? 0 : l - o, t.height = g ? 0 : d - u, r < 0 && (t.x += t.width, t.width = -t.width), n < 0 && (t.y += t.height, t.height = -t.height), f || g; + }, + polar: function(e, t) { + var r = t.r0 <= t.r ? 1 : -1; + if (r < 0) { + var n = t.r; + t.r = t.r0, t.r0 = n; + } + var i = Fz(t.r, e.r), a = Lz(t.r0, e.r0); + t.r = i, t.r0 = a; + var o = i - a < 0; + if (r < 0) { + var n = t.r; + t.r = t.r0, t.r0 = n; + } + return o; + } +}, hoe = { + cartesian2d: function(e, t, r, n, i, a, o, l, u) { + var d = new Xi({ + shape: $t({}, n), + z2: 1 + }); + if (d.__dataIndex = r, d.name = "item", a) { + var f = d.shape, g = i ? "height" : "width"; + f[g] = 0; + } + return d; + }, + polar: function(e, t, r, n, i, a, o, l, u) { + var d = !i && u ? WL : Fu, f = new d({ + shape: n, + z2: 1 + }); + f.name = "item"; + var g = k0e(i); + if (f.calculateTextPosition = B9e(g, { + isRoundCap: d === WL + }), a) { + var v = f.shape, y = i ? "r" : "endAngle", C = {}; + v[y] = i ? n.r0 : n.startAngle, C[y] = n[y], (l ? ia : Po)(f, { + shape: C + // __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue + }, a); + } + return f; + } +}; +function V9e(e, t) { + var r = e.get("realtimeSort", !0), n = t.getBaseAxis(); + if (r && n.type === "category" && t.type === "cartesian2d") + return { + baseAxis: n, + otherAxis: t.getOtherAxis(n) + }; +} +function doe(e, t, r, n, i, a, o, l) { + var u, d; + a ? (d = { + x: n.x, + width: n.width + }, u = { + y: n.y, + height: n.height + }) : (d = { + y: n.y, + height: n.height + }, u = { + x: n.x, + width: n.width + }), l || (o ? ia : Po)(r, { + shape: u + }, t, i, null); + var f = t ? e.baseAxis.model : null; + (o ? ia : Po)(r, { + shape: d + }, f, i); +} +function foe(e, t) { + for (var r = 0; r < t.length; r++) + if (!isFinite(e[t[r]])) + return !0; + return !1; +} +var z9e = ["x", "y", "width", "height"], H9e = ["cx", "cy", "r", "startAngle", "endAngle"], poe = { + cartesian2d: function(e) { + return !foe(e, z9e); + }, + polar: function(e) { + return !foe(e, H9e); + } +}, vP = { + // itemModel is only used to get borderWidth, which is not needed + // when calculating bar background layout. + cartesian2d: function(e, t, r) { + var n = e.getItemLayout(t), i = r ? G9e(r, n) : 0, a = n.width > 0 ? 1 : -1, o = n.height > 0 ? 1 : -1; + return { + x: n.x + a * i / 2, + y: n.y + o * i / 2, + width: n.width - a * i, + height: n.height - o * i + }; + }, + polar: function(e, t, r) { + var n = e.getItemLayout(t); + return { + cx: n.cx, + cy: n.cy, + r0: n.r0, + r: n.r, + startAngle: n.startAngle, + endAngle: n.endAngle, + clockwise: n.clockwise + }; + } +}; +function W9e(e) { + return e.startAngle != null && e.endAngle != null && e.startAngle === e.endAngle; +} +function k0e(e) { + return function(t) { + var r = t ? "Arc" : "Angle"; + return function(n) { + switch (n) { + case "start": + case "insideStart": + case "end": + case "insideEnd": + return n + r; + default: + return n; + } + }; + }(e); +} +function goe(e, t, r, n, i, a, o, l) { + var u = t.getItemVisual(r, "style"); + if (l) { + if (!a.get("roundCap")) { + var f = e.shape, g = jb(n.getModel("itemStyle"), f, !0); + $t(f, g), e.setShape(f); + } + } else { + var d = n.get(["itemStyle", "borderRadius"]) || 0; + e.setShape("r", d); + } + e.useStyle(u); + var v = n.getShallow("cursor"); + v && e.attr("cursor", v); + var y = l ? o ? i.r >= i.r0 ? "endArc" : "startArc" : i.endAngle >= i.startAngle ? "endAngle" : "startAngle" : o ? i.height >= 0 ? "bottom" : "top" : i.width >= 0 ? "right" : "left", C = Ll(n); + Ec(e, C, { + labelFetcher: a, + labelDataIndex: r, + defaultText: zw(a.getData(), r), + inheritColor: u.fill, + defaultOpacity: u.opacity, + defaultOutsidePosition: y + }); + var A = e.getTextContent(); + if (l && A) { + var S = n.get(["label", "position"]); + e.textConfig.inside = S === "middle" ? !0 : null, U9e(e, S === "outside" ? y : S, k0e(o), n.get(["label", "rotate"])); + } + kme(A, C, a.getRawValue(r), function(E) { + return C0e(t, E); + }); + var _ = n.getModel(["emphasis"]); + xs(e, _.get("focus"), _.get("blurScope"), _.get("disabled")), bc(e, n), W9e(i) && (e.style.fill = "none", e.style.stroke = "none", Ee(e.states, function(E) { + E.style && (E.style.fill = E.style.stroke = "none"); + })); +} +function G9e(e, t) { + var r = e.get(["itemStyle", "borderColor"]); + if (!r || r === "none") + return 0; + var n = e.get(["itemStyle", "borderWidth"]) || 0, i = isNaN(t.width) ? Number.MAX_VALUE : Math.abs(t.width), a = isNaN(t.height) ? Number.MAX_VALUE : Math.abs(t.height); + return Math.min(n, i, a); +} +var Y9e = ( + /** @class */ + function() { + function e() { + } + return e; + }() +), voe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "largeBar", n; + } + return t.prototype.getDefaultShape = function() { + return new Y9e(); + }, t.prototype.buildPath = function(r, n) { + for (var i = n.points, a = this.baseDimIdx, o = 1 - this.baseDimIdx, l = [], u = [], d = this.barWidth, f = 0; f < i.length; f += 3) + u[a] = d, u[o] = i[f + 2], l[a] = i[f + a], l[o] = i[f + o], r.rect(l[0], l[1], u[0], u[1]); + }, t; + }(Ei) +); +function moe(e, t, r, n) { + var i = e.getData(), a = i.getLayout("valueAxisHorizontal") ? 1 : 0, o = i.getLayout("largeDataIndices"), l = i.getLayout("size"), u = e.getModel("backgroundStyle"), d = i.getLayout("largeBackgroundPoints"); + if (d) { + var f = new voe({ + shape: { + points: d + }, + incremental: !!n, + silent: !0, + z2: 0 + }); + f.baseDimIdx = a, f.largeDataIndices = o, f.barWidth = l, f.useStyle(u.getItemStyle()), t.add(f), r && r.push(f); + } + var g = new voe({ + shape: { + points: i.getLayout("largePoints") + }, + incremental: !!n, + ignoreCoarsePointer: !0, + z2: 1 + }); + g.baseDimIdx = a, g.largeDataIndices = o, g.barWidth = l, t.add(g), g.useStyle(i.getVisual("style")), Tn(g).seriesIndex = e.seriesIndex, e.get("silent") || (g.on("mousedown", yoe), g.on("mousemove", yoe)), r && r.push(g); +} +var yoe = gE(function(e) { + var t = this, r = X9e(t, e.offsetX, e.offsetY); + Tn(t).dataIndex = r >= 0 ? r : null; +}, 30, !1); +function X9e(e, t, r) { + for (var n = e.baseDimIdx, i = 1 - n, a = e.shape.points, o = e.largeDataIndices, l = [], u = [], d = e.barWidth, f = 0, g = a.length / 3; f < g; f++) { + var v = f * 3; + if (u[n] = d, u[i] = a[v + 2], l[n] = a[v + n], l[i] = a[v + i], u[i] < 0 && (l[i] += u[i], u[i] = -u[i]), t >= l[0] && t <= l[0] + u[0] && r >= l[1] && r <= l[1] + u[1]) + return o[f]; + } + return -1; +} +function P0e(e, t, r) { + if (PE(r, "cartesian2d")) { + var n = t, i = r.getArea(); + return { + x: e ? n.x : i.x, + y: e ? i.y : n.y, + width: e ? n.width : i.width, + height: e ? i.height : n.height + }; + } else { + var i = r.getArea(), a = t; + return { + cx: i.cx, + cy: i.cy, + r0: e ? i.r0 : a.r0, + r: e ? i.r : a.r, + startAngle: e ? a.startAngle : 0, + endAngle: e ? a.endAngle : Math.PI * 2 + }; + } +} +function K9e(e, t, r) { + var n = e.type === "polar" ? Fu : Xi; + return new n({ + shape: P0e(t, r, e), + silent: !0, + z2: 0 + }); +} +const Z9e = $9e; +function q9e(e) { + e.registerChartView(Z9e), e.registerSeriesModel(N9e), e.registerLayout(e.PRIORITY.VISUAL.LAYOUT, Ln(x_e, "bar")), e.registerLayout(e.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, A_e("bar")), e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC, O0e("bar")), e.registerAction({ + type: "changeAxisOrder", + event: "changeAxisOrder", + update: "update" + }, function(t, r) { + var n = t.componentType || "series"; + r.eachComponent({ + mainType: n, + query: t + }, function(i) { + t.sortInfo && i.axis.setCategorySortInfo(t.sortInfo); + }); + }); +} +var _oe = Math.PI * 2, mP = Math.PI / 180; +function N0e(e, t) { + return js(e.getBoxLayoutParams(), { + width: t.getWidth(), + height: t.getHeight() + }); +} +function L0e(e, t) { + var r = N0e(e, t), n = e.get("center"), i = e.get("radius"); + qt(i) || (i = [0, i]); + var a = yr(r.width, t.getWidth()), o = yr(r.height, t.getHeight()), l = Math.min(a, o), u = yr(i[0], l / 2), d = yr(i[1], l / 2), f, g, v = e.coordinateSystem; + if (v) { + var y = v.dataToPoint(n); + f = y[0] || 0, g = y[1] || 0; + } else + qt(n) || (n = [n, n]), f = yr(n[0], a) + r.x, g = yr(n[1], o) + r.y; + return { + cx: f, + cy: g, + r0: u, + r: d + }; +} +function J9e(e, t, r) { + t.eachSeriesByType(e, function(n) { + var i = n.getData(), a = i.mapDimension("value"), o = N0e(n, r), l = L0e(n, r), u = l.cx, d = l.cy, f = l.r, g = l.r0, v = -n.get("startAngle") * mP, y = n.get("endAngle"), C = n.get("padAngle") * mP; + y = y === "auto" ? v - _oe : -y * mP; + var A = n.get("minAngle") * mP, S = A + C, _ = 0; + i.each(a, function(ae) { + !isNaN(ae) && _++; + }); + var E = i.getSum(a), I = Math.PI / (E || _) * 2, w = n.get("clockwise"), x = n.get("roseType"), b = n.get("stillShowZeroSum"), R = i.getDataExtent(a); + R[0] = 0; + var M = w ? 1 : -1, O = [v, y], P = M * C / 2; + E8(O, !w), v = O[0], y = O[1]; + var B = Math.abs(y - v), H = B, Y = 0, X = v; + if (i.setLayout({ + viewRect: o, + r: f + }), i.each(a, function(ae, J) { + var ne; + if (isNaN(ae)) { + i.setItemLayout(J, { + angle: NaN, + startAngle: NaN, + endAngle: NaN, + clockwise: w, + cx: u, + cy: d, + r0: g, + r: x ? NaN : f + }); + return; + } + x !== "area" ? ne = E === 0 && b ? I : ae * I : ne = B / _, ne < S ? (ne = S, H -= S) : Y += ae; + var fe = X + M * ne, de = 0, Te = 0; + C > ne ? (de = X + M * ne / 2, Te = de) : (de = X + P, Te = fe - P), i.setItemLayout(J, { + angle: ne, + startAngle: de, + endAngle: Te, + clockwise: w, + cx: u, + cy: d, + r0: g, + r: x ? Ea(ae, R, [g, f]) : f + }), X = fe; + }), H < _oe && _) + if (H <= 1e-3) { + var ee = B / _; + i.each(a, function(ae, J) { + if (!isNaN(ae)) { + var ne = i.getItemLayout(J); + ne.angle = ee; + var fe = 0, de = 0; + ee < C ? (fe = v + M * (J + 1 / 2) * ee, de = fe) : (fe = v + M * J * ee + P, de = v + M * (J + 1) * ee - P), ne.startAngle = fe, ne.endAngle = de; + } + }); + } else + I = H / Y, X = v, i.each(a, function(ae, J) { + if (!isNaN(ae)) { + var ne = i.getItemLayout(J), fe = ne.angle === S ? S : ae * I, de = 0, Te = 0; + fe < C ? (de = X + M * fe / 2, Te = de) : (de = X + P, Te = X + M * fe - P), ne.startAngle = de, ne.endAngle = Te, X += M * fe; + } + }); + }); +} +function MD(e) { + return { + seriesType: e, + reset: function(t, r) { + var n = r.findComponents({ + mainType: "legend" + }); + if (!(!n || !n.length)) { + var i = t.getData(); + i.filterSelf(function(a) { + for (var o = i.getName(a), l = 0; l < n.length; l++) + if (!n[l].isSelected(o)) + return !1; + return !0; + }); + } + } + }; +} +var Q9e = Math.PI / 180; +function Soe(e, t, r, n, i, a, o, l, u, d) { + if (e.length < 2) + return; + function f(A) { + for (var S = A.rB, _ = S * S, E = 0; E < A.list.length; E++) { + var I = A.list[E], w = Math.abs(I.label.y - r), x = n + I.len, b = x * x, R = Math.sqrt((1 - Math.abs(w * w / _)) * b), M = t + (R + I.len2) * i, O = M - I.label.x, P = I.targetTextWidth - O * i; + F0e(I, P, !0), I.label.x = M; + } + } + function g(A) { + for (var S = { + list: [], + maxY: 0 + }, _ = { + list: [], + maxY: 0 + }, E = 0; E < A.length; E++) + if (A[E].labelAlignTo === "none") { + var I = A[E], w = I.label.y > r ? _ : S, x = Math.abs(I.label.y - r); + if (x >= w.maxY) { + var b = I.label.x - t - I.len2 * i, R = n + I.len, M = Math.abs(b) < R ? Math.sqrt(x * x / (1 - b * b / R / R)) : R; + w.rB = M, w.maxY = x; + } + w.list.push(I); + } + f(S), f(_); + } + for (var v = e.length, y = 0; y < v; y++) + if (e[y].position === "outer" && e[y].labelAlignTo === "labelLine") { + var C = e[y].label.x - d; + e[y].linePoints[1][0] += C, e[y].label.x = d; + } + i0e(e, u, u + o) && g(e); +} +function eYe(e, t, r, n, i, a, o, l) { + for (var u = [], d = [], f = Number.MAX_VALUE, g = -Number.MAX_VALUE, v = 0; v < e.length; v++) { + var y = e[v].label; + Bz(e[v]) || (y.x < t ? (f = Math.min(f, y.x), u.push(e[v])) : (g = Math.max(g, y.x), d.push(e[v]))); + } + for (var v = 0; v < e.length; v++) { + var C = e[v]; + if (!Bz(C) && C.linePoints) { + if (C.labelStyleWidth != null) + continue; + var y = C.label, A = C.linePoints, S = void 0; + C.labelAlignTo === "edge" ? y.x < t ? S = A[2][0] - C.labelDistance - o - C.edgeDistance : S = o + i - C.edgeDistance - A[2][0] - C.labelDistance : C.labelAlignTo === "labelLine" ? y.x < t ? S = f - o - C.bleedMargin : S = o + i - g - C.bleedMargin : y.x < t ? S = y.x - o - C.bleedMargin : S = o + i - y.x - C.bleedMargin, C.targetTextWidth = S, F0e(C, S); + } + } + Soe(d, t, r, n, 1, i, a, o, l, g), Soe(u, t, r, n, -1, i, a, o, l, f); + for (var v = 0; v < e.length; v++) { + var C = e[v]; + if (!Bz(C) && C.linePoints) { + var y = C.label, A = C.linePoints, _ = C.labelAlignTo === "edge", E = y.style.padding, I = E ? E[1] + E[3] : 0, w = y.style.backgroundColor ? 0 : I, x = C.rect.width + w, b = A[1][0] - A[2][0]; + _ ? y.x < t ? A[2][0] = o + C.edgeDistance + x + C.labelDistance : A[2][0] = o + i - C.edgeDistance - x - C.labelDistance : (y.x < t ? A[2][0] = y.x + C.labelDistance : A[2][0] = y.x - C.labelDistance, A[1][0] = A[2][0] + b), A[1][1] = A[2][1] = y.y; + } + } +} +function F0e(e, t, r) { + if (r === void 0 && (r = !1), e.labelStyleWidth == null) { + var n = e.label, i = n.style, a = e.rect, o = i.backgroundColor, l = i.padding, u = l ? l[1] + l[3] : 0, d = i.overflow, f = a.width + (o ? 0 : u); + if (t < f || r) { + var g = a.height; + if (d && d.match("break")) { + n.setStyle("backgroundColor", null), n.setStyle("width", t - u); + var v = n.getBoundingRect(); + n.setStyle("width", Math.ceil(v.width)), n.setStyle("backgroundColor", o); + } else { + var y = t - u, C = t < f ? y : ( + // Current available width is enough, but the text may have + // already been wrapped with a smaller available width. + r ? y > e.unconstrainedWidth ? null : y : null + ); + n.setStyle("width", C); + } + var A = n.getBoundingRect(); + a.width = A.width; + var S = (n.style.margin || 0) + 2.1; + a.height = A.height + S, a.y -= (a.height - g) / 2; + } + } +} +function Bz(e) { + return e.position === "center"; +} +function tYe(e) { + var t = e.getData(), r = [], n, i, a = !1, o = (e.get("minShowLabelAngle") || 0) * Q9e, l = t.getLayout("viewRect"), u = t.getLayout("r"), d = l.width, f = l.x, g = l.y, v = l.height; + function y(b) { + b.ignore = !0; + } + function C(b) { + if (!b.ignore) + return !0; + for (var R in b.states) + if (b.states[R].ignore === !1) + return !0; + return !1; + } + t.each(function(b) { + var R = t.getItemGraphicEl(b), M = R.shape, O = R.getTextContent(), P = R.getTextGuideLine(), B = t.getItemModel(b), H = B.getModel("label"), Y = H.get("position") || B.get(["emphasis", "label", "position"]), X = H.get("distanceToLabelLine"), ee = H.get("alignTo"), ae = yr(H.get("edgeDistance"), d), J = H.get("bleedMargin"), ne = B.getModel("labelLine"), fe = ne.get("length"); + fe = yr(fe, d); + var de = ne.get("length2"); + if (de = yr(de, d), Math.abs(M.endAngle - M.startAngle) < o) { + Ee(O.states, y), O.ignore = !0, P && (Ee(P.states, y), P.ignore = !0); + return; + } + if (C(O)) { + var Te = (M.startAngle + M.endAngle) / 2, be = Math.cos(Te), Ve = Math.sin(Te), pe, Be, Ue, Qe; + n = M.cx, i = M.cy; + var Re = Y === "inside" || Y === "inner"; + if (Y === "center") + pe = M.cx, Be = M.cy, Qe = "center"; + else { + var Ne = (Re ? (M.r + M.r0) / 2 * be : M.r * be) + n, Me = (Re ? (M.r + M.r0) / 2 * Ve : M.r * Ve) + i; + if (pe = Ne + be * 3, Be = Me + Ve * 3, !Re) { + var we = Ne + be * (fe + u - M.r), He = Me + Ve * (fe + u - M.r), Ie = we + (be < 0 ? -1 : 1) * de, Ae = He; + ee === "edge" ? pe = be < 0 ? f + ae : f + d - ae : pe = Ie + (be < 0 ? -X : X), Be = Ae, Ue = [[Ne, Me], [we, He], [Ie, Ae]]; + } + Qe = Re ? "center" : ee === "edge" ? be > 0 ? "right" : "left" : be > 0 ? "left" : "right"; + } + var Fe = Math.PI, $e = 0, lt = H.get("rotate"); + if (Qi(lt)) + $e = lt * (Fe / 180); + else if (Y === "center") + $e = 0; + else if (lt === "radial" || lt === !0) { + var it = be < 0 ? -Te + Fe : -Te; + $e = it; + } else if (lt === "tangential" && Y !== "outside" && Y !== "outer") { + var nt = Math.atan2(be, Ve); + nt < 0 && (nt = Fe * 2 + nt); + var ut = Ve > 0; + ut && (nt = Fe + nt), $e = nt - Fe; + } + if (a = !!$e, O.x = pe, O.y = Be, O.rotation = $e, O.setStyle({ + verticalAlign: "middle" + }), Re) { + O.setStyle({ + align: Qe + }); + var ze = O.states.select; + ze && (ze.x += O.x, ze.y += O.y); + } else { + var rt = O.getBoundingRect().clone(); + rt.applyTransform(O.getComputedTransform()); + var Ke = (O.style.margin || 0) + 2.1; + rt.y -= Ke / 2, rt.height += Ke, r.push({ + label: O, + labelLine: P, + position: Y, + len: fe, + len2: de, + minTurnAngle: ne.get("minTurnAngle"), + maxSurfaceAngle: ne.get("maxSurfaceAngle"), + surfaceNormal: new ni(be, Ve), + linePoints: Ue, + textAlign: Qe, + labelDistance: X, + labelAlignTo: ee, + edgeDistance: ae, + bleedMargin: J, + rect: rt, + unconstrainedWidth: rt.width, + labelStyleWidth: O.style.width + }); + } + R.setTextConfig({ + inside: Re + }); + } + }), !a && e.get("avoidLabelOverlap") && eYe(r, n, i, u, d, v, f, g); + for (var A = 0; A < r.length; A++) { + var S = r[A], _ = S.label, E = S.labelLine, I = isNaN(_.x) || isNaN(_.y); + if (_) { + _.setStyle({ + align: S.textAlign + }), I && (Ee(_.states, y), _.ignore = !0); + var w = _.states.select; + w && (w.x += _.x, w.y += _.y); + } + if (E) { + var x = S.linePoints; + I || !x ? (Ee(E.states, y), E.ignore = !0) : (t0e(x, S.minTurnAngle), p8e(x, S.surfaceNormal, S.maxSurfaceAngle), E.setShape({ + points: x + }), _.__hostTarget.textGuideLineConfig = { + anchor: new ni(x[0][0], x[0][1]) + }); + } + } +} +var rYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this) || this; + a.z2 = 2; + var o = new Hi(); + return a.setTextContent(o), a.updateData(r, n, i, !0), a; + } + return t.prototype.updateData = function(r, n, i, a) { + var o = this, l = r.hostModel, u = r.getItemModel(n), d = u.getModel("emphasis"), f = r.getItemLayout(n), g = $t(jb(u.getModel("itemStyle"), f, !0), f); + if (isNaN(g.startAngle)) { + o.setShape(g); + return; + } + if (a) { + o.setShape(g); + var v = l.getShallow("animationType"); + l.ecModel.ssr ? (Po(o, { + scaleX: 0, + scaleY: 0 + }, l, { + dataIndex: n, + isFrom: !0 + }), o.originX = g.cx, o.originY = g.cy) : v === "scale" ? (o.shape.r = f.r0, Po(o, { + shape: { + r: f.r + } + }, l, n)) : i != null ? (o.setShape({ + startAngle: i, + endAngle: i + }), Po(o, { + shape: { + startAngle: f.startAngle, + endAngle: f.endAngle + } + }, l, n)) : (o.shape.endAngle = f.startAngle, ia(o, { + shape: { + endAngle: f.endAngle + } + }, l, n)); + } else + Lp(o), ia(o, { + shape: g + }, l, n); + o.useStyle(r.getItemVisual(n, "style")), bc(o, u); + var y = (f.startAngle + f.endAngle) / 2, C = l.get("selectedOffset"), A = Math.cos(y) * C, S = Math.sin(y) * C, _ = u.getShallow("cursor"); + _ && o.attr("cursor", _), this._updateLabel(l, r, n), o.ensureState("emphasis").shape = $t({ + r: f.r + (d.get("scale") && d.get("scaleSize") || 0) + }, jb(d.getModel("itemStyle"), f)), $t(o.ensureState("select"), { + x: A, + y: S, + shape: jb(u.getModel(["select", "itemStyle"]), f) + }), $t(o.ensureState("blur"), { + shape: jb(u.getModel(["blur", "itemStyle"]), f) + }); + var E = o.getTextGuideLine(), I = o.getTextContent(); + E && $t(E.ensureState("select"), { + x: A, + y: S + }), $t(I.ensureState("select"), { + x: A, + y: S + }), xs(this, d.get("focus"), d.get("blurScope"), d.get("disabled")); + }, t.prototype._updateLabel = function(r, n, i) { + var a = this, o = n.getItemModel(i), l = o.getModel("labelLine"), u = n.getItemVisual(i, "style"), d = u && u.fill, f = u && u.opacity; + Ec(a, Ll(o), { + labelFetcher: n.hostModel, + labelDataIndex: i, + inheritColor: d, + defaultOpacity: f, + defaultText: r.getFormattedLabel(i, "normal") || n.getName(i) + }); + var g = a.getTextContent(); + a.setTextConfig({ + // reset position, rotation + position: null, + rotation: null + }), g.attr({ + z2: 10 + }); + var v = r.get(["label", "position"]); + if (v !== "outside" && v !== "outer") + a.removeTextGuideLine(); + else { + var y = this.getTextGuideLine(); + y || (y = new $u(), this.setTextGuideLine(y)), T9(this, w9(o), { + stroke: d, + opacity: Ap(l.get(["lineStyle", "opacity"]), f, 1) + }); + } + }, t; + }(Fu) +), nYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.ignoreLabelLineUpdate = !0, r; + } + return t.prototype.render = function(r, n, i, a) { + var o = r.getData(), l = this._data, u = this.group, d; + if (!l && o.count() > 0) { + for (var f = o.getItemLayout(0), g = 1; isNaN(f && f.startAngle) && g < o.count(); ++g) + f = o.getItemLayout(g); + f && (d = f.startAngle); + } + if (this._emptyCircleSector && u.remove(this._emptyCircleSector), o.count() === 0 && r.get("showEmptyCircle")) { + var v = new Fu({ + shape: L0e(r, i) + }); + v.useStyle(r.getModel("emptyCircleStyle").getItemStyle()), this._emptyCircleSector = v, u.add(v); + } + o.diff(l).add(function(y) { + var C = new rYe(o, y, d); + o.setItemGraphicEl(y, C), u.add(C); + }).update(function(y, C) { + var A = l.getItemGraphicEl(C); + A.updateData(o, y, d), A.off("click"), u.add(A), o.setItemGraphicEl(y, A); + }).remove(function(y) { + var C = l.getItemGraphicEl(y); + mR(C, r, y); + }).execute(), tYe(r), r.get("animationTypeUpdate") !== "expansion" && (this._data = o); + }, t.prototype.dispose = function() { + }, t.prototype.containPoint = function(r, n) { + var i = n.getData(), a = i.getItemLayout(0); + if (a) { + var o = r[0] - a.cx, l = r[1] - a.cy, u = Math.sqrt(o * o + l * l); + return u <= a.r && u >= a.r0; + } + }, t.type = "pie", t; + }(Ya) +); +const iYe = nYe; +function AI(e, t, r) { + t = qt(t) && { + coordDimensions: t + } || $t({ + encodeDefine: e.getEncode() + }, t); + var n = e.getSource(), i = II(n, t).dimensions, a = new Ql(i, e); + return a.initData(n, r), a; +} +var aYe = ( + /** @class */ + function() { + function e(t, r) { + this._getDataWithEncodedVisual = t, this._getRawData = r; + } + return e.prototype.getAllNames = function() { + var t = this._getRawData(); + return t.mapArray(t.getName); + }, e.prototype.containName = function(t) { + var r = this._getRawData(); + return r.indexOfName(t) >= 0; + }, e.prototype.indexOfName = function(t) { + var r = this._getDataWithEncodedVisual(); + return r.indexOfName(t); + }, e.prototype.getItemVisual = function(t, r) { + var n = this._getDataWithEncodedVisual(); + return n.getItemVisual(t, r); + }, e; + }() +); +const kD = aYe; +var oYe = ea(), sYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.init = function(r) { + e.prototype.init.apply(this, arguments), this.legendVisualProvider = new kD(Ar(this.getData, this), Ar(this.getRawData, this)), this._defaultLabelLine(r); + }, t.prototype.mergeOption = function() { + e.prototype.mergeOption.apply(this, arguments); + }, t.prototype.getInitialData = function() { + return AI(this, { + coordDimensions: ["value"], + encodeDefaulter: Ln(H8, this) + }); + }, t.prototype.getDataParams = function(r) { + var n = this.getData(), i = oYe(n), a = i.seats; + if (!a) { + var o = []; + n.each(n.mapDimension("value"), function(u) { + o.push(u); + }), a = i.seats = xve(o, n.hostModel.get("percentPrecision")); + } + var l = e.prototype.getDataParams.call(this, r); + return l.percent = a[r] || 0, l.$vars.push("percent"), l; + }, t.prototype._defaultLabelLine = function(r) { + uE(r, "labelLine", ["show"]); + var n = r.labelLine, i = r.emphasis.labelLine; + n.show = n.show && r.label.show, i.show = i.show && r.emphasis.label.show; + }, t.type = "series.pie", t.defaultOption = { + // zlevel: 0, + z: 2, + legendHoverLink: !0, + colorBy: "data", + // 默认全局居中 + center: ["50%", "50%"], + radius: [0, "75%"], + // 默认顺时针 + clockwise: !0, + startAngle: 90, + endAngle: "auto", + padAngle: 0, + // 最小角度改为0 + minAngle: 0, + // If the angle of a sector less than `minShowLabelAngle`, + // the label will not be displayed. + minShowLabelAngle: 0, + // 选中时扇区偏移量 + selectedOffset: 10, + // 选择模式,默认关闭,可选single,multiple + // selectedMode: false, + // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积) + // roseType: null, + percentPrecision: 2, + // If still show when all data zero. + stillShowZeroSum: !0, + // cursor: null, + left: 0, + top: 0, + right: 0, + bottom: 0, + width: null, + height: null, + label: { + // color: 'inherit', + // If rotate around circle + rotate: 0, + show: !0, + overflow: "truncate", + // 'outer', 'inside', 'center' + position: "outer", + // 'none', 'labelLine', 'edge'. Works only when position is 'outer' + alignTo: "none", + // Closest distance between label and chart edge. + // Works only position is 'outer' and alignTo is 'edge'. + edgeDistance: "25%", + // Works only position is 'outer' and alignTo is not 'edge'. + bleedMargin: 10, + // Distance between text and label line. + distanceToLabelLine: 5 + // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调 + // 默认使用全局文本样式,详见 textStyle + // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数 + }, + // Enabled when label.normal.position is 'outer' + labelLine: { + show: !0, + // 引导线两段中的第一段长度 + length: 15, + // 引导线两段中的第二段长度 + length2: 15, + smooth: !1, + minTurnAngle: 90, + maxSurfaceAngle: 90, + lineStyle: { + // color: 各异, + width: 1, + type: "solid" + } + }, + itemStyle: { + borderWidth: 1, + borderJoin: "round" + }, + showEmptyCircle: !0, + emptyCircleStyle: { + color: "lightgray", + opacity: 1 + }, + labelLayout: { + // Hide the overlapped label. + hideOverlap: !0 + }, + emphasis: { + scale: !0, + scaleSize: 5 + }, + // If use strategy to avoid label overlapping + avoidLabelOverlap: !0, + // Animation type. Valid values: expansion, scale + animationType: "expansion", + animationDuration: 1e3, + // Animation type when update. Valid values: transition, expansion + animationTypeUpdate: "transition", + animationEasingUpdate: "cubicInOut", + animationDurationUpdate: 500, + animationEasing: "cubicInOut" + }, t; + }(fo) +); +const lYe = sYe; +function cYe(e) { + return { + seriesType: e, + reset: function(t, r) { + var n = t.getData(); + n.filterSelf(function(i) { + var a = n.mapDimension("value"), o = n.get(a, i); + return !(Qi(o) && !isNaN(o) && o < 0); + }); + } + }; +} +function uYe(e) { + e.registerChartView(iYe), e.registerSeriesModel(lYe), Uye("pie", e.registerAction), e.registerLayout(Ln(J9e, "pie")), e.registerProcessor(MD("pie")), e.registerProcessor(cYe("pie")); +} +var hYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.hasSymbolVisual = !0, r; + } + return t.prototype.getInitialData = function(r, n) { + return fv(null, this, { + useEncodeDefaulter: !0 + }); + }, t.prototype.getProgressive = function() { + var r = this.option.progressive; + return r == null ? this.option.large ? 5e3 : this.get("progressive") : r; + }, t.prototype.getProgressiveThreshold = function() { + var r = this.option.progressiveThreshold; + return r == null ? this.option.large ? 1e4 : this.get("progressiveThreshold") : r; + }, t.prototype.brushSelector = function(r, n, i) { + return i.point(n.getItemLayout(r)); + }, t.prototype.getZLevelKey = function() { + return this.getData().count() > this.getProgressiveThreshold() ? this.id : ""; + }, t.type = "series.scatter", t.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], t.defaultOption = { + coordinateSystem: "cartesian2d", + // zlevel: 0, + z: 2, + legendHoverLink: !0, + symbolSize: 10, + // symbolRotate: null, // 图形旋转控制 + large: !1, + // Available when large is true + largeThreshold: 2e3, + // cursor: null, + itemStyle: { + opacity: 0.8 + // color: 各异 + }, + emphasis: { + scale: !0 + }, + // If clip the overflow graphics + // Works on cartesian / polar series + clip: !0, + select: { + itemStyle: { + borderColor: "#212121" + } + }, + universalTransition: { + divideShape: "clone" + } + // progressive: null + }, t; + }(fo) +); +const dYe = hYe; +var B0e = 4, fYe = ( + /** @class */ + function() { + function e() { + } + return e; + }() +), pYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n._off = 0, n.hoverDataIdx = -1, n; + } + return t.prototype.getDefaultShape = function() { + return new fYe(); + }, t.prototype.reset = function() { + this.notClear = !1, this._off = 0; + }, t.prototype.buildPath = function(r, n) { + var i = n.points, a = n.size, o = this.symbolProxy, l = o.shape, u = r.getContext ? r.getContext() : r, d = u && a[0] < B0e, f = this.softClipShape, g; + if (d) { + this._ctx = u; + return; + } + for (this._ctx = null, g = this._off; g < i.length; ) { + var v = i[g++], y = i[g++]; + isNaN(v) || isNaN(y) || f && !f.contain(v, y) || (l.x = v - a[0] / 2, l.y = y - a[1] / 2, l.width = a[0], l.height = a[1], o.buildPath(r, l, !0)); + } + this.incremental && (this._off = g, this.notClear = !0); + }, t.prototype.afterBrush = function() { + var r = this.shape, n = r.points, i = r.size, a = this._ctx, o = this.softClipShape, l; + if (a) { + for (l = this._off; l < n.length; ) { + var u = n[l++], d = n[l++]; + isNaN(u) || isNaN(d) || o && !o.contain(u, d) || a.fillRect(u - i[0] / 2, d - i[1] / 2, i[0], i[1]); + } + this.incremental && (this._off = l, this.notClear = !0); + } + }, t.prototype.findDataIndex = function(r, n) { + for (var i = this.shape, a = i.points, o = i.size, l = Math.max(o[0], 4), u = Math.max(o[1], 4), d = a.length / 2 - 1; d >= 0; d--) { + var f = d * 2, g = a[f] - l / 2, v = a[f + 1] - u / 2; + if (r >= g && n >= v && r <= g + l && n <= v + u) + return d; + } + return -1; + }, t.prototype.contain = function(r, n) { + var i = this.transformCoordToLocal(r, n), a = this.getBoundingRect(); + if (r = i[0], n = i[1], a.contain(r, n)) { + var o = this.hoverDataIdx = this.findDataIndex(r, n); + return o >= 0; + } + return this.hoverDataIdx = -1, !1; + }, t.prototype.getBoundingRect = function() { + var r = this._rect; + if (!r) { + for (var n = this.shape, i = n.points, a = n.size, o = a[0], l = a[1], u = 1 / 0, d = 1 / 0, f = -1 / 0, g = -1 / 0, v = 0; v < i.length; ) { + var y = i[v++], C = i[v++]; + u = Math.min(y, u), f = Math.max(y, f), d = Math.min(C, d), g = Math.max(C, g); + } + r = this._rect = new ei(u - o / 2, d - l / 2, f - u + o, g - d + l); + } + return r; + }, t; + }(Ei) +), gYe = ( + /** @class */ + function() { + function e() { + this.group = new _n(); + } + return e.prototype.updateData = function(t, r) { + this._clear(); + var n = this._create(); + n.setShape({ + points: t.getLayout("points") + }), this._setCommon(n, t, r); + }, e.prototype.updateLayout = function(t) { + var r = t.getLayout("points"); + this.group.eachChild(function(n) { + if (n.startIndex != null) { + var i = (n.endIndex - n.startIndex) * 2, a = n.startIndex * 4 * 2; + r = new Float32Array(r.buffer, a, i); + } + n.setShape("points", r), n.reset(); + }); + }, e.prototype.incrementalPrepareUpdate = function(t) { + this._clear(); + }, e.prototype.incrementalUpdate = function(t, r, n) { + var i = this._newAdded[0], a = r.getLayout("points"), o = i && i.shape.points; + if (o && o.length < 2e4) { + var l = o.length, u = new Float32Array(l + a.length); + u.set(o), u.set(a, l), i.endIndex = t.end, i.setShape({ + points: u + }); + } else { + this._newAdded = []; + var d = this._create(); + d.startIndex = t.start, d.endIndex = t.end, d.incremental = !0, d.setShape({ + points: a + }), this._setCommon(d, r, n); + } + }, e.prototype.eachRendered = function(t) { + this._newAdded[0] && t(this._newAdded[0]); + }, e.prototype._create = function() { + var t = new pYe({ + cursor: "default" + }); + return t.ignoreCoarsePointer = !0, this.group.add(t), this._newAdded.push(t), t; + }, e.prototype._setCommon = function(t, r, n) { + var i = r.hostModel; + n = n || {}; + var a = r.getVisual("symbolSize"); + t.setShape("size", a instanceof Array ? a : [a, a]), t.softClipShape = n.clipShape || null, t.symbolProxy = $s(r.getVisual("symbol"), 0, 0, 0, 0), t.setColor = t.symbolProxy.setColor; + var o = t.shape.size[0] < B0e; + t.useStyle( + // Draw shadow when doing fillRect is extremely slow. + i.getModel("itemStyle").getItemStyle(o ? ["color", "shadowBlur", "shadowColor"] : ["color"]) + ); + var l = r.getVisual("style"), u = l && l.fill; + u && t.setColor(u); + var d = Tn(t); + d.seriesIndex = i.seriesIndex, t.on("mousemove", function(f) { + d.dataIndex = null; + var g = t.hoverDataIdx; + g >= 0 && (d.dataIndex = g + (t.startIndex || 0)); + }); + }, e.prototype.remove = function() { + this._clear(); + }, e.prototype._clear = function() { + this._newAdded = [], this.group.removeAll(); + }, e; + }() +); +const vYe = gYe; +var mYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = r.getData(), o = this._updateSymbolDraw(a, r); + o.updateData(a, { + // TODO + // If this parameter should be a shape or a bounding volume + // shape will be more general. + // But bounding volume like bounding rect will be much faster in the contain calculation + clipShape: this._getClipShape(r) + }), this._finished = !0; + }, t.prototype.incrementalPrepareRender = function(r, n, i) { + var a = r.getData(), o = this._updateSymbolDraw(a, r); + o.incrementalPrepareUpdate(a), this._finished = !1; + }, t.prototype.incrementalRender = function(r, n, i) { + this._symbolDraw.incrementalUpdate(r, n.getData(), { + clipShape: this._getClipShape(n) + }), this._finished = r.end === n.getData().count(); + }, t.prototype.updateTransform = function(r, n, i) { + var a = r.getData(); + if (this.group.dirty(), !this._finished || a.count() > 1e4) + return { + update: !0 + }; + var o = OD("").reset(r, n, i); + o.progress && o.progress({ + start: 0, + end: a.count(), + count: a.count() + }, a), this._symbolDraw.updateLayout(a); + }, t.prototype.eachRendered = function(r) { + this._symbolDraw && this._symbolDraw.eachRendered(r); + }, t.prototype._getClipShape = function(r) { + if (r.get("clip", !0)) { + var n = r.coordinateSystem; + return n && n.getArea && n.getArea(0.1); + } + }, t.prototype._updateSymbolDraw = function(r, n) { + var i = this._symbolDraw, a = n.pipelineContext, o = a.large; + return (!i || o !== this._isLargeDraw) && (i && i.remove(), i = this._symbolDraw = o ? new vYe() : new RD(), this._isLargeDraw = o, this.group.removeAll()), this.group.add(i.group), i; + }, t.prototype.remove = function(r, n) { + this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null; + }, t.prototype.dispose = function() { + }, t.type = "scatter", t; + }(Ya) +); +const yYe = mYe; +var _Ye = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.type = "grid", t.dependencies = ["xAxis", "yAxis"], t.layoutMode = "box", t.defaultOption = { + show: !1, + // zlevel: 0, + z: 0, + left: "10%", + top: 60, + right: "10%", + bottom: 70, + // If grid size contain label + containLabel: !1, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + backgroundColor: "rgba(0,0,0,0)", + borderWidth: 1, + borderColor: "#ccc" + }, t; + }(Mi) +); +const SYe = _Ye; +var IW = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.getCoordSysModel = function() { + return this.getReferringComponents("grid", tl).models[0]; + }, t.type = "cartesian2dAxis", t; + }(Mi) +); +Fs(IW, xI); +var U0e = { + show: !0, + // zlevel: 0, + z: 0, + // Inverse the axis. + inverse: !1, + // Axis name displayed. + name: "", + // 'start' | 'middle' | 'end' + nameLocation: "end", + // By degree. By default auto rotate by nameLocation. + nameRotate: null, + nameTruncate: { + maxWidth: null, + ellipsis: "...", + placeholder: "." + }, + // Use global text style by default. + nameTextStyle: {}, + // The gap between axisName and axisLine. + nameGap: 15, + // Default `false` to support tooltip. + silent: !1, + // Default `false` to avoid legacy user event listener fail. + triggerEvent: !1, + tooltip: { + show: !1 + }, + axisPointer: {}, + axisLine: { + show: !0, + onZero: !0, + onZeroAxisIndex: null, + lineStyle: { + color: "#6E7079", + width: 1, + type: "solid" + }, + // The arrow at both ends the the axis. + symbol: ["none", "none"], + symbolSize: [10, 15] + }, + axisTick: { + show: !0, + // Whether axisTick is inside the grid or outside the grid. + inside: !1, + // The length of axisTick. + length: 5, + lineStyle: { + width: 1 + } + }, + axisLabel: { + show: !0, + // Whether axisLabel is inside the grid or outside the grid. + inside: !1, + rotate: 0, + // true | false | null/undefined (auto) + showMinLabel: null, + // true | false | null/undefined (auto) + showMaxLabel: null, + margin: 8, + // formatter: null, + fontSize: 12 + }, + splitLine: { + show: !0, + lineStyle: { + color: ["#E0E6F1"], + width: 1, + type: "solid" + } + }, + splitArea: { + show: !1, + areaStyle: { + color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"] + } + } +}, bYe = Qn({ + // The gap at both ends of the axis. For categoryAxis, boolean. + boundaryGap: !0, + // Set false to faster category collection. + deduplication: null, + // splitArea: { + // show: false + // }, + splitLine: { + show: !1 + }, + axisTick: { + // If tick is align with label when boundaryGap is true + alignWithLabel: !1, + interval: "auto" + }, + axisLabel: { + interval: "auto" + } +}, U0e), O9 = Qn({ + boundaryGap: [0, 0], + axisLine: { + // Not shown when other axis is categoryAxis in cartesian + show: "auto" + }, + axisTick: { + // Not shown when other axis is categoryAxis in cartesian + show: "auto" + }, + // TODO + // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60] + splitNumber: 5, + minorTick: { + // Minor tick, not available for cateogry axis. + show: !1, + // Split number of minor ticks. The value should be in range of (0, 100) + splitNumber: 5, + // Length of minor tick + length: 3, + // Line style + lineStyle: { + // Default to be same with axisTick + } + }, + minorSplitLine: { + show: !1, + lineStyle: { + color: "#F4F7FD", + width: 1 + } + } +}, U0e), EYe = Qn({ + splitNumber: 6, + axisLabel: { + // To eliminate labels that are not nice + showMinLabel: !1, + showMaxLabel: !1, + rich: { + primary: { + fontWeight: "bold" + } + } + }, + splitLine: { + show: !1 + } +}, O9), CYe = Jr({ + logBase: 10 +}, O9); +const j0e = { + category: bYe, + value: O9, + time: EYe, + log: CYe +}; +var TYe = { + value: 1, + category: 1, + time: 1, + log: 1 +}; +function Hw(e, t, r, n) { + Ee(TYe, function(i, a) { + var o = Qn(Qn({}, j0e[a], !0), n, !0), l = ( + /** @class */ + function(u) { + Dt(d, u); + function d() { + var f = u !== null && u.apply(this, arguments) || this; + return f.type = t + "Axis." + a, f; + } + return d.prototype.mergeDefaultAndTheme = function(f, g) { + var v = _R(this), y = v ? _I(f) : {}, C = g.getTheme(); + Qn(f, C.get(a + "Axis")), Qn(f, this.getDefaultOption()), f.type = boe(f), v && m0(f, y, v); + }, d.prototype.optionUpdated = function() { + var f = this.option; + f.type === "category" && (this.__ordinalMeta = _W.createByAxisModel(this)); + }, d.prototype.getCategories = function(f) { + var g = this.option; + if (g.type === "category") + return f ? g.data : this.__ordinalMeta.categories; + }, d.prototype.getOrdinalMeta = function() { + return this.__ordinalMeta; + }, d.type = t + "Axis." + a, d.defaultOption = o, d; + }(r) + ); + e.registerComponentModel(l); + }), e.registerSubTypeDefaulter(t + "Axis", boe); +} +function boe(e) { + return e.type || (e.data ? "category" : "value"); +} +var wYe = ( + /** @class */ + function() { + function e(t) { + this.type = "cartesian", this._dimList = [], this._axes = {}, this.name = t || ""; + } + return e.prototype.getAxis = function(t) { + return this._axes[t]; + }, e.prototype.getAxes = function() { + return er(this._dimList, function(t) { + return this._axes[t]; + }, this); + }, e.prototype.getAxesByScale = function(t) { + return t = t.toLowerCase(), Ma(this.getAxes(), function(r) { + return r.scale.type === t; + }); + }, e.prototype.addAxis = function(t) { + var r = t.dim; + this._axes[r] = t, this._dimList.push(r); + }, e; + }() +); +const IYe = wYe; +var xW = ["x", "y"]; +function Eoe(e) { + return e.type === "interval" || e.type === "time"; +} +var xYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "cartesian2d", r.dimensions = xW, r; + } + return t.prototype.calcAffineTransform = function() { + this._transform = this._invTransform = null; + var r = this.getAxis("x").scale, n = this.getAxis("y").scale; + if (!(!Eoe(r) || !Eoe(n))) { + var i = r.getExtent(), a = n.getExtent(), o = this.dataToPoint([i[0], a[0]]), l = this.dataToPoint([i[1], a[1]]), u = i[1] - i[0], d = a[1] - a[0]; + if (!(!u || !d)) { + var f = (l[0] - o[0]) / u, g = (l[1] - o[1]) / d, v = o[0] - i[0] * f, y = o[1] - a[0] * g, C = this._transform = [f, 0, 0, g, v, y]; + this._invTransform = RE([], C); + } + } + }, t.prototype.getBaseAxis = function() { + return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x"); + }, t.prototype.containPoint = function(r) { + var n = this.getAxis("x"), i = this.getAxis("y"); + return n.contain(n.toLocalCoord(r[0])) && i.contain(i.toLocalCoord(r[1])); + }, t.prototype.containData = function(r) { + return this.getAxis("x").containData(r[0]) && this.getAxis("y").containData(r[1]); + }, t.prototype.containZone = function(r, n) { + var i = this.dataToPoint(r), a = this.dataToPoint(n), o = this.getArea(), l = new ei(i[0], i[1], a[0] - i[0], a[1] - i[1]); + return o.intersect(l); + }, t.prototype.dataToPoint = function(r, n, i) { + i = i || []; + var a = r[0], o = r[1]; + if (this._transform && a != null && isFinite(a) && o != null && isFinite(o)) + return Jl(i, r, this._transform); + var l = this.getAxis("x"), u = this.getAxis("y"); + return i[0] = l.toGlobalCoord(l.dataToCoord(a, n)), i[1] = u.toGlobalCoord(u.dataToCoord(o, n)), i; + }, t.prototype.clampData = function(r, n) { + var i = this.getAxis("x").scale, a = this.getAxis("y").scale, o = i.getExtent(), l = a.getExtent(), u = i.parse(r[0]), d = a.parse(r[1]); + return n = n || [], n[0] = Math.min(Math.max(Math.min(o[0], o[1]), u), Math.max(o[0], o[1])), n[1] = Math.min(Math.max(Math.min(l[0], l[1]), d), Math.max(l[0], l[1])), n; + }, t.prototype.pointToData = function(r, n) { + var i = []; + if (this._invTransform) + return Jl(i, r, this._invTransform); + var a = this.getAxis("x"), o = this.getAxis("y"); + return i[0] = a.coordToData(a.toLocalCoord(r[0]), n), i[1] = o.coordToData(o.toLocalCoord(r[1]), n), i; + }, t.prototype.getOtherAxis = function(r) { + return this.getAxis(r.dim === "x" ? "y" : "x"); + }, t.prototype.getArea = function(r) { + r = r || 0; + var n = this.getAxis("x").getGlobalExtent(), i = this.getAxis("y").getGlobalExtent(), a = Math.min(n[0], n[1]) - r, o = Math.min(i[0], i[1]) - r, l = Math.max(n[0], n[1]) - a + r, u = Math.max(i[0], i[1]) - o + r; + return new ei(a, o, l, u); + }, t; + }(IYe) +), AYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i, a, o) { + var l = e.call(this, r, n, i) || this; + return l.index = 0, l.type = a || "value", l.position = o || "bottom", l; + } + return t.prototype.isHorizontal = function() { + var r = this.position; + return r === "top" || r === "bottom"; + }, t.prototype.getGlobalExtent = function(r) { + var n = this.getExtent(); + return n[0] = this.toGlobalCoord(n[0]), n[1] = this.toGlobalCoord(n[1]), r && n[0] > n[1] && n.reverse(), n; + }, t.prototype.pointToData = function(r, n) { + return this.coordToData(this.toLocalCoord(r[this.dim === "x" ? 0 : 1]), n); + }, t.prototype.setCategorySortInfo = function(r) { + if (this.type !== "category") + return !1; + this.model.option.categorySortInfo = r, this.scale.setSortInfo(r); + }, t; + }(Ed) +); +const RYe = AYe; +function AW(e, t, r) { + r = r || {}; + var n = e.coordinateSystem, i = t.axis, a = {}, o = i.getAxesOnZeroOf()[0], l = i.position, u = o ? "onZero" : l, d = i.dim, f = n.getRect(), g = [f.x, f.x + f.width, f.y, f.y + f.height], v = { + left: 0, + right: 1, + top: 0, + bottom: 1, + onZero: 2 + }, y = t.get("offset") || 0, C = d === "x" ? [g[2] - y, g[3] + y] : [g[0] - y, g[1] + y]; + if (o) { + var A = o.toGlobalCoord(o.dataToCoord(0)); + C[v.onZero] = Math.max(Math.min(A, C[1]), C[0]); + } + a.position = [d === "y" ? C[v[u]] : g[0], d === "x" ? C[v[u]] : g[3]], a.rotation = Math.PI / 2 * (d === "x" ? 0 : 1); + var S = { + top: -1, + bottom: 1, + left: -1, + right: 1 + }; + a.labelDirection = a.tickDirection = a.nameDirection = S[l], a.labelOffset = o ? C[v[l]] - C[v.onZero] : 0, t.get(["axisTick", "inside"]) && (a.tickDirection = -a.tickDirection), kl(r.labelInside, t.get(["axisLabel", "inside"])) && (a.labelDirection = -a.labelDirection); + var _ = t.get(["axisLabel", "rotate"]); + return a.labelRotate = u === "top" ? -_ : _, a.z2 = 1, a; +} +function Coe(e) { + return e.get("coordinateSystem") === "cartesian2d"; +} +function Toe(e) { + var t = { + xAxisModel: null, + yAxisModel: null + }; + return Ee(t, function(r, n) { + var i = n.replace(/Model$/, ""), a = e.getReferringComponents(i, tl).models[0]; + t[n] = a; + }), t; +} +var Uz = Math.log; +function $0e(e, t, r) { + var n = y0.prototype, i = n.getTicks.call(r), a = n.getTicks.call(r, !0), o = i.length - 1, l = n.getInterval.call(r), u = N_e(e, t), d = u.extent, f = u.fixMin, g = u.fixMax; + if (e.type === "log") { + var v = Uz(e.base); + d = [Uz(d[0]) / v, Uz(d[1]) / v]; + } + e.setExtent(d[0], d[1]), e.calcNiceExtent({ + splitNumber: o, + fixMin: f, + fixMax: g + }); + var y = n.getExtent.call(e); + f && (d[0] = y[0]), g && (d[1] = y[1]); + var C = n.getInterval.call(e), A = d[0], S = d[1]; + if (f && g) + C = (S - A) / o; + else if (f) + for (S = d[0] + C * o; S < d[1] && isFinite(S) && isFinite(d[1]); ) + C = Tz(C), S = d[0] + C * o; + else if (g) + for (A = d[1] - C * o; A > d[0] && isFinite(A) && isFinite(d[0]); ) + C = Tz(C), A = d[1] - C * o; + else { + var _ = e.getTicks().length - 1; + _ > o && (C = Tz(C)); + var E = C * o; + S = Math.ceil(d[1] / C) * C, A = Is(S - E), A < 0 && d[0] >= 0 ? (A = 0, S = Is(E)) : S > 0 && d[1] <= 0 && (S = 0, A = -Is(E)); + } + var I = (i[0].value - a[0].value) / l, w = (i[o].value - a[o].value) / l; + n.setExtent.call(e, A + C * I, S + C * w), n.setInterval.call(e, C), (I || w) && n.setNiceExtent.call(e, A + C, S - C); +} +var DYe = ( + /** @class */ + function() { + function e(t, r, n) { + this.type = "grid", this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this.axisPointerEnabled = !0, this.dimensions = xW, this._initCartesian(t, r, n), this.model = t; + } + return e.prototype.getRect = function() { + return this._rect; + }, e.prototype.update = function(t, r) { + var n = this._axesMap; + this._updateScale(t, this.model); + function i(o) { + var l, u = Ri(o), d = u.length; + if (d) { + for (var f = [], g = d - 1; g >= 0; g--) { + var v = +u[g], y = o[v], C = y.model, A = y.scale; + // Only value and log axis without interval support alignTicks. + SW(A) && C.get("alignTicks") && C.get("interval") == null ? f.push(y) : (vE(A, C), SW(A) && (l = y)); + } + f.length && (l || (l = f.pop(), vE(l.scale, l.model)), Ee(f, function(S) { + $0e(S.scale, S.model, l.scale); + })); + } + } + i(n.x), i(n.y); + var a = {}; + Ee(n.x, function(o) { + woe(n, "y", o, a); + }), Ee(n.y, function(o) { + woe(n, "x", o, a); + }), this.resize(this.model, r); + }, e.prototype.resize = function(t, r, n) { + var i = t.getBoxLayoutParams(), a = !n && t.get("containLabel"), o = js(i, { + width: r.getWidth(), + height: r.getHeight() + }); + this._rect = o; + var l = this._axesList; + u(), a && (Ee(l, function(d) { + if (!d.model.get(["axisLabel", "inside"])) { + var f = $6e(d); + if (f) { + var g = d.isHorizontal() ? "height" : "width", v = d.model.get(["axisLabel", "margin"]); + o[g] -= f[g] + v, d.position === "top" ? o.y += f.height + v : d.position === "left" && (o.x += f.width + v); + } + } + }), u()), Ee(this._coordsList, function(d) { + d.calcAffineTransform(); + }); + function u() { + Ee(l, function(d) { + var f = d.isHorizontal(), g = f ? [0, o.width] : [0, o.height], v = d.inverse ? 1 : 0; + d.setExtent(g[v], g[1 - v]), OYe(d, f ? o.x : o.y); + }); + } + }, e.prototype.getAxis = function(t, r) { + var n = this._axesMap[t]; + if (n != null) + return n[r || 0]; + }, e.prototype.getAxes = function() { + return this._axesList.slice(); + }, e.prototype.getCartesian = function(t, r) { + if (t != null && r != null) { + var n = "x" + t + "y" + r; + return this._coordsMap[n]; + } + sn(t) && (r = t.yAxisIndex, t = t.xAxisIndex); + for (var i = 0, a = this._coordsList; i < a.length; i++) + if (a[i].getAxis("x").index === t || a[i].getAxis("y").index === r) + return a[i]; + }, e.prototype.getCartesians = function() { + return this._coordsList.slice(); + }, e.prototype.convertToPixel = function(t, r, n) { + var i = this._findConvertTarget(r); + return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null; + }, e.prototype.convertFromPixel = function(t, r, n) { + var i = this._findConvertTarget(r); + return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null; + }, e.prototype._findConvertTarget = function(t) { + var r = t.seriesModel, n = t.xAxisModel || r && r.getReferringComponents("xAxis", tl).models[0], i = t.yAxisModel || r && r.getReferringComponents("yAxis", tl).models[0], a = t.gridModel, o = this._coordsList, l, u; + if (r) + l = r.coordinateSystem, di(o, l) < 0 && (l = null); + else if (n && i) + l = this.getCartesian(n.componentIndex, i.componentIndex); + else if (n) + u = this.getAxis("x", n.componentIndex); + else if (i) + u = this.getAxis("y", i.componentIndex); + else if (a) { + var d = a.coordinateSystem; + d === this && (l = this._coordsList[0]); + } + return { + cartesian: l, + axis: u + }; + }, e.prototype.containPoint = function(t) { + var r = this._coordsList[0]; + if (r) + return r.containPoint(t); + }, e.prototype._initCartesian = function(t, r, n) { + var i = this, a = this, o = { + left: !1, + right: !1, + top: !1, + bottom: !1 + }, l = { + x: {}, + y: {} + }, u = { + x: 0, + y: 0 + }; + if (r.eachComponent("xAxis", d("x"), this), r.eachComponent("yAxis", d("y"), this), !u.x || !u.y) { + this._axesMap = {}, this._axesList = []; + return; + } + this._axesMap = l, Ee(l.x, function(f, g) { + Ee(l.y, function(v, y) { + var C = "x" + g + "y" + y, A = new xYe(C); + A.master = i, A.model = t, i._coordsMap[C] = A, i._coordsList.push(A), A.addAxis(f), A.addAxis(v); + }); + }); + function d(f) { + return function(g, v) { + if (jz(g, t)) { + var y = g.get("position"); + f === "x" ? y !== "top" && y !== "bottom" && (y = o.bottom ? "top" : "bottom") : y !== "left" && y !== "right" && (y = o.left ? "right" : "left"), o[y] = !0; + var C = new RYe(f, ID(g), [0, 0], g.get("type"), y), A = C.type === "category"; + C.onBand = A && g.get("boundaryGap"), C.inverse = g.get("inverse"), g.axis = C, C.model = g, C.grid = a, C.index = v, a._axesList.push(C), l[f][v] = C, u[f]++; + } + }; + } + }, e.prototype._updateScale = function(t, r) { + Ee(this._axesList, function(i) { + if (i.scale.setExtent(1 / 0, -1 / 0), i.type === "category") { + var a = i.model.get("categorySortInfo"); + i.scale.setSortInfo(a); + } + }), t.eachSeries(function(i) { + if (Coe(i)) { + var a = Toe(i), o = a.xAxisModel, l = a.yAxisModel; + if (!jz(o, r) || !jz(l, r)) + return; + var u = this.getCartesian(o.componentIndex, l.componentIndex), d = i.getData(), f = u.getAxis("x"), g = u.getAxis("y"); + n(d, f), n(d, g); + } + }, this); + function n(i, a) { + Ee(jL(i, a.dim), function(o) { + a.scale.unionExtentFromData(i, o); + }); + } + }, e.prototype.getTooltipAxes = function(t) { + var r = [], n = []; + return Ee(this.getCartesians(), function(i) { + var a = t != null && t !== "auto" ? i.getAxis(t) : i.getBaseAxis(), o = i.getOtherAxis(a); + di(r, a) < 0 && r.push(a), di(n, o) < 0 && n.push(o); + }), { + baseAxes: r, + otherAxes: n + }; + }, e.create = function(t, r) { + var n = []; + return t.eachComponent("grid", function(i, a) { + var o = new e(i, t, r); + o.name = "grid_" + a, o.resize(i, r, !0), i.coordinateSystem = o, n.push(o); + }), t.eachSeries(function(i) { + if (Coe(i)) { + var a = Toe(i), o = a.xAxisModel, l = a.yAxisModel, u = o.getCoordSysModel(), d = u.coordinateSystem; + i.coordinateSystem = d.getCartesian(o.componentIndex, l.componentIndex); + } + }), n; + }, e.dimensions = xW, e; + }() +); +function jz(e, t) { + return e.getCoordSysModel() === t; +} +function woe(e, t, r, n) { + r.getAxesOnZeroOf = function() { + return a ? [a] : []; + }; + var i = e[t], a, o = r.model, l = o.get(["axisLine", "onZero"]), u = o.get(["axisLine", "onZeroAxisIndex"]); + if (!l) + return; + if (u != null) + Ioe(i[u]) && (a = i[u]); + else + for (var d in i) + if (i.hasOwnProperty(d) && Ioe(i[d]) && !n[f(i[d])]) { + a = i[d]; + break; + } + a && (n[f(a)] = !0); + function f(g) { + return g.dim + "_" + g.index; + } +} +function Ioe(e) { + return e && e.type !== "category" && e.type !== "time" && j6e(e); +} +function OYe(e, t) { + var r = e.getExtent(), n = r[0] + r[1]; + e.toGlobalCoord = e.dim === "x" ? function(i) { + return i + t; + } : function(i) { + return n - i + t; + }, e.toLocalCoord = e.dim === "x" ? function(i) { + return i - t; + } : function(i) { + return n - i + t; + }; +} +const MYe = DYe; +var q_ = Math.PI, Jb = ( + /** @class */ + function() { + function e(t, r) { + this.group = new _n(), this.opt = r, this.axisModel = t, Jr(r, { + labelOffset: 0, + nameDirection: 1, + tickDirection: 1, + labelDirection: 1, + silent: !0, + handleAutoShown: function() { + return !0; + } + }); + var n = new _n({ + x: r.position[0], + y: r.position[1], + rotation: r.rotation + }); + n.updateTransform(), this._transformGroup = n; + } + return e.prototype.hasBuilder = function(t) { + return !!xoe[t]; + }, e.prototype.add = function(t) { + xoe[t](this.opt, this.axisModel, this.group, this._transformGroup); + }, e.prototype.getGroup = function() { + return this.group; + }, e.innerTextLayout = function(t, r, n) { + var i = g8(r - t), a, o; + return Uw(i) ? (o = n > 0 ? "top" : "bottom", a = "center") : Uw(i - q_) ? (o = n > 0 ? "bottom" : "top", a = "center") : (o = "middle", i > 0 && i < q_ ? a = n > 0 ? "right" : "left" : a = n > 0 ? "left" : "right"), { + rotation: i, + textAlign: a, + textVerticalAlign: o + }; + }, e.makeAxisEventDataBase = function(t) { + var r = { + componentType: t.mainType, + componentIndex: t.componentIndex + }; + return r[t.mainType + "Index"] = t.componentIndex, r; + }, e.isLabelSilent = function(t) { + var r = t.get("tooltip"); + return t.get("silent") || !(t.get("triggerEvent") || r && r.show); + }, e; + }() +), xoe = { + axisLine: function(e, t, r, n) { + var i = t.get(["axisLine", "show"]); + if (i === "auto" && e.handleAutoShown && (i = e.handleAutoShown("axisLine")), !!i) { + var a = t.axis.getExtent(), o = n.transform, l = [a[0], 0], u = [a[1], 0], d = l[0] > u[0]; + o && (Jl(l, l, o), Jl(u, u, o)); + var f = $t({ + lineCap: "round" + }, t.getModel(["axisLine", "lineStyle"]).getLineStyle()), g = new Pl({ + shape: { + x1: l[0], + y1: l[1], + x2: u[0], + y2: u[1] + }, + style: f, + strokeContainThreshold: e.strokeContainThreshold || 5, + silent: !0, + z2: 1 + }); + jw(g.shape, g.style.lineWidth), g.anid = "line", r.add(g); + var v = t.get(["axisLine", "symbol"]); + if (v != null) { + var y = t.get(["axisLine", "symbolSize"]); + wr(v) && (v = [v, v]), (wr(y) || Qi(y)) && (y = [y, y]); + var C = kE(t.get(["axisLine", "symbolOffset"]) || 0, y), A = y[0], S = y[1]; + Ee([{ + rotate: e.rotation + Math.PI / 2, + offset: C[0], + r: 0 + }, { + rotate: e.rotation - Math.PI / 2, + offset: C[1], + r: Math.sqrt((l[0] - u[0]) * (l[0] - u[0]) + (l[1] - u[1]) * (l[1] - u[1])) + }], function(_, E) { + if (v[E] !== "none" && v[E] != null) { + var I = $s(v[E], -A / 2, -S / 2, A, S, f.stroke, !0), w = _.r + _.offset, x = d ? u : l; + I.attr({ + rotation: _.rotate, + x: x[0] + w * Math.cos(e.rotation), + y: x[1] - w * Math.sin(e.rotation), + silent: !0, + z2: 11 + }), r.add(I); + } + }); + } + } + }, + axisTickLabel: function(e, t, r, n) { + var i = NYe(r, n, t, e), a = FYe(r, n, t, e); + if (PYe(t, a, i), LYe(r, n, t, e.tickDirection), t.get(["axisLabel", "hideOverlap"])) { + var o = r0e(er(a, function(l) { + return { + label: l, + priority: l.z2, + defaultAttr: { + ignore: l.ignore + } + }; + })); + a0e(o); + } + }, + axisName: function(e, t, r, n) { + var i = kl(e.axisName, t.get("name")); + if (i) { + var a = t.get("nameLocation"), o = e.nameDirection, l = t.getModel("nameTextStyle"), u = t.get("nameGap") || 0, d = t.axis.getExtent(), f = d[0] > d[1] ? -1 : 1, g = [ + a === "start" ? d[0] - f * u : a === "end" ? d[1] + f * u : (d[0] + d[1]) / 2, + // Reuse labelOffset. + Roe(a) ? e.labelOffset + o * u : 0 + ], v, y = t.get("nameRotate"); + y != null && (y = y * q_ / 180); + var C; + Roe(a) ? v = Jb.innerTextLayout( + e.rotation, + y != null ? y : e.rotation, + // Adapt to axis. + o + ) : (v = kYe(e.rotation, a, y || 0, d), C = e.axisNameAvailableWidth, C != null && (C = Math.abs(C / Math.sin(v.rotation)), !isFinite(C) && (C = null))); + var A = l.getFont(), S = t.get("nameTruncate", !0) || {}, _ = S.ellipsis, E = kl(e.nameTruncateMaxWidth, S.maxWidth, C), I = new Hi({ + x: g[0], + y: g[1], + rotation: v.rotation, + silent: Jb.isLabelSilent(t), + style: uo(l, { + text: i, + font: A, + overflow: "truncate", + width: E, + ellipsis: _, + fill: l.getTextColor() || t.get(["axisLine", "lineStyle", "color"]), + align: l.get("align") || v.textAlign, + verticalAlign: l.get("verticalAlign") || v.textVerticalAlign + }), + z2: 1 + }); + if (vI({ + el: I, + componentModel: t, + itemName: i + }), I.__fullText = i, I.anid = "name", t.get("triggerEvent")) { + var w = Jb.makeAxisEventDataBase(t); + w.targetType = "axisName", w.name = i, Tn(I).eventData = w; + } + n.add(I), I.updateTransform(), r.add(I), I.decomposeTransform(); + } + } +}; +function kYe(e, t, r, n) { + var i = g8(r - e), a, o, l = n[0] > n[1], u = t === "start" && !l || t !== "start" && l; + return Uw(i - q_ / 2) ? (o = u ? "bottom" : "top", a = "center") : Uw(i - q_ * 1.5) ? (o = u ? "top" : "bottom", a = "center") : (o = "middle", i < q_ * 1.5 && i > q_ / 2 ? a = u ? "left" : "right" : a = u ? "right" : "left"), { + rotation: i, + textAlign: a, + textVerticalAlign: o + }; +} +function PYe(e, t, r) { + if (!L_e(e.axis)) { + var n = e.get(["axisLabel", "showMinLabel"]), i = e.get(["axisLabel", "showMaxLabel"]); + t = t || [], r = r || []; + var a = t[0], o = t[1], l = t[t.length - 1], u = t[t.length - 2], d = r[0], f = r[1], g = r[r.length - 1], v = r[r.length - 2]; + n === !1 ? (ef(a), ef(d)) : Aoe(a, o) && (n ? (ef(o), ef(f)) : (ef(a), ef(d))), i === !1 ? (ef(l), ef(g)) : Aoe(u, l) && (i ? (ef(u), ef(v)) : (ef(l), ef(g))); + } +} +function ef(e) { + e && (e.ignore = !0); +} +function Aoe(e, t) { + var r = e && e.getBoundingRect().clone(), n = t && t.getBoundingRect().clone(); + if (!(!r || !n)) { + var i = dD([]); + return R0(i, i, -e.rotation), r.applyTransform(Jg([], i, e.getLocalTransform())), n.applyTransform(Jg([], i, t.getLocalTransform())), r.intersect(n); + } +} +function Roe(e) { + return e === "middle" || e === "center"; +} +function V0e(e, t, r, n, i) { + for (var a = [], o = [], l = [], u = 0; u < e.length; u++) { + var d = e[u].coord; + o[0] = d, o[1] = 0, l[0] = d, l[1] = r, t && (Jl(o, o, t), Jl(l, l, t)); + var f = new Pl({ + shape: { + x1: o[0], + y1: o[1], + x2: l[0], + y2: l[1] + }, + style: n, + z2: 2, + autoBatch: !0, + silent: !0 + }); + jw(f.shape, f.style.lineWidth), f.anid = i + "_" + e[u].tickValue, a.push(f); + } + return a; +} +function NYe(e, t, r, n) { + var i = r.axis, a = r.getModel("axisTick"), o = a.get("show"); + if (o === "auto" && n.handleAutoShown && (o = n.handleAutoShown("axisTick")), !(!o || i.scale.isBlank())) { + for (var l = a.getModel("lineStyle"), u = n.tickDirection * a.get("length"), d = i.getTicksCoords(), f = V0e(d, t.transform, u, Jr(l.getLineStyle(), { + stroke: r.get(["axisLine", "lineStyle", "color"]) + }), "ticks"), g = 0; g < f.length; g++) + e.add(f[g]); + return f; + } +} +function LYe(e, t, r, n) { + var i = r.axis, a = r.getModel("minorTick"); + if (!(!a.get("show") || i.scale.isBlank())) { + var o = i.getMinorTicksCoords(); + if (o.length) + for (var l = a.getModel("lineStyle"), u = n * a.get("length"), d = Jr(l.getLineStyle(), Jr(r.getModel("axisTick").getLineStyle(), { + stroke: r.get(["axisLine", "lineStyle", "color"]) + })), f = 0; f < o.length; f++) + for (var g = V0e(o[f], t.transform, u, d, "minorticks_" + f), v = 0; v < g.length; v++) + e.add(g[v]); + } +} +function FYe(e, t, r, n) { + var i = r.axis, a = kl(n.axisLabelShow, r.get(["axisLabel", "show"])); + if (!(!a || i.scale.isBlank())) { + var o = r.getModel("axisLabel"), l = o.get("margin"), u = i.getViewLabels(), d = (kl(n.labelRotate, o.get("rotate")) || 0) * q_ / 180, f = Jb.innerTextLayout(n.rotation, d, n.labelDirection), g = r.getCategories && r.getCategories(!0), v = [], y = Jb.isLabelSilent(r), C = r.get("triggerEvent"); + return Ee(u, function(A, S) { + var _ = i.scale.type === "ordinal" ? i.scale.getRawOrdinalNumber(A.tickValue) : A.tickValue, E = A.formattedLabel, I = A.rawLabel, w = o; + if (g && g[_]) { + var x = g[_]; + sn(x) && x.textStyle && (w = new Wa(x.textStyle, o, r.ecModel)); + } + var b = w.getTextColor() || r.get(["axisLine", "lineStyle", "color"]), R = i.dataToCoord(_), M = w.getShallow("align", !0) || f.textAlign, O = Fn(w.getShallow("alignMinLabel", !0), M), P = Fn(w.getShallow("alignMaxLabel", !0), M), B = w.getShallow("verticalAlign", !0) || w.getShallow("baseline", !0) || f.textVerticalAlign, H = Fn(w.getShallow("verticalAlignMinLabel", !0), B), Y = Fn(w.getShallow("verticalAlignMaxLabel", !0), B), X = new Hi({ + x: R, + y: n.labelOffset + n.labelDirection * l, + rotation: f.rotation, + silent: y, + z2: 10 + (A.level || 0), + style: uo(w, { + text: E, + align: S === 0 ? O : S === u.length - 1 ? P : M, + verticalAlign: S === 0 ? H : S === u.length - 1 ? Y : B, + fill: Kr(b) ? b( + // (1) In category axis with data zoom, tick is not the original + // index of axis.data. So tick should not be exposed to user + // in category axis. + // (2) Compatible with previous version, which always use formatted label as + // input. But in interval scale the formatted label is like '223,445', which + // maked user replace ','. So we modify it to return original val but remain + // it as 'string' to avoid error in replacing. + i.type === "category" ? I : i.type === "value" ? _ + "" : _, + S + ) : b + }) + }); + if (X.anid = "label_" + _, C) { + var ee = Jb.makeAxisEventDataBase(r); + ee.targetType = "axisLabel", ee.value = I, ee.tickIndex = S, i.type === "category" && (ee.dataIndex = _), Tn(X).eventData = ee; + } + t.add(X), X.updateTransform(), v.push(X), e.add(X), X.decomposeTransform(); + }), v; + } +} +const Xm = Jb; +function BYe(e, t) { + var r = { + /** + * key: makeKey(axis.model) + * value: { + * axis, + * coordSys, + * axisPointerModel, + * triggerTooltip, + * triggerEmphasis, + * involveSeries, + * snap, + * seriesModels, + * seriesDataCount + * } + */ + axesInfo: {}, + seriesInvolved: !1, + /** + * key: makeKey(coordSys.model) + * value: Object: key makeKey(axis.model), value: axisInfo + */ + coordSysAxesInfo: {}, + coordSysMap: {} + }; + return UYe(r, e, t), r.seriesInvolved && $Ye(r, e), r; +} +function UYe(e, t, r) { + var n = t.getComponent("tooltip"), i = t.getComponent("axisPointer"), a = i.get("link", !0) || [], o = []; + Ee(r.getCoordinateSystems(), function(l) { + if (!l.axisPointerEnabled) + return; + var u = AR(l.model), d = e.coordSysAxesInfo[u] = {}; + e.coordSysMap[u] = l; + var f = l.model, g = f.getModel("tooltip", n); + if (Ee(l.getAxes(), Ln(A, !1, null)), l.getTooltipAxes && n && g.get("show")) { + var v = g.get("trigger") === "axis", y = g.get(["axisPointer", "type"]) === "cross", C = l.getTooltipAxes(g.get(["axisPointer", "axis"])); + (v || y) && Ee(C.baseAxes, Ln(A, y ? "cross" : !0, v)), y && Ee(C.otherAxes, Ln(A, "cross", !1)); + } + function A(S, _, E) { + var I = E.model.getModel("axisPointer", i), w = I.get("show"); + if (!(!w || w === "auto" && !S && !RW(I))) { + _ == null && (_ = I.get("triggerTooltip")), I = S ? jYe(E, g, i, t, S, _) : I; + var x = I.get("snap"), b = I.get("triggerEmphasis"), R = AR(E.model), M = _ || x || E.type === "category", O = e.axesInfo[R] = { + key: R, + axis: E, + coordSys: l, + axisPointerModel: I, + triggerTooltip: _, + triggerEmphasis: b, + involveSeries: M, + snap: x, + useHandle: RW(I), + seriesModels: [], + linkGroup: null + }; + d[R] = O, e.seriesInvolved = e.seriesInvolved || M; + var P = VYe(a, E); + if (P != null) { + var B = o[P] || (o[P] = { + axesInfo: {} + }); + B.axesInfo[R] = O, B.mapper = a[P].mapper, O.linkGroup = B; + } + } + } + }); +} +function jYe(e, t, r, n, i, a) { + var o = t.getModel("axisPointer"), l = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"], u = {}; + Ee(l, function(v) { + u[v] = cn(o.get(v)); + }), u.snap = e.type !== "category" && !!a, o.get("type") === "cross" && (u.type = "line"); + var d = u.label || (u.label = {}); + if (d.show == null && (d.show = !1), i === "cross") { + var f = o.get(["label", "show"]); + if (d.show = f != null ? f : !0, !a) { + var g = u.lineStyle = o.get("crossStyle"); + g && Jr(d, g.textStyle); + } + } + return e.model.getModel("axisPointer", new Wa(u, r, n)); +} +function $Ye(e, t) { + t.eachSeries(function(r) { + var n = r.coordinateSystem, i = r.get(["tooltip", "trigger"], !0), a = r.get(["tooltip", "show"], !0); + !n || i === "none" || i === !1 || i === "item" || a === !1 || r.get(["axisPointer", "show"], !0) === !1 || Ee(e.coordSysAxesInfo[AR(n.model)], function(o) { + var l = o.axis; + n.getAxis(l.dim) === l && (o.seriesModels.push(r), o.seriesDataCount == null && (o.seriesDataCount = 0), o.seriesDataCount += r.getData().count()); + }); + }); +} +function VYe(e, t) { + for (var r = t.model, n = t.dim, i = 0; i < e.length; i++) { + var a = e[i] || {}; + if ($z(a[n + "AxisId"], r.id) || $z(a[n + "AxisIndex"], r.componentIndex) || $z(a[n + "AxisName"], r.name)) + return i; + } +} +function $z(e, t) { + return e === "all" || qt(e) && di(e, t) >= 0 || e === t; +} +function zYe(e) { + var t = M9(e); + if (t) { + var r = t.axisPointerModel, n = t.axis.scale, i = r.option, a = r.get("status"), o = r.get("value"); + o != null && (o = n.parse(o)); + var l = RW(r); + a == null && (i.status = l ? "show" : "hide"); + var u = n.getExtent().slice(); + u[0] > u[1] && u.reverse(), // Pick a value on axis when initializing. + (o == null || o > u[1]) && (o = u[1]), o < u[0] && (o = u[0]), i.value = o, l && (i.status = t.axis.scale.isBlank() ? "hide" : "show"); + } +} +function M9(e) { + var t = (e.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; + return t && t.axesInfo[AR(e)]; +} +function HYe(e) { + var t = M9(e); + return t && t.axisPointerModel; +} +function RW(e) { + return !!e.get(["handle", "show"]); +} +function AR(e) { + return e.type + "||" + e.id; +} +var Doe = {}, WYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i, a) { + this.axisPointerClass && zYe(r), e.prototype.render.apply(this, arguments), this._doUpdateAxisPointerClass(r, i, !0); + }, t.prototype.updateAxisPointer = function(r, n, i, a) { + this._doUpdateAxisPointerClass(r, i, !1); + }, t.prototype.remove = function(r, n) { + var i = this._axisPointer; + i && i.remove(n); + }, t.prototype.dispose = function(r, n) { + this._disposeAxisPointer(n), e.prototype.dispose.apply(this, arguments); + }, t.prototype._doUpdateAxisPointerClass = function(r, n, i) { + var a = t.getAxisPointerClass(this.axisPointerClass); + if (a) { + var o = HYe(r); + o ? (this._axisPointer || (this._axisPointer = new a())).render(r, o, n, i) : this._disposeAxisPointer(n); + } + }, t.prototype._disposeAxisPointer = function(r) { + this._axisPointer && this._axisPointer.dispose(r), this._axisPointer = null; + }, t.registerAxisPointerClass = function(r, n) { + Doe[r] = n; + }, t.getAxisPointerClass = function(r) { + return r && Doe[r]; + }, t.type = "axis", t; + }(Co) +); +const NE = WYe; +var DW = ea(); +function z0e(e, t, r, n) { + var i = r.axis; + if (!i.scale.isBlank()) { + var a = r.getModel("splitArea"), o = a.getModel("areaStyle"), l = o.get("color"), u = n.coordinateSystem.getRect(), d = i.getTicksCoords({ + tickModel: a, + clamp: !0 + }); + if (d.length) { + var f = l.length, g = DW(e).splitAreaColors, v = $r(), y = 0; + if (g) + for (var C = 0; C < d.length; C++) { + var A = g.get(d[C].tickValue); + if (A != null) { + y = (A + (f - 1) * C) % f; + break; + } + } + var S = i.toGlobalCoord(d[0].coord), _ = o.getAreaStyle(); + l = qt(l) ? l : [l]; + for (var C = 1; C < d.length; C++) { + var E = i.toGlobalCoord(d[C].coord), I = void 0, w = void 0, x = void 0, b = void 0; + i.isHorizontal() ? (I = S, w = u.y, x = E - I, b = u.height, S = I + x) : (I = u.x, w = S, x = u.width, b = E - w, S = w + b); + var R = d[C - 1].tickValue; + R != null && v.set(R, y), t.add(new Xi({ + anid: R != null ? "area_" + R : null, + shape: { + x: I, + y: w, + width: x, + height: b + }, + style: Jr({ + fill: l[y] + }, _), + autoBatch: !0, + silent: !0 + })), y = (y + 1) % f; + } + DW(e).splitAreaColors = v; + } + } +} +function H0e(e) { + DW(e).splitAreaColors = null; +} +var GYe = ["axisLine", "axisTickLabel", "axisName"], YYe = ["splitArea", "splitLine", "minorSplitLine"], W0e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.axisPointerClass = "CartesianAxisPointer", r; + } + return t.prototype.render = function(r, n, i, a) { + this.group.removeAll(); + var o = this._axisGroup; + if (this._axisGroup = new _n(), this.group.add(this._axisGroup), !!r.get("show")) { + var l = r.getCoordSysModel(), u = AW(l, r), d = new Xm(r, $t({ + handleAutoShown: function(g) { + for (var v = l.coordinateSystem.getCartesians(), y = 0; y < v.length; y++) + if (SW(v[y].getOtherAxis(r.axis).scale)) + return !0; + return !1; + } + }, u)); + Ee(GYe, d.add, d), this._axisGroup.add(d.getGroup()), Ee(YYe, function(g) { + r.get([g, "show"]) && XYe[g](this, this._axisGroup, r, l); + }, this); + var f = a && a.type === "changeAxisOrder" && a.isInitSort; + f || SD(o, this._axisGroup, r), e.prototype.render.call(this, r, n, i, a); + } + }, t.prototype.remove = function() { + H0e(this); + }, t.type = "cartesianAxis", t; + }(NE) +), XYe = { + splitLine: function(e, t, r, n) { + var i = r.axis; + if (!i.scale.isBlank()) { + var a = r.getModel("splitLine"), o = a.getModel("lineStyle"), l = o.get("color"); + l = qt(l) ? l : [l]; + for (var u = n.coordinateSystem.getRect(), d = i.isHorizontal(), f = 0, g = i.getTicksCoords({ + tickModel: a + }), v = [], y = [], C = o.getLineStyle(), A = 0; A < g.length; A++) { + var S = i.toGlobalCoord(g[A].coord); + d ? (v[0] = S, v[1] = u.y, y[0] = S, y[1] = u.y + u.height) : (v[0] = u.x, v[1] = S, y[0] = u.x + u.width, y[1] = S); + var _ = f++ % l.length, E = g[A].tickValue, I = new Pl({ + anid: E != null ? "line_" + g[A].tickValue : null, + autoBatch: !0, + shape: { + x1: v[0], + y1: v[1], + x2: y[0], + y2: y[1] + }, + style: Jr({ + stroke: l[_] + }, C), + silent: !0 + }); + jw(I.shape, C.lineWidth), t.add(I); + } + } + }, + minorSplitLine: function(e, t, r, n) { + var i = r.axis, a = r.getModel("minorSplitLine"), o = a.getModel("lineStyle"), l = n.coordinateSystem.getRect(), u = i.isHorizontal(), d = i.getMinorTicksCoords(); + if (d.length) + for (var f = [], g = [], v = o.getLineStyle(), y = 0; y < d.length; y++) + for (var C = 0; C < d[y].length; C++) { + var A = i.toGlobalCoord(d[y][C].coord); + u ? (f[0] = A, f[1] = l.y, g[0] = A, g[1] = l.y + l.height) : (f[0] = l.x, f[1] = A, g[0] = l.x + l.width, g[1] = A); + var S = new Pl({ + anid: "minor_line_" + d[y][C].tickValue, + autoBatch: !0, + shape: { + x1: f[0], + y1: f[1], + x2: g[0], + y2: g[1] + }, + style: v, + silent: !0 + }); + jw(S.shape, v.lineWidth), t.add(S); + } + }, + splitArea: function(e, t, r, n) { + z0e(e, t, r, n); + } +}, G0e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "xAxis", t; + }(W0e) +), KYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = G0e.type, r; + } + return t.type = "yAxis", t; + }(W0e) +), ZYe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "grid", r; + } + return t.prototype.render = function(r, n) { + this.group.removeAll(), r.get("show") && this.group.add(new Xi({ + shape: r.coordinateSystem.getRect(), + style: Jr({ + fill: r.get("backgroundColor") + }, r.getItemStyle()), + silent: !0, + z2: -1 + })); + }, t.type = "grid", t; + }(Co) +), Ooe = { + // gridIndex: 0, + // gridId: '', + offset: 0 +}; +function Y0e(e) { + e.registerComponentView(ZYe), e.registerComponentModel(SYe), e.registerCoordinateSystem("cartesian2d", MYe), Hw(e, "x", IW, Ooe), Hw(e, "y", IW, Ooe), e.registerComponentView(G0e), e.registerComponentView(KYe), e.registerPreprocessor(function(t) { + t.xAxis && t.yAxis && !t.grid && (t.grid = {}); + }); +} +function qYe(e) { + ii(Y0e), e.registerSeriesModel(dYe), e.registerChartView(yYe), e.registerLayout(OD("scatter")); +} +function JYe(e) { + e.eachSeriesByType("radar", function(t) { + var r = t.getData(), n = [], i = t.coordinateSystem; + if (i) { + var a = i.getIndicatorAxes(); + Ee(a, function(o, l) { + r.each(r.mapDimension(a[l].dim), function(u, d) { + n[d] = n[d] || []; + var f = i.dataToPoint(u, l); + n[d][l] = Moe(f) ? f : koe(i); + }); + }), r.each(function(o) { + var l = Pge(n[o], function(u) { + return Moe(u); + }) || koe(i); + n[o].push(l.slice()), r.setItemLayout(o, n[o]); + }); + } + }); +} +function Moe(e) { + return !isNaN(e[0]) && !isNaN(e[1]); +} +function koe(e) { + return [e.cx, e.cy]; +} +function QYe(e) { + var t = e.polar; + if (t) { + qt(t) || (t = [t]); + var r = []; + Ee(t, function(n, i) { + n.indicator ? (n.type && !n.shape && (n.shape = n.type), e.radar = e.radar || [], qt(e.radar) || (e.radar = [e.radar]), e.radar.push(n)) : r.push(n); + }), e.polar = r; + } + Ee(e.series, function(n) { + n && n.type === "radar" && n.polarIndex && (n.radarIndex = n.polarIndex); + }); +} +var e7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = r.coordinateSystem, o = this.group, l = r.getData(), u = this._data; + function d(v, y) { + var C = v.getItemVisual(y, "symbol") || "circle"; + if (C !== "none") { + var A = wI(v.getItemVisual(y, "symbolSize")), S = $s(C, -1, -1, 2, 2), _ = v.getItemVisual(y, "symbolRotate") || 0; + return S.attr({ + style: { + strokeNoScale: !0 + }, + z2: 100, + scaleX: A[0] / 2, + scaleY: A[1] / 2, + rotation: _ * Math.PI / 180 || 0 + }), S; + } + } + function f(v, y, C, A, S, _) { + C.removeAll(); + for (var E = 0; E < y.length - 1; E++) { + var I = d(A, S); + I && (I.__dimIdx = E, v[E] ? (I.setPosition(v[E]), DE[_ ? "initProps" : "updateProps"](I, { + x: y[E][0], + y: y[E][1] + }, r, S)) : I.setPosition(y[E]), C.add(I)); + } + } + function g(v) { + return er(v, function(y) { + return [a.cx, a.cy]; + }); + } + l.diff(u).add(function(v) { + var y = l.getItemLayout(v); + if (y) { + var C = new Bu(), A = new $u(), S = { + shape: { + points: y + } + }; + C.shape.points = g(y), A.shape.points = g(y), Po(C, S, r, v), Po(A, S, r, v); + var _ = new _n(), E = new _n(); + _.add(A), _.add(C), _.add(E), f(A.shape.points, y, E, l, v, !0), l.setItemGraphicEl(v, _); + } + }).update(function(v, y) { + var C = u.getItemGraphicEl(y), A = C.childAt(0), S = C.childAt(1), _ = C.childAt(2), E = { + shape: { + points: l.getItemLayout(v) + } + }; + E.shape.points && (f(A.shape.points, E.shape.points, _, l, v, !1), Lp(S), Lp(A), ia(A, E, r), ia(S, E, r), l.setItemGraphicEl(v, C)); + }).remove(function(v) { + o.remove(u.getItemGraphicEl(v)); + }).execute(), l.eachItemGraphicEl(function(v, y) { + var C = l.getItemModel(y), A = v.childAt(0), S = v.childAt(1), _ = v.childAt(2), E = l.getItemVisual(y, "style"), I = E.fill; + o.add(v), A.useStyle(Jr(C.getModel("lineStyle").getLineStyle(), { + fill: "none", + stroke: I + })), bc(A, C, "lineStyle"), bc(S, C, "areaStyle"); + var w = C.getModel("areaStyle"), x = w.isEmpty() && w.parentModel.isEmpty(); + S.ignore = x, Ee(["emphasis", "select", "blur"], function(M) { + var O = C.getModel([M, "areaStyle"]), P = O.isEmpty() && O.parentModel.isEmpty(); + S.ensureState(M).ignore = P && x; + }), S.useStyle(Jr(w.getAreaStyle(), { + fill: I, + opacity: 0.7, + decal: E.decal + })); + var b = C.getModel("emphasis"), R = b.getModel("itemStyle").getItemStyle(); + _.eachChild(function(M) { + if (M instanceof ec) { + var O = M.style; + M.useStyle($t({ + // TODO other properties like x, y ? + image: O.image, + x: O.x, + y: O.y, + width: O.width, + height: O.height + }, E)); + } else + M.useStyle(E), M.setColor(I), M.style.strokeNoScale = !0; + var P = M.ensureState("emphasis"); + P.style = cn(R); + var B = l.getStore().get(l.getDimensionIndex(M.__dimIdx), y); + (B == null || isNaN(B)) && (B = ""), Ec(M, Ll(C), { + labelFetcher: l.hostModel, + labelDataIndex: y, + labelDimIndex: M.__dimIdx, + defaultText: B, + inheritColor: I, + defaultOpacity: E.opacity + }); + }), xs(v, b.get("focus"), b.get("blurScope"), b.get("disabled")); + }), this._data = l; + }, t.prototype.remove = function() { + this.group.removeAll(), this._data = null; + }, t.type = "radar", t; + }(Ya) +); +const t7e = e7e; +var r7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.hasSymbolVisual = !0, r; + } + return t.prototype.init = function(r) { + e.prototype.init.apply(this, arguments), this.legendVisualProvider = new kD(Ar(this.getData, this), Ar(this.getRawData, this)); + }, t.prototype.getInitialData = function(r, n) { + return AI(this, { + generateCoord: "indicator_", + generateCoordCount: 1 / 0 + }); + }, t.prototype.formatTooltip = function(r, n, i) { + var a = this.getData(), o = this.coordinateSystem, l = o.getIndicatorAxes(), u = this.getData().getName(r), d = u === "" ? this.name : u, f = xye(this, r); + return Fl("section", { + header: d, + sortBlocks: !0, + blocks: er(l, function(g) { + var v = a.get(a.mapDimension(g.dim), r); + return Fl("nameValue", { + markerType: "subItem", + markerColor: f, + name: g.name, + value: v, + sortParam: v + }); + }) + }); + }, t.prototype.getTooltipPosition = function(r) { + if (r != null) { + for (var n = this.getData(), i = this.coordinateSystem, a = n.getValues(er(i.dimensions, function(d) { + return n.mapDimension(d); + }), r), o = 0, l = a.length; o < l; o++) + if (!isNaN(a[o])) { + var u = i.getIndicatorAxes(); + return i.coordToPoint(u[o].dataToCoord(a[o]), o); + } + } + }, t.type = "series.radar", t.dependencies = ["radar"], t.defaultOption = { + // zlevel: 0, + z: 2, + colorBy: "data", + coordinateSystem: "radar", + legendHoverLink: !0, + radarIndex: 0, + lineStyle: { + width: 2, + type: "solid", + join: "round" + }, + label: { + position: "top" + }, + // areaStyle: { + // }, + // itemStyle: {} + symbolSize: 8 + // symbolRotate: null + }, t; + }(fo) +); +const n7e = r7e; +var $A = j0e.value; +function yP(e, t) { + return Jr({ + show: t + }, e); +} +var i7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.optionUpdated = function() { + var r = this.get("boundaryGap"), n = this.get("splitNumber"), i = this.get("scale"), a = this.get("axisLine"), o = this.get("axisTick"), l = this.get("axisLabel"), u = this.get("axisName"), d = this.get(["axisName", "show"]), f = this.get(["axisName", "formatter"]), g = this.get("axisNameGap"), v = this.get("triggerEvent"), y = er(this.get("indicator") || [], function(C) { + C.max != null && C.max > 0 && !C.min ? C.min = 0 : C.min != null && C.min < 0 && !C.max && (C.max = 0); + var A = u; + C.color != null && (A = Jr({ + color: C.color + }, u)); + var S = Qn(cn(C), { + boundaryGap: r, + splitNumber: n, + scale: i, + axisLine: a, + axisTick: o, + // axisType: axisType, + axisLabel: l, + // Compatible with 2 and use text + name: C.text, + showName: d, + nameLocation: "end", + nameGap: g, + // min: 0, + nameTextStyle: A, + triggerEvent: v + }, !1); + if (wr(f)) { + var _ = S.name; + S.name = f.replace("{value}", _ != null ? _ : ""); + } else + Kr(f) && (S.name = f(S.name, S)); + var E = new Wa(S, null, this.ecModel); + return Fs(E, xI.prototype), E.mainType = "radar", E.componentIndex = this.componentIndex, E; + }, this); + this._indicatorModels = y; + }, t.prototype.getIndicatorModels = function() { + return this._indicatorModels; + }, t.type = "radar", t.defaultOption = { + // zlevel: 0, + z: 0, + center: ["50%", "50%"], + radius: "75%", + startAngle: 90, + axisName: { + show: !0 + // formatter: null + // textStyle: {} + }, + boundaryGap: [0, 0], + splitNumber: 5, + axisNameGap: 15, + scale: !1, + // Polygon or circle + shape: "polygon", + axisLine: Qn({ + lineStyle: { + color: "#bbb" + } + }, $A.axisLine), + axisLabel: yP($A.axisLabel, !1), + axisTick: yP($A.axisTick, !1), + // axisType: 'value', + splitLine: yP($A.splitLine, !0), + splitArea: yP($A.splitArea, !0), + // {text, min, max} + indicator: [] + }, t; + }(Mi) +); +const a7e = i7e; +var o7e = ["axisLine", "axisTickLabel", "axisName"], s7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = this.group; + a.removeAll(), this._buildAxes(r), this._buildSplitLineAndArea(r); + }, t.prototype._buildAxes = function(r) { + var n = r.coordinateSystem, i = n.getIndicatorAxes(), a = er(i, function(o) { + var l = o.model.get("showName") ? o.name : "", u = new Xm(o.model, { + axisName: l, + position: [n.cx, n.cy], + rotation: o.angle, + labelDirection: -1, + tickDirection: -1, + nameDirection: 1 + }); + return u; + }); + Ee(a, function(o) { + Ee(o7e, o.add, o), this.group.add(o.getGroup()); + }, this); + }, t.prototype._buildSplitLineAndArea = function(r) { + var n = r.coordinateSystem, i = n.getIndicatorAxes(); + if (!i.length) + return; + var a = r.get("shape"), o = r.getModel("splitLine"), l = r.getModel("splitArea"), u = o.getModel("lineStyle"), d = l.getModel("areaStyle"), f = o.get("show"), g = l.get("show"), v = u.get("color"), y = d.get("color"), C = qt(v) ? v : [v], A = qt(y) ? y : [y], S = [], _ = []; + function E(ee, ae, J) { + var ne = J % ae.length; + return ee[ne] = ee[ne] || [], ne; + } + if (a === "circle") + for (var I = i[0].getTicksCoords(), w = n.cx, x = n.cy, b = 0; b < I.length; b++) { + if (f) { + var R = E(S, C, b); + S[R].push(new ny({ + shape: { + cx: w, + cy: x, + r: I[b].coord + } + })); + } + if (g && b < I.length - 1) { + var R = E(_, A, b); + _[R].push(new mD({ + shape: { + cx: w, + cy: x, + r0: I[b].coord, + r: I[b + 1].coord + } + })); + } + } + else + for (var M, O = er(i, function(ee, ae) { + var J = ee.getTicksCoords(); + return M = M == null ? J.length - 1 : Math.min(J.length - 1, M), er(J, function(ne) { + return n.coordToPoint(ne.coord, ae); + }); + }), P = [], b = 0; b <= M; b++) { + for (var B = [], H = 0; H < i.length; H++) + B.push(O[H][b]); + if (B[0] && B.push(B[0].slice()), f) { + var R = E(S, C, b); + S[R].push(new $u({ + shape: { + points: B + } + })); + } + if (g && P) { + var R = E(_, A, b - 1); + _[R].push(new Bu({ + shape: { + points: B.concat(P) + } + })); + } + P = B.slice().reverse(); + } + var Y = u.getLineStyle(), X = d.getAreaStyle(); + Ee(_, function(ee, ae) { + this.group.add(sd(ee, { + style: Jr({ + stroke: "none", + fill: A[ae % A.length] + }, X), + silent: !0 + })); + }, this), Ee(S, function(ee, ae) { + this.group.add(sd(ee, { + style: Jr({ + fill: "none", + stroke: C[ae % C.length] + }, Y), + silent: !0 + })); + }, this); + }, t.type = "radar", t; + }(Co) +); +const l7e = s7e; +var c7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this, r, n, i) || this; + return a.type = "value", a.angle = 0, a.name = "", a; + } + return t; + }(Ed) +); +const u7e = c7e; +var h7e = ( + /** @class */ + function() { + function e(t, r, n) { + this.dimensions = [], this._model = t, this._indicatorAxes = er(t.getIndicatorModels(), function(i, a) { + var o = "indicator_" + a, l = new u7e( + o, + new y0() + // (indicatorModel.get('axisType') === 'log') ? new LogScale() : new IntervalScale() + ); + return l.name = i.get("name"), l.model = i, i.axis = l, this.dimensions.push(o), l; + }, this), this.resize(t, n); + } + return e.prototype.getIndicatorAxes = function() { + return this._indicatorAxes; + }, e.prototype.dataToPoint = function(t, r) { + var n = this._indicatorAxes[r]; + return this.coordToPoint(n.dataToCoord(t), r); + }, e.prototype.coordToPoint = function(t, r) { + var n = this._indicatorAxes[r], i = n.angle, a = this.cx + t * Math.cos(i), o = this.cy - t * Math.sin(i); + return [a, o]; + }, e.prototype.pointToData = function(t) { + var r = t[0] - this.cx, n = t[1] - this.cy, i = Math.sqrt(r * r + n * n); + r /= i, n /= i; + for (var a = Math.atan2(-n, r), o = 1 / 0, l, u = -1, d = 0; d < this._indicatorAxes.length; d++) { + var f = this._indicatorAxes[d], g = Math.abs(a - f.angle); + g < o && (l = f, u = d, o = g); + } + return [u, +(l && l.coordToData(i))]; + }, e.prototype.resize = function(t, r) { + var n = t.get("center"), i = r.getWidth(), a = r.getHeight(), o = Math.min(i, a) / 2; + this.cx = yr(n[0], i), this.cy = yr(n[1], a), this.startAngle = t.get("startAngle") * Math.PI / 180; + var l = t.get("radius"); + (wr(l) || Qi(l)) && (l = [0, l]), this.r0 = yr(l[0], o), this.r = yr(l[1], o), Ee(this._indicatorAxes, function(u, d) { + u.setExtent(this.r0, this.r); + var f = this.startAngle + d * Math.PI * 2 / this._indicatorAxes.length; + f = Math.atan2(Math.sin(f), Math.cos(f)), u.angle = f; + }, this); + }, e.prototype.update = function(t, r) { + var n = this._indicatorAxes, i = this._model; + Ee(n, function(l) { + l.scale.setExtent(1 / 0, -1 / 0); + }), t.eachSeriesByType("radar", function(l, u) { + if (!(l.get("coordinateSystem") !== "radar" || t.getComponent("radar", l.get("radarIndex")) !== i)) { + var d = l.getData(); + Ee(n, function(f) { + f.scale.unionExtentFromData(d, d.mapDimension(f.dim)); + }); + } + }, this); + var a = i.get("splitNumber"), o = new y0(); + o.setExtent(0, a), o.setInterval(1), Ee(n, function(l, u) { + $0e(l.scale, l.model, o); + }); + }, e.prototype.convertToPixel = function(t, r, n) { + return console.warn("Not implemented."), null; + }, e.prototype.convertFromPixel = function(t, r, n) { + return console.warn("Not implemented."), null; + }, e.prototype.containPoint = function(t) { + return console.warn("Not implemented."), !1; + }, e.create = function(t, r) { + var n = []; + return t.eachComponent("radar", function(i) { + var a = new e(i, t, r); + n.push(a), i.coordinateSystem = a; + }), t.eachSeriesByType("radar", function(i) { + i.get("coordinateSystem") === "radar" && (i.coordinateSystem = n[i.get("radarIndex") || 0]); + }), n; + }, e.dimensions = [], e; + }() +); +const d7e = h7e; +function f7e(e) { + e.registerCoordinateSystem("radar", d7e), e.registerComponentModel(a7e), e.registerComponentView(l7e), e.registerVisual({ + seriesType: "radar", + reset: function(t) { + var r = t.getData(); + r.each(function(n) { + r.setItemVisual(n, "legendIcon", "roundRect"); + }), r.setVisual("legendIcon", "roundRect"); + } + }); +} +function p7e(e) { + ii(f7e), e.registerChartView(t7e), e.registerSeriesModel(n7e), e.registerLayout(JYe), e.registerProcessor(MD("radar")), e.registerPreprocessor(QYe); +} +var Poe = "\0_ec_interaction_mutex"; +function g7e(e, t, r) { + var n = k9(e); + n[t] = r; +} +function v7e(e, t, r) { + var n = k9(e), i = n[t]; + i === r && (n[t] = null); +} +function Noe(e, t) { + return !!k9(e)[t]; +} +function k9(e) { + return e[Poe] || (e[Poe] = {}); +} +kf({ + type: "takeGlobalCursor", + event: "globalCursorTaken", + update: "update" +}, Ls); +var m7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this) || this; + n._zr = r; + var i = Ar(n._mousedownHandler, n), a = Ar(n._mousemoveHandler, n), o = Ar(n._mouseupHandler, n), l = Ar(n._mousewheelHandler, n), u = Ar(n._pinchHandler, n); + return n.enable = function(d, f) { + this.disable(), this._opt = Jr(cn(f) || {}, { + zoomOnMouseWheel: !0, + moveOnMouseMove: !0, + // By default, wheel do not trigger move. + moveOnMouseWheel: !1, + preventDefaultMouseMove: !0 + }), d == null && (d = !0), (d === !0 || d === "move" || d === "pan") && (r.on("mousedown", i), r.on("mousemove", a), r.on("mouseup", o)), (d === !0 || d === "scale" || d === "zoom") && (r.on("mousewheel", l), r.on("pinch", u)); + }, n.disable = function() { + r.off("mousedown", i), r.off("mousemove", a), r.off("mouseup", o), r.off("mousewheel", l), r.off("pinch", u); + }, n; + } + return t.prototype.isDragging = function() { + return this._dragging; + }, t.prototype.isPinching = function() { + return this._pinching; + }, t.prototype.setPointerChecker = function(r) { + this.pointerChecker = r; + }, t.prototype.dispose = function() { + this.disable(); + }, t.prototype._mousedownHandler = function(r) { + if (!hne(r)) { + for (var n = r.target; n; ) { + if (n.draggable) + return; + n = n.__hostTarget || n.parent; + } + var i = r.offsetX, a = r.offsetY; + this.pointerChecker && this.pointerChecker(r, i, a) && (this._x = i, this._y = a, this._dragging = !0); + } + }, t.prototype._mousemoveHandler = function(r) { + if (!(!this._dragging || !kN("moveOnMouseMove", r, this._opt) || r.gestureEvent === "pinch" || Noe(this._zr, "globalPan"))) { + var n = r.offsetX, i = r.offsetY, a = this._x, o = this._y, l = n - a, u = i - o; + this._x = n, this._y = i, this._opt.preventDefaultMouseMove && zm(r.event), X0e(this, "pan", "moveOnMouseMove", r, { + dx: l, + dy: u, + oldX: a, + oldY: o, + newX: n, + newY: i, + isAvailableBehavior: null + }); + } + }, t.prototype._mouseupHandler = function(r) { + hne(r) || (this._dragging = !1); + }, t.prototype._mousewheelHandler = function(r) { + var n = kN("zoomOnMouseWheel", r, this._opt), i = kN("moveOnMouseWheel", r, this._opt), a = r.wheelDelta, o = Math.abs(a), l = r.offsetX, u = r.offsetY; + if (!(a === 0 || !n && !i)) { + if (n) { + var d = o > 3 ? 1.4 : o > 1 ? 1.2 : 1.1, f = a > 0 ? d : 1 / d; + Vz(this, "zoom", "zoomOnMouseWheel", r, { + scale: f, + originX: l, + originY: u, + isAvailableBehavior: null + }); + } + if (i) { + var g = Math.abs(a), v = (a > 0 ? 1 : -1) * (g > 3 ? 0.4 : g > 1 ? 0.15 : 0.05); + Vz(this, "scrollMove", "moveOnMouseWheel", r, { + scrollDelta: v, + originX: l, + originY: u, + isAvailableBehavior: null + }); + } + } + }, t.prototype._pinchHandler = function(r) { + if (!Noe(this._zr, "globalPan")) { + var n = r.pinchScale > 1 ? 1.1 : 1 / 1.1; + Vz(this, "zoom", null, r, { + scale: n, + originX: r.pinchX, + originY: r.pinchY, + isAvailableBehavior: null + }); + } + }, t; + }(Rf) +); +function Vz(e, t, r, n, i) { + e.pointerChecker && e.pointerChecker(n, i.originX, i.originY) && (zm(n.event), X0e(e, t, r, n, i)); +} +function X0e(e, t, r, n, i) { + i.isAvailableBehavior = Ar(kN, null, r, n), e.trigger(t, i); +} +function kN(e, t, r) { + var n = r[e]; + return !e || n && (!wr(n) || t.event[n + "Key"]); +} +const PD = m7e; +function P9(e, t, r) { + var n = e.target; + n.x += t, n.y += r, n.dirty(); +} +function N9(e, t, r, n) { + var i = e.target, a = e.zoomLimit, o = e.zoom = e.zoom || 1; + if (o *= t, a) { + var l = a.min || 0, u = a.max || 1 / 0; + o = Math.max(Math.min(u, o), l); + } + var d = o / e.zoom; + e.zoom = o, i.x -= (r - i.x) * (d - 1), i.y -= (n - i.y) * (d - 1), i.scaleX *= d, i.scaleY *= d, i.dirty(); +} +var y7e = { + axisPointer: 1, + tooltip: 1, + brush: 1 +}; +function JF(e, t, r) { + var n = t.getComponentByElement(e.topTarget), i = n && n.coordinateSystem; + return n && n !== r && !y7e.hasOwnProperty(n.mainType) && i && i.model !== r; +} +function K0e(e) { + if (wr(e)) { + var t = new DOMParser(); + e = t.parseFromString(e, "text/xml"); + } + var r = e; + for (r.nodeType === 9 && (r = r.firstChild); r.nodeName.toLowerCase() !== "svg" || r.nodeType !== 1; ) + r = r.nextSibling; + return r; +} +var zz, GL = { + fill: "fill", + stroke: "stroke", + "stroke-width": "lineWidth", + opacity: "opacity", + "fill-opacity": "fillOpacity", + "stroke-opacity": "strokeOpacity", + "stroke-dasharray": "lineDash", + "stroke-dashoffset": "lineDashOffset", + "stroke-linecap": "lineCap", + "stroke-linejoin": "lineJoin", + "stroke-miterlimit": "miterLimit", + "font-family": "fontFamily", + "font-size": "fontSize", + "font-style": "fontStyle", + "font-weight": "fontWeight", + "text-anchor": "textAlign", + visibility: "visibility", + display: "display" +}, Loe = Ri(GL), YL = { + "alignment-baseline": "textBaseline", + "stop-color": "stopColor" +}, Foe = Ri(YL), _7e = function() { + function e() { + this._defs = {}, this._root = null; + } + return e.prototype.parse = function(t, r) { + r = r || {}; + var n = K0e(t); + this._defsUsePending = []; + var i = new _n(); + this._root = i; + var a = [], o = n.getAttribute("viewBox") || "", l = parseFloat(n.getAttribute("width") || r.width), u = parseFloat(n.getAttribute("height") || r.height); + isNaN(l) && (l = null), isNaN(u) && (u = null), rd(n, i, null, !0, !1); + for (var d = n.firstChild; d; ) + this._parseNode(d, i, a, null, !1, !1), d = d.nextSibling; + E7e(this._defs, this._defsUsePending), this._defsUsePending = []; + var f, g; + if (o) { + var v = QF(o); + v.length >= 4 && (f = { + x: parseFloat(v[0] || 0), + y: parseFloat(v[1] || 0), + width: parseFloat(v[2]), + height: parseFloat(v[3]) + }); + } + if (f && l != null && u != null && (g = q0e(f, { x: 0, y: 0, width: l, height: u }), !r.ignoreViewBox)) { + var y = i; + i = new _n(), i.add(y), y.scaleX = y.scaleY = g.scale, y.x = g.x, y.y = g.y; + } + return !r.ignoreRootClip && l != null && u != null && i.setClipPath(new Xi({ + shape: { x: 0, y: 0, width: l, height: u } + })), { + root: i, + width: l, + height: u, + viewBoxRect: f, + viewBoxTransform: g, + named: a + }; + }, e.prototype._parseNode = function(t, r, n, i, a, o) { + var l = t.nodeName.toLowerCase(), u, d = i; + if (l === "defs" && (a = !0), l === "text" && (o = !0), l === "defs" || l === "switch") + u = r; + else { + if (!a) { + var f = zz[l]; + if (f && Lr(zz, l)) { + u = f.call(this, t, r); + var g = t.getAttribute("name"); + if (g) { + var v = { + name: g, + namedFrom: null, + svgNodeTagLower: l, + el: u + }; + n.push(v), l === "g" && (d = v); + } else + i && n.push({ + name: i.name, + namedFrom: i, + svgNodeTagLower: l, + el: u + }); + r.add(u); + } + } + var y = Boe[l]; + if (y && Lr(Boe, l)) { + var C = y.call(this, t), A = t.getAttribute("id"); + A && (this._defs[A] = C); + } + } + if (u && u.isGroup) + for (var S = t.firstChild; S; ) + S.nodeType === 1 ? this._parseNode(S, u, n, d, a, o) : S.nodeType === 3 && o && this._parseText(S, u), S = S.nextSibling; + }, e.prototype._parseText = function(t, r) { + var n = new pR({ + style: { + text: t.textContent + }, + silent: !0, + x: this._textX || 0, + y: this._textY || 0 + }); + tf(r, n), rd(t, n, this._defsUsePending, !1, !1), S7e(n, r); + var i = n.style, a = i.fontSize; + a && a < 9 && (i.fontSize = 9, n.scaleX *= a / 9, n.scaleY *= a / 9); + var o = (i.fontSize || i.fontFamily) && [ + i.fontStyle, + i.fontWeight, + (i.fontSize || 12) + "px", + i.fontFamily || "sans-serif" + ].join(" "); + i.font = o; + var l = n.getBoundingRect(); + return this._textX += l.width, r.add(n), n; + }, e.internalField = function() { + zz = { + g: function(t, r) { + var n = new _n(); + return tf(r, n), rd(t, n, this._defsUsePending, !1, !1), n; + }, + rect: function(t, r) { + var n = new Xi(); + return tf(r, n), rd(t, n, this._defsUsePending, !1, !1), n.setShape({ + x: parseFloat(t.getAttribute("x") || "0"), + y: parseFloat(t.getAttribute("y") || "0"), + width: parseFloat(t.getAttribute("width") || "0"), + height: parseFloat(t.getAttribute("height") || "0") + }), n.silent = !0, n; + }, + circle: function(t, r) { + var n = new ny(); + return tf(r, n), rd(t, n, this._defsUsePending, !1, !1), n.setShape({ + cx: parseFloat(t.getAttribute("cx") || "0"), + cy: parseFloat(t.getAttribute("cy") || "0"), + r: parseFloat(t.getAttribute("r") || "0") + }), n.silent = !0, n; + }, + line: function(t, r) { + var n = new Pl(); + return tf(r, n), rd(t, n, this._defsUsePending, !1, !1), n.setShape({ + x1: parseFloat(t.getAttribute("x1") || "0"), + y1: parseFloat(t.getAttribute("y1") || "0"), + x2: parseFloat(t.getAttribute("x2") || "0"), + y2: parseFloat(t.getAttribute("y2") || "0") + }), n.silent = !0, n; + }, + ellipse: function(t, r) { + var n = new xF(); + return tf(r, n), rd(t, n, this._defsUsePending, !1, !1), n.setShape({ + cx: parseFloat(t.getAttribute("cx") || "0"), + cy: parseFloat(t.getAttribute("cy") || "0"), + rx: parseFloat(t.getAttribute("rx") || "0"), + ry: parseFloat(t.getAttribute("ry") || "0") + }), n.silent = !0, n; + }, + polygon: function(t, r) { + var n = t.getAttribute("points"), i; + n && (i = $oe(n)); + var a = new Bu({ + shape: { + points: i || [] + }, + silent: !0 + }); + return tf(r, a), rd(t, a, this._defsUsePending, !1, !1), a; + }, + polyline: function(t, r) { + var n = t.getAttribute("points"), i; + n && (i = $oe(n)); + var a = new $u({ + shape: { + points: i || [] + }, + silent: !0 + }); + return tf(r, a), rd(t, a, this._defsUsePending, !1, !1), a; + }, + image: function(t, r) { + var n = new ec(); + return tf(r, n), rd(t, n, this._defsUsePending, !1, !1), n.setStyle({ + image: t.getAttribute("xlink:href") || t.getAttribute("href"), + x: +t.getAttribute("x"), + y: +t.getAttribute("y"), + width: +t.getAttribute("width"), + height: +t.getAttribute("height") + }), n.silent = !0, n; + }, + text: function(t, r) { + var n = t.getAttribute("x") || "0", i = t.getAttribute("y") || "0", a = t.getAttribute("dx") || "0", o = t.getAttribute("dy") || "0"; + this._textX = parseFloat(n) + parseFloat(a), this._textY = parseFloat(i) + parseFloat(o); + var l = new _n(); + return tf(r, l), rd(t, l, this._defsUsePending, !1, !0), l; + }, + tspan: function(t, r) { + var n = t.getAttribute("x"), i = t.getAttribute("y"); + n != null && (this._textX = parseFloat(n)), i != null && (this._textY = parseFloat(i)); + var a = t.getAttribute("dx") || "0", o = t.getAttribute("dy") || "0", l = new _n(); + return tf(r, l), rd(t, l, this._defsUsePending, !1, !0), this._textX += parseFloat(a), this._textY += parseFloat(o), l; + }, + path: function(t, r) { + var n = t.getAttribute("d") || "", i = dme(n); + return tf(r, i), rd(t, i, this._defsUsePending, !1, !1), i.silent = !0, i; + } + }; + }(), e; +}(), Boe = { + lineargradient: function(e) { + var t = parseInt(e.getAttribute("x1") || "0", 10), r = parseInt(e.getAttribute("y1") || "0", 10), n = parseInt(e.getAttribute("x2") || "10", 10), i = parseInt(e.getAttribute("y2") || "0", 10), a = new fI(t, r, n, i); + return Uoe(e, a), joe(e, a), a; + }, + radialgradient: function(e) { + var t = parseInt(e.getAttribute("cx") || "0", 10), r = parseInt(e.getAttribute("cy") || "0", 10), n = parseInt(e.getAttribute("r") || "0", 10), i = new R8(t, r, n); + return Uoe(e, i), joe(e, i), i; + } +}; +function Uoe(e, t) { + var r = e.getAttribute("gradientUnits"); + r === "userSpaceOnUse" && (t.global = !0); +} +function joe(e, t) { + for (var r = e.firstChild; r; ) { + if (r.nodeType === 1 && r.nodeName.toLocaleLowerCase() === "stop") { + var n = r.getAttribute("offset"), i = void 0; + n && n.indexOf("%") > 0 ? i = parseInt(n, 10) / 100 : n ? i = parseFloat(n) : i = 0; + var a = {}; + Z0e(r, a, a); + var o = a.stopColor || r.getAttribute("stop-color") || "#000000"; + t.colorStops.push({ + offset: i, + color: o + }); + } + r = r.nextSibling; + } +} +function tf(e, t) { + e && e.__inheritedStyle && (t.__inheritedStyle || (t.__inheritedStyle = {}), Jr(t.__inheritedStyle, e.__inheritedStyle)); +} +function $oe(e) { + for (var t = QF(e), r = [], n = 0; n < t.length; n += 2) { + var i = parseFloat(t[n]), a = parseFloat(t[n + 1]); + r.push([i, a]); + } + return r; +} +function rd(e, t, r, n, i) { + var a = t, o = a.__inheritedStyle = a.__inheritedStyle || {}, l = {}; + e.nodeType === 1 && (w7e(e, t), Z0e(e, o, l), n || I7e(e, o, l)), a.style = a.style || {}, o.fill != null && (a.style.fill = Voe(a, "fill", o.fill, r)), o.stroke != null && (a.style.stroke = Voe(a, "stroke", o.stroke, r)), Ee([ + "lineWidth", + "opacity", + "fillOpacity", + "strokeOpacity", + "miterLimit", + "fontSize" + ], function(u) { + o[u] != null && (a.style[u] = parseFloat(o[u])); + }), Ee([ + "lineDashOffset", + "lineCap", + "lineJoin", + "fontWeight", + "fontFamily", + "fontStyle", + "textAlign" + ], function(u) { + o[u] != null && (a.style[u] = o[u]); + }), i && (a.__selfStyle = l), o.lineDash && (a.style.lineDash = er(QF(o.lineDash), function(u) { + return parseFloat(u); + })), (o.visibility === "hidden" || o.visibility === "collapse") && (a.invisible = !0), o.display === "none" && (a.ignore = !0); +} +function S7e(e, t) { + var r = t.__selfStyle; + if (r) { + var n = r.textBaseline, i = n; + !n || n === "auto" || n === "baseline" ? i = "alphabetic" : n === "before-edge" || n === "text-before-edge" ? i = "top" : n === "after-edge" || n === "text-after-edge" ? i = "bottom" : (n === "central" || n === "mathematical") && (i = "middle"), e.style.textBaseline = i; + } + var a = t.__inheritedStyle; + if (a) { + var o = a.textAlign, l = o; + o && (o === "middle" && (l = "center"), e.style.textAlign = l); + } +} +var b7e = /^url\(\s*#(.*?)\)/; +function Voe(e, t, r, n) { + var i = r && r.match(b7e); + if (i) { + var a = yf(i[1]); + n.push([e, t, a]); + return; + } + return r === "none" && (r = null), r; +} +function E7e(e, t) { + for (var r = 0; r < t.length; r++) { + var n = t[r]; + n[0].style[n[1]] = e[n[2]]; + } +} +var C7e = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g; +function QF(e) { + return e.match(C7e) || []; +} +var T7e = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g, Hz = Math.PI / 180; +function w7e(e, t) { + var r = e.getAttribute("transform"); + if (r) { + r = r.replace(/,/g, " "); + var n = [], i = null; + r.replace(T7e, function(g, v, y) { + return n.push(v, y), ""; + }); + for (var a = n.length - 1; a > 0; a -= 2) { + var o = n[a], l = n[a - 1], u = QF(o); + switch (i = i || ku(), l) { + case "translate": + Pp(i, i, [parseFloat(u[0]), parseFloat(u[1] || "0")]); + break; + case "scale": + mF(i, i, [parseFloat(u[0]), parseFloat(u[1] || u[0])]); + break; + case "rotate": + R0(i, i, -parseFloat(u[0]) * Hz, [ + parseFloat(u[1] || "0"), + parseFloat(u[2] || "0") + ]); + break; + case "skewX": + var d = Math.tan(parseFloat(u[0]) * Hz); + Jg(i, [1, 0, d, 1, 0, 0], i); + break; + case "skewY": + var f = Math.tan(parseFloat(u[0]) * Hz); + Jg(i, [1, f, 0, 1, 0, 0], i); + break; + case "matrix": + i[0] = parseFloat(u[0]), i[1] = parseFloat(u[1]), i[2] = parseFloat(u[2]), i[3] = parseFloat(u[3]), i[4] = parseFloat(u[4]), i[5] = parseFloat(u[5]); + break; + } + } + t.setLocalTransform(i); + } +} +var zoe = /([^\s:;]+)\s*:\s*([^:;]+)/g; +function Z0e(e, t, r) { + var n = e.getAttribute("style"); + if (n) { + zoe.lastIndex = 0; + for (var i; (i = zoe.exec(n)) != null; ) { + var a = i[1], o = Lr(GL, a) ? GL[a] : null; + o && (t[o] = i[2]); + var l = Lr(YL, a) ? YL[a] : null; + l && (r[l] = i[2]); + } + } +} +function I7e(e, t, r) { + for (var n = 0; n < Loe.length; n++) { + var i = Loe[n], a = e.getAttribute(i); + a != null && (t[GL[i]] = a); + } + for (var n = 0; n < Foe.length; n++) { + var i = Foe[n], a = e.getAttribute(i); + a != null && (r[YL[i]] = a); + } +} +function q0e(e, t) { + var r = t.width / e.width, n = t.height / e.height, i = Math.min(r, n); + return { + scale: i, + x: -(e.x + e.width / 2) * i + (t.x + t.width / 2), + y: -(e.y + e.height / 2) * i + (t.y + t.height / 2) + }; +} +function x7e(e, t) { + var r = new _7e(); + return r.parse(e, t); +} +var A7e = $r([ + "rect", + "circle", + "line", + "ellipse", + "polygon", + "polyline", + "path", + // are also enabled because some SVG might paint text itself, + // but still need to trigger events or tooltip. + "text", + "tspan", + // is also enabled because this case: if multiple tags share one name + // and need label displayed, every tags will display the name, which is not + // expected. So we can put them into a . Thereby only one label + // displayed and located based on the bounding rect of the . + "g" +]), R7e = ( + /** @class */ + function() { + function e(t, r) { + this.type = "geoSVG", this._usedGraphicMap = $r(), this._freedGraphics = [], this._mapName = t, this._parsedXML = K0e(r); + } + return e.prototype.load = function() { + var t = this._firstGraphic; + if (!t) { + t = this._firstGraphic = this._buildGraphic(this._parsedXML), this._freedGraphics.push(t), this._boundingRect = this._firstGraphic.boundingRect.clone(); + var r = O7e(t.named), n = r.regions, i = r.regionsMap; + this._regions = n, this._regionsMap = i; + } + return { + boundingRect: this._boundingRect, + regions: this._regions, + regionsMap: this._regionsMap + }; + }, e.prototype._buildGraphic = function(t) { + var r, n; + try { + r = t && x7e(t, { + ignoreViewBox: !0, + ignoreRootClip: !0 + }) || {}, n = r.root, Qc(n != null); + } catch (S) { + throw new Error(`Invalid svg format +` + S.message); + } + var i = new _n(); + i.add(n), i.isGeoSVGGraphicRoot = !0; + var a = r.width, o = r.height, l = r.viewBoxRect, u = this._boundingRect; + if (!u) { + var d = void 0, f = void 0, g = void 0, v = void 0; + if (a != null ? (d = 0, g = a) : l && (d = l.x, g = l.width), o != null ? (f = 0, v = o) : l && (f = l.y, v = l.height), d == null || f == null) { + var y = n.getBoundingRect(); + d == null && (d = y.x, g = y.width), f == null && (f = y.y, v = y.height); + } + u = this._boundingRect = new ei(d, f, g, v); + } + if (l) { + var C = q0e(l, u); + n.scaleX = n.scaleY = C.scale, n.x = C.x, n.y = C.y; + } + i.setClipPath(new Xi({ + shape: u.plain() + })); + var A = []; + return Ee(r.named, function(S) { + A7e.get(S.svgNodeTagLower) != null && (A.push(S), D7e(S.el)); + }), { + root: i, + boundingRect: u, + named: A + }; + }, e.prototype.useGraphic = function(t) { + var r = this._usedGraphicMap, n = r.get(t); + return n || (n = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML), r.set(t, n), n); + }, e.prototype.freeGraphic = function(t) { + var r = this._usedGraphicMap, n = r.get(t); + n && (r.removeKey(t), this._freedGraphics.push(n)); + }, e; + }() +); +function D7e(e) { + e.silent = !1, e.isGroup && e.traverse(function(t) { + t.silent = !1; + }); +} +function O7e(e) { + var t = [], r = $r(); + return Ee(e, function(n) { + if (n.namedFrom == null) { + var i = new q6e(n.name, n.el); + t.push(i), r.set(n.name, i); + } + }), { + regions: t, + regionsMap: r + }; +} +var OW = [126, 25], Hoe = "南海诸岛", gb = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]]; +for (var db = 0; db < gb.length; db++) + for (var OT = 0; OT < gb[db].length; OT++) + gb[db][OT][0] /= 10.5, gb[db][OT][1] /= -10.5 / 0.75, gb[db][OT][0] += OW[0], gb[db][OT][1] += OW[1]; +function M7e(e, t) { + if (e === "china") { + for (var r = 0; r < t.length; r++) + if (t[r].name === Hoe) + return; + t.push(new U_e(Hoe, er(gb, function(n) { + return { + type: "polygon", + exterior: n + }; + }), OW)); + } +} +var k7e = { + 南海诸岛: [32, 80], + // 全国 + 广东: [0, -10], + 香港: [10, 5], + 澳门: [-10, 10], + // '北京': [-10, 0], + 天津: [5, 5] +}; +function P7e(e, t) { + if (e === "china") { + var r = k7e[t.name]; + if (r) { + var n = t.getCenter(); + n[0] += r[0] / 10.5, n[1] += -r[1] / (10.5 / 0.75), t.setCenter(n); + } + } +} +var N7e = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]; +function L7e(e, t) { + e === "china" && t.name === "台湾" && t.geometries.push({ + type: "polygon", + exterior: N7e[0] + }); +} +var F7e = "name", B7e = ( + /** @class */ + function() { + function e(t, r, n) { + this.type = "geoJSON", this._parsedMap = $r(), this._mapName = t, this._specialAreas = n, this._geoJSON = j7e(r); + } + return e.prototype.load = function(t, r) { + r = r || F7e; + var n = this._parsedMap.get(r); + if (!n) { + var i = this._parseToRegions(r); + n = this._parsedMap.set(r, { + regions: i, + boundingRect: U7e(i) + }); + } + var a = $r(), o = []; + return Ee(n.regions, function(l) { + var u = l.name; + t && Lr(t, u) && (l = l.cloneShallow(u = t[u])), o.push(l), a.set(u, l); + }), { + regions: o, + boundingRect: n.boundingRect || new ei(0, 0, 0, 0), + regionsMap: a + }; + }, e.prototype._parseToRegions = function(t) { + var r = this._mapName, n = this._geoJSON, i; + try { + i = n ? TR(n, t) : []; + } catch (a) { + throw new Error(`Invalid geoJson format +` + a.message); + } + return M7e(r, i), Ee(i, function(a) { + var o = a.name; + P7e(r, a), L7e(r, a); + var l = this._specialAreas && this._specialAreas[o]; + l && a.transformTo(l.left, l.top, l.width, l.height); + }, this), i; + }, e.prototype.getMapForUser = function() { + return { + // For backward compatibility, use geoJson + // PENDING: it has been returning them without clone. + // do we need to avoid outsite modification? + geoJson: this._geoJSON, + geoJSON: this._geoJSON, + specialAreas: this._specialAreas + }; + }, e; + }() +); +function U7e(e) { + for (var t, r = 0; r < e.length; r++) { + var n = e[r].getBoundingRect(); + t = t || n.clone(), t.union(n); + } + return t; +} +function j7e(e) { + return wr(e) ? typeof JSON != "undefined" && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")() : e; +} +var VA = $r(); +const Km = { + /** + * Compatible with previous `echarts.registerMap`. + * + * @usage + * ```js + * + * echarts.registerMap('USA', geoJson, specialAreas); + * + * echarts.registerMap('USA', { + * geoJson: geoJson, + * specialAreas: {...} + * }); + * echarts.registerMap('USA', { + * geoJSON: geoJson, + * specialAreas: {...} + * }); + * + * echarts.registerMap('airport', { + * svg: svg + * } + * ``` + * + * Note: + * Do not support that register multiple geoJSON or SVG + * one map name. Because different geoJSON and SVG have + * different unit. It's not easy to make sure how those + * units are mapping/normalize. + * If intending to use multiple geoJSON or SVG, we can + * use multiple geo coordinate system. + */ + registerMap: function(e, t, r) { + if (t.svg) { + var n = new R7e(e, t.svg); + VA.set(e, n); + } else { + var i = t.geoJson || t.geoJSON; + i && !t.features ? r = t.specialAreas : i = t; + var n = new B7e(e, i, r); + VA.set(e, n); + } + }, + getGeoResource: function(e) { + return VA.get(e); + }, + /** + * Only for exporting to users. + * **MUST NOT** used internally. + */ + getMapForUser: function(e) { + var t = VA.get(e); + return t && t.type === "geoJSON" && t.getMapForUser(); + }, + load: function(e, t, r) { + var n = VA.get(e); + if (n) + return n.load(t, r); + } +}; +var L9 = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"], $7e = $r(L9), V7e = $r(L9.concat(["g"])), z7e = $r(L9.concat(["g"])), J0e = ea(); +function _P(e) { + var t = e.getItemStyle(), r = e.get("areaColor"); + return r != null && (t.fill = r), t; +} +function Woe(e) { + var t = e.style; + t && (t.stroke = t.stroke || t.fill, t.fill = null); +} +var H7e = ( + /** @class */ + function() { + function e(t) { + var r = new _n(); + this.uid = yI("ec_map_draw"), this._controller = new PD(t.getZr()), this._controllerHost = { + target: r + }, this.group = r, r.add(this._regionsGroup = new _n()), r.add(this._svgGroup = new _n()); + } + return e.prototype.draw = function(t, r, n, i, a) { + var o = t.mainType === "geo", l = t.getData && t.getData(); + o && r.eachComponent({ + mainType: "series", + subType: "map" + }, function(_) { + !l && _.getHostGeoModel() === t && (l = _.getData()); + }); + var u = t.coordinateSystem, d = this._regionsGroup, f = this.group, g = u.getTransformInfo(), v = g.raw, y = g.roam, C = !d.childAt(0) || a; + C ? (f.x = y.x, f.y = y.y, f.scaleX = y.scaleX, f.scaleY = y.scaleY, f.dirty()) : ia(f, y, t); + var A = l && l.getVisual("visualMeta") && l.getVisual("visualMeta").length > 0, S = { + api: n, + geo: u, + mapOrGeoModel: t, + data: l, + isVisualEncodedByVisualMap: A, + isGeo: o, + transformInfoRaw: v + }; + u.resourceType === "geoJSON" ? this._buildGeoJSON(S) : u.resourceType === "geoSVG" && this._buildSVG(S), this._updateController(t, r, n), this._updateMapSelectHandler(t, d, n, i); + }, e.prototype._buildGeoJSON = function(t) { + var r = this._regionsGroupByName = $r(), n = $r(), i = this._regionsGroup, a = t.transformInfoRaw, o = t.mapOrGeoModel, l = t.data, u = t.geo.projection, d = u && u.stream; + function f(y, C) { + return C && (y = C(y)), y && [y[0] * a.scaleX + a.x, y[1] * a.scaleY + a.y]; + } + function g(y) { + for (var C = [], A = !d && u && u.project, S = 0; S < y.length; ++S) { + var _ = f(y[S], A); + _ && C.push(_); + } + return C; + } + function v(y) { + return { + shape: { + points: g(y) + } + }; + } + i.removeAll(), Ee(t.geo.regions, function(y) { + var C = y.name, A = r.get(C), S = n.get(C) || {}, _ = S.dataIdx, E = S.regionModel; + A || (A = r.set(C, new _n()), i.add(A), _ = l ? l.indexOfName(C) : null, E = t.isGeo ? o.getRegionModel(C) : l ? l.getItemModel(_) : null, n.set(C, { + dataIdx: _, + regionModel: E + })); + var I = [], w = []; + Ee(y.geometries, function(R) { + if (R.type === "polygon") { + var M = [R.exterior].concat(R.interiors || []); + d && (M = qoe(M, d)), Ee(M, function(P) { + I.push(new Bu(v(P))); + }); + } else { + var O = R.points; + d && (O = qoe(O, d, !0)), Ee(O, function(P) { + w.push(new $u(v(P))); + }); + } + }); + var x = f(y.getCenter(), u && u.project); + function b(R, M) { + if (R.length) { + var O = new RF({ + culling: !0, + segmentIgnoreThreshold: 1, + shape: { + paths: R + } + }); + A.add(O), Goe(t, O, _, E), Yoe(t, O, C, E, o, _, x), M && (Woe(O), Ee(O.states, Woe)); + } + } + b(I), b(w, !0); + }), r.each(function(y, C) { + var A = n.get(C), S = A.dataIdx, _ = A.regionModel; + Xoe(t, y, C, _, o, S), Koe(t, y, C, _, o), Zoe(t, y, C, _, o); + }, this); + }, e.prototype._buildSVG = function(t) { + var r = t.geo.map, n = t.transformInfoRaw; + this._svgGroup.x = n.x, this._svgGroup.y = n.y, this._svgGroup.scaleX = n.scaleX, this._svgGroup.scaleY = n.scaleY, this._svgResourceChanged(r) && (this._freeSVG(), this._useSVG(r)); + var i = this._svgDispatcherMap = $r(), a = !1; + Ee(this._svgGraphicRecord.named, function(o) { + var l = o.name, u = t.mapOrGeoModel, d = t.data, f = o.svgNodeTagLower, g = o.el, v = d ? d.indexOfName(l) : null, y = u.getRegionModel(l); + if ($7e.get(f) != null && g instanceof Tf && Goe(t, g, v, y), g instanceof Tf && (g.culling = !0), g.z2EmphasisLift = 0, !o.namedFrom && (z7e.get(f) != null && Yoe(t, g, l, y, u, v, null), Xoe(t, g, l, y, u, v), Koe(t, g, l, y, u), V7e.get(f) != null)) { + var C = Zoe(t, g, l, y, u); + C === "self" && (a = !0); + var A = i.get(l) || i.set(l, []); + A.push(g); + } + }, this), this._enableBlurEntireSVG(a, t); + }, e.prototype._enableBlurEntireSVG = function(t, r) { + if (t && r.isGeo) { + var n = r.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle(), i = n.opacity; + this._svgGraphicRecord.root.traverse(function(a) { + if (!a.isGroup) { + fE(a); + var o = a.ensureState("blur").style || {}; + o.opacity == null && i != null && (o.opacity = i), a.ensureState("emphasis"); + } + }); + } + }, e.prototype.remove = function() { + this._regionsGroup.removeAll(), this._regionsGroupByName = null, this._svgGroup.removeAll(), this._freeSVG(), this._controller.dispose(), this._controllerHost = null; + }, e.prototype.findHighDownDispatchers = function(t, r) { + if (t == null) + return []; + var n = r.coordinateSystem; + if (n.resourceType === "geoJSON") { + var i = this._regionsGroupByName; + if (i) { + var a = i.get(t); + return a ? [a] : []; + } + } else if (n.resourceType === "geoSVG") + return this._svgDispatcherMap && this._svgDispatcherMap.get(t) || []; + }, e.prototype._svgResourceChanged = function(t) { + return this._svgMapName !== t; + }, e.prototype._useSVG = function(t) { + var r = Km.getGeoResource(t); + if (r && r.type === "geoSVG") { + var n = r.useGraphic(this.uid); + this._svgGroup.add(n.root), this._svgGraphicRecord = n, this._svgMapName = t; + } + }, e.prototype._freeSVG = function() { + var t = this._svgMapName; + if (t != null) { + var r = Km.getGeoResource(t); + r && r.type === "geoSVG" && r.freeGraphic(this.uid), this._svgGraphicRecord = null, this._svgDispatcherMap = null, this._svgGroup.removeAll(), this._svgMapName = null; + } + }, e.prototype._updateController = function(t, r, n) { + var i = t.coordinateSystem, a = this._controller, o = this._controllerHost; + o.zoomLimit = t.get("scaleLimit"), o.zoom = i.getZoom(), a.enable(t.get("roam") || !1); + var l = t.mainType; + function u() { + var d = { + type: "geoRoam", + componentType: l + }; + return d[l + "Id"] = t.id, d; + } + a.off("pan").on("pan", function(d) { + this._mouseDownFlag = !1, P9(o, d.dx, d.dy), n.dispatchAction($t(u(), { + dx: d.dx, + dy: d.dy, + animation: { + duration: 0 + } + })); + }, this), a.off("zoom").on("zoom", function(d) { + this._mouseDownFlag = !1, N9(o, d.scale, d.originX, d.originY), n.dispatchAction($t(u(), { + zoom: d.scale, + originX: d.originX, + originY: d.originY, + animation: { + duration: 0 + } + })); + }, this), a.setPointerChecker(function(d, f, g) { + return i.containPoint([f, g]) && !JF(d, n, t); + }); + }, e.prototype.resetForLabelLayout = function() { + this.group.traverse(function(t) { + var r = t.getTextContent(); + r && (r.ignore = J0e(r).ignore); + }); + }, e.prototype._updateMapSelectHandler = function(t, r, n, i) { + var a = this; + r.off("mousedown"), r.off("click"), t.get("selectedMode") && (r.on("mousedown", function() { + a._mouseDownFlag = !0; + }), r.on("click", function(o) { + a._mouseDownFlag && (a._mouseDownFlag = !1); + })); + }, e; + }() +); +function Goe(e, t, r, n) { + var i = n.getModel("itemStyle"), a = n.getModel(["emphasis", "itemStyle"]), o = n.getModel(["blur", "itemStyle"]), l = n.getModel(["select", "itemStyle"]), u = _P(i), d = _P(a), f = _P(l), g = _P(o), v = e.data; + if (v) { + var y = v.getItemVisual(r, "style"), C = v.getItemVisual(r, "decal"); + e.isVisualEncodedByVisualMap && y.fill && (u.fill = y.fill), C && (u.decal = Vw(C, e.api)); + } + t.setStyle(u), t.style.strokeNoScale = !0, t.ensureState("emphasis").style = d, t.ensureState("select").style = f, t.ensureState("blur").style = g, fE(t); +} +function Yoe(e, t, r, n, i, a, o) { + var l = e.data, u = e.isGeo, d = l && isNaN(l.get(l.mapDimension("value"), a)), f = l && l.getItemLayout(a); + if (u || d || f && f.showLabel) { + var g = u ? r : a, v = void 0; + (!l || a >= 0) && (v = i); + var y = o ? { + normal: { + align: "center", + verticalAlign: "middle" + } + } : null; + Ec(t, Ll(n), { + labelFetcher: v, + labelDataIndex: g, + defaultText: r + }, y); + var C = t.getTextContent(); + if (C && (J0e(C).ignore = C.ignore, t.textConfig && o)) { + var A = t.getBoundingRect().clone(); + t.textConfig.layoutRect = A, t.textConfig.position = [(o[0] - A.x) / A.width * 100 + "%", (o[1] - A.y) / A.height * 100 + "%"]; + } + t.disableLabelAnimation = !0; + } else + t.removeTextContent(), t.removeTextConfig(), t.disableLabelAnimation = null; +} +function Xoe(e, t, r, n, i, a) { + e.data ? e.data.setItemGraphicEl(a, t) : Tn(t).eventData = { + componentType: "geo", + componentIndex: i.componentIndex, + geoIndex: i.componentIndex, + name: r, + region: n && n.option || {} + }; +} +function Koe(e, t, r, n, i) { + e.data || vI({ + el: t, + componentModel: i, + itemName: r, + // @ts-ignore FIXME:TS fix the "compatible with each other"? + itemTooltipOption: n.get("tooltip") + }); +} +function Zoe(e, t, r, n, i) { + t.highDownSilentOnTouch = !!i.get("selectedMode"); + var a = n.getModel("emphasis"), o = a.get("focus"); + return xs(t, o, a.get("blurScope"), a.get("disabled")), e.isGeo && r4e(t, i, r), o; +} +function qoe(e, t, r) { + var n = [], i; + function a() { + i = []; + } + function o() { + i.length && (n.push(i), i = []); + } + var l = t({ + polygonStart: a, + polygonEnd: o, + lineStart: a, + lineEnd: o, + point: function(u, d) { + isFinite(u) && isFinite(d) && i.push([u, d]); + }, + sphere: function() { + } + }); + return !r && l.polygonStart(), Ee(e, function(u) { + l.lineStart(); + for (var d = 0; d < u.length; d++) + l.point(u[d][0], u[d][1]); + l.lineEnd(); + }), !r && l.polygonEnd(), n; +} +const Q0e = H7e; +var W7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i, a) { + if (!(a && a.type === "mapToggleSelect" && a.from === this.uid)) { + var o = this.group; + if (o.removeAll(), !r.getHostGeoModel()) { + if (this._mapDraw && a && a.type === "geoRoam" && this._mapDraw.resetForLabelLayout(), a && a.type === "geoRoam" && a.componentType === "series" && a.seriesId === r.id) { + var l = this._mapDraw; + l && o.add(l.group); + } else if (r.needsDrawMap) { + var l = this._mapDraw || new Q0e(i); + o.add(l.group), l.draw(r, n, i, this, a), this._mapDraw = l; + } else + this._mapDraw && this._mapDraw.remove(), this._mapDraw = null; + r.get("showLegendSymbol") && n.getComponent("legend") && this._renderSymbols(r, n, i); + } + } + }, t.prototype.remove = function() { + this._mapDraw && this._mapDraw.remove(), this._mapDraw = null, this.group.removeAll(); + }, t.prototype.dispose = function() { + this._mapDraw && this._mapDraw.remove(), this._mapDraw = null; + }, t.prototype._renderSymbols = function(r, n, i) { + var a = r.originalData, o = this.group; + a.each(a.mapDimension("value"), function(l, u) { + if (!isNaN(l)) { + var d = a.getItemLayout(u); + if (!(!d || !d.point)) { + var f = d.point, g = d.offset, v = new ny({ + style: { + // Because the special of map draw. + // Which needs statistic of multiple series and draw on one map. + // And each series also need a symbol with legend color + // + // Layout and visual are put one the different data + // TODO + fill: r.getData().getVisual("style").fill + }, + shape: { + cx: f[0] + g * 9, + cy: f[1], + r: 3 + }, + silent: !0, + // Do not overlap the first series, on which labels are displayed. + z2: 8 + (g ? 0 : dI + 1) + }); + if (!g) { + var y = r.mainSeries.getData(), C = a.getName(u), A = y.indexOfName(C), S = a.getItemModel(u), _ = S.getModel("label"), E = y.getItemGraphicEl(A); + Ec(v, Ll(S), { + labelFetcher: { + getFormattedLabel: function(I, w) { + return r.getFormattedLabel(A, w); + } + }, + defaultText: C + }), v.disableLabelAnimation = !0, _.get("position") || v.setTextConfig({ + position: "bottom" + }), E.onHoverStateChange = function(I) { + CL(v, I); + }; + } + o.add(v); + } + } + }); + }, t.type = "map", t; + }(Ya) +); +const G7e = W7e; +var Y7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.needsDrawMap = !1, r.seriesGroup = [], r.getTooltipPosition = function(n) { + if (n != null) { + var i = this.getData().getName(n), a = this.coordinateSystem, o = a.getRegion(i); + return o && a.dataToPoint(o.getCenter()); + } + }, r; + } + return t.prototype.getInitialData = function(r) { + for (var n = AI(this, { + coordDimensions: ["value"], + encodeDefaulter: Ln(H8, this) + }), i = $r(), a = [], o = 0, l = n.count(); o < l; o++) { + var u = n.getName(o); + i.set(u, !0); + } + var d = Km.load(this.getMapType(), this.option.nameMap, this.option.nameProperty); + return Ee(d.regions, function(f) { + var g = f.name; + i.get(g) || a.push(g); + }), n.appendValues([], a), n; + }, t.prototype.getHostGeoModel = function() { + var r = this.option.geoIndex; + return r != null ? this.ecModel.getComponent("geo", r) : null; + }, t.prototype.getMapType = function() { + return (this.getHostGeoModel() || this).option.map; + }, t.prototype.getRawValue = function(r) { + var n = this.getData(); + return n.get(n.mapDimension("value"), r); + }, t.prototype.getRegionModel = function(r) { + var n = this.getData(); + return n.getItemModel(n.indexOfName(r)); + }, t.prototype.formatTooltip = function(r, n, i) { + for (var a = this.getData(), o = this.getRawValue(r), l = a.getName(r), u = this.seriesGroup, d = [], f = 0; f < u.length; f++) { + var g = u[f].originalData.indexOfName(l), v = a.mapDimension("value"); + isNaN(u[f].originalData.get(v, g)) || d.push(u[f].name); + } + return Fl("section", { + header: d.join(", "), + noHeader: !d.length, + blocks: [Fl("nameValue", { + name: l, + value: o + })] + }); + }, t.prototype.setZoom = function(r) { + this.option.zoom = r; + }, t.prototype.setCenter = function(r) { + this.option.center = r; + }, t.prototype.getLegendIcon = function(r) { + var n = r.icon || "roundRect", i = $s(n, 0, 0, r.itemWidth, r.itemHeight, r.itemStyle.fill); + return i.setStyle(r.itemStyle), i.style.stroke = "none", n.indexOf("empty") > -1 && (i.style.stroke = i.style.fill, i.style.fill = "#fff", i.style.lineWidth = 2), i; + }, t.type = "series.map", t.dependencies = ["geo"], t.layoutMode = "box", t.defaultOption = { + // 一级层叠 + // zlevel: 0, + // 二级层叠 + z: 2, + coordinateSystem: "geo", + // map should be explicitly specified since ec3. + map: "", + // If `geoIndex` is not specified, a exclusive geo will be + // created. Otherwise use the specified geo component, and + // `map` and `mapType` are ignored. + // geoIndex: 0, + // 'center' | 'left' | 'right' | 'x%' | {number} + left: "center", + // 'center' | 'top' | 'bottom' | 'x%' | {number} + top: "center", + // right + // bottom + // width: + // height + // Aspect is width / height. Inited to be geoJson bbox aspect + // This parameter is used for scale this aspect + // Default value: + // for geoSVG source: 1, + // for geoJSON source: 0.75. + aspectScale: null, + // Layout with center and size + // If you want to put map in a fixed size box with right aspect ratio + // This two properties may be more convenient. + // layoutCenter: [50%, 50%] + // layoutSize: 100 + showLegendSymbol: !0, + // Define left-top, right-bottom coords to control view + // For example, [ [180, 90], [-180, -90] ], + // higher priority than center and zoom + boundingCoords: null, + // Default on center of map + center: null, + zoom: 1, + scaleLimit: null, + selectedMode: !0, + label: { + show: !1, + color: "#000" + }, + // scaleLimit: null, + itemStyle: { + borderWidth: 0.5, + borderColor: "#444", + areaColor: "#eee" + }, + emphasis: { + label: { + show: !0, + color: "rgb(100,0,0)" + }, + itemStyle: { + areaColor: "rgba(255,215,0,0.8)" + } + }, + select: { + label: { + show: !0, + color: "rgb(100,0,0)" + }, + itemStyle: { + color: "rgba(255,215,0,0.8)" + } + }, + nameProperty: "name" + }, t; + }(fo) +); +const X7e = Y7e; +function K7e(e, t) { + var r = {}; + return Ee(e, function(n) { + n.each(n.mapDimension("value"), function(i, a) { + var o = "ec-" + n.getName(a); + r[o] = r[o] || [], isNaN(i) || r[o].push(i); + }); + }), e[0].map(e[0].mapDimension("value"), function(n, i) { + for (var a = "ec-" + e[0].getName(i), o = 0, l = 1 / 0, u = -1 / 0, d = r[a].length, f = 0; f < d; f++) + l = Math.min(l, r[a][f]), u = Math.max(u, r[a][f]), o += r[a][f]; + var g; + return t === "min" ? g = l : t === "max" ? g = u : t === "average" ? g = o / d : g = o, d === 0 ? NaN : g; + }); +} +function Z7e(e) { + var t = {}; + e.eachSeriesByType("map", function(r) { + var n = r.getHostGeoModel(), i = n ? "o" + n.id : "i" + r.getMapType(); + (t[i] = t[i] || []).push(r); + }), Ee(t, function(r, n) { + for (var i = K7e(er(r, function(o) { + return o.getData(); + }), r[0].get("mapValueCalculation")), a = 0; a < r.length; a++) + r[a].originalData = r[a].getData(); + for (var a = 0; a < r.length; a++) + r[a].seriesGroup = r, r[a].needsDrawMap = a === 0 && !r[a].getHostGeoModel(), r[a].setData(i.cloneShallow()), r[a].mainSeries = r[0]; + }); +} +function q7e(e) { + var t = {}; + e.eachSeriesByType("map", function(r) { + var n = r.getMapType(); + if (!(r.getHostGeoModel() || t[n])) { + var i = {}; + Ee(r.seriesGroup, function(o) { + var l = o.coordinateSystem, u = o.originalData; + o.get("showLegendSymbol") && e.getComponent("legend") && u.each(u.mapDimension("value"), function(d, f) { + var g = u.getName(f), v = l.getRegion(g); + if (!(!v || isNaN(d))) { + var y = i[g] || 0, C = l.dataToPoint(v.getCenter()); + i[g] = y + 1, u.setItemLayout(f, { + point: C, + offset: y + }); + } + }); + }); + var a = r.getData(); + a.each(function(o) { + var l = a.getName(o), u = a.getItemLayout(o) || {}; + u.showLabel = !i[l], a.setItemLayout(o, u); + }), t[n] = !0; + } + }); +} +var Joe = Jl, J7e = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this) || this; + return n.type = "view", n.dimensions = ["x", "y"], n._roamTransformable = new Pm(), n._rawTransformable = new Pm(), n.name = r, n; + } + return t.prototype.setBoundingRect = function(r, n, i, a) { + return this._rect = new ei(r, n, i, a), this._rect; + }, t.prototype.getBoundingRect = function() { + return this._rect; + }, t.prototype.setViewRect = function(r, n, i, a) { + this._transformTo(r, n, i, a), this._viewRect = new ei(r, n, i, a); + }, t.prototype._transformTo = function(r, n, i, a) { + var o = this.getBoundingRect(), l = this._rawTransformable; + l.transform = o.calculateTransform(new ei(r, n, i, a)); + var u = l.parent; + l.parent = null, l.decomposeTransform(), l.parent = u, this._updateTransform(); + }, t.prototype.setCenter = function(r, n) { + r && (this._center = [yr(r[0], n.getWidth()), yr(r[1], n.getHeight())], this._updateCenterAndZoom()); + }, t.prototype.setZoom = function(r) { + r = r || 1; + var n = this.zoomLimit; + n && (n.max != null && (r = Math.min(n.max, r)), n.min != null && (r = Math.max(n.min, r))), this._zoom = r, this._updateCenterAndZoom(); + }, t.prototype.getDefaultCenter = function() { + var r = this.getBoundingRect(), n = r.x + r.width / 2, i = r.y + r.height / 2; + return [n, i]; + }, t.prototype.getCenter = function() { + return this._center || this.getDefaultCenter(); + }, t.prototype.getZoom = function() { + return this._zoom || 1; + }, t.prototype.getRoamTransform = function() { + return this._roamTransformable.getLocalTransform(); + }, t.prototype._updateCenterAndZoom = function() { + var r = this._rawTransformable.getLocalTransform(), n = this._roamTransformable, i = this.getDefaultCenter(), a = this.getCenter(), o = this.getZoom(); + a = Jl([], a, r), i = Jl([], i, r), n.originX = a[0], n.originY = a[1], n.x = i[0] - a[0], n.y = i[1] - a[1], n.scaleX = n.scaleY = o, this._updateTransform(); + }, t.prototype._updateTransform = function() { + var r = this._roamTransformable, n = this._rawTransformable; + n.parent = r, r.updateTransform(), n.updateTransform(), vF(this.transform || (this.transform = []), n.transform || ku()), this._rawTransform = n.getLocalTransform(), this.invTransform = this.invTransform || [], RE(this.invTransform, this.transform), this.decomposeTransform(); + }, t.prototype.getTransformInfo = function() { + var r = this._rawTransformable, n = this._roamTransformable, i = new Pm(); + return i.transform = n.transform, i.decomposeTransform(), { + roam: { + x: i.x, + y: i.y, + scaleX: i.scaleX, + scaleY: i.scaleY + }, + raw: { + x: r.x, + y: r.y, + scaleX: r.scaleX, + scaleY: r.scaleY + } + }; + }, t.prototype.getViewRect = function() { + return this._viewRect; + }, t.prototype.getViewRectAfterRoam = function() { + var r = this.getBoundingRect().clone(); + return r.applyTransform(this.transform), r; + }, t.prototype.dataToPoint = function(r, n, i) { + var a = n ? this._rawTransform : this.transform; + return i = i || [], a ? Joe(i, r, a) : Wc(i, r); + }, t.prototype.pointToData = function(r) { + var n = this.invTransform; + return n ? Joe([], r, n) : [r[0], r[1]]; + }, t.prototype.convertToPixel = function(r, n, i) { + var a = Qoe(n); + return a === this ? a.dataToPoint(i) : null; + }, t.prototype.convertFromPixel = function(r, n, i) { + var a = Qoe(n); + return a === this ? a.pointToData(i) : null; + }, t.prototype.containPoint = function(r) { + return this.getViewRectAfterRoam().contain(r[0], r[1]); + }, t.dimensions = ["x", "y"], t; + }(Pm) +); +function Qoe(e) { + var t = e.seriesModel; + return t ? t.coordinateSystem : null; +} +const ND = J7e; +var Q7e = { + geoJSON: { + aspectScale: 0.75, + invertLongitute: !0 + }, + geoSVG: { + aspectScale: 1, + invertLongitute: !1 + } +}, eSe = ["lng", "lat"], tSe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this, r) || this; + a.dimensions = eSe, a.type = "geo", a._nameCoordMap = $r(), a.map = n; + var o = i.projection, l = Km.load(n, i.nameMap, i.nameProperty), u = Km.getGeoResource(n); + a.resourceType = u ? u.type : null; + var d = a.regions = l.regions, f = Q7e[u.type]; + a._regionsMap = l.regionsMap, a.regions = l.regions, a.projection = o; + var g; + if (o) + for (var v = 0; v < d.length; v++) { + var y = d[v].getBoundingRect(o); + g = g || y.clone(), g.union(y); + } + else + g = l.boundingRect; + return a.setBoundingRect(g.x, g.y, g.width, g.height), a.aspectScale = o ? 1 : Fn(i.aspectScale, f.aspectScale), a._invertLongitute = o ? !1 : f.invertLongitute, a; + } + return t.prototype._transformTo = function(r, n, i, a) { + var o = this.getBoundingRect(), l = this._invertLongitute; + o = o.clone(), l && (o.y = -o.y - o.height); + var u = this._rawTransformable; + u.transform = o.calculateTransform(new ei(r, n, i, a)); + var d = u.parent; + u.parent = null, u.decomposeTransform(), u.parent = d, l && (u.scaleY = -u.scaleY), this._updateTransform(); + }, t.prototype.getRegion = function(r) { + return this._regionsMap.get(r); + }, t.prototype.getRegionByCoord = function(r) { + for (var n = this.regions, i = 0; i < n.length; i++) { + var a = n[i]; + if (a.type === "geoJSON" && a.contain(r)) + return n[i]; + } + }, t.prototype.addGeoCoord = function(r, n) { + this._nameCoordMap.set(r, n); + }, t.prototype.getGeoCoord = function(r) { + var n = this._regionsMap.get(r); + return this._nameCoordMap.get(r) || n && n.getCenter(); + }, t.prototype.dataToPoint = function(r, n, i) { + if (wr(r) && (r = this.getGeoCoord(r)), r) { + var a = this.projection; + return a && (r = a.project(r)), r && this.projectedToPoint(r, n, i); + } + }, t.prototype.pointToData = function(r) { + var n = this.projection; + return n && (r = n.unproject(r)), r && this.pointToProjected(r); + }, t.prototype.pointToProjected = function(r) { + return e.prototype.pointToData.call(this, r); + }, t.prototype.projectedToPoint = function(r, n, i) { + return e.prototype.dataToPoint.call(this, r, n, i); + }, t.prototype.convertToPixel = function(r, n, i) { + var a = ese(n); + return a === this ? a.dataToPoint(i) : null; + }, t.prototype.convertFromPixel = function(r, n, i) { + var a = ese(n); + return a === this ? a.pointToData(i) : null; + }, t; + }(ND) +); +Fs(tSe, ND); +function ese(e) { + var t = e.geoModel, r = e.seriesModel; + return t ? t.coordinateSystem : r ? r.coordinateSystem || (r.getReferringComponents("geo", tl).models[0] || {}).coordinateSystem : null; +} +const tse = tSe; +function rse(e, t) { + var r = e.get("boundingCoords"); + if (r != null) { + var n = r[0], i = r[1]; + if (isFinite(n[0]) && isFinite(n[1]) && isFinite(i[0]) && isFinite(i[1])) { + var a = this.projection; + if (a) { + var o = n[0], l = n[1], u = i[0], d = i[1]; + n = [1 / 0, 1 / 0], i = [-1 / 0, -1 / 0]; + var f = function(b, R, M, O) { + for (var P = M - b, B = O - R, H = 0; H <= 100; H++) { + var Y = H / 100, X = a.project([b + P * Y, R + B * Y]); + Mm(n, n, X), km(i, i, X); + } + }; + f(o, l, u, l), f(u, l, u, d), f(u, d, o, d), f(o, d, u, l); + } + this.setBoundingRect(n[0], n[1], i[0] - n[0], i[1] - n[1]); + } + } + var g = this.getBoundingRect(), v = e.get("layoutCenter"), y = e.get("layoutSize"), C = t.getWidth(), A = t.getHeight(), S = g.width / g.height * this.aspectScale, _ = !1, E, I; + v && y && (E = [yr(v[0], C), yr(v[1], A)], I = yr(y, Math.min(C, A)), !isNaN(E[0]) && !isNaN(E[1]) && !isNaN(I) && (_ = !0)); + var w; + if (_) + w = {}, S > 1 ? (w.width = I, w.height = I / S) : (w.height = I, w.width = I * S), w.y = E[1] - w.height / 2, w.x = E[0] - w.width / 2; + else { + var x = e.getBoxLayoutParams(); + x.aspect = S, w = js(x, { + width: C, + height: A + }); + } + this.setViewRect(w.x, w.y, w.width, w.height), this.setCenter(e.get("center"), t), this.setZoom(e.get("zoom")); +} +function eXe(e, t) { + Ee(t.get("geoCoord"), function(r, n) { + e.addGeoCoord(n, r); + }); +} +var tXe = ( + /** @class */ + function() { + function e() { + this.dimensions = eSe; + } + return e.prototype.create = function(t, r) { + var n = []; + function i(o) { + return { + nameProperty: o.get("nameProperty"), + aspectScale: o.get("aspectScale"), + projection: o.get("projection") + }; + } + t.eachComponent("geo", function(o, l) { + var u = o.get("map"), d = new tse(u + l, u, $t({ + nameMap: o.get("nameMap") + }, i(o))); + d.zoomLimit = o.get("scaleLimit"), n.push(d), o.coordinateSystem = d, d.model = o, d.resize = rse, d.resize(o, r); + }), t.eachSeries(function(o) { + var l = o.get("coordinateSystem"); + if (l === "geo") { + var u = o.get("geoIndex") || 0; + o.coordinateSystem = n[u]; + } + }); + var a = {}; + return t.eachSeriesByType("map", function(o) { + if (!o.getHostGeoModel()) { + var l = o.getMapType(); + a[l] = a[l] || [], a[l].push(o); + } + }), Ee(a, function(o, l) { + var u = er(o, function(f) { + return f.get("nameMap"); + }), d = new tse(l, l, $t({ + nameMap: fF(u) + }, i(o[0]))); + d.zoomLimit = kl.apply(null, er(o, function(f) { + return f.get("scaleLimit"); + })), n.push(d), d.resize = rse, d.resize(o[0], r), Ee(o, function(f) { + f.coordinateSystem = d, eXe(d, f); + }); + }), n; + }, e.prototype.getFilledRegions = function(t, r, n, i) { + for (var a = (t || []).slice(), o = $r(), l = 0; l < a.length; l++) + o.set(a[l].name, a[l]); + var u = Km.load(r, n, i); + return Ee(u.regions, function(d) { + var f = d.name; + !o.get(f) && a.push({ + name: f + }); + }), a; + }, e; + }() +), rXe = new tXe(); +const rSe = rXe; +var nXe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n, i) { + var a = Km.getGeoResource(r.map); + if (a && a.type === "geoJSON") { + var o = r.itemStyle = r.itemStyle || {}; + "color" in o || (o.color = "#eee"); + } + this.mergeDefaultAndTheme(r, i), uE(r, "label", ["show"]); + }, t.prototype.optionUpdated = function() { + var r = this, n = this.option; + n.regions = rSe.getFilledRegions(n.regions, n.map, n.nameMap, n.nameProperty); + var i = {}; + this._optionModelMap = Cf(n.regions || [], function(a, o) { + var l = o.name; + return l && (a.set(l, new Wa(o, r, r.ecModel)), o.selected && (i[l] = !0)), a; + }, $r()), n.selectedMap || (n.selectedMap = i); + }, t.prototype.getRegionModel = function(r) { + return this._optionModelMap.get(r) || new Wa(null, this, this.ecModel); + }, t.prototype.getFormattedLabel = function(r, n) { + var i = this.getRegionModel(r), a = n === "normal" ? i.get(["label", "formatter"]) : i.get(["emphasis", "label", "formatter"]), o = { + name: r + }; + if (Kr(a)) + return o.status = n, a(o); + if (wr(a)) + return a.replace("{a}", r != null ? r : ""); + }, t.prototype.setZoom = function(r) { + this.option.zoom = r; + }, t.prototype.setCenter = function(r) { + this.option.center = r; + }, t.prototype.select = function(r) { + var n = this.option, i = n.selectedMode; + if (i) { + i !== "multiple" && (n.selectedMap = null); + var a = n.selectedMap || (n.selectedMap = {}); + a[r] = !0; + } + }, t.prototype.unSelect = function(r) { + var n = this.option.selectedMap; + n && (n[r] = !1); + }, t.prototype.toggleSelected = function(r) { + this[this.isSelected(r) ? "unSelect" : "select"](r); + }, t.prototype.isSelected = function(r) { + var n = this.option.selectedMap; + return !!(n && n[r]); + }, t.type = "geo", t.layoutMode = "box", t.defaultOption = { + // zlevel: 0, + z: 0, + show: !0, + left: "center", + top: "center", + // Default value: + // for geoSVG source: 1, + // for geoJSON source: 0.75. + aspectScale: null, + // /// Layout with center and size + // If you want to put map in a fixed size box with right aspect ratio + // This two properties may be more convenient + // layoutCenter: [50%, 50%] + // layoutSize: 100 + silent: !1, + // Map type + map: "", + // Define left-top, right-bottom coords to control view + // For example, [ [180, 90], [-180, -90] ] + boundingCoords: null, + // Default on center of map + center: null, + zoom: 1, + scaleLimit: null, + // selectedMode: false + label: { + show: !1, + color: "#000" + }, + itemStyle: { + borderWidth: 0.5, + borderColor: "#444" + // Default color: + // + geoJSON: #eee + // + geoSVG: null (use SVG original `fill`) + // color: '#eee' + }, + emphasis: { + label: { + show: !0, + color: "rgb(100,0,0)" + }, + itemStyle: { + color: "rgba(255,215,0,0.8)" + } + }, + select: { + label: { + show: !0, + color: "rgb(100,0,0)" + }, + itemStyle: { + color: "rgba(255,215,0,0.8)" + } + }, + regions: [] + // tooltip: { + // show: false + // } + }, t; + }(Mi) +); +const iXe = nXe; +function nse(e, t) { + return e.pointToProjected ? e.pointToProjected(t) : e.pointToData(t); +} +function F9(e, t, r, n) { + var i = e.getZoom(), a = e.getCenter(), o = t.zoom, l = e.projectedToPoint ? e.projectedToPoint(a) : e.dataToPoint(a); + if (t.dx != null && t.dy != null && (l[0] -= t.dx, l[1] -= t.dy, e.setCenter(nse(e, l), n)), o != null) { + if (r) { + var u = r.min || 0, d = r.max || 1 / 0; + o = Math.max(Math.min(i * o, d), u) / i; + } + e.scaleX *= o, e.scaleY *= o; + var f = (t.originX - e.x) * (o - 1), g = (t.originY - e.y) * (o - 1); + e.x -= f, e.y -= g, e.updateTransform(), e.setCenter(nse(e, l), n), e.setZoom(o * i); + } + return { + center: e.getCenter(), + zoom: e.getZoom() + }; +} +var aXe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.focusBlurEnabled = !0, r; + } + return t.prototype.init = function(r, n) { + this._api = n; + }, t.prototype.render = function(r, n, i, a) { + if (this._model = r, !r.get("show")) { + this._mapDraw && this._mapDraw.remove(), this._mapDraw = null; + return; + } + this._mapDraw || (this._mapDraw = new Q0e(i)); + var o = this._mapDraw; + o.draw(r, n, i, this, a), o.group.on("click", this._handleRegionClick, this), o.group.silent = r.get("silent"), this.group.add(o.group), this.updateSelectStatus(r, n, i); + }, t.prototype._handleRegionClick = function(r) { + var n; + Fb(r.target, function(i) { + return (n = Tn(i).eventData) != null; + }, !0), n && this._api.dispatchAction({ + type: "geoToggleSelect", + geoId: this._model.id, + name: n.name + }); + }, t.prototype.updateSelectStatus = function(r, n, i) { + var a = this; + this._mapDraw.group.traverse(function(o) { + var l = Tn(o).eventData; + if (l) + return a._model.isSelected(l.name) ? i.enterSelect(o) : i.leaveSelect(o), !0; + }); + }, t.prototype.findHighDownDispatchers = function(r) { + return this._mapDraw && this._mapDraw.findHighDownDispatchers(r, this._model); + }, t.prototype.dispose = function() { + this._mapDraw && this._mapDraw.remove(); + }, t.type = "geo", t; + }(Co) +); +const oXe = aXe; +function sXe(e, t, r) { + Km.registerMap(e, t, r); +} +function nSe(e) { + e.registerCoordinateSystem("geo", rSe), e.registerComponentModel(iXe), e.registerComponentView(oXe), e.registerImpl("registerMap", sXe), e.registerImpl("getMap", function(r) { + return Km.getMapForUser(r); + }); + function t(r, n) { + n.update = "geo:updateSelectStatus", e.registerAction(n, function(i, a) { + var o = {}, l = []; + return a.eachComponent({ + mainType: "geo", + query: i + }, function(u) { + u[r](i.name); + var d = u.coordinateSystem; + Ee(d.regions, function(g) { + o[g.name] = u.isSelected(g.name) || !1; + }); + var f = []; + Ee(o, function(g, v) { + o[v] && f.push(v); + }), l.push({ + geoIndex: u.componentIndex, + // Use singular, the same naming convention as the event `selectchanged`. + name: f + }); + }), { + selected: o, + allSelected: l, + name: i.name + }; + }); + } + t("toggleSelected", { + type: "geoToggleSelect", + event: "geoselectchanged" + }), t("select", { + type: "geoSelect", + event: "geoselected" + }), t("unSelect", { + type: "geoUnSelect", + event: "geounselected" + }), e.registerAction({ + type: "geoRoam", + event: "geoRoam", + update: "updateTransform" + }, function(r, n, i) { + var a = r.componentType || "series"; + n.eachComponent({ + mainType: a, + query: r + }, function(o) { + var l = o.coordinateSystem; + if (l.type === "geo") { + var u = F9(l, r, o.get("scaleLimit"), i); + o.setCenter && o.setCenter(u.center), o.setZoom && o.setZoom(u.zoom), a === "series" && Ee(o.seriesGroup, function(d) { + d.setCenter(u.center), d.setZoom(u.zoom); + }); + } + }); + }); +} +function lXe(e) { + ii(nSe), e.registerChartView(G7e), e.registerSeriesModel(X7e), e.registerLayout(q7e), e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC, Z7e), Uye("map", e.registerAction); +} +function cXe(e) { + var t = e; + t.hierNode = { + defaultAncestor: null, + ancestor: t, + prelim: 0, + modifier: 0, + change: 0, + shift: 0, + i: 0, + thread: null + }; + for (var r = [t], n, i; n = r.pop(); ) + if (i = n.children, n.isExpand && i.length) + for (var a = i.length, o = a - 1; o >= 0; o--) { + var l = i[o]; + l.hierNode = { + defaultAncestor: null, + ancestor: l, + prelim: 0, + modifier: 0, + change: 0, + shift: 0, + i: o, + thread: null + }, r.push(l); + } +} +function uXe(e, t) { + var r = e.isExpand ? e.children : [], n = e.parentNode.children, i = e.hierNode.i ? n[e.hierNode.i - 1] : null; + if (r.length) { + fXe(e); + var a = (r[0].hierNode.prelim + r[r.length - 1].hierNode.prelim) / 2; + i ? (e.hierNode.prelim = i.hierNode.prelim + t(e, i), e.hierNode.modifier = e.hierNode.prelim - a) : e.hierNode.prelim = a; + } else + i && (e.hierNode.prelim = i.hierNode.prelim + t(e, i)); + e.parentNode.hierNode.defaultAncestor = pXe(e, i, e.parentNode.hierNode.defaultAncestor || n[0], t); +} +function hXe(e) { + var t = e.hierNode.prelim + e.parentNode.hierNode.modifier; + e.setLayout({ + x: t + }, !0), e.hierNode.modifier += e.parentNode.hierNode.modifier; +} +function ise(e) { + return arguments.length ? e : mXe; +} +function v1(e, t) { + return e -= Math.PI / 2, { + x: t * Math.cos(e), + y: t * Math.sin(e) + }; +} +function dXe(e, t) { + return js(e.getBoxLayoutParams(), { + width: t.getWidth(), + height: t.getHeight() + }); +} +function fXe(e) { + for (var t = e.children, r = t.length, n = 0, i = 0; --r >= 0; ) { + var a = t[r]; + a.hierNode.prelim += n, a.hierNode.modifier += n, i += a.hierNode.change, n += a.hierNode.shift + i; + } +} +function pXe(e, t, r, n) { + if (t) { + for (var i = e, a = e, o = a.parentNode.children[0], l = t, u = i.hierNode.modifier, d = a.hierNode.modifier, f = o.hierNode.modifier, g = l.hierNode.modifier; l = Wz(l), a = Gz(a), l && a; ) { + i = Wz(i), o = Gz(o), i.hierNode.ancestor = e; + var v = l.hierNode.prelim + g - a.hierNode.prelim - d + n(l, a); + v > 0 && (vXe(gXe(l, e, r), e, v), d += v, u += v), g += l.hierNode.modifier, d += a.hierNode.modifier, u += i.hierNode.modifier, f += o.hierNode.modifier; + } + l && !Wz(i) && (i.hierNode.thread = l, i.hierNode.modifier += g - u), a && !Gz(o) && (o.hierNode.thread = a, o.hierNode.modifier += d - f, r = e); + } + return r; +} +function Wz(e) { + var t = e.children; + return t.length && e.isExpand ? t[t.length - 1] : e.hierNode.thread; +} +function Gz(e) { + var t = e.children; + return t.length && e.isExpand ? t[0] : e.hierNode.thread; +} +function gXe(e, t, r) { + return e.hierNode.ancestor.parentNode === t.parentNode ? e.hierNode.ancestor : r; +} +function vXe(e, t, r) { + var n = r / (t.hierNode.i - e.hierNode.i); + t.hierNode.change -= n, t.hierNode.shift += r, t.hierNode.modifier += r, t.hierNode.prelim += r, e.hierNode.change += n; +} +function mXe(e, t) { + return e.parentNode === t.parentNode ? 1 : 2; +} +var yXe = ( + /** @class */ + function() { + function e() { + this.parentPoint = [], this.childPoints = []; + } + return e; + }() +), _Xe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new yXe(); + }, t.prototype.buildPath = function(r, n) { + var i = n.childPoints, a = i.length, o = n.parentPoint, l = i[0], u = i[a - 1]; + if (a === 1) { + r.moveTo(o[0], o[1]), r.lineTo(l[0], l[1]); + return; + } + var d = n.orient, f = d === "TB" || d === "BT" ? 0 : 1, g = 1 - f, v = yr(n.forkPosition, 1), y = []; + y[f] = o[f], y[g] = o[g] + (u[g] - o[g]) * v, r.moveTo(o[0], o[1]), r.lineTo(y[0], y[1]), r.moveTo(l[0], l[1]), y[f] = l[f], r.lineTo(y[0], y[1]), y[f] = u[f], r.lineTo(y[0], y[1]), r.lineTo(u[0], u[1]); + for (var C = 1; C < a - 1; C++) { + var A = i[C]; + r.moveTo(A[0], A[1]), y[f] = A[f], r.lineTo(y[0], y[1]); + } + }, t; + }(Ei) +), SXe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._mainGroup = new _n(), r; + } + return t.prototype.init = function(r, n) { + this._controller = new PD(n.getZr()), this._controllerHost = { + target: this.group + }, this.group.add(this._mainGroup); + }, t.prototype.render = function(r, n, i) { + var a = r.getData(), o = r.layoutInfo, l = this._mainGroup, u = r.get("layout"); + u === "radial" ? (l.x = o.x + o.width / 2, l.y = o.y + o.height / 2) : (l.x = o.x, l.y = o.y), this._updateViewCoordSys(r, i), this._updateController(r, n, i); + var d = this._data; + a.diff(d).add(function(f) { + ase(a, f) && ose(a, f, null, l, r); + }).update(function(f, g) { + var v = d.getItemGraphicEl(g); + if (!ase(a, f)) { + v && lse(d, g, v, l, r); + return; + } + ose(a, f, v, l, r); + }).remove(function(f) { + var g = d.getItemGraphicEl(f); + g && lse(d, f, g, l, r); + }).execute(), this._nodeScaleRatio = r.get("nodeScaleRatio"), this._updateNodeAndLinkScale(r), r.get("expandAndCollapse") === !0 && a.eachItemGraphicEl(function(f, g) { + f.off("click").on("click", function() { + i.dispatchAction({ + type: "treeExpandAndCollapse", + seriesId: r.id, + dataIndex: g + }); + }); + }), this._data = a; + }, t.prototype._updateViewCoordSys = function(r, n) { + var i = r.getData(), a = []; + i.each(function(g) { + var v = i.getItemLayout(g); + v && !isNaN(v.x) && !isNaN(v.y) && a.push([+v.x, +v.y]); + }); + var o = [], l = []; + TF(a, o, l); + var u = this._min, d = this._max; + l[0] - o[0] === 0 && (o[0] = u ? u[0] : o[0] - 1, l[0] = d ? d[0] : l[0] + 1), l[1] - o[1] === 0 && (o[1] = u ? u[1] : o[1] - 1, l[1] = d ? d[1] : l[1] + 1); + var f = r.coordinateSystem = new ND(); + f.zoomLimit = r.get("scaleLimit"), f.setBoundingRect(o[0], o[1], l[0] - o[0], l[1] - o[1]), f.setCenter(r.get("center"), n), f.setZoom(r.get("zoom")), this.group.attr({ + x: f.x, + y: f.y, + scaleX: f.scaleX, + scaleY: f.scaleY + }), this._min = o, this._max = l; + }, t.prototype._updateController = function(r, n, i) { + var a = this, o = this._controller, l = this._controllerHost, u = this.group; + o.setPointerChecker(function(d, f, g) { + var v = u.getBoundingRect(); + return v.applyTransform(u.transform), v.contain(f, g) && !JF(d, i, r); + }), o.enable(r.get("roam")), l.zoomLimit = r.get("scaleLimit"), l.zoom = r.coordinateSystem.getZoom(), o.off("pan").off("zoom").on("pan", function(d) { + P9(l, d.dx, d.dy), i.dispatchAction({ + seriesId: r.id, + type: "treeRoam", + dx: d.dx, + dy: d.dy + }); + }).on("zoom", function(d) { + N9(l, d.scale, d.originX, d.originY), i.dispatchAction({ + seriesId: r.id, + type: "treeRoam", + zoom: d.scale, + originX: d.originX, + originY: d.originY + }), a._updateNodeAndLinkScale(r), i.updateLabelLayout(); + }); + }, t.prototype._updateNodeAndLinkScale = function(r) { + var n = r.getData(), i = this._getNodeGlobalScale(r); + n.eachItemGraphicEl(function(a, o) { + a.setSymbolScale(i); + }); + }, t.prototype._getNodeGlobalScale = function(r) { + var n = r.coordinateSystem; + if (n.type !== "view") + return 1; + var i = this._nodeScaleRatio, a = n.scaleX || 1, o = n.getZoom(), l = (o - 1) * i + 1; + return l / a; + }, t.prototype.dispose = function() { + this._controller && this._controller.dispose(), this._controllerHost = null; + }, t.prototype.remove = function() { + this._mainGroup.removeAll(), this._data = null; + }, t.type = "tree", t; + }(Ya) +); +function ase(e, t) { + var r = e.getItemLayout(t); + return r && !isNaN(r.x) && !isNaN(r.y); +} +function ose(e, t, r, n, i) { + var a = !r, o = e.tree.getNodeByDataIndex(t), l = o.getModel(), u = o.getVisual("style").fill, d = o.isExpand === !1 && o.children.length !== 0 ? u : "#fff", f = e.tree.root, g = o.parentNode === f ? o : o.parentNode || o, v = e.getItemGraphicEl(g.dataIndex), y = g.getLayout(), C = v ? { + x: v.__oldX, + y: v.__oldY, + rawX: v.__radialOldRawX, + rawY: v.__radialOldRawY + } : y, A = o.getLayout(); + a ? (r = new AD(e, t, null, { + symbolInnerColor: d, + useNameLabel: !0 + }), r.x = C.x, r.y = C.y) : r.updateData(e, t, null, { + symbolInnerColor: d, + useNameLabel: !0 + }), r.__radialOldRawX = r.__radialRawX, r.__radialOldRawY = r.__radialRawY, r.__radialRawX = A.rawX, r.__radialRawY = A.rawY, n.add(r), e.setItemGraphicEl(t, r), r.__oldX = r.x, r.__oldY = r.y, ia(r, { + x: A.x, + y: A.y + }, i); + var S = r.getSymbolPath(); + if (i.get("layout") === "radial") { + var _ = f.children[0], E = _.getLayout(), I = _.children.length, w = void 0, x = void 0; + if (A.x === E.x && o.isExpand === !0 && _.children.length) { + var b = { + x: (_.children[0].getLayout().x + _.children[I - 1].getLayout().x) / 2, + y: (_.children[0].getLayout().y + _.children[I - 1].getLayout().y) / 2 + }; + w = Math.atan2(b.y - E.y, b.x - E.x), w < 0 && (w = Math.PI * 2 + w), x = b.x < E.x, x && (w = w - Math.PI); + } else + w = Math.atan2(A.y - E.y, A.x - E.x), w < 0 && (w = Math.PI * 2 + w), o.children.length === 0 || o.children.length !== 0 && o.isExpand === !1 ? (x = A.x < E.x, x && (w = w - Math.PI)) : (x = A.x > E.x, x || (w = w - Math.PI)); + var R = x ? "left" : "right", M = l.getModel("label"), O = M.get("rotate"), P = O * (Math.PI / 180), B = S.getTextContent(); + B && (S.setTextConfig({ + position: M.get("position") || R, + rotation: O == null ? -w : P, + origin: "center" + }), B.setStyle("verticalAlign", "middle")); + } + var H = l.get(["emphasis", "focus"]), Y = H === "relative" ? oR(o.getAncestorsIndices(), o.getDescendantIndices()) : H === "ancestor" ? o.getAncestorsIndices() : H === "descendant" ? o.getDescendantIndices() : null; + Y && (Tn(r).focus = Y), bXe(i, o, f, r, C, y, A, n), r.__edge && (r.onHoverStateChange = function(X) { + if (X !== "blur") { + var ee = o.parentNode && e.getItemGraphicEl(o.parentNode.dataIndex); + ee && ee.hoverState === vD || CL(r.__edge, X); + } + }); +} +function bXe(e, t, r, n, i, a, o, l) { + var u = t.getModel(), d = e.get("edgeShape"), f = e.get("layout"), g = e.getOrient(), v = e.get(["lineStyle", "curveness"]), y = e.get("edgeForkPosition"), C = u.getModel("lineStyle").getLineStyle(), A = n.__edge; + if (d === "curve") + t.parentNode && t.parentNode !== r && (A || (A = n.__edge = new yD({ + shape: MW(f, g, v, i, i) + })), ia(A, { + shape: MW(f, g, v, a, o) + }, e)); + else if (d === "polyline" && f === "orthogonal" && t !== r && t.children && t.children.length !== 0 && t.isExpand === !0) { + for (var S = t.children, _ = [], E = 0; E < S.length; E++) { + var I = S[E].getLayout(); + _.push([I.x, I.y]); + } + A || (A = n.__edge = new _Xe({ + shape: { + parentPoint: [o.x, o.y], + childPoints: [[o.x, o.y]], + orient: g, + forkPosition: y + } + })), ia(A, { + shape: { + parentPoint: [o.x, o.y], + childPoints: _ + } + }, e); + } + A && !(d === "polyline" && !t.isExpand) && (A.useStyle(Jr({ + strokeNoScale: !0, + fill: null + }, C)), bc(A, u, "lineStyle"), fE(A), l.add(A)); +} +function sse(e, t, r, n, i) { + var a = t.tree.root, o = iSe(a, e), l = o.source, u = o.sourceLayout, d = t.getItemGraphicEl(e.dataIndex); + if (d) { + var f = t.getItemGraphicEl(l.dataIndex), g = f.__edge, v = d.__edge || (l.isExpand === !1 || l.children.length === 1 ? g : void 0), y = n.get("edgeShape"), C = n.get("layout"), A = n.get("orient"), S = n.get(["lineStyle", "curveness"]); + v && (y === "curve" ? v0(v, { + shape: MW(C, A, S, u, u), + style: { + opacity: 0 + } + }, n, { + cb: function() { + r.remove(v); + }, + removeOpt: i + }) : y === "polyline" && n.get("layout") === "orthogonal" && v0(v, { + shape: { + parentPoint: [u.x, u.y], + childPoints: [[u.x, u.y]] + }, + style: { + opacity: 0 + } + }, n, { + cb: function() { + r.remove(v); + }, + removeOpt: i + })); + } +} +function iSe(e, t) { + for (var r = t.parentNode === e ? t : t.parentNode || t, n; n = r.getLayout(), n == null; ) + r = r.parentNode === e ? r : r.parentNode || r; + return { + source: r, + sourceLayout: n + }; +} +function lse(e, t, r, n, i) { + var a = e.tree.getNodeByDataIndex(t), o = e.tree.root, l = iSe(o, a).sourceLayout, u = { + duration: i.get("animationDurationUpdate"), + easing: i.get("animationEasingUpdate") + }; + v0(r, { + x: l.x + 1, + y: l.y + 1 + }, i, { + cb: function() { + n.remove(r), e.setItemGraphicEl(t, null); + }, + removeOpt: u + }), r.fadeOut(null, e.hostModel, { + fadeLabel: !0, + animation: u + }), a.children.forEach(function(d) { + sse(d, e, n, i, u); + }), sse(a, e, n, i, u); +} +function MW(e, t, r, n, i) { + var a, o, l, u, d, f, g, v; + if (e === "radial") { + d = n.rawX, g = n.rawY, f = i.rawX, v = i.rawY; + var y = v1(d, g), C = v1(d, g + (v - g) * r), A = v1(f, v + (g - v) * r), S = v1(f, v); + return { + x1: y.x || 0, + y1: y.y || 0, + x2: S.x || 0, + y2: S.y || 0, + cpx1: C.x || 0, + cpy1: C.y || 0, + cpx2: A.x || 0, + cpy2: A.y || 0 + }; + } else + d = n.x, g = n.y, f = i.x, v = i.y, (t === "LR" || t === "RL") && (a = d + (f - d) * r, o = g, l = f + (d - f) * r, u = v), (t === "TB" || t === "BT") && (a = d, o = g + (v - g) * r, l = f, u = v + (g - v) * r); + return { + x1: d, + y1: g, + x2: f, + y2: v, + cpx1: a, + cpy1: o, + cpx2: l, + cpy2: u + }; +} +const EXe = SXe; +var Sf = ea(); +function aSe(e) { + var t = e.mainData, r = e.datas; + r || (r = { + main: t + }, e.datasAttr = { + main: "data" + }), e.datas = e.mainData = null, oSe(t, r, e), Ee(r, function(n) { + Ee(t.TRANSFERABLE_METHODS, function(i) { + n.wrapMethod(i, Ln(CXe, e)); + }); + }), t.wrapMethod("cloneShallow", Ln(wXe, e)), Ee(t.CHANGABLE_METHODS, function(n) { + t.wrapMethod(n, Ln(TXe, e)); + }), Qc(r[t.dataType] === t); +} +function CXe(e, t) { + if (AXe(this)) { + var r = $t({}, Sf(this).datas); + r[this.dataType] = t, oSe(t, r, e); + } else + B9(t, this.dataType, Sf(this).mainData, e); + return t; +} +function TXe(e, t) { + return e.struct && e.struct.update(), t; +} +function wXe(e, t) { + return Ee(Sf(t).datas, function(r, n) { + r !== t && B9(r.cloneShallow(), n, t, e); + }), t; +} +function IXe(e) { + var t = Sf(this).mainData; + return e == null || t == null ? t : Sf(t).datas[e]; +} +function xXe() { + var e = Sf(this).mainData; + return e == null ? [{ + data: e + }] : er(Ri(Sf(e).datas), function(t) { + return { + type: t, + data: Sf(e).datas[t] + }; + }); +} +function AXe(e) { + return Sf(e).mainData === e; +} +function oSe(e, t, r) { + Sf(e).datas = {}, Ee(t, function(n, i) { + B9(n, i, e, r); + }); +} +function B9(e, t, r, n) { + Sf(r).datas[t] = e, Sf(e).mainData = r, e.dataType = t, n.struct && (e[n.structAttr] = n.struct, n.struct[n.datasAttr[t]] = e), e.getLinkedData = IXe, e.getLinkedDataAll = xXe; +} +var RXe = ( + /** @class */ + function() { + function e(t, r) { + this.depth = 0, this.height = 0, this.dataIndex = -1, this.children = [], this.viewChildren = [], this.isExpand = !1, this.name = t || "", this.hostTree = r; + } + return e.prototype.isRemoved = function() { + return this.dataIndex < 0; + }, e.prototype.eachNode = function(t, r, n) { + Kr(t) && (n = r, r = t, t = null), t = t || {}, wr(t) && (t = { + order: t + }); + var i = t.order || "preorder", a = this[t.attr || "children"], o; + i === "preorder" && (o = r.call(n, this)); + for (var l = 0; !o && l < a.length; l++) + a[l].eachNode(t, r, n); + i === "postorder" && r.call(n, this); + }, e.prototype.updateDepthAndHeight = function(t) { + var r = 0; + this.depth = t; + for (var n = 0; n < this.children.length; n++) { + var i = this.children[n]; + i.updateDepthAndHeight(t + 1), i.height > r && (r = i.height); + } + this.height = r + 1; + }, e.prototype.getNodeById = function(t) { + if (this.getId() === t) + return this; + for (var r = 0, n = this.children, i = n.length; r < i; r++) { + var a = n[r].getNodeById(t); + if (a) + return a; + } + }, e.prototype.contains = function(t) { + if (t === this) + return !0; + for (var r = 0, n = this.children, i = n.length; r < i; r++) { + var a = n[r].contains(t); + if (a) + return a; + } + }, e.prototype.getAncestors = function(t) { + for (var r = [], n = t ? this : this.parentNode; n; ) + r.push(n), n = n.parentNode; + return r.reverse(), r; + }, e.prototype.getAncestorsIndices = function() { + for (var t = [], r = this; r; ) + t.push(r.dataIndex), r = r.parentNode; + return t.reverse(), t; + }, e.prototype.getDescendantIndices = function() { + var t = []; + return this.eachNode(function(r) { + t.push(r.dataIndex); + }), t; + }, e.prototype.getValue = function(t) { + var r = this.hostTree.data; + return r.getStore().get(r.getDimensionIndex(t || "value"), this.dataIndex); + }, e.prototype.setLayout = function(t, r) { + this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, t, r); + }, e.prototype.getLayout = function() { + return this.hostTree.data.getItemLayout(this.dataIndex); + }, e.prototype.getModel = function(t) { + if (!(this.dataIndex < 0)) { + var r = this.hostTree, n = r.data.getItemModel(this.dataIndex); + return n.getModel(t); + } + }, e.prototype.getLevelModel = function() { + return (this.hostTree.levelModels || [])[this.depth]; + }, e.prototype.setVisual = function(t, r) { + this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, t, r); + }, e.prototype.getVisual = function(t) { + return this.hostTree.data.getItemVisual(this.dataIndex, t); + }, e.prototype.getRawIndex = function() { + return this.hostTree.data.getRawIndex(this.dataIndex); + }, e.prototype.getId = function() { + return this.hostTree.data.getId(this.dataIndex); + }, e.prototype.getChildIndex = function() { + if (this.parentNode) { + for (var t = this.parentNode.children, r = 0; r < t.length; ++r) + if (t[r] === this) + return r; + return -1; + } + return -1; + }, e.prototype.isAncestorOf = function(t) { + for (var r = t.parentNode; r; ) { + if (r === this) + return !0; + r = r.parentNode; + } + return !1; + }, e.prototype.isDescendantOf = function(t) { + return t !== this && t.isAncestorOf(this); + }, e; + }() +), DXe = ( + /** @class */ + function() { + function e(t) { + this.type = "tree", this._nodes = [], this.hostModel = t; + } + return e.prototype.eachNode = function(t, r, n) { + this.root.eachNode(t, r, n); + }, e.prototype.getNodeByDataIndex = function(t) { + var r = this.data.getRawIndex(t); + return this._nodes[r]; + }, e.prototype.getNodeById = function(t) { + return this.root.getNodeById(t); + }, e.prototype.update = function() { + for (var t = this.data, r = this._nodes, n = 0, i = r.length; n < i; n++) + r[n].dataIndex = -1; + for (var n = 0, i = t.count(); n < i; n++) + r[t.getRawIndex(n)].dataIndex = n; + }, e.prototype.clearLayouts = function() { + this.data.clearItemLayouts(); + }, e.createTree = function(t, r, n) { + var i = new e(r), a = [], o = 1; + l(t); + function l(f, g) { + var v = f.value; + o = Math.max(o, qt(v) ? v.length : 1), a.push(f); + var y = new RXe(ml(f.name, ""), i); + g ? OXe(y, g) : i.root = y, i._nodes.push(y); + var C = f.children; + if (C) + for (var A = 0; A < C.length; A++) + l(C[A], y); + } + i.root.updateDepthAndHeight(0); + var u = II(a, { + coordDimensions: ["value"], + dimensionsCount: o + }).dimensions, d = new Ql(u, r); + return d.initData(a), n && n(d), aSe({ + mainData: d, + struct: i, + structAttr: "tree" + }), i.update(), i; + }, e; + }() +); +function OXe(e, t) { + var r = t.children; + e.parentNode !== t && (r.push(e), e.parentNode = t); +} +const U9 = DXe; +function RR(e, t, r) { + if (e && di(t, e.type) >= 0) { + var n = r.getData().tree.root, i = e.targetNode; + if (wr(i) && (i = n.getNodeById(i)), i && n.contains(i)) + return { + node: i + }; + var a = e.targetNodeId; + if (a != null && (i = n.getNodeById(a))) + return { + node: i + }; + } +} +function sSe(e) { + for (var t = []; e; ) + e = e.parentNode, e && t.push(e); + return t.reverse(); +} +function j9(e, t) { + var r = sSe(e); + return di(r, t) >= 0; +} +function eB(e, t) { + for (var r = []; e; ) { + var n = e.dataIndex; + r.push({ + name: e.name, + dataIndex: n, + value: t.getRawValue(n) + }), e = e.parentNode; + } + return r.reverse(), r; +} +var MXe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.hasSymbolVisual = !0, r.ignoreStyleOnData = !0, r; + } + return t.prototype.getInitialData = function(r) { + var n = { + name: r.name, + children: r.data + }, i = r.leaves || {}, a = new Wa(i, this, this.ecModel), o = U9.createTree(n, this, l); + function l(g) { + g.wrapMethod("getItemModel", function(v, y) { + var C = o.getNodeByDataIndex(y); + return C && C.children.length && C.isExpand || (v.parentModel = a), v; + }); + } + var u = 0; + o.eachNode("preorder", function(g) { + g.depth > u && (u = g.depth); + }); + var d = r.expandAndCollapse, f = d && r.initialTreeDepth >= 0 ? r.initialTreeDepth : u; + return o.root.eachNode("preorder", function(g) { + var v = g.hostTree.data.getRawDataItem(g.dataIndex); + g.isExpand = v && v.collapsed != null ? !v.collapsed : g.depth <= f; + }), o.data; + }, t.prototype.getOrient = function() { + var r = this.get("orient"); + return r === "horizontal" ? r = "LR" : r === "vertical" && (r = "TB"), r; + }, t.prototype.setZoom = function(r) { + this.option.zoom = r; + }, t.prototype.setCenter = function(r) { + this.option.center = r; + }, t.prototype.formatTooltip = function(r, n, i) { + for (var a = this.getData().tree, o = a.root.children[0], l = a.getNodeByDataIndex(r), u = l.getValue(), d = l.name; l && l !== o; ) + d = l.parentNode.name + "." + d, l = l.parentNode; + return Fl("nameValue", { + name: d, + value: u, + noValue: isNaN(u) || u == null + }); + }, t.prototype.getDataParams = function(r) { + var n = e.prototype.getDataParams.apply(this, arguments), i = this.getData().tree.getNodeByDataIndex(r); + return n.treeAncestors = eB(i, this), n.collapsed = !i.isExpand, n; + }, t.type = "series.tree", t.layoutMode = "box", t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "view", + // the position of the whole view + left: "12%", + top: "12%", + right: "12%", + bottom: "12%", + // the layout of the tree, two value can be selected, 'orthogonal' or 'radial' + layout: "orthogonal", + // value can be 'polyline' + edgeShape: "curve", + edgeForkPosition: "50%", + // true | false | 'move' | 'scale', see module:component/helper/RoamController. + roam: !1, + // Symbol size scale ratio in roam + nodeScaleRatio: 0.4, + // Default on center of graph + center: null, + zoom: 1, + orient: "LR", + symbol: "emptyCircle", + symbolSize: 7, + expandAndCollapse: !0, + initialTreeDepth: 2, + lineStyle: { + color: "#ccc", + width: 1.5, + curveness: 0.5 + }, + itemStyle: { + color: "lightsteelblue", + // borderColor: '#c23531', + borderWidth: 1.5 + }, + label: { + show: !0 + }, + animationEasing: "linear", + animationDuration: 700, + animationDurationUpdate: 500 + }, t; + }(fo) +); +const kXe = MXe; +function PXe(e, t, r) { + for (var n = [e], i = [], a; a = n.pop(); ) + if (i.push(a), a.isExpand) { + var o = a.children; + if (o.length) + for (var l = 0; l < o.length; l++) + n.push(o[l]); + } + for (; a = i.pop(); ) + t(a, r); +} +function zA(e, t) { + for (var r = [e], n; n = r.pop(); ) + if (t(n), n.isExpand) { + var i = n.children; + if (i.length) + for (var a = i.length - 1; a >= 0; a--) + r.push(i[a]); + } +} +function NXe(e, t) { + e.eachSeriesByType("tree", function(r) { + LXe(r, t); + }); +} +function LXe(e, t) { + var r = dXe(e, t); + e.layoutInfo = r; + var n = e.get("layout"), i = 0, a = 0, o = null; + n === "radial" ? (i = 2 * Math.PI, a = Math.min(r.height, r.width) / 2, o = ise(function(I, w) { + return (I.parentNode === w.parentNode ? 1 : 2) / I.depth; + })) : (i = r.width, a = r.height, o = ise()); + var l = e.getData().tree.root, u = l.children[0]; + if (u) { + cXe(l), PXe(u, uXe, o), l.hierNode.modifier = -u.hierNode.prelim, zA(u, hXe); + var d = u, f = u, g = u; + zA(u, function(I) { + var w = I.getLayout().x; + w < d.getLayout().x && (d = I), w > f.getLayout().x && (f = I), I.depth > g.depth && (g = I); + }); + var v = d === f ? 1 : o(d, f) / 2, y = v - d.getLayout().x, C = 0, A = 0, S = 0, _ = 0; + if (n === "radial") + C = i / (f.getLayout().x + v + y), A = a / (g.depth - 1 || 1), zA(u, function(I) { + S = (I.getLayout().x + y) * C, _ = (I.depth - 1) * A; + var w = v1(S, _); + I.setLayout({ + x: w.x, + y: w.y, + rawX: S, + rawY: _ + }, !0); + }); + else { + var E = e.getOrient(); + E === "RL" || E === "LR" ? (A = a / (f.getLayout().x + v + y), C = i / (g.depth - 1 || 1), zA(u, function(I) { + _ = (I.getLayout().x + y) * A, S = E === "LR" ? (I.depth - 1) * C : i - (I.depth - 1) * C, I.setLayout({ + x: S, + y: _ + }, !0); + })) : (E === "TB" || E === "BT") && (C = i / (f.getLayout().x + v + y), A = a / (g.depth - 1 || 1), zA(u, function(I) { + S = (I.getLayout().x + y) * C, _ = E === "TB" ? (I.depth - 1) * A : a - (I.depth - 1) * A, I.setLayout({ + x: S, + y: _ + }, !0); + })); + } + } +} +function FXe(e) { + e.eachSeriesByType("tree", function(t) { + var r = t.getData(), n = r.tree; + n.eachNode(function(i) { + var a = i.getModel(), o = a.getModel("itemStyle").getItemStyle(), l = r.ensureUniqueItemVisual(i.dataIndex, "style"); + $t(l, o); + }); + }); +} +function BXe(e) { + e.registerAction({ + type: "treeExpandAndCollapse", + event: "treeExpandAndCollapse", + update: "update" + }, function(t, r) { + r.eachComponent({ + mainType: "series", + subType: "tree", + query: t + }, function(n) { + var i = t.dataIndex, a = n.getData().tree, o = a.getNodeByDataIndex(i); + o.isExpand = !o.isExpand; + }); + }), e.registerAction({ + type: "treeRoam", + event: "treeRoam", + // Here we set 'none' instead of 'update', because roam action + // just need to update the transform matrix without having to recalculate + // the layout. So don't need to go through the whole update process, such + // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on. + update: "none" + }, function(t, r, n) { + r.eachComponent({ + mainType: "series", + subType: "tree", + query: t + }, function(i) { + var a = i.coordinateSystem, o = F9(a, t, void 0, n); + i.setCenter && i.setCenter(o.center), i.setZoom && i.setZoom(o.zoom); + }); + }); +} +function UXe(e) { + e.registerChartView(EXe), e.registerSeriesModel(kXe), e.registerLayout(NXe), e.registerVisual(FXe), BXe(e); +} +var cse = ["treemapZoomToNode", "treemapRender", "treemapMove"]; +function jXe(e) { + for (var t = 0; t < cse.length; t++) + e.registerAction({ + type: cse[t], + update: "updateView" + }, Ls); + e.registerAction({ + type: "treemapRootToNode", + update: "updateView" + }, function(r, n) { + n.eachComponent({ + mainType: "series", + subType: "treemap", + query: r + }, i); + function i(a, o) { + var l = ["treemapZoomToNode", "treemapRootToNode"], u = RR(r, l, a); + if (u) { + var d = a.getViewRoot(); + d && (r.direction = j9(d, u.node) ? "rollUp" : "drillDown"), a.resetViewRoot(u.node); + } + } + }); +} +function lSe(e) { + var t = e.getData(), r = t.tree, n = {}; + r.eachNode(function(i) { + for (var a = i; a && a.depth > 1; ) + a = a.parentNode; + var o = sW(e.ecModel, a.name || a.dataIndex + "", n); + i.setVisual("decal", o); + }); +} +var $Xe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.preventUsingHoverLayer = !0, r; + } + return t.prototype.getInitialData = function(r, n) { + var i = { + name: r.name, + children: r.data + }; + cSe(i); + var a = r.levels || [], o = this.designatedVisualItemStyle = {}, l = new Wa({ + itemStyle: o + }, this, n); + a = r.levels = VXe(a, n); + var u = er(a || [], function(g) { + return new Wa(g, l, n); + }, this), d = U9.createTree(i, this, f); + function f(g) { + g.wrapMethod("getItemModel", function(v, y) { + var C = d.getNodeByDataIndex(y), A = C ? u[C.depth] : null; + return v.parentModel = A || l, v; + }); + } + return d.data; + }, t.prototype.optionUpdated = function() { + this.resetViewRoot(); + }, t.prototype.formatTooltip = function(r, n, i) { + var a = this.getData(), o = this.getRawValue(r), l = a.getName(r); + return Fl("nameValue", { + name: l, + value: o + }); + }, t.prototype.getDataParams = function(r) { + var n = e.prototype.getDataParams.apply(this, arguments), i = this.getData().tree.getNodeByDataIndex(r); + return n.treeAncestors = eB(i, this), n.treePathInfo = n.treeAncestors, n; + }, t.prototype.setLayoutInfo = function(r) { + this.layoutInfo = this.layoutInfo || {}, $t(this.layoutInfo, r); + }, t.prototype.mapIdToIndex = function(r) { + var n = this._idIndexMap; + n || (n = this._idIndexMap = $r(), this._idIndexMapCount = 0); + var i = n.get(r); + return i == null && n.set(r, i = this._idIndexMapCount++), i; + }, t.prototype.getViewRoot = function() { + return this._viewRoot; + }, t.prototype.resetViewRoot = function(r) { + r ? this._viewRoot = r : r = this._viewRoot; + var n = this.getRawData().tree.root; + (!r || r !== n && !n.contains(r)) && (this._viewRoot = n); + }, t.prototype.enableAriaDecal = function() { + lSe(this); + }, t.type = "series.treemap", t.layoutMode = "box", t.defaultOption = { + // Disable progressive rendering + progressive: 0, + // size: ['80%', '80%'], // deprecated, compatible with ec2. + left: "center", + top: "middle", + width: "80%", + height: "80%", + sort: !0, + clipWindow: "origin", + squareRatio: 0.5 * (1 + Math.sqrt(5)), + leafDepth: null, + drillDownIcon: "▶", + // to align specialized icon. ▷▶❒❐▼✚ + zoomToNodeRatio: 0.32 * 0.32, + roam: !0, + nodeClick: "zoomToNode", + animation: !0, + animationDurationUpdate: 900, + animationEasing: "quinticInOut", + breadcrumb: { + show: !0, + height: 22, + left: "center", + top: "bottom", + // right + // bottom + emptyItemWidth: 25, + itemStyle: { + color: "rgba(0,0,0,0.7)", + textStyle: { + color: "#fff" + } + }, + emphasis: { + itemStyle: { + color: "rgba(0,0,0,0.9)" + // '#5793f3', + } + } + }, + label: { + show: !0, + // Do not use textDistance, for ellipsis rect just the same as treemap node rect. + distance: 0, + padding: 5, + position: "inside", + // formatter: null, + color: "#fff", + overflow: "truncate" + // align + // verticalAlign + }, + upperLabel: { + show: !1, + position: [0, "50%"], + height: 20, + // formatter: null, + // color: '#fff', + overflow: "truncate", + // align: null, + verticalAlign: "middle" + }, + itemStyle: { + color: null, + colorAlpha: null, + colorSaturation: null, + borderWidth: 0, + gapWidth: 0, + borderColor: "#fff", + borderColorSaturation: null + // If specified, borderColor will be ineffective, and the + // border color is evaluated by color of current node and + // borderColorSaturation. + }, + emphasis: { + upperLabel: { + show: !0, + position: [0, "50%"], + overflow: "truncate", + verticalAlign: "middle" + } + }, + visualDimension: 0, + visualMin: null, + visualMax: null, + color: [], + // level[n].color (if necessary). + // + Specify color list of each level. level[0].color would be global + // color list if not specified. (see method `setDefault`). + // + But set as a empty array to forbid fetch color from global palette + // when using nodeModel.get('color'), otherwise nodes on deep level + // will always has color palette set and are not able to inherit color + // from parent node. + // + TreemapSeries.color can not be set as 'none', otherwise effect + // legend color fetching (see seriesColor.js). + colorAlpha: null, + colorSaturation: null, + colorMappingBy: "index", + visibleMin: 10, + // be rendered. Only works when sort is 'asc' or 'desc'. + childrenVisibleMin: null, + // grandchildren will not show. + // Why grandchildren? If not grandchildren but children, + // some siblings show children and some not, + // the appearance may be mess and not consistent, + levels: [] + // Each item: { + // visibleMin, itemStyle, visualDimension, label + // } + }, t; + }(fo) +); +function cSe(e) { + var t = 0; + Ee(e.children, function(n) { + cSe(n); + var i = n.value; + qt(i) && (i = i[0]), t += i; + }); + var r = e.value; + qt(r) && (r = r[0]), (r == null || isNaN(r)) && (r = t), r < 0 && (r = 0), qt(e.value) ? e.value[0] = r : e.value = r; +} +function VXe(e, t) { + var r = qa(t.get("color")), n = qa(t.get(["aria", "decal", "decals"])); + if (r) { + e = e || []; + var i, a; + Ee(e, function(l) { + var u = new Wa(l), d = u.get("color"), f = u.get("decal"); + (u.get(["itemStyle", "color"]) || d && d !== "none") && (i = !0), (u.get(["itemStyle", "decal"]) || f && f !== "none") && (a = !0); + }); + var o = e[0] || (e[0] = {}); + return i || (o.color = r.slice()), !a && n && (o.decal = n.slice()), e; + } +} +const zXe = $Xe; +var HXe = 8, use = 8, Yz = 5, WXe = ( + /** @class */ + function() { + function e(t) { + this.group = new _n(), t.add(this.group); + } + return e.prototype.render = function(t, r, n, i) { + var a = t.getModel("breadcrumb"), o = this.group; + if (o.removeAll(), !(!a.get("show") || !n)) { + var l = a.getModel("itemStyle"), u = a.getModel("emphasis"), d = l.getModel("textStyle"), f = u.getModel(["itemStyle", "textStyle"]), g = { + pos: { + left: a.get("left"), + right: a.get("right"), + top: a.get("top"), + bottom: a.get("bottom") + }, + box: { + width: r.getWidth(), + height: r.getHeight() + }, + emptyItemWidth: a.get("emptyItemWidth"), + totalWidth: 0, + renderList: [] + }; + this._prepare(n, g, d), this._renderContent(t, g, l, u, d, f, i), BF(o, g.pos, g.box); + } + }, e.prototype._prepare = function(t, r, n) { + for (var i = t; i; i = i.parentNode) { + var a = ml(i.getModel().get("name"), ""), o = n.getTextRect(a), l = Math.max(o.width + HXe * 2, r.emptyItemWidth); + r.totalWidth += l + use, r.renderList.push({ + node: i, + text: a, + width: l + }); + } + }, e.prototype._renderContent = function(t, r, n, i, a, o, l) { + for (var u = 0, d = r.emptyItemWidth, f = t.get(["breadcrumb", "height"]), g = lHe(r.pos, r.box), v = r.totalWidth, y = r.renderList, C = i.getModel("itemStyle").getItemStyle(), A = y.length - 1; A >= 0; A--) { + var S = y[A], _ = S.node, E = S.width, I = S.text; + v > g.width && (v -= E - d, E = d, I = null); + var w = new Bu({ + shape: { + points: GXe(u, 0, E, f, A === y.length - 1, A === 0) + }, + style: Jr(n.getItemStyle(), { + lineJoin: "bevel" + }), + textContent: new Hi({ + style: uo(a, { + text: I + }) + }), + textConfig: { + position: "inside" + }, + z2: dI * 1e4, + onclick: Ln(l, _) + }); + w.disableLabelAnimation = !0, w.getTextContent().ensureState("emphasis").style = uo(o, { + text: I + }), w.ensureState("emphasis").style = C, xs(w, i.get("focus"), i.get("blurScope"), i.get("disabled")), this.group.add(w), YXe(w, t, _), u += E + use; + } + }, e.prototype.remove = function() { + this.group.removeAll(); + }, e; + }() +); +function GXe(e, t, r, n, i, a) { + var o = [[i ? e : e - Yz, t], [e + r, t], [e + r, t + n], [i ? e : e - Yz, t + n]]; + return !a && o.splice(2, 0, [e + r + Yz, t + n / 2]), !i && o.push([e, t + n / 2]), o; +} +function YXe(e, t, r) { + Tn(e).eventData = { + componentType: "series", + componentSubType: "treemap", + componentIndex: t.componentIndex, + seriesIndex: t.seriesIndex, + seriesName: t.name, + seriesType: "treemap", + selfType: "breadcrumb", + nodeData: { + dataIndex: r && r.dataIndex, + name: r && r.name + }, + treePathInfo: r && eB(r, t) + }; +} +const XXe = WXe; +var KXe = ( + /** @class */ + function() { + function e() { + this._storage = [], this._elExistsMap = {}; + } + return e.prototype.add = function(t, r, n, i, a) { + return this._elExistsMap[t.id] ? !1 : (this._elExistsMap[t.id] = !0, this._storage.push({ + el: t, + target: r, + duration: n, + delay: i, + easing: a + }), !0); + }, e.prototype.finished = function(t) { + return this._finishedCallback = t, this; + }, e.prototype.start = function() { + for (var t = this, r = this._storage.length, n = function() { + r--, r <= 0 && (t._storage.length = 0, t._elExistsMap = {}, t._finishedCallback && t._finishedCallback()); + }, i = 0, a = this._storage.length; i < a; i++) { + var o = this._storage[i]; + o.el.animateTo(o.target, { + duration: o.duration, + delay: o.delay, + easing: o.easing, + setToFinal: !0, + done: n, + aborted: n + }); + } + return this; + }, e; + }() +); +function ZXe() { + return new KXe(); +} +var kW = _n, hse = Xi, dse = 3, fse = "label", pse = "upperLabel", qXe = dI * 10, JXe = dI * 2, QXe = dI * 3, vb = dE([ + ["fill", "color"], + // `borderColor` and `borderWidth` has been occupied, + // so use `stroke` to indicate the stroke of the rect. + ["stroke", "strokeColor"], + ["lineWidth", "strokeWidth"], + ["shadowBlur"], + ["shadowOffsetX"], + ["shadowOffsetY"], + ["shadowColor"] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. +]), gse = function(e) { + var t = vb(e); + return t.stroke = t.fill = t.lineWidth = null, t; +}, XL = ea(), eKe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._state = "ready", r._storage = HA(), r; + } + return t.prototype.render = function(r, n, i, a) { + var o = n.findComponents({ + mainType: "series", + subType: "treemap", + query: a + }); + if (!(di(o, r) < 0)) { + this.seriesModel = r, this.api = i, this.ecModel = n; + var l = ["treemapZoomToNode", "treemapRootToNode"], u = RR(a, l, r), d = a && a.type, f = r.layoutInfo, g = !this._oldTree, v = this._storage, y = d === "treemapRootToNode" && u && v ? { + rootNodeGroup: v.nodeGroup[u.node.getRawIndex()], + direction: a.direction + } : null, C = this._giveContainerGroup(f), A = r.get("animation"), S = this._doRender(C, r, y); + A && !g && (!d || d === "treemapZoomToNode" || d === "treemapRootToNode") ? this._doAnimation(C, S, r, y) : S.renderFinally(), this._resetController(i), this._renderBreadcrumb(r, i, u); + } + }, t.prototype._giveContainerGroup = function(r) { + var n = this._containerGroup; + return n || (n = this._containerGroup = new kW(), this._initEvents(n), this.group.add(n)), n.x = r.x, n.y = r.y, n; + }, t.prototype._doRender = function(r, n, i) { + var a = n.getData().tree, o = this._oldTree, l = HA(), u = HA(), d = this._storage, f = []; + function g(S, _, E, I) { + return tKe(n, u, d, i, l, f, S, _, E, I); + } + y(a.root ? [a.root] : [], o && o.root ? [o.root] : [], r, a === o || !o, 0); + var v = C(d); + return this._oldTree = a, this._storage = u, { + lastsForAnimation: l, + willDeleteEls: v, + renderFinally: A + }; + function y(S, _, E, I, w) { + I ? (_ = S, Ee(S, function(R, M) { + !R.isRemoved() && b(M, M); + })) : new Gm(_, S, x, x).add(b).update(b).remove(Ln(b, null)).execute(); + function x(R) { + return R.getId(); + } + function b(R, M) { + var O = R != null ? S[R] : null, P = M != null ? _[M] : null, B = g(O, P, E, w); + B && y(O && O.viewChildren || [], P && P.viewChildren || [], B, I, w + 1); + } + } + function C(S) { + var _ = HA(); + return S && Ee(S, function(E, I) { + var w = _[I]; + Ee(E, function(x) { + x && (w.push(x), XL(x).willDelete = !0); + }); + }), _; + } + function A() { + Ee(v, function(S) { + Ee(S, function(_) { + _.parent && _.parent.remove(_); + }); + }), Ee(f, function(S) { + S.invisible = !0, S.dirty(); + }); + } + }, t.prototype._doAnimation = function(r, n, i, a) { + var o = i.get("animationDurationUpdate"), l = i.get("animationEasing"), u = (Kr(o) ? 0 : o) || 0, d = (Kr(l) ? null : l) || "cubicOut", f = ZXe(); + Ee(n.willDeleteEls, function(g, v) { + Ee(g, function(y, C) { + if (!y.invisible) { + var A = y.parent, S, _ = XL(A); + if (a && a.direction === "drillDown") + S = A === a.rootNodeGroup ? { + shape: { + x: 0, + y: 0, + width: _.nodeWidth, + height: _.nodeHeight + }, + style: { + opacity: 0 + } + } : { + style: { + opacity: 0 + } + }; + else { + var E = 0, I = 0; + _.willDelete || (E = _.nodeWidth / 2, I = _.nodeHeight / 2), S = v === "nodeGroup" ? { + x: E, + y: I, + style: { + opacity: 0 + } + } : { + shape: { + x: E, + y: I, + width: 0, + height: 0 + }, + style: { + opacity: 0 + } + }; + } + S && f.add(y, S, u, 0, d); + } + }); + }), Ee(this._storage, function(g, v) { + Ee(g, function(y, C) { + var A = n.lastsForAnimation[v][C], S = {}; + A && (y instanceof _n ? A.oldX != null && (S.x = y.x, S.y = y.y, y.x = A.oldX, y.y = A.oldY) : (A.oldShape && (S.shape = $t({}, y.shape), y.setShape(A.oldShape)), A.fadein ? (y.setStyle("opacity", 0), S.style = { + opacity: 1 + }) : y.style.opacity !== 1 && (S.style = { + opacity: 1 + })), f.add(y, S, u, 0, d)); + }); + }, this), this._state = "animating", f.finished(Ar(function() { + this._state = "ready", n.renderFinally(); + }, this)).start(); + }, t.prototype._resetController = function(r) { + var n = this._controller; + n || (n = this._controller = new PD(r.getZr()), n.enable(this.seriesModel.get("roam")), n.on("pan", Ar(this._onPan, this)), n.on("zoom", Ar(this._onZoom, this))); + var i = new ei(0, 0, r.getWidth(), r.getHeight()); + n.setPointerChecker(function(a, o, l) { + return i.contain(o, l); + }); + }, t.prototype._clearController = function() { + var r = this._controller; + r && (r.dispose(), r = null); + }, t.prototype._onPan = function(r) { + if (this._state !== "animating" && (Math.abs(r.dx) > dse || Math.abs(r.dy) > dse)) { + var n = this.seriesModel.getData().tree.root; + if (!n) + return; + var i = n.getLayout(); + if (!i) + return; + this.api.dispatchAction({ + type: "treemapMove", + from: this.uid, + seriesId: this.seriesModel.id, + rootRect: { + x: i.x + r.dx, + y: i.y + r.dy, + width: i.width, + height: i.height + } + }); + } + }, t.prototype._onZoom = function(r) { + var n = r.originX, i = r.originY; + if (this._state !== "animating") { + var a = this.seriesModel.getData().tree.root; + if (!a) + return; + var o = a.getLayout(); + if (!o) + return; + var l = new ei(o.x, o.y, o.width, o.height), u = this.seriesModel.layoutInfo; + n -= u.x, i -= u.y; + var d = ku(); + Pp(d, d, [-n, -i]), mF(d, d, [r.scale, r.scale]), Pp(d, d, [n, i]), l.applyTransform(d), this.api.dispatchAction({ + type: "treemapRender", + from: this.uid, + seriesId: this.seriesModel.id, + rootRect: { + x: l.x, + y: l.y, + width: l.width, + height: l.height + } + }); + } + }, t.prototype._initEvents = function(r) { + var n = this; + r.on("click", function(i) { + if (n._state === "ready") { + var a = n.seriesModel.get("nodeClick", !0); + if (a) { + var o = n.findTarget(i.offsetX, i.offsetY); + if (o) { + var l = o.node; + if (l.getLayout().isLeafRoot) + n._rootToNode(o); + else if (a === "zoomToNode") + n._zoomToNode(o); + else if (a === "link") { + var u = l.hostTree.data.getItemModel(l.dataIndex), d = u.get("link", !0), f = u.get("target", !0) || "blank"; + d && RL(d, f); + } + } + } + } + }, this); + }, t.prototype._renderBreadcrumb = function(r, n, i) { + var a = this; + i || (i = r.get("leafDepth", !0) != null ? { + node: r.getViewRoot() + } : this.findTarget(n.getWidth() / 2, n.getHeight() / 2), i || (i = { + node: r.getData().tree.root + })), (this._breadcrumb || (this._breadcrumb = new XXe(this.group))).render(r, n, i.node, function(o) { + a._state !== "animating" && (j9(r.getViewRoot(), o) ? a._rootToNode({ + node: o + }) : a._zoomToNode({ + node: o + })); + }); + }, t.prototype.remove = function() { + this._clearController(), this._containerGroup && this._containerGroup.removeAll(), this._storage = HA(), this._state = "ready", this._breadcrumb && this._breadcrumb.remove(); + }, t.prototype.dispose = function() { + this._clearController(); + }, t.prototype._zoomToNode = function(r) { + this.api.dispatchAction({ + type: "treemapZoomToNode", + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: r.node + }); + }, t.prototype._rootToNode = function(r) { + this.api.dispatchAction({ + type: "treemapRootToNode", + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: r.node + }); + }, t.prototype.findTarget = function(r, n) { + var i, a = this.seriesModel.getViewRoot(); + return a.eachNode({ + attr: "viewChildren", + order: "preorder" + }, function(o) { + var l = this._storage.background[o.getRawIndex()]; + if (l) { + var u = l.transformCoordToLocal(r, n), d = l.shape; + if (d.x <= u[0] && u[0] <= d.x + d.width && d.y <= u[1] && u[1] <= d.y + d.height) + i = { + node: o, + offsetX: u[0], + offsetY: u[1] + }; + else + return !1; + } + }, this), i; + }, t.type = "treemap", t; + }(Ya) +); +function HA() { + return { + nodeGroup: [], + background: [], + content: [] + }; +} +function tKe(e, t, r, n, i, a, o, l, u, d) { + if (!o) + return; + var f = o.getLayout(), g = e.getData(), v = o.getModel(); + if (g.setItemGraphicEl(o.dataIndex, null), !f || !f.isInView) + return; + var y = f.width, C = f.height, A = f.borderWidth, S = f.invisible, _ = o.getRawIndex(), E = l && l.getRawIndex(), I = o.viewChildren, w = f.upperHeight, x = I && I.length, b = v.getModel("itemStyle"), R = v.getModel(["emphasis", "itemStyle"]), M = v.getModel(["blur", "itemStyle"]), O = v.getModel(["select", "itemStyle"]), P = b.get("borderRadius") || 0, B = pe("nodeGroup", kW); + if (!B) + return; + if (u.add(B), B.x = f.x || 0, B.y = f.y || 0, B.markRedraw(), XL(B).nodeWidth = y, XL(B).nodeHeight = C, f.isAboveViewRoot) + return B; + var H = pe("background", hse, d, JXe); + H && fe(B, H, x && f.upperLabelHeight); + var Y = v.getModel("emphasis"), X = Y.get("focus"), ee = Y.get("blurScope"), ae = Y.get("disabled"), J = X === "ancestor" ? o.getAncestorsIndices() : X === "descendant" ? o.getDescendantIndices() : X; + if (x) + vR(B) && Nb(B, !1), H && (Nb(H, !ae), g.setItemGraphicEl(o.dataIndex, H), QH(H, J, ee)); + else { + var ne = pe("content", hse, d, QXe); + ne && de(B, ne), H.disableMorphing = !0, H && vR(H) && Nb(H, !1), Nb(B, !ae), g.setItemGraphicEl(o.dataIndex, B), QH(B, J, ee); + } + return B; + function fe(Qe, Re, Ne) { + var Me = Tn(Re); + if (Me.dataIndex = o.dataIndex, Me.seriesIndex = e.seriesIndex, Re.setShape({ + x: 0, + y: 0, + width: y, + height: C, + r: P + }), S) + Te(Re); + else { + Re.invisible = !1; + var we = o.getVisual("style"), He = we.stroke, Ie = gse(b); + Ie.fill = He; + var Ae = vb(R); + Ae.fill = R.get("borderColor"); + var Fe = vb(M); + Fe.fill = M.get("borderColor"); + var $e = vb(O); + if ($e.fill = O.get("borderColor"), Ne) { + var lt = y - 2 * A; + be( + // PENDING: convert ZRColor to ColorString for text. + Re, + He, + we.opacity, + { + x: A, + y: 0, + width: lt, + height: w + } + ); + } else + Re.removeTextContent(); + Re.setStyle(Ie), Re.ensureState("emphasis").style = Ae, Re.ensureState("blur").style = Fe, Re.ensureState("select").style = $e, fE(Re); + } + Qe.add(Re); + } + function de(Qe, Re) { + var Ne = Tn(Re); + Ne.dataIndex = o.dataIndex, Ne.seriesIndex = e.seriesIndex; + var Me = Math.max(y - 2 * A, 0), we = Math.max(C - 2 * A, 0); + if (Re.culling = !0, Re.setShape({ + x: A, + y: A, + width: Me, + height: we, + r: P + }), S) + Te(Re); + else { + Re.invisible = !1; + var He = o.getVisual("style"), Ie = He.fill, Ae = gse(b); + Ae.fill = Ie, Ae.decal = He.decal; + var Fe = vb(R), $e = vb(M), lt = vb(O); + be(Re, Ie, He.opacity, null), Re.setStyle(Ae), Re.ensureState("emphasis").style = Fe, Re.ensureState("blur").style = $e, Re.ensureState("select").style = lt, fE(Re); + } + Qe.add(Re); + } + function Te(Qe) { + !Qe.invisible && a.push(Qe); + } + function be(Qe, Re, Ne, Me) { + var we = v.getModel(Me ? pse : fse), He = ml(v.get("name"), null), Ie = we.getShallow("show"); + Ec(Qe, Ll(v, Me ? pse : fse), { + defaultText: Ie ? He : null, + inheritColor: Re, + defaultOpacity: Ne, + labelFetcher: e, + labelDataIndex: o.dataIndex + }); + var Ae = Qe.getTextContent(); + if (Ae) { + var Fe = Ae.style, $e = gF(Fe.padding || 0); + Me && (Qe.setTextConfig({ + layoutRect: Me + }), Ae.disableLabelLayout = !0), Ae.beforeUpdate = function() { + var it = Math.max((Me ? Me.width : Qe.shape.width) - $e[1] - $e[3], 0), nt = Math.max((Me ? Me.height : Qe.shape.height) - $e[0] - $e[2], 0); + (Fe.width !== it || Fe.height !== nt) && Ae.setStyle({ + width: it, + height: nt + }); + }, Fe.truncateMinChar = 2, Fe.lineOverflow = "truncate", Ve(Fe, Me, f); + var lt = Ae.getState("emphasis"); + Ve(lt ? lt.style : null, Me, f); + } + } + function Ve(Qe, Re, Ne) { + var Me = Qe ? Qe.text : null; + if (!Re && Ne.isLeafRoot && Me != null) { + var we = e.get("drillDownIcon", !0); + Qe.text = we ? we + " " + Me : Me; + } + } + function pe(Qe, Re, Ne, Me) { + var we = E != null && r[Qe][E], He = i[Qe]; + return we ? (r[Qe][E] = null, Be(He, we)) : S || (we = new Re(), we instanceof Tf && (we.z2 = rKe(Ne, Me)), Ue(He, we)), t[Qe][_] = we; + } + function Be(Qe, Re) { + var Ne = Qe[_] = {}; + Re instanceof kW ? (Ne.oldX = Re.x, Ne.oldY = Re.y) : Ne.oldShape = $t({}, Re.shape); + } + function Ue(Qe, Re) { + var Ne = Qe[_] = {}, Me = o.parentNode, we = Re instanceof _n; + if (Me && (!n || n.direction === "drillDown")) { + var He = 0, Ie = 0, Ae = i.background[Me.getRawIndex()]; + !n && Ae && Ae.oldShape && (He = Ae.oldShape.width, Ie = Ae.oldShape.height), we ? (Ne.oldX = 0, Ne.oldY = Ie) : Ne.oldShape = { + x: He, + y: Ie, + width: 0, + height: 0 + }; + } + Ne.fadein = !we; + } +} +function rKe(e, t) { + return e * qXe + t; +} +const nKe = eKe; +var DR = Ee, iKe = sn, KL = -1, $9 = ( + /** @class */ + function() { + function e(t) { + var r = t.mappingMethod, n = t.type, i = this.option = cn(t); + this.type = n, this.mappingMethod = r, this._normalizeData = sKe[r]; + var a = e.visualHandlers[n]; + this.applyVisual = a.applyVisual, this.getColorMapper = a.getColorMapper, this._normalizedToVisual = a._normalizedToVisual[r], r === "piecewise" ? (Xz(i), aKe(i)) : r === "category" ? i.categories ? oKe(i) : Xz(i, !0) : (Qc(r !== "linear" || i.dataExtent), Xz(i)); + } + return e.prototype.mapValueToVisual = function(t) { + var r = this._normalizeData(t); + return this._normalizedToVisual(r, t); + }, e.prototype.getNormalizer = function() { + return Ar(this._normalizeData, this); + }, e.listVisualTypes = function() { + return Ri(e.visualHandlers); + }, e.isValidType = function(t) { + return e.visualHandlers.hasOwnProperty(t); + }, e.eachVisual = function(t, r, n) { + sn(t) ? Ee(t, r, n) : r.call(n, t); + }, e.mapVisual = function(t, r, n) { + var i, a = qt(t) ? [] : sn(t) ? {} : (i = !0, null); + return e.eachVisual(t, function(o, l) { + var u = r.call(n, o, l); + i ? a = u : a[l] = u; + }), a; + }, e.retrieveVisuals = function(t) { + var r = {}, n; + return t && DR(e.visualHandlers, function(i, a) { + t.hasOwnProperty(a) && (r[a] = t[a], n = !0); + }), n ? r : null; + }, e.prepareVisualTypes = function(t) { + if (qt(t)) + t = t.slice(); + else if (iKe(t)) { + var r = []; + DR(t, function(n, i) { + r.push(i); + }), t = r; + } else + return []; + return t.sort(function(n, i) { + return i === "color" && n !== "color" && n.indexOf("color") === 0 ? 1 : -1; + }), t; + }, e.dependsOn = function(t, r) { + return r === "color" ? !!(t && t.indexOf(r) === 0) : t === r; + }, e.findPieceIndex = function(t, r, n) { + for (var i, a = 1 / 0, o = 0, l = r.length; o < l; o++) { + var u = r[o].value; + if (u != null) { + if (u === t || wr(u) && u === t + "") + return o; + n && v(u, o); + } + } + for (var o = 0, l = r.length; o < l; o++) { + var d = r[o], f = d.interval, g = d.close; + if (f) { + if (f[0] === -1 / 0) { + if (bP(g[1], t, f[1])) + return o; + } else if (f[1] === 1 / 0) { + if (bP(g[0], f[0], t)) + return o; + } else if (bP(g[0], f[0], t) && bP(g[1], t, f[1])) + return o; + n && v(f[0], o), n && v(f[1], o); + } + } + if (n) + return t === 1 / 0 ? r.length - 1 : t === -1 / 0 ? 0 : i; + function v(y, C) { + var A = Math.abs(y - t); + A < a && (a = A, i = C); + } + }, e.visualHandlers = { + color: { + applyVisual: WA("color"), + getColorMapper: function() { + var t = this.option; + return Ar(t.mappingMethod === "category" ? function(r, n) { + return !n && (r = this._normalizeData(r)), m1.call(this, r); + } : function(r, n, i) { + var a = !!i; + return !n && (r = this._normalizeData(r)), i = x1(r, t.parsedVisual, i), a ? i : Dp(i, "rgba"); + }, this); + }, + _normalizedToVisual: { + linear: function(t) { + return Dp(x1(t, this.option.parsedVisual), "rgba"); + }, + category: m1, + piecewise: function(t, r) { + var n = NW.call(this, r); + return n == null && (n = Dp(x1(t, this.option.parsedVisual), "rgba")), n; + }, + fixed: mb + } + }, + colorHue: SP(function(t, r) { + return Ew(t, r); + }), + colorSaturation: SP(function(t, r) { + return Ew(t, null, r); + }), + colorLightness: SP(function(t, r) { + return Ew(t, null, null, r); + }), + colorAlpha: SP(function(t, r) { + return uR(t, r); + }), + decal: { + applyVisual: WA("decal"), + _normalizedToVisual: { + linear: null, + category: m1, + piecewise: null, + fixed: null + } + }, + opacity: { + applyVisual: WA("opacity"), + _normalizedToVisual: PW([0, 1]) + }, + liftZ: { + applyVisual: WA("liftZ"), + _normalizedToVisual: { + linear: mb, + category: mb, + piecewise: mb, + fixed: mb + } + }, + symbol: { + applyVisual: function(t, r, n) { + var i = this.mapValueToVisual(t); + n("symbol", i); + }, + _normalizedToVisual: { + linear: vse, + category: m1, + piecewise: function(t, r) { + var n = NW.call(this, r); + return n == null && (n = vse.call(this, t)), n; + }, + fixed: mb + } + }, + symbolSize: { + applyVisual: WA("symbolSize"), + _normalizedToVisual: PW([0, 1]) + } + }, e; + }() +); +function aKe(e) { + var t = e.pieceList; + e.hasSpecialVisual = !1, Ee(t, function(r, n) { + r.originIndex = n, r.visual != null && (e.hasSpecialVisual = !0); + }); +} +function oKe(e) { + var t = e.categories, r = e.categoryMap = {}, n = e.visual; + if (DR(t, function(o, l) { + r[o] = l; + }), !qt(n)) { + var i = []; + sn(n) ? DR(n, function(o, l) { + var u = r[l]; + i[u != null ? u : KL] = o; + }) : i[KL] = n, n = uSe(e, i); + } + for (var a = t.length - 1; a >= 0; a--) + n[a] == null && (delete r[t[a]], t.pop()); +} +function Xz(e, t) { + var r = e.visual, n = []; + sn(r) ? DR(r, function(a) { + n.push(a); + }) : r != null && n.push(r); + var i = { + color: 1, + symbol: 1 + }; + !t && n.length === 1 && !i.hasOwnProperty(e.type) && (n[1] = n[0]), uSe(e, n); +} +function SP(e) { + return { + applyVisual: function(t, r, n) { + var i = this.mapValueToVisual(t); + n("color", e(r("color"), i)); + }, + _normalizedToVisual: PW([0, 1]) + }; +} +function vse(e) { + var t = this.option.visual; + return t[Math.round(Ea(e, [0, 1], [0, t.length - 1], !0))] || {}; +} +function WA(e) { + return function(t, r, n) { + n(e, this.mapValueToVisual(t)); + }; +} +function m1(e) { + var t = this.option.visual; + return t[this.option.loop && e !== KL ? e % t.length : e]; +} +function mb() { + return this.option.visual[0]; +} +function PW(e) { + return { + linear: function(t) { + return Ea(t, e, this.option.visual, !0); + }, + category: m1, + piecewise: function(t, r) { + var n = NW.call(this, r); + return n == null && (n = Ea(t, e, this.option.visual, !0)), n; + }, + fixed: mb + }; +} +function NW(e) { + var t = this.option, r = t.pieceList; + if (t.hasSpecialVisual) { + var n = $9.findPieceIndex(e, r), i = r[n]; + if (i && i.visual) + return i.visual[this.type]; + } +} +function uSe(e, t) { + return e.visual = t, e.type === "color" && (e.parsedVisual = er(t, function(r) { + var n = Pu(r); + return n || [0, 0, 0, 1]; + })), t; +} +var sKe = { + linear: function(e) { + return Ea(e, this.option.dataExtent, [0, 1], !0); + }, + piecewise: function(e) { + var t = this.option.pieceList, r = $9.findPieceIndex(e, t, !0); + if (r != null) + return Ea(r, [0, t.length - 1], [0, 1], !0); + }, + category: function(e) { + var t = this.option.categories ? this.option.categoryMap[e] : e; + return t == null ? KL : t; + }, + fixed: Ls +}; +function bP(e, t, r) { + return e ? t <= r : t < r; +} +const yc = $9; +var lKe = "itemStyle", hSe = ea(); +const cKe = { + seriesType: "treemap", + reset: function(e) { + var t = e.getData().tree, r = t.root; + r.isRemoved() || dSe( + r, + // Visual should calculate from tree root but not view root. + {}, + e.getViewRoot().getAncestors(), + e + ); + } +}; +function dSe(e, t, r, n) { + var i = e.getModel(), a = e.getLayout(), o = e.hostTree.data; + if (!(!a || a.invisible || !a.isInView)) { + var l = i.getModel(lKe), u = uKe(l, t, n), d = o.ensureUniqueItemVisual(e.dataIndex, "style"), f = l.get("borderColor"), g = l.get("borderColorSaturation"), v; + g != null && (v = mse(u), f = hKe(g, v)), d.stroke = f; + var y = e.viewChildren; + if (!y || !y.length) + v = mse(u), d.fill = v; + else { + var C = dKe(e, i, a, l, u, y); + Ee(y, function(A, S) { + if (A.depth >= r.length || A === r[A.depth]) { + var _ = fKe(i, u, A, S, C, n); + dSe(A, _, r, n); + } + }); + } + } +} +function uKe(e, t, r) { + var n = $t({}, t), i = r.designatedVisualItemStyle; + return Ee(["color", "colorAlpha", "colorSaturation"], function(a) { + i[a] = t[a]; + var o = e.get(a); + i[a] = null, o != null && (n[a] = o); + }), n; +} +function mse(e) { + var t = Kz(e, "color"); + if (t) { + var r = Kz(e, "colorAlpha"), n = Kz(e, "colorSaturation"); + return n && (t = Ew(t, null, null, n)), r && (t = uR(t, r)), t; + } +} +function hKe(e, t) { + return t != null ? Ew(t, null, null, e) : null; +} +function Kz(e, t) { + var r = e[t]; + if (r != null && r !== "none") + return r; +} +function dKe(e, t, r, n, i, a) { + if (!(!a || !a.length)) { + var o = Zz(t, "color") || i.color != null && i.color !== "none" && (Zz(t, "colorAlpha") || Zz(t, "colorSaturation")); + if (o) { + var l = t.get("visualMin"), u = t.get("visualMax"), d = r.dataExtent.slice(); + l != null && l < d[0] && (d[0] = l), u != null && u > d[1] && (d[1] = u); + var f = t.get("colorMappingBy"), g = { + type: o.name, + dataExtent: d, + visual: o.range + }; + g.type === "color" && (f === "index" || f === "id") ? (g.mappingMethod = "category", g.loop = !0) : g.mappingMethod = "linear"; + var v = new yc(g); + return hSe(v).drColorMappingBy = f, v; + } + } +} +function Zz(e, t) { + var r = e.get(t); + return qt(r) && r.length ? { + name: t, + range: r + } : null; +} +function fKe(e, t, r, n, i, a) { + var o = $t({}, t); + if (i) { + var l = i.type, u = l === "color" && hSe(i).drColorMappingBy, d = u === "index" ? n : u === "id" ? a.mapIdToIndex(r.getId()) : r.getValue(e.get("visualDimension")); + o[l] = i.mapValueToVisual(d); + } + return o; +} +var OR = Math.max, ZL = Math.min, yse = kl, V9 = Ee, fSe = ["itemStyle", "borderWidth"], pKe = ["itemStyle", "gapWidth"], gKe = ["upperLabel", "show"], vKe = ["upperLabel", "height"]; +const mKe = { + seriesType: "treemap", + reset: function(e, t, r, n) { + var i = r.getWidth(), a = r.getHeight(), o = e.option, l = js(e.getBoxLayoutParams(), { + width: r.getWidth(), + height: r.getHeight() + }), u = o.size || [], d = yr(yse(l.width, u[0]), i), f = yr(yse(l.height, u[1]), a), g = n && n.type, v = ["treemapZoomToNode", "treemapRootToNode"], y = RR(n, v, e), C = g === "treemapRender" || g === "treemapMove" ? n.rootRect : null, A = e.getViewRoot(), S = sSe(A); + if (g !== "treemapMove") { + var _ = g === "treemapZoomToNode" ? CKe(e, y, A, d, f) : C ? [C.width, C.height] : [d, f], E = o.sort; + E && E !== "asc" && E !== "desc" && (E = "desc"); + var I = { + squareRatio: o.squareRatio, + sort: E, + leafDepth: o.leafDepth + }; + A.hostTree.clearLayouts(); + var w = { + x: 0, + y: 0, + width: _[0], + height: _[1], + area: _[0] * _[1] + }; + A.setLayout(w), pSe(A, I, !1, 0), w = A.getLayout(), V9(S, function(b, R) { + var M = (S[R + 1] || A).getValue(); + b.setLayout($t({ + dataExtent: [M, M], + borderWidth: 0, + upperHeight: 0 + }, w)); + }); + } + var x = e.getData().tree.root; + x.setLayout(TKe(l, C, y), !0), e.setLayoutInfo(l), gSe( + x, + // Transform to base element coordinate system. + new ei(-l.x, -l.y, i, a), + S, + A, + 0 + ); + } +}; +function pSe(e, t, r, n) { + var i, a; + if (!e.isRemoved()) { + var o = e.getLayout(); + i = o.width, a = o.height; + var l = e.getModel(), u = l.get(fSe), d = l.get(pKe) / 2, f = vSe(l), g = Math.max(u, f), v = u - d, y = g - d; + e.setLayout({ + borderWidth: u, + upperHeight: g, + upperLabelHeight: f + }, !0), i = OR(i - 2 * v, 0), a = OR(a - v - y, 0); + var C = i * a, A = yKe(e, l, C, t, r, n); + if (A.length) { + var S = { + x: v, + y, + width: i, + height: a + }, _ = ZL(i, a), E = 1 / 0, I = []; + I.area = 0; + for (var w = 0, x = A.length; w < x; ) { + var b = A[w]; + I.push(b), I.area += b.getLayout().area; + var R = EKe(I, _, t.squareRatio); + R <= E ? (w++, E = R) : (I.area -= I.pop().getLayout().area, _se(I, _, S, d, !1), _ = ZL(S.width, S.height), I.length = I.area = 0, E = 1 / 0); + } + if (I.length && _se(I, _, S, d, !0), !r) { + var M = l.get("childrenVisibleMin"); + M != null && C < M && (r = !0); + } + for (var w = 0, x = A.length; w < x; w++) + pSe(A[w], t, r, n + 1); + } + } +} +function yKe(e, t, r, n, i, a) { + var o = e.children || [], l = n.sort; + l !== "asc" && l !== "desc" && (l = null); + var u = n.leafDepth != null && n.leafDepth <= a; + if (i && !u) + return e.viewChildren = []; + o = Ma(o, function(y) { + return !y.isRemoved(); + }), SKe(o, l); + var d = bKe(t, o, l); + if (d.sum === 0) + return e.viewChildren = []; + if (d.sum = _Ke(t, r, d.sum, l, o), d.sum === 0) + return e.viewChildren = []; + for (var f = 0, g = o.length; f < g; f++) { + var v = o[f].getValue() / d.sum * r; + o[f].setLayout({ + area: v + }); + } + return u && (o.length && e.setLayout({ + isLeafRoot: !0 + }, !0), o.length = 0), e.viewChildren = o, e.setLayout({ + dataExtent: d.dataExtent + }, !0), o; +} +function _Ke(e, t, r, n, i) { + if (!n) + return r; + for (var a = e.get("visibleMin"), o = i.length, l = o, u = o - 1; u >= 0; u--) { + var d = i[n === "asc" ? o - u - 1 : u].getValue(); + d / r * t < a && (l = u, r -= d); + } + return n === "asc" ? i.splice(0, o - l) : i.splice(l, o - l), r; +} +function SKe(e, t) { + return t && e.sort(function(r, n) { + var i = t === "asc" ? r.getValue() - n.getValue() : n.getValue() - r.getValue(); + return i === 0 ? t === "asc" ? r.dataIndex - n.dataIndex : n.dataIndex - r.dataIndex : i; + }), e; +} +function bKe(e, t, r) { + for (var n = 0, i = 0, a = t.length; i < a; i++) + n += t[i].getValue(); + var o = e.get("visualDimension"), l; + return !t || !t.length ? l = [NaN, NaN] : o === "value" && r ? (l = [t[t.length - 1].getValue(), t[0].getValue()], r === "asc" && l.reverse()) : (l = [1 / 0, -1 / 0], V9(t, function(u) { + var d = u.getValue(o); + d < l[0] && (l[0] = d), d > l[1] && (l[1] = d); + })), { + sum: n, + dataExtent: l + }; +} +function EKe(e, t, r) { + for (var n = 0, i = 1 / 0, a = 0, o = void 0, l = e.length; a < l; a++) + o = e[a].getLayout().area, o && (o < i && (i = o), o > n && (n = o)); + var u = e.area * e.area, d = t * t * r; + return u ? OR(d * n / u, u / (d * i)) : 1 / 0; +} +function _se(e, t, r, n, i) { + var a = t === r.width ? 0 : 1, o = 1 - a, l = ["x", "y"], u = ["width", "height"], d = r[l[a]], f = t ? e.area / t : 0; + (i || f > r[u[o]]) && (f = r[u[o]]); + for (var g = 0, v = e.length; g < v; g++) { + var y = e[g], C = {}, A = f ? y.getLayout().area / f : 0, S = C[u[o]] = OR(f - 2 * n, 0), _ = r[l[a]] + r[u[a]] - d, E = g === v - 1 || _ < A ? _ : A, I = C[u[a]] = OR(E - 2 * n, 0); + C[l[o]] = r[l[o]] + ZL(n, S / 2), C[l[a]] = d + ZL(n, I / 2), d += E, y.setLayout(C, !0); + } + r[l[o]] += f, r[u[o]] -= f; +} +function CKe(e, t, r, n, i) { + var a = (t || {}).node, o = [n, i]; + if (!a || a === r) + return o; + for (var l, u = n * i, d = u * e.option.zoomToNodeRatio; l = a.parentNode; ) { + for (var f = 0, g = l.children, v = 0, y = g.length; v < y; v++) + f += g[v].getValue(); + var C = a.getValue(); + if (C === 0) + return o; + d *= f / C; + var A = l.getModel(), S = A.get(fSe), _ = Math.max(S, vSe(A)); + d += 4 * S * S + (3 * S + _) * Math.pow(d, 0.5), d > HH && (d = HH), a = l; + } + d < u && (d = u); + var E = Math.pow(d / u, 0.5); + return [n * E, i * E]; +} +function TKe(e, t, r) { + if (t) + return { + x: t.x, + y: t.y + }; + var n = { + x: 0, + y: 0 + }; + if (!r) + return n; + var i = r.node, a = i.getLayout(); + if (!a) + return n; + for (var o = [a.width / 2, a.height / 2], l = i; l; ) { + var u = l.getLayout(); + o[0] += u.x, o[1] += u.y, l = l.parentNode; + } + return { + x: e.width / 2 - o[0], + y: e.height / 2 - o[1] + }; +} +function gSe(e, t, r, n, i) { + var a = e.getLayout(), o = r[i], l = o && o === e; + if (!(o && !l || i === r.length && e !== n)) { + e.setLayout({ + // isInView means: viewRoot sub tree + viewAbovePath + isInView: !0, + // invisible only means: outside view clip so that the node can not + // see but still layout for animation preparation but not render. + invisible: !l && !t.intersect(a), + isAboveViewRoot: l + }, !0); + var u = new ei(t.x - a.x, t.y - a.y, t.width, t.height); + V9(e.viewChildren || [], function(d) { + gSe(d, u, r, n, i + 1); + }); + } +} +function vSe(e) { + return e.get(gKe) ? e.get(vKe) : 0; +} +function wKe(e) { + e.registerSeriesModel(zXe), e.registerChartView(nKe), e.registerVisual(cKe), e.registerLayout(mKe), jXe(e); +} +function IKe(e) { + var t = e.findComponents({ + mainType: "legend" + }); + !t || !t.length || e.eachSeriesByType("graph", function(r) { + var n = r.getCategoriesData(), i = r.getGraph(), a = i.data, o = n.mapArray(n.getName); + a.filterSelf(function(l) { + var u = a.getItemModel(l), d = u.getShallow("category"); + if (d != null) { + Qi(d) && (d = o[d]); + for (var f = 0; f < t.length; f++) + if (!t[f].isSelected(d)) + return !1; + } + return !0; + }); + }); +} +function xKe(e) { + var t = {}; + e.eachSeriesByType("graph", function(r) { + var n = r.getCategoriesData(), i = r.getData(), a = {}; + n.each(function(o) { + var l = n.getName(o); + a["ec-" + l] = o; + var u = n.getItemModel(o), d = u.getModel("itemStyle").getItemStyle(); + d.fill || (d.fill = r.getColorFromPalette(l, t)), n.setItemVisual(o, "style", d); + for (var f = ["symbol", "symbolSize", "symbolKeepAspect"], g = 0; g < f.length; g++) { + var v = u.getShallow(f[g], !0); + v != null && n.setItemVisual(o, f[g], v); + } + }), n.count() && i.each(function(o) { + var l = i.getItemModel(o), u = l.getShallow("category"); + if (u != null) { + wr(u) && (u = a["ec-" + u]); + var d = n.getItemVisual(u, "style"), f = i.ensureUniqueItemVisual(o, "style"); + $t(f, d); + for (var g = ["symbol", "symbolSize", "symbolKeepAspect"], v = 0; v < g.length; v++) + i.setItemVisual(o, g[v], n.getItemVisual(u, g[v])); + } + }); + }); +} +function EP(e) { + return e instanceof Array || (e = [e, e]), e; +} +function AKe(e) { + e.eachSeriesByType("graph", function(t) { + var r = t.getGraph(), n = t.getEdgeData(), i = EP(t.get("edgeSymbol")), a = EP(t.get("edgeSymbolSize")); + n.setVisual("fromSymbol", i && i[0]), n.setVisual("toSymbol", i && i[1]), n.setVisual("fromSymbolSize", a && a[0]), n.setVisual("toSymbolSize", a && a[1]), n.setVisual("style", t.getModel("lineStyle").getLineStyle()), n.each(function(o) { + var l = n.getItemModel(o), u = r.getEdgeByIndex(o), d = EP(l.getShallow("symbol", !0)), f = EP(l.getShallow("symbolSize", !0)), g = l.getModel("lineStyle").getLineStyle(), v = n.ensureUniqueItemVisual(o, "style"); + switch ($t(v, g), v.stroke) { + case "source": { + var y = u.node1.getVisual("style"); + v.stroke = y && y.fill; + break; + } + case "target": { + var y = u.node2.getVisual("style"); + v.stroke = y && y.fill; + break; + } + } + d[0] && u.setVisual("fromSymbol", d[0]), d[1] && u.setVisual("toSymbol", d[1]), f[0] && u.setVisual("fromSymbolSize", f[0]), f[1] && u.setVisual("toSymbolSize", f[1]); + }); + }); +} +var LW = "-->", tB = function(e) { + return e.get("autoCurveness") || null; +}, mSe = function(e, t) { + var r = tB(e), n = 20, i = []; + if (Qi(r)) + n = r; + else if (qt(r)) { + e.__curvenessList = r; + return; + } + t > n && (n = t); + var a = n % 2 ? n + 2 : n + 3; + i = []; + for (var o = 0; o < a; o++) + i.push((o % 2 ? o + 1 : o) / 10 * (o % 2 ? -1 : 1)); + e.__curvenessList = i; +}, MR = function(e, t, r) { + var n = [e.id, e.dataIndex].join("."), i = [t.id, t.dataIndex].join("."); + return [r.uid, n, i].join(LW); +}, ySe = function(e) { + var t = e.split(LW); + return [t[0], t[2], t[1]].join(LW); +}, RKe = function(e, t) { + var r = MR(e.node1, e.node2, t); + return t.__edgeMap[r]; +}, DKe = function(e, t) { + var r = FW(MR(e.node1, e.node2, t), t), n = FW(MR(e.node2, e.node1, t), t); + return r + n; +}, FW = function(e, t) { + var r = t.__edgeMap; + return r[e] ? r[e].length : 0; +}; +function OKe(e) { + tB(e) && (e.__curvenessList = [], e.__edgeMap = {}, mSe(e)); +} +function MKe(e, t, r, n) { + if (tB(r)) { + var i = MR(e, t, r), a = r.__edgeMap, o = a[ySe(i)]; + a[i] && !o ? a[i].isForward = !0 : o && a[i] && (o.isForward = !0, a[i].isForward = !1), a[i] = a[i] || [], a[i].push(n); + } +} +function z9(e, t, r, n) { + var i = tB(t), a = qt(i); + if (!i) + return null; + var o = RKe(e, t); + if (!o) + return null; + for (var l = -1, u = 0; u < o.length; u++) + if (o[u] === r) { + l = u; + break; + } + var d = DKe(e, t); + mSe(t, d), e.lineStyle = e.lineStyle || {}; + var f = MR(e.node1, e.node2, t), g = t.__curvenessList, v = a || d % 2 ? 0 : 1; + if (o.isForward) + return g[v + l]; + var y = ySe(f), C = FW(y, t), A = g[l + C + v]; + return n ? a ? i && i[0] === 0 ? (C + v) % 2 ? A : -A : ((C % 2 ? 0 : 1) + v) % 2 ? A : -A : (C + v) % 2 ? A : -A : g[l + C + v]; +} +function _Se(e) { + var t = e.coordinateSystem; + if (!(t && t.type !== "view")) { + var r = e.getGraph(); + r.eachNode(function(n) { + var i = n.getModel(); + n.setLayout([+i.get("x"), +i.get("y")]); + }), H9(r, e); + } +} +function H9(e, t) { + e.eachEdge(function(r, n) { + var i = Ap(r.getModel().get(["lineStyle", "curveness"]), -z9(r, t, n, !0), 0), a = qg(r.node1.getLayout()), o = qg(r.node2.getLayout()), l = [a, o]; + +i && l.push([(a[0] + o[0]) / 2 - (a[1] - o[1]) * i, (a[1] + o[1]) / 2 - (o[0] - a[0]) * i]), r.setLayout(l); + }); +} +function kKe(e, t) { + e.eachSeriesByType("graph", function(r) { + var n = r.get("layout"), i = r.coordinateSystem; + if (i && i.type !== "view") { + var a = r.getData(), o = []; + Ee(i.dimensions, function(v) { + o = o.concat(a.mapDimensionsAll(v)); + }); + for (var l = 0; l < a.count(); l++) { + for (var u = [], d = !1, f = 0; f < o.length; f++) { + var g = a.get(o[f], l); + isNaN(g) || (d = !0), u.push(g); + } + d ? a.setItemLayout(l, i.dataToPoint(u)) : a.setItemLayout(l, [NaN, NaN]); + } + H9(a.graph, r); + } else + (!n || n === "none") && _Se(r); + }); +} +function y1(e) { + var t = e.coordinateSystem; + if (t.type !== "view") + return 1; + var r = e.option.nodeScaleRatio, n = t.scaleX, i = t.getZoom(), a = (i - 1) * r + 1; + return a / n; +} +function _1(e) { + var t = e.getVisual("symbolSize"); + return t instanceof Array && (t = (t[0] + t[1]) / 2), +t; +} +var Sse = Math.PI, qz = []; +function W9(e, t, r, n) { + var i = e.coordinateSystem; + if (!(i && i.type !== "view")) { + var a = i.getBoundingRect(), o = e.getData(), l = o.graph, u = a.width / 2 + a.x, d = a.height / 2 + a.y, f = Math.min(a.width, a.height) / 2, g = o.count(); + if (o.setLayout({ + cx: u, + cy: d + }), !!g) { + if (r) { + var v = i.pointToData(n), y = v[0], C = v[1], A = [y - u, C - d]; + AE(A, A), w1(A, A, f), r.setLayout([u + A[0], d + A[1]], !0); + var S = e.get(["circular", "rotateLabel"]); + SSe(r, S, u, d); + } + PKe[t](e, l, o, f, u, d, g), l.eachEdge(function(_, E) { + var I = Ap(_.getModel().get(["lineStyle", "curveness"]), z9(_, e, E), 0), w = qg(_.node1.getLayout()), x = qg(_.node2.getLayout()), b, R = (w[0] + x[0]) / 2, M = (w[1] + x[1]) / 2; + +I && (I *= 3, b = [u * I + R * (1 - I), d * I + M * (1 - I)]), _.setLayout([w, x, b]); + }); + } + } +} +var PKe = { + value: function(e, t, r, n, i, a, o) { + var l = 0, u = r.getSum("value"), d = Math.PI * 2 / (u || o); + t.eachNode(function(f) { + var g = f.getValue("value"), v = d * (u ? g : 1) / 2; + l += v, f.setLayout([n * Math.cos(l) + i, n * Math.sin(l) + a]), l += v; + }); + }, + symbolSize: function(e, t, r, n, i, a, o) { + var l = 0; + qz.length = o; + var u = y1(e); + t.eachNode(function(g) { + var v = _1(g); + isNaN(v) && (v = 2), v < 0 && (v = 0), v *= u; + var y = Math.asin(v / 2 / n); + isNaN(y) && (y = Sse / 2), qz[g.dataIndex] = y, l += y * 2; + }); + var d = (2 * Sse - l) / o / 2, f = 0; + t.eachNode(function(g) { + var v = d + qz[g.dataIndex]; + f += v, (!g.getLayout() || !g.getLayout().fixed) && g.setLayout([n * Math.cos(f) + i, n * Math.sin(f) + a]), f += v; + }); + } +}; +function SSe(e, t, r, n) { + var i = e.getGraphicEl(); + if (i) { + var a = e.getModel(), o = a.get(["label", "rotate"]) || 0, l = i.getSymbolPath(); + if (t) { + var u = e.getLayout(), d = Math.atan2(u[1] - n, u[0] - r); + d < 0 && (d = Math.PI * 2 + d); + var f = u[0] < r; + f && (d = d - Math.PI); + var g = f ? "left" : "right"; + l.setTextConfig({ + rotation: -d, + position: g, + origin: "center" + }); + var v = l.ensureState("emphasis"); + $t(v.textConfig || (v.textConfig = {}), { + position: g + }); + } else + l.setTextConfig({ + rotation: o *= Math.PI / 180 + }); + } +} +function NKe(e) { + e.eachSeriesByType("graph", function(t) { + t.get("layout") === "circular" && W9(t, "symbolSize"); + }); +} +var MT = fL; +function LKe(e, t, r) { + for (var n = e, i = t, a = r.rect, o = a.width, l = a.height, u = [a.x + o / 2, a.y + l / 2], d = r.gravity == null ? 0.1 : r.gravity, f = 0; f < n.length; f++) { + var g = n[f]; + g.p || (g.p = A0(o * (Math.random() - 0.5) + u[0], l * (Math.random() - 0.5) + u[1])), g.pp = qg(g.p), g.edges = null; + } + var v = r.friction == null ? 0.6 : r.friction, y = v, C, A; + return { + warmUp: function() { + y = v * 0.8; + }, + setFixed: function(S) { + n[S].fixed = !0; + }, + setUnfixed: function(S) { + n[S].fixed = !1; + }, + /** + * Before step hook + */ + beforeStep: function(S) { + C = S; + }, + /** + * After step hook + */ + afterStep: function(S) { + A = S; + }, + /** + * Some formulas were originally copied from "d3.js" + * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js + * with some modifications made for this project. + * See the license statement at the head of this file. + */ + step: function(S) { + C && C(n, i); + for (var _ = [], E = n.length, I = 0; I < i.length; I++) { + var w = i[I]; + if (!w.ignoreForceLayout) { + var x = w.n1, b = w.n2; + Y_(_, b.p, x.p); + var R = sR(_) - w.d, M = b.w / (x.w + b.w); + isNaN(M) && (M = 0), AE(_, _), !x.fixed && MT(x.p, x.p, _, M * R * y), !b.fixed && MT(b.p, b.p, _, -(1 - M) * R * y); + } + } + for (var I = 0; I < E; I++) { + var O = n[I]; + O.fixed || (Y_(_, u, O.p), MT(O.p, O.p, _, d * y)); + } + for (var I = 0; I < E; I++) + for (var x = n[I], P = I + 1; P < E; P++) { + var b = n[P]; + Y_(_, b.p, x.p); + var R = sR(_); + R === 0 && ($ge(_, Math.random() - 0.5, Math.random() - 0.5), R = 1); + var B = (x.rep + b.rep) / R / R; + !x.fixed && MT(x.pp, x.pp, _, B), !b.fixed && MT(b.pp, b.pp, _, -B); + } + for (var H = [], I = 0; I < E; I++) { + var O = n[I]; + O.fixed || (Y_(H, O.p, O.pp), MT(O.p, O.p, H, y), Wc(O.pp, O.p)); + } + y = y * 0.992; + var Y = y < 0.01; + A && A(n, i, Y), S && S(Y); + } + }; +} +function FKe(e) { + e.eachSeriesByType("graph", function(t) { + var r = t.coordinateSystem; + if (!(r && r.type !== "view")) + if (t.get("layout") === "force") { + var n = t.preservedPoints || {}, i = t.getGraph(), a = i.data, o = i.edgeData, l = t.getModel("force"), u = l.get("initLayout"); + t.preservedPoints ? a.each(function(I) { + var w = a.getId(I); + a.setItemLayout(I, n[w] || [NaN, NaN]); + }) : !u || u === "none" ? _Se(t) : u === "circular" && W9(t, "value"); + var d = a.getDataExtent("value"), f = o.getDataExtent("value"), g = l.get("repulsion"), v = l.get("edgeLength"), y = qt(g) ? g : [g, g], C = qt(v) ? v : [v, v]; + C = [C[1], C[0]]; + var A = a.mapArray("value", function(I, w) { + var x = a.getItemLayout(w), b = Ea(I, d, y); + return isNaN(b) && (b = (y[0] + y[1]) / 2), { + w: b, + rep: b, + fixed: a.getItemModel(w).get("fixed"), + p: !x || isNaN(x[0]) || isNaN(x[1]) ? null : x + }; + }), S = o.mapArray("value", function(I, w) { + var x = i.getEdgeByIndex(w), b = Ea(I, f, C); + isNaN(b) && (b = (C[0] + C[1]) / 2); + var R = x.getModel(), M = Ap(x.getModel().get(["lineStyle", "curveness"]), -z9(x, t, w, !0), 0); + return { + n1: A[x.node1.dataIndex], + n2: A[x.node2.dataIndex], + d: b, + curveness: M, + ignoreForceLayout: R.get("ignoreForceLayout") + }; + }), _ = r.getBoundingRect(), E = LKe(A, S, { + rect: _, + gravity: l.get("gravity"), + friction: l.get("friction") + }); + E.beforeStep(function(I, w) { + for (var x = 0, b = I.length; x < b; x++) + I[x].fixed && Wc(I[x].p, i.getNodeByIndex(x).getLayout()); + }), E.afterStep(function(I, w, x) { + for (var b = 0, R = I.length; b < R; b++) + I[b].fixed || i.getNodeByIndex(b).setLayout(I[b].p), n[a.getId(b)] = I[b].p; + for (var b = 0, R = w.length; b < R; b++) { + var M = w[b], O = i.getEdgeByIndex(b), P = M.n1.p, B = M.n2.p, H = O.getLayout(); + H = H ? H.slice() : [], H[0] = H[0] || [], H[1] = H[1] || [], Wc(H[0], P), Wc(H[1], B), +M.curveness && (H[2] = [(P[0] + B[0]) / 2 - (P[1] - B[1]) * M.curveness, (P[1] + B[1]) / 2 - (B[0] - P[0]) * M.curveness]), O.setLayout(H); + } + }), t.forceLayout = E, t.preservedPoints = n, E.step(); + } else + t.forceLayout = null; + }); +} +function BKe(e, t, r) { + var n = $t(e.getBoxLayoutParams(), { + aspect: r + }); + return js(n, { + width: t.getWidth(), + height: t.getHeight() + }); +} +function UKe(e, t) { + var r = []; + return e.eachSeriesByType("graph", function(n) { + var i = n.get("coordinateSystem"); + if (!i || i === "view") { + var a = n.getData(), o = a.mapArray(function(S) { + var _ = a.getItemModel(S); + return [+_.get("x"), +_.get("y")]; + }), l = [], u = []; + TF(o, l, u), u[0] - l[0] === 0 && (u[0] += 1, l[0] -= 1), u[1] - l[1] === 0 && (u[1] += 1, l[1] -= 1); + var d = (u[0] - l[0]) / (u[1] - l[1]), f = BKe(n, t, d); + isNaN(d) && (l = [f.x, f.y], u = [f.x + f.width, f.y + f.height]); + var g = u[0] - l[0], v = u[1] - l[1], y = f.width, C = f.height, A = n.coordinateSystem = new ND(); + A.zoomLimit = n.get("scaleLimit"), A.setBoundingRect(l[0], l[1], g, v), A.setViewRect(f.x, f.y, y, C), A.setCenter(n.get("center"), t), A.setZoom(n.get("zoom")), r.push(A); + } + }), r; +} +var bse = Pl.prototype, Jz = yD.prototype, bSe = ( + /** @class */ + function() { + function e() { + this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1; + } + return e; + }() +); +(function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t; +})(bSe); +function Qz(e) { + return isNaN(+e.cpx1) || isNaN(+e.cpy1); +} +var jKe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "ec-line", n; + } + return t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new bSe(); + }, t.prototype.buildPath = function(r, n) { + Qz(n) ? bse.buildPath.call(this, r, n) : Jz.buildPath.call(this, r, n); + }, t.prototype.pointAt = function(r) { + return Qz(this.shape) ? bse.pointAt.call(this, r) : Jz.pointAt.call(this, r); + }, t.prototype.tangentAt = function(r) { + var n = this.shape, i = Qz(n) ? [n.x2 - n.x1, n.y2 - n.y1] : Jz.tangentAt.call(this, r); + return AE(i, i); + }, t; + }(Ei) +); +const $Ke = jKe; +var e3 = ["fromSymbol", "toSymbol"]; +function Ese(e) { + return "_" + e + "Type"; +} +function Cse(e, t, r) { + var n = t.getItemVisual(r, e); + if (!n || n === "none") + return n; + var i = t.getItemVisual(r, e + "Size"), a = t.getItemVisual(r, e + "Rotate"), o = t.getItemVisual(r, e + "Offset"), l = t.getItemVisual(r, e + "KeepAspect"), u = wI(i), d = kE(o || 0, u); + return n + u + d + (a || "") + (l || ""); +} +function Tse(e, t, r) { + var n = t.getItemVisual(r, e); + if (!(!n || n === "none")) { + var i = t.getItemVisual(r, e + "Size"), a = t.getItemVisual(r, e + "Rotate"), o = t.getItemVisual(r, e + "Offset"), l = t.getItemVisual(r, e + "KeepAspect"), u = wI(i), d = kE(o || 0, u), f = $s(n, -u[0] / 2 + d[0], -u[1] / 2 + d[1], u[0], u[1], null, l); + return f.__specifiedRotation = a == null || isNaN(a) ? void 0 : +a * Math.PI / 180 || 0, f.name = e, f; + } +} +function VKe(e) { + var t = new $Ke({ + name: "line", + subPixelOptimize: !0 + }); + return BW(t.shape, e), t; +} +function BW(e, t) { + e.x1 = t[0][0], e.y1 = t[0][1], e.x2 = t[1][0], e.y2 = t[1][1], e.percent = 1; + var r = t[2]; + r ? (e.cpx1 = r[0], e.cpy1 = r[1]) : (e.cpx1 = NaN, e.cpy1 = NaN); +} +var zKe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this) || this; + return a._createLine(r, n, i), a; + } + return t.prototype._createLine = function(r, n, i) { + var a = r.hostModel, o = r.getItemLayout(n), l = VKe(o); + l.shape.percent = 0, Po(l, { + shape: { + percent: 1 + } + }, a, n), this.add(l), Ee(e3, function(u) { + var d = Tse(u, r, n); + this.add(d), this[Ese(u)] = Cse(u, r, n); + }, this), this._updateCommonStl(r, n, i); + }, t.prototype.updateData = function(r, n, i) { + var a = r.hostModel, o = this.childOfName("line"), l = r.getItemLayout(n), u = { + shape: {} + }; + BW(u.shape, l), ia(o, u, a, n), Ee(e3, function(d) { + var f = Cse(d, r, n), g = Ese(d); + if (this[g] !== f) { + this.remove(this.childOfName(d)); + var v = Tse(d, r, n); + this.add(v); + } + this[g] = f; + }, this), this._updateCommonStl(r, n, i); + }, t.prototype.getLinePath = function() { + return this.childAt(0); + }, t.prototype._updateCommonStl = function(r, n, i) { + var a = r.hostModel, o = this.childOfName("line"), l = i && i.emphasisLineStyle, u = i && i.blurLineStyle, d = i && i.selectLineStyle, f = i && i.labelStatesModels, g = i && i.emphasisDisabled, v = i && i.focus, y = i && i.blurScope; + if (!i || r.hasItemOption) { + var C = r.getItemModel(n), A = C.getModel("emphasis"); + l = A.getModel("lineStyle").getLineStyle(), u = C.getModel(["blur", "lineStyle"]).getLineStyle(), d = C.getModel(["select", "lineStyle"]).getLineStyle(), g = A.get("disabled"), v = A.get("focus"), y = A.get("blurScope"), f = Ll(C); + } + var S = r.getItemVisual(n, "style"), _ = S.stroke; + o.useStyle(S), o.style.fill = null, o.style.strokeNoScale = !0, o.ensureState("emphasis").style = l, o.ensureState("blur").style = u, o.ensureState("select").style = d, Ee(e3, function(b) { + var R = this.childOfName(b); + if (R) { + R.setColor(_), R.style.opacity = S.opacity; + for (var M = 0; M < Lu.length; M++) { + var O = Lu[M], P = o.getState(O); + if (P) { + var B = P.style || {}, H = R.ensureState(O), Y = H.style || (H.style = {}); + B.stroke != null && (Y[R.__isEmptyBrush ? "stroke" : "fill"] = B.stroke), B.opacity != null && (Y.opacity = B.opacity); + } + } + R.markRedraw(); + } + }, this); + var E = a.getRawValue(n); + Ec(this, f, { + labelDataIndex: n, + labelFetcher: { + getFormattedLabel: function(b, R) { + return a.getFormattedLabel(b, R, r.dataType); + } + }, + inheritColor: _ || "#000", + defaultOpacity: S.opacity, + defaultText: (E == null ? r.getName(n) : isFinite(E) ? Is(E) : E) + "" + }); + var I = this.getTextContent(); + if (I) { + var w = f.normal; + I.__align = I.style.align, I.__verticalAlign = I.style.verticalAlign, I.__position = w.get("position") || "middle"; + var x = w.get("distance"); + qt(x) || (x = [x, x]), I.__labelDistance = x; + } + this.setTextConfig({ + position: null, + local: !0, + inside: !1 + // Can't be inside for stroke element. + }), xs(this, v, y, g); + }, t.prototype.highlight = function() { + Hm(this); + }, t.prototype.downplay = function() { + Wm(this); + }, t.prototype.updateLayout = function(r, n) { + this.setLinePoints(r.getItemLayout(n)); + }, t.prototype.setLinePoints = function(r) { + var n = this.childOfName("line"); + BW(n.shape, r), n.dirty(); + }, t.prototype.beforeUpdate = function() { + var r = this, n = r.childOfName("fromSymbol"), i = r.childOfName("toSymbol"), a = r.getTextContent(); + if (!n && !i && (!a || a.ignore)) + return; + for (var o = 1, l = this.parent; l; ) + l.scaleX && (o /= l.scaleX), l = l.parent; + var u = r.childOfName("line"); + if (!this.__dirty && !u.__dirty) + return; + var d = u.shape.percent, f = u.pointAt(0), g = u.pointAt(d), v = Y_([], g, f); + AE(v, v); + function y(P, B) { + var H = P.__specifiedRotation; + if (H == null) { + var Y = u.tangentAt(B); + P.attr("rotation", (B === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(Y[1], Y[0])); + } else + P.attr("rotation", H); + } + if (n && (n.setPosition(f), y(n, 0), n.scaleX = n.scaleY = o * d, n.markRedraw()), i && (i.setPosition(g), y(i, 1), i.scaleX = i.scaleY = o * d, i.markRedraw()), a && !a.ignore) { + a.x = a.y = 0, a.originX = a.originY = 0; + var C = void 0, A = void 0, S = a.__labelDistance, _ = S[0] * o, E = S[1] * o, I = d / 2, w = u.tangentAt(I), x = [w[1], -w[0]], b = u.pointAt(I); + x[1] > 0 && (x[0] = -x[0], x[1] = -x[1]); + var R = w[0] < 0 ? -1 : 1; + if (a.__position !== "start" && a.__position !== "end") { + var M = -Math.atan2(w[1], w[0]); + g[0] < f[0] && (M = Math.PI + M), a.rotation = M; + } + var O = void 0; + switch (a.__position) { + case "insideStartTop": + case "insideMiddleTop": + case "insideEndTop": + case "middle": + O = -E, A = "bottom"; + break; + case "insideStartBottom": + case "insideMiddleBottom": + case "insideEndBottom": + O = E, A = "top"; + break; + default: + O = 0, A = "middle"; + } + switch (a.__position) { + case "end": + a.x = v[0] * _ + g[0], a.y = v[1] * E + g[1], C = v[0] > 0.8 ? "left" : v[0] < -0.8 ? "right" : "center", A = v[1] > 0.8 ? "top" : v[1] < -0.8 ? "bottom" : "middle"; + break; + case "start": + a.x = -v[0] * _ + f[0], a.y = -v[1] * E + f[1], C = v[0] > 0.8 ? "right" : v[0] < -0.8 ? "left" : "center", A = v[1] > 0.8 ? "bottom" : v[1] < -0.8 ? "top" : "middle"; + break; + case "insideStartTop": + case "insideStart": + case "insideStartBottom": + a.x = _ * R + f[0], a.y = f[1] + O, C = w[0] < 0 ? "right" : "left", a.originX = -_ * R, a.originY = -O; + break; + case "insideMiddleTop": + case "insideMiddle": + case "insideMiddleBottom": + case "middle": + a.x = b[0], a.y = b[1] + O, C = "center", a.originY = -O; + break; + case "insideEndTop": + case "insideEnd": + case "insideEndBottom": + a.x = -_ * R + g[0], a.y = g[1] + O, C = w[0] >= 0 ? "right" : "left", a.originX = _ * R, a.originY = -O; + break; + } + a.scaleX = a.scaleY = o, a.setStyle({ + // Use the user specified text align and baseline first + verticalAlign: a.__verticalAlign || A, + align: a.__align || C + }); + } + }, t; + }(_n) +); +const G9 = zKe; +var HKe = ( + /** @class */ + function() { + function e(t) { + this.group = new _n(), this._LineCtor = t || G9; + } + return e.prototype.updateData = function(t) { + var r = this; + this._progressiveEls = null; + var n = this, i = n.group, a = n._lineData; + n._lineData = t, a || i.removeAll(); + var o = wse(t); + t.diff(a).add(function(l) { + r._doAdd(t, l, o); + }).update(function(l, u) { + r._doUpdate(a, t, u, l, o); + }).remove(function(l) { + i.remove(a.getItemGraphicEl(l)); + }).execute(); + }, e.prototype.updateLayout = function() { + var t = this._lineData; + t && t.eachItemGraphicEl(function(r, n) { + r.updateLayout(t, n); + }, this); + }, e.prototype.incrementalPrepareUpdate = function(t) { + this._seriesScope = wse(t), this._lineData = null, this.group.removeAll(); + }, e.prototype.incrementalUpdate = function(t, r) { + this._progressiveEls = []; + function n(l) { + !l.isGroup && !WKe(l) && (l.incremental = !0, l.ensureState("emphasis").hoverLayer = !0); + } + for (var i = t.start; i < t.end; i++) { + var a = r.getItemLayout(i); + if (t3(a)) { + var o = new this._LineCtor(r, i, this._seriesScope); + o.traverse(n), this.group.add(o), r.setItemGraphicEl(i, o), this._progressiveEls.push(o); + } + } + }, e.prototype.remove = function() { + this.group.removeAll(); + }, e.prototype.eachRendered = function(t) { + D0(this._progressiveEls || this.group, t); + }, e.prototype._doAdd = function(t, r, n) { + var i = t.getItemLayout(r); + if (t3(i)) { + var a = new this._LineCtor(t, r, n); + t.setItemGraphicEl(r, a), this.group.add(a); + } + }, e.prototype._doUpdate = function(t, r, n, i, a) { + var o = t.getItemGraphicEl(n); + if (!t3(r.getItemLayout(i))) { + this.group.remove(o); + return; + } + o ? o.updateData(r, i, a) : o = new this._LineCtor(r, i, a), r.setItemGraphicEl(i, o), this.group.add(o); + }, e; + }() +); +function WKe(e) { + return e.animators && e.animators.length > 0; +} +function wse(e) { + var t = e.hostModel, r = t.getModel("emphasis"); + return { + lineStyle: t.getModel("lineStyle").getLineStyle(), + emphasisLineStyle: r.getModel(["lineStyle"]).getLineStyle(), + blurLineStyle: t.getModel(["blur", "lineStyle"]).getLineStyle(), + selectLineStyle: t.getModel(["select", "lineStyle"]).getLineStyle(), + emphasisDisabled: r.get("disabled"), + blurScope: r.get("blurScope"), + focus: r.get("focus"), + labelStatesModels: Ll(t) + }; +} +function Ise(e) { + return isNaN(e[0]) || isNaN(e[1]); +} +function t3(e) { + return e && !Ise(e[0]) && !Ise(e[1]); +} +const Y9 = HKe; +var r3 = [], n3 = [], i3 = [], kT = Kl, a3 = o0, xse = Math.abs; +function Ase(e, t, r) { + for (var n = e[0], i = e[1], a = e[2], o = 1 / 0, l, u = r * r, d = 0.1, f = 0.1; f <= 0.9; f += 0.1) { + r3[0] = kT(n[0], i[0], a[0], f), r3[1] = kT(n[1], i[1], a[1], f); + var g = xse(a3(r3, t) - u); + g < o && (o = g, l = f); + } + for (var v = 0; v < 32; v++) { + var y = l + d; + n3[0] = kT(n[0], i[0], a[0], l), n3[1] = kT(n[1], i[1], a[1], l), i3[0] = kT(n[0], i[0], a[0], y), i3[1] = kT(n[1], i[1], a[1], y); + var g = a3(n3, t) - u; + if (xse(g) < 0.01) + break; + var C = a3(i3, t) - u; + d /= 2, g < 0 ? C >= 0 ? l = l + d : l = l - d : C >= 0 ? l = l - d : l = l + d; + } + return l; +} +function o3(e, t) { + var r = [], n = lR, i = [[], [], []], a = [[], []], o = []; + t /= 2, e.eachEdge(function(l, u) { + var d = l.getLayout(), f = l.getVisual("fromSymbol"), g = l.getVisual("toSymbol"); + d.__original || (d.__original = [qg(d[0]), qg(d[1])], d[2] && d.__original.push(qg(d[2]))); + var v = d.__original; + if (d[2] != null) { + if (Wc(i[0], v[0]), Wc(i[1], v[2]), Wc(i[2], v[1]), f && f !== "none") { + var y = _1(l.node1), C = Ase(i, v[0], y * t); + n(i[0][0], i[1][0], i[2][0], C, r), i[0][0] = r[3], i[1][0] = r[4], n(i[0][1], i[1][1], i[2][1], C, r), i[0][1] = r[3], i[1][1] = r[4]; + } + if (g && g !== "none") { + var y = _1(l.node2), C = Ase(i, v[1], y * t); + n(i[0][0], i[1][0], i[2][0], C, r), i[1][0] = r[1], i[2][0] = r[2], n(i[0][1], i[1][1], i[2][1], C, r), i[1][1] = r[1], i[2][1] = r[2]; + } + Wc(d[0], i[0]), Wc(d[1], i[2]), Wc(d[2], i[1]); + } else { + if (Wc(a[0], v[0]), Wc(a[1], v[1]), Y_(o, a[1], a[0]), AE(o, o), f && f !== "none") { + var y = _1(l.node1); + fL(a[0], a[0], o, y * t); + } + if (g && g !== "none") { + var y = _1(l.node2); + fL(a[1], a[1], o, -y * t); + } + Wc(d[0], a[0]), Wc(d[1], a[1]); + } + }); +} +function Rse(e) { + return e.type === "view"; +} +var GKe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n) { + var i = new RD(), a = new Y9(), o = this.group; + this._controller = new PD(n.getZr()), this._controllerHost = { + target: o + }, o.add(i.group), o.add(a.group), this._symbolDraw = i, this._lineDraw = a, this._firstRender = !0; + }, t.prototype.render = function(r, n, i) { + var a = this, o = r.coordinateSystem; + this._model = r; + var l = this._symbolDraw, u = this._lineDraw, d = this.group; + if (Rse(o)) { + var f = { + x: o.x, + y: o.y, + scaleX: o.scaleX, + scaleY: o.scaleY + }; + this._firstRender ? d.attr(f) : ia(d, f, r); + } + o3(r.getGraph(), y1(r)); + var g = r.getData(); + l.updateData(g); + var v = r.getEdgeData(); + u.updateData(v), this._updateNodeAndLinkScale(), this._updateController(r, n, i), clearTimeout(this._layoutTimeout); + var y = r.forceLayout, C = r.get(["force", "layoutAnimation"]); + y && this._startForceLayoutIteration(y, C); + var A = r.get("layout"); + g.graph.eachNode(function(I) { + var w = I.dataIndex, x = I.getGraphicEl(), b = I.getModel(); + if (x) { + x.off("drag").off("dragend"); + var R = b.get("draggable"); + R && x.on("drag", function(O) { + switch (A) { + case "force": + y.warmUp(), !a._layouting && a._startForceLayoutIteration(y, C), y.setFixed(w), g.setItemLayout(w, [x.x, x.y]); + break; + case "circular": + g.setItemLayout(w, [x.x, x.y]), I.setLayout({ + fixed: !0 + }, !0), W9(r, "symbolSize", I, [O.offsetX, O.offsetY]), a.updateLayout(r); + break; + case "none": + default: + g.setItemLayout(w, [x.x, x.y]), H9(r.getGraph(), r), a.updateLayout(r); + break; + } + }).on("dragend", function() { + y && y.setUnfixed(w); + }), x.setDraggable(R, !!b.get("cursor")); + var M = b.get(["emphasis", "focus"]); + M === "adjacency" && (Tn(x).focus = I.getAdjacentDataIndices()); + } + }), g.graph.eachEdge(function(I) { + var w = I.getGraphicEl(), x = I.getModel().get(["emphasis", "focus"]); + w && x === "adjacency" && (Tn(w).focus = { + edge: [I.dataIndex], + node: [I.node1.dataIndex, I.node2.dataIndex] + }); + }); + var S = r.get("layout") === "circular" && r.get(["circular", "rotateLabel"]), _ = g.getLayout("cx"), E = g.getLayout("cy"); + g.graph.eachNode(function(I) { + SSe(I, S, _, E); + }), this._firstRender = !1; + }, t.prototype.dispose = function() { + this.remove(), this._controller && this._controller.dispose(), this._controllerHost = null; + }, t.prototype._startForceLayoutIteration = function(r, n) { + var i = this; + (function a() { + r.step(function(o) { + i.updateLayout(i._model), (i._layouting = !o) && (n ? i._layoutTimeout = setTimeout(a, 16) : a()); + }); + })(); + }, t.prototype._updateController = function(r, n, i) { + var a = this, o = this._controller, l = this._controllerHost, u = this.group; + if (o.setPointerChecker(function(d, f, g) { + var v = u.getBoundingRect(); + return v.applyTransform(u.transform), v.contain(f, g) && !JF(d, i, r); + }), !Rse(r.coordinateSystem)) { + o.disable(); + return; + } + o.enable(r.get("roam")), l.zoomLimit = r.get("scaleLimit"), l.zoom = r.coordinateSystem.getZoom(), o.off("pan").off("zoom").on("pan", function(d) { + P9(l, d.dx, d.dy), i.dispatchAction({ + seriesId: r.id, + type: "graphRoam", + dx: d.dx, + dy: d.dy + }); + }).on("zoom", function(d) { + N9(l, d.scale, d.originX, d.originY), i.dispatchAction({ + seriesId: r.id, + type: "graphRoam", + zoom: d.scale, + originX: d.originX, + originY: d.originY + }), a._updateNodeAndLinkScale(), o3(r.getGraph(), y1(r)), a._lineDraw.updateLayout(), i.updateLabelLayout(); + }); + }, t.prototype._updateNodeAndLinkScale = function() { + var r = this._model, n = r.getData(), i = y1(r); + n.eachItemGraphicEl(function(a, o) { + a && a.setSymbolScale(i); + }); + }, t.prototype.updateLayout = function(r) { + o3(r.getGraph(), y1(r)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout(); + }, t.prototype.remove = function() { + clearTimeout(this._layoutTimeout), this._layouting = !1, this._layoutTimeout = null, this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove(); + }, t.type = "graph", t; + }(Ya) +); +const YKe = GKe; +function PT(e) { + return "_EC_" + e; +} +var XKe = ( + /** @class */ + function() { + function e(t) { + this.type = "graph", this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this._directed = t || !1; + } + return e.prototype.isDirected = function() { + return this._directed; + }, e.prototype.addNode = function(t, r) { + t = t == null ? "" + r : "" + t; + var n = this._nodesMap; + if (!n[PT(t)]) { + var i = new yb(t, r); + return i.hostGraph = this, this.nodes.push(i), n[PT(t)] = i, i; + } + }, e.prototype.getNodeByIndex = function(t) { + var r = this.data.getRawIndex(t); + return this.nodes[r]; + }, e.prototype.getNodeById = function(t) { + return this._nodesMap[PT(t)]; + }, e.prototype.addEdge = function(t, r, n) { + var i = this._nodesMap, a = this._edgesMap; + if (Qi(t) && (t = this.nodes[t]), Qi(r) && (r = this.nodes[r]), t instanceof yb || (t = i[PT(t)]), r instanceof yb || (r = i[PT(r)]), !(!t || !r)) { + var o = t.id + "-" + r.id, l = new ESe(t, r, n); + return l.hostGraph = this, this._directed && (t.outEdges.push(l), r.inEdges.push(l)), t.edges.push(l), t !== r && r.edges.push(l), this.edges.push(l), a[o] = l, l; + } + }, e.prototype.getEdgeByIndex = function(t) { + var r = this.edgeData.getRawIndex(t); + return this.edges[r]; + }, e.prototype.getEdge = function(t, r) { + t instanceof yb && (t = t.id), r instanceof yb && (r = r.id); + var n = this._edgesMap; + return this._directed ? n[t + "-" + r] : n[t + "-" + r] || n[r + "-" + t]; + }, e.prototype.eachNode = function(t, r) { + for (var n = this.nodes, i = n.length, a = 0; a < i; a++) + n[a].dataIndex >= 0 && t.call(r, n[a], a); + }, e.prototype.eachEdge = function(t, r) { + for (var n = this.edges, i = n.length, a = 0; a < i; a++) + n[a].dataIndex >= 0 && n[a].node1.dataIndex >= 0 && n[a].node2.dataIndex >= 0 && t.call(r, n[a], a); + }, e.prototype.breadthFirstTraverse = function(t, r, n, i) { + if (r instanceof yb || (r = this._nodesMap[PT(r)]), !!r) { + for (var a = n === "out" ? "outEdges" : n === "in" ? "inEdges" : "edges", o = 0; o < this.nodes.length; o++) + this.nodes[o].__visited = !1; + if (!t.call(i, r, null)) + for (var l = [r]; l.length; ) + for (var u = l.shift(), d = u[a], o = 0; o < d.length; o++) { + var f = d[o], g = f.node1 === u ? f.node2 : f.node1; + if (!g.__visited) { + if (t.call(i, g, u)) + return; + l.push(g), g.__visited = !0; + } + } + } + }, e.prototype.update = function() { + for (var t = this.data, r = this.edgeData, n = this.nodes, i = this.edges, a = 0, o = n.length; a < o; a++) + n[a].dataIndex = -1; + for (var a = 0, o = t.count(); a < o; a++) + n[t.getRawIndex(a)].dataIndex = a; + r.filterSelf(function(l) { + var u = i[r.getRawIndex(l)]; + return u.node1.dataIndex >= 0 && u.node2.dataIndex >= 0; + }); + for (var a = 0, o = i.length; a < o; a++) + i[a].dataIndex = -1; + for (var a = 0, o = r.count(); a < o; a++) + i[r.getRawIndex(a)].dataIndex = a; + }, e.prototype.clone = function() { + for (var t = new e(this._directed), r = this.nodes, n = this.edges, i = 0; i < r.length; i++) + t.addNode(r[i].id, r[i].dataIndex); + for (var i = 0; i < n.length; i++) { + var a = n[i]; + t.addEdge(a.node1.id, a.node2.id, a.dataIndex); + } + return t; + }, e; + }() +), yb = ( + /** @class */ + function() { + function e(t, r) { + this.inEdges = [], this.outEdges = [], this.edges = [], this.dataIndex = -1, this.id = t == null ? "" : t, this.dataIndex = r == null ? -1 : r; + } + return e.prototype.degree = function() { + return this.edges.length; + }, e.prototype.inDegree = function() { + return this.inEdges.length; + }, e.prototype.outDegree = function() { + return this.outEdges.length; + }, e.prototype.getModel = function(t) { + if (!(this.dataIndex < 0)) { + var r = this.hostGraph, n = r.data.getItemModel(this.dataIndex); + return n.getModel(t); + } + }, e.prototype.getAdjacentDataIndices = function() { + for (var t = { + edge: [], + node: [] + }, r = 0; r < this.edges.length; r++) { + var n = this.edges[r]; + n.dataIndex < 0 || (t.edge.push(n.dataIndex), t.node.push(n.node1.dataIndex, n.node2.dataIndex)); + } + return t; + }, e.prototype.getTrajectoryDataIndices = function() { + for (var t = $r(), r = $r(), n = 0; n < this.edges.length; n++) { + var i = this.edges[n]; + if (!(i.dataIndex < 0)) { + t.set(i.dataIndex, !0); + for (var a = [i.node1], o = [i.node2], l = 0; l < a.length; ) { + var u = a[l]; + l++, r.set(u.dataIndex, !0); + for (var d = 0; d < u.inEdges.length; d++) + t.set(u.inEdges[d].dataIndex, !0), a.push(u.inEdges[d].node1); + } + for (l = 0; l < o.length; ) { + var f = o[l]; + l++, r.set(f.dataIndex, !0); + for (var d = 0; d < f.outEdges.length; d++) + t.set(f.outEdges[d].dataIndex, !0), o.push(f.outEdges[d].node2); + } + } + } + return { + edge: t.keys(), + node: r.keys() + }; + }, e; + }() +), ESe = ( + /** @class */ + function() { + function e(t, r, n) { + this.dataIndex = -1, this.node1 = t, this.node2 = r, this.dataIndex = n == null ? -1 : n; + } + return e.prototype.getModel = function(t) { + if (!(this.dataIndex < 0)) { + var r = this.hostGraph, n = r.edgeData.getItemModel(this.dataIndex); + return n.getModel(t); + } + }, e.prototype.getAdjacentDataIndices = function() { + return { + edge: [this.dataIndex], + node: [this.node1.dataIndex, this.node2.dataIndex] + }; + }, e.prototype.getTrajectoryDataIndices = function() { + var t = $r(), r = $r(); + t.set(this.dataIndex, !0); + for (var n = [this.node1], i = [this.node2], a = 0; a < n.length; ) { + var o = n[a]; + a++, r.set(o.dataIndex, !0); + for (var l = 0; l < o.inEdges.length; l++) + t.set(o.inEdges[l].dataIndex, !0), n.push(o.inEdges[l].node1); + } + for (a = 0; a < i.length; ) { + var u = i[a]; + a++, r.set(u.dataIndex, !0); + for (var l = 0; l < u.outEdges.length; l++) + t.set(u.outEdges[l].dataIndex, !0), i.push(u.outEdges[l].node2); + } + return { + edge: t.keys(), + node: r.keys() + }; + }, e; + }() +); +function CSe(e, t) { + return { + /** + * @param Default 'value'. can be 'a', 'b', 'c', 'd', 'e'. + */ + getValue: function(r) { + var n = this[e][t]; + return n.getStore().get(n.getDimensionIndex(r || "value"), this.dataIndex); + }, + // TODO: TYPE stricter type. + setVisual: function(r, n) { + this.dataIndex >= 0 && this[e][t].setItemVisual(this.dataIndex, r, n); + }, + getVisual: function(r) { + return this[e][t].getItemVisual(this.dataIndex, r); + }, + setLayout: function(r, n) { + this.dataIndex >= 0 && this[e][t].setItemLayout(this.dataIndex, r, n); + }, + getLayout: function() { + return this[e][t].getItemLayout(this.dataIndex); + }, + getGraphicEl: function() { + return this[e][t].getItemGraphicEl(this.dataIndex); + }, + getRawIndex: function() { + return this[e][t].getRawIndex(this.dataIndex); + } + }; +} +Fs(yb, CSe("hostGraph", "data")); +Fs(ESe, CSe("hostGraph", "edgeData")); +const KKe = XKe; +function TSe(e, t, r, n, i) { + for (var a = new KKe(n), o = 0; o < e.length; o++) + a.addNode(kl( + // Id, name, dataIndex + e[o].id, + e[o].name, + o + ), o); + for (var l = [], u = [], d = 0, o = 0; o < t.length; o++) { + var f = t[o], g = f.source, v = f.target; + a.addEdge(g, v, d) && (u.push(f), l.push(kl(ml(f.id, null), g + " > " + v)), d++); + } + var y = r.get("coordinateSystem"), C; + if (y === "cartesian2d" || y === "polar") + C = fv(e, r); + else { + var A = EI.get(y), S = A ? A.dimensions || [] : []; + di(S, "value") < 0 && S.concat(["value"]); + var _ = II(e, { + coordDimensions: S, + encodeDefine: r.getEncode() + }).dimensions; + C = new Ql(_, r), C.initData(e); + } + var E = new Ql(["value"], r); + return E.initData(u, l), i && i(C, E), aSe({ + mainData: C, + struct: a, + structAttr: "graph", + datas: { + node: C, + edge: E + }, + datasAttr: { + node: "data", + edge: "edgeData" + } + }), a.update(), a; +} +var ZKe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.hasSymbolVisual = !0, r; + } + return t.prototype.init = function(r) { + e.prototype.init.apply(this, arguments); + var n = this; + function i() { + return n._categoriesData; + } + this.legendVisualProvider = new kD(i, i), this.fillDataTextStyle(r.edges || r.links), this._updateCategoriesData(); + }, t.prototype.mergeOption = function(r) { + e.prototype.mergeOption.apply(this, arguments), this.fillDataTextStyle(r.edges || r.links), this._updateCategoriesData(); + }, t.prototype.mergeDefaultAndTheme = function(r) { + e.prototype.mergeDefaultAndTheme.apply(this, arguments), uE(r, "edgeLabel", ["show"]); + }, t.prototype.getInitialData = function(r, n) { + var i = r.edges || r.links || [], a = r.data || r.nodes || [], o = this; + if (a && i) { + OKe(this); + var l = TSe(a, i, this, !0, u); + return Ee(l.edges, function(d) { + MKe(d.node1, d.node2, this, d.dataIndex); + }, this), l.data; + } + function u(d, f) { + d.wrapMethod("getItemModel", function(C) { + var A = o._categoriesModels, S = C.getShallow("category"), _ = A[S]; + return _ && (_.parentModel = C.parentModel, C.parentModel = _), C; + }); + var g = Wa.prototype.getModel; + function v(C, A) { + var S = g.call(this, C, A); + return S.resolveParentPath = y, S; + } + f.wrapMethod("getItemModel", function(C) { + return C.resolveParentPath = y, C.getModel = v, C; + }); + function y(C) { + if (C && (C[0] === "label" || C[1] === "label")) { + var A = C.slice(); + return C[0] === "label" ? A[0] = "edgeLabel" : C[1] === "label" && (A[1] = "edgeLabel"), A; + } + return C; + } + } + }, t.prototype.getGraph = function() { + return this.getData().graph; + }, t.prototype.getEdgeData = function() { + return this.getGraph().edgeData; + }, t.prototype.getCategoriesData = function() { + return this._categoriesData; + }, t.prototype.formatTooltip = function(r, n, i) { + if (i === "edge") { + var a = this.getData(), o = this.getDataParams(r, i), l = a.graph.getEdgeByIndex(r), u = a.getName(l.node1.dataIndex), d = a.getName(l.node2.dataIndex), f = []; + return u != null && f.push(u), d != null && f.push(d), Fl("nameValue", { + name: f.join(" > "), + value: o.value, + noValue: o.value == null + }); + } + var g = Rye({ + series: this, + dataIndex: r, + multipleSeries: n + }); + return g; + }, t.prototype._updateCategoriesData = function() { + var r = er(this.option.categories || [], function(i) { + return i.value != null ? i : $t({ + value: 0 + }, i); + }), n = new Ql(["value"], this); + n.initData(r), this._categoriesData = n, this._categoriesModels = n.mapArray(function(i) { + return n.getItemModel(i); + }); + }, t.prototype.setZoom = function(r) { + this.option.zoom = r; + }, t.prototype.setCenter = function(r) { + this.option.center = r; + }, t.prototype.isAnimationEnabled = function() { + return e.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"])); + }, t.type = "series.graph", t.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "view", + // Default option for all coordinate systems + // xAxisIndex: 0, + // yAxisIndex: 0, + // polarIndex: 0, + // geoIndex: 0, + legendHoverLink: !0, + layout: null, + // Configuration of circular layout + circular: { + rotateLabel: !1 + }, + // Configuration of force directed layout + force: { + initLayout: null, + // Node repulsion. Can be an array to represent range. + repulsion: [0, 50], + gravity: 0.1, + // Initial friction + friction: 0.6, + // Edge length. Can be an array to represent range. + edgeLength: 30, + layoutAnimation: !0 + }, + left: "center", + top: "center", + // right: null, + // bottom: null, + // width: '80%', + // height: '80%', + symbol: "circle", + symbolSize: 10, + edgeSymbol: ["none", "none"], + edgeSymbolSize: 10, + edgeLabel: { + position: "middle", + distance: 5 + }, + draggable: !1, + roam: !1, + // Default on center of graph + center: null, + zoom: 1, + // Symbol size scale ratio in roam + nodeScaleRatio: 0.6, + // cursor: null, + // categories: [], + // data: [] + // Or + // nodes: [] + // + // links: [] + // Or + // edges: [] + label: { + show: !1, + formatter: "{b}" + }, + itemStyle: {}, + lineStyle: { + color: "#aaa", + width: 1, + opacity: 0.5 + }, + emphasis: { + scale: !0, + label: { + show: !0 + } + }, + select: { + itemStyle: { + borderColor: "#212121" + } + } + }, t; + }(fo) +); +const qKe = ZKe; +var JKe = { + type: "graphRoam", + event: "graphRoam", + update: "none" +}; +function QKe(e) { + e.registerChartView(YKe), e.registerSeriesModel(qKe), e.registerProcessor(IKe), e.registerVisual(xKe), e.registerVisual(AKe), e.registerLayout(kKe), e.registerLayout(e.PRIORITY.VISUAL.POST_CHART_LAYOUT, NKe), e.registerLayout(FKe), e.registerCoordinateSystem("graphView", { + dimensions: ND.dimensions, + create: UKe + }), e.registerAction({ + type: "focusNodeAdjacency", + event: "focusNodeAdjacency", + update: "series:focusNodeAdjacency" + }, Ls), e.registerAction({ + type: "unfocusNodeAdjacency", + event: "unfocusNodeAdjacency", + update: "series:unfocusNodeAdjacency" + }, Ls), e.registerAction(JKe, function(t, r, n) { + r.eachComponent({ + mainType: "series", + query: t + }, function(i) { + var a = i.coordinateSystem, o = F9(a, t, void 0, n); + i.setCenter && i.setCenter(o.center), i.setZoom && i.setZoom(o.zoom); + }); + }); +} +var eZe = ( + /** @class */ + function() { + function e() { + this.angle = 0, this.width = 10, this.r = 10, this.x = 0, this.y = 0; + } + return e; + }() +), tZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "pointer", n; + } + return t.prototype.getDefaultShape = function() { + return new eZe(); + }, t.prototype.buildPath = function(r, n) { + var i = Math.cos, a = Math.sin, o = n.r, l = n.width, u = n.angle, d = n.x - i(u) * l * (l >= o / 3 ? 1 : 2), f = n.y - a(u) * l * (l >= o / 3 ? 1 : 2); + u = n.angle - Math.PI / 2, r.moveTo(d, f), r.lineTo(n.x + i(u) * l, n.y + a(u) * l), r.lineTo(n.x + i(n.angle) * o, n.y + a(n.angle) * o), r.lineTo(n.x - i(u) * l, n.y - a(u) * l), r.lineTo(d, f); + }, t; + }(Ei) +); +const rZe = tZe; +function nZe(e, t) { + var r = e.get("center"), n = t.getWidth(), i = t.getHeight(), a = Math.min(n, i), o = yr(r[0], t.getWidth()), l = yr(r[1], t.getHeight()), u = yr(e.get("radius"), a / 2); + return { + cx: o, + cy: l, + r: u + }; +} +function CP(e, t) { + var r = e == null ? "" : e + ""; + return t && (wr(t) ? r = t.replace("{value}", r) : Kr(t) && (r = t(e))), r; +} +var iZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + this.group.removeAll(); + var a = r.get(["axisLine", "lineStyle", "color"]), o = nZe(r, i); + this._renderMain(r, n, i, a, o), this._data = r.getData(); + }, t.prototype.dispose = function() { + }, t.prototype._renderMain = function(r, n, i, a, o) { + var l = this.group, u = r.get("clockwise"), d = -r.get("startAngle") / 180 * Math.PI, f = -r.get("endAngle") / 180 * Math.PI, g = r.getModel("axisLine"), v = g.get("roundCap"), y = v ? WL : Fu, C = g.get("show"), A = g.getModel("lineStyle"), S = A.get("width"), _ = [d, f]; + E8(_, !u), d = _[0], f = _[1]; + for (var E = f - d, I = d, w = [], x = 0; C && x < a.length; x++) { + var b = Math.min(Math.max(a[x][0], 0), 1); + f = d + E * b; + var R = new y({ + shape: { + startAngle: I, + endAngle: f, + cx: o.cx, + cy: o.cy, + clockwise: u, + r0: o.r - S, + r: o.r + }, + silent: !0 + }); + R.setStyle({ + fill: a[x][1] + }), R.setStyle(A.getLineStyle( + // Because we use sector to simulate arc + // so the properties for stroking are useless + ["color", "width"] + )), w.push(R), I = f; + } + w.reverse(), Ee(w, function(O) { + return l.add(O); + }); + var M = function(O) { + if (O <= 0) + return a[0][1]; + var P; + for (P = 0; P < a.length; P++) + if (a[P][0] >= O && (P === 0 ? 0 : a[P - 1][0]) < O) + return a[P][1]; + return a[P - 1][1]; + }; + this._renderTicks(r, n, i, M, o, d, f, u, S), this._renderTitleAndDetail(r, n, i, M, o), this._renderAnchor(r, o), this._renderPointer(r, n, i, M, o, d, f, u, S); + }, t.prototype._renderTicks = function(r, n, i, a, o, l, u, d, f) { + for (var g = this.group, v = o.cx, y = o.cy, C = o.r, A = +r.get("min"), S = +r.get("max"), _ = r.getModel("splitLine"), E = r.getModel("axisTick"), I = r.getModel("axisLabel"), w = r.get("splitNumber"), x = E.get("splitNumber"), b = yr(_.get("length"), C), R = yr(E.get("length"), C), M = l, O = (u - l) / w, P = O / x, B = _.getModel("lineStyle").getLineStyle(), H = E.getModel("lineStyle").getLineStyle(), Y = _.get("distance"), X, ee, ae = 0; ae <= w; ae++) { + if (X = Math.cos(M), ee = Math.sin(M), _.get("show")) { + var J = Y ? Y + f : f, ne = new Pl({ + shape: { + x1: X * (C - J) + v, + y1: ee * (C - J) + y, + x2: X * (C - b - J) + v, + y2: ee * (C - b - J) + y + }, + style: B, + silent: !0 + }); + B.stroke === "auto" && ne.setStyle({ + stroke: a(ae / w) + }), g.add(ne); + } + if (I.get("show")) { + var J = I.get("distance") + Y, fe = CP(Is(ae / w * (S - A) + A), I.get("formatter")), de = a(ae / w), Te = X * (C - b - J) + v, be = ee * (C - b - J) + y, Ve = I.get("rotate"), pe = 0; + Ve === "radial" ? (pe = -M + 2 * Math.PI, pe > Math.PI / 2 && (pe += Math.PI)) : Ve === "tangential" ? pe = -M - Math.PI / 2 : Qi(Ve) && (pe = Ve * Math.PI / 180), pe === 0 ? g.add(new Hi({ + style: uo(I, { + text: fe, + x: Te, + y: be, + verticalAlign: ee < -0.8 ? "top" : ee > 0.8 ? "bottom" : "middle", + align: X < -0.4 ? "left" : X > 0.4 ? "right" : "center" + }, { + inheritColor: de + }), + silent: !0 + })) : g.add(new Hi({ + style: uo(I, { + text: fe, + x: Te, + y: be, + verticalAlign: "middle", + align: "center" + }, { + inheritColor: de + }), + silent: !0, + originX: Te, + originY: be, + rotation: pe + })); + } + if (E.get("show") && ae !== w) { + var J = E.get("distance"); + J = J ? J + f : f; + for (var Be = 0; Be <= x; Be++) { + X = Math.cos(M), ee = Math.sin(M); + var Ue = new Pl({ + shape: { + x1: X * (C - J) + v, + y1: ee * (C - J) + y, + x2: X * (C - R - J) + v, + y2: ee * (C - R - J) + y + }, + silent: !0, + style: H + }); + H.stroke === "auto" && Ue.setStyle({ + stroke: a((ae + Be / x) / w) + }), g.add(Ue), M += P; + } + M -= P; + } else + M += O; + } + }, t.prototype._renderPointer = function(r, n, i, a, o, l, u, d, f) { + var g = this.group, v = this._data, y = this._progressEls, C = [], A = r.get(["pointer", "show"]), S = r.getModel("progress"), _ = S.get("show"), E = r.getData(), I = E.mapDimension("value"), w = +r.get("min"), x = +r.get("max"), b = [w, x], R = [l, u]; + function M(P, B) { + var H = E.getItemModel(P), Y = H.getModel("pointer"), X = yr(Y.get("width"), o.r), ee = yr(Y.get("length"), o.r), ae = r.get(["pointer", "icon"]), J = Y.get("offsetCenter"), ne = yr(J[0], o.r), fe = yr(J[1], o.r), de = Y.get("keepAspect"), Te; + return ae ? Te = $s(ae, ne - X / 2, fe - ee, X, ee, null, de) : Te = new rZe({ + shape: { + angle: -Math.PI / 2, + width: X, + r: ee, + x: ne, + y: fe + } + }), Te.rotation = -(B + Math.PI / 2), Te.x = o.cx, Te.y = o.cy, Te; + } + function O(P, B) { + var H = S.get("roundCap"), Y = H ? WL : Fu, X = S.get("overlap"), ee = X ? S.get("width") : f / E.count(), ae = X ? o.r - ee : o.r - (P + 1) * ee, J = X ? o.r : o.r - P * ee, ne = new Y({ + shape: { + startAngle: l, + endAngle: B, + cx: o.cx, + cy: o.cy, + clockwise: d, + r0: ae, + r: J + } + }); + return X && (ne.z2 = x - E.get(I, P) % x), ne; + } + (_ || A) && (E.diff(v).add(function(P) { + var B = E.get(I, P); + if (A) { + var H = M(P, l); + Po(H, { + rotation: -((isNaN(+B) ? R[0] : Ea(B, b, R, !0)) + Math.PI / 2) + }, r), g.add(H), E.setItemGraphicEl(P, H); + } + if (_) { + var Y = O(P, l), X = S.get("clip"); + Po(Y, { + shape: { + endAngle: Ea(B, b, R, X) + } + }, r), g.add(Y), ZH(r.seriesIndex, E.dataType, P, Y), C[P] = Y; + } + }).update(function(P, B) { + var H = E.get(I, P); + if (A) { + var Y = v.getItemGraphicEl(B), X = Y ? Y.rotation : l, ee = M(P, X); + ee.rotation = X, ia(ee, { + rotation: -((isNaN(+H) ? R[0] : Ea(H, b, R, !0)) + Math.PI / 2) + }, r), g.add(ee), E.setItemGraphicEl(P, ee); + } + if (_) { + var ae = y[B], J = ae ? ae.shape.endAngle : l, ne = O(P, J), fe = S.get("clip"); + ia(ne, { + shape: { + endAngle: Ea(H, b, R, fe) + } + }, r), g.add(ne), ZH(r.seriesIndex, E.dataType, P, ne), C[P] = ne; + } + }).execute(), E.each(function(P) { + var B = E.getItemModel(P), H = B.getModel("emphasis"), Y = H.get("focus"), X = H.get("blurScope"), ee = H.get("disabled"); + if (A) { + var ae = E.getItemGraphicEl(P), J = E.getItemVisual(P, "style"), ne = J.fill; + if (ae instanceof ec) { + var fe = ae.style; + ae.useStyle($t({ + image: fe.image, + x: fe.x, + y: fe.y, + width: fe.width, + height: fe.height + }, J)); + } else + ae.useStyle(J), ae.type !== "pointer" && ae.setColor(ne); + ae.setStyle(B.getModel(["pointer", "itemStyle"]).getItemStyle()), ae.style.fill === "auto" && ae.setStyle("fill", a(Ea(E.get(I, P), b, [0, 1], !0))), ae.z2EmphasisLift = 0, bc(ae, B), xs(ae, Y, X, ee); + } + if (_) { + var de = C[P]; + de.useStyle(E.getItemVisual(P, "style")), de.setStyle(B.getModel(["progress", "itemStyle"]).getItemStyle()), de.z2EmphasisLift = 0, bc(de, B), xs(de, Y, X, ee); + } + }), this._progressEls = C); + }, t.prototype._renderAnchor = function(r, n) { + var i = r.getModel("anchor"), a = i.get("show"); + if (a) { + var o = i.get("size"), l = i.get("icon"), u = i.get("offsetCenter"), d = i.get("keepAspect"), f = $s(l, n.cx - o / 2 + yr(u[0], n.r), n.cy - o / 2 + yr(u[1], n.r), o, o, null, d); + f.z2 = i.get("showAbove") ? 1 : 0, f.setStyle(i.getModel("itemStyle").getItemStyle()), this.group.add(f); + } + }, t.prototype._renderTitleAndDetail = function(r, n, i, a, o) { + var l = this, u = r.getData(), d = u.mapDimension("value"), f = +r.get("min"), g = +r.get("max"), v = new _n(), y = [], C = [], A = r.isAnimationEnabled(), S = r.get(["pointer", "showAbove"]); + u.diff(this._data).add(function(_) { + y[_] = new Hi({ + silent: !0 + }), C[_] = new Hi({ + silent: !0 + }); + }).update(function(_, E) { + y[_] = l._titleEls[E], C[_] = l._detailEls[E]; + }).execute(), u.each(function(_) { + var E = u.getItemModel(_), I = u.get(d, _), w = new _n(), x = a(Ea(I, [f, g], [0, 1], !0)), b = E.getModel("title"); + if (b.get("show")) { + var R = b.get("offsetCenter"), M = o.cx + yr(R[0], o.r), O = o.cy + yr(R[1], o.r), P = y[_]; + P.attr({ + z2: S ? 0 : 2, + style: uo(b, { + x: M, + y: O, + text: u.getName(_), + align: "center", + verticalAlign: "middle" + }, { + inheritColor: x + }) + }), w.add(P); + } + var B = E.getModel("detail"); + if (B.get("show")) { + var H = B.get("offsetCenter"), Y = o.cx + yr(H[0], o.r), X = o.cy + yr(H[1], o.r), ee = yr(B.get("width"), o.r), ae = yr(B.get("height"), o.r), J = r.get(["progress", "show"]) ? u.getItemVisual(_, "style").fill : x, P = C[_], ne = B.get("formatter"); + P.attr({ + z2: S ? 0 : 2, + style: uo(B, { + x: Y, + y: X, + text: CP(I, ne), + width: isNaN(ee) ? null : ee, + height: isNaN(ae) ? null : ae, + align: "center", + verticalAlign: "middle" + }, { + inheritColor: J + }) + }), kme(P, { + normal: B + }, I, function(de) { + return CP(de, ne); + }), A && Pme(P, _, u, r, { + getFormattedLabel: function(de, Te, be, Ve, pe, Be) { + return CP(Be ? Be.interpolatedValue : I, ne); + } + }), w.add(P); + } + v.add(w); + }), this.group.add(v), this._titleEls = y, this._detailEls = C; + }, t.type = "gauge", t; + }(Ya) +); +const aZe = iZe; +var oZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.visualStyleAccessPath = "itemStyle", r; + } + return t.prototype.getInitialData = function(r, n) { + return AI(this, ["value"]); + }, t.type = "series.gauge", t.defaultOption = { + // zlevel: 0, + z: 2, + colorBy: "data", + // 默认全局居中 + center: ["50%", "50%"], + legendHoverLink: !0, + radius: "75%", + startAngle: 225, + endAngle: -45, + clockwise: !0, + // 最小值 + min: 0, + // 最大值 + max: 100, + // 分割段数,默认为10 + splitNumber: 10, + // 坐标轴线 + axisLine: { + // 默认显示,属性show控制显示与否 + show: !0, + roundCap: !1, + lineStyle: { + color: [[1, "#E6EBF8"]], + width: 10 + } + }, + // 坐标轴线 + progress: { + // 默认显示,属性show控制显示与否 + show: !1, + overlap: !0, + width: 10, + roundCap: !1, + clip: !0 + }, + // 分隔线 + splitLine: { + // 默认显示,属性show控制显示与否 + show: !0, + // 属性length控制线长 + length: 10, + distance: 10, + // 属性lineStyle(详见lineStyle)控制线条样式 + lineStyle: { + color: "#63677A", + width: 3, + type: "solid" + } + }, + // 坐标轴小标记 + axisTick: { + // 属性show控制显示与否,默认不显示 + show: !0, + // 每份split细分多少段 + splitNumber: 5, + // 属性length控制线长 + length: 6, + distance: 10, + // 属性lineStyle控制线条样式 + lineStyle: { + color: "#63677A", + width: 1, + type: "solid" + } + }, + axisLabel: { + show: !0, + distance: 15, + // formatter: null, + color: "#464646", + fontSize: 12, + rotate: 0 + }, + pointer: { + icon: null, + offsetCenter: [0, 0], + show: !0, + showAbove: !0, + length: "60%", + width: 6, + keepAspect: !1 + }, + anchor: { + show: !1, + showAbove: !1, + size: 6, + icon: "circle", + offsetCenter: [0, 0], + keepAspect: !1, + itemStyle: { + color: "#fff", + borderWidth: 0, + borderColor: "#5470c6" + } + }, + title: { + show: !0, + // x, y,单位px + offsetCenter: [0, "20%"], + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: "#464646", + fontSize: 16, + valueAnimation: !1 + }, + detail: { + show: !0, + backgroundColor: "rgba(0,0,0,0)", + borderWidth: 0, + borderColor: "#ccc", + width: 100, + height: null, + padding: [5, 10], + // x, y,单位px + offsetCenter: [0, "40%"], + // formatter: null, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: "#464646", + fontSize: 30, + fontWeight: "bold", + lineHeight: 30, + valueAnimation: !1 + } + }, t; + }(fo) +); +const sZe = oZe; +function lZe(e) { + e.registerChartView(aZe), e.registerSeriesModel(sZe); +} +var cZe = ["itemStyle", "opacity"], uZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n) { + var i = e.call(this) || this, a = i, o = new $u(), l = new Hi(); + return a.setTextContent(l), i.setTextGuideLine(o), i.updateData(r, n, !0), i; + } + return t.prototype.updateData = function(r, n, i) { + var a = this, o = r.hostModel, l = r.getItemModel(n), u = r.getItemLayout(n), d = l.getModel("emphasis"), f = l.get(cZe); + f = f == null ? 1 : f, i || Lp(a), a.useStyle(r.getItemVisual(n, "style")), a.style.lineJoin = "round", i ? (a.setShape({ + points: u.points + }), a.style.opacity = 0, Po(a, { + style: { + opacity: f + } + }, o, n)) : ia(a, { + style: { + opacity: f + }, + shape: { + points: u.points + } + }, o, n), bc(a, l), this._updateLabel(r, n), xs(this, d.get("focus"), d.get("blurScope"), d.get("disabled")); + }, t.prototype._updateLabel = function(r, n) { + var i = this, a = this.getTextGuideLine(), o = i.getTextContent(), l = r.hostModel, u = r.getItemModel(n), d = r.getItemLayout(n), f = d.label, g = r.getItemVisual(n, "style"), v = g.fill; + Ec( + // position will not be used in setLabelStyle + o, + Ll(u), + { + labelFetcher: r.hostModel, + labelDataIndex: n, + defaultOpacity: g.opacity, + defaultText: r.getName(n) + }, + { + normal: { + align: f.textAlign, + verticalAlign: f.verticalAlign + } + } + ), i.setTextConfig({ + local: !0, + inside: !!f.inside, + insideStroke: v, + // insideFill: 'auto', + outsideFill: v + }); + var y = f.linePoints; + a.setShape({ + points: y + }), i.textGuideLineConfig = { + anchor: y ? new ni(y[0][0], y[0][1]) : null + }, ia(o, { + style: { + x: f.x, + y: f.y + } + }, l, n), o.attr({ + rotation: f.rotation, + originX: f.x, + originY: f.y, + z2: 10 + }), T9(i, w9(u), { + // Default use item visual color + stroke: v + }); + }, t; + }(Bu) +), hZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.ignoreLabelLineUpdate = !0, r; + } + return t.prototype.render = function(r, n, i) { + var a = r.getData(), o = this._data, l = this.group; + a.diff(o).add(function(u) { + var d = new uZe(a, u); + a.setItemGraphicEl(u, d), l.add(d); + }).update(function(u, d) { + var f = o.getItemGraphicEl(d); + f.updateData(a, u), l.add(f), a.setItemGraphicEl(u, f); + }).remove(function(u) { + var d = o.getItemGraphicEl(u); + mR(d, r, u); + }).execute(), this._data = a; + }, t.prototype.remove = function() { + this.group.removeAll(), this._data = null; + }, t.prototype.dispose = function() { + }, t.type = "funnel", t; + }(Ya) +); +const dZe = hZe; +var fZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r) { + e.prototype.init.apply(this, arguments), this.legendVisualProvider = new kD(Ar(this.getData, this), Ar(this.getRawData, this)), this._defaultLabelLine(r); + }, t.prototype.getInitialData = function(r, n) { + return AI(this, { + coordDimensions: ["value"], + encodeDefaulter: Ln(H8, this) + }); + }, t.prototype._defaultLabelLine = function(r) { + uE(r, "labelLine", ["show"]); + var n = r.labelLine, i = r.emphasis.labelLine; + n.show = n.show && r.label.show, i.show = i.show && r.emphasis.label.show; + }, t.prototype.getDataParams = function(r) { + var n = this.getData(), i = e.prototype.getDataParams.call(this, r), a = n.mapDimension("value"), o = n.getSum(a); + return i.percent = o ? +(n.get(a, r) / o * 100).toFixed(2) : 0, i.$vars.push("percent"), i; + }, t.type = "series.funnel", t.defaultOption = { + // zlevel: 0, // 一级层叠 + z: 2, + legendHoverLink: !0, + colorBy: "data", + left: 80, + top: 60, + right: 80, + bottom: 60, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + // 默认取数据最小最大值 + // min: 0, + // max: 100, + minSize: "0%", + maxSize: "100%", + sort: "descending", + orient: "vertical", + gap: 0, + funnelAlign: "center", + label: { + show: !0, + position: "outer" + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + }, + labelLine: { + show: !0, + length: 20, + lineStyle: { + // color: 各异, + width: 1 + } + }, + itemStyle: { + // color: 各异, + borderColor: "#fff", + borderWidth: 1 + }, + emphasis: { + label: { + show: !0 + } + }, + select: { + itemStyle: { + borderColor: "#212121" + } + } + }, t; + }(fo) +); +const pZe = fZe; +function gZe(e, t) { + return js(e.getBoxLayoutParams(), { + width: t.getWidth(), + height: t.getHeight() + }); +} +function vZe(e, t) { + for (var r = e.mapDimension("value"), n = e.mapArray(r, function(u) { + return u; + }), i = [], a = t === "ascending", o = 0, l = e.count(); o < l; o++) + i[o] = o; + return Kr(t) ? i.sort(t) : t !== "none" && i.sort(function(u, d) { + return a ? n[u] - n[d] : n[d] - n[u]; + }), i; +} +function mZe(e) { + var t = e.hostModel, r = t.get("orient"); + e.each(function(n) { + var i = e.getItemModel(n), a = i.getModel("label"), o = a.get("position"), l = i.getModel("labelLine"), u = e.getItemLayout(n), d = u.points, f = o === "inner" || o === "inside" || o === "center" || o === "insideLeft" || o === "insideRight", g, v, y, C; + if (f) + o === "insideLeft" ? (v = (d[0][0] + d[3][0]) / 2 + 5, y = (d[0][1] + d[3][1]) / 2, g = "left") : o === "insideRight" ? (v = (d[1][0] + d[2][0]) / 2 - 5, y = (d[1][1] + d[2][1]) / 2, g = "right") : (v = (d[0][0] + d[1][0] + d[2][0] + d[3][0]) / 4, y = (d[0][1] + d[1][1] + d[2][1] + d[3][1]) / 4, g = "center"), C = [[v, y], [v, y]]; + else { + var A = void 0, S = void 0, _ = void 0, E = void 0, I = l.get("length"); + o === "left" ? (A = (d[3][0] + d[0][0]) / 2, S = (d[3][1] + d[0][1]) / 2, _ = A - I, v = _ - 5, g = "right") : o === "right" ? (A = (d[1][0] + d[2][0]) / 2, S = (d[1][1] + d[2][1]) / 2, _ = A + I, v = _ + 5, g = "left") : o === "top" ? (A = (d[3][0] + d[0][0]) / 2, S = (d[3][1] + d[0][1]) / 2, E = S - I, y = E - 5, g = "center") : o === "bottom" ? (A = (d[1][0] + d[2][0]) / 2, S = (d[1][1] + d[2][1]) / 2, E = S + I, y = E + 5, g = "center") : o === "rightTop" ? (A = r === "horizontal" ? d[3][0] : d[1][0], S = r === "horizontal" ? d[3][1] : d[1][1], r === "horizontal" ? (E = S - I, y = E - 5, g = "center") : (_ = A + I, v = _ + 5, g = "top")) : o === "rightBottom" ? (A = d[2][0], S = d[2][1], r === "horizontal" ? (E = S + I, y = E + 5, g = "center") : (_ = A + I, v = _ + 5, g = "bottom")) : o === "leftTop" ? (A = d[0][0], S = r === "horizontal" ? d[0][1] : d[1][1], r === "horizontal" ? (E = S - I, y = E - 5, g = "center") : (_ = A - I, v = _ - 5, g = "right")) : o === "leftBottom" ? (A = r === "horizontal" ? d[1][0] : d[3][0], S = r === "horizontal" ? d[1][1] : d[2][1], r === "horizontal" ? (E = S + I, y = E + 5, g = "center") : (_ = A - I, v = _ - 5, g = "right")) : (A = (d[1][0] + d[2][0]) / 2, S = (d[1][1] + d[2][1]) / 2, r === "horizontal" ? (E = S + I, y = E + 5, g = "center") : (_ = A + I, v = _ + 5, g = "left")), r === "horizontal" ? (_ = A, v = _) : (E = S, y = E), C = [[A, S], [_, E]]; + } + u.label = { + linePoints: C, + x: v, + y, + verticalAlign: "middle", + textAlign: g, + inside: f + }; + }); +} +function yZe(e, t) { + e.eachSeriesByType("funnel", function(r) { + var n = r.getData(), i = n.mapDimension("value"), a = r.get("sort"), o = gZe(r, t), l = r.get("orient"), u = o.width, d = o.height, f = vZe(n, a), g = o.x, v = o.y, y = l === "horizontal" ? [yr(r.get("minSize"), d), yr(r.get("maxSize"), d)] : [yr(r.get("minSize"), u), yr(r.get("maxSize"), u)], C = n.getDataExtent(i), A = r.get("min"), S = r.get("max"); + A == null && (A = Math.min(C[0], 0)), S == null && (S = C[1]); + var _ = r.get("funnelAlign"), E = r.get("gap"), I = l === "horizontal" ? u : d, w = (I - E * (n.count() - 1)) / n.count(), x = function(X, ee) { + if (l === "horizontal") { + var ae = n.get(i, X) || 0, J = Ea(ae, [A, S], y, !0), ne = void 0; + switch (_) { + case "top": + ne = v; + break; + case "center": + ne = v + (d - J) / 2; + break; + case "bottom": + ne = v + (d - J); + break; + } + return [[ee, ne], [ee, ne + J]]; + } + var fe = n.get(i, X) || 0, de = Ea(fe, [A, S], y, !0), Te; + switch (_) { + case "left": + Te = g; + break; + case "center": + Te = g + (u - de) / 2; + break; + case "right": + Te = g + u - de; + break; + } + return [[Te, ee], [Te + de, ee]]; + }; + a === "ascending" && (w = -w, E = -E, l === "horizontal" ? g += u : v += d, f = f.reverse()); + for (var b = 0; b < f.length; b++) { + var R = f[b], M = f[b + 1], O = n.getItemModel(R); + if (l === "horizontal") { + var P = O.get(["itemStyle", "width"]); + P == null ? P = w : (P = yr(P, u), a === "ascending" && (P = -P)); + var B = x(R, g), H = x(M, g + P); + g += P + E, n.setItemLayout(R, { + points: B.concat(H.slice().reverse()) + }); + } else { + var Y = O.get(["itemStyle", "height"]); + Y == null ? Y = w : (Y = yr(Y, d), a === "ascending" && (Y = -Y)); + var B = x(R, v), H = x(M, v + Y); + v += Y + E, n.setItemLayout(R, { + points: B.concat(H.slice().reverse()) + }); + } + } + mZe(n); + }); +} +function _Ze(e) { + e.registerChartView(dZe), e.registerSeriesModel(pZe), e.registerLayout(yZe), e.registerProcessor(MD("funnel")); +} +var SZe = 0.3, bZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._dataGroup = new _n(), r._initialized = !1, r; + } + return t.prototype.init = function() { + this.group.add(this._dataGroup); + }, t.prototype.render = function(r, n, i, a) { + this._progressiveEls = null; + var o = this._dataGroup, l = r.getData(), u = this._data, d = r.coordinateSystem, f = d.dimensions, g = Ose(r); + l.diff(u).add(v).update(y).remove(C).execute(); + function v(S) { + var _ = Dse(l, o, S, f, d); + s3(_, l, S, g); + } + function y(S, _) { + var E = u.getItemGraphicEl(_), I = wSe(l, S, f, d); + l.setItemGraphicEl(S, E), ia(E, { + shape: { + points: I + } + }, r, S), Lp(E), s3(E, l, S, g); + } + function C(S) { + var _ = u.getItemGraphicEl(S); + o.remove(_); + } + if (!this._initialized) { + this._initialized = !0; + var A = EZe(d, r, function() { + setTimeout(function() { + o.removeClipPath(); + }); + }); + o.setClipPath(A); + } + this._data = l; + }, t.prototype.incrementalPrepareRender = function(r, n, i) { + this._initialized = !0, this._data = null, this._dataGroup.removeAll(); + }, t.prototype.incrementalRender = function(r, n, i) { + for (var a = n.getData(), o = n.coordinateSystem, l = o.dimensions, u = Ose(n), d = this._progressiveEls = [], f = r.start; f < r.end; f++) { + var g = Dse(a, this._dataGroup, f, l, o); + g.incremental = !0, s3(g, a, f, u), d.push(g); + } + }, t.prototype.remove = function() { + this._dataGroup && this._dataGroup.removeAll(), this._data = null; + }, t.type = "parallel", t; + }(Ya) +); +function EZe(e, t, r) { + var n = e.model, i = e.getRect(), a = new Xi({ + shape: { + x: i.x, + y: i.y, + width: i.width, + height: i.height + } + }), o = n.get("layout") === "horizontal" ? "width" : "height"; + return a.setShape(o, 0), Po(a, { + shape: { + width: i.width, + height: i.height + } + }, t, r), a; +} +function wSe(e, t, r, n) { + for (var i = [], a = 0; a < r.length; a++) { + var o = r[a], l = e.get(e.mapDimension(o), t); + CZe(l, n.getAxis(o).type) || i.push(n.dataToPoint(l, o)); + } + return i; +} +function Dse(e, t, r, n, i) { + var a = wSe(e, r, n, i), o = new $u({ + shape: { + points: a + }, + // silent: true, + z2: 10 + }); + return t.add(o), e.setItemGraphicEl(r, o), o; +} +function Ose(e) { + var t = e.get("smooth", !0); + return t === !0 && (t = SZe), t = ov(t), Bw(t) && (t = 0), { + smooth: t + }; +} +function s3(e, t, r, n) { + e.useStyle(t.getItemVisual(r, "style")), e.style.fill = null, e.setShape("smooth", n.smooth); + var i = t.getItemModel(r), a = i.getModel("emphasis"); + bc(e, i, "lineStyle"), xs(e, a.get("focus"), a.get("blurScope"), a.get("disabled")); +} +function CZe(e, t) { + return t === "category" ? e == null : e == null || isNaN(e); +} +const TZe = bZe; +var wZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.visualStyleAccessPath = "lineStyle", r.visualDrawType = "stroke", r; + } + return t.prototype.getInitialData = function(r, n) { + return fv(null, this, { + useEncodeDefaulter: Ar(IZe, null, this) + }); + }, t.prototype.getRawIndicesByActiveState = function(r) { + var n = this.coordinateSystem, i = this.getData(), a = []; + return n.eachActiveState(i, function(o, l) { + r === o && a.push(i.getRawIndex(l)); + }), a; + }, t.type = "series.parallel", t.dependencies = ["parallel"], t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "parallel", + parallelIndex: 0, + label: { + show: !1 + }, + inactiveOpacity: 0.05, + activeOpacity: 1, + lineStyle: { + width: 1, + opacity: 0.45, + type: "solid" + }, + emphasis: { + label: { + show: !1 + } + }, + progressive: 500, + smooth: !1, + animationEasing: "linear" + }, t; + }(fo) +); +function IZe(e) { + var t = e.ecModel.getComponent("parallel", e.get("parallelIndex")); + if (t) { + var r = {}; + return Ee(t.dimensions, function(n) { + var i = xZe(n); + r[n] = i; + }), r; + } +} +function xZe(e) { + return +e.replace("dim", ""); +} +const AZe = wZe; +var RZe = ["lineStyle", "opacity"], DZe = { + seriesType: "parallel", + reset: function(e, t) { + var r = e.coordinateSystem, n = { + normal: e.get(["lineStyle", "opacity"]), + active: e.get("activeOpacity"), + inactive: e.get("inactiveOpacity") + }; + return { + progress: function(i, a) { + r.eachActiveState(a, function(o, l) { + var u = n[o]; + if (o === "normal" && a.hasItemOption) { + var d = a.getItemModel(l).get(RZe, !0); + d != null && (u = d); + } + var f = a.ensureUniqueItemVisual(l, "style"); + f.opacity = u; + }, i.start, i.end); + } + }; + } +}; +const OZe = DZe; +function MZe(e) { + kZe(e), PZe(e); +} +function kZe(e) { + if (!e.parallel) { + var t = !1; + Ee(e.series, function(r) { + r && r.type === "parallel" && (t = !0); + }), t && (e.parallel = [{}]); + } +} +function PZe(e) { + var t = qa(e.parallelAxis); + Ee(t, function(r) { + if (sn(r)) { + var n = r.parallelIndex || 0, i = qa(e.parallel)[n]; + i && i.parallelAxisDefault && Qn(r, i.parallelAxisDefault, !1); + } + }); +} +var NZe = 5, LZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + this._model = r, this._api = i, this._handlers || (this._handlers = {}, Ee(FZe, function(a, o) { + i.getZr().on(o, this._handlers[o] = Ar(a, this)); + }, this)), TI(this, "_throttledDispatchExpand", r.get("axisExpandRate"), "fixRate"); + }, t.prototype.dispose = function(r, n) { + bR(this, "_throttledDispatchExpand"), Ee(this._handlers, function(i, a) { + n.getZr().off(a, i); + }), this._handlers = null; + }, t.prototype._throttledDispatchExpand = function(r) { + this._dispatchExpand(r); + }, t.prototype._dispatchExpand = function(r) { + r && this._api.dispatchAction($t({ + type: "parallelAxisExpand" + }, r)); + }, t.type = "parallel", t; + }(Co) +), FZe = { + mousedown: function(e) { + l3(this, "click") && (this._mouseDownPoint = [e.offsetX, e.offsetY]); + }, + mouseup: function(e) { + var t = this._mouseDownPoint; + if (l3(this, "click") && t) { + var r = [e.offsetX, e.offsetY], n = Math.pow(t[0] - r[0], 2) + Math.pow(t[1] - r[1], 2); + if (n > NZe) + return; + var i = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]); + i.behavior !== "none" && this._dispatchExpand({ + axisExpandWindow: i.axisExpandWindow + }); + } + this._mouseDownPoint = null; + }, + mousemove: function(e) { + if (!(this._mouseDownPoint || !l3(this, "mousemove"))) { + var t = this._model, r = t.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]), n = r.behavior; + n === "jump" && this._throttledDispatchExpand.debounceNextCall(t.get("axisExpandDebounce")), this._throttledDispatchExpand(n === "none" ? null : { + axisExpandWindow: r.axisExpandWindow, + // Jumping uses animation, and sliding suppresses animation. + animation: n === "jump" ? null : { + duration: 0 + // Disable animation. + } + }); + } + } +}; +function l3(e, t) { + var r = e._model; + return r.get("axisExpandable") && r.get("axisExpandTriggerOn") === t; +} +const BZe = LZe; +var UZe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function() { + e.prototype.init.apply(this, arguments), this.mergeOption({}); + }, t.prototype.mergeOption = function(r) { + var n = this.option; + r && Qn(n, r, !0), this._initDimensions(); + }, t.prototype.contains = function(r, n) { + var i = r.get("parallelIndex"); + return i != null && n.getComponent("parallel", i) === this; + }, t.prototype.setAxisExpand = function(r) { + Ee(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(n) { + r.hasOwnProperty(n) && (this.option[n] = r[n]); + }, this); + }, t.prototype._initDimensions = function() { + var r = this.dimensions = [], n = this.parallelAxisIndex = [], i = Ma(this.ecModel.queryComponents({ + mainType: "parallelAxis" + }), function(a) { + return (a.get("parallelIndex") || 0) === this.componentIndex; + }, this); + Ee(i, function(a) { + r.push("dim" + a.get("dim")), n.push(a.componentIndex); + }); + }, t.type = "parallel", t.dependencies = ["parallelAxis"], t.layoutMode = "box", t.defaultOption = { + // zlevel: 0, + z: 0, + left: 80, + top: 60, + right: 80, + bottom: 60, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + layout: "horizontal", + // FIXME + // naming? + axisExpandable: !1, + axisExpandCenter: null, + axisExpandCount: 0, + axisExpandWidth: 50, + axisExpandRate: 17, + axisExpandDebounce: 50, + // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full. + // Do not doc to user until necessary. + axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], + axisExpandTriggerOn: "click", + parallelAxisDefault: null + }, t; + }(Mi) +); +const jZe = UZe; +var $Ze = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i, a, o) { + var l = e.call(this, r, n, i) || this; + return l.type = a || "value", l.axisIndex = o, l; + } + return t.prototype.isHorizontal = function() { + return this.coordinateSystem.getModel().get("layout") !== "horizontal"; + }, t; + }(Ed) +); +const VZe = $Ze; +function LE(e, t, r, n, i, a) { + e = e || 0; + var o = r[1] - r[0]; + if (i != null && (i = NT(i, [0, o])), a != null && (a = Math.max(a, i != null ? i : 0)), n === "all") { + var l = Math.abs(t[1] - t[0]); + l = NT(l, [0, o]), i = a = NT(l, [i, a]), n = 0; + } + t[0] = NT(t[0], r), t[1] = NT(t[1], r); + var u = c3(t, n); + t[n] += e; + var d = i || 0, f = r.slice(); + u.sign < 0 ? f[0] += d : f[1] -= d, t[n] = NT(t[n], f); + var g; + return g = c3(t, n), i != null && (g.sign !== u.sign || g.span < i) && (t[1 - n] = t[n] + u.sign * i), g = c3(t, n), a != null && g.span > a && (t[1 - n] = t[n] + g.sign * a), t; +} +function c3(e, t) { + var r = e[t] - e[1 - t]; + return { + span: Math.abs(r), + sign: r > 0 ? -1 : r < 0 ? 1 : t ? -1 : 1 + }; +} +function NT(e, t) { + return Math.min(t[1] != null ? t[1] : 1 / 0, Math.max(t[0] != null ? t[0] : -1 / 0, e)); +} +var u3 = Ee, ISe = Math.min, xSe = Math.max, Mse = Math.floor, zZe = Math.ceil, kse = Is, HZe = Math.PI, WZe = ( + /** @class */ + function() { + function e(t, r, n) { + this.type = "parallel", this._axesMap = $r(), this._axesLayout = {}, this.dimensions = t.dimensions, this._model = t, this._init(t, r, n); + } + return e.prototype._init = function(t, r, n) { + var i = t.dimensions, a = t.parallelAxisIndex; + u3(i, function(o, l) { + var u = a[l], d = r.getComponent("parallelAxis", u), f = this._axesMap.set(o, new VZe(o, ID(d), [0, 0], d.get("type"), u)), g = f.type === "category"; + f.onBand = g && d.get("boundaryGap"), f.inverse = d.get("inverse"), d.axis = f, f.model = d, f.coordinateSystem = d.coordinateSystem = this; + }, this); + }, e.prototype.update = function(t, r) { + this._updateAxesFromSeries(this._model, t); + }, e.prototype.containPoint = function(t) { + var r = this._makeLayoutInfo(), n = r.axisBase, i = r.layoutBase, a = r.pixelDimIndex, o = t[1 - a], l = t[a]; + return o >= n && o <= n + r.axisLength && l >= i && l <= i + r.layoutLength; + }, e.prototype.getModel = function() { + return this._model; + }, e.prototype._updateAxesFromSeries = function(t, r) { + r.eachSeries(function(n) { + if (t.contains(n, r)) { + var i = n.getData(); + u3(this.dimensions, function(a) { + var o = this._axesMap.get(a); + o.scale.unionExtentFromData(i, i.mapDimension(a)), vE(o.scale, o.model); + }, this); + } + }, this); + }, e.prototype.resize = function(t, r) { + this._rect = js(t.getBoxLayoutParams(), { + width: r.getWidth(), + height: r.getHeight() + }), this._layoutAxes(); + }, e.prototype.getRect = function() { + return this._rect; + }, e.prototype._makeLayoutInfo = function() { + var t = this._model, r = this._rect, n = ["x", "y"], i = ["width", "height"], a = t.get("layout"), o = a === "horizontal" ? 0 : 1, l = r[i[o]], u = [0, l], d = this.dimensions.length, f = TP(t.get("axisExpandWidth"), u), g = TP(t.get("axisExpandCount") || 0, [0, d]), v = t.get("axisExpandable") && d > 3 && d > g && g > 1 && f > 0 && l > 0, y = t.get("axisExpandWindow"), C; + if (y) + C = TP(y[1] - y[0], u), y[1] = y[0] + C; + else { + C = TP(f * (g - 1), u); + var A = t.get("axisExpandCenter") || Mse(d / 2); + y = [f * A - C / 2], y[1] = y[0] + C; + } + var S = (l - C) / (d - g); + S < 3 && (S = 0); + var _ = [Mse(kse(y[0] / f, 1)) + 1, zZe(kse(y[1] / f, 1)) - 1], E = S / f * y[0]; + return { + layout: a, + pixelDimIndex: o, + layoutBase: r[n[o]], + layoutLength: l, + axisBase: r[n[1 - o]], + axisLength: r[i[1 - o]], + axisExpandable: v, + axisExpandWidth: f, + axisCollapseWidth: S, + axisExpandWindow: y, + axisCount: d, + winInnerIndices: _, + axisExpandWindow0Pos: E + }; + }, e.prototype._layoutAxes = function() { + var t = this._rect, r = this._axesMap, n = this.dimensions, i = this._makeLayoutInfo(), a = i.layout; + r.each(function(o) { + var l = [0, i.axisLength], u = o.inverse ? 1 : 0; + o.setExtent(l[u], l[1 - u]); + }), u3(n, function(o, l) { + var u = (i.axisExpandable ? YZe : GZe)(l, i), d = { + horizontal: { + x: u.position, + y: i.axisLength + }, + vertical: { + x: 0, + y: u.position + } + }, f = { + horizontal: HZe / 2, + vertical: 0 + }, g = [d[a].x + t.x, d[a].y + t.y], v = f[a], y = ku(); + R0(y, y, v), Pp(y, y, g), this._axesLayout[o] = { + position: g, + rotation: v, + transform: y, + axisNameAvailableWidth: u.axisNameAvailableWidth, + axisLabelShow: u.axisLabelShow, + nameTruncateMaxWidth: u.nameTruncateMaxWidth, + tickDirection: 1, + labelDirection: 1 + }; + }, this); + }, e.prototype.getAxis = function(t) { + return this._axesMap.get(t); + }, e.prototype.dataToPoint = function(t, r) { + return this.axisCoordToPoint(this._axesMap.get(r).dataToCoord(t), r); + }, e.prototype.eachActiveState = function(t, r, n, i) { + n == null && (n = 0), i == null && (i = t.count()); + var a = this._axesMap, o = this.dimensions, l = [], u = []; + Ee(o, function(S) { + l.push(t.mapDimension(S)), u.push(a.get(S).model); + }); + for (var d = this.hasAxisBrushed(), f = n; f < i; f++) { + var g = void 0; + if (!d) + g = "normal"; + else { + g = "active"; + for (var v = t.getValues(l, f), y = 0, C = o.length; y < C; y++) { + var A = u[y].getActiveState(v[y]); + if (A === "inactive") { + g = "inactive"; + break; + } + } + } + r(g, f); + } + }, e.prototype.hasAxisBrushed = function() { + for (var t = this.dimensions, r = this._axesMap, n = !1, i = 0, a = t.length; i < a; i++) + r.get(t[i]).model.getActiveState() !== "normal" && (n = !0); + return n; + }, e.prototype.axisCoordToPoint = function(t, r) { + var n = this._axesLayout[r]; + return Op([t, 0], n.transform); + }, e.prototype.getAxisLayout = function(t) { + return cn(this._axesLayout[t]); + }, e.prototype.getSlidedAxisExpandWindow = function(t) { + var r = this._makeLayoutInfo(), n = r.pixelDimIndex, i = r.axisExpandWindow.slice(), a = i[1] - i[0], o = [0, r.axisExpandWidth * (r.axisCount - 1)]; + if (!this.containPoint(t)) + return { + behavior: "none", + axisExpandWindow: i + }; + var l = t[n] - r.layoutBase - r.axisExpandWindow0Pos, u, d = "slide", f = r.axisCollapseWidth, g = this._model.get("axisExpandSlideTriggerArea"), v = g[0] != null; + if (f) + v && f && l < a * g[0] ? (d = "jump", u = l - a * g[2]) : v && f && l > a * (1 - g[0]) ? (d = "jump", u = l - a * (1 - g[2])) : (u = l - a * g[1]) >= 0 && (u = l - a * (1 - g[1])) <= 0 && (u = 0), u *= r.axisExpandWidth / f, u ? LE(u, i, o, "all") : d = "none"; + else { + var y = i[1] - i[0], C = o[1] * l / y; + i = [xSe(0, C - y / 2)], i[1] = ISe(o[1], i[0] + y), i[0] = i[1] - y; + } + return { + axisExpandWindow: i, + behavior: d + }; + }, e; + }() +); +function TP(e, t) { + return ISe(xSe(e, t[0]), t[1]); +} +function GZe(e, t) { + var r = t.layoutLength / (t.axisCount - 1); + return { + position: r * e, + axisNameAvailableWidth: r, + axisLabelShow: !0 + }; +} +function YZe(e, t) { + var r = t.layoutLength, n = t.axisExpandWidth, i = t.axisCount, a = t.axisCollapseWidth, o = t.winInnerIndices, l, u = a, d = !1, f; + return e < o[0] ? (l = e * a, f = a) : e <= o[1] ? (l = t.axisExpandWindow0Pos + e * n - t.axisExpandWindow[0], u = n, d = !0) : (l = r - (i - 1 - e) * a, f = a), { + position: l, + axisNameAvailableWidth: u, + axisLabelShow: d, + nameTruncateMaxWidth: f + }; +} +const XZe = WZe; +function KZe(e, t) { + var r = []; + return e.eachComponent("parallel", function(n, i) { + var a = new XZe(n, e, t); + a.name = "parallel_" + i, a.resize(n, t), n.coordinateSystem = a, a.model = n, r.push(a); + }), e.eachSeries(function(n) { + if (n.get("coordinateSystem") === "parallel") { + var i = n.getReferringComponents("parallel", tl).models[0]; + n.coordinateSystem = i.coordinateSystem; + } + }), r; +} +var ZZe = { + create: KZe +}; +const qZe = ZZe; +var ASe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.activeIntervals = [], r; + } + return t.prototype.getAreaSelectStyle = function() { + return dE([ + ["fill", "color"], + ["lineWidth", "borderWidth"], + ["stroke", "borderColor"], + ["width", "width"], + ["opacity", "opacity"] + // Option decal is in `DecalObject` but style.decal is in `PatternObject`. + // So do not transfer decal directly. + ])(this.getModel("areaSelectStyle")); + }, t.prototype.setActiveIntervals = function(r) { + var n = this.activeIntervals = cn(r); + if (n) + for (var i = n.length - 1; i >= 0; i--) + ld(n[i]); + }, t.prototype.getActiveState = function(r) { + var n = this.activeIntervals; + if (!n.length) + return "normal"; + if (r == null || isNaN(+r)) + return "inactive"; + if (n.length === 1) { + var i = n[0]; + if (i[0] <= r && r <= i[1]) + return "active"; + } else + for (var a = 0, o = n.length; a < o; a++) + if (n[a][0] <= r && r <= n[a][1]) + return "active"; + return "inactive"; + }, t; + }(Mi) +); +Fs(ASe, xI); +const Pse = ASe; +var mE = !0, kR = Math.min, Ww = Math.max, JZe = Math.pow, QZe = 1e4, eqe = 6, tqe = 6, Nse = "globalPan", rqe = { + w: [0, 0], + e: [0, 1], + n: [1, 0], + s: [1, 1] +}, nqe = { + w: "ew", + e: "ew", + n: "ns", + s: "ns", + ne: "nesw", + sw: "nesw", + nw: "nwse", + se: "nwse" +}, Lse = { + brushStyle: { + lineWidth: 2, + stroke: "rgba(210,219,238,0.3)", + fill: "#D2DBEE" + }, + transformable: !0, + brushMode: "single", + removeOnClick: !1 +}, iqe = 0, aqe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this) || this; + return n._track = [], n._covers = [], n._handlers = {}, n._zr = r, n.group = new _n(), n._uid = "brushController_" + iqe++, Ee(dqe, function(i, a) { + this._handlers[a] = Ar(i, this); + }, n), n; + } + return t.prototype.enableBrush = function(r) { + return this._brushType && this._doDisableBrush(), r.brushType && this._doEnableBrush(r), this; + }, t.prototype._doEnableBrush = function(r) { + var n = this._zr; + this._enableGlobalPan || g7e(n, Nse, this._uid), Ee(this._handlers, function(i, a) { + n.on(a, i); + }), this._brushType = r.brushType, this._brushOption = Qn(cn(Lse), r, !0); + }, t.prototype._doDisableBrush = function() { + var r = this._zr; + v7e(r, Nse, this._uid), Ee(this._handlers, function(n, i) { + r.off(i, n); + }), this._brushType = this._brushOption = null; + }, t.prototype.setPanels = function(r) { + if (r && r.length) { + var n = this._panels = {}; + Ee(r, function(i) { + n[i.panelId] = cn(i); + }); + } else + this._panels = null; + return this; + }, t.prototype.mount = function(r) { + r = r || {}, this._enableGlobalPan = r.enableGlobalPan; + var n = this.group; + return this._zr.add(n), n.attr({ + x: r.x || 0, + y: r.y || 0, + rotation: r.rotation || 0, + scaleX: r.scaleX || 1, + scaleY: r.scaleY || 1 + }), this._transform = n.getLocalTransform(), this; + }, t.prototype.updateCovers = function(r) { + r = er(r, function(v) { + return Qn(cn(Lse), v, !0); + }); + var n = "\0-brush-index-", i = this._covers, a = this._covers = [], o = this, l = this._creatingCover; + return new Gm(i, r, d, u).add(f).update(f).remove(g).execute(), this; + function u(v, y) { + return (v.id != null ? v.id : n + y) + "-" + v.brushType; + } + function d(v, y) { + return u(v.__brushOption, y); + } + function f(v, y) { + var C = r[v]; + if (y != null && i[y] === l) + a[v] = i[y]; + else { + var A = a[v] = y != null ? (i[y].__brushOption = C, i[y]) : DSe(o, RSe(o, C)); + X9(o, A); + } + } + function g(v) { + i[v] !== l && o.group.remove(i[v]); + } + }, t.prototype.unmount = function() { + return this.enableBrush(!1), UW(this), this._zr.remove(this.group), this; + }, t.prototype.dispose = function() { + this.unmount(), this.off(); + }, t; + }(Rf) +); +function RSe(e, t) { + var r = rB[t.brushType].createCover(e, t); + return r.__brushOption = t, MSe(r, t), e.group.add(r), r; +} +function DSe(e, t) { + var r = K9(t); + return r.endCreating && (r.endCreating(e, t), MSe(t, t.__brushOption)), t; +} +function OSe(e, t) { + var r = t.__brushOption; + K9(t).updateCoverShape(e, t, r.range, r); +} +function MSe(e, t) { + var r = t.z; + r == null && (r = QZe), e.traverse(function(n) { + n.z = r, n.z2 = r; + }); +} +function X9(e, t) { + K9(t).updateCommon(e, t), OSe(e, t); +} +function K9(e) { + return rB[e.__brushOption.brushType]; +} +function Z9(e, t, r) { + var n = e._panels; + if (!n) + return mE; + var i, a = e._transform; + return Ee(n, function(o) { + o.isTargetByCursor(t, r, a) && (i = o); + }), i; +} +function kSe(e, t) { + var r = e._panels; + if (!r) + return mE; + var n = t.__brushOption.panelId; + return n != null ? r[n] : mE; +} +function UW(e) { + var t = e._covers, r = t.length; + return Ee(t, function(n) { + e.group.remove(n); + }, e), t.length = 0, !!r; +} +function yE(e, t) { + var r = er(e._covers, function(n) { + var i = n.__brushOption, a = cn(i.range); + return { + brushType: i.brushType, + panelId: i.panelId, + range: a + }; + }); + e.trigger("brush", { + areas: r, + isEnd: !!t.isEnd, + removeOnClick: !!t.removeOnClick + }); +} +function oqe(e) { + var t = e._track; + if (!t.length) + return !1; + var r = t[t.length - 1], n = t[0], i = r[0] - n[0], a = r[1] - n[1], o = JZe(i * i + a * a, 0.5); + return o > eqe; +} +function PSe(e) { + var t = e.length - 1; + return t < 0 && (t = 0), [e[0], e[t]]; +} +function NSe(e, t, r, n) { + var i = new _n(); + return i.add(new Xi({ + name: "main", + style: q9(r), + silent: !0, + draggable: !0, + cursor: "move", + drift: Ln(Fse, e, t, i, ["n", "s", "w", "e"]), + ondragend: Ln(yE, t, { + isEnd: !0 + }) + })), Ee(n, function(a) { + i.add(new Xi({ + name: a.join(""), + style: { + opacity: 0 + }, + draggable: !0, + silent: !0, + invisible: !0, + drift: Ln(Fse, e, t, i, a), + ondragend: Ln(yE, t, { + isEnd: !0 + }) + })); + }), i; +} +function LSe(e, t, r, n) { + var i = n.brushStyle.lineWidth || 0, a = Ww(i, tqe), o = r[0][0], l = r[1][0], u = o - i / 2, d = l - i / 2, f = r[0][1], g = r[1][1], v = f - a + i / 2, y = g - a + i / 2, C = f - o, A = g - l, S = C + i, _ = A + i; + bm(e, t, "main", o, l, C, A), n.transformable && (bm(e, t, "w", u, d, a, _), bm(e, t, "e", v, d, a, _), bm(e, t, "n", u, d, S, a), bm(e, t, "s", u, y, S, a), bm(e, t, "nw", u, d, a, a), bm(e, t, "ne", v, d, a, a), bm(e, t, "sw", u, y, a, a), bm(e, t, "se", v, y, a, a)); +} +function jW(e, t) { + var r = t.__brushOption, n = r.transformable, i = t.childAt(0); + i.useStyle(q9(r)), i.attr({ + silent: !n, + cursor: n ? "move" : "default" + }), Ee([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function(a) { + var o = t.childOfName(a.join("")), l = a.length === 1 ? $W(e, a[0]) : lqe(e, a); + o && o.attr({ + silent: !n, + invisible: !n, + cursor: n ? nqe[l] + "-resize" : null + }); + }); +} +function bm(e, t, r, n, i, a, o) { + var l = t.childOfName(r); + l && l.setShape(uqe(J9(e, t, [[n, i], [n + a, i + o]]))); +} +function q9(e) { + return Jr({ + strokeNoScale: !0 + }, e.brushStyle); +} +function FSe(e, t, r, n) { + var i = [kR(e, r), kR(t, n)], a = [Ww(e, r), Ww(t, n)]; + return [ + [i[0], a[0]], + [i[1], a[1]] + // y range + ]; +} +function sqe(e) { + return l0(e.group); +} +function $W(e, t) { + var r = { + w: "left", + e: "right", + n: "top", + s: "bottom" + }, n = { + left: "w", + right: "e", + top: "n", + bottom: "s" + }, i = OF(r[t], sqe(e)); + return n[i]; +} +function lqe(e, t) { + var r = [$W(e, t[0]), $W(e, t[1])]; + return (r[0] === "e" || r[0] === "w") && r.reverse(), r.join(""); +} +function Fse(e, t, r, n, i, a) { + var o = r.__brushOption, l = e.toRectRange(o.range), u = BSe(t, i, a); + Ee(n, function(d) { + var f = rqe[d]; + l[f[0]][f[1]] += u[f[0]]; + }), o.range = e.fromRectRange(FSe(l[0][0], l[1][0], l[0][1], l[1][1])), X9(t, r), yE(t, { + isEnd: !1 + }); +} +function cqe(e, t, r, n) { + var i = t.__brushOption.range, a = BSe(e, r, n); + Ee(i, function(o) { + o[0] += a[0], o[1] += a[1]; + }), X9(e, t), yE(e, { + isEnd: !1 + }); +} +function BSe(e, t, r) { + var n = e.group, i = n.transformCoordToLocal(t, r), a = n.transformCoordToLocal(0, 0); + return [i[0] - a[0], i[1] - a[1]]; +} +function J9(e, t, r) { + var n = kSe(e, t); + return n && n !== mE ? n.clipPath(r, e._transform) : cn(r); +} +function uqe(e) { + var t = kR(e[0][0], e[1][0]), r = kR(e[0][1], e[1][1]), n = Ww(e[0][0], e[1][0]), i = Ww(e[0][1], e[1][1]); + return { + x: t, + y: r, + width: n - t, + height: i - r + }; +} +function hqe(e, t, r) { + if ( + // Check active + !(!e._brushType || fqe(e, t.offsetX, t.offsetY)) + ) { + var n = e._zr, i = e._covers, a = Z9(e, t, r); + if (!e._dragging) + for (var o = 0; o < i.length; o++) { + var l = i[o].__brushOption; + if (a && (a === mE || l.panelId === a.panelId) && rB[l.brushType].contain(i[o], r[0], r[1])) + return; + } + a && n.setCursorStyle("crosshair"); + } +} +function VW(e) { + var t = e.event; + t.preventDefault && t.preventDefault(); +} +function zW(e, t, r) { + return e.childOfName("main").contain(t, r); +} +function USe(e, t, r, n) { + var i = e._creatingCover, a = e._creatingPanel, o = e._brushOption, l; + if (e._track.push(r.slice()), oqe(e) || i) { + if (a && !i) { + o.brushMode === "single" && UW(e); + var u = cn(o); + u.brushType = Bse(u.brushType, a), u.panelId = a === mE ? null : a.panelId, i = e._creatingCover = RSe(e, u), e._covers.push(i); + } + if (i) { + var d = rB[Bse(e._brushType, a)], f = i.__brushOption; + f.range = d.getCreatingRange(J9(e, i, e._track)), n && (DSe(e, i), d.updateCommon(e, i)), OSe(e, i), l = { + isEnd: n + }; + } + } else + n && o.brushMode === "single" && o.removeOnClick && Z9(e, t, r) && UW(e) && (l = { + isEnd: n, + removeOnClick: !0 + }); + return l; +} +function Bse(e, t) { + return e === "auto" ? t.defaultBrushType : e; +} +var dqe = { + mousedown: function(e) { + if (this._dragging) + Use(this, e); + else if (!e.target || !e.target.draggable) { + VW(e); + var t = this.group.transformCoordToLocal(e.offsetX, e.offsetY); + this._creatingCover = null; + var r = this._creatingPanel = Z9(this, e, t); + r && (this._dragging = !0, this._track = [t.slice()]); + } + }, + mousemove: function(e) { + var t = e.offsetX, r = e.offsetY, n = this.group.transformCoordToLocal(t, r); + if (hqe(this, e, n), this._dragging) { + VW(e); + var i = USe(this, e, n, !1); + i && yE(this, i); + } + }, + mouseup: function(e) { + Use(this, e); + } +}; +function Use(e, t) { + if (e._dragging) { + VW(t); + var r = t.offsetX, n = t.offsetY, i = e.group.transformCoordToLocal(r, n), a = USe(e, t, i, !0); + e._dragging = !1, e._track = [], e._creatingCover = null, a && yE(e, a); + } +} +function fqe(e, t, r) { + var n = e._zr; + return t < 0 || t > n.getWidth() || r < 0 || r > n.getHeight(); +} +var rB = { + lineX: jse(0), + lineY: jse(1), + rect: { + createCover: function(e, t) { + function r(n) { + return n; + } + return NSe({ + toRectRange: r, + fromRectRange: r + }, e, t, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]]); + }, + getCreatingRange: function(e) { + var t = PSe(e); + return FSe(t[1][0], t[1][1], t[0][0], t[0][1]); + }, + updateCoverShape: function(e, t, r, n) { + LSe(e, t, r, n); + }, + updateCommon: jW, + contain: zW + }, + polygon: { + createCover: function(e, t) { + var r = new _n(); + return r.add(new $u({ + name: "main", + style: q9(t), + silent: !0 + })), r; + }, + getCreatingRange: function(e) { + return e; + }, + endCreating: function(e, t) { + t.remove(t.childAt(0)), t.add(new Bu({ + name: "main", + draggable: !0, + drift: Ln(cqe, e, t), + ondragend: Ln(yE, e, { + isEnd: !0 + }) + })); + }, + updateCoverShape: function(e, t, r, n) { + t.childAt(0).setShape({ + points: J9(e, t, r) + }); + }, + updateCommon: jW, + contain: zW + } +}; +function jse(e) { + return { + createCover: function(t, r) { + return NSe({ + toRectRange: function(n) { + var i = [n, [0, 100]]; + return e && i.reverse(), i; + }, + fromRectRange: function(n) { + return n[e]; + } + }, t, r, [[["w"], ["e"]], [["n"], ["s"]]][e]); + }, + getCreatingRange: function(t) { + var r = PSe(t), n = kR(r[0][e], r[1][e]), i = Ww(r[0][e], r[1][e]); + return [n, i]; + }, + updateCoverShape: function(t, r, n, i) { + var a, o = kSe(t, r); + if (o !== mE && o.getLinearBrushOtherExtent) + a = o.getLinearBrushOtherExtent(e); + else { + var l = t._zr; + a = [0, [l.getWidth(), l.getHeight()][1 - e]]; + } + var u = [n, a]; + e && u.reverse(), LSe(t, r, u, i); + }, + updateCommon: jW, + contain: zW + }; +} +const Q9 = aqe; +function jSe(e) { + return e = eY(e), function(t) { + return k8(t, e); + }; +} +function $Se(e, t) { + return e = eY(e), function(r) { + var n = t != null ? t : r, i = n ? e.width : e.height, a = n ? e.x : e.y; + return [a, a + (i || 0)]; + }; +} +function VSe(e, t, r) { + var n = eY(e); + return function(i, a) { + return n.contain(a[0], a[1]) && !JF(i, t, r); + }; +} +function eY(e) { + return ei.create(e); +} +var pqe = ["axisLine", "axisTickLabel", "axisName"], gqe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n) { + e.prototype.init.apply(this, arguments), (this._brushController = new Q9(n.getZr())).on("brush", Ar(this._onBrush, this)); + }, t.prototype.render = function(r, n, i, a) { + if (!vqe(r, n, a)) { + this.axisModel = r, this.api = i, this.group.removeAll(); + var o = this._axisGroup; + if (this._axisGroup = new _n(), this.group.add(this._axisGroup), !!r.get("show")) { + var l = yqe(r, n), u = l.coordinateSystem, d = r.getAreaSelectStyle(), f = d.width, g = r.axis.dim, v = u.getAxisLayout(g), y = $t({ + strokeContainThreshold: f + }, v), C = new Xm(r, y); + Ee(pqe, C.add, C), this._axisGroup.add(C.getGroup()), this._refreshBrushController(y, d, r, l, f, i), SD(o, this._axisGroup, r); + } + } + }, t.prototype._refreshBrushController = function(r, n, i, a, o, l) { + var u = i.axis.getExtent(), d = u[1] - u[0], f = Math.min(30, Math.abs(d) * 0.1), g = ei.create({ + x: u[0], + y: -o / 2, + width: d, + height: o + }); + g.x -= f, g.width += 2 * f, this._brushController.mount({ + enableGlobalPan: !0, + rotation: r.rotation, + x: r.position[0], + y: r.position[1] + }).setPanels([{ + panelId: "pl", + clipPath: jSe(g), + isTargetByCursor: VSe(g, l, a), + getLinearBrushOtherExtent: $Se(g, 0) + }]).enableBrush({ + brushType: "lineX", + brushStyle: n, + removeOnClick: !0 + }).updateCovers(mqe(i)); + }, t.prototype._onBrush = function(r) { + var n = r.areas, i = this.axisModel, a = i.axis, o = er(n, function(l) { + return [a.coordToData(l.range[0], !0), a.coordToData(l.range[1], !0)]; + }); + (!i.option.realtime === r.isEnd || r.removeOnClick) && this.api.dispatchAction({ + type: "axisAreaSelect", + parallelAxisId: i.id, + intervals: o + }); + }, t.prototype.dispose = function() { + this._brushController.dispose(); + }, t.type = "parallelAxis", t; + }(Co) +); +function vqe(e, t, r) { + return r && r.type === "axisAreaSelect" && t.findComponents({ + mainType: "parallelAxis", + query: r + })[0] === e; +} +function mqe(e) { + var t = e.axis; + return er(e.activeIntervals, function(r) { + return { + brushType: "lineX", + panelId: "pl", + range: [t.dataToCoord(r[0], !0), t.dataToCoord(r[1], !0)] + }; + }); +} +function yqe(e, t) { + return t.getComponent("parallel", e.get("parallelIndex")); +} +const _qe = gqe; +var Sqe = { + type: "axisAreaSelect", + event: "axisAreaSelected" + // update: 'updateVisual' +}; +function bqe(e) { + e.registerAction(Sqe, function(t, r) { + r.eachComponent({ + mainType: "parallelAxis", + query: t + }, function(n) { + n.axis.model.setActiveIntervals(t.intervals); + }); + }), e.registerAction("parallelAxisExpand", function(t, r) { + r.eachComponent({ + mainType: "parallel", + query: t + }, function(n) { + n.setAxisExpand(t); + }); + }); +} +var Eqe = { + type: "value", + areaSelectStyle: { + width: 20, + borderWidth: 1, + borderColor: "rgba(160,197,232)", + color: "rgba(160,197,232)", + opacity: 0.3 + }, + realtime: !0, + z: 10 +}; +function zSe(e) { + e.registerComponentView(BZe), e.registerComponentModel(jZe), e.registerCoordinateSystem("parallel", qZe), e.registerPreprocessor(MZe), e.registerComponentModel(Pse), e.registerComponentView(_qe), Hw(e, "parallel", Pse, Eqe), bqe(e); +} +function Cqe(e) { + ii(zSe), e.registerChartView(TZe), e.registerSeriesModel(AZe), e.registerVisual(e.PRIORITY.VISUAL.BRUSH, OZe); +} +var Tqe = ( + /** @class */ + function() { + function e() { + this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.cpx2 = 0, this.cpy2 = 0, this.extent = 0; + } + return e; + }() +), wqe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + return e.call(this, r) || this; + } + return t.prototype.getDefaultShape = function() { + return new Tqe(); + }, t.prototype.buildPath = function(r, n) { + var i = n.extent; + r.moveTo(n.x1, n.y1), r.bezierCurveTo(n.cpx1, n.cpy1, n.cpx2, n.cpy2, n.x2, n.y2), n.orient === "vertical" ? (r.lineTo(n.x2 + i, n.y2), r.bezierCurveTo(n.cpx2 + i, n.cpy2, n.cpx1 + i, n.cpy1, n.x1 + i, n.y1)) : (r.lineTo(n.x2, n.y2 + i), r.bezierCurveTo(n.cpx2, n.cpy2 + i, n.cpx1, n.cpy1 + i, n.x1, n.y1 + i)), r.closePath(); + }, t.prototype.highlight = function() { + Hm(this); + }, t.prototype.downplay = function() { + Wm(this); + }, t; + }(Ei) +), Iqe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._focusAdjacencyDisabled = !1, r; + } + return t.prototype.render = function(r, n, i) { + var a = this, o = r.getGraph(), l = this.group, u = r.layoutInfo, d = u.width, f = u.height, g = r.getData(), v = r.getData("edge"), y = r.get("orient"); + this._model = r, l.removeAll(), l.x = u.x, l.y = u.y, o.eachEdge(function(C) { + var A = new wqe(), S = Tn(A); + S.dataIndex = C.dataIndex, S.seriesIndex = r.seriesIndex, S.dataType = "edge"; + var _ = C.getModel(), E = _.getModel("lineStyle"), I = E.get("curveness"), w = C.node1.getLayout(), x = C.node1.getModel(), b = x.get("localX"), R = x.get("localY"), M = C.node2.getLayout(), O = C.node2.getModel(), P = O.get("localX"), B = O.get("localY"), H = C.getLayout(), Y, X, ee, ae, J, ne, fe, de; + A.shape.extent = Math.max(1, H.dy), A.shape.orient = y, y === "vertical" ? (Y = (b != null ? b * d : w.x) + H.sy, X = (R != null ? R * f : w.y) + w.dy, ee = (P != null ? P * d : M.x) + H.ty, ae = B != null ? B * f : M.y, J = Y, ne = X * (1 - I) + ae * I, fe = ee, de = X * I + ae * (1 - I)) : (Y = (b != null ? b * d : w.x) + w.dx, X = (R != null ? R * f : w.y) + H.sy, ee = P != null ? P * d : M.x, ae = (B != null ? B * f : M.y) + H.ty, J = Y * (1 - I) + ee * I, ne = X, fe = Y * I + ee * (1 - I), de = ae), A.setShape({ + x1: Y, + y1: X, + x2: ee, + y2: ae, + cpx1: J, + cpy1: ne, + cpx2: fe, + cpy2: de + }), A.useStyle(E.getItemStyle()), $se(A.style, y, C); + var Te = "" + _.get("value"), be = Ll(_, "edgeLabel"); + Ec(A, be, { + labelFetcher: { + getFormattedLabel: function(Be, Ue, Qe, Re, Ne, Me) { + return r.getFormattedLabel( + Be, + Ue, + "edge", + Re, + // ensure edgeLabel formatter is provided + // to prevent the inheritance from `label.formatter` of the series + Ap(Ne, be.normal && be.normal.get("formatter"), Te), + Me + ); + } + }, + labelDataIndex: C.dataIndex, + defaultText: Te + }), A.setTextConfig({ + position: "inside" + }); + var Ve = _.getModel("emphasis"); + bc(A, _, "lineStyle", function(Be) { + var Ue = Be.getItemStyle(); + return $se(Ue, y, C), Ue; + }), l.add(A), v.setItemGraphicEl(C.dataIndex, A); + var pe = Ve.get("focus"); + xs(A, pe === "adjacency" ? C.getAdjacentDataIndices() : pe === "trajectory" ? C.getTrajectoryDataIndices() : pe, Ve.get("blurScope"), Ve.get("disabled")); + }), o.eachNode(function(C) { + var A = C.getLayout(), S = C.getModel(), _ = S.get("localX"), E = S.get("localY"), I = S.getModel("emphasis"), w = new Xi({ + shape: { + x: _ != null ? _ * d : A.x, + y: E != null ? E * f : A.y, + width: A.dx, + height: A.dy + }, + style: S.getModel("itemStyle").getItemStyle(), + z2: 10 + }); + Ec(w, Ll(S), { + labelFetcher: { + getFormattedLabel: function(b, R) { + return r.getFormattedLabel(b, R, "node"); + } + }, + labelDataIndex: C.dataIndex, + defaultText: C.id + }), w.disableLabelAnimation = !0, w.setStyle("fill", C.getVisual("color")), w.setStyle("decal", C.getVisual("style").decal), bc(w, S), l.add(w), g.setItemGraphicEl(C.dataIndex, w), Tn(w).dataType = "node"; + var x = I.get("focus"); + xs(w, x === "adjacency" ? C.getAdjacentDataIndices() : x === "trajectory" ? C.getTrajectoryDataIndices() : x, I.get("blurScope"), I.get("disabled")); + }), g.eachItemGraphicEl(function(C, A) { + var S = g.getItemModel(A); + S.get("draggable") && (C.drift = function(_, E) { + a._focusAdjacencyDisabled = !0, this.shape.x += _, this.shape.y += E, this.dirty(), i.dispatchAction({ + type: "dragNode", + seriesId: r.id, + dataIndex: g.getRawIndex(A), + localX: this.shape.x / d, + localY: this.shape.y / f + }); + }, C.ondragend = function() { + a._focusAdjacencyDisabled = !1; + }, C.draggable = !0, C.cursor = "move"); + }), !this._data && r.isAnimationEnabled() && l.setClipPath(xqe(l.getBoundingRect(), r, function() { + l.removeClipPath(); + })), this._data = r.getData(); + }, t.prototype.dispose = function() { + }, t.type = "sankey", t; + }(Ya) +); +function $se(e, t, r) { + switch (e.fill) { + case "source": + e.fill = r.node1.getVisual("color"), e.decal = r.node1.getVisual("style").decal; + break; + case "target": + e.fill = r.node2.getVisual("color"), e.decal = r.node2.getVisual("style").decal; + break; + case "gradient": + var n = r.node1.getVisual("color"), i = r.node2.getVisual("color"); + wr(n) && wr(i) && (e.fill = new fI(0, 0, +(t === "horizontal"), +(t === "vertical"), [{ + color: n, + offset: 0 + }, { + color: i, + offset: 1 + }])); + } +} +function xqe(e, t, r) { + var n = new Xi({ + shape: { + x: e.x - 10, + y: e.y - 10, + width: 0, + height: e.height + 20 + } + }); + return Po(n, { + shape: { + width: e.width + 20 + } + }, t, r), n; +} +const Aqe = Iqe; +var Rqe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.getInitialData = function(r, n) { + var i = r.edges || r.links, a = r.data || r.nodes, o = r.levels; + this.levelModels = []; + for (var l = this.levelModels, u = 0; u < o.length; u++) + o[u].depth != null && o[u].depth >= 0 && (l[o[u].depth] = new Wa(o[u], this, n)); + if (a && i) { + var d = TSe(a, i, this, !0, f); + return d.data; + } + function f(g, v) { + g.wrapMethod("getItemModel", function(y, C) { + var A = y.parentModel, S = A.getData().getItemLayout(C); + if (S) { + var _ = S.depth, E = A.levelModels[_]; + E && (y.parentModel = E); + } + return y; + }), v.wrapMethod("getItemModel", function(y, C) { + var A = y.parentModel, S = A.getGraph().getEdgeByIndex(C), _ = S.node1.getLayout(); + if (_) { + var E = _.depth, I = A.levelModels[E]; + I && (y.parentModel = I); + } + return y; + }); + } + }, t.prototype.setNodePosition = function(r, n) { + var i = this.option.data || this.option.nodes, a = i[r]; + a.localX = n[0], a.localY = n[1]; + }, t.prototype.getGraph = function() { + return this.getData().graph; + }, t.prototype.getEdgeData = function() { + return this.getGraph().edgeData; + }, t.prototype.formatTooltip = function(r, n, i) { + function a(y) { + return isNaN(y) || y == null; + } + if (i === "edge") { + var o = this.getDataParams(r, i), l = o.data, u = o.value, d = l.source + " -- " + l.target; + return Fl("nameValue", { + name: d, + value: u, + noValue: a(u) + }); + } else { + var f = this.getGraph().getNodeByIndex(r), g = f.getLayout().value, v = this.getDataParams(r, i).data.name; + return Fl("nameValue", { + name: v != null ? v + "" : null, + value: g, + noValue: a(g) + }); + } + }, t.prototype.optionUpdated = function() { + }, t.prototype.getDataParams = function(r, n) { + var i = e.prototype.getDataParams.call(this, r, n); + if (i.value == null && n === "node") { + var a = this.getGraph().getNodeByIndex(r), o = a.getLayout().value; + i.value = o; + } + return i; + }, t.type = "series.sankey", t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "view", + left: "5%", + top: "5%", + right: "20%", + bottom: "5%", + orient: "horizontal", + nodeWidth: 20, + nodeGap: 8, + draggable: !0, + layoutIterations: 32, + label: { + show: !0, + position: "right", + fontSize: 12 + }, + edgeLabel: { + show: !1, + fontSize: 12 + }, + levels: [], + nodeAlign: "justify", + lineStyle: { + color: "#314656", + opacity: 0.2, + curveness: 0.5 + }, + emphasis: { + label: { + show: !0 + }, + lineStyle: { + opacity: 0.5 + } + }, + select: { + itemStyle: { + borderColor: "#212121" + } + }, + animationEasing: "linear", + animationDuration: 1e3 + }, t; + }(fo) +); +const Dqe = Rqe; +function Oqe(e, t) { + e.eachSeriesByType("sankey", function(r) { + var n = r.get("nodeWidth"), i = r.get("nodeGap"), a = Mqe(r, t); + r.layoutInfo = a; + var o = a.width, l = a.height, u = r.getGraph(), d = u.nodes, f = u.edges; + Pqe(d); + var g = Ma(d, function(A) { + return A.getLayout().value === 0; + }), v = g.length !== 0 ? 0 : r.get("layoutIterations"), y = r.get("orient"), C = r.get("nodeAlign"); + kqe(d, f, n, i, o, l, v, y, C); + }); +} +function Mqe(e, t) { + return js(e.getBoxLayoutParams(), { + width: t.getWidth(), + height: t.getHeight() + }); +} +function kqe(e, t, r, n, i, a, o, l, u) { + Nqe(e, t, r, i, a, l, u), Uqe(e, t, a, i, n, o, l), Xqe(e, l); +} +function Pqe(e) { + Ee(e, function(t) { + var r = h0(t.outEdges, qL), n = h0(t.inEdges, qL), i = t.getValue() || 0, a = Math.max(r, n, i); + t.setLayout({ + value: a + }, !0); + }); +} +function Nqe(e, t, r, n, i, a, o) { + for (var l = [], u = [], d = [], f = [], g = 0, v = 0; v < t.length; v++) + l[v] = 1; + for (var v = 0; v < e.length; v++) + u[v] = e[v].inEdges.length, u[v] === 0 && d.push(e[v]); + for (var y = -1; d.length; ) { + for (var C = 0; C < d.length; C++) { + var A = d[C], S = A.hostGraph.data.getRawDataItem(A.dataIndex), _ = S.depth != null && S.depth >= 0; + _ && S.depth > y && (y = S.depth), A.setLayout({ + depth: _ ? S.depth : g + }, !0), a === "vertical" ? A.setLayout({ + dy: r + }, !0) : A.setLayout({ + dx: r + }, !0); + for (var E = 0; E < A.outEdges.length; E++) { + var I = A.outEdges[E], w = t.indexOf(I); + l[w] = 0; + var x = I.node2, b = e.indexOf(x); + --u[b] === 0 && f.indexOf(x) < 0 && f.push(x); + } + } + ++g, d = f, f = []; + } + for (var v = 0; v < l.length; v++) + if (l[v] === 1) + throw new Error("Sankey is a DAG, the original data has cycle!"); + var R = y > g - 1 ? y : g - 1; + o && o !== "left" && Lqe(e, o, a, R); + var M = a === "vertical" ? (i - r) / R : (n - r) / R; + Bqe(e, M, a); +} +function HSe(e) { + var t = e.hostGraph.data.getRawDataItem(e.dataIndex); + return t.depth != null && t.depth >= 0; +} +function Lqe(e, t, r, n) { + if (t === "right") { + for (var i = [], a = e, o = 0; a.length; ) { + for (var l = 0; l < a.length; l++) { + var u = a[l]; + u.setLayout({ + skNodeHeight: o + }, !0); + for (var d = 0; d < u.inEdges.length; d++) { + var f = u.inEdges[d]; + i.indexOf(f.node1) < 0 && i.push(f.node1); + } + } + a = i, i = [], ++o; + } + Ee(e, function(g) { + HSe(g) || g.setLayout({ + depth: Math.max(0, n - g.getLayout().skNodeHeight) + }, !0); + }); + } else + t === "justify" && Fqe(e, n); +} +function Fqe(e, t) { + Ee(e, function(r) { + !HSe(r) && !r.outEdges.length && r.setLayout({ + depth: t + }, !0); + }); +} +function Bqe(e, t, r) { + Ee(e, function(n) { + var i = n.getLayout().depth * t; + r === "vertical" ? n.setLayout({ + y: i + }, !0) : n.setLayout({ + x: i + }, !0); + }); +} +function Uqe(e, t, r, n, i, a, o) { + var l = jqe(e, o); + $qe(l, t, r, n, i, o), h3(l, i, r, n, o); + for (var u = 1; a > 0; a--) + u *= 0.99, Vqe(l, u, o), h3(l, i, r, n, o), Yqe(l, u, o), h3(l, i, r, n, o); +} +function jqe(e, t) { + var r = [], n = t === "vertical" ? "y" : "x", i = GH(e, function(a) { + return a.getLayout()[n]; + }); + return i.keys.sort(function(a, o) { + return a - o; + }), Ee(i.keys, function(a) { + r.push(i.buckets.get(a)); + }), r; +} +function $qe(e, t, r, n, i, a) { + var o = 1 / 0; + Ee(e, function(l) { + var u = l.length, d = 0; + Ee(l, function(g) { + d += g.getLayout().value; + }); + var f = a === "vertical" ? (n - (u - 1) * i) / d : (r - (u - 1) * i) / d; + f < o && (o = f); + }), Ee(e, function(l) { + Ee(l, function(u, d) { + var f = u.getLayout().value * o; + a === "vertical" ? (u.setLayout({ + x: d + }, !0), u.setLayout({ + dx: f + }, !0)) : (u.setLayout({ + y: d + }, !0), u.setLayout({ + dy: f + }, !0)); + }); + }), Ee(t, function(l) { + var u = +l.getValue() * o; + l.setLayout({ + dy: u + }, !0); + }); +} +function h3(e, t, r, n, i) { + var a = i === "vertical" ? "x" : "y"; + Ee(e, function(o) { + o.sort(function(A, S) { + return A.getLayout()[a] - S.getLayout()[a]; + }); + for (var l, u, d, f = 0, g = o.length, v = i === "vertical" ? "dx" : "dy", y = 0; y < g; y++) + u = o[y], d = f - u.getLayout()[a], d > 0 && (l = u.getLayout()[a] + d, i === "vertical" ? u.setLayout({ + x: l + }, !0) : u.setLayout({ + y: l + }, !0)), f = u.getLayout()[a] + u.getLayout()[v] + t; + var C = i === "vertical" ? n : r; + if (d = f - t - C, d > 0) { + l = u.getLayout()[a] - d, i === "vertical" ? u.setLayout({ + x: l + }, !0) : u.setLayout({ + y: l + }, !0), f = l; + for (var y = g - 2; y >= 0; --y) + u = o[y], d = u.getLayout()[a] + u.getLayout()[v] + t - f, d > 0 && (l = u.getLayout()[a] - d, i === "vertical" ? u.setLayout({ + x: l + }, !0) : u.setLayout({ + y: l + }, !0)), f = u.getLayout()[a]; + } + }); +} +function Vqe(e, t, r) { + Ee(e.slice().reverse(), function(n) { + Ee(n, function(i) { + if (i.outEdges.length) { + var a = h0(i.outEdges, zqe, r) / h0(i.outEdges, qL); + if (isNaN(a)) { + var o = i.outEdges.length; + a = o ? h0(i.outEdges, Hqe, r) / o : 0; + } + if (r === "vertical") { + var l = i.getLayout().x + (a - _0(i, r)) * t; + i.setLayout({ + x: l + }, !0); + } else { + var u = i.getLayout().y + (a - _0(i, r)) * t; + i.setLayout({ + y: u + }, !0); + } + } + }); + }); +} +function zqe(e, t) { + return _0(e.node2, t) * e.getValue(); +} +function Hqe(e, t) { + return _0(e.node2, t); +} +function Wqe(e, t) { + return _0(e.node1, t) * e.getValue(); +} +function Gqe(e, t) { + return _0(e.node1, t); +} +function _0(e, t) { + return t === "vertical" ? e.getLayout().x + e.getLayout().dx / 2 : e.getLayout().y + e.getLayout().dy / 2; +} +function qL(e) { + return e.getValue(); +} +function h0(e, t, r) { + for (var n = 0, i = e.length, a = -1; ++a < i; ) { + var o = +t(e[a], r); + isNaN(o) || (n += o); + } + return n; +} +function Yqe(e, t, r) { + Ee(e, function(n) { + Ee(n, function(i) { + if (i.inEdges.length) { + var a = h0(i.inEdges, Wqe, r) / h0(i.inEdges, qL); + if (isNaN(a)) { + var o = i.inEdges.length; + a = o ? h0(i.inEdges, Gqe, r) / o : 0; + } + if (r === "vertical") { + var l = i.getLayout().x + (a - _0(i, r)) * t; + i.setLayout({ + x: l + }, !0); + } else { + var u = i.getLayout().y + (a - _0(i, r)) * t; + i.setLayout({ + y: u + }, !0); + } + } + }); + }); +} +function Xqe(e, t) { + var r = t === "vertical" ? "x" : "y"; + Ee(e, function(n) { + n.outEdges.sort(function(i, a) { + return i.node2.getLayout()[r] - a.node2.getLayout()[r]; + }), n.inEdges.sort(function(i, a) { + return i.node1.getLayout()[r] - a.node1.getLayout()[r]; + }); + }), Ee(e, function(n) { + var i = 0, a = 0; + Ee(n.outEdges, function(o) { + o.setLayout({ + sy: i + }, !0), i += o.getLayout().dy; + }), Ee(n.inEdges, function(o) { + o.setLayout({ + ty: a + }, !0), a += o.getLayout().dy; + }); + }); +} +function Kqe(e) { + e.eachSeriesByType("sankey", function(t) { + var r = t.getGraph(), n = r.nodes, i = r.edges; + if (n.length) { + var a = 1 / 0, o = -1 / 0; + Ee(n, function(l) { + var u = l.getLayout().value; + u < a && (a = u), u > o && (o = u); + }), Ee(n, function(l) { + var u = new yc({ + type: "color", + mappingMethod: "linear", + dataExtent: [a, o], + visual: t.get("color") + }), d = u.mapValueToVisual(l.getLayout().value), f = l.getModel().get(["itemStyle", "color"]); + f != null ? (l.setVisual("color", f), l.setVisual("style", { + fill: f + })) : (l.setVisual("color", d), l.setVisual("style", { + fill: d + })); + }); + } + i.length && Ee(i, function(l) { + var u = l.getModel().get("lineStyle"); + l.setVisual("style", u); + }); + }); +} +function Zqe(e) { + e.registerChartView(Aqe), e.registerSeriesModel(Dqe), e.registerLayout(Oqe), e.registerVisual(Kqe), e.registerAction({ + type: "dragNode", + event: "dragnode", + // here can only use 'update' now, other value is not support in echarts. + update: "update" + }, function(t, r) { + r.eachComponent({ + mainType: "series", + subType: "sankey", + query: t + }, function(n) { + n.setNodePosition(t.dataIndex, [t.localX, t.localY]); + }); + }); +} +var WSe = ( + /** @class */ + function() { + function e() { + } + return e.prototype.getInitialData = function(t, r) { + var n, i = r.getComponent("xAxis", this.get("xAxisIndex")), a = r.getComponent("yAxis", this.get("yAxisIndex")), o = i.get("type"), l = a.get("type"), u; + o === "category" ? (t.layout = "horizontal", n = i.getOrdinalMeta(), u = !0) : l === "category" ? (t.layout = "vertical", n = a.getOrdinalMeta(), u = !0) : t.layout = t.layout || "horizontal"; + var d = ["x", "y"], f = t.layout === "horizontal" ? 0 : 1, g = this._baseAxisDim = d[f], v = d[1 - f], y = [i, a], C = y[f].get("type"), A = y[1 - f].get("type"), S = t.data; + if (S && u) { + var _ = []; + Ee(S, function(w, x) { + var b; + qt(w) ? (b = w.slice(), w.unshift(x)) : qt(w.value) ? (b = $t({}, w), b.value = b.value.slice(), w.value.unshift(x)) : b = w, _.push(b); + }), t.data = _; + } + var E = this.defaultValueDimensions, I = [{ + name: g, + type: UL(C), + ordinalMeta: n, + otherDims: { + tooltip: !1, + itemName: 0 + }, + dimsDef: ["base"] + }, { + name: v, + type: UL(A), + dimsDef: E.slice() + }]; + return AI(this, { + coordDimensions: I, + dimensionsCount: E.length + 1, + encodeDefaulter: Ln(eye, I, this) + }); + }, e.prototype.getBaseAxis = function() { + var t = this._baseAxisDim; + return this.ecModel.getComponent(t + "Axis", this.get(t + "AxisIndex")).axis; + }, e; + }() +), GSe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.defaultValueDimensions = [{ + name: "min", + defaultTooltip: !0 + }, { + name: "Q1", + defaultTooltip: !0 + }, { + name: "median", + defaultTooltip: !0 + }, { + name: "Q3", + defaultTooltip: !0 + }, { + name: "max", + defaultTooltip: !0 + }], r.visualDrawType = "stroke", r; + } + return t.type = "series.boxplot", t.dependencies = ["xAxis", "yAxis", "grid"], t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "cartesian2d", + legendHoverLink: !0, + layout: null, + boxWidth: [7, 50], + itemStyle: { + color: "#fff", + borderWidth: 1 + }, + emphasis: { + scale: !0, + itemStyle: { + borderWidth: 2, + shadowBlur: 5, + shadowOffsetX: 1, + shadowOffsetY: 1, + shadowColor: "rgba(0,0,0,0.2)" + } + }, + animationDuration: 800 + }, t; + }(fo) +); +Fs(GSe, WSe, !0); +const qqe = GSe; +var Jqe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = r.getData(), o = this.group, l = this._data; + this._data || o.removeAll(); + var u = r.get("layout") === "horizontal" ? 1 : 0; + a.diff(l).add(function(d) { + if (a.hasValue(d)) { + var f = a.getItemLayout(d), g = Vse(f, a, d, u, !0); + a.setItemGraphicEl(d, g), o.add(g); + } + }).update(function(d, f) { + var g = l.getItemGraphicEl(f); + if (!a.hasValue(d)) { + o.remove(g); + return; + } + var v = a.getItemLayout(d); + g ? (Lp(g), YSe(v, g, a, d)) : g = Vse(v, a, d, u), o.add(g), a.setItemGraphicEl(d, g); + }).remove(function(d) { + var f = l.getItemGraphicEl(d); + f && o.remove(f); + }).execute(), this._data = a; + }, t.prototype.remove = function(r) { + var n = this.group, i = this._data; + this._data = null, i && i.eachItemGraphicEl(function(a) { + a && n.remove(a); + }); + }, t.type = "boxplot", t; + }(Ya) +), Qqe = ( + /** @class */ + function() { + function e() { + } + return e; + }() +), eJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "boxplotBoxPath", n; + } + return t.prototype.getDefaultShape = function() { + return new Qqe(); + }, t.prototype.buildPath = function(r, n) { + var i = n.points, a = 0; + for (r.moveTo(i[a][0], i[a][1]), a++; a < 4; a++) + r.lineTo(i[a][0], i[a][1]); + for (r.closePath(); a < i.length; a++) + r.moveTo(i[a][0], i[a][1]), a++, r.lineTo(i[a][0], i[a][1]); + }, t; + }(Ei) +); +function Vse(e, t, r, n, i) { + var a = e.ends, o = new eJe({ + shape: { + points: i ? tJe(a, n, e) : a + } + }); + return YSe(e, o, t, r, i), o; +} +function YSe(e, t, r, n, i) { + var a = r.hostModel, o = DE[i ? "initProps" : "updateProps"]; + o(t, { + shape: { + points: e.ends + } + }, a, n), t.useStyle(r.getItemVisual(n, "style")), t.style.strokeNoScale = !0, t.z2 = 100; + var l = r.getItemModel(n), u = l.getModel("emphasis"); + bc(t, l), xs(t, u.get("focus"), u.get("blurScope"), u.get("disabled")); +} +function tJe(e, t, r) { + return er(e, function(n) { + return n = n.slice(), n[t] = r.initBaseline, n; + }); +} +const rJe = Jqe; +var U1 = Ee; +function nJe(e) { + var t = iJe(e); + U1(t, function(r) { + var n = r.seriesModels; + n.length && (aJe(r), U1(n, function(i, a) { + oJe(i, r.boxOffsetList[a], r.boxWidthList[a]); + })); + }); +} +function iJe(e) { + var t = [], r = []; + return e.eachSeriesByType("boxplot", function(n) { + var i = n.getBaseAxis(), a = di(r, i); + a < 0 && (a = r.length, r[a] = i, t[a] = { + axis: i, + seriesModels: [] + }), t[a].seriesModels.push(n); + }), t; +} +function aJe(e) { + var t = e.axis, r = e.seriesModels, n = r.length, i = e.boxWidthList = [], a = e.boxOffsetList = [], o = [], l; + if (t.type === "category") + l = t.getBandWidth(); + else { + var u = 0; + U1(r, function(C) { + u = Math.max(u, C.getData().count()); + }); + var d = t.getExtent(); + l = Math.abs(d[1] - d[0]) / u; + } + U1(r, function(C) { + var A = C.get("boxWidth"); + qt(A) || (A = [A, A]), o.push([yr(A[0], l) || 0, yr(A[1], l) || 0]); + }); + var f = l * 0.8 - 2, g = f / n * 0.3, v = (f - g * (n - 1)) / n, y = v / 2 - f / 2; + U1(r, function(C, A) { + a.push(y), y += g + v, i.push(Math.min(Math.max(v, o[A][0]), o[A][1])); + }); +} +function oJe(e, t, r) { + var n = e.coordinateSystem, i = e.getData(), a = r / 2, o = e.get("layout") === "horizontal" ? 0 : 1, l = 1 - o, u = ["x", "y"], d = i.mapDimension(u[o]), f = i.mapDimensionsAll(u[l]); + if (d == null || f.length < 5) + return; + for (var g = 0; g < i.count(); g++) { + var v = i.get(d, g), y = I(v, f[2], g), C = I(v, f[0], g), A = I(v, f[1], g), S = I(v, f[3], g), _ = I(v, f[4], g), E = []; + w(E, A, !1), w(E, S, !0), E.push(C, A, _, S), x(E, C), x(E, _), x(E, y), i.setItemLayout(g, { + initBaseline: y[l], + ends: E + }); + } + function I(b, R, M) { + var O = i.get(R, M), P = []; + P[o] = b, P[l] = O; + var B; + return isNaN(b) || isNaN(O) ? B = [NaN, NaN] : (B = n.dataToPoint(P), B[o] += t), B; + } + function w(b, R, M) { + var O = R.slice(), P = R.slice(); + O[o] += a, P[o] -= a, M ? b.push(O, P) : b.push(P, O); + } + function x(b, R) { + var M = R.slice(), O = R.slice(); + M[o] -= a, O[o] += a, b.push(M, O); + } +} +function sJe(e, t) { + t = t || {}; + for (var r = [], n = [], i = t.boundIQR, a = i === "none" || i === 0, o = 0; o < e.length; o++) { + var l = ld(e[o].slice()), u = TN(l, 0.25), d = TN(l, 0.5), f = TN(l, 0.75), g = l[0], v = l[l.length - 1], y = (i == null ? 1.5 : i) * (f - u), C = a ? g : Math.max(g, u - y), A = a ? v : Math.min(v, f + y), S = t.itemNameFormatter, _ = Kr(S) ? S({ + value: o + }) : wr(S) ? S.replace("{value}", o + "") : o + ""; + r.push([_, C, u, d, f, A]); + for (var E = 0; E < l.length; E++) { + var I = l[E]; + if (I < C || I > A) { + var w = [_, I]; + n.push(w); + } + } + } + return { + boxData: r, + outliers: n + }; +} +var lJe = { + type: "echarts:boxplot", + transform: function(t) { + var r = t.upstream; + if (r.sourceFormat !== eu) { + var n = ""; + Ca(n); + } + var i = sJe(r.getRawData(), t.config); + return [{ + dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"], + data: i.boxData + }, { + data: i.outliers + }]; + } +}; +function cJe(e) { + e.registerSeriesModel(qqe), e.registerChartView(rJe), e.registerLayout(nJe), e.registerTransform(lJe); +} +var uJe = ["color", "borderColor"], hJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + this.group.removeClipPath(), this._progressiveEls = null, this._updateDrawMode(r), this._isLargeDraw ? this._renderLarge(r) : this._renderNormal(r); + }, t.prototype.incrementalPrepareRender = function(r, n, i) { + this._clear(), this._updateDrawMode(r); + }, t.prototype.incrementalRender = function(r, n, i, a) { + this._progressiveEls = [], this._isLargeDraw ? this._incrementalRenderLarge(r, n) : this._incrementalRenderNormal(r, n); + }, t.prototype.eachRendered = function(r) { + D0(this._progressiveEls || this.group, r); + }, t.prototype._updateDrawMode = function(r) { + var n = r.pipelineContext.large; + (this._isLargeDraw == null || n !== this._isLargeDraw) && (this._isLargeDraw = n, this._clear()); + }, t.prototype._renderNormal = function(r) { + var n = r.getData(), i = this._data, a = this.group, o = n.getLayout("isSimpleBox"), l = r.get("clip", !0), u = r.coordinateSystem, d = u.getArea && u.getArea(); + this._data || a.removeAll(), n.diff(i).add(function(f) { + if (n.hasValue(f)) { + var g = n.getItemLayout(f); + if (l && zse(d, g)) + return; + var v = d3(g, f, !0); + Po(v, { + shape: { + points: g.ends + } + }, r, f), f3(v, n, f, o), a.add(v), n.setItemGraphicEl(f, v); + } + }).update(function(f, g) { + var v = i.getItemGraphicEl(g); + if (!n.hasValue(f)) { + a.remove(v); + return; + } + var y = n.getItemLayout(f); + if (l && zse(d, y)) { + a.remove(v); + return; + } + v ? (ia(v, { + shape: { + points: y.ends + } + }, r, f), Lp(v)) : v = d3(y), f3(v, n, f, o), a.add(v), n.setItemGraphicEl(f, v); + }).remove(function(f) { + var g = i.getItemGraphicEl(f); + g && a.remove(g); + }).execute(), this._data = n; + }, t.prototype._renderLarge = function(r) { + this._clear(), Hse(r, this.group); + var n = r.get("clip", !0) ? DD(r.coordinateSystem, !1, r) : null; + n ? this.group.setClipPath(n) : this.group.removeClipPath(); + }, t.prototype._incrementalRenderNormal = function(r, n) { + for (var i = n.getData(), a = i.getLayout("isSimpleBox"), o; (o = r.next()) != null; ) { + var l = i.getItemLayout(o), u = d3(l); + f3(u, i, o, a), u.incremental = !0, this.group.add(u), this._progressiveEls.push(u); + } + }, t.prototype._incrementalRenderLarge = function(r, n) { + Hse(n, this.group, this._progressiveEls, !0); + }, t.prototype.remove = function(r) { + this._clear(); + }, t.prototype._clear = function() { + this.group.removeAll(), this._data = null; + }, t.type = "candlestick", t; + }(Ya) +), dJe = ( + /** @class */ + function() { + function e() { + } + return e; + }() +), fJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "normalCandlestickBox", n; + } + return t.prototype.getDefaultShape = function() { + return new dJe(); + }, t.prototype.buildPath = function(r, n) { + var i = n.points; + this.__simpleBox ? (r.moveTo(i[4][0], i[4][1]), r.lineTo(i[6][0], i[6][1])) : (r.moveTo(i[0][0], i[0][1]), r.lineTo(i[1][0], i[1][1]), r.lineTo(i[2][0], i[2][1]), r.lineTo(i[3][0], i[3][1]), r.closePath(), r.moveTo(i[4][0], i[4][1]), r.lineTo(i[5][0], i[5][1]), r.moveTo(i[6][0], i[6][1]), r.lineTo(i[7][0], i[7][1])); + }, t; + }(Ei) +); +function d3(e, t, r) { + var n = e.ends; + return new fJe({ + shape: { + points: r ? pJe(n, e) : n + }, + z2: 100 + }); +} +function zse(e, t) { + for (var r = !0, n = 0; n < t.ends.length; n++) + if (e.contain(t.ends[n][0], t.ends[n][1])) { + r = !1; + break; + } + return r; +} +function f3(e, t, r, n) { + var i = t.getItemModel(r); + e.useStyle(t.getItemVisual(r, "style")), e.style.strokeNoScale = !0, e.__simpleBox = n, bc(e, i); +} +function pJe(e, t) { + return er(e, function(r) { + return r = r.slice(), r[1] = t.initBaseline, r; + }); +} +var gJe = ( + /** @class */ + function() { + function e() { + } + return e; + }() +), p3 = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n.type = "largeCandlestickBox", n; + } + return t.prototype.getDefaultShape = function() { + return new gJe(); + }, t.prototype.buildPath = function(r, n) { + for (var i = n.points, a = 0; a < i.length; ) + if (this.__sign === i[a++]) { + var o = i[a++]; + r.moveTo(o, i[a++]), r.lineTo(o, i[a++]); + } else + a += 3; + }, t; + }(Ei) +); +function Hse(e, t, r, n) { + var i = e.getData(), a = i.getLayout("largePoints"), o = new p3({ + shape: { + points: a + }, + __sign: 1, + ignoreCoarsePointer: !0 + }); + t.add(o); + var l = new p3({ + shape: { + points: a + }, + __sign: -1, + ignoreCoarsePointer: !0 + }); + t.add(l); + var u = new p3({ + shape: { + points: a + }, + __sign: 0, + ignoreCoarsePointer: !0 + }); + t.add(u), g3(1, o, e), g3(-1, l, e), g3(0, u, e), n && (o.incremental = !0, l.incremental = !0), r && r.push(o, l); +} +function g3(e, t, r, n) { + var i = r.get(["itemStyle", e > 0 ? "borderColor" : "borderColor0"]) || r.get(["itemStyle", e > 0 ? "color" : "color0"]); + e === 0 && (i = r.get(["itemStyle", "borderColorDoji"])); + var a = r.getModel("itemStyle").getItemStyle(uJe); + t.useStyle(a), t.style.fill = null, t.style.stroke = i; +} +const vJe = hJe; +var XSe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.defaultValueDimensions = [{ + name: "open", + defaultTooltip: !0 + }, { + name: "close", + defaultTooltip: !0 + }, { + name: "lowest", + defaultTooltip: !0 + }, { + name: "highest", + defaultTooltip: !0 + }], r; + } + return t.prototype.getShadowDim = function() { + return "open"; + }, t.prototype.brushSelector = function(r, n, i) { + var a = n.getItemLayout(r); + return a && i.rect(a.brushRect); + }, t.type = "series.candlestick", t.dependencies = ["xAxis", "yAxis", "grid"], t.defaultOption = { + // zlevel: 0, + z: 2, + coordinateSystem: "cartesian2d", + legendHoverLink: !0, + // xAxisIndex: 0, + // yAxisIndex: 0, + layout: null, + clip: !0, + itemStyle: { + color: "#eb5454", + color0: "#47b262", + borderColor: "#eb5454", + borderColor0: "#47b262", + borderColorDoji: null, + // borderColor: '#d24040', + // borderColor0: '#398f4f', + borderWidth: 1 + }, + emphasis: { + scale: !0, + itemStyle: { + borderWidth: 2 + } + }, + barMaxWidth: null, + barMinWidth: null, + barWidth: null, + large: !0, + largeThreshold: 600, + progressive: 3e3, + progressiveThreshold: 1e4, + progressiveChunkMode: "mod", + animationEasing: "linear", + animationDuration: 300 + }, t; + }(fo) +); +Fs(XSe, WSe, !0); +const mJe = XSe; +function yJe(e) { + !e || !qt(e.series) || Ee(e.series, function(t) { + sn(t) && t.type === "k" && (t.type = "candlestick"); + }); +} +var _Je = ["itemStyle", "borderColor"], SJe = ["itemStyle", "borderColor0"], bJe = ["itemStyle", "borderColorDoji"], EJe = ["itemStyle", "color"], CJe = ["itemStyle", "color0"], TJe = { + seriesType: "candlestick", + plan: CI(), + // For legend. + performRawSeries: !0, + reset: function(e, t) { + function r(a, o) { + return o.get(a > 0 ? EJe : CJe); + } + function n(a, o) { + return o.get(a === 0 ? bJe : a > 0 ? _Je : SJe); + } + if (!t.isSeriesFiltered(e)) { + var i = e.pipelineContext.large; + return !i && { + progress: function(a, o) { + for (var l; (l = a.next()) != null; ) { + var u = o.getItemModel(l), d = o.getItemLayout(l).sign, f = u.getItemStyle(); + f.fill = r(d, u), f.stroke = n(d, u) || f.fill; + var g = o.ensureUniqueItemVisual(l, "style"); + $t(g, f); + } + } + }; + } + } +}; +const wJe = TJe; +var IJe = { + seriesType: "candlestick", + plan: CI(), + reset: function(e) { + var t = e.coordinateSystem, r = e.getData(), n = xJe(e, r), i = 0, a = 1, o = ["x", "y"], l = r.getDimensionIndex(r.mapDimension(o[i])), u = er(r.mapDimensionsAll(o[a]), r.getDimensionIndex, r), d = u[0], f = u[1], g = u[2], v = u[3]; + if (r.setLayout({ + candleWidth: n, + // The value is experimented visually. + isSimpleBox: n <= 1.3 + }), l < 0 || u.length < 4) + return; + return { + progress: e.pipelineContext.large ? C : y + }; + function y(A, S) { + for (var _, E = S.getStore(); (_ = A.next()) != null; ) { + var I = E.get(l, _), w = E.get(d, _), x = E.get(f, _), b = E.get(g, _), R = E.get(v, _), M = Math.min(w, x), O = Math.max(w, x), P = J(M, I), B = J(O, I), H = J(b, I), Y = J(R, I), X = []; + ne(X, B, 0), ne(X, P, 1), X.push(de(Y), de(B), de(H), de(P)); + var ee = S.getItemModel(_), ae = !!ee.get(["itemStyle", "borderColorDoji"]); + S.setItemLayout(_, { + sign: Wse(E, _, w, x, f, ae), + initBaseline: w > x ? B[a] : P[a], + ends: X, + brushRect: fe(b, R, I) + }); + } + function J(Te, be) { + var Ve = []; + return Ve[i] = be, Ve[a] = Te, isNaN(be) || isNaN(Te) ? [NaN, NaN] : t.dataToPoint(Ve); + } + function ne(Te, be, Ve) { + var pe = be.slice(), Be = be.slice(); + pe[i] = xN(pe[i] + n / 2, 1, !1), Be[i] = xN(Be[i] - n / 2, 1, !0), Ve ? Te.push(pe, Be) : Te.push(Be, pe); + } + function fe(Te, be, Ve) { + var pe = J(Te, Ve), Be = J(be, Ve); + return pe[i] -= n / 2, Be[i] -= n / 2, { + x: pe[0], + y: pe[1], + width: n, + height: Be[1] - pe[1] + }; + } + function de(Te) { + return Te[i] = xN(Te[i], 1), Te; + } + } + function C(A, S) { + for (var _ = Yg(A.count * 4), E = 0, I, w = [], x = [], b, R = S.getStore(), M = !!e.get(["itemStyle", "borderColorDoji"]); (b = A.next()) != null; ) { + var O = R.get(l, b), P = R.get(d, b), B = R.get(f, b), H = R.get(g, b), Y = R.get(v, b); + if (isNaN(O) || isNaN(H) || isNaN(Y)) { + _[E++] = NaN, E += 3; + continue; + } + _[E++] = Wse(R, b, P, B, f, M), w[i] = O, w[a] = H, I = t.dataToPoint(w, null, x), _[E++] = I ? I[0] : NaN, _[E++] = I ? I[1] : NaN, w[a] = Y, I = t.dataToPoint(w, null, x), _[E++] = I ? I[1] : NaN; + } + S.setLayout("largePoints", _); + } + } +}; +function Wse(e, t, r, n, i, a) { + var o; + return r > n ? o = -1 : r < n ? o = 1 : o = a ? 0 : t > 0 ? e.get(i, t - 1) <= n ? 1 : -1 : 1, o; +} +function xJe(e, t) { + var r = e.getBaseAxis(), n, i = r.type === "category" ? r.getBandWidth() : (n = r.getExtent(), Math.abs(n[1] - n[0]) / t.count()), a = yr(Fn(e.get("barMaxWidth"), i), i), o = yr(Fn(e.get("barMinWidth"), 1), i), l = e.get("barWidth"); + return l != null ? yr(l, i) : Math.max(Math.min(i / 2, a), o); +} +const AJe = IJe; +function RJe(e) { + e.registerChartView(vJe), e.registerSeriesModel(mJe), e.registerPreprocessor(yJe), e.registerVisual(wJe), e.registerLayout(AJe); +} +function Gse(e, t) { + var r = t.rippleEffectColor || t.color; + e.eachChild(function(n) { + n.attr({ + z: t.z, + zlevel: t.zlevel, + style: { + stroke: t.brushType === "stroke" ? r : null, + fill: t.brushType === "fill" ? r : null + } + }); + }); +} +var DJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n) { + var i = e.call(this) || this, a = new AD(r, n), o = new _n(); + return i.add(a), i.add(o), i.updateData(r, n), i; + } + return t.prototype.stopEffectAnimation = function() { + this.childAt(1).removeAll(); + }, t.prototype.startEffectAnimation = function(r) { + for (var n = r.symbolType, i = r.color, a = r.rippleNumber, o = this.childAt(1), l = 0; l < a; l++) { + var u = $s(n, -1, -1, 2, 2, i); + u.attr({ + style: { + strokeNoScale: !0 + }, + z2: 99, + silent: !0, + scaleX: 0.5, + scaleY: 0.5 + }); + var d = -l / a * r.period + r.effectOffset; + u.animate("", !0).when(r.period, { + scaleX: r.rippleScale / 2, + scaleY: r.rippleScale / 2 + }).delay(d).start(), u.animateStyle(!0).when(r.period, { + opacity: 0 + }).delay(d).start(), o.add(u); + } + Gse(o, r); + }, t.prototype.updateEffectAnimation = function(r) { + for (var n = this._effectCfg, i = this.childAt(1), a = ["symbolType", "period", "rippleScale", "rippleNumber"], o = 0; o < a.length; o++) { + var l = a[o]; + if (n[l] !== r[l]) { + this.stopEffectAnimation(), this.startEffectAnimation(r); + return; + } + } + Gse(i, r); + }, t.prototype.highlight = function() { + Hm(this); + }, t.prototype.downplay = function() { + Wm(this); + }, t.prototype.getSymbolType = function() { + var r = this.childAt(0); + return r && r.getSymbolType(); + }, t.prototype.updateData = function(r, n) { + var i = this, a = r.hostModel; + this.childAt(0).updateData(r, n); + var o = this.childAt(1), l = r.getItemModel(n), u = r.getItemVisual(n, "symbol"), d = wI(r.getItemVisual(n, "symbolSize")), f = r.getItemVisual(n, "style"), g = f && f.fill, v = l.getModel("emphasis"); + o.setScale(d), o.traverse(function(S) { + S.setStyle("fill", g); + }); + var y = kE(r.getItemVisual(n, "symbolOffset"), d); + y && (o.x = y[0], o.y = y[1]); + var C = r.getItemVisual(n, "symbolRotate"); + o.rotation = (C || 0) * Math.PI / 180 || 0; + var A = {}; + A.showEffectOn = a.get("showEffectOn"), A.rippleScale = l.get(["rippleEffect", "scale"]), A.brushType = l.get(["rippleEffect", "brushType"]), A.period = l.get(["rippleEffect", "period"]) * 1e3, A.effectOffset = n / r.count(), A.z = a.getShallow("z") || 0, A.zlevel = a.getShallow("zlevel") || 0, A.symbolType = u, A.color = g, A.rippleEffectColor = l.get(["rippleEffect", "color"]), A.rippleNumber = l.get(["rippleEffect", "number"]), A.showEffectOn === "render" ? (this._effectCfg ? this.updateEffectAnimation(A) : this.startEffectAnimation(A), this._effectCfg = A) : (this._effectCfg = null, this.stopEffectAnimation(), this.onHoverStateChange = function(S) { + S === "emphasis" ? A.showEffectOn !== "render" && i.startEffectAnimation(A) : S === "normal" && A.showEffectOn !== "render" && i.stopEffectAnimation(); + }), this._effectCfg = A, xs(this, v.get("focus"), v.get("blurScope"), v.get("disabled")); + }, t.prototype.fadeOut = function(r) { + r && r(); + }, t; + }(_n) +); +const OJe = DJe; +var MJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function() { + this._symbolDraw = new RD(OJe); + }, t.prototype.render = function(r, n, i) { + var a = r.getData(), o = this._symbolDraw; + o.updateData(a, { + clipShape: this._getClipShape(r) + }), this.group.add(o.group); + }, t.prototype._getClipShape = function(r) { + var n = r.coordinateSystem, i = n && n.getArea && n.getArea(); + return r.get("clip", !0) ? i : null; + }, t.prototype.updateTransform = function(r, n, i) { + var a = r.getData(); + this.group.dirty(); + var o = OD("").reset(r, n, i); + o.progress && o.progress({ + start: 0, + end: a.count(), + count: a.count() + }, a), this._symbolDraw.updateLayout(); + }, t.prototype._updateGroupTransform = function(r) { + var n = r.coordinateSystem; + n && n.getRoamTransform && (this.group.transform = Wge(n.getRoamTransform()), this.group.decomposeTransform()); + }, t.prototype.remove = function(r, n) { + this._symbolDraw && this._symbolDraw.remove(!0); + }, t.type = "effectScatter", t; + }(Ya) +); +const kJe = MJe; +var PJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.hasSymbolVisual = !0, r; + } + return t.prototype.getInitialData = function(r, n) { + return fv(null, this, { + useEncodeDefaulter: !0 + }); + }, t.prototype.brushSelector = function(r, n, i) { + return i.point(n.getItemLayout(r)); + }, t.type = "series.effectScatter", t.dependencies = ["grid", "polar"], t.defaultOption = { + coordinateSystem: "cartesian2d", + // zlevel: 0, + z: 2, + legendHoverLink: !0, + effectType: "ripple", + progressive: 0, + // When to show the effect, option: 'render'|'emphasis' + showEffectOn: "render", + clip: !0, + // Ripple effect config + rippleEffect: { + period: 4, + // Scale of ripple + scale: 2.5, + // Brush type can be fill or stroke + brushType: "fill", + // Ripple number + number: 3 + }, + universalTransition: { + divideShape: "clone" + }, + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + // Polar coordinate system + // polarIndex: 0, + // Geo coordinate system + // geoIndex: 0, + // symbol: null, // 图形类型 + symbolSize: 10 + // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 + // symbolRotate: null, // 图形旋转控制 + // itemStyle: { + // opacity: 1 + // } + }, t; + }(fo) +); +const NJe = PJe; +function LJe(e) { + e.registerChartView(kJe), e.registerSeriesModel(NJe), e.registerLayout(OD("effectScatter")); +} +var FJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this) || this; + return a.add(a.createLine(r, n, i)), a._updateEffectSymbol(r, n), a; + } + return t.prototype.createLine = function(r, n, i) { + return new G9(r, n, i); + }, t.prototype._updateEffectSymbol = function(r, n) { + var i = r.getItemModel(n), a = i.getModel("effect"), o = a.get("symbolSize"), l = a.get("symbol"); + qt(o) || (o = [o, o]); + var u = r.getItemVisual(n, "style"), d = a.get("color") || u && u.stroke, f = this.childAt(1); + this._symbolType !== l && (this.remove(f), f = $s(l, -0.5, -0.5, 1, 1, d), f.z2 = 100, f.culling = !0, this.add(f)), f && (f.setStyle("shadowColor", d), f.setStyle(a.getItemStyle(["color"])), f.scaleX = o[0], f.scaleY = o[1], f.setColor(d), this._symbolType = l, this._symbolScale = o, this._updateEffectAnimation(r, a, n)); + }, t.prototype._updateEffectAnimation = function(r, n, i) { + var a = this.childAt(1); + if (a) { + var o = r.getItemLayout(i), l = n.get("period") * 1e3, u = n.get("loop"), d = n.get("roundTrip"), f = n.get("constantSpeed"), g = kl(n.get("delay"), function(y) { + return y / r.count() * l / 3; + }); + if (a.ignore = !0, this._updateAnimationPoints(a, o), f > 0 && (l = this._getLineLength(a) / f * 1e3), l !== this._period || u !== this._loop || d !== this._roundTrip) { + a.stopAnimation(); + var v = void 0; + Kr(g) ? v = g(i) : v = g, a.__t > 0 && (v = -l * a.__t), this._animateSymbol(a, l, v, u, d); + } + this._period = l, this._loop = u, this._roundTrip = d; + } + }, t.prototype._animateSymbol = function(r, n, i, a, o) { + if (n > 0) { + r.__t = 0; + var l = this, u = r.animate("", a).when(o ? n * 2 : n, { + __t: o ? 2 : 1 + }).delay(i).during(function() { + l._updateSymbolPosition(r); + }); + a || u.done(function() { + l.remove(r); + }), u.start(); + } + }, t.prototype._getLineLength = function(r) { + return Om(r.__p1, r.__cp1) + Om(r.__cp1, r.__p2); + }, t.prototype._updateAnimationPoints = function(r, n) { + r.__p1 = n[0], r.__p2 = n[1], r.__cp1 = n[2] || [(n[0][0] + n[1][0]) / 2, (n[0][1] + n[1][1]) / 2]; + }, t.prototype.updateData = function(r, n, i) { + this.childAt(0).updateData(r, n, i), this._updateEffectSymbol(r, n); + }, t.prototype._updateSymbolPosition = function(r) { + var n = r.__p1, i = r.__p2, a = r.__cp1, o = r.__t < 1 ? r.__t : 2 - r.__t, l = [r.x, r.y], u = l.slice(), d = Kl, f = DH; + l[0] = d(n[0], a[0], i[0], o), l[1] = d(n[1], a[1], i[1], o); + var g = r.__t < 1 ? f(n[0], a[0], i[0], o) : f(i[0], a[0], n[0], 1 - o), v = r.__t < 1 ? f(n[1], a[1], i[1], o) : f(i[1], a[1], n[1], 1 - o); + r.rotation = -Math.atan2(v, g) - Math.PI / 2, (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") && (r.__lastT !== void 0 && r.__lastT < r.__t ? (r.scaleY = Om(u, l) * 1.05, o === 1 && (l[0] = u[0] + (l[0] - u[0]) / 2, l[1] = u[1] + (l[1] - u[1]) / 2)) : r.__lastT === 1 ? r.scaleY = 2 * Om(n, l) : r.scaleY = this._symbolScale[1]), r.__lastT = r.__t, r.ignore = !1, r.x = l[0], r.y = l[1]; + }, t.prototype.updateLayout = function(r, n) { + this.childAt(0).updateLayout(r, n); + var i = r.getItemModel(n).getModel("effect"); + this._updateEffectAnimation(r, i, n); + }, t; + }(_n) +); +const KSe = FJe; +var BJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i) { + var a = e.call(this) || this; + return a._createPolyline(r, n, i), a; + } + return t.prototype._createPolyline = function(r, n, i) { + var a = r.getItemLayout(n), o = new $u({ + shape: { + points: a + } + }); + this.add(o), this._updateCommonStl(r, n, i); + }, t.prototype.updateData = function(r, n, i) { + var a = r.hostModel, o = this.childAt(0), l = { + shape: { + points: r.getItemLayout(n) + } + }; + ia(o, l, a, n), this._updateCommonStl(r, n, i); + }, t.prototype._updateCommonStl = function(r, n, i) { + var a = this.childAt(0), o = r.getItemModel(n), l = i && i.emphasisLineStyle, u = i && i.focus, d = i && i.blurScope, f = i && i.emphasisDisabled; + if (!i || r.hasItemOption) { + var g = o.getModel("emphasis"); + l = g.getModel("lineStyle").getLineStyle(), f = g.get("disabled"), u = g.get("focus"), d = g.get("blurScope"); + } + a.useStyle(r.getItemVisual(n, "style")), a.style.fill = null, a.style.strokeNoScale = !0; + var v = a.ensureState("emphasis"); + v.style = l, xs(this, u, d, f); + }, t.prototype.updateLayout = function(r, n) { + var i = this.childAt(0); + i.setShape("points", r.getItemLayout(n)); + }, t; + }(_n) +); +const ZSe = BJe; +var UJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r._lastFrame = 0, r._lastFramePercent = 0, r; + } + return t.prototype.createLine = function(r, n, i) { + return new ZSe(r, n, i); + }, t.prototype._updateAnimationPoints = function(r, n) { + this._points = n; + for (var i = [0], a = 0, o = 1; o < n.length; o++) { + var l = n[o - 1], u = n[o]; + a += Om(l, u), i.push(a); + } + if (a === 0) { + this._length = 0; + return; + } + for (var o = 0; o < i.length; o++) + i[o] /= a; + this._offsets = i, this._length = a; + }, t.prototype._getLineLength = function() { + return this._length; + }, t.prototype._updateSymbolPosition = function(r) { + var n = r.__t < 1 ? r.__t : 2 - r.__t, i = this._points, a = this._offsets, o = i.length; + if (a) { + var l = this._lastFrame, u; + if (n < this._lastFramePercent) { + var d = Math.min(l + 1, o - 1); + for (u = d; u >= 0 && !(a[u] <= n); u--) + ; + u = Math.min(u, o - 2); + } else { + for (u = l; u < o && !(a[u] > n); u++) + ; + u = Math.min(u - 1, o - 2); + } + var f = (n - a[u]) / (a[u + 1] - a[u]), g = i[u], v = i[u + 1]; + r.x = g[0] * (1 - f) + f * v[0], r.y = g[1] * (1 - f) + f * v[1]; + var y = r.__t < 1 ? v[0] - g[0] : g[0] - v[0], C = r.__t < 1 ? v[1] - g[1] : g[1] - v[1]; + r.rotation = -Math.atan2(C, y) - Math.PI / 2, this._lastFrame = u, this._lastFramePercent = n, r.ignore = !1; + } + }, t; + }(KSe) +); +const jJe = UJe; +var $Je = ( + /** @class */ + function() { + function e() { + this.polyline = !1, this.curveness = 0, this.segs = []; + } + return e; + }() +), VJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r) { + var n = e.call(this, r) || this; + return n._off = 0, n.hoverDataIdx = -1, n; + } + return t.prototype.reset = function() { + this.notClear = !1, this._off = 0; + }, t.prototype.getDefaultStyle = function() { + return { + stroke: "#000", + fill: null + }; + }, t.prototype.getDefaultShape = function() { + return new $Je(); + }, t.prototype.buildPath = function(r, n) { + var i = n.segs, a = n.curveness, o; + if (n.polyline) + for (o = this._off; o < i.length; ) { + var l = i[o++]; + if (l > 0) { + r.moveTo(i[o++], i[o++]); + for (var u = 1; u < l; u++) + r.lineTo(i[o++], i[o++]); + } + } + else + for (o = this._off; o < i.length; ) { + var d = i[o++], f = i[o++], g = i[o++], v = i[o++]; + if (r.moveTo(d, f), a > 0) { + var y = (d + g) / 2 - (f - v) * a, C = (f + v) / 2 - (g - d) * a; + r.quadraticCurveTo(y, C, g, v); + } else + r.lineTo(g, v); + } + this.incremental && (this._off = o, this.notClear = !0); + }, t.prototype.findDataIndex = function(r, n) { + var i = this.shape, a = i.segs, o = i.curveness, l = this.style.lineWidth; + if (i.polyline) + for (var u = 0, d = 0; d < a.length; ) { + var f = a[d++]; + if (f > 0) + for (var g = a[d++], v = a[d++], y = 1; y < f; y++) { + var C = a[d++], A = a[d++]; + if (H_(g, v, C, A, l, r, n)) + return u; + } + u++; + } + else + for (var u = 0, d = 0; d < a.length; ) { + var g = a[d++], v = a[d++], C = a[d++], A = a[d++]; + if (o > 0) { + var S = (g + C) / 2 - (v - A) * o, _ = (v + A) / 2 - (C - g) * o; + if (zve(g, v, S, _, C, A, l, r, n)) + return u; + } else if (H_(g, v, C, A, l, r, n)) + return u; + u++; + } + return -1; + }, t.prototype.contain = function(r, n) { + var i = this.transformCoordToLocal(r, n), a = this.getBoundingRect(); + if (r = i[0], n = i[1], a.contain(r, n)) { + var o = this.hoverDataIdx = this.findDataIndex(r, n); + return o >= 0; + } + return this.hoverDataIdx = -1, !1; + }, t.prototype.getBoundingRect = function() { + var r = this._rect; + if (!r) { + for (var n = this.shape, i = n.segs, a = 1 / 0, o = 1 / 0, l = -1 / 0, u = -1 / 0, d = 0; d < i.length; ) { + var f = i[d++], g = i[d++]; + a = Math.min(f, a), l = Math.max(f, l), o = Math.min(g, o), u = Math.max(g, u); + } + r = this._rect = new ei(a, o, l, u); + } + return r; + }, t; + }(Ei) +), zJe = ( + /** @class */ + function() { + function e() { + this.group = new _n(); + } + return e.prototype.updateData = function(t) { + this._clear(); + var r = this._create(); + r.setShape({ + segs: t.getLayout("linesPoints") + }), this._setCommon(r, t); + }, e.prototype.incrementalPrepareUpdate = function(t) { + this.group.removeAll(), this._clear(); + }, e.prototype.incrementalUpdate = function(t, r) { + var n = this._newAdded[0], i = r.getLayout("linesPoints"), a = n && n.shape.segs; + if (a && a.length < 2e4) { + var o = a.length, l = new Float32Array(o + i.length); + l.set(a), l.set(i, o), n.setShape({ + segs: l + }); + } else { + this._newAdded = []; + var u = this._create(); + u.incremental = !0, u.setShape({ + segs: i + }), this._setCommon(u, r), u.__startIndex = t.start; + } + }, e.prototype.remove = function() { + this._clear(); + }, e.prototype.eachRendered = function(t) { + this._newAdded[0] && t(this._newAdded[0]); + }, e.prototype._create = function() { + var t = new VJe({ + cursor: "default", + ignoreCoarsePointer: !0 + }); + return this._newAdded.push(t), this.group.add(t), t; + }, e.prototype._setCommon = function(t, r, n) { + var i = r.hostModel; + t.setShape({ + polyline: i.get("polyline"), + curveness: i.get(["lineStyle", "curveness"]) + }), t.useStyle(i.getModel("lineStyle").getLineStyle()), t.style.strokeNoScale = !0; + var a = r.getVisual("style"); + a && a.stroke && t.setStyle("stroke", a.stroke), t.setStyle("fill", null); + var o = Tn(t); + o.seriesIndex = i.seriesIndex, t.on("mousemove", function(l) { + o.dataIndex = null; + var u = t.hoverDataIdx; + u > 0 && (o.dataIndex = u + t.__startIndex); + }); + }, e.prototype._clear = function() { + this._newAdded = [], this.group.removeAll(); + }, e; + }() +); +const HJe = zJe; +var WJe = { + seriesType: "lines", + plan: CI(), + reset: function(e) { + var t = e.coordinateSystem; + if (t) { + var r = e.get("polyline"), n = e.pipelineContext.large; + return { + progress: function(i, a) { + var o = []; + if (n) { + var l = void 0, u = i.end - i.start; + if (r) { + for (var d = 0, f = i.start; f < i.end; f++) + d += e.getLineCoordsCount(f); + l = new Float32Array(u + d * 2); + } else + l = new Float32Array(u * 4); + for (var g = 0, v = [], f = i.start; f < i.end; f++) { + var y = e.getLineCoords(f, o); + r && (l[g++] = y); + for (var C = 0; C < y; C++) + v = t.dataToPoint(o[C], !1, v), l[g++] = v[0], l[g++] = v[1]; + } + a.setLayout("linesPoints", l); + } else + for (var f = i.start; f < i.end; f++) { + var A = a.getItemModel(f), y = e.getLineCoords(f, o), S = []; + if (r) + for (var _ = 0; _ < y; _++) + S.push(t.dataToPoint(o[_])); + else { + S[0] = t.dataToPoint(o[0]), S[1] = t.dataToPoint(o[1]); + var E = A.get(["lineStyle", "curveness"]); + +E && (S[2] = [(S[0][0] + S[1][0]) / 2 - (S[0][1] - S[1][1]) * E, (S[0][1] + S[1][1]) / 2 - (S[1][0] - S[0][0]) * E]); + } + a.setItemLayout(f, S); + } + } + }; + } + } +}; +const qSe = WJe; +var GJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = r.getData(), o = this._updateLineDraw(a, r), l = r.get("zlevel"), u = r.get(["effect", "trailLength"]), d = i.getZr(), f = d.painter.getType() === "svg"; + f || d.painter.getLayer(l).clear(!0), this._lastZlevel != null && !f && d.configLayer(this._lastZlevel, { + motionBlur: !1 + }), this._showEffect(r) && u > 0 && (f || d.configLayer(l, { + motionBlur: !0, + lastFrameAlpha: Math.max(Math.min(u / 10 + 0.9, 1), 0) + })), o.updateData(a); + var g = r.get("clip", !0) && DD(r.coordinateSystem, !1, r); + g ? this.group.setClipPath(g) : this.group.removeClipPath(), this._lastZlevel = l, this._finished = !0; + }, t.prototype.incrementalPrepareRender = function(r, n, i) { + var a = r.getData(), o = this._updateLineDraw(a, r); + o.incrementalPrepareUpdate(a), this._clearLayer(i), this._finished = !1; + }, t.prototype.incrementalRender = function(r, n, i) { + this._lineDraw.incrementalUpdate(r, n.getData()), this._finished = r.end === n.getData().count(); + }, t.prototype.eachRendered = function(r) { + this._lineDraw && this._lineDraw.eachRendered(r); + }, t.prototype.updateTransform = function(r, n, i) { + var a = r.getData(), o = r.pipelineContext; + if (!this._finished || o.large || o.progressiveRender) + return { + update: !0 + }; + var l = qSe.reset(r, n, i); + l.progress && l.progress({ + start: 0, + end: a.count(), + count: a.count() + }, a), this._lineDraw.updateLayout(), this._clearLayer(i); + }, t.prototype._updateLineDraw = function(r, n) { + var i = this._lineDraw, a = this._showEffect(n), o = !!n.get("polyline"), l = n.pipelineContext, u = l.large; + return (!i || a !== this._hasEffet || o !== this._isPolyline || u !== this._isLargeDraw) && (i && i.remove(), i = this._lineDraw = u ? new HJe() : new Y9(o ? a ? jJe : ZSe : a ? KSe : G9), this._hasEffet = a, this._isPolyline = o, this._isLargeDraw = u), this.group.add(i.group), i; + }, t.prototype._showEffect = function(r) { + return !!r.get(["effect", "show"]); + }, t.prototype._clearLayer = function(r) { + var n = r.getZr(), i = n.painter.getType() === "svg"; + !i && this._lastZlevel != null && n.painter.getLayer(this._lastZlevel).clear(!0); + }, t.prototype.remove = function(r, n) { + this._lineDraw && this._lineDraw.remove(), this._lineDraw = null, this._clearLayer(n); + }, t.prototype.dispose = function(r, n) { + this.remove(r, n); + }, t.type = "lines", t; + }(Ya) +); +const YJe = GJe; +var XJe = typeof Uint32Array == "undefined" ? Array : Uint32Array, KJe = typeof Float64Array == "undefined" ? Array : Float64Array; +function Yse(e) { + var t = e.data; + t && t[0] && t[0][0] && t[0][0].coord && (e.data = er(t, function(r) { + var n = [r[0].coord, r[1].coord], i = { + coords: n + }; + return r[0].name && (i.fromName = r[0].name), r[1].name && (i.toName = r[1].name), fF([i, r[0], r[1]]); + })); +} +var ZJe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.visualStyleAccessPath = "lineStyle", r.visualDrawType = "stroke", r; + } + return t.prototype.init = function(r) { + r.data = r.data || [], Yse(r); + var n = this._processFlatCoordsArray(r.data); + this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset, n.flatCoords && (r.data = new Float32Array(n.count)), e.prototype.init.apply(this, arguments); + }, t.prototype.mergeOption = function(r) { + if (Yse(r), r.data) { + var n = this._processFlatCoordsArray(r.data); + this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset, n.flatCoords && (r.data = new Float32Array(n.count)); + } + e.prototype.mergeOption.apply(this, arguments); + }, t.prototype.appendData = function(r) { + var n = this._processFlatCoordsArray(r.data); + n.flatCoords && (this._flatCoords ? (this._flatCoords = oR(this._flatCoords, n.flatCoords), this._flatCoordsOffset = oR(this._flatCoordsOffset, n.flatCoordsOffset)) : (this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset), r.data = new Float32Array(n.count)), this.getRawData().appendData(r.data); + }, t.prototype._getCoordsFromItemModel = function(r) { + var n = this.getData().getItemModel(r), i = n.option instanceof Array ? n.option : n.getShallow("coords"); + return i; + }, t.prototype.getLineCoordsCount = function(r) { + return this._flatCoordsOffset ? this._flatCoordsOffset[r * 2 + 1] : this._getCoordsFromItemModel(r).length; + }, t.prototype.getLineCoords = function(r, n) { + if (this._flatCoordsOffset) { + for (var i = this._flatCoordsOffset[r * 2], a = this._flatCoordsOffset[r * 2 + 1], o = 0; o < a; o++) + n[o] = n[o] || [], n[o][0] = this._flatCoords[i + o * 2], n[o][1] = this._flatCoords[i + o * 2 + 1]; + return a; + } else { + for (var l = this._getCoordsFromItemModel(r), o = 0; o < l.length; o++) + n[o] = n[o] || [], n[o][0] = l[o][0], n[o][1] = l[o][1]; + return l.length; + } + }, t.prototype._processFlatCoordsArray = function(r) { + var n = 0; + if (this._flatCoords && (n = this._flatCoords.length), Qi(r[0])) { + for (var i = r.length, a = new XJe(i), o = new KJe(i), l = 0, u = 0, d = 0, f = 0; f < i; ) { + d++; + var g = r[f++]; + a[u++] = l + n, a[u++] = g; + for (var v = 0; v < g; v++) { + var y = r[f++], C = r[f++]; + o[l++] = y, o[l++] = C; + } + } + return { + flatCoordsOffset: new Uint32Array(a.buffer, 0, u), + flatCoords: o, + count: d + }; + } + return { + flatCoordsOffset: null, + flatCoords: null, + count: r.length + }; + }, t.prototype.getInitialData = function(r, n) { + var i = new Ql(["value"], this); + return i.hasItemOption = !1, i.initData(r.data, [], function(a, o, l, u) { + if (a instanceof Array) + return NaN; + i.hasItemOption = !0; + var d = a.value; + if (d != null) + return d instanceof Array ? d[u] : d; + }), i; + }, t.prototype.formatTooltip = function(r, n, i) { + var a = this.getData(), o = a.getItemModel(r), l = o.get("name"); + if (l) + return l; + var u = o.get("fromName"), d = o.get("toName"), f = []; + return u != null && f.push(u), d != null && f.push(d), Fl("nameValue", { + name: f.join(" > ") + }); + }, t.prototype.preventIncremental = function() { + return !!this.get(["effect", "show"]); + }, t.prototype.getProgressive = function() { + var r = this.option.progressive; + return r == null ? this.option.large ? 1e4 : this.get("progressive") : r; + }, t.prototype.getProgressiveThreshold = function() { + var r = this.option.progressiveThreshold; + return r == null ? this.option.large ? 2e4 : this.get("progressiveThreshold") : r; + }, t.prototype.getZLevelKey = function() { + var r = this.getModel("effect"), n = r.get("trailLength"); + return this.getData().count() > this.getProgressiveThreshold() ? this.id : r.get("show") && n > 0 ? n + "" : ""; + }, t.type = "series.lines", t.dependencies = ["grid", "polar", "geo", "calendar"], t.defaultOption = { + coordinateSystem: "geo", + // zlevel: 0, + z: 2, + legendHoverLink: !0, + // Cartesian coordinate system + xAxisIndex: 0, + yAxisIndex: 0, + symbol: ["none", "none"], + symbolSize: [10, 10], + // Geo coordinate system + geoIndex: 0, + effect: { + show: !1, + period: 4, + constantSpeed: 0, + symbol: "circle", + symbolSize: 3, + loop: !0, + trailLength: 0.2 + }, + large: !1, + // Available when large is true + largeThreshold: 2e3, + polyline: !1, + clip: !0, + label: { + show: !1, + position: "end" + // distance: 5, + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + }, + lineStyle: { + opacity: 0.5 + } + }, t; + }(fo) +); +const qJe = ZJe; +function wP(e) { + return e instanceof Array || (e = [e, e]), e; +} +var JJe = { + seriesType: "lines", + reset: function(e) { + var t = wP(e.get("symbol")), r = wP(e.get("symbolSize")), n = e.getData(); + n.setVisual("fromSymbol", t && t[0]), n.setVisual("toSymbol", t && t[1]), n.setVisual("fromSymbolSize", r && r[0]), n.setVisual("toSymbolSize", r && r[1]); + function i(a, o) { + var l = a.getItemModel(o), u = wP(l.getShallow("symbol", !0)), d = wP(l.getShallow("symbolSize", !0)); + u[0] && a.setItemVisual(o, "fromSymbol", u[0]), u[1] && a.setItemVisual(o, "toSymbol", u[1]), d[0] && a.setItemVisual(o, "fromSymbolSize", d[0]), d[1] && a.setItemVisual(o, "toSymbolSize", d[1]); + } + return { + dataEach: n.hasItemOption ? i : null + }; + } +}; +const QJe = JJe; +function eQe(e) { + e.registerChartView(YJe), e.registerSeriesModel(qJe), e.registerLayout(qSe), e.registerVisual(QJe); +} +var tQe = 256, rQe = ( + /** @class */ + function() { + function e() { + this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = { + inRange: null, + outOfRange: null + }; + var t = kp.createCanvas(); + this.canvas = t; + } + return e.prototype.update = function(t, r, n, i, a, o) { + var l = this._getBrush(), u = this._getGradient(a, "inRange"), d = this._getGradient(a, "outOfRange"), f = this.pointSize + this.blurSize, g = this.canvas, v = g.getContext("2d"), y = t.length; + g.width = r, g.height = n; + for (var C = 0; C < y; ++C) { + var A = t[C], S = A[0], _ = A[1], E = A[2], I = i(E); + v.globalAlpha = I, v.drawImage(l, S - f, _ - f); + } + if (!g.width || !g.height) + return g; + for (var w = v.getImageData(0, 0, g.width, g.height), x = w.data, b = 0, R = x.length, M = this.minOpacity, O = this.maxOpacity, P = O - M; b < R; ) { + var I = x[b + 3] / 256, B = Math.floor(I * (tQe - 1)) * 4; + if (I > 0) { + var H = o(I) ? u : d; + I > 0 && (I = I * P + M), x[b++] = H[B], x[b++] = H[B + 1], x[b++] = H[B + 2], x[b++] = H[B + 3] * I * 256; + } else + b += 4; + } + return v.putImageData(w, 0, 0), g; + }, e.prototype._getBrush = function() { + var t = this._brushCanvas || (this._brushCanvas = kp.createCanvas()), r = this.pointSize + this.blurSize, n = r * 2; + t.width = n, t.height = n; + var i = t.getContext("2d"); + return i.clearRect(0, 0, n, n), i.shadowOffsetX = n, i.shadowBlur = this.blurSize, i.shadowColor = "#000", i.beginPath(), i.arc(-r, r, this.pointSize, 0, Math.PI * 2, !0), i.closePath(), i.fill(), t; + }, e.prototype._getGradient = function(t, r) { + for (var n = this._gradientPixels, i = n[r] || (n[r] = new Uint8ClampedArray(256 * 4)), a = [0, 0, 0, 0], o = 0, l = 0; l < 256; l++) + t[r](l / 255, !0, a), i[o++] = a[0], i[o++] = a[1], i[o++] = a[2], i[o++] = a[3]; + return i; + }, e; + }() +); +const nQe = rQe; +function iQe(e, t, r) { + var n = e[1] - e[0]; + t = er(t, function(o) { + return { + interval: [(o.interval[0] - e[0]) / n, (o.interval[1] - e[0]) / n] + }; + }); + var i = t.length, a = 0; + return function(o) { + var l; + for (l = a; l < i; l++) { + var u = t[l].interval; + if (u[0] <= o && o <= u[1]) { + a = l; + break; + } + } + if (l === i) + for (l = a - 1; l >= 0; l--) { + var u = t[l].interval; + if (u[0] <= o && o <= u[1]) { + a = l; + break; + } + } + return l >= 0 && l < i && r[l]; + }; +} +function aQe(e, t) { + var r = e[1] - e[0]; + return t = [(t[0] - e[0]) / r, (t[1] - e[0]) / r], function(n) { + return n >= t[0] && n <= t[1]; + }; +} +function Xse(e) { + var t = e.dimensions; + return t[0] === "lng" && t[1] === "lat"; +} +var oQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a; + n.eachComponent("visualMap", function(l) { + l.eachTargetSeries(function(u) { + u === r && (a = l); + }); + }), this._progressiveEls = null, this.group.removeAll(); + var o = r.coordinateSystem; + o.type === "cartesian2d" || o.type === "calendar" ? this._renderOnCartesianAndCalendar(r, i, 0, r.getData().count()) : Xse(o) && this._renderOnGeo(o, r, a, i); + }, t.prototype.incrementalPrepareRender = function(r, n, i) { + this.group.removeAll(); + }, t.prototype.incrementalRender = function(r, n, i, a) { + var o = n.coordinateSystem; + o && (Xse(o) ? this.render(n, i, a) : (this._progressiveEls = [], this._renderOnCartesianAndCalendar(n, a, r.start, r.end, !0))); + }, t.prototype.eachRendered = function(r) { + D0(this._progressiveEls || this.group, r); + }, t.prototype._renderOnCartesianAndCalendar = function(r, n, i, a, o) { + var l = r.coordinateSystem, u = PE(l, "cartesian2d"), d, f, g, v; + if (u) { + var y = l.getAxis("x"), C = l.getAxis("y"); + d = y.getBandWidth() + 0.5, f = C.getBandWidth() + 0.5, g = y.scale.getExtent(), v = C.scale.getExtent(); + } + for (var A = this.group, S = r.getData(), _ = r.getModel(["emphasis", "itemStyle"]).getItemStyle(), E = r.getModel(["blur", "itemStyle"]).getItemStyle(), I = r.getModel(["select", "itemStyle"]).getItemStyle(), w = r.get(["itemStyle", "borderRadius"]), x = Ll(r), b = r.getModel("emphasis"), R = b.get("focus"), M = b.get("blurScope"), O = b.get("disabled"), P = u ? [S.mapDimension("x"), S.mapDimension("y"), S.mapDimension("value")] : [S.mapDimension("time"), S.mapDimension("value")], B = i; B < a; B++) { + var H = void 0, Y = S.getItemVisual(B, "style"); + if (u) { + var X = S.get(P[0], B), ee = S.get(P[1], B); + if (isNaN(S.get(P[2], B)) || isNaN(X) || isNaN(ee) || X < g[0] || X > g[1] || ee < v[0] || ee > v[1]) + continue; + var ae = l.dataToPoint([X, ee]); + H = new Xi({ + shape: { + x: ae[0] - d / 2, + y: ae[1] - f / 2, + width: d, + height: f + }, + style: Y + }); + } else { + if (isNaN(S.get(P[1], B))) + continue; + H = new Xi({ + z2: 1, + shape: l.dataToRect([S.get(P[0], B)]).contentShape, + style: Y + }); + } + if (S.hasItemOption) { + var J = S.getItemModel(B), ne = J.getModel("emphasis"); + _ = ne.getModel("itemStyle").getItemStyle(), E = J.getModel(["blur", "itemStyle"]).getItemStyle(), I = J.getModel(["select", "itemStyle"]).getItemStyle(), w = J.get(["itemStyle", "borderRadius"]), R = ne.get("focus"), M = ne.get("blurScope"), O = ne.get("disabled"), x = Ll(J); + } + H.shape.r = w; + var fe = r.getRawValue(B), de = "-"; + fe && fe[2] != null && (de = fe[2] + ""), Ec(H, x, { + labelFetcher: r, + labelDataIndex: B, + defaultOpacity: Y.opacity, + defaultText: de + }), H.ensureState("emphasis").style = _, H.ensureState("blur").style = E, H.ensureState("select").style = I, xs(H, R, M, O), H.incremental = o, o && (H.states.emphasis.hoverLayer = !0), A.add(H), S.setItemGraphicEl(B, H), this._progressiveEls && this._progressiveEls.push(H); + } + }, t.prototype._renderOnGeo = function(r, n, i, a) { + var o = i.targetVisuals.inRange, l = i.targetVisuals.outOfRange, u = n.getData(), d = this._hmLayer || this._hmLayer || new nQe(); + d.blurSize = n.get("blurSize"), d.pointSize = n.get("pointSize"), d.minOpacity = n.get("minOpacity"), d.maxOpacity = n.get("maxOpacity"); + var f = r.getViewRect().clone(), g = r.getRoamTransform(); + f.applyTransform(g); + var v = Math.max(f.x, 0), y = Math.max(f.y, 0), C = Math.min(f.width + f.x, a.getWidth()), A = Math.min(f.height + f.y, a.getHeight()), S = C - v, _ = A - y, E = [u.mapDimension("lng"), u.mapDimension("lat"), u.mapDimension("value")], I = u.mapArray(E, function(R, M, O) { + var P = r.dataToPoint([R, M]); + return P[0] -= v, P[1] -= y, P.push(O), P; + }), w = i.getExtent(), x = i.type === "visualMap.continuous" ? aQe(w, i.option.range) : iQe(w, i.getPieceList(), i.option.selected); + d.update(I, S, _, o.color.getNormalizer(), { + inRange: o.color.getColorMapper(), + outOfRange: l.color.getColorMapper() + }, x); + var b = new ec({ + style: { + width: S, + height: _, + x: v, + y, + image: d.canvas + }, + silent: !0 + }); + this.group.add(b); + }, t.type = "heatmap", t; + }(Ya) +); +const sQe = oQe; +var lQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.getInitialData = function(r, n) { + return fv(null, this, { + generateCoord: "value" + }); + }, t.prototype.preventIncremental = function() { + var r = EI.get(this.get("coordinateSystem")); + if (r && r.dimensions) + return r.dimensions[0] === "lng" && r.dimensions[1] === "lat"; + }, t.type = "series.heatmap", t.dependencies = ["grid", "geo", "calendar"], t.defaultOption = { + coordinateSystem: "cartesian2d", + // zlevel: 0, + z: 2, + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + // Geo coordinate system + geoIndex: 0, + blurSize: 30, + pointSize: 20, + maxOpacity: 1, + minOpacity: 0, + select: { + itemStyle: { + borderColor: "#212121" + } + } + }, t; + }(fo) +); +const cQe = lQe; +function uQe(e) { + e.registerChartView(sQe), e.registerSeriesModel(cQe); +} +var hQe = ["itemStyle", "borderWidth"], Kse = [{ + xy: "x", + wh: "width", + index: 0, + posDesc: ["left", "right"] +}, { + xy: "y", + wh: "height", + index: 1, + posDesc: ["top", "bottom"] +}], v3 = new ny(), dQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = this.group, o = r.getData(), l = this._data, u = r.coordinateSystem, d = u.getBaseAxis(), f = d.isHorizontal(), g = u.master.getRect(), v = { + ecSize: { + width: i.getWidth(), + height: i.getHeight() + }, + seriesModel: r, + coordSys: u, + coordSysExtent: [[g.x, g.x + g.width], [g.y, g.y + g.height]], + isHorizontal: f, + valueDim: Kse[+f], + categoryDim: Kse[1 - +f] + }; + o.diff(l).add(function(C) { + if (o.hasValue(C)) { + var A = qse(o, C), S = Zse(o, C, A, v), _ = Jse(o, v, S); + o.setItemGraphicEl(C, _), a.add(_), ele(_, v, S); + } + }).update(function(C, A) { + var S = l.getItemGraphicEl(A); + if (!o.hasValue(C)) { + a.remove(S); + return; + } + var _ = qse(o, C), E = Zse(o, C, _, v), I = nbe(o, E); + S && I !== S.__pictorialShapeStr && (a.remove(S), o.setItemGraphicEl(C, null), S = null), S ? _Qe(S, v, E) : S = Jse(o, v, E, !0), o.setItemGraphicEl(C, S), S.__pictorialSymbolMeta = E, a.add(S), ele(S, v, E); + }).remove(function(C) { + var A = l.getItemGraphicEl(C); + A && Qse(l, C, A.__pictorialSymbolMeta.animationModel, A); + }).execute(); + var y = r.get("clip", !0) ? DD(r.coordinateSystem, !1, r) : null; + return y ? a.setClipPath(y) : a.removeClipPath(), this._data = o, this.group; + }, t.prototype.remove = function(r, n) { + var i = this.group, a = this._data; + r.get("animation") ? a && a.eachItemGraphicEl(function(o) { + Qse(a, Tn(o).dataIndex, r, o); + }) : i.removeAll(); + }, t.type = "pictorialBar", t; + }(Ya) +); +function Zse(e, t, r, n) { + var i = e.getItemLayout(t), a = r.get("symbolRepeat"), o = r.get("symbolClip"), l = r.get("symbolPosition") || "start", u = r.get("symbolRotate"), d = (u || 0) * Math.PI / 180 || 0, f = r.get("symbolPatternSize") || 2, g = r.isAnimationEnabled(), v = { + dataIndex: t, + layout: i, + itemModel: r, + symbolType: e.getItemVisual(t, "symbol") || "circle", + style: e.getItemVisual(t, "style"), + symbolClip: o, + symbolRepeat: a, + symbolRepeatDirection: r.get("symbolRepeatDirection"), + symbolPatternSize: f, + rotation: d, + animationModel: g ? r : null, + hoverScale: g && r.get(["emphasis", "scale"]), + z2: r.getShallow("z", !0) || 0 + }; + fQe(r, a, i, n, v), pQe(e, t, i, a, o, v.boundingLength, v.pxSign, f, n, v), gQe(r, v.symbolScale, d, n, v); + var y = v.symbolSize, C = kE(r.get("symbolOffset"), y); + return vQe(r, y, i, a, o, C, l, v.valueLineWidth, v.boundingLength, v.repeatCutLength, n, v), v; +} +function fQe(e, t, r, n, i) { + var a = n.valueDim, o = e.get("symbolBoundingData"), l = n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()), u = l.toGlobalCoord(l.dataToCoord(0)), d = 1 - +(r[a.wh] <= 0), f; + if (qt(o)) { + var g = [m3(l, o[0]) - u, m3(l, o[1]) - u]; + g[1] < g[0] && g.reverse(), f = g[d]; + } else + o != null ? f = m3(l, o) - u : t ? f = n.coordSysExtent[a.index][d] - u : f = r[a.wh]; + i.boundingLength = f, t && (i.repeatCutLength = r[a.wh]), i.pxSign = f > 0 ? 1 : -1; +} +function m3(e, t) { + return e.toGlobalCoord(e.dataToCoord(e.scale.parse(t))); +} +function pQe(e, t, r, n, i, a, o, l, u, d) { + var f = u.valueDim, g = u.categoryDim, v = Math.abs(r[g.wh]), y = e.getItemVisual(t, "symbolSize"), C; + qt(y) ? C = y.slice() : y == null ? C = ["100%", "100%"] : C = [y, y], C[g.index] = yr(C[g.index], v), C[f.index] = yr(C[f.index], n ? v : Math.abs(a)), d.symbolSize = C; + var A = d.symbolScale = [C[0] / l, C[1] / l]; + A[f.index] *= (u.isHorizontal ? -1 : 1) * o; +} +function gQe(e, t, r, n, i) { + var a = e.get(hQe) || 0; + a && (v3.attr({ + scaleX: t[0], + scaleY: t[1], + rotation: r + }), v3.updateTransform(), a /= v3.getLineScale(), a *= t[n.valueDim.index]), i.valueLineWidth = a || 0; +} +function vQe(e, t, r, n, i, a, o, l, u, d, f, g) { + var v = f.categoryDim, y = f.valueDim, C = g.pxSign, A = Math.max(t[y.index] + l, 0), S = A; + if (n) { + var _ = Math.abs(u), E = kl(e.get("symbolMargin"), "15%") + "", I = !1; + E.lastIndexOf("!") === E.length - 1 && (I = !0, E = E.slice(0, E.length - 1)); + var w = yr(E, t[y.index]), x = Math.max(A + w * 2, 0), b = I ? 0 : w * 2, R = m8(n), M = R ? n : tle((_ + b) / x), O = _ - M * A; + w = O / 2 / (I ? M : Math.max(M - 1, 1)), x = A + w * 2, b = I ? 0 : w * 2, !R && n !== "fixed" && (M = d ? tle((Math.abs(d) + b) / x) : 0), S = M * x - b, g.repeatTimes = M, g.symbolMargin = w; + } + var P = C * (S / 2), B = g.pathPosition = []; + B[v.index] = r[v.wh] / 2, B[y.index] = o === "start" ? P : o === "end" ? u - P : u / 2, a && (B[0] += a[0], B[1] += a[1]); + var H = g.bundlePosition = []; + H[v.index] = r[v.xy], H[y.index] = r[y.xy]; + var Y = g.barRectShape = $t({}, r); + Y[y.wh] = C * Math.max(Math.abs(r[y.wh]), Math.abs(B[y.index] + P)), Y[v.wh] = r[v.wh]; + var X = g.clipShape = {}; + X[v.xy] = -r[v.xy], X[v.wh] = f.ecSize[v.wh], X[y.xy] = 0, X[y.wh] = r[y.wh]; +} +function JSe(e) { + var t = e.symbolPatternSize, r = $s( + // Consider texture img, make a big size. + e.symbolType, + -t / 2, + -t / 2, + t, + t + ); + return r.attr({ + culling: !0 + }), r.type !== "image" && r.setStyle({ + strokeNoScale: !0 + }), r; +} +function QSe(e, t, r, n) { + var i = e.__pictorialBundle, a = r.symbolSize, o = r.valueLineWidth, l = r.pathPosition, u = t.valueDim, d = r.repeatTimes || 0, f = 0, g = a[t.valueDim.index] + o + r.symbolMargin * 2; + for (tY(e, function(A) { + A.__pictorialAnimationIndex = f, A.__pictorialRepeatTimes = d, f < d ? xw(A, null, C(f), r, n) : xw(A, null, { + scaleX: 0, + scaleY: 0 + }, r, n, function() { + i.remove(A); + }), f++; + }); f < d; f++) { + var v = JSe(r); + v.__pictorialAnimationIndex = f, v.__pictorialRepeatTimes = d, i.add(v); + var y = C(f); + xw(v, { + x: y.x, + y: y.y, + scaleX: 0, + scaleY: 0 + }, { + scaleX: y.scaleX, + scaleY: y.scaleY, + rotation: y.rotation + }, r, n); + } + function C(A) { + var S = l.slice(), _ = r.pxSign, E = A; + return (r.symbolRepeatDirection === "start" ? _ > 0 : _ < 0) && (E = d - 1 - A), S[u.index] = g * (E - d / 2 + 0.5) + l[u.index], { + x: S[0], + y: S[1], + scaleX: r.symbolScale[0], + scaleY: r.symbolScale[1], + rotation: r.rotation + }; + } +} +function ebe(e, t, r, n) { + var i = e.__pictorialBundle, a = e.__pictorialMainPath; + a ? xw(a, null, { + x: r.pathPosition[0], + y: r.pathPosition[1], + scaleX: r.symbolScale[0], + scaleY: r.symbolScale[1], + rotation: r.rotation + }, r, n) : (a = e.__pictorialMainPath = JSe(r), i.add(a), xw(a, { + x: r.pathPosition[0], + y: r.pathPosition[1], + scaleX: 0, + scaleY: 0, + rotation: r.rotation + }, { + scaleX: r.symbolScale[0], + scaleY: r.symbolScale[1] + }, r, n)); +} +function tbe(e, t, r) { + var n = $t({}, t.barRectShape), i = e.__pictorialBarRect; + i ? xw(i, null, { + shape: n + }, t, r) : (i = e.__pictorialBarRect = new Xi({ + z2: 2, + shape: n, + silent: !0, + style: { + stroke: "transparent", + fill: "transparent", + lineWidth: 0 + } + }), i.disableMorphing = !0, e.add(i)); +} +function rbe(e, t, r, n) { + if (r.symbolClip) { + var i = e.__pictorialClipPath, a = $t({}, r.clipShape), o = t.valueDim, l = r.animationModel, u = r.dataIndex; + if (i) + ia(i, { + shape: a + }, l, u); + else { + a[o.wh] = 0, i = new Xi({ + shape: a + }), e.__pictorialBundle.setClipPath(i), e.__pictorialClipPath = i; + var d = {}; + d[o.wh] = r.clipShape[o.wh], DE[n ? "updateProps" : "initProps"](i, { + shape: d + }, l, u); + } + } +} +function qse(e, t) { + var r = e.getItemModel(t); + return r.getAnimationDelayParams = mQe, r.isAnimationEnabled = yQe, r; +} +function mQe(e) { + return { + index: e.__pictorialAnimationIndex, + count: e.__pictorialRepeatTimes + }; +} +function yQe() { + return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation"); +} +function Jse(e, t, r, n) { + var i = new _n(), a = new _n(); + return i.add(a), i.__pictorialBundle = a, a.x = r.bundlePosition[0], a.y = r.bundlePosition[1], r.symbolRepeat ? QSe(i, t, r) : ebe(i, t, r), tbe(i, r, n), rbe(i, t, r, n), i.__pictorialShapeStr = nbe(e, r), i.__pictorialSymbolMeta = r, i; +} +function _Qe(e, t, r) { + var n = r.animationModel, i = r.dataIndex, a = e.__pictorialBundle; + ia(a, { + x: r.bundlePosition[0], + y: r.bundlePosition[1] + }, n, i), r.symbolRepeat ? QSe(e, t, r, !0) : ebe(e, t, r, !0), tbe(e, r, !0), rbe(e, t, r, !0); +} +function Qse(e, t, r, n) { + var i = n.__pictorialBarRect; + i && i.removeTextContent(); + var a = []; + tY(n, function(o) { + a.push(o); + }), n.__pictorialMainPath && a.push(n.__pictorialMainPath), n.__pictorialClipPath && (r = null), Ee(a, function(o) { + v0(o, { + scaleX: 0, + scaleY: 0 + }, r, t, function() { + n.parent && n.parent.remove(n); + }); + }), e.setItemGraphicEl(t, null); +} +function nbe(e, t) { + return [e.getItemVisual(t.dataIndex, "symbol") || "none", !!t.symbolRepeat, !!t.symbolClip].join(":"); +} +function tY(e, t, r) { + Ee(e.__pictorialBundle.children(), function(n) { + n !== e.__pictorialBarRect && t.call(r, n); + }); +} +function xw(e, t, r, n, i, a) { + t && e.attr(t), n.symbolClip && !i ? r && e.attr(r) : r && DE[i ? "updateProps" : "initProps"](e, r, n.animationModel, n.dataIndex, a); +} +function ele(e, t, r) { + var n = r.dataIndex, i = r.itemModel, a = i.getModel("emphasis"), o = a.getModel("itemStyle").getItemStyle(), l = i.getModel(["blur", "itemStyle"]).getItemStyle(), u = i.getModel(["select", "itemStyle"]).getItemStyle(), d = i.getShallow("cursor"), f = a.get("focus"), g = a.get("blurScope"), v = a.get("scale"); + tY(e, function(A) { + if (A instanceof ec) { + var S = A.style; + A.useStyle($t({ + // TODO other properties like dx, dy ? + image: S.image, + x: S.x, + y: S.y, + width: S.width, + height: S.height + }, r.style)); + } else + A.useStyle(r.style); + var _ = A.ensureState("emphasis"); + _.style = o, v && (_.scaleX = A.scaleX * 1.1, _.scaleY = A.scaleY * 1.1), A.ensureState("blur").style = l, A.ensureState("select").style = u, d && (A.cursor = d), A.z2 = r.z2; + }); + var y = t.valueDim.posDesc[+(r.boundingLength > 0)], C = e.__pictorialBarRect; + C.ignoreClip = !0, Ec(C, Ll(i), { + labelFetcher: t.seriesModel, + labelDataIndex: n, + defaultText: zw(t.seriesModel.getData(), n), + inheritColor: r.style.fill, + defaultOpacity: r.style.opacity, + defaultOutsidePosition: y + }), xs(e, f, g, a.get("disabled")); +} +function tle(e) { + var t = Math.round(e); + return Math.abs(e - t) < 1e-4 ? t : Math.ceil(e); +} +const SQe = dQe; +var bQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.hasSymbolVisual = !0, r.defaultSymbol = "roundRect", r; + } + return t.prototype.getInitialData = function(r) { + return r.stack = null, e.prototype.getInitialData.apply(this, arguments); + }, t.type = "series.pictorialBar", t.dependencies = ["grid"], t.defaultOption = O0(HL.defaultOption, { + symbol: "circle", + symbolSize: null, + symbolRotate: null, + symbolPosition: null, + symbolOffset: null, + symbolMargin: null, + symbolRepeat: !1, + symbolRepeatDirection: "end", + symbolClip: !1, + symbolBoundingData: null, + symbolPatternSize: 400, + barGap: "-100%", + // Pictorial bar do not clip by default because in many cases + // xAxis and yAxis are not displayed and it's expected not to clip + clip: !1, + // z can be set in data item, which is z2 actually. + // Disable progressive + progressive: 0, + emphasis: { + // By default pictorialBar do not hover scale. Hover scale is not suitable + // for the case that both has foreground and background. + scale: !1 + }, + select: { + itemStyle: { + borderColor: "#212121" + } + } + }), t; + }(HL) +); +const EQe = bQe; +function CQe(e) { + e.registerChartView(SQe), e.registerSeriesModel(EQe), e.registerLayout(e.PRIORITY.VISUAL.LAYOUT, Ln(x_e, "pictorialBar")), e.registerLayout(e.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, A_e("pictorialBar")); +} +var TQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._layers = [], r; + } + return t.prototype.render = function(r, n, i) { + var a = r.getData(), o = this, l = this.group, u = r.getLayerSeries(), d = a.getLayout("layoutInfo"), f = d.rect, g = d.boundaryGap; + l.x = 0, l.y = f.y + g[0]; + function v(S) { + return S.name; + } + var y = new Gm(this._layersSeries || [], u, v, v), C = []; + y.add(Ar(A, this, "add")).update(Ar(A, this, "update")).remove(Ar(A, this, "remove")).execute(); + function A(S, _, E) { + var I = o._layers; + if (S === "remove") { + l.remove(I[_]); + return; + } + for (var w = [], x = [], b, R = u[_].indices, M = 0; M < R.length; M++) { + var O = a.getItemLayout(R[M]), P = O.x, B = O.y0, H = O.y; + w.push(P, B), x.push(P, B + H), b = a.getItemVisual(R[M], "style"); + } + var Y, X = a.getItemLayout(R[0]), ee = r.getModel("label"), ae = ee.get("margin"), J = r.getModel("emphasis"); + if (S === "add") { + var ne = C[_] = new _n(); + Y = new x0e({ + shape: { + points: w, + stackedOnPoints: x, + smooth: 0.4, + stackedOnSmooth: 0.4, + smoothConstraint: !1 + }, + z2: 0 + }), ne.add(Y), l.add(ne), r.isAnimationEnabled() && Y.setClipPath(wQe(Y.getBoundingRect(), r, function() { + Y.removeClipPath(); + })); + } else { + var ne = I[E]; + Y = ne.childAt(0), l.add(ne), C[_] = ne, ia(Y, { + shape: { + points: w, + stackedOnPoints: x + } + }, r), Lp(Y); + } + Ec(Y, Ll(r), { + labelDataIndex: R[M - 1], + defaultText: a.getName(R[M - 1]), + inheritColor: b.fill + }, { + normal: { + verticalAlign: "middle" + // align: 'right' + } + }), Y.setTextConfig({ + position: null, + local: !0 + }); + var fe = Y.getTextContent(); + fe && (fe.x = X.x - ae, fe.y = X.y0 + X.y / 2), Y.useStyle(b), a.setItemGraphicEl(_, Y), bc(Y, r), xs(Y, J.get("focus"), J.get("blurScope"), J.get("disabled")); + } + this._layersSeries = u, this._layers = C; + }, t.type = "themeRiver", t; + }(Ya) +); +function wQe(e, t, r) { + var n = new Xi({ + shape: { + x: e.x - 10, + y: e.y - 10, + width: 0, + height: e.height + 20 + } + }); + return Po(n, { + shape: { + x: e.x - 50, + width: e.width + 100, + height: e.height + 20 + } + }, t, r), n; +} +const IQe = TQe; +var y3 = 2, xQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r) { + e.prototype.init.apply(this, arguments), this.legendVisualProvider = new kD(Ar(this.getData, this), Ar(this.getRawData, this)); + }, t.prototype.fixData = function(r) { + var n = r.length, i = {}, a = GH(r, function(v) { + return i.hasOwnProperty(v[0] + "") || (i[v[0] + ""] = -1), v[2]; + }), o = []; + a.buckets.each(function(v, y) { + o.push({ + name: y, + dataList: v + }); + }); + for (var l = o.length, u = 0; u < l; ++u) { + for (var d = o[u].name, f = 0; f < o[u].dataList.length; ++f) { + var g = o[u].dataList[f][0] + ""; + i[g] = u; + } + for (var g in i) + i.hasOwnProperty(g) && i[g] !== u && (i[g] = u, r[n] = [g, 0, d], n++); + } + return r; + }, t.prototype.getInitialData = function(r, n) { + for (var i = this.getReferringComponents("singleAxis", tl).models[0], a = i.get("type"), o = Ma(r.data, function(C) { + return C[2] !== void 0; + }), l = this.fixData(o || []), u = [], d = this.nameMap = $r(), f = 0, g = 0; g < l.length; ++g) + u.push(l[g][y3]), d.get(l[g][y3]) || (d.set(l[g][y3], f), f++); + var v = II(l, { + coordDimensions: ["single"], + dimensionsDefine: [{ + name: "time", + type: UL(a) + }, { + name: "value", + type: "float" + }, { + name: "name", + type: "ordinal" + }], + encodeDefine: { + single: 0, + value: 1, + itemName: 2 + } + }).dimensions, y = new Ql(v, this); + return y.initData(l), y; + }, t.prototype.getLayerSeries = function() { + for (var r = this.getData(), n = r.count(), i = [], a = 0; a < n; ++a) + i[a] = a; + var o = r.mapDimension("single"), l = GH(i, function(d) { + return r.get("name", d); + }), u = []; + return l.buckets.each(function(d, f) { + d.sort(function(g, v) { + return r.get(o, g) - r.get(o, v); + }), u.push({ + name: f, + indices: d + }); + }), u; + }, t.prototype.getAxisTooltipData = function(r, n, i) { + qt(r) || (r = r ? [r] : []); + for (var a = this.getData(), o = this.getLayerSeries(), l = [], u = o.length, d, f = 0; f < u; ++f) { + for (var g = Number.MAX_VALUE, v = -1, y = o[f].indices.length, C = 0; C < y; ++C) { + var A = a.get(r[0], o[f].indices[C]), S = Math.abs(A - n); + S <= g && (d = A, g = S, v = o[f].indices[C]); + } + l.push(v); + } + return { + dataIndices: l, + nestestValue: d + }; + }, t.prototype.formatTooltip = function(r, n, i) { + var a = this.getData(), o = a.getName(r), l = a.get(a.mapDimension("value"), r); + return Fl("nameValue", { + name: o, + value: l + }); + }, t.type = "series.themeRiver", t.dependencies = ["singleAxis"], t.defaultOption = { + // zlevel: 0, + z: 2, + colorBy: "data", + coordinateSystem: "singleAxis", + // gap in axis's orthogonal orientation + boundaryGap: ["10%", "10%"], + // legendHoverLink: true, + singleAxisIndex: 0, + animationEasing: "linear", + label: { + margin: 4, + show: !0, + position: "left", + fontSize: 11 + }, + emphasis: { + label: { + show: !0 + } + } + }, t; + }(fo) +); +const AQe = xQe; +function RQe(e, t) { + e.eachSeriesByType("themeRiver", function(r) { + var n = r.getData(), i = r.coordinateSystem, a = {}, o = i.getRect(); + a.rect = o; + var l = r.get("boundaryGap"), u = i.getAxis(); + if (a.boundaryGap = l, u.orient === "horizontal") { + l[0] = yr(l[0], o.height), l[1] = yr(l[1], o.height); + var d = o.height - l[0] - l[1]; + rle(n, r, d); + } else { + l[0] = yr(l[0], o.width), l[1] = yr(l[1], o.width); + var f = o.width - l[0] - l[1]; + rle(n, r, f); + } + n.setLayout("layoutInfo", a); + }); +} +function rle(e, t, r) { + if (e.count()) + for (var n = t.coordinateSystem, i = t.getLayerSeries(), a = e.mapDimension("single"), o = e.mapDimension("value"), l = er(i, function(S) { + return er(S.indices, function(_) { + var E = n.dataToPoint(e.get(a, _)); + return E[1] = e.get(o, _), E; + }); + }), u = DQe(l), d = u.y0, f = r / u.max, g = i.length, v = i[0].indices.length, y, C = 0; C < v; ++C) { + y = d[C] * f, e.setItemLayout(i[0].indices[C], { + layerIndex: 0, + x: l[0][C][0], + y0: y, + y: l[0][C][1] * f + }); + for (var A = 1; A < g; ++A) + y += l[A - 1][C][1] * f, e.setItemLayout(i[A].indices[C], { + layerIndex: A, + x: l[A][C][0], + y0: y, + y: l[A][C][1] * f + }); + } +} +function DQe(e) { + for (var t = e.length, r = e[0].length, n = [], i = [], a = 0, o = 0; o < r; ++o) { + for (var l = 0, u = 0; u < t; ++u) + l += e[u][o][1]; + l > a && (a = l), n.push(l); + } + for (var d = 0; d < r; ++d) + i[d] = (a - n[d]) / 2; + a = 0; + for (var f = 0; f < r; ++f) { + var g = n[f] + i[f]; + g > a && (a = g); + } + return { + y0: i, + max: a + }; +} +function OQe(e) { + e.registerChartView(IQe), e.registerSeriesModel(AQe), e.registerLayout(RQe), e.registerProcessor(MD("themeRiver")); +} +var MQe = 2, kQe = 4, PQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i, a) { + var o = e.call(this) || this; + o.z2 = MQe, o.textConfig = { + inside: !0 + }, Tn(o).seriesIndex = n.seriesIndex; + var l = new Hi({ + z2: kQe, + silent: r.getModel().get(["label", "silent"]) + }); + return o.setTextContent(l), o.updateData(!0, r, n, i, a), o; + } + return t.prototype.updateData = function(r, n, i, a, o) { + this.node = n, n.piece = this, i = i || this._seriesModel, a = a || this._ecModel; + var l = this; + Tn(l).dataIndex = n.dataIndex; + var u = n.getModel(), d = u.getModel("emphasis"), f = n.getLayout(), g = $t({}, f); + g.label = null; + var v = n.getVisual("style"); + v.lineJoin = "bevel"; + var y = n.getVisual("decal"); + y && (v.decal = Vw(y, o)); + var C = jb(u.getModel("itemStyle"), g, !0); + $t(g, C), Ee(Lu, function(E) { + var I = l.ensureState(E), w = u.getModel([E, "itemStyle"]); + I.style = w.getItemStyle(); + var x = jb(w, g); + x && (I.shape = x); + }), r ? (l.setShape(g), l.shape.r = f.r0, Po(l, { + shape: { + r: f.r + } + }, i, n.dataIndex)) : (ia(l, { + shape: g + }, i), Lp(l)), l.useStyle(v), this._updateLabel(i); + var A = u.getShallow("cursor"); + A && l.attr("cursor", A), this._seriesModel = i || this._seriesModel, this._ecModel = a || this._ecModel; + var S = d.get("focus"), _ = S === "ancestor" ? n.getAncestorsIndices() : S === "descendant" ? n.getDescendantIndices() : S; + xs(this, _, d.get("blurScope"), d.get("disabled")); + }, t.prototype._updateLabel = function(r) { + var n = this, i = this.node.getModel(), a = i.getModel("label"), o = this.node.getLayout(), l = o.endAngle - o.startAngle, u = (o.startAngle + o.endAngle) / 2, d = Math.cos(u), f = Math.sin(u), g = this, v = g.getTextContent(), y = this.node.dataIndex, C = a.get("minAngle") / 180 * Math.PI, A = a.get("show") && !(C != null && Math.abs(l) < C); + v.ignore = !A, Ee(gR, function(_) { + var E = _ === "normal" ? i.getModel("label") : i.getModel([_, "label"]), I = _ === "normal", w = I ? v : v.ensureState(_), x = r.getFormattedLabel(y, _); + I && (x = x || n.node.name), w.style = uo(E, {}, null, _ !== "normal", !0), x && (w.style.text = x); + var b = E.get("show"); + b != null && !I && (w.ignore = !b); + var R = S(E, "position"), M = I ? g : g.states[_], O = M.style.fill; + M.textConfig = { + outsideFill: E.get("color") === "inherit" ? O : null, + inside: R !== "outside" + }; + var P, B = S(E, "distance") || 0, H = S(E, "align"), Y = S(E, "rotate"), X = Math.PI * 0.5, ee = Math.PI * 1.5, ae = cd(Y === "tangential" ? Math.PI / 2 - u : u), J = ae > X && !Uw(ae - X) && ae < ee; + R === "outside" ? (P = o.r + B, H = J ? "right" : "left") : !H || H === "center" ? (l === 2 * Math.PI && o.r0 === 0 ? P = 0 : P = (o.r + o.r0) / 2, H = "center") : H === "left" ? (P = o.r0 + B, H = J ? "right" : "left") : H === "right" && (P = o.r - B, H = J ? "left" : "right"), w.style.align = H, w.style.verticalAlign = S(E, "verticalAlign") || "middle", w.x = P * d + o.cx, w.y = P * f + o.cy; + var ne = 0; + Y === "radial" ? ne = cd(-u) + (J ? Math.PI : 0) : Y === "tangential" ? ne = cd(Math.PI / 2 - u) + (J ? Math.PI : 0) : Qi(Y) && (ne = Y * Math.PI / 180), w.rotation = cd(ne); + }); + function S(_, E) { + var I = _.get(E); + return I == null ? a.get(E) : I; + } + v.dirtyStyle(); + }, t; + }(Fu) +); +const nle = PQe; +var HW = "sunburstRootToNode", ile = "sunburstHighlight", NQe = "sunburstUnhighlight"; +function LQe(e) { + e.registerAction({ + type: HW, + update: "updateView" + }, function(t, r) { + r.eachComponent({ + mainType: "series", + subType: "sunburst", + query: t + }, n); + function n(i, a) { + var o = RR(t, [HW], i); + if (o) { + var l = i.getViewRoot(); + l && (t.direction = j9(l, o.node) ? "rollUp" : "drillDown"), i.resetViewRoot(o.node); + } + } + }), e.registerAction({ + type: ile, + update: "none" + }, function(t, r, n) { + t = $t({}, t), r.eachComponent({ + mainType: "series", + subType: "sunburst", + query: t + }, i); + function i(a) { + var o = RR(t, [ile], a); + o && (t.dataIndex = o.node.dataIndex); + } + n.dispatchAction($t(t, { + type: "highlight" + })); + }), e.registerAction({ + type: NQe, + update: "updateView" + }, function(t, r, n) { + t = $t({}, t), n.dispatchAction($t(t, { + type: "downplay" + })); + }); +} +var FQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i, a) { + var o = this; + this.seriesModel = r, this.api = i, this.ecModel = n; + var l = r.getData(), u = l.tree.root, d = r.getViewRoot(), f = this.group, g = r.get("renderLabelForZeroData"), v = []; + d.eachNode(function(E) { + v.push(E); + }); + var y = this._oldChildren || []; + C(v, y), _(u, d), this._initEvents(), this._oldChildren = v; + function C(E, I) { + if (E.length === 0 && I.length === 0) + return; + new Gm(I, E, w, w).add(x).update(x).remove(Ln(x, null)).execute(); + function w(b) { + return b.getId(); + } + function x(b, R) { + var M = b == null ? null : E[b], O = R == null ? null : I[R]; + A(M, O); + } + } + function A(E, I) { + if (!g && E && !E.getValue() && (E = null), E !== u && I !== u) { + if (I && I.piece) + E ? (I.piece.updateData(!1, E, r, n, i), l.setItemGraphicEl(E.dataIndex, I.piece)) : S(I); + else if (E) { + var w = new nle(E, r, n, i); + f.add(w), l.setItemGraphicEl(E.dataIndex, w); + } + } + } + function S(E) { + E && E.piece && (f.remove(E.piece), E.piece = null); + } + function _(E, I) { + I.depth > 0 ? (o.virtualPiece ? o.virtualPiece.updateData(!1, E, r, n, i) : (o.virtualPiece = new nle(E, r, n, i), f.add(o.virtualPiece)), I.piece.off("click"), o.virtualPiece.on("click", function(w) { + o._rootToNode(I.parentNode); + })) : o.virtualPiece && (f.remove(o.virtualPiece), o.virtualPiece = null); + } + }, t.prototype._initEvents = function() { + var r = this; + this.group.off("click"), this.group.on("click", function(n) { + var i = !1, a = r.seriesModel.getViewRoot(); + a.eachNode(function(o) { + if (!i && o.piece && o.piece === n.target) { + var l = o.getModel().get("nodeClick"); + if (l === "rootToNode") + r._rootToNode(o); + else if (l === "link") { + var u = o.getModel(), d = u.get("link"); + if (d) { + var f = u.get("target", !0) || "_blank"; + RL(d, f); + } + } + i = !0; + } + }); + }); + }, t.prototype._rootToNode = function(r) { + r !== this.seriesModel.getViewRoot() && this.api.dispatchAction({ + type: HW, + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: r + }); + }, t.prototype.containPoint = function(r, n) { + var i = n.getData(), a = i.getItemLayout(0); + if (a) { + var o = r[0] - a.cx, l = r[1] - a.cy, u = Math.sqrt(o * o + l * l); + return u <= a.r && u >= a.r0; + } + }, t.type = "sunburst", t; + }(Ya) +); +const BQe = FQe; +var UQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.ignoreStyleOnData = !0, r; + } + return t.prototype.getInitialData = function(r, n) { + var i = { + name: r.name, + children: r.data + }; + ibe(i); + var a = this._levelModels = er(r.levels || [], function(u) { + return new Wa(u, this, n); + }, this), o = U9.createTree(i, this, l); + function l(u) { + u.wrapMethod("getItemModel", function(d, f) { + var g = o.getNodeByDataIndex(f), v = a[g.depth]; + return v && (d.parentModel = v), d; + }); + } + return o.data; + }, t.prototype.optionUpdated = function() { + this.resetViewRoot(); + }, t.prototype.getDataParams = function(r) { + var n = e.prototype.getDataParams.apply(this, arguments), i = this.getData().tree.getNodeByDataIndex(r); + return n.treePathInfo = eB(i, this), n; + }, t.prototype.getLevelModel = function(r) { + return this._levelModels && this._levelModels[r.depth]; + }, t.prototype.getViewRoot = function() { + return this._viewRoot; + }, t.prototype.resetViewRoot = function(r) { + r ? this._viewRoot = r : r = this._viewRoot; + var n = this.getRawData().tree.root; + (!r || r !== n && !n.contains(r)) && (this._viewRoot = n); + }, t.prototype.enableAriaDecal = function() { + lSe(this); + }, t.type = "series.sunburst", t.defaultOption = { + // zlevel: 0, + z: 2, + // 默认全局居中 + center: ["50%", "50%"], + radius: [0, "75%"], + // 默认顺时针 + clockwise: !0, + startAngle: 90, + // 最小角度改为0 + minAngle: 0, + // If still show when all data zero. + stillShowZeroSum: !0, + // 'rootToNode', 'link', or false + nodeClick: "rootToNode", + renderLabelForZeroData: !1, + label: { + // could be: 'radial', 'tangential', or 'none' + rotate: "radial", + show: !0, + opacity: 1, + // 'left' is for inner side of inside, and 'right' is for outer + // side for inside + align: "center", + position: "inside", + distance: 5, + silent: !0 + }, + itemStyle: { + borderWidth: 1, + borderColor: "white", + borderType: "solid", + shadowBlur: 0, + shadowColor: "rgba(0, 0, 0, 0.2)", + shadowOffsetX: 0, + shadowOffsetY: 0, + opacity: 1 + }, + emphasis: { + focus: "descendant" + }, + blur: { + itemStyle: { + opacity: 0.2 + }, + label: { + opacity: 0.1 + } + }, + // Animation type can be expansion, scale. + animationType: "expansion", + animationDuration: 1e3, + animationDurationUpdate: 500, + data: [], + /** + * Sort order. + * + * Valid values: 'desc', 'asc', null, or callback function. + * 'desc' and 'asc' for descend and ascendant order; + * null for not sorting; + * example of callback function: + * function(nodeA, nodeB) { + * return nodeA.getValue() - nodeB.getValue(); + * } + */ + sort: "desc" + }, t; + }(fo) +); +function ibe(e) { + var t = 0; + Ee(e.children, function(n) { + ibe(n); + var i = n.value; + qt(i) && (i = i[0]), t += i; + }); + var r = e.value; + qt(r) && (r = r[0]), (r == null || isNaN(r)) && (r = t), r < 0 && (r = 0), qt(e.value) ? e.value[0] = r : e.value = r; +} +const jQe = UQe; +var ale = Math.PI / 180; +function $Qe(e, t, r) { + t.eachSeriesByType(e, function(n) { + var i = n.get("center"), a = n.get("radius"); + qt(a) || (a = [0, a]), qt(i) || (i = [i, i]); + var o = r.getWidth(), l = r.getHeight(), u = Math.min(o, l), d = yr(i[0], o), f = yr(i[1], l), g = yr(a[0], u / 2), v = yr(a[1], u / 2), y = -n.get("startAngle") * ale, C = n.get("minAngle") * ale, A = n.getData().tree.root, S = n.getViewRoot(), _ = S.depth, E = n.get("sort"); + E != null && abe(S, E); + var I = 0; + Ee(S.children, function(ae) { + !isNaN(ae.getValue()) && I++; + }); + var w = S.getValue(), x = Math.PI / (w || I) * 2, b = S.depth > 0, R = S.height - (b ? -1 : 1), M = (v - g) / (R || 1), O = n.get("clockwise"), P = n.get("stillShowZeroSum"), B = O ? 1 : -1, H = function(ae, J) { + if (ae) { + var ne = J; + if (ae !== A) { + var fe = ae.getValue(), de = w === 0 && P ? x : fe * x; + de < C && (de = C), ne = J + B * de; + var Te = ae.depth - _ - (b ? -1 : 1), be = g + M * Te, Ve = g + M * (Te + 1), pe = n.getLevelModel(ae); + if (pe) { + var Be = pe.get("r0", !0), Ue = pe.get("r", !0), Qe = pe.get("radius", !0); + Qe != null && (Be = Qe[0], Ue = Qe[1]), Be != null && (be = yr(Be, u / 2)), Ue != null && (Ve = yr(Ue, u / 2)); + } + ae.setLayout({ + angle: de, + startAngle: J, + endAngle: ne, + clockwise: O, + cx: d, + cy: f, + r0: be, + r: Ve + }); + } + if (ae.children && ae.children.length) { + var Re = 0; + Ee(ae.children, function(Ne) { + Re += H(Ne, J + Re); + }); + } + return ne - J; + } + }; + if (b) { + var Y = g, X = g + M, ee = Math.PI * 2; + A.setLayout({ + angle: ee, + startAngle: y, + endAngle: y + ee, + clockwise: O, + cx: d, + cy: f, + r0: Y, + r: X + }); + } + H(S, y); + }); +} +function abe(e, t) { + var r = e.children || []; + e.children = VQe(r, t), r.length && Ee(e.children, function(n) { + abe(n, t); + }); +} +function VQe(e, t) { + if (Kr(t)) { + var r = er(e, function(i, a) { + var o = i.getValue(); + return { + params: { + depth: i.depth, + height: i.height, + dataIndex: i.dataIndex, + getValue: function() { + return o; + } + }, + index: a + }; + }); + return r.sort(function(i, a) { + return t(i.params, a.params); + }), er(r, function(i) { + return e[i.index]; + }); + } else { + var n = t === "asc"; + return e.sort(function(i, a) { + var o = (i.getValue() - a.getValue()) * (n ? 1 : -1); + return o === 0 ? (i.dataIndex - a.dataIndex) * (n ? -1 : 1) : o; + }); + } +} +function zQe(e) { + var t = {}; + function r(n, i, a) { + for (var o = n; o && o.depth > 1; ) + o = o.parentNode; + var l = i.getColorFromPalette(o.name || o.dataIndex + "", t); + return n.depth > 1 && wr(l) && (l = mL(l, (n.depth - 1) / (a - 1) * 0.5)), l; + } + e.eachSeriesByType("sunburst", function(n) { + var i = n.getData(), a = i.tree; + a.eachNode(function(o) { + var l = o.getModel(), u = l.getModel("itemStyle").getItemStyle(); + u.fill || (u.fill = r(o, n, a.root.height)); + var d = i.ensureUniqueItemVisual(o.dataIndex, "style"); + $t(d, u); + }); + }); +} +function HQe(e) { + e.registerChartView(BQe), e.registerSeriesModel(jQe), e.registerLayout(Ln($Qe, "sunburst")), e.registerProcessor(Ln(MD, "sunburst")), e.registerVisual(zQe), LQe(e); +} +var ole = { + color: "fill", + borderColor: "stroke" +}, WQe = { + symbol: 1, + symbolSize: 1, + symbolKeepAspect: 1, + legendIcon: 1, + visualMeta: 1, + liftZ: 1, + decal: 1 +}, Fm = ea(), GQe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.optionUpdated = function() { + this.currentZLevel = this.get("zlevel", !0), this.currentZ = this.get("z", !0); + }, t.prototype.getInitialData = function(r, n) { + return fv(null, this); + }, t.prototype.getDataParams = function(r, n, i) { + var a = e.prototype.getDataParams.call(this, r, n); + return i && (a.info = Fm(i).info), a; + }, t.type = "series.custom", t.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], t.defaultOption = { + coordinateSystem: "cartesian2d", + // zlevel: 0, + z: 2, + legendHoverLink: !0, + // Custom series will not clip by default. + // Some case will use custom series to draw label + // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight + clip: !1 + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + // Polar coordinate system + // polarIndex: 0, + // Geo coordinate system + // geoIndex: 0, + }, t; + }(fo) +); +const YQe = GQe; +function XQe(e, t) { + return t = t || [0, 0], er(["x", "y"], function(r, n) { + var i = this.getAxis(r), a = t[n], o = e[n] / 2; + return i.type === "category" ? i.getBandWidth() : Math.abs(i.dataToCoord(a - o) - i.dataToCoord(a + o)); + }, this); +} +function KQe(e) { + var t = e.master.getRect(); + return { + coordSys: { + // The name exposed to user is always 'cartesian2d' but not 'grid'. + type: "cartesian2d", + x: t.x, + y: t.y, + width: t.width, + height: t.height + }, + api: { + coord: function(r) { + return e.dataToPoint(r); + }, + size: Ar(XQe, e) + } + }; +} +function ZQe(e, t) { + return t = t || [0, 0], er([0, 1], function(r) { + var n = t[r], i = e[r] / 2, a = [], o = []; + return a[r] = n - i, o[r] = n + i, a[1 - r] = o[1 - r] = t[1 - r], Math.abs(this.dataToPoint(a)[r] - this.dataToPoint(o)[r]); + }, this); +} +function qQe(e) { + var t = e.getBoundingRect(); + return { + coordSys: { + type: "geo", + x: t.x, + y: t.y, + width: t.width, + height: t.height, + zoom: e.getZoom() + }, + api: { + coord: function(r) { + return e.dataToPoint(r); + }, + size: Ar(ZQe, e) + } + }; +} +function JQe(e, t) { + var r = this.getAxis(), n = t instanceof Array ? t[0] : t, i = (e instanceof Array ? e[0] : e) / 2; + return r.type === "category" ? r.getBandWidth() : Math.abs(r.dataToCoord(n - i) - r.dataToCoord(n + i)); +} +function QQe(e) { + var t = e.getRect(); + return { + coordSys: { + type: "singleAxis", + x: t.x, + y: t.y, + width: t.width, + height: t.height + }, + api: { + coord: function(r) { + return e.dataToPoint(r); + }, + size: Ar(JQe, e) + } + }; +} +function eet(e, t) { + return t = t || [0, 0], er(["Radius", "Angle"], function(r, n) { + var i = "get" + r + "Axis", a = this[i](), o = t[n], l = e[n] / 2, u = a.type === "category" ? a.getBandWidth() : Math.abs(a.dataToCoord(o - l) - a.dataToCoord(o + l)); + return r === "Angle" && (u = u * Math.PI / 180), u; + }, this); +} +function tet(e) { + var t = e.getRadiusAxis(), r = e.getAngleAxis(), n = t.getExtent(); + return n[0] > n[1] && n.reverse(), { + coordSys: { + type: "polar", + cx: e.cx, + cy: e.cy, + r: n[1], + r0: n[0] + }, + api: { + coord: function(i) { + var a = t.dataToRadius(i[0]), o = r.dataToAngle(i[1]), l = e.coordToPoint([a, o]); + return l.push(a, o * Math.PI / 180), l; + }, + size: Ar(eet, e) + } + }; +} +function ret(e) { + var t = e.getRect(), r = e.getRangeInfo(); + return { + coordSys: { + type: "calendar", + x: t.x, + y: t.y, + width: t.width, + height: t.height, + cellWidth: e.getCellWidth(), + cellHeight: e.getCellHeight(), + rangeInfo: { + start: r.start, + end: r.end, + weeks: r.weeks, + dayCount: r.allDay + } + }, + api: { + coord: function(n, i) { + return e.dataToPoint(n, i); + } + } + }; +} +function obe(e, t, r, n) { + return e && (e.legacy || e.legacy !== !1 && !r && !n && t !== "tspan" && (t === "text" || Lr(e, "text"))); +} +function sbe(e, t, r) { + var n = e, i, a, o; + if (t === "text") + o = n; + else { + o = {}, Lr(n, "text") && (o.text = n.text), Lr(n, "rich") && (o.rich = n.rich), Lr(n, "textFill") && (o.fill = n.textFill), Lr(n, "textStroke") && (o.stroke = n.textStroke), Lr(n, "fontFamily") && (o.fontFamily = n.fontFamily), Lr(n, "fontSize") && (o.fontSize = n.fontSize), Lr(n, "fontStyle") && (o.fontStyle = n.fontStyle), Lr(n, "fontWeight") && (o.fontWeight = n.fontWeight), a = { + type: "text", + style: o, + // ec4 does not support rectText trigger. + // And when text position is different in normal and emphasis + // => hover text trigger emphasis; + // => text position changed, leave mouse pointer immediately; + // That might cause incorrect state. + silent: !0 + }, i = {}; + var l = Lr(n, "textPosition"); + r ? i.position = l ? n.textPosition : "inside" : l && (i.position = n.textPosition), Lr(n, "textPosition") && (i.position = n.textPosition), Lr(n, "textOffset") && (i.offset = n.textOffset), Lr(n, "textRotation") && (i.rotation = n.textRotation), Lr(n, "textDistance") && (i.distance = n.textDistance); + } + return sle(o, e), Ee(o.rich, function(u) { + sle(u, u); + }), { + textConfig: i, + textContent: a + }; +} +function sle(e, t) { + t && (t.font = t.textFont || t.font, Lr(t, "textStrokeWidth") && (e.lineWidth = t.textStrokeWidth), Lr(t, "textAlign") && (e.align = t.textAlign), Lr(t, "textVerticalAlign") && (e.verticalAlign = t.textVerticalAlign), Lr(t, "textLineHeight") && (e.lineHeight = t.textLineHeight), Lr(t, "textWidth") && (e.width = t.textWidth), Lr(t, "textHeight") && (e.height = t.textHeight), Lr(t, "textBackgroundColor") && (e.backgroundColor = t.textBackgroundColor), Lr(t, "textPadding") && (e.padding = t.textPadding), Lr(t, "textBorderColor") && (e.borderColor = t.textBorderColor), Lr(t, "textBorderWidth") && (e.borderWidth = t.textBorderWidth), Lr(t, "textBorderRadius") && (e.borderRadius = t.textBorderRadius), Lr(t, "textBoxShadowColor") && (e.shadowColor = t.textBoxShadowColor), Lr(t, "textBoxShadowBlur") && (e.shadowBlur = t.textBoxShadowBlur), Lr(t, "textBoxShadowOffsetX") && (e.shadowOffsetX = t.textBoxShadowOffsetX), Lr(t, "textBoxShadowOffsetY") && (e.shadowOffsetY = t.textBoxShadowOffsetY)); +} +function lle(e, t, r) { + var n = e; + n.textPosition = n.textPosition || r.position || "inside", r.offset != null && (n.textOffset = r.offset), r.rotation != null && (n.textRotation = r.rotation), r.distance != null && (n.textDistance = r.distance); + var i = n.textPosition.indexOf("inside") >= 0, a = e.fill || "#000"; + cle(n, t); + var o = n.textFill == null; + return i ? o && (n.textFill = r.insideFill || "#fff", !n.textStroke && r.insideStroke && (n.textStroke = r.insideStroke), !n.textStroke && (n.textStroke = a), n.textStrokeWidth == null && (n.textStrokeWidth = 2)) : (o && (n.textFill = e.fill || r.outsideFill || "#000"), !n.textStroke && r.outsideStroke && (n.textStroke = r.outsideStroke)), n.text = t.text, n.rich = t.rich, Ee(t.rich, function(l) { + cle(l, l); + }), n; +} +function cle(e, t) { + t && (Lr(t, "fill") && (e.textFill = t.fill), Lr(t, "stroke") && (e.textStroke = t.fill), Lr(t, "lineWidth") && (e.textStrokeWidth = t.lineWidth), Lr(t, "font") && (e.font = t.font), Lr(t, "fontStyle") && (e.fontStyle = t.fontStyle), Lr(t, "fontWeight") && (e.fontWeight = t.fontWeight), Lr(t, "fontSize") && (e.fontSize = t.fontSize), Lr(t, "fontFamily") && (e.fontFamily = t.fontFamily), Lr(t, "align") && (e.textAlign = t.align), Lr(t, "verticalAlign") && (e.textVerticalAlign = t.verticalAlign), Lr(t, "lineHeight") && (e.textLineHeight = t.lineHeight), Lr(t, "width") && (e.textWidth = t.width), Lr(t, "height") && (e.textHeight = t.height), Lr(t, "backgroundColor") && (e.textBackgroundColor = t.backgroundColor), Lr(t, "padding") && (e.textPadding = t.padding), Lr(t, "borderColor") && (e.textBorderColor = t.borderColor), Lr(t, "borderWidth") && (e.textBorderWidth = t.borderWidth), Lr(t, "borderRadius") && (e.textBorderRadius = t.borderRadius), Lr(t, "shadowColor") && (e.textBoxShadowColor = t.shadowColor), Lr(t, "shadowBlur") && (e.textBoxShadowBlur = t.shadowBlur), Lr(t, "shadowOffsetX") && (e.textBoxShadowOffsetX = t.shadowOffsetX), Lr(t, "shadowOffsetY") && (e.textBoxShadowOffsetY = t.shadowOffsetY), Lr(t, "textShadowColor") && (e.textShadowColor = t.textShadowColor), Lr(t, "textShadowBlur") && (e.textShadowBlur = t.textShadowBlur), Lr(t, "textShadowOffsetX") && (e.textShadowOffsetX = t.textShadowOffsetX), Lr(t, "textShadowOffsetY") && (e.textShadowOffsetY = t.textShadowOffsetY)); +} +var lbe = { + position: ["x", "y"], + scale: ["scaleX", "scaleY"], + origin: ["originX", "originY"] +}, ule = Ri(lbe); +Cf(av, function(e, t) { + return e[t] = 1, e; +}, {}); +av.join(", "); +var JL = ["", "style", "shape", "extra"], Gw = ea(); +function rY(e, t, r, n, i) { + var a = e + "Animation", o = pI(e, n, i) || {}, l = Gw(t).userDuring; + return o.duration > 0 && (o.during = l ? Ar(set, { + el: t, + userDuring: l + }) : null, o.setToFinal = !0, o.scope = e), $t(o, r[a]), o; +} +function PN(e, t, r, n) { + n = n || {}; + var i = n.dataIndex, a = n.isInit, o = n.clearStyle, l = r.isAnimationEnabled(), u = Gw(e), d = t.style; + u.userDuring = t.during; + var f = {}, g = {}; + if (uet(e, t, g), dle("shape", t, g), dle("extra", t, g), !a && l && (cet(e, t, f), hle("shape", e, t, f), hle("extra", e, t, f), het(e, t, d, f)), g.style = d, net(e, g, o), aet(e, t), l) + if (a) { + var v = {}; + Ee(JL, function(C) { + var A = C ? t[C] : t; + A && A.enterFrom && (C && (v[C] = v[C] || {}), $t(C ? v[C] : v, A.enterFrom)); + }); + var y = rY("enter", e, t, r, i); + y.duration > 0 && e.animateFrom(v, y); + } else + iet(e, t, i || 0, r, f); + cbe(e, t), d ? e.dirty() : e.markRedraw(); +} +function cbe(e, t) { + for (var r = Gw(e).leaveToProps, n = 0; n < JL.length; n++) { + var i = JL[n], a = i ? t[i] : t; + a && a.leaveTo && (r || (r = Gw(e).leaveToProps = {}), i && (r[i] = r[i] || {}), $t(i ? r[i] : r, a.leaveTo)); + } +} +function nB(e, t, r, n) { + if (e) { + var i = e.parent, a = Gw(e).leaveToProps; + if (a) { + var o = rY("update", e, t, r, 0); + o.done = function() { + i.remove(e), n && n(); + }, e.animateTo(a, o); + } else + i.remove(e), n && n(); + } +} +function Qb(e) { + return e === "all"; +} +function net(e, t, r) { + var n = t.style; + if (!e.isGroup && n) { + if (r) { + e.useStyle({}); + for (var i = e.animators, a = 0; a < i.length; a++) { + var o = i[a]; + o.targetName === "style" && o.changeTarget(e.style); + } + } + e.setStyle(n); + } + t && (t.style = null, t && e.attr(t), t.style = n); +} +function iet(e, t, r, n, i) { + if (i) { + var a = rY("update", e, t, n, r); + a.duration > 0 && e.animateFrom(i, a); + } +} +function aet(e, t) { + Lr(t, "silent") && (e.silent = t.silent), Lr(t, "ignore") && (e.ignore = t.ignore), e instanceof Tf && Lr(t, "invisible") && (e.invisible = t.invisible), e instanceof Ei && Lr(t, "autoBatch") && (e.autoBatch = t.autoBatch); +} +var Ug = {}, oet = { + // Usually other props do not need to be changed in animation during. + setTransform: function(e, t) { + return Ug.el[e] = t, this; + }, + getTransform: function(e) { + return Ug.el[e]; + }, + setShape: function(e, t) { + var r = Ug.el, n = r.shape || (r.shape = {}); + return n[e] = t, r.dirtyShape && r.dirtyShape(), this; + }, + getShape: function(e) { + var t = Ug.el.shape; + if (t) + return t[e]; + }, + setStyle: function(e, t) { + var r = Ug.el, n = r.style; + return n && (n[e] = t, r.dirtyStyle && r.dirtyStyle()), this; + }, + getStyle: function(e) { + var t = Ug.el.style; + if (t) + return t[e]; + }, + setExtra: function(e, t) { + var r = Ug.el.extra || (Ug.el.extra = {}); + return r[e] = t, this; + }, + getExtra: function(e) { + var t = Ug.el.extra; + if (t) + return t[e]; + } +}; +function set() { + var e = this, t = e.el; + if (t) { + var r = Gw(t).userDuring, n = e.userDuring; + if (r !== n) { + e.el = e.userDuring = null; + return; + } + Ug.el = t, n(oet); + } +} +function hle(e, t, r, n) { + var i = r[e]; + if (i) { + var a = t[e], o; + if (a) { + var l = r.transition, u = i.transition; + if (u) + if (!o && (o = n[e] = {}), Qb(u)) + $t(o, a); + else + for (var d = qa(u), f = 0; f < d.length; f++) { + var g = d[f], v = a[g]; + o[g] = v; + } + else if (Qb(l) || di(l, e) >= 0) { + !o && (o = n[e] = {}); + for (var y = Ri(a), f = 0; f < y.length; f++) { + var g = y[f], v = a[g]; + det(i[g], v) && (o[g] = v); + } + } + } + } +} +function dle(e, t, r) { + var n = t[e]; + if (n) + for (var i = r[e] = {}, a = Ri(n), o = 0; o < a.length; o++) { + var l = a[o]; + i[l] = A1(n[l]); + } +} +function cet(e, t, r) { + for (var n = t.transition, i = Qb(n) ? av : qa(n || []), a = 0; a < i.length; a++) { + var o = i[a]; + if (!(o === "style" || o === "shape" || o === "extra")) { + var l = e[o]; + r[o] = l; + } + } +} +function uet(e, t, r) { + for (var n = 0; n < ule.length; n++) { + var i = ule[n], a = lbe[i], o = t[i]; + o && (r[a[0]] = o[0], r[a[1]] = o[1]); + } + for (var n = 0; n < av.length; n++) { + var l = av[n]; + t[l] != null && (r[l] = t[l]); + } +} +function het(e, t, r, n) { + if (r) { + var i = e.style, a; + if (i) { + var o = r.transition, l = t.transition; + if (o && !Qb(o)) { + var u = qa(o); + !a && (a = n.style = {}); + for (var d = 0; d < u.length; d++) { + var f = u[d], g = i[f]; + a[f] = g; + } + } else if (e.getAnimationStyleProps && (Qb(l) || Qb(o) || di(l, "style") >= 0)) { + var v = e.getAnimationStyleProps(), y = v ? v.style : null; + if (y) { + !a && (a = n.style = {}); + for (var C = Ri(r), d = 0; d < C.length; d++) { + var f = C[d]; + if (y[f]) { + var g = i[f]; + a[f] = g; + } + } + } + } + } + } +} +function det(e, t) { + return Sc(e) ? e !== t : e != null && isFinite(e); +} +var ube = ea(), fet = ["percent", "easing", "shape", "style", "extra"]; +function hbe(e) { + e.stopAnimation("keyframe"), e.attr(ube(e)); +} +function QL(e, t, r) { + if (!(!r.isAnimationEnabled() || !t)) { + if (qt(t)) { + Ee(t, function(l) { + QL(e, l, r); + }); + return; + } + var n = t.keyframes, i = t.duration; + if (r && i == null) { + var a = pI("enter", r, 0); + i = a && a.duration; + } + if (!(!n || !i)) { + var o = ube(e); + Ee(JL, function(l) { + if (!(l && !e[l])) { + var u; + n.sort(function(d, f) { + return d.percent - f.percent; + }), Ee(n, function(d) { + var f = e.animators, g = l ? d[l] : d; + if (g) { + var v = Ri(g); + if (l || (v = Ma(v, function(A) { + return di(fet, A) < 0; + })), !!v.length) { + u || (u = e.animate(l, t.loop, !0), u.scope = "keyframe"); + for (var y = 0; y < f.length; y++) + f[y] !== u && f[y].targetName === u.targetName && f[y].stopTracks(v); + l && (o[l] = o[l] || {}); + var C = l ? o[l] : o; + Ee(v, function(A) { + C[A] = ((l ? e[l] : e) || {})[A]; + }), u.whenWithKeys(i * d.percent, g, v, d.easing); + } + } + }), u && u.delay(t.delay || 0).duration(i).start(t.easing); + } + }); + } + } +} +var Bm = "emphasis", J_ = "normal", nY = "blur", iY = "select", S0 = [J_, Bm, nY, iY], _3 = { + normal: ["itemStyle"], + emphasis: [Bm, "itemStyle"], + blur: [nY, "itemStyle"], + select: [iY, "itemStyle"] +}, S3 = { + normal: ["label"], + emphasis: [Bm, "label"], + blur: [nY, "label"], + select: [iY, "label"] +}, pet = ["x", "y"], get = "e\0\0", rf = { + normal: {}, + emphasis: {}, + blur: {}, + select: {} +}, vet = { + cartesian2d: KQe, + geo: qQe, + single: QQe, + polar: tet, + calendar: ret +}; +function WW(e) { + return e instanceof Ei; +} +function GW(e) { + return e instanceof Tf; +} +function met(e, t) { + t.copyTransform(e), GW(t) && GW(e) && (t.setStyle(e.style), t.z = e.z, t.z2 = e.z2, t.zlevel = e.zlevel, t.invisible = e.invisible, t.ignore = e.ignore, WW(t) && WW(e) && t.setShape(e.shape)); +} +var yet = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i, a) { + this._progressiveEls = null; + var o = this._data, l = r.getData(), u = this.group, d = fle(r, l, n, i); + o || u.removeAll(), l.diff(o).add(function(g) { + b3(i, null, g, d(g, a), r, u, l); + }).remove(function(g) { + var v = o.getItemGraphicEl(g); + v && nB(v, Fm(v).option, r); + }).update(function(g, v) { + var y = o.getItemGraphicEl(v); + b3(i, y, g, d(g, a), r, u, l); + }).execute(); + var f = r.get("clip", !0) ? DD(r.coordinateSystem, !1, r) : null; + f ? u.setClipPath(f) : u.removeClipPath(), this._data = l; + }, t.prototype.incrementalPrepareRender = function(r, n, i) { + this.group.removeAll(), this._data = null; + }, t.prototype.incrementalRender = function(r, n, i, a, o) { + var l = n.getData(), u = fle(n, l, i, a), d = this._progressiveEls = []; + function f(y) { + y.isGroup || (y.incremental = !0, y.ensureState("emphasis").hoverLayer = !0); + } + for (var g = r.start; g < r.end; g++) { + var v = b3(null, null, g, u(g, o), n, this.group, l); + v && (v.traverse(f), d.push(v)); + } + }, t.prototype.eachRendered = function(r) { + D0(this._progressiveEls || this.group, r); + }, t.prototype.filterForExposedEvent = function(r, n, i, a) { + var o = n.element; + if (o == null || i.name === o) + return !0; + for (; (i = i.__hostTarget || i.parent) && i !== this.group; ) + if (i.name === o) + return !0; + return !1; + }, t.type = "custom", t; + }(Ya) +); +const _et = yet; +function aY(e) { + var t = e.type, r; + if (t === "path") { + var n = e.shape, i = n.width != null && n.height != null ? { + x: n.x || 0, + y: n.y || 0, + width: n.width, + height: n.height + } : null, a = pbe(n); + r = _D(a, null, i, n.layout || "center"), Fm(r).customPathData = a; + } else if (t === "image") + r = new ec({}), Fm(r).customImagePath = e.style.image; + else if (t === "text") + r = new Hi({}); + else if (t === "group") + r = new _n(); + else { + if (t === "compoundPath") + throw new Error('"compoundPath" is not supported yet.'); + var o = DF(t); + if (!o) { + var l = ""; + Ca(l); + } + r = new o(); + } + return Fm(r).customGraphicType = t, r.name = e.name, r.z2EmphasisLift = 1, r.z2SelectLift = 1, r; +} +function oY(e, t, r, n, i, a, o) { + hbe(t); + var l = i && i.normal.cfg; + l && t.setTextConfig(l), n && n.transition == null && (n.transition = pet); + var u = n && n.style; + if (u) { + if (t.type === "text") { + var d = u; + Lr(d, "textFill") && (d.fill = d.textFill), Lr(d, "textStroke") && (d.stroke = d.textStroke); + } + var f = void 0, g = WW(t) ? u.decal : null; + e && g && (g.dirty = !0, f = Vw(g, e)), u.__decalPattern = f; + } + if (GW(t) && u) { + var f = u.__decalPattern; + f && (u.decal = f); + } + PN(t, n, a, { + dataIndex: r, + isInit: o, + clearStyle: !0 + }), QL(t, n.keyframeAnimation, a); +} +function dbe(e, t, r, n, i) { + var a = t.isGroup ? null : t, o = i && i[e].cfg; + if (a) { + var l = a.ensureState(e); + if (n === !1) { + var u = a.getState(e); + u && (u.style = null); + } else + l.style = n || null; + o && (l.textConfig = o), fE(a); + } +} +function bet(e, t, r) { + if (!e.isGroup) { + var n = e, i = r.currentZ, a = r.currentZLevel; + n.z = i, n.zlevel = a; + var o = t.z2; + o != null && (n.z2 = o || 0); + for (var l = 0; l < S0.length; l++) + Eet(n, t, S0[l]); + } +} +function Eet(e, t, r) { + var n = r === J_, i = n ? t : e2(t, r), a = i ? i.z2 : null, o; + a != null && (o = n ? e : e.ensureState(r), o.z2 = a || 0); +} +function fle(e, t, r, n) { + var i = e.get("renderItem"), a = e.coordinateSystem, o = {}; + a && (o = a.prepareCustoms ? a.prepareCustoms(a) : vet[a.type](a)); + for (var l = Jr({ + getWidth: n.getWidth, + getHeight: n.getHeight, + getZr: n.getZr, + getDevicePixelRatio: n.getDevicePixelRatio, + value: w, + style: b, + ordinalRawValue: x, + styleEmphasis: R, + visual: P, + barLayout: B, + currentSeriesIndices: H, + font: Y + }, o.api || {}), u = { + // The life cycle of context: current round of rendering. + // The global life cycle is probably not necessary, because + // user can store global status by themselves. + context: {}, + seriesId: e.id, + seriesName: e.name, + seriesIndex: e.seriesIndex, + coordSys: o.coordSys, + dataInsideLength: t.count(), + encode: Cet(e.getData()) + }, d, f, g = {}, v = {}, y = {}, C = {}, A = 0; A < S0.length; A++) { + var S = S0[A]; + y[S] = e.getModel(_3[S]), C[S] = e.getModel(S3[S]); + } + function _(X) { + return X === d ? f || (f = t.getItemModel(X)) : t.getItemModel(X); + } + function E(X, ee) { + return t.hasItemOption ? X === d ? g[ee] || (g[ee] = _(X).getModel(_3[ee])) : _(X).getModel(_3[ee]) : y[ee]; + } + function I(X, ee) { + return t.hasItemOption ? X === d ? v[ee] || (v[ee] = _(X).getModel(S3[ee])) : _(X).getModel(S3[ee]) : C[ee]; + } + return function(X, ee) { + return d = X, f = null, g = {}, v = {}, i && i(Jr({ + dataIndexInside: X, + dataIndex: t.getRawIndex(X), + // Can be used for optimization when zoom or roam. + actionType: ee ? ee.type : null + }, u), l); + }; + function w(X, ee) { + return ee == null && (ee = d), t.getStore().get(t.getDimensionIndex(X || 0), ee); + } + function x(X, ee) { + ee == null && (ee = d), X = X || 0; + var ae = t.getDimensionInfo(X); + if (!ae) { + var J = t.getDimensionIndex(X); + return J >= 0 ? t.getStore().get(J, ee) : void 0; + } + var ne = t.get(ae.name, ee), fe = ae && ae.ordinalMeta; + return fe ? fe.categories[ne] : ne; + } + function b(X, ee) { + ee == null && (ee = d); + var ae = t.getItemVisual(ee, "style"), J = ae && ae.fill, ne = ae && ae.opacity, fe = E(ee, J_).getItemStyle(); + J != null && (fe.fill = J), ne != null && (fe.opacity = ne); + var de = { + inheritColor: wr(J) ? J : "#000" + }, Te = I(ee, J_), be = uo(Te, null, de, !1, !0); + be.text = Te.getShallow("show") ? Fn(e.getFormattedLabel(ee, J_), zw(t, ee)) : null; + var Ve = xL(Te, de, !1); + return O(X, fe), fe = lle(fe, be, Ve), X && M(fe, X), fe.legacy = !0, fe; + } + function R(X, ee) { + ee == null && (ee = d); + var ae = E(ee, Bm).getItemStyle(), J = I(ee, Bm), ne = uo(J, null, null, !0, !0); + ne.text = J.getShallow("show") ? Ap(e.getFormattedLabel(ee, Bm), e.getFormattedLabel(ee, J_), zw(t, ee)) : null; + var fe = xL(J, null, !0); + return O(X, ae), ae = lle(ae, ne, fe), X && M(ae, X), ae.legacy = !0, ae; + } + function M(X, ee) { + for (var ae in ee) + Lr(ee, ae) && (X[ae] = ee[ae]); + } + function O(X, ee) { + X && (X.textFill && (ee.textFill = X.textFill), X.textPosition && (ee.textPosition = X.textPosition)); + } + function P(X, ee) { + if (ee == null && (ee = d), Lr(ole, X)) { + var ae = t.getItemVisual(ee, "style"); + return ae ? ae[ole[X]] : null; + } + if (Lr(WQe, X)) + return t.getItemVisual(ee, X); + } + function B(X) { + if (a.type === "cartesian2d") { + var ee = a.getBaseAxis(); + return S6e(Jr({ + axis: ee + }, X)); + } + } + function H() { + return r.getCurrentSeriesIndices(); + } + function Y(X) { + return P8(X, r); + } +} +function Cet(e) { + var t = {}; + return Ee(e.dimensions, function(r) { + var n = e.getDimensionInfo(r); + if (!n.isExtraCoord) { + var i = n.coordDim, a = t[i] = t[i] || []; + a[n.coordDimIndex] = e.getDimensionIndex(r); + } + }), t; +} +function b3(e, t, r, n, i, a, o) { + if (!n) { + a.remove(t); + return; + } + var l = sY(e, t, r, n, i, a); + return l && o.setItemGraphicEl(r, l), l && xs(l, n.focus, n.blurScope, n.emphasisDisabled), l; +} +function sY(e, t, r, n, i, a) { + var o = -1, l = t; + t && fbe(t, n, i) && (o = di(a.childrenRef(), t), t = null); + var u = !t, d = t; + d ? d.clearStates() : (d = aY(n), l && met(l, d)), n.morph === !1 ? d.disableMorphing = !0 : d.disableMorphing && (d.disableMorphing = !1), rf.normal.cfg = rf.normal.conOpt = rf.emphasis.cfg = rf.emphasis.conOpt = rf.blur.cfg = rf.blur.conOpt = rf.select.cfg = rf.select.conOpt = null, rf.isLegacy = !1, wet(d, r, n, i, u, rf), Tet(d, r, n, i, u), oY(e, d, r, n, rf, i, u), Lr(n, "info") && (Fm(d).info = n.info); + for (var f = 0; f < S0.length; f++) { + var g = S0[f]; + if (g !== J_) { + var v = e2(n, g), y = lY(n, v, g); + dbe(g, d, v, y, rf); + } + } + return bet(d, n, i), n.type === "group" && Iet(e, d, r, n, i), o >= 0 ? a.replaceAt(d, o) : a.add(d), d; +} +function fbe(e, t, r) { + var n = Fm(e), i = t.type, a = t.shape, o = t.style; + return ( + // Always create new if universal transition is enabled. + // Because we do transition after render. It needs to know what old element is. Replacement will loose it. + r.isUniversalTransitionEnabled() || i != null && i !== n.customGraphicType || i === "path" && Det(a) && pbe(a) !== n.customPathData || i === "image" && Lr(o, "image") && o.image !== n.customImagePath + ); +} +function Tet(e, t, r, n, i) { + var a = r.clipPath; + if (a === !1) + e && e.getClipPath() && e.removeClipPath(); + else if (a) { + var o = e.getClipPath(); + o && fbe(o, a, n) && (o = null), o || (o = aY(a), e.setClipPath(o)), oY(null, o, t, a, null, n, i); + } +} +function wet(e, t, r, n, i, a) { + if (!e.isGroup) { + ple(r, null, a), ple(r, Bm, a); + var o = a.normal.conOpt, l = a.emphasis.conOpt, u = a.blur.conOpt, d = a.select.conOpt; + if (o != null || l != null || d != null || u != null) { + var f = e.getTextContent(); + if (o === !1) + f && e.removeTextContent(); + else { + o = a.normal.conOpt = o || { + type: "text" + }, f ? f.clearStates() : (f = aY(o), e.setTextContent(f)), oY(null, f, t, o, null, n, i); + for (var g = o && o.style, v = 0; v < S0.length; v++) { + var y = S0[v]; + if (y !== J_) { + var C = a[y].conOpt; + dbe(y, f, C, lY(o, C, y), null); + } + } + g ? f.dirty() : f.markRedraw(); + } + } + } +} +function ple(e, t, r) { + var n = t ? e2(e, t) : e, i = t ? lY(e, n, Bm) : e.style, a = e.type, o = n ? n.textConfig : null, l = e.textContent, u = l ? t ? e2(l, t) : l : null; + if (i && // Because emphasis style has little info to detect legacy, + // if normal is legacy, emphasis is trade as legacy. + (r.isLegacy || obe(i, a, !!o, !!u))) { + r.isLegacy = !0; + var d = sbe(i, a, !t); + !o && d.textConfig && (o = d.textConfig), !u && d.textContent && (u = d.textContent); + } + if (!t && u) { + var f = u; + !f.type && (f.type = "text"); + } + var g = t ? r[t] : r.normal; + g.cfg = o, g.conOpt = u; +} +function e2(e, t) { + return t ? e ? e[t] : null : e; +} +function lY(e, t, r) { + var n = t && t.style; + return n == null && r === Bm && e && (n = e.styleEmphasis), n; +} +function Iet(e, t, r, n, i) { + var a = n.children, o = a ? a.length : 0, l = n.$mergeChildren, u = l === "byName" || n.diffChildrenByName, d = l === !1; + if (!(!o && !u && !d)) { + if (u) { + Aet({ + api: e, + oldChildren: t.children() || [], + newChildren: a || [], + dataIndex: r, + seriesModel: i, + group: t + }); + return; + } + d && t.removeAll(); + for (var f = 0; f < o; f++) { + var g = a[f], v = t.childAt(f); + g ? (g.ignore == null && (g.ignore = !1), sY(e, v, r, g, i, t)) : v.ignore = !0; + } + for (var y = t.childCount() - 1; y >= f; y--) { + var C = t.childAt(y); + xet(t, C, i); + } + } +} +function xet(e, t, r) { + t && nB(t, Fm(e).option, r); +} +function Aet(e) { + new Gm(e.oldChildren, e.newChildren, gle, gle, e).add(vle).update(vle).remove(Ret).execute(); +} +function gle(e, t) { + var r = e && e.name; + return r != null ? r : get + t; +} +function vle(e, t) { + var r = this.context, n = e != null ? r.newChildren[e] : null, i = t != null ? r.oldChildren[t] : null; + sY(r.api, i, r.dataIndex, n, r.seriesModel, r.group); +} +function Ret(e) { + var t = this.context, r = t.oldChildren[e]; + r && nB(r, Fm(r).option, t.seriesModel); +} +function pbe(e) { + return e && (e.pathData || e.d); +} +function Det(e) { + return e && (Lr(e, "pathData") || Lr(e, "d")); +} +function Oet(e) { + e.registerChartView(_et), e.registerSeriesModel(YQe); +} +var Ab = ea(), mle = cn, E3 = Ar, Met = ( + /** @class */ + function() { + function e() { + this._dragging = !1, this.animationThreshold = 15; + } + return e.prototype.render = function(t, r, n, i) { + var a = r.get("value"), o = r.get("status"); + if (this._axisModel = t, this._axisPointerModel = r, this._api = n, !(!i && this._lastValue === a && this._lastStatus === o)) { + this._lastValue = a, this._lastStatus = o; + var l = this._group, u = this._handle; + if (!o || o === "hide") { + l && l.hide(), u && u.hide(); + return; + } + l && l.show(), u && u.show(); + var d = {}; + this.makeElOption(d, a, t, r, n); + var f = d.graphicKey; + f !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = f; + var g = this._moveAnimation = this.determineAnimation(t, r); + if (!l) + l = this._group = new _n(), this.createPointerEl(l, d, t, r), this.createLabelEl(l, d, t, r), n.getZr().add(l); + else { + var v = Ln(yle, r, g); + this.updatePointerEl(l, d, v), this.updateLabelEl(l, d, v, r); + } + Sle(l, r, !0), this._renderHandle(a); + } + }, e.prototype.remove = function(t) { + this.clear(t); + }, e.prototype.dispose = function(t) { + this.clear(t); + }, e.prototype.determineAnimation = function(t, r) { + var n = r.get("animation"), i = t.axis, a = i.type === "category", o = r.get("snap"); + if (!o && !a) + return !1; + if (n === "auto" || n == null) { + var l = this.animationThreshold; + if (a && i.getBandWidth() > l) + return !0; + if (o) { + var u = M9(t).seriesDataCount, d = i.getExtent(); + return Math.abs(d[0] - d[1]) / u > l; + } + return !1; + } + return n === !0; + }, e.prototype.makeElOption = function(t, r, n, i, a) { + }, e.prototype.createPointerEl = function(t, r, n, i) { + var a = r.pointer; + if (a) { + var o = Ab(t).pointerEl = new DE[a.type](mle(r.pointer)); + t.add(o); + } + }, e.prototype.createLabelEl = function(t, r, n, i) { + if (r.label) { + var a = Ab(t).labelEl = new Hi(mle(r.label)); + t.add(a), _le(a, i); + } + }, e.prototype.updatePointerEl = function(t, r, n) { + var i = Ab(t).pointerEl; + i && r.pointer && (i.setStyle(r.pointer.style), n(i, { + shape: r.pointer.shape + })); + }, e.prototype.updateLabelEl = function(t, r, n, i) { + var a = Ab(t).labelEl; + a && (a.setStyle(r.label.style), n(a, { + // Consider text length change in vertical axis, animation should + // be used on shape, otherwise the effect will be weird. + // TODOTODO + // shape: elOption.label.shape, + x: r.label.x, + y: r.label.y + }), _le(a, i)); + }, e.prototype._renderHandle = function(t) { + if (!(this._dragging || !this.updateHandleTransform)) { + var r = this._axisPointerModel, n = this._api.getZr(), i = this._handle, a = r.getModel("handle"), o = r.get("status"); + if (!a.get("show") || !o || o === "hide") { + i && n.remove(i), this._handle = null; + return; + } + var l; + this._handle || (l = !0, i = this._handle = gI(a.get("icon"), { + cursor: "move", + draggable: !0, + onmousemove: function(d) { + zm(d.event); + }, + onmousedown: E3(this._onHandleDragMove, this, 0, 0), + drift: E3(this._onHandleDragMove, this), + ondragend: E3(this._onHandleDragEnd, this) + }), n.add(i)), Sle(i, r, !1), i.setStyle(a.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"])); + var u = a.get("size"); + qt(u) || (u = [u, u]), i.scaleX = u[0] / 2, i.scaleY = u[1] / 2, TI(this, "_doDispatchAxisPointer", a.get("throttle") || 0, "fixRate"), this._moveHandleToValue(t, l); + } + }, e.prototype._moveHandleToValue = function(t, r) { + yle(this._axisPointerModel, !r && this._moveAnimation, this._handle, C3(this.getHandleTransform(t, this._axisModel, this._axisPointerModel))); + }, e.prototype._onHandleDragMove = function(t, r) { + var n = this._handle; + if (n) { + this._dragging = !0; + var i = this.updateHandleTransform(C3(n), [t, r], this._axisModel, this._axisPointerModel); + this._payloadInfo = i, n.stopAnimation(), n.attr(C3(i)), Ab(n).lastProp = null, this._doDispatchAxisPointer(); + } + }, e.prototype._doDispatchAxisPointer = function() { + var t = this._handle; + if (t) { + var r = this._payloadInfo, n = this._axisModel; + this._api.dispatchAction({ + type: "updateAxisPointer", + x: r.cursorPoint[0], + y: r.cursorPoint[1], + tooltipOption: r.tooltipOption, + axesInfo: [{ + axisDim: n.axis.dim, + axisIndex: n.componentIndex + }] + }); + } + }, e.prototype._onHandleDragEnd = function() { + this._dragging = !1; + var t = this._handle; + if (t) { + var r = this._axisPointerModel.get("value"); + this._moveHandleToValue(r), this._api.dispatchAction({ + type: "hideTip" + }); + } + }, e.prototype.clear = function(t) { + this._lastValue = null, this._lastStatus = null; + var r = t.getZr(), n = this._group, i = this._handle; + r && n && (this._lastGraphicKey = null, n && r.remove(n), i && r.remove(i), this._group = null, this._handle = null, this._payloadInfo = null), bR(this, "_doDispatchAxisPointer"); + }, e.prototype.doClear = function() { + }, e.prototype.buildLabel = function(t, r, n) { + return n = n || 0, { + x: t[n], + y: t[1 - n], + width: r[n], + height: r[1 - n] + }; + }, e; + }() +); +function yle(e, t, r, n) { + gbe(Ab(r).lastProp, n) || (Ab(r).lastProp = n, t ? ia(r, n, e) : (r.stopAnimation(), r.attr(n))); +} +function gbe(e, t) { + if (sn(e) && sn(t)) { + var r = !0; + return Ee(t, function(n, i) { + r = r && gbe(e[i], n); + }), !!r; + } else + return e === t; +} +function _le(e, t) { + e[t.get(["label", "show"]) ? "show" : "hide"](); +} +function C3(e) { + return { + x: e.x || 0, + y: e.y || 0, + rotation: e.rotation || 0 + }; +} +function Sle(e, t, r) { + var n = t.get("z"), i = t.get("zlevel"); + e && e.traverse(function(a) { + a.type !== "group" && (n != null && (a.z = n), i != null && (a.zlevel = i), a.silent = r); + }); +} +const cY = Met; +function uY(e) { + var t = e.get("type"), r = e.getModel(t + "Style"), n; + return t === "line" ? (n = r.getLineStyle(), n.fill = null) : t === "shadow" && (n = r.getAreaStyle(), n.stroke = null), n; +} +function vbe(e, t, r, n, i) { + var a = r.get("value"), o = mbe(a, t.axis, t.ecModel, r.get("seriesDataIndices"), { + precision: r.get(["label", "precision"]), + formatter: r.get(["label", "formatter"]) + }), l = r.getModel("label"), u = ME(l.get("padding") || 0), d = l.getFont(), f = pD(o, d), g = i.position, v = f.width + u[1] + u[3], y = f.height + u[0] + u[2], C = i.align; + C === "right" && (g[0] -= v), C === "center" && (g[0] -= v / 2); + var A = i.verticalAlign; + A === "bottom" && (g[1] -= y), A === "middle" && (g[1] -= y / 2), ket(g, v, y, n); + var S = l.get("backgroundColor"); + (!S || S === "auto") && (S = t.get(["axisLine", "lineStyle", "color"])), e.label = { + // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')}, + x: g[0], + y: g[1], + style: uo(l, { + text: o, + font: d, + fill: l.getTextColor(), + padding: u, + backgroundColor: S + }), + // Label should be over axisPointer. + z2: 10 + }; +} +function ket(e, t, r, n) { + var i = n.getWidth(), a = n.getHeight(); + e[0] = Math.min(e[0] + t, i) - t, e[1] = Math.min(e[1] + r, a) - r, e[0] = Math.max(e[0], 0), e[1] = Math.max(e[1], 0); +} +function mbe(e, t, r, n, i) { + e = t.scale.parse(e); + var a = t.scale.getLabel({ + value: e + }, { + // If `precision` is set, width can be fixed (like '12.00500'), which + // helps to debounce when when moving label. + precision: i.precision + }), o = i.formatter; + if (o) { + var l = { + value: S9(t, { + value: e + }), + axisDimension: t.dim, + axisIndex: t.index, + seriesData: [] + }; + Ee(n, function(u) { + var d = r.getSeriesByIndex(u.seriesIndex), f = u.dataIndexInside, g = d && d.getDataParams(f); + g && l.seriesData.push(g); + }), wr(o) ? a = o.replace("{value}", a) : Kr(o) && (a = o(l)); + } + return a; +} +function hY(e, t, r) { + var n = ku(); + return R0(n, n, r.rotation), Pp(n, n, r.position), Op([e.dataToCoord(t), (r.labelOffset || 0) + (r.labelDirection || 1) * (r.labelMargin || 0)], n); +} +function ybe(e, t, r, n, i, a) { + var o = Xm.innerTextLayout(r.rotation, 0, r.labelDirection); + r.labelMargin = i.get(["label", "margin"]), vbe(t, n, i, a, { + position: hY(n.axis, e, r), + align: o.textAlign, + verticalAlign: o.textVerticalAlign + }); +} +function dY(e, t, r) { + return r = r || 0, { + x1: e[r], + y1: e[1 - r], + x2: t[r], + y2: t[1 - r] + }; +} +function _be(e, t, r) { + return r = r || 0, { + x: e[r], + y: e[1 - r], + width: t[r], + height: t[1 - r] + }; +} +function ble(e, t, r, n, i, a) { + return { + cx: e, + cy: t, + r0: r, + r: n, + startAngle: i, + endAngle: a, + clockwise: !0 + }; +} +var Pet = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.makeElOption = function(r, n, i, a, o) { + var l = i.axis, u = l.grid, d = a.get("type"), f = Ele(u, l).getOtherAxis(l).getGlobalExtent(), g = l.toGlobalCoord(l.dataToCoord(n, !0)); + if (d && d !== "none") { + var v = uY(a), y = Net[d](l, g, f); + y.style = v, r.graphicKey = y.type, r.pointer = y; + } + var C = AW(u.model, i); + ybe( + // @ts-ignore + n, + r, + C, + i, + a, + o + ); + }, t.prototype.getHandleTransform = function(r, n, i) { + var a = AW(n.axis.grid.model, n, { + labelInside: !1 + }); + a.labelMargin = i.get(["handle", "margin"]); + var o = hY(n.axis, r, a); + return { + x: o[0], + y: o[1], + rotation: a.rotation + (a.labelDirection < 0 ? Math.PI : 0) + }; + }, t.prototype.updateHandleTransform = function(r, n, i, a) { + var o = i.axis, l = o.grid, u = o.getGlobalExtent(!0), d = Ele(l, o).getOtherAxis(o).getGlobalExtent(), f = o.dim === "x" ? 0 : 1, g = [r.x, r.y]; + g[f] += n[f], g[f] = Math.min(u[1], g[f]), g[f] = Math.max(u[0], g[f]); + var v = (d[1] + d[0]) / 2, y = [v, v]; + y[f] = g[f]; + var C = [{ + verticalAlign: "middle" + }, { + align: "center" + }]; + return { + x: g[0], + y: g[1], + rotation: r.rotation, + cursorPoint: y, + tooltipOption: C[f] + }; + }, t; + }(cY) +); +function Ele(e, t) { + var r = {}; + return r[t.dim + "AxisIndex"] = t.index, e.getCartesian(r); +} +var Net = { + line: function(e, t, r) { + var n = dY([t, r[0]], [t, r[1]], Cle(e)); + return { + type: "Line", + subPixelOptimize: !0, + shape: n + }; + }, + shadow: function(e, t, r) { + var n = Math.max(1, e.getBandWidth()), i = r[1] - r[0]; + return { + type: "Rect", + shape: _be([t - n / 2, r[0]], [n, i], Cle(e)) + }; + } +}; +function Cle(e) { + return e.dim === "x" ? 0 : 1; +} +const Let = Pet; +var Fet = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "axisPointer", t.defaultOption = { + // 'auto' means that show when triggered by tooltip or handle. + show: "auto", + // zlevel: 0, + z: 50, + type: "line", + // axispointer triggered by tootip determine snap automatically, + // see `modelHelper`. + snap: !1, + triggerTooltip: !0, + triggerEmphasis: !0, + value: null, + status: null, + link: [], + // Do not set 'auto' here, otherwise global animation: false + // will not effect at this axispointer. + animation: null, + animationDurationUpdate: 200, + lineStyle: { + color: "#B9BEC9", + width: 1, + type: "dashed" + }, + shadowStyle: { + color: "rgba(210,219,238,0.2)" + }, + label: { + show: !0, + formatter: null, + precision: "auto", + margin: 3, + color: "#fff", + padding: [5, 7, 5, 7], + backgroundColor: "auto", + borderColor: null, + borderWidth: 0, + borderRadius: 3 + }, + handle: { + show: !1, + // eslint-disable-next-line + icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", + size: 45, + // handle margin is from symbol center to axis, which is stable when circular move. + margin: 50, + // color: '#1b8bbd' + // color: '#2f4554' + color: "#333", + shadowBlur: 3, + shadowColor: "#aaa", + shadowOffsetX: 0, + shadowOffsetY: 2, + // For mobile performance + throttle: 40 + } + }, t; + }(Mi) +); +const Bet = Fet; +var Nm = ea(), Uet = Ee; +function Sbe(e, t, r) { + if (!Yi.node) { + var n = t.getZr(); + Nm(n).records || (Nm(n).records = {}), jet(n, t); + var i = Nm(n).records[e] || (Nm(n).records[e] = {}); + i.handler = r; + } +} +function jet(e, t) { + if (Nm(e).initialized) + return; + Nm(e).initialized = !0, r("click", Ln(Tle, "click")), r("mousemove", Ln(Tle, "mousemove")), r("globalout", Vet); + function r(n, i) { + e.on(n, function(a) { + var o = zet(t); + Uet(Nm(e).records, function(l) { + l && i(l, a, o.dispatchAction); + }), $et(o.pendings, t); + }); + } +} +function $et(e, t) { + var r = e.showTip.length, n = e.hideTip.length, i; + r ? i = e.showTip[r - 1] : n && (i = e.hideTip[n - 1]), i && (i.dispatchAction = null, t.dispatchAction(i)); +} +function Vet(e, t, r) { + e.handler("leave", null, r); +} +function Tle(e, t, r, n) { + t.handler(e, r, n); +} +function zet(e) { + var t = { + showTip: [], + hideTip: [] + }, r = function(n) { + var i = t[n.type]; + i ? i.push(n) : (n.dispatchAction = r, e.dispatchAction(n)); + }; + return { + dispatchAction: r, + pendings: t + }; +} +function YW(e, t) { + if (!Yi.node) { + var r = t.getZr(), n = (Nm(r).records || {})[e]; + n && (Nm(r).records[e] = null); + } +} +var Het = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = n.getComponent("tooltip"), o = r.get("triggerOn") || a && a.get("triggerOn") || "mousemove|click"; + Sbe("axisPointer", i, function(l, u, d) { + o !== "none" && (l === "leave" || o.indexOf(l) >= 0) && d({ + type: "updateAxisPointer", + currTrigger: l, + x: u && u.offsetX, + y: u && u.offsetY + }); + }); + }, t.prototype.remove = function(r, n) { + YW("axisPointer", n); + }, t.prototype.dispose = function(r, n) { + YW("axisPointer", n); + }, t.type = "axisPointer", t; + }(Co) +); +const Wet = Het; +function bbe(e, t) { + var r = [], n = e.seriesIndex, i; + if (n == null || !(i = t.getSeriesByIndex(n))) + return { + point: [] + }; + var a = i.getData(), o = hE(a, e); + if (o == null || o < 0 || qt(o)) + return { + point: [] + }; + var l = a.getItemGraphicEl(o), u = i.coordinateSystem; + if (i.getTooltipPosition) + r = i.getTooltipPosition(o) || []; + else if (u && u.dataToPoint) + if (e.isStacked) { + var d = u.getBaseAxis(), f = u.getOtherAxis(d), g = f.dim, v = d.dim, y = g === "x" || g === "radius" ? 1 : 0, C = a.mapDimension(v), A = []; + A[y] = a.get(C, o), A[1 - y] = a.get(a.getCalculationInfo("stackResultDimension"), o), r = u.dataToPoint(A) || []; + } else + r = u.dataToPoint(a.getValues(er(u.dimensions, function(_) { + return a.mapDimension(_); + }), o)) || []; + else if (l) { + var S = l.getBoundingRect().clone(); + S.applyTransform(l.transform), r = [S.x + S.width / 2, S.y + S.height / 2]; + } + return { + point: r, + el: l + }; +} +var wle = ea(); +function Get(e, t, r) { + var n = e.currTrigger, i = [e.x, e.y], a = e, o = e.dispatchAction || Ar(r.dispatchAction, r), l = t.getComponent("axisPointer").coordSysAxesInfo; + if (l) { + NN(i) && (i = bbe({ + seriesIndex: a.seriesIndex, + // Do not use dataIndexInside from other ec instance. + // FIXME: auto detect it? + dataIndex: a.dataIndex + }, t).point); + var u = NN(i), d = a.axesInfo, f = l.axesInfo, g = n === "leave" || NN(i), v = {}, y = {}, C = { + list: [], + map: {} + }, A = { + showPointer: Ln(Xet, y), + showTooltip: Ln(Ket, C) + }; + Ee(l.coordSysMap, function(_, E) { + var I = u || _.containPoint(i); + Ee(l.coordSysAxesInfo[E], function(w, x) { + var b = w.axis, R = Qet(d, w); + if (!g && I && (!d || R)) { + var M = R && R.value; + M == null && !u && (M = b.pointToData(i)), M != null && Ile(w, M, A, !1, v); + } + }); + }); + var S = {}; + return Ee(f, function(_, E) { + var I = _.linkGroup; + I && !y[E] && Ee(I.axesInfo, function(w, x) { + var b = y[x]; + if (w !== _ && b) { + var R = b.value; + I.mapper && (R = _.axis.scale.parse(I.mapper(R, xle(w), xle(_)))), S[_.key] = R; + } + }); + }), Ee(S, function(_, E) { + Ile(f[E], _, A, !0, v); + }), Zet(y, f, v), qet(C, i, e, o), Jet(f, o, r), v; + } +} +function Ile(e, t, r, n, i) { + var a = e.axis; + if (!(a.scale.isBlank() || !a.containData(t))) { + if (!e.involveSeries) { + r.showPointer(e, t); + return; + } + var o = Yet(t, e), l = o.payloadBatch, u = o.snapToValue; + l[0] && i.seriesIndex == null && $t(i, l[0]), !n && e.snap && a.containData(u) && u != null && (t = u), r.showPointer(e, t, l), r.showTooltip(e, o, u); + } +} +function Yet(e, t) { + var r = t.axis, n = r.dim, i = e, a = [], o = Number.MAX_VALUE, l = -1; + return Ee(t.seriesModels, function(u, d) { + var f = u.getData().mapDimensionsAll(n), g, v; + if (u.getAxisTooltipData) { + var y = u.getAxisTooltipData(f, e, r); + v = y.dataIndices, g = y.nestestValue; + } else { + if (v = u.getData().indicesOfNearest( + f[0], + e, + // Add a threshold to avoid find the wrong dataIndex + // when data length is not same. + // false, + r.type === "category" ? 0.5 : null + ), !v.length) + return; + g = u.getData().get(f[0], v[0]); + } + if (!(g == null || !isFinite(g))) { + var C = e - g, A = Math.abs(C); + A <= o && ((A < o || C >= 0 && l < 0) && (o = A, l = C, i = g, a.length = 0), Ee(v, function(S) { + a.push({ + seriesIndex: u.seriesIndex, + dataIndexInside: S, + dataIndex: u.getData().getRawIndex(S) + }); + })); + } + }), { + payloadBatch: a, + snapToValue: i + }; +} +function Xet(e, t, r, n) { + e[t.key] = { + value: r, + payloadBatch: n + }; +} +function Ket(e, t, r, n) { + var i = r.payloadBatch, a = t.axis, o = a.model, l = t.axisPointerModel; + if (!(!t.triggerTooltip || !i.length)) { + var u = t.coordSys.model, d = AR(u), f = e.map[d]; + f || (f = e.map[d] = { + coordSysId: u.id, + coordSysIndex: u.componentIndex, + coordSysType: u.type, + coordSysMainType: u.mainType, + dataByAxis: [] + }, e.list.push(f)), f.dataByAxis.push({ + axisDim: a.dim, + axisIndex: o.componentIndex, + axisType: o.type, + axisId: o.id, + value: n, + // Caustion: viewHelper.getValueLabel is actually on "view stage", which + // depends that all models have been updated. So it should not be performed + // here. Considering axisPointerModel used here is volatile, which is hard + // to be retrieve in TooltipView, we prepare parameters here. + valueLabelOpt: { + precision: l.get(["label", "precision"]), + formatter: l.get(["label", "formatter"]) + }, + seriesDataIndices: i.slice() + }); + } +} +function Zet(e, t, r) { + var n = r.axesInfo = []; + Ee(t, function(i, a) { + var o = i.axisPointerModel.option, l = e[a]; + l ? (!i.useHandle && (o.status = "show"), o.value = l.value, o.seriesDataIndices = (l.payloadBatch || []).slice()) : !i.useHandle && (o.status = "hide"), o.status === "show" && n.push({ + axisDim: i.axis.dim, + axisIndex: i.axis.model.componentIndex, + value: o.value + }); + }); +} +function qet(e, t, r, n) { + if (NN(t) || !e.list.length) { + n({ + type: "hideTip" + }); + return; + } + var i = ((e.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; + n({ + type: "showTip", + escapeConnect: !0, + x: t[0], + y: t[1], + tooltipOption: r.tooltipOption, + position: r.position, + dataIndexInside: i.dataIndexInside, + dataIndex: i.dataIndex, + seriesIndex: i.seriesIndex, + dataByCoordSys: e.list + }); +} +function Jet(e, t, r) { + var n = r.getZr(), i = "axisPointerLastHighlights", a = wle(n)[i] || {}, o = wle(n)[i] = {}; + Ee(e, function(d, f) { + var g = d.axisPointerModel.option; + g.status === "show" && d.triggerEmphasis && Ee(g.seriesDataIndices, function(v) { + var y = v.seriesIndex + " | " + v.dataIndex; + o[y] = v; + }); + }); + var l = [], u = []; + Ee(a, function(d, f) { + !o[f] && u.push(d); + }), Ee(o, function(d, f) { + !a[f] && l.push(d); + }), u.length && r.dispatchAction({ + type: "downplay", + escapeConnect: !0, + // Not blur others when highlight in axisPointer. + notBlur: !0, + batch: u + }), l.length && r.dispatchAction({ + type: "highlight", + escapeConnect: !0, + // Not blur others when highlight in axisPointer. + notBlur: !0, + batch: l + }); +} +function Qet(e, t) { + for (var r = 0; r < (e || []).length; r++) { + var n = e[r]; + if (t.axis.dim === n.axisDim && t.axis.model.componentIndex === n.axisIndex) + return n; + } +} +function xle(e) { + var t = e.axis.model, r = {}, n = r.axisDim = e.axis.dim; + return r.axisIndex = r[n + "AxisIndex"] = t.componentIndex, r.axisName = r[n + "AxisName"] = t.name, r.axisId = r[n + "AxisId"] = t.id, r; +} +function NN(e) { + return !e || e[0] == null || isNaN(e[0]) || e[1] == null || isNaN(e[1]); +} +function LD(e) { + NE.registerAxisPointerClass("CartesianAxisPointer", Let), e.registerComponentModel(Bet), e.registerComponentView(Wet), e.registerPreprocessor(function(t) { + if (t) { + (!t.axisPointer || t.axisPointer.length === 0) && (t.axisPointer = {}); + var r = t.axisPointer.link; + r && !qt(r) && (t.axisPointer.link = [r]); + } + }), e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC, function(t, r) { + t.getComponent("axisPointer").coordSysAxesInfo = BYe(t, r); + }), e.registerAction({ + type: "updateAxisPointer", + event: "updateAxisPointer", + update: ":updateAxisPointer" + }, Get); +} +function ett(e) { + ii(Y0e), ii(LD); +} +var ttt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.makeElOption = function(r, n, i, a, o) { + var l = i.axis; + l.dim === "angle" && (this.animationThreshold = Math.PI / 18); + var u = l.polar, d = u.getOtherAxis(l), f = d.getExtent(), g = l.dataToCoord(n), v = a.get("type"); + if (v && v !== "none") { + var y = uY(a), C = ntt[v](l, u, g, f); + C.style = y, r.graphicKey = C.type, r.pointer = C; + } + var A = a.get(["label", "margin"]), S = rtt(n, i, a, u, A); + vbe(r, i, a, o, S); + }, t; + }(cY) +); +function rtt(e, t, r, n, i) { + var a = t.axis, o = a.dataToCoord(e), l = n.getAngleAxis().getExtent()[0]; + l = l / 180 * Math.PI; + var u = n.getRadiusAxis().getExtent(), d, f, g; + if (a.dim === "radius") { + var v = ku(); + R0(v, v, l), Pp(v, v, [n.cx, n.cy]), d = Op([o, -i], v); + var y = t.getModel("axisLabel").get("rotate") || 0, C = Xm.innerTextLayout(l, y * Math.PI / 180, -1); + f = C.textAlign, g = C.textVerticalAlign; + } else { + var A = u[1]; + d = n.coordToPoint([A + i, o]); + var S = n.cx, _ = n.cy; + f = Math.abs(d[0] - S) / A < 0.3 ? "center" : d[0] > S ? "left" : "right", g = Math.abs(d[1] - _) / A < 0.3 ? "middle" : d[1] > _ ? "top" : "bottom"; + } + return { + position: d, + align: f, + verticalAlign: g + }; +} +var ntt = { + line: function(e, t, r, n) { + return e.dim === "angle" ? { + type: "Line", + shape: dY(t.coordToPoint([n[0], r]), t.coordToPoint([n[1], r])) + } : { + type: "Circle", + shape: { + cx: t.cx, + cy: t.cy, + r + } + }; + }, + shadow: function(e, t, r, n) { + var i = Math.max(1, e.getBandWidth()), a = Math.PI / 180; + return e.dim === "angle" ? { + type: "Sector", + shape: ble( + t.cx, + t.cy, + n[0], + n[1], + // In ECharts y is negative if angle is positive + (-r - i / 2) * a, + (-r + i / 2) * a + ) + } : { + type: "Sector", + shape: ble(t.cx, t.cy, r - i / 2, r + i / 2, 0, Math.PI * 2) + }; + } +}; +const itt = ttt; +var att = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.findAxisModel = function(r) { + var n, i = this.ecModel; + return i.eachComponent(r, function(a) { + a.getCoordSysModel() === this && (n = a); + }, this), n; + }, t.type = "polar", t.dependencies = ["radiusAxis", "angleAxis"], t.defaultOption = { + // zlevel: 0, + z: 0, + center: ["50%", "50%"], + radius: "80%" + }, t; + }(Mi) +); +const ott = att; +var fY = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.getCoordSysModel = function() { + return this.getReferringComponents("polar", tl).models[0]; + }, t.type = "polarAxis", t; + }(Mi) +); +Fs(fY, xI); +var stt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "angleAxis", t; + }(fY) +), ltt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "radiusAxis", t; + }(fY) +), pY = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n) { + return e.call(this, "radius", r, n) || this; + } + return t.prototype.pointToData = function(r, n) { + return this.polar.pointToData(r, n)[this.dim === "radius" ? 0 : 1]; + }, t; + }(Ed) +); +pY.prototype.dataToRadius = Ed.prototype.dataToCoord; +pY.prototype.radiusToData = Ed.prototype.coordToData; +const ctt = pY; +var utt = ea(), gY = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n) { + return e.call(this, "angle", r, n || [0, 360]) || this; + } + return t.prototype.pointToData = function(r, n) { + return this.polar.pointToData(r, n)[this.dim === "radius" ? 0 : 1]; + }, t.prototype.calculateCategoryInterval = function() { + var r = this, n = r.getLabelModel(), i = r.scale, a = i.getExtent(), o = i.count(); + if (a[1] - a[0] < 1) + return 0; + var l = a[0], u = r.dataToCoord(l + 1) - r.dataToCoord(l), d = Math.abs(u), f = pD(l == null ? "" : l + "", n.getFont(), "center", "top"), g = Math.max(f.height, 7), v = g / d; + isNaN(v) && (v = 1 / 0); + var y = Math.max(0, Math.floor(v)), C = utt(r.model), A = C.lastAutoInterval, S = C.lastTickCount; + return A != null && S != null && Math.abs(A - y) <= 1 && Math.abs(S - o) <= 1 && A > y ? y = A : (C.lastTickCount = o, C.lastAutoInterval = y), y; + }, t; + }(Ed) +); +gY.prototype.dataToAngle = Ed.prototype.dataToCoord; +gY.prototype.angleToData = Ed.prototype.coordToData; +const htt = gY; +var Ebe = ["radius", "angle"], dtt = ( + /** @class */ + function() { + function e(t) { + this.dimensions = Ebe, this.type = "polar", this.cx = 0, this.cy = 0, this._radiusAxis = new ctt(), this._angleAxis = new htt(), this.axisPointerEnabled = !0, this.name = t || "", this._radiusAxis.polar = this._angleAxis.polar = this; + } + return e.prototype.containPoint = function(t) { + var r = this.pointToCoord(t); + return this._radiusAxis.contain(r[0]) && this._angleAxis.contain(r[1]); + }, e.prototype.containData = function(t) { + return this._radiusAxis.containData(t[0]) && this._angleAxis.containData(t[1]); + }, e.prototype.getAxis = function(t) { + var r = "_" + t + "Axis"; + return this[r]; + }, e.prototype.getAxes = function() { + return [this._radiusAxis, this._angleAxis]; + }, e.prototype.getAxesByScale = function(t) { + var r = [], n = this._angleAxis, i = this._radiusAxis; + return n.scale.type === t && r.push(n), i.scale.type === t && r.push(i), r; + }, e.prototype.getAngleAxis = function() { + return this._angleAxis; + }, e.prototype.getRadiusAxis = function() { + return this._radiusAxis; + }, e.prototype.getOtherAxis = function(t) { + var r = this._angleAxis; + return t === r ? this._radiusAxis : r; + }, e.prototype.getBaseAxis = function() { + return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis(); + }, e.prototype.getTooltipAxes = function(t) { + var r = t != null && t !== "auto" ? this.getAxis(t) : this.getBaseAxis(); + return { + baseAxes: [r], + otherAxes: [this.getOtherAxis(r)] + }; + }, e.prototype.dataToPoint = function(t, r) { + return this.coordToPoint([this._radiusAxis.dataToRadius(t[0], r), this._angleAxis.dataToAngle(t[1], r)]); + }, e.prototype.pointToData = function(t, r) { + var n = this.pointToCoord(t); + return [this._radiusAxis.radiusToData(n[0], r), this._angleAxis.angleToData(n[1], r)]; + }, e.prototype.pointToCoord = function(t) { + var r = t[0] - this.cx, n = t[1] - this.cy, i = this.getAngleAxis(), a = i.getExtent(), o = Math.min(a[0], a[1]), l = Math.max(a[0], a[1]); + i.inverse ? o = l - 360 : l = o + 360; + var u = Math.sqrt(r * r + n * n); + r /= u, n /= u; + for (var d = Math.atan2(-n, r) / Math.PI * 180, f = d < o ? 1 : -1; d < o || d > l; ) + d += f * 360; + return [u, d]; + }, e.prototype.coordToPoint = function(t) { + var r = t[0], n = t[1] / 180 * Math.PI, i = Math.cos(n) * r + this.cx, a = -Math.sin(n) * r + this.cy; + return [i, a]; + }, e.prototype.getArea = function() { + var t = this.getAngleAxis(), r = this.getRadiusAxis(), n = r.getExtent().slice(); + n[0] > n[1] && n.reverse(); + var i = t.getExtent(), a = Math.PI / 180; + return { + cx: this.cx, + cy: this.cy, + r0: n[0], + r: n[1], + startAngle: -i[0] * a, + endAngle: -i[1] * a, + clockwise: t.inverse, + contain: function(o, l) { + var u = o - this.cx, d = l - this.cy, f = u * u + d * d - 1e-4, g = this.r, v = this.r0; + return f <= g * g && f >= v * v; + } + }; + }, e.prototype.convertToPixel = function(t, r, n) { + var i = Ale(r); + return i === this ? this.dataToPoint(n) : null; + }, e.prototype.convertFromPixel = function(t, r, n) { + var i = Ale(r); + return i === this ? this.pointToData(n) : null; + }, e; + }() +); +function Ale(e) { + var t = e.seriesModel, r = e.polarModel; + return r && r.coordinateSystem || t && t.coordinateSystem; +} +const ftt = dtt; +function ptt(e, t, r) { + var n = t.get("center"), i = r.getWidth(), a = r.getHeight(); + e.cx = yr(n[0], i), e.cy = yr(n[1], a); + var o = e.getRadiusAxis(), l = Math.min(i, a) / 2, u = t.get("radius"); + u == null ? u = [0, "100%"] : qt(u) || (u = [0, u]); + var d = [yr(u[0], l), yr(u[1], l)]; + o.inverse ? o.setExtent(d[1], d[0]) : o.setExtent(d[0], d[1]); +} +function gtt(e, t) { + var r = this, n = r.getAngleAxis(), i = r.getRadiusAxis(); + if (n.scale.setExtent(1 / 0, -1 / 0), i.scale.setExtent(1 / 0, -1 / 0), e.eachSeries(function(l) { + if (l.coordinateSystem === r) { + var u = l.getData(); + Ee(jL(u, "radius"), function(d) { + i.scale.unionExtentFromData(u, d); + }), Ee(jL(u, "angle"), function(d) { + n.scale.unionExtentFromData(u, d); + }); + } + }), vE(n.scale, n.model), vE(i.scale, i.model), n.type === "category" && !n.onBand) { + var a = n.getExtent(), o = 360 / n.scale.count(); + n.inverse ? a[1] += o : a[1] -= o, n.setExtent(a[0], a[1]); + } +} +function vtt(e) { + return e.mainType === "angleAxis"; +} +function Rle(e, t) { + var r; + if (e.type = t.get("type"), e.scale = ID(t), e.onBand = t.get("boundaryGap") && e.type === "category", e.inverse = t.get("inverse"), vtt(t)) { + e.inverse = e.inverse !== t.get("clockwise"); + var n = t.get("startAngle"), i = (r = t.get("endAngle")) !== null && r !== void 0 ? r : n + (e.inverse ? -360 : 360); + e.setExtent(n, i); + } + t.axis = e, e.model = t; +} +var mtt = { + dimensions: Ebe, + create: function(e, t) { + var r = []; + return e.eachComponent("polar", function(n, i) { + var a = new ftt(i + ""); + a.update = gtt; + var o = a.getRadiusAxis(), l = a.getAngleAxis(), u = n.findAxisModel("radiusAxis"), d = n.findAxisModel("angleAxis"); + Rle(o, u), Rle(l, d), ptt(a, n, t), r.push(a), n.coordinateSystem = a, a.model = n; + }), e.eachSeries(function(n) { + if (n.get("coordinateSystem") === "polar") { + var i = n.getReferringComponents("polar", tl).models[0]; + n.coordinateSystem = i.coordinateSystem; + } + }), r; + } +}; +const ytt = mtt; +var _tt = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"]; +function IP(e, t, r) { + t[1] > t[0] && (t = t.slice().reverse()); + var n = e.coordToPoint([t[0], r]), i = e.coordToPoint([t[1], r]); + return { + x1: n[0], + y1: n[1], + x2: i[0], + y2: i[1] + }; +} +function xP(e) { + var t = e.getRadiusAxis(); + return t.inverse ? 0 : 1; +} +function Dle(e) { + var t = e[0], r = e[e.length - 1]; + t && r && Math.abs(Math.abs(t.coord - r.coord) - 360) < 1e-4 && e.pop(); +} +var Stt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.axisPointerClass = "PolarAxisPointer", r; + } + return t.prototype.render = function(r, n) { + if (this.group.removeAll(), !!r.get("show")) { + var i = r.axis, a = i.polar, o = a.getRadiusAxis().getExtent(), l = i.getTicksCoords(), u = i.getMinorTicksCoords(), d = er(i.getViewLabels(), function(f) { + f = cn(f); + var g = i.scale, v = g.type === "ordinal" ? g.getRawOrdinalNumber(f.tickValue) : f.tickValue; + return f.coord = i.dataToCoord(v), f; + }); + Dle(d), Dle(l), Ee(_tt, function(f) { + r.get([f, "show"]) && (!i.scale.isBlank() || f === "axisLine") && btt[f](this.group, r, a, l, u, o, d); + }, this); + } + }, t.type = "angleAxis", t; + }(NE) +), btt = { + axisLine: function(e, t, r, n, i, a) { + var o = t.getModel(["axisLine", "lineStyle"]), l = r.getAngleAxis(), u = Math.PI / 180, d = l.getExtent(), f = xP(r), g = f ? 0 : 1, v, y = Math.abs(d[1] - d[0]) === 360 ? "Circle" : "Arc"; + a[g] === 0 ? v = new DE[y]({ + shape: { + cx: r.cx, + cy: r.cy, + r: a[f], + startAngle: -d[0] * u, + endAngle: -d[1] * u, + clockwise: l.inverse + }, + style: o.getLineStyle(), + z2: 1, + silent: !0 + }) : v = new mD({ + shape: { + cx: r.cx, + cy: r.cy, + r: a[f], + r0: a[g] + }, + style: o.getLineStyle(), + z2: 1, + silent: !0 + }), v.style.fill = null, e.add(v); + }, + axisTick: function(e, t, r, n, i, a) { + var o = t.getModel("axisTick"), l = (o.get("inside") ? -1 : 1) * o.get("length"), u = a[xP(r)], d = er(n, function(f) { + return new Pl({ + shape: IP(r, [u, u + l], f.coord) + }); + }); + e.add(sd(d, { + style: Jr(o.getModel("lineStyle").getLineStyle(), { + stroke: t.get(["axisLine", "lineStyle", "color"]) + }) + })); + }, + minorTick: function(e, t, r, n, i, a) { + if (i.length) { + for (var o = t.getModel("axisTick"), l = t.getModel("minorTick"), u = (o.get("inside") ? -1 : 1) * l.get("length"), d = a[xP(r)], f = [], g = 0; g < i.length; g++) + for (var v = 0; v < i[g].length; v++) + f.push(new Pl({ + shape: IP(r, [d, d + u], i[g][v].coord) + })); + e.add(sd(f, { + style: Jr(l.getModel("lineStyle").getLineStyle(), Jr(o.getLineStyle(), { + stroke: t.get(["axisLine", "lineStyle", "color"]) + })) + })); + } + }, + axisLabel: function(e, t, r, n, i, a, o) { + var l = t.getCategories(!0), u = t.getModel("axisLabel"), d = u.get("margin"), f = t.get("triggerEvent"); + Ee(o, function(g, v) { + var y = u, C = g.tickValue, A = a[xP(r)], S = r.coordToPoint([A + d, g.coord]), _ = r.cx, E = r.cy, I = Math.abs(S[0] - _) / A < 0.3 ? "center" : S[0] > _ ? "left" : "right", w = Math.abs(S[1] - E) / A < 0.3 ? "middle" : S[1] > E ? "top" : "bottom"; + if (l && l[C]) { + var x = l[C]; + sn(x) && x.textStyle && (y = new Wa(x.textStyle, u, u.ecModel)); + } + var b = new Hi({ + silent: Xm.isLabelSilent(t), + style: uo(y, { + x: S[0], + y: S[1], + fill: y.getTextColor() || t.get(["axisLine", "lineStyle", "color"]), + text: g.formattedLabel, + align: I, + verticalAlign: w + }) + }); + if (e.add(b), f) { + var R = Xm.makeAxisEventDataBase(t); + R.targetType = "axisLabel", R.value = g.rawLabel, Tn(b).eventData = R; + } + }, this); + }, + splitLine: function(e, t, r, n, i, a) { + var o = t.getModel("splitLine"), l = o.getModel("lineStyle"), u = l.get("color"), d = 0; + u = u instanceof Array ? u : [u]; + for (var f = [], g = 0; g < n.length; g++) { + var v = d++ % u.length; + f[v] = f[v] || [], f[v].push(new Pl({ + shape: IP(r, a, n[g].coord) + })); + } + for (var g = 0; g < f.length; g++) + e.add(sd(f[g], { + style: Jr({ + stroke: u[g % u.length] + }, l.getLineStyle()), + silent: !0, + z: t.get("z") + })); + }, + minorSplitLine: function(e, t, r, n, i, a) { + if (i.length) { + for (var o = t.getModel("minorSplitLine"), l = o.getModel("lineStyle"), u = [], d = 0; d < i.length; d++) + for (var f = 0; f < i[d].length; f++) + u.push(new Pl({ + shape: IP(r, a, i[d][f].coord) + })); + e.add(sd(u, { + style: l.getLineStyle(), + silent: !0, + z: t.get("z") + })); + } + }, + splitArea: function(e, t, r, n, i, a) { + if (n.length) { + var o = t.getModel("splitArea"), l = o.getModel("areaStyle"), u = l.get("color"), d = 0; + u = u instanceof Array ? u : [u]; + for (var f = [], g = Math.PI / 180, v = -n[0].coord * g, y = Math.min(a[0], a[1]), C = Math.max(a[0], a[1]), A = t.get("clockwise"), S = 1, _ = n.length; S <= _; S++) { + var E = S === _ ? n[0].coord : n[S].coord, I = d++ % u.length; + f[I] = f[I] || [], f[I].push(new Fu({ + shape: { + cx: r.cx, + cy: r.cy, + r0: y, + r: C, + startAngle: v, + endAngle: -E * g, + clockwise: A + }, + silent: !0 + })), v = -E * g; + } + for (var S = 0; S < f.length; S++) + e.add(sd(f[S], { + style: Jr({ + fill: u[S % u.length] + }, l.getAreaStyle()), + silent: !0 + })); + } + } +}; +const Ett = Stt; +var Ctt = ["axisLine", "axisTickLabel", "axisName"], Ttt = ["splitLine", "splitArea", "minorSplitLine"], wtt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.axisPointerClass = "PolarAxisPointer", r; + } + return t.prototype.render = function(r, n) { + if (this.group.removeAll(), !!r.get("show")) { + var i = this._axisGroup, a = this._axisGroup = new _n(); + this.group.add(a); + var o = r.axis, l = o.polar, u = l.getAngleAxis(), d = o.getTicksCoords(), f = o.getMinorTicksCoords(), g = u.getExtent()[0], v = o.getExtent(), y = xtt(l, r, g), C = new Xm(r, y); + Ee(Ctt, C.add, C), a.add(C.getGroup()), SD(i, a, r), Ee(Ttt, function(A) { + r.get([A, "show"]) && !o.scale.isBlank() && Itt[A](this.group, r, l, g, v, d, f); + }, this); + } + }, t.type = "radiusAxis", t; + }(NE) +), Itt = { + splitLine: function(e, t, r, n, i, a) { + var o = t.getModel("splitLine"), l = o.getModel("lineStyle"), u = l.get("color"), d = 0, f = r.getAngleAxis(), g = Math.PI / 180, v = f.getExtent(), y = Math.abs(v[1] - v[0]) === 360 ? "Circle" : "Arc"; + u = u instanceof Array ? u : [u]; + for (var C = [], A = 0; A < a.length; A++) { + var S = d++ % u.length; + C[S] = C[S] || [], C[S].push(new DE[y]({ + shape: { + cx: r.cx, + cy: r.cy, + // ensure circle radius >= 0 + r: Math.max(a[A].coord, 0), + startAngle: -v[0] * g, + endAngle: -v[1] * g, + clockwise: f.inverse + } + })); + } + for (var A = 0; A < C.length; A++) + e.add(sd(C[A], { + style: Jr({ + stroke: u[A % u.length], + fill: null + }, l.getLineStyle()), + silent: !0 + })); + }, + minorSplitLine: function(e, t, r, n, i, a, o) { + if (o.length) { + for (var l = t.getModel("minorSplitLine"), u = l.getModel("lineStyle"), d = [], f = 0; f < o.length; f++) + for (var g = 0; g < o[f].length; g++) + d.push(new ny({ + shape: { + cx: r.cx, + cy: r.cy, + r: o[f][g].coord + } + })); + e.add(sd(d, { + style: Jr({ + fill: null + }, u.getLineStyle()), + silent: !0 + })); + } + }, + splitArea: function(e, t, r, n, i, a) { + if (a.length) { + var o = t.getModel("splitArea"), l = o.getModel("areaStyle"), u = l.get("color"), d = 0; + u = u instanceof Array ? u : [u]; + for (var f = [], g = a[0].coord, v = 1; v < a.length; v++) { + var y = d++ % u.length; + f[y] = f[y] || [], f[y].push(new Fu({ + shape: { + cx: r.cx, + cy: r.cy, + r0: g, + r: a[v].coord, + startAngle: 0, + endAngle: Math.PI * 2 + }, + silent: !0 + })), g = a[v].coord; + } + for (var v = 0; v < f.length; v++) + e.add(sd(f[v], { + style: Jr({ + fill: u[v % u.length] + }, l.getAreaStyle()), + silent: !0 + })); + } + } +}; +function xtt(e, t, r) { + return { + position: [e.cx, e.cy], + rotation: r / 180 * Math.PI, + labelDirection: -1, + tickDirection: -1, + nameDirection: 1, + labelRotate: t.getModel("axisLabel").get("rotate"), + // Over splitLine and splitArea + z2: 1 + }; +} +const Att = wtt; +function Cbe(e) { + return e.get("stack") || "__ec_stack_" + e.seriesIndex; +} +function Tbe(e, t) { + return t.dim + e.model.componentIndex; +} +function Rtt(e, t, r) { + var n = {}, i = Dtt(Ma(t.getSeriesByType(e), function(a) { + return !t.isSeriesFiltered(a) && a.coordinateSystem && a.coordinateSystem.type === "polar"; + })); + t.eachSeriesByType(e, function(a) { + if (a.coordinateSystem.type === "polar") { + var o = a.getData(), l = a.coordinateSystem, u = l.getBaseAxis(), d = Tbe(l, u), f = Cbe(a), g = i[d][f], v = g.offset, y = g.width, C = l.getOtherAxis(u), A = a.coordinateSystem.cx, S = a.coordinateSystem.cy, _ = a.get("barMinHeight") || 0, E = a.get("barMinAngle") || 0; + n[f] = n[f] || []; + for (var I = o.mapDimension(C.dim), w = o.mapDimension(u.dim), x = Ym( + o, + I + /* , baseDim */ + ), b = u.dim !== "radius" || !a.get("roundCap", !0), R = C.dataToCoord(0), M = 0, O = o.count(); M < O; M++) { + var P = o.get(I, M), B = o.get(w, M), H = P >= 0 ? "p" : "n", Y = R; + x && (n[f][B] || (n[f][B] = { + p: R, + n: R + // Negative stack + }), Y = n[f][B][H]); + var X = void 0, ee = void 0, ae = void 0, J = void 0; + if (C.dim === "radius") { + var ne = C.dataToCoord(P) - R, fe = u.dataToCoord(B); + Math.abs(ne) < _ && (ne = (ne < 0 ? -1 : 1) * _), X = Y, ee = Y + ne, ae = fe - v, J = ae - y, x && (n[f][B][H] = ee); + } else { + var de = C.dataToCoord(P, b) - R, Te = u.dataToCoord(B); + Math.abs(de) < E && (de = (de < 0 ? -1 : 1) * E), X = Te + v, ee = X + y, ae = Y, J = Y + de, x && (n[f][B][H] = J); + } + o.setItemLayout(M, { + cx: A, + cy: S, + r0: X, + r: ee, + // Consider that positive angle is anti-clockwise, + // while positive radian of sector is clockwise + startAngle: -ae * Math.PI / 180, + endAngle: -J * Math.PI / 180, + /** + * Keep the same logic with bar in catesion: use end value to + * control direction. Notice that if clockwise is true (by + * default), the sector will always draw clockwisely, no matter + * whether endAngle is greater or less than startAngle. + */ + clockwise: ae >= J + }); + } + } + }); +} +function Dtt(e) { + var t = {}; + Ee(e, function(n, i) { + var a = n.getData(), o = n.coordinateSystem, l = o.getBaseAxis(), u = Tbe(o, l), d = l.getExtent(), f = l.type === "category" ? l.getBandWidth() : Math.abs(d[1] - d[0]) / a.count(), g = t[u] || { + bandWidth: f, + remainedWidth: f, + autoWidthCount: 0, + categoryGap: "20%", + gap: "30%", + stacks: {} + }, v = g.stacks; + t[u] = g; + var y = Cbe(n); + v[y] || g.autoWidthCount++, v[y] = v[y] || { + width: 0, + maxWidth: 0 + }; + var C = yr(n.get("barWidth"), f), A = yr(n.get("barMaxWidth"), f), S = n.get("barGap"), _ = n.get("barCategoryGap"); + C && !v[y].width && (C = Math.min(g.remainedWidth, C), v[y].width = C, g.remainedWidth -= C), A && (v[y].maxWidth = A), S != null && (g.gap = S), _ != null && (g.categoryGap = _); + }); + var r = {}; + return Ee(t, function(n, i) { + r[i] = {}; + var a = n.stacks, o = n.bandWidth, l = yr(n.categoryGap, o), u = yr(n.gap, 1), d = n.remainedWidth, f = n.autoWidthCount, g = (d - l) / (f + (f - 1) * u); + g = Math.max(g, 0), Ee(a, function(A, S) { + var _ = A.maxWidth; + _ && _ < g && (_ = Math.min(_, d), A.width && (_ = Math.min(_, A.width)), d -= _, A.width = _, f--); + }), g = (d - l) / (f + (f - 1) * u), g = Math.max(g, 0); + var v = 0, y; + Ee(a, function(A, S) { + A.width || (A.width = g), y = A, v += A.width * (1 + u); + }), y && (v -= y.width * u); + var C = -v / 2; + Ee(a, function(A, S) { + r[i][S] = r[i][S] || { + offset: C, + width: A.width + }, C += A.width * (1 + u); + }); + }), r; +} +var Ott = { + startAngle: 90, + clockwise: !0, + splitNumber: 12, + axisLabel: { + rotate: 0 + } +}, Mtt = { + splitNumber: 5 +}, ktt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "polar", t; + }(Co) +); +function Ptt(e) { + ii(LD), NE.registerAxisPointerClass("PolarAxisPointer", itt), e.registerCoordinateSystem("polar", ytt), e.registerComponentModel(ott), e.registerComponentView(ktt), Hw(e, "angle", stt, Ott), Hw(e, "radius", ltt, Mtt), e.registerComponentView(Ett), e.registerComponentView(Att), e.registerLayout(Ln(Rtt, "bar")); +} +function XW(e, t) { + t = t || {}; + var r = e.coordinateSystem, n = e.axis, i = {}, a = n.position, o = n.orient, l = r.getRect(), u = [l.x, l.x + l.width, l.y, l.y + l.height], d = { + horizontal: { + top: u[2], + bottom: u[3] + }, + vertical: { + left: u[0], + right: u[1] + } + }; + i.position = [o === "vertical" ? d.vertical[a] : u[0], o === "horizontal" ? d.horizontal[a] : u[3]]; + var f = { + horizontal: 0, + vertical: 1 + }; + i.rotation = Math.PI / 2 * f[o]; + var g = { + top: -1, + bottom: 1, + right: 1, + left: -1 + }; + i.labelDirection = i.tickDirection = i.nameDirection = g[a], e.get(["axisTick", "inside"]) && (i.tickDirection = -i.tickDirection), kl(t.labelInside, e.get(["axisLabel", "inside"])) && (i.labelDirection = -i.labelDirection); + var v = t.rotate; + return v == null && (v = e.get(["axisLabel", "rotate"])), i.labelRotation = a === "top" ? -v : v, i.z2 = 1, i; +} +var Ntt = ["axisLine", "axisTickLabel", "axisName"], Ltt = ["splitArea", "splitLine"], Ftt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.axisPointerClass = "SingleAxisPointer", r; + } + return t.prototype.render = function(r, n, i, a) { + var o = this.group; + o.removeAll(); + var l = this._axisGroup; + this._axisGroup = new _n(); + var u = XW(r), d = new Xm(r, u); + Ee(Ntt, d.add, d), o.add(this._axisGroup), o.add(d.getGroup()), Ee(Ltt, function(f) { + r.get([f, "show"]) && Btt[f](this, this.group, this._axisGroup, r); + }, this), SD(l, this._axisGroup, r), e.prototype.render.call(this, r, n, i, a); + }, t.prototype.remove = function() { + H0e(this); + }, t.type = "singleAxis", t; + }(NE) +), Btt = { + splitLine: function(e, t, r, n) { + var i = n.axis; + if (!i.scale.isBlank()) { + var a = n.getModel("splitLine"), o = a.getModel("lineStyle"), l = o.get("color"); + l = l instanceof Array ? l : [l]; + for (var u = o.get("width"), d = n.coordinateSystem.getRect(), f = i.isHorizontal(), g = [], v = 0, y = i.getTicksCoords({ + tickModel: a + }), C = [], A = [], S = 0; S < y.length; ++S) { + var _ = i.toGlobalCoord(y[S].coord); + f ? (C[0] = _, C[1] = d.y, A[0] = _, A[1] = d.y + d.height) : (C[0] = d.x, C[1] = _, A[0] = d.x + d.width, A[1] = _); + var E = new Pl({ + shape: { + x1: C[0], + y1: C[1], + x2: A[0], + y2: A[1] + }, + silent: !0 + }); + jw(E.shape, u); + var I = v++ % l.length; + g[I] = g[I] || [], g[I].push(E); + } + for (var w = o.getLineStyle(["color"]), S = 0; S < g.length; ++S) + t.add(sd(g[S], { + style: Jr({ + stroke: l[S % l.length] + }, w), + silent: !0 + })); + } + }, + splitArea: function(e, t, r, n) { + z0e(e, r, n, n); + } +}; +const Utt = Ftt; +var wbe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.getCoordSysModel = function() { + return this; + }, t.type = "singleAxis", t.layoutMode = "box", t.defaultOption = { + left: "5%", + top: "5%", + right: "5%", + bottom: "5%", + type: "value", + position: "bottom", + orient: "horizontal", + axisLine: { + show: !0, + lineStyle: { + width: 1, + type: "solid" + } + }, + // Single coordinate system and single axis is the, + // which is used as the parent tooltip model. + // same model, so we set default tooltip show as true. + tooltip: { + show: !0 + }, + axisTick: { + show: !0, + length: 6, + lineStyle: { + width: 1 + } + }, + axisLabel: { + show: !0, + interval: "auto" + }, + splitLine: { + show: !0, + lineStyle: { + type: "dashed", + opacity: 0.2 + } + } + }, t; + }(Mi) +); +Fs(wbe, xI.prototype); +const T3 = wbe; +var jtt = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i, a, o) { + var l = e.call(this, r, n, i) || this; + return l.type = a || "value", l.position = o || "bottom", l; + } + return t.prototype.isHorizontal = function() { + var r = this.position; + return r === "top" || r === "bottom"; + }, t.prototype.pointToData = function(r, n) { + return this.coordinateSystem.pointToData(r)[0]; + }, t; + }(Ed) +); +const $tt = jtt; +var Ibe = ["single"], Vtt = ( + /** @class */ + function() { + function e(t, r, n) { + this.type = "single", this.dimension = "single", this.dimensions = Ibe, this.axisPointerEnabled = !0, this.model = t, this._init(t, r, n); + } + return e.prototype._init = function(t, r, n) { + var i = this.dimension, a = new $tt(i, ID(t), [0, 0], t.get("type"), t.get("position")), o = a.type === "category"; + a.onBand = o && t.get("boundaryGap"), a.inverse = t.get("inverse"), a.orient = t.get("orient"), t.axis = a, a.model = t, a.coordinateSystem = this, this._axis = a; + }, e.prototype.update = function(t, r) { + t.eachSeries(function(n) { + if (n.coordinateSystem === this) { + var i = n.getData(); + Ee(i.mapDimensionsAll(this.dimension), function(a) { + this._axis.scale.unionExtentFromData(i, a); + }, this), vE(this._axis.scale, this._axis.model); + } + }, this); + }, e.prototype.resize = function(t, r) { + this._rect = js({ + left: t.get("left"), + top: t.get("top"), + right: t.get("right"), + bottom: t.get("bottom"), + width: t.get("width"), + height: t.get("height") + }, { + width: r.getWidth(), + height: r.getHeight() + }), this._adjustAxis(); + }, e.prototype.getRect = function() { + return this._rect; + }, e.prototype._adjustAxis = function() { + var t = this._rect, r = this._axis, n = r.isHorizontal(), i = n ? [0, t.width] : [0, t.height], a = r.inverse ? 1 : 0; + r.setExtent(i[a], i[1 - a]), this._updateAxisTransform(r, n ? t.x : t.y); + }, e.prototype._updateAxisTransform = function(t, r) { + var n = t.getExtent(), i = n[0] + n[1], a = t.isHorizontal(); + t.toGlobalCoord = a ? function(o) { + return o + r; + } : function(o) { + return i - o + r; + }, t.toLocalCoord = a ? function(o) { + return o - r; + } : function(o) { + return i - o + r; + }; + }, e.prototype.getAxis = function() { + return this._axis; + }, e.prototype.getBaseAxis = function() { + return this._axis; + }, e.prototype.getAxes = function() { + return [this._axis]; + }, e.prototype.getTooltipAxes = function() { + return { + baseAxes: [this.getAxis()], + // Empty otherAxes + otherAxes: [] + }; + }, e.prototype.containPoint = function(t) { + var r = this.getRect(), n = this.getAxis(), i = n.orient; + return i === "horizontal" ? n.contain(n.toLocalCoord(t[0])) && t[1] >= r.y && t[1] <= r.y + r.height : n.contain(n.toLocalCoord(t[1])) && t[0] >= r.y && t[0] <= r.y + r.height; + }, e.prototype.pointToData = function(t) { + var r = this.getAxis(); + return [r.coordToData(r.toLocalCoord(t[r.orient === "horizontal" ? 0 : 1]))]; + }, e.prototype.dataToPoint = function(t) { + var r = this.getAxis(), n = this.getRect(), i = [], a = r.orient === "horizontal" ? 0 : 1; + return t instanceof Array && (t = t[0]), i[a] = r.toGlobalCoord(r.dataToCoord(+t)), i[1 - a] = a === 0 ? n.y + n.height / 2 : n.x + n.width / 2, i; + }, e.prototype.convertToPixel = function(t, r, n) { + var i = Ole(r); + return i === this ? this.dataToPoint(n) : null; + }, e.prototype.convertFromPixel = function(t, r, n) { + var i = Ole(r); + return i === this ? this.pointToData(n) : null; + }, e; + }() +); +function Ole(e) { + var t = e.seriesModel, r = e.singleAxisModel; + return r && r.coordinateSystem || t && t.coordinateSystem; +} +function ztt(e, t) { + var r = []; + return e.eachComponent("singleAxis", function(n, i) { + var a = new Vtt(n, e, t); + a.name = "single_" + i, a.resize(n, t), n.coordinateSystem = a, r.push(a); + }), e.eachSeries(function(n) { + if (n.get("coordinateSystem") === "singleAxis") { + var i = n.getReferringComponents("singleAxis", tl).models[0]; + n.coordinateSystem = i && i.coordinateSystem; + } + }), r; +} +var Htt = { + create: ztt, + dimensions: Ibe +}; +const Wtt = Htt; +var Mle = ["x", "y"], Gtt = ["width", "height"], Ytt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.makeElOption = function(r, n, i, a, o) { + var l = i.axis, u = l.coordinateSystem, d = w3(u, 1 - t2(l)), f = u.dataToPoint(n)[0], g = a.get("type"); + if (g && g !== "none") { + var v = uY(a), y = Xtt[g](l, f, d); + y.style = v, r.graphicKey = y.type, r.pointer = y; + } + var C = XW(i); + ybe( + // @ts-ignore + n, + r, + C, + i, + a, + o + ); + }, t.prototype.getHandleTransform = function(r, n, i) { + var a = XW(n, { + labelInside: !1 + }); + a.labelMargin = i.get(["handle", "margin"]); + var o = hY(n.axis, r, a); + return { + x: o[0], + y: o[1], + rotation: a.rotation + (a.labelDirection < 0 ? Math.PI : 0) + }; + }, t.prototype.updateHandleTransform = function(r, n, i, a) { + var o = i.axis, l = o.coordinateSystem, u = t2(o), d = w3(l, u), f = [r.x, r.y]; + f[u] += n[u], f[u] = Math.min(d[1], f[u]), f[u] = Math.max(d[0], f[u]); + var g = w3(l, 1 - u), v = (g[1] + g[0]) / 2, y = [v, v]; + return y[u] = f[u], { + x: f[0], + y: f[1], + rotation: r.rotation, + cursorPoint: y, + tooltipOption: { + verticalAlign: "middle" + } + }; + }, t; + }(cY) +), Xtt = { + line: function(e, t, r) { + var n = dY([t, r[0]], [t, r[1]], t2(e)); + return { + type: "Line", + subPixelOptimize: !0, + shape: n + }; + }, + shadow: function(e, t, r) { + var n = e.getBandWidth(), i = r[1] - r[0]; + return { + type: "Rect", + shape: _be([t - n / 2, r[0]], [n, i], t2(e)) + }; + } +}; +function t2(e) { + return e.isHorizontal() ? 0 : 1; +} +function w3(e, t) { + var r = e.getRect(); + return [r[Mle[t]], r[Mle[t]] + r[Gtt[t]]]; +} +const Ktt = Ytt; +var Ztt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "single", t; + }(Co) +); +function qtt(e) { + ii(LD), NE.registerAxisPointerClass("SingleAxisPointer", Ktt), e.registerComponentView(Ztt), e.registerComponentView(Utt), e.registerComponentModel(T3), Hw(e, "single", T3, T3.defaultOption), e.registerCoordinateSystem("single", Wtt); +} +var Jtt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n, i) { + var a = _I(r); + e.prototype.init.apply(this, arguments), kle(r, a); + }, t.prototype.mergeOption = function(r) { + e.prototype.mergeOption.apply(this, arguments), kle(this.option, r); + }, t.prototype.getCellSize = function() { + return this.option.cellSize; + }, t.type = "calendar", t.defaultOption = { + // zlevel: 0, + z: 2, + left: 80, + top: 60, + cellSize: 20, + // horizontal vertical + orient: "horizontal", + // month separate line style + splitLine: { + show: !0, + lineStyle: { + color: "#000", + width: 1, + type: "solid" + } + }, + // rect style temporarily unused emphasis + itemStyle: { + color: "#fff", + borderWidth: 1, + borderColor: "#ccc" + }, + // week text style + dayLabel: { + show: !0, + firstDay: 0, + // start end + position: "start", + margin: "50%", + color: "#000" + }, + // month text style + monthLabel: { + show: !0, + // start end + position: "start", + margin: 5, + // center or left + align: "center", + formatter: null, + color: "#000" + }, + // year text style + yearLabel: { + show: !0, + // top bottom left right + position: null, + margin: 30, + formatter: null, + color: "#ccc", + fontFamily: "sans-serif", + fontWeight: "bolder", + fontSize: 20 + } + }, t; + }(Mi) +); +function kle(e, t) { + var r = e.cellSize, n; + qt(r) ? n = r : n = e.cellSize = [r, r], n.length === 1 && (n[1] = n[0]); + var i = er([0, 1], function(a) { + return cHe(t, a) && (n[a] = "auto"), n[a] != null && n[a] !== "auto"; + }); + m0(e, t, { + type: "box", + ignoreSize: i + }); +} +const Qtt = Jtt; +var ert = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + var a = this.group; + a.removeAll(); + var o = r.coordinateSystem, l = o.getRangeInfo(), u = o.getOrient(), d = n.getLocaleModel(); + this._renderDayRect(r, l, a), this._renderLines(r, l, u, a), this._renderYearText(r, l, u, a), this._renderMonthText(r, d, u, a), this._renderWeekText(r, d, l, u, a); + }, t.prototype._renderDayRect = function(r, n, i) { + for (var a = r.coordinateSystem, o = r.getModel("itemStyle").getItemStyle(), l = a.getCellWidth(), u = a.getCellHeight(), d = n.start.time; d <= n.end.time; d = a.getNextNDay(d, 1).time) { + var f = a.dataToRect([d], !1).tl, g = new Xi({ + shape: { + x: f[0], + y: f[1], + width: l, + height: u + }, + cursor: "default", + style: o + }); + i.add(g); + } + }, t.prototype._renderLines = function(r, n, i, a) { + var o = this, l = r.coordinateSystem, u = r.getModel(["splitLine", "lineStyle"]).getLineStyle(), d = r.get(["splitLine", "show"]), f = u.lineWidth; + this._tlpoints = [], this._blpoints = [], this._firstDayOfMonth = [], this._firstDayPoints = []; + for (var g = n.start, v = 0; g.time <= n.end.time; v++) { + C(g.formatedDate), v === 0 && (g = l.getDateInfo(n.start.y + "-" + n.start.m)); + var y = g.date; + y.setMonth(y.getMonth() + 1), g = l.getDateInfo(y); + } + C(l.getNextNDay(n.end.time, 1).formatedDate); + function C(A) { + o._firstDayOfMonth.push(l.getDateInfo(A)), o._firstDayPoints.push(l.dataToRect([A], !1).tl); + var S = o._getLinePointsOfOneWeek(r, A, i); + o._tlpoints.push(S[0]), o._blpoints.push(S[S.length - 1]), d && o._drawSplitline(S, u, a); + } + d && this._drawSplitline(o._getEdgesPoints(o._tlpoints, f, i), u, a), d && this._drawSplitline(o._getEdgesPoints(o._blpoints, f, i), u, a); + }, t.prototype._getEdgesPoints = function(r, n, i) { + var a = [r[0].slice(), r[r.length - 1].slice()], o = i === "horizontal" ? 0 : 1; + return a[0][o] = a[0][o] - n / 2, a[1][o] = a[1][o] + n / 2, a; + }, t.prototype._drawSplitline = function(r, n, i) { + var a = new $u({ + z2: 20, + shape: { + points: r + }, + style: n + }); + i.add(a); + }, t.prototype._getLinePointsOfOneWeek = function(r, n, i) { + for (var a = r.coordinateSystem, o = a.getDateInfo(n), l = [], u = 0; u < 7; u++) { + var d = a.getNextNDay(o.time, u), f = a.dataToRect([d.time], !1); + l[2 * d.day] = f.tl, l[2 * d.day + 1] = f[i === "horizontal" ? "bl" : "tr"]; + } + return l; + }, t.prototype._formatterLabel = function(r, n) { + return wr(r) && r ? oHe(r, n) : Kr(r) ? r(n) : n.nameMap; + }, t.prototype._yearTextPositionControl = function(r, n, i, a, o) { + var l = n[0], u = n[1], d = ["center", "bottom"]; + a === "bottom" ? (u += o, d = ["center", "top"]) : a === "left" ? l -= o : a === "right" ? (l += o, d = ["center", "top"]) : u -= o; + var f = 0; + return (a === "left" || a === "right") && (f = Math.PI / 2), { + rotation: f, + x: l, + y: u, + style: { + align: d[0], + verticalAlign: d[1] + } + }; + }, t.prototype._renderYearText = function(r, n, i, a) { + var o = r.getModel("yearLabel"); + if (o.get("show")) { + var l = o.get("margin"), u = o.get("position"); + u || (u = i !== "horizontal" ? "top" : "left"); + var d = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]], f = (d[0][0] + d[1][0]) / 2, g = (d[0][1] + d[1][1]) / 2, v = i === "horizontal" ? 0 : 1, y = { + top: [f, d[v][1]], + bottom: [f, d[1 - v][1]], + left: [d[1 - v][0], g], + right: [d[v][0], g] + }, C = n.start.y; + +n.end.y > +n.start.y && (C = C + "-" + n.end.y); + var A = o.get("formatter"), S = { + start: n.start.y, + end: n.end.y, + nameMap: C + }, _ = this._formatterLabel(A, S), E = new Hi({ + z2: 30, + style: uo(o, { + text: _ + }) + }); + E.attr(this._yearTextPositionControl(E, y[u], i, u, l)), a.add(E); + } + }, t.prototype._monthTextPositionControl = function(r, n, i, a, o) { + var l = "left", u = "top", d = r[0], f = r[1]; + return i === "horizontal" ? (f = f + o, n && (l = "center"), a === "start" && (u = "bottom")) : (d = d + o, n && (u = "middle"), a === "start" && (l = "right")), { + x: d, + y: f, + align: l, + verticalAlign: u + }; + }, t.prototype._renderMonthText = function(r, n, i, a) { + var o = r.getModel("monthLabel"); + if (o.get("show")) { + var l = o.get("nameMap"), u = o.get("margin"), d = o.get("position"), f = o.get("align"), g = [this._tlpoints, this._blpoints]; + (!l || wr(l)) && (l && (n = iW(l) || n), l = n.get(["time", "monthAbbr"]) || []); + var v = d === "start" ? 0 : 1, y = i === "horizontal" ? 0 : 1; + u = d === "start" ? -u : u; + for (var C = f === "center", A = 0; A < g[v].length - 1; A++) { + var S = g[v][A].slice(), _ = this._firstDayOfMonth[A]; + if (C) { + var E = this._firstDayPoints[A]; + S[y] = (E[y] + g[0][A + 1][y]) / 2; + } + var I = o.get("formatter"), w = l[+_.m - 1], x = { + yyyy: _.y, + yy: (_.y + "").slice(2), + MM: _.m, + M: +_.m, + nameMap: w + }, b = this._formatterLabel(I, x), R = new Hi({ + z2: 30, + style: $t(uo(o, { + text: b + }), this._monthTextPositionControl(S, C, i, d, u)) + }); + a.add(R); + } + } + }, t.prototype._weekTextPositionControl = function(r, n, i, a, o) { + var l = "center", u = "middle", d = r[0], f = r[1], g = i === "start"; + return n === "horizontal" ? (d = d + a + (g ? 1 : -1) * o[0] / 2, l = g ? "right" : "left") : (f = f + a + (g ? 1 : -1) * o[1] / 2, u = g ? "bottom" : "top"), { + x: d, + y: f, + align: l, + verticalAlign: u + }; + }, t.prototype._renderWeekText = function(r, n, i, a, o) { + var l = r.getModel("dayLabel"); + if (l.get("show")) { + var u = r.coordinateSystem, d = l.get("position"), f = l.get("nameMap"), g = l.get("margin"), v = u.getFirstDayOfWeek(); + if (!f || wr(f)) { + f && (n = iW(f) || n); + var y = n.get(["time", "dayOfWeekShort"]); + f = y || er(n.get(["time", "dayOfWeekAbbr"]), function(x) { + return x[0]; + }); + } + var C = u.getNextNDay(i.end.time, 7 - i.lweek).time, A = [u.getCellWidth(), u.getCellHeight()]; + g = yr(g, Math.min(A[1], A[0])), d === "start" && (C = u.getNextNDay(i.start.time, -(7 + i.fweek)).time, g = -g); + for (var S = 0; S < 7; S++) { + var _ = u.getNextNDay(C, S), E = u.dataToRect([_.time], !1).center, I = S; + I = Math.abs((S + v) % 7); + var w = new Hi({ + z2: 30, + style: $t(uo(l, { + text: f[I] + }), this._weekTextPositionControl(E, a, d, g, A)) + }); + o.add(w); + } + } + }, t.type = "calendar", t; + }(Co) +); +const trt = ert; +var I3 = 864e5, rrt = ( + /** @class */ + function() { + function e(t, r, n) { + this.type = "calendar", this.dimensions = e.dimensions, this.getDimensionsInfo = e.getDimensionsInfo, this._model = t; + } + return e.getDimensionsInfo = function() { + return [{ + name: "time", + type: "time" + }, "value"]; + }, e.prototype.getRangeInfo = function() { + return this._rangeInfo; + }, e.prototype.getModel = function() { + return this._model; + }, e.prototype.getRect = function() { + return this._rect; + }, e.prototype.getCellWidth = function() { + return this._sw; + }, e.prototype.getCellHeight = function() { + return this._sh; + }, e.prototype.getOrient = function() { + return this._orient; + }, e.prototype.getFirstDayOfWeek = function() { + return this._firstDayOfWeek; + }, e.prototype.getDateInfo = function(t) { + t = vd(t); + var r = t.getFullYear(), n = t.getMonth() + 1, i = n < 10 ? "0" + n : "" + n, a = t.getDate(), o = a < 10 ? "0" + a : "" + a, l = t.getDay(); + return l = Math.abs((l + 7 - this.getFirstDayOfWeek()) % 7), { + y: r + "", + m: i, + d: o, + day: l, + time: t.getTime(), + formatedDate: r + "-" + i + "-" + o, + date: t + }; + }, e.prototype.getNextNDay = function(t, r) { + return r = r || 0, r === 0 ? this.getDateInfo(t) : (t = new Date(this.getDateInfo(t).time), t.setDate(t.getDate() + r), this.getDateInfo(t)); + }, e.prototype.update = function(t, r) { + this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"), this._orient = this._model.get("orient"), this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0, this._rangeInfo = this._getRangeInfo(this._initRangeOption()); + var n = this._rangeInfo.weeks || 1, i = ["width", "height"], a = this._model.getCellSize().slice(), o = this._model.getBoxLayoutParams(), l = this._orient === "horizontal" ? [n, 7] : [7, n]; + Ee([0, 1], function(g) { + f(a, g) && (o[i[g]] = a[g] * l[g]); + }); + var u = { + width: r.getWidth(), + height: r.getHeight() + }, d = this._rect = js(o, u); + Ee([0, 1], function(g) { + f(a, g) || (a[g] = d[i[g]] / l[g]); + }); + function f(g, v) { + return g[v] != null && g[v] !== "auto"; + } + this._sw = a[0], this._sh = a[1]; + }, e.prototype.dataToPoint = function(t, r) { + qt(t) && (t = t[0]), r == null && (r = !0); + var n = this.getDateInfo(t), i = this._rangeInfo, a = n.formatedDate; + if (r && !(n.time >= i.start.time && n.time < i.end.time + I3)) + return [NaN, NaN]; + var o = n.day, l = this._getRangeInfo([i.start.time, a]).nthWeek; + return this._orient === "vertical" ? [this._rect.x + o * this._sw + this._sw / 2, this._rect.y + l * this._sh + this._sh / 2] : [this._rect.x + l * this._sw + this._sw / 2, this._rect.y + o * this._sh + this._sh / 2]; + }, e.prototype.pointToData = function(t) { + var r = this.pointToDate(t); + return r && r.time; + }, e.prototype.dataToRect = function(t, r) { + var n = this.dataToPoint(t, r); + return { + contentShape: { + x: n[0] - (this._sw - this._lineWidth) / 2, + y: n[1] - (this._sh - this._lineWidth) / 2, + width: this._sw - this._lineWidth, + height: this._sh - this._lineWidth + }, + center: n, + tl: [n[0] - this._sw / 2, n[1] - this._sh / 2], + tr: [n[0] + this._sw / 2, n[1] - this._sh / 2], + br: [n[0] + this._sw / 2, n[1] + this._sh / 2], + bl: [n[0] - this._sw / 2, n[1] + this._sh / 2] + }; + }, e.prototype.pointToDate = function(t) { + var r = Math.floor((t[0] - this._rect.x) / this._sw) + 1, n = Math.floor((t[1] - this._rect.y) / this._sh) + 1, i = this._rangeInfo.range; + return this._orient === "vertical" ? this._getDateByWeeksAndDay(n, r - 1, i) : this._getDateByWeeksAndDay(r, n - 1, i); + }, e.prototype.convertToPixel = function(t, r, n) { + var i = Ple(r); + return i === this ? i.dataToPoint(n) : null; + }, e.prototype.convertFromPixel = function(t, r, n) { + var i = Ple(r); + return i === this ? i.pointToData(n) : null; + }, e.prototype.containPoint = function(t) { + return console.warn("Not implemented."), !1; + }, e.prototype._initRangeOption = function() { + var t = this._model.get("range"), r; + if (qt(t) && t.length === 1 && (t = t[0]), qt(t)) + r = t; + else { + var n = t.toString(); + if (/^\d{4}$/.test(n) && (r = [n + "-01-01", n + "-12-31"]), /^\d{4}[\/|-]\d{1,2}$/.test(n)) { + var i = this.getDateInfo(n), a = i.date; + a.setMonth(a.getMonth() + 1); + var o = this.getNextNDay(a, -1); + r = [i.formatedDate, o.formatedDate]; + } + /^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(n) && (r = [n, n]); + } + if (!r) + return t; + var l = this._getRangeInfo(r); + return l.start.time > l.end.time && r.reverse(), r; + }, e.prototype._getRangeInfo = function(t) { + var r = [this.getDateInfo(t[0]), this.getDateInfo(t[1])], n; + r[0].time > r[1].time && (n = !0, r.reverse()); + var i = Math.floor(r[1].time / I3) - Math.floor(r[0].time / I3) + 1, a = new Date(r[0].time), o = a.getDate(), l = r[1].date.getDate(); + a.setDate(o + i - 1); + var u = a.getDate(); + if (u !== l) + for (var d = a.getTime() - r[1].time > 0 ? 1 : -1; (u = a.getDate()) !== l && (a.getTime() - r[1].time) * d > 0; ) + i -= d, a.setDate(u - d); + var f = Math.floor((i + r[0].day + 6) / 7), g = n ? -f + 1 : f - 1; + return n && r.reverse(), { + range: [r[0].formatedDate, r[1].formatedDate], + start: r[0], + end: r[1], + allDay: i, + weeks: f, + // From 0. + nthWeek: g, + fweek: r[0].day, + lweek: r[1].day + }; + }, e.prototype._getDateByWeeksAndDay = function(t, r, n) { + var i = this._getRangeInfo(n); + if (t > i.weeks || t === 0 && r < i.fweek || t === i.weeks && r > i.lweek) + return null; + var a = (t - 1) * 7 - i.fweek + r, o = new Date(i.start.time); + return o.setDate(+i.start.d + a), this.getDateInfo(o); + }, e.create = function(t, r) { + var n = []; + return t.eachComponent("calendar", function(i) { + var a = new e(i); + n.push(a), i.coordinateSystem = a; + }), t.eachSeries(function(i) { + i.get("coordinateSystem") === "calendar" && (i.coordinateSystem = n[i.get("calendarIndex") || 0]); + }), n; + }, e.dimensions = ["time", "value"], e; + }() +); +function Ple(e) { + var t = e.calendarModel, r = e.seriesModel, n = t ? t.coordinateSystem : r ? r.coordinateSystem : null; + return n; +} +const nrt = rrt; +function irt(e) { + e.registerComponentModel(Qtt), e.registerComponentView(trt), e.registerCoordinateSystem("calendar", nrt); +} +function art(e, t) { + var r = e.existing; + if (t.id = e.keyInfo.id, !t.type && r && (t.type = r.type), t.parentId == null) { + var n = t.parentOption; + n ? t.parentId = n.id : r && (t.parentId = r.parentId); + } + t.parentOption = null; +} +function Nle(e, t) { + var r; + return Ee(t, function(n) { + e[n] != null && e[n] !== "auto" && (r = !0); + }), r; +} +function ort(e, t, r) { + var n = $t({}, r), i = e[t], a = r.$action || "merge"; + a === "merge" ? i ? (Qn(i, n, !0), m0(i, n, { + ignoreSize: !0 + }), Kme(r, i), AP(r, i), AP(r, i, "shape"), AP(r, i, "style"), AP(r, i, "extra"), r.clipPath = i.clipPath) : e[t] = n : a === "replace" ? e[t] = n : a === "remove" && i && (e[t] = null); +} +var xbe = ["transition", "enterFrom", "leaveTo"], srt = xbe.concat(["enterAnimation", "updateAnimation", "leaveAnimation"]); +function AP(e, t, r) { + if (r && (!e[r] && t[r] && (e[r] = {}), e = e[r], t = t[r]), !(!e || !t)) + for (var n = r ? xbe : srt, i = 0; i < n.length; i++) { + var a = n[i]; + e[a] == null && t[a] != null && (e[a] = t[a]); + } +} +function lrt(e, t) { + if (e && (e.hv = t.hv = [ + // Rigid body, don't care about `width`. + Nle(t, ["left", "right"]), + // Rigid body, don't care about `height`. + Nle(t, ["top", "bottom"]) + ], e.type === "group")) { + var r = e, n = t; + r.width == null && (r.width = n.width = 0), r.height == null && (r.height = n.height = 0); + } +} +var crt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.preventAutoZ = !0, r; + } + return t.prototype.mergeOption = function(r, n) { + var i = this.option.elements; + this.option.elements = null, e.prototype.mergeOption.call(this, r, n), this.option.elements = i; + }, t.prototype.optionUpdated = function(r, n) { + var i = this.option, a = (n ? i : r).elements, o = i.elements = n ? [] : i.elements, l = []; + this._flatten(a, l, null); + var u = kve(o, l, "normalMerge"), d = this._elOptionsToUpdate = []; + Ee(u, function(f, g) { + var v = f.newOption; + v && (d.push(v), art(f, v), ort(o, g, v), lrt(o[g], v)); + }, this), i.elements = Ma(o, function(f) { + return f && delete f.$action, f != null; + }); + }, t.prototype._flatten = function(r, n, i) { + Ee(r, function(a) { + if (a) { + i && (a.parentOption = i), n.push(a); + var o = a.children; + o && o.length && this._flatten(o, n, a), delete a.children; + } + }, this); + }, t.prototype.useElOptionsToUpdate = function() { + var r = this._elOptionsToUpdate; + return this._elOptionsToUpdate = null, r; + }, t.type = "graphic", t.defaultOption = { + elements: [] + // parentId: null + }, t; + }(Mi) +), Lle = { + // Reserved but not supported in graphic component. + path: null, + compoundPath: null, + // Supported in graphic component. + group: _n, + image: ec, + text: Hi +}, df = ea(), urt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function() { + this._elMap = $r(); + }, t.prototype.render = function(r, n, i) { + r !== this._lastGraphicModel && this._clear(), this._lastGraphicModel = r, this._updateElements(r), this._relocate(r, i); + }, t.prototype._updateElements = function(r) { + var n = r.useElOptionsToUpdate(); + if (n) { + var i = this._elMap, a = this.group, o = r.get("z"), l = r.get("zlevel"); + Ee(n, function(u) { + var d = ml(u.id, null), f = d != null ? i.get(d) : null, g = ml(u.parentId, null), v = g != null ? i.get(g) : a, y = u.type, C = u.style; + y === "text" && C && u.hv && u.hv[1] && (C.textVerticalAlign = C.textBaseline = C.verticalAlign = C.align = null); + var A = u.textContent, S = u.textConfig; + if (C && obe(C, y, !!S, !!A)) { + var _ = sbe(C, y, !0); + !S && _.textConfig && (S = u.textConfig = _.textConfig), !A && _.textContent && (A = _.textContent); + } + var E = hrt(u), I = u.$action || "merge", w = I === "merge", x = I === "replace"; + if (w) { + var b = !f, R = f; + b ? R = Fle(d, v, u.type, i) : (R && (df(R).isNew = !1), hbe(R)), R && (PN(R, E, r, { + isInit: b + }), Ble(R, u, o, l)); + } else if (x) { + LN(f, u, i, r); + var M = Fle(d, v, u.type, i); + M && (PN(M, E, r, { + isInit: !0 + }), Ble(M, u, o, l)); + } else + I === "remove" && (cbe(f, u), LN(f, u, i, r)); + var O = i.get(d); + if (O && A) + if (w) { + var P = O.getTextContent(); + P ? P.attr(A) : O.setTextContent(new Hi(A)); + } else + x && O.setTextContent(new Hi(A)); + if (O) { + var B = u.clipPath; + if (B) { + var H = B.type, Y = void 0, b = !1; + if (w) { + var X = O.getClipPath(); + b = !X || df(X).type !== H, Y = b ? KW(H) : X; + } else + x && (b = !0, Y = KW(H)); + O.setClipPath(Y), PN(Y, B, r, { + isInit: b + }), QL(Y, B.keyframeAnimation, r); + } + var ee = df(O); + O.setTextConfig(S), ee.option = u, drt(O, r, u), vI({ + el: O, + componentModel: r, + itemName: O.name, + itemTooltipOption: u.tooltip + }), QL(O, u.keyframeAnimation, r); + } + }); + } + }, t.prototype._relocate = function(r, n) { + for (var i = r.option.elements, a = this.group, o = this._elMap, l = n.getWidth(), u = n.getHeight(), d = ["x", "y"], f = 0; f < i.length; f++) { + var g = i[f], v = ml(g.id, null), y = v != null ? o.get(v) : null; + if (!(!y || !y.isGroup)) { + var C = y.parent, A = C === a, S = df(y), _ = df(C); + S.width = yr(S.option.width, A ? l : _.width) || 0, S.height = yr(S.option.height, A ? u : _.height) || 0; + } + } + for (var f = i.length - 1; f >= 0; f--) { + var g = i[f], v = ml(g.id, null), y = v != null ? o.get(v) : null; + if (y) { + var C = y.parent, _ = df(C), E = C === a ? { + width: l, + height: u + } : { + width: _.width, + height: _.height + }, I = {}, w = BF(y, g, E, null, { + hv: g.hv, + boundingMode: g.bounding + }, I); + if (!df(y).isNew && w) { + for (var x = g.transition, b = {}, R = 0; R < d.length; R++) { + var M = d[R], O = I[M]; + x && (Qb(x) || di(x, M) >= 0) ? b[M] = O : y[M] = O; + } + ia(y, b, r, 0); + } else + y.attr(I); + } + } + }, t.prototype._clear = function() { + var r = this, n = this._elMap; + n.each(function(i) { + LN(i, df(i).option, n, r._lastGraphicModel); + }), this._elMap = $r(); + }, t.prototype.dispose = function() { + this._clear(); + }, t.type = "graphic", t; + }(Co) +); +function KW(e) { + var t = Lr(Lle, e) ? Lle[e] : DF(e), r = new t({}); + return df(r).type = e, r; +} +function Fle(e, t, r, n) { + var i = KW(r); + return t.add(i), n.set(e, i), df(i).id = e, df(i).isNew = !0, i; +} +function LN(e, t, r, n) { + var i = e && e.parent; + i && (e.type === "group" && e.traverse(function(a) { + LN(a, t, r, n); + }), nB(e, t, n), r.removeKey(df(e).id)); +} +function Ble(e, t, r, n) { + e.isGroup || Ee([ + ["cursor", Tf.prototype.cursor], + // We should not support configure z and zlevel in the element level. + // But seems we didn't limit it previously. So here still use it to avoid breaking. + ["zlevel", n || 0], + ["z", r || 0], + // z2 must not be null/undefined, otherwise sort error may occur. + ["z2", 0] + ], function(i) { + var a = i[0]; + Lr(t, a) ? e[a] = Fn(t[a], i[1]) : e[a] == null && (e[a] = i[1]); + }), Ee(Ri(t), function(i) { + if (i.indexOf("on") === 0) { + var a = t[i]; + e[i] = Kr(a) ? a : null; + } + }), Lr(t, "draggable") && (e.draggable = t.draggable), t.name != null && (e.name = t.name), t.id != null && (e.id = t.id); +} +function hrt(e) { + return e = $t({}, e), Ee(["id", "parentId", "$action", "hv", "bounding", "textContent", "clipPath"].concat(Xme), function(t) { + delete e[t]; + }), e; +} +function drt(e, t, r) { + var n = Tn(e).eventData; + !e.silent && !e.ignore && !n && (n = Tn(e).eventData = { + componentType: "graphic", + componentIndex: t.componentIndex, + name: e.name + }), n && (n.info = r.info); +} +function frt(e) { + e.registerComponentModel(crt), e.registerComponentView(urt), e.registerPreprocessor(function(t) { + var r = t.graphic; + qt(r) ? !r[0] || !r[0].elements ? t.graphic = [{ + elements: r + }] : t.graphic = [t.graphic[0]] : r && !r.elements && (t.graphic = [{ + elements: [r] + }]); + }); +} +var Ule = ["x", "y", "radius", "angle", "single"], prt = ["cartesian2d", "polar", "singleAxis"]; +function grt(e) { + var t = e.get("coordinateSystem"); + return di(prt, t) >= 0; +} +function Q_(e) { + return e + "Axis"; +} +function vrt(e, t) { + var r = $r(), n = [], i = $r(); + e.eachComponent({ + mainType: "dataZoom", + query: t + }, function(f) { + i.get(f.uid) || l(f); + }); + var a; + do + a = !1, e.eachComponent("dataZoom", o); + while (a); + function o(f) { + !i.get(f.uid) && u(f) && (l(f), a = !0); + } + function l(f) { + i.set(f.uid, !0), n.push(f), d(f); + } + function u(f) { + var g = !1; + return f.eachTargetAxis(function(v, y) { + var C = r.get(v); + C && C[y] && (g = !0); + }), g; + } + function d(f) { + f.eachTargetAxis(function(g, v) { + (r.get(g) || r.set(g, []))[v] = !0; + }); + } + return n; +} +function Abe(e) { + var t = e.ecModel, r = { + infoList: [], + infoMap: $r() + }; + return e.eachTargetAxis(function(n, i) { + var a = t.getComponent(Q_(n), i); + if (a) { + var o = a.getCoordSysModel(); + if (o) { + var l = o.uid, u = r.infoMap.get(l); + u || (u = { + model: o, + axisModels: [] + }, r.infoList.push(u), r.infoMap.set(l, u)), u.axisModels.push(a); + } + } + }), r; +} +var x3 = ( + /** @class */ + function() { + function e() { + this.indexList = [], this.indexMap = []; + } + return e.prototype.add = function(t) { + this.indexMap[t] || (this.indexList.push(t), this.indexMap[t] = !0); + }, e; + }() +), mrt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._autoThrottle = !0, r._noTarget = !0, r._rangePropMode = ["percent", "percent"], r; + } + return t.prototype.init = function(r, n, i) { + var a = jle(r); + this.settledOption = a, this.mergeDefaultAndTheme(r, i), this._doInit(a); + }, t.prototype.mergeOption = function(r) { + var n = jle(r); + Qn(this.option, r, !0), Qn(this.settledOption, n, !0), this._doInit(n); + }, t.prototype._doInit = function(r) { + var n = this.option; + this._setDefaultThrottle(r), this._updateRangeUse(r); + var i = this.settledOption; + Ee([["start", "startValue"], ["end", "endValue"]], function(a, o) { + this._rangePropMode[o] === "value" && (n[a[0]] = i[a[0]] = null); + }, this), this._resetTarget(); + }, t.prototype._resetTarget = function() { + var r = this.get("orient", !0), n = this._targetAxisInfoMap = $r(), i = this._fillSpecifiedTargetAxis(n); + i ? this._orient = r || this._makeAutoOrientByTargetAxis() : (this._orient = r || "horizontal", this._fillAutoTargetAxisByOrient(n, this._orient)), this._noTarget = !0, n.each(function(a) { + a.indexList.length && (this._noTarget = !1); + }, this); + }, t.prototype._fillSpecifiedTargetAxis = function(r) { + var n = !1; + return Ee(Ule, function(i) { + var a = this.getReferringComponents(Q_(i), zze); + if (a.specified) { + n = !0; + var o = new x3(); + Ee(a.models, function(l) { + o.add(l.componentIndex); + }), r.set(i, o); + } + }, this), n; + }, t.prototype._fillAutoTargetAxisByOrient = function(r, n) { + var i = this.ecModel, a = !0; + if (a) { + var o = n === "vertical" ? "y" : "x", l = i.findComponents({ + mainType: o + "Axis" + }); + u(l, o); + } + if (a) { + var l = i.findComponents({ + mainType: "singleAxis", + filter: function(f) { + return f.get("orient", !0) === n; + } + }); + u(l, "single"); + } + function u(d, f) { + var g = d[0]; + if (g) { + var v = new x3(); + if (v.add(g.componentIndex), r.set(f, v), a = !1, f === "x" || f === "y") { + var y = g.getReferringComponents("grid", tl).models[0]; + y && Ee(d, function(C) { + g.componentIndex !== C.componentIndex && y === C.getReferringComponents("grid", tl).models[0] && v.add(C.componentIndex); + }); + } + } + } + a && Ee(Ule, function(d) { + if (a) { + var f = i.findComponents({ + mainType: Q_(d), + filter: function(v) { + return v.get("type", !0) === "category"; + } + }); + if (f[0]) { + var g = new x3(); + g.add(f[0].componentIndex), r.set(d, g), a = !1; + } + } + }, this); + }, t.prototype._makeAutoOrientByTargetAxis = function() { + var r; + return this.eachTargetAxis(function(n) { + !r && (r = n); + }, this), r === "y" ? "vertical" : "horizontal"; + }, t.prototype._setDefaultThrottle = function(r) { + if (r.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) { + var n = this.ecModel.option; + this.option.throttle = n.animation && n.animationDurationUpdate > 0 ? 100 : 20; + } + }, t.prototype._updateRangeUse = function(r) { + var n = this._rangePropMode, i = this.get("rangeMode"); + Ee([["start", "startValue"], ["end", "endValue"]], function(a, o) { + var l = r[a[0]] != null, u = r[a[1]] != null; + l && !u ? n[o] = "percent" : !l && u ? n[o] = "value" : i ? n[o] = i[o] : l && (n[o] = "percent"); + }); + }, t.prototype.noTarget = function() { + return this._noTarget; + }, t.prototype.getFirstTargetAxisModel = function() { + var r; + return this.eachTargetAxis(function(n, i) { + r == null && (r = this.ecModel.getComponent(Q_(n), i)); + }, this), r; + }, t.prototype.eachTargetAxis = function(r, n) { + this._targetAxisInfoMap.each(function(i, a) { + Ee(i.indexList, function(o) { + r.call(n, a, o); + }); + }); + }, t.prototype.getAxisProxy = function(r, n) { + var i = this.getAxisModel(r, n); + if (i) + return i.__dzAxisProxy; + }, t.prototype.getAxisModel = function(r, n) { + var i = this._targetAxisInfoMap.get(r); + if (i && i.indexMap[n]) + return this.ecModel.getComponent(Q_(r), n); + }, t.prototype.setRawRange = function(r) { + var n = this.option, i = this.settledOption; + Ee([["start", "startValue"], ["end", "endValue"]], function(a) { + (r[a[0]] != null || r[a[1]] != null) && (n[a[0]] = i[a[0]] = r[a[0]], n[a[1]] = i[a[1]] = r[a[1]]); + }, this), this._updateRangeUse(r); + }, t.prototype.setCalculatedRange = function(r) { + var n = this.option; + Ee(["start", "startValue", "end", "endValue"], function(i) { + n[i] = r[i]; + }); + }, t.prototype.getPercentRange = function() { + var r = this.findRepresentativeAxisProxy(); + if (r) + return r.getDataPercentWindow(); + }, t.prototype.getValueRange = function(r, n) { + if (r == null && n == null) { + var i = this.findRepresentativeAxisProxy(); + if (i) + return i.getDataValueWindow(); + } else + return this.getAxisProxy(r, n).getDataValueWindow(); + }, t.prototype.findRepresentativeAxisProxy = function(r) { + if (r) + return r.__dzAxisProxy; + for (var n, i = this._targetAxisInfoMap.keys(), a = 0; a < i.length; a++) + for (var o = i[a], l = this._targetAxisInfoMap.get(o), u = 0; u < l.indexList.length; u++) { + var d = this.getAxisProxy(o, l.indexList[u]); + if (d.hostedBy(this)) + return d; + n || (n = d); + } + return n; + }, t.prototype.getRangePropMode = function() { + return this._rangePropMode.slice(); + }, t.prototype.getOrient = function() { + return this._orient; + }, t.type = "dataZoom", t.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"], t.defaultOption = { + // zlevel: 0, + z: 4, + filterMode: "filter", + start: 0, + end: 100 + }, t; + }(Mi) +); +function jle(e) { + var t = {}; + return Ee(["start", "end", "startValue", "endValue", "throttle"], function(r) { + e.hasOwnProperty(r) && (t[r] = e[r]); + }), t; +} +const PR = mrt; +var yrt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "dataZoom.select", t; + }(PR) +); +const _rt = yrt; +var Srt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i, a) { + this.dataZoomModel = r, this.ecModel = n, this.api = i; + }, t.type = "dataZoom", t; + }(Co) +); +const vY = Srt; +var brt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "dataZoom.select", t; + }(vY) +); +const Ert = brt; +var JT = Ee, $le = ld, Crt = ( + /** @class */ + function() { + function e(t, r, n, i) { + this._dimName = t, this._axisIndex = r, this.ecModel = i, this._dataZoomModel = n; + } + return e.prototype.hostedBy = function(t) { + return this._dataZoomModel === t; + }, e.prototype.getDataValueWindow = function() { + return this._valueWindow.slice(); + }, e.prototype.getDataPercentWindow = function() { + return this._percentWindow.slice(); + }, e.prototype.getTargetSeriesModels = function() { + var t = []; + return this.ecModel.eachSeries(function(r) { + if (grt(r)) { + var n = Q_(this._dimName), i = r.getReferringComponents(n, tl).models[0]; + i && this._axisIndex === i.componentIndex && t.push(r); + } + }, this), t; + }, e.prototype.getAxisModel = function() { + return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex); + }, e.prototype.getMinMaxSpan = function() { + return cn(this._minMaxSpan); + }, e.prototype.calculateDataWindow = function(t) { + var r = this._dataExtent, n = this.getAxisModel(), i = n.axis.scale, a = this._dataZoomModel.getRangePropMode(), o = [0, 100], l = [], u = [], d; + JT(["start", "end"], function(v, y) { + var C = t[v], A = t[v + "Value"]; + a[y] === "percent" ? (C == null && (C = o[y]), A = i.parse(Ea(C, o, r))) : (d = !0, A = A == null ? r[y] : i.parse(A), C = Ea(A, r, o)), u[y] = A == null || isNaN(A) ? r[y] : A, l[y] = C == null || isNaN(C) ? o[y] : C; + }), $le(u), $le(l); + var f = this._minMaxSpan; + d ? g(u, l, r, o, !1) : g(l, u, o, r, !0); + function g(v, y, C, A, S) { + var _ = S ? "Span" : "ValueSpan"; + LE(0, v, C, "all", f["min" + _], f["max" + _]); + for (var E = 0; E < 2; E++) + y[E] = Ea(v[E], C, A, !0), S && (y[E] = i.parse(y[E])); + } + return { + valueWindow: u, + percentWindow: l + }; + }, e.prototype.reset = function(t) { + if (t === this._dataZoomModel) { + var r = this.getTargetSeriesModels(); + this._dataExtent = Trt(this, this._dimName, r), this._updateMinMaxSpan(); + var n = this.calculateDataWindow(t.settledOption); + this._valueWindow = n.valueWindow, this._percentWindow = n.percentWindow, this._setAxisModel(); + } + }, e.prototype.filterData = function(t, r) { + if (t !== this._dataZoomModel) + return; + var n = this._dimName, i = this.getTargetSeriesModels(), a = t.get("filterMode"), o = this._valueWindow; + if (a === "none") + return; + JT(i, function(u) { + var d = u.getData(), f = d.mapDimensionsAll(n); + if (f.length) { + if (a === "weakFilter") { + var g = d.getStore(), v = er(f, function(y) { + return d.getDimensionIndex(y); + }, d); + d.filterSelf(function(y) { + for (var C, A, S, _ = 0; _ < f.length; _++) { + var E = g.get(v[_], y), I = !isNaN(E), w = E < o[0], x = E > o[1]; + if (I && !w && !x) + return !0; + I && (S = !0), w && (C = !0), x && (A = !0); + } + return S && C && A; + }); + } else + JT(f, function(y) { + if (a === "empty") + u.setData(d = d.map(y, function(A) { + return l(A) ? A : NaN; + })); + else { + var C = {}; + C[y] = o, d.selectRange(C); + } + }); + JT(f, function(y) { + d.setApproximateExtent(o, y); + }); + } + }); + function l(u) { + return u >= o[0] && u <= o[1]; + } + }, e.prototype._updateMinMaxSpan = function() { + var t = this._minMaxSpan = {}, r = this._dataZoomModel, n = this._dataExtent; + JT(["min", "max"], function(i) { + var a = r.get(i + "Span"), o = r.get(i + "ValueSpan"); + o != null && (o = this.getAxisModel().axis.scale.parse(o)), o != null ? a = Ea(n[0] + o, n, [0, 100], !0) : a != null && (o = Ea(a, [0, 100], n, !0) - n[0]), t[i + "Span"] = a, t[i + "ValueSpan"] = o; + }, this); + }, e.prototype._setAxisModel = function() { + var t = this.getAxisModel(), r = this._percentWindow, n = this._valueWindow; + if (r) { + var i = p8(n, [0, 500]); + i = Math.min(i, 20); + var a = t.axis.scale.rawExtentInfo; + r[0] !== 0 && a.setDeterminedMinMax("min", +n[0].toFixed(i)), r[1] !== 100 && a.setDeterminedMinMax("max", +n[1].toFixed(i)), a.freeze(); + } + }, e; + }() +); +function Trt(e, t, r) { + var n = [1 / 0, -1 / 0]; + JT(r, function(o) { + z6e(n, o.getData(), t); + }); + var i = e.getAxisModel(), a = P_e(i.axis.scale, i, n).calculate(); + return [a.min, a.max]; +} +const wrt = Crt; +var Irt = { + // `dataZoomProcessor` will only be performed in needed series. Consider if + // there is a line series and a pie series, it is better not to update the + // line series if only pie series is needed to be updated. + getTargetSeries: function(e) { + function t(i) { + e.eachComponent("dataZoom", function(a) { + a.eachTargetAxis(function(o, l) { + var u = e.getComponent(Q_(o), l); + i(o, l, u, a); + }); + }); + } + t(function(i, a, o, l) { + o.__dzAxisProxy = null; + }); + var r = []; + t(function(i, a, o, l) { + o.__dzAxisProxy || (o.__dzAxisProxy = new wrt(i, a, l, e), r.push(o.__dzAxisProxy)); + }); + var n = $r(); + return Ee(r, function(i) { + Ee(i.getTargetSeriesModels(), function(a) { + n.set(a.uid, a); + }); + }), n; + }, + // Consider appendData, where filter should be performed. Because data process is + // in block mode currently, it is not need to worry about that the overallProgress + // execute every frame. + overallReset: function(e, t) { + e.eachComponent("dataZoom", function(r) { + r.eachTargetAxis(function(n, i) { + r.getAxisProxy(n, i).reset(r); + }), r.eachTargetAxis(function(n, i) { + r.getAxisProxy(n, i).filterData(r, t); + }); + }), e.eachComponent("dataZoom", function(r) { + var n = r.findRepresentativeAxisProxy(); + if (n) { + var i = n.getDataPercentWindow(), a = n.getDataValueWindow(); + r.setCalculatedRange({ + start: i[0], + end: i[1], + startValue: a[0], + endValue: a[1] + }); + } + }); + } +}; +const xrt = Irt; +function Art(e) { + e.registerAction("dataZoom", function(t, r) { + var n = vrt(r, t); + Ee(n, function(i) { + i.setRawRange({ + start: t.start, + end: t.end, + startValue: t.startValue, + endValue: t.endValue + }); + }); + }); +} +var Vle = !1; +function mY(e) { + Vle || (Vle = !0, e.registerProcessor(e.PRIORITY.PROCESSOR.FILTER, xrt), Art(e), e.registerSubTypeDefaulter("dataZoom", function() { + return "slider"; + })); +} +function Rrt(e) { + e.registerComponentModel(_rt), e.registerComponentView(Ert), mY(e); +} +var gf = ( + /** @class */ + function() { + function e() { + } + return e; + }() +), Rbe = {}; +function QT(e, t) { + Rbe[e] = t; +} +function Dbe(e) { + return Rbe[e]; +} +var Drt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.optionUpdated = function() { + e.prototype.optionUpdated.apply(this, arguments); + var r = this.ecModel; + Ee(this.option.feature, function(n, i) { + var a = Dbe(i); + a && (a.getDefaultOption && (a.defaultOption = a.getDefaultOption(r)), Qn(n, a.defaultOption)); + }); + }, t.type = "toolbox", t.layoutMode = { + type: "box", + ignoreSize: !0 + }, t.defaultOption = { + show: !0, + z: 6, + // zlevel: 0, + orient: "horizontal", + left: "right", + top: "top", + // right + // bottom + backgroundColor: "transparent", + borderColor: "#ccc", + borderRadius: 0, + borderWidth: 0, + padding: 5, + itemSize: 15, + itemGap: 8, + showTitle: !0, + iconStyle: { + borderColor: "#666", + color: "none" + }, + emphasis: { + iconStyle: { + borderColor: "#3E98C5" + } + }, + // textStyle: {}, + // feature + tooltip: { + show: !1, + position: "bottom" + } + }, t; + }(Mi) +); +const Ort = Drt; +function Mrt(e, t, r) { + var n = t.getBoxLayoutParams(), i = t.get("padding"), a = { + width: r.getWidth(), + height: r.getHeight() + }, o = js(n, a, i); + Kb(t.get("orient"), e, t.get("itemGap"), o.width, o.height), BF(e, n, a, i); +} +function Obe(e, t) { + var r = ME(t.get("padding")), n = t.getItemStyle(["color", "opacity"]); + return n.fill = t.get("backgroundColor"), e = new Xi({ + shape: { + x: e.x - r[3], + y: e.y - r[0], + width: e.width + r[1] + r[3], + height: e.height + r[0] + r[2], + r: t.get("borderRadius") + }, + style: n, + silent: !0, + z2: -1 + }), e; +} +var krt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.render = function(r, n, i, a) { + var o = this.group; + if (o.removeAll(), !r.get("show")) + return; + var l = +r.get("itemSize"), u = r.get("orient") === "vertical", d = r.get("feature") || {}, f = this._features || (this._features = {}), g = []; + Ee(d, function(C, A) { + g.push(A); + }), new Gm(this._featureNames || [], g).add(v).update(v).remove(Ln(v, null)).execute(), this._featureNames = g; + function v(C, A) { + var S = g[C], _ = g[A], E = d[S], I = new Wa(E, r, r.ecModel), w; + if (a && a.newTitle != null && a.featureName === S && (E.title = a.newTitle), S && !_) { + if (Prt(S)) + w = { + onclick: I.option.onclick, + featureName: S + }; + else { + var x = Dbe(S); + if (!x) + return; + w = new x(); + } + f[S] = w; + } else if (w = f[_], !w) + return; + w.uid = yI("toolbox-feature"), w.model = I, w.ecModel = n, w.api = i; + var b = w instanceof gf; + if (!S && _) { + b && w.dispose && w.dispose(n, i); + return; + } + if (!I.get("show") || b && w.unusable) { + b && w.remove && w.remove(n, i); + return; + } + y(I, w, S), I.setIconStatus = function(R, M) { + var O = this.option, P = this.iconPaths; + O.iconStatus = O.iconStatus || {}, O.iconStatus[R] = M, P[R] && (M === "emphasis" ? Hm : Wm)(P[R]); + }, w instanceof gf && w.render && w.render(I, n, i, a); + } + function y(C, A, S) { + var _ = C.getModel("iconStyle"), E = C.getModel(["emphasis", "iconStyle"]), I = A instanceof gf && A.getIcons ? A.getIcons() : C.get("icon"), w = C.get("title") || {}, x, b; + wr(I) ? (x = {}, x[S] = I) : x = I, wr(w) ? (b = {}, b[S] = w) : b = w; + var R = C.iconPaths = {}; + Ee(x, function(M, O) { + var P = gI(M, {}, { + x: -l / 2, + y: -l / 2, + width: l, + height: l + }); + P.setStyle(_.getItemStyle()); + var B = P.ensureState("emphasis"); + B.style = E.getItemStyle(); + var H = new Hi({ + style: { + text: b[O], + align: E.get("textAlign"), + borderRadius: E.get("textBorderRadius"), + padding: E.get("textPadding"), + fill: null, + font: P8({ + fontStyle: E.get("textFontStyle"), + fontFamily: E.get("textFontFamily"), + fontSize: E.get("textFontSize"), + fontWeight: E.get("textFontWeight") + }, n) + }, + ignore: !0 + }); + P.setTextContent(H), vI({ + el: P, + componentModel: r, + itemName: O, + formatterParamsExtra: { + title: b[O] + } + }), P.__title = b[O], P.on("mouseover", function() { + var Y = E.getItemStyle(), X = u ? r.get("right") == null && r.get("left") !== "right" ? "right" : "left" : r.get("bottom") == null && r.get("top") !== "bottom" ? "bottom" : "top"; + H.setStyle({ + fill: E.get("textFill") || Y.fill || Y.stroke || "#000", + backgroundColor: E.get("textBackgroundColor") + }), P.setTextConfig({ + position: E.get("textPosition") || X + }), H.ignore = !r.get("showTitle"), i.enterEmphasis(this); + }).on("mouseout", function() { + C.get(["iconStatus", O]) !== "emphasis" && i.leaveEmphasis(this), H.hide(); + }), (C.get(["iconStatus", O]) === "emphasis" ? Hm : Wm)(P), o.add(P), P.on("click", Ar(A.onclick, A, n, i, O)), R[O] = P; + }); + } + Mrt(o, r, i), o.add(Obe(o.getBoundingRect(), r)), u || o.eachChild(function(C) { + var A = C.__title, S = C.ensureState("emphasis"), _ = S.textConfig || (S.textConfig = {}), E = C.getTextContent(), I = E && E.ensureState("emphasis"); + if (I && !Kr(I) && A) { + var w = I.style || (I.style = {}), x = pD(A, Hi.makeFont(w)), b = C.x + o.x, R = C.y + o.y + l, M = !1; + R + x.height > i.getHeight() && (_.position = "top", M = !0); + var O = M ? -5 - x.height : l + 10; + b + x.width / 2 > i.getWidth() ? (_.position = ["100%", O], w.align = "right") : b - x.width / 2 < 0 && (_.position = [0, O], w.align = "left"); + } + }); + }, t.prototype.updateView = function(r, n, i, a) { + Ee(this._features, function(o) { + o instanceof gf && o.updateView && o.updateView(o.model, n, i, a); + }); + }, t.prototype.remove = function(r, n) { + Ee(this._features, function(i) { + i instanceof gf && i.remove && i.remove(r, n); + }), this.group.removeAll(); + }, t.prototype.dispose = function(r, n) { + Ee(this._features, function(i) { + i instanceof gf && i.dispose && i.dispose(r, n); + }); + }, t.type = "toolbox", t; + }(Co) +); +function Prt(e) { + return e.indexOf("my") === 0; +} +const Nrt = krt; +var Lrt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.onclick = function(r, n) { + var i = this.model, a = i.get("name") || r.get("title.0.text") || "echarts", o = n.getZr().painter.getType() === "svg", l = o ? "svg" : i.get("type", !0) || "png", u = n.getConnectedDataURL({ + type: l, + backgroundColor: i.get("backgroundColor", !0) || r.get("backgroundColor") || "#fff", + connectedBackgroundColor: i.get("connectedBackgroundColor"), + excludeComponents: i.get("excludeComponents"), + pixelRatio: i.get("pixelRatio") + }), d = Yi.browser; + if (Kr(MouseEvent) && (d.newEdge || !d.ie && !d.edge)) { + var f = document.createElement("a"); + f.download = a + "." + l, f.target = "_blank", f.href = u; + var g = new MouseEvent("click", { + // some micro front-end framework, window maybe is a Proxy + view: document.defaultView, + bubbles: !0, + cancelable: !1 + }); + f.dispatchEvent(g); + } else if (window.navigator.msSaveOrOpenBlob || o) { + var v = u.split(","), y = v[0].indexOf("base64") > -1, C = o ? decodeURIComponent(v[1]) : v[1]; + y && (C = window.atob(C)); + var A = a + "." + l; + if (window.navigator.msSaveOrOpenBlob) { + for (var S = C.length, _ = new Uint8Array(S); S--; ) + _[S] = C.charCodeAt(S); + var E = new Blob([_]); + window.navigator.msSaveOrOpenBlob(E, A); + } else { + var I = document.createElement("iframe"); + document.body.appendChild(I); + var w = I.contentWindow, x = w.document; + x.open("image/svg+xml", "replace"), x.write(C), x.close(), w.focus(), x.execCommand("SaveAs", !0, A), document.body.removeChild(I); + } + } else { + var b = i.get("lang"), R = '', M = window.open(); + M.document.write(R), M.document.title = a; + } + }, t.getDefaultOption = function(r) { + var n = { + show: !0, + icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0", + title: r.getLocaleModel().get(["toolbox", "saveAsImage", "title"]), + type: "png", + // Default use option.backgroundColor + // backgroundColor: '#fff', + connectedBackgroundColor: "#fff", + name: "", + excludeComponents: ["toolbox"], + // use current pixel ratio of device by default + // pixelRatio: 1, + lang: r.getLocaleModel().get(["toolbox", "saveAsImage", "lang"]) + }; + return n; + }, t; + }(gf) +); +const Frt = Lrt; +var zle = "__ec_magicType_stack__", Brt = [["line", "bar"], ["stack"]], Urt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.getIcons = function() { + var r = this.model, n = r.get("icon"), i = {}; + return Ee(r.get("type"), function(a) { + n[a] && (i[a] = n[a]); + }), i; + }, t.getDefaultOption = function(r) { + var n = { + show: !0, + type: [], + // Icon group + icon: { + line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4", + bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7", + // eslint-disable-next-line + stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z" + // jshint ignore:line + }, + // `line`, `bar`, `stack`, `tiled` + title: r.getLocaleModel().get(["toolbox", "magicType", "title"]), + option: {}, + seriesIndex: {} + }; + return n; + }, t.prototype.onclick = function(r, n, i) { + var a = this.model, o = a.get(["seriesIndex", i]); + if (Hle[i]) { + var l = { + series: [] + }, u = function(g) { + var v = g.subType, y = g.id, C = Hle[i](v, y, g, a); + C && (Jr(C, g.option), l.series.push(C)); + var A = g.coordinateSystem; + if (A && A.type === "cartesian2d" && (i === "line" || i === "bar")) { + var S = A.getAxesByScale("ordinal")[0]; + if (S) { + var _ = S.dim, E = _ + "Axis", I = g.getReferringComponents(E, tl).models[0], w = I.componentIndex; + l[E] = l[E] || []; + for (var x = 0; x <= w; x++) + l[E][w] = l[E][w] || {}; + l[E][w].boundaryGap = i === "bar"; + } + } + }; + Ee(Brt, function(g) { + di(g, i) >= 0 && Ee(g, function(v) { + a.setIconStatus(v, "normal"); + }); + }), a.setIconStatus(i, "emphasis"), r.eachComponent({ + mainType: "series", + query: o == null ? null : { + seriesIndex: o + } + }, u); + var d, f = i; + i === "stack" && (d = Qn({ + stack: a.option.title.tiled, + tiled: a.option.title.stack + }, a.option.title), a.get(["iconStatus", i]) !== "emphasis" && (f = "tiled")), n.dispatchAction({ + type: "changeMagicType", + currentType: f, + newOption: l, + newTitle: d, + featureName: "magicType" + }); + } + }, t; + }(gf) +), Hle = { + line: function(e, t, r, n) { + if (e === "bar") + return Qn({ + id: t, + type: "line", + // Preserve data related option + data: r.get("data"), + stack: r.get("stack"), + markPoint: r.get("markPoint"), + markLine: r.get("markLine") + }, n.get(["option", "line"]) || {}, !0); + }, + bar: function(e, t, r, n) { + if (e === "line") + return Qn({ + id: t, + type: "bar", + // Preserve data related option + data: r.get("data"), + stack: r.get("stack"), + markPoint: r.get("markPoint"), + markLine: r.get("markLine") + }, n.get(["option", "bar"]) || {}, !0); + }, + stack: function(e, t, r, n) { + var i = r.get("stack") === zle; + if (e === "line" || e === "bar") + return n.setIconStatus("stack", i ? "normal" : "emphasis"), Qn({ + id: t, + stack: i ? "" : zle + }, n.get(["option", "stack"]) || {}, !0); + } +}; +kf({ + type: "changeMagicType", + event: "magicTypeChanged", + update: "prepareAndUpdate" +}, function(e, t) { + t.mergeOption(e.newOption); +}); +const jrt = Urt; +var iB = new Array(60).join("-"), Yw = " "; +function $rt(e) { + var t = {}, r = [], n = []; + return e.eachRawSeries(function(i) { + var a = i.coordinateSystem; + if (a && (a.type === "cartesian2d" || a.type === "polar")) { + var o = a.getBaseAxis(); + if (o.type === "category") { + var l = o.dim + "_" + o.index; + t[l] || (t[l] = { + categoryAxis: o, + valueAxis: a.getOtherAxis(o), + series: [] + }, n.push({ + axisDim: o.dim, + axisIndex: o.index + })), t[l].series.push(i); + } else + r.push(i); + } else + r.push(i); + }), { + seriesGroupByCategoryAxis: t, + other: r, + meta: n + }; +} +function Vrt(e) { + var t = []; + return Ee(e, function(r, n) { + var i = r.categoryAxis, a = r.valueAxis, o = a.dim, l = [" "].concat(er(r.series, function(y) { + return y.name; + })), u = [i.model.getCategories()]; + Ee(r.series, function(y) { + var C = y.getRawData(); + u.push(y.getRawData().mapArray(C.mapDimension(o), function(A) { + return A; + })); + }); + for (var d = [l.join(Yw)], f = 0; f < u[0].length; f++) { + for (var g = [], v = 0; v < u.length; v++) + g.push(u[v][f]); + d.push(g.join(Yw)); + } + t.push(d.join(` +`)); + }), t.join(` + +` + iB + ` + +`); +} +function zrt(e) { + return er(e, function(t) { + var r = t.getRawData(), n = [t.name], i = []; + return r.each(r.dimensions, function() { + for (var a = arguments.length, o = arguments[a - 1], l = r.getName(o), u = 0; u < a - 1; u++) + i[u] = arguments[u]; + n.push((l ? l + Yw : "") + i.join(Yw)); + }), n.join(` +`); + }).join(` + +` + iB + ` + +`); +} +function Hrt(e) { + var t = $rt(e); + return { + value: Ma([Vrt(t.seriesGroupByCategoryAxis), zrt(t.other)], function(r) { + return !!r.replace(/[\n\t\s]/g, ""); + }).join(` + +` + iB + ` + +`), + meta: t.meta + }; +} +function r2(e) { + return e.replace(/^\s\s*/, "").replace(/\s\s*$/, ""); +} +function Wrt(e) { + var t = e.slice(0, e.indexOf(` +`)); + if (t.indexOf(Yw) >= 0) + return !0; +} +var ZW = new RegExp("[" + Yw + "]+", "g"); +function Grt(e) { + for (var t = e.split(/\n+/g), r = r2(t.shift()).split(ZW), n = [], i = er(r, function(u) { + return { + name: u, + data: [] + }; + }), a = 0; a < t.length; a++) { + var o = r2(t[a]).split(ZW); + n.push(o.shift()); + for (var l = 0; l < o.length; l++) + i[l] && (i[l].data[a] = o[l]); + } + return { + series: i, + categories: n + }; +} +function Yrt(e) { + for (var t = e.split(/\n+/g), r = r2(t.shift()), n = [], i = 0; i < t.length; i++) { + var a = r2(t[i]); + if (a) { + var o = a.split(ZW), l = "", u = void 0, d = !1; + isNaN(o[0]) ? (d = !0, l = o[0], o = o.slice(1), n[i] = { + name: l, + value: [] + }, u = n[i].value) : u = n[i] = []; + for (var f = 0; f < o.length; f++) + u.push(+o[f]); + u.length === 1 && (d ? n[i].value = u[0] : n[i] = u[0]); + } + } + return { + name: r, + data: n + }; +} +function Xrt(e, t) { + var r = e.split(new RegExp(` +*` + iB + ` +*`, "g")), n = { + series: [] + }; + return Ee(r, function(i, a) { + if (Wrt(i)) { + var o = Grt(i), l = t[a], u = l.axisDim + "Axis"; + l && (n[u] = n[u] || [], n[u][l.axisIndex] = { + data: o.categories + }, n.series = n.series.concat(o.series)); + } else { + var o = Yrt(i); + n.series.push(o); + } + }), n; +} +var Krt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.onclick = function(r, n) { + setTimeout(function() { + n.dispatchAction({ + type: "hideTip" + }); + }); + var i = n.getDom(), a = this.model; + this._dom && i.removeChild(this._dom); + var o = document.createElement("div"); + o.style.cssText = "position:absolute;top:0;bottom:0;left:0;right:0;padding:5px", o.style.backgroundColor = a.get("backgroundColor") || "#fff"; + var l = document.createElement("h4"), u = a.get("lang") || []; + l.innerHTML = u[0] || a.get("title"), l.style.cssText = "margin:10px 20px", l.style.color = a.get("textColor"); + var d = document.createElement("div"), f = document.createElement("textarea"); + d.style.cssText = "overflow:auto"; + var g = a.get("optionToContent"), v = a.get("contentToOption"), y = Hrt(r); + if (Kr(g)) { + var C = g(n.getOption()); + wr(C) ? d.innerHTML = C : cE(C) && d.appendChild(C); + } else { + f.readOnly = a.get("readOnly"); + var A = f.style; + A.cssText = "display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none", A.color = a.get("textColor"), A.borderColor = a.get("textareaBorderColor"), A.backgroundColor = a.get("textareaColor"), f.value = y.value, d.appendChild(f); + } + var S = y.meta, _ = document.createElement("div"); + _.style.cssText = "position:absolute;bottom:5px;left:0;right:0"; + var E = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px", I = document.createElement("div"), w = document.createElement("div"); + E += ";background-color:" + a.get("buttonColor"), E += ";color:" + a.get("buttonTextColor"); + var x = this; + function b() { + i.removeChild(o), x._dom = null; + } + AH(I, "click", b), AH(w, "click", function() { + if (v == null && g != null || v != null && g == null) { + b(); + return; + } + var R; + try { + Kr(v) ? R = v(d, n.getOption()) : R = Xrt(f.value, S); + } catch (M) { + throw b(), new Error("Data view format error " + M); + } + R && n.dispatchAction({ + type: "changeDataView", + newOption: R + }), b(); + }), I.innerHTML = u[1], w.innerHTML = u[2], w.style.cssText = I.style.cssText = E, !a.get("readOnly") && _.appendChild(w), _.appendChild(I), o.appendChild(l), o.appendChild(d), o.appendChild(_), d.style.height = i.clientHeight - 80 + "px", i.appendChild(o), this._dom = o; + }, t.prototype.remove = function(r, n) { + this._dom && n.getDom().removeChild(this._dom); + }, t.prototype.dispose = function(r, n) { + this.remove(r, n); + }, t.getDefaultOption = function(r) { + var n = { + show: !0, + readOnly: !1, + optionToContent: null, + contentToOption: null, + // eslint-disable-next-line + icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28", + title: r.getLocaleModel().get(["toolbox", "dataView", "title"]), + lang: r.getLocaleModel().get(["toolbox", "dataView", "lang"]), + backgroundColor: "#fff", + textColor: "#000", + textareaColor: "#fff", + textareaBorderColor: "#333", + buttonColor: "#c23531", + buttonTextColor: "#fff" + }; + return n; + }, t; + }(gf) +); +function Zrt(e, t) { + return er(e, function(r, n) { + var i = t && t[n]; + if (sn(i) && !qt(i)) { + var a = sn(r) && !qt(r); + a || (r = { + value: r + }); + var o = i.name != null && r.name == null; + return r = Jr(r, i), o && delete r.name, r; + } else + return r; + }); +} +kf({ + type: "changeDataView", + event: "dataViewChanged", + update: "prepareAndUpdate" +}, function(e, t) { + var r = []; + Ee(e.newOption.series, function(n) { + var i = t.getSeriesByName(n.name)[0]; + if (!i) + r.push($t({ + // Default is scatter + type: "scatter" + }, n)); + else { + var a = i.get("data"); + r.push({ + name: n.name, + data: Zrt(n.data, a) + }); + } + }), t.mergeOption(Jr({ + series: r + }, e.newOption)); +}); +const qrt = Krt; +var Mbe = Ee, kbe = ea(); +function Jrt(e, t) { + var r = yY(e); + Mbe(t, function(n, i) { + for (var a = r.length - 1; a >= 0; a--) { + var o = r[a]; + if (o[i]) + break; + } + if (a < 0) { + var l = e.queryComponents({ + mainType: "dataZoom", + subType: "select", + id: i + })[0]; + if (l) { + var u = l.getPercentRange(); + r[0][i] = { + dataZoomId: i, + start: u[0], + end: u[1] + }; + } + } + }), r.push(t); +} +function Qrt(e) { + var t = yY(e), r = t[t.length - 1]; + t.length > 1 && t.pop(); + var n = {}; + return Mbe(r, function(i, a) { + for (var o = t.length - 1; o >= 0; o--) + if (i = t[o][a], i) { + n[a] = i; + break; + } + }), n; +} +function ent(e) { + kbe(e).snapshots = null; +} +function tnt(e) { + return yY(e).length; +} +function yY(e) { + var t = kbe(e); + return t.snapshots || (t.snapshots = [{}]), t.snapshots; +} +var rnt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.onclick = function(r, n) { + ent(r), n.dispatchAction({ + type: "restore", + from: this.uid + }); + }, t.getDefaultOption = function(r) { + var n = { + show: !0, + // eslint-disable-next-line + icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5", + title: r.getLocaleModel().get(["toolbox", "restore", "title"]) + }; + return n; + }, t; + }(gf) +); +kf({ + type: "restore", + event: "restore", + update: "prepareAndUpdate" +}, function(e, t) { + t.resetOption("recreate"); +}); +const nnt = rnt; +var int = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"], ant = ( + /** @class */ + function() { + function e(t, r, n) { + var i = this; + this._targetInfoList = []; + var a = Wle(r, t); + Ee(ont, function(o, l) { + (!n || !n.include || di(n.include, l) >= 0) && o(a, i._targetInfoList); + }); + } + return e.prototype.setOutputRanges = function(t, r) { + return this.matchOutputRanges(t, r, function(n, i, a) { + if ((n.coordRanges || (n.coordRanges = [])).push(i), !n.coordRange) { + n.coordRange = i; + var o = A3[n.brushType](0, a, i); + n.__rangeOffset = { + offset: Kle[n.brushType](o.values, n.range, [1, 1]), + xyMinMax: o.xyMinMax + }; + } + }), t; + }, e.prototype.matchOutputRanges = function(t, r, n) { + Ee(t, function(i) { + var a = this.findTargetInfo(i, r); + a && a !== !0 && Ee(a.coordSyses, function(o) { + var l = A3[i.brushType](1, o, i.range, !0); + n(i, l.values, o, r); + }); + }, this); + }, e.prototype.setInputRanges = function(t, r) { + Ee(t, function(n) { + var i = this.findTargetInfo(n, r); + if (n.range = n.range || [], i && i !== !0) { + n.panelId = i.panelId; + var a = A3[n.brushType](0, i.coordSys, n.coordRange), o = n.__rangeOffset; + n.range = o ? Kle[n.brushType](a.values, o.offset, snt(a.xyMinMax, o.xyMinMax)) : a.values; + } + }, this); + }, e.prototype.makePanelOpts = function(t, r) { + return er(this._targetInfoList, function(n) { + var i = n.getPanelRect(); + return { + panelId: n.panelId, + defaultBrushType: r ? r(n) : null, + clipPath: jSe(i), + isTargetByCursor: VSe(i, t, n.coordSysModel), + getLinearBrushOtherExtent: $Se(i) + }; + }); + }, e.prototype.controlSeries = function(t, r, n) { + var i = this.findTargetInfo(t, n); + return i === !0 || i && di(i.coordSyses, r.coordinateSystem) >= 0; + }, e.prototype.findTargetInfo = function(t, r) { + for (var n = this._targetInfoList, i = Wle(r, t), a = 0; a < n.length; a++) { + var o = n[a], l = t.panelId; + if (l) { + if (o.panelId === l) + return o; + } else + for (var u = 0; u < Gle.length; u++) + if (Gle[u](i, o)) + return o; + } + return !0; + }, e; + }() +); +function qW(e) { + return e[0] > e[1] && e.reverse(), e; +} +function Wle(e, t) { + return D1(e, t, { + includeMainTypes: int + }); +} +var ont = { + grid: function(e, t) { + var r = e.xAxisModels, n = e.yAxisModels, i = e.gridModels, a = $r(), o = {}, l = {}; + !r && !n && !i || (Ee(r, function(u) { + var d = u.axis.grid.model; + a.set(d.id, d), o[d.id] = !0; + }), Ee(n, function(u) { + var d = u.axis.grid.model; + a.set(d.id, d), l[d.id] = !0; + }), Ee(i, function(u) { + a.set(u.id, u), o[u.id] = !0, l[u.id] = !0; + }), a.each(function(u) { + var d = u.coordinateSystem, f = []; + Ee(d.getCartesians(), function(g, v) { + (di(r, g.getAxis("x").model) >= 0 || di(n, g.getAxis("y").model) >= 0) && f.push(g); + }), t.push({ + panelId: "grid--" + u.id, + gridModel: u, + coordSysModel: u, + // Use the first one as the representitive coordSys. + coordSys: f[0], + coordSyses: f, + getPanelRect: Yle.grid, + xAxisDeclared: o[u.id], + yAxisDeclared: l[u.id] + }); + })); + }, + geo: function(e, t) { + Ee(e.geoModels, function(r) { + var n = r.coordinateSystem; + t.push({ + panelId: "geo--" + r.id, + geoModel: r, + coordSysModel: r, + coordSys: n, + coordSyses: [n], + getPanelRect: Yle.geo + }); + }); + } +}, Gle = [ + // grid + function(e, t) { + var r = e.xAxisModel, n = e.yAxisModel, i = e.gridModel; + return !i && r && (i = r.axis.grid.model), !i && n && (i = n.axis.grid.model), i && i === t.gridModel; + }, + // geo + function(e, t) { + var r = e.geoModel; + return r && r === t.geoModel; + } +], Yle = { + grid: function() { + return this.coordSys.master.getRect().clone(); + }, + geo: function() { + var e = this.coordSys, t = e.getBoundingRect().clone(); + return t.applyTransform(l0(e)), t; + } +}, A3 = { + lineX: Ln(Xle, 0), + lineY: Ln(Xle, 1), + rect: function(e, t, r, n) { + var i = e ? t.pointToData([r[0][0], r[1][0]], n) : t.dataToPoint([r[0][0], r[1][0]], n), a = e ? t.pointToData([r[0][1], r[1][1]], n) : t.dataToPoint([r[0][1], r[1][1]], n), o = [qW([i[0], a[0]]), qW([i[1], a[1]])]; + return { + values: o, + xyMinMax: o + }; + }, + polygon: function(e, t, r, n) { + var i = [[1 / 0, -1 / 0], [1 / 0, -1 / 0]], a = er(r, function(o) { + var l = e ? t.pointToData(o, n) : t.dataToPoint(o, n); + return i[0][0] = Math.min(i[0][0], l[0]), i[1][0] = Math.min(i[1][0], l[1]), i[0][1] = Math.max(i[0][1], l[0]), i[1][1] = Math.max(i[1][1], l[1]), l; + }); + return { + values: a, + xyMinMax: i + }; + } +}; +function Xle(e, t, r, n) { + var i = r.getAxis(["x", "y"][e]), a = qW(er([0, 1], function(l) { + return t ? i.coordToData(i.toLocalCoord(n[l]), !0) : i.toGlobalCoord(i.dataToCoord(n[l])); + })), o = []; + return o[e] = a, o[1 - e] = [NaN, NaN], { + values: a, + xyMinMax: o + }; +} +var Kle = { + lineX: Ln(Zle, 0), + lineY: Ln(Zle, 1), + rect: function(e, t, r) { + return [[e[0][0] - r[0] * t[0][0], e[0][1] - r[0] * t[0][1]], [e[1][0] - r[1] * t[1][0], e[1][1] - r[1] * t[1][1]]]; + }, + polygon: function(e, t, r) { + return er(e, function(n, i) { + return [n[0] - r[0] * t[i][0], n[1] - r[1] * t[i][1]]; + }); + } +}; +function Zle(e, t, r, n) { + return [t[0] - n[e] * r[0], t[1] - n[e] * r[1]]; +} +function snt(e, t) { + var r = qle(e), n = qle(t), i = [r[0] / n[0], r[1] / n[1]]; + return isNaN(i[0]) && (i[0] = 1), isNaN(i[1]) && (i[1] = 1), i; +} +function qle(e) { + return e ? [e[0][1] - e[0][0], e[1][1] - e[1][0]] : [NaN, NaN]; +} +const _Y = ant; +var JW = Ee, lnt = Bze("toolbox-dataZoom_"), cnt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.render = function(r, n, i, a) { + this._brushController || (this._brushController = new Q9(i.getZr()), this._brushController.on("brush", Ar(this._onBrush, this)).mount()), dnt(r, n, this, a, i), hnt(r, n); + }, t.prototype.onclick = function(r, n, i) { + unt[i].call(this); + }, t.prototype.remove = function(r, n) { + this._brushController && this._brushController.unmount(); + }, t.prototype.dispose = function(r, n) { + this._brushController && this._brushController.dispose(); + }, t.prototype._onBrush = function(r) { + var n = r.areas; + if (!r.isEnd || !n.length) + return; + var i = {}, a = this.ecModel; + this._brushController.updateCovers([]); + var o = new _Y(SY(this.model), a, { + include: ["grid"] + }); + o.matchOutputRanges(n, a, function(d, f, g) { + if (g.type === "cartesian2d") { + var v = d.brushType; + v === "rect" ? (l("x", g, f[0]), l("y", g, f[1])) : l({ + lineX: "x", + lineY: "y" + }[v], g, f); + } + }), Jrt(a, i), this._dispatchZoomAction(i); + function l(d, f, g) { + var v = f.getAxis(d), y = v.model, C = u(d, y, a), A = C.findRepresentativeAxisProxy(y).getMinMaxSpan(); + (A.minValueSpan != null || A.maxValueSpan != null) && (g = LE(0, g.slice(), v.scale.getExtent(), 0, A.minValueSpan, A.maxValueSpan)), C && (i[C.id] = { + dataZoomId: C.id, + startValue: g[0], + endValue: g[1] + }); + } + function u(d, f, g) { + var v; + return g.eachComponent({ + mainType: "dataZoom", + subType: "select" + }, function(y) { + var C = y.getAxisModel(d, f.componentIndex); + C && (v = y); + }), v; + } + }, t.prototype._dispatchZoomAction = function(r) { + var n = []; + JW(r, function(i, a) { + n.push(cn(i)); + }), n.length && this.api.dispatchAction({ + type: "dataZoom", + from: this.uid, + batch: n + }); + }, t.getDefaultOption = function(r) { + var n = { + show: !0, + filterMode: "filter", + // Icon group + icon: { + zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1", + back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26" + }, + // `zoom`, `back` + title: r.getLocaleModel().get(["toolbox", "dataZoom", "title"]), + brushStyle: { + borderWidth: 0, + color: "rgba(210,219,238,0.2)" + } + }; + return n; + }, t; + }(gf) +), unt = { + zoom: function() { + var e = !this._isZoomActive; + this.api.dispatchAction({ + type: "takeGlobalCursor", + key: "dataZoomSelect", + dataZoomSelectActive: e + }); + }, + back: function() { + this._dispatchZoomAction(Qrt(this.ecModel)); + } +}; +function SY(e) { + var t = { + xAxisIndex: e.get("xAxisIndex", !0), + yAxisIndex: e.get("yAxisIndex", !0), + xAxisId: e.get("xAxisId", !0), + yAxisId: e.get("yAxisId", !0) + }; + return t.xAxisIndex == null && t.xAxisId == null && (t.xAxisIndex = "all"), t.yAxisIndex == null && t.yAxisId == null && (t.yAxisIndex = "all"), t; +} +function hnt(e, t) { + e.setIconStatus("back", tnt(t) > 1 ? "emphasis" : "normal"); +} +function dnt(e, t, r, n, i) { + var a = r._isZoomActive; + n && n.type === "takeGlobalCursor" && (a = n.key === "dataZoomSelect" ? n.dataZoomSelectActive : !1), r._isZoomActive = a, e.setIconStatus("zoom", a ? "emphasis" : "normal"); + var o = new _Y(SY(e), t, { + include: ["grid"] + }), l = o.makePanelOpts(i, function(u) { + return u.xAxisDeclared && !u.yAxisDeclared ? "lineX" : !u.xAxisDeclared && u.yAxisDeclared ? "lineY" : "rect"; + }); + r._brushController.setPanels(l).enableBrush(a && l.length ? { + brushType: "auto", + brushStyle: e.getModel("brushStyle").getItemStyle() + } : !1); +} +gHe("dataZoom", function(e) { + var t = e.getComponent("toolbox", 0), r = ["feature", "dataZoom"]; + if (!t || t.get(r) == null) + return; + var n = t.getModel(r), i = [], a = SY(n), o = D1(e, a); + JW(o.xAxisModels, function(u) { + return l(u, "xAxis", "xAxisIndex"); + }), JW(o.yAxisModels, function(u) { + return l(u, "yAxis", "yAxisIndex"); + }); + function l(u, d, f) { + var g = u.componentIndex, v = { + type: "select", + $fromToolbox: !0, + // Default to be filter + filterMode: n.get("filterMode", !0) || "filter", + // Id for merge mapping. + id: lnt + d + g + }; + v[f] = g, i.push(v); + } + return i; +}); +const fnt = cnt; +function pnt(e) { + e.registerComponentModel(Ort), e.registerComponentView(Nrt), QT("saveAsImage", Frt), QT("magicType", jrt), QT("dataView", qrt), QT("dataZoom", fnt), QT("restore", nnt), ii(Rrt); +} +var gnt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "tooltip", t.dependencies = ["axisPointer"], t.defaultOption = { + // zlevel: 0, + z: 60, + show: !0, + // tooltip main content + showContent: !0, + // 'trigger' only works on coordinate system. + // 'item' | 'axis' | 'none' + trigger: "item", + // 'click' | 'mousemove' | 'none' + triggerOn: "mousemove|click", + alwaysShowContent: !1, + displayMode: "single", + renderMode: "auto", + // whether restraint content inside viewRect. + // If renderMode: 'richText', default true. + // If renderMode: 'html', defaut false (for backward compat). + confine: null, + showDelay: 0, + hideDelay: 100, + // Animation transition time, unit is second + transitionDuration: 0.4, + enterable: !1, + backgroundColor: "#fff", + // box shadow + shadowBlur: 10, + shadowColor: "rgba(0, 0, 0, .2)", + shadowOffsetX: 1, + shadowOffsetY: 2, + // tooltip border radius, unit is px, default is 4 + borderRadius: 4, + // tooltip border width, unit is px, default is 0 (no border) + borderWidth: 1, + // Tooltip inside padding, default is 5 for all direction + // Array is allowed to set up, right, bottom, left, same with css + // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`. + padding: null, + // Extra css text + extraCssText: "", + // axis indicator, trigger by axis + axisPointer: { + // default is line + // legal values: 'line' | 'shadow' | 'cross' + type: "line", + // Valid when type is line, appoint tooltip line locate on which line. Optional + // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto' + // default is 'auto', chose the axis which type is category. + // for multiply y axis, cartesian coord chose x axis, polar chose angle axis + axis: "auto", + animation: "auto", + animationDurationUpdate: 200, + animationEasingUpdate: "exponentialOut", + crossStyle: { + color: "#999", + width: 1, + type: "dashed", + // TODO formatter + textStyle: {} + } + // lineStyle and shadowStyle should not be specified here, + // otherwise it will always override those styles on option.axisPointer. + }, + textStyle: { + color: "#666", + fontSize: 14 + } + }, t; + }(Mi) +); +const vnt = gnt; +function Pbe(e) { + var t = e.get("confine"); + return t != null ? !!t : e.get("renderMode") === "richText"; +} +function Nbe(e) { + if (Yi.domSupported) { + for (var t = document.documentElement.style, r = 0, n = e.length; r < n; r++) + if (e[r] in t) + return e[r]; + } +} +var Lbe = Nbe(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]), mnt = Nbe(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]); +function Fbe(e, t) { + if (!e) + return t; + t = $8(t, !0); + var r = e.indexOf(t); + return e = r === -1 ? t : "-" + e.slice(0, r) + "-" + t, e.toLowerCase(); +} +function ynt(e, t) { + var r = e.currentStyle || document.defaultView && document.defaultView.getComputedStyle(e); + return r ? t ? r[t] : r : null; +} +var _nt = Fbe(mnt, "transition"), bY = Fbe(Lbe, "transform"), Snt = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (Yi.transform3dSupported ? "will-change:transform;" : ""); +function bnt(e) { + return e = e === "left" ? "right" : e === "right" ? "left" : e === "top" ? "bottom" : "top", e; +} +function Ent(e, t, r) { + if (!wr(r) || r === "inside") + return ""; + var n = e.get("backgroundColor"), i = e.get("borderWidth"); + t = pE(t); + var a = bnt(r), o = Math.max(Math.round(i) * 1.5, 6), l = "", u = bY + ":", d; + di(["left", "right"], a) > -1 ? (l += "top:50%", u += "translateY(-50%) rotate(" + (d = a === "left" ? -225 : -45) + "deg)") : (l += "left:50%", u += "translateX(-50%) rotate(" + (d = a === "top" ? 225 : 45) + "deg)"); + var f = d * Math.PI / 180, g = o + i, v = g * Math.abs(Math.cos(f)) + g * Math.abs(Math.sin(f)), y = Math.round(((v - Math.SQRT2 * i) / 2 + Math.SQRT2 * i - (v - g) / 2) * 100) / 100; + l += ";" + a + ":-" + y + "px"; + var C = t + " solid " + i + "px;", A = ["position:absolute;width:" + o + "px;height:" + o + "px;z-index:-1;", l + ";" + u + ";", "border-bottom:" + C, "border-right:" + C, "background-color:" + n + ";"]; + return '
    '; +} +function Cnt(e, t) { + var r = "cubic-bezier(0.23,1,0.32,1)", n = " " + e / 2 + "s " + r, i = "opacity" + n + ",visibility" + n; + return t || (n = " " + e + "s " + r, i += Yi.transformSupported ? "," + bY + n : ",left" + n + ",top" + n), _nt + ":" + i; +} +function Jle(e, t, r) { + var n = e.toFixed(0) + "px", i = t.toFixed(0) + "px"; + if (!Yi.transformSupported) + return r ? "top:" + i + ";left:" + n + ";" : [["top", i], ["left", n]]; + var a = Yi.transform3dSupported, o = "translate" + (a ? "3d" : "") + "(" + n + "," + i + (a ? ",0" : "") + ")"; + return r ? "top:0;left:0;" + bY + ":" + o + ";" : [["top", 0], ["left", 0], [Lbe, o]]; +} +function Tnt(e) { + var t = [], r = e.get("fontSize"), n = e.getTextColor(); + n && t.push("color:" + n), t.push("font:" + e.getFont()), r && t.push("line-height:" + Math.round(r * 3 / 2) + "px"); + var i = e.get("textShadowColor"), a = e.get("textShadowBlur") || 0, o = e.get("textShadowOffsetX") || 0, l = e.get("textShadowOffsetY") || 0; + return i && a && t.push("text-shadow:" + o + "px " + l + "px " + a + "px " + i), Ee(["decoration", "align"], function(u) { + var d = e.get(u); + d && t.push("text-" + u + ":" + d); + }), t.join(";"); +} +function wnt(e, t, r) { + var n = [], i = e.get("transitionDuration"), a = e.get("backgroundColor"), o = e.get("shadowBlur"), l = e.get("shadowColor"), u = e.get("shadowOffsetX"), d = e.get("shadowOffsetY"), f = e.getModel("textStyle"), g = Aye(e, "html"), v = u + "px " + d + "px " + o + "px " + l; + return n.push("box-shadow:" + v), t && i && n.push(Cnt(i, r)), a && n.push("background-color:" + a), Ee(["width", "color", "radius"], function(y) { + var C = "border-" + y, A = $8(C), S = e.get(A); + S != null && n.push(C + ":" + S + (y === "color" ? "" : "px")); + }), n.push(Tnt(f)), g != null && n.push("padding:" + ME(g).join("px ") + "px"), n.join(";") + ";"; +} +function Qle(e, t, r, n, i) { + var a = t && t.painter; + if (r) { + var o = a && a.getViewportRoot(); + o && aVe(e, o, r, n, i); + } else { + e[0] = n, e[1] = i; + var l = a && a.getViewportRootOffset(); + l && (e[0] += l.offsetLeft, e[1] += l.offsetTop); + } + e[2] = e[0] / t.getWidth(), e[3] = e[1] / t.getHeight(); +} +var Int = ( + /** @class */ + function() { + function e(t, r) { + if (this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._alwaysShowContent = !1, this._firstShow = !0, this._longHide = !0, Yi.wxa) + return null; + var n = document.createElement("div"); + n.domBelongToZr = !0, this.el = n; + var i = this._zr = t.getZr(), a = r.appendTo, o = a && (wr(a) ? document.querySelector(a) : cE(a) ? a : Kr(a) && a(t.getDom())); + Qle(this._styleCoord, i, o, t.getWidth() / 2, t.getHeight() / 2), (o || t.getDom()).appendChild(n), this._api = t, this._container = o; + var l = this; + n.onmouseenter = function() { + l._enterable && (clearTimeout(l._hideTimeout), l._show = !0), l._inContent = !0; + }, n.onmousemove = function(u) { + if (u = u || window.event, !l._enterable) { + var d = i.handler, f = i.painter.getViewportRoot(); + cf(f, u, !0), d.dispatch("mousemove", u); + } + }, n.onmouseleave = function() { + l._inContent = !1, l._enterable && l._show && l.hideLater(l._hideDelay); + }; + } + return e.prototype.update = function(t) { + if (!this._container) { + var r = this._api.getDom(), n = ynt(r, "position"), i = r.style; + i.position !== "absolute" && n !== "absolute" && (i.position = "relative"); + } + var a = t.get("alwaysShowContent"); + a && this._moveIfResized(), this._alwaysShowContent = a, this.el.className = t.get("className") || ""; + }, e.prototype.show = function(t, r) { + clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout); + var n = this.el, i = n.style, a = this._styleCoord; + n.innerHTML ? i.cssText = Snt + wnt(t, !this._firstShow, this._longHide) + Jle(a[0], a[1], !0) + ("border-color:" + pE(r) + ";") + (t.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none")) : i.display = "none", this._show = !0, this._firstShow = !1, this._longHide = !1; + }, e.prototype.setContent = function(t, r, n, i, a) { + var o = this.el; + if (t == null) { + o.innerHTML = ""; + return; + } + var l = ""; + if (wr(a) && n.get("trigger") === "item" && !Pbe(n) && (l = Ent(n, i, a)), wr(t)) + o.innerHTML = t + l; + else if (t) { + o.innerHTML = "", qt(t) || (t = [t]); + for (var u = 0; u < t.length; u++) + cE(t[u]) && t[u].parentNode !== o && o.appendChild(t[u]); + if (l && o.childNodes.length) { + var d = document.createElement("div"); + d.innerHTML = l, o.appendChild(d); + } + } + }, e.prototype.setEnterable = function(t) { + this._enterable = t; + }, e.prototype.getSize = function() { + var t = this.el; + return [t.offsetWidth, t.offsetHeight]; + }, e.prototype.moveTo = function(t, r) { + var n = this._styleCoord; + if (Qle(n, this._zr, this._container, t, r), n[0] != null && n[1] != null) { + var i = this.el.style, a = Jle(n[0], n[1]); + Ee(a, function(o) { + i[o[0]] = o[1]; + }); + } + }, e.prototype._moveIfResized = function() { + var t = this._styleCoord[2], r = this._styleCoord[3]; + this.moveTo(t * this._zr.getWidth(), r * this._zr.getHeight()); + }, e.prototype.hide = function() { + var t = this, r = this.el.style; + r.visibility = "hidden", r.opacity = "0", Yi.transform3dSupported && (r.willChange = ""), this._show = !1, this._longHideTimeout = setTimeout(function() { + return t._longHide = !0; + }, 500); + }, e.prototype.hideLater = function(t) { + this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent && (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(Ar(this.hide, this), t)) : this.hide()); + }, e.prototype.isShow = function() { + return this._show; + }, e.prototype.dispose = function() { + clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout); + var t = this.el.parentNode; + t && t.removeChild(this.el), this.el = this._container = null; + }, e; + }() +); +const xnt = Int; +var Ant = ( + /** @class */ + function() { + function e(t) { + this._show = !1, this._styleCoord = [0, 0, 0, 0], this._alwaysShowContent = !1, this._enterable = !0, this._zr = t.getZr(), tce(this._styleCoord, this._zr, t.getWidth() / 2, t.getHeight() / 2); + } + return e.prototype.update = function(t) { + var r = t.get("alwaysShowContent"); + r && this._moveIfResized(), this._alwaysShowContent = r; + }, e.prototype.show = function() { + this._hideTimeout && clearTimeout(this._hideTimeout), this.el.show(), this._show = !0; + }, e.prototype.setContent = function(t, r, n, i, a) { + var o = this; + sn(t) && Ca(""), this.el && this._zr.remove(this.el); + var l = n.getModel("textStyle"); + this.el = new Hi({ + style: { + rich: r.richTextStyles, + text: t, + lineHeight: 22, + borderWidth: 1, + borderColor: i, + textShadowColor: l.get("textShadowColor"), + fill: n.get(["textStyle", "color"]), + padding: Aye(n, "richText"), + verticalAlign: "top", + align: "left" + }, + z: n.get("z") + }), Ee(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"], function(d) { + o.el.style[d] = n.get(d); + }), Ee(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(d) { + o.el.style[d] = l.get(d) || 0; + }), this._zr.add(this.el); + var u = this; + this.el.on("mouseover", function() { + u._enterable && (clearTimeout(u._hideTimeout), u._show = !0), u._inContent = !0; + }), this.el.on("mouseout", function() { + u._enterable && u._show && u.hideLater(u._hideDelay), u._inContent = !1; + }); + }, e.prototype.setEnterable = function(t) { + this._enterable = t; + }, e.prototype.getSize = function() { + var t = this.el, r = this.el.getBoundingRect(), n = ece(t.style); + return [r.width + n.left + n.right, r.height + n.top + n.bottom]; + }, e.prototype.moveTo = function(t, r) { + var n = this.el; + if (n) { + var i = this._styleCoord; + tce(i, this._zr, t, r), t = i[0], r = i[1]; + var a = n.style, o = $_(a.borderWidth || 0), l = ece(a); + n.x = t + o + l.left, n.y = r + o + l.top, n.markRedraw(); + } + }, e.prototype._moveIfResized = function() { + var t = this._styleCoord[2], r = this._styleCoord[3]; + this.moveTo(t * this._zr.getWidth(), r * this._zr.getHeight()); + }, e.prototype.hide = function() { + this.el && this.el.hide(), this._show = !1; + }, e.prototype.hideLater = function(t) { + this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent && (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(Ar(this.hide, this), t)) : this.hide()); + }, e.prototype.isShow = function() { + return this._show; + }, e.prototype.dispose = function() { + this._zr.remove(this.el); + }, e; + }() +); +function $_(e) { + return Math.max(0, e); +} +function ece(e) { + var t = $_(e.shadowBlur || 0), r = $_(e.shadowOffsetX || 0), n = $_(e.shadowOffsetY || 0); + return { + left: $_(t - r), + right: $_(t + r), + top: $_(t - n), + bottom: $_(t + n) + }; +} +function tce(e, t, r, n) { + e[0] = r, e[1] = n, e[2] = e[0] / t.getWidth(), e[3] = e[1] / t.getHeight(); +} +const Rnt = Ant; +var Dnt = new Xi({ + shape: { + x: -1, + y: -1, + width: 2, + height: 2 + } +}), Ont = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n) { + if (!(Yi.node || !n.getDom())) { + var i = r.getComponent("tooltip"), a = this._renderMode = Wze(i.get("renderMode")); + this._tooltipContent = a === "richText" ? new Rnt(n) : new xnt(n, { + appendTo: i.get("appendToBody", !0) ? "body" : i.get("appendTo", !0) + }); + } + }, t.prototype.render = function(r, n, i) { + if (!(Yi.node || !i.getDom())) { + this.group.removeAll(), this._tooltipModel = r, this._ecModel = n, this._api = i; + var a = this._tooltipContent; + a.update(r), a.setEnterable(r.get("enterable")), this._initGlobalListener(), this._keepShow(), this._renderMode !== "richText" && r.get("transitionDuration") ? TI(this, "_updatePosition", 50, "fixRate") : bR(this, "_updatePosition"); + } + }, t.prototype._initGlobalListener = function() { + var r = this._tooltipModel, n = r.get("triggerOn"); + Sbe("itemTooltip", this._api, Ar(function(i, a, o) { + n !== "none" && (n.indexOf(i) >= 0 ? this._tryShow(a, o) : i === "leave" && this._hide(o)); + }, this)); + }, t.prototype._keepShow = function() { + var r = this._tooltipModel, n = this._ecModel, i = this._api, a = r.get("triggerOn"); + if (this._lastX != null && this._lastY != null && a !== "none" && a !== "click") { + var o = this; + clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function() { + !i.isDisposed() && o.manuallyShowTip(r, n, i, { + x: o._lastX, + y: o._lastY, + dataByCoordSys: o._lastDataByCoordSys + }); + }); + } + }, t.prototype.manuallyShowTip = function(r, n, i, a) { + if (!(a.from === this.uid || Yi.node || !i.getDom())) { + var o = rce(a, i); + this._ticket = ""; + var l = a.dataByCoordSys, u = Nnt(a, n, i); + if (u) { + var d = u.el.getBoundingRect().clone(); + d.applyTransform(u.el.transform), this._tryShow({ + offsetX: d.x + d.width / 2, + offsetY: d.y + d.height / 2, + target: u.el, + position: a.position, + // When manully trigger, the mouse is not on the el, so we'd better to + // position tooltip on the bottom of the el and display arrow is possible. + positionDefault: "bottom" + }, o); + } else if (a.tooltip && a.x != null && a.y != null) { + var f = Dnt; + f.x = a.x, f.y = a.y, f.update(), Tn(f).tooltipConfig = { + name: null, + option: a.tooltip + }, this._tryShow({ + offsetX: a.x, + offsetY: a.y, + target: f + }, o); + } else if (l) + this._tryShow({ + offsetX: a.x, + offsetY: a.y, + position: a.position, + dataByCoordSys: l, + tooltipOption: a.tooltipOption + }, o); + else if (a.seriesIndex != null) { + if (this._manuallyAxisShowTip(r, n, i, a)) + return; + var g = bbe(a, n), v = g.point[0], y = g.point[1]; + v != null && y != null && this._tryShow({ + offsetX: v, + offsetY: y, + target: g.el, + position: a.position, + // When manully trigger, the mouse is not on the el, so we'd better to + // position tooltip on the bottom of the el and display arrow is possible. + positionDefault: "bottom" + }, o); + } else + a.x != null && a.y != null && (i.dispatchAction({ + type: "updateAxisPointer", + x: a.x, + y: a.y + }), this._tryShow({ + offsetX: a.x, + offsetY: a.y, + position: a.position, + target: i.getZr().findHover(a.x, a.y).target + }, o)); + } + }, t.prototype.manuallyHideTip = function(r, n, i, a) { + var o = this._tooltipContent; + this._tooltipModel && o.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = this._lastDataByCoordSys = null, a.from !== this.uid && this._hide(rce(a, i)); + }, t.prototype._manuallyAxisShowTip = function(r, n, i, a) { + var o = a.seriesIndex, l = a.dataIndex, u = n.getComponent("axisPointer").coordSysAxesInfo; + if (!(o == null || l == null || u == null)) { + var d = n.getSeriesByIndex(o); + if (d) { + var f = d.getData(), g = GA([f.getItemModel(l), d, (d.coordinateSystem || {}).model], this._tooltipModel); + if (g.get("trigger") === "axis") + return i.dispatchAction({ + type: "updateAxisPointer", + seriesIndex: o, + dataIndex: l, + position: a.position + }), !0; + } + } + }, t.prototype._tryShow = function(r, n) { + var i = r.target, a = this._tooltipModel; + if (a) { + this._lastX = r.offsetX, this._lastY = r.offsetY; + var o = r.dataByCoordSys; + if (o && o.length) + this._showAxisTooltip(o, r); + else if (i) { + var l = Tn(i); + if (l.ssrType === "legend") + return; + this._lastDataByCoordSys = null; + var u, d; + Fb(i, function(f) { + if (Tn(f).dataIndex != null) + return u = f, !0; + if (Tn(f).tooltipConfig != null) + return d = f, !0; + }, !0), u ? this._showSeriesItemTooltip(r, u, n) : d ? this._showComponentItemTooltip(r, d, n) : this._hide(n); + } else + this._lastDataByCoordSys = null, this._hide(n); + } + }, t.prototype._showOrMove = function(r, n) { + var i = r.get("showDelay"); + n = Ar(n, this), clearTimeout(this._showTimout), i > 0 ? this._showTimout = setTimeout(n, i) : n(); + }, t.prototype._showAxisTooltip = function(r, n) { + var i = this._ecModel, a = this._tooltipModel, o = [n.offsetX, n.offsetY], l = GA([n.tooltipOption], a), u = this._renderMode, d = [], f = Fl("section", { + blocks: [], + noHeader: !0 + }), g = [], v = new dz(); + Ee(r, function(E) { + Ee(E.dataByAxis, function(I) { + var w = i.getComponent(I.axisDim + "Axis", I.axisIndex), x = I.value; + if (!(!w || x == null)) { + var b = mbe(x, w.axis, i, I.seriesDataIndices, I.valueLabelOpt), R = Fl("section", { + header: b, + noHeader: !yf(b), + sortBlocks: !0, + blocks: [] + }); + f.blocks.push(R), Ee(I.seriesDataIndices, function(M) { + var O = i.getSeriesByIndex(M.seriesIndex), P = M.dataIndexInside, B = O.getDataParams(P); + if (!(B.dataIndex < 0)) { + B.axisDim = I.axisDim, B.axisIndex = I.axisIndex, B.axisType = I.axisType, B.axisId = I.axisId, B.axisValue = S9(w.axis, { + value: x + }), B.axisValueLabel = b, B.marker = v.makeTooltipMarker("item", pE(B.color), u); + var H = $ie(O.formatTooltip(P, !0, null)), Y = H.frag; + if (Y) { + var X = GA([O], a).get("valueFormatter"); + R.blocks.push(X ? $t({ + valueFormatter: X + }, Y) : Y); + } + H.text && g.push(H.text), d.push(B); + } + }); + } + }); + }), f.blocks.reverse(), g.reverse(); + var y = n.position, C = l.get("order"), A = Yie(f, v, u, C, i.get("useUTC"), l.get("textStyle")); + A && g.unshift(A); + var S = u === "richText" ? ` + +` : "
    ", _ = g.join(S); + this._showOrMove(l, function() { + this._updateContentNotChangedOnAxis(r, d) ? this._updatePosition(l, y, o[0], o[1], this._tooltipContent, d) : this._showTooltipContent(l, _, d, Math.random() + "", o[0], o[1], y, null, v); + }); + }, t.prototype._showSeriesItemTooltip = function(r, n, i) { + var a = this._ecModel, o = Tn(n), l = o.seriesIndex, u = a.getSeriesByIndex(l), d = o.dataModel || u, f = o.dataIndex, g = o.dataType, v = d.getData(g), y = this._renderMode, C = r.positionDefault, A = GA([v.getItemModel(f), d, u && (u.coordinateSystem || {}).model], this._tooltipModel, C ? { + position: C + } : null), S = A.get("trigger"); + if (!(S != null && S !== "item")) { + var _ = d.getDataParams(f, g), E = new dz(); + _.marker = E.makeTooltipMarker("item", pE(_.color), y); + var I = $ie(d.formatTooltip(f, !1, g)), w = A.get("order"), x = A.get("valueFormatter"), b = I.frag, R = b ? Yie(x ? $t({ + valueFormatter: x + }, b) : b, E, y, w, a.get("useUTC"), A.get("textStyle")) : I.text, M = "item_" + d.name + "_" + f; + this._showOrMove(A, function() { + this._showTooltipContent(A, R, _, M, r.offsetX, r.offsetY, r.position, r.target, E); + }), i({ + type: "showTip", + dataIndexInside: f, + dataIndex: v.getRawIndex(f), + seriesIndex: l, + from: this.uid + }); + } + }, t.prototype._showComponentItemTooltip = function(r, n, i) { + var a = Tn(n), o = a.tooltipConfig, l = o.option || {}; + if (wr(l)) { + var u = l; + l = { + content: u, + // Fixed formatter + formatter: u + }; + } + var d = [l], f = this._ecModel.getComponent(a.componentMainType, a.componentIndex); + f && d.push(f), d.push({ + formatter: l.content + }); + var g = r.positionDefault, v = GA(d, this._tooltipModel, g ? { + position: g + } : null), y = v.get("content"), C = Math.random() + "", A = new dz(); + this._showOrMove(v, function() { + var S = cn(v.get("formatterParams") || {}); + this._showTooltipContent(v, y, S, C, r.offsetX, r.offsetY, r.position, n, A); + }), i({ + type: "showTip", + from: this.uid + }); + }, t.prototype._showTooltipContent = function(r, n, i, a, o, l, u, d, f) { + if (this._ticket = "", !(!r.get("showContent") || !r.get("show"))) { + var g = this._tooltipContent; + g.setEnterable(r.get("enterable")); + var v = r.get("formatter"); + u = u || r.get("position"); + var y = n, C = this._getNearestPoint([o, l], i, r.get("trigger"), r.get("borderColor")), A = C.color; + if (v) + if (wr(v)) { + var S = r.ecModel.get("useUTC"), _ = qt(i) ? i[0] : i, E = _ && _.axisType && _.axisType.indexOf("time") >= 0; + y = v, E && (y = bD(_.axisValue, y, S)), y = V8(y, i, !0); + } else if (Kr(v)) { + var I = Ar(function(w, x) { + w === this._ticket && (g.setContent(x, f, r, A, u), this._updatePosition(r, u, o, l, g, i, d)); + }, this); + this._ticket = a, y = v(i, a, I); + } else + y = v; + g.setContent(y, f, r, A, u), g.show(r, A), this._updatePosition(r, u, o, l, g, i, d); + } + }, t.prototype._getNearestPoint = function(r, n, i, a) { + if (i === "axis" || qt(n)) + return { + color: a || (this._renderMode === "html" ? "#fff" : "none") + }; + if (!qt(n)) + return { + color: a || n.color || n.borderColor + }; + }, t.prototype._updatePosition = function(r, n, i, a, o, l, u) { + var d = this._api.getWidth(), f = this._api.getHeight(); + n = n || r.get("position"); + var g = o.getSize(), v = r.get("align"), y = r.get("verticalAlign"), C = u && u.getBoundingRect().clone(); + if (u && C.applyTransform(u.transform), Kr(n) && (n = n([i, a], l, o.el, C, { + viewSize: [d, f], + contentSize: g.slice() + })), qt(n)) + i = yr(n[0], d), a = yr(n[1], f); + else if (sn(n)) { + var A = n; + A.width = g[0], A.height = g[1]; + var S = js(A, { + width: d, + height: f + }); + i = S.x, a = S.y, v = null, y = null; + } else if (wr(n) && u) { + var _ = Pnt(n, C, g, r.get("borderWidth")); + i = _[0], a = _[1]; + } else { + var _ = Mnt(i, a, o, d, f, v ? null : 20, y ? null : 20); + i = _[0], a = _[1]; + } + if (v && (i -= nce(v) ? g[0] / 2 : v === "right" ? g[0] : 0), y && (a -= nce(y) ? g[1] / 2 : y === "bottom" ? g[1] : 0), Pbe(r)) { + var _ = knt(i, a, o, d, f); + i = _[0], a = _[1]; + } + o.moveTo(i, a); + }, t.prototype._updateContentNotChangedOnAxis = function(r, n) { + var i = this._lastDataByCoordSys, a = this._cbParamsList, o = !!i && i.length === r.length; + return o && Ee(i, function(l, u) { + var d = l.dataByAxis || [], f = r[u] || {}, g = f.dataByAxis || []; + o = o && d.length === g.length, o && Ee(d, function(v, y) { + var C = g[y] || {}, A = v.seriesDataIndices || [], S = C.seriesDataIndices || []; + o = o && v.value === C.value && v.axisType === C.axisType && v.axisId === C.axisId && A.length === S.length, o && Ee(A, function(_, E) { + var I = S[E]; + o = o && _.seriesIndex === I.seriesIndex && _.dataIndex === I.dataIndex; + }), a && Ee(v.seriesDataIndices, function(_) { + var E = _.seriesIndex, I = n[E], w = a[E]; + I && w && w.data !== I.data && (o = !1); + }); + }); + }), this._lastDataByCoordSys = r, this._cbParamsList = n, !!o; + }, t.prototype._hide = function(r) { + this._lastDataByCoordSys = null, r({ + type: "hideTip", + from: this.uid + }); + }, t.prototype.dispose = function(r, n) { + Yi.node || !n.getDom() || (bR(this, "_updatePosition"), this._tooltipContent.dispose(), YW("itemTooltip", n)); + }, t.type = "tooltip", t; + }(Co) +); +function GA(e, t, r) { + var n = t.ecModel, i; + r ? (i = new Wa(r, n, n), i = new Wa(t.option, i, n)) : i = t; + for (var a = e.length - 1; a >= 0; a--) { + var o = e[a]; + o && (o instanceof Wa && (o = o.get("tooltip", !0)), wr(o) && (o = { + formatter: o + }), o && (i = new Wa(o, i, n))); + } + return i; +} +function rce(e, t) { + return e.dispatchAction || Ar(t.dispatchAction, t); +} +function Mnt(e, t, r, n, i, a, o) { + var l = r.getSize(), u = l[0], d = l[1]; + return a != null && (e + u + a + 2 > n ? e -= u + a : e += a), o != null && (t + d + o > i ? t -= d + o : t += o), [e, t]; +} +function knt(e, t, r, n, i) { + var a = r.getSize(), o = a[0], l = a[1]; + return e = Math.min(e + o, n) - o, t = Math.min(t + l, i) - l, e = Math.max(e, 0), t = Math.max(t, 0), [e, t]; +} +function Pnt(e, t, r, n) { + var i = r[0], a = r[1], o = Math.ceil(Math.SQRT2 * n) + 8, l = 0, u = 0, d = t.width, f = t.height; + switch (e) { + case "inside": + l = t.x + d / 2 - i / 2, u = t.y + f / 2 - a / 2; + break; + case "top": + l = t.x + d / 2 - i / 2, u = t.y - a - o; + break; + case "bottom": + l = t.x + d / 2 - i / 2, u = t.y + f + o; + break; + case "left": + l = t.x - i - o, u = t.y + f / 2 - a / 2; + break; + case "right": + l = t.x + d + o, u = t.y + f / 2 - a / 2; + } + return [l, u]; +} +function nce(e) { + return e === "center" || e === "middle"; +} +function Nnt(e, t, r) { + var n = _8(e).queryOptionMap, i = n.keys()[0]; + if (!(!i || i === "series")) { + var a = gD(t, i, n.get(i), { + useDefault: !1, + enableAll: !1, + enableNone: !1 + }), o = a.models[0]; + if (o) { + var l = r.getViewOfComponentModel(o), u; + if (l.group.traverse(function(d) { + var f = Tn(d).tooltipConfig; + if (f && f.name === e.name) + return u = d, !0; + }), u) + return { + componentMainType: i, + componentIndex: o.componentIndex, + el: u + }; + } + } +} +const Lnt = Ont; +function Fnt(e) { + ii(LD), e.registerComponentModel(vnt), e.registerComponentView(Lnt), e.registerAction({ + type: "showTip", + event: "showTip", + update: "tooltip:manuallyShowTip" + }, Ls), e.registerAction({ + type: "hideTip", + event: "hideTip", + update: "tooltip:manuallyHideTip" + }, Ls); +} +var Bnt = ["rect", "polygon", "keep", "clear"]; +function Unt(e, t) { + var r = qa(e ? e.brush : []); + if (r.length) { + var n = []; + Ee(r, function(u) { + var d = u.hasOwnProperty("toolbox") ? u.toolbox : []; + d instanceof Array && (n = n.concat(d)); + }); + var i = e && e.toolbox; + qt(i) && (i = i[0]), i || (i = { + feature: {} + }, e.toolbox = [i]); + var a = i.feature || (i.feature = {}), o = a.brush || (a.brush = {}), l = o.type || (o.type = []); + l.push.apply(l, n), jnt(l), t && !l.length && l.push.apply(l, Bnt); + } +} +function jnt(e) { + var t = {}; + Ee(e, function(r) { + t[r] = 1; + }), e.length = 0, Ee(t, function(r, n) { + e.push(n); + }); +} +var ice = Ee; +function ace(e) { + if (e) { + for (var t in e) + if (e.hasOwnProperty(t)) + return !0; + } +} +function QW(e, t, r) { + var n = {}; + return ice(t, function(a) { + var o = n[a] = i(); + ice(e[a], function(l, u) { + if (yc.isValidType(u)) { + var d = { + type: u, + visual: l + }; + r && r(d, a), o[u] = new yc(d), u === "opacity" && (d = cn(d), d.type = "colorAlpha", o.__hidden.__alphaForOpacity = new yc(d)); + } + }); + }), n; + function i() { + var a = function() { + }; + a.prototype.__hidden = a.prototype; + var o = new a(); + return o; + } +} +function Bbe(e, t, r) { + var n; + Ee(r, function(i) { + t.hasOwnProperty(i) && ace(t[i]) && (n = !0); + }), n && Ee(r, function(i) { + t.hasOwnProperty(i) && ace(t[i]) ? e[i] = cn(t[i]) : delete e[i]; + }); +} +function $nt(e, t, r, n, i, a) { + var o = {}; + Ee(e, function(g) { + var v = yc.prepareVisualTypes(t[g]); + o[g] = v; + }); + var l; + function u(g) { + return e9(r, l, g); + } + function d(g, v) { + Bye(r, l, g, v); + } + a == null ? r.each(f) : r.each([a], f); + function f(g, v) { + l = a == null ? g : v; + var y = r.getRawDataItem(l); + if (!(y && y.visualMap === !1)) + for (var C = n.call(i, g), A = t[C], S = o[C], _ = 0, E = S.length; _ < E; _++) { + var I = S[_]; + A[I] && A[I].applyVisual(g, u, d); + } + } +} +function Vnt(e, t, r, n) { + var i = {}; + return Ee(e, function(a) { + var o = yc.prepareVisualTypes(t[a]); + i[a] = o; + }), { + progress: function(o, l) { + var u; + n != null && (u = l.getDimensionIndex(n)); + function d(x) { + return e9(l, g, x); + } + function f(x, b) { + Bye(l, g, x, b); + } + for (var g, v = l.getStore(); (g = o.next()) != null; ) { + var y = l.getRawDataItem(g); + if (!(y && y.visualMap === !1)) + for (var C = n != null ? v.get(u, g) : g, A = r(C), S = t[A], _ = i[A], E = 0, I = _.length; E < I; E++) { + var w = _[E]; + S[w] && S[w].applyVisual(C, d, f); + } + } + } + }; +} +function znt(e) { + var t = e.brushType, r = { + point: function(n) { + return oce[t].point(n, r, e); + }, + rect: function(n) { + return oce[t].rect(n, r, e); + } + }; + return r; +} +var oce = { + lineX: sce(0), + lineY: sce(1), + rect: { + point: function(e, t, r) { + return e && r.boundingRect.contain(e[0], e[1]); + }, + rect: function(e, t, r) { + return e && r.boundingRect.intersect(e); + } + }, + polygon: { + point: function(e, t, r) { + return e && r.boundingRect.contain(e[0], e[1]) && Ib(r.range, e[0], e[1]); + }, + rect: function(e, t, r) { + var n = r.range; + if (!e || n.length <= 1) + return !1; + var i = e.x, a = e.y, o = e.width, l = e.height, u = n[0]; + if (Ib(n, i, a) || Ib(n, i + o, a) || Ib(n, i, a + l) || Ib(n, i + o, a + l) || ei.create(e).contain(u[0], u[1]) || d1(i, a, i + o, a, n) || d1(i, a, i, a + l, n) || d1(i + o, a, i + o, a + l, n) || d1(i, a + l, i + o, a + l, n)) + return !0; + } + } +}; +function sce(e) { + var t = ["x", "y"], r = ["width", "height"]; + return { + point: function(n, i, a) { + if (n) { + var o = a.range, l = n[e]; + return YA(l, o); + } + }, + rect: function(n, i, a) { + if (n) { + var o = a.range, l = [n[t[e]], n[t[e]] + n[r[e]]]; + return l[1] < l[0] && l.reverse(), YA(l[0], o) || YA(l[1], o) || YA(o[0], l) || YA(o[1], l); + } + } + }; +} +function YA(e, t) { + return t[0] <= e && e <= t[1]; +} +var lce = ["inBrush", "outOfBrush"], R3 = "__ecBrushSelect", eG = "__ecInBrushSelectEvent"; +function Ube(e) { + e.eachComponent({ + mainType: "brush" + }, function(t) { + var r = t.brushTargetManager = new _Y(t.option, e); + r.setInputRanges(t.areas, e); + }); +} +function Hnt(e, t, r) { + var n = [], i, a; + e.eachComponent({ + mainType: "brush" + }, function(o) { + r && r.type === "takeGlobalCursor" && o.setBrushOption(r.key === "brush" ? r.brushOption : { + brushType: !1 + }); + }), Ube(e), e.eachComponent({ + mainType: "brush" + }, function(o, l) { + var u = { + brushId: o.id, + brushIndex: l, + brushName: o.name, + areas: cn(o.areas), + selected: [] + }; + n.push(u); + var d = o.option, f = d.brushLink, g = [], v = [], y = [], C = !1; + l || (i = d.throttleType, a = d.throttleDelay); + var A = er(o.areas, function(x) { + var b = Xnt[x.brushType], R = Jr({ + boundingRect: b ? b(x) : void 0 + }, x); + return R.selectors = znt(R), R; + }), S = QW(o.option, lce, function(x) { + x.mappingMethod = "fixed"; + }); + qt(f) && Ee(f, function(x) { + g[x] = 1; + }); + function _(x) { + return f === "all" || !!g[x]; + } + function E(x) { + return !!x.length; + } + e.eachSeries(function(x, b) { + var R = y[b] = []; + x.subType === "parallel" ? I(x, b) : w(x, b, R); + }); + function I(x, b) { + var R = x.coordinateSystem; + C = C || R.hasAxisBrushed(), _(b) && R.eachActiveState(x.getData(), function(M, O) { + M === "active" && (v[O] = 1); + }); + } + function w(x, b, R) { + if (!(!x.brushSelector || Ynt(o, b)) && (Ee(A, function(O) { + o.brushTargetManager.controlSeries(O, x, e) && R.push(O), C = C || E(R); + }), _(b) && E(R))) { + var M = x.getData(); + M.each(function(O) { + cce(x, R, M, O) && (v[O] = 1); + }); + } + } + e.eachSeries(function(x, b) { + var R = { + seriesId: x.id, + seriesIndex: b, + seriesName: x.name, + dataIndex: [] + }; + u.selected.push(R); + var M = y[b], O = x.getData(), P = _(b) ? function(B) { + return v[B] ? (R.dataIndex.push(O.getRawIndex(B)), "inBrush") : "outOfBrush"; + } : function(B) { + return cce(x, M, O, B) ? (R.dataIndex.push(O.getRawIndex(B)), "inBrush") : "outOfBrush"; + }; + (_(b) ? C : E(M)) && $nt(lce, S, O, P); + }); + }), Wnt(t, i, a, n, r); +} +function Wnt(e, t, r, n, i) { + if (i) { + var a = e.getZr(); + if (!a[eG]) { + a[R3] || (a[R3] = Gnt); + var o = TI(a, R3, r, t); + o(e, n); + } + } +} +function Gnt(e, t) { + if (!e.isDisposed()) { + var r = e.getZr(); + r[eG] = !0, e.dispatchAction({ + type: "brushSelect", + batch: t + }), r[eG] = !1; + } +} +function cce(e, t, r, n) { + for (var i = 0, a = t.length; i < a; i++) { + var o = t[i]; + if (e.brushSelector(n, r, o.selectors, o)) + return !0; + } +} +function Ynt(e, t) { + var r = e.option.seriesIndex; + return r != null && r !== "all" && (qt(r) ? di(r, t) < 0 : t !== r); +} +var Xnt = { + rect: function(e) { + return uce(e.range); + }, + polygon: function(e) { + for (var t, r = e.range, n = 0, i = r.length; n < i; n++) { + t = t || [[1 / 0, -1 / 0], [1 / 0, -1 / 0]]; + var a = r[n]; + a[0] < t[0][0] && (t[0][0] = a[0]), a[0] > t[0][1] && (t[0][1] = a[0]), a[1] < t[1][0] && (t[1][0] = a[1]), a[1] > t[1][1] && (t[1][1] = a[1]); + } + return t && uce(t); + } +}; +function uce(e) { + return new ei(e[0][0], e[1][0], e[0][1] - e[0][0], e[1][1] - e[1][0]); +} +var Knt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n) { + this.ecModel = r, this.api = n, this.model, (this._brushController = new Q9(n.getZr())).on("brush", Ar(this._onBrush, this)).mount(); + }, t.prototype.render = function(r, n, i, a) { + this.model = r, this._updateController(r, n, i, a); + }, t.prototype.updateTransform = function(r, n, i, a) { + Ube(n), this._updateController(r, n, i, a); + }, t.prototype.updateVisual = function(r, n, i, a) { + this.updateTransform(r, n, i, a); + }, t.prototype.updateView = function(r, n, i, a) { + this._updateController(r, n, i, a); + }, t.prototype._updateController = function(r, n, i, a) { + (!a || a.$from !== r.id) && this._brushController.setPanels(r.brushTargetManager.makePanelOpts(i)).enableBrush(r.brushOption).updateCovers(r.areas.slice()); + }, t.prototype.dispose = function() { + this._brushController.dispose(); + }, t.prototype._onBrush = function(r) { + var n = this.model.id, i = this.model.brushTargetManager.setOutputRanges(r.areas, this.ecModel); + (!r.isEnd || r.removeOnClick) && this.api.dispatchAction({ + type: "brush", + brushId: n, + areas: cn(i), + $from: n + }), r.isEnd && this.api.dispatchAction({ + type: "brushEnd", + brushId: n, + areas: cn(i), + $from: n + }); + }, t.type = "brush", t; + }(Co) +); +const Znt = Knt; +var qnt = "#ddd", Jnt = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.areas = [], r.brushOption = {}, r; + } + return t.prototype.optionUpdated = function(r, n) { + var i = this.option; + !n && Bbe(i, r, ["inBrush", "outOfBrush"]); + var a = i.inBrush = i.inBrush || {}; + i.outOfBrush = i.outOfBrush || { + color: qnt + }, a.hasOwnProperty("liftZ") || (a.liftZ = 5); + }, t.prototype.setAreas = function(r) { + r && (this.areas = er(r, function(n) { + return hce(this.option, n); + }, this)); + }, t.prototype.setBrushOption = function(r) { + this.brushOption = hce(this.option, r), this.brushType = this.brushOption.brushType; + }, t.type = "brush", t.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"], t.defaultOption = { + seriesIndex: "all", + brushType: "rect", + brushMode: "single", + transformable: !0, + brushStyle: { + borderWidth: 1, + color: "rgba(210,219,238,0.3)", + borderColor: "#D2DBEE" + }, + throttleType: "fixRate", + throttleDelay: 0, + removeOnClick: !0, + z: 1e4 + }, t; + }(Mi) +); +function hce(e, t) { + return Qn({ + brushType: e.brushType, + brushMode: e.brushMode, + transformable: e.transformable, + brushStyle: new Wa(e.brushStyle).getItemStyle(), + removeOnClick: e.removeOnClick, + z: e.z + }, t, !0); +} +const Qnt = Jnt; +var eit = ["rect", "polygon", "lineX", "lineY", "keep", "clear"], tit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + return e !== null && e.apply(this, arguments) || this; + } + return t.prototype.render = function(r, n, i) { + var a, o, l; + n.eachComponent({ + mainType: "brush" + }, function(u) { + a = u.brushType, o = u.brushOption.brushMode || "single", l = l || !!u.areas.length; + }), this._brushType = a, this._brushMode = o, Ee(r.get("type", !0), function(u) { + r.setIconStatus(u, (u === "keep" ? o === "multiple" : u === "clear" ? l : u === a) ? "emphasis" : "normal"); + }); + }, t.prototype.updateView = function(r, n, i) { + this.render(r, n, i); + }, t.prototype.getIcons = function() { + var r = this.model, n = r.get("icon", !0), i = {}; + return Ee(r.get("type", !0), function(a) { + n[a] && (i[a] = n[a]); + }), i; + }, t.prototype.onclick = function(r, n, i) { + var a = this._brushType, o = this._brushMode; + i === "clear" ? (n.dispatchAction({ + type: "axisAreaSelect", + intervals: [] + }), n.dispatchAction({ + type: "brush", + command: "clear", + // Clear all areas of all brush components. + areas: [] + })) : n.dispatchAction({ + type: "takeGlobalCursor", + key: "brush", + brushOption: { + brushType: i === "keep" ? a : a === i ? !1 : i, + brushMode: i === "keep" ? o === "multiple" ? "single" : "multiple" : o + } + }); + }, t.getDefaultOption = function(r) { + var n = { + show: !0, + type: eit.slice(), + icon: { + /* eslint-disable */ + rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13", + polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2", + lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4", + lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4", + keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z", + clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2" + // jshint ignore:line + /* eslint-enable */ + }, + // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear` + title: r.getLocaleModel().get(["toolbox", "brush", "title"]) + }; + return n; + }, t; + }(gf) +); +const rit = tit; +function nit(e) { + e.registerComponentView(Znt), e.registerComponentModel(Qnt), e.registerPreprocessor(Unt), e.registerVisual(e.PRIORITY.VISUAL.BRUSH, Hnt), e.registerAction({ + type: "brush", + event: "brush", + update: "updateVisual" + }, function(t, r) { + r.eachComponent({ + mainType: "brush", + query: t + }, function(n) { + n.setAreas(t.areas); + }); + }), e.registerAction({ + type: "brushSelect", + event: "brushSelected", + update: "none" + }, Ls), e.registerAction({ + type: "brushEnd", + event: "brushEnd", + update: "none" + }, Ls), QT("brush", rit); +} +var iit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.layoutMode = { + type: "box", + ignoreSize: !0 + }, r; + } + return t.type = "title", t.defaultOption = { + // zlevel: 0, + z: 6, + show: !0, + text: "", + target: "blank", + subtext: "", + subtarget: "blank", + left: 0, + top: 0, + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + borderWidth: 0, + padding: 5, + itemGap: 10, + textStyle: { + fontSize: 18, + fontWeight: "bold", + color: "#464646" + }, + subtextStyle: { + fontSize: 12, + color: "#6E7079" + } + }, t; + }(Mi) +), ait = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.render = function(r, n, i) { + if (this.group.removeAll(), !!r.get("show")) { + var a = this.group, o = r.getModel("textStyle"), l = r.getModel("subtextStyle"), u = r.get("textAlign"), d = Fn(r.get("textBaseline"), r.get("textVerticalAlign")), f = new Hi({ + style: uo(o, { + text: r.get("text"), + fill: o.getTextColor() + }, { + disableBox: !0 + }), + z2: 10 + }), g = f.getBoundingRect(), v = r.get("subtext"), y = new Hi({ + style: uo(l, { + text: v, + fill: l.getTextColor(), + y: g.height + r.get("itemGap"), + verticalAlign: "top" + }, { + disableBox: !0 + }), + z2: 10 + }), C = r.get("link"), A = r.get("sublink"), S = r.get("triggerEvent", !0); + f.silent = !C && !S, y.silent = !A && !S, C && f.on("click", function() { + RL(C, "_" + r.get("target")); + }), A && y.on("click", function() { + RL(A, "_" + r.get("subtarget")); + }), Tn(f).eventData = Tn(y).eventData = S ? { + componentType: "title", + componentIndex: r.componentIndex + } : null, a.add(f), v && a.add(y); + var _ = a.getBoundingRect(), E = r.getBoxLayoutParams(); + E.width = _.width, E.height = _.height; + var I = js(E, { + width: i.getWidth(), + height: i.getHeight() + }, r.get("padding")); + u || (u = r.get("left") || r.get("right"), u === "middle" && (u = "center"), u === "right" ? I.x += I.width : u === "center" && (I.x += I.width / 2)), d || (d = r.get("top") || r.get("bottom"), d === "center" && (d = "middle"), d === "bottom" ? I.y += I.height : d === "middle" && (I.y += I.height / 2), d = d || "top"), a.x = I.x, a.y = I.y, a.markRedraw(); + var w = { + align: u, + verticalAlign: d + }; + f.setStyle(w), y.setStyle(w), _ = a.getBoundingRect(); + var x = I.margin, b = r.getItemStyle(["color", "opacity"]); + b.fill = r.get("backgroundColor"); + var R = new Xi({ + shape: { + x: _.x - x[3], + y: _.y - x[0], + width: _.width + x[1] + x[3], + height: _.height + x[0] + x[2], + r: r.get("borderRadius") + }, + style: b, + subPixelOptimize: !0, + silent: !0 + }); + a.add(R); + } + }, t.type = "title", t; + }(Co) +); +function oit(e) { + e.registerComponentModel(iit), e.registerComponentView(ait); +} +var sit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.layoutMode = "box", r; + } + return t.prototype.init = function(r, n, i) { + this.mergeDefaultAndTheme(r, i), this._initData(); + }, t.prototype.mergeOption = function(r) { + e.prototype.mergeOption.apply(this, arguments), this._initData(); + }, t.prototype.setCurrentIndex = function(r) { + r == null && (r = this.option.currentIndex); + var n = this._data.count(); + this.option.loop ? r = (r % n + n) % n : (r >= n && (r = n - 1), r < 0 && (r = 0)), this.option.currentIndex = r; + }, t.prototype.getCurrentIndex = function() { + return this.option.currentIndex; + }, t.prototype.isIndexMax = function() { + return this.getCurrentIndex() >= this._data.count() - 1; + }, t.prototype.setPlayState = function(r) { + this.option.autoPlay = !!r; + }, t.prototype.getPlayState = function() { + return !!this.option.autoPlay; + }, t.prototype._initData = function() { + var r = this.option, n = r.data || [], i = r.axisType, a = this._names = [], o; + i === "category" ? (o = [], Ee(n, function(d, f) { + var g = ml(hI(d), ""), v; + sn(d) ? (v = cn(d), v.value = f) : v = f, o.push(v), a.push(g); + })) : o = n; + var l = { + category: "ordinal", + time: "time", + value: "number" + }[i] || "number", u = this._data = new Ql([{ + name: "value", + type: l + }], this); + u.initData(o, a); + }, t.prototype.getData = function() { + return this._data; + }, t.prototype.getCategories = function() { + if (this.get("axisType") === "category") + return this._names.slice(); + }, t.type = "timeline", t.defaultOption = { + // zlevel: 0, // 一级层叠 + z: 4, + show: !0, + axisType: "time", + realtime: !0, + left: "20%", + top: null, + right: "20%", + bottom: 0, + width: null, + height: 40, + padding: 5, + controlPosition: "left", + autoPlay: !1, + rewind: !1, + loop: !0, + playInterval: 2e3, + currentIndex: 0, + itemStyle: {}, + label: { + color: "#000" + }, + data: [] + }, t; + }(Mi) +); +const dce = sit; +var jbe = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "timeline.slider", t.defaultOption = O0(dce.defaultOption, { + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + borderWidth: 0, + orient: "horizontal", + inverse: !1, + tooltip: { + trigger: "item" + // data item may also have tootip attr. + }, + symbol: "circle", + symbolSize: 12, + lineStyle: { + show: !0, + width: 2, + color: "#DAE1F5" + }, + label: { + position: "auto", + // When using number, label position is not + // restricted by viewRect. + // positive: right/bottom, negative: left/top + show: !0, + interval: "auto", + rotate: 0, + // formatter: null, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: "#A4B1D7" + }, + itemStyle: { + color: "#A4B1D7", + borderWidth: 1 + }, + checkpointStyle: { + symbol: "circle", + symbolSize: 15, + color: "#316bf3", + borderColor: "#fff", + borderWidth: 2, + shadowBlur: 2, + shadowOffsetX: 1, + shadowOffsetY: 1, + shadowColor: "rgba(0, 0, 0, 0.3)", + // borderColor: 'rgba(194,53,49, 0.5)', + animation: !0, + animationDuration: 300, + animationEasing: "quinticInOut" + }, + controlStyle: { + show: !0, + showPlayBtn: !0, + showPrevBtn: !0, + showNextBtn: !0, + itemSize: 24, + itemGap: 12, + position: "left", + playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z", + stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z", + // eslint-disable-next-line max-len + nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z", + // eslint-disable-next-line max-len + prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z", + prevBtnSize: 18, + nextBtnSize: 18, + color: "#A4B1D7", + borderColor: "#A4B1D7", + borderWidth: 1 + }, + emphasis: { + label: { + show: !0, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: "#6f778d" + }, + itemStyle: { + color: "#316BF3" + }, + controlStyle: { + color: "#316BF3", + borderColor: "#316BF3", + borderWidth: 2 + } + }, + progress: { + lineStyle: { + color: "#316BF3" + }, + itemStyle: { + color: "#316BF3" + }, + label: { + color: "#6f778d" + } + }, + data: [] + }), t; + }(dce) +); +Fs(jbe, Z8.prototype); +const lit = jbe; +var cit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "timeline", t; + }(Co) +); +const uit = cit; +var hit = ( + /** @class */ + function(e) { + Dt(t, e); + function t(r, n, i, a) { + var o = e.call(this, r, n, i) || this; + return o.type = a || "value", o; + } + return t.prototype.getLabelModel = function() { + return this.model.getModel("label"); + }, t.prototype.isHorizontal = function() { + return this.model.get("orient") === "horizontal"; + }, t; + }(Ed) +); +const dit = hit; +var D3 = Math.PI, fce = ea(), fit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function(r, n) { + this.api = n; + }, t.prototype.render = function(r, n, i) { + if (this.model = r, this.api = i, this.ecModel = n, this.group.removeAll(), r.get("show", !0)) { + var a = this._layout(r, i), o = this._createGroup("_mainGroup"), l = this._createGroup("_labelGroup"), u = this._axis = this._createAxis(a, r); + r.formatTooltip = function(d) { + var f = u.scale.getLabel({ + value: d + }); + return Fl("nameValue", { + noName: !0, + value: f + }); + }, Ee(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(d) { + this["_render" + d](a, o, u, r); + }, this), this._renderAxisLabel(a, l, u, r), this._position(a, r); + } + this._doPlayStop(), this._updateTicksStatus(); + }, t.prototype.remove = function() { + this._clearTimer(), this.group.removeAll(); + }, t.prototype.dispose = function() { + this._clearTimer(); + }, t.prototype._layout = function(r, n) { + var i = r.get(["label", "position"]), a = r.get("orient"), o = git(r, n), l; + i == null || i === "auto" ? l = a === "horizontal" ? o.y + o.height / 2 < n.getHeight() / 2 ? "-" : "+" : o.x + o.width / 2 < n.getWidth() / 2 ? "+" : "-" : wr(i) ? l = { + horizontal: { + top: "-", + bottom: "+" + }, + vertical: { + left: "-", + right: "+" + } + }[a][i] : l = i; + var u = { + horizontal: "center", + vertical: l >= 0 || l === "+" ? "left" : "right" + }, d = { + horizontal: l >= 0 || l === "+" ? "top" : "bottom", + vertical: "middle" + }, f = { + horizontal: 0, + vertical: D3 / 2 + }, g = a === "vertical" ? o.height : o.width, v = r.getModel("controlStyle"), y = v.get("show", !0), C = y ? v.get("itemSize") : 0, A = y ? v.get("itemGap") : 0, S = C + A, _ = r.get(["label", "rotate"]) || 0; + _ = _ * D3 / 180; + var E, I, w, x = v.get("position", !0), b = y && v.get("showPlayBtn", !0), R = y && v.get("showPrevBtn", !0), M = y && v.get("showNextBtn", !0), O = 0, P = g; + x === "left" || x === "bottom" ? (b && (E = [0, 0], O += S), R && (I = [O, 0], O += S), M && (w = [P - C, 0], P -= S)) : (b && (E = [P - C, 0], P -= S), R && (I = [0, 0], O += S), M && (w = [P - C, 0], P -= S)); + var B = [O, P]; + return r.get("inverse") && B.reverse(), { + viewRect: o, + mainLength: g, + orient: a, + rotation: f[a], + labelRotation: _, + labelPosOpt: l, + labelAlign: r.get(["label", "align"]) || u[a], + labelBaseline: r.get(["label", "verticalAlign"]) || r.get(["label", "baseline"]) || d[a], + // Based on mainGroup. + playPosition: E, + prevBtnPosition: I, + nextBtnPosition: w, + axisExtent: B, + controlSize: C, + controlGap: A + }; + }, t.prototype._position = function(r, n) { + var i = this._mainGroup, a = this._labelGroup, o = r.viewRect; + if (r.orient === "vertical") { + var l = ku(), u = o.x, d = o.y + o.height; + Pp(l, l, [-u, -d]), R0(l, l, -D3 / 2), Pp(l, l, [u, d]), o = o.clone(), o.applyTransform(l); + } + var f = E(o), g = E(i.getBoundingRect()), v = E(a.getBoundingRect()), y = [i.x, i.y], C = [a.x, a.y]; + C[0] = y[0] = f[0][0]; + var A = r.labelPosOpt; + if (A == null || wr(A)) { + var S = A === "+" ? 0 : 1; + I(y, g, f, 1, S), I(C, v, f, 1, 1 - S); + } else { + var S = A >= 0 ? 0 : 1; + I(y, g, f, 1, S), C[1] = y[1] + A; + } + i.setPosition(y), a.setPosition(C), i.rotation = a.rotation = r.rotation, _(i), _(a); + function _(w) { + w.originX = f[0][0] - w.x, w.originY = f[1][0] - w.y; + } + function E(w) { + return [[w.x, w.x + w.width], [w.y, w.y + w.height]]; + } + function I(w, x, b, R, M) { + w[R] += b[R][M] - x[R][M]; + } + }, t.prototype._createAxis = function(r, n) { + var i = n.getData(), a = n.get("axisType"), o = pit(n, a); + o.getTicks = function() { + return i.mapArray(["value"], function(d) { + return { + value: d + }; + }); + }; + var l = i.getDataExtent("value"); + o.setExtent(l[0], l[1]), o.calcNiceTicks(); + var u = new dit("value", o, r.axisExtent, a); + return u.model = n, u; + }, t.prototype._createGroup = function(r) { + var n = this[r] = new _n(); + return this.group.add(n), n; + }, t.prototype._renderAxisLine = function(r, n, i, a) { + var o = i.getExtent(); + if (a.get(["lineStyle", "show"])) { + var l = new Pl({ + shape: { + x1: o[0], + y1: 0, + x2: o[1], + y2: 0 + }, + style: $t({ + lineCap: "round" + }, a.getModel("lineStyle").getLineStyle()), + silent: !0, + z2: 1 + }); + n.add(l); + var u = this._progressLine = new Pl({ + shape: { + x1: o[0], + x2: this._currentPointer ? this._currentPointer.x : o[0], + y1: 0, + y2: 0 + }, + style: Jr({ + lineCap: "round", + lineWidth: l.style.lineWidth + }, a.getModel(["progress", "lineStyle"]).getLineStyle()), + silent: !0, + z2: 1 + }); + n.add(u); + } + }, t.prototype._renderAxisTick = function(r, n, i, a) { + var o = this, l = a.getData(), u = i.scale.getTicks(); + this._tickSymbols = [], Ee(u, function(d) { + var f = i.dataToCoord(d.value), g = l.getItemModel(d.value), v = g.getModel("itemStyle"), y = g.getModel(["emphasis", "itemStyle"]), C = g.getModel(["progress", "itemStyle"]), A = { + x: f, + y: 0, + onclick: Ar(o._changeTimeline, o, d.value) + }, S = pce(g, v, n, A); + S.ensureState("emphasis").style = y.getItemStyle(), S.ensureState("progress").style = C.getItemStyle(), Lm(S); + var _ = Tn(S); + g.get("tooltip") ? (_.dataIndex = d.value, _.dataModel = a) : _.dataIndex = _.dataModel = null, o._tickSymbols.push(S); + }); + }, t.prototype._renderAxisLabel = function(r, n, i, a) { + var o = this, l = i.getLabelModel(); + if (l.get("show")) { + var u = a.getData(), d = i.getViewLabels(); + this._tickLabels = [], Ee(d, function(f) { + var g = f.tickValue, v = u.getItemModel(g), y = v.getModel("label"), C = v.getModel(["emphasis", "label"]), A = v.getModel(["progress", "label"]), S = i.dataToCoord(f.tickValue), _ = new Hi({ + x: S, + y: 0, + rotation: r.labelRotation - r.rotation, + onclick: Ar(o._changeTimeline, o, g), + silent: !1, + style: uo(y, { + text: f.formattedLabel, + align: r.labelAlign, + verticalAlign: r.labelBaseline + }) + }); + _.ensureState("emphasis").style = uo(C), _.ensureState("progress").style = uo(A), n.add(_), Lm(_), fce(_).dataIndex = g, o._tickLabels.push(_); + }); + } + }, t.prototype._renderControl = function(r, n, i, a) { + var o = r.controlSize, l = r.rotation, u = a.getModel("controlStyle").getItemStyle(), d = a.getModel(["emphasis", "controlStyle"]).getItemStyle(), f = a.getPlayState(), g = a.get("inverse", !0); + v(r.nextBtnPosition, "next", Ar(this._changeTimeline, this, g ? "-" : "+")), v(r.prevBtnPosition, "prev", Ar(this._changeTimeline, this, g ? "+" : "-")), v(r.playPosition, f ? "stop" : "play", Ar(this._handlePlayClick, this, !f), !0); + function v(y, C, A, S) { + if (y) { + var _ = Np(Fn(a.get(["controlStyle", C + "BtnSize"]), o), o), E = [0, -_ / 2, _, _], I = vit(a, C + "Icon", E, { + x: y[0], + y: y[1], + originX: o / 2, + originY: 0, + rotation: S ? -l : 0, + rectHover: !0, + style: u, + onclick: A + }); + I.ensureState("emphasis").style = d, n.add(I), Lm(I); + } + } + }, t.prototype._renderCurrentPointer = function(r, n, i, a) { + var o = a.getData(), l = a.getCurrentIndex(), u = o.getItemModel(l).getModel("checkpointStyle"), d = this, f = { + onCreate: function(g) { + g.draggable = !0, g.drift = Ar(d._handlePointerDrag, d), g.ondragend = Ar(d._handlePointerDragend, d), gce(g, d._progressLine, l, i, a, !0); + }, + onUpdate: function(g) { + gce(g, d._progressLine, l, i, a); + } + }; + this._currentPointer = pce(u, u, this._mainGroup, {}, this._currentPointer, f); + }, t.prototype._handlePlayClick = function(r) { + this._clearTimer(), this.api.dispatchAction({ + type: "timelinePlayChange", + playState: r, + from: this.uid + }); + }, t.prototype._handlePointerDrag = function(r, n, i) { + this._clearTimer(), this._pointerChangeTimeline([i.offsetX, i.offsetY]); + }, t.prototype._handlePointerDragend = function(r) { + this._pointerChangeTimeline([r.offsetX, r.offsetY], !0); + }, t.prototype._pointerChangeTimeline = function(r, n) { + var i = this._toAxisCoord(r)[0], a = this._axis, o = ld(a.getExtent().slice()); + i > o[1] && (i = o[1]), i < o[0] && (i = o[0]), this._currentPointer.x = i, this._currentPointer.markRedraw(); + var l = this._progressLine; + l && (l.shape.x2 = i, l.dirty()); + var u = this._findNearestTick(i), d = this.model; + (n || u !== d.getCurrentIndex() && d.get("realtime")) && this._changeTimeline(u); + }, t.prototype._doPlayStop = function() { + var r = this; + this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(function() { + var n = r.model; + r._changeTimeline(n.getCurrentIndex() + (n.get("rewind", !0) ? -1 : 1)); + }, this.model.get("playInterval"))); + }, t.prototype._toAxisCoord = function(r) { + var n = this._mainGroup.getLocalTransform(); + return Op(r, n, !0); + }, t.prototype._findNearestTick = function(r) { + var n = this.model.getData(), i = 1 / 0, a, o = this._axis; + return n.each(["value"], function(l, u) { + var d = o.dataToCoord(l), f = Math.abs(d - r); + f < i && (i = f, a = u); + }), a; + }, t.prototype._clearTimer = function() { + this._timer && (clearTimeout(this._timer), this._timer = null); + }, t.prototype._changeTimeline = function(r) { + var n = this.model.getCurrentIndex(); + r === "+" ? r = n + 1 : r === "-" && (r = n - 1), this.api.dispatchAction({ + type: "timelineChange", + currentIndex: r, + from: this.uid + }); + }, t.prototype._updateTicksStatus = function() { + var r = this.model.getCurrentIndex(), n = this._tickSymbols, i = this._tickLabels; + if (n) + for (var a = 0; a < n.length; a++) + n && n[a] && n[a].toggleState("progress", a < r); + if (i) + for (var a = 0; a < i.length; a++) + i && i[a] && i[a].toggleState("progress", fce(i[a]).dataIndex <= r); + }, t.type = "timeline.slider", t; + }(uit) +); +function pit(e, t) { + if (t = t || e.get("type"), t) + switch (t) { + case "category": + return new v9({ + ordinalMeta: e.getCategories(), + extent: [1 / 0, -1 / 0] + }); + case "time": + return new M_e({ + locale: e.ecModel.getLocaleModel(), + useUTC: e.ecModel.get("useUTC") + }); + default: + return new y0(); + } +} +function git(e, t) { + return js(e.getBoxLayoutParams(), { + width: t.getWidth(), + height: t.getHeight() + }, e.get("padding")); +} +function vit(e, t, r, n) { + var i = n.style, a = gI(e.get(["controlStyle", t]), n || {}, new ei(r[0], r[1], r[2], r[3])); + return i && a.setStyle(i), a; +} +function pce(e, t, r, n, i, a) { + var o = t.get("color"); + if (i) + i.setColor(o), r.add(i), a && a.onUpdate(i); + else { + var l = e.get("symbol"); + i = $s(l, -1, -1, 2, 2, o), i.setStyle("strokeNoScale", !0), r.add(i), a && a.onCreate(i); + } + var u = t.getItemStyle(["color"]); + i.setStyle(u), n = Qn({ + rectHover: !0, + z2: 100 + }, n, !0); + var d = wI(e.get("symbolSize")); + n.scaleX = d[0] / 2, n.scaleY = d[1] / 2; + var f = kE(e.get("symbolOffset"), d); + f && (n.x = (n.x || 0) + f[0], n.y = (n.y || 0) + f[1]); + var g = e.get("symbolRotate"); + return n.rotation = (g || 0) * Math.PI / 180 || 0, i.attr(n), i.updateTransform(), i; +} +function gce(e, t, r, n, i, a) { + if (!e.dragging) { + var o = i.getModel("checkpointStyle"), l = n.dataToCoord(i.getData().get("value", r)); + if (a || !o.get("animation", !0)) + e.attr({ + x: l, + y: 0 + }), t && t.attr({ + shape: { + x2: l + } + }); + else { + var u = { + duration: o.get("animationDuration", !0), + easing: o.get("animationEasing", !0) + }; + e.stopAnimation(null, !0), e.animateTo({ + x: l, + y: 0 + }, u), t && t.animateTo({ + shape: { + x2: l + } + }, u); + } + } +} +const mit = fit; +function yit(e) { + e.registerAction({ + type: "timelineChange", + event: "timelineChanged", + update: "prepareAndUpdate" + }, function(t, r, n) { + var i = r.getComponent("timeline"); + return i && t.currentIndex != null && (i.setCurrentIndex(t.currentIndex), !i.get("loop", !0) && i.isIndexMax() && i.getPlayState() && (i.setPlayState(!1), n.dispatchAction({ + type: "timelinePlayChange", + playState: !1, + from: t.from + }))), r.resetOption("timeline", { + replaceMerge: i.get("replaceMerge", !0) + }), Jr({ + currentIndex: i.option.currentIndex + }, t); + }), e.registerAction({ + type: "timelinePlayChange", + event: "timelinePlayChanged", + update: "update" + }, function(t, r) { + var n = r.getComponent("timeline"); + n && t.playState != null && n.setPlayState(t.playState); + }); +} +function _it(e) { + var t = e && e.timeline; + qt(t) || (t = t ? [t] : []), Ee(t, function(r) { + r && Sit(r); + }); +} +function Sit(e) { + var t = e.type, r = { + number: "value", + time: "time" + }; + if (r[t] && (e.axisType = r[t], delete e.type), vce(e), Rb(e, "controlPosition")) { + var n = e.controlStyle || (e.controlStyle = {}); + Rb(n, "position") || (n.position = e.controlPosition), n.position === "none" && !Rb(n, "show") && (n.show = !1, delete n.position), delete e.controlPosition; + } + Ee(e.data || [], function(i) { + sn(i) && !qt(i) && (!Rb(i, "value") && Rb(i, "name") && (i.value = i.name), vce(i)); + }); +} +function vce(e) { + var t = e.itemStyle || (e.itemStyle = {}), r = t.emphasis || (t.emphasis = {}), n = e.label || e.label || {}, i = n.normal || (n.normal = {}), a = { + normal: 1, + emphasis: 1 + }; + Ee(n, function(o, l) { + !a[l] && !Rb(i, l) && (i[l] = o); + }), r.label && !Rb(n, "emphasis") && (n.emphasis = r.label, delete r.label); +} +function Rb(e, t) { + return e.hasOwnProperty(t); +} +function bit(e) { + e.registerComponentModel(lit), e.registerComponentView(mit), e.registerSubTypeDefaulter("timeline", function() { + return "slider"; + }), yit(e), e.registerPreprocessor(_it); +} +function EY(e, t) { + if (!e) + return !1; + for (var r = qt(e) ? e : [e], n = 0; n < r.length; n++) + if (r[n] && r[n][t]) + return !0; + return !1; +} +function RP(e) { + uE(e, "label", ["show"]); +} +var DP = ea(), $be = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.createdBySelf = !1, r; + } + return t.prototype.init = function(r, n, i) { + this.mergeDefaultAndTheme(r, i), this._mergeOption(r, i, !1, !0); + }, t.prototype.isAnimationEnabled = function() { + if (Yi.node) + return !1; + var r = this.__hostSeries; + return this.getShallow("animation") && r && r.isAnimationEnabled(); + }, t.prototype.mergeOption = function(r, n) { + this._mergeOption(r, n, !1, !1); + }, t.prototype._mergeOption = function(r, n, i, a) { + var o = this.mainType; + i || n.eachSeries(function(l) { + var u = l.get(this.mainType, !0), d = DP(l)[o]; + if (!u || !u.data) { + DP(l)[o] = null; + return; + } + d ? d._mergeOption(u, n, !0) : (a && RP(u), Ee(u.data, function(f) { + f instanceof Array ? (RP(f[0]), RP(f[1])) : RP(f); + }), d = this.createMarkerModelFromSeries(u, this, n), $t(d, { + mainType: this.mainType, + // Use the same series index and name + seriesIndex: l.seriesIndex, + name: l.name, + createdBySelf: !0 + }), d.__hostSeries = l), DP(l)[o] = d; + }, this); + }, t.prototype.formatTooltip = function(r, n, i) { + var a = this.getData(), o = this.getRawValue(r), l = a.getName(r); + return Fl("section", { + header: this.name, + blocks: [Fl("nameValue", { + name: l, + value: o, + noName: !l, + noValue: o == null + })] + }); + }, t.prototype.getData = function() { + return this._data; + }, t.prototype.setData = function(r) { + this._data = r; + }, t.getMarkerModelFromSeries = function(r, n) { + return DP(r)[n]; + }, t.type = "marker", t.dependencies = ["series", "grid", "polar", "geo"], t; + }(Mi) +); +Fs($be, Z8.prototype); +const b0 = $be; +var Eit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.createMarkerModelFromSeries = function(r, n, i) { + return new t(r, n, i); + }, t.type = "markPoint", t.defaultOption = { + // zlevel: 0, + z: 5, + symbol: "pin", + symbolSize: 50, + // symbolRotate: 0, + // symbolOffset: [0, 0] + tooltip: { + trigger: "item" + }, + label: { + show: !0, + position: "inside" + }, + itemStyle: { + borderWidth: 2 + }, + emphasis: { + label: { + show: !0 + } + } + }, t; + }(b0) +); +const Cit = Eit; +function tG(e) { + return !(isNaN(parseFloat(e.x)) && isNaN(parseFloat(e.y))); +} +function Tit(e) { + return !isNaN(parseFloat(e.x)) && !isNaN(parseFloat(e.y)); +} +function OP(e, t, r, n, i, a) { + var o = [], l = Ym( + t, + n + /* , otherDataDim */ + ), u = l ? t.getCalculationInfo("stackResultDimension") : n, d = CY(t, u, e), f = t.indicesOfNearest(u, d)[0]; + o[i] = t.get(r, f), o[a] = t.get(u, f); + var g = t.get(n, f), v = wp(t.get(n, f)); + return v = Math.min(v, 20), v >= 0 && (o[a] = +o[a].toFixed(v)), [o, g]; +} +var O3 = { + min: Ln(OP, "min"), + max: Ln(OP, "max"), + average: Ln(OP, "average"), + median: Ln(OP, "median") +}; +function NR(e, t) { + if (t) { + var r = e.getData(), n = e.coordinateSystem, i = n && n.dimensions; + if (!Tit(t) && !qt(t.coord) && qt(i)) { + var a = Vbe(t, r, n, e); + if (t = cn(t), t.type && O3[t.type] && a.baseAxis && a.valueAxis) { + var o = di(i, a.baseAxis.dim), l = di(i, a.valueAxis.dim), u = O3[t.type](r, a.baseDataDim, a.valueDataDim, o, l); + t.coord = u[0], t.value = u[1]; + } else + t.coord = [t.xAxis != null ? t.xAxis : t.radiusAxis, t.yAxis != null ? t.yAxis : t.angleAxis]; + } + if (t.coord == null || !qt(i)) + t.coord = []; + else + for (var d = t.coord, f = 0; f < 2; f++) + O3[d[f]] && (d[f] = CY(r, r.mapDimension(i[f]), d[f])); + return t; + } +} +function Vbe(e, t, r, n) { + var i = {}; + return e.valueIndex != null || e.valueDim != null ? (i.valueDataDim = e.valueIndex != null ? t.getDimension(e.valueIndex) : e.valueDim, i.valueAxis = r.getAxis(wit(n, i.valueDataDim)), i.baseAxis = r.getOtherAxis(i.valueAxis), i.baseDataDim = t.mapDimension(i.baseAxis.dim)) : (i.baseAxis = n.getBaseAxis(), i.valueAxis = r.getOtherAxis(i.baseAxis), i.baseDataDim = t.mapDimension(i.baseAxis.dim), i.valueDataDim = t.mapDimension(i.valueAxis.dim)), i; +} +function wit(e, t) { + var r = e.getData().getDimensionInfo(t); + return r && r.coordDim; +} +function LR(e, t) { + return e && e.containData && t.coord && !tG(t) ? e.containData(t.coord) : !0; +} +function Iit(e, t, r) { + return e && e.containZone && t.coord && r.coord && !tG(t) && !tG(r) ? e.containZone(t.coord, r.coord) : !0; +} +function zbe(e, t) { + return e ? function(r, n, i, a) { + var o = a < 2 ? r.coord && r.coord[a] : r.value; + return u0(o, t[a]); + } : function(r, n, i, a) { + return u0(r.value, t[a]); + }; +} +function CY(e, t, r) { + if (r === "average") { + var n = 0, i = 0; + return e.each(t, function(a, o) { + isNaN(a) || (n += a, i++); + }), n / i; + } else + return r === "median" ? e.getMedian(t) : e.getDataExtent(t)[r === "max" ? 1 : 0]; +} +var M3 = ea(), xit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.init = function() { + this.markerGroupMap = $r(); + }, t.prototype.render = function(r, n, i) { + var a = this, o = this.markerGroupMap; + o.each(function(l) { + M3(l).keep = !1; + }), n.eachSeries(function(l) { + var u = b0.getMarkerModelFromSeries(l, a.type); + u && a.renderSeries(l, u, n, i); + }), o.each(function(l) { + !M3(l).keep && a.group.remove(l.group); + }); + }, t.prototype.markKeep = function(r) { + M3(r).keep = !0; + }, t.prototype.toggleBlurSeries = function(r, n) { + var i = this; + Ee(r, function(a) { + var o = b0.getMarkerModelFromSeries(a, i.type); + if (o) { + var l = o.getData(); + l.eachItemGraphicEl(function(u) { + u && (n ? nme(u) : I8(u)); + }); + } + }); + }, t.type = "marker", t; + }(Co) +); +const TY = xit; +function mce(e, t, r) { + var n = t.coordinateSystem; + e.each(function(i) { + var a = e.getItemModel(i), o, l = yr(a.get("x"), r.getWidth()), u = yr(a.get("y"), r.getHeight()); + if (!isNaN(l) && !isNaN(u)) + o = [l, u]; + else if (t.getMarkerPosition) + o = t.getMarkerPosition(e.getValues(e.dimensions, i)); + else if (n) { + var d = e.get(n.dimensions[0], i), f = e.get(n.dimensions[1], i); + o = n.dataToPoint([d, f]); + } + isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u), e.setItemLayout(i, o); + }); +} +var Ait = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.updateTransform = function(r, n, i) { + n.eachSeries(function(a) { + var o = b0.getMarkerModelFromSeries(a, "markPoint"); + o && (mce(o.getData(), a, i), this.markerGroupMap.get(a.id).updateLayout()); + }, this); + }, t.prototype.renderSeries = function(r, n, i, a) { + var o = r.coordinateSystem, l = r.id, u = r.getData(), d = this.markerGroupMap, f = d.get(l) || d.set(l, new RD()), g = Rit(o, r, n); + n.setData(g), mce(n.getData(), r, a), g.each(function(v) { + var y = g.getItemModel(v), C = y.getShallow("symbol"), A = y.getShallow("symbolSize"), S = y.getShallow("symbolRotate"), _ = y.getShallow("symbolOffset"), E = y.getShallow("symbolKeepAspect"); + if (Kr(C) || Kr(A) || Kr(S) || Kr(_)) { + var I = n.getRawValue(v), w = n.getDataParams(v); + Kr(C) && (C = C(I, w)), Kr(A) && (A = A(I, w)), Kr(S) && (S = S(I, w)), Kr(_) && (_ = _(I, w)); + } + var x = y.getModel("itemStyle").getItemStyle(), b = ED(u, "color"); + x.fill || (x.fill = b), g.setItemVisual(v, { + symbol: C, + symbolSize: A, + symbolRotate: S, + symbolOffset: _, + symbolKeepAspect: E, + style: x + }); + }), f.updateData(g), this.group.add(f.group), g.eachItemGraphicEl(function(v) { + v.traverse(function(y) { + Tn(y).dataModel = n; + }); + }), this.markKeep(f), f.group.silent = n.get("silent") || r.get("silent"); + }, t.type = "markPoint", t; + }(TY) +); +function Rit(e, t, r) { + var n; + e ? n = er(e && e.dimensions, function(l) { + var u = t.getData().getDimensionInfo(t.getData().mapDimension(l)) || {}; + return $t($t({}, u), { + name: l, + // DON'T use ordinalMeta to parse and collect ordinal. + ordinalMeta: null + }); + }) : n = [{ + name: "value", + type: "float" + }]; + var i = new Ql(n, r), a = er(r.get("data"), Ln(NR, t)); + e && (a = Ma(a, Ln(LR, e))); + var o = zbe(!!e, n); + return i.initData(a, null, o), i; +} +const Dit = Ait; +function Oit(e) { + e.registerComponentModel(Cit), e.registerComponentView(Dit), e.registerPreprocessor(function(t) { + EY(t.series, "markPoint") && (t.markPoint = t.markPoint || {}); + }); +} +var Mit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.createMarkerModelFromSeries = function(r, n, i) { + return new t(r, n, i); + }, t.type = "markLine", t.defaultOption = { + // zlevel: 0, + z: 5, + symbol: ["circle", "arrow"], + symbolSize: [8, 16], + // symbolRotate: 0, + symbolOffset: 0, + precision: 2, + tooltip: { + trigger: "item" + }, + label: { + show: !0, + position: "end", + distance: 5 + }, + lineStyle: { + type: "dashed" + }, + emphasis: { + label: { + show: !0 + }, + lineStyle: { + width: 3 + } + }, + animationEasing: "linear" + }, t; + }(b0) +); +const kit = Mit; +var MP = ea(), Pit = function(e, t, r, n) { + var i = e.getData(), a; + if (qt(n)) + a = n; + else { + var o = n.type; + if (o === "min" || o === "max" || o === "average" || o === "median" || n.xAxis != null || n.yAxis != null) { + var l = void 0, u = void 0; + if (n.yAxis != null || n.xAxis != null) + l = t.getAxis(n.yAxis != null ? "y" : "x"), u = kl(n.yAxis, n.xAxis); + else { + var d = Vbe(n, i, t, e); + l = d.valueAxis; + var f = g9(i, d.valueDataDim); + u = CY(i, f, o); + } + var g = l.dim === "x" ? 0 : 1, v = 1 - g, y = cn(n), C = { + coord: [] + }; + y.type = null, y.coord = [], y.coord[v] = -1 / 0, C.coord[v] = 1 / 0; + var A = r.get("precision"); + A >= 0 && Qi(u) && (u = +u.toFixed(Math.min(A, 20))), y.coord[g] = C.coord[g] = u, a = [y, C, { + type: o, + valueIndex: n.valueIndex, + // Force to use the value of calculated value. + value: u + }]; + } else + a = []; + } + var S = [NR(e, a[0]), NR(e, a[1]), $t({}, a[2])]; + return S[2].type = S[2].type || null, Qn(S[2], S[0]), Qn(S[2], S[1]), S; +}; +function n2(e) { + return !isNaN(e) && !isFinite(e); +} +function yce(e, t, r, n) { + var i = 1 - e, a = n.dimensions[e]; + return n2(t[i]) && n2(r[i]) && t[e] === r[e] && n.getAxis(a).containData(t[e]); +} +function Nit(e, t) { + if (e.type === "cartesian2d") { + var r = t[0].coord, n = t[1].coord; + if (r && n && (yce(1, r, n, e) || yce(0, r, n, e))) + return !0; + } + return LR(e, t[0]) && LR(e, t[1]); +} +function k3(e, t, r, n, i) { + var a = n.coordinateSystem, o = e.getItemModel(t), l, u = yr(o.get("x"), i.getWidth()), d = yr(o.get("y"), i.getHeight()); + if (!isNaN(u) && !isNaN(d)) + l = [u, d]; + else { + if (n.getMarkerPosition) + l = n.getMarkerPosition(e.getValues(e.dimensions, t)); + else { + var f = a.dimensions, g = e.get(f[0], t), v = e.get(f[1], t); + l = a.dataToPoint([g, v]); + } + if (PE(a, "cartesian2d")) { + var y = a.getAxis("x"), C = a.getAxis("y"), f = a.dimensions; + n2(e.get(f[0], t)) ? l[0] = y.toGlobalCoord(y.getExtent()[r ? 0 : 1]) : n2(e.get(f[1], t)) && (l[1] = C.toGlobalCoord(C.getExtent()[r ? 0 : 1])); + } + isNaN(u) || (l[0] = u), isNaN(d) || (l[1] = d); + } + e.setItemLayout(t, l); +} +var Lit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.updateTransform = function(r, n, i) { + n.eachSeries(function(a) { + var o = b0.getMarkerModelFromSeries(a, "markLine"); + if (o) { + var l = o.getData(), u = MP(o).from, d = MP(o).to; + u.each(function(f) { + k3(u, f, !0, a, i), k3(d, f, !1, a, i); + }), l.each(function(f) { + l.setItemLayout(f, [u.getItemLayout(f), d.getItemLayout(f)]); + }), this.markerGroupMap.get(a.id).updateLayout(); + } + }, this); + }, t.prototype.renderSeries = function(r, n, i, a) { + var o = r.coordinateSystem, l = r.id, u = r.getData(), d = this.markerGroupMap, f = d.get(l) || d.set(l, new Y9()); + this.group.add(f.group); + var g = Fit(o, r, n), v = g.from, y = g.to, C = g.line; + MP(n).from = v, MP(n).to = y, n.setData(C); + var A = n.get("symbol"), S = n.get("symbolSize"), _ = n.get("symbolRotate"), E = n.get("symbolOffset"); + qt(A) || (A = [A, A]), qt(S) || (S = [S, S]), qt(_) || (_ = [_, _]), qt(E) || (E = [E, E]), g.from.each(function(w) { + I(v, w, !0), I(y, w, !1); + }), C.each(function(w) { + var x = C.getItemModel(w).getModel("lineStyle").getLineStyle(); + C.setItemLayout(w, [v.getItemLayout(w), y.getItemLayout(w)]), x.stroke == null && (x.stroke = v.getItemVisual(w, "style").fill), C.setItemVisual(w, { + fromSymbolKeepAspect: v.getItemVisual(w, "symbolKeepAspect"), + fromSymbolOffset: v.getItemVisual(w, "symbolOffset"), + fromSymbolRotate: v.getItemVisual(w, "symbolRotate"), + fromSymbolSize: v.getItemVisual(w, "symbolSize"), + fromSymbol: v.getItemVisual(w, "symbol"), + toSymbolKeepAspect: y.getItemVisual(w, "symbolKeepAspect"), + toSymbolOffset: y.getItemVisual(w, "symbolOffset"), + toSymbolRotate: y.getItemVisual(w, "symbolRotate"), + toSymbolSize: y.getItemVisual(w, "symbolSize"), + toSymbol: y.getItemVisual(w, "symbol"), + style: x + }); + }), f.updateData(C), g.line.eachItemGraphicEl(function(w) { + Tn(w).dataModel = n, w.traverse(function(x) { + Tn(x).dataModel = n; + }); + }); + function I(w, x, b) { + var R = w.getItemModel(x); + k3(w, x, b, r, a); + var M = R.getModel("itemStyle").getItemStyle(); + M.fill == null && (M.fill = ED(u, "color")), w.setItemVisual(x, { + symbolKeepAspect: R.get("symbolKeepAspect"), + // `0` should be considered as a valid value, so use `retrieve2` instead of `||` + symbolOffset: Fn(R.get("symbolOffset", !0), E[b ? 0 : 1]), + symbolRotate: Fn(R.get("symbolRotate", !0), _[b ? 0 : 1]), + // TODO: when 2d array is supported, it should ignore parent + symbolSize: Fn(R.get("symbolSize"), S[b ? 0 : 1]), + symbol: Fn(R.get("symbol", !0), A[b ? 0 : 1]), + style: M + }); + } + this.markKeep(f), f.group.silent = n.get("silent") || r.get("silent"); + }, t.type = "markLine", t; + }(TY) +); +function Fit(e, t, r) { + var n; + e ? n = er(e && e.dimensions, function(d) { + var f = t.getData().getDimensionInfo(t.getData().mapDimension(d)) || {}; + return $t($t({}, f), { + name: d, + // DON'T use ordinalMeta to parse and collect ordinal. + ordinalMeta: null + }); + }) : n = [{ + name: "value", + type: "float" + }]; + var i = new Ql(n, r), a = new Ql(n, r), o = new Ql([], r), l = er(r.get("data"), Ln(Pit, t, e, r)); + e && (l = Ma(l, Ln(Nit, e))); + var u = zbe(!!e, n); + return i.initData(er(l, function(d) { + return d[0]; + }), null, u), a.initData(er(l, function(d) { + return d[1]; + }), null, u), o.initData(er(l, function(d) { + return d[2]; + })), o.hasItemOption = !0, { + from: i, + to: a, + line: o + }; +} +const Bit = Lit; +function Uit(e) { + e.registerComponentModel(kit), e.registerComponentView(Bit), e.registerPreprocessor(function(t) { + EY(t.series, "markLine") && (t.markLine = t.markLine || {}); + }); +} +var jit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.createMarkerModelFromSeries = function(r, n, i) { + return new t(r, n, i); + }, t.type = "markArea", t.defaultOption = { + // zlevel: 0, + // PENDING + z: 1, + tooltip: { + trigger: "item" + }, + // markArea should fixed on the coordinate system + animation: !1, + label: { + show: !0, + position: "top" + }, + itemStyle: { + // color and borderColor default to use color from series + // color: 'auto' + // borderColor: 'auto' + borderWidth: 0 + }, + emphasis: { + label: { + show: !0, + position: "top" + } + } + }, t; + }(b0) +); +const $it = jit; +var kP = ea(), Vit = function(e, t, r, n) { + var i = n[0], a = n[1]; + if (!(!i || !a)) { + var o = NR(e, i), l = NR(e, a), u = o.coord, d = l.coord; + u[0] = kl(u[0], -1 / 0), u[1] = kl(u[1], -1 / 0), d[0] = kl(d[0], 1 / 0), d[1] = kl(d[1], 1 / 0); + var f = fF([{}, o, l]); + return f.coord = [o.coord, l.coord], f.x0 = o.x, f.y0 = o.y, f.x1 = l.x, f.y1 = l.y, f; + } +}; +function i2(e) { + return !isNaN(e) && !isFinite(e); +} +function _ce(e, t, r, n) { + var i = 1 - e; + return i2(t[i]) && i2(r[i]); +} +function zit(e, t) { + var r = t.coord[0], n = t.coord[1], i = { + coord: r, + x: t.x0, + y: t.y0 + }, a = { + coord: n, + x: t.x1, + y: t.y1 + }; + return PE(e, "cartesian2d") ? r && n && (_ce(1, r, n) || _ce(0, r, n)) ? !0 : Iit(e, i, a) : LR(e, i) || LR(e, a); +} +function Sce(e, t, r, n, i) { + var a = n.coordinateSystem, o = e.getItemModel(t), l, u = yr(o.get(r[0]), i.getWidth()), d = yr(o.get(r[1]), i.getHeight()); + if (!isNaN(u) && !isNaN(d)) + l = [u, d]; + else { + if (n.getMarkerPosition) { + var f = e.getValues(["x0", "y0"], t), g = e.getValues(["x1", "y1"], t), v = a.clampData(f), y = a.clampData(g), C = []; + r[0] === "x0" ? C[0] = v[0] > y[0] ? g[0] : f[0] : C[0] = v[0] > y[0] ? f[0] : g[0], r[1] === "y0" ? C[1] = v[1] > y[1] ? g[1] : f[1] : C[1] = v[1] > y[1] ? f[1] : g[1], l = n.getMarkerPosition(C, r, !0); + } else { + var A = e.get(r[0], t), S = e.get(r[1], t), _ = [A, S]; + a.clampData && a.clampData(_, _), l = a.dataToPoint(_, !0); + } + if (PE(a, "cartesian2d")) { + var E = a.getAxis("x"), I = a.getAxis("y"), A = e.get(r[0], t), S = e.get(r[1], t); + i2(A) ? l[0] = E.toGlobalCoord(E.getExtent()[r[0] === "x0" ? 0 : 1]) : i2(S) && (l[1] = I.toGlobalCoord(I.getExtent()[r[1] === "y0" ? 0 : 1])); + } + isNaN(u) || (l[0] = u), isNaN(d) || (l[1] = d); + } + return l; +} +var bce = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]], Hit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.updateTransform = function(r, n, i) { + n.eachSeries(function(a) { + var o = b0.getMarkerModelFromSeries(a, "markArea"); + if (o) { + var l = o.getData(); + l.each(function(u) { + var d = er(bce, function(g) { + return Sce(l, u, g, a, i); + }); + l.setItemLayout(u, d); + var f = l.getItemGraphicEl(u); + f.setShape("points", d); + }); + } + }, this); + }, t.prototype.renderSeries = function(r, n, i, a) { + var o = r.coordinateSystem, l = r.id, u = r.getData(), d = this.markerGroupMap, f = d.get(l) || d.set(l, { + group: new _n() + }); + this.group.add(f.group), this.markKeep(f); + var g = Wit(o, r, n); + n.setData(g), g.each(function(v) { + var y = er(bce, function(M) { + return Sce(g, v, M, r, a); + }), C = o.getAxis("x").scale, A = o.getAxis("y").scale, S = C.getExtent(), _ = A.getExtent(), E = [C.parse(g.get("x0", v)), C.parse(g.get("x1", v))], I = [A.parse(g.get("y0", v)), A.parse(g.get("y1", v))]; + ld(E), ld(I); + var w = !(S[0] > E[1] || S[1] < E[0] || _[0] > I[1] || _[1] < I[0]), x = !w; + g.setItemLayout(v, { + points: y, + allClipped: x + }); + var b = g.getItemModel(v).getModel("itemStyle").getItemStyle(), R = ED(u, "color"); + b.fill || (b.fill = R, wr(b.fill) && (b.fill = uR(b.fill, 0.4))), b.stroke || (b.stroke = R), g.setItemVisual(v, "style", b); + }), g.diff(kP(f).data).add(function(v) { + var y = g.getItemLayout(v); + if (!y.allClipped) { + var C = new Bu({ + shape: { + points: y.points + } + }); + g.setItemGraphicEl(v, C), f.group.add(C); + } + }).update(function(v, y) { + var C = kP(f).data.getItemGraphicEl(y), A = g.getItemLayout(v); + A.allClipped ? C && f.group.remove(C) : (C ? ia(C, { + shape: { + points: A.points + } + }, n, v) : C = new Bu({ + shape: { + points: A.points + } + }), g.setItemGraphicEl(v, C), f.group.add(C)); + }).remove(function(v) { + var y = kP(f).data.getItemGraphicEl(v); + f.group.remove(y); + }).execute(), g.eachItemGraphicEl(function(v, y) { + var C = g.getItemModel(y), A = g.getItemVisual(y, "style"); + v.useStyle(g.getItemVisual(y, "style")), Ec(v, Ll(C), { + labelFetcher: n, + labelDataIndex: y, + defaultText: g.getName(y) || "", + inheritColor: wr(A.fill) ? uR(A.fill, 1) : "#000" + }), bc(v, C), xs(v, null, null, C.get(["emphasis", "disabled"])), Tn(v).dataModel = n; + }), kP(f).data = g, f.group.silent = n.get("silent") || r.get("silent"); + }, t.type = "markArea", t; + }(TY) +); +function Wit(e, t, r) { + var n, i, a = ["x0", "y0", "x1", "y1"]; + if (e) { + var o = er(e && e.dimensions, function(d) { + var f = t.getData(), g = f.getDimensionInfo(f.mapDimension(d)) || {}; + return $t($t({}, g), { + name: d, + // DON'T use ordinalMeta to parse and collect ordinal. + ordinalMeta: null + }); + }); + i = er(a, function(d, f) { + return { + name: d, + type: o[f % 2].type + }; + }), n = new Ql(i, r); + } else + i = [{ + name: "value", + type: "float" + }], n = new Ql(i, r); + var l = er(r.get("data"), Ln(Vit, t, e, r)); + e && (l = Ma(l, Ln(zit, e))); + var u = e ? function(d, f, g, v) { + var y = d.coord[Math.floor(v / 2)][v % 2]; + return u0(y, i[v]); + } : function(d, f, g, v) { + return u0(d.value, i[v]); + }; + return n.initData(l, null, u), n.hasItemOption = !0, n; +} +const Git = Hit; +function Yit(e) { + e.registerComponentModel($it), e.registerComponentView(Git), e.registerPreprocessor(function(t) { + EY(t.series, "markArea") && (t.markArea = t.markArea || {}); + }); +} +var Xit = function(e, t) { + if (t === "all") + return { + type: "all", + title: e.getLocaleModel().get(["legend", "selector", "all"]) + }; + if (t === "inverse") + return { + type: "inverse", + title: e.getLocaleModel().get(["legend", "selector", "inverse"]) + }; +}, Kit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.layoutMode = { + type: "box", + // legend.width/height are maxWidth/maxHeight actually, + // whereas real width/height is calculated by its content. + // (Setting {left: 10, right: 10} does not make sense). + // So consider the case: + // `setOption({legend: {left: 10});` + // then `setOption({legend: {right: 10});` + // The previous `left` should be cleared by setting `ignoreSize`. + ignoreSize: !0 + }, r; + } + return t.prototype.init = function(r, n, i) { + this.mergeDefaultAndTheme(r, i), r.selected = r.selected || {}, this._updateSelector(r); + }, t.prototype.mergeOption = function(r, n) { + e.prototype.mergeOption.call(this, r, n), this._updateSelector(r); + }, t.prototype._updateSelector = function(r) { + var n = r.selector, i = this.ecModel; + n === !0 && (n = r.selector = ["all", "inverse"]), qt(n) && Ee(n, function(a, o) { + wr(a) && (a = { + type: a + }), n[o] = Qn(a, Xit(i, a.type)); + }); + }, t.prototype.optionUpdated = function() { + this._updateData(this.ecModel); + var r = this._data; + if (r[0] && this.get("selectedMode") === "single") { + for (var n = !1, i = 0; i < r.length; i++) { + var a = r[i].get("name"); + if (this.isSelected(a)) { + this.select(a), n = !0; + break; + } + } + !n && this.select(r[0].get("name")); + } + }, t.prototype._updateData = function(r) { + var n = [], i = []; + r.eachRawSeries(function(u) { + var d = u.name; + i.push(d); + var f; + if (u.legendVisualProvider) { + var g = u.legendVisualProvider, v = g.getAllNames(); + r.isSeriesFiltered(u) || (i = i.concat(v)), v.length ? n = n.concat(v) : f = !0; + } else + f = !0; + f && y8(u) && n.push(u.name); + }), this._availableNames = i; + var a = this.get("data") || n, o = $r(), l = er(a, function(u) { + return (wr(u) || Qi(u)) && (u = { + name: u + }), o.get(u.name) ? null : (o.set(u.name, !0), new Wa(u, this, this.ecModel)); + }, this); + this._data = Ma(l, function(u) { + return !!u; + }); + }, t.prototype.getData = function() { + return this._data; + }, t.prototype.select = function(r) { + var n = this.option.selected, i = this.get("selectedMode"); + if (i === "single") { + var a = this._data; + Ee(a, function(o) { + n[o.get("name")] = !1; + }); + } + n[r] = !0; + }, t.prototype.unSelect = function(r) { + this.get("selectedMode") !== "single" && (this.option.selected[r] = !1); + }, t.prototype.toggleSelected = function(r) { + var n = this.option.selected; + n.hasOwnProperty(r) || (n[r] = !0), this[n[r] ? "unSelect" : "select"](r); + }, t.prototype.allSelect = function() { + var r = this._data, n = this.option.selected; + Ee(r, function(i) { + n[i.get("name", !0)] = !0; + }); + }, t.prototype.inverseSelect = function() { + var r = this._data, n = this.option.selected; + Ee(r, function(i) { + var a = i.get("name", !0); + n.hasOwnProperty(a) || (n[a] = !0), n[a] = !n[a]; + }); + }, t.prototype.isSelected = function(r) { + var n = this.option.selected; + return !(n.hasOwnProperty(r) && !n[r]) && di(this._availableNames, r) >= 0; + }, t.prototype.getOrient = function() { + return this.get("orient") === "vertical" ? { + index: 1, + name: "vertical" + } : { + index: 0, + name: "horizontal" + }; + }, t.type = "legend.plain", t.dependencies = ["series"], t.defaultOption = { + // zlevel: 0, + z: 4, + show: !0, + orient: "horizontal", + left: "center", + // right: 'center', + top: 0, + // bottom: null, + align: "auto", + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + borderRadius: 0, + borderWidth: 0, + padding: 5, + itemGap: 10, + itemWidth: 25, + itemHeight: 14, + symbolRotate: "inherit", + symbolKeepAspect: !0, + inactiveColor: "#ccc", + inactiveBorderColor: "#ccc", + inactiveBorderWidth: "auto", + itemStyle: { + color: "inherit", + opacity: "inherit", + borderColor: "inherit", + borderWidth: "auto", + borderCap: "inherit", + borderJoin: "inherit", + borderDashOffset: "inherit", + borderMiterLimit: "inherit" + }, + lineStyle: { + width: "auto", + color: "inherit", + inactiveColor: "#ccc", + inactiveWidth: 2, + opacity: "inherit", + type: "inherit", + cap: "inherit", + join: "inherit", + dashOffset: "inherit", + miterLimit: "inherit" + }, + textStyle: { + color: "#333" + }, + selectedMode: !0, + selector: !1, + selectorLabel: { + show: !0, + borderRadius: 10, + padding: [3, 5, 3, 5], + fontSize: 12, + fontFamily: "sans-serif", + color: "#666", + borderWidth: 1, + borderColor: "#666" + }, + emphasis: { + selectorLabel: { + show: !0, + color: "#eee", + backgroundColor: "#666" + } + }, + selectorPosition: "auto", + selectorItemGap: 7, + selectorButtonGap: 10, + tooltip: { + show: !1 + } + }, t; + }(Mi) +); +const rG = Kit; +var LT = Ln, nG = Ee, PP = _n, Zit = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.newlineDisabled = !1, r; + } + return t.prototype.init = function() { + this.group.add(this._contentGroup = new PP()), this.group.add(this._selectorGroup = new PP()), this._isFirstRender = !0; + }, t.prototype.getContentGroup = function() { + return this._contentGroup; + }, t.prototype.getSelectorGroup = function() { + return this._selectorGroup; + }, t.prototype.render = function(r, n, i) { + var a = this._isFirstRender; + if (this._isFirstRender = !1, this.resetInner(), !!r.get("show", !0)) { + var o = r.get("align"), l = r.get("orient"); + (!o || o === "auto") && (o = r.get("left") === "right" && l === "vertical" ? "right" : "left"); + var u = r.get("selector", !0), d = r.get("selectorPosition", !0); + u && (!d || d === "auto") && (d = l === "horizontal" ? "end" : "start"), this.renderInner(o, r, n, i, u, l, d); + var f = r.getBoxLayoutParams(), g = { + width: i.getWidth(), + height: i.getHeight() + }, v = r.get("padding"), y = js(f, g, v), C = this.layoutInner(r, o, y, a, u, d), A = js(Jr({ + width: C.width, + height: C.height + }, f), g, v); + this.group.x = A.x - C.x, this.group.y = A.y - C.y, this.group.markRedraw(), this.group.add(this._backgroundEl = Obe(C, r)); + } + }, t.prototype.resetInner = function() { + this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll(); + }, t.prototype.renderInner = function(r, n, i, a, o, l, u) { + var d = this.getContentGroup(), f = $r(), g = n.get("selectedMode"), v = []; + i.eachRawSeries(function(y) { + !y.get("legendHoverLink") && v.push(y.id); + }), nG(n.getData(), function(y, C) { + var A = y.get("name"); + if (!this.newlineDisabled && (A === "" || A === ` +`)) { + var S = new PP(); + S.newline = !0, d.add(S); + return; + } + var _ = i.getSeriesByName(A)[0]; + if (!f.get(A)) + if (_) { + var E = _.getData(), I = E.getVisual("legendLineStyle") || {}, w = E.getVisual("legendIcon"), x = E.getVisual("style"), b = this._createItem(_, A, C, y, n, r, I, x, w, g, a); + b.on("click", LT(Ece, A, null, a, v)).on("mouseover", LT(iG, _.name, null, a, v)).on("mouseout", LT(aG, _.name, null, a, v)), i.ssr && b.eachChild(function(R) { + var M = Tn(R); + M.seriesIndex = _.seriesIndex, M.dataIndex = C, M.ssrType = "legend"; + }), f.set(A, !0); + } else + i.eachRawSeries(function(R) { + if (!f.get(A) && R.legendVisualProvider) { + var M = R.legendVisualProvider; + if (!M.containName(A)) + return; + var O = M.indexOfName(A), P = M.getItemVisual(O, "style"), B = M.getItemVisual(O, "legendIcon"), H = Pu(P.fill); + H && H[3] === 0 && (H[3] = 0.2, P = $t($t({}, P), { + fill: Dp(H, "rgba") + })); + var Y = this._createItem(R, A, C, y, n, r, {}, P, B, g, a); + Y.on("click", LT(Ece, null, A, a, v)).on("mouseover", LT(iG, null, A, a, v)).on("mouseout", LT(aG, null, A, a, v)), i.ssr && Y.eachChild(function(X) { + var ee = Tn(X); + ee.seriesIndex = R.seriesIndex, ee.dataIndex = C, ee.ssrType = "legend"; + }), f.set(A, !0); + } + }, this); + }, this), o && this._createSelector(o, n, a, l, u); + }, t.prototype._createSelector = function(r, n, i, a, o) { + var l = this.getSelectorGroup(); + nG(r, function(d) { + var f = d.type, g = new Hi({ + style: { + x: 0, + y: 0, + align: "center", + verticalAlign: "middle" + }, + onclick: function() { + i.dispatchAction({ + type: f === "all" ? "legendAllSelect" : "legendInverseSelect" + }); + } + }); + l.add(g); + var v = n.getModel("selectorLabel"), y = n.getModel(["emphasis", "selectorLabel"]); + Ec(g, { + normal: v, + emphasis: y + }, { + defaultText: d.title + }), Lm(g); + }); + }, t.prototype._createItem = function(r, n, i, a, o, l, u, d, f, g, v) { + var y = r.visualDrawType, C = o.get("itemWidth"), A = o.get("itemHeight"), S = o.isSelected(n), _ = a.get("symbolRotate"), E = a.get("symbolKeepAspect"), I = a.get("icon"); + f = I || f || "roundRect"; + var w = qit(f, a, u, d, y, S, v), x = new PP(), b = a.getModel("textStyle"); + if (Kr(r.getLegendIcon) && (!I || I === "inherit")) + x.add(r.getLegendIcon({ + itemWidth: C, + itemHeight: A, + icon: f, + iconRotate: _, + itemStyle: w.itemStyle, + lineStyle: w.lineStyle, + symbolKeepAspect: E + })); + else { + var R = I === "inherit" && r.getData().getVisual("symbol") ? _ === "inherit" ? r.getData().getVisual("symbolRotate") : _ : 0; + x.add(Jit({ + itemWidth: C, + itemHeight: A, + icon: f, + iconRotate: R, + itemStyle: w.itemStyle, + lineStyle: w.lineStyle, + symbolKeepAspect: E + })); + } + var M = l === "left" ? C + 5 : -5, O = l, P = o.get("formatter"), B = n; + wr(P) && P ? B = P.replace("{name}", n != null ? n : "") : Kr(P) && (B = P(n)); + var H = S ? b.getTextColor() : a.get("inactiveColor"); + x.add(new Hi({ + style: uo(b, { + text: B, + x: M, + y: A / 2, + fill: H, + align: O, + verticalAlign: "middle" + }, { + inheritColor: H + }) + })); + var Y = new Xi({ + shape: x.getBoundingRect(), + style: { + // Cannot use 'invisible' because SVG SSR will miss the node + fill: "transparent" + } + }), X = a.getModel("tooltip"); + return X.get("show") && vI({ + el: Y, + componentModel: o, + itemName: n, + itemTooltipOption: X.option + }), x.add(Y), x.eachChild(function(ee) { + ee.silent = !0; + }), Y.silent = !g, this.getContentGroup().add(x), Lm(x), x.__legendDataIndex = i, x; + }, t.prototype.layoutInner = function(r, n, i, a, o, l) { + var u = this.getContentGroup(), d = this.getSelectorGroup(); + Kb(r.get("orient"), u, r.get("itemGap"), i.width, i.height); + var f = u.getBoundingRect(), g = [-f.x, -f.y]; + if (d.markRedraw(), u.markRedraw(), o) { + Kb( + // Buttons in selectorGroup always layout horizontally + "horizontal", + d, + r.get("selectorItemGap", !0) + ); + var v = d.getBoundingRect(), y = [-v.x, -v.y], C = r.get("selectorButtonGap", !0), A = r.getOrient().index, S = A === 0 ? "width" : "height", _ = A === 0 ? "height" : "width", E = A === 0 ? "y" : "x"; + l === "end" ? y[A] += f[S] + C : g[A] += v[S] + C, y[1 - A] += f[_] / 2 - v[_] / 2, d.x = y[0], d.y = y[1], u.x = g[0], u.y = g[1]; + var I = { + x: 0, + y: 0 + }; + return I[S] = f[S] + C + v[S], I[_] = Math.max(f[_], v[_]), I[E] = Math.min(0, v[E] + y[1 - A]), I; + } else + return u.x = g[0], u.y = g[1], this.group.getBoundingRect(); + }, t.prototype.remove = function() { + this.getContentGroup().removeAll(), this._isFirstRender = !0; + }, t.type = "legend.plain", t; + }(Co) +); +function qit(e, t, r, n, i, a, o) { + function l(S, _) { + S.lineWidth === "auto" && (S.lineWidth = _.lineWidth > 0 ? 2 : 0), nG(S, function(E, I) { + S[I] === "inherit" && (S[I] = _[I]); + }); + } + var u = t.getModel("itemStyle"), d = u.getItemStyle(), f = e.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke", g = u.getShallow("decal"); + d.decal = !g || g === "inherit" ? n.decal : Vw(g, o), d.fill === "inherit" && (d.fill = n[i]), d.stroke === "inherit" && (d.stroke = n[f]), d.opacity === "inherit" && (d.opacity = (i === "fill" ? n : r).opacity), l(d, n); + var v = t.getModel("lineStyle"), y = v.getLineStyle(); + if (l(y, r), d.fill === "auto" && (d.fill = n.fill), d.stroke === "auto" && (d.stroke = n.fill), y.stroke === "auto" && (y.stroke = n.fill), !a) { + var C = t.get("inactiveBorderWidth"), A = d[f]; + d.lineWidth = C === "auto" ? n.lineWidth > 0 && A ? 2 : 0 : d.lineWidth, d.fill = t.get("inactiveColor"), d.stroke = t.get("inactiveBorderColor"), y.stroke = v.get("inactiveColor"), y.lineWidth = v.get("inactiveWidth"); + } + return { + itemStyle: d, + lineStyle: y + }; +} +function Jit(e) { + var t = e.icon || "roundRect", r = $s(t, 0, 0, e.itemWidth, e.itemHeight, e.itemStyle.fill, e.symbolKeepAspect); + return r.setStyle(e.itemStyle), r.rotation = (e.iconRotate || 0) * Math.PI / 180, r.setOrigin([e.itemWidth / 2, e.itemHeight / 2]), t.indexOf("empty") > -1 && (r.style.stroke = r.style.fill, r.style.fill = "#fff", r.style.lineWidth = 2), r; +} +function Ece(e, t, r, n) { + aG(e, t, r, n), r.dispatchAction({ + type: "legendToggleSelect", + name: e != null ? e : t + }), iG(e, t, r, n); +} +function Hbe(e) { + for (var t = e.getZr().storage.getDisplayList(), r, n = 0, i = t.length; n < i && !(r = t[n].states.emphasis); ) + n++; + return r && r.hoverLayer; +} +function iG(e, t, r, n) { + Hbe(r) || r.dispatchAction({ + type: "highlight", + seriesName: e, + name: t, + excludeSeriesId: n + }); +} +function aG(e, t, r, n) { + Hbe(r) || r.dispatchAction({ + type: "downplay", + seriesName: e, + name: t, + excludeSeriesId: n + }); +} +const Wbe = Zit; +function Qit(e) { + var t = e.findComponents({ + mainType: "legend" + }); + t && t.length && e.filterSeries(function(r) { + for (var n = 0; n < t.length; n++) + if (!t[n].isSelected(r.name)) + return !1; + return !0; + }); +} +function XA(e, t, r) { + var n = {}, i = e === "toggleSelected", a; + return r.eachComponent("legend", function(o) { + i && a != null ? o[a ? "select" : "unSelect"](t.name) : e === "allSelect" || e === "inverseSelect" ? o[e]() : (o[e](t.name), a = o.isSelected(t.name)); + var l = o.getData(); + Ee(l, function(u) { + var d = u.get("name"); + if (!(d === ` +` || d === "")) { + var f = o.isSelected(d); + n.hasOwnProperty(d) ? n[d] = n[d] && f : n[d] = f; + } + }); + }), e === "allSelect" || e === "inverseSelect" ? { + selected: n + } : { + name: t.name, + selected: n + }; +} +function eat(e) { + e.registerAction("legendToggleSelect", "legendselectchanged", Ln(XA, "toggleSelected")), e.registerAction("legendAllSelect", "legendselectall", Ln(XA, "allSelect")), e.registerAction("legendInverseSelect", "legendinverseselect", Ln(XA, "inverseSelect")), e.registerAction("legendSelect", "legendselected", Ln(XA, "select")), e.registerAction("legendUnSelect", "legendunselected", Ln(XA, "unSelect")); +} +function Gbe(e) { + e.registerComponentModel(rG), e.registerComponentView(Wbe), e.registerProcessor(e.PRIORITY.PROCESSOR.SERIES_FILTER, Qit), e.registerSubTypeDefaulter("legend", function() { + return "plain"; + }), eat(e); +} +var tat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.setScrollDataIndex = function(r) { + this.option.scrollDataIndex = r; + }, t.prototype.init = function(r, n, i) { + var a = _I(r); + e.prototype.init.call(this, r, n, i), Cce(this, r, a); + }, t.prototype.mergeOption = function(r, n) { + e.prototype.mergeOption.call(this, r, n), Cce(this, this.option, r); + }, t.type = "legend.scroll", t.defaultOption = O0(rG.defaultOption, { + scrollDataIndex: 0, + pageButtonItemGap: 5, + pageButtonGap: null, + pageButtonPosition: "end", + pageFormatter: "{current}/{total}", + pageIcons: { + horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], + vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] + }, + pageIconColor: "#2f4554", + pageIconInactiveColor: "#aaa", + pageIconSize: 15, + pageTextStyle: { + color: "#333" + }, + animationDurationUpdate: 800 + }), t; + }(rG) +); +function Cce(e, t, r) { + var n = e.getOrient(), i = [1, 1]; + i[n.index] = 0, m0(t, r, { + type: "box", + ignoreSize: !!i + }); +} +const rat = tat; +var Tce = _n, P3 = ["width", "height"], N3 = ["x", "y"], nat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.newlineDisabled = !0, r._currentIndex = 0, r; + } + return t.prototype.init = function() { + e.prototype.init.call(this), this.group.add(this._containerGroup = new Tce()), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new Tce()); + }, t.prototype.resetInner = function() { + e.prototype.resetInner.call(this), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null; + }, t.prototype.renderInner = function(r, n, i, a, o, l, u) { + var d = this; + e.prototype.renderInner.call(this, r, n, i, a, o, l, u); + var f = this._controllerGroup, g = n.get("pageIconSize", !0), v = qt(g) ? g : [g, g]; + C("pagePrev", 0); + var y = n.getModel("pageTextStyle"); + f.add(new Hi({ + name: "pageText", + style: { + // Placeholder to calculate a proper layout. + text: "xx/xx", + fill: y.getTextColor(), + font: y.getFont(), + verticalAlign: "middle", + align: "center" + }, + silent: !0 + })), C("pageNext", 1); + function C(A, S) { + var _ = A + "DataIndex", E = gI(n.get("pageIcons", !0)[n.getOrient().name][S], { + // Buttons will be created in each render, so we do not need + // to worry about avoiding using legendModel kept in scope. + onclick: Ar(d._pageGo, d, _, n, a) + }, { + x: -v[0] / 2, + y: -v[1] / 2, + width: v[0], + height: v[1] + }); + E.name = A, f.add(E); + } + }, t.prototype.layoutInner = function(r, n, i, a, o, l) { + var u = this.getSelectorGroup(), d = r.getOrient().index, f = P3[d], g = N3[d], v = P3[1 - d], y = N3[1 - d]; + o && Kb( + // Buttons in selectorGroup always layout horizontally + "horizontal", + u, + r.get("selectorItemGap", !0) + ); + var C = r.get("selectorButtonGap", !0), A = u.getBoundingRect(), S = [-A.x, -A.y], _ = cn(i); + o && (_[f] = i[f] - A[f] - C); + var E = this._layoutContentAndController(r, a, _, d, f, v, y, g); + if (o) { + if (l === "end") + S[d] += E[f] + C; + else { + var I = A[f] + C; + S[d] -= I, E[g] -= I; + } + E[f] += A[f] + C, S[1 - d] += E[y] + E[v] / 2 - A[v] / 2, E[v] = Math.max(E[v], A[v]), E[y] = Math.min(E[y], A[y] + S[1 - d]), u.x = S[0], u.y = S[1], u.markRedraw(); + } + return E; + }, t.prototype._layoutContentAndController = function(r, n, i, a, o, l, u, d) { + var f = this.getContentGroup(), g = this._containerGroup, v = this._controllerGroup; + Kb(r.get("orient"), f, r.get("itemGap"), a ? i.width : null, a ? null : i.height), Kb( + // Buttons in controller are layout always horizontally. + "horizontal", + v, + r.get("pageButtonItemGap", !0) + ); + var y = f.getBoundingRect(), C = v.getBoundingRect(), A = this._showController = y[o] > i[o], S = [-y.x, -y.y]; + n || (S[a] = f[d]); + var _ = [0, 0], E = [-C.x, -C.y], I = Fn(r.get("pageButtonGap", !0), r.get("itemGap", !0)); + if (A) { + var w = r.get("pageButtonPosition", !0); + w === "end" ? E[a] += i[o] - C[o] : _[a] += C[o] + I; + } + E[1 - a] += y[l] / 2 - C[l] / 2, f.setPosition(S), g.setPosition(_), v.setPosition(E); + var x = { + x: 0, + y: 0 + }; + if (x[o] = A ? i[o] : y[o], x[l] = Math.max(y[l], C[l]), x[u] = Math.min(0, C[u] + E[1 - a]), g.__rectSize = i[o], A) { + var b = { + x: 0, + y: 0 + }; + b[o] = Math.max(i[o] - C[o] - I, 0), b[l] = x[l], g.setClipPath(new Xi({ + shape: b + })), g.__rectSize = b[o]; + } else + v.eachChild(function(M) { + M.attr({ + invisible: !0, + silent: !0 + }); + }); + var R = this._getPageInfo(r); + return R.pageIndex != null && ia( + f, + { + x: R.contentPosition[0], + y: R.contentPosition[1] + }, + // When switch from "show controller" to "not show controller", view should be + // updated immediately without animation, otherwise causes weird effect. + A ? r : null + ), this._updatePageInfoView(r, R), x; + }, t.prototype._pageGo = function(r, n, i) { + var a = this._getPageInfo(n)[r]; + a != null && i.dispatchAction({ + type: "legendScroll", + scrollDataIndex: a, + legendId: n.id + }); + }, t.prototype._updatePageInfoView = function(r, n) { + var i = this._controllerGroup; + Ee(["pagePrev", "pageNext"], function(f) { + var g = f + "DataIndex", v = n[g] != null, y = i.childOfName(f); + y && (y.setStyle("fill", v ? r.get("pageIconColor", !0) : r.get("pageIconInactiveColor", !0)), y.cursor = v ? "pointer" : "default"); + }); + var a = i.childOfName("pageText"), o = r.get("pageFormatter"), l = n.pageIndex, u = l != null ? l + 1 : 0, d = n.pageCount; + a && o && a.setStyle("text", wr(o) ? o.replace("{current}", u == null ? "" : u + "").replace("{total}", d == null ? "" : d + "") : o({ + current: u, + total: d + })); + }, t.prototype._getPageInfo = function(r) { + var n = r.get("scrollDataIndex", !0), i = this.getContentGroup(), a = this._containerGroup.__rectSize, o = r.getOrient().index, l = P3[o], u = N3[o], d = this._findTargetItemIndex(n), f = i.children(), g = f[d], v = f.length, y = v ? 1 : 0, C = { + contentPosition: [i.x, i.y], + pageCount: y, + pageIndex: y - 1, + pagePrevDataIndex: null, + pageNextDataIndex: null + }; + if (!g) + return C; + var A = w(g); + C.contentPosition[o] = -A.s; + for (var S = d + 1, _ = A, E = A, I = null; S <= v; ++S) + I = w(f[S]), // Half of the last item is out of the window. + (!I && E.e > _.s + a || I && !x(I, _.s)) && (E.i > _.i ? _ = E : _ = I, _ && (C.pageNextDataIndex == null && (C.pageNextDataIndex = _.i), ++C.pageCount)), E = I; + for (var S = d - 1, _ = A, E = A, I = null; S >= -1; --S) + I = w(f[S]), // If the the end item does not intersect with the window started + // from the current item, a page can be settled. + (!I || !x(E, I.s)) && _.i < E.i && (E = _, C.pagePrevDataIndex == null && (C.pagePrevDataIndex = _.i), ++C.pageCount, ++C.pageIndex), _ = I; + return C; + function w(b) { + if (b) { + var R = b.getBoundingRect(), M = R[u] + b[u]; + return { + s: M, + e: M + R[l], + i: b.__legendDataIndex + }; + } + } + function x(b, R) { + return b.e >= R && b.s <= R + a; + } + }, t.prototype._findTargetItemIndex = function(r) { + if (!this._showController) + return 0; + var n, i = this.getContentGroup(), a; + return i.eachChild(function(o, l) { + var u = o.__legendDataIndex; + a == null && u != null && (a = l), u === r && (n = l); + }), n != null ? n : a; + }, t.type = "legend.scroll", t; + }(Wbe) +); +const iat = nat; +function aat(e) { + e.registerAction("legendScroll", "legendscroll", function(t, r) { + var n = t.scrollDataIndex; + n != null && r.eachComponent({ + mainType: "legend", + subType: "scroll", + query: t + }, function(i) { + i.setScrollDataIndex(n); + }); + }); +} +function oat(e) { + ii(Gbe), e.registerComponentModel(rat), e.registerComponentView(iat), aat(e); +} +function sat(e) { + ii(Gbe), ii(oat); +} +var lat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "dataZoom.inside", t.defaultOption = O0(PR.defaultOption, { + disabled: !1, + zoomLock: !1, + zoomOnMouseWheel: !0, + moveOnMouseMove: !0, + moveOnMouseWheel: !1, + preventDefaultMouseMove: !0 + }), t; + }(PR) +); +const cat = lat; +var wY = ea(); +function uat(e, t, r) { + wY(e).coordSysRecordMap.each(function(n) { + var i = n.dataZoomInfoMap.get(t.uid); + i && (i.getRange = r); + }); +} +function hat(e, t) { + for (var r = wY(e).coordSysRecordMap, n = r.keys(), i = 0; i < n.length; i++) { + var a = n[i], o = r.get(a), l = o.dataZoomInfoMap; + if (l) { + var u = t.uid, d = l.get(u); + d && (l.removeKey(u), l.keys().length || Ybe(r, o)); + } + } +} +function Ybe(e, t) { + if (t) { + e.removeKey(t.model.uid); + var r = t.controller; + r && r.dispose(); + } +} +function dat(e, t) { + var r = { + model: t, + containsPoint: Ln(pat, t), + dispatchAction: Ln(fat, e), + dataZoomInfoMap: null, + controller: null + }, n = r.controller = new PD(e.getZr()); + return Ee(["pan", "zoom", "scrollMove"], function(i) { + n.on(i, function(a) { + var o = []; + r.dataZoomInfoMap.each(function(l) { + if (a.isAvailableBehavior(l.model.option)) { + var u = (l.getRange || {})[i], d = u && u(l.dzReferCoordSysInfo, r.model.mainType, r.controller, a); + !l.model.get("disabled", !0) && d && o.push({ + dataZoomId: l.model.id, + start: d[0], + end: d[1] + }); + } + }), o.length && r.dispatchAction(o); + }); + }), r; +} +function fat(e, t) { + e.isDisposed() || e.dispatchAction({ + type: "dataZoom", + animation: { + easing: "cubicOut", + duration: 100 + }, + batch: t + }); +} +function pat(e, t, r, n) { + return e.coordinateSystem.containPoint([r, n]); +} +function gat(e) { + var t, r = "type_", n = { + type_true: 2, + type_move: 1, + type_false: 0, + type_undefined: -1 + }, i = !0; + return e.each(function(a) { + var o = a.model, l = o.get("disabled", !0) ? !1 : o.get("zoomLock", !0) ? "move" : !0; + n[r + l] > n[r + t] && (t = l), i = i && o.get("preventDefaultMouseMove", !0); + }), { + controlType: t, + opt: { + // RoamController will enable all of these functionalities, + // and the final behavior is determined by its event listener + // provided by each inside zoom. + zoomOnMouseWheel: !0, + moveOnMouseMove: !0, + moveOnMouseWheel: !0, + preventDefaultMouseMove: !!i + } + }; +} +function vat(e) { + e.registerProcessor(e.PRIORITY.PROCESSOR.FILTER, function(t, r) { + var n = wY(r), i = n.coordSysRecordMap || (n.coordSysRecordMap = $r()); + i.each(function(a) { + a.dataZoomInfoMap = null; + }), t.eachComponent({ + mainType: "dataZoom", + subType: "inside" + }, function(a) { + var o = Abe(a); + Ee(o.infoList, function(l) { + var u = l.model.uid, d = i.get(u) || i.set(u, dat(r, l.model)), f = d.dataZoomInfoMap || (d.dataZoomInfoMap = $r()); + f.set(a.uid, { + dzReferCoordSysInfo: l, + model: a, + getRange: null + }); + }); + }), i.each(function(a) { + var o = a.controller, l, u = a.dataZoomInfoMap; + if (u) { + var d = u.keys()[0]; + d != null && (l = u.get(d)); + } + if (!l) { + Ybe(i, a); + return; + } + var f = gat(u); + o.enable(f.controlType, f.opt), o.setPointerChecker(a.containsPoint), TI(a, "dispatchAction", l.model.get("throttle", !0), "fixRate"); + }); + }); +} +var mat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "dataZoom.inside", r; + } + return t.prototype.render = function(r, n, i) { + if (e.prototype.render.apply(this, arguments), r.noTarget()) { + this._clear(); + return; + } + this.range = r.getPercentRange(), uat(i, r, { + pan: Ar(L3.pan, this), + zoom: Ar(L3.zoom, this), + scrollMove: Ar(L3.scrollMove, this) + }); + }, t.prototype.dispose = function() { + this._clear(), e.prototype.dispose.apply(this, arguments); + }, t.prototype._clear = function() { + hat(this.api, this.dataZoomModel), this.range = null; + }, t.type = "dataZoom.inside", t; + }(vY) +), L3 = { + zoom: function(e, t, r, n) { + var i = this.range, a = i.slice(), o = e.axisModels[0]; + if (o) { + var l = F3[t](null, [n.originX, n.originY], o, r, e), u = (l.signal > 0 ? l.pixelStart + l.pixelLength - l.pixel : l.pixel - l.pixelStart) / l.pixelLength * (a[1] - a[0]) + a[0], d = Math.max(1 / n.scale, 0); + a[0] = (a[0] - u) * d + u, a[1] = (a[1] - u) * d + u; + var f = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); + if (LE(0, a, [0, 100], 0, f.minSpan, f.maxSpan), this.range = a, i[0] !== a[0] || i[1] !== a[1]) + return a; + } + }, + pan: wce(function(e, t, r, n, i, a) { + var o = F3[n]([a.oldX, a.oldY], [a.newX, a.newY], t, i, r); + return o.signal * (e[1] - e[0]) * o.pixel / o.pixelLength; + }), + scrollMove: wce(function(e, t, r, n, i, a) { + var o = F3[n]([0, 0], [a.scrollDelta, a.scrollDelta], t, i, r); + return o.signal * (e[1] - e[0]) * a.scrollDelta; + }) +}; +function wce(e) { + return function(t, r, n, i) { + var a = this.range, o = a.slice(), l = t.axisModels[0]; + if (l) { + var u = e(o, l, t, r, n, i); + if (LE(u, o, [0, 100], "all"), this.range = o, a[0] !== o[0] || a[1] !== o[1]) + return o; + } + }; +} +var F3 = { + grid: function(e, t, r, n, i) { + var a = r.axis, o = {}, l = i.model.coordinateSystem.getRect(); + return e = e || [0, 0], a.dim === "x" ? (o.pixel = t[0] - e[0], o.pixelLength = l.width, o.pixelStart = l.x, o.signal = a.inverse ? 1 : -1) : (o.pixel = t[1] - e[1], o.pixelLength = l.height, o.pixelStart = l.y, o.signal = a.inverse ? -1 : 1), o; + }, + polar: function(e, t, r, n, i) { + var a = r.axis, o = {}, l = i.model.coordinateSystem, u = l.getRadiusAxis().getExtent(), d = l.getAngleAxis().getExtent(); + return e = e ? l.pointToCoord(e) : [0, 0], t = l.pointToCoord(t), r.mainType === "radiusAxis" ? (o.pixel = t[0] - e[0], o.pixelLength = u[1] - u[0], o.pixelStart = u[0], o.signal = a.inverse ? 1 : -1) : (o.pixel = t[1] - e[1], o.pixelLength = d[1] - d[0], o.pixelStart = d[0], o.signal = a.inverse ? -1 : 1), o; + }, + singleAxis: function(e, t, r, n, i) { + var a = r.axis, o = i.model.coordinateSystem.getRect(), l = {}; + return e = e || [0, 0], a.orient === "horizontal" ? (l.pixel = t[0] - e[0], l.pixelLength = o.width, l.pixelStart = o.x, l.signal = a.inverse ? 1 : -1) : (l.pixel = t[1] - e[1], l.pixelLength = o.height, l.pixelStart = o.y, l.signal = a.inverse ? -1 : 1), l; + } +}; +const yat = mat; +function Xbe(e) { + mY(e), e.registerComponentModel(cat), e.registerComponentView(yat), vat(e); +} +var _at = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.type = "dataZoom.slider", t.layoutMode = "box", t.defaultOption = O0(PR.defaultOption, { + show: !0, + // deault value can only be drived in view stage. + right: "ph", + top: "ph", + width: "ph", + height: "ph", + left: null, + bottom: null, + borderColor: "#d2dbee", + borderRadius: 3, + backgroundColor: "rgba(47,69,84,0)", + // dataBackgroundColor: '#ddd', + dataBackground: { + lineStyle: { + color: "#d2dbee", + width: 0.5 + }, + areaStyle: { + color: "#d2dbee", + opacity: 0.2 + } + }, + selectedDataBackground: { + lineStyle: { + color: "#8fb0f7", + width: 0.5 + }, + areaStyle: { + color: "#8fb0f7", + opacity: 0.2 + } + }, + // Color of selected window. + fillerColor: "rgba(135,175,274,0.2)", + handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z", + // Percent of the slider height + handleSize: "100%", + handleStyle: { + color: "#fff", + borderColor: "#ACB8D1" + }, + moveHandleSize: 7, + moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z", + moveHandleStyle: { + color: "#D2DBEE", + opacity: 0.7 + }, + showDetail: !0, + showDataShadow: "auto", + realtime: !0, + zoomLock: !1, + textStyle: { + color: "#6E7079" + }, + brushSelect: !0, + brushStyle: { + color: "rgba(135,175,274,0.15)" + }, + emphasis: { + handleStyle: { + borderColor: "#8FB0F7" + }, + moveHandleStyle: { + color: "#8FB0F7" + } + } + }), t; + }(PR) +); +const Sat = _at; +var KA = Xi, Ice = 7, bat = 1, B3 = 30, Eat = 7, ZA = "horizontal", xce = "vertical", Cat = 5, Tat = ["line", "bar", "candlestick", "scatter"], wat = { + easing: "cubicOut", + duration: 100, + delay: 0 +}, Iat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._displayables = {}, r; + } + return t.prototype.init = function(r, n) { + this.api = n, this._onBrush = Ar(this._onBrush, this), this._onBrushEnd = Ar(this._onBrushEnd, this); + }, t.prototype.render = function(r, n, i, a) { + if (e.prototype.render.apply(this, arguments), TI(this, "_dispatchZoomAction", r.get("throttle"), "fixRate"), this._orient = r.getOrient(), r.get("show") === !1) { + this.group.removeAll(); + return; + } + if (r.noTarget()) { + this._clear(), this.group.removeAll(); + return; + } + (!a || a.type !== "dataZoom" || a.from !== this.uid) && this._buildView(), this._updateView(); + }, t.prototype.dispose = function() { + this._clear(), e.prototype.dispose.apply(this, arguments); + }, t.prototype._clear = function() { + bR(this, "_dispatchZoomAction"); + var r = this.api.getZr(); + r.off("mousemove", this._onBrush), r.off("mouseup", this._onBrushEnd); + }, t.prototype._buildView = function() { + var r = this.group; + r.removeAll(), this._brushing = !1, this._displayables.brushRect = null, this._resetLocation(), this._resetInterval(); + var n = this._displayables.sliderGroup = new _n(); + this._renderBackground(), this._renderHandle(), this._renderDataShadow(), r.add(n), this._positionGroup(); + }, t.prototype._resetLocation = function() { + var r = this.dataZoomModel, n = this.api, i = r.get("brushSelect"), a = i ? Eat : 0, o = this._findCoordRect(), l = { + width: n.getWidth(), + height: n.getHeight() + }, u = this._orient === ZA ? { + // Why using 'right', because right should be used in vertical, + // and it is better to be consistent for dealing with position param merge. + right: l.width - o.x - o.width, + top: l.height - B3 - Ice - a, + width: o.width, + height: B3 + } : { + right: Ice, + top: o.y, + width: B3, + height: o.height + }, d = _I(r.option); + Ee(["right", "top", "width", "height"], function(g) { + d[g] === "ph" && (d[g] = u[g]); + }); + var f = js(d, l); + this._location = { + x: f.x, + y: f.y + }, this._size = [f.width, f.height], this._orient === xce && this._size.reverse(); + }, t.prototype._positionGroup = function() { + var r = this.group, n = this._location, i = this._orient, a = this.dataZoomModel.getFirstTargetAxisModel(), o = a && a.get("inverse"), l = this._displayables.sliderGroup, u = (this._dataShadowInfo || {}).otherAxisInverse; + l.attr(i === ZA && !o ? { + scaleY: u ? 1 : -1, + scaleX: 1 + } : i === ZA && o ? { + scaleY: u ? 1 : -1, + scaleX: -1 + } : i === xce && !o ? { + scaleY: u ? -1 : 1, + scaleX: 1, + rotation: Math.PI / 2 + } : { + scaleY: u ? -1 : 1, + scaleX: -1, + rotation: Math.PI / 2 + }); + var d = r.getBoundingRect([l]); + r.x = n.x - d.x, r.y = n.y - d.y, r.markRedraw(); + }, t.prototype._getViewExtent = function() { + return [0, this._size[0]]; + }, t.prototype._renderBackground = function() { + var r = this.dataZoomModel, n = this._size, i = this._displayables.sliderGroup, a = r.get("brushSelect"); + i.add(new KA({ + silent: !0, + shape: { + x: 0, + y: 0, + width: n[0], + height: n[1] + }, + style: { + fill: r.get("backgroundColor") + }, + z2: -40 + })); + var o = new KA({ + shape: { + x: 0, + y: 0, + width: n[0], + height: n[1] + }, + style: { + fill: "transparent" + }, + z2: 0, + onclick: Ar(this._onClickPanel, this) + }), l = this.api.getZr(); + a ? (o.on("mousedown", this._onBrushStart, this), o.cursor = "crosshair", l.on("mousemove", this._onBrush), l.on("mouseup", this._onBrushEnd)) : (l.off("mousemove", this._onBrush), l.off("mouseup", this._onBrushEnd)), i.add(o); + }, t.prototype._renderDataShadow = function() { + var r = this._dataShadowInfo = this._prepareDataShadowInfo(); + if (this._displayables.dataShadowSegs = [], !r) + return; + var n = this._size, i = this._shadowSize || [], a = r.series, o = a.getRawData(), l = a.getShadowDim && a.getShadowDim(), u = l && o.getDimensionInfo(l) ? a.getShadowDim() : r.otherDim; + if (u == null) + return; + var d = this._shadowPolygonPts, f = this._shadowPolylinePts; + if (o !== this._shadowData || u !== this._shadowDim || n[0] !== i[0] || n[1] !== i[1]) { + var g = o.getDataExtent(u), v = (g[1] - g[0]) * 0.3; + g = [g[0] - v, g[1] + v]; + var y = [0, n[1]], C = [0, n[0]], A = [[n[0], 0], [0, 0]], S = [], _ = C[1] / (o.count() - 1), E = 0, I = Math.round(o.count() / n[0]), w; + o.each([u], function(O, P) { + if (I > 0 && P % I) { + E += _; + return; + } + var B = O == null || isNaN(O) || O === "", H = B ? 0 : Ea(O, g, y, !0); + B && !w && P ? (A.push([A[A.length - 1][0], 0]), S.push([S[S.length - 1][0], 0])) : !B && w && (A.push([E, 0]), S.push([E, 0])), A.push([E, H]), S.push([E, H]), E += _, w = B; + }), d = this._shadowPolygonPts = A, f = this._shadowPolylinePts = S; + } + this._shadowData = o, this._shadowDim = u, this._shadowSize = [n[0], n[1]]; + var x = this.dataZoomModel; + function b(O) { + var P = x.getModel(O ? "selectedDataBackground" : "dataBackground"), B = new _n(), H = new Bu({ + shape: { + points: d + }, + segmentIgnoreThreshold: 1, + style: P.getModel("areaStyle").getAreaStyle(), + silent: !0, + z2: -20 + }), Y = new $u({ + shape: { + points: f + }, + segmentIgnoreThreshold: 1, + style: P.getModel("lineStyle").getLineStyle(), + silent: !0, + z2: -19 + }); + return B.add(H), B.add(Y), B; + } + for (var R = 0; R < 3; R++) { + var M = b(R === 1); + this._displayables.sliderGroup.add(M), this._displayables.dataShadowSegs.push(M); + } + }, t.prototype._prepareDataShadowInfo = function() { + var r = this.dataZoomModel, n = r.get("showDataShadow"); + if (n !== !1) { + var i, a = this.ecModel; + return r.eachTargetAxis(function(o, l) { + var u = r.getAxisProxy(o, l).getTargetSeriesModels(); + Ee(u, function(d) { + if (!i && !(n !== !0 && di(Tat, d.get("type")) < 0)) { + var f = a.getComponent(Q_(o), l).axis, g = xat(o), v, y = d.coordinateSystem; + g != null && y.getOtherAxis && (v = y.getOtherAxis(f).inverse), g = d.getData().mapDimension(g), i = { + thisAxis: f, + series: d, + thisDim: o, + otherDim: g, + otherAxisInverse: v + }; + } + }, this); + }, this), i; + } + }, t.prototype._renderHandle = function() { + var r = this.group, n = this._displayables, i = n.handles = [null, null], a = n.handleLabels = [null, null], o = this._displayables.sliderGroup, l = this._size, u = this.dataZoomModel, d = this.api, f = u.get("borderRadius") || 0, g = u.get("brushSelect"), v = n.filler = new KA({ + silent: g, + style: { + fill: u.get("fillerColor") + }, + textConfig: { + position: "inside" + } + }); + o.add(v), o.add(new KA({ + silent: !0, + subPixelOptimize: !0, + shape: { + x: 0, + y: 0, + width: l[0], + height: l[1], + r: f + }, + style: { + // deprecated option + stroke: u.get("dataBackgroundColor") || u.get("borderColor"), + lineWidth: bat, + fill: "rgba(0,0,0,0)" + } + })), Ee([0, 1], function(I) { + var w = u.get("handleIcon"); + !ML[w] && w.indexOf("path://") < 0 && w.indexOf("image://") < 0 && (w = "path://" + w); + var x = $s(w, -1, 0, 2, 2, null, !0); + x.attr({ + cursor: Ace(this._orient), + draggable: !0, + drift: Ar(this._onDragMove, this, I), + ondragend: Ar(this._onDragEnd, this), + onmouseover: Ar(this._showDataInfo, this, !0), + onmouseout: Ar(this._showDataInfo, this, !1), + z2: 5 + }); + var b = x.getBoundingRect(), R = u.get("handleSize"); + this._handleHeight = yr(R, this._size[1]), this._handleWidth = b.width / b.height * this._handleHeight, x.setStyle(u.getModel("handleStyle").getItemStyle()), x.style.strokeNoScale = !0, x.rectHover = !0, x.ensureState("emphasis").style = u.getModel(["emphasis", "handleStyle"]).getItemStyle(), Lm(x); + var M = u.get("handleColor"); + M != null && (x.style.fill = M), o.add(i[I] = x); + var O = u.getModel("textStyle"); + r.add(a[I] = new Hi({ + silent: !0, + invisible: !0, + style: uo(O, { + x: 0, + y: 0, + text: "", + verticalAlign: "middle", + align: "center", + fill: O.getTextColor(), + font: O.getFont() + }), + z2: 10 + })); + }, this); + var y = v; + if (g) { + var C = yr(u.get("moveHandleSize"), l[1]), A = n.moveHandle = new Xi({ + style: u.getModel("moveHandleStyle").getItemStyle(), + silent: !0, + shape: { + r: [0, 0, 2, 2], + y: l[1] - 0.5, + height: C + } + }), S = C * 0.8, _ = n.moveHandleIcon = $s(u.get("moveHandleIcon"), -S / 2, -S / 2, S, S, "#fff", !0); + _.silent = !0, _.y = l[1] + C / 2 - 0.5, A.ensureState("emphasis").style = u.getModel(["emphasis", "moveHandleStyle"]).getItemStyle(); + var E = Math.min(l[1] / 2, Math.max(C, 10)); + y = n.moveZone = new Xi({ + invisible: !0, + shape: { + y: l[1] - E, + height: C + E + } + }), y.on("mouseover", function() { + d.enterEmphasis(A); + }).on("mouseout", function() { + d.leaveEmphasis(A); + }), o.add(A), o.add(_), o.add(y); + } + y.attr({ + draggable: !0, + cursor: Ace(this._orient), + drift: Ar(this._onDragMove, this, "all"), + ondragstart: Ar(this._showDataInfo, this, !0), + ondragend: Ar(this._onDragEnd, this), + onmouseover: Ar(this._showDataInfo, this, !0), + onmouseout: Ar(this._showDataInfo, this, !1) + }); + }, t.prototype._resetInterval = function() { + var r = this._range = this.dataZoomModel.getPercentRange(), n = this._getViewExtent(); + this._handleEnds = [Ea(r[0], [0, 100], n, !0), Ea(r[1], [0, 100], n, !0)]; + }, t.prototype._updateInterval = function(r, n) { + var i = this.dataZoomModel, a = this._handleEnds, o = this._getViewExtent(), l = i.findRepresentativeAxisProxy().getMinMaxSpan(), u = [0, 100]; + LE(n, a, o, i.get("zoomLock") ? "all" : r, l.minSpan != null ? Ea(l.minSpan, u, o, !0) : null, l.maxSpan != null ? Ea(l.maxSpan, u, o, !0) : null); + var d = this._range, f = this._range = ld([Ea(a[0], o, u, !0), Ea(a[1], o, u, !0)]); + return !d || d[0] !== f[0] || d[1] !== f[1]; + }, t.prototype._updateView = function(r) { + var n = this._displayables, i = this._handleEnds, a = ld(i.slice()), o = this._size; + Ee([0, 1], function(y) { + var C = n.handles[y], A = this._handleHeight; + C.attr({ + scaleX: A / 2, + scaleY: A / 2, + // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window. + // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default. + x: i[y] + (y ? -1 : 1), + y: o[1] / 2 - A / 2 + }); + }, this), n.filler.setShape({ + x: a[0], + y: 0, + width: a[1] - a[0], + height: o[1] + }); + var l = { + x: a[0], + width: a[1] - a[0] + }; + n.moveHandle && (n.moveHandle.setShape(l), n.moveZone.setShape(l), n.moveZone.getBoundingRect(), n.moveHandleIcon && n.moveHandleIcon.attr("x", l.x + l.width / 2)); + for (var u = n.dataShadowSegs, d = [0, a[0], a[1], o[0]], f = 0; f < u.length; f++) { + var g = u[f], v = g.getClipPath(); + v || (v = new Xi(), g.setClipPath(v)), v.setShape({ + x: d[f], + y: 0, + width: d[f + 1] - d[f], + height: o[1] + }); + } + this._updateDataInfo(r); + }, t.prototype._updateDataInfo = function(r) { + var n = this.dataZoomModel, i = this._displayables, a = i.handleLabels, o = this._orient, l = ["", ""]; + if (n.get("showDetail")) { + var u = n.findRepresentativeAxisProxy(); + if (u) { + var d = u.getAxisModel().axis, f = this._range, g = r ? u.calculateDataWindow({ + start: f[0], + end: f[1] + }).valueWindow : u.getDataValueWindow(); + l = [this._formatLabel(g[0], d), this._formatLabel(g[1], d)]; + } + } + var v = ld(this._handleEnds.slice()); + y.call(this, 0), y.call(this, 1); + function y(C) { + var A = l0(i.handles[C].parent, this.group), S = OF(C === 0 ? "right" : "left", A), _ = this._handleWidth / 2 + Cat, E = Op([v[C] + (C === 0 ? -_ : _), this._size[1] / 2], A); + a[C].setStyle({ + x: E[0], + y: E[1], + verticalAlign: o === ZA ? "middle" : S, + align: o === ZA ? S : "center", + text: l[C] + }); + } + }, t.prototype._formatLabel = function(r, n) { + var i = this.dataZoomModel, a = i.get("labelFormatter"), o = i.get("labelPrecision"); + (o == null || o === "auto") && (o = n.getPixelPrecision()); + var l = r == null || isNaN(r) ? "" : n.type === "category" || n.type === "time" ? n.scale.getLabel({ + value: Math.round(r) + }) : r.toFixed(Math.min(o, 20)); + return Kr(a) ? a(r, l) : wr(a) ? a.replace("{value}", l) : l; + }, t.prototype._showDataInfo = function(r) { + r = this._dragging || r; + var n = this._displayables, i = n.handleLabels; + i[0].attr("invisible", !r), i[1].attr("invisible", !r), n.moveHandle && this.api[r ? "enterEmphasis" : "leaveEmphasis"](n.moveHandle, 1); + }, t.prototype._onDragMove = function(r, n, i, a) { + this._dragging = !0, zm(a.event); + var o = this._displayables.sliderGroup.getLocalTransform(), l = Op([n, i], o, !0), u = this._updateInterval(r, l[0]), d = this.dataZoomModel.get("realtime"); + this._updateView(!d), u && d && this._dispatchZoomAction(!0); + }, t.prototype._onDragEnd = function() { + this._dragging = !1, this._showDataInfo(!1); + var r = this.dataZoomModel.get("realtime"); + !r && this._dispatchZoomAction(!1); + }, t.prototype._onClickPanel = function(r) { + var n = this._size, i = this._displayables.sliderGroup.transformCoordToLocal(r.offsetX, r.offsetY); + if (!(i[0] < 0 || i[0] > n[0] || i[1] < 0 || i[1] > n[1])) { + var a = this._handleEnds, o = (a[0] + a[1]) / 2, l = this._updateInterval("all", i[0] - o); + this._updateView(), l && this._dispatchZoomAction(!1); + } + }, t.prototype._onBrushStart = function(r) { + var n = r.offsetX, i = r.offsetY; + this._brushStart = new ni(n, i), this._brushing = !0, this._brushStartTime = +/* @__PURE__ */ new Date(); + }, t.prototype._onBrushEnd = function(r) { + if (this._brushing) { + var n = this._displayables.brushRect; + if (this._brushing = !1, !!n) { + n.attr("ignore", !0); + var i = n.shape, a = +/* @__PURE__ */ new Date(); + if (!(a - this._brushStartTime < 200 && Math.abs(i.width) < 5)) { + var o = this._getViewExtent(), l = [0, 100]; + this._range = ld([Ea(i.x, o, l, !0), Ea(i.x + i.width, o, l, !0)]), this._handleEnds = [i.x, i.x + i.width], this._updateView(), this._dispatchZoomAction(!1); + } + } + } + }, t.prototype._onBrush = function(r) { + this._brushing && (zm(r.event), this._updateBrushRect(r.offsetX, r.offsetY)); + }, t.prototype._updateBrushRect = function(r, n) { + var i = this._displayables, a = this.dataZoomModel, o = i.brushRect; + o || (o = i.brushRect = new KA({ + silent: !0, + style: a.getModel("brushStyle").getItemStyle() + }), i.sliderGroup.add(o)), o.attr("ignore", !1); + var l = this._brushStart, u = this._displayables.sliderGroup, d = u.transformCoordToLocal(r, n), f = u.transformCoordToLocal(l.x, l.y), g = this._size; + d[0] = Math.max(Math.min(g[0], d[0]), 0), o.setShape({ + x: f[0], + y: 0, + width: d[0] - f[0], + height: g[1] + }); + }, t.prototype._dispatchZoomAction = function(r) { + var n = this._range; + this.api.dispatchAction({ + type: "dataZoom", + from: this.uid, + dataZoomId: this.dataZoomModel.id, + animation: r ? wat : null, + start: n[0], + end: n[1] + }); + }, t.prototype._findCoordRect = function() { + var r, n = Abe(this.dataZoomModel).infoList; + if (!r && n.length) { + var i = n[0].model.coordinateSystem; + r = i.getRect && i.getRect(); + } + if (!r) { + var a = this.api.getWidth(), o = this.api.getHeight(); + r = { + x: a * 0.2, + y: o * 0.2, + width: a * 0.6, + height: o * 0.6 + }; + } + return r; + }, t.type = "dataZoom.slider", t; + }(vY) +); +function xat(e) { + var t = { + x: "y", + y: "x", + radius: "angle", + angle: "radius" + }; + return t[e]; +} +function Ace(e) { + return e === "vertical" ? "ns-resize" : "ew-resize"; +} +const Aat = Iat; +function Kbe(e) { + e.registerComponentModel(Sat), e.registerComponentView(Aat), mY(e); +} +function Rat(e) { + ii(Xbe), ii(Kbe); +} +var Dat = { + /** + * @public + */ + get: function(e, t, r) { + var n = cn((Oat[e] || {})[t]); + return r && qt(n) ? n[n.length - 1] : n; + } +}, Oat = { + color: { + active: ["#006edd", "#e0ffff"], + inactive: ["rgba(0,0,0,0)"] + }, + colorHue: { + active: [0, 360], + inactive: [0, 0] + }, + colorSaturation: { + active: [0.3, 1], + inactive: [0, 0] + }, + colorLightness: { + active: [0.9, 0.5], + inactive: [0, 0] + }, + colorAlpha: { + active: [0.3, 1], + inactive: [0, 0] + }, + opacity: { + active: [0.3, 1], + inactive: [0, 0] + }, + symbol: { + active: ["circle", "roundRect", "diamond"], + inactive: ["none"] + }, + symbolSize: { + active: [10, 50], + inactive: [0, 0] + } +}; +const Zbe = Dat; +var Rce = yc.mapVisual, Mat = yc.eachVisual, kat = qt, Dce = Ee, Pat = ld, Nat = Ea, Lat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.stateList = ["inRange", "outOfRange"], r.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"], r.layoutMode = { + type: "box", + ignoreSize: !0 + }, r.dataBound = [-1 / 0, 1 / 0], r.targetVisuals = {}, r.controllerVisuals = {}, r; + } + return t.prototype.init = function(r, n, i) { + this.mergeDefaultAndTheme(r, i); + }, t.prototype.optionUpdated = function(r, n) { + var i = this.option; + !n && Bbe(i, r, this.replacableOptionKeys), this.textStyleModel = this.getModel("textStyle"), this.resetItemSize(), this.completeVisualOption(); + }, t.prototype.resetVisual = function(r) { + var n = this.stateList; + r = Ar(r, this), this.controllerVisuals = QW(this.option.controller, n, r), this.targetVisuals = QW(this.option.target, n, r); + }, t.prototype.getItemSymbol = function() { + return null; + }, t.prototype.getTargetSeriesIndices = function() { + var r = this.option.seriesIndex, n = []; + return r == null || r === "all" ? this.ecModel.eachSeries(function(i, a) { + n.push(a); + }) : n = qa(r), n; + }, t.prototype.eachTargetSeries = function(r, n) { + Ee(this.getTargetSeriesIndices(), function(i) { + var a = this.ecModel.getSeriesByIndex(i); + a && r.call(n, a); + }, this); + }, t.prototype.isTargetSeries = function(r) { + var n = !1; + return this.eachTargetSeries(function(i) { + i === r && (n = !0); + }), n; + }, t.prototype.formatValueText = function(r, n, i) { + var a = this.option, o = a.precision, l = this.dataBound, u = a.formatter, d; + i = i || ["<", ">"], qt(r) && (r = r.slice(), d = !0); + var f = n ? r : d ? [g(r[0]), g(r[1])] : g(r); + if (wr(u)) + return u.replace("{value}", d ? f[0] : f).replace("{value2}", d ? f[1] : f); + if (Kr(u)) + return d ? u(r[0], r[1]) : u(r); + if (d) + return r[0] === l[0] ? i[0] + " " + f[1] : r[1] === l[1] ? i[1] + " " + f[0] : f[0] + " - " + f[1]; + return f; + function g(v) { + return v === l[0] ? "min" : v === l[1] ? "max" : (+v).toFixed(Math.min(o, 20)); + } + }, t.prototype.resetExtent = function() { + var r = this.option, n = Pat([r.min, r.max]); + this._dataExtent = n; + }, t.prototype.getDataDimensionIndex = function(r) { + var n = this.option.dimension; + if (n != null) + return r.getDimensionIndex(n); + for (var i = r.dimensions, a = i.length - 1; a >= 0; a--) { + var o = i[a], l = r.getDimensionInfo(o); + if (!l.isCalculationCoord) + return l.storeDimIndex; + } + }, t.prototype.getExtent = function() { + return this._dataExtent.slice(); + }, t.prototype.completeVisualOption = function() { + var r = this.ecModel, n = this.option, i = { + inRange: n.inRange, + outOfRange: n.outOfRange + }, a = n.target || (n.target = {}), o = n.controller || (n.controller = {}); + Qn(a, i), Qn(o, i); + var l = this.isCategory(); + u.call(this, a), u.call(this, o), d.call(this, a, "inRange", "outOfRange"), f.call(this, o); + function u(g) { + kat(n.color) && !g.inRange && (g.inRange = { + color: n.color.slice().reverse() + }), g.inRange = g.inRange || { + color: r.get("gradientColor") + }; + } + function d(g, v, y) { + var C = g[v], A = g[y]; + C && !A && (A = g[y] = {}, Dce(C, function(S, _) { + if (yc.isValidType(_)) { + var E = Zbe.get(_, "inactive", l); + E != null && (A[_] = E, _ === "color" && !A.hasOwnProperty("opacity") && !A.hasOwnProperty("colorAlpha") && (A.opacity = [0, 0])); + } + })); + } + function f(g) { + var v = (g.inRange || {}).symbol || (g.outOfRange || {}).symbol, y = (g.inRange || {}).symbolSize || (g.outOfRange || {}).symbolSize, C = this.get("inactiveColor"), A = this.getItemSymbol(), S = A || "roundRect"; + Dce(this.stateList, function(_) { + var E = this.itemSize, I = g[_]; + I || (I = g[_] = { + color: l ? C : [C] + }), I.symbol == null && (I.symbol = v && cn(v) || (l ? S : [S])), I.symbolSize == null && (I.symbolSize = y && cn(y) || (l ? E[0] : [E[0], E[0]])), I.symbol = Rce(I.symbol, function(b) { + return b === "none" ? S : b; + }); + var w = I.symbolSize; + if (w != null) { + var x = -1 / 0; + Mat(w, function(b) { + b > x && (x = b); + }), I.symbolSize = Rce(w, function(b) { + return Nat(b, [0, x], [0, E[0]], !0); + }); + } + }, this); + } + }, t.prototype.resetItemSize = function() { + this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]; + }, t.prototype.isCategory = function() { + return !!this.option.categories; + }, t.prototype.setSelected = function(r) { + }, t.prototype.getSelected = function() { + return null; + }, t.prototype.getValueState = function(r) { + return null; + }, t.prototype.getVisualMeta = function(r) { + return null; + }, t.type = "visualMap", t.dependencies = ["series"], t.defaultOption = { + show: !0, + // zlevel: 0, + z: 4, + seriesIndex: "all", + min: 0, + max: 200, + left: 0, + right: null, + top: null, + bottom: 0, + itemWidth: null, + itemHeight: null, + inverse: !1, + orient: "vertical", + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + contentColor: "#5793f3", + inactiveColor: "#aaa", + borderWidth: 0, + padding: 5, + // 接受数组分别设定上右下左边距,同css + textGap: 10, + precision: 0, + textStyle: { + color: "#333" + // 值域文字颜色 + } + }, t; + }(Mi) +); +const a2 = Lat; +var Oce = [20, 140], Fat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.optionUpdated = function(r, n) { + e.prototype.optionUpdated.apply(this, arguments), this.resetExtent(), this.resetVisual(function(i) { + i.mappingMethod = "linear", i.dataExtent = this.getExtent(); + }), this._resetRange(); + }, t.prototype.resetItemSize = function() { + e.prototype.resetItemSize.apply(this, arguments); + var r = this.itemSize; + (r[0] == null || isNaN(r[0])) && (r[0] = Oce[0]), (r[1] == null || isNaN(r[1])) && (r[1] = Oce[1]); + }, t.prototype._resetRange = function() { + var r = this.getExtent(), n = this.option.range; + !n || n.auto ? (r.auto = 1, this.option.range = r) : qt(n) && (n[0] > n[1] && n.reverse(), n[0] = Math.max(n[0], r[0]), n[1] = Math.min(n[1], r[1])); + }, t.prototype.completeVisualOption = function() { + e.prototype.completeVisualOption.apply(this, arguments), Ee(this.stateList, function(r) { + var n = this.option.controller[r].symbolSize; + n && n[0] !== n[1] && (n[0] = n[1] / 3); + }, this); + }, t.prototype.setSelected = function(r) { + this.option.range = r.slice(), this._resetRange(); + }, t.prototype.getSelected = function() { + var r = this.getExtent(), n = ld((this.get("range") || []).slice()); + return n[0] > r[1] && (n[0] = r[1]), n[1] > r[1] && (n[1] = r[1]), n[0] < r[0] && (n[0] = r[0]), n[1] < r[0] && (n[1] = r[0]), n; + }, t.prototype.getValueState = function(r) { + var n = this.option.range, i = this.getExtent(); + return (n[0] <= i[0] || n[0] <= r) && (n[1] >= i[1] || r <= n[1]) ? "inRange" : "outOfRange"; + }, t.prototype.findTargetDataIndices = function(r) { + var n = []; + return this.eachTargetSeries(function(i) { + var a = [], o = i.getData(); + o.each(this.getDataDimensionIndex(o), function(l, u) { + r[0] <= l && l <= r[1] && a.push(u); + }, this), n.push({ + seriesId: i.id, + dataIndex: a + }); + }, this), n; + }, t.prototype.getVisualMeta = function(r) { + var n = Mce(this, "outOfRange", this.getExtent()), i = Mce(this, "inRange", this.option.range.slice()), a = []; + function o(y, C) { + a.push({ + value: y, + color: r(y, C) + }); + } + for (var l = 0, u = 0, d = i.length, f = n.length; u < f && (!i.length || n[u] <= i[0]); u++) + n[u] < i[l] && o(n[u], "outOfRange"); + for (var g = 1; l < d; l++, g = 0) + g && a.length && o(i[l], "outOfRange"), o(i[l], "inRange"); + for (var g = 1; u < f; u++) + (!i.length || i[i.length - 1] < n[u]) && (g && (a.length && o(a[a.length - 1].value, "outOfRange"), g = 0), o(n[u], "outOfRange")); + var v = a.length; + return { + stops: a, + outerColors: [v ? a[0].color : "transparent", v ? a[v - 1].color : "transparent"] + }; + }, t.type = "visualMap.continuous", t.defaultOption = O0(a2.defaultOption, { + align: "auto", + calculable: !1, + hoverLink: !0, + realtime: !0, + handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z", + handleSize: "120%", + handleStyle: { + borderColor: "#fff", + borderWidth: 1 + }, + indicatorIcon: "circle", + indicatorSize: "50%", + indicatorStyle: { + borderColor: "#fff", + borderWidth: 2, + shadowBlur: 2, + shadowOffsetX: 1, + shadowOffsetY: 1, + shadowColor: "rgba(0,0,0,0.2)" + } + // emphasis: { + // handleStyle: { + // shadowBlur: 3, + // shadowOffsetX: 1, + // shadowOffsetY: 1, + // shadowColor: 'rgba(0,0,0,0.2)' + // } + // } + }), t; + }(a2) +); +function Mce(e, t, r) { + if (r[0] === r[1]) + return r.slice(); + for (var n = 200, i = (r[1] - r[0]) / n, a = r[0], o = [], l = 0; l <= n && a < r[1]; l++) + o.push(a), a += i; + return o.push(r[1]), o; +} +const Bat = Fat; +var Uat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r.autoPositionValues = { + left: 1, + right: 1, + top: 1, + bottom: 1 + }, r; + } + return t.prototype.init = function(r, n) { + this.ecModel = r, this.api = n; + }, t.prototype.render = function(r, n, i, a) { + if (this.visualMapModel = r, r.get("show") === !1) { + this.group.removeAll(); + return; + } + this.doRender(r, n, i, a); + }, t.prototype.renderBackground = function(r) { + var n = this.visualMapModel, i = ME(n.get("padding") || 0), a = r.getBoundingRect(); + r.add(new Xi({ + z2: -1, + silent: !0, + shape: { + x: a.x - i[3], + y: a.y - i[0], + width: a.width + i[3] + i[1], + height: a.height + i[0] + i[2] + }, + style: { + fill: n.get("backgroundColor"), + stroke: n.get("borderColor"), + lineWidth: n.get("borderWidth") + } + })); + }, t.prototype.getControllerVisual = function(r, n, i) { + i = i || {}; + var a = i.forceState, o = this.visualMapModel, l = {}; + if (n === "color") { + var u = o.get("contentColor"); + l.color = u; + } + function d(y) { + return l[y]; + } + function f(y, C) { + l[y] = C; + } + var g = o.controllerVisuals[a || o.getValueState(r)], v = yc.prepareVisualTypes(g); + return Ee(v, function(y) { + var C = g[y]; + i.convertOpacityToAlpha && y === "opacity" && (y = "colorAlpha", C = g.__alphaForOpacity), yc.dependsOn(y, n) && C && C.applyVisual(r, d, f); + }), l[n]; + }, t.prototype.positionGroup = function(r) { + var n = this.visualMapModel, i = this.api; + BF(r, n.getBoxLayoutParams(), { + width: i.getWidth(), + height: i.getHeight() + }); + }, t.prototype.doRender = function(r, n, i, a) { + }, t.type = "visualMap", t; + }(Co) +); +const qbe = Uat; +var kce = [["left", "right", "width"], ["top", "bottom", "height"]]; +function Jbe(e, t, r) { + var n = e.option, i = n.align; + if (i != null && i !== "auto") + return i; + for (var a = { + width: t.getWidth(), + height: t.getHeight() + }, o = n.orient === "horizontal" ? 1 : 0, l = kce[o], u = [0, null, 10], d = {}, f = 0; f < 3; f++) + d[kce[1 - o][f]] = u[f], d[l[f]] = f === 2 ? r[0] : n[l[f]]; + var g = [["x", "width", 3], ["y", "height", 0]][o], v = js(d, a, n.padding); + return l[(v.margin[g[2]] || 0) + v[g[0]] + v[g[1]] * 0.5 < a[g[1]] * 0.5 ? 0 : 1]; +} +function FN(e, t) { + return Ee(e || [], function(r) { + r.dataIndex != null && (r.dataIndexInside = r.dataIndex, r.dataIndex = null), r.highlightKey = "visualMap" + (t ? t.componentIndex : ""); + }), e; +} +var jg = Ea, jat = Ee, Pce = Math.min, U3 = Math.max, $at = 12, Vat = 6, zat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._shapes = {}, r._dataInterval = [], r._handleEnds = [], r._hoverLinkDataIndices = [], r; + } + return t.prototype.init = function(r, n) { + e.prototype.init.call(this, r, n), this._hoverLinkFromSeriesMouseOver = Ar(this._hoverLinkFromSeriesMouseOver, this), this._hideIndicator = Ar(this._hideIndicator, this); + }, t.prototype.doRender = function(r, n, i, a) { + (!a || a.type !== "selectDataRange" || a.from !== this.uid) && this._buildView(); + }, t.prototype._buildView = function() { + this.group.removeAll(); + var r = this.visualMapModel, n = this.group; + this._orient = r.get("orient"), this._useHandle = r.get("calculable"), this._resetInterval(), this._renderBar(n); + var i = r.get("text"); + this._renderEndsText(n, i, 0), this._renderEndsText(n, i, 1), this._updateView(!0), this.renderBackground(n), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(n); + }, t.prototype._renderEndsText = function(r, n, i) { + if (n) { + var a = n[1 - i]; + a = a != null ? a + "" : ""; + var o = this.visualMapModel, l = o.get("textGap"), u = o.itemSize, d = this._shapes.mainGroup, f = this._applyTransform([u[0] / 2, i === 0 ? -l : u[1] + l], d), g = this._applyTransform(i === 0 ? "bottom" : "top", d), v = this._orient, y = this.visualMapModel.textStyleModel; + this.group.add(new Hi({ + style: uo(y, { + x: f[0], + y: f[1], + verticalAlign: v === "horizontal" ? "middle" : g, + align: v === "horizontal" ? g : "center", + text: a + }) + })); + } + }, t.prototype._renderBar = function(r) { + var n = this.visualMapModel, i = this._shapes, a = n.itemSize, o = this._orient, l = this._useHandle, u = Jbe(n, this.api, a), d = i.mainGroup = this._createBarGroup(u), f = new _n(); + d.add(f), f.add(i.outOfRange = Nce()), f.add(i.inRange = Nce(null, l ? Fce(this._orient) : null, Ar(this._dragHandle, this, "all", !1), Ar(this._dragHandle, this, "all", !0))), f.setClipPath(new Xi({ + shape: { + x: 0, + y: 0, + width: a[0], + height: a[1], + r: 3 + } + })); + var g = n.textStyleModel.getTextRect("国"), v = U3(g.width, g.height); + l && (i.handleThumbs = [], i.handleLabels = [], i.handleLabelPoints = [], this._createHandle(n, d, 0, a, v, o), this._createHandle(n, d, 1, a, v, o)), this._createIndicator(n, d, a, v, o), r.add(d); + }, t.prototype._createHandle = function(r, n, i, a, o, l) { + var u = Ar(this._dragHandle, this, i, !1), d = Ar(this._dragHandle, this, i, !0), f = Np(r.get("handleSize"), a[0]), g = $s(r.get("handleIcon"), -f / 2, -f / 2, f, f, null, !0), v = Fce(this._orient); + g.attr({ + cursor: v, + draggable: !0, + drift: u, + ondragend: d, + onmousemove: function(_) { + zm(_.event); + } + }), g.x = a[0] / 2, g.useStyle(r.getModel("handleStyle").getItemStyle()), g.setStyle({ + strokeNoScale: !0, + strokeFirst: !0 + }), g.style.lineWidth *= 2, g.ensureState("emphasis").style = r.getModel(["emphasis", "handleStyle"]).getItemStyle(), Nb(g, !0), n.add(g); + var y = this.visualMapModel.textStyleModel, C = new Hi({ + cursor: v, + draggable: !0, + drift: u, + onmousemove: function(_) { + zm(_.event); + }, + ondragend: d, + style: uo(y, { + x: 0, + y: 0, + text: "" + }) + }); + C.ensureState("blur").style = { + opacity: 0.1 + }, C.stateTransition = { + duration: 200 + }, this.group.add(C); + var A = [f, 0], S = this._shapes; + S.handleThumbs[i] = g, S.handleLabelPoints[i] = A, S.handleLabels[i] = C; + }, t.prototype._createIndicator = function(r, n, i, a, o) { + var l = Np(r.get("indicatorSize"), i[0]), u = $s(r.get("indicatorIcon"), -l / 2, -l / 2, l, l, null, !0); + u.attr({ + cursor: "move", + invisible: !0, + silent: !0, + x: i[0] / 2 + }); + var d = r.getModel("indicatorStyle").getItemStyle(); + if (u instanceof ec) { + var f = u.style; + u.useStyle($t({ + // TODO other properties like x, y ? + image: f.image, + x: f.x, + y: f.y, + width: f.width, + height: f.height + }, d)); + } else + u.useStyle(d); + n.add(u); + var g = this.visualMapModel.textStyleModel, v = new Hi({ + silent: !0, + invisible: !0, + style: uo(g, { + x: 0, + y: 0, + text: "" + }) + }); + this.group.add(v); + var y = [(o === "horizontal" ? a / 2 : Vat) + i[0] / 2, 0], C = this._shapes; + C.indicator = u, C.indicatorLabel = v, C.indicatorLabelPoint = y, this._firstShowIndicator = !0; + }, t.prototype._dragHandle = function(r, n, i, a) { + if (this._useHandle) { + if (this._dragging = !n, !n) { + var o = this._applyTransform([i, a], this._shapes.mainGroup, !0); + this._updateInterval(r, o[1]), this._hideIndicator(), this._updateView(); + } + n === !this.visualMapModel.get("realtime") && this.api.dispatchAction({ + type: "selectDataRange", + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: this._dataInterval.slice() + }), n ? !this._hovering && this._clearHoverLinkToSeries() : Lce(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[r], !1); + } + }, t.prototype._resetInterval = function() { + var r = this.visualMapModel, n = this._dataInterval = r.getSelected(), i = r.getExtent(), a = [0, r.itemSize[1]]; + this._handleEnds = [jg(n[0], i, a, !0), jg(n[1], i, a, !0)]; + }, t.prototype._updateInterval = function(r, n) { + n = n || 0; + var i = this.visualMapModel, a = this._handleEnds, o = [0, i.itemSize[1]]; + LE( + n, + a, + o, + r, + // cross is forbidden + 0 + ); + var l = i.getExtent(); + this._dataInterval = [jg(a[0], o, l, !0), jg(a[1], o, l, !0)]; + }, t.prototype._updateView = function(r) { + var n = this.visualMapModel, i = n.getExtent(), a = this._shapes, o = [0, n.itemSize[1]], l = r ? o : this._handleEnds, u = this._createBarVisual(this._dataInterval, i, l, "inRange"), d = this._createBarVisual(i, i, o, "outOfRange"); + a.inRange.setStyle({ + fill: u.barColor + // opacity: visualInRange.opacity + }).setShape("points", u.barPoints), a.outOfRange.setStyle({ + fill: d.barColor + // opacity: visualOutOfRange.opacity + }).setShape("points", d.barPoints), this._updateHandle(l, u); + }, t.prototype._createBarVisual = function(r, n, i, a) { + var o = { + forceState: a, + convertOpacityToAlpha: !0 + }, l = this._makeColorGradient(r, o), u = [this.getControllerVisual(r[0], "symbolSize", o), this.getControllerVisual(r[1], "symbolSize", o)], d = this._createBarPoints(i, u); + return { + barColor: new fI(0, 0, 0, 1, l), + barPoints: d, + handlesColor: [l[0].color, l[l.length - 1].color] + }; + }, t.prototype._makeColorGradient = function(r, n) { + var i = 100, a = [], o = (r[1] - r[0]) / i; + a.push({ + color: this.getControllerVisual(r[0], "color", n), + offset: 0 + }); + for (var l = 1; l < i; l++) { + var u = r[0] + o * l; + if (u > r[1]) + break; + a.push({ + color: this.getControllerVisual(u, "color", n), + offset: l / i + }); + } + return a.push({ + color: this.getControllerVisual(r[1], "color", n), + offset: 1 + }), a; + }, t.prototype._createBarPoints = function(r, n) { + var i = this.visualMapModel.itemSize; + return [[i[0] - n[0], r[0]], [i[0], r[0]], [i[0], r[1]], [i[0] - n[1], r[1]]]; + }, t.prototype._createBarGroup = function(r) { + var n = this._orient, i = this.visualMapModel.get("inverse"); + return new _n(n === "horizontal" && !i ? { + scaleX: r === "bottom" ? 1 : -1, + rotation: Math.PI / 2 + } : n === "horizontal" && i ? { + scaleX: r === "bottom" ? -1 : 1, + rotation: -Math.PI / 2 + } : n === "vertical" && !i ? { + scaleX: r === "left" ? 1 : -1, + scaleY: -1 + } : { + scaleX: r === "left" ? 1 : -1 + }); + }, t.prototype._updateHandle = function(r, n) { + if (this._useHandle) { + var i = this._shapes, a = this.visualMapModel, o = i.handleThumbs, l = i.handleLabels, u = a.itemSize, d = a.getExtent(); + jat([0, 1], function(f) { + var g = o[f]; + g.setStyle("fill", n.handlesColor[f]), g.y = r[f]; + var v = jg(r[f], [0, u[1]], d, !0), y = this.getControllerVisual(v, "symbolSize"); + g.scaleX = g.scaleY = y / u[0], g.x = u[0] - y / 2; + var C = Op(i.handleLabelPoints[f], l0(g, this.group)); + l[f].setStyle({ + x: C[0], + y: C[1], + text: a.formatValueText(this._dataInterval[f]), + verticalAlign: "middle", + align: this._orient === "vertical" ? this._applyTransform("left", i.mainGroup) : "center" + }); + }, this); + } + }, t.prototype._showIndicator = function(r, n, i, a) { + var o = this.visualMapModel, l = o.getExtent(), u = o.itemSize, d = [0, u[1]], f = this._shapes, g = f.indicator; + if (g) { + g.attr("invisible", !1); + var v = { + convertOpacityToAlpha: !0 + }, y = this.getControllerVisual(r, "color", v), C = this.getControllerVisual(r, "symbolSize"), A = jg(r, l, d, !0), S = u[0] - C / 2, _ = { + x: g.x, + y: g.y + }; + g.y = A, g.x = S; + var E = Op(f.indicatorLabelPoint, l0(g, this.group)), I = f.indicatorLabel; + I.attr("invisible", !1); + var w = this._applyTransform("left", f.mainGroup), x = this._orient, b = x === "horizontal"; + I.setStyle({ + text: (i || "") + o.formatValueText(n), + verticalAlign: b ? w : "middle", + align: b ? "center" : w + }); + var R = { + x: S, + y: A, + style: { + fill: y + } + }, M = { + style: { + x: E[0], + y: E[1] + } + }; + if (o.ecModel.isAnimationEnabled() && !this._firstShowIndicator) { + var O = { + duration: 100, + easing: "cubicInOut", + additive: !0 + }; + g.x = _.x, g.y = _.y, g.animateTo(R, O), I.animateTo(M, O); + } else + g.attr(R), I.attr(M); + this._firstShowIndicator = !1; + var P = this._shapes.handleLabels; + if (P) + for (var B = 0; B < P.length; B++) + this.api.enterBlur(P[B]); + } + }, t.prototype._enableHoverLinkToSeries = function() { + var r = this; + this._shapes.mainGroup.on("mousemove", function(n) { + if (r._hovering = !0, !r._dragging) { + var i = r.visualMapModel.itemSize, a = r._applyTransform([n.offsetX, n.offsetY], r._shapes.mainGroup, !0, !0); + a[1] = Pce(U3(0, a[1]), i[1]), r._doHoverLinkToSeries(a[1], 0 <= a[0] && a[0] <= i[0]); + } + }).on("mouseout", function() { + r._hovering = !1, !r._dragging && r._clearHoverLinkToSeries(); + }); + }, t.prototype._enableHoverLinkFromSeries = function() { + var r = this.api.getZr(); + this.visualMapModel.option.hoverLink ? (r.on("mouseover", this._hoverLinkFromSeriesMouseOver, this), r.on("mouseout", this._hideIndicator, this)) : this._clearHoverLinkFromSeries(); + }, t.prototype._doHoverLinkToSeries = function(r, n) { + var i = this.visualMapModel, a = i.itemSize; + if (i.option.hoverLink) { + var o = [0, a[1]], l = i.getExtent(); + r = Pce(U3(o[0], r), o[1]); + var u = Hat(i, l, o), d = [r - u, r + u], f = jg(r, o, l, !0), g = [jg(d[0], o, l, !0), jg(d[1], o, l, !0)]; + d[0] < o[0] && (g[0] = -1 / 0), d[1] > o[1] && (g[1] = 1 / 0), n && (g[0] === -1 / 0 ? this._showIndicator(f, g[1], "< ", u) : g[1] === 1 / 0 ? this._showIndicator(f, g[0], "> ", u) : this._showIndicator(f, f, "≈ ", u)); + var v = this._hoverLinkDataIndices, y = []; + (n || Lce(i)) && (y = this._hoverLinkDataIndices = i.findTargetDataIndices(g)); + var C = $ze(v, y); + this._dispatchHighDown("downplay", FN(C[0], i)), this._dispatchHighDown("highlight", FN(C[1], i)); + } + }, t.prototype._hoverLinkFromSeriesMouseOver = function(r) { + var n; + if (Fb(r.target, function(u) { + var d = Tn(u); + if (d.dataIndex != null) + return n = d, !0; + }, !0), !!n) { + var i = this.ecModel.getSeriesByIndex(n.seriesIndex), a = this.visualMapModel; + if (a.isTargetSeries(i)) { + var o = i.getData(n.dataType), l = o.getStore().get(a.getDataDimensionIndex(o), n.dataIndex); + isNaN(l) || this._showIndicator(l, l); + } + } + }, t.prototype._hideIndicator = function() { + var r = this._shapes; + r.indicator && r.indicator.attr("invisible", !0), r.indicatorLabel && r.indicatorLabel.attr("invisible", !0); + var n = this._shapes.handleLabels; + if (n) + for (var i = 0; i < n.length; i++) + this.api.leaveBlur(n[i]); + }, t.prototype._clearHoverLinkToSeries = function() { + this._hideIndicator(); + var r = this._hoverLinkDataIndices; + this._dispatchHighDown("downplay", FN(r, this.visualMapModel)), r.length = 0; + }, t.prototype._clearHoverLinkFromSeries = function() { + this._hideIndicator(); + var r = this.api.getZr(); + r.off("mouseover", this._hoverLinkFromSeriesMouseOver), r.off("mouseout", this._hideIndicator); + }, t.prototype._applyTransform = function(r, n, i, a) { + var o = l0(n, a ? null : this.group); + return qt(r) ? Op(r, o, i) : OF(r, o, i); + }, t.prototype._dispatchHighDown = function(r, n) { + n && n.length && this.api.dispatchAction({ + type: r, + batch: n + }); + }, t.prototype.dispose = function() { + this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries(); + }, t.type = "visualMap.continuous", t; + }(qbe) +); +function Nce(e, t, r, n) { + return new Bu({ + shape: { + points: e + }, + draggable: !!r, + cursor: t, + drift: r, + onmousemove: function(i) { + zm(i.event); + }, + ondragend: n + }); +} +function Hat(e, t, r) { + var n = $at / 2, i = e.get("hoverLinkDataSize"); + return i && (n = jg(i, t, r, !0) / 2), n; +} +function Lce(e) { + var t = e.get("hoverLinkOnHandle"); + return !!(t == null ? e.get("realtime") : t); +} +function Fce(e) { + return e === "vertical" ? "ns-resize" : "ew-resize"; +} +const Wat = zat; +var Gat = { + type: "selectDataRange", + event: "dataRangeSelected", + // FIXME use updateView appears wrong + update: "update" +}, Yat = function(e, t) { + t.eachComponent({ + mainType: "visualMap", + query: e + }, function(r) { + r.setSelected(e.selected); + }); +}, Xat = [ + { + createOnAllSeries: !0, + reset: function(e, t) { + var r = []; + return t.eachComponent("visualMap", function(n) { + var i = e.pipelineContext; + !n.isTargetSeries(e) || i && i.large || r.push(Vnt(n.stateList, n.targetVisuals, Ar(n.getValueState, n), n.getDataDimensionIndex(e.getData()))); + }), r; + } + }, + // Only support color. + { + createOnAllSeries: !0, + reset: function(e, t) { + var r = e.getData(), n = []; + t.eachComponent("visualMap", function(i) { + if (i.isTargetSeries(e)) { + var a = i.getVisualMeta(Ar(Kat, null, e, i)) || { + stops: [], + outerColors: [] + }, o = i.getDataDimensionIndex(r); + o >= 0 && (a.dimension = o, n.push(a)); + } + }), e.getData().setVisual("visualMeta", n); + } + } +]; +function Kat(e, t, r, n) { + for (var i = t.targetVisuals[n], a = yc.prepareVisualTypes(i), o = { + color: ED(e.getData(), "color") + // default color. + }, l = 0, u = a.length; l < u; l++) { + var d = a[l], f = i[d === "opacity" ? "__alphaForOpacity" : d]; + f && f.applyVisual(r, g, v); + } + return o.color; + function g(y) { + return o[y]; + } + function v(y, C) { + o[y] = C; + } +} +var Bce = Ee; +function Zat(e) { + var t = e && e.visualMap; + qt(t) || (t = t ? [t] : []), Bce(t, function(r) { + if (r) { + FT(r, "splitList") && !FT(r, "pieces") && (r.pieces = r.splitList, delete r.splitList); + var n = r.pieces; + n && qt(n) && Bce(n, function(i) { + sn(i) && (FT(i, "start") && !FT(i, "min") && (i.min = i.start), FT(i, "end") && !FT(i, "max") && (i.max = i.end)); + }); + } + }); +} +function FT(e, t) { + return e && e.hasOwnProperty && e.hasOwnProperty(t); +} +var Uce = !1; +function Qbe(e) { + Uce || (Uce = !0, e.registerSubTypeDefaulter("visualMap", function(t) { + return !t.categories && (!(t.pieces ? t.pieces.length > 0 : t.splitNumber > 0) || t.calculable) ? "continuous" : "piecewise"; + }), e.registerAction(Gat, Yat), Ee(Xat, function(t) { + e.registerVisual(e.PRIORITY.VISUAL.COMPONENT, t); + }), e.registerPreprocessor(Zat)); +} +function eEe(e) { + e.registerComponentModel(Bat), e.registerComponentView(Wat), Qbe(e); +} +var qat = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r._pieceList = [], r; + } + return t.prototype.optionUpdated = function(r, n) { + e.prototype.optionUpdated.apply(this, arguments), this.resetExtent(); + var i = this._mode = this._determineMode(); + this._pieceList = [], Jat[this._mode].call(this, this._pieceList), this._resetSelected(r, n); + var a = this.option.categories; + this.resetVisual(function(o, l) { + i === "categories" ? (o.mappingMethod = "category", o.categories = cn(a)) : (o.dataExtent = this.getExtent(), o.mappingMethod = "piecewise", o.pieceList = er(this._pieceList, function(u) { + return u = cn(u), l !== "inRange" && (u.visual = null), u; + })); + }); + }, t.prototype.completeVisualOption = function() { + var r = this.option, n = {}, i = yc.listVisualTypes(), a = this.isCategory(); + Ee(r.pieces, function(l) { + Ee(i, function(u) { + l.hasOwnProperty(u) && (n[u] = 1); + }); + }), Ee(n, function(l, u) { + var d = !1; + Ee(this.stateList, function(f) { + d = d || o(r, f, u) || o(r.target, f, u); + }, this), !d && Ee(this.stateList, function(f) { + (r[f] || (r[f] = {}))[u] = Zbe.get(u, f === "inRange" ? "active" : "inactive", a); + }); + }, this); + function o(l, u, d) { + return l && l[u] && l[u].hasOwnProperty(d); + } + e.prototype.completeVisualOption.apply(this, arguments); + }, t.prototype._resetSelected = function(r, n) { + var i = this.option, a = this._pieceList, o = (n ? i : r).selected || {}; + if (i.selected = o, Ee(a, function(u, d) { + var f = this.getSelectedMapKey(u); + o.hasOwnProperty(f) || (o[f] = !0); + }, this), i.selectedMode === "single") { + var l = !1; + Ee(a, function(u, d) { + var f = this.getSelectedMapKey(u); + o[f] && (l ? o[f] = !1 : l = !0); + }, this); + } + }, t.prototype.getItemSymbol = function() { + return this.get("itemSymbol"); + }, t.prototype.getSelectedMapKey = function(r) { + return this._mode === "categories" ? r.value + "" : r.index + ""; + }, t.prototype.getPieceList = function() { + return this._pieceList; + }, t.prototype._determineMode = function() { + var r = this.option; + return r.pieces && r.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"; + }, t.prototype.setSelected = function(r) { + this.option.selected = cn(r); + }, t.prototype.getValueState = function(r) { + var n = yc.findPieceIndex(r, this._pieceList); + return n != null && this.option.selected[this.getSelectedMapKey(this._pieceList[n])] ? "inRange" : "outOfRange"; + }, t.prototype.findTargetDataIndices = function(r) { + var n = [], i = this._pieceList; + return this.eachTargetSeries(function(a) { + var o = [], l = a.getData(); + l.each(this.getDataDimensionIndex(l), function(u, d) { + var f = yc.findPieceIndex(u, i); + f === r && o.push(d); + }, this), n.push({ + seriesId: a.id, + dataIndex: o + }); + }, this), n; + }, t.prototype.getRepresentValue = function(r) { + var n; + if (this.isCategory()) + n = r.value; + else if (r.value != null) + n = r.value; + else { + var i = r.interval || []; + n = i[0] === -1 / 0 && i[1] === 1 / 0 ? 0 : (i[0] + i[1]) / 2; + } + return n; + }, t.prototype.getVisualMeta = function(r) { + if (this.isCategory()) + return; + var n = [], i = ["", ""], a = this; + function o(f, g) { + var v = a.getRepresentValue({ + interval: f + }); + g || (g = a.getValueState(v)); + var y = r(v, g); + f[0] === -1 / 0 ? i[0] = y : f[1] === 1 / 0 ? i[1] = y : n.push({ + value: f[0], + color: y + }, { + value: f[1], + color: y + }); + } + var l = this._pieceList.slice(); + if (!l.length) + l.push({ + interval: [-1 / 0, 1 / 0] + }); + else { + var u = l[0].interval[0]; + u !== -1 / 0 && l.unshift({ + interval: [-1 / 0, u] + }), u = l[l.length - 1].interval[1], u !== 1 / 0 && l.push({ + interval: [u, 1 / 0] + }); + } + var d = -1 / 0; + return Ee(l, function(f) { + var g = f.interval; + g && (g[0] > d && o([d, g[0]], "outOfRange"), o(g.slice()), d = g[1]); + }, this), { + stops: n, + outerColors: i + }; + }, t.type = "visualMap.piecewise", t.defaultOption = O0(a2.defaultOption, { + selected: null, + minOpen: !1, + maxOpen: !1, + align: "auto", + itemWidth: 20, + itemHeight: 14, + itemSymbol: "roundRect", + pieces: null, + categories: null, + splitNumber: 5, + selectedMode: "multiple", + itemGap: 10, + hoverLink: !0 + // Enable hover highlight. + }), t; + }(a2) +), Jat = { + splitNumber: function(e) { + var t = this.option, r = Math.min(t.precision, 20), n = this.getExtent(), i = t.splitNumber; + i = Math.max(parseInt(i, 10), 1), t.splitNumber = i; + for (var a = (n[1] - n[0]) / i; +a.toFixed(r) !== a && r < 5; ) + r++; + t.precision = r, a = +a.toFixed(r), t.minOpen && e.push({ + interval: [-1 / 0, n[0]], + close: [0, 0] + }); + for (var o = 0, l = n[0]; o < i; l += a, o++) { + var u = o === i - 1 ? n[1] : l + a; + e.push({ + interval: [l, u], + close: [1, 1] + }); + } + t.maxOpen && e.push({ + interval: [n[1], 1 / 0], + close: [0, 0] + }), WH(e), Ee(e, function(d, f) { + d.index = f, d.text = this.formatValueText(d.interval); + }, this); + }, + categories: function(e) { + var t = this.option; + Ee(t.categories, function(r) { + e.push({ + text: this.formatValueText(r, !0), + value: r + }); + }, this), jce(t, e); + }, + pieces: function(e) { + var t = this.option; + Ee(t.pieces, function(r, n) { + sn(r) || (r = { + value: r + }); + var i = { + text: "", + index: n + }; + if (r.label != null && (i.text = r.label), r.hasOwnProperty("value")) { + var a = i.value = r.value; + i.interval = [a, a], i.close = [1, 1]; + } else { + for (var o = i.interval = [], l = i.close = [0, 0], u = [1, 0, 1], d = [-1 / 0, 1 / 0], f = [], g = 0; g < 2; g++) { + for (var v = [["gte", "gt", "min"], ["lte", "lt", "max"]][g], y = 0; y < 3 && o[g] == null; y++) + o[g] = r[v[y]], l[g] = u[y], f[g] = y === 2; + o[g] == null && (o[g] = d[g]); + } + f[0] && o[1] === 1 / 0 && (l[0] = 0), f[1] && o[0] === -1 / 0 && (l[1] = 0), o[0] === o[1] && l[0] && l[1] && (i.value = o[0]); + } + i.visual = yc.retrieveVisuals(r), e.push(i); + }, this), jce(t, e), WH(e), Ee(e, function(r) { + var n = r.close, i = [["<", "≤"][n[1]], [">", "≥"][n[0]]]; + r.text = r.text || this.formatValueText(r.value != null ? r.value : r.interval, !1, i); + }, this); + } +}; +function jce(e, t) { + var r = e.inverse; + (e.orient === "vertical" ? !r : r) && t.reverse(); +} +const Qat = qat; +var eot = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = t.type, r; + } + return t.prototype.doRender = function() { + var r = this.group; + r.removeAll(); + var n = this.visualMapModel, i = n.get("textGap"), a = n.textStyleModel, o = a.getFont(), l = a.getTextColor(), u = this._getItemAlign(), d = n.itemSize, f = this._getViewData(), g = f.endsText, v = kl(n.get("showLabel", !0), !g); + g && this._renderEndsText(r, g[0], d, v, u), Ee(f.viewPieceList, function(y) { + var C = y.piece, A = new _n(); + A.onclick = Ar(this._onItemClick, this, C), this._enableHoverLink(A, y.indexInModelPieceList); + var S = n.getRepresentValue(C); + if (this._createItemSymbol(A, S, [0, 0, d[0], d[1]]), v) { + var _ = this.visualMapModel.getValueState(S); + A.add(new Hi({ + style: { + x: u === "right" ? -i : d[0] + i, + y: d[1] / 2, + text: C.text, + verticalAlign: "middle", + align: u, + font: o, + fill: l, + opacity: _ === "outOfRange" ? 0.5 : 1 + } + })); + } + r.add(A); + }, this), g && this._renderEndsText(r, g[1], d, v, u), Kb(n.get("orient"), r, n.get("itemGap")), this.renderBackground(r), this.positionGroup(r); + }, t.prototype._enableHoverLink = function(r, n) { + var i = this; + r.on("mouseover", function() { + return a("highlight"); + }).on("mouseout", function() { + return a("downplay"); + }); + var a = function(o) { + var l = i.visualMapModel; + l.option.hoverLink && i.api.dispatchAction({ + type: o, + batch: FN(l.findTargetDataIndices(n), l) + }); + }; + }, t.prototype._getItemAlign = function() { + var r = this.visualMapModel, n = r.option; + if (n.orient === "vertical") + return Jbe(r, this.api, r.itemSize); + var i = n.align; + return (!i || i === "auto") && (i = "left"), i; + }, t.prototype._renderEndsText = function(r, n, i, a, o) { + if (n) { + var l = new _n(), u = this.visualMapModel.textStyleModel; + l.add(new Hi({ + style: uo(u, { + x: a ? o === "right" ? i[0] : 0 : i[0] / 2, + y: i[1] / 2, + verticalAlign: "middle", + align: a ? o : "center", + text: n + }) + })), r.add(l); + } + }, t.prototype._getViewData = function() { + var r = this.visualMapModel, n = er(r.getPieceList(), function(l, u) { + return { + piece: l, + indexInModelPieceList: u + }; + }), i = r.get("text"), a = r.get("orient"), o = r.get("inverse"); + return (a === "horizontal" ? o : !o) ? n.reverse() : i && (i = i.slice().reverse()), { + viewPieceList: n, + endsText: i + }; + }, t.prototype._createItemSymbol = function(r, n, i) { + r.add($s( + // symbol will be string + this.getControllerVisual(n, "symbol"), + i[0], + i[1], + i[2], + i[3], + // color will be string + this.getControllerVisual(n, "color") + )); + }, t.prototype._onItemClick = function(r) { + var n = this.visualMapModel, i = n.option, a = i.selectedMode; + if (a) { + var o = cn(i.selected), l = n.getSelectedMapKey(r); + a === "single" || a === !0 ? (o[l] = !0, Ee(o, function(u, d) { + o[d] = d === l; + })) : o[l] = !o[l], this.api.dispatchAction({ + type: "selectDataRange", + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: o + }); + } + }, t.type = "visualMap.piecewise", t; + }(qbe) +); +const tot = eot; +function tEe(e) { + e.registerComponentModel(Qat), e.registerComponentView(tot), Qbe(e); +} +function rot(e) { + ii(eEe), ii(tEe); +} +var not = { + label: { + enabled: !0 + }, + decal: { + show: !1 + } +}, $ce = ea(), iot = {}; +function aot(e, t) { + var r = e.getModel("aria"); + if (!r.get("enabled")) + return; + var n = cn(not); + Qn(n.label, e.getLocaleModel().get("aria"), !1), Qn(r.option, n, !1), i(), a(); + function i() { + var d = r.getModel("decal"), f = d.get("show"); + if (f) { + var g = $r(); + e.eachSeries(function(v) { + if (!v.isColorBySeries()) { + var y = g.get(v.type); + y || (y = {}, g.set(v.type, y)), $ce(v).scope = y; + } + }), e.eachRawSeries(function(v) { + if (e.isSeriesFiltered(v)) + return; + if (Kr(v.enableAriaDecal)) { + v.enableAriaDecal(); + return; + } + var y = v.getData(); + if (v.isColorBySeries()) { + var E = sW(v.ecModel, v.name, iot, e.getSeriesCount()), I = y.getVisual("decal"); + y.setVisual("decal", w(I, E)); + } else { + var C = v.getRawData(), A = {}, S = $ce(v).scope; + y.each(function(x) { + var b = y.getRawIndex(x); + A[b] = x; + }); + var _ = C.count(); + C.each(function(x) { + var b = A[x], R = C.getName(x) || x + "", M = sW(v.ecModel, R, S, _), O = y.getItemVisual(b, "decal"); + y.setItemVisual(b, "decal", w(O, M)); + }); + } + function w(x, b) { + var R = x ? $t($t({}, b), x) : b; + return R.dirty = !0, R; + } + }); + } + } + function a() { + var d = e.getLocaleModel().get("aria"), f = r.getModel("label"); + if (f.option = Jr(f.option, d), !!f.get("enabled")) { + var g = t.getZr().dom; + if (f.get("description")) { + g.setAttribute("aria-label", f.get("description")); + return; + } + var v = e.getSeriesCount(), y = f.get(["data", "maxCount"]) || 10, C = f.get(["series", "maxCount"]) || 10, A = Math.min(v, C), S; + if (!(v < 1)) { + var _ = l(); + if (_) { + var E = f.get(["general", "withTitle"]); + S = o(E, { + title: _ + }); + } else + S = f.get(["general", "withoutTitle"]); + var I = [], w = v > 1 ? f.get(["series", "multiple", "prefix"]) : f.get(["series", "single", "prefix"]); + S += o(w, { + seriesCount: v + }), e.eachSeries(function(M, O) { + if (O < A) { + var P = void 0, B = M.get("name"), H = B ? "withName" : "withoutName"; + P = v > 1 ? f.get(["series", "multiple", H]) : f.get(["series", "single", H]), P = o(P, { + seriesId: M.seriesIndex, + seriesName: M.get("name"), + seriesType: u(M.subType) + }); + var Y = M.getData(); + if (Y.count() > y) { + var X = f.get(["data", "partialData"]); + P += o(X, { + displayCnt: y + }); + } else + P += f.get(["data", "allData"]); + for (var ee = f.get(["data", "separator", "middle"]), ae = f.get(["data", "separator", "end"]), J = [], ne = 0; ne < Y.count(); ne++) + if (ne < y) { + var fe = Y.getName(ne), de = Y.getValues(ne), Te = f.get(["data", fe ? "withName" : "withoutName"]); + J.push(o(Te, { + name: fe, + value: de.join(ee) + })); + } + P += J.join(ee) + ae, I.push(P); + } + }); + var x = f.getModel(["series", "multiple", "separator"]), b = x.get("middle"), R = x.get("end"); + S += I.join(b) + R, g.setAttribute("aria-label", S); + } + } + } + function o(d, f) { + if (!wr(d)) + return d; + var g = d; + return Ee(f, function(v, y) { + g = g.replace(new RegExp("\\{\\s*" + y + "\\s*\\}", "g"), v); + }), g; + } + function l() { + var d = e.get("title"); + return d && d.length && (d = d[0]), d && d.text; + } + function u(d) { + var f = e.getLocaleModel().get(["series", "typeNames"]); + return f[d] || f.chart; + } +} +function oot(e) { + if (!(!e || !e.aria)) { + var t = e.aria; + t.show != null && (t.enabled = t.show), t.label = t.label || {}, Ee(["description", "general", "series", "data"], function(r) { + t[r] != null && (t.label[r] = t[r]); + }); + } +} +function sot(e) { + e.registerPreprocessor(oot), e.registerVisual(e.PRIORITY.VISUAL.ARIA, aot); +} +var Vce = { + value: "eq", + // PENDING: not good for literal semantic? + "<": "lt", + "<=": "lte", + ">": "gt", + ">=": "gte", + "=": "eq", + "!=": "ne", + "<>": "ne" + // Might be misleading for sake of the difference between '==' and '===', + // so don't support them. + // '==': 'eq', + // '===': 'seq', + // '!==': 'sne' + // PENDING: Whether support some common alias "ge", "le", "neq"? + // ge: 'gte', + // le: 'lte', + // neq: 'ne', +}, lot = ( + /** @class */ + function() { + function e(t) { + var r = this._condVal = wr(t) ? new RegExp(t) : Lge(t) ? t : null; + if (r == null) { + var n = ""; + Ca(n); + } + } + return e.prototype.evaluate = function(t) { + var r = typeof t; + return wr(r) ? this._condVal.test(t) : Qi(r) ? this._condVal.test(t + "") : !1; + }, e; + }() +), cot = ( + /** @class */ + function() { + function e() { + } + return e.prototype.evaluate = function() { + return this.value; + }, e; + }() +), uot = ( + /** @class */ + function() { + function e() { + } + return e.prototype.evaluate = function() { + for (var t = this.children, r = 0; r < t.length; r++) + if (!t[r].evaluate()) + return !1; + return !0; + }, e; + }() +), hot = ( + /** @class */ + function() { + function e() { + } + return e.prototype.evaluate = function() { + for (var t = this.children, r = 0; r < t.length; r++) + if (t[r].evaluate()) + return !0; + return !1; + }, e; + }() +), dot = ( + /** @class */ + function() { + function e() { + } + return e.prototype.evaluate = function() { + return !this.child.evaluate(); + }, e; + }() +), fot = ( + /** @class */ + function() { + function e() { + } + return e.prototype.evaluate = function() { + for (var t = !!this.valueParser, r = this.getValue, n = r(this.valueGetterParam), i = t ? this.valueParser(n) : null, a = 0; a < this.subCondList.length; a++) + if (!this.subCondList[a].evaluate(t ? i : n)) + return !1; + return !0; + }, e; + }() +); +function IY(e, t) { + if (e === !0 || e === !1) { + var r = new cot(); + return r.value = e, r; + } + var n = ""; + return rEe(e) || Ca(n), e.and ? zce("and", e, t) : e.or ? zce("or", e, t) : e.not ? pot(e, t) : got(e, t); +} +function zce(e, t, r) { + var n = t[e], i = ""; + qt(n) || Ca(i), n.length || Ca(i); + var a = e === "and" ? new uot() : new hot(); + return a.children = er(n, function(o) { + return IY(o, r); + }), a.children.length || Ca(i), a; +} +function pot(e, t) { + var r = e.not, n = ""; + rEe(r) || Ca(n); + var i = new dot(); + return i.child = IY(r, t), i.child || Ca(n), i; +} +function got(e, t) { + for (var r = "", n = t.prepareGetValue(e), i = [], a = Ri(e), o = e.parser, l = o ? gye(o) : null, u = 0; u < a.length; u++) { + var d = a[u]; + if (!(d === "parser" || t.valueGetterAttrMap.get(d))) { + var f = Lr(Vce, d) ? Vce[d] : d, g = e[d], v = l ? l(g) : g, y = QHe(f, v) || f === "reg" && new lot(v); + y || Ca(r), i.push(y); + } + } + i.length || Ca(r); + var C = new fot(); + return C.valueGetterParam = n, C.valueParser = l, C.getValue = t.getValue, C.subCondList = i, C; +} +function rEe(e) { + return sn(e) && !Sc(e); +} +var vot = ( + /** @class */ + function() { + function e(t, r) { + this._cond = IY(t, r); + } + return e.prototype.evaluate = function() { + return this._cond.evaluate(); + }, e; + }() +); +function mot(e, t) { + return new vot(e, t); +} +var yot = { + type: "echarts:filter", + // PENDING: enhance to filter by index rather than create new data + transform: function(e) { + for (var t = e.upstream, r, n = mot(e.config, { + valueGetterAttrMap: $r({ + dimension: !0 + }), + prepareGetValue: function(l) { + var u = "", d = l.dimension; + Lr(l, "dimension") || Ca(u); + var f = t.getDimensionInfo(d); + return f || Ca(u), { + dimIdx: f.index + }; + }, + getValue: function(l) { + return t.retrieveValueFromItem(r, l.dimIdx); + } + }), i = [], a = 0, o = t.count(); a < o; a++) + r = t.getRawDataItem(a), n.evaluate() && i.push(r); + return { + data: i + }; + } +}, _ot = { + type: "echarts:sort", + transform: function(e) { + var t = e.upstream, r = e.config, n = "", i = qa(r); + i.length || Ca(n); + var a = []; + Ee(i, function(f) { + var g = f.dimension, v = f.order, y = f.parser, C = f.incomparable; + if (g == null && Ca(n), v !== "asc" && v !== "desc" && Ca(n), C && C !== "min" && C !== "max") { + var A = ""; + Ca(A); + } + if (v !== "asc" && v !== "desc") { + var S = ""; + Ca(S); + } + var _ = t.getDimensionInfo(g); + _ || Ca(n); + var E = y ? gye(y) : null; + y && !E && Ca(n), a.push({ + dimIdx: _.index, + parser: E, + comparator: new mye(v, C) + }); + }); + var o = t.sourceFormat; + o !== eu && o !== Mf && Ca(n); + for (var l = [], u = 0, d = t.count(); u < d; u++) + l.push(t.getRawDataItem(u)); + return l.sort(function(f, g) { + for (var v = 0; v < a.length; v++) { + var y = a[v], C = t.retrieveValueFromItem(f, y.dimIdx), A = t.retrieveValueFromItem(g, y.dimIdx); + y.parser && (C = y.parser(C), A = y.parser(A)); + var S = y.comparator.evaluate(C, A); + if (S !== 0) + return S; + } + return 0; + }), { + data: l + }; + } +}; +function Sot(e) { + e.registerTransform(yot), e.registerTransform(_ot); +} +var bot = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "dataset", r; + } + return t.prototype.init = function(r, n, i) { + e.prototype.init.call(this, r, n, i), this._sourceManager = new bye(this), Wie(this); + }, t.prototype.mergeOption = function(r, n) { + e.prototype.mergeOption.call(this, r, n), Wie(this); + }, t.prototype.optionUpdated = function() { + this._sourceManager.dirty(); + }, t.prototype.getSourceManager = function() { + return this._sourceManager; + }, t.type = "dataset", t.defaultOption = { + seriesLayoutBy: Qg + }, t; + }(Mi) +), Eot = ( + /** @class */ + function(e) { + Dt(t, e); + function t() { + var r = e !== null && e.apply(this, arguments) || this; + return r.type = "dataset", r; + } + return t.type = "dataset", t; + }(Co) +); +function nEe(e) { + e.registerComponentModel(bot), e.registerComponentView(Eot); +} +var Bg = sv.CMD; +function uw(e, t) { + return Math.abs(e - t) < 1e-5; +} +function oG(e) { + var t = e.data, r = e.len(), n = [], i, a = 0, o = 0, l = 0, u = 0; + function d(Y, X) { + i && i.length > 2 && n.push(i), i = [Y, X]; + } + function f(Y, X, ee, ae) { + uw(Y, ee) && uw(X, ae) || i.push(Y, X, ee, ae, ee, ae); + } + function g(Y, X, ee, ae, J, ne) { + var fe = Math.abs(X - Y), de = Math.tan(fe / 4) * 4 / 3, Te = X < Y ? -1 : 1, be = Math.cos(Y), Ve = Math.sin(Y), pe = Math.cos(X), Be = Math.sin(X), Ue = be * J + ee, Qe = Ve * ne + ae, Re = pe * J + ee, Ne = Be * ne + ae, Me = J * de * Te, we = ne * de * Te; + i.push(Ue - Me * Ve, Qe + we * be, Re + Me * Be, Ne - we * pe, Re, Ne); + } + for (var v, y, C, A, S = 0; S < r; ) { + var _ = t[S++], E = S === 1; + switch (E && (a = t[S], o = t[S + 1], l = a, u = o, (_ === Bg.L || _ === Bg.C || _ === Bg.Q) && (i = [l, u])), _) { + case Bg.M: + a = l = t[S++], o = u = t[S++], d(l, u); + break; + case Bg.L: + v = t[S++], y = t[S++], f(a, o, v, y), a = v, o = y; + break; + case Bg.C: + i.push(t[S++], t[S++], t[S++], t[S++], a = t[S++], o = t[S++]); + break; + case Bg.Q: + v = t[S++], y = t[S++], C = t[S++], A = t[S++], i.push(a + 2 / 3 * (v - a), o + 2 / 3 * (y - o), C + 2 / 3 * (v - C), A + 2 / 3 * (y - A), C, A), a = C, o = A; + break; + case Bg.A: + var I = t[S++], w = t[S++], x = t[S++], b = t[S++], R = t[S++], M = t[S++] + R; + S += 1; + var O = !t[S++]; + v = Math.cos(R) * x + I, y = Math.sin(R) * b + w, E ? (l = v, u = y, d(l, u)) : f(a, o, v, y), a = Math.cos(M) * x + I, o = Math.sin(M) * b + w; + for (var P = (O ? -1 : 1) * Math.PI / 2, B = R; O ? B > M : B < M; B += P) { + var H = O ? Math.max(B + P, M) : Math.min(B + P, M); + g(B, H, I, w, x, b); + } + break; + case Bg.R: + l = a = t[S++], u = o = t[S++], v = l + t[S++], y = u + t[S++], d(v, u), f(v, u, v, y), f(v, y, l, y), f(l, y, l, u), f(l, u, v, u); + break; + case Bg.Z: + i && f(a, o, l, u), a = l, o = u; + break; + } + } + return i && i.length > 2 && n.push(i), n; +} +function sG(e, t, r, n, i, a, o, l, u, d) { + if (uw(e, r) && uw(t, n) && uw(i, o) && uw(a, l)) { + u.push(o, l); + return; + } + var f = 2 / d, g = f * f, v = o - e, y = l - t, C = Math.sqrt(v * v + y * y); + v /= C, y /= C; + var A = r - e, S = n - t, _ = i - o, E = a - l, I = A * A + S * S, w = _ * _ + E * E; + if (I < g && w < g) { + u.push(o, l); + return; + } + var x = v * A + y * S, b = -v * _ - y * E, R = I - x * x, M = w - b * b; + if (R < g && x >= 0 && M < g && b >= 0) { + u.push(o, l); + return; + } + var O = [], P = []; + g0(e, r, i, o, 0.5, O), g0(t, n, a, l, 0.5, P), sG(O[0], P[0], O[1], P[1], O[2], P[2], O[3], P[3], u, d), sG(O[4], P[4], O[5], P[5], O[6], P[6], O[7], P[7], u, d); +} +function Cot(e, t) { + var r = oG(e), n = []; + t = t || 1; + for (var i = 0; i < r.length; i++) { + var a = r[i], o = [], l = a[0], u = a[1]; + o.push(l, u); + for (var d = 2; d < a.length; ) { + var f = a[d++], g = a[d++], v = a[d++], y = a[d++], C = a[d++], A = a[d++]; + sG(l, u, f, g, v, y, C, A, o, t), l = C, u = A; + } + n.push(o); + } + return n; +} +function iEe(e, t, r) { + var n = e[t], i = e[1 - t], a = Math.abs(n / i), o = Math.ceil(Math.sqrt(a * r)), l = Math.floor(r / o); + l === 0 && (l = 1, o = r); + for (var u = [], d = 0; d < o; d++) + u.push(l); + var f = o * l, g = r - f; + if (g > 0) + for (var d = 0; d < g; d++) + u[d % o] += 1; + return u; +} +function Hce(e, t, r) { + for (var n = e.r0, i = e.r, a = e.startAngle, o = e.endAngle, l = Math.abs(o - a), u = l * i, d = i - n, f = u > Math.abs(d), g = iEe([u, d], f ? 0 : 1, t), v = (f ? l : d) / g.length, y = 0; y < g.length; y++) + for (var C = (f ? d : l) / g[y], A = 0; A < g[y]; A++) { + var S = {}; + f ? (S.startAngle = a + v * y, S.endAngle = a + v * (y + 1), S.r0 = n + C * A, S.r = n + C * (A + 1)) : (S.startAngle = a + C * A, S.endAngle = a + C * (A + 1), S.r0 = n + v * y, S.r = n + v * (y + 1)), S.clockwise = e.clockwise, S.cx = e.cx, S.cy = e.cy, r.push(S); + } +} +function Tot(e, t, r) { + for (var n = e.width, i = e.height, a = n > i, o = iEe([n, i], a ? 0 : 1, t), l = a ? "width" : "height", u = a ? "height" : "width", d = a ? "x" : "y", f = a ? "y" : "x", g = e[l] / o.length, v = 0; v < o.length; v++) + for (var y = e[u] / o[v], C = 0; C < o[v]; C++) { + var A = {}; + A[d] = v * g, A[f] = C * y, A[l] = g, A[u] = y, A.x += e.x, A.y += e.y, r.push(A); + } +} +function Wce(e, t, r, n) { + return e * n - r * t; +} +function wot(e, t, r, n, i, a, o, l) { + var u = r - e, d = n - t, f = o - i, g = l - a, v = Wce(f, g, u, d); + if (Math.abs(v) < 1e-6) + return null; + var y = e - i, C = t - a, A = Wce(y, C, f, g) / v; + return A < 0 || A > 1 ? null : new ni(A * u + e, A * d + t); +} +function Iot(e, t, r) { + var n = new ni(); + ni.sub(n, r, t), n.normalize(); + var i = new ni(); + ni.sub(i, e, t); + var a = i.dot(n); + return a; +} +function BT(e, t) { + var r = e[e.length - 1]; + r && r[0] === t[0] && r[1] === t[1] || e.push(t); +} +function xot(e, t, r) { + for (var n = e.length, i = [], a = 0; a < n; a++) { + var o = e[a], l = e[(a + 1) % n], u = wot(o[0], o[1], l[0], l[1], t.x, t.y, r.x, r.y); + u && i.push({ + projPt: Iot(u, t, r), + pt: u, + idx: a + }); + } + if (i.length < 2) + return [{ points: e }, { points: e }]; + i.sort(function(S, _) { + return S.projPt - _.projPt; + }); + var d = i[0], f = i[i.length - 1]; + if (f.idx < d.idx) { + var g = d; + d = f, f = g; + } + for (var v = [d.pt.x, d.pt.y], y = [f.pt.x, f.pt.y], C = [v], A = [y], a = d.idx + 1; a <= f.idx; a++) + BT(C, e[a].slice()); + BT(C, y), BT(C, v); + for (var a = f.idx + 1; a <= d.idx + n; a++) + BT(A, e[a % n].slice()); + return BT(A, v), BT(A, y), [{ + points: C + }, { + points: A + }]; +} +function Gce(e) { + var t = e.points, r = [], n = []; + TF(t, r, n); + var i = new ei(r[0], r[1], n[0] - r[0], n[1] - r[1]), a = i.width, o = i.height, l = i.x, u = i.y, d = new ni(), f = new ni(); + return a > o ? (d.x = f.x = l + a / 2, d.y = u, f.y = u + o) : (d.y = f.y = u + o / 2, d.x = l, f.x = l + a), xot(t, d, f); +} +function o2(e, t, r, n) { + if (r === 1) + n.push(t); + else { + var i = Math.floor(r / 2), a = e(t); + o2(e, a[0], i, n), o2(e, a[1], r - i, n); + } + return n; +} +function Aot(e, t) { + for (var r = [], n = 0; n < t; n++) + r.push(A8(e)); + return r; +} +function Rot(e, t) { + t.setStyle(e.style), t.z = e.z, t.z2 = e.z2, t.zlevel = e.zlevel; +} +function Dot(e) { + for (var t = [], r = 0; r < e.length; ) + t.push([e[r++], e[r++]]); + return t; +} +function Oot(e, t) { + var r = [], n = e.shape, i; + switch (e.type) { + case "rect": + Tot(n, t, r), i = Xi; + break; + case "sector": + Hce(n, t, r), i = Fu; + break; + case "circle": + Hce({ + r0: 0, + r: n.r, + startAngle: 0, + endAngle: Math.PI * 2, + cx: n.cx, + cy: n.cy + }, t, r), i = Fu; + break; + default: + var a = e.getComputedTransform(), o = a ? Math.sqrt(Math.max(a[0] * a[0] + a[1] * a[1], a[2] * a[2] + a[3] * a[3])) : 1, l = er(Cot(e.getUpdatedPathProxy(), o), function(_) { + return Dot(_); + }), u = l.length; + if (u === 0) + o2(Gce, { + points: l[0] + }, t, r); + else if (u === t) + for (var d = 0; d < u; d++) + r.push({ + points: l[d] + }); + else { + var f = 0, g = er(l, function(_) { + var E = [], I = []; + TF(_, E, I); + var w = (I[1] - E[1]) * (I[0] - E[0]); + return f += w, { poly: _, area: w }; + }); + g.sort(function(_, E) { + return E.area - _.area; + }); + for (var v = t, d = 0; d < u; d++) { + var y = g[d]; + if (v <= 0) + break; + var C = d === u - 1 ? v : Math.ceil(y.area / f * t); + C < 0 || (o2(Gce, { + points: y.poly + }, C, r), v -= C); + } + } + i = Bu; + break; + } + if (!i) + return Aot(e, t); + for (var A = [], d = 0; d < r.length; d++) { + var S = new i(); + S.setShape(r[d]), Rot(e, S), A.push(S); + } + return A; +} +function Mot(e, t) { + var r = e.length, n = t.length; + if (r === n) + return [e, t]; + for (var i = [], a = [], o = r < n ? e : t, l = Math.min(r, n), u = Math.abs(n - r) / 6, d = (l - 2) / 6, f = Math.ceil(u / d) + 1, g = [o[0], o[1]], v = u, y = 2; y < l; ) { + var C = o[y - 2], A = o[y - 1], S = o[y++], _ = o[y++], E = o[y++], I = o[y++], w = o[y++], x = o[y++]; + if (v <= 0) { + g.push(S, _, E, I, w, x); + continue; + } + for (var b = Math.min(v, f - 1) + 1, R = 1; R <= b; R++) { + var M = R / b; + g0(C, S, E, w, M, i), g0(A, _, I, x, M, a), C = i[3], A = a[3], g.push(i[1], a[1], i[2], a[2], C, A), S = i[5], _ = a[5], E = i[6], I = a[6]; + } + v -= b - 1; + } + return o === e ? [g, t] : [e, g]; +} +function Yce(e, t) { + for (var r = e.length, n = e[r - 2], i = e[r - 1], a = [], o = 0; o < t.length; ) + a[o++] = n, a[o++] = i; + return a; +} +function kot(e, t) { + for (var r, n, i, a = [], o = [], l = 0; l < Math.max(e.length, t.length); l++) { + var u = e[l], d = t[l], f = void 0, g = void 0; + u ? d ? (r = Mot(u, d), f = r[0], g = r[1], n = f, i = g) : (g = Yce(i || u, u), f = u) : (f = Yce(n || d, d), g = d), a.push(f), o.push(g); + } + return [a, o]; +} +function Xce(e) { + for (var t = 0, r = 0, n = 0, i = e.length, a = 0, o = i - 2; a < i; o = a, a += 2) { + var l = e[o], u = e[o + 1], d = e[a], f = e[a + 1], g = l * f - d * u; + t += g, r += (l + d) * g, n += (u + f) * g; + } + return t === 0 ? [e[0] || 0, e[1] || 0] : [r / t / 3, n / t / 3, t]; +} +function Pot(e, t, r, n) { + for (var i = (e.length - 2) / 6, a = 1 / 0, o = 0, l = e.length, u = l - 2, d = 0; d < i; d++) { + for (var f = d * 6, g = 0, v = 0; v < l; v += 2) { + var y = v === 0 ? f : (f + v - 2) % u + 2, C = e[y] - r[0], A = e[y + 1] - r[1], S = t[v] - n[0], _ = t[v + 1] - n[1], E = S - C, I = _ - A; + g += E * E + I * I; + } + g < a && (a = g, o = d); + } + return o; +} +function Not(e) { + for (var t = [], r = e.length, n = 0; n < r; n += 2) + t[n] = e[r - n - 2], t[n + 1] = e[r - n - 1]; + return t; +} +function Lot(e, t, r, n) { + for (var i = [], a, o = 0; o < e.length; o++) { + var l = e[o], u = t[o], d = Xce(l), f = Xce(u); + a == null && (a = d[2] < 0 != f[2] < 0); + var g = [], v = [], y = 0, C = 1 / 0, A = [], S = l.length; + a && (l = Not(l)); + for (var _ = Pot(l, u, d, f) * 6, E = S - 2, I = 0; I < E; I += 2) { + var w = (_ + I) % E + 2; + g[I + 2] = l[w] - d[0], g[I + 3] = l[w + 1] - d[1]; + } + if (g[0] = l[_] - d[0], g[1] = l[_ + 1] - d[1], r > 0) + for (var x = n / r, b = -n / 2; b <= n / 2; b += x) { + for (var R = Math.sin(b), M = Math.cos(b), O = 0, I = 0; I < l.length; I += 2) { + var P = g[I], B = g[I + 1], H = u[I] - f[0], Y = u[I + 1] - f[1], X = H * M - Y * R, ee = H * R + Y * M; + A[I] = X, A[I + 1] = ee; + var ae = X - P, J = ee - B; + O += ae * ae + J * J; + } + if (O < C) { + C = O, y = b; + for (var ne = 0; ne < A.length; ne++) + v[ne] = A[ne]; + } + } + else + for (var fe = 0; fe < S; fe += 2) + v[fe] = u[fe] - f[0], v[fe + 1] = u[fe + 1] - f[1]; + i.push({ + from: g, + to: v, + fromCp: d, + toCp: f, + rotation: -y + }); + } + return i; +} +function s2(e) { + return e.__isCombineMorphing; +} +var aEe = "__mOriginal_"; +function l2(e, t, r) { + var n = aEe + t, i = e[n] || e[t]; + e[n] || (e[n] = e[t]); + var a = r.replace, o = r.after, l = r.before; + e[t] = function() { + var u = arguments, d; + return l && l.apply(this, u), a ? d = a.apply(this, u) : d = i.apply(this, u), o && o.apply(this, u), d; + }; +} +function j1(e, t) { + var r = aEe + t; + e[r] && (e[t] = e[r], e[r] = null); +} +function Kce(e, t) { + for (var r = 0; r < e.length; r++) + for (var n = e[r], i = 0; i < n.length; ) { + var a = n[i], o = n[i + 1]; + n[i++] = t[0] * a + t[2] * o + t[4], n[i++] = t[1] * a + t[3] * o + t[5]; + } +} +function oEe(e, t) { + var r = e.getUpdatedPathProxy(), n = t.getUpdatedPathProxy(), i = kot(oG(r), oG(n)), a = i[0], o = i[1], l = e.getComputedTransform(), u = t.getComputedTransform(); + function d() { + this.transform = null; + } + l && Kce(a, l), u && Kce(o, u), l2(t, "updateTransform", { replace: d }), t.transform = null; + var f = Lot(a, o, 10, Math.PI), g = []; + l2(t, "buildPath", { replace: function(v) { + for (var y = t.__morphT, C = 1 - y, A = [], S = 0; S < f.length; S++) { + var _ = f[S], E = _.from, I = _.to, w = _.rotation * y, x = _.fromCp, b = _.toCp, R = Math.sin(w), M = Math.cos(w); + I1(A, x, b, y); + for (var O = 0; O < E.length; O += 2) { + var P = E[O], B = E[O + 1], H = I[O], Y = I[O + 1], X = P * C + H * y, ee = B * C + Y * y; + g[O] = X * M - ee * R + A[0], g[O + 1] = X * R + ee * M + A[1]; + } + var ae = g[0], J = g[1]; + v.moveTo(ae, J); + for (var O = 2; O < E.length; ) { + var H = g[O++], Y = g[O++], ne = g[O++], fe = g[O++], de = g[O++], Te = g[O++]; + ae === H && J === Y && ne === de && fe === Te ? v.lineTo(de, Te) : v.bezierCurveTo(H, Y, ne, fe, de, Te), ae = de, J = Te; + } + } + } }); +} +function xY(e, t, r) { + if (!e || !t) + return t; + var n = r.done, i = r.during; + oEe(e, t), t.__morphT = 0; + function a() { + j1(t, "buildPath"), j1(t, "updateTransform"), t.__morphT = -1, t.createPathProxy(), t.dirtyShape(); + } + return t.animateTo({ + __morphT: 1 + }, Jr({ + during: function(o) { + t.dirtyShape(), i && i(o); + }, + done: function() { + a(), n && n(); + } + }, r)), t; +} +function Fot(e, t, r, n, i, a) { + var o = 16; + e = i === r ? 0 : Math.round(32767 * (e - r) / (i - r)), t = a === n ? 0 : Math.round(32767 * (t - n) / (a - n)); + for (var l = 0, u, d = (1 << o) / 2; d > 0; d /= 2) { + var f = 0, g = 0; + (e & d) > 0 && (f = 1), (t & d) > 0 && (g = 1), l += d * d * (3 * f ^ g), g === 0 && (f === 1 && (e = d - 1 - e, t = d - 1 - t), u = e, e = t, t = u); + } + return l; +} +function c2(e) { + var t = 1 / 0, r = 1 / 0, n = -1 / 0, i = -1 / 0, a = er(e, function(l) { + var u = l.getBoundingRect(), d = l.getComputedTransform(), f = u.x + u.width / 2 + (d ? d[4] : 0), g = u.y + u.height / 2 + (d ? d[5] : 0); + return t = Math.min(f, t), r = Math.min(g, r), n = Math.max(f, n), i = Math.max(g, i), [f, g]; + }), o = er(a, function(l, u) { + return { + cp: l, + z: Fot(l[0], l[1], t, r, n, i), + path: e[u] + }; + }); + return o.sort(function(l, u) { + return l.z - u.z; + }).map(function(l) { + return l.path; + }); +} +function sEe(e) { + return Oot(e.path, e.count); +} +function lG() { + return { + fromIndividuals: [], + toIndividuals: [], + count: 0 + }; +} +function Bot(e, t, r) { + var n = []; + function i(x) { + for (var b = 0; b < x.length; b++) { + var R = x[b]; + s2(R) ? i(R.childrenRef()) : R instanceof Ei && n.push(R); + } + } + i(e); + var a = n.length; + if (!a) + return lG(); + var o = r.dividePath || sEe, l = o({ + path: t, + count: a + }); + if (l.length !== a) + return console.error("Invalid morphing: unmatched splitted path"), lG(); + n = c2(n), l = c2(l); + for (var u = r.done, d = r.during, f = r.individualDelay, g = new Pm(), v = 0; v < a; v++) { + var y = n[v], C = l[v]; + C.parent = t, C.copyTransform(g), f || oEe(y, C); + } + t.__isCombineMorphing = !0, t.childrenRef = function() { + return l; + }; + function A(x) { + for (var b = 0; b < l.length; b++) + l[b].addSelfToZr(x); + } + l2(t, "addSelfToZr", { + after: function(x) { + A(x); + } + }), l2(t, "removeSelfFromZr", { + after: function(x) { + for (var b = 0; b < l.length; b++) + l[b].removeSelfFromZr(x); + } + }); + function S() { + t.__isCombineMorphing = !1, t.__morphT = -1, t.childrenRef = null, j1(t, "addSelfToZr"), j1(t, "removeSelfFromZr"); + } + var _ = l.length; + if (f) + for (var E = _, I = function() { + E--, E === 0 && (S(), u && u()); + }, v = 0; v < _; v++) { + var w = f ? Jr({ + delay: (r.delay || 0) + f(v, _, n[v], l[v]), + done: I + }, r) : r; + xY(n[v], l[v], w); + } + else + t.__morphT = 0, t.animateTo({ + __morphT: 1 + }, Jr({ + during: function(x) { + for (var b = 0; b < _; b++) { + var R = l[b]; + R.__morphT = t.__morphT, R.dirtyShape(); + } + d && d(x); + }, + done: function() { + S(); + for (var x = 0; x < e.length; x++) + j1(e[x], "updateTransform"); + u && u(); + } + }, r)); + return t.__zr && A(t.__zr), { + fromIndividuals: n, + toIndividuals: l, + count: _ + }; +} +function Uot(e, t, r) { + var n = t.length, i = [], a = r.dividePath || sEe; + function o(y) { + for (var C = 0; C < y.length; C++) { + var A = y[C]; + s2(A) ? o(A.childrenRef()) : A instanceof Ei && i.push(A); + } + } + if (s2(e)) { + o(e.childrenRef()); + var l = i.length; + if (l < n) + for (var u = 0, d = l; d < n; d++) + i.push(A8(i[u++ % l])); + i.length = n; + } else { + i = a({ path: e, count: n }); + for (var f = e.getComputedTransform(), d = 0; d < i.length; d++) + i[d].setLocalTransform(f); + if (i.length !== n) + return console.error("Invalid morphing: unmatched splitted path"), lG(); + } + i = c2(i), t = c2(t); + for (var g = r.individualDelay, d = 0; d < n; d++) { + var v = g ? Jr({ + delay: (r.delay || 0) + g(d, n, i[d], t[d]) + }, r) : r; + xY(i[d], t[d], v); + } + return { + fromIndividuals: i, + toIndividuals: t, + count: t.length + }; +} +function Zce(e) { + return qt(e[0]); +} +function qce(e, t) { + for (var r = [], n = e.length, i = 0; i < n; i++) + r.push({ + one: e[i], + many: [] + }); + for (var i = 0; i < t.length; i++) { + var a = t[i].length, o = void 0; + for (o = 0; o < a; o++) + r[o % n].many.push(t[i][o]); + } + for (var l = 0, i = n - 1; i >= 0; i--) + if (!r[i].many.length) { + var u = r[l].many; + if (u.length <= 1) + if (l) + l = 0; + else + return r; + var a = u.length, d = Math.ceil(a / 2); + r[i].many = u.slice(d, a), r[l].many = u.slice(0, d), l++; + } + return r; +} +var jot = { + clone: function(e) { + for (var t = [], r = 1 - Math.pow(1 - e.path.style.opacity, 1 / e.count), n = 0; n < e.count; n++) { + var i = A8(e.path); + i.setStyle("opacity", r), t.push(i); + } + return t; + }, + // Use the default divider + split: null +}; +function j3(e, t, r, n, i, a) { + if (!e.length || !t.length) + return; + var o = pI("update", n, i); + if (!(o && o.duration > 0)) + return; + var l = n.getModel("universalTransition").get("delay"), u = Object.assign({ + // Need to setToFinal so the further calculation based on the style can be correct. + // Like emphasis color. + setToFinal: !0 + }, o), d, f; + Zce(e) && (d = e, f = t), Zce(t) && (d = t, f = e); + function g(_, E, I, w, x) { + var b = _.many, R = _.one; + if (b.length === 1 && !x) { + var M = E ? b[0] : R, O = E ? R : b[0]; + if (s2(M)) + g({ + many: [M], + one: O + }, !0, I, w, !0); + else { + var P = l ? Jr({ + delay: l(I, w) + }, u) : u; + xY(M, O, P), a(M, O, M, O, P); + } + } else + for (var B = Jr({ + dividePath: jot[r], + individualDelay: l && function(J, ne, fe, de) { + return l(J + I, w); + } + }, u), H = E ? Bot(b, R, B) : Uot(R, b, B), Y = H.fromIndividuals, X = H.toIndividuals, ee = Y.length, ae = 0; ae < ee; ae++) { + var P = l ? Jr({ + delay: l(ae, ee) + }, u) : u; + a(Y[ae], X[ae], E ? b[ae] : _.one, E ? _.one : b[ae], P); + } + } + for (var v = d ? d === e : e.length > t.length, y = d ? qce(f, d) : qce(v ? t : e, [v ? e : t]), C = 0, A = 0; A < y.length; A++) + C += y[A].many.length; + for (var S = 0, A = 0; A < y.length; A++) + g(y[A], v, S, C), S += y[A].many.length; +} +function _b(e) { + if (!e) + return []; + if (qt(e)) { + for (var t = [], r = 0; r < e.length; r++) + t.push(_b(e[r])); + return t; + } + var n = []; + return e.traverse(function(i) { + i instanceof Ei && !i.disableMorphing && !i.invisible && !i.ignore && n.push(i); + }), n; +} +var lEe = 1e4, $ot = 0, Jce = 1, Qce = 2, Vot = ea(); +function zot(e, t) { + for (var r = e.dimensions, n = 0; n < r.length; n++) { + var i = e.getDimensionInfo(r[n]); + if (i && i.otherDims[t] === 0) + return r[n]; + } +} +function Hot(e, t, r) { + var n = e.getDimensionInfo(r), i = n && n.ordinalMeta; + if (n) { + var a = e.get(n.name, t); + return i && i.categories[a] || a + ""; + } +} +function eue(e, t, r, n) { + var i = n ? "itemChildGroupId" : "itemGroupId", a = zot(e, i); + if (a) { + var o = Hot(e, t, a); + return o; + } + var l = e.getRawDataItem(t), u = n ? "childGroupId" : "groupId"; + if (l && l[u]) + return l[u] + ""; + if (!n) + return r || e.getId(t); +} +function tue(e) { + var t = []; + return Ee(e, function(r) { + var n = r.data, i = r.dataGroupId; + if (!(n.count() > lEe)) + for (var a = n.getIndices(), o = 0; o < a.length; o++) + t.push({ + data: n, + groupId: eue(n, o, i, !1), + childGroupId: eue(n, o, i, !0), + divide: r.divide, + dataIndex: o + }); + }), t; +} +function $3(e, t, r) { + e.traverse(function(n) { + n instanceof Ei && Po(n, { + style: { + opacity: 0 + } + }, t, { + dataIndex: r, + isFrom: !0 + }); + }); +} +function V3(e) { + if (e.parent) { + var t = e.getComputedTransform(); + e.setLocalTransform(t), e.parent.remove(e); + } +} +function UT(e) { + e.stopAnimation(), e.isGroup && e.traverse(function(t) { + t.stopAnimation(); + }); +} +function Wot(e, t, r) { + var n = pI("update", r, t); + n && e.traverse(function(i) { + if (i instanceof Tf) { + var a = P4e(i); + a && i.animateFrom({ + style: a + }, n); + } + }); +} +function Got(e, t) { + var r = e.length; + if (r !== t.length) + return !1; + for (var n = 0; n < r; n++) { + var i = e[n], a = t[n]; + if (i.data.getId(i.dataIndex) !== a.data.getId(a.dataIndex)) + return !1; + } + return !0; +} +function cEe(e, t, r) { + var n = tue(e), i = tue(t); + function a(I, w, x, b, R) { + (x || I) && w.animateFrom({ + style: x && x !== I ? $t($t({}, x.style), I.style) : I.style + }, R); + } + var o = !1, l = $ot, u = $r(), d = $r(); + n.forEach(function(I) { + I.groupId && u.set(I.groupId, !0), I.childGroupId && d.set(I.childGroupId, !0); + }); + for (var f = 0; f < i.length; f++) { + var g = i[f].groupId; + if (d.get(g)) { + l = Jce; + break; + } + var v = i[f].childGroupId; + if (v && u.get(v)) { + l = Qce; + break; + } + } + function y(I, w) { + return function(x) { + var b = x.data, R = x.dataIndex; + return w ? b.getId(R) : I ? l === Jce ? x.childGroupId : x.groupId : l === Qce ? x.childGroupId : x.groupId; + }; + } + var C = Got(n, i), A = {}; + if (!C) + for (var f = 0; f < i.length; f++) { + var S = i[f], _ = S.data.getItemGraphicEl(S.dataIndex); + _ && (A[_.id] = !0); + } + function E(I, w) { + var x = n[w], b = i[I], R = b.data.hostModel, M = x.data.getItemGraphicEl(x.dataIndex), O = b.data.getItemGraphicEl(b.dataIndex); + if (M === O) { + O && Wot(O, b.dataIndex, R); + return; + } + // We can't use the elements that already being morphed + M && A[M.id] || O && (UT(O), M ? (UT(M), V3(M), o = !0, j3(_b(M), _b(O), b.divide, R, I, a)) : $3(O, R, I)); + } + new Gm(n, i, y(!0, C), y(!1, C), null, "multiple").update(E).updateManyToOne(function(I, w) { + var x = i[I], b = x.data, R = b.hostModel, M = b.getItemGraphicEl(x.dataIndex), O = Ma(er(w, function(P) { + return n[P].data.getItemGraphicEl(n[P].dataIndex); + }), function(P) { + return P && P !== M && !A[P.id]; + }); + M && (UT(M), O.length ? (Ee(O, function(P) { + UT(P), V3(P); + }), o = !0, j3(_b(O), _b(M), x.divide, R, I, a)) : $3(M, R, x.dataIndex)); + }).updateOneToMany(function(I, w) { + var x = n[w], b = x.data.getItemGraphicEl(x.dataIndex); + if (!(b && A[b.id])) { + var R = Ma(er(I, function(O) { + return i[O].data.getItemGraphicEl(i[O].dataIndex); + }), function(O) { + return O && O !== b; + }), M = i[I[0]].data.hostModel; + R.length && (Ee(R, function(O) { + return UT(O); + }), b ? (UT(b), V3(b), o = !0, j3( + _b(b), + _b(R), + x.divide, + // Use divide on old. + M, + I[0], + a + )) : Ee(R, function(O) { + return $3(O, M, I[0]); + })); + } + }).updateManyToMany(function(I, w) { + new Gm(w, I, function(x) { + return n[x].data.getId(n[x].dataIndex); + }, function(x) { + return i[x].data.getId(i[x].dataIndex); + }).update(function(x, b) { + E(I[x], w[b]); + }).execute(); + }).execute(), o && Ee(t, function(I) { + var w = I.data, x = w.hostModel, b = x && r.getViewOfSeriesModel(x), R = pI("update", x, 0); + b && x.isAnimationEnabled() && R && R.duration > 0 && b.group.traverse(function(M) { + M instanceof Ei && !M.animators.length && M.animateFrom({ + style: { + opacity: 0 + } + }, R); + }); + }); +} +function rue(e) { + var t = e.getModel("universalTransition").get("seriesKey"); + return t || e.id; +} +function nue(e) { + return qt(e) ? e.sort().join(",") : e; +} +function W_(e) { + if (e.hostModel) + return e.hostModel.getModel("universalTransition").get("divideShape"); +} +function Yot(e, t) { + var r = $r(), n = $r(), i = $r(); + return Ee(e.oldSeries, function(a, o) { + var l = e.oldDataGroupIds[o], u = e.oldData[o], d = rue(a), f = nue(d); + n.set(f, { + dataGroupId: l, + data: u + }), qt(d) && Ee(d, function(g) { + i.set(g, { + key: f, + dataGroupId: l, + data: u + }); + }); + }), Ee(t.updatedSeries, function(a) { + if (a.isUniversalTransitionEnabled() && a.isAnimationEnabled()) { + var o = a.get("dataGroupId"), l = a.getData(), u = rue(a), d = nue(u), f = n.get(d); + if (f) + r.set(d, { + oldSeries: [{ + dataGroupId: f.dataGroupId, + divide: W_(f.data), + data: f.data + }], + newSeries: [{ + dataGroupId: o, + divide: W_(l), + data: l + }] + }); + else if (qt(u)) { + var g = []; + Ee(u, function(C) { + var A = n.get(C); + A.data && g.push({ + dataGroupId: A.dataGroupId, + divide: W_(A.data), + data: A.data + }); + }), g.length && r.set(d, { + oldSeries: g, + newSeries: [{ + dataGroupId: o, + data: l, + divide: W_(l) + }] + }); + } else { + var v = i.get(u); + if (v) { + var y = r.get(v.key); + y || (y = { + oldSeries: [{ + dataGroupId: v.dataGroupId, + data: v.data, + divide: W_(v.data) + }], + newSeries: [] + }, r.set(v.key, y)), y.newSeries.push({ + dataGroupId: o, + data: l, + divide: W_(l) + }); + } + } + } + }), r; +} +function iue(e, t) { + for (var r = 0; r < e.length; r++) { + var n = t.seriesIndex != null && t.seriesIndex === e[r].seriesIndex || t.seriesId != null && t.seriesId === e[r].id; + if (n) + return r; + } +} +function Xot(e, t, r, n) { + var i = [], a = []; + Ee(qa(e.from), function(o) { + var l = iue(t.oldSeries, o); + l >= 0 && i.push({ + dataGroupId: t.oldDataGroupIds[l], + data: t.oldData[l], + // TODO can specify divideShape in transition. + divide: W_(t.oldData[l]), + groupIdDim: o.dimension + }); + }), Ee(qa(e.to), function(o) { + var l = iue(r.updatedSeries, o); + if (l >= 0) { + var u = r.updatedSeries[l].getData(); + a.push({ + dataGroupId: t.oldDataGroupIds[l], + data: u, + divide: W_(u), + groupIdDim: o.dimension + }); + } + }), i.length > 0 && a.length > 0 && cEe(i, a, n); +} +function Kot(e) { + e.registerUpdateLifecycle("series:beforeupdate", function(t, r, n) { + Ee(qa(n.seriesTransition), function(i) { + Ee(qa(i.to), function(a) { + for (var o = n.updatedSeries, l = 0; l < o.length; l++) + (a.seriesIndex != null && a.seriesIndex === o[l].seriesIndex || a.seriesId != null && a.seriesId === o[l].id) && (o[l][DN] = !0); + }); + }); + }), e.registerUpdateLifecycle("series:transition", function(t, r, n) { + var i = Vot(r); + if (i.oldSeries && n.updatedSeries && n.optionChanged) { + var a = n.seriesTransition; + if (a) + Ee(qa(a), function(y) { + Xot(y, i, n, r); + }); + else { + var o = Yot(i, n); + Ee(o.keys(), function(y) { + var C = o.get(y); + cEe(C.oldSeries, C.newSeries, r); + }); + } + Ee(n.updatedSeries, function(y) { + y[DN] && (y[DN] = !1); + }); + } + for (var l = t.getSeries(), u = i.oldSeries = [], d = i.oldDataGroupIds = [], f = i.oldData = [], g = 0; g < l.length; g++) { + var v = l[g].getData(); + v.count() < lEe && (u.push(l[g]), d.push(l[g].get("dataGroupId")), f.push(v)); + } + }); +} +ii([E0e]); +ii([n9e]); +ii([k9e, q9e, uYe, qYe, p7e, lXe, UXe, wKe, QKe, lZe, _Ze, Cqe, Zqe, cJe, RJe, LJe, eQe, uQe, CQe, OQe, HQe, Oet]); +ii(ett); +ii(Ptt); +ii(nSe); +ii(qtt); +ii(zSe); +ii(irt); +ii(frt); +ii(pnt); +ii(Fnt); +ii(LD); +ii(nit); +ii(oit); +ii(bit); +ii(Oit); +ii(Uit); +ii(Yit); +ii(sat); +ii(Rat); +ii(Xbe); +ii(Kbe); +ii(rot); +ii(eEe); +ii(tEe); +ii(sot); +ii(Sot); +ii(nEe); +ii(Kot); +ii(o0e); +const Zot = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Axis: Ed, + ChartView: Ya, + ComponentModel: Mi, + ComponentView: Co, + List: Ql, + Model: Wa, + PRIORITY: i9, + SeriesModel: fo, + color: sve, + connect: i_e, + dataTool: h_e, + dependencies: Yye, + disConnect: a_e, + disconnect: l9, + dispose: o_e, + env: Yi, + extendChartView: C9, + extendComponentModel: J_e, + extendComponentView: Q_e, + extendSeriesModel: E9, + format: H_e, + getCoordinateSystemDimensions: l_e, + getInstanceByDom: CD, + getInstanceById: s_e, + getMap: u_e, + graphic: z_e, + helper: F_e, + init: s9, + innerDrawElementOnCanvas: VF, + matrix: Gge, + number: $_e, + parseGeoJSON: TR, + parseGeoJson: TR, + registerAction: kf, + registerCoordinateSystem: h9, + registerLayout: GF, + registerLoading: YF, + registerLocale: kF, + registerMap: f9, + registerPostInit: c9, + registerPostUpdate: u9, + registerPreprocessor: TD, + registerProcessor: WF, + registerTheme: HF, + registerTransform: p9, + registerUpdateLifecycle: wD, + registerVisual: iy, + setCanvasCreator: c_e, + setPlatformAPI: t8, + throttle: gE, + time: V_e, + use: ii, + util: W_e, + vector: zge, + version: r9, + zrUtil: jge, + zrender: Tve +}, Symbol.toStringTag, { value: "Module" })); +ii([E0e, nEe]); +const qot = { + init: function() { + return s9.apply(null, arguments); + } +}; +ii(o0e); +const Jot = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + Axis: Ed, + ChartView: Ya, + ComponentModel: Mi, + ComponentView: Co, + List: Ql, + Model: Wa, + PRIORITY: i9, + SeriesModel: fo, + color: sve, + connect: i_e, + dataTool: h_e, + default: qot, + dependencies: Yye, + disConnect: a_e, + disconnect: l9, + dispose: o_e, + env: Yi, + extendChartView: C9, + extendComponentModel: J_e, + extendComponentView: Q_e, + extendSeriesModel: E9, + format: H_e, + getCoordinateSystemDimensions: l_e, + getInstanceByDom: CD, + getInstanceById: s_e, + getMap: u_e, + graphic: z_e, + helper: F_e, + init: s9, + innerDrawElementOnCanvas: VF, + matrix: Gge, + number: $_e, + parseGeoJSON: TR, + parseGeoJson: TR, + registerAction: kf, + registerCoordinateSystem: h9, + registerLayout: GF, + registerLoading: YF, + registerLocale: kF, + registerMap: f9, + registerPostInit: c9, + registerPostUpdate: u9, + registerPreprocessor: TD, + registerProcessor: WF, + registerTheme: HF, + registerTransform: p9, + registerUpdateLifecycle: wD, + registerVisual: iy, + setCanvasCreator: c_e, + setPlatformAPI: t8, + throttle: gE, + time: V_e, + use: ii, + util: W_e, + vector: zge, + version: r9, + zrUtil: jge, + zrender: Tve +}, Symbol.toStringTag, { value: "Module" })); +E9({ + type: "series.wordCloud", + visualStyleAccessPath: "textStyle", + visualStyleMapper: function(e) { + return { + fill: e.get("color") + }; + }, + visualDrawType: "fill", + optionUpdated: function() { + var e = this.option; + e.gridSize = Math.max(Math.floor(e.gridSize), 4); + }, + getInitialData: function(e, t) { + var r = m_e(e.data, { + coordDimensions: ["value"] + }), n = new Ql(r, this); + return n.initData(e.data), n; + }, + // Most of options are from https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md + defaultOption: { + maskImage: null, + // Shape can be 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' + shape: "circle", + keepAspect: !1, + left: "center", + top: "center", + width: "70%", + height: "80%", + sizeRange: [12, 60], + rotationRange: [-90, 90], + rotationStep: 45, + gridSize: 8, + drawOutOfBound: !1, + shrinkToFit: !1, + textStyle: { + fontWeight: "normal" + } + } +}); +C9({ + type: "wordCloud", + render: function(e, t, r) { + var n = this.group; + n.removeAll(); + var i = e.getData(), a = e.get("gridSize"); + e.layoutInstance.ondraw = function(o, l, u, d) { + var f = i.getItemModel(u), g = f.getModel("textStyle"), v = new Hi({ + style: MN(g), + scaleX: 1 / d.info.mu, + scaleY: 1 / d.info.mu, + x: (d.gx + d.info.gw / 2) * a, + y: (d.gy + d.info.gh / 2) * a, + rotation: d.rot + }); + v.setStyle({ + x: d.info.fillTextOffsetX, + y: d.info.fillTextOffsetY + l * 0.5, + text: o, + verticalAlign: "middle", + fill: i.getItemVisual(u, "style").fill, + fontSize: l + }), n.add(v), i.setItemGraphicEl(u, v), v.ensureState("emphasis").style = MN( + f.getModel(["emphasis", "textStyle"]), + { + state: "emphasis" + } + ), v.ensureState("blur").style = MN( + f.getModel(["blur", "textStyle"]), + { + state: "blur" + } + ), Lm( + v, + f.get(["emphasis", "focus"]), + f.get(["emphasis", "blurScope"]) + ), v.stateTransition = { + duration: e.get("animation") ? e.get(["stateAnimation", "duration"]) : 0, + easing: e.get(["stateAnimation", "easing"]) + }, v.__highDownDispatcher = !0; + }, this._model = e; + }, + remove: function() { + this.group.removeAll(), this._model.layoutInstance.dispose(); + }, + dispose: function() { + this._model.layoutInstance.dispose(); + } +}); +/*! + * wordcloud2.js + * http://timdream.org/wordcloud2.js/ + * + * Copyright 2011 - 2019 Tim Guan-tin Chien and contributors. + * Released under the MIT license + */ +window.setImmediate || (window.setImmediate = function() { + return window.msSetImmediate || window.webkitSetImmediate || window.mozSetImmediate || window.oSetImmediate || function() { + if (!window.postMessage || !window.addEventListener) + return null; + var r = [void 0], n = "zero-timeout-message", i = function(o) { + var l = r.length; + return r.push(o), window.postMessage(n + l.toString(36), "*"), l; + }; + return window.addEventListener( + "message", + function(o) { + if (!(typeof o.data != "string" || o.data.substr(0, n.length) !== n)) { + o.stopImmediatePropagation(); + var l = parseInt(o.data.substr(n.length), 36); + r[l] && (r[l](), r[l] = void 0); + } + }, + !0 + ), window.clearImmediate = function(o) { + r[o] && (r[o] = void 0); + }, i; + }() || // fallback + function(r) { + window.setTimeout(r, 0); + }; +}()); +window.clearImmediate || (window.clearImmediate = function() { + return window.msClearImmediate || window.webkitClearImmediate || window.mozClearImmediate || window.oClearImmediate || // "clearZeroTimeout" is implement on the previous block || + // fallback + function(r) { + window.clearTimeout(r); + }; +}()); +var AY = function() { + var t = document.createElement("canvas"); + if (!t || !t.getContext) + return !1; + var r = t.getContext("2d"); + return !(!r || !r.getImageData || !r.fillText || !Array.prototype.some || !Array.prototype.push); +}(), cG = function() { + if (AY) { + for (var t = document.createElement("canvas").getContext("2d"), r = 20, n, i; r; ) { + if (t.font = r.toString(10) + "px sans-serif", t.measureText("W").width === n && t.measureText("m").width === i) + return r + 1; + n = t.measureText("W").width, i = t.measureText("m").width, r--; + } + return 0; + } +}(), Qot = function(e) { + if (Array.isArray(e)) { + var t = e.slice(); + return t.splice(0, 2), t; + } else + return []; +}, est = function(t) { + for (var r, n, i = t.length; i; ) + r = Math.floor(Math.random() * i), n = t[--i], t[i] = t[r], t[r] = n; + return t; +}, jT = {}, aB = function(t, r) { + if (!AY) + return; + var n = Math.floor(Math.random() * Date.now()); + Array.isArray(t) || (t = [t]), t.forEach(function(pe, Be) { + if (typeof pe == "string") { + if (t[Be] = document.getElementById(pe), !t[Be]) + throw new Error("The element id specified is not found."); + } else if (!pe.tagName && !pe.appendChild) + throw new Error( + "You must pass valid HTML elements, or ID of the element." + ); + }); + var i = { + list: [], + fontFamily: '"Trebuchet MS", "Heiti TC", "微軟正黑體", "Arial Unicode MS", "Droid Fallback Sans", sans-serif', + fontWeight: "normal", + color: "random-dark", + minSize: 0, + // 0 to disable + weightFactor: 1, + clearCanvas: !0, + backgroundColor: "#fff", + // opaque white = rgba(255, 255, 255, 1) + gridSize: 8, + drawOutOfBound: !1, + shrinkToFit: !1, + origin: null, + drawMask: !1, + maskColor: "rgba(255,0,0,0.3)", + maskGapWidth: 0.3, + layoutAnimation: !0, + wait: 0, + abortThreshold: 0, + // disabled + abort: function() { + }, + minRotation: -Math.PI / 2, + maxRotation: Math.PI / 2, + rotationStep: 0.1, + shuffle: !0, + rotateRatio: 0.1, + shape: "circle", + ellipticity: 0.65, + classes: null, + hover: null, + click: null + }; + if (r) + for (var a in r) + a in i && (i[a] = r[a]); + if (typeof i.weightFactor != "function") { + var o = i.weightFactor; + i.weightFactor = function(Be) { + return Be * o; + }; + } + if (typeof i.shape != "function") + switch (i.shape) { + case "circle": + default: + i.shape = "circle"; + break; + case "cardioid": + i.shape = function(Be) { + return 1 - Math.sin(Be); + }; + break; + case "diamond": + i.shape = function(Be) { + var Ue = Be % (2 * Math.PI / 4); + return 1 / (Math.cos(Ue) + Math.sin(Ue)); + }; + break; + case "square": + i.shape = function(Be) { + return Math.min( + 1 / Math.abs(Math.cos(Be)), + 1 / Math.abs(Math.sin(Be)) + ); + }; + break; + case "triangle-forward": + i.shape = function(Be) { + var Ue = Be % (2 * Math.PI / 3); + return 1 / (Math.cos(Ue) + Math.sqrt(3) * Math.sin(Ue)); + }; + break; + case "triangle": + case "triangle-upright": + i.shape = function(Be) { + var Ue = (Be + Math.PI * 3 / 2) % (2 * Math.PI / 3); + return 1 / (Math.cos(Ue) + Math.sqrt(3) * Math.sin(Ue)); + }; + break; + case "pentagon": + i.shape = function(Be) { + var Ue = (Be + 0.955) % (2 * Math.PI / 5); + return 1 / (Math.cos(Ue) + 0.726543 * Math.sin(Ue)); + }; + break; + case "star": + i.shape = function(Be) { + var Ue = (Be + 0.955) % (2 * Math.PI / 10); + return (Be + 0.955) % (2 * Math.PI / 5) - 2 * Math.PI / 10 >= 0 ? 1 / (Math.cos(2 * Math.PI / 10 - Ue) + 3.07768 * Math.sin(2 * Math.PI / 10 - Ue)) : 1 / (Math.cos(Ue) + 3.07768 * Math.sin(Ue)); + }; + break; + } + i.gridSize = Math.max(Math.floor(i.gridSize), 4); + var l = i.gridSize, u = l - i.maskGapWidth, d = Math.abs(i.maxRotation - i.minRotation), f = Math.min(i.maxRotation, i.minRotation), g = i.rotationStep, v, y, C, A, S, _, E; + function I(pe, Be) { + return "hsl(" + (Math.random() * 360).toFixed() + "," + (Math.random() * 30 + 70).toFixed() + "%," + (Math.random() * (Be - pe) + pe).toFixed() + "%)"; + } + switch (i.color) { + case "random-dark": + E = function() { + return I(10, 50); + }; + break; + case "random-light": + E = function() { + return I(50, 90); + }; + break; + default: + typeof i.color == "function" && (E = i.color); + break; + } + var w; + typeof i.fontWeight == "function" && (w = i.fontWeight); + var x = null; + typeof i.classes == "function" && (x = i.classes); + var b = !1, R = [], M, O = function(Be) { + var Ue = Be.currentTarget, Qe = Ue.getBoundingClientRect(), Re, Ne; + Be.touches ? (Re = Be.touches[0].clientX, Ne = Be.touches[0].clientY) : (Re = Be.clientX, Ne = Be.clientY); + var Me = Re - Qe.left, we = Ne - Qe.top, He = Math.floor(Me * (Ue.width / Qe.width || 1) / l), Ie = Math.floor(we * (Ue.height / Qe.height || 1) / l); + return R[He] ? R[He][Ie] : null; + }, P = function(Be) { + var Ue = O(Be); + if (M !== Ue) { + if (M = Ue, !Ue) { + i.hover(void 0, void 0, Be); + return; + } + i.hover(Ue.item, Ue.dimension, Be); + } + }, B = function(Be) { + var Ue = O(Be); + Ue && (i.click(Ue.item, Ue.dimension, Be), Be.preventDefault()); + }, H = [], Y = function(Be) { + if (H[Be]) + return H[Be]; + var Ue = Be * 8, Qe = Ue, Re = []; + for (Be === 0 && Re.push([A[0], A[1], 0]); Qe--; ) { + var Ne = 1; + i.shape !== "circle" && (Ne = i.shape(Qe / Ue * 2 * Math.PI)), Re.push([ + A[0] + Be * Ne * Math.cos(-Qe / Ue * 2 * Math.PI), + A[1] + Be * Ne * Math.sin(-Qe / Ue * 2 * Math.PI) * i.ellipticity, + Qe / Ue * 2 * Math.PI + ]); + } + return H[Be] = Re, Re; + }, X = function() { + return i.abortThreshold > 0 && (/* @__PURE__ */ new Date()).getTime() - _ > i.abortThreshold; + }, ee = function() { + return i.rotateRatio === 0 || Math.random() > i.rotateRatio ? 0 : d === 0 ? f : f + Math.round(Math.random() * d / g) * g; + }, ae = function(Be, Ue, Qe, Re) { + var Ne = i.weightFactor(Ue); + if (Ne <= i.minSize) + return !1; + var Me = 1; + Ne < cG && (Me = function() { + for (var Fr = 2; Fr * Ne < cG; ) + Fr += 2; + return Fr; + }()); + var we; + w ? we = w(Be, Ue, Ne, Re) : we = i.fontWeight; + var He = document.createElement("canvas"), Ie = He.getContext("2d", { willReadFrequently: !0 }); + Ie.font = we + " " + (Ne * Me).toString(10) + "px " + i.fontFamily; + var Ae = Ie.measureText(Be).width / Me, Fe = Math.max( + Ne * Me, + Ie.measureText("m").width, + Ie.measureText("W").width + ) / Me, $e = Ae + Fe * 2, lt = Fe * 3, it = Math.ceil($e / l), nt = Math.ceil(lt / l); + $e = it * l, lt = nt * l; + var ut = -Ae / 2, rt = -Fe * 0.4, Ke = Math.ceil( + ($e * Math.abs(Math.sin(Qe)) + lt * Math.abs(Math.cos(Qe))) / l + ), ze = Math.ceil( + ($e * Math.abs(Math.cos(Qe)) + lt * Math.abs(Math.sin(Qe))) / l + ), qe = ze * l, ct = Ke * l; + He.setAttribute("width", qe), He.setAttribute("height", ct), Ie.scale(1 / Me, 1 / Me), Ie.translate(qe * Me / 2, ct * Me / 2), Ie.rotate(-Qe), Ie.font = we + " " + (Ne * Me).toString(10) + "px " + i.fontFamily, Ie.fillStyle = "#000", Ie.textBaseline = "middle", Ie.fillText( + Be, + ut * Me, + (rt + Ne * 0.5) * Me + ); + var ft = Ie.getImageData(0, 0, qe, ct).data; + if (X()) + return !1; + for (var _t = [], Nt = ze, Yt, tr, Ct, hr = [Ke / 2, ze / 2, Ke / 2, ze / 2]; Nt--; ) + for (Yt = Ke; Yt--; ) { + Ct = l; + e: + for (; Ct--; ) + for (tr = l; tr--; ) + if (ft[((Yt * l + Ct) * qe + (Nt * l + tr)) * 4 + 3]) { + _t.push([Nt, Yt]), Nt < hr[3] && (hr[3] = Nt), Nt > hr[1] && (hr[1] = Nt), Yt < hr[0] && (hr[0] = Yt), Yt > hr[2] && (hr[2] = Yt); + break e; + } + } + return { + mu: Me, + occupied: _t, + bounds: hr, + gw: ze, + gh: Ke, + fillTextOffsetX: ut, + fillTextOffsetY: rt, + fillTextWidth: Ae, + fillTextHeight: Fe, + fontSize: Ne + }; + }, J = function(Be, Ue, Qe, Re, Ne) { + for (var Me = Ne.length; Me--; ) { + var we = Be + Ne[Me][0], He = Ue + Ne[Me][1]; + if (we >= y || He >= C || we < 0 || He < 0) { + if (!i.drawOutOfBound) + return !1; + continue; + } + if (!v[we][He]) + return !1; + } + return !0; + }, ne = function(Be, Ue, Qe, Re, Ne, Me, we, He, Ie, Ae) { + var Fe = Qe.fontSize, $e; + E ? $e = E( + Re, + Ne, + Fe, + Me, + we, + Ae + ) : $e = i.color; + var lt; + w ? lt = w(Re, Ne, Fe, Ae) : lt = i.fontWeight; + var it; + x ? it = x(Re, Ne, Fe, Ae) : it = i.classes, t.forEach(function(nt) { + if (nt.getContext) { + var ut = nt.getContext("2d"), rt = Qe.mu; + ut.save(), ut.scale(1 / rt, 1 / rt), ut.font = lt + " " + (Fe * rt).toString(10) + "px " + i.fontFamily, ut.fillStyle = $e, ut.translate((Be + Qe.gw / 2) * l * rt, (Ue + Qe.gh / 2) * l * rt), He !== 0 && ut.rotate(-He), ut.textBaseline = "middle", ut.fillText( + Re, + Qe.fillTextOffsetX * rt, + (Qe.fillTextOffsetY + Fe * 0.5) * rt + ), ut.restore(); + } else { + var Ke = document.createElement("span"), ze = ""; + ze = "rotate(" + -He / Math.PI * 180 + "deg) ", Qe.mu !== 1 && (ze += "translateX(-" + Qe.fillTextWidth / 4 + "px) scale(" + 1 / Qe.mu + ")"); + var qe = { + position: "absolute", + display: "block", + font: lt + " " + Fe * Qe.mu + "px " + i.fontFamily, + left: (Be + Qe.gw / 2) * l + Qe.fillTextOffsetX + "px", + top: (Ue + Qe.gh / 2) * l + Qe.fillTextOffsetY + "px", + width: Qe.fillTextWidth + "px", + height: Qe.fillTextHeight + "px", + lineHeight: Fe + "px", + whiteSpace: "nowrap", + transform: ze, + webkitTransform: ze, + msTransform: ze, + transformOrigin: "50% 40%", + webkitTransformOrigin: "50% 40%", + msTransformOrigin: "50% 40%" + }; + $e && (qe.color = $e), Ke.textContent = Re; + for (var ct in qe) + Ke.style[ct] = qe[ct]; + if (Ie) + for (var ft in Ie) + Ke.setAttribute(ft, Ie[ft]); + it && (Ke.className += it), nt.appendChild(Ke); + } + }); + }, fe = function(Be, Ue, Qe, Re, Ne) { + if (!(Be >= y || Ue >= C || Be < 0 || Ue < 0)) { + if (v[Be][Ue] = !1, Qe) { + var Me = t[0].getContext("2d"); + Me.fillRect(Be * l, Ue * l, u, u); + } + b && (R[Be][Ue] = { item: Ne, dimension: Re }); + } + }, de = function(Be, Ue, Qe, Re, Ne, Me) { + var we = Ne.occupied, He = i.drawMask, Ie; + He && (Ie = t[0].getContext("2d"), Ie.save(), Ie.fillStyle = i.maskColor); + var Ae; + if (b) { + var Fe = Ne.bounds; + Ae = { + x: (Be + Fe[3]) * l, + y: (Ue + Fe[0]) * l, + w: (Fe[1] - Fe[3] + 1) * l, + h: (Fe[2] - Fe[0] + 1) * l + }; + } + for (var $e = we.length; $e--; ) { + var lt = Be + we[$e][0], it = Ue + we[$e][1]; + lt >= y || it >= C || lt < 0 || it < 0 || fe(lt, it, He, Ae, Me); + } + He && Ie.restore(); + }, Te = function pe(Be, Ue) { + if (Ue > 20) + return null; + var Qe, Re, Ne; + Array.isArray(Be) ? (Qe = Be[0], Re = Be[1]) : (Qe = Be.word, Re = Be.weight, Ne = Be.attributes); + var Me = ee(), we = Qot(Be), He = ae(Qe, Re, Me, we); + if (!He || X()) + return !1; + if (!i.drawOutOfBound && !i.shrinkToFit) { + var Ie = He.bounds; + if (Ie[1] - Ie[3] + 1 > y || Ie[2] - Ie[0] + 1 > C) + return !1; + } + for (var Ae = S + 1, Fe = function(nt) { + var ut = Math.floor(nt[0] - He.gw / 2), rt = Math.floor(nt[1] - He.gh / 2), Ke = He.gw, ze = He.gh; + return J(ut, rt, Ke, ze, He.occupied) ? (ne( + ut, + rt, + He, + Qe, + Re, + S - Ae, + nt[2], + Me, + Ne, + we + ), de(ut, rt, Ke, ze, He, Be), { + gx: ut, + gy: rt, + rot: Me, + info: He + }) : !1; + }; Ae--; ) { + var $e = Y(S - Ae); + i.shuffle && ($e = [].concat($e), est($e)); + for (var lt = 0; lt < $e.length; lt++) { + var it = Fe($e[lt]); + if (it) + return it; + } + } + return i.shrinkToFit ? (Array.isArray(Be) ? Be[1] = Be[1] * 3 / 4 : Be.weight = Be.weight * 3 / 4, pe(Be, Ue + 1)) : null; + }, be = function(Be, Ue, Qe) { + if (Ue) + return !t.some(function(Re) { + var Ne = new CustomEvent(Be, { + detail: Qe || {} + }); + return !Re.dispatchEvent(Ne); + }, this); + t.forEach(function(Re) { + var Ne = new CustomEvent(Be, { + detail: Qe || {} + }); + Re.dispatchEvent(Ne); + }, this); + }, Ve = function() { + var Be = t[0]; + if (Be.getContext) + y = Math.ceil(Be.width / l), C = Math.ceil(Be.height / l); + else { + var Ue = Be.getBoundingClientRect(); + y = Math.ceil(Ue.width / l), C = Math.ceil(Ue.height / l); + } + if (be("wordcloudstart", !0)) { + A = i.origin ? [i.origin[0] / l, i.origin[1] / l] : [y / 2, C / 2], S = Math.floor(Math.sqrt(y * y + C * C)), v = []; + var Qe, Re, Ne; + if (!Be.getContext || i.clearCanvas) + for (t.forEach(function(rt) { + if (rt.getContext) { + var Ke = rt.getContext("2d"); + Ke.fillStyle = i.backgroundColor, Ke.clearRect(0, 0, y * (l + 1), C * (l + 1)), Ke.fillRect(0, 0, y * (l + 1), C * (l + 1)); + } else + rt.textContent = "", rt.style.backgroundColor = i.backgroundColor, rt.style.position = "relative"; + }), Qe = y; Qe--; ) + for (v[Qe] = [], Re = C; Re--; ) + v[Qe][Re] = !0; + else { + var Me = document.createElement("canvas").getContext("2d"); + Me.fillStyle = i.backgroundColor, Me.fillRect(0, 0, 1, 1); + var we = Me.getImageData(0, 0, 1, 1).data, He = Be.getContext("2d").getImageData(0, 0, y * l, C * l).data; + Qe = y; + for (var Ie, Ae; Qe--; ) + for (v[Qe] = [], Re = C; Re--; ) { + Ae = l; + e: + for (; Ae--; ) + for (Ie = l; Ie--; ) + for (Ne = 4; Ne--; ) + if (He[((Re * l + Ae) * y * l + (Qe * l + Ie)) * 4 + Ne] !== we[Ne]) { + v[Qe][Re] = !1; + break e; + } + v[Qe][Re] !== !1 && (v[Qe][Re] = !0); + } + He = Me = we = void 0; + } + if (i.hover || i.click) { + for (b = !0, Qe = y + 1; Qe--; ) + R[Qe] = []; + i.hover && Be.addEventListener("mousemove", P), i.click && (Be.addEventListener("click", B), Be.addEventListener("touchstart", B), Be.addEventListener("touchend", function(rt) { + rt.preventDefault(); + }), Be.style.webkitTapHighlightColor = "rgba(0, 0, 0, 0)"), Be.addEventListener("wordcloudstart", function rt() { + Be.removeEventListener("wordcloudstart", rt), Be.removeEventListener("mousemove", P), Be.removeEventListener("click", B), M = void 0; + }); + } + Ne = 0; + var Fe, $e, lt = !0; + i.layoutAnimation ? i.wait !== 0 ? (Fe = window.setTimeout, $e = window.clearTimeout) : (Fe = window.setImmediate, $e = window.clearImmediate) : (Fe = function(rt) { + rt(); + }, $e = function() { + lt = !1; + }); + var it = function(Ke, ze) { + t.forEach(function(qe) { + qe.addEventListener(Ke, ze); + }, this); + }, nt = function(Ke, ze) { + t.forEach(function(qe) { + qe.removeEventListener(Ke, ze); + }, this); + }, ut = function rt() { + nt("wordcloudstart", rt), $e(jT[n]); + }; + it("wordcloudstart", ut), jT[n] = (i.layoutAnimation ? Fe : setTimeout)( + function rt() { + if (lt) { + if (Ne >= i.list.length) { + $e(jT[n]), be("wordcloudstop", !1), nt("wordcloudstart", ut), delete jT[n]; + return; + } + _ = (/* @__PURE__ */ new Date()).getTime(); + var Ke = Te(i.list[Ne], 0), ze = !be("wordclouddrawn", !0, { + item: i.list[Ne], + drawn: Ke + }); + if (X() || ze) { + $e(jT[n]), i.abort(), be("wordcloudabort", !1), be("wordcloudstop", !1), nt("wordcloudstart", ut); + return; + } + Ne++, jT[n] = Fe(rt, i.wait); + } + }, + i.wait + ); + } + }; + Ve(); +}; +aB.isSupported = AY; +aB.minFontSize = cG; +if (!aB.isSupported) + throw new Error("Sorry your browser not support wordCloud"); +function tst(e) { + for (var t = e.getContext("2d"), r = t.getImageData(0, 0, e.width, e.height), n = t.createImageData(r), i = 0, a = 0, o = 0; o < r.data.length; o += 4) { + var l = r.data[o + 3]; + if (l > 128) { + var u = r.data[o] + r.data[o + 1] + r.data[o + 2]; + i += u, ++a; + } + } + for (var d = i / a, o = 0; o < r.data.length; o += 4) { + var u = r.data[o] + r.data[o + 1] + r.data[o + 2], l = r.data[o + 3]; + l < 128 || u > d ? (n.data[o] = 0, n.data[o + 1] = 0, n.data[o + 2] = 0, n.data[o + 3] = 0) : (n.data[o] = 255, n.data[o + 1] = 255, n.data[o + 2] = 255, n.data[o + 3] = 255); + } + t.putImageData(n, 0, 0); +} +GF(function(e, t) { + e.eachSeriesByType("wordCloud", function(r) { + var n = js( + r.getBoxLayoutParams(), + { + width: t.getWidth(), + height: t.getHeight() + } + ), i = r.get("keepAspect"), a = r.get("maskImage"), o = a ? a.width / a.height : 1; + i && rst(n, o); + var l = r.getData(), u = document.createElement("canvas"); + u.width = n.width, u.height = n.height; + var d = u.getContext("2d"); + if (a) + try { + d.drawImage(a, 0, 0, u.width, u.height), tst(u); + } catch (S) { + console.error("Invalid mask image"), console.error(S.toString()); + } + var f = r.get("sizeRange"), g = r.get("rotationRange"), v = l.getDataExtent("value"), y = Math.PI / 180, C = r.get("gridSize"); + aB(u, { + list: l.mapArray("value", function(S, _) { + var E = l.getItemModel(_); + return [ + l.getName(_), + E.get("textStyle.fontSize", !0) || Ea(S, v, f), + _ + ]; + }).sort(function(S, _) { + return _[1] - S[1]; + }), + fontFamily: r.get("textStyle.fontFamily") || r.get("emphasis.textStyle.fontFamily") || e.get("textStyle.fontFamily"), + fontWeight: r.get("textStyle.fontWeight") || r.get("emphasis.textStyle.fontWeight") || e.get("textStyle.fontWeight"), + gridSize: C, + ellipticity: n.height / n.width, + minRotation: g[0] * y, + maxRotation: g[1] * y, + clearCanvas: !a, + rotateRatio: 1, + rotationStep: r.get("rotationStep") * y, + drawOutOfBound: r.get("drawOutOfBound"), + shrinkToFit: r.get("shrinkToFit"), + layoutAnimation: r.get("layoutAnimation"), + shuffle: !1, + shape: r.get("shape") + }); + function A(S) { + var _ = S.detail.item; + S.detail.drawn && r.layoutInstance.ondraw && (S.detail.drawn.gx += n.x / C, S.detail.drawn.gy += n.y / C, r.layoutInstance.ondraw( + _[0], + _[1], + _[2], + S.detail.drawn + )); + } + u.addEventListener("wordclouddrawn", A), r.layoutInstance && r.layoutInstance.dispose(), r.layoutInstance = { + ondraw: null, + dispose: function() { + u.removeEventListener("wordclouddrawn", A), u.addEventListener("wordclouddrawn", function(S) { + S.preventDefault(); + }); + } + }; + }); +}); +TD(function(e) { + var t = (e || {}).series; + !qt(t) && (t = t ? [t] : []); + var r = ["shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]; + Ee(t, function(i) { + if (i && i.type === "wordCloud") { + var a = i.textStyle || {}; + n(a.normal), n(a.emphasis); + } + }); + function n(i) { + i && Ee(r, function(a) { + i.hasOwnProperty(a) && (i["text" + Yme(a)] = i[a]); + }); + } +}); +function rst(e, t) { + var r = e.width, n = e.height; + r > n * t ? (e.x += (r - n * t) / 2, e.width = n * t) : (e.y += (n - r / t) / 2, e.height = r / t); +} +var nst = function e(t, r) { + if (t === r) + return !0; + if (t && r && typeof t == "object" && typeof r == "object") { + if (t.constructor !== r.constructor) + return !1; + var n, i, a; + if (Array.isArray(t)) { + if (n = t.length, n != r.length) + return !1; + for (i = n; i-- !== 0; ) + if (!e(t[i], r[i])) + return !1; + return !0; + } + if (t.constructor === RegExp) + return t.source === r.source && t.flags === r.flags; + if (t.valueOf !== Object.prototype.valueOf) + return t.valueOf() === r.valueOf(); + if (t.toString !== Object.prototype.toString) + return t.toString() === r.toString(); + if (a = Object.keys(t), n = a.length, n !== Object.keys(r).length) + return !1; + for (i = n; i-- !== 0; ) + if (!Object.prototype.hasOwnProperty.call(r, a[i])) + return !1; + for (i = n; i-- !== 0; ) { + var o = a[i]; + if (!e(t[o], r[o])) + return !1; + } + return !0; + } + return t !== t && r !== r; +}; +const qA = /* @__PURE__ */ cD(nst); +var uEe = { exports: {} }; +(function(e) { + (function(t, r) { + e.exports ? e.exports = r() : t.log = r(); + })(s1, function() { + var t = function() { + }, r = "undefined", n = typeof window !== r && typeof window.navigator !== r && /Trident\/|MSIE /.test(window.navigator.userAgent), i = [ + "trace", + "debug", + "info", + "warn", + "error" + ], a = {}, o = null; + function l(A, S) { + var _ = A[S]; + if (typeof _.bind == "function") + return _.bind(A); + try { + return Function.prototype.bind.call(_, A); + } catch (E) { + return function() { + return Function.prototype.apply.apply(_, [A, arguments]); + }; + } + } + function u() { + console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace(); + } + function d(A) { + return A === "debug" && (A = "log"), typeof console === r ? !1 : A === "trace" && n ? u : console[A] !== void 0 ? l(console, A) : console.log !== void 0 ? l(console, "log") : t; + } + function f() { + for (var A = this.getLevel(), S = 0; S < i.length; S++) { + var _ = i[S]; + this[_] = S < A ? t : this.methodFactory(_, A, this.name); + } + if (this.log = this.debug, typeof console === r && A < this.levels.SILENT) + return "No console available for logging"; + } + function g(A) { + return function() { + typeof console !== r && (f.call(this), this[A].apply(this, arguments)); + }; + } + function v(A, S, _) { + return d(A) || g.apply(this, arguments); + } + function y(A, S) { + var _ = this, E, I, w, x = "loglevel"; + typeof A == "string" ? x += ":" + A : typeof A == "symbol" && (x = void 0); + function b(B) { + var H = (i[B] || "silent").toUpperCase(); + if (!(typeof window === r || !x)) { + try { + window.localStorage[x] = H; + return; + } catch (Y) { + } + try { + window.document.cookie = encodeURIComponent(x) + "=" + H + ";"; + } catch (Y) { + } + } + } + function R() { + var B; + if (!(typeof window === r || !x)) { + try { + B = window.localStorage[x]; + } catch (ee) { + } + if (typeof B === r) + try { + var H = window.document.cookie, Y = encodeURIComponent(x), X = H.indexOf(Y + "="); + X !== -1 && (B = /^([^;]+)/.exec( + H.slice(X + Y.length + 1) + )[1]); + } catch (ee) { + } + return _.levels[B] === void 0 && (B = void 0), B; + } + } + function M() { + if (!(typeof window === r || !x)) { + try { + window.localStorage.removeItem(x); + } catch (B) { + } + try { + window.document.cookie = encodeURIComponent(x) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; + } catch (B) { + } + } + } + function O(B) { + var H = B; + if (typeof H == "string" && _.levels[H.toUpperCase()] !== void 0 && (H = _.levels[H.toUpperCase()]), typeof H == "number" && H >= 0 && H <= _.levels.SILENT) + return H; + throw new TypeError("log.setLevel() called with invalid level: " + B); + } + _.name = A, _.levels = { + TRACE: 0, + DEBUG: 1, + INFO: 2, + WARN: 3, + ERROR: 4, + SILENT: 5 + }, _.methodFactory = S || v, _.getLevel = function() { + return w != null ? w : I != null ? I : E; + }, _.setLevel = function(B, H) { + return w = O(B), H !== !1 && b(w), f.call(_); + }, _.setDefaultLevel = function(B) { + I = O(B), R() || _.setLevel(B, !1); + }, _.resetLevel = function() { + w = null, M(), f.call(_); + }, _.enableAll = function(B) { + _.setLevel(_.levels.TRACE, B); + }, _.disableAll = function(B) { + _.setLevel(_.levels.SILENT, B); + }, _.rebuild = function() { + if (o !== _ && (E = O(o.getLevel())), f.call(_), o === _) + for (var B in a) + a[B].rebuild(); + }, E = O( + o ? o.getLevel() : "WARN" + ); + var P = R(); + P != null && (w = O(P)), f.call(_); + } + o = new y(), o.getLogger = function(S) { + if (typeof S != "symbol" && typeof S != "string" || S === "") + throw new TypeError("You must supply a name when creating a logger."); + var _ = a[S]; + return _ || (_ = a[S] = new y( + S, + o.methodFactory + )), _; + }; + var C = typeof window !== r ? window.log : void 0; + return o.noConflict = function() { + return typeof window !== r && window.log === o && (window.log = C), o; + }, o.getLoggers = function() { + return a; + }, o.default = o, o; + }); +})(uEe); +var ist = uEe.exports; +const hEe = /* @__PURE__ */ cD(ist); +function ast(e) { + return typeof e == "string"; +} +function z3(e) { + return typeof e == "function"; +} +class ost extends $react.PureComponent { + constructor(r) { + super(r); + /** + * echarts render container + */ + R_(this, "ele"); + /** + * echarts library entry + */ + R_(this, "echarts"); + this.echarts = r.echarts, this.ele = null; + } + componentDidMount() { + this.renderNewEcharts(); + } + // update + componentDidUpdate(r) { + const { + shouldSetOption: n + } = this.props; + if (n && z3(n) && !n(r, this.props)) + return; + if (!qA(r.theme, this.props.theme) || !qA(r.opts, this.props.opts) || !qA(r.onEvents, this.props.onEvents) || !qA(r.mode, this.props.mode)) { + this.dispose(), this.renderNewEcharts(); + return; + } + if (this.props.mode === "json") { + this.updateEChartsOption(); + return; + } + const i = ["option", "notMerge", "lazyUpdate", "showLoading", "loadingOption"]; + qA($lodash.pick(this.props, i), $lodash.pick(r, i)) || this.updateEChartsOption(); + } + componentWillUnmount() { + this.dispose(); + } + /** + * return the echart object + * 1. if exist, return the existed instance + * 2. or new one instance + */ + getEchartsInstance() { + return this.echarts.getInstanceByDom(this.ele) || this.echarts.init(this.ele, this.props.theme, this.props.opts); + } + /** + * dispose echarts and clear size-sensor + */ + dispose() { + this.ele && this.echarts.dispose(this.ele); + } + /** + * render a new echarts instance + */ + renderNewEcharts() { + const { + onEvents: r, + onChartReady: n + } = this.props, i = this.updateEChartsOption(); + this.bindEvents(i, r || {}), n && z3(n) && n(i); + } + // bind the events + bindEvents(r, n) { + function i(a, o) { + ast(a) && z3(o) && r.on(a, (l) => { + o(l, r); + }); + } + for (const a in n) + Object.prototype.hasOwnProperty.call(n, a) && i(a, n[a]); + } + /** + * render the echarts + */ + updateEChartsOption() { + const { + option: r, + notMerge: n = !1, + lazyUpdate: i = !1, + showLoading: a, + loadingOption: o = null + } = this.props, l = this.getEchartsInstance(); + try { + l.setOption(r, { + notMerge: n, + lazyUpdate: i, + silent: !0 + }); + } catch (u) { + this.dispose(), hEe.warn("invalid echarts option:", u); + } + return a ? l.showLoading(o) : l.hideLoading(), l; + } + render() { + const { + style: r, + className: n = "" + } = this.props, i = br({ + height: 300 + }, r); + return /* @__PURE__ */ dt("div", { + ref: (a) => { + this.ele = a; + }, + style: i, + className: `echarts-for-react ${n}` + }); + } +} +class sst extends ost { + constructor(t) { + super(t), this.echarts = Zot; + } +} +var lst = 20, cst = 1, _E = 1e6, aue = 1e6, ust = -7, hst = 21, dst = !1, FD = "[big.js] ", FE = FD + "Invalid ", oB = FE + "decimal places", fst = FE + "rounding mode", dEe = FD + "Division by zero", Eo = {}, ev = void 0, pst = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i; +function fEe() { + function e(t) { + var r = this; + if (!(r instanceof e)) + return t === ev ? fEe() : new e(t); + if (t instanceof e) + r.s = t.s, r.e = t.e, r.c = t.c.slice(); + else { + if (typeof t != "string") { + if (e.strict === !0 && typeof t != "bigint") + throw TypeError(FE + "value"); + t = t === 0 && 1 / t < 0 ? "-0" : String(t); + } + gst(r, t); + } + r.constructor = e; + } + return e.prototype = Eo, e.DP = lst, e.RM = cst, e.NE = ust, e.PE = hst, e.strict = dst, e.roundDown = 0, e.roundHalfUp = 1, e.roundHalfEven = 2, e.roundUp = 3, e; +} +function gst(e, t) { + var r, n, i; + if (!pst.test(t)) + throw Error(FE + "number"); + for (e.s = t.charAt(0) == "-" ? (t = t.slice(1), -1) : 1, (r = t.indexOf(".")) > -1 && (t = t.replace(".", "")), (n = t.search(/e/i)) > 0 ? (r < 0 && (r = n), r += +t.slice(n + 1), t = t.substring(0, n)) : r < 0 && (r = t.length), i = t.length, n = 0; n < i && t.charAt(n) == "0"; ) + ++n; + if (n == i) + e.c = [e.e = 0]; + else { + for (; i > 0 && t.charAt(--i) == "0"; ) + ; + for (e.e = r - n - 1, e.c = [], r = 0; n <= i; ) + e.c[r++] = +t.charAt(n++); + } + return e; +} +function BE(e, t, r, n) { + var i = e.c; + if (r === ev && (r = e.constructor.RM), r !== 0 && r !== 1 && r !== 2 && r !== 3) + throw Error(fst); + if (t < 1) + n = r === 3 && (n || !!i[0]) || t === 0 && (r === 1 && i[0] >= 5 || r === 2 && (i[0] > 5 || i[0] === 5 && (n || i[1] !== ev))), i.length = 1, n ? (e.e = e.e - t + 1, i[0] = 1) : i[0] = e.e = 0; + else if (t < i.length) { + if (n = r === 1 && i[t] >= 5 || r === 2 && (i[t] > 5 || i[t] === 5 && (n || i[t + 1] !== ev || i[t - 1] & 1)) || r === 3 && (n || !!i[0]), i.length = t, n) { + for (; ++i[--t] > 9; ) + if (i[t] = 0, t === 0) { + ++e.e, i.unshift(1); + break; + } + } + for (t = i.length; !i[--t]; ) + i.pop(); + } + return e; +} +function RI(e, t, r) { + var n = e.e, i = e.c.join(""), a = i.length; + if (t) + i = i.charAt(0) + (a > 1 ? "." + i.slice(1) : "") + (n < 0 ? "e" : "e+") + n; + else if (n < 0) { + for (; ++n; ) + i = "0" + i; + i = "0." + i; + } else if (n > 0) + if (++n > a) + for (n -= a; n--; ) + i += "0"; + else + n < a && (i = i.slice(0, n) + "." + i.slice(n)); + else + a > 1 && (i = i.charAt(0) + "." + i.slice(1)); + return e.s < 0 && r ? "-" + i : i; +} +Eo.abs = function() { + var e = new this.constructor(this); + return e.s = 1, e; +}; +Eo.cmp = function(e) { + var t, r = this, n = r.c, i = (e = new r.constructor(e)).c, a = r.s, o = e.s, l = r.e, u = e.e; + if (!n[0] || !i[0]) + return n[0] ? a : i[0] ? -o : 0; + if (a != o) + return a; + if (t = a < 0, l != u) + return l > u ^ t ? 1 : -1; + for (o = (l = n.length) < (u = i.length) ? l : u, a = -1; ++a < o; ) + if (n[a] != i[a]) + return n[a] > i[a] ^ t ? 1 : -1; + return l == u ? 0 : l > u ^ t ? 1 : -1; +}; +Eo.div = function(e) { + var t = this, r = t.constructor, n = t.c, i = (e = new r(e)).c, a = t.s == e.s ? 1 : -1, o = r.DP; + if (o !== ~~o || o < 0 || o > _E) + throw Error(oB); + if (!i[0]) + throw Error(dEe); + if (!n[0]) + return e.s = a, e.c = [e.e = 0], e; + var l, u, d, f, g, v = i.slice(), y = l = i.length, C = n.length, A = n.slice(0, l), S = A.length, _ = e, E = _.c = [], I = 0, w = o + (_.e = t.e - e.e) + 1; + for (_.s = a, a = w < 0 ? 0 : w, v.unshift(0); S++ < l; ) + A.push(0); + do { + for (d = 0; d < 10; d++) { + if (l != (S = A.length)) + f = l > S ? 1 : -1; + else + for (g = -1, f = 0; ++g < l; ) + if (i[g] != A[g]) { + f = i[g] > A[g] ? 1 : -1; + break; + } + if (f < 0) { + for (u = S == l ? i : v; S; ) { + if (A[--S] < u[S]) { + for (g = S; g && !A[--g]; ) + A[g] = 9; + --A[g], A[S] += 10; + } + A[S] -= u[S]; + } + for (; !A[0]; ) + A.shift(); + } else + break; + } + E[I++] = f ? d : ++d, A[0] && f ? A[S] = n[y] || 0 : A = [n[y]]; + } while ((y++ < C || A[0] !== ev) && a--); + return !E[0] && I != 1 && (E.shift(), _.e--, w--), I > w && BE(_, w, r.RM, A[0] !== ev), _; +}; +Eo.eq = function(e) { + return this.cmp(e) === 0; +}; +Eo.gt = function(e) { + return this.cmp(e) > 0; +}; +Eo.gte = function(e) { + return this.cmp(e) > -1; +}; +Eo.lt = function(e) { + return this.cmp(e) < 0; +}; +Eo.lte = function(e) { + return this.cmp(e) < 1; +}; +Eo.minus = Eo.sub = function(e) { + var t, r, n, i, a = this, o = a.constructor, l = a.s, u = (e = new o(e)).s; + if (l != u) + return e.s = -u, a.plus(e); + var d = a.c.slice(), f = a.e, g = e.c, v = e.e; + if (!d[0] || !g[0]) + return g[0] ? e.s = -u : d[0] ? e = new o(a) : e.s = 1, e; + if (l = f - v) { + for ((i = l < 0) ? (l = -l, n = d) : (v = f, n = g), n.reverse(), u = l; u--; ) + n.push(0); + n.reverse(); + } else + for (r = ((i = d.length < g.length) ? d : g).length, l = u = 0; u < r; u++) + if (d[u] != g[u]) { + i = d[u] < g[u]; + break; + } + if (i && (n = d, d = g, g = n, e.s = -e.s), (u = (r = g.length) - (t = d.length)) > 0) + for (; u--; ) + d[t++] = 0; + for (u = t; r > l; ) { + if (d[--r] < g[r]) { + for (t = r; t && !d[--t]; ) + d[t] = 9; + --d[t], d[r] += 10; + } + d[r] -= g[r]; + } + for (; d[--u] === 0; ) + d.pop(); + for (; d[0] === 0; ) + d.shift(), --v; + return d[0] || (e.s = 1, d = [v = 0]), e.c = d, e.e = v, e; +}; +Eo.mod = function(e) { + var t, r = this, n = r.constructor, i = r.s, a = (e = new n(e)).s; + if (!e.c[0]) + throw Error(dEe); + return r.s = e.s = 1, t = e.cmp(r) == 1, r.s = i, e.s = a, t ? new n(r) : (i = n.DP, a = n.RM, n.DP = n.RM = 0, r = r.div(e), n.DP = i, n.RM = a, this.minus(r.times(e))); +}; +Eo.neg = function() { + var e = new this.constructor(this); + return e.s = -e.s, e; +}; +Eo.plus = Eo.add = function(e) { + var t, r, n, i = this, a = i.constructor; + if (e = new a(e), i.s != e.s) + return e.s = -e.s, i.minus(e); + var o = i.e, l = i.c, u = e.e, d = e.c; + if (!l[0] || !d[0]) + return d[0] || (l[0] ? e = new a(i) : e.s = i.s), e; + if (l = l.slice(), t = o - u) { + for (t > 0 ? (u = o, n = d) : (t = -t, n = l), n.reverse(); t--; ) + n.push(0); + n.reverse(); + } + for (l.length - d.length < 0 && (n = d, d = l, l = n), t = d.length, r = 0; t; l[t] %= 10) + r = (l[--t] = l[t] + d[t] + r) / 10 | 0; + for (r && (l.unshift(r), ++u), t = l.length; l[--t] === 0; ) + l.pop(); + return e.c = l, e.e = u, e; +}; +Eo.pow = function(e) { + var t = this, r = new t.constructor("1"), n = r, i = e < 0; + if (e !== ~~e || e < -aue || e > aue) + throw Error(FE + "exponent"); + for (i && (e = -e); e & 1 && (n = n.times(t)), e >>= 1, !!e; ) + t = t.times(t); + return i ? r.div(n) : n; +}; +Eo.prec = function(e, t) { + if (e !== ~~e || e < 1 || e > _E) + throw Error(FE + "precision"); + return BE(new this.constructor(this), e, t); +}; +Eo.round = function(e, t) { + if (e === ev) + e = 0; + else if (e !== ~~e || e < -_E || e > _E) + throw Error(oB); + return BE(new this.constructor(this), e + this.e + 1, t); +}; +Eo.sqrt = function() { + var e, t, r, n = this, i = n.constructor, a = n.s, o = n.e, l = new i("0.5"); + if (!n.c[0]) + return new i(n); + if (a < 0) + throw Error(FD + "No square root"); + a = Math.sqrt(n + ""), a === 0 || a === 1 / 0 ? (t = n.c.join(""), t.length + o & 1 || (t += "0"), a = Math.sqrt(t), o = ((o + 1) / 2 | 0) - (o < 0 || o & 1), e = new i((a == 1 / 0 ? "5e" : (a = a.toExponential()).slice(0, a.indexOf("e") + 1)) + o)) : e = new i(a + ""), o = e.e + (i.DP += 4); + do + r = e, e = l.times(r.plus(n.div(r))); + while (r.c.slice(0, o).join("") !== e.c.slice(0, o).join("")); + return BE(e, (i.DP -= 4) + e.e + 1, i.RM); +}; +Eo.times = Eo.mul = function(e) { + var t, r = this, n = r.constructor, i = r.c, a = (e = new n(e)).c, o = i.length, l = a.length, u = r.e, d = e.e; + if (e.s = r.s == e.s ? 1 : -1, !i[0] || !a[0]) + return e.c = [e.e = 0], e; + for (e.e = u + d, o < l && (t = i, i = a, a = t, d = o, o = l, l = d), t = new Array(d = o + l); d--; ) + t[d] = 0; + for (u = l; u--; ) { + for (l = 0, d = o + u; d > u; ) + l = t[d] + a[u] * i[d - u - 1] + l, t[d--] = l % 10, l = l / 10 | 0; + t[d] = l; + } + for (l ? ++e.e : t.shift(), u = t.length; !t[--u]; ) + t.pop(); + return e.c = t, e; +}; +Eo.toExponential = function(e, t) { + var r = this, n = r.c[0]; + if (e !== ev) { + if (e !== ~~e || e < 0 || e > _E) + throw Error(oB); + for (r = BE(new r.constructor(r), ++e, t); r.c.length < e; ) + r.c.push(0); + } + return RI(r, !0, !!n); +}; +Eo.toFixed = function(e, t) { + var r = this, n = r.c[0]; + if (e !== ev) { + if (e !== ~~e || e < 0 || e > _E) + throw Error(oB); + for (r = BE(new r.constructor(r), e + r.e + 1, t), e = e + r.e + 1; r.c.length < e; ) + r.c.push(0); + } + return RI(r, !1, !!n); +}; +Eo[Symbol.for("nodejs.util.inspect.custom")] = Eo.toJSON = Eo.toString = function() { + var e = this, t = e.constructor; + return RI(e, e.e <= t.NE || e.e >= t.PE, !!e.c[0]); +}; +Eo.toNumber = function() { + var e = Number(RI(this, !0, !0)); + if (this.constructor.strict === !0 && !this.eq(e.toString())) + throw Error(FD + "Imprecise conversion"); + return e; +}; +Eo.toPrecision = function(e, t) { + var r = this, n = r.constructor, i = r.c[0]; + if (e !== ev) { + if (e !== ~~e || e < 1 || e > _E) + throw Error(FE + "precision"); + for (r = BE(new n(r), e, t); r.c.length < e; ) + r.c.push(0); + } + return RI(r, e <= r.e || r.e <= n.NE || r.e >= n.PE, !!i); +}; +Eo.valueOf = function() { + var e = this, t = e.constructor; + if (t.strict === !0) + throw Error(FD + "valueOf disallowed"); + return RI(e, e.e <= t.NE || e.e >= t.PE, !0); +}; +var vst = fEe(); +function mst(e, t, r) { + const n = []; + return e.reduce((i, a) => { + if (a == null) + return i; + const o = a[t]; + if (!i[o]) { + const l = {}; + r.forEach((u) => { + l[u] = 0; + }), i[o] = l, n.push(i[o]); + } + return i[o][t] = o, r.forEach((l) => { + if (l !== t) + if ($lowcoder_sdk.isNumeric(a[l])) { + const u = vst(a[l]); + i[o][l] = u.add(i[o][l]).toNumber(); + } else + i[o][l] += 1; + }), i; + }, {}), n; +} +const yst = /* @__PURE__ */ new Set(["pie"]), _st = [ + "hidden", + "selectedPoints", + "onUIEvent", + "mapInstance" +]; +function pEe(e) { + return !yst.has(e); +} +function Sst(e) { + const t = e.series.filter((n) => !n.getView().hide), r = t.length; + return t.map((n, i) => { + if (pEe(e.chartConfig.type)) { + let a, o; + const l = e.xAxisDirection === "horizontal"; + let u = e.chartConfig.itemStyle; + if (e.chartConfig.type === "bar") { + const d = l ? [2, 2, 0, 0] : [0, 2, 2, 0]; + e.chartConfig.stack && i === t.length - 1 ? u = rn(br({}, u), { borderRadius: d }) : e.chartConfig.stack || (u = rn(br({}, u), { borderRadius: d })); + } + return l ? (a = e.xAxisKey, o = n.getView().columnName) : (a = n.getView().columnName, o = e.xAxisKey), rn(br({ + name: n.getView().seriesName, + selectedMode: "single", + select: { + itemStyle: { + borderColor: "#000" + } + }, + encode: { + x: a, + y: o + } + }, e.chartConfig), { + itemStyle: u, + label: br(br({}, e.chartConfig.label), !l && { position: "outside" }) + }); + } else { + const a = o5e(r, i, e.chartConfig); + return rn(br({}, e.chartConfig), { + radius: a.radius, + center: a.center, + name: n.getView().seriesName, + selectedMode: "single", + encode: { + itemName: e.xAxisKey, + value: n.getView().columnName + } + }); + } + }); +} +function bst(e, t) { + if (e.mode === "json") + return e.echartsOption ? e.echartsOption : {}; + if (e.mode === "map") { + const { + mapZoomLevel: u, + mapCenterLat: d, + mapCenterLng: f, + mapOptions: g, + showCharts: v + } = e; + return br({ + gmap: { + center: [f, d], + zoom: u, + renderOnMoving: !0, + echartsLayerZIndex: v ? 2019 : 0, + roam: !0 + } + }, g && v ? g : {}); + } + const r = pEe(e.chartConfig.type), n = { + left: 20, + right: e.legendConfig.left === "right" ? "10%" : 20, + top: 50, + bottom: 35 + }; + let i = { + title: { text: e.title, left: "center" }, + tooltip: { + confine: !0, + trigger: r ? "axis" : "item" + }, + legend: e.legendConfig, + grid: rn(br({}, n), { + containLabel: !0 + }) + }; + if (e.data.length <= 0) + return br(br({}, i), r ? _5e : S5e); + const a = e.yConfig(), o = e.series.filter((u) => !u.getView().hide).map((u) => u.getView().columnName), l = a.type === "category" || a.type === "time" ? e.data : mst(e.data, e.xAxisKey, o); + if (i = rn(br({}, i), { + dataset: [ + { + source: l, + sourceHeader: !1 + } + ], + series: Sst(e) + }), r) { + let u; + if (t) { + const f = typeof n.right == "number" ? n.right : t.w * parseFloat(n.right) / 100; + u = { + // actually it's self-adaptive with the x-axis label on the left, not that accurate but work + w: t.w - n.left - f, + // also self-adaptive on the bottom + h: t.h - n.top - n.bottom, + right: f + }; + } + const d = qje( + e.xConfig, + a, + e.xAxisDirection, + l.map((f) => f[e.xAxisKey]), + u + ); + i = rn(br({}, i), { + // @ts-ignore + xAxis: d.xConfig, + // @ts-ignore + yAxis: d.yConfig + }); + } + return i; +} +function H3(e, t) { + var i; + const r = t.series, n = $lodash.isArray(t.dataset) && ((i = t.dataset[0]) == null ? void 0 : i.source); + return r && n ? e.selected.flatMap((a) => { + const o = r[a.seriesIndex]; + return !o || !o.encode ? [] : a.dataIndex.map((l) => { + const u = { + seriesName: o.name + }; + return o.encode.itemName && o.encode.value ? rn(br({}, u), { + itemName: n[l][o.encode.itemName], + value: n[l][o.encode.value] + }) : rn(br({}, u), { + x: n[l][o.encode.x], + y: n[l][o.encode.y] + }); + }); + }) : []; +} +function Est(e) { + const t = `${qre}?key=${e}`, r = document.getElementsByTagName("script"); + let n = $lodash.findIndex(r, (a) => a.src.endsWith(t)); + if (n > -1) + return r[n]; + n = $lodash.findIndex(r, (a) => a.src.startsWith(qre)), n > -1 && r[n].remove(); + const i = document.createElement("script"); + return i.type = "text/javascript", i.src = t, i.async = !0, i.defer = !0, window.document.body.appendChild(i), i; +} +/*! + * echarts-extension-gmap + * @version 1.6.0 + * @author plainheart + * + * MIT License + * + * Copyright (c) 2020-2022 Zhongxiang Wang + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +var uG = r9.split("."), Aw = uG[0] > 4, mf = "gmap"; +function Cst(e, t) { + return e && t && e[0] === t[0] && e[1] === t[1]; +} +function Tst(e, t) { + return t = t || [0, 0], er([0, 1], function(r) { + var n = t[r], i = e[r] / 2, a = [], o = []; + return a[r] = n - i, o[r] = n + i, a[1 - r] = o[1 - r] = t[1 - r], Math.abs(this.dataToPoint(a)[r] - this.dataToPoint(o)[r]); + }, this); +} +function FR(e, t) { + this._gmap = e, this.dimensions = ["lng", "lat"], this._mapOffset = [0, 0], this._api = t; +} +var Ah = FR.prototype, wst = ["echartsLayerZIndex", "renderOnMoving"]; +Ah.setZoom = function(e) { + this._zoom = e; +}; +Ah.setCenter = function(e) { + var t = new google.maps.LatLng(e[1], e[0]); + this._center = gEe(t, this._gmap); +}; +Ah.setMapOffset = function(e) { + this._mapOffset = e; +}; +Ah.setGoogleMap = function(e) { + this._gmap = e; +}; +Ah.getGoogleMap = function() { + return this._gmap; +}; +Ah.dataToPoint = function(e) { + var t = new google.maps.LatLng(e[1], e[0]), r = gEe(t, this._gmap), n = this._mapOffset; + return [r.x - n[0], r.y - n[1]]; +}; +Ah.pointToData = function(e) { + var t = this._mapOffset, r = xst(new google.maps.Point(e[0] + t[0], e[1] + t[1]), this._gmap); + return [r.lng(), r.lat()]; +}; +Ah.getViewRect = function() { + var e = this._api; + return new ei(0, 0, e.getWidth(), e.getHeight()); +}; +Ah.getRoamTransform = function() { + return ku(); +}; +Ah.prepareCustoms = function() { + var e = this.getViewRect(); + return { + coordSys: { + type: mf, + x: e.x, + y: e.y, + width: e.width, + height: e.height + }, + api: { + coord: Ar(this.dataToPoint, this), + size: Ar(Tst, this) + } + }; +}; +Ah.convertToPixel = function(e, t, r) { + return this.dataToPoint(r); +}; +Ah.convertFromPixel = function(e, t, r) { + return this.pointToData(r); +}; +FR.create = function(e, t) { + var r, n = t.getDom(); + return e.eachComponent(mf, function(i) { + var a = t.getZr().painter, o = a.getViewportRoot(); + if (typeof google == "undefined" || !google.maps || !google.maps.Map) + throw new Error("Google Map API is not loaded"); + if (W3 = W3 || Ist(), r) + throw new Error("Only one google map component is allowed"); + var l = i.getGoogleMap(); + if (!l) { + var u = "ec-extension-google-map", d = n.querySelector("." + u); + d && (o.style.left = "0", o.style.top = "0", n.removeChild(d)), d = document.createElement("div"), d.className = u, d.style.cssText = "position:absolute;top:0;left:0;right:0;bottom:0", n.appendChild(d); + var f = cn(i.get()), g = f.echartsLayerZIndex; + Ee(wst, function(w) { + delete f[w]; + }); + var v = f.center; + qt(v) && (f.center = { + lng: v[0], + lat: v[1] + }), l = new google.maps.Map(d, f), i.setGoogleMap(l), i.__projectionChangeListener && i.__projectionChangeListener.remove(), i.__projectionChangeListener = google.maps.event.addListener(l, "projection_changed", function() { + var w = i.getEChartsLayer(); + w && w.setMap(null); + var x = new W3(o, l); + x.setZIndex(g), i.setEChartsLayer(x); + }), a.getViewportRootOffset = function() { + return { + offsetLeft: 0, + offsetTop: 0 + }; + }; + } + var y = i.get("center"), C = [y.lng != null ? y.lng : y[0], y.lat != null ? y.lat : y[1]], A = i.get("zoom"); + if (y && A) { + var S = l.getCenter(), _ = l.getZoom(), E = i.centerOrZoomChanged([S.lng(), S.lat()], _); + if (E) { + var I = new google.maps.LatLng(C[1], C[0]); + l.setOptions({ + center: I, + zoom: A + }); + } + } + r = new FR(l, t), r.setMapOffset(i.__mapOffset || [0, 0]), r.setZoom(A), r.setCenter(C), i.coordinateSystem = r; + }), e.eachSeries(function(i) { + i.get("coordinateSystem") === mf && (i.coordinateSystem = r); + }), r && [r]; +}; +var W3; +function Ist() { + function e(t, r) { + this._root = t, this.setMap(r); + } + return e.prototype = new google.maps.OverlayView(), e.prototype.onAdd = function() { + var t = this.getMap(); + t.__overlayProjection = this.getProjection(), t.getDiv().querySelector(".gm-style > div").appendChild(this._root); + }, e.prototype.draw = function() { + google.maps.event.trigger(this.getMap(), "gmaprender"); + }, e.prototype.onRemove = function() { + this._root.parentNode.removeChild(this._root), this._root = null; + }, e.prototype.setZIndex = function(t) { + this._root.style.zIndex = t; + }, e.prototype.getZIndex = function() { + return this._root.style.zIndex; + }, e; +} +function gEe(e, t) { + var r = t.__overlayProjection; + return r ? r.fromLatLngToContainerPixel(e) : new google.maps.Point(-1 / 0, -1 / 0); +} +function xst(e, t) { + var r = t.__overlayProjection; + return r ? r.fromContainerPixelToLatLng(e) : new google.maps.Point(-1 / 0, -1 / 0); +} +Ah.dimensions = FR.dimensions = ["lng", "lat"]; +Ah.type = mf; +var oue = { + type: mf, + setGoogleMap: function(t) { + this.__gmap = t; + }, + getGoogleMap: function() { + return this.__gmap; + }, + setEChartsLayer: function(t) { + this.__echartsLayer = t; + }, + getEChartsLayer: function() { + return this.__echartsLayer; + }, + setCenterAndZoom: function(t, r) { + this.option.center = t, this.option.zoom = r; + }, + centerOrZoomChanged: function(t, r) { + var n = this.option; + return !(Cst(t, n.center) && r === n.zoom); + }, + defaultOption: { + center: { + lat: 39.90923, + lng: 116.397428 + }, + zoom: 5, + // extension options + // since v1.4.0 + roam: !0, + echartsLayerZIndex: 2e3, + renderOnMoving: !0 + } +}, sue = Aw ? Mi.extend(oue) : oue, lue = { + type: mf, + render: function(t, r, n) { + var i = !0, a = t.getGoogleMap(), o = n.getZr().painter.getViewportRoot(), l = t.coordinateSystem, u = t.get("renderOnMoving"), d = a.getDiv(), f = d.firstChild, g = f.clientWidth, v = f.clientHeight, y = function() { + if (!i) { + if (f.clientWidth !== g || f.clientHeight !== v) + return C(); + var S = [-parseInt(d.style.left, 10) || 0, -parseInt(d.style.top, 10) || 0]; + o.style.left = S[0] + "px", o.style.top = S[1] + "px", l.setMapOffset(S), t.__mapOffset = S, n.dispatchAction({ + type: mf + "Roam", + animation: { + // in ECharts 5.x, + // we can set animation duration as 0 + // to ensure no delay when moving or zooming + duration: 0 + } + }); + } + }, C = function() { + CD(n.getDom()).resize({ + width: f.clientWidth, + height: f.clientHeight + }); + }; + this._renderHandler && this._renderHandler.remove(), u || (y = gE(y, 100, !0), C = gE(C, 100, !0)), this._renderHandler = google.maps.event.addListener(a, u ? "gmaprender" : "idle", y), a.setOptions({ + gestureHandling: t.get("roam") ? "auto" : "none" + }), i = !1; + }, + dispose: function() { + this._renderHandler && this._renderHandler.remove(), delete this._renderHandler; + var t = this.__model; + if (t) { + var r = t.getGoogleMap(); + if (r) { + delete r.__overlayProjection, google.maps.event.clearInstanceListeners(r); + var n = r.getDiv(); + n.parentNode && n.parentNode.removeChild(n); + } + t.setGoogleMap(null), t.setEChartsLayer(null), t.coordinateSystem && (t.coordinateSystem.setGoogleMap(null), t.coordinateSystem = null); + } + } +}, cue = Aw ? Co.extend(lue) : lue; +function uue(e) { + (!Aw || uG[0] == 5 && uG[1] < 4) && e.registerLayout(function(t) { + t.eachSeriesByType("pie", function(r) { + var n = r.coordinateSystem, i = r.getData(), a = i.mapDimension("value"); + if (n && n.type === mf) { + var o = r.get("center"), l = n.dataToPoint(o), u = l[0], d = l[1]; + i.each(a, function(f, g) { + var v = i.getItemLayout(g); + v.cx = u, v.cy = d; + }); + } + }); + }), Aw ? e.registerComponentModel(sue) : e.extendComponentModel(sue), Aw ? e.registerComponentView(cue) : e.extendComponentView(cue), e.registerCoordinateSystem(mf, FR), e.registerAction({ + type: mf + "Roam", + event: mf + "Roam", + update: "updateLayout" + }, function(t, r) { + r.eachComponent(mf, function(n) { + var i = n.getGoogleMap(), a = i.getCenter(); + n.setCenterAndZoom([a.lng(), a.lat()], i.getZoom()); + }); + }); +} +Aw ? ii(uue) : uue(Jot); +let hG = () => { +}, BR = function() { + return new $lowcoder_sdk.UICompBuilder(Ige, () => null).setPropertyViewFn(w5e).build(); +}(); +BR = $lowcoder_sdk.withViewFn(BR, (e) => { + const t = e.children.mapApiKey.getView(), r = e.children.mode.getView(), n = { + lng: e.children.mapCenterLng.getView(), + lat: e.children.mapCenterLat.getView() + }, i = e.children.mapZoomLevel.getView(), a = e.children.onUIEvent.getView(), o = e.children.onMapEvent.getView(), l = $react.useRef(), [u, d] = $react.useState(), [f, g] = $react.useState(!1), v = $react.useRef(!0), y = $react.useContext($lowcoder_sdk.ThemeContext), C = { + color: $lowcoder_sdk.chartColorPalette, + backgroundColor: "#fff" + }; + let A = C; + try { + A = y != null && y.theme.chart ? JSON.parse(y == null ? void 0 : y.theme.chart) : C; + } catch (x) { + hEe.error("theme chart error: ", x); + } + $react.useEffect(() => { + var b; + if (r !== "ui") + return; + const x = (b = l == null ? void 0 : l.current) == null ? void 0 : b.getEchartsInstance(); + return x ? (x == null || x.on("selectchanged", (R) => { + const M = x == null ? void 0 : x.getOption(); + document.dispatchEvent(new CustomEvent("clickEvent", { + bubbles: !0, + detail: { + action: R.fromAction, + data: H3(R, M) + } + })), R.fromAction === "select" ? (e.dispatch(uH("selectedPoints", H3(R, M))), a("select")) : R.fromAction === "unselect" && (e.dispatch(uH("selectedPoints", H3(R, M))), a("unselect")); + }), () => { + x == null || x.off("selectchanged"), document.removeEventListener("clickEvent", hG); + }) : $lodash.noop; + }, [r, a]); + const S = $lodash.omit(e.children, _st), _ = $react.useMemo(() => bst($lowcoder_sdk.childrenToProps(S), u), [u, ...Object.values(S)]), E = $react.useMemo(() => f || (window == null ? void 0 : window.google), [f]), I = () => { + var b; + const x = (b = l == null ? void 0 : l.current) == null ? void 0 : b.getEchartsInstance(); + if (!x) + return $lodash.noop; + e.children.mapInstance.dispatch(iR(x)), o("mapReady"); + }, w = () => { + g(!0), setTimeout(() => { + I(); + }); + }; + return $react.useEffect(() => { + if (r !== "map") { + e.children.mapInstance.dispatch(iR(void 0)); + return; + } + const x = Est(t); + if (E) { + w(); + return; + } + return x.addEventListener("load", w), () => { + x.removeEventListener("load", w); + }; + }, [r, t, _]), $react.useEffect(() => { + r === "map" && o("centerPositionChange"); + }, [r, n.lat, n.lng]), $react.useEffect(() => { + r === "map" && o("zoomLevelChange"); + }, [r, i]), /* @__PURE__ */ dt(uF, { + onResize: (x, b) => { + var R; + x && b && d({ + w: x, + h: b + }), v.current ? v.current = !1 : (R = l.current) == null || R.getEchartsInstance().resize(); + }, + children: (r !== "map" || r === "map" && E) && /* @__PURE__ */ dt(sst, { + ref: (x) => l.current = x, + style: { + height: "100%" + }, + notMerge: !0, + lazyUpdate: !0, + opts: { + locale: Oje() + }, + option: _, + theme: r !== "map" ? A : void 0, + mode: r + }) + }); +}); +function Ast(e, t, r) { + const n = r && e.length > 0 && e[0][r]; + let i = n; + if (t === "time") { + const a = typeof n == "number" || typeof n == "string" ? new Date(n).getTime() : null; + a && (i = a); + } + return i; +} +BR = class extends BR { + constructor() { + super(...arguments); + R_(this, "lastYAxisFormatContextVal"); + R_(this, "lastColorContext"); + } + updateContext(t) { + let r = t; + const n = t.children.data.getView(), i = t.children.series.getView().find((l) => !l.getView().hide), a = Ast(n, t.children.yConfig.children.yAxisType.getView(), i == null ? void 0 : i.children.columnName.getView()); + a !== t.lastYAxisFormatContextVal && (t.lastYAxisFormatContextVal = a, r = t.setChild("yConfig", t.children.yConfig.reduce(yw("formatter", Ege.changeContextDataAction({ + value: a + }))))); + const o = { + seriesName: i == null ? void 0 : i.children.seriesName.getView(), + value: a + }; + return t.children.chartConfig.children.comp.children.hasOwnProperty("itemColor") && !$lodash.isEqual(o, t.lastColorContext) && (t.lastColorContext = o, r = r.setChild("chartConfig", t.children.chartConfig.reduce(yw("comp", yw("itemColor", Cge.changeContextDataAction(o)))))), r; + } + reduce(t) { + const r = super.reduce(t); + if (t.type === Gc.UPDATE_NODES_V2) { + const n = r.children.data.getView(); + return r.children.data !== this.children.data && setTimeout(() => { + const i = wge(n); + i.length > 0 && !i.includes(r.children.xAxisKey.getView()) && r.children.xAxisKey.dispatch(iR(i[0] || "")), r.children.series.dispatchDataChanged(n); + }, 0), this.updateContext(r); + } + return r; + } + autoHeight() { + return !1; + } +}; +let dG = $lowcoder_sdk.withExposingConfigs(BR, [$lowcoder_sdk.depsConfig({ + name: "selectedPoints", + desc: yt("chart.selectedPointsDesc"), + depKeys: ["selectedPoints"], + func: (e) => e.selectedPoints +}), $lowcoder_sdk.depsConfig({ + name: "data", + desc: yt("chart.dataDesc"), + depKeys: ["data", "mode"], + func: (e) => e.mode === "ui" ? e.data : [] +}), new $lowcoder_sdk.NameConfig("title", yt("chart.titleDesc"))]); +dG = $lowcoder_sdk.withMethodExposing(dG, [{ + method: { + name: "getMapInstance" + }, + execute: (e) => new Promise((t) => { + let r = 0; + const n = setInterval(() => { + var o, l; + const i = e.children.mapInstance.getView(), a = (l = (o = i == null ? void 0 : i.getModel()) == null ? void 0 : o.getComponent("gmap")) == null ? void 0 : l.getGoogleMap(); + (a || r === 10) && (clearInterval(n), t(a)), r++; + }, 1e3); + }) +}, { + method: { + name: "getMapZoomLevel" + }, + execute: (e) => e.children.mapZoomLevel.getView() +}, { + method: { + name: "getMapCenterPosition" + }, + execute: (e) => Promise.resolve({ + lng: e.children.mapCenterLng.getView(), + lat: e.children.mapCenterLat.getView() + }) +}, { + method: { + name: "onClick", + params: [{ + name: "callback", + type: "function" + }] + }, + execute: (e, t) => { + hG = t[0], document.addEventListener("clickEvent", hG); + } +}]); +const Rst = $lowcoder_sdk.withDefault(dG, { + xAxisKey: "date", + series: [{ + dataIndex: $lowcoder_sdk.genRandomKey(), + seriesName: yt("chart.spending"), + columnName: "spending" + }, { + dataIndex: $lowcoder_sdk.genRandomKey(), + seriesName: yt("chart.budget"), + columnName: "budget" + }] +}); +var vEe = { exports: {} }; +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +(function(e) { + (function() { + var t = {}.hasOwnProperty; + function r() { + for (var a = "", o = 0; o < arguments.length; o++) { + var l = arguments[o]; + l && (a = i(a, n(l))); + } + return a; + } + function n(a) { + if (typeof a == "string" || typeof a == "number") + return a; + if (typeof a != "object") + return ""; + if (Array.isArray(a)) + return r.apply(null, a); + if (a.toString !== Object.prototype.toString && !a.toString.toString().includes("[native code]")) + return a.toString(); + var o = ""; + for (var l in a) + t.call(a, l) && a[l] && (o = i(o, l)); + return o; + } + function i(a, o) { + return o ? a ? a + " " + o : a + o : a; + } + e.exports ? (r.default = r, e.exports = r) : window.classNames = r; + })(); +})(vEe); +var Dst = vEe.exports; +const Cn = /* @__PURE__ */ cD(Dst); +function Ja(e) { + "@babel/helpers - typeof"; + return Ja = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(t) { + return typeof t; + } : function(t) { + return t && typeof Symbol == "function" && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t; + }, Ja(e); +} +function Ost(e, t) { + if (Ja(e) != "object" || !e) + return e; + var r = e[Symbol.toPrimitive]; + if (r !== void 0) { + var n = r.call(e, t || "default"); + if (Ja(n) != "object") + return n; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (t === "string" ? String : Number)(e); +} +function mEe(e) { + var t = Ost(e, "string"); + return Ja(t) == "symbol" ? t : t + ""; +} +function Kt(e, t, r) { + return t = mEe(t), t in e ? Object.defineProperty(e, t, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[t] = r, e; +} +function hue(e, t) { + var r = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var n = Object.getOwnPropertySymbols(e); + t && (n = n.filter(function(i) { + return Object.getOwnPropertyDescriptor(e, i).enumerable; + })), r.push.apply(r, n); + } + return r; +} +function fr(e) { + for (var t = 1; t < arguments.length; t++) { + var r = arguments[t] != null ? arguments[t] : {}; + t % 2 ? hue(Object(r), !0).forEach(function(n) { + Kt(e, n, r[n]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : hue(Object(r)).forEach(function(n) { + Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n)); + }); + } + return e; +} +function BD(e, t) { + var r = fr({}, e); + return Array.isArray(t) && t.forEach(function(n) { + delete r[n]; + }), r; +} +var yEe = { exports: {} }, To = {}; +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +var RY = Symbol.for("react.element"), DY = Symbol.for("react.portal"), sB = Symbol.for("react.fragment"), lB = Symbol.for("react.strict_mode"), cB = Symbol.for("react.profiler"), uB = Symbol.for("react.provider"), hB = Symbol.for("react.context"), Mst = Symbol.for("react.server_context"), dB = Symbol.for("react.forward_ref"), fB = Symbol.for("react.suspense"), pB = Symbol.for("react.suspense_list"), gB = Symbol.for("react.memo"), vB = Symbol.for("react.lazy"), kst = Symbol.for("react.offscreen"), _Ee; +_Ee = Symbol.for("react.module.reference"); +function Pf(e) { + if (typeof e == "object" && e !== null) { + var t = e.$$typeof; + switch (t) { + case RY: + switch (e = e.type, e) { + case sB: + case cB: + case lB: + case fB: + case pB: + return e; + default: + switch (e = e && e.$$typeof, e) { + case Mst: + case hB: + case dB: + case vB: + case gB: + case uB: + return e; + default: + return t; + } + } + case DY: + return t; + } + } +} +To.ContextConsumer = hB; +To.ContextProvider = uB; +To.Element = RY; +To.ForwardRef = dB; +To.Fragment = sB; +To.Lazy = vB; +To.Memo = gB; +To.Portal = DY; +To.Profiler = cB; +To.StrictMode = lB; +To.Suspense = fB; +To.SuspenseList = pB; +To.isAsyncMode = function() { + return !1; +}; +To.isConcurrentMode = function() { + return !1; +}; +To.isContextConsumer = function(e) { + return Pf(e) === hB; +}; +To.isContextProvider = function(e) { + return Pf(e) === uB; +}; +To.isElement = function(e) { + return typeof e == "object" && e !== null && e.$$typeof === RY; +}; +To.isForwardRef = function(e) { + return Pf(e) === dB; +}; +To.isFragment = function(e) { + return Pf(e) === sB; +}; +To.isLazy = function(e) { + return Pf(e) === vB; +}; +To.isMemo = function(e) { + return Pf(e) === gB; +}; +To.isPortal = function(e) { + return Pf(e) === DY; +}; +To.isProfiler = function(e) { + return Pf(e) === cB; +}; +To.isStrictMode = function(e) { + return Pf(e) === lB; +}; +To.isSuspense = function(e) { + return Pf(e) === fB; +}; +To.isSuspenseList = function(e) { + return Pf(e) === pB; +}; +To.isValidElementType = function(e) { + return typeof e == "string" || typeof e == "function" || e === sB || e === cB || e === lB || e === fB || e === pB || e === kst || typeof e == "object" && e !== null && (e.$$typeof === vB || e.$$typeof === gB || e.$$typeof === uB || e.$$typeof === hB || e.$$typeof === dB || e.$$typeof === _Ee || e.getModuleId !== void 0); +}; +To.typeOf = Pf; +yEe.exports = To; +var BN = yEe.exports; +function OY(e, t, r) { + var n = $react.useRef({}); + return (!("value" in n.current) || r(n.current.condition, t)) && (n.current.value = e(), n.current.condition = t), n.current.value; +} +function MY(e, t) { + typeof e == "function" ? e(t) : Ja(e) === "object" && e && "current" in e && (e.current = t); +} +function M0() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r]; + var n = t.filter(function(i) { + return i; + }); + return n.length <= 1 ? n[0] : function(i) { + t.forEach(function(a) { + MY(a, i); + }); + }; +} +function kY() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r]; + return OY(function() { + return M0.apply(void 0, t); + }, t, function(n, i) { + return n.length !== i.length || n.every(function(a, o) { + return a !== i[o]; + }); + }); +} +function DI(e) { + var t, r, n = BN.isMemo(e) ? e.type.type : e.type; + return !(typeof n == "function" && !((t = n.prototype) !== null && t !== void 0 && t.render) && n.$$typeof !== BN.ForwardRef || typeof e == "function" && !((r = e.prototype) !== null && r !== void 0 && r.render) && e.$$typeof !== BN.ForwardRef); +} +var fG = {}, Pst = function(t) { +}; +function Nst(e, t) { +} +function Lst(e, t) { +} +function Fst() { + fG = {}; +} +function SEe(e, t, r) { + !t && !fG[r] && (e(!1, r), fG[r] = !0); +} +function fd(e, t) { + SEe(Nst, e, t); +} +function Bst(e, t) { + SEe(Lst, e, t); +} +fd.preMessage = Pst; +fd.resetWarned = Fst; +fd.noteOnce = Bst; +function Ust() { +} +const jst = /* @__PURE__ */ $react.createContext({}), PY = () => { + const e = () => { + }; + return e.deprecated = Ust, e; +}, NY = function(e) { + if (!e) + return !1; + if (e instanceof Element) { + if (e.offsetParent) + return !0; + if (e.getBBox) { + var t = e.getBBox(), r = t.width, n = t.height; + if (r || n) + return !0; + } + if (e.getBoundingClientRect) { + var i = e.getBoundingClientRect(), a = i.width, o = i.height; + if (a || o) + return !0; + } + } + return !1; +}; +function bEe(e) { + if (Array.isArray(e)) + return e; +} +function $st(e, t) { + var r = e == null ? null : typeof Symbol != "undefined" && e[Symbol.iterator] || e["@@iterator"]; + if (r != null) { + var n, i, a, o, l = [], u = !0, d = !1; + try { + if (a = (r = r.call(e)).next, t === 0) { + if (Object(r) !== r) + return; + u = !1; + } else + for (; !(u = (n = a.call(r)).done) && (l.push(n.value), l.length !== t); u = !0) + ; + } catch (f) { + d = !0, i = f; + } finally { + try { + if (!u && r.return != null && (o = r.return(), Object(o) !== o)) + return; + } finally { + if (d) + throw i; + } + } + return l; + } +} +function pG(e, t) { + (t == null || t > e.length) && (t = e.length); + for (var r = 0, n = new Array(t); r < t; r++) + n[r] = e[r]; + return n; +} +function LY(e, t) { + if (e) { + if (typeof e == "string") + return pG(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(e); + if (r === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) + return pG(e, t); + } +} +function EEe() { + throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); +} +function Wr(e, t) { + return bEe(e) || $st(e, t) || LY(e, t) || EEe(); +} +function Vst(e) { + if (Array.isArray(e)) + return pG(e); +} +function CEe(e) { + if (typeof Symbol != "undefined" && e[Symbol.iterator] != null || e["@@iterator"] != null) + return Array.from(e); +} +function zst() { + throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); +} +function Gn(e) { + return Vst(e) || CEe(e) || LY(e) || zst(); +} +function u2(e) { + for (var t = 0, r, n = 0, i = e.length; i >= 4; ++n, i -= 4) + r = e.charCodeAt(n) & 255 | (e.charCodeAt(++n) & 255) << 8 | (e.charCodeAt(++n) & 255) << 16 | (e.charCodeAt(++n) & 255) << 24, r = /* Math.imul(k, m): */ + (r & 65535) * 1540483477 + ((r >>> 16) * 59797 << 16), r ^= /* k >>> r: */ + r >>> 24, t = /* Math.imul(k, m): */ + (r & 65535) * 1540483477 + ((r >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */ + (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16); + switch (i) { + case 3: + t ^= (e.charCodeAt(n + 2) & 255) << 16; + case 2: + t ^= (e.charCodeAt(n + 1) & 255) << 8; + case 1: + t ^= e.charCodeAt(n) & 255, t = /* Math.imul(h, m): */ + (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16); + } + return t ^= t >>> 13, t = /* Math.imul(h, m): */ + (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16), ((t ^ t >>> 15) >>> 0).toString(36); +} +function md() { + return !!(typeof window != "undefined" && window.document && window.document.createElement); +} +function Hst(e, t) { + if (!e) + return !1; + if (e.contains) + return e.contains(t); + for (var r = t; r; ) { + if (r === e) + return !0; + r = r.parentNode; + } + return !1; +} +var due = "data-rc-order", fue = "data-rc-priority", Wst = "rc-util-key", gG = /* @__PURE__ */ new Map(); +function TEe() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, t = e.mark; + return t ? t.startsWith("data-") ? t : "data-".concat(t) : Wst; +} +function mB(e) { + if (e.attachTo) + return e.attachTo; + var t = document.querySelector("head"); + return t || document.body; +} +function Gst(e) { + return e === "queue" ? "prependQueue" : e ? "prepend" : "append"; +} +function FY(e) { + return Array.from((gG.get(e) || e).children).filter(function(t) { + return t.tagName === "STYLE"; + }); +} +function wEe(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (!md()) + return null; + var r = t.csp, n = t.prepend, i = t.priority, a = i === void 0 ? 0 : i, o = Gst(n), l = o === "prependQueue", u = document.createElement("style"); + u.setAttribute(due, o), l && a && u.setAttribute(fue, "".concat(a)), r != null && r.nonce && (u.nonce = r == null ? void 0 : r.nonce), u.innerHTML = e; + var d = mB(t), f = d.firstChild; + if (n) { + if (l) { + var g = (t.styles || FY(d)).filter(function(v) { + if (!["prepend", "prependQueue"].includes(v.getAttribute(due))) + return !1; + var y = Number(v.getAttribute(fue) || 0); + return a >= y; + }); + if (g.length) + return d.insertBefore(u, g[g.length - 1].nextSibling), u; + } + d.insertBefore(u, f); + } else + d.appendChild(u); + return u; +} +function IEe(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, r = mB(t); + return (t.styles || FY(r)).find(function(n) { + return n.getAttribute(TEe(t)) === e; + }); +} +function UR(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, r = IEe(e, t); + if (r) { + var n = mB(t); + n.removeChild(r); + } +} +function Yst(e, t) { + var r = gG.get(e); + if (!r || !Hst(document, r)) { + var n = wEe("", t), i = n.parentNode; + gG.set(e, i), e.removeChild(n); + } +} +function Um(e, t) { + var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, n = mB(r), i = FY(n), a = fr(fr({}, r), {}, { + styles: i + }); + Yst(n, a); + var o = IEe(t, a); + if (o) { + var l, u; + if ((l = a.csp) !== null && l !== void 0 && l.nonce && o.nonce !== ((u = a.csp) === null || u === void 0 ? void 0 : u.nonce)) { + var d; + o.nonce = (d = a.csp) === null || d === void 0 ? void 0 : d.nonce; + } + return o.innerHTML !== e && (o.innerHTML = e), o; + } + var f = wEe(e, a); + return f.setAttribute(TEe(a), t), f; +} +function Xst(e, t) { + if (e == null) + return {}; + var r = {}, n = Object.keys(e), i, a; + for (a = 0; a < n.length; a++) + i = n[a], !(t.indexOf(i) >= 0) && (r[i] = e[i]); + return r; +} +function xh(e, t) { + if (e == null) + return {}; + var r = Xst(e, t), n, i; + if (Object.getOwnPropertySymbols) { + var a = Object.getOwnPropertySymbols(e); + for (i = 0; i < a.length; i++) + n = a[i], !(t.indexOf(n) >= 0) && Object.prototype.propertyIsEnumerable.call(e, n) && (r[n] = e[n]); + } + return r; +} +function xEe(e, t) { + var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, n = /* @__PURE__ */ new Set(); + function i(a, o) { + var l = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1, u = n.has(a); + if (fd(!u, "Warning: There may be circular references"), u) + return !1; + if (a === o) + return !0; + if (r && l > 1) + return !1; + n.add(a); + var d = l + 1; + if (Array.isArray(a)) { + if (!Array.isArray(o) || a.length !== o.length) + return !1; + for (var f = 0; f < a.length; f++) + if (!i(a[f], o[f], d)) + return !1; + return !0; + } + if (a && o && Ja(a) === "object" && Ja(o) === "object") { + var g = Object.keys(a); + return g.length !== Object.keys(o).length ? !1 : g.every(function(v) { + return i(a[v], o[v], d); + }); + } + return !1; + } + return i(e, t); +} +function Cd(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function"); +} +function pue(e, t) { + for (var r = 0; r < t.length; r++) { + var n = t[r]; + n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, mEe(n.key), n); + } +} +function Td(e, t, r) { + return t && pue(e.prototype, t), r && pue(e, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; +} +var Kst = "%"; +function vG(e) { + return e.join(Kst); +} +var Zst = /* @__PURE__ */ function() { + function e(t) { + Cd(this, e), Kt(this, "instanceId", void 0), Kt(this, "cache", /* @__PURE__ */ new Map()), this.instanceId = t; + } + return Td(e, [{ + key: "get", + value: function(r) { + return this.opGet(vG(r)); + } + /** A fast get cache with `get` concat. */ + }, { + key: "opGet", + value: function(r) { + return this.cache.get(r) || null; + } + }, { + key: "update", + value: function(r, n) { + return this.opUpdate(vG(r), n); + } + /** A fast get cache with `get` concat. */ + }, { + key: "opUpdate", + value: function(r, n) { + var i = this.cache.get(r), a = n(i); + a === null ? this.cache.delete(r) : this.cache.set(r, a); + } + }]), e; +}(), Xw = "data-token-hash", Mp = "data-css-hash", e0 = "__cssinjs_instance__"; +function qst() { + var e = Math.random().toString(12).slice(2); + if (typeof document != "undefined" && document.head && document.body) { + var t = document.body.querySelectorAll("style[".concat(Mp, "]")) || [], r = document.head.firstChild; + Array.from(t).forEach(function(i) { + i[e0] = i[e0] || e, i[e0] === e && document.head.insertBefore(i, r); + }); + var n = {}; + Array.from(document.querySelectorAll("style[".concat(Mp, "]"))).forEach(function(i) { + var a = i.getAttribute(Mp); + if (n[a]) { + if (i[e0] === e) { + var o; + (o = i.parentNode) === null || o === void 0 || o.removeChild(i); + } + } else + n[a] = !0; + }); + } + return new Zst(e); +} +var Jst = /* @__PURE__ */ $react.createContext({ + hashPriority: "low", + cache: qst(), + defaultCache: !0 +}); +const yB = Jst; +function Qst(e, t) { + if (e.length !== t.length) + return !1; + for (var r = 0; r < e.length; r++) + if (e[r] !== t[r]) + return !1; + return !0; +} +var BY = /* @__PURE__ */ function() { + function e() { + Cd(this, e), Kt(this, "cache", void 0), Kt(this, "keys", void 0), Kt(this, "cacheCallTimes", void 0), this.cache = /* @__PURE__ */ new Map(), this.keys = [], this.cacheCallTimes = 0; + } + return Td(e, [{ + key: "size", + value: function() { + return this.keys.length; + } + }, { + key: "internalGet", + value: function(r) { + var n, i, a = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, o = { + map: this.cache + }; + return r.forEach(function(l) { + if (!o) + o = void 0; + else { + var u; + o = (u = o) === null || u === void 0 || (u = u.map) === null || u === void 0 ? void 0 : u.get(l); + } + }), (n = o) !== null && n !== void 0 && n.value && a && (o.value[1] = this.cacheCallTimes++), (i = o) === null || i === void 0 ? void 0 : i.value; + } + }, { + key: "get", + value: function(r) { + var n; + return (n = this.internalGet(r, !0)) === null || n === void 0 ? void 0 : n[0]; + } + }, { + key: "has", + value: function(r) { + return !!this.internalGet(r); + } + }, { + key: "set", + value: function(r, n) { + var i = this; + if (!this.has(r)) { + if (this.size() + 1 > e.MAX_CACHE_SIZE + e.MAX_CACHE_OFFSET) { + var a = this.keys.reduce(function(d, f) { + var g = Wr(d, 2), v = g[1]; + return i.internalGet(f)[1] < v ? [f, i.internalGet(f)[1]] : d; + }, [this.keys[0], this.cacheCallTimes]), o = Wr(a, 1), l = o[0]; + this.delete(l); + } + this.keys.push(r); + } + var u = this.cache; + r.forEach(function(d, f) { + if (f === r.length - 1) + u.set(d, { + value: [n, i.cacheCallTimes++] + }); + else { + var g = u.get(d); + g ? g.map || (g.map = /* @__PURE__ */ new Map()) : u.set(d, { + map: /* @__PURE__ */ new Map() + }), u = u.get(d).map; + } + }); + } + }, { + key: "deleteByPath", + value: function(r, n) { + var i = r.get(n[0]); + if (n.length === 1) { + var a; + return i.map ? r.set(n[0], { + map: i.map + }) : r.delete(n[0]), (a = i.value) === null || a === void 0 ? void 0 : a[0]; + } + var o = this.deleteByPath(i.map, n.slice(1)); + return (!i.map || i.map.size === 0) && !i.value && r.delete(n[0]), o; + } + }, { + key: "delete", + value: function(r) { + if (this.has(r)) + return this.keys = this.keys.filter(function(n) { + return !Qst(n, r); + }), this.deleteByPath(this.cache, r); + } + }]), e; +}(); +Kt(BY, "MAX_CACHE_SIZE", 20); +Kt(BY, "MAX_CACHE_OFFSET", 5); +var gue = 0, AEe = /* @__PURE__ */ function() { + function e(t) { + Cd(this, e), Kt(this, "derivatives", void 0), Kt(this, "id", void 0), this.derivatives = Array.isArray(t) ? t : [t], this.id = gue, t.length === 0 && (t.length > 0, void 0), gue += 1; + } + return Td(e, [{ + key: "getDerivativeToken", + value: function(r) { + return this.derivatives.reduce(function(n, i) { + return i(r, n); + }, void 0); + } + }]), e; +}(), G3 = new BY(); +function mG(e) { + var t = Array.isArray(e) ? e : [e]; + return G3.has(t) || G3.set(t, new AEe(t)), G3.get(t); +} +var elt = /* @__PURE__ */ new WeakMap(), Y3 = {}; +function tlt(e, t) { + for (var r = elt, n = 0; n < t.length; n += 1) { + var i = t[n]; + r.has(i) || r.set(i, /* @__PURE__ */ new WeakMap()), r = r.get(i); + } + return r.has(Y3) || r.set(Y3, e()), r.get(Y3); +} +var vue = /* @__PURE__ */ new WeakMap(); +function $1(e) { + var t = vue.get(e) || ""; + return t || (Object.keys(e).forEach(function(r) { + var n = e[r]; + t += r, n instanceof AEe ? t += n.id : n && Ja(n) === "object" ? t += $1(n) : t += n; + }), vue.set(e, t)), t; +} +function mue(e, t) { + return u2("".concat(t, "_").concat($1(e))); +} +var yG = md(); +function da(e) { + return typeof e == "number" ? "".concat(e, "px") : e; +} +function h2(e, t, r) { + var n, i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, a = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1; + if (a) + return e; + var o = fr(fr({}, i), {}, (n = {}, Kt(n, Xw, t), Kt(n, Mp, r), n)), l = Object.keys(o).map(function(u) { + var d = o[u]; + return d ? "".concat(u, '="').concat(d, '"') : null; + }).filter(function(u) { + return u; + }).join(" "); + return ""); +} +var REe = function(t) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; + return "--".concat(r ? "".concat(r, "-") : "").concat(t).replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, "$1-$2").replace(/([a-z])([A-Z0-9])/g, "$1-$2").toLowerCase(); +}, rlt = function(t, r, n) { + return Object.keys(t).length ? ".".concat(r).concat(n != null && n.scope ? ".".concat(n.scope) : "", "{").concat(Object.entries(t).map(function(i) { + var a = Wr(i, 2), o = a[0], l = a[1]; + return "".concat(o, ":").concat(l, ";"); + }).join(""), "}") : ""; +}, DEe = function(t, r, n) { + var i = {}, a = {}; + return Object.entries(t).forEach(function(o) { + var l, u, d = Wr(o, 2), f = d[0], g = d[1]; + if (n != null && (l = n.preserve) !== null && l !== void 0 && l[f]) + a[f] = g; + else if ((typeof g == "string" || typeof g == "number") && !(n != null && (u = n.ignore) !== null && u !== void 0 && u[f])) { + var v, y = REe(f, n == null ? void 0 : n.prefix); + i[y] = typeof g == "number" && !(n != null && (v = n.unitless) !== null && v !== void 0 && v[f]) ? "".concat(g, "px") : String(g), a[f] = "var(".concat(y, ")"); + } + }), [a, rlt(i, r, { + scope: n == null ? void 0 : n.scope + })]; +}, yue = md() ? $react.useLayoutEffect : $react.useEffect, Zl = function(t, r) { + var n = $react.useRef(!0); + yue(function() { + return t(n.current); + }, r), yue(function() { + return n.current = !1, function() { + n.current = !0; + }; + }, []); +}, _ue = function(t, r) { + Zl(function(n) { + if (!n) + return t(); + }, r); +}, nlt = fr({}, $react), Sue = nlt.useInsertionEffect, ilt = function(t, r, n) { + $react.useMemo(t, n), Zl(function() { + return r(!0); + }, n); +}, alt = Sue ? function(e, t, r) { + return Sue(function() { + return e(), t(); + }, r); +} : ilt; +const olt = alt; +var slt = fr({}, $react), llt = slt.useInsertionEffect, clt = function(t) { + var r = [], n = !1; + function i(a) { + n || r.push(a); + } + return $react.useEffect(function() { + return n = !1, function() { + n = !0, r.length && r.forEach(function(a) { + return a(); + }); + }; + }, t), i; +}, ult = function() { + return function(t) { + t(); + }; +}, hlt = typeof llt != "undefined" ? clt : ult; +const dlt = hlt; +function UY(e, t, r, n, i) { + var a = $react.useContext(yB), o = a.cache, l = [e].concat(Gn(t)), u = vG(l), d = dlt([u]), f = function(C) { + o.opUpdate(u, function(A) { + var S = A || [void 0, void 0], _ = Wr(S, 2), E = _[0], I = E === void 0 ? 0 : E, w = _[1], x = w, b = x || r(), R = [I, b]; + return C ? C(R) : R; + }); + }; + $react.useMemo( + function() { + f(); + }, + /* eslint-disable react-hooks/exhaustive-deps */ + [u] + /* eslint-enable */ + ); + var g = o.opGet(u), v = g[1]; + return olt(function() { + i == null || i(v); + }, function(y) { + return f(function(C) { + var A = Wr(C, 2), S = A[0], _ = A[1]; + return y && S === 0 && (i == null || i(v)), [S + 1, _]; + }), function() { + o.opUpdate(u, function(C) { + var A = C || [], S = Wr(A, 2), _ = S[0], E = _ === void 0 ? 0 : _, I = S[1], w = E - 1; + return w === 0 ? (d(function() { + (y || !o.opGet(u)) && (n == null || n(I, !1)); + }), null) : [E - 1, I]; + }); + }; + }, [u]), v; +} +var flt = {}, plt = "css", Db = /* @__PURE__ */ new Map(); +function glt(e) { + Db.set(e, (Db.get(e) || 0) + 1); +} +function vlt(e, t) { + if (typeof document != "undefined") { + var r = document.querySelectorAll("style[".concat(Xw, '="').concat(e, '"]')); + r.forEach(function(n) { + if (n[e0] === t) { + var i; + (i = n.parentNode) === null || i === void 0 || i.removeChild(n); + } + }); + } +} +var mlt = 0; +function ylt(e, t) { + Db.set(e, (Db.get(e) || 0) - 1); + var r = Array.from(Db.keys()), n = r.filter(function(i) { + var a = Db.get(i) || 0; + return a <= 0; + }); + r.length - n.length > mlt && n.forEach(function(i) { + vlt(i, t), Db.delete(i); + }); +} +var _lt = function(t, r, n, i) { + var a = n.getDerivativeToken(t), o = fr(fr({}, a), r); + return i && (o = i(o)), o; +}, OEe = "token"; +function Slt(e, t) { + var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, n = $react.useContext(yB), i = n.cache.instanceId, a = n.container, o = r.salt, l = o === void 0 ? "" : o, u = r.override, d = u === void 0 ? flt : u, f = r.formatToken, g = r.getComputedToken, v = r.cssVar, y = tlt(function() { + return Object.assign.apply(Object, [{}].concat(Gn(t))); + }, t), C = $1(y), A = $1(d), S = v ? $1(v) : "", _ = UY(OEe, [l, e.id, C, A, S], function() { + var E, I = g ? g(y, d, e) : _lt(y, d, e, f), w = fr({}, I), x = ""; + if (v) { + var b = DEe(I, v.key, { + prefix: v.prefix, + ignore: v.ignore, + unitless: v.unitless, + preserve: v.preserve + }), R = Wr(b, 2); + I = R[0], x = R[1]; + } + var M = mue(I, l); + I._tokenKey = M, w._tokenKey = mue(w, l); + var O = (E = v == null ? void 0 : v.key) !== null && E !== void 0 ? E : M; + I._themeKey = O, glt(O); + var P = "".concat(plt, "-").concat(u2(M)); + return I._hashId = P, [I, P, w, x, (v == null ? void 0 : v.key) || ""]; + }, function(E) { + ylt(E[0]._themeKey, i); + }, function(E) { + var I = Wr(E, 4), w = I[0], x = I[3]; + if (v && x) { + var b = Um(x, u2("css-variables-".concat(w._themeKey)), { + mark: Mp, + prepend: "queue", + attachTo: a, + priority: -999 + }); + b[e0] = i, b.setAttribute(Xw, w._themeKey); + } + }); + return _; +} +var blt = function(t, r, n) { + var i = Wr(t, 5), a = i[2], o = i[3], l = i[4], u = n || {}, d = u.plain; + if (!o) + return null; + var f = a._tokenKey, g = -999, v = { + "data-rc-order": "prependQueue", + "data-rc-priority": "".concat(g) + }, y = h2(o, l, f, v, d); + return [g, f, y]; +}, Elt = { + animationIterationCount: 1, + borderImageOutset: 1, + borderImageSlice: 1, + borderImageWidth: 1, + boxFlex: 1, + boxFlexGroup: 1, + boxOrdinalGroup: 1, + columnCount: 1, + columns: 1, + flex: 1, + flexGrow: 1, + flexPositive: 1, + flexShrink: 1, + flexNegative: 1, + flexOrder: 1, + gridRow: 1, + gridRowEnd: 1, + gridRowSpan: 1, + gridRowStart: 1, + gridColumn: 1, + gridColumnEnd: 1, + gridColumnSpan: 1, + gridColumnStart: 1, + msGridRow: 1, + msGridRowSpan: 1, + msGridColumn: 1, + msGridColumnSpan: 1, + fontWeight: 1, + lineHeight: 1, + opacity: 1, + order: 1, + orphans: 1, + tabSize: 1, + widows: 1, + zIndex: 1, + zoom: 1, + WebkitLineClamp: 1, + // SVG-related properties + fillOpacity: 1, + floodOpacity: 1, + stopOpacity: 1, + strokeDasharray: 1, + strokeDashoffset: 1, + strokeMiterlimit: 1, + strokeOpacity: 1, + strokeWidth: 1 +}, bue = "data-ant-cssinjs-cache-path", MEe = "_FILE_STYLE__", eE, kEe = !0; +function Clt() { + if (!eE && (eE = {}, md())) { + var e = document.createElement("div"); + e.className = bue, e.style.position = "fixed", e.style.visibility = "hidden", e.style.top = "-9999px", document.body.appendChild(e); + var t = getComputedStyle(e).content || ""; + t = t.replace(/^"/, "").replace(/"$/, ""), t.split(";").forEach(function(i) { + var a = i.split(":"), o = Wr(a, 2), l = o[0], u = o[1]; + eE[l] = u; + }); + var r = document.querySelector("style[".concat(bue, "]")); + if (r) { + var n; + kEe = !1, (n = r.parentNode) === null || n === void 0 || n.removeChild(r); + } + document.body.removeChild(e); + } +} +function Tlt(e) { + return Clt(), !!eE[e]; +} +function wlt(e) { + var t = eE[e], r = null; + if (t && md()) + if (kEe) + r = MEe; + else { + var n = document.querySelector("style[".concat(Mp, '="').concat(eE[e], '"]')); + n ? r = n.innerHTML : delete eE[e]; + } + return [r, t]; +} +var Ilt = "_skip_check_", PEe = "_multi_value_"; +function UN(e) { + var t = iL(Rpe(e), Dpe); + return t.replace(/\{%%%\:[^;];}/g, ";"); +} +function xlt(e) { + return Ja(e) === "object" && e && (Ilt in e || PEe in e); +} +function Alt(e, t, r) { + if (!t) + return e; + var n = ".".concat(t), i = r === "low" ? ":where(".concat(n, ")") : n, a = e.split(",").map(function(o) { + var l, u = o.trim().split(/\s+/), d = u[0] || "", f = ((l = d.match(/^\w+/)) === null || l === void 0 ? void 0 : l[0]) || ""; + return d = "".concat(f).concat(i).concat(d.slice(f.length)), [d].concat(Gn(u.slice(1))).join(" "); + }); + return a.join(","); +} +var Rlt = function e(t) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : { + root: !0, + parentSelectors: [] + }, i = n.root, a = n.injectHash, o = n.parentSelectors, l = r.hashId, u = r.layer; + r.path; + var d = r.hashPriority, f = r.transformers, g = f === void 0 ? [] : f; + r.linters; + var v = "", y = {}; + function C(_) { + var E = _.getName(l); + if (!y[E]) { + var I = e(_.style, r, { + root: !1, + parentSelectors: o + }), w = Wr(I, 1), x = w[0]; + y[E] = "@keyframes ".concat(_.getName(l)).concat(x); + } + } + function A(_) { + var E = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : []; + return _.forEach(function(I) { + Array.isArray(I) ? A(I, E) : I && E.push(I); + }), E; + } + var S = A(Array.isArray(t) ? t : [t]); + return S.forEach(function(_) { + var E = typeof _ == "string" && !i ? {} : _; + if (typeof E == "string") + v += "".concat(E, ` +`); + else if (E._keyframe) + C(E); + else { + var I = g.reduce(function(w, x) { + var b; + return (x == null || (b = x.visit) === null || b === void 0 ? void 0 : b.call(x, w)) || w; + }, E); + Object.keys(I).forEach(function(w) { + var x = I[w]; + if (Ja(x) === "object" && x && (w !== "animationName" || !x._keyframe) && !xlt(x)) { + var b = !1, R = w.trim(), M = !1; + (i || a) && l ? R.startsWith("@") ? b = !0 : R = Alt(w, l, d) : i && !l && (R === "&" || R === "") && (R = "", M = !0); + var O = e(x, r, { + root: M, + injectHash: b, + parentSelectors: [].concat(Gn(o), [R]) + }), P = Wr(O, 2), B = P[0], H = P[1]; + y = fr(fr({}, y), H), v += "".concat(R).concat(B); + } else { + let ee = function(ae, J) { + var ne = ae.replace(/[A-Z]/g, function(de) { + return "-".concat(de.toLowerCase()); + }), fe = J; + !Elt[ae] && typeof fe == "number" && fe !== 0 && (fe = "".concat(fe, "px")), ae === "animationName" && J !== null && J !== void 0 && J._keyframe && (C(J), fe = J.getName(l)), v += "".concat(ne, ":").concat(fe, ";"); + }; + var Y, X = (Y = x == null ? void 0 : x.value) !== null && Y !== void 0 ? Y : x; + Ja(x) === "object" && x !== null && x !== void 0 && x[PEe] && Array.isArray(X) ? X.forEach(function(ae) { + ee(w, ae); + }) : ee(w, X); + } + }); + } + }), i ? u && (v = "@layer ".concat(u.name, " {").concat(v, "}"), u.dependencies && (y["@layer ".concat(u.name)] = u.dependencies.map(function(_) { + return "@layer ".concat(_, ", ").concat(u.name, ";"); + }).join(` +`))) : v = "{".concat(v, "}"), [v, y]; +}; +function NEe(e, t) { + return u2("".concat(e.join("%")).concat(t)); +} +function Dlt() { + return null; +} +var LEe = "style"; +function _G(e, t) { + var r = e.token, n = e.path, i = e.hashId, a = e.layer, o = e.nonce, l = e.clientOnly, u = e.order, d = u === void 0 ? 0 : u, f = $react.useContext(yB), g = f.autoClear; + f.mock; + var v = f.defaultCache, y = f.hashPriority, C = f.container, A = f.ssrInline, S = f.transformers, _ = f.linters, E = f.cache, I = f.layer, w = r._tokenKey, x = [w]; + I && x.push("layer"), x.push.apply(x, Gn(n)); + var b = yG, R = UY( + LEe, + x, + // Create cache if needed + function() { + var H = x.join("|"); + if (Tlt(H)) { + var Y = wlt(H), X = Wr(Y, 2), ee = X[0], ae = X[1]; + if (ee) + return [ee, w, ae, {}, l, d]; + } + var J = t(), ne = Rlt(J, { + hashId: i, + hashPriority: y, + layer: I ? a : void 0, + path: n.join("-"), + transformers: S, + linters: _ + }), fe = Wr(ne, 2), de = fe[0], Te = fe[1], be = UN(de), Ve = NEe(x, be); + return [be, w, Ve, Te, l, d]; + }, + // Remove cache if no need + function(H, Y) { + var X = Wr(H, 3), ee = X[2]; + (Y || g) && yG && UR(ee, { + mark: Mp + }); + }, + // Effect: Inject style here + function(H) { + var Y = Wr(H, 4), X = Y[0]; + Y[1]; + var ee = Y[2], ae = Y[3]; + if (b && X !== MEe) { + var J = { + mark: Mp, + prepend: I ? !1 : "queue", + attachTo: C, + priority: d + }, ne = typeof o == "function" ? o() : o; + ne && (J.csp = { + nonce: ne + }); + var fe = [], de = []; + Object.keys(ae).forEach(function(be) { + be.startsWith("@layer") ? fe.push(be) : de.push(be); + }), fe.forEach(function(be) { + Um(UN(ae[be]), "_layer-".concat(be), fr(fr({}, J), {}, { + prepend: !0 + })); + }); + var Te = Um(X, ee, J); + Te[e0] = E.instanceId, Te.setAttribute(Xw, w), de.forEach(function(be) { + Um(UN(ae[be]), "_effect-".concat(be), J); + }); + } + } + ), M = Wr(R, 3), O = M[0], P = M[1], B = M[2]; + return function(H) { + var Y; + if (!A || b || !v) + Y = /* @__PURE__ */ dt(Dlt, {}); + else { + var X; + Y = /* @__PURE__ */ dt("style", rn(br({}, (X = {}, Kt(X, Xw, P), Kt(X, Mp, B), X)), { + dangerouslySetInnerHTML: { + __html: O + } + })); + } + return /* @__PURE__ */ gn(Ta, { + children: [Y, H] + }); + }; +} +var Olt = function(t, r, n) { + var i = Wr(t, 6), a = i[0], o = i[1], l = i[2], u = i[3], d = i[4], f = i[5], g = n || {}, v = g.plain; + if (d) + return null; + var y = a, C = { + "data-rc-order": "prependQueue", + "data-rc-priority": "".concat(f) + }; + return y = h2(a, o, l, C, v), u && Object.keys(u).forEach(function(A) { + if (!r[A]) { + r[A] = !0; + var S = UN(u[A]), _ = h2(S, o, "_effect-".concat(A), C, v); + A.startsWith("@layer") ? y = _ + y : y += _; + } + }), [f, l, y]; +}, FEe = "cssVar", Mlt = function(t, r) { + var n = t.key, i = t.prefix, a = t.unitless, o = t.ignore, l = t.token, u = t.scope, d = u === void 0 ? "" : u, f = $react.useContext(yB), g = f.cache.instanceId, v = f.container, y = l._tokenKey, C = [].concat(Gn(t.path), [n, d, y]), A = UY(FEe, C, function() { + var S = r(), _ = DEe(S, n, { + prefix: i, + unitless: a, + ignore: o, + scope: d + }), E = Wr(_, 2), I = E[0], w = E[1], x = NEe(C, w); + return [I, w, x, n]; + }, function(S) { + var _ = Wr(S, 3), E = _[2]; + yG && UR(E, { + mark: Mp + }); + }, function(S) { + var _ = Wr(S, 3), E = _[1], I = _[2]; + if (E) { + var w = Um(E, I, { + mark: Mp, + prepend: "queue", + attachTo: v, + priority: -999 + }); + w[e0] = g, w.setAttribute(Xw, n); + } + }); + return A; +}, klt = function(t, r, n) { + var i = Wr(t, 4), a = i[1], o = i[2], l = i[3], u = n || {}, d = u.plain; + if (!a) + return null; + var f = -999, g = { + "data-rc-order": "prependQueue", + "data-rc-priority": "".concat(f) + }, v = h2(a, l, o, g, d); + return [f, o, v]; +}, JA; +JA = {}, Kt(JA, LEe, Olt), Kt(JA, OEe, blt), Kt(JA, FEe, klt); +var Nf = /* @__PURE__ */ function() { + function e(t, r) { + Cd(this, e), Kt(this, "name", void 0), Kt(this, "style", void 0), Kt(this, "_keyframe", !0), this.name = t, this.style = r; + } + return Td(e, [{ + key: "getName", + value: function() { + var r = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; + return r ? "".concat(r, "-").concat(this.name) : this.name; + } + }]), e; +}(); +function $T(e) { + return e.notSplit = !0, e; +} +$T(["borderTop", "borderBottom"]), $T(["borderTop"]), $T(["borderBottom"]), $T(["borderLeft", "borderRight"]), $T(["borderLeft"]), $T(["borderRight"]); +var Plt = /* @__PURE__ */ $react.createContext({}); +const jY = Plt; +function Nlt(e) { + return bEe(e) || CEe(e) || LY(e) || EEe(); +} +function Kg(e, t) { + for (var r = e, n = 0; n < t.length; n += 1) { + if (r == null) + return; + r = r[t[n]]; + } + return r; +} +function BEe(e, t, r, n) { + if (!t.length) + return r; + var i = Nlt(t), a = i[0], o = i.slice(1), l; + return !e && typeof a == "number" ? l = [] : Array.isArray(e) ? l = Gn(e) : l = fr({}, e), n && r === void 0 && o.length === 1 ? delete l[a][o[0]] : l[a] = BEe(l[a], o, r, n), l; +} +function Ep(e, t, r) { + var n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1; + return t.length && n && r === void 0 && !Kg(e, t.slice(0, -1)) ? e : BEe(e, t, r, n); +} +function Llt(e) { + return Ja(e) === "object" && e !== null && Object.getPrototypeOf(e) === Object.prototype; +} +function Eue(e) { + return Array.isArray(e) ? [] : {}; +} +var Flt = typeof Reflect == "undefined" ? Object.keys : Reflect.ownKeys; +function hw() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r]; + var n = Eue(t[0]); + return t.forEach(function(i) { + function a(o, l) { + var u = new Set(l), d = Kg(i, o), f = Array.isArray(d); + if (f || Llt(d)) { + if (!u.has(d)) { + u.add(d); + var g = Kg(n, o); + f ? n = Ep(n, o, []) : (!g || Ja(g) !== "object") && (n = Ep(n, o, Eue(d))), Flt(d).forEach(function(v) { + a([].concat(Gn(o), [v]), u); + }); + } + } else + n = Ep(n, o, d); + } + a([]); + }), n; +} +const UEe = /* @__PURE__ */ $react.createContext(void 0); +var Blt = { + // Options + items_per_page: "/ page", + jump_to: "Go to", + jump_to_confirm: "confirm", + page: "Page", + // Pagination + prev_page: "Previous Page", + next_page: "Next Page", + prev_5: "Previous 5 Pages", + next_5: "Next 5 Pages", + prev_3: "Previous 3 Pages", + next_3: "Next 3 Pages", + page_size: "Page Size" +}, Ult = { + locale: "en_US", + today: "Today", + now: "Now", + backToToday: "Back to today", + ok: "OK", + clear: "Clear", + month: "Month", + year: "Year", + timeSelect: "select time", + dateSelect: "select date", + weekSelect: "Choose a week", + monthSelect: "Choose a month", + yearSelect: "Choose a year", + decadeSelect: "Choose a decade", + yearFormat: "YYYY", + dateFormat: "M/D/YYYY", + dayFormat: "D", + dateTimeFormat: "M/D/YYYY HH:mm:ss", + monthBeforeYear: !0, + previousMonth: "Previous month (PageUp)", + nextMonth: "Next month (PageDown)", + previousYear: "Last year (Control + left)", + nextYear: "Next year (Control + right)", + previousDecade: "Last decade", + nextDecade: "Next decade", + previousCentury: "Last century", + nextCentury: "Next century" +}; +const jlt = { + placeholder: "Select time", + rangePlaceholder: ["Start time", "End time"] +}, jEe = jlt, $lt = { + lang: Object.assign({ + placeholder: "Select date", + yearPlaceholder: "Select year", + quarterPlaceholder: "Select quarter", + monthPlaceholder: "Select month", + weekPlaceholder: "Select week", + rangePlaceholder: ["Start date", "End date"], + rangeYearPlaceholder: ["Start year", "End year"], + rangeQuarterPlaceholder: ["Start quarter", "End quarter"], + rangeMonthPlaceholder: ["Start month", "End month"], + rangeWeekPlaceholder: ["Start week", "End week"] + }, Ult), + timePickerLocale: Object.assign({}, jEe) +}, Cue = $lt, nd = "${label} is not a valid ${type}", Vlt = { + locale: "en", + Pagination: Blt, + DatePicker: Cue, + TimePicker: jEe, + Calendar: Cue, + global: { + placeholder: "Please select" + }, + Table: { + filterTitle: "Filter menu", + filterConfirm: "OK", + filterReset: "Reset", + filterEmptyText: "No filters", + filterCheckall: "Select all items", + filterSearchPlaceholder: "Search in filters", + emptyText: "No data", + selectAll: "Select current page", + selectInvert: "Invert current page", + selectNone: "Clear all data", + selectionAll: "Select all data", + sortTitle: "Sort", + expand: "Expand row", + collapse: "Collapse row", + triggerDesc: "Click to sort descending", + triggerAsc: "Click to sort ascending", + cancelSort: "Click to cancel sorting" + }, + Tour: { + Next: "Next", + Previous: "Previous", + Finish: "Finish" + }, + Modal: { + okText: "OK", + cancelText: "Cancel", + justOkText: "OK" + }, + Popconfirm: { + okText: "OK", + cancelText: "Cancel" + }, + Transfer: { + titles: ["", ""], + searchPlaceholder: "Search here", + itemUnit: "item", + itemsUnit: "items", + remove: "Remove", + selectCurrent: "Select current page", + removeCurrent: "Remove current page", + selectAll: "Select all data", + removeAll: "Remove all data", + selectInvert: "Invert current page" + }, + Upload: { + uploading: "Uploading...", + removeFile: "Remove file", + uploadError: "Upload error", + previewFile: "Preview file", + downloadFile: "Download file" + }, + Empty: { + description: "No data" + }, + Icon: { + icon: "icon" + }, + Text: { + edit: "Edit", + copy: "Copy", + copied: "Copied", + expand: "Expand" + }, + PageHeader: { + back: "Back" + }, + Form: { + optional: "(optional)", + defaultValidateMessages: { + default: "Field validation error for ${label}", + required: "Please enter ${label}", + enum: "${label} must be one of [${enum}]", + whitespace: "${label} cannot be a blank character", + date: { + format: "${label} date format is invalid", + parse: "${label} cannot be converted to a date", + invalid: "${label} is an invalid date" + }, + types: { + string: nd, + method: nd, + array: nd, + object: nd, + number: nd, + date: nd, + boolean: nd, + integer: nd, + float: nd, + regexp: nd, + email: nd, + url: nd, + hex: nd + }, + string: { + len: "${label} must be ${len} characters", + min: "${label} must be at least ${min} characters", + max: "${label} must be up to ${max} characters", + range: "${label} must be between ${min}-${max} characters" + }, + number: { + len: "${label} must be equal to ${len}", + min: "${label} must be minimum ${min}", + max: "${label} must be maximum ${max}", + range: "${label} must be between ${min}-${max}" + }, + array: { + len: "Must be ${len} ${label}", + min: "At least ${min} ${label}", + max: "At most ${max} ${label}", + range: "The amount of ${label} must be between ${min}-${max}" + }, + pattern: { + mismatch: "${label} does not match the pattern ${pattern}" + } + } + }, + Image: { + preview: "Preview" + }, + QRCode: { + expired: "QR code expired", + refresh: "Refresh", + scanned: "Scanned" + }, + ColorPicker: { + presetEmpty: "Empty" + } +}, SE = Vlt; +Object.assign({}, SE.Modal); +let jN = []; +const Tue = () => jN.reduce((e, t) => Object.assign(Object.assign({}, e), t), SE.Modal); +function zlt(e) { + if (e) { + const t = Object.assign({}, e); + return jN.push(t), Tue(), () => { + jN = jN.filter((r) => r !== t), Tue(); + }; + } + Object.assign({}, SE.Modal); +} +const Hlt = /* @__PURE__ */ $react.createContext(void 0), $Y = Hlt, Wlt = (e, t) => { + const r = $react.useContext($Y), n = $react.useMemo(() => { + var a; + const o = t || SE[e], l = (a = r == null ? void 0 : r[e]) !== null && a !== void 0 ? a : {}; + return Object.assign(Object.assign({}, typeof o == "function" ? o() : o), l || {}); + }, [e, t, r]), i = $react.useMemo(() => { + const a = r == null ? void 0 : r.locale; + return r != null && r.exist && !a ? SE.locale : a; + }, [r]); + return [n, i]; +}, Glt = Wlt, Ylt = "internalMark", Xlt = (e) => { + const { + locale: t = {}, + children: r, + _ANT_MARK__: n + } = e; + $react.useEffect(() => zlt(t && t.Modal), [t]); + const i = $react.useMemo(() => Object.assign(Object.assign({}, t), { + exist: !0 + }), [t]); + return /* @__PURE__ */ dt($Y.Provider, { + value: i, + children: r + }); +}, Klt = Xlt; +function _c(e, t) { + Zlt(e) && (e = "100%"); + var r = qlt(e); + return e = t === 360 ? e : Math.min(t, Math.max(0, parseFloat(e))), r && (e = parseInt(String(e * t), 10) / 100), Math.abs(e - t) < 1e-6 ? 1 : (t === 360 ? e = (e < 0 ? e % t + t : e % t) / parseFloat(String(t)) : e = e % t / parseFloat(String(t)), e); +} +function NP(e) { + return Math.min(1, Math.max(0, e)); +} +function Zlt(e) { + return typeof e == "string" && e.indexOf(".") !== -1 && parseFloat(e) === 1; +} +function qlt(e) { + return typeof e == "string" && e.indexOf("%") !== -1; +} +function $Ee(e) { + return e = parseFloat(e), (isNaN(e) || e < 0 || e > 1) && (e = 1), e; +} +function LP(e) { + return e <= 1 ? "".concat(Number(e) * 100, "%") : e; +} +function $b(e) { + return e.length === 1 ? "0" + e : String(e); +} +function Jlt(e, t, r) { + return { + r: _c(e, 255) * 255, + g: _c(t, 255) * 255, + b: _c(r, 255) * 255 + }; +} +function wue(e, t, r) { + e = _c(e, 255), t = _c(t, 255), r = _c(r, 255); + var n = Math.max(e, t, r), i = Math.min(e, t, r), a = 0, o = 0, l = (n + i) / 2; + if (n === i) + o = 0, a = 0; + else { + var u = n - i; + switch (o = l > 0.5 ? u / (2 - n - i) : u / (n + i), n) { + case e: + a = (t - r) / u + (t < r ? 6 : 0); + break; + case t: + a = (r - e) / u + 2; + break; + case r: + a = (e - t) / u + 4; + break; + } + a /= 6; + } + return { h: a, s: o, l }; +} +function X3(e, t, r) { + return r < 0 && (r += 1), r > 1 && (r -= 1), r < 1 / 6 ? e + (t - e) * (6 * r) : r < 1 / 2 ? t : r < 2 / 3 ? e + (t - e) * (2 / 3 - r) * 6 : e; +} +function Qlt(e, t, r) { + var n, i, a; + if (e = _c(e, 360), t = _c(t, 100), r = _c(r, 100), t === 0) + i = r, a = r, n = r; + else { + var o = r < 0.5 ? r * (1 + t) : r + t - r * t, l = 2 * r - o; + n = X3(l, o, e + 1 / 3), i = X3(l, o, e), a = X3(l, o, e - 1 / 3); + } + return { r: n * 255, g: i * 255, b: a * 255 }; +} +function SG(e, t, r) { + e = _c(e, 255), t = _c(t, 255), r = _c(r, 255); + var n = Math.max(e, t, r), i = Math.min(e, t, r), a = 0, o = n, l = n - i, u = n === 0 ? 0 : l / n; + if (n === i) + a = 0; + else { + switch (n) { + case e: + a = (t - r) / l + (t < r ? 6 : 0); + break; + case t: + a = (r - e) / l + 2; + break; + case r: + a = (e - t) / l + 4; + break; + } + a /= 6; + } + return { h: a, s: u, v: o }; +} +function ect(e, t, r) { + e = _c(e, 360) * 6, t = _c(t, 100), r = _c(r, 100); + var n = Math.floor(e), i = e - n, a = r * (1 - t), o = r * (1 - i * t), l = r * (1 - (1 - i) * t), u = n % 6, d = [r, o, a, a, l, r][u], f = [l, r, r, o, a, a][u], g = [a, a, l, r, r, o][u]; + return { r: d * 255, g: f * 255, b: g * 255 }; +} +function bG(e, t, r, n) { + var i = [ + $b(Math.round(e).toString(16)), + $b(Math.round(t).toString(16)), + $b(Math.round(r).toString(16)) + ]; + return n && i[0].startsWith(i[0].charAt(1)) && i[1].startsWith(i[1].charAt(1)) && i[2].startsWith(i[2].charAt(1)) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) : i.join(""); +} +function tct(e, t, r, n, i) { + var a = [ + $b(Math.round(e).toString(16)), + $b(Math.round(t).toString(16)), + $b(Math.round(r).toString(16)), + $b(rct(n)) + ]; + return i && a[0].startsWith(a[0].charAt(1)) && a[1].startsWith(a[1].charAt(1)) && a[2].startsWith(a[2].charAt(1)) && a[3].startsWith(a[3].charAt(1)) ? a[0].charAt(0) + a[1].charAt(0) + a[2].charAt(0) + a[3].charAt(0) : a.join(""); +} +function rct(e) { + return Math.round(parseFloat(e) * 255).toString(16); +} +function Iue(e) { + return ad(e) / 255; +} +function ad(e) { + return parseInt(e, 16); +} +function nct(e) { + return { + r: e >> 16, + g: (e & 65280) >> 8, + b: e & 255 + }; +} +var EG = { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000000", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + goldenrod: "#daa520", + gold: "#ffd700", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + lavenderblush: "#fff0f5", + lavender: "#e6e6fa", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + rebeccapurple: "#663399", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00", + yellowgreen: "#9acd32" +}; +function ew(e) { + var t = { r: 0, g: 0, b: 0 }, r = 1, n = null, i = null, a = null, o = !1, l = !1; + return typeof e == "string" && (e = oct(e)), typeof e == "object" && (Em(e.r) && Em(e.g) && Em(e.b) ? (t = Jlt(e.r, e.g, e.b), o = !0, l = String(e.r).substr(-1) === "%" ? "prgb" : "rgb") : Em(e.h) && Em(e.s) && Em(e.v) ? (n = LP(e.s), i = LP(e.v), t = ect(e.h, n, i), o = !0, l = "hsv") : Em(e.h) && Em(e.s) && Em(e.l) && (n = LP(e.s), a = LP(e.l), t = Qlt(e.h, n, a), o = !0, l = "hsl"), Object.prototype.hasOwnProperty.call(e, "a") && (r = e.a)), r = $Ee(r), { + ok: o, + format: e.format || l, + r: Math.min(255, Math.max(t.r, 0)), + g: Math.min(255, Math.max(t.g, 0)), + b: Math.min(255, Math.max(t.b, 0)), + a: r + }; +} +var ict = "[-\\+]?\\d+%?", act = "[-\\+]?\\d*\\.\\d+%?", t0 = "(?:".concat(act, ")|(?:").concat(ict, ")"), K3 = "[\\s|\\(]+(".concat(t0, ")[,|\\s]+(").concat(t0, ")[,|\\s]+(").concat(t0, ")\\s*\\)?"), Z3 = "[\\s|\\(]+(".concat(t0, ")[,|\\s]+(").concat(t0, ")[,|\\s]+(").concat(t0, ")[,|\\s]+(").concat(t0, ")\\s*\\)?"), mp = { + CSS_UNIT: new RegExp(t0), + rgb: new RegExp("rgb" + K3), + rgba: new RegExp("rgba" + Z3), + hsl: new RegExp("hsl" + K3), + hsla: new RegExp("hsla" + Z3), + hsv: new RegExp("hsv" + K3), + hsva: new RegExp("hsva" + Z3), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ +}; +function oct(e) { + if (e = e.trim().toLowerCase(), e.length === 0) + return !1; + var t = !1; + if (EG[e]) + e = EG[e], t = !0; + else if (e === "transparent") + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + var r = mp.rgb.exec(e); + return r ? { r: r[1], g: r[2], b: r[3] } : (r = mp.rgba.exec(e), r ? { r: r[1], g: r[2], b: r[3], a: r[4] } : (r = mp.hsl.exec(e), r ? { h: r[1], s: r[2], l: r[3] } : (r = mp.hsla.exec(e), r ? { h: r[1], s: r[2], l: r[3], a: r[4] } : (r = mp.hsv.exec(e), r ? { h: r[1], s: r[2], v: r[3] } : (r = mp.hsva.exec(e), r ? { h: r[1], s: r[2], v: r[3], a: r[4] } : (r = mp.hex8.exec(e), r ? { + r: ad(r[1]), + g: ad(r[2]), + b: ad(r[3]), + a: Iue(r[4]), + format: t ? "name" : "hex8" + } : (r = mp.hex6.exec(e), r ? { + r: ad(r[1]), + g: ad(r[2]), + b: ad(r[3]), + format: t ? "name" : "hex" + } : (r = mp.hex4.exec(e), r ? { + r: ad(r[1] + r[1]), + g: ad(r[2] + r[2]), + b: ad(r[3] + r[3]), + a: Iue(r[4] + r[4]), + format: t ? "name" : "hex8" + } : (r = mp.hex3.exec(e), r ? { + r: ad(r[1] + r[1]), + g: ad(r[2] + r[2]), + b: ad(r[3] + r[3]), + format: t ? "name" : "hex" + } : !1))))))))); +} +function Em(e) { + return !!mp.CSS_UNIT.exec(String(e)); +} +var ud = ( + /** @class */ + function() { + function e(t, r) { + t === void 0 && (t = ""), r === void 0 && (r = {}); + var n; + if (t instanceof e) + return t; + typeof t == "number" && (t = nct(t)), this.originalInput = t; + var i = ew(t); + this.originalInput = t, this.r = i.r, this.g = i.g, this.b = i.b, this.a = i.a, this.roundA = Math.round(100 * this.a) / 100, this.format = (n = r.format) !== null && n !== void 0 ? n : i.format, this.gradientType = r.gradientType, this.r < 1 && (this.r = Math.round(this.r)), this.g < 1 && (this.g = Math.round(this.g)), this.b < 1 && (this.b = Math.round(this.b)), this.isValid = i.ok; + } + return e.prototype.isDark = function() { + return this.getBrightness() < 128; + }, e.prototype.isLight = function() { + return !this.isDark(); + }, e.prototype.getBrightness = function() { + var t = this.toRgb(); + return (t.r * 299 + t.g * 587 + t.b * 114) / 1e3; + }, e.prototype.getLuminance = function() { + var t = this.toRgb(), r, n, i, a = t.r / 255, o = t.g / 255, l = t.b / 255; + return a <= 0.03928 ? r = a / 12.92 : r = Math.pow((a + 0.055) / 1.055, 2.4), o <= 0.03928 ? n = o / 12.92 : n = Math.pow((o + 0.055) / 1.055, 2.4), l <= 0.03928 ? i = l / 12.92 : i = Math.pow((l + 0.055) / 1.055, 2.4), 0.2126 * r + 0.7152 * n + 0.0722 * i; + }, e.prototype.getAlpha = function() { + return this.a; + }, e.prototype.setAlpha = function(t) { + return this.a = $Ee(t), this.roundA = Math.round(100 * this.a) / 100, this; + }, e.prototype.isMonochrome = function() { + var t = this.toHsl().s; + return t === 0; + }, e.prototype.toHsv = function() { + var t = SG(this.r, this.g, this.b); + return { h: t.h * 360, s: t.s, v: t.v, a: this.a }; + }, e.prototype.toHsvString = function() { + var t = SG(this.r, this.g, this.b), r = Math.round(t.h * 360), n = Math.round(t.s * 100), i = Math.round(t.v * 100); + return this.a === 1 ? "hsv(".concat(r, ", ").concat(n, "%, ").concat(i, "%)") : "hsva(".concat(r, ", ").concat(n, "%, ").concat(i, "%, ").concat(this.roundA, ")"); + }, e.prototype.toHsl = function() { + var t = wue(this.r, this.g, this.b); + return { h: t.h * 360, s: t.s, l: t.l, a: this.a }; + }, e.prototype.toHslString = function() { + var t = wue(this.r, this.g, this.b), r = Math.round(t.h * 360), n = Math.round(t.s * 100), i = Math.round(t.l * 100); + return this.a === 1 ? "hsl(".concat(r, ", ").concat(n, "%, ").concat(i, "%)") : "hsla(".concat(r, ", ").concat(n, "%, ").concat(i, "%, ").concat(this.roundA, ")"); + }, e.prototype.toHex = function(t) { + return t === void 0 && (t = !1), bG(this.r, this.g, this.b, t); + }, e.prototype.toHexString = function(t) { + return t === void 0 && (t = !1), "#" + this.toHex(t); + }, e.prototype.toHex8 = function(t) { + return t === void 0 && (t = !1), tct(this.r, this.g, this.b, this.a, t); + }, e.prototype.toHex8String = function(t) { + return t === void 0 && (t = !1), "#" + this.toHex8(t); + }, e.prototype.toHexShortString = function(t) { + return t === void 0 && (t = !1), this.a === 1 ? this.toHexString(t) : this.toHex8String(t); + }, e.prototype.toRgb = function() { + return { + r: Math.round(this.r), + g: Math.round(this.g), + b: Math.round(this.b), + a: this.a + }; + }, e.prototype.toRgbString = function() { + var t = Math.round(this.r), r = Math.round(this.g), n = Math.round(this.b); + return this.a === 1 ? "rgb(".concat(t, ", ").concat(r, ", ").concat(n, ")") : "rgba(".concat(t, ", ").concat(r, ", ").concat(n, ", ").concat(this.roundA, ")"); + }, e.prototype.toPercentageRgb = function() { + var t = function(r) { + return "".concat(Math.round(_c(r, 255) * 100), "%"); + }; + return { + r: t(this.r), + g: t(this.g), + b: t(this.b), + a: this.a + }; + }, e.prototype.toPercentageRgbString = function() { + var t = function(r) { + return Math.round(_c(r, 255) * 100); + }; + return this.a === 1 ? "rgb(".concat(t(this.r), "%, ").concat(t(this.g), "%, ").concat(t(this.b), "%)") : "rgba(".concat(t(this.r), "%, ").concat(t(this.g), "%, ").concat(t(this.b), "%, ").concat(this.roundA, ")"); + }, e.prototype.toName = function() { + if (this.a === 0) + return "transparent"; + if (this.a < 1) + return !1; + for (var t = "#" + bG(this.r, this.g, this.b, !1), r = 0, n = Object.entries(EG); r < n.length; r++) { + var i = n[r], a = i[0], o = i[1]; + if (t === o) + return a; + } + return !1; + }, e.prototype.toString = function(t) { + var r = !!t; + t = t != null ? t : this.format; + var n = !1, i = this.a < 1 && this.a >= 0, a = !r && i && (t.startsWith("hex") || t === "name"); + return a ? t === "name" && this.a === 0 ? this.toName() : this.toRgbString() : (t === "rgb" && (n = this.toRgbString()), t === "prgb" && (n = this.toPercentageRgbString()), (t === "hex" || t === "hex6") && (n = this.toHexString()), t === "hex3" && (n = this.toHexString(!0)), t === "hex4" && (n = this.toHex8String(!0)), t === "hex8" && (n = this.toHex8String()), t === "name" && (n = this.toName()), t === "hsl" && (n = this.toHslString()), t === "hsv" && (n = this.toHsvString()), n || this.toHexString()); + }, e.prototype.toNumber = function() { + return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b); + }, e.prototype.clone = function() { + return new e(this.toString()); + }, e.prototype.lighten = function(t) { + t === void 0 && (t = 10); + var r = this.toHsl(); + return r.l += t / 100, r.l = NP(r.l), new e(r); + }, e.prototype.brighten = function(t) { + t === void 0 && (t = 10); + var r = this.toRgb(); + return r.r = Math.max(0, Math.min(255, r.r - Math.round(255 * -(t / 100)))), r.g = Math.max(0, Math.min(255, r.g - Math.round(255 * -(t / 100)))), r.b = Math.max(0, Math.min(255, r.b - Math.round(255 * -(t / 100)))), new e(r); + }, e.prototype.darken = function(t) { + t === void 0 && (t = 10); + var r = this.toHsl(); + return r.l -= t / 100, r.l = NP(r.l), new e(r); + }, e.prototype.tint = function(t) { + return t === void 0 && (t = 10), this.mix("white", t); + }, e.prototype.shade = function(t) { + return t === void 0 && (t = 10), this.mix("black", t); + }, e.prototype.desaturate = function(t) { + t === void 0 && (t = 10); + var r = this.toHsl(); + return r.s -= t / 100, r.s = NP(r.s), new e(r); + }, e.prototype.saturate = function(t) { + t === void 0 && (t = 10); + var r = this.toHsl(); + return r.s += t / 100, r.s = NP(r.s), new e(r); + }, e.prototype.greyscale = function() { + return this.desaturate(100); + }, e.prototype.spin = function(t) { + var r = this.toHsl(), n = (r.h + t) % 360; + return r.h = n < 0 ? 360 + n : n, new e(r); + }, e.prototype.mix = function(t, r) { + r === void 0 && (r = 50); + var n = this.toRgb(), i = new e(t).toRgb(), a = r / 100, o = { + r: (i.r - n.r) * a + n.r, + g: (i.g - n.g) * a + n.g, + b: (i.b - n.b) * a + n.b, + a: (i.a - n.a) * a + n.a + }; + return new e(o); + }, e.prototype.analogous = function(t, r) { + t === void 0 && (t = 6), r === void 0 && (r = 30); + var n = this.toHsl(), i = 360 / r, a = [this]; + for (n.h = (n.h - (i * t >> 1) + 720) % 360; --t; ) + n.h = (n.h + i) % 360, a.push(new e(n)); + return a; + }, e.prototype.complement = function() { + var t = this.toHsl(); + return t.h = (t.h + 180) % 360, new e(t); + }, e.prototype.monochromatic = function(t) { + t === void 0 && (t = 6); + for (var r = this.toHsv(), n = r.h, i = r.s, a = r.v, o = [], l = 1 / t; t--; ) + o.push(new e({ h: n, s: i, v: a })), a = (a + l) % 1; + return o; + }, e.prototype.splitcomplement = function() { + var t = this.toHsl(), r = t.h; + return [ + this, + new e({ h: (r + 72) % 360, s: t.s, l: t.l }), + new e({ h: (r + 216) % 360, s: t.s, l: t.l }) + ]; + }, e.prototype.onBackground = function(t) { + var r = this.toRgb(), n = new e(t).toRgb(), i = r.a + n.a * (1 - r.a); + return new e({ + r: (r.r * r.a + n.r * n.a * (1 - r.a)) / i, + g: (r.g * r.a + n.g * n.a * (1 - r.a)) / i, + b: (r.b * r.a + n.b * n.a * (1 - r.a)) / i, + a: i + }); + }, e.prototype.triad = function() { + return this.polyad(3); + }, e.prototype.tetrad = function() { + return this.polyad(4); + }, e.prototype.polyad = function(t) { + for (var r = this.toHsl(), n = r.h, i = [this], a = 360 / t, o = 1; o < t; o++) + i.push(new e({ h: (n + o * a) % 360, s: r.s, l: r.l })); + return i; + }, e.prototype.equals = function(t) { + return this.toRgbString() === new e(t).toRgbString(); + }, e; + }() +), FP = 2, xue = 0.16, sct = 0.05, lct = 0.05, cct = 0.15, VEe = 5, zEe = 4, uct = [{ + index: 7, + opacity: 0.15 +}, { + index: 6, + opacity: 0.25 +}, { + index: 5, + opacity: 0.3 +}, { + index: 5, + opacity: 0.45 +}, { + index: 5, + opacity: 0.65 +}, { + index: 5, + opacity: 0.85 +}, { + index: 4, + opacity: 0.9 +}, { + index: 3, + opacity: 0.95 +}, { + index: 2, + opacity: 0.97 +}, { + index: 1, + opacity: 0.98 +}]; +function Aue(e) { + var t = e.r, r = e.g, n = e.b, i = SG(t, r, n); + return { + h: i.h * 360, + s: i.s, + v: i.v + }; +} +function BP(e) { + var t = e.r, r = e.g, n = e.b; + return "#".concat(bG(t, r, n, !1)); +} +function hct(e, t, r) { + var n = r / 100, i = { + r: (t.r - e.r) * n + e.r, + g: (t.g - e.g) * n + e.g, + b: (t.b - e.b) * n + e.b + }; + return i; +} +function Rue(e, t, r) { + var n; + return Math.round(e.h) >= 60 && Math.round(e.h) <= 240 ? n = r ? Math.round(e.h) - FP * t : Math.round(e.h) + FP * t : n = r ? Math.round(e.h) + FP * t : Math.round(e.h) - FP * t, n < 0 ? n += 360 : n >= 360 && (n -= 360), n; +} +function Due(e, t, r) { + if (e.h === 0 && e.s === 0) + return e.s; + var n; + return r ? n = e.s - xue * t : t === zEe ? n = e.s + xue : n = e.s + sct * t, n > 1 && (n = 1), r && t === VEe && n > 0.1 && (n = 0.1), n < 0.06 && (n = 0.06), Number(n.toFixed(2)); +} +function Oue(e, t, r) { + var n; + return r ? n = e.v + lct * t : n = e.v - cct * t, n > 1 && (n = 1), Number(n.toFixed(2)); +} +function bE(e) { + for (var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, r = [], n = ew(e), i = VEe; i > 0; i -= 1) { + var a = Aue(n), o = BP(ew({ + h: Rue(a, i, !0), + s: Due(a, i, !0), + v: Oue(a, i, !0) + })); + r.push(o); + } + r.push(BP(n)); + for (var l = 1; l <= zEe; l += 1) { + var u = Aue(n), d = BP(ew({ + h: Rue(u, l), + s: Due(u, l), + v: Oue(u, l) + })); + r.push(d); + } + return t.theme === "dark" ? uct.map(function(f) { + var g = f.index, v = f.opacity, y = BP(hct(ew(t.backgroundColor || "#141414"), ew(r[g]), v * 100)); + return y; + }) : r; +} +var q3 = { + red: "#F5222D", + volcano: "#FA541C", + orange: "#FA8C16", + gold: "#FAAD14", + yellow: "#FADB14", + lime: "#A0D911", + green: "#52C41A", + cyan: "#13C2C2", + blue: "#1677FF", + geekblue: "#2F54EB", + purple: "#722ED1", + magenta: "#EB2F96", + grey: "#666666" +}, $N = {}, J3 = {}; +Object.keys(q3).forEach(function(e) { + $N[e] = bE(q3[e]), $N[e].primary = $N[e][5], J3[e] = bE(q3[e], { + theme: "dark", + backgroundColor: "#141414" + }), J3[e].primary = J3[e][5]; +}); +var dct = $N.blue; +const fct = (e) => { + const { + controlHeight: t + } = e; + return { + controlHeightSM: t * 0.75, + controlHeightXS: t * 0.5, + controlHeightLG: t * 1.25 + }; +}, pct = fct; +function gct(e) { + const { + sizeUnit: t, + sizeStep: r + } = e; + return { + sizeXXL: t * (r + 8), + // 48 + sizeXL: t * (r + 4), + // 32 + sizeLG: t * (r + 2), + // 24 + sizeMD: t * (r + 1), + // 20 + sizeMS: t * r, + // 16 + size: t * r, + // 16 + sizeSM: t * (r - 1), + // 12 + sizeXS: t * (r - 2), + // 8 + sizeXXS: t * (r - 3) + // 4 + }; +} +const HEe = { + blue: "#1677ff", + purple: "#722ED1", + cyan: "#13C2C2", + green: "#52C41A", + magenta: "#EB2F96", + pink: "#eb2f96", + red: "#F5222D", + orange: "#FA8C16", + yellow: "#FADB14", + volcano: "#FA541C", + geekblue: "#2F54EB", + gold: "#FAAD14", + lime: "#A0D911" +}, vct = Object.assign(Object.assign({}, HEe), { + // Color + colorPrimary: "#1677ff", + colorSuccess: "#52c41a", + colorWarning: "#faad14", + colorError: "#ff4d4f", + colorInfo: "#1677ff", + colorLink: "", + colorTextBase: "", + colorBgBase: "", + // Font + fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, +'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', +'Noto Color Emoji'`, + fontFamilyCode: "'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace", + fontSize: 14, + // Line + lineWidth: 1, + lineType: "solid", + // Motion + motionUnit: 0.1, + motionBase: 0, + motionEaseOutCirc: "cubic-bezier(0.08, 0.82, 0.17, 1)", + motionEaseInOutCirc: "cubic-bezier(0.78, 0.14, 0.15, 0.86)", + motionEaseOut: "cubic-bezier(0.215, 0.61, 0.355, 1)", + motionEaseInOut: "cubic-bezier(0.645, 0.045, 0.355, 1)", + motionEaseOutBack: "cubic-bezier(0.12, 0.4, 0.29, 1.46)", + motionEaseInBack: "cubic-bezier(0.71, -0.46, 0.88, 0.6)", + motionEaseInQuint: "cubic-bezier(0.755, 0.05, 0.855, 0.06)", + motionEaseOutQuint: "cubic-bezier(0.23, 1, 0.32, 1)", + // Radius + borderRadius: 6, + // Size + sizeUnit: 4, + sizeStep: 4, + sizePopupArrow: 16, + // Control Base + controlHeight: 32, + // zIndex + zIndexBase: 0, + zIndexPopupBase: 1e3, + // Image + opacityImage: 1, + // Wireframe + wireframe: !1, + // Motion + motion: !0 +}), jR = vct; +function mct(e, t) { + let { + generateColorPalettes: r, + generateNeutralColorPalettes: n + } = t; + const { + colorSuccess: i, + colorWarning: a, + colorError: o, + colorInfo: l, + colorPrimary: u, + colorBgBase: d, + colorTextBase: f + } = e, g = r(u), v = r(i), y = r(a), C = r(o), A = r(l), S = n(d, f), _ = e.colorLink || e.colorInfo, E = r(_); + return Object.assign(Object.assign({}, S), { + colorPrimaryBg: g[1], + colorPrimaryBgHover: g[2], + colorPrimaryBorder: g[3], + colorPrimaryBorderHover: g[4], + colorPrimaryHover: g[5], + colorPrimary: g[6], + colorPrimaryActive: g[7], + colorPrimaryTextHover: g[8], + colorPrimaryText: g[9], + colorPrimaryTextActive: g[10], + colorSuccessBg: v[1], + colorSuccessBgHover: v[2], + colorSuccessBorder: v[3], + colorSuccessBorderHover: v[4], + colorSuccessHover: v[4], + colorSuccess: v[6], + colorSuccessActive: v[7], + colorSuccessTextHover: v[8], + colorSuccessText: v[9], + colorSuccessTextActive: v[10], + colorErrorBg: C[1], + colorErrorBgHover: C[2], + colorErrorBorder: C[3], + colorErrorBorderHover: C[4], + colorErrorHover: C[5], + colorError: C[6], + colorErrorActive: C[7], + colorErrorTextHover: C[8], + colorErrorText: C[9], + colorErrorTextActive: C[10], + colorWarningBg: y[1], + colorWarningBgHover: y[2], + colorWarningBorder: y[3], + colorWarningBorderHover: y[4], + colorWarningHover: y[4], + colorWarning: y[6], + colorWarningActive: y[7], + colorWarningTextHover: y[8], + colorWarningText: y[9], + colorWarningTextActive: y[10], + colorInfoBg: A[1], + colorInfoBgHover: A[2], + colorInfoBorder: A[3], + colorInfoBorderHover: A[4], + colorInfoHover: A[4], + colorInfo: A[6], + colorInfoActive: A[7], + colorInfoTextHover: A[8], + colorInfoText: A[9], + colorInfoTextActive: A[10], + colorLinkHover: E[4], + colorLink: E[6], + colorLinkActive: E[7], + colorBgMask: new ud("#000").setAlpha(0.45).toRgbString(), + colorWhite: "#fff" + }); +} +const yct = (e) => { + let t = e, r = e, n = e, i = e; + return e < 6 && e >= 5 ? t = e + 1 : e < 16 && e >= 6 ? t = e + 2 : e >= 16 && (t = 16), e < 7 && e >= 5 ? r = 4 : e < 8 && e >= 7 ? r = 5 : e < 14 && e >= 8 ? r = 6 : e < 16 && e >= 14 ? r = 7 : e >= 16 && (r = 8), e < 6 && e >= 2 ? n = 1 : e >= 6 && (n = 2), e > 4 && e < 8 ? i = 4 : e >= 8 && (i = 6), { + borderRadius: e, + borderRadiusXS: n, + borderRadiusSM: r, + borderRadiusLG: t, + borderRadiusOuter: i + }; +}, _ct = yct; +function Sct(e) { + const { + motionUnit: t, + motionBase: r, + borderRadius: n, + lineWidth: i + } = e; + return Object.assign({ + // motion + motionDurationFast: `${(r + t).toFixed(1)}s`, + motionDurationMid: `${(r + t * 2).toFixed(1)}s`, + motionDurationSlow: `${(r + t * 3).toFixed(1)}s`, + // line + lineWidthBold: i + 1 + }, _ct(n)); +} +const Cm = (e, t) => new ud(e).setAlpha(t).toRgbString(), QA = (e, t) => new ud(e).darken(t).toHexString(), bct = (e) => { + const t = bE(e); + return { + 1: t[0], + 2: t[1], + 3: t[2], + 4: t[3], + 5: t[4], + 6: t[5], + 7: t[6], + 8: t[4], + 9: t[5], + 10: t[6] + // 8: colors[7], + // 9: colors[8], + // 10: colors[9], + }; +}, Ect = (e, t) => { + const r = e || "#fff", n = t || "#000"; + return { + colorBgBase: r, + colorTextBase: n, + colorText: Cm(n, 0.88), + colorTextSecondary: Cm(n, 0.65), + colorTextTertiary: Cm(n, 0.45), + colorTextQuaternary: Cm(n, 0.25), + colorFill: Cm(n, 0.15), + colorFillSecondary: Cm(n, 0.06), + colorFillTertiary: Cm(n, 0.04), + colorFillQuaternary: Cm(n, 0.02), + colorBgLayout: QA(r, 4), + colorBgContainer: QA(r, 0), + colorBgElevated: QA(r, 0), + colorBgSpotlight: Cm(n, 0.85), + colorBgBlur: "transparent", + colorBorder: QA(r, 15), + colorBorderSecondary: QA(r, 6) + }; +}; +function VN(e) { + return (e + 8) / e; +} +function Cct(e) { + const t = new Array(10).fill(null).map((r, n) => { + const i = n - 1, a = e * Math.pow(2.71828, i / 5), o = n > 1 ? Math.floor(a) : Math.ceil(a); + return Math.floor(o / 2) * 2; + }); + return t[1] = e, t.map((r) => ({ + size: r, + lineHeight: VN(r) + })); +} +const Tct = (e) => { + const t = Cct(e), r = t.map((f) => f.size), n = t.map((f) => f.lineHeight), i = r[1], a = r[0], o = r[2], l = n[1], u = n[0], d = n[2]; + return { + fontSizeSM: a, + fontSize: i, + fontSizeLG: o, + fontSizeXL: r[3], + fontSizeHeading1: r[6], + fontSizeHeading2: r[5], + fontSizeHeading3: r[4], + fontSizeHeading4: r[3], + fontSizeHeading5: r[2], + lineHeight: l, + lineHeightLG: d, + lineHeightSM: u, + fontHeight: Math.round(l * i), + fontHeightLG: Math.round(d * o), + fontHeightSM: Math.round(u * a), + lineHeightHeading1: n[6], + lineHeightHeading2: n[5], + lineHeightHeading3: n[4], + lineHeightHeading4: n[3], + lineHeightHeading5: n[2] + }; +}, wct = Tct; +function Ict(e) { + const t = Object.keys(HEe).map((r) => { + const n = bE(e[r]); + return new Array(10).fill(1).reduce((i, a, o) => (i[`${r}-${o + 1}`] = n[o], i[`${r}${o + 1}`] = n[o], i), {}); + }).reduce((r, n) => (r = Object.assign(Object.assign({}, r), n), r), {}); + return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, e), t), mct(e, { + generateColorPalettes: bct, + generateNeutralColorPalettes: Ect + })), wct(e.fontSize)), gct(e)), pct(e)), Sct(e)); +} +const WEe = mG(Ict), GEe = { + token: jR, + override: { + override: jR + }, + hashed: !0 +}, YEe = /* @__PURE__ */ $react.createContext(GEe), XEe = "anticon", xct = (e, t) => t || (e ? `ant-${e}` : "ant"), Sl = /* @__PURE__ */ $react.createContext({ + // We provide a default function for Context without provider + getPrefixCls: xct, + iconPrefixCls: XEe +}), Act = `-ant-${Date.now()}-${Math.random()}`; +function Rct(e, t) { + const r = {}, n = (o, l) => { + let u = o.clone(); + return u = (l == null ? void 0 : l(u)) || u, u.toRgbString(); + }, i = (o, l) => { + const u = new ud(o), d = bE(u.toRgbString()); + r[`${l}-color`] = n(u), r[`${l}-color-disabled`] = d[1], r[`${l}-color-hover`] = d[4], r[`${l}-color-active`] = d[6], r[`${l}-color-outline`] = u.clone().setAlpha(0.2).toRgbString(), r[`${l}-color-deprecated-bg`] = d[0], r[`${l}-color-deprecated-border`] = d[2]; + }; + if (t.primaryColor) { + i(t.primaryColor, "primary"); + const o = new ud(t.primaryColor), l = bE(o.toRgbString()); + l.forEach((d, f) => { + r[`primary-${f + 1}`] = d; + }), r["primary-color-deprecated-l-35"] = n(o, (d) => d.lighten(35)), r["primary-color-deprecated-l-20"] = n(o, (d) => d.lighten(20)), r["primary-color-deprecated-t-20"] = n(o, (d) => d.tint(20)), r["primary-color-deprecated-t-50"] = n(o, (d) => d.tint(50)), r["primary-color-deprecated-f-12"] = n(o, (d) => d.setAlpha(d.getAlpha() * 0.12)); + const u = new ud(l[0]); + r["primary-color-active-deprecated-f-30"] = n(u, (d) => d.setAlpha(d.getAlpha() * 0.3)), r["primary-color-active-deprecated-d-02"] = n(u, (d) => d.darken(2)); + } + return t.successColor && i(t.successColor, "success"), t.warningColor && i(t.warningColor, "warning"), t.errorColor && i(t.errorColor, "error"), t.infoColor && i(t.infoColor, "info"), ` + :root { + ${Object.keys(r).map((o) => `--${e}-${o}: ${r[o]};`).join(` +`)} + } + `.trim(); +} +function Dct(e, t) { + const r = Rct(e, t); + md() && Um(r, `${Act}-dynamic-theme`); +} +const CG = /* @__PURE__ */ $react.createContext(!1), KEe = (e) => { + let { + children: t, + disabled: r + } = e; + const n = $react.useContext(CG); + return /* @__PURE__ */ dt(CG.Provider, { + value: r != null ? r : n, + children: t + }); +}, UD = CG, TG = /* @__PURE__ */ $react.createContext(void 0), Oct = (e) => { + let { + children: t, + size: r + } = e; + const n = $react.useContext(TG); + return /* @__PURE__ */ dt(TG.Provider, { + value: r || n, + children: t + }); +}, jD = TG; +function Mct() { + const e = $react.useContext(UD), t = $react.useContext(jD); + return { + componentDisabled: e, + componentSize: t + }; +} +const d2 = ["blue", "purple", "cyan", "green", "magenta", "pink", "red", "orange", "yellow", "volcano", "geekblue", "lime", "gold"], kct = "5.13.2"; +function Q3(e) { + return e >= 0 && e <= 255; +} +function UP(e, t) { + const { + r, + g: n, + b: i, + a + } = new ud(e).toRgb(); + if (a < 1) + return e; + const { + r: o, + g: l, + b: u + } = new ud(t).toRgb(); + for (let d = 0.01; d <= 1; d += 0.01) { + const f = Math.round((r - o * (1 - d)) / d), g = Math.round((n - l * (1 - d)) / d), v = Math.round((i - u * (1 - d)) / d); + if (Q3(f) && Q3(g) && Q3(v)) + return new ud({ + r: f, + g, + b: v, + a: Math.round(d * 100) / 100 + }).toRgbString(); + } + return new ud({ + r, + g: n, + b: i, + a: 1 + }).toRgbString(); +} +var Pct = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function ZEe(e) { + const { + override: t + } = e, r = Pct(e, ["override"]), n = Object.assign({}, t); + Object.keys(jR).forEach((v) => { + delete n[v]; + }); + const i = Object.assign(Object.assign({}, r), n), a = 480, o = 576, l = 768, u = 992, d = 1200, f = 1600; + if (i.motion === !1) { + const v = "0s"; + i.motionDurationFast = v, i.motionDurationMid = v, i.motionDurationSlow = v; + } + return Object.assign(Object.assign(Object.assign({}, i), { + // ============== Background ============== // + colorFillContent: i.colorFillSecondary, + colorFillContentHover: i.colorFill, + colorFillAlter: i.colorFillQuaternary, + colorBgContainerDisabled: i.colorFillTertiary, + // ============== Split ============== // + colorBorderBg: i.colorBgContainer, + colorSplit: UP(i.colorBorderSecondary, i.colorBgContainer), + // ============== Text ============== // + colorTextPlaceholder: i.colorTextQuaternary, + colorTextDisabled: i.colorTextQuaternary, + colorTextHeading: i.colorText, + colorTextLabel: i.colorTextSecondary, + colorTextDescription: i.colorTextTertiary, + colorTextLightSolid: i.colorWhite, + colorHighlight: i.colorError, + colorBgTextHover: i.colorFillSecondary, + colorBgTextActive: i.colorFill, + colorIcon: i.colorTextTertiary, + colorIconHover: i.colorText, + colorErrorOutline: UP(i.colorErrorBg, i.colorBgContainer), + colorWarningOutline: UP(i.colorWarningBg, i.colorBgContainer), + // Font + fontSizeIcon: i.fontSizeSM, + // Line + lineWidthFocus: i.lineWidth * 4, + // Control + lineWidth: i.lineWidth, + controlOutlineWidth: i.lineWidth * 2, + // Checkbox size and expand icon size + controlInteractiveSize: i.controlHeight / 2, + controlItemBgHover: i.colorFillTertiary, + controlItemBgActive: i.colorPrimaryBg, + controlItemBgActiveHover: i.colorPrimaryBgHover, + controlItemBgActiveDisabled: i.colorFill, + controlTmpOutline: i.colorFillQuaternary, + controlOutline: UP(i.colorPrimaryBg, i.colorBgContainer), + lineType: i.lineType, + borderRadius: i.borderRadius, + borderRadiusXS: i.borderRadiusXS, + borderRadiusSM: i.borderRadiusSM, + borderRadiusLG: i.borderRadiusLG, + fontWeightStrong: 600, + opacityLoading: 0.65, + linkDecoration: "none", + linkHoverDecoration: "none", + linkFocusDecoration: "none", + controlPaddingHorizontal: 12, + controlPaddingHorizontalSM: 8, + paddingXXS: i.sizeXXS, + paddingXS: i.sizeXS, + paddingSM: i.sizeSM, + padding: i.size, + paddingMD: i.sizeMD, + paddingLG: i.sizeLG, + paddingXL: i.sizeXL, + paddingContentHorizontalLG: i.sizeLG, + paddingContentVerticalLG: i.sizeMS, + paddingContentHorizontal: i.sizeMS, + paddingContentVertical: i.sizeSM, + paddingContentHorizontalSM: i.size, + paddingContentVerticalSM: i.sizeXS, + marginXXS: i.sizeXXS, + marginXS: i.sizeXS, + marginSM: i.sizeSM, + margin: i.size, + marginMD: i.sizeMD, + marginLG: i.sizeLG, + marginXL: i.sizeXL, + marginXXL: i.sizeXXL, + boxShadow: ` + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowSecondary: ` + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowTertiary: ` + 0 1px 2px 0 rgba(0, 0, 0, 0.03), + 0 1px 6px -1px rgba(0, 0, 0, 0.02), + 0 2px 4px 0 rgba(0, 0, 0, 0.02) + `, + screenXS: a, + screenXSMin: a, + screenXSMax: o - 1, + screenSM: o, + screenSMMin: o, + screenSMMax: l - 1, + screenMD: l, + screenMDMin: l, + screenMDMax: u - 1, + screenLG: u, + screenLGMin: u, + screenLGMax: d - 1, + screenXL: d, + screenXLMin: d, + screenXLMax: f - 1, + screenXXL: f, + screenXXLMin: f, + boxShadowPopoverArrow: "2px 2px 5px rgba(0, 0, 0, 0.05)", + boxShadowCard: ` + 0 1px 2px -2px ${new ud("rgba(0, 0, 0, 0.16)").toRgbString()}, + 0 3px 6px 0 ${new ud("rgba(0, 0, 0, 0.12)").toRgbString()}, + 0 5px 12px 4px ${new ud("rgba(0, 0, 0, 0.09)").toRgbString()} + `, + boxShadowDrawerRight: ` + -6px 0 16px 0 rgba(0, 0, 0, 0.08), + -3px 0 6px -4px rgba(0, 0, 0, 0.12), + -9px 0 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowDrawerLeft: ` + 6px 0 16px 0 rgba(0, 0, 0, 0.08), + 3px 0 6px -4px rgba(0, 0, 0, 0.12), + 9px 0 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowDrawerUp: ` + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowDrawerDown: ` + 0 -6px 16px 0 rgba(0, 0, 0, 0.08), + 0 -3px 6px -4px rgba(0, 0, 0, 0.12), + 0 -9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)", + boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)", + boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)", + boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)" + }), n); +} +var Mue = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const qEe = { + lineHeight: !0, + lineHeightSM: !0, + lineHeightLG: !0, + lineHeightHeading1: !0, + lineHeightHeading2: !0, + lineHeightHeading3: !0, + lineHeightHeading4: !0, + lineHeightHeading5: !0, + opacityLoading: !0, + fontWeightStrong: !0, + zIndexPopupBase: !0, + zIndexBase: !0 +}, JEe = { + size: !0, + sizeSM: !0, + sizeLG: !0, + sizeMD: !0, + sizeXS: !0, + sizeXXS: !0, + sizeMS: !0, + sizeXL: !0, + sizeXXL: !0, + sizeUnit: !0, + sizeStep: !0, + motionBase: !0, + motionUnit: !0 +}, Nct = { + screenXS: !0, + screenXSMin: !0, + screenXSMax: !0, + screenSM: !0, + screenSMMin: !0, + screenSMMax: !0, + screenMD: !0, + screenMDMin: !0, + screenMDMax: !0, + screenLG: !0, + screenLGMin: !0, + screenLGMax: !0, + screenXL: !0, + screenXLMin: !0, + screenXLMax: !0, + screenXXL: !0, + screenXXLMin: !0 +}, QEe = (e, t, r) => { + const n = r.getDerivativeToken(e), { + override: i + } = t, a = Mue(t, ["override"]); + let o = Object.assign(Object.assign({}, n), { + override: i + }); + return o = ZEe(o), a && Object.entries(a).forEach((l) => { + let [u, d] = l; + const { + theme: f + } = d, g = Mue(d, ["theme"]); + let v = g; + f && (v = QEe(Object.assign(Object.assign({}, o), g), { + override: g + }, f)), o[u] = v; + }), o; +}; +function Fp() { + const { + token: e, + hashed: t, + theme: r, + override: n, + cssVar: i + } = $react.useContext(YEe), a = `${kct}-${t || ""}`, o = r || WEe, [l, u, d] = Slt(o, [jR, e], { + salt: a, + override: n, + getComputedToken: QEe, + // formatToken will not be consumed after 1.15.0 with getComputedToken. + // But token will break if @ant-design/cssinjs is under 1.15.0 without it + formatToken: ZEe, + cssVar: i && { + prefix: i.prefix, + key: i.key, + unitless: qEe, + ignore: JEe, + preserve: Nct + } + }); + return [o, d, t ? u : "", l, i]; +} +function Vg(e) { + var t = $react.useRef(); + t.current = e; + var r = $react.useCallback(function() { + for (var n, i = arguments.length, a = new Array(i), o = 0; o < i; o++) + a[o] = arguments[o]; + return (n = t.current) === null || n === void 0 ? void 0 : n.call.apply(n, [t].concat(a)); + }, []); + return r; +} +function tE(e) { + var t = $react.useRef(!1), r = $react.useState(e), n = Wr(r, 2), i = n[0], a = n[1]; + $react.useEffect(function() { + return t.current = !1, function() { + t.current = !0; + }; + }, []); + function o(l, u) { + u && t.current || a(l); + } + return [i, o]; +} +function e4(e) { + return e !== void 0; +} +function _B(e, t) { + var r = t || {}, n = r.defaultValue, i = r.value, a = r.onChange, o = r.postState, l = tE(function() { + return e4(i) ? i : e4(n) ? typeof n == "function" ? n() : n : typeof e == "function" ? e() : e; + }), u = Wr(l, 2), d = u[0], f = u[1], g = i !== void 0 ? i : d, v = o ? o(g) : g, y = Vg(a), C = tE([g]), A = Wr(C, 2), S = A[0], _ = A[1]; + _ue(function() { + var I = S[0]; + d !== I && y(d, I); + }, [S]), _ue(function() { + e4(i) || f(i); + }, [i]); + var E = Vg(function(I, w) { + f(I, w), _([g], w); + }); + return [v, E]; +} +const $D = function(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + return { + boxSizing: "border-box", + margin: 0, + padding: 0, + color: e.colorText, + fontSize: e.fontSize, + // font-variant: @font-variant-base; + lineHeight: e.lineHeight, + listStyle: "none", + // font-feature-settings: @font-feature-settings-base; + fontFamily: t ? "inherit" : e.fontFamily + }; +}, Lct = () => ({ + display: "inline-flex", + alignItems: "center", + color: "inherit", + fontStyle: "normal", + lineHeight: 0, + textAlign: "center", + textTransform: "none", + // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4 + verticalAlign: "-0.125em", + textRendering: "optimizeLegibility", + "-webkit-font-smoothing": "antialiased", + "-moz-osx-font-smoothing": "grayscale", + "> *": { + lineHeight: 1 + }, + svg: { + display: "inline-block" + } +}), Fct = () => ({ + // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229 + "&::before": { + display: "table", + content: '""' + }, + "&::after": { + // https://github.com/ant-design/ant-design/issues/21864 + display: "table", + clear: "both", + content: '""' + } +}), Bct = (e) => ({ + a: { + color: e.colorLink, + textDecoration: e.linkDecoration, + backgroundColor: "transparent", + // remove the gray background on active links in IE 10. + outline: "none", + cursor: "pointer", + transition: `color ${e.motionDurationSlow}`, + "-webkit-text-decoration-skip": "objects", + // remove gaps in links underline in iOS 8+ and Safari 8+. + "&:hover": { + color: e.colorLinkHover + }, + "&:active": { + color: e.colorLinkActive + }, + "&:active,\n &:hover": { + textDecoration: e.linkHoverDecoration, + outline: 0 + }, + // https://github.com/ant-design/ant-design/issues/22503 + "&:focus": { + textDecoration: e.linkFocusDecoration, + outline: 0 + }, + "&[disabled]": { + color: e.colorTextDisabled, + cursor: "not-allowed" + } + } +}), Uct = (e, t) => { + const { + fontFamily: r, + fontSize: n + } = e, i = `[class^="${t}"], [class*=" ${t}"]`; + return { + [i]: { + fontFamily: r, + fontSize: n, + boxSizing: "border-box", + "&::before, &::after": { + boxSizing: "border-box" + }, + [i]: { + boxSizing: "border-box", + "&::before, &::after": { + boxSizing: "border-box" + } + } + } + }; +}, jct = (e) => ({ + outline: `${da(e.lineWidthFocus)} solid ${e.colorPrimaryBorder}`, + outlineOffset: 1, + transition: "outline-offset 0s, outline 0s" +}), $ct = (e) => ({ + "&:focus-visible": Object.assign({}, jct(e)) +}); +function Ha(e) { + if (e === void 0) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; +} +function VY(e, t) { + if (t && (Ja(t) === "object" || typeof t == "function")) + return t; + if (t !== void 0) + throw new TypeError("Derived constructors may only return object or undefined"); + return Ha(e); +} +function SB() { + try { + var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t) { + } + return (SB = function() { + return !!e; + })(); +} +function E0(e) { + return E0 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(r) { + return r.__proto__ || Object.getPrototypeOf(r); + }, E0(e); +} +function wG(e, t) { + return wG = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(n, i) { + return n.__proto__ = i, n; + }, wG(e, t); +} +function OI(e, t) { + if (typeof t != "function" && t !== null) + throw new TypeError("Super expression must either be null or a function"); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(e, "prototype", { + writable: !1 + }), t && wG(e, t); +} +let Vct = /* @__PURE__ */ Td(function e() { + Cd(this, e); +}); +const eCe = Vct; +function zct(e, t, r) { + return t = E0(t), VY(e, SB() ? Reflect.construct(t, r || [], E0(e).constructor) : t.apply(e, r)); +} +let Hct = /* @__PURE__ */ function(e) { + OI(t, e); + function t(r) { + var n; + return Cd(this, t), n = zct(this, t), n.result = 0, r instanceof t ? n.result = r.result : typeof r == "number" && (n.result = r), n; + } + return Td(t, [{ + key: "add", + value: function(n) { + return n instanceof t ? this.result += n.result : typeof n == "number" && (this.result += n), this; + } + }, { + key: "sub", + value: function(n) { + return n instanceof t ? this.result -= n.result : typeof n == "number" && (this.result -= n), this; + } + }, { + key: "mul", + value: function(n) { + return n instanceof t ? this.result *= n.result : typeof n == "number" && (this.result *= n), this; + } + }, { + key: "div", + value: function(n) { + return n instanceof t ? this.result /= n.result : typeof n == "number" && (this.result /= n), this; + } + }, { + key: "equal", + value: function() { + return this.result; + } + }]), t; +}(eCe); +function Wct(e, t, r) { + return t = E0(t), VY(e, SB() ? Reflect.construct(t, r || [], E0(e).constructor) : t.apply(e, r)); +} +const tCe = "CALC_UNIT"; +function t4(e) { + return typeof e == "number" ? `${e}${tCe}` : e; +} +let Gct = /* @__PURE__ */ function(e) { + OI(t, e); + function t(r) { + var n; + return Cd(this, t), n = Wct(this, t), n.result = "", r instanceof t ? n.result = `(${r.result})` : typeof r == "number" ? n.result = t4(r) : typeof r == "string" && (n.result = r), n; + } + return Td(t, [{ + key: "add", + value: function(n) { + return n instanceof t ? this.result = `${this.result} + ${n.getResult()}` : (typeof n == "number" || typeof n == "string") && (this.result = `${this.result} + ${t4(n)}`), this.lowPriority = !0, this; + } + }, { + key: "sub", + value: function(n) { + return n instanceof t ? this.result = `${this.result} - ${n.getResult()}` : (typeof n == "number" || typeof n == "string") && (this.result = `${this.result} - ${t4(n)}`), this.lowPriority = !0, this; + } + }, { + key: "mul", + value: function(n) { + return this.lowPriority && (this.result = `(${this.result})`), n instanceof t ? this.result = `${this.result} * ${n.getResult(!0)}` : (typeof n == "number" || typeof n == "string") && (this.result = `${this.result} * ${n}`), this.lowPriority = !1, this; + } + }, { + key: "div", + value: function(n) { + return this.lowPriority && (this.result = `(${this.result})`), n instanceof t ? this.result = `${this.result} / ${n.getResult(!0)}` : (typeof n == "number" || typeof n == "string") && (this.result = `${this.result} / ${n}`), this.lowPriority = !1, this; + } + }, { + key: "getResult", + value: function(n) { + return this.lowPriority || n ? `(${this.result})` : this.result; + } + }, { + key: "equal", + value: function(n) { + const { + unit: i = !0 + } = n || {}, a = new RegExp(`${tCe}`, "g"); + return this.result = this.result.replace(a, i ? "px" : ""), typeof this.lowPriority != "undefined" ? `calc(${this.result})` : this.result; + } + }]), t; +}(eCe); +const Yct = (e) => { + const t = e === "css" ? Gct : Hct; + return (r) => new t(r); +}, Xct = Yct; +function Kct(e) { + return e === "js" ? { + max: Math.max, + min: Math.min + } : { + max: function() { + for (var t = arguments.length, r = new Array(t), n = 0; n < t; n++) + r[n] = arguments[n]; + return `max(${r.map((i) => da(i)).join(",")})`; + }, + min: function() { + for (var t = arguments.length, r = new Array(t), n = 0; n < t; n++) + r[n] = arguments[n]; + return `min(${r.map((i) => da(i)).join(",")})`; + } + }; +} +const rCe = typeof CSSINJS_STATISTIC != "undefined"; +let IG = !0; +function wd() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r]; + if (!rCe) + return Object.assign.apply(Object, [{}].concat(t)); + IG = !1; + const n = {}; + return t.forEach((i) => { + Object.keys(i).forEach((o) => { + Object.defineProperty(n, o, { + configurable: !0, + enumerable: !0, + get: () => i[o] + }); + }); + }), IG = !0, n; +} +const kue = {}; +function Zct() { +} +const qct = (e) => { + let t, r = e, n = Zct; + return rCe && typeof Proxy != "undefined" && (t = /* @__PURE__ */ new Set(), r = new Proxy(e, { + get(i, a) { + return IG && t.add(a), i[a]; + } + }), n = (i, a) => { + var o; + kue[i] = { + global: Array.from(t), + component: Object.assign(Object.assign({}, (o = kue[i]) === null || o === void 0 ? void 0 : o.component), a) + }; + }), { + token: r, + keys: t, + flush: n + }; +}, Jct = (e, t) => { + const [r, n] = Fp(); + return _G({ + theme: r, + token: n, + hashId: "", + path: ["ant-design-icons", e], + nonce: () => t == null ? void 0 : t.nonce + }, () => [{ + [`.${e}`]: Object.assign(Object.assign({}, Lct()), { + [`.${e} .${e}-icon`]: { + display: "block" + } + }) + }]); +}, nCe = Jct, iCe = (e, t, r) => { + var n; + return typeof r == "function" ? r(wd(t, (n = t[e]) !== null && n !== void 0 ? n : {})) : r != null ? r : {}; +}, aCe = (e, t, r, n) => { + const i = Object.assign({}, t[e]); + if (n != null && n.deprecatedTokens) { + const { + deprecatedTokens: o + } = n; + o.forEach((l) => { + let [u, d] = l; + var f; + (i != null && i[u] || i != null && i[d]) && ((f = i[d]) !== null && f !== void 0 || (i[d] = i == null ? void 0 : i[u])); + }); + } + const a = Object.assign(Object.assign({}, r), i); + return Object.keys(a).forEach((o) => { + a[o] === t[o] && delete a[o]; + }), a; +}, Qct = (e, t) => `${[t, e.replace(/([A-Z]+)([A-Z][a-z]+)/g, "$1-$2").replace(/([a-z])([A-Z])/g, "$1-$2")].filter(Boolean).join("-")}`; +function zY(e, t, r) { + let n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; + const i = Array.isArray(e) ? e : [e, e], [a] = i, o = i.join("-"); + return (l) => { + const [u, d, f, g, v] = Fp(), { + getPrefixCls: y, + iconPrefixCls: C, + csp: A + } = $react.useContext(Sl), S = y(), _ = v ? "css" : "js", E = Xct(_), { + max: I, + min: w + } = Kct(_), x = { + theme: u, + token: g, + hashId: f, + nonce: () => A == null ? void 0 : A.nonce, + clientOnly: n.clientOnly, + // antd is always at top of styles + order: n.order || -999 + }; + return _G(Object.assign(Object.assign({}, x), { + clientOnly: !1, + path: ["Shared", S] + }), () => [{ + // Link + "&": Bct(g) + }]), nCe(C, A), [_G(Object.assign(Object.assign({}, x), { + path: [o, l, C] + }), () => { + if (n.injectStyle === !1) + return []; + const { + token: R, + flush: M + } = qct(g), O = iCe(a, d, r), P = `.${l}`, B = aCe(a, d, O, { + deprecatedTokens: n.deprecatedTokens + }); + v && Object.keys(O).forEach((X) => { + O[X] = `var(${REe(X, Qct(a, v.prefix))})`; + }); + const H = wd(R, { + componentCls: P, + prefixCls: l, + iconCls: `.${C}`, + antCls: `.${S}`, + calc: E, + max: I, + min: w + }, v ? O : B), Y = t(H, { + hashId: f, + prefixCls: l, + rootPrefixCls: S, + iconPrefixCls: C + }); + return M(a, B), [n.resetStyle === !1 ? null : Uct(H, l), Y]; + }), f]; + }; +} +const oCe = (e, t, r, n) => { + const i = zY(e, t, r, Object.assign({ + resetStyle: !1, + // Sub Style should default after root one + order: -998 + }, n)); + return (o) => { + let { + prefixCls: l + } = o; + return i(l), null; + }; +}, eut = (e, t, r) => { + function n(d) { + return `${e}${d.slice(0, 1).toUpperCase()}${d.slice(1)}`; + } + const { + unitless: i = {}, + injectStyle: a = !0 + } = r != null ? r : {}, o = { + [n("zIndexPopup")]: !0 + }; + Object.keys(i).forEach((d) => { + o[n(d)] = i[d]; + }); + const l = (d) => { + let { + rootCls: f, + cssVar: g + } = d; + const [, v] = Fp(); + return Mlt({ + path: [e], + prefix: g.prefix, + key: g == null ? void 0 : g.key, + unitless: Object.assign(Object.assign({}, qEe), o), + ignore: JEe, + token: v, + scope: f + }, () => { + const y = iCe(e, v, t), C = aCe(e, v, y, { + deprecatedTokens: r == null ? void 0 : r.deprecatedTokens + }); + return Object.keys(y).forEach((A) => { + C[n(A)] = C[A], delete C[A]; + }), C; + }), null; + }; + return (d) => { + const [, , , , f] = Fp(); + return [(g) => a && f ? /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt(l, { + rootCls: d, + cssVar: f, + component: e + }), g] + }) : g, f == null ? void 0 : f.key]; + }; +}, MI = (e, t, r, n) => { + const i = zY(e, t, r, n), a = eut(Array.isArray(e) ? e[0] : e, r, n); + return function(o) { + let l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : o; + const [, u] = i(o), [d, f] = a(l); + return [d, u, f]; + }; +}; +function tut(e, t) { + return d2.reduce((r, n) => { + const i = e[`${n}1`], a = e[`${n}3`], o = e[`${n}6`], l = e[`${n}7`]; + return Object.assign(Object.assign({}, r), t(n, { + lightColor: i, + lightBorderColor: a, + darkColor: o, + textColor: l + })); + }, {}); +} +const rut = Object.assign({}, $react), { + useId: Pue +} = rut, nut = () => "", iut = typeof Pue == "undefined" ? nut : Pue, aut = iut; +function out(e, t) { + PY(); + const r = e || {}, n = r.inherit === !1 || !t ? GEe : t, i = aut(); + return OY(() => { + var a, o; + if (!e) + return t; + const l = Object.assign({}, n.components); + Object.keys(e.components || {}).forEach((f) => { + l[f] = Object.assign(Object.assign({}, l[f]), e.components[f]); + }); + const u = `css-var-${i.replace(/:/g, "")}`, d = ((a = r.cssVar) !== null && a !== void 0 ? a : n.cssVar) && Object.assign(Object.assign(Object.assign({ + prefix: "ant" + }, typeof n.cssVar == "object" ? n.cssVar : {}), typeof r.cssVar == "object" ? r.cssVar : {}), { + key: typeof r.cssVar == "object" && ((o = r.cssVar) === null || o === void 0 ? void 0 : o.key) || u + }); + return Object.assign(Object.assign(Object.assign({}, n), r), { + token: Object.assign(Object.assign({}, n.token), r.token), + components: l, + cssVar: d + }); + }, [r, n], (a, o) => a.some((l, u) => { + const d = o[u]; + return !xEe(l, d, !0); + })); +} +function f2(e) { + return e instanceof HTMLElement || e instanceof SVGElement; +} +function zN(e) { + return f2(e) ? e : e instanceof $react.Component ? $react_dom.findDOMNode(e) : null; +} +var sut = ["children"], sCe = /* @__PURE__ */ $react.createContext({}); +function lut(e) { + var t = e.children, r = xh(e, sut); + return /* @__PURE__ */ dt(sCe.Provider, { + value: r, + children: t + }); +} +function bB(e) { + var t = SB(); + return function() { + var n = E0(e), i; + if (t) { + var a = E0(this).constructor; + i = Reflect.construct(n, arguments, a); + } else + i = n.apply(this, arguments); + return VY(this, i); + }; +} +var cut = /* @__PURE__ */ function(e) { + OI(r, e); + var t = bB(r); + function r() { + return Cd(this, r), t.apply(this, arguments); + } + return Td(r, [{ + key: "render", + value: function() { + return this.props.children; + } + }]), r; +}($react.Component), Sb = "none", jP = "appear", $P = "enter", VP = "leave", Nue = "none", Cp = "prepare", dw = "start", fw = "active", HY = "end", lCe = "prepared"; +function Lue(e, t) { + var r = {}; + return r[e.toLowerCase()] = t.toLowerCase(), r["Webkit".concat(e)] = "webkit".concat(t), r["Moz".concat(e)] = "moz".concat(t), r["ms".concat(e)] = "MS".concat(t), r["O".concat(e)] = "o".concat(t.toLowerCase()), r; +} +function uut(e, t) { + var r = { + animationend: Lue("Animation", "AnimationEnd"), + transitionend: Lue("Transition", "TransitionEnd") + }; + return e && ("AnimationEvent" in t || delete r.animationend.animation, "TransitionEvent" in t || delete r.transitionend.transition), r; +} +var hut = uut(md(), typeof window != "undefined" ? window : {}), cCe = {}; +if (md()) { + var dut = document.createElement("div"); + cCe = dut.style; +} +var zP = {}; +function uCe(e) { + if (zP[e]) + return zP[e]; + var t = hut[e]; + if (t) + for (var r = Object.keys(t), n = r.length, i = 0; i < n; i += 1) { + var a = r[i]; + if (Object.prototype.hasOwnProperty.call(t, a) && a in cCe) + return zP[e] = t[a], zP[e]; + } + return ""; +} +var hCe = uCe("animationend"), dCe = uCe("transitionend"), fCe = !!(hCe && dCe), Fue = hCe || "animationend", Bue = dCe || "transitionend"; +function Uue(e, t) { + if (!e) + return null; + if (Ja(e) === "object") { + var r = t.replace(/-\w/g, function(n) { + return n[1].toUpperCase(); + }); + return e[r]; + } + return "".concat(e, "-").concat(t); +} +const fut = function(e) { + var t = $react.useRef(), r = $react.useRef(e); + r.current = e; + var n = $react.useCallback(function(o) { + r.current(o); + }, []); + function i(o) { + o && (o.removeEventListener(Bue, n), o.removeEventListener(Fue, n)); + } + function a(o) { + t.current && t.current !== o && i(t.current), o && o !== t.current && (o.addEventListener(Bue, n), o.addEventListener(Fue, n), t.current = o); + } + return $react.useEffect(function() { + return function() { + i(t.current); + }; + }, []), [a, i]; +}; +var pCe = md() ? $react.useLayoutEffect : $react.useEffect, gCe = function(t) { + return +setTimeout(t, 16); +}, vCe = function(t) { + return clearTimeout(t); +}; +typeof window != "undefined" && "requestAnimationFrame" in window && (gCe = function(t) { + return window.requestAnimationFrame(t); +}, vCe = function(t) { + return window.cancelAnimationFrame(t); +}); +var jue = 0, WY = /* @__PURE__ */ new Map(); +function mCe(e) { + WY.delete(e); +} +var yd = function(t) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + jue += 1; + var n = jue; + function i(a) { + if (a === 0) + mCe(n), t(); + else { + var o = gCe(function() { + i(a - 1); + }); + WY.set(n, o); + } + } + return i(r), n; +}; +yd.cancel = function(e) { + var t = WY.get(e); + return mCe(e), vCe(t); +}; +const put = function() { + var e = $react.useRef(null); + function t() { + yd.cancel(e.current); + } + function r(n) { + var i = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 2; + t(); + var a = yd(function() { + i <= 1 ? n({ + isCanceled: function() { + return a !== e.current; + } + }) : r(n, i - 1); + }); + e.current = a; + } + return $react.useEffect(function() { + return function() { + t(); + }; + }, []), [r, t]; +}; +var gut = [Cp, dw, fw, HY], vut = [Cp, lCe], yCe = !1, mut = !0; +function _Ce(e) { + return e === fw || e === HY; +} +const yut = function(e, t, r) { + var n = tE(Nue), i = Wr(n, 2), a = i[0], o = i[1], l = put(), u = Wr(l, 2), d = u[0], f = u[1]; + function g() { + o(Cp, !0); + } + var v = t ? vut : gut; + return pCe(function() { + if (a !== Nue && a !== HY) { + var y = v.indexOf(a), C = v[y + 1], A = r(a); + A === yCe ? o(C, !0) : C && d(function(S) { + function _() { + S.isCanceled() || o(C, !0); + } + A === !0 ? _() : Promise.resolve(A).then(_); + }); + } + }, [e, a]), $react.useEffect(function() { + return function() { + f(); + }; + }, []), [g, a]; +}; +function _ut(e, t, r, n) { + var i = n.motionEnter, a = i === void 0 ? !0 : i, o = n.motionAppear, l = o === void 0 ? !0 : o, u = n.motionLeave, d = u === void 0 ? !0 : u, f = n.motionDeadline, g = n.motionLeaveImmediately, v = n.onAppearPrepare, y = n.onEnterPrepare, C = n.onLeavePrepare, A = n.onAppearStart, S = n.onEnterStart, _ = n.onLeaveStart, E = n.onAppearActive, I = n.onEnterActive, w = n.onLeaveActive, x = n.onAppearEnd, b = n.onEnterEnd, R = n.onLeaveEnd, M = n.onVisibleChanged, O = tE(), P = Wr(O, 2), B = P[0], H = P[1], Y = tE(Sb), X = Wr(Y, 2), ee = X[0], ae = X[1], J = tE(null), ne = Wr(J, 2), fe = ne[0], de = ne[1], Te = $react.useRef(!1), be = $react.useRef(null); + function Ve() { + return r(); + } + var pe = $react.useRef(!1); + function Be() { + ae(Sb, !0), de(null, !0); + } + function Ue(nt) { + var ut = Ve(); + if (!(nt && !nt.deadline && nt.target !== ut)) { + var rt = pe.current, Ke; + ee === jP && rt ? Ke = x == null ? void 0 : x(ut, nt) : ee === $P && rt ? Ke = b == null ? void 0 : b(ut, nt) : ee === VP && rt && (Ke = R == null ? void 0 : R(ut, nt)), ee !== Sb && rt && Ke !== !1 && Be(); + } + } + var Qe = fut(Ue), Re = Wr(Qe, 1), Ne = Re[0], Me = function(ut) { + var rt, Ke, ze; + switch (ut) { + case jP: + return rt = {}, Kt(rt, Cp, v), Kt(rt, dw, A), Kt(rt, fw, E), rt; + case $P: + return Ke = {}, Kt(Ke, Cp, y), Kt(Ke, dw, S), Kt(Ke, fw, I), Ke; + case VP: + return ze = {}, Kt(ze, Cp, C), Kt(ze, dw, _), Kt(ze, fw, w), ze; + default: + return {}; + } + }, we = $react.useMemo(function() { + return Me(ee); + }, [ee]), He = yut(ee, !e, function(nt) { + if (nt === Cp) { + var ut = we[Cp]; + return ut ? ut(Ve()) : yCe; + } + if (Fe in we) { + var rt; + de(((rt = we[Fe]) === null || rt === void 0 ? void 0 : rt.call(we, Ve(), null)) || null); + } + return Fe === fw && (Ne(Ve()), f > 0 && (clearTimeout(be.current), be.current = setTimeout(function() { + Ue({ + deadline: !0 + }); + }, f))), Fe === lCe && Be(), mut; + }), Ie = Wr(He, 2), Ae = Ie[0], Fe = Ie[1], $e = _Ce(Fe); + pe.current = $e, pCe(function() { + H(t); + var nt = Te.current; + Te.current = !0; + var ut; + !nt && t && l && (ut = jP), nt && t && a && (ut = $P), (nt && !t && d || !nt && g && !t && d) && (ut = VP); + var rt = Me(ut); + ut && (e || rt[Cp]) ? (ae(ut), Ae()) : ae(Sb); + }, [t]), $react.useEffect(function() { + // Cancel appear + (ee === jP && !l || // Cancel enter + ee === $P && !a || // Cancel leave + ee === VP && !d) && ae(Sb); + }, [l, a, d]), $react.useEffect(function() { + return function() { + Te.current = !1, clearTimeout(be.current); + }; + }, []); + var lt = $react.useRef(!1); + $react.useEffect(function() { + B && (lt.current = !0), B !== void 0 && ee === Sb && ((lt.current || B) && (M == null || M(B)), lt.current = !0); + }, [B, ee]); + var it = fe; + return we[Cp] && Fe === dw && (it = fr({ + transition: "none" + }, it)), [ee, Fe, it, B != null ? B : t]; +} +function Sut(e) { + var t = e; + Ja(e) === "object" && (t = e.transitionSupport); + function r(i, a) { + return !!(i.motionName && t && a !== !1); + } + var n = /* @__PURE__ */ $react.forwardRef(function(i, a) { + var o = i.visible, l = o === void 0 ? !0 : o, u = i.removeOnLeave, d = u === void 0 ? !0 : u, f = i.forceRender, g = i.children, v = i.motionName, y = i.leavedClassName, C = i.eventProps, A = $react.useContext(sCe), S = A.motion, _ = r(i, S), E = $react.useRef(), I = $react.useRef(); + function w() { + try { + return E.current instanceof HTMLElement ? E.current : zN(I.current); + } catch (de) { + return null; + } + } + var x = _ut(_, l, w, i), b = Wr(x, 4), R = b[0], M = b[1], O = b[2], P = b[3], B = $react.useRef(P); + P && (B.current = !0); + var H = $react.useCallback(function(de) { + E.current = de, MY(a, de); + }, [a]), Y, X = fr(fr({}, C), {}, { + visible: l + }); + if (!g) + Y = null; + else if (R === Sb) + P ? Y = g(fr({}, X), H) : !d && B.current && y ? Y = g(fr(fr({}, X), {}, { + className: y + }), H) : f || !d && !y ? Y = g(fr(fr({}, X), {}, { + style: { + display: "none" + } + }), H) : Y = null; + else { + var ee, ae; + M === Cp ? ae = "prepare" : _Ce(M) ? ae = "active" : M === dw && (ae = "start"); + var J = Uue(v, "".concat(R, "-").concat(ae)); + Y = g(fr(fr({}, X), {}, { + className: Cn(Uue(v, R), (ee = {}, Kt(ee, J, J && ae), Kt(ee, v, typeof v == "string"), ee)), + style: O + }), H); + } + if (/* @__PURE__ */ $react.isValidElement(Y) && DI(Y)) { + var ne = Y, fe = ne.ref; + fe || (Y = /* @__PURE__ */ $react.cloneElement(Y, { + ref: H + })); + } + return /* @__PURE__ */ dt(cut, { + ref: I, + children: Y + }); + }); + return n.displayName = "CSSMotion", n; +} +const kI = Sut(fCe); +var xG = "add", AG = "keep", RG = "remove", r4 = "removed"; +function but(e) { + var t; + return e && Ja(e) === "object" && "key" in e ? t = e : t = { + key: e + }, fr(fr({}, t), {}, { + key: String(t.key) + }); +} +function DG() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + return e.map(but); +} +function Eut() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [], r = [], n = 0, i = t.length, a = DG(e), o = DG(t); + a.forEach(function(d) { + for (var f = !1, g = n; g < i; g += 1) { + var v = o[g]; + if (v.key === d.key) { + n < g && (r = r.concat(o.slice(n, g).map(function(y) { + return fr(fr({}, y), {}, { + status: xG + }); + })), n = g), r.push(fr(fr({}, v), {}, { + status: AG + })), n += 1, f = !0; + break; + } + } + f || r.push(fr(fr({}, d), {}, { + status: RG + })); + }), n < i && (r = r.concat(o.slice(n).map(function(d) { + return fr(fr({}, d), {}, { + status: xG + }); + }))); + var l = {}; + r.forEach(function(d) { + var f = d.key; + l[f] = (l[f] || 0) + 1; + }); + var u = Object.keys(l).filter(function(d) { + return l[d] > 1; + }); + return u.forEach(function(d) { + r = r.filter(function(f) { + var g = f.key, v = f.status; + return g !== d || v !== RG; + }), r.forEach(function(f) { + f.key === d && (f.status = AG); + }); + }), r; +} +var Cut = ["component", "children", "onVisibleChanged", "onAllRemoved"], Tut = ["status"], wut = ["eventProps", "visible", "children", "motionName", "motionAppear", "motionEnter", "motionLeave", "motionLeaveImmediately", "motionDeadline", "removeOnLeave", "leavedClassName", "onAppearPrepare", "onAppearStart", "onAppearActive", "onAppearEnd", "onEnterStart", "onEnterActive", "onEnterEnd", "onLeaveStart", "onLeaveActive", "onLeaveEnd"]; +function Iut(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : kI, r = /* @__PURE__ */ function(n) { + OI(a, n); + var i = bB(a); + function a() { + var o; + Cd(this, a); + for (var l = arguments.length, u = new Array(l), d = 0; d < l; d++) + u[d] = arguments[d]; + return o = i.call.apply(i, [this].concat(u)), Kt(Ha(o), "state", { + keyEntities: [] + }), Kt(Ha(o), "removeKey", function(f) { + var g = o.state.keyEntities, v = g.map(function(y) { + return y.key !== f ? y : fr(fr({}, y), {}, { + status: r4 + }); + }); + return o.setState({ + keyEntities: v + }), v.filter(function(y) { + var C = y.status; + return C !== r4; + }).length; + }), o; + } + return Td(a, [{ + key: "render", + value: function() { + var l = this, u = this.state.keyEntities, d = this.props, f = d.component, g = d.children, v = d.onVisibleChanged, y = d.onAllRemoved, C = xh(d, Cut), A = f || $react.Fragment, S = {}; + return wut.forEach(function(_) { + S[_] = C[_], delete C[_]; + }), delete C.keys, /* @__PURE__ */ dt(A, rn(br({}, C), { + children: u.map(function(_, E) { + var I = _.status, w = xh(_, Tut), x = I === xG || I === AG; + return /* @__PURE__ */ $react.createElement(t, rn(br({}, S), { + key: w.key, + visible: x, + eventProps: w, + onVisibleChanged: function(R) { + if (v == null || v(R, { + key: w.key + }), !R) { + var M = l.removeKey(w.key); + M === 0 && y && y(); + } + } + }), function(b, R) { + return g(fr(fr({}, b), {}, { + index: E + }), R); + }); + }) + })); + } + }], [{ + key: "getDerivedStateFromProps", + value: function(l, u) { + var d = l.keys, f = u.keyEntities, g = DG(d), v = Eut(f, g); + return { + keyEntities: v.filter(function(y) { + var C = f.find(function(A) { + var S = A.key; + return y.key === S; + }); + return !(C && C.status === r4 && y.status === RG); + }) + }; + } + }]), a; + }($react.Component); + return Kt(r, "defaultProps", { + component: "div" + }), r; +} +const xut = Iut(fCe); +function Aut(e) { + const { + children: t + } = e, [, r] = Fp(), { + motion: n + } = r, i = $react.useRef(!1); + return i.current = i.current || n === !1, i.current ? /* @__PURE__ */ dt(lut, { + motion: n, + children: t + }) : t; +} +const Rut = () => null; +var Dut = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const Out = ["getTargetContainer", "getPopupContainer", "renderEmpty", "pageHeader", "input", "pagination", "form", "select", "button"], Mut = "ant"; +let SCe; +function kut() { + return SCe || Mut; +} +function Put(e) { + return Object.keys(e).some((t) => t.endsWith("Color")); +} +const Nut = (e) => { + const { + prefixCls: t, + iconPrefixCls: r, + theme: n, + holderRender: i + } = e; + t !== void 0 && (SCe = t), n && Put(n) && Dct(kut(), n); +}, Lut = (e) => { + const { + children: t, + csp: r, + autoInsertSpaceInButton: n, + alert: i, + anchor: a, + form: o, + locale: l, + componentSize: u, + direction: d, + space: f, + virtual: g, + dropdownMatchSelectWidth: v, + popupMatchSelectWidth: y, + popupOverflow: C, + legacyLocale: A, + parentContext: S, + iconPrefixCls: _, + theme: E, + componentDisabled: I, + segmented: w, + statistic: x, + spin: b, + calendar: R, + carousel: M, + cascader: O, + collapse: P, + typography: B, + checkbox: H, + descriptions: Y, + divider: X, + drawer: ee, + skeleton: ae, + steps: J, + image: ne, + layout: fe, + list: de, + mentions: Te, + modal: be, + progress: Ve, + result: pe, + slider: Be, + breadcrumb: Ue, + menu: Qe, + pagination: Re, + input: Ne, + empty: Me, + badge: we, + radio: He, + rate: Ie, + switch: Ae, + transfer: Fe, + avatar: $e, + message: lt, + tag: it, + table: nt, + card: ut, + tabs: rt, + timeline: Ke, + timePicker: ze, + upload: qe, + notification: ct, + tree: ft, + colorPicker: _t, + datePicker: Nt, + rangePicker: Yt, + flex: tr, + wave: Ct, + dropdown: hr, + warning: Er + } = e, Fr = $react.useCallback((jt, nr) => { + const { + prefixCls: Ht + } = e; + if (nr) + return nr; + const wn = Ht || S.getPrefixCls(""); + return jt ? `${wn}-${jt}` : wn; + }, [S.getPrefixCls, e.prefixCls]), Dn = _ || S.iconPrefixCls || XEe, hn = r || S.csp; + nCe(Dn, hn); + const Jn = out(E, S.theme), nn = { + csp: hn, + autoInsertSpaceInButton: n, + alert: i, + anchor: a, + locale: l || A, + direction: d, + space: f, + virtual: g, + popupMatchSelectWidth: y != null ? y : v, + popupOverflow: C, + getPrefixCls: Fr, + iconPrefixCls: Dn, + theme: Jn, + segmented: w, + statistic: x, + spin: b, + calendar: R, + carousel: M, + cascader: O, + collapse: P, + typography: B, + checkbox: H, + descriptions: Y, + divider: X, + drawer: ee, + skeleton: ae, + steps: J, + image: ne, + input: Ne, + layout: fe, + list: de, + mentions: Te, + modal: be, + progress: Ve, + result: pe, + slider: Be, + breadcrumb: Ue, + menu: Qe, + pagination: Re, + empty: Me, + badge: we, + radio: He, + rate: Ie, + switch: Ae, + transfer: Fe, + avatar: $e, + message: lt, + tag: it, + table: nt, + card: ut, + tabs: rt, + timeline: Ke, + timePicker: ze, + upload: qe, + notification: ct, + tree: ft, + colorPicker: _t, + datePicker: Nt, + rangePicker: Yt, + flex: tr, + wave: Ct, + dropdown: hr, + warning: Er + }, dn = Object.assign({}, S); + Object.keys(nn).forEach((jt) => { + nn[jt] !== void 0 && (dn[jt] = nn[jt]); + }), Out.forEach((jt) => { + const nr = e[jt]; + nr && (dn[jt] = nr); + }); + const an = OY(() => dn, dn, (jt, nr) => { + const Ht = Object.keys(jt), wn = Object.keys(nr); + return Ht.length !== wn.length || Ht.some((On) => jt[On] !== nr[On]); + }), zn = $react.useMemo(() => ({ + prefixCls: Dn, + csp: hn + }), [Dn, hn]); + let Lt = /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt(Rut, { + dropdownMatchSelectWidth: v + }), t] + }); + const Ot = $react.useMemo(() => { + var jt, nr, Ht, wn; + return hw(((jt = SE.Form) === null || jt === void 0 ? void 0 : jt.defaultValidateMessages) || {}, ((Ht = (nr = an.locale) === null || nr === void 0 ? void 0 : nr.Form) === null || Ht === void 0 ? void 0 : Ht.defaultValidateMessages) || {}, ((wn = an.form) === null || wn === void 0 ? void 0 : wn.validateMessages) || {}, (o == null ? void 0 : o.validateMessages) || {}); + }, [an, o == null ? void 0 : o.validateMessages]); + Object.keys(Ot).length > 0 && (Lt = /* @__PURE__ */ dt(UEe.Provider, { + value: Ot, + children: Lt + })), l && (Lt = /* @__PURE__ */ dt(Klt, { + locale: l, + _ANT_MARK__: Ylt, + children: Lt + })), (Dn || hn) && (Lt = /* @__PURE__ */ dt(jY.Provider, { + value: zn, + children: Lt + })), u && (Lt = /* @__PURE__ */ dt(Oct, { + size: u, + children: Lt + })), Lt = /* @__PURE__ */ dt(Aut, { + children: Lt + }); + const Jt = $react.useMemo(() => { + const jt = Jn || {}, { + algorithm: nr, + token: Ht, + components: wn, + cssVar: On + } = jt, or = Dut(jt, ["algorithm", "token", "components", "cssVar"]), Pt = nr && (!Array.isArray(nr) || nr.length > 0) ? mG(nr) : WEe, Qr = {}; + Object.entries(wn || {}).forEach((Un) => { + let [Yn, fi] = Un; + const xn = Object.assign({}, fi); + "algorithm" in xn && (xn.algorithm === !0 ? xn.theme = Pt : (Array.isArray(xn.algorithm) || typeof xn.algorithm == "function") && (xn.theme = mG(xn.algorithm)), delete xn.algorithm), Qr[Yn] = xn; + }); + const Bn = Object.assign(Object.assign({}, jR), Ht); + return Object.assign(Object.assign({}, or), { + theme: Pt, + token: Bn, + components: Qr, + override: Object.assign({ + override: Bn + }, Qr), + cssVar: On + }); + }, [Jn]); + return E && (Lt = /* @__PURE__ */ dt(YEe.Provider, { + value: Jt, + children: Lt + })), an.warning && (Lt = /* @__PURE__ */ dt(jst.Provider, { + value: an.warning, + children: Lt + })), I !== void 0 && (Lt = /* @__PURE__ */ dt(KEe, { + disabled: I, + children: Lt + })), /* @__PURE__ */ dt(Sl.Provider, { + value: an, + children: Lt + }); +}, VD = (e) => { + const t = $react.useContext(Sl), r = $react.useContext($Y); + return /* @__PURE__ */ dt(Lut, br({}, Object.assign({ + parentContext: t, + legacyLocale: r + }, e))); +}; +VD.ConfigContext = Sl; +VD.SizeContext = jD; +VD.config = Nut; +VD.useConfig = Mct; +Object.defineProperty(VD, "SizeContext", { + get: () => jD +}); +const { + isValidElement: EB +} = $react; +function bCe(e) { + return e && EB(e) && e.type === $react.Fragment; +} +function Fut(e, t, r) { + return EB(e) ? /* @__PURE__ */ $react.cloneElement(e, typeof r == "function" ? r(e.props || {}) : r) : t; +} +function Kw(e, t) { + return Fut(e, e, t); +} +const But = (e) => { + const { + componentCls: t, + colorPrimary: r + } = e; + return { + [t]: { + position: "absolute", + background: "transparent", + pointerEvents: "none", + boxSizing: "border-box", + color: `var(--wave-color, ${r})`, + boxShadow: "0 0 0 0 currentcolor", + opacity: 0.2, + // =================== Motion =================== + "&.wave-motion-appear": { + transition: [`box-shadow 0.4s ${e.motionEaseOutCirc}`, `opacity 2s ${e.motionEaseOutCirc}`].join(","), + "&-active": { + boxShadow: "0 0 0 6px currentcolor", + opacity: 0 + }, + "&.wave-quick": { + transition: [`box-shadow 0.3s ${e.motionEaseInOut}`, `opacity 0.35s ${e.motionEaseInOut}`].join(",") + } + } + } + }; +}, Uut = zY("Wave", (e) => [But(e)]); +function Uu() { + Uu = function() { + return t; + }; + var e, t = {}, r = Object.prototype, n = r.hasOwnProperty, i = Object.defineProperty || function(ae, J, ne) { + ae[J] = ne.value; + }, a = typeof Symbol == "function" ? Symbol : {}, o = a.iterator || "@@iterator", l = a.asyncIterator || "@@asyncIterator", u = a.toStringTag || "@@toStringTag"; + function d(ae, J, ne) { + return Object.defineProperty(ae, J, { + value: ne, + enumerable: !0, + configurable: !0, + writable: !0 + }), ae[J]; + } + try { + d({}, ""); + } catch (ae) { + d = function(ne, fe, de) { + return ne[fe] = de; + }; + } + function f(ae, J, ne, fe) { + var de = J && J.prototype instanceof _ ? J : _, Te = Object.create(de.prototype), be = new X(fe || []); + return i(Te, "_invoke", { + value: P(ae, ne, be) + }), Te; + } + function g(ae, J, ne) { + try { + return { + type: "normal", + arg: ae.call(J, ne) + }; + } catch (fe) { + return { + type: "throw", + arg: fe + }; + } + } + t.wrap = f; + var v = "suspendedStart", y = "suspendedYield", C = "executing", A = "completed", S = {}; + function _() { + } + function E() { + } + function I() { + } + var w = {}; + d(w, o, function() { + return this; + }); + var x = Object.getPrototypeOf, b = x && x(x(ee([]))); + b && b !== r && n.call(b, o) && (w = b); + var R = I.prototype = _.prototype = Object.create(w); + function M(ae) { + ["next", "throw", "return"].forEach(function(J) { + d(ae, J, function(ne) { + return this._invoke(J, ne); + }); + }); + } + function O(ae, J) { + function ne(de, Te, be, Ve) { + var pe = g(ae[de], ae, Te); + if (pe.type !== "throw") { + var Be = pe.arg, Ue = Be.value; + return Ue && Ja(Ue) == "object" && n.call(Ue, "__await") ? J.resolve(Ue.__await).then(function(Qe) { + ne("next", Qe, be, Ve); + }, function(Qe) { + ne("throw", Qe, be, Ve); + }) : J.resolve(Ue).then(function(Qe) { + Be.value = Qe, be(Be); + }, function(Qe) { + return ne("throw", Qe, be, Ve); + }); + } + Ve(pe.arg); + } + var fe; + i(this, "_invoke", { + value: function(Te, be) { + function Ve() { + return new J(function(pe, Be) { + ne(Te, be, pe, Be); + }); + } + return fe = fe ? fe.then(Ve, Ve) : Ve(); + } + }); + } + function P(ae, J, ne) { + var fe = v; + return function(de, Te) { + if (fe === C) + throw Error("Generator is already running"); + if (fe === A) { + if (de === "throw") + throw Te; + return { + value: e, + done: !0 + }; + } + for (ne.method = de, ne.arg = Te; ; ) { + var be = ne.delegate; + if (be) { + var Ve = B(be, ne); + if (Ve) { + if (Ve === S) + continue; + return Ve; + } + } + if (ne.method === "next") + ne.sent = ne._sent = ne.arg; + else if (ne.method === "throw") { + if (fe === v) + throw fe = A, ne.arg; + ne.dispatchException(ne.arg); + } else + ne.method === "return" && ne.abrupt("return", ne.arg); + fe = C; + var pe = g(ae, J, ne); + if (pe.type === "normal") { + if (fe = ne.done ? A : y, pe.arg === S) + continue; + return { + value: pe.arg, + done: ne.done + }; + } + pe.type === "throw" && (fe = A, ne.method = "throw", ne.arg = pe.arg); + } + }; + } + function B(ae, J) { + var ne = J.method, fe = ae.iterator[ne]; + if (fe === e) + return J.delegate = null, ne === "throw" && ae.iterator.return && (J.method = "return", J.arg = e, B(ae, J), J.method === "throw") || ne !== "return" && (J.method = "throw", J.arg = new TypeError("The iterator does not provide a '" + ne + "' method")), S; + var de = g(fe, ae.iterator, J.arg); + if (de.type === "throw") + return J.method = "throw", J.arg = de.arg, J.delegate = null, S; + var Te = de.arg; + return Te ? Te.done ? (J[ae.resultName] = Te.value, J.next = ae.nextLoc, J.method !== "return" && (J.method = "next", J.arg = e), J.delegate = null, S) : Te : (J.method = "throw", J.arg = new TypeError("iterator result is not an object"), J.delegate = null, S); + } + function H(ae) { + var J = { + tryLoc: ae[0] + }; + 1 in ae && (J.catchLoc = ae[1]), 2 in ae && (J.finallyLoc = ae[2], J.afterLoc = ae[3]), this.tryEntries.push(J); + } + function Y(ae) { + var J = ae.completion || {}; + J.type = "normal", delete J.arg, ae.completion = J; + } + function X(ae) { + this.tryEntries = [{ + tryLoc: "root" + }], ae.forEach(H, this), this.reset(!0); + } + function ee(ae) { + if (ae || ae === "") { + var J = ae[o]; + if (J) + return J.call(ae); + if (typeof ae.next == "function") + return ae; + if (!isNaN(ae.length)) { + var ne = -1, fe = function de() { + for (; ++ne < ae.length; ) + if (n.call(ae, ne)) + return de.value = ae[ne], de.done = !1, de; + return de.value = e, de.done = !0, de; + }; + return fe.next = fe; + } + } + throw new TypeError(Ja(ae) + " is not iterable"); + } + return E.prototype = I, i(R, "constructor", { + value: I, + configurable: !0 + }), i(I, "constructor", { + value: E, + configurable: !0 + }), E.displayName = d(I, u, "GeneratorFunction"), t.isGeneratorFunction = function(ae) { + var J = typeof ae == "function" && ae.constructor; + return !!J && (J === E || (J.displayName || J.name) === "GeneratorFunction"); + }, t.mark = function(ae) { + return Object.setPrototypeOf ? Object.setPrototypeOf(ae, I) : (ae.__proto__ = I, d(ae, u, "GeneratorFunction")), ae.prototype = Object.create(R), ae; + }, t.awrap = function(ae) { + return { + __await: ae + }; + }, M(O.prototype), d(O.prototype, l, function() { + return this; + }), t.AsyncIterator = O, t.async = function(ae, J, ne, fe, de) { + de === void 0 && (de = Promise); + var Te = new O(f(ae, J, ne, fe), de); + return t.isGeneratorFunction(J) ? Te : Te.next().then(function(be) { + return be.done ? be.value : Te.next(); + }); + }, M(R), d(R, u, "Generator"), d(R, o, function() { + return this; + }), d(R, "toString", function() { + return "[object Generator]"; + }), t.keys = function(ae) { + var J = Object(ae), ne = []; + for (var fe in J) + ne.push(fe); + return ne.reverse(), function de() { + for (; ne.length; ) { + var Te = ne.pop(); + if (Te in J) + return de.value = Te, de.done = !1, de; + } + return de.done = !0, de; + }; + }, t.values = ee, X.prototype = { + constructor: X, + reset: function(J) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = e, this.done = !1, this.delegate = null, this.method = "next", this.arg = e, this.tryEntries.forEach(Y), !J) + for (var ne in this) + ne.charAt(0) === "t" && n.call(this, ne) && !isNaN(+ne.slice(1)) && (this[ne] = e); + }, + stop: function() { + this.done = !0; + var J = this.tryEntries[0].completion; + if (J.type === "throw") + throw J.arg; + return this.rval; + }, + dispatchException: function(J) { + if (this.done) + throw J; + var ne = this; + function fe(Be, Ue) { + return be.type = "throw", be.arg = J, ne.next = Be, Ue && (ne.method = "next", ne.arg = e), !!Ue; + } + for (var de = this.tryEntries.length - 1; de >= 0; --de) { + var Te = this.tryEntries[de], be = Te.completion; + if (Te.tryLoc === "root") + return fe("end"); + if (Te.tryLoc <= this.prev) { + var Ve = n.call(Te, "catchLoc"), pe = n.call(Te, "finallyLoc"); + if (Ve && pe) { + if (this.prev < Te.catchLoc) + return fe(Te.catchLoc, !0); + if (this.prev < Te.finallyLoc) + return fe(Te.finallyLoc); + } else if (Ve) { + if (this.prev < Te.catchLoc) + return fe(Te.catchLoc, !0); + } else { + if (!pe) + throw Error("try statement without catch or finally"); + if (this.prev < Te.finallyLoc) + return fe(Te.finallyLoc); + } + } + } + }, + abrupt: function(J, ne) { + for (var fe = this.tryEntries.length - 1; fe >= 0; --fe) { + var de = this.tryEntries[fe]; + if (de.tryLoc <= this.prev && n.call(de, "finallyLoc") && this.prev < de.finallyLoc) { + var Te = de; + break; + } + } + Te && (J === "break" || J === "continue") && Te.tryLoc <= ne && ne <= Te.finallyLoc && (Te = null); + var be = Te ? Te.completion : {}; + return be.type = J, be.arg = ne, Te ? (this.method = "next", this.next = Te.finallyLoc, S) : this.complete(be); + }, + complete: function(J, ne) { + if (J.type === "throw") + throw J.arg; + return J.type === "break" || J.type === "continue" ? this.next = J.arg : J.type === "return" ? (this.rval = this.arg = J.arg, this.method = "return", this.next = "end") : J.type === "normal" && ne && (this.next = ne), S; + }, + finish: function(J) { + for (var ne = this.tryEntries.length - 1; ne >= 0; --ne) { + var fe = this.tryEntries[ne]; + if (fe.finallyLoc === J) + return this.complete(fe.completion, fe.afterLoc), Y(fe), S; + } + }, + catch: function(J) { + for (var ne = this.tryEntries.length - 1; ne >= 0; --ne) { + var fe = this.tryEntries[ne]; + if (fe.tryLoc === J) { + var de = fe.completion; + if (de.type === "throw") { + var Te = de.arg; + Y(fe); + } + return Te; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function(J, ne, fe) { + return this.delegate = { + iterator: ee(J), + resultName: ne, + nextLoc: fe + }, this.method === "next" && (this.arg = e), S; + } + }, t; +} +function $ue(e, t, r, n, i, a, o) { + try { + var l = e[a](o), u = l.value; + } catch (d) { + r(d); + return; + } + l.done ? t(u) : Promise.resolve(u).then(n, i); +} +function UE(e) { + return function() { + var t = this, r = arguments; + return new Promise(function(n, i) { + var a = e.apply(t, r); + function o(u) { + $ue(a, n, i, o, l, "next", u); + } + function l(u) { + $ue(a, n, i, o, l, "throw", u); + } + o(void 0); + }); + }; +} +var zD = fr({}, $react_dom), jut = zD.version, $ut = zD.render, Vut = zD.unmountComponentAtNode, CB; +try { + var zut = Number((jut || "").split(".")[0]); + zut >= 18 && (CB = zD.createRoot); +} catch (e) { +} +function Vue(e) { + var t = zD.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + t && Ja(t) === "object" && (t.usingClientEntryPoint = e); +} +var p2 = "__rc_react_root__"; +function Hut(e, t) { + Vue(!0); + var r = t[p2] || CB(t); + Vue(!1), r.render(e), t[p2] = r; +} +function Wut(e, t) { + $ut(e, t); +} +function Gut(e, t) { + if (CB) { + Hut(e, t); + return; + } + Wut(e, t); +} +function Yut(e) { + return OG.apply(this, arguments); +} +function OG() { + return OG = UE(/* @__PURE__ */ Uu().mark(function e(t) { + return Uu().wrap(function(n) { + for (; ; ) + switch (n.prev = n.next) { + case 0: + return n.abrupt("return", Promise.resolve().then(function() { + var i; + (i = t[p2]) === null || i === void 0 || i.unmount(), delete t[p2]; + })); + case 1: + case "end": + return n.stop(); + } + }, e); + })), OG.apply(this, arguments); +} +function Xut(e) { + Vut(e); +} +function Kut(e) { + return MG.apply(this, arguments); +} +function MG() { + return MG = UE(/* @__PURE__ */ Uu().mark(function e(t) { + return Uu().wrap(function(n) { + for (; ; ) + switch (n.prev = n.next) { + case 0: + if (CB === void 0) { + n.next = 2; + break; + } + return n.abrupt("return", Yut(t)); + case 2: + Xut(t); + case 3: + case "end": + return n.stop(); + } + }, e); + })), MG.apply(this, arguments); +} +function Zut(e) { + const t = (e || "").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/); + return t && t[1] && t[2] && t[3] ? !(t[1] === t[2] && t[2] === t[3]) : !0; +} +function n4(e) { + return e && e !== "#fff" && e !== "#ffffff" && e !== "rgb(255, 255, 255)" && e !== "rgba(255, 255, 255, 1)" && Zut(e) && !/rgba\((?:\d*, ){3}0\)/.test(e) && // any transparent rgba color + e !== "transparent"; +} +function qut(e) { + const { + borderTopColor: t, + borderColor: r, + backgroundColor: n + } = getComputedStyle(e); + return n4(t) ? t : n4(r) ? r : n4(n) ? n : null; +} +const ECe = "ant-wave-target"; +function i4(e) { + return Number.isNaN(e) ? 0 : e; +} +const Jut = (e) => { + const { + className: t, + target: r, + component: n + } = e, i = $react.useRef(null), [a, o] = $react.useState(null), [l, u] = $react.useState([]), [d, f] = $react.useState(0), [g, v] = $react.useState(0), [y, C] = $react.useState(0), [A, S] = $react.useState(0), [_, E] = $react.useState(!1), I = { + left: d, + top: g, + width: y, + height: A, + borderRadius: l.map((b) => `${b}px`).join(" ") + }; + a && (I["--wave-color"] = a); + function w() { + const b = getComputedStyle(r); + o(qut(r)); + const R = b.position === "static", { + borderLeftWidth: M, + borderTopWidth: O + } = b; + f(R ? r.offsetLeft : i4(-parseFloat(M))), v(R ? r.offsetTop : i4(-parseFloat(O))), C(r.offsetWidth), S(r.offsetHeight); + const { + borderTopLeftRadius: P, + borderTopRightRadius: B, + borderBottomLeftRadius: H, + borderBottomRightRadius: Y + } = b; + u([P, B, Y, H].map((X) => i4(parseFloat(X)))); + } + if ($react.useEffect(() => { + if (r) { + const b = yd(() => { + w(), E(!0); + }); + let R; + return typeof ResizeObserver != "undefined" && (R = new ResizeObserver(w), R.observe(r)), () => { + yd.cancel(b), R == null || R.disconnect(); + }; + } + }, []), !_) + return null; + const x = (n === "Checkbox" || n === "Radio") && (r == null ? void 0 : r.classList.contains(ECe)); + return /* @__PURE__ */ dt(kI, { + visible: !0, + motionAppear: !0, + motionName: "wave-motion", + motionDeadline: 5e3, + onAppearEnd: (b, R) => { + var M; + if (R.deadline || R.propertyName === "opacity") { + const O = (M = i.current) === null || M === void 0 ? void 0 : M.parentElement; + Kut(O).then(() => { + O == null || O.remove(); + }); + } + return !1; + }, + children: (b) => { + let { + className: R + } = b; + return /* @__PURE__ */ dt("div", { + ref: i, + className: Cn(t, { + "wave-quick": x + }, R), + style: I + }); + } + }); +}, Qut = (e, t) => { + var r; + const { + component: n + } = t; + if (n === "Checkbox" && !(!((r = e.querySelector("input")) === null || r === void 0) && r.checked)) + return; + const i = document.createElement("div"); + i.style.position = "absolute", i.style.left = "0px", i.style.top = "0px", e == null || e.insertBefore(i, e == null ? void 0 : e.firstChild), Gut( + /* @__PURE__ */ dt(Jut, br({}, Object.assign({}, t, { + target: e + }))), + i + ); +}, eht = Qut; +function tht(e, t, r) { + const { + wave: n + } = $react.useContext(Sl), [, i, a] = Fp(), o = Vg((d) => { + const f = e.current; + if (n != null && n.disabled || !f) + return; + const g = f.querySelector(`.${ECe}`) || f, { + showEffect: v + } = n || {}; + (v || eht)(g, { + className: t, + token: i, + component: r, + event: d, + hashId: a + }); + }), l = $react.useRef(); + return (d) => { + yd.cancel(l.current), l.current = yd(() => { + o(d); + }); + }; +} +const rht = (e) => { + const { + children: t, + disabled: r, + component: n + } = e, { + getPrefixCls: i + } = $react.useContext(Sl), a = $react.useRef(null), o = i("wave"), [, l] = Uut(o), u = tht(a, Cn(o, l), n); + if ($react.useEffect(() => { + const f = a.current; + if (!f || f.nodeType !== 1 || r) + return; + const g = (v) => { + !NY(v.target) || // No need wave + !f.getAttribute || f.getAttribute("disabled") || f.disabled || f.className.includes("disabled") || f.className.includes("-leave") || u(v); + }; + return f.addEventListener("click", g, !0), () => { + f.removeEventListener("click", g, !0); + }; + }, [r]), !/* @__PURE__ */ $react.isValidElement(t)) + return t != null ? t : null; + const d = DI(t) ? M0(t.ref, a) : a; + return Kw(t, { + ref: d + }); +}, nht = rht, iht = (e) => { + const t = $react.useContext(jD); + return $react.useMemo(() => e ? typeof e == "string" ? e != null ? e : t : e instanceof Function ? e(t) : t : t, [e, t]); +}, HD = iht; +function $R(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, r = []; + return $react.Children.forEach(e, function(n) { + n == null && !t.keepEmpty || (Array.isArray(n) ? r = r.concat($R(n)) : BN.isFragment(n) && n.props ? r = r.concat($R(n.props.children, t)) : r.push(n)); + }), r; +} +globalThis && globalThis.__rest; +const CCe = /* @__PURE__ */ $react.createContext(null), GY = (e, t) => { + const r = $react.useContext(CCe), n = $react.useMemo(() => { + if (!r) + return ""; + const { + compactDirection: i, + isFirstItem: a, + isLastItem: o + } = r, l = i === "vertical" ? "-vertical-" : "-"; + return Cn(`${e}-compact${l}item`, { + [`${e}-compact${l}first-item`]: a, + [`${e}-compact${l}last-item`]: o, + [`${e}-compact${l}item-rtl`]: t === "rtl" + }); + }, [e, t, r]); + return { + compactSize: r == null ? void 0 : r.compactSize, + compactDirection: r == null ? void 0 : r.compactDirection, + compactItemClassnames: n + }; +}, kG = (e) => { + let { + children: t + } = e; + return /* @__PURE__ */ dt(CCe.Provider, { + value: null, + children: t + }); +}; +var aht = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const TCe = /* @__PURE__ */ $react.createContext(void 0), oht = (e) => { + const { + getPrefixCls: t, + direction: r + } = $react.useContext(Sl), { + prefixCls: n, + size: i, + className: a + } = e, o = aht(e, ["prefixCls", "size", "className"]), l = t("btn-group", n), [, , u] = Fp(); + let d = ""; + switch (i) { + case "large": + d = "lg"; + break; + case "small": + d = "sm"; + break; + } + const f = Cn(l, { + [`${l}-${d}`]: d, + [`${l}-rtl`]: r === "rtl" + }, a, u); + return /* @__PURE__ */ dt(TCe.Provider, { + value: i, + children: /* @__PURE__ */ dt("div", br({}, Object.assign({}, o, { + className: f + }))) + }); +}, sht = oht, zue = /^[\u4e00-\u9fa5]{2}$/, PG = zue.test.bind(zue); +function Hue(e) { + return typeof e == "string"; +} +function a4(e) { + return e === "text" || e === "link"; +} +function lht(e, t) { + if (e == null) + return; + const r = t ? " " : ""; + return typeof e != "string" && typeof e != "number" && Hue(e.type) && PG(e.props.children) ? Kw(e, { + children: e.props.children.split("").join(r) + }) : Hue(e) ? PG(e) ? /* @__PURE__ */ dt("span", { + children: e.split("").join(r) + }) : /* @__PURE__ */ dt("span", { + children: e + }) : bCe(e) ? /* @__PURE__ */ dt("span", { + children: e + }) : e; +} +function cht(e, t) { + let r = !1; + const n = []; + return $react.Children.forEach(e, (i) => { + const a = typeof i, o = a === "string" || a === "number"; + if (r && o) { + const l = n.length - 1, u = n[l]; + n[l] = `${u}${i}`; + } else + n.push(i); + r = o; + }), $react.Children.map(n, (i) => lht(i, t)); +} +const uht = /* @__PURE__ */ $react.forwardRef((e, t) => { + const { + className: r, + style: n, + children: i, + prefixCls: a + } = e, o = Cn(`${a}-icon`, r); + return /* @__PURE__ */ dt("span", { + ref: t, + className: o, + style: n, + children: i + }); +}), wCe = uht; +var hht = { icon: { tag: "svg", attrs: { viewBox: "0 0 1024 1024", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z" } }] }, name: "loading", theme: "outlined" }; +const dht = hht; +function ICe(e) { + var t; + return e == null || (t = e.getRootNode) === null || t === void 0 ? void 0 : t.call(e); +} +function fht(e) { + return ICe(e) instanceof ShadowRoot; +} +function g2(e) { + return fht(e) ? ICe(e) : null; +} +function pht(e) { + return e.replace(/-(.)/g, function(t, r) { + return r.toUpperCase(); + }); +} +function ght(e, t) { + fd(e, "[@ant-design/icons] ".concat(t)); +} +function Wue(e) { + return Ja(e) === "object" && typeof e.name == "string" && typeof e.theme == "string" && (Ja(e.icon) === "object" || typeof e.icon == "function"); +} +function Gue() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return Object.keys(e).reduce(function(t, r) { + var n = e[r]; + switch (r) { + case "class": + t.className = n, delete t.class; + break; + default: + delete t[r], t[pht(r)] = n; + } + return t; + }, {}); +} +function NG(e, t, r) { + return r ? /* @__PURE__ */ $react.createElement(e.tag, fr(fr({ + key: t + }, Gue(e.attrs)), r), (e.children || []).map(function(n, i) { + return NG(n, "".concat(t, "-").concat(e.tag, "-").concat(i)); + })) : /* @__PURE__ */ $react.createElement(e.tag, fr({ + key: t + }, Gue(e.attrs)), (e.children || []).map(function(n, i) { + return NG(n, "".concat(t, "-").concat(e.tag, "-").concat(i)); + })); +} +function xCe(e) { + return bE(e)[0]; +} +function ACe(e) { + return e ? Array.isArray(e) ? e : [e] : []; +} +var vht = ` +.anticon { + display: inline-flex; + alignItems: center; + color: inherit; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.anticon > * { + line-height: 1; +} + +.anticon svg { + display: inline-block; +} + +.anticon::before { + display: none; +} + +.anticon .anticon-icon { + display: block; +} + +.anticon[tabindex] { + cursor: pointer; +} + +.anticon-spin::before, +.anticon-spin { + display: inline-block; + -webkit-animation: loadingCircle 1s infinite linear; + animation: loadingCircle 1s infinite linear; +} + +@-webkit-keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +`, mht = function(t) { + var r = $react.useContext(jY), n = r.csp, i = r.prefixCls, a = vht; + i && (a = a.replace(/anticon/g, i)), $react.useEffect(function() { + var o = t.current, l = g2(o); + Um(a, "@ant-design-icons", { + prepend: !0, + csp: n, + attachTo: l + }); + }, []); +}, yht = ["icon", "className", "onClick", "style", "primaryColor", "secondaryColor"], V1 = { + primaryColor: "#333", + secondaryColor: "#E6E6E6", + calculated: !1 +}; +function _ht(e) { + var t = e.primaryColor, r = e.secondaryColor; + V1.primaryColor = t, V1.secondaryColor = r || xCe(t), V1.calculated = !!r; +} +function Sht() { + return fr({}, V1); +} +var TB = function(t) { + var r = t.icon, n = t.className, i = t.onClick, a = t.style, o = t.primaryColor, l = t.secondaryColor, u = xh(t, yht), d = $react.useRef(), f = V1; + if (o && (f = { + primaryColor: o, + secondaryColor: l || xCe(o) + }), mht(d), ght(Wue(r), "icon should be icon definiton, but got ".concat(r)), !Wue(r)) + return null; + var g = r; + return g && typeof g.icon == "function" && (g = fr(fr({}, g), {}, { + icon: g.icon(f.primaryColor, f.secondaryColor) + })), NG(g.icon, "svg-".concat(g.name), fr(fr({ + className: n, + onClick: i, + style: a, + "data-icon": g.name, + width: "1em", + height: "1em", + fill: "currentColor", + "aria-hidden": "true" + }, u), {}, { + ref: d + })); +}; +TB.displayName = "IconReact"; +TB.getTwoToneColors = Sht; +TB.setTwoToneColors = _ht; +const YY = TB; +function RCe(e) { + var t = ACe(e), r = Wr(t, 2), n = r[0], i = r[1]; + return YY.setTwoToneColors({ + primaryColor: n, + secondaryColor: i + }); +} +function bht() { + var e = YY.getTwoToneColors(); + return e.calculated ? [e.primaryColor, e.secondaryColor] : e.primaryColor; +} +var Eht = ["className", "icon", "spin", "rotate", "tabIndex", "onClick", "twoToneColor"]; +RCe(dct.primary); +var wB = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r = e.className, n = e.icon, i = e.spin, a = e.rotate, o = e.tabIndex, l = e.onClick, u = e.twoToneColor, d = xh(e, Eht), f = $react.useContext(jY), g = f.prefixCls, v = g === void 0 ? "anticon" : g, y = f.rootClassName, C = Cn(y, v, Kt(Kt({}, "".concat(v, "-").concat(n.name), !!n.name), "".concat(v, "-spin"), !!i || n.name === "loading"), r), A = o; + A === void 0 && l && (A = -1); + var S = a ? { + msTransform: "rotate(".concat(a, "deg)"), + transform: "rotate(".concat(a, "deg)") + } : void 0, _ = ACe(u), E = Wr(_, 2), I = E[0], w = E[1]; + return /* @__PURE__ */ dt("span", rn(br({ + role: "img", + "aria-label": n.name + }, d), { + ref: t, + tabIndex: A, + onClick: l, + className: C, + children: /* @__PURE__ */ dt(YY, { + icon: n, + primaryColor: I, + secondaryColor: w, + style: S + }) + })); +}); +wB.displayName = "AntdIcon"; +wB.getTwoToneColor = bht; +wB.setTwoToneColor = RCe; +const k0 = wB; +var Cht = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: dht + })); +}, Tht = /* @__PURE__ */ $react.forwardRef(Cht); +const DCe = Tht, Yue = /* @__PURE__ */ $react.forwardRef((e, t) => { + let { + prefixCls: r, + className: n, + style: i, + iconClassName: a + } = e; + const o = Cn(`${r}-loading-icon`, n); + return /* @__PURE__ */ dt(wCe, { + prefixCls: r, + className: o, + style: i, + ref: t, + children: /* @__PURE__ */ dt(DCe, { + className: a + }) + }); +}), o4 = () => ({ + width: 0, + opacity: 0, + transform: "scale(0)" +}), s4 = (e) => ({ + width: e.scrollWidth, + opacity: 1, + transform: "scale(1)" +}), wht = (e) => { + const { + prefixCls: t, + loading: r, + existIcon: n, + className: i, + style: a + } = e, o = !!r; + return n ? /* @__PURE__ */ dt(Yue, { + prefixCls: t, + className: i, + style: a + }) : /* @__PURE__ */ dt(kI, { + visible: o, + motionName: `${t}-loading-icon-motion`, + motionLeave: o, + removeOnLeave: !0, + onAppearStart: o4, + onAppearActive: s4, + onEnterStart: o4, + onEnterActive: s4, + onLeaveStart: s4, + onLeaveActive: o4, + children: (l, u) => { + let { + className: d, + style: f + } = l; + return /* @__PURE__ */ dt(Yue, { + prefixCls: t, + className: i, + style: Object.assign(Object.assign({}, a), f), + ref: u, + iconClassName: d + }); + } + }); +}, Iht = wht, Xue = (e, t) => ({ + // Border + [`> span, > ${e}`]: { + "&:not(:last-child)": { + [`&, & > ${e}`]: { + "&:not(:disabled)": { + borderInlineEndColor: t + } + } + }, + "&:not(:first-child)": { + [`&, & > ${e}`]: { + "&:not(:disabled)": { + borderInlineStartColor: t + } + } + } + } +}), xht = (e) => { + const { + componentCls: t, + fontSize: r, + lineWidth: n, + groupBorderColor: i, + colorErrorHover: a + } = e; + return { + [`${t}-group`]: [ + { + position: "relative", + display: "inline-flex", + // Border + [`> span, > ${t}`]: { + "&:not(:last-child)": { + [`&, & > ${t}`]: { + borderStartEndRadius: 0, + borderEndEndRadius: 0 + } + }, + "&:not(:first-child)": { + marginInlineStart: e.calc(n).mul(-1).equal(), + [`&, & > ${t}`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0 + } + } + }, + [t]: { + position: "relative", + zIndex: 1, + "&:hover,\n &:focus,\n &:active": { + zIndex: 2 + }, + "&[disabled]": { + zIndex: 0 + } + }, + [`${t}-icon-only`]: { + fontSize: r + } + }, + // Border Color + Xue(`${t}-primary`, i), + Xue(`${t}-danger`, a) + ] + }; +}, Aht = xht, OCe = (e) => { + const { + paddingInline: t, + onlyIconSize: r, + paddingBlock: n + } = e; + return wd(e, { + buttonPaddingHorizontal: t, + buttonPaddingVertical: n, + buttonIconOnlyFontSize: r + }); +}, MCe = (e) => { + var t, r, n, i, a, o; + const l = (t = e.contentFontSize) !== null && t !== void 0 ? t : e.fontSize, u = (r = e.contentFontSizeSM) !== null && r !== void 0 ? r : e.fontSize, d = (n = e.contentFontSizeLG) !== null && n !== void 0 ? n : e.fontSizeLG, f = (i = e.contentLineHeight) !== null && i !== void 0 ? i : VN(l), g = (a = e.contentLineHeightSM) !== null && a !== void 0 ? a : VN(u), v = (o = e.contentLineHeightLG) !== null && o !== void 0 ? o : VN(d); + return { + fontWeight: 400, + defaultShadow: `0 ${e.controlOutlineWidth}px 0 ${e.controlTmpOutline}`, + primaryShadow: `0 ${e.controlOutlineWidth}px 0 ${e.controlOutline}`, + dangerShadow: `0 ${e.controlOutlineWidth}px 0 ${e.colorErrorOutline}`, + primaryColor: e.colorTextLightSolid, + dangerColor: e.colorTextLightSolid, + borderColorDisabled: e.colorBorder, + defaultGhostColor: e.colorBgContainer, + ghostBg: "transparent", + defaultGhostBorderColor: e.colorBgContainer, + paddingInline: e.paddingContentHorizontal - e.lineWidth, + paddingInlineLG: e.paddingContentHorizontal - e.lineWidth, + paddingInlineSM: 8 - e.lineWidth, + onlyIconSize: e.fontSizeLG, + onlyIconSizeSM: e.fontSizeLG - 2, + onlyIconSizeLG: e.fontSizeLG + 2, + groupBorderColor: e.colorPrimaryHover, + linkHoverBg: "transparent", + textHoverBg: e.colorBgTextHover, + defaultColor: e.colorText, + defaultBg: e.colorBgContainer, + defaultBorderColor: e.colorBorder, + defaultBorderColorDisabled: e.colorBorder, + contentFontSize: l, + contentFontSizeSM: u, + contentFontSizeLG: d, + contentLineHeight: f, + contentLineHeightSM: g, + contentLineHeightLG: v, + paddingBlock: Math.max((e.controlHeight - l * f) / 2 - e.lineWidth, 0), + paddingBlockSM: Math.max((e.controlHeightSM - u * g) / 2 - e.lineWidth, 0), + paddingBlockLG: Math.max((e.controlHeightLG - d * v) / 2 - e.lineWidth, 0) + }; +}, Rht = (e) => { + const { + componentCls: t, + iconCls: r, + fontWeight: n + } = e; + return { + [t]: { + outline: "none", + position: "relative", + display: "inline-block", + fontWeight: n, + whiteSpace: "nowrap", + textAlign: "center", + backgroundImage: "none", + background: "transparent", + border: `${da(e.lineWidth)} ${e.lineType} transparent`, + cursor: "pointer", + transition: `all ${e.motionDurationMid} ${e.motionEaseInOut}`, + userSelect: "none", + touchAction: "manipulation", + color: e.colorText, + "&:disabled > *": { + pointerEvents: "none" + }, + "> span": { + display: "inline-block" + }, + [`${t}-icon`]: { + lineHeight: 0 + }, + // Leave a space between icon and text. + [`> ${r} + span, > span + ${r}`]: { + marginInlineStart: e.marginXS + }, + [`&:not(${t}-icon-only) > ${t}-icon`]: { + [`&${t}-loading-icon, &:not(:last-child)`]: { + marginInlineEnd: e.marginXS + } + }, + "> a": { + color: "currentColor" + }, + "&:not(:disabled)": Object.assign({}, $ct(e)), + [`&${t}-two-chinese-chars::first-letter`]: { + letterSpacing: "0.34em" + }, + [`&${t}-two-chinese-chars > *:not(${r})`]: { + marginInlineEnd: "-0.34em", + letterSpacing: "0.34em" + }, + // make `btn-icon-only` not too narrow + [`&-icon-only${t}-compact-item`]: { + flex: "none" + } + } + }; +}, Zm = (e, t, r) => ({ + [`&:not(:disabled):not(${e}-disabled)`]: { + "&:hover": t, + "&:active": r + } +}), Dht = (e) => ({ + minWidth: e.controlHeight, + paddingInlineStart: 0, + paddingInlineEnd: 0, + borderRadius: "50%" +}), Oht = (e) => ({ + borderRadius: e.controlHeight, + paddingInlineStart: e.calc(e.controlHeight).div(2).equal(), + paddingInlineEnd: e.calc(e.controlHeight).div(2).equal() +}), Mht = (e) => ({ + cursor: "not-allowed", + borderColor: e.borderColorDisabled, + color: e.colorTextDisabled, + background: e.colorBgContainerDisabled, + boxShadow: "none" +}), VR = (e, t, r, n, i, a, o, l) => ({ + [`&${e}-background-ghost`]: Object.assign(Object.assign({ + color: r || void 0, + background: t, + borderColor: n || void 0, + boxShadow: "none" + }, Zm(e, Object.assign({ + background: t + }, o), Object.assign({ + background: t + }, l))), { + "&:disabled": { + cursor: "not-allowed", + color: i || void 0, + borderColor: a || void 0 + } + }) +}), XY = (e) => ({ + [`&:disabled, &${e.componentCls}-disabled`]: Object.assign({}, Mht(e)) +}), kCe = (e) => Object.assign({}, XY(e)), v2 = (e) => ({ + [`&:disabled, &${e.componentCls}-disabled`]: { + cursor: "not-allowed", + color: e.colorTextDisabled + } +}), PCe = (e) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, kCe(e)), { + background: e.defaultBg, + borderColor: e.defaultBorderColor, + color: e.defaultColor, + boxShadow: e.defaultShadow +}), Zm(e.componentCls, { + color: e.colorPrimaryHover, + borderColor: e.colorPrimaryHover +}, { + color: e.colorPrimaryActive, + borderColor: e.colorPrimaryActive +})), VR(e.componentCls, e.ghostBg, e.defaultGhostColor, e.defaultGhostBorderColor, e.colorTextDisabled, e.colorBorder)), { + [`&${e.componentCls}-dangerous`]: Object.assign(Object.assign(Object.assign({ + color: e.colorError, + borderColor: e.colorError + }, Zm(e.componentCls, { + color: e.colorErrorHover, + borderColor: e.colorErrorBorderHover + }, { + color: e.colorErrorActive, + borderColor: e.colorErrorActive + })), VR(e.componentCls, e.ghostBg, e.colorError, e.colorError, e.colorTextDisabled, e.colorBorder)), XY(e)) +}), kht = (e) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, kCe(e)), { + color: e.primaryColor, + background: e.colorPrimary, + boxShadow: e.primaryShadow +}), Zm(e.componentCls, { + color: e.colorTextLightSolid, + background: e.colorPrimaryHover +}, { + color: e.colorTextLightSolid, + background: e.colorPrimaryActive +})), VR(e.componentCls, e.ghostBg, e.colorPrimary, e.colorPrimary, e.colorTextDisabled, e.colorBorder, { + color: e.colorPrimaryHover, + borderColor: e.colorPrimaryHover +}, { + color: e.colorPrimaryActive, + borderColor: e.colorPrimaryActive +})), { + [`&${e.componentCls}-dangerous`]: Object.assign(Object.assign(Object.assign({ + background: e.colorError, + boxShadow: e.dangerShadow, + color: e.dangerColor + }, Zm(e.componentCls, { + background: e.colorErrorHover + }, { + background: e.colorErrorActive + })), VR(e.componentCls, e.ghostBg, e.colorError, e.colorError, e.colorTextDisabled, e.colorBorder, { + color: e.colorErrorHover, + borderColor: e.colorErrorHover + }, { + color: e.colorErrorActive, + borderColor: e.colorErrorActive + })), XY(e)) +}), Pht = (e) => Object.assign(Object.assign({}, PCe(e)), { + borderStyle: "dashed" +}), Nht = (e) => Object.assign(Object.assign(Object.assign({ + color: e.colorLink +}, Zm(e.componentCls, { + color: e.colorLinkHover, + background: e.linkHoverBg +}, { + color: e.colorLinkActive +})), v2(e)), { + [`&${e.componentCls}-dangerous`]: Object.assign(Object.assign({ + color: e.colorError + }, Zm(e.componentCls, { + color: e.colorErrorHover + }, { + color: e.colorErrorActive + })), v2(e)) +}), Lht = (e) => Object.assign(Object.assign(Object.assign({}, Zm(e.componentCls, { + color: e.colorText, + background: e.textHoverBg +}, { + color: e.colorText, + background: e.colorBgTextActive +})), v2(e)), { + [`&${e.componentCls}-dangerous`]: Object.assign(Object.assign({ + color: e.colorError + }, v2(e)), Zm(e.componentCls, { + color: e.colorErrorHover, + background: e.colorErrorBg + }, { + color: e.colorErrorHover, + background: e.colorErrorBg + })) +}), Fht = (e) => { + const { + componentCls: t + } = e; + return { + [`${t}-default`]: PCe(e), + [`${t}-primary`]: kht(e), + [`${t}-dashed`]: Pht(e), + [`${t}-link`]: Nht(e), + [`${t}-text`]: Lht(e), + [`${t}-ghost`]: VR(e.componentCls, e.ghostBg, e.colorBgContainer, e.colorBgContainer, e.colorTextDisabled, e.colorBorder) + }; +}, KY = function(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; + const { + componentCls: r, + controlHeight: n, + fontSize: i, + lineHeight: a, + borderRadius: o, + buttonPaddingHorizontal: l, + iconCls: u, + buttonPaddingVertical: d + } = e, f = `${r}-icon-only`; + return [ + // Size + { + [`${r}${t}`]: { + fontSize: i, + lineHeight: a, + height: n, + padding: `${da(d)} ${da(l)}`, + borderRadius: o, + [`&${f}`]: { + width: n, + paddingInlineStart: 0, + paddingInlineEnd: 0, + [`&${r}-round`]: { + width: "auto" + }, + [u]: { + fontSize: e.buttonIconOnlyFontSize + } + }, + // Loading + [`&${r}-loading`]: { + opacity: e.opacityLoading, + cursor: "default" + }, + [`${r}-loading-icon`]: { + transition: `width ${e.motionDurationSlow} ${e.motionEaseInOut}, opacity ${e.motionDurationSlow} ${e.motionEaseInOut}` + } + } + }, + // Shape - patch prefixCls again to override solid border radius style + { + [`${r}${r}-circle${t}`]: Dht(e) + }, + { + [`${r}${r}-round${t}`]: Oht(e) + } + ]; +}, Bht = (e) => KY(wd(e, { + fontSize: e.contentFontSize, + lineHeight: e.contentLineHeight +})), Uht = (e) => { + const t = wd(e, { + controlHeight: e.controlHeightSM, + fontSize: e.contentFontSizeSM, + lineHeight: e.contentLineHeightSM, + padding: e.paddingXS, + buttonPaddingHorizontal: e.paddingInlineSM, + buttonPaddingVertical: e.paddingBlockSM, + borderRadius: e.borderRadiusSM, + buttonIconOnlyFontSize: e.onlyIconSizeSM + }); + return KY(t, `${e.componentCls}-sm`); +}, jht = (e) => { + const t = wd(e, { + controlHeight: e.controlHeightLG, + fontSize: e.contentFontSizeLG, + lineHeight: e.contentLineHeightLG, + buttonPaddingHorizontal: e.paddingInlineLG, + buttonPaddingVertical: e.paddingBlockLG, + borderRadius: e.borderRadiusLG, + buttonIconOnlyFontSize: e.onlyIconSizeLG + }); + return KY(t, `${e.componentCls}-lg`); +}, $ht = (e) => { + const { + componentCls: t + } = e; + return { + [t]: { + [`&${t}-block`]: { + width: "100%" + } + } + }; +}, Vht = MI("Button", (e) => { + const t = OCe(e); + return [ + // Shared + Rht(t), + // Size + Uht(t), + Bht(t), + jht(t), + // Block + $ht(t), + // Group (type, ghost, danger, loading) + Fht(t), + // Button Group + Aht(t) + ]; +}, MCe, { + unitless: { + fontWeight: !0, + contentLineHeight: !0, + contentLineHeightSM: !0, + contentLineHeightLG: !0 + } +}); +function zht(e, t, r) { + const { + focusElCls: n, + focus: i, + borderElCls: a + } = r, o = a ? "> *" : "", l = ["hover", i ? "focus" : null, "active"].filter(Boolean).map((u) => `&:${u} ${o}`).join(","); + return { + [`&-item:not(${t}-last-item)`]: { + marginInlineEnd: e.calc(e.lineWidth).mul(-1).equal() + }, + "&-item": Object.assign(Object.assign({ + [l]: { + zIndex: 2 + } + }, n ? { + [`&${n}`]: { + zIndex: 2 + } + } : {}), { + [`&[disabled] ${o}`]: { + zIndex: 0 + } + }) + }; +} +function Hht(e, t, r) { + const { + borderElCls: n + } = r, i = n ? `> ${n}` : ""; + return { + [`&-item:not(${t}-first-item):not(${t}-last-item) ${i}`]: { + borderRadius: 0 + }, + [`&-item:not(${t}-last-item)${t}-first-item`]: { + [`& ${i}, &${e}-sm ${i}, &${e}-lg ${i}`]: { + borderStartEndRadius: 0, + borderEndEndRadius: 0 + } + }, + [`&-item:not(${t}-first-item)${t}-last-item`]: { + [`& ${i}, &${e}-sm ${i}, &${e}-lg ${i}`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0 + } + } + }; +} +function NCe(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { + focus: !0 + }; + const { + componentCls: r + } = e, n = `${r}-compact`; + return { + [n]: Object.assign(Object.assign({}, zht(e, n, t)), Hht(r, n, t)) + }; +} +function Wht(e, t) { + return { + // border collapse + [`&-item:not(${t}-last-item)`]: { + marginBottom: e.calc(e.lineWidth).mul(-1).equal() + }, + "&-item": { + "&:hover,&:focus,&:active": { + zIndex: 2 + }, + "&[disabled]": { + zIndex: 0 + } + } + }; +} +function Ght(e, t) { + return { + [`&-item:not(${t}-first-item):not(${t}-last-item)`]: { + borderRadius: 0 + }, + [`&-item${t}-first-item:not(${t}-last-item)`]: { + [`&, &${e}-sm, &${e}-lg`]: { + borderEndEndRadius: 0, + borderEndStartRadius: 0 + } + }, + [`&-item${t}-last-item:not(${t}-first-item)`]: { + [`&, &${e}-sm, &${e}-lg`]: { + borderStartStartRadius: 0, + borderStartEndRadius: 0 + } + } + }; +} +function Yht(e) { + const t = `${e.componentCls}-compact-vertical`; + return { + [t]: Object.assign(Object.assign({}, Wht(e, t)), Ght(e.componentCls, t)) + }; +} +const Xht = (e) => { + const { + componentCls: t, + calc: r + } = e; + return { + [t]: { + // Special styles for Primary Button + [`&-compact-item${t}-primary`]: { + [`&:not([disabled]) + ${t}-compact-item${t}-primary:not([disabled])`]: { + position: "relative", + "&:before": { + position: "absolute", + top: r(e.lineWidth).mul(-1).equal(), + insetInlineStart: r(e.lineWidth).mul(-1).equal(), + display: "inline-block", + width: e.lineWidth, + height: `calc(100% + ${da(e.lineWidth)} * 2)`, + backgroundColor: e.colorPrimaryHover, + content: '""' + } + } + }, + // Special styles for Primary Button + "&-compact-vertical-item": { + [`&${t}-primary`]: { + [`&:not([disabled]) + ${t}-compact-vertical-item${t}-primary:not([disabled])`]: { + position: "relative", + "&:before": { + position: "absolute", + top: r(e.lineWidth).mul(-1).equal(), + insetInlineStart: r(e.lineWidth).mul(-1).equal(), + display: "inline-block", + width: `calc(100% + ${da(e.lineWidth)} * 2)`, + height: e.lineWidth, + backgroundColor: e.colorPrimaryHover, + content: '""' + } + } + } + } + } + }; +}, Kht = oCe(["Button", "compact"], (e) => { + const t = OCe(e); + return [ + // Space Compact + NCe(t), + Yht(t), + Xht(t) + ]; +}, MCe); +var Zht = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function qht(e) { + if (typeof e == "object" && e) { + let t = e == null ? void 0 : e.delay; + return t = !Number.isNaN(t) && typeof t == "number" ? t : 0, { + loading: t <= 0, + delay: t + }; + } + return { + loading: !!e, + delay: 0 + }; +} +const Jht = (e, t) => { + var r, n; + const { + loading: i = !1, + prefixCls: a, + type: o = "default", + danger: l, + shape: u = "default", + size: d, + styles: f, + disabled: g, + className: v, + rootClassName: y, + children: C, + icon: A, + ghost: S = !1, + block: _ = !1, + // React does not recognize the `htmlType` prop on a DOM element. Here we pick it out of `rest`. + htmlType: E = "button", + classNames: I, + style: w = {} + } = e, x = Zht(e, ["loading", "prefixCls", "type", "danger", "shape", "size", "styles", "disabled", "className", "rootClassName", "children", "icon", "ghost", "block", "htmlType", "classNames", "style"]), { + getPrefixCls: b, + autoInsertSpaceInButton: R, + direction: M, + button: O + } = $react.useContext(Sl), P = b("btn", a), [B, H, Y] = Vht(P), X = $react.useContext(UD), ee = g != null ? g : X, ae = $react.useContext(TCe), J = $react.useMemo(() => qht(i), [i]), [ne, fe] = $react.useState(J.loading), [de, Te] = $react.useState(!1), Ve = M0(t, /* @__PURE__ */ $react.createRef()), pe = $react.Children.count(C) === 1 && !A && !a4(o); + $react.useEffect(() => { + let rt = null; + J.delay > 0 ? rt = setTimeout(() => { + rt = null, fe(!0); + }, J.delay) : fe(J.loading); + function Ke() { + rt && (clearTimeout(rt), rt = null); + } + return Ke; + }, [J]), $react.useEffect(() => { + if (!Ve || !Ve.current || R === !1) + return; + const rt = Ve.current.textContent; + pe && PG(rt) ? de || Te(!0) : de && Te(!1); + }, [Ve]); + const Be = (rt) => { + const { + onClick: Ke + } = e; + if (ne || ee) { + rt.preventDefault(); + return; + } + Ke == null || Ke(rt); + }, Ue = R !== !1, { + compactSize: Qe, + compactItemClassnames: Re + } = GY(P, M), Ne = { + large: "lg", + small: "sm", + middle: void 0 + }, Me = HD((rt) => { + var Ke, ze; + return (ze = (Ke = d != null ? d : Qe) !== null && Ke !== void 0 ? Ke : ae) !== null && ze !== void 0 ? ze : rt; + }), we = Me && Ne[Me] || "", He = ne ? "loading" : A, Ie = BD(x, ["navigate"]), Ae = Cn(P, H, Y, { + [`${P}-${u}`]: u !== "default" && u, + [`${P}-${o}`]: o, + [`${P}-${we}`]: we, + [`${P}-icon-only`]: !C && C !== 0 && !!He, + [`${P}-background-ghost`]: S && !a4(o), + [`${P}-loading`]: ne, + [`${P}-two-chinese-chars`]: de && Ue && !ne, + [`${P}-block`]: _, + [`${P}-dangerous`]: !!l, + [`${P}-rtl`]: M === "rtl" + }, Re, v, y, O == null ? void 0 : O.className), Fe = Object.assign(Object.assign({}, O == null ? void 0 : O.style), w), $e = Cn(I == null ? void 0 : I.icon, (r = O == null ? void 0 : O.classNames) === null || r === void 0 ? void 0 : r.icon), lt = Object.assign(Object.assign({}, (f == null ? void 0 : f.icon) || {}), ((n = O == null ? void 0 : O.styles) === null || n === void 0 ? void 0 : n.icon) || {}), it = A && !ne ? /* @__PURE__ */ dt(wCe, { + prefixCls: P, + className: $e, + style: lt, + children: A + }) : /* @__PURE__ */ dt(Iht, { + existIcon: !!A, + prefixCls: P, + loading: !!ne + }), nt = C || C === 0 ? cht(C, pe && Ue) : null; + if (Ie.href !== void 0) + return B( + /* @__PURE__ */ gn("a", rn(br({}, Object.assign({}, Ie, { + className: Cn(Ae, { + [`${P}-disabled`]: ee + }), + href: ee ? void 0 : Ie.href, + style: Fe, + onClick: Be, + ref: Ve, + tabIndex: ee ? -1 : 0 + })), { + children: [it, nt] + })) + ); + let ut = /* @__PURE__ */ gn("button", rn(br({}, Object.assign({}, x, { + type: E, + className: Ae, + style: Fe, + onClick: Be, + disabled: ee, + ref: Ve + })), { + children: [it, nt, !!Re && /* @__PURE__ */ dt(Kht, { + prefixCls: P + }, "compact")] + })); + return a4(o) || (ut = /* @__PURE__ */ dt(nht, { + component: "Button", + disabled: !!ne, + children: ut + })), B(ut); +}, ZY = /* @__PURE__ */ $react.forwardRef(Jht); +ZY.Group = sht; +ZY.__ANT_BUTTON = !0; +const IB = ZY, Qht = { + label: yt("imageEditor.save"), + value: "save", + description: yt("imageEditor.saveDesc") +}, edt = $styled_components.div` + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + .tui-image-editor-container.top .tui-image-editor-controls-logo { + display: none; + } + .tui-image-editor-container .tui-image-editor-header-logo, + .tui-image-editor-container .tui-image-editor-controls-logo { + display: none; + } + .tui-image-editor-container .tui-image-editor-header-buttons button, + .tui-image-editor-container .tui-image-editor-header-buttons div, + .tui-image-editor-container .tui-image-editor-controls-buttons button, + .tui-image-editor-container .tui-image-editor-controls-buttons div { + display: none; + } + .tie-btn-hand { + display: none !important; + } + .tui-image-editor-container .tui-image-editor-menu, + .tui-image-editor-container .tui-image-editor-help-menu { + background-color: #f3f4f6 !important; + } +`, tdt = $styled_components(IB)` + position: absolute; + right: 8px; + bottom: 4px; + z-index: 100; +`, rdt = { + // image + "common.bi.image": "", + "common.bisize.width": "0px", + "common.bisize.height": "0px", + "common.backgroundImage": "none", + "common.backgroundColor": "#f3f4f6", + "common.border": "1px solid #444", + // header + "header.backgroundImage": "none", + "header.backgroundColor": "#f3f4f6", + "header.border": "0px", + "header.display": "none", + // icons default + "menu.normalIcon.color": "#8a8a8a", + "menu.activeIcon.color": "#555555", + "menu.disabledIcon.color": "#434343", + "menu.hoverIcon.color": "#e9e9e9", + "submenu.normalIcon.color": "#8a8a8a", + "submenu.activeIcon.color": "#e9e9e9", + "menu.iconSize.width": "24px", + "menu.iconSize.height": "24px", + "submenu.iconSize.width": "32px", + "submenu.iconSize.height": "32px", + // submenu primary color + "submenu.backgroundColor": "#1e1e1e", + "submenu.partition.color": "#858585", + // submenu labels + "submenu.normalLabel.color": "#858585", + "submenu.normalLabel.fontWeight": "lighter", + "submenu.activeLabel.color": "#fff", + "submenu.activeLabel.fontWeight": "lighter", + // checkbox style + "checkbox.border": "1px solid #ccc", + "checkbox.backgroundColor": "#fff", + // rango style + "range.pointer.color": "#fff", + "range.bar.color": "#666", + "range.subbar.color": "#d1d1d1", + "range.disabledPointer.color": "#414141", + "range.disabledBar.color": "#282828", + "range.disabledSubbar.color": "#414141", + "range.value.color": "#fff", + "range.value.fontWeight": "lighter", + "range.value.fontSize": "11px", + "range.value.border": "1px solid #353535", + "range.value.backgroundColor": "#151515", + "range.title.color": "#fff", + "range.title.fontWeight": "lighter", + // colorpicker style + "colorpicker.button.border": "1px solid #1e1e1e", + "colorpicker.title.color": "#fff" +}; +var LCe = { exports: {} }, l4 = { exports: {} }; +/*! + * TOAST UI Color Picker + * @version 2.2.8 + * @author NHN Cloud FE Development Team + * @license MIT + */ +var Kue; +function ndt() { + return Kue || (Kue = 1, function(e, t) { + (function(n, i) { + e.exports = i(); + })(window, function() { + return ( + /******/ + function(r) { + var n = {}; + function i(a) { + if (n[a]) + return n[a].exports; + var o = n[a] = { + /******/ + i: a, + /******/ + l: !1, + /******/ + exports: {} + /******/ + }; + return r[a].call(o.exports, o, o.exports, i), o.l = !0, o.exports; + } + return i.m = r, i.c = n, i.d = function(a, o, l) { + i.o(a, o) || Object.defineProperty(a, o, { enumerable: !0, get: l }); + }, i.r = function(a) { + typeof Symbol != "undefined" && Symbol.toStringTag && Object.defineProperty(a, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(a, "__esModule", { value: !0 }); + }, i.t = function(a, o) { + if (o & 1 && (a = i(a)), o & 8 || o & 4 && typeof a == "object" && a && a.__esModule) + return a; + var l = /* @__PURE__ */ Object.create(null); + if (i.r(l), Object.defineProperty(l, "default", { enumerable: !0, value: a }), o & 2 && typeof a != "string") + for (var u in a) + i.d(l, u, function(d) { + return a[d]; + }.bind(null, u)); + return l; + }, i.n = function(a) { + var o = a && a.__esModule ? ( + /******/ + function() { + return a.default; + } + ) : ( + /******/ + function() { + return a; + } + ); + return i.d(o, "a", o), o; + }, i.o = function(a, o) { + return Object.prototype.hasOwnProperty.call(a, o); + }, i.p = "dist", i(i.s = 33); + }([ + /* 0 */ + /***/ + function(r, n, i) { + function a(o, l) { + var u = Object.prototype.hasOwnProperty, d, f, g, v; + for (g = 1, v = arguments.length; g < v; g += 1) { + d = arguments[g]; + for (f in d) + u.call(d, f) && (o[f] = d[f]); + } + return o; + } + r.exports = a; + }, + /* 1 */ + /***/ + function(r, n, i) { + function a(o) { + return o instanceof Array; + } + r.exports = a; + }, + /* 2 */ + /***/ + function(r, n, i) { + var a = i(1), o = i(6), l = i(7); + function u(d, f, g) { + a(d) ? o(d, f, g) : l(d, f, g); + } + r.exports = u; + }, + /* 3 */ + /***/ + function(r, n, i) { + function a(o) { + return o === void 0; + } + r.exports = a; + }, + /* 4 */ + /***/ + function(r, n, i) { + var a = i(22), o = i(2), l = i(6), u = i(7), d = i(37), f = 0, g = { + /** + * Get the number of properties in the object. + * @param {Object} obj - object + * @returns {number} + */ + getLength: function(v) { + var y = 0; + return u(v, function() { + y += 1; + }), y; + }, + /** + * Constructs a new array by executing the provided callback function. + * @param {Object|Array} obj - object or array to be traversed + * @param {function} iteratee - callback function + * @param {Object} context - context of callback function + * @returns {Array} + */ + map: function(v, y, C) { + var A = []; + return o(v, function() { + A.push(y.apply(C || null, arguments)); + }), A; + }, + /** + * Construct a new array with elements that pass the test by the provided callback function. + * @param {Array|NodeList|Arguments} arr - array to be traversed + * @param {function} iteratee - callback function + * @param {Object} context - context of callback function + * @returns {Array} + */ + filter: function(v, y, C) { + var A = []; + return l(v, function(S) { + y.apply(C || null, arguments) && A.push(S); + }), A; + }, + /** + * Create an unique id for a color-picker instance. + * @returns {number} + */ + generateId: function() { + return f += 1, f; + }, + /** + * True when browser is below IE8. + */ + isOldBrowser: function() { + return a.msie && a.version < 9; + }(), + /** + * send host name + * @ignore + */ + sendHostName: function() { + d("color-picker", "UA-129987462-1"); + } + }; + r.exports = g; + }, + /* 5 */ + /***/ + function(r, n, i) { + var a = i(1); + function o(l, u, d) { + var f, g; + if (d = d || 0, !a(u)) + return -1; + if (Array.prototype.indexOf) + return Array.prototype.indexOf.call(u, l, d); + for (g = u.length, f = d; d >= 0 && f < g; f += 1) + if (u[f] === l) + return f; + return -1; + } + r.exports = o; + }, + /* 6 */ + /***/ + function(r, n, i) { + function a(o, l, u) { + var d = 0, f = o.length; + for (u = u || null; d < f && l.call(u, o[d], d, o) !== !1; d += 1) + ; + } + r.exports = a; + }, + /* 7 */ + /***/ + function(r, n, i) { + function a(o, l, u) { + var d; + u = u || null; + for (d in o) + if (o.hasOwnProperty(d) && l.call(u, o[d], d, o) === !1) + break; + } + r.exports = a; + }, + /* 8 */ + /***/ + function(r, n, i) { + var a = i(39), o = i(13), l = i(41), u = i(3), d = i(9), f = i(19), g = i(4); + function v(y, C) { + var A = g.generateId(); + u(C) && (C = d.appendHTMLElement("div")), a(C, "tui-view-" + A), this.id = A, this.container = C, this.childs = new f(function(S) { + return S.id; + }), this.parent = null; + } + v.prototype.addChild = function(y, C) { + C && C.call(y, this), y.parent = this, this.childs.add(y); + }, v.prototype.removeChild = function(y, C) { + var A = l(y) ? this.childs.items[y] : y; + C && C.call(A, this), this.childs.remove(A.id); + }, v.prototype.render = function() { + this.childs.each(function(y) { + y.render(); + }); + }, v.prototype.recursive = function(y, C) { + o(y) && (C || y(this), this.childs.each(function(A) { + A.recursive(y); + })); + }, v.prototype.resize = function() { + for (var y = Array.prototype.slice.call(arguments), C = this.parent; C; ) + o(C._onResize) && C._onResize.apply(C, y), C = C.parent; + }, v.prototype._beforeDestroy = function() { + }, v.prototype._destroy = function() { + this._beforeDestroy(), this.container.innerHTML = "", this.id = this.parent = this.childs = this.container = null; + }, v.prototype.destroy = function(y) { + this.childs && (this.childs.each(function(C) { + C.destroy(!0), C._destroy(); + }), this.childs.clear()), !y && this._destroy(); + }, v.prototype.getViewBound = function() { + var y = this.container.getBoundingClientRect(); + return { + x: y.left, + y: y.top, + width: y.right - y.left, + height: y.bottom - y.top + }; + }, r.exports = v; + }, + /* 9 */ + /***/ + function(r, n, i) { + var a = { + /** + * Create DOM element and return it. + * @param {string} tagName Tag name to append. + * @param {HTMLElement} [container] HTML element will be parent to created element. + * if not supplied, will use **document.body** + * @param {string} [className] Design class names to appling created element. + * @returns {HTMLElement} HTML element created. + */ + appendHTMLElement: function(o, l, u) { + var d = document.createElement(o); + return d.className = u || "", l ? l.appendChild(d) : document.body.appendChild(d), d; + } + }; + r.exports = a; + }, + /* 10 */ + /***/ + function(r, n, i) { + var a = i(0), o = i(20), l = i(11), u = i(21), d = i(1), f = i(13), g = i(2), v = /\s+/g; + function y() { + this.events = null, this.contexts = null; + } + y.mixin = function(C) { + a(C.prototype, y.prototype); + }, y.prototype._getHandlerItem = function(C, A) { + var S = { handler: C }; + return A && (S.context = A), S; + }, y.prototype._safeEvent = function(C) { + var A = this.events, S; + return A || (A = this.events = {}), C && (S = A[C], S || (S = [], A[C] = S), A = S), A; + }, y.prototype._safeContext = function() { + var C = this.contexts; + return C || (C = this.contexts = []), C; + }, y.prototype._indexOfContext = function(C) { + for (var A = this._safeContext(), S = 0; A[S]; ) { + if (C === A[S][0]) + return S; + S += 1; + } + return -1; + }, y.prototype._memorizeContext = function(C) { + var A, S; + o(C) && (A = this._safeContext(), S = this._indexOfContext(C), S > -1 ? A[S][1] += 1 : A.push([C, 1])); + }, y.prototype._forgetContext = function(C) { + var A, S; + o(C) && (A = this._safeContext(), S = this._indexOfContext(C), S > -1 && (A[S][1] -= 1, A[S][1] <= 0 && A.splice(S, 1))); + }, y.prototype._bindEvent = function(C, A, S) { + var _ = this._safeEvent(C); + this._memorizeContext(S), _.push(this._getHandlerItem(A, S)); + }, y.prototype.on = function(C, A, S) { + var _ = this; + l(C) ? (C = C.split(v), g(C, function(E) { + _._bindEvent(E, A, S); + })) : u(C) && (S = A, g(C, function(E, I) { + _.on(I, E, S); + })); + }, y.prototype.once = function(C, A, S) { + var _ = this; + if (u(C)) { + S = A, g(C, function(I, w) { + _.once(w, I, S); + }); + return; + } + function E() { + A.apply(S, arguments), _.off(C, E, S); + } + this.on(C, E, S); + }, y.prototype._spliceMatches = function(C, A) { + var S = 0, _; + if (d(C)) + for (_ = C.length; S < _; S += 1) + A(C[S]) === !0 && (C.splice(S, 1), _ -= 1, S -= 1); + }, y.prototype._matchHandler = function(C) { + var A = this; + return function(S) { + var _ = C === S.handler; + return _ && A._forgetContext(S.context), _; + }; + }, y.prototype._matchContext = function(C) { + var A = this; + return function(S) { + var _ = C === S.context; + return _ && A._forgetContext(S.context), _; + }; + }, y.prototype._matchHandlerAndContext = function(C, A) { + var S = this; + return function(_) { + var E = C === _.handler, I = A === _.context, w = E && I; + return w && S._forgetContext(_.context), w; + }; + }, y.prototype._offByEventName = function(C, A) { + var S = this, _ = f(A), E = S._matchHandler(A); + C = C.split(v), g(C, function(I) { + var w = S._safeEvent(I); + _ ? S._spliceMatches(w, E) : (g(w, function(x) { + S._forgetContext(x.context); + }), S.events[I] = []); + }); + }, y.prototype._offByHandler = function(C) { + var A = this, S = this._matchHandler(C); + g(this._safeEvent(), function(_) { + A._spliceMatches(_, S); + }); + }, y.prototype._offByObject = function(C, A) { + var S = this, _; + this._indexOfContext(C) < 0 ? g(C, function(E, I) { + S.off(I, E); + }) : l(A) ? (_ = this._matchContext(C), S._spliceMatches(this._safeEvent(A), _)) : f(A) ? (_ = this._matchHandlerAndContext(A, C), g(this._safeEvent(), function(E) { + S._spliceMatches(E, _); + })) : (_ = this._matchContext(C), g(this._safeEvent(), function(E) { + S._spliceMatches(E, _); + })); + }, y.prototype.off = function(C, A) { + l(C) ? this._offByEventName(C, A) : arguments.length ? f(C) ? this._offByHandler(C) : u(C) && this._offByObject(C, A) : (this.events = {}, this.contexts = []); + }, y.prototype.fire = function(C) { + this.invoke.apply(this, arguments); + }, y.prototype.invoke = function(C) { + var A, S, _, E; + if (!this.hasListener(C)) + return !0; + for (A = this._safeEvent(C), S = Array.prototype.slice.call(arguments, 1), _ = 0; A[_]; ) { + if (E = A[_], E.handler.apply(E.context, S) === !1) + return !1; + _ += 1; + } + return !0; + }, y.prototype.hasListener = function(C) { + return this.getListenerLength(C) > 0; + }, y.prototype.getListenerLength = function(C) { + var A = this._safeEvent(C); + return A.length; + }, r.exports = y; + }, + /* 11 */ + /***/ + function(r, n, i) { + function a(o) { + return typeof o == "string" || o instanceof String; + } + r.exports = a; + }, + /* 12 */ + /***/ + function(r, n, i) { + var a = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i, o = { + /** + * pad left zero characters. + * @param {number} number number value to pad zero. + * @param {number} length pad length to want. + * @returns {string} padded string. + */ + leadingZero: function(l, u) { + var d = "", f = 0; + if ((l + "").length > u) + return l + ""; + for (; f < u - 1; f += 1) + d += "0"; + return (d + l).slice(u * -1); + }, + /** + * Check validate of hex string value is RGB + * @param {string} str - rgb hex string + * @returns {boolean} return true when supplied str is valid RGB hex string + */ + isValidRGB: function(l) { + return a.test(l); + }, + // @license RGB <-> HSV conversion utilities based off of http://www.cs.rit.edu/~ncs/color/t_convert.html + /** + * Convert color hex string to rgb number array + * @param {string} hexStr - hex string + * @returns {number[]} rgb numbers + */ + hexToRGB: function(l) { + var u, d, f; + return o.isValidRGB(l) ? (l = l.substring(1), u = parseInt(l.substr(0, 2), 16), d = parseInt(l.substr(2, 2), 16), f = parseInt(l.substr(4, 2), 16), [u, d, f]) : !1; + }, + /** + * Convert rgb number to hex string + * @param {number} r - red + * @param {number} g - green + * @param {number} b - blue + * @returns {string|boolean} return false when supplied rgb number is not valid. otherwise, converted hex string + */ + rgbToHEX: function(l, u, d) { + var f = "#" + o.leadingZero(l.toString(16), 2) + o.leadingZero(u.toString(16), 2) + o.leadingZero(d.toString(16), 2); + return o.isValidRGB(f) ? f : !1; + }, + /** + * Convert rgb number to HSV value + * @param {number} r - red + * @param {number} g - green + * @param {number} b - blue + * @returns {number[]} hsv value + */ + rgbToHSV: function(l, u, d) { + var f, g, v, y, C, A; + if (l /= 255, u /= 255, d /= 255, f = Math.max(l, u, d), g = Math.min(l, u, d), C = f, A = f - g, y = f === 0 ? 0 : A / f, f === g) + v = 0; + else { + switch (f) { + case l: + v = (u - d) / A + (u < d ? 6 : 0); + break; + case u: + v = (d - l) / A + 2; + break; + case d: + v = (l - u) / A + 4; + break; + } + v /= 6; + } + return [Math.round(v * 360), Math.round(y * 100), Math.round(C * 100)]; + }, + /** + * Convert HSV number to RGB + * @param {number} h - hue + * @param {number} s - saturation + * @param {number} v - value + * @returns {number[]} rgb value + */ + hsvToRGB: function(l, u, d) { + var f, g, v, y, C, A, S, _; + if (l = Math.max(0, Math.min(360, l)), u = Math.max(0, Math.min(100, u)), d = Math.max(0, Math.min(100, d)), u /= 100, d /= 100, u === 0) + return f = g = v = d, [Math.round(f * 255), Math.round(g * 255), Math.round(v * 255)]; + switch (l /= 60, y = Math.floor(l), C = l - y, A = d * (1 - u), S = d * (1 - u * C), _ = d * (1 - u * (1 - C)), y) { + case 0: + f = d, g = _, v = A; + break; + case 1: + f = S, g = d, v = A; + break; + case 2: + f = A, g = d, v = _; + break; + case 3: + f = A, g = S, v = d; + break; + case 4: + f = _, g = A, v = d; + break; + default: + f = d, g = A, v = S; + break; + } + return [Math.round(f * 255), Math.round(g * 255), Math.round(v * 255)]; + } + }; + r.exports = o; + }, + /* 13 */ + /***/ + function(r, n, i) { + function a(o) { + return o instanceof Function; + } + r.exports = a; + }, + /* 14 */ + /***/ + function(r, n, i) { + var a = i(11), o = i(2), l = i(26); + function u(g, v, y, C) { + if (a(v)) { + o(v.split(/\s+/g), function(A) { + d(g, A, y, C); + }); + return; + } + o(v, function(A, S) { + d(g, S, A, y); + }); + } + function d(g, v, y, C) { + function A(S) { + y.call(C || g, S || window.event); + } + "addEventListener" in g ? g.addEventListener(v, A) : "attachEvent" in g && g.attachEvent("on" + v, A), f(g, v, y, A); + } + function f(g, v, y, C) { + var A = l(g, v), S = !1; + o(A, function(_) { + return _.handler === y ? (S = !0, !1) : !0; + }), S || A.push({ + handler: y, + wrappedHandler: C + }); + } + r.exports = u; + }, + /* 15 */ + /***/ + function(r, n, i) { + function a(o) { + if (o.preventDefault) { + o.preventDefault(); + return; + } + o.returnValue = !1; + } + r.exports = a; + }, + /* 16 */ + /***/ + function(r, n, i) { + function a(o) { + return o.replace(/([A-Z])/g, function(l) { + return "-" + l.toLowerCase(); + }); + } + r.exports = a; + }, + /* 17 */ + /***/ + function(r, n, i) { + var a = i(11), o = i(2), l = i(26); + function u(g, v, y) { + if (a(v)) { + o(v.split(/\s+/g), function(C) { + d(g, C, y); + }); + return; + } + o(v, function(C, A) { + d(g, A, C); + }); + } + function d(g, v, y) { + var C = l(g, v), A; + y ? (o(C, function(S, _) { + return y === S.handler ? (f(g, v, S.wrappedHandler), A = _, !1) : !0; + }), C.splice(A, 1)) : (o(C, function(S) { + f(g, v, S.wrappedHandler); + }), C.splice(0, C.length)); + } + function f(g, v, y) { + "removeEventListener" in g ? g.removeEventListener(v, y) : "detachEvent" in g && g.detachEvent("on" + v, y); + } + r.exports = u; + }, + /* 18 */ + /***/ + function(r, n, i) { + var a = i(50); + function o(l, u) { + var d = a(u.prototype); + d.constructor = l, l.prototype = d; + } + r.exports = o; + }, + /* 19 */ + /***/ + function(r, n, i) { + var a = i(6), o = i(7), l = i(0), u = i(1), d = i(20), f = i(13), g = i(21), v = i(4), y = Array.prototype.slice; + function C(A) { + this.items = {}, this.length = 0, f(A) && (this.getItemID = A); + } + C.and = function(A) { + var S; + return A = y.call(arguments), S = A.length, function(_) { + for (var E = 0; E < S; E += 1) + if (!A[E].call(null, _)) + return !1; + return !0; + }; + }, C.or = function(A) { + var S; + return A = y.call(arguments), S = A.length, function(_) { + for (var E = 1, I = A[0].call(null, _); E < S; E += 1) + I = I || A[E].call(null, _); + return I; + }; + }, C.merge = function(A) { + var S = {}, _ = new C(A.getItemID); + return a(arguments, function(E) { + l(S, E.items); + }), _.items = S, _.length = v.getLength(_.items), _; + }, C.prototype.getItemID = function(A) { + return A._id + ""; + }, C.prototype.add = function(A) { + var S, _; + if (arguments.length > 1) { + a(y.call(arguments), function(E) { + this.add(E); + }, this); + return; + } + S = this.getItemID(A), _ = this.items, _[S] || (this.length += 1), _[S] = A; + }, C.prototype.remove = function(A) { + var S = [], _, E; + return this.length ? arguments.length > 1 ? (S = v.map(y.call(arguments), function(I) { + return this.remove(I); + }, this), S) : (_ = this.items, g(A) && (A = this.getItemID(A)), _[A] ? (this.length -= 1, E = _[A], delete _[A], E) : S) : S; + }, C.prototype.clear = function() { + this.items = {}, this.length = 0; + }, C.prototype.has = function(A) { + var S, _; + return this.length ? (S = f(A), _ = !1, S ? this.each(function(E) { + return A(E) === !0 ? (_ = !0, !1) : !0; + }) : (A = g(A) ? this.getItemID(A) : A, _ = d(this.items[A])), _) : !1; + }, C.prototype.doWhenHas = function(A, S, _) { + var E = this.items[A]; + d(E) && S.call(_ || this, E); + }, C.prototype.find = function(A) { + var S = new C(); + return this.hasOwnProperty("getItemID") && (S.getItemID = this.getItemID), this.each(function(_) { + A(_) === !0 && S.add(_); + }), S; + }, C.prototype.groupBy = function(A, S) { + var _ = {}, E = f(A), I = this.getItemID, w, x; + if (u(A)) { + if (a(A, function(b) { + _[b + ""] = new C(I); + }), !S) + return _; + A = S, E = !0; + } + return this.each(function(b) { + E ? x = A(b) : (x = b[A], f(x) && (x = x.apply(b))), w = _[x], w || (w = _[x] = new C(I)), w.add(b); + }), _; + }, C.prototype.single = function() { + var A; + return this.each(function(S) { + return A = S, !1; + }, this), A; + }, C.prototype.sort = function(A) { + var S = []; + return this.each(function(_) { + S.push(_); + }), f(A) && (S = S.sort(A)), S; + }, C.prototype.each = function(A, S) { + o(this.items, A, S || this); + }, C.prototype.toArray = function() { + return this.length ? v.map(this.items, function(A) { + return A; + }) : []; + }, r.exports = C; + }, + /* 20 */ + /***/ + function(r, n, i) { + var a = i(3), o = i(36); + function l(u) { + return !a(u) && !o(u); + } + r.exports = l; + }, + /* 21 */ + /***/ + function(r, n, i) { + function a(o) { + return o === Object(o); + } + r.exports = a; + }, + /* 22 */ + /***/ + function(r, n, i) { + var a = { + chrome: !1, + firefox: !1, + safari: !1, + msie: !1, + edge: !1, + others: !1, + version: 0 + }; + typeof window != "undefined" && window.navigator && o(); + function o() { + var l = window.navigator, u = l.appName.replace(/\s/g, "_"), d = l.userAgent, f = /MSIE\s([0-9]+[.0-9]*)/, g = /Trident.*rv:11\./, v = /Edge\/(\d+)\./, y = { + firefox: /Firefox\/(\d+)\./, + chrome: /Chrome\/(\d+)\./, + safari: /Version\/([\d.]+).*Safari\/(\d+)/ + }, C, A, S = { + Microsoft_Internet_Explorer: function() { + var E = d.match(f); + E ? (a.msie = !0, a.version = parseFloat(E[1])) : a.others = !0; + }, + Netscape: function() { + var E = !1; + if (g.exec(d)) + a.msie = !0, a.version = 11, E = !0; + else if (v.exec(d)) + a.edge = !0, a.version = d.match(v)[1], E = !0; + else + for (C in y) + if (y.hasOwnProperty(C) && (A = d.match(y[C]), A && A.length > 1)) { + a[C] = E = !0, a.version = parseFloat(A[1] || 0); + break; + } + E || (a.others = !0); + } + }, _ = S[u]; + _ && S[u](); + } + r.exports = a; + }, + /* 23 */ + /***/ + function(r, n, i) { + var a = i(3); + function o(l) { + return !l || !l.className ? "" : a(l.className.baseVal) ? l.className : l.className.baseVal; + } + r.exports = o; + }, + /* 24 */ + /***/ + function(r, n, i) { + (function(a) { + var o = i(10), l = i(42), u = i(44), d = i(47), f = i(28), g = i(17), v = i(14), y = i(15), C = i(0); + function A(S, _) { + v(_, "mousedown", this._onMouseDown, this), this.options = C({ + distance: 10 + }, S), this.container = _, this._isMoved = !1, this._distance = 0, this._dragStartFired = !1, this._dragStartEventData = null; + } + A.prototype.destroy = function() { + g(this.container, "mousedown", this._onMouseDown), this.options = this.container = this._isMoved = this._distance = this._dragStartFired = this._dragStartEventData = null; + }, A.prototype._toggleDragEvent = function(S) { + var _ = this.container; + S ? (l(_), v(window, "dragstart", y), v(a.document, { + mousemove: this._onMouseMove, + mouseup: this._onMouseUp + }, this)) : (u(_), g(window, "dragstart", y), g(a.document, { + mousemove: this._onMouseMove, + mouseup: this._onMouseUp + })); + }, A.prototype._getEventData = function(S) { + return { + target: f(S), + originEvent: S + }; + }, A.prototype._onMouseDown = function(S) { + d(S) === 0 && (this._distance = 0, this._dragStartFired = !1, this._dragStartEventData = this._getEventData(S), this._toggleDragEvent(!0)); + }, A.prototype._onMouseMove = function(S) { + var _ = this.options.distance; + if (y(S), this._isMoved = !0, this._distance < _) { + this._distance += 1; + return; + } + if (!this._dragStartFired && (this._dragStartFired = !0, !this.invoke("dragStart", this._dragStartEventData))) { + this._toggleDragEvent(!1); + return; + } + this.fire("drag", this._getEventData(S)); + }, A.prototype._onMouseUp = function(S) { + if (this._toggleDragEvent(!1), this._isMoved) { + this._isMoved = !1, this.fire("dragEnd", this._getEventData(S)); + return; + } + this.fire("click", this._getEventData(S)); + }, o.mixin(A), r.exports = A; + }).call(this, i(25)); + }, + /* 25 */ + /***/ + function(r, n) { + var i; + i = function() { + return this; + }(); + try { + i = i || new Function("return this")(); + } catch (a) { + typeof window == "object" && (i = window); + } + r.exports = i; + }, + /* 26 */ + /***/ + function(r, n, i) { + var a = "_feEventKey"; + function o(l, u) { + var d = l[a], f; + return d || (d = l[a] = {}), f = d[u], f || (f = d[u] = []), f; + } + r.exports = o; + }, + /* 27 */ + /***/ + function(r, n, i) { + function a(o) { + var l = document.documentElement.style, u, d; + for (u = 0, d = o.length; u < d; u += 1) + if (o[u] in l) + return o[u]; + return !1; + } + r.exports = a; + }, + /* 28 */ + /***/ + function(r, n, i) { + function a(o) { + return o.target || o.srcElement; + } + r.exports = a; + }, + /* 29 */ + /***/ + function(r, n, i) { + var a = i(10), o = i(28), l = i(17), u = i(14), d = i(30), f = i(0), g = i(18), v = i(9), y = i(12), C = i(8), A = i(51); + function S(_, E) { + this.options = f({ + cssPrefix: "tui-colorpicker-", + preset: ["#181818", "#282828", "#383838", "#585858", "#B8B8B8", "#D8D8D8", "#E8E8E8", "#F8F8F8", "#AB4642", "#DC9656", "#F7CA88", "#A1B56C", "#86C1B9", "#7CAFC2", "#BA8BAF", "#A16946"], + detailTxt: "Detail" + }, _), E = v.appendHTMLElement("div", E, this.options.cssPrefix + "palette-container"), C.call(this, _, E); + } + g(S, C), S.prototype._onClick = function(_) { + var E = this.options, I = o(_), w = {}; + if (d(I, E.cssPrefix + "palette-button")) { + w.color = I.value, this.fire("_selectColor", w); + return; + } + d(I, E.cssPrefix + "palette-toggle-slider") && this.fire("_toggleSlider"); + }, S.prototype._onChange = function(_) { + var E = this.options, I = o(_), w = {}; + d(I, E.cssPrefix + "palette-hex") && (w.color = I.value, this.fire("_selectColor", w)); + }, S.prototype._beforeDestroy = function() { + this._toggleEvent(!1); + }, S.prototype._toggleEvent = function(_) { + var E = this.options, I = this.container, w = _ ? u : l, x; + w(I, "click", this._onClick, this), x = I.querySelector("." + E.cssPrefix + "palette-hex", I), x && w(x, "change", this._onChange, this); + }, S.prototype.render = function(_) { + var E = this.options, I = ""; + this._toggleEvent(!1), I = A({ + cssPrefix: E.cssPrefix, + preset: E.preset, + detailTxt: E.detailTxt, + color: _, + isValidRGB: y.isValidRGB, + getItemClass: function(w) { + return w ? "" : " " + E.cssPrefix + "color-transparent"; + }, + isSelected: function(w) { + return w === _ ? " " + E.cssPrefix + "selected" : ""; + } + }), this.container.innerHTML = I, this._toggleEvent(!0); + }, a.mixin(S), r.exports = S; + }, + /* 30 */ + /***/ + function(r, n, i) { + var a = i(5), o = i(23); + function l(u, d) { + var f; + return u.classList ? u.classList.contains(d) : (f = o(u).split(/\s+/), a(d, f) > -1); + } + r.exports = l; + }, + /* 31 */ + /***/ + function(r, n, i) { + var a = i(10), o = i(53), l = i(54), u = i(30), d = i(0), f = i(18), g = i(9), v = i(32), y = i(12), C = i(8), A = i(24), S = i(57), _ = -7, E = 112, I = -3, w = 115, x = 359.99; + function b(R, M) { + M = g.appendHTMLElement("div", M, R.cssPrefix + "slider-container"), M.style.display = "none", C.call(this, R, M), this.options = d({ + color: "#f8f8f8", + cssPrefix: "tui-colorpicker-" + }, R), this._dragDataCache = {}, this.sliderHandleElement = null, this.huebarHandleElement = null, this.baseColorElement = null, this.drag = new A({ + distance: 0 + }, M), this.colorSliderPosLimitRange = [_, E], this.huebarPosLimitRange = [I, w], this.drag.on({ + dragStart: this._onDragStart, + drag: this._onDrag, + dragEnd: this._onDragEnd, + click: this._onClick + }, this); + } + f(b, C), b.prototype._beforeDestroy = function() { + this.drag.off(), this.drag = this.options = this._dragDataCache = this.sliderHandleElement = this.huebarHandleElement = this.baseColorElement = null; + }, b.prototype.toggle = function(R) { + this.container.style.display = R ? "block" : "none"; + }, b.prototype.isVisible = function() { + return this.container.style.display === "block"; + }, b.prototype.render = function(R) { + var M = this.container, O = this.options, P = S.layout, B, H; + y.isValidRGB(R) && (P = P.replace(/{{slider}}/, S.slider), P = P.replace(/{{huebar}}/, S.huebar), P = P.replace(/{{cssPrefix}}/g, O.cssPrefix), P = P.replace(/{{id}}/g, O.id), this.container.innerHTML = P, this.sliderSvgElement = M.querySelector("." + O.cssPrefix + "svg-slider"), this.huebarSvgElement = M.querySelector("." + O.cssPrefix + "svg-huebar"), this.sliderHandleElement = M.querySelector("." + O.cssPrefix + "slider-handle"), this.huebarHandleElement = M.querySelector("." + O.cssPrefix + "huebar-handle"), this.baseColorElement = M.querySelector("." + O.cssPrefix + "slider-basecolor"), B = y.hexToRGB(R), H = y.rgbToHSV.apply(null, B), this.moveHue(H[0], !0), this.moveSaturationAndValue(H[1], H[2], !0)); + }, b.prototype._setColorSliderPosMax = function() { + var R = this.sliderSvgElement.getClientRects()[0]; + R && (this.colorSliderPosLimitRange[1] = R.height - 10); + }, b.prototype._moveColorSliderHandle = function(R, M, O) { + var P = this.sliderHandleElement, B; + M = Math.max(this.colorSliderPosLimitRange[0], M), M = Math.min(this.colorSliderPosLimitRange[1], M), R = Math.max(this.colorSliderPosLimitRange[0], R), R = Math.min(this.colorSliderPosLimitRange[1], R), v.setTranslateXY(P, R, M), B = M > 50 ? "white" : "black", v.setStrokeColor(P, B), O || this.fire("_selectColor", { + color: y.rgbToHEX.apply(null, this.getRGB()) + }); + }, b.prototype.moveSaturationAndValue = function(R, M, O) { + var P, B, H, Y; + R = R || 0, M = M || 0, P = Math.abs(this.colorSliderPosLimitRange[0]), B = this.colorSliderPosLimitRange[1], H = R * B / 100 - P, Y = B - M * B / 100 - P, this._moveColorSliderHandle(H, Y, O); + }, b.prototype._moveColorSliderByPosition = function(R, M) { + var O = this.colorSliderPosLimitRange[0]; + this._moveColorSliderHandle(R + O, M + O); + }, b.prototype.getSaturationAndValue = function() { + var R = Math.abs(this.colorSliderPosLimitRange[0]), M = R + this.colorSliderPosLimitRange[1], O = v.getTranslateXY(this.sliderHandleElement), P, B; + return P = (O[1] + R) / M * 100, B = 100 - (O[0] + R) / M * 100, [P, B]; + }, b.prototype._setHueBarPosMax = function() { + var R = this.huebarSvgElement.getClientRects()[0]; + R && (this.huebarPosLimitRange[1] = R.height - 7); + }, b.prototype._moveHueHandle = function(R, M) { + var O = this.huebarHandleElement, P = this.baseColorElement, B, H; + R = Math.max(this.huebarPosLimitRange[0], R), R = Math.min(this.huebarPosLimitRange[1], R), v.setTranslateY(O, R), B = y.hsvToRGB(this.getHue(), 100, 100), H = y.rgbToHEX.apply(null, B), v.setGradientColorStop(P, H), M || this.fire("_selectColor", { + color: y.rgbToHEX.apply(null, this.getRGB()) + }); + }, b.prototype.moveHue = function(R, M) { + var O = 0, P, B; + P = Math.abs(this.huebarPosLimitRange[0]), B = P + this.huebarPosLimitRange[1], R = R || 0, O = B * R / x - P, this._moveHueHandle(O, M); + }, b.prototype._moveHueByPosition = function(R) { + var M = this.huebarPosLimitRange[0]; + this._moveHueHandle(R + M); + }, b.prototype.getHue = function() { + var R = this.huebarHandleElement, M = v.getTranslateXY(R), O, P; + return O = Math.abs(this.huebarPosLimitRange[0]), P = O + this.huebarPosLimitRange[1], (M[0] + O) * x / P; + }, b.prototype.getHSV = function() { + var R = this.getSaturationAndValue(), M = this.getHue(); + return [M].concat(R); + }, b.prototype.getRGB = function() { + return y.hsvToRGB.apply(null, this.getHSV()); + }, b.prototype._prepareColorSliderForMouseEvent = function(R) { + var M = this.options, O = l(R.target, "." + M.cssPrefix + "slider-part"), P; + return P = this._dragDataCache = { + isColorSlider: u(O, M.cssPrefix + "slider-left"), + parentElement: O + }, P; + }, b.prototype._onClick = function(R) { + var M = this._prepareColorSliderForMouseEvent(R), O = o(R.originEvent, M.parentElement); + M.isColorSlider ? this._moveColorSliderByPosition(O[0], O[1]) : this._moveHueByPosition(O[1]), this._dragDataCache = null; + }, b.prototype._onDragStart = function(R) { + this._setColorSliderPosMax(), this._setHueBarPosMax(), this._prepareColorSliderForMouseEvent(R); + }, b.prototype._onDrag = function(R) { + var M = this._dragDataCache, O = o(R.originEvent, M.parentElement); + M.isColorSlider ? this._moveColorSliderByPosition(O[0], O[1]) : this._moveHueByPosition(O[1]); + }, b.prototype._onDragEnd = function() { + this._dragDataCache = null; + }, a.mixin(b), r.exports = b; + }, + /* 32 */ + /***/ + function(r, n, i) { + var a = i(4).isOldBrowser, o = /[\.\-0-9]+/g, l = -6, u = { + /** + * Get translate transform value + * @param {SVG|VML} obj - svg or vml object that want to know translate x, y + * @returns {number[]} translated coordinates [x, y] + */ + getTranslateXY: function(d) { + var f; + return a ? (f = d.style, [parseFloat(f.top), parseFloat(f.left)]) : (f = d.getAttribute("transform"), f ? (f = f.match(o), [parseFloat(f[1]), parseFloat(f[0])]) : [0, 0]); + }, + /** + * Set translate transform value + * @param {SVG|VML} obj - SVG or VML object to setting translate transform. + * @param {number} x - translate X value + * @param {number} y - translate Y value + */ + setTranslateXY: function(d, f, g) { + a ? (d.style.left = f + "px", d.style.top = g + "px") : d.setAttribute("transform", "translate(" + f + "," + g + ")"); + }, + /** + * Set translate only Y value + * @param {SVG|VML} obj - SVG or VML object to setting translate transform. + * @param {number} y - translate Y value + */ + setTranslateY: function(d, f) { + a ? d.style.top = f + "px" : d.setAttribute("transform", "translate(" + l + "," + f + ")"); + }, + /** + * Set stroke color to SVG or VML object + * @param {SVG|VML} obj - SVG or VML object to setting stroke color + * @param {string} colorStr - color string + */ + setStrokeColor: function(d, f) { + a ? d.strokecolor = f : d.setAttribute("stroke", f); + }, + /** + * Set gradient stop color to SVG, VML object. + * @param {SVG|VML} obj - SVG, VML object to applying gradient stop color + * @param {string} colorStr - color string + */ + setGradientColorStop: function(d, f) { + a ? d.color = f : d.setAttribute("stop-color", f); + } + }; + r.exports = u; + }, + /* 33 */ + /***/ + function(r, n, i) { + i(34), r.exports = i(35); + }, + /* 34 */ + /***/ + function(r, n, i) { + }, + /* 35 */ + /***/ + function(r, n, i) { + var a = i(19), o = i(8), l = i(24), u = i(48), d = i(29), f = i(31), g = i(12), v = i(32), y = { + Collection: a, + View: o, + Drag: l, + create: u, + Palette: d, + Slider: f, + colorutil: g, + svgvml: v + }; + r.exports = y; + }, + /* 36 */ + /***/ + function(r, n, i) { + function a(o) { + return o === null; + } + r.exports = a; + }, + /* 37 */ + /***/ + function(r, n, i) { + var a = i(3), o = i(38), l = 7 * 24 * 60 * 60 * 1e3; + function u(f) { + var g = (/* @__PURE__ */ new Date()).getTime(); + return g - f > l; + } + function d(f, g) { + var v = "https://www.google-analytics.com/collect", y = location.hostname, C = "event", A = "use", S = "TOAST UI " + f + " for " + y + ": Statistics", _ = window.localStorage.getItem(S); + !a(window.tui) && window.tui.usageStatistics === !1 || _ && !u(_) || (window.localStorage.setItem(S, (/* @__PURE__ */ new Date()).getTime()), setTimeout(function() { + (document.readyState === "interactive" || document.readyState === "complete") && o(v, { + v: 1, + t: C, + tid: g, + cid: y, + dp: y, + dh: f, + el: f, + ec: A + }); + }, 1e3)); + } + r.exports = d; + }, + /* 38 */ + /***/ + function(r, n, i) { + var a = i(7); + function o(l, u) { + var d = document.createElement("img"), f = ""; + return a(u, function(g, v) { + f += "&" + v + "=" + g; + }), f = f.substring(1), d.src = l + "?" + f, d.style.display = "none", document.body.appendChild(d), document.body.removeChild(d), d; + } + r.exports = o; + }, + /* 39 */ + /***/ + function(r, n, i) { + var a = i(2), o = i(5), l = i(23), u = i(40); + function d(f) { + var g = Array.prototype.slice.call(arguments, 1), v = f.classList, y = [], C; + if (v) { + a(g, function(A) { + f.classList.add(A); + }); + return; + } + C = l(f), C && (g = [].concat(C.split(/\s+/), g)), a(g, function(A) { + o(A, y) < 0 && y.push(A); + }), u(f, y); + } + r.exports = d; + }, + /* 40 */ + /***/ + function(r, n, i) { + var a = i(1), o = i(3); + function l(u, d) { + if (d = a(d) ? d.join(" ") : d, d = d.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""), o(u.className.baseVal)) { + u.className = d; + return; + } + u.className.baseVal = d; + } + r.exports = l; + }, + /* 41 */ + /***/ + function(r, n, i) { + function a(o) { + return typeof o == "number" || o instanceof Number; + } + r.exports = a; + }, + /* 42 */ + /***/ + function(r, n, i) { + var a = i(14), o = i(15), l = i(43), u = i(27), d = "onselectstart" in document, f = "prevUserSelect", g = u([ + "userSelect", + "WebkitUserSelect", + "OUserSelect", + "MozUserSelect", + "msUserSelect" + ]); + function v(y) { + y || (y = document), d ? a(y, "selectstart", o) : (y = y === document ? document.documentElement : y, l(y, f, y.style[g]), y.style[g] = "none"); + } + r.exports = v; + }, + /* 43 */ + /***/ + function(r, n, i) { + var a = i(16); + function o(l, u, d) { + if (l.dataset) { + l.dataset[u] = d; + return; + } + l.setAttribute("data-" + a(u), d); + } + r.exports = o; + }, + /* 44 */ + /***/ + function(r, n, i) { + var a = i(17), o = i(15), l = i(45), u = i(46), d = i(27), f = "onselectstart" in document, g = "prevUserSelect", v = d([ + "userSelect", + "WebkitUserSelect", + "OUserSelect", + "MozUserSelect", + "msUserSelect" + ]); + function y(C) { + C || (C = document), f ? a(C, "selectstart", o) : (C = C === document ? document.documentElement : C, C.style[v] = l(C, g) || "auto", u(C, g)); + } + r.exports = y; + }, + /* 45 */ + /***/ + function(r, n, i) { + var a = i(16); + function o(l, u) { + return l.dataset ? l.dataset[u] : l.getAttribute("data-" + a(u)); + } + r.exports = o; + }, + /* 46 */ + /***/ + function(r, n, i) { + var a = i(16); + function o(l, u) { + if (l.dataset) { + delete l.dataset[u]; + return; + } + l.removeAttribute("data-" + a(u)); + } + r.exports = o; + }, + /* 47 */ + /***/ + function(r, n, i) { + var a = i(22), o = i(5), l = ["0", "1", "3", "5", "7"], u = ["2", "6"], d = ["4"]; + function f(v) { + return a.msie && a.version <= 8 ? g(v) : v.button; + } + function g(v) { + var y = String(v.button); + return o(y, l) > -1 ? 0 : o(y, u) > -1 ? 2 : o(y, d) > -1 ? 1 : null; + } + r.exports = f; + }, + /* 48 */ + /***/ + function(r, n, i) { + var a = i(10), o = i(0), l = i(4), u = i(12), d = i(49), f = i(29), g = i(31), v = 0; + function y() { + return v += 1, v; + } + function C(A) { + var S; + if (!(this instanceof C)) + return new C(A); + if (A = this.options = o({ + container: null, + color: "#f8f8f8", + preset: ["#181818", "#282828", "#383838", "#585858", "#b8b8b8", "#d8d8d8", "#e8e8e8", "#f8f8f8", "#ab4642", "#dc9656", "#f7ca88", "#a1b56c", "#86c1b9", "#7cafc2", "#ba8baf", "#a16946"], + cssPrefix: "tui-colorpicker-", + detailTxt: "Detail", + id: y(), + usageStatistics: !0 + }, A), !A.container) + throw new Error("ColorPicker(): need container option."); + S = this.layout = new d(A, A.container), this.palette = new f(A, S.container), this.palette.on({ + _selectColor: this._onSelectColorInPalette, + _toggleSlider: this._onToggleSlider + }, this), this.slider = new g(A, S.container), this.slider.on("_selectColor", this._onSelectColorInSlider, this), S.addChild(this.palette), S.addChild(this.slider), this.render(A.color), A.usageStatistics && l.sendHostName(); + } + C.prototype._onSelectColorInPalette = function(A) { + var S = A.color, _ = this.options; + if (!u.isValidRGB(S) && S !== "") { + this.render(); + return; + } + this.fire("selectColor", { + color: S, + origin: "palette" + }), _.color !== S && (_.color = S, this.render(S)); + }, C.prototype._onToggleSlider = function() { + this.slider.toggle(!this.slider.isVisible()); + }, C.prototype._onSelectColorInSlider = function(A) { + var S = A.color, _ = this.options; + this.fire("selectColor", { + color: S, + origin: "slider" + }), _.color !== S && (_.color = S, this.palette.render(S)); + }, C.prototype.setColor = function(A) { + if (!u.isValidRGB(A)) + throw new Error("ColorPicker#setColor(): need valid hex string color value"); + this.options.color = A, this.render(A); + }, C.prototype.getColor = function() { + return this.options.color; + }, C.prototype.toggle = function(A) { + this.layout.container.style.display = A ? "block" : "none"; + }, C.prototype.render = function(A) { + this.layout.render(A || this.options.color); + }, C.prototype.destroy = function() { + this.layout.destroy(), this.options.container.innerHTML = "", this.layout = this.slider = this.palette = this.options = null; + }, a.mixin(C), r.exports = C; + }, + /* 49 */ + /***/ + function(r, n, i) { + var a = i(0), o = i(18), l = i(9), u = i(8); + function d(f, g) { + this.options = a({ + cssPrefix: "tui-colorpicker-" + }, f), g = l.appendHTMLElement("div", g, this.options.cssPrefix + "container"), u.call(this, f, g), this.render(); + } + o(d, u), d.prototype.render = function(f) { + this.recursive(function(g) { + g.render(f); + }, !0); + }, r.exports = d; + }, + /* 50 */ + /***/ + function(r, n, i) { + function a(o) { + function l() { + } + return l.prototype = o, new l(); + } + r.exports = a; + }, + /* 51 */ + /***/ + function(r, n, i) { + var a = i(52); + r.exports = function(o) { + var l = ['

    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 z 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 FvvWNG7rPdCyV|d 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≺ehZXtB-tc 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

  • '].join(""), u = ['
      ', "{{each preset}}", l, "{{/each}}", "
    ", '
    ', '', '', '{{color}}', "
    "].join(` +`); + return a(u, o); + }; + }, + /* 52 */ + /***/ + function(r, n, i) { + var a = i(5), o = i(2), l = i(1), u = i(11), d = i(0), f = /{{\s?|\s?}}/g, g = /^[a-zA-Z0-9_@]+\[[a-zA-Z0-9_@"']+\]$/, v = /\[\s?|\s?\]/, y = /^[a-zA-Z_]+\.[a-zA-Z_]+$/, C = /\./, A = /^["']\w+["']$/, S = /"|'/g, _ = /^-?\d+\.?\d*$/, E = 2, I = { + if: M, + each: O, + with: P + }, w = "a".split(/a/).length === 3, x = function() { + return w ? function(J, ne) { + return J.split(ne); + } : function(J, ne) { + var fe = [], de = 0, Te, be; + for (ne.global || (ne = new RegExp(ne, "g")), Te = ne.exec(J); Te !== null; ) + be = Te.index, fe.push(J.slice(de, be)), de = be + Te[0].length, Te = ne.exec(J); + return fe.push(J.slice(de)), fe; + }; + }(); + function b(J, ne) { + var fe, de = ne[J]; + return J === "true" ? de = !0 : J === "false" ? de = !1 : A.test(J) ? de = J.replace(S, "") : g.test(J) ? (fe = J.split(v), de = b(fe[0], ne)[b(fe[1], ne)]) : y.test(J) ? (fe = J.split(C), de = b(fe[0], ne)[fe[1]]) : _.test(J) && (de = parseFloat(J)), de; + } + function R(J, ne) { + var fe = [J], de = [], Te = 0, be = 0; + return o(ne, function(Ve, pe) { + Ve.indexOf("if") === 0 ? Te += 1 : Ve === "/if" ? Te -= 1 : !Te && (Ve.indexOf("elseif") === 0 || Ve === "else") && (fe.push(Ve === "else" ? ["true"] : Ve.split(" ").slice(1)), de.push(ne.slice(be, pe)), be = pe + 1); + }), de.push(ne.slice(be)), { + exps: fe, + sourcesInsideIf: de + }; + } + function M(J, ne, fe) { + var de = R(J, ne), Te = !1, be = ""; + return o(de.exps, function(Ve, pe) { + return Te = Y(Ve, fe), Te && (be = ee(de.sourcesInsideIf[pe], fe)), !Te; + }), be; + } + function O(J, ne, fe) { + var de = Y(J, fe), Te = l(de) ? "@index" : "@key", be = {}, Ve = ""; + return o(de, function(pe, Be) { + be[Te] = Be, be["@this"] = pe, d(fe, be), Ve += ee(ne.slice(), fe); + }), Ve; + } + function P(J, ne, fe) { + var de = a("as", J), Te = J[de + 1], be = Y(J.slice(0, de), fe), Ve = {}; + return Ve[Te] = be, ee(ne, d(fe, Ve)) || ""; + } + function B(J, ne, fe) { + var de = J.splice(ne + 1, fe - ne); + return de.pop(), de; + } + function H(J, ne, fe) { + for (var de = I[J], Te = 1, be = 0, Ve, pe = be + E, Be = ne[pe]; Te && u(Be); ) + Be.indexOf(J) === 0 ? Te += 1 : Be.indexOf("/" + J) === 0 && (Te -= 1, Ve = pe), pe += E, Be = ne[pe]; + if (Te) + throw Error(J + " needs {{/" + J + "}} expression."); + return ne[be] = de( + ne[be].split(" ").slice(1), + B(ne, be, Ve), + fe + ), ne; + } + function Y(J, ne) { + var fe = b(J[0], ne); + return fe instanceof Function ? X(fe, J.slice(1), ne) : fe; + } + function X(J, ne, fe) { + var de = []; + return o(ne, function(Te) { + de.push(b(Te, fe)); + }), J.apply(null, de); + } + function ee(J, ne) { + for (var fe = 1, de = J[fe], Te, be, Ve; u(de); ) + Te = de.split(" "), be = Te[0], I[be] ? (Ve = H(be, J.splice(fe, J.length - fe), ne), J = J.concat(Ve)) : J[fe] = Y(Te, ne), fe += E, de = J[fe]; + return J.join(""); + } + function ae(J, ne) { + return ee(x(J, f), ne); + } + r.exports = ae; + }, + /* 53 */ + /***/ + function(r, n, i) { + var a = i(1); + function o(l, u) { + var d = a(l), f = d ? l[0] : l.clientX, g = d ? l[1] : l.clientY, v; + return u ? (v = u.getBoundingClientRect(), [ + f - v.left - u.clientLeft, + g - v.top - u.clientTop + ]) : [f, g]; + } + r.exports = o; + }, + /* 54 */ + /***/ + function(r, n, i) { + var a = i(55); + function o(l, u) { + var d = l.parentNode; + if (a(l, u)) + return l; + for (; d && d !== document; ) { + if (a(d, u)) + return d; + d = d.parentNode; + } + return null; + } + r.exports = o; + }, + /* 55 */ + /***/ + function(r, n, i) { + var a = i(5), o = i(56), l = Element.prototype, u = l.matches || l.webkitMatchesSelector || l.mozMatchesSelector || l.msMatchesSelector || function(f) { + var g = this.document || this.ownerDocument; + return a(this, o(g.querySelectorAll(f))) > -1; + }; + function d(f, g) { + return u.call(f, g); + } + r.exports = d; + }, + /* 56 */ + /***/ + function(r, n, i) { + var a = i(6); + function o(l) { + var u; + try { + u = Array.prototype.slice.call(l); + } catch (d) { + u = [], a(l, function(f) { + u.push(f); + }); + } + return u; + } + r.exports = o; + }, + /* 57 */ + /***/ + function(r, n, i) { + (function(a) { + var o = i(4).isOldBrowser, l = ['
    {{slider}}
    ', '
    {{huebar}}
    '].join(` +`), u = ['', "", '', '', '', "", '', '', '', "", "", '', '', '', ""].join(` +`), d = ['
    ', '', '', "", '', '', "", '', "
    "].join(` +`), f = ['', "", '', '', '', '', '', '', '', '', "", "", '', '', ""].join(` +`), g = ['
    ', '', '', "", '', "
    "].join(` +`); + o && a.document.namespaces.add("v", "urn:schemas-microsoft-com:vml"), r.exports = { + layout: l, + slider: o ? d : u, + huebar: o ? g : f + }; + }).call(this, i(25)); + } + /******/ + ]) + ); + }); + }(l4)), l4.exports; +} +/*! + * TOAST UI ImageEditor + * @version 3.15.3 + * @license MIT + */ +(function(e, t) { + (function(n, i) { + e.exports = i(ndt()); + })(self, function(r) { + return ( + /******/ + function() { + var n = { + /***/ + 2777: ( + /***/ + function(l, u, d) { + /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ + var f = f || { version: "4.6.0" }; + if (u.fabric = f, typeof document != "undefined" && typeof window != "undefined") + document instanceof (typeof HTMLDocument != "undefined" ? HTMLDocument : Document) ? f.document = document : f.document = document.implementation.createHTMLDocument(""), f.window = window; + else { + var g = d(4960), v = new g.JSDOM( + decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"), + { + features: { + FetchExternalResources: ["img"] + }, + resources: "usable" + } + ).window; + f.document = v.document, f.jsdomImplForWrapper = d(6759).implForWrapper, f.nodeCanvas = d(6272).Canvas, f.window = v, DOMParser = f.window.DOMParser; + } + f.isTouchSupported = "ontouchstart" in f.window || "ontouchstart" in f.document || f.window && f.window.navigator && f.window.navigator.maxTouchPoints > 0, f.isLikelyNode = typeof Buffer != "undefined" && typeof window == "undefined", f.SHARED_ATTRIBUTES = [ + "display", + "transform", + "fill", + "fill-opacity", + "fill-rule", + "opacity", + "stroke", + "stroke-dasharray", + "stroke-linecap", + "stroke-dashoffset", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke-width", + "id", + "paint-order", + "vector-effect", + "instantiated_by_use", + "clip-path" + ], f.DPI = 96, f.reNum = "(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)", f.commaWsp = "(?:\\s+,?\\s*|,\\s*)", f.rePathCommand = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig, f.reNonWord = /[ \n\.,;!\?\-]/, f.fontPaths = {}, f.iMatrix = [1, 0, 0, 1, 0, 0], f.svgNS = "http://www.w3.org/2000/svg", f.perfLimitSizeTotal = 2097152, f.maxCacheSideLimit = 4096, f.minCacheSideLimit = 256, f.charWidthsCache = {}, f.textureSize = 2048, f.disableStyleCopyPaste = !1, f.enableGLFiltering = !0, f.devicePixelRatio = f.window.devicePixelRatio || f.window.webkitDevicePixelRatio || f.window.mozDevicePixelRatio || 1, f.browserShadowBlurConstant = 1, f.arcToSegmentsCache = {}, f.boundsOfCurveCache = {}, f.cachesBoundsOfCurve = !0, f.forceGLPutImageData = !1, f.initFilterBackend = function() { + if (f.enableGLFiltering && f.isWebglSupported && f.isWebglSupported(f.textureSize)) + return console.log("max texture size: " + f.maxTextureSize), new f.WebglFilterBackend({ tileSize: f.textureSize }); + if (f.Canvas2dFilterBackend) + return new f.Canvas2dFilterBackend(); + }, typeof document != "undefined" && typeof window != "undefined" && (window.fabric = f), function() { + function S(b, R) { + if (this.__eventListeners[b]) { + var M = this.__eventListeners[b]; + R ? M[M.indexOf(R)] = !1 : f.util.array.fill(M, !1); + } + } + function _(b, R) { + if (this.__eventListeners || (this.__eventListeners = {}), arguments.length === 1) + for (var M in b) + this.on(M, b[M]); + else + this.__eventListeners[b] || (this.__eventListeners[b] = []), this.__eventListeners[b].push(R); + return this; + } + function E(b, R) { + var M = function() { + R.apply(this, arguments), this.off(b, M); + }.bind(this); + this.on(b, M); + } + function I(b, R) { + if (arguments.length === 1) + for (var M in b) + E.call(this, M, b[M]); + else + E.call(this, b, R); + return this; + } + function w(b, R) { + if (!this.__eventListeners) + return this; + if (arguments.length === 0) + for (b in this.__eventListeners) + S.call(this, b); + else if (arguments.length === 1 && typeof arguments[0] == "object") + for (var M in b) + S.call(this, M, b[M]); + else + S.call(this, b, R); + return this; + } + function x(b, R) { + if (!this.__eventListeners) + return this; + var M = this.__eventListeners[b]; + if (!M) + return this; + for (var O = 0, P = M.length; O < P; O++) + M[O] && M[O].call(this, R || {}); + return this.__eventListeners[b] = M.filter(function(B) { + return B !== !1; + }), this; + } + f.Observable = { + fire: x, + on: _, + once: I, + off: w + }; + }(), f.Collection = { + _objects: [], + /** + * Adds objects to collection, Canvas or Group, then renders canvas + * (if `renderOnAddRemove` is not `false`). + * in case of Group no changes to bounding box are made. + * Objects should be instances of (or inherit from) fabric.Object + * Use of this function is highly discouraged for groups. + * you can add a bunch of objects with the add method but then you NEED + * to run a addWithUpdate call for the Group class or position/bbox will be wrong. + * @param {...fabric.Object} object Zero or more fabric instances + * @return {Self} thisArg + * @chainable + */ + add: function() { + if (this._objects.push.apply(this._objects, arguments), this._onObjectAdded) + for (var S = 0, _ = arguments.length; S < _; S++) + this._onObjectAdded(arguments[S]); + return this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`) + * An object should be an instance of (or inherit from) fabric.Object + * Use of this function is highly discouraged for groups. + * you can add a bunch of objects with the insertAt method but then you NEED + * to run a addWithUpdate call for the Group class or position/bbox will be wrong. + * @param {Object} object Object to insert + * @param {Number} index Index to insert object at + * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs + * @return {Self} thisArg + * @chainable + */ + insertAt: function(S, _, E) { + var I = this._objects; + return E ? I[_] = S : I.splice(_, 0, S), this._onObjectAdded && this._onObjectAdded(S), this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`) + * @param {...fabric.Object} object Zero or more fabric instances + * @return {Self} thisArg + * @chainable + */ + remove: function() { + for (var S = this._objects, _, E = !1, I = 0, w = arguments.length; I < w; I++) + _ = S.indexOf(arguments[I]), _ !== -1 && (E = !0, S.splice(_, 1), this._onObjectRemoved && this._onObjectRemoved(arguments[I])); + return this.renderOnAddRemove && E && this.requestRenderAll(), this; + }, + /** + * Executes given function for each object in this group + * @param {Function} callback + * Callback invoked with current object as first argument, + * index - as second and an array of all objects - as third. + * Callback is invoked in a context of Global Object (e.g. `window`) + * when no `context` argument is given + * + * @param {Object} context Context (aka thisObject) + * @return {Self} thisArg + * @chainable + */ + forEachObject: function(S, _) { + for (var E = this.getObjects(), I = 0, w = E.length; I < w; I++) + S.call(_, E[I], I, E); + return this; + }, + /** + * Returns an array of children objects of this instance + * Type parameter introduced in 1.3.10 + * since 2.3.5 this method return always a COPY of the array; + * @param {String} [type] When specified, only objects of this type are returned + * @return {Array} + */ + getObjects: function(S) { + return typeof S == "undefined" ? this._objects.concat() : this._objects.filter(function(_) { + return _.type === S; + }); + }, + /** + * Returns object at specified index + * @param {Number} index + * @return {Self} thisArg + */ + item: function(S) { + return this._objects[S]; + }, + /** + * Returns true if collection contains no objects + * @return {Boolean} true if collection is empty + */ + isEmpty: function() { + return this._objects.length === 0; + }, + /** + * Returns a size of a collection (i.e: length of an array containing its objects) + * @return {Number} Collection size + */ + size: function() { + return this._objects.length; + }, + /** + * Returns true if collection contains an object + * @param {Object} object Object to check against + * @param {Boolean} [deep=false] `true` to check all descendants, `false` to check only `_objects` + * @return {Boolean} `true` if collection contains an object + */ + contains: function(S, _) { + return this._objects.indexOf(S) > -1 ? !0 : _ ? this._objects.some(function(E) { + return typeof E.contains == "function" && E.contains(S, !0); + }) : !1; + }, + /** + * Returns number representation of a collection complexity + * @return {Number} complexity + */ + complexity: function() { + return this._objects.reduce(function(S, _) { + return S += _.complexity ? _.complexity() : 0, S; + }, 0); + } + }, f.CommonMethods = { + /** + * Sets object's properties from options + * @param {Object} [options] Options object + */ + _setOptions: function(S) { + for (var _ in S) + this.set(_, S[_]); + }, + /** + * @private + * @param {Object} [filler] Options object + * @param {String} [property] property to set the Gradient to + */ + _initGradient: function(S, _) { + S && S.colorStops && !(S instanceof f.Gradient) && this.set(_, new f.Gradient(S)); + }, + /** + * @private + * @param {Object} [filler] Options object + * @param {String} [property] property to set the Pattern to + * @param {Function} [callback] callback to invoke after pattern load + */ + _initPattern: function(S, _, E) { + S && S.source && !(S instanceof f.Pattern) ? this.set(_, new f.Pattern(S, E)) : E && E(); + }, + /** + * @private + */ + _setObject: function(S) { + for (var _ in S) + this._set(_, S[_]); + }, + /** + * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. + * @param {String|Object} key Property name or object (if object, iterate over the object properties) + * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) + * @return {fabric.Object} thisArg + * @chainable + */ + set: function(S, _) { + return typeof S == "object" ? this._setObject(S) : this._set(S, _), this; + }, + _set: function(S, _) { + this[S] = _; + }, + /** + * Toggles specified property from `true` to `false` or from `false` to `true` + * @param {String} property Property to toggle + * @return {fabric.Object} thisArg + * @chainable + */ + toggle: function(S) { + var _ = this.get(S); + return typeof _ == "boolean" && this.set(S, !_), this; + }, + /** + * Basic getter + * @param {String} property Property name + * @return {*} value of a property + */ + get: function(S) { + return this[S]; + } + }, function(S) { + var _ = Math.sqrt, E = Math.atan2, I = Math.pow, w = Math.PI / 180, x = Math.PI / 2; + f.util = { + /** + * Calculate the cos of an angle, avoiding returning floats for known results + * @static + * @memberOf fabric.util + * @param {Number} angle the angle in radians or in degree + * @return {Number} + */ + cos: function(b) { + if (b === 0) + return 1; + b < 0 && (b = -b); + var R = b / x; + switch (R) { + case 1: + case 3: + return 0; + case 2: + return -1; + } + return Math.cos(b); + }, + /** + * Calculate the sin of an angle, avoiding returning floats for known results + * @static + * @memberOf fabric.util + * @param {Number} angle the angle in radians or in degree + * @return {Number} + */ + sin: function(b) { + if (b === 0) + return 0; + var R = b / x, M = 1; + switch (b < 0 && (M = -1), R) { + case 1: + return M; + case 2: + return 0; + case 3: + return -M; + } + return Math.sin(b); + }, + /** + * Removes value from an array. + * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf` + * @static + * @memberOf fabric.util + * @param {Array} array + * @param {*} value + * @return {Array} original array + */ + removeFromArray: function(b, R) { + var M = b.indexOf(R); + return M !== -1 && b.splice(M, 1), b; + }, + /** + * Returns random number between 2 specified ones. + * @static + * @memberOf fabric.util + * @param {Number} min lower limit + * @param {Number} max upper limit + * @return {Number} random value (between min and max) + */ + getRandomInt: function(b, R) { + return Math.floor(Math.random() * (R - b + 1)) + b; + }, + /** + * Transforms degrees to radians. + * @static + * @memberOf fabric.util + * @param {Number} degrees value in degrees + * @return {Number} value in radians + */ + degreesToRadians: function(b) { + return b * w; + }, + /** + * Transforms radians to degrees. + * @static + * @memberOf fabric.util + * @param {Number} radians value in radians + * @return {Number} value in degrees + */ + radiansToDegrees: function(b) { + return b / w; + }, + /** + * Rotates `point` around `origin` with `radians` + * @static + * @memberOf fabric.util + * @param {fabric.Point} point The point to rotate + * @param {fabric.Point} origin The origin of the rotation + * @param {Number} radians The radians of the angle for the rotation + * @return {fabric.Point} The new rotated point + */ + rotatePoint: function(b, R, M) { + var O = new f.Point(b.x - R.x, b.y - R.y), P = f.util.rotateVector(O, M); + return new f.Point(P.x, P.y).addEquals(R); + }, + /** + * Rotates `vector` with `radians` + * @static + * @memberOf fabric.util + * @param {Object} vector The vector to rotate (x and y) + * @param {Number} radians The radians of the angle for the rotation + * @return {Object} The new rotated point + */ + rotateVector: function(b, R) { + var M = f.util.sin(R), O = f.util.cos(R), P = b.x * O - b.y * M, B = b.x * M + b.y * O; + return { + x: P, + y: B + }; + }, + /** + * Apply transform t to point p + * @static + * @memberOf fabric.util + * @param {fabric.Point} p The point to transform + * @param {Array} t The transform + * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied + * @return {fabric.Point} The transformed point + */ + transformPoint: function(b, R, M) { + return M ? new f.Point( + R[0] * b.x + R[2] * b.y, + R[1] * b.x + R[3] * b.y + ) : new f.Point( + R[0] * b.x + R[2] * b.y + R[4], + R[1] * b.x + R[3] * b.y + R[5] + ); + }, + /** + * Returns coordinates of points's bounding rectangle (left, top, width, height) + * @param {Array} points 4 points array + * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix + * @return {Object} Object with left, top, width, height properties + */ + makeBoundingBoxFromPoints: function(b, R) { + if (R) + for (var M = 0; M < b.length; M++) + b[M] = f.util.transformPoint(b[M], R); + var O = [b[0].x, b[1].x, b[2].x, b[3].x], P = f.util.array.min(O), B = f.util.array.max(O), H = B - P, Y = [b[0].y, b[1].y, b[2].y, b[3].y], X = f.util.array.min(Y), ee = f.util.array.max(Y), ae = ee - X; + return { + left: P, + top: X, + width: H, + height: ae + }; + }, + /** + * Invert transformation t + * @static + * @memberOf fabric.util + * @param {Array} t The transform + * @return {Array} The inverted transform + */ + invertTransform: function(b) { + var R = 1 / (b[0] * b[3] - b[1] * b[2]), M = [R * b[3], -R * b[1], -R * b[2], R * b[0]], O = f.util.transformPoint({ x: b[4], y: b[5] }, M, !0); + return M[4] = -O.x, M[5] = -O.y, M; + }, + /** + * A wrapper around Number#toFixed, which contrary to native method returns number, not string. + * @static + * @memberOf fabric.util + * @param {Number|String} number number to operate on + * @param {Number} fractionDigits number of fraction digits to "leave" + * @return {Number} + */ + toFixed: function(b, R) { + return parseFloat(Number(b).toFixed(R)); + }, + /** + * Converts from attribute value to pixel value if applicable. + * Returns converted pixels or original value not converted. + * @param {Number|String} value number to operate on + * @param {Number} fontSize + * @return {Number|String} + */ + parseUnit: function(b, R) { + var M = /\D{0,2}$/.exec(b), O = parseFloat(b); + switch (R || (R = f.Text.DEFAULT_SVG_FONT_SIZE), M[0]) { + case "mm": + return O * f.DPI / 25.4; + case "cm": + return O * f.DPI / 2.54; + case "in": + return O * f.DPI; + case "pt": + return O * f.DPI / 72; + case "pc": + return O * f.DPI / 72 * 12; + case "em": + return O * R; + default: + return O; + } + }, + /** + * Function which always returns `false`. + * @static + * @memberOf fabric.util + * @return {Boolean} + */ + falseFunction: function() { + return !1; + }, + /** + * Returns klass "Class" object of given namespace + * @memberOf fabric.util + * @param {String} type Type of object (eg. 'circle') + * @param {String} namespace Namespace to get klass "Class" object from + * @return {Object} klass "Class" + */ + getKlass: function(b, R) { + return b = f.util.string.camelize(b.charAt(0).toUpperCase() + b.slice(1)), f.util.resolveNamespace(R)[b]; + }, + /** + * Returns array of attributes for given svg that fabric parses + * @memberOf fabric.util + * @param {String} type Type of svg element (eg. 'circle') + * @return {Array} string names of supported attributes + */ + getSvgAttributes: function(b) { + var R = [ + "instantiated_by_use", + "style", + "id", + "class" + ]; + switch (b) { + case "linearGradient": + R = R.concat(["x1", "y1", "x2", "y2", "gradientUnits", "gradientTransform"]); + break; + case "radialGradient": + R = R.concat(["gradientUnits", "gradientTransform", "cx", "cy", "r", "fx", "fy", "fr"]); + break; + case "stop": + R = R.concat(["offset", "stop-color", "stop-opacity"]); + break; + } + return R; + }, + /** + * Returns object of given namespace + * @memberOf fabric.util + * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric' + * @return {Object} Object for given namespace (default fabric) + */ + resolveNamespace: function(b) { + if (!b) + return f; + var R = b.split("."), M = R.length, O, P = S || f.window; + for (O = 0; O < M; ++O) + P = P[R[O]]; + return P; + }, + /** + * Loads image element from given url and passes it to a callback + * @memberOf fabric.util + * @param {String} url URL representing an image + * @param {Function} callback Callback; invoked with loaded image + * @param {*} [context] Context to invoke callback in + * @param {Object} [crossOrigin] crossOrigin value to set image element to + */ + loadImage: function(b, R, M, O) { + if (!b) { + R && R.call(M, b); + return; + } + var P = f.util.createImage(), B = function() { + R && R.call(M, P, !1), P = P.onload = P.onerror = null; + }; + P.onload = B, P.onerror = function() { + f.log("Error loading " + P.src), R && R.call(M, null, !0), P = P.onload = P.onerror = null; + }, b.indexOf("data") !== 0 && O !== void 0 && O !== null && (P.crossOrigin = O), b.substring(0, 14) === "data:image/svg" && (P.onload = null, f.util.loadImageInDom(P, B)), P.src = b; + }, + /** + * Attaches SVG image with data: URL to the dom + * @memberOf fabric.util + * @param {Object} img Image object with data:image/svg src + * @param {Function} callback Callback; invoked with loaded image + * @return {Object} DOM element (div containing the SVG image) + */ + loadImageInDom: function(b, R) { + var M = f.document.createElement("div"); + M.style.width = M.style.height = "1px", M.style.left = M.style.top = "-100%", M.style.position = "absolute", M.appendChild(b), f.document.querySelector("body").appendChild(M), b.onload = function() { + R(), M.parentNode.removeChild(M), M = null; + }; + }, + /** + * Creates corresponding fabric instances from their object representations + * @static + * @memberOf fabric.util + * @param {Array} objects Objects to enliven + * @param {Function} callback Callback to invoke when all objects are created + * @param {String} namespace Namespace to get klass "Class" object from + * @param {Function} reviver Method for further parsing of object elements, + * called after each fabric object created. + */ + enlivenObjects: function(b, R, M, O) { + b = b || []; + var P = [], B = 0, H = b.length; + function Y() { + ++B === H && R && R(P.filter(function(X) { + return X; + })); + } + if (!H) { + R && R(P); + return; + } + b.forEach(function(X, ee) { + if (!X || !X.type) { + Y(); + return; + } + var ae = f.util.getKlass(X.type, M); + ae.fromObject(X, function(J, ne) { + ne || (P[ee] = J), O && O(X, J, ne), Y(); + }); + }); + }, + /** + * Create and wait for loading of patterns + * @static + * @memberOf fabric.util + * @param {Array} patterns Objects to enliven + * @param {Function} callback Callback to invoke when all objects are created + * called after each fabric object created. + */ + enlivenPatterns: function(b, R) { + b = b || []; + function M() { + ++P === B && R && R(O); + } + var O = [], P = 0, B = b.length; + if (!B) { + R && R(O); + return; + } + b.forEach(function(H, Y) { + H && H.source ? new f.Pattern(H, function(X) { + O[Y] = X, M(); + }) : (O[Y] = H, M()); + }); + }, + /** + * Groups SVG elements (usually those retrieved from SVG document) + * @static + * @memberOf fabric.util + * @param {Array} elements SVG elements to group + * @param {Object} [options] Options object + * @param {String} path Value to set sourcePath to + * @return {fabric.Object|fabric.Group} + */ + groupSVGElements: function(b, R, M) { + var O; + return b && b.length === 1 ? b[0] : (R && (R.width && R.height ? R.centerPoint = { + x: R.width / 2, + y: R.height / 2 + } : (delete R.width, delete R.height)), O = new f.Group(b, R), typeof M != "undefined" && (O.sourcePath = M), O); + }, + /** + * Populates an object with properties of another object + * @static + * @memberOf fabric.util + * @param {Object} source Source object + * @param {Object} destination Destination object + * @return {Array} properties Properties names to include + */ + populateWithProperties: function(b, R, M) { + if (M && Object.prototype.toString.call(M) === "[object Array]") + for (var O = 0, P = M.length; O < P; O++) + M[O] in b && (R[M[O]] = b[M[O]]); + }, + /** + * WARNING: THIS WAS TO SUPPORT OLD BROWSERS. deprecated. + * WILL BE REMOVED IN FABRIC 5.0 + * Draws a dashed line between two points + * + * This method is used to draw dashed line around selection area. + * See
    dotted stroke in canvas + * + * @param {CanvasRenderingContext2D} ctx context + * @param {Number} x start x coordinate + * @param {Number} y start y coordinate + * @param {Number} x2 end x coordinate + * @param {Number} y2 end y coordinate + * @param {Array} da dash array pattern + * @deprecated + */ + drawDashedLine: function(b, R, M, O, P, B) { + var H = O - R, Y = P - M, X = _(H * H + Y * Y), ee = E(Y, H), ae = B.length, J = 0, ne = !0; + for (b.save(), b.translate(R, M), b.moveTo(0, 0), b.rotate(ee), R = 0; X > R; ) + R += B[J++ % ae], R > X && (R = X), b[ne ? "lineTo" : "moveTo"](R, 0), ne = !ne; + b.restore(); + }, + /** + * Creates canvas element + * @static + * @memberOf fabric.util + * @return {CanvasElement} initialized canvas element + */ + createCanvasElement: function() { + return f.document.createElement("canvas"); + }, + /** + * Creates a canvas element that is a copy of another and is also painted + * @param {CanvasElement} canvas to copy size and content of + * @static + * @memberOf fabric.util + * @return {CanvasElement} initialized canvas element + */ + copyCanvasElement: function(b) { + var R = f.util.createCanvasElement(); + return R.width = b.width, R.height = b.height, R.getContext("2d").drawImage(b, 0, 0), R; + }, + /** + * since 2.6.0 moved from canvas instance to utility. + * @param {CanvasElement} canvasEl to copy size and content of + * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too + * @param {Number} quality <= 1 and > 0 + * @static + * @memberOf fabric.util + * @return {String} data url + */ + toDataURL: function(b, R, M) { + return b.toDataURL("image/" + R, M); + }, + /** + * Creates image element (works on client and node) + * @static + * @memberOf fabric.util + * @return {HTMLImageElement} HTML image element + */ + createImage: function() { + return f.document.createElement("img"); + }, + /** + * Multiply matrix A by matrix B to nest transformations + * @static + * @memberOf fabric.util + * @param {Array} a First transformMatrix + * @param {Array} b Second transformMatrix + * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices + * @return {Array} The product of the two transform matrices + */ + multiplyTransformMatrices: function(b, R, M) { + return [ + b[0] * R[0] + b[2] * R[1], + b[1] * R[0] + b[3] * R[1], + b[0] * R[2] + b[2] * R[3], + b[1] * R[2] + b[3] * R[3], + M ? 0 : b[0] * R[4] + b[2] * R[5] + b[4], + M ? 0 : b[1] * R[4] + b[3] * R[5] + b[5] + ]; + }, + /** + * Decomposes standard 2x3 matrix into transform components + * @static + * @memberOf fabric.util + * @param {Array} a transformMatrix + * @return {Object} Components of transform + */ + qrDecompose: function(b) { + var R = E(b[1], b[0]), M = I(b[0], 2) + I(b[1], 2), O = _(M), P = (b[0] * b[3] - b[2] * b[1]) / O, B = E(b[0] * b[2] + b[1] * b[3], M); + return { + angle: R / w, + scaleX: O, + scaleY: P, + skewX: B / w, + skewY: 0, + translateX: b[4], + translateY: b[5] + }; + }, + /** + * Returns a transform matrix starting from an object of the same kind of + * the one returned from qrDecompose, useful also if you want to calculate some + * transformations from an object that is not enlived yet + * @static + * @memberOf fabric.util + * @param {Object} options + * @param {Number} [options.angle] angle in degrees + * @return {Number[]} transform matrix + */ + calcRotateMatrix: function(b) { + if (!b.angle) + return f.iMatrix.concat(); + var R = f.util.degreesToRadians(b.angle), M = f.util.cos(R), O = f.util.sin(R); + return [M, O, -O, M, 0, 0]; + }, + /** + * Returns a transform matrix starting from an object of the same kind of + * the one returned from qrDecompose, useful also if you want to calculate some + * transformations from an object that is not enlived yet. + * is called DimensionsTransformMatrix because those properties are the one that influence + * the size of the resulting box of the object. + * @static + * @memberOf fabric.util + * @param {Object} options + * @param {Number} [options.scaleX] + * @param {Number} [options.scaleY] + * @param {Boolean} [options.flipX] + * @param {Boolean} [options.flipY] + * @param {Number} [options.skewX] + * @param {Number} [options.skewX] + * @return {Number[]} transform matrix + */ + calcDimensionsMatrix: function(b) { + var R = typeof b.scaleX == "undefined" ? 1 : b.scaleX, M = typeof b.scaleY == "undefined" ? 1 : b.scaleY, O = [ + b.flipX ? -R : R, + 0, + 0, + b.flipY ? -M : M, + 0, + 0 + ], P = f.util.multiplyTransformMatrices, B = f.util.degreesToRadians; + return b.skewX && (O = P( + O, + [1, 0, Math.tan(B(b.skewX)), 1], + !0 + )), b.skewY && (O = P( + O, + [1, Math.tan(B(b.skewY)), 0, 1], + !0 + )), O; + }, + /** + * Returns a transform matrix starting from an object of the same kind of + * the one returned from qrDecompose, useful also if you want to calculate some + * transformations from an object that is not enlived yet + * @static + * @memberOf fabric.util + * @param {Object} options + * @param {Number} [options.angle] + * @param {Number} [options.scaleX] + * @param {Number} [options.scaleY] + * @param {Boolean} [options.flipX] + * @param {Boolean} [options.flipY] + * @param {Number} [options.skewX] + * @param {Number} [options.skewX] + * @param {Number} [options.translateX] + * @param {Number} [options.translateY] + * @return {Number[]} transform matrix + */ + composeMatrix: function(b) { + var R = [1, 0, 0, 1, b.translateX || 0, b.translateY || 0], M = f.util.multiplyTransformMatrices; + return b.angle && (R = M(R, f.util.calcRotateMatrix(b))), (b.scaleX !== 1 || b.scaleY !== 1 || b.skewX || b.skewY || b.flipX || b.flipY) && (R = M(R, f.util.calcDimensionsMatrix(b))), R; + }, + /** + * reset an object transform state to neutral. Top and left are not accounted for + * @static + * @memberOf fabric.util + * @param {fabric.Object} target object to transform + */ + resetObjectTransform: function(b) { + b.scaleX = 1, b.scaleY = 1, b.skewX = 0, b.skewY = 0, b.flipX = !1, b.flipY = !1, b.rotate(0); + }, + /** + * Extract Object transform values + * @static + * @memberOf fabric.util + * @param {fabric.Object} target object to read from + * @return {Object} Components of transform + */ + saveObjectTransform: function(b) { + return { + scaleX: b.scaleX, + scaleY: b.scaleY, + skewX: b.skewX, + skewY: b.skewY, + angle: b.angle, + left: b.left, + flipX: b.flipX, + flipY: b.flipY, + top: b.top + }; + }, + /** + * Returns true if context has transparent pixel + * at specified location (taking tolerance into account) + * @param {CanvasRenderingContext2D} ctx context + * @param {Number} x x coordinate + * @param {Number} y y coordinate + * @param {Number} tolerance Tolerance + */ + isTransparent: function(b, R, M, O) { + O > 0 && (R > O ? R -= O : R = 0, M > O ? M -= O : M = 0); + var P = !0, B, H, Y = b.getImageData(R, M, O * 2 || 1, O * 2 || 1), X = Y.data.length; + for (B = 3; B < X && (H = Y.data[B], P = H <= 0, P !== !1); B += 4) + ; + return Y = null, P; + }, + /** + * Parse preserveAspectRatio attribute from element + * @param {string} attribute to be parsed + * @return {Object} an object containing align and meetOrSlice attribute + */ + parsePreserveAspectRatioAttribute: function(b) { + var R = "meet", M = "Mid", O = "Mid", P = b.split(" "), B; + return P && P.length && (R = P.pop(), R !== "meet" && R !== "slice" ? (B = R, R = "meet") : P.length && (B = P.pop())), M = B !== "none" ? B.slice(1, 4) : "none", O = B !== "none" ? B.slice(5, 8) : "none", { + meetOrSlice: R, + alignX: M, + alignY: O + }; + }, + /** + * Clear char widths cache for the given font family or all the cache if no + * fontFamily is specified. + * Use it if you know you are loading fonts in a lazy way and you are not waiting + * for custom fonts to load properly when adding text objects to the canvas. + * If a text object is added when its own font is not loaded yet, you will get wrong + * measurement and so wrong bounding boxes. + * After the font cache is cleared, either change the textObject text content or call + * initDimensions() to trigger a recalculation + * @memberOf fabric.util + * @param {String} [fontFamily] font family to clear + */ + clearFabricFontCache: function(b) { + b = (b || "").toLowerCase(), b ? f.charWidthsCache[b] && delete f.charWidthsCache[b] : f.charWidthsCache = {}; + }, + /** + * Given current aspect ratio, determines the max width and height that can + * respect the total allowed area for the cache. + * @memberOf fabric.util + * @param {Number} ar aspect ratio + * @param {Number} maximumArea Maximum area you want to achieve + * @return {Object.x} Limited dimensions by X + * @return {Object.y} Limited dimensions by Y + */ + limitDimsByArea: function(b, R) { + var M = Math.sqrt(R * b), O = Math.floor(R / M); + return { x: Math.floor(M), y: O }; + }, + capValue: function(b, R, M) { + return Math.max(b, Math.min(R, M)); + }, + /** + * Finds the scale for the object source to fit inside the object destination, + * keeping aspect ratio intact. + * respect the total allowed area for the cache. + * @memberOf fabric.util + * @param {Object | fabric.Object} source + * @param {Number} source.height natural unscaled height of the object + * @param {Number} source.width natural unscaled width of the object + * @param {Object | fabric.Object} destination + * @param {Number} destination.height natural unscaled height of the object + * @param {Number} destination.width natural unscaled width of the object + * @return {Number} scale factor to apply to source to fit into destination + */ + findScaleToFit: function(b, R) { + return Math.min(R.width / b.width, R.height / b.height); + }, + /** + * Finds the scale for the object source to cover entirely the object destination, + * keeping aspect ratio intact. + * respect the total allowed area for the cache. + * @memberOf fabric.util + * @param {Object | fabric.Object} source + * @param {Number} source.height natural unscaled height of the object + * @param {Number} source.width natural unscaled width of the object + * @param {Object | fabric.Object} destination + * @param {Number} destination.height natural unscaled height of the object + * @param {Number} destination.width natural unscaled width of the object + * @return {Number} scale factor to apply to source to cover destination + */ + findScaleToCover: function(b, R) { + return Math.max(R.width / b.width, R.height / b.height); + }, + /** + * given an array of 6 number returns something like `"matrix(...numbers)"` + * @memberOf fabric.util + * @param {Array} transform an array with 6 numbers + * @return {String} transform matrix for svg + * @return {Object.y} Limited dimensions by Y + */ + matrixToSVG: function(b) { + return "matrix(" + b.map(function(R) { + return f.util.toFixed(R, f.Object.NUM_FRACTION_DIGITS); + }).join(" ") + ")"; + }, + /** + * given an object and a transform, apply the inverse transform to the object, + * this is equivalent to remove from that object that transformation, so that + * added in a space with the removed transform, the object will be the same as before. + * Removing from an object a transform that scale by 2 is like scaling it by 1/2. + * Removing from an object a transfrom that rotate by 30deg is like rotating by 30deg + * in the opposite direction. + * This util is used to add objects inside transformed groups or nested groups. + * @memberOf fabric.util + * @param {fabric.Object} object the object you want to transform + * @param {Array} transform the destination transform + */ + removeTransformFromObject: function(b, R) { + var M = f.util.invertTransform(R), O = f.util.multiplyTransformMatrices(M, b.calcOwnMatrix()); + f.util.applyTransformToObject(b, O); + }, + /** + * given an object and a transform, apply the transform to the object. + * this is equivalent to change the space where the object is drawn. + * Adding to an object a transform that scale by 2 is like scaling it by 2. + * This is used when removing an object from an active selection for example. + * @memberOf fabric.util + * @param {fabric.Object} object the object you want to transform + * @param {Array} transform the destination transform + */ + addTransformToObject: function(b, R) { + f.util.applyTransformToObject( + b, + f.util.multiplyTransformMatrices(R, b.calcOwnMatrix()) + ); + }, + /** + * discard an object transform state and apply the one from the matrix. + * @memberOf fabric.util + * @param {fabric.Object} object the object you want to transform + * @param {Array} transform the destination transform + */ + applyTransformToObject: function(b, R) { + var M = f.util.qrDecompose(R), O = new f.Point(M.translateX, M.translateY); + b.flipX = !1, b.flipY = !1, b.set("scaleX", M.scaleX), b.set("scaleY", M.scaleY), b.skewX = M.skewX, b.skewY = M.skewY, b.angle = M.angle, b.setPositionByOrigin(O, "center", "center"); + }, + /** + * given a width and height, return the size of the bounding box + * that can contains the box with width/height with applied transform + * described in options. + * Use to calculate the boxes around objects for controls. + * @memberOf fabric.util + * @param {Number} width + * @param {Number} height + * @param {Object} options + * @param {Number} options.scaleX + * @param {Number} options.scaleY + * @param {Number} options.skewX + * @param {Number} options.skewY + * @return {Object.x} width of containing + * @return {Object.y} height of containing + */ + sizeAfterTransform: function(b, R, M) { + var O = b / 2, P = R / 2, B = [ + { + x: -O, + y: -P + }, + { + x: O, + y: -P + }, + { + x: -O, + y: P + }, + { + x: O, + y: P + } + ], H = f.util.calcDimensionsMatrix(M), Y = f.util.makeBoundingBoxFromPoints(B, H); + return { + x: Y.width, + y: Y.height + }; + } + }; + }(u), function() { + var S = Array.prototype.join, _ = { + m: 2, + l: 2, + h: 1, + v: 1, + c: 6, + s: 4, + q: 4, + t: 2, + a: 7 + }, E = { + m: "l", + M: "L" + }; + function I(Me, we, He, Ie, Ae, Fe, $e, lt, it, nt, ut) { + var rt = f.util.cos(Me), Ke = f.util.sin(Me), ze = f.util.cos(we), qe = f.util.sin(we), ct = He * Ae * ze - Ie * Fe * qe + $e, ft = Ie * Ae * ze + He * Fe * qe + lt, _t = nt + it * (-He * Ae * Ke - Ie * Fe * rt), Nt = ut + it * (-Ie * Ae * Ke + He * Fe * rt), Yt = ct + it * (He * Ae * qe + Ie * Fe * ze), tr = ft + it * (Ie * Ae * qe - He * Fe * ze); + return [ + "C", + _t, + Nt, + Yt, + tr, + ct, + ft + ]; + } + function w(Me, we, He, Ie, Ae, Fe, $e) { + var lt = Math.PI, it = $e * lt / 180, nt = f.util.sin(it), ut = f.util.cos(it), rt = 0, Ke = 0; + He = Math.abs(He), Ie = Math.abs(Ie); + var ze = -ut * Me * 0.5 - nt * we * 0.5, qe = -ut * we * 0.5 + nt * Me * 0.5, ct = He * He, ft = Ie * Ie, _t = qe * qe, Nt = ze * ze, Yt = ct * ft - ct * _t - ft * Nt, tr = 0; + if (Yt < 0) { + var Ct = Math.sqrt(1 - Yt / (ct * ft)); + He *= Ct, Ie *= Ct; + } else + tr = (Ae === Fe ? -1 : 1) * Math.sqrt(Yt / (ct * _t + ft * Nt)); + var hr = tr * He * qe / Ie, Er = -tr * Ie * ze / He, Fr = ut * hr - nt * Er + Me * 0.5, Dn = nt * hr + ut * Er + we * 0.5, hn = x(1, 0, (ze - hr) / He, (qe - Er) / Ie), Jn = x((ze - hr) / He, (qe - Er) / Ie, (-ze - hr) / He, (-qe - Er) / Ie); + Fe === 0 && Jn > 0 ? Jn -= 2 * lt : Fe === 1 && Jn < 0 && (Jn += 2 * lt); + for (var nn = Math.ceil(Math.abs(Jn / lt * 2)), dn = [], an = Jn / nn, zn = 8 / 3 * Math.sin(an / 4) * Math.sin(an / 4) / Math.sin(an / 2), Lt = hn + an, Ot = 0; Ot < nn; Ot++) + dn[Ot] = I(hn, Lt, ut, nt, He, Ie, Fr, Dn, zn, rt, Ke), rt = dn[Ot][5], Ke = dn[Ot][6], hn = Lt, Lt += an; + return dn; + } + function x(Me, we, He, Ie) { + var Ae = Math.atan2(we, Me), Fe = Math.atan2(Ie, He); + return Fe >= Ae ? Fe - Ae : 2 * Math.PI - (Ae - Fe); + } + function b(Me, we, He, Ie, Ae, Fe, $e, lt) { + var it; + if (f.cachesBoundsOfCurve && (it = S.call(arguments), f.boundsOfCurveCache[it])) + return f.boundsOfCurveCache[it]; + var nt = Math.sqrt, ut = Math.min, rt = Math.max, Ke = Math.abs, ze = [], qe = [[], []], ct, ft, _t, Nt, Yt, tr, Ct, hr; + ft = 6 * Me - 12 * He + 6 * Ae, ct = -3 * Me + 9 * He - 9 * Ae + 3 * $e, _t = 3 * He - 3 * Me; + for (var Er = 0; Er < 2; ++Er) { + if (Er > 0 && (ft = 6 * we - 12 * Ie + 6 * Fe, ct = -3 * we + 9 * Ie - 9 * Fe + 3 * lt, _t = 3 * Ie - 3 * we), Ke(ct) < 1e-12) { + if (Ke(ft) < 1e-12) + continue; + Nt = -_t / ft, 0 < Nt && Nt < 1 && ze.push(Nt); + continue; + } + Ct = ft * ft - 4 * _t * ct, !(Ct < 0) && (hr = nt(Ct), Yt = (-ft + hr) / (2 * ct), 0 < Yt && Yt < 1 && ze.push(Yt), tr = (-ft - hr) / (2 * ct), 0 < tr && tr < 1 && ze.push(tr)); + } + for (var Fr, Dn, hn = ze.length, Jn = hn, nn; hn--; ) + Nt = ze[hn], nn = 1 - Nt, Fr = nn * nn * nn * Me + 3 * nn * nn * Nt * He + 3 * nn * Nt * Nt * Ae + Nt * Nt * Nt * $e, qe[0][hn] = Fr, Dn = nn * nn * nn * we + 3 * nn * nn * Nt * Ie + 3 * nn * Nt * Nt * Fe + Nt * Nt * Nt * lt, qe[1][hn] = Dn; + qe[0][Jn] = Me, qe[1][Jn] = we, qe[0][Jn + 1] = $e, qe[1][Jn + 1] = lt; + var dn = [ + { + x: ut.apply(null, qe[0]), + y: ut.apply(null, qe[1]) + }, + { + x: rt.apply(null, qe[0]), + y: rt.apply(null, qe[1]) + } + ]; + return f.cachesBoundsOfCurve && (f.boundsOfCurveCache[it] = dn), dn; + } + function R(Me, we, He) { + for (var Ie = He[1], Ae = He[2], Fe = He[3], $e = He[4], lt = He[5], it = He[6], nt = He[7], ut = w(it - Me, nt - we, Ie, Ae, $e, lt, Fe), rt = 0, Ke = ut.length; rt < Ke; rt++) + ut[rt][1] += Me, ut[rt][2] += we, ut[rt][3] += Me, ut[rt][4] += we, ut[rt][5] += Me, ut[rt][6] += we; + return ut; + } + function M(Me) { + var we = 0, He = 0, Ie = Me.length, Ae = 0, Fe = 0, $e, lt, it, nt = [], ut, rt, Ke; + for (lt = 0; lt < Ie; ++lt) { + switch (it = !1, $e = Me[lt].slice(0), $e[0]) { + case "l": + $e[0] = "L", $e[1] += we, $e[2] += He; + case "L": + we = $e[1], He = $e[2]; + break; + case "h": + $e[1] += we; + case "H": + $e[0] = "L", $e[2] = He, we = $e[1]; + break; + case "v": + $e[1] += He; + case "V": + $e[0] = "L", He = $e[1], $e[1] = we, $e[2] = He; + break; + case "m": + $e[0] = "M", $e[1] += we, $e[2] += He; + case "M": + we = $e[1], He = $e[2], Ae = $e[1], Fe = $e[2]; + break; + case "c": + $e[0] = "C", $e[1] += we, $e[2] += He, $e[3] += we, $e[4] += He, $e[5] += we, $e[6] += He; + case "C": + rt = $e[3], Ke = $e[4], we = $e[5], He = $e[6]; + break; + case "s": + $e[0] = "S", $e[1] += we, $e[2] += He, $e[3] += we, $e[4] += He; + case "S": + ut === "C" ? (rt = 2 * we - rt, Ke = 2 * He - Ke) : (rt = we, Ke = He), we = $e[3], He = $e[4], $e[0] = "C", $e[5] = $e[3], $e[6] = $e[4], $e[3] = $e[1], $e[4] = $e[2], $e[1] = rt, $e[2] = Ke, rt = $e[3], Ke = $e[4]; + break; + case "q": + $e[0] = "Q", $e[1] += we, $e[2] += He, $e[3] += we, $e[4] += He; + case "Q": + rt = $e[1], Ke = $e[2], we = $e[3], He = $e[4]; + break; + case "t": + $e[0] = "T", $e[1] += we, $e[2] += He; + case "T": + ut === "Q" ? (rt = 2 * we - rt, Ke = 2 * He - Ke) : (rt = we, Ke = He), $e[0] = "Q", we = $e[1], He = $e[2], $e[1] = rt, $e[2] = Ke, $e[3] = we, $e[4] = He; + break; + case "a": + $e[0] = "A", $e[6] += we, $e[7] += He; + case "A": + it = !0, nt = nt.concat(R(we, He, $e)), we = $e[6], He = $e[7]; + break; + case "z": + case "Z": + we = Ae, He = Fe; + break; + } + it || nt.push($e), ut = $e[0]; + } + return nt; + } + function O(Me, we, He, Ie) { + return Math.sqrt((He - Me) * (He - Me) + (Ie - we) * (Ie - we)); + } + function P(Me) { + return Me * Me * Me; + } + function B(Me) { + return 3 * Me * Me * (1 - Me); + } + function H(Me) { + return 3 * Me * (1 - Me) * (1 - Me); + } + function Y(Me) { + return (1 - Me) * (1 - Me) * (1 - Me); + } + function X(Me, we, He, Ie, Ae, Fe, $e, lt) { + return function(it) { + var nt = P(it), ut = B(it), rt = H(it), Ke = Y(it); + return { + x: $e * nt + Ae * ut + He * rt + Me * Ke, + y: lt * nt + Fe * ut + Ie * rt + we * Ke + }; + }; + } + function ee(Me, we, He, Ie, Ae, Fe, $e, lt) { + return function(it) { + var nt = 1 - it, ut = 3 * nt * nt * (He - Me) + 6 * nt * it * (Ae - He) + 3 * it * it * ($e - Ae), rt = 3 * nt * nt * (Ie - we) + 6 * nt * it * (Fe - Ie) + 3 * it * it * (lt - Fe); + return Math.atan2(rt, ut); + }; + } + function ae(Me) { + return Me * Me; + } + function J(Me) { + return 2 * Me * (1 - Me); + } + function ne(Me) { + return (1 - Me) * (1 - Me); + } + function fe(Me, we, He, Ie, Ae, Fe) { + return function($e) { + var lt = ae($e), it = J($e), nt = ne($e); + return { + x: Ae * lt + He * it + Me * nt, + y: Fe * lt + Ie * it + we * nt + }; + }; + } + function de(Me, we, He, Ie, Ae, Fe) { + return function($e) { + var lt = 1 - $e, it = 2 * lt * (He - Me) + 2 * $e * (Ae - He), nt = 2 * lt * (Ie - we) + 2 * $e * (Fe - Ie); + return Math.atan2(nt, it); + }; + } + function Te(Me, we, He) { + var Ie = { x: we, y: He }, Ae, Fe = 0, $e; + for ($e = 1; $e <= 100; $e += 1) + Ae = Me($e / 100), Fe += O(Ie.x, Ie.y, Ae.x, Ae.y), Ie = Ae; + return Fe; + } + function be(Me, we) { + for (var He = 0, Ie = 0, Ae = Me.iterator, Fe = { x: Me.x, y: Me.y }, $e, lt, it = 0.01, nt = Me.angleFinder, ut; Ie < we && He <= 1 && it > 1e-4; ) + $e = Ae(He), ut = He, lt = O(Fe.x, Fe.y, $e.x, $e.y), lt + Ie > we ? (it /= 2, He -= it) : (Fe = $e, He += it, Ie += lt); + return $e.angle = nt(ut), $e; + } + function Ve(Me) { + for (var we = 0, He = Me.length, Ie, Ae = 0, Fe = 0, $e = 0, lt = 0, it = [], nt, ut, rt, Ke = 0; Ke < He; Ke++) { + switch (Ie = Me[Ke], ut = { + x: Ae, + y: Fe, + command: Ie[0] + }, Ie[0]) { + case "M": + ut.length = 0, $e = Ae = Ie[1], lt = Fe = Ie[2]; + break; + case "L": + ut.length = O(Ae, Fe, Ie[1], Ie[2]), Ae = Ie[1], Fe = Ie[2]; + break; + case "C": + nt = X( + Ae, + Fe, + Ie[1], + Ie[2], + Ie[3], + Ie[4], + Ie[5], + Ie[6] + ), rt = ee( + Ae, + Fe, + Ie[1], + Ie[2], + Ie[3], + Ie[4], + Ie[5], + Ie[6] + ), ut.iterator = nt, ut.angleFinder = rt, ut.length = Te(nt, Ae, Fe), Ae = Ie[5], Fe = Ie[6]; + break; + case "Q": + nt = fe( + Ae, + Fe, + Ie[1], + Ie[2], + Ie[3], + Ie[4] + ), rt = de( + Ae, + Fe, + Ie[1], + Ie[2], + Ie[3], + Ie[4] + ), ut.iterator = nt, ut.angleFinder = rt, ut.length = Te(nt, Ae, Fe), Ae = Ie[3], Fe = Ie[4]; + break; + case "Z": + case "z": + ut.destX = $e, ut.destY = lt, ut.length = O(Ae, Fe, $e, lt), Ae = $e, Fe = lt; + break; + } + we += ut.length, it.push(ut); + } + return it.push({ length: we, x: Ae, y: Fe }), it; + } + function pe(Me, we, He) { + He || (He = Ve(Me)); + for (var Ie = 0; we - He[Ie].length > 0 && Ie < He.length - 2; ) + we -= He[Ie].length, Ie++; + var Ae = He[Ie], Fe = we / Ae.length, $e = Ae.command, lt = Me[Ie], it; + switch ($e) { + case "M": + return { x: Ae.x, y: Ae.y, angle: 0 }; + case "Z": + case "z": + return it = new f.Point(Ae.x, Ae.y).lerp( + new f.Point(Ae.destX, Ae.destY), + Fe + ), it.angle = Math.atan2(Ae.destY - Ae.y, Ae.destX - Ae.x), it; + case "L": + return it = new f.Point(Ae.x, Ae.y).lerp( + new f.Point(lt[1], lt[2]), + Fe + ), it.angle = Math.atan2(lt[2] - Ae.y, lt[1] - Ae.x), it; + case "C": + return be(Ae, we); + case "Q": + return be(Ae, we); + } + } + function Be(Me) { + var we = [], He = [], Ie, Ae, Fe = f.rePathCommand, $e = "[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*", lt = "(" + $e + ")" + f.commaWsp, it = "([01])" + f.commaWsp + "?", nt = lt + "?" + lt + "?" + lt + it + it + lt + "?(" + $e + ")", ut = new RegExp(nt, "g"), rt, Ke, ze; + if (!Me || !Me.match) + return we; + ze = Me.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi); + for (var qe = 0, ct, ft = ze.length; qe < ft; qe++) { + Ie = ze[qe], Ke = Ie.slice(1).trim(), He.length = 0; + var _t = Ie.charAt(0); + if (ct = [_t], _t.toLowerCase() === "a") + for (var Nt; Nt = ut.exec(Ke); ) + for (var Yt = 1; Yt < Nt.length; Yt++) + He.push(Nt[Yt]); + else + for (; rt = Fe.exec(Ke); ) + He.push(rt[0]); + for (var Yt = 0, tr = He.length; Yt < tr; Yt++) + Ae = parseFloat(He[Yt]), isNaN(Ae) || ct.push(Ae); + var Ct = _[_t.toLowerCase()], hr = E[_t] || _t; + if (ct.length - 1 > Ct) + for (var Er = 1, Fr = ct.length; Er < Fr; Er += Ct) + we.push([_t].concat(ct.slice(Er, Er + Ct))), _t = hr; + else + we.push(ct); + } + return we; + } + function Ue(Me, we) { + var He = [], Ie, Ae = new f.Point(Me[0].x, Me[0].y), Fe = new f.Point(Me[1].x, Me[1].y), $e = Me.length, lt = 1, it = 0, nt = $e > 2; + for (we = we || 0, nt && (lt = Me[2].x < Fe.x ? -1 : Me[2].x === Fe.x ? 0 : 1, it = Me[2].y < Fe.y ? -1 : Me[2].y === Fe.y ? 0 : 1), He.push(["M", Ae.x - lt * we, Ae.y - it * we]), Ie = 1; Ie < $e; Ie++) { + if (!Ae.eq(Fe)) { + var ut = Ae.midPointFrom(Fe); + He.push(["Q", Ae.x, Ae.y, ut.x, ut.y]); + } + Ae = Me[Ie], Ie + 1 < Me.length && (Fe = Me[Ie + 1]); + } + return nt && (lt = Ae.x > Me[Ie - 2].x ? 1 : Ae.x === Me[Ie - 2].x ? 0 : -1, it = Ae.y > Me[Ie - 2].y ? 1 : Ae.y === Me[Ie - 2].y ? 0 : -1), He.push(["L", Ae.x + lt * we, Ae.y + it * we]), He; + } + function Qe(Me, we, He) { + return He && (we = f.util.multiplyTransformMatrices( + we, + [1, 0, 0, 1, -He.x, -He.y] + )), Me.map(function(Ie) { + for (var Ae = Ie.slice(0), Fe = {}, $e = 1; $e < Ie.length - 1; $e += 2) + Fe.x = Ie[$e], Fe.y = Ie[$e + 1], Fe = f.util.transformPoint(Fe, we), Ae[$e] = Fe.x, Ae[$e + 1] = Fe.y; + return Ae; + }); + } + function Re(Me, we, He, Ie, Ae, Fe, $e, lt, it) { + for (var nt = 0, ut = 0, rt, Ke = [], ze = w(lt - Me, it - we, He, Ie, Fe, $e, Ae), qe = 0, ct = ze.length; qe < ct; qe++) + rt = b(nt, ut, ze[qe][1], ze[qe][2], ze[qe][3], ze[qe][4], ze[qe][5], ze[qe][6]), Ke.push({ x: rt[0].x + Me, y: rt[0].y + we }), Ke.push({ x: rt[1].x + Me, y: rt[1].y + we }), nt = ze[qe][5], ut = ze[qe][6]; + return Ke; + } + function Ne(Me, we, He, Ie) { + Ie = Ie.slice(0).unshift("X"); + var Ae = R(we, He, Ie); + Ae.forEach(function(Fe) { + Me.bezierCurveTo.apply(Me, Fe.slice(1)); + }); + } + f.util.joinPath = function(Me) { + return Me.map(function(we) { + return we.join(" "); + }).join(" "); + }, f.util.parsePath = Be, f.util.makePathSimpler = M, f.util.getSmoothPathFromPoints = Ue, f.util.getPathSegmentsInfo = Ve, f.util.getBoundsOfCurve = b, f.util.getPointOnPath = pe, f.util.transformPath = Qe, f.util.fromArcToBeizers = R, f.util.getBoundsOfArc = Re, f.util.drawArc = Ne; + }(), function() { + var S = Array.prototype.slice; + function _(b, R) { + for (var M = S.call(arguments, 2), O = [], P = 0, B = b.length; P < B; P++) + O[P] = M.length ? b[P][R].apply(b[P], M) : b[P][R].call(b[P]); + return O; + } + function E(b, R) { + return x(b, R, function(M, O) { + return M >= O; + }); + } + function I(b, R) { + return x(b, R, function(M, O) { + return M < O; + }); + } + function w(b, R) { + for (var M = b.length; M--; ) + b[M] = R; + return b; + } + function x(b, R, M) { + if (!(!b || b.length === 0)) { + var O = b.length - 1, P = R ? b[O][R] : b[O]; + if (R) + for (; O--; ) + M(b[O][R], P) && (P = b[O][R]); + else + for (; O--; ) + M(b[O], P) && (P = b[O]); + return P; + } + } + f.util.array = { + fill: w, + invoke: _, + min: I, + max: E + }; + }(), function() { + function S(E, I, w) { + if (w) + if (!f.isLikelyNode && I instanceof Element) + E = I; + else if (I instanceof Array) { + E = []; + for (var x = 0, b = I.length; x < b; x++) + E[x] = S({}, I[x], w); + } else if (I && typeof I == "object") + for (var R in I) + R === "canvas" || R === "group" ? E[R] = null : I.hasOwnProperty(R) && (E[R] = S({}, I[R], w)); + else + E = I; + else + for (var R in I) + E[R] = I[R]; + return E; + } + function _(E, I) { + return S({}, E, I); + } + f.util.object = { + extend: S, + clone: _ + }, f.util.object.extend(f.util, f.Observable); + }(), function() { + function S(x) { + return x.replace(/-+(.)?/g, function(b, R) { + return R ? R.toUpperCase() : ""; + }); + } + function _(x, b) { + return x.charAt(0).toUpperCase() + (b ? x.slice(1) : x.slice(1).toLowerCase()); + } + function E(x) { + return x.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(//g, ">"); + } + function I(x) { + var b = 0, R, M = []; + for (b = 0, R; b < x.length; b++) + (R = w(x, b)) !== !1 && M.push(R); + return M; + } + function w(x, b) { + var R = x.charCodeAt(b); + if (isNaN(R)) + return ""; + if (R < 55296 || R > 57343) + return x.charAt(b); + if (55296 <= R && R <= 56319) { + if (x.length <= b + 1) + throw "High surrogate without following low surrogate"; + var M = x.charCodeAt(b + 1); + if (56320 > M || M > 57343) + throw "High surrogate without following low surrogate"; + return x.charAt(b) + x.charAt(b + 1); + } + if (b === 0) + throw "Low surrogate without preceding high surrogate"; + var O = x.charCodeAt(b - 1); + if (55296 > O || O > 56319) + throw "Low surrogate without preceding high surrogate"; + return !1; + } + f.util.string = { + camelize: S, + capitalize: _, + escapeXml: E, + graphemeSplit: I + }; + }(), function() { + var S = Array.prototype.slice, _ = function() { + }, E = function() { + for (var R in { toString: 1 }) + if (R === "toString") + return !1; + return !0; + }(), I = function(R, M, O) { + for (var P in M) + P in R.prototype && typeof R.prototype[P] == "function" && (M[P] + "").indexOf("callSuper") > -1 ? R.prototype[P] = function(B) { + return function() { + var H = this.constructor.superclass; + this.constructor.superclass = O; + var Y = M[B].apply(this, arguments); + if (this.constructor.superclass = H, B !== "initialize") + return Y; + }; + }(P) : R.prototype[P] = M[P], E && (M.toString !== Object.prototype.toString && (R.prototype.toString = M.toString), M.valueOf !== Object.prototype.valueOf && (R.prototype.valueOf = M.valueOf)); + }; + function w() { + } + function x(R) { + for (var M = null, O = this; O.constructor.superclass; ) { + var P = O.constructor.superclass.prototype[R]; + if (O[R] !== P) { + M = P; + break; + } + O = O.constructor.superclass.prototype; + } + return M ? arguments.length > 1 ? M.apply(this, S.call(arguments, 1)) : M.call(this) : console.log("tried to callSuper " + R + ", method not found in prototype chain", this); + } + function b() { + var R = null, M = S.call(arguments, 0); + typeof M[0] == "function" && (R = M.shift()); + function O() { + this.initialize.apply(this, arguments); + } + O.superclass = R, O.subclasses = [], R && (w.prototype = R.prototype, O.prototype = new w(), R.subclasses.push(O)); + for (var P = 0, B = M.length; P < B; P++) + I(O, M[P], R); + return O.prototype.initialize || (O.prototype.initialize = _), O.prototype.constructor = O, O.prototype.callSuper = x, O; + } + f.util.createClass = b; + }(), function() { + var S = !!f.document.createElement("div").attachEvent, _ = ["touchstart", "touchmove", "touchend"]; + f.util.addListener = function(I, w, x, b) { + I && I.addEventListener(w, x, S ? !1 : b); + }, f.util.removeListener = function(I, w, x, b) { + I && I.removeEventListener(w, x, S ? !1 : b); + }; + function E(I) { + var w = I.changedTouches; + return w && w[0] ? w[0] : I; + } + f.util.getPointer = function(I) { + var w = I.target, x = f.util.getScrollLeftTop(w), b = E(I); + return { + x: b.clientX + x.left, + y: b.clientY + x.top + }; + }, f.util.isTouchEvent = function(I) { + return _.indexOf(I.type) > -1 || I.pointerType === "touch"; + }; + }(), function() { + function S(b, R) { + var M = b.style; + if (!M) + return b; + if (typeof R == "string") + return b.style.cssText += ";" + R, R.indexOf("opacity") > -1 ? x(b, R.match(/opacity:\s*(\d?\.?\d*)/)[1]) : b; + for (var O in R) + if (O === "opacity") + x(b, R[O]); + else { + var P = O === "float" || O === "cssFloat" ? typeof M.styleFloat == "undefined" ? "cssFloat" : "styleFloat" : O; + M[P] = R[O]; + } + return b; + } + var _ = f.document.createElement("div"), E = typeof _.style.opacity == "string", I = typeof _.style.filter == "string", w = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, x = function(b) { + return b; + }; + E ? x = function(b, R) { + return b.style.opacity = R, b; + } : I && (x = function(b, R) { + var M = b.style; + return b.currentStyle && !b.currentStyle.hasLayout && (M.zoom = 1), w.test(M.filter) ? (R = R >= 0.9999 ? "" : "alpha(opacity=" + R * 100 + ")", M.filter = M.filter.replace(w, R)) : M.filter += " alpha(opacity=" + R * 100 + ")", b; + }), f.util.setStyle = S; + }(), function() { + var S = Array.prototype.slice; + function _(Y) { + return typeof Y == "string" ? f.document.getElementById(Y) : Y; + } + var E, I = function(Y) { + return S.call(Y, 0); + }; + try { + E = I(f.document.childNodes) instanceof Array; + } catch (Y) { + } + E || (I = function(Y) { + for (var X = new Array(Y.length), ee = Y.length; ee--; ) + X[ee] = Y[ee]; + return X; + }); + function w(Y, X) { + var ee = f.document.createElement(Y); + for (var ae in X) + ae === "class" ? ee.className = X[ae] : ae === "for" ? ee.htmlFor = X[ae] : ee.setAttribute(ae, X[ae]); + return ee; + } + function x(Y, X) { + Y && (" " + Y.className + " ").indexOf(" " + X + " ") === -1 && (Y.className += (Y.className ? " " : "") + X); + } + function b(Y, X, ee) { + return typeof X == "string" && (X = w(X, ee)), Y.parentNode && Y.parentNode.replaceChild(X, Y), X.appendChild(Y), X; + } + function R(Y) { + for (var X = 0, ee = 0, ae = f.document.documentElement, J = f.document.body || { + scrollLeft: 0, + scrollTop: 0 + }; Y && (Y.parentNode || Y.host) && (Y = Y.parentNode || Y.host, Y === f.document ? (X = J.scrollLeft || ae.scrollLeft || 0, ee = J.scrollTop || ae.scrollTop || 0) : (X += Y.scrollLeft || 0, ee += Y.scrollTop || 0), !(Y.nodeType === 1 && Y.style.position === "fixed")); ) + ; + return { left: X, top: ee }; + } + function M(Y) { + var X, ee = Y && Y.ownerDocument, ae = { left: 0, top: 0 }, J = { left: 0, top: 0 }, ne, fe = { + borderLeftWidth: "left", + borderTopWidth: "top", + paddingLeft: "left", + paddingTop: "top" + }; + if (!ee) + return J; + for (var de in fe) + J[fe[de]] += parseInt(O(Y, de), 10) || 0; + return X = ee.documentElement, typeof Y.getBoundingClientRect != "undefined" && (ae = Y.getBoundingClientRect()), ne = R(Y), { + left: ae.left + ne.left - (X.clientLeft || 0) + J.left, + top: ae.top + ne.top - (X.clientTop || 0) + J.top + }; + } + var O; + f.document.defaultView && f.document.defaultView.getComputedStyle ? O = function(Y, X) { + var ee = f.document.defaultView.getComputedStyle(Y, null); + return ee ? ee[X] : void 0; + } : O = function(Y, X) { + var ee = Y.style[X]; + return !ee && Y.currentStyle && (ee = Y.currentStyle[X]), ee; + }, function() { + var Y = f.document.documentElement.style, X = "userSelect" in Y ? "userSelect" : "MozUserSelect" in Y ? "MozUserSelect" : "WebkitUserSelect" in Y ? "WebkitUserSelect" : "KhtmlUserSelect" in Y ? "KhtmlUserSelect" : ""; + function ee(J) { + return typeof J.onselectstart != "undefined" && (J.onselectstart = f.util.falseFunction), X ? J.style[X] = "none" : typeof J.unselectable == "string" && (J.unselectable = "on"), J; + } + function ae(J) { + return typeof J.onselectstart != "undefined" && (J.onselectstart = null), X ? J.style[X] = "" : typeof J.unselectable == "string" && (J.unselectable = ""), J; + } + f.util.makeElementUnselectable = ee, f.util.makeElementSelectable = ae; + }(); + function P(Y) { + var X = f.jsdomImplForWrapper(Y); + return X._canvas || X._image; + } + function B(Y) { + if (f.isLikelyNode) { + var X = f.jsdomImplForWrapper(Y); + X && (X._image = null, X._canvas = null, X._currentSrc = null, X._attributes = null, X._classList = null); + } + } + function H(Y, X) { + Y.imageSmoothingEnabled = Y.imageSmoothingEnabled || Y.webkitImageSmoothingEnabled || Y.mozImageSmoothingEnabled || Y.msImageSmoothingEnabled || Y.oImageSmoothingEnabled, Y.imageSmoothingEnabled = X; + } + f.util.setImageSmoothing = H, f.util.getById = _, f.util.toArray = I, f.util.addClass = x, f.util.makeElement = w, f.util.wrapElement = b, f.util.getScrollLeftTop = R, f.util.getElementOffset = M, f.util.getNodeCanvas = P, f.util.cleanUpJsdomNode = B; + }(), function() { + function S(I, w) { + return I + (/\?/.test(I) ? "&" : "?") + w; + } + function _() { + } + function E(I, w) { + w || (w = {}); + var x = w.method ? w.method.toUpperCase() : "GET", b = w.onComplete || function() { + }, R = new f.window.XMLHttpRequest(), M = w.body || w.parameters; + return R.onreadystatechange = function() { + R.readyState === 4 && (b(R), R.onreadystatechange = _); + }, x === "GET" && (M = null, typeof w.parameters == "string" && (I = S(I, w.parameters))), R.open(x, I, !0), (x === "POST" || x === "PUT") && R.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), R.send(M), R; + } + f.util.request = E; + }(), f.log = console.log, f.warn = console.warn, function() { + function S() { + return !1; + } + function _(R, M, O, P) { + return -O * Math.cos(R / P * (Math.PI / 2)) + O + M; + } + function E(R) { + var M = !1; + return x(function(O) { + R || (R = {}); + var P = O || +/* @__PURE__ */ new Date(), B = R.duration || 500, H = P + B, Y, X = R.onChange || S, ee = R.abort || S, ae = R.onComplete || S, J = R.easing || _, ne = "startValue" in R ? R.startValue : 0, fe = "endValue" in R ? R.endValue : 100, de = R.byValue || fe - ne; + R.onStart && R.onStart(), function Te(be) { + Y = be || +/* @__PURE__ */ new Date(); + var Ve = Y > H ? B : Y - P, pe = Ve / B, Be = J(Ve, ne, de, B), Ue = Math.abs((Be - ne) / de); + if (!M) { + if (ee(Be, Ue, pe)) { + ae(fe, 1, 1); + return; + } + if (Y > H) { + X(fe, 1, 1), ae(fe, 1, 1); + return; + } else + X(Be, Ue, pe), x(Te); + } + }(P); + }), function() { + M = !0; + }; + } + var I = f.window.requestAnimationFrame || f.window.webkitRequestAnimationFrame || f.window.mozRequestAnimationFrame || f.window.oRequestAnimationFrame || f.window.msRequestAnimationFrame || function(R) { + return f.window.setTimeout(R, 1e3 / 60); + }, w = f.window.cancelAnimationFrame || f.window.clearTimeout; + function x() { + return I.apply(f.window, arguments); + } + function b() { + return w.apply(f.window, arguments); + } + f.util.animate = E, f.util.requestAnimFrame = x, f.util.cancelAnimFrame = b; + }(), function() { + function S(E, I, w) { + var x = "rgba(" + parseInt(E[0] + w * (I[0] - E[0]), 10) + "," + parseInt(E[1] + w * (I[1] - E[1]), 10) + "," + parseInt(E[2] + w * (I[2] - E[2]), 10); + return x += "," + (E && I ? parseFloat(E[3] + w * (I[3] - E[3])) : 1), x += ")", x; + } + function _(E, I, w, x) { + var b = new f.Color(E).getSource(), R = new f.Color(I).getSource(), M = x.onComplete, O = x.onChange; + return x = x || {}, f.util.animate(f.util.object.extend(x, { + duration: w || 500, + startValue: b, + endValue: R, + byValue: R, + easing: function(P, B, H, Y) { + var X = x.colorEasing ? x.colorEasing(P, Y) : 1 - Math.cos(P / Y * (Math.PI / 2)); + return S(B, H, X); + }, + // has to take in account for color restoring; + onComplete: function(P, B, H) { + if (M) + return M( + S(R, R, 0), + B, + H + ); + }, + onChange: function(P, B, H) { + if (O) { + if (Array.isArray(P)) + return O( + S(P, P, 0), + B, + H + ); + O(P, B, H); + } + } + })); + } + f.util.animateColor = _; + }(), function() { + function S(Re, Ne, Me, we) { + return Re < Math.abs(Ne) ? (Re = Ne, we = Me / 4) : Ne === 0 && Re === 0 ? we = Me / (2 * Math.PI) * Math.asin(1) : we = Me / (2 * Math.PI) * Math.asin(Ne / Re), { a: Re, c: Ne, p: Me, s: we }; + } + function _(Re, Ne, Me) { + return Re.a * Math.pow(2, 10 * (Ne -= 1)) * Math.sin((Ne * Me - Re.s) * (2 * Math.PI) / Re.p); + } + function E(Re, Ne, Me, we) { + return Me * ((Re = Re / we - 1) * Re * Re + 1) + Ne; + } + function I(Re, Ne, Me, we) { + return Re /= we / 2, Re < 1 ? Me / 2 * Re * Re * Re + Ne : Me / 2 * ((Re -= 2) * Re * Re + 2) + Ne; + } + function w(Re, Ne, Me, we) { + return Me * (Re /= we) * Re * Re * Re + Ne; + } + function x(Re, Ne, Me, we) { + return -Me * ((Re = Re / we - 1) * Re * Re * Re - 1) + Ne; + } + function b(Re, Ne, Me, we) { + return Re /= we / 2, Re < 1 ? Me / 2 * Re * Re * Re * Re + Ne : -Me / 2 * ((Re -= 2) * Re * Re * Re - 2) + Ne; + } + function R(Re, Ne, Me, we) { + return Me * (Re /= we) * Re * Re * Re * Re + Ne; + } + function M(Re, Ne, Me, we) { + return Me * ((Re = Re / we - 1) * Re * Re * Re * Re + 1) + Ne; + } + function O(Re, Ne, Me, we) { + return Re /= we / 2, Re < 1 ? Me / 2 * Re * Re * Re * Re * Re + Ne : Me / 2 * ((Re -= 2) * Re * Re * Re * Re + 2) + Ne; + } + function P(Re, Ne, Me, we) { + return -Me * Math.cos(Re / we * (Math.PI / 2)) + Me + Ne; + } + function B(Re, Ne, Me, we) { + return Me * Math.sin(Re / we * (Math.PI / 2)) + Ne; + } + function H(Re, Ne, Me, we) { + return -Me / 2 * (Math.cos(Math.PI * Re / we) - 1) + Ne; + } + function Y(Re, Ne, Me, we) { + return Re === 0 ? Ne : Me * Math.pow(2, 10 * (Re / we - 1)) + Ne; + } + function X(Re, Ne, Me, we) { + return Re === we ? Ne + Me : Me * (-Math.pow(2, -10 * Re / we) + 1) + Ne; + } + function ee(Re, Ne, Me, we) { + return Re === 0 ? Ne : Re === we ? Ne + Me : (Re /= we / 2, Re < 1 ? Me / 2 * Math.pow(2, 10 * (Re - 1)) + Ne : Me / 2 * (-Math.pow(2, -10 * --Re) + 2) + Ne); + } + function ae(Re, Ne, Me, we) { + return -Me * (Math.sqrt(1 - (Re /= we) * Re) - 1) + Ne; + } + function J(Re, Ne, Me, we) { + return Me * Math.sqrt(1 - (Re = Re / we - 1) * Re) + Ne; + } + function ne(Re, Ne, Me, we) { + return Re /= we / 2, Re < 1 ? -Me / 2 * (Math.sqrt(1 - Re * Re) - 1) + Ne : Me / 2 * (Math.sqrt(1 - (Re -= 2) * Re) + 1) + Ne; + } + function fe(Re, Ne, Me, we) { + var He = 1.70158, Ie = 0, Ae = Me; + if (Re === 0) + return Ne; + if (Re /= we, Re === 1) + return Ne + Me; + Ie || (Ie = we * 0.3); + var Fe = S(Ae, Me, Ie, He); + return -_(Fe, Re, we) + Ne; + } + function de(Re, Ne, Me, we) { + var He = 1.70158, Ie = 0, Ae = Me; + if (Re === 0) + return Ne; + if (Re /= we, Re === 1) + return Ne + Me; + Ie || (Ie = we * 0.3); + var Fe = S(Ae, Me, Ie, He); + return Fe.a * Math.pow(2, -10 * Re) * Math.sin((Re * we - Fe.s) * (2 * Math.PI) / Fe.p) + Fe.c + Ne; + } + function Te(Re, Ne, Me, we) { + var He = 1.70158, Ie = 0, Ae = Me; + if (Re === 0) + return Ne; + if (Re /= we / 2, Re === 2) + return Ne + Me; + Ie || (Ie = we * 0.44999999999999996); + var Fe = S(Ae, Me, Ie, He); + return Re < 1 ? -0.5 * _(Fe, Re, we) + Ne : Fe.a * Math.pow(2, -10 * (Re -= 1)) * Math.sin((Re * we - Fe.s) * (2 * Math.PI) / Fe.p) * 0.5 + Fe.c + Ne; + } + function be(Re, Ne, Me, we, He) { + return He === void 0 && (He = 1.70158), Me * (Re /= we) * Re * ((He + 1) * Re - He) + Ne; + } + function Ve(Re, Ne, Me, we, He) { + return He === void 0 && (He = 1.70158), Me * ((Re = Re / we - 1) * Re * ((He + 1) * Re + He) + 1) + Ne; + } + function pe(Re, Ne, Me, we, He) { + return He === void 0 && (He = 1.70158), Re /= we / 2, Re < 1 ? Me / 2 * (Re * Re * (((He *= 1.525) + 1) * Re - He)) + Ne : Me / 2 * ((Re -= 2) * Re * (((He *= 1.525) + 1) * Re + He) + 2) + Ne; + } + function Be(Re, Ne, Me, we) { + return Me - Ue(we - Re, 0, Me, we) + Ne; + } + function Ue(Re, Ne, Me, we) { + return (Re /= we) < 0.36363636363636365 ? Me * (7.5625 * Re * Re) + Ne : Re < 0.7272727272727273 ? Me * (7.5625 * (Re -= 0.5454545454545454) * Re + 0.75) + Ne : Re < 0.9090909090909091 ? Me * (7.5625 * (Re -= 0.8181818181818182) * Re + 0.9375) + Ne : Me * (7.5625 * (Re -= 0.9545454545454546) * Re + 0.984375) + Ne; + } + function Qe(Re, Ne, Me, we) { + return Re < we / 2 ? Be(Re * 2, 0, Me, we) * 0.5 + Ne : Ue(Re * 2 - we, 0, Me, we) * 0.5 + Me * 0.5 + Ne; + } + f.util.ease = { + /** + * Quadratic easing in + * @memberOf fabric.util.ease + */ + easeInQuad: function(Re, Ne, Me, we) { + return Me * (Re /= we) * Re + Ne; + }, + /** + * Quadratic easing out + * @memberOf fabric.util.ease + */ + easeOutQuad: function(Re, Ne, Me, we) { + return -Me * (Re /= we) * (Re - 2) + Ne; + }, + /** + * Quadratic easing in and out + * @memberOf fabric.util.ease + */ + easeInOutQuad: function(Re, Ne, Me, we) { + return Re /= we / 2, Re < 1 ? Me / 2 * Re * Re + Ne : -Me / 2 * (--Re * (Re - 2) - 1) + Ne; + }, + /** + * Cubic easing in + * @memberOf fabric.util.ease + */ + easeInCubic: function(Re, Ne, Me, we) { + return Me * (Re /= we) * Re * Re + Ne; + }, + easeOutCubic: E, + easeInOutCubic: I, + easeInQuart: w, + easeOutQuart: x, + easeInOutQuart: b, + easeInQuint: R, + easeOutQuint: M, + easeInOutQuint: O, + easeInSine: P, + easeOutSine: B, + easeInOutSine: H, + easeInExpo: Y, + easeOutExpo: X, + easeInOutExpo: ee, + easeInCirc: ae, + easeOutCirc: J, + easeInOutCirc: ne, + easeInElastic: fe, + easeOutElastic: de, + easeInOutElastic: Te, + easeInBack: be, + easeOutBack: Ve, + easeInOutBack: pe, + easeInBounce: Be, + easeOutBounce: Ue, + easeInOutBounce: Qe + }; + }(), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.util.object.clone, w = _.util.toFixed, x = _.util.parseUnit, b = _.util.multiplyTransformMatrices, R = [ + "path", + "circle", + "polygon", + "polyline", + "ellipse", + "rect", + "line", + "image", + "text" + ], M = ["symbol", "image", "marker", "pattern", "view", "svg"], O = ["pattern", "defs", "symbol", "metadata", "clipPath", "mask", "desc"], P = ["symbol", "g", "a", "svg", "clipPath", "defs"], B = { + cx: "left", + x: "left", + r: "radius", + cy: "top", + y: "top", + display: "visible", + visibility: "visible", + transform: "transformMatrix", + "fill-opacity": "fillOpacity", + "fill-rule": "fillRule", + "font-family": "fontFamily", + "font-size": "fontSize", + "font-style": "fontStyle", + "font-weight": "fontWeight", + "letter-spacing": "charSpacing", + "paint-order": "paintFirst", + "stroke-dasharray": "strokeDashArray", + "stroke-dashoffset": "strokeDashOffset", + "stroke-linecap": "strokeLineCap", + "stroke-linejoin": "strokeLineJoin", + "stroke-miterlimit": "strokeMiterLimit", + "stroke-opacity": "strokeOpacity", + "stroke-width": "strokeWidth", + "text-decoration": "textDecoration", + "text-anchor": "textAnchor", + opacity: "opacity", + "clip-path": "clipPath", + "clip-rule": "clipRule", + "vector-effect": "strokeUniform", + "image-rendering": "imageSmoothing" + }, H = { + stroke: "strokeOpacity", + fill: "fillOpacity" + }, Y = "font-size", X = "clip-path"; + _.svgValidTagNamesRegEx = J(R), _.svgViewBoxElementsRegEx = J(M), _.svgInvalidAncestorsRegEx = J(O), _.svgValidParentsRegEx = J(P), _.cssRules = {}, _.gradientDefs = {}, _.clipPaths = {}; + function ee(Ie) { + return Ie in B ? B[Ie] : Ie; + } + function ae(Ie, Ae, Fe, $e) { + var lt = Object.prototype.toString.call(Ae) === "[object Array]", it; + if ((Ie === "fill" || Ie === "stroke") && Ae === "none") + Ae = ""; + else { + if (Ie === "strokeUniform") + return Ae === "non-scaling-stroke"; + if (Ie === "strokeDashArray") + Ae === "none" ? Ae = null : Ae = Ae.replace(/,/g, " ").split(/\s+/).map(parseFloat); + else if (Ie === "transformMatrix") + Fe && Fe.transformMatrix ? Ae = b( + Fe.transformMatrix, + _.parseTransformAttribute(Ae) + ) : Ae = _.parseTransformAttribute(Ae); + else if (Ie === "visible") + Ae = Ae !== "none" && Ae !== "hidden", Fe && Fe.visible === !1 && (Ae = !1); + else if (Ie === "opacity") + Ae = parseFloat(Ae), Fe && typeof Fe.opacity != "undefined" && (Ae *= Fe.opacity); + else if (Ie === "textAnchor") + Ae = Ae === "start" ? "left" : Ae === "end" ? "right" : "center"; + else if (Ie === "charSpacing") + it = x(Ae, $e) / $e * 1e3; + else if (Ie === "paintFirst") { + var nt = Ae.indexOf("fill"), ut = Ae.indexOf("stroke"), Ae = "fill"; + (nt > -1 && ut > -1 && ut < nt || nt === -1 && ut > -1) && (Ae = "stroke"); + } else { + if (Ie === "href" || Ie === "xlink:href" || Ie === "font") + return Ae; + if (Ie === "imageSmoothing") + return Ae === "optimizeQuality"; + it = lt ? Ae.map(x) : x(Ae, $e); + } + } + return !lt && isNaN(it) ? Ae : it; + } + function J(Ie) { + return new RegExp("^(" + Ie.join("|") + ")\\b", "i"); + } + function ne(Ie) { + for (var Ae in H) + if (!(typeof Ie[H[Ae]] == "undefined" || Ie[Ae] === "")) { + if (typeof Ie[Ae] == "undefined") { + if (!_.Object.prototype[Ae]) + continue; + Ie[Ae] = _.Object.prototype[Ae]; + } + if (Ie[Ae].indexOf("url(") !== 0) { + var Fe = new _.Color(Ie[Ae]); + Ie[Ae] = Fe.setAlpha(w(Fe.getAlpha() * Ie[H[Ae]], 2)).toRgba(); + } + } + return Ie; + } + function fe(Ie, Ae) { + var Fe, $e = [], lt, it, nt; + for (it = 0, nt = Ae.length; it < nt; it++) + Fe = Ae[it], lt = Ie.getElementsByTagName(Fe), $e = $e.concat(Array.prototype.slice.call(lt)); + return $e; + } + _.parseTransformAttribute = function() { + function Ie(Ct, hr) { + var Er = _.util.cos(hr[0]), Fr = _.util.sin(hr[0]), Dn = 0, hn = 0; + hr.length === 3 && (Dn = hr[1], hn = hr[2]), Ct[0] = Er, Ct[1] = Fr, Ct[2] = -Fr, Ct[3] = Er, Ct[4] = Dn - (Er * Dn - Fr * hn), Ct[5] = hn - (Fr * Dn + Er * hn); + } + function Ae(Ct, hr) { + var Er = hr[0], Fr = hr.length === 2 ? hr[1] : hr[0]; + Ct[0] = Er, Ct[3] = Fr; + } + function Fe(Ct, hr, Er) { + Ct[Er] = Math.tan(_.util.degreesToRadians(hr[0])); + } + function $e(Ct, hr) { + Ct[4] = hr[0], hr.length === 2 && (Ct[5] = hr[1]); + } + var lt = _.iMatrix, it = _.reNum, nt = _.commaWsp, ut = "(?:(skewX)\\s*\\(\\s*(" + it + ")\\s*\\))", rt = "(?:(skewY)\\s*\\(\\s*(" + it + ")\\s*\\))", Ke = "(?:(rotate)\\s*\\(\\s*(" + it + ")(?:" + nt + "(" + it + ")" + nt + "(" + it + "))?\\s*\\))", ze = "(?:(scale)\\s*\\(\\s*(" + it + ")(?:" + nt + "(" + it + "))?\\s*\\))", qe = "(?:(translate)\\s*\\(\\s*(" + it + ")(?:" + nt + "(" + it + "))?\\s*\\))", ct = "(?:(matrix)\\s*\\(\\s*(" + it + ")" + nt + "(" + it + ")" + nt + "(" + it + ")" + nt + "(" + it + ")" + nt + "(" + it + ")" + nt + "(" + it + ")\\s*\\))", ft = "(?:" + ct + "|" + qe + "|" + ze + "|" + Ke + "|" + ut + "|" + rt + ")", _t = "(?:" + ft + "(?:" + nt + "*" + ft + ")*)", Nt = "^\\s*(?:" + _t + "?)\\s*$", Yt = new RegExp(Nt), tr = new RegExp(ft, "g"); + return function(Ct) { + var hr = lt.concat(), Er = []; + if (!Ct || Ct && !Yt.test(Ct)) + return hr; + Ct.replace(tr, function(Dn) { + var hn = new RegExp(ft).exec(Dn).filter(function(dn) { + return !!dn; + }), Jn = hn[1], nn = hn.slice(2).map(parseFloat); + switch (Jn) { + case "translate": + $e(hr, nn); + break; + case "rotate": + nn[0] = _.util.degreesToRadians(nn[0]), Ie(hr, nn); + break; + case "scale": + Ae(hr, nn); + break; + case "skewX": + Fe(hr, nn, 2); + break; + case "skewY": + Fe(hr, nn, 1); + break; + case "matrix": + hr = nn; + break; + } + Er.push(hr.concat()), hr = lt.concat(); + }); + for (var Fr = Er[0]; Er.length > 1; ) + Er.shift(), Fr = _.util.multiplyTransformMatrices(Fr, Er[0]); + return Fr; + }; + }(); + function de(Ie, Ae) { + var Fe, $e; + Ie.replace(/;\s*$/, "").split(";").forEach(function(lt) { + var it = lt.split(":"); + Fe = it[0].trim().toLowerCase(), $e = it[1].trim(), Ae[Fe] = $e; + }); + } + function Te(Ie, Ae) { + var Fe, $e; + for (var lt in Ie) + typeof Ie[lt] != "undefined" && (Fe = lt.toLowerCase(), $e = Ie[lt], Ae[Fe] = $e); + } + function be(Ie, Ae) { + var Fe = {}; + for (var $e in _.cssRules[Ae]) + if (Ve(Ie, $e.split(" "))) + for (var lt in _.cssRules[Ae][$e]) + Fe[lt] = _.cssRules[Ae][$e][lt]; + return Fe; + } + function Ve(Ie, Ae) { + var Fe, $e = !0; + return Fe = Be(Ie, Ae.pop()), Fe && Ae.length && ($e = pe(Ie, Ae)), Fe && $e && Ae.length === 0; + } + function pe(Ie, Ae) { + for (var Fe, $e = !0; Ie.parentNode && Ie.parentNode.nodeType === 1 && Ae.length; ) + $e && (Fe = Ae.pop()), Ie = Ie.parentNode, $e = Be(Ie, Fe); + return Ae.length === 0; + } + function Be(Ie, Ae) { + var Fe = Ie.nodeName, $e = Ie.getAttribute("class"), lt = Ie.getAttribute("id"), it, nt; + if (it = new RegExp("^" + Fe, "i"), Ae = Ae.replace(it, ""), lt && Ae.length && (it = new RegExp("#" + lt + "(?![a-zA-Z\\-]+)", "i"), Ae = Ae.replace(it, "")), $e && Ae.length) + for ($e = $e.split(" "), nt = $e.length; nt--; ) + it = new RegExp("\\." + $e[nt] + "(?![a-zA-Z\\-]+)", "i"), Ae = Ae.replace(it, ""); + return Ae.length === 0; + } + function Ue(Ie, Ae) { + var Fe; + if (Ie.getElementById && (Fe = Ie.getElementById(Ae)), Fe) + return Fe; + var $e, lt, it, nt = Ie.getElementsByTagName("*"); + for (lt = 0, it = nt.length; lt < it; lt++) + if ($e = nt[lt], Ae === $e.getAttribute("id")) + return $e; + } + function Qe(Ie) { + for (var Ae = fe(Ie, ["use", "svg:use"]), Fe = 0; Ae.length && Fe < Ae.length; ) { + var $e = Ae[Fe], lt = $e.getAttribute("xlink:href") || $e.getAttribute("href"); + if (lt === null) + return; + var it = lt.substr(1), nt = $e.getAttribute("x") || 0, ut = $e.getAttribute("y") || 0, rt = Ue(Ie, it).cloneNode(!0), Ke = (rt.getAttribute("transform") || "") + " translate(" + nt + ", " + ut + ")", ze, qe = Ae.length, ct, ft, _t, Nt, Yt = _.svgNS; + if (Ne(rt), /^svg$/i.test(rt.nodeName)) { + var tr = rt.ownerDocument.createElementNS(Yt, "g"); + for (ft = 0, _t = rt.attributes, Nt = _t.length; ft < Nt; ft++) + ct = _t.item(ft), tr.setAttributeNS(Yt, ct.nodeName, ct.nodeValue); + for (; rt.firstChild; ) + tr.appendChild(rt.firstChild); + rt = tr; + } + for (ft = 0, _t = $e.attributes, Nt = _t.length; ft < Nt; ft++) + ct = _t.item(ft), !(ct.nodeName === "x" || ct.nodeName === "y" || ct.nodeName === "xlink:href" || ct.nodeName === "href") && (ct.nodeName === "transform" ? Ke = ct.nodeValue + " " + Ke : rt.setAttribute(ct.nodeName, ct.nodeValue)); + rt.setAttribute("transform", Ke), rt.setAttribute("instantiated_by_use", "1"), rt.removeAttribute("id"), ze = $e.parentNode, ze.replaceChild(rt, $e), Ae.length === qe && Fe++; + } + } + var Re = new RegExp( + "^\\s*(" + _.reNum + "+)\\s*,?\\s*(" + _.reNum + "+)\\s*,?\\s*(" + _.reNum + "+)\\s*,?\\s*(" + _.reNum + "+)\\s*$" + ); + function Ne(Ie) { + if (!_.svgViewBoxElementsRegEx.test(Ie.nodeName)) + return {}; + var Ae = Ie.getAttribute("viewBox"), Fe = 1, $e = 1, lt = 0, it = 0, nt, ut, rt, Ke, ze = Ie.getAttribute("width"), qe = Ie.getAttribute("height"), ct = Ie.getAttribute("x") || 0, ft = Ie.getAttribute("y") || 0, _t = Ie.getAttribute("preserveAspectRatio") || "", Nt = !Ae || !(Ae = Ae.match(Re)), Yt = !ze || !qe || ze === "100%" || qe === "100%", tr = Nt && Yt, Ct = {}, hr = "", Er = 0, Fr = 0; + if (Ct.width = 0, Ct.height = 0, Ct.toBeParsed = tr, Nt && (ct || ft) && Ie.parentNode && Ie.parentNode.nodeName !== "#document" && (hr = " translate(" + x(ct) + " " + x(ft) + ") ", rt = (Ie.getAttribute("transform") || "") + hr, Ie.setAttribute("transform", rt), Ie.removeAttribute("x"), Ie.removeAttribute("y")), tr) + return Ct; + if (Nt) + return Ct.width = x(ze), Ct.height = x(qe), Ct; + if (lt = -parseFloat(Ae[1]), it = -parseFloat(Ae[2]), nt = parseFloat(Ae[3]), ut = parseFloat(Ae[4]), Ct.minX = lt, Ct.minY = it, Ct.viewBoxWidth = nt, Ct.viewBoxHeight = ut, Yt ? (Ct.width = nt, Ct.height = ut) : (Ct.width = x(ze), Ct.height = x(qe), Fe = Ct.width / nt, $e = Ct.height / ut), _t = _.util.parsePreserveAspectRatioAttribute(_t), _t.alignX !== "none" && (_t.meetOrSlice === "meet" && ($e = Fe = Fe > $e ? $e : Fe), _t.meetOrSlice === "slice" && ($e = Fe = Fe > $e ? Fe : $e), Er = Ct.width - nt * Fe, Fr = Ct.height - ut * Fe, _t.alignX === "Mid" && (Er /= 2), _t.alignY === "Mid" && (Fr /= 2), _t.alignX === "Min" && (Er = 0), _t.alignY === "Min" && (Fr = 0)), Fe === 1 && $e === 1 && lt === 0 && it === 0 && ct === 0 && ft === 0) + return Ct; + if ((ct || ft) && Ie.parentNode.nodeName !== "#document" && (hr = " translate(" + x(ct) + " " + x(ft) + ") "), rt = hr + " matrix(" + Fe + " 0 0 " + $e + " " + (lt * Fe + Er) + " " + (it * $e + Fr) + ") ", Ie.nodeName === "svg") { + for (Ke = Ie.ownerDocument.createElementNS(_.svgNS, "g"); Ie.firstChild; ) + Ke.appendChild(Ie.firstChild); + Ie.appendChild(Ke); + } else + Ke = Ie, Ke.removeAttribute("x"), Ke.removeAttribute("y"), rt = Ke.getAttribute("transform") + rt; + return Ke.setAttribute("transform", rt), Ct; + } + function Me(Ie, Ae) { + for (; Ie && (Ie = Ie.parentNode); ) + if (Ie.nodeName && Ae.test(Ie.nodeName.replace("svg:", "")) && !Ie.getAttribute("instantiated_by_use")) + return !0; + return !1; + } + _.parseSVGDocument = function(Ie, Ae, Fe, $e) { + if (Ie) { + Qe(Ie); + var lt = _.Object.__uid++, it, nt, ut = Ne(Ie), rt = _.util.toArray(Ie.getElementsByTagName("*")); + if (ut.crossOrigin = $e && $e.crossOrigin, ut.svgUid = lt, rt.length === 0 && _.isLikelyNode) { + rt = Ie.selectNodes('//*[name(.)!="svg"]'); + var Ke = []; + for (it = 0, nt = rt.length; it < nt; it++) + Ke[it] = rt[it]; + rt = Ke; + } + var ze = rt.filter(function(ct) { + return Ne(ct), _.svgValidTagNamesRegEx.test(ct.nodeName.replace("svg:", "")) && !Me(ct, _.svgInvalidAncestorsRegEx); + }); + if (!ze || ze && !ze.length) { + Ae && Ae([], {}); + return; + } + var qe = {}; + rt.filter(function(ct) { + return ct.nodeName.replace("svg:", "") === "clipPath"; + }).forEach(function(ct) { + var ft = ct.getAttribute("id"); + qe[ft] = _.util.toArray(ct.getElementsByTagName("*")).filter(function(_t) { + return _.svgValidTagNamesRegEx.test(_t.nodeName.replace("svg:", "")); + }); + }), _.gradientDefs[lt] = _.getGradientDefs(Ie), _.cssRules[lt] = _.getCSSRules(Ie), _.clipPaths[lt] = qe, _.parseElements(ze, function(ct, ft) { + Ae && (Ae(ct, ut, ft, rt), delete _.gradientDefs[lt], delete _.cssRules[lt], delete _.clipPaths[lt]); + }, I(ut), Fe, $e); + } + }; + function we(Ie, Ae) { + var Fe = ["gradientTransform", "x1", "x2", "y1", "y2", "gradientUnits", "cx", "cy", "r", "fx", "fy"], $e = "xlink:href", lt = Ae.getAttribute($e).substr(1), it = Ue(Ie, lt); + if (it && it.getAttribute($e) && we(Ie, it), Fe.forEach(function(ut) { + it && !Ae.hasAttribute(ut) && it.hasAttribute(ut) && Ae.setAttribute(ut, it.getAttribute(ut)); + }), !Ae.children.length) + for (var nt = it.cloneNode(!0); nt.firstChild; ) + Ae.appendChild(nt.firstChild); + Ae.removeAttribute($e); + } + var He = new RegExp( + "(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(" + _.reNum + "(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|" + _.reNum + "))?\\s+(.*)" + ); + E(_, { + /** + * Parses a short font declaration, building adding its properties to a style object + * @static + * @function + * @memberOf fabric + * @param {String} value font declaration + * @param {Object} oStyle definition + */ + parseFontDeclaration: function(Ie, Ae) { + var Fe = Ie.match(He); + if (Fe) { + var $e = Fe[1], lt = Fe[3], it = Fe[4], nt = Fe[5], ut = Fe[6]; + $e && (Ae.fontStyle = $e), lt && (Ae.fontWeight = isNaN(parseFloat(lt)) ? lt : parseFloat(lt)), it && (Ae.fontSize = x(it)), ut && (Ae.fontFamily = ut), nt && (Ae.lineHeight = nt === "normal" ? 1 : nt); + } + }, + /** + * Parses an SVG document, returning all of the gradient declarations found in it + * @static + * @function + * @memberOf fabric + * @param {SVGDocument} doc SVG document to parse + * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element + */ + getGradientDefs: function(Ie) { + var Ae = [ + "linearGradient", + "radialGradient", + "svg:linearGradient", + "svg:radialGradient" + ], Fe = fe(Ie, Ae), $e, lt = 0, it = {}; + for (lt = Fe.length; lt--; ) + $e = Fe[lt], $e.getAttribute("xlink:href") && we(Ie, $e), it[$e.getAttribute("id")] = $e; + return it; + }, + /** + * Returns an object of attributes' name/value, given element and an array of attribute names; + * Parses parent "g" nodes recursively upwards. + * @static + * @memberOf fabric + * @param {DOMElement} element Element to parse + * @param {Array} attributes Array of attributes to parse + * @return {Object} object containing parsed attributes' names/values + */ + parseAttributes: function(Ie, Ae, Fe) { + if (Ie) { + var $e, lt = {}, it, nt; + typeof Fe == "undefined" && (Fe = Ie.getAttribute("svgUid")), Ie.parentNode && _.svgValidParentsRegEx.test(Ie.parentNode.nodeName) && (lt = _.parseAttributes(Ie.parentNode, Ae, Fe)); + var ut = Ae.reduce(function(_t, Nt) { + return $e = Ie.getAttribute(Nt), $e && (_t[Nt] = $e), _t; + }, {}), rt = E( + be(Ie, Fe), + _.parseStyleAttribute(Ie) + ); + ut = E( + ut, + rt + ), rt[X] && Ie.setAttribute(X, rt[X]), it = nt = lt.fontSize || _.Text.DEFAULT_SVG_FONT_SIZE, ut[Y] && (ut[Y] = it = x(ut[Y], nt)); + var Ke, ze, qe = {}; + for (var ct in ut) + Ke = ee(ct), ze = ae(Ke, ut[ct], lt, it), qe[Ke] = ze; + qe && qe.font && _.parseFontDeclaration(qe.font, qe); + var ft = E(lt, qe); + return _.svgValidParentsRegEx.test(Ie.nodeName) ? ft : ne(ft); + } + }, + /** + * Transforms an array of svg elements to corresponding fabric.* instances + * @static + * @memberOf fabric + * @param {Array} elements Array of elements to parse + * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements) + * @param {Object} [options] Options object + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + */ + parseElements: function(Ie, Ae, Fe, $e, lt) { + new _.ElementsParser(Ie, Ae, Fe, $e, lt).parse(); + }, + /** + * Parses "style" attribute, retuning an object with values + * @static + * @memberOf fabric + * @param {SVGElement} element Element to parse + * @return {Object} Objects with values parsed from style attribute of an element + */ + parseStyleAttribute: function(Ie) { + var Ae = {}, Fe = Ie.getAttribute("style"); + return Fe && (typeof Fe == "string" ? de(Fe, Ae) : Te(Fe, Ae)), Ae; + }, + /** + * Parses "points" attribute, returning an array of values + * @static + * @memberOf fabric + * @param {String} points points attribute string + * @return {Array} array of points + */ + parsePointsAttribute: function(Ie) { + if (!Ie) + return null; + Ie = Ie.replace(/,/g, " ").trim(), Ie = Ie.split(/\s+/); + var Ae = [], Fe, $e; + for (Fe = 0, $e = Ie.length; Fe < $e; Fe += 2) + Ae.push({ + x: parseFloat(Ie[Fe]), + y: parseFloat(Ie[Fe + 1]) + }); + return Ae; + }, + /** + * Returns CSS rules for a given SVG document + * @static + * @function + * @memberOf fabric + * @param {SVGDocument} doc SVG document to parse + * @return {Object} CSS rules of this document + */ + getCSSRules: function(Ie) { + var Ae = Ie.getElementsByTagName("style"), Fe, $e, lt = {}, it; + for (Fe = 0, $e = Ae.length; Fe < $e; Fe++) { + var nt = Ae[Fe].textContent; + nt = nt.replace(/\/\*[\s\S]*?\*\//g, ""), nt.trim() !== "" && (it = nt.match(/[^{]*\{[\s\S]*?\}/g), it = it.map(function(ut) { + return ut.trim(); + }), it.forEach(function(ut) { + var rt = ut.match(/([\s\S]*?)\s*\{([^}]*)\}/), Ke = {}, ze = rt[2].trim(), qe = ze.replace(/;$/, "").split(/\s*;\s*/); + for (Fe = 0, $e = qe.length; Fe < $e; Fe++) { + var ct = qe[Fe].split(/\s*:\s*/), ft = ct[0], _t = ct[1]; + Ke[ft] = _t; + } + ut = rt[1], ut.split(",").forEach(function(Nt) { + Nt = Nt.replace(/^svg/i, "").trim(), Nt !== "" && (lt[Nt] ? _.util.object.extend(lt[Nt], Ke) : lt[Nt] = _.util.object.clone(Ke)); + }); + })); + } + return lt; + }, + /** + * Takes url corresponding to an SVG document, and parses it into a set of fabric objects. + * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy) + * @memberOf fabric + * @param {String} url + * @param {Function} callback + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + * @param {Object} [options] Object containing options for parsing + * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources + */ + loadSVGFromURL: function(Ie, Ae, Fe, $e) { + Ie = Ie.replace(/^\n\s*/, "").trim(), new _.util.request(Ie, { + method: "get", + onComplete: lt + }); + function lt(it) { + var nt = it.responseXML; + if (!nt || !nt.documentElement) + return Ae && Ae(null), !1; + _.parseSVGDocument(nt.documentElement, function(ut, rt, Ke, ze) { + Ae && Ae(ut, rt, Ke, ze); + }, Fe, $e); + } + }, + /** + * Takes string corresponding to an SVG document, and parses it into a set of fabric objects + * @memberOf fabric + * @param {String} string + * @param {Function} callback + * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. + * @param {Object} [options] Object containing options for parsing + * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources + */ + loadSVGFromString: function(Ie, Ae, Fe, $e) { + var lt = new _.window.DOMParser(), it = lt.parseFromString(Ie.trim(), "text/xml"); + _.parseSVGDocument(it.documentElement, function(nt, ut, rt, Ke) { + Ae(nt, ut, rt, Ke); + }, Fe, $e); + } + }); + }(u), f.ElementsParser = function(S, _, E, I, w, x) { + this.elements = S, this.callback = _, this.options = E, this.reviver = I, this.svgUid = E && E.svgUid || 0, this.parsingOptions = w, this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g, this.doc = x; + }, function(S) { + S.parse = function() { + this.instances = new Array(this.elements.length), this.numElements = this.elements.length, this.createObjects(); + }, S.createObjects = function() { + var _ = this; + this.elements.forEach(function(E, I) { + E.setAttribute("svgUid", _.svgUid), _.createObject(E, I); + }); + }, S.findTag = function(_) { + return f[f.util.string.capitalize(_.tagName.replace("svg:", ""))]; + }, S.createObject = function(_, E) { + var I = this.findTag(_); + if (I && I.fromElement) + try { + I.fromElement(_, this.createCallback(E, _), this.options); + } catch (w) { + f.log(w); + } + else + this.checkIfDone(); + }, S.createCallback = function(_, E) { + var I = this; + return function(w) { + var x; + I.resolveGradient(w, E, "fill"), I.resolveGradient(w, E, "stroke"), w instanceof f.Image && w._originalElement && (x = w.parsePreserveAspectRatioAttribute(E)), w._removeTransformMatrix(x), I.resolveClipPath(w, E), I.reviver && I.reviver(E, w), I.instances[_] = w, I.checkIfDone(); + }; + }, S.extractPropertyDefinition = function(_, E, I) { + var w = _[E], x = this.regexUrl; + if (x.test(w)) { + x.lastIndex = 0; + var b = x.exec(w)[1]; + return x.lastIndex = 0, f[I][this.svgUid][b]; + } + }, S.resolveGradient = function(_, E, I) { + var w = this.extractPropertyDefinition(_, I, "gradientDefs"); + if (w) { + var x = E.getAttribute(I + "-opacity"), b = f.Gradient.fromElement(w, _, x, this.options); + _.set(I, b); + } + }, S.createClipPathCallback = function(_, E) { + return function(I) { + I._removeTransformMatrix(), I.fillRule = I.clipRule, E.push(I); + }; + }, S.resolveClipPath = function(_, E) { + var I = this.extractPropertyDefinition(_, "clipPath", "clipPaths"), w, x, b, R, M, O; + if (I) { + R = [], b = f.util.invertTransform(_.calcTransformMatrix()); + for (var P = I[0].parentNode, B = E; B.parentNode && B.getAttribute("clip-path") !== _.clipPath; ) + B = B.parentNode; + B.parentNode.appendChild(P); + for (var H = 0; H < I.length; H++) + w = I[H], x = this.findTag(w), x.fromElement( + w, + this.createClipPathCallback(_, R), + this.options + ); + R.length === 1 ? I = R[0] : I = new f.Group(R), M = f.util.multiplyTransformMatrices( + b, + I.calcTransformMatrix() + ), I.clipPath && this.resolveClipPath(I, B); + var O = f.util.qrDecompose(M); + I.flipX = !1, I.flipY = !1, I.set("scaleX", O.scaleX), I.set("scaleY", O.scaleY), I.angle = O.angle, I.skewX = O.skewX, I.skewY = 0, I.setPositionByOrigin({ x: O.translateX, y: O.translateY }, "center", "center"), _.clipPath = I; + } else + delete _.clipPath; + }, S.checkIfDone = function() { + --this.numElements === 0 && (this.instances = this.instances.filter(function(_) { + return _ != null; + }), this.callback(this.instances, this.elements)); + }; + }(f.ElementsParser.prototype), function(S) { + var _ = S.fabric || (S.fabric = {}); + if (_.Point) { + _.warn("fabric.Point is already defined"); + return; + } + _.Point = E; + function E(I, w) { + this.x = I, this.y = w; + } + E.prototype = /** @lends fabric.Point.prototype */ + { + type: "point", + constructor: E, + /** + * Adds another point to this one and returns another one + * @param {fabric.Point} that + * @return {fabric.Point} new Point instance with added values + */ + add: function(I) { + return new E(this.x + I.x, this.y + I.y); + }, + /** + * Adds another point to this one + * @param {fabric.Point} that + * @return {fabric.Point} thisArg + * @chainable + */ + addEquals: function(I) { + return this.x += I.x, this.y += I.y, this; + }, + /** + * Adds value to this point and returns a new one + * @param {Number} scalar + * @return {fabric.Point} new Point with added value + */ + scalarAdd: function(I) { + return new E(this.x + I, this.y + I); + }, + /** + * Adds value to this point + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + scalarAddEquals: function(I) { + return this.x += I, this.y += I, this; + }, + /** + * Subtracts another point from this point and returns a new one + * @param {fabric.Point} that + * @return {fabric.Point} new Point object with subtracted values + */ + subtract: function(I) { + return new E(this.x - I.x, this.y - I.y); + }, + /** + * Subtracts another point from this point + * @param {fabric.Point} that + * @return {fabric.Point} thisArg + * @chainable + */ + subtractEquals: function(I) { + return this.x -= I.x, this.y -= I.y, this; + }, + /** + * Subtracts value from this point and returns a new one + * @param {Number} scalar + * @return {fabric.Point} + */ + scalarSubtract: function(I) { + return new E(this.x - I, this.y - I); + }, + /** + * Subtracts value from this point + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + scalarSubtractEquals: function(I) { + return this.x -= I, this.y -= I, this; + }, + /** + * Multiplies this point by a value and returns a new one + * TODO: rename in scalarMultiply in 2.0 + * @param {Number} scalar + * @return {fabric.Point} + */ + multiply: function(I) { + return new E(this.x * I, this.y * I); + }, + /** + * Multiplies this point by a value + * TODO: rename in scalarMultiplyEquals in 2.0 + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + multiplyEquals: function(I) { + return this.x *= I, this.y *= I, this; + }, + /** + * Divides this point by a value and returns a new one + * TODO: rename in scalarDivide in 2.0 + * @param {Number} scalar + * @return {fabric.Point} + */ + divide: function(I) { + return new E(this.x / I, this.y / I); + }, + /** + * Divides this point by a value + * TODO: rename in scalarDivideEquals in 2.0 + * @param {Number} scalar + * @return {fabric.Point} thisArg + * @chainable + */ + divideEquals: function(I) { + return this.x /= I, this.y /= I, this; + }, + /** + * Returns true if this point is equal to another one + * @param {fabric.Point} that + * @return {Boolean} + */ + eq: function(I) { + return this.x === I.x && this.y === I.y; + }, + /** + * Returns true if this point is less than another one + * @param {fabric.Point} that + * @return {Boolean} + */ + lt: function(I) { + return this.x < I.x && this.y < I.y; + }, + /** + * Returns true if this point is less than or equal to another one + * @param {fabric.Point} that + * @return {Boolean} + */ + lte: function(I) { + return this.x <= I.x && this.y <= I.y; + }, + /** + + * Returns true if this point is greater another one + * @param {fabric.Point} that + * @return {Boolean} + */ + gt: function(I) { + return this.x > I.x && this.y > I.y; + }, + /** + * Returns true if this point is greater than or equal to another one + * @param {fabric.Point} that + * @return {Boolean} + */ + gte: function(I) { + return this.x >= I.x && this.y >= I.y; + }, + /** + * Returns new point which is the result of linear interpolation with this one and another one + * @param {fabric.Point} that + * @param {Number} t , position of interpolation, between 0 and 1 default 0.5 + * @return {fabric.Point} + */ + lerp: function(I, w) { + return typeof w == "undefined" && (w = 0.5), w = Math.max(Math.min(1, w), 0), new E(this.x + (I.x - this.x) * w, this.y + (I.y - this.y) * w); + }, + /** + * Returns distance from this point and another one + * @param {fabric.Point} that + * @return {Number} + */ + distanceFrom: function(I) { + var w = this.x - I.x, x = this.y - I.y; + return Math.sqrt(w * w + x * x); + }, + /** + * Returns the point between this point and another one + * @param {fabric.Point} that + * @return {fabric.Point} + */ + midPointFrom: function(I) { + return this.lerp(I); + }, + /** + * Returns a new point which is the min of this and another one + * @param {fabric.Point} that + * @return {fabric.Point} + */ + min: function(I) { + return new E(Math.min(this.x, I.x), Math.min(this.y, I.y)); + }, + /** + * Returns a new point which is the max of this and another one + * @param {fabric.Point} that + * @return {fabric.Point} + */ + max: function(I) { + return new E(Math.max(this.x, I.x), Math.max(this.y, I.y)); + }, + /** + * Returns string representation of this point + * @return {String} + */ + toString: function() { + return this.x + "," + this.y; + }, + /** + * Sets x/y of this point + * @param {Number} x + * @param {Number} y + * @chainable + */ + setXY: function(I, w) { + return this.x = I, this.y = w, this; + }, + /** + * Sets x of this point + * @param {Number} x + * @chainable + */ + setX: function(I) { + return this.x = I, this; + }, + /** + * Sets y of this point + * @param {Number} y + * @chainable + */ + setY: function(I) { + return this.y = I, this; + }, + /** + * Sets x/y of this point from another point + * @param {fabric.Point} that + * @chainable + */ + setFromPoint: function(I) { + return this.x = I.x, this.y = I.y, this; + }, + /** + * Swaps x/y of this point and another point + * @param {fabric.Point} that + */ + swap: function(I) { + var w = this.x, x = this.y; + this.x = I.x, this.y = I.y, I.x = w, I.y = x; + }, + /** + * return a cloned instance of the point + * @return {fabric.Point} + */ + clone: function() { + return new E(this.x, this.y); + } + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}); + if (_.Intersection) { + _.warn("fabric.Intersection is already defined"); + return; + } + function E(I) { + this.status = I, this.points = []; + } + _.Intersection = E, _.Intersection.prototype = /** @lends fabric.Intersection.prototype */ + { + constructor: E, + /** + * Appends a point to intersection + * @param {fabric.Point} point + * @return {fabric.Intersection} thisArg + * @chainable + */ + appendPoint: function(I) { + return this.points.push(I), this; + }, + /** + * Appends points to intersection + * @param {Array} points + * @return {fabric.Intersection} thisArg + * @chainable + */ + appendPoints: function(I) { + return this.points = this.points.concat(I), this; + } + }, _.Intersection.intersectLineLine = function(I, w, x, b) { + var R, M = (b.x - x.x) * (I.y - x.y) - (b.y - x.y) * (I.x - x.x), O = (w.x - I.x) * (I.y - x.y) - (w.y - I.y) * (I.x - x.x), P = (b.y - x.y) * (w.x - I.x) - (b.x - x.x) * (w.y - I.y); + if (P !== 0) { + var B = M / P, H = O / P; + 0 <= B && B <= 1 && 0 <= H && H <= 1 ? (R = new E("Intersection"), R.appendPoint(new _.Point(I.x + B * (w.x - I.x), I.y + B * (w.y - I.y)))) : R = new E(); + } else + M === 0 || O === 0 ? R = new E("Coincident") : R = new E("Parallel"); + return R; + }, _.Intersection.intersectLinePolygon = function(I, w, x) { + var b = new E(), R = x.length, M, O, P, B; + for (B = 0; B < R; B++) + M = x[B], O = x[(B + 1) % R], P = E.intersectLineLine(I, w, M, O), b.appendPoints(P.points); + return b.points.length > 0 && (b.status = "Intersection"), b; + }, _.Intersection.intersectPolygonPolygon = function(I, w) { + var x = new E(), b = I.length, R; + for (R = 0; R < b; R++) { + var M = I[R], O = I[(R + 1) % b], P = E.intersectLinePolygon(M, O, w); + x.appendPoints(P.points); + } + return x.points.length > 0 && (x.status = "Intersection"), x; + }, _.Intersection.intersectPolygonRectangle = function(I, w, x) { + var b = w.min(x), R = w.max(x), M = new _.Point(R.x, b.y), O = new _.Point(b.x, R.y), P = E.intersectLinePolygon(b, M, I), B = E.intersectLinePolygon(M, R, I), H = E.intersectLinePolygon(R, O, I), Y = E.intersectLinePolygon(O, b, I), X = new E(); + return X.appendPoints(P.points), X.appendPoints(B.points), X.appendPoints(H.points), X.appendPoints(Y.points), X.points.length > 0 && (X.status = "Intersection"), X; + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}); + if (_.Color) { + _.warn("fabric.Color is already defined."); + return; + } + function E(w) { + w ? this._tryParsingColor(w) : this.setSource([0, 0, 0, 1]); + } + _.Color = E, _.Color.prototype = /** @lends fabric.Color.prototype */ + { + /** + * @private + * @param {String|Array} color Color value to parse + */ + _tryParsingColor: function(w) { + var x; + w in E.colorNameMap && (w = E.colorNameMap[w]), w === "transparent" && (x = [255, 255, 255, 0]), x || (x = E.sourceFromHex(w)), x || (x = E.sourceFromRgb(w)), x || (x = E.sourceFromHsl(w)), x || (x = [0, 0, 0, 1]), x && this.setSource(x); + }, + /** + * Adapted from https://github.com/mjijackson + * @private + * @param {Number} r Red color value + * @param {Number} g Green color value + * @param {Number} b Blue color value + * @return {Array} Hsl color + */ + _rgbToHsl: function(w, x, b) { + w /= 255, x /= 255, b /= 255; + var R, M, O, P = _.util.array.max([w, x, b]), B = _.util.array.min([w, x, b]); + if (O = (P + B) / 2, P === B) + R = M = 0; + else { + var H = P - B; + switch (M = O > 0.5 ? H / (2 - P - B) : H / (P + B), P) { + case w: + R = (x - b) / H + (x < b ? 6 : 0); + break; + case x: + R = (b - w) / H + 2; + break; + case b: + R = (w - x) / H + 4; + break; + } + R /= 6; + } + return [ + Math.round(R * 360), + Math.round(M * 100), + Math.round(O * 100) + ]; + }, + /** + * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1]) + * @return {Array} + */ + getSource: function() { + return this._source; + }, + /** + * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1]) + * @param {Array} source + */ + setSource: function(w) { + this._source = w; + }, + /** + * Returns color representation in RGB format + * @return {String} ex: rgb(0-255,0-255,0-255) + */ + toRgb: function() { + var w = this.getSource(); + return "rgb(" + w[0] + "," + w[1] + "," + w[2] + ")"; + }, + /** + * Returns color representation in RGBA format + * @return {String} ex: rgba(0-255,0-255,0-255,0-1) + */ + toRgba: function() { + var w = this.getSource(); + return "rgba(" + w[0] + "," + w[1] + "," + w[2] + "," + w[3] + ")"; + }, + /** + * Returns color representation in HSL format + * @return {String} ex: hsl(0-360,0%-100%,0%-100%) + */ + toHsl: function() { + var w = this.getSource(), x = this._rgbToHsl(w[0], w[1], w[2]); + return "hsl(" + x[0] + "," + x[1] + "%," + x[2] + "%)"; + }, + /** + * Returns color representation in HSLA format + * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1) + */ + toHsla: function() { + var w = this.getSource(), x = this._rgbToHsl(w[0], w[1], w[2]); + return "hsla(" + x[0] + "," + x[1] + "%," + x[2] + "%," + w[3] + ")"; + }, + /** + * Returns color representation in HEX format + * @return {String} ex: FF5555 + */ + toHex: function() { + var w = this.getSource(), x, b, R; + return x = w[0].toString(16), x = x.length === 1 ? "0" + x : x, b = w[1].toString(16), b = b.length === 1 ? "0" + b : b, R = w[2].toString(16), R = R.length === 1 ? "0" + R : R, x.toUpperCase() + b.toUpperCase() + R.toUpperCase(); + }, + /** + * Returns color representation in HEXA format + * @return {String} ex: FF5555CC + */ + toHexa: function() { + var w = this.getSource(), x; + return x = Math.round(w[3] * 255), x = x.toString(16), x = x.length === 1 ? "0" + x : x, this.toHex() + x.toUpperCase(); + }, + /** + * Gets value of alpha channel for this color + * @return {Number} 0-1 + */ + getAlpha: function() { + return this.getSource()[3]; + }, + /** + * Sets value of alpha channel for this color + * @param {Number} alpha Alpha value 0-1 + * @return {fabric.Color} thisArg + */ + setAlpha: function(w) { + var x = this.getSource(); + return x[3] = w, this.setSource(x), this; + }, + /** + * Transforms color to its grayscale representation + * @return {fabric.Color} thisArg + */ + toGrayscale: function() { + var w = this.getSource(), x = parseInt((w[0] * 0.3 + w[1] * 0.59 + w[2] * 0.11).toFixed(0), 10), b = w[3]; + return this.setSource([x, x, x, b]), this; + }, + /** + * Transforms color to its black and white representation + * @param {Number} threshold + * @return {fabric.Color} thisArg + */ + toBlackWhite: function(w) { + var x = this.getSource(), b = (x[0] * 0.3 + x[1] * 0.59 + x[2] * 0.11).toFixed(0), R = x[3]; + return w = w || 127, b = Number(b) < Number(w) ? 0 : 255, this.setSource([b, b, b, R]), this; + }, + /** + * Overlays color with another color + * @param {String|fabric.Color} otherColor + * @return {fabric.Color} thisArg + */ + overlayWith: function(w) { + w instanceof E || (w = new E(w)); + var x = [], b = this.getAlpha(), R = 0.5, M = this.getSource(), O = w.getSource(), P; + for (P = 0; P < 3; P++) + x.push(Math.round(M[P] * (1 - R) + O[P] * R)); + return x[3] = b, this.setSource(x), this; + } + }, _.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i, _.Color.reHSLa = /^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i, _.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i, _.Color.colorNameMap = { + aliceblue: "#F0F8FF", + antiquewhite: "#FAEBD7", + aqua: "#00FFFF", + aquamarine: "#7FFFD4", + azure: "#F0FFFF", + beige: "#F5F5DC", + bisque: "#FFE4C4", + black: "#000000", + blanchedalmond: "#FFEBCD", + blue: "#0000FF", + blueviolet: "#8A2BE2", + brown: "#A52A2A", + burlywood: "#DEB887", + cadetblue: "#5F9EA0", + chartreuse: "#7FFF00", + chocolate: "#D2691E", + coral: "#FF7F50", + cornflowerblue: "#6495ED", + cornsilk: "#FFF8DC", + crimson: "#DC143C", + cyan: "#00FFFF", + darkblue: "#00008B", + darkcyan: "#008B8B", + darkgoldenrod: "#B8860B", + darkgray: "#A9A9A9", + darkgrey: "#A9A9A9", + darkgreen: "#006400", + darkkhaki: "#BDB76B", + darkmagenta: "#8B008B", + darkolivegreen: "#556B2F", + darkorange: "#FF8C00", + darkorchid: "#9932CC", + darkred: "#8B0000", + darksalmon: "#E9967A", + darkseagreen: "#8FBC8F", + darkslateblue: "#483D8B", + darkslategray: "#2F4F4F", + darkslategrey: "#2F4F4F", + darkturquoise: "#00CED1", + darkviolet: "#9400D3", + deeppink: "#FF1493", + deepskyblue: "#00BFFF", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1E90FF", + firebrick: "#B22222", + floralwhite: "#FFFAF0", + forestgreen: "#228B22", + fuchsia: "#FF00FF", + gainsboro: "#DCDCDC", + ghostwhite: "#F8F8FF", + gold: "#FFD700", + goldenrod: "#DAA520", + gray: "#808080", + grey: "#808080", + green: "#008000", + greenyellow: "#ADFF2F", + honeydew: "#F0FFF0", + hotpink: "#FF69B4", + indianred: "#CD5C5C", + indigo: "#4B0082", + ivory: "#FFFFF0", + khaki: "#F0E68C", + lavender: "#E6E6FA", + lavenderblush: "#FFF0F5", + lawngreen: "#7CFC00", + lemonchiffon: "#FFFACD", + lightblue: "#ADD8E6", + lightcoral: "#F08080", + lightcyan: "#E0FFFF", + lightgoldenrodyellow: "#FAFAD2", + lightgray: "#D3D3D3", + lightgrey: "#D3D3D3", + lightgreen: "#90EE90", + lightpink: "#FFB6C1", + lightsalmon: "#FFA07A", + lightseagreen: "#20B2AA", + lightskyblue: "#87CEFA", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#B0C4DE", + lightyellow: "#FFFFE0", + lime: "#00FF00", + limegreen: "#32CD32", + linen: "#FAF0E6", + magenta: "#FF00FF", + maroon: "#800000", + mediumaquamarine: "#66CDAA", + mediumblue: "#0000CD", + mediumorchid: "#BA55D3", + mediumpurple: "#9370DB", + mediumseagreen: "#3CB371", + mediumslateblue: "#7B68EE", + mediumspringgreen: "#00FA9A", + mediumturquoise: "#48D1CC", + mediumvioletred: "#C71585", + midnightblue: "#191970", + mintcream: "#F5FFFA", + mistyrose: "#FFE4E1", + moccasin: "#FFE4B5", + navajowhite: "#FFDEAD", + navy: "#000080", + oldlace: "#FDF5E6", + olive: "#808000", + olivedrab: "#6B8E23", + orange: "#FFA500", + orangered: "#FF4500", + orchid: "#DA70D6", + palegoldenrod: "#EEE8AA", + palegreen: "#98FB98", + paleturquoise: "#AFEEEE", + palevioletred: "#DB7093", + papayawhip: "#FFEFD5", + peachpuff: "#FFDAB9", + peru: "#CD853F", + pink: "#FFC0CB", + plum: "#DDA0DD", + powderblue: "#B0E0E6", + purple: "#800080", + rebeccapurple: "#663399", + red: "#FF0000", + rosybrown: "#BC8F8F", + royalblue: "#4169E1", + saddlebrown: "#8B4513", + salmon: "#FA8072", + sandybrown: "#F4A460", + seagreen: "#2E8B57", + seashell: "#FFF5EE", + sienna: "#A0522D", + silver: "#C0C0C0", + skyblue: "#87CEEB", + slateblue: "#6A5ACD", + slategray: "#708090", + slategrey: "#708090", + snow: "#FFFAFA", + springgreen: "#00FF7F", + steelblue: "#4682B4", + tan: "#D2B48C", + teal: "#008080", + thistle: "#D8BFD8", + tomato: "#FF6347", + turquoise: "#40E0D0", + violet: "#EE82EE", + wheat: "#F5DEB3", + white: "#FFFFFF", + whitesmoke: "#F5F5F5", + yellow: "#FFFF00", + yellowgreen: "#9ACD32" + }; + function I(w, x, b) { + return b < 0 && (b += 1), b > 1 && (b -= 1), b < 0.16666666666666666 ? w + (x - w) * 6 * b : b < 0.5 ? x : b < 0.6666666666666666 ? w + (x - w) * (0.6666666666666666 - b) * 6 : w; + } + _.Color.fromRgb = function(w) { + return E.fromSource(E.sourceFromRgb(w)); + }, _.Color.sourceFromRgb = function(w) { + var x = w.match(E.reRGBa); + if (x) { + var b = parseInt(x[1], 10) / (/%$/.test(x[1]) ? 100 : 1) * (/%$/.test(x[1]) ? 255 : 1), R = parseInt(x[2], 10) / (/%$/.test(x[2]) ? 100 : 1) * (/%$/.test(x[2]) ? 255 : 1), M = parseInt(x[3], 10) / (/%$/.test(x[3]) ? 100 : 1) * (/%$/.test(x[3]) ? 255 : 1); + return [ + parseInt(b, 10), + parseInt(R, 10), + parseInt(M, 10), + x[4] ? parseFloat(x[4]) : 1 + ]; + } + }, _.Color.fromRgba = E.fromRgb, _.Color.fromHsl = function(w) { + return E.fromSource(E.sourceFromHsl(w)); + }, _.Color.sourceFromHsl = function(w) { + var x = w.match(E.reHSLa); + if (x) { + var b = (parseFloat(x[1]) % 360 + 360) % 360 / 360, R = parseFloat(x[2]) / (/%$/.test(x[2]) ? 100 : 1), M = parseFloat(x[3]) / (/%$/.test(x[3]) ? 100 : 1), O, P, B; + if (R === 0) + O = P = B = M; + else { + var H = M <= 0.5 ? M * (R + 1) : M + R - M * R, Y = M * 2 - H; + O = I(Y, H, b + 0.3333333333333333), P = I(Y, H, b), B = I(Y, H, b - 0.3333333333333333); + } + return [ + Math.round(O * 255), + Math.round(P * 255), + Math.round(B * 255), + x[4] ? parseFloat(x[4]) : 1 + ]; + } + }, _.Color.fromHsla = E.fromHsl, _.Color.fromHex = function(w) { + return E.fromSource(E.sourceFromHex(w)); + }, _.Color.sourceFromHex = function(w) { + if (w.match(E.reHex)) { + var x = w.slice(w.indexOf("#") + 1), b = x.length === 3 || x.length === 4, R = x.length === 8 || x.length === 4, M = b ? x.charAt(0) + x.charAt(0) : x.substring(0, 2), O = b ? x.charAt(1) + x.charAt(1) : x.substring(2, 4), P = b ? x.charAt(2) + x.charAt(2) : x.substring(4, 6), B = R ? b ? x.charAt(3) + x.charAt(3) : x.substring(6, 8) : "FF"; + return [ + parseInt(M, 16), + parseInt(O, 16), + parseInt(P, 16), + parseFloat((parseInt(B, 16) / 255).toFixed(2)) + ]; + } + }, _.Color.fromSource = function(w) { + var x = new E(); + return x.setSource(w), x; + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = ["e", "se", "s", "sw", "w", "nw", "n", "ne", "e"], I = ["ns", "nesw", "ew", "nwse"], w = {}, x = "left", b = "top", R = "right", M = "bottom", O = "center", P = { + top: M, + bottom: b, + left: R, + right: x, + center: O + }, B = _.util.radiansToDegrees, H = Math.sign || function(Ke) { + return (Ke > 0) - (Ke < 0) || +Ke; + }; + function Y(Ke, ze) { + var qe = Ke.angle + B(Math.atan2(ze.y, ze.x)) + 360; + return Math.round(qe % 360 / 45); + } + function X(Ke, ze) { + var qe = ze.transform.target, ct = qe.canvas, ft = _.util.object.clone(ze); + ft.target = qe, ct && ct.fire("object:" + Ke, ft), qe.fire(Ke, ze); + } + function ee(Ke, ze) { + var qe = ze.canvas, ct = qe.uniScaleKey, ft = Ke[ct]; + return qe.uniformScaling && !ft || !qe.uniformScaling && ft; + } + function ae(Ke) { + return Ke.originX === O && Ke.originY === O; + } + function J(Ke, ze, qe) { + var ct = Ke.lockScalingX, ft = Ke.lockScalingY; + return !!(ct && ft || !ze && (ct || ft) && qe || ct && ze === "x" || ft && ze === "y"); + } + function ne(Ke, ze, qe) { + var ct = "not-allowed", ft = ee(Ke, qe), _t = ""; + if (ze.x !== 0 && ze.y === 0 ? _t = "x" : ze.x === 0 && ze.y !== 0 && (_t = "y"), J(qe, _t, ft)) + return ct; + var Nt = Y(qe, ze); + return E[Nt] + "-resize"; + } + function fe(Ke, ze, qe) { + var ct = "not-allowed"; + if (ze.x !== 0 && qe.lockSkewingY || ze.y !== 0 && qe.lockSkewingX) + return ct; + var ft = Y(qe, ze) % 4; + return I[ft] + "-resize"; + } + function de(Ke, ze, qe) { + return Ke[qe.canvas.altActionKey] ? w.skewCursorStyleHandler(Ke, ze, qe) : w.scaleCursorStyleHandler(Ke, ze, qe); + } + function Te(Ke, ze, qe) { + var ct = Ke[qe.canvas.altActionKey]; + if (ze.x === 0) + return ct ? "skewX" : "scaleY"; + if (ze.y === 0) + return ct ? "skewY" : "scaleX"; + } + function be(Ke, ze, qe) { + return qe.lockRotation ? "not-allowed" : ze.cursorStyle; + } + function Ve(Ke, ze, qe, ct) { + return { + e: Ke, + transform: ze, + pointer: { + x: qe, + y: ct + } + }; + } + function pe(Ke) { + return function(ze, qe, ct, ft) { + var _t = qe.target, Nt = _t.getCenterPoint(), Yt = _t.translateToOriginPoint(Nt, qe.originX, qe.originY), tr = Ke(ze, qe, ct, ft); + return _t.setPositionByOrigin(Yt, qe.originX, qe.originY), tr; + }; + } + function Be(Ke, ze) { + return function(qe, ct, ft, _t) { + var Nt = ze(qe, ct, ft, _t); + return Nt && X(Ke, Ve(qe, ct, ft, _t)), Nt; + }; + } + function Ue(Ke, ze, qe, ct, ft) { + var _t = Ke.target, Nt = _t.controls[Ke.corner], Yt = _t.canvas.getZoom(), tr = _t.padding / Yt, Ct = _t.toLocalPoint(new _.Point(ct, ft), ze, qe); + return Ct.x >= tr && (Ct.x -= tr), Ct.x <= -tr && (Ct.x += tr), Ct.y >= tr && (Ct.y -= tr), Ct.y <= tr && (Ct.y += tr), Ct.x -= Nt.offsetX, Ct.y -= Nt.offsetY, Ct; + } + function Qe(Ke) { + return Ke.flipX !== Ke.flipY; + } + function Re(Ke, ze, qe, ct, ft) { + if (Ke[ze] !== 0) { + var _t = Ke._getTransformedDimensions()[ct], Nt = ft / _t * Ke[qe]; + Ke.set(qe, Nt); + } + } + function Ne(Ke, ze, qe, ct) { + var ft = ze.target, _t = ft._getTransformedDimensions(0, ft.skewY), Nt = Ue(ze, ze.originX, ze.originY, qe, ct), Yt = Math.abs(Nt.x * 2) - _t.x, tr = ft.skewX, Ct; + Yt < 2 ? Ct = 0 : (Ct = B( + Math.atan2(Yt / ft.scaleX, _t.y / ft.scaleY) + ), ze.originX === x && ze.originY === M && (Ct = -Ct), ze.originX === R && ze.originY === b && (Ct = -Ct), Qe(ft) && (Ct = -Ct)); + var hr = tr !== Ct; + if (hr) { + var Er = ft._getTransformedDimensions().y; + ft.set("skewX", Ct), Re(ft, "skewY", "scaleY", "y", Er); + } + return hr; + } + function Me(Ke, ze, qe, ct) { + var ft = ze.target, _t = ft._getTransformedDimensions(ft.skewX, 0), Nt = Ue(ze, ze.originX, ze.originY, qe, ct), Yt = Math.abs(Nt.y * 2) - _t.y, tr = ft.skewY, Ct; + Yt < 2 ? Ct = 0 : (Ct = B( + Math.atan2(Yt / ft.scaleY, _t.x / ft.scaleX) + ), ze.originX === x && ze.originY === M && (Ct = -Ct), ze.originX === R && ze.originY === b && (Ct = -Ct), Qe(ft) && (Ct = -Ct)); + var hr = tr !== Ct; + if (hr) { + var Er = ft._getTransformedDimensions().x; + ft.set("skewY", Ct), Re(ft, "skewX", "scaleX", "x", Er); + } + return hr; + } + function we(Ke, ze, qe, ct) { + var ft = ze.target, _t = ft.skewX, Nt, Yt = ze.originY; + if (ft.lockSkewingX) + return !1; + if (_t === 0) { + var tr = Ue(ze, O, O, qe, ct); + tr.x > 0 ? Nt = x : Nt = R; + } else + _t > 0 && (Nt = Yt === b ? x : R), _t < 0 && (Nt = Yt === b ? R : x), Qe(ft) && (Nt = Nt === x ? R : x); + ze.originX = Nt; + var Ct = Be("skewing", pe(Ne)); + return Ct(Ke, ze, qe, ct); + } + function He(Ke, ze, qe, ct) { + var ft = ze.target, _t = ft.skewY, Nt, Yt = ze.originX; + if (ft.lockSkewingY) + return !1; + if (_t === 0) { + var tr = Ue(ze, O, O, qe, ct); + tr.y > 0 ? Nt = b : Nt = M; + } else + _t > 0 && (Nt = Yt === x ? b : M), _t < 0 && (Nt = Yt === x ? M : b), Qe(ft) && (Nt = Nt === b ? M : b); + ze.originY = Nt; + var Ct = Be("skewing", pe(Me)); + return Ct(Ke, ze, qe, ct); + } + function Ie(Ke, ze, qe, ct) { + var ft = ze, _t = ft.target, Nt = _t.translateToOriginPoint(_t.getCenterPoint(), ft.originX, ft.originY); + if (_t.lockRotation) + return !1; + var Yt = Math.atan2(ft.ey - Nt.y, ft.ex - Nt.x), tr = Math.atan2(ct - Nt.y, qe - Nt.x), Ct = B(tr - Yt + ft.theta), hr = !0; + if (_t.snapAngle > 0) { + var Er = _t.snapAngle, Fr = _t.snapThreshold || Er, Dn = Math.ceil(Ct / Er) * Er, hn = Math.floor(Ct / Er) * Er; + Math.abs(Ct - hn) < Fr ? Ct = hn : Math.abs(Ct - Dn) < Fr && (Ct = Dn); + } + return Ct < 0 && (Ct = 360 + Ct), Ct %= 360, hr = _t.angle !== Ct, _t.angle = Ct, hr; + } + function Ae(Ke, ze, qe, ct, ft) { + ft = ft || {}; + var _t = ze.target, Nt = _t.lockScalingX, Yt = _t.lockScalingY, tr = ft.by, Ct, hr, Er, Fr, Dn = ee(Ke, _t), hn = J(_t, tr, Dn), Jn, nn, dn = ze.gestureScale; + if (hn) + return !1; + if (dn) + hr = ze.scaleX * dn, Er = ze.scaleY * dn; + else { + if (Ct = Ue(ze, ze.originX, ze.originY, qe, ct), Jn = tr !== "y" ? H(Ct.x) : 1, nn = tr !== "x" ? H(Ct.y) : 1, ze.signX || (ze.signX = Jn), ze.signY || (ze.signY = nn), _t.lockScalingFlip && (ze.signX !== Jn || ze.signY !== nn)) + return !1; + if (Fr = _t._getTransformedDimensions(), Dn && !tr) { + var an = Math.abs(Ct.x) + Math.abs(Ct.y), zn = ze.original, Lt = Math.abs(Fr.x * zn.scaleX / _t.scaleX) + Math.abs(Fr.y * zn.scaleY / _t.scaleY), Ot = an / Lt; + hr = zn.scaleX * Ot, Er = zn.scaleY * Ot; + } else + hr = Math.abs(Ct.x * _t.scaleX / Fr.x), Er = Math.abs(Ct.y * _t.scaleY / Fr.y); + ae(ze) && (hr *= 2, Er *= 2), ze.signX !== Jn && tr !== "y" && (ze.originX = P[ze.originX], hr *= -1, ze.signX = Jn), ze.signY !== nn && tr !== "x" && (ze.originY = P[ze.originY], Er *= -1, ze.signY = nn); + } + var Jt = _t.scaleX, jt = _t.scaleY; + return tr ? (tr === "x" && _t.set("scaleX", hr), tr === "y" && _t.set("scaleY", Er)) : (!Nt && _t.set("scaleX", hr), !Yt && _t.set("scaleY", Er)), Jt !== _t.scaleX || jt !== _t.scaleY; + } + function Fe(Ke, ze, qe, ct) { + return Ae(Ke, ze, qe, ct); + } + function $e(Ke, ze, qe, ct) { + return Ae(Ke, ze, qe, ct, { by: "x" }); + } + function lt(Ke, ze, qe, ct) { + return Ae(Ke, ze, qe, ct, { by: "y" }); + } + function it(Ke, ze, qe, ct) { + return Ke[ze.target.canvas.altActionKey] ? w.skewHandlerX(Ke, ze, qe, ct) : w.scalingY(Ke, ze, qe, ct); + } + function nt(Ke, ze, qe, ct) { + return Ke[ze.target.canvas.altActionKey] ? w.skewHandlerY(Ke, ze, qe, ct) : w.scalingX(Ke, ze, qe, ct); + } + function ut(Ke, ze, qe, ct) { + var ft = ze.target, _t = Ue(ze, ze.originX, ze.originY, qe, ct), Nt = ft.strokeWidth / (ft.strokeUniform ? ft.scaleX : 1), Yt = ae(ze) ? 2 : 1, tr = ft.width, Ct = Math.abs(_t.x * Yt / ft.scaleX) - Nt; + return ft.set("width", Math.max(Ct, 0)), tr !== Ct; + } + function rt(Ke, ze, qe, ct) { + var ft = ze.target, _t = qe - ze.offsetX, Nt = ct - ze.offsetY, Yt = !ft.get("lockMovementX") && ft.left !== _t, tr = !ft.get("lockMovementY") && ft.top !== Nt; + return Yt && ft.set("left", _t), tr && ft.set("top", Nt), (Yt || tr) && X("moving", Ve(Ke, ze, qe, ct)), Yt || tr; + } + w.scaleCursorStyleHandler = ne, w.skewCursorStyleHandler = fe, w.scaleSkewCursorStyleHandler = de, w.rotationWithSnapping = Be("rotating", pe(Ie)), w.scalingEqually = Be("scaling", pe(Fe)), w.scalingX = Be("scaling", pe($e)), w.scalingY = Be("scaling", pe(lt)), w.scalingYOrSkewingX = it, w.scalingXOrSkewingY = nt, w.changeWidth = Be("resizing", pe(ut)), w.skewHandlerX = we, w.skewHandlerY = He, w.dragHandler = rt, w.scaleOrSkewActionName = Te, w.rotationStyleHandler = be, w.fireEvent = X, w.wrapWithFixedAnchor = pe, w.wrapWithFireEvent = Be, w.getLocalPoint = Ue, _.controlsUtils = w; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.degreesToRadians, I = _.controlsUtils; + function w(b, R, M, O, P) { + O = O || {}; + var B = this.sizeX || O.cornerSize || P.cornerSize, H = this.sizeY || O.cornerSize || P.cornerSize, Y = typeof O.transparentCorners != "undefined" ? O.transparentCorners : P.transparentCorners, X = Y ? "stroke" : "fill", ee = !Y && (O.cornerStrokeColor || P.cornerStrokeColor), ae = R, J = M, ne; + b.save(), b.fillStyle = O.cornerColor || P.cornerColor, b.strokeStyle = O.cornerStrokeColor || P.cornerStrokeColor, B > H ? (ne = B, b.scale(1, H / B), J = M * B / H) : H > B ? (ne = H, b.scale(B / H, 1), ae = R * H / B) : ne = B, b.lineWidth = 1, b.beginPath(), b.arc(ae, J, ne / 2, 0, 2 * Math.PI, !1), b[X](), ee && b.stroke(), b.restore(); + } + function x(b, R, M, O, P) { + O = O || {}; + var B = this.sizeX || O.cornerSize || P.cornerSize, H = this.sizeY || O.cornerSize || P.cornerSize, Y = typeof O.transparentCorners != "undefined" ? O.transparentCorners : P.transparentCorners, X = Y ? "stroke" : "fill", ee = !Y && (O.cornerStrokeColor || P.cornerStrokeColor), ae = B / 2, J = H / 2; + b.save(), b.fillStyle = O.cornerColor || P.cornerColor, b.strokeStyle = O.cornerStrokeColor || P.cornerStrokeColor, b.lineWidth = 1, b.translate(R, M), b.rotate(E(P.angle)), b[X + "Rect"](-ae, -J, B, H), ee && b.strokeRect(-ae, -J, B, H), b.restore(); + } + I.renderCircleControl = w, I.renderSquareControl = x; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}); + function E(I) { + for (var w in I) + this[w] = I[w]; + } + _.Control = E, _.Control.prototype = /** @lends fabric.Control.prototype */ + { + /** + * keep track of control visibility. + * mainly for backward compatibility. + * if you do not want to see a control, you can remove it + * from the controlset. + * @type {Boolean} + * @default true + */ + visible: !0, + /** + * Name of the action that the control will likely execute. + * This is optional. FabricJS uses to identify what the user is doing for some + * extra optimizations. If you are writing a custom control and you want to know + * somewhere else in the code what is going on, you can use this string here. + * you can also provide a custom getActionName if your control run multiple actions + * depending on some external state. + * default to scale since is the most common, used on 4 corners by default + * @type {String} + * @default 'scale' + */ + actionName: "scale", + /** + * Drawing angle of the control. + * NOT used for now, but name marked as needed for internal logic + * example: to reuse the same drawing function for different rotated controls + * @type {Number} + * @default 0 + */ + angle: 0, + /** + * Relative position of the control. X + * 0,0 is the center of the Object, while -0.5 (left) or 0.5 (right) are the extremities + * of the bounding box. + * @type {Number} + * @default 0 + */ + x: 0, + /** + * Relative position of the control. Y + * 0,0 is the center of the Object, while -0.5 (top) or 0.5 (bottom) are the extremities + * of the bounding box. + * @type {Number} + * @default 0 + */ + y: 0, + /** + * Horizontal offset of the control from the defined position. In pixels + * Positive offset moves the control to the right, negative to the left. + * It used when you want to have position of control that does not scale with + * the bounding box. Example: rotation control is placed at x:0, y: 0.5 on + * the boundindbox, with an offset of 30 pixels vertically. Those 30 pixels will + * stay 30 pixels no matter how the object is big. Another example is having 2 + * controls in the corner, that stay in the same position when the object scale. + * of the bounding box. + * @type {Number} + * @default 0 + */ + offsetX: 0, + /** + * Vertical offset of the control from the defined position. In pixels + * Positive offset moves the control to the bottom, negative to the top. + * @type {Number} + * @default 0 + */ + offsetY: 0, + /** + * Sets the length of the control. If null, defaults to object's cornerSize. + * Expects both sizeX and sizeY to be set when set. + * @type {?Number} + * @default null + */ + sizeX: null, + /** + * Sets the height of the control. If null, defaults to object's cornerSize. + * Expects both sizeX and sizeY to be set when set. + * @type {?Number} + * @default null + */ + sizeY: null, + /** + * Sets the length of the touch area of the control. If null, defaults to object's touchCornerSize. + * Expects both touchSizeX and touchSizeY to be set when set. + * @type {?Number} + * @default null + */ + touchSizeX: null, + /** + * Sets the height of the touch area of the control. If null, defaults to object's touchCornerSize. + * Expects both touchSizeX and touchSizeY to be set when set. + * @type {?Number} + * @default null + */ + touchSizeY: null, + /** + * Css cursor style to display when the control is hovered. + * if the method `cursorStyleHandler` is provided, this property is ignored. + * @type {String} + * @default 'crosshair' + */ + cursorStyle: "crosshair", + /** + * If controls has an offsetY or offsetX, draw a line that connects + * the control to the bounding box + * @type {Boolean} + * @default false + */ + withConnection: !1, + /** + * The control actionHandler, provide one to handle action ( control being moved ) + * @param {Event} eventData the native mouse event + * @param {Object} transformData properties of the current transform + * @param {Number} x x position of the cursor + * @param {Number} y y position of the cursor + * @return {Boolean} true if the action/event modified the object + */ + actionHandler: function() { + }, + /** + * The control handler for mouse down, provide one to handle mouse down on control + * @param {Event} eventData the native mouse event + * @param {Object} transformData properties of the current transform + * @param {Number} x x position of the cursor + * @param {Number} y y position of the cursor + * @return {Boolean} true if the action/event modified the object + */ + mouseDownHandler: function() { + }, + /** + * The control mouseUpHandler, provide one to handle an effect on mouse up. + * @param {Event} eventData the native mouse event + * @param {Object} transformData properties of the current transform + * @param {Number} x x position of the cursor + * @param {Number} y y position of the cursor + * @return {Boolean} true if the action/event modified the object + */ + mouseUpHandler: function() { + }, + /** + * Returns control actionHandler + * @param {Event} eventData the native mouse event + * @param {fabric.Object} fabricObject on which the control is displayed + * @param {fabric.Control} control control for which the action handler is being asked + * @return {Function} the action handler + */ + getActionHandler: function() { + return this.actionHandler; + }, + /** + * Returns control mouseDown handler + * @param {Event} eventData the native mouse event + * @param {fabric.Object} fabricObject on which the control is displayed + * @param {fabric.Control} control control for which the action handler is being asked + * @return {Function} the action handler + */ + getMouseDownHandler: function() { + return this.mouseDownHandler; + }, + /** + * Returns control mouseUp handler + * @param {Event} eventData the native mouse event + * @param {fabric.Object} fabricObject on which the control is displayed + * @param {fabric.Control} control control for which the action handler is being asked + * @return {Function} the action handler + */ + getMouseUpHandler: function() { + return this.mouseUpHandler; + }, + /** + * Returns control cursorStyle for css using cursorStyle. If you need a more elaborate + * function you can pass one in the constructor + * the cursorStyle property + * @param {Event} eventData the native mouse event + * @param {fabric.Control} control the current control ( likely this) + * @param {fabric.Object} object on which the control is displayed + * @return {String} + */ + cursorStyleHandler: function(I, w) { + return w.cursorStyle; + }, + /** + * Returns the action name. The basic implementation just return the actionName property. + * @param {Event} eventData the native mouse event + * @param {fabric.Control} control the current control ( likely this) + * @param {fabric.Object} object on which the control is displayed + * @return {String} + */ + getActionName: function(I, w) { + return w.actionName; + }, + /** + * Returns controls visibility + * @param {fabric.Object} object on which the control is displayed + * @param {String} controlKey key where the control is memorized on the + * @return {Boolean} + */ + getVisibility: function(I, w) { + var x = I._controlsVisibility; + return x && typeof x[w] != "undefined" ? x[w] : this.visible; + }, + /** + * Sets controls visibility + * @param {Boolean} visibility for the object + * @return {Void} + */ + setVisibility: function(I) { + this.visible = I; + }, + positionHandler: function(I, w) { + var x = _.util.transformPoint({ + x: this.x * I.x + this.offsetX, + y: this.y * I.y + this.offsetY + }, w); + return x; + }, + /** + * Returns the coords for this control based on object values. + * @param {Number} objectAngle angle from the fabric object holding the control + * @param {Number} objectCornerSize cornerSize from the fabric object holding the control (or touchCornerSize if + * isTouch is true) + * @param {Number} centerX x coordinate where the control center should be + * @param {Number} centerY y coordinate where the control center should be + * @param {boolean} isTouch true if touch corner, false if normal corner + */ + calcCornerCoords: function(I, w, x, b, R) { + var M, O, P, B, H = R ? this.touchSizeX : this.sizeX, Y = R ? this.touchSizeY : this.sizeY; + if (H && Y && H !== Y) { + var X = Math.atan2(Y, H), ee = Math.sqrt(H * H + Y * Y) / 2, ae = X - _.util.degreesToRadians(I), J = Math.PI / 2 - X - _.util.degreesToRadians(I); + M = ee * _.util.cos(ae), O = ee * _.util.sin(ae), P = ee * _.util.cos(J), B = ee * _.util.sin(J); + } else { + var ne = H && Y ? H : w; + ee = ne * 0.7071067812; + var ae = _.util.degreesToRadians(45 - I); + M = P = ee * _.util.cos(ae), O = B = ee * _.util.sin(ae); + } + return { + tl: { + x: x - B, + y: b - P + }, + tr: { + x: x + M, + y: b - O + }, + bl: { + x: x - M, + y: b + O + }, + br: { + x: x + B, + y: b + P + } + }; + }, + /** + * Render function for the control. + * When this function runs the context is unscaled. unrotate. Just retina scaled. + * all the functions will have to translate to the point left,top before starting Drawing + * if they want to draw a control where the position is detected. + * left and top are the result of the positionHandler function + * @param {RenderingContext2D} ctx the context where the control will be drawn + * @param {Number} left position of the canvas where we are about to render the control. + * @param {Number} top position of the canvas where we are about to render the control. + * @param {Object} styleOverride + * @param {fabric.Object} fabricObject the object where the control is about to be rendered + */ + render: function(I, w, x, b, R) { + switch (b = b || {}, b.cornerStyle || R.cornerStyle) { + case "circle": + _.controlsUtils.renderCircleControl.call(this, I, w, x, b, R); + break; + default: + _.controlsUtils.renderSquareControl.call(this, I, w, x, b, R); + } + } + }; + }(u), function() { + function S(x, b) { + var R = x.getAttribute("style"), M = x.getAttribute("offset") || 0, O, P, B, H; + if (M = parseFloat(M) / (/%$/.test(M) ? 100 : 1), M = M < 0 ? 0 : M > 1 ? 1 : M, R) { + var Y = R.split(/\s*;\s*/); + for (Y[Y.length - 1] === "" && Y.pop(), H = Y.length; H--; ) { + var X = Y[H].split(/\s*:\s*/), ee = X[0].trim(), ae = X[1].trim(); + ee === "stop-color" ? O = ae : ee === "stop-opacity" && (B = ae); + } + } + return O || (O = x.getAttribute("stop-color") || "rgb(0,0,0)"), B || (B = x.getAttribute("stop-opacity")), O = new f.Color(O), P = O.getAlpha(), B = isNaN(parseFloat(B)) ? 1 : parseFloat(B), B *= P * b, { + offset: M, + color: O.toRgb(), + opacity: B + }; + } + function _(x) { + return { + x1: x.getAttribute("x1") || 0, + y1: x.getAttribute("y1") || 0, + x2: x.getAttribute("x2") || "100%", + y2: x.getAttribute("y2") || 0 + }; + } + function E(x) { + return { + x1: x.getAttribute("fx") || x.getAttribute("cx") || "50%", + y1: x.getAttribute("fy") || x.getAttribute("cy") || "50%", + r1: 0, + x2: x.getAttribute("cx") || "50%", + y2: x.getAttribute("cy") || "50%", + r2: x.getAttribute("r") || "50%" + }; + } + var I = f.util.object.clone; + f.Gradient = f.util.createClass( + /** @lends fabric.Gradient.prototype */ + { + /** + * Horizontal offset for aligning gradients coming from SVG when outside pathgroups + * @type Number + * @default 0 + */ + offsetX: 0, + /** + * Vertical offset for aligning gradients coming from SVG when outside pathgroups + * @type Number + * @default 0 + */ + offsetY: 0, + /** + * A transform matrix to apply to the gradient before painting. + * Imported from svg gradients, is not applied with the current transform in the center. + * Before this transform is applied, the origin point is at the top left corner of the object + * plus the addition of offsetY and offsetX. + * @type Number[] + * @default null + */ + gradientTransform: null, + /** + * coordinates units for coords. + * If `pixels`, the number of coords are in the same unit of width / height. + * If set as `percentage` the coords are still a number, but 1 means 100% of width + * for the X and 100% of the height for the y. It can be bigger than 1 and negative. + * allowed values pixels or percentage. + * @type String + * @default 'pixels' + */ + gradientUnits: "pixels", + /** + * Gradient type linear or radial + * @type String + * @default 'pixels' + */ + type: "linear", + /** + * Constructor + * @param {Object} options Options object with type, coords, gradientUnits and colorStops + * @param {Object} [options.type] gradient type linear or radial + * @param {Object} [options.gradientUnits] gradient units + * @param {Object} [options.offsetX] SVG import compatibility + * @param {Object} [options.offsetY] SVG import compatibility + * @param {Object[]} options.colorStops contains the colorstops. + * @param {Object} options.coords contains the coords of the gradient + * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial + * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial + * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial + * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial + * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle + * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle + * @return {fabric.Gradient} thisArg + */ + initialize: function(x) { + x || (x = {}), x.coords || (x.coords = {}); + var b, R = this; + Object.keys(x).forEach(function(M) { + R[M] = x[M]; + }), this.id ? this.id += "_" + f.Object.__uid++ : this.id = f.Object.__uid++, b = { + x1: x.coords.x1 || 0, + y1: x.coords.y1 || 0, + x2: x.coords.x2 || 0, + y2: x.coords.y2 || 0 + }, this.type === "radial" && (b.r1 = x.coords.r1 || 0, b.r2 = x.coords.r2 || 0), this.coords = b, this.colorStops = x.colorStops.slice(); + }, + /** + * Adds another colorStop + * @param {Object} colorStop Object with offset and color + * @return {fabric.Gradient} thisArg + */ + addColorStop: function(x) { + for (var b in x) { + var R = new f.Color(x[b]); + this.colorStops.push({ + offset: parseFloat(b), + color: R.toRgb(), + opacity: R.getAlpha() + }); + } + return this; + }, + /** + * Returns object representation of a gradient + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} + */ + toObject: function(x) { + var b = { + type: this.type, + coords: this.coords, + colorStops: this.colorStops, + offsetX: this.offsetX, + offsetY: this.offsetY, + gradientUnits: this.gradientUnits, + gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform + }; + return f.util.populateWithProperties(this, b, x), b; + }, + /* _TO_SVG_START_ */ + /** + * Returns SVG representation of an gradient + * @param {Object} object Object to create a gradient for + * @return {String} SVG representation of an gradient (linear/radial) + */ + toSVG: function(x, P) { + var R = I(this.coords, !0), M, O, P = P || {}, B, H, Y = I(this.colorStops, !0), X = R.r1 > R.r2, ee = this.gradientTransform ? this.gradientTransform.concat() : f.iMatrix.concat(), ae = -this.offsetX, J = -this.offsetY, ne = !!P.additionalTransform, fe = this.gradientUnits === "pixels" ? "userSpaceOnUse" : "objectBoundingBox"; + if (Y.sort(function(pe, Be) { + return pe.offset - Be.offset; + }), fe === "objectBoundingBox" ? (ae /= x.width, J /= x.height) : (ae += x.width / 2, J += x.height / 2), x.type === "path" && this.gradientUnits !== "percentage" && (ae -= x.pathOffset.x, J -= x.pathOffset.y), ee[4] -= ae, ee[5] -= J, H = 'id="SVGID_' + this.id + '" gradientUnits="' + fe + '"', H += ' gradientTransform="' + (ne ? P.additionalTransform + " " : "") + f.util.matrixToSVG(ee) + '" ', this.type === "linear" ? B = [ + " +` + ] : this.type === "radial" && (B = [ + " +` + ]), this.type === "radial") { + if (X) + for (Y = Y.concat(), Y.reverse(), M = 0, O = Y.length; M < O; M++) + Y[M].offset = 1 - Y[M].offset; + var de = Math.min(R.r1, R.r2); + if (de > 0) { + var Te = Math.max(R.r1, R.r2), be = de / Te; + for (M = 0, O = Y.length; M < O; M++) + Y[M].offset += be * (1 - Y[M].offset); + } + } + for (M = 0, O = Y.length; M < O; M++) { + var Ve = Y[M]; + B.push( + " +` + ); + } + return B.push(this.type === "linear" ? ` +` : ` +`), B.join(""); + }, + /* _TO_SVG_END_ */ + /** + * Returns an instance of CanvasGradient + * @param {CanvasRenderingContext2D} ctx Context to render on + * @return {CanvasGradient} + */ + toLive: function(x) { + var b, R = f.util.object.clone(this.coords), M, O; + if (this.type) { + for (this.type === "linear" ? b = x.createLinearGradient( + R.x1, + R.y1, + R.x2, + R.y2 + ) : this.type === "radial" && (b = x.createRadialGradient( + R.x1, + R.y1, + R.r1, + R.x2, + R.y2, + R.r2 + )), M = 0, O = this.colorStops.length; M < O; M++) { + var P = this.colorStops[M].color, B = this.colorStops[M].opacity, H = this.colorStops[M].offset; + typeof B != "undefined" && (P = new f.Color(P).setAlpha(B).toRgba()), b.addColorStop(H, P); + } + return b; + } + } + } + ), f.util.object.extend(f.Gradient, { + /* _FROM_SVG_START_ */ + /** + * Returns {@link fabric.Gradient} instance from an SVG element + * @static + * @memberOf fabric.Gradient + * @param {SVGGradientElement} el SVG gradient element + * @param {fabric.Object} instance + * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity. + * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly gradients + * that uses gradientUnits as 'userSpaceOnUse' and percentages. + * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg + * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg + * @param {Object.number} width width part of the svg tag if viewBox is not specified + * @param {Object.number} height height part of the svg tag if viewBox is not specified + * @return {fabric.Gradient} Gradient instance + * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement + * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement + */ + fromElement: function(x, b, R, M) { + var O = parseFloat(R) / (/%$/.test(R) ? 100 : 1); + O = O < 0 ? 0 : O > 1 ? 1 : O, isNaN(O) && (O = 1); + var P = x.getElementsByTagName("stop"), B, H = x.getAttribute("gradientUnits") === "userSpaceOnUse" ? "pixels" : "percentage", Y = x.getAttribute("gradientTransform") || "", X = [], ee, ae, J = 0, ne = 0, fe; + for (x.nodeName === "linearGradient" || x.nodeName === "LINEARGRADIENT" ? (B = "linear", ee = _(x)) : (B = "radial", ee = E(x)), ae = P.length; ae--; ) + X.push(S(P[ae], O)); + fe = f.parseTransformAttribute(Y), w(b, ee, M, H), H === "pixels" && (J = -b.left, ne = -b.top); + var de = new f.Gradient({ + id: x.getAttribute("id"), + type: B, + coords: ee, + colorStops: X, + gradientUnits: H, + gradientTransform: fe, + offsetX: J, + offsetY: ne + }); + return de; + } + /* _FROM_SVG_END_ */ + }); + function w(x, b, R, M) { + var O, P; + Object.keys(b).forEach(function(B) { + O = b[B], O === "Infinity" ? P = 1 : O === "-Infinity" ? P = 0 : (P = parseFloat(b[B], 10), typeof O == "string" && /^(\d+\.\d+)%|(\d+)%$/.test(O) && (P *= 0.01, M === "pixels" && ((B === "x1" || B === "x2" || B === "r2") && (P *= R.viewBoxWidth || R.width), (B === "y1" || B === "y2") && (P *= R.viewBoxHeight || R.height)))), b[B] = P; + }); + } + }(), function() { + var S = f.util.toFixed; + f.Pattern = f.util.createClass( + /** @lends fabric.Pattern.prototype */ + { + /** + * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) + * @type String + * @default + */ + repeat: "repeat", + /** + * Pattern horizontal offset from object's left/top corner + * @type Number + * @default + */ + offsetX: 0, + /** + * Pattern vertical offset from object's left/top corner + * @type Number + * @default + */ + offsetY: 0, + /** + * crossOrigin value (one of "", "anonymous", "use-credentials") + * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes + * @type String + * @default + */ + crossOrigin: "", + /** + * transform matrix to change the pattern, imported from svgs. + * @type Array + * @default + */ + patternTransform: null, + /** + * Constructor + * @param {Object} [options] Options object + * @param {Function} [callback] function to invoke after callback init. + * @return {fabric.Pattern} thisArg + */ + initialize: function(_, E) { + if (_ || (_ = {}), this.id = f.Object.__uid++, this.setOptions(_), !_.source || _.source && typeof _.source != "string") { + E && E(this); + return; + } else { + var I = this; + this.source = f.util.createImage(), f.util.loadImage(_.source, function(w, x) { + I.source = w, E && E(I, x); + }, null, this.crossOrigin); + } + }, + /** + * Returns object representation of a pattern + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of a pattern instance + */ + toObject: function(_) { + var E = f.Object.NUM_FRACTION_DIGITS, I, w; + return typeof this.source.src == "string" ? I = this.source.src : typeof this.source == "object" && this.source.toDataURL && (I = this.source.toDataURL()), w = { + type: "pattern", + source: I, + repeat: this.repeat, + crossOrigin: this.crossOrigin, + offsetX: S(this.offsetX, E), + offsetY: S(this.offsetY, E), + patternTransform: this.patternTransform ? this.patternTransform.concat() : null + }, f.util.populateWithProperties(this, w, _), w; + }, + /* _TO_SVG_START_ */ + /** + * Returns SVG representation of a pattern + * @param {fabric.Object} object + * @return {String} SVG representation of a pattern + */ + toSVG: function(_) { + var E = typeof this.source == "function" ? this.source() : this.source, I = E.width / _.width, w = E.height / _.height, x = this.offsetX / _.width, b = this.offsetY / _.height, R = ""; + return (this.repeat === "repeat-x" || this.repeat === "no-repeat") && (w = 1, b && (w += Math.abs(b))), (this.repeat === "repeat-y" || this.repeat === "no-repeat") && (I = 1, x && (I += Math.abs(x))), E.src ? R = E.src : E.toDataURL && (R = E.toDataURL()), ' + + +`; + }, + /* _TO_SVG_END_ */ + setOptions: function(_) { + for (var E in _) + this[E] = _[E]; + }, + /** + * Returns an instance of CanvasPattern + * @param {CanvasRenderingContext2D} ctx Context to create pattern + * @return {CanvasPattern} + */ + toLive: function(_) { + var E = this.source; + return !E || typeof E.src != "undefined" && (!E.complete || E.naturalWidth === 0 || E.naturalHeight === 0) ? "" : _.createPattern(E, this.repeat); + } + } + ); + }(), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.toFixed; + if (_.Shadow) { + _.warn("fabric.Shadow is already defined."); + return; + } + _.Shadow = _.util.createClass( + /** @lends fabric.Shadow.prototype */ + { + /** + * Shadow color + * @type String + * @default + */ + color: "rgb(0,0,0)", + /** + * Shadow blur + * @type Number + */ + blur: 0, + /** + * Shadow horizontal offset + * @type Number + * @default + */ + offsetX: 0, + /** + * Shadow vertical offset + * @type Number + * @default + */ + offsetY: 0, + /** + * Whether the shadow should affect stroke operations + * @type Boolean + * @default + */ + affectStroke: !1, + /** + * Indicates whether toObject should include default values + * @type Boolean + * @default + */ + includeDefaultValues: !0, + /** + * When `false`, the shadow will scale with the object. + * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale. + * default to false + * @type Boolean + * @default + */ + nonScaling: !1, + /** + * Constructor + * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. "rgba(0,0,0,0.2) 2px 2px 10px") + * @return {fabric.Shadow} thisArg + */ + initialize: function(I) { + typeof I == "string" && (I = this._parseShadow(I)); + for (var w in I) + this[w] = I[w]; + this.id = _.Object.__uid++; + }, + /** + * @private + * @param {String} shadow Shadow value to parse + * @return {Object} Shadow object with color, offsetX, offsetY and blur + */ + _parseShadow: function(I) { + var w = I.trim(), x = _.Shadow.reOffsetsAndBlur.exec(w) || [], b = w.replace(_.Shadow.reOffsetsAndBlur, "") || "rgb(0,0,0)"; + return { + color: b.trim(), + offsetX: parseFloat(x[1], 10) || 0, + offsetY: parseFloat(x[2], 10) || 0, + blur: parseFloat(x[3], 10) || 0 + }; + }, + /** + * Returns a string representation of an instance + * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow + * @return {String} Returns CSS3 text-shadow declaration + */ + toString: function() { + return [this.offsetX, this.offsetY, this.blur, this.color].join("px "); + }, + /* _TO_SVG_START_ */ + /** + * Returns SVG representation of a shadow + * @param {fabric.Object} object + * @return {String} SVG representation of a shadow + */ + toSVG: function(I) { + var w = 40, x = 40, b = _.Object.NUM_FRACTION_DIGITS, R = _.util.rotateVector( + { x: this.offsetX, y: this.offsetY }, + _.util.degreesToRadians(-I.angle) + ), M = 20, O = new _.Color(this.color); + return I.width && I.height && (w = E((Math.abs(R.x) + this.blur) / I.width, b) * 100 + M, x = E((Math.abs(R.y) + this.blur) / I.height, b) * 100 + M), I.flipX && (R.x *= -1), I.flipY && (R.y *= -1), ' + + + + + + + + + +`; + }, + /* _TO_SVG_END_ */ + /** + * Returns object representation of a shadow + * @return {Object} Object representation of a shadow instance + */ + toObject: function() { + if (this.includeDefaultValues) + return { + color: this.color, + blur: this.blur, + offsetX: this.offsetX, + offsetY: this.offsetY, + affectStroke: this.affectStroke, + nonScaling: this.nonScaling + }; + var I = {}, w = _.Shadow.prototype; + return ["color", "blur", "offsetX", "offsetY", "affectStroke", "nonScaling"].forEach(function(x) { + this[x] !== w[x] && (I[x] = this[x]); + }, this), I; + } + } + ), _.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/; + }(u), function() { + if (f.StaticCanvas) { + f.warn("fabric.StaticCanvas is already defined."); + return; + } + var S = f.util.object.extend, _ = f.util.getElementOffset, E = f.util.removeFromArray, I = f.util.toFixed, w = f.util.transformPoint, x = f.util.invertTransform, b = f.util.getNodeCanvas, R = f.util.createCanvasElement, M = new Error("Could not initialize `canvas` element"); + f.StaticCanvas = f.util.createClass( + f.CommonMethods, + /** @lends fabric.StaticCanvas.prototype */ + { + /** + * Constructor + * @param {HTMLElement | String} el <canvas> element to initialize instance on + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(O, P) { + P || (P = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(O, P); + }, + /** + * Background color of canvas instance. + * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}. + * @type {(String|fabric.Pattern)} + * @default + */ + backgroundColor: "", + /** + * Background image of canvas instance. + * since 2.4.0 image caching is active, please when putting an image as background, add to the + * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom + * vale. As an alternative you can disable image objectCaching + * @type fabric.Image + * @default + */ + backgroundImage: null, + /** + * Overlay color of canvas instance. + * Should be set via {@link fabric.StaticCanvas#setOverlayColor} + * @since 1.3.9 + * @type {(String|fabric.Pattern)} + * @default + */ + overlayColor: "", + /** + * Overlay image of canvas instance. + * since 2.4.0 image caching is active, please when putting an image as overlay, add to the + * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom + * vale. As an alternative you can disable image objectCaching + * @type fabric.Image + * @default + */ + overlayImage: null, + /** + * Indicates whether toObject/toDatalessObject should include default values + * if set to false, takes precedence over the object value. + * @type Boolean + * @default + */ + includeDefaultValues: !0, + /** + * Indicates whether objects' state should be saved + * @type Boolean + * @default + */ + stateful: !1, + /** + * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove}, + * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas. + * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once + * since the renders are quequed and executed one per frame. + * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() ) + * Left default to true to do not break documentation and old app, fiddles. + * @type Boolean + * @default + */ + renderOnAddRemove: !0, + /** + * Indicates whether object controls (borders/controls) are rendered above overlay image + * @type Boolean + * @default + */ + controlsAboveOverlay: !1, + /** + * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas + * @type Boolean + * @default + */ + allowTouchScrolling: !1, + /** + * Indicates whether this canvas will use image smoothing, this is on by default in browsers + * @type Boolean + * @default + */ + imageSmoothingEnabled: !0, + /** + * The transformation (in the format of Canvas transform) which focuses the viewport + * @type Array + * @default + */ + viewportTransform: f.iMatrix.concat(), + /** + * if set to false background image is not affected by viewport transform + * @since 1.6.3 + * @type Boolean + * @default + */ + backgroundVpt: !0, + /** + * if set to false overlya image is not affected by viewport transform + * @since 1.6.3 + * @type Boolean + * @default + */ + overlayVpt: !0, + /** + * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens + * @type Boolean + * @default + */ + enableRetinaScaling: !0, + /** + * Describe canvas element extension over design + * properties are tl,tr,bl,br. + * if canvas is not zoomed/panned those points are the four corner of canvas + * if canvas is viewportTransformed you those points indicate the extension + * of canvas element in plain untrasformed coordinates + * The coordinates get updated with @method calcViewportBoundaries. + * @memberOf fabric.StaticCanvas.prototype + */ + vptCoords: {}, + /** + * Based on vptCoords and object.aCoords, skip rendering of objects that + * are not included in current viewport. + * May greatly help in applications with crowded canvas and use of zoom/pan + * If One of the corner of the bounding box of the object is on the canvas + * the objects get rendered. + * @memberOf fabric.StaticCanvas.prototype + * @type Boolean + * @default + */ + skipOffscreen: !0, + /** + * a fabricObject that, without stroke define a clipping area with their shape. filled in black + * the clipPath object gets used when the canvas has rendered, and the context is placed in the + * top left corner of the canvas. + * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true + * @type fabric.Object + */ + clipPath: void 0, + /** + * @private + * @param {HTMLElement | String} el <canvas> element to initialize instance on + * @param {Object} [options] Options object + */ + _initStatic: function(O, P) { + var B = this.requestRenderAllBound; + this._objects = [], this._createLowerCanvas(O), this._initOptions(P), this.interactive || this._initRetinaScaling(), P.overlayImage && this.setOverlayImage(P.overlayImage, B), P.backgroundImage && this.setBackgroundImage(P.backgroundImage, B), P.backgroundColor && this.setBackgroundColor(P.backgroundColor, B), P.overlayColor && this.setOverlayColor(P.overlayColor, B), this.calcOffset(); + }, + /** + * @private + */ + _isRetinaScaling: function() { + return f.devicePixelRatio !== 1 && this.enableRetinaScaling; + }, + /** + * @private + * @return {Number} retinaScaling if applied, otherwise 1; + */ + getRetinaScaling: function() { + return this._isRetinaScaling() ? f.devicePixelRatio : 1; + }, + /** + * @private + */ + _initRetinaScaling: function() { + if (this._isRetinaScaling()) { + var O = f.devicePixelRatio; + this.__initRetinaScaling(O, this.lowerCanvasEl, this.contextContainer), this.upperCanvasEl && this.__initRetinaScaling(O, this.upperCanvasEl, this.contextTop); + } + }, + __initRetinaScaling: function(O, P, B) { + P.setAttribute("width", this.width * O), P.setAttribute("height", this.height * O), B.scale(O, O); + }, + /** + * Calculates canvas element offset relative to the document + * This method is also attached as "resize" event handler of window + * @return {fabric.Canvas} instance + * @chainable + */ + calcOffset: function() { + return this._offset = _(this.lowerCanvasEl), this; + }, + /** + * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas + * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to + * @param {Function} callback callback to invoke when image is loaded and set as an overlay + * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}. + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo} + * @example Normal overlayImage with left/top = 0 + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * // Needed to position overlayImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example overlayImage with different properties + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top' + * }); + * @example Stretched overlayImage #1 - width/height correspond to canvas width/height + * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img, isError) { + * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); + * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas)); + * }); + * @example Stretched overlayImage #2 - width/height correspond to canvas width/height + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * width: canvas.width, + * height: canvas.height, + * // Needed to position overlayImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example overlayImage loaded from cross-origin + * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top', + * crossOrigin: 'anonymous' + * }); + */ + setOverlayImage: function(O, P, B) { + return this.__setBgOverlayImage("overlayImage", O, P, B); + }, + /** + * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas + * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to + * @param {Function} callback Callback to invoke when image is loaded and set as background + * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}. + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo} + * @example Normal backgroundImage with left/top = 0 + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * // Needed to position backgroundImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example backgroundImage with different properties + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top' + * }); + * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height + * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img, isError) { + * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); + * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas)); + * }); + * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * width: canvas.width, + * height: canvas.height, + * // Needed to position backgroundImage at 0/0 + * originX: 'left', + * originY: 'top' + * }); + * @example backgroundImage loaded from cross-origin + * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { + * opacity: 0.5, + * angle: 45, + * left: 400, + * top: 400, + * originX: 'left', + * originY: 'top', + * crossOrigin: 'anonymous' + * }); + */ + // TODO: fix stretched examples + setBackgroundImage: function(O, P, B) { + return this.__setBgOverlayImage("backgroundImage", O, P, B); + }, + /** + * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas + * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to + * @param {Function} callback Callback to invoke when foreground color is set + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo} + * @example Normal overlayColor - color value + * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as overlayColor + * canvas.setOverlayColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png' + * }, canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as overlayColor with repeat and offset + * canvas.setOverlayColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png', + * repeat: 'repeat', + * offsetX: 200, + * offsetY: 100 + * }, canvas.renderAll.bind(canvas)); + */ + setOverlayColor: function(O, P) { + return this.__setBgOverlayColor("overlayColor", O, P); + }, + /** + * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas + * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to + * @param {Function} callback Callback to invoke when background color is set + * @return {fabric.Canvas} thisArg + * @chainable + * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo} + * @example Normal backgroundColor - color value + * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as backgroundColor + * canvas.setBackgroundColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png' + * }, canvas.renderAll.bind(canvas)); + * @example fabric.Pattern used as backgroundColor with repeat and offset + * canvas.setBackgroundColor({ + * source: 'http://fabricjs.com/assets/escheresque_ste.png', + * repeat: 'repeat', + * offsetX: 200, + * offsetY: 100 + * }, canvas.renderAll.bind(canvas)); + */ + setBackgroundColor: function(O, P) { + return this.__setBgOverlayColor("backgroundColor", O, P); + }, + /** + * @private + * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage} + * or {@link fabric.StaticCanvas#overlayImage|overlayImage}) + * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to + * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay. The first argument is the created image, the second argument is a flag indicating whether an error occurred or not. + * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}. + */ + __setBgOverlayImage: function(O, P, B, H) { + return typeof P == "string" ? f.util.loadImage(P, function(Y, X) { + if (Y) { + var ee = new f.Image(Y, H); + this[O] = ee, ee.canvas = this; + } + B && B(Y, X); + }, this, H && H.crossOrigin) : (H && P.setOptions(H), this[O] = P, P && (P.canvas = this), B && B(P, !1)), this; + }, + /** + * @private + * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor} + * or {@link fabric.StaticCanvas#overlayColor|overlayColor}) + * @param {(Object|String|null)} color Object with pattern information, color value or null + * @param {Function} [callback] Callback is invoked when color is set + */ + __setBgOverlayColor: function(O, P, B) { + return this[O] = P, this._initGradient(P, O), this._initPattern(P, O, B), this; + }, + /** + * @private + */ + _createCanvasElement: function() { + var O = R(); + if (!O || (O.style || (O.style = {}), typeof O.getContext == "undefined")) + throw M; + return O; + }, + /** + * @private + * @param {Object} [options] Options object + */ + _initOptions: function(O) { + var P = this.lowerCanvasEl; + this._setOptions(O), this.width = this.width || parseInt(P.width, 10) || 0, this.height = this.height || parseInt(P.height, 10) || 0, this.lowerCanvasEl.style && (P.width = this.width, P.height = this.height, P.style.width = this.width + "px", P.style.height = this.height + "px", this.viewportTransform = this.viewportTransform.slice()); + }, + /** + * Creates a bottom canvas + * @private + * @param {HTMLElement} [canvasEl] + */ + _createLowerCanvas: function(O) { + O && O.getContext ? this.lowerCanvasEl = O : this.lowerCanvasEl = f.util.getById(O) || this._createCanvasElement(), f.util.addClass(this.lowerCanvasEl, "lower-canvas"), this._originalCanvasStyle = this.lowerCanvasEl.style, this.interactive && this._applyCanvasStyle(this.lowerCanvasEl), this.contextContainer = this.lowerCanvasEl.getContext("2d"); + }, + /** + * Returns canvas width (in px) + * @return {Number} + */ + getWidth: function() { + return this.width; + }, + /** + * Returns canvas height (in px) + * @return {Number} + */ + getHeight: function() { + return this.height; + }, + /** + * Sets width of this canvas instance + * @param {Number|String} value Value to set width to + * @param {Object} [options] Options object + * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions + * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions + * @return {fabric.Canvas} instance + * @chainable true + */ + setWidth: function(O, P) { + return this.setDimensions({ width: O }, P); + }, + /** + * Sets height of this canvas instance + * @param {Number|String} value Value to set height to + * @param {Object} [options] Options object + * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions + * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions + * @return {fabric.Canvas} instance + * @chainable true + */ + setHeight: function(O, P) { + return this.setDimensions({ height: O }, P); + }, + /** + * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em) + * @param {Object} dimensions Object with width/height properties + * @param {Number|String} [dimensions.width] Width of canvas element + * @param {Number|String} [dimensions.height] Height of canvas element + * @param {Object} [options] Options object + * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions + * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions + * @return {fabric.Canvas} thisArg + * @chainable + */ + setDimensions: function(O, P) { + var B; + P = P || {}; + for (var H in O) + B = O[H], P.cssOnly || (this._setBackstoreDimension(H, O[H]), B += "px", this.hasLostContext = !0), P.backstoreOnly || this._setCssDimension(H, B); + return this._isCurrentlyDrawing && this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(), this._initRetinaScaling(), this.calcOffset(), P.cssOnly || this.requestRenderAll(), this; + }, + /** + * Helper for setting width/height + * @private + * @param {String} prop property (width|height) + * @param {Number} value value to set property to + * @return {fabric.Canvas} instance + * @chainable true + */ + _setBackstoreDimension: function(O, P) { + return this.lowerCanvasEl[O] = P, this.upperCanvasEl && (this.upperCanvasEl[O] = P), this.cacheCanvasEl && (this.cacheCanvasEl[O] = P), this[O] = P, this; + }, + /** + * Helper for setting css width/height + * @private + * @param {String} prop property (width|height) + * @param {String} value value to set property to + * @return {fabric.Canvas} instance + * @chainable true + */ + _setCssDimension: function(O, P) { + return this.lowerCanvasEl.style[O] = P, this.upperCanvasEl && (this.upperCanvasEl.style[O] = P), this.wrapperEl && (this.wrapperEl.style[O] = P), this; + }, + /** + * Returns canvas zoom level + * @return {Number} + */ + getZoom: function() { + return this.viewportTransform[0]; + }, + /** + * Sets viewport transform of this canvas instance + * @param {Array} vpt the transform in the form of context.transform + * @return {fabric.Canvas} instance + * @chainable true + */ + setViewportTransform: function(O) { + var P = this._activeObject, B = this.backgroundImage, H = this.overlayImage, Y, X, ee; + for (this.viewportTransform = O, X = 0, ee = this._objects.length; X < ee; X++) + Y = this._objects[X], Y.group || Y.setCoords(!0); + return P && P.setCoords(), B && B.setCoords(!0), H && H.setCoords(!0), this.calcViewportBoundaries(), this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Sets zoom level of this canvas instance, the zoom centered around point + * meaning that following zoom to point with the same point will have the visual + * effect of the zoom originating from that point. The point won't move. + * It has nothing to do with canvas center or visual center of the viewport. + * @param {fabric.Point} point to zoom with respect to + * @param {Number} value to set zoom to, less than 1 zooms out + * @return {fabric.Canvas} instance + * @chainable true + */ + zoomToPoint: function(O, P) { + var B = O, H = this.viewportTransform.slice(0); + O = w(O, x(this.viewportTransform)), H[0] = P, H[3] = P; + var Y = w(O, H); + return H[4] += B.x - Y.x, H[5] += B.y - Y.y, this.setViewportTransform(H); + }, + /** + * Sets zoom level of this canvas instance + * @param {Number} value to set zoom to, less than 1 zooms out + * @return {fabric.Canvas} instance + * @chainable true + */ + setZoom: function(O) { + return this.zoomToPoint(new f.Point(0, 0), O), this; + }, + /** + * Pan viewport so as to place point at top left corner of canvas + * @param {fabric.Point} point to move to + * @return {fabric.Canvas} instance + * @chainable true + */ + absolutePan: function(O) { + var P = this.viewportTransform.slice(0); + return P[4] = -O.x, P[5] = -O.y, this.setViewportTransform(P); + }, + /** + * Pans viewpoint relatively + * @param {fabric.Point} point (position vector) to move by + * @return {fabric.Canvas} instance + * @chainable true + */ + relativePan: function(O) { + return this.absolutePan(new f.Point( + -O.x - this.viewportTransform[4], + -O.y - this.viewportTransform[5] + )); + }, + /** + * Returns <canvas> element corresponding to this instance + * @return {HTMLCanvasElement} + */ + getElement: function() { + return this.lowerCanvasEl; + }, + /** + * @private + * @param {fabric.Object} obj Object that was added + */ + _onObjectAdded: function(O) { + this.stateful && O.setupState(), O._set("canvas", this), O.setCoords(), this.fire("object:added", { target: O }), O.fire("added"); + }, + /** + * @private + * @param {fabric.Object} obj Object that was removed + */ + _onObjectRemoved: function(O) { + this.fire("object:removed", { target: O }), O.fire("removed"), delete O.canvas; + }, + /** + * Clears specified context of canvas element + * @param {CanvasRenderingContext2D} ctx Context to clear + * @return {fabric.Canvas} thisArg + * @chainable + */ + clearContext: function(O) { + return O.clearRect(0, 0, this.width, this.height), this; + }, + /** + * Returns context of canvas where objects are drawn + * @return {CanvasRenderingContext2D} + */ + getContext: function() { + return this.contextContainer; + }, + /** + * Clears all contexts (background, main, top) of an instance + * @return {fabric.Canvas} thisArg + * @chainable + */ + clear: function() { + return this.remove.apply(this, this.getObjects()), this.backgroundImage = null, this.overlayImage = null, this.backgroundColor = "", this.overlayColor = "", this._hasITextHandlers && (this.off("mouse:up", this._mouseUpITextHandler), this._iTextInstances = null, this._hasITextHandlers = !1), this.clearContext(this.contextContainer), this.fire("canvas:cleared"), this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Renders the canvas + * @return {fabric.Canvas} instance + * @chainable + */ + renderAll: function() { + var O = this.contextContainer; + return this.renderCanvas(O, this._objects), this; + }, + /** + * Function created to be instance bound at initialization + * used in requestAnimationFrame rendering + * Let the fabricJS call it. If you call it manually you could have more + * animationFrame stacking on to of each other + * for an imperative rendering, use canvas.renderAll + * @private + * @return {fabric.Canvas} instance + * @chainable + */ + renderAndReset: function() { + this.isRendering = 0, this.renderAll(); + }, + /** + * Append a renderAll request to next animation frame. + * unless one is already in progress, in that case nothing is done + * a boolean flag will avoid appending more. + * @return {fabric.Canvas} instance + * @chainable + */ + requestRenderAll: function() { + return this.isRendering || (this.isRendering = f.util.requestAnimFrame(this.renderAndResetBound)), this; + }, + /** + * Calculate the position of the 4 corner of canvas with current viewportTransform. + * helps to determinate when an object is in the current rendering viewport using + * object absolute coordinates ( aCoords ) + * @return {Object} points.tl + * @chainable + */ + calcViewportBoundaries: function() { + var O = {}, P = this.width, B = this.height, H = x(this.viewportTransform); + return O.tl = w({ x: 0, y: 0 }, H), O.br = w({ x: P, y: B }, H), O.tr = new f.Point(O.br.x, O.tl.y), O.bl = new f.Point(O.tl.x, O.br.y), this.vptCoords = O, O; + }, + cancelRequestedRender: function() { + this.isRendering && (f.util.cancelAnimFrame(this.isRendering), this.isRendering = 0); + }, + /** + * Renders background, objects, overlay and controls. + * @param {CanvasRenderingContext2D} ctx + * @param {Array} objects to render + * @return {fabric.Canvas} instance + * @chainable + */ + renderCanvas: function(O, P) { + var B = this.viewportTransform, H = this.clipPath; + this.cancelRequestedRender(), this.calcViewportBoundaries(), this.clearContext(O), f.util.setImageSmoothing(O, this.imageSmoothingEnabled), this.fire("before:render", { ctx: O }), this._renderBackground(O), O.save(), O.transform(B[0], B[1], B[2], B[3], B[4], B[5]), this._renderObjects(O, P), O.restore(), !this.controlsAboveOverlay && this.interactive && this.drawControls(O), H && (H.canvas = this, H.shouldCache(), H._transformDone = !0, H.renderCache({ forClipping: !0 }), this.drawClipPathOnCanvas(O)), this._renderOverlay(O), this.controlsAboveOverlay && this.interactive && this.drawControls(O), this.fire("after:render", { ctx: O }); + }, + /** + * Paint the cached clipPath on the lowerCanvasEl + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawClipPathOnCanvas: function(O) { + var P = this.viewportTransform, B = this.clipPath; + O.save(), O.transform(P[0], P[1], P[2], P[3], P[4], P[5]), O.globalCompositeOperation = "destination-in", B.transform(O), O.scale(1 / B.zoomX, 1 / B.zoomY), O.drawImage(B._cacheCanvas, -B.cacheTranslationX, -B.cacheTranslationY), O.restore(); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Array} objects to render + */ + _renderObjects: function(O, P) { + var B, H; + for (B = 0, H = P.length; B < H; ++B) + P[B] && P[B].render(O); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {string} property 'background' or 'overlay' + */ + _renderBackgroundOrOverlay: function(O, P) { + var B = this[P + "Color"], H = this[P + "Image"], Y = this.viewportTransform, X = this[P + "Vpt"]; + if (!(!B && !H)) { + if (B) { + O.save(), O.beginPath(), O.moveTo(0, 0), O.lineTo(this.width, 0), O.lineTo(this.width, this.height), O.lineTo(0, this.height), O.closePath(), O.fillStyle = B.toLive ? B.toLive(O, this) : B, X && O.transform(Y[0], Y[1], Y[2], Y[3], Y[4], Y[5]), O.transform(1, 0, 0, 1, B.offsetX || 0, B.offsetY || 0); + var ee = B.gradientTransform || B.patternTransform; + ee && O.transform(ee[0], ee[1], ee[2], ee[3], ee[4], ee[5]), O.fill(), O.restore(); + } + H && (O.save(), X && O.transform(Y[0], Y[1], Y[2], Y[3], Y[4], Y[5]), H.render(O), O.restore()); + } + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderBackground: function(O) { + this._renderBackgroundOrOverlay(O, "background"); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderOverlay: function(O) { + this._renderBackgroundOrOverlay(O, "overlay"); + }, + /** + * Returns coordinates of a center of canvas. + * Returned value is an object with top and left properties + * @return {Object} object with "top" and "left" number values + */ + getCenter: function() { + return { + top: this.height / 2, + left: this.width / 2 + }; + }, + /** + * Centers object horizontally in the canvas + * @param {fabric.Object} object Object to center horizontally + * @return {fabric.Canvas} thisArg + */ + centerObjectH: function(O) { + return this._centerObject(O, new f.Point(this.getCenter().left, O.getCenterPoint().y)); + }, + /** + * Centers object vertically in the canvas + * @param {fabric.Object} object Object to center vertically + * @return {fabric.Canvas} thisArg + * @chainable + */ + centerObjectV: function(O) { + return this._centerObject(O, new f.Point(O.getCenterPoint().x, this.getCenter().top)); + }, + /** + * Centers object vertically and horizontally in the canvas + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + centerObject: function(O) { + var P = this.getCenter(); + return this._centerObject(O, new f.Point(P.left, P.top)); + }, + /** + * Centers object vertically and horizontally in the viewport + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + viewportCenterObject: function(O) { + var P = this.getVpCenter(); + return this._centerObject(O, P); + }, + /** + * Centers object horizontally in the viewport, object.top is unchanged + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + viewportCenterObjectH: function(O) { + var P = this.getVpCenter(); + return this._centerObject(O, new f.Point(P.x, O.getCenterPoint().y)), this; + }, + /** + * Centers object Vertically in the viewport, object.top is unchanged + * @param {fabric.Object} object Object to center vertically and horizontally + * @return {fabric.Canvas} thisArg + * @chainable + */ + viewportCenterObjectV: function(O) { + var P = this.getVpCenter(); + return this._centerObject(O, new f.Point(O.getCenterPoint().x, P.y)); + }, + /** + * Calculate the point in canvas that correspond to the center of actual viewport. + * @return {fabric.Point} vpCenter, viewport center + * @chainable + */ + getVpCenter: function() { + var O = this.getCenter(), P = x(this.viewportTransform); + return w({ x: O.left, y: O.top }, P); + }, + /** + * @private + * @param {fabric.Object} object Object to center + * @param {fabric.Point} center Center point + * @return {fabric.Canvas} thisArg + * @chainable + */ + _centerObject: function(O, P) { + return O.setPositionByOrigin(P, "center", "center"), O.setCoords(), this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Returns dataless JSON representation of canvas + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {String} json string + */ + toDatalessJSON: function(O) { + return this.toDatalessObject(O); + }, + /** + * Returns object representation of canvas + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(O) { + return this._toObjectMethod("toObject", O); + }, + /** + * Returns dataless object representation of canvas + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toDatalessObject: function(O) { + return this._toObjectMethod("toDatalessObject", O); + }, + /** + * @private + */ + _toObjectMethod: function(O, P) { + var B = this.clipPath, H = { + version: f.version, + objects: this._toObjects(O, P) + }; + return B && !B.excludeFromExport && (H.clipPath = this._toObject(this.clipPath, O, P)), S(H, this.__serializeBgOverlay(O, P)), f.util.populateWithProperties(this, H, P), H; + }, + /** + * @private + */ + _toObjects: function(O, P) { + return this._objects.filter(function(B) { + return !B.excludeFromExport; + }).map(function(B) { + return this._toObject(B, O, P); + }, this); + }, + /** + * @private + */ + _toObject: function(O, P, B) { + var H; + this.includeDefaultValues || (H = O.includeDefaultValues, O.includeDefaultValues = !1); + var Y = O[P](B); + return this.includeDefaultValues || (O.includeDefaultValues = H), Y; + }, + /** + * @private + */ + __serializeBgOverlay: function(O, P) { + var B = {}, H = this.backgroundImage, Y = this.overlayImage, X = this.backgroundColor, ee = this.overlayColor; + return X && X.toObject ? X.excludeFromExport || (B.background = X.toObject(P)) : X && (B.background = X), ee && ee.toObject ? ee.excludeFromExport || (B.overlay = ee.toObject(P)) : ee && (B.overlay = ee), H && !H.excludeFromExport && (B.backgroundImage = this._toObject(H, O, P)), Y && !Y.excludeFromExport && (B.overlayImage = this._toObject(Y, O, P)), B; + }, + /* _TO_SVG_START_ */ + /** + * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true, + * a zoomed canvas will then produce zoomed SVG output. + * @type Boolean + * @default + */ + svgViewportTransformation: !0, + /** + * Returns SVG representation of canvas + * @function + * @param {Object} [options] Options object for SVG output + * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included + * @param {Object} [options.viewBox] SVG viewbox object + * @param {Number} [options.viewBox.x] x-coordinate of viewbox + * @param {Number} [options.viewBox.y] y-coordinate of viewbox + * @param {Number} [options.viewBox.width] Width of viewbox + * @param {Number} [options.viewBox.height] Height of viewbox + * @param {String} [options.encoding=UTF-8] Encoding of SVG output + * @param {String} [options.width] desired width of svg with or without units + * @param {String} [options.height] desired height of svg with or without units + * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation. + * @return {String} SVG string + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization} + * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo} + * @example Normal SVG output + * var svg = canvas.toSVG(); + * @example SVG output without preamble (without <?xml ../>) + * var svg = canvas.toSVG({suppressPreamble: true}); + * @example SVG output with viewBox attribute + * var svg = canvas.toSVG({ + * viewBox: { + * x: 100, + * y: 100, + * width: 200, + * height: 300 + * } + * }); + * @example SVG output with different encoding (default: UTF-8) + * var svg = canvas.toSVG({encoding: 'ISO-8859-1'}); + * @example Modify SVG output with reviver function + * var svg = canvas.toSVG(null, function(svg) { + * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', ''); + * }); + */ + toSVG: function(O, P) { + O || (O = {}), O.reviver = P; + var B = []; + return this._setSVGPreamble(B, O), this._setSVGHeader(B, O), this.clipPath && B.push(' +`), this._setSVGBgOverlayColor(B, "background"), this._setSVGBgOverlayImage(B, "backgroundImage", P), this._setSVGObjects(B, P), this.clipPath && B.push(` +`), this._setSVGBgOverlayColor(B, "overlay"), this._setSVGBgOverlayImage(B, "overlayImage", P), B.push(""), B.join(""); + }, + /** + * @private + */ + _setSVGPreamble: function(O, P) { + P.suppressPreamble || O.push( + ' +`, + ' +` + ); + }, + /** + * @private + */ + _setSVGHeader: function(O, P) { + var B = P.width || this.width, H = P.height || this.height, Y, X = 'viewBox="0 0 ' + this.width + " " + this.height + '" ', ee = f.Object.NUM_FRACTION_DIGITS; + P.viewBox ? X = 'viewBox="' + P.viewBox.x + " " + P.viewBox.y + " " + P.viewBox.width + " " + P.viewBox.height + '" ' : this.svgViewportTransformation && (Y = this.viewportTransform, X = 'viewBox="' + I(-Y[4] / Y[0], ee) + " " + I(-Y[5] / Y[3], ee) + " " + I(this.width / Y[0], ee) + " " + I(this.height / Y[3], ee) + '" '), O.push( + " +`, + "Created with Fabric.js ", + f.version, + ` +`, + ` +`, + this.createSVGFontFacesMarkup(), + this.createSVGRefElementsMarkup(), + this.createSVGClipPathMarkup(P), + ` +` + ); + }, + createSVGClipPathMarkup: function(O) { + var P = this.clipPath; + return P ? (P.clipPathId = "CLIPPATH_" + f.Object.__uid++, ' +` + this.clipPath.toClipPathSVG(O.reviver) + ` +`) : ""; + }, + /** + * Creates markup containing SVG referenced elements like patterns, gradients etc. + * @return {String} + */ + createSVGRefElementsMarkup: function() { + var O = this, P = ["background", "overlay"].map(function(B) { + var H = O[B + "Color"]; + if (H && H.toLive) { + var Y = O[B + "Vpt"], X = O.viewportTransform, ee = { + width: O.width / (Y ? X[0] : 1), + height: O.height / (Y ? X[3] : 1) + }; + return H.toSVG( + ee, + { additionalTransform: Y ? f.util.matrixToSVG(X) : "" } + ); + } + }); + return P.join(""); + }, + /** + * Creates markup containing SVG font faces, + * font URLs for font faces must be collected by developers + * and are not extracted from the DOM by fabricjs + * @param {Array} objects Array of fabric objects + * @return {String} + */ + createSVGFontFacesMarkup: function() { + var O = "", P = {}, B, H, Y, X, ee, ae, J, ne, fe, de = f.fontPaths, Te = []; + for (this._objects.forEach(function Ve(pe) { + Te.push(pe), pe._objects && pe._objects.forEach(Ve); + }), ne = 0, fe = Te.length; ne < fe; ne++) + if (B = Te[ne], H = B.fontFamily, !(B.type.indexOf("text") === -1 || P[H] || !de[H]) && (P[H] = !0, !!B.styles)) { + Y = B.styles; + for (ee in Y) { + X = Y[ee]; + for (J in X) + ae = X[J], H = ae.fontFamily, !P[H] && de[H] && (P[H] = !0); + } + } + for (var be in P) + O += [ + ` @font-face { +`, + " font-family: '", + be, + `'; +`, + " src: url('", + de[be], + `'); +`, + ` } +` + ].join(""); + return O && (O = [ + ' +` + ].join("")), O; + }, + /** + * @private + */ + _setSVGObjects: function(O, P) { + var B, H, Y, X = this._objects; + for (H = 0, Y = X.length; H < Y; H++) + B = X[H], !B.excludeFromExport && this._setSVGObject(O, B, P); + }, + /** + * @private + */ + _setSVGObject: function(O, P, B) { + O.push(P.toSVG(B)); + }, + /** + * @private + */ + _setSVGBgOverlayImage: function(O, P, B) { + this[P] && !this[P].excludeFromExport && this[P].toSVG && O.push(this[P].toSVG(B)); + }, + /** + * @private + */ + _setSVGBgOverlayColor: function(O, P) { + var B = this[P + "Color"], H = this.viewportTransform, Y = this.width, X = this.height; + if (B) + if (B.toLive) { + var ee = B.repeat, ae = f.util.invertTransform(H), J = this[P + "Vpt"], ne = J ? f.util.matrixToSVG(ae) : ""; + O.push( + ' +` + ); + } else + O.push( + ' +` + ); + }, + /* _TO_SVG_END_ */ + /** + * Moves an object or the objects of a multiple selection + * to the bottom of the stack of drawn objects + * @param {fabric.Object} object Object to send to back + * @return {fabric.Canvas} thisArg + * @chainable + */ + sendToBack: function(O) { + if (!O) + return this; + var P = this._activeObject, B, H, Y; + if (O === P && O.type === "activeSelection") + for (Y = P._objects, B = Y.length; B--; ) + H = Y[B], E(this._objects, H), this._objects.unshift(H); + else + E(this._objects, O), this._objects.unshift(O); + return this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Moves an object or the objects of a multiple selection + * to the top of the stack of drawn objects + * @param {fabric.Object} object Object to send + * @return {fabric.Canvas} thisArg + * @chainable + */ + bringToFront: function(O) { + if (!O) + return this; + var P = this._activeObject, B, H, Y; + if (O === P && O.type === "activeSelection") + for (Y = P._objects, B = 0; B < Y.length; B++) + H = Y[B], E(this._objects, H), this._objects.push(H); + else + E(this._objects, O), this._objects.push(O); + return this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * Moves an object or a selection down in stack of drawn objects + * An optional parameter, intersecting allows to move the object in behind + * the first intersecting object. Where intersection is calculated with + * bounding box. If no intersection is found, there will not be change in the + * stack. + * @param {fabric.Object} object Object to send + * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object + * @return {fabric.Canvas} thisArg + * @chainable + */ + sendBackwards: function(O, P) { + if (!O) + return this; + var B = this._activeObject, H, Y, X, ee, ae, J = 0; + if (O === B && O.type === "activeSelection") + for (ae = B._objects, H = 0; H < ae.length; H++) + Y = ae[H], X = this._objects.indexOf(Y), X > 0 + J && (ee = X - 1, E(this._objects, Y), this._objects.splice(ee, 0, Y)), J++; + else + X = this._objects.indexOf(O), X !== 0 && (ee = this._findNewLowerIndex(O, X, P), E(this._objects, O), this._objects.splice(ee, 0, O)); + return this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * @private + */ + _findNewLowerIndex: function(O, P, B) { + var H, Y; + if (B) + for (H = P, Y = P - 1; Y >= 0; --Y) { + var X = O.intersectsWithObject(this._objects[Y]) || O.isContainedWithinObject(this._objects[Y]) || this._objects[Y].isContainedWithinObject(O); + if (X) { + H = Y; + break; + } + } + else + H = P - 1; + return H; + }, + /** + * Moves an object or a selection up in stack of drawn objects + * An optional parameter, intersecting allows to move the object in front + * of the first intersecting object. Where intersection is calculated with + * bounding box. If no intersection is found, there will not be change in the + * stack. + * @param {fabric.Object} object Object to send + * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object + * @return {fabric.Canvas} thisArg + * @chainable + */ + bringForward: function(O, P) { + if (!O) + return this; + var B = this._activeObject, H, Y, X, ee, ae, J = 0; + if (O === B && O.type === "activeSelection") + for (ae = B._objects, H = ae.length; H--; ) + Y = ae[H], X = this._objects.indexOf(Y), X < this._objects.length - 1 - J && (ee = X + 1, E(this._objects, Y), this._objects.splice(ee, 0, Y)), J++; + else + X = this._objects.indexOf(O), X !== this._objects.length - 1 && (ee = this._findNewUpperIndex(O, X, P), E(this._objects, O), this._objects.splice(ee, 0, O)); + return this.renderOnAddRemove && this.requestRenderAll(), this; + }, + /** + * @private + */ + _findNewUpperIndex: function(O, P, B) { + var H, Y, X; + if (B) + for (H = P, Y = P + 1, X = this._objects.length; Y < X; ++Y) { + var ee = O.intersectsWithObject(this._objects[Y]) || O.isContainedWithinObject(this._objects[Y]) || this._objects[Y].isContainedWithinObject(O); + if (ee) { + H = Y; + break; + } + } + else + H = P + 1; + return H; + }, + /** + * Moves an object to specified level in stack of drawn objects + * @param {fabric.Object} object Object to send + * @param {Number} index Position to move to + * @return {fabric.Canvas} thisArg + * @chainable + */ + moveTo: function(O, P) { + return E(this._objects, O), this._objects.splice(P, 0, O), this.renderOnAddRemove && this.requestRenderAll(); + }, + /** + * Clears a canvas element and dispose objects + * @return {fabric.Canvas} thisArg + * @chainable + */ + dispose: function() { + return this.isRendering && (f.util.cancelAnimFrame(this.isRendering), this.isRendering = 0), this.forEachObject(function(O) { + O.dispose && O.dispose(); + }), this._objects = [], this.backgroundImage && this.backgroundImage.dispose && this.backgroundImage.dispose(), this.backgroundImage = null, this.overlayImage && this.overlayImage.dispose && this.overlayImage.dispose(), this.overlayImage = null, this._iTextInstances = null, this.contextContainer = null, this.lowerCanvasEl.classList.remove("lower-canvas"), this.lowerCanvasEl.style = this._originalCanvasStyle, delete this._originalCanvasStyle, this.lowerCanvasEl.setAttribute("width", this.width), this.lowerCanvasEl.setAttribute("height", this.height), f.util.cleanUpJsdomNode(this.lowerCanvasEl), this.lowerCanvasEl = void 0, this; + }, + /** + * Returns a string representation of an instance + * @return {String} string representation of an instance + */ + toString: function() { + return "#"; + } + } + ), S(f.StaticCanvas.prototype, f.Observable), S(f.StaticCanvas.prototype, f.Collection), S(f.StaticCanvas.prototype, f.DataURLExporter), S( + f.StaticCanvas, + /** @lends fabric.StaticCanvas */ + { + /** + * @static + * @type String + * @default + */ + EMPTY_JSON: '{"objects": [], "background": "white"}', + /** + * Provides a way to check support of some of the canvas methods + * (either those of HTMLCanvasElement itself, or rendering context) + * + * @param {String} methodName Method to check support for; + * Could be one of "setLineDash" + * @return {Boolean | null} `true` if method is supported (or at least exists), + * `null` if canvas element or context can not be initialized + */ + supports: function(O) { + var P = R(); + if (!P || !P.getContext) + return null; + var B = P.getContext("2d"); + if (!B) + return null; + switch (O) { + case "setLineDash": + return typeof B.setLineDash != "undefined"; + default: + return null; + } + } + } + ), f.StaticCanvas.prototype.toJSON = f.StaticCanvas.prototype.toObject, f.isLikelyNode && (f.StaticCanvas.prototype.createPNGStream = function() { + var O = b(this.lowerCanvasEl); + return O && O.createPNGStream(); + }, f.StaticCanvas.prototype.createJPEGStream = function(O) { + var P = b(this.lowerCanvasEl); + return P && P.createJPEGStream(O); + }); + }(), f.BaseBrush = f.util.createClass( + /** @lends fabric.BaseBrush.prototype */ + { + /** + * Color of a brush + * @type String + * @default + */ + color: "rgb(0, 0, 0)", + /** + * Width of a brush, has to be a Number, no string literals + * @type Number + * @default + */ + width: 1, + /** + * Shadow object representing shadow of this shape. + * Backwards incompatibility note: This property replaces "shadowColor" (String), "shadowOffsetX" (Number), + * "shadowOffsetY" (Number) and "shadowBlur" (Number) since v1.2.12 + * @type fabric.Shadow + * @default + */ + shadow: null, + /** + * Line endings style of a brush (one of "butt", "round", "square") + * @type String + * @default + */ + strokeLineCap: "round", + /** + * Corner style of a brush (one of "bevel", "round", "miter") + * @type String + * @default + */ + strokeLineJoin: "round", + /** + * Maximum miter length (used for strokeLineJoin = "miter") of a brush's + * @type Number + * @default + */ + strokeMiterLimit: 10, + /** + * Stroke Dash Array. + * @type Array + * @default + */ + strokeDashArray: null, + /** + * When `true`, the free drawing is limited to the whiteboard size. Default to false. + * @type Boolean + * @default false + */ + limitedToCanvasSize: !1, + /** + * Sets brush styles + * @private + */ + _setBrushStyles: function() { + var S = this.canvas.contextTop; + S.strokeStyle = this.color, S.lineWidth = this.width, S.lineCap = this.strokeLineCap, S.miterLimit = this.strokeMiterLimit, S.lineJoin = this.strokeLineJoin, S.setLineDash(this.strokeDashArray || []); + }, + /** + * Sets the transformation on given context + * @param {RenderingContext2d} ctx context to render on + * @private + */ + _saveAndTransform: function(S) { + var _ = this.canvas.viewportTransform; + S.save(), S.transform(_[0], _[1], _[2], _[3], _[4], _[5]); + }, + /** + * Sets brush shadow styles + * @private + */ + _setShadow: function() { + if (this.shadow) { + var S = this.canvas, _ = this.shadow, E = S.contextTop, I = S.getZoom(); + S && S._isRetinaScaling() && (I *= f.devicePixelRatio), E.shadowColor = _.color, E.shadowBlur = _.blur * I, E.shadowOffsetX = _.offsetX * I, E.shadowOffsetY = _.offsetY * I; + } + }, + needsFullRender: function() { + var S = new f.Color(this.color); + return S.getAlpha() < 1 || !!this.shadow; + }, + /** + * Removes brush shadow styles + * @private + */ + _resetShadow: function() { + var S = this.canvas.contextTop; + S.shadowColor = "", S.shadowBlur = S.shadowOffsetX = S.shadowOffsetY = 0; + }, + /** + * Check is pointer is outside canvas boundaries + * @param {Object} pointer + * @private + */ + _isOutSideCanvas: function(S) { + return S.x < 0 || S.x > this.canvas.getWidth() || S.y < 0 || S.y > this.canvas.getHeight(); + } + } + ), function() { + f.PencilBrush = f.util.createClass( + f.BaseBrush, + /** @lends fabric.PencilBrush.prototype */ + { + /** + * Discard points that are less than `decimate` pixel distant from each other + * @type Number + * @default 0.4 + */ + decimate: 0.4, + /** + * Constructor + * @param {fabric.Canvas} canvas + * @return {fabric.PencilBrush} Instance of a pencil brush + */ + initialize: function(S) { + this.canvas = S, this._points = []; + }, + /** + * Invoked inside on mouse down and mouse move + * @param {Object} pointer + */ + _drawSegment: function(S, _, E) { + var I = _.midPointFrom(E); + return S.quadraticCurveTo(_.x, _.y, I.x, I.y), I; + }, + /** + * Invoked on mouse down + * @param {Object} pointer + */ + onMouseDown: function(S, _) { + this.canvas._isMainEvent(_.e) && (this._prepareForDrawing(S), this._captureDrawingPath(S), this._render()); + }, + /** + * Invoked on mouse move + * @param {Object} pointer + */ + onMouseMove: function(S, _) { + if (this.canvas._isMainEvent(_.e) && !(this.limitedToCanvasSize === !0 && this._isOutSideCanvas(S)) && this._captureDrawingPath(S) && this._points.length > 1) + if (this.needsFullRender()) + this.canvas.clearContext(this.canvas.contextTop), this._render(); + else { + var E = this._points, I = E.length, w = this.canvas.contextTop; + this._saveAndTransform(w), this.oldEnd && (w.beginPath(), w.moveTo(this.oldEnd.x, this.oldEnd.y)), this.oldEnd = this._drawSegment(w, E[I - 2], E[I - 1], !0), w.stroke(), w.restore(); + } + }, + /** + * Invoked on mouse up + */ + onMouseUp: function(S) { + return this.canvas._isMainEvent(S.e) ? (this.oldEnd = void 0, this._finalizeAndAddPath(), !1) : !0; + }, + /** + * @private + * @param {Object} pointer Actual mouse position related to the canvas. + */ + _prepareForDrawing: function(S) { + var _ = new f.Point(S.x, S.y); + this._reset(), this._addPoint(_), this.canvas.contextTop.moveTo(_.x, _.y); + }, + /** + * @private + * @param {fabric.Point} point Point to be added to points array + */ + _addPoint: function(S) { + return this._points.length > 1 && S.eq(this._points[this._points.length - 1]) ? !1 : (this._points.push(S), !0); + }, + /** + * Clear points array and set contextTop canvas style. + * @private + */ + _reset: function() { + this._points = [], this._setBrushStyles(), this._setShadow(); + }, + /** + * @private + * @param {Object} pointer Actual mouse position related to the canvas. + */ + _captureDrawingPath: function(S) { + var _ = new f.Point(S.x, S.y); + return this._addPoint(_); + }, + /** + * Draw a smooth path on the topCanvas using quadraticCurveTo + * @private + */ + _render: function() { + var S = this.canvas.contextTop, _, E, I = this._points[0], w = this._points[1]; + if (this._saveAndTransform(S), S.beginPath(), this._points.length === 2 && I.x === w.x && I.y === w.y) { + var x = this.width / 1e3; + I = new f.Point(I.x, I.y), w = new f.Point(w.x, w.y), I.x -= x, w.x += x; + } + for (S.moveTo(I.x, I.y), _ = 1, E = this._points.length; _ < E; _++) + this._drawSegment(S, I, w), I = this._points[_], w = this._points[_ + 1]; + S.lineTo(I.x, I.y), S.stroke(), S.restore(); + }, + /** + * Converts points to SVG path + * @param {Array} points Array of points + * @return {(string|number)[][]} SVG path commands + */ + convertPointsToSVGPath: function(S) { + var _ = this.width / 1e3; + return f.util.getSmoothPathFromPoints(S, _); + }, + /** + * @private + * @param {(string|number)[][]} pathData SVG path commands + * @returns {boolean} + */ + _isEmptySVGPath: function(S) { + var _ = f.util.joinPath(S); + return _ === "M 0 0 Q 0 0 0 0 L 0 0"; + }, + /** + * Creates fabric.Path object to add on canvas + * @param {(string|number)[][]} pathData Path data + * @return {fabric.Path} Path to add on canvas + */ + createPath: function(S) { + var _ = new f.Path(S, { + fill: null, + stroke: this.color, + strokeWidth: this.width, + strokeLineCap: this.strokeLineCap, + strokeMiterLimit: this.strokeMiterLimit, + strokeLineJoin: this.strokeLineJoin, + strokeDashArray: this.strokeDashArray + }); + return this.shadow && (this.shadow.affectStroke = !0, _.shadow = new f.Shadow(this.shadow)), _; + }, + /** + * Decimate points array with the decimate value + */ + decimatePoints: function(S, _) { + if (S.length <= 2) + return S; + var E = this.canvas.getZoom(), I = Math.pow(_ / E, 2), w, x = S.length - 1, b = S[0], R = [b], M; + for (w = 1; w < x - 1; w++) + M = Math.pow(b.x - S[w].x, 2) + Math.pow(b.y - S[w].y, 2), M >= I && (b = S[w], R.push(b)); + return R.push(S[x]), R; + }, + /** + * On mouseup after drawing the path on contextTop canvas + * we use the points captured to create an new fabric path object + * and add it to the fabric canvas. + */ + _finalizeAndAddPath: function() { + var S = this.canvas.contextTop; + S.closePath(), this.decimate && (this._points = this.decimatePoints(this._points, this.decimate)); + var _ = this.convertPointsToSVGPath(this._points); + if (this._isEmptySVGPath(_)) { + this.canvas.requestRenderAll(); + return; + } + var E = this.createPath(_); + this.canvas.clearContext(this.canvas.contextTop), this.canvas.fire("before:path:created", { path: E }), this.canvas.add(E), this.canvas.requestRenderAll(), E.setCoords(), this._resetShadow(), this.canvas.fire("path:created", { path: E }); + } + } + ); + }(), f.CircleBrush = f.util.createClass( + f.BaseBrush, + /** @lends fabric.CircleBrush.prototype */ + { + /** + * Width of a brush + * @type Number + * @default + */ + width: 10, + /** + * Constructor + * @param {fabric.Canvas} canvas + * @return {fabric.CircleBrush} Instance of a circle brush + */ + initialize: function(S) { + this.canvas = S, this.points = []; + }, + /** + * Invoked inside on mouse down and mouse move + * @param {Object} pointer + */ + drawDot: function(S) { + var _ = this.addPoint(S), E = this.canvas.contextTop; + this._saveAndTransform(E), this.dot(E, _), E.restore(); + }, + dot: function(S, _) { + S.fillStyle = _.fill, S.beginPath(), S.arc(_.x, _.y, _.radius, 0, Math.PI * 2, !1), S.closePath(), S.fill(); + }, + /** + * Invoked on mouse down + */ + onMouseDown: function(S) { + this.points.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.drawDot(S); + }, + /** + * Render the full state of the brush + * @private + */ + _render: function() { + var S = this.canvas.contextTop, _, E, I = this.points; + for (this._saveAndTransform(S), _ = 0, E = I.length; _ < E; _++) + this.dot(S, I[_]); + S.restore(); + }, + /** + * Invoked on mouse move + * @param {Object} pointer + */ + onMouseMove: function(S) { + this.limitedToCanvasSize === !0 && this._isOutSideCanvas(S) || (this.needsFullRender() ? (this.canvas.clearContext(this.canvas.contextTop), this.addPoint(S), this._render()) : this.drawDot(S)); + }, + /** + * Invoked on mouse up + */ + onMouseUp: function() { + var S = this.canvas.renderOnAddRemove, _, E; + this.canvas.renderOnAddRemove = !1; + var I = []; + for (_ = 0, E = this.points.length; _ < E; _++) { + var w = this.points[_], x = new f.Circle({ + radius: w.radius, + left: w.x, + top: w.y, + originX: "center", + originY: "center", + fill: w.fill + }); + this.shadow && (x.shadow = new f.Shadow(this.shadow)), I.push(x); + } + var b = new f.Group(I); + b.canvas = this.canvas, this.canvas.fire("before:path:created", { path: b }), this.canvas.add(b), this.canvas.fire("path:created", { path: b }), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = S, this.canvas.requestRenderAll(); + }, + /** + * @param {Object} pointer + * @return {fabric.Point} Just added pointer point + */ + addPoint: function(S) { + var _ = new f.Point(S.x, S.y), E = f.util.getRandomInt( + Math.max(0, this.width - 20), + this.width + 20 + ) / 2, I = new f.Color(this.color).setAlpha(f.util.getRandomInt(0, 100) / 100).toRgba(); + return _.radius = E, _.fill = I, this.points.push(_), _; + } + } + ), f.SprayBrush = f.util.createClass( + f.BaseBrush, + /** @lends fabric.SprayBrush.prototype */ + { + /** + * Width of a spray + * @type Number + * @default + */ + width: 10, + /** + * Density of a spray (number of dots per chunk) + * @type Number + * @default + */ + density: 20, + /** + * Width of spray dots + * @type Number + * @default + */ + dotWidth: 1, + /** + * Width variance of spray dots + * @type Number + * @default + */ + dotWidthVariance: 1, + /** + * Whether opacity of a dot should be random + * @type Boolean + * @default + */ + randomOpacity: !1, + /** + * Whether overlapping dots (rectangles) should be removed (for performance reasons) + * @type Boolean + * @default + */ + optimizeOverlapping: !0, + /** + * Constructor + * @param {fabric.Canvas} canvas + * @return {fabric.SprayBrush} Instance of a spray brush + */ + initialize: function(S) { + this.canvas = S, this.sprayChunks = []; + }, + /** + * Invoked on mouse down + * @param {Object} pointer + */ + onMouseDown: function(S) { + this.sprayChunks.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.addSprayChunk(S), this.render(this.sprayChunkPoints); + }, + /** + * Invoked on mouse move + * @param {Object} pointer + */ + onMouseMove: function(S) { + this.limitedToCanvasSize === !0 && this._isOutSideCanvas(S) || (this.addSprayChunk(S), this.render(this.sprayChunkPoints)); + }, + /** + * Invoked on mouse up + */ + onMouseUp: function() { + var S = this.canvas.renderOnAddRemove; + this.canvas.renderOnAddRemove = !1; + for (var _ = [], E = 0, I = this.sprayChunks.length; E < I; E++) + for (var w = this.sprayChunks[E], x = 0, b = w.length; x < b; x++) { + var R = new f.Rect({ + width: w[x].width, + height: w[x].width, + left: w[x].x + 1, + top: w[x].y + 1, + originX: "center", + originY: "center", + fill: this.color + }); + _.push(R); + } + this.optimizeOverlapping && (_ = this._getOptimizedRects(_)); + var M = new f.Group(_); + this.shadow && M.set("shadow", new f.Shadow(this.shadow)), this.canvas.fire("before:path:created", { path: M }), this.canvas.add(M), this.canvas.fire("path:created", { path: M }), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = S, this.canvas.requestRenderAll(); + }, + /** + * @private + * @param {Array} rects + */ + _getOptimizedRects: function(S) { + var _ = {}, E, I, w; + for (I = 0, w = S.length; I < w; I++) + E = S[I].left + "" + S[I].top, _[E] || (_[E] = S[I]); + var x = []; + for (E in _) + x.push(_[E]); + return x; + }, + /** + * Render new chunk of spray brush + */ + render: function(S) { + var _ = this.canvas.contextTop, E, I; + for (_.fillStyle = this.color, this._saveAndTransform(_), E = 0, I = S.length; E < I; E++) { + var w = S[E]; + typeof w.opacity != "undefined" && (_.globalAlpha = w.opacity), _.fillRect(w.x, w.y, w.width, w.width); + } + _.restore(); + }, + /** + * Render all spray chunks + */ + _render: function() { + var S = this.canvas.contextTop, _, E; + for (S.fillStyle = this.color, this._saveAndTransform(S), _ = 0, E = this.sprayChunks.length; _ < E; _++) + this.render(this.sprayChunks[_]); + S.restore(); + }, + /** + * @param {Object} pointer + */ + addSprayChunk: function(S) { + this.sprayChunkPoints = []; + var _, E, I, w = this.width / 2, x; + for (x = 0; x < this.density; x++) { + _ = f.util.getRandomInt(S.x - w, S.x + w), E = f.util.getRandomInt(S.y - w, S.y + w), this.dotWidthVariance ? I = f.util.getRandomInt( + // bottom clamp width to 1 + Math.max(1, this.dotWidth - this.dotWidthVariance), + this.dotWidth + this.dotWidthVariance + ) : I = this.dotWidth; + var b = new f.Point(_, E); + b.width = I, this.randomOpacity && (b.opacity = f.util.getRandomInt(0, 100) / 100), this.sprayChunkPoints.push(b); + } + this.sprayChunks.push(this.sprayChunkPoints); + } + } + ), f.PatternBrush = f.util.createClass( + f.PencilBrush, + /** @lends fabric.PatternBrush.prototype */ + { + getPatternSrc: function() { + var S = 20, _ = 5, E = f.util.createCanvasElement(), I = E.getContext("2d"); + return E.width = E.height = S + _, I.fillStyle = this.color, I.beginPath(), I.arc(S / 2, S / 2, S / 2, 0, Math.PI * 2, !1), I.closePath(), I.fill(), E; + }, + getPatternSrcFunction: function() { + return String(this.getPatternSrc).replace("this.color", '"' + this.color + '"'); + }, + /** + * Creates "pattern" instance property + */ + getPattern: function() { + return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), "repeat"); + }, + /** + * Sets brush styles + */ + _setBrushStyles: function() { + this.callSuper("_setBrushStyles"), this.canvas.contextTop.strokeStyle = this.getPattern(); + }, + /** + * Creates path + */ + createPath: function(S) { + var _ = this.callSuper("createPath", S), E = _._getLeftTopCoords().scalarAdd(_.strokeWidth / 2); + return _.stroke = new f.Pattern({ + source: this.source || this.getPatternSrcFunction(), + offsetX: -E.x, + offsetY: -E.y + }), _; + } + } + ), function() { + var S = f.util.getPointer, _ = f.util.degreesToRadians, E = f.util.isTouchEvent; + f.Canvas = f.util.createClass( + f.StaticCanvas, + /** @lends fabric.Canvas.prototype */ + { + /** + * Constructor + * @param {HTMLElement | String} el <canvas> element to initialize instance on + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(w, x) { + x || (x = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(w, x), this._initInteractive(), this._createCacheCanvas(); + }, + /** + * When true, objects can be transformed by one side (unproportionally) + * when dragged on the corners that normally would not do that. + * @type Boolean + * @default + * @since fabric 4.0 // changed name and default value + */ + uniformScaling: !0, + /** + * Indicates which key switches uniform scaling. + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled. + * totally wrong named. this sounds like `uniform scaling` + * if Canvas.uniformScaling is true, pressing this will set it to false + * and viceversa. + * @since 1.6.2 + * @type String + * @default + */ + uniScaleKey: "shiftKey", + /** + * When true, objects use center point as the origin of scale transformation. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredScaling: !1, + /** + * When true, objects use center point as the origin of rotate transformation. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredRotation: !1, + /** + * Indicates which key enable centered Transform + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled feature disabled. + * @since 1.6.2 + * @type String + * @default + */ + centeredKey: "altKey", + /** + * Indicates which key enable alternate action on corner + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled feature disabled. + * @since 1.6.2 + * @type String + * @default + */ + altActionKey: "shiftKey", + /** + * Indicates that canvas is interactive. This property should not be changed. + * @type Boolean + * @default + */ + interactive: !0, + /** + * Indicates whether group selection should be enabled + * @type Boolean + * @default + */ + selection: !0, + /** + * Indicates which key or keys enable multiple click selection + * Pass value as a string or array of strings + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * If `null` or empty or containing any other string that is not a modifier key + * feature is disabled. + * @since 1.6.2 + * @type String|Array + * @default + */ + selectionKey: "shiftKey", + /** + * Indicates which key enable alternative selection + * in case of target overlapping with active object + * values: 'altKey', 'shiftKey', 'ctrlKey'. + * For a series of reason that come from the general expectations on how + * things should work, this feature works only for preserveObjectStacking true. + * If `null` or 'none' or any other string that is not a modifier key + * feature is disabled. + * @since 1.6.5 + * @type null|String + * @default + */ + altSelectionKey: null, + /** + * Color of selection + * @type String + * @default + */ + selectionColor: "rgba(100, 100, 255, 0.3)", + // blue + /** + * Default dash array pattern + * If not empty the selection border is dashed + * @type Array + */ + selectionDashArray: [], + /** + * Color of the border of selection (usually slightly darker than color of selection itself) + * @type String + * @default + */ + selectionBorderColor: "rgba(255, 255, 255, 0.3)", + /** + * Width of a line used in object/group selection + * @type Number + * @default + */ + selectionLineWidth: 1, + /** + * Select only shapes that are fully contained in the dragged selection rectangle. + * @type Boolean + * @default + */ + selectionFullyContained: !1, + /** + * Default cursor value used when hovering over an object on canvas + * @type String + * @default + */ + hoverCursor: "move", + /** + * Default cursor value used when moving an object on canvas + * @type String + * @default + */ + moveCursor: "move", + /** + * Default cursor value used for the entire canvas + * @type String + * @default + */ + defaultCursor: "default", + /** + * Cursor value used during free drawing + * @type String + * @default + */ + freeDrawingCursor: "crosshair", + /** + * Cursor value used for rotation point + * @type String + * @default + */ + rotationCursor: "crosshair", + /** + * Cursor value used for disabled elements ( corners with disabled action ) + * @type String + * @since 2.0.0 + * @default + */ + notAllowedCursor: "not-allowed", + /** + * Default element class that's given to wrapper (div) element of canvas + * @type String + * @default + */ + containerClass: "canvas-container", + /** + * When true, object detection happens on per-pixel basis rather than on per-bounding-box + * @type Boolean + * @default + */ + perPixelTargetFind: !1, + /** + * Number of pixels around target pixel to tolerate (consider active) during object detection + * @type Number + * @default + */ + targetFindTolerance: 0, + /** + * When true, target detection is skipped. Target detection will return always undefined. + * click selection won't work anymore, events will fire with no targets. + * if something is selected before setting it to true, it will be deselected at the first click. + * area selection will still work. check the `selection` property too. + * if you deactivate both, you should look into staticCanvas. + * @type Boolean + * @default + */ + skipTargetFind: !1, + /** + * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing. + * After mousedown, mousemove creates a shape, + * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas. + * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing} + * @type Boolean + * @default + */ + isDrawingMode: !1, + /** + * Indicates whether objects should remain in current stack position when selected. + * When false objects are brought to top and rendered as part of the selection group + * @type Boolean + * @default + */ + preserveObjectStacking: !1, + /** + * Indicates the angle that an object will lock to while rotating. + * @type Number + * @since 1.6.7 + * @default + */ + snapAngle: 0, + /** + * Indicates the distance from the snapAngle the rotation will lock to the snapAngle. + * When `null`, the snapThreshold will default to the snapAngle. + * @type null|Number + * @since 1.6.7 + * @default + */ + snapThreshold: null, + /** + * Indicates if the right click on canvas can output the context menu or not + * @type Boolean + * @since 1.6.5 + * @default + */ + stopContextMenu: !1, + /** + * Indicates if the canvas can fire right click events + * @type Boolean + * @since 1.6.5 + * @default + */ + fireRightClick: !1, + /** + * Indicates if the canvas can fire middle click events + * @type Boolean + * @since 1.7.8 + * @default + */ + fireMiddleClick: !1, + /** + * Keep track of the subTargets for Mouse Events + * @type fabric.Object[] + */ + targets: [], + /** + * Keep track of the hovered target + * @type fabric.Object + * @private + */ + _hoveredTarget: null, + /** + * hold the list of nested targets hovered + * @type fabric.Object[] + * @private + */ + _hoveredTargets: [], + /** + * @private + */ + _initInteractive: function() { + this._currentTransform = null, this._groupSelector = null, this._initWrapperElement(), this._createUpperCanvas(), this._initEventListeners(), this._initRetinaScaling(), this.freeDrawingBrush = f.PencilBrush && new f.PencilBrush(this), this.calcOffset(); + }, + /** + * Divides objects in two groups, one to render immediately + * and one to render as activeGroup. + * @return {Array} objects to render immediately and pushes the other in the activeGroup. + */ + _chooseObjectsToRender: function() { + var w = this.getActiveObjects(), x, b, R; + if (w.length > 0 && !this.preserveObjectStacking) { + b = [], R = []; + for (var M = 0, O = this._objects.length; M < O; M++) + x = this._objects[M], w.indexOf(x) === -1 ? b.push(x) : R.push(x); + w.length > 1 && (this._activeObject._objects = R), b.push.apply(b, R); + } else + b = this._objects; + return b; + }, + /** + * Renders both the top canvas and the secondary container canvas. + * @return {fabric.Canvas} instance + * @chainable + */ + renderAll: function() { + this.contextTopDirty && !this._groupSelector && !this.isDrawingMode && (this.clearContext(this.contextTop), this.contextTopDirty = !1), this.hasLostContext && this.renderTopLayer(this.contextTop); + var w = this.contextContainer; + return this.renderCanvas(w, this._chooseObjectsToRender()), this; + }, + renderTopLayer: function(w) { + w.save(), this.isDrawingMode && this._isCurrentlyDrawing && (this.freeDrawingBrush && this.freeDrawingBrush._render(), this.contextTopDirty = !0), this.selection && this._groupSelector && (this._drawSelection(w), this.contextTopDirty = !0), w.restore(); + }, + /** + * Method to render only the top canvas. + * Also used to render the group selection box. + * @return {fabric.Canvas} thisArg + * @chainable + */ + renderTop: function() { + var w = this.contextTop; + return this.clearContext(w), this.renderTopLayer(w), this.fire("after:render"), this; + }, + /** + * @private + */ + _normalizePointer: function(w, x) { + var b = w.calcTransformMatrix(), R = f.util.invertTransform(b), M = this.restorePointerVpt(x); + return f.util.transformPoint(M, R); + }, + /** + * Returns true if object is transparent at a certain location + * @param {fabric.Object} target Object to check + * @param {Number} x Left coordinate + * @param {Number} y Top coordinate + * @return {Boolean} + */ + isTargetTransparent: function(w, x, b) { + if (w.shouldCache() && w._cacheCanvas && w !== this._activeObject) { + var R = this._normalizePointer(w, { x, y: b }), M = Math.max(w.cacheTranslationX + R.x * w.zoomX, 0), O = Math.max(w.cacheTranslationY + R.y * w.zoomY, 0), Y = f.util.isTransparent( + w._cacheContext, + Math.round(M), + Math.round(O), + this.targetFindTolerance + ); + return Y; + } + var P = this.contextCache, B = w.selectionBackgroundColor, H = this.viewportTransform; + w.selectionBackgroundColor = "", this.clearContext(P), P.save(), P.transform(H[0], H[1], H[2], H[3], H[4], H[5]), w.render(P), P.restore(), w.selectionBackgroundColor = B; + var Y = f.util.isTransparent( + P, + x, + b, + this.targetFindTolerance + ); + return Y; + }, + /** + * takes an event and determines if selection key has been pressed + * @private + * @param {Event} e Event object + */ + _isSelectionKeyPressed: function(w) { + var x = !1; + return Object.prototype.toString.call(this.selectionKey) === "[object Array]" ? x = !!this.selectionKey.find(function(b) { + return w[b] === !0; + }) : x = w[this.selectionKey], x; + }, + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + */ + _shouldClearSelection: function(w, x) { + var b = this.getActiveObjects(), R = this._activeObject; + return !x || x && R && b.length > 1 && b.indexOf(x) === -1 && R !== x && !this._isSelectionKeyPressed(w) || x && !x.evented || x && !x.selectable && R && R !== x; + }, + /** + * centeredScaling from object can't override centeredScaling from canvas. + * this should be fixed, since object setting should take precedence over canvas. + * also this should be something that will be migrated in the control properties. + * as ability to define the origin of the transformation that the control provide. + * @private + * @param {fabric.Object} target + * @param {String} action + * @param {Boolean} altKey + */ + _shouldCenterTransform: function(w, x, b) { + if (w) { + var R; + return x === "scale" || x === "scaleX" || x === "scaleY" || x === "resizing" ? R = this.centeredScaling || w.centeredScaling : x === "rotate" && (R = this.centeredRotation || w.centeredRotation), R ? !b : b; + } + }, + /** + * should disappear before release 4.0 + * @private + */ + _getOriginFromCorner: function(w, x) { + var b = { + x: w.originX, + y: w.originY + }; + return x === "ml" || x === "tl" || x === "bl" ? b.x = "right" : (x === "mr" || x === "tr" || x === "br") && (b.x = "left"), x === "tl" || x === "mt" || x === "tr" ? b.y = "bottom" : (x === "bl" || x === "mb" || x === "br") && (b.y = "top"), b; + }, + /** + * @private + * @param {Boolean} alreadySelected true if target is already selected + * @param {String} corner a string representing the corner ml, mr, tl ... + * @param {Event} e Event object + * @param {fabric.Object} [target] inserted back to help overriding. Unused + */ + _getActionFromCorner: function(w, x, b, R) { + if (!x || !w) + return "drag"; + var M = R.controls[x]; + return M.getActionName(b, M, R); + }, + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + */ + _setupCurrentTransform: function(w, x, b) { + if (x) { + var R = this.getPointer(w), M = x.__corner, O = x.controls[M], P = b && M ? O.getActionHandler(w, x, O) : f.controlsUtils.dragHandler, B = this._getActionFromCorner(b, M, w, x), H = this._getOriginFromCorner(x, M), Y = w[this.centeredKey], X = { + target: x, + action: B, + actionHandler: P, + corner: M, + scaleX: x.scaleX, + scaleY: x.scaleY, + skewX: x.skewX, + skewY: x.skewY, + // used by transation + offsetX: R.x - x.left, + offsetY: R.y - x.top, + originX: H.x, + originY: H.y, + ex: R.x, + ey: R.y, + lastX: R.x, + lastY: R.y, + // unsure they are useful anymore. + // left: target.left, + // top: target.top, + theta: _(x.angle), + // end of unsure + width: x.width * x.scaleX, + shiftKey: w.shiftKey, + altKey: Y, + original: f.util.saveObjectTransform(x) + }; + this._shouldCenterTransform(x, B, Y) && (X.originX = "center", X.originY = "center"), X.original.originX = H.x, X.original.originY = H.y, this._currentTransform = X, this._beforeTransform(w); + } + }, + /** + * Set the cursor type of the canvas element + * @param {String} value Cursor type of the canvas element. + * @see http://www.w3.org/TR/css3-ui/#cursor + */ + setCursor: function(w) { + this.upperCanvasEl.style.cursor = w; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx to draw the selection on + */ + _drawSelection: function(w) { + var x = this._groupSelector, b = new f.Point(x.ex, x.ey), R = f.util.transformPoint(b, this.viewportTransform), M = new f.Point(x.ex + x.left, x.ey + x.top), O = f.util.transformPoint(M, this.viewportTransform), P = Math.min(R.x, O.x), B = Math.min(R.y, O.y), H = Math.max(R.x, O.x), Y = Math.max(R.y, O.y), X = this.selectionLineWidth / 2; + this.selectionColor && (w.fillStyle = this.selectionColor, w.fillRect(P, B, H - P, Y - B)), !(!this.selectionLineWidth || !this.selectionBorderColor) && (w.lineWidth = this.selectionLineWidth, w.strokeStyle = this.selectionBorderColor, P += X, B += X, H -= X, Y -= X, f.Object.prototype._setLineDash.call(this, w, this.selectionDashArray), w.strokeRect(P, B, H - P, Y - B)); + }, + /** + * Method that determines what object we are clicking on + * the skipGroup parameter is for internal use, is needed for shift+click action + * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target + * or the outside part of the corner. + * @param {Event} e mouse event + * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through + * @return {fabric.Object} the target found + */ + findTarget: function(w, x) { + if (!this.skipTargetFind) { + var b = !0, R = this.getPointer(w, b), M = this._activeObject, O = this.getActiveObjects(), P, B, H = E(w), Y = O.length > 1 && !x || O.length === 1; + if (this.targets = [], Y && M._findTargetCorner(R, H) || O.length > 1 && !x && M === this._searchPossibleTargets([M], R)) + return M; + if (O.length === 1 && M === this._searchPossibleTargets([M], R)) + if (this.preserveObjectStacking) + P = M, B = this.targets, this.targets = []; + else + return M; + var X = this._searchPossibleTargets(this._objects, R); + return w[this.altSelectionKey] && X && P && X !== P && (X = P, this.targets = B), X; + } + }, + /** + * Checks point is inside the object. + * @param {Object} [pointer] x,y object of point coordinates we want to check. + * @param {fabric.Object} obj Object to test against + * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target. + * @return {Boolean} true if point is contained within an area of given object + * @private + */ + _checkTarget: function(w, x, b) { + if (x && x.visible && x.evented && // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html + // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html + x.containsPoint(w)) + if ((this.perPixelTargetFind || x.perPixelTargetFind) && !x.isEditing) { + var R = this.isTargetTransparent(x, b.x, b.y); + if (!R) + return !0; + } else + return !0; + }, + /** + * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted + * @param {Array} [objects] objects array to look into + * @param {Object} [pointer] x,y object of point coordinates we want to check. + * @return {fabric.Object} object that contains pointer + * @private + */ + _searchPossibleTargets: function(w, x) { + for (var b, R = w.length, M; R--; ) { + var O = w[R], P = O.group ? this._normalizePointer(O.group, x) : x; + if (this._checkTarget(P, O, x)) { + b = w[R], b.subTargetCheck && b instanceof f.Group && (M = this._searchPossibleTargets(b._objects, x), M && this.targets.push(M)); + break; + } + } + return b; + }, + /** + * Returns pointer coordinates without the effect of the viewport + * @param {Object} pointer with "x" and "y" number values + * @return {Object} object with "x" and "y" number values + */ + restorePointerVpt: function(w) { + return f.util.transformPoint( + w, + f.util.invertTransform(this.viewportTransform) + ); + }, + /** + * Returns pointer coordinates relative to canvas. + * Can return coordinates with or without viewportTransform. + * ignoreZoom false gives back coordinates that represent + * the point clicked on canvas element. + * ignoreZoom true gives back coordinates after being processed + * by the viewportTransform ( sort of coordinates of what is displayed + * on the canvas where you are clicking. + * ignoreZoom true = HTMLElement coordinates relative to top,left + * ignoreZoom false, default = fabric space coordinates, the same used for shape position + * To interact with your shapes top and left you want to use ignoreZoom true + * most of the time, while ignoreZoom false will give you coordinates + * compatible with the object.oCoords system. + * of the time. + * @param {Event} e + * @param {Boolean} ignoreZoom + * @return {Object} object with "x" and "y" number values + */ + getPointer: function(w, x) { + if (this._absolutePointer && !x) + return this._absolutePointer; + if (this._pointer && x) + return this._pointer; + var b = S(w), R = this.upperCanvasEl, M = R.getBoundingClientRect(), O = M.width || 0, P = M.height || 0, B; + (!O || !P) && ("top" in M && "bottom" in M && (P = Math.abs(M.top - M.bottom)), "right" in M && "left" in M && (O = Math.abs(M.right - M.left))), this.calcOffset(), b.x = b.x - this._offset.left, b.y = b.y - this._offset.top, x || (b = this.restorePointerVpt(b)); + var H = this.getRetinaScaling(); + return H !== 1 && (b.x /= H, b.y /= H), O === 0 || P === 0 ? B = { width: 1, height: 1 } : B = { + width: R.width / O, + height: R.height / P + }, { + x: b.x * B.width, + y: b.y * B.height + }; + }, + /** + * @private + * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized + */ + _createUpperCanvas: function() { + var w = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ""), x = this.lowerCanvasEl, b = this.upperCanvasEl; + b ? b.className = "" : (b = this._createCanvasElement(), this.upperCanvasEl = b), f.util.addClass(b, "upper-canvas " + w), this.wrapperEl.appendChild(b), this._copyCanvasStyle(x, b), this._applyCanvasStyle(b), this.contextTop = b.getContext("2d"); + }, + /** + * @private + */ + _createCacheCanvas: function() { + this.cacheCanvasEl = this._createCanvasElement(), this.cacheCanvasEl.setAttribute("width", this.width), this.cacheCanvasEl.setAttribute("height", this.height), this.contextCache = this.cacheCanvasEl.getContext("2d"); + }, + /** + * @private + */ + _initWrapperElement: function() { + this.wrapperEl = f.util.wrapElement(this.lowerCanvasEl, "div", { + class: this.containerClass + }), f.util.setStyle(this.wrapperEl, { + width: this.width + "px", + height: this.height + "px", + position: "relative" + }), f.util.makeElementUnselectable(this.wrapperEl); + }, + /** + * @private + * @param {HTMLElement} element canvas element to apply styles on + */ + _applyCanvasStyle: function(w) { + var x = this.width || w.width, b = this.height || w.height; + f.util.setStyle(w, { + position: "absolute", + width: x + "px", + height: b + "px", + left: 0, + top: 0, + "touch-action": this.allowTouchScrolling ? "manipulation" : "none", + "-ms-touch-action": this.allowTouchScrolling ? "manipulation" : "none" + }), w.width = x, w.height = b, f.util.makeElementUnselectable(w); + }, + /** + * Copy the entire inline style from one element (fromEl) to another (toEl) + * @private + * @param {Element} fromEl Element style is copied from + * @param {Element} toEl Element copied style is applied to + */ + _copyCanvasStyle: function(w, x) { + x.style.cssText = w.style.cssText; + }, + /** + * Returns context of canvas where object selection is drawn + * @return {CanvasRenderingContext2D} + */ + getSelectionContext: function() { + return this.contextTop; + }, + /** + * Returns <canvas> element on which object selection is drawn + * @return {HTMLCanvasElement} + */ + getSelectionElement: function() { + return this.upperCanvasEl; + }, + /** + * Returns currently active object + * @return {fabric.Object} active object + */ + getActiveObject: function() { + return this._activeObject; + }, + /** + * Returns an array with the current selected objects + * @return {fabric.Object} active object + */ + getActiveObjects: function() { + var w = this._activeObject; + return w ? w.type === "activeSelection" && w._objects ? w._objects.slice(0) : [w] : []; + }, + /** + * @private + * @param {fabric.Object} obj Object that was removed + */ + _onObjectRemoved: function(w) { + w === this._activeObject && (this.fire("before:selection:cleared", { target: w }), this._discardActiveObject(), this.fire("selection:cleared", { target: w }), w.fire("deselected")), w === this._hoveredTarget && (this._hoveredTarget = null, this._hoveredTargets = []), this.callSuper("_onObjectRemoved", w); + }, + /** + * @private + * Compares the old activeObject with the current one and fires correct events + * @param {fabric.Object} obj old activeObject + */ + _fireSelectionEvents: function(w, x) { + var b = !1, R = this.getActiveObjects(), M = [], O = []; + w.forEach(function(P) { + R.indexOf(P) === -1 && (b = !0, P.fire("deselected", { + e: x, + target: P + }), O.push(P)); + }), R.forEach(function(P) { + w.indexOf(P) === -1 && (b = !0, P.fire("selected", { + e: x, + target: P + }), M.push(P)); + }), w.length > 0 && R.length > 0 ? b && this.fire("selection:updated", { + e: x, + selected: M, + deselected: O, + // added for backward compatibility + // deprecated + updated: M[0] || O[0], + target: this._activeObject + }) : R.length > 0 ? this.fire("selection:created", { + e: x, + selected: M, + target: this._activeObject + }) : w.length > 0 && this.fire("selection:cleared", { + e: x, + deselected: O + }); + }, + /** + * Sets given object as the only active object on canvas + * @param {fabric.Object} object Object to set as an active one + * @param {Event} [e] Event (passed along when firing "object:selected") + * @return {fabric.Canvas} thisArg + * @chainable + */ + setActiveObject: function(w, x) { + var b = this.getActiveObjects(); + return this._setActiveObject(w, x), this._fireSelectionEvents(b, x), this; + }, + /** + * This is a private method for now. + * This is supposed to be equivalent to setActiveObject but without firing + * any event. There is commitment to have this stay this way. + * This is the functional part of setActiveObject. + * @private + * @param {Object} object to set as active + * @param {Event} [e] Event (passed along when firing "object:selected") + * @return {Boolean} true if the selection happened + */ + _setActiveObject: function(w, x) { + return this._activeObject === w || !this._discardActiveObject(x, w) || w.onSelect({ e: x }) ? !1 : (this._activeObject = w, !0); + }, + /** + * This is a private method for now. + * This is supposed to be equivalent to discardActiveObject but without firing + * any events. There is commitment to have this stay this way. + * This is the functional part of discardActiveObject. + * @param {Event} [e] Event (passed along when firing "object:deselected") + * @param {Object} object to set as active + * @return {Boolean} true if the selection happened + * @private + */ + _discardActiveObject: function(w, x) { + var b = this._activeObject; + if (b) { + if (b.onDeselect({ e: w, object: x })) + return !1; + this._activeObject = null; + } + return !0; + }, + /** + * Discards currently active object and fire events. If the function is called by fabric + * as a consequence of a mouse event, the event is passed as a parameter and + * sent to the fire function for the custom events. When used as a method the + * e param does not have any application. + * @param {event} e + * @return {fabric.Canvas} thisArg + * @chainable + */ + discardActiveObject: function(w) { + var x = this.getActiveObjects(), b = this.getActiveObject(); + return x.length && this.fire("before:selection:cleared", { target: b, e: w }), this._discardActiveObject(w), this._fireSelectionEvents(x, w), this; + }, + /** + * Clears a canvas element and removes all event listeners + * @return {fabric.Canvas} thisArg + * @chainable + */ + dispose: function() { + var w = this.wrapperEl; + return this.removeListeners(), w.removeChild(this.upperCanvasEl), w.removeChild(this.lowerCanvasEl), this.contextCache = null, this.contextTop = null, ["upperCanvasEl", "cacheCanvasEl"].forEach(function(x) { + f.util.cleanUpJsdomNode(this[x]), this[x] = void 0; + }.bind(this)), w.parentNode && w.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl), delete this.wrapperEl, f.StaticCanvas.prototype.dispose.call(this), this; + }, + /** + * Clears all contexts (background, main, top) of an instance + * @return {fabric.Canvas} thisArg + * @chainable + */ + clear: function() { + return this.discardActiveObject(), this.clearContext(this.contextTop), this.callSuper("clear"); + }, + /** + * Draws objects' controls (borders/controls) + * @param {CanvasRenderingContext2D} ctx Context to render controls on + */ + drawControls: function(w) { + var x = this._activeObject; + x && x._renderControls(w); + }, + /** + * @private + */ + _toObject: function(w, x, b) { + var R = this._realizeGroupTransformOnObject(w), M = this.callSuper("_toObject", w, x, b); + return this._unwindGroupTransformOnObject(w, R), M; + }, + /** + * Realises an object's group transformation on it + * @private + * @param {fabric.Object} [instance] the object to transform (gets mutated) + * @returns the original values of instance which were changed + */ + _realizeGroupTransformOnObject: function(w) { + if (w.group && w.group.type === "activeSelection" && this._activeObject === w.group) { + var x = ["angle", "flipX", "flipY", "left", "scaleX", "scaleY", "skewX", "skewY", "top"], b = {}; + return x.forEach(function(R) { + b[R] = w[R]; + }), f.util.addTransformToObject(w, this._activeObject.calcOwnMatrix()), b; + } else + return null; + }, + /** + * Restores the changed properties of instance + * @private + * @param {fabric.Object} [instance] the object to un-transform (gets mutated) + * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject + */ + _unwindGroupTransformOnObject: function(w, x) { + x && w.set(x); + }, + /** + * @private + */ + _setSVGObject: function(w, x, b) { + var R = this._realizeGroupTransformOnObject(x); + this.callSuper("_setSVGObject", w, x, b), this._unwindGroupTransformOnObject(x, R); + }, + setViewportTransform: function(w) { + this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing && this._activeObject.clearContextTop(), f.StaticCanvas.prototype.setViewportTransform.call(this, w); + } + } + ); + for (var I in f.StaticCanvas) + I !== "prototype" && (f.Canvas[I] = f.StaticCanvas[I]); + }(), function() { + var S = f.util.addListener, _ = f.util.removeListener, E = 3, I = 2, w = 1, x = { passive: !1 }; + function b(R, M) { + return R.button && R.button === M - 1; + } + f.util.object.extend( + f.Canvas.prototype, + /** @lends fabric.Canvas.prototype */ + { + /** + * Contains the id of the touch event that owns the fabric transform + * @type Number + * @private + */ + mainTouchId: null, + /** + * Adds mouse listeners to canvas + * @private + */ + _initEventListeners: function() { + this.removeListeners(), this._bindEvents(), this.addOrRemove(S, "add"); + }, + /** + * return an event prefix pointer or mouse. + * @private + */ + _getEventPrefix: function() { + return this.enablePointerEvents ? "pointer" : "mouse"; + }, + addOrRemove: function(R, M) { + var O = this.upperCanvasEl, P = this._getEventPrefix(); + R(f.window, "resize", this._onResize), R(O, P + "down", this._onMouseDown), R(O, P + "move", this._onMouseMove, x), R(O, P + "out", this._onMouseOut), R(O, P + "enter", this._onMouseEnter), R(O, "wheel", this._onMouseWheel), R(O, "contextmenu", this._onContextMenu), R(O, "dblclick", this._onDoubleClick), R(O, "dragover", this._onDragOver), R(O, "dragenter", this._onDragEnter), R(O, "dragleave", this._onDragLeave), R(O, "drop", this._onDrop), this.enablePointerEvents || R(O, "touchstart", this._onTouchStart, x), typeof eventjs != "undefined" && M in eventjs && (eventjs[M](O, "gesture", this._onGesture), eventjs[M](O, "drag", this._onDrag), eventjs[M](O, "orientation", this._onOrientationChange), eventjs[M](O, "shake", this._onShake), eventjs[M](O, "longpress", this._onLongPress)); + }, + /** + * Removes all event listeners + */ + removeListeners: function() { + this.addOrRemove(_, "remove"); + var R = this._getEventPrefix(); + _(f.document, R + "up", this._onMouseUp), _(f.document, "touchend", this._onTouchEnd, x), _(f.document, R + "move", this._onMouseMove, x), _(f.document, "touchmove", this._onMouseMove, x); + }, + /** + * @private + */ + _bindEvents: function() { + this.eventsBound || (this._onMouseDown = this._onMouseDown.bind(this), this._onTouchStart = this._onTouchStart.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this._onMouseUp = this._onMouseUp.bind(this), this._onTouchEnd = this._onTouchEnd.bind(this), this._onResize = this._onResize.bind(this), this._onGesture = this._onGesture.bind(this), this._onDrag = this._onDrag.bind(this), this._onShake = this._onShake.bind(this), this._onLongPress = this._onLongPress.bind(this), this._onOrientationChange = this._onOrientationChange.bind(this), this._onMouseWheel = this._onMouseWheel.bind(this), this._onMouseOut = this._onMouseOut.bind(this), this._onMouseEnter = this._onMouseEnter.bind(this), this._onContextMenu = this._onContextMenu.bind(this), this._onDoubleClick = this._onDoubleClick.bind(this), this._onDragOver = this._onDragOver.bind(this), this._onDragEnter = this._simpleEventHandler.bind(this, "dragenter"), this._onDragLeave = this._simpleEventHandler.bind(this, "dragleave"), this._onDrop = this._simpleEventHandler.bind(this, "drop"), this.eventsBound = !0); + }, + /** + * @private + * @param {Event} [e] Event object fired on Event.js gesture + * @param {Event} [self] Inner Event object + */ + _onGesture: function(R, M) { + this.__onTransformGesture && this.__onTransformGesture(R, M); + }, + /** + * @private + * @param {Event} [e] Event object fired on Event.js drag + * @param {Event} [self] Inner Event object + */ + _onDrag: function(R, M) { + this.__onDrag && this.__onDrag(R, M); + }, + /** + * @private + * @param {Event} [e] Event object fired on wheel event + */ + _onMouseWheel: function(R) { + this.__onMouseWheel(R); + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onMouseOut: function(R) { + var M = this._hoveredTarget; + this.fire("mouse:out", { target: M, e: R }), this._hoveredTarget = null, M && M.fire("mouseout", { e: R }); + var O = this; + this._hoveredTargets.forEach(function(P) { + O.fire("mouse:out", { target: M, e: R }), P && M.fire("mouseout", { e: R }); + }), this._hoveredTargets = [], this._iTextInstances && this._iTextInstances.forEach(function(P) { + P.isEditing && P.hiddenTextarea.focus(); + }); + }, + /** + * @private + * @param {Event} e Event object fired on mouseenter + */ + _onMouseEnter: function(R) { + !this._currentTransform && !this.findTarget(R) && (this.fire("mouse:over", { target: null, e: R }), this._hoveredTarget = null, this._hoveredTargets = []); + }, + /** + * @private + * @param {Event} [e] Event object fired on Event.js orientation change + * @param {Event} [self] Inner Event object + */ + _onOrientationChange: function(R, M) { + this.__onOrientationChange && this.__onOrientationChange(R, M); + }, + /** + * @private + * @param {Event} [e] Event object fired on Event.js shake + * @param {Event} [self] Inner Event object + */ + _onShake: function(R, M) { + this.__onShake && this.__onShake(R, M); + }, + /** + * @private + * @param {Event} [e] Event object fired on Event.js shake + * @param {Event} [self] Inner Event object + */ + _onLongPress: function(R, M) { + this.__onLongPress && this.__onLongPress(R, M); + }, + /** + * prevent default to allow drop event to be fired + * @private + * @param {Event} [e] Event object fired on Event.js shake + */ + _onDragOver: function(R) { + R.preventDefault(); + var M = this._simpleEventHandler("dragover", R); + this._fireEnterLeaveEvents(M, R); + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onContextMenu: function(R) { + return this.stopContextMenu && (R.stopPropagation(), R.preventDefault()), !1; + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onDoubleClick: function(R) { + this._cacheTransformEventData(R), this._handleEvent(R, "dblclick"), this._resetTransformEventData(R); + }, + /** + * Return a the id of an event. + * returns either the pointerId or the identifier or 0 for the mouse event + * @private + * @param {Event} evt Event object + */ + getPointerId: function(R) { + var M = R.changedTouches; + return M ? M[0] && M[0].identifier : this.enablePointerEvents ? R.pointerId : -1; + }, + /** + * Determines if an event has the id of the event that is considered main + * @private + * @param {evt} event Event object + */ + _isMainEvent: function(R) { + return R.isPrimary === !0 ? !0 : R.isPrimary === !1 ? !1 : R.type === "touchend" && R.touches.length === 0 ? !0 : R.changedTouches ? R.changedTouches[0].identifier === this.mainTouchId : !0; + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onTouchStart: function(R) { + R.preventDefault(), this.mainTouchId === null && (this.mainTouchId = this.getPointerId(R)), this.__onMouseDown(R), this._resetTransformEventData(); + var M = this.upperCanvasEl, O = this._getEventPrefix(); + S(f.document, "touchend", this._onTouchEnd, x), S(f.document, "touchmove", this._onMouseMove, x), _(M, O + "down", this._onMouseDown); + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onMouseDown: function(R) { + this.__onMouseDown(R), this._resetTransformEventData(); + var M = this.upperCanvasEl, O = this._getEventPrefix(); + _(M, O + "move", this._onMouseMove, x), S(f.document, O + "up", this._onMouseUp), S(f.document, O + "move", this._onMouseMove, x); + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onTouchEnd: function(R) { + if (!(R.touches.length > 0)) { + this.__onMouseUp(R), this._resetTransformEventData(), this.mainTouchId = null; + var M = this._getEventPrefix(); + _(f.document, "touchend", this._onTouchEnd, x), _(f.document, "touchmove", this._onMouseMove, x); + var O = this; + this._willAddMouseDown && clearTimeout(this._willAddMouseDown), this._willAddMouseDown = setTimeout(function() { + S(O.upperCanvasEl, M + "down", O._onMouseDown), O._willAddMouseDown = 0; + }, 400); + } + }, + /** + * @private + * @param {Event} e Event object fired on mouseup + */ + _onMouseUp: function(R) { + this.__onMouseUp(R), this._resetTransformEventData(); + var M = this.upperCanvasEl, O = this._getEventPrefix(); + this._isMainEvent(R) && (_(f.document, O + "up", this._onMouseUp), _(f.document, O + "move", this._onMouseMove, x), S(M, O + "move", this._onMouseMove, x)); + }, + /** + * @private + * @param {Event} e Event object fired on mousemove + */ + _onMouseMove: function(R) { + !this.allowTouchScrolling && R.preventDefault && R.preventDefault(), this.__onMouseMove(R); + }, + /** + * @private + */ + _onResize: function() { + this.calcOffset(); + }, + /** + * Decides whether the canvas should be redrawn in mouseup and mousedown events. + * @private + * @param {Object} target + */ + _shouldRender: function(R) { + var M = this._activeObject; + return !!M != !!R || M && R && M !== R ? !0 : (M && M.isEditing, !1); + }, + /** + * Method that defines the actions when mouse is released on canvas. + * The method resets the currentTransform parameters, store the image corner + * position in the image object and render the canvas on top. + * @private + * @param {Event} e Event object fired on mouseup + */ + __onMouseUp: function(R) { + var M, O = this._currentTransform, P = this._groupSelector, B = !1, H = !P || P.left === 0 && P.top === 0; + if (this._cacheTransformEventData(R), M = this._target, this._handleEvent(R, "up:before"), b(R, E)) { + this.fireRightClick && this._handleEvent(R, "up", E, H); + return; + } + if (b(R, I)) { + this.fireMiddleClick && this._handleEvent(R, "up", I, H), this._resetTransformEventData(); + return; + } + if (this.isDrawingMode && this._isCurrentlyDrawing) { + this._onMouseUpInDrawingMode(R); + return; + } + if (this._isMainEvent(R)) { + if (O && (this._finalizeCurrentTransform(R), B = O.actionPerformed), !H) { + var Y = M === this._activeObject; + this._maybeGroupObjects(R), B || (B = this._shouldRender(M) || !Y && M === this._activeObject); + } + if (M) { + if (M.selectable && M !== this._activeObject && M.activeOn === "up") + this.setActiveObject(M, R), B = !0; + else { + var X = M._findTargetCorner( + this.getPointer(R, !0), + f.util.isTouchEvent(R) + ), ee = M.controls[X], ae = ee && ee.getMouseUpHandler(R, M, ee); + if (ae) { + var J = this.getPointer(R); + ae(R, O, J.x, J.y); + } + } + M.isMoving = !1; + } + this._setCursorFromEvent(R, M), this._handleEvent(R, "up", w, H), this._groupSelector = null, this._currentTransform = null, M && (M.__corner = 0), B ? this.requestRenderAll() : H || this.renderTop(); + } + }, + /** + * @private + * Handle event firing for target and subtargets + * @param {Event} e event from mouse + * @param {String} eventType event to fire (up, down or move) + * @return {Fabric.Object} target return the the target found, for internal reasons. + */ + _simpleEventHandler: function(R, M) { + var O = this.findTarget(M), P = this.targets, B = { + e: M, + target: O, + subTargets: P + }; + if (this.fire(R, B), O && O.fire(R, B), !P) + return O; + for (var H = 0; H < P.length; H++) + P[H].fire(R, B); + return O; + }, + /** + * @private + * Handle event firing for target and subtargets + * @param {Event} e event from mouse + * @param {String} eventType event to fire (up, down or move) + * @param {fabric.Object} targetObj receiving event + * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right + * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move. + */ + _handleEvent: function(R, M, O, P) { + var B = this._target, H = this.targets || [], Y = { + e: R, + target: B, + subTargets: H, + button: O || w, + isClick: P || !1, + pointer: this._pointer, + absolutePointer: this._absolutePointer, + transform: this._currentTransform + }; + M === "up" && (Y.currentTarget = this.findTarget(R), Y.currentSubTargets = this.targets), this.fire("mouse:" + M, Y), B && B.fire("mouse" + M, Y); + for (var X = 0; X < H.length; X++) + H[X].fire("mouse" + M, Y); + }, + /** + * @private + * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event + */ + _finalizeCurrentTransform: function(R) { + var M = this._currentTransform, O = M.target, P, B = { + e: R, + target: O, + transform: M, + action: M.action + }; + O._scaling && (O._scaling = !1), O.setCoords(), (M.actionPerformed || this.stateful && O.hasStateChanged()) && (M.actionPerformed && (P = this._addEventOptions(B, M), this._fire(P, B)), this._fire("modified", B)); + }, + /** + * Mutate option object in order to add by property and give back the event name. + * @private + * @deprecated since 4.2.0 + * @param {Object} options to mutate + * @param {Object} transform to inspect action from + */ + _addEventOptions: function(R, M) { + var O, P; + switch (M.action) { + case "scaleX": + O = "scaled", P = "x"; + break; + case "scaleY": + O = "scaled", P = "y"; + break; + case "skewX": + O = "skewed", P = "x"; + break; + case "skewY": + O = "skewed", P = "y"; + break; + case "scale": + O = "scaled", P = "equally"; + break; + case "rotate": + O = "rotated"; + break; + case "drag": + O = "moved"; + break; + } + return R.by = P, O; + }, + /** + * @private + * @param {Event} e Event object fired on mousedown + */ + _onMouseDownInDrawingMode: function(R) { + this._isCurrentlyDrawing = !0, this.getActiveObject() && this.discardActiveObject(R).requestRenderAll(); + var M = this.getPointer(R); + this.freeDrawingBrush.onMouseDown(M, { e: R, pointer: M }), this._handleEvent(R, "down"); + }, + /** + * @private + * @param {Event} e Event object fired on mousemove + */ + _onMouseMoveInDrawingMode: function(R) { + if (this._isCurrentlyDrawing) { + var M = this.getPointer(R); + this.freeDrawingBrush.onMouseMove(M, { e: R, pointer: M }); + } + this.setCursor(this.freeDrawingCursor), this._handleEvent(R, "move"); + }, + /** + * @private + * @param {Event} e Event object fired on mouseup + */ + _onMouseUpInDrawingMode: function(R) { + var M = this.getPointer(R); + this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: R, pointer: M }), this._handleEvent(R, "up"); + }, + /** + * Method that defines the actions when mouse is clicked on canvas. + * The method inits the currentTransform parameters and renders all the + * canvas so the current image can be placed on the top canvas and the rest + * in on the container one. + * @private + * @param {Event} e Event object fired on mousedown + */ + __onMouseDown: function(R) { + this._cacheTransformEventData(R), this._handleEvent(R, "down:before"); + var M = this._target; + if (b(R, E)) { + this.fireRightClick && this._handleEvent(R, "down", E); + return; + } + if (b(R, I)) { + this.fireMiddleClick && this._handleEvent(R, "down", I); + return; + } + if (this.isDrawingMode) { + this._onMouseDownInDrawingMode(R); + return; + } + if (this._isMainEvent(R) && !this._currentTransform) { + var O = this._pointer; + this._previousPointer = O; + var P = this._shouldRender(M), B = this._shouldGroup(R, M); + if (this._shouldClearSelection(R, M) ? this.discardActiveObject(R) : B && (this._handleGrouping(R, M), M = this._activeObject), this.selection && (!M || !M.selectable && !M.isEditing && M !== this._activeObject) && (this._groupSelector = { + ex: this._absolutePointer.x, + ey: this._absolutePointer.y, + top: 0, + left: 0 + }), M) { + var H = M === this._activeObject; + M.selectable && M.activeOn === "down" && this.setActiveObject(M, R); + var Y = M._findTargetCorner( + this.getPointer(R, !0), + f.util.isTouchEvent(R) + ); + if (M.__corner = Y, M === this._activeObject && (Y || !B)) { + this._setupCurrentTransform(R, M, H); + var X = M.controls[Y], O = this.getPointer(R), ee = X && X.getMouseDownHandler(R, M, X); + ee && ee(R, this._currentTransform, O.x, O.y); + } + } + this._handleEvent(R, "down"), (P || B) && this.requestRenderAll(); + } + }, + /** + * reset cache form common information needed during event processing + * @private + */ + _resetTransformEventData: function() { + this._target = null, this._pointer = null, this._absolutePointer = null; + }, + /** + * Cache common information needed during event processing + * @private + * @param {Event} e Event object fired on event + */ + _cacheTransformEventData: function(R) { + this._resetTransformEventData(), this._pointer = this.getPointer(R, !0), this._absolutePointer = this.restorePointerVpt(this._pointer), this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(R) || null; + }, + /** + * @private + */ + _beforeTransform: function(R) { + var M = this._currentTransform; + this.stateful && M.target.saveState(), this.fire("before:transform", { + e: R, + transform: M + }); + }, + /** + * Method that defines the actions when mouse is hovering the canvas. + * The currentTransform parameter will define whether the user is rotating/scaling/translating + * an image or neither of them (only hovering). A group selection is also possible and would cancel + * all any other type of action. + * In case of an image transformation only the top canvas will be rendered. + * @private + * @param {Event} e Event object fired on mousemove + */ + __onMouseMove: function(R) { + this._handleEvent(R, "move:before"), this._cacheTransformEventData(R); + var M, O; + if (this.isDrawingMode) { + this._onMouseMoveInDrawingMode(R); + return; + } + if (this._isMainEvent(R)) { + var P = this._groupSelector; + P ? (O = this._absolutePointer, P.left = O.x - P.ex, P.top = O.y - P.ey, this.renderTop()) : this._currentTransform ? this._transformObject(R) : (M = this.findTarget(R) || null, this._setCursorFromEvent(R, M), this._fireOverOutEvents(M, R)), this._handleEvent(R, "move"), this._resetTransformEventData(); + } + }, + /** + * Manage the mouseout, mouseover events for the fabric object on the canvas + * @param {Fabric.Object} target the target where the target from the mousemove event + * @param {Event} e Event object fired on mousemove + * @private + */ + _fireOverOutEvents: function(R, M) { + var O = this._hoveredTarget, P = this._hoveredTargets, B = this.targets, H = Math.max(P.length, B.length); + this.fireSyntheticInOutEvents(R, M, { + oldTarget: O, + evtOut: "mouseout", + canvasEvtOut: "mouse:out", + evtIn: "mouseover", + canvasEvtIn: "mouse:over" + }); + for (var Y = 0; Y < H; Y++) + this.fireSyntheticInOutEvents(B[Y], M, { + oldTarget: P[Y], + evtOut: "mouseout", + evtIn: "mouseover" + }); + this._hoveredTarget = R, this._hoveredTargets = this.targets.concat(); + }, + /** + * Manage the dragEnter, dragLeave events for the fabric objects on the canvas + * @param {Fabric.Object} target the target where the target from the onDrag event + * @param {Event} e Event object fired on ondrag + * @private + */ + _fireEnterLeaveEvents: function(R, M) { + var O = this._draggedoverTarget, P = this._hoveredTargets, B = this.targets, H = Math.max(P.length, B.length); + this.fireSyntheticInOutEvents(R, M, { + oldTarget: O, + evtOut: "dragleave", + evtIn: "dragenter" + }); + for (var Y = 0; Y < H; Y++) + this.fireSyntheticInOutEvents(B[Y], M, { + oldTarget: P[Y], + evtOut: "dragleave", + evtIn: "dragenter" + }); + this._draggedoverTarget = R; + }, + /** + * Manage the synthetic in/out events for the fabric objects on the canvas + * @param {Fabric.Object} target the target where the target from the supported events + * @param {Event} e Event object fired + * @param {Object} config configuration for the function to work + * @param {String} config.targetName property on the canvas where the old target is stored + * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out + * @param {String} config.evtOut name of the event to fire for out + * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in + * @param {String} config.evtIn name of the event to fire for in + * @private + */ + fireSyntheticInOutEvents: function(R, M, O) { + var P, B, H = O.oldTarget, Y, X, ee = H !== R, ae = O.canvasEvtIn, J = O.canvasEvtOut; + ee && (P = { e: M, target: R, previousTarget: H }, B = { e: M, target: H, nextTarget: R }), X = R && ee, Y = H && ee, Y && (J && this.fire(J, B), H.fire(O.evtOut, B)), X && (ae && this.fire(ae, P), R.fire(O.evtIn, P)); + }, + /** + * Method that defines actions when an Event Mouse Wheel + * @param {Event} e Event object fired on mouseup + */ + __onMouseWheel: function(R) { + this._cacheTransformEventData(R), this._handleEvent(R, "wheel"), this._resetTransformEventData(); + }, + /** + * @private + * @param {Event} e Event fired on mousemove + */ + _transformObject: function(R) { + var M = this.getPointer(R), O = this._currentTransform; + O.reset = !1, O.shiftKey = R.shiftKey, O.altKey = R[this.centeredKey], this._performTransformAction(R, O, M), O.actionPerformed && this.requestRenderAll(); + }, + /** + * @private + */ + _performTransformAction: function(R, M, O) { + var P = O.x, B = O.y, H = M.action, Y = !1, X = M.actionHandler; + X && (Y = X(R, M, P, B)), H === "drag" && Y && (M.target.isMoving = !0, this.setCursor(M.target.moveCursor || this.moveCursor)), M.actionPerformed = M.actionPerformed || Y; + }, + /** + * @private + */ + _fire: f.controlsUtils.fireEvent, + /** + * Sets the cursor depending on where the canvas is being hovered. + * Note: very buggy in Opera + * @param {Event} e Event object + * @param {Object} target Object that the mouse is hovering, if so. + */ + _setCursorFromEvent: function(R, M) { + if (!M) + return this.setCursor(this.defaultCursor), !1; + var O = M.hoverCursor || this.hoverCursor, P = this._activeObject && this._activeObject.type === "activeSelection" ? this._activeObject : null, B = (!P || !P.contains(M)) && M._findTargetCorner(this.getPointer(R, !0)); + B ? this.setCursor(this.getCornerCursor(B, M, R)) : (M.subTargetCheck && this.targets.concat().reverse().map(function(H) { + O = H.hoverCursor || O; + }), this.setCursor(O)); + }, + /** + * @private + */ + getCornerCursor: function(R, M, O) { + var P = M.controls[R]; + return P.cursorStyleHandler(O, P, M); + } + } + ); + }(), function() { + var S = Math.min, _ = Math.max; + f.util.object.extend( + f.Canvas.prototype, + /** @lends fabric.Canvas.prototype */ + { + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + * @return {Boolean} + */ + _shouldGroup: function(E, I) { + var w = this._activeObject; + return w && this._isSelectionKeyPressed(E) && I && I.selectable && this.selection && (w !== I || w.type === "activeSelection") && !I.onSelect({ e: E }); + }, + /** + * @private + * @param {Event} e Event object + * @param {fabric.Object} target + */ + _handleGrouping: function(E, I) { + var w = this._activeObject; + w.__corner || I === w && (I = this.findTarget(E, !0), !I || !I.selectable) || (w && w.type === "activeSelection" ? this._updateActiveSelection(I, E) : this._createActiveSelection(I, E)); + }, + /** + * @private + */ + _updateActiveSelection: function(E, I) { + var w = this._activeObject, x = w._objects.slice(0); + w.contains(E) ? (w.removeWithUpdate(E), this._hoveredTarget = E, this._hoveredTargets = this.targets.concat(), w.size() === 1 && this._setActiveObject(w.item(0), I)) : (w.addWithUpdate(E), this._hoveredTarget = w, this._hoveredTargets = this.targets.concat()), this._fireSelectionEvents(x, I); + }, + /** + * @private + */ + _createActiveSelection: function(E, I) { + var w = this.getActiveObjects(), x = this._createGroup(E); + this._hoveredTarget = x, this._setActiveObject(x, I), this._fireSelectionEvents(w, I); + }, + /** + * @private + * @param {Object} target + */ + _createGroup: function(E) { + var I = this._objects, w = I.indexOf(this._activeObject) < I.indexOf(E), x = w ? [this._activeObject, E] : [E, this._activeObject]; + return this._activeObject.isEditing && this._activeObject.exitEditing(), new f.ActiveSelection(x, { + canvas: this + }); + }, + /** + * @private + * @param {Event} e mouse event + */ + _groupSelectedObjects: function(E) { + var I = this._collectObjects(E), w; + I.length === 1 ? this.setActiveObject(I[0], E) : I.length > 1 && (w = new f.ActiveSelection(I.reverse(), { + canvas: this + }), this.setActiveObject(w, E)); + }, + /** + * @private + */ + _collectObjects: function(E) { + for (var I = [], w, x = this._groupSelector.ex, b = this._groupSelector.ey, R = x + this._groupSelector.left, M = b + this._groupSelector.top, O = new f.Point(S(x, R), S(b, M)), P = new f.Point(_(x, R), _(b, M)), B = !this.selectionFullyContained, H = x === R && b === M, Y = this._objects.length; Y-- && (w = this._objects[Y], !(!(!w || !w.selectable || !w.visible) && (B && w.intersectsWithRect(O, P, !0) || w.isContainedWithinRect(O, P, !0) || B && w.containsPoint(O, null, !0) || B && w.containsPoint(P, null, !0)) && (I.push(w), H))); ) + ; + return I.length > 1 && (I = I.filter(function(X) { + return !X.onSelect({ e: E }); + })), I; + }, + /** + * @private + */ + _maybeGroupObjects: function(E) { + this.selection && this._groupSelector && this._groupSelectedObjects(E), this.setCursor(this.defaultCursor), this._groupSelector = null; + } + } + ); + }(), function() { + f.util.object.extend( + f.StaticCanvas.prototype, + /** @lends fabric.StaticCanvas.prototype */ + { + /** + * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately + * @param {Object} [options] Options object + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0 + * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format + * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo} + * @example Generate jpeg dataURL with lower quality + * var dataURL = canvas.toDataURL({ + * format: 'jpeg', + * quality: 0.8 + * }); + * @example Generate cropped png dataURL (clipping of canvas) + * var dataURL = canvas.toDataURL({ + * format: 'png', + * left: 100, + * top: 100, + * width: 200, + * height: 200 + * }); + * @example Generate double scaled png dataURL + * var dataURL = canvas.toDataURL({ + * format: 'png', + * multiplier: 2 + * }); + */ + toDataURL: function(S) { + S || (S = {}); + var _ = S.format || "png", E = S.quality || 1, I = (S.multiplier || 1) * (S.enableRetinaScaling ? this.getRetinaScaling() : 1), w = this.toCanvasElement(I, S); + return f.util.toDataURL(w, _, E); + }, + /** + * Create a new HTMLCanvas element painted with the current canvas content. + * No need to resize the actual one or repaint it. + * Will transfer object ownership to a new canvas, paint it, and set everything back. + * This is an intermediary step used to get to a dataUrl but also it is useful to + * create quick image copies of a canvas without passing for the dataUrl string + * @param {Number} [multiplier] a zoom factor. + * @param {Object} [cropping] Cropping informations + * @param {Number} [cropping.left] Cropping left offset. + * @param {Number} [cropping.top] Cropping top offset. + * @param {Number} [cropping.width] Cropping width. + * @param {Number} [cropping.height] Cropping height. + */ + toCanvasElement: function(S, _) { + S = S || 1, _ = _ || {}; + var E = (_.width || this.width) * S, I = (_.height || this.height) * S, w = this.getZoom(), x = this.width, b = this.height, R = w * S, M = this.viewportTransform, O = (M[4] - (_.left || 0)) * S, P = (M[5] - (_.top || 0)) * S, B = this.interactive, H = [R, 0, 0, R, O, P], Y = this.enableRetinaScaling, X = f.util.createCanvasElement(), ee = this.contextTop; + return X.width = E, X.height = I, this.contextTop = null, this.enableRetinaScaling = !1, this.interactive = !1, this.viewportTransform = H, this.width = E, this.height = I, this.calcViewportBoundaries(), this.renderCanvas(X.getContext("2d"), this._objects), this.viewportTransform = M, this.width = x, this.height = b, this.calcViewportBoundaries(), this.interactive = B, this.enableRetinaScaling = Y, this.contextTop = ee, X; + } + } + ); + }(), f.util.object.extend( + f.StaticCanvas.prototype, + /** @lends fabric.StaticCanvas.prototype */ + { + /** + * Populates canvas with data from the specified JSON. + * JSON format must conform to the one of {@link fabric.Canvas#toJSON} + * @param {String|Object} json JSON string or object + * @param {Function} callback Callback, invoked when json is parsed + * and corresponding objects (e.g: {@link fabric.Image}) + * are initialized + * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. + * @return {fabric.Canvas} instance + * @chainable + * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization} + * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo} + * @example loadFromJSON + * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas)); + * @example loadFromJSON with reviver + * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) { + * // `o` = json object + * // `object` = fabric.Object instance + * // ... do some stuff ... + * }); + */ + loadFromJSON: function(S, _, E) { + if (S) { + var I = typeof S == "string" ? JSON.parse(S) : f.util.object.clone(S), w = this, x = I.clipPath, b = this.renderOnAddRemove; + return this.renderOnAddRemove = !1, delete I.clipPath, this._enlivenObjects(I.objects, function(R) { + w.clear(), w._setBgOverlay(I, function() { + x ? w._enlivenObjects([x], function(M) { + w.clipPath = M[0], w.__setupCanvas.call(w, I, R, b, _); + }) : w.__setupCanvas.call(w, I, R, b, _); + }); + }, E), this; + } + }, + /** + * @private + * @param {Object} serialized Object with background and overlay information + * @param {Array} restored canvas objects + * @param {Function} cached renderOnAddRemove callback + * @param {Function} callback Invoked after all background and overlay images/patterns loaded + */ + __setupCanvas: function(S, _, E, I) { + var w = this; + _.forEach(function(x, b) { + w.insertAt(x, b); + }), this.renderOnAddRemove = E, delete S.objects, delete S.backgroundImage, delete S.overlayImage, delete S.background, delete S.overlay, this._setOptions(S), this.renderAll(), I && I(); + }, + /** + * @private + * @param {Object} serialized Object with background and overlay information + * @param {Function} callback Invoked after all background and overlay images/patterns loaded + */ + _setBgOverlay: function(S, _) { + var E = { + backgroundColor: !1, + overlayColor: !1, + backgroundImage: !1, + overlayImage: !1 + }; + if (!S.backgroundImage && !S.overlayImage && !S.background && !S.overlay) { + _ && _(); + return; + } + var I = function() { + E.backgroundImage && E.overlayImage && E.backgroundColor && E.overlayColor && _ && _(); + }; + this.__setBgOverlay("backgroundImage", S.backgroundImage, E, I), this.__setBgOverlay("overlayImage", S.overlayImage, E, I), this.__setBgOverlay("backgroundColor", S.background, E, I), this.__setBgOverlay("overlayColor", S.overlay, E, I); + }, + /** + * @private + * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor) + * @param {(Object|String)} value Value to set + * @param {Object} loaded Set loaded property to true if property is set + * @param {Object} callback Callback function to invoke after property is set + */ + __setBgOverlay: function(S, _, E, I) { + var w = this; + if (!_) { + E[S] = !0, I && I(); + return; + } + S === "backgroundImage" || S === "overlayImage" ? f.util.enlivenObjects([_], function(x) { + w[S] = x[0], E[S] = !0, I && I(); + }) : this["set" + f.util.string.capitalize(S, !0)](_, function() { + E[S] = !0, I && I(); + }); + }, + /** + * @private + * @param {Array} objects + * @param {Function} callback + * @param {Function} [reviver] + */ + _enlivenObjects: function(S, _, E) { + if (!S || S.length === 0) { + _ && _([]); + return; + } + f.util.enlivenObjects(S, function(I) { + _ && _(I); + }, null, E); + }, + /** + * @private + * @param {String} format + * @param {Function} callback + */ + _toDataURL: function(S, _) { + this.clone(function(E) { + _(E.toDataURL(S)); + }); + }, + /** + * @private + * @param {String} format + * @param {Number} multiplier + * @param {Function} callback + */ + _toDataURLWithMultiplier: function(S, _, E) { + this.clone(function(I) { + E(I.toDataURLWithMultiplier(S, _)); + }); + }, + /** + * Clones canvas instance + * @param {Object} [callback] Receives cloned instance as a first argument + * @param {Array} [properties] Array of properties to include in the cloned canvas and children + */ + clone: function(S, _) { + var E = JSON.stringify(this.toJSON(_)); + this.cloneWithoutData(function(I) { + I.loadFromJSON(E, function() { + S && S(I); + }); + }); + }, + /** + * Clones canvas instance without cloning existing data. + * This essentially copies canvas dimensions, clipping properties, etc. + * but leaves data empty (so that you can populate it with your own) + * @param {Object} [callback] Receives cloned instance as a first argument + */ + cloneWithoutData: function(S) { + var _ = f.util.createCanvasElement(); + _.width = this.width, _.height = this.height; + var E = new f.Canvas(_); + this.backgroundImage ? (E.setBackgroundImage(this.backgroundImage.src, function() { + E.renderAll(), S && S(E); + }), E.backgroundImageOpacity = this.backgroundImageOpacity, E.backgroundImageStretch = this.backgroundImageStretch) : S && S(E); + } + } + ), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.util.object.clone, w = _.util.toFixed, x = _.util.string.capitalize, b = _.util.degreesToRadians, R = !_.isLikelyNode, M = 2; + _.Object || (_.Object = _.util.createClass( + _.CommonMethods, + /** @lends fabric.Object.prototype */ + { + /** + * Type of an object (rect, circle, path, etc.). + * Note that this property is meant to be read-only and not meant to be modified. + * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly. + * @type String + * @default + */ + type: "object", + /** + * Horizontal origin of transformation of an object (one of "left", "right", "center") + * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups + * @type String + * @default + */ + originX: "left", + /** + * Vertical origin of transformation of an object (one of "top", "bottom", "center") + * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups + * @type String + * @default + */ + originY: "top", + /** + * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom} + * @type Number + * @default + */ + top: 0, + /** + * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right} + * @type Number + * @default + */ + left: 0, + /** + * Object width + * @type Number + * @default + */ + width: 0, + /** + * Object height + * @type Number + * @default + */ + height: 0, + /** + * Object scale factor (horizontal) + * @type Number + * @default + */ + scaleX: 1, + /** + * Object scale factor (vertical) + * @type Number + * @default + */ + scaleY: 1, + /** + * When true, an object is rendered as flipped horizontally + * @type Boolean + * @default + */ + flipX: !1, + /** + * When true, an object is rendered as flipped vertically + * @type Boolean + * @default + */ + flipY: !1, + /** + * Opacity of an object + * @type Number + * @default + */ + opacity: 1, + /** + * Angle of rotation of an object (in degrees) + * @type Number + * @default + */ + angle: 0, + /** + * Angle of skew on x axes of an object (in degrees) + * @type Number + * @default + */ + skewX: 0, + /** + * Angle of skew on y axes of an object (in degrees) + * @type Number + * @default + */ + skewY: 0, + /** + * Size of object's controlling corners (in pixels) + * @type Number + * @default + */ + cornerSize: 13, + /** + * Size of object's controlling corners when touch interaction is detected + * @type Number + * @default + */ + touchCornerSize: 24, + /** + * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill) + * @type Boolean + * @default + */ + transparentCorners: !0, + /** + * Default cursor value used when hovering over this object on canvas + * @type String + * @default + */ + hoverCursor: null, + /** + * Default cursor value used when moving this object on canvas + * @type String + * @default + */ + moveCursor: null, + /** + * Padding between object and its controlling borders (in pixels) + * @type Number + * @default + */ + padding: 0, + /** + * Color of controlling borders of an object (when it's active) + * @type String + * @default + */ + borderColor: "rgb(178,204,255)", + /** + * Array specifying dash pattern of an object's borders (hasBorder must be true) + * @since 1.6.2 + * @type Array + */ + borderDashArray: null, + /** + * Color of controlling corners of an object (when it's active) + * @type String + * @default + */ + cornerColor: "rgb(178,204,255)", + /** + * Color of controlling corners of an object (when it's active and transparentCorners false) + * @since 1.6.2 + * @type String + * @default + */ + cornerStrokeColor: null, + /** + * Specify style of control, 'rect' or 'circle' + * @since 1.6.2 + * @type String + */ + cornerStyle: "rect", + /** + * Array specifying dash pattern of an object's control (hasBorder must be true) + * @since 1.6.2 + * @type Array + */ + cornerDashArray: null, + /** + * When true, this object will use center point as the origin of transformation + * when being scaled via the controls. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredScaling: !1, + /** + * When true, this object will use center point as the origin of transformation + * when being rotated via the controls. + * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). + * @since 1.3.4 + * @type Boolean + * @default + */ + centeredRotation: !0, + /** + * Color of object's fill + * takes css colors https://www.w3.org/TR/css-color-3/ + * @type String + * @default + */ + fill: "rgb(0,0,0)", + /** + * Fill rule used to fill an object + * accepted values are nonzero, evenodd + * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead) + * @type String + * @default + */ + fillRule: "nonzero", + /** + * Composite rule used for canvas globalCompositeOperation + * @type String + * @default + */ + globalCompositeOperation: "source-over", + /** + * Background color of an object. + * takes css colors https://www.w3.org/TR/css-color-3/ + * @type String + * @default + */ + backgroundColor: "", + /** + * Selection Background color of an object. colored layer behind the object when it is active. + * does not mix good with globalCompositeOperation methods. + * @type String + * @default + */ + selectionBackgroundColor: "", + /** + * When defined, an object is rendered via stroke and this property specifies its color + * takes css colors https://www.w3.org/TR/css-color-3/ + * @type String + * @default + */ + stroke: null, + /** + * Width of a stroke used to render this object + * @type Number + * @default + */ + strokeWidth: 1, + /** + * Array specifying dash pattern of an object's stroke (stroke must be defined) + * @type Array + */ + strokeDashArray: null, + /** + * Line offset of an object's stroke + * @type Number + * @default + */ + strokeDashOffset: 0, + /** + * Line endings style of an object's stroke (one of "butt", "round", "square") + * @type String + * @default + */ + strokeLineCap: "butt", + /** + * Corner style of an object's stroke (one of "bevel", "round", "miter") + * @type String + * @default + */ + strokeLineJoin: "miter", + /** + * Maximum miter length (used for strokeLineJoin = "miter") of an object's stroke + * @type Number + * @default + */ + strokeMiterLimit: 4, + /** + * Shadow object representing shadow of this shape + * @type fabric.Shadow + * @default + */ + shadow: null, + /** + * Opacity of object's controlling borders when object is active and moving + * @type Number + * @default + */ + borderOpacityWhenMoving: 0.4, + /** + * Scale factor of object's controlling borders + * bigger number will make a thicker border + * border is 1, so this is basically a border thickness + * since there is no way to change the border itself. + * @type Number + * @default + */ + borderScaleFactor: 1, + /** + * Minimum allowed scale value of an object + * @type Number + * @default + */ + minScaleLimit: 0, + /** + * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection). + * But events still fire on it. + * @type Boolean + * @default + */ + selectable: !0, + /** + * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4 + * @type Boolean + * @default + */ + evented: !0, + /** + * When set to `false`, an object is not rendered on canvas + * @type Boolean + * @default + */ + visible: !0, + /** + * When set to `false`, object's controls are not displayed and can not be used to manipulate object + * @type Boolean + * @default + */ + hasControls: !0, + /** + * When set to `false`, object's controlling borders are not rendered + * @type Boolean + * @default + */ + hasBorders: !0, + /** + * When set to `true`, objects are "found" on canvas on per-pixel basis rather than according to bounding box + * @type Boolean + * @default + */ + perPixelTargetFind: !1, + /** + * When `false`, default object's values are not included in its serialization + * @type Boolean + * @default + */ + includeDefaultValues: !0, + /** + * When `true`, object horizontal movement is locked + * @type Boolean + * @default + */ + lockMovementX: !1, + /** + * When `true`, object vertical movement is locked + * @type Boolean + * @default + */ + lockMovementY: !1, + /** + * When `true`, object rotation is locked + * @type Boolean + * @default + */ + lockRotation: !1, + /** + * When `true`, object horizontal scaling is locked + * @type Boolean + * @default + */ + lockScalingX: !1, + /** + * When `true`, object vertical scaling is locked + * @type Boolean + * @default + */ + lockScalingY: !1, + /** + * When `true`, object horizontal skewing is locked + * @type Boolean + * @default + */ + lockSkewingX: !1, + /** + * When `true`, object vertical skewing is locked + * @type Boolean + * @default + */ + lockSkewingY: !1, + /** + * When `true`, object cannot be flipped by scaling into negative values + * @type Boolean + * @default + */ + lockScalingFlip: !1, + /** + * When `true`, object is not exported in OBJECT/JSON + * @since 1.6.3 + * @type Boolean + * @default + */ + excludeFromExport: !1, + /** + * When `true`, object is cached on an additional canvas. + * When `false`, object is not cached unless necessary ( clipPath ) + * default to true + * @since 1.7.0 + * @type Boolean + * @default true + */ + objectCaching: R, + /** + * When `true`, object properties are checked for cache invalidation. In some particular + * situation you may want this to be disabled ( spray brush, very big, groups) + * or if your application does not allow you to modify properties for groups child you want + * to disable it for groups. + * default to false + * since 1.7.0 + * @type Boolean + * @default false + */ + statefullCache: !1, + /** + * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled + * too much and will be redrawn with correct details at the end of scaling. + * this setting is performance and application dependant. + * default to true + * since 1.7.0 + * @type Boolean + * @default true + */ + noScaleCache: !0, + /** + * When `false`, the stoke width will scale with the object. + * When `true`, the stroke will always match the exact pixel size entered for stroke width. + * default to false + * @since 2.6.0 + * @type Boolean + * @default false + * @type Boolean + * @default false + */ + strokeUniform: !1, + /** + * When set to `true`, object's cache will be rerendered next render call. + * since 1.7.0 + * @type Boolean + * @default true + */ + dirty: !0, + /** + * keeps the value of the last hovered corner during mouse move. + * 0 is no corner, or 'mt', 'ml', 'mtr' etc.. + * It should be private, but there is no harm in using it as + * a read-only property. + * @type number|string|any + * @default 0 + */ + __corner: 0, + /** + * Determines if the fill or the stroke is drawn first (one of "fill" or "stroke") + * @type String + * @default + */ + paintFirst: "fill", + /** + * When 'down', object is set to active on mousedown/touchstart + * When 'up', object is set to active on mouseup/touchend + * Experimental. Let's see if this breaks anything before supporting officially + * @private + * since 4.4.0 + * @type String + * @default 'down' + */ + activeOn: "down", + /** + * List of properties to consider when checking if state + * of an object is changed (fabric.Object#hasStateChanged) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: "top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "), + /** + * List of properties to consider when checking if cache needs refresh + * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single + * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty + * and refreshed at the next render + * @type Array + */ + cacheProperties: "fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "), + /** + * List of properties to consider for animating colors. + * @type Array + */ + colorProperties: "fill stroke backgroundColor".split(" "), + /** + * a fabricObject that, without stroke define a clipping area with their shape. filled in black + * the clipPath object gets used when the object has rendered, and the context is placed in the center + * of the object cacheCanvas. + * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center' + * @type fabric.Object + */ + clipPath: void 0, + /** + * Meaningful ONLY when the object is used as clipPath. + * if true, the clipPath will make the object clip to the outside of the clipPath + * since 2.4.0 + * @type boolean + * @default false + */ + inverted: !1, + /** + * Meaningful ONLY when the object is used as clipPath. + * if true, the clipPath will have its top and left relative to canvas, and will + * not be influenced by the object transform. This will make the clipPath relative + * to the canvas, but clipping just a particular object. + * WARNING this is beta, this feature may change or be renamed. + * since 2.4.0 + * @type boolean + * @default false + */ + absolutePositioned: !1, + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(O) { + O && this.setOptions(O); + }, + /** + * Create a the canvas used to keep the cached copy of the object + * @private + */ + _createCacheCanvas: function() { + this._cacheProperties = {}, this._cacheCanvas = _.util.createCanvasElement(), this._cacheContext = this._cacheCanvas.getContext("2d"), this._updateCacheCanvas(), this.dirty = !0; + }, + /** + * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal + * and each side do not cross fabric.cacheSideLimit + * those numbers are configurable so that you can get as much detail as you want + * making bargain with performances. + * @param {Object} dims + * @param {Object} dims.width width of canvas + * @param {Object} dims.height height of canvas + * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache + * @return {Object}.width width of canvas + * @return {Object}.height height of canvas + * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache + */ + _limitCacheSize: function(O) { + var P = _.perfLimitSizeTotal, B = O.width, H = O.height, Y = _.maxCacheSideLimit, X = _.minCacheSideLimit; + if (B <= Y && H <= Y && B * H <= P) + return B < X && (O.width = X), H < X && (O.height = X), O; + var ee = B / H, ae = _.util.limitDimsByArea(ee, P), J = _.util.capValue, ne = J(X, ae.x, Y), fe = J(X, ae.y, Y); + return B > ne && (O.zoomX /= B / ne, O.width = ne, O.capped = !0), H > fe && (O.zoomY /= H / fe, O.height = fe, O.capped = !0), O; + }, + /** + * Return the dimension and the zoom level needed to create a cache canvas + * big enough to host the object to be cached. + * @private + * @return {Object}.x width of object to be cached + * @return {Object}.y height of object to be cached + * @return {Object}.width width of canvas + * @return {Object}.height height of canvas + * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache + */ + _getCacheCanvasDimensions: function() { + var O = this.getTotalObjectScaling(), P = this._getTransformedDimensions(0, 0), B = P.x * O.scaleX / this.scaleX, H = P.y * O.scaleY / this.scaleY; + return { + // for sure this ALIASING_LIMIT is slightly creating problem + // in situation in which the cache canvas gets an upper limit + // also objectScale contains already scaleX and scaleY + width: B + M, + height: H + M, + zoomX: O.scaleX, + zoomY: O.scaleY, + x: B, + y: H + }; + }, + /** + * Update width and height of the canvas for cache + * returns true or false if canvas needed resize. + * @private + * @return {Boolean} true if the canvas has been resized + */ + _updateCacheCanvas: function() { + var O = this.canvas; + if (this.noScaleCache && O && O._currentTransform) { + var P = O._currentTransform.target, B = O._currentTransform.action; + if (this === P && B.slice && B.slice(0, 5) === "scale") + return !1; + } + var H = this._cacheCanvas, Y = this._limitCacheSize(this._getCacheCanvasDimensions()), X = _.minCacheSideLimit, ee = Y.width, ae = Y.height, J, ne, fe = Y.zoomX, de = Y.zoomY, Te = ee !== this.cacheWidth || ae !== this.cacheHeight, be = this.zoomX !== fe || this.zoomY !== de, Ve = Te || be, pe = 0, Be = 0, Ue = !1; + if (Te) { + var Qe = this._cacheCanvas.width, Re = this._cacheCanvas.height, Ne = ee > Qe || ae > Re, Me = (ee < Qe * 0.9 || ae < Re * 0.9) && Qe > X && Re > X; + Ue = Ne || Me, Ne && !Y.capped && (ee > X || ae > X) && (pe = ee * 0.1, Be = ae * 0.1); + } + return this instanceof _.Text && this.path && (Ve = !0, Ue = !0, pe += this.getHeightOfLine(0) * this.zoomX, Be += this.getHeightOfLine(0) * this.zoomY), Ve ? (Ue ? (H.width = Math.ceil(ee + pe), H.height = Math.ceil(ae + Be)) : (this._cacheContext.setTransform(1, 0, 0, 1, 0, 0), this._cacheContext.clearRect(0, 0, H.width, H.height)), J = Y.x / 2, ne = Y.y / 2, this.cacheTranslationX = Math.round(H.width / 2 - J) + J, this.cacheTranslationY = Math.round(H.height / 2 - ne) + ne, this.cacheWidth = ee, this.cacheHeight = ae, this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY), this._cacheContext.scale(fe, de), this.zoomX = fe, this.zoomY = de, !0) : !1; + }, + /** + * Sets object's properties from options + * @param {Object} [options] Options object + */ + setOptions: function(O) { + this._setOptions(O), this._initGradient(O.fill, "fill"), this._initGradient(O.stroke, "stroke"), this._initPattern(O.fill, "fill"), this._initPattern(O.stroke, "stroke"); + }, + /** + * Transforms context when rendering an object + * @param {CanvasRenderingContext2D} ctx Context + */ + transform: function(O) { + var P = this.group && !this.group._transformDone || this.group && this.canvas && O === this.canvas.contextTop, B = this.calcTransformMatrix(!P); + O.transform(B[0], B[1], B[2], B[3], B[4], B[5]); + }, + /** + * Returns an object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(O) { + var P = _.Object.NUM_FRACTION_DIGITS, B = { + type: this.type, + version: _.version, + originX: this.originX, + originY: this.originY, + left: w(this.left, P), + top: w(this.top, P), + width: w(this.width, P), + height: w(this.height, P), + fill: this.fill && this.fill.toObject ? this.fill.toObject() : this.fill, + stroke: this.stroke && this.stroke.toObject ? this.stroke.toObject() : this.stroke, + strokeWidth: w(this.strokeWidth, P), + strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray, + strokeLineCap: this.strokeLineCap, + strokeDashOffset: this.strokeDashOffset, + strokeLineJoin: this.strokeLineJoin, + strokeUniform: this.strokeUniform, + strokeMiterLimit: w(this.strokeMiterLimit, P), + scaleX: w(this.scaleX, P), + scaleY: w(this.scaleY, P), + angle: w(this.angle, P), + flipX: this.flipX, + flipY: this.flipY, + opacity: w(this.opacity, P), + shadow: this.shadow && this.shadow.toObject ? this.shadow.toObject() : this.shadow, + visible: this.visible, + backgroundColor: this.backgroundColor, + fillRule: this.fillRule, + paintFirst: this.paintFirst, + globalCompositeOperation: this.globalCompositeOperation, + skewX: w(this.skewX, P), + skewY: w(this.skewY, P) + }; + return this.clipPath && !this.clipPath.excludeFromExport && (B.clipPath = this.clipPath.toObject(O), B.clipPath.inverted = this.clipPath.inverted, B.clipPath.absolutePositioned = this.clipPath.absolutePositioned), _.util.populateWithProperties(this, B, O), this.includeDefaultValues || (B = this._removeDefaultValues(B)), B; + }, + /** + * Returns (dataless) object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toDatalessObject: function(O) { + return this.toObject(O); + }, + /** + * @private + * @param {Object} object + */ + _removeDefaultValues: function(O) { + var P = _.util.getKlass(O.type).prototype, B = P.stateProperties; + return B.forEach(function(H) { + if (!(H === "left" || H === "top")) { + O[H] === P[H] && delete O[H]; + var Y = Object.prototype.toString.call(O[H]) === "[object Array]" && Object.prototype.toString.call(P[H]) === "[object Array]"; + Y && O[H].length === 0 && P[H].length === 0 && delete O[H]; + } + }), O; + }, + /** + * Returns a string representation of an instance + * @return {String} + */ + toString: function() { + return "#"; + }, + /** + * Return the object scale factor counting also the group scaling + * @return {Object} object with scaleX and scaleY properties + */ + getObjectScaling: function() { + if (!this.group) + return { + scaleX: this.scaleX, + scaleY: this.scaleY + }; + var O = _.util.qrDecompose(this.calcTransformMatrix()); + return { scaleX: Math.abs(O.scaleX), scaleY: Math.abs(O.scaleY) }; + }, + /** + * Return the object scale factor counting also the group scaling, zoom and retina + * @return {Object} object with scaleX and scaleY properties + */ + getTotalObjectScaling: function() { + var O = this.getObjectScaling(), P = O.scaleX, B = O.scaleY; + if (this.canvas) { + var H = this.canvas.getZoom(), Y = this.canvas.getRetinaScaling(); + P *= H * Y, B *= H * Y; + } + return { scaleX: P, scaleY: B }; + }, + /** + * Return the object opacity counting also the group property + * @return {Number} + */ + getObjectOpacity: function() { + var O = this.opacity; + return this.group && (O *= this.group.getObjectOpacity()), O; + }, + /** + * @private + * @param {String} key + * @param {*} value + * @return {fabric.Object} thisArg + */ + _set: function(O, P) { + var B = O === "scaleX" || O === "scaleY", H = this[O] !== P, Y = !1; + return B && (P = this._constrainScale(P)), O === "scaleX" && P < 0 ? (this.flipX = !this.flipX, P *= -1) : O === "scaleY" && P < 0 ? (this.flipY = !this.flipY, P *= -1) : O === "shadow" && P && !(P instanceof _.Shadow) ? P = new _.Shadow(P) : O === "dirty" && this.group && this.group.set("dirty", P), this[O] = P, H && (Y = this.group && this.group.isOnACache(), this.cacheProperties.indexOf(O) > -1 ? (this.dirty = !0, Y && this.group.set("dirty", !0)) : Y && this.stateProperties.indexOf(O) > -1 && this.group.set("dirty", !0)), this; + }, + /** + * This callback function is called by the parent group of an object every + * time a non-delegated property changes on the group. It is passed the key + * and value as parameters. Not adding in this function's signature to avoid + * Travis build error about unused variables. + */ + setOnGroup: function() { + }, + /** + * Retrieves viewportTransform from Object's canvas if possible + * @method getViewportTransform + * @memberOf fabric.Object.prototype + * @return {Array} + */ + getViewportTransform: function() { + return this.canvas && this.canvas.viewportTransform ? this.canvas.viewportTransform : _.iMatrix.concat(); + }, + /* + * @private + * return if the object would be visible in rendering + * @memberOf fabric.Object.prototype + * @return {Boolean} + */ + isNotVisible: function() { + return this.opacity === 0 || !this.width && !this.height && this.strokeWidth === 0 || !this.visible; + }, + /** + * Renders an object on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + render: function(O) { + this.isNotVisible() || this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (O.save(), this._setupCompositeOperation(O), this.drawSelectionBackground(O), this.transform(O), this._setOpacity(O), this._setShadow(O, this), this.shouldCache() ? (this.renderCache(), this.drawCacheOnCanvas(O)) : (this._removeCacheCanvas(), this.dirty = !1, this.drawObject(O), this.objectCaching && this.statefullCache && this.saveState({ propertySet: "cacheProperties" })), O.restore()); + }, + renderCache: function(O) { + O = O || {}, this._cacheCanvas || this._createCacheCanvas(), this.isCacheDirty() && (this.statefullCache && this.saveState({ propertySet: "cacheProperties" }), this.drawObject(this._cacheContext, O.forClipping), this.dirty = !1); + }, + /** + * Remove cacheCanvas and its dimensions from the objects + */ + _removeCacheCanvas: function() { + this._cacheCanvas = null, this.cacheWidth = 0, this.cacheHeight = 0; + }, + /** + * return true if the object will draw a stroke + * Does not consider text styles. This is just a shortcut used at rendering time + * We want it to be an approximation and be fast. + * wrote to avoid extra caching, it has to return true when stroke happens, + * can guess when it will not happen at 100% chance, does not matter if it misses + * some use case where the stroke is invisible. + * @since 3.0.0 + * @returns Boolean + */ + hasStroke: function() { + return this.stroke && this.stroke !== "transparent" && this.strokeWidth !== 0; + }, + /** + * return true if the object will draw a fill + * Does not consider text styles. This is just a shortcut used at rendering time + * We want it to be an approximation and be fast. + * wrote to avoid extra caching, it has to return true when fill happens, + * can guess when it will not happen at 100% chance, does not matter if it misses + * some use case where the fill is invisible. + * @since 3.0.0 + * @returns Boolean + */ + hasFill: function() { + return this.fill && this.fill !== "transparent"; + }, + /** + * When set to `true`, force the object to have its own cache, even if it is inside a group + * it may be needed when your object behave in a particular way on the cache and always needs + * its own isolated canvas to render correctly. + * Created to be overridden + * since 1.7.12 + * @returns Boolean + */ + needsItsOwnCache: function() { + return !!(this.paintFirst === "stroke" && this.hasFill() && this.hasStroke() && typeof this.shadow == "object" || this.clipPath); + }, + /** + * Decide if the object should cache or not. Create its own cache level + * objectCaching is a global flag, wins over everything + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * Read as: cache if is needed, or if the feature is enabled but we are not already caching. + * @return {Boolean} + */ + shouldCache: function() { + return this.ownCaching = this.needsItsOwnCache() || this.objectCaching && (!this.group || !this.group.isOnACache()), this.ownCaching; + }, + /** + * Check if this object or a child object will cast a shadow + * used by Group.shouldCache to know if child has a shadow recursively + * @return {Boolean} + */ + willDrawShadow: function() { + return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0); + }, + /** + * Execute the drawing operation for an object clipPath + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawClipPathOnCache: function(O) { + var P = this.clipPath; + if (O.save(), P.inverted ? O.globalCompositeOperation = "destination-out" : O.globalCompositeOperation = "destination-in", P.absolutePositioned) { + var B = _.util.invertTransform(this.calcTransformMatrix()); + O.transform(B[0], B[1], B[2], B[3], B[4], B[5]); + } + P.transform(O), O.scale(1 / P.zoomX, 1 / P.zoomY), O.drawImage(P._cacheCanvas, -P.cacheTranslationX, -P.cacheTranslationY), O.restore(); + }, + /** + * Execute the drawing operation for an object on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawObject: function(O, P) { + var B = this.fill, H = this.stroke; + P ? (this.fill = "black", this.stroke = "", this._setClippingProperties(O)) : this._renderBackground(O), this._render(O), this._drawClipPath(O), this.fill = B, this.stroke = H; + }, + _drawClipPath: function(O) { + var P = this.clipPath; + P && (P.canvas = this.canvas, P.shouldCache(), P._transformDone = !0, P.renderCache({ forClipping: !0 }), this.drawClipPathOnCache(O)); + }, + /** + * Paint the cached copy of the object on the target context. + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawCacheOnCanvas: function(O) { + O.scale(1 / this.zoomX, 1 / this.zoomY), O.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY); + }, + /** + * Check if cache is dirty + * @param {Boolean} skipCanvas skip canvas checks because this object is painted + * on parent canvas. + */ + isCacheDirty: function(O) { + if (this.isNotVisible()) + return !1; + if (this._cacheCanvas && !O && this._updateCacheCanvas()) + return !0; + if (this.dirty || this.clipPath && this.clipPath.absolutePositioned || this.statefullCache && this.hasStateChanged("cacheProperties")) { + if (this._cacheCanvas && !O) { + var P = this.cacheWidth / this.zoomX, B = this.cacheHeight / this.zoomY; + this._cacheContext.clearRect(-P / 2, -B / 2, P, B); + } + return !0; + } + return !1; + }, + /** + * Draws a background for the object big as its untransformed dimensions + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderBackground: function(O) { + if (this.backgroundColor) { + var P = this._getNonTransformedDimensions(); + O.fillStyle = this.backgroundColor, O.fillRect( + -P.x / 2, + -P.y / 2, + P.x, + P.y + ), this._removeShadow(O); + } + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _setOpacity: function(O) { + this.group && !this.group._transformDone ? O.globalAlpha = this.getObjectOpacity() : O.globalAlpha *= this.opacity; + }, + _setStrokeStyles: function(O, P) { + var B = P.stroke; + B && (O.lineWidth = P.strokeWidth, O.lineCap = P.strokeLineCap, O.lineDashOffset = P.strokeDashOffset, O.lineJoin = P.strokeLineJoin, O.miterLimit = P.strokeMiterLimit, B.toLive ? B.gradientUnits === "percentage" || B.gradientTransform || B.patternTransform ? this._applyPatternForTransformedGradient(O, B) : (O.strokeStyle = B.toLive(O, this), this._applyPatternGradientTransform(O, B)) : O.strokeStyle = P.stroke); + }, + _setFillStyles: function(O, P) { + var B = P.fill; + B && (B.toLive ? (O.fillStyle = B.toLive(O, this), this._applyPatternGradientTransform(O, P.fill)) : O.fillStyle = B); + }, + _setClippingProperties: function(O) { + O.globalAlpha = 1, O.strokeStyle = "transparent", O.fillStyle = "#000000"; + }, + /** + * @private + * Sets line dash + * @param {CanvasRenderingContext2D} ctx Context to set the dash line on + * @param {Array} dashArray array representing dashes + */ + _setLineDash: function(O, P) { + !P || P.length === 0 || (1 & P.length && P.push.apply(P, P), O.setLineDash(P)); + }, + /** + * Renders controls and borders for the object + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} [styleOverride] properties to override the object style + */ + _renderControls: function(O, P) { + var B = this.getViewportTransform(), H = this.calcTransformMatrix(), Y, X, ee; + P = P || {}, X = typeof P.hasBorders != "undefined" ? P.hasBorders : this.hasBorders, ee = typeof P.hasControls != "undefined" ? P.hasControls : this.hasControls, H = _.util.multiplyTransformMatrices(B, H), Y = _.util.qrDecompose(H), O.save(), O.translate(Y.translateX, Y.translateY), O.lineWidth = 1 * this.borderScaleFactor, this.group || (O.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1), O.rotate(b(Y.angle)), P.forActiveSelection || this.group ? X && this.drawBordersInGroup(O, Y, P) : X && this.drawBorders(O, P), ee && this.drawControls(O, P), O.restore(); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _setShadow: function(O) { + if (this.shadow) { + var P = this.shadow, B = this.canvas, H, Y = B && B.viewportTransform[0] || 1, X = B && B.viewportTransform[3] || 1; + P.nonScaling ? H = { scaleX: 1, scaleY: 1 } : H = this.getObjectScaling(), B && B._isRetinaScaling() && (Y *= _.devicePixelRatio, X *= _.devicePixelRatio), O.shadowColor = P.color, O.shadowBlur = P.blur * _.browserShadowBlurConstant * (Y + X) * (H.scaleX + H.scaleY) / 4, O.shadowOffsetX = P.offsetX * Y * H.scaleX, O.shadowOffsetY = P.offsetY * X * H.scaleY; + } + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _removeShadow: function(O) { + this.shadow && (O.shadowColor = "", O.shadowBlur = O.shadowOffsetX = O.shadowOffsetY = 0); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} filler fabric.Pattern or fabric.Gradient + * @return {Object} offset.offsetX offset for text rendering + * @return {Object} offset.offsetY offset for text rendering + */ + _applyPatternGradientTransform: function(O, P) { + if (!P || !P.toLive) + return { offsetX: 0, offsetY: 0 }; + var B = P.gradientTransform || P.patternTransform, H = -this.width / 2 + P.offsetX || 0, Y = -this.height / 2 + P.offsetY || 0; + return P.gradientUnits === "percentage" ? O.transform(this.width, 0, 0, this.height, H, Y) : O.transform(1, 0, 0, 1, H, Y), B && O.transform(B[0], B[1], B[2], B[3], B[4], B[5]), { offsetX: H, offsetY: Y }; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderPaintInOrder: function(O) { + this.paintFirst === "stroke" ? (this._renderStroke(O), this._renderFill(O)) : (this._renderFill(O), this._renderStroke(O)); + }, + /** + * @private + * function that actually render something on the context. + * empty here to allow Obects to work on tests to benchmark fabric functionalites + * not related to rendering + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function() { + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderFill: function(O) { + this.fill && (O.save(), this._setFillStyles(O, this), this.fillRule === "evenodd" ? O.fill("evenodd") : O.fill(), O.restore()); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderStroke: function(O) { + if (!(!this.stroke || this.strokeWidth === 0)) { + if (this.shadow && !this.shadow.affectStroke && this._removeShadow(O), O.save(), this.strokeUniform && this.group) { + var P = this.getObjectScaling(); + O.scale(1 / P.scaleX, 1 / P.scaleY); + } else + this.strokeUniform && O.scale(1 / this.scaleX, 1 / this.scaleY); + this._setLineDash(O, this.strokeDashArray), this._setStrokeStyles(O, this), O.stroke(), O.restore(); + } + }, + /** + * This function try to patch the missing gradientTransform on canvas gradients. + * transforming a context to transform the gradient, is going to transform the stroke too. + * we want to transform the gradient but not the stroke operation, so we create + * a transformed gradient on a pattern and then we use the pattern instead of the gradient. + * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size + * is limited. + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {fabric.Gradient} filler a fabric gradient instance + */ + _applyPatternForTransformedGradient: function(O, P) { + var B = this._limitCacheSize(this._getCacheCanvasDimensions()), H = _.util.createCanvasElement(), Y, X = this.canvas.getRetinaScaling(), ee = B.x / this.scaleX / X, ae = B.y / this.scaleY / X; + H.width = ee, H.height = ae, Y = H.getContext("2d"), Y.beginPath(), Y.moveTo(0, 0), Y.lineTo(ee, 0), Y.lineTo(ee, ae), Y.lineTo(0, ae), Y.closePath(), Y.translate(ee / 2, ae / 2), Y.scale( + B.zoomX / this.scaleX / X, + B.zoomY / this.scaleY / X + ), this._applyPatternGradientTransform(Y, P), Y.fillStyle = P.toLive(O), Y.fill(), O.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2), O.scale( + X * this.scaleX / B.zoomX, + X * this.scaleY / B.zoomY + ), O.strokeStyle = Y.createPattern(H, "no-repeat"); + }, + /** + * This function is an helper for svg import. it returns the center of the object in the svg + * untransformed coordinates + * @private + * @return {Object} center point from element coordinates + */ + _findCenterFromElement: function() { + return { x: this.left + this.width / 2, y: this.top + this.height / 2 }; + }, + /** + * This function is an helper for svg import. it decompose the transformMatrix + * and assign properties to object. + * untransformed coordinates + * @private + * @chainable + */ + _assignTransformMatrixProps: function() { + if (this.transformMatrix) { + var O = _.util.qrDecompose(this.transformMatrix); + this.flipX = !1, this.flipY = !1, this.set("scaleX", O.scaleX), this.set("scaleY", O.scaleY), this.angle = O.angle, this.skewX = O.skewX, this.skewY = 0; + } + }, + /** + * This function is an helper for svg import. it removes the transform matrix + * and set to object properties that fabricjs can handle + * @private + * @param {Object} preserveAspectRatioOptions + * @return {thisArg} + */ + _removeTransformMatrix: function(O) { + var P = this._findCenterFromElement(); + this.transformMatrix && (this._assignTransformMatrixProps(), P = _.util.transformPoint(P, this.transformMatrix)), this.transformMatrix = null, O && (this.scaleX *= O.scaleX, this.scaleY *= O.scaleY, this.cropX = O.cropX, this.cropY = O.cropY, P.x += O.offsetLeft, P.y += O.offsetTop, this.width = O.width, this.height = O.height), this.setPositionByOrigin(P, "center", "center"); + }, + /** + * Clones an instance, using a callback method will work for every object. + * @param {Function} callback Callback is invoked with a clone as a first argument + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + */ + clone: function(O, P) { + var B = this.toObject(P); + this.constructor.fromObject ? this.constructor.fromObject(B, O) : _.Object._fromObject("Object", B, O); + }, + /** + * Creates an instance of fabric.Image out of an object + * makes use of toCanvasElement. + * Once this method was based on toDataUrl and loadImage, so it also had a quality + * and format option. toCanvasElement is faster and produce no loss of quality. + * If you need to get a real Jpeg or Png from an object, using toDataURL is the right way to do it. + * toCanvasElement and then toBlob from the obtained canvas is also a good option. + * This method is sync now, but still support the callback because we did not want to break. + * When fabricJS 5.0 will be planned, this will probably be changed to not have a callback. + * @param {Function} callback callback, invoked with an instance as a first argument + * @param {Object} [options] for clone as image, passed to toDataURL + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 + * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 + * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 + * @return {fabric.Object} thisArg + */ + cloneAsImage: function(O, P) { + var B = this.toCanvasElement(P); + return O && O(new _.Image(B)), this; + }, + /** + * Converts an object into a HTMLCanvas element + * @param {Object} options Options object + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 + * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 + * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 + * @return {HTMLCanvasElement} Returns DOM element with the fabric.Object + */ + toCanvasElement: function(O) { + O || (O = {}); + var P = _.util, B = P.saveObjectTransform(this), H = this.group, Y = this.shadow, X = Math.abs, ee = (O.multiplier || 1) * (O.enableRetinaScaling ? _.devicePixelRatio : 1); + delete this.group, O.withoutTransform && P.resetObjectTransform(this), O.withoutShadow && (this.shadow = null); + var ae = _.util.createCanvasElement(), J = this.getBoundingRect(!0, !0), ne = this.shadow, fe, de = { x: 0, y: 0 }, Te, be, Ve; + ne && (Te = ne.blur, ne.nonScaling ? fe = { scaleX: 1, scaleY: 1 } : fe = this.getObjectScaling(), de.x = 2 * Math.round(X(ne.offsetX) + Te) * X(fe.scaleX), de.y = 2 * Math.round(X(ne.offsetY) + Te) * X(fe.scaleY)), be = J.width + de.x, Ve = J.height + de.y, ae.width = Math.ceil(be), ae.height = Math.ceil(Ve); + var pe = new _.StaticCanvas(ae, { + enableRetinaScaling: !1, + renderOnAddRemove: !1, + skipOffscreen: !1 + }); + O.format === "jpeg" && (pe.backgroundColor = "#fff"), this.setPositionByOrigin(new _.Point(pe.width / 2, pe.height / 2), "center", "center"); + var Be = this.canvas; + pe.add(this); + var Ue = pe.toCanvasElement(ee || 1, O); + return this.shadow = Y, this.set("canvas", Be), H && (this.group = H), this.set(B).setCoords(), pe._objects = [], pe.dispose(), pe = null, Ue; + }, + /** + * Converts an object into a data-url-like string + * @param {Object} options Options object + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 + * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4 + * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4 + * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2 + * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format + */ + toDataURL: function(O) { + return O || (O = {}), _.util.toDataURL(this.toCanvasElement(O), O.format || "png", O.quality || 1); + }, + /** + * Returns true if specified type is identical to the type of an instance + * @param {String} type Type to check against + * @return {Boolean} + */ + isType: function(O) { + return this.type === O; + }, + /** + * Returns complexity of an instance + * @return {Number} complexity of this instance (is 1 unless subclassed) + */ + complexity: function() { + return 1; + }, + /** + * Returns a JSON representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} JSON + */ + toJSON: function(O) { + return this.toObject(O); + }, + /** + * Sets "angle" of an instance with centered rotation + * @param {Number} angle Angle value (in degrees) + * @return {fabric.Object} thisArg + * @chainable + */ + rotate: function(O) { + var P = (this.originX !== "center" || this.originY !== "center") && this.centeredRotation; + return P && this._setOriginToCenter(), this.set("angle", O), P && this._resetOrigin(), this; + }, + /** + * Centers object horizontally on canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + centerH: function() { + return this.canvas && this.canvas.centerObjectH(this), this; + }, + /** + * Centers object horizontally on current viewport of canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + viewportCenterH: function() { + return this.canvas && this.canvas.viewportCenterObjectH(this), this; + }, + /** + * Centers object vertically on canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + centerV: function() { + return this.canvas && this.canvas.centerObjectV(this), this; + }, + /** + * Centers object vertically on current viewport of canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + viewportCenterV: function() { + return this.canvas && this.canvas.viewportCenterObjectV(this), this; + }, + /** + * Centers object vertically and horizontally on canvas to which is was added last + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + center: function() { + return this.canvas && this.canvas.centerObject(this), this; + }, + /** + * Centers object on current viewport of canvas to which it was added last. + * You might need to call `setCoords` on an object after centering, to update controls area. + * @return {fabric.Object} thisArg + * @chainable + */ + viewportCenter: function() { + return this.canvas && this.canvas.viewportCenterObject(this), this; + }, + /** + * Returns coordinates of a pointer relative to an object + * @param {Event} e Event to operate upon + * @param {Object} [pointer] Pointer to operate upon (instead of event) + * @return {Object} Coordinates of a pointer (x, y) + */ + getLocalPointer: function(O, P) { + P = P || this.canvas.getPointer(O); + var B = new _.Point(P.x, P.y), H = this._getLeftTopCoords(); + return this.angle && (B = _.util.rotatePoint( + B, + H, + b(-this.angle) + )), { + x: B.x - H.x, + y: B.y - H.y + }; + }, + /** + * Sets canvas globalCompositeOperation for specific object + * custom composition operation for the particular object can be specified using globalCompositeOperation property + * @param {CanvasRenderingContext2D} ctx Rendering canvas context + */ + _setupCompositeOperation: function(O) { + this.globalCompositeOperation && (O.globalCompositeOperation = this.globalCompositeOperation); + } + } + ), _.util.createAccessors && _.util.createAccessors(_.Object), E(_.Object.prototype, _.Observable), _.Object.NUM_FRACTION_DIGITS = 2, _.Object._fromObject = function(O, P, B, H) { + var Y = _[O]; + P = I(P, !0), _.util.enlivenPatterns([P.fill, P.stroke], function(X) { + typeof X[0] != "undefined" && (P.fill = X[0]), typeof X[1] != "undefined" && (P.stroke = X[1]), _.util.enlivenObjects([P.clipPath], function(ee) { + P.clipPath = ee[0]; + var ae = H ? new Y(P[H], P) : new Y(P); + B && B(ae); + }); + }); + }, _.Object.__uid = 0); + }(u), function() { + var S = f.util.degreesToRadians, _ = { + left: -0.5, + center: 0, + right: 0.5 + }, E = { + top: -0.5, + center: 0, + bottom: 0.5 + }; + f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Translates the coordinates from a set of origin to another (based on the object's dimensions) + * @param {fabric.Point} point The point which corresponds to the originX and originY params + * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right' + * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom' + * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right' + * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + translateToGivenOrigin: function(I, w, x, b, R) { + var M = I.x, O = I.y, P, B, H; + return typeof w == "string" ? w = _[w] : w -= 0.5, typeof b == "string" ? b = _[b] : b -= 0.5, P = b - w, typeof x == "string" ? x = E[x] : x -= 0.5, typeof R == "string" ? R = E[R] : R -= 0.5, B = R - x, (P || B) && (H = this._getTransformedDimensions(), M = I.x + P * H.x, O = I.y + B * H.y), new f.Point(M, O); + }, + /** + * Translates the coordinates from origin to center coordinates (based on the object's dimensions) + * @param {fabric.Point} point The point which corresponds to the originX and originY params + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + translateToCenterPoint: function(I, w, x) { + var b = this.translateToGivenOrigin(I, w, x, "center", "center"); + return this.angle ? f.util.rotatePoint(b, I, S(this.angle)) : b; + }, + /** + * Translates the coordinates from center to origin coordinates (based on the object's dimensions) + * @param {fabric.Point} center The point which corresponds to center of the object + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + translateToOriginPoint: function(I, w, x) { + var b = this.translateToGivenOrigin(I, "center", "center", w, x); + return this.angle ? f.util.rotatePoint(b, I, S(this.angle)) : b; + }, + /** + * Returns the real center coordinates of the object + * @return {fabric.Point} + */ + getCenterPoint: function() { + var I = new f.Point(this.left, this.top); + return this.translateToCenterPoint(I, this.originX, this.originY); + }, + /** + * Returns the coordinates of the object based on center coordinates + * @param {fabric.Point} point The point which corresponds to the originX and originY params + * @return {fabric.Point} + */ + // getOriginPoint: function(center) { + // return this.translateToOriginPoint(center, this.originX, this.originY); + // }, + /** + * Returns the coordinates of the object as if it has a different origin + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + getPointByOrigin: function(I, w) { + var x = this.getCenterPoint(); + return this.translateToOriginPoint(x, I, w); + }, + /** + * Returns the point in local coordinates + * @param {fabric.Point} point The point relative to the global coordinate system + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {fabric.Point} + */ + toLocalPoint: function(I, w, x) { + var b = this.getCenterPoint(), R, M; + return typeof w != "undefined" && typeof x != "undefined" ? R = this.translateToGivenOrigin(b, "center", "center", w, x) : R = new f.Point(this.left, this.top), M = new f.Point(I.x, I.y), this.angle && (M = f.util.rotatePoint(M, b, -S(this.angle))), M.subtractEquals(R); + }, + /** + * Returns the point in global coordinates + * @param {fabric.Point} The point relative to the local coordinate system + * @return {fabric.Point} + */ + // toGlobalPoint: function(point) { + // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top)); + // }, + /** + * Sets the position of the object taking into consideration the object's origin + * @param {fabric.Point} pos The new position of the object + * @param {String} originX Horizontal origin: 'left', 'center' or 'right' + * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' + * @return {void} + */ + setPositionByOrigin: function(I, w, x) { + var b = this.translateToCenterPoint(I, w, x), R = this.translateToOriginPoint(b, this.originX, this.originY); + this.set("left", R.x), this.set("top", R.y); + }, + /** + * @param {String} to One of 'left', 'center', 'right' + */ + adjustPosition: function(I) { + var w = S(this.angle), x = this.getScaledWidth(), b = f.util.cos(w) * x, R = f.util.sin(w) * x, M, O; + typeof this.originX == "string" ? M = _[this.originX] : M = this.originX - 0.5, typeof I == "string" ? O = _[I] : O = I - 0.5, this.left += b * (O - M), this.top += R * (O - M), this.setCoords(), this.originX = I; + }, + /** + * Sets the origin/position of the object to it's center point + * @private + * @return {void} + */ + _setOriginToCenter: function() { + this._originalOriginX = this.originX, this._originalOriginY = this.originY; + var I = this.getCenterPoint(); + this.originX = "center", this.originY = "center", this.left = I.x, this.top = I.y; + }, + /** + * Resets the origin/position of the object to it's original origin + * @private + * @return {void} + */ + _resetOrigin: function() { + var I = this.translateToOriginPoint( + this.getCenterPoint(), + this._originalOriginX, + this._originalOriginY + ); + this.originX = this._originalOriginX, this.originY = this._originalOriginY, this.left = I.x, this.top = I.y, this._originalOriginX = null, this._originalOriginY = null; + }, + /** + * @private + */ + _getLeftTopCoords: function() { + return this.translateToOriginPoint(this.getCenterPoint(), "left", "top"); + } + } + ); + }(), function() { + function S(x) { + return [ + new f.Point(x.tl.x, x.tl.y), + new f.Point(x.tr.x, x.tr.y), + new f.Point(x.br.x, x.br.y), + new f.Point(x.bl.x, x.bl.y) + ]; + } + var _ = f.util, E = _.degreesToRadians, I = _.multiplyTransformMatrices, w = _.transformPoint; + _.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Describe object's corner position in canvas element coordinates. + * properties are depending on control keys and padding the main controls. + * each property is an object with x, y and corner. + * The `corner` property contains in a similar manner the 4 points of the + * interactive area of the corner. + * The coordinates depends from the controls positionHandler and are used + * to draw and locate controls + * @memberOf fabric.Object.prototype + */ + oCoords: null, + /** + * Describe object's corner position in canvas object absolute coordinates + * properties are tl,tr,bl,br and describe the four main corner. + * each property is an object with x, y, instance of Fabric.Point. + * The coordinates depends from this properties: width, height, scaleX, scaleY + * skewX, skewY, angle, strokeWidth, top, left. + * Those coordinates are useful to understand where an object is. They get updated + * with oCoords but they do not need to be updated when zoom or panning change. + * The coordinates get updated with @method setCoords. + * You can calculate them without updating with @method calcACoords(); + * @memberOf fabric.Object.prototype + */ + aCoords: null, + /** + * Describe object's corner position in canvas element coordinates. + * includes padding. Used of object detection. + * set and refreshed with setCoords and calcCoords. + * @memberOf fabric.Object.prototype + */ + lineCoords: null, + /** + * storage for object transform matrix + */ + ownMatrixCache: null, + /** + * storage for object full transform matrix + */ + matrixCache: null, + /** + * custom controls interface + * controls are added by default_controls.js + */ + controls: {}, + /** + * return correct set of coordinates for intersection + * this will return either aCoords or lineCoords. + * @param {Boolean} absolute will return aCoords if true or lineCoords + * @return {Object} {tl, tr, br, bl} points + */ + _getCoords: function(x, b) { + return b ? x ? this.calcACoords() : this.calcLineCoords() : ((!this.aCoords || !this.lineCoords) && this.setCoords(!0), x ? this.aCoords : this.lineCoords); + }, + /** + * return correct set of coordinates for intersection + * this will return either aCoords or lineCoords. + * The coords are returned in an array. + * @return {Array} [tl, tr, br, bl] of points + */ + getCoords: function(x, b) { + return S(this._getCoords(x, b)); + }, + /** + * Checks if object intersects with an area formed by 2 points + * @param {Object} pointTL top-left point of area + * @param {Object} pointBR bottom-right point of area + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object intersects with an area formed by 2 points + */ + intersectsWithRect: function(x, b, R, M) { + var O = this.getCoords(R, M), P = f.Intersection.intersectPolygonRectangle( + O, + x, + b + ); + return P.status === "Intersection"; + }, + /** + * Checks if object intersects with another object + * @param {Object} other Object to test + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object intersects with another object + */ + intersectsWithObject: function(x, b, R) { + var M = f.Intersection.intersectPolygonPolygon( + this.getCoords(b, R), + x.getCoords(b, R) + ); + return M.status === "Intersection" || x.isContainedWithinObject(this, b, R) || this.isContainedWithinObject(x, b, R); + }, + /** + * Checks if object is fully contained within area of another object + * @param {Object} other Object to test + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object is fully contained within area of another object + */ + isContainedWithinObject: function(x, b, R) { + for (var M = this.getCoords(b, R), O = b ? x.aCoords : x.lineCoords, P = 0, B = x._getImageLines(O); P < 4; P++) + if (!x.containsPoint(M[P], B)) + return !1; + return !0; + }, + /** + * Checks if object is fully contained within area formed by 2 points + * @param {Object} pointTL top-left point of area + * @param {Object} pointBR bottom-right point of area + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object is fully contained within area formed by 2 points + */ + isContainedWithinRect: function(x, b, R, M) { + var O = this.getBoundingRect(R, M); + return O.left >= x.x && O.left + O.width <= b.x && O.top >= x.y && O.top + O.height <= b.y; + }, + /** + * Checks if point is inside the object + * @param {fabric.Point} point Point to check against + * @param {Object} [lines] object returned from @method _getImageLines + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if point is inside the object + */ + containsPoint: function(x, P, R, M) { + var O = this._getCoords(R, M), P = P || this._getImageLines(O), B = this._findCrossPoints(x, P); + return B !== 0 && B % 2 === 1; + }, + /** + * Checks if object is contained within the canvas with current viewportTransform + * the check is done stopping at first point that appears on screen + * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords + * @return {Boolean} true if object is fully or partially contained within canvas + */ + isOnScreen: function(x) { + if (!this.canvas) + return !1; + var b = this.canvas.vptCoords.tl, R = this.canvas.vptCoords.br, M = this.getCoords(!0, x); + return M.some(function(O) { + return O.x <= R.x && O.x >= b.x && O.y <= R.y && O.y >= b.y; + }) || this.intersectsWithRect(b, R, !0, x) ? !0 : this._containsCenterOfCanvas(b, R, x); + }, + /** + * Checks if the object contains the midpoint between canvas extremities + * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen + * @private + * @param {Fabric.Point} pointTL Top Left point + * @param {Fabric.Point} pointBR Top Right point + * @param {Boolean} calculate use coordinates of current position instead of .oCoords + * @return {Boolean} true if the object contains the point + */ + _containsCenterOfCanvas: function(x, b, R) { + var M = { x: (x.x + b.x) / 2, y: (x.y + b.y) / 2 }; + return !!this.containsPoint(M, null, !0, R); + }, + /** + * Checks if object is partially contained within the canvas with current viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords + * @return {Boolean} true if object is partially contained within canvas + */ + isPartiallyOnScreen: function(x) { + if (!this.canvas) + return !1; + var b = this.canvas.vptCoords.tl, R = this.canvas.vptCoords.br; + if (this.intersectsWithRect(b, R, !0, x)) + return !0; + var M = this.getCoords(!0, x).every(function(O) { + return (O.x >= R.x || O.x <= b.x) && (O.y >= R.y || O.y <= b.y); + }); + return M && this._containsCenterOfCanvas(b, R, x); + }, + /** + * Method that returns an object with the object edges in it, given the coordinates of the corners + * @private + * @param {Object} oCoords Coordinates of the object corners + */ + _getImageLines: function(x) { + var b = { + topline: { + o: x.tl, + d: x.tr + }, + rightline: { + o: x.tr, + d: x.br + }, + bottomline: { + o: x.br, + d: x.bl + }, + leftline: { + o: x.bl, + d: x.tl + } + }; + return b; + }, + /** + * Helper method to determine how many cross points are between the 4 object edges + * and the horizontal line determined by a point on canvas + * @private + * @param {fabric.Point} point Point to check + * @param {Object} lines Coordinates of the object being evaluated + */ + // remove yi, not used but left code here just in case. + _findCrossPoints: function(x, b) { + var R, M, O, P, B, H = 0, Y; + for (var X in b) + if (Y = b[X], !(Y.o.y < x.y && Y.d.y < x.y) && !(Y.o.y >= x.y && Y.d.y >= x.y) && (Y.o.x === Y.d.x && Y.o.x >= x.x ? B = Y.o.x : (R = 0, M = (Y.d.y - Y.o.y) / (Y.d.x - Y.o.x), O = x.y - R * x.x, P = Y.o.y - M * Y.o.x, B = -(O - P) / (R - M)), B >= x.x && (H += 1), H === 2)) + break; + return H; + }, + /** + * Returns coordinates of object's bounding rectangle (left, top, width, height) + * the box is intended as aligned to axis of canvas. + * @param {Boolean} [absolute] use coordinates without viewportTransform + * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords + * @return {Object} Object with left, top, width, height properties + */ + getBoundingRect: function(x, b) { + var R = this.getCoords(x, b); + return _.makeBoundingBoxFromPoints(R); + }, + /** + * Returns width of an object's bounding box counting transformations + * before 2.0 it was named getWidth(); + * @return {Number} width value + */ + getScaledWidth: function() { + return this._getTransformedDimensions().x; + }, + /** + * Returns height of an object bounding box counting transformations + * before 2.0 it was named getHeight(); + * @return {Number} height value + */ + getScaledHeight: function() { + return this._getTransformedDimensions().y; + }, + /** + * Makes sure the scale is valid and modifies it if necessary + * @private + * @param {Number} value + * @return {Number} + */ + _constrainScale: function(x) { + return Math.abs(x) < this.minScaleLimit ? x < 0 ? -this.minScaleLimit : this.minScaleLimit : x === 0 ? 1e-4 : x; + }, + /** + * Scales an object (equally by x and y) + * @param {Number} value Scale factor + * @return {fabric.Object} thisArg + * @chainable + */ + scale: function(x) { + return this._set("scaleX", x), this._set("scaleY", x), this.setCoords(); + }, + /** + * Scales an object to a given width, with respect to bounding box (scaling by x/y equally) + * @param {Number} value New width value + * @param {Boolean} absolute ignore viewport + * @return {fabric.Object} thisArg + * @chainable + */ + scaleToWidth: function(x, b) { + var R = this.getBoundingRect(b).width / this.getScaledWidth(); + return this.scale(x / this.width / R); + }, + /** + * Scales an object to a given height, with respect to bounding box (scaling by x/y equally) + * @param {Number} value New height value + * @param {Boolean} absolute ignore viewport + * @return {fabric.Object} thisArg + * @chainable + */ + scaleToHeight: function(x, b) { + var R = this.getBoundingRect(b).height / this.getScaledHeight(); + return this.scale(x / this.height / R); + }, + /** + * Calculates and returns the .coords of an object. + * unused by the library, only for the end dev. + * @return {Object} Object with tl, tr, br, bl .... + * @chainable + * @deprecated + */ + calcCoords: function(x) { + return x ? this.calcACoords() : this.calcOCoords(); + }, + calcLineCoords: function() { + var x = this.getViewportTransform(), b = this.padding, R = E(this.angle), M = _.cos(R), O = _.sin(R), P = M * b, B = O * b, H = P + B, Y = P - B, X = this.calcACoords(), ee = { + tl: w(X.tl, x), + tr: w(X.tr, x), + bl: w(X.bl, x), + br: w(X.br, x) + }; + return b && (ee.tl.x -= Y, ee.tl.y -= H, ee.tr.x += H, ee.tr.y -= Y, ee.bl.x -= H, ee.bl.y += Y, ee.br.x += Y, ee.br.y += H), ee; + }, + calcOCoords: function() { + var x = this._calcRotateMatrix(), b = this._calcTranslateMatrix(), R = this.getViewportTransform(), M = I(R, b), O = I(M, x), O = I(O, [1 / R[0], 0, 0, 1 / R[3], 0, 0]), P = this._calculateCurrentDimensions(), B = {}; + return this.forEachControl(function(H, Y, X) { + B[Y] = H.positionHandler(P, O, X); + }), B; + }, + calcACoords: function() { + var x = this._calcRotateMatrix(), b = this._calcTranslateMatrix(), R = I(b, x), M = this._getTransformedDimensions(), O = M.x / 2, P = M.y / 2; + return { + // corners + tl: w({ x: -O, y: -P }, R), + tr: w({ x: O, y: -P }, R), + bl: w({ x: -O, y: P }, R), + br: w({ x: O, y: P }, R) + }; + }, + /** + * Sets corner and controls position coordinates based on current angle, width and height, left and top. + * oCoords are used to find the corners + * aCoords are used to quickly find an object on the canvas + * lineCoords are used to quickly find object during pointer events. + * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords} + * @param {Boolean} [skipCorners] skip calculation of oCoords. + * @return {fabric.Object} thisArg + * @chainable + */ + setCoords: function(x) { + return this.aCoords = this.calcACoords(), this.lineCoords = this.group ? this.aCoords : this.calcLineCoords(), x ? this : (this.oCoords = this.calcOCoords(), this._setCornerCoords && this._setCornerCoords(), this); + }, + /** + * calculate rotation matrix of an object + * @return {Array} rotation matrix for the object + */ + _calcRotateMatrix: function() { + return _.calcRotateMatrix(this); + }, + /** + * calculate the translation matrix for an object transform + * @return {Array} rotation matrix for the object + */ + _calcTranslateMatrix: function() { + var x = this.getCenterPoint(); + return [1, 0, 0, 1, x.x, x.y]; + }, + transformMatrixKey: function(x) { + var b = "_", R = ""; + return !x && this.group && (R = this.group.transformMatrixKey(x) + b), R + this.top + b + this.left + b + this.scaleX + b + this.scaleY + b + this.skewX + b + this.skewY + b + this.angle + b + this.originX + b + this.originY + b + this.width + b + this.height + b + this.strokeWidth + this.flipX + this.flipY; + }, + /** + * calculate transform matrix that represents the current transformations from the + * object's properties. + * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations + * There are some situation in which this is useful to avoid the fake rotation. + * @return {Array} transform matrix for the object + */ + calcTransformMatrix: function(x) { + var b = this.calcOwnMatrix(); + if (x || !this.group) + return b; + var R = this.transformMatrixKey(x), M = this.matrixCache || (this.matrixCache = {}); + return M.key === R ? M.value : (this.group && (b = I(this.group.calcTransformMatrix(!1), b)), M.key = R, M.value = b, b); + }, + /** + * calculate transform matrix that represents the current transformations from the + * object's properties, this matrix does not include the group transformation + * @return {Array} transform matrix for the object + */ + calcOwnMatrix: function() { + var x = this.transformMatrixKey(!0), b = this.ownMatrixCache || (this.ownMatrixCache = {}); + if (b.key === x) + return b.value; + var R = this._calcTranslateMatrix(), M = { + angle: this.angle, + translateX: R[4], + translateY: R[5], + scaleX: this.scaleX, + scaleY: this.scaleY, + skewX: this.skewX, + skewY: this.skewY, + flipX: this.flipX, + flipY: this.flipY + }; + return b.key = x, b.value = _.composeMatrix(M), b.value; + }, + /* + * Calculate object dimensions from its properties + * @private + * @deprecated since 3.4.0, please use fabric.util._calcDimensionsTransformMatrix + * not including or including flipX, flipY to emulate the flipping boolean + * @return {Object} .x width dimension + * @return {Object} .y height dimension + */ + _calcDimensionsTransformMatrix: function(x, b, R) { + return _.calcDimensionsMatrix({ + skewX: x, + skewY: b, + scaleX: this.scaleX * (R && this.flipX ? -1 : 1), + scaleY: this.scaleY * (R && this.flipY ? -1 : 1) + }); + }, + /* + * Calculate object dimensions from its properties + * @private + * @return {Object} .x width dimension + * @return {Object} .y height dimension + */ + _getNonTransformedDimensions: function() { + var x = this.strokeWidth, b = this.width + x, R = this.height + x; + return { x: b, y: R }; + }, + /* + * Calculate object bounding box dimensions from its properties scale, skew. + * @param {Number} skewX, a value to override current skewX + * @param {Number} skewY, a value to override current skewY + * @private + * @return {Object} .x width dimension + * @return {Object} .y height dimension + */ + _getTransformedDimensions: function(x, b) { + typeof x == "undefined" && (x = this.skewX), typeof b == "undefined" && (b = this.skewY); + var R, M, O, P = x === 0 && b === 0; + if (this.strokeUniform ? (M = this.width, O = this.height) : (R = this._getNonTransformedDimensions(), M = R.x, O = R.y), P) + return this._finalizeDimensions(M * this.scaleX, O * this.scaleY); + var B = _.sizeAfterTransform(M, O, { + scaleX: this.scaleX, + scaleY: this.scaleY, + skewX: x, + skewY: b + }); + return this._finalizeDimensions(B.x, B.y); + }, + /* + * Calculate object bounding box dimensions from its properties scale, skew. + * @param Number width width of the bbox + * @param Number height height of the bbox + * @private + * @return {Object} .x finalized width dimension + * @return {Object} .y finalized height dimension + */ + _finalizeDimensions: function(x, b) { + return this.strokeUniform ? { x: x + this.strokeWidth, y: b + this.strokeWidth } : { x, y: b }; + }, + /* + * Calculate object dimensions for controls box, including padding and canvas zoom. + * and active selection + * private + */ + _calculateCurrentDimensions: function() { + var x = this.getViewportTransform(), b = this._getTransformedDimensions(), R = w(b, x, !0); + return R.scalarAdd(2 * this.padding); + } + } + ); + }(), f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Moves an object to the bottom of the stack of drawn objects + * @return {fabric.Object} thisArg + * @chainable + */ + sendToBack: function() { + return this.group ? f.StaticCanvas.prototype.sendToBack.call(this.group, this) : this.canvas && this.canvas.sendToBack(this), this; + }, + /** + * Moves an object to the top of the stack of drawn objects + * @return {fabric.Object} thisArg + * @chainable + */ + bringToFront: function() { + return this.group ? f.StaticCanvas.prototype.bringToFront.call(this.group, this) : this.canvas && this.canvas.bringToFront(this), this; + }, + /** + * Moves an object down in stack of drawn objects + * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object + * @return {fabric.Object} thisArg + * @chainable + */ + sendBackwards: function(S) { + return this.group ? f.StaticCanvas.prototype.sendBackwards.call(this.group, this, S) : this.canvas && this.canvas.sendBackwards(this, S), this; + }, + /** + * Moves an object up in stack of drawn objects + * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object + * @return {fabric.Object} thisArg + * @chainable + */ + bringForward: function(S) { + return this.group ? f.StaticCanvas.prototype.bringForward.call(this.group, this, S) : this.canvas && this.canvas.bringForward(this, S), this; + }, + /** + * Moves an object to specified level in stack of drawn objects + * @param {Number} index New position of object + * @return {fabric.Object} thisArg + * @chainable + */ + moveTo: function(S) { + return this.group && this.group.type !== "activeSelection" ? f.StaticCanvas.prototype.moveTo.call(this.group, this, S) : this.canvas && this.canvas.moveTo(this, S), this; + } + } + ), function() { + function S(E, I) { + if (I) { + if (I.toLive) + return E + ": url(#SVGID_" + I.id + "); "; + var w = new f.Color(I), x = E + ": " + w.toRgb() + "; ", b = w.getAlpha(); + return b !== 1 && (x += E + "-opacity: " + b.toString() + "; "), x; + } else + return E + ": none; "; + } + var _ = f.util.toFixed; + f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Returns styles-string for svg-export + * @param {Boolean} skipShadow a boolean to skip shadow filter output + * @return {String} + */ + getSvgStyles: function(E) { + var I = this.fillRule ? this.fillRule : "nonzero", w = this.strokeWidth ? this.strokeWidth : "0", x = this.strokeDashArray ? this.strokeDashArray.join(" ") : "none", b = this.strokeDashOffset ? this.strokeDashOffset : "0", R = this.strokeLineCap ? this.strokeLineCap : "butt", M = this.strokeLineJoin ? this.strokeLineJoin : "miter", O = this.strokeMiterLimit ? this.strokeMiterLimit : "4", P = typeof this.opacity != "undefined" ? this.opacity : "1", B = this.visible ? "" : " visibility: hidden;", H = E ? "" : this.getSvgFilter(), Y = S("fill", this.fill), X = S("stroke", this.stroke); + return [ + X, + "stroke-width: ", + w, + "; ", + "stroke-dasharray: ", + x, + "; ", + "stroke-linecap: ", + R, + "; ", + "stroke-dashoffset: ", + b, + "; ", + "stroke-linejoin: ", + M, + "; ", + "stroke-miterlimit: ", + O, + "; ", + Y, + "fill-rule: ", + I, + "; ", + "opacity: ", + P, + ";", + H, + B + ].join(""); + }, + /** + * Returns styles-string for svg-export + * @param {Object} style the object from which to retrieve style properties + * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style. + * @return {String} + */ + getSvgSpanStyles: function(E, I) { + var w = "; ", b = E.fontFamily ? "font-family: " + (E.fontFamily.indexOf("'") === -1 && E.fontFamily.indexOf('"') === -1 ? "'" + E.fontFamily + "'" : E.fontFamily) + w : "", x = E.strokeWidth ? "stroke-width: " + E.strokeWidth + w : "", b = b, R = E.fontSize ? "font-size: " + E.fontSize + "px" + w : "", M = E.fontStyle ? "font-style: " + E.fontStyle + w : "", O = E.fontWeight ? "font-weight: " + E.fontWeight + w : "", P = E.fill ? S("fill", E.fill) : "", B = E.stroke ? S("stroke", E.stroke) : "", H = this.getSvgTextDecoration(E), Y = E.deltaY ? "baseline-shift: " + -E.deltaY + "; " : ""; + return H && (H = "text-decoration: " + H + w), [ + B, + x, + b, + R, + M, + O, + H, + P, + Y, + I ? "white-space: pre; " : "" + ].join(""); + }, + /** + * Returns text-decoration property for svg-export + * @param {Object} style the object from which to retrieve style properties + * @return {String} + */ + getSvgTextDecoration: function(E) { + return ["overline", "underline", "line-through"].filter(function(I) { + return E[I.replace("-", "")]; + }).join(" "); + }, + /** + * Returns filter for svg shadow + * @return {String} + */ + getSvgFilter: function() { + return this.shadow ? "filter: url(#SVGID_" + this.shadow.id + ");" : ""; + }, + /** + * Returns id attribute for svg output + * @return {String} + */ + getSvgCommons: function() { + return [ + this.id ? 'id="' + this.id + '" ' : "", + this.clipPath ? 'clip-path="url(#' + this.clipPath.clipPathId + ')" ' : "" + ].join(""); + }, + /** + * Returns transform-string for svg-export + * @param {Boolean} use the full transform or the single object one. + * @return {String} + */ + getSvgTransform: function(E, I) { + var w = E ? this.calcTransformMatrix() : this.calcOwnMatrix(), x = 'transform="' + f.util.matrixToSVG(w); + return x + (I || "") + '" '; + }, + _setSVGBg: function(E) { + if (this.backgroundColor) { + var I = f.Object.NUM_FRACTION_DIGITS; + E.push( + " +` + ); + } + }, + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toSVG: function(E) { + return this._createBaseSVGMarkup(this._toSVG(E), { reviver: E }); + }, + /** + * Returns svg clipPath representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toClipPathSVG: function(E) { + return " " + this._createBaseClipPathSVGMarkup(this._toSVG(E), { reviver: E }); + }, + /** + * @private + */ + _createBaseClipPathSVGMarkup: function(E, I) { + I = I || {}; + var w = I.reviver, x = I.additionalTransform || "", b = [ + this.getSvgTransform(!0, x), + this.getSvgCommons() + ].join(""), R = E.indexOf("COMMON_PARTS"); + return E[R] = b, w ? w(E.join("")) : E.join(""); + }, + /** + * @private + */ + _createBaseSVGMarkup: function(E, I) { + I = I || {}; + var w = I.noStyle, x = I.reviver, b = w ? "" : 'style="' + this.getSvgStyles() + '" ', R = I.withShadow ? 'style="' + this.getSvgFilter() + '" ' : "", M = this.clipPath, O = this.strokeUniform ? 'vector-effect="non-scaling-stroke" ' : "", P = M && M.absolutePositioned, B = this.stroke, H = this.fill, Y = this.shadow, X, ee = [], ae, J = E.indexOf("COMMON_PARTS"), ne = I.additionalTransform; + return M && (M.clipPathId = "CLIPPATH_" + f.Object.__uid++, ae = ' +` + M.toClipPathSVG(x) + ` +`), P && ee.push( + " +` + ), ee.push( + " +` + ), X = [ + b, + O, + w ? "" : this.addPaintOrder(), + " ", + ne ? 'transform="' + ne + '" ' : "" + ].join(""), E[J] = X, H && H.toLive && ee.push(H.toSVG(this)), B && B.toLive && ee.push(B.toSVG(this)), Y && ee.push(Y.toSVG(this)), M && ee.push(ae), ee.push(E.join("")), ee.push(` +`), P && ee.push(` +`), x ? x(ee.join("")) : ee.join(""); + }, + addPaintOrder: function() { + return this.paintFirst !== "fill" ? ' paint-order="' + this.paintFirst + '" ' : ""; + } + } + ); + }(), function() { + var S = f.util.object.extend, _ = "stateProperties"; + function E(w, x, b) { + var R = {}, M = !0; + b.forEach(function(O) { + R[O] = w[O]; + }), S(w[x], R, M); + } + function I(w, x, b) { + if (w === x) + return !0; + if (Array.isArray(w)) { + if (!Array.isArray(x) || w.length !== x.length) + return !1; + for (var R = 0, M = w.length; R < M; R++) + if (!I(w[R], x[R])) + return !1; + return !0; + } else if (w && typeof w == "object") { + var O = Object.keys(w), P; + if (!x || typeof x != "object" || !b && O.length !== Object.keys(x).length) + return !1; + for (var R = 0, M = O.length; R < M; R++) + if (P = O[R], !(P === "canvas" || P === "group") && !I(w[P], x[P])) + return !1; + return !0; + } + } + f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Returns true if object state (one of its state properties) was changed + * @param {String} [propertySet] optional name for the set of property we want to save + * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called + */ + hasStateChanged: function(w) { + w = w || _; + var x = "_" + w; + return Object.keys(this[x]).length < this[w].length ? !0 : !I(this[x], this, !0); + }, + /** + * Saves state of an object + * @param {Object} [options] Object with additional `stateProperties` array to include when saving state + * @return {fabric.Object} thisArg + */ + saveState: function(w) { + var x = w && w.propertySet || _, b = "_" + x; + return this[b] ? (E(this, b, this[x]), w && w.stateProperties && E(this, b, w.stateProperties), this) : this.setupState(w); + }, + /** + * Setups state of an object + * @param {Object} [options] Object with additional `stateProperties` array to include when saving state + * @return {fabric.Object} thisArg + */ + setupState: function(w) { + w = w || {}; + var x = w.propertySet || _; + return w.propertySet = x, this["_" + x] = {}, this.saveState(w), this; + } + } + ); + }(), function() { + var S = f.util.degreesToRadians; + f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Determines which corner has been clicked + * @private + * @param {Object} pointer The pointer indicating the mouse position + * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found + */ + _findTargetCorner: function(_, E) { + if (!this.hasControls || this.group || !this.canvas || this.canvas._activeObject !== this) + return !1; + var I = _.x, w = _.y, x, b, R = Object.keys(this.oCoords), M = R.length - 1, O; + for (this.__corner = 0; M >= 0; M--) + if (O = R[M], !!this.isControlVisible(O) && (b = this._getImageLines(E ? this.oCoords[O].touchCorner : this.oCoords[O].corner), x = this._findCrossPoints({ x: I, y: w }, b), x !== 0 && x % 2 === 1)) + return this.__corner = O, O; + return !1; + }, + /** + * Calls a function for each control. The function gets called, + * with the control, the object that is calling the iterator and the control's key + * @param {Function} fn function to iterate over the controls over + */ + forEachControl: function(_) { + for (var E in this.controls) + _(this.controls[E], E, this); + }, + /** + * Sets the coordinates of the draggable boxes in the corners of + * the image used to scale/rotate it. + * note: if we would switch to ROUND corner area, all of this would disappear. + * everything would resolve to a single point and a pythagorean theorem for the distance + * @private + */ + _setCornerCoords: function() { + var _ = this.oCoords; + for (var E in _) { + var I = this.controls[E]; + _[E].corner = I.calcCornerCoords( + this.angle, + this.cornerSize, + _[E].x, + _[E].y, + !1 + ), _[E].touchCorner = I.calcCornerCoords( + this.angle, + this.touchCornerSize, + _[E].x, + _[E].y, + !0 + ); + } + }, + /** + * Draws a colored layer behind the object, inside its selection borders. + * Requires public options: padding, selectionBackgroundColor + * this function is called when the context is transformed + * has checks to be skipped when the object is on a staticCanvas + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @return {fabric.Object} thisArg + * @chainable + */ + drawSelectionBackground: function(_) { + if (!this.selectionBackgroundColor || this.canvas && !this.canvas.interactive || this.canvas && this.canvas._activeObject !== this) + return this; + _.save(); + var E = this.getCenterPoint(), I = this._calculateCurrentDimensions(), w = this.canvas.viewportTransform; + return _.translate(E.x, E.y), _.scale(1 / w[0], 1 / w[3]), _.rotate(S(this.angle)), _.fillStyle = this.selectionBackgroundColor, _.fillRect(-I.x / 2, -I.y / 2, I.x, I.y), _.restore(), this; + }, + /** + * Draws borders of an object's bounding box. + * Requires public properties: width, height + * Requires public options: padding, borderColor + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @param {Object} styleOverride object to override the object style + * @return {fabric.Object} thisArg + * @chainable + */ + drawBorders: function(_, E) { + E = E || {}; + var I = this._calculateCurrentDimensions(), w = this.borderScaleFactor, x = I.x + w, b = I.y + w, R = typeof E.hasControls != "undefined" ? E.hasControls : this.hasControls, M = !1; + return _.save(), _.strokeStyle = E.borderColor || this.borderColor, this._setLineDash(_, E.borderDashArray || this.borderDashArray), _.strokeRect( + -x / 2, + -b / 2, + x, + b + ), R && (_.beginPath(), this.forEachControl(function(O, P, B) { + O.withConnection && O.getVisibility(B, P) && (M = !0, _.moveTo(O.x * x, O.y * b), _.lineTo( + O.x * x + O.offsetX, + O.y * b + O.offsetY + )); + }), M && _.stroke()), _.restore(), this; + }, + /** + * Draws borders of an object's bounding box when it is inside a group. + * Requires public properties: width, height + * Requires public options: padding, borderColor + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @param {object} options object representing current object parameters + * @param {Object} styleOverride object to override the object style + * @return {fabric.Object} thisArg + * @chainable + */ + drawBordersInGroup: function(_, E, I) { + I = I || {}; + var w = f.util.sizeAfterTransform(this.width, this.height, E), x = this.strokeWidth, b = this.strokeUniform, R = this.borderScaleFactor, M = w.x + x * (b ? this.canvas.getZoom() : E.scaleX) + R, O = w.y + x * (b ? this.canvas.getZoom() : E.scaleY) + R; + return _.save(), this._setLineDash(_, I.borderDashArray || this.borderDashArray), _.strokeStyle = I.borderColor || this.borderColor, _.strokeRect( + -M / 2, + -O / 2, + M, + O + ), _.restore(), this; + }, + /** + * Draws corners of an object's bounding box. + * Requires public properties: width, height + * Requires public options: cornerSize, padding + * @param {CanvasRenderingContext2D} ctx Context to draw on + * @param {Object} styleOverride object to override the object style + * @return {fabric.Object} thisArg + * @chainable + */ + drawControls: function(_, E) { + E = E || {}, _.save(); + var I = this.canvas.getRetinaScaling(), w, x; + return _.setTransform(I, 0, 0, I, 0, 0), _.strokeStyle = _.fillStyle = E.cornerColor || this.cornerColor, this.transparentCorners || (_.strokeStyle = E.cornerStrokeColor || this.cornerStrokeColor), this._setLineDash(_, E.cornerDashArray || this.cornerDashArray), this.setCoords(), this.group && (w = this.group.calcTransformMatrix()), this.forEachControl(function(b, R, M) { + x = M.oCoords[R], b.getVisibility(M, R) && (w && (x = f.util.transformPoint(x, w)), b.render(_, x.x, x.y, E, M)); + }), _.restore(), this; + }, + /** + * Returns true if the specified control is visible, false otherwise. + * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'. + * @returns {Boolean} true if the specified control is visible, false otherwise + */ + isControlVisible: function(_) { + return this.controls[_] && this.controls[_].getVisibility(this, _); + }, + /** + * Sets the visibility of the specified control. + * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'. + * @param {Boolean} visible true to set the specified control visible, false otherwise + * @return {fabric.Object} thisArg + * @chainable + */ + setControlVisible: function(_, E) { + return this._controlsVisibility || (this._controlsVisibility = {}), this._controlsVisibility[_] = E, this; + }, + /** + * Sets the visibility state of object controls. + * @param {Object} [options] Options object + * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it + * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it + * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it + * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it + * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it + * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it + * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it + * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it + * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it + * @return {fabric.Object} thisArg + * @chainable + */ + setControlsVisibility: function(_) { + _ || (_ = {}); + for (var E in _) + this.setControlVisible(E, _[E]); + return this; + }, + /** + * This callback function is called every time _discardActiveObject or _setActiveObject + * try to to deselect this object. If the function returns true, the process is cancelled + * @param {Object} [options] options sent from the upper functions + * @param {Event} [options.e] event if the process is generated by an event + */ + onDeselect: function() { + }, + /** + * This callback function is called every time _discardActiveObject or _setActiveObject + * try to to select this object. If the function returns true, the process is cancelled + * @param {Object} [options] options sent from the upper functions + * @param {Event} [options.e] event if the process is generated by an event + */ + onSelect: function() { + } + } + ); + }(), f.util.object.extend( + f.StaticCanvas.prototype, + /** @lends fabric.StaticCanvas.prototype */ + { + /** + * Animation duration (in ms) for fx* methods + * @type Number + * @default + */ + FX_DURATION: 500, + /** + * Centers object horizontally with animation. + * @param {fabric.Object} object Object to center + * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxCenterObjectH: function(S, _) { + _ = _ || {}; + var E = function() { + }, I = _.onComplete || E, w = _.onChange || E, x = this; + return f.util.animate({ + startValue: S.left, + endValue: this.getCenter().left, + duration: this.FX_DURATION, + onChange: function(b) { + S.set("left", b), x.requestRenderAll(), w(); + }, + onComplete: function() { + S.setCoords(), I(); + } + }), this; + }, + /** + * Centers object vertically with animation. + * @param {fabric.Object} object Object to center + * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxCenterObjectV: function(S, _) { + _ = _ || {}; + var E = function() { + }, I = _.onComplete || E, w = _.onChange || E, x = this; + return f.util.animate({ + startValue: S.top, + endValue: this.getCenter().top, + duration: this.FX_DURATION, + onChange: function(b) { + S.set("top", b), x.requestRenderAll(), w(); + }, + onComplete: function() { + S.setCoords(), I(); + } + }), this; + }, + /** + * Same as `fabric.Canvas#remove` but animated + * @param {fabric.Object} object Object to remove + * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxRemove: function(S, _) { + _ = _ || {}; + var E = function() { + }, I = _.onComplete || E, w = _.onChange || E, x = this; + return f.util.animate({ + startValue: S.opacity, + endValue: 0, + duration: this.FX_DURATION, + onChange: function(b) { + S.set("opacity", b), x.requestRenderAll(), w(); + }, + onComplete: function() { + x.remove(S), I(); + } + }), this; + } + } + ), f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * Animates object's properties + * @param {String|Object} property Property to animate (if string) or properties to animate (if object) + * @param {Number|Object} value Value to animate property to (if string was given first) or options object + * @return {fabric.Object} thisArg + * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation} + * @chainable + * + * As object — multiple properties + * + * object.animate({ left: ..., top: ... }); + * object.animate({ left: ..., top: ... }, { duration: ... }); + * + * As string — one property + * + * object.animate('left', ...); + * object.animate('left', { duration: ... }); + * + */ + animate: function() { + if (arguments[0] && typeof arguments[0] == "object") { + var S = [], _, E; + for (_ in arguments[0]) + S.push(_); + for (var I = 0, w = S.length; I < w; I++) + _ = S[I], E = I !== w - 1, this._animate(_, arguments[0][_], arguments[1], E); + } else + this._animate.apply(this, arguments); + return this; + }, + /** + * @private + * @param {String} property Property to animate + * @param {String} to Value to animate to + * @param {Object} [options] Options object + * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked + */ + _animate: function(S, _, E, I) { + var w = this, x; + _ = _.toString(), E ? E = f.util.object.clone(E) : E = {}, ~S.indexOf(".") && (x = S.split(".")); + var b = w.colorProperties.indexOf(S) > -1 || x && w.colorProperties.indexOf(x[1]) > -1, R = x ? this.get(x[0])[x[1]] : this.get(S); + "from" in E || (E.from = R), b || (~_.indexOf("=") ? _ = R + parseFloat(_.replace("=", "")) : _ = parseFloat(_)); + var M = { + startValue: E.from, + endValue: _, + byValue: E.by, + easing: E.easing, + duration: E.duration, + abort: E.abort && function(O, P, B) { + return E.abort.call(w, O, P, B); + }, + onChange: function(O, P, B) { + x ? w[x[0]][x[1]] = O : w.set(S, O), !I && E.onChange && E.onChange(O, P, B); + }, + onComplete: function(O, P, B) { + I || (w.setCoords(), E.onComplete && E.onComplete(O, P, B)); + } + }; + return b ? f.util.animateColor(M.startValue, M.endValue, M.duration, M) : f.util.animate(M); + } + } + ), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.util.object.clone, w = { x1: 1, x2: 1, y1: 1, y2: 1 }; + if (_.Line) { + _.warn("fabric.Line is already defined"); + return; + } + _.Line = _.util.createClass( + _.Object, + /** @lends fabric.Line.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "line", + /** + * x value or first line edge + * @type Number + * @default + */ + x1: 0, + /** + * y value or first line edge + * @type Number + * @default + */ + y1: 0, + /** + * x value or second line edge + * @type Number + * @default + */ + x2: 0, + /** + * y value or second line edge + * @type Number + * @default + */ + y2: 0, + cacheProperties: _.Object.prototype.cacheProperties.concat("x1", "x2", "y1", "y2"), + /** + * Constructor + * @param {Array} [points] Array of points + * @param {Object} [options] Options object + * @return {fabric.Line} thisArg + */ + initialize: function(b, R) { + b || (b = [0, 0, 0, 0]), this.callSuper("initialize", R), this.set("x1", b[0]), this.set("y1", b[1]), this.set("x2", b[2]), this.set("y2", b[3]), this._setWidthHeight(R); + }, + /** + * @private + * @param {Object} [options] Options + */ + _setWidthHeight: function(b) { + b || (b = {}), this.width = Math.abs(this.x2 - this.x1), this.height = Math.abs(this.y2 - this.y1), this.left = "left" in b ? b.left : this._getLeftToOriginX(), this.top = "top" in b ? b.top : this._getTopToOriginY(); + }, + /** + * @private + * @param {String} key + * @param {*} value + */ + _set: function(b, R) { + return this.callSuper("_set", b, R), typeof w[b] != "undefined" && this._setWidthHeight(), this; + }, + /** + * @private + * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line. + */ + _getLeftToOriginX: x( + { + // property names + origin: "originX", + axis1: "x1", + axis2: "x2", + dimension: "width" + }, + { + // possible values of origin + nearest: "left", + center: "center", + farthest: "right" + } + ), + /** + * @private + * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line. + */ + _getTopToOriginY: x( + { + // property names + origin: "originY", + axis1: "y1", + axis2: "y2", + dimension: "height" + }, + { + // possible values of origin + nearest: "top", + center: "center", + farthest: "bottom" + } + ), + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(b) { + b.beginPath(); + var R = this.calcLinePoints(); + b.moveTo(R.x1, R.y1), b.lineTo(R.x2, R.y2), b.lineWidth = this.strokeWidth; + var M = b.strokeStyle; + b.strokeStyle = this.stroke || b.fillStyle, this.stroke && this._renderStroke(b), b.strokeStyle = M; + }, + /** + * This function is an helper for svg import. it returns the center of the object in the svg + * untransformed coordinates + * @private + * @return {Object} center point from element coordinates + */ + _findCenterFromElement: function() { + return { + x: (this.x1 + this.x2) / 2, + y: (this.y1 + this.y2) / 2 + }; + }, + /** + * Returns object representation of an instance + * @method toObject + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(b) { + return E(this.callSuper("toObject", b), this.calcLinePoints()); + }, + /* + * Calculate object dimensions from its properties + * @private + */ + _getNonTransformedDimensions: function() { + var b = this.callSuper("_getNonTransformedDimensions"); + return this.strokeLineCap === "butt" && (this.width === 0 && (b.y -= this.strokeWidth), this.height === 0 && (b.x -= this.strokeWidth)), b; + }, + /** + * Recalculates line points given width and height + * @private + */ + calcLinePoints: function() { + var b = this.x1 <= this.x2 ? -1 : 1, R = this.y1 <= this.y2 ? -1 : 1, M = b * this.width * 0.5, O = R * this.height * 0.5, P = b * this.width * -0.5, B = R * this.height * -0.5; + return { + x1: M, + x2: P, + y1: O, + y2: B + }; + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var b = this.calcLinePoints(); + return [ + " +` + ]; + } + /* _TO_SVG_END_ */ + } + ), _.Line.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")), _.Line.fromElement = function(b, R, M) { + M = M || {}; + var O = _.parseAttributes(b, _.Line.ATTRIBUTE_NAMES), P = [ + O.x1 || 0, + O.y1 || 0, + O.x2 || 0, + O.y2 || 0 + ]; + R(new _.Line(P, E(O, M))); + }, _.Line.fromObject = function(b, R) { + function M(P) { + delete P.points, R && R(P); + } + var O = I(b, !0); + O.points = [b.x1, b.y1, b.x2, b.y2], _.Object._fromObject("Line", O, M, "points"); + }; + function x(b, R) { + var M = b.origin, O = b.axis1, P = b.axis2, B = b.dimension, H = R.nearest, Y = R.center, X = R.farthest; + return function() { + switch (this.get(M)) { + case H: + return Math.min(this.get(O), this.get(P)); + case Y: + return Math.min(this.get(O), this.get(P)) + 0.5 * this.get(B); + case X: + return Math.max(this.get(O), this.get(P)); + } + }; + } + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = Math.PI; + if (_.Circle) { + _.warn("fabric.Circle is already defined."); + return; + } + _.Circle = _.util.createClass( + _.Object, + /** @lends fabric.Circle.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "circle", + /** + * Radius of this circle + * @type Number + * @default + */ + radius: 0, + /** + * Start angle of the circle, moving clockwise + * deprecated type, this should be in degree, this was an oversight. + * probably will change to degrees in next major version + * @type Number + * @default 0 + */ + startAngle: 0, + /** + * End angle of the circle + * deprecated type, this should be in degree, this was an oversight. + * probably will change to degrees in next major version + * @type Number + * @default 2Pi + */ + endAngle: E * 2, + cacheProperties: _.Object.prototype.cacheProperties.concat("radius", "startAngle", "endAngle"), + /** + * @private + * @param {String} key + * @param {*} value + * @return {fabric.Circle} thisArg + */ + _set: function(w, x) { + return this.callSuper("_set", w, x), w === "radius" && this.setRadius(x), this; + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(w) { + return this.callSuper("toObject", ["radius", "startAngle", "endAngle"].concat(w)); + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var w, x = 0, b = 0, R = (this.endAngle - this.startAngle) % (2 * E); + if (R === 0) + w = [ + " +` + ]; + else { + var M = _.util.cos(this.startAngle) * this.radius, O = _.util.sin(this.startAngle) * this.radius, P = _.util.cos(this.endAngle) * this.radius, B = _.util.sin(this.endAngle) * this.radius, H = R > E ? "1" : "0"; + w = [ + ' +` + ]; + } + return w; + }, + /* _TO_SVG_END_ */ + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render on + */ + _render: function(w) { + w.beginPath(), w.arc( + 0, + 0, + this.radius, + this.startAngle, + this.endAngle, + !1 + ), this._renderPaintInOrder(w); + }, + /** + * Returns horizontal radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRadiusX: function() { + return this.get("radius") * this.get("scaleX"); + }, + /** + * Returns vertical radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRadiusY: function() { + return this.get("radius") * this.get("scaleY"); + }, + /** + * Sets radius of an object (and updates width accordingly) + * @return {fabric.Circle} thisArg + */ + setRadius: function(w) { + return this.radius = w, this.set("width", w * 2).set("height", w * 2); + } + } + ), _.Circle.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")), _.Circle.fromElement = function(w, x) { + var b = _.parseAttributes(w, _.Circle.ATTRIBUTE_NAMES); + if (!I(b)) + throw new Error("value of `r` attribute is required and can not be negative"); + b.left = (b.left || 0) - b.radius, b.top = (b.top || 0) - b.radius, x(new _.Circle(b)); + }; + function I(w) { + return "radius" in w && w.radius >= 0; + } + _.Circle.fromObject = function(w, x) { + _.Object._fromObject("Circle", w, x); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}); + if (_.Triangle) { + _.warn("fabric.Triangle is already defined"); + return; + } + _.Triangle = _.util.createClass( + _.Object, + /** @lends fabric.Triangle.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "triangle", + /** + * Width is set to 100 to compensate the old initialize code that was setting it to 100 + * @type Number + * @default + */ + width: 100, + /** + * Height is set to 100 to compensate the old initialize code that was setting it to 100 + * @type Number + * @default + */ + height: 100, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(E) { + var I = this.width / 2, w = this.height / 2; + E.beginPath(), E.moveTo(-I, w), E.lineTo(0, -w), E.lineTo(I, w), E.closePath(), this._renderPaintInOrder(E); + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var E = this.width / 2, I = this.height / 2, w = [ + -E + " " + I, + "0 " + -I, + E + " " + I + ].join(","); + return [ + "' + ]; + } + /* _TO_SVG_END_ */ + } + ), _.Triangle.fromObject = function(E, I) { + return _.Object._fromObject("Triangle", E, I); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = Math.PI * 2; + if (_.Ellipse) { + _.warn("fabric.Ellipse is already defined."); + return; + } + _.Ellipse = _.util.createClass( + _.Object, + /** @lends fabric.Ellipse.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "ellipse", + /** + * Horizontal radius + * @type Number + * @default + */ + rx: 0, + /** + * Vertical radius + * @type Number + * @default + */ + ry: 0, + cacheProperties: _.Object.prototype.cacheProperties.concat("rx", "ry"), + /** + * Constructor + * @param {Object} [options] Options object + * @return {fabric.Ellipse} thisArg + */ + initialize: function(I) { + this.callSuper("initialize", I), this.set("rx", I && I.rx || 0), this.set("ry", I && I.ry || 0); + }, + /** + * @private + * @param {String} key + * @param {*} value + * @return {fabric.Ellipse} thisArg + */ + _set: function(I, w) { + switch (this.callSuper("_set", I, w), I) { + case "rx": + this.rx = w, this.set("width", w * 2); + break; + case "ry": + this.ry = w, this.set("height", w * 2); + break; + } + return this; + }, + /** + * Returns horizontal radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRx: function() { + return this.get("rx") * this.get("scaleX"); + }, + /** + * Returns Vertical radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRy: function() { + return this.get("ry") * this.get("scaleY"); + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(I) { + return this.callSuper("toObject", ["rx", "ry"].concat(I)); + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + return [ + " +` + ]; + }, + /* _TO_SVG_END_ */ + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render on + */ + _render: function(I) { + I.beginPath(), I.save(), I.transform(1, 0, 0, this.ry / this.rx, 0, 0), I.arc( + 0, + 0, + this.rx, + 0, + E, + !1 + ), I.restore(), this._renderPaintInOrder(I); + } + } + ), _.Ellipse.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")), _.Ellipse.fromElement = function(I, w) { + var x = _.parseAttributes(I, _.Ellipse.ATTRIBUTE_NAMES); + x.left = (x.left || 0) - x.rx, x.top = (x.top || 0) - x.ry, w(new _.Ellipse(x)); + }, _.Ellipse.fromObject = function(I, w) { + _.Object._fromObject("Ellipse", I, w); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend; + if (_.Rect) { + _.warn("fabric.Rect is already defined"); + return; + } + _.Rect = _.util.createClass( + _.Object, + /** @lends fabric.Rect.prototype */ + { + /** + * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged}) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: _.Object.prototype.stateProperties.concat("rx", "ry"), + /** + * Type of an object + * @type String + * @default + */ + type: "rect", + /** + * Horizontal border radius + * @type Number + * @default + */ + rx: 0, + /** + * Vertical border radius + * @type Number + * @default + */ + ry: 0, + cacheProperties: _.Object.prototype.cacheProperties.concat("rx", "ry"), + /** + * Constructor + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(I) { + this.callSuper("initialize", I), this._initRxRy(); + }, + /** + * Initializes rx/ry attributes + * @private + */ + _initRxRy: function() { + this.rx && !this.ry ? this.ry = this.rx : this.ry && !this.rx && (this.rx = this.ry); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(I) { + var w = this.rx ? Math.min(this.rx, this.width / 2) : 0, x = this.ry ? Math.min(this.ry, this.height / 2) : 0, b = this.width, R = this.height, M = -this.width / 2, O = -this.height / 2, P = w !== 0 || x !== 0, B = 1 - 0.5522847498; + I.beginPath(), I.moveTo(M + w, O), I.lineTo(M + b - w, O), P && I.bezierCurveTo(M + b - B * w, O, M + b, O + B * x, M + b, O + x), I.lineTo(M + b, O + R - x), P && I.bezierCurveTo(M + b, O + R - B * x, M + b - B * w, O + R, M + b - w, O + R), I.lineTo(M + w, O + R), P && I.bezierCurveTo(M + B * w, O + R, M, O + R - B * x, M, O + R - x), I.lineTo(M, O + x), P && I.bezierCurveTo(M, O + B * x, M + B * w, O, M + w, O), I.closePath(), this._renderPaintInOrder(I); + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(I) { + return this.callSuper("toObject", ["rx", "ry"].concat(I)); + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var I = -this.width / 2, w = -this.height / 2; + return [ + " +` + ]; + } + /* _TO_SVG_END_ */ + } + ), _.Rect.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")), _.Rect.fromElement = function(I, w, x) { + if (!I) + return w(null); + x = x || {}; + var b = _.parseAttributes(I, _.Rect.ATTRIBUTE_NAMES); + b.left = b.left || 0, b.top = b.top || 0, b.height = b.height || 0, b.width = b.width || 0; + var R = new _.Rect(E(x ? _.util.object.clone(x) : {}, b)); + R.visible = R.visible && R.width > 0 && R.height > 0, w(R); + }, _.Rect.fromObject = function(I, w) { + return _.Object._fromObject("Rect", I, w); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.util.array.min, w = _.util.array.max, x = _.util.toFixed; + if (_.Polyline) { + _.warn("fabric.Polyline is already defined"); + return; + } + _.Polyline = _.util.createClass( + _.Object, + /** @lends fabric.Polyline.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "polyline", + /** + * Points array + * @type Array + * @default + */ + points: null, + cacheProperties: _.Object.prototype.cacheProperties.concat("points"), + /** + * Constructor + * @param {Array} points Array of points (where each point is an object with x and y) + * @param {Object} [options] Options object + * @return {fabric.Polyline} thisArg + * @example + * var poly = new fabric.Polyline([ + * { x: 10, y: 10 }, + * { x: 50, y: 30 }, + * { x: 40, y: 70 }, + * { x: 60, y: 50 }, + * { x: 100, y: 150 }, + * { x: 40, y: 100 } + * ], { + * stroke: 'red', + * left: 100, + * top: 100 + * }); + */ + initialize: function(b, R) { + R = R || {}, this.points = b || [], this.callSuper("initialize", R), this._setPositionDimensions(R); + }, + _setPositionDimensions: function(b) { + var R = this._calcDimensions(b), M; + this.width = R.width, this.height = R.height, b.fromSVG || (M = this.translateToGivenOrigin( + { x: R.left - this.strokeWidth / 2, y: R.top - this.strokeWidth / 2 }, + "left", + "top", + this.originX, + this.originY + )), typeof b.left == "undefined" && (this.left = b.fromSVG ? R.left : M.x), typeof b.top == "undefined" && (this.top = b.fromSVG ? R.top : M.y), this.pathOffset = { + x: R.left + this.width / 2, + y: R.top + this.height / 2 + }; + }, + /** + * Calculate the polygon min and max point from points array, + * returning an object with left, top, width, height to measure the + * polygon size + * @return {Object} object.left X coordinate of the polygon leftmost point + * @return {Object} object.top Y coordinate of the polygon topmost point + * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point + * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point + * @private + */ + _calcDimensions: function() { + var b = this.points, R = I(b, "x") || 0, M = I(b, "y") || 0, O = w(b, "x") || 0, P = w(b, "y") || 0, B = O - R, H = P - M; + return { + left: R, + top: M, + width: B, + height: H + }; + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(b) { + return E(this.callSuper("toObject", b), { + points: this.points.concat() + }); + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + for (var b = [], R = this.pathOffset.x, M = this.pathOffset.y, O = _.Object.NUM_FRACTION_DIGITS, P = 0, B = this.points.length; P < B; P++) + b.push( + x(this.points[P].x - R, O), + ",", + x(this.points[P].y - M, O), + " " + ); + return [ + "<" + this.type + " ", + "COMMON_PARTS", + 'points="', + b.join(""), + `" /> +` + ]; + }, + /* _TO_SVG_END_ */ + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + commonRender: function(b) { + var R, M = this.points.length, O = this.pathOffset.x, P = this.pathOffset.y; + if (!M || isNaN(this.points[M - 1].y)) + return !1; + b.beginPath(), b.moveTo(this.points[0].x - O, this.points[0].y - P); + for (var B = 0; B < M; B++) + R = this.points[B], b.lineTo(R.x - O, R.y - P); + return !0; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(b) { + this.commonRender(b) && this._renderPaintInOrder(b); + }, + /** + * Returns complexity of an instance + * @return {Number} complexity of this instance + */ + complexity: function() { + return this.get("points").length; + } + } + ), _.Polyline.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat(), _.Polyline.fromElementGenerator = function(b) { + return function(R, M, O) { + if (!R) + return M(null); + O || (O = {}); + var P = _.parsePointsAttribute(R.getAttribute("points")), B = _.parseAttributes(R, _[b].ATTRIBUTE_NAMES); + B.fromSVG = !0, M(new _[b](P, E(B, O))); + }; + }, _.Polyline.fromElement = _.Polyline.fromElementGenerator("Polyline"), _.Polyline.fromObject = function(b, R) { + return _.Object._fromObject("Polyline", b, R, "points"); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}); + if (_.Polygon) { + _.warn("fabric.Polygon is already defined"); + return; + } + _.Polygon = _.util.createClass( + _.Polyline, + /** @lends fabric.Polygon.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "polygon", + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(E) { + this.commonRender(E) && (E.closePath(), this._renderPaintInOrder(E)); + } + } + ), _.Polygon.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat(), _.Polygon.fromElement = _.Polyline.fromElementGenerator("Polygon"), _.Polygon.fromObject = function(E, I) { + _.Object._fromObject("Polygon", E, I, "points"); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.array.min, I = _.util.array.max, w = _.util.object.extend, x = Object.prototype.toString, b = _.util.toFixed; + if (_.Path) { + _.warn("fabric.Path is already defined"); + return; + } + _.Path = _.util.createClass( + _.Object, + /** @lends fabric.Path.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "path", + /** + * Array of path points + * @type Array + * @default + */ + path: null, + cacheProperties: _.Object.prototype.cacheProperties.concat("path", "fillRule"), + stateProperties: _.Object.prototype.stateProperties.concat("path"), + /** + * Constructor + * @param {Array|String} path Path data (sequence of coordinates and corresponding "command" tokens) + * @param {Object} [options] Options object + * @return {fabric.Path} thisArg + */ + initialize: function(R, M) { + M = M || {}, this.callSuper("initialize", M), R || (R = []); + var O = x.call(R) === "[object Array]"; + this.path = _.util.makePathSimpler( + O ? R : _.util.parsePath(R) + ), this.path && _.Polyline.prototype._setPositionDimensions.call(this, M); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render path on + */ + _renderPathCommands: function(R) { + var M, O = 0, P = 0, B = 0, H = 0, Y = 0, X = 0, ee = -this.pathOffset.x, ae = -this.pathOffset.y; + R.beginPath(); + for (var J = 0, ne = this.path.length; J < ne; ++J) + switch (M = this.path[J], M[0]) { + case "L": + B = M[1], H = M[2], R.lineTo(B + ee, H + ae); + break; + case "M": + B = M[1], H = M[2], O = B, P = H, R.moveTo(B + ee, H + ae); + break; + case "C": + B = M[5], H = M[6], Y = M[3], X = M[4], R.bezierCurveTo( + M[1] + ee, + M[2] + ae, + Y + ee, + X + ae, + B + ee, + H + ae + ); + break; + case "Q": + R.quadraticCurveTo( + M[1] + ee, + M[2] + ae, + M[3] + ee, + M[4] + ae + ), B = M[3], H = M[4], Y = M[1], X = M[2]; + break; + case "z": + case "Z": + B = O, H = P, R.closePath(); + break; + } + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render path on + */ + _render: function(R) { + this._renderPathCommands(R), this._renderPaintInOrder(R); + }, + /** + * Returns string representation of an instance + * @return {String} string representation of an instance + */ + toString: function() { + return "#"; + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(R) { + return w(this.callSuper("toObject", R), { + path: this.path.map(function(M) { + return M.slice(); + }) + }); + }, + /** + * Returns dataless object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toDatalessObject: function(R) { + var M = this.toObject(["sourcePath"].concat(R)); + return M.sourcePath && delete M.path, M; + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var R = _.util.joinPath(this.path); + return [ + " +` + ]; + }, + _getOffsetTransform: function() { + var R = _.Object.NUM_FRACTION_DIGITS; + return " translate(" + b(-this.pathOffset.x, R) + ", " + b(-this.pathOffset.y, R) + ")"; + }, + /** + * Returns svg clipPath representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toClipPathSVG: function(R) { + var M = this._getOffsetTransform(); + return " " + this._createBaseClipPathSVGMarkup( + this._toSVG(), + { reviver: R, additionalTransform: M } + ); + }, + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toSVG: function(R) { + var M = this._getOffsetTransform(); + return this._createBaseSVGMarkup(this._toSVG(), { reviver: R, additionalTransform: M }); + }, + /* _TO_SVG_END_ */ + /** + * Returns number representation of an instance complexity + * @return {Number} complexity of this instance + */ + complexity: function() { + return this.path.length; + }, + /** + * @private + */ + _calcDimensions: function() { + for (var R = [], M = [], O, P = 0, B = 0, H = 0, Y = 0, X, ee = 0, ae = this.path.length; ee < ae; ++ee) { + switch (O = this.path[ee], O[0]) { + case "L": + H = O[1], Y = O[2], X = []; + break; + case "M": + H = O[1], Y = O[2], P = H, B = Y, X = []; + break; + case "C": + X = _.util.getBoundsOfCurve( + H, + Y, + O[1], + O[2], + O[3], + O[4], + O[5], + O[6] + ), H = O[5], Y = O[6]; + break; + case "Q": + X = _.util.getBoundsOfCurve( + H, + Y, + O[1], + O[2], + O[1], + O[2], + O[3], + O[4] + ), H = O[3], Y = O[4]; + break; + case "z": + case "Z": + H = P, Y = B; + break; + } + X.forEach(function(Ve) { + R.push(Ve.x), M.push(Ve.y); + }), R.push(H), M.push(Y); + } + var J = E(R) || 0, ne = E(M) || 0, fe = I(R) || 0, de = I(M) || 0, Te = fe - J, be = de - ne; + return { + left: J, + top: ne, + width: Te, + height: be + }; + } + } + ), _.Path.fromObject = function(R, M) { + if (typeof R.sourcePath == "string") { + var O = R.sourcePath; + _.loadSVGFromURL(O, function(P) { + var B = P[0]; + B.setOptions(R), M && M(B); + }); + } else + _.Object._fromObject("Path", R, M, "path"); + }, _.Path.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat(["d"]), _.Path.fromElement = function(R, M, O) { + var P = _.parseAttributes(R, _.Path.ATTRIBUTE_NAMES); + P.fromSVG = !0, M(new _.Path(P.d, w(P, O))); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.array.min, I = _.util.array.max; + _.Group || (_.Group = _.util.createClass( + _.Object, + _.Collection, + /** @lends fabric.Group.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "group", + /** + * Width of stroke + * @type Number + * @default + */ + strokeWidth: 0, + /** + * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets + * @type Boolean + * @default + */ + subTargetCheck: !1, + /** + * Groups are container, do not render anything on theyr own, ence no cache properties + * @type Array + * @default + */ + cacheProperties: [], + /** + * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still + * available setting this boolean to true. + * @type Boolean + * @since 2.0.0 + * @default + */ + useSetOnGroup: !1, + /** + * Constructor + * @param {Object} objects Group objects + * @param {Object} [options] Options object + * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already. + * @return {Object} thisArg + */ + initialize: function(w, x, b) { + x = x || {}, this._objects = [], b && this.callSuper("initialize", x), this._objects = w || []; + for (var R = this._objects.length; R--; ) + this._objects[R].group = this; + if (b) + this._updateObjectsACoords(); + else { + var M = x && x.centerPoint; + x.originX !== void 0 && (this.originX = x.originX), x.originY !== void 0 && (this.originY = x.originY), M || this._calcBounds(), this._updateObjectsCoords(M), delete x.centerPoint, this.callSuper("initialize", x); + } + this.setCoords(); + }, + /** + * @private + */ + _updateObjectsACoords: function() { + for (var w = !0, x = this._objects.length; x--; ) + this._objects[x].setCoords(w); + }, + /** + * @private + * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change + */ + _updateObjectsCoords: function(x) { + for (var x = x || this.getCenterPoint(), b = this._objects.length; b--; ) + this._updateObjectCoords(this._objects[b], x); + }, + /** + * @private + * @param {Object} object + * @param {fabric.Point} center, current center of group. + */ + _updateObjectCoords: function(w, x) { + var b = w.left, R = w.top, M = !0; + w.set({ + left: b - x.x, + top: R - x.y + }), w.group = this, w.setCoords(M); + }, + /** + * Returns string represenation of a group + * @return {String} + */ + toString: function() { + return "#"; + }, + /** + * Adds an object to a group; Then recalculates group's dimension, position. + * @param {Object} object + * @return {fabric.Group} thisArg + * @chainable + */ + addWithUpdate: function(w) { + var x = !!this.group; + return this._restoreObjectsState(), _.util.resetObjectTransform(this), w && (x && _.util.removeTransformFromObject(w, this.group.calcTransformMatrix()), this._objects.push(w), w.group = this, w._set("canvas", this.canvas)), this._calcBounds(), this._updateObjectsCoords(), this.dirty = !0, x ? this.group.addWithUpdate() : this.setCoords(), this; + }, + /** + * Removes an object from a group; Then recalculates group's dimension, position. + * @param {Object} object + * @return {fabric.Group} thisArg + * @chainable + */ + removeWithUpdate: function(w) { + return this._restoreObjectsState(), _.util.resetObjectTransform(this), this.remove(w), this._calcBounds(), this._updateObjectsCoords(), this.setCoords(), this.dirty = !0, this; + }, + /** + * @private + */ + _onObjectAdded: function(w) { + this.dirty = !0, w.group = this, w._set("canvas", this.canvas); + }, + /** + * @private + */ + _onObjectRemoved: function(w) { + this.dirty = !0, delete w.group; + }, + /** + * @private + */ + _set: function(w, x) { + var b = this._objects.length; + if (this.useSetOnGroup) + for (; b--; ) + this._objects[b].setOnGroup(w, x); + if (w === "canvas") + for (; b--; ) + this._objects[b]._set(w, x); + _.Object.prototype._set.call(this, w, x); + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(w) { + var x = this.includeDefaultValues, b = this._objects.filter(function(M) { + return !M.excludeFromExport; + }).map(function(M) { + var O = M.includeDefaultValues; + M.includeDefaultValues = x; + var P = M.toObject(w); + return M.includeDefaultValues = O, P; + }), R = _.Object.prototype.toObject.call(this, w); + return R.objects = b, R; + }, + /** + * Returns object representation of an instance, in dataless mode. + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toDatalessObject: function(w) { + var x, b = this.sourcePath; + if (b) + x = b; + else { + var R = this.includeDefaultValues; + x = this._objects.map(function(O) { + var P = O.includeDefaultValues; + O.includeDefaultValues = R; + var B = O.toDatalessObject(w); + return O.includeDefaultValues = P, B; + }); + } + var M = _.Object.prototype.toDatalessObject.call(this, w); + return M.objects = x, M; + }, + /** + * Renders instance on a given context + * @param {CanvasRenderingContext2D} ctx context to render instance on + */ + render: function(w) { + this._transformDone = !0, this.callSuper("render", w), this._transformDone = !1; + }, + /** + * Decide if the object should cache or not. Create its own cache level + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group is already cached. + * @return {Boolean} + */ + shouldCache: function() { + var w = _.Object.prototype.shouldCache.call(this); + if (w) { + for (var x = 0, b = this._objects.length; x < b; x++) + if (this._objects[x].willDrawShadow()) + return this.ownCaching = !1, !1; + } + return w; + }, + /** + * Check if this object or a child object will cast a shadow + * @return {Boolean} + */ + willDrawShadow: function() { + if (_.Object.prototype.willDrawShadow.call(this)) + return !0; + for (var w = 0, x = this._objects.length; w < x; w++) + if (this._objects[w].willDrawShadow()) + return !0; + return !1; + }, + /** + * Check if this group or its parent group are caching, recursively up + * @return {Boolean} + */ + isOnACache: function() { + return this.ownCaching || this.group && this.group.isOnACache(); + }, + /** + * Execute the drawing operation for an object on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawObject: function(w) { + for (var x = 0, b = this._objects.length; x < b; x++) + this._objects[x].render(w); + this._drawClipPath(w); + }, + /** + * Check if cache is dirty + */ + isCacheDirty: function(w) { + if (this.callSuper("isCacheDirty", w)) + return !0; + if (!this.statefullCache) + return !1; + for (var x = 0, b = this._objects.length; x < b; x++) + if (this._objects[x].isCacheDirty(!0)) { + if (this._cacheCanvas) { + var R = this.cacheWidth / this.zoomX, M = this.cacheHeight / this.zoomY; + this._cacheContext.clearRect(-R / 2, -M / 2, R, M); + } + return !0; + } + return !1; + }, + /** + * Restores original state of each of group objects (original state is that which was before group was created). + * if the nested boolean is true, the original state will be restored just for the + * first group and not for all the group chain + * @private + * @param {Boolean} nested tell the function to restore object state up to the parent group and not more + * @return {fabric.Group} thisArg + * @chainable + */ + _restoreObjectsState: function() { + var w = this.calcOwnMatrix(); + return this._objects.forEach(function(x) { + _.util.addTransformToObject(x, w), delete x.group, x.setCoords(); + }), this; + }, + /** + * Realises the transform from this group onto the supplied object + * i.e. it tells you what would happen if the supplied object was in + * the group, and then the group was destroyed. It mutates the supplied + * object. + * Warning: this method is not useful anymore, it has been kept to no break the api. + * is not used in the fabricJS codebase + * this method will be reduced to using the utility. + * @private + * @deprecated + * @param {fabric.Object} object + * @param {Array} parentMatrix parent transformation + * @return {fabric.Object} transformedObject + */ + realizeTransform: function(w, x) { + return _.util.addTransformToObject(w, x), w; + }, + /** + * Destroys a group (restoring state of its objects) + * @return {fabric.Group} thisArg + * @chainable + */ + destroy: function() { + return this._objects.forEach(function(w) { + w.set("dirty", !0); + }), this._restoreObjectsState(); + }, + /** + * make a group an active selection, remove the group from canvas + * the group has to be on canvas for this to work. + * @return {fabric.ActiveSelection} thisArg + * @chainable + */ + toActiveSelection: function() { + if (this.canvas) { + var w = this._objects, x = this.canvas; + this._objects = []; + var b = this.toObject(); + delete b.objects; + var R = new _.ActiveSelection([]); + return R.set(b), R.type = "activeSelection", x.remove(this), w.forEach(function(M) { + M.group = R, M.dirty = !0, x.add(M); + }), R.canvas = x, R._objects = w, x._activeObject = R, R.setCoords(), R; + } + }, + /** + * Destroys a group (restoring state of its objects) + * @return {fabric.Group} thisArg + * @chainable + */ + ungroupOnCanvas: function() { + return this._restoreObjectsState(); + }, + /** + * Sets coordinates of all objects inside group + * @return {fabric.Group} thisArg + * @chainable + */ + setObjectsCoords: function() { + var w = !0; + return this.forEachObject(function(x) { + x.setCoords(w); + }), this; + }, + /** + * @private + */ + _calcBounds: function(w) { + for (var x = [], b = [], R, M, O, P = ["tr", "br", "bl", "tl"], B = 0, H = this._objects.length, Y, X = P.length; B < H; ++B) { + for (R = this._objects[B], O = R.calcACoords(), Y = 0; Y < X; Y++) + M = P[Y], x.push(O[M].x), b.push(O[M].y); + R.aCoords = O; + } + this._getBounds(x, b, w); + }, + /** + * @private + */ + _getBounds: function(w, x, b) { + var R = new _.Point(E(w), E(x)), M = new _.Point(I(w), I(x)), O = R.y || 0, P = R.x || 0, B = M.x - R.x || 0, H = M.y - R.y || 0; + this.width = B, this.height = H, b || this.setPositionByOrigin({ x: P, y: O }, "left", "top"); + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + _toSVG: function(w) { + for (var x = [" +`], b = 0, R = this._objects.length; b < R; b++) + x.push(" ", this._objects[b].toSVG(w)); + return x.push(` +`), x; + }, + /** + * Returns styles-string for svg-export, specific version for group + * @return {String} + */ + getSvgStyles: function() { + var w = typeof this.opacity != "undefined" && this.opacity !== 1 ? "opacity: " + this.opacity + ";" : "", x = this.visible ? "" : " visibility: hidden;"; + return [ + w, + this.getSvgFilter(), + x + ].join(""); + }, + /** + * Returns svg clipPath representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toClipPathSVG: function(w) { + for (var x = [], b = 0, R = this._objects.length; b < R; b++) + x.push(" ", this._objects[b].toClipPathSVG(w)); + return this._createBaseClipPathSVGMarkup(x, { reviver: w }); + } + /* _TO_SVG_END_ */ + } + ), _.Group.fromObject = function(w, x) { + var b = w.objects, R = _.util.object.clone(w, !0); + if (delete R.objects, typeof b == "string") { + _.loadSVGFromURL(b, function(M) { + var O = _.util.groupSVGElements(M, w, b); + O.set(R), x && x(O); + }); + return; + } + _.util.enlivenObjects(b, function(M) { + _.util.enlivenObjects([w.clipPath], function(O) { + var P = _.util.object.clone(w, !0); + P.clipPath = O[0], delete P.objects, x && x(new _.Group(M, P, !0)); + }); + }); + }); + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}); + _.ActiveSelection || (_.ActiveSelection = _.util.createClass( + _.Group, + /** @lends fabric.ActiveSelection.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "activeSelection", + /** + * Constructor + * @param {Object} objects ActiveSelection objects + * @param {Object} [options] Options object + * @return {Object} thisArg + */ + initialize: function(E, I) { + I = I || {}, this._objects = E || []; + for (var w = this._objects.length; w--; ) + this._objects[w].group = this; + I.originX && (this.originX = I.originX), I.originY && (this.originY = I.originY), this._calcBounds(), this._updateObjectsCoords(), _.Object.prototype.initialize.call(this, I), this.setCoords(); + }, + /** + * Change te activeSelection to a normal group, + * High level function that automatically adds it to canvas as + * active object. no events fired. + * @since 2.0.0 + * @return {fabric.Group} + */ + toGroup: function() { + var E = this._objects.concat(); + this._objects = []; + var I = _.Object.prototype.toObject.call(this), w = new _.Group([]); + if (delete I.type, w.set(I), E.forEach(function(b) { + b.canvas.remove(b), b.group = w; + }), w._objects = E, !this.canvas) + return w; + var x = this.canvas; + return x.add(w), x._activeObject = w, w.setCoords(), w; + }, + /** + * If returns true, deselection is cancelled. + * @since 2.0.0 + * @return {Boolean} [cancel] + */ + onDeselect: function() { + return this.destroy(), !1; + }, + /** + * Returns string representation of a group + * @return {String} + */ + toString: function() { + return "#"; + }, + /** + * Decide if the object should cache or not. Create its own cache level + * objectCaching is a global flag, wins over everything + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * @return {Boolean} + */ + shouldCache: function() { + return !1; + }, + /** + * Check if this group or its parent group are caching, recursively up + * @return {Boolean} + */ + isOnACache: function() { + return !1; + }, + /** + * Renders controls and borders for the object + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} [styleOverride] properties to override the object style + * @param {Object} [childrenOverride] properties to override the children overrides + */ + _renderControls: function(E, I, w) { + E.save(), E.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1, this.callSuper("_renderControls", E, I), w = w || {}, typeof w.hasControls == "undefined" && (w.hasControls = !1), w.forActiveSelection = !0; + for (var x = 0, b = this._objects.length; x < b; x++) + this._objects[x]._renderControls(E, w); + E.restore(); + } + } + ), _.ActiveSelection.fromObject = function(E, I) { + _.util.enlivenObjects(E.objects, function(w) { + delete E.objects, I && I(new _.ActiveSelection(w, E, !0)); + }); + }); + }(u), function(S) { + var _ = f.util.object.extend; + if (S.fabric || (S.fabric = {}), S.fabric.Image) { + f.warn("fabric.Image is already defined."); + return; + } + f.Image = f.util.createClass( + f.Object, + /** @lends fabric.Image.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "image", + /** + * Width of a stroke. + * For image quality a stroke multiple of 2 gives better results. + * @type Number + * @default + */ + strokeWidth: 0, + /** + * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`. + * This allows for relative urls as image src. + * @since 2.7.0 + * @type Boolean + * @default + */ + srcFromAttribute: !1, + /** + * private + * contains last value of scaleX to detect + * if the Image got resized after the last Render + * @type Number + */ + _lastScaleX: 1, + /** + * private + * contains last value of scaleY to detect + * if the Image got resized after the last Render + * @type Number + */ + _lastScaleY: 1, + /** + * private + * contains last value of scaling applied by the apply filter chain + * @type Number + */ + _filterScalingX: 1, + /** + * private + * contains last value of scaling applied by the apply filter chain + * @type Number + */ + _filterScalingY: 1, + /** + * minimum scale factor under which any resizeFilter is triggered to resize the image + * 0 will disable the automatic resize. 1 will trigger automatically always. + * number bigger than 1 are not implemented yet. + * @type Number + */ + minimumScaleTrigger: 0.5, + /** + * List of properties to consider when checking if + * state of an object is changed ({@link fabric.Object#hasStateChanged}) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: f.Object.prototype.stateProperties.concat("cropX", "cropY"), + /** + * List of properties to consider when checking if cache needs refresh + * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single + * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty + * and refreshed at the next render + * @type Array + */ + cacheProperties: f.Object.prototype.cacheProperties.concat("cropX", "cropY"), + /** + * key used to retrieve the texture representing this image + * @since 2.0.0 + * @type String + * @default + */ + cacheKey: "", + /** + * Image crop in pixels from original image size. + * @since 2.0.0 + * @type Number + * @default + */ + cropX: 0, + /** + * Image crop in pixels from original image size. + * @since 2.0.0 + * @type Number + * @default + */ + cropY: 0, + /** + * Indicates whether this canvas will use image smoothing when painting this image. + * Also influence if the cacheCanvas for this image uses imageSmoothing + * @since 4.0.0-beta.11 + * @type Boolean + * @default + */ + imageSmoothing: !0, + /** + * Constructor + * Image can be initialized with any canvas drawable or a string. + * The string should be a url and will be loaded as an image. + * Canvas and Image element work out of the box, while videos require extra code to work. + * Please check video element events for seeking. + * @param {HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | String} element Image element + * @param {Object} [options] Options object + * @param {function} [callback] callback function to call after eventual filters applied. + * @return {fabric.Image} thisArg + */ + initialize: function(E, I) { + I || (I = {}), this.filters = [], this.cacheKey = "texture" + f.Object.__uid++, this.callSuper("initialize", I), this._initElement(E, I); + }, + /** + * Returns image element which this instance if based on + * @return {HTMLImageElement} Image element + */ + getElement: function() { + return this._element || {}; + }, + /** + * Sets image element for this instance to a specified one. + * If filters defined they are applied to new image. + * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area. + * @param {HTMLImageElement} element + * @param {Object} [options] Options object + * @return {fabric.Image} thisArg + * @chainable + */ + setElement: function(E, I) { + return this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._element = E, this._originalElement = E, this._initConfig(I), this.filters.length !== 0 && this.applyFilters(), this.resizeFilter && this.applyResizeFilters(), this; + }, + /** + * Delete a single texture if in webgl mode + */ + removeTexture: function(E) { + var I = f.filterBackend; + I && I.evictCachesForKey && I.evictCachesForKey(E); + }, + /** + * Delete textures, reference to elements and eventually JSDOM cleanup + */ + dispose: function() { + this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._cacheContext = void 0, ["_originalElement", "_element", "_filteredEl", "_cacheCanvas"].forEach(function(E) { + f.util.cleanUpJsdomNode(this[E]), this[E] = void 0; + }.bind(this)); + }, + /** + * Get the crossOrigin value (of the corresponding image element) + */ + getCrossOrigin: function() { + return this._originalElement && (this._originalElement.crossOrigin || null); + }, + /** + * Returns original size of an image + * @return {Object} Object with "width" and "height" properties + */ + getOriginalSize: function() { + var E = this.getElement(); + return { + width: E.naturalWidth || E.width, + height: E.naturalHeight || E.height + }; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _stroke: function(E) { + if (!(!this.stroke || this.strokeWidth === 0)) { + var I = this.width / 2, w = this.height / 2; + E.beginPath(), E.moveTo(-I, -w), E.lineTo(I, -w), E.lineTo(I, w), E.lineTo(-I, w), E.lineTo(-I, -w), E.closePath(); + } + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(E) { + var I = []; + this.filters.forEach(function(x) { + x && I.push(x.toObject()); + }); + var w = _( + this.callSuper( + "toObject", + ["cropX", "cropY"].concat(E) + ), + { + src: this.getSrc(), + crossOrigin: this.getCrossOrigin(), + filters: I + } + ); + return this.resizeFilter && (w.resizeFilter = this.resizeFilter.toObject()), w; + }, + /** + * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,height. + * @return {Boolean} + */ + hasCrop: function() { + return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height; + }, + /* _TO_SVG_START_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG: function() { + var E = [], I = [], w, x = this._element, b = -this.width / 2, R = -this.height / 2, M = "", O = ""; + if (!x) + return []; + if (this.hasCrop()) { + var P = f.Object.__uid++; + E.push( + ' +`, + ' +`, + ` +` + ), M = ' clip-path="url(#imageCrop_' + P + ')" '; + } + if (this.imageSmoothing || (O = '" image-rendering="optimizeSpeed'), I.push( + " +` + ), this.stroke || this.strokeDashArray) { + var B = this.fill; + this.fill = null, w = [ + " +` + ], this.fill = B; + } + return this.paintFirst !== "fill" ? E = E.concat(w, I) : E = E.concat(I, w), E; + }, + /* _TO_SVG_END_ */ + /** + * Returns source of an image + * @param {Boolean} filtered indicates if the src is needed for svg + * @return {String} Source of an image + */ + getSrc: function(E) { + var I = E ? this._element : this._originalElement; + return I ? I.toDataURL ? I.toDataURL() : this.srcFromAttribute ? I.getAttribute("src") : I.src : this.src || ""; + }, + /** + * Sets source of an image + * @param {String} src Source string (URL) + * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied) + * @param {Object} [options] Options object + * @param {String} [options.crossOrigin] crossOrigin value (one of "", "anonymous", "use-credentials") + * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes + * @return {fabric.Image} thisArg + * @chainable + */ + setSrc: function(E, I, w) { + return f.util.loadImage(E, function(x, b) { + this.setElement(x, w), this._setWidthHeight(), I && I(this, b); + }, this, w && w.crossOrigin), this; + }, + /** + * Returns string representation of an instance + * @return {String} String representation of an instance + */ + toString: function() { + return '#'; + }, + applyResizeFilters: function() { + var E = this.resizeFilter, I = this.minimumScaleTrigger, w = this.getTotalObjectScaling(), x = w.scaleX, b = w.scaleY, R = this._filteredEl || this._originalElement; + if (this.group && this.set("dirty", !0), !E || x > I && b > I) { + this._element = R, this._filterScalingX = 1, this._filterScalingY = 1, this._lastScaleX = x, this._lastScaleY = b; + return; + } + f.filterBackend || (f.filterBackend = f.initFilterBackend()); + var M = f.util.createCanvasElement(), O = this._filteredEl ? this.cacheKey + "_filtered" : this.cacheKey, P = R.width, B = R.height; + M.width = P, M.height = B, this._element = M, this._lastScaleX = E.scaleX = x, this._lastScaleY = E.scaleY = b, f.filterBackend.applyFilters( + [E], + R, + P, + B, + this._element, + O + ), this._filterScalingX = M.width / this._originalElement.width, this._filterScalingY = M.height / this._originalElement.height; + }, + /** + * Applies filters assigned to this image (from "filters" array) or from filter param + * @method applyFilters + * @param {Array} filters to be applied + * @param {Boolean} forResizing specify if the filter operation is a resize operation + * @return {thisArg} return the fabric.Image object + * @chainable + */ + applyFilters: function(E) { + if (E = E || this.filters || [], E = E.filter(function(R) { + return R && !R.isNeutralState(); + }), this.set("dirty", !0), this.removeTexture(this.cacheKey + "_filtered"), E.length === 0) + return this._element = this._originalElement, this._filteredEl = null, this._filterScalingX = 1, this._filterScalingY = 1, this; + var I = this._originalElement, w = I.naturalWidth || I.width, x = I.naturalHeight || I.height; + if (this._element === this._originalElement) { + var b = f.util.createCanvasElement(); + b.width = w, b.height = x, this._element = b, this._filteredEl = b; + } else + this._element = this._filteredEl, this._filteredEl.getContext("2d").clearRect(0, 0, w, x), this._lastScaleX = 1, this._lastScaleY = 1; + return f.filterBackend || (f.filterBackend = f.initFilterBackend()), f.filterBackend.applyFilters( + E, + this._originalElement, + w, + x, + this._element, + this.cacheKey + ), (this._originalElement.width !== this._element.width || this._originalElement.height !== this._element.height) && (this._filterScalingX = this._element.width / this._originalElement.width, this._filterScalingY = this._element.height / this._originalElement.height), this; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(E) { + f.util.setImageSmoothing(E, this.imageSmoothing), this.isMoving !== !0 && this.resizeFilter && this._needsResize() && this.applyResizeFilters(), this._stroke(E), this._renderPaintInOrder(E); + }, + /** + * Paint the cached copy of the object on the target context. + * it will set the imageSmoothing for the draw operation + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + drawCacheOnCanvas: function(E) { + f.util.setImageSmoothing(E, this.imageSmoothing), f.Object.prototype.drawCacheOnCanvas.call(this, E); + }, + /** + * Decide if the object should cache or not. Create its own cache level + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * This is the special image version where we would like to avoid caching where possible. + * Essentially images do not benefit from caching. They may require caching, and in that + * case we do it. Also caching an image usually ends in a loss of details. + * A full performance audit should be done. + * @return {Boolean} + */ + shouldCache: function() { + return this.needsItsOwnCache(); + }, + _renderFill: function(E) { + var I = this._element; + if (I) { + var w = this._filterScalingX, x = this._filterScalingY, b = this.width, R = this.height, M = Math.min, O = Math.max, P = O(this.cropX, 0), B = O(this.cropY, 0), H = I.naturalWidth || I.width, Y = I.naturalHeight || I.height, X = P * w, ee = B * x, ae = M(b * w, H - X), J = M(R * x, Y - ee), ne = -b / 2, fe = -R / 2, de = M(b, H / w - P), Te = M(R, Y / x - B); + I && E.drawImage(I, X, ee, ae, J, ne, fe, de, Te); + } + }, + /** + * needed to check if image needs resize + * @private + */ + _needsResize: function() { + var E = this.getTotalObjectScaling(); + return E.scaleX !== this._lastScaleX || E.scaleY !== this._lastScaleY; + }, + /** + * @private + */ + _resetWidthHeight: function() { + this.set(this.getOriginalSize()); + }, + /** + * The Image class's initialization method. This method is automatically + * called by the constructor. + * @private + * @param {HTMLImageElement|String} element The element representing the image + * @param {Object} [options] Options object + */ + _initElement: function(E, I) { + this.setElement(f.util.getById(E), I), f.util.addClass(this.getElement(), f.Image.CSS_CANVAS); + }, + /** + * @private + * @param {Object} [options] Options object + */ + _initConfig: function(E) { + E || (E = {}), this.setOptions(E), this._setWidthHeight(E); + }, + /** + * @private + * @param {Array} filters to be initialized + * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created + */ + _initFilters: function(E, I) { + E && E.length ? f.util.enlivenObjects(E, function(w) { + I && I(w); + }, "fabric.Image.filters") : I && I(); + }, + /** + * @private + * Set the width and the height of the image object, using the element or the + * options. + * @param {Object} [options] Object with width/height properties + */ + _setWidthHeight: function(E) { + E || (E = {}); + var I = this.getElement(); + this.width = E.width || I.naturalWidth || I.width || 0, this.height = E.height || I.naturalHeight || I.height || 0; + }, + /** + * Calculate offset for center and scale factor for the image in order to respect + * the preserveAspectRatio attribute + * @private + * @return {Object} + */ + parsePreserveAspectRatioAttribute: function() { + var E = f.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ""), I = this._element.width, w = this._element.height, x = 1, b = 1, R = 0, M = 0, O = 0, P = 0, B, H = this.width, Y = this.height, X = { width: H, height: Y }; + return E && (E.alignX !== "none" || E.alignY !== "none") ? (E.meetOrSlice === "meet" && (x = b = f.util.findScaleToFit(this._element, X), B = (H - I * x) / 2, E.alignX === "Min" && (R = -B), E.alignX === "Max" && (R = B), B = (Y - w * b) / 2, E.alignY === "Min" && (M = -B), E.alignY === "Max" && (M = B)), E.meetOrSlice === "slice" && (x = b = f.util.findScaleToCover(this._element, X), B = I - H / x, E.alignX === "Mid" && (O = B / 2), E.alignX === "Max" && (O = B), B = w - Y / b, E.alignY === "Mid" && (P = B / 2), E.alignY === "Max" && (P = B), I = H / x, w = Y / b)) : (x = H / I, b = Y / w), { + width: I, + height: w, + scaleX: x, + scaleY: b, + offsetLeft: R, + offsetTop: M, + cropX: O, + cropY: P + }; + } + } + ), f.Image.CSS_CANVAS = "canvas-img", f.Image.prototype.getSvgSrc = f.Image.prototype.getSrc, f.Image.fromObject = function(E, I) { + var w = f.util.object.clone(E); + f.util.loadImage(w.src, function(x, b) { + if (b) { + I && I(null, !0); + return; + } + f.Image.prototype._initFilters.call(w, w.filters, function(R) { + w.filters = R || [], f.Image.prototype._initFilters.call(w, [w.resizeFilter], function(M) { + w.resizeFilter = M[0], f.util.enlivenObjects([w.clipPath], function(O) { + w.clipPath = O[0]; + var P = new f.Image(x, w); + I(P, !1); + }); + }); + }); + }, null, w.crossOrigin); + }, f.Image.fromURL = function(E, I, w) { + f.util.loadImage(E, function(x, b) { + I && I(new f.Image(x, w), b); + }, null, w && w.crossOrigin); + }, f.Image.ATTRIBUTE_NAMES = f.SHARED_ATTRIBUTES.concat( + "x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ") + ), f.Image.fromElement = function(E, I, w) { + var x = f.parseAttributes(E, f.Image.ATTRIBUTE_NAMES); + f.Image.fromURL( + x["xlink:href"], + I, + _(w ? f.util.object.clone(w) : {}, x) + ); + }; + }(u), f.util.object.extend( + f.Object.prototype, + /** @lends fabric.Object.prototype */ + { + /** + * @private + * @return {Number} angle value + */ + _getAngleValueForStraighten: function() { + var S = this.angle % 360; + return S > 0 ? Math.round((S - 1) / 90) * 90 : Math.round(S / 90) * 90; + }, + /** + * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer) + * @return {fabric.Object} thisArg + * @chainable + */ + straighten: function() { + return this.rotate(this._getAngleValueForStraighten()), this; + }, + /** + * Same as {@link fabric.Object.prototype.straighten} but with animation + * @param {Object} callbacks Object with callback functions + * @param {Function} [callbacks.onComplete] Invoked on completion + * @param {Function} [callbacks.onChange] Invoked on every step of animation + * @return {fabric.Object} thisArg + * @chainable + */ + fxStraighten: function(S) { + S = S || {}; + var _ = function() { + }, E = S.onComplete || _, I = S.onChange || _, w = this; + return f.util.animate({ + startValue: this.get("angle"), + endValue: this._getAngleValueForStraighten(), + duration: this.FX_DURATION, + onChange: function(x) { + w.rotate(x), I(); + }, + onComplete: function() { + w.setCoords(), E(); + } + }), this; + } + } + ), f.util.object.extend( + f.StaticCanvas.prototype, + /** @lends fabric.StaticCanvas.prototype */ + { + /** + * Straightens object, then rerenders canvas + * @param {fabric.Object} object Object to straighten + * @return {fabric.Canvas} thisArg + * @chainable + */ + straightenObject: function(S) { + return S.straighten(), this.requestRenderAll(), this; + }, + /** + * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated + * @param {fabric.Object} object Object to straighten + * @return {fabric.Canvas} thisArg + * @chainable + */ + fxStraightenObject: function(S) { + return S.fxStraighten({ + onChange: this.requestRenderAllBound + }), this; + } + } + ), function() { + function S(E, I) { + var w = "precision " + I + ` float; +void main(){}`, x = E.createShader(E.FRAGMENT_SHADER); + return E.shaderSource(x, w), E.compileShader(x), !!E.getShaderParameter(x, E.COMPILE_STATUS); + } + f.isWebglSupported = function(E) { + if (f.isLikelyNode) + return !1; + E = E || f.WebglFilterBackend.prototype.tileSize; + var I = document.createElement("canvas"), w = I.getContext("webgl") || I.getContext("experimental-webgl"), x = !1; + if (w) { + f.maxTextureSize = w.getParameter(w.MAX_TEXTURE_SIZE), x = f.maxTextureSize >= E; + for (var b = ["highp", "mediump", "lowp"], R = 0; R < 3; R++) + if (S(w, b[R])) { + f.webGlPrecision = b[R]; + break; + } + } + return this.isSupported = x, x; + }, f.WebglFilterBackend = _; + function _(E) { + E && E.tileSize && (this.tileSize = E.tileSize), this.setupGLContext(this.tileSize, this.tileSize), this.captureGPUInfo(); + } + _.prototype = /** @lends fabric.WebglFilterBackend.prototype */ + { + tileSize: 2048, + /** + * Experimental. This object is a sort of repository of help layers used to avoid + * of recreating them during frequent filtering. If you are previewing a filter with + * a slider you probably do not want to create help layers every filter step. + * in this object there will be appended some canvases, created once, resized sometimes + * cleared never. Clearing is left to the developer. + **/ + resources: {}, + /** + * Setup a WebGL context suitable for filtering, and bind any needed event handlers. + */ + setupGLContext: function(E, I) { + this.dispose(), this.createWebGLCanvas(E, I), this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]), this.chooseFastestCopyGLTo2DMethod(E, I); + }, + /** + * Pick a method to copy data from GL context to 2d canvas. In some browsers using + * putImageData is faster than drawImage for that specific operation. + */ + chooseFastestCopyGLTo2DMethod: function(E, I) { + var w = typeof window.performance != "undefined", x; + try { + new ImageData(1, 1), x = !0; + } catch (X) { + x = !1; + } + var b = typeof ArrayBuffer != "undefined", R = typeof Uint8ClampedArray != "undefined"; + if (w && x && b && R) { + var M = f.util.createCanvasElement(), O = new ArrayBuffer(E * I * 4); + if (f.forceGLPutImageData) { + this.imageBuffer = O, this.copyGLTo2D = A; + return; + } + var P = { + imageBuffer: O, + destinationWidth: E, + destinationHeight: I, + targetCanvas: M + }, B, H, Y; + M.width = E, M.height = I, B = window.performance.now(), C.call(P, this.gl, P), H = window.performance.now() - B, B = window.performance.now(), A.call(P, this.gl, P), Y = window.performance.now() - B, H > Y ? (this.imageBuffer = O, this.copyGLTo2D = A) : this.copyGLTo2D = C; + } + }, + /** + * Create a canvas element and associated WebGL context and attaches them as + * class properties to the GLFilterBackend class. + */ + createWebGLCanvas: function(E, I) { + var w = f.util.createCanvasElement(); + w.width = E, w.height = I; + var x = { + alpha: !0, + premultipliedAlpha: !1, + depth: !1, + stencil: !1, + antialias: !1 + }, b = w.getContext("webgl", x); + b || (b = w.getContext("experimental-webgl", x)), b && (b.clearColor(0, 0, 0, 0), this.canvas = w, this.gl = b); + }, + /** + * Attempts to apply the requested filters to the source provided, drawing the filtered output + * to the provided target canvas. + * + * @param {Array} filters The filters to apply. + * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered. + * @param {Number} width The width of the source input. + * @param {Number} height The height of the source input. + * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn. + * @param {String|undefined} cacheKey A key used to cache resources related to the source. If + * omitted, caching will be skipped. + */ + applyFilters: function(E, I, w, x, b, R) { + var M = this.gl, O; + R && (O = this.getCachedTexture(R, I)); + var P = { + originalWidth: I.width || I.originalWidth, + originalHeight: I.height || I.originalHeight, + sourceWidth: w, + sourceHeight: x, + destinationWidth: w, + destinationHeight: x, + context: M, + sourceTexture: this.createTexture(M, w, x, !O && I), + targetTexture: this.createTexture(M, w, x), + originalTexture: O || this.createTexture(M, w, x, !O && I), + passes: E.length, + webgl: !0, + aPosition: this.aPosition, + programCache: this.programCache, + pass: 0, + filterBackend: this, + targetCanvas: b + }, B = M.createFramebuffer(); + return M.bindFramebuffer(M.FRAMEBUFFER, B), E.forEach(function(H) { + H && H.applyTo(P); + }), y(P), this.copyGLTo2D(M, P), M.bindTexture(M.TEXTURE_2D, null), M.deleteTexture(P.sourceTexture), M.deleteTexture(P.targetTexture), M.deleteFramebuffer(B), b.getContext("2d").setTransform(1, 0, 0, 1, 0, 0), P; + }, + /** + * Detach event listeners, remove references, and clean up caches. + */ + dispose: function() { + this.canvas && (this.canvas = null, this.gl = null), this.clearWebGLCaches(); + }, + /** + * Wipe out WebGL-related caches. + */ + clearWebGLCaches: function() { + this.programCache = {}, this.textureCache = {}; + }, + /** + * Create a WebGL texture object. + * + * Accepts specific dimensions to initialize the texture to or a source image. + * + * @param {WebGLRenderingContext} gl The GL context to use for creating the texture. + * @param {Number} width The width to initialize the texture at. + * @param {Number} height The height to initialize the texture. + * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data. + * @returns {WebGLTexture} + */ + createTexture: function(E, I, w, x) { + var b = E.createTexture(); + return E.bindTexture(E.TEXTURE_2D, b), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_MAG_FILTER, E.NEAREST), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_MIN_FILTER, E.NEAREST), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_WRAP_S, E.CLAMP_TO_EDGE), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_WRAP_T, E.CLAMP_TO_EDGE), x ? E.texImage2D(E.TEXTURE_2D, 0, E.RGBA, E.RGBA, E.UNSIGNED_BYTE, x) : E.texImage2D(E.TEXTURE_2D, 0, E.RGBA, I, w, 0, E.RGBA, E.UNSIGNED_BYTE, null), b; + }, + /** + * Can be optionally used to get a texture from the cache array + * + * If an existing texture is not found, a new texture is created and cached. + * + * @param {String} uniqueId A cache key to use to find an existing texture. + * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the + * texture cache entry if one does not already exist. + */ + getCachedTexture: function(E, I) { + if (this.textureCache[E]) + return this.textureCache[E]; + var w = this.createTexture( + this.gl, + I.width, + I.height, + I + ); + return this.textureCache[E] = w, w; + }, + /** + * Clear out cached resources related to a source image that has been + * filtered previously. + * + * @param {String} cacheKey The cache key provided when the source image was filtered. + */ + evictCachesForKey: function(E) { + this.textureCache[E] && (this.gl.deleteTexture(this.textureCache[E]), delete this.textureCache[E]); + }, + copyGLTo2D: C, + /** + * Attempt to extract GPU information strings from a WebGL context. + * + * Useful information when debugging or blacklisting specific GPUs. + * + * @returns {Object} A GPU info object with renderer and vendor strings. + */ + captureGPUInfo: function() { + if (this.gpuInfo) + return this.gpuInfo; + var E = this.gl, I = { renderer: "", vendor: "" }; + if (!E) + return I; + var w = E.getExtension("WEBGL_debug_renderer_info"); + if (w) { + var x = E.getParameter(w.UNMASKED_RENDERER_WEBGL), b = E.getParameter(w.UNMASKED_VENDOR_WEBGL); + x && (I.renderer = x.toLowerCase()), b && (I.vendor = b.toLowerCase()); + } + return this.gpuInfo = I, I; + } + }; + }(); + function y(S) { + var _ = S.targetCanvas, E = _.width, I = _.height, w = S.destinationWidth, x = S.destinationHeight; + (E !== w || I !== x) && (_.width = w, _.height = x); + } + function C(S, _) { + var E = S.canvas, I = _.targetCanvas, w = I.getContext("2d"); + w.translate(0, I.height), w.scale(1, -1); + var x = E.height - I.height; + w.drawImage( + E, + 0, + x, + I.width, + I.height, + 0, + 0, + I.width, + I.height + ); + } + function A(S, _) { + var E = _.targetCanvas, I = E.getContext("2d"), w = _.destinationWidth, x = _.destinationHeight, b = w * x * 4, R = new Uint8Array(this.imageBuffer, 0, b), M = new Uint8ClampedArray(this.imageBuffer, 0, b); + S.readPixels(0, 0, w, x, S.RGBA, S.UNSIGNED_BYTE, R); + var O = new ImageData(M, w, x); + I.putImageData(O, 0, 0); + } + (function() { + var S = function() { + }; + f.Canvas2dFilterBackend = _; + function _() { + } + _.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ + { + evictCachesForKey: S, + dispose: S, + clearWebGLCaches: S, + /** + * Experimental. This object is a sort of repository of help layers used to avoid + * of recreating them during frequent filtering. If you are previewing a filter with + * a slider you probably do not want to create help layers every filter step. + * in this object there will be appended some canvases, created once, resized sometimes + * cleared never. Clearing is left to the developer. + **/ + resources: {}, + /** + * Apply a set of filters against a source image and draw the filtered output + * to the provided destination canvas. + * + * @param {EnhancedFilter} filters The filter to apply. + * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered. + * @param {Number} sourceWidth The width of the source input. + * @param {Number} sourceHeight The height of the source input. + * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn. + */ + applyFilters: function(E, I, w, x, b) { + var R = b.getContext("2d"); + R.drawImage(I, 0, 0, w, x); + var M = R.getImageData(0, 0, w, x), O = R.getImageData(0, 0, w, x), P = { + sourceWidth: w, + sourceHeight: x, + imageData: M, + originalEl: I, + originalImageData: O, + canvasEl: b, + ctx: R, + filterBackend: this + }; + return E.forEach(function(B) { + B.applyTo(P); + }), (P.imageData.width !== w || P.imageData.height !== x) && (b.width = P.imageData.width, b.height = P.imageData.height), R.putImageData(P.imageData, 0, 0), P; + } + }; + })(), f.Image = f.Image || {}, f.Image.filters = f.Image.filters || {}, f.Image.filters.BaseFilter = f.util.createClass( + /** @lends fabric.Image.filters.BaseFilter.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "BaseFilter", + /** + * Array of attributes to send with buffers. do not modify + * @private + */ + vertexSource: `attribute vec2 aPosition; +varying vec2 vTexCoord; +void main() { +vTexCoord = aPosition; +gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0); +}`, + fragmentSource: `precision highp float; +varying vec2 vTexCoord; +uniform sampler2D uTexture; +void main() { +gl_FragColor = texture2D(uTexture, vTexCoord); +}`, + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(S) { + S && this.setOptions(S); + }, + /** + * Sets filter's properties from options + * @param {Object} [options] Options object + */ + setOptions: function(S) { + for (var _ in S) + this[_] = S[_]; + }, + /** + * Compile this filter's shader program. + * + * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation. + * @param {String} fragmentSource fragmentShader source for compilation + * @param {String} vertexSource vertexShader source for compilation + */ + createProgram: function(S, _, E) { + _ = _ || this.fragmentSource, E = E || this.vertexSource, f.webGlPrecision !== "highp" && (_ = _.replace( + /precision highp float/g, + "precision " + f.webGlPrecision + " float" + )); + var I = S.createShader(S.VERTEX_SHADER); + if (S.shaderSource(I, E), S.compileShader(I), !S.getShaderParameter(I, S.COMPILE_STATUS)) + throw new Error( + // eslint-disable-next-line prefer-template + "Vertex shader compile error for " + this.type + ": " + S.getShaderInfoLog(I) + ); + var w = S.createShader(S.FRAGMENT_SHADER); + if (S.shaderSource(w, _), S.compileShader(w), !S.getShaderParameter(w, S.COMPILE_STATUS)) + throw new Error( + // eslint-disable-next-line prefer-template + "Fragment shader compile error for " + this.type + ": " + S.getShaderInfoLog(w) + ); + var x = S.createProgram(); + if (S.attachShader(x, I), S.attachShader(x, w), S.linkProgram(x), !S.getProgramParameter(x, S.LINK_STATUS)) + throw new Error( + // eslint-disable-next-line prefer-template + 'Shader link error for "${this.type}" ' + S.getProgramInfoLog(x) + ); + var b = this.getAttributeLocations(S, x), R = this.getUniformLocations(S, x) || {}; + return R.uStepW = S.getUniformLocation(x, "uStepW"), R.uStepH = S.getUniformLocation(x, "uStepH"), { + program: x, + attributeLocations: b, + uniformLocations: R + }; + }, + /** + * Return a map of attribute names to WebGLAttributeLocation objects. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {WebGLShaderProgram} program The shader program from which to take attribute locations. + * @returns {Object} A map of attribute names to attribute locations. + */ + getAttributeLocations: function(S, _) { + return { + aPosition: S.getAttribLocation(_, "aPosition") + }; + }, + /** + * Return a map of uniform names to WebGLUniformLocation objects. + * + * Intended to be overridden by subclasses. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {WebGLShaderProgram} program The shader program from which to take uniform locations. + * @returns {Object} A map of uniform names to uniform locations. + */ + getUniformLocations: function() { + return {}; + }, + /** + * Send attribute data from this filter to its shader program on the GPU. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {Object} attributeLocations A map of shader attribute names to their locations. + */ + sendAttributeData: function(S, _, E) { + var I = _.aPosition, w = S.createBuffer(); + S.bindBuffer(S.ARRAY_BUFFER, w), S.enableVertexAttribArray(I), S.vertexAttribPointer(I, 2, S.FLOAT, !1, 0, 0), S.bufferData(S.ARRAY_BUFFER, E, S.STATIC_DRAW); + }, + _setupFrameBuffer: function(S) { + var _ = S.context, E, I; + S.passes > 1 ? (E = S.destinationWidth, I = S.destinationHeight, (S.sourceWidth !== E || S.sourceHeight !== I) && (_.deleteTexture(S.targetTexture), S.targetTexture = S.filterBackend.createTexture(_, E, I)), _.framebufferTexture2D( + _.FRAMEBUFFER, + _.COLOR_ATTACHMENT0, + _.TEXTURE_2D, + S.targetTexture, + 0 + )) : (_.bindFramebuffer(_.FRAMEBUFFER, null), _.finish()); + }, + _swapTextures: function(S) { + S.passes--, S.pass++; + var _ = S.targetTexture; + S.targetTexture = S.sourceTexture, S.sourceTexture = _; + }, + /** + * Generic isNeutral implementation for one parameter based filters. + * Used only in image applyFilters to discard filters that will not have an effect + * on the image + * Other filters may need their own version ( ColorMatrix, HueRotation, gamma, ComposedFilter ) + * @param {Object} options + **/ + isNeutralState: function() { + var S = this.mainParameter, _ = f.Image.filters[this.type].prototype; + if (S) + if (Array.isArray(_[S])) { + for (var E = _[S].length; E--; ) + if (this[S][E] !== _[S][E]) + return !1; + return !0; + } else + return _[S] === this[S]; + else + return !1; + }, + /** + * Apply this filter to the input image data provided. + * + * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyTo: function(S) { + S.webgl ? (this._setupFrameBuffer(S), this.applyToWebGL(S), this._swapTextures(S)) : this.applyTo2d(S); + }, + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(S) { + return S.programCache.hasOwnProperty(this.type) || (S.programCache[this.type] = this.createProgram(S.context)), S.programCache[this.type]; + }, + /** + * Apply this filter using webgl. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.originalTexture The texture of the original input image. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyToWebGL: function(S) { + var _ = S.context, E = this.retrieveShader(S); + S.pass === 0 && S.originalTexture ? _.bindTexture(_.TEXTURE_2D, S.originalTexture) : _.bindTexture(_.TEXTURE_2D, S.sourceTexture), _.useProgram(E.program), this.sendAttributeData(_, E.attributeLocations, S.aPosition), _.uniform1f(E.uniformLocations.uStepW, 1 / S.sourceWidth), _.uniform1f(E.uniformLocations.uStepH, 1 / S.sourceHeight), this.sendUniformData(_, E.uniformLocations), _.viewport(0, 0, S.destinationWidth, S.destinationHeight), _.drawArrays(_.TRIANGLE_STRIP, 0, 4); + }, + bindAdditionalTexture: function(S, _, E) { + S.activeTexture(E), S.bindTexture(S.TEXTURE_2D, _), S.activeTexture(S.TEXTURE0); + }, + unbindAdditionalTexture: function(S, _) { + S.activeTexture(_), S.bindTexture(S.TEXTURE_2D, null), S.activeTexture(S.TEXTURE0); + }, + getMainParameter: function() { + return this[this.mainParameter]; + }, + setMainParameter: function(S) { + this[this.mainParameter] = S; + }, + /** + * Send uniform data from this filter to its shader program on the GPU. + * + * Intended to be overridden by subclasses. + * + * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program. + * @param {Object} uniformLocations A map of shader uniform names to their locations. + */ + sendUniformData: function() { + }, + /** + * If needed by a 2d filter, this functions can create an helper canvas to be used + * remember that options.targetCanvas is available for use till end of chain. + */ + createHelpLayer: function(S) { + if (!S.helpLayer) { + var _ = document.createElement("canvas"); + _.width = S.sourceWidth, _.height = S.sourceHeight, S.helpLayer = _; + } + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + var S = { type: this.type }, _ = this.mainParameter; + return _ && (S[_] = this[_]), S; + }, + /** + * Returns a JSON representation of an instance + * @return {Object} JSON + */ + toJSON: function() { + return this.toObject(); + } + } + ), f.Image.filters.BaseFilter.fromObject = function(S, _) { + var E = new f.Image.filters[S.type](S); + return _ && _(E), E; + }, function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.ColorMatrix = I( + E.BaseFilter, + /** @lends fabric.Image.filters.ColorMatrix.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "ColorMatrix", + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +varying vec2 vTexCoord; +uniform mat4 uColorMatrix; +uniform vec4 uConstants; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +color *= uColorMatrix; +color += uConstants; +gl_FragColor = color; +}`, + /** + * Colormatrix for pixels. + * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning + * outside the -1, 1 range. + * 0.0039215686 is the part of 1 that get translated to 1 in 2d + * @param {Array} matrix array of 20 numbers. + * @default + */ + matrix: [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ], + mainParameter: "matrix", + /** + * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario + * to save some calculation + */ + colorsOnly: !0, + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(w) { + this.callSuper("initialize", w), this.matrix = this.matrix.slice(0); + }, + /** + * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = x.data, R = b.length, M = this.matrix, O, P, B, H, Y, X = this.colorsOnly; + for (Y = 0; Y < R; Y += 4) + O = b[Y], P = b[Y + 1], B = b[Y + 2], X ? (b[Y] = O * M[0] + P * M[1] + B * M[2] + M[4] * 255, b[Y + 1] = O * M[5] + P * M[6] + B * M[7] + M[9] * 255, b[Y + 2] = O * M[10] + P * M[11] + B * M[12] + M[14] * 255) : (H = b[Y + 3], b[Y] = O * M[0] + P * M[1] + B * M[2] + H * M[3] + M[4] * 255, b[Y + 1] = O * M[5] + P * M[6] + B * M[7] + H * M[8] + M[9] * 255, b[Y + 2] = O * M[10] + P * M[11] + B * M[12] + H * M[13] + M[14] * 255, b[Y + 3] = O * M[15] + P * M[16] + B * M[17] + H * M[18] + M[19] * 255); + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uColorMatrix: w.getUniformLocation(x, "uColorMatrix"), + uConstants: w.getUniformLocation(x, "uConstants") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + var b = this.matrix, R = [ + b[0], + b[1], + b[2], + b[3], + b[5], + b[6], + b[7], + b[8], + b[10], + b[11], + b[12], + b[13], + b[15], + b[16], + b[17], + b[18] + ], M = [b[4], b[9], b[14], b[19]]; + w.uniformMatrix4fv(x.uColorMatrix, !1, R), w.uniform4fv(x.uConstants, M); + } + } + ), _.Image.filters.ColorMatrix.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Brightness = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Brightness.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Brightness", + /** + * Fragment source for the brightness program + */ + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform float uBrightness; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +color.rgb += uBrightness; +gl_FragColor = color; +}`, + /** + * Brightness value, from -1 to 1. + * translated to -255 to 255 for 2d + * 0.0039215686 is the part of 1 that get translated to 1 in 2d + * @param {Number} brightness + * @default + */ + brightness: 0, + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: "brightness", + /** + * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(w) { + if (this.brightness !== 0) { + var x = w.imageData, b = x.data, R, M = b.length, O = Math.round(this.brightness * 255); + for (R = 0; R < M; R += 4) + b[R] = b[R] + O, b[R + 1] = b[R + 1] + O, b[R + 2] = b[R + 2] + O; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uBrightness: w.getUniformLocation(x, "uBrightness") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform1f(x.uBrightness, this.brightness); + } + } + ), _.Image.filters.Brightness.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.Image.filters, w = _.util.createClass; + I.Convolute = w( + I.BaseFilter, + /** @lends fabric.Image.filters.Convolute.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Convolute", + /* + * Opaque value (true/false) + */ + opaque: !1, + /* + * matrix for the filter, max 9x9 + */ + matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0], + /** + * Fragment source for the brightness program + */ + fragmentSource: { + Convolute_3_1: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[9]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 0); +for (float h = 0.0; h < 3.0; h+=1.0) { +for (float w = 0.0; w < 3.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1)); +color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)]; +} +} +gl_FragColor = color; +}`, + Convolute_3_0: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[9]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 1); +for (float h = 0.0; h < 3.0; h+=1.0) { +for (float w = 0.0; w < 3.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0)); +color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)]; +} +} +float alpha = texture2D(uTexture, vTexCoord).a; +gl_FragColor = color; +gl_FragColor.a = alpha; +}`, + Convolute_5_1: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[25]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 0); +for (float h = 0.0; h < 5.0; h+=1.0) { +for (float w = 0.0; w < 5.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0)); +color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)]; +} +} +gl_FragColor = color; +}`, + Convolute_5_0: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[25]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 1); +for (float h = 0.0; h < 5.0; h+=1.0) { +for (float w = 0.0; w < 5.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0)); +color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)]; +} +} +float alpha = texture2D(uTexture, vTexCoord).a; +gl_FragColor = color; +gl_FragColor.a = alpha; +}`, + Convolute_7_1: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[49]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 0); +for (float h = 0.0; h < 7.0; h+=1.0) { +for (float w = 0.0; w < 7.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0)); +color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)]; +} +} +gl_FragColor = color; +}`, + Convolute_7_0: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[49]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 1); +for (float h = 0.0; h < 7.0; h+=1.0) { +for (float w = 0.0; w < 7.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0)); +color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)]; +} +} +float alpha = texture2D(uTexture, vTexCoord).a; +gl_FragColor = color; +gl_FragColor.a = alpha; +}`, + Convolute_9_1: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[81]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 0); +for (float h = 0.0; h < 9.0; h+=1.0) { +for (float w = 0.0; w < 9.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0)); +color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)]; +} +} +gl_FragColor = color; +}`, + Convolute_9_0: `precision highp float; +uniform sampler2D uTexture; +uniform float uMatrix[81]; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +vec4 color = vec4(0, 0, 0, 1); +for (float h = 0.0; h < 9.0; h+=1.0) { +for (float w = 0.0; w < 9.0; w+=1.0) { +vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0)); +color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)]; +} +} +float alpha = texture2D(uTexture, vTexCoord).a; +gl_FragColor = color; +gl_FragColor.a = alpha; +}` + }, + /** + * Constructor + * @memberOf fabric.Image.filters.Convolute.prototype + * @param {Object} [options] Options object + * @param {Boolean} [options.opaque=false] Opaque value (true/false) + * @param {Array} [options.matrix] Filter matrix + */ + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(x) { + var b = Math.sqrt(this.matrix.length), R = this.type + "_" + b + "_" + (this.opaque ? 1 : 0), M = this.fragmentSource[R]; + return x.programCache.hasOwnProperty(R) || (x.programCache[R] = this.createProgram(x.context, M)), x.programCache[R]; + }, + /** + * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(x) { + var b = x.imageData, R = b.data, M = this.matrix, O = Math.round(Math.sqrt(M.length)), P = Math.floor(O / 2), B = b.width, H = b.height, Y = x.ctx.createImageData(B, H), X = Y.data, ee = this.opaque ? 1 : 0, ae, J, ne, fe, de, Te, be, Ve, pe, Be, Ue, Qe, Re; + for (Ue = 0; Ue < H; Ue++) + for (Be = 0; Be < B; Be++) { + for (de = (Ue * B + Be) * 4, ae = 0, J = 0, ne = 0, fe = 0, Re = 0; Re < O; Re++) + for (Qe = 0; Qe < O; Qe++) + be = Ue + Re - P, Te = Be + Qe - P, !(be < 0 || be >= H || Te < 0 || Te >= B) && (Ve = (be * B + Te) * 4, pe = M[Re * O + Qe], ae += R[Ve] * pe, J += R[Ve + 1] * pe, ne += R[Ve + 2] * pe, ee || (fe += R[Ve + 3] * pe)); + X[de] = ae, X[de + 1] = J, X[de + 2] = ne, ee ? X[de + 3] = R[de + 3] : X[de + 3] = fe; + } + x.imageData = Y; + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(x, b) { + return { + uMatrix: x.getUniformLocation(b, "uMatrix"), + uOpaque: x.getUniformLocation(b, "uOpaque"), + uHalfSize: x.getUniformLocation(b, "uHalfSize"), + uSize: x.getUniformLocation(b, "uSize") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(x, b) { + x.uniform1fv(b.uMatrix, this.matrix); + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return E(this.callSuper("toObject"), { + opaque: this.opaque, + matrix: this.matrix + }); + } + } + ), _.Image.filters.Convolute.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Grayscale = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Grayscale.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Grayscale", + fragmentSource: { + average: `precision highp float; +uniform sampler2D uTexture; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +float average = (color.r + color.b + color.g) / 3.0; +gl_FragColor = vec4(average, average, average, color.a); +}`, + lightness: `precision highp float; +uniform sampler2D uTexture; +uniform int uMode; +varying vec2 vTexCoord; +void main() { +vec4 col = texture2D(uTexture, vTexCoord); +float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0; +gl_FragColor = vec4(average, average, average, col.a); +}`, + luminosity: `precision highp float; +uniform sampler2D uTexture; +uniform int uMode; +varying vec2 vTexCoord; +void main() { +vec4 col = texture2D(uTexture, vTexCoord); +float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b; +gl_FragColor = vec4(average, average, average, col.a); +}` + }, + /** + * Grayscale mode, between 'average', 'lightness', 'luminosity' + * @param {String} type + * @default + */ + mode: "average", + mainParameter: "mode", + /** + * Apply the Grayscale operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = x.data, R, M = b.length, O, P = this.mode; + for (R = 0; R < M; R += 4) + P === "average" ? O = (b[R] + b[R + 1] + b[R + 2]) / 3 : P === "lightness" ? O = (Math.min(b[R], b[R + 1], b[R + 2]) + Math.max(b[R], b[R + 1], b[R + 2])) / 2 : P === "luminosity" && (O = 0.21 * b[R] + 0.72 * b[R + 1] + 0.07 * b[R + 2]), b[R] = O, b[R + 1] = O, b[R + 2] = O; + }, + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(w) { + var x = this.type + "_" + this.mode; + if (!w.programCache.hasOwnProperty(x)) { + var b = this.fragmentSource[this.mode]; + w.programCache[x] = this.createProgram(w.context, b); + } + return w.programCache[x]; + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uMode: w.getUniformLocation(x, "uMode") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + var b = 1; + w.uniform1i(x.uMode, b); + }, + /** + * Grayscale filter isNeutralState implementation + * The filter is never neutral + * on the image + **/ + isNeutralState: function() { + return !1; + } + } + ), _.Image.filters.Grayscale.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Invert = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Invert.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Invert", + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform int uInvert; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +if (uInvert == 1) { +gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a); +} else { +gl_FragColor = color; +} +}`, + /** + * Filter invert. if false, does nothing + * @param {Boolean} invert + * @default + */ + invert: !0, + mainParameter: "invert", + /** + * Apply the Invert operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = x.data, R, M = b.length; + for (R = 0; R < M; R += 4) + b[R] = 255 - b[R], b[R + 1] = 255 - b[R + 1], b[R + 2] = 255 - b[R + 2]; + }, + /** + * Invert filter isNeutralState implementation + * Used only in image applyFilters to discard filters that will not have an effect + * on the image + * @param {Object} options + **/ + isNeutralState: function() { + return !this.invert; + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uInvert: w.getUniformLocation(x, "uInvert") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform1i(x.uInvert, this.invert); + } + } + ), _.Image.filters.Invert.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.Image.filters, w = _.util.createClass; + I.Noise = w( + I.BaseFilter, + /** @lends fabric.Image.filters.Noise.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Noise", + /** + * Fragment source for the noise program + */ + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform float uStepH; +uniform float uNoise; +uniform float uSeed; +varying vec2 vTexCoord; +float rand(vec2 co, float seed, float vScale) { +return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0); +} +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise; +gl_FragColor = color; +}`, + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: "noise", + /** + * Noise value, from + * @param {Number} noise + * @default + */ + noise: 0, + /** + * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(x) { + if (this.noise !== 0) { + var b = x.imageData, R = b.data, M, O = R.length, P = this.noise, B; + for (M = 0, O = R.length; M < O; M += 4) + B = (0.5 - Math.random()) * P, R[M] += B, R[M + 1] += B, R[M + 2] += B; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(x, b) { + return { + uNoise: x.getUniformLocation(b, "uNoise"), + uSeed: x.getUniformLocation(b, "uSeed") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(x, b) { + x.uniform1f(b.uNoise, this.noise / 255), x.uniform1f(b.uSeed, Math.random()); + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return E(this.callSuper("toObject"), { + noise: this.noise + }); + } + } + ), _.Image.filters.Noise.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Pixelate = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Pixelate.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Pixelate", + blocksize: 4, + mainParameter: "blocksize", + /** + * Fragment source for the Pixelate program + */ + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform float uBlocksize; +uniform float uStepW; +uniform float uStepH; +varying vec2 vTexCoord; +void main() { +float blockW = uBlocksize * uStepW; +float blockH = uBlocksize * uStepW; +int posX = int(vTexCoord.x / blockW); +int posY = int(vTexCoord.y / blockH); +float fposX = float(posX); +float fposY = float(posY); +vec2 squareCoords = vec2(fposX * blockW, fposY * blockH); +vec4 color = texture2D(uTexture, squareCoords); +gl_FragColor = color; +}`, + /** + * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = x.data, R = x.height, M = x.width, O, P, B, H, Y, X, ee, ae, J, ne, fe; + for (P = 0; P < R; P += this.blocksize) + for (B = 0; B < M; B += this.blocksize) + for (O = P * 4 * M + B * 4, H = b[O], Y = b[O + 1], X = b[O + 2], ee = b[O + 3], ne = Math.min(P + this.blocksize, R), fe = Math.min(B + this.blocksize, M), ae = P; ae < ne; ae++) + for (J = B; J < fe; J++) + O = ae * 4 * M + J * 4, b[O] = H, b[O + 1] = Y, b[O + 2] = X, b[O + 3] = ee; + }, + /** + * Indicate when the filter is not gonna apply changes to the image + **/ + isNeutralState: function() { + return this.blocksize === 1; + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uBlocksize: w.getUniformLocation(x, "uBlocksize"), + uStepW: w.getUniformLocation(x, "uStepW"), + uStepH: w.getUniformLocation(x, "uStepH") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform1f(x.uBlocksize, this.blocksize); + } + } + ), _.Image.filters.Pixelate.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.extend, I = _.Image.filters, w = _.util.createClass; + I.RemoveColor = w( + I.BaseFilter, + /** @lends fabric.Image.filters.RemoveColor.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "RemoveColor", + /** + * Color to remove, in any format understood by fabric.Color. + * @param {String} type + * @default + */ + color: "#FFFFFF", + /** + * Fragment source for the brightness program + */ + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform vec4 uLow; +uniform vec4 uHigh; +varying vec2 vTexCoord; +void main() { +gl_FragColor = texture2D(uTexture, vTexCoord); +if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) { +gl_FragColor.a = 0.0; +} +}`, + /** + * distance to actual color, as value up or down from each r,g,b + * between 0 and 1 + **/ + distance: 0.02, + /** + * For color to remove inside distance, use alpha channel for a smoother deletion + * NOT IMPLEMENTED YET + **/ + useAlpha: !1, + /** + * Constructor + * @memberOf fabric.Image.filters.RemoveWhite.prototype + * @param {Object} [options] Options object + * @param {Number} [options.color=#RRGGBB] Threshold value + * @param {Number} [options.distance=10] Distance value + */ + /** + * Applies filter to canvas element + * @param {Object} canvasEl Canvas element to apply filter to + */ + applyTo2d: function(x) { + var b = x.imageData, R = b.data, M, O = this.distance * 255, P, B, H, Y = new _.Color(this.color).getSource(), X = [ + Y[0] - O, + Y[1] - O, + Y[2] - O + ], ee = [ + Y[0] + O, + Y[1] + O, + Y[2] + O + ]; + for (M = 0; M < R.length; M += 4) + P = R[M], B = R[M + 1], H = R[M + 2], P > X[0] && B > X[1] && H > X[2] && P < ee[0] && B < ee[1] && H < ee[2] && (R[M + 3] = 0); + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(x, b) { + return { + uLow: x.getUniformLocation(b, "uLow"), + uHigh: x.getUniformLocation(b, "uHigh") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(x, b) { + var R = new _.Color(this.color).getSource(), M = parseFloat(this.distance), O = [ + 0 + R[0] / 255 - M, + 0 + R[1] / 255 - M, + 0 + R[2] / 255 - M, + 1 + ], P = [ + R[0] / 255 + M, + R[1] / 255 + M, + R[2] / 255 + M, + 1 + ]; + x.uniform4fv(b.uLow, O), x.uniform4fv(b.uHigh, P); + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return E(this.callSuper("toObject"), { + color: this.color, + distance: this.distance + }); + } + } + ), _.Image.filters.RemoveColor.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass, w = { + Brownie: [ + 0.5997, + 0.34553, + -0.27082, + 0, + 0.186, + -0.0377, + 0.86095, + 0.15059, + 0, + -0.1449, + 0.24113, + -0.07441, + 0.44972, + 0, + -0.02965, + 0, + 0, + 0, + 1, + 0 + ], + Vintage: [ + 0.62793, + 0.32021, + -0.03965, + 0, + 0.03784, + 0.02578, + 0.64411, + 0.03259, + 0, + 0.02926, + 0.0466, + -0.08512, + 0.52416, + 0, + 0.02023, + 0, + 0, + 0, + 1, + 0 + ], + Kodachrome: [ + 1.12855, + -0.39673, + -0.03992, + 0, + 0.24991, + -0.16404, + 1.08352, + -0.05498, + 0, + 0.09698, + -0.16786, + -0.56034, + 1.60148, + 0, + 0.13972, + 0, + 0, + 0, + 1, + 0 + ], + Technicolor: [ + 1.91252, + -0.85453, + -0.09155, + 0, + 0.04624, + -0.30878, + 1.76589, + -0.10601, + 0, + -0.27589, + -0.2311, + -0.75018, + 1.84759, + 0, + 0.12137, + 0, + 0, + 0, + 1, + 0 + ], + Polaroid: [ + 1.438, + -0.062, + -0.062, + 0, + 0, + -0.122, + 1.378, + -0.122, + 0, + 0, + -0.016, + -0.016, + 1.483, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ], + Sepia: [ + 0.393, + 0.769, + 0.189, + 0, + 0, + 0.349, + 0.686, + 0.168, + 0, + 0, + 0.272, + 0.534, + 0.131, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ], + BlackWhite: [ + 1.5, + 1.5, + 1.5, + 0, + -1, + 1.5, + 1.5, + 1.5, + 0, + -1, + 1.5, + 1.5, + 1.5, + 0, + -1, + 0, + 0, + 0, + 1, + 0 + ] + }; + for (var x in w) + E[x] = I( + E.ColorMatrix, + /** @lends fabric.Image.filters.Sepia.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: x, + /** + * Colormatrix for the effect + * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning + * outside the -1, 1 range. + * @param {Array} matrix array of 20 numbers. + * @default + */ + matrix: w[x], + /** + * Lock the matrix export for this kind of static, parameter less filters. + */ + mainParameter: !1, + /** + * Lock the colormatrix on the color part, skipping alpha + */ + colorsOnly: !0 + } + ), _.Image.filters[x].fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric, E = _.Image.filters, I = _.util.createClass; + E.BlendColor = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Blend.prototype */ + { + type: "BlendColor", + /** + * Color to make the blend operation with. default to a reddish color since black or white + * gives always strong result. + **/ + color: "#F95C63", + /** + * Blend mode for the filter: one of multiply, add, diff, screen, subtract, + * darken, lighten, overlay, exclusion, tint. + **/ + mode: "multiply", + /** + * alpha value. represent the strength of the blend color operation. + **/ + alpha: 1, + /** + * Fragment source for the Multiply program + */ + fragmentSource: { + multiply: `gl_FragColor.rgb *= uColor.rgb; +`, + screen: `gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb); +`, + add: `gl_FragColor.rgb += uColor.rgb; +`, + diff: `gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb); +`, + subtract: `gl_FragColor.rgb -= uColor.rgb; +`, + lighten: `gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb); +`, + darken: `gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb); +`, + exclusion: `gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb); +`, + overlay: `if (uColor.r < 0.5) { +gl_FragColor.r *= 2.0 * uColor.r; +} else { +gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r); +} +if (uColor.g < 0.5) { +gl_FragColor.g *= 2.0 * uColor.g; +} else { +gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g); +} +if (uColor.b < 0.5) { +gl_FragColor.b *= 2.0 * uColor.b; +} else { +gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b); +} +`, + tint: `gl_FragColor.rgb *= (1.0 - uColor.a); +gl_FragColor.rgb += uColor.rgb; +` + }, + /** + * build the fragment source for the filters, joining the common part with + * the specific one. + * @param {String} mode the mode of the filter, a key of this.fragmentSource + * @return {String} the source to be compiled + * @private + */ + buildSource: function(w) { + return `precision highp float; +uniform sampler2D uTexture; +uniform vec4 uColor; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +gl_FragColor = color; +if (color.a > 0.0) { +` + this.fragmentSource[w] + `} +}`; + }, + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(w) { + var x = this.type + "_" + this.mode, b; + return w.programCache.hasOwnProperty(x) || (b = this.buildSource(this.mode), w.programCache[x] = this.createProgram(w.context, b)), w.programCache[x]; + }, + /** + * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = x.data, R = b.length, M, O, P, B, H, Y, X, ee = 1 - this.alpha; + X = new _.Color(this.color).getSource(), M = X[0] * this.alpha, O = X[1] * this.alpha, P = X[2] * this.alpha; + for (var ae = 0; ae < R; ae += 4) + switch (B = b[ae], H = b[ae + 1], Y = b[ae + 2], this.mode) { + case "multiply": + b[ae] = B * M / 255, b[ae + 1] = H * O / 255, b[ae + 2] = Y * P / 255; + break; + case "screen": + b[ae] = 255 - (255 - B) * (255 - M) / 255, b[ae + 1] = 255 - (255 - H) * (255 - O) / 255, b[ae + 2] = 255 - (255 - Y) * (255 - P) / 255; + break; + case "add": + b[ae] = B + M, b[ae + 1] = H + O, b[ae + 2] = Y + P; + break; + case "diff": + case "difference": + b[ae] = Math.abs(B - M), b[ae + 1] = Math.abs(H - O), b[ae + 2] = Math.abs(Y - P); + break; + case "subtract": + b[ae] = B - M, b[ae + 1] = H - O, b[ae + 2] = Y - P; + break; + case "darken": + b[ae] = Math.min(B, M), b[ae + 1] = Math.min(H, O), b[ae + 2] = Math.min(Y, P); + break; + case "lighten": + b[ae] = Math.max(B, M), b[ae + 1] = Math.max(H, O), b[ae + 2] = Math.max(Y, P); + break; + case "overlay": + b[ae] = M < 128 ? 2 * B * M / 255 : 255 - 2 * (255 - B) * (255 - M) / 255, b[ae + 1] = O < 128 ? 2 * H * O / 255 : 255 - 2 * (255 - H) * (255 - O) / 255, b[ae + 2] = P < 128 ? 2 * Y * P / 255 : 255 - 2 * (255 - Y) * (255 - P) / 255; + break; + case "exclusion": + b[ae] = M + B - 2 * M * B / 255, b[ae + 1] = O + H - 2 * O * H / 255, b[ae + 2] = P + Y - 2 * P * Y / 255; + break; + case "tint": + b[ae] = M + B * ee, b[ae + 1] = O + H * ee, b[ae + 2] = P + Y * ee; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uColor: w.getUniformLocation(x, "uColor") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + var b = new _.Color(this.color).getSource(); + b[0] = this.alpha * b[0] / 255, b[1] = this.alpha * b[1] / 255, b[2] = this.alpha * b[2] / 255, b[3] = this.alpha, w.uniform4fv(x.uColor, b); + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return { + type: this.type, + color: this.color, + mode: this.mode, + alpha: this.alpha + }; + } + } + ), _.Image.filters.BlendColor.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric, E = _.Image.filters, I = _.util.createClass; + E.BlendImage = I( + E.BaseFilter, + /** @lends fabric.Image.filters.BlendImage.prototype */ + { + type: "BlendImage", + /** + * Color to make the blend operation with. default to a reddish color since black or white + * gives always strong result. + **/ + image: null, + /** + * Blend mode for the filter: one of multiply, add, diff, screen, subtract, + * darken, lighten, overlay, exclusion, tint. + **/ + mode: "multiply", + /** + * alpha value. represent the strength of the blend image operation. + * not implemented. + **/ + alpha: 1, + vertexSource: `attribute vec2 aPosition; +varying vec2 vTexCoord; +varying vec2 vTexCoord2; +uniform mat3 uTransformMatrix; +void main() { +vTexCoord = aPosition; +vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy; +gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0); +}`, + /** + * Fragment source for the Multiply program + */ + fragmentSource: { + multiply: `precision highp float; +uniform sampler2D uTexture; +uniform sampler2D uImage; +uniform vec4 uColor; +varying vec2 vTexCoord; +varying vec2 vTexCoord2; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +vec4 color2 = texture2D(uImage, vTexCoord2); +color.rgba *= color2.rgba; +gl_FragColor = color; +}`, + mask: `precision highp float; +uniform sampler2D uTexture; +uniform sampler2D uImage; +uniform vec4 uColor; +varying vec2 vTexCoord; +varying vec2 vTexCoord2; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +vec4 color2 = texture2D(uImage, vTexCoord2); +color.a = color2.a; +gl_FragColor = color; +}` + }, + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(w) { + var x = this.type + "_" + this.mode, b = this.fragmentSource[this.mode]; + return w.programCache.hasOwnProperty(x) || (w.programCache[x] = this.createProgram(w.context, b)), w.programCache[x]; + }, + applyToWebGL: function(w) { + var x = w.context, b = this.createTexture(w.filterBackend, this.image); + this.bindAdditionalTexture(x, b, x.TEXTURE1), this.callSuper("applyToWebGL", w), this.unbindAdditionalTexture(x, x.TEXTURE1); + }, + createTexture: function(w, x) { + return w.getCachedTexture(x.cacheKey, x._element); + }, + /** + * Calculate a transformMatrix to adapt the image to blend over + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + calculateMatrix: function() { + var w = this.image, x = w._element.width, b = w._element.height; + return [ + 1 / w.scaleX, + 0, + 0, + 0, + 1 / w.scaleY, + 0, + -w.left / x, + -w.top / b, + 1 + ]; + }, + /** + * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = w.filterBackend.resources, R = x.data, M = R.length, O = x.width, P = x.height, B, H, Y, X, ee, ae, J, ne, fe, de, Te = this.image, be; + b.blendImage || (b.blendImage = _.util.createCanvasElement()), fe = b.blendImage, de = fe.getContext("2d"), fe.width !== O || fe.height !== P ? (fe.width = O, fe.height = P) : de.clearRect(0, 0, O, P), de.setTransform(Te.scaleX, 0, 0, Te.scaleY, Te.left, Te.top), de.drawImage(Te._element, 0, 0, O, P), be = de.getImageData(0, 0, O, P).data; + for (var Ve = 0; Ve < M; Ve += 4) + switch (ee = R[Ve], ae = R[Ve + 1], J = R[Ve + 2], ne = R[Ve + 3], B = be[Ve], H = be[Ve + 1], Y = be[Ve + 2], X = be[Ve + 3], this.mode) { + case "multiply": + R[Ve] = ee * B / 255, R[Ve + 1] = ae * H / 255, R[Ve + 2] = J * Y / 255, R[Ve + 3] = ne * X / 255; + break; + case "mask": + R[Ve + 3] = X; + break; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uTransformMatrix: w.getUniformLocation(x, "uTransformMatrix"), + uImage: w.getUniformLocation(x, "uImage") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + var b = this.calculateMatrix(); + w.uniform1i(x.uImage, 1), w.uniformMatrix3fv(x.uTransformMatrix, !1, b); + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return { + type: this.type, + image: this.image && this.image.toObject(), + mode: this.mode, + alpha: this.alpha + }; + } + } + ), _.Image.filters.BlendImage.fromObject = function(w, x) { + _.Image.fromObject(w.image, function(b) { + var R = _.util.object.clone(w); + R.image = b, x(new _.Image.filters.BlendImage(R)); + }); + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = Math.pow, I = Math.floor, w = Math.sqrt, x = Math.abs, b = Math.round, R = Math.sin, M = Math.ceil, O = _.Image.filters, P = _.util.createClass; + O.Resize = P( + O.BaseFilter, + /** @lends fabric.Image.filters.Resize.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Resize", + /** + * Resize type + * for webgl resizeType is just lanczos, for canvas2d can be: + * bilinear, hermite, sliceHack, lanczos. + * @param {String} resizeType + * @default + */ + resizeType: "hermite", + /** + * Scale factor for resizing, x axis + * @param {Number} scaleX + * @default + */ + scaleX: 1, + /** + * Scale factor for resizing, y axis + * @param {Number} scaleY + * @default + */ + scaleY: 1, + /** + * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos + * @param {Number} lanczosLobes + * @default + */ + lanczosLobes: 3, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(B, H) { + return { + uDelta: B.getUniformLocation(H, "uDelta"), + uTaps: B.getUniformLocation(H, "uTaps") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(B, H) { + B.uniform2fv(H.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]), B.uniform1fv(H.uTaps, this.taps); + }, + /** + * Retrieves the cached shader. + * @param {Object} options + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + retrieveShader: function(B) { + var H = this.getFilterWindow(), Y = this.type + "_" + H; + if (!B.programCache.hasOwnProperty(Y)) { + var X = this.generateShader(H); + B.programCache[Y] = this.createProgram(B.context, X); + } + return B.programCache[Y]; + }, + getFilterWindow: function() { + var B = this.tempScale; + return Math.ceil(this.lanczosLobes / B); + }, + getTaps: function() { + for (var B = this.lanczosCreate(this.lanczosLobes), H = this.tempScale, Y = this.getFilterWindow(), X = new Array(Y), ee = 1; ee <= Y; ee++) + X[ee - 1] = B(ee * H); + return X; + }, + /** + * Generate vertex and shader sources from the necessary steps numbers + * @param {Number} filterWindow + */ + generateShader: function(X) { + for (var H = new Array(X), Y = this.fragmentSourceTOP, X, ee = 1; ee <= X; ee++) + H[ee - 1] = ee + ".0 * uDelta"; + return Y += "uniform float uTaps[" + X + `]; +`, Y += `void main() { +`, Y += ` vec4 color = texture2D(uTexture, vTexCoord); +`, Y += ` float sum = 1.0; +`, H.forEach(function(ae, J) { + Y += " color += texture2D(uTexture, vTexCoord + " + ae + ") * uTaps[" + J + `]; +`, Y += " color += texture2D(uTexture, vTexCoord - " + ae + ") * uTaps[" + J + `]; +`, Y += " sum += 2.0 * uTaps[" + J + `]; +`; + }), Y += ` gl_FragColor = color / sum; +`, Y += "}", Y; + }, + fragmentSourceTOP: `precision highp float; +uniform sampler2D uTexture; +uniform vec2 uDelta; +varying vec2 vTexCoord; +`, + /** + * Apply the resize filter to the image + * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyTo: function(B) { + B.webgl ? (B.passes++, this.width = B.sourceWidth, this.horizontal = !0, this.dW = Math.round(this.width * this.scaleX), this.dH = B.sourceHeight, this.tempScale = this.dW / this.width, this.taps = this.getTaps(), B.destinationWidth = this.dW, this._setupFrameBuffer(B), this.applyToWebGL(B), this._swapTextures(B), B.sourceWidth = B.destinationWidth, this.height = B.sourceHeight, this.horizontal = !1, this.dH = Math.round(this.height * this.scaleY), this.tempScale = this.dH / this.height, this.taps = this.getTaps(), B.destinationHeight = this.dH, this._setupFrameBuffer(B), this.applyToWebGL(B), this._swapTextures(B), B.sourceHeight = B.destinationHeight) : this.applyTo2d(B); + }, + isNeutralState: function() { + return this.scaleX === 1 && this.scaleY === 1; + }, + lanczosCreate: function(B) { + return function(H) { + if (H >= B || H <= -B) + return 0; + if (H < 11920929e-14 && H > -11920929e-14) + return 1; + H *= Math.PI; + var Y = H / B; + return R(H) / H * R(Y) / Y; + }; + }, + /** + * Applies filter to canvas element + * @memberOf fabric.Image.filters.Resize.prototype + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} scaleX + * @param {Number} scaleY + */ + applyTo2d: function(B) { + var H = B.imageData, Y = this.scaleX, X = this.scaleY; + this.rcpScaleX = 1 / Y, this.rcpScaleY = 1 / X; + var ee = H.width, ae = H.height, J = b(ee * Y), ne = b(ae * X), fe; + this.resizeType === "sliceHack" ? fe = this.sliceByTwo(B, ee, ae, J, ne) : this.resizeType === "hermite" ? fe = this.hermiteFastResize(B, ee, ae, J, ne) : this.resizeType === "bilinear" ? fe = this.bilinearFiltering(B, ee, ae, J, ne) : this.resizeType === "lanczos" && (fe = this.lanczosResize(B, ee, ae, J, ne)), B.imageData = fe; + }, + /** + * Filter sliceByTwo + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + sliceByTwo: function(B, H, Y, X, ee) { + var ae = B.imageData, J = 0.5, ne = !1, fe = !1, de = H * J, Te = Y * J, be = _.filterBackend.resources, Ve, pe, Be = 0, Ue = 0, Qe = H, Re = 0; + for (be.sliceByTwo || (be.sliceByTwo = document.createElement("canvas")), Ve = be.sliceByTwo, (Ve.width < H * 1.5 || Ve.height < Y) && (Ve.width = H * 1.5, Ve.height = Y), pe = Ve.getContext("2d"), pe.clearRect(0, 0, H * 1.5, Y), pe.putImageData(ae, 0, 0), X = I(X), ee = I(ee); !ne || !fe; ) + H = de, Y = Te, X < I(de * J) ? de = I(de * J) : (de = X, ne = !0), ee < I(Te * J) ? Te = I(Te * J) : (Te = ee, fe = !0), pe.drawImage(Ve, Be, Ue, H, Y, Qe, Re, de, Te), Be = Qe, Ue = Re, Re += Te; + return pe.getImageData(Be, Ue, X, ee); + }, + /** + * Filter lanczosResize + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + lanczosResize: function(B, H, Y, X, ee) { + function ae(Me) { + var we, He, Ie, Ae, Fe, $e, lt, it, nt, ut, rt; + for (Re.x = (Me + 0.5) * Te, Ne.x = I(Re.x), we = 0; we < ee; we++) { + for (Re.y = (we + 0.5) * be, Ne.y = I(Re.y), Fe = 0, $e = 0, lt = 0, it = 0, nt = 0, He = Ne.x - Be; He <= Ne.x + Be; He++) + if (!(He < 0 || He >= H)) { + ut = I(1e3 * x(He - Re.x)), Qe[ut] || (Qe[ut] = {}); + for (var Ke = Ne.y - Ue; Ke <= Ne.y + Ue; Ke++) + Ke < 0 || Ke >= Y || (rt = I(1e3 * x(Ke - Re.y)), Qe[ut][rt] || (Qe[ut][rt] = de(w(E(ut * Ve, 2) + E(rt * pe, 2)) / 1e3)), Ie = Qe[ut][rt], Ie > 0 && (Ae = (Ke * H + He) * 4, Fe += Ie, $e += Ie * J[Ae], lt += Ie * J[Ae + 1], it += Ie * J[Ae + 2], nt += Ie * J[Ae + 3])); + } + Ae = (we * X + Me) * 4, fe[Ae] = $e / Fe, fe[Ae + 1] = lt / Fe, fe[Ae + 2] = it / Fe, fe[Ae + 3] = nt / Fe; + } + return ++Me < X ? ae(Me) : ne; + } + var J = B.imageData.data, ne = B.ctx.createImageData(X, ee), fe = ne.data, de = this.lanczosCreate(this.lanczosLobes), Te = this.rcpScaleX, be = this.rcpScaleY, Ve = 2 / this.rcpScaleX, pe = 2 / this.rcpScaleY, Be = M(Te * this.lanczosLobes / 2), Ue = M(be * this.lanczosLobes / 2), Qe = {}, Re = {}, Ne = {}; + return ae(0); + }, + /** + * bilinearFiltering + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + bilinearFiltering: function(B, H, Y, X, ee) { + var ae, J, ne, fe, de, Te, be, Ve, pe, Be, Ue, Qe, Re = 0, Ne, Me = this.rcpScaleX, we = this.rcpScaleY, He = 4 * (H - 1), Ie = B.imageData, Ae = Ie.data, Fe = B.ctx.createImageData(X, ee), $e = Fe.data; + for (be = 0; be < ee; be++) + for (Ve = 0; Ve < X; Ve++) + for (de = I(Me * Ve), Te = I(we * be), pe = Me * Ve - de, Be = we * be - Te, Ne = 4 * (Te * H + de), Ue = 0; Ue < 4; Ue++) + ae = Ae[Ne + Ue], J = Ae[Ne + 4 + Ue], ne = Ae[Ne + He + Ue], fe = Ae[Ne + He + 4 + Ue], Qe = ae * (1 - pe) * (1 - Be) + J * pe * (1 - Be) + ne * Be * (1 - pe) + fe * pe * Be, $e[Re++] = Qe; + return Fe; + }, + /** + * hermiteFastResize + * @param {Object} canvasEl Canvas element to apply filter to + * @param {Number} oW Original Width + * @param {Number} oH Original Height + * @param {Number} dW Destination Width + * @param {Number} dH Destination Height + * @returns {ImageData} + */ + hermiteFastResize: function(B, H, Y, X, ee) { + for (var ae = this.rcpScaleX, J = this.rcpScaleY, ne = M(ae / 2), fe = M(J / 2), de = B.imageData, Te = de.data, be = B.ctx.createImageData(X, ee), Ve = be.data, pe = 0; pe < ee; pe++) + for (var Be = 0; Be < X; Be++) { + for (var Ue = (Be + pe * X) * 4, Qe = 0, Re = 0, Ne = 0, Me = 0, we = 0, He = 0, Ie = 0, Ae = (pe + 0.5) * J, Fe = I(pe * J); Fe < (pe + 1) * J; Fe++) + for (var $e = x(Ae - (Fe + 0.5)) / fe, lt = (Be + 0.5) * ae, it = $e * $e, nt = I(Be * ae); nt < (Be + 1) * ae; nt++) { + var ut = x(lt - (nt + 0.5)) / ne, rt = w(it + ut * ut); + rt > 1 && rt < -1 || (Qe = 2 * rt * rt * rt - 3 * rt * rt + 1, Qe > 0 && (ut = 4 * (nt + Fe * H), Ie += Qe * Te[ut + 3], Ne += Qe, Te[ut + 3] < 255 && (Qe = Qe * Te[ut + 3] / 250), Me += Qe * Te[ut], we += Qe * Te[ut + 1], He += Qe * Te[ut + 2], Re += Qe)); + } + Ve[Ue] = Me / Re, Ve[Ue + 1] = we / Re, Ve[Ue + 2] = He / Re, Ve[Ue + 3] = Ie / Ne; + } + return be; + }, + /** + * Returns object representation of an instance + * @return {Object} Object representation of an instance + */ + toObject: function() { + return { + type: this.type, + scaleX: this.scaleX, + scaleY: this.scaleY, + resizeType: this.resizeType, + lanczosLobes: this.lanczosLobes + }; + } + } + ), _.Image.filters.Resize.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Contrast = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Contrast.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Contrast", + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform float uContrast; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast)); +color.rgb = contrastF * (color.rgb - 0.5) + 0.5; +gl_FragColor = color; +}`, + /** + * contrast value, range from -1 to 1. + * @param {Number} contrast + * @default 0 + */ + contrast: 0, + mainParameter: "contrast", + /** + * Constructor + * @memberOf fabric.Image.filters.Contrast.prototype + * @param {Object} [options] Options object + * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1) + */ + /** + * Apply the Contrast operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(w) { + if (this.contrast !== 0) { + var x = w.imageData, b, M, R = x.data, M = R.length, O = Math.floor(this.contrast * 255), P = 259 * (O + 255) / (255 * (259 - O)); + for (b = 0; b < M; b += 4) + R[b] = P * (R[b] - 128) + 128, R[b + 1] = P * (R[b + 1] - 128) + 128, R[b + 2] = P * (R[b + 2] - 128) + 128; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uContrast: w.getUniformLocation(x, "uContrast") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform1f(x.uContrast, this.contrast); + } + } + ), _.Image.filters.Contrast.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Saturation = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Saturation.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Saturation", + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform float uSaturation; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +float rgMax = max(color.r, color.g); +float rgbMax = max(rgMax, color.b); +color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00; +color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00; +color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00; +gl_FragColor = color; +}`, + /** + * Saturation value, from -1 to 1. + * Increases/decreases the color saturation. + * A value of 0 has no effect. + * + * @param {Number} saturation + * @default + */ + saturation: 0, + mainParameter: "saturation", + /** + * Constructor + * @memberOf fabric.Image.filters.Saturate.prototype + * @param {Object} [options] Options object + * @param {Number} [options.saturate=0] Value to saturate the image (-1...1) + */ + /** + * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(w) { + if (this.saturation !== 0) { + var x = w.imageData, b = x.data, R = b.length, M = -this.saturation, O, P; + for (O = 0; O < R; O += 4) + P = Math.max(b[O], b[O + 1], b[O + 2]), b[O] += P !== b[O] ? (P - b[O]) * M : 0, b[O + 1] += P !== b[O + 1] ? (P - b[O + 1]) * M : 0, b[O + 2] += P !== b[O + 2] ? (P - b[O + 2]) * M : 0; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uSaturation: w.getUniformLocation(x, "uSaturation") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform1f(x.uSaturation, -this.saturation); + } + } + ), _.Image.filters.Saturation.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Vibrance = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Vibrance.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Vibrance", + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform float uVibrance; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +float max = max(color.r, max(color.g, color.b)); +float avg = (color.r + color.g + color.b) / 3.0; +float amt = (abs(max - avg) * 2.0) * uVibrance; +color.r += max != color.r ? (max - color.r) * amt : 0.00; +color.g += max != color.g ? (max - color.g) * amt : 0.00; +color.b += max != color.b ? (max - color.b) * amt : 0.00; +gl_FragColor = color; +}`, + /** + * Vibrance value, from -1 to 1. + * Increases/decreases the saturation of more muted colors with less effect on saturated colors. + * A value of 0 has no effect. + * + * @param {Number} vibrance + * @default + */ + vibrance: 0, + mainParameter: "vibrance", + /** + * Constructor + * @memberOf fabric.Image.filters.Vibrance.prototype + * @param {Object} [options] Options object + * @param {Number} [options.vibrance=0] Vibrance value for the image (between -1 and 1) + */ + /** + * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered. + */ + applyTo2d: function(w) { + if (this.vibrance !== 0) { + var x = w.imageData, b = x.data, R = b.length, M = -this.vibrance, O, P, B, H; + for (O = 0; O < R; O += 4) + P = Math.max(b[O], b[O + 1], b[O + 2]), B = (b[O] + b[O + 1] + b[O + 2]) / 3, H = Math.abs(P - B) * 2 / 255 * M, b[O] += P !== b[O] ? (P - b[O]) * H : 0, b[O + 1] += P !== b[O + 1] ? (P - b[O + 1]) * H : 0, b[O + 2] += P !== b[O + 2] ? (P - b[O + 2]) * H : 0; + } + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uVibrance: w.getUniformLocation(x, "uVibrance") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform1f(x.uVibrance, -this.vibrance); + } + } + ), _.Image.filters.Vibrance.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Blur = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Blur.prototype */ + { + type: "Blur", + /* + 'gl_FragColor = vec4(0.0);', + 'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;', + 'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;', + 'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;', + 'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;', + 'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;', + 'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;', + 'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;', + 'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;', + 'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;', + 'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;', + 'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;', + 'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;', + 'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;', + 'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;', + 'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;', + */ + /* eslint-disable max-len */ + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform vec2 uDelta; +varying vec2 vTexCoord; +const float nSamples = 15.0; +vec3 v3offset = vec3(12.9898, 78.233, 151.7182); +float random(vec3 scale) { +return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453); +} +void main() { +vec4 color = vec4(0.0); +float total = 0.0; +float offset = random(v3offset); +for (float t = -nSamples; t <= nSamples; t++) { +float percent = (t + offset - 0.5) / nSamples; +float weight = 1.0 - abs(percent); +color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight; +total += weight; +} +gl_FragColor = color / total; +}`, + /* eslint-enable max-len */ + /** + * blur value, in percentage of image dimensions. + * specific to keep the image blur constant at different resolutions + * range between 0 and 1. + */ + blur: 0, + mainParameter: "blur", + applyTo: function(w) { + w.webgl ? (this.aspectRatio = w.sourceWidth / w.sourceHeight, w.passes++, this._setupFrameBuffer(w), this.horizontal = !0, this.applyToWebGL(w), this._swapTextures(w), this._setupFrameBuffer(w), this.horizontal = !1, this.applyToWebGL(w), this._swapTextures(w)) : this.applyTo2d(w); + }, + applyTo2d: function(w) { + w.imageData = this.simpleBlur(w); + }, + simpleBlur: function(w) { + var x = w.filterBackend.resources, b, R, M = w.imageData.width, O = w.imageData.height; + x.blurLayer1 || (x.blurLayer1 = _.util.createCanvasElement(), x.blurLayer2 = _.util.createCanvasElement()), b = x.blurLayer1, R = x.blurLayer2, (b.width !== M || b.height !== O) && (R.width = b.width = M, R.height = b.height = O); + var P = b.getContext("2d"), B = R.getContext("2d"), H = 15, Y, X, ee, ae, J = this.blur * 0.06 * 0.5; + for (P.putImageData(w.imageData, 0, 0), B.clearRect(0, 0, M, O), ae = -H; ae <= H; ae++) + Y = (Math.random() - 0.5) / 4, X = ae / H, ee = J * X * M + Y, B.globalAlpha = 1 - Math.abs(X), B.drawImage(b, ee, Y), P.drawImage(R, 0, 0), B.globalAlpha = 1, B.clearRect(0, 0, R.width, R.height); + for (ae = -H; ae <= H; ae++) + Y = (Math.random() - 0.5) / 4, X = ae / H, ee = J * X * O + Y, B.globalAlpha = 1 - Math.abs(X), B.drawImage(b, Y, ee), P.drawImage(R, 0, 0), B.globalAlpha = 1, B.clearRect(0, 0, R.width, R.height); + w.ctx.drawImage(b, 0, 0); + var ne = w.ctx.getImageData(0, 0, b.width, b.height); + return P.globalAlpha = 1, P.clearRect(0, 0, b.width, b.height), ne; + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + delta: w.getUniformLocation(x, "uDelta") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + var b = this.chooseRightDelta(); + w.uniform2fv(x.delta, b); + }, + /** + * choose right value of image percentage to blur with + * @returns {Array} a numeric array with delta values + */ + chooseRightDelta: function() { + var w = 1, x = [0, 0], b; + return this.horizontal ? this.aspectRatio > 1 && (w = 1 / this.aspectRatio) : this.aspectRatio < 1 && (w = this.aspectRatio), b = w * this.blur * 0.12, this.horizontal ? x[0] = b : x[1] = b, x; + } + } + ), E.Blur.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Gamma = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Gamma.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Gamma", + fragmentSource: `precision highp float; +uniform sampler2D uTexture; +uniform vec3 uGamma; +varying vec2 vTexCoord; +void main() { +vec4 color = texture2D(uTexture, vTexCoord); +vec3 correction = (1.0 / uGamma); +color.r = pow(color.r, correction.r); +color.g = pow(color.g, correction.g); +color.b = pow(color.b, correction.b); +gl_FragColor = color; +gl_FragColor.rgb *= color.a; +}`, + /** + * Gamma array value, from 0.01 to 2.2. + * @param {Array} gamma + * @default + */ + gamma: [1, 1, 1], + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: "gamma", + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(w) { + this.gamma = [1, 1, 1], E.BaseFilter.prototype.initialize.call(this, w); + }, + /** + * Apply the Gamma operation to a Uint8Array representing the pixels of an image. + * + * @param {Object} options + * @param {ImageData} options.imageData The Uint8Array to be filtered. + */ + applyTo2d: function(w) { + var x = w.imageData, b = x.data, R = this.gamma, M = b.length, O = 1 / R[0], P = 1 / R[1], B = 1 / R[2], H; + for (this.rVals || (this.rVals = new Uint8Array(256), this.gVals = new Uint8Array(256), this.bVals = new Uint8Array(256)), H = 0, M = 256; H < M; H++) + this.rVals[H] = Math.pow(H / 255, O) * 255, this.gVals[H] = Math.pow(H / 255, P) * 255, this.bVals[H] = Math.pow(H / 255, B) * 255; + for (H = 0, M = b.length; H < M; H += 4) + b[H] = this.rVals[b[H]], b[H + 1] = this.gVals[b[H + 1]], b[H + 2] = this.bVals[b[H + 2]]; + }, + /** + * Return WebGL uniform locations for this filter's shader. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {WebGLShaderProgram} program This filter's compiled shader program. + */ + getUniformLocations: function(w, x) { + return { + uGamma: w.getUniformLocation(x, "uGamma") + }; + }, + /** + * Send data from this filter to its shader program's uniforms. + * + * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader. + * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects + */ + sendUniformData: function(w, x) { + w.uniform3fv(x.uGamma, this.gamma); + } + } + ), _.Image.filters.Gamma.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.Composed = I( + E.BaseFilter, + /** @lends fabric.Image.filters.Composed.prototype */ + { + type: "Composed", + /** + * A non sparse array of filters to apply + */ + subFilters: [], + /** + * Constructor + * @param {Object} [options] Options object + */ + initialize: function(w) { + this.callSuper("initialize", w), this.subFilters = this.subFilters.slice(0); + }, + /** + * Apply this container's filters to the input image provided. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be applied. + */ + applyTo: function(w) { + w.passes += this.subFilters.length - 1, this.subFilters.forEach(function(x) { + x.applyTo(w); + }); + }, + /** + * Serialize this filter into JSON. + * + * @returns {Object} A JSON representation of this filter. + */ + toObject: function() { + return _.util.object.extend(this.callSuper("toObject"), { + subFilters: this.subFilters.map(function(w) { + return w.toObject(); + }) + }); + }, + isNeutralState: function() { + return !this.subFilters.some(function(w) { + return !w.isNeutralState(); + }); + } + } + ), _.Image.filters.Composed.fromObject = function(w, x) { + var b = w.subFilters || [], R = b.map(function(O) { + return new _.Image.filters[O.type](O); + }), M = new _.Image.filters.Composed({ subFilters: R }); + return x && x(M), M; + }; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.Image.filters, I = _.util.createClass; + E.HueRotation = I( + E.ColorMatrix, + /** @lends fabric.Image.filters.HueRotation.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "HueRotation", + /** + * HueRotation value, from -1 to 1. + * the unit is radians + * @param {Number} myParameter + * @default + */ + rotation: 0, + /** + * Describe the property that is the filter parameter + * @param {String} m + * @default + */ + mainParameter: "rotation", + calculateMatrix: function() { + var w = this.rotation * Math.PI, x = _.util.cos(w), b = _.util.sin(w), R = 1 / 3, M = Math.sqrt(R) * b, O = 1 - x; + this.matrix = [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ], this.matrix[0] = x + O / 3, this.matrix[1] = R * O - M, this.matrix[2] = R * O + M, this.matrix[5] = R * O + M, this.matrix[6] = x + R * O, this.matrix[7] = R * O - M, this.matrix[10] = R * O - M, this.matrix[11] = R * O + M, this.matrix[12] = x + R * O; + }, + /** + * HueRotation isNeutralState implementation + * Used only in image applyFilters to discard filters that will not have an effect + * on the image + * @param {Object} options + **/ + isNeutralState: function(w) { + return this.calculateMatrix(), E.BaseFilter.prototype.isNeutralState.call(this, w); + }, + /** + * Apply this filter to the input image data provided. + * + * Determines whether to use WebGL or Canvas2D based on the options.webgl flag. + * + * @param {Object} options + * @param {Number} options.passes The number of filters remaining to be executed + * @param {Boolean} options.webgl Whether to use webgl to render the filter. + * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered. + * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn. + * @param {WebGLRenderingContext} options.context The GL context used for rendering. + * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type. + */ + applyTo: function(w) { + this.calculateMatrix(), E.BaseFilter.prototype.applyTo.call(this, w); + } + } + ), _.Image.filters.HueRotation.fromObject = _.Image.filters.BaseFilter.fromObject; + }(u), function(S) { + var _ = S.fabric || (S.fabric = {}), E = _.util.object.clone; + if (_.Text) { + _.warn("fabric.Text is already defined"); + return; + } + var I = "fontFamily fontWeight fontSize text underline overline linethrough textAlign fontStyle lineHeight textBackgroundColor charSpacing styles direction path pathStartOffset pathSide".split(" "); + _.Text = _.util.createClass( + _.Object, + /** @lends fabric.Text.prototype */ + { + /** + * Properties which when set cause object to change dimensions + * @type Array + * @private + */ + _dimensionAffectingProps: [ + "fontSize", + "fontWeight", + "fontFamily", + "fontStyle", + "lineHeight", + "text", + "charSpacing", + "textAlign", + "styles", + "path", + "pathStartOffset", + "pathSide" + ], + /** + * @private + */ + _reNewline: /\r?\n/, + /** + * Use this regular expression to filter for whitespaces that is not a new line. + * Mostly used when text is 'justify' aligned. + * @private + */ + _reSpacesAndTabs: /[ \t\r]/g, + /** + * Use this regular expression to filter for whitespace that is not a new line. + * Mostly used when text is 'justify' aligned. + * @private + */ + _reSpaceAndTab: /[ \t\r]/, + /** + * Use this regular expression to filter consecutive groups of non spaces. + * Mostly used when text is 'justify' aligned. + * @private + */ + _reWords: /\S+/g, + /** + * Type of an object + * @type String + * @default + */ + type: "text", + /** + * Font size (in pixels) + * @type Number + * @default + */ + fontSize: 40, + /** + * Font weight (e.g. bold, normal, 400, 600, 800) + * @type {(Number|String)} + * @default + */ + fontWeight: "normal", + /** + * Font family + * @type String + * @default + */ + fontFamily: "Times New Roman", + /** + * Text decoration underline. + * @type Boolean + * @default + */ + underline: !1, + /** + * Text decoration overline. + * @type Boolean + * @default + */ + overline: !1, + /** + * Text decoration linethrough. + * @type Boolean + * @default + */ + linethrough: !1, + /** + * Text alignment. Possible values: "left", "center", "right", "justify", + * "justify-left", "justify-center" or "justify-right". + * @type String + * @default + */ + textAlign: "left", + /** + * Font style . Possible values: "", "normal", "italic" or "oblique". + * @type String + * @default + */ + fontStyle: "normal", + /** + * Line height + * @type Number + * @default + */ + lineHeight: 1.16, + /** + * Superscript schema object (minimum overlap) + * @type {Object} + * @default + */ + superscript: { + size: 0.6, + // fontSize factor + baseline: -0.35 + // baseline-shift factor (upwards) + }, + /** + * Subscript schema object (minimum overlap) + * @type {Object} + * @default + */ + subscript: { + size: 0.6, + // fontSize factor + baseline: 0.11 + // baseline-shift factor (downwards) + }, + /** + * Background color of text lines + * @type String + * @default + */ + textBackgroundColor: "", + /** + * List of properties to consider when checking if + * state of an object is changed ({@link fabric.Object#hasStateChanged}) + * as well as for history (undo/redo) purposes + * @type Array + */ + stateProperties: _.Object.prototype.stateProperties.concat(I), + /** + * List of properties to consider when checking if cache needs refresh + * @type Array + */ + cacheProperties: _.Object.prototype.cacheProperties.concat(I), + /** + * When defined, an object is rendered via stroke and this property specifies its color. + * Backwards incompatibility note: This property was named "strokeStyle" until v1.1.6 + * @type String + * @default + */ + stroke: null, + /** + * Shadow object representing shadow of this shape. + * Backwards incompatibility note: This property was named "textShadow" (String) until v1.2.11 + * @type fabric.Shadow + * @default + */ + shadow: null, + /** + * fabric.Path that the text should follow. + * since 4.6.0 the path will be drawn automatically. + * if you want to make the path visible, give it a stroke and strokeWidth or fill value + * if you want it to be hidden, assign visible = false to the path. + * This feature is in BETA, and SVG import/export is not yet supported. + * @type fabric.Path + * @example + * var textPath = new fabric.Text('Text on a path', { + * top: 150, + * left: 150, + * textAlign: 'center', + * charSpacing: -50, + * path: new fabric.Path('M 0 0 C 50 -100 150 -100 200 0', { + * strokeWidth: 1, + * visible: false + * }), + * pathSide: 'left', + * pathStartOffset: 0 + * }); + * @default + */ + path: null, + /** + * Offset amount for text path starting position + * Only used when text has a path + * @type Number + * @default + */ + pathStartOffset: 0, + /** + * Which side of the path the text should be drawn on. + * Only used when text has a path + * @type {String} 'left|right' + * @default + */ + pathSide: "left", + /** + * @private + */ + _fontSizeFraction: 0.222, + /** + * @private + */ + offsets: { + underline: 0.1, + linethrough: -0.315, + overline: -0.88 + }, + /** + * Text Line proportion to font Size (in pixels) + * @type Number + * @default + */ + _fontSizeMult: 1.13, + /** + * additional space between characters + * expressed in thousands of em unit + * @type Number + * @default + */ + charSpacing: 0, + /** + * Object containing character styles - top-level properties -> line numbers, + * 2nd-level properties - character numbers + * @type Object + * @default + */ + styles: null, + /** + * Reference to a context to measure text char or couple of chars + * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas + * once created it will be referenced on fabric._measuringContext to avoid creating a canvas for every + * text object created. + * @type {CanvasRenderingContext2D} + * @default + */ + _measuringContext: null, + /** + * Baseline shift, styles only, keep at 0 for the main text object + * @type {Number} + * @default + */ + deltaY: 0, + /** + * WARNING: EXPERIMENTAL. NOT SUPPORTED YET + * determine the direction of the text. + * This has to be set manually together with textAlign and originX for proper + * experience. + * some interesting link for the future + * https://www.w3.org/International/questions/qa-bidi-unicode-controls + * @since 4.5.0 + * @type {String} 'ltr|rtl' + * @default + */ + direction: "ltr", + /** + * Array of properties that define a style unit (of 'styles'). + * @type {Array} + * @default + */ + _styleProperties: [ + "stroke", + "strokeWidth", + "fill", + "fontFamily", + "fontSize", + "fontWeight", + "fontStyle", + "underline", + "overline", + "linethrough", + "deltaY", + "textBackgroundColor" + ], + /** + * contains characters bounding boxes + */ + __charBounds: [], + /** + * use this size when measuring text. To avoid IE11 rounding errors + * @type {Number} + * @default + * @readonly + * @private + */ + CACHE_FONT_SIZE: 400, + /** + * contains the min text width to avoid getting 0 + * @type {Number} + * @default + */ + MIN_TEXT_WIDTH: 2, + /** + * Constructor + * @param {String} text Text string + * @param {Object} [options] Options object + * @return {fabric.Text} thisArg + */ + initialize: function(w, x) { + this.styles = x ? x.styles || {} : {}, this.text = w, this.__skipDimension = !0, this.callSuper("initialize", x), this.path && this.setPathInfo(), this.__skipDimension = !1, this.initDimensions(), this.setCoords(), this.setupState({ propertySet: "_dimensionAffectingProps" }); + }, + /** + * If text has a path, it will add the extra information needed + * for path and text calculations + * @return {fabric.Text} thisArg + */ + setPathInfo: function() { + var w = this.path; + w && (w.segmentsInfo = _.util.getPathSegmentsInfo(w.path)); + }, + /** + * Return a context for measurement of text string. + * if created it gets stored for reuse + * @param {String} text Text string + * @param {Object} [options] Options object + * @return {fabric.Text} thisArg + */ + getMeasuringContext: function() { + return _._measuringContext || (_._measuringContext = this.canvas && this.canvas.contextCache || _.util.createCanvasElement().getContext("2d")), _._measuringContext; + }, + /** + * @private + * Divides text into lines of text and lines of graphemes. + */ + _splitText: function() { + var w = this._splitTextIntoLines(this.text); + return this.textLines = w.lines, this._textLines = w.graphemeLines, this._unwrappedTextLines = w._unwrappedLines, this._text = w.graphemeText, w; + }, + /** + * Initialize or update text dimensions. + * Updates this.width and this.height with the proper values. + * Does not return dimensions. + */ + initDimensions: function() { + this.__skipDimension || (this._splitText(), this._clearCache(), this.path ? (this.width = this.path.width, this.height = this.path.height) : (this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH, this.height = this.calcTextHeight()), this.textAlign.indexOf("justify") !== -1 && this.enlargeSpaces(), this.saveState({ propertySet: "_dimensionAffectingProps" })); + }, + /** + * Enlarge space boxes and shift the others + */ + enlargeSpaces: function() { + for (var w, x, b, R, M, O, P, B = 0, H = this._textLines.length; B < H; B++) + if (!(this.textAlign !== "justify" && (B === H - 1 || this.isEndOfWrapping(B))) && (R = 0, M = this._textLines[B], x = this.getLineWidth(B), x < this.width && (P = this.textLines[B].match(this._reSpacesAndTabs)))) { + b = P.length, w = (this.width - x) / b; + for (var Y = 0, X = M.length; Y <= X; Y++) + O = this.__charBounds[B][Y], this._reSpaceAndTab.test(M[Y]) ? (O.width += w, O.kernedWidth += w, O.left += R, R += w) : O.left += R; + } + }, + /** + * Detect if the text line is ended with an hard break + * text and itext do not have wrapping, return false + * @return {Boolean} + */ + isEndOfWrapping: function(w) { + return w === this._textLines.length - 1; + }, + /** + * Detect if a line has a linebreak and so we need to account for it when moving + * and counting style. + * It return always for text and Itext. + * @return Number + */ + missingNewlineOffset: function() { + return 1; + }, + /** + * Returns string representation of an instance + * @return {String} String representation of text object + */ + toString: function() { + return "#'; + }, + /** + * Return the dimension and the zoom level needed to create a cache canvas + * big enough to host the object to be cached. + * @private + * @param {Object} dim.x width of object to be cached + * @param {Object} dim.y height of object to be cached + * @return {Object}.width width of canvas + * @return {Object}.height height of canvas + * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache + * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache + */ + _getCacheCanvasDimensions: function() { + var w = this.callSuper("_getCacheCanvasDimensions"), x = this.fontSize; + return w.width += x * w.zoomX, w.height += x * w.zoomY, w; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(w) { + var x = this.path; + x && !x.isNotVisible() && x._render(w), this._setTextStyles(w), this._renderTextLinesBackground(w), this._renderTextDecoration(w, "underline"), this._renderText(w), this._renderTextDecoration(w, "overline"), this._renderTextDecoration(w, "linethrough"); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderText: function(w) { + this.paintFirst === "stroke" ? (this._renderTextStroke(w), this._renderTextFill(w)) : (this._renderTextFill(w), this._renderTextStroke(w)); + }, + /** + * Set the font parameter of the context with the object properties or with charStyle + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Object} [charStyle] object with font style properties + * @param {String} [charStyle.fontFamily] Font Family + * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix ) + * @param {String} [charStyle.fontWeight] Font weight + * @param {String} [charStyle.fontStyle] Font style (italic|normal) + */ + _setTextStyles: function(w, x, b) { + w.textBaseline = "alphabetic", w.font = this._getFontDeclaration(x, b); + }, + /** + * calculate and return the text Width measuring each line. + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @return {Number} Maximum width of fabric.Text object + */ + calcTextWidth: function() { + for (var w = this.getLineWidth(0), x = 1, b = this._textLines.length; x < b; x++) { + var R = this.getLineWidth(x); + R > w && (w = R); + } + return w; + }, + /** + * @private + * @param {String} method Method name ("fillText" or "strokeText") + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {String} line Text to render + * @param {Number} left Left position of text + * @param {Number} top Top position of text + * @param {Number} lineIndex Index of a line in a text + */ + _renderTextLine: function(w, x, b, R, M, O) { + this._renderChars(w, x, b, R, M, O); + }, + /** + * Renders the text background for lines, taking care of style + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextLinesBackground: function(w) { + if (!(!this.textBackgroundColor && !this.styleHas("textBackgroundColor"))) { + for (var x, b, R = w.fillStyle, M, O, P = this._getLeftOffset(), B = this._getTopOffset(), H = 0, Y = 0, X, ee, ae = this.path, J, ne = 0, fe = this._textLines.length; ne < fe; ne++) { + if (x = this.getHeightOfLine(ne), !this.textBackgroundColor && !this.styleHas("textBackgroundColor", ne)) { + B += x; + continue; + } + M = this._textLines[ne], b = this._getLineLeftOffset(ne), Y = 0, H = 0, O = this.getValueOfPropertyAt(ne, 0, "textBackgroundColor"); + for (var de = 0, Te = M.length; de < Te; de++) + X = this.__charBounds[ne][de], ee = this.getValueOfPropertyAt(ne, de, "textBackgroundColor"), ae ? (w.save(), w.translate(X.renderLeft, X.renderTop), w.rotate(X.angle), w.fillStyle = ee, ee && w.fillRect( + -X.width / 2, + -x / this.lineHeight * (1 - this._fontSizeFraction), + X.width, + x / this.lineHeight + ), w.restore()) : ee !== O ? (J = P + b + H, this.direction === "rtl" && (J = this.width - J - Y), w.fillStyle = O, O && w.fillRect( + J, + B, + Y, + x / this.lineHeight + ), H = X.left, Y = X.width, O = ee) : Y += X.kernedWidth; + ee && !ae && (J = P + b + H, this.direction === "rtl" && (J = this.width - J - Y), w.fillStyle = ee, w.fillRect( + J, + B, + Y, + x / this.lineHeight + )), B += x; + } + w.fillStyle = R, this._removeShadow(w); + } + }, + /** + * @private + * @param {Object} decl style declaration for cache + * @param {String} decl.fontFamily fontFamily + * @param {String} decl.fontStyle fontStyle + * @param {String} decl.fontWeight fontWeight + * @return {Object} reference to cache + */ + getFontCache: function(w) { + var x = w.fontFamily.toLowerCase(); + _.charWidthsCache[x] || (_.charWidthsCache[x] = {}); + var b = _.charWidthsCache[x], R = w.fontStyle.toLowerCase() + "_" + (w.fontWeight + "").toLowerCase(); + return b[R] || (b[R] = {}), b[R]; + }, + /** + * measure and return the width of a single character. + * possibly overridden to accommodate different measure logic or + * to hook some external lib for character measurement + * @private + * @param {String} _char, char to be measured + * @param {Object} charStyle style of char to be measured + * @param {String} [previousChar] previous char + * @param {Object} [prevCharStyle] style of previous char + */ + _measureChar: function(w, x, b, R) { + var M = this.getFontCache(x), O = this._getFontDeclaration(x), P = this._getFontDeclaration(R), B = b + w, H = O === P, Y, X, ee, ae = x.fontSize / this.CACHE_FONT_SIZE, J; + if (b && M[b] !== void 0 && (ee = M[b]), M[w] !== void 0 && (J = Y = M[w]), H && M[B] !== void 0 && (X = M[B], J = X - ee), Y === void 0 || ee === void 0 || X === void 0) { + var ne = this.getMeasuringContext(); + this._setTextStyles(ne, x, !0); + } + return Y === void 0 && (J = Y = ne.measureText(w).width, M[w] = Y), ee === void 0 && H && b && (ee = ne.measureText(b).width, M[b] = ee), H && X === void 0 && (X = ne.measureText(B).width, M[B] = X, J = X - ee), { width: Y * ae, kernedWidth: J * ae }; + }, + /** + * Computes height of character at given position + * @param {Number} line the line index number + * @param {Number} _char the character index number + * @return {Number} fontSize of the character + */ + getHeightOfChar: function(w, x) { + return this.getValueOfPropertyAt(w, x, "fontSize"); + }, + /** + * measure a text line measuring all characters. + * @param {Number} lineIndex line number + * @return {Number} Line width + */ + measureLine: function(w) { + var x = this._measureLine(w); + return this.charSpacing !== 0 && (x.width -= this._getWidthOfCharSpacing()), x.width < 0 && (x.width = 0), x; + }, + /** + * measure every grapheme of a line, populating __charBounds + * @param {Number} lineIndex + * @return {Object} object.width total width of characters + * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs + */ + _measureLine: function(w) { + var x = 0, b, R, M = this._textLines[w], O, P, B = 0, H = new Array(M.length), Y = 0, X, ee, ae = this.path, J = this.pathSide === "right"; + for (this.__charBounds[w] = H, b = 0; b < M.length; b++) + R = M[b], P = this._getGraphemeBox(R, w, b, O), H[b] = P, x += P.kernedWidth, O = R; + if (H[b] = { + left: P ? P.left + P.width : 0, + width: 0, + kernedWidth: 0, + height: this.fontSize + }, ae) { + switch (ee = ae.segmentsInfo[ae.segmentsInfo.length - 1].length, X = _.util.getPointOnPath(ae.path, 0, ae.segmentsInfo), X.x += ae.pathOffset.x, X.y += ae.pathOffset.y, this.textAlign) { + case "left": + Y = J ? ee - x : 0; + break; + case "center": + Y = (ee - x) / 2; + break; + case "right": + Y = J ? 0 : ee - x; + break; + } + for (Y += this.pathStartOffset * (J ? -1 : 1), b = J ? M.length - 1 : 0; J ? b >= 0 : b < M.length; J ? b-- : b++) + P = H[b], Y > ee ? Y %= ee : Y < 0 && (Y += ee), this._setGraphemeOnPath(Y, P, X), Y += P.kernedWidth; + } + return { width: x, numOfSpaces: B }; + }, + /** + * Calculate the angle and the left,top position of the char that follow a path. + * It appends it to graphemeInfo to be reused later at rendering + * @private + * @param {Number} positionInPath to be measured + * @param {Object} graphemeInfo current grapheme box information + * @param {Object} startingPoint position of the point + */ + _setGraphemeOnPath: function(w, x, b) { + var R = w + x.kernedWidth / 2, M = this.path, O = _.util.getPointOnPath(M.path, R, M.segmentsInfo); + x.renderLeft = O.x - b.x, x.renderTop = O.y - b.y, x.angle = O.angle + (this.pathSide === "right" ? Math.PI : 0); + }, + /** + * Measure and return the info of a single grapheme. + * needs the the info of previous graphemes already filled + * @private + * @param {String} grapheme to be measured + * @param {Number} lineIndex index of the line where the char is + * @param {Number} charIndex position in the line + * @param {String} [prevGrapheme] character preceding the one to be measured + */ + _getGraphemeBox: function(w, x, b, R, M) { + var O = this.getCompleteStyleDeclaration(x, b), P = R ? this.getCompleteStyleDeclaration(x, b - 1) : {}, B = this._measureChar(w, O, R, P), H = B.kernedWidth, Y = B.width, X; + this.charSpacing !== 0 && (X = this._getWidthOfCharSpacing(), Y += X, H += X); + var ee = { + width: Y, + left: 0, + height: O.fontSize, + kernedWidth: H, + deltaY: O.deltaY + }; + if (b > 0 && !M) { + var ae = this.__charBounds[x][b - 1]; + ee.left = ae.left + ae.width + B.kernedWidth - B.width; + } + return ee; + }, + /** + * Calculate height of line at 'lineIndex' + * @param {Number} lineIndex index of line to calculate + * @return {Number} + */ + getHeightOfLine: function(w) { + if (this.__lineHeights[w]) + return this.__lineHeights[w]; + for (var x = this._textLines[w], b = this.getHeightOfChar(w, 0), R = 1, M = x.length; R < M; R++) + b = Math.max(this.getHeightOfChar(w, R), b); + return this.__lineHeights[w] = b * this.lineHeight * this._fontSizeMult; + }, + /** + * Calculate text box height + */ + calcTextHeight: function() { + for (var w, x = 0, b = 0, R = this._textLines.length; b < R; b++) + w = this.getHeightOfLine(b), x += b === R - 1 ? w / this.lineHeight : w; + return x; + }, + /** + * @private + * @return {Number} Left offset + */ + _getLeftOffset: function() { + return this.direction === "ltr" ? -this.width / 2 : this.width / 2; + }, + /** + * @private + * @return {Number} Top offset + */ + _getTopOffset: function() { + return -this.height / 2; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {String} method Method name ("fillText" or "strokeText") + */ + _renderTextCommon: function(w, x) { + w.save(); + for (var b = 0, R = this._getLeftOffset(), M = this._getTopOffset(), O = 0, P = this._textLines.length; O < P; O++) { + var B = this.getHeightOfLine(O), H = B / this.lineHeight, Y = this._getLineLeftOffset(O); + this._renderTextLine( + x, + w, + this._textLines[O], + R + Y, + M + b + H, + O + ), b += B; + } + w.restore(); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextFill: function(w) { + !this.fill && !this.styleHas("fill") || this._renderTextCommon(w, "fillText"); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextStroke: function(w) { + (!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles() || (this.shadow && !this.shadow.affectStroke && this._removeShadow(w), w.save(), this._setLineDash(w, this.strokeDashArray), w.beginPath(), this._renderTextCommon(w, "strokeText"), w.closePath(), w.restore()); + }, + /** + * @private + * @param {String} method fillText or strokeText. + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Array} line Content of the line, splitted in an array by grapheme + * @param {Number} left + * @param {Number} top + * @param {Number} lineIndex + */ + _renderChars: function(w, x, b, R, M, O) { + var P = this.getHeightOfLine(O), B = this.textAlign.indexOf("justify") !== -1, H, Y, X = "", ee, ae = 0, J, ne = this.path, fe = !B && this.charSpacing === 0 && this.isEmptyStyles(O) && !ne, de = this.direction === "ltr", Te = this.direction === "ltr" ? 1 : -1, be; + if (x.save(), M -= P * this._fontSizeFraction / this.lineHeight, fe) { + x.canvas.setAttribute("dir", de ? "ltr" : "rtl"), x.direction = de ? "ltr" : "rtl", x.textAlign = de ? "left" : "right", this._renderChar(w, x, O, 0, b.join(""), R, M, P), x.restore(); + return; + } + for (var Ve = 0, pe = b.length - 1; Ve <= pe; Ve++) + J = Ve === pe || this.charSpacing || ne, X += b[Ve], ee = this.__charBounds[O][Ve], ae === 0 ? (R += Te * (ee.kernedWidth - ee.width), ae += ee.width) : ae += ee.kernedWidth, B && !J && this._reSpaceAndTab.test(b[Ve]) && (J = !0), J || (H = H || this.getCompleteStyleDeclaration(O, Ve), Y = this.getCompleteStyleDeclaration(O, Ve + 1), J = this._hasStyleChanged(H, Y)), J && (ne ? (x.save(), x.translate(ee.renderLeft, ee.renderTop), x.rotate(ee.angle), this._renderChar(w, x, O, Ve, X, -ae / 2, 0, P), x.restore()) : (be = R, x.canvas.setAttribute("dir", de ? "ltr" : "rtl"), x.direction = de ? "ltr" : "rtl", x.textAlign = de ? "left" : "right", this._renderChar(w, x, O, Ve, X, be, M, P)), X = "", H = Y, R += Te * ae, ae = 0); + x.restore(); + }, + /** + * This function try to patch the missing gradientTransform on canvas gradients. + * transforming a context to transform the gradient, is going to transform the stroke too. + * we want to transform the gradient but not the stroke operation, so we create + * a transformed gradient on a pattern and then we use the pattern instead of the gradient. + * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size + * is limited. + * @private + * @param {fabric.Gradient} filler a fabric gradient instance + * @return {CanvasPattern} a pattern to use as fill/stroke style + */ + _applyPatternGradientTransformText: function(w) { + var x = _.util.createCanvasElement(), b, R = this.width + this.strokeWidth, M = this.height + this.strokeWidth; + return x.width = R, x.height = M, b = x.getContext("2d"), b.beginPath(), b.moveTo(0, 0), b.lineTo(R, 0), b.lineTo(R, M), b.lineTo(0, M), b.closePath(), b.translate(R / 2, M / 2), b.fillStyle = w.toLive(b), this._applyPatternGradientTransform(b, w), b.fill(), b.createPattern(x, "no-repeat"); + }, + handleFiller: function(w, x, b) { + var R, M; + return b.toLive ? b.gradientUnits === "percentage" || b.gradientTransform || b.patternTransform ? (R = -this.width / 2, M = -this.height / 2, w.translate(R, M), w[x] = this._applyPatternGradientTransformText(b), { offsetX: R, offsetY: M }) : (w[x] = b.toLive(w, this), this._applyPatternGradientTransform(w, b)) : (w[x] = b, { offsetX: 0, offsetY: 0 }); + }, + _setStrokeStyles: function(w, x) { + return w.lineWidth = x.strokeWidth, w.lineCap = this.strokeLineCap, w.lineDashOffset = this.strokeDashOffset, w.lineJoin = this.strokeLineJoin, w.miterLimit = this.strokeMiterLimit, this.handleFiller(w, "strokeStyle", x.stroke); + }, + _setFillStyles: function(w, x) { + return this.handleFiller(w, "fillStyle", x.fill); + }, + /** + * @private + * @param {String} method + * @param {CanvasRenderingContext2D} ctx Context to render on + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {String} _char + * @param {Number} left Left coordinate + * @param {Number} top Top coordinate + * @param {Number} lineHeight Height of the line + */ + _renderChar: function(w, x, b, R, M, O, P) { + var B = this._getStyleDeclaration(b, R), H = this.getCompleteStyleDeclaration(b, R), Y = w === "fillText" && H.fill, X = w === "strokeText" && H.stroke && H.strokeWidth, ee, ae; + !X && !Y || (x.save(), Y && (ee = this._setFillStyles(x, H)), X && (ae = this._setStrokeStyles(x, H)), x.font = this._getFontDeclaration(H), B && B.textBackgroundColor && this._removeShadow(x), B && B.deltaY && (P += B.deltaY), Y && x.fillText(M, O - ee.offsetX, P - ee.offsetY), X && x.strokeText(M, O - ae.offsetX, P - ae.offsetY), x.restore()); + }, + /** + * Turns the character into a 'superior figure' (i.e. 'superscript') + * @param {Number} start selection start + * @param {Number} end selection end + * @returns {fabric.Text} thisArg + * @chainable + */ + setSuperscript: function(w, x) { + return this._setScript(w, x, this.superscript); + }, + /** + * Turns the character into an 'inferior figure' (i.e. 'subscript') + * @param {Number} start selection start + * @param {Number} end selection end + * @returns {fabric.Text} thisArg + * @chainable + */ + setSubscript: function(w, x) { + return this._setScript(w, x, this.subscript); + }, + /** + * Applies 'schema' at given position + * @private + * @param {Number} start selection start + * @param {Number} end selection end + * @param {Number} schema + * @returns {fabric.Text} thisArg + * @chainable + */ + _setScript: function(w, x, b) { + var R = this.get2DCursorLocation(w, !0), M = this.getValueOfPropertyAt(R.lineIndex, R.charIndex, "fontSize"), O = this.getValueOfPropertyAt(R.lineIndex, R.charIndex, "deltaY"), P = { fontSize: M * b.size, deltaY: O + M * b.baseline }; + return this.setSelectionStyles(P, w, x), this; + }, + /** + * @private + * @param {Object} prevStyle + * @param {Object} thisStyle + */ + _hasStyleChanged: function(w, x) { + return w.fill !== x.fill || w.stroke !== x.stroke || w.strokeWidth !== x.strokeWidth || w.fontSize !== x.fontSize || w.fontFamily !== x.fontFamily || w.fontWeight !== x.fontWeight || w.fontStyle !== x.fontStyle || w.deltaY !== x.deltaY; + }, + /** + * @private + * @param {Object} prevStyle + * @param {Object} thisStyle + */ + _hasStyleChangedForSvg: function(w, x) { + return this._hasStyleChanged(w, x) || w.overline !== x.overline || w.underline !== x.underline || w.linethrough !== x.linethrough; + }, + /** + * @private + * @param {Number} lineIndex index text line + * @return {Number} Line left offset + */ + _getLineLeftOffset: function(w) { + var x = this.getLineWidth(w), b = this.width - x, R = this.textAlign, M = this.direction, P, O = 0, P = this.isEndOfWrapping(w); + return R === "justify" || R === "justify-center" && !P || R === "justify-right" && !P || R === "justify-left" && !P ? 0 : (R === "center" && (O = b / 2), R === "right" && (O = b), R === "justify-center" && (O = b / 2), R === "justify-right" && (O = b), M === "rtl" && (O -= b), O); + }, + /** + * @private + */ + _clearCache: function() { + this.__lineWidths = [], this.__lineHeights = [], this.__charBounds = []; + }, + /** + * @private + */ + _shouldClearDimensionCache: function() { + var w = this._forceClearCache; + return w || (w = this.hasStateChanged("_dimensionAffectingProps")), w && (this.dirty = !0, this._forceClearCache = !1), w; + }, + /** + * Measure a single line given its index. Used to calculate the initial + * text bounding box. The values are calculated and stored in __lineWidths cache. + * @private + * @param {Number} lineIndex line number + * @return {Number} Line width + */ + getLineWidth: function(w) { + if (this.__lineWidths[w]) + return this.__lineWidths[w]; + var x, b = this._textLines[w], R; + return b === "" ? x = 0 : (R = this.measureLine(w), x = R.width), this.__lineWidths[w] = x, x; + }, + _getWidthOfCharSpacing: function() { + return this.charSpacing !== 0 ? this.fontSize * this.charSpacing / 1e3 : 0; + }, + /** + * Retrieves the value of property at given character position + * @param {Number} lineIndex the line number + * @param {Number} charIndex the character number + * @param {String} property the property name + * @returns the value of 'property' + */ + getValueOfPropertyAt: function(w, x, b) { + var R = this._getStyleDeclaration(w, x); + return R && typeof R[b] != "undefined" ? R[b] : this[b]; + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _renderTextDecoration: function(w, x) { + if (!(!this[x] && !this.styleHas(x))) { + for (var b, R, M, O, P, B, H, Y, X = this._getLeftOffset(), ee = this._getTopOffset(), ae, J, ne, fe, de, Te, be, Ve, pe = this.path, Be = this._getWidthOfCharSpacing(), Ue = this.offsets[x], Qe = 0, Re = this._textLines.length; Qe < Re; Qe++) { + if (b = this.getHeightOfLine(Qe), !this[x] && !this.styleHas(x, Qe)) { + ee += b; + continue; + } + H = this._textLines[Qe], Te = b / this.lineHeight, O = this._getLineLeftOffset(Qe), J = 0, ne = 0, Y = this.getValueOfPropertyAt(Qe, 0, x), Ve = this.getValueOfPropertyAt(Qe, 0, "fill"), ae = ee + Te * (1 - this._fontSizeFraction), R = this.getHeightOfChar(Qe, 0), P = this.getValueOfPropertyAt(Qe, 0, "deltaY"); + for (var Ne = 0, Me = H.length; Ne < Me; Ne++) + if (fe = this.__charBounds[Qe][Ne], de = this.getValueOfPropertyAt(Qe, Ne, x), be = this.getValueOfPropertyAt(Qe, Ne, "fill"), M = this.getHeightOfChar(Qe, Ne), B = this.getValueOfPropertyAt(Qe, Ne, "deltaY"), pe && de && be) + w.save(), w.fillStyle = Ve, w.translate(fe.renderLeft, fe.renderTop), w.rotate(fe.angle), w.fillRect( + -fe.kernedWidth / 2, + Ue * M + B, + fe.kernedWidth, + this.fontSize / 15 + ), w.restore(); + else if ((de !== Y || be !== Ve || M !== R || B !== P) && ne > 0) { + var we = X + O + J; + this.direction === "rtl" && (we = this.width - we - ne), Y && Ve && (w.fillStyle = Ve, w.fillRect( + we, + ae + Ue * R + P, + ne, + this.fontSize / 15 + )), J = fe.left, ne = fe.width, Y = de, Ve = be, R = M, P = B; + } else + ne += fe.kernedWidth; + var we = X + O + J; + this.direction === "rtl" && (we = this.width - we - ne), w.fillStyle = be, de && be && w.fillRect( + we, + ae + Ue * R + P, + ne - Be, + this.fontSize / 15 + ), ee += b; + } + this._removeShadow(w); + } + }, + /** + * return font declaration string for canvas context + * @param {Object} [styleObject] object + * @returns {String} font declaration formatted for canvas context. + */ + _getFontDeclaration: function(w, x) { + var b = w || this, R = this.fontFamily, M = _.Text.genericFonts.indexOf(R.toLowerCase()) > -1, O = R === void 0 || R.indexOf("'") > -1 || R.indexOf(",") > -1 || R.indexOf('"') > -1 || M ? b.fontFamily : '"' + b.fontFamily + '"'; + return [ + // node-canvas needs "weight style", while browsers need "style weight" + // verify if this can be fixed in JSDOM + _.isLikelyNode ? b.fontWeight : b.fontStyle, + _.isLikelyNode ? b.fontStyle : b.fontWeight, + x ? this.CACHE_FONT_SIZE + "px" : b.fontSize + "px", + O + ].join(" "); + }, + /** + * Renders text instance on a specified context + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + render: function(w) { + this.visible && (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (this._shouldClearDimensionCache() && this.initDimensions(), this.callSuper("render", w))); + }, + /** + * Returns the text as an array of lines. + * @param {String} text text to split + * @returns {Array} Lines in the text + */ + _splitTextIntoLines: function(w) { + for (var x = w.split(this._reNewline), b = new Array(x.length), R = [` +`], M = [], O = 0; O < x.length; O++) + b[O] = _.util.string.graphemeSplit(x[O]), M = M.concat(b[O], R); + return M.pop(), { _unwrappedLines: b, lines: x, graphemeText: M, graphemeLines: b }; + }, + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject: function(w) { + var x = I.concat(w), b = this.callSuper("toObject", x); + return b.styles = E(this.styles, !0), b.path && (b.path = this.path.toObject()), b; + }, + /** + * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. + * @param {String|Object} key Property name or object (if object, iterate over the object properties) + * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) + * @return {fabric.Object} thisArg + * @chainable + */ + set: function(w, x) { + this.callSuper("set", w, x); + var b = !1, R = !1; + if (typeof w == "object") + for (var M in w) + M === "path" && this.setPathInfo(), b = b || this._dimensionAffectingProps.indexOf(M) !== -1, R = R || M === "path"; + else + b = this._dimensionAffectingProps.indexOf(w) !== -1, R = w === "path"; + return R && this.setPathInfo(), b && (this.initDimensions(), this.setCoords()), this; + }, + /** + * Returns complexity of an instance + * @return {Number} complexity + */ + complexity: function() { + return 1; + } + } + ), _.Text.ATTRIBUTE_NAMES = _.SHARED_ATTRIBUTES.concat( + "x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor".split(" ") + ), _.Text.DEFAULT_SVG_FONT_SIZE = 16, _.Text.fromElement = function(w, x, b) { + if (!w) + return x(null); + var R = _.parseAttributes(w, _.Text.ATTRIBUTE_NAMES), M = R.textAnchor || "left"; + if (b = _.util.object.extend(b ? E(b) : {}, R), b.top = b.top || 0, b.left = b.left || 0, R.textDecoration) { + var O = R.textDecoration; + O.indexOf("underline") !== -1 && (b.underline = !0), O.indexOf("overline") !== -1 && (b.overline = !0), O.indexOf("line-through") !== -1 && (b.linethrough = !0), delete b.textDecoration; + } + "dx" in R && (b.left += R.dx), "dy" in R && (b.top += R.dy), "fontSize" in b || (b.fontSize = _.Text.DEFAULT_SVG_FONT_SIZE); + var P = ""; + "textContent" in w ? P = w.textContent : "firstChild" in w && w.firstChild !== null && "data" in w.firstChild && w.firstChild.data !== null && (P = w.firstChild.data), P = P.replace(/^\s+|\s+$|\n+/g, "").replace(/\s+/g, " "); + var B = b.strokeWidth; + b.strokeWidth = 0; + var H = new _.Text(P, b), Y = H.getScaledHeight() / H.height, X = (H.height + H.strokeWidth) * H.lineHeight - H.height, ee = X * Y, ae = H.getScaledHeight() + ee, J = 0; + M === "center" && (J = H.getScaledWidth() / 2), M === "right" && (J = H.getScaledWidth()), H.set({ + left: H.left - J, + top: H.top - (ae - H.fontSize * (0.07 + H._fontSizeFraction)) / H.lineHeight, + strokeWidth: typeof B != "undefined" ? B : 1 + }), x(H); + }, _.Text.fromObject = function(w, x) { + var b = E(w), R = w.path; + return delete b.path, _.Object._fromObject("Text", b, function(M) { + R ? _.Object._fromObject("Path", R, function(O) { + M.set("path", O), x(M); + }, "path") : x(M); + }, "text"); + }, _.Text.genericFonts = ["sans-serif", "serif", "cursive", "fantasy", "monospace"], _.util.createAccessors && _.util.createAccessors(_.Text); + }(u), function() { + f.util.object.extend( + f.Text.prototype, + /** @lends fabric.Text.prototype */ + { + /** + * Returns true if object has no styling or no styling in a line + * @param {Number} lineIndex , lineIndex is on wrapped lines. + * @return {Boolean} + */ + isEmptyStyles: function(S) { + if (!this.styles || typeof S != "undefined" && !this.styles[S]) + return !0; + var _ = typeof S == "undefined" ? this.styles : { line: this.styles[S] }; + for (var E in _) + for (var I in _[E]) + for (var w in _[E][I]) + return !1; + return !0; + }, + /** + * Returns true if object has a style property or has it ina specified line + * This function is used to detect if a text will use a particular property or not. + * @param {String} property to check for + * @param {Number} lineIndex to check the style on + * @return {Boolean} + */ + styleHas: function(S, _) { + if (!this.styles || !S || S === "" || typeof _ != "undefined" && !this.styles[_]) + return !1; + var E = typeof _ == "undefined" ? this.styles : { 0: this.styles[_] }; + for (var I in E) + for (var w in E[I]) + if (typeof E[I][w][S] != "undefined") + return !0; + return !1; + }, + /** + * Check if characters in a text have a value for a property + * whose value matches the textbox's value for that property. If so, + * the character-level property is deleted. If the character + * has no other properties, then it is also deleted. Finally, + * if the line containing that character has no other characters + * then it also is deleted. + * + * @param {string} property The property to compare between characters and text. + */ + cleanStyle: function(S) { + if (!this.styles || !S || S === "") + return !1; + var _ = this.styles, E = 0, I, w, x = !0, b = 0, R; + for (var M in _) { + I = 0; + for (var O in _[M]) { + var R = _[M][O], P = R.hasOwnProperty(S); + E++, P ? (w ? R[S] !== w && (x = !1) : w = R[S], R[S] === this[S] && delete R[S]) : x = !1, Object.keys(R).length !== 0 ? I++ : delete _[M][O]; + } + I === 0 && delete _[M]; + } + for (var B = 0; B < this._textLines.length; B++) + b += this._textLines[B].length; + x && E === b && (this[S] = w, this.removeStyle(S)); + }, + /** + * Remove a style property or properties from all individual character styles + * in a text object. Deletes the character style object if it contains no other style + * props. Deletes a line style object if it contains no other character styles. + * + * @param {String} props The property to remove from character styles. + */ + removeStyle: function(S) { + if (!(!this.styles || !S || S === "")) { + var _ = this.styles, E, I, w; + for (I in _) { + E = _[I]; + for (w in E) + delete E[w][S], Object.keys(E[w]).length === 0 && delete E[w]; + Object.keys(E).length === 0 && delete _[I]; + } + } + }, + /** + * @private + */ + _extendStyles: function(S, _) { + var E = this.get2DCursorLocation(S); + this._getLineStyle(E.lineIndex) || this._setLineStyle(E.lineIndex), this._getStyleDeclaration(E.lineIndex, E.charIndex) || this._setStyleDeclaration(E.lineIndex, E.charIndex, {}), f.util.object.extend(this._getStyleDeclaration(E.lineIndex, E.charIndex), _); + }, + /** + * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start) + * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used. + * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles. + */ + get2DCursorLocation: function(S, _) { + typeof S == "undefined" && (S = this.selectionStart); + for (var E = _ ? this._unwrappedTextLines : this._textLines, I = E.length, w = 0; w < I; w++) { + if (S <= E[w].length) + return { + lineIndex: w, + charIndex: S + }; + S -= E[w].length + this.missingNewlineOffset(w); + } + return { + lineIndex: w - 1, + charIndex: E[w - 1].length < S ? E[w - 1].length : S + }; + }, + /** + * Gets style of a current selection/cursor (at the start position) + * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used. + * @param {Number} [startIndex] Start index to get styles at + * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1 + * @param {Boolean} [complete] get full style or not + * @return {Array} styles an array with one, zero or more Style objects + */ + getSelectionStyles: function(S, _, E) { + typeof S == "undefined" && (S = this.selectionStart || 0), typeof _ == "undefined" && (_ = this.selectionEnd || S); + for (var I = [], w = S; w < _; w++) + I.push(this.getStyleAtPosition(w, E)); + return I; + }, + /** + * Gets style of a current selection/cursor position + * @param {Number} position to get styles at + * @param {Boolean} [complete] full style if true + * @return {Object} style Style object at a specified index + * @private + */ + getStyleAtPosition: function(S, _) { + var E = this.get2DCursorLocation(S), I = _ ? this.getCompleteStyleDeclaration(E.lineIndex, E.charIndex) : this._getStyleDeclaration(E.lineIndex, E.charIndex); + return I || {}; + }, + /** + * Sets style of a current selection, if no selection exist, do not set anything. + * @param {Object} [styles] Styles object + * @param {Number} [startIndex] Start index to get styles at + * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1 + * @return {fabric.IText} thisArg + * @chainable + */ + setSelectionStyles: function(S, _, E) { + typeof _ == "undefined" && (_ = this.selectionStart || 0), typeof E == "undefined" && (E = this.selectionEnd || _); + for (var I = _; I < E; I++) + this._extendStyles(I, S); + return this._forceClearCache = !0, this; + }, + /** + * get the reference, not a clone, of the style object for a given character + * @param {Number} lineIndex + * @param {Number} charIndex + * @return {Object} style object + */ + _getStyleDeclaration: function(S, _) { + var E = this.styles && this.styles[S]; + return E ? E[_] : null; + }, + /** + * return a new object that contains all the style property for a character + * the object returned is newly created + * @param {Number} lineIndex of the line where the character is + * @param {Number} charIndex position of the character on the line + * @return {Object} style object + */ + getCompleteStyleDeclaration: function(S, _) { + for (var E = this._getStyleDeclaration(S, _) || {}, I = {}, w, x = 0; x < this._styleProperties.length; x++) + w = this._styleProperties[x], I[w] = typeof E[w] == "undefined" ? this[w] : E[w]; + return I; + }, + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {Object} style + * @private + */ + _setStyleDeclaration: function(S, _, E) { + this.styles[S][_] = E; + }, + /** + * + * @param {Number} lineIndex + * @param {Number} charIndex + * @private + */ + _deleteStyleDeclaration: function(S, _) { + delete this.styles[S][_]; + }, + /** + * @param {Number} lineIndex + * @return {Boolean} if the line exists or not + * @private + */ + _getLineStyle: function(S) { + return !!this.styles[S]; + }, + /** + * Set the line style to an empty object so that is initialized + * @param {Number} lineIndex + * @private + */ + _setLineStyle: function(S) { + this.styles[S] = {}; + }, + /** + * @param {Number} lineIndex + * @private + */ + _deleteLineStyle: function(S) { + delete this.styles[S]; + } + } + ); + }(), function() { + function S(_) { + _.textDecoration && (_.textDecoration.indexOf("underline") > -1 && (_.underline = !0), _.textDecoration.indexOf("line-through") > -1 && (_.linethrough = !0), _.textDecoration.indexOf("overline") > -1 && (_.overline = !0), delete _.textDecoration); + } + f.IText = f.util.createClass( + f.Text, + f.Observable, + /** @lends fabric.IText.prototype */ + { + /** + * Type of an object + * @type String + * @default + */ + type: "i-text", + /** + * Index where text selection starts (or where cursor is when there is no selection) + * @type Number + * @default + */ + selectionStart: 0, + /** + * Index where text selection ends + * @type Number + * @default + */ + selectionEnd: 0, + /** + * Color of text selection + * @type String + * @default + */ + selectionColor: "rgba(17,119,255,0.3)", + /** + * Indicates whether text is in editing mode + * @type Boolean + * @default + */ + isEditing: !1, + /** + * Indicates whether a text can be edited + * @type Boolean + * @default + */ + editable: !0, + /** + * Border color of text object while it's in editing mode + * @type String + * @default + */ + editingBorderColor: "rgba(102,153,255,0.25)", + /** + * Width of cursor (in px) + * @type Number + * @default + */ + cursorWidth: 2, + /** + * Color of text cursor color in editing mode. + * if not set (default) will take color from the text. + * if set to a color value that fabric can understand, it will + * be used instead of the color of the text at the current position. + * @type String + * @default + */ + cursorColor: "", + /** + * Delay between cursor blink (in ms) + * @type Number + * @default + */ + cursorDelay: 1e3, + /** + * Duration of cursor fadein (in ms) + * @type Number + * @default + */ + cursorDuration: 600, + /** + * Indicates whether internal text char widths can be cached + * @type Boolean + * @default + */ + caching: !0, + /** + * DOM container to append the hiddenTextarea. + * An alternative to attaching to the document.body. + * Useful to reduce laggish redraw of the full document.body tree and + * also with modals event capturing that won't let the textarea take focus. + * @type HTMLElement + * @default + */ + hiddenTextareaContainer: null, + /** + * @private + */ + _reSpace: /\s|\n/, + /** + * @private + */ + _currentCursorOpacity: 0, + /** + * @private + */ + _selectionDirection: null, + /** + * @private + */ + _abortCursorAnimation: !1, + /** + * @private + */ + __widthOfSpace: [], + /** + * Helps determining when the text is in composition, so that the cursor + * rendering is altered. + */ + inCompositionMode: !1, + /** + * Constructor + * @param {String} text Text string + * @param {Object} [options] Options object + * @return {fabric.IText} thisArg + */ + initialize: function(_, E) { + this.callSuper("initialize", _, E), this.initBehavior(); + }, + /** + * Sets selection start (left boundary of a selection) + * @param {Number} index Index to set selection start to + */ + setSelectionStart: function(_) { + _ = Math.max(_, 0), this._updateAndFire("selectionStart", _); + }, + /** + * Sets selection end (right boundary of a selection) + * @param {Number} index Index to set selection end to + */ + setSelectionEnd: function(_) { + _ = Math.min(_, this.text.length), this._updateAndFire("selectionEnd", _); + }, + /** + * @private + * @param {String} property 'selectionStart' or 'selectionEnd' + * @param {Number} index new position of property + */ + _updateAndFire: function(_, E) { + this[_] !== E && (this._fireSelectionChanged(), this[_] = E), this._updateTextarea(); + }, + /** + * Fires the even of selection changed + * @private + */ + _fireSelectionChanged: function() { + this.fire("selection:changed"), this.canvas && this.canvas.fire("text:selection:changed", { target: this }); + }, + /** + * Initialize text dimensions. Render all text on given context + * or on a offscreen canvas to get the text width with measureText. + * Updates this.width and this.height with the proper values. + * Does not return dimensions. + * @private + */ + initDimensions: function() { + this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this.callSuper("initDimensions"); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + render: function(_) { + this.clearContextTop(), this.callSuper("render", _), this.cursorOffsetCache = {}, this.renderCursorOrSelection(); + }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render: function(_) { + this.callSuper("_render", _); + }, + /** + * Prepare and clean the contextTop + */ + clearContextTop: function(_) { + if (!(!this.isEditing || !this.canvas || !this.canvas.contextTop)) { + var E = this.canvas.contextTop, I = this.canvas.viewportTransform; + E.save(), E.transform(I[0], I[1], I[2], I[3], I[4], I[5]), this.transform(E), this._clearTextArea(E), _ || E.restore(); + } + }, + /** + * Renders cursor or selection (depending on what exists) + * it does on the contextTop. If contextTop is not available, do nothing. + */ + renderCursorOrSelection: function() { + if (!(!this.isEditing || !this.canvas || !this.canvas.contextTop)) { + var _ = this._getCursorBoundaries(), E = this.canvas.contextTop; + this.clearContextTop(!0), this.selectionStart === this.selectionEnd ? this.renderCursor(_, E) : this.renderSelection(_, E), E.restore(); + } + }, + _clearTextArea: function(_) { + var E = this.width + 4, I = this.height + 4; + _.clearRect(-E / 2, -I / 2, E, I); + }, + /** + * Returns cursor boundaries (left, top, leftOffset, topOffset) + * @private + * @param {Array} chars Array of characters + * @param {String} typeOfBoundaries + */ + _getCursorBoundaries: function(_) { + typeof _ == "undefined" && (_ = this.selectionStart); + var E = this._getLeftOffset(), I = this._getTopOffset(), w = this._getCursorBoundariesOffsets(_); + return { + left: E, + top: I, + leftOffset: w.left, + topOffset: w.top + }; + }, + /** + * @private + */ + _getCursorBoundariesOffsets: function(_) { + if (this.cursorOffsetCache && "top" in this.cursorOffsetCache) + return this.cursorOffsetCache; + var E, I, w, x = 0, b = 0, R, M = this.get2DCursorLocation(_); + w = M.charIndex, I = M.lineIndex; + for (var O = 0; O < I; O++) + x += this.getHeightOfLine(O); + E = this._getLineLeftOffset(I); + var P = this.__charBounds[I][w]; + return P && (b = P.left), this.charSpacing !== 0 && w === this._textLines[I].length && (b -= this._getWidthOfCharSpacing()), R = { + top: x, + left: E + (b > 0 ? b : 0) + }, this.direction === "rtl" && (R.left *= -1), this.cursorOffsetCache = R, this.cursorOffsetCache; + }, + /** + * Renders cursor + * @param {Object} boundaries + * @param {CanvasRenderingContext2D} ctx transformed context to draw on + */ + renderCursor: function(_, E) { + var I = this.get2DCursorLocation(), w = I.lineIndex, x = I.charIndex > 0 ? I.charIndex - 1 : 0, b = this.getValueOfPropertyAt(w, x, "fontSize"), R = this.scaleX * this.canvas.getZoom(), M = this.cursorWidth / R, O = _.topOffset, P = this.getValueOfPropertyAt(w, x, "deltaY"); + O += (1 - this._fontSizeFraction) * this.getHeightOfLine(w) / this.lineHeight - b * (1 - this._fontSizeFraction), this.inCompositionMode && this.renderSelection(_, E), E.fillStyle = this.cursorColor || this.getValueOfPropertyAt(w, x, "fill"), E.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity, E.fillRect( + _.left + _.leftOffset - M / 2, + O + _.top + P, + M, + b + ); + }, + /** + * Renders text selection + * @param {Object} boundaries Object with left/top/leftOffset/topOffset + * @param {CanvasRenderingContext2D} ctx transformed context to draw on + */ + renderSelection: function(_, E) { + for (var I = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart, w = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd, x = this.textAlign.indexOf("justify") !== -1, b = this.get2DCursorLocation(I), R = this.get2DCursorLocation(w), M = b.lineIndex, O = R.lineIndex, P = b.charIndex < 0 ? 0 : b.charIndex, B = R.charIndex < 0 ? 0 : R.charIndex, H = M; H <= O; H++) { + var Y = this._getLineLeftOffset(H) || 0, X = this.getHeightOfLine(H), ee = 0, ae = 0, J = 0; + if (H === M && (ae = this.__charBounds[M][P].left), H >= M && H < O) + J = x && !this.isEndOfWrapping(H) ? this.width : this.getLineWidth(H) || 5; + else if (H === O) + if (B === 0) + J = this.__charBounds[O][B].left; + else { + var ne = this._getWidthOfCharSpacing(); + J = this.__charBounds[O][B - 1].left + this.__charBounds[O][B - 1].width - ne; + } + ee = X, (this.lineHeight < 1 || H === O && this.lineHeight > 1) && (X /= this.lineHeight); + var fe = _.left + Y + ae, de = J - ae, Te = X, be = 0; + this.inCompositionMode ? (E.fillStyle = this.compositionColor || "black", Te = 1, be = X) : E.fillStyle = this.selectionColor, this.direction === "rtl" && (fe = this.width - fe - de), E.fillRect( + fe, + _.top + _.topOffset + be, + de, + Te + ), _.topOffset += ee; + } + }, + /** + * High level function to know the height of the cursor. + * the currentChar is the one that precedes the cursor + * Returns fontSize of char at the current cursor + * Unused from the library, is for the end user + * @return {Number} Character font size + */ + getCurrentCharFontSize: function() { + var _ = this._getCurrentCharIndex(); + return this.getValueOfPropertyAt(_.l, _.c, "fontSize"); + }, + /** + * High level function to know the color of the cursor. + * the currentChar is the one that precedes the cursor + * Returns color (fill) of char at the current cursor + * if the text object has a pattern or gradient for filler, it will return that. + * Unused by the library, is for the end user + * @return {String | fabric.Gradient | fabric.Pattern} Character color (fill) + */ + getCurrentCharColor: function() { + var _ = this._getCurrentCharIndex(); + return this.getValueOfPropertyAt(_.l, _.c, "fill"); + }, + /** + * Returns the cursor position for the getCurrent.. functions + * @private + */ + _getCurrentCharIndex: function() { + var _ = this.get2DCursorLocation(this.selectionStart, !0), E = _.charIndex > 0 ? _.charIndex - 1 : 0; + return { l: _.lineIndex, c: E }; + } + } + ), f.IText.fromObject = function(_, E) { + if (S(_), _.styles) + for (var I in _.styles) + for (var w in _.styles[I]) + S(_.styles[I][w]); + f.Object._fromObject("IText", _, E, "text"); + }; + }(), function() { + var S = f.util.object.clone; + f.util.object.extend( + f.IText.prototype, + /** @lends fabric.IText.prototype */ + { + /** + * Initializes all the interactive behavior of IText + */ + initBehavior: function() { + this.initAddedHandler(), this.initRemovedHandler(), this.initCursorSelectionHandlers(), this.initDoubleClickSimulation(), this.mouseMoveHandler = this.mouseMoveHandler.bind(this); + }, + onDeselect: function() { + this.isEditing && this.exitEditing(), this.selected = !1; + }, + /** + * Initializes "added" event handler + */ + initAddedHandler: function() { + var _ = this; + this.on("added", function() { + var E = _.canvas; + E && (E._hasITextHandlers || (E._hasITextHandlers = !0, _._initCanvasHandlers(E)), E._iTextInstances = E._iTextInstances || [], E._iTextInstances.push(_)); + }); + }, + initRemovedHandler: function() { + var _ = this; + this.on("removed", function() { + var E = _.canvas; + E && (E._iTextInstances = E._iTextInstances || [], f.util.removeFromArray(E._iTextInstances, _), E._iTextInstances.length === 0 && (E._hasITextHandlers = !1, _._removeCanvasHandlers(E))); + }); + }, + /** + * register canvas event to manage exiting on other instances + * @private + */ + _initCanvasHandlers: function(_) { + _._mouseUpITextHandler = function() { + _._iTextInstances && _._iTextInstances.forEach(function(E) { + E.__isMousedown = !1; + }); + }, _.on("mouse:up", _._mouseUpITextHandler); + }, + /** + * remove canvas event to manage exiting on other instances + * @private + */ + _removeCanvasHandlers: function(_) { + _.off("mouse:up", _._mouseUpITextHandler); + }, + /** + * @private + */ + _tick: function() { + this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, "_onTickComplete"); + }, + /** + * @private + */ + _animateCursor: function(_, E, I, w) { + var x; + return x = { + isAborted: !1, + abort: function() { + this.isAborted = !0; + } + }, _.animate("_currentCursorOpacity", E, { + duration: I, + onComplete: function() { + x.isAborted || _[w](); + }, + onChange: function() { + _.canvas && _.selectionStart === _.selectionEnd && _.renderCursorOrSelection(); + }, + abort: function() { + return x.isAborted; + } + }), x; + }, + /** + * @private + */ + _onTickComplete: function() { + var _ = this; + this._cursorTimeout1 && clearTimeout(this._cursorTimeout1), this._cursorTimeout1 = setTimeout(function() { + _._currentTickCompleteState = _._animateCursor(_, 0, this.cursorDuration / 2, "_tick"); + }, 100); + }, + /** + * Initializes delayed cursor + */ + initDelayedCursor: function(_) { + var E = this, I = _ ? 0 : this.cursorDelay; + this.abortCursorAnimation(), this._currentCursorOpacity = 1, this._cursorTimeout2 = setTimeout(function() { + E._tick(); + }, I); + }, + /** + * Aborts cursor animation and clears all timeouts + */ + abortCursorAnimation: function() { + var _ = this._currentTickState || this._currentTickCompleteState, E = this.canvas; + this._currentTickState && this._currentTickState.abort(), this._currentTickCompleteState && this._currentTickCompleteState.abort(), clearTimeout(this._cursorTimeout1), clearTimeout(this._cursorTimeout2), this._currentCursorOpacity = 0, _ && E && E.clearContext(E.contextTop || E.contextContainer); + }, + /** + * Selects entire text + * @return {fabric.IText} thisArg + * @chainable + */ + selectAll: function() { + return this.selectionStart = 0, this.selectionEnd = this._text.length, this._fireSelectionChanged(), this._updateTextarea(), this; + }, + /** + * Returns selected text + * @return {String} + */ + getSelectedText: function() { + return this._text.slice(this.selectionStart, this.selectionEnd).join(""); + }, + /** + * Find new selection index representing start of current word according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findWordBoundaryLeft: function(_) { + var E = 0, I = _ - 1; + if (this._reSpace.test(this._text[I])) + for (; this._reSpace.test(this._text[I]); ) + E++, I--; + for (; /\S/.test(this._text[I]) && I > -1; ) + E++, I--; + return _ - E; + }, + /** + * Find new selection index representing end of current word according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findWordBoundaryRight: function(_) { + var E = 0, I = _; + if (this._reSpace.test(this._text[I])) + for (; this._reSpace.test(this._text[I]); ) + E++, I++; + for (; /\S/.test(this._text[I]) && I < this._text.length; ) + E++, I++; + return _ + E; + }, + /** + * Find new selection index representing start of current line according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findLineBoundaryLeft: function(_) { + for (var E = 0, I = _ - 1; !/\n/.test(this._text[I]) && I > -1; ) + E++, I--; + return _ - E; + }, + /** + * Find new selection index representing end of current line according to current selection index + * @param {Number} startFrom Current selection index + * @return {Number} New selection index + */ + findLineBoundaryRight: function(_) { + for (var E = 0, I = _; !/\n/.test(this._text[I]) && I < this._text.length; ) + E++, I++; + return _ + E; + }, + /** + * Finds index corresponding to beginning or end of a word + * @param {Number} selectionStart Index of a character + * @param {Number} direction 1 or -1 + * @return {Number} Index of the beginning or end of a word + */ + searchWordBoundary: function(_, E) { + for (var I = this._text, w = this._reSpace.test(I[_]) ? _ - 1 : _, x = I[w], b = f.reNonWord; !b.test(x) && w > 0 && w < I.length; ) + w += E, x = I[w]; + return b.test(x) && (w += E === 1 ? 0 : 1), w; + }, + /** + * Selects a word based on the index + * @param {Number} selectionStart Index of a character + */ + selectWord: function(_) { + _ = _ || this.selectionStart; + var E = this.searchWordBoundary(_, -1), I = this.searchWordBoundary(_, 1); + this.selectionStart = E, this.selectionEnd = I, this._fireSelectionChanged(), this._updateTextarea(), this.renderCursorOrSelection(); + }, + /** + * Selects a line based on the index + * @param {Number} selectionStart Index of a character + * @return {fabric.IText} thisArg + * @chainable + */ + selectLine: function(_) { + _ = _ || this.selectionStart; + var E = this.findLineBoundaryLeft(_), I = this.findLineBoundaryRight(_); + return this.selectionStart = E, this.selectionEnd = I, this._fireSelectionChanged(), this._updateTextarea(), this; + }, + /** + * Enters editing state + * @return {fabric.IText} thisArg + * @chainable + */ + enterEditing: function(_) { + if (!(this.isEditing || !this.editable)) + return this.canvas && (this.canvas.calcOffset(), this.exitEditingOnOthers(this.canvas)), this.isEditing = !0, this.initHiddenTextarea(_), this.hiddenTextarea.focus(), this.hiddenTextarea.value = this.text, this._updateTextarea(), this._saveEditingProps(), this._setEditingProps(), this._textBeforeEdit = this.text, this._tick(), this.fire("editing:entered"), this._fireSelectionChanged(), this.canvas ? (this.canvas.fire("text:editing:entered", { target: this }), this.initMouseMoveHandler(), this.canvas.requestRenderAll(), this) : this; + }, + exitEditingOnOthers: function(_) { + _._iTextInstances && _._iTextInstances.forEach(function(E) { + E.selected = !1, E.isEditing && E.exitEditing(); + }); + }, + /** + * Initializes "mousemove" event handler + */ + initMouseMoveHandler: function() { + this.canvas.on("mouse:move", this.mouseMoveHandler); + }, + /** + * @private + */ + mouseMoveHandler: function(_) { + if (!(!this.__isMousedown || !this.isEditing)) { + var E = this.getSelectionStartFromPointer(_.e), I = this.selectionStart, w = this.selectionEnd; + (E !== this.__selectionStartOnMouseDown || I === w) && (I === E || w === E) || (E > this.__selectionStartOnMouseDown ? (this.selectionStart = this.__selectionStartOnMouseDown, this.selectionEnd = E) : (this.selectionStart = E, this.selectionEnd = this.__selectionStartOnMouseDown), (this.selectionStart !== I || this.selectionEnd !== w) && (this.restartCursorIfNeeded(), this._fireSelectionChanged(), this._updateTextarea(), this.renderCursorOrSelection())); + } + }, + /** + * @private + */ + _setEditingProps: function() { + this.hoverCursor = "text", this.canvas && (this.canvas.defaultCursor = this.canvas.moveCursor = "text"), this.borderColor = this.editingBorderColor, this.hasControls = this.selectable = !1, this.lockMovementX = this.lockMovementY = !0; + }, + /** + * convert from textarea to grapheme indexes + */ + fromStringToGraphemeSelection: function(_, E, I) { + var w = I.slice(0, _), x = f.util.string.graphemeSplit(w).length; + if (_ === E) + return { selectionStart: x, selectionEnd: x }; + var b = I.slice(_, E), R = f.util.string.graphemeSplit(b).length; + return { selectionStart: x, selectionEnd: x + R }; + }, + /** + * convert from fabric to textarea values + */ + fromGraphemeToStringSelection: function(_, E, I) { + var w = I.slice(0, _), x = w.join("").length; + if (_ === E) + return { selectionStart: x, selectionEnd: x }; + var b = I.slice(_, E), R = b.join("").length; + return { selectionStart: x, selectionEnd: x + R }; + }, + /** + * @private + */ + _updateTextarea: function() { + if (this.cursorOffsetCache = {}, !!this.hiddenTextarea) { + if (!this.inCompositionMode) { + var _ = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text); + this.hiddenTextarea.selectionStart = _.selectionStart, this.hiddenTextarea.selectionEnd = _.selectionEnd; + } + this.updateTextareaPosition(); + } + }, + /** + * @private + */ + updateFromTextArea: function() { + if (this.hiddenTextarea) { + this.cursorOffsetCache = {}, this.text = this.hiddenTextarea.value, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()); + var _ = this.fromStringToGraphemeSelection( + this.hiddenTextarea.selectionStart, + this.hiddenTextarea.selectionEnd, + this.hiddenTextarea.value + ); + this.selectionEnd = this.selectionStart = _.selectionEnd, this.inCompositionMode || (this.selectionStart = _.selectionStart), this.updateTextareaPosition(); + } + }, + /** + * @private + */ + updateTextareaPosition: function() { + if (this.selectionStart === this.selectionEnd) { + var _ = this._calcTextareaPosition(); + this.hiddenTextarea.style.left = _.left, this.hiddenTextarea.style.top = _.top; + } + }, + /** + * @private + * @return {Object} style contains style for hiddenTextarea + */ + _calcTextareaPosition: function() { + if (!this.canvas) + return { x: 1, y: 1 }; + var _ = this.inCompositionMode ? this.compositionStart : this.selectionStart, E = this._getCursorBoundaries(_), I = this.get2DCursorLocation(_), w = I.lineIndex, x = I.charIndex, b = this.getValueOfPropertyAt(w, x, "fontSize") * this.lineHeight, R = E.leftOffset, M = this.calcTransformMatrix(), O = { + x: E.left + R, + y: E.top + E.topOffset + b + }, P = this.canvas.getRetinaScaling(), B = this.canvas.upperCanvasEl, H = B.width / P, Y = B.height / P, X = H - b, ee = Y - b, ae = B.clientWidth / H, J = B.clientHeight / Y; + return O = f.util.transformPoint(O, M), O = f.util.transformPoint(O, this.canvas.viewportTransform), O.x *= ae, O.y *= J, O.x < 0 && (O.x = 0), O.x > X && (O.x = X), O.y < 0 && (O.y = 0), O.y > ee && (O.y = ee), O.x += this.canvas._offset.left, O.y += this.canvas._offset.top, { left: O.x + "px", top: O.y + "px", fontSize: b + "px", charHeight: b }; + }, + /** + * @private + */ + _saveEditingProps: function() { + this._savedProps = { + hasControls: this.hasControls, + borderColor: this.borderColor, + lockMovementX: this.lockMovementX, + lockMovementY: this.lockMovementY, + hoverCursor: this.hoverCursor, + selectable: this.selectable, + defaultCursor: this.canvas && this.canvas.defaultCursor, + moveCursor: this.canvas && this.canvas.moveCursor + }; + }, + /** + * @private + */ + _restoreEditingProps: function() { + this._savedProps && (this.hoverCursor = this._savedProps.hoverCursor, this.hasControls = this._savedProps.hasControls, this.borderColor = this._savedProps.borderColor, this.selectable = this._savedProps.selectable, this.lockMovementX = this._savedProps.lockMovementX, this.lockMovementY = this._savedProps.lockMovementY, this.canvas && (this.canvas.defaultCursor = this._savedProps.defaultCursor, this.canvas.moveCursor = this._savedProps.moveCursor)); + }, + /** + * Exits from editing state + * @return {fabric.IText} thisArg + * @chainable + */ + exitEditing: function() { + var _ = this._textBeforeEdit !== this.text, E = this.hiddenTextarea; + return this.selected = !1, this.isEditing = !1, this.selectionEnd = this.selectionStart, E && (E.blur && E.blur(), E.parentNode && E.parentNode.removeChild(E)), this.hiddenTextarea = null, this.abortCursorAnimation(), this._restoreEditingProps(), this._currentCursorOpacity = 0, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()), this.fire("editing:exited"), _ && this.fire("modified"), this.canvas && (this.canvas.off("mouse:move", this.mouseMoveHandler), this.canvas.fire("text:editing:exited", { target: this }), _ && this.canvas.fire("object:modified", { target: this })), this; + }, + /** + * @private + */ + _removeExtraneousStyles: function() { + for (var _ in this.styles) + this._textLines[_] || delete this.styles[_]; + }, + /** + * remove and reflow a style block from start to end. + * @param {Number} start linear start position for removal (included in removal) + * @param {Number} end linear end position for removal ( excluded from removal ) + */ + removeStyleFromTo: function(_, E) { + var I = this.get2DCursorLocation(_, !0), w = this.get2DCursorLocation(E, !0), x = I.lineIndex, b = I.charIndex, R = w.lineIndex, M = w.charIndex, O, P; + if (x !== R) { + if (this.styles[x]) + for (O = b; O < this._unwrappedTextLines[x].length; O++) + delete this.styles[x][O]; + if (this.styles[R]) + for (O = M; O < this._unwrappedTextLines[R].length; O++) + P = this.styles[R][O], P && (this.styles[x] || (this.styles[x] = {}), this.styles[x][b + O - M] = P); + for (O = x + 1; O <= R; O++) + delete this.styles[O]; + this.shiftLineStyles(R, x - R); + } else if (this.styles[x]) { + P = this.styles[x]; + var B = M - b, H, Y; + for (O = b; O < M; O++) + delete P[O]; + for (Y in this.styles[x]) + H = parseInt(Y, 10), H >= M && (P[H - B] = P[Y], delete P[Y]); + } + }, + /** + * Shifts line styles up or down + * @param {Number} lineIndex Index of a line + * @param {Number} offset Can any number? + */ + shiftLineStyles: function(_, E) { + var I = S(this.styles); + for (var w in this.styles) { + var x = parseInt(w, 10); + x > _ && (this.styles[x + E] = I[x], I[x - E] || delete this.styles[x]); + } + }, + restartCursorIfNeeded: function() { + (!this._currentTickState || this._currentTickState.isAborted || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted) && this.initDelayedCursor(); + }, + /** + * Handle insertion of more consecutive style lines for when one or more + * newlines gets added to the text. Since current style needs to be shifted + * first we shift the current style of the number lines needed, then we add + * new lines from the last to the first. + * @param {Number} lineIndex Index of a line + * @param {Number} charIndex Index of a char + * @param {Number} qty number of lines to add + * @param {Array} copiedStyle Array of objects styles + */ + insertNewlineStyleObject: function(_, E, I, w) { + var x, b = {}, R = !1, M = this._unwrappedTextLines[_].length === E; + I || (I = 1), this.shiftLineStyles(_, I), this.styles[_] && (x = this.styles[_][E === 0 ? E : E - 1]); + for (var O in this.styles[_]) { + var P = parseInt(O, 10); + P >= E && (R = !0, b[P - E] = this.styles[_][O], M && E === 0 || delete this.styles[_][O]); + } + var B = !1; + for (R && !M && (this.styles[_ + I] = b, B = !0), B && I--; I > 0; ) + w && w[I - 1] ? this.styles[_ + I] = { 0: S(w[I - 1]) } : x ? this.styles[_ + I] = { 0: S(x) } : delete this.styles[_ + I], I--; + this._forceClearCache = !0; + }, + /** + * Inserts style object for a given line/char index + * @param {Number} lineIndex Index of a line + * @param {Number} charIndex Index of a char + * @param {Number} quantity number Style object to insert, if given + * @param {Array} copiedStyle array of style objects + */ + insertCharStyleObject: function(_, E, I, w) { + this.styles || (this.styles = {}); + var x = this.styles[_], b = x ? S(x) : {}; + I || (I = 1); + for (var R in b) { + var M = parseInt(R, 10); + M >= E && (x[M + I] = b[M], b[M - I] || delete x[M]); + } + if (this._forceClearCache = !0, w) { + for (; I--; ) + Object.keys(w[I]).length && (this.styles[_] || (this.styles[_] = {}), this.styles[_][E + I] = S(w[I])); + return; + } + if (x) + for (var O = x[E ? E - 1 : 1]; O && I--; ) + this.styles[_][E + I] = S(O); + }, + /** + * Inserts style object(s) + * @param {Array} insertedText Characters at the location where style is inserted + * @param {Number} start cursor index for inserting style + * @param {Array} [copiedStyle] array of style objects to insert. + */ + insertNewStyleBlock: function(_, E, I) { + for (var w = this.get2DCursorLocation(E, !0), x = [0], b = 0, R = 0; R < _.length; R++) + _[R] === ` +` ? (b++, x[b] = 0) : x[b]++; + x[0] > 0 && (this.insertCharStyleObject(w.lineIndex, w.charIndex, x[0], I), I = I && I.slice(x[0] + 1)), b && this.insertNewlineStyleObject( + w.lineIndex, + w.charIndex + x[0], + b + ); + for (var R = 1; R < b; R++) + x[R] > 0 ? this.insertCharStyleObject(w.lineIndex + R, 0, x[R], I) : I && (this.styles[w.lineIndex + R][0] = I[0]), I = I && I.slice(x[R] + 1); + x[R] > 0 && this.insertCharStyleObject(w.lineIndex + R, 0, x[R], I); + }, + /** + * Set the selectionStart and selectionEnd according to the new position of cursor + * mimic the key - mouse navigation when shift is pressed. + */ + setSelectionStartEndWithShift: function(_, E, I) { + I <= _ ? (E === _ ? this._selectionDirection = "left" : this._selectionDirection === "right" && (this._selectionDirection = "left", this.selectionEnd = _), this.selectionStart = I) : I > _ && I < E ? this._selectionDirection === "right" ? this.selectionEnd = I : this.selectionStart = I : (E === _ ? this._selectionDirection = "right" : this._selectionDirection === "left" && (this._selectionDirection = "right", this.selectionStart = E), this.selectionEnd = I); + }, + setSelectionInBoundaries: function() { + var _ = this.text.length; + this.selectionStart > _ ? this.selectionStart = _ : this.selectionStart < 0 && (this.selectionStart = 0), this.selectionEnd > _ ? this.selectionEnd = _ : this.selectionEnd < 0 && (this.selectionEnd = 0); + } + } + ); + }(), f.util.object.extend( + f.IText.prototype, + /** @lends fabric.IText.prototype */ + { + /** + * Initializes "dbclick" event handler + */ + initDoubleClickSimulation: function() { + this.__lastClickTime = +/* @__PURE__ */ new Date(), this.__lastLastClickTime = +/* @__PURE__ */ new Date(), this.__lastPointer = {}, this.on("mousedown", this.onMouseDown); + }, + /** + * Default event handler to simulate triple click + * @private + */ + onMouseDown: function(S) { + if (this.canvas) { + this.__newClickTime = +/* @__PURE__ */ new Date(); + var _ = S.pointer; + this.isTripleClick(_) && (this.fire("tripleclick", S), this._stopEvent(S.e)), this.__lastLastClickTime = this.__lastClickTime, this.__lastClickTime = this.__newClickTime, this.__lastPointer = _, this.__lastIsEditing = this.isEditing, this.__lastSelected = this.selected; + } + }, + isTripleClick: function(S) { + return this.__newClickTime - this.__lastClickTime < 500 && this.__lastClickTime - this.__lastLastClickTime < 500 && this.__lastPointer.x === S.x && this.__lastPointer.y === S.y; + }, + /** + * @private + */ + _stopEvent: function(S) { + S.preventDefault && S.preventDefault(), S.stopPropagation && S.stopPropagation(); + }, + /** + * Initializes event handlers related to cursor or selection + */ + initCursorSelectionHandlers: function() { + this.initMousedownHandler(), this.initMouseupHandler(), this.initClicks(); + }, + /** + * Default handler for double click, select a word + */ + doubleClickHandler: function(S) { + this.isEditing && this.selectWord(this.getSelectionStartFromPointer(S.e)); + }, + /** + * Default handler for triple click, select a line + */ + tripleClickHandler: function(S) { + this.isEditing && this.selectLine(this.getSelectionStartFromPointer(S.e)); + }, + /** + * Initializes double and triple click event handlers + */ + initClicks: function() { + this.on("mousedblclick", this.doubleClickHandler), this.on("tripleclick", this.tripleClickHandler); + }, + /** + * Default event handler for the basic functionalities needed on _mouseDown + * can be overridden to do something different. + * Scope of this implementation is: find the click position, set selectionStart + * find selectionEnd, initialize the drawing of either cursor or selection area + * initializing a mousedDown on a text area will cancel fabricjs knowledge of + * current compositionMode. It will be set to false. + */ + _mouseDownHandler: function(S) { + !this.canvas || !this.editable || S.e.button && S.e.button !== 1 || (this.__isMousedown = !0, this.selected && (this.inCompositionMode = !1, this.setCursorByClick(S.e)), this.isEditing && (this.__selectionStartOnMouseDown = this.selectionStart, this.selectionStart === this.selectionEnd && this.abortCursorAnimation(), this.renderCursorOrSelection())); + }, + /** + * Default event handler for the basic functionalities needed on mousedown:before + * can be overridden to do something different. + * Scope of this implementation is: verify the object is already selected when mousing down + */ + _mouseDownHandlerBefore: function(S) { + !this.canvas || !this.editable || S.e.button && S.e.button !== 1 || (this.selected = this === this.canvas._activeObject); + }, + /** + * Initializes "mousedown" event handler + */ + initMousedownHandler: function() { + this.on("mousedown", this._mouseDownHandler), this.on("mousedown:before", this._mouseDownHandlerBefore); + }, + /** + * Initializes "mouseup" event handler + */ + initMouseupHandler: function() { + this.on("mouseup", this.mouseUpHandler); + }, + /** + * standard handler for mouse up, overridable + * @private + */ + mouseUpHandler: function(S) { + if (this.__isMousedown = !1, !(!this.editable || this.group || S.transform && S.transform.actionPerformed || S.e.button && S.e.button !== 1)) { + if (this.canvas) { + var _ = this.canvas._activeObject; + if (_ && _ !== this) + return; + } + this.__lastSelected && !this.__corner ? (this.selected = !1, this.__lastSelected = !1, this.enterEditing(S.e), this.selectionStart === this.selectionEnd ? this.initDelayedCursor(!0) : this.renderCursorOrSelection()) : this.selected = !0; + } + }, + /** + * Changes cursor location in a text depending on passed pointer (x/y) object + * @param {Event} e Event object + */ + setCursorByClick: function(S) { + var _ = this.getSelectionStartFromPointer(S), E = this.selectionStart, I = this.selectionEnd; + S.shiftKey ? this.setSelectionStartEndWithShift(E, I, _) : (this.selectionStart = _, this.selectionEnd = _), this.isEditing && (this._fireSelectionChanged(), this._updateTextarea()); + }, + /** + * Returns index of a character corresponding to where an object was clicked + * @param {Event} e Event object + * @return {Number} Index of a character + */ + getSelectionStartFromPointer: function(S) { + for (var _ = this.getLocalPointer(S), E = 0, I = 0, w = 0, x = 0, b = 0, R, M, O = 0, P = this._textLines.length; O < P && w <= _.y; O++) + w += this.getHeightOfLine(O) * this.scaleY, b = O, O > 0 && (x += this._textLines[O - 1].length + this.missingNewlineOffset(O - 1)); + R = this._getLineLeftOffset(b), I = R * this.scaleX, M = this._textLines[b], this.direction === "rtl" && (_.x = this.width * this.scaleX - _.x + I); + for (var B = 0, H = M.length; B < H && (E = I, I += this.__charBounds[b][B].kernedWidth * this.scaleX, I <= _.x); B++) + x++; + return this._getNewSelectionStartFromOffset(_, E, I, x, H); + }, + /** + * @private + */ + _getNewSelectionStartFromOffset: function(S, _, E, I, w) { + var x = S.x - _, b = E - S.x, R = b > x || b < 0 ? 0 : 1, M = I + R; + return this.flipX && (M = w - M), M > this._text.length && (M = this._text.length), M; + } + } + ), f.util.object.extend( + f.IText.prototype, + /** @lends fabric.IText.prototype */ + { + /** + * Initializes hidden textarea (needed to bring up keyboard in iOS) + */ + initHiddenTextarea: function() { + this.hiddenTextarea = f.document.createElement("textarea"), this.hiddenTextarea.setAttribute("autocapitalize", "off"), this.hiddenTextarea.setAttribute("autocorrect", "off"), this.hiddenTextarea.setAttribute("autocomplete", "off"), this.hiddenTextarea.setAttribute("spellcheck", "false"), this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea", ""), this.hiddenTextarea.setAttribute("wrap", "off"); + var S = this._calcTextareaPosition(); + this.hiddenTextarea.style.cssText = "position: absolute; top: " + S.top + "; left: " + S.left + "; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: " + S.fontSize + ";", this.hiddenTextareaContainer ? this.hiddenTextareaContainer.appendChild(this.hiddenTextarea) : f.document.body.appendChild(this.hiddenTextarea), f.util.addListener(this.hiddenTextarea, "keydown", this.onKeyDown.bind(this)), f.util.addListener(this.hiddenTextarea, "keyup", this.onKeyUp.bind(this)), f.util.addListener(this.hiddenTextarea, "input", this.onInput.bind(this)), f.util.addListener(this.hiddenTextarea, "copy", this.copy.bind(this)), f.util.addListener(this.hiddenTextarea, "cut", this.copy.bind(this)), f.util.addListener(this.hiddenTextarea, "paste", this.paste.bind(this)), f.util.addListener(this.hiddenTextarea, "compositionstart", this.onCompositionStart.bind(this)), f.util.addListener(this.hiddenTextarea, "compositionupdate", this.onCompositionUpdate.bind(this)), f.util.addListener(this.hiddenTextarea, "compositionend", this.onCompositionEnd.bind(this)), !this._clickHandlerInitialized && this.canvas && (f.util.addListener(this.canvas.upperCanvasEl, "click", this.onClick.bind(this)), this._clickHandlerInitialized = !0); + }, + /** + * For functionalities on keyDown + * Map a special key to a function of the instance/prototype + * If you need different behaviour for ESC or TAB or arrows, you have to change + * this map setting the name of a function that you build on the fabric.Itext or + * your prototype. + * the map change will affect all Instances unless you need for only some text Instances + * in that case you have to clone this object and assign your Instance. + * this.keysMap = fabric.util.object.clone(this.keysMap); + * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0] + */ + keysMap: { + 9: "exitEditing", + 27: "exitEditing", + 33: "moveCursorUp", + 34: "moveCursorDown", + 35: "moveCursorRight", + 36: "moveCursorLeft", + 37: "moveCursorLeft", + 38: "moveCursorUp", + 39: "moveCursorRight", + 40: "moveCursorDown" + }, + keysMapRtl: { + 9: "exitEditing", + 27: "exitEditing", + 33: "moveCursorUp", + 34: "moveCursorDown", + 35: "moveCursorLeft", + 36: "moveCursorRight", + 37: "moveCursorRight", + 38: "moveCursorUp", + 39: "moveCursorLeft", + 40: "moveCursorDown" + }, + /** + * For functionalities on keyUp + ctrl || cmd + */ + ctrlKeysMapUp: { + 67: "copy", + 88: "cut" + }, + /** + * For functionalities on keyDown + ctrl || cmd + */ + ctrlKeysMapDown: { + 65: "selectAll" + }, + onClick: function() { + this.hiddenTextarea && this.hiddenTextarea.focus(); + }, + /** + * Handles keydown event + * only used for arrows and combination of modifier keys. + * @param {Event} e Event object + */ + onKeyDown: function(S) { + if (this.isEditing) { + var _ = this.direction === "rtl" ? this.keysMapRtl : this.keysMap; + if (S.keyCode in _) + this[_[S.keyCode]](S); + else if (S.keyCode in this.ctrlKeysMapDown && (S.ctrlKey || S.metaKey)) + this[this.ctrlKeysMapDown[S.keyCode]](S); + else + return; + S.stopImmediatePropagation(), S.preventDefault(), S.keyCode >= 33 && S.keyCode <= 40 ? (this.inCompositionMode = !1, this.clearContextTop(), this.renderCursorOrSelection()) : this.canvas && this.canvas.requestRenderAll(); + } + }, + /** + * Handles keyup event + * We handle KeyUp because ie11 and edge have difficulties copy/pasting + * if a copy/cut event fired, keyup is dismissed + * @param {Event} e Event object + */ + onKeyUp: function(S) { + if (!this.isEditing || this._copyDone || this.inCompositionMode) { + this._copyDone = !1; + return; + } + if (S.keyCode in this.ctrlKeysMapUp && (S.ctrlKey || S.metaKey)) + this[this.ctrlKeysMapUp[S.keyCode]](S); + else + return; + S.stopImmediatePropagation(), S.preventDefault(), this.canvas && this.canvas.requestRenderAll(); + }, + /** + * Handles onInput event + * @param {Event} e Event object + */ + onInput: function(S) { + var _ = this.fromPaste; + if (this.fromPaste = !1, S && S.stopPropagation(), !!this.isEditing) { + var E = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText, I = this._text.length, w = E.length, x, b, R = w - I, M = this.selectionStart, O = this.selectionEnd, P = M !== O, B, H, Y; + if (this.hiddenTextarea.value === "") { + this.styles = {}, this.updateFromTextArea(), this.fire("changed"), this.canvas && (this.canvas.fire("text:changed", { target: this }), this.canvas.requestRenderAll()); + return; + } + var X = this.fromStringToGraphemeSelection( + this.hiddenTextarea.selectionStart, + this.hiddenTextarea.selectionEnd, + this.hiddenTextarea.value + ), ee = M > X.selectionStart; + P ? (x = this._text.slice(M, O), R += O - M) : w < I && (ee ? x = this._text.slice(O + R, O) : x = this._text.slice(M, M - R)), b = E.slice(X.selectionEnd - R, X.selectionEnd), x && x.length && (b.length && (B = this.getSelectionStyles(M, M + 1, !1), B = b.map(function() { + return B[0]; + })), P ? (H = M, Y = O) : ee ? (H = O - x.length, Y = O) : (H = O, Y = O + x.length), this.removeStyleFromTo(H, Y)), b.length && (_ && b.join("") === f.copiedText && !f.disableStyleCopyPaste && (B = f.copiedTextStyle), this.insertNewStyleBlock(b, M, B)), this.updateFromTextArea(), this.fire("changed"), this.canvas && (this.canvas.fire("text:changed", { target: this }), this.canvas.requestRenderAll()); + } + }, + /** + * Composition start + */ + onCompositionStart: function() { + this.inCompositionMode = !0; + }, + /** + * Composition end + */ + onCompositionEnd: function() { + this.inCompositionMode = !1; + }, + // /** + // * Composition update + // */ + onCompositionUpdate: function(S) { + this.compositionStart = S.target.selectionStart, this.compositionEnd = S.target.selectionEnd, this.updateTextareaPosition(); + }, + /** + * Copies selected text + * @param {Event} e Event object + */ + copy: function() { + this.selectionStart !== this.selectionEnd && (f.copiedText = this.getSelectedText(), f.disableStyleCopyPaste ? f.copiedTextStyle = null : f.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, !0), this._copyDone = !0); + }, + /** + * Pastes text + * @param {Event} e Event object + */ + paste: function() { + this.fromPaste = !0; + }, + /** + * @private + * @param {Event} e Event object + * @return {Object} Clipboard data object + */ + _getClipboardData: function(S) { + return S && S.clipboardData || f.window.clipboardData; + }, + /** + * Finds the width in pixels before the cursor on the same line + * @private + * @param {Number} lineIndex + * @param {Number} charIndex + * @return {Number} widthBeforeCursor width before cursor + */ + _getWidthBeforeCursor: function(S, _) { + var E = this._getLineLeftOffset(S), I; + return _ > 0 && (I = this.__charBounds[S][_ - 1], E += I.left + I.width), E; + }, + /** + * Gets start offset of a selection + * @param {Event} e Event object + * @param {Boolean} isRight + * @return {Number} + */ + getDownCursorOffset: function(S, _) { + var E = this._getSelectionForOffset(S, _), I = this.get2DCursorLocation(E), w = I.lineIndex; + if (w === this._textLines.length - 1 || S.metaKey || S.keyCode === 34) + return this._text.length - E; + var x = I.charIndex, b = this._getWidthBeforeCursor(w, x), R = this._getIndexOnLine(w + 1, b), M = this._textLines[w].slice(x); + return M.length + R + 1 + this.missingNewlineOffset(w); + }, + /** + * private + * Helps finding if the offset should be counted from Start or End + * @param {Event} e Event object + * @param {Boolean} isRight + * @return {Number} + */ + _getSelectionForOffset: function(S, _) { + return S.shiftKey && this.selectionStart !== this.selectionEnd && _ ? this.selectionEnd : this.selectionStart; + }, + /** + * @param {Event} e Event object + * @param {Boolean} isRight + * @return {Number} + */ + getUpCursorOffset: function(S, _) { + var E = this._getSelectionForOffset(S, _), I = this.get2DCursorLocation(E), w = I.lineIndex; + if (w === 0 || S.metaKey || S.keyCode === 33) + return -E; + var x = I.charIndex, b = this._getWidthBeforeCursor(w, x), R = this._getIndexOnLine(w - 1, b), M = this._textLines[w].slice(0, x), O = this.missingNewlineOffset(w - 1); + return -this._textLines[w - 1].length + R - M.length + (1 - O); + }, + /** + * for a given width it founds the matching character. + * @private + */ + _getIndexOnLine: function(S, _) { + for (var E = this._textLines[S], I = this._getLineLeftOffset(S), w = I, x = 0, b, R, M = 0, O = E.length; M < O; M++) + if (b = this.__charBounds[S][M].width, w += b, w > _) { + R = !0; + var P = w - b, B = w, H = Math.abs(P - _), Y = Math.abs(B - _); + x = Y < H ? M : M - 1; + break; + } + return R || (x = E.length - 1), x; + }, + /** + * Moves cursor down + * @param {Event} e Event object + */ + moveCursorDown: function(S) { + this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorUpOrDown("Down", S); + }, + /** + * Moves cursor up + * @param {Event} e Event object + */ + moveCursorUp: function(S) { + this.selectionStart === 0 && this.selectionEnd === 0 || this._moveCursorUpOrDown("Up", S); + }, + /** + * Moves cursor up or down, fires the events + * @param {String} direction 'Up' or 'Down' + * @param {Event} e Event object + */ + _moveCursorUpOrDown: function(S, _) { + var E = "get" + S + "CursorOffset", I = this[E](_, this._selectionDirection === "right"); + _.shiftKey ? this.moveCursorWithShift(I) : this.moveCursorWithoutShift(I), I !== 0 && (this.setSelectionInBoundaries(), this.abortCursorAnimation(), this._currentCursorOpacity = 1, this.initDelayedCursor(), this._fireSelectionChanged(), this._updateTextarea()); + }, + /** + * Moves cursor with shift + * @param {Number} offset + */ + moveCursorWithShift: function(S) { + var _ = this._selectionDirection === "left" ? this.selectionStart + S : this.selectionEnd + S; + return this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, _), S !== 0; + }, + /** + * Moves cursor up without shift + * @param {Number} offset + */ + moveCursorWithoutShift: function(S) { + return S < 0 ? (this.selectionStart += S, this.selectionEnd = this.selectionStart) : (this.selectionEnd += S, this.selectionStart = this.selectionEnd), S !== 0; + }, + /** + * Moves cursor left + * @param {Event} e Event object + */ + moveCursorLeft: function(S) { + this.selectionStart === 0 && this.selectionEnd === 0 || this._moveCursorLeftOrRight("Left", S); + }, + /** + * @private + * @return {Boolean} true if a change happened + */ + _move: function(S, _, E) { + var I; + if (S.altKey) + I = this["findWordBoundary" + E](this[_]); + else if (S.metaKey || S.keyCode === 35 || S.keyCode === 36) + I = this["findLineBoundary" + E](this[_]); + else + return this[_] += E === "Left" ? -1 : 1, !0; + if (typeof I !== void 0 && this[_] !== I) + return this[_] = I, !0; + }, + /** + * @private + */ + _moveLeft: function(S, _) { + return this._move(S, _, "Left"); + }, + /** + * @private + */ + _moveRight: function(S, _) { + return this._move(S, _, "Right"); + }, + /** + * Moves cursor left without keeping selection + * @param {Event} e + */ + moveCursorLeftWithoutShift: function(S) { + var _ = !0; + return this._selectionDirection = "left", this.selectionEnd === this.selectionStart && this.selectionStart !== 0 && (_ = this._moveLeft(S, "selectionStart")), this.selectionEnd = this.selectionStart, _; + }, + /** + * Moves cursor left while keeping selection + * @param {Event} e + */ + moveCursorLeftWithShift: function(S) { + if (this._selectionDirection === "right" && this.selectionStart !== this.selectionEnd) + return this._moveLeft(S, "selectionEnd"); + if (this.selectionStart !== 0) + return this._selectionDirection = "left", this._moveLeft(S, "selectionStart"); + }, + /** + * Moves cursor right + * @param {Event} e Event object + */ + moveCursorRight: function(S) { + this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorLeftOrRight("Right", S); + }, + /** + * Moves cursor right or Left, fires event + * @param {String} direction 'Left', 'Right' + * @param {Event} e Event object + */ + _moveCursorLeftOrRight: function(S, _) { + var E = "moveCursor" + S + "With"; + this._currentCursorOpacity = 1, _.shiftKey ? E += "Shift" : E += "outShift", this[E](_) && (this.abortCursorAnimation(), this.initDelayedCursor(), this._fireSelectionChanged(), this._updateTextarea()); + }, + /** + * Moves cursor right while keeping selection + * @param {Event} e + */ + moveCursorRightWithShift: function(S) { + if (this._selectionDirection === "left" && this.selectionStart !== this.selectionEnd) + return this._moveRight(S, "selectionStart"); + if (this.selectionEnd !== this._text.length) + return this._selectionDirection = "right", this._moveRight(S, "selectionEnd"); + }, + /** + * Moves cursor right without keeping selection + * @param {Event} e Event object + */ + moveCursorRightWithoutShift: function(S) { + var _ = !0; + return this._selectionDirection = "right", this.selectionStart === this.selectionEnd ? (_ = this._moveRight(S, "selectionStart"), this.selectionEnd = this.selectionStart) : this.selectionStart = this.selectionEnd, _; + }, + /** + * Removes characters from start/end + * start/end ar per grapheme position in _text array. + * + * @param {Number} start + * @param {Number} end default to start + 1 + */ + removeChars: function(S, _) { + typeof _ == "undefined" && (_ = S + 1), this.removeStyleFromTo(S, _), this._text.splice(S, _ - S), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()), this._removeExtraneousStyles(); + }, + /** + * insert characters at start position, before start position. + * start equal 1 it means the text get inserted between actual grapheme 0 and 1 + * if style array is provided, it must be as the same length of text in graphemes + * if end is provided and is bigger than start, old text is replaced. + * start/end ar per grapheme position in _text array. + * + * @param {String} text text to insert + * @param {Array} style array of style objects + * @param {Number} start + * @param {Number} end default to start + 1 + */ + insertChars: function(S, _, E, I) { + typeof I == "undefined" && (I = E), I > E && this.removeStyleFromTo(E, I); + var w = f.util.string.graphemeSplit(S); + this.insertNewStyleBlock(w, E, _), this._text = [].concat(this._text.slice(0, E), w, this._text.slice(I)), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()), this._removeExtraneousStyles(); + } + } + ), function() { + var S = f.util.toFixed, _ = / +/g; + f.util.object.extend( + f.Text.prototype, + /** @lends fabric.Text.prototype */ + { + /** + * Returns SVG representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + _toSVG: function() { + var E = this._getSVGLeftTopOffsets(), I = this._getSVGTextAndBg(E.textTop, E.textLeft); + return this._wrapSVGTextAndBg(I); + }, + /** + * Returns svg representation of an instance + * @param {Function} [reviver] Method for further parsing of svg representation. + * @return {String} svg representation of an instance + */ + toSVG: function(E) { + return this._createBaseSVGMarkup( + this._toSVG(), + { reviver: E, noStyle: !0, withShadow: !0 } + ); + }, + /** + * @private + */ + _getSVGLeftTopOffsets: function() { + return { + textLeft: -this.width / 2, + textTop: -this.height / 2, + lineTop: this.getHeightOfLine(0) + }; + }, + /** + * @private + */ + _wrapSVGTextAndBg: function(E) { + var I = !0, w = this.getSvgTextDecoration(this); + return [ + E.textBgRects.join(""), + ' ", + E.textSpans.join(""), + ` +` + ]; + }, + /** + * @private + * @param {Number} textTopOffset Text top offset + * @param {Number} textLeftOffset Text left offset + * @return {Object} + */ + _getSVGTextAndBg: function(E, I) { + var w = [], x = [], b = E, R; + this._setSVGBg(x); + for (var M = 0, O = this._textLines.length; M < O; M++) + R = this._getLineLeftOffset(M), (this.textBackgroundColor || this.styleHas("textBackgroundColor", M)) && this._setSVGTextLineBg(x, M, I + R, b), this._setSVGTextLineText(w, M, I + R, b), b += this.getHeightOfLine(M); + return { + textSpans: w, + textBgRects: x + }; + }, + /** + * @private + */ + _createTextCharSpan: function(E, I, w, x) { + var b = E !== E.trim() || E.match(_), R = this.getSvgSpanStyles(I, b), M = R ? 'style="' + R + '"' : "", O = I.deltaY, P = "", B = f.Object.NUM_FRACTION_DIGITS; + return O && (P = ' dy="' + S(O, B) + '" '), [ + '", + f.util.string.escapeXml(E), + "" + ].join(""); + }, + _setSVGTextLineText: function(E, I, w, x) { + var b = this.getHeightOfLine(I), R = this.textAlign.indexOf("justify") !== -1, M, O, P = "", B, H, Y = 0, X = this._textLines[I], ee; + x += b * (1 - this._fontSizeFraction) / this.lineHeight; + for (var ae = 0, J = X.length - 1; ae <= J; ae++) + ee = ae === J || this.charSpacing, P += X[ae], B = this.__charBounds[I][ae], Y === 0 ? (w += B.kernedWidth - B.width, Y += B.width) : Y += B.kernedWidth, R && !ee && this._reSpaceAndTab.test(X[ae]) && (ee = !0), ee || (M = M || this.getCompleteStyleDeclaration(I, ae), O = this.getCompleteStyleDeclaration(I, ae + 1), ee = this._hasStyleChangedForSvg(M, O)), ee && (H = this._getStyleDeclaration(I, ae) || {}, E.push(this._createTextCharSpan(P, H, w, x)), P = "", M = O, w += Y, Y = 0); + }, + _pushTextBgRect: function(E, I, w, x, b, R) { + var M = f.Object.NUM_FRACTION_DIGITS; + E.push( + " +` + ); + }, + _setSVGTextLineBg: function(E, I, w, x) { + for (var b = this._textLines[I], R = this.getHeightOfLine(I) / this.lineHeight, M = 0, O = 0, P, B, H = this.getValueOfPropertyAt(I, 0, "textBackgroundColor"), Y = 0, X = b.length; Y < X; Y++) + P = this.__charBounds[I][Y], B = this.getValueOfPropertyAt(I, Y, "textBackgroundColor"), B !== H ? (H && this._pushTextBgRect( + E, + H, + w + O, + x, + M, + R + ), O = P.left, M = P.width, H = B) : M += P.kernedWidth; + B && this._pushTextBgRect( + E, + B, + w + O, + x, + M, + R + ); + }, + /** + * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values + * we work around it by "moving" alpha channel into opacity attribute and setting fill's alpha to 1 + * + * @private + * @param {*} value + * @return {String} + */ + _getFillAttributes: function(E) { + var I = E && typeof E == "string" ? new f.Color(E) : ""; + return !I || !I.getSource() || I.getAlpha() === 1 ? 'fill="' + E + '"' : 'opacity="' + I.getAlpha() + '" fill="' + I.setAlpha(1).toRgb() + '"'; + }, + /** + * @private + */ + _getSVGLineTopOffset: function(E) { + for (var I = 0, w = 0, x = 0; x < E; x++) + I += this.getHeightOfLine(x); + return w = this.getHeightOfLine(x), { + lineTop: I, + offset: (this._fontSizeMult - this._fontSizeFraction) * w / (this.lineHeight * this._fontSizeMult) + }; + }, + /** + * Returns styles-string for svg-export + * @param {Boolean} skipShadow a boolean to skip shadow filter output + * @return {String} + */ + getSvgStyles: function(E) { + var I = f.Object.prototype.getSvgStyles.call(this, E); + return I + " white-space: pre;"; + } + } + ); + }(), function(S) { + var _ = S.fabric || (S.fabric = {}); + _.Textbox = _.util.createClass(_.IText, _.Observable, { + /** + * Type of an object + * @type String + * @default + */ + type: "textbox", + /** + * Minimum width of textbox, in pixels. + * @type Number + * @default + */ + minWidth: 20, + /** + * Minimum calculated width of a textbox, in pixels. + * fixed to 2 so that an empty textbox cannot go to 0 + * and is still selectable without text. + * @type Number + * @default + */ + dynamicMinWidth: 2, + /** + * Cached array of text wrapping. + * @type Array + */ + __cachedLines: null, + /** + * Override standard Object class values + */ + lockScalingFlip: !0, + /** + * Override standard Object class values + * Textbox needs this on false + */ + noScaleCache: !1, + /** + * Properties which when set cause object to change dimensions + * @type Object + * @private + */ + _dimensionAffectingProps: _.Text.prototype._dimensionAffectingProps.concat("width"), + /** + * Use this regular expression to split strings in breakable lines + * @private + */ + _wordJoiners: /[ \t\r]/, + /** + * Use this boolean property in order to split strings that have no white space concept. + * this is a cheap way to help with chinese/japanese + * @type Boolean + * @since 2.6.0 + */ + splitByGrapheme: !1, + /** + * Unlike superclass's version of this function, Textbox does not update + * its width. + * @private + * @override + */ + initDimensions: function() { + this.__skipDimension || (this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this._clearCache(), this.dynamicMinWidth = 0, this._styleMap = this._generateStyleMap(this._splitText()), this.dynamicMinWidth > this.width && this._set("width", this.dynamicMinWidth), this.textAlign.indexOf("justify") !== -1 && this.enlargeSpaces(), this.height = this.calcTextHeight(), this.saveState({ propertySet: "_dimensionAffectingProps" })); + }, + /** + * Generate an object that translates the style object so that it is + * broken up by visual lines (new lines and automatic wrapping). + * The original text styles object is broken up by actual lines (new lines only), + * which is only sufficient for Text / IText + * @private + */ + _generateStyleMap: function(E) { + for (var I = 0, w = 0, x = 0, b = {}, R = 0; R < E.graphemeLines.length; R++) + E.graphemeText[x] === ` +` && R > 0 ? (w = 0, x++, I++) : !this.splitByGrapheme && this._reSpaceAndTab.test(E.graphemeText[x]) && R > 0 && (w++, x++), b[R] = { line: I, offset: w }, x += E.graphemeLines[R].length, w += E.graphemeLines[R].length; + return b; + }, + /** + * Returns true if object has a style property or has it on a specified line + * @param {Number} lineIndex + * @return {Boolean} + */ + styleHas: function(E, I) { + if (this._styleMap && !this.isWrapping) { + var w = this._styleMap[I]; + w && (I = w.line); + } + return _.Text.prototype.styleHas.call(this, E, I); + }, + /** + * Returns true if object has no styling or no styling in a line + * @param {Number} lineIndex , lineIndex is on wrapped lines. + * @return {Boolean} + */ + isEmptyStyles: function(E) { + if (!this.styles) + return !0; + var I = 0, w = E + 1, x, b, R = !1, M = this._styleMap[E], O = this._styleMap[E + 1]; + M && (E = M.line, I = M.offset), O && (w = O.line, R = w === E, x = O.offset), b = typeof E == "undefined" ? this.styles : { line: this.styles[E] }; + for (var P in b) + for (var B in b[P]) + if (B >= I && (!R || B < x)) + for (var H in b[P][B]) + return !1; + return !0; + }, + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @private + */ + _getStyleDeclaration: function(E, I) { + if (this._styleMap && !this.isWrapping) { + var w = this._styleMap[E]; + if (!w) + return null; + E = w.line, I = w.offset + I; + } + return this.callSuper("_getStyleDeclaration", E, I); + }, + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @param {Object} style + * @private + */ + _setStyleDeclaration: function(E, I, w) { + var x = this._styleMap[E]; + E = x.line, I = x.offset + I, this.styles[E][I] = w; + }, + /** + * @param {Number} lineIndex + * @param {Number} charIndex + * @private + */ + _deleteStyleDeclaration: function(E, I) { + var w = this._styleMap[E]; + E = w.line, I = w.offset + I, delete this.styles[E][I]; + }, + /** + * probably broken need a fix + * Returns the real style line that correspond to the wrapped lineIndex line + * Used just to verify if the line does exist or not. + * @param {Number} lineIndex + * @returns {Boolean} if the line exists or not + * @private + */ + _getLineStyle: function(E) { + var I = this._styleMap[E]; + return !!this.styles[I.line]; + }, + /** + * Set the line style to an empty object so that is initialized + * @param {Number} lineIndex + * @param {Object} style + * @private + */ + _setLineStyle: function(E) { + var I = this._styleMap[E]; + this.styles[I.line] = {}; + }, + /** + * Wraps text using the 'width' property of Textbox. First this function + * splits text on newlines, so we preserve newlines entered by the user. + * Then it wraps each line using the width of the Textbox by calling + * _wrapLine(). + * @param {Array} lines The string array of text that is split into lines + * @param {Number} desiredWidth width you want to wrap to + * @returns {Array} Array of lines + */ + _wrapText: function(E, I) { + var w = [], x; + for (this.isWrapping = !0, x = 0; x < E.length; x++) + w = w.concat(this._wrapLine(E[x], x, I)); + return this.isWrapping = !1, w; + }, + /** + * Helper function to measure a string of text, given its lineIndex and charIndex offset + * it gets called when charBounds are not available yet. + * @param {CanvasRenderingContext2D} ctx + * @param {String} text + * @param {number} lineIndex + * @param {number} charOffset + * @returns {number} + * @private + */ + _measureWord: function(E, I, w) { + var x = 0, b, R = !0; + w = w || 0; + for (var M = 0, O = E.length; M < O; M++) { + var P = this._getGraphemeBox(E[M], I, M + w, b, R); + x += P.kernedWidth, b = E[M]; + } + return x; + }, + /** + * Wraps a line of text using the width of the Textbox and a context. + * @param {Array} line The grapheme array that represent the line + * @param {Number} lineIndex + * @param {Number} desiredWidth width you want to wrap the line to + * @param {Number} reservedSpace space to remove from wrapping for custom functionalities + * @returns {Array} Array of line(s) into which the given text is wrapped + * to. + */ + _wrapLine: function(E, I, w, fe) { + var b = 0, R = this.splitByGrapheme, M = [], O = [], P = R ? _.util.string.graphemeSplit(E) : E.split(this._wordJoiners), B = "", H = 0, Y = R ? "" : " ", X = 0, ee = 0, ae = 0, J = !0, ne = this._getWidthOfCharSpacing(), fe = fe || 0; + P.length === 0 && P.push([]), w -= fe; + for (var de = 0; de < P.length; de++) + B = R ? P[de] : _.util.string.graphemeSplit(P[de]), X = this._measureWord(B, I, H), H += B.length, b += ee + X - ne, b > w && !J ? (M.push(O), O = [], b = X, J = !0) : b += ne, !J && !R && O.push(Y), O = O.concat(B), ee = R ? 0 : this._measureWord([Y], I, H), H++, J = !1, X > ae && (ae = X); + return de && M.push(O), ae + fe > this.dynamicMinWidth && (this.dynamicMinWidth = ae - ne + fe), M; + }, + /** + * Detect if the text line is ended with an hard break + * text and itext do not have wrapping, return false + * @param {Number} lineIndex text to split + * @return {Boolean} + */ + isEndOfWrapping: function(E) { + return !this._styleMap[E + 1] || this._styleMap[E + 1].line !== this._styleMap[E].line; + }, + /** + * Detect if a line has a linebreak and so we need to account for it when moving + * and counting style. + * @return Number + */ + missingNewlineOffset: function(E) { + return this.splitByGrapheme ? this.isEndOfWrapping(E) ? 1 : 0 : 1; + }, + /** + * Gets lines of text to render in the Textbox. This function calculates + * text wrapping on the fly every time it is called. + * @param {String} text text to split + * @returns {Array} Array of lines in the Textbox. + * @override + */ + _splitTextIntoLines: function(E) { + for (var I = _.Text.prototype._splitTextIntoLines.call(this, E), w = this._wrapText(I.lines, this.width), x = new Array(w.length), b = 0; b < w.length; b++) + x[b] = w[b].join(""); + return I.lines = x, I.graphemeLines = w, I; + }, + getMinWidth: function() { + return Math.max(this.minWidth, this.dynamicMinWidth); + }, + _removeExtraneousStyles: function() { + var E = {}; + for (var I in this._styleMap) + this._textLines[I] && (E[this._styleMap[I].line] = 1); + for (var I in this.styles) + E[I] || delete this.styles[I]; + }, + /** + * Returns object representation of an instance + * @method toObject + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject: function(E) { + return this.callSuper("toObject", ["minWidth", "splitByGrapheme"].concat(E)); + } + }), _.Textbox.fromObject = function(E, I) { + return _.Object._fromObject("Textbox", E, I, "text"); + }; + }(u), function() { + var S = f.controlsUtils, _ = S.scaleSkewCursorStyleHandler, E = S.scaleCursorStyleHandler, I = S.scalingEqually, w = S.scalingYOrSkewingX, x = S.scalingXOrSkewingY, b = S.scaleOrSkewActionName, R = f.Object.prototype.controls; + if (R.ml = new f.Control({ + x: -0.5, + y: 0, + cursorStyleHandler: _, + actionHandler: x, + getActionName: b + }), R.mr = new f.Control({ + x: 0.5, + y: 0, + cursorStyleHandler: _, + actionHandler: x, + getActionName: b + }), R.mb = new f.Control({ + x: 0, + y: 0.5, + cursorStyleHandler: _, + actionHandler: w, + getActionName: b + }), R.mt = new f.Control({ + x: 0, + y: -0.5, + cursorStyleHandler: _, + actionHandler: w, + getActionName: b + }), R.tl = new f.Control({ + x: -0.5, + y: -0.5, + cursorStyleHandler: E, + actionHandler: I + }), R.tr = new f.Control({ + x: 0.5, + y: -0.5, + cursorStyleHandler: E, + actionHandler: I + }), R.bl = new f.Control({ + x: -0.5, + y: 0.5, + cursorStyleHandler: E, + actionHandler: I + }), R.br = new f.Control({ + x: 0.5, + y: 0.5, + cursorStyleHandler: E, + actionHandler: I + }), R.mtr = new f.Control({ + x: 0, + y: -0.5, + actionHandler: S.rotationWithSnapping, + cursorStyleHandler: S.rotationStyleHandler, + offsetY: -40, + withConnection: !0, + actionName: "rotate" + }), f.Textbox) { + var M = f.Textbox.prototype.controls = {}; + M.mtr = R.mtr, M.tr = R.tr, M.br = R.br, M.tl = R.tl, M.bl = R.bl, M.mt = R.mt, M.mb = R.mb, M.mr = new f.Control({ + x: 0.5, + y: 0, + actionHandler: S.changeWidth, + cursorStyleHandler: _, + actionName: "resizing" + }), M.ml = new f.Control({ + x: -0.5, + y: 0, + actionHandler: S.changeWidth, + cursorStyleHandler: _, + actionName: "resizing" + }); + } + }(); + } + ), + /***/ + 3053: ( + /***/ + function(l, u, d) { + var f = d(602); + function g(v, y, C) { + var A, S; + if (C = C || 0, !f(y)) + return -1; + if (Array.prototype.indexOf) + return Array.prototype.indexOf.call(y, v, C); + for (S = y.length, A = C; C >= 0 && A < S; A += 1) + if (y[A] === v) + return A; + return -1; + } + l.exports = g; + } + ), + /***/ + 8592: ( + /***/ + function(l, u, d) { + var f = d(602), g = d(6092), v = d(5573); + function y(C, A, S) { + f(C) ? g(C, A, S) : v(C, A, S); + } + l.exports = y; + } + ), + /***/ + 6092: ( + /***/ + function(l) { + function u(d, f, g) { + var v = 0, y = d.length; + for (g = g || null; v < y && f.call(g, d[v], v, d) !== !1; v += 1) + ; + } + l.exports = u; + } + ), + /***/ + 5573: ( + /***/ + function(l) { + function u(d, f, g) { + var v; + g = g || null; + for (v in d) + if (d.hasOwnProperty(v) && f.call(g, d[v], v, d) === !1) + break; + } + l.exports = u; + } + ), + /***/ + 9052: ( + /***/ + function(l, u, d) { + var f = d(961), g = d(9886), v = d(2560), y = d(5393), C = d(602), A = d(5183), S = d(8592), _ = /\s+/g; + function E() { + this.events = null, this.contexts = null; + } + E.mixin = function(I) { + f(I.prototype, E.prototype); + }, E.prototype._getHandlerItem = function(I, w) { + var x = { handler: I }; + return w && (x.context = w), x; + }, E.prototype._safeEvent = function(I) { + var w = this.events, x; + return w || (w = this.events = {}), I && (x = w[I], x || (x = [], w[I] = x), w = x), w; + }, E.prototype._safeContext = function() { + var I = this.contexts; + return I || (I = this.contexts = []), I; + }, E.prototype._indexOfContext = function(I) { + for (var w = this._safeContext(), x = 0; w[x]; ) { + if (I === w[x][0]) + return x; + x += 1; + } + return -1; + }, E.prototype._memorizeContext = function(I) { + var w, x; + g(I) && (w = this._safeContext(), x = this._indexOfContext(I), x > -1 ? w[x][1] += 1 : w.push([I, 1])); + }, E.prototype._forgetContext = function(I) { + var w, x; + g(I) && (w = this._safeContext(), x = this._indexOfContext(I), x > -1 && (w[x][1] -= 1, w[x][1] <= 0 && w.splice(x, 1))); + }, E.prototype._bindEvent = function(I, w, x) { + var b = this._safeEvent(I); + this._memorizeContext(x), b.push(this._getHandlerItem(w, x)); + }, E.prototype.on = function(I, w, x) { + var b = this; + v(I) ? (I = I.split(_), S(I, function(R) { + b._bindEvent(R, w, x); + })) : y(I) && (x = w, S(I, function(R, M) { + b.on(M, R, x); + })); + }, E.prototype.once = function(I, w, x) { + var b = this; + if (y(I)) { + x = w, S(I, function(M, O) { + b.once(O, M, x); + }); + return; + } + function R() { + w.apply(x, arguments), b.off(I, R, x); + } + this.on(I, R, x); + }, E.prototype._spliceMatches = function(I, w) { + var x = 0, b; + if (C(I)) + for (b = I.length; x < b; x += 1) + w(I[x]) === !0 && (I.splice(x, 1), b -= 1, x -= 1); + }, E.prototype._matchHandler = function(I) { + var w = this; + return function(x) { + var b = I === x.handler; + return b && w._forgetContext(x.context), b; + }; + }, E.prototype._matchContext = function(I) { + var w = this; + return function(x) { + var b = I === x.context; + return b && w._forgetContext(x.context), b; + }; + }, E.prototype._matchHandlerAndContext = function(I, w) { + var x = this; + return function(b) { + var R = I === b.handler, M = w === b.context, O = R && M; + return O && x._forgetContext(b.context), O; + }; + }, E.prototype._offByEventName = function(I, w) { + var x = this, b = A(w), R = x._matchHandler(w); + I = I.split(_), S(I, function(M) { + var O = x._safeEvent(M); + b ? x._spliceMatches(O, R) : (S(O, function(P) { + x._forgetContext(P.context); + }), x.events[M] = []); + }); + }, E.prototype._offByHandler = function(I) { + var w = this, x = this._matchHandler(I); + S(this._safeEvent(), function(b) { + w._spliceMatches(b, x); + }); + }, E.prototype._offByObject = function(I, w) { + var x = this, b; + this._indexOfContext(I) < 0 ? S(I, function(R, M) { + x.off(M, R); + }) : v(w) ? (b = this._matchContext(I), x._spliceMatches(this._safeEvent(w), b)) : A(w) ? (b = this._matchHandlerAndContext(w, I), S(this._safeEvent(), function(R) { + x._spliceMatches(R, b); + })) : (b = this._matchContext(I), S(this._safeEvent(), function(R) { + x._spliceMatches(R, b); + })); + }, E.prototype.off = function(I, w) { + v(I) ? this._offByEventName(I, w) : arguments.length ? A(I) ? this._offByHandler(I) : y(I) && this._offByObject(I, w) : (this.events = {}, this.contexts = []); + }, E.prototype.fire = function(I) { + this.invoke.apply(this, arguments); + }, E.prototype.invoke = function(I) { + var w, x, b, R; + if (!this.hasListener(I)) + return !0; + for (w = this._safeEvent(I), x = Array.prototype.slice.call(arguments, 1), b = 0; w[b]; ) { + if (R = w[b], R.handler.apply(R.context, x) === !1) + return !1; + b += 1; + } + return !0; + }, E.prototype.hasListener = function(I) { + return this.getListenerLength(I) > 0; + }, E.prototype.getListenerLength = function(I) { + var w = this._safeEvent(I); + return w.length; + }, l.exports = E; + } + ), + /***/ + 961: ( + /***/ + function(l) { + function u(d, f) { + var g = Object.prototype.hasOwnProperty, v, y, C, A; + for (C = 1, A = arguments.length; C < A; C += 1) { + v = arguments[C]; + for (y in v) + g.call(v, y) && (d[y] = v[y]); + } + return d; + } + l.exports = u; + } + ), + /***/ + 1610: ( + /***/ + function(l, u, d) { + var f = d(5695), g = d(3778); + function v(y, C) { + for (var A = arguments, S = A[0], _ = 1, E = A.length; _ < E; _ += 1) { + if (f(S) || g(S)) + return; + S = S[A[_]]; + } + return S; + } + l.exports = v; + } + ), + /***/ + 4564: ( + /***/ + function(l, u, d) { + var f = d(5573); + function g(v, y) { + var C = document.createElement("img"), A = ""; + return f(y, function(S, _) { + A += "&" + _ + "=" + S; + }), A = A.substring(1), C.src = v + "?" + A, C.style.display = "none", document.body.appendChild(C), document.body.removeChild(C), C; + } + l.exports = g; + } + ), + /***/ + 4729: ( + /***/ + function(l, u, d) { + var f = d(5695), g = d(4564), v = 7 * 24 * 60 * 60 * 1e3; + function y(A) { + var S = (/* @__PURE__ */ new Date()).getTime(); + return S - A > v; + } + function C(A, S) { + var _ = "https://www.google-analytics.com/collect", E = location.hostname, I = "event", w = "use", x = "TOAST UI " + A + " for " + E + ": Statistics", b = window.localStorage.getItem(x); + !f(window.tui) && window.tui.usageStatistics === !1 || b && !y(b) || (window.localStorage.setItem(x, (/* @__PURE__ */ new Date()).getTime()), setTimeout(function() { + (document.readyState === "interactive" || document.readyState === "complete") && g(_, { + v: 1, + t: I, + tid: S, + cid: E, + dp: E, + dh: A, + el: A, + ec: w + }); + }, 1e3)); + } + l.exports = C; + } + ), + /***/ + 602: ( + /***/ + function(l) { + function u(d) { + return d instanceof Array; + } + l.exports = u; + } + ), + /***/ + 9886: ( + /***/ + function(l, u, d) { + var f = d(5695), g = d(3778); + function v(y) { + return !f(y) && !g(y); + } + l.exports = v; + } + ), + /***/ + 5183: ( + /***/ + function(l) { + function u(d) { + return d instanceof Function; + } + l.exports = u; + } + ), + /***/ + 3778: ( + /***/ + function(l) { + function u(d) { + return d === null; + } + l.exports = u; + } + ), + /***/ + 5393: ( + /***/ + function(l) { + function u(d) { + return d === Object(d); + } + l.exports = u; + } + ), + /***/ + 2560: ( + /***/ + function(l) { + function u(d) { + return typeof d == "string" || d instanceof String; + } + l.exports = u; + } + ), + /***/ + 5695: ( + /***/ + function(l) { + function u(d) { + return d === void 0; + } + l.exports = u; + } + ), + /***/ + 4426: ( + /***/ + function(l, u, d) { + l.exports = d(4486); + } + ), + /***/ + 9406: ( + /***/ + function(l, u, d) { + l.exports = d(4877); + } + ), + /***/ + 789: ( + /***/ + function(l, u, d) { + l.exports = d(7178); + } + ), + /***/ + 381: ( + /***/ + function(l, u, d) { + l.exports = d(5603); + } + ), + /***/ + 7636: ( + /***/ + function(l, u, d) { + l.exports = d(1206); + } + ), + /***/ + 1899: ( + /***/ + function(l, u, d) { + l.exports = d(6174); + } + ), + /***/ + 899: ( + /***/ + function(l, u, d) { + l.exports = d(57); + } + ), + /***/ + 8005: ( + /***/ + function(l, u, d) { + l.exports = d(4741); + } + ), + /***/ + 6562: ( + /***/ + function(l, u, d) { + l.exports = d(8368); + } + ), + /***/ + 9131: ( + /***/ + function(l, u, d) { + l.exports = d(3739); + } + ), + /***/ + 4383: ( + /***/ + function(l, u, d) { + l.exports = d(172); + } + ), + /***/ + 6065: ( + /***/ + function(l, u, d) { + l.exports = d(4963); + } + ), + /***/ + 1734: ( + /***/ + function(l, u, d) { + l.exports = d(7820); + } + ), + /***/ + 2461: ( + /***/ + function(l, u, d) { + l.exports = d(5636); + } + ), + /***/ + 5214: ( + /***/ + function(l, u, d) { + l.exports = d(5059); + } + ), + /***/ + 6397: ( + /***/ + function(l, u, d) { + l.exports = d(3969); + } + ), + /***/ + 8189: ( + /***/ + function(l, u, d) { + l.exports = d(6618); + } + ), + /***/ + 9146: ( + /***/ + function(l, u, d) { + l.exports = d(5279); + } + ), + /***/ + 4496: ( + /***/ + function(l, u, d) { + l.exports = d(9562); + } + ), + /***/ + 3972: ( + /***/ + function(l, u, d) { + l.exports = d(652); + } + ), + /***/ + 7172: ( + /***/ + function(l, u, d) { + l.exports = d(2813); + } + ), + /***/ + 1845: ( + /***/ + function(l, u, d) { + l.exports = d(8664); + } + ), + /***/ + 662: ( + /***/ + function(l, u, d) { + l.exports = d(1457); + } + ), + /***/ + 711: ( + /***/ + function(l, u, d) { + l.exports = d(2937); + } + ), + /***/ + 6623: ( + /***/ + function(l, u, d) { + l.exports = d(9297); + } + ), + /***/ + 7077: ( + /***/ + function(l, u, d) { + l.exports = d(8026); + } + ), + /***/ + 9856: ( + /***/ + function(l, u, d) { + l.exports = d(2044); + } + ), + /***/ + 4230: ( + /***/ + function(l, u, d) { + l.exports = d(2214); + } + ), + /***/ + 184: ( + /***/ + function(l, u, d) { + l.exports = d(9256); + } + ), + /***/ + 3742: ( + /***/ + function(l, u, d) { + l.exports = d(5659); + } + ), + /***/ + 1801: ( + /***/ + function(l) { + var u = { + rect: 1, + circle: 2, + triangle: 1 + }, d = { + rect: { + w: "width", + h: "height" + }, + circle: { + w: "rx", + h: "ry" + }, + triangle: { + w: "width", + h: "height" + } + }; + function f(_) { + var E = _.originX, I = _.originY, w = E.substring(0, 1) + I.substring(0, 1); + _.startPoint = _.origins[w]; + } + function g(_, E, I) { + var w = _.x, x = _.y, b = E.x, R = E.y, M = I * Math.PI / 180, O = (b - w) * Math.cos(M) - (R - x) * Math.sin(M) + w, P = (b - w) * Math.sin(M) + (R - x) * Math.cos(M) + x; + return { + originX: w > O ? "right" : "left", + originY: x > P ? "bottom" : "top" + }; + } + function v(_) { + return _.originX === "center" && _.originY === "center"; + } + function y(_, E) { + var I = E.getPointByOrigin("center", "center"), w = -E.angle, x = g(I, _, w), b = x.originX, R = x.originY, M = E.getPointByOrigin(b, R), O = E.left - (I.x - M.x), P = E.top - (I.y - M.y); + E.set({ + originX: b, + originY: R, + left: O, + top: P + }), E.setCoords(); + } + function C(_, E) { + var I = E.startPoint, w = -E.angle, x = g(I, _, w), b = x.originX, R = x.originY; + E.setPositionByOrigin(I, b, R), E.setCoords(); + } + function A(_) { + var E = _.type, I = _.scaleX, w = _.scaleY, x = d[E], b = _[x.w] * I, R = _[x.h] * w; + if (_.isRegular) { + var M = Math.max(I, w); + b = _[x.w] * M, R = _[x.h] * M; + } + var O = { + hasControls: !1, + hasBorders: !1, + scaleX: 1, + scaleY: 1 + }; + O[x.w] = b, O[x.h] = R, _.set(O); + } + function S(_, E) { + var I = E.type, w = E.strokeWidth, x = E.startPoint, b = u[I], R = d[I], M = E.type === "triangle", O = {}, P = Math.abs(x.x - _.x) / b, B = Math.abs(x.y - _.y) / b; + P > w && (P -= w / b), B > w && (B -= w / b), E.isRegular && (P = B = Math.max(P, B), M && (B = Math.sqrt(3) / 2 * P)), O[R.w] = P, O[R.h] = B, E.set(O); + } + l.exports = { + /** + * Set each origin value to shape + * @param {fabric.Object} shape - Shape object + */ + setOrigins: function(E) { + var I = E.getPointByOrigin("left", "top"), w = E.getPointByOrigin("right", "top"), x = E.getPointByOrigin("right", "bottom"), b = E.getPointByOrigin("left", "bottom"); + E.origins = { + lt: I, + rt: w, + rb: x, + lb: b + }; + }, + /** + * Resize the shape + * @param {fabric.Object} shape - Shape object + * @param {{x: number, y: number}} pointer - Mouse pointer values on canvas + * @param {boolean} isScaling - Whether the resizing action is scaling or not + */ + resize: function(E, I, w) { + v(E) && (y(I, E), f(E)), w ? A(E) : S(I, E), C(I, E); + }, + /** + * Adjust the origin position of shape to center + * @param {fabric.Object} shape - Shape object + */ + adjustOriginToCenter: function(E) { + var I = E.getPointByOrigin("center", "center"), w = E.originX, x = E.originY, b = E.getPointByOrigin(w, x), R = E.left + (I.x - b.x), M = E.top + (I.y - b.y); + E.set({ + hasControls: !0, + hasBorders: !0, + originX: "center", + originY: "center", + left: R, + top: M + }), E.setCoords(); + } + }; + } + ), + /***/ + 2221: ( + /***/ + function(l, u, d) { + d(5454), d(9173); + var f = d(7545); + l.exports = f.Array.from; + } + ), + /***/ + 5078: ( + /***/ + function(l, u, d) { + d(8118); + var f = d(7545); + l.exports = f.Array.isArray; + } + ), + /***/ + 6135: ( + /***/ + function(l, u, d) { + d(9106); + var f = d(5607); + l.exports = f("Array").concat; + } + ), + /***/ + 9510: ( + /***/ + function(l, u, d) { + d(1710); + var f = d(5607); + l.exports = f("Array").fill; + } + ), + /***/ + 3971: ( + /***/ + function(l, u, d) { + d(3436); + var f = d(5607); + l.exports = f("Array").filter; + } + ), + /***/ + 98: ( + /***/ + function(l, u, d) { + d(9823); + var f = d(5607); + l.exports = f("Array").forEach; + } + ), + /***/ + 2089: ( + /***/ + function(l, u, d) { + d(2276); + var f = d(5607); + l.exports = f("Array").indexOf; + } + ), + /***/ + 6209: ( + /***/ + function(l, u, d) { + d(3838); + var f = d(5607); + l.exports = f("Array").map; + } + ), + /***/ + 2671: ( + /***/ + function(l, u, d) { + d(5818); + var f = d(5607); + l.exports = f("Array").slice; + } + ), + /***/ + 1375: ( + /***/ + function(l, u, d) { + d(2178); + var f = d(5607); + l.exports = f("Array").splice; + } + ), + /***/ + 3528: ( + /***/ + function(l, u, d) { + d(665); + var f = d(5607); + l.exports = f("Function").bind; + } + ), + /***/ + 5739: ( + /***/ + function(l, u, d) { + d(8939), d(5454); + var f = d(8703); + l.exports = f; + } + ), + /***/ + 278: ( + /***/ + function(l, u, d) { + var f = d(3528), g = Function.prototype; + l.exports = function(v) { + var y = v.bind; + return v === g || v instanceof Function && y === g.bind ? f : y; + }; + } + ), + /***/ + 1484: ( + /***/ + function(l, u, d) { + var f = d(6135), g = Array.prototype; + l.exports = function(v) { + var y = v.concat; + return v === g || v instanceof Array && y === g.concat ? f : y; + }; + } + ), + /***/ + 7731: ( + /***/ + function(l, u, d) { + var f = d(9510), g = Array.prototype; + l.exports = function(v) { + var y = v.fill; + return v === g || v instanceof Array && y === g.fill ? f : y; + }; + } + ), + /***/ + 3669: ( + /***/ + function(l, u, d) { + var f = d(3971), g = Array.prototype; + l.exports = function(v) { + var y = v.filter; + return v === g || v instanceof Array && y === g.filter ? f : y; + }; + } + ), + /***/ + 2604: ( + /***/ + function(l, u, d) { + var f = d(2089), g = Array.prototype; + l.exports = function(v) { + var y = v.indexOf; + return v === g || v instanceof Array && y === g.indexOf ? f : y; + }; + } + ), + /***/ + 263: ( + /***/ + function(l, u, d) { + var f = d(6209), g = Array.prototype; + l.exports = function(v) { + var y = v.map; + return v === g || v instanceof Array && y === g.map ? f : y; + }; + } + ), + /***/ + 7663: ( + /***/ + function(l, u, d) { + var f = d(2671), g = Array.prototype; + l.exports = function(v) { + var y = v.slice; + return v === g || v instanceof Array && y === g.slice ? f : y; + }; + } + ), + /***/ + 5063: ( + /***/ + function(l, u, d) { + var f = d(1375), g = Array.prototype; + l.exports = function(v) { + var y = v.splice; + return v === g || v instanceof Array && y === g.splice ? f : y; + }; + } + ), + /***/ + 6813: ( + /***/ + function(l, u, d) { + var f = d(3842), g = String.prototype; + l.exports = function(v) { + var y = v.trim; + return typeof v == "string" || v === g || v instanceof String && y === g.trim ? f : y; + }; + } + ), + /***/ + 6285: ( + /***/ + function(l, u, d) { + d(2666); + var f = d(7545); + l.exports = f.Number.parseInt; + } + ), + /***/ + 3213: ( + /***/ + function(l, u, d) { + d(3113); + var f = d(7545), g = f.Object; + l.exports = function(y, C) { + return g.create(y, C); + }; + } + ), + /***/ + 3512: ( + /***/ + function(l, u, d) { + d(297); + var f = d(7545), g = f.Object, v = l.exports = function(C, A, S) { + return g.defineProperty(C, A, S); + }; + g.defineProperty.sham && (v.sham = !0); + } + ), + /***/ + 8168: ( + /***/ + function(l, u, d) { + d(9234); + var f = d(7545); + l.exports = f.Object.getPrototypeOf; + } + ), + /***/ + 8651: ( + /***/ + function(l, u, d) { + d(2647); + var f = d(7545); + l.exports = f.Object.keys; + } + ), + /***/ + 3083: ( + /***/ + function(l, u, d) { + d(3222); + var f = d(7545); + l.exports = f.Object.setPrototypeOf; + } + ), + /***/ + 2987: ( + /***/ + function(l, u, d) { + d(4859); + var f = d(7545); + l.exports = f.parseFloat; + } + ), + /***/ + 2239: ( + /***/ + function(l, u, d) { + d(5706); + var f = d(7545); + l.exports = f.parseInt; + } + ), + /***/ + 3154: ( + /***/ + function(l, u, d) { + d(4242), d(8939), d(6663), d(9021), d(7884), d(8885), d(1868), d(5454); + var f = d(7545); + l.exports = f.Promise; + } + ), + /***/ + 6577: ( + /***/ + function(l, u, d) { + d(5397); + var f = d(7545); + l.exports = f.Reflect.construct; + } + ), + /***/ + 3842: ( + /***/ + function(l, u, d) { + d(957); + var f = d(5607); + l.exports = f("String").trim; + } + ), + /***/ + 5008: ( + /***/ + function(l, u, d) { + d(9106), d(6663), d(6187), d(9781), d(492), d(6681), d(9594), d(3665), d(9017), d(1250), d(9786), d(503), d(6565), d(9322), d(3610), d(6886), d(3514), d(8671), d(8556), d(1367); + var f = d(7545); + l.exports = f.Symbol; + } + ), + /***/ + 994: ( + /***/ + function(l, u, d) { + d(8939), d(6663), d(5454), d(3665); + var f = d(9207); + l.exports = f.f("iterator"); + } + ), + /***/ + 2813: ( + /***/ + function(l, u, d) { + var f = d(3822); + l.exports = f; + } + ), + /***/ + 8664: ( + /***/ + function(l, u, d) { + var f = d(1434); + l.exports = f; + } + ), + /***/ + 1457: ( + /***/ + function(l, u, d) { + var f = d(7710); + l.exports = f; + } + ), + /***/ + 2937: ( + /***/ + function(l, u, d) { + var f = d(4741); + l.exports = f; + } + ), + /***/ + 9297: ( + /***/ + function(l, u, d) { + var f = d(4963); + l.exports = f; + } + ), + /***/ + 8026: ( + /***/ + function(l, u, d) { + var f = d(7820); + l.exports = f; + } + ), + /***/ + 2044: ( + /***/ + function(l, u, d) { + var f = d(8980); + l.exports = f; + } + ), + /***/ + 2214: ( + /***/ + function(l, u, d) { + var f = d(6672); + l.exports = f; + } + ), + /***/ + 9256: ( + /***/ + function(l, u, d) { + var f = d(2285); + d(177), d(9031), d(6658), d(1875), d(8658), d(4592), d(6680), l.exports = f; + } + ), + /***/ + 5659: ( + /***/ + function(l, u, d) { + var f = d(8535); + l.exports = f; + } + ), + /***/ + 6235: ( + /***/ + function(l, u, d) { + var f = d(6447), g = d(9288); + l.exports = function(v) { + if (f(v)) + return v; + throw TypeError(g(v) + " is not a function"); + }; + } + ), + /***/ + 1404: ( + /***/ + function(l, u, d) { + var f = d(2091), g = d(9288); + l.exports = function(v) { + if (f(v)) + return v; + throw TypeError(g(v) + " is not a constructor"); + }; + } + ), + /***/ + 7757: ( + /***/ + function(l, u, d) { + var f = d(6447); + l.exports = function(g) { + if (typeof g == "object" || f(g)) + return g; + throw TypeError("Can't set " + String(g) + " as a prototype"); + }; + } + ), + /***/ + 7423: ( + /***/ + function(l) { + l.exports = function() { + }; + } + ), + /***/ + 6961: ( + /***/ + function(l) { + l.exports = function(u, d, f) { + if (u instanceof d) + return u; + throw TypeError("Incorrect " + (f ? f + " " : "") + "invocation"); + }; + } + ), + /***/ + 1138: ( + /***/ + function(l, u, d) { + var f = d(5744); + l.exports = function(g) { + if (f(g)) + return g; + throw TypeError(String(g) + " is not an object"); + }; + } + ), + /***/ + 2724: ( + /***/ + function(l, u, d) { + var f = d(1795), g = d(7739), v = d(4104); + l.exports = function(C) { + for (var A = f(this), S = v(A), _ = arguments.length, E = g(_ > 1 ? arguments[1] : void 0, S), I = _ > 2 ? arguments[2] : void 0, w = I === void 0 ? S : g(I, S); w > E; ) + A[E++] = C; + return A; + }; + } + ), + /***/ + 7397: ( + /***/ + function(l, u, d) { + var f = d(454).forEach, g = d(424), v = g("forEach"); + l.exports = v ? [].forEach : function(C) { + return f(this, C, arguments.length > 1 ? arguments[1] : void 0); + }; + } + ), + /***/ + 841: ( + /***/ + function(l, u, d) { + var f = d(8043), g = d(1795), v = d(1635), y = d(6109), C = d(2091), A = d(4104), S = d(9361), _ = d(1669), E = d(8703); + l.exports = function(w) { + var x = g(w), b = C(this), R = arguments.length, M = R > 1 ? arguments[1] : void 0, O = M !== void 0; + O && (M = f(M, R > 2 ? arguments[2] : void 0, 2)); + var P = E(x), B = 0, H, Y, X, ee, ae, J; + if (P && !(this == Array && y(P))) + for (ee = _(x, P), ae = ee.next, Y = b ? new this() : []; !(X = ae.call(ee)).done; B++) + J = O ? v(ee, M, [X.value, B], !0) : X.value, S(Y, B, J); + else + for (H = A(x), Y = b ? new this(H) : Array(H); H > B; B++) + J = O ? M(x[B], B) : x[B], S(Y, B, J); + return Y.length = B, Y; + }; + } + ), + /***/ + 8180: ( + /***/ + function(l, u, d) { + var f = d(101), g = d(7739), v = d(4104), y = function(C) { + return function(A, S, _) { + var E = f(A), I = v(E), w = g(_, I), x; + if (C && S != S) { + for (; I > w; ) + if (x = E[w++], x != x) + return !0; + } else + for (; I > w; w++) + if ((C || w in E) && E[w] === S) + return C || w || 0; + return !C && -1; + }; + }; + l.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: y(!0), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: y(!1) + }; + } + ), + /***/ + 454: ( + /***/ + function(l, u, d) { + var f = d(8043), g = d(2202), v = d(1795), y = d(4104), C = d(1321), A = [].push, S = function(_) { + var E = _ == 1, I = _ == 2, w = _ == 3, x = _ == 4, b = _ == 6, R = _ == 7, M = _ == 5 || b; + return function(O, P, B, H) { + for (var Y = v(O), X = g(Y), ee = f(P, B, 3), ae = y(X), J = 0, ne = H || C, fe = E ? ne(O, ae) : I || R ? ne(O, 0) : void 0, de, Te; ae > J; J++) + if ((M || J in X) && (de = X[J], Te = ee(de, J, Y), _)) + if (E) + fe[J] = Te; + else if (Te) + switch (_) { + case 3: + return !0; + case 5: + return de; + case 6: + return J; + case 2: + A.call(fe, de); + } + else + switch (_) { + case 4: + return !1; + case 7: + A.call(fe, de); + } + return b ? -1 : w || x ? x : fe; + }; + }; + l.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: S(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: S(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: S(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: S(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: S(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: S(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: S(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: S(7) + }; + } + ), + /***/ + 242: ( + /***/ + function(l, u, d) { + var f = d(6192), g = d(8182), v = d(4218), y = g("species"); + l.exports = function(C) { + return v >= 51 || !f(function() { + var A = [], S = A.constructor = {}; + return S[y] = function() { + return { foo: 1 }; + }, A[C](Boolean).foo !== 1; + }); + }; + } + ), + /***/ + 424: ( + /***/ + function(l, u, d) { + var f = d(6192); + l.exports = function(g, v) { + var y = [][g]; + return !!y && f(function() { + y.call(null, v || function() { + throw 1; + }, 1); + }); + }; + } + ), + /***/ + 3712: ( + /***/ + function(l, u, d) { + var f = d(4770), g = d(2091), v = d(5744), y = d(8182), C = y("species"); + l.exports = function(A) { + var S; + return f(A) && (S = A.constructor, g(S) && (S === Array || f(S.prototype)) ? S = void 0 : v(S) && (S = S[C], S === null && (S = void 0))), S === void 0 ? Array : S; + }; + } + ), + /***/ + 1321: ( + /***/ + function(l, u, d) { + var f = d(3712); + l.exports = function(g, v) { + return new (f(g))(v === 0 ? 0 : v); + }; + } + ), + /***/ + 1635: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(6639); + l.exports = function(v, y, C, A) { + try { + return A ? y(f(C)[0], C[1]) : y(C); + } catch (S) { + g(v, "throw", S); + } + }; + } + ), + /***/ + 9770: ( + /***/ + function(l, u, d) { + var f = d(8182), g = f("iterator"), v = !1; + try { + var y = 0, C = { + next: function() { + return { done: !!y++ }; + }, + return: function() { + v = !0; + } + }; + C[g] = function() { + return this; + }, Array.from(C, function() { + throw 2; + }); + } catch (A) { + } + l.exports = function(A, S) { + if (!S && !v) + return !1; + var _ = !1; + try { + var E = {}; + E[g] = function() { + return { + next: function() { + return { done: _ = !0 }; + } + }; + }, A(E); + } catch (I) { + } + return _; + }; + } + ), + /***/ + 9272: ( + /***/ + function(l) { + var u = {}.toString; + l.exports = function(d) { + return u.call(d).slice(8, -1); + }; + } + ), + /***/ + 4696: ( + /***/ + function(l, u, d) { + var f = d(3471), g = d(6447), v = d(9272), y = d(8182), C = y("toStringTag"), A = v(function() { + return arguments; + }()) == "Arguments", S = function(_, E) { + try { + return _[E]; + } catch (I) { + } + }; + l.exports = f ? v : function(_) { + var E, I, w; + return _ === void 0 ? "Undefined" : _ === null ? "Null" : typeof (I = S(E = Object(_), C)) == "string" ? I : A ? v(E) : (w = v(E)) == "Object" && g(E.callee) ? "Arguments" : w; + }; + } + ), + /***/ + 4635: ( + /***/ + function(l, u, d) { + var f = d(6192); + l.exports = !f(function() { + function g() { + } + return g.prototype.constructor = null, Object.getPrototypeOf(new g()) !== g.prototype; + }); + } + ), + /***/ + 5148: ( + /***/ + function(l, u, d) { + var f = d(4413).IteratorPrototype, g = d(2853), v = d(774), y = d(1284), C = d(7771), A = function() { + return this; + }; + l.exports = function(S, _, E) { + var I = _ + " Iterator"; + return S.prototype = g(f, { next: v(1, E) }), y(S, I, !1, !0), C[I] = A, S; + }; + } + ), + /***/ + 8711: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(2760), v = d(774); + l.exports = f ? function(y, C, A) { + return g.f(y, C, v(1, A)); + } : function(y, C, A) { + return y[C] = A, y; + }; + } + ), + /***/ + 774: ( + /***/ + function(l) { + l.exports = function(u, d) { + return { + enumerable: !(u & 1), + configurable: !(u & 2), + writable: !(u & 4), + value: d + }; + }; + } + ), + /***/ + 9361: ( + /***/ + function(l, u, d) { + var f = d(77), g = d(2760), v = d(774); + l.exports = function(y, C, A) { + var S = f(C); + S in y ? g.f(y, S, v(0, A)) : y[S] = A; + }; + } + ), + /***/ + 7218: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(5546), v = d(2282), y = d(6447), C = d(5148), A = d(9341), S = d(4469), _ = d(1284), E = d(8711), I = d(9482), w = d(8182), x = d(7771), b = d(4413), R = v.PROPER, M = v.CONFIGURABLE, O = b.IteratorPrototype, P = b.BUGGY_SAFARI_ITERATORS, B = w("iterator"), H = "keys", Y = "values", X = "entries", ee = function() { + return this; + }; + l.exports = function(ae, J, ne, fe, de, Te, be) { + C(ne, J, fe); + var Ve = function(Ie) { + if (Ie === de && Re) + return Re; + if (!P && Ie in Ue) + return Ue[Ie]; + switch (Ie) { + case H: + return function() { + return new ne(this, Ie); + }; + case Y: + return function() { + return new ne(this, Ie); + }; + case X: + return function() { + return new ne(this, Ie); + }; + } + return function() { + return new ne(this); + }; + }, pe = J + " Iterator", Be = !1, Ue = ae.prototype, Qe = Ue[B] || Ue["@@iterator"] || de && Ue[de], Re = !P && Qe || Ve(de), Ne = J == "Array" && Ue.entries || Qe, Me, we, He; + if (Ne && (Me = A(Ne.call(new ae())), Me !== Object.prototype && Me.next && (!g && A(Me) !== O && (S ? S(Me, O) : y(Me[B]) || I(Me, B, ee)), _(Me, pe, !0, !0), g && (x[pe] = ee))), R && de == Y && Qe && Qe.name !== Y && (!g && M ? E(Ue, "name", Y) : (Be = !0, Re = function() { + return Qe.call(this); + })), de) + if (we = { + values: Ve(Y), + keys: Te ? Re : Ve(H), + entries: Ve(X) + }, be) + for (He in we) + (P || Be || !(He in Ue)) && I(Ue, He, we[He]); + else + f({ target: J, proto: !0, forced: P || Be }, we); + return (!g || be) && Ue[B] !== Re && I(Ue, B, Re, { name: de }), x[J] = Re, we; + }; + } + ), + /***/ + 1488: ( + /***/ + function(l, u, d) { + var f = d(7545), g = d(4500), v = d(9207), y = d(2760).f; + l.exports = function(C) { + var A = f.Symbol || (f.Symbol = {}); + g(A, C) || y(A, C, { + value: v.f(C) + }); + }; + } + ), + /***/ + 69: ( + /***/ + function(l, u, d) { + var f = d(6192); + l.exports = !f(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }); + } + ), + /***/ + 7449: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(5744), v = f.document, y = g(v) && g(v.createElement); + l.exports = function(C) { + return y ? v.createElement(C) : {}; + }; + } + ), + /***/ + 7365: ( + /***/ + function(l) { + l.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 + }; + } + ), + /***/ + 2957: ( + /***/ + function(l) { + l.exports = typeof window == "object"; + } + ), + /***/ + 9347: ( + /***/ + function(l, u, d) { + var f = d(8989), g = d(8576); + l.exports = /ipad|iphone|ipod/i.test(f) && g.Pebble !== void 0; + } + ), + /***/ + 9536: ( + /***/ + function(l, u, d) { + var f = d(8989); + l.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(f); + } + ), + /***/ + 224: ( + /***/ + function(l, u, d) { + var f = d(9272), g = d(8576); + l.exports = f(g.process) == "process"; + } + ), + /***/ + 5914: ( + /***/ + function(l, u, d) { + var f = d(8989); + l.exports = /web0s(?!.*chrome)/i.test(f); + } + ), + /***/ + 8989: ( + /***/ + function(l, u, d) { + var f = d(150); + l.exports = f("navigator", "userAgent") || ""; + } + ), + /***/ + 4218: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(8989), v = f.process, y = f.Deno, C = v && v.versions || y && y.version, A = C && C.v8, S, _; + A ? (S = A.split("."), _ = S[0] < 4 ? 1 : S[0] + S[1]) : g && (S = g.match(/Edge\/(\d+)/), (!S || S[1] >= 74) && (S = g.match(/Chrome\/(\d+)/), S && (_ = S[1]))), l.exports = _ && +_; + } + ), + /***/ + 5607: ( + /***/ + function(l, u, d) { + var f = d(7545); + l.exports = function(g) { + return f[g + "Prototype"]; + }; + } + ), + /***/ + 2952: ( + /***/ + function(l) { + l.exports = [ + "constructor", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "toLocaleString", + "toString", + "valueOf" + ]; + } + ), + /***/ + 3085: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(6447), v = d(5141).f, y = d(9245), C = d(7545), A = d(8043), S = d(8711), _ = d(4500), E = function(I) { + var w = function(x, b, R) { + if (this instanceof I) { + switch (arguments.length) { + case 0: + return new I(); + case 1: + return new I(x); + case 2: + return new I(x, b); + } + return new I(x, b, R); + } + return I.apply(this, arguments); + }; + return w.prototype = I.prototype, w; + }; + l.exports = function(I, w) { + var x = I.target, b = I.global, R = I.stat, M = I.proto, O = b ? f : R ? f[x] : (f[x] || {}).prototype, P = b ? C : C[x] || S(C, x, {})[x], B = P.prototype, H, Y, X, ee, ae, J, ne, fe, de; + for (ee in w) + H = y(b ? ee : x + (R ? "." : "#") + ee, I.forced), Y = !H && O && _(O, ee), J = P[ee], Y && (I.noTargetGet ? (de = v(O, ee), ne = de && de.value) : ne = O[ee]), ae = Y && ne ? ne : w[ee], !(Y && typeof J == typeof ae) && (I.bind && Y ? fe = A(ae, f) : I.wrap && Y ? fe = E(ae) : M && g(ae) ? fe = A(Function.call, ae) : fe = ae, (I.sham || ae && ae.sham || J && J.sham) && S(fe, "sham", !0), S(P, ee, fe), M && (X = x + "Prototype", _(C, X) || S(C, X, {}), S(C[X], ee, ae), I.real && B && !B[ee] && S(B, ee, ae))); + }; + } + ), + /***/ + 6192: ( + /***/ + function(l) { + l.exports = function(u) { + try { + return !!u(); + } catch (d) { + return !0; + } + }; + } + ), + /***/ + 8043: ( + /***/ + function(l, u, d) { + var f = d(6235); + l.exports = function(g, v, y) { + if (f(g), v === void 0) + return g; + switch (y) { + case 0: + return function() { + return g.call(v); + }; + case 1: + return function(C) { + return g.call(v, C); + }; + case 2: + return function(C, A) { + return g.call(v, C, A); + }; + case 3: + return function(C, A, S) { + return g.call(v, C, A, S); + }; + } + return function() { + return g.apply(v, arguments); + }; + }; + } + ), + /***/ + 6782: ( + /***/ + function(l, u, d) { + var f = d(6235), g = d(5744), v = [].slice, y = {}, C = function(A, S, _) { + if (!(S in y)) { + for (var E = [], I = 0; I < S; I++) + E[I] = "a[" + I + "]"; + y[S] = Function("C,a", "return new C(" + E.join(",") + ")"); + } + return y[S](A, _); + }; + l.exports = Function.bind || function(S) { + var _ = f(this), E = v.call(arguments, 1), I = function() { + var x = E.concat(v.call(arguments)); + return this instanceof I ? C(_, x.length, x) : _.apply(S, x); + }; + return g(_.prototype) && (I.prototype = _.prototype), I; + }; + } + ), + /***/ + 2282: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(4500), v = Function.prototype, y = f && Object.getOwnPropertyDescriptor, C = g(v, "name"), A = C && function() { + }.name === "something", S = C && (!f || f && y(v, "name").configurable); + l.exports = { + EXISTS: C, + PROPER: A, + CONFIGURABLE: S + }; + } + ), + /***/ + 150: ( + /***/ + function(l, u, d) { + var f = d(7545), g = d(8576), v = d(6447), y = function(C) { + return v(C) ? C : void 0; + }; + l.exports = function(C, A) { + return arguments.length < 2 ? y(f[C]) || y(g[C]) : f[C] && f[C][A] || g[C] && g[C][A]; + }; + } + ), + /***/ + 8703: ( + /***/ + function(l, u, d) { + var f = d(4696), g = d(5037), v = d(7771), y = d(8182), C = y("iterator"); + l.exports = function(A) { + if (A != null) + return g(A, C) || g(A, "@@iterator") || v[f(A)]; + }; + } + ), + /***/ + 1669: ( + /***/ + function(l, u, d) { + var f = d(6235), g = d(1138), v = d(8703); + l.exports = function(y, C) { + var A = arguments.length < 2 ? v(y) : C; + if (f(A)) + return g(A.call(y)); + throw TypeError(String(y) + " is not iterable"); + }; + } + ), + /***/ + 5037: ( + /***/ + function(l, u, d) { + var f = d(6235); + l.exports = function(g, v) { + var y = g[v]; + return y == null ? void 0 : f(y); + }; + } + ), + /***/ + 8576: ( + /***/ + function(l, u, d) { + var f = function(g) { + return g && g.Math == Math && g; + }; + l.exports = // eslint-disable-next-line es/no-global-this -- safe + f(typeof globalThis == "object" && globalThis) || f(typeof window == "object" && window) || // eslint-disable-next-line no-restricted-globals -- safe + f(typeof self == "object" && self) || f(typeof d.g == "object" && d.g) || // eslint-disable-next-line no-new-func -- fallback + function() { + return this; + }() || Function("return this")(); + } + ), + /***/ + 4500: ( + /***/ + function(l, u, d) { + var f = d(1795), g = {}.hasOwnProperty; + l.exports = Object.hasOwn || function(y, C) { + return g.call(f(y), C); + }; + } + ), + /***/ + 4535: ( + /***/ + function(l) { + l.exports = {}; + } + ), + /***/ + 3681: ( + /***/ + function(l, u, d) { + var f = d(8576); + l.exports = function(g, v) { + var y = f.console; + y && y.error && (arguments.length === 1 ? y.error(g) : y.error(g, v)); + }; + } + ), + /***/ + 7403: ( + /***/ + function(l, u, d) { + var f = d(150); + l.exports = f("document", "documentElement"); + } + ), + /***/ + 188: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(6192), v = d(7449); + l.exports = !f && !g(function() { + return Object.defineProperty(v("div"), "a", { + get: function() { + return 7; + } + }).a != 7; + }); + } + ), + /***/ + 2202: ( + /***/ + function(l, u, d) { + var f = d(6192), g = d(9272), v = "".split; + l.exports = f(function() { + return !Object("z").propertyIsEnumerable(0); + }) ? function(y) { + return g(y) == "String" ? v.call(y, "") : Object(y); + } : Object; + } + ), + /***/ + 9516: ( + /***/ + function(l, u, d) { + var f = d(6447), g = d(6434), v = Function.toString; + f(g.inspectSource) || (g.inspectSource = function(y) { + return v.call(y); + }), l.exports = g.inspectSource; + } + ), + /***/ + 273: ( + /***/ + function(l, u, d) { + var f = d(5744), g = d(8711); + l.exports = function(v, y) { + f(y) && "cause" in y && g(v, "cause", v.cause); + }; + } + ), + /***/ + 3326: ( + /***/ + function(l, u, d) { + var f = d(8921), g = d(8576), v = d(5744), y = d(8711), C = d(4500), A = d(6434), S = d(9766), _ = d(4535), E = "Object already initialized", I = g.WeakMap, w, x, b, R = function(X) { + return b(X) ? x(X) : w(X, {}); + }, M = function(X) { + return function(ee) { + var ae; + if (!v(ee) || (ae = x(ee)).type !== X) + throw TypeError("Incompatible receiver, " + X + " required"); + return ae; + }; + }; + if (f || A.state) { + var O = A.state || (A.state = new I()), P = O.get, B = O.has, H = O.set; + w = function(X, ee) { + if (B.call(O, X)) + throw new TypeError(E); + return ee.facade = X, H.call(O, X, ee), ee; + }, x = function(X) { + return P.call(O, X) || {}; + }, b = function(X) { + return B.call(O, X); + }; + } else { + var Y = S("state"); + _[Y] = !0, w = function(X, ee) { + if (C(X, Y)) + throw new TypeError(E); + return ee.facade = X, y(X, Y, ee), ee; + }, x = function(X) { + return C(X, Y) ? X[Y] : {}; + }, b = function(X) { + return C(X, Y); + }; + } + l.exports = { + set: w, + get: x, + has: b, + enforce: R, + getterFor: M + }; + } + ), + /***/ + 6109: ( + /***/ + function(l, u, d) { + var f = d(8182), g = d(7771), v = f("iterator"), y = Array.prototype; + l.exports = function(C) { + return C !== void 0 && (g.Array === C || y[v] === C); + }; + } + ), + /***/ + 4770: ( + /***/ + function(l, u, d) { + var f = d(9272); + l.exports = Array.isArray || function(v) { + return f(v) == "Array"; + }; + } + ), + /***/ + 6447: ( + /***/ + function(l) { + l.exports = function(u) { + return typeof u == "function"; + }; + } + ), + /***/ + 2091: ( + /***/ + function(l, u, d) { + var f = d(6192), g = d(6447), v = d(4696), y = d(150), C = d(9516), A = [], S = y("Reflect", "construct"), _ = /^\s*(?:class|function)\b/, E = _.exec, I = !_.exec(function() { + }), w = function(b) { + if (!g(b)) + return !1; + try { + return S(Object, A, b), !0; + } catch (R) { + return !1; + } + }, x = function(b) { + if (!g(b)) + return !1; + switch (v(b)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return !1; + } + return I || !!E.call(_, C(b)); + }; + l.exports = !S || f(function() { + var b; + return w(w.call) || !w(Object) || !w(function() { + b = !0; + }) || b; + }) ? x : w; + } + ), + /***/ + 9245: ( + /***/ + function(l, u, d) { + var f = d(6192), g = d(6447), v = /#|\.prototype\./, y = function(E, I) { + var w = A[C(E)]; + return w == _ ? !0 : w == S ? !1 : g(I) ? f(I) : !!I; + }, C = y.normalize = function(E) { + return String(E).replace(v, ".").toLowerCase(); + }, A = y.data = {}, S = y.NATIVE = "N", _ = y.POLYFILL = "P"; + l.exports = y; + } + ), + /***/ + 5744: ( + /***/ + function(l, u, d) { + var f = d(6447); + l.exports = function(g) { + return typeof g == "object" ? g !== null : f(g); + }; + } + ), + /***/ + 5546: ( + /***/ + function(l) { + l.exports = !0; + } + ), + /***/ + 3236: ( + /***/ + function(l, u, d) { + var f = d(6447), g = d(150), v = d(615); + l.exports = v ? function(y) { + return typeof y == "symbol"; + } : function(y) { + var C = g("Symbol"); + return f(C) && Object(y) instanceof C; + }; + } + ), + /***/ + 3442: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(6109), v = d(4104), y = d(8043), C = d(1669), A = d(8703), S = d(6639), _ = function(E, I) { + this.stopped = E, this.result = I; + }; + l.exports = function(E, I, w) { + var x = w && w.that, b = !!(w && w.AS_ENTRIES), R = !!(w && w.IS_ITERATOR), M = !!(w && w.INTERRUPTED), O = y(I, x, 1 + b + M), P, B, H, Y, X, ee, ae, J = function(fe) { + return P && S(P, "normal", fe), new _(!0, fe); + }, ne = function(fe) { + return b ? (f(fe), M ? O(fe[0], fe[1], J) : O(fe[0], fe[1])) : M ? O(fe, J) : O(fe); + }; + if (R) + P = E; + else { + if (B = A(E), !B) + throw TypeError(String(E) + " is not iterable"); + if (g(B)) { + for (H = 0, Y = v(E); Y > H; H++) + if (X = ne(E[H]), X && X instanceof _) + return X; + return new _(!1); + } + P = C(E, B); + } + for (ee = P.next; !(ae = ee.call(P)).done; ) { + try { + X = ne(ae.value); + } catch (fe) { + S(P, "throw", fe); + } + if (typeof X == "object" && X && X instanceof _) + return X; + } + return new _(!1); + }; + } + ), + /***/ + 6639: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(5037); + l.exports = function(v, y, C) { + var A, S; + f(v); + try { + if (A = g(v, "return"), !A) { + if (y === "throw") + throw C; + return C; + } + A = A.call(v); + } catch (_) { + S = !0, A = _; + } + if (y === "throw") + throw C; + if (S) + throw A; + return f(A), C; + }; + } + ), + /***/ + 4413: ( + /***/ + function(l, u, d) { + var f = d(6192), g = d(6447), v = d(2853), y = d(9341), C = d(9482), A = d(8182), S = d(5546), _ = A("iterator"), E = !1, I, w, x; + [].keys && (x = [].keys(), "next" in x ? (w = y(y(x)), w !== Object.prototype && (I = w)) : E = !0); + var b = I == null || f(function() { + var R = {}; + return I[_].call(R) !== R; + }); + b ? I = {} : S && (I = v(I)), g(I[_]) || C(I, _, function() { + return this; + }), l.exports = { + IteratorPrototype: I, + BUGGY_SAFARI_ITERATORS: E + }; + } + ), + /***/ + 7771: ( + /***/ + function(l) { + l.exports = {}; + } + ), + /***/ + 4104: ( + /***/ + function(l, u, d) { + var f = d(8445); + l.exports = function(g) { + return f(g.length); + }; + } + ), + /***/ + 2950: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(5141).f, v = d(7160).set, y = d(9536), C = d(9347), A = d(5914), S = d(224), _ = f.MutationObserver || f.WebKitMutationObserver, E = f.document, I = f.process, w = f.Promise, x = g(f, "queueMicrotask"), b = x && x.value, R, M, O, P, B, H, Y, X; + b || (R = function() { + var ee, ae; + for (S && (ee = I.domain) && ee.exit(); M; ) { + ae = M.fn, M = M.next; + try { + ae(); + } catch (J) { + throw M ? P() : O = void 0, J; + } + } + O = void 0, ee && ee.enter(); + }, !y && !S && !A && _ && E ? (B = !0, H = E.createTextNode(""), new _(R).observe(H, { characterData: !0 }), P = function() { + H.data = B = !B; + }) : !C && w && w.resolve ? (Y = w.resolve(void 0), Y.constructor = w, X = Y.then, P = function() { + X.call(Y, R); + }) : S ? P = function() { + I.nextTick(R); + } : P = function() { + v.call(f, R); + }), l.exports = b || function(ee) { + var ae = { fn: ee, next: void 0 }; + O && (O.next = ae), M || (M = ae, P()), O = ae; + }; + } + ), + /***/ + 4471: ( + /***/ + function(l, u, d) { + var f = d(8576); + l.exports = f.Promise; + } + ), + /***/ + 3045: ( + /***/ + function(l, u, d) { + var f = d(4218), g = d(6192); + l.exports = !!Object.getOwnPropertySymbols && !g(function() { + var v = Symbol(); + return !String(v) || !(Object(v) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && f && f < 41; + }); + } + ), + /***/ + 4551: ( + /***/ + function(l, u, d) { + var f = d(6192), g = d(8182), v = d(5546), y = g("iterator"); + l.exports = !f(function() { + var C = new URL("b?a=1&b=2&c=3", "http://a"), A = C.searchParams, S = ""; + return C.pathname = "c%20d", A.forEach(function(_, E) { + A.delete("b"), S += E + _; + }), v && !C.toJSON || !A.sort || C.href !== "http://a/c%20d?a=1&c=3" || A.get("c") !== "3" || String(new URLSearchParams("?a=1")) !== "a=1" || !A[y] || new URL("https://a@b").username !== "a" || new URLSearchParams(new URLSearchParams("a=b")).get("a") !== "b" || new URL("http://тест").host !== "xn--e1aybc" || new URL("http://a#б").hash !== "#%D0%B1" || S !== "a1c3" || new URL("http://x", void 0).host !== "x"; + }); + } + ), + /***/ + 8921: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(6447), v = d(9516), y = f.WeakMap; + l.exports = g(y) && /native code/.test(v(y)); + } + ), + /***/ + 9438: ( + /***/ + function(l, u, d) { + var f = d(6235), g = function(v) { + var y, C; + this.promise = new v(function(A, S) { + if (y !== void 0 || C !== void 0) + throw TypeError("Bad Promise constructor"); + y = A, C = S; + }), this.resolve = f(y), this.reject = f(C); + }; + l.exports.f = function(v) { + return new g(v); + }; + } + ), + /***/ + 15: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(6192), v = d(4845), y = d(4277).trim, C = d(1450), A = f.parseFloat, S = f.Symbol, _ = S && S.iterator, E = 1 / A(C + "-0") !== -1 / 0 || _ && !g(function() { + A(Object(_)); + }); + l.exports = E ? function(w) { + var x = y(v(w)), b = A(x); + return b === 0 && x.charAt(0) == "-" ? -0 : b; + } : A; + } + ), + /***/ + 2558: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(6192), v = d(4845), y = d(4277).trim, C = d(1450), A = f.parseInt, S = f.Symbol, _ = S && S.iterator, E = /^[+-]?0[Xx]/, I = A(C + "08") !== 8 || A(C + "0x16") !== 22 || _ && !g(function() { + A(Object(_)); + }); + l.exports = I ? function(x, b) { + var R = y(v(x)); + return A(R, b >>> 0 || (E.test(R) ? 16 : 10)); + } : A; + } + ), + /***/ + 2503: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(6192), v = d(7653), y = d(4750), C = d(6007), A = d(1795), S = d(2202), _ = Object.assign, E = Object.defineProperty; + l.exports = !_ || g(function() { + if (f && _({ b: 1 }, _(E({}, "a", { + enumerable: !0, + get: function() { + E(this, "b", { + value: 3, + enumerable: !1 + }); + } + }), { b: 2 })).b !== 1) + return !0; + var I = {}, w = {}, x = Symbol(), b = "abcdefghijklmnopqrst"; + return I[x] = 7, b.split("").forEach(function(R) { + w[R] = R; + }), _({}, I)[x] != 7 || v(_({}, w)).join("") != b; + }) ? function(w, x) { + for (var b = A(w), R = arguments.length, M = 1, O = y.f, P = C.f; R > M; ) + for (var B = S(arguments[M++]), H = O ? v(B).concat(O(B)) : v(B), Y = H.length, X = 0, ee; Y > X; ) + ee = H[X++], (!f || P.call(B, ee)) && (b[ee] = B[ee]); + return b; + } : _; + } + ), + /***/ + 2853: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(1187), v = d(2952), y = d(4535), C = d(7403), A = d(7449), S = d(9766), _ = ">", E = "<", I = "prototype", w = "script", x = S("IE_PROTO"), b = function() { + }, R = function(H) { + return E + w + _ + H + E + "/" + w + _; + }, M = function(H) { + H.write(R("")), H.close(); + var Y = H.parentWindow.Object; + return H = null, Y; + }, O = function() { + var H = A("iframe"), Y = "java" + w + ":", X; + return H.style.display = "none", C.appendChild(H), H.src = String(Y), X = H.contentWindow.document, X.open(), X.write(R("document.F=Object")), X.close(), X.F; + }, P, B = function() { + try { + P = new ActiveXObject("htmlfile"); + } catch (Y) { + } + B = typeof document != "undefined" ? document.domain && P ? M(P) : O() : M(P); + for (var H = v.length; H--; ) + delete B[I][v[H]]; + return B(); + }; + y[x] = !0, l.exports = Object.create || function(Y, X) { + var ee; + return Y !== null ? (b[I] = f(Y), ee = new b(), b[I] = null, ee[x] = Y) : ee = B(), X === void 0 ? ee : g(ee, X); + }; + } + ), + /***/ + 1187: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(2760), v = d(1138), y = d(7653); + l.exports = f ? Object.defineProperties : function(A, S) { + v(A); + for (var _ = y(S), E = _.length, I = 0, w; E > I; ) + g.f(A, w = _[I++], S[w]); + return A; + }; + } + ), + /***/ + 2760: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(188), v = d(1138), y = d(77), C = Object.defineProperty; + u.f = f ? C : function(S, _, E) { + if (v(S), _ = y(_), v(E), g) + try { + return C(S, _, E); + } catch (I) { + } + if ("get" in E || "set" in E) + throw TypeError("Accessors not supported"); + return "value" in E && (S[_] = E.value), S; + }; + } + ), + /***/ + 5141: ( + /***/ + function(l, u, d) { + var f = d(69), g = d(6007), v = d(774), y = d(101), C = d(77), A = d(4500), S = d(188), _ = Object.getOwnPropertyDescriptor; + u.f = f ? _ : function(I, w) { + if (I = y(I), w = C(w), S) + try { + return _(I, w); + } catch (x) { + } + if (A(I, w)) + return v(!g.f.call(I, w), I[w]); + }; + } + ), + /***/ + 4052: ( + /***/ + function(l, u, d) { + var f = d(101), g = d(2092).f, v = {}.toString, y = typeof window == "object" && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], C = function(A) { + try { + return g(A); + } catch (S) { + return y.slice(); + } + }; + l.exports.f = function(S) { + return y && v.call(S) == "[object Window]" ? C(S) : g(f(S)); + }; + } + ), + /***/ + 2092: ( + /***/ + function(l, u, d) { + var f = d(7934), g = d(2952), v = g.concat("length", "prototype"); + u.f = Object.getOwnPropertyNames || function(C) { + return f(C, v); + }; + } + ), + /***/ + 4750: ( + /***/ + function(l, u) { + u.f = Object.getOwnPropertySymbols; + } + ), + /***/ + 9341: ( + /***/ + function(l, u, d) { + var f = d(4500), g = d(6447), v = d(1795), y = d(9766), C = d(4635), A = y("IE_PROTO"), S = Object.prototype; + l.exports = C ? Object.getPrototypeOf : function(_) { + var E = v(_); + if (f(E, A)) + return E[A]; + var I = E.constructor; + return g(I) && E instanceof I ? I.prototype : E instanceof Object ? S : null; + }; + } + ), + /***/ + 7934: ( + /***/ + function(l, u, d) { + var f = d(4500), g = d(101), v = d(8180).indexOf, y = d(4535); + l.exports = function(C, A) { + var S = g(C), _ = 0, E = [], I; + for (I in S) + !f(y, I) && f(S, I) && E.push(I); + for (; A.length > _; ) + f(S, I = A[_++]) && (~v(E, I) || E.push(I)); + return E; + }; + } + ), + /***/ + 7653: ( + /***/ + function(l, u, d) { + var f = d(7934), g = d(2952); + l.exports = Object.keys || function(y) { + return f(y, g); + }; + } + ), + /***/ + 6007: ( + /***/ + function(l, u) { + var d = {}.propertyIsEnumerable, f = Object.getOwnPropertyDescriptor, g = f && !d.call({ 1: 2 }, 1); + u.f = g ? function(y) { + var C = f(this, y); + return !!C && C.enumerable; + } : d; + } + ), + /***/ + 4469: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(7757); + l.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() { + var v = !1, y = {}, C; + try { + C = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set, C.call(y, []), v = y instanceof Array; + } catch (A) { + } + return function(S, _) { + return f(S), g(_), v ? C.call(S, _) : S.__proto__ = _, S; + }; + }() : void 0); + } + ), + /***/ + 158: ( + /***/ + function(l, u, d) { + var f = d(3471), g = d(4696); + l.exports = f ? {}.toString : function() { + return "[object " + g(this) + "]"; + }; + } + ), + /***/ + 380: ( + /***/ + function(l, u, d) { + var f = d(6447), g = d(5744); + l.exports = function(v, y) { + var C, A; + if (y === "string" && f(C = v.toString) && !g(A = C.call(v)) || f(C = v.valueOf) && !g(A = C.call(v)) || y !== "string" && f(C = v.toString) && !g(A = C.call(v))) + return A; + throw TypeError("Can't convert object to primitive value"); + }; + } + ), + /***/ + 7545: ( + /***/ + function(l) { + l.exports = {}; + } + ), + /***/ + 892: ( + /***/ + function(l) { + l.exports = function(u) { + try { + return { error: !1, value: u() }; + } catch (d) { + return { error: !0, value: d }; + } + }; + } + ), + /***/ + 9126: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(5744), v = d(9438); + l.exports = function(y, C) { + if (f(y), g(C) && C.constructor === y) + return C; + var A = v.f(y), S = A.resolve; + return S(C), A.promise; + }; + } + ), + /***/ + 533: ( + /***/ + function(l, u, d) { + var f = d(9482); + l.exports = function(g, v, y) { + for (var C in v) + y && y.unsafe && g[C] ? g[C] = v[C] : f(g, C, v[C], y); + return g; + }; + } + ), + /***/ + 9482: ( + /***/ + function(l, u, d) { + var f = d(8711); + l.exports = function(g, v, y, C) { + C && C.enumerable ? g[v] = y : f(g, v, y); + }; + } + ), + /***/ + 3209: ( + /***/ + function(l) { + l.exports = function(u) { + if (u == null) + throw TypeError("Can't call method on " + u); + return u; + }; + } + ), + /***/ + 7613: ( + /***/ + function(l, u, d) { + var f = d(8576); + l.exports = function(g, v) { + try { + Object.defineProperty(f, g, { value: v, configurable: !0, writable: !0 }); + } catch (y) { + f[g] = v; + } + return v; + }; + } + ), + /***/ + 3656: ( + /***/ + function(l, u, d) { + var f = d(150), g = d(2760), v = d(8182), y = d(69), C = v("species"); + l.exports = function(A) { + var S = f(A), _ = g.f; + y && S && !S[C] && _(S, C, { + configurable: !0, + get: function() { + return this; + } + }); + }; + } + ), + /***/ + 1284: ( + /***/ + function(l, u, d) { + var f = d(3471), g = d(2760).f, v = d(8711), y = d(4500), C = d(158), A = d(8182), S = A("toStringTag"); + l.exports = function(_, E, I, w) { + if (_) { + var x = I ? _ : _.prototype; + y(x, S) || g(x, S, { configurable: !0, value: E }), w && !f && v(x, "toString", C); + } + }; + } + ), + /***/ + 9766: ( + /***/ + function(l, u, d) { + var f = d(8717), g = d(2759), v = f("keys"); + l.exports = function(y) { + return v[y] || (v[y] = g(y)); + }; + } + ), + /***/ + 6434: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(7613), v = "__core-js_shared__", y = f[v] || g(v, {}); + l.exports = y; + } + ), + /***/ + 8717: ( + /***/ + function(l, u, d) { + var f = d(5546), g = d(6434); + (l.exports = function(v, y) { + return g[v] || (g[v] = y !== void 0 ? y : {}); + })("versions", []).push({ + version: "3.18.2", + mode: f ? "pure" : "global", + copyright: "© 2021 Denis Pushkarev (zloirock.ru)" + }); + } + ), + /***/ + 4743: ( + /***/ + function(l, u, d) { + var f = d(1138), g = d(1404), v = d(8182), y = v("species"); + l.exports = function(C, A) { + var S = f(C).constructor, _; + return S === void 0 || (_ = f(S)[y]) == null ? A : g(_); + }; + } + ), + /***/ + 863: ( + /***/ + function(l, u, d) { + var f = d(1941), g = d(4845), v = d(3209), y = function(C) { + return function(A, S) { + var _ = g(v(A)), E = f(S), I = _.length, w, x; + return E < 0 || E >= I ? C ? "" : void 0 : (w = _.charCodeAt(E), w < 55296 || w > 56319 || E + 1 === I || (x = _.charCodeAt(E + 1)) < 56320 || x > 57343 ? C ? _.charAt(E) : w : C ? _.slice(E, E + 2) : (w - 55296 << 10) + (x - 56320) + 65536); + }; + }; + l.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: y(!1), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: y(!0) + }; + } + ), + /***/ + 7977: ( + /***/ + function(l) { + var u = 2147483647, d = 36, f = 1, g = 26, v = 38, y = 700, C = 72, A = 128, S = "-", _ = /[^\0-\u007E]/, E = /[.\u3002\uFF0E\uFF61]/g, I = "Overflow: input needs wider integers to process", w = d - f, x = Math.floor, b = String.fromCharCode, R = function(B) { + for (var H = [], Y = 0, X = B.length; Y < X; ) { + var ee = B.charCodeAt(Y++); + if (ee >= 55296 && ee <= 56319 && Y < X) { + var ae = B.charCodeAt(Y++); + (ae & 64512) == 56320 ? H.push(((ee & 1023) << 10) + (ae & 1023) + 65536) : (H.push(ee), Y--); + } else + H.push(ee); + } + return H; + }, M = function(B) { + return B + 22 + 75 * (B < 26); + }, O = function(B, H, Y) { + var X = 0; + for (B = Y ? x(B / y) : B >> 1, B += x(B / H); B > w * g >> 1; X += d) + B = x(B / w); + return x(X + (w + 1) * B / (B + v)); + }, P = function(B) { + var H = []; + B = R(B); + var Y = B.length, X = A, ee = 0, ae = C, J, ne; + for (J = 0; J < B.length; J++) + ne = B[J], ne < 128 && H.push(b(ne)); + var fe = H.length, de = fe; + for (fe && H.push(S); de < Y; ) { + var Te = u; + for (J = 0; J < B.length; J++) + ne = B[J], ne >= X && ne < Te && (Te = ne); + var be = de + 1; + if (Te - X > x((u - ee) / be)) + throw RangeError(I); + for (ee += (Te - X) * be, X = Te, J = 0; J < B.length; J++) { + if (ne = B[J], ne < X && ++ee > u) + throw RangeError(I); + if (ne == X) { + for (var Ve = ee, pe = d; ; pe += d) { + var Be = pe <= ae ? f : pe >= ae + g ? g : pe - ae; + if (Ve < Be) + break; + var Ue = Ve - Be, Qe = d - Be; + H.push(b(M(Be + Ue % Qe))), Ve = x(Ue / Qe); + } + H.push(b(M(Ve))), ae = O(ee, be, de == fe), ee = 0, ++de; + } + } + ++ee, ++X; + } + return H.join(""); + }; + l.exports = function(B) { + var H = [], Y = B.toLowerCase().replace(E, ".").split("."), X, ee; + for (X = 0; X < Y.length; X++) + ee = Y[X], H.push(_.test(ee) ? "xn--" + P(ee) : ee); + return H.join("."); + }; + } + ), + /***/ + 6815: ( + /***/ + function(l, u, d) { + var f = d(2282).PROPER, g = d(6192), v = d(1450), y = "​…᠎"; + l.exports = function(C) { + return g(function() { + return !!v[C]() || y[C]() !== y || f && v[C].name !== C; + }); + }; + } + ), + /***/ + 4277: ( + /***/ + function(l, u, d) { + var f = d(3209), g = d(4845), v = d(1450), y = "[" + v + "]", C = RegExp("^" + y + y + "*"), A = RegExp(y + y + "*$"), S = function(_) { + return function(E) { + var I = g(f(E)); + return _ & 1 && (I = I.replace(C, "")), _ & 2 && (I = I.replace(A, "")), I; + }; + }; + l.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: S(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: S(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: S(3) + }; + } + ), + /***/ + 7160: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(6447), v = d(6192), y = d(8043), C = d(7403), A = d(7449), S = d(9536), _ = d(224), E = f.setImmediate, I = f.clearImmediate, w = f.process, x = f.MessageChannel, b = f.Dispatch, R = 0, M = {}, O = "onreadystatechange", P, B, H, Y; + try { + P = f.location; + } catch (ne) { + } + var X = function(ne) { + if (M.hasOwnProperty(ne)) { + var fe = M[ne]; + delete M[ne], fe(); + } + }, ee = function(ne) { + return function() { + X(ne); + }; + }, ae = function(ne) { + X(ne.data); + }, J = function(ne) { + f.postMessage(String(ne), P.protocol + "//" + P.host); + }; + (!E || !I) && (E = function(fe) { + for (var de = [], Te = arguments.length, be = 1; Te > be; ) + de.push(arguments[be++]); + return M[++R] = function() { + (g(fe) ? fe : Function(fe)).apply(void 0, de); + }, B(R), R; + }, I = function(fe) { + delete M[fe]; + }, _ ? B = function(ne) { + w.nextTick(ee(ne)); + } : b && b.now ? B = function(ne) { + b.now(ee(ne)); + } : x && !S ? (H = new x(), Y = H.port2, H.port1.onmessage = ae, B = y(Y.postMessage, Y, 1)) : f.addEventListener && g(f.postMessage) && !f.importScripts && P && P.protocol !== "file:" && !v(J) ? (B = J, f.addEventListener("message", ae, !1)) : O in A("script") ? B = function(ne) { + C.appendChild(A("script"))[O] = function() { + C.removeChild(this), X(ne); + }; + } : B = function(ne) { + setTimeout(ee(ne), 0); + }), l.exports = { + set: E, + clear: I + }; + } + ), + /***/ + 7739: ( + /***/ + function(l, u, d) { + var f = d(1941), g = Math.max, v = Math.min; + l.exports = function(y, C) { + var A = f(y); + return A < 0 ? g(A + C, 0) : v(A, C); + }; + } + ), + /***/ + 101: ( + /***/ + function(l, u, d) { + var f = d(2202), g = d(3209); + l.exports = function(v) { + return f(g(v)); + }; + } + ), + /***/ + 1941: ( + /***/ + function(l) { + var u = Math.ceil, d = Math.floor; + l.exports = function(f) { + var g = +f; + return g !== g || g === 0 ? 0 : (g > 0 ? d : u)(g); + }; + } + ), + /***/ + 8445: ( + /***/ + function(l, u, d) { + var f = d(1941), g = Math.min; + l.exports = function(v) { + return v > 0 ? g(f(v), 9007199254740991) : 0; + }; + } + ), + /***/ + 1795: ( + /***/ + function(l, u, d) { + var f = d(3209); + l.exports = function(g) { + return Object(f(g)); + }; + } + ), + /***/ + 7888: ( + /***/ + function(l, u, d) { + var f = d(5744), g = d(3236), v = d(5037), y = d(380), C = d(8182), A = C("toPrimitive"); + l.exports = function(S, _) { + if (!f(S) || g(S)) + return S; + var E = v(S, A), I; + if (E) { + if (_ === void 0 && (_ = "default"), I = E.call(S, _), !f(I) || g(I)) + return I; + throw TypeError("Can't convert object to primitive value"); + } + return _ === void 0 && (_ = "number"), y(S, _); + }; + } + ), + /***/ + 77: ( + /***/ + function(l, u, d) { + var f = d(7888), g = d(3236); + l.exports = function(v) { + var y = f(v, "string"); + return g(y) ? y : String(y); + }; + } + ), + /***/ + 3471: ( + /***/ + function(l, u, d) { + var f = d(8182), g = f("toStringTag"), v = {}; + v[g] = "z", l.exports = String(v) === "[object z]"; + } + ), + /***/ + 4845: ( + /***/ + function(l, u, d) { + var f = d(4696); + l.exports = function(g) { + if (f(g) === "Symbol") + throw TypeError("Cannot convert a Symbol value to a string"); + return String(g); + }; + } + ), + /***/ + 9288: ( + /***/ + function(l) { + l.exports = function(u) { + try { + return String(u); + } catch (d) { + return "Object"; + } + }; + } + ), + /***/ + 2759: ( + /***/ + function(l) { + var u = 0, d = Math.random(); + l.exports = function(f) { + return "Symbol(" + String(f === void 0 ? "" : f) + ")_" + (++u + d).toString(36); + }; + } + ), + /***/ + 615: ( + /***/ + function(l, u, d) { + var f = d(3045); + l.exports = f && !Symbol.sham && typeof Symbol.iterator == "symbol"; + } + ), + /***/ + 9207: ( + /***/ + function(l, u, d) { + var f = d(8182); + u.f = f; + } + ), + /***/ + 8182: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(8717), v = d(4500), y = d(2759), C = d(3045), A = d(615), S = g("wks"), _ = f.Symbol, E = A ? _ : _ && _.withoutSetter || y; + l.exports = function(I) { + return (!v(S, I) || !(C || typeof S[I] == "string")) && (C && v(_, I) ? S[I] = _[I] : S[I] = E("Symbol." + I)), S[I]; + }; + } + ), + /***/ + 1450: ( + /***/ + function(l) { + l.exports = ` +\v\f\r                 \u2028\u2029\uFEFF`; + } + ), + /***/ + 4242: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(9341), v = d(4469), y = d(2853), C = d(8711), A = d(774), S = d(273), _ = d(3442), E = d(4845), I = function(x, b) { + var R = this, M = arguments.length > 2 ? arguments[2] : void 0; + if (!(R instanceof I)) + return new I(x, b, M); + v && (R = v(new Error(void 0), g(R))), b !== void 0 && C(R, "message", E(b)), S(R, M); + var O = []; + return _(x, O.push, { that: O }), C(R, "errors", O), R; + }; + I.prototype = y(Error.prototype, { + constructor: A(5, I), + message: A(5, ""), + name: A(5, "AggregateError") + }), f({ global: !0 }, { + AggregateError: I + }); + } + ), + /***/ + 9106: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(6192), v = d(4770), y = d(5744), C = d(1795), A = d(4104), S = d(9361), _ = d(1321), E = d(242), I = d(8182), w = d(4218), x = I("isConcatSpreadable"), b = 9007199254740991, R = "Maximum allowed index exceeded", M = w >= 51 || !g(function() { + var H = []; + return H[x] = !1, H.concat()[0] !== H; + }), O = E("concat"), P = function(H) { + if (!y(H)) + return !1; + var Y = H[x]; + return Y !== void 0 ? !!Y : v(H); + }, B = !M || !O; + f({ target: "Array", proto: !0, forced: B }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function(Y) { + var X = C(this), ee = _(X, 0), ae = 0, J, ne, fe, de, Te; + for (J = -1, fe = arguments.length; J < fe; J++) + if (Te = J === -1 ? X : arguments[J], P(Te)) { + if (de = A(Te), ae + de > b) + throw TypeError(R); + for (ne = 0; ne < de; ne++, ae++) + ne in Te && S(ee, ae, Te[ne]); + } else { + if (ae >= b) + throw TypeError(R); + S(ee, ae++, Te); + } + return ee.length = ae, ee; + } + }); + } + ), + /***/ + 1710: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(2724), v = d(7423); + f({ target: "Array", proto: !0 }, { + fill: g + }), v("fill"); + } + ), + /***/ + 3436: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(454).filter, v = d(242), y = v("filter"); + f({ target: "Array", proto: !0, forced: !y }, { + filter: function(A) { + return g(this, A, arguments.length > 1 ? arguments[1] : void 0); + } + }); + } + ), + /***/ + 9823: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(7397); + f({ target: "Array", proto: !0, forced: [].forEach != g }, { + forEach: g + }); + } + ), + /***/ + 9173: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(841), v = d(9770), y = !v(function(C) { + Array.from(C); + }); + f({ target: "Array", stat: !0, forced: y }, { + from: g + }); + } + ), + /***/ + 2276: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(8180).indexOf, v = d(424), y = [].indexOf, C = !!y && 1 / [1].indexOf(1, -0) < 0, A = v("indexOf"); + f({ target: "Array", proto: !0, forced: C || !A }, { + indexOf: function(_) { + return C ? y.apply(this, arguments) || 0 : g(this, _, arguments.length > 1 ? arguments[1] : void 0); + } + }); + } + ), + /***/ + 8118: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(4770); + f({ target: "Array", stat: !0 }, { + isArray: g + }); + } + ), + /***/ + 8939: ( + /***/ + function(l, u, d) { + var f = d(101), g = d(7423), v = d(7771), y = d(3326), C = d(7218), A = "Array Iterator", S = y.set, _ = y.getterFor(A); + l.exports = C(Array, "Array", function(E, I) { + S(this, { + type: A, + target: f(E), + // target + index: 0, + // next index + kind: I + // kind + }); + }, function() { + var E = _(this), I = E.target, w = E.kind, x = E.index++; + return !I || x >= I.length ? (E.target = void 0, { value: void 0, done: !0 }) : w == "keys" ? { value: x, done: !1 } : w == "values" ? { value: I[x], done: !1 } : { value: [x, I[x]], done: !1 }; + }, "values"), v.Arguments = v.Array, g("keys"), g("values"), g("entries"); + } + ), + /***/ + 3838: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(454).map, v = d(242), y = v("map"); + f({ target: "Array", proto: !0, forced: !y }, { + map: function(A) { + return g(this, A, arguments.length > 1 ? arguments[1] : void 0); + } + }); + } + ), + /***/ + 5818: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(4770), v = d(2091), y = d(5744), C = d(7739), A = d(4104), S = d(101), _ = d(9361), E = d(8182), I = d(242), w = I("slice"), x = E("species"), b = [].slice, R = Math.max; + f({ target: "Array", proto: !0, forced: !w }, { + slice: function(O, P) { + var B = S(this), H = A(B), Y = C(O, H), X = C(P === void 0 ? H : P, H), ee, ae, J; + if (g(B) && (ee = B.constructor, v(ee) && (ee === Array || g(ee.prototype)) ? ee = void 0 : y(ee) && (ee = ee[x], ee === null && (ee = void 0)), ee === Array || ee === void 0)) + return b.call(B, Y, X); + for (ae = new (ee === void 0 ? Array : ee)(R(X - Y, 0)), J = 0; Y < X; Y++, J++) + Y in B && _(ae, J, B[Y]); + return ae.length = J, ae; + } + }); + } + ), + /***/ + 2178: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(7739), v = d(1941), y = d(4104), C = d(1795), A = d(1321), S = d(9361), _ = d(242), E = _("splice"), I = Math.max, w = Math.min, x = 9007199254740991, b = "Maximum allowed length exceeded"; + f({ target: "Array", proto: !0, forced: !E }, { + splice: function(M, O) { + var P = C(this), B = y(P), H = g(M, B), Y = arguments.length, X, ee, ae, J, ne, fe; + if (Y === 0 ? X = ee = 0 : Y === 1 ? (X = 0, ee = B - H) : (X = Y - 2, ee = w(I(v(O), 0), B - H)), B + X - ee > x) + throw TypeError(b); + for (ae = A(P, ee), J = 0; J < ee; J++) + ne = H + J, ne in P && S(ae, J, P[ne]); + if (ae.length = ee, X < ee) { + for (J = H; J < B - ee; J++) + ne = J + ee, fe = J + X, ne in P ? P[fe] = P[ne] : delete P[fe]; + for (J = B; J > B - ee + X; J--) + delete P[J - 1]; + } else if (X > ee) + for (J = B - ee; J > H; J--) + ne = J + ee - 1, fe = J + X - 1, ne in P ? P[fe] = P[ne] : delete P[fe]; + for (J = 0; J < X; J++) + P[J + H] = arguments[J + 2]; + return P.length = B - ee + X, ae; + } + }); + } + ), + /***/ + 665: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(6782); + f({ target: "Function", proto: !0 }, { + bind: g + }); + } + ), + /***/ + 8671: ( + /***/ + function(l, u, d) { + var f = d(8576), g = d(1284); + g(f.JSON, "JSON", !0); + } + ), + /***/ + 8556: ( + /***/ + function() { + } + ), + /***/ + 2666: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(2558); + f({ target: "Number", stat: !0, forced: Number.parseInt != g }, { + parseInt: g + }); + } + ), + /***/ + 3113: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(69), v = d(2853); + f({ target: "Object", stat: !0, sham: !g }, { + create: v + }); + } + ), + /***/ + 297: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(69), v = d(2760); + f({ target: "Object", stat: !0, forced: !g, sham: !g }, { + defineProperty: v.f + }); + } + ), + /***/ + 9234: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(6192), v = d(1795), y = d(9341), C = d(4635), A = g(function() { + y(1); + }); + f({ target: "Object", stat: !0, forced: A, sham: !C }, { + getPrototypeOf: function(_) { + return y(v(_)); + } + }); + } + ), + /***/ + 2647: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(1795), v = d(7653), y = d(6192), C = y(function() { + v(1); + }); + f({ target: "Object", stat: !0, forced: C }, { + keys: function(S) { + return v(g(S)); + } + }); + } + ), + /***/ + 3222: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(4469); + f({ target: "Object", stat: !0 }, { + setPrototypeOf: g + }); + } + ), + /***/ + 6663: ( + /***/ + function() { + } + ), + /***/ + 4859: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(15); + f({ global: !0, forced: parseFloat != g }, { + parseFloat: g + }); + } + ), + /***/ + 5706: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(2558); + f({ global: !0, forced: parseInt != g }, { + parseInt: g + }); + } + ), + /***/ + 7884: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(6235), v = d(9438), y = d(892), C = d(3442); + f({ target: "Promise", stat: !0 }, { + allSettled: function(S) { + var _ = this, E = v.f(_), I = E.resolve, w = E.reject, x = y(function() { + var b = g(_.resolve), R = [], M = 0, O = 1; + C(S, function(P) { + var B = M++, H = !1; + R.push(void 0), O++, b.call(_, P).then(function(Y) { + H || (H = !0, R[B] = { status: "fulfilled", value: Y }, --O || I(R)); + }, function(Y) { + H || (H = !0, R[B] = { status: "rejected", reason: Y }, --O || I(R)); + }); + }), --O || I(R); + }); + return x.error && w(x.value), E.promise; + } + }); + } + ), + /***/ + 8885: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(6235), v = d(150), y = d(9438), C = d(892), A = d(3442), S = "No one promise resolved"; + f({ target: "Promise", stat: !0 }, { + any: function(E) { + var I = this, w = y.f(I), x = w.resolve, b = w.reject, R = C(function() { + var M = g(I.resolve), O = [], P = 0, B = 1, H = !1; + A(E, function(Y) { + var X = P++, ee = !1; + O.push(void 0), B++, M.call(I, Y).then(function(ae) { + ee || H || (H = !0, x(ae)); + }, function(ae) { + ee || H || (ee = !0, O[X] = ae, --B || b(new (v("AggregateError"))(O, S))); + }); + }), --B || b(new (v("AggregateError"))(O, S)); + }); + return R.error && b(R.value), w.promise; + } + }); + } + ), + /***/ + 1868: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(5546), v = d(4471), y = d(6192), C = d(150), A = d(6447), S = d(4743), _ = d(9126), E = d(9482), I = !!v && y(function() { + v.prototype.finally.call({ then: function() { + } }, function() { + }); + }); + if (f({ target: "Promise", proto: !0, real: !0, forced: I }, { + finally: function(x) { + var b = S(this, C("Promise")), R = A(x); + return this.then( + R ? function(M) { + return _(b, x()).then(function() { + return M; + }); + } : x, + R ? function(M) { + return _(b, x()).then(function() { + throw M; + }); + } : x + ); + } + }), !g && A(v)) { + var w = C("Promise").prototype.finally; + v.prototype.finally !== w && E(v.prototype, "finally", w, { unsafe: !0 }); + } + } + ), + /***/ + 9021: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(5546), v = d(8576), y = d(150), C = d(4471), A = d(9482), S = d(533), _ = d(4469), E = d(1284), I = d(3656), w = d(6235), x = d(6447), b = d(5744), R = d(6961), M = d(9516), O = d(3442), P = d(9770), B = d(4743), H = d(7160).set, Y = d(2950), X = d(9126), ee = d(3681), ae = d(9438), J = d(892), ne = d(3326), fe = d(9245), de = d(8182), Te = d(2957), be = d(224), Ve = d(4218), pe = de("species"), Be = "Promise", Ue = ne.get, Qe = ne.set, Re = ne.getterFor(Be), Ne = C && C.prototype, Me = C, we = Ne, He = v.TypeError, Ie = v.document, Ae = v.process, Fe = ae.f, $e = Fe, lt = !!(Ie && Ie.createEvent && v.dispatchEvent), it = x(v.PromiseRejectionEvent), nt = "unhandledrejection", ut = "rejectionhandled", rt = 0, Ke = 1, ze = 2, qe = 1, ct = 2, ft = !1, _t, Nt, Yt, tr, Ct = fe(Be, function() { + var Lt = M(Me), Ot = Lt !== String(Me); + if (!Ot && Ve === 66 || g && !we.finally) + return !0; + if (Ve >= 51 && /native code/.test(Lt)) + return !1; + var Jt = new Me(function(Ht) { + Ht(1); + }), jt = function(Ht) { + Ht(function() { + }, function() { + }); + }, nr = Jt.constructor = {}; + return nr[pe] = jt, ft = Jt.then(function() { + }) instanceof jt, ft ? !Ot && Te && !it : !0; + }), hr = Ct || !P(function(Lt) { + Me.all(Lt).catch(function() { + }); + }), Er = function(Lt) { + var Ot; + return b(Lt) && x(Ot = Lt.then) ? Ot : !1; + }, Fr = function(Lt, Ot) { + if (!Lt.notified) { + Lt.notified = !0; + var Jt = Lt.reactions; + Y(function() { + for (var jt = Lt.value, nr = Lt.state == Ke, Ht = 0; Jt.length > Ht; ) { + var wn = Jt[Ht++], On = nr ? wn.ok : wn.fail, or = wn.resolve, Pt = wn.reject, Qr = wn.domain, Bn, Un, Yn; + try { + On ? (nr || (Lt.rejection === ct && nn(Lt), Lt.rejection = qe), On === !0 ? Bn = jt : (Qr && Qr.enter(), Bn = On(jt), Qr && (Qr.exit(), Yn = !0)), Bn === wn.promise ? Pt(He("Promise-chain cycle")) : (Un = Er(Bn)) ? Un.call(Bn, or, Pt) : or(Bn)) : Pt(jt); + } catch (fi) { + Qr && !Yn && Qr.exit(), Pt(fi); + } + } + Lt.reactions = [], Lt.notified = !1, Ot && !Lt.rejection && hn(Lt); + }); + } + }, Dn = function(Lt, Ot, Jt) { + var jt, nr; + lt ? (jt = Ie.createEvent("Event"), jt.promise = Ot, jt.reason = Jt, jt.initEvent(Lt, !1, !0), v.dispatchEvent(jt)) : jt = { promise: Ot, reason: Jt }, !it && (nr = v["on" + Lt]) ? nr(jt) : Lt === nt && ee("Unhandled promise rejection", Jt); + }, hn = function(Lt) { + H.call(v, function() { + var Ot = Lt.facade, Jt = Lt.value, jt = Jn(Lt), nr; + if (jt && (nr = J(function() { + be ? Ae.emit("unhandledRejection", Jt, Ot) : Dn(nt, Ot, Jt); + }), Lt.rejection = be || Jn(Lt) ? ct : qe, nr.error)) + throw nr.value; + }); + }, Jn = function(Lt) { + return Lt.rejection !== qe && !Lt.parent; + }, nn = function(Lt) { + H.call(v, function() { + var Ot = Lt.facade; + be ? Ae.emit("rejectionHandled", Ot) : Dn(ut, Ot, Lt.value); + }); + }, dn = function(Lt, Ot, Jt) { + return function(jt) { + Lt(Ot, jt, Jt); + }; + }, an = function(Lt, Ot, Jt) { + Lt.done || (Lt.done = !0, Jt && (Lt = Jt), Lt.value = Ot, Lt.state = ze, Fr(Lt, !0)); + }, zn = function(Lt, Ot, Jt) { + if (!Lt.done) { + Lt.done = !0, Jt && (Lt = Jt); + try { + if (Lt.facade === Ot) + throw He("Promise can't be resolved itself"); + var jt = Er(Ot); + jt ? Y(function() { + var nr = { done: !1 }; + try { + jt.call( + Ot, + dn(zn, nr, Lt), + dn(an, nr, Lt) + ); + } catch (Ht) { + an(nr, Ht, Lt); + } + }) : (Lt.value = Ot, Lt.state = Ke, Fr(Lt, !1)); + } catch (nr) { + an({ done: !1 }, nr, Lt); + } + } + }; + if (Ct && (Me = function(Ot) { + R(this, Me, Be), w(Ot), _t.call(this); + var Jt = Ue(this); + try { + Ot(dn(zn, Jt), dn(an, Jt)); + } catch (jt) { + an(Jt, jt); + } + }, we = Me.prototype, _t = function(Ot) { + Qe(this, { + type: Be, + done: !1, + notified: !1, + parent: !1, + reactions: [], + rejection: !1, + state: rt, + value: void 0 + }); + }, _t.prototype = S(we, { + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + then: function(Ot, Jt) { + var jt = Re(this), nr = Fe(B(this, Me)); + return nr.ok = x(Ot) ? Ot : !0, nr.fail = x(Jt) && Jt, nr.domain = be ? Ae.domain : void 0, jt.parent = !0, jt.reactions.push(nr), jt.state != rt && Fr(jt, !1), nr.promise; + }, + // `Promise.prototype.catch` method + // https://tc39.es/ecma262/#sec-promise.prototype.catch + catch: function(Lt) { + return this.then(void 0, Lt); + } + }), Nt = function() { + var Lt = new _t(), Ot = Ue(Lt); + this.promise = Lt, this.resolve = dn(zn, Ot), this.reject = dn(an, Ot); + }, ae.f = Fe = function(Lt) { + return Lt === Me || Lt === Yt ? new Nt(Lt) : $e(Lt); + }, !g && x(C) && Ne !== Object.prototype)) { + tr = Ne.then, ft || (A(Ne, "then", function(Ot, Jt) { + var jt = this; + return new Me(function(nr, Ht) { + tr.call(jt, nr, Ht); + }).then(Ot, Jt); + }, { unsafe: !0 }), A(Ne, "catch", we.catch, { unsafe: !0 })); + try { + delete Ne.constructor; + } catch (Lt) { + } + _ && _(Ne, we); + } + f({ global: !0, wrap: !0, forced: Ct }, { + Promise: Me + }), E(Me, Be, !1, !0), I(Be), Yt = y(Be), f({ target: Be, stat: !0, forced: Ct }, { + // `Promise.reject` method + // https://tc39.es/ecma262/#sec-promise.reject + reject: function(Ot) { + var Jt = Fe(this); + return Jt.reject.call(void 0, Ot), Jt.promise; + } + }), f({ target: Be, stat: !0, forced: g || Ct }, { + // `Promise.resolve` method + // https://tc39.es/ecma262/#sec-promise.resolve + resolve: function(Ot) { + return X(g && this === Yt ? Me : this, Ot); + } + }), f({ target: Be, stat: !0, forced: hr }, { + // `Promise.all` method + // https://tc39.es/ecma262/#sec-promise.all + all: function(Ot) { + var Jt = this, jt = Fe(Jt), nr = jt.resolve, Ht = jt.reject, wn = J(function() { + var On = w(Jt.resolve), or = [], Pt = 0, Qr = 1; + O(Ot, function(Bn) { + var Un = Pt++, Yn = !1; + or.push(void 0), Qr++, On.call(Jt, Bn).then(function(fi) { + Yn || (Yn = !0, or[Un] = fi, --Qr || nr(or)); + }, Ht); + }), --Qr || nr(or); + }); + return wn.error && Ht(wn.value), jt.promise; + }, + // `Promise.race` method + // https://tc39.es/ecma262/#sec-promise.race + race: function(Ot) { + var Jt = this, jt = Fe(Jt), nr = jt.reject, Ht = J(function() { + var wn = w(Jt.resolve); + O(Ot, function(On) { + wn.call(Jt, On).then(jt.resolve, nr); + }); + }); + return Ht.error && nr(Ht.value), jt.promise; + } + }); + } + ), + /***/ + 5397: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(150), v = d(1404), y = d(1138), C = d(5744), A = d(2853), S = d(6782), _ = d(6192), E = g("Reflect", "construct"), I = _(function() { + function b() { + } + return !(E(function() { + }, [], b) instanceof b); + }), w = !_(function() { + E(function() { + }); + }), x = I || w; + f({ target: "Reflect", stat: !0, forced: x, sham: x }, { + construct: function(R, M) { + v(R), y(M); + var O = arguments.length < 3 ? R : v(arguments[2]); + if (w && !I) + return E(R, M, O); + if (R == O) { + switch (M.length) { + case 0: + return new R(); + case 1: + return new R(M[0]); + case 2: + return new R(M[0], M[1]); + case 3: + return new R(M[0], M[1], M[2]); + case 4: + return new R(M[0], M[1], M[2], M[3]); + } + var P = [null]; + return P.push.apply(P, M), new (S.apply(R, P))(); + } + var B = O.prototype, H = A(C(B) ? B : Object.prototype), Y = Function.apply.call(R, H, M); + return C(Y) ? Y : H; + } + }); + } + ), + /***/ + 1367: ( + /***/ + function() { + } + ), + /***/ + 5454: ( + /***/ + function(l, u, d) { + var f = d(863).charAt, g = d(4845), v = d(3326), y = d(7218), C = "String Iterator", A = v.set, S = v.getterFor(C); + y(String, "String", function(_) { + A(this, { + type: C, + string: g(_), + index: 0 + }); + }, function() { + var E = S(this), I = E.string, w = E.index, x; + return w >= I.length ? { value: void 0, done: !0 } : (x = f(I, w), E.index += x.length, { value: x, done: !1 }); + }); + } + ), + /***/ + 957: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(4277).trim, v = d(6815); + f({ target: "String", proto: !0, forced: v("trim") }, { + trim: function() { + return g(this); + } + }); + } + ), + /***/ + 9781: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("asyncIterator"); + } + ), + /***/ + 492: ( + /***/ + function() { + } + ), + /***/ + 6681: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("hasInstance"); + } + ), + /***/ + 9594: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("isConcatSpreadable"); + } + ), + /***/ + 3665: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("iterator"); + } + ), + /***/ + 6187: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(8576), v = d(150), y = d(5546), C = d(69), A = d(3045), S = d(6192), _ = d(4500), E = d(4770), I = d(6447), w = d(5744), x = d(3236), b = d(1138), R = d(1795), M = d(101), O = d(77), P = d(4845), B = d(774), H = d(2853), Y = d(7653), X = d(2092), ee = d(4052), ae = d(4750), J = d(5141), ne = d(2760), fe = d(6007), de = d(9482), Te = d(8717), be = d(9766), Ve = d(4535), pe = d(2759), Be = d(8182), Ue = d(9207), Qe = d(1488), Re = d(1284), Ne = d(3326), Me = d(454).forEach, we = be("hidden"), He = "Symbol", Ie = "prototype", Ae = Be("toPrimitive"), Fe = Ne.set, $e = Ne.getterFor(He), lt = Object[Ie], it = g.Symbol, nt = v("JSON", "stringify"), ut = J.f, rt = ne.f, Ke = ee.f, ze = fe.f, qe = Te("symbols"), ct = Te("op-symbols"), ft = Te("string-to-symbol-registry"), _t = Te("symbol-to-string-registry"), Nt = Te("wks"), Yt = g.QObject, tr = !Yt || !Yt[Ie] || !Yt[Ie].findChild, Ct = C && S(function() { + return H(rt({}, "a", { + get: function() { + return rt(this, "a", { value: 7 }).a; + } + })).a != 7; + }) ? function(Lt, Ot, Jt) { + var jt = ut(lt, Ot); + jt && delete lt[Ot], rt(Lt, Ot, Jt), jt && Lt !== lt && rt(lt, Ot, jt); + } : rt, hr = function(Lt, Ot) { + var Jt = qe[Lt] = H(it[Ie]); + return Fe(Jt, { + type: He, + tag: Lt, + description: Ot + }), C || (Jt.description = Ot), Jt; + }, Er = function(Ot, Jt, jt) { + Ot === lt && Er(ct, Jt, jt), b(Ot); + var nr = O(Jt); + return b(jt), _(qe, nr) ? (jt.enumerable ? (_(Ot, we) && Ot[we][nr] && (Ot[we][nr] = !1), jt = H(jt, { enumerable: B(0, !1) })) : (_(Ot, we) || rt(Ot, we, B(1, {})), Ot[we][nr] = !0), Ct(Ot, nr, jt)) : rt(Ot, nr, jt); + }, Fr = function(Ot, Jt) { + b(Ot); + var jt = M(Jt), nr = Y(jt).concat(dn(jt)); + return Me(nr, function(Ht) { + (!C || hn.call(jt, Ht)) && Er(Ot, Ht, jt[Ht]); + }), Ot; + }, Dn = function(Ot, Jt) { + return Jt === void 0 ? H(Ot) : Fr(H(Ot), Jt); + }, hn = function(Ot) { + var Jt = O(Ot), jt = ze.call(this, Jt); + return this === lt && _(qe, Jt) && !_(ct, Jt) ? !1 : jt || !_(this, Jt) || !_(qe, Jt) || _(this, we) && this[we][Jt] ? jt : !0; + }, Jn = function(Ot, Jt) { + var jt = M(Ot), nr = O(Jt); + if (!(jt === lt && _(qe, nr) && !_(ct, nr))) { + var Ht = ut(jt, nr); + return Ht && _(qe, nr) && !(_(jt, we) && jt[we][nr]) && (Ht.enumerable = !0), Ht; + } + }, nn = function(Ot) { + var Jt = Ke(M(Ot)), jt = []; + return Me(Jt, function(nr) { + !_(qe, nr) && !_(Ve, nr) && jt.push(nr); + }), jt; + }, dn = function(Ot) { + var Jt = Ot === lt, jt = Ke(Jt ? ct : M(Ot)), nr = []; + return Me(jt, function(Ht) { + _(qe, Ht) && (!Jt || _(lt, Ht)) && nr.push(qe[Ht]); + }), nr; + }; + if (A || (it = function() { + if (this instanceof it) + throw TypeError("Symbol is not a constructor"); + var Ot = !arguments.length || arguments[0] === void 0 ? void 0 : P(arguments[0]), Jt = pe(Ot), jt = function(nr) { + this === lt && jt.call(ct, nr), _(this, we) && _(this[we], Jt) && (this[we][Jt] = !1), Ct(this, Jt, B(1, nr)); + }; + return C && tr && Ct(lt, Jt, { configurable: !0, set: jt }), hr(Jt, Ot); + }, de(it[Ie], "toString", function() { + return $e(this).tag; + }), de(it, "withoutSetter", function(Lt) { + return hr(pe(Lt), Lt); + }), fe.f = hn, ne.f = Er, J.f = Jn, X.f = ee.f = nn, ae.f = dn, Ue.f = function(Lt) { + return hr(Be(Lt), Lt); + }, C && (rt(it[Ie], "description", { + configurable: !0, + get: function() { + return $e(this).description; + } + }), y || de(lt, "propertyIsEnumerable", hn, { unsafe: !0 }))), f({ global: !0, wrap: !0, forced: !A, sham: !A }, { + Symbol: it + }), Me(Y(Nt), function(Lt) { + Qe(Lt); + }), f({ target: He, stat: !0, forced: !A }, { + // `Symbol.for` method + // https://tc39.es/ecma262/#sec-symbol.for + for: function(Lt) { + var Ot = P(Lt); + if (_(ft, Ot)) + return ft[Ot]; + var Jt = it(Ot); + return ft[Ot] = Jt, _t[Jt] = Ot, Jt; + }, + // `Symbol.keyFor` method + // https://tc39.es/ecma262/#sec-symbol.keyfor + keyFor: function(Ot) { + if (!x(Ot)) + throw TypeError(Ot + " is not a symbol"); + if (_(_t, Ot)) + return _t[Ot]; + }, + useSetter: function() { + tr = !0; + }, + useSimple: function() { + tr = !1; + } + }), f({ target: "Object", stat: !0, forced: !A, sham: !C }, { + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + create: Dn, + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + defineProperty: Er, + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + defineProperties: Fr, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: Jn + }), f({ target: "Object", stat: !0, forced: !A }, { + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: nn, + // `Object.getOwnPropertySymbols` method + // https://tc39.es/ecma262/#sec-object.getownpropertysymbols + getOwnPropertySymbols: dn + }), f({ target: "Object", stat: !0, forced: S(function() { + ae.f(1); + }) }, { + getOwnPropertySymbols: function(Ot) { + return ae.f(R(Ot)); + } + }), nt) { + var an = !A || S(function() { + var Lt = it(); + return nt([Lt]) != "[null]" || nt({ a: Lt }) != "{}" || nt(Object(Lt)) != "{}"; + }); + f({ target: "JSON", stat: !0, forced: an }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function(Ot, Jt, jt) { + for (var nr = [Ot], Ht = 1, wn; arguments.length > Ht; ) + nr.push(arguments[Ht++]); + if (wn = Jt, !(!w(Jt) && Ot === void 0 || x(Ot))) + return E(Jt) || (Jt = function(On, or) { + if (I(wn) && (or = wn.call(this, On, or)), !x(or)) + return or; + }), nr[1] = Jt, nt.apply(null, nr); + } + }); + } + if (!it[Ie][Ae]) { + var zn = it[Ie].valueOf; + de(it[Ie], Ae, function() { + return zn.apply(this, arguments); + }); + } + Re(it, He), Ve[we] = !0; + } + ), + /***/ + 1250: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("matchAll"); + } + ), + /***/ + 9017: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("match"); + } + ), + /***/ + 9786: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("replace"); + } + ), + /***/ + 503: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("search"); + } + ), + /***/ + 6565: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("species"); + } + ), + /***/ + 9322: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("split"); + } + ), + /***/ + 3610: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("toPrimitive"); + } + ), + /***/ + 6886: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("toStringTag"); + } + ), + /***/ + 3514: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("unscopables"); + } + ), + /***/ + 177: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("asyncDispose"); + } + ), + /***/ + 9031: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("dispose"); + } + ), + /***/ + 6658: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("matcher"); + } + ), + /***/ + 1875: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("metadata"); + } + ), + /***/ + 8658: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("observable"); + } + ), + /***/ + 4592: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("patternMatch"); + } + ), + /***/ + 6680: ( + /***/ + function(l, u, d) { + var f = d(1488); + f("replaceAll"); + } + ), + /***/ + 162: ( + /***/ + function(l, u, d) { + d(8939); + var f = d(7365), g = d(8576), v = d(4696), y = d(8711), C = d(7771), A = d(8182), S = A("toStringTag"); + for (var _ in f) { + var E = g[_], I = E && E.prototype; + I && v(I) !== S && y(I, S, _), C[_] = C.Array; + } + } + ), + /***/ + 2906: ( + /***/ + function(l, u, d) { + var f = d(3085), g = d(8576), v = d(6447), y = d(8989), C = [].slice, A = /MSIE .\./.test(y), S = function(_) { + return function(E, I) { + var w = arguments.length > 2, x = w ? C.call(arguments, 2) : void 0; + return _(w ? function() { + (v(E) ? E : Function(E)).apply(this, x); + } : E, I); + }; + }; + f({ global: !0, bind: !0, forced: A }, { + // `setTimeout` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout + setTimeout: S(g.setTimeout), + // `setInterval` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval + setInterval: S(g.setInterval) + }); + } + ), + /***/ + 9336: ( + /***/ + function(l, u, d) { + d(8939); + var f = d(3085), g = d(150), v = d(4551), y = d(9482), C = d(533), A = d(1284), S = d(5148), _ = d(3326), E = d(6961), I = d(6447), w = d(4500), x = d(8043), b = d(4696), R = d(1138), M = d(5744), O = d(4845), P = d(2853), B = d(774), H = d(1669), Y = d(8703), X = d(8182), ee = g("fetch"), ae = g("Request"), J = ae && ae.prototype, ne = g("Headers"), fe = X("iterator"), de = "URLSearchParams", Te = de + "Iterator", be = _.set, Ve = _.getterFor(de), pe = _.getterFor(Te), Be = /\+/g, Ue = Array(4), Qe = function(Ke) { + return Ue[Ke - 1] || (Ue[Ke - 1] = RegExp("((?:%[\\da-f]{2}){" + Ke + "})", "gi")); + }, Re = function(Ke) { + try { + return decodeURIComponent(Ke); + } catch (ze) { + return Ke; + } + }, Ne = function(Ke) { + var ze = Ke.replace(Be, " "), qe = 4; + try { + return decodeURIComponent(ze); + } catch (ct) { + for (; qe; ) + ze = ze.replace(Qe(qe--), Re); + return ze; + } + }, Me = /[!'()~]|%20/g, we = { + "!": "%21", + "'": "%27", + "(": "%28", + ")": "%29", + "~": "%7E", + "%20": "+" + }, He = function(Ke) { + return we[Ke]; + }, Ie = function(Ke) { + return encodeURIComponent(Ke).replace(Me, He); + }, Ae = function(Ke, ze) { + if (ze) + for (var qe = ze.split("&"), ct = 0, ft, _t; ct < qe.length; ) + ft = qe[ct++], ft.length && (_t = ft.split("="), Ke.push({ + key: Ne(_t.shift()), + value: Ne(_t.join("=")) + })); + }, Fe = function(Ke) { + this.entries.length = 0, Ae(this.entries, Ke); + }, $e = function(Ke, ze) { + if (Ke < ze) + throw TypeError("Not enough arguments"); + }, lt = S(function(ze, qe) { + be(this, { + type: Te, + iterator: H(Ve(ze).entries), + kind: qe + }); + }, "Iterator", function() { + var ze = pe(this), qe = ze.kind, ct = ze.iterator.next(), ft = ct.value; + return ct.done || (ct.value = qe === "keys" ? ft.key : qe === "values" ? ft.value : [ft.key, ft.value]), ct; + }), it = function() { + E(this, it, de); + var ze = arguments.length > 0 ? arguments[0] : void 0, qe = this, ct = [], ft, _t, Nt, Yt, tr, Ct, hr, Er, Fr; + if (be(qe, { + type: de, + entries: ct, + updateURL: function() { + }, + updateSearchParams: Fe + }), ze !== void 0) + if (M(ze)) + if (ft = Y(ze), ft) + for (_t = H(ze, ft), Nt = _t.next; !(Yt = Nt.call(_t)).done; ) { + if (tr = H(R(Yt.value)), Ct = tr.next, (hr = Ct.call(tr)).done || (Er = Ct.call(tr)).done || !Ct.call(tr).done) + throw TypeError("Expected sequence with length 2"); + ct.push({ key: O(hr.value), value: O(Er.value) }); + } + else + for (Fr in ze) + w(ze, Fr) && ct.push({ key: Fr, value: O(ze[Fr]) }); + else + Ae( + ct, + typeof ze == "string" ? ze.charAt(0) === "?" ? ze.slice(1) : ze : O(ze) + ); + }, nt = it.prototype; + if (C(nt, { + // `URLSearchParams.prototype.append` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function(ze, qe) { + $e(arguments.length, 2); + var ct = Ve(this); + ct.entries.push({ key: O(ze), value: O(qe) }), ct.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + delete: function(Ke) { + $e(arguments.length, 1); + for (var ze = Ve(this), qe = ze.entries, ct = O(Ke), ft = 0; ft < qe.length; ) + qe[ft].key === ct ? qe.splice(ft, 1) : ft++; + ze.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function(ze) { + $e(arguments.length, 1); + for (var qe = Ve(this).entries, ct = O(ze), ft = 0; ft < qe.length; ft++) + if (qe[ft].key === ct) + return qe[ft].value; + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function(ze) { + $e(arguments.length, 1); + for (var qe = Ve(this).entries, ct = O(ze), ft = [], _t = 0; _t < qe.length; _t++) + qe[_t].key === ct && ft.push(qe[_t].value); + return ft; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function(ze) { + $e(arguments.length, 1); + for (var qe = Ve(this).entries, ct = O(ze), ft = 0; ft < qe.length; ) + if (qe[ft++].key === ct) + return !0; + return !1; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function(ze, qe) { + $e(arguments.length, 1); + for (var ct = Ve(this), ft = ct.entries, _t = !1, Nt = O(ze), Yt = O(qe), tr = 0, Ct; tr < ft.length; tr++) + Ct = ft[tr], Ct.key === Nt && (_t ? ft.splice(tr--, 1) : (_t = !0, Ct.value = Yt)); + _t || ft.push({ key: Nt, value: Yt }), ct.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function() { + var ze = Ve(this), qe = ze.entries, ct = qe.slice(), ft, _t, Nt; + for (qe.length = 0, Nt = 0; Nt < ct.length; Nt++) { + for (ft = ct[Nt], _t = 0; _t < Nt; _t++) + if (qe[_t].key > ft.key) { + qe.splice(_t, 0, ft); + break; + } + _t === Nt && qe.push(ft); + } + ze.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function(ze) { + for (var qe = Ve(this).entries, ct = x(ze, arguments.length > 1 ? arguments[1] : void 0, 3), ft = 0, _t; ft < qe.length; ) + _t = qe[ft++], ct(_t.value, _t.key, this); + }, + // `URLSearchParams.prototype.keys` method + keys: function() { + return new lt(this, "keys"); + }, + // `URLSearchParams.prototype.values` method + values: function() { + return new lt(this, "values"); + }, + // `URLSearchParams.prototype.entries` method + entries: function() { + return new lt(this, "entries"); + } + }, { enumerable: !0 }), y(nt, fe, nt.entries, { name: "entries" }), y(nt, "toString", function() { + for (var ze = Ve(this).entries, qe = [], ct = 0, ft; ct < ze.length; ) + ft = ze[ct++], qe.push(Ie(ft.key) + "=" + Ie(ft.value)); + return qe.join("&"); + }, { enumerable: !0 }), A(it, de), f({ global: !0, forced: !v }, { + URLSearchParams: it + }), !v && I(ne)) { + var ut = function(Ke) { + if (M(Ke)) { + var ze = Ke.body, qe; + if (b(ze) === de) + return qe = Ke.headers ? new ne(Ke.headers) : new ne(), qe.has("content-type") || qe.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"), P(Ke, { + body: B(0, String(ze)), + headers: B(0, qe) + }); + } + return Ke; + }; + if (I(ee) && f({ global: !0, enumerable: !0, forced: !0 }, { + fetch: function(ze) { + return ee(ze, arguments.length > 1 ? ut(arguments[1]) : {}); + } + }), I(ae)) { + var rt = function(ze) { + return E(this, rt, "Request"), new ae(ze, arguments.length > 1 ? ut(arguments[1]) : {}); + }; + J.constructor = rt, rt.prototype = J, f({ global: !0, forced: !0 }, { + Request: rt + }); + } + } + l.exports = { + URLSearchParams: it, + getState: Ve + }; + } + ), + /***/ + 4948: ( + /***/ + function(l, u, d) { + d(5454); + var f = d(3085), g = d(69), v = d(4551), y = d(8576), C = d(1187), A = d(9482), S = d(6961), _ = d(4500), E = d(2503), I = d(841), w = d(863).codeAt, x = d(7977), b = d(4845), R = d(1284), M = d(9336), O = d(3326), P = y.URL, B = M.URLSearchParams, H = M.getState, Y = O.set, X = O.getterFor("URL"), ee = Math.floor, ae = Math.pow, J = "Invalid authority", ne = "Invalid scheme", fe = "Invalid host", de = "Invalid port", Te = /[A-Za-z]/, be = /[\d+-.A-Za-z]/, Ve = /\d/, pe = /^0x/i, Be = /^[0-7]+$/, Ue = /^\d+$/, Qe = /^[\dA-Fa-f]+$/, Re = /[\0\t\n\r #%/:<>?@[\\\]^|]/, Ne = /[\0\t\n\r #/:<>?@[\\\]^|]/, Me = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g, we = /[\t\n\r]/g, He, Ie = function(Xe, Tt) { + var Bt, Gt, ur; + if (Tt.charAt(0) == "[") { + if (Tt.charAt(Tt.length - 1) != "]" || (Bt = Fe(Tt.slice(1, -1)), !Bt)) + return fe; + Xe.host = Bt; + } else if (qe(Xe)) { + if (Tt = x(Tt), Re.test(Tt) || (Bt = Ae(Tt), Bt === null)) + return fe; + Xe.host = Bt; + } else { + if (Ne.test(Tt)) + return fe; + for (Bt = "", Gt = I(Tt), ur = 0; ur < Gt.length; ur++) + Bt += Ke(Gt[ur], it); + Xe.host = Bt; + } + }, Ae = function(Xe) { + var Tt = Xe.split("."), Bt, Gt, ur, Ur, Mr, ai, en; + if (Tt.length && Tt[Tt.length - 1] == "" && Tt.pop(), Bt = Tt.length, Bt > 4) + return Xe; + for (Gt = [], ur = 0; ur < Bt; ur++) { + if (Ur = Tt[ur], Ur == "") + return Xe; + if (Mr = 10, Ur.length > 1 && Ur.charAt(0) == "0" && (Mr = pe.test(Ur) ? 16 : 8, Ur = Ur.slice(Mr == 8 ? 1 : 2)), Ur === "") + ai = 0; + else { + if (!(Mr == 10 ? Ue : Mr == 8 ? Be : Qe).test(Ur)) + return Xe; + ai = parseInt(Ur, Mr); + } + Gt.push(ai); + } + for (ur = 0; ur < Bt; ur++) + if (ai = Gt[ur], ur == Bt - 1) { + if (ai >= ae(256, 5 - Bt)) + return null; + } else if (ai > 255) + return null; + for (en = Gt.pop(), ur = 0; ur < Gt.length; ur++) + en += Gt[ur] * ae(256, 3 - ur); + return en; + }, Fe = function(Xe) { + var Tt = [0, 0, 0, 0, 0, 0, 0, 0], Bt = 0, Gt = null, ur = 0, Ur, Mr, ai, en, Br, Xn, ir, Fi = function() { + return Xe.charAt(ur); + }; + if (Fi() == ":") { + if (Xe.charAt(1) != ":") + return; + ur += 2, Bt++, Gt = Bt; + } + for (; Fi(); ) { + if (Bt == 8) + return; + if (Fi() == ":") { + if (Gt !== null) + return; + ur++, Bt++, Gt = Bt; + continue; + } + for (Ur = Mr = 0; Mr < 4 && Qe.test(Fi()); ) + Ur = Ur * 16 + parseInt(Fi(), 16), ur++, Mr++; + if (Fi() == ".") { + if (Mr == 0 || (ur -= Mr, Bt > 6)) + return; + for (ai = 0; Fi(); ) { + if (en = null, ai > 0) + if (Fi() == "." && ai < 4) + ur++; + else + return; + if (!Ve.test(Fi())) + return; + for (; Ve.test(Fi()); ) { + if (Br = parseInt(Fi(), 10), en === null) + en = Br; + else { + if (en == 0) + return; + en = en * 10 + Br; + } + if (en > 255) + return; + ur++; + } + Tt[Bt] = Tt[Bt] * 256 + en, ai++, (ai == 2 || ai == 4) && Bt++; + } + if (ai != 4) + return; + break; + } else if (Fi() == ":") { + if (ur++, !Fi()) + return; + } else if (Fi()) + return; + Tt[Bt++] = Ur; + } + if (Gt !== null) + for (Xn = Bt - Gt, Bt = 7; Bt != 0 && Xn > 0; ) + ir = Tt[Bt], Tt[Bt--] = Tt[Gt + Xn - 1], Tt[Gt + --Xn] = ir; + else if (Bt != 8) + return; + return Tt; + }, $e = function(Xe) { + for (var Tt = null, Bt = 1, Gt = null, ur = 0, Ur = 0; Ur < 8; Ur++) + Xe[Ur] !== 0 ? (ur > Bt && (Tt = Gt, Bt = ur), Gt = null, ur = 0) : (Gt === null && (Gt = Ur), ++ur); + return ur > Bt && (Tt = Gt, Bt = ur), Tt; + }, lt = function(Xe) { + var Tt, Bt, Gt, ur; + if (typeof Xe == "number") { + for (Tt = [], Bt = 0; Bt < 4; Bt++) + Tt.unshift(Xe % 256), Xe = ee(Xe / 256); + return Tt.join("."); + } else if (typeof Xe == "object") { + for (Tt = "", Gt = $e(Xe), Bt = 0; Bt < 8; Bt++) + ur && Xe[Bt] === 0 || (ur && (ur = !1), Gt === Bt ? (Tt += Bt ? ":" : "::", ur = !0) : (Tt += Xe[Bt].toString(16), Bt < 7 && (Tt += ":"))); + return "[" + Tt + "]"; + } + return Xe; + }, it = {}, nt = E({}, it, { + " ": 1, + '"': 1, + "<": 1, + ">": 1, + "`": 1 + }), ut = E({}, nt, { + "#": 1, + "?": 1, + "{": 1, + "}": 1 + }), rt = E({}, ut, { + "/": 1, + ":": 1, + ";": 1, + "=": 1, + "@": 1, + "[": 1, + "\\": 1, + "]": 1, + "^": 1, + "|": 1 + }), Ke = function(Xe, Tt) { + var Bt = w(Xe, 0); + return Bt > 32 && Bt < 127 && !_(Tt, Xe) ? Xe : encodeURIComponent(Xe); + }, ze = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 + }, qe = function(Xe) { + return _(ze, Xe.scheme); + }, ct = function(Xe) { + return Xe.username != "" || Xe.password != ""; + }, ft = function(Xe) { + return !Xe.host || Xe.cannotBeABaseURL || Xe.scheme == "file"; + }, _t = function(Xe, Tt) { + var Bt; + return Xe.length == 2 && Te.test(Xe.charAt(0)) && ((Bt = Xe.charAt(1)) == ":" || !Tt && Bt == "|"); + }, Nt = function(Xe) { + var Tt; + return Xe.length > 1 && _t(Xe.slice(0, 2)) && (Xe.length == 2 || (Tt = Xe.charAt(2)) === "/" || Tt === "\\" || Tt === "?" || Tt === "#"); + }, Yt = function(Xe) { + var Tt = Xe.path, Bt = Tt.length; + Bt && (Xe.scheme != "file" || Bt != 1 || !_t(Tt[0], !0)) && Tt.pop(); + }, tr = function(Xe) { + return Xe === "." || Xe.toLowerCase() === "%2e"; + }, Ct = function(Xe) { + return Xe = Xe.toLowerCase(), Xe === ".." || Xe === "%2e." || Xe === ".%2e" || Xe === "%2e%2e"; + }, hr = {}, Er = {}, Fr = {}, Dn = {}, hn = {}, Jn = {}, nn = {}, dn = {}, an = {}, zn = {}, Lt = {}, Ot = {}, Jt = {}, jt = {}, nr = {}, Ht = {}, wn = {}, On = {}, or = {}, Pt = {}, Qr = {}, Bn = function(Xe, Tt, Bt, Gt) { + var ur = Bt || hr, Ur = 0, Mr = "", ai = !1, en = !1, Br = !1, Xn, ir, Fi, wi; + for (Bt || (Xe.scheme = "", Xe.username = "", Xe.password = "", Xe.host = null, Xe.port = null, Xe.path = [], Xe.query = null, Xe.fragment = null, Xe.cannotBeABaseURL = !1, Tt = Tt.replace(Me, "")), Tt = Tt.replace(we, ""), Xn = I(Tt); Ur <= Xn.length; ) { + switch (ir = Xn[Ur], ur) { + case hr: + if (ir && Te.test(ir)) + Mr += ir.toLowerCase(), ur = Er; + else { + if (Bt) + return ne; + ur = Fr; + continue; + } + break; + case Er: + if (ir && (be.test(ir) || ir == "+" || ir == "-" || ir == ".")) + Mr += ir.toLowerCase(); + else if (ir == ":") { + if (Bt && (qe(Xe) != _(ze, Mr) || Mr == "file" && (ct(Xe) || Xe.port !== null) || Xe.scheme == "file" && !Xe.host)) + return; + if (Xe.scheme = Mr, Bt) { + qe(Xe) && ze[Xe.scheme] == Xe.port && (Xe.port = null); + return; + } + Mr = "", Xe.scheme == "file" ? ur = jt : qe(Xe) && Gt && Gt.scheme == Xe.scheme ? ur = Dn : qe(Xe) ? ur = dn : Xn[Ur + 1] == "/" ? (ur = hn, Ur++) : (Xe.cannotBeABaseURL = !0, Xe.path.push(""), ur = or); + } else { + if (Bt) + return ne; + Mr = "", ur = Fr, Ur = 0; + continue; + } + break; + case Fr: + if (!Gt || Gt.cannotBeABaseURL && ir != "#") + return ne; + if (Gt.cannotBeABaseURL && ir == "#") { + Xe.scheme = Gt.scheme, Xe.path = Gt.path.slice(), Xe.query = Gt.query, Xe.fragment = "", Xe.cannotBeABaseURL = !0, ur = Qr; + break; + } + ur = Gt.scheme == "file" ? jt : Jn; + continue; + case Dn: + if (ir == "/" && Xn[Ur + 1] == "/") + ur = an, Ur++; + else { + ur = Jn; + continue; + } + break; + case hn: + if (ir == "/") { + ur = zn; + break; + } else { + ur = On; + continue; + } + case Jn: + if (Xe.scheme = Gt.scheme, ir == He) + Xe.username = Gt.username, Xe.password = Gt.password, Xe.host = Gt.host, Xe.port = Gt.port, Xe.path = Gt.path.slice(), Xe.query = Gt.query; + else if (ir == "/" || ir == "\\" && qe(Xe)) + ur = nn; + else if (ir == "?") + Xe.username = Gt.username, Xe.password = Gt.password, Xe.host = Gt.host, Xe.port = Gt.port, Xe.path = Gt.path.slice(), Xe.query = "", ur = Pt; + else if (ir == "#") + Xe.username = Gt.username, Xe.password = Gt.password, Xe.host = Gt.host, Xe.port = Gt.port, Xe.path = Gt.path.slice(), Xe.query = Gt.query, Xe.fragment = "", ur = Qr; + else { + Xe.username = Gt.username, Xe.password = Gt.password, Xe.host = Gt.host, Xe.port = Gt.port, Xe.path = Gt.path.slice(), Xe.path.pop(), ur = On; + continue; + } + break; + case nn: + if (qe(Xe) && (ir == "/" || ir == "\\")) + ur = an; + else if (ir == "/") + ur = zn; + else { + Xe.username = Gt.username, Xe.password = Gt.password, Xe.host = Gt.host, Xe.port = Gt.port, ur = On; + continue; + } + break; + case dn: + if (ur = an, ir != "/" || Mr.charAt(Ur + 1) != "/") + continue; + Ur++; + break; + case an: + if (ir != "/" && ir != "\\") { + ur = zn; + continue; + } + break; + case zn: + if (ir == "@") { + ai && (Mr = "%40" + Mr), ai = !0, Fi = I(Mr); + for (var gs = 0; gs < Fi.length; gs++) { + var Bi = Fi[gs]; + if (Bi == ":" && !Br) { + Br = !0; + continue; + } + var nc = Ke(Bi, rt); + Br ? Xe.password += nc : Xe.username += nc; + } + Mr = ""; + } else if (ir == He || ir == "/" || ir == "?" || ir == "#" || ir == "\\" && qe(Xe)) { + if (ai && Mr == "") + return J; + Ur -= I(Mr).length + 1, Mr = "", ur = Lt; + } else + Mr += ir; + break; + case Lt: + case Ot: + if (Bt && Xe.scheme == "file") { + ur = Ht; + continue; + } else if (ir == ":" && !en) { + if (Mr == "") + return fe; + if (wi = Ie(Xe, Mr), wi) + return wi; + if (Mr = "", ur = Jt, Bt == Ot) + return; + } else if (ir == He || ir == "/" || ir == "?" || ir == "#" || ir == "\\" && qe(Xe)) { + if (qe(Xe) && Mr == "") + return fe; + if (Bt && Mr == "" && (ct(Xe) || Xe.port !== null)) + return; + if (wi = Ie(Xe, Mr), wi) + return wi; + if (Mr = "", ur = wn, Bt) + return; + continue; + } else + ir == "[" ? en = !0 : ir == "]" && (en = !1), Mr += ir; + break; + case Jt: + if (Ve.test(ir)) + Mr += ir; + else if (ir == He || ir == "/" || ir == "?" || ir == "#" || ir == "\\" && qe(Xe) || Bt) { + if (Mr != "") { + var aa = parseInt(Mr, 10); + if (aa > 65535) + return de; + Xe.port = qe(Xe) && aa === ze[Xe.scheme] ? null : aa, Mr = ""; + } + if (Bt) + return; + ur = wn; + continue; + } else + return de; + break; + case jt: + if (Xe.scheme = "file", ir == "/" || ir == "\\") + ur = nr; + else if (Gt && Gt.scheme == "file") + if (ir == He) + Xe.host = Gt.host, Xe.path = Gt.path.slice(), Xe.query = Gt.query; + else if (ir == "?") + Xe.host = Gt.host, Xe.path = Gt.path.slice(), Xe.query = "", ur = Pt; + else if (ir == "#") + Xe.host = Gt.host, Xe.path = Gt.path.slice(), Xe.query = Gt.query, Xe.fragment = "", ur = Qr; + else { + Nt(Xn.slice(Ur).join("")) || (Xe.host = Gt.host, Xe.path = Gt.path.slice(), Yt(Xe)), ur = On; + continue; + } + else { + ur = On; + continue; + } + break; + case nr: + if (ir == "/" || ir == "\\") { + ur = Ht; + break; + } + Gt && Gt.scheme == "file" && !Nt(Xn.slice(Ur).join("")) && (_t(Gt.path[0], !0) ? Xe.path.push(Gt.path[0]) : Xe.host = Gt.host), ur = On; + continue; + case Ht: + if (ir == He || ir == "/" || ir == "\\" || ir == "?" || ir == "#") { + if (!Bt && _t(Mr)) + ur = On; + else if (Mr == "") { + if (Xe.host = "", Bt) + return; + ur = wn; + } else { + if (wi = Ie(Xe, Mr), wi) + return wi; + if (Xe.host == "localhost" && (Xe.host = ""), Bt) + return; + Mr = "", ur = wn; + } + continue; + } else + Mr += ir; + break; + case wn: + if (qe(Xe)) { + if (ur = On, ir != "/" && ir != "\\") + continue; + } else if (!Bt && ir == "?") + Xe.query = "", ur = Pt; + else if (!Bt && ir == "#") + Xe.fragment = "", ur = Qr; + else if (ir != He && (ur = On, ir != "/")) + continue; + break; + case On: + if (ir == He || ir == "/" || ir == "\\" && qe(Xe) || !Bt && (ir == "?" || ir == "#")) { + if (Ct(Mr) ? (Yt(Xe), ir != "/" && !(ir == "\\" && qe(Xe)) && Xe.path.push("")) : tr(Mr) ? ir != "/" && !(ir == "\\" && qe(Xe)) && Xe.path.push("") : (Xe.scheme == "file" && !Xe.path.length && _t(Mr) && (Xe.host && (Xe.host = ""), Mr = Mr.charAt(0) + ":"), Xe.path.push(Mr)), Mr = "", Xe.scheme == "file" && (ir == He || ir == "?" || ir == "#")) + for (; Xe.path.length > 1 && Xe.path[0] === ""; ) + Xe.path.shift(); + ir == "?" ? (Xe.query = "", ur = Pt) : ir == "#" && (Xe.fragment = "", ur = Qr); + } else + Mr += Ke(ir, ut); + break; + case or: + ir == "?" ? (Xe.query = "", ur = Pt) : ir == "#" ? (Xe.fragment = "", ur = Qr) : ir != He && (Xe.path[0] += Ke(ir, it)); + break; + case Pt: + !Bt && ir == "#" ? (Xe.fragment = "", ur = Qr) : ir != He && (ir == "'" && qe(Xe) ? Xe.query += "%27" : ir == "#" ? Xe.query += "%23" : Xe.query += Ke(ir, it)); + break; + case Qr: + ir != He && (Xe.fragment += Ke(ir, nt)); + break; + } + Ur++; + } + }, Un = function(Tt) { + var Bt = S(this, Un, "URL"), Gt = arguments.length > 1 ? arguments[1] : void 0, ur = b(Tt), Ur = Y(Bt, { type: "URL" }), Mr, ai; + if (Gt !== void 0) { + if (Gt instanceof Un) + Mr = X(Gt); + else if (ai = Bn(Mr = {}, b(Gt)), ai) + throw TypeError(ai); + } + if (ai = Bn(Ur, ur, null, Mr), ai) + throw TypeError(ai); + var en = Ur.searchParams = new B(), Br = H(en); + Br.updateSearchParams(Ur.query), Br.updateURL = function() { + Ur.query = String(en) || null; + }, g || (Bt.href = fi.call(Bt), Bt.origin = xn.call(Bt), Bt.protocol = Or.call(Bt), Bt.username = Dr.call(Bt), Bt.password = po.call(Bt), Bt.host = as.call(Bt), Bt.hostname = zo.call(Bt), Bt.port = Bs.call(Bt), Bt.pathname = Cr.call(Bt), Bt.search = gt.call(Bt), Bt.searchParams = Xt.call(Bt), Bt.hash = Wt.call(Bt)); + }, Yn = Un.prototype, fi = function() { + var Xe = X(this), Tt = Xe.scheme, Bt = Xe.username, Gt = Xe.password, ur = Xe.host, Ur = Xe.port, Mr = Xe.path, ai = Xe.query, en = Xe.fragment, Br = Tt + ":"; + return ur !== null ? (Br += "//", ct(Xe) && (Br += Bt + (Gt ? ":" + Gt : "") + "@"), Br += lt(ur), Ur !== null && (Br += ":" + Ur)) : Tt == "file" && (Br += "//"), Br += Xe.cannotBeABaseURL ? Mr[0] : Mr.length ? "/" + Mr.join("/") : "", ai !== null && (Br += "?" + ai), en !== null && (Br += "#" + en), Br; + }, xn = function() { + var Xe = X(this), Tt = Xe.scheme, Bt = Xe.port; + if (Tt == "blob") + try { + return new Un(Tt.path[0]).origin; + } catch (Gt) { + return "null"; + } + return Tt == "file" || !qe(Xe) ? "null" : Tt + "://" + lt(Xe.host) + (Bt !== null ? ":" + Bt : ""); + }, Or = function() { + return X(this).scheme + ":"; + }, Dr = function() { + return X(this).username; + }, po = function() { + return X(this).password; + }, as = function() { + var Xe = X(this), Tt = Xe.host, Bt = Xe.port; + return Tt === null ? "" : Bt === null ? lt(Tt) : lt(Tt) + ":" + Bt; + }, zo = function() { + var Xe = X(this).host; + return Xe === null ? "" : lt(Xe); + }, Bs = function() { + var Xe = X(this).port; + return Xe === null ? "" : String(Xe); + }, Cr = function() { + var Xe = X(this), Tt = Xe.path; + return Xe.cannotBeABaseURL ? Tt[0] : Tt.length ? "/" + Tt.join("/") : ""; + }, gt = function() { + var Xe = X(this).query; + return Xe ? "?" + Xe : ""; + }, Xt = function() { + return X(this).searchParams; + }, Wt = function() { + var Xe = X(this).fragment; + return Xe ? "#" + Xe : ""; + }, zr = function(Xe, Tt) { + return { get: Xe, set: Tt, configurable: !0, enumerable: !0 }; + }; + if (g && C(Yn, { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + href: zr(fi, function(Xe) { + var Tt = X(this), Bt = b(Xe), Gt = Bn(Tt, Bt); + if (Gt) + throw TypeError(Gt); + H(Tt.searchParams).updateSearchParams(Tt.query); + }), + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + origin: zr(xn), + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + protocol: zr(Or, function(Xe) { + var Tt = X(this); + Bn(Tt, b(Xe) + ":", hr); + }), + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + username: zr(Dr, function(Xe) { + var Tt = X(this), Bt = I(b(Xe)); + if (!ft(Tt)) { + Tt.username = ""; + for (var Gt = 0; Gt < Bt.length; Gt++) + Tt.username += Ke(Bt[Gt], rt); + } + }), + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + password: zr(po, function(Xe) { + var Tt = X(this), Bt = I(b(Xe)); + if (!ft(Tt)) { + Tt.password = ""; + for (var Gt = 0; Gt < Bt.length; Gt++) + Tt.password += Ke(Bt[Gt], rt); + } + }), + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + host: zr(as, function(Xe) { + var Tt = X(this); + Tt.cannotBeABaseURL || Bn(Tt, b(Xe), Lt); + }), + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + hostname: zr(zo, function(Xe) { + var Tt = X(this); + Tt.cannotBeABaseURL || Bn(Tt, b(Xe), Ot); + }), + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + port: zr(Bs, function(Xe) { + var Tt = X(this); + ft(Tt) || (Xe = b(Xe), Xe == "" ? Tt.port = null : Bn(Tt, Xe, Jt)); + }), + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + pathname: zr(Cr, function(Xe) { + var Tt = X(this); + Tt.cannotBeABaseURL || (Tt.path = [], Bn(Tt, b(Xe), wn)); + }), + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + search: zr(gt, function(Xe) { + var Tt = X(this); + Xe = b(Xe), Xe == "" ? Tt.query = null : (Xe.charAt(0) == "?" && (Xe = Xe.slice(1)), Tt.query = "", Bn(Tt, Xe, Pt)), H(Tt.searchParams).updateSearchParams(Tt.query); + }), + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + searchParams: zr(Xt), + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + hash: zr(Wt, function(Xe) { + var Tt = X(this); + if (Xe = b(Xe), Xe == "") { + Tt.fragment = null; + return; + } + Xe.charAt(0) == "#" && (Xe = Xe.slice(1)), Tt.fragment = "", Bn(Tt, Xe, Qr); + }) + }), A(Yn, "toJSON", function() { + return fi.call(this); + }, { enumerable: !0 }), A(Yn, "toString", function() { + return fi.call(this); + }, { enumerable: !0 }), P) { + var _r = P.createObjectURL, vn = P.revokeObjectURL; + _r && A(Un, "createObjectURL", function(Tt) { + return _r.apply(P, arguments); + }), vn && A(Un, "revokeObjectURL", function(Tt) { + return vn.apply(P, arguments); + }); + } + R(Un, "URL"), f({ global: !0, forced: !v, sham: !g }, { + URL: Un + }); + } + ), + /***/ + 9801: ( + /***/ + function() { + } + ), + /***/ + 3822: ( + /***/ + function(l, u, d) { + var f = d(2221); + l.exports = f; + } + ), + /***/ + 1434: ( + /***/ + function(l, u, d) { + var f = d(5078); + l.exports = f; + } + ), + /***/ + 6899: ( + /***/ + function(l, u, d) { + var f = d(98); + l.exports = f; + } + ), + /***/ + 7710: ( + /***/ + function(l, u, d) { + var f = d(5739); + d(162), l.exports = f; + } + ), + /***/ + 4486: ( + /***/ + function(l, u, d) { + var f = d(278); + l.exports = f; + } + ), + /***/ + 4877: ( + /***/ + function(l, u, d) { + var f = d(1484); + l.exports = f; + } + ), + /***/ + 7178: ( + /***/ + function(l, u, d) { + var f = d(7731); + l.exports = f; + } + ), + /***/ + 5603: ( + /***/ + function(l, u, d) { + var f = d(3669); + l.exports = f; + } + ), + /***/ + 1206: ( + /***/ + function(l, u, d) { + d(162); + var f = d(6899), g = d(4696), v = Array.prototype, y = { + DOMTokenList: !0, + NodeList: !0 + }; + l.exports = function(C) { + var A = C.forEach; + return C === v || C instanceof Array && A === v.forEach || y.hasOwnProperty(g(C)) ? f : A; + }; + } + ), + /***/ + 6174: ( + /***/ + function(l, u, d) { + var f = d(2604); + l.exports = f; + } + ), + /***/ + 57: ( + /***/ + function(l, u, d) { + var f = d(263); + l.exports = f; + } + ), + /***/ + 4741: ( + /***/ + function(l, u, d) { + var f = d(7663); + l.exports = f; + } + ), + /***/ + 8368: ( + /***/ + function(l, u, d) { + var f = d(5063); + l.exports = f; + } + ), + /***/ + 3739: ( + /***/ + function(l, u, d) { + var f = d(6813); + l.exports = f; + } + ), + /***/ + 172: ( + /***/ + function(l, u, d) { + var f = d(6285); + l.exports = f; + } + ), + /***/ + 4963: ( + /***/ + function(l, u, d) { + var f = d(3213); + l.exports = f; + } + ), + /***/ + 7820: ( + /***/ + function(l, u, d) { + var f = d(3512); + l.exports = f; + } + ), + /***/ + 8980: ( + /***/ + function(l, u, d) { + var f = d(8168); + l.exports = f; + } + ), + /***/ + 5636: ( + /***/ + function(l, u, d) { + var f = d(8651); + l.exports = f; + } + ), + /***/ + 6672: ( + /***/ + function(l, u, d) { + var f = d(3083); + l.exports = f; + } + ), + /***/ + 5059: ( + /***/ + function(l, u, d) { + var f = d(2987); + l.exports = f; + } + ), + /***/ + 3969: ( + /***/ + function(l, u, d) { + var f = d(2239); + l.exports = f; + } + ), + /***/ + 6618: ( + /***/ + function(l, u, d) { + var f = d(3154); + d(162), l.exports = f; + } + ), + /***/ + 5279: ( + /***/ + function(l, u, d) { + var f = d(6577); + l.exports = f; + } + ), + /***/ + 9562: ( + /***/ + function(l, u, d) { + d(2906); + var f = d(7545); + l.exports = f.setTimeout; + } + ), + /***/ + 2285: ( + /***/ + function(l, u, d) { + var f = d(5008); + d(162), l.exports = f; + } + ), + /***/ + 8535: ( + /***/ + function(l, u, d) { + var f = d(994); + d(162), l.exports = f; + } + ), + /***/ + 652: ( + /***/ + function(l, u, d) { + var f = d(5668); + l.exports = f; + } + ), + /***/ + 5668: ( + /***/ + function(l, u, d) { + d(4948), d(9801), d(9336); + var f = d(7545); + l.exports = f.URL; + } + ), + /***/ + 2534: ( + /***/ + function(l) { + l.exports = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyBkaXNwbGF5PSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGRlZnMgaWQ9InR1aS1pbWFnZS1lZGl0b3Itc3ZnLWRlZmF1bHQtaWNvbnMiPgo8c3ltYm9sIGlkPSJpYy1hcHBseSIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0ibm9uZSIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBkPSJNNCAxMi4wMTFsNSA1TDIwLjAxMSA2Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1jYW5jZWwiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiLz4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgZD0iTTYgNmwxMiAxMk0xOCA2TDYgMTgiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWNyb3AiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIC8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik00IDBoMXYyMGExIDEgMCAwIDEtMS0xVjB6TTIwIDE3aC0xVjVoMXYxMnptMCAydjVoLTF2LTVoMXoiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTUgMTloMTl2MUg1ek00Ljc2MiA0djFIMFY0aDQuNzYyek03IDRoMTJhMSAxIDAgMCAxIDEgMUg3VjR6Ii8+Cjwvc3ltYm9sPgo8IS0tIFRoaXMgaWNvbiBtYWRlIGJ5IFBpeGVsIHBlcmZlY3QgZnJvbSB3d3cuZmxhdGljb24uY29tIC0tPgo8c3ltYm9sIGlkPSJpYy1yZXNpemUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgc3Ryb2tlPSJub25lIiBmaWxsPSJub25lIi8+CiAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNIDE4Ljk4ODI4MSAzLjAxMTcxOSBDIDE4LjgwMDc4MSAyLjgyNDIxOSAxOC41IDIuODI0MjE5IDE4LjMxMjUgMy4wMTE3MTkgTCAxMS42MjEwOTQgOS43MDcwMzEgQyAxMS40Mjk2ODggOS44OTQ1MzEgMTEuNDI5Njg4IDEwLjE5NTMxMiAxMS42MjEwOTQgMTAuMzc4OTA2IEMgMTEuNzEwOTM4IDEwLjQ3MjY1NiAxMS44MzU5MzggMTAuNTE5NTMxIDExLjk1NzAzMSAxMC41MTk1MzEgQyAxMi4wNzgxMjUgMTAuNTE5NTMxIDEyLjIwMzEyNSAxMC40NzI2NTYgMTIuMjkyOTY5IDEwLjM3ODkwNiBMIDE4Ljk4ODI4MSAzLjY4NzUgQyAxOS4xNzU3ODEgMy41IDE5LjE3NTc4MSAzLjE5OTIxOSAxOC45ODgyODEgMy4wMTE3MTkgWiBNIDE4Ljk4ODI4MSAzLjAxMTcxOSAiLz4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0gMTguNjUyMzQ0IDIuODY3MTg4IEMgMTguMzg2NzE5IDIuODY3MTg4IDE4LjE3MTg3NSAzLjA4MjAzMSAxOC4xNzE4NzUgMy4zNDc2NTYgTCAxOC4xNzE4NzUgOS4wODU5MzggQyAxOC4xNzE4NzUgOS4zNDc2NTYgMTguMzg2NzE5IDkuNTYyNSAxOC42NTIzNDQgOS41NjI1IEMgMTguOTE3OTY5IDkuNTYyNSAxOS4xMzI4MTIgOS4zNDc2NTYgMTkuMTMyODEyIDkuMDg1OTM4IEwgMTkuMTMyODEyIDMuMzQ3NjU2IEMgMTkuMTMyODEyIDMuMDgyMDMxIDE4LjkxNzk2OSAyLjg2NzE4OCAxOC42NTIzNDQgMi44NjcxODggWiBNIDE4LjY1MjM0NCAyLjg2NzE4OCAiLz4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0gMTguNjUyMzQ0IDIuODY3MTg4IEwgMTIuOTE0MDYyIDIuODY3MTg4IEMgMTIuNjUyMzQ0IDIuODY3MTg4IDEyLjQzNzUgMy4wODIwMzEgMTIuNDM3NSAzLjM0NzY1NiBDIDEyLjQzNzUgMy42MTMyODEgMTIuNjUyMzQ0IDMuODI4MTI1IDEyLjkxNDA2MiAzLjgyODEyNSBMIDE4LjY1MjM0NCAzLjgyODEyNSBDIDE4LjkxNzk2OSAzLjgyODEyNSAxOS4xMzI4MTIgMy42MTMyODEgMTkuMTMyODEyIDMuMzQ3NjU2IEMgMTkuMTMyODEyIDMuMDgyMDMxIDE4LjkxNzk2OSAyLjg2NzE4OCAxOC42NTIzNDQgMi44NjcxODggWiBNIDE4LjY1MjM0NCAyLjg2NzE4OCAiLz4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0gMTAuMzc4OTA2IDExLjYyMTA5NCBDIDEwLjE5NTMxMiAxMS40MzM1OTQgOS44OTA2MjUgMTEuNDMzNTk0IDkuNzAzMTI1IDExLjYyMTA5NCBMIDMuMDA3ODEyIDE4LjMxNjQwNiBDIDIuODIwMzEyIDE4LjUgMi44MjAzMTIgMTguODA0Njg4IDMuMDA3ODEyIDE4Ljk5MjE4OCBDIDMuMTA1NDY5IDE5LjA4NTkzOCAzLjIyNjU2MiAxOS4xMzI4MTIgMy4zNDc2NTYgMTkuMTMyODEyIEMgMy40Njg3NSAxOS4xMzI4MTIgMy41ODk4NDQgMTkuMDg1OTM4IDMuNjgzNTk0IDE4Ljk5MjE4OCBMIDEwLjM3ODkwNiAxMi4yOTY4NzUgQyAxMC41NjY0MDYgMTIuMTA5Mzc1IDEwLjU2NjQwNiAxMS44MDQ2ODggMTAuMzc4OTA2IDExLjYyMTA5NCBaIE0gMTAuMzc4OTA2IDExLjYyMTA5NCAiLz4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0gMy4zNDc2NTYgMTIuNDM3NSBDIDMuMDgyMDMxIDEyLjQzNzUgMi44NjcxODggMTIuNjUyMzQ0IDIuODY3MTg4IDEyLjkxNDA2MiBMIDIuODY3MTg4IDE4LjY1MjM0NCBDIDIuODY3MTg4IDE4LjkxNzk2OSAzLjA4MjAzMSAxOS4xMzI4MTIgMy4zNDc2NTYgMTkuMTMyODEyIEMgMy42MTMyODEgMTkuMTMyODEyIDMuODI4MTI1IDE4LjkxNzk2OSAzLjgyODEyNSAxOC42NTIzNDQgTCAzLjgyODEyNSAxMi45MTQwNjIgQyAzLjgyODEyNSAxMi42NTIzNDQgMy42MTMyODEgMTIuNDM3NSAzLjM0NzY1NiAxMi40Mzc1IFogTSAzLjM0NzY1NiAxMi40Mzc1ICIvPgogIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTSA5LjA4NTkzOCAxOC4xNzE4NzUgTCAzLjM0NzY1NiAxOC4xNzE4NzUgQyAzLjA4MjAzMSAxOC4xNzE4NzUgMi44NjcxODggMTguMzg2NzE5IDIuODY3MTg4IDE4LjY1MjM0NCBDIDIuODY3MTg4IDE4LjkxNzk2OSAzLjA4MjAzMSAxOS4xMzI4MTIgMy4zNDc2NTYgMTkuMTMyODEyIEwgOS4wODU5MzggMTkuMTMyODEyIEMgOS4zNDc2NTYgMTkuMTMyODEyIDkuNTYyNSAxOC45MTc5NjkgOS41NjI1IDE4LjY1MjM0NCBDIDkuNTYyNSAxOC4zODY3MTkgOS4zNDc2NTYgMTguMTcxODc1IDkuMDg1OTM4IDE4LjE3MTg3NSBaIE0gOS4wODU5MzggMTguMTcxODc1ICIvPgogIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTSAyMC41NjI1IDAgTCAxLjQzNzUgMCBDIDAuNjQ0NTMxIDAgMCAwLjY0NDUzMSAwIDEuNDM3NSBMIDAgMjAuNTYyNSBDIDAgMjEuMzU1NDY5IDAuNjQ0NTMxIDIyIDEuNDM3NSAyMiBMIDIwLjU2MjUgMjIgQyAyMS4zNTU0NjkgMjIgMjIgMjEuMzU1NDY5IDIyIDIwLjU2MjUgTCAyMiAxLjQzNzUgQyAyMiAwLjY0NDUzMSAyMS4zNTU0NjkgMCAyMC41NjI1IDAgWiBNIDIxLjA0Mjk2OSAyMC41NjI1IEMgMjEuMDQyOTY5IDIwLjgyODEyNSAyMC44MjgxMjUgMjEuMDQyOTY5IDIwLjU2MjUgMjEuMDQyOTY5IEwgMS40Mzc1IDIxLjA0Mjk2OSBDIDEuMTcxODc1IDIxLjA0Mjk2OSAwLjk1NzAzMSAyMC44MjgxMjUgMC45NTcwMzEgMjAuNTYyNSBMIDAuOTU3MDMxIDEuNDM3NSBDIDAuOTU3MDMxIDEuMTcxODc1IDEuMTcxODc1IDAuOTU3MDMxIDEuNDM3NSAwLjk1NzAzMSBMIDIwLjU2MjUgMC45NTcwMzEgQyAyMC44MjgxMjUgMC45NTcwMzEgMjEuMDQyOTY5IDEuMTcxODc1IDIxLjA0Mjk2OSAxLjQzNzUgWiBNIDIxLjA0Mjk2OSAyMC41NjI1ICIvPgo8L3N5bWJvbD4KPCEtLSAgLS0+CjxzeW1ib2wgaWQ9ImljLWRlbGV0ZS1hbGwiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik01IDIzSDNhMSAxIDAgMCAxLTEtMVY2aDF2MTZoMnYxem0xNi0xMGgtMVY2aDF2N3pNOSAxM0g4di0zaDF2M3ptMyAwaC0xdi0zaDF2M3ptMyAwaC0xdi0zaDF2M3pNMTQuNzk0IDMuNzk0TDEzIDJoLTNMOC4yMDYgMy43OTRBLjk2My45NjMgMCAwIDEgOCAyLjVsLjcwMy0xLjA1NUExIDEgMCAwIDEgOS41MzUgMWgzLjkzYTEgMSAwIDAgMSAuODMyLjQ0NUwxNSAyLjVhLjk2NS45NjUgMCAwIDEtLjIwNiAxLjI5NHpNMTQuMTk3IDRIOC44MDNoNS4zOTR6Ii8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0wIDNoMjN2MUgwek0xMS4yODYgMjFIOC43MTRMOCAyM0g3bDEtMi44VjIwaC4wNzFMOS41IDE2aDFsMS40MjkgNEgxMnYuMmwxIDIuOGgtMWwtLjcxNC0yem0tLjM1Ny0xTDEwIDE3LjQgOS4wNzEgMjBoMS44NTh6TTIwIDIyaDN2MWgtNHYtN2gxdjZ6bS01IDBoM3YxaC00di03aDF2NnoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWRlbGV0ZSIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTMgNnYxNmgxN1Y2aDF2MTZhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWNmgxek0xNC43OTQgMy43OTRMMTMgMmgtM0w4LjIwNiAzLjc5NEEuOTYzLjk2MyAwIDAgMSA4IDIuNWwuNzAzLTEuMDU1QTEgMSAwIDAgMSA5LjUzNSAxaDMuOTNhMSAxIDAgMCAxIC44MzIuNDQ1TDE1IDIuNWEuOTY1Ljk2NSAwIDAgMS0uMjA2IDEuMjk0ek0xNC4xOTcgNEg4LjgwM2g1LjM5NHoiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTAgM2gyM3YxSDB6TTggMTBoMXY2SDh2LTZ6bTMgMGgxdjZoLTF2LTZ6bTMgMGgxdjZoLTF2LTZ6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1kcmF3LWZyZWUiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIGQ9Ik0yLjUgMjAuOTI5QzIuNTk0IDEwLjk3NiA0LjMyMyA2IDcuNjg2IDZjNS44NzIgMCAyLjUyNCAxOSA3LjY5NyAxOXMxLjg5LTE0LjkyOSA2LjQxNC0xNC45MjkgMS4zNTcgMTAuODU4IDUuMTMgMTAuODU4YzEuODAyIDAgMi42NTctMi4yNjIgMi41NjYtNi43ODYiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWRyYXctbGluZSIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgZD0iTTIgMTUuNWgyOCIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtZHJhdyIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgZD0iTTIuNSAyMS41SDVjLjI0NSAwIC40OC0uMDU4LjY5MS0uMTY4bC4xMjQtLjA2NS4xNC4wMWMuNDI5LjAyOC44NS0uMTI3IDEuMTYtLjQzN0wyMi41NSA1LjQwNWEuNS41IDAgMCAwIDAtLjcwN2wtMy4yNDYtMy4yNDVhLjUuNSAwIDAgMC0uNzA3IDBMMy4xNjIgMTYuODg4YTEuNDk1IDEuNDk1IDAgMCAwLS40MzcgMS4xNTVsLjAxLjE0LS4wNjUuMTIzYy0uMTExLjIxMi0uMTcuNDQ4LS4xNy42OTR2Mi41eiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMTYuNDE0IDMuNzA3bDMuODkgMy44OS0uNzA4LjcwNi0zLjg4OS0zLjg4OXoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWZpbHRlciIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTEyIDd2MUgyVjdoMTB6bTYgMGg0djFoLTRWN3pNMTIgMTZ2MWgxMHYtMUgxMnptLTYgMEgydjFoNHYtMXoiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTguNSAyMGEzLjUgMy41IDAgMSAxIDAtNyAzLjUgMy41IDAgMCAxIDAgN3ptMC0xYTIuNSAyLjUgMCAxIDAgMC01IDIuNSAyLjUgMCAwIDAgMCA1ek0xNS41IDExYTMuNSAzLjUgMCAxIDEgMC03IDMuNSAzLjUgMCAwIDEgMCA3em0wLTFhMi41IDIuNSAwIDEgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1mbGlwLXJlc2V0IiB2aWV3Qm94PSIwIDAgMzEgMzIiPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBkPSJNMzEgMEgwdjMyaDMxeiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMjggMTZhOCA4IDAgMCAxLTggOEgzdi0xaDF2LTdIM2E4IDggMCAwIDEgOC04aDE3djFoLTF2N2gxek0xMSA5YTcgNyAwIDAgMC03IDd2N2gxNmE3IDcgMCAwIDAgNy03VjlIMTF6Ii8+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIGQ9Ik0yNCA1bDMuNSAzLjVMMjQgMTJNNyAyMGwtMy41IDMuNUw3IDI3Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1mbGlwLXgiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGQ9Ik0zMiAzMkgwVjBoMzJ6Ii8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0xNyAzMmgtMVYwaDF6TTI3LjE2NyAxMWwuNSAzaC0xLjAzbC0uNTQ2LTNoMS4wNzZ6bS0uNS0zaC0xLjEyMkwyNSA1aC01VjRoNS4xNTNhMSAxIDAgMCAxIC45ODYuODM2TDI2LjY2NyA4em0xLjUgOWwuNSAzaC0uOTRsLS41NDUtM2guOTg1em0xIDZsLjYzOSAzLjgzNkExIDEgMCAwIDEgMjguODE5IDI4SDI2di0xaDNsLS43MjYtNGguODk0ek0yMyAyOGgtM3YtMWgzdjF6TTEzIDR2MUg3TDMgMjdoMTB2MUgzLjE4YTEgMSAwIDAgMS0uOTg2LTEuMTY0bDMuNjY2LTIyQTEgMSAwIDAgMSA2Ljg0NyA0SDEzeiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtZmxpcC15IiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBkPSJNMCAwdjMyaDMyVjB6Ii8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0wIDE2djFoMzJ2LTF6TTExIDI3LjE2N2wzIC41di0xLjAzbC0zLS41NDZ2MS4wNzZ6bS0zLS41di0xLjEyMkw1IDI1di01SDR2NS4xNTNhMSAxIDAgMCAwIC44MzYuOTg2TDggMjYuNjY3em05IDEuNWwzIC41di0uOTRsLTMtLjU0NXYuOTg1em02IDFsMy44MzYuNjM5QTEgMSAwIDAgMCAyOCAyOC44MlYyNmgtMXYzbC00LS43Mjd2Ljg5NHpNMjggMjN2LTNoLTF2M2gxek00IDEzaDFWN2wyMi00djEwaDFWMy4xOGExIDEgMCAwIDAtMS4xNjQtLjk4NmwtMjIgMy42NjdBMSAxIDAgMCAwIDQgNi44NDdWMTN6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1mbGlwIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiAvPgogICAgPHBhdGggZmlsbD0iaW5oZXJpdCIgc3Ryb2tlPSJub25lIiBkPSJNMTEgMGgxdjI0aC0xek0xOSAyMXYtMWgydi0yaDF2MmExIDEgMCAwIDEtMSAxaC0yem0tMiAwaC0zdi0xaDN2MXptNS01aC0xdi0zaDF2M3ptMC01aC0xVjhoMXYzem0wLTVoLTFWNGgtMlYzaDJhMSAxIDAgMCAxIDEgMXYyem0tNS0zdjFoLTNWM2gzek05IDN2MUgydjE2aDd2MUgyYTEgMSAwIDAgMS0xLTFWNGExIDEgMCAwIDEgMS0xaDd6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5IiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBkPSJNMCAwSDI0VjI0SDB6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNzQwIC0xNikgdHJhbnNsYXRlKDU0NyA4KSB0cmFuc2xhdGUoMTkzIDgpIi8+CiAgICA8cGF0aCBmaWxsPSJpbmhlcml0IiBzdHJva2U9Im5vbmUiIGQ9Ik0xMi41IDFDMTguMjk5IDEgMjMgNS43MDEgMjMgMTEuNVMxOC4yOTkgMjIgMTIuNSAyMmMtNS4yOSAwLTkuNjY1LTMuOTExLTEwLjM5NC04Ljk5OWgxLjAxMkMzLjgzOCAxNy41MzQgNy43NjQgMjEgMTIuNSAyMWM1LjI0NyAwIDkuNS00LjI1MyA5LjUtOS41UzE3Ljc0NyAyIDEyLjUgMkM4LjQ5IDIgNS4wNiA0LjQ4NSAzLjY2NiA4SDNoNHYxSDJWNGgxdjMuMDIyQzQuNjggMy40NjIgOC4zMDMgMSAxMi41IDF6bS41IDVsLS4wMDEgNS4yOTEgMi41MzcgMi41MzctLjcwOC43MDhMMTIuMjkyIDEySDEyVjZoMXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03NDAgLTE2KSB0cmFuc2xhdGUoNTQ3IDgpIHRyYW5zbGF0ZSgxOTMgOCkiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWhpc3RvcnktY2hlY2siIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiID4KICAgICAgICA8cGF0aCBzdHJva2U9IiM1NTU1NTUiIGQ9Ik00LjUgLTFMMS41IDIgNi41IDciIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02MCAtODA0KSB0cmFuc2xhdGUoNjAgODA0KSB0cmFuc2xhdGUoMiAzKSByb3RhdGUoLTkwIDQgMykiIC8+CiAgICA8L2c+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5LWNyb3AiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgICAgIDxwYXRoIGQ9Ik0wIDBIMTJWMTJIMHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NCAtODA0KSB0cmFuc2xhdGUoODQgODA0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0yIDBoMXYxMGMtLjU1MiAwLTEtLjQ0OC0xLTFWMHpNMTAgOXYzSDlWOWgxek05IDJoMXY2SDlWMnoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NCAtODA0KSB0cmFuc2xhdGUoODQgODA0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0yIDlIMTJWMTBIMnpNOSAyYy41MTMgMCAuOTM2LjM4Ni45OTMuODgzTDEwIDNIM1YyaDZ6TTIgM0gwVjJoMnYxeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg0IC04MDQpIHRyYW5zbGF0ZSg4NCA4MDQpIi8+CiAgICA8L2c+Cjwvc3ltYm9sPgo8IS0tIFRoaXMgaWNvbiBtYWRlIGJ5IFBpeGVsIHBlcmZlY3QgZnJvbSB3d3cuZmxhdGljb24uY29tIC0tPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5LXJlc2l6ZSIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTSA5LjQ5MjE4OCAxLjUwNzgxMiBDIDkuMzk4NDM4IDEuNDE0MDYyIDkuMjUgMS40MTQwNjIgOS4xNTYyNSAxLjUwNzgxMiBMIDUuODEyNSA0Ljg1MTU2MiBDIDUuNzE0ODQ0IDQuOTQ1MzEyIDUuNzE0ODQ0IDUuMDk3NjU2IDUuODEyNSA1LjE4NzUgQyA1Ljg1NTQ2OSA1LjIzNDM3NSA1LjkxNzk2OSA1LjI1NzgxMiA1Ljk3NjU2MiA1LjI1NzgxMiBDIDYuMDM5MDYyIDUuMjU3ODEyIDYuMTAxNTYyIDUuMjM0Mzc1IDYuMTQ4NDM4IDUuMTg3NSBMIDkuNDkyMTg4IDEuODQzNzUgQyA5LjU4NTkzOCAxLjc1IDkuNTg1OTM4IDEuNjAxNTYyIDkuNDkyMTg4IDEuNTA3ODEyIFogTSA5LjQ5MjE4OCAxLjUwNzgxMiAiLz4KICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0gOS4zMjgxMjUgMS40MzM1OTQgQyA5LjE5NTMxMiAxLjQzMzU5NCA5LjA4NTkzOCAxLjUzOTA2MiA5LjA4NTkzOCAxLjY3MTg3NSBMIDkuMDg1OTM4IDQuNTQyOTY5IEMgOS4wODU5MzggNC42NzE4NzUgOS4xOTUzMTIgNC43ODEyNSA5LjMyODEyNSA0Ljc4MTI1IEMgOS40NjA5MzggNC43ODEyNSA5LjU2NjQwNiA0LjY3MTg3NSA5LjU2NjQwNiA0LjU0Mjk2OSBMIDkuNTY2NDA2IDEuNjcxODc1IEMgOS41NjY0MDYgMS41MzkwNjIgOS40NjA5MzggMS40MzM1OTQgOS4zMjgxMjUgMS40MzM1OTQgWiBNIDkuMzI4MTI1IDEuNDMzNTk0ICIvPgogICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTSA5LjMyODEyNSAxLjQzMzU5NCBMIDYuNDU3MDMxIDEuNDMzNTk0IEMgNi4zMjgxMjUgMS40MzM1OTQgNi4yMTg3NSAxLjUzOTA2MiA2LjIxODc1IDEuNjcxODc1IEMgNi4yMTg3NSAxLjgwNDY4OCA2LjMyODEyNSAxLjkxNDA2MiA2LjQ1NzAzMSAxLjkxNDA2MiBMIDkuMzI4MTI1IDEuOTE0MDYyIEMgOS40NjA5MzggMS45MTQwNjIgOS41NjY0MDYgMS44MDQ2ODggOS41NjY0MDYgMS42NzE4NzUgQyA5LjU2NjQwNiAxLjUzOTA2MiA5LjQ2MDkzOCAxLjQzMzU5NCA5LjMyODEyNSAxLjQzMzU5NCBaIE0gOS4zMjgxMjUgMS40MzM1OTQgIi8+CiAgICA8cGF0aCBmaWxsPSIjNDM0MzQzIiBkPSJNIDUuMTg3NSA1LjgxMjUgQyA1LjA5NzY1NiA1LjcxODc1IDQuOTQ1MzEyIDUuNzE4NzUgNC44NTE1NjIgNS44MTI1IEwgMS41MDM5MDYgOS4xNTYyNSBDIDEuNDEwMTU2IDkuMjUgMS40MTAxNTYgOS40MDIzNDQgMS41MDM5MDYgOS40OTYwOTQgQyAxLjU1NDY4OCA5LjU0Mjk2OSAxLjYxMzI4MSA5LjU2NjQwNiAxLjY3MTg3NSA5LjU2NjQwNiBDIDEuNzM0Mzc1IDkuNTY2NDA2IDEuNzk2ODc1IDkuNTQyOTY5IDEuODQzNzUgOS40OTYwOTQgTCA1LjE4NzUgNi4xNDg0MzggQyA1LjI4MTI1IDYuMDU0Njg4IDUuMjgxMjUgNS45MDIzNDQgNS4xODc1IDUuODEyNSBaIE0gNS4xODc1IDUuODEyNSAiLz4KICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0gMS42NzE4NzUgNi4yMTg3NSBDIDEuNTM5MDYyIDYuMjE4NzUgMS40MzM1OTQgNi4zMjgxMjUgMS40MzM1OTQgNi40NTcwMzEgTCAxLjQzMzU5NCA5LjMyODEyNSBDIDEuNDMzNTk0IDkuNDYwOTM4IDEuNTM5MDYyIDkuNTY2NDA2IDEuNjcxODc1IDkuNTY2NDA2IEMgMS44MDQ2ODggOS41NjY0MDYgMS45MTQwNjIgOS40NjA5MzggMS45MTQwNjIgOS4zMjgxMjUgTCAxLjkxNDA2MiA2LjQ1NzAzMSBDIDEuOTE0MDYyIDYuMzI4MTI1IDEuODA0Njg4IDYuMjE4NzUgMS42NzE4NzUgNi4yMTg3NSBaIE0gMS42NzE4NzUgNi4yMTg3NSAiLz4KICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0gNC41NDI5NjkgOS4wODU5MzggTCAxLjY3MTg3NSA5LjA4NTkzOCBDIDEuNTM5MDYyIDkuMDg1OTM4IDEuNDMzNTk0IDkuMTk1MzEyIDEuNDMzNTk0IDkuMzI4MTI1IEMgMS40MzM1OTQgOS40NjA5MzggMS41MzkwNjIgOS41NjY0MDYgMS42NzE4NzUgOS41NjY0MDYgTCA0LjU0Mjk2OSA5LjU2NjQwNiBDIDQuNjcxODc1IDkuNTY2NDA2IDQuNzgxMjUgOS40NjA5MzggNC43ODEyNSA5LjMyODEyNSBDIDQuNzgxMjUgOS4xOTUzMTIgNC42NzE4NzUgOS4wODU5MzggNC41NDI5NjkgOS4wODU5MzggWiBNIDQuNTQyOTY5IDkuMDg1OTM4ICIvPgogICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTSAxMC4yODEyNSAwIEwgMC43MTg3NSAwIEMgMC4zMjAzMTIgMCAwIDAuMzIwMzEyIDAgMC43MTg3NSBMIDAgMTAuMjgxMjUgQyAwIDEwLjY3OTY4OCAwLjMyMDMxMiAxMSAwLjcxODc1IDExIEwgMTAuMjgxMjUgMTEgQyAxMC42Nzk2ODggMTEgMTEgMTAuNjc5Njg4IDExIDEwLjI4MTI1IEwgMTEgMC43MTg3NSBDIDExIDAuMzIwMzEyIDEwLjY3OTY4OCAwIDEwLjI4MTI1IDAgWiBNIDEwLjUyMzQzOCAxMC4yODEyNSBDIDEwLjUyMzQzOCAxMC40MTQwNjIgMTAuNDE0MDYyIDEwLjUyMzQzOCAxMC4yODEyNSAxMC41MjM0MzggTCAwLjcxODc1IDEwLjUyMzQzOCBDIDAuNTg1OTM4IDEwLjUyMzQzOCAwLjQ3NjU2MiAxMC40MTQwNjIgMC40NzY1NjIgMTAuMjgxMjUgTCAwLjQ3NjU2MiAwLjcxODc1IEMgMC40NzY1NjIgMC41ODU5MzggMC41ODU5MzggMC40NzY1NjIgMC43MTg3NSAwLjQ3NjU2MiBMIDEwLjI4MTI1IDAuNDc2NTYyIEMgMTAuNDE0MDYyIDAuNDc2NTYyIDEwLjUyMzQzOCAwLjU4NTkzOCAxMC41MjM0MzggMC43MTg3NSBaIE0gMTAuNTIzNDM4IDEwLjI4MTI1ICIvPgogIDwvZz4KPC9zeW1ib2w+CjwhLS0gIC0tPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5LWRyYXciIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgICAgIDxwYXRoIGQ9Ik0wIDFIMTJWMTNIMHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNTYgLTgwNCkgdHJhbnNsYXRlKDE1NiA4MDMpIi8+CiAgICAgICAgPHBhdGggc3Ryb2tlPSIjNDM0MzQzIiBkPSJNOS42MjIgMS41ODRsMS44MzUgMS42NTgtOC4zMSA4LjQwN0wuNSAxMi41VjExbDkuMTIyLTkuNDE2eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE1NiAtODA0KSB0cmFuc2xhdGUoMTU2IDgwMykiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjNDM0MzQzIiBkPSJNNy42MjggMy43NTNMMTAuMzc4IDMuNzUzIDEwLjM3OCA0LjI1MyA3LjYyOCA0LjI1M3oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNTYgLTgwNCkgdHJhbnNsYXRlKDE1NiA4MDMpIHJvdGF0ZSg0NSA5LjAwMyA0LjAwMykiLz4KICAgIDwvZz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWhpc3RvcnktZmlsdGVyIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiID4KICAgICAgICA8cGF0aCBkPSJNMCAwSDEyVjEySDB6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjc2IC04MDQpIHRyYW5zbGF0ZSgyNzYgODA0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0xMiAzdjFIOVYzaDN6TTcgNEgwVjNoN3YxeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI3NiAtODA0KSB0cmFuc2xhdGUoMjc2IDgwNCkiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjNDM0MzQzIiBkPSJNMTIgOHYxSDlWOGgzek03IDlIMFY4aDd2MXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNzYgLTgwNCkgdHJhbnNsYXRlKDI3NiA4MDQpIG1hdHJpeCgtMSAwIDAgMSAxMiAwKSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik04IDFjMS4xMDUgMCAyIC44OTUgMiAycy0uODk1IDItMiAyLTItLjg5NS0yLTIgLjg5NS0yIDItMnptMCAxYy0uNTUyIDAtMSAuNDQ4LTEgMXMuNDQ4IDEgMSAxIDEtLjQ0OCAxLTEtLjQ0OC0xLTEtMXpNNCA3YzEuMTA1IDAgMiAuODk1IDIgMnMtLjg5NSAyLTIgMi0yLS44OTUtMi0yIC44OTUtMiAyLTJ6bTAgMWMtLjU1MiAwLTEgLjQ0OC0xIDFzLjQ0OCAxIDEgMSAxLS40NDggMS0xLS40NDgtMS0xLTF6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjc2IC04MDQpIHRyYW5zbGF0ZSgyNzYgODA0KSIvPgogICAgPC9nPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaGlzdG9yeS1mbGlwIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiID4KICAgICAgICA8cGF0aCBkPSJNMCAwSDEyVjEySDB6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTA4IC04MDQpIHRyYW5zbGF0ZSgxMDggODA0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik02IDBMNyAwIDcgMTIgNiAxMnpNMTEgMTBWOWgxdjEuNWMwIC4yNzYtLjIyNC41LS41LjVIMTB2LTFoMXpNNSAxdjFIMXY4aDR2MUguNWMtLjI3NiAwLS41LS4yMjQtLjUtLjV2LTljMC0uMjc2LjIyNC0uNS41LS41SDV6bTcgNXYyaC0xVjZoMXptMC0zdjJoLTFWM2gxek05IDF2MUg3VjFoMnptMi41IDBjLjI3NiAwIC41LjIyNC41LjVWMmgtMlYxaDEuNXpNOSAxMUg3di0xaDJ2MXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDggLTgwNCkgdHJhbnNsYXRlKDEwOCA4MDQpIi8+CiAgICA8L2c+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5LWljb24iIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgICAgIDxwYXRoIGQ9Ik0wIDBIMTJWMTJIMHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMDQgLTgwNCkgdHJhbnNsYXRlKDIwNCA4MDQpIi8+CiAgICAgICAgPHBhdGggc3Ryb2tlPSIjNDM0MzQzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS4xIiBkPSJNNiA5LjU2OEwyLjYwMSAxMSAyLjk3NSA3LjQ2NyAwLjUgNC44MiA0LjEzIDQuMDY4IDYgMSA3Ljg3IDQuMDY4IDExLjUgNC44MiA5LjAyNSA3LjQ2NyA5LjM5OSAxMXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMDQgLTgwNCkgdHJhbnNsYXRlKDIwNCA4MDQpIi8+CiAgICA8L2c+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5LW1hc2siIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNTIgLTgwNCkgdHJhbnNsYXRlKDI1MiA4MDQpIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAgMEgxMlYxMkgweiIvPgogICAgICAgICAgICA8Y2lyY2xlIGN4PSI2IiBjeT0iNiIgcj0iMi41IiBzdHJva2U9IiM0NDQiLz4KICAgICAgICAgICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTTExLjUgMGMuMjc2IDAgLjUuMjI0LjUuNXYxMWMwIC4yNzYtLjIyNC41LS41LjVILjVjLS4yNzYgMC0uNS0uMjI0LS41LS41Vi41QzAgLjIyNC4yMjQgMCAuNSAwaDExek0xMSAxSDF2MTBoMTBWMXoiLz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1oaXN0b3J5LXJvdGF0ZSIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGlkPSJyZm40cnlsZmZhIiBkPSJNNyAxMmMtLjMzNSAwLS42NjMtLjAyNS0uOTgzLS4wNzRDMy4xNzEgMTEuNDkyIDEgOS4yMDUgMSA2LjQ0NGMwLTEuMzYzLjUzNC0yLjYxMyAxLjQxNS0zLjU4Ii8+CiAgICAgICAgPG1hc2sgaWQ9IjZmOWduMmR5c2IiIHdpZHRoPSI2IiBoZWlnaHQ9IjkuMTM2IiB4PSIwIiB5PSIwIiBtYXNrVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmZuNHJ5bGZmYSIgc3Ryb2tlPSI0MzQzNDMiLz4KICAgICAgICA8L21hc2s+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMzIgLTgwNCkgdHJhbnNsYXRlKDEzMiA4MDQpIj4KICAgICAgICAgICAgPHBhdGggZD0iTTAgMC41SDEyVjEyLjVIMHoiLz4KICAgICAgICAgICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTTYuNSAxQzkuNTM4IDEgMTIgMy40NjIgMTIgNi41YzAgMi4zNy0xLjUgNC4zOS0zLjYgNS4xNjNsLS40MDctLjkxNkM5Ljc0NCAxMC4xMyAxMSA4LjQ2MiAxMSA2LjUgMTEgNC4wMTUgOC45ODUgMiA2LjUgMmMtLjc3NyAwLTEuNTA5LjE5Ny0yLjE0Ny41NDRMNCAxLjc1bC0uMjA1LS4wNEM0LjU5NCAxLjI1OCA1LjUxNyAxIDYuNSAxeiIvPgogICAgICAgICAgICA8dXNlIHN0cm9rZT0iIzQzNDM0MyIgc3Ryb2tlLWRhc2hhcnJheT0iMiAxLjI1IiBzdHJva2Utd2lkdGg9IjEiIG1hc2s9InVybCgjNmY5Z24yZHlzYikiIHhsaW5rOmhyZWY9IiNyZm40cnlsZmZhIi8+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik00LjI3OSAwTDYgMS43NSA0LjI1IDMuNTcxIDMuNTQzIDIuODY0IDQuNTg2IDEuNzUgMy41NzIgMC43MDd6IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSA5LjU0MyAwKSIvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWhpc3Rvcnktc2hhcGUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgPgogICAgICAgIDxwYXRoIGQ9Ik0wIDBIMTJWMTJIMHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xODAgLTgwNCkgdHJhbnNsYXRlKDE4MCA4MDQpIi8+CiAgICAgICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTTExLjUgNGMuMjc2IDAgLjUuMjI0LjUuNXY3YzAgLjI3Ni0uMjI0LjUtLjUuNWgtN2MtLjI3NiAwLS41LS4yMjQtLjUtLjVWOC44aDFWMTFoNlY1SDguMzQxbC0uNTY4LTFIMTEuNXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xODAgLTgwNCkgdHJhbnNsYXRlKDE4MCA4MDQpIi8+CiAgICAgICAgPHBhdGggc3Ryb2tlPSIjNDM0MzQzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik00LjUgMC41TDguNSA3LjYxMSAwLjUgNy42MTF6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTgwIC04MDQpIHRyYW5zbGF0ZSgxODAgODA0KSIvPgogICAgPC9nPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaGlzdG9yeS10ZXh0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiID4KICAgICAgICA8cGF0aCBkPSJNMCAwSDEyVjEySDB6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjI4IC04MDQpIHRyYW5zbGF0ZSgyMjggODA0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0yIDFoOGMuNTUyIDAgMSAuNDQ4IDEgMUgxYzAtLjU1Mi40NDgtMSAxLTF6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjI4IC04MDQpIHRyYW5zbGF0ZSgyMjggODA0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik0xIDFIMlYzSDF6TTEwIDFIMTFWM0gxMHpNNS41IDFMNi41IDEgNi41IDExIDUuNSAxMXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMjggLTgwNCkgdHJhbnNsYXRlKDIyOCA4MDQpIi8+CiAgICAgICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTTQgMTBIOFYxMUg0eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIyOCAtODA0KSB0cmFuc2xhdGUoMjI4IDgwNCkiLz4KICAgIDwvZz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWhpc3RvcnktbG9hZCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8cGF0aCBkPSJNMCAwSDEyVjEySDB6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzI0IC04MDUpIHRyYW5zbGF0ZSgzMjQgODA1KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiM0MzQzNDMiIGQ9Ik01IDBjLjU1MiAwIDEgLjQ0OCAxIDF2MWg1LjVjLjI3NiAwIC41LjIyNC41LjV2OGMwIC4yNzYtLjIyNC41LS41LjVILjVjLS4yNzYgMC0uNS0uMjI0LS41LS41VjFjMC0uNTUyLjQ0OC0xIDEtMWg0em0wIDFIMXY5aDEwVjNINVYxeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyNCAtODA1KSB0cmFuc2xhdGUoMzI0IDgwNSkiLz4KICAgICAgICA8cGF0aCBmaWxsPSIjNDM0MzQzIiBkPSJNMSAyTDUgMiA1IDMgMSAzeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyNCAtODA1KSB0cmFuc2xhdGUoMzI0IDgwNSkiLz4KICAgIDwvZz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWhpc3RvcnktZGVsZXRlIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGZpbGw9IiM0MzQzNDMiPgogICAgICAgICAgICA8cGF0aCBkPSJNMiA5aDhWMWgxdjguNWMwIC4yNzYtLjIyNC41LS41LjVoLTljLS4yNzYgMC0uNS0uMjI0LS41LS41VjFoMXY4ek0wIDBIMTJWMUgweiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMwMCAtODA0KSB0cmFuc2xhdGUoMzAwIDgwNCkgdHJhbnNsYXRlKDAgMikiLz4KICAgICAgICAgICAgPHBhdGggZD0iTTQgM0g1VjdINHpNNyAzSDhWN0g3eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMwMCAtODA0KSB0cmFuc2xhdGUoMzAwIDgwNCkgdHJhbnNsYXRlKDAgMikiLz4KICAgICAgICAgICAgPHBhdGggZD0iTTQgMWg0VjBoMXYxLjVjMCAuMjc2LS4yMjQuNS0uNS41aC01Yy0uMjc2IDAtLjUtLjIyNC0uNS0uNVYwaDF2MXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMDAgLTgwNCkgdHJhbnNsYXRlKDMwMCA4MDQpIG1hdHJpeCgxIDAgMCAtMSAwIDIpIi8+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaGlzdG9yeS1ncm91cCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ4IC04MDQpIHRyYW5zbGF0ZSgzNDggODA0KSI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0wIDBIMTJWMTJIMHoiLz4KICAgICAgICAgICAgPHBhdGggZmlsbD0iIzQzNDM0MyIgZD0iTTEgOXYyaDF2MUguNWMtLjI3NiAwLS41LS4yMjQtLjUtLjVWOWgxem0xMSAxdjEuNWMwIC4yNzYtLjIyNC41LS41LjVIOXYtMWgydi0xaDF6bS00IDF2MUg2di0xaDJ6bS0zIDB2MUgzdi0xaDJ6bTctNHYyaC0xVjdoMXpNMSA2djJIMFY2aDF6bTExLTJ2MmgtMVY0aDF6TTEgM3YySDBWM2gxem0xMC41LTNjLjI3NiAwIC41LjIyNC41LjVWM2gtMVYxaC0xVjBoMS41ek02IDB2MUg0VjBoMnptMyAwdjFIN1YwaDJ6TTAgLjVDMCAuMjI0LjIyNCAwIC41IDBIM3YxSDF2MUgwVi41ek05LjUgNGMuMjc2IDAgLjUuMjI0LjUuNXY1YzAgLjI3Ni0uMjI0LjUtLjUuNWgtNWMtLjI3NiAwLS41LS4yMjQtLjUtLjVWOC4zNTVjLjMxNy4wOTQuNjUyLjE0NSAxIC4xNDVWOWg0VjVoLS41YzAtLjM0OC0uMDUtLjY4My0uMTQ1LTFIOS41eiIvPgogICAgICAgICAgICA8Y2lyY2xlIGN4PSI1IiBjeT0iNSIgcj0iMi41IiBzdHJva2U9IiM0MzQzNDMiLz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1pY29uLWFycm93LTIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTIxLjc5MyAxOC41SDIuNXYtNWgxOC45MzVsLTcuNi04aDUuODcybDEwLjUgMTAuNS0xMC41IDEwLjVoLTUuOTE0bDgtOHoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWljb24tYXJyb3ctMyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNMjUuMjg4IDE2LjQyTDE0LjIwOCAyNy41SDYuNzkybDExLjI5MS0xMS4yOTFMNi44MjYgNC41aDcuMzgxbDExLjY2MSAxMS42NjEtLjU4LjI1OHoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWljb24tYXJyb3ciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIGQ9Ik0yLjUgMTEuNXY5aDE4djUuMjkzTDMwLjI5MyAxNiAyMC41IDYuMjA3VjExLjVoLTE4eiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaWNvbi1idWJibGUiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTIyLjIwNyAyNC41TDE2LjUgMzAuMjA3VjI0LjVIOEE2LjUgNi41IDAgMCAxIDEuNSAxOFY5QTYuNSA2LjUgMCAwIDEgOCAyLjVoMTZBNi41IDYuNSAwIDAgMSAzMC41IDl2OWE2LjUgNi41IDAgMCAxLTYuNSA2LjVoLTEuNzkzeiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaWNvbi1oZWFydCIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBkPSJNMTUuOTk2IDMwLjY3NWwxLjk4MS0xLjc5YzcuODk4LTcuMTc3IDEwLjM2NS05LjcxOCAxMi4xMzUtMTMuMDEyLjkyMi0xLjcxNiAxLjM3Ny0zLjM3IDEuMzc3LTUuMDc2IDAtNC42NS0zLjY0Ny04LjI5Ny04LjI5Ny04LjI5Ny0yLjMzIDAtNC44NiAxLjUyNy02LjgxNyAzLjgyNGwtLjM4LjQ0Ny0uMzgxLS40NDdDMTMuNjU4IDQuMDI3IDExLjEyNiAyLjUgOC43OTcgMi41IDQuMTQ3IDIuNS41IDYuMTQ3LjUgMTAuNzk3YzAgMS43MTQuNDYgMy4zNzUgMS4zODkgNS4wOTggMS43NzUgMy4yODggNC4yNiA1Ljg0MyAxMi4xMjMgMTIuOTc0bDEuOTg0IDEuODA2eiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaWNvbi1sb2FkIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xNy4zMTQgMTguODY3bDEuOTUxLTIuNTMgNCA1LjE4NGgtMTdsNi41LTguODQgNC41NDkgNi4xODZ6Ii8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0xOC4wMSA0YTExLjc5OCAxMS43OTggMCAwIDAgMCAxSDN2MjRoMjRWMTQuOTg2YTguNzM4IDguNzM4IDAgMCAwIDEgMFYyOWExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLTFoMTUuMDF6Ii8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0yNSAzaDF2OWgtMXoiLz4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgZD0iTTIyIDZsMy41LTMuNUwyOSA2Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1pY29uLWxvY2F0aW9uIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBkPSJNMTYgMzEuMjhDMjMuNjc1IDIzLjMwMiAyNy41IDE3LjE4MSAyNy41IDEzYzAtNi4zNTEtNS4xNDktMTEuNS0xMS41LTExLjVTNC41IDYuNjQ5IDQuNSAxM2MwIDQuMTgxIDMuODI1IDEwLjMwMiAxMS41IDE4LjI4eiIvPgogICAgPGNpcmNsZSBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIGN4PSIxNiIgY3k9IjEzIiByPSI0LjUiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLWljb24tcG9seWdvbiIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgZD0iTS41NzYgMTZMOC4yOSAyOS41aDE1LjQyTDMxLjQyNCAxNiAyMy43MSAyLjVIOC4yOUwuNTc2IDE2eiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaWNvbi1zdGFyLTIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIGQ9Ik0xOS40NDYgMzEuNTkybDIuMjY1LTMuMjcyIDMuOTQ2LjI1LjYzNi0zLjk0IDMuNjY1LTEuNTA1LTEuMTItMy44MzIgMi42NTUtMi45NjItMi42NTYtMi45NjIgMS4xMi0zLjgzMi0zLjY2NC0xLjUwNS0uNjM2LTMuOTQxLTMuOTQ2LjI1LTIuMjY1LTMuMjcxTDE2IDMuMDI0IDEyLjU1NCAxLjA3IDEwLjI4OSA0LjM0bC0zLjk0Ni0uMjUtLjYzNiAzLjk0MS0zLjY2NSAxLjUwNSAxLjEyIDMuODMyTC41MDggMTYuMzNsMi42NTYgMi45NjItMS4xMiAzLjgzMiAzLjY2NCAxLjUwNC42MzYgMy45NDIgMy45NDYtLjI1IDIuMjY1IDMuMjdMMTYgMjkuNjM4bDMuNDQ2IDEuOTU1eiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaWNvbi1zdGFyIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBkPSJNMjUuMjkyIDI5Ljg3OGwtMS43NzUtMTAuMzQ2IDcuNTE3LTcuMzI3LTEwLjM4OC0xLjUxTDE2IDEuMjgybC00LjY0NiA5LjQxMy0xMC4zODggMS41MSA3LjUxNyA3LjMyNy0xLjc3NSAxMC4zNDZMMTYgMjQuOTkzbDkuMjkyIDQuODg1eiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNMTEuOTIzIDE5LjEzNkw1LjQyNCAyMmwuNzE1LTcuMDY1LTQuNzMxLTUuMjk2IDYuOTQtMS41MDNMMTEuOTIzIDJsMy41NzQgNi4xMzYgNi45NCAxLjUwMy00LjczMSA1LjI5NkwxOC40MiAyMnoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLW1hc2stbG9hZCIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0ibm9uZSIgZD0iTTAgMGgzMnYzMkgweiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMTguMDEgNGExMS43OTggMTEuNzk4IDAgMCAwIDAgMUgzdjI0aDI0VjE0Ljk4NmE4LjczOCA4LjczOCAwIDAgMCAxIDBWMjlhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWNWExIDEgMCAwIDEgMS0xaDE1LjAxek0xNSAyM2E2IDYgMCAxIDEgMC0xMiA2IDYgMCAwIDEgMCAxMnptMC0xYTUgNSAwIDEgMCAwLTEwIDUgNSAwIDAgMCAwIDEweiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMjUgM2gxdjloLTF6Ii8+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIGQ9Ik0yMiA2bDMuNS0zLjVMMjkgNiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtbWFzayIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjQuNSIgc3Ryb2tlPSJpbmhlcml0IiBmaWxsPSJub25lIi8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0yIDFoMjBhMSAxIDAgMCAxIDEgMXYyMGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTF6bTAgMXYyMGgyMFYySDJ6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1yZWRvIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgb3BhY2l0eT0iLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTIxIDZIOWE2IDYgMCAxIDAgMCAxMmgxMnYxSDlBNyA3IDAgMCAxIDkgNWgxMnYxeiIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBkPSJNMTkgM2wyLjUgMi41TDE5IDgiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLXJlc2V0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgb3BhY2l0eT0iLjUiIHN0cm9rZT0ibm9uZSIgZmlsbD0ibm9uZSIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMiAxM3YtMWE3IDcgMCAwIDEgNy03aDEzdjFoLTF2NWgxdjFhNyA3IDAgMCAxLTcgN0gydi0xaDF2LTVIMnptNy03YTYgNiAwIDAgMC02IDZ2NmgxMmE2IDYgMCAwIDAgNi02VjZIOXoiLz4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iaW5oZXJpdCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgZD0iTTE5IDNsMi41IDIuNUwxOSA4TTUgMTZsLTIuNSAyLjVMNSAyMSIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtcm90YXRlLWNsb2Nrd2lzZSIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTI5IDE3aC0uOTI0YzAgNi42MjctNS4zNzMgMTItMTIgMTItNi42MjggMC0xMi01LjM3My0xMi0xMkM0LjA3NiAxMC4zOTggOS40MDcgNS4wNDEgMTYgNVY0QzguODIgNCAzIDkuODIgMyAxN3M1LjgyIDEzIDEzIDEzIDEzLTUuODIgMTMtMTN6Ii8+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIGQ9Ik0xNiAxLjVsNCAzLTQgMyIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0xNiA0aDR2MWgtNHoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLXJvdGF0ZS1jb3VudGVyY2xvY2t3aXNlIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMyAxN2guOTI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTIgNi42MjggMCAxMi01LjM3MyAxMi0xMiAwLTYuNjAyLTUuMzMxLTExLjk2LTExLjkyNC0xMlY0YzcuMTggMCAxMyA1LjgyIDEzIDEzcy01LjgyIDEzLTEzIDEzUzMgMjQuMTggMyAxN3oiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIgNGg0djFoLTR6Ii8+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIGQ9Ik0xNiAxLjVsLTQgMyA0IDMiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLXJvdGF0ZSIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgLz4KICAgIDxwYXRoIGZpbGw9ImluaGVyaXQiIHN0cm9rZT0ibm9uZSIgZD0iTTguMzQ5IDIyLjI1NGExMC4wMDIgMTAuMDAyIDAgMCAxLTIuNzc4LTEuNzE5bC42NS0uNzZhOS4wMDIgOS4wMDIgMCAwIDAgMi40OTUgMS41NDhsLS4zNjcuOTMxem0yLjg3My43MDRsLjA3OC0uOTk3YTkgOSAwIDEgMC0uNTU3LTE3Ljg1MmwtLjE0LS45OUExMC4wNzYgMTAuMDc2IDAgMCAxIDEyLjE0NSAzYzUuNTIzIDAgMTAgNC40NzcgMTAgMTBzLTQuNDc3IDEwLTEwIDEwYy0uMzEyIDAtLjYyLS4wMTQtLjkyNC0uMDQyem0tNy41NTYtNC42NTVhOS45NDIgOS45NDIgMCAwIDEtMS4yNTMtMi45OTZsLjk3My0uMjM0YTguOTQ4IDguOTQ4IDAgMCAwIDEuMTI0IDIuNjkzbC0uODQ0LjUzN3ptLTEuNTAyLTUuOTFBOS45NDkgOS45NDkgMCAwIDEgMi44OCA5LjIzbC45MjUuMzgyYTguOTU0IDguOTU0IDAgMCAwLS42NDQgMi44NDRsLS45OTgtLjA2MnptMi4yMS01LjY4NmMuNjg3LS44NDggMS41MS0xLjU4IDIuNDM2LTIuMTY2bC41MjMuODUyYTkuMDQ4IDkuMDQ4IDAgMCAwLTIuMTg4IDEuOTVsLS43NzEtLjYzNnoiLz4KICAgIDxwYXRoIHN0cm9rZT0iaW5oZXJpdCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgZD0iTTEzIDFsLTIuNSAyLjVMMTMgNiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtc2hhcGUtY2lyY2xlIiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTQuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1zaGFwZS1yZWN0YW5nbGUiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cmVjdCB3aWR0aD0iMjciIGhlaWdodD0iMjciIHg9IjIuNSIgeT0iMi41IiBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHJ4PSIxIi8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1zaGFwZS10cmlhbmdsZSIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTE2IDIuNWwxNS41IDI3SC41eiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtc2hhcGUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0xNC43MDYgOEgyMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIOWExIDEgMCAwIDEtMS0xdi00aDF2NGgxMlY5aC01LjcwNmwtLjU4OC0xeiIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik04LjUgMS41bDcuNSAxM0gxeiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtdGV4dC1hbGlnbi1jZW50ZXIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMzJ2MzJIMHoiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTIgNWgyOHYxSDJ6TTggMTJoMTZ2MUg4ek0yIDE5aDI4djFIMnpNOCAyNmgxNnYxSDh6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy10ZXh0LWFsaWduLWxlZnQiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMzJ2MzJIMHoiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTIgNWgyOHYxSDJ6TTIgMTJoMTZ2MUgyek0yIDE5aDI4djFIMnpNMiAyNmgxNnYxSDJ6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy10ZXh0LWFsaWduLXJpZ2h0IiB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJub25lIiBkPSJNMCAwaDMydjMySDB6Ii8+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9ImluaGVyaXQiIGQ9Ik0yIDVoMjh2MUgyek0xNCAxMmgxNnYxSDE0ek0yIDE5aDI4djFIMnpNMTQgMjZoMTZ2MUgxNHoiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLXRleHQtYm9sZCIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgzMnYzMkgweiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNNyAyaDJ2Mkg3ek03IDI4aDJ2Mkg3eiIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJpbmhlcml0IiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik05IDN2MTJoOWE2IDYgMCAxIDAgMC0xMkg5ek05IDE1djE0aDEwYTcgNyAwIDAgMCAwLTE0SDl6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy10ZXh0LWl0YWxpYyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgzMnYzMkgweiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMTUgMmg1djFoLTV6TTExIDI5aDV2MWgtNXpNMTcgM2gxbC00IDI2aC0xeiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtdGV4dC11bmRlcmxpbmUiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICA8cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMzJ2MzJIMHoiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTggMnYxNGE4IDggMCAxIDAgMTYgMFYyaDF2MTRhOSA5IDAgMCAxLTE4IDBWMmgxek0zIDI5aDI2djFIM3oiLz4KICAgIDxwYXRoIHN0cm9rZT0ibm9uZSIgZmlsbD0iaW5oZXJpdCIgZD0iTTUgMmg1djFINXpNMjIgMmg1djFoLTV6Ii8+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy10ZXh0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNNCAzaDE1YTEgMSAwIDAgMSAxIDFIM2ExIDEgMCAwIDEgMS0xek0zIDRoMXYxSDN6TTE5IDRoMXYxaC0xeiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMTEgM2gxdjE4aC0xeiIvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMTAgMjBoM3YxaC0zeiIvPgo8L3N5bWJvbD4KPHN5bWJvbCBpZD0iaWMtdW5kbyIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGQ9Ik0yNCAwSDB2MjRoMjR6IiBvcGFjaXR5PSIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIiAvPgogICAgPHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSJpbmhlcml0IiBkPSJNMyA2aDEyYTYgNiAwIDEgMSAwIDEySDN2MWgxMmE3IDcgMCAwIDAgMC0xNEgzdjF6Ii8+CiAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImluaGVyaXQiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIGQ9Ik01IDNMMi41IDUuNSA1IDgiLz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLXpvb20taW4iIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjI5IC0yOTApIHRyYW5zbGF0ZSgyMjkgMjkwKSI+CiAgICAgICAgPGNpcmNsZSBjeD0iMTAuNSIgY3k9IjEwLjUiIHI9IjkiIHN0cm9rZT0iaW5oZXJpdCIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGZpbGw9ImluaGVyaXQiIGQ9Ik0xOC44MjggMTUuODI4SDE5LjgyOFYyMi44MjhIMTguODI4eiIgdHJhbnNmb3JtPSJyb3RhdGUoLTQ1IDE5LjMyOCAxOS4zMjgpIi8+CiAgICAgICAgPHBhdGggZmlsbD0iaW5oZXJpdCIgZD0iTTcgMTBIMTRWMTFIN3oiLz4KICAgICAgICA8cGF0aCBmaWxsPSJpbmhlcml0IiBkPSJNMTAgN0gxMVYxNEgxMHoiLz4KICAgIDwvZz4KPC9zeW1ib2w+CjxzeW1ib2wgaWQ9ImljLXpvb20tb3V0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI2MyAtMjkwKSB0cmFuc2xhdGUoMjYzIDI5MCkiPgogICAgICAgIDxjaXJjbGUgY3g9IjEwLjUiIGN5PSIxMC41IiByPSI5IiBzdHJva2U9ImluaGVyaXQiIGZpbGw9Im5vbmUiLz4KICAgICAgICA8cGF0aCBmaWxsPSJpbmhlcml0IiBkPSJNMTguODI4IDE1LjgyOEgxOS44MjhWMjIuODI4SDE4LjgyOHoiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxOS4zMjggMTkuMzI4KSIvPgogICAgICAgIDxwYXRoIGZpbGw9ImluaGVyaXQiIGQ9Ik03IDEwSDE0VjExSDd6Ii8+CiAgICA8L2c+Cjwvc3ltYm9sPgo8c3ltYm9sIGlkPSJpYy1oYW5kIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgICA8cGF0aCBmaWxsPSJpbmhlcml0IiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik04LjY3MiAzLjM2YzEuMzI4IDAgMi4xMTQuNzggMi4yOSAxLjg2OWwuMDE0LjEwMS4wMjMuMDA2djEuMDQybC0uNjM4LS4xODVjLS4xODctLjA1NS0uMzIzLS4yMTEtLjM1NC0uMzk5TDEwIDUuNzEzYzAtLjgyNS0uNDItMS4zNTMtMS4zMjgtMS4zNTNDNy42OTUgNC4zNiA3IDUuMDQxIDcgNS43MTN2Ny45NDFjMCAuNDM5LS41MjQuNjY1LS44NDMuMzY0bC0xLjg2OC0xLjc2MWMtLjU5NS0uNTI4LTEuMzE2LS42MTctMS45MTgtLjIxNi0uNTIyLjM0OC0uNTYyIDEuMjAzLS4xOCAxLjhMNy43MzggMjJoMTEuMDEzbC4yODUtLjUxOGMxLjI0Ny0yLjMyNiAxLjg5Ny00LjI1OSAxLjk2LTUuNzg1bC4wMDQtLjIzOVY4LjAzNWMwLS42NTYtLjUtMS4xNy0xLTEuMTctLjUwMyAwLTEgLjQ1Ni0xIDEuMTcgMCAuMzMzLS4zMi41NzMtLjY0LjQ4TDE4IDguNDFWNy4zNjhsLjA4Ni4wMjYuMDQyLS4xMzZjLjI3OS0uODA1Ljk3OC0xLjMzMiAxLjczOC0xLjM4OEwyMCA1Ljg2NWMxLjA1NyAwIDIgLjk2NyAyIDIuMTd2Ny40MjNjMCAxLjkyOS0uODQ1IDQuMzUyLTIuNTIxIDcuMjktLjA5LjE1Ni0uMjU1LjI1Mi0uNDM1LjI1Mkg3LjQ3NGMtLjE2NiAwLS4zMjEtLjA4Mi0uNDE0LS4yMTlsLTUuNzA0LTguMzljLS42NTMtMS4wMTktLjU4NC0yLjQ4Ni40Ni0zLjE4MiAxLS42NjYgMi4yMTYtLjUxNiAzLjE0OC4zMUw2IDEyLjQ5NVY1LjcxM2MwLTEuMTggMS4wNTgtMi4yNjMgMi40OS0yLjM0OHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yOTcgLTI5MCkgdHJhbnNsYXRlKDI5NyAyOTApIi8+CiAgICAgICAgPHBhdGggZmlsbD0iaW5oZXJpdCIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNSAxLjVjMS4zMjUgMCAyLjQxIDEuMDMyIDIuNDk1IDIuMzM2TDE1IDR2Ny4yMmgtMVY0YzAtLjgyOC0uNjcyLTEuNS0xLjUtMS41LS43OCAwLTEuNDIuNTk1LTEuNDkzIDEuMzU2TDExIDR2Ny4yMmgtMVY0YzAtMS4zOCAxLjEyLTIuNSAyLjUtMi41eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI5NyAtMjkwKSB0cmFuc2xhdGUoMjk3IDI5MCkiLz4KICAgICAgICA8cGF0aCBmaWxsPSJpbmhlcml0IiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0xNi41IDMuNWMxLjMyNSAwIDIuNDEgMS4wMzIgMi40OTUgMi4zMzZMMTkgNnY2LjNoLTFWNmMwLS44MjgtLjY3Mi0xLjUtMS41LTEuNS0uNzggMC0xLjQyLjU5NS0xLjQ5MyAxLjM1NkwxNSA2djIuNDRoLTFWNmMwLTEuMzggMS4xMi0yLjUgMi41LTIuNXoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yOTcgLTI5MCkgdHJhbnNsYXRlKDI5NyAyOTApIi8+CiAgICA8L2c+Cjwvc3ltYm9sPgo8L2RlZnM+Cjwvc3ZnPgo="; + } + ), + /***/ + 4858: ( + /***/ + function(l) { + l.exports = r; + } + ), + /***/ + 4960: ( + /***/ + function() { + } + ), + /***/ + 6759: ( + /***/ + function() { + } + ), + /***/ + 6272: ( + /***/ + function() { + } + ) + /******/ + }, i = {}; + function a(l) { + var u = i[l]; + if (u !== void 0) + return u.exports; + var d = i[l] = { + /******/ + // no module.id needed + /******/ + // no module.loaded needed + /******/ + exports: {} + /******/ + }; + return n[l](d, d.exports, a), d.exports; + } + (function() { + a.n = function(l) { + var u = l && l.__esModule ? ( + /******/ + function() { + return l.default; + } + ) : ( + /******/ + function() { + return l; + } + ); + return a.d(u, { a: u }), u; + }; + })(), function() { + a.d = function(l, u) { + for (var d in u) + a.o(u, d) && !a.o(l, d) && Object.defineProperty(l, d, { enumerable: !0, get: u[d] }); + }; + }(), function() { + a.g = function() { + if (typeof globalThis == "object") + return globalThis; + try { + return this || new Function("return this")(); + } catch (l) { + if (typeof window == "object") + return window; + } + }(); + }(), function() { + a.o = function(l, u) { + return Object.prototype.hasOwnProperty.call(l, u); + }; + }(); + var o = {}; + return function() { + a.d(o, { + default: function() { + return ( + /* binding */ + ox + ); + } + }); + var l = a(9131), u = /* @__PURE__ */ a.n(l), d = a(1899), f = /* @__PURE__ */ a.n(d), g = a(6562), v = /* @__PURE__ */ a.n(g), y = a(1734), C = /* @__PURE__ */ a.n(y), A = a(8005), S = /* @__PURE__ */ a.n(A), _ = a(6065), E = /* @__PURE__ */ a.n(_), I = a(4496), w = /* @__PURE__ */ a.n(I); + Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector), Element.prototype.closest || (Element.prototype.closest = function(ce) { + var W = this; + do { + if (Element.prototype.matches.call(W, ce)) + return W; + W = W.parentElement || W.parentNode; + } while (W !== null && W.nodeType === 1); + return null; + }); + /*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */ + "document" in self && ((!("classList" in document.createElement("_")) || document.createElementNS && !("classList" in document.createElementNS("http://www.w3.org/2000/svg", "g"))) && function(ce) { + if ("Element" in ce) { + var W = "classList", F = "prototype", j = ce.Element[F], L = Object, $ = u()(String[F]) || function() { + return this.replace(/^\s+|\s+$/g, ""); + }, re = f()(Array[F]) || function(vt) { + for (var It = 0, Et = this.length; It < Et; It++) + if (It in this && this[It] === vt) + return It; + return -1; + }, le = function(It, Et) { + this.name = It, this.code = DOMException[It], this.message = Et; + }, me = function(It, Et) { + if (Et === "") + throw new le("SYNTAX_ERR", "The token must not be empty."); + if (/\s/.test(Et)) + throw new le("INVALID_CHARACTER_ERR", "The token must not contain space characters."); + return re.call(It, Et); + }, ve = function(It) { + for (var Et = $.call(It.getAttribute("class") || ""), Rt = Et ? Et.split(/\s+/) : [], sr = 0, un = Rt.length; sr < un; sr++) + this.push(Rt[sr]); + this._updateClassName = function() { + It.setAttribute("class", this.toString()); + }; + }, Oe = ve[F] = [], je = function() { + return new ve(this); + }; + if (le[F] = Error[F], Oe.item = function(vt) { + return this[vt] || null; + }, Oe.contains = function(vt) { + return ~me(this, vt + ""); + }, Oe.add = function() { + var vt = arguments, It = 0, Et = vt.length, Rt, sr = !1; + do + Rt = vt[It] + "", ~me(this, Rt) || (this.push(Rt), sr = !0); + while (++It < Et); + sr && this._updateClassName(); + }, Oe.remove = function() { + var vt = arguments, It = 0, Et = vt.length, Rt, sr = !1, un; + do + for (Rt = vt[It] + "", un = me(this, Rt); ~un; ) { + var yn; + v()(yn = this).call(yn, un, 1), sr = !0, un = me(this, Rt); + } + while (++It < Et); + sr && this._updateClassName(); + }, Oe.toggle = function(vt, It) { + var Et = this.contains(vt), Rt = Et ? It !== !0 && "remove" : It !== !1 && "add"; + return Rt && this[Rt](vt), It === !0 || It === !1 ? It : !Et; + }, Oe.replace = function(vt, It) { + var Et = me(vt + ""); + if (~Et) { + var Rt; + v()(Rt = this).call(Rt, Et, 1, It), this._updateClassName(); + } + }, Oe.toString = function() { + return this.join(" "); + }, C()) { + var pt = { + get: je, + enumerable: !0, + configurable: !0 + }; + try { + C()(j, W, pt); + } catch (vt) { + (vt.number === void 0 || vt.number === -2146823252) && (pt.enumerable = !1, C()(j, W, pt)); + } + } else + L[F].__defineGetter__ && j.__defineGetter__(W, je); + } + }(self), function() { + var ce = document.createElement("_"); + if (ce.classList.add("c1", "c2"), !ce.classList.contains("c2")) { + var W = function(L) { + var $ = DOMTokenList.prototype[L]; + DOMTokenList.prototype[L] = function(re) { + var le, me = arguments.length; + for (le = 0; le < me; le++) + re = arguments[le], $.call(this, re); + }; + }; + W("add"), W("remove"); + } + if (ce.classList.toggle("c3", !1), ce.classList.contains("c3")) { + var F = DOMTokenList.prototype.toggle; + DOMTokenList.prototype.toggle = function(j, L) { + return 1 in arguments && !this.contains(j) == !L ? L : F.call(this, j); + }; + } + "replace" in document.createElement("_").classList || (DOMTokenList.prototype.replace = function(j, L) { + var $ = this.toString().split(" "), re = f()($).call($, j + ""); + ~re && ($ = S()($).call($, re), this.remove.apply(this, $), this.add(L), this.add.apply(this, S()($).call($, 1))); + }), ce = null; + }()); + /*! + * @copyright Copyright (c) 2017 IcoMoon.io + * @license Licensed under MIT license + * See https://github.com/Keyamoon/svgxuse + * @version 1.2.6 + */ + (function() { + if (typeof window != "undefined" && window.addEventListener) { + var ce = E()(null), W, F, j = function() { + clearTimeout(F), F = w()(W, 100); + }, L = function() { + }, $ = function() { + var Oe; + window.addEventListener("resize", j, !1), window.addEventListener("orientationchange", j, !1), window.MutationObserver ? (Oe = new MutationObserver(j), Oe.observe(document.documentElement, { + childList: !0, + subtree: !0, + attributes: !0 + }), L = function() { + try { + Oe.disconnect(), window.removeEventListener("resize", j, !1), window.removeEventListener("orientationchange", j, !1); + } catch (pt) { + } + }) : (document.documentElement.addEventListener("DOMSubtreeModified", j, !1), L = function() { + document.documentElement.removeEventListener("DOMSubtreeModified", j, !1), window.removeEventListener("resize", j, !1), window.removeEventListener("orientationchange", j, !1); + }); + }, re = function(Oe) { + function je(Et) { + var Rt; + return Et.protocol !== void 0 ? Rt = Et : (Rt = document.createElement("a"), Rt.href = Et), Rt.protocol.replace(/:/g, "") + Rt.host; + } + var pt, vt, It; + return window.XMLHttpRequest && (pt = new XMLHttpRequest(), vt = je(location), It = je(Oe), pt.withCredentials === void 0 && It !== "" && It !== vt ? pt = XDomainRequest || void 0 : pt = XMLHttpRequest), pt; + }, le = "http://www.w3.org/1999/xlink"; + W = function() { + var Oe, je, pt, vt, It, Et = 0, Rt, sr, un, yn, Kn; + function xr() { + Et -= 1, Et === 0 && (L(), $()); + } + function Aa(hs) { + return function() { + ce[hs.base] !== !0 && (hs.useEl.setAttributeNS(le, "xlink:href", "#" + hs.hash), hs.useEl.hasAttribute("href") && hs.useEl.setAttribute("href", "#" + hs.hash)); + }; + } + function ol(hs) { + return function() { + var zh = document.body, rp = document.createElement("x"), kc; + hs.onload = null, rp.innerHTML = hs.responseText, kc = rp.getElementsByTagName("svg")[0], kc && (kc.setAttribute("aria-hidden", "true"), kc.style.position = "absolute", kc.style.width = 0, kc.style.height = 0, kc.style.overflow = "hidden", zh.insertBefore(kc, zh.firstChild)), xr(); + }; + } + function Mc(hs) { + return function() { + hs.onerror = null, hs.ontimeout = null, xr(); + }; + } + for (L(), yn = document.getElementsByTagName("use"), It = 0; It < yn.length; It += 1) { + try { + je = yn[It].getBoundingClientRect(); + } catch (hs) { + je = !1; + } + vt = yn[It].getAttribute("href") || yn[It].getAttributeNS(le, "href") || yn[It].getAttribute("xlink:href"), vt && vt.split ? un = vt.split("#") : un = ["", ""], Oe = un[0], pt = un[1], Rt = je && je.left === 0 && je.right === 0 && je.top === 0 && je.bottom === 0, je && je.width === 0 && je.height === 0 && !Rt ? (yn[It].hasAttribute("href") && yn[It].setAttributeNS(le, "xlink:href", vt), Oe.length && (Kn = ce[Oe], Kn !== !0 && w()(Aa({ + useEl: yn[It], + base: Oe, + hash: pt + }), 0), Kn === void 0 && (sr = re(Oe), sr !== void 0 && (Kn = new sr(), ce[Oe] = Kn, Kn.onload = ol(Kn), Kn.onerror = Mc(Kn), Kn.ontimeout = Mc(Kn), Kn.open("GET", Oe), Kn.send(), Et += 1)))) : Rt ? Oe.length && ce[Oe] && w()(Aa({ + useEl: yn[It], + base: Oe, + hash: pt + }), 0) : ce[Oe] === void 0 ? ce[Oe] = !0 : ce[Oe].onload && (ce[Oe].abort(), delete ce[Oe].onload, ce[Oe] = !0); + } + yn = "", Et += 1, xr(); + }; + var me; + me = function() { + window.removeEventListener("load", me, !1), F = w()(W, 0); + }, document.readyState !== "complete" ? window.addEventListener("load", me, !1) : me(); + } + })(); + var x = a(1845); + function b(ce, W) { + (W == null || W > ce.length) && (W = ce.length); + for (var F = 0, j = new Array(W); F < W; F++) + j[F] = ce[F]; + return j; + } + function R(ce) { + if (x(ce)) + return b(ce); + } + var M = a(184), O = a(662), P = a(7172); + function B(ce) { + if (typeof M != "undefined" && O(ce) != null || ce["@@iterator"] != null) + return P(ce); + } + var H = a(711); + function Y(ce, W) { + var F; + if (ce) { + if (typeof ce == "string") + return b(ce, W); + var j = H(F = Object.prototype.toString.call(ce)).call(F, 8, -1); + if (j === "Object" && ce.constructor && (j = ce.constructor.name), j === "Map" || j === "Set") + return P(ce); + if (j === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(j)) + return b(ce, W); + } + } + function X() { + throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + } + function ee(ce) { + return R(ce) || B(ce) || Y(ce) || X(); + } + var ae = a(7077); + function J(ce, W, F) { + return W in ce ? ae(ce, W, { + value: F, + enumerable: !0, + configurable: !0, + writable: !0 + }) : ce[W] = F, ce; + } + function ne(ce, W) { + if (!(ce instanceof W)) + throw new TypeError("Cannot call a class as a function"); + } + function fe(ce, W) { + for (var F = 0; F < W.length; F++) { + var j = W[F]; + j.enumerable = j.enumerable || !1, j.configurable = !0, "value" in j && (j.writable = !0), ae(ce, j.key, j); + } + } + function de(ce, W, F) { + return W && fe(ce.prototype, W), F && fe(ce, F), ce; + } + var Te = a(4426), be = /* @__PURE__ */ a.n(Te), Ve = a(9406), pe = /* @__PURE__ */ a.n(Ve), Be = a(8189), Ue = /* @__PURE__ */ a.n(Be), Qe = a(3972), Re = /* @__PURE__ */ a.n(Qe), Ne = a(2777), Me = a(961), we = /* @__PURE__ */ a.n(Me), He = a(5695), Ie = /* @__PURE__ */ a.n(He), Ae = a(8592), Fe = /* @__PURE__ */ a.n(Ae), $e = a(9052), lt = /* @__PURE__ */ a.n($e), it = a(2560), nt = /* @__PURE__ */ a.n(it), ut = a(2461), rt = /* @__PURE__ */ a.n(ut); + function Ke(ce) { + if (x(ce)) + return ce; + } + function ze(ce, W) { + var F = ce == null ? null : typeof M != "undefined" && O(ce) || ce["@@iterator"]; + if (F != null) { + var j = [], L = !0, $ = !1, re, le; + try { + for (F = F.call(ce); !(L = (re = F.next()).done) && (j.push(re.value), !(W && j.length === W)); L = !0) + ; + } catch (me) { + $ = !0, le = me; + } finally { + try { + !L && F.return != null && F.return(); + } finally { + if ($) + throw le; + } + } + return j; + } + } + function qe() { + throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + } + function ct(ce, W) { + return Ke(ce) || ze(ce, W) || Y(ce, W) || qe(); + } + var ft = a(6397), _t = /* @__PURE__ */ a.n(ft), Nt = a(7636), Yt = /* @__PURE__ */ a.n(Nt), tr = a(789), Ct = /* @__PURE__ */ a.n(tr), hr = a(4729), Er = /* @__PURE__ */ a.n(hr), Fr = a(1610), Dn = /* @__PURE__ */ a.n(Fr), hn = a(3053), Jn = /* @__PURE__ */ a.n(hn), nn, dn = ["zoomIn", "zoomOut", "hand"], an = ["history", "undo", "redo", "reset"], zn = ["delete", "deleteAll"], Lt = pe()(nn = []).call(nn, dn, an, zn), Ot = { + FILTER: "filter", + COLOR: "color" + }, Jt = ["rect", "circle", "triangle"], jt = { + CROPZONE: "cropzone" + }, nr = { + VINTAGE: "vintage", + SEPIA2: "sepia2", + REMOVE_COLOR: "removeColor", + COLOR_FILTER: "colorFilter", + REMOVE_WHITE: "removeWhite", + BLEND_COLOR: "blendColor", + BLEND: "blend" + }, Ht = Mr("IMAGE_LOADER", "CROPPER", "FLIP", "ROTATION", "FREE_DRAWING", "LINE", "TEXT", "ICON", "FILTER", "SHAPE", "ZOOM", "RESIZE"), wn = { + lockSkewingX: !0, + lockSkewingY: !0, + bringForward: !0, + isRegular: !1 + }, On = { + hasRotatingPoint: !1, + hasBorders: !1, + lockScalingFlip: !0, + lockRotation: !0, + lockSkewingX: !0, + lockSkewingY: !0 + }, or = { + CLEAR_OBJECTS: "clearObjects", + LOAD_IMAGE: "loadImage", + FLIP_IMAGE: "flip", + ROTATE_IMAGE: "rotate", + ADD_OBJECT: "addObject", + REMOVE_OBJECT: "removeObject", + APPLY_FILTER: "applyFilter", + REMOVE_FILTER: "removeFilter", + ADD_ICON: "addIcon", + CHANGE_ICON_COLOR: "changeIconColor", + ADD_SHAPE: "addShape", + CHANGE_SHAPE: "changeShape", + ADD_TEXT: "addText", + CHANGE_TEXT: "changeText", + CHANGE_TEXT_STYLE: "changeTextStyle", + ADD_IMAGE_OBJECT: "addImageObject", + RESIZE_CANVAS_DIMENSION: "resizeCanvasDimension", + SET_OBJECT_PROPERTIES: "setObjectProperties", + SET_OBJECT_POSITION: "setObjectPosition", + CHANGE_SELECTION: "changeSelection", + RESIZE_IMAGE: "resize" + }, Pt = { + OBJECT_ACTIVATED: "objectActivated", + OBJECT_MOVED: "objectMoved", + OBJECT_SCALED: "objectScaled", + OBJECT_CREATED: "objectCreated", + OBJECT_ROTATED: "objectRotated", + OBJECT_ADDED: "objectAdded", + OBJECT_MODIFIED: "objectModified", + TEXT_EDITING: "textEditing", + TEXT_CHANGED: "textChanged", + ICON_CREATE_RESIZE: "iconCreateResize", + ICON_CREATE_END: "iconCreateEnd", + ADD_TEXT: "addText", + ADD_OBJECT: "addObject", + ADD_OBJECT_AFTER: "addObjectAfter", + MOUSE_DOWN: "mousedown", + MOUSE_UP: "mouseup", + MOUSE_MOVE: "mousemove", + // UNDO/REDO Events + REDO_STACK_CHANGED: "redoStackChanged", + UNDO_STACK_CHANGED: "undoStackChanged", + SELECTION_CLEARED: "selectionCleared", + SELECTION_CREATED: "selectionCreated", + EXECUTE_COMMAND: "executeCommand", + AFTER_UNDO: "afterUndo", + AFTER_REDO: "afterRedo", + ZOOM_CHANGED: "zoomChanged", + HAND_STARTED: "handStarted", + HAND_STOPPED: "handStopped", + KEY_DOWN: "keydown", + KEY_UP: "keyup", + INPUT_BOX_EDITING_STARTED: "inputBoxEditingStarted", + INPUT_BOX_EDITING_STOPPED: "inputBoxEditingStopped", + FOCUS: "focus", + BLUR: "blur", + IMAGE_RESIZED: "imageResized" + }, Qr = { + COLOR_PICKER_INPUT_BOX: ".tui-colorpicker-palette-hex" + }, Bn = { + LOAD_IMAGE: "Load", + LOAD_MASK_IMAGE: "Mask", + ADD_MASK_IMAGE: "Mask", + ADD_IMAGE_OBJECT: "Mask", + CROP: "Crop", + RESIZE: "Resize", + APPLY_FILTER: "Filter", + REMOVE_FILTER: "Filter", + CHANGE_SHAPE: "Shape", + CHANGE_ICON_COLOR: "Icon", + ADD_TEXT: "Text", + CHANGE_TEXT_STYLE: "Text", + REMOVE_OBJECT: "Delete", + CLEAR_OBJECTS: "Delete" + }, Un = Mr("NORMAL", "CROPPER", "FREE_DRAWING", "LINE_DRAWING", "TEXT", "SHAPE", "ICON", "ZOOM", "RESIZE"), Yn = { + TEXT: "text", + CROP: "crop", + RESIZE: "resize", + SHAPE: "shape", + ZOOM: "zoom" + }, fi = { + DEFAULT: "normal", + ZOOM: "zoom", + HAND: "hand" + }, xn = { + Z: 90, + Y: 89, + C: 67, + V: 86, + SHIFT: 16, + BACKSPACE: 8, + DEL: 46, + ARROW_DOWN: 40, + ARROW_UP: 38, + SPACE: 32, + DIGIT_0: 48, + DIGIT_9: 57 + }, Or = { + SELECTION_STYLE: { + borderColor: "red", + cornerColor: "green", + cornerSize: 10, + originX: "center", + originY: "center", + transparentCorners: !1 + } + }, Dr = { + addedObject: "The object is already added.", + flip: "The flipX and flipY setting values are not changed.", + invalidDrawingMode: "This operation is not supported in the drawing mode.", + invalidParameters: "Invalid parameters.", + isLock: "The executing command state is locked.", + loadImage: "The background image is empty.", + loadingImageFailed: "Invalid image loaded.", + noActiveObject: "There is no active object.", + noObject: "The object is not in canvas.", + redo: "The promise of redo command is reject.", + rotation: "The current angle is same the old angle.", + undo: "The promise of undo command is reject.", + unsupportedOperation: "Unsupported operation.", + unsupportedType: "Unsupported object type." + }, po = { + "icon-arrow": "M40 12V0l24 24-24 24V36H0V12h40z", + "icon-arrow-2": "M49,32 H3 V22 h46 l-18,-18 h12 l23,23 L43,50 h-12 l18,-18 z ", + "icon-arrow-3": "M43.349998,27 L17.354,53 H1.949999 l25.996,-26 L1.949999,1 h15.404 L43.349998,27 z ", + "icon-star": "M35,54.557999 l-19.912001,10.468 l3.804,-22.172001 l-16.108,-15.7 l22.26,-3.236 L35,3.746 l9.956,20.172001 l22.26,3.236 l-16.108,15.7 l3.804,22.172001 z ", + "icon-star-2": "M17,31.212 l-7.194,4.08 l-4.728,-6.83 l-8.234,0.524 l-1.328,-8.226 l-7.644,-3.14 l2.338,-7.992 l-5.54,-6.18 l5.54,-6.176 l-2.338,-7.994 l7.644,-3.138 l1.328,-8.226 l8.234,0.522 l4.728,-6.83 L17,-24.312 l7.194,-4.08 l4.728,6.83 l8.234,-0.522 l1.328,8.226 l7.644,3.14 l-2.338,7.992 l5.54,6.178 l-5.54,6.178 l2.338,7.992 l-7.644,3.14 l-1.328,8.226 l-8.234,-0.524 l-4.728,6.83 z ", + "icon-polygon": "M3,31 L19,3 h32 l16,28 l-16,28 H19 z ", + "icon-location": "M24 62C8 45.503 0 32.837 0 24 0 10.745 10.745 0 24 0s24 10.745 24 24c0 8.837-8 21.503-24 38zm0-28c5.523 0 10-4.477 10-10s-4.477-10-10-10-10 4.477-10 10 4.477 10 10 10z", + "icon-heart": "M49.994999,91.349998 l-6.96,-6.333 C18.324001,62.606995 2.01,47.829002 2.01,29.690998 C2.01,14.912998 13.619999,3.299999 28.401001,3.299999 c8.349,0 16.362,5.859 21.594,12 c5.229,-6.141 13.242001,-12 21.591,-12 c14.778,0 26.390999,11.61 26.390999,26.390999 c0,18.138 -16.314001,32.916 -41.025002,55.374001 l-6.96,6.285 z ", + "icon-bubble": "M44 48L34 58V48H12C5.373 48 0 42.627 0 36V12C0 5.373 5.373 0 12 0h40c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12h-8z" + }, as = { + realTimeEvent: !0, + min: -360, + max: 360, + value: 0 + }, zo = { + min: 5, + max: 30, + value: 12 + }, Bs = { + realTimeEvent: !0, + min: 2, + max: 300, + value: 3 + }, Cr = { + realTimeEvent: !0, + min: 10, + max: 100, + value: 50 + }, gt = { + tintOpacityRange: { + realTimeEvent: !0, + min: 0, + max: 1, + value: 0.7, + useDecimal: !0 + }, + removewhiteDistanceRange: { + realTimeEvent: !0, + min: 0, + max: 1, + value: 0.2, + useDecimal: !0 + }, + brightnessRange: { + realTimeEvent: !0, + min: -1, + max: 1, + value: 0, + useDecimal: !0 + }, + noiseRange: { + realTimeEvent: !0, + min: 0, + max: 1e3, + value: 100 + }, + pixelateRange: { + realTimeEvent: !0, + min: 2, + max: 20, + value: 4 + }, + colorfilterThresholdRange: { + realTimeEvent: !0, + min: 0, + max: 1, + value: 0.2, + useDecimal: !0 + }, + blurFilterRange: { + value: 0.1 + } + }, Xt = { + LEFT: 0, + TOP: 0, + WIDTH: 0.5, + HEIGHT: 0.5 + }, Wt = { + realTimeEvent: !0, + min: 32, + max: 4088, + value: 800 + }, zr = 2, _r = "tui-image-editor-", vn = Math.min, Xe = Math.max, Tt = !1, Bt = 0; + function Gt(ce) { + return ce.__fe_id || (Bt += 1, ce.__fe_id = Bt), ce.__fe_id; + } + function ur(ce) { + return typeof ce == "function"; + } + function Ur(ce, W, F) { + if (W > F) { + var j = [F, W]; + W = j[0], F = j[1]; + } + return Xe(W, vn(ce, F)); + } + function Mr() { + for (var ce = {}, W = arguments.length, F = new Array(W), j = 0; j < W; j++) + F[j] = arguments[j]; + return Fe()(F, function(L) { + ce[L] = L; + }), ce; + } + function ai(ce, W) { + var F = {}, j = W.length, L = 0, $; + for (L = 0; L < j; L += 1) + $ = W[L], F[$] = ce[$]; + return F; + } + function en(ce) { + return _t()(ce, 10); + } + function Br(ce) { + return ce.replace(/-([a-z])/g, function(W, F) { + return F.toUpperCase(); + }); + } + function Xn() { + return !!(window.File && window.FileList && window.FileReader); + } + function ir(ce, W) { + var F, j, L; + if (ce.length === 4) { + var $; + ce = pe()($ = "".concat(ce)).call($, S()(ce).call(ce, 1, 4)); + } + var re = _t()(S()(ce).call(ce, 1, 3), 16), le = _t()(S()(ce).call(ce, 3, 5), 16), me = _t()(S()(ce).call(ce, 5, 7), 16), ve = W || 1; + return pe()(F = pe()(j = pe()(L = "rgba(".concat(re, ", ")).call(L, le, ", ")).call(j, me, ", ")).call(F, ve, ")"); + } + function Fi() { + Tt || (Tt = !0, Er()("image-editor", "UA-129999381-1")); + } + function wi(ce, W) { + var F = document.getElementsByTagName("head"), j = ct(F, 1), L = j[0], $ = document.createElement("link"), re = encodeURIComponent(ce); + W && ($.id = W), $.setAttribute("rel", "stylesheet"), $.setAttribute("type", "text/css"), $.setAttribute("href", "data:text/css;charset=UTF-8,".concat(re)), L.appendChild($); + } + function gs(ce) { + return function(W) { + return ce.querySelector(W); + }; + } + function Bi(ce) { + var W = /data:(image\/.+);base64,/, F = "", j, L, $; + j = ce.replace(W, function(le, me) { + return F = me, ""; + }), j = atob(j); + var re = j.length; + for (L = new Uint8Array(re), $ = 0; $ < re; $ += 1) + L[$] = j.charCodeAt($); + return new Blob([L], { + type: F + }); + } + function nc(ce) { + return Number(ce.toFixed(zr)); + } + function aa(ce) { + Fe()(ce, function(W, F) { + ce[F] = null; + }); + } + function Lo() { + var ce, W = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", F = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; + if (W.charAt(0) === ".") { + var j; + return pe()(j = ".".concat(_r).concat(F)).call(j, S()(W).call(W, 1)); + } + return pe()(ce = "".concat(_r).concat(F)).call(ce, W); + } + function Ua(ce, W) { + var F = W.originX, j = W.originY, L = ce.getPointByOrigin(F, j), $ = L.x, re = L.y; + ce.set({ + left: $, + top: re, + originX: F, + originY: j + }), ce.setCoords(); + } + function As(ce) { + var W, F = {}; + return Yt()(W = rt()(ce)).call(W, function(j) { + F[ce[j]] = j; + }), F; + } + function Ho(ce, W) { + ce.customProps = ce.customProps || {}, we()(ce.customProps, W); + } + function Rs(ce, W) { + var F = {}; + return nt()(W) && (W = [W]), Fe()(W, function(j) { + F[j] = ce.customProps[j]; + }), F; + } + function Vu(ce) { + return ce.charAt(0).toUpperCase() + S()(ce).call(ce, 1); + } + function ic(ce, W) { + return f()(ce).call(ce, W) >= 0; + } + function vs() { + var ce = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return Dn()(ce, "type") || Ot.COLOR; + } + function Ia(ce) { + var W = Ct()(ce), F = W === void 0 ? {} : W; + return F.source ? Ot.FILTER : Ot.COLOR; + } + function oi(ce) { + return Jn()(ce.get("type"), Jt) >= 0; + } + function Ds(ce) { + if (ic(Jt, ce)) + return "Shape"; + switch (ce) { + case "i-text": + return "Text"; + case "path": + case "line": + return "Draw"; + case "activeSelection": + return "Group"; + default: + return fa(ce); + } + } + function Xa(ce) { + var W = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, F = W.useAlpha, j = F === void 0 ? !0 : F, L = W.mode, $ = nr.VINTAGE, re = nr.REMOVE_COLOR, le = nr.BLEND_COLOR, me = nr.SEPIA2, ve = nr.COLOR_FILTER, Oe = nr.REMOVE_WHITE, je = nr.BLEND, pt; + switch (ce) { + case $: + pt = me; + break; + case re: + pt = j ? ve : Oe; + break; + case le: + pt = L === "add" ? je : L; + break; + default: + pt = ce; + } + return fa(pt); + } + function xa(ce) { + var W = or.LOAD_IMAGE; + return typeof ce == "string" ? W === ce : W === ce.name; + } + function oa(ce) { + var W, F, j = or.FLIP_IMAGE, L = or.ROTATE_IMAGE, $ = or.ADD_TEXT, re = or.APPLY_FILTER, le = or.REMOVE_FILTER, me = or.CHANGE_SHAPE, ve = or.CHANGE_ICON_COLOR, Oe = or.CHANGE_TEXT_STYLE, je = or.CLEAR_OBJECTS, pt = or.ADD_IMAGE_OBJECT, vt = or.REMOVE_OBJECT, It = or.RESIZE_IMAGE, Et = ce.name, Rt = ce.args, sr; + switch (Et) { + case j: + sr = { + name: Et, + detail: Rt[1] === "reset" ? Rt[1] : S()(W = Rt[1]).call(W, 4) + }; + break; + case L: + sr = { + name: Et, + detail: Rt[2] + }; + break; + case re: + sr = { + name: Bn.APPLY_FILTER, + detail: Xa(Rt[1], Rt[2]) + }; + break; + case le: + sr = { + name: Bn.REMOVE_FILTER, + detail: "Remove" + }; + break; + case me: + sr = { + name: Bn.CHANGE_SHAPE, + detail: "Change" + }; + break; + case ve: + sr = { + name: Bn.CHANGE_ICON_COLOR, + detail: "Change" + }; + break; + case Oe: + sr = { + name: Bn.CHANGE_TEXT_STYLE, + detail: "Change" + }; + break; + case vt: + sr = { + name: Bn.REMOVE_OBJECT, + detail: Rt[2] + }; + break; + case je: + sr = { + name: Bn.CLEAR_OBJECTS, + detail: "All" + }; + break; + case pt: + sr = { + name: Bn.ADD_IMAGE_OBJECT, + detail: "Add" + }; + break; + case $: + sr = { + name: Bn.ADD_TEXT + }; + break; + case It: + sr = { + name: Bn.RESIZE, + detail: pe()(F = "".concat(~~Rt[1].width, "x")).call(F, ~~Rt[1].height) + }; + break; + default: + sr = { + name: Et + }; + break; + } + return Rt[1] === "mask" && (sr = { + name: Bn.LOAD_MASK_IMAGE, + detail: "Apply" + }), sr; + } + function ma(ce) { + return ce === "top" ? "bottom" : ce === "left" ? "right" : ce === "right" ? "left" : "top"; + } + function fa(ce) { + return ce.replace(/[a-z]/, function(W) { + return W.toUpperCase(); + }); + } + function os(ce) { + var W = ce.left, F = ce.top, j = ce.width, L = ce.height, $ = Xt.LEFT, re = Xt.TOP, le = Xt.WIDTH, me = Xt.HEIGHT; + return W === $ && F === re && j === le && L === me; + } + var Ul = Mr("UN_IMPLEMENTATION", "NO_COMPONENT_NAME"), Os = { + UN_IMPLEMENTATION: "Should implement a method: ", + NO_COMPONENT_NAME: "Should set a component name" + }, ja = { + UN_IMPLEMENTATION: function(W) { + return Os.UN_IMPLEMENTATION + W; + }, + NO_COMPONENT_NAME: function() { + return Os.NO_COMPONENT_NAME; + } + }, sa = { + types: we()({}, Ul), + create: function(W) { + W = W.toLowerCase(); + for (var F = ja[W], j = arguments.length, L = new Array(j > 1 ? j - 1 : 0), $ = 1; $ < j; $++) + L[$ - 1] = arguments[$]; + return F.apply(void 0, L); + } + }, pi = sa.create, Xr = sa.types, Mn = /* @__PURE__ */ function() { + function ce(W, F) { + ne(this, ce), this.name = W.name, this.args = F, this.execute = W.execute, this.undo = W.undo, this.executeCallback = W.executeCallback || null, this.undoCallback = W.undoCallback || null, this.undoData = {}; + } + return de(ce, [{ + key: "execute", + value: function() { + throw new Error(pi(Xr.UN_IMPLEMENTATION, "execute")); + } + /** + * Undo action + * @param {Object.} compMap - Components injection + * @abstract + */ + }, { + key: "undo", + value: function() { + throw new Error(pi(Xr.UN_IMPLEMENTATION, "undo")); + } + /** + * command for redo if undoData exists + * @returns {boolean} isRedo + */ + }, { + key: "isRedo", + get: function() { + return rt()(this.undoData).length > 0; + } + /** + * Set undoData action + * @param {Object} undoData - maked undo data + * @param {Object} cachedUndoDataForSilent - cached undo data + * @param {boolean} isSilent - is silent execution or not + * @returns {Object} cachedUndoDataForSilent + */ + }, { + key: "setUndoData", + value: function(F, j, L) { + return j && (F = j), L ? j || (j = F) : (we()(this.undoData, F), j = null), j; + } + /** + * Attach execute callabck + * @param {function} callback - Callback after execution + * @returns {Command} this + */ + }, { + key: "setExecuteCallback", + value: function(F) { + return this.executeCallback = F, this; + } + /** + * Attach undo callback + * @param {function} callback - Callback after undo + * @returns {Command} this + */ + }, { + key: "setUndoCallback", + value: function(F) { + return this.undoCallback = F, this; + } + }]), ce; + }(), pa = Mn, Qa = {}; + function ya(ce) { + var W = Qa[ce]; + if (W) { + for (var F = arguments.length, j = new Array(F > 1 ? F - 1 : 0), L = 1; L < F; L++) + j[L - 1] = arguments[L]; + return new pa(W, j); + } + return null; + } + function Ki(ce) { + Qa[ce.name] = ce; + } + var Hn = { + create: ya, + register: Ki + }, ka = /* @__PURE__ */ function() { + function ce() { + ne(this, ce), this._undoStack = [], this._redoStack = [], this._isLocked = !1, this._isSilent = !1; + } + return de(ce, [{ + key: "_invokeExecution", + value: function(F) { + var j = this, L = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + this.lock(); + var $ = F.args; + return $ || ($ = []), F.execute.apply(F, ee($)).then(function(re) { + return j._isSilent || (j.pushUndoStack(F), j.fire(L ? Pt.AFTER_REDO : Pt.EXECUTE_COMMAND, F)), j.unlock(), ur(F.executeCallback) && F.executeCallback(re), re; + }).catch(function(re) { + return j.unlock(), Ue().reject(re); + }); + } + /** + * Invoke command undo + * @param {Command} command - Command + * @returns {Promise} + * @private + */ + }, { + key: "_invokeUndo", + value: function(F) { + var j = this; + this.lock(); + var L = F.args; + return L || (L = []), F.undo.apply(F, ee(L)).then(function($) { + return j.pushRedoStack(F), j.fire(Pt.AFTER_UNDO, F), j.unlock(), ur(F.undoCallback) && F.undoCallback($), $; + }).catch(function($) { + return j.unlock(), Ue().reject($); + }); + } + /** + * fire REDO_STACK_CHANGED event + * @private + */ + }, { + key: "_fireRedoStackChanged", + value: function() { + this.fire(Pt.REDO_STACK_CHANGED, this._redoStack.length); + } + /** + * fire UNDO_STACK_CHANGED event + * @private + */ + }, { + key: "_fireUndoStackChanged", + value: function() { + this.fire(Pt.UNDO_STACK_CHANGED, this._undoStack.length); + } + /** + * Lock this invoker + */ + }, { + key: "lock", + value: function() { + this._isLocked = !0; + } + /** + * Unlock this invoker + */ + }, { + key: "unlock", + value: function() { + this._isLocked = !1; + } + }, { + key: "executeSilent", + value: function() { + var F = this; + this._isSilent = !0; + for (var j = arguments.length, L = new Array(j), $ = 0; $ < j; $++) + L[$] = arguments[$]; + return this.execute.apply(this, pe()(L).call(L, [this._isSilent])).then(function() { + F._isSilent = !1; + }); + } + /** + * Invoke command + * Store the command to the undoStack + * Clear the redoStack + * @param {String} commandName - Command name + * @param {...*} args - Arguments for creating command + * @returns {Promise} + */ + }, { + key: "execute", + value: function() { + var F = this; + if (this._isLocked) + return Ue().reject(Dr.isLock); + for (var j = arguments.length, L = new Array(j), $ = 0; $ < j; $++) + L[$] = arguments[$]; + var re = L[0]; + return nt()(re) && (re = Hn.create.apply(Hn, L)), this._invokeExecution(re).then(function(le) { + return F.clearRedoStack(), le; + }); + } + /** + * Undo command + * @returns {Promise} + */ + }, { + key: "undo", + value: function() { + var F = this._undoStack.pop(), j, L = ""; + if (F && this._isLocked && (this.pushUndoStack(F, !0), F = null), F) + this.isEmptyUndoStack() && this._fireUndoStackChanged(), j = this._invokeUndo(F); + else { + if (L = Dr.undo, this._isLocked) { + var $; + L = pe()($ = "".concat(L, " Because ")).call($, Dr.isLock); + } + j = Ue().reject(L); + } + return j; + } + /** + * Redo command + * @returns {Promise} + */ + }, { + key: "redo", + value: function() { + var F = this._redoStack.pop(), j, L = ""; + if (F && this._isLocked && (this.pushRedoStack(F, !0), F = null), F) + this.isEmptyRedoStack() && this._fireRedoStackChanged(), j = this._invokeExecution(F, !0); + else { + if (L = Dr.redo, this._isLocked) { + var $; + L = pe()($ = "".concat(L, " Because ")).call($, Dr.isLock); + } + j = Ue().reject(L); + } + return j; + } + /** + * Push undo stack + * @param {Command} command - command + * @param {boolean} [isSilent] - Fire event or not + */ + }, { + key: "pushUndoStack", + value: function(F, j) { + this._undoStack.push(F), j || this._fireUndoStackChanged(); + } + /** + * Push redo stack + * @param {Command} command - command + * @param {boolean} [isSilent] - Fire event or not + */ + }, { + key: "pushRedoStack", + value: function(F, j) { + this._redoStack.push(F), j || this._fireRedoStackChanged(); + } + /** + * Return whether the redoStack is empty + * @returns {boolean} + */ + }, { + key: "isEmptyRedoStack", + value: function() { + return this._redoStack.length === 0; + } + /** + * Return whether the undoStack is empty + * @returns {boolean} + */ + }, { + key: "isEmptyUndoStack", + value: function() { + return this._undoStack.length === 0; + } + /** + * Clear undoStack + */ + }, { + key: "clearUndoStack", + value: function() { + this.isEmptyUndoStack() || (this._undoStack = [], this._fireUndoStackChanged()); + } + /** + * Clear redoStack + */ + }, { + key: "clearRedoStack", + value: function() { + this.isEmptyRedoStack() || (this._redoStack = [], this._fireRedoStackChanged()); + } + }]), ce; + }(); + lt().mixin(ka); + var gi = ka, Lf = a(5214), la = /* @__PURE__ */ a.n(Lf), tu = function(ce) { + var W, F, j, L, $, re, le, me = ce.locale, ve = ce.biImage, Oe = ce.commonStyle, je = ce.headerStyle, pt = ce.loadButtonStyle, vt = ce.downloadButtonStyle, It = ce.submenuStyle; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = ` +
    +
    + +
    +
    + `)).call(L, me.localize("Load"), ` + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +`); + }, jp = function(ce) { + var W, F, j, L, $, re = ce.locale, le = ce.biImage, me = ce.loadButtonStyle, ve = ce.downloadButtonStyle, Oe = ce.menuBarPosition; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = ` +
      +
      + +
        + +
        +
        + `)).call(j, re.localize("Load"), ` + +
        + +
        +
        +`); + }, bl = a(899), Ui = /* @__PURE__ */ a.n(bl), rl = function(ce) { + var W, F, j, L, $, re, le, me, ve, Oe, je, pt, vt, It, Et, Rt, sr, un, yn, Kn, xr, Aa, ol, Mc, hs, zh, rp, kc, Yy, hS = ce.subMenuLabelActive, fC = ce.subMenuLabelNormal, hg = ce.subMenuRangeTitle, dS = ce.submenuPartitionVertical, fS = ce.submenuPartitionHorizontal, pS = ce.submenuCheckbox, gS = ce.submenuRangePointer, pC = ce.submenuRangeValue, gC = ce.submenuColorpickerTitle, vC = ce.submenuColorpickerButton, Hh = ce.submenuRangeBar, Kv = ce.submenuRangeSubbar, vS = ce.submenuDisabledRangePointer, mC = ce.submenuDisabledRangeBar, yC = ce.submenuDisabledRangeSubbar, _C = ce.submenuIconSize, SC = ce.menuIconSize, mS = ce.biSize, th = ce.menuIconStyle, dg = ce.submenuIconStyle; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = pe()(ve = pe()(Oe = pe()(je = pe()(pt = pe()(vt = pe()(It = pe()(Et = pe()(Rt = pe()(sr = pe()(un = pe()(yn = pe()(Kn = pe()(xr = pe()(Aa = pe()(ol = pe()(Mc = pe()(hs = pe()(zh = pe()(rp = pe()(kc = pe()(Yy = ` + .tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype="icon-bubble"] label, + .tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype="icon-heart"] label, + .tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype="icon-location"] label, + .tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype="icon-polygon"] label, + .tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype="icon-star"] label, + .tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype="icon-star-2"] label, + .tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype="icon-arrow-3"] label, + .tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype="icon-arrow-2"] label, + .tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype="icon-arrow"] label, + .tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype="icon-bubble"] label, + .tie-draw-line-select-button.line .tui-image-editor-button.line label, + .tie-draw-line-select-button.free .tui-image-editor-button.free label, + .tie-flip-button.flipX .tui-image-editor-button.flipX label, + .tie-flip-button.flipY .tui-image-editor-button.flipY label, + .tie-flip-button.resetFlip .tui-image-editor-button.resetFlip label, + .tie-crop-button .tui-image-editor-button.apply.active label, + .tie-crop-preset-button .tui-image-editor-button.preset.active label, + .tie-resize-button .tui-image-editor-button.apply.active label, + .tie-resize-preset-button .tui-image-editor-button.preset.active label, + .tie-shape-button.rect .tui-image-editor-button.rect label, + .tie-shape-button.circle .tui-image-editor-button.circle label, + .tie-shape-button.triangle .tui-image-editor-button.triangle label, + .tie-text-effect-button .tui-image-editor-button.active label, + .tie-text-align-button.tie-text-align-left .tui-image-editor-button.left label, + .tie-text-align-button.tie-text-align-center .tui-image-editor-button.center label, + .tie-text-align-button.tie-text-align-right .tui-image-editor-button.right label, + .tie-mask-apply.apply.active .tui-image-editor-button.apply label, + .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover > label, + .tui-image-editor-container .tui-image-editor-checkbox label > span { + `.concat(hS, ` + } + .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button > label, + .tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label, + .tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label > span { + `)).call(Yy, fC, ` + } + .tui-image-editor-container .tui-image-editor-range-wrap label > span { + `)).call(kc, hg, ` + } + .tui-image-editor-container .tui-image-editor-partition > div { + `)).call(rp, dS, ` + } + .tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition > div, + .tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition > div { + `)).call(zh, fS, ` + } + .tui-image-editor-container .tui-image-editor-checkbox label > span:before { + `)).call(hs, pS, ` + } + .tui-image-editor-container .tui-image-editor-checkbox label > input:checked + span:before { + border: 0; + } + .tui-image-editor-container .tui-image-editor-virtual-range-pointer { + `)).call(Mc, gS, ` + } + .tui-image-editor-container .tui-image-editor-virtual-range-bar { + `)).call(ol, Hh, ` + } + .tui-image-editor-container .tui-image-editor-virtual-range-subbar { + `)).call(Aa, Kv, ` + } + .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-pointer { + `)).call(xr, vS, ` + } + .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-subbar { + `)).call(Kn, yC, ` + } + .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-bar { + `)).call(yn, mC, ` + } + .tui-image-editor-container .tui-image-editor-range-value { + `)).call(un, pC, ` + } + .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button .color-picker-value + label { + `)).call(sr, gC, ` + } + .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button .color-picker-value { + `)).call(Rt, vC, ` + } + .tui-image-editor-container .svg_ic-menu { + `)).call(Et, SC, ` + } + .tui-image-editor-container .svg_ic-submenu { + `)).call(It, _C, ` + } + .tui-image-editor-container .tui-image-editor-controls-logo > img, + .tui-image-editor-container .tui-image-editor-header-logo > img { + `)).call(vt, mS, ` + } + .tui-image-editor-menu use.normal.use-default, + .tui-image-editor-help-menu use.normal.use-default { + fill-rule: evenodd; + fill: `)).call(pt, th.normal.color, `; + stroke: `)).call(je, th.normal.color, `; + } + .tui-image-editor-menu use.active.use-default, + .tui-image-editor-help-menu use.active.use-default { + fill-rule: evenodd; + fill: `)).call(Oe, th.active.color, `; + stroke: `)).call(ve, th.active.color, `; + } + .tui-image-editor-menu use.hover.use-default, + .tui-image-editor-help-menu use.hover.use-default { + fill-rule: evenodd; + fill: `)).call(me, th.hover.color, `; + stroke: `)).call(le, th.hover.color, `; + } + .tui-image-editor-menu use.disabled.use-default, + .tui-image-editor-help-menu use.disabled.use-default { + fill-rule: evenodd; + fill: `)).call(re, th.disabled.color, `; + stroke: `)).call($, th.disabled.color, `; + } + .tui-image-editor-submenu use.normal.use-default { + fill-rule: evenodd; + fill: `)).call(L, dg.normal.color, `; + stroke: `)).call(j, dg.normal.color, `; + } + .tui-image-editor-submenu use.active.use-default { + fill-rule: evenodd; + fill: `)).call(F, dg.active.color, `; + stroke: `)).call(W, dg.active.color, `; + } +`); + }, El = { + "common.bi.image": "https://uicdn.toast.com/toastui/img/tui-image-editor-bi.png", + "common.bisize.width": "251px", + "common.bisize.height": "21px", + "common.backgroundImage": "none", + "common.backgroundColor": "#1e1e1e", + "common.border": "0px", + // header + "header.backgroundImage": "none", + "header.backgroundColor": "transparent", + "header.border": "0px", + // load button + "loadButton.backgroundColor": "#fff", + "loadButton.border": "1px solid #ddd", + "loadButton.color": "#222", + "loadButton.fontFamily": "'Noto Sans', sans-serif", + "loadButton.fontSize": "12px", + // download button + "downloadButton.backgroundColor": "#fdba3b", + "downloadButton.border": "1px solid #fdba3b", + "downloadButton.color": "#fff", + "downloadButton.fontFamily": "'Noto Sans', sans-serif", + "downloadButton.fontSize": "12px", + // main icons + "menu.normalIcon.color": "#8a8a8a", + "menu.activeIcon.color": "#555555", + "menu.disabledIcon.color": "#434343", + "menu.hoverIcon.color": "#e9e9e9", + // submenu icons + "submenu.normalIcon.color": "#8a8a8a", + "submenu.activeIcon.color": "#e9e9e9", + "menu.iconSize.width": "24px", + "menu.iconSize.height": "24px", + "submenu.iconSize.width": "32px", + "submenu.iconSize.height": "32px", + // submenu primary color + "submenu.backgroundColor": "#1e1e1e", + "submenu.partition.color": "#3c3c3c", + // submenu labels + "submenu.normalLabel.color": "#8a8a8a", + "submenu.normalLabel.fontWeight": "lighter", + "submenu.activeLabel.color": "#fff", + "submenu.activeLabel.fontWeight": "lighter", + // checkbox style + "checkbox.border": "0px", + "checkbox.backgroundColor": "#fff", + // range style + "range.pointer.color": "#fff", + "range.bar.color": "#666", + "range.subbar.color": "#d1d1d1", + "range.disabledPointer.color": "#414141", + "range.disabledBar.color": "#282828", + "range.disabledSubbar.color": "#414141", + "range.value.color": "#fff", + "range.value.fontWeight": "lighter", + "range.value.fontSize": "11px", + "range.value.border": "1px solid #353535", + "range.value.backgroundColor": "#151515", + "range.title.color": "#fff", + "range.title.fontWeight": "lighter", + // colorpicker style + "colorpicker.button.border": "1px solid #1e1e1e", + "colorpicker.title.color": "#fff" + }, yv = a(2534), $a = /* @__PURE__ */ function() { + function ce(W) { + ne(this, ce), this.styles = this._changeToObject(we()({}, El, W)), wi(this._styleMaker()), this._loadDefaultSvgIcon(); + } + return de(ce, [{ + key: "getStyle", + value: function(F) { + var j = null, L = F.replace(/\..+$/, ""), $ = this.styles[F]; + switch (F) { + case "common.bi": + j = this.styles[F].image; + break; + case "menu.icon": + j = { + active: this.styles["".concat(L, ".activeIcon")], + normal: this.styles["".concat(L, ".normalIcon")], + hover: this.styles["".concat(L, ".hoverIcon")], + disabled: this.styles["".concat(L, ".disabledIcon")] + }; + break; + case "submenu.icon": + j = { + active: this.styles["".concat(L, ".activeIcon")], + normal: this.styles["".concat(L, ".normalIcon")] + }; + break; + case "submenu.label": + j = { + active: this._makeCssText(this.styles["".concat(L, ".activeLabel")]), + normal: this._makeCssText(this.styles["".concat(L, ".normalLabel")]) + }; + break; + case "submenu.partition": + j = { + vertical: this._makeCssText(we()({}, $, { + borderLeft: "1px solid ".concat($.color) + })), + horizontal: this._makeCssText(we()({}, $, { + borderBottom: "1px solid ".concat($.color) + })) + }; + break; + case "range.disabledPointer": + case "range.disabledBar": + case "range.disabledSubbar": + case "range.pointer": + case "range.bar": + case "range.subbar": + $.backgroundColor = $.color, j = this._makeCssText($); + break; + default: + j = this._makeCssText($); + break; + } + return j; + } + /** + * Make css resource + * @returns {string} - serialized css text + * @private + */ + }, { + key: "_styleMaker", + value: function() { + var F = this.getStyle("submenu.label"), j = this.getStyle("submenu.partition"); + return rl({ + subMenuLabelActive: F.active, + subMenuLabelNormal: F.normal, + submenuPartitionVertical: j.vertical, + submenuPartitionHorizontal: j.horizontal, + biSize: this.getStyle("common.bisize"), + subMenuRangeTitle: this.getStyle("range.title"), + submenuRangePointer: this.getStyle("range.pointer"), + submenuRangeBar: this.getStyle("range.bar"), + submenuRangeSubbar: this.getStyle("range.subbar"), + submenuDisabledRangePointer: this.getStyle("range.disabledPointer"), + submenuDisabledRangeBar: this.getStyle("range.disabledBar"), + submenuDisabledRangeSubbar: this.getStyle("range.disabledSubbar"), + submenuRangeValue: this.getStyle("range.value"), + submenuColorpickerTitle: this.getStyle("colorpicker.title"), + submenuColorpickerButton: this.getStyle("colorpicker.button"), + submenuCheckbox: this.getStyle("checkbox"), + menuIconSize: this.getStyle("menu.iconSize"), + submenuIconSize: this.getStyle("submenu.iconSize"), + menuIconStyle: this.getStyle("menu.icon"), + submenuIconStyle: this.getStyle("submenu.icon") + }); + } + /** + * Change to low dimensional object. + * @param {object} styleOptions - style object of user interface + * @returns {object} low level object for style apply + * @private + */ + }, { + key: "_changeToObject", + value: function(F) { + var j = {}; + return Fe()(F, function(L, $) { + var re = $.match(/^(.+)\.([a-z]+)$/i), le = ct(re, 3), me = le[1], ve = le[2]; + j[me] || (j[me] = {}), j[me][ve] = L; + }), j; + } + /** + * Style object to Csstext serialize + * @param {object} styleObject - style object + * @returns {string} - css text string + * @private + */ + }, { + key: "_makeCssText", + value: function(F) { + var j = this, L = []; + return Fe()(F, function($, re) { + var le, me; + f()(le = ["backgroundImage"]).call(le, re) > -1 && $ !== "none" && ($ = "url(".concat($, ")")), L.push(pe()(me = "".concat(j._toUnderScore(re), ": ")).call(me, $)); + }), L.join(";"); + } + /** + * Camel key string to Underscore string + * @param {string} targetString - change target + * @returns {string} + * @private + */ + }, { + key: "_toUnderScore", + value: function(F) { + return F.replace(/([A-Z])/g, function(j, L) { + return "-".concat(L.toLowerCase()); + }); + } + /** + * Load default svg icon + * @private + */ + }, { + key: "_loadDefaultSvgIcon", + value: function() { + if (!document.getElementById("tui-image-editor-svg-default-icons")) { + var F = new DOMParser(), j = yv.replace(/data:image\/svg\+xml;base64,/, ""), L = F.parseFromString(atob(j), "text/xml"); + document.body.appendChild(L.documentElement); + } + } + /** + * Make className for svg icon + * @param {string} iconType - normal' or 'active' or 'hover' or 'disabled + * @param {boolean} isSubmenu - submenu icon or not. + * @returns {string} + * @private + */ + }, { + key: "_makeIconClassName", + value: function(F, j) { + var L = j ? this.getStyle("submenu.icon") : this.getStyle("menu.icon"), $ = L[F], re = $.path, le = $.name; + return re && le ? F : "".concat(F, " use-default"); + } + /** + * Make svg use link path name + * @param {string} iconType - normal' or 'active' or 'hover' or 'disabled + * @param {boolean} isSubmenu - submenu icon or not. + * @returns {string} + * @private + */ + }, { + key: "_makeSvgIconPrefix", + value: function(F, j) { + var L, $ = j ? this.getStyle("submenu.icon") : this.getStyle("menu.icon"), re = $[F], le = re.path, me = re.name; + return le && me ? pe()(L = "".concat(le, "#")).call(L, me, "-") : "#"; + } + /** + * Make svg use link path name + * @param {Array.} useIconTypes - normal' or 'active' or 'hover' or 'disabled + * @param {string} menuName - menu name + * @param {boolean} isSubmenu - submenu icon or not. + * @returns {string} + * @private + */ + }, { + key: "_makeSvgItem", + value: function(F, j, L) { + var $ = this; + return Ui()(F).call(F, function(re) { + var le, me, ve = $._makeSvgIconPrefix(re, L), Oe = $._toUnderScore(j), je = $._makeIconClassName(re, L); + return pe()(le = pe()(me = ''); + }).join(""); + } + /** + * Make svg icon set + * @param {Array.} useIconTypes - normal' or 'active' or 'hover' or 'disabled + * @param {string} menuName - menu name + * @param {boolean} isSubmenu - submenu icon or not. + * @returns {string} + */ + }, { + key: "makeMenSvgIconSet", + value: function(F, j) { + var L, $ = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1; + return pe()(L = '')).call(L, this._makeSvgItem(F, j, $), ""); + } + }]), ce; + }(), go = $a, Ms = a(9146), Zt = /* @__PURE__ */ a.n(Ms), Rh = a(6623), ac = a(4230); + function Wo(ce, W) { + return Wo = ac || function(j, L) { + return j.__proto__ = L, j; + }, Wo(ce, W); + } + function ji(ce, W) { + if (typeof W != "function" && W !== null) + throw new TypeError("Super expression must either be null or a function"); + ce.prototype = Rh(W && W.prototype, { + constructor: { + value: ce, + writable: !0, + configurable: !0 + } + }), W && Wo(ce, W); + } + var ru = a(3742); + function oc(ce) { + "@babel/helpers - typeof"; + return typeof M == "function" && typeof ru == "symbol" ? oc = function(F) { + return typeof F; + } : oc = function(F) { + return F && typeof M == "function" && F.constructor === M && F !== M.prototype ? "symbol" : typeof F; + }, oc(ce); + } + function mn(ce) { + if (ce === void 0) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return ce; + } + function An(ce, W) { + if (W && (oc(W) === "object" || typeof W == "function")) + return W; + if (W !== void 0) + throw new TypeError("Derived constructors may only return object or undefined"); + return mn(ce); + } + var jl = a(9856); + function kr(ce) { + return kr = ac ? jl : function(F) { + return F.__proto__ || jl(F); + }, kr(ce); + } + var sc = a(6092), ro = /* @__PURE__ */ a.n(sc), lc = a(4858), Go = /* @__PURE__ */ a.n(lc), ly = ["#000000", "#2a2a2a", "#545454", "#7e7e7e", "#a8a8a8", "#d2d2d2", "#ffffff", "", "#ff4040", "#ff6518", "#ffbb3b", "#03bd9e", "#00a9ff", "#515ce6", "#9e5fff", "#ff5583"], Cl = /* @__PURE__ */ function() { + function ce(W, F) { + var j = F.defaultColor, L = j === void 0 ? "#7e7e7e" : j, $ = F.toggleDirection, re = $ === void 0 ? "up" : $, le = F.usageStatistics; + ne(this, ce), this.colorpickerElement = W, this.usageStatistics = le, this._show = !1, this._colorpickerElement = W, this._toggleDirection = re, this._makePickerButtonElement(L), this._makePickerLayerElement(W, W.getAttribute("title")), this._color = L, this.picker = Go().create({ + container: this.pickerElement, + preset: ly, + color: L, + usageStatistics: this.usageStatistics + }), this._addEvent(); + } + return de(ce, [{ + key: "destroy", + value: function() { + var F = this; + this._removeEvent(), this.picker.destroy(), this.colorpickerElement.innerHTML = "", Fe()(this, function(j, L) { + F[L] = null; + }); + } + /** + * Get color + * @returns {Number} color value + */ + }, { + key: "color", + get: function() { + return this._color; + }, + set: function(F) { + this._color = F, this._changeColorElement(F); + } + /** + * Change color element + * @param {string} color color value + * #private + */ + }, { + key: "_changeColorElement", + value: function(F) { + F ? (this.colorElement.classList.remove("transparent"), this.colorElement.style.backgroundColor = F) : (this.colorElement.style.backgroundColor = "#fff", this.colorElement.classList.add("transparent")); + } + /** + * Make picker button element + * @param {string} defaultColor color value + * @private + */ + }, { + key: "_makePickerButtonElement", + value: function(F) { + this.colorpickerElement.classList.add("tui-image-editor-button"), this.colorElement = document.createElement("div"), this.colorElement.className = "color-picker-value", F ? this.colorElement.style.backgroundColor = F : this.colorElement.classList.add("transparent"); + } + /** + * Make picker layer element + * @param {HTMLElement} colorpickerElement color picker element + * @param {string} title picker title + * @private + */ + }, { + key: "_makePickerLayerElement", + value: function(F, j) { + var L = document.createElement("label"), $ = document.createElement("div"); + this.pickerControl = document.createElement("div"), this.pickerControl.className = "color-picker-control", this.pickerElement = document.createElement("div"), this.pickerElement.className = "color-picker", L.innerHTML = j, $.className = "triangle", this.pickerControl.appendChild(this.pickerElement), this.pickerControl.appendChild($), F.appendChild(this.pickerControl), F.appendChild(this.colorElement), F.appendChild(L); + } + /** + * Add event + * @private + */ + }, { + key: "_addEvent", + value: function() { + var F = this, j; + this.picker.on("selectColor", function(L) { + F._changeColorElement(L.color), F._color = L.color, F.fire("change", L.color); + }), this.eventHandler = { + pickerToggle: be()(j = this._pickerToggleEventHandler).call(j, this), + pickerHide: function() { + return F.hide(); + } + }, this.colorpickerElement.addEventListener("click", this.eventHandler.pickerToggle), document.body.addEventListener("click", this.eventHandler.pickerHide); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + this.colorpickerElement.removeEventListener("click", this.eventHandler.pickerToggle), document.body.removeEventListener("click", this.eventHandler.pickerHide), this.picker.off(); + } + /** + * Picker toggle event handler + * @param {object} event - change event + * @private + */ + }, { + key: "_pickerToggleEventHandler", + value: function(F) { + var j = F.target, L = j && this._isElementInColorPickerControl(j); + (!L || L && this._isPaletteButton(j)) && (this._show = !this._show, this.pickerControl.style.display = this._show ? "block" : "none", this._setPickerControlPosition(), this.fire("changeShow", this)), F.stopPropagation(); + } + /** + * Check hex input or not + * @param {Element} target - Event target element + * @returns {boolean} + * @private + */ + }, { + key: "_isPaletteButton", + value: function(F) { + return F.className === "tui-colorpicker-palette-button"; + } + /** + * Check given element is in pickerControl element + * @param {Element} element - element to check + * @returns {boolean} + * @private + */ + }, { + key: "_isElementInColorPickerControl", + value: function(F) { + for (var j = F; j !== document.body && j; ) { + if (j === this.pickerControl) + return !0; + j = j.parentNode; + } + return !1; + } + }, { + key: "hide", + value: function() { + this._show = !1, this.pickerControl.style.display = "none"; + } + /** + * Set picker control position + * @private + */ + }, { + key: "_setPickerControlPosition", + value: function() { + var F = this.pickerControl.style, j = this._colorpickerElement.clientWidth / 2 + 2, L = this.pickerControl.offsetWidth / 2 - j, $ = (this.pickerControl.offsetHeight + 10) * -1; + this._toggleDirection === "down" && ($ = 30), F.top = "".concat($, "px"), F.left = "-".concat(L, "px"); + } + }]), ce; + }(); + lt().mixin(Cl); + var nl = Cl, Pa = /(-?)([0-9]*)[^0-9]*([0-9]*)/g, no = /* @__PURE__ */ function() { + function ce(W) { + var F, j, L, $, re, le, me, ve = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + ne(this, ce), this._value = ve.value || 0, this.rangeElement = W.slider, this.rangeInputElement = W.input, this._drawRangeElement(), this.rangeWidth = this._getRangeWidth(), this._min = ve.min || 0, this._max = ve.max || 100, this._useDecimal = ve.useDecimal, this._absMax = this._min * -1 + this._max, this.realTimeEvent = ve.realTimeEvent || !1, this._userInputTimer = null, this.eventHandler = { + startChangingSlide: be()(F = this._startChangingSlide).call(F, this), + stopChangingSlide: be()(j = this._stopChangingSlide).call(j, this), + changeSlide: be()(L = this._changeSlide).call(L, this), + changeSlideFinally: be()($ = this._changeSlideFinally).call($, this), + changeInput: be()(re = this._changeInput).call(re, this), + changeInputFinally: be()(le = this._changeValueWithInput).call(le, this, !0), + changeInputWithArrow: be()(me = this._changeValueWithInputKeyEvent).call(me, this) + }, this._addClickEvent(), this._addDragEvent(), this._addInputEvent(), this.value = ve.value, this.trigger("change"); + } + return de(ce, [{ + key: "destroy", + value: function() { + var F = this; + this._removeClickEvent(), this._removeDragEvent(), this._removeInputEvent(), this.rangeElement.innerHTML = "", Fe()(this, function(j, L) { + F[L] = null; + }); + } + }, { + key: "max", + get: function() { + return this._max; + }, + set: function(F) { + this._max = F, this._absMax = this._min * -1 + this._max, this.value = this._value; + } + }, { + key: "min", + get: function() { + return this._min; + }, + set: function(F) { + this._min = F, this.max = this._max; + } + /** + * Get range value + * @returns {Number} range value + */ + }, { + key: "value", + get: function() { + return this._value; + }, + set: function(F) { + F = this._useDecimal ? F : en(F); + var j = F - this._min, L = j * this.rangeWidth / this._absMax; + this.rangeWidth < L && (L = this.rangeWidth), this.pointer.style.left = "".concat(L, "px"), this.subbar.style.right = "".concat(this.rangeWidth - L, "px"), this._value = F, this.rangeInputElement && (this.rangeInputElement.value = F); + } + /** + * event trigger + * @param {string} type - type + */ + }, { + key: "trigger", + value: function(F) { + this.fire(F, this._value); + } + /** + * Calculate slider width + * @returns {number} - slider width + */ + }, { + key: "_getRangeWidth", + value: function() { + var F = function(L) { + return en(window.getComputedStyle(L, null).width); + }; + return F(this.rangeElement) - F(this.pointer); + } + /** + * Make range element + * @private + */ + }, { + key: "_drawRangeElement", + value: function() { + this.rangeElement.classList.add("tui-image-editor-range"), this.bar = document.createElement("div"), this.bar.className = "tui-image-editor-virtual-range-bar", this.subbar = document.createElement("div"), this.subbar.className = "tui-image-editor-virtual-range-subbar", this.pointer = document.createElement("div"), this.pointer.className = "tui-image-editor-virtual-range-pointer", this.bar.appendChild(this.subbar), this.bar.appendChild(this.pointer), this.rangeElement.appendChild(this.bar); + } + /** + * Add range input editing event + * @private + */ + }, { + key: "_addInputEvent", + value: function() { + this.rangeInputElement && (this.rangeInputElement.addEventListener("keydown", this.eventHandler.changeInputWithArrow), this.rangeInputElement.addEventListener("keydown", this.eventHandler.changeInput), this.rangeInputElement.addEventListener("blur", this.eventHandler.changeInputFinally)); + } + /** + * Remove range input editing event + * @private + */ + }, { + key: "_removeInputEvent", + value: function() { + this.rangeInputElement && (this.rangeInputElement.removeEventListener("keydown", this.eventHandler.changeInputWithArrow), this.rangeInputElement.removeEventListener("keydown", this.eventHandler.changeInput), this.rangeInputElement.removeEventListener("blur", this.eventHandler.changeInputFinally)); + } + /** + * change angle event + * @param {object} event - key event + * @private + */ + }, { + key: "_changeValueWithInputKeyEvent", + value: function(F) { + var j, L = F.keyCode, $ = F.target; + if (!(f()(j = [xn.ARROW_UP, xn.ARROW_DOWN]).call(j, L) < 0)) { + var re = Number($.value); + re = this._valueUpDownForKeyEvent(re, L); + var le = re < this._min || re > this._max; + if (!le) { + var me = Ur(re, this._min, this.max); + this.value = me, this.fire("change", me, !1); + } + } + } + /** + * value up down for input + * @param {number} value - original value number + * @param {number} keyCode - input event key code + * @returns {number} value - changed value + * @private + */ + }, { + key: "_valueUpDownForKeyEvent", + value: function(F, j) { + var L = this._useDecimal ? 0.1 : 1; + return j === xn.ARROW_UP ? F += L : j === xn.ARROW_DOWN && (F -= L), F; + } + }, { + key: "_changeInput", + value: function(F) { + var j = this; + clearTimeout(this._userInputTimer); + var L = F.keyCode; + if (L < xn.DIGIT_0 || L > xn.DIGIT_9) { + F.preventDefault(); + return; + } + this._userInputTimer = w()(function() { + j._inputSetValue(F.target.value); + }, 350); + } + }, { + key: "_inputSetValue", + value: function(F) { + var j = this._useDecimal ? Number(F) : en(F); + j = Ur(j, this._min, this.max), this.value = j, this.fire("change", j, !0); + } + /** + * change angle event + * @param {boolean} isLast - Is last change + * @param {object} event - key event + * @private + */ + }, { + key: "_changeValueWithInput", + value: function(F, j) { + var L, $ = j.keyCode, re = j.target; + if (!(f()(L = [xn.ARROW_UP, xn.ARROW_DOWN]).call(L, $) >= 0)) { + var le = this._filterForInputText(re.value), me = !le || isNaN(le); + re.value = le, me || this._inputSetValue(le); + } + } + /** + * Add Range click event + * @private + */ + }, { + key: "_addClickEvent", + value: function() { + this.rangeElement.addEventListener("click", this.eventHandler.changeSlideFinally); + } + /** + * Remove Range click event + * @private + */ + }, { + key: "_removeClickEvent", + value: function() { + this.rangeElement.removeEventListener("click", this.eventHandler.changeSlideFinally); + } + /** + * Add Range drag event + * @private + */ + }, { + key: "_addDragEvent", + value: function() { + this.pointer.addEventListener("mousedown", this.eventHandler.startChangingSlide); + } + /** + * Remove Range drag event + * @private + */ + }, { + key: "_removeDragEvent", + value: function() { + this.pointer.removeEventListener("mousedown", this.eventHandler.startChangingSlide); + } + /** + * change angle event + * @param {object} event - change event + * @private + */ + }, { + key: "_changeSlide", + value: function(F) { + var j = F.screenX, L = j - this.firstPosition, $ = this.firstLeft + L; + $ = $ > this.rangeWidth ? this.rangeWidth : $, $ = $ < 0 ? 0 : $, this.pointer.style.left = "".concat($, "px"), this.subbar.style.right = "".concat(this.rangeWidth - $, "px"); + var re = $ / this.rangeWidth, le = this._absMax * re + this._min, me = this._useDecimal ? le : en(le), ve = this.value !== me; + ve && (this.value = me, this.realTimeEvent && this.fire("change", this._value, !1)); + } + }, { + key: "_changeSlideFinally", + value: function(F) { + if (F.stopPropagation(), F.target.className === "tui-image-editor-range") { + var j = F.offsetX, L = j / this.rangeWidth, $ = this._absMax * L + this._min; + this.pointer.style.left = "".concat(L * this.rangeWidth, "px"), this.subbar.style.right = "".concat((1 - L) * this.rangeWidth, "px"), this.value = $, this.fire("change", $, !0); + } + } + }, { + key: "_startChangingSlide", + value: function(F) { + this.firstPosition = F.screenX, this.firstLeft = en(this.pointer.style.left) || 0, document.addEventListener("mousemove", this.eventHandler.changeSlide), document.addEventListener("mouseup", this.eventHandler.stopChangingSlide); + } + /** + * stop change angle event + * @private + */ + }, { + key: "_stopChangingSlide", + value: function() { + this.fire("change", this._value, !0), document.removeEventListener("mousemove", this.eventHandler.changeSlide), document.removeEventListener("mouseup", this.eventHandler.stopChangingSlide); + } + /** + * Unnecessary string filtering. + * @param {string} inputValue - origin string of input + * @returns {string} filtered string + * @private + */ + }, { + key: "_filterForInputText", + value: function(F) { + return F.replace(Pa, "$1$2$3"); + } + }]), ce; + }(); + lt().mixin(no); + var Yo = no, Zi = /* @__PURE__ */ function() { + function ce(W, F) { + var j = F.locale, L = F.name, $ = F.makeSvgIcon, re = F.menuBarPosition, le = F.templateHtml, me = F.usageStatistics; + ne(this, ce), this.subMenuElement = W, this.menuBarPosition = re, this.toggleDirection = re === "top" ? "down" : "up", this.colorPickerControls = [], this.usageStatistics = me, this.eventHandler = {}, this._makeSubMenuElement({ + locale: j, + name: L, + makeSvgIcon: $, + templateHtml: le + }); + } + return de(ce, [{ + key: "selector", + value: function(F) { + return this.subMenuElement.querySelector(F); + } + /** + * change show state change for colorpicker instance + * @param {Colorpicker} occurredControl - target Colorpicker Instance + */ + }, { + key: "colorPickerChangeShow", + value: function(F) { + var j; + Yt()(j = this.colorPickerControls).call(j, function(L) { + F !== L && L.hide(); + }); + } + /** + * Get button type + * @param {HTMLElement} button - event target element + * @param {array} buttonNames - Array of button names + * @returns {string} - button type + */ + }, { + key: "getButtonType", + value: function(F, j) { + return F.className.match(RegExp("(".concat(j.join("|"), ")")))[0]; + } + /** + * Get button type + * @param {HTMLElement} target - event target element + * @param {string} removeClass - remove class name + * @param {string} addClass - add class name + */ + }, { + key: "changeClass", + value: function(F, j, L) { + F.classList.remove(j), F.classList.add(L); + } + /** + * Interface method whose implementation is optional. + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + } + /** + * Interface method whose implementation is optional. + * Executed when the menu starts. + */ + }, { + key: "changeStartMode", + value: function() { + } + /** + * Make submenu dom element + * @param {Locale} locale - translate text + * @param {string} name - submenu name + * @param {Object} iconStyle - icon style + * @param {*} templateHtml - template for SubMenuElement + * @private + */ + }, { + key: "_makeSubMenuElement", + value: function(F) { + var j = F.locale, L = F.name, $ = F.iconStyle, re = F.makeSvgIcon, le = F.templateHtml, me = document.createElement("div"); + me.className = "tui-image-editor-menu-".concat(L), me.innerHTML = le({ + locale: j, + iconStyle: $, + makeSvgIcon: re + }), this.subMenuElement.appendChild(me); + } + }, { + key: "_onStartEditingInputBox", + value: function() { + this.fire(Pt.INPUT_BOX_EDITING_STARTED); + } + }, { + key: "_onStopEditingInputBox", + value: function() { + this.fire(Pt.INPUT_BOX_EDITING_STOPPED); + } + }]), ce; + }(); + lt().mixin(Zi); + var vo = Zi, Ff = function(ce) { + var W, F, j, L, $, re, le, me, ve = ce.locale, Oe = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = ` +
          +
        • +
          +
          + `.concat(Oe(["normal", "active"], "shape-rectangle", !0), ` +
          + +
          +
          +
          + `)).call(le, Oe(["normal", "active"], "shape-circle", !0), ` +
          + +
          +
          +
          + `)).call($, Oe(["normal", "active"], "shape-triangle", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
          +
        • +
        • +
          +
        • +
        • + +
          + +
        • +
        +`); + }; + function ki(ce) { + var W = nu(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function nu() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Dh = { + stroke: "#ffbb3b", + fill: "", + strokeWidth: 3 + }, on = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = ki(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "shape", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: Ff, + usageStatistics: ve + }), $.type = null, $.options = Dh, $._els = { + shapeSelectButton: $.selector(".tie-shape-button"), + shapeColorButton: $.selector(".tie-shape-color-button"), + strokeRange: new Yo({ + slider: $.selector(".tie-stroke-range"), + input: $.selector(".tie-stroke-range-value") + }, Bs), + fillColorpicker: new nl($.selector(".tie-color-fill"), { + defaultColor: "", + toggleDirection: $.toggleDirection, + usageStatistics: $.usageStatistics + }), + strokeColorpicker: new nl($.selector(".tie-color-stroke"), { + defaultColor: "#ffbb3b", + toggleDirection: $.toggleDirection, + usageStatistics: $.usageStatistics + }) + }, $.colorPickerControls.push($._els.fillColorpicker), $.colorPickerControls.push($._els.strokeColorpicker), $.colorPickerInputBoxes = [], $.colorPickerInputBoxes.push($._els.fillColorpicker.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX)), $.colorPickerInputBoxes.push($._els.strokeColorpicker.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX)), $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), this._els.strokeRange.destroy(), this._els.fillColorpicker.destroy(), this._els.strokeColorpicker.destroy(), aa(this); + } + /** + * Add event for shape + * @param {Object} actions - actions for shape + * @param {Function} actions.changeShape - change shape mode + * @param {Function} actions.setDrawingShape - set drawing shape + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le, me, ve, Oe, je = this; + this.eventHandler.shapeTypeSelected = be()($ = this._changeShapeHandler).call($, this), this.actions = L, this._els.shapeSelectButton.addEventListener("click", this.eventHandler.shapeTypeSelected), this._els.strokeRange.on("change", be()(re = this._changeStrokeRangeHandler).call(re, this)), this._els.fillColorpicker.on("change", be()(le = this._changeFillColorHandler).call(le, this)), this._els.strokeColorpicker.on("change", be()(me = this._changeStrokeColorHandler).call(me, this)), this._els.fillColorpicker.on("changeShow", be()(ve = this.colorPickerChangeShow).call(ve, this)), this._els.strokeColorpicker.on("changeShow", be()(Oe = this.colorPickerChangeShow).call(Oe, this)), ro()(this.colorPickerInputBoxes, function(pt) { + var vt, It; + pt.addEventListener(Pt.FOCUS, be()(vt = je._onStartEditingInputBox).call(vt, je)), pt.addEventListener(Pt.BLUR, be()(It = je._onStopEditingInputBox).call(It, je)); + }, this); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + var L = this; + this._els.shapeSelectButton.removeEventListener("click", this.eventHandler.shapeTypeSelected), this._els.strokeRange.off(), this._els.fillColorpicker.off(), this._els.strokeColorpicker.off(), ro()(this.colorPickerInputBoxes, function($) { + var re, le; + $.removeEventListener(Pt.FOCUS, be()(re = L._onStartEditingInputBox).call(re, L)), $.removeEventListener(Pt.BLUR, be()(le = L._onStopEditingInputBox).call(le, L)); + }, this); + } + /** + * Set Shape status + * @param {Object} options - options of shape status + * @param {string} strokeWidth - stroke width + * @param {string} strokeColor - stroke color + * @param {string} fillColor - fill color + */ + }, { + key: "setShapeStatus", + value: function(L) { + var $ = L.strokeWidth, re = L.strokeColor, le = L.fillColor; + this._els.strokeRange.value = $, this._els.strokeColorpicker.color = re, this._els.fillColorpicker.color = le, this.options.stroke = re, this.options.fill = le, this.options.strokeWidth = $, this.actions.setDrawingShape(this.type, { + strokeWidth: $ + }); + } + /** + * Executed when the menu starts. + */ + }, { + key: "changeStartMode", + value: function() { + this.actions.stopDrawingMode(); + } + /** + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + this.type = null, this.actions.changeSelectableAll(!0), this._els.shapeSelectButton.classList.remove("circle"), this._els.shapeSelectButton.classList.remove("triangle"), this._els.shapeSelectButton.classList.remove("rect"); + } + /** + * set range stroke max value + * @param {number} maxValue - expect max value for change + */ + }, { + key: "setMaxStrokeValue", + value: function(L) { + var $ = L; + $ <= 0 && ($ = Bs.max), this._els.strokeRange.max = $; + } + /** + * Set stroke value + * @param {number} value - expect value for strokeRange change + */ + }, { + key: "setStrokeValue", + value: function(L) { + this._els.strokeRange.value = L, this._els.strokeRange.trigger("change"); + } + /** + * Get stroke value + * @returns {number} - stroke range value + */ + }, { + key: "getStrokeValue", + value: function() { + return this._els.strokeRange.value; + } + /** + * Change icon color + * @param {object} event - add button event object + * @private + */ + }, { + key: "_changeShapeHandler", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button"); + if ($) { + this.actions.stopDrawingMode(), this.actions.discardSelection(); + var re = this.getButtonType($, ["circle", "triangle", "rect"]); + if (this.type === re) { + this.changeStandbyMode(); + return; + } + this.changeStandbyMode(), this.type = re, L.currentTarget.classList.add(re), this.actions.changeSelectableAll(!1), this.actions.modeChange("shape"); + } + } + /** + * Change stroke range + * @param {number} value - stroke range value + * @param {boolean} isLast - Is last change + * @private + */ + }, { + key: "_changeStrokeRangeHandler", + value: function(L, $) { + this.options.strokeWidth = en(L), this.actions.changeShape({ + strokeWidth: L + }, !$), this.actions.setDrawingShape(this.type, this.options); + } + /** + * Change shape color + * @param {string} color - fill color + * @private + */ + }, { + key: "_changeFillColorHandler", + value: function(L) { + L = L || "transparent", this.options.fill = L, this.actions.changeShape({ + fill: L + }); + } + /** + * Change shape stroke color + * @param {string} color - fill color + * @private + */ + }, { + key: "_changeStrokeColorHandler", + value: function(L) { + L = L || "transparent", this.options.stroke = L, this.actions.changeShape({ + stroke: L + }); + } + }]), F; + }(vo), iu = on, _v = function(ce) { + var W, F, j, L, $, re, le, me, ve, Oe, je, pt, vt, It, Et, Rt, sr, un = ce.locale, yn = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = pe()(ve = pe()(Oe = pe()(je = pe()(pt = pe()(vt = pe()(It = pe()(Et = pe()(Rt = pe()(sr = ` +
          +
        • +
          +
          + `.concat(yn(["normal", "active"], "shape-rectangle", !0), ` +
          + +
          +
          +
          + `)).call(Rt, yn(["normal", "active"], "crop", !0), ` +
          + +
          +
          +
          + `)).call(It, yn(["normal", "active"], "crop", !0), ` +
          + +
          +
          +
          + `)).call(pt, yn(["normal", "active"], "crop", !0), ` +
          + +
          +
          +
          + `)).call(Oe, yn(["normal", "active"], "crop", !0), ` +
          + +
          +
          +
          + `)).call(me, yn(["normal", "active"], "crop", !0), ` +
          + +
          +
          +
          + `)).call(re, yn(["normal", "active"], "crop", !0), ` +
          + +
          +
        • +
        • +
        • +
        • +
          +
        • +
        • +
          + `)).call(L, yn(["normal", "active"], "apply"), ` + +
          +
          + `)).call(F, yn(["normal", "active"], "cancel"), ` + +
          +
        • +
        +`); + }; + function Bf(ce) { + var W = $p(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function $p() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Uf = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Bf(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "crop", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: _v, + usageStatistics: ve + }), $.status = "active", $._els = { + apply: $.selector(".tie-crop-button .apply"), + cancel: $.selector(".tie-crop-button .cancel"), + preset: $.selector(".tie-crop-preset-button") + }, $.defaultPresetButton = $._els.preset.querySelector(".preset-none"), $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), aa(this); + } + /** + * Add event for crop + * @param {Object} actions - actions for crop + * @param {Function} actions.crop - crop action + * @param {Function} actions.cancel - cancel action + * @param {Function} actions.preset - draw rectzone at a predefined ratio + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le, me = be()($ = this._applyEventHandler).call($, this), ve = be()(re = this._cancelEventHandler).call(re, this), Oe = be()(le = this._cropzonePresetEventHandler).call(le, this); + this.eventHandler = { + apply: me, + cancel: ve, + cropzonePreset: Oe + }, this.actions = L, this._els.apply.addEventListener("click", me), this._els.cancel.addEventListener("click", ve), this._els.preset.addEventListener("click", Oe); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + this._els.apply.removeEventListener("click", this.eventHandler.apply), this._els.cancel.removeEventListener("click", this.eventHandler.cancel), this._els.preset.removeEventListener("click", this.eventHandler.cropzonePreset); + } + }, { + key: "_applyEventHandler", + value: function() { + this.actions.crop(), this._els.apply.classList.remove("active"); + } + }, { + key: "_cancelEventHandler", + value: function() { + this.actions.cancel(), this._els.apply.classList.remove("active"); + } + }, { + key: "_cropzonePresetEventHandler", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button.preset"); + if ($) { + var re = $.className.match(/preset-[^\s]+/), le = ct(re, 1), me = le[0]; + this._setPresetButtonActive($), this.actions.preset(me); + } + } + /** + * Executed when the menu starts. + */ + }, { + key: "changeStartMode", + value: function() { + this.actions.modeChange("crop"); + } + /** + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + this.actions.stopDrawingMode(), this._setPresetButtonActive(); + } + /** + * Change apply button status + * @param {Boolean} enableStatus - apply button status + */ + }, { + key: "changeApplyButtonStatus", + value: function(L) { + L ? this._els.apply.classList.add("active") : this._els.apply.classList.remove("active"); + } + /** + * Set preset button to active status + * @param {HTMLElement} button - event target element + * @private + */ + }, { + key: "_setPresetButtonActive", + value: function() { + var L = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.defaultPresetButton; + Fe()(this._els.preset.querySelectorAll(".preset"), function($) { + $.classList.remove("active"); + }), L && L.classList.add("active"); + } + }]), F; + }(vo), Sv = Uf, bv = function(ce) { + var W, F, j, L, $, re, le = ce.locale, me = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = ` +
          +
        • +
          + +
          + +
          + +
          + +
          +
        • +
        • +
        • +
          +
        • +
        • +
          +
          + +
          +
          +
        • +
        • +
        • +
          +
        • +
        • +
        • +
          + `)).call(L, me(["normal", "active"], "apply"), ` + +
          +
          + `)).call(F, me(["normal", "active"], "cancel"), ` + +
          +
        • +
        +`); + }; + function Ev(ce) { + var W = au(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function au() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Cv = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Ev(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "resize", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: bv, + usageStatistics: ve + }), $.status = "active", $._lockState = !1, $._originalDimensions = null, $._els = { + widthRange: new Yo({ + slider: $.selector(".tie-width-range"), + input: $.selector(".tie-width-range-value") + }, Wt), + heightRange: new Yo({ + slider: $.selector(".tie-height-range"), + input: $.selector(".tie-height-range-value") + }, Wt), + lockAspectRatio: $.selector(".tie-lock-aspect-ratio"), + apply: $.selector(".tie-resize-button .apply"), + cancel: $.selector(".tie-resize-button .cancel") + }, $; + } + return de(F, [{ + key: "changeStartMode", + value: function() { + this.actions.modeChange("resize"); + var L = this.actions.getCurrentDimensions(); + this._originalDimensions = L, this.setWidthValue(L.width), this.setHeightValue(L.height); + } + /** + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + this.actions.stopDrawingMode(), this.actions.reset(!0); + } + /** + * Set dimension limits + * @param {object} limits - expect dimension limits for change + */ + }, { + key: "setLimit", + value: function(L) { + this._els.widthRange.min = this.calcMinValue(L.minWidth), this._els.heightRange.min = this.calcMinValue(L.minHeight), this._els.widthRange.max = this.calcMaxValue(L.maxWidth), this._els.heightRange.max = this.calcMaxValue(L.maxHeight); + } + /** + * Calculate max value + * @param {number} maxValue - max value + * @returns {number} + */ + }, { + key: "calcMaxValue", + value: function(L) { + return L <= 0 && (L = Wt.max), L; + } + /** + * Calculate min value + * @param {number} minValue - min value + * @returns {number} + */ + }, { + key: "calcMinValue", + value: function(L) { + return L <= 0 && (L = Wt.min), L; + } + /** + * Set width value + * @param {number} value - expect value for widthRange change + * @param {boolean} trigger - fire change event control + */ + }, { + key: "setWidthValue", + value: function(L) { + var $ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + this._els.widthRange.value = L, $ && this._els.widthRange.trigger("change"); + } + /** + * Set height value + * @param {number} value - expect value for heightRange change + * @param {boolean} trigger - fire change event control + */ + }, { + key: "setHeightValue", + value: function(L) { + var $ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + this._els.heightRange.value = L, $ && this._els.heightRange.trigger("change"); + } + /** + * Destroys the instance. + */ + }, { + key: "destroy", + value: function() { + this._removeEvent(), aa(this); + } + /** + * Add event for resize + * @param {Object} actions - actions for resize + * @param {Function} actions.resize - resize action + * @param {Function} actions.preview - preview action + * @param {Function} actions.getCurrentDimensions - Get current dimensions action + * @param {Function} actions.modeChange - change mode + * @param {Function} actions.stopDrawingMode - stop drawing mode + * @param {Function} actions.lockAspectRatio - lock aspect ratio + * @param {Function} actions.reset - reset action + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le, me, ve; + this._els.widthRange.on("change", be()($ = this._changeWidthRangeHandler).call($, this)), this._els.heightRange.on("change", be()(re = this._changeHeightRangeHandler).call(re, this)), this._els.lockAspectRatio.addEventListener("change", be()(le = this._changeLockAspectRatio).call(le, this)); + var Oe = be()(me = this._applyEventHandler).call(me, this), je = be()(ve = this._cancelEventHandler).call(ve, this); + this.eventHandler = { + apply: Oe, + cancel: je + }, this.actions = L, this._els.apply.addEventListener("click", Oe), this._els.cancel.addEventListener("click", je); + } + /** + * Change width + * @param {number} value - width range value + * @private + */ + }, { + key: "_changeWidthRangeHandler", + value: function(L) { + this.actions.preview("width", en(L), this._lockState); + } + /** + * Change height + * @param {number} value - height range value + * @private + */ + }, { + key: "_changeHeightRangeHandler", + value: function(L) { + this.actions.preview("height", en(L), this._lockState); + } + /** + * Change lock aspect ratio state + * @param {Event} event - aspect ratio check event + * @private + */ + }, { + key: "_changeLockAspectRatio", + value: function(L) { + this._lockState = L.target.checked, this.actions.lockAspectRatio(this._lockState, Wt.min, Wt.max); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + this._els.apply.removeEventListener("click", this.eventHandler.apply), this._els.cancel.removeEventListener("click", this.eventHandler.cancel); + } + }, { + key: "_applyEventHandler", + value: function() { + this.actions.resize(), this._els.apply.classList.remove("active"); + } + }, { + key: "_cancelEventHandler", + value: function() { + this.actions.reset(), this._els.cancel.classList.remove("active"); + } + /** + * Change apply button status + * @param {Boolean} enableStatus - apply button status + */ + }, { + key: "changeApplyButtonStatus", + value: function(L) { + L ? this._els.apply.classList.add("active") : this._els.apply.classList.remove("active"); + } + }]), F; + }(vo), cy = Cv, uy = function(ce) { + var W, F, j, L, $, re = ce.locale, le = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = ` +
          +
        • +
          +
          + `.concat(le(["normal", "active"], "flip-x", !0), ` +
          + +
          +
          +
          + `)).call(L, le(["normal", "active"], "flip-y", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
          + `)).call(F, le(["normal", "active"], "flip-reset", !0), ` +
          + +
          +
        • +
        +`); + }; + function Va(ce) { + var W = Oh(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Oh() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Vp = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Va(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "flip", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: uy, + usageStatistics: ve + }), $.flipStatus = !1, $._els = { + flipButton: $.selector(".tie-flip-button") + }, $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), aa(this); + } + /** + * Add event for flip + * @param {Object} actions - actions for flip + * @param {Function} actions.flip - flip action + */ + }, { + key: "addEvent", + value: function(L) { + var $; + this.eventHandler.changeFlip = be()($ = this._changeFlip).call($, this), this._actions = L, this._els.flipButton.addEventListener("click", this.eventHandler.changeFlip); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + this._els.flipButton.removeEventListener("click", this.eventHandler.changeFlip); + } + /** + * change Flip status + * @param {object} event - change event + * @private + */ + }, { + key: "_changeFlip", + value: function(L) { + var $ = this, re = L.target.closest(".tui-image-editor-button"); + if (re) { + var le = this.getButtonType(re, ["flipX", "flipY", "resetFlip"]); + if (!this.flipStatus && le === "resetFlip") + return; + this._actions.flip(le).then(function(me) { + var ve = $._els.flipButton.classList; + $.flipStatus = !1, ve.remove("resetFlip"), Fe()(["flipX", "flipY"], function(Oe) { + ve.remove(Oe), me[Oe] && (ve.add(Oe), ve.add("resetFlip"), $.flipStatus = !0); + }); + }); + } + } + }]), F; + }(vo), Tv = Vp, wc = function(ce) { + var W, F, j = ce.locale, L = ce.makeSvgIcon; + return pe()(W = pe()(F = ` +
          +
        • +
          +
          + `.concat(L(["normal", "active"], "rotate-clockwise", !0), ` +
          + +
          +
          +
          + `)).call(F, L(["normal", "active"], "rotate-counterclockwise", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • + +
          + +
        • +
        +`); + }; + function zp(ce) { + var W = hy(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function hy() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Id = 30, ti = -30, ss = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = zp(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "rotate", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: wc, + usageStatistics: ve + }), $._value = 0, $._els = { + rotateButton: $.selector(".tie-rotate-button"), + rotateRange: new Yo({ + slider: $.selector(".tie-rotate-range"), + input: $.selector(".tie-rotate-range-value") + }, as) + }, $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), this._els.rotateRange.destroy(), aa(this); + } + }, { + key: "setRangeBarAngle", + value: function(L, $) { + var re = $; + L === "rotate" && (re = _t()(this._els.rotateRange.value, 10) + $), this._setRangeBarRatio(re); + } + }, { + key: "_setRangeBarRatio", + value: function(L) { + this._els.rotateRange.value = L; + } + /** + * Add event for rotate + * @param {Object} actions - actions for crop + * @param {Function} actions.rotate - rotate action + * @param {Function} actions.setAngle - set angle action + */ + }, { + key: "addEvent", + value: function(L) { + var $, re; + this.eventHandler.rotationAngleChanged = be()($ = this._changeRotateForButton).call($, this), this.actions = L, this._els.rotateButton.addEventListener("click", this.eventHandler.rotationAngleChanged), this._els.rotateRange.on("change", be()(re = this._changeRotateForRange).call(re, this)); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + this._els.rotateButton.removeEventListener("click", this.eventHandler.rotationAngleChanged), this._els.rotateRange.off(); + } + /** + * Change rotate for range + * @param {number} value - angle value + * @param {boolean} isLast - Is last change + * @private + */ + }, { + key: "_changeRotateForRange", + value: function(L, $) { + var re = en(L); + this.actions.setAngle(re, !$), this._value = re; + } + /** + * Change rotate for button + * @param {object} event - add button event object + * @private + */ + }, { + key: "_changeRotateForButton", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button"), re = this._els.rotateRange.value; + if ($) { + var le = this.getButtonType($, ["counterclockwise", "clockwise"]), me = { + clockwise: Id, + counterclockwise: ti + }[le], ve = _t()(re, 10) + me, Oe = ve >= -360 && ve <= 360; + Oe && this.actions.rotate(me); + } + } + }]), F; + }(vo), ta = ss, te = function(ce) { + var W, F, j, L, $, re, le, me, ve, Oe, je, pt, vt, It = ce.locale, Et = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = pe()(ve = pe()(Oe = pe()(je = pe()(pt = pe()(vt = ` +
          +
        • +
          +
          + `.concat(Et(["normal", "active"], "text-bold", !0), ` +
          + +
          +
          +
          + `)).call(pt, Et(["normal", "active"], "text-italic", !0), ` +
          + +
          +
          +
          + `)).call(Oe, Et(["normal", "active"], "text-underline", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
          + `)).call(me, Et(["normal", "active"], "text-align-left", !0), ` +
          + +
          +
          +
          + `)).call(re, Et(["normal", "active"], "text-align-center", !0), ` +
          + +
          +
          +
          + `)).call(L, Et(["normal", "active"], "text-align-right", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
        • +
        • +
          +
        • +
        • + +
          + +
        • +
        +`); + }; + function xe(ce) { + var W = at(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function at() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var wt = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = xe(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "text", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: te, + usageStatistics: ve + }), $.effect = { + bold: !1, + italic: !1, + underline: !1 + }, $.align = "tie-text-align-left", $._els = { + textEffectButton: $.selector(".tie-text-effect-button"), + textAlignButton: $.selector(".tie-text-align-button"), + textColorpicker: new nl($.selector(".tie-text-color"), { + defaultColor: "#ffbb3b", + toggleDirection: $.toggleDirection, + usageStatistics: $.usageStatistics + }), + textRange: new Yo({ + slider: $.selector(".tie-text-range"), + input: $.selector(".tie-text-range-value") + }, Cr) + }, $.colorPickerInputBox = $._els.textColorpicker.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX), $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), this._els.textColorpicker.destroy(), this._els.textRange.destroy(), aa(this); + } + /** + * Add event for text + * @param {Object} actions - actions for text + * @param {Function} actions.changeTextStyle - change text style + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le, me, ve, Oe, je = be()($ = this._setTextEffectHandler).call($, this), pt = be()(re = this._setTextAlignHandler).call(re, this); + this.eventHandler = { + setTextEffect: je, + setTextAlign: pt + }, this.actions = L, this._els.textEffectButton.addEventListener("click", je), this._els.textAlignButton.addEventListener("click", pt), this._els.textRange.on("change", be()(le = this._changeTextRnageHandler).call(le, this)), this._els.textColorpicker.on("change", be()(me = this._changeColorHandler).call(me, this)), this.colorPickerInputBox.addEventListener(Pt.FOCUS, be()(ve = this._onStartEditingInputBox).call(ve, this)), this.colorPickerInputBox.addEventListener(Pt.BLUR, be()(Oe = this._onStopEditingInputBox).call(Oe, this)); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + var L, $, re = this.eventHandler, le = re.setTextEffect, me = re.setTextAlign; + this._els.textEffectButton.removeEventListener("click", le), this._els.textAlignButton.removeEventListener("click", me), this._els.textRange.off(), this._els.textColorpicker.off(), this.colorPickerInputBox.removeEventListener(Pt.FOCUS, be()(L = this._onStartEditingInputBox).call(L, this)), this.colorPickerInputBox.removeEventListener(Pt.BLUR, be()($ = this._onStopEditingInputBox).call($, this)); + } + /** + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + this.actions.stopDrawingMode(); + } + /** + * Executed when the menu starts. + */ + }, { + key: "changeStartMode", + value: function() { + this.actions.modeChange("text"); + } + /** + * Get text color + * @returns {string} - text color + */ + }, { + key: "textColor", + get: function() { + return this._els.textColorpicker.color; + }, + set: function(L) { + this._els.textColorpicker.color = L; + } + /** + * Get text size + * @returns {string} - text size + */ + }, { + key: "fontSize", + get: function() { + return this._els.textRange.value; + }, + set: function(L) { + this._els.textRange.value = L; + } + /** + * get font style + * @returns {string} - font style + */ + }, { + key: "fontStyle", + get: function() { + return this.effect.italic ? "italic" : "normal"; + } + /** + * get font weight + * @returns {string} - font weight + */ + }, { + key: "fontWeight", + get: function() { + return this.effect.bold ? "bold" : "normal"; + } + /** + * get text underline text underline + * @returns {boolean} - true or false + */ + }, { + key: "underline", + get: function() { + return this.effect.underline; + } + }, { + key: "setTextStyleStateOnAction", + value: function() { + var L = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, $ = Ct()(L), re = L.fontSize, le = L.fontStyle, me = L.fontWeight, ve = L.textDecoration, Oe = L.textAlign; + this.textColor = $, this.fontSize = re, this.setEffectState("italic", le), this.setEffectState("bold", me), this.setEffectState("underline", ve), this.setAlignState("tie-text-align-".concat(Oe)); + } + }, { + key: "setEffectState", + value: function(L, $) { + var re = $ === "italic" || $ === "bold" || $ === "underline", le = this._els.textEffectButton.querySelector(".tui-image-editor-button.".concat(L)); + this.effect[L] = re, le.classList[re ? "add" : "remove"]("active"); + } + }, { + key: "setAlignState", + value: function(L) { + var $ = this._els.textAlignButton; + $.classList.remove(this.align), $.classList.add(L), this.align = L; + } + /** + * text effect set handler + * @param {object} event - add button event object + * @private + */ + }, { + key: "_setTextEffectHandler", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button"); + if ($) { + var re = $.className.match(/(bold|italic|underline)/), le = ct(re, 1), me = le[0], ve = { + bold: { + fontWeight: "bold" + }, + italic: { + fontStyle: "italic" + }, + underline: { + textDecoration: "underline" + } + }[me]; + this.effect[me] = !this.effect[me], $.classList.toggle("active"), this.actions.changeTextStyle(ve); + } + } + /** + * text effect set handler + * @param {object} event - add button event object + * @private + */ + }, { + key: "_setTextAlignHandler", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button"); + if ($) { + var re = this.getButtonType($, ["left", "center", "right"]), le = "tie-text-align-".concat(re); + L.currentTarget.classList.remove(this.align), this.align !== le && L.currentTarget.classList.add(le), this.actions.changeTextStyle({ + textAlign: re + }), this.align = le; + } + } + /** + * text align set handler + * @param {number} value - range value + * @param {boolean} isLast - Is last change + * @private + */ + }, { + key: "_changeTextRnageHandler", + value: function(L, $) { + this.actions.changeTextStyle({ + fontSize: L + }, !$); + } + /** + * change color handler + * @param {string} color - change color string + * @private + */ + }, { + key: "_changeColorHandler", + value: function(L) { + L = L || "transparent", this.actions.changeTextStyle({ + fill: L + }); + } + }]), F; + }(vo), Tr = wt, jr = function(ce) { + var W, F, j, L = ce.locale, $ = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = ` +
          +
        • +
          +
          + + `.concat($(["normal", "active"], "mask-load", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          + `)).call(F, $(["normal", "active"], "apply"), ` + +
          +
        • +
        +`); + }; + function Sn(ce) { + var W = Oi(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Oi() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Ii = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Sn(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "mask", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: jr, + usageStatistics: ve + }), $._els = { + applyButton: $.selector(".tie-mask-apply"), + maskImageButton: $.selector(".tie-mask-image-file") + }, $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), aa(this); + } + /** + * Add event for mask + * @param {Object} actions - actions for crop + * @param {Function} actions.loadImageFromURL - load image action + * @param {Function} actions.applyFilter - apply filter action + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le = be()($ = this._loadMaskFile).call($, this), me = be()(re = this._applyMask).call(re, this); + this.eventHandler = { + loadMaskFile: le, + applyMask: me + }, this.actions = L, this._els.maskImageButton.addEventListener("change", le), this._els.applyButton.addEventListener("click", me); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + this._els.maskImageButton.removeEventListener("change", this.eventHandler.loadMaskFile), this._els.applyButton.removeEventListener("click", this.eventHandler.applyMask); + } + /** + * Apply mask + * @private + */ + }, { + key: "_applyMask", + value: function() { + this.actions.applyFilter(), this._els.applyButton.classList.remove("active"); + } + /** + * Load mask file + * @param {object} event - File change event object + * @private + */ + }, { + key: "_loadMaskFile", + value: function(L) { + var $; + Xn() || alert("This browser does not support file-api"); + var re = ct(L.target.files, 1), le = re[0]; + le && ($ = Re().createObjectURL(le), this.actions.loadImageFromURL($, le), this._els.applyButton.classList.add("active")); + } + }]), F; + }(vo), ln = Ii, Vs = function(ce) { + var W, F, j, L, $, re, le, me, ve, Oe, je, pt, vt, It, Et, Rt, sr, un, yn, Kn, xr = ce.locale, Aa = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = pe()(ve = pe()(Oe = pe()(je = pe()(pt = pe()(vt = pe()(It = pe()(Et = pe()(Rt = pe()(sr = pe()(un = pe()(yn = pe()(Kn = ` +
          +
        • +
          +
          + `.concat(Aa(["normal", "active"], "icon-arrow", !0), ` +
          + +
          +
          +
          + `)).call(yn, Aa(["normal", "active"], "icon-arrow-2", !0), ` +
          + +
          +
          +
          + `)).call(sr, Aa(["normal", "active"], "icon-arrow-3", !0), ` +
          + +
          +
          +
          + `)).call(Et, Aa(["normal", "active"], "icon-star", !0), ` +
          + +
          +
          +
          + `)).call(vt, Aa(["normal", "active"], "icon-star-2", !0), ` +
          + +
          + +
          +
          + `)).call(je, Aa(["normal", "active"], "icon-polygon", !0), ` +
          + +
          + +
          +
          + `)).call(ve, Aa(["normal", "active"], "icon-location", !0), ` +
          + +
          + +
          +
          + `)).call(le, Aa(["normal", "active"], "icon-heart", !0), ` +
          + +
          + +
          +
          + `)).call($, Aa(["normal", "active"], "icon-bubble", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
          + + `)).call(j, Aa(["normal", "active"], "icon-load", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
        • +
        +`); + }; + function mo(ce) { + var W = zu(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function zu() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var dy = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = mo(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "icon", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: Vs, + usageStatistics: ve + }), $.iconType = null, $._iconMap = {}, $._els = { + registerIconButton: $.selector(".tie-icon-image-file"), + addIconButton: $.selector(".tie-icon-add-button"), + iconColorpicker: new nl($.selector(".tie-icon-color"), { + defaultColor: "#ffbb3b", + toggleDirection: $.toggleDirection, + usageStatistics: $.usageStatistics + }) + }, $.colorPickerInputBox = $._els.iconColorpicker.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX), $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), this._els.iconColorpicker.destroy(), aa(this); + } + /** + * Add event for icon + * @param {Object} actions - actions for icon + * @param {Function} actions.registerCustomIcon - register icon + * @param {Function} actions.addIcon - add icon + * @param {Function} actions.changeColor - change icon color + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le, me, ve, Oe = be()($ = this._registerIconHandler).call($, this), je = be()(re = this._addIconHandler).call(re, this); + this.eventHandler = { + registerIcon: Oe, + addIcon: je + }, this.actions = L, this._els.iconColorpicker.on("change", be()(le = this._changeColorHandler).call(le, this)), this._els.registerIconButton.addEventListener("change", Oe), this._els.addIconButton.addEventListener("click", je), this.colorPickerInputBox.addEventListener(Pt.FOCUS, be()(me = this._onStartEditingInputBox).call(me, this)), this.colorPickerInputBox.addEventListener(Pt.BLUR, be()(ve = this._onStopEditingInputBox).call(ve, this)); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + var L, $; + this._els.iconColorpicker.off(), this._els.registerIconButton.removeEventListener("change", this.eventHandler.registerIcon), this._els.addIconButton.removeEventListener("click", this.eventHandler.addIcon), this.colorPickerInputBox.removeEventListener(Pt.FOCUS, be()(L = this._onStartEditingInputBox).call(L, this)), this.colorPickerInputBox.removeEventListener(Pt.BLUR, be()($ = this._onStopEditingInputBox).call($, this)); + } + /** + * Clear icon type + */ + }, { + key: "clearIconType", + value: function() { + this._els.addIconButton.classList.remove(this.iconType), this.iconType = null; + } + /** + * Register default icon + */ + }, { + key: "registerDefaultIcon", + value: function() { + var L = this; + Fe()(po, function($, re) { + L.actions.registerDefaultIcons(re, $); + }); + } + /** + * Set icon picker color + * @param {string} iconColor - rgb color string + */ + }, { + key: "setIconPickerColor", + value: function(L) { + this._els.iconColorpicker.color = L; + } + /** + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + this.clearIconType(), this.actions.cancelAddIcon(); + } + /** + * Change icon color + * @param {string} color - color for change + * @private + */ + }, { + key: "_changeColorHandler", + value: function(L) { + L = L || "transparent", this.actions.changeColor(L); + } + /** + * Change icon color + * @param {object} event - add button event object + * @private + */ + }, { + key: "_addIconHandler", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button"); + if ($) { + var re = $.getAttribute("data-icontype"), le = this._els.iconColorpicker.color; + this.actions.discardSelection(), this.actions.changeSelectableAll(!1), this._els.addIconButton.classList.remove(this.iconType), this._els.addIconButton.classList.add(re), this.iconType === re ? this.changeStandbyMode() : (this.actions.addIcon(re, le), this.iconType = re); + } + } + /** + * register icon + * @param {object} event - file change event object + * @private + */ + }, { + key: "_registerIconHandler", + value: function(L) { + var $; + Xn || alert("This browser does not support file-api"); + var re = ct(L.target.files, 1), le = re[0]; + le && ($ = Re().createObjectURL(le), this.actions.registerCustomIcon($, le)); + } + }]), F; + }(vo), jf = dy, fy = function(ce) { + var W, F, j, L, $, re = ce.locale, le = ce.makeSvgIcon; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = ` +
          +
        • +
          +
          + `.concat(le(["normal", "active"], "draw-free", !0), ` +
          + +
          +
          +
          + `)).call(L, le(["normal", "active"], "draw-line", !0), ` +
          + +
          +
        • +
        • +
          +
        • +
        • +
          +
        • +
        • +
          +
        • +
        • + +
          + +
        • +
        +`); + }; + function Hp(ce) { + var W = WE(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function WE() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var VI = 0.7, py = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Hp(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon, me = L.menuBarPosition, ve = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "draw", + makeSvgIcon: le, + menuBarPosition: me, + templateHtml: fy, + usageStatistics: ve + }), $._els = { + lineSelectButton: $.selector(".tie-draw-line-select-button"), + drawColorPicker: new nl($.selector(".tie-draw-color"), { + defaultColor: "#00a9ff", + toggleDirection: $.toggleDirection, + usageStatistics: $.usageStatistics + }), + drawRange: new Yo({ + slider: $.selector(".tie-draw-range"), + input: $.selector(".tie-draw-range-value") + }, zo) + }, $.type = null, $.color = $._els.drawColorPicker.color, $.width = $._els.drawRange.value, $.colorPickerInputBox = $._els.drawColorPicker.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX), $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), this._els.drawColorPicker.destroy(), this._els.drawRange.destroy(), aa(this); + } + /** + * Add event for draw + * @param {Object} actions - actions for crop + * @param {Function} actions.setDrawMode - set draw mode + */ + }, { + key: "addEvent", + value: function(L) { + var $, re, le, me, ve; + this.eventHandler.changeDrawType = be()($ = this._changeDrawType).call($, this), this.actions = L, this._els.lineSelectButton.addEventListener("click", this.eventHandler.changeDrawType), this._els.drawColorPicker.on("change", be()(re = this._changeDrawColor).call(re, this)), this._els.drawRange.on("change", be()(le = this._changeDrawRange).call(le, this)), this.colorPickerInputBox.addEventListener(Pt.FOCUS, be()(me = this._onStartEditingInputBox).call(me, this)), this.colorPickerInputBox.addEventListener(Pt.BLUR, be()(ve = this._onStopEditingInputBox).call(ve, this)); + } + /** + * Remove event + * @private + */ + }, { + key: "_removeEvent", + value: function() { + var L, $; + this._els.lineSelectButton.removeEventListener("click", this.eventHandler.changeDrawType), this._els.drawColorPicker.off(), this._els.drawRange.off(), this.colorPickerInputBox.removeEventListener(Pt.FOCUS, be()(L = this._onStartEditingInputBox).call(L, this)), this.colorPickerInputBox.removeEventListener(Pt.BLUR, be()($ = this._onStopEditingInputBox).call($, this)); + } + /** + * set draw mode - action runner + */ + }, { + key: "setDrawMode", + value: function() { + this.actions.setDrawMode(this.type, { + width: this.width, + color: ir(this.color, VI) + }); + } + /** + * Returns the menu to its default state. + */ + }, { + key: "changeStandbyMode", + value: function() { + this.type = null, this.actions.stopDrawingMode(), this.actions.changeSelectableAll(!0), this._els.lineSelectButton.classList.remove("free"), this._els.lineSelectButton.classList.remove("line"); + } + /** + * Executed when the menu starts. + */ + }, { + key: "changeStartMode", + value: function() { + this.type = "free", this._els.lineSelectButton.classList.add("free"), this.setDrawMode(); + } + /** + * Change draw type event + * @param {object} event - line select event + * @private + */ + }, { + key: "_changeDrawType", + value: function(L) { + var $ = L.target.closest(".tui-image-editor-button"); + if ($) { + var re = this.getButtonType($, ["free", "line"]); + if (this.actions.discardSelection(), this.type === re) { + this.changeStandbyMode(); + return; + } + this.changeStandbyMode(), this.type = re, this._els.lineSelectButton.classList.add(re), this.setDrawMode(); + } + } + /** + * Change drawing color + * @param {string} color - select drawing color + * @private + */ + }, { + key: "_changeDrawColor", + value: function(L) { + this.color = L || "transparent", this.type ? this.setDrawMode() : this.changeStartMode(); + } + /** + * Change drawing Range + * @param {number} value - select drawing range + * @private + */ + }, { + key: "_changeDrawRange", + value: function(L) { + this.width = L, this.type ? this.setDrawMode() : this.changeStartMode(); + } + }]), F; + }(vo), ou = py, GE = a(9886), ls = /* @__PURE__ */ a.n(GE), B0 = function(ce) { + var W, F, j, L, $, re, le, me, ve, Oe, je, pt, vt, It, Et, Rt, sr = ce.locale; + return pe()(W = pe()(F = pe()(j = pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = pe()(ve = pe()(Oe = pe()(je = pe()(pt = pe()(vt = pe()(It = pe()(Et = pe()(Rt = ` +
          +
        • +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          +
        • +
        • +
          +
        • +
        • +
          +
          +
          + +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          +
        • +
        • +
          +
        • +
        • +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          + +
          +
          +
          +
        • +
        • +
          +
        • +
        • +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + +
          +
          +
        • +
        +`); + }; + function xd(ce) { + var W = rr(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function rr() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var wv = "130px", Iv = ["add", "diff", "subtract", "multiply", "screen", "lighten", "darken"], Wp = ["grayscale", "invert", "sepia", "vintage", "blur", "sharpen", "emboss", "remove-white", "brightness", "noise", "pixelate", "color-filter", "tint", "multiply", "blend"], il = { + grayscale: "grayscale", + invert: "invert", + sepia: "sepia", + blur: "blur", + sharpen: "sharpen", + emboss: "emboss", + removeWhite: "removeColor", + brightness: "brightness", + contrast: "contrast", + saturation: "saturation", + vintage: "vintage", + polaroid: "polaroid", + noise: "noise", + pixelate: "pixelate", + colorFilter: "removeColor", + tint: "blendColor", + multiply: "blendColor", + blend: "blendColor", + hue: "hue", + gamma: "gamma" + }, Ad = ["removewhiteDistanceRange", "colorfilterThresholdRange", "pixelateRange", "noiseRange", "brightnessRange", "tintOpacity"], Hu = ["filterBlendColor", "filterMultiplyColor", "filterTintColor"], xv = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = xd(F); + function F(j, L) { + var $, re = L.locale, le = L.menuBarPosition, me = L.usageStatistics; + return ne(this, F), $ = W.call(this, j, { + locale: re, + name: "filter", + menuBarPosition: le, + templateHtml: B0, + usageStatistics: me + }), $.selectBoxShow = !1, $.checkedMap = {}, $._makeControlElement(), $; + } + return de(F, [{ + key: "destroy", + value: function() { + this._removeEvent(), this._destroyToolInstance(), aa(this); + } + /** + * Remove event for filter + */ + }, { + key: "_removeEvent", + value: function() { + var L = this, $; + Fe()(Wp, function(re) { + var le = L.selector(".tie-".concat(re)), me = Br(re); + le.removeEventListener("change", L.eventHandler[me]); + }), Fe()(pe()($ = []).call($, Ad, Hu), function(re) { + L._els[re].off(); + }), this._els.blendType.removeEventListener("change", this.eventHandler.changeBlendFilter), this._els.blendType.removeEventListener("click", this.eventHandler.changeBlendFilter), ro()(this.colorPickerInputBoxes, function(re) { + var le, me; + re.removeEventListener(Pt.FOCUS, be()(le = L._onStartEditingInputBox).call(le, L)), re.removeEventListener(Pt.BLUR, be()(me = L._onStopEditingInputBox).call(me, L)); + }, this); + } + }, { + key: "_destroyToolInstance", + value: function() { + var L, $ = this; + Fe()(pe()(L = []).call(L, Ad, Hu), function(re) { + $._els[re].destroy(); + }); + } + /** + * Add event for filter + * @param {Object} actions - actions for crop + * @param {Function} actions.applyFilter - apply filter option + */ + }, { + key: "addEvent", + value: function(L) { + var $ = this, re, le, me, ve = L.applyFilter, Oe = function(vt) { + var It; + return be()(It = $._changeFilterState).call(It, $, ve, vt); + }, je = function(vt) { + return function(It, Et) { + return $._changeFilterState(ve, vt, Et); + }; + }; + this.eventHandler = { + changeBlendFilter: Oe("blend"), + blandTypeClick: function(vt) { + return vt.stopPropagation(); + } + }, Fe()(Wp, function(pt) { + var vt = $.selector(".tie-".concat(pt)), It = Br(pt); + $.checkedMap[It] = vt, $.eventHandler[It] = Oe(It), vt.addEventListener("change", $.eventHandler[It]); + }), this._els.removewhiteDistanceRange.on("change", je("removeWhite")), this._els.colorfilterThresholdRange.on("change", je("colorFilter")), this._els.pixelateRange.on("change", je("pixelate")), this._els.noiseRange.on("change", je("noise")), this._els.brightnessRange.on("change", je("brightness")), this._els.filterBlendColor.on("change", this.eventHandler.changeBlendFilter), this._els.filterMultiplyColor.on("change", Oe("multiply")), this._els.filterTintColor.on("change", Oe("tint")), this._els.tintOpacity.on("change", je("tint")), this._els.filterMultiplyColor.on("changeShow", be()(re = this.colorPickerChangeShow).call(re, this)), this._els.filterTintColor.on("changeShow", be()(le = this.colorPickerChangeShow).call(le, this)), this._els.filterBlendColor.on("changeShow", be()(me = this.colorPickerChangeShow).call(me, this)), this._els.blendType.addEventListener("change", this.eventHandler.changeBlendFilter), this._els.blendType.addEventListener("click", this.eventHandler.blandTypeClick), ro()(this.colorPickerInputBoxes, function(pt) { + var vt, It; + pt.addEventListener(Pt.FOCUS, be()(vt = $._onStartEditingInputBox).call(vt, $)), pt.addEventListener(Pt.BLUR, be()(It = $._onStopEditingInputBox).call(It, $)); + }, this); + } + /** + * Set filter for undo changed + * @param {Object} changedFilterInfos - changed command infos + * @param {string} type - filter type + * @param {string} action - add or remove + * @param {Object} options - filter options + */ + }, { + key: "setFilterState", + value: function(L) { + var $ = L.type, re = L.options, le = L.action, me = this._getFilterNameFromOptions($, re), ve = le === "remove"; + ve || this._setFilterState(me, re), this.checkedMap[me].checked = !ve; + } + /** + * Init all filter's checkbox to unchecked state + */ + }, { + key: "initFilterCheckBoxState", + value: function() { + Fe()(this.checkedMap, function(L) { + L.checked = !1; + }, this); + } + /** + * Set filter for undo changed + * @param {string} filterName - filter name + * @param {Object} options - filter options + * @private + */ + // eslint-disable-next-line complexity + }, { + key: "_setFilterState", + value: function(L, $) { + L === "colorFilter" ? this._els.colorfilterThresholdRange.value = $.distance : L === "removeWhite" ? this._els.removewhiteDistanceRange.value = $.distance : L === "pixelate" ? this._els.pixelateRange.value = $.blocksize : L === "brightness" ? this._els.brightnessRange.value = $.brightness : L === "noise" ? this._els.noiseRange.value = $.noise : L === "tint" ? (this._els.tintOpacity.value = $.alpha, this._els.filterTintColor.color = $.color) : L === "blend" ? this._els.filterBlendColor.color = $.color : L === "multiply" && (this._els.filterMultiplyColor.color = $.color); + } + /** + * Get filter name + * @param {string} type - filter type + * @param {Object} options - filter options + * @returns {string} filter name + * @private + */ + }, { + key: "_getFilterNameFromOptions", + value: function(L, $) { + var re = L; + return L === "removeColor" ? re = ls()($.useAlpha) ? "removeWhite" : "colorFilter" : L === "blendColor" && (re = { + add: "blend", + multiply: "multiply", + tint: "tint" + }[$.mode]), re; + } + /** + * Add event for filter + * @param {Function} applyFilter - actions for firter + * @param {string} filterName - filter name + * @param {boolean} [isLast] - Is last change + */ + }, { + key: "_changeFilterState", + value: function(L, $) { + var re = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0, le = this.checkedMap[$].checked, me = il[$], ve = this.checkedMap[$].closest(".tui-image-editor-checkbox-group"); + ve && (le ? ve.classList.remove("tui-image-editor-disabled") : ve.classList.add("tui-image-editor-disabled")), L(le, me, this._getFilterOption($), !re); + } + /** + * Get filter option + * @param {String} type - filter type + * @returns {Object} filter option object + * @private + */ + // eslint-disable-next-line complexity + }, { + key: "_getFilterOption", + value: function(L) { + var $ = {}; + switch (L) { + case "removeWhite": + $.color = "#FFFFFF", $.useAlpha = !1, $.distance = la()(this._els.removewhiteDistanceRange.value); + break; + case "colorFilter": + $.color = "#FFFFFF", $.distance = la()(this._els.colorfilterThresholdRange.value); + break; + case "pixelate": + $.blocksize = en(this._els.pixelateRange.value); + break; + case "noise": + $.noise = en(this._els.noiseRange.value); + break; + case "brightness": + $.brightness = la()(this._els.brightnessRange.value); + break; + case "blend": + $.mode = "add", $.color = this._els.filterBlendColor.color, $.mode = this._els.blendType.value; + break; + case "multiply": + $.mode = "multiply", $.color = this._els.filterMultiplyColor.color; + break; + case "tint": + $.mode = "tint", $.color = this._els.filterTintColor.color, $.alpha = this._els.tintOpacity.value; + break; + case "blur": + $.blur = this._els.blurRange.value; + break; + } + return $; + } + /** + * Make submenu range and colorpicker control + * @private + */ + }, { + key: "_makeControlElement", + value: function() { + this._els = { + removewhiteDistanceRange: new Yo({ + slider: this.selector(".tie-removewhite-distance-range") + }, gt.removewhiteDistanceRange), + brightnessRange: new Yo({ + slider: this.selector(".tie-brightness-range") + }, gt.brightnessRange), + noiseRange: new Yo({ + slider: this.selector(".tie-noise-range") + }, gt.noiseRange), + pixelateRange: new Yo({ + slider: this.selector(".tie-pixelate-range") + }, gt.pixelateRange), + colorfilterThresholdRange: new Yo({ + slider: this.selector(".tie-colorfilter-threshold-range") + }, gt.colorfilterThresholdRange), + filterTintColor: new nl(this.selector(".tie-filter-tint-color"), { + defaultColor: "#03bd9e", + toggleDirection: this.toggleDirection, + usageStatistics: this.usageStatistics + }), + filterMultiplyColor: new nl(this.selector(".tie-filter-multiply-color"), { + defaultColor: "#515ce6", + toggleDirection: this.toggleDirection, + usageStatistics: this.usageStatistics + }), + filterBlendColor: new nl(this.selector(".tie-filter-blend-color"), { + defaultColor: "#ffbb3b", + toggleDirection: this.toggleDirection, + usageStatistics: this.usageStatistics + }), + blurRange: gt.blurFilterRange + }, this._els.tintOpacity = this._pickerWithRange(this._els.filterTintColor.pickerControl), this._els.blendType = this._pickerWithSelectbox(this._els.filterBlendColor.pickerControl), this.colorPickerControls.push(this._els.filterTintColor), this.colorPickerControls.push(this._els.filterMultiplyColor), this.colorPickerControls.push(this._els.filterBlendColor), this.colorPickerInputBoxes = [], this.colorPickerInputBoxes.push(this._els.filterTintColor.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX)), this.colorPickerInputBoxes.push(this._els.filterMultiplyColor.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX)), this.colorPickerInputBoxes.push(this._els.filterBlendColor.colorpickerElement.querySelector(Qr.COLOR_PICKER_INPUT_BOX)); + } + /** + * Make submenu control for picker & range mixin + * @param {HTMLElement} pickerControl - pickerControl dom element + * @returns {Range} + * @private + */ + }, { + key: "_pickerWithRange", + value: function(L) { + var $ = document.createElement("div"), re = document.createElement("label"), le = document.createElement("div"); + return le.id = "tie-filter-tint-opacity", re.innerHTML = "Opacity", $.appendChild(re), $.appendChild(le), L.appendChild($), L.style.height = wv, new Yo({ + slider: le + }, gt.tintOpacityRange); + } + /** + * Make submenu control for picker & selectbox + * @param {HTMLElement} pickerControl - pickerControl dom element + * @returns {HTMLElement} + * @private + */ + }, { + key: "_pickerWithSelectbox", + value: function(L) { + var $ = document.createElement("div"), re = document.createElement("select"), le = document.createElement("ul"); + return $.className = "tui-image-editor-selectlist-wrap", le.className = "tui-image-editor-selectlist", $.appendChild(re), $.appendChild(le), this._makeSelectOptionList(re), L.appendChild($), L.style.height = wv, this._drawSelectOptionList(re, le), this._pickerWithSelectboxForAddEvent(re, le), re; + } + /** + * Make selectbox option list custom style + * @param {HTMLElement} selectlist - selectbox element + * @param {HTMLElement} optionlist - custom option list item element + * @private + */ + }, { + key: "_drawSelectOptionList", + value: function(L, $) { + var re = L.querySelectorAll("option"); + Fe()(re, function(le) { + var me = document.createElement("li"); + me.innerHTML = le.innerHTML, me.setAttribute("data-item", le.value), $.appendChild(me); + }); + } + /** + * custom selectbox custom event + * @param {HTMLElement} selectlist - selectbox element + * @param {HTMLElement} optionlist - custom option list item element + * @private + */ + }, { + key: "_pickerWithSelectboxForAddEvent", + value: function(L, $) { + var re = this; + $.addEventListener("click", function(le) { + var me = le.target.getAttribute("data-item"), ve = document.createEvent("HTMLEvents"); + L.querySelector('[value="'.concat(me, '"]')).selected = !0, ve.initEvent("change", !0, !0), L.dispatchEvent(ve), re.selectBoxShow = !1, $.style.display = "none"; + }), L.addEventListener("mousedown", function(le) { + le.preventDefault(), re.selectBoxShow = !re.selectBoxShow, $.style.display = re.selectBoxShow ? "block" : "none", $.setAttribute("data-selectitem", L.value), $.querySelector("[data-item='".concat(L.value, "']")).classList.add("active"); + }); + } + /** + * Make option list for select control + * @param {HTMLElement} selectlist - blend option select list element + * @private + */ + }, { + key: "_makeSelectOptionList", + value: function(L) { + Fe()(Iv, function($) { + var re = document.createElement("option"); + re.setAttribute("value", $), re.innerHTML = $.replace(/^[a-z]/, function(le) { + return le.toUpperCase(); + }), L.appendChild(re); + }); + } + }]), F; + }(vo), gy = xv, YE = a(4383), XE = /* @__PURE__ */ a.n(YE), Av = /* @__PURE__ */ function() { + function ce(W, F) { + var j = F.name; + ne(this, ce), this.name = j, this.items = [], this.panelElement = this._makePanelElement(), this.listElement = this._makeListElement(), this.panelElement.appendChild(this.listElement), W.appendChild(this.panelElement); + } + return de(ce, [{ + key: "_makePanelElement", + value: function() { + var F = document.createElement("div"); + return F.className = "tie-panel-".concat(this.name), F; + } + /** + * Make list element + * @returns {HTMLElement} list element + * @private + */ + }, { + key: "_makeListElement", + value: function() { + var F = document.createElement("ol"); + return F.className = "".concat(this.name, "-list"), F; + } + /** + * Make list item element + * @param {string} html - history list item html + * @returns {HTMLElement} list item element + */ + }, { + key: "makeListItemElement", + value: function(F) { + var j = document.createElement("li"); + return j.innerHTML = F, j.className = "".concat(this.name, "-item"), j.setAttribute("data-index", this.items.length), j; + } + /** + * Push list item element + * @param {HTMLElement} item - list item element to add to the list + */ + }, { + key: "pushListItemElement", + value: function(F) { + this.listElement.appendChild(F), this.listElement.scrollTop += F.offsetHeight, this.items.push(F); + } + /** + * Delete list item element + * @param {number} start - start index to delete + * @param {number} end - end index to delete + */ + }, { + key: "deleteListItemElement", + value: function(F, j) { + for (var L = this.items, $ = F; $ < j; $ += 1) + this.listElement.removeChild(L[$]); + v()(L).call(L, F, j - F + 1); + } + /** + * Get list's length + * @returns {number} + */ + }, { + key: "getListLength", + value: function() { + return this.items.length; + } + /** + * Add class name of item + * @param {number} index - index of item + * @param {string} className - class name to add + */ + }, { + key: "addClass", + value: function(F, j) { + this.items[F] && this.items[F].classList.add(j); + } + /** + * Remove class name of item + * @param {number} index - index of item + * @param {string} className - class name to remove + */ + }, { + key: "removeClass", + value: function(F, j) { + this.items[F] && this.items[F].classList.remove(j); + } + /** + * Toggle class name of item + * @param {number} index - index of item + * @param {string} className - class name to remove + */ + }, { + key: "toggleClass", + value: function(F, j) { + this.items[F] && this.items[F].classList.toggle(j); + } + }]), ce; + }(), vy = Av, KE = function(ce) { + var W, F, j, L = ce.locale, $ = ce.makeSvgIcon, re = ce.name, le = ce.detail; + return pe()(W = pe()(F = pe()(j = ` +
        +
        + `.concat($(["normal", "active"], "history-".concat(re.toLowerCase()), !0), ` +
        + + `)).call(j, L.localize(re), ` + `)).call(F, le ? "(".concat(L.localize(le), ")") : "", ` + +
        + `)).call(W, $(["normal"], "history-check", !0), ` +
        +
        +`); + }; + function U0(ce) { + var W = wo(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function wo() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var cs = "history-item", Mh = "selected-item", kh = "disabled-item", su = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = U0(F); + function F(j, L) { + var $, re = L.locale, le = L.makeSvgIcon; + return ne(this, F), $ = W.call(this, j, { + name: "history" + }), j.classList.add("enabled"), $.locale = re, $.makeSvgIcon = le, $._eventHandler = {}, $._historyIndex = $.getListLength(), $; + } + return de(F, [{ + key: "add", + value: function(L) { + var $ = L.name, re = L.detail; + this._hasDisabledItem() && this.deleteListItemElement(this._historyIndex + 1, this.getListLength()); + var le = KE({ + locale: this.locale, + makeSvgIcon: this.makeSvgIcon, + name: $, + detail: re + }), me = this.makeListItemElement(le); + this.pushListItemElement(me), this._historyIndex = this.getListLength() - 1, this._selectItem(this._historyIndex); + } + /** + * Init history + */ + }, { + key: "init", + value: function() { + this.deleteListItemElement(1, this.getListLength()), this._historyIndex = 0, this._selectItem(this._historyIndex); + } + /** + * Clear history + */ + }, { + key: "clear", + value: function() { + this.deleteListItemElement(0, this.getListLength()), this._historyIndex = -1; + } + /** + * Select previous history of current selected history + */ + }, { + key: "prev", + value: function() { + this._historyIndex -= 1, this._selectItem(this._historyIndex); + } + /** + * Select next history of current selected history + */ + }, { + key: "next", + value: function() { + this._historyIndex += 1, this._selectItem(this._historyIndex); + } + /** + * Whether history menu has disabled item + * @returns {boolean} + */ + }, { + key: "_hasDisabledItem", + value: function() { + return this.getListLength() - 1 > this._historyIndex; + } + /** + * Add history menu event + * @private + */ + }, { + key: "_addHistoryEventListener", + value: function() { + var L = this; + this._eventHandler.history = function($) { + return L._clickHistoryItem($); + }, this.listElement.addEventListener("click", this._eventHandler.history); + } + /** + * Remove history menu event + * @private + */ + }, { + key: "_removeHistoryEventListener", + value: function() { + this.listElement.removeEventListener("click", this._eventHandler.history); + } + /** + * onClick history menu event listener + * @param {object} event - event object + * @private + */ + }, { + key: "_clickHistoryItem", + value: function(L) { + var $ = L.target, re = $.closest(".".concat(cs)); + if (re) { + var le = XE()(re.getAttribute("data-index"), 10); + if (le !== this._historyIndex) { + var me = Math.abs(le - this._historyIndex); + le < this._historyIndex ? this._actions.undo(me) : this._actions.redo(me); + } + } + } + /** + * Change item's state to selected state + * @param {number} index - index of selected item + */ + }, { + key: "_selectItem", + value: function(L) { + for (var $ = 0; $ < this.getListLength(); $ += 1) + this.removeClass($, Mh), this.removeClass($, kh), $ > L && this.addClass($, kh); + this.addClass(L, Mh); + } + /** + * Destroys the instance. + */ + }, { + key: "destroy", + value: function() { + this.removeEvent(), aa(this); + } + /** + * Add event for history + * @param {Object} actions - actions for crop + * @param {Function} actions.undo - undo action + * @param {Function} actions.redo - redo action + */ + }, { + key: "addEvent", + value: function(L) { + this._actions = L, this._addHistoryEventListener(); + } + /** + * Remove event + * @private + */ + }, { + key: "removeEvent", + value: function() { + this._removeHistoryEventListener(); + } + }]), F; + }(vy), Ph = su, my = /* @__PURE__ */ function() { + function ce(W) { + ne(this, ce), this._locale = W; + } + return de(ce, [{ + key: "localize", + value: function(F) { + return this._locale[F] || F; + } + }]), ce; + }(), Pi = my, Xo = { + Shape: iu, + Crop: Sv, + Resize: cy, + Flip: Tv, + Rotate: ta, + Text: Tr, + Mask: ln, + Icon: jf, + Draw: ou, + Filter: gy + }, Nh = "1300", Gp = "history", Lh = "tie-panel-history", Wu = "on", Gu = { + ZOOM_IN: "zoomIn", + HAND: "hand" + }, Rv = /* @__PURE__ */ function() { + function ce(W, F, j) { + ne(this, ce), this.options = this._initializeOption(F), this._actions = j, this.submenu = !1, this.imageSize = {}, this.uiSize = {}, this._locale = new Pi(this.options.locale), this.theme = new go(this.options.theme), this.eventHandler = {}, this._submenuChangeTransection = !1, this._selectedElement = null, this._mainElement = null, this._editorElementWrap = null, this._editorElement = null, this._menuBarElement = null, this._subMenuElement = null, this._makeUiElement(W), this._setUiSize(), this._initMenuEvent = !1, this._makeSubMenu(), this._attachHistoryEvent(), this._attachZoomEvent(); + } + return de(ce, [{ + key: "destroy", + value: function() { + this._removeUiEvent(), this._destroyAllMenu(), this._selectedElement.innerHTML = "", aa(this); + } + /** + * Set Default Selection for includeUI + * @param {Object} option - imageEditor options + * @returns {Object} - extends selectionStyle option + * @ignore + */ + }, { + key: "setUiDefaultSelectionStyle", + value: function(F) { + return we()({ + applyCropSelectionStyle: !0, + applyGroupSelectionStyle: !0, + selectionStyle: { + cornerStyle: "circle", + cornerSize: 16, + cornerColor: "#fff", + cornerStrokeColor: "#fff", + transparentCorners: !1, + lineWidth: 2, + borderColor: "#fff" + } + }, F); + } + /** + * Change editor size + * @param {Object} resizeInfo - ui & image size info + * @param {Object} [resizeInfo.uiSize] - image size dimension + * @param {string} resizeInfo.uiSize.width - ui width + * @param {string} resizeInfo.uiSize.height - ui height + * @param {Object} [resizeInfo.imageSize] - image size dimension + * @param {Number} resizeInfo.imageSize.oldWidth - old width + * @param {Number} resizeInfo.imageSize.oldHeight - old height + * @param {Number} resizeInfo.imageSize.newWidth - new width + * @param {Number} resizeInfo.imageSize.newHeight - new height + * @example + * // Change the image size and ui size, and change the affected ui state together. + * imageEditor.ui.resizeEditor({ + * imageSize: {oldWidth: 100, oldHeight: 100, newWidth: 700, newHeight: 700}, + * uiSize: {width: 1000, height: 1000} + * }); + * @example + * // Apply the ui state while preserving the previous attribute (for example, if responsive Ui) + * imageEditor.ui.resizeEditor(); + */ + }, { + key: "resizeEditor", + value: function() { + var F = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, j = F.uiSize, L = F.imageSize, $ = L === void 0 ? this.imageSize : L; + $ !== this.imageSize && (this.imageSize = $), j && this._setUiSize(j); + var re = this._getCanvasMaxDimension(), le = re.width, me = re.height, ve = this._editorElement.style, Oe = this.options.menuBarPosition; + ve.height = "".concat(me, "px"), ve.width = "".concat(le, "px"), this._setEditorPosition(Oe), this._editorElementWrap.style.bottom = "0px", this._editorElementWrap.style.top = "0px", this._editorElementWrap.style.left = "0px", this._editorElementWrap.style.width = "100%"; + var je = this._selectedElement.classList; + Oe === "top" && this._selectedElement.offsetWidth < Nh ? je.add("tui-image-editor-top-optimization") : je.remove("tui-image-editor-top-optimization"); + } + /** + * Toggle zoom button status + * @param {string} type - type of zoom button + */ + }, { + key: "toggleZoomButtonStatus", + value: function(F) { + var j = this._buttonElements[F].classList; + j.toggle(Wu), F === Gu.ZOOM_IN ? this._buttonElements[Gu.HAND].classList.remove(Wu) : this._buttonElements[Gu.ZOOM_IN].classList.remove(Wu); + } + /** + * Turn off zoom-in button status + */ + }, { + key: "offZoomInButtonStatus", + value: function() { + var F = this._buttonElements[Gu.ZOOM_IN].classList; + F.remove(Wu); + } + /** + * Change hand button status + * @param {boolean} enabled - status to change + */ + }, { + key: "changeHandButtonStatus", + value: function(F) { + var j = this._buttonElements[Gu.HAND].classList; + j[F ? "add" : "remove"](Wu); + } + /** + * Change help button status + * @param {string} buttonType - target button type + * @param {Boolean} enableStatus - enabled status + * @ignore + */ + }, { + key: "changeHelpButtonEnabled", + value: function(F, j) { + var L = this._buttonElements[F].classList; + L[j ? "add" : "remove"]("enabled"); + } + /** + * Change delete button status + * @param {Object} [options] - Ui setting options + * @param {object} [options.loadImage] - Init default load image + * @param {string} [options.initMenu] - Init start menu + * @param {string} [options.menuBarPosition=bottom] - Let + * @param {boolean} [options.applyCropSelectionStyle=false] - Let + * @param {boolean} [options.usageStatistics=false] - Send statistics ping or not + * @returns {Object} initialize option + * @private + */ + }, { + key: "_initializeOption", + value: function(F) { + return we()({ + loadImage: { + path: "", + name: "" + }, + locale: {}, + menuIconPath: "", + menu: ["resize", "crop", "flip", "rotate", "draw", "shape", "icon", "text", "mask", "filter"], + initMenu: "", + uiSize: { + width: "100%", + height: "100%" + }, + menuBarPosition: "bottom" + }, F); + } + /** + * Set ui container size + * @param {Object} uiSize - ui dimension + * @param {string} uiSize.width - css width property + * @param {string} uiSize.height - css height property + * @private + */ + }, { + key: "_setUiSize", + value: function() { + var F = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.uiSize, j = this._selectedElement.style; + j.width = F.width, j.height = F.height; + } + /** + * Make submenu dom element + * @private + */ + }, { + key: "_makeSubMenu", + value: function() { + var F = this; + Fe()(this.options.menu, function(j) { + var L, $ = Xo[j.replace(/^[a-z]/, function(re) { + return re.toUpperCase(); + })]; + F._makeMenuElement(j), F._buttonElements[j] = F._menuBarElement.querySelector(".tie-btn-".concat(j)), F[j] = new $(F._subMenuElement, { + locale: F._locale, + makeSvgIcon: be()(L = F.theme.makeMenSvgIconSet).call(L, F.theme), + menuBarPosition: F.options.menuBarPosition, + usageStatistics: F.options.usageStatistics + }); + }); + } + /** + * Attach history event + * @private + */ + }, { + key: "_attachHistoryEvent", + value: function() { + var F, j, L; + this.on(Pt.EXECUTE_COMMAND, be()(F = this._addHistory).call(F, this)), this.on(Pt.AFTER_UNDO, be()(j = this._selectPrevHistory).call(j, this)), this.on(Pt.AFTER_REDO, be()(L = this._selectNextHistory).call(L, this)); + } + /** + * Attach zoom event + * @private + */ + }, { + key: "_attachZoomEvent", + value: function() { + var F = this; + this.on(Pt.HAND_STARTED, function() { + F.offZoomInButtonStatus(), F.changeHandButtonStatus(!0); + }), this.on(Pt.HAND_STOPPED, function() { + return F.changeHandButtonStatus(!1); + }); + } + /** + * Make primary ui dom element + * @param {string|HTMLElement} element - Wrapper's element or selector + * @private + */ + }, { + key: "_makeUiElement", + value: function(F) { + var j, L; + F.nodeType ? L = F : L = document.querySelector(F); + var $ = gs(L); + L.classList.add("tui-image-editor-container"), L.innerHTML = jp({ + locale: this._locale, + biImage: this.theme.getStyle("common.bi"), + loadButtonStyle: this.theme.getStyle("loadButton"), + downloadButtonStyle: this.theme.getStyle("downloadButton"), + menuBarPosition: this.options.menuBarPosition + }) + tu({ + locale: this._locale, + biImage: this.theme.getStyle("common.bi"), + commonStyle: this.theme.getStyle("common"), + headerStyle: this.theme.getStyle("header"), + loadButtonStyle: this.theme.getStyle("loadButton"), + downloadButtonStyle: this.theme.getStyle("downloadButton"), + submenuStyle: this.theme.getStyle("submenu") + }), this._selectedElement = L, this._selectedElement.classList.add(this.options.menuBarPosition), this._mainElement = $(".tui-image-editor-main"), this._editorElementWrap = $(".tui-image-editor-wrap"), this._editorElement = $(".tui-image-editor"), this._helpMenuBarElement = $(".tui-image-editor-help-menu"), this._menuBarElement = $(".tui-image-editor-menu"), this._subMenuElement = $(".tui-image-editor-submenu"), this._buttonElements = { + download: this._selectedElement.querySelectorAll(".tui-image-editor-download-btn"), + load: this._selectedElement.querySelectorAll(".tui-image-editor-load-btn") + }, this._addHelpMenus(), this._historyMenu = new Ph(this._buttonElements[Gp], { + locale: this._locale, + makeSvgIcon: be()(j = this.theme.makeMenSvgIconSet).call(j, this.theme) + }), this._activateZoomMenus(); + } + /** + * Activate help menus for zoom. + * @private + */ + }, { + key: "_activateZoomMenus", + value: function() { + var F = this; + Fe()(dn, function(j) { + F.changeHelpButtonEnabled(j, !0); + }); + } + /** + * make array for help menu output, including partitions. + * @returns {Array} + * @private + */ + }, { + key: "_makeHelpMenuWithPartition", + value: function() { + var F; + return pe()(F = []).call(F, ee(dn), [""], ee(an), [""], ee(zn)); + } + /** + * Add help menu + * @private + */ + }, { + key: "_addHelpMenus", + value: function() { + var F = this, j = this._makeHelpMenuWithPartition(); + Fe()(j, function(L) { + L ? (F._makeMenuElement(L, ["normal", "disabled", "hover"], "help"), F._buttonElements[L] = F._helpMenuBarElement.querySelector(".tie-btn-".concat(L))) : F._makeMenuPartitionElement(); + }); + } + /** + * Make menu partition element + * @private + */ + }, { + key: "_makeMenuPartitionElement", + value: function() { + var F = document.createElement("li"), j = document.createElement("div"); + F.className = Lo("item"), j.className = Lo("icpartition"), F.appendChild(j), this._helpMenuBarElement.appendChild(F); + } + /** + * Make menu button element + * @param {string} menuName - menu name + * @param {Array} useIconTypes - Possible values are \['normal', 'active', 'hover', 'disabled'\] + * @param {string} menuType - 'normal' or 'help' + * @private + */ + }, { + key: "_makeMenuElement", + value: function(F) { + var j, L, $ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ["normal", "active", "hover"], re = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "normal", le = document.createElement("li"), me = this.theme.makeMenSvgIconSet($, F); + this._addTooltipAttribute(le, F), le.className = pe()(j = pe()(L = "tie-btn-".concat(F, " ")).call(L, Lo("item"), " ")).call(j, re), le.innerHTML = me, re === "normal" ? this._menuBarElement.appendChild(le) : this._helpMenuBarElement.appendChild(le); + } + /** + * Add help action event + * @private + */ + }, { + key: "_addHelpActionEvent", + value: function() { + var F = this; + Fe()(Lt, function(j) { + F.eventHandler[j] = function(L) { + return F._actions.main[j](L); + }, F._buttonElements[j].addEventListener("click", F.eventHandler[j]); + }); + } + /** + * Remove help action event + * @private + */ + }, { + key: "_removeHelpActionEvent", + value: function() { + var F = this; + Fe()(Lt, function(j) { + F._buttonElements[j].removeEventListener("click", F.eventHandler[j]); + }); + } + /** + * Add history + * @param {Command|string} command - command or command name + */ + }, { + key: "_addHistory", + value: function(F) { + if (!xa(F)) { + var j = typeof F == "string" ? { + name: F + } : oa(F); + this._historyMenu.add(j); + } + } + /** + * Init history + */ + }, { + key: "initHistory", + value: function() { + this._historyMenu.init(); + } + /** + * Clear history + */ + }, { + key: "clearHistory", + value: function() { + this._historyMenu.clear(); + } + /** + * Select prev history + */ + }, { + key: "_selectPrevHistory", + value: function() { + this._historyMenu.prev(); + } + /** + * Select next history + */ + }, { + key: "_selectNextHistory", + value: function() { + this._historyMenu.next(); + } + /** + * Toggle history menu + * @param {object} event - event object + */ + }, { + key: "toggleHistoryMenu", + value: function(F) { + var j = F.target, L = j.closest(".".concat(Lh)); + if (!L) { + var $ = this._buttonElements[Gp].classList; + $.toggle("opened"); + } + } + /** + * Add attribute for menu tooltip + * @param {HTMLElement} element - menu element + * @param {string} tooltipName - tooltipName + * @private + */ + }, { + key: "_addTooltipAttribute", + value: function(F, j) { + F.setAttribute("tooltip-content", this._locale.localize(j.replace(/^[a-z]/g, function(L) { + return L.toUpperCase(); + }))); + } + /** + * Add download event + * @private + */ + }, { + key: "_addDownloadEvent", + value: function() { + var F = this; + this.eventHandler.download = function() { + return F._actions.main.download(); + }, Fe()(this._buttonElements.download, function(j) { + j.addEventListener("click", F.eventHandler.download); + }); + } + }, { + key: "_removeDownloadEvent", + value: function() { + var F = this; + Fe()(this._buttonElements.download, function(j) { + j.removeEventListener("click", F.eventHandler.download); + }); + } + /** + * Add load event + * @private + */ + }, { + key: "_addLoadEvent", + value: function() { + var F = this; + this.eventHandler.loadImage = function(j) { + return F._actions.main.load(j.target.files[0]); + }, Fe()(this._buttonElements.load, function(j) { + j.addEventListener("change", F.eventHandler.loadImage); + }); + } + /** + * Remove load event + * @private + */ + }, { + key: "_removeLoadEvent", + value: function() { + var F = this; + Fe()(this._buttonElements.load, function(j) { + j.removeEventListener("change", F.eventHandler.loadImage); + }); + } + /** + * Add menu event + * @param {string} menuName - menu name + * @private + */ + }, { + key: "_addMainMenuEvent", + value: function(F) { + var j = this; + this.eventHandler[F] = function() { + return j.changeMenu(F); + }, this._buttonElements[F].addEventListener("click", this.eventHandler[F]); + } + /** + * Add menu event + * @param {string} menuName - menu name + * @private + */ + }, { + key: "_addSubMenuEvent", + value: function(F) { + var j = this; + this[F].addEvent(this._actions[F]), this[F].on(Pt.INPUT_BOX_EDITING_STARTED, function() { + return j.fire(Pt.INPUT_BOX_EDITING_STARTED); + }), this[F].on(Pt.INPUT_BOX_EDITING_STOPPED, function() { + return j.fire(Pt.INPUT_BOX_EDITING_STOPPED); + }); + } + /** + * Add menu event + * @private + */ + }, { + key: "_addMenuEvent", + value: function() { + var F = this; + Fe()(this.options.menu, function(j) { + F._addMainMenuEvent(j), F._addSubMenuEvent(j); + }); + } + /** + * Remove menu event + * @private + */ + }, { + key: "_removeMainMenuEvent", + value: function() { + var F = this; + Fe()(this.options.menu, function(j) { + F._buttonElements[j].removeEventListener("click", F.eventHandler[j]), F[j].off(Pt.INPUT_BOX_EDITING_STARTED), F[j].off(Pt.INPUT_BOX_EDITING_STOPPED); + }); + } + /** + * Get editor area element + * @returns {HTMLElement} editor area html element + * @ignore + */ + }, { + key: "getEditorArea", + value: function() { + return this._editorElement; + } + /** + * Add event for menu items + * @ignore + */ + }, { + key: "activeMenuEvent", + value: function() { + this._initMenuEvent || (this._addHelpActionEvent(), this._addDownloadEvent(), this._addMenuEvent(), this._initMenu(), this._historyMenu.addEvent(this._actions.history), this._initMenuEvent = !0); + } + /** + * Remove ui event + * @private + */ + }, { + key: "_removeUiEvent", + value: function() { + this._removeHelpActionEvent(), this._removeDownloadEvent(), this._removeLoadEvent(), this._removeMainMenuEvent(), this._historyMenu.removeEvent(); + } + /** + * Destroy all menu instance + * @private + */ + }, { + key: "_destroyAllMenu", + value: function() { + var F = this; + Fe()(this.options.menu, function(j) { + F[j].destroy(); + }), this._historyMenu.destroy(); + } + /** + * Init canvas + * @ignore + */ + }, { + key: "initCanvas", + value: function() { + var F = this, j = this._getLoadImage(); + j.path && this._actions.main.initLoadImage(j.path, j.name).then(function() { + F.activeMenuEvent(); + }), this._addLoadEvent(); + var L = document.createElement("div"); + L.className = Lo("grid-visual"); + var $ = ` + + + +
        `; + L.innerHTML = $, this._editorContainerElement = this._editorElement.querySelector(".tui-image-editor-canvas-container"), this._editorContainerElement.appendChild(L); + } + /** + * get editor area element + * @returns {Object} load image option + * @private + */ + }, { + key: "_getLoadImage", + value: function() { + return this.options.loadImage; + } + /** + * change menu + * @param {string} menuName - menu name + * @param {boolean} toggle - whether toogle or not + * @param {boolean} discardSelection - discard selection + * @ignore + */ + }, { + key: "changeMenu", + value: function(F) { + var j = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0, L = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0; + this._submenuChangeTransection || (this._submenuChangeTransection = !0, this._changeMenu(F, j, L), this._submenuChangeTransection = !1); + } + /** + * change menu + * @param {string} menuName - menu name + * @param {boolean} toggle - whether toggle or not + * @param {boolean} discardSelection - discard selection + * @private + */ + }, { + key: "_changeMenu", + value: function(F, j, L) { + this.submenu && (this._buttonElements[this.submenu].classList.remove("active"), this._mainElement.classList.remove("tui-image-editor-menu-".concat(this.submenu)), L && this._actions.main.discardSelection(), this._actions.main.changeSelectableAll(!0), this[this.submenu].changeStandbyMode()), this.submenu === F && j ? this.submenu = null : (this._buttonElements[F].classList.add("active"), this._mainElement.classList.add("tui-image-editor-menu-".concat(F)), this.submenu = F, this[this.submenu].changeStartMode()), this.resizeEditor(); + } + /** + * Init menu + * @private + */ + }, { + key: "_initMenu", + value: function() { + if (this.options.initMenu) { + var F = document.createEvent("MouseEvents"); + F.initEvent("click", !0, !1), this._buttonElements[this.options.initMenu].dispatchEvent(F); + } + this.icon && this.icon.registerDefaultIcon(); + } + /** + * Get canvas max Dimension + * @returns {Object} - width & height of editor + * @private + */ + }, { + key: "_getCanvasMaxDimension", + value: function() { + var F = this._editorContainerElement.style, j = F.maxWidth, L = F.maxHeight, $ = la()(j), re = la()(L); + return { + width: $, + height: re + }; + } + /** + * Set editor position + * @param {string} menuBarPosition - top or right or bottom or left + * @private + */ + // eslint-disable-next-line complexity + }, { + key: "_setEditorPosition", + value: function(F) { + var j = this._getCanvasMaxDimension(), L = j.width, $ = j.height, re = this._editorElement.style, le = 0, me = 0; + this.submenu && (F === "bottom" ? $ > this._editorElementWrap.scrollHeight - 150 ? le = ($ - this._editorElementWrap.scrollHeight) / 2 : le = 150 / 2 * -1 : F === "top" ? $ > this._editorElementWrap.offsetHeight - 150 ? le = 150 / 2 - ($ - (this._editorElementWrap.offsetHeight - 150)) / 2 : le = 150 / 2 : F === "left" ? L > this._editorElementWrap.offsetWidth - 248 ? me = 248 / 2 - (L - (this._editorElementWrap.offsetWidth - 248)) / 2 : me = 248 / 2 : F === "right" && (L > this._editorElementWrap.scrollWidth - 248 ? me = (L - this._editorElementWrap.scrollWidth) / 2 : me = 248 / 2 * -1)), re.top = "".concat(le, "px"), re.left = "".concat(me, "px"); + } + }]), ce; + }(); + lt().mixin(Rv); + var Yp = Rv, Ic = a(381), Yu = /* @__PURE__ */ a.n(Ic), Dv = /* @__PURE__ */ function() { + function ce() { + ne(this, ce), this.versionnumber = "1.2.4", this.optionpresets = { + default: { + corsenabled: !1, + ltres: 1, + qtres: 1, + pathomit: 8, + rightangleenhance: !0, + colorsampling: 2, + numberofcolors: 16, + mincolorratio: 0, + colorquantcycles: 3, + layering: 0, + strokewidth: 1, + linefilter: !1, + scale: 1, + roundcoords: 1, + viewbox: !1, + desc: !1, + lcpr: 0, + qcpr: 0, + blurradius: 0, + blurdelta: 20 + }, + posterized1: { + colorsampling: 0, + numberofcolors: 2 + }, + posterized2: { + numberofcolors: 4, + blurradius: 5 + }, + curvy: { + ltres: 0.01, + linefilter: !0, + rightangleenhance: !1 + }, + sharp: { + qtres: 0.01, + linefilter: !1 + }, + detailed: { + pathomit: 0, + roundcoords: 2, + ltres: 0.5, + qtres: 0.5, + numberofcolors: 64 + }, + smoothed: { + blurradius: 5, + blurdelta: 64 + }, + grayscale: { + colorsampling: 0, + colorquantcycles: 1, + numberofcolors: 7 + }, + fixedpalette: { + colorsampling: 0, + colorquantcycles: 1, + numberofcolors: 27 + }, + randomsampling1: { + colorsampling: 1, + numberofcolors: 8 + }, + randomsampling2: { + colorsampling: 1, + numberofcolors: 64 + }, + artistic1: { + colorsampling: 0, + colorquantcycles: 1, + pathomit: 0, + blurradius: 5, + blurdelta: 64, + ltres: 0.01, + linefilter: !0, + numberofcolors: 16, + strokewidth: 2 + }, + artistic2: { + qtres: 0.01, + colorsampling: 0, + colorquantcycles: 1, + numberofcolors: 4, + strokewidth: 0 + }, + artistic3: { + qtres: 10, + ltres: 10, + numberofcolors: 8 + }, + artistic4: { + qtres: 10, + ltres: 10, + numberofcolors: 64, + blurradius: 5, + blurdelta: 256, + strokewidth: 2 + }, + posterized3: { + ltres: 1, + qtres: 1, + pathomit: 20, + rightangleenhance: !0, + colorsampling: 0, + numberofcolors: 3, + mincolorratio: 0, + colorquantcycles: 3, + blurradius: 3, + blurdelta: 20, + strokewidth: 0, + linefilter: !1, + roundcoords: 1, + pal: [{ + r: 0, + g: 0, + b: 100, + a: 255 + }, { + r: 255, + g: 255, + b: 255, + a: 255 + }] + } + }, this.pathscan_combined_lookup = [[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]], [[0, 1, 0, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [0, 2, -1, 0]], [[-1, -1, -1, -1], [-1, -1, -1, -1], [0, 1, 0, -1], [0, 0, 1, 0]], [[0, 0, 1, 0], [-1, -1, -1, -1], [0, 2, -1, 0], [-1, -1, -1, -1]], [[-1, -1, -1, -1], [0, 0, 1, 0], [0, 3, 0, 1], [-1, -1, -1, -1]], [[13, 3, 0, 1], [13, 2, -1, 0], [7, 1, 0, -1], [7, 0, 1, 0]], [[-1, -1, -1, -1], [0, 1, 0, -1], [-1, -1, -1, -1], [0, 3, 0, 1]], [[0, 3, 0, 1], [0, 2, -1, 0], [-1, -1, -1, -1], [-1, -1, -1, -1]], [[0, 3, 0, 1], [0, 2, -1, 0], [-1, -1, -1, -1], [-1, -1, -1, -1]], [[-1, -1, -1, -1], [0, 1, 0, -1], [-1, -1, -1, -1], [0, 3, 0, 1]], [[11, 1, 0, -1], [14, 0, 1, 0], [14, 3, 0, 1], [11, 2, -1, 0]], [[-1, -1, -1, -1], [0, 0, 1, 0], [0, 3, 0, 1], [-1, -1, -1, -1]], [[0, 0, 1, 0], [-1, -1, -1, -1], [0, 2, -1, 0], [-1, -1, -1, -1]], [[-1, -1, -1, -1], [-1, -1, -1, -1], [0, 1, 0, -1], [0, 0, 1, 0]], [[0, 1, 0, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [0, 2, -1, 0]], [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]], this.gks = [[0.27901, 0.44198, 0.27901], [0.135336, 0.228569, 0.272192, 0.228569, 0.135336], [0.086776, 0.136394, 0.178908, 0.195843, 0.178908, 0.136394, 0.086776], [0.063327, 0.093095, 0.122589, 0.144599, 0.152781, 0.144599, 0.122589, 0.093095, 0.063327], [0.049692, 0.069304, 0.089767, 0.107988, 0.120651, 0.125194, 0.120651, 0.107988, 0.089767, 0.069304, 0.049692]], this.specpalette = [{ + r: 0, + g: 0, + b: 0, + a: 255 + }, { + r: 128, + g: 128, + b: 128, + a: 255 + }, { + r: 0, + g: 0, + b: 128, + a: 255 + }, { + r: 64, + g: 64, + b: 128, + a: 255 + }, { + r: 192, + g: 192, + b: 192, + a: 255 + }, { + r: 255, + g: 255, + b: 255, + a: 255 + }, { + r: 128, + g: 128, + b: 192, + a: 255 + }, { + r: 0, + g: 0, + b: 192, + a: 255 + }, { + r: 128, + g: 0, + b: 0, + a: 255 + }, { + r: 128, + g: 64, + b: 64, + a: 255 + }, { + r: 128, + g: 0, + b: 128, + a: 255 + }, { + r: 168, + g: 168, + b: 168, + a: 255 + }, { + r: 192, + g: 128, + b: 128, + a: 255 + }, { + r: 192, + g: 0, + b: 0, + a: 255 + }, { + r: 255, + g: 255, + b: 255, + a: 255 + }, { + r: 0, + g: 128, + b: 0, + a: 255 + }]; + } + return de(ce, [{ + key: "imageToSVG", + value: function(F, j, L) { + var $ = this; + L = this.checkoptions(L), this.loadImage(F, function(re) { + j($.imagedataToSVG($.getImgdata(re), L)); + }, L); + } + }, { + key: "imagedataToSVG", + value: function(F, j) { + j = this.checkoptions(j); + var L = this.imagedataToTracedata(F, j); + return this.getsvgstring(L, j); + } + }, { + key: "imageToTracedata", + value: function(F, j, L) { + var $ = this; + L = this.checkoptions(L), this.loadImage(F, function(re) { + j($.imagedataToTracedata($.getImgdata(re), L)); + }, L); + } + }, { + key: "imagedataToTracedata", + value: function(F, j) { + j = this.checkoptions(j); + var L = this.colorquantization(F, j), $; + if (j.layering === 0) { + $ = { + layers: [], + palette: L.palette, + width: L.array[0].length - 2, + height: L.array.length - 2 + }; + for (var re = 0; re < L.palette.length; re += 1) { + var le = this.batchtracepaths(this.internodes(this.pathscan(this.layeringstep(L, re), j.pathomit), j), j.ltres, j.qtres); + $.layers.push(le); + } + } else { + var me = this.layering(L); + j.layercontainerid && this.drawLayers(me, this.specpalette, j.scale, j.layercontainerid); + var ve = this.batchpathscan(me, j.pathomit), Oe = this.batchinternodes(ve, j); + $ = { + layers: this.batchtracelayers(Oe, j.ltres, j.qtres), + palette: L.palette, + width: F.width, + height: F.height + }; + } + return $; + } + }, { + key: "checkoptions", + value: function(F) { + F = F || {}, typeof F == "string" && (F = F.toLowerCase(), this.optionpresets[F] ? F = this.optionpresets[F] : F = {}); + for (var j = rt()(this.optionpresets.default), L = 0; L < j.length; L += 1) + F.hasOwnProperty(j[L]) || (F[j[L]] = this.optionpresets.default[j[L]]); + return F; + } + }, { + key: "colorquantization", + value: function(F, j) { + var L = [], $ = 0, re, le, me, ve = [], Oe = F.width * F.height, je, pt, vt, It, Et; + for (pt = 0; pt < F.height + 2; pt += 1) + for (L[pt] = [], je = 0; je < F.width + 2; je += 1) + L[pt][je] = -1; + for (j.pal ? Et = j.pal : j.colorsampling === 0 ? Et = this.generatepalette(j.numberofcolors) : j.colorsampling === 1 ? Et = this.samplepalette(j.numberofcolors, F) : Et = this.samplepalette2(j.numberofcolors, F), j.blurradius > 0 && (F = this.blur(F, j.blurradius, j.blurdelta)), It = 0; It < j.colorquantcycles; It += 1) { + if (It > 0) + for (vt = 0; vt < Et.length; vt += 1) + ve[vt].n > 0 && (Et[vt] = { + r: Math.floor(ve[vt].r / ve[vt].n), + g: Math.floor(ve[vt].g / ve[vt].n), + b: Math.floor(ve[vt].b / ve[vt].n), + a: Math.floor(ve[vt].a / ve[vt].n) + }), ve[vt].n / Oe < j.mincolorratio && It < j.colorquantcycles - 1 && (Et[vt] = { + r: Math.floor(Math.random() * 255), + g: Math.floor(Math.random() * 255), + b: Math.floor(Math.random() * 255), + a: Math.floor(Math.random() * 255) + }); + for (je = 0; je < Et.length; je += 1) + ve[je] = { + r: 0, + g: 0, + b: 0, + a: 0, + n: 0 + }; + for (pt = 0; pt < F.height; pt += 1) + for (je = 0; je < F.width; je += 1) { + for ($ = (pt * F.width + je) * 4, me = 0, le = 1024, vt = 0; vt < Et.length; vt += 1) + re = Math.abs(Et[vt].r - F.data[$]) + Math.abs(Et[vt].g - F.data[$ + 1]) + Math.abs(Et[vt].b - F.data[$ + 2]) + Math.abs(Et[vt].a - F.data[$ + 3]), re < le && (le = re, me = vt); + ve[me].r += F.data[$], ve[me].g += F.data[$ + 1], ve[me].b += F.data[$ + 2], ve[me].a += F.data[$ + 3], ve[me].n += 1, L[pt + 1][je + 1] = me; + } + } + return { + array: L, + palette: Et + }; + } + }, { + key: "samplepalette", + value: function(F, j) { + for (var L, $ = [], re = 0; re < F; re += 1) + L = Math.floor(Math.random() * j.data.length / 4) * 4, $.push({ + r: j.data[L], + g: j.data[L + 1], + b: j.data[L + 2], + a: j.data[L + 3] + }); + return $; + } + }, { + key: "samplepalette2", + value: function(F, j) { + for (var L, $ = [], re = Math.ceil(Math.sqrt(F)), le = Math.ceil(F / re), me = j.width / (re + 1), ve = j.height / (le + 1), Oe = 0; Oe < le; Oe += 1) + for (var je = 0; je < re && $.length !== F; je += 1) + L = Math.floor((Oe + 1) * ve * j.width + (je + 1) * me) * 4, $.push({ + r: j.data[L], + g: j.data[L + 1], + b: j.data[L + 2], + a: j.data[L + 3] + }); + return $; + } + }, { + key: "generatepalette", + value: function(F) { + var j = [], L, $, re; + if (F < 8) + for (var le = Math.floor(255 / (F - 1)), me = 0; me < F; me += 1) + j.push({ + r: me * le, + g: me * le, + b: me * le, + a: 255 + }); + else { + var ve = Math.floor(Math.pow(F, 0.3333333333333333)), Oe = Math.floor(255 / (ve - 1)), je = F - ve * ve * ve; + for (L = 0; L < ve; L += 1) + for ($ = 0; $ < ve; $ += 1) + for (re = 0; re < ve; re += 1) + j.push({ + r: L * Oe, + g: $ * Oe, + b: re * Oe, + a: 255 + }); + for (L = 0; L < je; L += 1) + j.push({ + r: Math.floor(Math.random() * 255), + g: Math.floor(Math.random() * 255), + b: Math.floor(Math.random() * 255), + a: Math.floor(Math.random() * 255) + }); + } + return j; + } + }, { + key: "layering", + value: function(F) { + var j = [], L = 0, $ = F.array.length, re = F.array[0].length, le, me, ve, Oe, je, pt, vt, It, Et, Rt, sr; + for (sr = 0; sr < F.palette.length; sr += 1) + for (j[sr] = [], Rt = 0; Rt < $; Rt += 1) + for (j[sr][Rt] = [], Et = 0; Et < re; Et += 1) + j[sr][Rt][Et] = 0; + for (Rt = 1; Rt < $ - 1; Rt += 1) + for (Et = 1; Et < re - 1; Et += 1) + L = F.array[Rt][Et], le = F.array[Rt - 1][Et - 1] === L ? 1 : 0, me = F.array[Rt - 1][Et] === L ? 1 : 0, ve = F.array[Rt - 1][Et + 1] === L ? 1 : 0, Oe = F.array[Rt][Et - 1] === L ? 1 : 0, je = F.array[Rt][Et + 1] === L ? 1 : 0, pt = F.array[Rt + 1][Et - 1] === L ? 1 : 0, vt = F.array[Rt + 1][Et] === L ? 1 : 0, It = F.array[Rt + 1][Et + 1] === L ? 1 : 0, j[L][Rt + 1][Et + 1] = 1 + je * 2 + It * 4 + vt * 8, Oe || (j[L][Rt + 1][Et] = 0 + 2 + vt * 4 + pt * 8), me || (j[L][Rt][Et + 1] = 0 + ve * 2 + je * 4 + 8), le || (j[L][Rt][Et] = 0 + me * 2 + 4 + Oe * 8); + return j; + } + }, { + key: "layeringstep", + value: function(F, j) { + var L = [], $ = F.array.length, re = F.array[0].length, le, me; + for (me = 0; me < $; me += 1) + for (L[me] = [], le = 0; le < re; le += 1) + L[me][le] = 0; + for (me = 1; me < $; me += 1) + for (le = 1; le < re; le += 1) + L[me][le] = (F.array[me - 1][le - 1] === j ? 1 : 0) + (F.array[me - 1][le] === j ? 2 : 0) + (F.array[me][le - 1] === j ? 8 : 0) + (F.array[me][le] === j ? 4 : 0); + return L; + } + }, { + key: "pathscan", + value: function(F, j) { + for (var L = [], $ = 0, re = 0, le = 0, me = 0, ve = F[0].length, Oe = F.length, je = 0, pt = !0, vt = !1, It, Et = 0; Et < Oe; Et += 1) + for (var Rt = 0; Rt < ve; Rt += 1) + if (F[Et][Rt] === 4 || F[Et][Rt] === 11) + for (le = Rt, me = Et, L[$] = {}, L[$].points = [], L[$].boundingbox = [le, me, le, me], L[$].holechildren = [], pt = !1, re = 0, vt = F[Et][Rt] === 11, je = 1; !pt; ) { + if (L[$].points[re] = {}, L[$].points[re].x = le - 1, L[$].points[re].y = me - 1, L[$].points[re].t = F[me][le], le - 1 < L[$].boundingbox[0] && (L[$].boundingbox[0] = le - 1), le - 1 > L[$].boundingbox[2] && (L[$].boundingbox[2] = le - 1), me - 1 < L[$].boundingbox[1] && (L[$].boundingbox[1] = me - 1), me - 1 > L[$].boundingbox[3] && (L[$].boundingbox[3] = me - 1), It = this.pathscan_combined_lookup[F[me][le]][je], F[me][le] = It[0], je = It[1], le += It[2], me += It[3], le - 1 === L[$].points[0].x && me - 1 === L[$].points[0].y) + if (pt = !0, L[$].points.length < j) + L.pop(); + else { + if (L[$].isholepath = !!vt, vt) { + for (var sr = 0, un = [-1, -1, ve + 1, Oe + 1], yn = 0; yn < $; yn++) + !L[yn].isholepath && this.boundingboxincludes(L[yn].boundingbox, L[$].boundingbox) && this.boundingboxincludes(un, L[yn].boundingbox) && (sr = yn, un = L[yn].boundingbox); + L[sr].holechildren.push($); + } + $ += 1; + } + re += 1; + } + return L; + } + }, { + key: "boundingboxincludes", + value: function(F, j) { + return F[0] < j[0] && F[1] < j[1] && F[2] > j[2] && F[3] > j[3]; + } + }, { + key: "batchpathscan", + value: function(F, j) { + var L = []; + for (var $ in F) + F.hasOwnProperty($) && (L[$] = this.pathscan(F[$], j)); + return L; + } + }, { + key: "internodes", + value: function(F, j) { + var L = [], $ = 0, re = 0, le = 0, me = 0, ve = 0, Oe, je; + for (Oe = 0; Oe < F.length; Oe += 1) + for (L[Oe] = {}, L[Oe].points = [], L[Oe].boundingbox = F[Oe].boundingbox, L[Oe].holechildren = F[Oe].holechildren, L[Oe].isholepath = F[Oe].isholepath, $ = F[Oe].points.length, je = 0; je < $; je += 1) + re = (je + 1) % $, le = (je + 2) % $, me = (je - 1 + $) % $, ve = (je - 2 + $) % $, j.rightangleenhance && this.testrightangle(F[Oe], ve, me, je, re, le) && (L[Oe].points.length > 0 && (L[Oe].points[L[Oe].points.length - 1].linesegment = this.getdirection(L[Oe].points[L[Oe].points.length - 1].x, L[Oe].points[L[Oe].points.length - 1].y, F[Oe].points[je].x, F[Oe].points[je].y)), L[Oe].points.push({ + x: F[Oe].points[je].x, + y: F[Oe].points[je].y, + linesegment: this.getdirection(F[Oe].points[je].x, F[Oe].points[je].y, (F[Oe].points[je].x + F[Oe].points[re].x) / 2, (F[Oe].points[je].y + F[Oe].points[re].y) / 2) + })), L[Oe].points.push({ + x: (F[Oe].points[je].x + F[Oe].points[re].x) / 2, + y: (F[Oe].points[je].y + F[Oe].points[re].y) / 2, + linesegment: this.getdirection((F[Oe].points[je].x + F[Oe].points[re].x) / 2, (F[Oe].points[je].y + F[Oe].points[re].y) / 2, (F[Oe].points[re].x + F[Oe].points[le].x) / 2, (F[Oe].points[re].y + F[Oe].points[le].y) / 2) + }); + return L; + } + }, { + key: "testrightangle", + value: function(F, j, L, $, re, le) { + return F.points[$].x === F.points[j].x && F.points[$].x === F.points[L].x && F.points[$].y === F.points[re].y && F.points[$].y === F.points[le].y || F.points[$].y === F.points[j].y && F.points[$].y === F.points[L].y && F.points[$].x === F.points[re].x && F.points[$].x === F.points[le].x; + } + }, { + key: "getdirection", + value: function(F, j, L, $) { + var re = 8; + return F < L ? j < $ ? re = 1 : j > $ ? re = 7 : re = 0 : F > L ? j < $ ? re = 3 : j > $ ? re = 5 : re = 4 : j < $ ? re = 2 : j > $ ? re = 6 : re = 8, re; + } + }, { + key: "batchinternodes", + value: function(F, j) { + var L = []; + for (var $ in F) + F.hasOwnProperty($) && (L[$] = this.internodes(F[$], j)); + return L; + } + }, { + key: "tracepath", + value: function(F, j, L) { + var $ = 0, re, le, me, ve = {}; + for (ve.segments = [], ve.boundingbox = F.boundingbox, ve.holechildren = F.holechildren, ve.isholepath = F.isholepath; $ < F.points.length; ) { + var Oe; + for (re = F.points[$].linesegment, le = -1, me = $ + 1; (F.points[me].linesegment === re || F.points[me].linesegment === le || le === -1) && me < F.points.length - 1; ) + F.points[me].linesegment !== re && le === -1 && (le = F.points[me].linesegment), me += 1; + me === F.points.length - 1 && (me = 0), ve.segments = pe()(Oe = ve.segments).call(Oe, this.fitseq(F, j, L, $, me)), me > 0 ? $ = me : $ = F.points.length; + } + return ve; + } + }, { + key: "fitseq", + value: function(F, j, L, $, re) { + var le; + if (re > F.points.length || re < 0) + return []; + var me = $, ve = 0, Oe = !0, je, pt, vt, It = re - $; + It < 0 && (It += F.points.length); + for (var Et = (F.points[re].x - F.points[$].x) / It, Rt = (F.points[re].y - F.points[$].y) / It, sr = ($ + 1) % F.points.length, un; sr != re; ) + un = sr - $, un < 0 && (un += F.points.length), je = F.points[$].x + Et * un, pt = F.points[$].y + Rt * un, vt = (F.points[sr].x - je) * (F.points[sr].x - je) + (F.points[sr].y - pt) * (F.points[sr].y - pt), vt > j && (Oe = !1), vt > ve && (me = sr, ve = vt), sr = (sr + 1) % F.points.length; + if (Oe) + return [{ + type: "L", + x1: F.points[$].x, + y1: F.points[$].y, + x2: F.points[re].x, + y2: F.points[re].y + }]; + var yn = me; + Oe = !0, ve = 0; + var Kn = (yn - $) / It, xr = (1 - Kn) * (1 - Kn), Aa = 2 * (1 - Kn) * Kn, ol = Kn * Kn, Mc = (xr * F.points[$].x + ol * F.points[re].x - F.points[yn].x) / -Aa, hs = (xr * F.points[$].y + ol * F.points[re].y - F.points[yn].y) / -Aa; + for (sr = $ + 1; sr != re; ) + Kn = (sr - $) / It, xr = (1 - Kn) * (1 - Kn), Aa = 2 * (1 - Kn) * Kn, ol = Kn * Kn, je = xr * F.points[$].x + Aa * Mc + ol * F.points[re].x, pt = xr * F.points[$].y + Aa * hs + ol * F.points[re].y, vt = (F.points[sr].x - je) * (F.points[sr].x - je) + (F.points[sr].y - pt) * (F.points[sr].y - pt), vt > L && (Oe = !1), vt > ve && (me = sr, ve = vt), sr = (sr + 1) % F.points.length; + if (Oe) + return [{ + type: "Q", + x1: F.points[$].x, + y1: F.points[$].y, + x2: Mc, + y2: hs, + x3: F.points[re].x, + y3: F.points[re].y + }]; + var zh = yn; + return pe()(le = this.fitseq(F, j, L, $, zh)).call(le, this.fitseq(F, j, L, zh, re)); + } + }, { + key: "batchtracepaths", + value: function(F, j, L) { + var $ = []; + for (var re in F) + F.hasOwnProperty(re) && $.push(this.tracepath(F[re], j, L)); + return $; + } + }, { + key: "batchtracelayers", + value: function(F, j, L) { + var $ = []; + for (var re in F) + F.hasOwnProperty(re) && ($[re] = this.batchtracepaths(F[re], j, L)); + return $; + } + }, { + key: "roundtodec", + value: function(F, j) { + return Number(F.toFixed(j)); + } + }, { + key: "svgpathstring", + value: function(F, j, L, $) { + var re, le, me = F.layers[j], ve = me[L], Oe = "", je; + if ($.linefilter && ve.segments.length < 3) + return Oe; + if (Oe = pe()(re = "= 0; je--) { + var Mc; + if (Oe += "".concat(xr.segments[je].type, " "), xr.segments[je].hasOwnProperty("x3")) { + var hs; + Oe += pe()(hs = "".concat(xr.segments[je].x2 * $.scale, " ")).call(hs, xr.segments[je].y2 * $.scale, " "); + } + Oe += pe()(Mc = "".concat(xr.segments[je].x1 * $.scale, " ")).call(Mc, xr.segments[je].y1 * $.scale, " "); + } + } else { + if (xr.segments[xr.segments.length - 1].hasOwnProperty("x3")) { + var zh; + Oe += pe()(zh = "M ".concat(this.roundtodec(xr.segments[xr.segments.length - 1].x3 * $.scale), " ")).call(zh, this.roundtodec(xr.segments[xr.segments.length - 1].y3 * $.scale), " "); + } else { + var rp; + Oe += pe()(rp = "M ".concat(this.roundtodec(xr.segments[xr.segments.length - 1].x2 * $.scale), " ")).call(rp, this.roundtodec(xr.segments[xr.segments.length - 1].y2 * $.scale), " "); + } + for (je = xr.segments.length - 1; je >= 0; je--) { + var kc; + if (Oe += "".concat(xr.segments[je].type, " "), xr.segments[je].hasOwnProperty("x3")) { + var Yy; + Oe += pe()(Yy = "".concat(this.roundtodec(xr.segments[je].x2 * $.scale), " ")).call(Yy, this.roundtodec(xr.segments[je].y2 * $.scale), " "); + } + Oe += pe()(kc = "".concat(this.roundtodec(xr.segments[je].x1 * $.scale), " ")).call(kc, this.roundtodec(xr.segments[je].y1 * $.scale), " "); + } + } + Oe += "Z "; + } + if (Oe += '" />', $.lcpr || $.qcpr) { + for (je = 0; je < ve.segments.length; je++) { + if (ve.segments[je].hasOwnProperty("x3") && $.qcpr) { + var hS, fC, hg, dS, fS, pS, gS, pC, gC, vC, Hh, Kv, vS, mC; + Oe += pe()(hS = pe()(fC = pe()(hg = ''), Oe += pe()(dS = pe()(fS = pe()(pS = ''), Oe += pe()(gS = pe()(pC = pe()(gC = pe()(vC = ''), Oe += pe()(Hh = pe()(Kv = pe()(vS = pe()(mC = ''); + } + if (!ve.segments[je].hasOwnProperty("x3") && $.lcpr) { + var yC, _C, SC; + Oe += pe()(yC = pe()(_C = pe()(SC = ''); + } + } + for (var Kn = 0; Kn < ve.holechildren.length; Kn++) { + var xr = me[ve.holechildren[Kn]]; + for (je = 0; je < xr.segments.length; je++) { + if (xr.segments[je].hasOwnProperty("x3") && $.qcpr) { + var mS, th, dg, sx, AO, RO, lx, DO, OO, MO, kO, fg, cx, ux; + Oe += pe()(mS = pe()(th = pe()(dg = ''), Oe += pe()(sx = pe()(AO = pe()(RO = ''), Oe += pe()(lx = pe()(DO = pe()(OO = pe()(MO = ''), Oe += pe()(kO = pe()(fg = pe()(cx = pe()(ux = ''); + } + if (!xr.segments[je].hasOwnProperty("x3") && $.lcpr) { + var PO, Zv, bC; + Oe += pe()(PO = pe()(Zv = pe()(bC = ''); + } + } + } + } + return Oe; + } + }, { + key: "getsvgstring", + value: function(F, j) { + var L, $, re; + j = this.checkoptions(j); + for (var le = F.width * j.scale, me = F.height * j.scale, ve = pe()(L = "'), Oe = 0; Oe < F.layers.length; Oe += 1) + for (var je = 0; je < F.layers[Oe].length; je += 1) + F.layers[Oe][je].isholepath || (ve += this.svgpathstring(F, Oe, je, j)); + return ve += "", ve; + } + }, { + key: "compareNumbers", + value: function(F, j) { + return F - j; + } + }, { + key: "torgbastr", + value: function(F) { + var j, L, $; + return pe()(j = pe()(L = pe()($ = "rgba(".concat(F.r, ",")).call($, F.g, ",")).call(L, F.b, ",")).call(j, F.a, ")"); + } + }, { + key: "tosvgcolorstr", + value: function(F, j) { + var L, $, re, le, me, ve, Oe; + return pe()(L = pe()($ = pe()(re = pe()(le = pe()(me = pe()(ve = pe()(Oe = 'fill="rgb('.concat(F.r, ",")).call(Oe, F.g, ",")).call(ve, F.b, ')" stroke="rgb(')).call(me, F.r, ",")).call(le, F.g, ",")).call(re, F.b, ')" stroke-width="')).call($, j.strokewidth, '" opacity="')).call(L, F.a / 255, '" '); + } + }, { + key: "appendSVGString", + value: function(F, j) { + var L; + j ? (L = document.getElementById(j), L || (L = document.createElement("div"), L.id = j, document.body.appendChild(L))) : (L = document.createElement("div"), document.body.appendChild(L)), L.innerHTML += F; + } + }, { + key: "blur", + value: function(F, j, L) { + var $, re, le, me, ve, Oe, je, pt, vt, It, Et = { + width: F.width, + height: F.height, + data: [] + }; + if (j = Math.floor(j), j < 1) + return F; + j > 5 && (j = 5), L = Math.abs(L), L > 1024 && (L = 1024); + var Rt = this.gks[j - 1]; + for (re = 0; re < F.height; re++) + for ($ = 0; $ < F.width; $++) { + for (Oe = 0, je = 0, pt = 0, vt = 0, It = 0, le = -j; le < j + 1; le++) + $ + le > 0 && $ + le < F.width && (ve = (re * F.width + $ + le) * 4, Oe += F.data[ve] * Rt[le + j], je += F.data[ve + 1] * Rt[le + j], pt += F.data[ve + 2] * Rt[le + j], vt += F.data[ve + 3] * Rt[le + j], It += Rt[le + j]); + ve = (re * F.width + $) * 4, Et.data[ve] = Math.floor(Oe / It), Et.data[ve + 1] = Math.floor(je / It), Et.data[ve + 2] = Math.floor(pt / It), Et.data[ve + 3] = Math.floor(vt / It); + } + var sr = new Uint8ClampedArray(Et.data); + for (re = 0; re < F.height; re++) + for ($ = 0; $ < F.width; $++) { + for (Oe = 0, je = 0, pt = 0, vt = 0, It = 0, le = -j; le < j + 1; le++) + re + le > 0 && re + le < F.height && (ve = ((re + le) * F.width + $) * 4, Oe += sr[ve] * Rt[le + j], je += sr[ve + 1] * Rt[le + j], pt += sr[ve + 2] * Rt[le + j], vt += sr[ve + 3] * Rt[le + j], It += Rt[le + j]); + ve = (re * F.width + $) * 4, Et.data[ve] = Math.floor(Oe / It), Et.data[ve + 1] = Math.floor(je / It), Et.data[ve + 2] = Math.floor(pt / It), Et.data[ve + 3] = Math.floor(vt / It); + } + for (re = 0; re < F.height; re++) + for ($ = 0; $ < F.width; $++) + ve = (re * F.width + $) * 4, me = Math.abs(Et.data[ve] - F.data[ve]) + Math.abs(Et.data[ve + 1] - F.data[ve + 1]) + Math.abs(Et.data[ve + 2] - F.data[ve + 2]) + Math.abs(Et.data[ve + 3] - F.data[ve + 3]), me > L && (Et.data[ve] = F.data[ve], Et.data[ve + 1] = F.data[ve + 1], Et.data[ve + 2] = F.data[ve + 2], Et.data[ve + 3] = F.data[ve + 3]); + return Et; + } + }, { + key: "loadImage", + value: function(F, j, L) { + var $ = new Image(); + L && L.corsenabled && ($.crossOrigin = "Anonymous"), $.src = F, $.onload = function() { + var re = document.createElement("canvas"); + re.width = $.width, re.height = $.height; + var le = re.getContext("2d"); + le.drawImage($, 0, 0), j(re); + }; + } + }, { + key: "getImgdata", + value: function(F) { + var j = F.getContext("2d"); + return j.getImageData(0, 0, F.width, F.height); + } + }, { + key: "drawLayers", + value: function(F, j, L, $) { + L = L || 1; + var re, le, me, ve, Oe, je; + $ ? (je = document.getElementById($), je || (je = document.createElement("div"), je.id = $, document.body.appendChild(je))) : (je = document.createElement("div"), document.body.appendChild(je)); + for (Oe in F) + if (F.hasOwnProperty(Oe)) { + re = F[Oe][0].length, le = F[Oe].length; + var pt = document.createElement("canvas"); + pt.width = re * L, pt.height = le * L; + var vt = pt.getContext("2d"); + for (ve = 0; ve < le; ve += 1) + for (me = 0; me < re; me += 1) + vt.fillStyle = this.torgbastr(j[F[Oe][ve][me] % j.length]), vt.fillRect(me * L, ve * L, L, L); + je.appendChild(pt); + } + } + }], [{ + key: "tracerDefaultOption", + value: function() { + return { + pathomit: 100, + ltres: 0.1, + qtres: 1, + scale: 1, + strokewidth: 5, + viewbox: !1, + linefilter: !0, + desc: !1, + rightangleenhance: !1, + pal: [{ + r: 0, + g: 0, + b: 0, + a: 255 + }, { + r: 255, + g: 255, + b: 255, + a: 255 + }] + }; + } + }]), ce; + }(), $f = { + /** + * Get ui actions + * @returns {Object} actions for ui + * @private + */ + getActions: function() { + return { + main: this._mainAction(), + shape: this._shapeAction(), + crop: this._cropAction(), + resize: this._resizeAction(), + flip: this._flipAction(), + rotate: this._rotateAction(), + text: this._textAction(), + mask: this._maskAction(), + draw: this._drawAction(), + icon: this._iconAction(), + filter: this._filterAction(), + history: this._historyAction() + }; + }, + /** + * Main Action + * @returns {Object} actions for ui main + * @private + */ + _mainAction: function() { + var W = this, F = function() { + W.ui.submenu === "crop" && (W.stopDrawingMode(), W.ui.changeMenu("crop")); + }, j = function(Oe) { + W.ui.submenu === "rotate" && W.ui.rotate.setRangeBarAngle("setAngle", Oe); + }, L = function(Oe) { + W.ui.submenu === "filter" && Yu()(W.ui).setFilterState(Oe); + }, $ = function(Oe) { + return j(Oe), L(Oe), Oe; + }, re = function() { + var Oe = W._graphics.getZoomMode(); + W.stopDrawingMode(), Oe !== fi.ZOOM ? (W.startDrawingMode(Un.ZOOM), W._graphics.startZoomInMode()) : W._graphics.endZoomInMode(); + }, le = function() { + var Oe = W._graphics.getZoomMode(); + W.stopDrawingMode(), Oe !== fi.HAND ? (W.startDrawingMode(Un.ZOOM), W._graphics.startHandMode()) : W._graphics.endHandMode(); + }, me = function() { + Yu()(W.ui) && Yu()(W.ui).initFilterCheckBoxState(); + }; + return we()({ + initLoadImage: function(Oe, je) { + return W.loadImageFromURL(Oe, je).then(function(pt) { + F(), W.ui.initializeImgUrl = Oe, W.ui.resizeEditor({ + imageSize: pt + }), W.clearUndoStack(), W._invoker.fire(Pt.EXECUTE_COMMAND, Bn.LOAD_IMAGE); + }); + }, + undo: function() { + W.isEmptyUndoStack() || (F(), W.deactivateAll(), W.undo().then($)); + }, + redo: function() { + W.isEmptyRedoStack() || (F(), W.deactivateAll(), W.redo().then($)); + }, + reset: function() { + F(), W.loadImageFromURL(W.ui.initializeImgUrl, "resetImage").then(function(Oe) { + F(), me(), W.ui.resizeEditor({ + imageSize: Oe + }), W.clearUndoStack(), W._initHistory(); + }); + }, + delete: function() { + W.ui.changeHelpButtonEnabled("delete", !1), F(), W.removeActiveObject(), W.activeObjectId = null; + }, + deleteAll: function() { + F(), W.clearObjects(), W.ui.changeHelpButtonEnabled("delete", !1), W.ui.changeHelpButtonEnabled("deleteAll", !1); + }, + load: function(Oe) { + Xn() || alert("This browser does not support file-api"), W.ui.initializeImgUrl = Re().createObjectURL(Oe), W.loadImageFromFile(Oe).then(function(je) { + F(), me(), W.clearUndoStack(), W.ui.activeMenuEvent(), W.ui.resizeEditor({ + imageSize: je + }), W._clearHistory(), W._invoker.fire(Pt.EXECUTE_COMMAND, Bn.LOAD_IMAGE); + }).catch(function(je) { + return Ue().reject(je); + }); + }, + download: function() { + var Oe = W.toDataURL(), je = W.getImageName(), pt, vt, It; + Xn() && window.saveAs ? (pt = Bi(Oe), vt = pt.type.split("/")[1], je.split(".").pop() !== vt && (je += ".".concat(vt)), saveAs(pt, je)) : (It = window.open(), It.document.body.innerHTML = "")); + }, + history: function(Oe) { + W.ui.toggleHistoryMenu(Oe); + }, + zoomIn: function() { + W.ui.toggleZoomButtonStatus("zoomIn"), W.deactivateAll(), re(); + }, + zoomOut: function() { + W._graphics.zoomOut(); + }, + hand: function() { + W.ui.offZoomInButtonStatus(), W.ui.toggleZoomButtonStatus("hand"), W.deactivateAll(), le(); + } + }, this._commonAction()); + }, + /** + * Icon Action + * @returns {Object} actions for ui icon + * @private + */ + _iconAction: function() { + var W = this; + return we()({ + changeColor: function(j) { + W.activeObjectId && W.changeIconColor(W.activeObjectId, j); + }, + addIcon: function(j, L) { + W.startDrawingMode("ICON"), W.setDrawingIcon(j, L); + }, + cancelAddIcon: function() { + W.ui.icon.clearIconType(), W.changeSelectableAll(!0), W.changeCursor("default"), W.stopDrawingMode(); + }, + registerDefaultIcons: function(j, L) { + var $ = {}; + $[j] = L, W.registerIcons($); + }, + registerCustomIcon: function(j, L) { + var $ = new Dv(); + $.imageToSVG(j, function(re) { + var le = re.match(/path[^>]*d="([^"]*)"/), me = ct(le, 2), ve = me[1], Oe = {}; + Oe[L.name] = ve, W.registerIcons(Oe), W.addIcon(L.name, { + left: 100, + top: 100 + }); + }, Dv.tracerDefaultOption()); + } + }, this._commonAction()); + }, + /** + * Draw Action + * @returns {Object} actions for ui draw + * @private + */ + _drawAction: function() { + var W = this; + return we()({ + setDrawMode: function(j, L) { + W.stopDrawingMode(), j === "free" ? W.startDrawingMode("FREE_DRAWING", L) : W.startDrawingMode("LINE_DRAWING", L); + }, + setColor: function(j) { + W.setBrush({ + color: j + }); + } + }, this._commonAction()); + }, + /** + * Mask Action + * @returns {Object} actions for ui mask + * @private + */ + _maskAction: function() { + var W = this; + return we()({ + loadImageFromURL: function(j, L) { + return W.loadImageFromURL(W.toDataURL(), "FilterImage").then(function() { + W.addImageObject(j).then(function() { + Re().revokeObjectURL(L); + }), W._invoker.fire(Pt.EXECUTE_COMMAND, Bn.LOAD_MASK_IMAGE); + }); + }, + applyFilter: function() { + W.applyFilter("mask", { + maskObjId: W.activeObjectId + }); + } + }, this._commonAction()); + }, + /** + * Text Action + * @returns {Object} actions for ui text + * @private + */ + _textAction: function() { + var W = this; + return we()({ + changeTextStyle: function(j, L) { + W.activeObjectId && W.changeTextStyle(W.activeObjectId, j, L); + } + }, this._commonAction()); + }, + /** + * Rotate Action + * @returns {Object} actions for ui rotate + * @private + */ + _rotateAction: function() { + var W = this; + return we()({ + rotate: function(j, L) { + W.rotate(j, L), W.ui.resizeEditor(), W.ui.rotate.setRangeBarAngle("rotate", j); + }, + setAngle: function(j, L) { + W.setAngle(j, L), W.ui.resizeEditor(), W.ui.rotate.setRangeBarAngle("setAngle", j); + } + }, this._commonAction()); + }, + /** + * Shape Action + * @returns {Object} actions for ui shape + * @private + */ + _shapeAction: function() { + var W = this; + return we()({ + changeShape: function(j, L) { + W.activeObjectId && W.changeShape(W.activeObjectId, j, L); + }, + setDrawingShape: function(j) { + W.setDrawingShape(j); + } + }, this._commonAction()); + }, + /** + * Crop Action + * @returns {Object} actions for ui crop + * @private + */ + _cropAction: function() { + var W = this; + return we()({ + crop: function() { + var j = W.getCropzoneRect(); + j && !os(j) && W.crop(j).then(function() { + W.stopDrawingMode(), W.ui.resizeEditor(), W.ui.changeMenu("crop"), W._invoker.fire(Pt.EXECUTE_COMMAND, Bn.CROP); + }).catch(function(L) { + return Ue().reject(L); + }); + }, + cancel: function() { + W.stopDrawingMode(), W.ui.changeMenu("crop"); + }, + /* eslint-disable */ + preset: function(j) { + switch (j) { + case "preset-square": + W.setCropzoneRect(1 / 1); + break; + case "preset-3-2": + W.setCropzoneRect(3 / 2); + break; + case "preset-4-3": + W.setCropzoneRect(4 / 3); + break; + case "preset-5-4": + W.setCropzoneRect(5 / 4); + break; + case "preset-7-5": + W.setCropzoneRect(7 / 5); + break; + case "preset-16-9": + W.setCropzoneRect(16 / 9); + break; + default: + W.setCropzoneRect(), W.ui.crop.changeApplyButtonStatus(!1); + break; + } + } + }, this._commonAction()); + }, + /** + * Resize Action + * @returns {Object} actions for ui resize + * @private + */ + _resizeAction: function() { + var W = this; + return we()({ + getCurrentDimensions: function() { + return W._graphics.getCurrentDimensions(); + }, + preview: function(j, L, $) { + var re = W._graphics.getCurrentDimensions(), le = function() { + return re.width / re.height; + }, me = {}; + switch (j) { + case "width": + me.width = L, $ ? me.height = L / le() : me.height = re.height; + break; + case "height": + me.height = L, $ ? me.width = L * le() : me.width = re.width; + break; + default: + me = re; + } + W._graphics.resize(me).then(function() { + W.ui.resizeEditor(); + }), $ && (W.ui.resize.setWidthValue(me.width), W.ui.resize.setHeightValue(me.height)); + }, + lockAspectRatio: function(j, L, $) { + var re = W._graphics.getCurrentDimensions(), le = re.width, me = re.height, ve = le / me; + if (j) + if (le > me) { + var Oe = $ / ve, je = L * ve; + W.ui.resize.setLimit({ + minWidth: je > L ? je : L, + minHeight: L, + maxWidth: $, + maxHeight: Oe < $ ? Oe : $ + }); + } else { + var pt = $ * ve, vt = L / ve; + W.ui.resize.setLimit({ + minWidth: L, + minHeight: vt > L ? vt : L, + maxWidth: pt < $ ? pt : $, + maxHeight: $ + }); + } + else + W.ui.resize.setLimit({ + minWidth: L, + minHeight: L, + maxWidth: $, + maxHeight: $ + }); + }, + resize: function() { + var j = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + j || (j = W._graphics.getCurrentDimensions()), W.resize(j).then(function() { + W._graphics.setOriginalDimensions(j), W.stopDrawingMode(), W.ui.resizeEditor(), W.ui.changeMenu("resize"); + }).catch(function(L) { + return Ue().reject(L); + }); + }, + reset: function() { + var j = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, L = W._graphics.getOriginalDimensions(); + W.ui.resize.setWidthValue(L.width, !0), W.ui.resize.setHeightValue(L.height, !0), W._graphics.resize(L).then(function() { + j || (W.stopDrawingMode(), W.ui.resizeEditor(), W.ui.changeMenu("resize")); + }); + } + }, this._commonAction()); + }, + /** + * Flip Action + * @returns {Object} actions for ui flip + * @private + */ + _flipAction: function() { + var W = this; + return we()({ + flip: function(j) { + return W[j](); + } + }, this._commonAction()); + }, + /** + * Filter Action + * @returns {Object} actions for ui filter + * @private + */ + _filterAction: function() { + var W = this; + return we()({ + applyFilter: function(j, L, $, re) { + j ? W.applyFilter(L, $, re) : W.hasFilter(L) && W.removeFilter(L); + } + }, this._commonAction()); + }, + /** + * Image Editor Event Observer + */ + setReAction: function() { + var W = this; + this.on({ + undoStackChanged: function(j) { + j ? (W.ui.changeHelpButtonEnabled("undo", !0), W.ui.changeHelpButtonEnabled("reset", !0)) : (W.ui.changeHelpButtonEnabled("undo", !1), W.ui.changeHelpButtonEnabled("reset", !1)), W.ui.resizeEditor(); + }, + redoStackChanged: function(j) { + j ? W.ui.changeHelpButtonEnabled("redo", !0) : W.ui.changeHelpButtonEnabled("redo", !1), W.ui.resizeEditor(); + }, + /* eslint-disable complexity */ + objectActivated: function(j) { + var L, $; + W.activeObjectId = j.id, W.ui.changeHelpButtonEnabled("delete", !0), W.ui.changeHelpButtonEnabled("deleteAll", !0), j.type === "cropzone" ? W.ui.crop.changeApplyButtonStatus(!0) : f()(L = ["rect", "circle", "triangle"]).call(L, j.type) > -1 ? (W.stopDrawingMode(), W.ui.submenu !== "shape" && W.ui.changeMenu("shape", !1, !1), W.ui.shape.setShapeStatus({ + strokeColor: j.stroke, + strokeWidth: j.strokeWidth, + fillColor: Ct()(j) + }), W.ui.shape.setMaxStrokeValue(Math.min(j.width, j.height))) : j.type === "path" || j.type === "line" ? W.ui.submenu !== "draw" && (W.ui.changeMenu("draw", !1, !1), W.ui.draw.changeStandbyMode()) : f()($ = ["i-text", "text"]).call($, j.type) > -1 ? (W.ui.submenu !== "text" && W.ui.changeMenu("text", !1, !1), W.ui.text.setTextStyleStateOnAction(j)) : j.type === "icon" && (W.stopDrawingMode(), W.ui.submenu !== "icon" && W.ui.changeMenu("icon", !1, !1), W.ui.icon.setIconPickerColor(Ct()(j))); + }, + /* eslint-enable complexity */ + addText: function(j) { + var L = W.ui.text, $ = L.textColor, re = L.fontSize, le = L.fontStyle, me = L.fontWeight, ve = L.underline, Oe = "Noto Sans"; + W.addText("Double Click", { + position: j.originPosition, + styles: { + fill: $, + fontSize: re, + fontFamily: Oe, + fontStyle: le, + fontWeight: me, + underline: ve + } + }).then(function() { + W.changeCursor("default"); + }); + }, + addObjectAfter: function(j) { + var L; + j.type === "icon" ? W.ui.icon.changeStandbyMode() : f()(L = ["rect", "circle", "triangle"]).call(L, j.type) > -1 && (W.ui.shape.setMaxStrokeValue(Math.min(j.width, j.height)), W.ui.shape.changeStandbyMode()); + }, + objectScaled: function(j) { + var L, $; + if (f()(L = ["i-text", "text"]).call(L, j.type) > -1) + W.ui.text.fontSize = en(j.fontSize); + else if (f()($ = ["rect", "circle", "triangle"]).call($, j.type) >= 0) { + var re = j.width, le = j.height, me = W.ui.shape.getStrokeValue(); + re < me && W.ui.shape.setStrokeValue(re), le < me && W.ui.shape.setStrokeValue(le); + } + }, + selectionCleared: function() { + W.activeObjectId = null, W.ui.submenu === "text" ? W.changeCursor("text") : ic(["draw", "crop", "resize"], W.ui.submenu) || W.stopDrawingMode(); + } + }); + }, + /** + * History Action + * @returns {Object} history actions for ui + * @private + */ + _historyAction: function() { + var W = this; + return { + undo: function(j) { + return W.undo(j); + }, + redo: function(j) { + return W.redo(j); + } + }; + }, + /** + * Common Action + * @returns {Object} common actions for ui + * @private + */ + _commonAction: function() { + var W = this, F, j, L, $, re = Un.TEXT, le = Un.CROPPER, me = Un.SHAPE, ve = Un.ZOOM, Oe = Un.RESIZE; + return { + modeChange: function(pt) { + switch (pt) { + case Yn.TEXT: + W._changeActivateMode(re); + break; + case Yn.CROP: + W.startDrawingMode(le); + break; + case Yn.SHAPE: + W._changeActivateMode(me), W.setDrawingShape(W.ui.shape.type, W.ui.shape.options); + break; + case Yn.ZOOM: + W.startDrawingMode(ve); + break; + case Yn.RESIZE: + W.startDrawingMode(Oe); + break; + } + }, + deactivateAll: be()(F = this.deactivateAll).call(F, this), + changeSelectableAll: be()(j = this.changeSelectableAll).call(j, this), + discardSelection: be()(L = this.discardSelection).call(L, this), + stopDrawingMode: be()($ = this.stopDrawingMode).call($, this) + }; + }, + /** + * Mixin + * @param {ImageEditor} ImageEditor instance + */ + mixin: function(W) { + we()(W.prototype, this); + } + }, Fh = a(602), Ov = /* @__PURE__ */ a.n(Fh), yy = a(5573), Xp = /* @__PURE__ */ a.n(yy), Vf = /* @__PURE__ */ function() { + function ce(W, F) { + ne(this, ce), this.name = W, this.graphics = F; + } + return de(ce, [{ + key: "fire", + value: function() { + for (var F = this.graphics, j = arguments.length, L = new Array(j), $ = 0; $ < j; $++) + L[$] = arguments[$]; + return this.graphics.fire.apply(F, L); + } + /** + * Save image(background) of canvas + * @param {string} name - Name of image + * @param {fabric.Image} oImage - Fabric image instance + */ + }, { + key: "setCanvasImage", + value: function(F, j) { + this.graphics.setCanvasImage(F, j); + } + /** + * Returns canvas element of fabric.Canvas[[lower-canvas]] + * @returns {HTMLCanvasElement} + */ + }, { + key: "getCanvasElement", + value: function() { + return this.graphics.getCanvasElement(); + } + /** + * Get fabric.Canvas instance + * @returns {fabric.Canvas} + */ + }, { + key: "getCanvas", + value: function() { + return this.graphics.getCanvas(); + } + /** + * Get canvasImage (fabric.Image instance) + * @returns {fabric.Image} + */ + }, { + key: "getCanvasImage", + value: function() { + return this.graphics.getCanvasImage(); + } + /** + * Get image name + * @returns {string} + */ + }, { + key: "getImageName", + value: function() { + return this.graphics.getImageName(); + } + /** + * Get image editor + * @returns {ImageEditor} + */ + }, { + key: "getEditor", + value: function() { + return this.graphics.getEditor(); + } + /** + * Return component name + * @returns {string} + */ + }, { + key: "getName", + value: function() { + return this.name; + } + /** + * Set image properties + * @param {Object} setting - Image properties + * @param {boolean} [withRendering] - If true, The changed image will be reflected in the canvas + */ + }, { + key: "setImageProperties", + value: function(F, j) { + this.graphics.setImageProperties(F, j); + } + /** + * Set canvas dimension - css only + * @param {Object} dimension - Canvas css dimension + */ + }, { + key: "setCanvasCssDimension", + value: function(F) { + this.graphics.setCanvasCssDimension(F); + } + /** + * Set canvas dimension - css only + * @param {Object} dimension - Canvas backstore dimension + */ + }, { + key: "setCanvasBackstoreDimension", + value: function(F) { + this.graphics.setCanvasBackstoreDimension(F); + } + /** + * Adjust canvas dimension with scaling image + */ + }, { + key: "adjustCanvasDimension", + value: function() { + this.graphics.adjustCanvasDimension(); + } + }, { + key: "adjustCanvasDimensionBase", + value: function() { + this.graphics.adjustCanvasDimensionBase(); + } + }]), ce; + }(), $l = Vf; + function _y(ce) { + var W = j0(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function j0() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Sy = { + padding: 0, + crossOrigin: "Anonymous" + }, Xu = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = _y(F); + function F(j) { + return ne(this, F), W.call(this, Ht.IMAGE_LOADER, j); + } + return de(F, [{ + key: "load", + value: function(L, $) { + var re = this, le; + if (!L && !$) { + var me = this.getCanvas(); + me.backgroundImage = null, me.renderAll(), le = new (Ue())(function(ve) { + re.setCanvasImage("", null), ve(); + }); + } else + le = this._setBackgroundImage($).then(function(ve) { + return re.setCanvasImage(L, ve), re.adjustCanvasDimension(), ve; + }); + return le; + } + /** + * Set background image + * @param {?(fabric.Image|String)} img fabric.Image instance or URL of an image to set background to + * @returns {Promise} + * @private + */ + }, { + key: "_setBackgroundImage", + value: function(L) { + var $ = this; + return L ? new (Ue())(function(re, le) { + var me = $.getCanvas(); + me.setBackgroundImage(L, function() { + var ve = me.backgroundImage; + ve && ve.getElement() ? re(ve) : le(Dr.loadingImageFailed); + }, Sy); + }) : Ue().reject(Dr.loadImage); + } + }]), F; + }($l), zf = Xu, Hf = "tl", xc = "tr", by = "mt", Wf = "ml", ZE = "mr", Ku = "mb", Tl = "bl", Gf = "br", Bh = [Hf, xc, by, Wf, ZE, Ku, Tl, Gf], Yf = function() { + }; + function Mv(ce) { + return f()(Bh).call(Bh, ce) >= 0; + } + function lu(ce, W) { + return ce > W ? "width" : "height"; + } + var Xf = Ne.fabric.util.createClass( + Ne.fabric.Rect, + /** @lends Cropzone.prototype */ + { + /** + * Constructor + * @param {Object} canvas canvas + * @param {Object} options Options object + * @param {Object} extendsOptions object for extends "options" + * @override + */ + initialize: function(W, F, j) { + F = we()(F, j), F.type = "cropzone", this.callSuper("initialize", F), this._addEventHandler(), this.canvas = W, this.options = F; + }, + canvasEventDelegation: function(W) { + var F, j = "unregistered", L = this.canvasEventTrigger[W] !== Yf; + return L ? j = "registered" : f()(F = [Pt.OBJECT_MOVED, Pt.OBJECT_SCALED]).call(F, W) < 0 && (j = "none"), j; + }, + canvasEventRegister: function(W, F) { + this.canvasEventTrigger[W] = F; + }, + _addEventHandler: function() { + var W, F, j, L, $; + this.canvasEventTrigger = (W = {}, J(W, Pt.OBJECT_MOVED, Yf), J(W, Pt.OBJECT_SCALED, Yf), W), this.on({ + moving: be()(F = this._onMoving).call(F, this), + scaling: be()(j = this._onScaling).call(j, this) + }), Ne.fabric.util.addListener(document, "keydown", be()(L = this._onKeyDown).call(L, this)), Ne.fabric.util.addListener(document, "keyup", be()($ = this._onKeyUp).call($, this)); + }, + _renderCropzone: function(W) { + var F = 7, j = 7, L = this.flipX ? -1 : 1, $ = this.flipY ? -1 : 1, re = L / this.scaleX, le = $ / this.scaleY; + W.scale(re, le), this._fillOuterRect(W, "rgba(0, 0, 0, 0.5)"), this.options.lineWidth ? (this._fillInnerRect(W), this._strokeBorder(W, "rgb(255, 255, 255)", { + lineWidth: this.options.lineWidth + })) : (this._strokeBorder(W, "rgb(0, 0, 0)", { + lineDashWidth: F + }), this._strokeBorder(W, "rgb(255, 255, 255)", { + lineDashWidth: F, + lineDashOffset: j + })), W.scale(1 / re, 1 / le); + }, + /** + * Render Crop-zone + * @private + * @override + */ + _render: function(W) { + this.callSuper("_render", W), this._renderCropzone(W); + }, + /** + * Cropzone-coordinates with outer rectangle + * + * x0 x1 x2 x3 + * y0 +--------------------------+ + * |///////|//////////|///////| // <--- "Outer-rectangle" + * |///////|//////////|///////| + * y1 +-------+----------+-------+ + * |///////| Cropzone |///////| Cropzone is the "Inner-rectangle" + * |///////| (0, 0) |///////| Center point (0, 0) + * y2 +-------+----------+-------+ + * |///////|//////////|///////| + * |///////|//////////|///////| + * y3 +--------------------------+ + * + * @typedef {{x: Array, y: Array}} cropzoneCoordinates + * @ignore + */ + /** + * Fill outer rectangle + * @param {CanvasRenderingContext2D} ctx - Context + * @param {string|CanvasGradient|CanvasPattern} fillStyle - Fill-style + * @private + */ + _fillOuterRect: function(W, F) { + var j = this._getCoordinates(), L = j.x, $ = j.y; + W.save(), W.fillStyle = F, W.beginPath(), W.moveTo(L[0] - 1, $[0] - 1), W.lineTo(L[3] + 1, $[0] - 1), W.lineTo(L[3] + 1, $[3] + 1), W.lineTo(L[0] - 1, $[3] + 1), W.lineTo(L[0] - 1, $[0] - 1), W.closePath(), W.moveTo(L[1], $[1]), W.lineTo(L[1], $[2]), W.lineTo(L[2], $[2]), W.lineTo(L[2], $[1]), W.lineTo(L[1], $[1]), W.closePath(), Ct()(W).call(W), W.restore(); + }, + /** + * Draw Inner grid line + * @param {CanvasRenderingContext2D} ctx - Context + * @private + */ + _fillInnerRect: function(W) { + var F = this._getCoordinates(), j = F.x, L = F.y, $ = this._caculateInnerPosition(j, (j[2] - j[1]) / 3), re = this._caculateInnerPosition(L, (L[2] - L[1]) / 3); + W.save(), W.strokeStyle = "rgba(255, 255, 255, 0.7)", W.lineWidth = this.options.lineWidth, W.beginPath(), W.moveTo($[0], re[1]), W.lineTo($[3], re[1]), W.moveTo($[0], re[2]), W.lineTo($[3], re[2]), W.moveTo($[1], re[0]), W.lineTo($[1], re[3]), W.moveTo($[2], re[0]), W.lineTo($[2], re[3]), W.stroke(), W.closePath(), W.restore(); + }, + /** + * Calculate Inner Position + * @param {Array} outer - outer position + * @param {number} size - interval for calculate + * @returns {Array} - inner position + * @private + */ + _caculateInnerPosition: function(W, F) { + var j = []; + return j[0] = W[1], j[1] = W[1] + F, j[2] = W[1] + F * 2, j[3] = W[2], j; + }, + /** + * Get coordinates + * @returns {cropzoneCoordinates} - {@link cropzoneCoordinates} + * @private + */ + _getCoordinates: function() { + var W, F, j = this.canvas, L = this.width, $ = this.height, re = this.left, le = this.top, me = L / 2, ve = $ / 2, Oe = j.getHeight(), je = j.getWidth(); + return { + x: Ui()(W = [ + -(me + re), + // x0 + -me, + // x1 + me, + // x2 + me + (je - re - L) + // x3 + ]).call(W, Math.ceil), + y: Ui()(F = [ + -(ve + le), + // y0 + -ve, + // y1 + ve, + // y2 + ve + (Oe - le - $) + // y3 + ]).call(F, Math.ceil) + }; + }, + /** + * Stroke border + * @param {CanvasRenderingContext2D} ctx - Context + * @param {string|CanvasGradient|CanvasPattern} strokeStyle - Stroke-style + * @param {number} lineDashWidth - Dash width + * @param {number} [lineDashOffset] - Dash offset + * @param {number} [lineWidth] - line width + * @private + */ + _strokeBorder: function(W, F, j) { + var L = j.lineDashWidth, $ = j.lineDashOffset, re = j.lineWidth, le = this.width / 2, me = this.height / 2; + W.save(), W.strokeStyle = F, W.setLineDash && W.setLineDash([L, L]), $ && (W.lineDashOffset = $), re && (W.lineWidth = re), W.beginPath(), W.moveTo(-le, -me), W.lineTo(le, -me), W.lineTo(le, me), W.lineTo(-le, me), W.lineTo(-le, -me), W.stroke(), W.restore(); + }, + /** + * onMoving event listener + * @private + */ + _onMoving: function() { + var W = this.height, F = this.width, j = this.left, L = this.top, $ = this.canvas.getWidth() - F, re = this.canvas.getHeight() - W; + this.left = Ur(j, 0, $), this.top = Ur(L, 0, re), this.canvasEventTrigger[Pt.OBJECT_MOVED](this); + }, + /** + * onScaling event listener + * @param {{e: MouseEvent}} fEvent - Fabric event + * @private + */ + _onScaling: function(W) { + var F = W.transform.corner, j = this.canvas.getPointer(W.e), L = this._calcScalingSizeFromPointer(j, F); + this.scale(1).set(L), this.canvasEventTrigger[Pt.OBJECT_SCALED](this); + }, + /** + * Calc scaled size from mouse pointer with selected corner + * @param {{x: number, y: number}} pointer - Mouse position + * @param {string} selectedCorner - selected corner type + * @returns {Object} Having left or(and) top or(and) width or(and) height. + * @private + */ + _calcScalingSizeFromPointer: function(W, F) { + var j = Mv(F); + return j && this._resizeCropZone(W, F); + }, + /** + * Align with cropzone ratio + * @param {number} width - cropzone width + * @param {number} height - cropzone height + * @param {number} maxWidth - limit max width + * @param {number} maxHeight - limit max height + * @param {number} scaleTo - cropzone ratio + * @returns {{width: number, height: number}} + * @private + */ + adjustRatioCropzoneSize: function(W) { + var F = W.width, j = W.height, L = W.leftMaker, $ = W.topMaker, re = W.maxWidth, le = W.maxHeight, me = W.scaleTo; + if (F = re ? Ur(F, 1, re) : F, j = le ? Ur(j, 1, le) : j, !this.presetRatio) + return this._withShiftKey && (F > j ? j = F : j > F && (F = j)), { + width: F, + height: j, + left: L(F), + top: $(j) + }; + me === "width" ? j = F / this.presetRatio : F = j * this.presetRatio; + var ve = Math.min(re / F, le / j); + if (ve <= 1) { + var Oe, je = Ui()(Oe = [F, j]).call(Oe, function(vt) { + return vt * ve; + }), pt = ct(je, 2); + F = pt[0], j = pt[1]; + } + return { + width: F, + height: j, + left: L(F), + top: $(j) + }; + }, + /** + * Get dimension last state cropzone + * @returns {{rectTop: number, rectLeft: number, rectWidth: number, rectHeight: number}} + * @private + */ + _getCropzoneRectInfo: function() { + var W = this.canvas, F = W.width, j = W.height, L = this.getBoundingRect(!1, !0), $ = L.top, re = L.left, le = L.width, me = L.height; + return { + rectTop: $, + rectLeft: re, + rectWidth: le, + rectHeight: me, + rectRight: re + le, + rectBottom: $ + me, + canvasWidth: F, + canvasHeight: j + }; + }, + /** + * Calc scaling dimension + * @param {Object} position - Mouse position + * @param {string} corner - corner type + * @returns {{left: number, top: number, width: number, height: number}} + * @private + */ + _resizeCropZone: function(W, F) { + var j = W.x, L = W.y, $ = this._getCropzoneRectInfo(), re = $.rectWidth, le = $.rectHeight, me = $.rectTop, ve = $.rectLeft, Oe = $.rectBottom, je = $.rectRight, pt = $.canvasWidth, vt = $.canvasHeight, It = { + tl: { + width: je - j, + height: Oe - L, + leftMaker: function(Rt) { + return je - Rt; + }, + topMaker: function(Rt) { + return Oe - Rt; + }, + maxWidth: je, + maxHeight: Oe, + scaleTo: lu(ve - j, me - L) + }, + tr: { + width: j - ve, + height: Oe - L, + leftMaker: function() { + return ve; + }, + topMaker: function(Rt) { + return Oe - Rt; + }, + maxWidth: pt - ve, + maxHeight: Oe, + scaleTo: lu(j - je, me - L) + }, + mt: { + width: re, + height: Oe - L, + leftMaker: function() { + return ve; + }, + topMaker: function(Rt) { + return Oe - Rt; + }, + maxWidth: pt - ve, + maxHeight: Oe, + scaleTo: "height" + }, + ml: { + width: je - j, + height: le, + leftMaker: function(Rt) { + return je - Rt; + }, + topMaker: function() { + return me; + }, + maxWidth: je, + maxHeight: vt - me, + scaleTo: "width" + }, + mr: { + width: j - ve, + height: le, + leftMaker: function() { + return ve; + }, + topMaker: function() { + return me; + }, + maxWidth: pt - ve, + maxHeight: vt - me, + scaleTo: "width" + }, + mb: { + width: re, + height: L - me, + leftMaker: function() { + return ve; + }, + topMaker: function() { + return me; + }, + maxWidth: pt - ve, + maxHeight: vt - me, + scaleTo: "height" + }, + bl: { + width: je - j, + height: L - me, + leftMaker: function(Rt) { + return je - Rt; + }, + topMaker: function() { + return me; + }, + maxWidth: je, + maxHeight: vt - me, + scaleTo: lu(ve - j, L - Oe) + }, + br: { + width: j - ve, + height: L - me, + leftMaker: function() { + return ve; + }, + topMaker: function() { + return me; + }, + maxWidth: pt - ve, + maxHeight: vt - me, + scaleTo: lu(j - je, L - Oe) + } + }; + return this.adjustRatioCropzoneSize(It[F]); + }, + /** + * Return the whether this cropzone is valid + * @returns {boolean} + */ + isValid: function() { + return this.left >= 0 && this.top >= 0 && this.width > 0 && this.height > 0; + }, + /** + * Keydown event handler + * @param {{number}} keyCode - Event keyCode + * @private + */ + _onKeyDown: function(W) { + var F = W.keyCode; + F === xn.SHIFT && (this._withShiftKey = !0); + }, + /** + * Keyup event handler + * @param {{number}} keyCode - Event keyCode + * @private + */ + _onKeyUp: function(W) { + var F = W.keyCode; + F === xn.SHIFT && (this._withShiftKey = !1); + } + } + ), Ey = Xf; + function Kp(ce) { + var W = Zp(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Zp() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Uh = 10, qp = { + presetRatio: null, + top: -10, + left: -10, + height: 1, + width: 1 + }, Rd = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Kp(F); + function F(j) { + var L, $, re, le, me, ve; + return ne(this, F), ve = W.call(this, Ht.CROPPER, j), ve._cropzone = null, ve._startX = null, ve._startY = null, ve._withShiftKey = !1, ve._listeners = { + keydown: be()(L = ve._onKeyDown).call(L, mn(ve)), + keyup: be()($ = ve._onKeyUp).call($, mn(ve)), + mousedown: be()(re = ve._onFabricMouseDown).call(re, mn(ve)), + mousemove: be()(le = ve._onFabricMouseMove).call(le, mn(ve)), + mouseup: be()(me = ve._onFabricMouseUp).call(me, mn(ve)) + }, ve; + } + return de(F, [{ + key: "start", + value: function() { + if (!this._cropzone) { + var L = this.getCanvas(); + L.forEachObject(function($) { + $.evented = !1; + }), this._cropzone = new Ey(L, we()({ + left: 0, + top: 0, + width: 0.5, + height: 0.5, + strokeWidth: 0, + // {@link https://github.com/kangax/fabric.js/issues/2860} + cornerSize: 10, + cornerColor: "black", + fill: "transparent" + }, On, this.graphics.cropSelectionStyle)), L.discardActiveObject(), L.add(this._cropzone), L.on("mouse:down", this._listeners.mousedown), L.selection = !1, L.defaultCursor = "crosshair", Ne.fabric.util.addListener(document, "keydown", this._listeners.keydown), Ne.fabric.util.addListener(document, "keyup", this._listeners.keyup); + } + } + /** + * End cropping + */ + }, { + key: "end", + value: function() { + var L = this.getCanvas(), $ = this._cropzone; + $ && (L.remove($), L.selection = !0, L.defaultCursor = "default", L.off("mouse:down", this._listeners.mousedown), L.forEachObject(function(re) { + re.evented = !0; + }), this._cropzone = null, Ne.fabric.util.removeListener(document, "keydown", this._listeners.keydown), Ne.fabric.util.removeListener(document, "keyup", this._listeners.keyup)); + } + /** + * Change cropzone visible + * @param {boolean} visible - cropzone visible state + */ + }, { + key: "changeVisibility", + value: function(L) { + this._cropzone && this._cropzone.set({ + visible: L + }); + } + /** + * onMousedown handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onFabricMouseDown", + value: function(L) { + var $ = this.getCanvas(); + if (!L.target) { + $.selection = !1; + var re = $.getPointer(L.e); + this._startX = re.x, this._startY = re.y, $.on({ + "mouse:move": this._listeners.mousemove, + "mouse:up": this._listeners.mouseup + }); + } + } + /** + * onMousemove handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onFabricMouseMove", + value: function(L) { + var $ = this.getCanvas(), re = $.getPointer(L.e), le = re.x, me = re.y, ve = this._cropzone; + Math.abs(le - this._startX) + Math.abs(me - this._startY) > Uh && ($.remove(ve), ve.set(this._calcRectDimensionFromPoint(le, me, ve.presetRatio)), $.add(ve), $.setActiveObject(ve)); + } + /** + * Get rect dimension setting from Canvas-Mouse-Position(x, y) + * @param {number} x - Canvas-Mouse-Position x + * @param {number} y - Canvas-Mouse-Position Y + * @param {number|null} presetRatio - fixed aspect ratio (width/height) of the cropzone (null if not set) + * @returns {{left: number, top: number, width: number, height: number}} + * @private + */ + }, { + key: "_calcRectDimensionFromPoint", + value: function(L, $) { + var re = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, le = this.getCanvas(), me = le.getWidth(), ve = le.getHeight(), Oe = this._startX, je = this._startY, pt = Ur(L, 0, Oe), vt = Ur($, 0, je), It = Ur(L, Oe, me) - pt, Et = Ur($, je, ve) - vt; + return this._withShiftKey && !re ? (It > Et ? Et = It : Et > It && (It = Et), Oe >= L && (pt = Oe - It), je >= $ && (vt = je - Et)) : re && (Et = It / re, Oe >= L && (pt = Ur(Oe - It, 0, me)), je >= $ && (vt = Ur(je - Et, 0, ve)), vt + Et > ve && (Et = ve - vt, It = Et * re, Oe >= L && (pt = Ur(Oe - It, 0, me)), je >= $ && (vt = Ur(je - Et, 0, ve)))), { + left: pt, + top: vt, + width: It, + height: Et + }; + } + /** + * onMouseup handler in fabric canvas + * @private + */ + }, { + key: "_onFabricMouseUp", + value: function() { + var L = this._cropzone, $ = this._listeners, re = this.getCanvas(); + re.setActiveObject(L), re.off({ + "mouse:move": $.mousemove, + "mouse:up": $.mouseup + }); + } + /** + * Get cropped image data + * @param {Object} cropRect cropzone rect + * @param {Number} cropRect.left left position + * @param {Number} cropRect.top top position + * @param {Number} cropRect.width width + * @param {Number} cropRect.height height + * @returns {?{imageName: string, url: string}} cropped Image data + */ + }, { + key: "getCroppedImageData", + value: function(L) { + var $ = this.getCanvas(), re = $.contains(this._cropzone); + if (!L) + return null; + re && $.remove(this._cropzone); + var le = { + imageName: this.getImageName(), + url: $.toDataURL(L) + }; + return re && $.add(this._cropzone), le; + } + /** + * Get cropped rect + * @returns {Object} rect + */ + }, { + key: "getCropzoneRect", + value: function() { + var L = this._cropzone; + return L.isValid() ? { + left: L.left, + top: L.top, + width: L.width, + height: L.height + } : null; + } + /** + * Set a cropzone square + * @param {number} [presetRatio] - preset ratio + */ + }, { + key: "setCropzoneRect", + value: function(L) { + var $ = this.getCanvas(), re = this._cropzone; + $.discardActiveObject(), $.selection = !1, $.remove(re), re.set(L ? this._getPresetPropertiesForCropSize(L) : qp), $.add(re), $.selection = !0, L && $.setActiveObject(re); + } + /** + * get a cropzone square info + * @param {number} presetRatio - preset ratio + * @returns {{presetRatio: number, left: number, top: number, width: number, height: number}} + * @private + */ + }, { + key: "_getPresetPropertiesForCropSize", + value: function(L) { + var $, re, le = this.getCanvas(), me = le.getWidth(), ve = le.getHeight(), Oe = me >= ve ? me : ve, je = function(xr, Aa) { + return xr > Aa ? Aa / xr : 1; + }, pt = Oe * L, vt = Oe, It = je(pt, me), Et = Ui()($ = [pt, vt]).call($, function(Kn) { + return Kn * It; + }), Rt = ct(Et, 2); + pt = Rt[0], vt = Rt[1]; + var sr = je(vt, ve), un = Ui()(re = [pt, vt]).call(re, function(Kn) { + return nc(Kn * sr); + }), yn = ct(un, 2); + return pt = yn[0], vt = yn[1], { + presetRatio: L, + top: (ve - vt) / 2, + left: (me - pt) / 2, + width: pt, + height: vt + }; + } + /** + * Keydown event handler + * @param {KeyboardEvent} e - Event object + * @private + */ + }, { + key: "_onKeyDown", + value: function(L) { + L.keyCode === xn.SHIFT && (this._withShiftKey = !0); + } + /** + * Keyup event handler + * @param {KeyboardEvent} e - Event object + * @private + */ + }, { + key: "_onKeyUp", + value: function(L) { + L.keyCode === xn.SHIFT && (this._withShiftKey = !1); + } + }]), F; + }($l), Cy = Rd; + function $0(ce) { + var W = kv(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function kv() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Ty = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = $0(F); + function F(j) { + return ne(this, F), W.call(this, Ht.FLIP, j); + } + return de(F, [{ + key: "getCurrentSetting", + value: function() { + var L = this.getCanvasImage(); + return { + flipX: L.flipX, + flipY: L.flipY + }; + } + /** + * Set flipX, flipY + * @param {{flipX: Boolean, flipY: Boolean}} newSetting - Flip setting + * @returns {Promise} + */ + }, { + key: "set", + value: function(L) { + var $ = this.getCurrentSetting(), re = $.flipX !== L.flipX, le = $.flipY !== L.flipY; + return !re && !le ? Ue().reject(Dr.flip) : (we()($, L), this.setImageProperties($, !0), this._invertAngle(re, le), this._flipObjects(re, le), Ue().resolve({ + flipX: $.flipX, + flipY: $.flipY, + angle: this.getCanvasImage().angle + })); + } + /** + * Invert image angle for flip + * @param {boolean} isChangingFlipX - Change flipX + * @param {boolean} isChangingFlipY - Change flipY + */ + }, { + key: "_invertAngle", + value: function(L, $) { + var re = this.getCanvasImage(), le = re.angle; + L && (le *= -1), $ && (le *= -1), re.rotate(la()(le)).setCoords(); + } + /** + * Flip objects + * @param {boolean} isChangingFlipX - Change flipX + * @param {boolean} isChangingFlipY - Change flipY + * @private + */ + }, { + key: "_flipObjects", + value: function(L, $) { + var re = this.getCanvas(); + L && re.forEachObject(function(le) { + le.set({ + angle: la()(le.angle * -1), + // parseFloat for -0 to 0 + flipX: !le.flipX, + left: re.width - le.left + }).setCoords(); + }), $ && re.forEachObject(function(le) { + le.set({ + angle: la()(le.angle * -1), + // parseFloat for -0 to 0 + flipY: !le.flipY, + top: re.height - le.top + }).setCoords(); + }), re.renderAll(); + } + /** + * Reset flip settings + * @returns {Promise} + */ + }, { + key: "reset", + value: function() { + return this.set({ + flipX: !1, + flipY: !1 + }); + } + /** + * Flip x + * @returns {Promise} + */ + }, { + key: "flipX", + value: function() { + var L = this.getCurrentSetting(); + return this.set({ + flipX: !L.flipX, + flipY: L.flipY + }); + } + /** + * Flip y + * @returns {Promise} + */ + }, { + key: "flipY", + value: function() { + var L = this.getCurrentSetting(); + return this.set({ + flipX: L.flipX, + flipY: !L.flipY + }); + } + }]), F; + }($l), cu = Ty; + function V0(ce) { + var W = z0(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function z0() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Jp = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = V0(F); + function F(j) { + return ne(this, F), W.call(this, Ht.ROTATION, j); + } + return de(F, [{ + key: "getCurrentAngle", + value: function() { + return this.getCanvasImage().angle; + } + /** + * Set angle of the image + * + * Do not call "this.setImageProperties" for setting angle directly. + * Before setting angle, The originX,Y of image should be set to center. + * See "http://fabricjs.com/docs/fabric.Object.html#setAngle" + * + * @param {number} angle - Angle value + * @returns {Promise} + */ + }, { + key: "setAngle", + value: function(L) { + var $ = this.getCurrentAngle() % 360; + L %= 360; + var re = this.getCanvasImage(), le = re.getCenterPoint(); + re.set({ + angle: L + }).setCoords(), this.adjustCanvasDimension(); + var me = re.getCenterPoint(); + return this._rotateForEachObject(le, me, L - $), Ue().resolve(L); + } + /** + * Rotate for each object + * @param {fabric.Point} oldImageCenter - Image center point before rotation + * @param {fabric.Point} newImageCenter - Image center point after rotation + * @param {number} angleDiff - Image angle difference after rotation + * @private + */ + }, { + key: "_rotateForEachObject", + value: function(L, $, re) { + var le = this.getCanvas(), me = { + x: L.x - $.x, + y: L.y - $.y + }; + le.forEachObject(function(ve) { + var Oe = ve.getCenterPoint(), je = Ne.fabric.util.degreesToRadians(re), pt = Ne.fabric.util.rotatePoint(Oe, L, je); + ve.set({ + left: pt.x - me.x, + top: pt.y - me.y, + angle: (ve.angle + re) % 360 + }), ve.setCoords(); + }), le.renderAll(); + } + /** + * Rotate the image + * @param {number} additionalAngle - Additional angle + * @returns {Promise} + */ + }, { + key: "rotate", + value: function(L) { + var $ = this.getCurrentAngle(); + return this.setAngle($ + L); + } + }]), F; + }($l), wy = Jp; + function qE(ce) { + var W = Zu(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Zu() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Iy = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = qE(F); + function F(j) { + var L; + return ne(this, F), L = W.call(this, Ht.FREE_DRAWING, j), L.width = 12, L.oColor = new Ne.fabric.Color("rgba(0, 0, 0, 0.5)"), L; + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = this.getCanvas(); + $.isDrawingMode = !0, this.setBrush(L); + } + /** + * Set brush + * @param {{width: ?number, color: ?string}} [setting] - Brush width & color + */ + }, { + key: "setBrush", + value: function(L) { + var $ = this.getCanvas().freeDrawingBrush; + L = L || {}, this.width = L.width || this.width, L.color && (this.oColor = new Ne.fabric.Color(L.color)), $.width = this.width, $.color = this.oColor.toRgba(); + } + /** + * End free drawing mode + */ + }, { + key: "end", + value: function() { + var L = this.getCanvas(); + L.isDrawingMode = !1; + } + }]), F; + }($l), H0 = Iy, xy = 30, Qp = 2.7, uu = 1.7, JE = 180, W0 = Ne.fabric.util.createClass( + Ne.fabric.Line, + /** @lends Convolute.prototype */ + { + /** + * Line type + * @param {String} type + * @default + */ + type: "line", + /** + * Constructor + * @param {Array} [points] Array of points + * @param {Object} [options] Options object + * @override + */ + initialize: function(W) { + var F = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + this.callSuper("initialize", W, F), this.arrowType = F.arrowType; + }, + /** + * Render ArrowLine + * @private + * @override + */ + _render: function(W) { + var F = this.calcLinePoints(), j = F.x1, L = F.y1, $ = F.x2, re = F.y2, le = { + fromX: j, + fromY: L, + toX: $, + toY: re + }; + this.ctx = W, W.lineWidth = this.strokeWidth, this._renderBasicLinePath(le), this._drawDecoratorPath(le), this._renderStroke(W); + }, + /** + * Render Basic line path + * @param {Object} linePosition - line position + * @param {number} option.fromX - line start position x + * @param {number} option.fromY - line start position y + * @param {number} option.toX - line end position x + * @param {number} option.toY - line end position y + * @private + */ + _renderBasicLinePath: function(W) { + var F = W.fromX, j = W.fromY, L = W.toX, $ = W.toY; + this.ctx.beginPath(), this.ctx.moveTo(F, j), this.ctx.lineTo(L, $); + }, + /** + * Render Arrow Head + * @param {Object} linePosition - line position + * @param {number} option.fromX - line start position x + * @param {number} option.fromY - line start position y + * @param {number} option.toX - line end position x + * @param {number} option.toY - line end position y + * @private + */ + _drawDecoratorPath: function(W) { + this._drawDecoratorPathType("head", W), this._drawDecoratorPathType("tail", W); + }, + /** + * Render Arrow Head + * @param {string} type - 'head' or 'tail' + * @param {Object} linePosition - line position + * @param {number} option.fromX - line start position x + * @param {number} option.fromY - line start position y + * @param {number} option.toX - line end position x + * @param {number} option.toY - line end position y + * @private + */ + _drawDecoratorPathType: function(W, F) { + switch (this.arrowType[W]) { + case "triangle": + this._drawTrianglePath(W, F); + break; + case "chevron": + this._drawChevronPath(W, F); + break; + } + }, + /** + * Render Triangle Head + * @param {string} type - 'head' or 'tail' + * @param {Object} linePosition - line position + * @param {number} option.fromX - line start position x + * @param {number} option.fromY - line start position y + * @param {number} option.toX - line end position x + * @param {number} option.toY - line end position y + * @private + */ + _drawTrianglePath: function(W, F) { + var j = this.ctx.lineWidth * uu; + this._drawChevronPath(W, F, j), this.ctx.closePath(); + }, + /** + * Render Chevron Head + * @param {string} type - 'head' or 'tail' + * @param {Object} linePosition - line position + * @param {number} option.fromX - line start position x + * @param {number} option.fromY - line start position y + * @param {number} option.toX - line end position x + * @param {number} option.toY - line end position y + * @param {number} decorateSize - decorate size + * @private + */ + _drawChevronPath: function(W, F, j) { + var L = this, $ = F.fromX, re = F.fromY, le = F.toX, me = F.toY, ve = this.ctx; + j || (j = this.ctx.lineWidth * Qp); + var Oe = W === "head" ? [$, re] : [le, me], je = ct(Oe, 2), pt = je[0], vt = je[1], It = W === "head" ? [le, me] : [$, re], Et = ct(It, 2), Rt = Et[0], sr = Et[1], un = Math.atan2(sr - vt, Rt - pt) * JE / Math.PI, yn = function(xr) { + return L.getRotatePosition(j, xr, { + x: pt, + y: vt + }); + }; + ve.moveTo.apply(ve, ee(yn(un + xy))), ve.lineTo(pt, vt), ve.lineTo.apply(ve, ee(yn(un - xy))); + }, + /** + * return position from change angle. + * @param {number} distance - change distance + * @param {number} angle - change angle + * @param {Object} referencePosition - reference position + * @returns {Array} + * @private + */ + getRotatePosition: function(W, F, j) { + var L = F * Math.PI / JE, $ = j.x, re = j.y; + return [W * Math.cos(L) + $, W * Math.sin(L) + re]; + } + } + ), wl = W0; + function Pv(ce) { + var W = qu(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function qu() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Nv = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Pv(F); + function F(j) { + var L, $, re, le; + return ne(this, F), le = W.call(this, Ht.LINE, j), le._width = 12, le._oColor = new Ne.fabric.Color("rgba(0, 0, 0, 0.5)"), le._listeners = { + mousedown: be()(L = le._onFabricMouseDown).call(L, mn(le)), + mousemove: be()($ = le._onFabricMouseMove).call($, mn(le)), + mouseup: be()(re = le._onFabricMouseUp).call(re, mn(le)) + }, le; + } + return de(F, [{ + key: "setHeadOption", + value: function(L) { + var $ = L.arrowType, re = $ === void 0 ? { + head: null, + tail: null + } : $; + this._arrowType = re; + } + /** + * Start drawing line mode + * @param {{width: ?number, color: ?string}} [setting] - Brush width & color + */ + }, { + key: "start", + value: function() { + var L = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, $ = this.getCanvas(); + $.defaultCursor = "crosshair", $.selection = !1, this.setHeadOption(L), this.setBrush(L), $.forEachObject(function(re) { + re.set({ + evented: !1 + }); + }), $.on({ + "mouse:down": this._listeners.mousedown + }); + } + /** + * Set brush + * @param {{width: ?number, color: ?string}} [setting] - Brush width & color + */ + }, { + key: "setBrush", + value: function(L) { + var $ = this.getCanvas().freeDrawingBrush; + L = L || {}, this._width = L.width || this._width, L.color && (this._oColor = new Ne.fabric.Color(L.color)), $.width = this._width, $.color = this._oColor.toRgba(); + } + /** + * End drawing line mode + */ + }, { + key: "end", + value: function() { + var L = this.getCanvas(); + L.defaultCursor = "default", L.selection = !0, L.forEachObject(function($) { + $.set({ + evented: !0 + }); + }), L.off("mouse:down", this._listeners.mousedown); + } + /** + * Mousedown event handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object + * @private + */ + }, { + key: "_onFabricMouseDown", + value: function(L) { + var $ = this.getCanvas(), re = $.getPointer(L.e), le = re.x, me = re.y, ve = [le, me, le, me]; + this._line = new wl(ve, { + stroke: this._oColor.toRgba(), + strokeWidth: this._width, + arrowType: this._arrowType, + evented: !1 + }), this._line.set(Or.SELECTION_STYLE), $.add(this._line), $.on({ + "mouse:move": this._listeners.mousemove, + "mouse:up": this._listeners.mouseup + }), this.fire(Pt.ADD_OBJECT, this._createLineEventObjectProperties()); + } + /** + * Mousemove event handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object + * @private + */ + }, { + key: "_onFabricMouseMove", + value: function(L) { + var $ = this.getCanvas(), re = $.getPointer(L.e); + this._line.set({ + x2: re.x, + y2: re.y + }), this._line.setCoords(), $.renderAll(); + } + /** + * Mouseup event handler in fabric canvas + * @private + */ + }, { + key: "_onFabricMouseUp", + value: function() { + var L = this.getCanvas(); + this.fire(Pt.OBJECT_ADDED, this._createLineEventObjectProperties()), this._line = null, L.off({ + "mouse:move": this._listeners.mousemove, + "mouse:up": this._listeners.mouseup + }); + } + /** + * create line event object properties + * @returns {Object} properties line object + * @private + */ + }, { + key: "_createLineEventObjectProperties", + value: function() { + var L = this.graphics.createObjectProperties(this._line), $ = this._line, re = $.x1, le = $.x2, me = $.y1, ve = $.y2; + return we()({}, L, { + startPosition: { + x: re, + y: me + }, + endPosition: { + x: le, + y: ve + } + }); + } + }]), F; + }($l), Ju = Nv; + function Ko(ce) { + var W = Lv(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Lv() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Ay = { + fill: "#000000", + left: 0, + top: 0 + }, Ry = { + fill: "#000000", + fontStyle: "normal", + fontWeight: "normal", + textAlign: "tie-text-align-left", + underline: !1 + }, G0 = 500, QE = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Ko(F); + function F(j) { + var L, $, re, le, me, ve; + return ne(this, F), ve = W.call(this, Ht.TEXT, j), ve._defaultStyles = Ay, ve._isSelected = !1, ve._selectedObj = {}, ve._editingObj = {}, ve._listeners = { + mousedown: be()(L = ve._onFabricMouseDown).call(L, mn(ve)), + select: be()($ = ve._onFabricSelect).call($, mn(ve)), + selectClear: be()(re = ve._onFabricSelectClear).call(re, mn(ve)), + scaling: be()(le = ve._onFabricScaling).call(le, mn(ve)), + textChanged: be()(me = ve._onFabricTextChanged).call(me, mn(ve)) + }, ve._textarea = null, ve._ratio = 1, ve._lastClickTime = (/* @__PURE__ */ new Date()).getTime(), ve._editingObjInfos = {}, ve.isPrevEditing = !1, ve; + } + return de(F, [{ + key: "start", + value: function() { + var L = this, $ = this.getCanvas(); + $.selection = !1, $.defaultCursor = "text", $.on({ + "mouse:down": this._listeners.mousedown, + "selection:created": this._listeners.select, + "selection:updated": this._listeners.select, + "before:selection:cleared": this._listeners.selectClear, + "object:scaling": this._listeners.scaling, + "text:changed": this._listeners.textChanged + }), $.forEachObject(function(re) { + re.type === "i-text" && L.adjustOriginPosition(re, "start"); + }), this.setCanvasRatio(); + } + /** + * End input text mode + */ + }, { + key: "end", + value: function() { + var L = this, $ = this.getCanvas(); + $.selection = !0, $.defaultCursor = "default", $.forEachObject(function(re) { + re.type === "i-text" && (re.text === "" ? $.remove(re) : L.adjustOriginPosition(re, "end")); + }), $.off({ + "mouse:down": this._listeners.mousedown, + "selection:created": this._listeners.select, + "selection:updated": this._listeners.select, + "before:selection:cleared": this._listeners.selectClear, + "object:selected": this._listeners.select, + "object:scaling": this._listeners.scaling, + "text:changed": this._listeners.textChanged + }); + } + /** + * Adjust the origin position + * @param {fabric.Object} text - text object + * @param {string} editStatus - 'start' or 'end' + */ + }, { + key: "adjustOriginPosition", + value: function(L, $) { + var re = "center", le = "center"; + $ === "start" && (re = "left", le = "top"); + var me = L.getPointByOrigin(re, le), ve = me.x, Oe = me.y; + L.set({ + left: ve, + top: Oe, + originX: re, + originY: le + }), L.setCoords(); + } + /** + * Add new text on canvas image + * @param {string} text - Initial input text + * @param {Object} options - Options for generating text + * @param {Object} [options.styles] Initial styles + * @param {string} [options.styles.fill] Color + * @param {string} [options.styles.fontFamily] Font type for text + * @param {number} [options.styles.fontSize] Size + * @param {string} [options.styles.fontStyle] Type of inclination (normal / italic) + * @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [options.styles.textAlign] Type of text align (left / center / right) + * @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline) + * @param {{x: number, y: number}} [options.position] - Initial position + * @returns {Promise} + */ + }, { + key: "add", + value: function(L, $) { + var re = this; + return new (Ue())(function(le) { + var me, ve = re.getCanvas(), Oe = null, je = Or.SELECTION_STYLE, pt = re._defaultStyles; + re._setInitPos($.position), $.styles && (pt = we()(pt, $.styles)), ls()($.autofocus) || ($.autofocus = !0), Oe = new Ne.fabric.IText(L, pt), je = we()({}, je, { + originX: "left", + originY: "top" + }), Oe.set(je), Oe.on({ + mouseup: be()(me = re._onFabricMouseUp).call(me, re) + }), ve.add(Oe), $.autofocus && (Oe.enterEditing(), Oe.selectAll()), ve.getActiveObject() || ve.setActiveObject(Oe), re.isPrevEditing = !0, le(re.graphics.createObjectProperties(Oe)); + }); + } + /** + * Change text of activate object on canvas image + * @param {Object} activeObj - Current selected text object + * @param {string} text - Changed text + * @returns {Promise} + */ + }, { + key: "change", + value: function(L, $) { + var re = this; + return new (Ue())(function(le) { + L.set("text", $), re.getCanvas().renderAll(), le(); + }); + } + /** + * Set style + * @param {Object} activeObj - Current selected text object + * @param {Object} styleObj - Initial styles + * @param {string} [styleObj.fill] Color + * @param {string} [styleObj.fontFamily] Font type for text + * @param {number} [styleObj.fontSize] Size + * @param {string} [styleObj.fontStyle] Type of inclination (normal / italic) + * @param {string} [styleObj.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [styleObj.textAlign] Type of text align (left / center / right) + * @param {string} [styleObj.textDecoration] Type of line (underline / line-through / overline) + * @returns {Promise} + */ + }, { + key: "setStyle", + value: function(L, $) { + var re = this; + return new (Ue())(function(le) { + Fe()($, function(me, ve) { + L[ve] === me && ve !== "fontSize" && ($[ve] = Ry[ve] || ""); + }, re), "textDecoration" in $ && we()($, re._getTextDecorationAdaptObject($.textDecoration)), L.set($), re.getCanvas().renderAll(), le(); + }); + } + /** + * Get the text + * @param {Object} activeObj - Current selected text object + * @returns {String} text + */ + }, { + key: "getText", + value: function(L) { + return L.text; + } + /** + * Set infos of the current selected object + * @param {fabric.Text} obj - Current selected text object + * @param {boolean} state - State of selecting + */ + }, { + key: "setSelectedInfo", + value: function(L, $) { + this._selectedObj = L, this._isSelected = $; + } + /** + * Whether object is selected or not + * @returns {boolean} State of selecting + */ + }, { + key: "isSelected", + value: function() { + return this._isSelected; + } + /** + * Get current selected text object + * @returns {fabric.Text} Current selected text object + */ + }, { + key: "getSelectedObj", + value: function() { + return this._selectedObj; + } + /** + * Set ratio value of canvas + */ + }, { + key: "setCanvasRatio", + value: function() { + var L = this.getCanvasElement(), $ = _t()(L.style.maxWidth, 10), re = L.width; + this._ratio = re / $; + } + /** + * Get ratio value of canvas + * @returns {number} Ratio value + */ + }, { + key: "getCanvasRatio", + value: function() { + return this._ratio; + } + /** + * Get text decoration adapt object + * @param {string} textDecoration - text decoration option string + * @returns {object} adapt object for override + */ + }, { + key: "_getTextDecorationAdaptObject", + value: function(L) { + return { + underline: L === "underline", + linethrough: L === "line-through", + overline: L === "overline" + }; + } + /** + * Set initial position on canvas image + * @param {{x: number, y: number}} [position] - Selected position + * @private + */ + }, { + key: "_setInitPos", + value: function(L) { + L = L || this.getCanvasImage().getCenterPoint(), this._defaultStyles.left = L.x, this._defaultStyles.top = L.y; + } + /** + * Input event handler + * @private + */ + }, { + key: "_onInput", + value: function() { + var L = this.getCanvasRatio(), $ = this._editingObj, re = this._textarea.style; + re.width = "".concat(Math.ceil($.width / L), "px"), re.height = "".concat(Math.ceil($.height / L), "px"); + } + /** + * Keydown event handler + * @private + */ + }, { + key: "_onKeyDown", + value: function() { + var L = this, $ = this.getCanvasRatio(), re = this._editingObj, le = this._textarea.style; + w()(function() { + re.text(L._textarea.value), le.width = "".concat(Math.ceil(re.width / $), "px"), le.height = "".concat(Math.ceil(re.height / $), "px"); + }, 0); + } + /** + * Blur event handler + * @private + */ + }, { + key: "_onBlur", + value: function() { + var L = this.getCanvasRatio(), $ = this._editingObj, re = this._editingObjInfos, le = this._textarea.value, me = $.width / L - re.width / L, ve = $.height / L - re.height / L; + if (L === 1 && (me /= 2, ve /= 2), this._textarea.style.display = "none", $.set({ + left: re.left + me, + top: re.top + ve + }), le.length) { + this.getCanvas().add($); + var Oe = { + id: Gt($), + type: $.type, + text: le + }; + this.fire(Pt.TEXT_CHANGED, Oe); + } + } + /** + * Scroll event handler + * @private + */ + }, { + key: "_onScroll", + value: function() { + this._textarea.scrollLeft = 0, this._textarea.scrollTop = 0; + } + /** + * Fabric scaling event handler + * @param {fabric.Event} fEvent - Current scaling event on selected object + * @private + */ + }, { + key: "_onFabricScaling", + value: function(L) { + var $ = L.target; + $.fontSize = $.fontSize * $.scaleY, $.scaleX = 1, $.scaleY = 1; + } + /** + * textChanged event handler + * @param {{target: fabric.Object}} props - changed text object + * @private + */ + }, { + key: "_onFabricTextChanged", + value: function(L) { + this.fire(Pt.TEXT_CHANGED, L.target); + } + /** + * onSelectClear handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onFabricSelectClear", + value: function(L) { + var $ = this.getSelectedObj(); + this.isPrevEditing = !0, this.setSelectedInfo(L.target, !1), $ && $.text === "" && this.getCanvas().remove($); + } + /** + * onSelect handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onFabricSelect", + value: function(L) { + this.isPrevEditing = !0, this.setSelectedInfo(L.target, !0); + } + /** + * Fabric 'mousedown' event handler + * @param {fabric.Event} fEvent - Current mousedown event on selected object + * @private + */ + }, { + key: "_onFabricMouseDown", + value: function(L) { + var $ = L.target; + if (!($ && !$.isType("text"))) { + if (this.isPrevEditing) { + this.isPrevEditing = !1; + return; + } + this._fireAddText(L); + } + } + /** + * Fire 'addText' event if object is not selected. + * @param {fabric.Event} fEvent - Current mousedown event on selected object + * @private + */ + }, { + key: "_fireAddText", + value: function(L) { + var $ = L.target, re = L.e || {}, le = this.getCanvas().getPointer(re); + $ || this.fire(Pt.ADD_TEXT, { + originPosition: { + x: le.x, + y: le.y + }, + clientPosition: { + x: re.clientX || 0, + y: re.clientY || 0 + } + }); + } + /** + * Fabric mouseup event handler + * @param {fabric.Event} fEvent - Current mousedown event on selected object + * @private + */ + }, { + key: "_onFabricMouseUp", + value: function(L) { + var $ = L.target, re = (/* @__PURE__ */ new Date()).getTime(); + this._isDoubleClick(re) && !$.isEditing && $.enterEditing(), $.isEditing && this.fire(Pt.TEXT_EDITING), this._lastClickTime = re; + } + /** + * Get state of firing double click event + * @param {Date} newClickTime - Current clicked time + * @returns {boolean} Whether double clicked or not + * @private + */ + }, { + key: "_isDoubleClick", + value: function(L) { + return L - this._lastClickTime < G0; + } + }]), F; + }($l), al = QE; + function cc(ce) { + var W = Fv(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Fv() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Dy = { + arrow: "M 0 90 H 105 V 120 L 160 60 L 105 0 V 30 H 0 Z", + cancel: "M 0 30 L 30 60 L 0 90 L 30 120 L 60 90 L 90 120 L 120 90 L 90 60 L 120 30 L 90 0 L 60 30 L 30 0 Z" + }, Kf = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = cc(F); + function F(j) { + var L, $, re, le; + return ne(this, F), le = W.call(this, Ht.ICON, j), le._oColor = "#000000", le._pathMap = Dy, le._type = null, le._iconColor = null, le._handlers = { + mousedown: be()(L = le._onFabricMouseDown).call(L, mn(le)), + mousemove: be()($ = le._onFabricMouseMove).call($, mn(le)), + mouseup: be()(re = le._onFabricMouseUp).call(re, mn(le)) + }, le; + } + return de(F, [{ + key: "setStates", + value: function(L, $) { + this._type = L, this._iconColor = $; + } + /** + * Start to draw the icon on canvas + * @ignore + */ + }, { + key: "start", + value: function() { + var L = this.getCanvas(); + L.selection = !1, L.on("mouse:down", this._handlers.mousedown); + } + /** + * End to draw the icon on canvas + * @ignore + */ + }, { + key: "end", + value: function() { + var L = this.getCanvas(); + L.selection = !0, L.off({ + "mouse:down": this._handlers.mousedown + }); + } + /** + * Add icon + * @param {string} type - Icon type + * @param {Object} options - Icon options + * @param {string} [options.fill] - Icon foreground color + * @param {string} [options.left] - Icon x position + * @param {string} [options.top] - Icon y position + * @returns {Promise} + */ + }, { + key: "add", + value: function(L, $) { + var re = this; + return new (Ue())(function(le, me) { + var ve = re.getCanvas(), Oe = re._pathMap[L], je = Or.SELECTION_STYLE, pt = Oe ? re._createIcon(Oe) : null; + re._icon = pt, pt || me(Dr.invalidParameters), pt.set(we()({ + type: "icon", + fill: re._oColor + }, je, $, re.graphics.controlStyle)), ve.add(pt).setActiveObject(pt), le(re.graphics.createObjectProperties(pt)); + }); + } + /** + * Register icon paths + * @param {{key: string, value: string}} pathInfos - Path infos + */ + }, { + key: "registerPaths", + value: function(L) { + var $ = this; + Fe()(L, function(re, le) { + $._pathMap[le] = re; + }, this); + } + /** + * Set icon object color + * @param {string} color - Color to set + * @param {fabric.Path}[obj] - Current activated path object + */ + }, { + key: "setColor", + value: function(L, $) { + this._oColor = L, $ && $.get("type") === "icon" && ($.set({ + fill: this._oColor + }), this.getCanvas().renderAll()); + } + /** + * Get icon color + * @param {fabric.Path}[obj] - Current activated path object + * @returns {string} color + */ + }, { + key: "getColor", + value: function(L) { + return Ct()(L); + } + /** + * Create icon object + * @param {string} path - Path value to create icon + * @returns {fabric.Path} Path object + */ + }, { + key: "_createIcon", + value: function(L) { + return new Ne.fabric.Path(L); + } + /** + * MouseDown event handler on canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object + * @private + */ + }, { + key: "_onFabricMouseDown", + value: function(L) { + var $ = this, re = this.getCanvas(); + this._startPoint = re.getPointer(L.e); + var le = this._startPoint, me = le.x, ve = le.y; + this.add(this._type, { + left: me, + top: ve, + fill: this._iconColor + }).then(function() { + $.fire(Pt.ADD_OBJECT, $.graphics.createObjectProperties($._icon)), re.on("mouse:move", $._handlers.mousemove), re.on("mouse:up", $._handlers.mouseup); + }); + } + /** + * MouseMove event handler on canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object + * @private + */ + }, { + key: "_onFabricMouseMove", + value: function(L) { + var $ = this.getCanvas(); + if (this._icon) { + var re = $.getPointer(L.e), le = (re.x - this._startPoint.x) / this._icon.width, me = (re.y - this._startPoint.y) / this._icon.height; + this._icon.set({ + scaleX: Math.abs(le * 2), + scaleY: Math.abs(me * 2) + }), this._icon.setCoords(), $.renderAll(); + } + } + /** + * MouseUp event handler on canvas + * @private + */ + }, { + key: "_onFabricMouseUp", + value: function() { + var L = this.getCanvas(); + this.fire(Pt.OBJECT_ADDED, this.graphics.createObjectProperties(this._icon)), this._icon = null, L.off("mouse:down", this._handlers.mousedown), L.off("mouse:move", this._handlers.mousemove), L.off("mouse:up", this._handlers.mouseup); + } + }]), F; + }($l), Bv = Kf, Y0 = Ne.fabric.util.createClass( + Ne.fabric.Image.filters.BlendImage, + /** @lends Mask.prototype */ + { + /** + * Apply filter to canvas element + * @param {Object} pipelineState - Canvas element to apply filter + * @override + */ + applyTo: function(W) { + if (this.mask) { + var F = W.canvasEl, j = F.width, L = F.height, $ = this._createCanvasOfMask(j, L), re = F.getContext("2d"), le = $.getContext("2d"), me = re.getImageData(0, 0, j, L); + this._drawMask(le, F, re), this._mapData(le, me, j, L), W.imageData = me; + } + }, + /** + * Create canvas of mask image + * @param {number} width - Width of main canvas + * @param {number} height - Height of main canvas + * @returns {HTMLElement} Canvas element + * @private + */ + _createCanvasOfMask: function(W, F) { + var j = Ne.fabric.util.createCanvasElement(); + return j.width = W, j.height = F, j; + }, + /** + * Draw mask image on canvas element + * @param {Object} maskCtx - Context of mask canvas + * @private + */ + _drawMask: function(W) { + var F = this.mask, j = F.getElement(), L = F.angle, $ = F.left, re = F.scaleX, le = F.scaleY, me = F.top; + W.save(), W.translate($, me), W.rotate(L * Math.PI / 180), W.scale(re, le), W.drawImage(j, -j.width / 2, -j.height / 2), W.restore(); + }, + /** + * Map mask image data to source image data + * @param {Object} maskCtx - Context of mask canvas + * @param {Object} imageData - Data of source image + * @param {number} width - Width of main canvas + * @param {number} height - Height of main canvas + * @private + */ + _mapData: function(W, F, j, L) { + for (var $ = F.data, re = F.height, le = F.width, me = $, ve = le * re * 4, Oe = W.getImageData(0, 0, j, L).data, je = 0; je < ve; je += 4) + me[je + 3] = Oe[je]; + } + } + ), X0 = Y0, eC = Ne.fabric.util.createClass( + Ne.fabric.Image.filters.Convolute, + /** @lends Convolute.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Sharpen", + /** + * constructor + * @override + */ + initialize: function() { + this.matrix = [0, -1, 0, -1, 5, -1, 0, -1, 0]; + } + } + ), tC = eC, K0 = Ne.fabric.util.createClass( + Ne.fabric.Image.filters.Convolute, + /** @lends Convolute.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "Emboss", + /** + * constructor + * @override + */ + initialize: function() { + this.matrix = [1, 1, 1, 1, 0.7, -1, -1, -1, -1]; + } + } + ), rC = K0, ms = Ne.fabric.util.createClass( + Ne.fabric.Image.filters.BaseFilter, + /** @lends BaseFilter.prototype */ + { + /** + * Filter type + * @param {String} type + * @default + */ + type: "ColorFilter", + /** + * Constructor + * @member fabric.Image.filters.ColorFilter.prototype + * @param {Object} [options] Options object + * @param {Number} [options.color='#FFFFFF'] Value of color (0...255) + * @param {Number} [options.threshold=45] Value of threshold (0...255) + * @override + */ + initialize: function(W) { + W || (W = {}), this.color = W.color || "#FFFFFF", this.threshold = W.threshold || 45, this.x = W.x || null, this.y = W.y || null; + }, + /** + * Applies filter to canvas element + * @param {Object} canvas Canvas object passed by fabric + */ + // eslint-disable-next-line complexity + applyTo: function(W) { + var F = W.canvasEl, j = F.getContext("2d"), L = j.getImageData(0, 0, F.width, F.height), $ = L.data, re = this.threshold, le = Ne.fabric.Color.sourceFromHex(this.color), me, ve; + for (this.x && this.y && (le = this._getColor(L, this.x, this.y)), me = 0, ve = $.length; me < ve; me += 4) + this._isOutsideThreshold($[me], le[0], re) || this._isOutsideThreshold($[me + 1], le[1], re) || this._isOutsideThreshold($[me + 2], le[2], re) || ($[me] = $[me + 1] = $[me + 2] = $[me + 3] = 0); + j.putImageData(L, 0, 0); + }, + /** + * Check color if it is within threshold + * @param {Number} color1 source color + * @param {Number} color2 filtering color + * @param {Number} threshold threshold + * @returns {boolean} true if within threshold or false + */ + _isOutsideThreshold: function(W, F, j) { + var L = W - F; + return Math.abs(L) > j; + }, + /** + * Get color at (x, y) + * @param {Object} imageData of canvas + * @param {Number} x left position + * @param {Number} y top position + * @returns {Array} color array + */ + _getColor: function(W, F, j) { + var L = [0, 0, 0, 0], $ = W.data, re = W.width, le = 4, me = (re * j + F) * le; + return L[0] = $[me], L[1] = $[me + 1], L[2] = $[me + 2], L[3] = $[me + 3], L; + } + } + ), nC = ms; + function Oy(ce) { + var W = Z0(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Z0() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Io = Ne.fabric.Image.filters; + Io.Mask = X0, Io.Sharpen = tC, Io.Emboss = rC, Io.ColorFilter = nC; + var iC = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Oy(F); + function F(j) { + return ne(this, F), W.call(this, Ht.FILTER, j); + } + return de(F, [{ + key: "add", + value: function(L, $) { + var re = this; + return new (Ue())(function(le, me) { + var ve = re._getSourceImage(), Oe = re.getCanvas(), je = re._getFilter(ve, L); + je || (je = re._createFilter(ve, L, $)), je || me(Dr.invalidParameters), re._changeFilterValues(je, $), re._apply(ve, function() { + Oe.renderAll(), le({ + type: L, + action: "add", + options: $ + }); + }); + }); + } + /** + * Remove filter to source image + * @param {string} type - Filter type + * @returns {Promise} + */ + }, { + key: "remove", + value: function(L) { + var $ = this; + return new (Ue())(function(re, le) { + var me = $._getSourceImage(), ve = $.getCanvas(), Oe = $.getOptions(L); + me.filters.length || le(Dr.unsupportedOperation), $._removeFilter(me, L), $._apply(me, function() { + ve.renderAll(), re({ + type: L, + action: "remove", + options: Oe + }); + }); + }); + } + /** + * Whether this has the filter or not + * @param {string} type - Filter type + * @returns {boolean} true if it has the filter + */ + }, { + key: "hasFilter", + value: function(L) { + return !!this._getFilter(this._getSourceImage(), L); + } + /** + * Get a filter options + * @param {string} type - Filter type + * @returns {Object} filter options or null if there is no that filter + */ + }, { + key: "getOptions", + value: function(L) { + var $ = this._getSourceImage(), re = this._getFilter($, L); + return re ? we()({}, re.options) : null; + } + /** + * Change filter values + * @param {Object} imgFilter object of filter + * @param {Object} options object + * @private + */ + }, { + key: "_changeFilterValues", + value: function(L, $) { + Fe()($, function(re, le) { + Ie()(L[le]) || (L[le] = re); + }), Fe()(L.options, function(re, le) { + Ie()($[le]) || (L.options[le] = $[le]); + }); + } + /** + * Apply filter + * @param {fabric.Image} sourceImg - Source image to apply filter + * @param {function} callback - Executed function after applying filter + * @private + */ + }, { + key: "_apply", + value: function(L, $) { + L.filters.push(); + var re = L.applyFilters(); + re && $(); + } + /** + * Get source image on canvas + * @returns {fabric.Image} Current source image on canvas + * @private + */ + }, { + key: "_getSourceImage", + value: function() { + return this.getCanvasImage(); + } + /** + * Create filter instance + * @param {fabric.Image} sourceImg - Source image to apply filter + * @param {string} type - Filter type + * @param {Object} [options] - Options of filter + * @returns {Object} Fabric object of filter + * @private + */ + }, { + key: "_createFilter", + value: function(L, $, re) { + var le, me = this._getFabricFilterType($), ve = Ne.fabric.Image.filters[me]; + return ve && (le = new ve(re), le.options = re, L.filters.push(le)), le; + } + /** + * Get applied filter instance + * @param {fabric.Image} sourceImg - Source image to apply filter + * @param {string} type - Filter type + * @returns {Object} Fabric object of filter + * @private + */ + }, { + key: "_getFilter", + value: function(L, $) { + var re = null; + if (L) { + var le = this._getFabricFilterType($), me = L.filters.length, ve, Oe; + for (Oe = 0; Oe < me; Oe += 1) + if (ve = L.filters[Oe], ve.type === le) { + re = ve; + break; + } + } + return re; + } + /** + * Remove applied filter instance + * @param {fabric.Image} sourceImg - Source image to apply filter + * @param {string} type - Filter type + * @private + */ + }, { + key: "_removeFilter", + value: function(L, $) { + var re, le = this._getFabricFilterType($); + L.filters = Yu()(re = L.filters).call(re, function(me) { + return me.type !== le; + }); + } + /** + * Change filter class name to fabric's, especially capitalizing first letter + * @param {string} type - Filter type + * @example + * 'grayscale' -> 'Grayscale' + * @returns {string} Fabric filter class name + */ + }, { + key: "_getFabricFilterType", + value: function(L) { + return L.charAt(0).toUpperCase() + S()(L).call(L, 1); + } + }]), F; + }($l), q0 = iC, J0 = a(1801), xo = /* @__PURE__ */ a.n(J0), Q0 = { + pixelate: "blocksize", + blur: "blur" + }, Zf = { + x: "width", + y: "height" + }, Uv = As(Q0), Vl = null; + function hu(ce) { + var W = Rs(ce, "patternSourceCanvas"), F = W.patternSourceCanvas, j = F.getObjects(), L = ct(j, 1), $ = L[0]; + return $; + } + function Dd(ce) { + var W = ce.angle, F = ce.flipX, j = ce.flipY, L = hu(ce), $ = oC(ce), re = $.right, le = $.bottom, me = $.width, ve = $.height, Oe = (me - ce.width) / 2, je = (ve - ce.height) / 2, pt = ce.left - ce.width / 2 - Oe, vt = ce.top - ce.height / 2 - je, It = me / 2 - Oe, Et = ve / 2 - je, Rt = Math.max(me, ve) + Math.max(Oe, je), sr = My({ + shapeObj: ce, + left: It, + top: Et, + width: me, + height: ve, + cropX: pt, + cropY: vt, + flipX: F, + flipY: j, + right: re, + bottom: le + }), un = ct(sr, 4); + It = un[0], Et = un[1], me = un[2], ve = un[3], L.set({ + angle: F === j ? -W : W, + left: It, + top: Et, + width: me, + height: ve, + cropX: pt, + cropY: vt, + flipX: F, + flipY: j + }), Ho(L, { + fillImageMaxSize: Rt + }); + } + function Il(ce) { + var W; + return Ui()(W = ce.filters).call(W, function(F) { + var j = rt()(F), L = ct(j, 1), $ = L[0]; + return J({}, Uv[$], F[$]); + }); + } + function My(ce) { + var W = ce.shapeObj, F = ce.left, j = ce.top, L = ce.width, $ = ce.height, re = ce.cropX, le = ce.cropY, me = ce.flipX, ve = ce.flipY, Oe = ce.right, je = ce.bottom, pt = function(Kn, xr, Aa, ol) { + return uc({ + type: Kn, + outDistance: xr, + shapeObj: W, + flipX: me, + flipY: ve, + left: Aa, + top: ol + }); + }, vt = L, It = $, Et = Py(pt, { + left: F, + top: j, + width: L, + height: $, + cropX: re, + cropY: le + }), Rt = ct(Et, 4); + F = Rt[0], j = Rt[1], L = Rt[2], $ = Rt[3]; + var sr = ky(pt, { + left: F, + top: j, + insideCanvasRealImageWidth: L, + insideCanvasRealImageHeight: $, + right: Oe, + bottom: je, + cropX: re, + cropY: le, + originalWidth: vt, + originalHeight: It + }), un = ct(sr, 4); + return F = un[0], j = un[1], L = un[2], $ = un[3], [F, j, L, $]; + } + function ky(ce, W) { + var F = W.left, j = W.top, L = W.insideCanvasRealImageWidth, $ = W.insideCanvasRealImageHeight, re = W.right, le = W.bottom, me = W.cropX, ve = W.cropY, Oe = W.originalWidth, je = W.originalHeight, pt = L, vt = $, It = Vl, Et = It.width, Rt = It.height; + re > Et && me > 0 && (pt = Oe - Math.abs(re - Et)), le > Rt && ve > 0 && (vt = je - Math.abs(le - Rt)); + var sr = { + x: (L - pt) / 2, + y: ($ - vt) / 2 + }; + return Fe()(["x", "y"], function(un) { + var yn = sr[un]; + if (yn > 0) { + var Kn = ce(un, yn, F, j), xr = ct(Kn, 2); + F = xr[0], j = xr[1]; + } + }), [F, j, pt, vt]; + } + function Py(ce, W) { + var F = W.left, j = W.top, L = W.width, $ = W.height, re = W.cropX, le = W.cropY, me = { + width: L, + height: $ + }; + return Fe()(["x", "y"], function(ve) { + var Oe = ve === "x" ? re : le, je = me[Zf[ve]], pt = Vl[Zf[ve]]; + if (je > pt) { + var vt = (je - pt) / 2; + me[Zf[ve]] = pt; + var It = ce(ve, vt, F, j), Et = ct(It, 2); + F = Et[0], j = Et[1]; + } + if (Oe < 0) { + var Rt = ce(ve, Oe, F, j), sr = ct(Rt, 2); + F = sr[0], j = sr[1]; + } + }), [F, j, me.width, me.height]; + } + function zl(ce, W, F) { + var j = jv(ce), L = qf(j, ce.angle, W); + F.add(L); + var $ = { + fill: new Ne.fabric.Pattern({ + source: F.getElement(), + repeat: "no-repeat" + }) + }; + return Ho($, { + patternSourceCanvas: F + }), $; + } + function eS(ce) { + var W = ce.getObjects(), F = ct(W, 1), j = F[0], L = Rs(j, "fillImageMaxSize"), $ = L.fillImageMaxSize; + $ = Math.max(1, $), ce.setDimensions({ + width: $, + height: $ + }), ce.renderAll(); + } + function eg(ce, W) { + var F = Rs(ce, "patternSourceCanvas"), j = F.patternSourceCanvas, L = j.getObjects(), $ = ct(L, 1), re = $[0], le = Il(re); + j.remove(re); + var me = jv(W, !0), ve = qf(me, W.angle, le); + j.add(ve); + } + function jv(ce) { + var W = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + return (!Vl || W) && (Vl = ce.toCanvasElement()), Vl; + } + function uc(ce) { + var W = ce.type, F = ce.shapeObj, j = ce.outDistance, L = ce.left, $ = ce.top, re = ce.flipX, le = ce.flipY, me = $v(F), ve = [[1, 2], [0, 3], [0, 3], [1, 2]], Oe = rS(W, me, ve), je = aC(W, me, Oe), pt = Oe.startPointIndex, vt = tS({ + outDistance: j, + startPointIndex: pt, + flipX: re, + flipY: le, + reatAngles: je + }); + return [L + vt.left, $ + vt.top]; + } + function tS(ce) { + var W = ce.outDistance, F = ce.startPointIndex, j = ce.flipX, L = ce.flipY, $ = ce.reatAngles, re = W * Math.cos($[0] * Math.PI / 180), le = W * Math.cos($[1] * Math.PI / 180), me = F === 2 || F === 3, ve = { + top: me ? re : le, + left: me ? le : re + }; + return jh(F, j, L) && (ve.left = ve.left * -1), Ac(F, j, L) && (ve.top = ve.top * -1), ve; + } + function rS(ce, W, F) { + var j = 0, L = 0; + Fe()(W, function(me, ve) { + me[ce] < j && (j = me[ce], L = ve); + }); + var $ = ct(F[L], 2), re = $[0], le = $[1]; + return { + startPointIndex: L, + endPointIndex1: re, + endPointIndex2: le + }; + } + function aC(ce, W, F) { + var j, L = F.startPointIndex, $ = F.endPointIndex1, re = F.endPointIndex2, le = ce === "x" ? 180 : 270; + return Ui()(j = [$, re]).call(j, function(me) { + var ve = W[L], Oe = W[me], je = ve.y - Oe.y, pt = ve.x - Oe.x; + return Math.atan2(je, pt) * 180 / Math.PI - le; + }); + } + function jh(ce, W, F) { + return (!W && F || !W && !F) && ce === 0 || (W && F || W && !F) && ce === 1 || (!W && !F || !W && F) && ce === 2 || (W && !F || W && F) && ce === 3; + } + function Ac(ce, W, F) { + return (W && !F || !W && !F) && ce === 0 || (!W && !F || W && !F) && ce === 1 || (W && F || !W && F) && ce === 2 || (!W && F || W && F) && ce === 3; + } + function $v(ce) { + return [ce.getPointByOrigin("left", "top"), ce.getPointByOrigin("right", "top"), ce.getPointByOrigin("left", "bottom"), ce.getPointByOrigin("right", "bottom")]; + } + function oC(ce) { + var W = $v(ce), F = ct(W, 4), j = F[0], L = j.x, $ = j.y, re = F[1], le = re.x, me = re.y, ve = F[2], Oe = ve.x, je = ve.y, pt = F[3], vt = pt.x, It = pt.y, Et = Math.min(L, le, Oe, vt), Rt = Math.min($, me, je, It), sr = Math.max(L, le, Oe, vt), un = Math.max($, me, je, It); + return { + left: Et, + top: Rt, + right: sr, + bottom: un, + width: sr - Et, + height: un - Rt + }; + } + function qf(ce, W, F) { + var j, L = new Ne.fabric.Image(ce); + return Fe()(we().apply(void 0, pe()(j = [{}]).call(j, ee(F))), function($, re) { + var le = Vu(re), me = new Ne.fabric.Image.filters[le](J({}, Q0[re], $)); + L.filters.push(me); + }), L.applyFilters(), Ho(L, { + originalAngle: W, + fillImageMaxSize: Math.max(L.width, L.height) + }), xo().adjustOriginToCenter(L), L; + } + function Vv(ce) { + var W = sC(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function sC() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var nS = we()({ + strokeWidth: 1, + stroke: "#000000", + fill: "#ffffff", + width: 1, + height: 1, + rx: 0, + ry: 0 + }, wn), iS = "rect", lC = 20, Jf = 20; + function Ny(ce, W, F) { + var j = Ct()(ce), L = vs(Ct()(ce)), $ = j; + j.color && ($ = j.color); + var re = null; + if (L === "filter") { + var le = F(); + re = zl(W, Yu()(j), le); + } else + re = { + fill: $ + }; + return we()({}, ce, re); + } + var Od = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Vv(F); + function F(j) { + var L, $, re, le, me, ve; + return ne(this, F), ve = W.call(this, Ht.SHAPE, j), ve._shapeObj = null, ve._type = iS, ve._options = we()({}, nS), ve._isSelected = !1, ve._startPoint = {}, ve._withShiftKey = !1, ve._handlers = { + mousedown: be()(L = ve._onFabricMouseDown).call(L, mn(ve)), + mousemove: be()($ = ve._onFabricMouseMove).call($, mn(ve)), + mouseup: be()(re = ve._onFabricMouseUp).call(re, mn(ve)), + keydown: be()(le = ve._onKeyDown).call(le, mn(ve)), + keyup: be()(me = ve._onKeyUp).call(me, mn(ve)) + }, ve; + } + return de(F, [{ + key: "start", + value: function() { + var L = this.getCanvas(); + this._isSelected = !1, L.defaultCursor = "crosshair", L.selection = !1, L.uniformScaling = !0, L.on({ + "mouse:down": this._handlers.mousedown + }), Ne.fabric.util.addListener(document, "keydown", this._handlers.keydown), Ne.fabric.util.addListener(document, "keyup", this._handlers.keyup); + } + /** + * End to draw the shape on canvas + * @ignore + */ + }, { + key: "end", + value: function() { + var L = this.getCanvas(); + this._isSelected = !1, L.defaultCursor = "default", L.selection = !0, L.uniformScaling = !1, L.off({ + "mouse:down": this._handlers.mousedown + }), Ne.fabric.util.removeListener(document, "keydown", this._handlers.keydown), Ne.fabric.util.removeListener(document, "keyup", this._handlers.keyup); + } + /** + * Set states of the current drawing shape + * @ignore + * @param {string} type - Shape type (ex: 'rect', 'circle') + * @param {Object} [options] - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or + * Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stoke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + */ + }, { + key: "setStates", + value: function(L, $) { + this._type = L, $ && (this._options = we()(this._options, $)); + } + /** + * Add the shape + * @ignore + * @param {string} type - Shape type (ex: 'rect', 'circle') + * @param {Object} options - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - ShapeFillOption or Shape foreground color (ex: '#fff', 'transparent') or ShapeFillOption object + * @param {string} [options.stroke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.isRegular] - Whether scaling shape has 1:1 ratio or not + * @returns {Promise} + */ + }, { + key: "add", + value: function(L, $) { + var re = this; + return new (Ue())(function(le) { + var me = re.getCanvas(), ve = re._extendOptions($), Oe = re._createInstance(L, ve), je = re.graphics.createObjectProperties(Oe); + re._bindEventOnShape(Oe), me.add(Oe).setActiveObject(Oe), re._resetPositionFillFilter(Oe), le(je); + }); + } + /** + * Change the shape + * @ignore + * @param {fabric.Object} shapeObj - Selected shape object on canvas + * @param {Object} options - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or + * Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stroke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.isRegular] - Whether scaling shape has 1:1 ratio or not + * @returns {Promise} + */ + }, { + key: "change", + value: function(L, $) { + var re = this; + return new (Ue())(function(le, me) { + oi(L) || me(Dr.unsupportedType); + var ve = vs(Ct()($)) === "filter", Oe = re.graphics, je = Oe.canvasImage, pt = Oe.createStaticCanvas; + L.set(ve ? Ny($, je, pt) : $), ve && re._resetPositionFillFilter(L), re.getCanvas().renderAll(), le(); + }); + } + /** + * make fill property for user event + * @param {fabric.Object} shapeObj - fabric object + * @returns {Object} + */ + }, { + key: "makeFillPropertyForUserEvent", + value: function(L) { + var $ = Ia(L), re = {}; + if ($ === Ot.FILTER) { + var le = hu(L), me = Il(le); + re.type = $, re.filter = me; + } else + re.type = Ot.COLOR, re.color = Ct()(L) || "transparent"; + return re; + } + /** + * Copy object handling. + * @param {fabric.Object} shapeObj - Shape object + * @param {fabric.Object} originalShapeObj - Shape object + */ + }, { + key: "processForCopiedObject", + value: function(L, $) { + if (this._bindEventOnShape(L), Ia(L) === "filter") { + var re = hu($), le = Il(re), me = this.graphics.createStaticCanvas(); + L.set(zl(this.graphics.canvasImage, le, me)), this._resetPositionFillFilter(L); + } + } + /** + * Create the instance of shape + * @param {string} type - Shape type + * @param {Object} options - Options to creat the shape + * @returns {fabric.Object} Shape instance + * @private + */ + }, { + key: "_createInstance", + value: function(L, $) { + var re; + switch (L) { + case "rect": + re = new Ne.fabric.Rect($); + break; + case "circle": + re = new Ne.fabric.Ellipse(we()({ + type: "circle" + }, $)); + break; + case "triangle": + re = new Ne.fabric.Triangle($); + break; + default: + re = {}; + } + return re; + } + /** + * Get the options to create the shape + * @param {Object} options - Options to creat the shape + * @returns {Object} Shape options + * @private + */ + }, { + key: "_extendOptions", + value: function(L) { + var $ = Or.SELECTION_STYLE, re = this.graphics, le = re.canvasImage, me = re.createStaticCanvas; + return L = we()({}, nS, this._options, $, L), Ny(L, le, me); + } + /** + * Bind fabric events on the creating shape object + * @param {fabric.Object} shapeObj - Shape object + * @private + */ + }, { + key: "_bindEventOnShape", + value: function(L) { + var $ = this, re = this.getCanvas(); + L.on({ + added: function() { + $._shapeObj = this, xo().setOrigins($._shapeObj); + }, + selected: function() { + $._isSelected = !0, $._shapeObj = this, re.uniformScaling = !0, re.defaultCursor = "default", xo().setOrigins($._shapeObj); + }, + deselected: function() { + $._isSelected = !1, $._shapeObj = null, re.defaultCursor = "crosshair", re.uniformScaling = !1; + }, + modified: function() { + var me = $._shapeObj; + xo().adjustOriginToCenter(me), xo().setOrigins(me); + }, + modifiedInGroup: function(me) { + $._fillFilterRePositionInGroupSelection(L, me); + }, + moving: function() { + $._resetPositionFillFilter(this); + }, + rotating: function() { + $._resetPositionFillFilter(this); + }, + scaling: function(me) { + var ve = re.getPointer(me.e), Oe = $._shapeObj; + re.setCursor("crosshair"), xo().resize(Oe, ve, !0), $._resetPositionFillFilter(this); + } + }); + } + /** + * MouseDown event handler on canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object + * @private + */ + }, { + key: "_onFabricMouseDown", + value: function(L) { + if (L.target || (this._isSelected = !1, this._shapeObj = !1), !this._isSelected && !this._shapeObj) { + var $ = this.getCanvas(); + this._startPoint = $.getPointer(L.e), $.on({ + "mouse:move": this._handlers.mousemove, + "mouse:up": this._handlers.mouseup + }); + } + } + /** + * MouseDown event handler on canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object + * @private + */ + }, { + key: "_onFabricMouseMove", + value: function(L) { + var $ = this, re = this.getCanvas(), le = re.getPointer(L.e), me = this._startPoint.x, ve = this._startPoint.y, Oe = me - le.x, je = ve - le.y, pt = this._shapeObj; + pt ? (this._shapeObj.set({ + isRegular: this._withShiftKey + }), xo().resize(pt, le), re.renderAll(), this._resetPositionFillFilter(pt)) : this.add(this._type, { + left: me, + top: ve, + width: Oe, + height: je + }).then(function(vt) { + $.fire(Pt.ADD_OBJECT, vt); + }); + } + /** + * MouseUp event handler on canvas + * @private + */ + }, { + key: "_onFabricMouseUp", + value: function() { + var L = this, $ = this.getCanvas(), re = this._startPoint.x, le = this._startPoint.y, me = this._shapeObj; + me ? me && (xo().adjustOriginToCenter(me), this.fire(Pt.OBJECT_ADDED, this.graphics.createObjectProperties(me))) : this.add(this._type, { + left: re, + top: le, + width: lC, + height: Jf + }).then(function(ve) { + L.fire(Pt.ADD_OBJECT, ve); + }), $.off({ + "mouse:move": this._handlers.mousemove, + "mouse:up": this._handlers.mouseup + }); + } + /** + * Keydown event handler on document + * @param {KeyboardEvent} e - Event object + * @private + */ + }, { + key: "_onKeyDown", + value: function(L) { + L.keyCode === xn.SHIFT && (this._withShiftKey = !0, this._shapeObj && (this._shapeObj.isRegular = !0)); + } + /** + * Keyup event handler on document + * @param {KeyboardEvent} e - Event object + * @private + */ + }, { + key: "_onKeyUp", + value: function(L) { + L.keyCode === xn.SHIFT && (this._withShiftKey = !1, this._shapeObj && (this._shapeObj.isRegular = !1)); + } + /** + * Reset shape position and internal proportions in the filter type fill area. + * @param {fabric.Object} shapeObj - Shape object + * @private + */ + }, { + key: "_resetPositionFillFilter", + value: function(L) { + if (Ia(L) === "filter") { + var $ = Rs(L, "patternSourceCanvas"), re = $.patternSourceCanvas, le = hu(L), me = Rs(le, "originalAngle"), ve = me.originalAngle; + this.graphics.canvasImage.angle !== ve && eg(L, this.graphics.canvasImage); + var Oe = L.originX, je = L.originY; + xo().adjustOriginToCenter(L), L.width *= L.scaleX, L.height *= L.scaleY, L.rx *= L.scaleX, L.ry *= L.scaleY, L.scaleX = 1, L.scaleY = 1, Dd(L), Ua(L, { + originX: Oe, + originY: je + }), eS(re); + } + } + /** + * Reset filter area position within group selection. + * @param {fabric.Object} shapeObj - Shape object + * @param {fabric.ActiveSelection} activeSelection - Shape object + * @private + */ + }, { + key: "_fillFilterRePositionInGroupSelection", + value: function(L, $) { + ($.scaleX !== 1 || $.scaleY !== 1) && $.addWithUpdate(); + var re = L.angle, le = L.left, me = L.top; + Ne.fabric.util.addTransformToObject(L, $.calcTransformMatrix()), this._resetPositionFillFilter(L), L.set({ + angle: re, + left: le, + top: me + }); + } + }]), F; + }($l); + function zv(ce) { + var W = aS(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function aS() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var tg = 10, Ly = { + left: 0, + top: 0, + width: 0, + height: 0, + stroke: "#000000", + strokeWidth: 0, + fill: "#000000", + opacity: 0.4, + evented: !1, + selectable: !1, + hoverCursor: "auto" + }, Hv = { + SIZE: 45e-4, + MARGIN: 3e-3, + BORDER_RADIUS: 3e-3 + }, Qu = { + SIZE: 66e-4, + MARGIN: 44e-4, + BORDER_RADIUS: 3e-3 + }, eh = 1, Qf = Pt.ZOOM_CHANGED, Fy = Pt.ADD_TEXT, rg = Pt.TEXT_EDITING, xl = Pt.OBJECT_MODIFIED, ng = Pt.KEY_DOWN, oS = Pt.KEY_UP, sS = Pt.HAND_STARTED, By = Pt.HAND_STOPPED, ep = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = zv(F); + function F(j) { + var L, $, re, le, me, ve, Oe, je, pt, vt, It, Et, Rt; + ne(this, F), Rt = W.call(this, Ht.ZOOM, j), Rt.zoomArea = null, Rt._startPoint = null, Rt._centerPoints = [], Rt.zoomLevel = eh, Rt.zoomMode = fi.DEFAULT, Rt._listeners = { + startZoom: be()(L = Rt._onMouseDownWithZoomMode).call(L, mn(Rt)), + moveZoom: be()($ = Rt._onMouseMoveWithZoomMode).call($, mn(Rt)), + stopZoom: be()(re = Rt._onMouseUpWithZoomMode).call(re, mn(Rt)), + startHand: be()(le = Rt._onMouseDownWithHandMode).call(le, mn(Rt)), + moveHand: be()(me = Rt._onMouseMoveWithHandMode).call(me, mn(Rt)), + stopHand: be()(ve = Rt._onMouseUpWithHandMode).call(ve, mn(Rt)), + zoomChanged: be()(Oe = Rt._changeScrollState).call(Oe, mn(Rt)), + keydown: be()(je = Rt._startHandModeWithSpaceBar).call(je, mn(Rt)), + keyup: be()(pt = Rt._endHandModeWithSpaceBar).call(pt, mn(Rt)) + }; + var sr = Rt.getCanvas(); + return Rt.aspectRatio = sr.width / sr.height, Rt._verticalScroll = new Ne.fabric.Rect(Ly), Rt._horizontalScroll = new Ne.fabric.Rect(Ly), sr.on(Qf, Rt._listeners.zoomChanged), Rt.graphics.on(Fy, be()(vt = Rt._startTextEditingHandler).call(vt, mn(Rt))), Rt.graphics.on(rg, be()(It = Rt._startTextEditingHandler).call(It, mn(Rt))), Rt.graphics.on(xl, be()(Et = Rt._stopTextEditingHandler).call(Et, mn(Rt))), Rt; + } + return de(F, [{ + key: "attachKeyboardZoomEvents", + value: function() { + Ne.fabric.util.addListener(document, ng, this._listeners.keydown), Ne.fabric.util.addListener(document, oS, this._listeners.keyup); + } + /** + * Detach zoom keyboard events + */ + }, { + key: "detachKeyboardZoomEvents", + value: function() { + Ne.fabric.util.removeListener(document, ng, this._listeners.keydown), Ne.fabric.util.removeListener(document, oS, this._listeners.keyup); + } + /** + * Handler when you started editing text + * @private + */ + }, { + key: "_startTextEditingHandler", + value: function() { + this.isTextEditing = !0; + } + /** + * Handler when you stopped editing text + * @private + */ + }, { + key: "_stopTextEditingHandler", + value: function() { + this.isTextEditing = !1; + } + /** + * Handler who turns on hand mode when the space bar is down + * @param {KeyboardEvent} e - Event object + * @private + */ + }, { + key: "_startHandModeWithSpaceBar", + value: function(L) { + this.withSpace || this.isTextEditing || L.keyCode === xn.SPACE && (this.withSpace = !0, this.startHandMode()); + } + /** + * Handler who turns off hand mode when space bar is up + * @param {KeyboardEvent} e - Event object + * @private + */ + }, { + key: "_endHandModeWithSpaceBar", + value: function(L) { + L.keyCode === xn.SPACE && (this.withSpace = !1, this.endHandMode()); + } + /** + * Start zoom-in mode + */ + }, { + key: "startZoomInMode", + value: function() { + if (!this.zoomArea) { + this.endHandMode(), this.zoomMode = fi.ZOOM; + var L = this.getCanvas(); + this._changeObjectsEventedState(!1), this.zoomArea = new Ne.fabric.Rect({ + left: 0, + top: 0, + width: 0.5, + height: 0.5, + stroke: "black", + strokeWidth: 1, + fill: "transparent", + hoverCursor: "zoom-in" + }), L.discardActiveObject(), L.add(this.zoomArea), L.on("mouse:down", this._listeners.startZoom), L.selection = !1, L.defaultCursor = "zoom-in"; + } + } + /** + * End zoom-in mode + */ + }, { + key: "endZoomInMode", + value: function() { + this.zoomMode = fi.DEFAULT; + var L = this.getCanvas(), $ = this._listeners, re = $.startZoom, le = $.moveZoom, me = $.stopZoom; + L.selection = !0, L.defaultCursor = "auto", L.off({ + "mouse:down": re, + "mouse:move": le, + "mouse:up": me + }), this._changeObjectsEventedState(!0), L.remove(this.zoomArea), this.zoomArea = null; + } + /** + * Start zoom drawing mode + */ + }, { + key: "start", + value: function() { + this.zoomArea = null, this._startPoint = null, this._startHandPoint = null; + } + /** + * Stop zoom drawing mode + */ + }, { + key: "end", + value: function() { + this.endZoomInMode(), this.endHandMode(); + } + /** + * Start hand mode + */ + }, { + key: "startHandMode", + value: function() { + this.endZoomInMode(), this.zoomMode = fi.HAND; + var L = this.getCanvas(); + this._changeObjectsEventedState(!1), L.discardActiveObject(), L.off("mouse:down", this._listeners.startHand), L.on("mouse:down", this._listeners.startHand), L.selection = !1, L.defaultCursor = "grab", L.fire(sS); + } + /** + * Stop hand mode + */ + }, { + key: "endHandMode", + value: function() { + this.zoomMode = fi.DEFAULT; + var L = this.getCanvas(); + this._changeObjectsEventedState(!0), L.off("mouse:down", this._listeners.startHand), L.selection = !0, L.defaultCursor = "auto", this._startHandPoint = null, L.fire(By); + } + /** + * onMousedown handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onMouseDownWithZoomMode", + value: function(L) { + var $ = L.target, re = L.e; + if (!$) { + var le = this.getCanvas(); + le.selection = !1, this._startPoint = le.getPointer(re), this.zoomArea.set({ + width: 0, + height: 0 + }); + var me = this._listeners, ve = me.moveZoom, Oe = me.stopZoom; + le.on({ + "mouse:move": ve, + "mouse:up": Oe + }); + } + } + /** + * onMousemove handler in fabric canvas + * @param {{e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onMouseMoveWithZoomMode", + value: function(L) { + var $ = L.e, re = this.getCanvas(), le = re.getPointer($), me = le.x, ve = le.y, Oe = this.zoomArea, je = this._startPoint, pt = Math.abs(me - je.x), vt = Math.abs(ve - je.y); + pt + vt > tg && (re.remove(Oe), Oe.set(this._calcRectDimensionFromPoint(me, ve)), re.add(Oe)); + } + /** + * Get rect dimension setting from Canvas-Mouse-Position(x, y) + * @param {number} x - Canvas-Mouse-Position x + * @param {number} y - Canvas-Mouse-Position Y + * @returns {{left: number, top: number, width: number, height: number}} + * @private + */ + }, { + key: "_calcRectDimensionFromPoint", + value: function(L, $) { + var re = this.getCanvas(), le = re.getWidth(), me = re.getHeight(), ve = this._startPoint, Oe = ve.x, je = ve.y, pt = Math.min, vt = pt(Oe, L), It = pt(je, $), Et = Ur(L, Oe, le) - vt, Rt = Ur($, je, me) - It; + return { + left: vt, + top: It, + width: Et, + height: Rt + }; + } + /** + * onMouseup handler in fabric canvas + * @private + */ + }, { + key: "_onMouseUpWithZoomMode", + value: function() { + var L = this.zoomLevel, $ = this.zoomArea, re = this._listeners, le = re.moveZoom, me = re.stopZoom, ve = this.getCanvas(), Oe = this._getCenterPoint(), je = Oe.x, pt = Oe.y; + this._isMaxZoomLevel() || (this._centerPoints.push({ + x: je, + y: pt, + prevZoomLevel: L, + zoomLevel: L + 1 + }), L += 1, ve.zoomToPoint({ + x: je, + y: pt + }, L), this._fireZoomChanged(ve, L), this.zoomLevel = L), ve.off({ + "mouse:move": le, + "mouse:up": me + }), ve.remove($), this._startPoint = null; + } + /** + * Get center point + * @returns {{x: number, y: number}} + * @private + */ + }, { + key: "_getCenterPoint", + value: function() { + var L = this.zoomArea, $ = L.left, re = L.top, le = L.width, me = L.height, ve = this._startPoint, Oe = ve.x, je = ve.y, pt = this.aspectRatio; + return le < tg && me < tg ? { + x: Oe, + y: je + } : le > me ? { + x: $ + pt * me / 2, + y: re + me / 2 + } : { + x: $ + le / 2, + y: re + le / pt / 2 + }; + } + /** + * Zoom the canvas + * @param {{x: number, y: number}} center - center of zoom + * @param {?number} zoomLevel - zoom level + */ + }, { + key: "zoom", + value: function(L) { + for (var $ = L.x, re = L.y, le = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.zoomLevel, me = this.getCanvas(), ve = this._centerPoints, Oe = ve.length - 1; Oe >= 0 && !(ve[Oe].zoomLevel < le); Oe -= 1) { + var je = ve.pop(), pt = je.x, vt = je.y, It = je.prevZoomLevel; + me.zoomToPoint({ + x: pt, + y: vt + }, It), this.zoomLevel = It; + } + me.zoomToPoint({ + x: $, + y: re + }, le), this._isDefaultZoomLevel(le) || this._centerPoints.push({ + x: $, + y: re, + zoomLevel: le, + prevZoomLevel: this.zoomLevel + }), this.zoomLevel = le, this._fireZoomChanged(me, le); + } + /** + * Zoom out one step + */ + }, { + key: "zoomOut", + value: function() { + var L = this._centerPoints; + if (L.length) { + var $ = this.getCanvas(), re = L.pop(), le = re.x, me = re.y, ve = re.prevZoomLevel; + this._isDefaultZoomLevel(ve) ? $.setViewportTransform([1, 0, 0, 1, 0, 0]) : $.zoomToPoint({ + x: le, + y: me + }, ve), this.zoomLevel = ve, this._fireZoomChanged($, this.zoomLevel); + } + } + /** + * Zoom reset + */ + }, { + key: "resetZoom", + value: function() { + var L = this.getCanvas(); + L.setViewportTransform([1, 0, 0, 1, 0, 0]), this.zoomLevel = eh, this._centerPoints = [], this._fireZoomChanged(L, this.zoomLevel); + } + /** + * Whether zoom level is max (5.0) + * @returns {boolean} + * @private + */ + }, { + key: "_isMaxZoomLevel", + value: function() { + return this.zoomLevel >= 5; + } + /** + * Move point of zoom + * @param {{x: number, y: number}} delta - move amount + * @private + */ + }, { + key: "_movePointOfZoom", + value: function(L) { + var $ = L.x, re = L.y, le = this._centerPoints; + if (le.length) { + var me = this.getCanvas(), ve = this.zoomLevel, Oe = le.pop(), je = Oe.x, pt = Oe.y, vt = Oe.prevZoomLevel, It = je - $, Et = pt - re; + me.zoomToPoint({ + x: je, + y: pt + }, vt), me.zoomToPoint({ + x: It, + y: Et + }, ve), le.push({ + x: It, + y: Et, + prevZoomLevel: vt, + zoomLevel: ve + }), this._fireZoomChanged(me, ve); + } + } + /** + * onMouseDown handler in fabric canvas + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onMouseDownWithHandMode", + value: function(L) { + var $ = L.target, re = L.e; + if (!$) { + var le = this.getCanvas(); + if (!(this.zoomLevel <= eh)) { + le.selection = !1, this._startHandPoint = le.getPointer(re); + var me = this._listeners, ve = me.moveHand, Oe = me.stopHand; + le.on({ + "mouse:move": ve, + "mouse:up": Oe + }); + } + } + } + /** + * onMouseMove handler in fabric canvas + * @param {{e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onMouseMoveWithHandMode", + value: function(L) { + var $ = L.e, re = this.getCanvas(), le = re.getPointer($), me = le.x, ve = le.y, Oe = me - this._startHandPoint.x, je = ve - this._startHandPoint.y; + this._movePointOfZoom({ + x: Oe, + y: je + }); + } + /** + * onMouseUp handler in fabric canvas + * @private + */ + }, { + key: "_onMouseUpWithHandMode", + value: function() { + var L = this.getCanvas(), $ = this._listeners, re = $.moveHand, le = $.stopHand; + L.off({ + "mouse:move": re, + "mouse:up": le + }), this._startHandPoint = null; + } + /** + * onChangeZoom handler in fabric canvas + * @private + */ + }, { + key: "_changeScrollState", + value: function(L) { + var $ = L.viewport, re = L.zoomLevel, le = this.getCanvas(); + if (le.remove(this._verticalScroll), le.remove(this._horizontalScroll), !this._isDefaultZoomLevel(re)) { + var me = le.width, ve = le.height, Oe = $.tl, je = $.tr, pt = $.bl, vt = je.x - Oe.x, It = pt.y - Oe.y, Et = vt * vt / me, Rt = It * Qu.SIZE, sr = Ur(Oe.x + Oe.x / me * vt, Oe.x, je.x - Et), un = It * Qu.MARGIN, yn = It * Qu.BORDER_RADIUS; + this._horizontalScroll.set({ + left: sr, + top: pt.y - Rt - un, + width: Et, + height: Rt, + rx: yn, + ry: yn + }); + var Kn = vt * Hv.SIZE, xr = It * It / ve, Aa = Ur(Oe.y + Oe.y / ve * It, je.y, pt.y - xr), ol = vt * Hv.MARGIN, Mc = vt * Hv.BORDER_RADIUS; + this._verticalScroll.set({ + left: je.x - Kn - ol, + top: Aa, + width: Kn, + height: xr, + rx: Mc, + ry: Mc + }), this._addScrollBar(); + } + } + /** + * Change objects 'evented' state + * @param {boolean} [evented=true] - objects 'evented' state + */ + }, { + key: "_changeObjectsEventedState", + value: function() { + var L = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0, $ = this.getCanvas(); + $.forEachObject(function(re) { + re.evented = L; + }); + } + /** + * Add scroll bar and set remove timer + */ + }, { + key: "_addScrollBar", + value: function() { + var L = this, $ = this.getCanvas(); + $.add(this._horizontalScroll), $.add(this._verticalScroll), this.scrollBarTid && clearTimeout(this.scrollBarTid), this.scrollBarTid = w()(function() { + $.remove(L._horizontalScroll), $.remove(L._verticalScroll); + }, 3e3); + } + /** + * Check zoom level is default zoom level (1.0) + * @param {number} zoomLevel - zoom level + * @returns {boolean} - whether zoom level is 1.0 + */ + }, { + key: "_isDefaultZoomLevel", + value: function(L) { + return L === eh; + } + /** + * Fire 'zoomChanged' event + * @param {fabric.Canvas} canvas - fabric canvas + * @param {number} zoomLevel - 'zoomChanged' event params + */ + }, { + key: "_fireZoomChanged", + value: function(L, $) { + L.fire(Qf, { + viewport: L.calcViewportBoundaries(), + zoomLevel: $ + }); + } + /** + * Get zoom mode + */ + }, { + key: "mode", + get: function() { + return this.zoomMode; + } + }]), F; + }($l), Md = ep, zs = sa.create, Wv = sa.types, Uy = /* @__PURE__ */ function() { + function ce(W) { + ne(this, ce), this.name = W; + } + return de(ce, [{ + key: "getName", + value: function() { + return this.name; + } + /** + * start this drawing mode + * @param {Object} options - drawing mode options + * @abstract + */ + }, { + key: "start", + value: function() { + throw new Error(zs(Wv.UN_IMPLEMENTATION, "start")); + } + /** + * stop this drawing mode + * @abstract + */ + }, { + key: "end", + value: function() { + throw new Error(zs(Wv.UN_IMPLEMENTATION, "stop")); + } + }]), ce; + }(), $h = Uy; + function Hl(ce) { + var W = ig(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function ig() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var lS = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Hl(F); + function F() { + return ne(this, F), W.call(this, Un.CROPPER); + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = L.getComponent(Ht.CROPPER); + $.start(); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.CROPPER); + $.end(); + } + }]), F; + }($h), Wl = lS; + function ri(ce) { + var W = Gv(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Gv() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Ir = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = ri(F); + function F() { + return ne(this, F), W.call(this, Un.FREE_DRAWING); + } + return de(F, [{ + key: "start", + value: function(L, $) { + var re = L.getComponent(Ht.FREE_DRAWING); + re.start($); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.FREE_DRAWING); + $.end(); + } + }]), F; + }($h), Al = Ir; + function mi(ce) { + var W = Hs(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Hs() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var jy = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = mi(F); + function F() { + return ne(this, F), W.call(this, Un.LINE_DRAWING); + } + return de(F, [{ + key: "start", + value: function(L, $) { + var re = L.getComponent(Ht.LINE); + re.start($); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.LINE); + $.end(); + } + }]), F; + }($h), ag = jy; + function Rc(ce) { + var W = Yv(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function Yv() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var du = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Rc(F); + function F() { + return ne(this, F), W.call(this, Un.SHAPE); + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = L.getComponent(Ht.SHAPE); + $.start(); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.SHAPE); + $.end(); + } + }]), F; + }($h), Fo = du; + function og(ce) { + var W = z(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function z() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Q = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = og(F); + function F() { + return ne(this, F), W.call(this, Un.TEXT); + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = L.getComponent(Ht.TEXT); + $.start(); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.TEXT); + $.end(); + } + }]), F; + }($h), Se = Q; + function Ze(ce) { + var W = bt(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function bt() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var ar = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Ze(F); + function F() { + return ne(this, F), W.call(this, Un.ICON); + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = L.getComponent(Ht.ICON); + $.start(); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.ICON); + $.end(); + } + }]), F; + }($h), Vr = ar; + function Wn(ce) { + var W = tn(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function tn() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var Ni = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = Wn(F); + function F() { + return ne(this, F), W.call(this, Un.ZOOM); + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = L.getComponent(Ht.ZOOM); + $.start(); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.ZOOM); + $.end(); + } + }]), F; + }($h), yo = Ni, us = null; + function Dc(ce) { + us = ce; + } + function sg() { + return us; + } + function kd(ce, W) { + var F; + if (ce.type === "activeSelection") { + var j; + F = Ui()(j = ce.getObjects()).call(j, function(L) { + var $ = L.angle, re = L.left, le = L.top, me = L.scaleX, ve = L.scaleY, Oe = L.width, je = L.height; + Ne.fabric.util.addTransformToObject(L, ce.calcTransformMatrix()); + var pt = W(L); + return L.set({ + angle: $, + left: re, + top: le, + width: Oe, + height: je, + scaleX: me, + scaleY: ve + }), pt; + }); + } else + F = [W(ce)]; + return F; + } + function Xv(ce, W, F) { + return F ? { + id: ce, + width: W.width, + height: W.height, + top: W.top, + left: W.left, + angle: W.angle, + scaleX: W.scaleX, + scaleY: W.scaleY + } : we()({ + id: ce + }, W); + } + function uO(ce) { + var W = oU(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function oU() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var sU = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = uO(F); + function F(j) { + var L; + return ne(this, F), L = W.call(this, Ht.RESIZE, j), L._dimensions = null, L._originalDimensions = null, L; + } + return de(F, [{ + key: "getCurrentDimensions", + value: function() { + var L = this.getCanvasImage(); + if (!this._dimensions && L) { + var $ = L.width, re = L.height; + this._dimensions = { + width: $, + height: re + }; + } + return this._dimensions; + } + /** + * Get original dimensions + * @returns {object} + */ + }, { + key: "getOriginalDimensions", + value: function() { + return this._originalDimensions; + } + /** + * Set original dimensions + * @param {object} dimensions - Dimensions + */ + }, { + key: "setOriginalDimensions", + value: function(L) { + this._originalDimensions = L; + } + /** + * Resize Image + * @param {Object} dimensions - Resize dimensions + * @returns {Promise} + */ + }, { + key: "resize", + value: function(L) { + var $ = this.getCanvasImage(), re = $.width, le = $.height, me = $.scaleX, ve = $.scaleY, Oe = L.width, je = L.height, pt = { + scaleX: Oe ? Oe / re : me, + scaleY: je ? je / le : ve + }; + return (me !== pt.scaleX || ve !== pt.scaleY) && ($.set(pt).setCoords(), this._dimensions = { + width: $.width * $.scaleX, + height: $.height * $.scaleY + }), this.adjustCanvasDimensionBase(), Ue().resolve(); + } + /** + * Start resizing + */ + }, { + key: "start", + value: function() { + var L = this.getCurrentDimensions(); + this.setOriginalDimensions(L); + } + /** + * End resizing + */ + }, { + key: "end", + value: function() { + } + }]), F; + }($l), zI = sU; + function HI(ce) { + var W = lU(); + return function() { + var j = kr(ce), L; + if (W) { + var $ = kr(this).constructor; + L = Zt()(j, arguments, $); + } else + L = j.apply(this, arguments); + return An(this, L); + }; + } + function lU() { + if (typeof Reflect == "undefined" || !Zt() || Zt().sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Zt()(Boolean, [], function() { + })), !0; + } catch (ce) { + return !1; + } + } + var cU = /* @__PURE__ */ function(ce) { + ji(F, ce); + var W = HI(F); + function F() { + return ne(this, F), W.call(this, Un.RESIZE); + } + return de(F, [{ + key: "start", + value: function(L) { + var $ = L.getComponent(Ht.RESIZE); + $.start(); + } + /** + * stop this drawing mode + * @param {Graphics} graphics - Graphics instance + * @override + */ + }, { + key: "end", + value: function(L) { + var $ = L.getComponent(Ht.RESIZE); + $.end(); + } + }]), F; + }($h), hO = cU, WI = 1e3, uU = 800, fu = 10, $y = { + cssOnly: !0 + }, Vy = { + backstoreOnly: !0 + }, dO = /* @__PURE__ */ function() { + function ce(W) { + var F, j, L, $, re, le, me, ve, Oe, je, pt, vt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, It = vt.cssMaxWidth, Et = vt.cssMaxHeight; + ne(this, ce), this.canvasImage = null, this.cssMaxWidth = It || WI, this.cssMaxHeight = Et || uU, this.cropSelectionStyle = {}, this.targetObjectForCopyPaste = null, this.imageName = "", this._objects = {}, this._canvas = null, this._drawingMode = Un.NORMAL, this._drawingModeMap = {}, this._componentMap = {}, this._handler = { + onMouseDown: be()(F = this._onMouseDown).call(F, this), + onObjectAdded: be()(j = this._onObjectAdded).call(j, this), + onObjectRemoved: be()(L = this._onObjectRemoved).call(L, this), + onObjectMoved: be()($ = this._onObjectMoved).call($, this), + onObjectScaled: be()(re = this._onObjectScaled).call(re, this), + onObjectModified: be()(le = this._onObjectModified).call(le, this), + onObjectRotated: be()(me = this._onObjectRotated).call(me, this), + onObjectSelected: be()(ve = this._onObjectSelected).call(ve, this), + onPathCreated: be()(Oe = this._onPathCreated).call(Oe, this), + onSelectionCleared: be()(je = this._onSelectionCleared).call(je, this), + onSelectionCreated: be()(pt = this._onSelectionCreated).call(pt, this) + }, this._setObjectCachingToFalse(), this._setCanvasElement(W), this._createDrawingModeInstances(), this._createComponents(), this._attachCanvasEvents(), this._attachZoomEvents(); + } + return de(ce, [{ + key: "destroy", + value: function() { + var F = this._canvas.wrapperEl; + this._canvas.clear(), F.parentNode.removeChild(F), this._detachZoomEvents(); + } + /** + * Attach zoom events + */ + }, { + key: "_attachZoomEvents", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.attachKeyboardZoomEvents(); + } + /** + * Detach zoom events + */ + }, { + key: "_detachZoomEvents", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.detachKeyboardZoomEvents(); + } + /** + * Deactivates all objects on canvas + * @returns {Graphics} this + */ + }, { + key: "deactivateAll", + value: function() { + return this._canvas.discardActiveObject(), this; + } + /** + * Renders all objects on canvas + * @returns {Graphics} this + */ + }, { + key: "renderAll", + value: function() { + return this._canvas.renderAll(), this; + } + /** + * Adds objects on canvas + * @param {Object|Array} objects - objects + */ + }, { + key: "add", + value: function(F) { + var j, L = []; + Ov()(F) ? L = F : L.push(F), (j = this._canvas).add.apply(j, ee(L)); + } + /** + * Removes the object or group + * @param {Object} target - graphics object or group + * @returns {boolean} true if contains or false + */ + }, { + key: "contains", + value: function(F) { + return this._canvas.contains(F); + } + /** + * Gets all objects or group + * @returns {Array} all objects, shallow copy + */ + }, { + key: "getObjects", + value: function() { + var F; + return S()(F = this._canvas.getObjects()).call(F); + } + /** + * Get an object by id + * @param {number} id - object id + * @returns {fabric.Object} object corresponding id + */ + }, { + key: "getObject", + value: function(F) { + return this._objects[F]; + } + /** + * Removes the object or group + * @param {Object} target - graphics object or group + */ + }, { + key: "remove", + value: function(F) { + this._canvas.remove(F); + } + /** + * Removes all object or group + * @param {boolean} includesBackground - remove the background image or not + * @returns {Array} all objects array which is removed + */ + }, { + key: "removeAll", + value: function(F) { + var j, L = this._canvas, $ = S()(j = L.getObjects()).call(j); + return L.remove.apply(L, ee(this._canvas.getObjects())), F && L.clear(), $; + } + /** + * Removes an object or group by id + * @param {number} id - object id + * @returns {Array} removed objects + */ + }, { + key: "removeObjectById", + value: function(F) { + var j = [], L = this._canvas, $ = this.getObject(F), re = $ && $.isType("group") && !$.isEmpty(); + return re ? (L.discardActiveObject(), $.forEachObject(function(le) { + j.push(le), L.remove(le); + })) : L.contains($) && (j.push($), L.remove($)), j; + } + /** + * Get an id by object instance + * @param {fabric.Object} object object + * @returns {number} object id if it exists or null + */ + }, { + key: "getObjectId", + value: function(F) { + var j = null; + for (j in this._objects) + if (this._objects.hasOwnProperty(j) && F === this._objects[j]) + return j; + return null; + } + /** + * Gets an active object or group + * @returns {Object} active object or group instance + */ + }, { + key: "getActiveObject", + value: function() { + return this._canvas._activeObject; + } + /** + * Returns the object ID to delete the object. + * @returns {number} object id for remove + */ + }, { + key: "getActiveObjectIdForRemove", + value: function() { + var F = this.getActiveObject(), j = F.type, L = F.left, $ = F.top, re = j === "activeSelection"; + if (re) { + var le = new Ne.fabric.Group(ee(F.getObjects()), { + left: L, + top: $ + }); + return this._addFabricObject(le); + } + return this.getObjectId(F); + } + /** + * Verify that you are ready to erase the object. + * @returns {boolean} ready for object remove + */ + }, { + key: "isReadyRemoveObject", + value: function() { + var F = this.getActiveObject(); + return F && !F.isEditing; + } + /** + * Gets an active group object + * @returns {Object} active group object instance + */ + }, { + key: "getActiveObjects", + value: function() { + var F = this._canvas._activeObject; + return F && F.type === "activeSelection" ? F : null; + } + /** + * Get Active object Selection from object ids + * @param {Array.} objects - fabric objects + * @returns {Object} target - target object group + */ + }, { + key: "getActiveSelectionFromObjects", + value: function(F) { + var j = this.getCanvas(); + return new Ne.fabric.ActiveSelection(F, { + canvas: j + }); + } + /** + * Activates an object or group + * @param {Object} target - target object or group + */ + }, { + key: "setActiveObject", + value: function(F) { + this._canvas.setActiveObject(F); + } + /** + * Set Crop selection style + * @param {Object} style - Selection styles + */ + }, { + key: "setCropSelectionStyle", + value: function(F) { + this.cropSelectionStyle = F; + } + /** + * Get component + * @param {string} name - Component name + * @returns {Component} + */ + }, { + key: "getComponent", + value: function(F) { + return this._componentMap[F]; + } + /** + * Get current drawing mode + * @returns {string} + */ + }, { + key: "getDrawingMode", + value: function() { + return this._drawingMode; + } + /** + * Start a drawing mode. If the current mode is not 'NORMAL', 'stopDrawingMode()' will be called first. + * @param {String} mode Can be one of 'CROPPER', 'FREE_DRAWING', 'LINE', 'TEXT', 'SHAPE' + * @param {Object} [option] parameters of drawing mode, it's available with 'FREE_DRAWING', 'LINE_DRAWING' + * @param {Number} [option.width] brush width + * @param {String} [option.color] brush color + * @returns {boolean} true if success or false + */ + }, { + key: "startDrawingMode", + value: function(F, j) { + if (this._isSameDrawingMode(F)) + return !0; + this.stopDrawingMode(); + var L = this._getDrawingModeInstance(F); + return L && L.start && (L.start(this, j), this._drawingMode = F), !!L; + } + /** + * Stop the current drawing mode and back to the 'NORMAL' mode + */ + }, { + key: "stopDrawingMode", + value: function() { + if (!this._isSameDrawingMode(Un.NORMAL)) { + var F = this._getDrawingModeInstance(this.getDrawingMode()); + F && F.end && F.end(this), this._drawingMode = Un.NORMAL; + } + } + /** + * Change zoom of canvas + * @param {{x: number, y: number}} center - center of zoom + * @param {number} zoomLevel - zoom level + */ + }, { + key: "zoom", + value: function(F, j) { + var L = F.x, $ = F.y, re = this.getComponent(Ht.ZOOM); + re.zoom({ + x: L, + y: $ + }, j); + } + /** + * Get zoom mode + * @returns {string} + */ + }, { + key: "getZoomMode", + value: function() { + var F = this.getComponent(Ht.ZOOM); + return F.mode; + } + /** + * Start zoom-in mode + */ + }, { + key: "startZoomInMode", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.startZoomInMode(); + } + /** + * Stop zoom-in mode + */ + }, { + key: "endZoomInMode", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.endZoomInMode(); + } + /** + * Zoom out one step + */ + }, { + key: "zoomOut", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.zoomOut(); + } + /** + * Start hand mode + */ + }, { + key: "startHandMode", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.startHandMode(); + } + /** + * Stop hand mode + */ + }, { + key: "endHandMode", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.endHandMode(); + } + /** + * Zoom reset + */ + }, { + key: "resetZoom", + value: function() { + var F = this.getComponent(Ht.ZOOM); + F.resetZoom(); + } + /** + * To data url from canvas + * @param {Object} options - options for toDataURL + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in fabric v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in fabric v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in fabric v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in fabric v1.2.14 + * @returns {string} A DOMString containing the requested data URI. + */ + }, { + key: "toDataURL", + value: function(F) { + var j = this.getComponent(Ht.CROPPER); + j.changeVisibility(!1); + var L = this._canvas && this._canvas.toDataURL(F); + return j.changeVisibility(!0), L; + } + /** + * Save image(background) of canvas + * @param {string} name - Name of image + * @param {?fabric.Image} canvasImage - Fabric image instance + */ + }, { + key: "setCanvasImage", + value: function(F, j) { + j && Gt(j), this.imageName = F, this.canvasImage = j; + } + /** + * Set css max dimension + * @param {{width: number, height: number}} maxDimension - Max width & Max height + */ + }, { + key: "setCssMaxDimension", + value: function(F) { + this.cssMaxWidth = F.width || this.cssMaxWidth, this.cssMaxHeight = F.height || this.cssMaxHeight; + } + /** + * Adjust canvas dimension with scaling image + */ + }, { + key: "adjustCanvasDimension", + value: function() { + this.adjustCanvasDimensionBase(this.canvasImage.scale(1)); + } + }, { + key: "adjustCanvasDimensionBase", + value: function() { + var F = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + F || (F = this.canvasImage); + var j = F.getBoundingRect(), L = j.width, $ = j.height, re = this._calcMaxDimension(L, $); + this.setCanvasCssDimension({ + width: "100%", + height: "100%", + // Set height '' for IE9 + "max-width": "".concat(re.width, "px"), + "max-height": "".concat(re.height, "px") + }), this.setCanvasBackstoreDimension({ + width: L, + height: $ + }), this._canvas.centerObject(F); + } + /** + * Set canvas dimension - css only + * {@link http://fabricjs.com/docs/fabric.Canvas.html#setDimensions} + * @param {Object} dimension - Canvas css dimension + */ + }, { + key: "setCanvasCssDimension", + value: function(F) { + this._canvas.setDimensions(F, $y); + } + /** + * Set canvas dimension - backstore only + * {@link http://fabricjs.com/docs/fabric.Canvas.html#setDimensions} + * @param {Object} dimension - Canvas backstore dimension + */ + }, { + key: "setCanvasBackstoreDimension", + value: function(F) { + this._canvas.setDimensions(F, Vy); + } + /** + * Set image properties + * {@link http://fabricjs.com/docs/fabric.Image.html#set} + * @param {Object} setting - Image properties + * @param {boolean} [withRendering] - If true, The changed image will be reflected in the canvas + */ + }, { + key: "setImageProperties", + value: function(F, j) { + var L = this.canvasImage; + L && (L.set(F).setCoords(), j && this._canvas.renderAll()); + } + /** + * Returns canvas element of fabric.Canvas[[lower-canvas]] + * @returns {HTMLCanvasElement} + */ + }, { + key: "getCanvasElement", + value: function() { + return this._canvas.getElement(); + } + /** + * Get fabric.Canvas instance + * @returns {fabric.Canvas} + */ + }, { + key: "getCanvas", + value: function() { + return this._canvas; + } + /** + * Get canvasImage (fabric.Image instance) + * @returns {fabric.Image} + */ + }, { + key: "getCanvasImage", + value: function() { + return this.canvasImage; + } + /** + * Get image name + * @returns {string} + */ + }, { + key: "getImageName", + value: function() { + return this.imageName; + } + /** + * Add image object on canvas + * @param {string} imgUrl - Image url to make object + * @returns {Promise} + */ + }, { + key: "addImageObject", + value: function(F) { + var j, L = this, $ = be()(j = this._callbackAfterLoadingImageObject).call(j, this); + return new (Ue())(function(re) { + Ne.fabric.Image.fromURL(F, function(le) { + $(le), re(L.createObjectProperties(le)); + }, { + crossOrigin: "Anonymous" + }); + }); + } + /** + * Get center position of canvas + * @returns {Object} {left, top} + */ + }, { + key: "getCenter", + value: function() { + return this._canvas.getCenter(); + } + /** + * Get cropped rect + * @returns {Object} rect + */ + }, { + key: "getCropzoneRect", + value: function() { + return this.getComponent(Ht.CROPPER).getCropzoneRect(); + } + /** + * Get cropped rect + * @param {number} [mode] cropzone rect mode + */ + }, { + key: "setCropzoneRect", + value: function(F) { + this.getComponent(Ht.CROPPER).setCropzoneRect(F); + } + /** + * Get cropped image data + * @param {Object} cropRect cropzone rect + * @param {Number} cropRect.left left position + * @param {Number} cropRect.top top position + * @param {Number} cropRect.width width + * @param {Number} cropRect.height height + * @returns {?{imageName: string, url: string}} cropped Image data + */ + }, { + key: "getCroppedImageData", + value: function(F) { + return this.getComponent(Ht.CROPPER).getCroppedImageData(F); + } + /** + * Set brush option + * @param {Object} option brush option + * @param {Number} option.width width + * @param {String} option.color color like 'FFFFFF', 'rgba(0, 0, 0, 0.5)' + */ + }, { + key: "setBrush", + value: function(F) { + var j = this._drawingMode, L = Ht.FREE_DRAWING; + j === Un.LINE_DRAWING && (L = Ht.LINE), this.getComponent(L).setBrush(F); + } + /** + * Set states of current drawing shape + * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle') + * @param {Object} [options] - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or + * Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stoke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not + */ + }, { + key: "setDrawingShape", + value: function(F, j) { + this.getComponent(Ht.SHAPE).setStates(F, j); + } + /** + * Set style of current drawing icon + * @param {string} type - icon type (ex: 'icon-arrow', 'icon-star') + * @param {Object} [iconColor] - Icon color + */ + }, { + key: "setIconStyle", + value: function(F, j) { + this.getComponent(Ht.ICON).setStates(F, j); + } + /** + * Register icon paths + * @param {Object} pathInfos - Path infos + * @param {string} pathInfos.key - key + * @param {string} pathInfos.value - value + */ + }, { + key: "registerPaths", + value: function(F) { + this.getComponent(Ht.ICON).registerPaths(F); + } + /** + * Change cursor style + * @param {string} cursorType - cursor type + */ + }, { + key: "changeCursor", + value: function(F) { + var j = this.getCanvas(); + j.defaultCursor = F, j.renderAll(); + } + /** + * Whether it has the filter or not + * @param {string} type - Filter type + * @returns {boolean} true if it has the filter + */ + }, { + key: "hasFilter", + value: function(F) { + return this.getComponent(Ht.FILTER).hasFilter(F); + } + /** + * Set selection style of fabric object by init option + * @param {Object} styles - Selection styles + */ + }, { + key: "setSelectionStyle", + value: function(F) { + we()(Or.SELECTION_STYLE, F); + } + /** + * Set object properties + * @param {number} id - object id + * @param {Object} props - props + * @param {string} [props.fill] Color + * @param {string} [props.fontFamily] Font type for text + * @param {number} [props.fontSize] Size + * @param {string} [props.fontStyle] Type of inclination (normal / italic) + * @param {string} [props.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [props.textAlign] Type of text align (left / center / right) + * @param {string} [props.textDecoration] Type of line (underline / line-through / overline) + * @returns {Object} applied properties + */ + }, { + key: "setObjectProperties", + value: function(F, j) { + var L = this.getObject(F), $ = we()({}, j); + return L.set($), L.setCoords(), this.getCanvas().renderAll(), $; + } + /** + * Get object properties corresponding key + * @param {number} id - object id + * @param {Array|ObjectProps|string} keys - property's key + * @returns {Object} properties + */ + }, { + key: "getObjectProperties", + value: function(F, j) { + var L = this.getObject(F), $ = {}; + return nt()(j) ? $[j] = L[j] : Ov()(j) ? ro()(j, function(re) { + $[re] = L[re]; + }) : Xp()(j, function(re, le) { + $[le] = L[le]; + }), $; + } + /** + * Get object position by originX, originY + * @param {number} id - object id + * @param {string} originX - can be 'left', 'center', 'right' + * @param {string} originY - can be 'top', 'center', 'bottom' + * @returns {Object} {{x:number, y: number}} position by origin if id is valid, or null + */ + }, { + key: "getObjectPosition", + value: function(F, j, L) { + var $ = this.getObject(F); + return $ ? $.getPointByOrigin(j, L) : null; + } + /** + * Set object position by originX, originY + * @param {number} id - object id + * @param {Object} posInfo - position object + * @param {number} posInfo.x - x position + * @param {number} posInfo.y - y position + * @param {string} posInfo.originX - can be 'left', 'center', 'right' + * @param {string} posInfo.originY - can be 'top', 'center', 'bottom' + * @returns {boolean} true if target id is valid or false + */ + }, { + key: "setObjectPosition", + value: function(F, j) { + var L = this.getObject(F), $ = j.x, re = j.y, le = j.originX, me = j.originY; + if (!L) + return !1; + var ve = L.getPointByOrigin(le, me), Oe = L.getPointByOrigin("center", "center"), je = Oe.x - ve.x, pt = Oe.y - ve.y; + return L.set({ + left: $ + je, + top: re + pt + }), L.setCoords(), !0; + } + /** + * Get the canvas size + * @returns {Object} {{width: number, height: number}} image size + */ + }, { + key: "getCanvasSize", + value: function() { + var F = this.getCanvasImage(); + return { + width: F ? F.width : 0, + height: F ? F.height : 0 + }; + } + /** + * Create fabric static canvas + * @returns {Object} {{width: number, height: number}} image size + */ + }, { + key: "createStaticCanvas", + value: function() { + var F = new Ne.fabric.StaticCanvas(); + return F.set({ + enableRetinaScaling: !1 + }), F; + } + /** + * Get a DrawingMode instance + * @param {string} modeName - DrawingMode Class Name + * @returns {DrawingMode} DrawingMode instance + * @private + */ + }, { + key: "_getDrawingModeInstance", + value: function(F) { + return this._drawingModeMap[F]; + } + /** + * Set object caching to false. This brought many bugs when draw Shape & cropzone + * @see http://fabricjs.com/fabric-object-caching + * @private + */ + }, { + key: "_setObjectCachingToFalse", + value: function() { + Ne.fabric.Object.prototype.objectCaching = !1; + } + /** + * Set canvas element to fabric.Canvas + * @param {Element|string} element - Wrapper or canvas element or selector + * @private + */ + }, { + key: "_setCanvasElement", + value: function(F) { + var j, L; + F.nodeType ? j = F : j = document.querySelector(F), j.nodeName.toUpperCase() !== "CANVAS" && (L = document.createElement("canvas"), j.appendChild(L)), this._canvas = new Ne.fabric.Canvas(L, { + containerClass: "tui-image-editor-canvas-container", + enableRetinaScaling: !1 + }); + } + /** + * Creates DrawingMode instances + * @private + */ + }, { + key: "_createDrawingModeInstances", + value: function() { + this._register(this._drawingModeMap, new Wl()), this._register(this._drawingModeMap, new Al()), this._register(this._drawingModeMap, new ag()), this._register(this._drawingModeMap, new Fo()), this._register(this._drawingModeMap, new Se()), this._register(this._drawingModeMap, new Vr()), this._register(this._drawingModeMap, new yo()), this._register(this._drawingModeMap, new hO()); + } + /** + * Create components + * @private + */ + }, { + key: "_createComponents", + value: function() { + this._register(this._componentMap, new zf(this)), this._register(this._componentMap, new Cy(this)), this._register(this._componentMap, new cu(this)), this._register(this._componentMap, new wy(this)), this._register(this._componentMap, new H0(this)), this._register(this._componentMap, new Ju(this)), this._register(this._componentMap, new al(this)), this._register(this._componentMap, new Bv(this)), this._register(this._componentMap, new q0(this)), this._register(this._componentMap, new Od(this)), this._register(this._componentMap, new Md(this)), this._register(this._componentMap, new zI(this)); + } + /** + * Register component + * @param {Object} map - map object + * @param {Object} module - module which has getName method + * @private + */ + }, { + key: "_register", + value: function(F, j) { + F[j.getName()] = j; + } + /** + * Get the current drawing mode is same with given mode + * @param {string} mode drawing mode + * @returns {boolean} true if same or false + */ + }, { + key: "_isSameDrawingMode", + value: function(F) { + return this.getDrawingMode() === F; + } + /** + * Calculate max dimension of canvas + * The css-max dimension is dynamically decided with maintaining image ratio + * The css-max dimension is lower than canvas dimension (attribute of canvas, not css) + * @param {number} width - Canvas width + * @param {number} height - Canvas height + * @returns {{width: number, height: number}} - Max width & Max height + * @private + */ + }, { + key: "_calcMaxDimension", + value: function(F, j) { + var L = this.cssMaxWidth / F, $ = this.cssMaxHeight / j, re = Math.min(F, this.cssMaxWidth), le = Math.min(j, this.cssMaxHeight); + return L < 1 && L < $ ? (re = F * L, le = j * L) : $ < 1 && $ < L && (re = F * $, le = j * $), { + width: Math.floor(re), + height: Math.floor(le) + }; + } + /** + * Callback function after loading image + * @param {fabric.Image} obj - Fabric image object + * @private + */ + }, { + key: "_callbackAfterLoadingImageObject", + value: function(F) { + var j = this.getCanvasImage().getCenterPoint(); + F.set(Or.SELECTION_STYLE), F.set({ + left: j.x, + top: j.y, + crossOrigin: "Anonymous" + }), this.getCanvas().add(F).setActiveObject(F); + } + /** + * Attach canvas's events + */ + }, { + key: "_attachCanvasEvents", + value: function() { + var F = this._canvas, j = this._handler; + F.on({ + "mouse:down": j.onMouseDown, + "object:added": j.onObjectAdded, + "object:removed": j.onObjectRemoved, + "object:moving": j.onObjectMoved, + "object:scaling": j.onObjectScaled, + "object:modified": j.onObjectModified, + "object:rotating": j.onObjectRotated, + "path:created": j.onPathCreated, + "selection:cleared": j.onSelectionCleared, + "selection:created": j.onSelectionCreated, + "selection:updated": j.onObjectSelected + }); + } + /** + * "mouse:down" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onMouseDown", + value: function(F) { + var j = this, L = F.e, $ = F.target, re = this._canvas.getPointer(L); + if ($) { + var le = $.type, me = kd($, function(ve) { + return Xv(j.getObjectId(ve), ve, le === "activeSelection"); + }); + Dc(me); + } + this.fire(Pt.MOUSE_DOWN, L, re); + } + /** + * "object:added" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectAdded", + value: function(F) { + var j = F.target; + j.isType("cropzone") || this._addFabricObject(j); + } + /** + * "object:removed" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectRemoved", + value: function(F) { + var j = F.target; + this._removeFabricObject(Gt(j)); + } + /** + * "object:moving" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectMoved", + value: function(F) { + var j = this; + this._lazyFire(Pt.OBJECT_MOVED, function(L) { + return j.createObjectProperties(L); + }, F.target); + } + /** + * "object:scaling" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectScaled", + value: function(F) { + var j = this; + this._lazyFire(Pt.OBJECT_SCALED, function(L) { + return j.createObjectProperties(L); + }, F.target); + } + /** + * "object:modified" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectModified", + value: function(F) { + var j = F.target; + if (j.type === "activeSelection") { + var L = j.getObjects(); + Yt()(L).call(L, function($) { + return $.fire("modifiedInGroup", j); + }); + } + this.fire(Pt.OBJECT_MODIFIED, j, this.getObjectId(j)); + } + /** + * "object:rotating" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectRotated", + value: function(F) { + var j = this; + this._lazyFire(Pt.OBJECT_ROTATED, function(L) { + return j.createObjectProperties(L); + }, F.target); + } + /** + * Lazy event emitter + * @param {string} eventName - event name + * @param {Function} paramsMaker - make param function + * @param {Object} [target] - Object of the event owner. + * @private + */ + }, { + key: "_lazyFire", + value: function(F, j, L) { + var $ = this, re = L && L.canvasEventDelegation, le = re ? L.canvasEventDelegation(F) : "none"; + le === "unregistered" && L.canvasEventRegister(F, function(me) { + $.fire(F, j(me)); + }), le === "none" && this.fire(F, j(L)); + } + /** + * "object:selected" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onObjectSelected", + value: function(F) { + var j = F.target, L = this.createObjectProperties(j); + this.fire(Pt.OBJECT_ACTIVATED, L); + } + /** + * "path:created" canvas event handler + * @param {{path: fabric.Path}} obj - Path object + * @private + */ + }, { + key: "_onPathCreated", + value: function(F) { + var j = F.path.getCenterPoint(), L = j.x, $ = j.y; + F.path.set(we()({ + left: L, + top: $ + }, Or.SELECTION_STYLE)); + var re = this.createObjectProperties(F.path); + this.fire(Pt.ADD_OBJECT, re); + } + /** + * "selction:cleared" canvas event handler + * @private + */ + }, { + key: "_onSelectionCleared", + value: function() { + this.fire(Pt.SELECTION_CLEARED); + } + /** + * "selction:created" canvas event handler + * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event + * @private + */ + }, { + key: "_onSelectionCreated", + value: function(F) { + var j = F.target, L = this.createObjectProperties(j); + this.fire(Pt.OBJECT_ACTIVATED, L), this.fire(Pt.SELECTION_CREATED, F.target); + } + /** + * Canvas discard selection all + */ + }, { + key: "discardSelection", + value: function() { + this._canvas.discardActiveObject(), this._canvas.renderAll(); + } + /** + * Canvas Selectable status change + * @param {boolean} selectable - expect status + */ + }, { + key: "changeSelectableAll", + value: function(F) { + this._canvas.forEachObject(function(j) { + j.selectable = F, j.hoverCursor = F ? "move" : "crosshair"; + }); + } + /** + * Return object's properties + * @param {fabric.Object} obj - fabric object + * @returns {Object} properties object + */ + }, { + key: "createObjectProperties", + value: function(F) { + var j = ["left", "top", "width", "height", "fill", "stroke", "strokeWidth", "opacity", "angle"], L = { + id: Gt(F), + type: F.type + }; + if (we()(L, ai(F, j)), ic(["i-text", "text"], F.type)) + we()(L, this._createTextProperties(F, L)); + else if (ic(["rect", "triangle", "circle"], F.type)) { + var $ = this.getComponent(Ht.SHAPE); + we()(L, { + fill: $.makeFillPropertyForUserEvent(F) + }); + } + return L; + } + /** + * Get text object's properties + * @param {fabric.Object} obj - fabric text object + * @param {Object} props - properties + * @returns {Object} properties object + */ + }, { + key: "_createTextProperties", + value: function(F) { + var j = ["text", "fontFamily", "fontSize", "fontStyle", "textAlign", "textDecoration", "fontWeight"], L = {}; + return we()(L, ai(F, j)), L; + } + /** + * Add object array by id + * @param {fabric.Object} obj - fabric object + * @returns {number} object id + */ + }, { + key: "_addFabricObject", + value: function(F) { + var j = Gt(F); + return this._objects[j] = F, j; + } + /** + * Remove an object in array yb id + * @param {number} id - object id + */ + }, { + key: "_removeFabricObject", + value: function(F) { + delete this._objects[F]; + } + /** + * Reset targetObjectForCopyPaste value from activeObject + */ + }, { + key: "resetTargetObjectForCopyPaste", + value: function() { + var F = this.getActiveObject(); + F && (this.targetObjectForCopyPaste = F); + } + /** + * Paste fabric object + * @returns {Promise} + */ + }, { + key: "pasteObject", + value: function() { + var F = this; + if (!this.targetObjectForCopyPaste) + return Ue().resolve([]); + var j = this.targetObjectForCopyPaste, L = j.type === "activeSelection", $ = L ? j.getObjects() : [j], re = null; + return this.discardSelection(), this._cloneObject($).then(function(le) { + if (le.length > 1) + re = F.getActiveSelectionFromObjects(le); + else { + var me = ct(le, 1); + re = me[0]; + } + F.targetObjectForCopyPaste = re, F.setActiveObject(re); + }); + } + /** + * Clone object + * @param {fabric.Object} targetObjects - fabric object + * @returns {Promise} + * @private + */ + }, { + key: "_cloneObject", + value: function(F) { + var j = this, L = Ui()(F).call(F, function($) { + return j._cloneObjectItem($); + }); + return Ue().all(L); + } + /** + * Clone object one item + * @param {fabric.Object} targetObject - fabric object + * @returns {Promise} + * @private + */ + }, { + key: "_cloneObjectItem", + value: function(F) { + var j = this; + return this._copyFabricObjectForPaste(F).then(function(L) { + var $ = j.createObjectProperties(L); + return j.add(L), j.fire(Pt.ADD_OBJECT, $), L; + }); + } + /** + * Copy fabric object with Changed position for copy and paste + * @param {fabric.Object} targetObject - fabric object + * @returns {Promise} + * @private + */ + }, { + key: "_copyFabricObjectForPaste", + value: function(F) { + var j = this, L = function(re, le) { + return le ? re - fu : re + fu; + }; + return this._copyFabricObject(F).then(function($) { + var re = $.left, le = $.top, me = $.width, ve = $.height, Oe = j.getCanvasSize(), je = Oe.width, pt = Oe.height, vt = re + me / 2, It = le + ve / 2; + return $.set(we()({ + left: L(re, vt + fu > je), + top: L(le, It + fu > pt) + }, Or.SELECTION_STYLE)), $; + }); + } + /** + * Copy fabric object + * @param {fabric.Object} targetObject - fabric object + * @returns {Promise} + * @private + */ + }, { + key: "_copyFabricObject", + value: function(F) { + var j = this; + return new (Ue())(function(L) { + F.clone(function($) { + var re = j.getComponent(Ht.SHAPE); + oi($) && re.processForCopiedObject($, F), L($); + }); + }); + } + /** + * Get current dimensions + * @returns {object} + */ + }, { + key: "getCurrentDimensions", + value: function() { + var F = this.getComponent(Ht.RESIZE); + return F.getCurrentDimensions(); + } + /** + * Get original dimensions + * @returns {object} + */ + }, { + key: "getOriginalDimensions", + value: function() { + var F = this.getComponent(Ht.RESIZE); + return F.getOriginalDimensions(); + } + /** + * Set original dimensions + * @param {object} dimensions - Dimensions + */ + }, { + key: "setOriginalDimensions", + value: function(F) { + var j = this.getComponent(Ht.RESIZE); + j.setOriginalDimensions(F); + } + /** + * Resize Image + * @param {Object} dimensions - Resize dimensions + * @returns {Promise} + */ + }, { + key: "resize", + value: function(F) { + var j = this.getComponent(Ht.RESIZE); + return j.resize(F); + } + }]), ce; + }(); + lt().mixin(dO); + var hU = dO, dU = Pt.MOUSE_DOWN, fU = Pt.OBJECT_MOVED, pU = Pt.OBJECT_SCALED, fO = Pt.OBJECT_ACTIVATED, lg = Pt.OBJECT_ROTATED, pO = Pt.OBJECT_ADDED, cC = Pt.OBJECT_MODIFIED, GI = Pt.ADD_TEXT, YI = Pt.ADD_OBJECT, gU = Pt.TEXT_EDITING, zy = Pt.TEXT_CHANGED, Hy = Pt.ICON_CREATE_RESIZE, vU = Pt.ICON_CREATE_END, Ws = Pt.SELECTION_CLEARED, gO = Pt.SELECTION_CREATED, XI = Pt.ADD_OBJECT_AFTER, Wy = /* @__PURE__ */ function() { + function ce(W, F) { + var j, L, $, re, le, me, ve, Oe, je, pt, vt, It, Et, Rt, sr, un; + if (ne(this, ce), F = we()({ + includeUI: !1, + usageStatistics: !0 + }, F), this.mode = null, this.activeObjectId = null, F.includeUI) { + var yn = F.includeUI; + yn.usageStatistics = F.usageStatistics, this.ui = new Yp(W, yn, this.getActions()), F = this.ui.setUiDefaultSelectionStyle(F); + } + this._invoker = new gi(), this._graphics = new hU(this.ui ? this.ui.getEditorArea() : W, { + cssMaxWidth: F.cssMaxWidth, + cssMaxHeight: F.cssMaxHeight + }), this._handlers = { + keydown: be()(j = this._onKeyDown).call(j, this), + mousedown: be()(L = this._onMouseDown).call(L, this), + objectActivated: be()($ = this._onObjectActivated).call($, this), + objectMoved: be()(re = this._onObjectMoved).call(re, this), + objectScaled: be()(le = this._onObjectScaled).call(le, this), + objectRotated: be()(me = this._onObjectRotated).call(me, this), + objectAdded: be()(ve = this._onObjectAdded).call(ve, this), + objectModified: be()(Oe = this._onObjectModified).call(Oe, this), + createdPath: this._onCreatedPath, + addText: be()(je = this._onAddText).call(je, this), + addObject: be()(pt = this._onAddObject).call(pt, this), + textEditing: be()(vt = this._onTextEditing).call(vt, this), + textChanged: be()(It = this._onTextChanged).call(It, this), + iconCreateResize: be()(Et = this._onIconCreateResize).call(Et, this), + iconCreateEnd: be()(Rt = this._onIconCreateEnd).call(Rt, this), + selectionCleared: be()(sr = this._selectionCleared).call(sr, this), + selectionCreated: be()(un = this._selectionCreated).call(un, this) + }, this._attachInvokerEvents(), this._attachGraphicsEvents(), this._attachDomEvents(), this._setSelectionStyle(F.selectionStyle, { + applyCropSelectionStyle: F.applyCropSelectionStyle, + applyGroupSelectionStyle: F.applyGroupSelectionStyle + }), F.usageStatistics && Fi(), this.ui && (this.ui.initCanvas(), this.setReAction(), this._attachColorPickerInputBoxEvents()), Ne.fabric.enableGLFiltering = !1; + } + return de(ce, [{ + key: "_attachColorPickerInputBoxEvents", + value: function() { + var F = this; + this.ui.on(Pt.INPUT_BOX_EDITING_STARTED, function() { + F.isColorPickerInputBoxEditing = !0; + }), this.ui.on(Pt.INPUT_BOX_EDITING_STOPPED, function() { + F.isColorPickerInputBoxEditing = !1; + }); + } + }, { + key: "_detachColorPickerInputBoxEvents", + value: function() { + this.ui.off(Pt.INPUT_BOX_EDITING_STARTED), this.ui.off(Pt.INPUT_BOX_EDITING_STOPPED); + } + /** + * Set selection style by init option + * @param {Object} selectionStyle - Selection styles + * @param {Object} applyTargets - Selection apply targets + * @param {boolean} applyCropSelectionStyle - whether apply with crop selection style or not + * @param {boolean} applyGroupSelectionStyle - whether apply with group selection style or not + * @private + */ + }, { + key: "_setSelectionStyle", + value: function(F, j) { + var L = j.applyCropSelectionStyle, $ = j.applyGroupSelectionStyle; + F && this._graphics.setSelectionStyle(F), L && this._graphics.setCropSelectionStyle(F), $ && this.on("selectionCreated", function(re) { + re.type === "activeSelection" && re.set(F); + }); + } + /** + * Attach invoker events + * @private + */ + }, { + key: "_attachInvokerEvents", + value: function() { + var F, j, L = this, $ = Pt.UNDO_STACK_CHANGED, re = Pt.REDO_STACK_CHANGED, le = Pt.EXECUTE_COMMAND, me = Pt.AFTER_UNDO, ve = Pt.AFTER_REDO, Oe = Pt.HAND_STARTED, je = Pt.HAND_STOPPED; + if (this._invoker.on($, be()(F = this.fire).call(F, this, $)), this._invoker.on(re, be()(j = this.fire).call(j, this, re)), this.ui) { + var pt = this._graphics.getCanvas(); + this._invoker.on(le, function(vt) { + return L.ui.fire(le, vt); + }), this._invoker.on(me, function(vt) { + return L.ui.fire(me, vt); + }), this._invoker.on(ve, function(vt) { + return L.ui.fire(ve, vt); + }), pt.on(Oe, function() { + return L.ui.fire(Oe); + }), pt.on(je, function() { + return L.ui.fire(je); + }); + } + } + /** + * Attach canvas events + * @private + */ + }, { + key: "_attachGraphicsEvents", + value: function() { + var F; + this._graphics.on((F = {}, J(F, dU, this._handlers.mousedown), J(F, fU, this._handlers.objectMoved), J(F, pU, this._handlers.objectScaled), J(F, lg, this._handlers.objectRotated), J(F, fO, this._handlers.objectActivated), J(F, pO, this._handlers.objectAdded), J(F, cC, this._handlers.objectModified), J(F, GI, this._handlers.addText), J(F, YI, this._handlers.addObject), J(F, gU, this._handlers.textEditing), J(F, zy, this._handlers.textChanged), J(F, Hy, this._handlers.iconCreateResize), J(F, vU, this._handlers.iconCreateEnd), J(F, Ws, this._handlers.selectionCleared), J(F, gO, this._handlers.selectionCreated), F)); + } + /** + * Attach dom events + * @private + */ + }, { + key: "_attachDomEvents", + value: function() { + document.addEventListener("keydown", this._handlers.keydown); + } + /** + * Detach dom events + * @private + */ + }, { + key: "_detachDomEvents", + value: function() { + document.removeEventListener("keydown", this._handlers.keydown); + } + /** + * Keydown event handler + * @param {KeyboardEvent} e - Event object + * @private + */ + /* eslint-disable complexity */ + }, { + key: "_onKeyDown", + value: function(F) { + var j = F.ctrlKey, L = F.keyCode, $ = F.metaKey, re = j || $; + re && (L === xn.C ? this._graphics.resetTargetObjectForCopyPaste() : L === xn.V ? (this._graphics.pasteObject(), this.clearRedoStack()) : L === xn.Z ? this.undo().catch(function() { + }) : L === xn.Y && this.redo().catch(function() { + })); + var le = L === xn.BACKSPACE || L === xn.DEL, me = this._graphics.isReadyRemoveObject(); + !this.isColorPickerInputBoxEditing && me && le && (F.preventDefault(), this.removeActiveObject()); + } + /** + * Remove Active Object + */ + }, { + key: "removeActiveObject", + value: function() { + var F = this._graphics.getActiveObjectIdForRemove(); + this.removeObject(F); + } + /** + * mouse down event handler + * @param {Event} event - mouse down event + * @param {Object} originPointer - origin pointer + * @param {Number} originPointer.x x position + * @param {Number} originPointer.y y position + * @private + */ + }, { + key: "_onMouseDown", + value: function(F, j) { + this.fire(Pt.MOUSE_DOWN, F, j); + } + /** + * Add a 'addObject' command + * @param {Object} obj - Fabric object + * @private + */ + }, { + key: "_pushAddObjectCommand", + value: function(F) { + var j = Hn.create(or.ADD_OBJECT, this._graphics, F); + this._invoker.pushUndoStack(j); + } + /** + * Add a 'changeSelection' command + * @param {fabric.Object} obj - selection object + * @private + */ + }, { + key: "_pushModifyObjectCommand", + value: function(F) { + var j = this, L = F.type, $ = kd(F, function(le) { + return Xv(j._graphics.getObjectId(le), le, L === "activeSelection"); + }), re = Hn.create(or.CHANGE_SELECTION, this._graphics, $); + re.execute(this._graphics, $), this._invoker.pushUndoStack(re); + } + /** + * 'objectActivated' event handler + * @param {ObjectProps} props - object properties + * @private + */ + }, { + key: "_onObjectActivated", + value: function(F) { + this.fire(Pt.OBJECT_ACTIVATED, F); + } + /** + * 'objectMoved' event handler + * @param {ObjectProps} props - object properties + * @private + */ + }, { + key: "_onObjectMoved", + value: function(F) { + this.fire(Pt.OBJECT_MOVED, F); + } + /** + * 'objectScaled' event handler + * @param {ObjectProps} props - object properties + * @private + */ + }, { + key: "_onObjectScaled", + value: function(F) { + this.fire(Pt.OBJECT_SCALED, F); + } + /** + * 'objectRotated' event handler + * @param {ObjectProps} props - object properties + * @private + */ + }, { + key: "_onObjectRotated", + value: function(F) { + this.fire(Pt.OBJECT_ROTATED, F); + } + /** + * Get current drawing mode + * @returns {string} + * @example + * // Image editor drawing mode + * // + * // NORMAL: 'NORMAL' + * // CROPPER: 'CROPPER' + * // FREE_DRAWING: 'FREE_DRAWING' + * // LINE_DRAWING: 'LINE_DRAWING' + * // TEXT: 'TEXT' + * // + * if (imageEditor.getDrawingMode() === 'FREE_DRAWING') { + * imageEditor.stopDrawingMode(); + * } + */ + }, { + key: "getDrawingMode", + value: function() { + return this._graphics.getDrawingMode(); + } + /** + * Clear all objects + * @returns {Promise} + * @example + * imageEditor.clearObjects(); + */ + }, { + key: "clearObjects", + value: function() { + return this.execute(or.CLEAR_OBJECTS); + } + /** + * Deactivate all objects + * @example + * imageEditor.deactivateAll(); + */ + }, { + key: "deactivateAll", + value: function() { + this._graphics.deactivateAll(), this._graphics.renderAll(); + } + /** + * discard selction + * @example + * imageEditor.discardSelection(); + */ + }, { + key: "discardSelection", + value: function() { + this._graphics.discardSelection(); + } + /** + * selectable status change + * @param {boolean} selectable - selectable status + * @example + * imageEditor.changeSelectableAll(false); // or true + */ + }, { + key: "changeSelectableAll", + value: function(F) { + this._graphics.changeSelectableAll(F); + } + /** + * Init history + */ + }, { + key: "_initHistory", + value: function() { + this.ui && this.ui.initHistory(); + } + /** + * Clear history + */ + }, { + key: "_clearHistory", + value: function() { + this.ui && this.ui.clearHistory(); + } + /** + * Invoke command + * @param {String} commandName - Command name + * @param {...*} args - Arguments for creating command + * @returns {Promise} + * @private + */ + }, { + key: "execute", + value: function(F) { + for (var j, L, $, re = arguments.length, le = new Array(re > 1 ? re - 1 : 0), me = 1; me < re; me++) + le[me - 1] = arguments[me]; + var ve = pe()(j = [this._graphics]).call(j, le); + return (L = this._invoker).execute.apply(L, pe()($ = [F]).call($, ee(ve))); + } + /** + * Invoke command + * @param {String} commandName - Command name + * @param {...*} args - Arguments for creating command + * @returns {Promise} + * @private + */ + }, { + key: "executeSilent", + value: function(F) { + for (var j, L, $, re = arguments.length, le = new Array(re > 1 ? re - 1 : 0), me = 1; me < re; me++) + le[me - 1] = arguments[me]; + var ve = pe()(j = [this._graphics]).call(j, le); + return (L = this._invoker).executeSilent.apply(L, pe()($ = [F]).call($, ee(ve))); + } + /** + * Undo + * @param {number} [iterationCount=1] - Iteration count of undo + * @returns {Promise} + * @example + * imageEditor.undo(); + */ + }, { + key: "undo", + value: function() { + for (var F = this, j = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1, L = Ue().resolve(), $ = 0; $ < j; $ += 1) + L = L.then(function() { + return F._invoker.undo(); + }); + return L; + } + /** + * Redo + * @param {number} [iterationCount=1] - Iteration count of redo + * @returns {Promise} + * @example + * imageEditor.redo(); + */ + }, { + key: "redo", + value: function() { + for (var F = this, j = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1, L = Ue().resolve(), $ = 0; $ < j; $ += 1) + L = L.then(function() { + return F._invoker.redo(); + }); + return L; + } + /** + * Zoom + * @param {number} x - x axis of center point for zoom + * @param {number} y - y axis of center point for zoom + * @param {number} zoomLevel - level of zoom(1.0 ~ 5.0) + */ + }, { + key: "zoom", + value: function(F) { + var j = F.x, L = F.y, $ = F.zoomLevel; + this._graphics.zoom({ + x: j, + y: L + }, $); + } + /** + * Reset zoom. Change zoom level to 1.0 + */ + }, { + key: "resetZoom", + value: function() { + this._graphics.resetZoom(); + } + /** + * Load image from file + * @param {File} imgFile - Image file + * @param {string} [imageName] - imageName + * @returns {Promise} + * @example + * imageEditor.loadImageFromFile(file).then(result => { + * console.log('old : ' + result.oldWidth + ', ' + result.oldHeight); + * console.log('new : ' + result.newWidth + ', ' + result.newHeight); + * }); + */ + }, { + key: "loadImageFromFile", + value: function(F, j) { + if (!F) + return Ue().reject(Dr.invalidParameters); + var L = Re().createObjectURL(F); + return j = j || F.name, this.loadImageFromURL(L, j).then(function($) { + return Re().revokeObjectURL(F), $; + }); + } + /** + * Load image from url + * @param {string} url - File url + * @param {string} imageName - imageName + * @returns {Promise} + * @example + * imageEditor.loadImageFromURL('http://url/testImage.png', 'lena').then(result => { + * console.log('old : ' + result.oldWidth + ', ' + result.oldHeight); + * console.log('new : ' + result.newWidth + ', ' + result.newHeight); + * }); + */ + }, { + key: "loadImageFromURL", + value: function(F, j) { + return !j || !F ? Ue().reject(Dr.invalidParameters) : this.execute(or.LOAD_IMAGE, j, F); + } + /** + * Add image object on canvas + * @param {string} imgUrl - Image url to make object + * @returns {Promise} + * @example + * imageEditor.addImageObject('path/fileName.jpg').then(objectProps => { + * console.log(ojectProps.id); + * }); + */ + }, { + key: "addImageObject", + value: function(F) { + return F ? this.execute(or.ADD_IMAGE_OBJECT, F) : Ue().reject(Dr.invalidParameters); + } + /** + * Start a drawing mode. If the current mode is not 'NORMAL', 'stopDrawingMode()' will be called first. + * @param {String} mode Can be one of 'CROPPER', 'FREE_DRAWING', 'LINE_DRAWING', 'TEXT', 'SHAPE' + * @param {Object} [option] parameters of drawing mode, it's available with 'FREE_DRAWING', 'LINE_DRAWING' + * @param {Number} [option.width] brush width + * @param {String} [option.color] brush color + * @param {Object} [option.arrowType] arrow decorate + * @param {string} [option.arrowType.tail] arrow decorate for tail. 'chevron' or 'triangle' + * @param {string} [option.arrowType.head] arrow decorate for head. 'chevron' or 'triangle' + * @returns {boolean} true if success or false + * @example + * imageEditor.startDrawingMode('FREE_DRAWING', { + * width: 10, + * color: 'rgba(255,0,0,0.5)' + * }); + * imageEditor.startDrawingMode('LINE_DRAWING', { + * width: 10, + * color: 'rgba(255,0,0,0.5)', + * arrowType: { + * tail: 'chevron' // triangle + * } + * }); + * + */ + }, { + key: "startDrawingMode", + value: function(F, j) { + return this._graphics.startDrawingMode(F, j); + } + /** + * Stop the current drawing mode and back to the 'NORMAL' mode + * @example + * imageEditor.stopDrawingMode(); + */ + }, { + key: "stopDrawingMode", + value: function() { + this._graphics.stopDrawingMode(); + } + /** + * Crop this image with rect + * @param {Object} rect crop rect + * @param {Number} rect.left left position + * @param {Number} rect.top top position + * @param {Number} rect.width width + * @param {Number} rect.height height + * @returns {Promise} + * @example + * imageEditor.crop(imageEditor.getCropzoneRect()); + */ + }, { + key: "crop", + value: function(F) { + var j = this._graphics.getCroppedImageData(F); + return j ? this.loadImageFromURL(j.url, j.imageName) : Ue().reject(Dr.invalidParameters); + } + /** + * Get the cropping rect + * @returns {Object} {{left: number, top: number, width: number, height: number}} rect + */ + }, { + key: "getCropzoneRect", + value: function() { + return this._graphics.getCropzoneRect(); + } + /** + * Set the cropping rect + * @param {number} [mode] crop rect mode [1, 1.5, 1.3333333333333333, 1.25, 1.7777777777777777] + */ + }, { + key: "setCropzoneRect", + value: function(F) { + this._graphics.setCropzoneRect(F); + } + /** + * Flip + * @returns {Promise} + * @param {string} type - 'flipX' or 'flipY' or 'reset' + * @returns {Promise} + * @private + */ + }, { + key: "_flip", + value: function(F) { + return this.execute(or.FLIP_IMAGE, F); + } + /** + * Flip x + * @returns {Promise} + * @example + * imageEditor.flipX().then((status => { + * console.log('flipX: ', status.flipX); + * console.log('flipY: ', status.flipY); + * console.log('angle: ', status.angle); + * }).catch(message => { + * console.log('error: ', message); + * }); + */ + }, { + key: "flipX", + value: function() { + return this._flip("flipX"); + } + /** + * Flip y + * @returns {Promise} + * @example + * imageEditor.flipY().then(status => { + * console.log('flipX: ', status.flipX); + * console.log('flipY: ', status.flipY); + * console.log('angle: ', status.angle); + * }).catch(message => { + * console.log('error: ', message); + * }); + */ + }, { + key: "flipY", + value: function() { + return this._flip("flipY"); + } + /** + * Reset flip + * @returns {Promise} + * @example + * imageEditor.resetFlip().then(status => { + * console.log('flipX: ', status.flipX); + * console.log('flipY: ', status.flipY); + * console.log('angle: ', status.angle); + * }).catch(message => { + * console.log('error: ', message); + * });; + */ + }, { + key: "resetFlip", + value: function() { + return this._flip("reset"); + } + /** + * @param {string} type - 'rotate' or 'setAngle' + * @param {number} angle - angle value (degree) + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + * @private + */ + }, { + key: "_rotate", + value: function(F, j, L) { + var $ = null; + return L ? $ = this.executeSilent(or.ROTATE_IMAGE, F, j) : $ = this.execute(or.ROTATE_IMAGE, F, j), $; + } + /** + * Rotate image + * @returns {Promise} + * @param {number} angle - Additional angle to rotate image + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + * @example + * imageEditor.rotate(10); // angle = 10 + * imageEditor.rotate(10); // angle = 20 + * imageEditor.rotate(5); // angle = 5 + * imageEditor.rotate(-95); // angle = -90 + * imageEditor.rotate(10).then(status => { + * console.log('angle: ', status.angle); + * })).catch(message => { + * console.log('error: ', message); + * }); + */ + }, { + key: "rotate", + value: function(F, j) { + return this._rotate("rotate", F, j); + } + /** + * Set angle + * @param {number} angle - Angle of image + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + * @example + * imageEditor.setAngle(10); // angle = 10 + * imageEditor.rotate(10); // angle = 20 + * imageEditor.setAngle(5); // angle = 5 + * imageEditor.rotate(50); // angle = 55 + * imageEditor.setAngle(-40); // angle = -40 + * imageEditor.setAngle(10).then(status => { + * console.log('angle: ', status.angle); + * })).catch(message => { + * console.log('error: ', message); + * }); + */ + }, { + key: "setAngle", + value: function(F, j) { + return this._rotate("setAngle", F, j); + } + /** + * Set drawing brush + * @param {Object} option brush option + * @param {Number} option.width width + * @param {String} option.color color like 'FFFFFF', 'rgba(0, 0, 0, 0.5)' + * @example + * imageEditor.startDrawingMode('FREE_DRAWING'); + * imageEditor.setBrush({ + * width: 12, + * color: 'rgba(0, 0, 0, 0.5)' + * }); + * imageEditor.setBrush({ + * width: 8, + * color: 'FFFFFF' + * }); + */ + }, { + key: "setBrush", + value: function(F) { + this._graphics.setBrush(F); + } + /** + * Set states of current drawing shape + * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle') + * @param {Object} [options] - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or + * Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stoke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not + * @example + * imageEditor.setDrawingShape('rect', { + * fill: 'red', + * width: 100, + * height: 200 + * }); + * @example + * imageEditor.setDrawingShape('rect', { + * fill: { + * type: 'filter', + * filter: [{blur: 0.3}, {pixelate: 20}] + * }, + * width: 100, + * height: 200 + * }); + * @example + * imageEditor.setDrawingShape('circle', { + * fill: 'transparent', + * stroke: 'blue', + * strokeWidth: 3, + * rx: 10, + * ry: 100 + * }); + * @example + * imageEditor.setDrawingShape('triangle', { // When resizing, the shape keep the 1:1 ratio + * width: 1, + * height: 1, + * isRegular: true + * }); + * @example + * imageEditor.setDrawingShape('circle', { // When resizing, the shape keep the 1:1 ratio + * rx: 10, + * ry: 10, + * isRegular: true + * }); + */ + }, { + key: "setDrawingShape", + value: function(F, j) { + this._graphics.setDrawingShape(F, j); + } + }, { + key: "setDrawingIcon", + value: function(F, j) { + this._graphics.setIconStyle(F, j); + } + /** + * Add shape + * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle') + * @param {Object} options - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or + * Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stroke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.left] - Shape x position + * @param {number} [options.top] - Shape y position + * @param {boolean} [options.isRegular] - Whether resizing shape has 1:1 ratio or not + * @returns {Promise} + * @example + * imageEditor.addShape('rect', { + * fill: 'red', + * stroke: 'blue', + * strokeWidth: 3, + * width: 100, + * height: 200, + * left: 10, + * top: 10, + * isRegular: true + * }); + * @example + * imageEditor.addShape('circle', { + * fill: 'red', + * stroke: 'blue', + * strokeWidth: 3, + * rx: 10, + * ry: 100, + * isRegular: false + * }).then(objectProps => { + * console.log(objectProps.id); + * }); + * @example + * imageEditor.addShape('rect', { + * fill: { + * type: 'filter', + * filter: [{blur: 0.3}, {pixelate: 20}] + * }, + * stroke: 'blue', + * strokeWidth: 3, + * rx: 10, + * ry: 100, + * isRegular: false + * }).then(objectProps => { + * console.log(objectProps.id); + * }); + */ + }, { + key: "addShape", + value: function(F, j) { + return j = j || {}, this._setPositions(j), this.execute(or.ADD_SHAPE, F, j); + } + /** + * Change shape + * @param {number} id - object id + * @param {Object} options - Shape options + * @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or + * Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stroke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {boolean} [options.isRegular] - Whether resizing shape has 1:1 ratio or not + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + * @example + * // call after selecting shape object on canvas + * imageEditor.changeShape(id, { // change rectagle or triangle + * fill: 'red', + * stroke: 'blue', + * strokeWidth: 3, + * width: 100, + * height: 200 + * }); + * @example + * // call after selecting shape object on canvas + * imageEditor.changeShape(id, { // change circle + * fill: 'red', + * stroke: 'blue', + * strokeWidth: 3, + * rx: 10, + * ry: 100 + * }); + */ + }, { + key: "changeShape", + value: function(F, j, L) { + var $ = L ? "executeSilent" : "execute"; + return this[$](or.CHANGE_SHAPE, F, j); + } + /** + * Add text on image + * @param {string} text - Initial input text + * @param {Object} [options] Options for generating text + * @param {Object} [options.styles] Initial styles + * @param {string} [options.styles.fill] Color + * @param {string} [options.styles.fontFamily] Font type for text + * @param {number} [options.styles.fontSize] Size + * @param {string} [options.styles.fontStyle] Type of inclination (normal / italic) + * @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [options.styles.textAlign] Type of text align (left / center / right) + * @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline) + * @param {{x: number, y: number}} [options.position] - Initial position + * @param {boolean} [options.autofocus] - text autofocus, default is true + * @returns {Promise} + * @example + * imageEditor.addText('init text'); + * @example + * imageEditor.addText('init text', { + * styles: { + * fill: '#000', + * fontSize: 20, + * fontWeight: 'bold' + * }, + * position: { + * x: 10, + * y: 10 + * } + * }).then(objectProps => { + * console.log(objectProps.id); + * }); + */ + }, { + key: "addText", + value: function(F, j) { + return F = F || "", j = j || {}, this.execute(or.ADD_TEXT, F, j); + } + /** + * Change contents of selected text object on image + * @param {number} id - object id + * @param {string} text - Changing text + * @returns {Promise} + * @example + * imageEditor.changeText(id, 'change text'); + */ + }, { + key: "changeText", + value: function(F, j) { + return j = j || "", this.execute(or.CHANGE_TEXT, F, j); + } + /** + * Set style + * @param {number} id - object id + * @param {Object} styleObj - text styles + * @param {string} [styleObj.fill] Color + * @param {string} [styleObj.fontFamily] Font type for text + * @param {number} [styleObj.fontSize] Size + * @param {string} [styleObj.fontStyle] Type of inclination (normal / italic) + * @param {string} [styleObj.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [styleObj.textAlign] Type of text align (left / center / right) + * @param {string} [styleObj.textDecoration] Type of line (underline / line-through / overline) + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + * @example + * imageEditor.changeTextStyle(id, { + * fontStyle: 'italic' + * }); + */ + }, { + key: "changeTextStyle", + value: function(F, j, L) { + var $ = L ? "executeSilent" : "execute"; + return this[$](or.CHANGE_TEXT_STYLE, F, j); + } + /** + * change text mode + * @param {string} type - change type + * @private + */ + }, { + key: "_changeActivateMode", + value: function(F) { + F !== "ICON" && this.getDrawingMode() !== F && this.startDrawingMode(F); + } + /** + * 'textChanged' event handler + * @param {Object} target - changed text object + * @private + */ + }, { + key: "_onTextChanged", + value: function(F) { + this.fire(Pt.TEXT_CHANGED, F); + } + /** + * 'iconCreateResize' event handler + * @param {Object} originPointer origin pointer + * @param {Number} originPointer.x x position + * @param {Number} originPointer.y y position + * @private + */ + }, { + key: "_onIconCreateResize", + value: function(F) { + this.fire(Pt.ICON_CREATE_RESIZE, F); + } + /** + * 'iconCreateEnd' event handler + * @param {Object} originPointer origin pointer + * @param {Number} originPointer.x x position + * @param {Number} originPointer.y y position + * @private + */ + }, { + key: "_onIconCreateEnd", + value: function(F) { + this.fire(Pt.ICON_CREATE_END, F); + } + /** + * 'textEditing' event handler + * @private + */ + }, { + key: "_onTextEditing", + value: function() { + this.fire(Pt.TEXT_EDITING); + } + /** + * Mousedown event handler in case of 'TEXT' drawing mode + * @param {fabric.Event} event - Current mousedown event object + * @private + */ + }, { + key: "_onAddText", + value: function(F) { + this.fire(Pt.ADD_TEXT, { + originPosition: F.originPosition, + clientPosition: F.clientPosition + }); + } + /** + * 'addObject' event handler + * @param {Object} objectProps added object properties + * @private + */ + }, { + key: "_onAddObject", + value: function(F) { + var j = this._graphics.getObject(F.id); + this._invoker.fire(Pt.EXECUTE_COMMAND, Ds(j.type)), this._pushAddObjectCommand(j); + } + /** + * 'objectAdded' event handler + * @param {Object} objectProps added object properties + * @private + */ + }, { + key: "_onObjectAdded", + value: function(F) { + this.fire(pO, F), this.fire(XI, F); + } + /** + * 'objectModified' event handler + * @param {fabric.Object} obj - selection object + * @private + */ + }, { + key: "_onObjectModified", + value: function(F) { + F.type !== jt.CROPZONE && (this._invoker.fire(Pt.EXECUTE_COMMAND, Ds(F.type)), this._pushModifyObjectCommand(F)); + } + /** + * 'selectionCleared' event handler + * @private + */ + }, { + key: "_selectionCleared", + value: function() { + this.fire(Ws); + } + /** + * 'selectionCreated' event handler + * @param {Object} eventTarget - Fabric object + * @private + */ + }, { + key: "_selectionCreated", + value: function(F) { + this.fire(gO, F); + } + /** + * Register custom icons + * @param {{iconType: string, pathValue: string}} infos - Infos to register icons + * @example + * imageEditor.registerIcons({ + * customIcon: 'M 0 0 L 20 20 L 10 10 Z', + * customArrow: 'M 60 0 L 120 60 H 90 L 75 45 V 180 H 45 V 45 L 30 60 H 0 Z' + * }); + */ + }, { + key: "registerIcons", + value: function(F) { + this._graphics.registerPaths(F); + } + /** + * Change canvas cursor type + * @param {string} cursorType - cursor type + * @example + * imageEditor.changeCursor('crosshair'); + */ + }, { + key: "changeCursor", + value: function(F) { + this._graphics.changeCursor(F); + } + /** + * Add icon on canvas + * @param {string} type - Icon type ('arrow', 'cancel', custom icon name) + * @param {Object} options - Icon options + * @param {string} [options.fill] - Icon foreground color + * @param {number} [options.left] - Icon x position + * @param {number} [options.top] - Icon y position + * @returns {Promise} + * @example + * imageEditor.addIcon('arrow'); // The position is center on canvas + * @example + * imageEditor.addIcon('arrow', { + * left: 100, + * top: 100 + * }).then(objectProps => { + * console.log(objectProps.id); + * }); + */ + }, { + key: "addIcon", + value: function(F, j) { + return j = j || {}, this._setPositions(j), this.execute(or.ADD_ICON, F, j); + } + /** + * Change icon color + * @param {number} id - object id + * @param {string} color - Color for icon + * @returns {Promise} + * @example + * imageEditor.changeIconColor(id, '#000000'); + */ + }, { + key: "changeIconColor", + value: function(F, j) { + return this.execute(or.CHANGE_ICON_COLOR, F, j); + } + /** + * Remove an object or group by id + * @param {number} id - object id + * @returns {Promise} + * @example + * imageEditor.removeObject(id); + */ + }, { + key: "removeObject", + value: function(F) { + var j = this._graphics.getObject(F), L = j.type; + return this.execute(or.REMOVE_OBJECT, F, Ds(L)); + } + /** + * Whether it has the filter or not + * @param {string} type - Filter type + * @returns {boolean} true if it has the filter + */ + }, { + key: "hasFilter", + value: function(F) { + return this._graphics.hasFilter(F); + } + /** + * Remove filter on canvas image + * @param {string} type - Filter type + * @returns {Promise} + * @example + * imageEditor.removeFilter('Grayscale').then(obj => { + * console.log('filterType: ', obj.type); + * console.log('actType: ', obj.action); + * }).catch(message => { + * console.log('error: ', message); + * }); + */ + }, { + key: "removeFilter", + value: function(F) { + return this.execute(or.REMOVE_FILTER, F); + } + /** + * Apply filter on canvas image + * @param {string} type - Filter type + * @param {object} options - Options to apply filter + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + * @example + * imageEditor.applyFilter('Grayscale'); + * @example + * imageEditor.applyFilter('mask', {maskObjId: id}).then(obj => { + * console.log('filterType: ', obj.type); + * console.log('actType: ', obj.action); + * }).catch(message => { + * console.log('error: ', message); + * });; + */ + }, { + key: "applyFilter", + value: function(F, j, L) { + var $ = L ? "executeSilent" : "execute"; + return this[$](or.APPLY_FILTER, F, j); + } + /** + * Get data url + * @param {Object} options - options for toDataURL + * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" + * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. + * @param {Number} [options.multiplier=1] Multiplier to scale by + * @param {Number} [options.left] Cropping left offset. Introduced in fabric v1.2.14 + * @param {Number} [options.top] Cropping top offset. Introduced in fabric v1.2.14 + * @param {Number} [options.width] Cropping width. Introduced in fabric v1.2.14 + * @param {Number} [options.height] Cropping height. Introduced in fabric v1.2.14 + * @returns {string} A DOMString containing the requested data URI + * @example + * imgEl.src = imageEditor.toDataURL(); + * + * imageEditor.loadImageFromURL(imageEditor.toDataURL(), 'FilterImage').then(() => { + * imageEditor.addImageObject(imgUrl); + * }); + */ + }, { + key: "toDataURL", + value: function(F) { + return this._graphics.toDataURL(F); + } + /** + * Get image name + * @returns {string} image name + * @example + * console.log(imageEditor.getImageName()); + */ + }, { + key: "getImageName", + value: function() { + return this._graphics.getImageName(); + } + /** + * Clear undoStack + * @example + * imageEditor.clearUndoStack(); + */ + }, { + key: "clearUndoStack", + value: function() { + this._invoker.clearUndoStack(); + } + /** + * Clear redoStack + * @example + * imageEditor.clearRedoStack(); + */ + }, { + key: "clearRedoStack", + value: function() { + this._invoker.clearRedoStack(); + } + /** + * Whehter the undo stack is empty or not + * @returns {boolean} + * imageEditor.isEmptyUndoStack(); + */ + }, { + key: "isEmptyUndoStack", + value: function() { + return this._invoker.isEmptyUndoStack(); + } + /** + * Whehter the redo stack is empty or not + * @returns {boolean} + * imageEditor.isEmptyRedoStack(); + */ + }, { + key: "isEmptyRedoStack", + value: function() { + return this._invoker.isEmptyRedoStack(); + } + /** + * Resize canvas dimension + * @param {{width: number, height: number}} dimension - Max width & height + * @returns {Promise} + */ + }, { + key: "resizeCanvasDimension", + value: function(F) { + return F ? this.execute(or.RESIZE_CANVAS_DIMENSION, F) : Ue().reject(Dr.invalidParameters); + } + /** + * Destroy + */ + }, { + key: "destroy", + value: function() { + var F = this; + this.stopDrawingMode(), this._detachDomEvents(), this._graphics.destroy(), this._graphics = null, this.ui && (this._detachColorPickerInputBoxEvents(), this.ui.destroy()), Fe()(this, function(j, L) { + F[L] = null; + }, this); + } + /** + * Set position + * @param {Object} options - Position options (left or top) + * @private + */ + }, { + key: "_setPositions", + value: function(F) { + var j = this._graphics.getCenter(); + Ie()(F.left) && (F.left = j.left), Ie()(F.top) && (F.top = j.top); + } + /** + * Set properties of active object + * @param {number} id - object id + * @param {Object} keyValue - key & value + * @returns {Promise} + * @example + * imageEditor.setObjectProperties(id, { + * left:100, + * top:100, + * width: 200, + * height: 200, + * opacity: 0.5 + * }); + */ + }, { + key: "setObjectProperties", + value: function(F, j) { + return this.execute(or.SET_OBJECT_PROPERTIES, F, j); + } + /** + * Set properties of active object, Do not leave an invoke history. + * @param {number} id - object id + * @param {Object} keyValue - key & value + * @example + * imageEditor.setObjectPropertiesQuietly(id, { + * left:100, + * top:100, + * width: 200, + * height: 200, + * opacity: 0.5 + * }); + */ + }, { + key: "setObjectPropertiesQuietly", + value: function(F, j) { + this._graphics.setObjectProperties(F, j); + } + /** + * Get properties of active object corresponding key + * @param {number} id - object id + * @param {Array|ObjectProps|string} keys - property's key + * @returns {ObjectProps} properties if id is valid or null + * @example + * var props = imageEditor.getObjectProperties(id, 'left'); + * console.log(props); + * @example + * var props = imageEditor.getObjectProperties(id, ['left', 'top', 'width', 'height']); + * console.log(props); + * @example + * var props = imageEditor.getObjectProperties(id, { + * left: null, + * top: null, + * width: null, + * height: null, + * opacity: null + * }); + * console.log(props); + */ + }, { + key: "getObjectProperties", + value: function(F, j) { + var L = this._graphics.getObject(F); + return L ? this._graphics.getObjectProperties(F, j) : null; + } + /** + * Get the canvas size + * @returns {Object} {{width: number, height: number}} canvas size + * @example + * var canvasSize = imageEditor.getCanvasSize(); + * console.log(canvasSize.width); + * console.height(canvasSize.height); + */ + }, { + key: "getCanvasSize", + value: function() { + return this._graphics.getCanvasSize(); + } + /** + * Get object position by originX, originY + * @param {number} id - object id + * @param {string} originX - can be 'left', 'center', 'right' + * @param {string} originY - can be 'top', 'center', 'bottom' + * @returns {Object} {{x:number, y: number}} position by origin if id is valid, or null + * @example + * var position = imageEditor.getObjectPosition(id, 'left', 'top'); + * console.log(position); + */ + }, { + key: "getObjectPosition", + value: function(F, j, L) { + return this._graphics.getObjectPosition(F, j, L); + } + /** + * Set object position by originX, originY + * @param {number} id - object id + * @param {Object} posInfo - position object + * @param {number} posInfo.x - x position + * @param {number} posInfo.y - y position + * @param {string} posInfo.originX - can be 'left', 'center', 'right' + * @param {string} posInfo.originY - can be 'top', 'center', 'bottom' + * @returns {Promise} + * @example + * // align the object to 'left', 'top' + * imageEditor.setObjectPosition(id, { + * x: 0, + * y: 0, + * originX: 'left', + * originY: 'top' + * }); + * @example + * // align the object to 'right', 'top' + * var canvasSize = imageEditor.getCanvasSize(); + * imageEditor.setObjectPosition(id, { + * x: canvasSize.width, + * y: 0, + * originX: 'right', + * originY: 'top' + * }); + * @example + * // align the object to 'left', 'bottom' + * var canvasSize = imageEditor.getCanvasSize(); + * imageEditor.setObjectPosition(id, { + * x: 0, + * y: canvasSize.height, + * originX: 'left', + * originY: 'bottom' + * }); + * @example + * // align the object to 'right', 'bottom' + * var canvasSize = imageEditor.getCanvasSize(); + * imageEditor.setObjectPosition(id, { + * x: canvasSize.width, + * y: canvasSize.height, + * originX: 'right', + * originY: 'bottom' + * }); + */ + }, { + key: "setObjectPosition", + value: function(F, j) { + return this.execute(or.SET_OBJECT_POSITION, F, j); + } + /** + * @param {object} dimensions - Image Dimensions + * @returns {Promise} + */ + }, { + key: "resize", + value: function(F) { + return this.execute(or.RESIZE_IMAGE, F); + } + }]), ce; + }(); + $f.mixin(Wy), lt().mixin(Wy); + var KI = Wy, mU = Ht.ICON, ZI = { + name: or.ADD_ICON, + /** + * Add an icon + * @param {Graphics} graphics - Graphics instance + * @param {string} type - Icon type ('arrow', 'cancel', custom icon name) + * @param {Object} options - Icon options + * @param {string} [options.fill] - Icon foreground color + * @param {string} [options.left] - Icon x position + * @param {string} [options.top] - Icon y position + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = this, $ = W.getComponent(mU); + return $.add(F, j).then(function(re) { + return L.undoData.object = W.getObject(re.id), re; + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + return W.remove(this.undoData.object), Ue().resolve(); + } + }; + Hn.register(ZI); + var cS = { + name: or.ADD_IMAGE_OBJECT, + /** + * Add an image object + * @param {Graphics} graphics - Graphics instance + * @param {string} imgUrl - Image url to make object + * @returns {Promise} + */ + execute: function(W, F) { + var j = this; + return W.addImageObject(F).then(function(L) { + return j.undoData.object = W.getObject(L.id), L; + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + return W.remove(this.undoData.object), Ue().resolve(); + } + }; + Hn.register(cS); + var vO = { + name: or.ADD_OBJECT, + /** + * Add an object + * @param {Graphics} graphics - Graphics instance + * @param {Object} object - Fabric object + * @returns {Promise} + */ + execute: function(W, F) { + return new (Ue())(function(j, L) { + W.contains(F) ? L(Dr.addedObject) : (W.add(F), j(F)); + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @param {Object} object - Fabric object + * @returns {Promise} + */ + undo: function(W, F) { + return new (Ue())(function(j, L) { + W.contains(F) ? (W.remove(F), j(F)) : L(Dr.noObject); + }); + } + }; + Hn.register(vO); + var yU = Ht.SHAPE, mO = { + name: or.ADD_SHAPE, + /** + * Add a shape + * @param {Graphics} graphics - Graphics instance + * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle') + * @param {Object} options - Shape options + * @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stroke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.left] - Shape x position + * @param {number} [options.top] - Shape y position + * @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = this, $ = W.getComponent(yU); + return $.add(F, j).then(function(re) { + var le = re.id; + return L.undoData.object = W.getObject(le), re; + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + return W.remove(this.undoData.object), Ue().resolve(); + } + }; + Hn.register(mO); + var _U = Ht.TEXT, yO = { + name: or.ADD_TEXT, + /** + * Add a text object + * @param {Graphics} graphics - Graphics instance + * @param {string} text - Initial input text + * @param {Object} [options] Options for text styles + * @param {Object} [options.styles] Initial styles + * @param {string} [options.styles.fill] Color + * @param {string} [options.styles.fontFamily] Font type for text + * @param {number} [options.styles.fontSize] Size + * @param {string} [options.styles.fontStyle] Type of inclination (normal / italic) + * @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [options.styles.textAlign] Type of text align (left / center / right) + * @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline) + * @param {{x: number, y: number}} [options.position] - Initial position + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = this, $ = W.getComponent(_U); + if (this.undoData.object) { + var re = this.undoData.object; + return new (Ue())(function(le, me) { + W.contains(re) ? me(Dr.redo) : (W.add(re), le(re)); + }); + } + return $.add(F, j).then(function(le) { + var me = le.id, ve = W.getObject(me); + return L.undoData.object = ve, Dc(kd(ve, function() { + return Xv(me, ve, !1); + })), le; + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + return W.remove(this.undoData.object), Ue().resolve(); + } + }; + Hn.register(yO); + var qI = Ht.FILTER, _O = null; + function SO(ce, W, F) { + var j = {}; + return ce === "mask" && (j.object = F.mask), j.options = W, j; + } + var bO = { + name: or.APPLY_FILTER, + /** + * Apply a filter into an image + * @param {Graphics} graphics - Graphics instance + * @param {string} type - Filter type + * @param {Object} options - Filter options + * @param {number} options.maskObjId - masking image object id + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + */ + execute: function(W, F, j, L) { + var $ = W.getComponent(qI); + if (F === "mask") { + var re = W.getObject(j.maskObjId); + if (!(re && re.isType("image"))) + return Ue().reject(Dr.invalidParameters); + we()(j, { + mask: re + }), W.remove(j.mask); + } + if (!this.isRedo) { + var le = $.getOptions(F), me = SO(F, le, j); + _O = this.setUndoData(me, _O, L); + } + return $.add(F, j); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @param {string} type - Filter type + * @returns {Promise} + */ + undo: function(W, F) { + var j = W.getComponent(qI); + if (F === "mask") { + var L = this.undoData.object; + return W.add(L), W.setActiveObject(L), j.remove(F); + } + return this.undoData.options ? j.add(F, this.undoData.options) : j.remove(F); + } + }; + Hn.register(bO); + var EO = Ht.ICON, JI = { + name: or.CHANGE_ICON_COLOR, + /** + * Change icon color + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @param {string} color - Color for icon + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = this; + return new (Ue())(function($, re) { + var le = W.getComponent(EO), me = W.getObject(F); + me || re(Dr.noObject), L.undoData.object = me, L.undoData.color = le.getColor(me), le.setColor(j, me), $(); + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(EO), j = this.undoData, L = j.object, $ = j.color; + return F.setColor($, L), Ue().resolve(); + } + }; + Hn.register(JI); + var QI = Ht.SHAPE, ex = null; + function SU(ce, W) { + var F = { + object: W, + options: {} + }; + return Xp()(ce, function(j, L) { + F.options[L] = W[L]; + }), F; + } + var bU = { + name: or.CHANGE_SHAPE, + /** + * Change a shape + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @param {Object} options - Shape options + * @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent') + * @param {string} [options.stroke] - Shape outline color + * @param {number} [options.strokeWidth] - Shape outline width + * @param {number} [options.width] - Width value (When type option is 'rect', this options can use) + * @param {number} [options.height] - Height value (When type option is 'rect', this options can use) + * @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use) + * @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use) + * @param {number} [options.left] - Shape x position + * @param {number} [options.top] - Shape y position + * @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + */ + execute: function(W, F, j, L) { + var $ = W.getComponent(QI), re = W.getObject(F); + if (!re) + return Ue().reject(Dr.noObject); + if (!this.isRedo) { + var le = SU(j, re); + ex = this.setUndoData(le, ex, L); + } + return $.change(re, j); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(QI), j = this.undoData, L = j.object, $ = j.options; + return F.change(L, $); + } + }; + Hn.register(bU); + var CO = Ht.TEXT, EU = { + name: or.CHANGE_TEXT, + /** + * Change a text + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @param {string} text - Changing text + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = W.getComponent(CO), $ = W.getObject(F); + return $ ? (this.undoData.object = $, this.undoData.text = L.getText($), L.change($, j)) : Ue().reject(Dr.noObject); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(CO), j = this.undoData, L = j.object, $ = j.text; + return F.change(L, $); + } + }; + Hn.register(EU); + var TO = Ht.TEXT, tx = null; + function uC(ce, W) { + var F = { + object: W, + styles: {} + }; + return Xp()(ce, function(j, L) { + var $ = W[L]; + F.styles[L] = $; + }), F; + } + var Oc = { + name: or.CHANGE_TEXT_STYLE, + /** + * Change text styles + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @param {Object} styles - text styles + * @param {string} [styles.fill] Color + * @param {string} [styles.fontFamily] Font type for text + * @param {number} [styles.fontSize] Size + * @param {string} [styles.fontStyle] Type of inclination (normal / italic) + * @param {string} [styles.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [styles.textAlign] Type of text align (left / center / right) + * @param {string} [styles.textDecoration] Type of line (underline / line-through / overline) + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + */ + execute: function(W, F, j, L) { + var $ = W.getComponent(TO), re = W.getObject(F); + if (!re) + return Ue().reject(Dr.noObject); + if (!this.isRedo) { + var le = uC(j, re); + tx = this.setUndoData(le, tx, L); + } + return $.setStyle(re, j); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(TO), j = this.undoData, L = j.object, $ = j.styles; + return F.setStyle(L, $); + } + }; + Hn.register(Oc); + var hC = { + name: or.CLEAR_OBJECTS, + /** + * Clear all objects without background (main) image + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + execute: function(W) { + var F = this; + return new (Ue())(function(j) { + F.undoData.objects = W.removeAll(), j(); + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + * @ignore + */ + undo: function(W) { + return W.add(this.undoData.objects), Ue().resolve(); + } + }; + Hn.register(hC); + var Gy = Ht.FLIP, CU = { + name: or.FLIP_IMAGE, + /** + * flip an image + * @param {Graphics} graphics - Graphics instance + * @param {string} type - 'flipX' or 'flipY' or 'reset' + * @returns {Promise} + */ + execute: function(W, F) { + var j = W.getComponent(Gy); + return this.undoData.setting = j.getCurrentSetting(), j[F](); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(Gy); + return F.set(this.undoData.setting); + } + }; + Hn.register(CU); + var rx = Ht.IMAGE_LOADER, Vh = { + name: or.LOAD_IMAGE, + /** + * Load a background (main) image + * @param {Graphics} graphics - Graphics instance + * @param {string} imageName - Image name + * @param {string} imgUrl - Image Url + * @returns {Promise} + */ + execute: function(W, F, j) { + var L, $ = W.getComponent(rx), re = $.getCanvasImage(), le = re ? re.width : 0, me = re ? re.height : 0, ve = Yu()(L = W.removeAll(!0)).call(L, function(Oe) { + return Oe.type !== "cropzone"; + }); + return Yt()(ve).call(ve, function(Oe) { + Oe.evented = !0; + }), this.undoData = { + name: $.getImageName(), + image: re, + objects: ve + }, $.load(F, j).then(function(Oe) { + return { + oldWidth: le, + oldHeight: me, + newWidth: Oe.width, + newHeight: Oe.height + }; + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(rx), j = this.undoData, L = j.objects, $ = j.name, re = j.image; + return W.removeAll(!0), W.add(L), F.load($, re); + } + }; + Hn.register(Vh); + var cg = Ht.FILTER, dC = { + name: or.REMOVE_FILTER, + /** + * Remove a filter from an image + * @param {Graphics} graphics - Graphics instance + * @param {string} type - Filter type + * @returns {Promise} + */ + execute: function(W, F) { + var j = W.getComponent(cg); + return this.undoData.options = j.getOptions(F), j.remove(F); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @param {string} type - Filter type + * @returns {Promise} + */ + undo: function(W, F) { + var j = W.getComponent(cg), L = this.undoData.options; + return j.add(F, L); + } + }; + Hn.register(dC); + var TU = { + name: or.REMOVE_OBJECT, + /** + * Remove an object + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @returns {Promise} + */ + execute: function(W, F) { + var j = this; + return new (Ue())(function(L, $) { + j.undoData.objects = W.removeObjectById(F), j.undoData.objects.length ? L() : $(Dr.noObject); + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + return W.add(this.undoData.objects), Ue().resolve(); + } + }; + Hn.register(TU); + var nx = { + name: or.RESIZE_CANVAS_DIMENSION, + /** + * resize the canvas with given dimension + * @param {Graphics} graphics - Graphics instance + * @param {{width: number, height: number}} dimension - Max width & height + * @returns {Promise} + */ + execute: function(W, F) { + var j = this; + return new (Ue())(function(L) { + j.undoData.size = { + width: W.cssMaxWidth, + height: W.cssMaxHeight + }, W.setCssMaxDimension(F), W.adjustCanvasDimension(), L(); + }); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + return W.setCssMaxDimension(this.undoData.size), W.adjustCanvasDimension(), Ue().resolve(); + } + }; + Hn.register(nx); + var ix = Ht.ROTATION, ug = null; + function wO(ce) { + return { + angle: ce.getCurrentAngle() + }; + } + var wU = { + name: or.ROTATE_IMAGE, + /** + * Rotate an image + * @param {Graphics} graphics - Graphics instance + * @param {string} type - 'rotate' or 'setAngle' + * @param {number} angle - angle value (degree) + * @param {boolean} isSilent - is silent execution or not + * @returns {Promise} + */ + execute: function(W, F, j, L) { + var $ = W.getComponent(ix); + if (!this.isRedo) { + var re = wO($); + ug = this.setUndoData(re, ug, L); + } + return $[F](j); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(ix), j = ct(this.args, 3), L = j[1], $ = j[2]; + return L === "setAngle" ? F[L](this.undoData.angle) : F.rotate(-$); + } + }; + Hn.register(wU); + var IO = { + name: or.SET_OBJECT_PROPERTIES, + /** + * Set object properties + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @param {Object} props - properties + * @param {string} [props.fill] Color + * @param {string} [props.fontFamily] Font type for text + * @param {number} [props.fontSize] Size + * @param {string} [props.fontStyle] Type of inclination (normal / italic) + * @param {string} [props.fontWeight] Type of thicker or thinner looking (normal / bold) + * @param {string} [props.textAlign] Type of text align (left / center / right) + * @param {string} [props.textDecoration] Type of line (underline / line-through / overline) + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = this, $ = W.getObject(F); + return $ ? (this.undoData.props = {}, Xp()(j, function(re, le) { + L.undoData.props[le] = $[le]; + }), W.setObjectProperties(F, j), Ue().resolve()) : Ue().reject(Dr.noObject); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @returns {Promise} + */ + undo: function(W, F) { + var j = this.undoData.props; + return W.setObjectProperties(F, j), Ue().resolve(); + } + }; + Hn.register(IO); + var tp = { + name: or.SET_OBJECT_POSITION, + /** + * Set object properties + * @param {Graphics} graphics - Graphics instance + * @param {number} id - object id + * @param {Object} posInfo - position object + * @param {number} posInfo.x - x position + * @param {number} posInfo.y - y position + * @param {string} posInfo.originX - can be 'left', 'center', 'right' + * @param {string} posInfo.originY - can be 'top', 'center', 'bottom' + * @returns {Promise} + */ + execute: function(W, F, j) { + var L = W.getObject(F); + return L ? (this.undoData.objectId = F, this.undoData.props = W.getObjectProperties(F, ["left", "top"]), W.setObjectPosition(F, j), W.renderAll(), Ue().resolve()) : Ue().reject(Dr.noObject); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = this.undoData, j = F.objectId, L = F.props; + return W.setObjectProperties(j, L), W.renderAll(), Ue().resolve(); + } + }; + Hn.register(tp); + var uS = { + name: or.CHANGE_SELECTION, + execute: function(W, F) { + return this.isRedo ? Yt()(F).call(F, function(j) { + W.setObjectProperties(j.id, j); + }) : this.undoData = sg(), Ue().resolve(); + }, + undo: function(W) { + var F; + return Yt()(F = this.undoData).call(F, function(j) { + W.setObjectProperties(j.id, j); + }), Ue().resolve(); + } + }; + Hn.register(uS); + var xO = Ht.RESIZE, ax = { + name: or.RESIZE_IMAGE, + /** + * Resize an image + * @param {Graphics} graphics - Graphics instance + * @param {object} dimensions - Image Dimensions + * @returns {Promise} + */ + execute: function(W, F) { + var j = W.getComponent(xO), L = j.getOriginalDimensions(); + return L || (L = j.getCurrentDimensions()), this.undoData.dimensions = L, j.resize(F); + }, + /** + * @param {Graphics} graphics - Graphics instance + * @returns {Promise} + */ + undo: function(W) { + var F = W.getComponent(xO); + return F.resize(this.undoData.dimensions); + } + }; + Hn.register(ax); + var ox = KI; + }(), o = o.default, o; + }() + ); + }); +})(LCe); +var idt = LCe.exports; +const Zue = /* @__PURE__ */ cD(idt); +class adt extends $react.Component { + constructor(r) { + super(r); + R_(this, "rootEl", $react.createRef()); + R_(this, "imageEditorInst"); + R_(this, "props"); + this.props = r; + } + componentDidMount() { + this.rootEl.current !== null && (this.imageEditorInst = new Zue(this.rootEl.current, br({}, this.props))); + } + componentWillUnmount() { + this.imageEditorInst !== void 0 && (this.imageEditorInst.destroy(), this.imageEditorInst = void 0); + } + shouldComponentUpdate(r) { + return JSON.stringify([this.props.includeUI.menu, this.props.includeUI.loadImage]) !== JSON.stringify([r.includeUI.menu, r.includeUI.loadImage]) && (this.imageEditorInst = new Zue(this.rootEl.current, br({}, r))), !1; + } + getInstance() { + return this.imageEditorInst; + } + getRootElement() { + return this.rootEl.current; + } + render() { + return /* @__PURE__ */ dt("div", { + ref: this.rootEl + }); + } +} +const odt = { + src: $lowcoder_sdk.withDefault($lowcoder_sdk.StringStateControl, yt("imageEditor.defaultSrc")), + name: $lowcoder_sdk.withDefault($lowcoder_sdk.StringStateControl, "Example"), + crop: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + flip: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + rotate: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + draw: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + shape: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + icon: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + text: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + mask: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + filter: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + dataURI: $lowcoder_sdk.stringExposingStateControl("dataURI"), + data: $lowcoder_sdk.stringExposingStateControl("data"), + onEvent: $lowcoder_sdk.eventHandlerControl([Qht]), + buttonText: $lowcoder_sdk.withDefault($lowcoder_sdk.StringStateControl, yt("imageEditor.save")) +}, sdt = (e) => { + var u; + const t = $react.useRef(null), r = $react.useRef(null), n = ["crop", "flip", "rotate", "draw", "shape", "icon", "text", "mask", "filter"], i = /* @__PURE__ */ new Map(); + i.set("crop", e.crop), i.set("flip", e.flip), i.set("rotate", e.rotate), i.set("draw", e.draw), i.set("shape", e.shape), i.set("icon", e.icon), i.set("text", e.text), i.set("mask", e.mask), i.set("filter", e.filter); + let a = n.filter((d) => i.get(d)); + const o = () => { + const d = t.current, f = r.current; + d.imageEditorInst.ui.resizeEditor({ + uiSize: { + width: f == null ? void 0 : f.clientWidth, + height: f == null ? void 0 : f.clientHeight + } + }); + }, l = () => { + let f = t.current.imageEditorInst.toDataURL(); + e.dataURI.onChange(f), e.data.onChange(f.split(",")[1]); + }; + return /* @__PURE__ */ gn(edt, { + ref: r, + children: [/* @__PURE__ */ dt(tdt, { + type: "primary", + onClick: () => { + l(), e.onEvent("save"); + }, + children: e.buttonText.value + }), /* @__PURE__ */ dt(uF, { + onResize: o, + children: /* @__PURE__ */ dt("div", { + style: { + width: "100%", + height: "100%" + }, + children: /* @__PURE__ */ dt(adt, { + ref: t, + includeUI: { + loadImage: { + path: e.src.value, + name: e.name.value + }, + menu: a, + theme: rdt, + uiSize: { + width: "100%", + height: "100%" + }, + menuBarPosition: "bottom", + locale: (u = lD.imageEditorLocale) != null ? u : {} + }, + cssMaxWidth: document.documentElement.clientWidth, + cssMaxHeight: document.documentElement.clientHeight, + selectionStyle: { + cornerSize: 50, + rotatingPointOffset: 100 + }, + usageStatistics: !1 + }) + }) + })] + }); +}; +let LG = function() { + return new $lowcoder_sdk.UICompBuilder(odt, (e) => /* @__PURE__ */ dt(sdt, br({}, e))).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.basic, + children: [e.src.propertyView({ + label: yt("imageEditor.src"), + placeholder: "http://xxx.jpg" + }), e.name.propertyView({ + label: yt("imageEditor.name") + }), e.buttonText.propertyView({ + label: yt("imageEditor.buttonText") + })] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.interaction, + children: e.onEvent.getPropertyView() + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.advanced, + children: [e.crop.propertyView({ + label: "Crop" + }), e.flip.propertyView({ + label: "Flip" + }), e.rotate.propertyView({ + label: "Rotate" + }), e.draw.propertyView({ + label: "Draw" + }), e.shape.propertyView({ + label: "Shape" + }), e.icon.propertyView({ + label: "Icon" + }), e.text.propertyView({ + label: "Text" + }), e.mask.propertyView({ + label: "Mask" + }), e.filter.propertyView({ + label: "Filter" + })] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: $lowcoder_sdk.hiddenPropertyView(e) + })] + })).build(); +}(); +LG = class extends LG { + autoHeight() { + return !1; + } +}; +const ldt = $lowcoder_sdk.withExposingConfigs(LG, [new $lowcoder_sdk.NameConfig("src", yt("imageEditor.srcDesc")), new $lowcoder_sdk.NameConfig("name", yt("imageEditor.nameDesc")), new $lowcoder_sdk.NameConfig("dataURI", yt("imageEditor.dataURIDesc")), new $lowcoder_sdk.NameConfig("data", yt("imageEditor.dataDesc")), new $lowcoder_sdk.NameConfig("buttonText", yt("imageEditor.buttonTextDesc")), $lowcoder_sdk.NameConfigHidden]), c4 = () => ({ + height: 0, + opacity: 0 +}), que = (e) => { + const { + scrollHeight: t + } = e; + return { + height: t, + opacity: 1 + }; +}, cdt = (e) => ({ + height: e ? e.offsetHeight : 0 +}), u4 = (e, t) => (t == null ? void 0 : t.deadline) === !0 || t.propertyName === "height", udt = function() { + return { + motionName: `${arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "ant"}-motion-collapse`, + onAppearStart: c4, + onEnterStart: c4, + onAppearActive: que, + onEnterActive: que, + onLeaveStart: cdt, + onLeaveActive: c4, + onAppearEnd: u4, + onEnterEnd: u4, + onLeaveEnd: u4, + motionDeadline: 500 + }; +}, hdt = (e, t, r) => r !== void 0 ? r : `${e}-${t}`, Jue = udt; +var Vb = "RC_FORM_INTERNAL_HOOKS", ko = function() { + fd(!1, "Can not find FormContext. Please make sure you wrap Field under Form."); +}, EE = /* @__PURE__ */ $react.createContext({ + getFieldValue: ko, + getFieldsValue: ko, + getFieldError: ko, + getFieldWarning: ko, + getFieldsError: ko, + isFieldsTouched: ko, + isFieldTouched: ko, + isFieldValidating: ko, + isFieldsValidating: ko, + resetFields: ko, + setFields: ko, + setFieldValue: ko, + setFieldsValue: ko, + validateFields: ko, + submit: ko, + getInternalHooks: function() { + return ko(), { + dispatch: ko, + initEntityValue: ko, + registerField: ko, + useSubscribe: ko, + setInitialValues: ko, + destroyForm: ko, + setCallbacks: ko, + registerWatch: ko, + getFields: ko, + setValidateMessages: ko, + setPreserve: ko, + getInitialValue: ko + }; + } +}), zR = /* @__PURE__ */ $react.createContext(null); +function FG(e) { + return e == null ? [] : Array.isArray(e) ? e : [e]; +} +function ddt(e) { + return e && !!e._init; +} +function zb() { + return zb = Object.assign ? Object.assign.bind() : function(e) { + for (var t = 1; t < arguments.length; t++) { + var r = arguments[t]; + for (var n in r) + Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); + } + return e; + }, zb.apply(this, arguments); +} +function fdt(e, t) { + e.prototype = Object.create(t.prototype), e.prototype.constructor = e, HR(e, t); +} +function BG(e) { + return BG = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(r) { + return r.__proto__ || Object.getPrototypeOf(r); + }, BG(e); +} +function HR(e, t) { + return HR = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(n, i) { + return n.__proto__ = i, n; + }, HR(e, t); +} +function pdt() { + if (typeof Reflect == "undefined" || !Reflect.construct || Reflect.construct.sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })), !0; + } catch (e) { + return !1; + } +} +function HN(e, t, r) { + return pdt() ? HN = Reflect.construct.bind() : HN = function(i, a, o) { + var l = [null]; + l.push.apply(l, a); + var u = Function.bind.apply(i, l), d = new u(); + return o && HR(d, o.prototype), d; + }, HN.apply(null, arguments); +} +function gdt(e) { + return Function.toString.call(e).indexOf("[native code]") !== -1; +} +function UG(e) { + var t = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0; + return UG = function(n) { + if (n === null || !gdt(n)) + return n; + if (typeof n != "function") + throw new TypeError("Super expression must either be null or a function"); + if (typeof t != "undefined") { + if (t.has(n)) + return t.get(n); + t.set(n, i); + } + function i() { + return HN(n, arguments, BG(this).constructor); + } + return i.prototype = Object.create(n.prototype, { + constructor: { + value: i, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), HR(i, n); + }, UG(e); +} +var vdt = /%[sdj%]/g, mdt = function() { +}; +typeof process != "undefined" && process.env; +function jG(e) { + if (!e || !e.length) + return null; + var t = {}; + return e.forEach(function(r) { + var n = r.field; + t[n] = t[n] || [], t[n].push(r); + }), t; +} +function hd(e) { + for (var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), n = 1; n < t; n++) + r[n - 1] = arguments[n]; + var i = 0, a = r.length; + if (typeof e == "function") + return e.apply(null, r); + if (typeof e == "string") { + var o = e.replace(vdt, function(l) { + if (l === "%%") + return "%"; + if (i >= a) + return l; + switch (l) { + case "%s": + return String(r[i++]); + case "%d": + return Number(r[i++]); + case "%j": + try { + return JSON.stringify(r[i++]); + } catch (u) { + return "[Circular]"; + } + break; + default: + return l; + } + }); + return o; + } + return e; +} +function ydt(e) { + return e === "string" || e === "url" || e === "hex" || e === "email" || e === "date" || e === "pattern"; +} +function Bl(e, t) { + return !!(e == null || t === "array" && Array.isArray(e) && !e.length || ydt(t) && typeof e == "string" && !e); +} +function _dt(e, t, r) { + var n = [], i = 0, a = e.length; + function o(l) { + n.push.apply(n, l || []), i++, i === a && r(n); + } + e.forEach(function(l) { + t(l, o); + }); +} +function Que(e, t, r) { + var n = 0, i = e.length; + function a(o) { + if (o && o.length) { + r(o); + return; + } + var l = n; + n = n + 1, l < i ? t(e[l], a) : r([]); + } + a([]); +} +function Sdt(e) { + var t = []; + return Object.keys(e).forEach(function(r) { + t.push.apply(t, e[r] || []); + }), t; +} +var ehe = /* @__PURE__ */ function(e) { + fdt(t, e); + function t(r, n) { + var i; + return i = e.call(this, "Async Validation Error") || this, i.errors = r, i.fields = n, i; + } + return t; +}(/* @__PURE__ */ UG(Error)); +function bdt(e, t, r, n, i) { + if (t.first) { + var a = new Promise(function(v, y) { + var C = function(_) { + return n(_), _.length ? y(new ehe(_, jG(_))) : v(i); + }, A = Sdt(e); + Que(A, r, C); + }); + return a.catch(function(v) { + return v; + }), a; + } + var o = t.firstFields === !0 ? Object.keys(e) : t.firstFields || [], l = Object.keys(e), u = l.length, d = 0, f = [], g = new Promise(function(v, y) { + var C = function(S) { + if (f.push.apply(f, S), d++, d === u) + return n(f), f.length ? y(new ehe(f, jG(f))) : v(i); + }; + l.length || (n(f), v(i)), l.forEach(function(A) { + var S = e[A]; + o.indexOf(A) !== -1 ? Que(S, r, C) : _dt(S, r, C); + }); + }); + return g.catch(function(v) { + return v; + }), g; +} +function Edt(e) { + return !!(e && e.message !== void 0); +} +function Cdt(e, t) { + for (var r = e, n = 0; n < t.length; n++) { + if (r == null) + return r; + r = r[t[n]]; + } + return r; +} +function the(e, t) { + return function(r) { + var n; + return e.fullFields ? n = Cdt(t, e.fullFields) : n = t[r.field || e.fullField], Edt(r) ? (r.field = r.field || e.fullField, r.fieldValue = n, r) : { + message: typeof r == "function" ? r() : r, + fieldValue: n, + field: r.field || e.fullField + }; + }; +} +function rhe(e, t) { + if (t) { + for (var r in t) + if (t.hasOwnProperty(r)) { + var n = t[r]; + typeof n == "object" && typeof e[r] == "object" ? e[r] = zb({}, e[r], n) : e[r] = n; + } + } + return e; +} +var FCe = function(t, r, n, i, a, o) { + t.required && (!n.hasOwnProperty(t.field) || Bl(r, o || t.type)) && i.push(hd(a.messages.required, t.fullField)); +}, Tdt = function(t, r, n, i, a) { + (/^\s+$/.test(r) || r === "") && i.push(hd(a.messages.whitespace, t.fullField)); +}, HP, wdt = function() { + if (HP) + return HP; + var e = "[a-fA-F\\d:]", t = function(w) { + return w && w.includeBoundaries ? "(?:(?<=\\s|^)(?=" + e + ")|(?<=" + e + ")(?=\\s|$))" : ""; + }, r = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}", n = "[a-fA-F\\d]{1,4}", i = (` +(?: +(?:` + n + ":){7}(?:" + n + `|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8 +(?:` + n + ":){6}(?:" + r + "|:" + n + `|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4 +(?:` + n + ":){5}(?::" + r + "|(?::" + n + `){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4 +(?:` + n + ":){4}(?:(?::" + n + "){0,1}:" + r + "|(?::" + n + `){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4 +(?:` + n + ":){3}(?:(?::" + n + "){0,2}:" + r + "|(?::" + n + `){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4 +(?:` + n + ":){2}(?:(?::" + n + "){0,3}:" + r + "|(?::" + n + `){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4 +(?:` + n + ":){1}(?:(?::" + n + "){0,4}:" + r + "|(?::" + n + `){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4 +(?::(?:(?::` + n + "){0,5}:" + r + "|(?::" + n + `){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4 +)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1 +`).replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim(), a = new RegExp("(?:^" + r + "$)|(?:^" + i + "$)"), o = new RegExp("^" + r + "$"), l = new RegExp("^" + i + "$"), u = function(w) { + return w && w.exact ? a : new RegExp("(?:" + t(w) + r + t(w) + ")|(?:" + t(w) + i + t(w) + ")", "g"); + }; + u.v4 = function(I) { + return I && I.exact ? o : new RegExp("" + t(I) + r + t(I), "g"); + }, u.v6 = function(I) { + return I && I.exact ? l : new RegExp("" + t(I) + i + t(I), "g"); + }; + var d = "(?:(?:[a-z]+:)?//)", f = "(?:\\S+(?::\\S*)?@)?", g = u.v4().source, v = u.v6().source, y = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)", C = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*", A = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))", S = "(?::\\d{2,5})?", _ = '(?:[/?#][^\\s"]*)?', E = "(?:" + d + "|www\\.)" + f + "(?:localhost|" + g + "|" + v + "|" + y + C + A + ")" + S + _; + return HP = new RegExp("(?:^" + E + "$)", "i"), HP; +}, nhe = { + // http://emailregex.com/ + email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/, + // url: new RegExp( + // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$', + // 'i', + // ), + hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i +}, S1 = { + integer: function(t) { + return S1.number(t) && parseInt(t, 10) === t; + }, + float: function(t) { + return S1.number(t) && !S1.integer(t); + }, + array: function(t) { + return Array.isArray(t); + }, + regexp: function(t) { + if (t instanceof RegExp) + return !0; + try { + return !!new RegExp(t); + } catch (r) { + return !1; + } + }, + date: function(t) { + return typeof t.getTime == "function" && typeof t.getMonth == "function" && typeof t.getYear == "function" && !isNaN(t.getTime()); + }, + number: function(t) { + return isNaN(t) ? !1 : typeof t == "number"; + }, + object: function(t) { + return typeof t == "object" && !S1.array(t); + }, + method: function(t) { + return typeof t == "function"; + }, + email: function(t) { + return typeof t == "string" && t.length <= 320 && !!t.match(nhe.email); + }, + url: function(t) { + return typeof t == "string" && t.length <= 2048 && !!t.match(wdt()); + }, + hex: function(t) { + return typeof t == "string" && !!t.match(nhe.hex); + } +}, Idt = function(t, r, n, i, a) { + if (t.required && r === void 0) { + FCe(t, r, n, i, a); + return; + } + var o = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"], l = t.type; + o.indexOf(l) > -1 ? S1[l](r) || i.push(hd(a.messages.types[l], t.fullField, t.type)) : l && typeof r !== t.type && i.push(hd(a.messages.types[l], t.fullField, t.type)); +}, xdt = function(t, r, n, i, a) { + var o = typeof t.len == "number", l = typeof t.min == "number", u = typeof t.max == "number", d = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, f = r, g = null, v = typeof r == "number", y = typeof r == "string", C = Array.isArray(r); + if (v ? g = "number" : y ? g = "string" : C && (g = "array"), !g) + return !1; + C && (f = r.length), y && (f = r.replace(d, "_").length), o ? f !== t.len && i.push(hd(a.messages[g].len, t.fullField, t.len)) : l && !u && f < t.min ? i.push(hd(a.messages[g].min, t.fullField, t.min)) : u && !l && f > t.max ? i.push(hd(a.messages[g].max, t.fullField, t.max)) : l && u && (f < t.min || f > t.max) && i.push(hd(a.messages[g].range, t.fullField, t.min, t.max)); +}, VT = "enum", Adt = function(t, r, n, i, a) { + t[VT] = Array.isArray(t[VT]) ? t[VT] : [], t[VT].indexOf(r) === -1 && i.push(hd(a.messages[VT], t.fullField, t[VT].join(", "))); +}, Rdt = function(t, r, n, i, a) { + if (t.pattern) { + if (t.pattern instanceof RegExp) + t.pattern.lastIndex = 0, t.pattern.test(r) || i.push(hd(a.messages.pattern.mismatch, t.fullField, r, t.pattern)); + else if (typeof t.pattern == "string") { + var o = new RegExp(t.pattern); + o.test(r) || i.push(hd(a.messages.pattern.mismatch, t.fullField, r, t.pattern)); + } + } +}, wa = { + required: FCe, + whitespace: Tdt, + type: Idt, + range: xdt, + enum: Adt, + pattern: Rdt +}, Ddt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r, "string") && !t.required) + return n(); + wa.required(t, r, i, o, a, "string"), Bl(r, "string") || (wa.type(t, r, i, o, a), wa.range(t, r, i, o, a), wa.pattern(t, r, i, o, a), t.whitespace === !0 && wa.whitespace(t, r, i, o, a)); + } + n(o); +}, Odt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && wa.type(t, r, i, o, a); + } + n(o); +}, Mdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (r === "" && (r = void 0), Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && (wa.type(t, r, i, o, a), wa.range(t, r, i, o, a)); + } + n(o); +}, kdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && wa.type(t, r, i, o, a); + } + n(o); +}, Pdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), Bl(r) || wa.type(t, r, i, o, a); + } + n(o); +}, Ndt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && (wa.type(t, r, i, o, a), wa.range(t, r, i, o, a)); + } + n(o); +}, Ldt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && (wa.type(t, r, i, o, a), wa.range(t, r, i, o, a)); + } + n(o); +}, Fdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (r == null && !t.required) + return n(); + wa.required(t, r, i, o, a, "array"), r != null && (wa.type(t, r, i, o, a), wa.range(t, r, i, o, a)); + } + n(o); +}, Bdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && wa.type(t, r, i, o, a); + } + n(o); +}, Udt = "enum", jdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a), r !== void 0 && wa[Udt](t, r, i, o, a); + } + n(o); +}, $dt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r, "string") && !t.required) + return n(); + wa.required(t, r, i, o, a), Bl(r, "string") || wa.pattern(t, r, i, o, a); + } + n(o); +}, Vdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r, "date") && !t.required) + return n(); + if (wa.required(t, r, i, o, a), !Bl(r, "date")) { + var u; + r instanceof Date ? u = r : u = new Date(r), wa.type(t, u, i, o, a), u && wa.range(t, u.getTime(), i, o, a); + } + } + n(o); +}, zdt = function(t, r, n, i, a) { + var o = [], l = Array.isArray(r) ? "array" : typeof r; + wa.required(t, r, i, o, a, l), n(o); +}, h4 = function(t, r, n, i, a) { + var o = t.type, l = [], u = t.required || !t.required && i.hasOwnProperty(t.field); + if (u) { + if (Bl(r, o) && !t.required) + return n(); + wa.required(t, r, i, l, a, o), Bl(r, o) || wa.type(t, r, i, l, a); + } + n(l); +}, Hdt = function(t, r, n, i, a) { + var o = [], l = t.required || !t.required && i.hasOwnProperty(t.field); + if (l) { + if (Bl(r) && !t.required) + return n(); + wa.required(t, r, i, o, a); + } + n(o); +}, z1 = { + string: Ddt, + method: Odt, + number: Mdt, + boolean: kdt, + regexp: Pdt, + integer: Ndt, + float: Ldt, + array: Fdt, + object: Bdt, + enum: jdt, + pattern: $dt, + date: Vdt, + url: h4, + hex: h4, + email: h4, + required: zdt, + any: Hdt +}; +function $G() { + return { + default: "Validation error on field %s", + required: "%s is required", + enum: "%s must be one of %s", + whitespace: "%s cannot be empty", + date: { + format: "%s date %s is invalid for format %s", + parse: "%s date could not be parsed, %s is invalid ", + invalid: "%s date %s is invalid" + }, + types: { + string: "%s is not a %s", + method: "%s is not a %s (function)", + array: "%s is not an %s", + object: "%s is not an %s", + number: "%s is not a %s", + date: "%s is not a %s", + boolean: "%s is not a %s", + integer: "%s is not an %s", + float: "%s is not a %s", + regexp: "%s is not a valid %s", + email: "%s is not a valid %s", + url: "%s is not a valid %s", + hex: "%s is not a valid %s" + }, + string: { + len: "%s must be exactly %s characters", + min: "%s must be at least %s characters", + max: "%s cannot be longer than %s characters", + range: "%s must be between %s and %s characters" + }, + number: { + len: "%s must equal %s", + min: "%s cannot be less than %s", + max: "%s cannot be greater than %s", + range: "%s must be between %s and %s" + }, + array: { + len: "%s must be exactly %s in length", + min: "%s cannot be less than %s in length", + max: "%s cannot be greater than %s in length", + range: "%s must be between %s and %s in length" + }, + pattern: { + mismatch: "%s value %s does not match pattern %s" + }, + clone: function() { + var t = JSON.parse(JSON.stringify(this)); + return t.clone = this.clone, t; + } + }; +} +var VG = $G(), WD = /* @__PURE__ */ function() { + function e(r) { + this.rules = null, this._messages = VG, this.define(r); + } + var t = e.prototype; + return t.define = function(n) { + var i = this; + if (!n) + throw new Error("Cannot configure a schema with no rules"); + if (typeof n != "object" || Array.isArray(n)) + throw new Error("Rules must be an object"); + this.rules = {}, Object.keys(n).forEach(function(a) { + var o = n[a]; + i.rules[a] = Array.isArray(o) ? o : [o]; + }); + }, t.messages = function(n) { + return n && (this._messages = rhe($G(), n)), this._messages; + }, t.validate = function(n, i, a) { + var o = this; + i === void 0 && (i = {}), a === void 0 && (a = function() { + }); + var l = n, u = i, d = a; + if (typeof u == "function" && (d = u, u = {}), !this.rules || Object.keys(this.rules).length === 0) + return d && d(null, l), Promise.resolve(l); + function f(A) { + var S = [], _ = {}; + function E(w) { + if (Array.isArray(w)) { + var x; + S = (x = S).concat.apply(x, w); + } else + S.push(w); + } + for (var I = 0; I < A.length; I++) + E(A[I]); + S.length ? (_ = jG(S), d(S, _)) : d(null, l); + } + if (u.messages) { + var g = this.messages(); + g === VG && (g = $G()), rhe(g, u.messages), u.messages = g; + } else + u.messages = this.messages(); + var v = {}, y = u.keys || Object.keys(this.rules); + y.forEach(function(A) { + var S = o.rules[A], _ = l[A]; + S.forEach(function(E) { + var I = E; + typeof I.transform == "function" && (l === n && (l = zb({}, l)), _ = l[A] = I.transform(_)), typeof I == "function" ? I = { + validator: I + } : I = zb({}, I), I.validator = o.getValidationMethod(I), I.validator && (I.field = A, I.fullField = I.fullField || A, I.type = o.getType(I), v[A] = v[A] || [], v[A].push({ + rule: I, + value: _, + source: l, + field: A + })); + }); + }); + var C = {}; + return bdt(v, u, function(A, S) { + var _ = A.rule, E = (_.type === "object" || _.type === "array") && (typeof _.fields == "object" || typeof _.defaultField == "object"); + E = E && (_.required || !_.required && A.value), _.field = A.field; + function I(b, R) { + return zb({}, R, { + fullField: _.fullField + "." + b, + fullFields: _.fullFields ? [].concat(_.fullFields, [b]) : [b] + }); + } + function w(b) { + b === void 0 && (b = []); + var R = Array.isArray(b) ? b : [b]; + !u.suppressWarning && R.length && e.warning("async-validator:", R), R.length && _.message !== void 0 && (R = [].concat(_.message)); + var M = R.map(the(_, l)); + if (u.first && M.length) + return C[_.field] = 1, S(M); + if (!E) + S(M); + else { + if (_.required && !A.value) + return _.message !== void 0 ? M = [].concat(_.message).map(the(_, l)) : u.error && (M = [u.error(_, hd(u.messages.required, _.field))]), S(M); + var O = {}; + _.defaultField && Object.keys(A.value).map(function(H) { + O[H] = _.defaultField; + }), O = zb({}, O, A.rule.fields); + var P = {}; + Object.keys(O).forEach(function(H) { + var Y = O[H], X = Array.isArray(Y) ? Y : [Y]; + P[H] = X.map(I.bind(null, H)); + }); + var B = new e(P); + B.messages(u.messages), A.rule.options && (A.rule.options.messages = u.messages, A.rule.options.error = u.error), B.validate(A.value, A.rule.options || u, function(H) { + var Y = []; + M && M.length && Y.push.apply(Y, M), H && H.length && Y.push.apply(Y, H), S(Y.length ? Y : null); + }); + } + } + var x; + if (_.asyncValidator) + x = _.asyncValidator(_, A.value, w, A.source, u); + else if (_.validator) { + try { + x = _.validator(_, A.value, w, A.source, u); + } catch (b) { + console.error == null || console.error(b), u.suppressValidatorError || setTimeout(function() { + throw b; + }, 0), w(b.message); + } + x === !0 ? w() : x === !1 ? w(typeof _.message == "function" ? _.message(_.fullField || _.field) : _.message || (_.fullField || _.field) + " fails") : x instanceof Array ? w(x) : x instanceof Error && w(x.message); + } + x && x.then && x.then(function() { + return w(); + }, function(b) { + return w(b); + }); + }, function(A) { + f(A); + }, l); + }, t.getType = function(n) { + if (n.type === void 0 && n.pattern instanceof RegExp && (n.type = "pattern"), typeof n.validator != "function" && n.type && !z1.hasOwnProperty(n.type)) + throw new Error(hd("Unknown rule type %s", n.type)); + return n.type || "string"; + }, t.getValidationMethod = function(n) { + if (typeof n.validator == "function") + return n.validator; + var i = Object.keys(n), a = i.indexOf("message"); + return a !== -1 && i.splice(a, 1), i.length === 1 && i[0] === "required" ? z1.required : z1[this.getType(n)] || void 0; + }, e; +}(); +WD.register = function(t, r) { + if (typeof r != "function") + throw new Error("Cannot register a validator by type, validator is not a function"); + z1[t] = r; +}; +WD.warning = mdt; +WD.messages = VG; +WD.validators = z1; +var id = "'${name}' is not a valid ${type}", BCe = { + default: "Validation error on field '${name}'", + required: "'${name}' is required", + enum: "'${name}' must be one of [${enum}]", + whitespace: "'${name}' cannot be empty", + date: { + format: "'${name}' is invalid for format date", + parse: "'${name}' could not be parsed as date", + invalid: "'${name}' is invalid date" + }, + types: { + string: id, + method: id, + array: id, + object: id, + number: id, + date: id, + boolean: id, + integer: id, + float: id, + regexp: id, + email: id, + url: id, + hex: id + }, + string: { + len: "'${name}' must be exactly ${len} characters", + min: "'${name}' must be at least ${min} characters", + max: "'${name}' cannot be longer than ${max} characters", + range: "'${name}' must be between ${min} and ${max} characters" + }, + number: { + len: "'${name}' must equal ${len}", + min: "'${name}' cannot be less than ${min}", + max: "'${name}' cannot be greater than ${max}", + range: "'${name}' must be between ${min} and ${max}" + }, + array: { + len: "'${name}' must be exactly ${len} in length", + min: "'${name}' cannot be less than ${min} in length", + max: "'${name}' cannot be greater than ${max} in length", + range: "'${name}' must be between ${min} and ${max} in length" + }, + pattern: { + mismatch: "'${name}' does not match pattern ${pattern}" + } +}, ihe = WD; +function Wdt(e, t) { + return e.replace(/\$\{\w+\}/g, function(r) { + var n = r.slice(2, -1); + return t[n]; + }); +} +var ahe = "CODE_LOGIC_ERROR"; +function zG(e, t, r, n, i) { + return HG.apply(this, arguments); +} +function HG() { + return HG = UE(/* @__PURE__ */ Uu().mark(function e(t, r, n, i, a) { + var o, l, u, d, f, g, v, y, C; + return Uu().wrap(function(S) { + for (; ; ) + switch (S.prev = S.next) { + case 0: + return o = fr({}, n), delete o.ruleIndex, ihe.warning = function() { + }, o.validator && (l = o.validator, o.validator = function() { + try { + return l.apply(void 0, arguments); + } catch (_) { + return console.error(_), Promise.reject(ahe); + } + }), u = null, o && o.type === "array" && o.defaultField && (u = o.defaultField, delete o.defaultField), d = new ihe(Kt({}, t, [o])), f = hw(BCe, i.validateMessages), d.messages(f), g = [], S.prev = 10, S.next = 13, Promise.resolve(d.validate(Kt({}, t, r), fr({}, i))); + case 13: + S.next = 18; + break; + case 15: + S.prev = 15, S.t0 = S.catch(10), S.t0.errors && (g = S.t0.errors.map(function(_, E) { + var I = _.message, w = I === ahe ? f.default : I; + return /* @__PURE__ */ $react.isValidElement(w) ? ( + // Wrap ReactNode with `key` + /* @__PURE__ */ $react.cloneElement(w, { + key: "error_".concat(E) + }) + ) : w; + })); + case 18: + if (!(!g.length && u)) { + S.next = 23; + break; + } + return S.next = 21, Promise.all(r.map(function(_, E) { + return zG("".concat(t, ".").concat(E), _, u, i, a); + })); + case 21: + return v = S.sent, S.abrupt("return", v.reduce(function(_, E) { + return [].concat(Gn(_), Gn(E)); + }, [])); + case 23: + return y = fr(fr({}, n), {}, { + name: t, + enum: (n.enum || []).join(", ") + }, a), C = g.map(function(_) { + return typeof _ == "string" ? Wdt(_, y) : _; + }), S.abrupt("return", C); + case 26: + case "end": + return S.stop(); + } + }, e, null, [[10, 15]]); + })), HG.apply(this, arguments); +} +function Gdt(e, t, r, n, i, a) { + var o = e.join("."), l = r.map(function(f, g) { + var v = f.validator, y = fr(fr({}, f), {}, { + ruleIndex: g + }); + return v && (y.validator = function(C, A, S) { + var _ = !1, E = function() { + for (var x = arguments.length, b = new Array(x), R = 0; R < x; R++) + b[R] = arguments[R]; + Promise.resolve().then(function() { + fd(!_, "Your validator function has already return a promise. `callback` will be ignored."), _ || S.apply(void 0, b); + }); + }, I = v(C, A, E); + _ = I && typeof I.then == "function" && typeof I.catch == "function", fd(_, "`callback` is deprecated. Please return a promise instead."), _ && I.then(function() { + S(); + }).catch(function(w) { + S(w || " "); + }); + }), y; + }).sort(function(f, g) { + var v = f.warningOnly, y = f.ruleIndex, C = g.warningOnly, A = g.ruleIndex; + return !!v == !!C ? y - A : v ? 1 : -1; + }), u; + if (i === !0) + u = new Promise(/* @__PURE__ */ function() { + var f = UE(/* @__PURE__ */ Uu().mark(function g(v, y) { + var C, A, S; + return Uu().wrap(function(E) { + for (; ; ) + switch (E.prev = E.next) { + case 0: + C = 0; + case 1: + if (!(C < l.length)) { + E.next = 12; + break; + } + return A = l[C], E.next = 5, zG(o, t, A, n, a); + case 5: + if (S = E.sent, !S.length) { + E.next = 9; + break; + } + return y([{ + errors: S, + rule: A + }]), E.abrupt("return"); + case 9: + C += 1, E.next = 1; + break; + case 12: + v([]); + case 13: + case "end": + return E.stop(); + } + }, g); + })); + return function(g, v) { + return f.apply(this, arguments); + }; + }()); + else { + var d = l.map(function(f) { + return zG(o, t, f, n, a).then(function(g) { + return { + errors: g, + rule: f + }; + }); + }); + u = (i ? Xdt(d) : Ydt(d)).then(function(f) { + return Promise.reject(f); + }); + } + return u.catch(function(f) { + return f; + }), u; +} +function Ydt(e) { + return WG.apply(this, arguments); +} +function WG() { + return WG = UE(/* @__PURE__ */ Uu().mark(function e(t) { + return Uu().wrap(function(n) { + for (; ; ) + switch (n.prev = n.next) { + case 0: + return n.abrupt("return", Promise.all(t).then(function(i) { + var a, o = (a = []).concat.apply(a, Gn(i)); + return o; + })); + case 1: + case "end": + return n.stop(); + } + }, e); + })), WG.apply(this, arguments); +} +function Xdt(e) { + return GG.apply(this, arguments); +} +function GG() { + return GG = UE(/* @__PURE__ */ Uu().mark(function e(t) { + var r; + return Uu().wrap(function(i) { + for (; ; ) + switch (i.prev = i.next) { + case 0: + return r = 0, i.abrupt("return", new Promise(function(a) { + t.forEach(function(o) { + o.then(function(l) { + l.errors.length && a([l]), r += 1, r === t.length && a([]); + }); + }); + })); + case 2: + case "end": + return i.stop(); + } + }, e); + })), GG.apply(this, arguments); +} +function Qs(e) { + return FG(e); +} +function ohe(e, t) { + var r = {}; + return t.forEach(function(n) { + var i = Kg(e, n); + r = Ep(r, n, i); + }), r; +} +function Rw(e, t) { + var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1; + return e && e.some(function(n) { + return UCe(t, n, r); + }); +} +function UCe(e, t) { + var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1; + return !e || !t || !r && e.length !== t.length ? !1 : t.every(function(n, i) { + return e[i] === n; + }); +} +function Kdt(e, t) { + if (e === t) + return !0; + if (!e && t || e && !t || !e || !t || Ja(e) !== "object" || Ja(t) !== "object") + return !1; + var r = Object.keys(e), n = Object.keys(t), i = new Set([].concat(r, n)); + return Gn(i).every(function(a) { + var o = e[a], l = t[a]; + return typeof o == "function" && typeof l == "function" ? !0 : o === l; + }); +} +function Zdt(e) { + var t = arguments.length <= 1 ? void 0 : arguments[1]; + return t && t.target && Ja(t.target) === "object" && e in t.target ? t.target[e] : t; +} +function she(e, t, r) { + var n = e.length; + if (t < 0 || t >= n || r < 0 || r >= n) + return e; + var i = e[t], a = t - r; + return a > 0 ? [].concat(Gn(e.slice(0, r)), [i], Gn(e.slice(r, t)), Gn(e.slice(t + 1, n))) : a < 0 ? [].concat(Gn(e.slice(0, t)), Gn(e.slice(t + 1, r + 1)), [i], Gn(e.slice(r + 1, n))) : e; +} +var qdt = ["name"], nf = []; +function lhe(e, t, r, n, i, a) { + return typeof e == "function" ? e(t, r, "source" in a ? { + source: a.source + } : {}) : n !== i; +} +var qY = /* @__PURE__ */ function(e) { + OI(r, e); + var t = bB(r); + function r(n) { + var i; + if (Cd(this, r), i = t.call(this, n), Kt(Ha(i), "state", { + resetCount: 0 + }), Kt(Ha(i), "cancelRegisterFunc", null), Kt(Ha(i), "mounted", !1), Kt(Ha(i), "touched", !1), Kt(Ha(i), "dirty", !1), Kt(Ha(i), "validatePromise", void 0), Kt(Ha(i), "prevValidating", void 0), Kt(Ha(i), "errors", nf), Kt(Ha(i), "warnings", nf), Kt(Ha(i), "cancelRegister", function() { + var u = i.props, d = u.preserve, f = u.isListField, g = u.name; + i.cancelRegisterFunc && i.cancelRegisterFunc(f, d, Qs(g)), i.cancelRegisterFunc = null; + }), Kt(Ha(i), "getNamePath", function() { + var u = i.props, d = u.name, f = u.fieldContext, g = f.prefixName, v = g === void 0 ? [] : g; + return d !== void 0 ? [].concat(Gn(v), Gn(d)) : []; + }), Kt(Ha(i), "getRules", function() { + var u = i.props, d = u.rules, f = d === void 0 ? [] : d, g = u.fieldContext; + return f.map(function(v) { + return typeof v == "function" ? v(g) : v; + }); + }), Kt(Ha(i), "refresh", function() { + i.mounted && i.setState(function(u) { + var d = u.resetCount; + return { + resetCount: d + 1 + }; + }); + }), Kt(Ha(i), "metaCache", null), Kt(Ha(i), "triggerMetaEvent", function(u) { + var d = i.props.onMetaChange; + if (d) { + var f = fr(fr({}, i.getMeta()), {}, { + destroy: u + }); + xEe(i.metaCache, f) || d(f), i.metaCache = f; + } else + i.metaCache = null; + }), Kt(Ha(i), "onStoreChange", function(u, d, f) { + var g = i.props, v = g.shouldUpdate, y = g.dependencies, C = y === void 0 ? [] : y, A = g.onReset, S = f.store, _ = i.getNamePath(), E = i.getValue(u), I = i.getValue(S), w = d && Rw(d, _); + switch (f.type === "valueUpdate" && f.source === "external" && E !== I && (i.touched = !0, i.dirty = !0, i.validatePromise = null, i.errors = nf, i.warnings = nf, i.triggerMetaEvent()), f.type) { + case "reset": + if (!d || w) { + i.touched = !1, i.dirty = !1, i.validatePromise = void 0, i.errors = nf, i.warnings = nf, i.triggerMetaEvent(), A == null || A(), i.refresh(); + return; + } + break; + case "remove": { + if (v) { + i.reRender(); + return; + } + break; + } + case "setField": { + var x = f.data; + if (w) { + "touched" in x && (i.touched = x.touched), "validating" in x && !("originRCField" in x) && (i.validatePromise = x.validating ? Promise.resolve([]) : null), "errors" in x && (i.errors = x.errors || nf), "warnings" in x && (i.warnings = x.warnings || nf), i.dirty = !0, i.triggerMetaEvent(), i.reRender(); + return; + } else if ("value" in x && Rw(d, _, !0)) { + i.reRender(); + return; + } + if (v && !_.length && lhe(v, u, S, E, I, f)) { + i.reRender(); + return; + } + break; + } + case "dependenciesUpdate": { + var b = C.map(Qs); + if (b.some(function(R) { + return Rw(f.relatedFields, R); + })) { + i.reRender(); + return; + } + break; + } + default: + if (w || (!C.length || _.length || v) && lhe(v, u, S, E, I, f)) { + i.reRender(); + return; + } + break; + } + v === !0 && i.reRender(); + }), Kt(Ha(i), "validateRules", function(u) { + var d = i.getNamePath(), f = i.getValue(), g = u || {}, v = g.triggerName, y = g.validateOnly, C = y === void 0 ? !1 : y, A = Promise.resolve().then(/* @__PURE__ */ UE(/* @__PURE__ */ Uu().mark(function S() { + var _, E, I, w, x, b, R; + return Uu().wrap(function(O) { + for (; ; ) + switch (O.prev = O.next) { + case 0: + if (i.mounted) { + O.next = 2; + break; + } + return O.abrupt("return", []); + case 2: + if (_ = i.props, E = _.validateFirst, I = E === void 0 ? !1 : E, w = _.messageVariables, x = _.validateDebounce, b = i.getRules(), v && (b = b.filter(function(P) { + return P; + }).filter(function(P) { + var B = P.validateTrigger; + if (!B) + return !0; + var H = FG(B); + return H.includes(v); + })), !(x && v)) { + O.next = 10; + break; + } + return O.next = 8, new Promise(function(P) { + setTimeout(P, x); + }); + case 8: + if (i.validatePromise === A) { + O.next = 10; + break; + } + return O.abrupt("return", []); + case 10: + return R = Gdt(d, f, b, u, I, w), R.catch(function(P) { + return P; + }).then(function() { + var P = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : nf; + if (i.validatePromise === A) { + var B; + i.validatePromise = null; + var H = [], Y = []; + (B = P.forEach) === null || B === void 0 || B.call(P, function(X) { + var ee = X.rule.warningOnly, ae = X.errors, J = ae === void 0 ? nf : ae; + ee ? Y.push.apply(Y, Gn(J)) : H.push.apply(H, Gn(J)); + }), i.errors = H, i.warnings = Y, i.triggerMetaEvent(), i.reRender(); + } + }), O.abrupt("return", R); + case 13: + case "end": + return O.stop(); + } + }, S); + }))); + return C || (i.validatePromise = A, i.dirty = !0, i.errors = nf, i.warnings = nf, i.triggerMetaEvent(), i.reRender()), A; + }), Kt(Ha(i), "isFieldValidating", function() { + return !!i.validatePromise; + }), Kt(Ha(i), "isFieldTouched", function() { + return i.touched; + }), Kt(Ha(i), "isFieldDirty", function() { + if (i.dirty || i.props.initialValue !== void 0) + return !0; + var u = i.props.fieldContext, d = u.getInternalHooks(Vb), f = d.getInitialValue; + return f(i.getNamePath()) !== void 0; + }), Kt(Ha(i), "getErrors", function() { + return i.errors; + }), Kt(Ha(i), "getWarnings", function() { + return i.warnings; + }), Kt(Ha(i), "isListField", function() { + return i.props.isListField; + }), Kt(Ha(i), "isList", function() { + return i.props.isList; + }), Kt(Ha(i), "isPreserve", function() { + return i.props.preserve; + }), Kt(Ha(i), "getMeta", function() { + i.prevValidating = i.isFieldValidating(); + var u = { + touched: i.isFieldTouched(), + validating: i.prevValidating, + errors: i.errors, + warnings: i.warnings, + name: i.getNamePath(), + validated: i.validatePromise === null + }; + return u; + }), Kt(Ha(i), "getOnlyChild", function(u) { + if (typeof u == "function") { + var d = i.getMeta(); + return fr(fr({}, i.getOnlyChild(u(i.getControlled(), d, i.props.fieldContext))), {}, { + isFunction: !0 + }); + } + var f = $R(u); + return f.length !== 1 || !/* @__PURE__ */ $react.isValidElement(f[0]) ? { + child: f, + isFunction: !1 + } : { + child: f[0], + isFunction: !1 + }; + }), Kt(Ha(i), "getValue", function(u) { + var d = i.props.fieldContext.getFieldsValue, f = i.getNamePath(); + return Kg(u || d(!0), f); + }), Kt(Ha(i), "getControlled", function() { + var u = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, d = i.props, f = d.trigger, g = d.validateTrigger, v = d.getValueFromEvent, y = d.normalize, C = d.valuePropName, A = d.getValueProps, S = d.fieldContext, _ = g !== void 0 ? g : S.validateTrigger, E = i.getNamePath(), I = S.getInternalHooks, w = S.getFieldsValue, x = I(Vb), b = x.dispatch, R = i.getValue(), M = A || function(H) { + return Kt({}, C, H); + }, O = u[f], P = fr(fr({}, u), M(R)); + P[f] = function() { + i.touched = !0, i.dirty = !0, i.triggerMetaEvent(); + for (var H, Y = arguments.length, X = new Array(Y), ee = 0; ee < Y; ee++) + X[ee] = arguments[ee]; + v ? H = v.apply(void 0, X) : H = Zdt.apply(void 0, [C].concat(X)), y && (H = y(H, R, w(!0))), b({ + type: "updateValue", + namePath: E, + value: H + }), O && O.apply(void 0, X); + }; + var B = FG(_ || []); + return B.forEach(function(H) { + var Y = P[H]; + P[H] = function() { + Y && Y.apply(void 0, arguments); + var X = i.props.rules; + X && X.length && b({ + type: "validateField", + namePath: E, + triggerName: H + }); + }; + }), P; + }), n.fieldContext) { + var a = n.fieldContext.getInternalHooks, o = a(Vb), l = o.initEntityValue; + l(Ha(i)); + } + return i; + } + return Td(r, [{ + key: "componentDidMount", + value: function() { + var i = this.props, a = i.shouldUpdate, o = i.fieldContext; + if (this.mounted = !0, o) { + var l = o.getInternalHooks, u = l(Vb), d = u.registerField; + this.cancelRegisterFunc = d(this); + } + a === !0 && this.reRender(); + } + }, { + key: "componentWillUnmount", + value: function() { + this.cancelRegister(), this.triggerMetaEvent(!0), this.mounted = !1; + } + }, { + key: "reRender", + value: function() { + this.mounted && this.forceUpdate(); + } + }, { + key: "render", + value: function() { + this.state.resetCount; + var i = this.props.children, a = this.getOnlyChild(i), o = a.child, l = a.isFunction, u; + return l ? u = o : /* @__PURE__ */ $react.isValidElement(o) ? u = /* @__PURE__ */ $react.cloneElement(o, this.getControlled(o.props)) : (fd(!o, "`children` of Field is not validate ReactElement."), u = o), /* @__PURE__ */ dt(Ta, { + children: u + }); + } + }]), r; +}($react.Component); +Kt(qY, "contextType", EE); +Kt(qY, "defaultProps", { + trigger: "onChange", + valuePropName: "value" +}); +function JY(e) { + var t = e.name, r = xh(e, qdt), n = $react.useContext(EE), i = $react.useContext(zR), a = t !== void 0 ? Qs(t) : void 0, o = "keep"; + return r.isListField || (o = "_".concat((a || []).join("_"))), /* @__PURE__ */ dt(qY, rn(br({ + name: a, + isListField: !!i + }, r), { + fieldContext: n + }), o); +} +function jCe(e) { + var t = e.name, r = e.initialValue, n = e.children, i = e.rules, a = e.validateTrigger, o = e.isListField, l = $react.useContext(EE), u = $react.useContext(zR), d = $react.useRef({ + keys: [], + id: 0 + }), f = d.current, g = $react.useMemo(function() { + var A = Qs(l.prefixName) || []; + return [].concat(Gn(A), Gn(Qs(t))); + }, [l.prefixName, t]), v = $react.useMemo(function() { + return fr(fr({}, l), {}, { + prefixName: g + }); + }, [l, g]), y = $react.useMemo(function() { + return { + getKey: function(S) { + var _ = g.length, E = S[_]; + return [f.keys[E], S.slice(_ + 1)]; + } + }; + }, [g]); + if (typeof n != "function") + return fd(!1, "Form.List only accepts function as children."), null; + var C = function(S, _, E) { + var I = E.source; + return I === "internal" ? !1 : S !== _; + }; + return /* @__PURE__ */ dt(zR.Provider, { + value: y, + children: /* @__PURE__ */ dt(EE.Provider, { + value: v, + children: /* @__PURE__ */ dt(JY, { + name: [], + shouldUpdate: C, + rules: i, + validateTrigger: a, + initialValue: r, + isList: !0, + isListField: o != null ? o : !!u, + children: function(A, S) { + var _ = A.value, E = _ === void 0 ? [] : _, I = A.onChange, w = l.getFieldValue, x = function() { + var O = w(g || []); + return O || []; + }, b = { + add: function(O, P) { + var B = x(); + P >= 0 && P <= B.length ? (f.keys = [].concat(Gn(f.keys.slice(0, P)), [f.id], Gn(f.keys.slice(P))), I([].concat(Gn(B.slice(0, P)), [O], Gn(B.slice(P))))) : (f.keys = [].concat(Gn(f.keys), [f.id]), I([].concat(Gn(B), [O]))), f.id += 1; + }, + remove: function(O) { + var P = x(), B = new Set(Array.isArray(O) ? O : [O]); + B.size <= 0 || (f.keys = f.keys.filter(function(H, Y) { + return !B.has(Y); + }), I(P.filter(function(H, Y) { + return !B.has(Y); + }))); + }, + move: function(O, P) { + if (O !== P) { + var B = x(); + O < 0 || O >= B.length || P < 0 || P >= B.length || (f.keys = she(f.keys, O, P), I(she(B, O, P))); + } + } + }, R = E || []; + return Array.isArray(R) || (R = []), n(R.map(function(M, O) { + var P = f.keys[O]; + return P === void 0 && (f.keys[O] = f.id, P = f.keys[O], f.id += 1), { + name: O, + key: P, + isListField: !0 + }; + }), b, S); + } + }) + }) + }); +} +function Jdt(e) { + var t = !1, r = e.length, n = []; + return e.length ? new Promise(function(i, a) { + e.forEach(function(o, l) { + o.catch(function(u) { + return t = !0, u; + }).then(function(u) { + r -= 1, n[l] = u, !(r > 0) && (t && a(n), i(n)); + }); + }); + }) : Promise.resolve([]); +} +var $Ce = "__@field_split__"; +function d4(e) { + return e.map(function(t) { + return "".concat(Ja(t), ":").concat(t); + }).join($Ce); +} +var zT = /* @__PURE__ */ function() { + function e() { + Cd(this, e), Kt(this, "kvs", /* @__PURE__ */ new Map()); + } + return Td(e, [{ + key: "set", + value: function(r, n) { + this.kvs.set(d4(r), n); + } + }, { + key: "get", + value: function(r) { + return this.kvs.get(d4(r)); + } + }, { + key: "update", + value: function(r, n) { + var i = this.get(r), a = n(i); + a ? this.set(r, a) : this.delete(r); + } + }, { + key: "delete", + value: function(r) { + this.kvs.delete(d4(r)); + } + // Since we only use this in test, let simply realize this + }, { + key: "map", + value: function(r) { + return Gn(this.kvs.entries()).map(function(n) { + var i = Wr(n, 2), a = i[0], o = i[1], l = a.split($Ce); + return r({ + key: l.map(function(u) { + var d = u.match(/^([^:]*):(.*)$/), f = Wr(d, 3), g = f[1], v = f[2]; + return g === "number" ? Number(v) : v; + }), + value: o + }); + }); + } + }, { + key: "toJSON", + value: function() { + var r = {}; + return this.map(function(n) { + var i = n.key, a = n.value; + return r[i.join(".")] = a, null; + }), r; + } + }]), e; +}(), Qdt = ["name"], eft = /* @__PURE__ */ Td(function e(t) { + var r = this; + Cd(this, e), Kt(this, "formHooked", !1), Kt(this, "forceRootUpdate", void 0), Kt(this, "subscribable", !0), Kt(this, "store", {}), Kt(this, "fieldEntities", []), Kt(this, "initialValues", {}), Kt(this, "callbacks", {}), Kt(this, "validateMessages", null), Kt(this, "preserve", null), Kt(this, "lastValidatePromise", null), Kt(this, "getForm", function() { + return { + getFieldValue: r.getFieldValue, + getFieldsValue: r.getFieldsValue, + getFieldError: r.getFieldError, + getFieldWarning: r.getFieldWarning, + getFieldsError: r.getFieldsError, + isFieldsTouched: r.isFieldsTouched, + isFieldTouched: r.isFieldTouched, + isFieldValidating: r.isFieldValidating, + isFieldsValidating: r.isFieldsValidating, + resetFields: r.resetFields, + setFields: r.setFields, + setFieldValue: r.setFieldValue, + setFieldsValue: r.setFieldsValue, + validateFields: r.validateFields, + submit: r.submit, + _init: !0, + getInternalHooks: r.getInternalHooks + }; + }), Kt(this, "getInternalHooks", function(n) { + return n === Vb ? (r.formHooked = !0, { + dispatch: r.dispatch, + initEntityValue: r.initEntityValue, + registerField: r.registerField, + useSubscribe: r.useSubscribe, + setInitialValues: r.setInitialValues, + destroyForm: r.destroyForm, + setCallbacks: r.setCallbacks, + setValidateMessages: r.setValidateMessages, + getFields: r.getFields, + setPreserve: r.setPreserve, + getInitialValue: r.getInitialValue, + registerWatch: r.registerWatch + }) : (fd(!1, "`getInternalHooks` is internal usage. Should not call directly."), null); + }), Kt(this, "useSubscribe", function(n) { + r.subscribable = n; + }), Kt(this, "prevWithoutPreserves", null), Kt(this, "setInitialValues", function(n, i) { + if (r.initialValues = n || {}, i) { + var a, o = hw(n, r.store); + (a = r.prevWithoutPreserves) === null || a === void 0 || a.map(function(l) { + var u = l.key; + o = Ep(o, u, Kg(n, u)); + }), r.prevWithoutPreserves = null, r.updateStore(o); + } + }), Kt(this, "destroyForm", function() { + var n = new zT(); + r.getFieldEntities(!0).forEach(function(i) { + r.isMergedPreserve(i.isPreserve()) || n.set(i.getNamePath(), !0); + }), r.prevWithoutPreserves = n; + }), Kt(this, "getInitialValue", function(n) { + var i = Kg(r.initialValues, n); + return n.length ? hw(i) : i; + }), Kt(this, "setCallbacks", function(n) { + r.callbacks = n; + }), Kt(this, "setValidateMessages", function(n) { + r.validateMessages = n; + }), Kt(this, "setPreserve", function(n) { + r.preserve = n; + }), Kt(this, "watchList", []), Kt(this, "registerWatch", function(n) { + return r.watchList.push(n), function() { + r.watchList = r.watchList.filter(function(i) { + return i !== n; + }); + }; + }), Kt(this, "notifyWatch", function() { + var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + if (r.watchList.length) { + var i = r.getFieldsValue(), a = r.getFieldsValue(!0); + r.watchList.forEach(function(o) { + o(i, a, n); + }); + } + }), Kt(this, "timeoutId", null), Kt(this, "warningUnhooked", function() { + }), Kt(this, "updateStore", function(n) { + r.store = n; + }), Kt(this, "getFieldEntities", function() { + var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1; + return n ? r.fieldEntities.filter(function(i) { + return i.getNamePath().length; + }) : r.fieldEntities; + }), Kt(this, "getFieldsMap", function() { + var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, i = new zT(); + return r.getFieldEntities(n).forEach(function(a) { + var o = a.getNamePath(); + i.set(o, a); + }), i; + }), Kt(this, "getFieldEntitiesForNamePathList", function(n) { + if (!n) + return r.getFieldEntities(!0); + var i = r.getFieldsMap(!0); + return n.map(function(a) { + var o = Qs(a); + return i.get(o) || { + INVALIDATE_NAME_PATH: Qs(a) + }; + }); + }), Kt(this, "getFieldsValue", function(n, i) { + r.warningUnhooked(); + var a, o, l; + if (n === !0 || Array.isArray(n) ? (a = n, o = i) : n && Ja(n) === "object" && (l = n.strict, o = n.filter), a === !0 && !o) + return r.store; + var u = r.getFieldEntitiesForNamePathList(Array.isArray(a) ? a : null), d = []; + return u.forEach(function(f) { + var g, v, y = "INVALIDATE_NAME_PATH" in f ? f.INVALIDATE_NAME_PATH : f.getNamePath(); + if (l) { + var C, A; + if ((C = (A = f).isList) !== null && C !== void 0 && C.call(A)) + return; + } else if (!a && (g = (v = f).isListField) !== null && g !== void 0 && g.call(v)) + return; + if (!o) + d.push(y); + else { + var S = "getMeta" in f ? f.getMeta() : null; + o(S) && d.push(y); + } + }), ohe(r.store, d.map(Qs)); + }), Kt(this, "getFieldValue", function(n) { + r.warningUnhooked(); + var i = Qs(n); + return Kg(r.store, i); + }), Kt(this, "getFieldsError", function(n) { + r.warningUnhooked(); + var i = r.getFieldEntitiesForNamePathList(n); + return i.map(function(a, o) { + return a && !("INVALIDATE_NAME_PATH" in a) ? { + name: a.getNamePath(), + errors: a.getErrors(), + warnings: a.getWarnings() + } : { + name: Qs(n[o]), + errors: [], + warnings: [] + }; + }); + }), Kt(this, "getFieldError", function(n) { + r.warningUnhooked(); + var i = Qs(n), a = r.getFieldsError([i])[0]; + return a.errors; + }), Kt(this, "getFieldWarning", function(n) { + r.warningUnhooked(); + var i = Qs(n), a = r.getFieldsError([i])[0]; + return a.warnings; + }), Kt(this, "isFieldsTouched", function() { + r.warningUnhooked(); + for (var n = arguments.length, i = new Array(n), a = 0; a < n; a++) + i[a] = arguments[a]; + var o = i[0], l = i[1], u, d = !1; + i.length === 0 ? u = null : i.length === 1 ? Array.isArray(o) ? (u = o.map(Qs), d = !1) : (u = null, d = o) : (u = o.map(Qs), d = l); + var f = r.getFieldEntities(!0), g = function(S) { + return S.isFieldTouched(); + }; + if (!u) + return d ? f.every(g) : f.some(g); + var v = new zT(); + u.forEach(function(A) { + v.set(A, []); + }), f.forEach(function(A) { + var S = A.getNamePath(); + u.forEach(function(_) { + _.every(function(E, I) { + return S[I] === E; + }) && v.update(_, function(E) { + return [].concat(Gn(E), [A]); + }); + }); + }); + var y = function(S) { + return S.some(g); + }, C = v.map(function(A) { + var S = A.value; + return S; + }); + return d ? C.every(y) : C.some(y); + }), Kt(this, "isFieldTouched", function(n) { + return r.warningUnhooked(), r.isFieldsTouched([n]); + }), Kt(this, "isFieldsValidating", function(n) { + r.warningUnhooked(); + var i = r.getFieldEntities(); + if (!n) + return i.some(function(o) { + return o.isFieldValidating(); + }); + var a = n.map(Qs); + return i.some(function(o) { + var l = o.getNamePath(); + return Rw(a, l) && o.isFieldValidating(); + }); + }), Kt(this, "isFieldValidating", function(n) { + return r.warningUnhooked(), r.isFieldsValidating([n]); + }), Kt(this, "resetWithFieldInitialValue", function() { + var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, i = new zT(), a = r.getFieldEntities(!0); + a.forEach(function(u) { + var d = u.props.initialValue, f = u.getNamePath(); + if (d !== void 0) { + var g = i.get(f) || /* @__PURE__ */ new Set(); + g.add({ + entity: u, + value: d + }), i.set(f, g); + } + }); + var o = function(d) { + d.forEach(function(f) { + var g = f.props.initialValue; + if (g !== void 0) { + var v = f.getNamePath(), y = r.getInitialValue(v); + if (y !== void 0) + fd(!1, "Form already set 'initialValues' with path '".concat(v.join("."), "'. Field can not overwrite it.")); + else { + var C = i.get(v); + if (C && C.size > 1) + fd(!1, "Multiple Field with path '".concat(v.join("."), "' set 'initialValue'. Can not decide which one to pick.")); + else if (C) { + var A = r.getFieldValue(v), S = f.isListField(); + !S && (!n.skipExist || A === void 0) && r.updateStore(Ep(r.store, v, Gn(C)[0].value)); + } + } + } + }); + }, l; + n.entities ? l = n.entities : n.namePathList ? (l = [], n.namePathList.forEach(function(u) { + var d = i.get(u); + if (d) { + var f; + (f = l).push.apply(f, Gn(Gn(d).map(function(g) { + return g.entity; + }))); + } + })) : l = a, o(l); + }), Kt(this, "resetFields", function(n) { + r.warningUnhooked(); + var i = r.store; + if (!n) { + r.updateStore(hw(r.initialValues)), r.resetWithFieldInitialValue(), r.notifyObservers(i, null, { + type: "reset" + }), r.notifyWatch(); + return; + } + var a = n.map(Qs); + a.forEach(function(o) { + var l = r.getInitialValue(o); + r.updateStore(Ep(r.store, o, l)); + }), r.resetWithFieldInitialValue({ + namePathList: a + }), r.notifyObservers(i, a, { + type: "reset" + }), r.notifyWatch(a); + }), Kt(this, "setFields", function(n) { + r.warningUnhooked(); + var i = r.store, a = []; + n.forEach(function(o) { + var l = o.name, u = xh(o, Qdt), d = Qs(l); + a.push(d), "value" in u && r.updateStore(Ep(r.store, d, u.value)), r.notifyObservers(i, [d], { + type: "setField", + data: o + }); + }), r.notifyWatch(a); + }), Kt(this, "getFields", function() { + var n = r.getFieldEntities(!0), i = n.map(function(a) { + var o = a.getNamePath(), l = a.getMeta(), u = fr(fr({}, l), {}, { + name: o, + value: r.getFieldValue(o) + }); + return Object.defineProperty(u, "originRCField", { + value: !0 + }), u; + }); + return i; + }), Kt(this, "initEntityValue", function(n) { + var i = n.props.initialValue; + if (i !== void 0) { + var a = n.getNamePath(), o = Kg(r.store, a); + o === void 0 && r.updateStore(Ep(r.store, a, i)); + } + }), Kt(this, "isMergedPreserve", function(n) { + var i = n !== void 0 ? n : r.preserve; + return i != null ? i : !0; + }), Kt(this, "registerField", function(n) { + r.fieldEntities.push(n); + var i = n.getNamePath(); + if (r.notifyWatch([i]), n.props.initialValue !== void 0) { + var a = r.store; + r.resetWithFieldInitialValue({ + entities: [n], + skipExist: !0 + }), r.notifyObservers(a, [n.getNamePath()], { + type: "valueUpdate", + source: "internal" + }); + } + return function(o, l) { + var u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + if (r.fieldEntities = r.fieldEntities.filter(function(g) { + return g !== n; + }), !r.isMergedPreserve(l) && (!o || u.length > 1)) { + var d = o ? void 0 : r.getInitialValue(i); + if (i.length && r.getFieldValue(i) !== d && r.fieldEntities.every(function(g) { + return ( + // Only reset when no namePath exist + !UCe(g.getNamePath(), i) + ); + })) { + var f = r.store; + r.updateStore(Ep(f, i, d, !0)), r.notifyObservers(f, [i], { + type: "remove" + }), r.triggerDependenciesUpdate(f, i); + } + } + r.notifyWatch([i]); + }; + }), Kt(this, "dispatch", function(n) { + switch (n.type) { + case "updateValue": { + var i = n.namePath, a = n.value; + r.updateValue(i, a); + break; + } + case "validateField": { + var o = n.namePath, l = n.triggerName; + r.validateFields([o], { + triggerName: l + }); + break; + } + } + }), Kt(this, "notifyObservers", function(n, i, a) { + if (r.subscribable) { + var o = fr(fr({}, a), {}, { + store: r.getFieldsValue(!0) + }); + r.getFieldEntities().forEach(function(l) { + var u = l.onStoreChange; + u(n, i, o); + }); + } else + r.forceRootUpdate(); + }), Kt(this, "triggerDependenciesUpdate", function(n, i) { + var a = r.getDependencyChildrenFields(i); + return a.length && r.validateFields(a), r.notifyObservers(n, a, { + type: "dependenciesUpdate", + relatedFields: [i].concat(Gn(a)) + }), a; + }), Kt(this, "updateValue", function(n, i) { + var a = Qs(n), o = r.store; + r.updateStore(Ep(r.store, a, i)), r.notifyObservers(o, [a], { + type: "valueUpdate", + source: "internal" + }), r.notifyWatch([a]); + var l = r.triggerDependenciesUpdate(o, a), u = r.callbacks.onValuesChange; + if (u) { + var d = ohe(r.store, [a]); + u(d, r.getFieldsValue()); + } + r.triggerOnFieldsChange([a].concat(Gn(l))); + }), Kt(this, "setFieldsValue", function(n) { + r.warningUnhooked(); + var i = r.store; + if (n) { + var a = hw(r.store, n); + r.updateStore(a); + } + r.notifyObservers(i, null, { + type: "valueUpdate", + source: "external" + }), r.notifyWatch(); + }), Kt(this, "setFieldValue", function(n, i) { + r.setFields([{ + name: n, + value: i + }]); + }), Kt(this, "getDependencyChildrenFields", function(n) { + var i = /* @__PURE__ */ new Set(), a = [], o = new zT(); + r.getFieldEntities().forEach(function(u) { + var d = u.props.dependencies; + (d || []).forEach(function(f) { + var g = Qs(f); + o.update(g, function() { + var v = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : /* @__PURE__ */ new Set(); + return v.add(u), v; + }); + }); + }); + var l = function u(d) { + var f = o.get(d) || /* @__PURE__ */ new Set(); + f.forEach(function(g) { + if (!i.has(g)) { + i.add(g); + var v = g.getNamePath(); + g.isFieldDirty() && v.length && (a.push(v), u(v)); + } + }); + }; + return l(n), a; + }), Kt(this, "triggerOnFieldsChange", function(n, i) { + var a = r.callbacks.onFieldsChange; + if (a) { + var o = r.getFields(); + if (i) { + var l = new zT(); + i.forEach(function(d) { + var f = d.name, g = d.errors; + l.set(f, g); + }), o.forEach(function(d) { + d.errors = l.get(d.name) || d.errors; + }); + } + var u = o.filter(function(d) { + var f = d.name; + return Rw(n, f); + }); + u.length && a(u, o); + } + }), Kt(this, "validateFields", function(n, i) { + r.warningUnhooked(); + var a, o; + Array.isArray(n) || typeof n == "string" || typeof i == "string" ? (a = n, o = i) : o = n; + var l = !!a, u = l ? a.map(Qs) : [], d = [], f = String(Date.now()), g = /* @__PURE__ */ new Set(), v = o || {}, y = v.recursive, C = v.dirty; + r.getFieldEntities(!0).forEach(function(E) { + if (l || u.push(E.getNamePath()), !(!E.props.rules || !E.props.rules.length) && !(C && !E.isFieldDirty())) { + var I = E.getNamePath(); + if (g.add(I.join(f)), !l || Rw(u, I, y)) { + var w = E.validateRules(fr({ + validateMessages: fr(fr({}, BCe), r.validateMessages) + }, o)); + d.push(w.then(function() { + return { + name: I, + errors: [], + warnings: [] + }; + }).catch(function(x) { + var b, R = [], M = []; + return (b = x.forEach) === null || b === void 0 || b.call(x, function(O) { + var P = O.rule.warningOnly, B = O.errors; + P ? M.push.apply(M, Gn(B)) : R.push.apply(R, Gn(B)); + }), R.length ? Promise.reject({ + name: I, + errors: R, + warnings: M + }) : { + name: I, + errors: R, + warnings: M + }; + })); + } + } + }); + var A = Jdt(d); + r.lastValidatePromise = A, A.catch(function(E) { + return E; + }).then(function(E) { + var I = E.map(function(w) { + var x = w.name; + return x; + }); + r.notifyObservers(r.store, I, { + type: "validateFinish" + }), r.triggerOnFieldsChange(I, E); + }); + var S = A.then(function() { + return r.lastValidatePromise === A ? Promise.resolve(r.getFieldsValue(u)) : Promise.reject([]); + }).catch(function(E) { + var I = E.filter(function(w) { + return w && w.errors.length; + }); + return Promise.reject({ + values: r.getFieldsValue(u), + errorFields: I, + outOfDate: r.lastValidatePromise !== A + }); + }); + S.catch(function(E) { + return E; + }); + var _ = u.filter(function(E) { + return g.has(E.join(f)); + }); + return r.triggerOnFieldsChange(_), S; + }), Kt(this, "submit", function() { + r.warningUnhooked(), r.validateFields().then(function(n) { + var i = r.callbacks.onFinish; + if (i) + try { + i(n); + } catch (a) { + console.error(a); + } + }).catch(function(n) { + var i = r.callbacks.onFinishFailed; + i && i(n); + }); + }), this.forceRootUpdate = t; +}); +function QY(e) { + var t = $react.useRef(), r = $react.useState({}), n = Wr(r, 2), i = n[1]; + if (!t.current) + if (e) + t.current = e; + else { + var a = function() { + i({}); + }, o = new eft(a); + t.current = o.getForm(); + } + return [t.current]; +} +var YG = /* @__PURE__ */ $react.createContext({ + triggerFormChange: function() { + }, + triggerFormFinish: function() { + }, + registerForm: function() { + }, + unregisterForm: function() { + } +}), VCe = function(t) { + var r = t.validateMessages, n = t.onFormChange, i = t.onFormFinish, a = t.children, o = $react.useContext(YG), l = $react.useRef({}); + return /* @__PURE__ */ dt(YG.Provider, { + value: fr(fr({}, o), {}, { + validateMessages: fr(fr({}, o.validateMessages), r), + // ========================================================= + // = Global Form Control = + // ========================================================= + triggerFormChange: function(d, f) { + n && n(d, { + changedFields: f, + forms: l.current + }), o.triggerFormChange(d, f); + }, + triggerFormFinish: function(d, f) { + i && i(d, { + values: f, + forms: l.current + }), o.triggerFormFinish(d, f); + }, + registerForm: function(d, f) { + d && (l.current = fr(fr({}, l.current), {}, Kt({}, d, f))), o.registerForm(d, f); + }, + unregisterForm: function(d) { + var f = fr({}, l.current); + delete f[d], l.current = f, o.unregisterForm(d); + } + }), + children: a + }); +}, tft = ["name", "initialValues", "fields", "form", "preserve", "children", "component", "validateMessages", "validateTrigger", "onValuesChange", "onFieldsChange", "onFinish", "onFinishFailed"], rft = function(t, r) { + var n = t.name, i = t.initialValues, a = t.fields, o = t.form, l = t.preserve, u = t.children, d = t.component, f = d === void 0 ? "form" : d, g = t.validateMessages, v = t.validateTrigger, y = v === void 0 ? "onChange" : v, C = t.onValuesChange, A = t.onFieldsChange, S = t.onFinish, _ = t.onFinishFailed, E = xh(t, tft), I = $react.useContext(YG), w = QY(o), x = Wr(w, 1), b = x[0], R = b.getInternalHooks(Vb), M = R.useSubscribe, O = R.setInitialValues, P = R.setCallbacks, B = R.setValidateMessages, H = R.setPreserve, Y = R.destroyForm; + $react.useImperativeHandle(r, function() { + return b; + }), $react.useEffect(function() { + return I.registerForm(n, b), function() { + I.unregisterForm(n); + }; + }, [I, b, n]), B(fr(fr({}, I.validateMessages), g)), P({ + onValuesChange: C, + onFieldsChange: function(be) { + if (I.triggerFormChange(n, be), A) { + for (var Ve = arguments.length, pe = new Array(Ve > 1 ? Ve - 1 : 0), Be = 1; Be < Ve; Be++) + pe[Be - 1] = arguments[Be]; + A.apply(void 0, [be].concat(pe)); + } + }, + onFinish: function(be) { + I.triggerFormFinish(n, be), S && S(be); + }, + onFinishFailed: _ + }), H(l); + var X = $react.useRef(null); + O(i, !X.current), X.current || (X.current = !0), $react.useEffect( + function() { + return Y; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ); + var ee, ae = typeof u == "function"; + if (ae) { + var J = b.getFieldsValue(!0); + ee = u(J, b); + } else + ee = u; + M(!ae); + var ne = $react.useRef(); + $react.useEffect(function() { + Kdt(ne.current || [], a || []) || b.setFields(a || []), ne.current = a; + }, [a, b]); + var fe = $react.useMemo(function() { + return fr(fr({}, b), {}, { + validateTrigger: y + }); + }, [b, y]), de = /* @__PURE__ */ dt(zR.Provider, { + value: null, + children: /* @__PURE__ */ dt(EE.Provider, { + value: fe, + children: ee + }) + }); + return f === !1 ? de : /* @__PURE__ */ dt(f, rn(br({}, E), { + onSubmit: function(be) { + be.preventDefault(), be.stopPropagation(), b.submit(); + }, + onReset: function(be) { + var Ve; + be.preventDefault(), b.resetFields(), (Ve = E.onReset) === null || Ve === void 0 || Ve.call(E, be); + }, + children: de + })); +}; +function che(e) { + try { + return JSON.stringify(e); + } catch (t) { + return Math.random(); + } +} +function zCe() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r]; + var n = t[0], i = t[1], a = i === void 0 ? {} : i, o = ddt(a) ? { + form: a + } : a, l = o.form, u = $react.useState(), d = Wr(u, 2), f = d[0], g = d[1], v = $react.useMemo(function() { + return che(f); + }, [f]), y = $react.useRef(v); + y.current = v; + var C = $react.useContext(EE), A = l || C, S = A && A._init, _ = Qs(n), E = $react.useRef(_); + return E.current = _, $react.useEffect( + function() { + if (S) { + var I = A.getFieldsValue, w = A.getInternalHooks, x = w(Vb), b = x.registerWatch, R = function(B, H) { + var Y = o.preserve ? H : B; + return typeof n == "function" ? n(Y) : Kg(Y, E.current); + }, M = b(function(P, B) { + var H = R(P, B), Y = che(H); + y.current !== Y && (y.current = Y, g(H)); + }), O = R(I(), I(!0)); + return f !== O && g(O), M; + } + }, + // We do not need re-register since namePath content is the same + // eslint-disable-next-line react-hooks/exhaustive-deps + [S] + ), f; +} +var nft = /* @__PURE__ */ $react.forwardRef(rft), PI = nft; +PI.FormProvider = VCe; +PI.Field = JY; +PI.List = jCe; +PI.useForm = QY; +PI.useWatch = zCe; +const qm = /* @__PURE__ */ $react.createContext({ + labelAlign: "right", + vertical: !1, + itemRef: () => { + } +}), HCe = /* @__PURE__ */ $react.createContext(null), WCe = (e) => { + const t = BD(e, ["prefixCls"]); + return /* @__PURE__ */ dt(VCe, br({}, Object.assign({}, t))); +}, e7 = /* @__PURE__ */ $react.createContext({ + prefixCls: "" +}), lv = /* @__PURE__ */ $react.createContext({}), uhe = (e) => { + let { + children: t, + status: r, + override: n + } = e; + const i = $react.useContext(lv), a = $react.useMemo(() => { + const o = Object.assign({}, i); + return n && delete o.isFormItemInput, r && (delete o.status, delete o.hasFeedback, delete o.feedbackIcon), o; + }, [r, n, i]); + return /* @__PURE__ */ dt(lv.Provider, { + value: a, + children: t + }); +}, GCe = /* @__PURE__ */ $react.createContext(void 0); +function m2(e) { + const [t, r] = $react.useState(e); + return $react.useEffect(() => { + const n = setTimeout(() => { + r(e); + }, e.length ? 0 : 10); + return () => { + clearTimeout(n); + }; + }, [e]), t; +} +const ift = (e) => ({ + animationDuration: e, + animationFillMode: "both" +}), aft = (e) => ({ + animationDuration: e, + animationFillMode: "both" +}), oft = function(e, t, r, n) { + const a = (arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1) ? "&" : ""; + return { + [` + ${a}${e}-enter, + ${a}${e}-appear + `]: Object.assign(Object.assign({}, ift(n)), { + animationPlayState: "paused" + }), + [`${a}${e}-leave`]: Object.assign(Object.assign({}, aft(n)), { + animationPlayState: "paused" + }), + [` + ${a}${e}-enter${e}-enter-active, + ${a}${e}-appear${e}-appear-active + `]: { + animationName: t, + animationPlayState: "running" + }, + [`${a}${e}-leave${e}-leave-active`]: { + animationName: r, + animationPlayState: "running", + pointerEvents: "none" + } + }; +}, t7 = new Nf("antZoomIn", { + "0%": { + transform: "scale(0.2)", + opacity: 0 + }, + "100%": { + transform: "scale(1)", + opacity: 1 + } +}), sft = new Nf("antZoomOut", { + "0%": { + transform: "scale(1)" + }, + "100%": { + transform: "scale(0.2)", + opacity: 0 + } +}), hhe = new Nf("antZoomBigIn", { + "0%": { + transform: "scale(0.8)", + opacity: 0 + }, + "100%": { + transform: "scale(1)", + opacity: 1 + } +}), dhe = new Nf("antZoomBigOut", { + "0%": { + transform: "scale(1)" + }, + "100%": { + transform: "scale(0.8)", + opacity: 0 + } +}), lft = new Nf("antZoomUpIn", { + "0%": { + transform: "scale(0.8)", + transformOrigin: "50% 0%", + opacity: 0 + }, + "100%": { + transform: "scale(1)", + transformOrigin: "50% 0%" + } +}), cft = new Nf("antZoomUpOut", { + "0%": { + transform: "scale(1)", + transformOrigin: "50% 0%" + }, + "100%": { + transform: "scale(0.8)", + transformOrigin: "50% 0%", + opacity: 0 + } +}), uft = new Nf("antZoomLeftIn", { + "0%": { + transform: "scale(0.8)", + transformOrigin: "0% 50%", + opacity: 0 + }, + "100%": { + transform: "scale(1)", + transformOrigin: "0% 50%" + } +}), hft = new Nf("antZoomLeftOut", { + "0%": { + transform: "scale(1)", + transformOrigin: "0% 50%" + }, + "100%": { + transform: "scale(0.8)", + transformOrigin: "0% 50%", + opacity: 0 + } +}), dft = new Nf("antZoomRightIn", { + "0%": { + transform: "scale(0.8)", + transformOrigin: "100% 50%", + opacity: 0 + }, + "100%": { + transform: "scale(1)", + transformOrigin: "100% 50%" + } +}), fft = new Nf("antZoomRightOut", { + "0%": { + transform: "scale(1)", + transformOrigin: "100% 50%" + }, + "100%": { + transform: "scale(0.8)", + transformOrigin: "100% 50%", + opacity: 0 + } +}), pft = new Nf("antZoomDownIn", { + "0%": { + transform: "scale(0.8)", + transformOrigin: "50% 100%", + opacity: 0 + }, + "100%": { + transform: "scale(1)", + transformOrigin: "50% 100%" + } +}), gft = new Nf("antZoomDownOut", { + "0%": { + transform: "scale(1)", + transformOrigin: "50% 100%" + }, + "100%": { + transform: "scale(0.8)", + transformOrigin: "50% 100%", + opacity: 0 + } +}), vft = { + zoom: { + inKeyframes: t7, + outKeyframes: sft + }, + "zoom-big": { + inKeyframes: hhe, + outKeyframes: dhe + }, + "zoom-big-fast": { + inKeyframes: hhe, + outKeyframes: dhe + }, + "zoom-left": { + inKeyframes: uft, + outKeyframes: hft + }, + "zoom-right": { + inKeyframes: dft, + outKeyframes: fft + }, + "zoom-up": { + inKeyframes: lft, + outKeyframes: cft + }, + "zoom-down": { + inKeyframes: pft, + outKeyframes: gft + } +}, mft = (e, t) => { + const { + antCls: r + } = e, n = `${r}-${t}`, { + inKeyframes: i, + outKeyframes: a + } = vft[t]; + return [oft(n, i, a, t === "zoom-big-fast" ? e.motionDurationFast : e.motionDurationMid), { + [` + ${n}-enter, + ${n}-appear + `]: { + transform: "scale(0)", + opacity: 0, + animationTimingFunction: e.motionEaseOutCirc, + "&-prepare": { + transform: "none" + } + }, + [`${n}-leave`]: { + animationTimingFunction: e.motionEaseInOutCirc + } + }]; +}, yft = (e) => ({ + [e.componentCls]: { + // For common/openAnimation + [`${e.antCls}-motion-collapse-legacy`]: { + overflow: "hidden", + "&-active": { + transition: `height ${e.motionDurationMid} ${e.motionEaseInOut}, + opacity ${e.motionDurationMid} ${e.motionEaseInOut} !important` + } + }, + [`${e.antCls}-motion-collapse`]: { + overflow: "hidden", + transition: `height ${e.motionDurationMid} ${e.motionEaseInOut}, + opacity ${e.motionDurationMid} ${e.motionEaseInOut} !important` + } + } +}), _ft = yft, Sft = (e) => { + const { + componentCls: t + } = e, r = `${t}-show-help`, n = `${t}-show-help-item`; + return { + [r]: { + // Explain holder + transition: `opacity ${e.motionDurationSlow} ${e.motionEaseInOut}`, + "&-appear, &-enter": { + opacity: 0, + "&-active": { + opacity: 1 + } + }, + "&-leave": { + opacity: 1, + "&-active": { + opacity: 0 + } + }, + // Explain + [n]: { + overflow: "hidden", + transition: `height ${e.motionDurationSlow} ${e.motionEaseInOut}, + opacity ${e.motionDurationSlow} ${e.motionEaseInOut}, + transform ${e.motionDurationSlow} ${e.motionEaseInOut} !important`, + [`&${n}-appear, &${n}-enter`]: { + transform: "translateY(-5px)", + opacity: 0, + "&-active": { + transform: "translateY(0)", + opacity: 1 + } + }, + [`&${n}-leave-active`]: { + transform: "translateY(-5px)" + } + } + } + }; +}, bft = Sft, Eft = (e) => ({ + legend: { + display: "block", + width: "100%", + marginBottom: e.marginLG, + padding: 0, + color: e.colorTextDescription, + fontSize: e.fontSizeLG, + lineHeight: "inherit", + border: 0, + borderBottom: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}` + }, + 'input[type="search"]': { + boxSizing: "border-box" + }, + // Position radios and checkboxes better + 'input[type="radio"], input[type="checkbox"]': { + lineHeight: "normal" + }, + 'input[type="file"]': { + display: "block" + }, + // Make range inputs behave like textual form controls + 'input[type="range"]': { + display: "block", + width: "100%" + }, + // Make multiple select elements height not fixed + "select[multiple], select[size]": { + height: "auto" + }, + // Focus for file, radio, and checkbox + "input[type='file']:focus,\n input[type='radio']:focus,\n input[type='checkbox']:focus": { + outline: 0, + boxShadow: `0 0 0 ${da(e.controlOutlineWidth)} ${e.controlOutline}` + }, + // Adjust output element + output: { + display: "block", + paddingTop: 15, + color: e.colorText, + fontSize: e.fontSize, + lineHeight: e.lineHeight + } +}), fhe = (e, t) => { + const { + formItemCls: r + } = e; + return { + [r]: { + [`${r}-label > label`]: { + height: t + }, + [`${r}-control-input`]: { + minHeight: t + } + } + }; +}, Cft = (e) => { + const { + componentCls: t + } = e; + return { + [e.componentCls]: Object.assign(Object.assign(Object.assign({}, $D(e)), Eft(e)), { + [`${t}-text`]: { + display: "inline-block", + paddingInlineEnd: e.paddingSM + }, + // ================================================================ + // = Size = + // ================================================================ + "&-small": Object.assign({}, fhe(e, e.controlHeightSM)), + "&-large": Object.assign({}, fhe(e, e.controlHeightLG)) + }) + }; +}, Tft = (e) => { + const { + formItemCls: t, + iconCls: r, + componentCls: n, + rootPrefixCls: i, + labelRequiredMarkColor: a, + labelColor: o, + labelFontSize: l, + labelHeight: u, + labelColonMarginInlineStart: d, + labelColonMarginInlineEnd: f, + itemMarginBottom: g + } = e; + return { + [t]: Object.assign(Object.assign({}, $D(e)), { + marginBottom: g, + verticalAlign: "top", + "&-with-help": { + transition: "none" + }, + [`&-hidden, + &-hidden.${i}-row`]: { + // https://github.com/ant-design/ant-design/issues/26141 + display: "none" + }, + "&-has-warning": { + [`${t}-split`]: { + color: e.colorError + } + }, + "&-has-error": { + [`${t}-split`]: { + color: e.colorWarning + } + }, + // ============================================================== + // = Label = + // ============================================================== + [`${t}-label`]: { + flexGrow: 0, + overflow: "hidden", + whiteSpace: "nowrap", + textAlign: "end", + verticalAlign: "middle", + "&-left": { + textAlign: "start" + }, + "&-wrap": { + overflow: "unset", + lineHeight: e.lineHeight, + whiteSpace: "unset" + }, + "> label": { + position: "relative", + display: "inline-flex", + alignItems: "center", + maxWidth: "100%", + height: u, + color: o, + fontSize: l, + [`> ${r}`]: { + fontSize: e.fontSize, + verticalAlign: "top" + }, + // Required mark + [`&${t}-required:not(${t}-required-mark-optional)::before`]: { + display: "inline-block", + marginInlineEnd: e.marginXXS, + color: a, + fontSize: e.fontSize, + fontFamily: "SimSun, sans-serif", + lineHeight: 1, + content: '"*"', + [`${n}-hide-required-mark &`]: { + display: "none" + } + }, + // Optional mark + [`${t}-optional`]: { + display: "inline-block", + marginInlineStart: e.marginXXS, + color: e.colorTextDescription, + [`${n}-hide-required-mark &`]: { + display: "none" + } + }, + // Optional mark + [`${t}-tooltip`]: { + color: e.colorTextDescription, + cursor: "help", + writingMode: "horizontal-tb", + marginInlineStart: e.marginXXS + }, + "&::after": { + content: '":"', + position: "relative", + marginBlock: 0, + marginInlineStart: d, + marginInlineEnd: f + }, + [`&${t}-no-colon::after`]: { + content: '"\\a0"' + } + } + }, + // ============================================================== + // = Input = + // ============================================================== + [`${t}-control`]: { + "--ant-display": "flex", + flexDirection: "column", + flexGrow: 1, + [`&:first-child:not([class^="'${i}-col-'"]):not([class*="' ${i}-col-'"])`]: { + width: "100%" + }, + "&-input": { + position: "relative", + display: "flex", + alignItems: "center", + minHeight: e.controlHeight, + "&-content": { + flex: "auto", + maxWidth: "100%" + } + } + }, + // ============================================================== + // = Explain = + // ============================================================== + [t]: { + "&-explain, &-extra": { + clear: "both", + color: e.colorTextDescription, + fontSize: e.fontSize, + lineHeight: e.lineHeight + }, + "&-explain-connected": { + width: "100%" + }, + "&-extra": { + minHeight: e.controlHeightSM, + transition: `color ${e.motionDurationMid} ${e.motionEaseOut}` + // sync input color transition + }, + "&-explain": { + "&-error": { + color: e.colorError + }, + "&-warning": { + color: e.colorWarning + } + } + }, + [`&-with-help ${t}-explain`]: { + height: "auto", + opacity: 1 + }, + // ============================================================== + // = Feedback Icon = + // ============================================================== + [`${t}-feedback-icon`]: { + fontSize: e.fontSize, + textAlign: "center", + visibility: "visible", + animationName: t7, + animationDuration: e.motionDurationMid, + animationTimingFunction: e.motionEaseOutBack, + pointerEvents: "none", + "&-success": { + color: e.colorSuccess + }, + "&-error": { + color: e.colorError + }, + "&-warning": { + color: e.colorWarning + }, + "&-validating": { + color: e.colorPrimary + } + } + }) + }; +}, wft = (e) => { + const { + componentCls: t, + formItemCls: r + } = e; + return { + [`${t}-horizontal`]: { + [`${r}-label`]: { + flexGrow: 0 + }, + [`${r}-control`]: { + flex: "1 1 0", + // https://github.com/ant-design/ant-design/issues/32777 + // https://github.com/ant-design/ant-design/issues/33773 + minWidth: 0 + }, + // Do not change this to `ant-col-24`! `-24` match all the responsive rules + // https://github.com/ant-design/ant-design/issues/32980 + // https://github.com/ant-design/ant-design/issues/34903 + // https://github.com/ant-design/ant-design/issues/44538 + [`${r}-label[class$='-24'], ${r}-label[class*='-24 ']`]: { + [`& + ${r}-control`]: { + minWidth: "unset" + } + } + } + }; +}, Ift = (e) => { + const { + componentCls: t, + formItemCls: r + } = e; + return { + [`${t}-inline`]: { + display: "flex", + flexWrap: "wrap", + [r]: { + flex: "none", + marginInlineEnd: e.margin, + marginBottom: 0, + "&-row": { + flexWrap: "nowrap" + }, + [`> ${r}-label, + > ${r}-control`]: { + display: "inline-block", + verticalAlign: "top" + }, + [`> ${r}-label`]: { + flex: "none" + }, + [`${t}-text`]: { + display: "inline-block" + }, + [`${r}-has-feedback`]: { + display: "inline-block" + } + } + } + }; +}, tw = (e) => ({ + padding: e.verticalLabelPadding, + margin: e.verticalLabelMargin, + whiteSpace: "initial", + textAlign: "start", + "> label": { + margin: 0, + "&::after": { + // https://github.com/ant-design/ant-design/issues/43538 + visibility: "hidden" + } + } +}), xft = (e) => { + const { + componentCls: t, + formItemCls: r, + rootPrefixCls: n + } = e; + return { + [`${r} ${r}-label`]: tw(e), + // ref: https://github.com/ant-design/ant-design/issues/45122 + [`${t}:not(${t}-inline)`]: { + [r]: { + flexWrap: "wrap", + [`${r}-label, ${r}-control`]: { + // When developer pass `xs: { span }`, + // It should follow the `xs` screen config + // ref: https://github.com/ant-design/ant-design/issues/44386 + [`&:not([class*=" ${n}-col-xs"])`]: { + flex: "0 0 100%", + maxWidth: "100%" + } + } + } + } + }; +}, Aft = (e) => { + const { + componentCls: t, + formItemCls: r, + rootPrefixCls: n + } = e; + return { + [`${t}-vertical`]: { + [r]: { + "&-row": { + flexDirection: "column" + }, + "&-label > label": { + height: "auto" + }, + [`${t}-item-control`]: { + width: "100%" + } + } + }, + [`${t}-vertical ${r}-label, + .${n}-col-24${r}-label, + .${n}-col-xl-24${r}-label`]: tw(e), + [`@media (max-width: ${da(e.screenXSMax)})`]: [xft(e), { + [t]: { + [`.${n}-col-xs-24${r}-label`]: tw(e) + } + }], + [`@media (max-width: ${da(e.screenSMMax)})`]: { + [t]: { + [`.${n}-col-sm-24${r}-label`]: tw(e) + } + }, + [`@media (max-width: ${da(e.screenMDMax)})`]: { + [t]: { + [`.${n}-col-md-24${r}-label`]: tw(e) + } + }, + [`@media (max-width: ${da(e.screenLGMax)})`]: { + [t]: { + [`.${n}-col-lg-24${r}-label`]: tw(e) + } + } + }; +}, Rft = (e) => ({ + labelRequiredMarkColor: e.colorError, + labelColor: e.colorTextHeading, + labelFontSize: e.fontSize, + labelHeight: e.controlHeight, + labelColonMarginInlineStart: e.marginXXS / 2, + labelColonMarginInlineEnd: e.marginXS, + itemMarginBottom: e.marginLG, + verticalLabelPadding: `0 0 ${e.paddingXS}px`, + verticalLabelMargin: 0 +}), YCe = (e, t) => wd(e, { + formItemCls: `${e.componentCls}-item`, + rootPrefixCls: t +}), r7 = MI("Form", (e, t) => { + let { + rootPrefixCls: r + } = t; + const n = YCe(e, r); + return [Cft(n), Tft(n), bft(n), wft(n), Ift(n), Aft(n), _ft(n), t7]; +}, Rft, { + // Let From style before the Grid + // ref https://github.com/ant-design/ant-design/issues/44386 + order: -1e3 +}), Dft = (e) => { + const [, , , , t] = Fp(); + return t ? `${e}-css-var` : ""; +}, GD = Dft, phe = []; +function f4(e, t, r) { + let n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; + return { + key: typeof e == "string" ? e : `${t}-${n}`, + error: e, + errorStatus: r + }; +} +const Oft = (e) => { + let { + help: t, + helpStatus: r, + errors: n = phe, + warnings: i = phe, + className: a, + fieldId: o, + onVisibleChanged: l + } = e; + const { + prefixCls: u + } = $react.useContext(e7), d = `${u}-item-explain`, f = GD(u), [g, v, y] = r7(u, f), C = $react.useMemo(() => Jue(u), [u]), A = m2(n), S = m2(i), _ = $react.useMemo(() => t != null ? [f4(t, "help", r)] : [].concat(Gn(A.map((I, w) => f4(I, "error", "error", w))), Gn(S.map((I, w) => f4(I, "warning", "warning", w)))), [t, r, A, S]), E = {}; + return o && (E.id = `${o}_help`), g( + /* @__PURE__ */ dt(kI, { + motionDeadline: C.motionDeadline, + motionName: `${u}-show-help`, + visible: !!_.length, + onVisibleChanged: l, + children: (I) => { + const { + className: w, + style: x + } = I; + return /* @__PURE__ */ dt("div", rn(br({}, Object.assign({}, E, { + className: Cn(d, w, y, f, a, v), + style: x, + role: "alert" + })), { + children: /* @__PURE__ */ dt(xut, rn(br({}, Object.assign({ + keys: _ + }, Jue(u), { + motionName: `${u}-show-help-item`, + component: !1 + })), { + children: (b) => { + const { + key: R, + error: M, + errorStatus: O, + className: P, + style: B + } = b; + return /* @__PURE__ */ dt("div", { + className: Cn(P, { + [`${d}-${O}`]: O + }), + style: B, + children: M + }, R); + } + })) + })); + } + }) + ); +}, XCe = Oft, ghe = (e) => typeof e == "object" && e != null && e.nodeType === 1, vhe = (e, t) => (!t || e !== "hidden") && e !== "visible" && e !== "clip", p4 = (e, t) => { + if (e.clientHeight < e.scrollHeight || e.clientWidth < e.scrollWidth) { + const r = getComputedStyle(e, null); + return vhe(r.overflowY, t) || vhe(r.overflowX, t) || ((n) => { + const i = ((a) => { + if (!a.ownerDocument || !a.ownerDocument.defaultView) + return null; + try { + return a.ownerDocument.defaultView.frameElement; + } catch (o) { + return null; + } + })(n); + return !!i && (i.clientHeight < n.scrollHeight || i.clientWidth < n.scrollWidth); + })(e); + } + return !1; +}, WP = (e, t, r, n, i, a, o, l) => a < e && o > t || a > e && o < t ? 0 : a <= e && l <= r || o >= t && l >= r ? a - e - n : o > t && l < r || a < e && l > r ? o - t + i : 0, Mft = (e) => { + const t = e.parentElement; + return t == null ? e.getRootNode().host || null : t; +}, mhe = (e, t) => { + var r, n, i, a; + if (typeof document == "undefined") + return []; + const { scrollMode: o, block: l, inline: u, boundary: d, skipOverflowHiddenElements: f } = t, g = typeof d == "function" ? d : (ae) => ae !== d; + if (!ghe(e)) + throw new TypeError("Invalid target"); + const v = document.scrollingElement || document.documentElement, y = []; + let C = e; + for (; ghe(C) && g(C); ) { + if (C = Mft(C), C === v) { + y.push(C); + break; + } + C != null && C === document.body && p4(C) && !p4(document.documentElement) || C != null && p4(C, f) && y.push(C); + } + const A = (n = (r = window.visualViewport) == null ? void 0 : r.width) != null ? n : innerWidth, S = (a = (i = window.visualViewport) == null ? void 0 : i.height) != null ? a : innerHeight, { scrollX: _, scrollY: E } = window, { height: I, width: w, top: x, right: b, bottom: R, left: M } = e.getBoundingClientRect(), { top: O, right: P, bottom: B, left: H } = ((ae) => { + const J = window.getComputedStyle(ae); + return { top: parseFloat(J.scrollMarginTop) || 0, right: parseFloat(J.scrollMarginRight) || 0, bottom: parseFloat(J.scrollMarginBottom) || 0, left: parseFloat(J.scrollMarginLeft) || 0 }; + })(e); + let Y = l === "start" || l === "nearest" ? x - O : l === "end" ? R + B : x + I / 2 - O + B, X = u === "center" ? M + w / 2 - H + P : u === "end" ? b + P : M - H; + const ee = []; + for (let ae = 0; ae < y.length; ae++) { + const J = y[ae], { height: ne, width: fe, top: de, right: Te, bottom: be, left: Ve } = J.getBoundingClientRect(); + if (o === "if-needed" && x >= 0 && M >= 0 && R <= S && b <= A && x >= de && R <= be && M >= Ve && b <= Te) + return ee; + const pe = getComputedStyle(J), Be = parseInt(pe.borderLeftWidth, 10), Ue = parseInt(pe.borderTopWidth, 10), Qe = parseInt(pe.borderRightWidth, 10), Re = parseInt(pe.borderBottomWidth, 10); + let Ne = 0, Me = 0; + const we = "offsetWidth" in J ? J.offsetWidth - J.clientWidth - Be - Qe : 0, He = "offsetHeight" in J ? J.offsetHeight - J.clientHeight - Ue - Re : 0, Ie = "offsetWidth" in J ? J.offsetWidth === 0 ? 0 : fe / J.offsetWidth : 0, Ae = "offsetHeight" in J ? J.offsetHeight === 0 ? 0 : ne / J.offsetHeight : 0; + if (v === J) + Ne = l === "start" ? Y : l === "end" ? Y - S : l === "nearest" ? WP(E, E + S, S, Ue, Re, E + Y, E + Y + I, I) : Y - S / 2, Me = u === "start" ? X : u === "center" ? X - A / 2 : u === "end" ? X - A : WP(_, _ + A, A, Be, Qe, _ + X, _ + X + w, w), Ne = Math.max(0, Ne + E), Me = Math.max(0, Me + _); + else { + Ne = l === "start" ? Y - de - Ue : l === "end" ? Y - be + Re + He : l === "nearest" ? WP(de, be, ne, Ue, Re + He, Y, Y + I, I) : Y - (de + ne / 2) + He / 2, Me = u === "start" ? X - Ve - Be : u === "center" ? X - (Ve + fe / 2) + we / 2 : u === "end" ? X - Te + Qe + we : WP(Ve, Te, fe, Be, Qe + we, X, X + w, w); + const { scrollLeft: Fe, scrollTop: $e } = J; + Ne = Ae === 0 ? 0 : Math.max(0, Math.min($e + Ne / Ae, J.scrollHeight - ne / Ae + He)), Me = Ie === 0 ? 0 : Math.max(0, Math.min(Fe + Me / Ie, J.scrollWidth - fe / Ie + we)), Y += $e - Ne, X += Fe - Me; + } + ee.push({ el: J, top: Ne, left: Me }); + } + return ee; +}, kft = (e) => e === !1 ? { block: "end", inline: "nearest" } : ((t) => t === Object(t) && Object.keys(t).length !== 0)(e) ? e : { block: "start", inline: "nearest" }; +function Pft(e, t) { + if (!e.isConnected || !((i) => { + let a = i; + for (; a && a.parentNode; ) { + if (a.parentNode === document) + return !0; + a = a.parentNode instanceof ShadowRoot ? a.parentNode.host : a.parentNode; + } + return !1; + })(e)) + return; + const r = ((i) => { + const a = window.getComputedStyle(i); + return { top: parseFloat(a.scrollMarginTop) || 0, right: parseFloat(a.scrollMarginRight) || 0, bottom: parseFloat(a.scrollMarginBottom) || 0, left: parseFloat(a.scrollMarginLeft) || 0 }; + })(e); + if (((i) => typeof i == "object" && typeof i.behavior == "function")(t)) + return t.behavior(mhe(e, t)); + const n = typeof t == "boolean" || t == null ? void 0 : t.behavior; + for (const { el: i, top: a, left: o } of mhe(e, kft(t))) { + const l = a - r.top + r.bottom, u = o - r.left + r.right; + i.scroll({ top: l, left: u, behavior: n }); + } +} +const Nft = ["parentNode"], Lft = "form_item"; +function H1(e) { + return e === void 0 || e === !1 ? [] : Array.isArray(e) ? e : [e]; +} +function KCe(e, t) { + if (!e.length) + return; + const r = e.join("_"); + return t ? `${t}_${r}` : Nft.includes(r) ? `${Lft}_${r}` : r; +} +function ZCe(e, t, r, n, i, a) { + let o = n; + return a !== void 0 ? o = a : r.validating ? o = "validating" : e.length ? o = "error" : t.length ? o = "warning" : (r.touched || i && r.validated) && (o = "success"), o; +} +function yhe(e) { + return H1(e).join("_"); +} +function qCe(e) { + const [t] = QY(), r = $react.useRef({}), n = $react.useMemo(() => e != null ? e : Object.assign(Object.assign({}, t), { + __INTERNAL__: { + itemRef: (i) => (a) => { + const o = yhe(i); + a ? r.current[o] = a : delete r.current[o]; + } + }, + scrollToField: function(i) { + let a = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + const o = H1(i), l = KCe(o, n.__INTERNAL__.name), u = l ? document.getElementById(l) : null; + u && Pft(u, Object.assign({ + scrollMode: "if-needed", + block: "nearest" + }, a)); + }, + getFieldInstance: (i) => { + const a = yhe(i); + return r.current[a]; + } + }), [e, t]); + return [n]; +} +var Fft = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const Bft = (e, t) => { + const r = $react.useContext(UD), { + getPrefixCls: n, + direction: i, + form: a + } = $react.useContext(Sl), { + prefixCls: o, + className: l, + rootClassName: u, + size: d, + disabled: f = r, + form: g, + colon: v, + labelAlign: y, + labelWrap: C, + labelCol: A, + wrapperCol: S, + hideRequiredMark: _, + layout: E = "horizontal", + scrollToFirstError: I, + requiredMark: w, + onFinishFailed: x, + name: b, + style: R, + feedbackIcons: M, + variant: O + } = e, P = Fft(e, ["prefixCls", "className", "rootClassName", "size", "disabled", "form", "colon", "labelAlign", "labelWrap", "labelCol", "wrapperCol", "hideRequiredMark", "layout", "scrollToFirstError", "requiredMark", "onFinishFailed", "name", "style", "feedbackIcons", "variant"]), B = HD(d), H = $react.useContext(UEe), Y = $react.useMemo(() => w !== void 0 ? w : _ ? !1 : a && a.requiredMark !== void 0 ? a.requiredMark : !0, [_, w, a]), X = v != null ? v : a == null ? void 0 : a.colon, ee = n("form", o), ae = GD(ee), [J, ne, fe] = r7(ee, ae), de = Cn(ee, `${ee}-${E}`, { + [`${ee}-hide-required-mark`]: Y === !1, + [`${ee}-rtl`]: i === "rtl", + [`${ee}-${B}`]: B + }, fe, ae, ne, a == null ? void 0 : a.className, l, u), [Te] = qCe(g), { + __INTERNAL__: be + } = Te; + be.name = b; + const Ve = $react.useMemo(() => ({ + name: b, + labelAlign: y, + labelCol: A, + labelWrap: C, + wrapperCol: S, + vertical: E === "vertical", + colon: X, + requiredMark: Y, + itemRef: be.itemRef, + form: Te, + feedbackIcons: M + }), [b, y, A, S, E, X, Y, Te, M]); + $react.useImperativeHandle(t, () => Te); + const pe = (Ue, Qe) => { + if (Ue) { + let Re = { + block: "nearest" + }; + typeof Ue == "object" && (Re = Ue), Te.scrollToField(Qe, Re); + } + }, Be = (Ue) => { + if (x == null || x(Ue), Ue.errorFields.length) { + const Qe = Ue.errorFields[0].name; + if (I !== void 0) { + pe(I, Qe); + return; + } + a && a.scrollToFirstError !== void 0 && pe(a.scrollToFirstError, Qe); + } + }; + return J( + /* @__PURE__ */ dt(GCe.Provider, { + value: O, + children: /* @__PURE__ */ dt(KEe, { + disabled: f, + children: /* @__PURE__ */ dt(jD.Provider, { + value: B, + children: /* @__PURE__ */ dt(WCe, { + validateMessages: H, + children: /* @__PURE__ */ dt(qm.Provider, { + value: Ve, + children: /* @__PURE__ */ dt(PI, br({}, Object.assign({ + id: b + }, P, { + name: b, + onFinishFailed: Be, + form: Te, + style: Object.assign(Object.assign({}, a == null ? void 0 : a.style), R), + className: de + }))) + }) + }) + }) + }) + }) + ); +}, Uft = /* @__PURE__ */ $react.forwardRef(Bft), jft = Uft; +function $ft(e) { + if (typeof e == "function") + return e; + const t = $R(e); + return t.length <= 1 ? t[0] : t; +} +const JCe = () => { + const { + status: e, + errors: t = [], + warnings: r = [] + } = $react.useContext(lv); + return { + status: e, + errors: t, + warnings: r + }; +}; +JCe.Context = lv; +const Vft = JCe; +function zft(e) { + const [t, r] = $react.useState(e), n = $react.useRef(null), i = $react.useRef([]), a = $react.useRef(!1); + $react.useEffect(() => (a.current = !1, () => { + a.current = !0, yd.cancel(n.current), n.current = null; + }), []); + function o(l) { + a.current || (n.current === null && (i.current = [], n.current = yd(() => { + n.current = null, r((u) => { + let d = u; + return i.current.forEach((f) => { + d = f(d); + }), d; + }); + })), i.current.push(l)); + } + return [t, o]; +} +function Hft() { + const { + itemRef: e + } = $react.useContext(qm), t = $react.useRef({}); + function r(n, i) { + const a = i && typeof i == "object" && i.ref, o = n.join("_"); + return (t.current.name !== o || t.current.originRef !== a) && (t.current.name = o, t.current.originRef = a, t.current.ref = M0(e(n), a)), t.current.ref; + } + return r; +} +const Wft = /* @__PURE__ */ $react.createContext({}), QCe = Wft, Gft = (e) => { + const { + componentCls: t + } = e; + return { + // Grid system + [t]: { + display: "flex", + flexFlow: "row wrap", + minWidth: 0, + "&::before, &::after": { + display: "flex" + }, + "&-no-wrap": { + flexWrap: "nowrap" + }, + // The origin of the X-axis + "&-start": { + justifyContent: "flex-start" + }, + // The center of the X-axis + "&-center": { + justifyContent: "center" + }, + // The opposite of the X-axis + "&-end": { + justifyContent: "flex-end" + }, + "&-space-between": { + justifyContent: "space-between" + }, + "&-space-around": { + justifyContent: "space-around" + }, + "&-space-evenly": { + justifyContent: "space-evenly" + }, + // Align at the top + "&-top": { + alignItems: "flex-start" + }, + // Align at the center + "&-middle": { + alignItems: "center" + }, + "&-bottom": { + alignItems: "flex-end" + } + } + }; +}, Yft = (e) => { + const { + componentCls: t + } = e; + return { + // Grid system + [t]: { + position: "relative", + maxWidth: "100%", + // Prevent columns from collapsing when empty + minHeight: 1 + } + }; +}, Xft = (e, t) => { + const { + componentCls: r, + gridColumns: n + } = e, i = {}; + for (let a = n; a >= 0; a--) + a === 0 ? (i[`${r}${t}-${a}`] = { + display: "none" + }, i[`${r}-push-${a}`] = { + insetInlineStart: "auto" + }, i[`${r}-pull-${a}`] = { + insetInlineEnd: "auto" + }, i[`${r}${t}-push-${a}`] = { + insetInlineStart: "auto" + }, i[`${r}${t}-pull-${a}`] = { + insetInlineEnd: "auto" + }, i[`${r}${t}-offset-${a}`] = { + marginInlineStart: 0 + }, i[`${r}${t}-order-${a}`] = { + order: 0 + }) : (i[`${r}${t}-${a}`] = [ + // https://github.com/ant-design/ant-design/issues/44456 + // Form set `display: flex` on Col which will override `display: block`. + // Let's get it from css variable to support override. + { + "--ant-display": "block", + // Fallback to display if variable not support + display: "block" + }, + { + display: "var(--ant-display)", + flex: `0 0 ${a / n * 100}%`, + maxWidth: `${a / n * 100}%` + } + ], i[`${r}${t}-push-${a}`] = { + insetInlineStart: `${a / n * 100}%` + }, i[`${r}${t}-pull-${a}`] = { + insetInlineEnd: `${a / n * 100}%` + }, i[`${r}${t}-offset-${a}`] = { + marginInlineStart: `${a / n * 100}%` + }, i[`${r}${t}-order-${a}`] = { + order: a + }); + return i; +}, XG = (e, t) => Xft(e, t), Kft = (e, t, r) => ({ + [`@media (min-width: ${da(t)})`]: Object.assign({}, XG(e, r)) +}), Zft = () => ({}), qft = () => ({}), Jft = MI("Grid", Gft, Zft), Qft = MI("Grid", (e) => { + const t = wd(e, { + gridColumns: 24 + // Row is divided into 24 parts in Grid + }), r = { + "-sm": t.screenSMMin, + "-md": t.screenMDMin, + "-lg": t.screenLGMin, + "-xl": t.screenXLMin, + "-xxl": t.screenXXLMin + }; + return [Yft(t), XG(t, ""), XG(t, "-xs"), Object.keys(r).map((n) => Kft(t, r[n], n)).reduce((n, i) => Object.assign(Object.assign({}, n), i), {})]; +}, qft); +var ept = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function tpt(e) { + return typeof e == "number" ? `${e} ${e} auto` : /^\d+(\.\d+)?(px|em|rem|%)$/.test(e) ? `0 0 ${e}` : e; +} +const rpt = ["xs", "sm", "md", "lg", "xl", "xxl"], npt = /* @__PURE__ */ $react.forwardRef((e, t) => { + const { + getPrefixCls: r, + direction: n + } = $react.useContext(Sl), { + gutter: i, + wrap: a + } = $react.useContext(QCe), { + prefixCls: o, + span: l, + order: u, + offset: d, + push: f, + pull: g, + className: v, + children: y, + flex: C, + style: A + } = e, S = ept(e, ["prefixCls", "span", "order", "offset", "push", "pull", "className", "children", "flex", "style"]), _ = r("col", o), [E, I, w] = Qft(_); + let x = {}; + rpt.forEach((M) => { + let O = {}; + const P = e[M]; + typeof P == "number" ? O.span = P : typeof P == "object" && (O = P || {}), delete S[M], x = Object.assign(Object.assign({}, x), { + [`${_}-${M}-${O.span}`]: O.span !== void 0, + [`${_}-${M}-order-${O.order}`]: O.order || O.order === 0, + [`${_}-${M}-offset-${O.offset}`]: O.offset || O.offset === 0, + [`${_}-${M}-push-${O.push}`]: O.push || O.push === 0, + [`${_}-${M}-pull-${O.pull}`]: O.pull || O.pull === 0, + [`${_}-${M}-flex-${O.flex}`]: O.flex || O.flex === "auto", + [`${_}-rtl`]: n === "rtl" + }); + }); + const b = Cn(_, { + [`${_}-${l}`]: l !== void 0, + [`${_}-order-${u}`]: u, + [`${_}-offset-${d}`]: d, + [`${_}-push-${f}`]: f, + [`${_}-pull-${g}`]: g + }, v, x, I, w), R = {}; + if (i && i[0] > 0) { + const M = i[0] / 2; + R.paddingLeft = M, R.paddingRight = M; + } + return C && (R.flex = tpt(C), a === !1 && !R.minWidth && (R.minWidth = 0)), E( + /* @__PURE__ */ dt("div", rn(br({}, Object.assign({}, S, { + style: Object.assign(Object.assign({}, R), A), + className: b, + ref: t + })), { + children: y + })) + ); +}), eTe = npt, WR = ["xxl", "xl", "lg", "md", "sm", "xs"], ipt = (e) => ({ + xs: `(max-width: ${e.screenXSMax}px)`, + sm: `(min-width: ${e.screenSM}px)`, + md: `(min-width: ${e.screenMD}px)`, + lg: `(min-width: ${e.screenLG}px)`, + xl: `(min-width: ${e.screenXL}px)`, + xxl: `(min-width: ${e.screenXXL}px)` +}), apt = (e) => { + const t = e, r = [].concat(WR).reverse(); + return r.forEach((n, i) => { + const a = n.toUpperCase(), o = `screen${a}Min`, l = `screen${a}`; + if (!(t[o] <= t[l])) + throw new Error(`${o}<=${l} fails : !(${t[o]}<=${t[l]})`); + if (i < r.length - 1) { + const u = `screen${a}Max`; + if (!(t[l] <= t[u])) + throw new Error(`${l}<=${u} fails : !(${t[l]}<=${t[u]})`); + const f = `screen${r[i + 1].toUpperCase()}Min`; + if (!(t[u] <= t[f])) + throw new Error(`${u}<=${f} fails : !(${t[u]}<=${t[f]})`); + } + }), e; +}; +function opt() { + const [, e] = Fp(), t = ipt(apt(e)); + return $react.useMemo(() => { + const r = /* @__PURE__ */ new Map(); + let n = -1, i = {}; + return { + matchHandlers: {}, + dispatch(a) { + return i = a, r.forEach((o) => o(i)), r.size >= 1; + }, + subscribe(a) { + return r.size || this.register(), n += 1, r.set(n, a), a(i), n; + }, + unsubscribe(a) { + r.delete(a), r.size || this.unregister(); + }, + unregister() { + Object.keys(t).forEach((a) => { + const o = t[a], l = this.matchHandlers[o]; + l == null || l.mql.removeListener(l == null ? void 0 : l.listener); + }), r.clear(); + }, + register() { + Object.keys(t).forEach((a) => { + const o = t[a], l = (d) => { + let { + matches: f + } = d; + this.dispatch(Object.assign(Object.assign({}, i), { + [a]: f + })); + }, u = window.matchMedia(o); + u.addListener(l), this.matchHandlers[o] = { + mql: u, + listener: l + }, l(u); + }); + }, + responsiveMap: t + }; + }, [e]); +} +var spt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function _he(e, t) { + const [r, n] = $react.useState(typeof e == "string" ? e : ""), i = () => { + if (typeof e == "string" && n(e), typeof e == "object") + for (let a = 0; a < WR.length; a++) { + const o = WR[a]; + if (!t[o]) + continue; + const l = e[o]; + if (l !== void 0) { + n(l); + return; + } + } + }; + return $react.useEffect(() => { + i(); + }, [JSON.stringify(e), t]), r; +} +const lpt = /* @__PURE__ */ $react.forwardRef((e, t) => { + const { + prefixCls: r, + justify: n, + align: i, + className: a, + style: o, + children: l, + gutter: u = 0, + wrap: d + } = e, f = spt(e, ["prefixCls", "justify", "align", "className", "style", "children", "gutter", "wrap"]), { + getPrefixCls: g, + direction: v + } = $react.useContext(Sl), [y, C] = $react.useState({ + xs: !0, + sm: !0, + md: !0, + lg: !0, + xl: !0, + xxl: !0 + }), [A, S] = $react.useState({ + xs: !1, + sm: !1, + md: !1, + lg: !1, + xl: !1, + xxl: !1 + }), _ = _he(i, A), E = _he(n, A), I = $react.useRef(u), w = opt(); + $react.useEffect(() => { + const J = w.subscribe((ne) => { + S(ne); + const fe = I.current || 0; + (!Array.isArray(fe) && typeof fe == "object" || Array.isArray(fe) && (typeof fe[0] == "object" || typeof fe[1] == "object")) && C(ne); + }); + return () => w.unsubscribe(J); + }, []); + const x = () => { + const J = [void 0, void 0]; + return (Array.isArray(u) ? u : [u, void 0]).forEach((fe, de) => { + if (typeof fe == "object") + for (let Te = 0; Te < WR.length; Te++) { + const be = WR[Te]; + if (y[be] && fe[be] !== void 0) { + J[de] = fe[be]; + break; + } + } + else + J[de] = fe; + }), J; + }, b = g("row", r), [R, M, O] = Jft(b), P = x(), B = Cn(b, { + [`${b}-no-wrap`]: d === !1, + [`${b}-${E}`]: E, + [`${b}-${_}`]: _, + [`${b}-rtl`]: v === "rtl" + }, a, M, O), H = {}, Y = P[0] != null && P[0] > 0 ? P[0] / -2 : void 0; + Y && (H.marginLeft = Y, H.marginRight = Y), [, H.rowGap] = P; + const [X, ee] = P, ae = $react.useMemo(() => ({ + gutter: [X, ee], + wrap: d + }), [X, ee, d]); + return R( + /* @__PURE__ */ dt(QCe.Provider, { + value: ae, + children: /* @__PURE__ */ dt("div", rn(br({}, Object.assign({}, f, { + className: B, + style: Object.assign(Object.assign({}, H), o), + ref: t + })), { + children: l + })) + }) + ); +}), cpt = lpt, upt = (e) => { + const { + formItemCls: t + } = e; + return { + "@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)": { + // Fallback for IE, safe to remove we not support it anymore + [`${t}-control`]: { + display: "flex" + } + } + }; +}, hpt = oCe(["Form", "item-item"], (e, t) => { + let { + rootPrefixCls: r + } = t; + const n = YCe(e, r); + return [upt(n)]; +}), dpt = (e) => { + const { + prefixCls: t, + status: r, + wrapperCol: n, + children: i, + errors: a, + warnings: o, + _internalItemRender: l, + extra: u, + help: d, + fieldId: f, + marginBottom: g, + onErrorVisibleChanged: v + } = e, y = `${t}-item`, C = $react.useContext(qm), A = n || C.wrapperCol || {}, S = Cn(`${y}-control`, A.className), _ = $react.useMemo(() => Object.assign({}, C), [C]); + delete _.labelCol, delete _.wrapperCol; + const E = /* @__PURE__ */ dt("div", { + className: `${y}-control-input`, + children: /* @__PURE__ */ dt("div", { + className: `${y}-control-input-content`, + children: i + }) + }), I = $react.useMemo(() => ({ + prefixCls: t, + status: r + }), [t, r]), w = g !== null || a.length || o.length ? /* @__PURE__ */ gn("div", { + style: { + display: "flex", + flexWrap: "nowrap" + }, + children: [/* @__PURE__ */ dt(e7.Provider, { + value: I, + children: /* @__PURE__ */ dt(XCe, { + fieldId: f, + errors: a, + warnings: o, + help: d, + helpStatus: r, + className: `${y}-explain-connected`, + onVisibleChanged: v + }) + }), !!g && /* @__PURE__ */ dt("div", { + style: { + width: 0, + height: g + } + })] + }) : null, x = {}; + f && (x.id = `${f}_extra`); + const b = u ? /* @__PURE__ */ dt("div", rn(br({}, Object.assign({}, x, { + className: `${y}-extra` + })), { + children: u + })) : null, R = l && l.mark === "pro_table_render" && l.render ? l.render(e, { + input: E, + errorList: w, + extra: b + }) : /* @__PURE__ */ gn(Ta, { + children: [E, w, b] + }); + return /* @__PURE__ */ gn(qm.Provider, { + value: _, + children: [/* @__PURE__ */ dt(eTe, rn(br({}, Object.assign({}, A, { + className: S + })), { + children: R + })), /* @__PURE__ */ dt(hpt, { + prefixCls: t + })] + }); +}, fpt = dpt; +var ppt = { icon: { tag: "svg", attrs: { viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" } }, { tag: "path", attrs: { d: "M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z" } }] }, name: "question-circle", theme: "outlined" }; +const gpt = ppt; +var vpt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: gpt + })); +}, mpt = /* @__PURE__ */ $react.forwardRef(vpt); +const ypt = mpt; +function tTe(e) { + var t = e.children, r = e.prefixCls, n = e.id, i = e.overlayInnerStyle, a = e.className, o = e.style; + return /* @__PURE__ */ dt("div", { + className: Cn("".concat(r, "-content"), a), + style: o, + children: /* @__PURE__ */ dt("div", { + className: "".concat(r, "-inner"), + id: n, + role: "tooltip", + style: i, + children: typeof t == "function" ? t() : t + }) + }); +} +var rTe = /* @__PURE__ */ $react.createContext(null), She = []; +function _pt(e, t) { + var r = $react.useState(function() { + if (!md()) + return null; + var C = document.createElement("div"); + return C; + }), n = Wr(r, 1), i = n[0], a = $react.useRef(!1), o = $react.useContext(rTe), l = $react.useState(She), u = Wr(l, 2), d = u[0], f = u[1], g = o || (a.current ? void 0 : function(C) { + f(function(A) { + var S = [C].concat(Gn(A)); + return S; + }); + }); + function v() { + i.parentElement || document.body.appendChild(i), a.current = !0; + } + function y() { + var C; + (C = i.parentElement) === null || C === void 0 || C.removeChild(i), a.current = !1; + } + return Zl(function() { + return e ? o ? o(v) : v() : y(), y; + }, [e]), Zl(function() { + d.length && (d.forEach(function(C) { + return C(); + }), f(She)); + }, [d]), [i, g]; +} +function Spt(e) { + var t = "rc-scrollbar-measure-".concat(Math.random().toString(36).substring(7)), r = document.createElement("div"); + r.id = t; + var n = r.style; + n.position = "absolute", n.left = "0", n.top = "0", n.width = "100px", n.height = "100px", n.overflow = "scroll"; + var i, a; + if (e) { + var o = getComputedStyle(e); + n.scrollbarColor = o.scrollbarColor, n.scrollbarWidth = o.scrollbarWidth; + var l = getComputedStyle(e, "::-webkit-scrollbar"), u = parseInt(l.width, 10), d = parseInt(l.height, 10); + try { + var f = u ? "width: ".concat(l.width, ";") : "", g = d ? "height: ".concat(l.height, ";") : ""; + Um(` +#`.concat(t, `::-webkit-scrollbar { +`).concat(f, ` +`).concat(g, ` +}`), t); + } catch (C) { + console.error(C), i = u, a = d; + } + } + document.body.appendChild(r); + var v = e && i && !isNaN(i) ? i : r.offsetWidth - r.clientWidth, y = e && a && !isNaN(a) ? a : r.offsetHeight - r.clientHeight; + return document.body.removeChild(r), UR(t), { + width: v, + height: y + }; +} +function bpt(e) { + return typeof document == "undefined" || !e || !(e instanceof Element) ? { + width: 0, + height: 0 + } : Spt(e); +} +function Ept() { + return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth; +} +var Cpt = "rc-util-locker-".concat(Date.now()), bhe = 0; +function Tpt(e) { + var t = !!e, r = $react.useState(function() { + return bhe += 1, "".concat(Cpt, "_").concat(bhe); + }), n = Wr(r, 1), i = n[0]; + Zl(function() { + if (t) { + var a = bpt(document.body).width, o = Ept(); + Um(` +html body { + overflow-y: hidden; + `.concat(o ? "width: calc(100% - ".concat(a, "px);") : "", ` +}`), i); + } else + UR(i); + return function() { + UR(i); + }; + }, [t, i]); +} +var Ehe = !1; +function wpt(e) { + return typeof e == "boolean" && (Ehe = e), Ehe; +} +var Che = function(t) { + return t === !1 ? !1 : !md() || !t ? null : typeof t == "string" ? document.querySelector(t) : typeof t == "function" ? t() : t; +}, nTe = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r = e.open, n = e.autoLock, i = e.getContainer; + e.debug; + var a = e.autoDestroy, o = a === void 0 ? !0 : a, l = e.children, u = $react.useState(r), d = Wr(u, 2), f = d[0], g = d[1], v = f || r; + $react.useEffect(function() { + (o || r) && g(r); + }, [r, o]); + var y = $react.useState(function() { + return Che(i); + }), C = Wr(y, 2), A = C[0], S = C[1]; + $react.useEffect(function() { + var B = Che(i); + S(B != null ? B : null); + }); + var _ = _pt(v && !A), E = Wr(_, 2), I = E[0], w = E[1], x = A != null ? A : I; + Tpt(n && r && md() && (x === I || x === document.body)); + var b = null; + if (l && DI(l) && t) { + var R = l; + b = R.ref; + } + var M = kY(b, t); + if (!v || !md() || A === void 0) + return null; + var O = x === !1 || wpt(), P = l; + return t && (P = /* @__PURE__ */ $react.cloneElement(l, { + ref: M + })), /* @__PURE__ */ dt(rTe.Provider, { + value: w, + children: O ? P : /* @__PURE__ */ $react_dom.createPortal(P, x) + }); +}), KG = /* @__PURE__ */ $react.createContext(null); +function Ipt(e) { + var t = e.children, r = e.onBatchResize, n = $react.useRef(0), i = $react.useRef([]), a = $react.useContext(KG), o = $react.useCallback(function(l, u, d) { + n.current += 1; + var f = n.current; + i.current.push({ + size: l, + element: u, + data: d + }), Promise.resolve().then(function() { + f === n.current && (r == null || r(i.current), i.current = []); + }), a == null || a(l, u, d); + }, [r, a]); + return /* @__PURE__ */ dt(KG.Provider, { + value: o, + children: t + }); +} +var iTe = function() { + if (typeof Map != "undefined") + return Map; + function e(t, r) { + var n = -1; + return t.some(function(i, a) { + return i[0] === r ? (n = a, !0) : !1; + }), n; + } + return ( + /** @class */ + function() { + function t() { + this.__entries__ = []; + } + return Object.defineProperty(t.prototype, "size", { + /** + * @returns {boolean} + */ + get: function() { + return this.__entries__.length; + }, + enumerable: !0, + configurable: !0 + }), t.prototype.get = function(r) { + var n = e(this.__entries__, r), i = this.__entries__[n]; + return i && i[1]; + }, t.prototype.set = function(r, n) { + var i = e(this.__entries__, r); + ~i ? this.__entries__[i][1] = n : this.__entries__.push([r, n]); + }, t.prototype.delete = function(r) { + var n = this.__entries__, i = e(n, r); + ~i && n.splice(i, 1); + }, t.prototype.has = function(r) { + return !!~e(this.__entries__, r); + }, t.prototype.clear = function() { + this.__entries__.splice(0); + }, t.prototype.forEach = function(r, n) { + n === void 0 && (n = null); + for (var i = 0, a = this.__entries__; i < a.length; i++) { + var o = a[i]; + r.call(n, o[1], o[0]); + } + }, t; + }() + ); +}(), ZG = typeof window != "undefined" && typeof document != "undefined" && window.document === document, y2 = function() { + return typeof global != "undefined" && global.Math === Math ? global : typeof self != "undefined" && self.Math === Math ? self : typeof window != "undefined" && window.Math === Math ? window : Function("return this")(); +}(), xpt = function() { + return typeof requestAnimationFrame == "function" ? requestAnimationFrame.bind(y2) : function(e) { + return setTimeout(function() { + return e(Date.now()); + }, 1e3 / 60); + }; +}(), Apt = 2; +function Rpt(e, t) { + var r = !1, n = !1, i = 0; + function a() { + r && (r = !1, e()), n && l(); + } + function o() { + xpt(a); + } + function l() { + var u = Date.now(); + if (r) { + if (u - i < Apt) + return; + n = !0; + } else + r = !0, n = !1, setTimeout(o, t); + i = u; + } + return l; +} +var Dpt = 20, Opt = ["top", "right", "bottom", "left", "width", "height", "size", "weight"], Mpt = typeof MutationObserver != "undefined", kpt = ( + /** @class */ + function() { + function e() { + this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = Rpt(this.refresh.bind(this), Dpt); + } + return e.prototype.addObserver = function(t) { + ~this.observers_.indexOf(t) || this.observers_.push(t), this.connected_ || this.connect_(); + }, e.prototype.removeObserver = function(t) { + var r = this.observers_, n = r.indexOf(t); + ~n && r.splice(n, 1), !r.length && this.connected_ && this.disconnect_(); + }, e.prototype.refresh = function() { + var t = this.updateObservers_(); + t && this.refresh(); + }, e.prototype.updateObservers_ = function() { + var t = this.observers_.filter(function(r) { + return r.gatherActive(), r.hasActive(); + }); + return t.forEach(function(r) { + return r.broadcastActive(); + }), t.length > 0; + }, e.prototype.connect_ = function() { + !ZG || this.connected_ || (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), Mpt ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, { + attributes: !0, + childList: !0, + characterData: !0, + subtree: !0 + })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0); + }, e.prototype.disconnect_ = function() { + !ZG || !this.connected_ || (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1); + }, e.prototype.onTransitionEnd_ = function(t) { + var r = t.propertyName, n = r === void 0 ? "" : r, i = Opt.some(function(a) { + return !!~n.indexOf(a); + }); + i && this.refresh(); + }, e.getInstance = function() { + return this.instance_ || (this.instance_ = new e()), this.instance_; + }, e.instance_ = null, e; + }() +), aTe = function(e, t) { + for (var r = 0, n = Object.keys(t); r < n.length; r++) { + var i = n[r]; + Object.defineProperty(e, i, { + value: t[i], + enumerable: !1, + writable: !1, + configurable: !0 + }); + } + return e; +}, Zw = function(e) { + var t = e && e.ownerDocument && e.ownerDocument.defaultView; + return t || y2; +}, oTe = xB(0, 0, 0, 0); +function _2(e) { + return parseFloat(e) || 0; +} +function The(e) { + for (var t = [], r = 1; r < arguments.length; r++) + t[r - 1] = arguments[r]; + return t.reduce(function(n, i) { + var a = e["border-" + i + "-width"]; + return n + _2(a); + }, 0); +} +function Ppt(e) { + for (var t = ["top", "right", "bottom", "left"], r = {}, n = 0, i = t; n < i.length; n++) { + var a = i[n], o = e["padding-" + a]; + r[a] = _2(o); + } + return r; +} +function Npt(e) { + var t = e.getBBox(); + return xB(0, 0, t.width, t.height); +} +function Lpt(e) { + var t = e.clientWidth, r = e.clientHeight; + if (!t && !r) + return oTe; + var n = Zw(e).getComputedStyle(e), i = Ppt(n), a = i.left + i.right, o = i.top + i.bottom, l = _2(n.width), u = _2(n.height); + if (n.boxSizing === "border-box" && (Math.round(l + a) !== t && (l -= The(n, "left", "right") + a), Math.round(u + o) !== r && (u -= The(n, "top", "bottom") + o)), !Bpt(e)) { + var d = Math.round(l + a) - t, f = Math.round(u + o) - r; + Math.abs(d) !== 1 && (l -= d), Math.abs(f) !== 1 && (u -= f); + } + return xB(i.left, i.top, l, u); +} +var Fpt = function() { + return typeof SVGGraphicsElement != "undefined" ? function(e) { + return e instanceof Zw(e).SVGGraphicsElement; + } : function(e) { + return e instanceof Zw(e).SVGElement && typeof e.getBBox == "function"; + }; +}(); +function Bpt(e) { + return e === Zw(e).document.documentElement; +} +function Upt(e) { + return ZG ? Fpt(e) ? Npt(e) : Lpt(e) : oTe; +} +function jpt(e) { + var t = e.x, r = e.y, n = e.width, i = e.height, a = typeof DOMRectReadOnly != "undefined" ? DOMRectReadOnly : Object, o = Object.create(a.prototype); + return aTe(o, { + x: t, + y: r, + width: n, + height: i, + top: r, + right: t + n, + bottom: i + r, + left: t + }), o; +} +function xB(e, t, r, n) { + return { x: e, y: t, width: r, height: n }; +} +var $pt = ( + /** @class */ + function() { + function e(t) { + this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = xB(0, 0, 0, 0), this.target = t; + } + return e.prototype.isActive = function() { + var t = Upt(this.target); + return this.contentRect_ = t, t.width !== this.broadcastWidth || t.height !== this.broadcastHeight; + }, e.prototype.broadcastRect = function() { + var t = this.contentRect_; + return this.broadcastWidth = t.width, this.broadcastHeight = t.height, t; + }, e; + }() +), Vpt = ( + /** @class */ + function() { + function e(t, r) { + var n = jpt(r); + aTe(this, { target: t, contentRect: n }); + } + return e; + }() +), zpt = ( + /** @class */ + function() { + function e(t, r, n) { + if (this.activeObservations_ = [], this.observations_ = new iTe(), typeof t != "function") + throw new TypeError("The callback provided as parameter 1 is not a function."); + this.callback_ = t, this.controller_ = r, this.callbackCtx_ = n; + } + return e.prototype.observe = function(t) { + if (!arguments.length) + throw new TypeError("1 argument required, but only 0 present."); + if (!(typeof Element == "undefined" || !(Element instanceof Object))) { + if (!(t instanceof Zw(t).Element)) + throw new TypeError('parameter 1 is not of type "Element".'); + var r = this.observations_; + r.has(t) || (r.set(t, new $pt(t)), this.controller_.addObserver(this), this.controller_.refresh()); + } + }, e.prototype.unobserve = function(t) { + if (!arguments.length) + throw new TypeError("1 argument required, but only 0 present."); + if (!(typeof Element == "undefined" || !(Element instanceof Object))) { + if (!(t instanceof Zw(t).Element)) + throw new TypeError('parameter 1 is not of type "Element".'); + var r = this.observations_; + r.has(t) && (r.delete(t), r.size || this.controller_.removeObserver(this)); + } + }, e.prototype.disconnect = function() { + this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this); + }, e.prototype.gatherActive = function() { + var t = this; + this.clearActive(), this.observations_.forEach(function(r) { + r.isActive() && t.activeObservations_.push(r); + }); + }, e.prototype.broadcastActive = function() { + if (this.hasActive()) { + var t = this.callbackCtx_, r = this.activeObservations_.map(function(n) { + return new Vpt(n.target, n.broadcastRect()); + }); + this.callback_.call(t, r, t), this.clearActive(); + } + }, e.prototype.clearActive = function() { + this.activeObservations_.splice(0); + }, e.prototype.hasActive = function() { + return this.activeObservations_.length > 0; + }, e; + }() +), sTe = typeof WeakMap != "undefined" ? /* @__PURE__ */ new WeakMap() : new iTe(), lTe = ( + /** @class */ + function() { + function e(t) { + if (!(this instanceof e)) + throw new TypeError("Cannot call a class as a function."); + if (!arguments.length) + throw new TypeError("1 argument required, but only 0 present."); + var r = kpt.getInstance(), n = new zpt(t, r, this); + sTe.set(this, n); + } + return e; + }() +); +[ + "observe", + "unobserve", + "disconnect" +].forEach(function(e) { + lTe.prototype[e] = function() { + var t; + return (t = sTe.get(this))[e].apply(t, arguments); + }; +}); +var Hpt = function() { + return typeof y2.ResizeObserver != "undefined" ? y2.ResizeObserver : lTe; +}(), r0 = /* @__PURE__ */ new Map(); +function Wpt(e) { + e.forEach(function(t) { + var r, n = t.target; + (r = r0.get(n)) === null || r === void 0 || r.forEach(function(i) { + return i(n); + }); + }); +} +var cTe = new Hpt(Wpt); +function Gpt(e, t) { + r0.has(e) || (r0.set(e, /* @__PURE__ */ new Set()), cTe.observe(e)), r0.get(e).add(t); +} +function Ypt(e, t) { + r0.has(e) && (r0.get(e).delete(t), r0.get(e).size || (cTe.unobserve(e), r0.delete(e))); +} +var Xpt = /* @__PURE__ */ function(e) { + OI(r, e); + var t = bB(r); + function r() { + return Cd(this, r), t.apply(this, arguments); + } + return Td(r, [{ + key: "render", + value: function() { + return this.props.children; + } + }]), r; +}($react.Component); +function Kpt(e, t) { + var r = e.children, n = e.disabled, i = $react.useRef(null), a = $react.useRef(null), o = $react.useContext(KG), l = typeof r == "function", u = l ? r(i) : r, d = $react.useRef({ + width: -1, + height: -1, + offsetWidth: -1, + offsetHeight: -1 + }), f = !l && /* @__PURE__ */ $react.isValidElement(u) && DI(u), g = f ? u.ref : null, v = kY(g, i), y = function() { + var _; + return zN(i.current) || // Support `nativeElement` format + (i.current && Ja(i.current) === "object" ? zN((_ = i.current) === null || _ === void 0 ? void 0 : _.nativeElement) : null) || zN(a.current); + }; + $react.useImperativeHandle(t, function() { + return y(); + }); + var C = $react.useRef(e); + C.current = e; + var A = $react.useCallback(function(S) { + var _ = C.current, E = _.onResize, I = _.data, w = S.getBoundingClientRect(), x = w.width, b = w.height, R = S.offsetWidth, M = S.offsetHeight, O = Math.floor(x), P = Math.floor(b); + if (d.current.width !== O || d.current.height !== P || d.current.offsetWidth !== R || d.current.offsetHeight !== M) { + var B = { + width: O, + height: P, + offsetWidth: R, + offsetHeight: M + }; + d.current = B; + var H = R === Math.round(x) ? x : R, Y = M === Math.round(b) ? b : M, X = fr(fr({}, B), {}, { + offsetWidth: H, + offsetHeight: Y + }); + o == null || o(X, S, I), E && Promise.resolve().then(function() { + E(X, S); + }); + } + }, []); + return $react.useEffect(function() { + var S = y(); + return S && !n && Gpt(S, A), function() { + return Ypt(S, A); + }; + }, [i.current, n]), /* @__PURE__ */ dt(Xpt, { + ref: a, + children: f ? /* @__PURE__ */ $react.cloneElement(u, { + ref: v + }) : u + }); +} +var Zpt = /* @__PURE__ */ $react.forwardRef(Kpt), qpt = "rc-observer-key"; +function Jpt(e, t) { + var r = e.children, n = typeof r == "function" ? [r] : $R(r); + return n.map(function(i, a) { + var o = (i == null ? void 0 : i.key) || "".concat(qpt, "-").concat(a); + return /* @__PURE__ */ $react.createElement(Zpt, rn(br({}, e), { + key: o, + ref: a === 0 ? t : void 0 + }), i); + }); +} +var AB = /* @__PURE__ */ $react.forwardRef(Jpt); +AB.Collection = Ipt; +function Qpt() { + var e = fr({}, $react); + return e.useId; +} +var whe = 0, Ihe = Qpt(); +const egt = Ihe ? ( + // Use React `useId` + function(t) { + var r = Ihe(); + return t || r; + } +) : ( + // Use compatible of `useId` + function(t) { + var r = $react.useState("ssr-id"), n = Wr(r, 2), i = n[0], a = n[1]; + return $react.useEffect(function() { + var o = whe; + whe += 1, a("rc_unique_".concat(o)); + }, []), t || i; + } +), tgt = function() { + if (typeof navigator == "undefined" || typeof window == "undefined") + return !1; + var e = navigator.userAgent || navigator.vendor || window.opera; + return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(e == null ? void 0 : e.substr(0, 4)); +}; +function rgt(e) { + var t = e.prefixCls, r = e.align, n = e.arrow, i = e.arrowPos, a = n || {}, o = a.className, l = a.content, u = i.x, d = u === void 0 ? 0 : u, f = i.y, g = f === void 0 ? 0 : f, v = $react.useRef(); + if (!r || !r.points) + return null; + var y = { + position: "absolute" + }; + if (r.autoArrow !== !1) { + var C = r.points[0], A = r.points[1], S = C[0], _ = C[1], E = A[0], I = A[1]; + S === E || !["t", "b"].includes(S) ? y.top = g : S === "t" ? y.top = 0 : y.bottom = 0, _ === I || !["l", "r"].includes(_) ? y.left = d : _ === "l" ? y.left = 0 : y.right = 0; + } + return /* @__PURE__ */ dt("div", { + ref: v, + className: Cn("".concat(t, "-arrow"), o), + style: y, + children: l + }); +} +function ngt(e) { + var t = e.prefixCls, r = e.open, n = e.zIndex, i = e.mask, a = e.motion; + return i ? /* @__PURE__ */ dt(kI, rn(br({}, a), { + motionAppear: !0, + visible: r, + removeOnLeave: !0, + children: function(o) { + var l = o.className; + return /* @__PURE__ */ dt("div", { + style: { + zIndex: n + }, + className: Cn("".concat(t, "-mask"), l) + }); + } + })) : null; +} +var igt = /* @__PURE__ */ $react.memo(function(e) { + var t = e.children; + return t; +}, function(e, t) { + return t.cache; +}), agt = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r = e.popup, n = e.className, i = e.prefixCls, a = e.style, o = e.target, l = e.onVisibleChanged, u = e.open, d = e.keepDom, f = e.fresh, g = e.onClick, v = e.mask, y = e.arrow, C = e.arrowPos, A = e.align, S = e.motion, _ = e.maskMotion, E = e.forceRender, I = e.getPopupContainer, w = e.autoDestroy, x = e.portal, b = e.zIndex, R = e.onMouseEnter, M = e.onMouseLeave, O = e.onPointerEnter, P = e.ready, B = e.offsetX, H = e.offsetY, Y = e.offsetR, X = e.offsetB, ee = e.onAlign, ae = e.onPrepare, J = e.stretch, ne = e.targetWidth, fe = e.targetHeight, de = typeof r == "function" ? r() : r, Te = u || d, be = (I == null ? void 0 : I.length) > 0, Ve = $react.useState(!I || !be), pe = Wr(Ve, 2), Be = pe[0], Ue = pe[1]; + if (Zl(function() { + !Be && be && o && Ue(!0); + }, [Be, be, o]), !Be) + return null; + var Qe = "auto", Re = { + left: "-1000vw", + top: "-1000vh", + right: Qe, + bottom: Qe + }; + if (P || !u) { + var Ne, Me = A.points, we = A.dynamicInset || ((Ne = A._experimental) === null || Ne === void 0 ? void 0 : Ne.dynamicInset), He = we && Me[0][1] === "r", Ie = we && Me[0][0] === "b"; + He ? (Re.right = Y, Re.left = Qe) : (Re.left = B, Re.right = Qe), Ie ? (Re.bottom = X, Re.top = Qe) : (Re.top = H, Re.bottom = Qe); + } + var Ae = {}; + return J && (J.includes("height") && fe ? Ae.height = fe : J.includes("minHeight") && fe && (Ae.minHeight = fe), J.includes("width") && ne ? Ae.width = ne : J.includes("minWidth") && ne && (Ae.minWidth = ne)), u || (Ae.pointerEvents = "none"), /* @__PURE__ */ gn(x, { + open: E || Te, + getContainer: I && function() { + return I(o); + }, + autoDestroy: w, + children: [/* @__PURE__ */ dt(ngt, { + prefixCls: i, + open: u, + zIndex: b, + mask: v, + motion: _ + }), /* @__PURE__ */ dt(AB, { + onResize: ee, + disabled: !u, + children: function(Fe) { + return /* @__PURE__ */ dt(kI, rn(br({ + motionAppear: !0, + motionEnter: !0, + motionLeave: !0, + removeOnLeave: !1, + forceRender: E, + leavedClassName: "".concat(i, "-hidden") + }, S), { + onAppearPrepare: ae, + onEnterPrepare: ae, + visible: u, + onVisibleChanged: function(lt) { + var it; + S == null || (it = S.onVisibleChanged) === null || it === void 0 || it.call(S, lt), l(lt); + }, + children: function($e, lt) { + var it = $e.className, nt = $e.style, ut = Cn(i, it, n); + return /* @__PURE__ */ gn("div", { + ref: M0(Fe, t, lt), + className: ut, + style: fr(fr(fr(fr({ + "--arrow-x": "".concat(C.x || 0, "px"), + "--arrow-y": "".concat(C.y || 0, "px") + }, Re), Ae), nt), {}, { + boxSizing: "border-box", + zIndex: b + }, a), + onMouseEnter: R, + onMouseLeave: M, + onPointerEnter: O, + onClick: g, + children: [y && /* @__PURE__ */ dt(rgt, { + prefixCls: i, + arrow: y, + arrowPos: C, + align: A + }), /* @__PURE__ */ dt(igt, { + cache: !u && !f, + children: de + })] + }); + } + })); + } + })] + }); +}), ogt = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r = e.children, n = e.getTriggerDOMNode, i = DI(r), a = $react.useCallback(function(l) { + MY(t, n ? n(l) : l); + }, [n]), o = kY(a, r.ref); + return i ? /* @__PURE__ */ $react.cloneElement(r, { + ref: o + }) : r; +}), xhe = /* @__PURE__ */ $react.createContext(null); +function Ahe(e) { + return e ? Array.isArray(e) ? e : [e] : []; +} +function sgt(e, t, r, n) { + return $react.useMemo(function() { + var i = Ahe(r != null ? r : t), a = Ahe(n != null ? n : t), o = new Set(i), l = new Set(a); + return e && (o.has("hover") && (o.delete("hover"), o.add("click")), l.has("hover") && (l.delete("hover"), l.add("click"))), [o, l]; + }, [e, t, r, n]); +} +function lgt() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [], r = arguments.length > 2 ? arguments[2] : void 0; + return r ? e[0] === t[0] : e[0] === t[0] && e[1] === t[1]; +} +function cgt(e, t, r, n) { + for (var i = r.points, a = Object.keys(e), o = 0; o < a.length; o += 1) { + var l, u = a[o]; + if (lgt((l = e[u]) === null || l === void 0 ? void 0 : l.points, i, n)) + return "".concat(t, "-placement-").concat(u); + } + return ""; +} +function Rhe(e, t, r, n) { + return t || (r ? { + motionName: "".concat(e, "-").concat(r) + } : n ? { + motionName: n + } : null); +} +function YD(e) { + return e.ownerDocument.defaultView; +} +function qG(e) { + for (var t = [], r = e == null ? void 0 : e.parentElement, n = ["hidden", "scroll", "clip", "auto"]; r; ) { + var i = YD(r).getComputedStyle(r), a = i.overflowX, o = i.overflowY, l = i.overflow; + [a, o, l].some(function(u) { + return n.includes(u); + }) && t.push(r), r = r.parentElement; + } + return t; +} +function GR(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + return Number.isNaN(e) ? t : e; +} +function e1(e) { + return GR(parseFloat(e), 0); +} +function Dhe(e, t) { + var r = fr({}, e); + return (t || []).forEach(function(n) { + if (!(n instanceof HTMLBodyElement || n instanceof HTMLHtmlElement)) { + var i = YD(n).getComputedStyle(n), a = i.overflow, o = i.overflowClipMargin, l = i.borderTopWidth, u = i.borderBottomWidth, d = i.borderLeftWidth, f = i.borderRightWidth, g = n.getBoundingClientRect(), v = n.offsetHeight, y = n.clientHeight, C = n.offsetWidth, A = n.clientWidth, S = e1(l), _ = e1(u), E = e1(d), I = e1(f), w = GR(Math.round(g.width / C * 1e3) / 1e3), x = GR(Math.round(g.height / v * 1e3) / 1e3), b = (C - A - E - I) * w, R = (v - y - S - _) * x, M = S * x, O = _ * x, P = E * w, B = I * w, H = 0, Y = 0; + if (a === "clip") { + var X = e1(o); + H = X * w, Y = X * x; + } + var ee = g.x + P - H, ae = g.y + M - Y, J = ee + g.width + 2 * H - P - B - b, ne = ae + g.height + 2 * Y - M - O - R; + r.left = Math.max(r.left, ee), r.top = Math.max(r.top, ae), r.right = Math.min(r.right, J), r.bottom = Math.min(r.bottom, ne); + } + }), r; +} +function Ohe(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, r = "".concat(t), n = r.match(/^(.*)\%$/); + return n ? e * (parseFloat(n[1]) / 100) : parseFloat(r); +} +function Mhe(e, t) { + var r = t || [], n = Wr(r, 2), i = n[0], a = n[1]; + return [Ohe(e.width, i), Ohe(e.height, a)]; +} +function khe() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; + return [e[0], e[1]]; +} +function HT(e, t) { + var r = t[0], n = t[1], i, a; + return r === "t" ? a = e.y : r === "b" ? a = e.y + e.height : a = e.y + e.height / 2, n === "l" ? i = e.x : n === "r" ? i = e.x + e.width : i = e.x + e.width / 2, { + x: i, + y: a + }; +} +function B_(e, t) { + var r = { + t: "b", + b: "t", + l: "r", + r: "l" + }; + return e.map(function(n, i) { + return i === t ? r[n] || "c" : n; + }).join(""); +} +function ugt(e, t, r, n, i, a, o) { + var l = $react.useState({ + ready: !1, + offsetX: 0, + offsetY: 0, + offsetR: 0, + offsetB: 0, + arrowX: 0, + arrowY: 0, + scaleX: 1, + scaleY: 1, + align: i[n] || {} + }), u = Wr(l, 2), d = u[0], f = u[1], g = $react.useRef(0), v = $react.useMemo(function() { + return t ? qG(t) : []; + }, [t]), y = $react.useRef({}), C = function() { + y.current = {}; + }; + e || C(); + var A = Vg(function() { + if (t && r && e) { + let oi = function(Xa, xa) { + var oa = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ut, ma = de.x + Xa, fa = de.y + xa, os = ma + Ne, Ul = fa + Re, Os = Math.max(ma, oa.left), ja = Math.max(fa, oa.top), sa = Math.min(os, oa.right), pi = Math.min(Ul, oa.bottom); + return Math.max(0, (sa - Os) * (pi - ja)); + }, Ds = function() { + Or = de.y + jt, Dr = Or + Re, po = de.x + Jt, as = po + Ne; + }; + var E, I, w = t, x = w.ownerDocument, b = YD(w), R = b.getComputedStyle(w), M = R.width, O = R.height, P = R.position, B = w.style.left, H = w.style.top, Y = w.style.right, X = w.style.bottom, ee = w.style.overflow, ae = fr(fr({}, i[n]), a), J = x.createElement("div"); + (E = w.parentElement) === null || E === void 0 || E.appendChild(J), J.style.left = "".concat(w.offsetLeft, "px"), J.style.top = "".concat(w.offsetTop, "px"), J.style.position = P, J.style.height = "".concat(w.offsetHeight, "px"), J.style.width = "".concat(w.offsetWidth, "px"), w.style.left = "0", w.style.top = "0", w.style.right = "auto", w.style.bottom = "auto", w.style.overflow = "hidden"; + var ne; + if (Array.isArray(r)) + ne = { + x: r[0], + y: r[1], + width: 0, + height: 0 + }; + else { + var fe = r.getBoundingClientRect(); + ne = { + x: fe.x, + y: fe.y, + width: fe.width, + height: fe.height + }; + } + var de = w.getBoundingClientRect(), Te = x.documentElement, be = Te.clientWidth, Ve = Te.clientHeight, pe = Te.scrollWidth, Be = Te.scrollHeight, Ue = Te.scrollTop, Qe = Te.scrollLeft, Re = de.height, Ne = de.width, Me = ne.height, we = ne.width, He = { + left: 0, + top: 0, + right: be, + bottom: Ve + }, Ie = { + left: -Qe, + top: -Ue, + right: pe - Qe, + bottom: Be - Ue + }, Ae = ae.htmlRegion, Fe = "visible", $e = "visibleFirst"; + Ae !== "scroll" && Ae !== $e && (Ae = Fe); + var lt = Ae === $e, it = Dhe(Ie, v), nt = Dhe(He, v), ut = Ae === Fe ? nt : it, rt = lt ? nt : ut; + w.style.left = "auto", w.style.top = "auto", w.style.right = "0", w.style.bottom = "0"; + var Ke = w.getBoundingClientRect(); + w.style.left = B, w.style.top = H, w.style.right = Y, w.style.bottom = X, w.style.overflow = ee, (I = w.parentElement) === null || I === void 0 || I.removeChild(J); + var ze = GR(Math.round(Ne / parseFloat(M) * 1e3) / 1e3), qe = GR(Math.round(Re / parseFloat(O) * 1e3) / 1e3); + if (ze === 0 || qe === 0 || f2(r) && !NY(r)) + return; + var ct = ae.offset, ft = ae.targetOffset, _t = Mhe(de, ct), Nt = Wr(_t, 2), Yt = Nt[0], tr = Nt[1], Ct = Mhe(ne, ft), hr = Wr(Ct, 2), Er = hr[0], Fr = hr[1]; + ne.x -= Er, ne.y -= Fr; + var Dn = ae.points || [], hn = Wr(Dn, 2), Jn = hn[0], nn = hn[1], dn = khe(nn), an = khe(Jn), zn = HT(ne, dn), Lt = HT(de, an), Ot = fr({}, ae), Jt = zn.x - Lt.x + Yt, jt = zn.y - Lt.y + tr, nr = oi(Jt, jt), Ht = oi(Jt, jt, nt), wn = HT(ne, ["t", "l"]), On = HT(de, ["t", "l"]), or = HT(ne, ["b", "r"]), Pt = HT(de, ["b", "r"]), Qr = ae.overflow || {}, Bn = Qr.adjustX, Un = Qr.adjustY, Yn = Qr.shiftX, fi = Qr.shiftY, xn = function(xa) { + return typeof xa == "boolean" ? xa : xa >= 0; + }, Or, Dr, po, as; + Ds(); + var zo = xn(Un), Bs = an[0] === dn[0]; + if (zo && an[0] === "t" && (Dr > rt.bottom || y.current.bt)) { + var Cr = jt; + Bs ? Cr -= Re - Me : Cr = wn.y - Pt.y - tr; + var gt = oi(Jt, Cr), Xt = oi(Jt, Cr, nt); + // Of course use larger one + gt > nr || gt === nr && (!lt || // Choose recommend one + Xt >= Ht) ? (y.current.bt = !0, jt = Cr, tr = -tr, Ot.points = [B_(an, 0), B_(dn, 0)]) : y.current.bt = !1; + } + if (zo && an[0] === "b" && (Or < rt.top || y.current.tb)) { + var Wt = jt; + Bs ? Wt += Re - Me : Wt = or.y - On.y - tr; + var zr = oi(Jt, Wt), _r = oi(Jt, Wt, nt); + // Of course use larger one + zr > nr || zr === nr && (!lt || // Choose recommend one + _r >= Ht) ? (y.current.tb = !0, jt = Wt, tr = -tr, Ot.points = [B_(an, 0), B_(dn, 0)]) : y.current.tb = !1; + } + var vn = xn(Bn), Xe = an[1] === dn[1]; + if (vn && an[1] === "l" && (as > rt.right || y.current.rl)) { + var Tt = Jt; + Xe ? Tt -= Ne - we : Tt = wn.x - Pt.x - Yt; + var Bt = oi(Tt, jt), Gt = oi(Tt, jt, nt); + // Of course use larger one + Bt > nr || Bt === nr && (!lt || // Choose recommend one + Gt >= Ht) ? (y.current.rl = !0, Jt = Tt, Yt = -Yt, Ot.points = [B_(an, 1), B_(dn, 1)]) : y.current.rl = !1; + } + if (vn && an[1] === "r" && (po < rt.left || y.current.lr)) { + var ur = Jt; + Xe ? ur += Ne - we : ur = or.x - On.x - Yt; + var Ur = oi(ur, jt), Mr = oi(ur, jt, nt); + // Of course use larger one + Ur > nr || Ur === nr && (!lt || // Choose recommend one + Mr >= Ht) ? (y.current.lr = !0, Jt = ur, Yt = -Yt, Ot.points = [B_(an, 1), B_(dn, 1)]) : y.current.lr = !1; + } + Ds(); + var ai = Yn === !0 ? 0 : Yn; + typeof ai == "number" && (po < nt.left && (Jt -= po - nt.left - Yt, ne.x + we < nt.left + ai && (Jt += ne.x - nt.left + we - ai)), as > nt.right && (Jt -= as - nt.right - Yt, ne.x > nt.right - ai && (Jt += ne.x - nt.right + ai))); + var en = fi === !0 ? 0 : fi; + typeof en == "number" && (Or < nt.top && (jt -= Or - nt.top - tr, ne.y + Me < nt.top + en && (jt += ne.y - nt.top + Me - en)), Dr > nt.bottom && (jt -= Dr - nt.bottom - tr, ne.y > nt.bottom - en && (jt += ne.y - nt.bottom + en))); + var Br = de.x + Jt, Xn = Br + Ne, ir = de.y + jt, Fi = ir + Re, wi = ne.x, gs = wi + we, Bi = ne.y, nc = Bi + Me, aa = Math.max(Br, wi), Lo = Math.min(Xn, gs), Ua = (aa + Lo) / 2, As = Ua - Br, Ho = Math.max(ir, Bi), Rs = Math.min(Fi, nc), Vu = (Ho + Rs) / 2, ic = Vu - ir; + o == null || o(t, Ot); + var vs = Ke.right - de.x - (Jt + de.width), Ia = Ke.bottom - de.y - (jt + de.height); + f({ + ready: !0, + offsetX: Jt / ze, + offsetY: jt / qe, + offsetR: vs / ze, + offsetB: Ia / qe, + arrowX: As / ze, + arrowY: ic / qe, + scaleX: ze, + scaleY: qe, + align: Ot + }); + } + }), S = function() { + g.current += 1; + var I = g.current; + Promise.resolve().then(function() { + g.current === I && A(); + }); + }, _ = function() { + f(function(I) { + return fr(fr({}, I), {}, { + ready: !1 + }); + }); + }; + return Zl(_, [n]), Zl(function() { + e || _(); + }, [e]), [d.ready, d.offsetX, d.offsetY, d.offsetR, d.offsetB, d.arrowX, d.arrowY, d.scaleX, d.scaleY, d.align, S]; +} +function hgt(e, t, r, n, i) { + Zl(function() { + if (e && t && r) { + let g = function() { + n(), i(); + }; + var a = t, o = r, l = qG(a), u = qG(o), d = YD(o), f = new Set([d].concat(Gn(l), Gn(u))); + return f.forEach(function(v) { + v.addEventListener("scroll", g, { + passive: !0 + }); + }), d.addEventListener("resize", g, { + passive: !0 + }), n(), function() { + f.forEach(function(v) { + v.removeEventListener("scroll", g), d.removeEventListener("resize", g); + }); + }; + } + }, [e, t, r]); +} +function dgt(e, t, r, n, i, a, o, l) { + var u = $react.useRef(e), d = $react.useRef(!1); + u.current !== e && (d.current = !0, u.current = e), $react.useEffect(function() { + var f = yd(function() { + d.current = !1; + }); + return function() { + yd.cancel(f); + }; + }, [e]), $react.useEffect(function() { + if (t && n && (!i || a)) { + var f = function() { + var b = !1, R = function(P) { + var B = P.target; + b = o(B); + }, M = function(P) { + var B = P.target; + !d.current && u.current && !b && !o(B) && l(!1); + }; + return [R, M]; + }, g = f(), v = Wr(g, 2), y = v[0], C = v[1], A = f(), S = Wr(A, 2), _ = S[0], E = S[1], I = YD(n); + I.addEventListener("mousedown", y, !0), I.addEventListener("click", C, !0), I.addEventListener("contextmenu", C, !0); + var w = g2(r); + return w && (w.addEventListener("mousedown", _, !0), w.addEventListener("click", E, !0), w.addEventListener("contextmenu", E, !0)), function() { + I.removeEventListener("mousedown", y, !0), I.removeEventListener("click", C, !0), I.removeEventListener("contextmenu", C, !0), w && (w.removeEventListener("mousedown", _, !0), w.removeEventListener("click", E, !0), w.removeEventListener("contextmenu", E, !0)); + }; + } + }, [t, r, n, i, a]); +} +var fgt = ["prefixCls", "children", "action", "showAction", "hideAction", "popupVisible", "defaultPopupVisible", "onPopupVisibleChange", "afterPopupVisibleChange", "mouseEnterDelay", "mouseLeaveDelay", "focusDelay", "blurDelay", "mask", "maskClosable", "getPopupContainer", "forceRender", "autoDestroy", "destroyPopupOnHide", "popup", "popupClassName", "popupStyle", "popupPlacement", "builtinPlacements", "popupAlign", "zIndex", "stretch", "getPopupClassNameFromAlign", "fresh", "alignPoint", "onPopupClick", "onPopupAlign", "arrow", "popupMotion", "maskMotion", "popupTransitionName", "popupAnimation", "maskTransitionName", "maskAnimation", "className", "getTriggerDOMNode"]; +function pgt() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : nTe, t = /* @__PURE__ */ $react.forwardRef(function(r, n) { + var i = r.prefixCls, a = i === void 0 ? "rc-trigger-popup" : i, o = r.children, l = r.action, u = l === void 0 ? "hover" : l, d = r.showAction, f = r.hideAction, g = r.popupVisible, v = r.defaultPopupVisible, y = r.onPopupVisibleChange, C = r.afterPopupVisibleChange, A = r.mouseEnterDelay, S = r.mouseLeaveDelay, _ = S === void 0 ? 0.1 : S, E = r.focusDelay, I = r.blurDelay, w = r.mask, x = r.maskClosable, b = x === void 0 ? !0 : x, R = r.getPopupContainer, M = r.forceRender, O = r.autoDestroy, P = r.destroyPopupOnHide, B = r.popup, H = r.popupClassName, Y = r.popupStyle, X = r.popupPlacement, ee = r.builtinPlacements, ae = ee === void 0 ? {} : ee, J = r.popupAlign, ne = r.zIndex, fe = r.stretch, de = r.getPopupClassNameFromAlign, Te = r.fresh, be = r.alignPoint, Ve = r.onPopupClick, pe = r.onPopupAlign, Be = r.arrow, Ue = r.popupMotion, Qe = r.maskMotion, Re = r.popupTransitionName, Ne = r.popupAnimation, Me = r.maskTransitionName, we = r.maskAnimation, He = r.className, Ie = r.getTriggerDOMNode, Ae = xh(r, fgt), Fe = O || P || !1, $e = $react.useState(!1), lt = Wr($e, 2), it = lt[0], nt = lt[1]; + Zl(function() { + nt(tgt()); + }, []); + var ut = $react.useRef({}), rt = $react.useContext(xhe), Ke = $react.useMemo(function() { + return { + registerSubPopup: function(Mn, pa) { + ut.current[Mn] = pa, rt == null || rt.registerSubPopup(Mn, pa); + } + }; + }, [rt]), ze = egt(), qe = $react.useState(null), ct = Wr(qe, 2), ft = ct[0], _t = ct[1], Nt = Vg(function(Xr) { + f2(Xr) && ft !== Xr && _t(Xr), rt == null || rt.registerSubPopup(ze, Xr); + }), Yt = $react.useState(null), tr = Wr(Yt, 2), Ct = tr[0], hr = tr[1], Er = $react.useRef(null), Fr = Vg(function(Xr) { + f2(Xr) && Ct !== Xr && (hr(Xr), Er.current = Xr); + }), Dn = $react.Children.only(o), hn = (Dn == null ? void 0 : Dn.props) || {}, Jn = {}, nn = Vg(function(Xr) { + var Mn, pa, Qa = Ct; + return (Qa == null ? void 0 : Qa.contains(Xr)) || ((Mn = g2(Qa)) === null || Mn === void 0 ? void 0 : Mn.host) === Xr || Xr === Qa || (ft == null ? void 0 : ft.contains(Xr)) || ((pa = g2(ft)) === null || pa === void 0 ? void 0 : pa.host) === Xr || Xr === ft || Object.values(ut.current).some(function(ya) { + return (ya == null ? void 0 : ya.contains(Xr)) || Xr === ya; + }); + }), dn = Rhe(a, Ue, Ne, Re), an = Rhe(a, Qe, we, Me), zn = $react.useState(v || !1), Lt = Wr(zn, 2), Ot = Lt[0], Jt = Lt[1], jt = g != null ? g : Ot, nr = Vg(function(Xr) { + g === void 0 && Jt(Xr); + }); + Zl(function() { + Jt(g || !1); + }, [g]); + var Ht = $react.useRef(jt); + Ht.current = jt; + var wn = $react.useRef([]); + wn.current = []; + var On = Vg(function(Xr) { + var Mn; + nr(Xr), ((Mn = wn.current[wn.current.length - 1]) !== null && Mn !== void 0 ? Mn : jt) !== Xr && (wn.current.push(Xr), y == null || y(Xr)); + }), or = $react.useRef(), Pt = function() { + clearTimeout(or.current); + }, Qr = function(Mn) { + var pa = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + Pt(), pa === 0 ? On(Mn) : or.current = setTimeout(function() { + On(Mn); + }, pa * 1e3); + }; + $react.useEffect(function() { + return Pt; + }, []); + var Bn = $react.useState(!1), Un = Wr(Bn, 2), Yn = Un[0], fi = Un[1]; + Zl(function(Xr) { + (!Xr || jt) && fi(!0); + }, [jt]); + var xn = $react.useState(null), Or = Wr(xn, 2), Dr = Or[0], po = Or[1], as = $react.useState([0, 0]), zo = Wr(as, 2), Bs = zo[0], Cr = zo[1], gt = function(Mn) { + Cr([Mn.clientX, Mn.clientY]); + }, Xt = ugt(jt, ft, be ? Bs : Ct, X, ae, J, pe), Wt = Wr(Xt, 11), zr = Wt[0], _r = Wt[1], vn = Wt[2], Xe = Wt[3], Tt = Wt[4], Bt = Wt[5], Gt = Wt[6], ur = Wt[7], Ur = Wt[8], Mr = Wt[9], ai = Wt[10], en = sgt(it, u, d, f), Br = Wr(en, 2), Xn = Br[0], ir = Br[1], Fi = Xn.has("click"), wi = ir.has("click") || ir.has("contextMenu"), gs = Vg(function() { + Yn || ai(); + }), Bi = function() { + Ht.current && be && wi && Qr(!1); + }; + hgt(jt, Ct, ft, gs, Bi), Zl(function() { + gs(); + }, [Bs, X]), Zl(function() { + jt && !(ae != null && ae[X]) && gs(); + }, [JSON.stringify(J)]); + var nc = $react.useMemo(function() { + var Xr = cgt(ae, a, Mr, be); + return Cn(Xr, de == null ? void 0 : de(Mr)); + }, [Mr, de, ae, a, be]); + $react.useImperativeHandle(n, function() { + return { + nativeElement: Er.current, + forceAlign: gs + }; + }); + var aa = $react.useState(0), Lo = Wr(aa, 2), Ua = Lo[0], As = Lo[1], Ho = $react.useState(0), Rs = Wr(Ho, 2), Vu = Rs[0], ic = Rs[1], vs = function() { + if (fe && Ct) { + var Mn = Ct.getBoundingClientRect(); + As(Mn.width), ic(Mn.height); + } + }, Ia = function() { + vs(), gs(); + }, oi = function(Mn) { + fi(!1), ai(), C == null || C(Mn); + }, Ds = function() { + return new Promise(function(Mn) { + vs(), po(function() { + return Mn; + }); + }); + }; + Zl(function() { + Dr && (ai(), Dr(), po(null)); + }, [Dr]); + function Xa(Xr, Mn, pa, Qa) { + Jn[Xr] = function(ya) { + var Ki; + Qa == null || Qa(ya), Qr(Mn, pa); + for (var Hn = arguments.length, ka = new Array(Hn > 1 ? Hn - 1 : 0), gi = 1; gi < Hn; gi++) + ka[gi - 1] = arguments[gi]; + (Ki = hn[Xr]) === null || Ki === void 0 || Ki.call.apply(Ki, [hn, ya].concat(ka)); + }; + } + (Fi || wi) && (Jn.onClick = function(Xr) { + var Mn; + Ht.current && wi ? Qr(!1) : !Ht.current && Fi && (gt(Xr), Qr(!0)); + for (var pa = arguments.length, Qa = new Array(pa > 1 ? pa - 1 : 0), ya = 1; ya < pa; ya++) + Qa[ya - 1] = arguments[ya]; + (Mn = hn.onClick) === null || Mn === void 0 || Mn.call.apply(Mn, [hn, Xr].concat(Qa)); + }), dgt(jt, wi, Ct, ft, w, b, nn, Qr); + var xa = Xn.has("hover"), oa = ir.has("hover"), ma, fa; + xa && (Xa("onMouseEnter", !0, A, function(Xr) { + gt(Xr); + }), Xa("onPointerEnter", !0, A, function(Xr) { + gt(Xr); + }), ma = function(Mn) { + (jt || Yn) && ft !== null && ft !== void 0 && ft.contains(Mn.target) && Qr(!0, A); + }, be && (Jn.onMouseMove = function(Xr) { + var Mn; + (Mn = hn.onMouseMove) === null || Mn === void 0 || Mn.call(hn, Xr); + })), oa && (Xa("onMouseLeave", !1, _), Xa("onPointerLeave", !1, _), fa = function() { + Qr(!1, _); + }), Xn.has("focus") && Xa("onFocus", !0, E), ir.has("focus") && Xa("onBlur", !1, I), Xn.has("contextMenu") && (Jn.onContextMenu = function(Xr) { + var Mn; + Ht.current && ir.has("contextMenu") ? Qr(!1) : (gt(Xr), Qr(!0)), Xr.preventDefault(); + for (var pa = arguments.length, Qa = new Array(pa > 1 ? pa - 1 : 0), ya = 1; ya < pa; ya++) + Qa[ya - 1] = arguments[ya]; + (Mn = hn.onContextMenu) === null || Mn === void 0 || Mn.call.apply(Mn, [hn, Xr].concat(Qa)); + }), He && (Jn.className = Cn(hn.className, He)); + var os = fr(fr({}, hn), Jn), Ul = {}, Os = ["onContextMenu", "onClick", "onMouseDown", "onTouchStart", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur"]; + Os.forEach(function(Xr) { + Ae[Xr] && (Ul[Xr] = function() { + for (var Mn, pa = arguments.length, Qa = new Array(pa), ya = 0; ya < pa; ya++) + Qa[ya] = arguments[ya]; + (Mn = os[Xr]) === null || Mn === void 0 || Mn.call.apply(Mn, [os].concat(Qa)), Ae[Xr].apply(Ae, Qa); + }); + }); + var ja = /* @__PURE__ */ $react.cloneElement(Dn, fr(fr({}, os), Ul)), sa = { + x: Bt, + y: Gt + }, pi = Be ? fr({}, Be !== !0 ? Be : {}) : null; + return /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt(AB, { + disabled: !jt, + ref: Fr, + onResize: Ia, + children: /* @__PURE__ */ dt(ogt, { + getTriggerDOMNode: Ie, + children: ja + }) + }), /* @__PURE__ */ dt(xhe.Provider, { + value: Ke, + children: /* @__PURE__ */ dt(agt, { + portal: e, + ref: Nt, + prefixCls: a, + popup: B, + className: Cn(H, nc), + style: Y, + target: Ct, + onMouseEnter: ma, + onMouseLeave: fa, + onPointerEnter: ma, + zIndex: ne, + open: jt, + keepDom: Yn, + fresh: Te, + onClick: Ve, + mask: w, + motion: dn, + maskMotion: an, + onVisibleChanged: oi, + onPrepare: Ds, + forceRender: M, + autoDestroy: Fe, + getPopupContainer: R, + align: Mr, + arrow: pi, + arrowPos: sa, + ready: zr, + offsetX: _r, + offsetY: vn, + offsetR: Xe, + offsetB: Tt, + onAlign: gs, + stretch: fe, + targetWidth: Ua / ur, + targetHeight: Vu / Ur + }) + })] + }); + }); + return t; +} +const ggt = pgt(nTe); +var WT = { + shiftX: 64, + adjustY: 1 +}, GT = { + adjustX: 1, + shiftY: !0 +}, af = [0, 0], vgt = { + left: { + points: ["cr", "cl"], + overflow: GT, + offset: [-4, 0], + targetOffset: af + }, + right: { + points: ["cl", "cr"], + overflow: GT, + offset: [4, 0], + targetOffset: af + }, + top: { + points: ["bc", "tc"], + overflow: WT, + offset: [0, -4], + targetOffset: af + }, + bottom: { + points: ["tc", "bc"], + overflow: WT, + offset: [0, 4], + targetOffset: af + }, + topLeft: { + points: ["bl", "tl"], + overflow: WT, + offset: [0, -4], + targetOffset: af + }, + leftTop: { + points: ["tr", "tl"], + overflow: GT, + offset: [-4, 0], + targetOffset: af + }, + topRight: { + points: ["br", "tr"], + overflow: WT, + offset: [0, -4], + targetOffset: af + }, + rightTop: { + points: ["tl", "tr"], + overflow: GT, + offset: [4, 0], + targetOffset: af + }, + bottomRight: { + points: ["tr", "br"], + overflow: WT, + offset: [0, 4], + targetOffset: af + }, + rightBottom: { + points: ["bl", "br"], + overflow: GT, + offset: [4, 0], + targetOffset: af + }, + bottomLeft: { + points: ["tl", "bl"], + overflow: WT, + offset: [0, 4], + targetOffset: af + }, + leftBottom: { + points: ["br", "bl"], + overflow: GT, + offset: [-4, 0], + targetOffset: af + } +}, mgt = ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "children", "onVisibleChange", "afterVisibleChange", "transitionName", "animation", "motion", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer", "overlayInnerStyle", "arrowContent", "overlay", "id", "showArrow"], ygt = function(t, r) { + var n = t.overlayClassName, i = t.trigger, a = i === void 0 ? ["hover"] : i, o = t.mouseEnterDelay, l = o === void 0 ? 0 : o, u = t.mouseLeaveDelay, d = u === void 0 ? 0.1 : u, f = t.overlayStyle, g = t.prefixCls, v = g === void 0 ? "rc-tooltip" : g, y = t.children, C = t.onVisibleChange, A = t.afterVisibleChange, S = t.transitionName, _ = t.animation, E = t.motion, I = t.placement, w = I === void 0 ? "right" : I, x = t.align, b = x === void 0 ? {} : x, R = t.destroyTooltipOnHide, M = R === void 0 ? !1 : R, O = t.defaultVisible, P = t.getTooltipContainer, B = t.overlayInnerStyle; + t.arrowContent; + var H = t.overlay, Y = t.id, X = t.showArrow, ee = X === void 0 ? !0 : X, ae = xh(t, mgt), J = $react.useRef(null); + $react.useImperativeHandle(r, function() { + return J.current; + }); + var ne = fr({}, ae); + "visible" in t && (ne.popupVisible = t.visible); + var fe = function() { + return /* @__PURE__ */ dt(tTe, { + prefixCls: v, + id: Y, + overlayInnerStyle: B, + children: H + }, "content"); + }; + return /* @__PURE__ */ dt(ggt, rn(br({ + popupClassName: n, + prefixCls: v, + popup: fe, + action: a, + builtinPlacements: vgt, + popupPlacement: w, + ref: J, + popupAlign: b, + getPopupContainer: P, + onPopupVisibleChange: C, + afterPopupVisibleChange: A, + popupTransitionName: S, + popupAnimation: _, + popupMotion: E, + defaultPopupVisible: O, + autoDestroy: M, + mouseLeaveDelay: d, + popupStyle: f, + mouseEnterDelay: l, + arrow: ee + }, ne), { + children: y + })); +}; +const _gt = /* @__PURE__ */ $react.forwardRef(ygt), Sgt = /* @__PURE__ */ $react.createContext(void 0), uTe = Sgt, bb = 100, bgt = 10, Egt = bb * bgt, hTe = { + Modal: bb, + Drawer: bb, + Popover: bb, + Popconfirm: bb, + Tooltip: bb, + Tour: bb +}, Cgt = { + SelectLike: 50, + Dropdown: 50, + DatePicker: 50, + Menu: 50, + ImagePreview: 1 +}; +function Tgt(e) { + return e in hTe; +} +function wgt(e, t) { + const [, r] = Fp(), n = $react.useContext(uTe), i = Tgt(e); + if (t !== void 0) + return [t, t]; + let a = n != null ? n : 0; + return i ? (a += // Use preset token zIndex by default but not stack when has parent container + (n ? 0 : r.zIndexPopupBase) + // Container offset + hTe[e], a = Math.min(a, r.zIndexPopupBase + Egt)) : a += Cgt[e], [n === void 0 ? t : a, a]; +} +function Igt(e) { + const { + sizePopupArrow: t, + borderRadiusXS: r, + borderRadiusOuter: n + } = e, i = t / 2, a = 0, o = i, l = n * 1 / Math.sqrt(2), u = i - n * (1 - 1 / Math.sqrt(2)), d = i - r * (1 / Math.sqrt(2)), f = n * (Math.sqrt(2) - 1) + r * (1 / Math.sqrt(2)), g = 2 * i - d, v = f, y = 2 * i - l, C = u, A = 2 * i - a, S = o, _ = i * Math.sqrt(2) + n * (Math.sqrt(2) - 2), E = n * (Math.sqrt(2) - 1), I = `polygon(${E}px 100%, 50% ${E}px, ${2 * i - E}px 100%, ${E}px 100%)`, w = `path('M ${a} ${o} A ${n} ${n} 0 0 0 ${l} ${u} L ${d} ${f} A ${r} ${r} 0 0 1 ${g} ${v} L ${y} ${C} A ${n} ${n} 0 0 0 ${A} ${S} Z')`; + return { + arrowShadowWidth: _, + arrowPath: w, + arrowPolygon: I + }; +} +const xgt = (e, t, r) => { + const { + sizePopupArrow: n, + arrowPolygon: i, + arrowPath: a, + arrowShadowWidth: o, + borderRadiusXS: l, + calc: u + } = e; + return { + pointerEvents: "none", + width: n, + height: n, + overflow: "hidden", + "&::before": { + position: "absolute", + bottom: 0, + insetInlineStart: 0, + width: n, + height: u(n).div(2).equal(), + background: t, + clipPath: { + _multi_value_: !0, + value: [i, a] + }, + content: '""' + }, + "&::after": { + content: '""', + position: "absolute", + width: o, + height: o, + bottom: 0, + insetInline: 0, + margin: "auto", + borderRadius: { + _skip_check_: !0, + value: `0 0 ${da(l)} 0` + }, + transform: "translateY(50%) rotate(-135deg)", + boxShadow: r, + zIndex: 0, + background: "transparent" + } + }; +}, dTe = 8; +function fTe(e) { + const { + contentRadius: t, + limitVerticalRadius: r + } = e, n = t > 12 ? t + 2 : 12; + return { + arrowOffsetHorizontal: n, + arrowOffsetVertical: r ? dTe : n + }; +} +function GP(e, t) { + return e ? t : {}; +} +function Agt(e, t, r) { + const { + componentCls: n, + boxShadowPopoverArrow: i, + arrowOffsetVertical: a, + arrowOffsetHorizontal: o + } = e, { + arrowDistance: l = 0, + arrowPlacement: u = { + left: !0, + right: !0, + top: !0, + bottom: !0 + } + } = r || {}; + return { + [n]: Object.assign(Object.assign(Object.assign(Object.assign({ + // ============================ Basic ============================ + [`${n}-arrow`]: [Object.assign(Object.assign({ + position: "absolute", + zIndex: 1, + display: "block" + }, xgt(e, t, i)), { + "&:before": { + background: t + } + })] + }, GP(!!u.top, { + [[`&-placement-top > ${n}-arrow`, `&-placement-topLeft > ${n}-arrow`, `&-placement-topRight > ${n}-arrow`].join(",")]: { + bottom: l, + transform: "translateY(100%) rotate(180deg)" + }, + [`&-placement-top > ${n}-arrow`]: { + left: { + _skip_check_: !0, + value: "50%" + }, + transform: "translateX(-50%) translateY(100%) rotate(180deg)" + }, + [`&-placement-topLeft > ${n}-arrow`]: { + left: { + _skip_check_: !0, + value: o + } + }, + [`&-placement-topRight > ${n}-arrow`]: { + right: { + _skip_check_: !0, + value: o + } + } + })), GP(!!u.bottom, { + [[`&-placement-bottom > ${n}-arrow`, `&-placement-bottomLeft > ${n}-arrow`, `&-placement-bottomRight > ${n}-arrow`].join(",")]: { + top: l, + transform: "translateY(-100%)" + }, + [`&-placement-bottom > ${n}-arrow`]: { + left: { + _skip_check_: !0, + value: "50%" + }, + transform: "translateX(-50%) translateY(-100%)" + }, + [`&-placement-bottomLeft > ${n}-arrow`]: { + left: { + _skip_check_: !0, + value: o + } + }, + [`&-placement-bottomRight > ${n}-arrow`]: { + right: { + _skip_check_: !0, + value: o + } + } + })), GP(!!u.left, { + [[`&-placement-left > ${n}-arrow`, `&-placement-leftTop > ${n}-arrow`, `&-placement-leftBottom > ${n}-arrow`].join(",")]: { + right: { + _skip_check_: !0, + value: l + }, + transform: "translateX(100%) rotate(90deg)" + }, + [`&-placement-left > ${n}-arrow`]: { + top: { + _skip_check_: !0, + value: "50%" + }, + transform: "translateY(-50%) translateX(100%) rotate(90deg)" + }, + [`&-placement-leftTop > ${n}-arrow`]: { + top: a + }, + [`&-placement-leftBottom > ${n}-arrow`]: { + bottom: a + } + })), GP(!!u.right, { + [[`&-placement-right > ${n}-arrow`, `&-placement-rightTop > ${n}-arrow`, `&-placement-rightBottom > ${n}-arrow`].join(",")]: { + left: { + _skip_check_: !0, + value: l + }, + transform: "translateX(-100%) rotate(-90deg)" + }, + [`&-placement-right > ${n}-arrow`]: { + top: { + _skip_check_: !0, + value: "50%" + }, + transform: "translateY(-50%) translateX(-100%) rotate(-90deg)" + }, + [`&-placement-rightTop > ${n}-arrow`]: { + top: a + }, + [`&-placement-rightBottom > ${n}-arrow`]: { + bottom: a + } + })) + }; +} +function Rgt(e, t, r, n) { + if (n === !1) + return { + adjustX: !1, + adjustY: !1 + }; + const i = n && typeof n == "object" ? n : {}, a = {}; + switch (e) { + case "top": + case "bottom": + a.shiftX = t.arrowOffsetHorizontal * 2 + r, a.shiftY = !0, a.adjustY = !0; + break; + case "left": + case "right": + a.shiftY = t.arrowOffsetVertical * 2 + r, a.shiftX = !0, a.adjustX = !0; + break; + } + const o = Object.assign(Object.assign({}, a), i); + return o.shiftX || (o.adjustX = !0), o.shiftY || (o.adjustY = !0), o; +} +const Phe = { + left: { + points: ["cr", "cl"] + }, + right: { + points: ["cl", "cr"] + }, + top: { + points: ["bc", "tc"] + }, + bottom: { + points: ["tc", "bc"] + }, + topLeft: { + points: ["bl", "tl"] + }, + leftTop: { + points: ["tr", "tl"] + }, + topRight: { + points: ["br", "tr"] + }, + rightTop: { + points: ["tl", "tr"] + }, + bottomRight: { + points: ["tr", "br"] + }, + rightBottom: { + points: ["bl", "br"] + }, + bottomLeft: { + points: ["tl", "bl"] + }, + leftBottom: { + points: ["br", "bl"] + } +}, Dgt = { + topLeft: { + points: ["bl", "tc"] + }, + leftTop: { + points: ["tr", "cl"] + }, + topRight: { + points: ["br", "tc"] + }, + rightTop: { + points: ["tl", "cr"] + }, + bottomRight: { + points: ["tr", "bc"] + }, + rightBottom: { + points: ["bl", "cr"] + }, + bottomLeft: { + points: ["tl", "bc"] + }, + leftBottom: { + points: ["br", "cl"] + } +}, Ogt = /* @__PURE__ */ new Set(["topLeft", "topRight", "bottomLeft", "bottomRight", "leftTop", "leftBottom", "rightTop", "rightBottom"]); +function Mgt(e) { + const { + arrowWidth: t, + autoAdjustOverflow: r, + arrowPointAtCenter: n, + offset: i, + borderRadius: a, + visibleFirst: o + } = e, l = t / 2, u = {}; + return Object.keys(Phe).forEach((d) => { + const f = n && Dgt[d] || Phe[d], g = Object.assign(Object.assign({}, f), { + offset: [0, 0], + dynamicInset: !0 + }); + switch (u[d] = g, Ogt.has(d) && (g.autoArrow = !1), d) { + case "top": + case "topLeft": + case "topRight": + g.offset[1] = -l - i; + break; + case "bottom": + case "bottomLeft": + case "bottomRight": + g.offset[1] = l + i; + break; + case "left": + case "leftTop": + case "leftBottom": + g.offset[0] = -l - i; + break; + case "right": + case "rightTop": + case "rightBottom": + g.offset[0] = l + i; + break; + } + const v = fTe({ + contentRadius: a, + limitVerticalRadius: !0 + }); + if (n) + switch (d) { + case "topLeft": + case "bottomLeft": + g.offset[0] = -v.arrowOffsetHorizontal - l; + break; + case "topRight": + case "bottomRight": + g.offset[0] = v.arrowOffsetHorizontal + l; + break; + case "leftTop": + case "rightTop": + g.offset[1] = -v.arrowOffsetHorizontal - l; + break; + case "leftBottom": + case "rightBottom": + g.offset[1] = v.arrowOffsetHorizontal + l; + break; + } + g.overflow = Rgt(d, v, t, r), o && (g.htmlRegion = "visibleFirst"); + }), u; +} +const kgt = (e) => { + const { + componentCls: t, + // ant-tooltip + tooltipMaxWidth: r, + tooltipColor: n, + tooltipBg: i, + tooltipBorderRadius: a, + zIndexPopup: o, + controlHeight: l, + boxShadowSecondary: u, + paddingSM: d, + paddingXS: f + } = e; + return [ + { + [t]: Object.assign(Object.assign(Object.assign(Object.assign({}, $D(e)), { + position: "absolute", + zIndex: o, + display: "block", + width: "max-content", + maxWidth: r, + visibility: "visible", + transformOrigin: "var(--arrow-x, 50%) var(--arrow-y, 50%)", + "&-hidden": { + display: "none" + }, + "--antd-arrow-background-color": i, + // Wrapper for the tooltip content + [`${t}-inner`]: { + minWidth: l, + minHeight: l, + padding: `${da(e.calc(d).div(2).equal())} ${da(f)}`, + color: n, + textAlign: "start", + textDecoration: "none", + wordWrap: "break-word", + backgroundColor: i, + borderRadius: a, + boxShadow: u, + boxSizing: "border-box" + }, + // Limit left and right placement radius + [["&-placement-left", "&-placement-leftTop", "&-placement-leftBottom", "&-placement-right", "&-placement-rightTop", "&-placement-rightBottom"].join(",")]: { + [`${t}-inner`]: { + borderRadius: e.min(a, dTe) + } + }, + [`${t}-content`]: { + position: "relative" + } + }), tut(e, (g, v) => { + let { + darkColor: y + } = v; + return { + [`&${t}-${g}`]: { + [`${t}-inner`]: { + backgroundColor: y + }, + [`${t}-arrow`]: { + "--antd-arrow-background-color": y + } + } + }; + })), { + // RTL + "&-rtl": { + direction: "rtl" + } + }) + }, + // Arrow Style + Agt(e, "var(--antd-arrow-background-color)"), + // Pure Render + { + [`${t}-pure`]: { + position: "relative", + maxWidth: "none", + margin: e.sizePopupArrow + } + } + ]; +}, Pgt = (e) => Object.assign(Object.assign({ + zIndexPopup: e.zIndexPopupBase + 70 +}, fTe({ + contentRadius: e.borderRadius, + limitVerticalRadius: !0 +})), Igt(wd(e, { + borderRadiusOuter: Math.min(e.borderRadiusOuter, 4) +}))), pTe = function(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + return MI("Tooltip", (n) => { + const { + borderRadius: i, + colorTextLightSolid: a, + colorBgSpotlight: o + } = n, l = wd(n, { + // default variables + tooltipMaxWidth: 250, + tooltipColor: a, + tooltipBorderRadius: i, + tooltipBg: o + }); + return [kgt(l), mft(n, "zoom-big-fast")]; + }, Pgt, { + resetStyle: !1, + // Popover use Tooltip as internal component. We do not need to handle this. + injectStyle: t + })(e); +}, Ngt = d2.map((e) => `${e}-inverse`); +function Lgt(e) { + return (arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0) ? [].concat(Gn(Ngt), Gn(d2)).includes(e) : d2.includes(e); +} +function gTe(e, t) { + const r = Lgt(t), n = Cn({ + [`${e}-${t}`]: t && r + }), i = {}, a = {}; + return t && !r && (i.background = t, a["--antd-arrow-background-color"] = t), { + className: n, + overlayStyle: i, + arrowStyle: a + }; +} +const Fgt = (e) => { + const { + prefixCls: t, + className: r, + placement: n = "top", + title: i, + color: a, + overlayInnerStyle: o + } = e, { + getPrefixCls: l + } = $react.useContext(Sl), u = l("tooltip", t), [d, f, g] = pTe(u), v = gTe(u, a), y = v.arrowStyle, C = Object.assign(Object.assign({}, o), v.overlayStyle), A = Cn(f, g, u, `${u}-pure`, `${u}-placement-${n}`, r, v.className); + return d( + /* @__PURE__ */ gn("div", { + className: A, + style: y, + children: [/* @__PURE__ */ dt("div", { + className: `${u}-arrow` + }), /* @__PURE__ */ dt(tTe, rn(br({}, Object.assign({}, e, { + className: f, + prefixCls: u, + overlayInnerStyle: C + })), { + children: i + }))] + }) + ); +}, Bgt = Fgt; +var Ugt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const vTe = /* @__PURE__ */ $react.forwardRef((e, t) => { + var r, n; + const { + prefixCls: i, + openClassName: a, + getTooltipContainer: o, + overlayClassName: l, + color: u, + overlayInnerStyle: d, + children: f, + afterOpenChange: g, + afterVisibleChange: v, + destroyTooltipOnHide: y, + arrow: C = !0, + title: A, + overlay: S, + builtinPlacements: _, + arrowPointAtCenter: E = !1, + autoAdjustOverflow: I = !0 + } = e, w = !!C, [, x] = Fp(), { + getPopupContainer: b, + getPrefixCls: R, + direction: M + } = $react.useContext(Sl), O = PY(), P = $react.useRef(null), B = () => { + var ze; + (ze = P.current) === null || ze === void 0 || ze.forceAlign(); + }; + $react.useImperativeHandle(t, () => ({ + forceAlign: B, + forcePopupAlign: () => { + O.deprecated(!1, "forcePopupAlign", "forceAlign"), B(); + } + })); + const [H, Y] = _B(!1, { + value: (r = e.open) !== null && r !== void 0 ? r : e.visible, + defaultValue: (n = e.defaultOpen) !== null && n !== void 0 ? n : e.defaultVisible + }), X = !A && !S && A !== 0, ee = (ze) => { + var qe, ct; + Y(X ? !1 : ze), X || ((qe = e.onOpenChange) === null || qe === void 0 || qe.call(e, ze), (ct = e.onVisibleChange) === null || ct === void 0 || ct.call(e, ze)); + }, ae = $react.useMemo(() => { + var ze, qe; + let ct = E; + return typeof C == "object" && (ct = (qe = (ze = C.pointAtCenter) !== null && ze !== void 0 ? ze : C.arrowPointAtCenter) !== null && qe !== void 0 ? qe : E), _ || Mgt({ + arrowPointAtCenter: ct, + autoAdjustOverflow: I, + arrowWidth: w ? x.sizePopupArrow : 0, + borderRadius: x.borderRadius, + offset: x.marginXXS, + visibleFirst: !0 + }); + }, [E, C, _, x]), J = $react.useMemo(() => A === 0 ? A : S || A || "", [S, A]), ne = /* @__PURE__ */ dt(kG, { + children: typeof J == "function" ? J() : J + }), { + getPopupContainer: fe, + placement: de = "top", + mouseEnterDelay: Te = 0.1, + mouseLeaveDelay: be = 0.1, + overlayStyle: Ve, + rootClassName: pe + } = e, Be = Ugt(e, ["getPopupContainer", "placement", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "rootClassName"]), Ue = R("tooltip", i), Qe = R(), Re = e["data-popover-inject"]; + let Ne = H; + !("open" in e) && !("visible" in e) && X && (Ne = !1); + const Me = EB(f) && !bCe(f) ? f : /* @__PURE__ */ dt("span", { + children: f + }), we = Me.props, He = !we.className || typeof we.className == "string" ? Cn(we.className, a || `${Ue}-open`) : we.className, [Ie, Ae, Fe] = pTe(Ue, !Re), $e = gTe(Ue, u), lt = $e.arrowStyle, it = Object.assign(Object.assign({}, d), $e.overlayStyle), nt = Cn(l, { + [`${Ue}-rtl`]: M === "rtl" + }, $e.className, pe, Ae, Fe), [ut, rt] = wgt("Tooltip", Be.zIndex), Ke = /* @__PURE__ */ dt(_gt, rn(br({}, Object.assign({}, Be, { + zIndex: ut, + showArrow: w, + placement: de, + mouseEnterDelay: Te, + mouseLeaveDelay: be, + prefixCls: Ue, + overlayClassName: nt, + overlayStyle: Object.assign(Object.assign({}, lt), Ve), + getTooltipContainer: fe || o || b, + ref: P, + builtinPlacements: ae, + overlay: ne, + visible: Ne, + onVisibleChange: ee, + afterVisibleChange: g != null ? g : v, + overlayInnerStyle: it, + arrowContent: /* @__PURE__ */ dt("span", { + className: `${Ue}-arrow-content` + }), + motion: { + motionName: hdt(Qe, "zoom-big-fast", e.transitionName), + motionDeadline: 1e3 + }, + destroyTooltipOnHide: !!y + })), { + children: Ne ? Kw(Me, { + className: He + }) : Me + })); + return Ie(/* @__PURE__ */ $react.createElement(uTe.Provider, { + value: rt + }, Ke)); +}); +vTe._InternalPanelDoNotUseOrYouWillBeFired = Bgt; +const jgt = vTe; +var $gt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function Vgt(e) { + return e ? typeof e == "object" && !/* @__PURE__ */ $react.isValidElement(e) ? e : { + title: e + } : null; +} +const zgt = (e) => { + let { + prefixCls: t, + label: r, + htmlFor: n, + labelCol: i, + labelAlign: a, + colon: o, + required: l, + requiredMark: u, + tooltip: d + } = e; + var f; + const [g] = Glt("Form"), { + vertical: v, + labelAlign: y, + labelCol: C, + labelWrap: A, + colon: S + } = $react.useContext(qm); + if (!r) + return null; + const _ = i || C || {}, E = a || y, I = `${t}-item-label`, w = Cn(I, E === "left" && `${I}-left`, _.className, { + [`${I}-wrap`]: !!A + }); + let x = r; + const b = o === !0 || S !== !1 && o !== !1; + b && !v && typeof r == "string" && r.trim() !== "" && (x = r.replace(/[:|:]\s*$/, "")); + const M = Vgt(d); + if (M) { + const { + icon: H = /* @__PURE__ */ dt(ypt, {}) + } = M, Y = $gt(M, ["icon"]), X = /* @__PURE__ */ dt(jgt, rn(br({}, Object.assign({}, Y)), { + children: /* @__PURE__ */ $react.cloneElement(H, { + className: `${t}-item-tooltip`, + title: "", + onClick: (ee) => { + ee.preventDefault(); + }, + tabIndex: null + }) + })); + x = /* @__PURE__ */ gn(Ta, { + children: [x, X] + }); + } + const O = u === "optional", P = typeof u == "function"; + P ? x = u(x, { + required: !!l + }) : O && !l && (x = /* @__PURE__ */ gn(Ta, { + children: [x, /* @__PURE__ */ dt("span", { + className: `${t}-item-optional`, + title: "", + children: (g == null ? void 0 : g.optional) || ((f = SE.Form) === null || f === void 0 ? void 0 : f.optional) + })] + })); + const B = Cn({ + [`${t}-item-required`]: l, + [`${t}-item-required-mark-optional`]: O || P, + [`${t}-item-no-colon`]: !b + }); + return /* @__PURE__ */ dt(eTe, rn(br({}, Object.assign({}, _, { + className: w + })), { + children: /* @__PURE__ */ dt("label", { + htmlFor: n, + className: B, + title: typeof r == "string" ? r : "", + children: x + }) + })); +}, Hgt = zgt; +var Wgt = { icon: { tag: "svg", attrs: { viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z" } }] }, name: "check-circle", theme: "filled" }; +const Ggt = Wgt; +var Ygt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: Ggt + })); +}, Xgt = /* @__PURE__ */ $react.forwardRef(Ygt); +const Kgt = Xgt; +var Zgt = { icon: { tag: "svg", attrs: { "fill-rule": "evenodd", viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z" } }] }, name: "close-circle", theme: "filled" }; +const qgt = Zgt; +var Jgt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: qgt + })); +}, Qgt = /* @__PURE__ */ $react.forwardRef(Jgt); +const n7 = Qgt; +var evt = { icon: { tag: "svg", attrs: { viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" } }] }, name: "exclamation-circle", theme: "filled" }; +const tvt = evt; +var rvt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: tvt + })); +}, nvt = /* @__PURE__ */ $react.forwardRef(rvt); +const ivt = nvt, avt = { + success: Kgt, + warning: ivt, + error: n7, + validating: DCe +}; +function mTe(e) { + let { + children: t, + errors: r, + warnings: n, + hasFeedback: i, + validateStatus: a, + prefixCls: o, + meta: l, + noStyle: u + } = e; + const d = `${o}-item`, { + feedbackIcons: f + } = $react.useContext(qm), g = ZCe(r, n, l, null, !!i, a), { + isFormItemInput: v, + status: y, + hasFeedback: C, + feedbackIcon: A + } = $react.useContext(lv), S = $react.useMemo(() => { + var _; + let E; + if (i) { + const w = i !== !0 && i.icons || f, x = g && ((_ = w == null ? void 0 : w({ + status: g, + errors: r, + warnings: n + })) === null || _ === void 0 ? void 0 : _[g]), b = g && avt[g]; + E = x !== !1 && b ? /* @__PURE__ */ dt("span", { + className: Cn(`${d}-feedback-icon`, `${d}-feedback-icon-${g}`), + children: x || /* @__PURE__ */ dt(b, {}) + }) : null; + } + const I = { + status: g || "", + errors: r, + warnings: n, + hasFeedback: !!i, + feedbackIcon: E, + isFormItemInput: !0 + }; + return u && (I.status = (g != null ? g : y) || "", I.isFormItemInput = v, I.hasFeedback = !!(i != null ? i : C), I.feedbackIcon = i !== void 0 ? I.feedbackIcon : A), I; + }, [g, i, u, v, y]); + return /* @__PURE__ */ dt(lv.Provider, { + value: S, + children: t + }); +} +var ovt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function svt(e) { + const { + prefixCls: t, + className: r, + rootClassName: n, + style: i, + help: a, + errors: o, + warnings: l, + validateStatus: u, + meta: d, + hasFeedback: f, + hidden: g, + children: v, + fieldId: y, + required: C, + isRequired: A, + onSubItemMetaChange: S + } = e, _ = ovt(e, ["prefixCls", "className", "rootClassName", "style", "help", "errors", "warnings", "validateStatus", "meta", "hasFeedback", "hidden", "children", "fieldId", "required", "isRequired", "onSubItemMetaChange"]), E = `${t}-item`, { + requiredMark: I + } = $react.useContext(qm), w = $react.useRef(null), x = m2(o), b = m2(l), R = a != null, M = !!(R || o.length || l.length), O = !!w.current && NY(w.current), [P, B] = $react.useState(null); + Zl(() => { + if (M && w.current) { + const ae = getComputedStyle(w.current); + B(parseInt(ae.marginBottom, 10)); + } + }, [M, O]); + const H = (ae) => { + ae || B(null); + }, X = function() { + let ae = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1; + const J = ae ? x : d.errors, ne = ae ? b : d.warnings; + return ZCe(J, ne, d, "", !!f, u); + }(), ee = Cn(E, r, n, { + [`${E}-with-help`]: R || x.length || b.length, + // Status + [`${E}-has-feedback`]: X && f, + [`${E}-has-success`]: X === "success", + [`${E}-has-warning`]: X === "warning", + [`${E}-has-error`]: X === "error", + [`${E}-is-validating`]: X === "validating", + [`${E}-hidden`]: g + }); + return /* @__PURE__ */ gn("div", { + className: ee, + style: i, + ref: w, + children: [/* @__PURE__ */ gn(cpt, rn(br({}, Object.assign({ + className: `${E}-row` + }, BD(_, [ + "_internalItemRender", + "colon", + "dependencies", + "extra", + "fieldKey", + "getValueFromEvent", + "getValueProps", + "htmlFor", + "id", + // It is deprecated because `htmlFor` is its replacement. + "initialValue", + "isListField", + "label", + "labelAlign", + "labelCol", + "labelWrap", + "messageVariables", + "name", + "normalize", + "noStyle", + "preserve", + "requiredMark", + "rules", + "shouldUpdate", + "trigger", + "tooltip", + "validateFirst", + "validateTrigger", + "valuePropName", + "wrapperCol", + "validateDebounce" + ]))), { + children: [/* @__PURE__ */ dt(Hgt, br({}, Object.assign({ + htmlFor: y + }, e, { + requiredMark: I, + required: C != null ? C : A, + prefixCls: t + }))), /* @__PURE__ */ dt(fpt, rn(br({}, Object.assign({}, e, d, { + errors: x, + warnings: b, + prefixCls: t, + status: X, + help: a, + marginBottom: P, + onErrorVisibleChanged: H + })), { + children: /* @__PURE__ */ dt(HCe.Provider, { + value: S, + children: /* @__PURE__ */ dt(mTe, { + prefixCls: t, + meta: d, + errors: d.errors, + warnings: d.warnings, + hasFeedback: f, + validateStatus: X, + children: v + }) + }) + }))] + })), !!P && /* @__PURE__ */ dt("div", { + className: `${E}-margin-offset`, + style: { + marginBottom: -P + } + })] + }); +} +const lvt = "__SPLIT__"; +function cvt(e, t) { + const r = Object.keys(e), n = Object.keys(t); + return r.length === n.length && r.every((i) => { + const a = e[i], o = t[i]; + return a === o || typeof a == "function" || typeof o == "function"; + }); +} +const uvt = /* @__PURE__ */ $react.memo((e) => { + let { + children: t + } = e; + return t; +}, (e, t) => cvt(e.control, t.control) && e.update === t.update && e.childProps.length === t.childProps.length && e.childProps.every((r, n) => r === t.childProps[n])); +function Nhe() { + return { + errors: [], + warnings: [], + touched: !1, + validating: !1, + name: [], + validated: !1 + }; +} +function hvt(e) { + const { + name: t, + noStyle: r, + className: n, + dependencies: i, + prefixCls: a, + shouldUpdate: o, + rules: l, + children: u, + required: d, + label: f, + messageVariables: g, + trigger: v = "onChange", + validateTrigger: y, + hidden: C, + help: A + } = e, { + getPrefixCls: S + } = $react.useContext(Sl), { + name: _ + } = $react.useContext(qm), E = $ft(u), I = typeof E == "function", w = $react.useContext(HCe), { + validateTrigger: x + } = $react.useContext(EE), b = y !== void 0 ? y : x, R = t != null, M = S("form", a), O = GD(M), [P, B, H] = r7(M, O); + PY(); + const Y = $react.useContext(zR), X = $react.useRef(), [ee, ae] = zft({}), [J, ne] = tE(() => Nhe()), fe = (Ue) => { + const Qe = Y == null ? void 0 : Y.getKey(Ue.name); + if (ne(Ue.destroy ? Nhe() : Ue, !0), r && A !== !1 && w) { + let Re = Ue.name; + if (Ue.destroy) + Re = X.current || Re; + else if (Qe !== void 0) { + const [Ne, Me] = Qe; + Re = [Ne].concat(Gn(Me)), X.current = Re; + } + w(Ue, Re); + } + }, de = (Ue, Qe) => { + ae((Re) => { + const Ne = Object.assign({}, Re), we = [].concat(Gn(Ue.name.slice(0, -1)), Gn(Qe)).join(lvt); + return Ue.destroy ? delete Ne[we] : Ne[we] = Ue, Ne; + }); + }, [Te, be] = $react.useMemo(() => { + const Ue = Gn(J.errors), Qe = Gn(J.warnings); + return Object.values(ee).forEach((Re) => { + Ue.push.apply(Ue, Gn(Re.errors || [])), Qe.push.apply(Qe, Gn(Re.warnings || [])); + }), [Ue, Qe]; + }, [ee, J.errors, J.warnings]), Ve = Hft(); + function pe(Ue, Qe, Re) { + return r && !C ? /* @__PURE__ */ dt(mTe, { + prefixCls: M, + hasFeedback: e.hasFeedback, + validateStatus: e.validateStatus, + meta: J, + errors: Te, + warnings: be, + noStyle: !0, + children: Ue + }) : /* @__PURE__ */ dt(svt, rn(br({}, Object.assign({ + key: "row" + }, e, { + className: Cn(n, H, O, B), + prefixCls: M, + fieldId: Qe, + isRequired: Re, + errors: Te, + warnings: be, + meta: J, + onSubItemMetaChange: de + })), { + children: Ue + })); + } + if (!R && !I && !i) + return P(pe(E)); + let Be = {}; + return typeof f == "string" ? Be.label = f : t && (Be.label = String(t)), g && (Be = Object.assign(Object.assign({}, Be), g)), P( + /* @__PURE__ */ dt(JY, rn(br({}, Object.assign({}, e, { + messageVariables: Be, + trigger: v, + validateTrigger: b, + onMetaChange: fe + })), { + children: (Ue, Qe, Re) => { + const Ne = H1(t).length && Qe ? Qe.name : [], Me = KCe(Ne, _), we = d !== void 0 ? d : !!(l && l.some((Ae) => { + if (Ae && typeof Ae == "object" && Ae.required && !Ae.warningOnly) + return !0; + if (typeof Ae == "function") { + const Fe = Ae(Re); + return Fe && Fe.required && !Fe.warningOnly; + } + return !1; + })), He = Object.assign({}, Ue); + let Ie = null; + if (Array.isArray(E) && R) + Ie = E; + else if (!(I && (!(o || i) || R))) { + if (!(i && !I && !R)) + if (EB(E)) { + const Ae = Object.assign(Object.assign({}, E.props), He); + if (Ae.id || (Ae.id = Me), A || Te.length > 0 || be.length > 0 || e.extra) { + const lt = []; + (A || Te.length > 0) && lt.push(`${Me}_help`), e.extra && lt.push(`${Me}_extra`), Ae["aria-describedby"] = lt.join(" "); + } + Te.length > 0 && (Ae["aria-invalid"] = "true"), we && (Ae["aria-required"] = "true"), DI(E) && (Ae.ref = Ve(Ne, E)), new Set([].concat(Gn(H1(v)), Gn(H1(b)))).forEach((lt) => { + Ae[lt] = function() { + for (var it, nt, ut, rt, Ke, ze = arguments.length, qe = new Array(ze), ct = 0; ct < ze; ct++) + qe[ct] = arguments[ct]; + (ut = He[lt]) === null || ut === void 0 || (it = ut).call.apply(it, [He].concat(qe)), (Ke = (rt = E.props)[lt]) === null || Ke === void 0 || (nt = Ke).call.apply(nt, [rt].concat(qe)); + }; + }); + const $e = [Ae["aria-required"], Ae["aria-invalid"], Ae["aria-describedby"]]; + Ie = /* @__PURE__ */ dt(uvt, { + control: He, + update: E, + childProps: $e, + children: Kw(E, Ae) + }); + } else + I && (o || i) && !R ? Ie = E(Re) : Ie = E; + } + return pe(Ie, Me, we); + } + })) + ); +} +const yTe = hvt; +yTe.useStatus = Vft; +const dvt = yTe; +var fvt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const pvt = (e) => { + var { + prefixCls: t, + children: r + } = e, n = fvt(e, ["prefixCls", "children"]); + const { + getPrefixCls: i + } = $react.useContext(Sl), a = i("form", t), o = $react.useMemo(() => ({ + prefixCls: a, + status: "error" + }), [a]); + return /* @__PURE__ */ dt(jCe, rn(br({}, Object.assign({}, n)), { + children: (l, u, d) => /* @__PURE__ */ dt(e7.Provider, { + value: o, + children: r(l.map((f) => Object.assign(Object.assign({}, f), { + fieldKey: f.key + })), u, { + errors: d.errors, + warnings: d.warnings + }) + }) + })); +}, gvt = pvt; +function vvt() { + const { + form: e + } = $react.useContext(qm); + return e; +} +const oy = jft; +oy.Item = dvt; +oy.List = gvt; +oy.ErrorList = XCe; +oy.useForm = qCe; +oy.useFormInstance = vvt; +oy.useWatch = zCe; +oy.Provider = WCe; +oy.create = () => { +}; +const rw = oy; +function mvt(e) { + return wd(e, { + inputAffixPadding: e.paddingXXS + }); +} +const yvt = (e) => { + const { + controlHeight: t, + fontSize: r, + lineHeight: n, + lineWidth: i, + controlHeightSM: a, + controlHeightLG: o, + fontSizeLG: l, + lineHeightLG: u, + paddingSM: d, + controlPaddingHorizontalSM: f, + controlPaddingHorizontal: g, + colorFillAlter: v, + colorPrimaryHover: y, + colorPrimary: C, + controlOutlineWidth: A, + controlOutline: S, + colorErrorOutline: _, + colorWarningOutline: E, + colorBgContainer: I + } = e; + return { + paddingBlock: Math.max(Math.round((t - r * n) / 2 * 10) / 10 - i, 0), + paddingBlockSM: Math.max(Math.round((a - r * n) / 2 * 10) / 10 - i, 0), + paddingBlockLG: Math.ceil((o - l * u) / 2 * 10) / 10 - i, + paddingInline: d - i, + paddingInlineSM: f - i, + paddingInlineLG: g - i, + addonBg: v, + activeBorderColor: C, + hoverBorderColor: y, + activeShadow: `0 0 0 ${A}px ${S}`, + errorActiveShadow: `0 0 0 ${A}px ${_}`, + warningActiveShadow: `0 0 0 ${A}px ${E}`, + hoverBg: I, + activeBg: I, + inputFontSize: r, + inputFontSizeLG: l, + inputFontSizeSM: r + }; +}, _vt = (e) => ({ + borderColor: e.hoverBorderColor, + backgroundColor: e.hoverBg +}), i7 = (e) => ({ + color: e.colorTextDisabled, + backgroundColor: e.colorBgContainerDisabled, + borderColor: e.colorBorder, + boxShadow: "none", + cursor: "not-allowed", + opacity: 1, + "&:hover:not([disabled])": Object.assign({}, _vt(wd(e, { + hoverBorderColor: e.colorBorder, + hoverBg: e.colorBgContainerDisabled + }))) +}), _Te = (e, t) => ({ + background: e.colorBgContainer, + borderWidth: e.lineWidth, + borderStyle: e.lineType, + borderColor: t.borderColor, + "&:hover": { + borderColor: t.hoverBorderColor, + backgroundColor: e.hoverBg + }, + "&:focus, &:focus-within": { + borderColor: t.activeBorderColor, + boxShadow: t.activeShadow, + outline: 0, + backgroundColor: e.activeBg + } +}), Lhe = (e, t) => ({ + [`&${e.componentCls}-status-${t.status}:not(${e.componentCls}-disabled)`]: Object.assign(Object.assign({}, _Te(e, t)), { + [`${e.componentCls}-prefix, ${e.componentCls}-suffix`]: { + color: t.affixColor + } + }) +}), Svt = (e, t) => ({ + "&-outlined": Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _Te(e, { + borderColor: e.colorBorder, + hoverBorderColor: e.colorPrimaryHover, + activeBorderColor: e.colorPrimary, + activeShadow: e.activeShadow + })), { + [`&${e.componentCls}-disabled, &[disabled]`]: Object.assign({}, i7(e)) + }), Lhe(e, { + status: "error", + borderColor: e.colorError, + hoverBorderColor: e.colorErrorBorderHover, + activeBorderColor: e.colorError, + activeShadow: e.errorActiveShadow, + affixColor: e.colorError + })), Lhe(e, { + status: "warning", + borderColor: e.colorWarning, + hoverBorderColor: e.colorWarningBorderHover, + activeBorderColor: e.colorWarning, + activeShadow: e.warningActiveShadow, + affixColor: e.colorWarning + })), t) +}), Fhe = (e, t) => ({ + [`&${e.componentCls}-group-wrapper-status-${t.status}`]: { + [`${e.componentCls}-group-addon`]: { + borderColor: t.addonBorderColor, + color: t.addonColor + } + } +}), bvt = (e) => ({ + "&-outlined": Object.assign(Object.assign(Object.assign({ + [`${e.componentCls}-group`]: { + "&-addon": { + background: e.addonBg, + border: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}` + }, + "&-addon:first-child": { + borderInlineEnd: 0 + }, + "&-addon:last-child": { + borderInlineStart: 0 + } + } + }, Fhe(e, { + status: "error", + addonBorderColor: e.colorError, + addonColor: e.colorErrorText + })), Fhe(e, { + status: "warning", + addonBorderColor: e.colorWarning, + addonColor: e.colorWarningText + })), { + [`&${e.componentCls}-group-wrapper-disabled`]: { + [`${e.componentCls}-group-addon`]: Object.assign({}, i7(e)) + } + }) +}), Evt = (e, t) => ({ + "&-borderless": Object.assign({ + background: "transparent", + border: "none", + "&:focus, &:focus-within": { + outline: "none" + }, + [`&${e.componentCls}-disabled, &[disabled]`]: { + color: e.colorTextDisabled + } + }, t) +}), STe = (e, t) => ({ + background: t.bg, + borderWidth: e.lineWidth, + borderStyle: e.lineType, + borderColor: "transparent", + "input&, & input, textarea&, & textarea": { + color: t == null ? void 0 : t.inputColor + }, + "&:hover": { + background: t.hoverBg + }, + "&:focus, &:focus-within": { + outline: 0, + borderColor: t.activeBorderColor, + backgroundColor: e.activeBg + } +}), Bhe = (e, t) => ({ + [`&${e.componentCls}-status-${t.status}:not(${e.componentCls}-disabled)`]: Object.assign(Object.assign({}, STe(e, t)), { + [`${e.componentCls}-prefix, ${e.componentCls}-suffix`]: { + color: t.affixColor + } + }) +}), Cvt = (e, t) => ({ + "&-filled": Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, STe(e, { + bg: e.colorFillTertiary, + hoverBg: e.colorFillSecondary, + activeBorderColor: e.colorPrimary + })), { + [`&${e.componentCls}-disabled, &[disabled]`]: Object.assign({}, i7(e)) + }), Bhe(e, { + status: "error", + bg: e.colorErrorBg, + hoverBg: e.colorErrorBgHover, + activeBorderColor: e.colorError, + inputColor: e.colorErrorText, + affixColor: e.colorError + })), Bhe(e, { + status: "warning", + bg: e.colorWarningBg, + hoverBg: e.colorWarningBgHover, + activeBorderColor: e.colorWarning, + inputColor: e.colorWarningText, + affixColor: e.colorWarning + })), t) +}), Uhe = (e, t) => ({ + [`&${e.componentCls}-group-wrapper-status-${t.status}`]: { + [`${e.componentCls}-group-addon`]: { + background: t.addonBg, + color: t.addonColor + } + } +}), Tvt = (e) => ({ + "&-filled": Object.assign(Object.assign(Object.assign({ + [`${e.componentCls}-group`]: { + "&-addon": { + background: e.colorFillTertiary + }, + [`${e.componentCls}-filled:not(:focus):not(:focus-within)`]: { + "&:not(:first-child)": { + borderInlineStart: `${da(e.lineWidth)} ${e.lineType} ${e.colorSplit}` + }, + "&:not(:last-child)": { + borderInlineEnd: `${da(e.lineWidth)} ${e.lineType} ${e.colorSplit}` + } + } + } + }, Uhe(e, { + status: "error", + addonBg: e.colorErrorBg, + addonColor: e.colorErrorText + })), Uhe(e, { + status: "warning", + addonBg: e.colorWarningBg, + addonColor: e.colorWarningText + })), { + [`&${e.componentCls}-group-wrapper-disabled`]: { + [`${e.componentCls}-group`]: { + "&-addon": { + background: e.colorFillTertiary, + color: e.colorTextDisabled + }, + "&-addon:first-child": { + borderInlineStart: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}`, + borderTop: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}`, + borderBottom: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}` + }, + "&-addon:last-child": { + borderInlineEnd: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}`, + borderTop: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}`, + borderBottom: `${da(e.lineWidth)} ${e.lineType} ${e.colorBorder}` + } + } + } + }) +}), wvt = (e) => ({ + // Firefox + "&::-moz-placeholder": { + opacity: 1 + }, + "&::placeholder": { + color: e, + userSelect: "none" + // https://github.com/ant-design/ant-design/pull/32639 + }, + "&:placeholder-shown": { + textOverflow: "ellipsis" + } +}), bTe = (e) => { + const { + paddingBlockLG: t, + lineHeightLG: r, + borderRadiusLG: n, + paddingInlineLG: i + } = e; + return { + padding: `${da(t)} ${da(i)}`, + fontSize: e.inputFontSizeLG, + lineHeight: r, + borderRadius: n + }; +}, ETe = (e) => ({ + padding: `${da(e.paddingBlockSM)} ${da(e.paddingInlineSM)}`, + fontSize: e.inputFontSizeSM, + borderRadius: e.borderRadiusSM +}), CTe = (e) => Object.assign(Object.assign({ + position: "relative", + display: "inline-block", + width: "100%", + minWidth: 0, + padding: `${da(e.paddingBlock)} ${da(e.paddingInline)}`, + color: e.colorText, + fontSize: e.inputFontSize, + lineHeight: e.lineHeight, + borderRadius: e.borderRadius, + transition: `all ${e.motionDurationMid}` +}, wvt(e.colorTextPlaceholder)), { + // Reset height for `textarea`s + "textarea&": { + maxWidth: "100%", + // prevent textarea resize from coming out of its container + height: "auto", + minHeight: e.controlHeight, + lineHeight: e.lineHeight, + verticalAlign: "bottom", + transition: `all ${e.motionDurationSlow}, height 0s`, + resize: "vertical" + }, + // Size + "&-lg": Object.assign({}, bTe(e)), + "&-sm": Object.assign({}, ETe(e)), + // RTL + "&-rtl": { + direction: "rtl" + }, + "&-textarea-rtl": { + direction: "rtl" + } +}), Ivt = (e) => { + const { + componentCls: t, + antCls: r + } = e; + return { + position: "relative", + display: "table", + width: "100%", + borderCollapse: "separate", + borderSpacing: 0, + // Undo padding and float of grid classes + "&[class*='col-']": { + paddingInlineEnd: e.paddingXS, + "&:last-child": { + paddingInlineEnd: 0 + } + }, + // Sizing options + [`&-lg ${t}, &-lg > ${t}-group-addon`]: Object.assign({}, bTe(e)), + [`&-sm ${t}, &-sm > ${t}-group-addon`]: Object.assign({}, ETe(e)), + // Fix https://github.com/ant-design/ant-design/issues/5754 + [`&-lg ${r}-select-single ${r}-select-selector`]: { + height: e.controlHeightLG + }, + [`&-sm ${r}-select-single ${r}-select-selector`]: { + height: e.controlHeightSM + }, + [`> ${t}`]: { + display: "table-cell", + "&:not(:first-child):not(:last-child)": { + borderRadius: 0 + } + }, + [`${t}-group`]: { + "&-addon, &-wrap": { + display: "table-cell", + width: 1, + whiteSpace: "nowrap", + verticalAlign: "middle", + "&:not(:first-child):not(:last-child)": { + borderRadius: 0 + } + }, + "&-wrap > *": { + display: "block !important" + }, + "&-addon": { + position: "relative", + padding: `0 ${da(e.paddingInline)}`, + color: e.colorText, + fontWeight: "normal", + fontSize: e.inputFontSize, + textAlign: "center", + borderRadius: e.borderRadius, + transition: `all ${e.motionDurationSlow}`, + lineHeight: 1, + // Reset Select's style in addon + [`${r}-select`]: { + margin: `${da(e.calc(e.paddingBlock).add(1).mul(-1).equal())} ${da(e.calc(e.paddingInline).mul(-1).equal())}`, + [`&${r}-select-single:not(${r}-select-customize-input):not(${r}-pagination-size-changer)`]: { + [`${r}-select-selector`]: { + backgroundColor: "inherit", + border: `${da(e.lineWidth)} ${e.lineType} transparent`, + boxShadow: "none" + } + }, + "&-open, &-focused": { + [`${r}-select-selector`]: { + color: e.colorPrimary + } + } + }, + // https://github.com/ant-design/ant-design/issues/31333 + [`${r}-cascader-picker`]: { + margin: `-9px ${da(e.calc(e.paddingInline).mul(-1).equal())}`, + backgroundColor: "transparent", + [`${r}-cascader-input`]: { + textAlign: "start", + border: 0, + boxShadow: "none" + } + } + } + }, + [`${t}`]: { + width: "100%", + marginBottom: 0, + textAlign: "inherit", + "&:focus": { + zIndex: 1, + // Fix https://gw.alipayobjects.com/zos/rmsportal/DHNpoqfMXSfrSnlZvhsJ.png + borderInlineEndWidth: 1 + }, + "&:hover": { + zIndex: 1, + borderInlineEndWidth: 1, + [`${t}-search-with-button &`]: { + zIndex: 0 + } + } + }, + // Reset rounded corners + [`> ${t}:first-child, ${t}-group-addon:first-child`]: { + borderStartEndRadius: 0, + borderEndEndRadius: 0, + // Reset Select's style in addon + [`${r}-select ${r}-select-selector`]: { + borderStartEndRadius: 0, + borderEndEndRadius: 0 + } + }, + [`> ${t}-affix-wrapper`]: { + [`&:not(:first-child) ${t}`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0 + }, + [`&:not(:last-child) ${t}`]: { + borderStartEndRadius: 0, + borderEndEndRadius: 0 + } + }, + [`> ${t}:last-child, ${t}-group-addon:last-child`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0, + // Reset Select's style in addon + [`${r}-select ${r}-select-selector`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0 + } + }, + [`${t}-affix-wrapper`]: { + "&:not(:last-child)": { + borderStartEndRadius: 0, + borderEndEndRadius: 0, + [`${t}-search &`]: { + borderStartStartRadius: e.borderRadius, + borderEndStartRadius: e.borderRadius + } + }, + [`&:not(:first-child), ${t}-search &:not(:first-child)`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0 + } + }, + [`&${t}-group-compact`]: Object.assign(Object.assign({ + display: "block" + }, Fct()), { + [`${t}-group-addon, ${t}-group-wrap, > ${t}`]: { + "&:not(:first-child):not(:last-child)": { + borderInlineEndWidth: e.lineWidth, + "&:hover": { + zIndex: 1 + }, + "&:focus": { + zIndex: 1 + } + } + }, + "& > *": { + display: "inline-block", + float: "none", + verticalAlign: "top", + // https://github.com/ant-design/ant-design-pro/issues/139 + borderRadius: 0 + }, + [` + & > ${t}-affix-wrapper, + & > ${t}-number-affix-wrapper, + & > ${r}-picker-range + `]: { + display: "inline-flex" + }, + "& > *:not(:last-child)": { + marginInlineEnd: e.calc(e.lineWidth).mul(-1).equal(), + borderInlineEndWidth: e.lineWidth + }, + // Undo float for .ant-input-group .ant-input + [`${t}`]: { + float: "none" + }, + // reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input + [`& > ${r}-select > ${r}-select-selector, + & > ${r}-select-auto-complete ${t}, + & > ${r}-cascader-picker ${t}, + & > ${t}-group-wrapper ${t}`]: { + borderInlineEndWidth: e.lineWidth, + borderRadius: 0, + "&:hover": { + zIndex: 1 + }, + "&:focus": { + zIndex: 1 + } + }, + [`& > ${r}-select-focused`]: { + zIndex: 1 + }, + // update z-index for arrow icon + [`& > ${r}-select > ${r}-select-arrow`]: { + zIndex: 1 + // https://github.com/ant-design/ant-design/issues/20371 + }, + [`& > *:first-child, + & > ${r}-select:first-child > ${r}-select-selector, + & > ${r}-select-auto-complete:first-child ${t}, + & > ${r}-cascader-picker:first-child ${t}`]: { + borderStartStartRadius: e.borderRadius, + borderEndStartRadius: e.borderRadius + }, + [`& > *:last-child, + & > ${r}-select:last-child > ${r}-select-selector, + & > ${r}-cascader-picker:last-child ${t}, + & > ${r}-cascader-picker-focused:last-child ${t}`]: { + borderInlineEndWidth: e.lineWidth, + borderStartEndRadius: e.borderRadius, + borderEndEndRadius: e.borderRadius + }, + // https://github.com/ant-design/ant-design/issues/12493 + [`& > ${r}-select-auto-complete ${t}`]: { + verticalAlign: "top" + }, + [`${t}-group-wrapper + ${t}-group-wrapper`]: { + marginInlineStart: e.calc(e.lineWidth).mul(-1).equal(), + [`${t}-affix-wrapper`]: { + borderRadius: 0 + } + }, + [`${t}-group-wrapper:not(:last-child)`]: { + [`&${t}-search > ${t}-group`]: { + [`& > ${t}-group-addon > ${t}-search-button`]: { + borderRadius: 0 + }, + [`& > ${t}`]: { + borderStartStartRadius: e.borderRadius, + borderStartEndRadius: 0, + borderEndEndRadius: 0, + borderEndStartRadius: e.borderRadius + } + } + } + }) + }; +}, xvt = (e) => { + const { + componentCls: t, + controlHeightSM: r, + lineWidth: n, + calc: i + } = e, a = 16, o = i(r).sub(i(n).mul(2)).sub(a).div(2).equal(); + return { + [t]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, $D(e)), CTe(e)), Svt(e)), Cvt(e)), Evt(e)), { + '&[type="color"]': { + height: e.controlHeight, + [`&${t}-lg`]: { + height: e.controlHeightLG + }, + [`&${t}-sm`]: { + height: r, + paddingTop: o, + paddingBottom: o + } + }, + '&[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-decoration': { + "-webkit-appearance": "none" + } + }) + }; +}, Avt = (e) => { + const { + componentCls: t + } = e; + return { + // ========================= Input ========================= + [`${t}-clear-icon`]: { + margin: 0, + color: e.colorTextQuaternary, + fontSize: e.fontSizeIcon, + verticalAlign: -1, + // https://github.com/ant-design/ant-design/pull/18151 + // https://codesandbox.io/s/wizardly-sun-u10br + cursor: "pointer", + transition: `color ${e.motionDurationSlow}`, + "&:hover": { + color: e.colorTextTertiary + }, + "&:active": { + color: e.colorText + }, + "&-hidden": { + visibility: "hidden" + }, + "&-has-suffix": { + margin: `0 ${da(e.inputAffixPadding)}` + } + } + }; +}, Rvt = (e) => { + const { + componentCls: t, + inputAffixPadding: r, + colorTextDescription: n, + motionDurationSlow: i, + colorIcon: a, + colorIconHover: o, + iconCls: l + } = e; + return { + [`${t}-affix-wrapper`]: Object.assign(Object.assign(Object.assign(Object.assign({}, CTe(e)), { + display: "inline-flex", + [`&:not(${t}-disabled):hover`]: { + zIndex: 1, + [`${t}-search-with-button &`]: { + zIndex: 0 + } + }, + "&-focused, &:focus": { + zIndex: 1 + }, + [`> input${t}`]: { + padding: 0, + fontSize: "inherit", + border: "none", + borderRadius: 0, + outline: "none", + background: "transparent", + color: "inherit", + "&::-ms-reveal": { + display: "none" + }, + "&:focus": { + boxShadow: "none !important" + } + }, + "&::before": { + display: "inline-block", + width: 0, + visibility: "hidden", + content: '"\\a0"' + }, + [`${t}`]: { + "&-prefix, &-suffix": { + display: "flex", + flex: "none", + alignItems: "center", + "> *:not(:last-child)": { + marginInlineEnd: e.paddingXS + } + }, + "&-show-count-suffix": { + color: n + }, + "&-show-count-has-suffix": { + marginInlineEnd: e.paddingXXS + }, + "&-prefix": { + marginInlineEnd: r + }, + "&-suffix": { + marginInlineStart: r + } + } + }), Avt(e)), { + // password + [`${l}${t}-password-icon`]: { + color: a, + cursor: "pointer", + transition: `all ${i}`, + "&:hover": { + color: o + } + } + }) + }; +}, Dvt = (e) => { + const { + componentCls: t, + borderRadiusLG: r, + borderRadiusSM: n + } = e; + return { + [`${t}-group`]: Object.assign(Object.assign(Object.assign({}, $D(e)), Ivt(e)), { + "&-rtl": { + direction: "rtl" + }, + "&-wrapper": Object.assign(Object.assign(Object.assign({ + display: "inline-block", + width: "100%", + textAlign: "start", + verticalAlign: "top", + "&-rtl": { + direction: "rtl" + }, + // Size + "&-lg": { + [`${t}-group-addon`]: { + borderRadius: r, + fontSize: e.inputFontSizeLG + } + }, + "&-sm": { + [`${t}-group-addon`]: { + borderRadius: n + } + } + }, bvt(e)), Tvt(e)), { + // '&-disabled': { + // [`${componentCls}-group-addon`]: { + // ...genDisabledStyle(token), + // }, + // }, + // Fix the issue of using icons in Space Compact mode + // https://github.com/ant-design/ant-design/issues/42122 + [`&:not(${t}-compact-first-item):not(${t}-compact-last-item)${t}-compact-item`]: { + [`${t}, ${t}-group-addon`]: { + borderRadius: 0 + } + }, + [`&:not(${t}-compact-last-item)${t}-compact-first-item`]: { + [`${t}, ${t}-group-addon`]: { + borderStartEndRadius: 0, + borderEndEndRadius: 0 + } + }, + [`&:not(${t}-compact-first-item)${t}-compact-last-item`]: { + [`${t}, ${t}-group-addon`]: { + borderStartStartRadius: 0, + borderEndStartRadius: 0 + } + } + }) + }) + }; +}, Ovt = (e) => { + const { + componentCls: t, + antCls: r + } = e, n = `${t}-search`; + return { + [n]: { + [`${t}`]: { + "&:hover, &:focus": { + borderColor: e.colorPrimaryHover, + [`+ ${t}-group-addon ${n}-button:not(${r}-btn-primary)`]: { + borderInlineStartColor: e.colorPrimaryHover + } + } + }, + [`${t}-affix-wrapper`]: { + borderRadius: 0 + }, + // fix slight height diff in Firefox: + // https://ant.design/components/auto-complete-cn/#components-auto-complete-demo-certain-category + [`${t}-lg`]: { + lineHeight: e.calc(e.lineHeightLG).sub(2e-4).equal({ + unit: !1 + }) + }, + [`> ${t}-group`]: { + [`> ${t}-group-addon:last-child`]: { + insetInlineStart: -1, + padding: 0, + border: 0, + [`${n}-button`]: { + paddingTop: 0, + paddingBottom: 0, + borderStartStartRadius: 0, + borderStartEndRadius: e.borderRadius, + borderEndEndRadius: e.borderRadius, + borderEndStartRadius: 0, + boxShadow: "none" + }, + [`${n}-button:not(${r}-btn-primary)`]: { + color: e.colorTextDescription, + "&:hover": { + color: e.colorPrimaryHover + }, + "&:active": { + color: e.colorPrimaryActive + }, + [`&${r}-btn-loading::before`]: { + insetInlineStart: 0, + insetInlineEnd: 0, + insetBlockStart: 0, + insetBlockEnd: 0 + } + } + } + }, + [`${n}-button`]: { + height: e.controlHeight, + "&:hover, &:focus": { + zIndex: 1 + } + }, + [`&-large ${n}-button`]: { + height: e.controlHeightLG + }, + [`&-small ${n}-button`]: { + height: e.controlHeightSM + }, + "&-rtl": { + direction: "rtl" + }, + // ===================== Compact Item Customized Styles ===================== + [`&${t}-compact-item`]: { + [`&:not(${t}-compact-last-item)`]: { + [`${t}-group-addon`]: { + [`${t}-search-button`]: { + marginInlineEnd: e.calc(e.lineWidth).mul(-1).equal(), + borderRadius: 0 + } + } + }, + [`&:not(${t}-compact-first-item)`]: { + [`${t},${t}-affix-wrapper`]: { + borderRadius: 0 + } + }, + [`> ${t}-group-addon ${t}-search-button, + > ${t}, + ${t}-affix-wrapper`]: { + "&:hover,&:focus,&:active": { + zIndex: 2 + } + }, + [`> ${t}-affix-wrapper-focused`]: { + zIndex: 2 + } + } + } + }; +}, Mvt = (e) => { + const { + componentCls: t, + paddingLG: r + } = e, n = `${t}-textarea`; + return { + [n]: { + position: "relative", + "&-show-count": { + // https://github.com/ant-design/ant-design/issues/33049 + [`> ${t}`]: { + height: "100%" + }, + [`${t}-data-count`]: { + position: "absolute", + bottom: e.calc(e.fontSize).mul(e.lineHeight).mul(-1).equal(), + insetInlineEnd: 0, + color: e.colorTextDescription, + whiteSpace: "nowrap", + pointerEvents: "none" + } + }, + "&-allow-clear": { + [`> ${t}`]: { + paddingInlineEnd: r + } + }, + [`&-affix-wrapper${n}-has-feedback`]: { + [`${t}`]: { + paddingInlineEnd: r + } + }, + [`&-affix-wrapper${t}-affix-wrapper`]: { + padding: 0, + [`> textarea${t}`]: { + fontSize: "inherit", + border: "none", + outline: "none", + background: "transparent", + "&:focus": { + boxShadow: "none !important" + } + }, + [`${t}-suffix`]: { + margin: 0, + "> *:not(:last-child)": { + marginInline: 0 + }, + // Clear Icon + [`${t}-clear-icon`]: { + position: "absolute", + insetInlineEnd: e.paddingXS, + insetBlockStart: e.paddingXS + }, + // Feedback Icon + [`${n}-suffix`]: { + position: "absolute", + top: 0, + insetInlineEnd: e.paddingInline, + bottom: 0, + zIndex: 1, + display: "inline-flex", + alignItems: "center", + margin: "auto", + pointerEvents: "none" + } + } + } + } + }; +}, kvt = (e) => { + const { + componentCls: t + } = e; + return { + [`${t}-out-of-range`]: { + [`&, & input, & textarea, ${t}-show-count-suffix, ${t}-data-count`]: { + color: e.colorError + } + } + }; +}, a7 = MI("Input", (e) => { + const t = wd(e, mvt(e)); + return [ + xvt(t), + Mvt(t), + Rvt(t), + Dvt(t), + Ovt(t), + kvt(t), + // ===================================================== + // == Space Compact == + // ===================================================== + NCe(t) + ]; +}, yvt), Pvt = (e) => { + const { + getPrefixCls: t, + direction: r + } = $react.useContext(Sl), { + prefixCls: n, + className: i + } = e, a = t("input-group", n), o = t("input"), [l, u] = a7(o), d = Cn(a, { + [`${a}-lg`]: e.size === "large", + [`${a}-sm`]: e.size === "small", + [`${a}-compact`]: e.compact, + [`${a}-rtl`]: r === "rtl" + }, u, i), f = $react.useContext(lv), g = $react.useMemo(() => Object.assign(Object.assign({}, f), { + isFormItemInput: !1 + }), [f]); + return l( + /* @__PURE__ */ dt("span", { + className: d, + style: e.style, + onMouseEnter: e.onMouseEnter, + onMouseLeave: e.onMouseLeave, + onFocus: e.onFocus, + onBlur: e.onBlur, + children: /* @__PURE__ */ dt(lv.Provider, { + value: g, + children: e.children + }) + }) + ); +}, Nvt = Pvt; +function Lvt(e) { + return !!(e.addonBefore || e.addonAfter); +} +function Fvt(e) { + return !!(e.prefix || e.suffix || e.allowClear); +} +function jhe(e, t, r) { + var n = t.cloneNode(!0), i = Object.create(e, { + target: { + value: n + }, + currentTarget: { + value: n + } + }); + return n.value = r, typeof t.selectionStart == "number" && typeof t.selectionEnd == "number" && (n.selectionStart = t.selectionStart, n.selectionEnd = t.selectionEnd), i; +} +function S2(e, t, r, n) { + if (r) { + var i = t; + if (t.type === "click") { + i = jhe(t, e, ""), r(i); + return; + } + if (e.type !== "file" && n !== void 0) { + i = jhe(t, e, n), r(i); + return; + } + r(i); + } +} +function Bvt(e, t) { + if (e) { + e.focus(t); + var r = t || {}, n = r.cursor; + if (n) { + var i = e.value.length; + switch (n) { + case "start": + e.setSelectionRange(0, 0); + break; + case "end": + e.setSelectionRange(i, i); + break; + default: + e.setSelectionRange(0, i); + } + } + } +} +var TTe = function(t) { + var r, n, i = t.inputElement, a = t.children, o = t.prefixCls, l = t.prefix, u = t.suffix, d = t.addonBefore, f = t.addonAfter, g = t.className, v = t.style, y = t.disabled, C = t.readOnly, A = t.focused, S = t.triggerFocus, _ = t.allowClear, E = t.value, I = t.handleReset, w = t.hidden, x = t.classes, b = t.classNames, R = t.dataAttrs, M = t.styles, O = t.components, P = a != null ? a : i, B = (O == null ? void 0 : O.affixWrapper) || "span", H = (O == null ? void 0 : O.groupWrapper) || "span", Y = (O == null ? void 0 : O.wrapper) || "span", X = (O == null ? void 0 : O.groupAddon) || "span", ee = $react.useRef(null), ae = function(Ae) { + var Fe; + (Fe = ee.current) !== null && Fe !== void 0 && Fe.contains(Ae.target) && (S == null || S()); + }, J = Fvt(t), ne = /* @__PURE__ */ $react.cloneElement(P, { + value: E, + className: Cn(P.props.className, !J && (b == null ? void 0 : b.variant)) || null + }); + if (J) { + var fe, de = null; + if (_) { + var Te, be = !y && !C && E, Ve = "".concat(o, "-clear-icon"), pe = Ja(_) === "object" && _ !== null && _ !== void 0 && _.clearIcon ? _.clearIcon : "✖"; + de = /* @__PURE__ */ dt("span", { + onClick: I, + onMouseDown: function(Ae) { + return Ae.preventDefault(); + }, + className: Cn(Ve, (Te = {}, Kt(Te, "".concat(Ve, "-hidden"), !be), Kt(Te, "".concat(Ve, "-has-suffix"), !!u), Te)), + role: "button", + tabIndex: -1, + children: pe + }); + } + var Be = "".concat(o, "-affix-wrapper"), Ue = Cn(Be, (fe = {}, Kt(fe, "".concat(o, "-disabled"), y), Kt(fe, "".concat(Be, "-disabled"), y), Kt(fe, "".concat(Be, "-focused"), A), Kt(fe, "".concat(Be, "-readonly"), C), Kt(fe, "".concat(Be, "-input-with-clear-btn"), u && _ && E), fe), x == null ? void 0 : x.affixWrapper, b == null ? void 0 : b.affixWrapper, b == null ? void 0 : b.variant), Qe = (u || _) && /* @__PURE__ */ gn("span", { + className: Cn("".concat(o, "-suffix"), b == null ? void 0 : b.suffix), + style: M == null ? void 0 : M.suffix, + children: [de, u] + }); + ne = /* @__PURE__ */ gn(B, rn(br({ + className: Ue, + style: M == null ? void 0 : M.affixWrapper, + onClick: ae + }, R == null ? void 0 : R.affixWrapper), { + ref: ee, + children: [l && /* @__PURE__ */ dt("span", { + className: Cn("".concat(o, "-prefix"), b == null ? void 0 : b.prefix), + style: M == null ? void 0 : M.prefix, + children: l + }), ne, Qe] + })); + } + if (Lvt(t)) { + var Re = "".concat(o, "-group"), Ne = "".concat(Re, "-addon"), Me = "".concat(Re, "-wrapper"), we = Cn("".concat(o, "-wrapper"), Re, x == null ? void 0 : x.wrapper, b == null ? void 0 : b.wrapper), He = Cn(Me, Kt({}, "".concat(Me, "-disabled"), y), x == null ? void 0 : x.group, b == null ? void 0 : b.groupWrapper); + ne = /* @__PURE__ */ dt(H, { + className: He, + children: /* @__PURE__ */ gn(Y, { + className: we, + children: [d && /* @__PURE__ */ dt(X, { + className: Ne, + children: d + }), ne, f && /* @__PURE__ */ dt(X, { + className: Ne, + children: f + })] + }) + }); + } + return /* @__PURE__ */ $react.cloneElement(ne, { + className: Cn((r = ne.props) === null || r === void 0 ? void 0 : r.className, g) || null, + style: fr(fr({}, (n = ne.props) === null || n === void 0 ? void 0 : n.style), v), + hidden: w + }); +}, Uvt = ["show"]; +function wTe(e, t) { + return $react.useMemo(function() { + var r = {}; + t && (r.show = Ja(t) === "object" && t.formatter ? t.formatter : !!t), r = fr(fr({}, r), e); + var n = r, i = n.show, a = xh(n, Uvt); + return fr(fr({}, a), {}, { + show: !!i, + showFormatter: typeof i == "function" ? i : void 0, + strategy: a.strategy || function(o) { + return o.length; + } + }); + }, [e, t]); +} +var jvt = ["autoComplete", "onChange", "onFocus", "onBlur", "onPressEnter", "onKeyDown", "prefixCls", "disabled", "htmlSize", "className", "maxLength", "suffix", "showCount", "count", "type", "classes", "classNames", "styles", "onCompositionStart", "onCompositionEnd"], $vt = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r = e.autoComplete, n = e.onChange, i = e.onFocus, a = e.onBlur, o = e.onPressEnter, l = e.onKeyDown, u = e.prefixCls, d = u === void 0 ? "rc-input" : u, f = e.disabled, g = e.htmlSize, v = e.className, y = e.maxLength, C = e.suffix, A = e.showCount, S = e.count, _ = e.type, E = _ === void 0 ? "text" : _, I = e.classes, w = e.classNames, x = e.styles, b = e.onCompositionStart, R = e.onCompositionEnd, M = xh(e, jvt), O = $react.useState(!1), P = Wr(O, 2), B = P[0], H = P[1], Y = $react.useRef(!1), X = $react.useRef(null), ee = function(ut) { + X.current && Bvt(X.current, ut); + }, ae = _B(e.defaultValue, { + value: e.value + }), J = Wr(ae, 2), ne = J[0], fe = J[1], de = ne == null ? "" : String(ne), Te = $react.useState(null), be = Wr(Te, 2), Ve = be[0], pe = be[1], Be = wTe(S, A), Ue = Be.max || y, Qe = Be.strategy(de), Re = !!Ue && Qe > Ue; + $react.useImperativeHandle(t, function() { + return { + focus: ee, + blur: function() { + var ut; + (ut = X.current) === null || ut === void 0 || ut.blur(); + }, + setSelectionRange: function(ut, rt, Ke) { + var ze; + (ze = X.current) === null || ze === void 0 || ze.setSelectionRange(ut, rt, Ke); + }, + select: function() { + var ut; + (ut = X.current) === null || ut === void 0 || ut.select(); + }, + input: X.current + }; + }), $react.useEffect(function() { + H(function(nt) { + return nt && f ? !1 : nt; + }); + }, [f]); + var Ne = function(ut, rt, Ke) { + var ze = rt; + if (!Y.current && Be.exceedFormatter && Be.max && Be.strategy(rt) > Be.max) { + if (ze = Be.exceedFormatter(rt, { + max: Be.max + }), rt !== ze) { + var qe, ct; + pe([((qe = X.current) === null || qe === void 0 ? void 0 : qe.selectionStart) || 0, ((ct = X.current) === null || ct === void 0 ? void 0 : ct.selectionEnd) || 0]); + } + } else if (Ke.source === "compositionEnd") + return; + fe(ze), X.current && S2(X.current, ut, n, ze); + }; + $react.useEffect(function() { + if (Ve) { + var nt; + (nt = X.current) === null || nt === void 0 || nt.setSelectionRange.apply(nt, Gn(Ve)); + } + }, [Ve]); + var Me = function(ut) { + Ne(ut, ut.target.value, { + source: "change" + }); + }, we = function(ut) { + Y.current = !1, Ne(ut, ut.currentTarget.value, { + source: "compositionEnd" + }), R == null || R(ut); + }, He = function(ut) { + o && ut.key === "Enter" && o(ut), l == null || l(ut); + }, Ie = function(ut) { + H(!0), i == null || i(ut); + }, Ae = function(ut) { + H(!1), a == null || a(ut); + }, Fe = function(ut) { + fe(""), ee(), X.current && S2(X.current, ut, n); + }, $e = Re && "".concat(d, "-out-of-range"), lt = function() { + var ut = BD(e, [ + "prefixCls", + "onPressEnter", + "addonBefore", + "addonAfter", + "prefix", + "suffix", + "allowClear", + // Input elements must be either controlled or uncontrolled, + // specify either the value prop, or the defaultValue prop, but not both. + "defaultValue", + "showCount", + "count", + "classes", + "htmlSize", + "styles", + "classNames" + ]); + return /* @__PURE__ */ dt("input", rn(br({ + autoComplete: r + }, ut), { + onChange: Me, + onFocus: Ie, + onBlur: Ae, + onKeyDown: He, + className: Cn(d, Kt({}, "".concat(d, "-disabled"), f), w == null ? void 0 : w.input), + style: x == null ? void 0 : x.input, + ref: X, + size: g, + type: E, + onCompositionStart: function(Ke) { + Y.current = !0, b == null || b(Ke); + }, + onCompositionEnd: we + })); + }, it = function() { + var ut = Number(Ue) > 0; + if (C || Be.show) { + var rt = Be.showFormatter ? Be.showFormatter({ + value: de, + count: Qe, + maxLength: Ue + }) : "".concat(Qe).concat(ut ? " / ".concat(Ue) : ""); + return /* @__PURE__ */ gn(Ta, { + children: [Be.show && /* @__PURE__ */ dt("span", { + className: Cn("".concat(d, "-show-count-suffix"), Kt({}, "".concat(d, "-show-count-has-suffix"), !!C), w == null ? void 0 : w.count), + style: fr({}, x == null ? void 0 : x.count), + children: rt + }), C] + }); + } + return null; + }; + return /* @__PURE__ */ dt(TTe, rn(br({}, M), { + prefixCls: d, + className: Cn(v, $e), + handleReset: Fe, + value: de, + focused: B, + triggerFocus: ee, + suffix: it(), + disabled: f, + classes: I, + classNames: w, + styles: x, + children: lt() + })); +}); +function JG(e, t, r) { + return Cn({ + [`${e}-status-success`]: t === "success", + [`${e}-status-warning`]: t === "warning", + [`${e}-status-error`]: t === "error", + [`${e}-status-validating`]: t === "validating", + [`${e}-has-feedback`]: r + }); +} +const ITe = (e, t) => t || e; +function xTe(e, t) { + const r = $react.useRef([]), n = () => { + r.current.push(setTimeout(() => { + var i, a, o, l; + !((i = e.current) === null || i === void 0) && i.input && ((a = e.current) === null || a === void 0 ? void 0 : a.input.getAttribute("type")) === "password" && (!((o = e.current) === null || o === void 0) && o.input.hasAttribute("value")) && ((l = e.current) === null || l === void 0 || l.input.removeAttribute("value")); + })); + }; + return $react.useEffect(() => (t && n(), () => r.current.forEach((i) => { + i && clearTimeout(i); + })), []), n; +} +function Vvt(e) { + return !!(e.prefix || e.suffix || e.allowClear || e.showCount); +} +const zvt = ["outlined", "borderless", "filled"], Hvt = function(e) { + let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; + const r = $react.useContext(GCe); + let n; + typeof e != "undefined" ? n = e : t === !1 ? n = "borderless" : n = r != null ? r : "outlined"; + const i = zvt.includes(n); + return [n, i]; +}, ATe = Hvt, Wvt = (e) => { + let t; + return typeof e == "object" && (e != null && e.clearIcon) ? t = e : e && (t = { + clearIcon: /* @__PURE__ */ dt(n7, {}) + }), t; +}, Gvt = Wvt; +var Yvt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +function Xvt(e, t) { + if (!e) + return; + e.focus(t); + const { + cursor: r + } = t || {}; + if (r) { + const n = e.value.length; + switch (r) { + case "start": + e.setSelectionRange(0, 0); + break; + case "end": + e.setSelectionRange(n, n); + break; + default: + e.setSelectionRange(0, n); + break; + } + } +} +const Kvt = /* @__PURE__ */ $react.forwardRef((e, t) => { + var r; + const { + prefixCls: n, + bordered: i = !0, + status: a, + size: o, + disabled: l, + onBlur: u, + onFocus: d, + suffix: f, + allowClear: g, + addonAfter: v, + addonBefore: y, + className: C, + style: A, + styles: S, + rootClassName: _, + onChange: E, + classNames: I, + variant: w + } = e, x = Yvt(e, ["prefixCls", "bordered", "status", "size", "disabled", "onBlur", "onFocus", "suffix", "allowClear", "addonAfter", "addonBefore", "className", "style", "styles", "rootClassName", "onChange", "classNames", "variant"]), { + getPrefixCls: b, + direction: R, + input: M + } = $react.useContext(Sl), O = b("input", n), P = $react.useRef(null), B = GD(O), [H, Y, X] = a7(O, B), { + compactSize: ee, + compactItemClassnames: ae + } = GY(O, R), J = HD((Ie) => { + var Ae; + return (Ae = o != null ? o : ee) !== null && Ae !== void 0 ? Ae : Ie; + }), ne = $react.useContext(UD), fe = l != null ? l : ne, { + status: de, + hasFeedback: Te, + feedbackIcon: be + } = $react.useContext(lv), Ve = ITe(de, a), pe = Vvt(e) || !!Te; + $react.useRef(pe); + const Be = xTe(P, !0), Ue = (Ie) => { + Be(), u == null || u(Ie); + }, Qe = (Ie) => { + Be(), d == null || d(Ie); + }, Re = (Ie) => { + Be(), E == null || E(Ie); + }, Ne = (Te || f) && /* @__PURE__ */ gn(Ta, { + children: [f, Te && be] + }), Me = Gvt(g), [we, He] = ATe(w, i); + return H( + /* @__PURE__ */ dt($vt, br({}, Object.assign({ + ref: M0(t, P), + prefixCls: O, + autoComplete: M == null ? void 0 : M.autoComplete + }, x, { + disabled: fe, + onBlur: Ue, + onFocus: Qe, + style: Object.assign(Object.assign({}, M == null ? void 0 : M.style), A), + styles: Object.assign(Object.assign({}, M == null ? void 0 : M.styles), S), + suffix: Ne, + allowClear: Me, + className: Cn(C, _, X, B, ae, M == null ? void 0 : M.className), + onChange: Re, + addonAfter: v && /* @__PURE__ */ dt(kG, { + children: /* @__PURE__ */ dt(uhe, { + override: !0, + status: !0, + children: v + }) + }), + addonBefore: y && /* @__PURE__ */ dt(kG, { + children: /* @__PURE__ */ dt(uhe, { + override: !0, + status: !0, + children: y + }) + }), + classNames: Object.assign(Object.assign(Object.assign({}, I), M == null ? void 0 : M.classNames), { + input: Cn({ + [`${O}-sm`]: J === "small", + [`${O}-lg`]: J === "large", + [`${O}-rtl`]: R === "rtl" + }, I == null ? void 0 : I.input, (r = M == null ? void 0 : M.classNames) === null || r === void 0 ? void 0 : r.input, Y), + variant: Cn({ + [`${O}-${we}`]: He + }, JG(O, Ve)), + affixWrapper: Cn({ + [`${O}-affix-wrapper-sm`]: J === "small", + [`${O}-affix-wrapper-lg`]: J === "large", + [`${O}-affix-wrapper-rtl`]: R === "rtl" + }, Y), + wrapper: Cn({ + [`${O}-group-rtl`]: R === "rtl" + }, Y), + groupWrapper: Cn({ + [`${O}-group-wrapper-sm`]: J === "small", + [`${O}-group-wrapper-lg`]: J === "large", + [`${O}-group-wrapper-rtl`]: R === "rtl", + [`${O}-group-wrapper-${we}`]: He + }, JG(`${O}-group-wrapper`, Ve, Te), Y) + }) + }))) + ); +}), o7 = Kvt; +var Zvt = { icon: { tag: "svg", attrs: { viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z" } }, { tag: "path", attrs: { d: "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z" } }] }, name: "eye-invisible", theme: "outlined" }; +const qvt = Zvt; +var Jvt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: qvt + })); +}, Qvt = /* @__PURE__ */ $react.forwardRef(Jvt); +const emt = Qvt; +var tmt = { icon: { tag: "svg", attrs: { viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z" } }] }, name: "eye", theme: "outlined" }; +const rmt = tmt; +var nmt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: rmt + })); +}, imt = /* @__PURE__ */ $react.forwardRef(nmt); +const amt = imt; +var omt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const smt = (e) => e ? /* @__PURE__ */ dt(amt, {}) : /* @__PURE__ */ dt(emt, {}), lmt = { + click: "onClick", + hover: "onMouseOver" +}, cmt = /* @__PURE__ */ $react.forwardRef((e, t) => { + const { + visibilityToggle: r = !0 + } = e, n = typeof r == "object" && r.visible !== void 0, [i, a] = $react.useState(() => n ? r.visible : !1), o = $react.useRef(null); + $react.useEffect(() => { + n && a(r.visible); + }, [n, r]); + const l = xTe(o), u = () => { + const { + disabled: x + } = e; + x || (i && l(), a((b) => { + var R; + const M = !b; + return typeof r == "object" && ((R = r.onVisibleChange) === null || R === void 0 || R.call(r, M)), M; + })); + }, d = (x) => { + const { + action: b = "click", + iconRender: R = smt + } = e, M = lmt[b] || "", O = R(i), P = { + [M]: u, + className: `${x}-icon`, + key: "passwordIcon", + onMouseDown: (B) => { + B.preventDefault(); + }, + onMouseUp: (B) => { + B.preventDefault(); + } + }; + return /* @__PURE__ */ $react.cloneElement(/* @__PURE__ */ $react.isValidElement(O) ? O : /* @__PURE__ */ dt("span", { + children: O + }), P); + }, { + className: f, + prefixCls: g, + inputPrefixCls: v, + size: y + } = e, C = omt(e, ["className", "prefixCls", "inputPrefixCls", "size"]), { + getPrefixCls: A + } = $react.useContext(Sl), S = A("input", v), _ = A("input-password", g), E = r && d(_), I = Cn(_, f, { + [`${_}-${y}`]: !!y + }), w = Object.assign(Object.assign({}, BD(C, ["suffix", "iconRender", "visibilityToggle"])), { + type: i ? "text" : "password", + className: I, + prefixCls: S, + suffix: E + }); + return y && (w.size = y), /* @__PURE__ */ dt(o7, br({}, Object.assign({ + ref: M0(t, o) + }, w))); +}), umt = cmt; +var hmt = { icon: { tag: "svg", attrs: { viewBox: "64 64 896 896", focusable: "false" }, children: [{ tag: "path", attrs: { d: "M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z" } }] }, name: "search", theme: "outlined" }; +const dmt = hmt; +var fmt = function(t, r) { + return /* @__PURE__ */ dt(k0, rn(br({}, t), { + ref: r, + icon: dmt + })); +}, pmt = /* @__PURE__ */ $react.forwardRef(fmt); +const gmt = pmt; +var vmt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const mmt = /* @__PURE__ */ $react.forwardRef((e, t) => { + const { + prefixCls: r, + inputPrefixCls: n, + className: i, + size: a, + suffix: o, + enterButton: l = !1, + addonAfter: u, + loading: d, + disabled: f, + onSearch: g, + onChange: v, + onCompositionStart: y, + onCompositionEnd: C + } = e, A = vmt(e, ["prefixCls", "inputPrefixCls", "className", "size", "suffix", "enterButton", "addonAfter", "loading", "disabled", "onSearch", "onChange", "onCompositionStart", "onCompositionEnd"]), { + getPrefixCls: S, + direction: _ + } = $react.useContext(Sl), E = $react.useRef(!1), I = S("input-search", r), w = S("input", n), { + compactSize: x + } = GY(I, _), b = HD((de) => { + var Te; + return (Te = a != null ? a : x) !== null && Te !== void 0 ? Te : de; + }), R = $react.useRef(null), M = (de) => { + de && de.target && de.type === "click" && g && g(de.target.value, de, { + source: "clear" + }), v && v(de); + }, O = (de) => { + var Te; + document.activeElement === ((Te = R.current) === null || Te === void 0 ? void 0 : Te.input) && de.preventDefault(); + }, P = (de) => { + var Te, be; + g && g((be = (Te = R.current) === null || Te === void 0 ? void 0 : Te.input) === null || be === void 0 ? void 0 : be.value, de, { + source: "input" + }); + }, B = (de) => { + E.current || d || P(de); + }, H = typeof l == "boolean" ? /* @__PURE__ */ dt(gmt, {}) : null, Y = `${I}-button`; + let X; + const ee = l || {}, ae = ee.type && ee.type.__ANT_BUTTON === !0; + ae || ee.type === "button" ? X = Kw(ee, Object.assign({ + onMouseDown: O, + onClick: (de) => { + var Te, be; + (be = (Te = ee == null ? void 0 : ee.props) === null || Te === void 0 ? void 0 : Te.onClick) === null || be === void 0 || be.call(Te, de), P(de); + }, + key: "enterButton" + }, ae ? { + className: Y, + size: b + } : {})) : X = /* @__PURE__ */ dt(IB, { + className: Y, + type: l ? "primary" : void 0, + size: b, + disabled: f, + onMouseDown: O, + onClick: P, + loading: d, + icon: H, + children: l + }, "enterButton"), u && (X = [X, Kw(u, { + key: "addonAfter" + })]); + const J = Cn(I, { + [`${I}-rtl`]: _ === "rtl", + [`${I}-${b}`]: !!b, + [`${I}-with-button`]: !!l + }, i), ne = (de) => { + E.current = !0, y == null || y(de); + }, fe = (de) => { + E.current = !1, C == null || C(de); + }; + return /* @__PURE__ */ dt(o7, br({}, Object.assign({ + ref: M0(R, t), + onPressEnter: B + }, A, { + size: b, + onCompositionStart: ne, + onCompositionEnd: fe, + prefixCls: w, + addonAfter: X, + suffix: o, + onChange: M, + className: J, + disabled: f + }))); +}), ymt = mmt; +var _mt = ` + min-height:0 !important; + max-height:none !important; + height:0 !important; + visibility:hidden !important; + overflow:hidden !important; + position:absolute !important; + z-index:-1000 !important; + top:0 !important; + right:0 !important; + pointer-events: none !important; +`, Smt = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "font-variant", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing", "word-break", "white-space"], g4 = {}, of; +function bmt(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, r = e.getAttribute("id") || e.getAttribute("data-reactid") || e.getAttribute("name"); + if (t && g4[r]) + return g4[r]; + var n = window.getComputedStyle(e), i = n.getPropertyValue("box-sizing") || n.getPropertyValue("-moz-box-sizing") || n.getPropertyValue("-webkit-box-sizing"), a = parseFloat(n.getPropertyValue("padding-bottom")) + parseFloat(n.getPropertyValue("padding-top")), o = parseFloat(n.getPropertyValue("border-bottom-width")) + parseFloat(n.getPropertyValue("border-top-width")), l = Smt.map(function(d) { + return "".concat(d, ":").concat(n.getPropertyValue(d)); + }).join(";"), u = { + sizingStyle: l, + paddingSize: a, + borderSize: o, + boxSizing: i + }; + return t && r && (g4[r] = u), u; +} +function Emt(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; + of || (of = document.createElement("textarea"), of.setAttribute("tab-index", "-1"), of.setAttribute("aria-hidden", "true"), document.body.appendChild(of)), e.getAttribute("wrap") ? of.setAttribute("wrap", e.getAttribute("wrap")) : of.removeAttribute("wrap"); + var i = bmt(e, t), a = i.paddingSize, o = i.borderSize, l = i.boxSizing, u = i.sizingStyle; + of.setAttribute("style", "".concat(u, ";").concat(_mt)), of.value = e.value || e.placeholder || ""; + var d = void 0, f = void 0, g, v = of.scrollHeight; + if (l === "border-box" ? v += o : l === "content-box" && (v -= a), r !== null || n !== null) { + of.value = " "; + var y = of.scrollHeight - a; + r !== null && (d = y * r, l === "border-box" && (d = d + a + o), v = Math.max(d, v)), n !== null && (f = y * n, l === "border-box" && (f = f + a + o), g = v > f ? "" : "hidden", v = Math.min(f, v)); + } + var C = { + height: v, + overflowY: g, + resize: "none" + }; + return d && (C.minHeight = d), f && (C.maxHeight = f), C; +} +var Cmt = ["prefixCls", "onPressEnter", "defaultValue", "value", "autoSize", "onResize", "className", "style", "disabled", "onChange", "onInternalAutoSize"], v4 = 0, m4 = 1, y4 = 2, Tmt = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r = e, n = r.prefixCls; + r.onPressEnter; + var i = r.defaultValue, a = r.value, o = r.autoSize, l = r.onResize, u = r.className, d = r.style, f = r.disabled, g = r.onChange; + r.onInternalAutoSize; + var v = xh(r, Cmt), y = _B(i, { + value: a, + postState: function(pe) { + return pe != null ? pe : ""; + } + }), C = Wr(y, 2), A = C[0], S = C[1], _ = function(pe) { + S(pe.target.value), g == null || g(pe); + }, E = $react.useRef(); + $react.useImperativeHandle(t, function() { + return { + textArea: E.current + }; + }); + var I = $react.useMemo(function() { + return o && Ja(o) === "object" ? [o.minRows, o.maxRows] : []; + }, [o]), w = Wr(I, 2), x = w[0], b = w[1], R = !!o, M = function() { + try { + if (document.activeElement === E.current) { + var pe = E.current, Be = pe.selectionStart, Ue = pe.selectionEnd, Qe = pe.scrollTop; + E.current.setSelectionRange(Be, Ue), E.current.scrollTop = Qe; + } + } catch (Re) { + } + }, O = $react.useState(y4), P = Wr(O, 2), B = P[0], H = P[1], Y = $react.useState(), X = Wr(Y, 2), ee = X[0], ae = X[1], J = function() { + H(v4); + }; + Zl(function() { + R && J(); + }, [a, x, b, R]), Zl(function() { + if (B === v4) + H(m4); + else if (B === m4) { + var Ve = Emt(E.current, !1, x, b); + H(y4), ae(Ve); + } else + M(); + }, [B]); + var ne = $react.useRef(), fe = function() { + yd.cancel(ne.current); + }, de = function(pe) { + B === y4 && (l == null || l(pe), o && (fe(), ne.current = yd(function() { + J(); + }))); + }; + $react.useEffect(function() { + return fe; + }, []); + var Te = R ? ee : null, be = fr(fr({}, d), Te); + return (B === v4 || B === m4) && (be.overflowY = "hidden", be.overflowX = "hidden"), /* @__PURE__ */ dt(AB, { + onResize: de, + disabled: !(o || l), + children: /* @__PURE__ */ dt("textarea", rn(br({}, v), { + ref: E, + style: be, + className: Cn(n, u, Kt({}, "".concat(n, "-disabled"), f)), + disabled: f, + value: A, + onChange: _ + })) + }); +}), wmt = ["defaultValue", "value", "onFocus", "onBlur", "onChange", "allowClear", "maxLength", "onCompositionStart", "onCompositionEnd", "suffix", "prefixCls", "showCount", "count", "className", "style", "disabled", "hidden", "classNames", "styles", "onResize"], Imt = /* @__PURE__ */ $react.forwardRef(function(e, t) { + var r, n, i = e.defaultValue, a = e.value, o = e.onFocus, l = e.onBlur, u = e.onChange, d = e.allowClear, f = e.maxLength, g = e.onCompositionStart, v = e.onCompositionEnd, y = e.suffix, C = e.prefixCls, A = C === void 0 ? "rc-textarea" : C, S = e.showCount, _ = e.count, E = e.className, I = e.style, w = e.disabled, x = e.hidden, b = e.classNames, R = e.styles, M = e.onResize, O = xh(e, wmt), P = _B(i, { + value: a, + defaultValue: i + }), B = Wr(P, 2), H = B[0], Y = B[1], X = H == null ? "" : String(H), ee = $react.useState(!1), ae = Wr(ee, 2), J = ae[0], ne = ae[1], fe = $react.useRef(!1), de = $react.useState(null), Te = Wr(de, 2), be = Te[0], Ve = Te[1], pe = $react.useRef(null), Be = function() { + var Yt; + return (Yt = pe.current) === null || Yt === void 0 ? void 0 : Yt.textArea; + }, Ue = function() { + Be().focus(); + }; + $react.useImperativeHandle(t, function() { + return { + resizableTextArea: pe.current, + focus: Ue, + blur: function() { + Be().blur(); + } + }; + }), $react.useEffect(function() { + ne(function(Nt) { + return !w && Nt; + }); + }, [w]); + var Qe = $react.useState(null), Re = Wr(Qe, 2), Ne = Re[0], Me = Re[1]; + $react.useEffect(function() { + if (Ne) { + var Nt; + (Nt = Be()).setSelectionRange.apply(Nt, Gn(Ne)); + } + }, [Ne]); + var we = wTe(_, S), He = (r = we.max) !== null && r !== void 0 ? r : f, Ie = Number(He) > 0, Ae = we.strategy(X), Fe = !!He && Ae > He, $e = function(Yt, tr) { + var Ct = tr; + !fe.current && we.exceedFormatter && we.max && we.strategy(tr) > we.max && (Ct = we.exceedFormatter(tr, { + max: we.max + }), tr !== Ct && Me([Be().selectionStart || 0, Be().selectionEnd || 0])), Y(Ct), S2(Yt.currentTarget, Yt, u, Ct); + }, lt = function(Yt) { + fe.current = !0, g == null || g(Yt); + }, it = function(Yt) { + fe.current = !1, $e(Yt, Yt.currentTarget.value), v == null || v(Yt); + }, nt = function(Yt) { + $e(Yt, Yt.target.value); + }, ut = function(Yt) { + var tr = O.onPressEnter, Ct = O.onKeyDown; + Yt.key === "Enter" && tr && tr(Yt), Ct == null || Ct(Yt); + }, rt = function(Yt) { + ne(!0), o == null || o(Yt); + }, Ke = function(Yt) { + ne(!1), l == null || l(Yt); + }, ze = function(Yt) { + Y(""), Ue(), S2(Be(), Yt, u); + }, qe = y, ct; + we.show && (we.showFormatter ? ct = we.showFormatter({ + value: X, + count: Ae, + maxLength: He + }) : ct = "".concat(Ae).concat(Ie ? " / ".concat(He) : ""), qe = /* @__PURE__ */ gn(Ta, { + children: [qe, /* @__PURE__ */ dt("span", { + className: Cn("".concat(A, "-data-count"), b == null ? void 0 : b.count), + style: R == null ? void 0 : R.count, + children: ct + })] + })); + var ft = function(Yt) { + var tr; + M == null || M(Yt), (tr = Be()) !== null && tr !== void 0 && tr.style.height && Ve(!0); + }, _t = !O.autoSize && !S && !d; + return /* @__PURE__ */ dt(TTe, { + value: X, + allowClear: d, + handleReset: ze, + suffix: qe, + prefixCls: A, + classNames: fr(fr({}, b), {}, { + affixWrapper: Cn(b == null ? void 0 : b.affixWrapper, (n = {}, Kt(n, "".concat(A, "-show-count"), S), Kt(n, "".concat(A, "-textarea-allow-clear"), d), n)) + }), + disabled: w, + focused: J, + className: Cn(E, Fe && "".concat(A, "-out-of-range")), + style: fr(fr({}, I), be && !_t ? { + height: "auto" + } : {}), + dataAttrs: { + affixWrapper: { + "data-count": typeof ct == "string" ? ct : void 0 + } + }, + hidden: x, + children: /* @__PURE__ */ dt(Tmt, rn(br({}, O), { + maxLength: f, + onKeyDown: ut, + onChange: nt, + onFocus: rt, + onBlur: Ke, + onCompositionStart: lt, + onCompositionEnd: it, + className: Cn(b == null ? void 0 : b.textarea), + style: fr(fr({}, R == null ? void 0 : R.textarea), {}, { + resize: I == null ? void 0 : I.resize + }), + disabled: w, + prefixCls: A, + onResize: ft, + ref: pe + })) + }); +}), xmt = globalThis && globalThis.__rest || function(e, t) { + var r = {}; + for (var n in e) + Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); + if (e != null && typeof Object.getOwnPropertySymbols == "function") + for (var i = 0, n = Object.getOwnPropertySymbols(e); i < n.length; i++) + t.indexOf(n[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[i]) && (r[n[i]] = e[n[i]]); + return r; +}; +const Amt = /* @__PURE__ */ $react.forwardRef((e, t) => { + var r; + const { + prefixCls: n, + bordered: i = !0, + size: a, + disabled: o, + status: l, + allowClear: u, + classNames: d, + rootClassName: f, + className: g, + variant: v + } = e, y = xmt(e, ["prefixCls", "bordered", "size", "disabled", "status", "allowClear", "classNames", "rootClassName", "className", "variant"]), { + getPrefixCls: C, + direction: A + } = $react.useContext(Sl), S = HD(a), _ = $react.useContext(UD), E = o != null ? o : _, { + status: I, + hasFeedback: w, + feedbackIcon: x + } = $react.useContext(lv), b = ITe(I, l), R = $react.useRef(null); + $react.useImperativeHandle(t, () => { + var ae; + return { + resizableTextArea: (ae = R.current) === null || ae === void 0 ? void 0 : ae.resizableTextArea, + focus: (J) => { + var ne, fe; + Xvt((fe = (ne = R.current) === null || ne === void 0 ? void 0 : ne.resizableTextArea) === null || fe === void 0 ? void 0 : fe.textArea, J); + }, + blur: () => { + var J; + return (J = R.current) === null || J === void 0 ? void 0 : J.blur(); + } + }; + }); + const M = C("input", n); + let O; + typeof u == "object" && (u != null && u.clearIcon) ? O = u : u && (O = { + clearIcon: /* @__PURE__ */ dt(n7, {}) + }); + const P = GD(M), [B, H, Y] = a7(M, P), [X, ee] = ATe(v, i); + return B( + /* @__PURE__ */ dt(Imt, br({}, Object.assign({}, y, { + disabled: E, + allowClear: O, + className: Cn(Y, P, g, f), + classNames: Object.assign(Object.assign({}, d), { + textarea: Cn({ + [`${M}-sm`]: S === "small", + [`${M}-lg`]: S === "large" + }, H, d == null ? void 0 : d.textarea), + variant: Cn({ + [`${M}-${X}`]: ee + }, JG(M, b)), + affixWrapper: Cn(`${M}-textarea-affix-wrapper`, { + [`${M}-affix-wrapper-rtl`]: A === "rtl", + [`${M}-affix-wrapper-sm`]: S === "small", + [`${M}-affix-wrapper-lg`]: S === "large", + [`${M}-textarea-show-count`]: e.showCount || ((r = e.count) === null || r === void 0 ? void 0 : r.show) + }, H) + }), + prefixCls: M, + suffix: w && /* @__PURE__ */ dt("span", { + className: `${M}-textarea-suffix`, + children: x + }), + ref: R + }))) + ); +}), Rmt = Amt, XD = o7; +XD.Group = Nvt; +XD.Search = ymt; +XD.TextArea = Rmt; +XD.Password = umt; +const YP = XD; +var RB, hi, RTe, DTe, qw, Ob, $he, OTe, MTe, b2 = {}, kTe = [], Dmt = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; +function n0(e, t) { + for (var r in t) + e[r] = t[r]; + return e; +} +function PTe(e) { + var t = e.parentNode; + t && t.removeChild(e); +} +function De(e, t, r) { + var n, i, a, o = {}; + for (a in t) + a == "key" ? n = t[a] : a == "ref" ? i = t[a] : o[a] = t[a]; + if (arguments.length > 2 && (o.children = arguments.length > 3 ? RB.call(arguments, 2) : r), typeof e == "function" && e.defaultProps != null) + for (a in e.defaultProps) + o[a] === void 0 && (o[a] = e.defaultProps[a]); + return WN(e, o, n, i, null); +} +function WN(e, t, r, n, i) { + var a = { type: e, props: t, key: r, ref: n, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: i == null ? ++RTe : i }; + return i == null && hi.vnode != null && hi.vnode(a), a; +} +function Ga() { + return { current: null }; +} +function Di(e) { + return e.children; +} +function Omt(e, t, r, n, i) { + var a; + for (a in r) + a === "children" || a === "key" || a in t || E2(e, a, null, r[a], n); + for (a in t) + i && typeof t[a] != "function" || a === "children" || a === "key" || a === "value" || a === "checked" || r[a] === t[a] || E2(e, a, t[a], r[a], n); +} +function Vhe(e, t, r) { + t[0] === "-" ? e.setProperty(t, r == null ? "" : r) : e[t] = r == null ? "" : typeof r != "number" || Dmt.test(t) ? r : r + "px"; +} +function E2(e, t, r, n, i) { + var a; + e: + if (t === "style") + if (typeof r == "string") + e.style.cssText = r; + else { + if (typeof n == "string" && (e.style.cssText = n = ""), n) + for (t in n) + r && t in r || Vhe(e.style, t, ""); + if (r) + for (t in r) + n && r[t] === n[t] || Vhe(e.style, t, r[t]); + } + else if (t[0] === "o" && t[1] === "n") + a = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + a] = r, r ? n || e.addEventListener(t, a ? Hhe : zhe, a) : e.removeEventListener(t, a ? Hhe : zhe, a); + else if (t !== "dangerouslySetInnerHTML") { + if (i) + t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); + else if (t !== "width" && t !== "height" && t !== "href" && t !== "list" && t !== "form" && t !== "tabIndex" && t !== "download" && t in e) + try { + e[t] = r == null ? "" : r; + break e; + } catch (o) { + } + typeof r == "function" || (r == null || r === !1 && t.indexOf("-") == -1 ? e.removeAttribute(t) : e.setAttribute(t, r)); + } +} +function zhe(e) { + qw = !0; + try { + return this.l[e.type + !1](hi.event ? hi.event(e) : e); + } finally { + qw = !1; + } +} +function Hhe(e) { + qw = !0; + try { + return this.l[e.type + !0](hi.event ? hi.event(e) : e); + } finally { + qw = !1; + } +} +function pd(e, t) { + this.props = e, this.context = t; +} +function YR(e, t) { + if (t == null) + return e.__ ? YR(e.__, e.__.__k.indexOf(e) + 1) : null; + for (var r; t < e.__k.length; t++) + if ((r = e.__k[t]) != null && r.__e != null) + return r.__e; + return typeof e.type == "function" ? YR(e) : null; +} +function NTe(e) { + var t, r; + if ((e = e.__) != null && e.__c != null) { + for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++) + if ((r = e.__k[t]) != null && r.__e != null) { + e.__e = e.__c.base = r.__e; + break; + } + return NTe(e); + } +} +function Mmt(e) { + qw ? setTimeout(e) : OTe(e); +} +function QG(e) { + (!e.__d && (e.__d = !0) && Ob.push(e) && !C2.__r++ || $he !== hi.debounceRendering) && (($he = hi.debounceRendering) || Mmt)(C2); +} +function C2() { + var e, t, r, n, i, a, o, l; + for (Ob.sort(function(u, d) { + return u.__v.__b - d.__v.__b; + }); e = Ob.shift(); ) + e.__d && (t = Ob.length, n = void 0, i = void 0, o = (a = (r = e).__v).__e, (l = r.__P) && (n = [], (i = n0({}, a)).__v = a.__v + 1, s7(l, a, i, r.__n, l.ownerSVGElement !== void 0, a.__h != null ? [o] : null, n, o == null ? YR(a) : o, a.__h), jTe(n, a), a.__e != o && NTe(a)), Ob.length > t && Ob.sort(function(u, d) { + return u.__v.__b - d.__v.__b; + })); + C2.__r = 0; +} +function LTe(e, t, r, n, i, a, o, l, u, d) { + var f, g, v, y, C, A, S, _ = n && n.__k || kTe, E = _.length; + for (r.__k = [], f = 0; f < t.length; f++) + if ((y = r.__k[f] = (y = t[f]) == null || typeof y == "boolean" ? null : typeof y == "string" || typeof y == "number" || typeof y == "bigint" ? WN(null, y, null, null, y) : Array.isArray(y) ? WN(Di, { children: y }, null, null, null) : y.__b > 0 ? WN(y.type, y.props, y.key, y.ref ? y.ref : null, y.__v) : y) != null) { + if (y.__ = r, y.__b = r.__b + 1, (v = _[f]) === null || v && y.key == v.key && y.type === v.type) + _[f] = void 0; + else + for (g = 0; g < E; g++) { + if ((v = _[g]) && y.key == v.key && y.type === v.type) { + _[g] = void 0; + break; + } + v = null; + } + s7(e, y, v = v || b2, i, a, o, l, u, d), C = y.__e, (g = y.ref) && v.ref != g && (S || (S = []), v.ref && S.push(v.ref, null, y), S.push(g, y.__c || C, y)), C != null ? (A == null && (A = C), typeof y.type == "function" && y.__k === v.__k ? y.__d = u = FTe(y, u, e) : u = BTe(e, y, v, _, C, u), typeof r.type == "function" && (r.__d = u)) : u && v.__e == u && u.parentNode != e && (u = YR(v)); + } + for (r.__e = A, f = E; f--; ) + _[f] != null && (typeof r.type == "function" && _[f].__e != null && _[f].__e == r.__d && (r.__d = UTe(n).nextSibling), VTe(_[f], _[f])); + if (S) + for (f = 0; f < S.length; f++) + $Te(S[f], S[++f], S[++f]); +} +function FTe(e, t, r) { + for (var n, i = e.__k, a = 0; i && a < i.length; a++) + (n = i[a]) && (n.__ = e, t = typeof n.type == "function" ? FTe(n, t, r) : BTe(r, n, n, i, n.__e, t)); + return t; +} +function T2(e, t) { + return t = t || [], e == null || typeof e == "boolean" || (Array.isArray(e) ? e.some(function(r) { + T2(r, t); + }) : t.push(e)), t; +} +function BTe(e, t, r, n, i, a) { + var o, l, u; + if (t.__d !== void 0) + o = t.__d, t.__d = void 0; + else if (r == null || i != a || i.parentNode == null) + e: + if (a == null || a.parentNode !== e) + e.appendChild(i), o = null; + else { + for (l = a, u = 0; (l = l.nextSibling) && u < n.length; u += 1) + if (l == i) + break e; + e.insertBefore(i, a), o = a; + } + return o !== void 0 ? o : i.nextSibling; +} +function UTe(e) { + var t, r, n; + if (e.type == null || typeof e.type == "string") + return e.__e; + if (e.__k) { + for (t = e.__k.length - 1; t >= 0; t--) + if ((r = e.__k[t]) && (n = UTe(r))) + return n; + } + return null; +} +function s7(e, t, r, n, i, a, o, l, u) { + var d, f, g, v, y, C, A, S, _, E, I, w, x, b, R, M = t.type; + if (t.constructor !== void 0) + return null; + r.__h != null && (u = r.__h, l = t.__e = r.__e, t.__h = null, a = [l]), (d = hi.__b) && d(t); + try { + e: + if (typeof M == "function") { + if (S = t.props, _ = (d = M.contextType) && n[d.__c], E = d ? _ ? _.props.value : d.__ : n, r.__c ? A = (f = t.__c = r.__c).__ = f.__E : ("prototype" in M && M.prototype.render ? t.__c = f = new M(S, E) : (t.__c = f = new pd(S, E), f.constructor = M, f.render = Pmt), _ && _.sub(f), f.props = S, f.state || (f.state = {}), f.context = E, f.__n = n, g = f.__d = !0, f.__h = [], f._sb = []), f.__s == null && (f.__s = f.state), M.getDerivedStateFromProps != null && (f.__s == f.state && (f.__s = n0({}, f.__s)), n0(f.__s, M.getDerivedStateFromProps(S, f.__s))), v = f.props, y = f.state, f.__v = t, g) + M.getDerivedStateFromProps == null && f.componentWillMount != null && f.componentWillMount(), f.componentDidMount != null && f.__h.push(f.componentDidMount); + else { + if (M.getDerivedStateFromProps == null && S !== v && f.componentWillReceiveProps != null && f.componentWillReceiveProps(S, E), !f.__e && f.shouldComponentUpdate != null && f.shouldComponentUpdate(S, f.__s, E) === !1 || t.__v === r.__v) { + for (t.__v !== r.__v && (f.props = S, f.state = f.__s, f.__d = !1), t.__e = r.__e, t.__k = r.__k, t.__k.forEach(function(O) { + O && (O.__ = t); + }), I = 0; I < f._sb.length; I++) + f.__h.push(f._sb[I]); + f._sb = [], f.__h.length && o.push(f); + break e; + } + f.componentWillUpdate != null && f.componentWillUpdate(S, f.__s, E), f.componentDidUpdate != null && f.__h.push(function() { + f.componentDidUpdate(v, y, C); + }); + } + if (f.context = E, f.props = S, f.__P = e, w = hi.__r, x = 0, "prototype" in M && M.prototype.render) { + for (f.state = f.__s, f.__d = !1, w && w(t), d = f.render(f.props, f.state, f.context), b = 0; b < f._sb.length; b++) + f.__h.push(f._sb[b]); + f._sb = []; + } else + do + f.__d = !1, w && w(t), d = f.render(f.props, f.state, f.context), f.state = f.__s; + while (f.__d && ++x < 25); + f.state = f.__s, f.getChildContext != null && (n = n0(n0({}, n), f.getChildContext())), g || f.getSnapshotBeforeUpdate == null || (C = f.getSnapshotBeforeUpdate(v, y)), R = d != null && d.type === Di && d.key == null ? d.props.children : d, LTe(e, Array.isArray(R) ? R : [R], t, r, n, i, a, o, l, u), f.base = t.__e, t.__h = null, f.__h.length && o.push(f), A && (f.__E = f.__ = null), f.__e = !1; + } else + a == null && t.__v === r.__v ? (t.__k = r.__k, t.__e = r.__e) : t.__e = kmt(r.__e, t, r, n, i, a, o, u); + (d = hi.diffed) && d(t); + } catch (O) { + t.__v = null, (u || a != null) && (t.__e = l, t.__h = !!u, a[a.indexOf(l)] = null), hi.__e(O, t, r); + } +} +function jTe(e, t) { + hi.__c && hi.__c(t, e), e.some(function(r) { + try { + e = r.__h, r.__h = [], e.some(function(n) { + n.call(r); + }); + } catch (n) { + hi.__e(n, r.__v); + } + }); +} +function kmt(e, t, r, n, i, a, o, l) { + var u, d, f, g = r.props, v = t.props, y = t.type, C = 0; + if (y === "svg" && (i = !0), a != null) { + for (; C < a.length; C++) + if ((u = a[C]) && "setAttribute" in u == !!y && (y ? u.localName === y : u.nodeType === 3)) { + e = u, a[C] = null; + break; + } + } + if (e == null) { + if (y === null) + return document.createTextNode(v); + e = i ? document.createElementNS("http://www.w3.org/2000/svg", y) : document.createElement(y, v.is && v), a = null, l = !1; + } + if (y === null) + g === v || l && e.data === v || (e.data = v); + else { + if (a = a && RB.call(e.childNodes), d = (g = r.props || b2).dangerouslySetInnerHTML, f = v.dangerouslySetInnerHTML, !l) { + if (a != null) + for (g = {}, C = 0; C < e.attributes.length; C++) + g[e.attributes[C].name] = e.attributes[C].value; + (f || d) && (f && (d && f.__html == d.__html || f.__html === e.innerHTML) || (e.innerHTML = f && f.__html || "")); + } + if (Omt(e, v, g, i, l), f) + t.__k = []; + else if (C = t.props.children, LTe(e, Array.isArray(C) ? C : [C], t, r, n, i && y !== "foreignObject", a, o, a ? a[0] : r.__k && YR(r, 0), l), a != null) + for (C = a.length; C--; ) + a[C] != null && PTe(a[C]); + l || ("value" in v && (C = v.value) !== void 0 && (C !== e.value || y === "progress" && !C || y === "option" && C !== g.value) && E2(e, "value", C, g.value, !1), "checked" in v && (C = v.checked) !== void 0 && C !== e.checked && E2(e, "checked", C, g.checked, !1)); + } + return e; +} +function $Te(e, t, r) { + try { + typeof e == "function" ? e(t) : e.current = t; + } catch (n) { + hi.__e(n, r); + } +} +function VTe(e, t, r) { + var n, i; + if (hi.unmount && hi.unmount(e), (n = e.ref) && (n.current && n.current !== e.__e || $Te(n, null, t)), (n = e.__c) != null) { + if (n.componentWillUnmount) + try { + n.componentWillUnmount(); + } catch (a) { + hi.__e(a, t); + } + n.base = n.__P = null, e.__c = void 0; + } + if (n = e.__k) + for (i = 0; i < n.length; i++) + n[i] && VTe(n[i], t, r || typeof e.type != "function"); + r || e.__e == null || PTe(e.__e), e.__ = e.__e = e.__d = void 0; +} +function Pmt(e, t, r) { + return this.constructor(e, r); +} +function XR(e, t, r) { + var n, i, a; + hi.__ && hi.__(e, t), i = (n = typeof r == "function") ? null : r && r.__k || t.__k, a = [], s7(t, e = (!n && r || t).__k = De(Di, null, [e]), i || b2, b2, t.ownerSVGElement !== void 0, !n && r ? [r] : i ? null : t.firstChild ? RB.call(t.childNodes) : null, a, !n && r ? r : i ? i.__e : t.firstChild, n), jTe(a, e); +} +function Nmt(e, t) { + var r = { __c: t = "__cC" + MTe++, __: e, Consumer: function(n, i) { + return n.children(i); + }, Provider: function(n) { + var i, a; + return this.getChildContext || (i = [], (a = {})[t] = this, this.getChildContext = function() { + return a; + }, this.shouldComponentUpdate = function(o) { + this.props.value !== o.value && i.some(function(l) { + l.__e = !0, QG(l); + }); + }, this.sub = function(o) { + i.push(o); + var l = o.componentWillUnmount; + o.componentWillUnmount = function() { + i.splice(i.indexOf(o), 1), l && l.call(o); + }; + }), n.children; + } }; + return r.Provider.__ = r.Consumer.contextType = r; +} +RB = kTe.slice, hi = { __e: function(e, t, r, n) { + for (var i, a, o; t = t.__; ) + if ((i = t.__c) && !i.__) + try { + if ((a = i.constructor) && a.getDerivedStateFromError != null && (i.setState(a.getDerivedStateFromError(e)), o = i.__d), i.componentDidCatch != null && (i.componentDidCatch(e, n || {}), o = i.__d), o) + return i.__E = i; + } catch (l) { + e = l; + } + throw e; +} }, RTe = 0, DTe = function(e) { + return e != null && e.constructor === void 0; +}, qw = !1, pd.prototype.setState = function(e, t) { + var r; + r = this.__s != null && this.__s !== this.state ? this.__s : this.__s = n0({}, this.state), typeof e == "function" && (e = e(n0({}, r), this.props)), e && n0(r, e), e != null && this.__v && (t && this._sb.push(t), QG(this)); +}, pd.prototype.forceUpdate = function(e) { + this.__v && (this.__e = !0, e && this.__h.push(e), QG(this)); +}, pd.prototype.render = Di, Ob = [], OTe = typeof Promise == "function" ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, C2.__r = 0, MTe = 0; +var zg, _4, Whe, zTe = [], S4 = [], Ghe = hi.__b, Yhe = hi.__r, Xhe = hi.diffed, Khe = hi.__c, Zhe = hi.unmount; +function Lmt() { + for (var e; e = zTe.shift(); ) + if (e.__P && e.__H) + try { + e.__H.__h.forEach(GN), e.__H.__h.forEach(e6), e.__H.__h = []; + } catch (t) { + e.__H.__h = [], hi.__e(t, e.__v); + } +} +hi.__b = function(e) { + zg = null, Ghe && Ghe(e); +}, hi.__r = function(e) { + Yhe && Yhe(e); + var t = (zg = e.__c).__H; + t && (_4 === zg ? (t.__h = [], zg.__h = [], t.__.forEach(function(r) { + r.__N && (r.__ = r.__N), r.__V = S4, r.__N = r.i = void 0; + })) : (t.__h.forEach(GN), t.__h.forEach(e6), t.__h = [])), _4 = zg; +}, hi.diffed = function(e) { + Xhe && Xhe(e); + var t = e.__c; + t && t.__H && (t.__H.__h.length && (zTe.push(t) !== 1 && Whe === hi.requestAnimationFrame || ((Whe = hi.requestAnimationFrame) || Fmt)(Lmt)), t.__H.__.forEach(function(r) { + r.i && (r.__H = r.i), r.__V !== S4 && (r.__ = r.__V), r.i = void 0, r.__V = S4; + })), _4 = zg = null; +}, hi.__c = function(e, t) { + t.some(function(r) { + try { + r.__h.forEach(GN), r.__h = r.__h.filter(function(n) { + return !n.__ || e6(n); + }); + } catch (n) { + t.some(function(i) { + i.__h && (i.__h = []); + }), t = [], hi.__e(n, r.__v); + } + }), Khe && Khe(e, t); +}, hi.unmount = function(e) { + Zhe && Zhe(e); + var t, r = e.__c; + r && r.__H && (r.__H.__.forEach(function(n) { + try { + GN(n); + } catch (i) { + t = i; + } + }), r.__H = void 0, t && hi.__e(t, r.__v)); +}; +var qhe = typeof requestAnimationFrame == "function"; +function Fmt(e) { + var t, r = function() { + clearTimeout(n), qhe && cancelAnimationFrame(t), setTimeout(e); + }, n = setTimeout(r, 100); + qhe && (t = requestAnimationFrame(r)); +} +function GN(e) { + var t = zg, r = e.__c; + typeof r == "function" && (e.__c = void 0, r()), zg = t; +} +function e6(e) { + var t = zg; + e.__c = e.__(), zg = t; +} +function Bmt(e, t) { + for (var r in t) + e[r] = t[r]; + return e; +} +function Jhe(e, t) { + for (var r in e) + if (r !== "__source" && !(r in t)) + return !0; + for (var n in t) + if (n !== "__source" && e[n] !== t[n]) + return !0; + return !1; +} +function Qhe(e) { + this.props = e; +} +(Qhe.prototype = new pd()).isPureReactComponent = !0, Qhe.prototype.shouldComponentUpdate = function(e, t) { + return Jhe(this.props, e) || Jhe(this.state, t); +}; +var ede = hi.__b; +hi.__b = function(e) { + e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), ede && ede(e); +}; +var Umt = hi.__e; +hi.__e = function(e, t, r, n) { + if (e.then) { + for (var i, a = t; a = a.__; ) + if ((i = a.__c) && i.__c) + return t.__e == null && (t.__e = r.__e, t.__k = r.__k), i.__c(e, t); + } + Umt(e, t, r, n); +}; +var tde = hi.unmount; +function HTe(e, t, r) { + return e && (e.__c && e.__c.__H && (e.__c.__H.__.forEach(function(n) { + typeof n.__c == "function" && n.__c(); + }), e.__c.__H = null), (e = Bmt({}, e)).__c != null && (e.__c.__P === r && (e.__c.__P = t), e.__c = null), e.__k = e.__k && e.__k.map(function(n) { + return HTe(n, t, r); + })), e; +} +function WTe(e, t, r) { + return e && (e.__v = null, e.__k = e.__k && e.__k.map(function(n) { + return WTe(n, t, r); + }), e.__c && e.__c.__P === t && (e.__e && r.insertBefore(e.__e, e.__d), e.__c.__e = !0, e.__c.__P = r)), e; +} +function b4() { + this.__u = 0, this.t = null, this.__b = null; +} +function GTe(e) { + var t = e.__.__c; + return t && t.__a && t.__a(e); +} +function XP() { + this.u = null, this.o = null; +} +hi.unmount = function(e) { + var t = e.__c; + t && t.__R && t.__R(), t && e.__h === !0 && (e.type = null), tde && tde(e); +}, (b4.prototype = new pd()).__c = function(e, t) { + var r = t.__c, n = this; + n.t == null && (n.t = []), n.t.push(r); + var i = GTe(n.__v), a = !1, o = function() { + a || (a = !0, r.__R = null, i ? i(l) : l()); + }; + r.__R = o; + var l = function() { + if (!--n.__u) { + if (n.state.__a) { + var d = n.state.__a; + n.__v.__k[0] = WTe(d, d.__c.__P, d.__c.__O); + } + var f; + for (n.setState({ __a: n.__b = null }); f = n.t.pop(); ) + f.forceUpdate(); + } + }, u = t.__h === !0; + n.__u++ || u || n.setState({ __a: n.__b = n.__v.__k[0] }), e.then(o, o); +}, b4.prototype.componentWillUnmount = function() { + this.t = []; +}, b4.prototype.render = function(e, t) { + if (this.__b) { + if (this.__v.__k) { + var r = document.createElement("div"), n = this.__v.__k[0].__c; + this.__v.__k[0] = HTe(this.__b, r, n.__O = n.__P); + } + this.__b = null; + } + var i = t.__a && De(Di, null, e.fallback); + return i && (i.__h = null), [De(Di, null, t.__a ? null : e.children), i]; +}; +var rde = function(e, t, r) { + if (++r[1] === r[0] && e.o.delete(t), e.props.revealOrder && (e.props.revealOrder[0] !== "t" || !e.o.size)) + for (r = e.u; r; ) { + for (; r.length > 3; ) + r.pop()(); + if (r[1] < r[0]) + break; + e.u = r = r[2]; + } +}; +function jmt(e) { + return this.getChildContext = function() { + return e.context; + }, e.children; +} +function $mt(e) { + var t = this, r = e.i; + t.componentWillUnmount = function() { + XR(null, t.l), t.l = null, t.i = null; + }, t.i && t.i !== r && t.componentWillUnmount(), e.__v ? (t.l || (t.i = r, t.l = { nodeType: 1, parentNode: r, childNodes: [], appendChild: function(n) { + this.childNodes.push(n), t.i.appendChild(n); + }, insertBefore: function(n, i) { + this.childNodes.push(n), t.i.appendChild(n); + }, removeChild: function(n) { + this.childNodes.splice(this.childNodes.indexOf(n) >>> 1, 1), t.i.removeChild(n); + } }), XR(De(jmt, { context: t.context }, e.__v), t.l)) : t.l && t.componentWillUnmount(); +} +function Vmt(e, t) { + var r = De($mt, { __v: e, i: t }); + return r.containerInfo = t, r; +} +(XP.prototype = new pd()).__a = function(e) { + var t = this, r = GTe(t.__v), n = t.o.get(e); + return n[0]++, function(i) { + var a = function() { + t.props.revealOrder ? (n.push(i), rde(t, e, n)) : i(); + }; + r ? r(a) : a(); + }; +}, XP.prototype.render = function(e) { + this.u = null, this.o = /* @__PURE__ */ new Map(); + var t = T2(e.children); + e.revealOrder && e.revealOrder[0] === "b" && t.reverse(); + for (var r = t.length; r--; ) + this.o.set(t[r], this.u = [1, 0, this.u]); + return e.children; +}, XP.prototype.componentDidUpdate = XP.prototype.componentDidMount = function() { + var e = this; + this.o.forEach(function(t, r) { + rde(e, r, t); + }); +}; +var zmt = typeof Symbol != "undefined" && Symbol.for && Symbol.for("react.element") || 60103, Hmt = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/, Wmt = typeof document != "undefined", Gmt = function(e) { + return (typeof Symbol != "undefined" && typeof Symbol() == "symbol" ? /fil|che|rad/i : /fil|che|ra/i).test(e); +}; +pd.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(e) { + Object.defineProperty(pd.prototype, e, { configurable: !0, get: function() { + return this["UNSAFE_" + e]; + }, set: function(t) { + Object.defineProperty(this, e, { configurable: !0, writable: !0, value: t }); + } }); +}); +var nde = hi.event; +function Ymt() { +} +function Xmt() { + return this.cancelBubble; +} +function Kmt() { + return this.defaultPrevented; +} +hi.event = function(e) { + return nde && (e = nde(e)), e.persist = Ymt, e.isPropagationStopped = Xmt, e.isDefaultPrevented = Kmt, e.nativeEvent = e; +}; +var ide = { configurable: !0, get: function() { + return this.class; +} }, ade = hi.vnode; +hi.vnode = function(e) { + var t = e.type, r = e.props, n = r; + if (typeof t == "string") { + var i = t.indexOf("-") === -1; + for (var a in n = {}, r) { + var o = r[a]; + Wmt && a === "children" && t === "noscript" || a === "value" && "defaultValue" in r && o == null || (a === "defaultValue" && "value" in r && r.value == null ? a = "value" : a === "download" && o === !0 ? o = "" : /ondoubleclick/i.test(a) ? a = "ondblclick" : /^onchange(textarea|input)/i.test(a + t) && !Gmt(r.type) ? a = "oninput" : /^onfocus$/i.test(a) ? a = "onfocusin" : /^onblur$/i.test(a) ? a = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a) ? a = a.toLowerCase() : i && Hmt.test(a) ? a = a.replace(/[A-Z0-9]/g, "-$&").toLowerCase() : o === null && (o = void 0), /^oninput$/i.test(a) && (a = a.toLowerCase(), n[a] && (a = "oninputCapture")), n[a] = o); + } + t == "select" && n.multiple && Array.isArray(n.value) && (n.value = T2(r.children).forEach(function(l) { + l.props.selected = n.value.indexOf(l.props.value) != -1; + })), t == "select" && n.defaultValue != null && (n.value = T2(r.children).forEach(function(l) { + l.props.selected = n.multiple ? n.defaultValue.indexOf(l.props.value) != -1 : n.defaultValue == l.props.value; + })), e.props = n, r.class != r.className && (ide.enumerable = "className" in r, r.className != null && (n.class = r.className), Object.defineProperty(n, "className", ide)); + } + e.$$typeof = zmt, ade && ade(e); +}; +var ode = hi.__r; +hi.__r = function(e) { + ode && ode(e), e.__c; +}; +const YTe = [], t6 = /* @__PURE__ */ new Map(); +function P0(e) { + YTe.push(e), t6.forEach((t) => { + KTe(t, e); + }); +} +function Zmt(e) { + e.isConnected && // sometimes true if SSR system simulates DOM + e.getRootNode && XTe(e.getRootNode()); +} +function XTe(e) { + let t = t6.get(e); + if (!t || !t.isConnected) { + if (t = e.querySelector("style[data-fullcalendar]"), !t) { + t = document.createElement("style"), t.setAttribute("data-fullcalendar", ""); + const r = Jmt(); + r && (t.nonce = r); + const n = e === document ? document.head : e, i = e === document ? n.querySelector("script,link[rel=stylesheet],link[as=style],style") : n.firstChild; + n.insertBefore(t, i); + } + t6.set(e, t), qmt(t); + } +} +function qmt(e) { + for (const t of YTe) + KTe(e, t); +} +function KTe(e, t) { + const { sheet: r } = e, n = r.cssRules.length; + t.split("}").forEach((i, a) => { + i = i.trim(), i && r.insertRule(i + "}", n + a); + }); +} +let E4; +function Jmt() { + return E4 === void 0 && (E4 = Qmt()), E4; +} +function Qmt() { + const e = document.querySelector('meta[name="csp-nonce"]'); + if (e && e.hasAttribute("content")) + return e.getAttribute("content"); + const t = document.querySelector("script[nonce]"); + return t && t.nonce || ""; +} +typeof document != "undefined" && XTe(document); +var eyt = ':root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:"\\e900"}.fc-icon-chevron-right:before{content:"\\e901"}.fc-icon-chevrons-left:before{content:"\\e902"}.fc-icon-chevrons-right:before{content:"\\e903"}.fc-icon-minus-square:before{content:"\\e904"}.fc-icon-plus-square:before{content:"\\e905"}.fc-icon-x:before{content:"\\e906"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:"";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:"";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}'; +P0(eyt); +class KR { + constructor(t) { + this.drainedOption = t, this.isRunning = !1, this.isDirty = !1, this.pauseDepths = {}, this.timeoutId = 0; + } + request(t) { + this.isDirty = !0, this.isPaused() || (this.clearTimeout(), t == null ? this.tryDrain() : this.timeoutId = setTimeout( + // NOT OPTIMAL! TODO: look at debounce + this.tryDrain.bind(this), + t + )); + } + pause(t = "") { + let { pauseDepths: r } = this; + r[t] = (r[t] || 0) + 1, this.clearTimeout(); + } + resume(t = "", r) { + let { pauseDepths: n } = this; + t in n && (r ? delete n[t] : (n[t] -= 1, n[t] <= 0 && delete n[t]), this.tryDrain()); + } + isPaused() { + return Object.keys(this.pauseDepths).length; + } + tryDrain() { + if (!this.isRunning && !this.isPaused()) { + for (this.isRunning = !0; this.isDirty; ) + this.isDirty = !1, this.drained(); + this.isRunning = !1; + } + } + clear() { + this.clearTimeout(), this.isDirty = !1, this.pauseDepths = {}; + } + clearTimeout() { + this.timeoutId && (clearTimeout(this.timeoutId), this.timeoutId = 0); + } + drained() { + this.drainedOption && this.drainedOption(); + } +} +function DB(e) { + e.parentNode && e.parentNode.removeChild(e); +} +function ql(e, t) { + if (e.closest) + return e.closest(t); + if (!document.documentElement.contains(e)) + return null; + do { + if (ZTe(e, t)) + return e; + e = e.parentElement || e.parentNode; + } while (e !== null && e.nodeType === 1); + return null; +} +function ZTe(e, t) { + return (e.matches || e.matchesSelector || e.msMatchesSelector).call(e, t); +} +function jE(e, t) { + let r = e instanceof HTMLElement ? [e] : e, n = []; + for (let i = 0; i < r.length; i += 1) { + let a = r[i].querySelectorAll(t); + for (let o = 0; o < a.length; o += 1) + n.push(a[o]); + } + return n; +} +function tyt(e, t) { + let r = e instanceof HTMLElement ? [e] : e, n = []; + for (let i = 0; i < r.length; i += 1) { + let a = r[i].children; + for (let o = 0; o < a.length; o += 1) { + let l = a[o]; + (!t || ZTe(l, t)) && n.push(l); + } + } + return n; +} +const ryt = /(top|left|right|bottom|width|height)$/i; +function Dw(e, t) { + for (let r in t) + qTe(e, r, t[r]); +} +function qTe(e, t, r) { + r == null ? e.style[t] = "" : typeof r == "number" && ryt.test(t) ? e.style[t] = `${r}px` : e.style[t] = r; +} +function JTe(e) { + var t, r; + return (r = (t = e.composedPath) === null || t === void 0 ? void 0 : t.call(e)[0]) !== null && r !== void 0 ? r : e.target; +} +let sde = 0; +function jm() { + return sde += 1, "fc-dom-" + sde; +} +function OB(e) { + e.preventDefault(); +} +function nyt(e, t) { + return (r) => { + let n = ql(r.target, e); + n && t.call(n, r, n); + }; +} +function QTe(e, t, r, n) { + let i = nyt(r, n); + return e.addEventListener(t, i), () => { + e.removeEventListener(t, i); + }; +} +function iyt(e, t, r, n) { + let i; + return QTe(e, "mouseover", t, (a, o) => { + if (o !== i) { + i = o, r(a, o); + let l = (u) => { + i = null, n(u, o), o.removeEventListener("mouseleave", l); + }; + o.addEventListener("mouseleave", l); + } + }); +} +const lde = [ + "webkitTransitionEnd", + "otransitionend", + "oTransitionEnd", + "msTransitionEnd", + "transitionend" +]; +function ayt(e, t) { + let r = (n) => { + t(n), lde.forEach((i) => { + e.removeEventListener(i, r); + }); + }; + lde.forEach((n) => { + e.addEventListener(n, r); + }); +} +function ewe(e) { + return Object.assign({ onClick: e }, twe(e)); +} +function twe(e) { + return { + tabIndex: 0, + onKeyDown(t) { + (t.key === "Enter" || t.key === " ") && (e(t), t.preventDefault()); + } + }; +} +let cde = 0; +function pv() { + return cde += 1, String(cde); +} +function l7() { + document.body.classList.add("fc-not-allowed"); +} +function c7() { + document.body.classList.remove("fc-not-allowed"); +} +function oyt(e) { + e.style.userSelect = "none", e.style.webkitUserSelect = "none", e.addEventListener("selectstart", OB); +} +function syt(e) { + e.style.userSelect = "", e.style.webkitUserSelect = "", e.removeEventListener("selectstart", OB); +} +function lyt(e) { + e.addEventListener("contextmenu", OB); +} +function cyt(e) { + e.removeEventListener("contextmenu", OB); +} +function u7(e) { + let t = [], r = [], n, i; + for (typeof e == "string" ? r = e.split(/\s*,\s*/) : typeof e == "function" ? r = [e] : Array.isArray(e) && (r = e), n = 0; n < r.length; n += 1) + i = r[n], typeof i == "string" ? t.push(i.charAt(0) === "-" ? { field: i.substring(1), order: -1 } : { field: i, order: 1 }) : typeof i == "function" && t.push({ func: i }); + return t; +} +function rwe(e, t, r) { + let n, i; + for (n = 0; n < r.length; n += 1) + if (i = uyt(e, t, r[n]), i) + return i; + return 0; +} +function uyt(e, t, r) { + return r.func ? r.func(e, t) : nwe(e[r.field], t[r.field]) * (r.order || 1); +} +function nwe(e, t) { + return !e && !t ? 0 : t == null ? -1 : e == null ? 1 : typeof e == "string" || typeof t == "string" ? String(e).localeCompare(String(t)) : e - t; +} +function $m(e, t) { + let r = String(e); + return "000".substr(0, t - r.length) + r; +} +function W1(e, t, r) { + return typeof e == "function" ? e(...t) : typeof e == "string" ? t.reduce((n, i, a) => n.replace("$" + a, i || ""), e) : r; +} +function hyt(e, t) { + return e - t; +} +function rE(e) { + return e % 1 === 0; +} +function dyt(e) { + let t = e.querySelector(".fc-scrollgrid-shrink-frame"), r = e.querySelector(".fc-scrollgrid-shrink-cushion"); + if (!t) + throw new Error("needs fc-scrollgrid-shrink-frame className"); + if (!r) + throw new Error("needs fc-scrollgrid-shrink-cushion className"); + return e.getBoundingClientRect().width - t.getBoundingClientRect().width + // the cell padding+border + r.getBoundingClientRect().width; +} +const ude = ["years", "months", "days", "milliseconds"], fyt = /^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/; +function na(e, t) { + return typeof e == "string" ? pyt(e) : typeof e == "object" && e ? hde(e) : typeof e == "number" ? hde({ [t || "milliseconds"]: e }) : null; +} +function pyt(e) { + let t = fyt.exec(e); + if (t) { + let r = t[1] ? -1 : 1; + return { + years: 0, + months: 0, + days: r * (t[2] ? parseInt(t[2], 10) : 0), + milliseconds: r * ((t[3] ? parseInt(t[3], 10) : 0) * 60 * 60 * 1e3 + // hours + (t[4] ? parseInt(t[4], 10) : 0) * 60 * 1e3 + // minutes + (t[5] ? parseInt(t[5], 10) : 0) * 1e3 + // seconds + (t[6] ? parseInt(t[6], 10) : 0)) + }; + } + return null; +} +function hde(e) { + let t = { + years: e.years || e.year || 0, + months: e.months || e.month || 0, + days: e.days || e.day || 0, + milliseconds: (e.hours || e.hour || 0) * 60 * 60 * 1e3 + // hours + (e.minutes || e.minute || 0) * 60 * 1e3 + // minutes + (e.seconds || e.second || 0) * 1e3 + // seconds + (e.milliseconds || e.millisecond || e.ms || 0) + // ms + }, r = e.weeks || e.week; + return r && (t.days += r * 7, t.specifiedWeeks = !0), t; +} +function gyt(e, t) { + return e.years === t.years && e.months === t.months && e.days === t.days && e.milliseconds === t.milliseconds; +} +function iwe(e) { + return !e.years && !e.months && !e.milliseconds ? e.days : 0; +} +function r6(e, t) { + return { + years: e.years + t.years, + months: e.months + t.months, + days: e.days + t.days, + milliseconds: e.milliseconds + t.milliseconds + }; +} +function vyt(e, t) { + return { + years: e.years - t.years, + months: e.months - t.months, + days: e.days - t.days, + milliseconds: e.milliseconds - t.milliseconds + }; +} +function awe(e, t) { + return { + years: e.years * t, + months: e.months * t, + days: e.days * t, + milliseconds: e.milliseconds * t + }; +} +function myt(e) { + return Ow(e) / 365; +} +function yyt(e) { + return Ow(e) / 30; +} +function Ow(e) { + return Kc(e) / 864e5; +} +function _yt(e) { + return Kc(e) / (1e3 * 60); +} +function Syt(e) { + return Kc(e) / 1e3; +} +function Kc(e) { + return e.years * (365 * 864e5) + e.months * (30 * 864e5) + e.days * 864e5 + e.milliseconds; +} +function C0(e, t) { + let r = null; + for (let n = 0; n < ude.length; n += 1) { + let i = ude[n]; + if (t[i]) { + let a = e[i] / t[i]; + if (!rE(a) || r !== null && r !== a) + return null; + r = a; + } else if (e[i]) + return null; + } + return r; +} +function T0(e) { + let t = e.milliseconds; + if (t) { + if (t % 1e3 !== 0) + return { unit: "millisecond", value: t }; + if (t % (1e3 * 60) !== 0) + return { unit: "second", value: t / 1e3 }; + if (t % (1e3 * 60 * 60) !== 0) + return { unit: "minute", value: t / (1e3 * 60) }; + if (t) + return { unit: "hour", value: t / (1e3 * 60 * 60) }; + } + return e.days ? e.specifiedWeeks && e.days % 7 === 0 ? { unit: "week", value: e.days / 7 } : { unit: "day", value: e.days } : e.months ? { unit: "month", value: e.months } : e.years ? { unit: "year", value: e.years } : { unit: "millisecond", value: 0 }; +} +function byt(e, t) { + let r = 0, n = 0; + for (; n < e.length; ) + e[n] === t ? (e.splice(n, 1), r += 1) : n += 1; + return r; +} +function _d(e, t, r) { + if (e === t) + return !0; + let n = e.length, i; + if (n !== t.length) + return !1; + for (i = 0; i < n; i += 1) + if (!(r ? r(e[i], t[i]) : e[i] === t[i])) + return !1; + return !0; +} +const owe = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]; +function dde(e, t) { + let r = i0(e); + return r[2] += t * 7, Th(r); +} +function yl(e, t) { + let r = i0(e); + return r[2] += t, Th(r); +} +function Jm(e, t) { + let r = i0(e); + return r[6] += t, Th(r); +} +function Eyt(e, t) { + return N0(e, t) / 7; +} +function N0(e, t) { + return (t.valueOf() - e.valueOf()) / (1e3 * 60 * 60 * 24); +} +function Cyt(e, t) { + return (t.valueOf() - e.valueOf()) / (1e3 * 60 * 60); +} +function Tyt(e, t) { + return (t.valueOf() - e.valueOf()) / (1e3 * 60); +} +function wyt(e, t) { + return (t.valueOf() - e.valueOf()) / 1e3; +} +function Iyt(e, t) { + let r = ho(e), n = ho(t); + return { + years: 0, + months: 0, + days: Math.round(N0(r, n)), + milliseconds: t.valueOf() - n.valueOf() - (e.valueOf() - r.valueOf()) + }; +} +function xyt(e, t) { + let r = ZR(e, t); + return r !== null && r % 7 === 0 ? r / 7 : null; +} +function ZR(e, t) { + return a0(e) === a0(t) ? Math.round(N0(e, t)) : null; +} +function ho(e) { + return Th([ + e.getUTCFullYear(), + e.getUTCMonth(), + e.getUTCDate() + ]); +} +function Ayt(e) { + return Th([ + e.getUTCFullYear(), + e.getUTCMonth(), + e.getUTCDate(), + e.getUTCHours() + ]); +} +function Ryt(e) { + return Th([ + e.getUTCFullYear(), + e.getUTCMonth(), + e.getUTCDate(), + e.getUTCHours(), + e.getUTCMinutes() + ]); +} +function Dyt(e) { + return Th([ + e.getUTCFullYear(), + e.getUTCMonth(), + e.getUTCDate(), + e.getUTCHours(), + e.getUTCMinutes(), + e.getUTCSeconds() + ]); +} +function Oyt(e, t, r) { + let n = e.getUTCFullYear(), i = C4(e, n, t, r); + if (i < 1) + return C4(e, n - 1, t, r); + let a = C4(e, n + 1, t, r); + return a >= 1 ? Math.min(i, a) : i; +} +function C4(e, t, r, n) { + let i = Th([t, 0, 1 + Myt(t, r, n)]), a = ho(e), o = Math.round(N0(i, a)); + return Math.floor(o / 7) + 1; +} +function Myt(e, t, r) { + let n = 7 + t - r; + return -((7 + Th([e, 0, n]).getUTCDay() - t) % 7) + n - 1; +} +function fde(e) { + return [ + e.getFullYear(), + e.getMonth(), + e.getDate(), + e.getHours(), + e.getMinutes(), + e.getSeconds(), + e.getMilliseconds() + ]; +} +function pde(e) { + return new Date( + e[0], + e[1] || 0, + e[2] == null ? 1 : e[2], + // day of month + e[3] || 0, + e[4] || 0, + e[5] || 0 + ); +} +function i0(e) { + return [ + e.getUTCFullYear(), + e.getUTCMonth(), + e.getUTCDate(), + e.getUTCHours(), + e.getUTCMinutes(), + e.getUTCSeconds(), + e.getUTCMilliseconds() + ]; +} +function Th(e) { + return e.length === 1 && (e = e.concat([0])), new Date(Date.UTC(...e)); +} +function h7(e) { + return !isNaN(e.valueOf()); +} +function a0(e) { + return e.getUTCHours() * 1e3 * 60 * 60 + e.getUTCMinutes() * 1e3 * 60 + e.getUTCSeconds() * 1e3 + e.getUTCMilliseconds(); +} +function MB(e, t, r = !1) { + let n = e.toISOString(); + return n = n.replace(".000", ""), r && (n = n.replace("T00:00:00Z", "")), n.length > 10 && (t == null ? n = n.replace("Z", "") : t !== 0 && (n = n.replace("Z", d7(t, !0)))), n; +} +function NI(e) { + return e.toISOString().replace(/T.*$/, ""); +} +function n6(e) { + return e.toISOString().match(/^\d{4}-\d{2}/)[0]; +} +function kyt(e) { + return $m(e.getUTCHours(), 2) + ":" + $m(e.getUTCMinutes(), 2) + ":" + $m(e.getUTCSeconds(), 2); +} +function d7(e, t = !1) { + let r = e < 0 ? "-" : "+", n = Math.abs(e), i = Math.floor(n / 60), a = Math.round(n % 60); + return t ? `${r + $m(i, 2)}:${$m(a, 2)}` : `GMT${r}${i}${a ? `:${$m(a, 2)}` : ""}`; +} +function Gr(e, t, r) { + let n, i; + return function(...a) { + if (!n) + i = e.apply(this, a); + else if (!_d(n, a)) { + r && r(i); + let o = e.apply(this, a); + (!t || !t(o, i)) && (i = o); + } + return n = a, i; + }; +} +function d0(e, t, r) { + let n, i; + return (a) => { + if (!n) + i = e.call(this, a); + else if (!Cc(n, a)) { + r && r(i); + let o = e.call(this, a); + (!t || !t(o, i)) && (i = o); + } + return n = a, i; + }; +} +function T4(e, t, r) { + let n = [], i = []; + return (a) => { + let o = n.length, l = a.length, u = 0; + for (; u < o; u += 1) + if (!a[u]) + r && r(i[u]); + else if (!_d(n[u], a[u])) { + r && r(i[u]); + let d = e.apply(this, a[u]); + (!t || !t(d, i[u])) && (i[u] = d); + } + for (; u < l; u += 1) + i[u] = e.apply(this, a[u]); + return n = a, i.splice(l), i; + }; +} +function gde(e, t, r) { + let n = {}, i = {}; + return (a) => { + let o = {}; + for (let l in a) + if (!i[l]) + o[l] = e.apply(this, a[l]); + else if (_d(n[l], a[l])) + o[l] = i[l]; + else { + r && r(i[l]); + let u = e.apply(this, a[l]); + o[l] = t && t(u, i[l]) ? i[l] : u; + } + return n = a, i = o, o; + }; +} +const vde = { + week: 3, + separator: 0, + omitZeroMinute: 0, + meridiem: 0, + omitCommas: 0 +}, w2 = { + timeZoneName: 7, + era: 6, + year: 5, + month: 4, + day: 2, + weekday: 2, + hour: 1, + minute: 1, + second: 1 +}, KP = /\s*([ap])\.?m\.?/i, Pyt = /,/g, Nyt = /\s+/g, Lyt = /\u200e/g, Fyt = /UTC|GMT/; +class Byt { + constructor(t) { + let r = {}, n = {}, i = 0; + for (let a in t) + a in vde ? (n[a] = t[a], i = Math.max(vde[a], i)) : (r[a] = t[a], a in w2 && (i = Math.max(w2[a], i))); + this.standardDateProps = r, this.extendedSettings = n, this.severity = i, this.buildFormattingFunc = Gr(mde); + } + format(t, r) { + return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, r)(t); + } + formatRange(t, r, n, i) { + let { standardDateProps: a, extendedSettings: o } = this, l = Hyt(t.marker, r.marker, n.calendarSystem); + if (!l) + return this.format(t, n); + let u = l; + u > 1 && // the two dates are different in a way that's larger scale than time + (a.year === "numeric" || a.year === "2-digit") && (a.month === "numeric" || a.month === "2-digit") && (a.day === "numeric" || a.day === "2-digit") && (u = 1); + let d = this.format(t, n), f = this.format(r, n); + if (d === f) + return d; + let g = Wyt(a, u), v = mde(g, o, n), y = v(t), C = v(r), A = Gyt(d, y, f, C), S = o.separator || i || n.defaultSeparator || ""; + return A ? A.before + y + S + C + A.after : d + S + f; + } + getLargestUnit() { + switch (this.severity) { + case 7: + case 6: + case 5: + return "year"; + case 4: + return "month"; + case 3: + return "week"; + case 2: + return "day"; + default: + return "time"; + } + } +} +function mde(e, t, r) { + let n = Object.keys(e).length; + return n === 1 && e.timeZoneName === "short" ? (i) => d7(i.timeZoneOffset) : n === 0 && t.week ? (i) => zyt(r.computeWeekNumber(i.marker), r.weekText, r.weekTextLong, r.locale, t.week) : Uyt(e, t, r); +} +function Uyt(e, t, r) { + e = Object.assign({}, e), t = Object.assign({}, t), jyt(e, t), e.timeZone = "UTC"; + let n = new Intl.DateTimeFormat(r.locale.codes, e), i; + if (t.omitZeroMinute) { + let a = Object.assign({}, e); + delete a.minute, i = new Intl.DateTimeFormat(r.locale.codes, a); + } + return (a) => { + let { marker: o } = a, l; + i && !o.getUTCMinutes() ? l = i : l = n; + let u = l.format(o); + return $yt(u, a, e, t, r); + }; +} +function jyt(e, t) { + e.timeZoneName && (e.hour || (e.hour = "2-digit"), e.minute || (e.minute = "2-digit")), e.timeZoneName === "long" && (e.timeZoneName = "short"), t.omitZeroMinute && (e.second || e.millisecond) && delete t.omitZeroMinute; +} +function $yt(e, t, r, n, i) { + return e = e.replace(Lyt, ""), r.timeZoneName === "short" && (e = Vyt(e, i.timeZone === "UTC" || t.timeZoneOffset == null ? "UTC" : ( + // important to normalize for IE, which does "GMT" + d7(t.timeZoneOffset) + ))), n.omitCommas && (e = e.replace(Pyt, "").trim()), n.omitZeroMinute && (e = e.replace(":00", "")), n.meridiem === !1 ? e = e.replace(KP, "").trim() : n.meridiem === "narrow" ? e = e.replace(KP, (a, o) => o.toLocaleLowerCase()) : n.meridiem === "short" ? e = e.replace(KP, (a, o) => `${o.toLocaleLowerCase()}m`) : n.meridiem === "lowercase" && (e = e.replace(KP, (a) => a.toLocaleLowerCase())), e = e.replace(Nyt, " "), e = e.trim(), e; +} +function Vyt(e, t) { + let r = !1; + return e = e.replace(Fyt, () => (r = !0, t)), r || (e += ` ${t}`), e; +} +function zyt(e, t, r, n, i) { + let a = []; + return i === "long" ? a.push(r) : (i === "short" || i === "narrow") && a.push(t), (i === "long" || i === "short") && a.push(" "), a.push(n.simpleNumberFormat.format(e)), n.options.direction === "rtl" && a.reverse(), a.join(""); +} +function Hyt(e, t, r) { + return r.getMarkerYear(e) !== r.getMarkerYear(t) ? 5 : r.getMarkerMonth(e) !== r.getMarkerMonth(t) ? 4 : r.getMarkerDay(e) !== r.getMarkerDay(t) ? 2 : a0(e) !== a0(t) ? 1 : 0; +} +function Wyt(e, t) { + let r = {}; + for (let n in e) + (!(n in w2) || // not a date part prop (like timeZone) + w2[n] <= t) && (r[n] = e[n]); + return r; +} +function Gyt(e, t, r, n) { + let i = 0; + for (; i < e.length; ) { + let a = e.indexOf(t, i); + if (a === -1) + break; + let o = e.substr(0, a); + i = a + t.length; + let l = e.substr(i), u = 0; + for (; u < r.length; ) { + let d = r.indexOf(n, u); + if (d === -1) + break; + let f = r.substr(0, d); + u = d + n.length; + let g = r.substr(u); + if (o === f && l === g) + return { + before: o, + after: l + }; + } + } + return null; +} +function yde(e, t) { + let r = t.markerToArray(e.marker); + return { + marker: e.marker, + timeZoneOffset: e.timeZoneOffset, + array: r, + year: r[0], + month: r[1], + day: r[2], + hour: r[3], + minute: r[4], + second: r[5], + millisecond: r[6] + }; +} +function I2(e, t, r, n) { + let i = yde(e, r.calendarSystem), a = t ? yde(t, r.calendarSystem) : null; + return { + date: i, + start: i, + end: a, + timeZone: r.timeZone, + localeCodes: r.locale.codes, + defaultSeparator: n || r.defaultSeparator + }; +} +class Yyt { + constructor(t) { + this.cmdStr = t; + } + format(t, r, n) { + return r.cmdFormatter(this.cmdStr, I2(t, null, r, n)); + } + formatRange(t, r, n, i) { + return n.cmdFormatter(this.cmdStr, I2(t, r, n, i)); + } +} +class Xyt { + constructor(t) { + this.func = t; + } + format(t, r, n) { + return this.func(I2(t, null, r, n)); + } + formatRange(t, r, n, i) { + return this.func(I2(t, r, n, i)); + } +} +function co(e) { + return typeof e == "object" && e ? new Byt(e) : typeof e == "string" ? new Yyt(e) : typeof e == "function" ? new Xyt(e) : null; +} +const _de = { + navLinkDayClick: At, + navLinkWeekClick: At, + duration: na, + bootstrapFontAwesome: At, + buttonIcons: At, + customButtons: At, + defaultAllDayEventDuration: na, + defaultTimedEventDuration: na, + nextDayThreshold: na, + scrollTime: na, + scrollTimeReset: Boolean, + slotMinTime: na, + slotMaxTime: na, + dayPopoverFormat: co, + slotDuration: na, + snapDuration: na, + headerToolbar: At, + footerToolbar: At, + defaultRangeSeparator: String, + titleRangeSeparator: String, + forceEventDuration: Boolean, + dayHeaders: Boolean, + dayHeaderFormat: co, + dayHeaderClassNames: At, + dayHeaderContent: At, + dayHeaderDidMount: At, + dayHeaderWillUnmount: At, + dayCellClassNames: At, + dayCellContent: At, + dayCellDidMount: At, + dayCellWillUnmount: At, + initialView: String, + aspectRatio: Number, + weekends: Boolean, + weekNumberCalculation: At, + weekNumbers: Boolean, + weekNumberClassNames: At, + weekNumberContent: At, + weekNumberDidMount: At, + weekNumberWillUnmount: At, + editable: Boolean, + viewClassNames: At, + viewDidMount: At, + viewWillUnmount: At, + nowIndicator: Boolean, + nowIndicatorClassNames: At, + nowIndicatorContent: At, + nowIndicatorDidMount: At, + nowIndicatorWillUnmount: At, + showNonCurrentDates: Boolean, + lazyFetching: Boolean, + startParam: String, + endParam: String, + timeZoneParam: String, + timeZone: String, + locales: At, + locale: At, + themeSystem: String, + dragRevertDuration: Number, + dragScroll: Boolean, + allDayMaintainDuration: Boolean, + unselectAuto: Boolean, + dropAccept: At, + eventOrder: u7, + eventOrderStrict: Boolean, + handleWindowResize: Boolean, + windowResizeDelay: Number, + longPressDelay: Number, + eventDragMinDistance: Number, + expandRows: Boolean, + height: At, + contentHeight: At, + direction: String, + weekNumberFormat: co, + eventResizableFromStart: Boolean, + displayEventTime: Boolean, + displayEventEnd: Boolean, + weekText: String, + weekTextLong: String, + progressiveEventRendering: Boolean, + businessHours: At, + initialDate: At, + now: At, + eventDataTransform: At, + stickyHeaderDates: At, + stickyFooterScrollbar: At, + viewHeight: At, + defaultAllDay: Boolean, + eventSourceFailure: At, + eventSourceSuccess: At, + eventDisplay: String, + eventStartEditable: Boolean, + eventDurationEditable: Boolean, + eventOverlap: At, + eventConstraint: At, + eventAllow: At, + eventBackgroundColor: String, + eventBorderColor: String, + eventTextColor: String, + eventColor: String, + eventClassNames: At, + eventContent: At, + eventDidMount: At, + eventWillUnmount: At, + selectConstraint: At, + selectOverlap: At, + selectAllow: At, + droppable: Boolean, + unselectCancel: String, + slotLabelFormat: At, + slotLaneClassNames: At, + slotLaneContent: At, + slotLaneDidMount: At, + slotLaneWillUnmount: At, + slotLabelClassNames: At, + slotLabelContent: At, + slotLabelDidMount: At, + slotLabelWillUnmount: At, + dayMaxEvents: At, + dayMaxEventRows: At, + dayMinWidth: Number, + slotLabelInterval: na, + allDayText: String, + allDayClassNames: At, + allDayContent: At, + allDayDidMount: At, + allDayWillUnmount: At, + slotMinWidth: Number, + navLinks: Boolean, + eventTimeFormat: co, + rerenderDelay: Number, + moreLinkText: At, + moreLinkHint: At, + selectMinDistance: Number, + selectable: Boolean, + selectLongPressDelay: Number, + eventLongPressDelay: Number, + selectMirror: Boolean, + eventMaxStack: Number, + eventMinHeight: Number, + eventMinWidth: Number, + eventShortHeight: Number, + slotEventOverlap: Boolean, + plugins: At, + firstDay: Number, + dayCount: Number, + dateAlignment: String, + dateIncrement: na, + hiddenDays: At, + fixedWeekCount: Boolean, + validRange: At, + visibleRange: At, + titleFormat: At, + eventInteractive: Boolean, + // only used by list-view, but languages define the value, so we need it in base options + noEventsText: String, + viewHint: At, + navLinkHint: At, + closeHint: String, + timeHint: String, + eventHint: String, + moreLinkClick: At, + moreLinkClassNames: At, + moreLinkContent: At, + moreLinkDidMount: At, + moreLinkWillUnmount: At, + monthStartFormat: co, + // for connectors + // (can't be part of plugin system b/c must be provided at runtime) + handleCustomRendering: At, + customRenderingMetaMap: At, + customRenderingReplaces: Boolean +}, G1 = { + eventDisplay: "auto", + defaultRangeSeparator: " - ", + titleRangeSeparator: " – ", + defaultTimedEventDuration: "01:00:00", + defaultAllDayEventDuration: { day: 1 }, + forceEventDuration: !1, + nextDayThreshold: "00:00:00", + dayHeaders: !0, + initialView: "", + aspectRatio: 1.35, + headerToolbar: { + start: "title", + center: "", + end: "today prev,next" + }, + weekends: !0, + weekNumbers: !1, + weekNumberCalculation: "local", + editable: !1, + nowIndicator: !1, + scrollTime: "06:00:00", + scrollTimeReset: !0, + slotMinTime: "00:00:00", + slotMaxTime: "24:00:00", + showNonCurrentDates: !0, + lazyFetching: !0, + startParam: "start", + endParam: "end", + timeZoneParam: "timeZone", + timeZone: "local", + locales: [], + locale: "", + themeSystem: "standard", + dragRevertDuration: 500, + dragScroll: !0, + allDayMaintainDuration: !1, + unselectAuto: !0, + dropAccept: "*", + eventOrder: "start,-duration,allDay,title", + dayPopoverFormat: { month: "long", day: "numeric", year: "numeric" }, + handleWindowResize: !0, + windowResizeDelay: 100, + longPressDelay: 1e3, + eventDragMinDistance: 5, + expandRows: !1, + navLinks: !1, + selectable: !1, + eventMinHeight: 15, + eventMinWidth: 30, + eventShortHeight: 30, + monthStartFormat: { month: "long", day: "numeric" } +}, Sde = { + datesSet: At, + eventsSet: At, + eventAdd: At, + eventChange: At, + eventRemove: At, + windowResize: At, + eventClick: At, + eventMouseEnter: At, + eventMouseLeave: At, + select: At, + unselect: At, + loading: At, + // internal + _unmount: At, + _beforeprint: At, + _afterprint: At, + _noEventDrop: At, + _noEventResize: At, + _resize: At, + _scrollRequest: At +}, bde = { + buttonText: At, + buttonHints: At, + views: At, + plugins: At, + initialEvents: At, + events: At, + eventSources: At +}, Eb = { + headerToolbar: Cb, + footerToolbar: Cb, + buttonText: Cb, + buttonHints: Cb, + buttonIcons: Cb, + dateIncrement: Cb, + plugins: ZP, + events: ZP, + eventSources: ZP, + resources: ZP +}; +function Cb(e, t) { + return typeof e == "object" && typeof t == "object" && e && t ? Cc(e, t) : e === t; +} +function ZP(e, t) { + return Array.isArray(e) && Array.isArray(t) ? _d(e, t) : e === t; +} +const Kyt = { + type: String, + component: At, + buttonText: String, + buttonTextKey: String, + dateProfileGeneratorClass: At, + usesMinMaxTime: Boolean, + classNames: At, + content: At, + didMount: At, + willUnmount: At +}; +function w4(e) { + return f7(e, Eb); +} +function KD(e, t) { + let r = {}, n = {}; + for (let i in t) + i in e && (r[i] = t[i](e[i])); + for (let i in e) + i in t || (n[i] = e[i]); + return { refined: r, extra: n }; +} +function At(e) { + return e; +} +const { hasOwnProperty: x2 } = Object.prototype; +function f7(e, t) { + let r = {}; + if (t) { + for (let n in t) + if (t[n] === Cb) { + let i = []; + for (let a = e.length - 1; a >= 0; a -= 1) { + let o = e[a][n]; + if (typeof o == "object" && o) + i.unshift(o); + else if (o !== void 0) { + r[n] = o; + break; + } + } + i.length && (r[n] = f7(i)); + } + } + for (let n = e.length - 1; n >= 0; n -= 1) { + let i = e[n]; + for (let a in i) + a in r || (r[a] = i[a]); + } + return r; +} +function Qm(e, t) { + let r = {}; + for (let n in e) + t(e[n], n) && (r[n] = e[n]); + return r; +} +function _l(e, t) { + let r = {}; + for (let n in e) + r[n] = t(e[n], n); + return r; +} +function swe(e) { + let t = {}; + for (let r of e) + t[r] = !0; + return t; +} +function p7(e) { + let t = []; + for (let r in e) + t.push(e[r]); + return t; +} +function Cc(e, t) { + if (e === t) + return !0; + for (let r in e) + if (x2.call(e, r) && !(r in t)) + return !1; + for (let r in t) + if (x2.call(t, r) && e[r] !== t[r]) + return !1; + return !0; +} +const Zyt = /^on[A-Z]/; +function qyt(e, t) { + const r = i6(e, t); + for (let n of r) + if (!Zyt.test(n)) + return !1; + return !0; +} +function i6(e, t) { + let r = []; + for (let n in e) + x2.call(e, n) && (n in t || r.push(n)); + for (let n in t) + x2.call(t, n) && e[n] !== t[n] && r.push(n); + return r; +} +function YN(e, t, r = {}) { + if (e === t) + return !0; + for (let n in t) + if (!(n in e && Jyt(e[n], t[n], r[n]))) + return !1; + for (let n in e) + if (!(n in t)) + return !1; + return !0; +} +function Jyt(e, t, r) { + return e === t || r === !0 ? !0 : r ? r(e, t) : !1; +} +function lwe(e, t = 0, r, n = 1) { + let i = []; + r == null && (r = Object.keys(e).length); + for (let a = t; a < r; a += n) { + let o = e[a]; + o !== void 0 && i.push(o); + } + return i; +} +let cwe = {}; +function Qyt(e, t) { + cwe[e] = t; +} +function e_t(e) { + return new cwe[e](); +} +class t_t { + getMarkerYear(t) { + return t.getUTCFullYear(); + } + getMarkerMonth(t) { + return t.getUTCMonth(); + } + getMarkerDay(t) { + return t.getUTCDate(); + } + arrayToMarker(t) { + return Th(t); + } + markerToArray(t) { + return i0(t); + } +} +Qyt("gregory", t_t); +const r_t = /^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/; +function n_t(e) { + let t = r_t.exec(e); + if (t) { + let r = new Date(Date.UTC(Number(t[1]), t[3] ? Number(t[3]) - 1 : 0, Number(t[5] || 1), Number(t[7] || 0), Number(t[8] || 0), Number(t[10] || 0), t[12] ? +`0.${t[12]}` * 1e3 : 0)); + if (h7(r)) { + let n = null; + return t[13] && (n = (t[15] === "-" ? -1 : 1) * (Number(t[16] || 0) * 60 + Number(t[18] || 0))), { + marker: r, + isTimeUnspecified: !t[6], + timeZoneOffset: n + }; + } + } + return null; +} +class i_t { + constructor(t) { + let r = this.timeZone = t.timeZone, n = r !== "local" && r !== "UTC"; + t.namedTimeZoneImpl && n && (this.namedTimeZoneImpl = new t.namedTimeZoneImpl(r)), this.canComputeOffset = !!(!n || this.namedTimeZoneImpl), this.calendarSystem = e_t(t.calendarSystem), this.locale = t.locale, this.weekDow = t.locale.week.dow, this.weekDoy = t.locale.week.doy, t.weekNumberCalculation === "ISO" && (this.weekDow = 1, this.weekDoy = 4), typeof t.firstDay == "number" && (this.weekDow = t.firstDay), typeof t.weekNumberCalculation == "function" && (this.weekNumberFunc = t.weekNumberCalculation), this.weekText = t.weekText != null ? t.weekText : t.locale.options.weekText, this.weekTextLong = (t.weekTextLong != null ? t.weekTextLong : t.locale.options.weekTextLong) || this.weekText, this.cmdFormatter = t.cmdFormatter, this.defaultSeparator = t.defaultSeparator; + } + // Creating / Parsing + createMarker(t) { + let r = this.createMarkerMeta(t); + return r === null ? null : r.marker; + } + createNowMarker() { + return this.canComputeOffset ? this.timestampToMarker((/* @__PURE__ */ new Date()).valueOf()) : Th(fde(/* @__PURE__ */ new Date())); + } + createMarkerMeta(t) { + if (typeof t == "string") + return this.parse(t); + let r = null; + return typeof t == "number" ? r = this.timestampToMarker(t) : t instanceof Date ? (t = t.valueOf(), isNaN(t) || (r = this.timestampToMarker(t))) : Array.isArray(t) && (r = Th(t)), r === null || !h7(r) ? null : { marker: r, isTimeUnspecified: !1, forcedTzo: null }; + } + parse(t) { + let r = n_t(t); + if (r === null) + return null; + let { marker: n } = r, i = null; + return r.timeZoneOffset !== null && (this.canComputeOffset ? n = this.timestampToMarker(n.valueOf() - r.timeZoneOffset * 60 * 1e3) : i = r.timeZoneOffset), { marker: n, isTimeUnspecified: r.isTimeUnspecified, forcedTzo: i }; + } + // Accessors + getYear(t) { + return this.calendarSystem.getMarkerYear(t); + } + getMonth(t) { + return this.calendarSystem.getMarkerMonth(t); + } + getDay(t) { + return this.calendarSystem.getMarkerDay(t); + } + // Adding / Subtracting + add(t, r) { + let n = this.calendarSystem.markerToArray(t); + return n[0] += r.years, n[1] += r.months, n[2] += r.days, n[6] += r.milliseconds, this.calendarSystem.arrayToMarker(n); + } + subtract(t, r) { + let n = this.calendarSystem.markerToArray(t); + return n[0] -= r.years, n[1] -= r.months, n[2] -= r.days, n[6] -= r.milliseconds, this.calendarSystem.arrayToMarker(n); + } + addYears(t, r) { + let n = this.calendarSystem.markerToArray(t); + return n[0] += r, this.calendarSystem.arrayToMarker(n); + } + addMonths(t, r) { + let n = this.calendarSystem.markerToArray(t); + return n[1] += r, this.calendarSystem.arrayToMarker(n); + } + // Diffing Whole Units + diffWholeYears(t, r) { + let { calendarSystem: n } = this; + return a0(t) === a0(r) && n.getMarkerDay(t) === n.getMarkerDay(r) && n.getMarkerMonth(t) === n.getMarkerMonth(r) ? n.getMarkerYear(r) - n.getMarkerYear(t) : null; + } + diffWholeMonths(t, r) { + let { calendarSystem: n } = this; + return a0(t) === a0(r) && n.getMarkerDay(t) === n.getMarkerDay(r) ? n.getMarkerMonth(r) - n.getMarkerMonth(t) + (n.getMarkerYear(r) - n.getMarkerYear(t)) * 12 : null; + } + // Range / Duration + greatestWholeUnit(t, r) { + let n = this.diffWholeYears(t, r); + return n !== null ? { unit: "year", value: n } : (n = this.diffWholeMonths(t, r), n !== null ? { unit: "month", value: n } : (n = xyt(t, r), n !== null ? { unit: "week", value: n } : (n = ZR(t, r), n !== null ? { unit: "day", value: n } : (n = Cyt(t, r), rE(n) ? { unit: "hour", value: n } : (n = Tyt(t, r), rE(n) ? { unit: "minute", value: n } : (n = wyt(t, r), rE(n) ? { unit: "second", value: n } : { unit: "millisecond", value: r.valueOf() - t.valueOf() })))))); + } + countDurationsBetween(t, r, n) { + let i; + return n.years && (i = this.diffWholeYears(t, r), i !== null) ? i / myt(n) : n.months && (i = this.diffWholeMonths(t, r), i !== null) ? i / yyt(n) : n.days && (i = ZR(t, r), i !== null) ? i / Ow(n) : (r.valueOf() - t.valueOf()) / Kc(n); + } + // Start-Of + // these DON'T return zoned-dates. only UTC start-of dates + startOf(t, r) { + return r === "year" ? this.startOfYear(t) : r === "month" ? this.startOfMonth(t) : r === "week" ? this.startOfWeek(t) : r === "day" ? ho(t) : r === "hour" ? Ayt(t) : r === "minute" ? Ryt(t) : r === "second" ? Dyt(t) : null; + } + startOfYear(t) { + return this.calendarSystem.arrayToMarker([ + this.calendarSystem.getMarkerYear(t) + ]); + } + startOfMonth(t) { + return this.calendarSystem.arrayToMarker([ + this.calendarSystem.getMarkerYear(t), + this.calendarSystem.getMarkerMonth(t) + ]); + } + startOfWeek(t) { + return this.calendarSystem.arrayToMarker([ + this.calendarSystem.getMarkerYear(t), + this.calendarSystem.getMarkerMonth(t), + t.getUTCDate() - (t.getUTCDay() - this.weekDow + 7) % 7 + ]); + } + // Week Number + computeWeekNumber(t) { + return this.weekNumberFunc ? this.weekNumberFunc(this.toDate(t)) : Oyt(t, this.weekDow, this.weekDoy); + } + // TODO: choke on timeZoneName: long + format(t, r, n = {}) { + return r.format({ + marker: t, + timeZoneOffset: n.forcedTzo != null ? n.forcedTzo : this.offsetForMarker(t) + }, this); + } + formatRange(t, r, n, i = {}) { + return i.isEndExclusive && (r = Jm(r, -1)), n.formatRange({ + marker: t, + timeZoneOffset: i.forcedStartTzo != null ? i.forcedStartTzo : this.offsetForMarker(t) + }, { + marker: r, + timeZoneOffset: i.forcedEndTzo != null ? i.forcedEndTzo : this.offsetForMarker(r) + }, this, i.defaultSeparator); + } + /* + DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that, + might as well use buildIsoString or some other util directly + */ + formatIso(t, r = {}) { + let n = null; + return r.omitTimeZoneOffset || (r.forcedTzo != null ? n = r.forcedTzo : n = this.offsetForMarker(t)), MB(t, n, r.omitTime); + } + // TimeZone + timestampToMarker(t) { + return this.timeZone === "local" ? Th(fde(new Date(t))) : this.timeZone === "UTC" || !this.namedTimeZoneImpl ? new Date(t) : Th(this.namedTimeZoneImpl.timestampToArray(t)); + } + offsetForMarker(t) { + return this.timeZone === "local" ? -pde(i0(t)).getTimezoneOffset() : this.timeZone === "UTC" ? 0 : this.namedTimeZoneImpl ? this.namedTimeZoneImpl.offsetForArray(i0(t)) : null; + } + // Conversion + toDate(t, r) { + return this.timeZone === "local" ? pde(i0(t)) : this.timeZone === "UTC" ? new Date(t.valueOf()) : this.namedTimeZoneImpl ? new Date(t.valueOf() - this.namedTimeZoneImpl.offsetForArray(i0(t)) * 1e3 * 60) : new Date(t.valueOf() - (r || 0)); + } +} +class ZD { + constructor(t) { + this.iconOverrideOption && this.setIconOverride(t[this.iconOverrideOption]); + } + setIconOverride(t) { + let r, n; + if (typeof t == "object" && t) { + r = Object.assign({}, this.iconClasses); + for (n in t) + r[n] = this.applyIconOverridePrefix(t[n]); + this.iconClasses = r; + } else + t === !1 && (this.iconClasses = {}); + } + applyIconOverridePrefix(t) { + let r = this.iconOverridePrefix; + return r && t.indexOf(r) !== 0 && (t = r + t), t; + } + getClass(t) { + return this.classes[t] || ""; + } + getIconClass(t, r) { + let n; + return r && this.rtlIconClasses ? n = this.rtlIconClasses[t] || this.iconClasses[t] : n = this.iconClasses[t], n ? `${this.baseIconClass} ${n}` : ""; + } + getCustomButtonIconClass(t) { + let r; + return this.iconOverrideCustomButtonOption && (r = t[this.iconOverrideCustomButtonOption], r) ? `${this.baseIconClass} ${this.applyIconOverridePrefix(r)}` : ""; + } +} +ZD.prototype.classes = {}; +ZD.prototype.iconClasses = {}; +ZD.prototype.baseIconClass = ""; +ZD.prototype.iconOverridePrefix = ""; +function Jw(e) { + e(); + let t = hi.debounceRendering, r = []; + function n(i) { + r.push(i); + } + for (hi.debounceRendering = n, XR(De(a_t, {}), document.createElement("div")); r.length; ) + r.shift()(); + hi.debounceRendering = t; +} +class a_t extends pd { + render() { + return De("div", {}); + } + componentDidMount() { + this.setState({}); + } +} +function uwe(e) { + let t = Nmt(e), r = t.Provider; + return t.Provider = function() { + let n = !this.getChildContext, i = r.apply(this, arguments); + if (n) { + let a = []; + this.shouldComponentUpdate = (o) => { + this.props.value !== o.value && a.forEach((l) => { + l.context = o.value, l.forceUpdate(); + }); + }, this.sub = (o) => { + a.push(o); + let l = o.componentWillUnmount; + o.componentWillUnmount = () => { + a.splice(a.indexOf(o), 1), l && l.call(o); + }; + }; + } + return i; + }, t; +} +class o_t { + constructor(t, r, n, i) { + this.execFunc = t, this.emitter = r, this.scrollTime = n, this.scrollTimeReset = i, this.handleScrollRequest = (a) => { + this.queuedRequest = Object.assign({}, this.queuedRequest || {}, a), this.drain(); + }, r.on("_scrollRequest", this.handleScrollRequest), this.fireInitialScroll(); + } + detach() { + this.emitter.off("_scrollRequest", this.handleScrollRequest); + } + update(t) { + t && this.scrollTimeReset ? this.fireInitialScroll() : this.drain(); + } + fireInitialScroll() { + this.handleScrollRequest({ + time: this.scrollTime + }); + } + drain() { + this.queuedRequest && this.execFunc(this.queuedRequest) && (this.queuedRequest = null); + } +} +const gv = uwe({}); +function s_t(e, t, r, n, i, a, o, l, u, d, f, g, v) { + return { + dateEnv: i, + options: r, + pluginHooks: o, + emitter: d, + dispatch: l, + getCurrentData: u, + calendarApi: f, + viewSpec: e, + viewApi: t, + dateProfileGenerator: n, + theme: a, + isRtl: r.direction === "rtl", + addResizeHandler(y) { + d.on("_resize", y); + }, + removeResizeHandler(y) { + d.off("_resize", y); + }, + createScrollResponder(y) { + return new o_t(y, d, na(r.scrollTime), r.scrollTimeReset); + }, + registerInteractiveComponent: g, + unregisterInteractiveComponent: v + }; +} +class $E extends pd { + shouldComponentUpdate(t, r) { + return this.debug && console.log(i6(t, this.props), i6(r, this.state)), !YN(this.props, t, this.propEquality) || !YN(this.state, r, this.stateEquality); + } + // HACK for freakin' React StrictMode + safeSetState(t) { + YN(this.state, Object.assign(Object.assign({}, this.state), t), this.stateEquality) || this.setState(t); + } +} +$E.addPropsEquality = l_t; +$E.addStateEquality = c_t; +$E.contextType = gv; +$E.prototype.propEquality = {}; +$E.prototype.stateEquality = {}; +class Vn extends $E { +} +Vn.contextType = gv; +function l_t(e) { + let t = Object.create(this.prototype.propEquality); + Object.assign(t, e), this.prototype.propEquality = t; +} +function c_t(e) { + let t = Object.create(this.prototype.stateEquality); + Object.assign(t, e), this.prototype.stateEquality = t; +} +function wf(e, t) { + typeof e == "function" ? e(t) : e && (e.current = t); +} +class g7 extends Vn { + constructor() { + super(...arguments), this.id = pv(), this.queuedDomNodes = [], this.currentDomNodes = [], this.handleEl = (t) => { + const { options: r } = this.context, { generatorName: n } = this.props; + (!r.customRenderingReplaces || !a6(n, r)) && this.updateElRef(t); + }, this.updateElRef = (t) => { + this.props.elRef && wf(this.props.elRef, t); + }; + } + render() { + const { props: t, context: r } = this, { options: n } = r, { customGenerator: i, defaultGenerator: a, renderProps: o } = t, l = hwe(t, [], this.handleEl); + let u = !1, d, f = [], g; + if (i != null) { + const v = typeof i == "function" ? i(o, De) : i; + if (v === !0) + u = !0; + else { + const y = v && typeof v == "object"; + y && "html" in v ? l.dangerouslySetInnerHTML = { __html: v.html } : y && "domNodes" in v ? f = Array.prototype.slice.call(v.domNodes) : (y ? DTe(v) : typeof v != "function") ? d = v : g = v; + } + } else + u = !a6(t.generatorName, n); + return u && a && (d = a(o)), this.queuedDomNodes = f, this.currentGeneratorMeta = g, De(t.elTag, l, d); + } + componentDidMount() { + this.applyQueueudDomNodes(), this.triggerCustomRendering(!0); + } + componentDidUpdate() { + this.applyQueueudDomNodes(), this.triggerCustomRendering(!0); + } + componentWillUnmount() { + this.triggerCustomRendering(!1); + } + triggerCustomRendering(t) { + var r; + const { props: n, context: i } = this, { handleCustomRendering: a, customRenderingMetaMap: o } = i.options; + if (a) { + const l = (r = this.currentGeneratorMeta) !== null && r !== void 0 ? r : o == null ? void 0 : o[n.generatorName]; + l && a(Object.assign(Object.assign({ + id: this.id, + isActive: t, + containerEl: this.base, + reportNewContainerEl: this.updateElRef, + // front-end framework tells us about new container els + generatorMeta: l + }, n), { elClasses: (n.elClasses || []).filter(u_t) })); + } + } + applyQueueudDomNodes() { + const { queuedDomNodes: t, currentDomNodes: r } = this, n = this.base; + if (!_d(t, r)) { + r.forEach(DB); + for (let i of t) + n.appendChild(i); + this.currentDomNodes = t; + } + } +} +g7.addPropsEquality({ + elClasses: _d, + elStyle: Cc, + elAttrs: qyt, + renderProps: Cc +}); +function a6(e, t) { + var r; + return !!(t.handleCustomRendering && e && (!((r = t.customRenderingMetaMap) === null || r === void 0) && r[e])); +} +function hwe(e, t, r) { + const n = Object.assign(Object.assign({}, e.elAttrs), { ref: r }); + return (e.elClasses || t) && (n.className = (e.elClasses || []).concat(t || []).concat(n.className || []).filter(Boolean).join(" ")), e.elStyle && (n.style = e.elStyle), n; +} +function u_t(e) { + return !!e; +} +const dwe = uwe(0); +class is extends pd { + constructor() { + super(...arguments), this.InnerContent = h_t.bind(void 0, this), this.handleEl = (t) => { + this.el = t, this.props.elRef && (wf(this.props.elRef, t), t && this.didMountMisfire && this.componentDidMount()); + }; + } + render() { + const { props: t } = this, r = d_t(t.classNameGenerator, t.renderProps); + if (t.children) { + const n = hwe(t, r, this.handleEl), i = t.children(this.InnerContent, t.renderProps, n); + return t.elTag ? De(t.elTag, n, i) : i; + } else + return De(g7, Object.assign(Object.assign({}, t), { elRef: this.handleEl, elTag: t.elTag || "div", elClasses: (t.elClasses || []).concat(r), renderId: this.context })); + } + componentDidMount() { + var t, r; + this.el ? (r = (t = this.props).didMount) === null || r === void 0 || r.call(t, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el })) : this.didMountMisfire = !0; + } + componentWillUnmount() { + var t, r; + (r = (t = this.props).willUnmount) === null || r === void 0 || r.call(t, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el })); + } +} +is.contextType = dwe; +function h_t(e, t) { + const r = e.props; + return De(g7, Object.assign({ renderProps: r.renderProps, generatorName: r.generatorName, customGenerator: r.customGenerator, defaultGenerator: r.defaultGenerator, renderId: e.context }, t)); +} +function d_t(e, t) { + const r = typeof e == "function" ? e(t) : e || []; + return typeof r == "string" ? [r] : r; +} +class w0 extends Vn { + render() { + let { props: t, context: r } = this, { options: n } = r, i = { view: r.viewApi }; + return De(is, Object.assign({}, t, { elTag: t.elTag || "div", elClasses: [ + ...fwe(t.viewSpec), + ...t.elClasses || [] + ], renderProps: i, classNameGenerator: n.viewClassNames, generatorName: void 0, didMount: n.viewDidMount, willUnmount: n.viewWillUnmount }), () => t.children); + } +} +function fwe(e) { + return [ + `fc-${e.type}-view`, + "fc-view" + ]; +} +function f_t(e, t) { + let r = null, n = null; + return e.start && (r = t.createMarker(e.start)), e.end && (n = t.createMarker(e.end)), !r && !n || r && n && n < r ? null : { start: r, end: n }; +} +function Ede(e, t) { + let r = [], { start: n } = t, i, a; + for (e.sort(p_t), i = 0; i < e.length; i += 1) + a = e[i], a.start > n && r.push({ start: n, end: a.start }), a.end > n && (n = a.end); + return n < t.end && r.push({ start: n, end: t.end }), r; +} +function p_t(e, t) { + return e.start.valueOf() - t.start.valueOf(); +} +function cv(e, t) { + let { start: r, end: n } = e, i = null; + return t.start !== null && (r === null ? r = t.start : r = new Date(Math.max(r.valueOf(), t.start.valueOf()))), t.end != null && (n === null ? n = t.end : n = new Date(Math.min(n.valueOf(), t.end.valueOf()))), (r === null || n === null || r < n) && (i = { start: r, end: n }), i; +} +function pwe(e, t) { + return (e.start === null ? null : e.start.valueOf()) === (t.start === null ? null : t.start.valueOf()) && (e.end === null ? null : e.end.valueOf()) === (t.end === null ? null : t.end.valueOf()); +} +function kB(e, t) { + return (e.end === null || t.start === null || e.end > t.start) && (e.start === null || t.end === null || e.start < t.end); +} +function PB(e, t) { + return (e.start === null || t.start !== null && t.start >= e.start) && (e.end === null || t.end !== null && t.end <= e.end); +} +function tv(e, t) { + return (e.start === null || t >= e.start) && (e.end === null || t < e.end); +} +function g_t(e, t) { + return t.start != null && e < t.start ? t.start : t.end != null && e >= t.end ? new Date(t.end.valueOf() - 1) : e; +} +function gwe(e) { + let t = Math.floor(N0(e.start, e.end)) || 1, r = ho(e.start), n = yl(r, t); + return { start: r, end: n }; +} +function NB(e, t = na(0)) { + let r = null, n = null; + if (e.end) { + n = ho(e.end); + let i = e.end.valueOf() - n.valueOf(); + i && i >= Kc(t) && (n = yl(n, 1)); + } + return e.start && (r = ho(e.start), n && n <= r && (n = yl(r, 1))), { start: r, end: n }; +} +function v_t(e) { + let t = NB(e); + return N0(t.start, t.end) > 1; +} +function pw(e, t, r, n) { + return n === "year" ? na(r.diffWholeYears(e, t), "year") : n === "month" ? na(r.diffWholeMonths(e, t), "month") : Iyt(e, t); +} +function m_t(e, t) { + switch (t.type) { + case "CHANGE_DATE": + return t.dateMarker; + default: + return e; + } +} +function y_t(e, t) { + let r = e.initialDate; + return r != null ? t.createMarker(r) : qD(e.now, t); +} +function qD(e, t) { + return typeof e == "function" && (e = e()), e == null ? t.createNowMarker() : t.createMarker(e); +} +class vwe { + constructor(t) { + this.props = t, this.nowDate = qD(t.nowInput, t.dateEnv), this.initHiddenDays(); + } + /* Date Range Computation + ------------------------------------------------------------------------------------------------------------------*/ + // Builds a structure with info about what the dates/ranges will be for the "prev" view. + buildPrev(t, r, n) { + let { dateEnv: i } = this.props, a = i.subtract( + i.startOf(r, t.currentRangeUnit), + // important for start-of-month + t.dateIncrement + ); + return this.build(a, -1, n); + } + // Builds a structure with info about what the dates/ranges will be for the "next" view. + buildNext(t, r, n) { + let { dateEnv: i } = this.props, a = i.add( + i.startOf(r, t.currentRangeUnit), + // important for start-of-month + t.dateIncrement + ); + return this.build(a, 1, n); + } + // Builds a structure holding dates/ranges for rendering around the given date. + // Optional direction param indicates whether the date is being incremented/decremented + // from its previous value. decremented = -1, incremented = 1 (default). + build(t, r, n = !0) { + let { props: i } = this, a, o, l, u, d, f; + return a = this.buildValidRange(), a = this.trimHiddenDays(a), n && (t = g_t(t, a)), o = this.buildCurrentRangeInfo(t, r), l = /^(year|month|week|day)$/.test(o.unit), u = this.buildRenderRange(this.trimHiddenDays(o.range), o.unit, l), u = this.trimHiddenDays(u), d = u, i.showNonCurrentDates || (d = cv(d, o.range)), d = this.adjustActiveRange(d), d = cv(d, a), f = kB(o.range, a), tv(u, t) || (t = u.start), { + currentDate: t, + // constraint for where prev/next operations can go and where events can be dragged/resized to. + // an object with optional start and end properties. + validRange: a, + // range the view is formally responsible for. + // for example, a month view might have 1st-31st, excluding padded dates + currentRange: o.range, + // name of largest unit being displayed, like "month" or "week" + currentRangeUnit: o.unit, + isRangeAllDay: l, + // dates that display events and accept drag-n-drop + // will be `null` if no dates accept events + activeRange: d, + // date range with a rendered skeleton + // includes not-active days that need some sort of DOM + renderRange: u, + // Duration object that denotes the first visible time of any given day + slotMinTime: i.slotMinTime, + // Duration object that denotes the exclusive visible end time of any given day + slotMaxTime: i.slotMaxTime, + isValid: f, + // how far the current date will move for a prev/next operation + dateIncrement: this.buildDateIncrement(o.duration) + // pass a fallback (might be null) ^ + }; + } + // Builds an object with optional start/end properties. + // Indicates the minimum/maximum dates to display. + // not responsible for trimming hidden days. + buildValidRange() { + let t = this.props.validRangeInput, r = typeof t == "function" ? t.call(this.props.calendarApi, this.nowDate) : t; + return this.refineRange(r) || { start: null, end: null }; + } + // Builds a structure with info about the "current" range, the range that is + // highlighted as being the current month for example. + // See build() for a description of `direction`. + // Guaranteed to have `range` and `unit` properties. `duration` is optional. + buildCurrentRangeInfo(t, r) { + let { props: n } = this, i = null, a = null, o = null, l; + return n.duration ? (i = n.duration, a = n.durationUnit, o = this.buildRangeFromDuration(t, r, i, a)) : (l = this.props.dayCount) ? (a = "day", o = this.buildRangeFromDayCount(t, r, l)) : (o = this.buildCustomVisibleRange(t)) ? a = n.dateEnv.greatestWholeUnit(o.start, o.end).unit : (i = this.getFallbackDuration(), a = T0(i).unit, o = this.buildRangeFromDuration(t, r, i, a)), { duration: i, unit: a, range: o }; + } + getFallbackDuration() { + return na({ day: 1 }); + } + // Returns a new activeRange to have time values (un-ambiguate) + // slotMinTime or slotMaxTime causes the range to expand. + adjustActiveRange(t) { + let { dateEnv: r, usesMinMaxTime: n, slotMinTime: i, slotMaxTime: a } = this.props, { start: o, end: l } = t; + return n && (Ow(i) < 0 && (o = ho(o), o = r.add(o, i)), Ow(a) > 1 && (l = ho(l), l = yl(l, -1), l = r.add(l, a))), { start: o, end: l }; + } + // Builds the "current" range when it is specified as an explicit duration. + // `unit` is the already-computed greatestDurationDenominator unit of duration. + buildRangeFromDuration(t, r, n, i) { + let { dateEnv: a, dateAlignment: o } = this.props, l, u, d; + if (!o) { + let { dateIncrement: g } = this.props; + g && Kc(g) < Kc(n) ? o = T0(g).unit : o = i; + } + Ow(n) <= 1 && this.isHiddenDay(l) && (l = this.skipHiddenDays(l, r), l = ho(l)); + function f() { + l = a.startOf(t, o), u = a.add(l, n), d = { start: l, end: u }; + } + return f(), this.trimHiddenDays(d) || (t = this.skipHiddenDays(t, r), f()), d; + } + // Builds the "current" range when a dayCount is specified. + buildRangeFromDayCount(t, r, n) { + let { dateEnv: i, dateAlignment: a } = this.props, o = 0, l = t, u; + a && (l = i.startOf(l, a)), l = ho(l), l = this.skipHiddenDays(l, r), u = l; + do + u = yl(u, 1), this.isHiddenDay(u) || (o += 1); + while (o < n); + return { start: l, end: u }; + } + // Builds a normalized range object for the "visible" range, + // which is a way to define the currentRange and activeRange at the same time. + buildCustomVisibleRange(t) { + let { props: r } = this, n = r.visibleRangeInput, i = typeof n == "function" ? n.call(r.calendarApi, r.dateEnv.toDate(t)) : n, a = this.refineRange(i); + return a && (a.start == null || a.end == null) ? null : a; + } + // Computes the range that will represent the element/cells for *rendering*, + // but which may have voided days/times. + // not responsible for trimming hidden days. + buildRenderRange(t, r, n) { + return t; + } + // Compute the duration value that should be added/substracted to the current date + // when a prev/next operation happens. + buildDateIncrement(t) { + let { dateIncrement: r } = this.props, n; + return r || ((n = this.props.dateAlignment) ? na(1, n) : t || na({ days: 1 })); + } + refineRange(t) { + if (t) { + let r = f_t(t, this.props.dateEnv); + return r && (r = NB(r)), r; + } + return null; + } + /* Hidden Days + ------------------------------------------------------------------------------------------------------------------*/ + // Initializes internal variables related to calculating hidden days-of-week + initHiddenDays() { + let t = this.props.hiddenDays || [], r = [], n = 0, i; + for (this.props.weekends === !1 && t.push(0, 6), i = 0; i < 7; i += 1) + (r[i] = t.indexOf(i) !== -1) || (n += 1); + if (!n) + throw new Error("invalid hiddenDays"); + this.isHiddenDayHash = r; + } + // Remove days from the beginning and end of the range that are computed as hidden. + // If the whole range is trimmed off, returns null + trimHiddenDays(t) { + let { start: r, end: n } = t; + return r && (r = this.skipHiddenDays(r)), n && (n = this.skipHiddenDays(n, -1, !0)), r == null || n == null || r < n ? { start: r, end: n } : null; + } + // Is the current day hidden? + // `day` is a day-of-week index (0-6), or a Date (used for UTC) + isHiddenDay(t) { + return t instanceof Date && (t = t.getUTCDay()), this.isHiddenDayHash[t]; + } + // Incrementing the current day until it is no longer a hidden day, returning a copy. + // DOES NOT CONSIDER validRange! + // If the initial value of `date` is not a hidden day, don't do anything. + // Pass `isExclusive` as `true` if you are dealing with an end date. + // `inc` defaults to `1` (increment one day forward each time) + skipHiddenDays(t, r = 1, n = !1) { + for (; this.isHiddenDayHash[(t.getUTCDay() + (n ? r : 0) + 7) % 7]; ) + t = yl(t, r); + return t; + } +} +function v7(e, t, r, n) { + return { + instanceId: pv(), + defId: e, + range: t, + forcedStartTzo: r == null ? null : r, + forcedEndTzo: n == null ? null : n + }; +} +function __t(e, t, r, n) { + for (let i = 0; i < n.length; i += 1) { + let a = n[i].parse(e, r); + if (a) { + let { allDay: o } = e; + return o == null && (o = t, o == null && (o = a.allDayGuess, o == null && (o = !1))), { + allDay: o, + duration: a.duration, + typeData: a.typeData, + typeId: i + }; + } + } + return null; +} +function CE(e, t, r) { + let { dateEnv: n, pluginHooks: i, options: a } = r, { defs: o, instances: l } = e; + l = Qm(l, (u) => !o[u.defId].recurringDef); + for (let u in o) { + let d = o[u]; + if (d.recurringDef) { + let { duration: f } = d.recurringDef; + f || (f = d.allDay ? a.defaultAllDayEventDuration : a.defaultTimedEventDuration); + let g = S_t(d, f, t, n, i.recurringTypes); + for (let v of g) { + let y = v7(u, { + start: v, + end: n.add(v, f) + }); + l[y.instanceId] = y; + } + } + } + return { defs: o, instances: l }; +} +function S_t(e, t, r, n, i) { + let o = i[e.recurringDef.typeId].expand(e.recurringDef.typeData, { + start: n.subtract(r.start, t), + end: r.end + }, n); + return e.allDay && (o = o.map(ho)), o; +} +const XN = { + id: String, + groupId: String, + title: String, + url: String, + interactive: Boolean +}, mwe = { + start: At, + end: At, + date: At, + allDay: Boolean +}, b_t = Object.assign(Object.assign(Object.assign({}, XN), mwe), { extendedProps: At }); +function ywe(e, t, r, n, i = m7(r), a, o) { + let { refined: l, extra: u } = _we(e, r, i), d = C_t(t, r), f = __t(l, d, r.dateEnv, r.pluginHooks.recurringTypes); + if (f) { + let v = o6(l, u, t ? t.sourceId : "", f.allDay, !!f.duration, r, a); + return v.recurringDef = { + typeId: f.typeId, + typeData: f.typeData, + duration: f.duration + }, { def: v, instance: null }; + } + let g = E_t(l, d, r, n); + if (g) { + let v = o6(l, u, t ? t.sourceId : "", g.allDay, g.hasEnd, r, a), y = v7(v.defId, g.range, g.forcedStartTzo, g.forcedEndTzo); + return o && v.publicId && o[v.publicId] && (y.instanceId = o[v.publicId]), { def: v, instance: y }; + } + return null; +} +function _we(e, t, r = m7(t)) { + return KD(e, r); +} +function m7(e) { + return Object.assign(Object.assign(Object.assign({}, A2), b_t), e.pluginHooks.eventRefiners); +} +function o6(e, t, r, n, i, a, o) { + let l = { + title: e.title || "", + groupId: e.groupId || "", + publicId: e.id || "", + url: e.url || "", + recurringDef: null, + defId: (o && e.id ? o[e.id] : "") || pv(), + sourceId: r, + allDay: n, + hasEnd: i, + interactive: e.interactive, + ui: JR(e, a), + extendedProps: Object.assign(Object.assign({}, e.extendedProps || {}), t) + }; + for (let u of a.pluginHooks.eventDefMemberAdders) + Object.assign(l, u(e)); + return Object.freeze(l.ui.classNames), Object.freeze(l.extendedProps), l; +} +function E_t(e, t, r, n) { + let { allDay: i } = e, a, o = null, l = !1, u, d = null, f = e.start != null ? e.start : e.date; + if (a = r.dateEnv.createMarkerMeta(f), a) + o = a.marker; + else if (!n) + return null; + return e.end != null && (u = r.dateEnv.createMarkerMeta(e.end)), i == null && (t != null ? i = t : i = (!a || a.isTimeUnspecified) && (!u || u.isTimeUnspecified)), i && o && (o = ho(o)), u && (d = u.marker, i && (d = ho(d)), o && d <= o && (d = null)), d ? l = !0 : n || (l = r.options.forceEventDuration || !1, d = r.dateEnv.add(o, i ? r.options.defaultAllDayEventDuration : r.options.defaultTimedEventDuration)), { + allDay: i, + hasEnd: l, + range: { start: o, end: d }, + forcedStartTzo: a ? a.forcedTzo : null, + forcedEndTzo: u ? u.forcedTzo : null + }; +} +function C_t(e, t) { + let r = null; + return e && (r = e.defaultAllDay), r == null && (r = t.options.defaultAllDay), r; +} +function qR(e, t, r, n, i, a) { + let o = gd(), l = m7(r); + for (let u of e) { + let d = ywe(u, t, r, n, l, i, a); + d && s6(d, o); + } + return o; +} +function s6(e, t = gd()) { + return t.defs[e.def.defId] = e.def, e.instance && (t.instances[e.instance.instanceId] = e.instance), t; +} +function y7(e, t) { + let r = e.instances[t]; + if (r) { + let n = e.defs[r.defId], i = FB(e, (a) => T_t(n, a)); + return i.defs[n.defId] = n, i.instances[r.instanceId] = r, i; + } + return gd(); +} +function T_t(e, t) { + return !!(e.groupId && e.groupId === t.groupId); +} +function gd() { + return { defs: {}, instances: {} }; +} +function LB(e, t) { + return { + defs: Object.assign(Object.assign({}, e.defs), t.defs), + instances: Object.assign(Object.assign({}, e.instances), t.instances) + }; +} +function FB(e, t) { + let r = Qm(e.defs, t), n = Qm(e.instances, (i) => r[i.defId]); + return { defs: r, instances: n }; +} +function w_t(e, t) { + let { defs: r, instances: n } = e, i = {}, a = {}; + for (let o in r) + t.defs[o] || (i[o] = r[o]); + for (let o in n) + !t.instances[o] && // not explicitly excluded + i[n[o].defId] && (a[o] = n[o]); + return { + defs: i, + instances: a + }; +} +function I_t(e, t) { + return Array.isArray(e) ? qR(e, null, t, !0) : typeof e == "object" && e ? qR([e], null, t, !0) : e != null ? String(e) : null; +} +function l6(e) { + return Array.isArray(e) ? e : typeof e == "string" ? e.split(/\s+/) : []; +} +const A2 = { + display: String, + editable: Boolean, + startEditable: Boolean, + durationEditable: Boolean, + constraint: At, + overlap: At, + allow: At, + className: l6, + classNames: l6, + color: String, + backgroundColor: String, + borderColor: String, + textColor: String +}, x_t = { + display: null, + startEditable: null, + durationEditable: null, + constraints: [], + overlap: null, + allows: [], + backgroundColor: "", + borderColor: "", + textColor: "", + classNames: [] +}; +function JR(e, t) { + let r = I_t(e.constraint, t); + return { + display: e.display || null, + startEditable: e.startEditable != null ? e.startEditable : e.editable, + durationEditable: e.durationEditable != null ? e.durationEditable : e.editable, + constraints: r != null ? [r] : [], + overlap: e.overlap != null ? e.overlap : null, + allows: e.allow != null ? [e.allow] : [], + backgroundColor: e.backgroundColor || e.color || "", + borderColor: e.borderColor || e.color || "", + textColor: e.textColor || "", + classNames: (e.className || []).concat(e.classNames || []) + // join singular and plural + }; +} +function _7(e) { + return e.reduce(A_t, x_t); +} +function A_t(e, t) { + return { + display: t.display != null ? t.display : e.display, + startEditable: t.startEditable != null ? t.startEditable : e.startEditable, + durationEditable: t.durationEditable != null ? t.durationEditable : e.durationEditable, + constraints: e.constraints.concat(t.constraints), + overlap: typeof t.overlap == "boolean" ? t.overlap : e.overlap, + allows: e.allows.concat(t.allows), + backgroundColor: t.backgroundColor || e.backgroundColor, + borderColor: t.borderColor || e.borderColor, + textColor: t.textColor || e.textColor, + classNames: e.classNames.concat(t.classNames) + }; +} +const R_t = { + id: String, + defaultAllDay: Boolean, + url: String, + format: String, + events: At, + eventDataTransform: At, + // for any network-related sources + success: At, + failure: At +}; +function Swe(e, t, r = bwe(t)) { + let n; + if (typeof e == "string" ? n = { url: e } : typeof e == "function" || Array.isArray(e) ? n = { events: e } : typeof e == "object" && e && (n = e), n) { + let { refined: i, extra: a } = KD(n, r), o = D_t(i, t); + if (o) + return { + _raw: e, + isFetching: !1, + latestFetchId: "", + fetchRange: null, + defaultAllDay: i.defaultAllDay, + eventDataTransform: i.eventDataTransform, + success: i.success, + failure: i.failure, + publicId: i.id || "", + sourceId: pv(), + sourceDefId: o.sourceDefId, + meta: o.meta, + ui: JR(i, t), + extendedProps: a + }; + } + return null; +} +function bwe(e) { + return Object.assign(Object.assign(Object.assign({}, A2), R_t), e.pluginHooks.eventSourceRefiners); +} +function D_t(e, t) { + let r = t.pluginHooks.eventSourceDefs; + for (let n = r.length - 1; n >= 0; n -= 1) { + let a = r[n].parseMeta(e); + if (a) + return { sourceDefId: n, meta: a }; + } + return null; +} +function O_t(e, t, r, n, i) { + switch (t.type) { + case "RECEIVE_EVENTS": + return M_t(e, r[t.sourceId], t.fetchId, t.fetchRange, t.rawEvents, i); + case "RESET_RAW_EVENTS": + return k_t(e, r[t.sourceId], t.rawEvents, n.activeRange, i); + case "ADD_EVENTS": + return P_t( + e, + t.eventStore, + // new ones + n ? n.activeRange : null, + i + ); + case "RESET_EVENTS": + return t.eventStore; + case "MERGE_EVENTS": + return LB(e, t.eventStore); + case "PREV": + case "NEXT": + case "CHANGE_DATE": + case "CHANGE_VIEW_TYPE": + return n ? CE(e, n.activeRange, i) : e; + case "REMOVE_EVENTS": + return w_t(e, t.eventStore); + case "REMOVE_EVENT_SOURCE": + return Cwe(e, t.sourceId); + case "REMOVE_ALL_EVENT_SOURCES": + return FB(e, (a) => !a.sourceId); + case "REMOVE_ALL_EVENTS": + return gd(); + default: + return e; + } +} +function M_t(e, t, r, n, i, a) { + if (t && // not already removed + r === t.latestFetchId) { + let o = qR(Ewe(i, t, a), t, a); + return n && (o = CE(o, n, a)), LB(Cwe(e, t.sourceId), o); + } + return e; +} +function k_t(e, t, r, n, i) { + const { defIdMap: a, instanceIdMap: o } = L_t(e); + let l = qR(Ewe(r, t, i), t, i, !1, a, o); + return CE(l, n, i); +} +function Ewe(e, t, r) { + let n = r.options.eventDataTransform, i = t ? t.eventDataTransform : null; + return i && (e = Cde(e, i)), n && (e = Cde(e, n)), e; +} +function Cde(e, t) { + let r; + if (!t) + r = e; + else { + r = []; + for (let n of e) { + let i = t(n); + i ? r.push(i) : i == null && r.push(n); + } + } + return r; +} +function P_t(e, t, r, n) { + return r && (t = CE(t, r, n)), LB(e, t); +} +function Tde(e, t, r) { + let { defs: n } = e, i = _l(e.instances, (a) => n[a.defId].allDay ? a : Object.assign(Object.assign({}, a), { range: { + start: r.createMarker(t.toDate(a.range.start, a.forcedStartTzo)), + end: r.createMarker(t.toDate(a.range.end, a.forcedEndTzo)) + }, forcedStartTzo: r.canComputeOffset ? null : a.forcedStartTzo, forcedEndTzo: r.canComputeOffset ? null : a.forcedEndTzo })); + return { defs: n, instances: i }; +} +function Cwe(e, t) { + return FB(e, (r) => r.sourceId !== t); +} +function N_t(e, t) { + return { + defs: e.defs, + instances: Qm(e.instances, (r) => !t[r.instanceId]) + }; +} +function L_t(e) { + const { defs: t, instances: r } = e, n = {}, i = {}; + for (let a in t) { + const o = t[a], { publicId: l } = o; + l && (n[l] = a); + } + for (let a in r) { + const o = r[a], l = t[o.defId], { publicId: u } = l; + u && (i[u] = a); + } + return { defIdMap: n, instanceIdMap: i }; +} +class JD { + constructor() { + this.handlers = {}, this.thisContext = null; + } + setThisContext(t) { + this.thisContext = t; + } + setOptions(t) { + this.options = t; + } + on(t, r) { + F_t(this.handlers, t, r); + } + off(t, r) { + B_t(this.handlers, t, r); + } + trigger(t, ...r) { + let n = this.handlers[t] || [], i = this.options && this.options[t], a = [].concat(i || [], n); + for (let o of a) + o.apply(this.thisContext, r); + } + hasHandlers(t) { + return !!(this.handlers[t] && this.handlers[t].length || this.options && this.options[t]); + } +} +function F_t(e, t, r) { + (e[t] || (e[t] = [])).push(r); +} +function B_t(e, t, r) { + r ? e[t] && (e[t] = e[t].filter((n) => n !== r)) : delete e[t]; +} +const U_t = { + startTime: "09:00", + endTime: "17:00", + daysOfWeek: [1, 2, 3, 4, 5], + display: "inverse-background", + classNames: "fc-non-business", + groupId: "_businessHours" + // so multiple defs get grouped +}; +function Twe(e, t) { + return qR(j_t(e), null, t); +} +function j_t(e) { + let t; + return e === !0 ? t = [{}] : Array.isArray(e) ? t = e.filter((r) => r.daysOfWeek) : typeof e == "object" && e ? t = [e] : t = [], t = t.map((r) => Object.assign(Object.assign({}, U_t), r)), t; +} +function wwe(e, t, r) { + r.emitter.trigger("select", Object.assign(Object.assign({}, S7(e, r)), { jsEvent: t ? t.origEvent : null, view: r.viewApi || r.calendarApi.view })); +} +function $_t(e, t) { + t.emitter.trigger("unselect", { + jsEvent: e ? e.origEvent : null, + view: t.viewApi || t.calendarApi.view + }); +} +function S7(e, t) { + let r = {}; + for (let n of t.pluginHooks.dateSpanTransforms) + Object.assign(r, n(e, t)); + return Object.assign(r, t0t(e, t.dateEnv)), r; +} +function wde(e, t, r) { + let { dateEnv: n, options: i } = r, a = t; + return e ? (a = ho(a), a = n.add(a, i.defaultAllDayEventDuration)) : a = n.add(a, i.defaultTimedEventDuration), a; +} +function b7(e, t, r, n) { + let i = R2(e.defs, t), a = gd(); + for (let o in e.defs) { + let l = e.defs[o]; + a.defs[o] = V_t(l, i[o], r, n); + } + for (let o in e.instances) { + let l = e.instances[o], u = a.defs[l.defId]; + a.instances[o] = z_t(l, u, i[l.defId], r, n); + } + return a; +} +function V_t(e, t, r, n) { + let i = r.standardProps || {}; + i.hasEnd == null && t.durationEditable && (r.startDelta || r.endDelta) && (i.hasEnd = !0); + let a = Object.assign(Object.assign(Object.assign({}, e), i), { ui: Object.assign(Object.assign({}, e.ui), i.ui) }); + r.extendedProps && (a.extendedProps = Object.assign(Object.assign({}, a.extendedProps), r.extendedProps)); + for (let o of n.pluginHooks.eventDefMutationAppliers) + o(a, r, n); + return !a.hasEnd && n.options.forceEventDuration && (a.hasEnd = !0), a; +} +function z_t(e, t, r, n, i) { + let { dateEnv: a } = i, o = n.standardProps && n.standardProps.allDay === !0, l = n.standardProps && n.standardProps.hasEnd === !1, u = Object.assign({}, e); + return o && (u.range = gwe(u.range)), n.datesDelta && r.startEditable && (u.range = { + start: a.add(u.range.start, n.datesDelta), + end: a.add(u.range.end, n.datesDelta) + }), n.startDelta && r.durationEditable && (u.range = { + start: a.add(u.range.start, n.startDelta), + end: u.range.end + }), n.endDelta && r.durationEditable && (u.range = { + start: u.range.start, + end: a.add(u.range.end, n.endDelta) + }), l && (u.range = { + start: u.range.start, + end: wde(t.allDay, u.range.start, i) + }), t.allDay && (u.range = { + start: ho(u.range.start), + end: ho(u.range.end) + }), u.range.end < u.range.start && (u.range.end = wde(t.allDay, u.range.start, i)), u; +} +class nw { + constructor(t, r) { + this.context = t, this.internalEventSource = r; + } + remove() { + this.context.dispatch({ + type: "REMOVE_EVENT_SOURCE", + sourceId: this.internalEventSource.sourceId + }); + } + refetch() { + this.context.dispatch({ + type: "FETCH_EVENT_SOURCES", + sourceIds: [this.internalEventSource.sourceId], + isRefetch: !0 + }); + } + get id() { + return this.internalEventSource.publicId; + } + get url() { + return this.internalEventSource.meta.url; + } + get format() { + return this.internalEventSource.meta.format; + } +} +class Vo { + // instance will be null if expressing a recurring event that has no current instances, + // OR if trying to validate an incoming external event that has no dates assigned + constructor(t, r, n) { + this._context = t, this._def = r, this._instance = n || null; + } + /* + TODO: make event struct more responsible for this + */ + setProp(t, r) { + if (t in mwe) + console.warn("Could not set date-related prop 'name'. Use one of the date-related methods instead."); + else if (t === "id") + r = XN[t](r), this.mutate({ + standardProps: { publicId: r } + // hardcoded internal name + }); + else if (t in XN) + r = XN[t](r), this.mutate({ + standardProps: { [t]: r } + }); + else if (t in A2) { + let n = A2[t](r); + t === "color" ? n = { backgroundColor: r, borderColor: r } : t === "editable" ? n = { startEditable: r, durationEditable: r } : n = { [t]: r }, this.mutate({ + standardProps: { ui: n } + }); + } else + console.warn(`Could not set prop '${t}'. Use setExtendedProp instead.`); + } + setExtendedProp(t, r) { + this.mutate({ + extendedProps: { [t]: r } + }); + } + setStart(t, r = {}) { + let { dateEnv: n } = this._context, i = n.createMarker(t); + if (i && this._instance) { + let a = this._instance.range, o = pw(a.start, i, n, r.granularity); + r.maintainDuration ? this.mutate({ datesDelta: o }) : this.mutate({ startDelta: o }); + } + } + setEnd(t, r = {}) { + let { dateEnv: n } = this._context, i; + if (!(t != null && (i = n.createMarker(t), !i)) && this._instance) + if (i) { + let a = pw(this._instance.range.end, i, n, r.granularity); + this.mutate({ endDelta: a }); + } else + this.mutate({ standardProps: { hasEnd: !1 } }); + } + setDates(t, r, n = {}) { + let { dateEnv: i } = this._context, a = { allDay: n.allDay }, o = i.createMarker(t), l; + if (o && !(r != null && (l = i.createMarker(r), !l)) && this._instance) { + let u = this._instance.range; + n.allDay === !0 && (u = gwe(u)); + let d = pw(u.start, o, i, n.granularity); + if (l) { + let f = pw(u.end, l, i, n.granularity); + gyt(d, f) ? this.mutate({ datesDelta: d, standardProps: a }) : this.mutate({ startDelta: d, endDelta: f, standardProps: a }); + } else + a.hasEnd = !1, this.mutate({ datesDelta: d, standardProps: a }); + } + } + moveStart(t) { + let r = na(t); + r && this.mutate({ startDelta: r }); + } + moveEnd(t) { + let r = na(t); + r && this.mutate({ endDelta: r }); + } + moveDates(t) { + let r = na(t); + r && this.mutate({ datesDelta: r }); + } + setAllDay(t, r = {}) { + let n = { allDay: t }, { maintainDuration: i } = r; + i == null && (i = this._context.options.allDayMaintainDuration), this._def.allDay !== t && (n.hasEnd = i), this.mutate({ standardProps: n }); + } + formatRange(t) { + let { dateEnv: r } = this._context, n = this._instance, i = co(t); + return this._def.hasEnd ? r.formatRange(n.range.start, n.range.end, i, { + forcedStartTzo: n.forcedStartTzo, + forcedEndTzo: n.forcedEndTzo + }) : r.format(n.range.start, i, { + forcedTzo: n.forcedStartTzo + }); + } + mutate(t) { + let r = this._instance; + if (r) { + let n = this._def, i = this._context, { eventStore: a } = i.getCurrentData(), o = y7(a, r.instanceId); + o = b7(o, { + "": { + display: "", + startEditable: !0, + durationEditable: !0, + constraints: [], + overlap: null, + allows: [], + backgroundColor: "", + borderColor: "", + textColor: "", + classNames: [] + } + }, t, i); + let u = new Vo(i, n, r); + this._def = o.defs[n.defId], this._instance = o.instances[r.instanceId], i.dispatch({ + type: "MERGE_EVENTS", + eventStore: o + }), i.emitter.trigger("eventChange", { + oldEvent: u, + event: this, + relatedEvents: nE(o, i, r), + revert() { + i.dispatch({ + type: "RESET_EVENTS", + eventStore: a + // the ORIGINAL store + }); + } + }); + } + } + remove() { + let t = this._context, r = Iwe(this); + t.dispatch({ + type: "REMOVE_EVENTS", + eventStore: r + }), t.emitter.trigger("eventRemove", { + event: this, + relatedEvents: [], + revert() { + t.dispatch({ + type: "MERGE_EVENTS", + eventStore: r + }); + } + }); + } + get source() { + let { sourceId: t } = this._def; + return t ? new nw(this._context, this._context.getCurrentData().eventSources[t]) : null; + } + get start() { + return this._instance ? this._context.dateEnv.toDate(this._instance.range.start) : null; + } + get end() { + return this._instance && this._def.hasEnd ? this._context.dateEnv.toDate(this._instance.range.end) : null; + } + get startStr() { + let t = this._instance; + return t ? this._context.dateEnv.formatIso(t.range.start, { + omitTime: this._def.allDay, + forcedTzo: t.forcedStartTzo + }) : ""; + } + get endStr() { + let t = this._instance; + return t && this._def.hasEnd ? this._context.dateEnv.formatIso(t.range.end, { + omitTime: this._def.allDay, + forcedTzo: t.forcedEndTzo + }) : ""; + } + // computable props that all access the def + // TODO: find a TypeScript-compatible way to do this at scale + get id() { + return this._def.publicId; + } + get groupId() { + return this._def.groupId; + } + get allDay() { + return this._def.allDay; + } + get title() { + return this._def.title; + } + get url() { + return this._def.url; + } + get display() { + return this._def.ui.display || "auto"; + } + // bad. just normalize the type earlier + get startEditable() { + return this._def.ui.startEditable; + } + get durationEditable() { + return this._def.ui.durationEditable; + } + get constraint() { + return this._def.ui.constraints[0] || null; + } + get overlap() { + return this._def.ui.overlap; + } + get allow() { + return this._def.ui.allows[0] || null; + } + get backgroundColor() { + return this._def.ui.backgroundColor; + } + get borderColor() { + return this._def.ui.borderColor; + } + get textColor() { + return this._def.ui.textColor; + } + // NOTE: user can't modify these because Object.freeze was called in event-def parsing + get classNames() { + return this._def.ui.classNames; + } + get extendedProps() { + return this._def.extendedProps; + } + toPlainObject(t = {}) { + let r = this._def, { ui: n } = r, { startStr: i, endStr: a } = this, o = { + allDay: r.allDay + }; + return r.title && (o.title = r.title), i && (o.start = i), a && (o.end = a), r.publicId && (o.id = r.publicId), r.groupId && (o.groupId = r.groupId), r.url && (o.url = r.url), n.display && n.display !== "auto" && (o.display = n.display), t.collapseColor && n.backgroundColor && n.backgroundColor === n.borderColor ? o.color = n.backgroundColor : (n.backgroundColor && (o.backgroundColor = n.backgroundColor), n.borderColor && (o.borderColor = n.borderColor)), n.textColor && (o.textColor = n.textColor), n.classNames.length && (o.classNames = n.classNames), Object.keys(r.extendedProps).length && (t.collapseExtendedProps ? Object.assign(o, r.extendedProps) : o.extendedProps = r.extendedProps), o; + } + toJSON() { + return this.toPlainObject(); + } +} +function Iwe(e) { + let t = e._def, r = e._instance; + return { + defs: { [t.defId]: t }, + instances: r ? { [r.instanceId]: r } : {} + }; +} +function nE(e, t, r) { + let { defs: n, instances: i } = e, a = [], o = r ? r.instanceId : ""; + for (let l in i) { + let u = i[l], d = n[u.defId]; + u.instanceId !== o && a.push(new Vo(t, d, u)); + } + return a; +} +function c6(e, t, r, n) { + let i = {}, a = {}, o = {}, l = [], u = [], d = R2(e.defs, t); + for (let f in e.defs) { + let g = e.defs[f]; + d[g.defId].display === "inverse-background" && (g.groupId ? (i[g.groupId] = [], o[g.groupId] || (o[g.groupId] = g)) : a[f] = []); + } + for (let f in e.instances) { + let g = e.instances[f], v = e.defs[g.defId], y = d[v.defId], C = g.range, A = !v.allDay && n ? NB(C, n) : C, S = cv(A, r); + S && (y.display === "inverse-background" ? v.groupId ? i[v.groupId].push(S) : a[g.defId].push(S) : y.display !== "none" && (y.display === "background" ? l : u).push({ + def: v, + ui: y, + instance: g, + range: S, + isStart: A.start && A.start.valueOf() === S.start.valueOf(), + isEnd: A.end && A.end.valueOf() === S.end.valueOf() + })); + } + for (let f in i) { + let g = i[f], v = Ede(g, r); + for (let y of v) { + let C = o[f], A = d[C.defId]; + l.push({ + def: C, + ui: A, + instance: null, + range: y, + isStart: !1, + isEnd: !1 + }); + } + } + for (let f in a) { + let g = a[f], v = Ede(g, r); + for (let y of v) + l.push({ + def: e.defs[f], + ui: d[f], + instance: null, + range: y, + isStart: !1, + isEnd: !1 + }); + } + return { bg: l, fg: u }; +} +function H_t(e) { + return e.ui.display === "background" || e.ui.display === "inverse-background"; +} +function Ide(e, t) { + e.fcSeg = t; +} +function Qw(e) { + return e.fcSeg || e.parentNode.fcSeg || // for the harness + null; +} +function R2(e, t) { + return _l(e, (r) => xwe(r, t)); +} +function xwe(e, t) { + let r = []; + return t[""] && r.push(t[""]), t[e.defId] && r.push(t[e.defId]), r.push(e.ui), _7(r); +} +function BB(e, t) { + let r = e.map(W_t); + return r.sort((n, i) => rwe(n, i, t)), r.map((n) => n._seg); +} +function W_t(e) { + let { eventRange: t } = e, r = t.def, n = t.instance ? t.instance.range : t.range, i = n.start ? n.start.valueOf() : 0, a = n.end ? n.end.valueOf() : 0; + return Object.assign(Object.assign(Object.assign({}, r.extendedProps), r), { + id: r.publicId, + start: i, + end: a, + duration: a - i, + allDay: Number(r.allDay), + _seg: e + }); +} +function G_t(e, t) { + let { pluginHooks: r } = t, n = r.isDraggableTransformers, { def: i, ui: a } = e.eventRange, o = a.startEditable; + for (let l of n) + o = l(o, i, a, t); + return o; +} +function Y_t(e, t) { + return e.isStart && e.eventRange.ui.durationEditable && t.options.eventResizableFromStart; +} +function X_t(e, t) { + return e.isEnd && e.eventRange.ui.durationEditable; +} +function Y1(e, t, r, n, i, a, o) { + let { dateEnv: l, options: u } = r, { displayEventTime: d, displayEventEnd: f } = u, g = e.eventRange.def, v = e.eventRange.instance; + d == null && (d = n !== !1), f == null && (f = i !== !1); + let y = v.range.start, C = v.range.end, A = a || e.start || e.eventRange.range.start, S = o || e.end || e.eventRange.range.end, _ = ho(y).valueOf() === ho(A).valueOf(), E = ho(Jm(C, -1)).valueOf() === ho(Jm(S, -1)).valueOf(); + return d && !g.allDay && (_ || E) ? (A = _ ? y : A, S = E ? C : S, f && g.hasEnd ? l.formatRange(A, S, t, { + forcedStartTzo: a ? null : v.forcedStartTzo, + forcedEndTzo: o ? null : v.forcedEndTzo + }) : l.format(A, t, { + forcedTzo: a ? null : v.forcedStartTzo + // nooooo, same + })) : ""; +} +function bf(e, t, r) { + let n = e.eventRange.range; + return { + isPast: n.end <= (r || t.start), + isFuture: n.start >= (r || t.end), + isToday: t && tv(t, n.start) + }; +} +function K_t(e) { + let t = ["fc-event"]; + return e.isMirror && t.push("fc-event-mirror"), e.isDraggable && t.push("fc-event-draggable"), (e.isStartResizable || e.isEndResizable) && t.push("fc-event-resizable"), e.isDragging && t.push("fc-event-dragging"), e.isResizing && t.push("fc-event-resizing"), e.isSelected && t.push("fc-event-selected"), e.isStart && t.push("fc-event-start"), e.isEnd && t.push("fc-event-end"), e.isPast && t.push("fc-event-past"), e.isToday && t.push("fc-event-today"), e.isFuture && t.push("fc-event-future"), t; +} +function E7(e) { + return e.instance ? e.instance.instanceId : `${e.def.defId}:${e.range.start.toISOString()}`; +} +function C7(e, t) { + let { def: r, instance: n } = e.eventRange, { url: i } = r; + if (i) + return { href: i }; + let { emitter: a, options: o } = t, { eventInteractive: l } = o; + return l == null && (l = r.interactive, l == null && (l = !!a.hasHandlers("eventClick"))), l ? twe((u) => { + a.trigger("eventClick", { + el: u.target, + event: new Vo(t, r, n), + jsEvent: u, + view: t.viewApi + }); + }) : {}; +} +const Z_t = { + start: At, + end: At, + allDay: Boolean +}; +function q_t(e, t, r) { + let n = J_t(e, t), { range: i } = n; + if (!i.start) + return null; + if (!i.end) { + if (r == null) + return null; + i.end = t.add(i.start, r); + } + return n; +} +function J_t(e, t) { + let { refined: r, extra: n } = KD(e, Z_t), i = r.start ? t.createMarkerMeta(r.start) : null, a = r.end ? t.createMarkerMeta(r.end) : null, { allDay: o } = r; + return o == null && (o = i && i.isTimeUnspecified && (!a || a.isTimeUnspecified)), Object.assign({ range: { + start: i ? i.marker : null, + end: a ? a.marker : null + }, allDay: o }, n); +} +function Q_t(e, t) { + return pwe(e.range, t.range) && e.allDay === t.allDay && e0t(e, t); +} +function e0t(e, t) { + for (let r in t) + if (r !== "range" && r !== "allDay" && e[r] !== t[r]) + return !1; + for (let r in e) + if (!(r in t)) + return !1; + return !0; +} +function t0t(e, t) { + return Object.assign(Object.assign({}, Rwe(e.range, t, e.allDay)), { allDay: e.allDay }); +} +function Awe(e, t, r) { + return Object.assign(Object.assign({}, Rwe(e, t, r)), { timeZone: t.timeZone }); +} +function Rwe(e, t, r) { + return { + start: t.toDate(e.start), + end: t.toDate(e.end), + startStr: t.formatIso(e.start, { omitTime: r }), + endStr: t.formatIso(e.end, { omitTime: r }) + }; +} +function r0t(e, t, r) { + let n = _we({ editable: !1 }, r), i = o6( + n.refined, + n.extra, + "", + // sourceId + e.allDay, + !0, + // hasEnd + r + ); + return { + def: i, + ui: xwe(i, t), + instance: v7(i.defId, e.range), + range: e.range, + isStart: !0, + isEnd: !0 + }; +} +function Dwe(e, t, r) { + let n = !1, i = function(l) { + n || (n = !0, t(l)); + }, a = function(l) { + n || (n = !0, r(l)); + }, o = e(i, a); + o && typeof o.then == "function" && o.then(i, a); +} +class xde extends Error { + constructor(t, r) { + super(t), this.response = r; + } +} +function Owe(e, t, r) { + e = e.toUpperCase(); + const n = { + method: e + }; + return e === "GET" ? t += (t.indexOf("?") === -1 ? "?" : "&") + new URLSearchParams(r) : (n.body = new URLSearchParams(r), n.headers = { + "Content-Type": "application/x-www-form-urlencoded" + }), fetch(t, n).then((i) => { + if (i.ok) + return i.json().then((a) => [a, i], () => { + throw new xde("Failure parsing JSON", i); + }); + throw new xde("Request failed", i); + }); +} +let I4; +function T7() { + return I4 == null && (I4 = n0t()), I4; +} +function n0t() { + if (typeof document == "undefined") + return !0; + let e = document.createElement("div"); + e.style.position = "absolute", e.style.top = "0px", e.style.left = "0px", e.innerHTML = "
        ", e.querySelector("table").style.height = "100px", e.querySelector("div").style.height = "100%", document.body.appendChild(e); + let r = e.querySelector("div").offsetHeight > 0; + return document.body.removeChild(e), r; +} +class i0t extends Vn { + constructor() { + super(...arguments), this.state = { + forPrint: !1 + }, this.handleBeforePrint = () => { + Jw(() => { + this.setState({ forPrint: !0 }); + }); + }, this.handleAfterPrint = () => { + Jw(() => { + this.setState({ forPrint: !1 }); + }); + }; + } + render() { + let { props: t } = this, { options: r } = t, { forPrint: n } = this.state, i = n || r.height === "auto" || r.contentHeight === "auto", a = !i && r.height != null ? r.height : "", o = [ + "fc", + n ? "fc-media-print" : "fc-media-screen", + `fc-direction-${r.direction}`, + t.theme.getClass("root") + ]; + return T7() || o.push("fc-liquid-hack"), t.children(o, a, i, n); + } + componentDidMount() { + let { emitter: t } = this.props; + t.on("_beforeprint", this.handleBeforePrint), t.on("_afterprint", this.handleAfterPrint); + } + componentWillUnmount() { + let { emitter: t } = this.props; + t.off("_beforeprint", this.handleBeforePrint), t.off("_afterprint", this.handleAfterPrint); + } +} +class LI { + constructor(t) { + this.component = t.component, this.isHitComboAllowed = t.isHitComboAllowed || null; + } + destroy() { + } +} +function a0t(e, t) { + return { + component: e, + el: t.el, + useEventCenter: t.useEventCenter != null ? t.useEventCenter : !0, + isHitComboAllowed: t.isHitComboAllowed || null + }; +} +function w7(e) { + return { + [e.component.uid]: e + }; +} +const u6 = {}; +class FI { + getCurrentData() { + return this.currentDataManager.getCurrentData(); + } + dispatch(t) { + this.currentDataManager.dispatch(t); + } + get view() { + return this.getCurrentData().viewApi; + } + batchRendering(t) { + t(); + } + updateSize() { + this.trigger("_resize", !0); + } + // Options + // ----------------------------------------------------------------------------------------------------------------- + setOption(t, r) { + this.dispatch({ + type: "SET_OPTION", + optionName: t, + rawOptionValue: r + }); + } + getOption(t) { + return this.currentDataManager.currentCalendarOptionsInput[t]; + } + getAvailableLocaleCodes() { + return Object.keys(this.getCurrentData().availableRawLocales); + } + // Trigger + // ----------------------------------------------------------------------------------------------------------------- + on(t, r) { + let { currentDataManager: n } = this; + n.currentCalendarOptionsRefiners[t] ? n.emitter.on(t, r) : console.warn(`Unknown listener name '${t}'`); + } + off(t, r) { + this.currentDataManager.emitter.off(t, r); + } + // not meant for public use + trigger(t, ...r) { + this.currentDataManager.emitter.trigger(t, ...r); + } + // View + // ----------------------------------------------------------------------------------------------------------------- + changeView(t, r) { + this.batchRendering(() => { + if (this.unselect(), r) + if (r.start && r.end) + this.dispatch({ + type: "CHANGE_VIEW_TYPE", + viewType: t + }), this.dispatch({ + type: "SET_OPTION", + optionName: "visibleRange", + rawOptionValue: r + }); + else { + let { dateEnv: n } = this.getCurrentData(); + this.dispatch({ + type: "CHANGE_VIEW_TYPE", + viewType: t, + dateMarker: n.createMarker(r) + }); + } + else + this.dispatch({ + type: "CHANGE_VIEW_TYPE", + viewType: t + }); + }); + } + // Forces navigation to a view for the given date. + // `viewType` can be a specific view name or a generic one like "week" or "day". + // needs to change + zoomTo(t, r) { + let n = this.getCurrentData(), i; + r = r || "day", i = n.viewSpecs[r] || this.getUnitViewSpec(r), this.unselect(), i ? this.dispatch({ + type: "CHANGE_VIEW_TYPE", + viewType: i.type, + dateMarker: t + }) : this.dispatch({ + type: "CHANGE_DATE", + dateMarker: t + }); + } + // Given a duration singular unit, like "week" or "day", finds a matching view spec. + // Preference is given to views that have corresponding buttons. + getUnitViewSpec(t) { + let { viewSpecs: r, toolbarConfig: n } = this.getCurrentData(), i = [].concat(n.header ? n.header.viewsWithButtons : [], n.footer ? n.footer.viewsWithButtons : []), a, o; + for (let l in r) + i.push(l); + for (a = 0; a < i.length; a += 1) + if (o = r[i[a]], o && o.singleUnit === t) + return o; + return null; + } + // Current Date + // ----------------------------------------------------------------------------------------------------------------- + prev() { + this.unselect(), this.dispatch({ type: "PREV" }); + } + next() { + this.unselect(), this.dispatch({ type: "NEXT" }); + } + prevYear() { + let t = this.getCurrentData(); + this.unselect(), this.dispatch({ + type: "CHANGE_DATE", + dateMarker: t.dateEnv.addYears(t.currentDate, -1) + }); + } + nextYear() { + let t = this.getCurrentData(); + this.unselect(), this.dispatch({ + type: "CHANGE_DATE", + dateMarker: t.dateEnv.addYears(t.currentDate, 1) + }); + } + today() { + let t = this.getCurrentData(); + this.unselect(), this.dispatch({ + type: "CHANGE_DATE", + dateMarker: qD(t.calendarOptions.now, t.dateEnv) + }); + } + gotoDate(t) { + let r = this.getCurrentData(); + this.unselect(), this.dispatch({ + type: "CHANGE_DATE", + dateMarker: r.dateEnv.createMarker(t) + }); + } + incrementDate(t) { + let r = this.getCurrentData(), n = na(t); + n && (this.unselect(), this.dispatch({ + type: "CHANGE_DATE", + dateMarker: r.dateEnv.add(r.currentDate, n) + })); + } + getDate() { + let t = this.getCurrentData(); + return t.dateEnv.toDate(t.currentDate); + } + // Date Formatting Utils + // ----------------------------------------------------------------------------------------------------------------- + formatDate(t, r) { + let { dateEnv: n } = this.getCurrentData(); + return n.format(n.createMarker(t), co(r)); + } + // `settings` is for formatter AND isEndExclusive + formatRange(t, r, n) { + let { dateEnv: i } = this.getCurrentData(); + return i.formatRange(i.createMarker(t), i.createMarker(r), co(n), n); + } + formatIso(t, r) { + let { dateEnv: n } = this.getCurrentData(); + return n.formatIso(n.createMarker(t), { omitTime: r }); + } + // Date Selection / Event Selection / DayClick + // ----------------------------------------------------------------------------------------------------------------- + select(t, r) { + let n; + r == null ? t.start != null ? n = t : n = { + start: t, + end: null + } : n = { + start: t, + end: r + }; + let i = this.getCurrentData(), a = q_t(n, i.dateEnv, na({ days: 1 })); + a && (this.dispatch({ type: "SELECT_DATES", selection: a }), wwe(a, null, i)); + } + unselect(t) { + let r = this.getCurrentData(); + r.dateSelection && (this.dispatch({ type: "UNSELECT_DATES" }), $_t(t, r)); + } + // Public Events API + // ----------------------------------------------------------------------------------------------------------------- + addEvent(t, r) { + if (t instanceof Vo) { + let o = t._def, l = t._instance; + return this.getCurrentData().eventStore.defs[o.defId] || (this.dispatch({ + type: "ADD_EVENTS", + eventStore: s6({ def: o, instance: l }) + // TODO: better util for two args? + }), this.triggerEventAdd(t)), t; + } + let n = this.getCurrentData(), i; + if (r instanceof nw) + i = r.internalEventSource; + else if (typeof r == "boolean") + r && ([i] = p7(n.eventSources)); + else if (r != null) { + let o = this.getEventSourceById(r); + if (!o) + return console.warn(`Could not find an event source with ID "${r}"`), null; + i = o.internalEventSource; + } + let a = ywe(t, i, n, !1); + if (a) { + let o = new Vo(n, a.def, a.def.recurringDef ? null : a.instance); + return this.dispatch({ + type: "ADD_EVENTS", + eventStore: s6(a) + }), this.triggerEventAdd(o), o; + } + return null; + } + triggerEventAdd(t) { + let { emitter: r } = this.getCurrentData(); + r.trigger("eventAdd", { + event: t, + relatedEvents: [], + revert: () => { + this.dispatch({ + type: "REMOVE_EVENTS", + eventStore: Iwe(t) + }); + } + }); + } + // TODO: optimize + getEventById(t) { + let r = this.getCurrentData(), { defs: n, instances: i } = r.eventStore; + t = String(t); + for (let a in n) { + let o = n[a]; + if (o.publicId === t) { + if (o.recurringDef) + return new Vo(r, o, null); + for (let l in i) { + let u = i[l]; + if (u.defId === o.defId) + return new Vo(r, o, u); + } + } + } + return null; + } + getEvents() { + let t = this.getCurrentData(); + return nE(t.eventStore, t); + } + removeAllEvents() { + this.dispatch({ type: "REMOVE_ALL_EVENTS" }); + } + // Public Event Sources API + // ----------------------------------------------------------------------------------------------------------------- + getEventSources() { + let t = this.getCurrentData(), r = t.eventSources, n = []; + for (let i in r) + n.push(new nw(t, r[i])); + return n; + } + getEventSourceById(t) { + let r = this.getCurrentData(), n = r.eventSources; + t = String(t); + for (let i in n) + if (n[i].publicId === t) + return new nw(r, n[i]); + return null; + } + addEventSource(t) { + let r = this.getCurrentData(); + if (t instanceof nw) + return r.eventSources[t.internalEventSource.sourceId] || this.dispatch({ + type: "ADD_EVENT_SOURCES", + sources: [t.internalEventSource] + }), t; + let n = Swe(t, r); + return n ? (this.dispatch({ type: "ADD_EVENT_SOURCES", sources: [n] }), new nw(r, n)) : null; + } + removeAllEventSources() { + this.dispatch({ type: "REMOVE_ALL_EVENT_SOURCES" }); + } + refetchEvents() { + this.dispatch({ type: "FETCH_EVENT_SOURCES", isRefetch: !0 }); + } + // Scroll + // ----------------------------------------------------------------------------------------------------------------- + scrollToTime(t) { + let r = na(t); + r && this.trigger("_scrollRequest", { time: r }); + } +} +function o0t(e, t) { + return e.left >= t.left && e.left < t.right && e.top >= t.top && e.top < t.bottom; +} +function Mwe(e, t) { + let r = { + left: Math.max(e.left, t.left), + right: Math.min(e.right, t.right), + top: Math.max(e.top, t.top), + bottom: Math.min(e.bottom, t.bottom) + }; + return r.left < r.right && r.top < r.bottom ? r : !1; +} +function Ade(e, t, r) { + return { + left: e.left + t, + right: e.right + t, + top: e.top + r, + bottom: e.bottom + r + }; +} +function s0t(e, t) { + return { + left: Math.min(Math.max(e.left, t.left), t.right), + top: Math.min(Math.max(e.top, t.top), t.bottom) + }; +} +function l0t(e) { + return { + left: (e.left + e.right) / 2, + top: (e.top + e.bottom) / 2 + }; +} +function c0t(e, t) { + return { + left: e.left - t.left, + top: e.top - t.top + }; +} +const x4 = gd(); +class I7 { + constructor() { + this.getKeysForEventDefs = Gr(this._getKeysForEventDefs), this.splitDateSelection = Gr(this._splitDateSpan), this.splitEventStore = Gr(this._splitEventStore), this.splitIndividualUi = Gr(this._splitIndividualUi), this.splitEventDrag = Gr(this._splitInteraction), this.splitEventResize = Gr(this._splitInteraction), this.eventUiBuilders = {}; + } + splitProps(t) { + let r = this.getKeyInfo(t), n = this.getKeysForEventDefs(t.eventStore), i = this.splitDateSelection(t.dateSelection), a = this.splitIndividualUi(t.eventUiBases, n), o = this.splitEventStore(t.eventStore, n), l = this.splitEventDrag(t.eventDrag), u = this.splitEventResize(t.eventResize), d = {}; + this.eventUiBuilders = _l(r, (f, g) => this.eventUiBuilders[g] || Gr(u0t)); + for (let f in r) { + let g = r[f], v = o[f] || x4, y = this.eventUiBuilders[f]; + d[f] = { + businessHours: g.businessHours || t.businessHours, + dateSelection: i[f] || null, + eventStore: v, + eventUiBases: y(t.eventUiBases[""], g.ui, a[f]), + eventSelection: v.instances[t.eventSelection] ? t.eventSelection : "", + eventDrag: l[f] || null, + eventResize: u[f] || null + }; + } + return d; + } + _splitDateSpan(t) { + let r = {}; + if (t) { + let n = this.getKeysForDateSpan(t); + for (let i of n) + r[i] = t; + } + return r; + } + _getKeysForEventDefs(t) { + return _l(t.defs, (r) => this.getKeysForEventDef(r)); + } + _splitEventStore(t, r) { + let { defs: n, instances: i } = t, a = {}; + for (let o in n) + for (let l of r[o]) + a[l] || (a[l] = gd()), a[l].defs[o] = n[o]; + for (let o in i) { + let l = i[o]; + for (let u of r[l.defId]) + a[u] && (a[u].instances[o] = l); + } + return a; + } + _splitIndividualUi(t, r) { + let n = {}; + for (let i in t) + if (i) + for (let a of r[i]) + n[a] || (n[a] = {}), n[a][i] = t[i]; + return n; + } + _splitInteraction(t) { + let r = {}; + if (t) { + let n = this._splitEventStore(t.affectedEvents, this._getKeysForEventDefs(t.affectedEvents)), i = this._getKeysForEventDefs(t.mutatedEvents), a = this._splitEventStore(t.mutatedEvents, i), o = (l) => { + r[l] || (r[l] = { + affectedEvents: n[l] || x4, + mutatedEvents: a[l] || x4, + isEvent: t.isEvent + }); + }; + for (let l in n) + o(l); + for (let l in a) + o(l); + } + return r; + } +} +function u0t(e, t, r) { + let n = []; + e && n.push(e), t && n.push(t); + let i = { + "": _7(n) + }; + return r && Object.assign(i, r), i; +} +function QD(e, t, r, n) { + return { + dow: e.getUTCDay(), + isDisabled: !!(n && !tv(n.activeRange, e)), + isOther: !!(n && !tv(n.currentRange, e)), + isToday: !!(t && tv(t, e)), + isPast: !!(r ? e < r : t && e < t.start), + isFuture: !!(r ? e > r : t && e >= t.end) + }; +} +function BI(e, t) { + let r = [ + "fc-day", + `fc-day-${owe[e.dow]}` + ]; + return e.isDisabled ? r.push("fc-day-disabled") : (e.isToday && (r.push("fc-day-today"), r.push(t.getClass("today"))), e.isPast && r.push("fc-day-past"), e.isFuture && r.push("fc-day-future"), e.isOther && r.push("fc-day-other")), r; +} +function kwe(e, t) { + let r = [ + "fc-slot", + `fc-slot-${owe[e.dow]}` + ]; + return e.isDisabled ? r.push("fc-slot-disabled") : (e.isToday && (r.push("fc-slot-today"), r.push(t.getClass("today"))), e.isPast && r.push("fc-slot-past"), e.isFuture && r.push("fc-slot-future")), r; +} +const h0t = co({ year: "numeric", month: "long", day: "numeric" }), d0t = co({ week: "long" }); +function TE(e, t, r = "day", n = !0) { + const { dateEnv: i, options: a, calendarApi: o } = e; + let l = i.format(t, r === "week" ? d0t : h0t); + if (a.navLinks) { + let u = i.toDate(t); + const d = (f) => { + let g = r === "day" ? a.navLinkDayClick : r === "week" ? a.navLinkWeekClick : null; + typeof g == "function" ? g.call(o, i.toDate(t), f) : (typeof g == "string" && (r = g), o.zoomTo(t, r)); + }; + return Object.assign({ title: W1(a.navLinkHint, [l, u], l), "data-navlink": "" }, n ? ewe(d) : { onClick: d }); + } + return { "aria-label": l }; +} +let A4 = null; +function D2() { + return A4 === null && (A4 = f0t()), A4; +} +function f0t() { + let e = document.createElement("div"); + Dw(e, { + position: "absolute", + top: -1e3, + left: 0, + border: 0, + padding: 0, + overflow: "scroll", + direction: "rtl" + }), e.innerHTML = "
        ", document.body.appendChild(e); + let r = e.firstChild.getBoundingClientRect().left > e.getBoundingClientRect().left; + return DB(e), r; +} +let R4; +function Pwe() { + return R4 || (R4 = p0t()), R4; +} +function p0t() { + let e = document.createElement("div"); + e.style.overflow = "scroll", e.style.position = "absolute", e.style.top = "-9999px", e.style.left = "-9999px", document.body.appendChild(e); + let t = Nwe(e); + return document.body.removeChild(e), t; +} +function Nwe(e) { + return { + x: e.offsetHeight - e.clientHeight, + y: e.offsetWidth - e.clientWidth + }; +} +function Lwe(e, t = !1) { + let r = window.getComputedStyle(e), n = parseInt(r.borderLeftWidth, 10) || 0, i = parseInt(r.borderRightWidth, 10) || 0, a = parseInt(r.borderTopWidth, 10) || 0, o = parseInt(r.borderBottomWidth, 10) || 0, l = Nwe(e), u = l.y - n - i, d = l.x - a - o, f = { + borderLeft: n, + borderRight: i, + borderTop: a, + borderBottom: o, + scrollbarBottom: d, + scrollbarLeft: 0, + scrollbarRight: 0 + }; + return D2() && r.direction === "rtl" ? f.scrollbarLeft = u : f.scrollbarRight = u, t && (f.paddingLeft = parseInt(r.paddingLeft, 10) || 0, f.paddingRight = parseInt(r.paddingRight, 10) || 0, f.paddingTop = parseInt(r.paddingTop, 10) || 0, f.paddingBottom = parseInt(r.paddingBottom, 10) || 0), f; +} +function Fwe(e, t = !1, r) { + let n = r ? e.getBoundingClientRect() : x7(e), i = Lwe(e, t), a = { + left: n.left + i.borderLeft + i.scrollbarLeft, + right: n.right - i.borderRight - i.scrollbarRight, + top: n.top + i.borderTop, + bottom: n.bottom - i.borderBottom - i.scrollbarBottom + }; + return t && (a.left += i.paddingLeft, a.right -= i.paddingRight, a.top += i.paddingTop, a.bottom -= i.paddingBottom), a; +} +function x7(e) { + let t = e.getBoundingClientRect(); + return { + left: t.left + window.pageXOffset, + top: t.top + window.pageYOffset, + right: t.right + window.pageXOffset, + bottom: t.bottom + window.pageYOffset + }; +} +function g0t(e) { + let t = Bwe(e), r = e.getBoundingClientRect(); + for (let n of t) { + let i = Mwe(r, n.getBoundingClientRect()); + if (i) + r = i; + else + return null; + } + return r; +} +function Bwe(e) { + let t = []; + for (; e instanceof HTMLElement; ) { + let r = window.getComputedStyle(e); + if (r.position === "fixed") + break; + /(auto|scroll)/.test(r.overflow + r.overflowY + r.overflowX) && t.push(e), e = e.parentNode; + } + return t; +} +class ey { + constructor(t, r, n, i) { + this.els = r; + let a = this.originClientRect = t.getBoundingClientRect(); + n && this.buildElHorizontals(a.left), i && this.buildElVerticals(a.top); + } + // Populates the left/right internal coordinate arrays + buildElHorizontals(t) { + let r = [], n = []; + for (let i of this.els) { + let a = i.getBoundingClientRect(); + r.push(a.left - t), n.push(a.right - t); + } + this.lefts = r, this.rights = n; + } + // Populates the top/bottom internal coordinate arrays + buildElVerticals(t) { + let r = [], n = []; + for (let i of this.els) { + let a = i.getBoundingClientRect(); + r.push(a.top - t), n.push(a.bottom - t); + } + this.tops = r, this.bottoms = n; + } + // Given a left offset (from document left), returns the index of the el that it horizontally intersects. + // If no intersection is made, returns undefined. + leftToIndex(t) { + let { lefts: r, rights: n } = this, i = r.length, a; + for (a = 0; a < i; a += 1) + if (t >= r[a] && t < n[a]) + return a; + } + // Given a top offset (from document top), returns the index of the el that it vertically intersects. + // If no intersection is made, returns undefined. + topToIndex(t) { + let { tops: r, bottoms: n } = this, i = r.length, a; + for (a = 0; a < i; a += 1) + if (t >= r[a] && t < n[a]) + return a; + } + // Gets the width of the element at the given index + getWidth(t) { + return this.rights[t] - this.lefts[t]; + } + // Gets the height of the element at the given index + getHeight(t) { + return this.bottoms[t] - this.tops[t]; + } + similarTo(t) { + return qP(this.tops || [], t.tops || []) && qP(this.bottoms || [], t.bottoms || []) && qP(this.lefts || [], t.lefts || []) && qP(this.rights || [], t.rights || []); + } +} +function qP(e, t) { + const r = e.length; + if (r !== t.length) + return !1; + for (let n = 0; n < r; n++) + if (Math.round(e[n]) !== Math.round(t[n])) + return !1; + return !0; +} +class A7 { + getMaxScrollTop() { + return this.getScrollHeight() - this.getClientHeight(); + } + getMaxScrollLeft() { + return this.getScrollWidth() - this.getClientWidth(); + } + canScrollVertically() { + return this.getMaxScrollTop() > 0; + } + canScrollHorizontally() { + return this.getMaxScrollLeft() > 0; + } + canScrollUp() { + return this.getScrollTop() > 0; + } + canScrollDown() { + return this.getScrollTop() < this.getMaxScrollTop(); + } + canScrollLeft() { + return this.getScrollLeft() > 0; + } + canScrollRight() { + return this.getScrollLeft() < this.getMaxScrollLeft(); + } +} +class v0t extends A7 { + constructor(t) { + super(), this.el = t; + } + getScrollTop() { + return this.el.scrollTop; + } + getScrollLeft() { + return this.el.scrollLeft; + } + setScrollTop(t) { + this.el.scrollTop = t; + } + setScrollLeft(t) { + this.el.scrollLeft = t; + } + getScrollWidth() { + return this.el.scrollWidth; + } + getScrollHeight() { + return this.el.scrollHeight; + } + getClientHeight() { + return this.el.clientHeight; + } + getClientWidth() { + return this.el.clientWidth; + } +} +class m0t extends A7 { + getScrollTop() { + return window.pageYOffset; + } + getScrollLeft() { + return window.pageXOffset; + } + setScrollTop(t) { + window.scroll(window.pageXOffset, t); + } + setScrollLeft(t) { + window.scroll(t, window.pageYOffset); + } + getScrollWidth() { + return document.documentElement.scrollWidth; + } + getScrollHeight() { + return document.documentElement.scrollHeight; + } + getClientHeight() { + return document.documentElement.clientHeight; + } + getClientWidth() { + return document.documentElement.clientWidth; + } +} +class tc extends Vn { + constructor() { + super(...arguments), this.uid = pv(); + } + // Hit System + // ----------------------------------------------------------------------------------------------------------------- + prepareHits() { + } + queryHit(t, r, n, i) { + return null; + } + // Pointer Interaction Utils + // ----------------------------------------------------------------------------------------------------------------- + isValidSegDownEl(t) { + return !this.props.eventDrag && // HACK + !this.props.eventResize && // HACK + !ql(t, ".fc-event-mirror"); + } + isValidDateDownEl(t) { + return !ql(t, ".fc-event:not(.fc-bg-event)") && !ql(t, ".fc-more-link") && // a "more.." link + !ql(t, "a[data-navlink]") && // a clickable nav link + !ql(t, ".fc-popover"); + } +} +class R7 { + constructor(t = (r) => r.thickness || 1) { + this.getEntryThickness = t, this.strictOrder = !1, this.allowReslicing = !1, this.maxCoord = -1, this.maxStackCnt = -1, this.levelCoords = [], this.entriesByLevel = [], this.stackCnts = {}; + } + addSegs(t) { + let r = []; + for (let n of t) + this.insertEntry(n, r); + return r; + } + insertEntry(t, r) { + let n = this.findInsertion(t); + this.isInsertionValid(n, t) ? this.insertEntryAt(t, n) : this.handleInvalidInsertion(n, t, r); + } + isInsertionValid(t, r) { + return (this.maxCoord === -1 || t.levelCoord + this.getEntryThickness(r) <= this.maxCoord) && (this.maxStackCnt === -1 || t.stackCnt < this.maxStackCnt); + } + handleInvalidInsertion(t, r, n) { + if (this.allowReslicing && t.touchingEntry) { + const i = Object.assign(Object.assign({}, r), { span: D7(r.span, t.touchingEntry.span) }); + n.push(i), this.splitEntry(r, t.touchingEntry, n); + } else + n.push(r); + } + /* + Does NOT add what hit the `barrier` into hiddenEntries. Should already be done. + */ + splitEntry(t, r, n) { + let i = t.span, a = r.span; + i.start < a.start && this.insertEntry({ + index: t.index, + thickness: t.thickness, + span: { start: i.start, end: a.start } + }, n), i.end > a.end && this.insertEntry({ + index: t.index, + thickness: t.thickness, + span: { start: a.end, end: i.end } + }, n); + } + insertEntryAt(t, r) { + let { entriesByLevel: n, levelCoords: i } = this; + r.lateral === -1 ? (D4(i, r.level, r.levelCoord), D4(n, r.level, [t])) : D4(n[r.level], r.lateral, t), this.stackCnts[iE(t)] = r.stackCnt; + } + /* + does not care about limits + */ + findInsertion(t) { + let { levelCoords: r, entriesByLevel: n, strictOrder: i, stackCnts: a } = this, o = r.length, l = 0, u = -1, d = -1, f = null, g = 0; + for (let C = 0; C < o; C += 1) { + const A = r[C]; + if (!i && A >= l + this.getEntryThickness(t)) + break; + let S = n[C], _, E = d6(S, t.span.start, h6), I = E[0] + E[1]; + for ( + ; + // loop through entries that horizontally intersect + (_ = S[I]) && // but not past the whole entry list + _.span.start < t.span.end; + ) { + let w = A + this.getEntryThickness(_); + w > l && (l = w, f = _, u = C, d = I), w === l && (g = Math.max(g, a[iE(_)] + 1)), I += 1; + } + } + let v = 0; + if (f) + for (v = u + 1; v < o && r[v] < l; ) + v += 1; + let y = -1; + return v < o && r[v] === l && (y = d6(n[v], t.span.end, h6)[0]), { + touchingLevel: u, + touchingLateral: d, + touchingEntry: f, + stackCnt: g, + levelCoord: l, + level: v, + lateral: y + }; + } + // sorted by levelCoord (lowest to highest) + toRects() { + let { entriesByLevel: t, levelCoords: r } = this, n = t.length, i = []; + for (let a = 0; a < n; a += 1) { + let o = t[a], l = r[a]; + for (let u of o) + i.push(Object.assign(Object.assign({}, u), { thickness: this.getEntryThickness(u), levelCoord: l })); + } + return i; + } +} +function h6(e) { + return e.span.end; +} +function iE(e) { + return e.index + ":" + e.span.start; +} +function Uwe(e) { + let t = []; + for (let r of e) { + let n = [], i = { + span: r.span, + entries: [r] + }; + for (let a of t) + D7(a.span, i.span) ? i = { + entries: a.entries.concat(i.entries), + span: y0t(a.span, i.span) + } : n.push(a); + n.push(i), t = n; + } + return t; +} +function y0t(e, t) { + return { + start: Math.min(e.start, t.start), + end: Math.max(e.end, t.end) + }; +} +function D7(e, t) { + let r = Math.max(e.start, t.start), n = Math.min(e.end, t.end); + return r < n ? { start: r, end: n } : null; +} +function D4(e, t, r) { + e.splice(t, 0, r); +} +function d6(e, t, r) { + let n = 0, i = e.length; + if (!i || t < r(e[n])) + return [0, 0]; + if (t > r(e[i - 1])) + return [i, 0]; + for (; n < i; ) { + let a = Math.floor(n + (i - n) / 2), o = r(e[a]); + if (t < o) + i = a; + else if (t > o) + n = a + 1; + else + return [a, 1]; + } + return [n, 0]; +} +class _0t { + constructor(t, r) { + this.emitter = new JD(); + } + destroy() { + } + setMirrorIsVisible(t) { + } + setMirrorNeedsRevert(t) { + } + setAutoScrollEnabled(t) { + } +} +const If = {}; +function jwe(e, t) { + return !e || t > 10 ? co({ weekday: "short" }) : t > 1 ? co({ weekday: "short", month: "numeric", day: "numeric", omitCommas: !0 }) : co({ weekday: "long" }); +} +const $we = "fc-col-header-cell"; +function Vwe(e) { + return e.text; +} +class zwe extends Vn { + render() { + let { dateEnv: t, options: r, theme: n, viewApi: i } = this.context, { props: a } = this, { date: o, dateProfile: l } = a, u = QD(o, a.todayRange, null, l), d = [$we].concat(BI(u, n)), f = t.format(o, a.dayHeaderFormat), g = !u.isDisabled && a.colCnt > 1 ? TE(this.context, o) : {}, v = Object.assign(Object.assign(Object.assign({ date: t.toDate(o), view: i }, a.extraRenderProps), { text: f }), u); + return De(is, { elTag: "th", elClasses: d, elAttrs: Object.assign({ role: "columnheader", colSpan: a.colSpan, "data-date": u.isDisabled ? void 0 : NI(o) }, a.extraDataAttrs), renderProps: v, generatorName: "dayHeaderContent", customGenerator: r.dayHeaderContent, defaultGenerator: Vwe, classNameGenerator: r.dayHeaderClassNames, didMount: r.dayHeaderDidMount, willUnmount: r.dayHeaderWillUnmount }, (y) => De("div", { className: "fc-scrollgrid-sync-inner" }, !u.isDisabled && De(y, { elTag: "a", elAttrs: g, elClasses: [ + "fc-col-header-cell-cushion", + a.isSticky && "fc-sticky" + ] }))); + } +} +const S0t = co({ weekday: "long" }); +class Hwe extends Vn { + render() { + let { props: t } = this, { dateEnv: r, theme: n, viewApi: i, options: a } = this.context, o = yl(/* @__PURE__ */ new Date(2592e5), t.dow), l = { + dow: t.dow, + isDisabled: !1, + isFuture: !1, + isPast: !1, + isToday: !1, + isOther: !1 + }, u = r.format(o, t.dayHeaderFormat), d = Object.assign(Object.assign(Object.assign(Object.assign({ + // TODO: make this public? + date: o + }, l), { view: i }), t.extraRenderProps), { text: u }); + return De(is, { elTag: "th", elClasses: [ + $we, + ...BI(l, n), + ...t.extraClassNames || [] + ], elAttrs: Object.assign({ role: "columnheader", colSpan: t.colSpan }, t.extraDataAttrs), renderProps: d, generatorName: "dayHeaderContent", customGenerator: a.dayHeaderContent, defaultGenerator: Vwe, classNameGenerator: a.dayHeaderClassNames, didMount: a.dayHeaderDidMount, willUnmount: a.dayHeaderWillUnmount }, (f) => De( + "div", + { className: "fc-scrollgrid-sync-inner" }, + De(f, { elTag: "a", elClasses: [ + "fc-col-header-cell-cushion", + t.isSticky && "fc-sticky" + ], elAttrs: { + "aria-label": r.format(o, S0t) + } }) + )); + } +} +class Bp extends pd { + constructor(t, r) { + super(t, r), this.initialNowDate = qD(r.options.now, r.dateEnv), this.initialNowQueriedMs = (/* @__PURE__ */ new Date()).valueOf(), this.state = this.computeTiming().currentState; + } + render() { + let { props: t, state: r } = this; + return t.children(r.nowDate, r.todayRange); + } + componentDidMount() { + this.setTimeout(); + } + componentDidUpdate(t) { + t.unit !== this.props.unit && (this.clearTimeout(), this.setTimeout()); + } + componentWillUnmount() { + this.clearTimeout(); + } + computeTiming() { + let { props: t, context: r } = this, n = Jm(this.initialNowDate, (/* @__PURE__ */ new Date()).valueOf() - this.initialNowQueriedMs), i = r.dateEnv.startOf(n, t.unit), a = r.dateEnv.add(i, na(1, t.unit)), o = a.valueOf() - n.valueOf(); + return o = Math.min(1e3 * 60 * 60 * 24, o), { + currentState: { nowDate: i, todayRange: Rde(i) }, + nextState: { nowDate: a, todayRange: Rde(a) }, + waitMs: o + }; + } + setTimeout() { + let { nextState: t, waitMs: r } = this.computeTiming(); + this.timeoutId = setTimeout(() => { + this.setState(t, () => { + this.setTimeout(); + }); + }, r); + } + clearTimeout() { + this.timeoutId && clearTimeout(this.timeoutId); + } +} +Bp.contextType = gv; +function Rde(e) { + let t = ho(e), r = yl(t, 1); + return { start: t, end: r }; +} +class O7 extends Vn { + constructor() { + super(...arguments), this.createDayHeaderFormatter = Gr(b0t); + } + render() { + let { context: t } = this, { dates: r, dateProfile: n, datesRepDistinctDays: i, renderIntro: a } = this.props, o = this.createDayHeaderFormatter(t.options.dayHeaderFormat, i, r.length); + return De(Bp, { unit: "day" }, (l, u) => De( + "tr", + { role: "row" }, + a && a("day"), + r.map((d) => i ? De(zwe, { key: d.toISOString(), date: d, dateProfile: n, todayRange: u, colCnt: r.length, dayHeaderFormat: o }) : De(Hwe, { key: d.getUTCDay(), dow: d.getUTCDay(), dayHeaderFormat: o })) + )); + } +} +function b0t(e, t, r) { + return e || jwe(t, r); +} +class Wwe { + constructor(t, r) { + let n = t.start, { end: i } = t, a = [], o = [], l = -1; + for (; n < i; ) + r.isHiddenDay(n) ? a.push(l + 0.5) : (l += 1, a.push(l), o.push(n)), n = yl(n, 1); + this.dates = o, this.indices = a, this.cnt = o.length; + } + sliceRange(t) { + let r = this.getDateDayIndex(t.start), n = this.getDateDayIndex(yl(t.end, -1)), i = Math.max(0, r), a = Math.min(this.cnt - 1, n); + return i = Math.ceil(i), a = Math.floor(a), i <= a ? { + firstIndex: i, + lastIndex: a, + isStart: r === i, + isEnd: n === a + } : null; + } + // Given a date, returns its chronolocial cell-index from the first cell of the grid. + // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. + // If before the first offset, returns a negative number. + // If after the last offset, returns an offset past the last cell offset. + // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. + getDateDayIndex(t) { + let { indices: r } = this, n = Math.floor(N0(this.dates[0], t)); + return n < 0 ? r[0] - 1 : n >= r.length ? r[r.length - 1] + 1 : r[n]; + } +} +class Gwe { + constructor(t, r) { + let { dates: n } = t, i, a, o; + if (r) { + for (a = n[0].getUTCDay(), i = 1; i < n.length && n[i].getUTCDay() !== a; i += 1) + ; + o = Math.ceil(n.length / i); + } else + o = 1, i = n.length; + this.rowCnt = o, this.colCnt = i, this.daySeries = t, this.cells = this.buildCells(), this.headerDates = this.buildHeaderDates(); + } + buildCells() { + let t = []; + for (let r = 0; r < this.rowCnt; r += 1) { + let n = []; + for (let i = 0; i < this.colCnt; i += 1) + n.push(this.buildCell(r, i)); + t.push(n); + } + return t; + } + buildCell(t, r) { + let n = this.daySeries.dates[t * this.colCnt + r]; + return { + key: n.toISOString(), + date: n + }; + } + buildHeaderDates() { + let t = []; + for (let r = 0; r < this.colCnt; r += 1) + t.push(this.cells[0][r].date); + return t; + } + sliceRange(t) { + let { colCnt: r } = this, n = this.daySeries.sliceRange(t), i = []; + if (n) { + let { firstIndex: a, lastIndex: o } = n, l = a; + for (; l <= o; ) { + let u = Math.floor(l / r), d = Math.min((u + 1) * r, o + 1); + i.push({ + row: u, + firstCol: l % r, + lastCol: (d - 1) % r, + isStart: n.isStart && l === a, + isEnd: n.isEnd && d - 1 === o + }), l = d; + } + } + return i; + } +} +class M7 { + constructor() { + this.sliceBusinessHours = Gr(this._sliceBusinessHours), this.sliceDateSelection = Gr(this._sliceDateSpan), this.sliceEventStore = Gr(this._sliceEventStore), this.sliceEventDrag = Gr(this._sliceInteraction), this.sliceEventResize = Gr(this._sliceInteraction), this.forceDayIfListItem = !1; + } + sliceProps(t, r, n, i, ...a) { + let { eventUiBases: o } = t, l = this.sliceEventStore(t.eventStore, o, r, n, ...a); + return { + dateSelectionSegs: this.sliceDateSelection(t.dateSelection, r, n, o, i, ...a), + businessHourSegs: this.sliceBusinessHours(t.businessHours, r, n, i, ...a), + fgEventSegs: l.fg, + bgEventSegs: l.bg, + eventDrag: this.sliceEventDrag(t.eventDrag, o, r, n, ...a), + eventResize: this.sliceEventResize(t.eventResize, o, r, n, ...a), + eventSelection: t.eventSelection + }; + } + sliceNowDate(t, r, n, i, ...a) { + return this._sliceDateSpan( + { range: { start: t, end: Jm(t, 1) }, allDay: !1 }, + // add 1 ms, protect against null range + r, + n, + {}, + i, + ...a + ); + } + _sliceBusinessHours(t, r, n, i, ...a) { + return t ? this._sliceEventStore(CE(t, JP(r, !!n), i), {}, r, n, ...a).bg : []; + } + _sliceEventStore(t, r, n, i, ...a) { + if (t) { + let o = c6(t, r, JP(n, !!i), i); + return { + bg: this.sliceEventRanges(o.bg, a), + fg: this.sliceEventRanges(o.fg, a) + }; + } + return { bg: [], fg: [] }; + } + _sliceInteraction(t, r, n, i, ...a) { + if (!t) + return null; + let o = c6(t.mutatedEvents, r, JP(n, !!i), i); + return { + segs: this.sliceEventRanges(o.fg, a), + affectedInstances: t.affectedEvents.instances, + isEvent: t.isEvent + }; + } + _sliceDateSpan(t, r, n, i, a, ...o) { + if (!t) + return []; + let l = JP(r, !!n), u = cv(t.range, l); + if (u) { + t = Object.assign(Object.assign({}, t), { range: u }); + let d = r0t(t, i, a), f = this.sliceRange(t.range, ...o); + for (let g of f) + g.eventRange = d; + return f; + } + return []; + } + /* + "complete" seg means it has component and eventRange + */ + sliceEventRanges(t, r) { + let n = []; + for (let i of t) + n.push(...this.sliceEventRange(i, r)); + return n; + } + /* + "complete" seg means it has component and eventRange + */ + sliceEventRange(t, r) { + let n = t.range; + this.forceDayIfListItem && t.ui.display === "list-item" && (n = { + start: n.start, + end: yl(n.start, 1) + }); + let i = this.sliceRange(n, ...r); + for (let a of i) + a.eventRange = t, a.isStart = t.isStart && a.isStart, a.isEnd = t.isEnd && a.isEnd; + return i; + } +} +function JP(e, t) { + let r = e.activeRange; + return t ? r : { + start: Jm(r.start, e.slotMinTime.milliseconds), + end: Jm(r.end, e.slotMaxTime.milliseconds - 864e5) + // 864e5 = ms in a day + }; +} +function Ywe(e, t, r) { + let { instances: n } = e.mutatedEvents; + for (let i in n) + if (!PB(t.validRange, n[i].range)) + return !1; + return Xwe({ eventDrag: e }, r); +} +function E0t(e, t, r) { + return PB(t.validRange, e.range) ? Xwe({ dateSelection: e }, r) : !1; +} +function Xwe(e, t) { + let r = t.getCurrentData(), n = Object.assign({ businessHours: r.businessHours, dateSelection: "", eventStore: r.eventStore, eventUiBases: r.eventUiBases, eventSelection: "", eventDrag: null, eventResize: null }, e); + return (t.pluginHooks.isPropsValid || Kwe)(n, t); +} +function Kwe(e, t, r = {}, n) { + return !(e.eventDrag && !C0t(e, t, r, n) || e.dateSelection && !T0t(e, t, r, n)); +} +function C0t(e, t, r, n) { + let i = t.getCurrentData(), a = e.eventDrag, o = a.mutatedEvents, l = o.defs, u = o.instances, d = R2(l, a.isEvent ? e.eventUiBases : { "": i.selectionConfig }); + n && (d = _l(d, n)); + let f = N_t(e.eventStore, a.affectedEvents.instances), g = f.defs, v = f.instances, y = R2(g, e.eventUiBases); + for (let C in u) { + let A = u[C], S = A.range, _ = d[A.defId], E = l[A.defId]; + if (!Zwe(_.constraints, S, f, e.businessHours, t)) + return !1; + let { eventOverlap: I } = t.options, w = typeof I == "function" ? I : null; + for (let b in v) { + let R = v[b]; + if (kB(S, R.range) && (y[R.defId].overlap === !1 && a.isEvent || _.overlap === !1 || w && !w( + new Vo(t, g[R.defId], R), + // still event + new Vo(t, E, A) + ))) + return !1; + } + let x = i.eventStore; + for (let b of _.allows) { + let R = Object.assign(Object.assign({}, r), { range: A.range, allDay: E.allDay }), M = x.defs[E.defId], O = x.instances[C], P; + if (M ? P = new Vo(t, M, O) : P = new Vo(t, E), !b(S7(R, t), P)) + return !1; + } + } + return !0; +} +function T0t(e, t, r, n) { + let i = e.eventStore, a = i.defs, o = i.instances, l = e.dateSelection, u = l.range, { selectionConfig: d } = t.getCurrentData(); + if (n && (d = n(d)), !Zwe(d.constraints, u, i, e.businessHours, t)) + return !1; + let { selectOverlap: f } = t.options, g = typeof f == "function" ? f : null; + for (let v in o) { + let y = o[v]; + if (kB(u, y.range) && (d.overlap === !1 || g && !g(new Vo(t, a[y.defId], y), null))) + return !1; + } + for (let v of d.allows) { + let y = Object.assign(Object.assign({}, r), l); + if (!v(S7(y, t), null)) + return !1; + } + return !0; +} +function Zwe(e, t, r, n, i) { + for (let a of e) + if (!I0t(w0t(a, t, r, n, i), t)) + return !1; + return !0; +} +function w0t(e, t, r, n, i) { + return e === "businessHours" ? O4(CE(n, t, i)) : typeof e == "string" ? O4(FB(r, (a) => a.groupId === e)) : typeof e == "object" && e ? O4(CE(e, t, i)) : []; +} +function O4(e) { + let { instances: t } = e, r = []; + for (let n in t) + r.push(t[n].range); + return r; +} +function I0t(e, t) { + for (let r of e) + if (PB(r, t)) + return !0; + return !1; +} +const QP = /^(visible|hidden)$/; +class k7 extends Vn { + constructor() { + super(...arguments), this.handleEl = (t) => { + this.el = t, wf(this.props.elRef, t); + }; + } + render() { + let { props: t } = this, { liquid: r, liquidIsAbsolute: n } = t, i = r && n, a = ["fc-scroller"]; + return r && (n ? a.push("fc-scroller-liquid-absolute") : a.push("fc-scroller-liquid")), De("div", { ref: this.handleEl, className: a.join(" "), style: { + overflowX: t.overflowX, + overflowY: t.overflowY, + left: i && -(t.overcomeLeft || 0) || "", + right: i && -(t.overcomeRight || 0) || "", + bottom: i && -(t.overcomeBottom || 0) || "", + marginLeft: !i && -(t.overcomeLeft || 0) || "", + marginRight: !i && -(t.overcomeRight || 0) || "", + marginBottom: !i && -(t.overcomeBottom || 0) || "", + maxHeight: t.maxHeight || "" + } }, t.children); + } + needsXScrolling() { + if (QP.test(this.props.overflowX)) + return !1; + let { el: t } = this, r = this.el.getBoundingClientRect().width - this.getYScrollbarWidth(), { children: n } = t; + for (let i = 0; i < n.length; i += 1) + if (n[i].getBoundingClientRect().width > r) + return !0; + return !1; + } + needsYScrolling() { + if (QP.test(this.props.overflowY)) + return !1; + let { el: t } = this, r = this.el.getBoundingClientRect().height - this.getXScrollbarWidth(), { children: n } = t; + for (let i = 0; i < n.length; i += 1) + if (n[i].getBoundingClientRect().height > r) + return !0; + return !1; + } + getXScrollbarWidth() { + return QP.test(this.props.overflowX) ? 0 : this.el.offsetHeight - this.el.clientHeight; + } + getYScrollbarWidth() { + return QP.test(this.props.overflowY) ? 0 : this.el.offsetWidth - this.el.clientWidth; + } +} +class vc { + constructor(t) { + this.masterCallback = t, this.currentMap = {}, this.depths = {}, this.callbackMap = {}, this.handleValue = (r, n) => { + let { depths: i, currentMap: a } = this, o = !1, l = !1; + r !== null ? (o = n in a, a[n] = r, i[n] = (i[n] || 0) + 1, l = !0) : (i[n] -= 1, i[n] || (delete a[n], delete this.callbackMap[n], o = !0)), this.masterCallback && (o && this.masterCallback(null, String(n)), l && this.masterCallback(r, String(n))); + }; + } + createRef(t) { + let r = this.callbackMap[t]; + return r || (r = this.callbackMap[t] = (n) => { + this.handleValue(n, String(t)); + }), r; + } + // TODO: check callers that don't care about order. should use getAll instead + // NOTE: this method has become less valuable now that we are encouraged to map order by some other index + // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and "collect" + collect(t, r, n) { + return lwe(this.currentMap, t, r, n); + } + getAll() { + return p7(this.currentMap); + } +} +function qwe(e) { + let t = jE(e, ".fc-scrollgrid-shrink"), r = 0; + for (let n of t) + r = Math.max(r, dyt(n)); + return Math.ceil(r); +} +function P7(e, t) { + return e.liquid && t.liquid; +} +function Jwe(e, t) { + return t.maxHeight != null || // if its possible for the height to max out, we might need scrollbars + P7(e, t); +} +function Qwe(e, t, r, n) { + let { expandRows: i } = r; + return typeof t.content == "function" ? t.content(r) : De("table", { + role: "presentation", + className: [ + t.tableClassName, + e.syncRowHeights ? "fc-scrollgrid-sync-table" : "" + ].join(" "), + style: { + minWidth: r.tableMinWidth, + width: r.clientWidth, + height: i ? r.clientHeight : "" + // css `height` on a serves as a min-height + } + }, r.tableColGroupNode, De(n ? "thead" : "tbody", { + role: "presentation" + }, typeof t.rowContent == "function" ? t.rowContent(r) : t.rowContent)); +} +function eIe(e, t) { + return _d(e, t, Cc); +} +function tIe(e, t) { + let r = []; + for (let n of e) { + let i = n.span || 1; + for (let a = 0; a < i; a += 1) + r.push(De("col", { style: { + width: n.width === "shrink" ? rIe(t) : n.width || "", + minWidth: n.minWidth || "" + } })); + } + return De("colgroup", {}, ...r); +} +function rIe(e) { + return e == null ? 4 : e; +} +function nIe(e) { + for (let t of e) + if (t.width === "shrink") + return !0; + return !1; +} +function iIe(e, t) { + let r = [ + "fc-scrollgrid", + t.theme.getClass("table") + ]; + return e && r.push("fc-scrollgrid-liquid"), r; +} +function aIe(e, t) { + let r = [ + "fc-scrollgrid-section", + `fc-scrollgrid-section-${e.type}`, + e.className + // used? + ]; + return t && e.liquid && e.maxHeight == null && r.push("fc-scrollgrid-section-liquid"), e.isSticky && r.push("fc-scrollgrid-section-sticky"), r; +} +function eI(e) { + return De("div", { className: "fc-scrollgrid-sticky-shim", style: { + width: e.clientWidth, + minWidth: e.tableMinWidth + } }); +} +function tI(e) { + let { stickyHeaderDates: t } = e; + return (t == null || t === "auto") && (t = e.height === "auto" || e.viewHeight === "auto"), t; +} +function UB(e) { + let { stickyFooterScrollbar: t } = e; + return (t == null || t === "auto") && (t = e.height === "auto" || e.viewHeight === "auto"), t; +} +class N7 extends Vn { + constructor() { + super(...arguments), this.processCols = Gr((t) => t, eIe), this.renderMicroColGroup = Gr(tIe), this.scrollerRefs = new vc(), this.scrollerElRefs = new vc(this._handleScrollerEl.bind(this)), this.state = { + shrinkWidth: null, + forceYScrollbars: !1, + scrollerClientWidths: {}, + scrollerClientHeights: {} + }, this.handleSizing = () => { + this.safeSetState(Object.assign({ shrinkWidth: this.computeShrinkWidth() }, this.computeScrollerDims())); + }; + } + render() { + let { props: t, state: r, context: n } = this, i = t.sections || [], a = this.processCols(t.cols), o = this.renderMicroColGroup(a, r.shrinkWidth), l = iIe(t.liquid, n); + t.collapsibleWidth && l.push("fc-scrollgrid-collapsible"); + let u = i.length, d = 0, f, g = [], v = [], y = []; + for (; d < u && (f = i[d]).type === "header"; ) + g.push(this.renderSection(f, o, !0)), d += 1; + for (; d < u && (f = i[d]).type === "body"; ) + v.push(this.renderSection(f, o, !1)), d += 1; + for (; d < u && (f = i[d]).type === "footer"; ) + y.push(this.renderSection(f, o, !0)), d += 1; + let C = !T7(); + const A = { role: "rowgroup" }; + return De("table", { + role: "grid", + className: l.join(" "), + style: { height: t.height } + }, !!(!C && g.length) && De("thead", A, ...g), !!(!C && v.length) && De("tbody", A, ...v), !!(!C && y.length) && De("tfoot", A, ...y), C && De("tbody", A, ...g, ...v, ...y)); + } + renderSection(t, r, n) { + return "outerContent" in t ? De(Di, { key: t.key }, t.outerContent) : De("tr", { key: t.key, role: "presentation", className: aIe(t, this.props.liquid).join(" ") }, this.renderChunkTd(t, r, t.chunk, n)); + } + renderChunkTd(t, r, n, i) { + if ("outerContent" in n) + return n.outerContent; + let { props: a } = this, { forceYScrollbars: o, scrollerClientWidths: l, scrollerClientHeights: u } = this.state, d = Jwe(a, t), f = P7(a, t), g = a.liquid ? o ? "scroll" : d ? "auto" : "hidden" : "visible", v = t.key, y = Qwe(t, n, { + tableColGroupNode: r, + tableMinWidth: "", + clientWidth: !a.collapsibleWidth && l[v] !== void 0 ? l[v] : null, + clientHeight: u[v] !== void 0 ? u[v] : null, + expandRows: t.expandRows, + syncRowHeights: !1, + rowSyncHeights: [], + reportRowHeightChange: () => { + } + }, i); + return De(i ? "th" : "td", { + ref: n.elRef, + role: "presentation" + }, De( + "div", + { className: `fc-scroller-harness${f ? " fc-scroller-harness-liquid" : ""}` }, + De(k7, { ref: this.scrollerRefs.createRef(v), elRef: this.scrollerElRefs.createRef(v), overflowY: g, overflowX: a.liquid ? "hidden" : "visible", maxHeight: t.maxHeight, liquid: f, liquidIsAbsolute: !0 }, y) + )); + } + _handleScrollerEl(t, r) { + let n = x0t(this.props.sections, r); + n && wf(n.chunk.scrollerElRef, t); + } + componentDidMount() { + this.handleSizing(), this.context.addResizeHandler(this.handleSizing); + } + componentDidUpdate() { + this.handleSizing(); + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleSizing); + } + computeShrinkWidth() { + return nIe(this.props.cols) ? qwe(this.scrollerElRefs.getAll()) : 0; + } + computeScrollerDims() { + let t = Pwe(), { scrollerRefs: r, scrollerElRefs: n } = this, i = !1, a = {}, o = {}; + for (let l in r.currentMap) { + let u = r.currentMap[l]; + if (u && u.needsYScrolling()) { + i = !0; + break; + } + } + for (let l of this.props.sections) { + let u = l.key, d = n.currentMap[u]; + if (d) { + let f = d.parentNode; + a[u] = Math.floor(f.getBoundingClientRect().width - (i ? t.y : 0)), o[u] = Math.floor(f.getBoundingClientRect().height); + } + } + return { forceYScrollbars: i, scrollerClientWidths: a, scrollerClientHeights: o }; + } +} +N7.addStateEquality({ + scrollerClientWidths: Cc, + scrollerClientHeights: Cc +}); +function x0t(e, t) { + for (let r of e) + if (r.key === t) + return r; + return null; +} +class jB extends Vn { + constructor() { + super(...arguments), this.handleEl = (t) => { + this.el = t, t && Ide(t, this.props.seg); + }; + } + render() { + const { props: t, context: r } = this, { options: n } = r, { seg: i } = t, { eventRange: a } = i, { ui: o } = a, l = { + event: new Vo(r, a.def, a.instance), + view: r.viewApi, + timeText: t.timeText, + textColor: o.textColor, + backgroundColor: o.backgroundColor, + borderColor: o.borderColor, + isDraggable: !t.disableDragging && G_t(i, r), + isStartResizable: !t.disableResizing && Y_t(i, r), + isEndResizable: !t.disableResizing && X_t(i), + isMirror: !!(t.isDragging || t.isResizing || t.isDateSelecting), + isStart: !!i.isStart, + isEnd: !!i.isEnd, + isPast: !!t.isPast, + isFuture: !!t.isFuture, + isToday: !!t.isToday, + isSelected: !!t.isSelected, + isDragging: !!t.isDragging, + isResizing: !!t.isResizing + }; + return De(is, Object.assign({}, t, { elRef: this.handleEl, elClasses: [ + ...K_t(l), + ...i.eventRange.ui.classNames, + ...t.elClasses || [] + ], renderProps: l, generatorName: "eventContent", customGenerator: n.eventContent, defaultGenerator: t.defaultGenerator, classNameGenerator: n.eventClassNames, didMount: n.eventDidMount, willUnmount: n.eventWillUnmount })); + } + componentDidUpdate(t) { + this.el && this.props.seg !== t.seg && Ide(this.el, this.props.seg); + } +} +class L7 extends Vn { + render() { + let { props: t, context: r } = this, { options: n } = r, { seg: i } = t, { ui: a } = i.eventRange, o = n.eventTimeFormat || t.defaultTimeFormat, l = Y1(i, o, r, t.defaultDisplayEventTime, t.defaultDisplayEventEnd); + return De(jB, Object.assign({}, t, { elTag: "a", elStyle: { + borderColor: a.borderColor, + backgroundColor: a.backgroundColor + }, elAttrs: C7(i, r), defaultGenerator: A0t, timeText: l }), (u, d) => De( + Di, + null, + De(u, { elTag: "div", elClasses: ["fc-event-main"], elStyle: { color: d.textColor } }), + !!d.isStartResizable && De("div", { className: "fc-event-resizer fc-event-resizer-start" }), + !!d.isEndResizable && De("div", { className: "fc-event-resizer fc-event-resizer-end" }) + )); + } +} +function A0t(e) { + return De( + "div", + { className: "fc-event-main-frame" }, + e.timeText && De("div", { className: "fc-event-time" }, e.timeText), + De( + "div", + { className: "fc-event-title-container" }, + De("div", { className: "fc-event-title fc-sticky" }, e.event.title || De(Di, null, " ")) + ) + ); +} +const UI = (e) => De(gv.Consumer, null, (t) => { + let { options: r } = t, n = { + isAxis: e.isAxis, + date: t.dateEnv.toDate(e.date), + view: t.viewApi + }; + return De(is, Object.assign({}, e, { elTag: e.elTag || "div", renderProps: n, generatorName: "nowIndicatorContent", customGenerator: r.nowIndicatorContent, classNameGenerator: r.nowIndicatorClassNames, didMount: r.nowIndicatorDidMount, willUnmount: r.nowIndicatorWillUnmount })); +}), R0t = co({ day: "numeric" }); +class F7 extends Vn { + constructor() { + super(...arguments), this.refineRenderProps = d0(D0t); + } + render() { + let { props: t, context: r } = this, { options: n } = r, i = this.refineRenderProps({ + date: t.date, + dateProfile: t.dateProfile, + todayRange: t.todayRange, + isMonthStart: t.isMonthStart || !1, + showDayNumber: t.showDayNumber, + extraRenderProps: t.extraRenderProps, + viewApi: r.viewApi, + dateEnv: r.dateEnv, + monthStartFormat: n.monthStartFormat + }); + return De(is, Object.assign({}, t, { elClasses: [ + ...BI(i, r.theme), + ...t.elClasses || [] + ], elAttrs: Object.assign(Object.assign({}, t.elAttrs), i.isDisabled ? {} : { "data-date": NI(t.date) }), renderProps: i, generatorName: "dayCellContent", customGenerator: n.dayCellContent, defaultGenerator: t.defaultGenerator, classNameGenerator: ( + // don't use custom classNames if disabled + i.isDisabled ? void 0 : n.dayCellClassNames + ), didMount: n.dayCellDidMount, willUnmount: n.dayCellWillUnmount })); + } +} +function B7(e) { + return !!(e.dayCellContent || a6("dayCellContent", e)); +} +function D0t(e) { + let { date: t, dateEnv: r, dateProfile: n, isMonthStart: i } = e, a = QD(t, e.todayRange, null, n), o = e.showDayNumber ? r.format(t, i ? e.monthStartFormat : R0t) : ""; + return Object.assign(Object.assign(Object.assign({ date: r.toDate(t), view: e.viewApi }, a), { + isMonthStart: i, + dayNumberText: o + }), e.extraRenderProps); +} +class U7 extends Vn { + render() { + let { props: t } = this, { seg: r } = t; + return De(jB, { elTag: "div", elClasses: ["fc-bg-event"], elStyle: { backgroundColor: r.eventRange.ui.backgroundColor }, defaultGenerator: O0t, seg: r, timeText: "", isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: !1, isPast: t.isPast, isFuture: t.isFuture, isToday: t.isToday, disableDragging: !0, disableResizing: !0 }); + } +} +function O0t(e) { + let { title: t } = e.event; + return t && De("div", { className: "fc-event-title" }, e.event.title); +} +function j7(e) { + return De("div", { className: `fc-${e}` }); +} +const oIe = (e) => De(gv.Consumer, null, (t) => { + let { dateEnv: r, options: n } = t, { date: i } = e, a = n.weekNumberFormat || e.defaultFormat, o = r.computeWeekNumber(i), l = r.format(i, a); + return De( + is, + Object.assign({}, e, { renderProps: { num: o, text: l, date: i }, generatorName: "weekNumberContent", customGenerator: n.weekNumberContent, defaultGenerator: M0t, classNameGenerator: n.weekNumberClassNames, didMount: n.weekNumberDidMount, willUnmount: n.weekNumberWillUnmount }) + ); +}); +function M0t(e) { + return e.text; +} +const M4 = 10; +class k0t extends Vn { + constructor() { + super(...arguments), this.state = { + titleId: jm() + }, this.handleRootEl = (t) => { + this.rootEl = t, this.props.elRef && wf(this.props.elRef, t); + }, this.handleDocumentMouseDown = (t) => { + const r = JTe(t); + this.rootEl.contains(r) || this.handleCloseClick(); + }, this.handleDocumentKeyDown = (t) => { + t.key === "Escape" && this.handleCloseClick(); + }, this.handleCloseClick = () => { + let { onClose: t } = this.props; + t && t(); + }; + } + render() { + let { theme: t, options: r } = this.context, { props: n, state: i } = this, a = [ + "fc-popover", + t.getClass("popover") + ].concat(n.extraClassNames || []); + return Vmt(De( + "div", + Object.assign({}, n.extraAttrs, { id: n.id, className: a.join(" "), "aria-labelledby": i.titleId, ref: this.handleRootEl }), + De( + "div", + { className: "fc-popover-header " + t.getClass("popoverHeader") }, + De("span", { className: "fc-popover-title", id: i.titleId }, n.title), + De("span", { className: "fc-popover-close " + t.getIconClass("close"), title: r.closeHint, onClick: this.handleCloseClick }) + ), + De("div", { className: "fc-popover-body " + t.getClass("popoverContent") }, n.children) + ), n.parentEl); + } + componentDidMount() { + document.addEventListener("mousedown", this.handleDocumentMouseDown), document.addEventListener("keydown", this.handleDocumentKeyDown), this.updateSize(); + } + componentWillUnmount() { + document.removeEventListener("mousedown", this.handleDocumentMouseDown), document.removeEventListener("keydown", this.handleDocumentKeyDown); + } + updateSize() { + let { isRtl: t } = this.context, { alignmentEl: r, alignGridTop: n } = this.props, { rootEl: i } = this, a = g0t(r); + if (a) { + let o = i.getBoundingClientRect(), l = n ? ql(r, ".fc-scrollgrid").getBoundingClientRect().top : a.top, u = t ? a.right - o.width : a.left; + l = Math.max(l, M4), u = Math.min(u, document.documentElement.clientWidth - M4 - o.width), u = Math.max(u, M4); + let d = i.offsetParent.getBoundingClientRect(); + Dw(i, { + top: l - d.top, + left: u - d.left + }); + } + } +} +class P0t extends tc { + constructor() { + super(...arguments), this.handleRootEl = (t) => { + this.rootEl = t, t ? this.context.registerInteractiveComponent(this, { + el: t, + useEventCenter: !1 + }) : this.context.unregisterInteractiveComponent(this); + }; + } + render() { + let { options: t, dateEnv: r } = this.context, { props: n } = this, { startDate: i, todayRange: a, dateProfile: o } = n, l = r.format(i, t.dayPopoverFormat); + return De(F7, { elRef: this.handleRootEl, date: i, dateProfile: o, todayRange: a }, (u, d, f) => De( + k0t, + { elRef: f.ref, id: n.id, title: l, extraClassNames: ["fc-more-popover"].concat(f.className || []), extraAttrs: f, parentEl: n.parentEl, alignmentEl: n.alignmentEl, alignGridTop: n.alignGridTop, onClose: n.onClose }, + B7(t) && De(u, { elTag: "div", elClasses: ["fc-more-popover-misc"] }), + n.children + )); + } + queryHit(t, r, n, i) { + let { rootEl: a, props: o } = this; + return t >= 0 && t < n && r >= 0 && r < i ? { + dateProfile: o.dateProfile, + dateSpan: Object.assign({ allDay: !o.forceTimed, range: { + start: o.startDate, + end: o.endDate + } }, o.extraDateSpan), + dayEl: a, + rect: { + left: 0, + top: 0, + right: n, + bottom: i + }, + layer: 1 + // important when comparing with hits from other components + } : null; + } +} +class $7 extends Vn { + constructor() { + super(...arguments), this.state = { + isPopoverOpen: !1, + popoverId: jm() + }, this.handleLinkEl = (t) => { + this.linkEl = t, this.props.elRef && wf(this.props.elRef, t); + }, this.handleClick = (t) => { + let { props: r, context: n } = this, { moreLinkClick: i } = n.options, a = Dde(r).start; + function o(l) { + let { def: u, instance: d, range: f } = l.eventRange; + return { + event: new Vo(n, u, d), + start: n.dateEnv.toDate(f.start), + end: n.dateEnv.toDate(f.end), + isStart: l.isStart, + isEnd: l.isEnd + }; + } + typeof i == "function" && (i = i({ + date: a, + allDay: !!r.allDayDate, + allSegs: r.allSegs.map(o), + hiddenSegs: r.hiddenSegs.map(o), + jsEvent: t, + view: n.viewApi + })), !i || i === "popover" ? this.setState({ isPopoverOpen: !0 }) : typeof i == "string" && n.calendarApi.zoomTo(a, i); + }, this.handlePopoverClose = () => { + this.setState({ isPopoverOpen: !1 }); + }; + } + render() { + let { props: t, state: r } = this; + return De(gv.Consumer, null, (n) => { + let { viewApi: i, options: a, calendarApi: o } = n, { moreLinkText: l } = a, { moreCnt: u } = t, d = Dde(t), f = typeof l == "function" ? l.call(o, u) : `+${u} ${l}`, g = W1(a.moreLinkHint, [u], f), v = { + num: u, + shortText: `+${u}`, + text: f, + view: i + }; + return De( + Di, + null, + !!t.moreCnt && De(is, { elTag: t.elTag || "a", elRef: this.handleLinkEl, elClasses: [ + ...t.elClasses || [], + "fc-more-link" + ], elStyle: t.elStyle, elAttrs: Object.assign(Object.assign(Object.assign({}, t.elAttrs), ewe(this.handleClick)), { title: g, "aria-expanded": r.isPopoverOpen, "aria-controls": r.isPopoverOpen ? r.popoverId : "" }), renderProps: v, generatorName: "moreLinkContent", customGenerator: a.moreLinkContent, defaultGenerator: t.defaultGenerator || N0t, classNameGenerator: a.moreLinkClassNames, didMount: a.moreLinkDidMount, willUnmount: a.moreLinkWillUnmount }, t.children), + r.isPopoverOpen && De(P0t, { id: r.popoverId, startDate: d.start, endDate: d.end, dateProfile: t.dateProfile, todayRange: t.todayRange, extraDateSpan: t.extraDateSpan, parentEl: this.parentEl, alignmentEl: t.alignmentElRef ? t.alignmentElRef.current : this.linkEl, alignGridTop: t.alignGridTop, forceTimed: t.forceTimed, onClose: this.handlePopoverClose }, t.popoverContent()) + ); + }); + } + componentDidMount() { + this.updateParentEl(); + } + componentDidUpdate() { + this.updateParentEl(); + } + updateParentEl() { + this.linkEl && (this.parentEl = ql(this.linkEl, ".fc-view-harness")); + } +} +function N0t(e) { + return e.text; +} +function Dde(e) { + if (e.allDayDate) + return { + start: e.allDayDate, + end: yl(e.allDayDate, 1) + }; + let { hiddenSegs: t } = e; + return { + start: $B(t), + end: F0t(t) + }; +} +function $B(e) { + return e.reduce(L0t).eventRange.range.start; +} +function L0t(e, t) { + return e.eventRange.range.start < t.eventRange.range.start ? e : t; +} +function F0t(e) { + return e.reduce(B0t).eventRange.range.end; +} +function B0t(e, t) { + return e.eventRange.range.end > t.eventRange.range.end ? e : t; +} +class U0t { + constructor() { + this.handlers = []; + } + set(t) { + this.currentValue = t; + for (let r of this.handlers) + r(t); + } + subscribe(t) { + this.handlers.push(t), this.currentValue !== void 0 && t(this.currentValue); + } +} +class j0t extends U0t { + constructor() { + super(...arguments), this.map = /* @__PURE__ */ new Map(); + } + // for consistent order + handle(t) { + const { map: r } = this; + let n = !1; + t.isActive ? (r.set(t.id, t), n = !0) : r.has(t.id) && (r.delete(t.id), n = !0), n && this.set(r); + } +} +const $0t = [], sIe = { + code: "en", + week: { + dow: 0, + doy: 4 + // 4 days need to be within the year to be considered the first week + }, + direction: "ltr", + buttonText: { + prev: "prev", + next: "next", + prevYear: "prev year", + nextYear: "next year", + year: "year", + today: "today", + month: "month", + week: "week", + day: "day", + list: "list" + }, + weekText: "W", + weekTextLong: "Week", + closeHint: "Close", + timeHint: "Time", + eventHint: "Event", + allDayText: "all-day", + moreLinkText: "more", + noEventsText: "No events to display" +}, lIe = Object.assign(Object.assign({}, sIe), { + // Includes things we don't want other locales to inherit, + // things that derive from other translatable strings. + buttonHints: { + prev: "Previous $0", + next: "Next $0", + today(e, t) { + return t === "day" ? "Today" : `This ${e}`; + } + }, + viewHint: "$0 view", + navLinkHint: "Go to $0", + moreLinkHint(e) { + return `Show ${e} more event${e === 1 ? "" : "s"}`; + } +}); +function V0t(e) { + let t = e.length > 0 ? e[0].code : "en", r = $0t.concat(e), n = { + en: lIe + }; + for (let i of r) + n[i.code] = i; + return { + map: n, + defaultCode: t + }; +} +function cIe(e, t) { + return typeof e == "object" && !Array.isArray(e) ? uIe(e.code, [e.code], e) : z0t(e, t); +} +function z0t(e, t) { + let r = [].concat(e || []), n = H0t(r, t) || lIe; + return uIe(e, r, n); +} +function H0t(e, t) { + for (let r = 0; r < e.length; r += 1) { + let n = e[r].toLocaleLowerCase().split("-"); + for (let i = n.length; i > 0; i -= 1) { + let a = n.slice(0, i).join("-"); + if (t[a]) + return t[a]; + } + } + return null; +} +function uIe(e, t, r) { + let n = f7([sIe, r], ["buttonText"]); + delete n.code; + let { week: i } = n; + return delete n.week, { + codeArg: e, + codes: t, + week: i, + simpleNumberFormat: new Intl.NumberFormat(e), + options: n + }; +} +function rc(e) { + return { + id: pv(), + name: e.name, + premiumReleaseDate: e.premiumReleaseDate ? new Date(e.premiumReleaseDate) : void 0, + deps: e.deps || [], + reducers: e.reducers || [], + isLoadingFuncs: e.isLoadingFuncs || [], + contextInit: [].concat(e.contextInit || []), + eventRefiners: e.eventRefiners || {}, + eventDefMemberAdders: e.eventDefMemberAdders || [], + eventSourceRefiners: e.eventSourceRefiners || {}, + isDraggableTransformers: e.isDraggableTransformers || [], + eventDragMutationMassagers: e.eventDragMutationMassagers || [], + eventDefMutationAppliers: e.eventDefMutationAppliers || [], + dateSelectionTransformers: e.dateSelectionTransformers || [], + datePointTransforms: e.datePointTransforms || [], + dateSpanTransforms: e.dateSpanTransforms || [], + views: e.views || {}, + viewPropsTransformers: e.viewPropsTransformers || [], + isPropsValid: e.isPropsValid || null, + externalDefTransforms: e.externalDefTransforms || [], + viewContainerAppends: e.viewContainerAppends || [], + eventDropTransformers: e.eventDropTransformers || [], + componentInteractions: e.componentInteractions || [], + calendarInteractions: e.calendarInteractions || [], + themeClasses: e.themeClasses || {}, + eventSourceDefs: e.eventSourceDefs || [], + cmdFormatter: e.cmdFormatter, + recurringTypes: e.recurringTypes || [], + namedTimeZonedImpl: e.namedTimeZonedImpl, + initialView: e.initialView || "", + elementDraggingImpl: e.elementDraggingImpl, + optionChangeHandlers: e.optionChangeHandlers || {}, + scrollGridImpl: e.scrollGridImpl || null, + listenerRefiners: e.listenerRefiners || {}, + optionRefiners: e.optionRefiners || {}, + propSetHandlers: e.propSetHandlers || {} + }; +} +function W0t(e, t) { + let r = {}, n = { + premiumReleaseDate: void 0, + reducers: [], + isLoadingFuncs: [], + contextInit: [], + eventRefiners: {}, + eventDefMemberAdders: [], + eventSourceRefiners: {}, + isDraggableTransformers: [], + eventDragMutationMassagers: [], + eventDefMutationAppliers: [], + dateSelectionTransformers: [], + datePointTransforms: [], + dateSpanTransforms: [], + views: {}, + viewPropsTransformers: [], + isPropsValid: null, + externalDefTransforms: [], + viewContainerAppends: [], + eventDropTransformers: [], + componentInteractions: [], + calendarInteractions: [], + themeClasses: {}, + eventSourceDefs: [], + cmdFormatter: null, + recurringTypes: [], + namedTimeZonedImpl: null, + initialView: "", + elementDraggingImpl: null, + optionChangeHandlers: {}, + scrollGridImpl: null, + listenerRefiners: {}, + optionRefiners: {}, + propSetHandlers: {} + }; + function i(a) { + for (let o of a) { + const l = o.name, u = r[l]; + u === void 0 ? (r[l] = o.id, i(o.deps), n = Y0t(n, o)) : u !== o.id && console.warn(`Duplicate plugin '${l}'`); + } + } + return e && i(e), i(t), n; +} +function G0t() { + let e = [], t = [], r; + return (n, i) => ((!r || !_d(n, e) || !_d(i, t)) && (r = W0t(n, i)), e = n, t = i, r); +} +function Y0t(e, t) { + return { + premiumReleaseDate: X0t(e.premiumReleaseDate, t.premiumReleaseDate), + reducers: e.reducers.concat(t.reducers), + isLoadingFuncs: e.isLoadingFuncs.concat(t.isLoadingFuncs), + contextInit: e.contextInit.concat(t.contextInit), + eventRefiners: Object.assign(Object.assign({}, e.eventRefiners), t.eventRefiners), + eventDefMemberAdders: e.eventDefMemberAdders.concat(t.eventDefMemberAdders), + eventSourceRefiners: Object.assign(Object.assign({}, e.eventSourceRefiners), t.eventSourceRefiners), + isDraggableTransformers: e.isDraggableTransformers.concat(t.isDraggableTransformers), + eventDragMutationMassagers: e.eventDragMutationMassagers.concat(t.eventDragMutationMassagers), + eventDefMutationAppliers: e.eventDefMutationAppliers.concat(t.eventDefMutationAppliers), + dateSelectionTransformers: e.dateSelectionTransformers.concat(t.dateSelectionTransformers), + datePointTransforms: e.datePointTransforms.concat(t.datePointTransforms), + dateSpanTransforms: e.dateSpanTransforms.concat(t.dateSpanTransforms), + views: Object.assign(Object.assign({}, e.views), t.views), + viewPropsTransformers: e.viewPropsTransformers.concat(t.viewPropsTransformers), + isPropsValid: t.isPropsValid || e.isPropsValid, + externalDefTransforms: e.externalDefTransforms.concat(t.externalDefTransforms), + viewContainerAppends: e.viewContainerAppends.concat(t.viewContainerAppends), + eventDropTransformers: e.eventDropTransformers.concat(t.eventDropTransformers), + calendarInteractions: e.calendarInteractions.concat(t.calendarInteractions), + componentInteractions: e.componentInteractions.concat(t.componentInteractions), + themeClasses: Object.assign(Object.assign({}, e.themeClasses), t.themeClasses), + eventSourceDefs: e.eventSourceDefs.concat(t.eventSourceDefs), + cmdFormatter: t.cmdFormatter || e.cmdFormatter, + recurringTypes: e.recurringTypes.concat(t.recurringTypes), + namedTimeZonedImpl: t.namedTimeZonedImpl || e.namedTimeZonedImpl, + initialView: e.initialView || t.initialView, + elementDraggingImpl: e.elementDraggingImpl || t.elementDraggingImpl, + optionChangeHandlers: Object.assign(Object.assign({}, e.optionChangeHandlers), t.optionChangeHandlers), + scrollGridImpl: t.scrollGridImpl || e.scrollGridImpl, + listenerRefiners: Object.assign(Object.assign({}, e.listenerRefiners), t.listenerRefiners), + optionRefiners: Object.assign(Object.assign({}, e.optionRefiners), t.optionRefiners), + propSetHandlers: Object.assign(Object.assign({}, e.propSetHandlers), t.propSetHandlers) + }; +} +function X0t(e, t) { + return e === void 0 ? t : t === void 0 ? e : new Date(Math.max(e.valueOf(), t.valueOf())); +} +class L0 extends ZD { +} +L0.prototype.classes = { + root: "fc-theme-standard", + tableCellShaded: "fc-cell-shaded", + buttonGroup: "fc-button-group", + button: "fc-button fc-button-primary", + buttonActive: "fc-button-active" +}; +L0.prototype.baseIconClass = "fc-icon"; +L0.prototype.iconClasses = { + close: "fc-icon-x", + prev: "fc-icon-chevron-left", + next: "fc-icon-chevron-right", + prevYear: "fc-icon-chevrons-left", + nextYear: "fc-icon-chevrons-right" +}; +L0.prototype.rtlIconClasses = { + prev: "fc-icon-chevron-right", + next: "fc-icon-chevron-left", + prevYear: "fc-icon-chevrons-right", + nextYear: "fc-icon-chevrons-left" +}; +L0.prototype.iconOverrideOption = "buttonIcons"; +L0.prototype.iconOverrideCustomButtonOption = "icon"; +L0.prototype.iconOverridePrefix = "fc-icon-"; +function K0t(e, t) { + let r = {}, n; + for (n in e) + f6(n, r, e, t); + for (n in t) + f6(n, r, e, t); + return r; +} +function f6(e, t, r, n) { + if (t[e]) + return t[e]; + let i = Z0t(e, t, r, n); + return i && (t[e] = i), i; +} +function Z0t(e, t, r, n) { + let i = r[e], a = n[e], o = (f) => i && i[f] !== null ? i[f] : a && a[f] !== null ? a[f] : null, l = o("component"), u = o("superType"), d = null; + if (u) { + if (u === e) + throw new Error("Can't have a custom view type that references itself"); + d = f6(u, t, r, n); + } + return !l && d && (l = d.component), l ? { + type: e, + component: l, + defaults: Object.assign(Object.assign({}, d ? d.defaults : {}), i ? i.rawOptions : {}), + overrides: Object.assign(Object.assign({}, d ? d.overrides : {}), a ? a.rawOptions : {}) + } : null; +} +function Ode(e) { + return _l(e, q0t); +} +function q0t(e) { + let t = typeof e == "function" ? { component: e } : e, { component: r } = t; + return t.content ? r = Mde(t) : r && !(r.prototype instanceof Vn) && (r = Mde(Object.assign(Object.assign({}, t), { content: r }))), { + superType: t.type, + component: r, + rawOptions: t + // includes type and component too :( + }; +} +function Mde(e) { + return (t) => De(gv.Consumer, null, (r) => De(is, { elTag: "div", elClasses: fwe(r.viewSpec), renderProps: Object.assign(Object.assign({}, t), { nextDayThreshold: r.options.nextDayThreshold }), generatorName: void 0, customGenerator: e.content, classNameGenerator: e.classNames, didMount: e.didMount, willUnmount: e.willUnmount })); +} +function J0t(e, t, r, n) { + let i = Ode(e), a = Ode(t.views), o = K0t(i, a); + return _l(o, (l) => Q0t(l, a, t, r, n)); +} +function Q0t(e, t, r, n, i) { + let a = e.overrides.duration || e.defaults.duration || n.duration || r.duration, o = null, l = "", u = "", d = {}; + if (a && (o = eSt(a), o)) { + let v = T0(o); + l = v.unit, v.value === 1 && (u = l, d = t[l] ? t[l].rawOptions : {}); + } + let f = (v) => { + let y = v.buttonText || {}, C = e.defaults.buttonTextKey; + return C != null && y[C] != null ? y[C] : y[e.type] != null ? y[e.type] : y[u] != null ? y[u] : null; + }, g = (v) => { + let y = v.buttonHints || {}, C = e.defaults.buttonTextKey; + return C != null && y[C] != null ? y[C] : y[e.type] != null ? y[e.type] : y[u] != null ? y[u] : null; + }; + return { + type: e.type, + component: e.component, + duration: o, + durationUnit: l, + singleUnit: u, + optionDefaults: e.defaults, + optionOverrides: Object.assign(Object.assign({}, d), e.overrides), + buttonTextOverride: f(n) || f(r) || // constructor-specified buttonText lookup hash takes precedence + e.overrides.buttonText, + buttonTextDefault: f(i) || e.defaults.buttonText || f(G1) || e.type, + // not DRY + buttonTitleOverride: g(n) || g(r) || e.overrides.buttonHint, + buttonTitleDefault: g(i) || e.defaults.buttonHint || g(G1) + // will eventually fall back to buttonText + }; +} +let kde = {}; +function eSt(e) { + let t = JSON.stringify(e), r = kde[t]; + return r === void 0 && (r = na(e), kde[t] = r), r; +} +function tSt(e, t) { + switch (t.type) { + case "CHANGE_VIEW_TYPE": + e = t.viewType; + } + return e; +} +function rSt(e, t) { + switch (t.type) { + case "SET_OPTION": + return Object.assign(Object.assign({}, e), { [t.optionName]: t.rawOptionValue }); + default: + return e; + } +} +function nSt(e, t, r, n) { + let i; + switch (t.type) { + case "CHANGE_VIEW_TYPE": + return n.build(t.dateMarker || r); + case "CHANGE_DATE": + return n.build(t.dateMarker); + case "PREV": + if (i = n.buildPrev(e, r), i.isValid) + return i; + break; + case "NEXT": + if (i = n.buildNext(e, r), i.isValid) + return i; + break; + } + return e; +} +function iSt(e, t, r) { + let n = t ? t.activeRange : null; + return dIe({}, hSt(e, r), n, r); +} +function aSt(e, t, r, n) { + let i = r ? r.activeRange : null; + switch (t.type) { + case "ADD_EVENT_SOURCES": + return dIe(e, t.sources, i, n); + case "REMOVE_EVENT_SOURCE": + return sSt(e, t.sourceId); + case "PREV": + case "NEXT": + case "CHANGE_DATE": + case "CHANGE_VIEW_TYPE": + return r ? fIe(e, i, n) : e; + case "FETCH_EVENT_SOURCES": + return V7(e, t.sourceIds ? ( + // why no type? + swe(t.sourceIds) + ) : pIe(e, n), i, t.isRefetch || !1, n); + case "RECEIVE_EVENTS": + case "RECEIVE_EVENT_ERROR": + return uSt(e, t.sourceId, t.fetchId, t.fetchRange); + case "REMOVE_ALL_EVENT_SOURCES": + return {}; + default: + return e; + } +} +function oSt(e, t, r) { + let n = t ? t.activeRange : null; + return V7(e, pIe(e, r), n, !0, r); +} +function hIe(e) { + for (let t in e) + if (e[t].isFetching) + return !0; + return !1; +} +function dIe(e, t, r, n) { + let i = {}; + for (let a of t) + i[a.sourceId] = a; + return r && (i = fIe(i, r, n)), Object.assign(Object.assign({}, e), i); +} +function sSt(e, t) { + return Qm(e, (r) => r.sourceId !== t); +} +function fIe(e, t, r) { + return V7(e, Qm(e, (n) => lSt(n, t, r)), t, !1, r); +} +function lSt(e, t, r) { + return gIe(e, r) ? !r.options.lazyFetching || !e.fetchRange || e.isFetching || // always cancel outdated in-progress fetches + t.start < e.fetchRange.start || t.end > e.fetchRange.end : !e.latestFetchId; +} +function V7(e, t, r, n, i) { + let a = {}; + for (let o in e) { + let l = e[o]; + t[o] ? a[o] = cSt(l, r, n, i) : a[o] = l; + } + return a; +} +function cSt(e, t, r, n) { + let { options: i, calendarApi: a } = n, o = n.pluginHooks.eventSourceDefs[e.sourceDefId], l = pv(); + return o.fetch({ + eventSource: e, + range: t, + isRefetch: r, + context: n + }, (u) => { + let { rawEvents: d } = u; + i.eventSourceSuccess && (d = i.eventSourceSuccess.call(a, d, u.response) || d), e.success && (d = e.success.call(a, d, u.response) || d), n.dispatch({ + type: "RECEIVE_EVENTS", + sourceId: e.sourceId, + fetchId: l, + fetchRange: t, + rawEvents: d + }); + }, (u) => { + let d = !1; + i.eventSourceFailure && (i.eventSourceFailure.call(a, u), d = !0), e.failure && (e.failure(u), d = !0), d || console.warn(u.message, u), n.dispatch({ + type: "RECEIVE_EVENT_ERROR", + sourceId: e.sourceId, + fetchId: l, + fetchRange: t, + error: u + }); + }), Object.assign(Object.assign({}, e), { isFetching: !0, latestFetchId: l }); +} +function uSt(e, t, r, n) { + let i = e[t]; + return i && // not already removed + r === i.latestFetchId ? Object.assign(Object.assign({}, e), { [t]: Object.assign(Object.assign({}, i), { isFetching: !1, fetchRange: n }) }) : e; +} +function pIe(e, t) { + return Qm(e, (r) => gIe(r, t)); +} +function hSt(e, t) { + let r = bwe(t), n = [].concat(e.eventSources || []), i = []; + e.initialEvents && n.unshift(e.initialEvents), e.events && n.unshift(e.events); + for (let a of n) { + let o = Swe(a, t, r); + o && i.push(o); + } + return i; +} +function gIe(e, t) { + return !t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange; +} +function dSt(e, t) { + switch (t.type) { + case "UNSELECT_DATES": + return null; + case "SELECT_DATES": + return t.selection; + default: + return e; + } +} +function fSt(e, t) { + switch (t.type) { + case "UNSELECT_EVENT": + return ""; + case "SELECT_EVENT": + return t.eventInstanceId; + default: + return e; + } +} +function pSt(e, t) { + let r; + switch (t.type) { + case "UNSET_EVENT_DRAG": + return null; + case "SET_EVENT_DRAG": + return r = t.state, { + affectedEvents: r.affectedEvents, + mutatedEvents: r.mutatedEvents, + isEvent: r.isEvent + }; + default: + return e; + } +} +function gSt(e, t) { + let r; + switch (t.type) { + case "UNSET_EVENT_RESIZE": + return null; + case "SET_EVENT_RESIZE": + return r = t.state, { + affectedEvents: r.affectedEvents, + mutatedEvents: r.mutatedEvents, + isEvent: r.isEvent + }; + default: + return e; + } +} +function vSt(e, t, r, n, i) { + let a = e.headerToolbar ? Pde(e.headerToolbar, e, t, r, n, i) : null, o = e.footerToolbar ? Pde(e.footerToolbar, e, t, r, n, i) : null; + return { header: a, footer: o }; +} +function Pde(e, t, r, n, i, a) { + let o = {}, l = [], u = !1; + for (let d in e) { + let f = e[d], g = mSt(f, t, r, n, i, a); + o[d] = g.widgets, l.push(...g.viewsWithButtons), u = u || g.hasTitle; + } + return { sectionWidgets: o, viewsWithButtons: l, hasTitle: u }; +} +function mSt(e, t, r, n, i, a) { + let o = t.direction === "rtl", l = t.customButtons || {}, u = r.buttonText || {}, d = t.buttonText || {}, f = r.buttonHints || {}, g = t.buttonHints || {}, v = e ? e.split(" ") : [], y = [], C = !1; + return { widgets: v.map((S) => S.split(",").map((_) => { + if (_ === "title") + return C = !0, { buttonName: _ }; + let E, I, w, x, b, R; + if (E = l[_]) + w = (M) => { + E.click && E.click.call(M.target, M, M.target); + }, (x = n.getCustomButtonIconClass(E)) || (x = n.getIconClass(_, o)) || (b = E.text), R = E.hint || E.text; + else if (I = i[_]) { + y.push(_), w = () => { + a.changeView(_); + }, (b = I.buttonTextOverride) || (x = n.getIconClass(_, o)) || (b = I.buttonTextDefault); + let M = I.buttonTextOverride || I.buttonTextDefault; + R = W1( + I.buttonTitleOverride || I.buttonTitleDefault || t.viewHint, + [M, _], + // view-name = buttonName + M + ); + } else if (a[_]) + if (w = () => { + a[_](); + }, (b = u[_]) || (x = n.getIconClass(_, o)) || (b = d[_]), _ === "prevYear" || _ === "nextYear") { + let M = _ === "prevYear" ? "prev" : "next"; + R = W1(f[M] || g[M], [ + d.year || "year", + "year" + ], d[_]); + } else + R = (M) => W1(f[_] || g[_], [ + d[M] || M, + M + ], d[_]); + return { buttonName: _, buttonClick: w, buttonIcon: x, buttonText: b, buttonHint: R }; + })), viewsWithButtons: y, hasTitle: C }; +} +class ySt { + constructor(t, r, n) { + this.type = t, this.getCurrentData = r, this.dateEnv = n; + } + get calendar() { + return this.getCurrentData().calendarApi; + } + get title() { + return this.getCurrentData().viewTitle; + } + get activeStart() { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start); + } + get activeEnd() { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end); + } + get currentStart() { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start); + } + get currentEnd() { + return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end); + } + getOption(t) { + return this.getCurrentData().options[t]; + } +} +let _St = { + ignoreRange: !0, + parseMeta(e) { + return Array.isArray(e.events) ? e.events : null; + }, + fetch(e, t) { + t({ + rawEvents: e.eventSource.meta + }); + } +}; +const SSt = rc({ + name: "array-event-source", + eventSourceDefs: [_St] +}); +let bSt = { + parseMeta(e) { + return typeof e.events == "function" ? e.events : null; + }, + fetch(e, t, r) { + const { dateEnv: n } = e.context, i = e.eventSource.meta; + Dwe(i.bind(null, Awe(e.range, n)), (a) => t({ rawEvents: a }), r); + } +}; +const ESt = rc({ + name: "func-event-source", + eventSourceDefs: [bSt] +}), CSt = { + method: String, + extraParams: At, + startParam: String, + endParam: String, + timeZoneParam: String +}; +let TSt = { + parseMeta(e) { + return e.url && (e.format === "json" || !e.format) ? { + url: e.url, + format: "json", + method: (e.method || "GET").toUpperCase(), + extraParams: e.extraParams, + startParam: e.startParam, + endParam: e.endParam, + timeZoneParam: e.timeZoneParam + } : null; + }, + fetch(e, t, r) { + const { meta: n } = e.eventSource, i = ISt(n, e.range, e.context); + Owe(n.method, n.url, i).then(([a, o]) => { + t({ rawEvents: a, response: o }); + }, r); + } +}; +const wSt = rc({ + name: "json-event-source", + eventSourceRefiners: CSt, + eventSourceDefs: [TSt] +}); +function ISt(e, t, r) { + let { dateEnv: n, options: i } = r, a, o, l, u, d = {}; + return a = e.startParam, a == null && (a = i.startParam), o = e.endParam, o == null && (o = i.endParam), l = e.timeZoneParam, l == null && (l = i.timeZoneParam), typeof e.extraParams == "function" ? u = e.extraParams() : u = e.extraParams || {}, Object.assign(d, u), d[a] = n.formatIso(t.start), d[o] = n.formatIso(t.end), n.timeZone !== "local" && (d[l] = n.timeZone), d; +} +const xSt = { + daysOfWeek: At, + startTime: na, + endTime: na, + duration: na, + startRecur: At, + endRecur: At +}; +let ASt = { + parse(e, t) { + if (e.daysOfWeek || e.startTime || e.endTime || e.startRecur || e.endRecur) { + let r = { + daysOfWeek: e.daysOfWeek || null, + startTime: e.startTime || null, + endTime: e.endTime || null, + startRecur: e.startRecur ? t.createMarker(e.startRecur) : null, + endRecur: e.endRecur ? t.createMarker(e.endRecur) : null + }, n; + return e.duration && (n = e.duration), !n && e.startTime && e.endTime && (n = vyt(e.endTime, e.startTime)), { + allDayGuess: !e.startTime && !e.endTime, + duration: n, + typeData: r + // doesn't need endTime anymore but oh well + }; + } + return null; + }, + expand(e, t, r) { + let n = cv(t, { start: e.startRecur, end: e.endRecur }); + return n ? DSt(e.daysOfWeek, e.startTime, n, r) : []; + } +}; +const RSt = rc({ + name: "simple-recurring-event", + recurringTypes: [ASt], + eventRefiners: xSt +}); +function DSt(e, t, r, n) { + let i = e ? swe(e) : null, a = ho(r.start), o = r.end, l = []; + for (; a < o; ) { + let u; + (!i || i[a.getUTCDay()]) && (t ? u = n.add(a, t) : u = a, l.push(u)), a = yl(a, 1); + } + return l; +} +const OSt = rc({ + name: "change-handler", + optionChangeHandlers: { + events(e, t) { + Nde([e], t); + }, + eventSources: Nde + } +}); +function Nde(e, t) { + let r = p7(t.getCurrentData().eventSources); + if (r.length === 1 && e.length === 1 && Array.isArray(r[0]._raw) && Array.isArray(e[0])) { + t.dispatch({ + type: "RESET_RAW_EVENTS", + sourceId: r[0].sourceId, + rawEvents: e[0] + }); + return; + } + let n = []; + for (let i of e) { + let a = !1; + for (let o = 0; o < r.length; o += 1) + if (r[o]._raw === i) { + r.splice(o, 1), a = !0; + break; + } + a || n.push(i); + } + for (let i of r) + t.dispatch({ + type: "REMOVE_EVENT_SOURCE", + sourceId: i.sourceId + }); + for (let i of n) + t.calendarApi.addEventSource(i); +} +function MSt(e, t) { + t.emitter.trigger("datesSet", Object.assign(Object.assign({}, Awe(e.activeRange, t.dateEnv)), { view: t.viewApi })); +} +function kSt(e, t) { + let { emitter: r } = t; + r.hasHandlers("eventsSet") && r.trigger("eventsSet", nE(e, t)); +} +const PSt = [ + SSt, + ESt, + wSt, + RSt, + OSt, + rc({ + name: "misc", + isLoadingFuncs: [ + (e) => hIe(e.eventSources) + ], + propSetHandlers: { + dateProfile: MSt, + eventStore: kSt + } + }) +]; +class NSt { + constructor(t, r) { + this.runTaskOption = t, this.drainedOption = r, this.queue = [], this.delayedRunner = new KR(this.drain.bind(this)); + } + request(t, r) { + this.queue.push(t), this.delayedRunner.request(r); + } + pause(t) { + this.delayedRunner.pause(t); + } + resume(t, r) { + this.delayedRunner.resume(t, r); + } + drain() { + let { queue: t } = this; + for (; t.length; ) { + let r = [], n; + for (; n = t.shift(); ) + this.runTask(n), r.push(n); + this.drained(r); + } + } + runTask(t) { + this.runTaskOption && this.runTaskOption(t); + } + drained(t) { + this.drainedOption && this.drainedOption(t); + } +} +function LSt(e, t, r) { + let n; + return /^(year|month)$/.test(e.currentRangeUnit) ? n = e.currentRange : n = e.activeRange, r.formatRange(n.start, n.end, co(t.titleFormat || FSt(e)), { + isEndExclusive: e.isRangeAllDay, + defaultSeparator: t.titleRangeSeparator + }); +} +function FSt(e) { + let { currentRangeUnit: t } = e; + if (t === "year") + return { year: "numeric" }; + if (t === "month") + return { year: "numeric", month: "long" }; + let r = ZR(e.currentRange.start, e.currentRange.end); + return r !== null && r > 1 ? { year: "numeric", month: "short", day: "numeric" } : { year: "numeric", month: "long", day: "numeric" }; +} +class BSt { + constructor(t) { + this.computeCurrentViewData = Gr(this._computeCurrentViewData), this.organizeRawLocales = Gr(V0t), this.buildLocale = Gr(cIe), this.buildPluginHooks = G0t(), this.buildDateEnv = Gr(USt), this.buildTheme = Gr(jSt), this.parseToolbars = Gr(vSt), this.buildViewSpecs = Gr(J0t), this.buildDateProfileGenerator = d0($St), this.buildViewApi = Gr(VSt), this.buildViewUiProps = d0(WSt), this.buildEventUiBySource = Gr(zSt, Cc), this.buildEventUiBases = Gr(HSt), this.parseContextBusinessHours = d0(GSt), this.buildTitle = Gr(LSt), this.emitter = new JD(), this.actionRunner = new NSt(this._handleAction.bind(this), this.updateData.bind(this)), this.currentCalendarOptionsInput = {}, this.currentCalendarOptionsRefined = {}, this.currentViewOptionsInput = {}, this.currentViewOptionsRefined = {}, this.currentCalendarOptionsRefiners = {}, this.optionsForRefining = [], this.optionsForHandling = [], this.getCurrentData = () => this.data, this.dispatch = (v) => { + this.actionRunner.request(v); + }, this.props = t, this.actionRunner.pause(); + let r = {}, n = this.computeOptionsData(t.optionOverrides, r, t.calendarApi), i = n.calendarOptions.initialView || n.pluginHooks.initialView, a = this.computeCurrentViewData(i, n, t.optionOverrides, r); + t.calendarApi.currentDataManager = this, this.emitter.setThisContext(t.calendarApi), this.emitter.setOptions(a.options); + let o = y_t(n.calendarOptions, n.dateEnv), l = a.dateProfileGenerator.build(o); + tv(l.activeRange, o) || (o = l.currentRange.start); + let u = { + dateEnv: n.dateEnv, + options: n.calendarOptions, + pluginHooks: n.pluginHooks, + calendarApi: t.calendarApi, + dispatch: this.dispatch, + emitter: this.emitter, + getCurrentData: this.getCurrentData + }; + for (let v of n.pluginHooks.contextInit) + v(u); + let d = iSt(n.calendarOptions, l, u), f = { + dynamicOptionOverrides: r, + currentViewType: i, + currentDate: o, + dateProfile: l, + businessHours: this.parseContextBusinessHours(u), + eventSources: d, + eventUiBases: {}, + eventStore: gd(), + renderableEventStore: gd(), + dateSelection: null, + eventSelection: "", + eventDrag: null, + eventResize: null, + selectionConfig: this.buildViewUiProps(u).selectionConfig + }, g = Object.assign(Object.assign({}, u), f); + for (let v of n.pluginHooks.reducers) + Object.assign(f, v(null, null, g)); + k4(f, u) && this.emitter.trigger("loading", !0), this.state = f, this.updateData(), this.actionRunner.resume(); + } + resetOptions(t, r) { + let { props: n } = this; + r === void 0 ? n.optionOverrides = t : (n.optionOverrides = Object.assign(Object.assign({}, n.optionOverrides || {}), t), this.optionsForRefining.push(...r)), (r === void 0 || r.length) && this.actionRunner.request({ + type: "NOTHING" + }); + } + _handleAction(t) { + let { props: r, state: n, emitter: i } = this, a = rSt(n.dynamicOptionOverrides, t), o = this.computeOptionsData(r.optionOverrides, a, r.calendarApi), l = tSt(n.currentViewType, t), u = this.computeCurrentViewData(l, o, r.optionOverrides, a); + r.calendarApi.currentDataManager = this, i.setThisContext(r.calendarApi), i.setOptions(u.options); + let d = { + dateEnv: o.dateEnv, + options: o.calendarOptions, + pluginHooks: o.pluginHooks, + calendarApi: r.calendarApi, + dispatch: this.dispatch, + emitter: i, + getCurrentData: this.getCurrentData + }, { currentDate: f, dateProfile: g } = n; + this.data && this.data.dateProfileGenerator !== u.dateProfileGenerator && (g = u.dateProfileGenerator.build(f)), f = m_t(f, t), g = nSt(g, t, f, u.dateProfileGenerator), (t.type === "PREV" || // TODO: move this logic into DateProfileGenerator + t.type === "NEXT" || // " + !tv(g.currentRange, f)) && (f = g.currentRange.start); + let v = aSt(n.eventSources, t, g, d), y = O_t(n.eventStore, t, v, g, d), A = hIe(v) && !u.options.progressiveEventRendering && n.renderableEventStore || y, { eventUiSingleBase: S, selectionConfig: _ } = this.buildViewUiProps(d), E = this.buildEventUiBySource(v), I = this.buildEventUiBases(A.defs, S, E), w = { + dynamicOptionOverrides: a, + currentViewType: l, + currentDate: f, + dateProfile: g, + eventSources: v, + eventStore: y, + renderableEventStore: A, + selectionConfig: _, + eventUiBases: I, + businessHours: this.parseContextBusinessHours(d), + dateSelection: dSt(n.dateSelection, t), + eventSelection: fSt(n.eventSelection, t), + eventDrag: pSt(n.eventDrag, t), + eventResize: gSt(n.eventResize, t) + }, x = Object.assign(Object.assign({}, d), w); + for (let M of o.pluginHooks.reducers) + Object.assign(w, M(n, t, x)); + let b = k4(n, d), R = k4(w, d); + !b && R ? i.trigger("loading", !0) : b && !R && i.trigger("loading", !1), this.state = w, r.onAction && r.onAction(t); + } + updateData() { + let { props: t, state: r } = this, n = this.data, i = this.computeOptionsData(t.optionOverrides, r.dynamicOptionOverrides, t.calendarApi), a = this.computeCurrentViewData(r.currentViewType, i, t.optionOverrides, r.dynamicOptionOverrides), o = this.data = Object.assign(Object.assign(Object.assign({ viewTitle: this.buildTitle(r.dateProfile, a.options, i.dateEnv), calendarApi: t.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, i), a), r), l = i.pluginHooks.optionChangeHandlers, u = n && n.calendarOptions, d = i.calendarOptions; + if (u && u !== d) { + u.timeZone !== d.timeZone && (r.eventSources = o.eventSources = oSt(o.eventSources, r.dateProfile, o), r.eventStore = o.eventStore = Tde(o.eventStore, n.dateEnv, o.dateEnv), r.renderableEventStore = o.renderableEventStore = Tde(o.renderableEventStore, n.dateEnv, o.dateEnv)); + for (let f in l) + (this.optionsForHandling.indexOf(f) !== -1 || u[f] !== d[f]) && l[f](d[f], o); + } + this.optionsForHandling = [], t.onData && t.onData(o); + } + computeOptionsData(t, r, n) { + if (!this.optionsForRefining.length && t === this.stableOptionOverrides && r === this.stableDynamicOptionOverrides) + return this.stableCalendarOptionsData; + let { refinedOptions: i, pluginHooks: a, localeDefaults: o, availableLocaleData: l, extra: u } = this.processRawCalendarOptions(t, r); + Lde(u); + let d = this.buildDateEnv(i.timeZone, i.locale, i.weekNumberCalculation, i.firstDay, i.weekText, a, l, i.defaultRangeSeparator), f = this.buildViewSpecs(a.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, o), g = this.buildTheme(i, a), v = this.parseToolbars(i, this.stableOptionOverrides, g, f, n); + return this.stableCalendarOptionsData = { + calendarOptions: i, + pluginHooks: a, + dateEnv: d, + viewSpecs: f, + theme: g, + toolbarConfig: v, + localeDefaults: o, + availableRawLocales: l.map + }; + } + // always called from behind a memoizer + processRawCalendarOptions(t, r) { + let { locales: n, locale: i } = w4([ + G1, + t, + r + ]), a = this.organizeRawLocales(n), o = a.map, l = this.buildLocale(i || a.defaultCode, o).options, u = this.buildPluginHooks(t.plugins || [], PSt), d = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _de), Sde), bde), u.listenerRefiners), u.optionRefiners), f = {}, g = w4([ + G1, + l, + t, + r + ]), v = {}, y = this.currentCalendarOptionsInput, C = this.currentCalendarOptionsRefined, A = !1; + for (let S in g) + this.optionsForRefining.indexOf(S) === -1 && (g[S] === y[S] || Eb[S] && S in y && Eb[S](y[S], g[S])) ? v[S] = C[S] : d[S] ? (v[S] = d[S](g[S]), A = !0) : f[S] = y[S]; + return A && (this.currentCalendarOptionsInput = g, this.currentCalendarOptionsRefined = v, this.stableOptionOverrides = t, this.stableDynamicOptionOverrides = r), this.optionsForHandling.push(...this.optionsForRefining), this.optionsForRefining = [], { + rawOptions: this.currentCalendarOptionsInput, + refinedOptions: this.currentCalendarOptionsRefined, + pluginHooks: u, + availableLocaleData: a, + localeDefaults: l, + extra: f + }; + } + _computeCurrentViewData(t, r, n, i) { + let a = r.viewSpecs[t]; + if (!a) + throw new Error(`viewType "${t}" is not available. Please make sure you've loaded all neccessary plugins`); + let { refinedOptions: o, extra: l } = this.processRawViewOptions(a, r.pluginHooks, r.localeDefaults, n, i); + Lde(l); + let u = this.buildDateProfileGenerator({ + dateProfileGeneratorClass: a.optionDefaults.dateProfileGeneratorClass, + duration: a.duration, + durationUnit: a.durationUnit, + usesMinMaxTime: a.optionDefaults.usesMinMaxTime, + dateEnv: r.dateEnv, + calendarApi: this.props.calendarApi, + slotMinTime: o.slotMinTime, + slotMaxTime: o.slotMaxTime, + showNonCurrentDates: o.showNonCurrentDates, + dayCount: o.dayCount, + dateAlignment: o.dateAlignment, + dateIncrement: o.dateIncrement, + hiddenDays: o.hiddenDays, + weekends: o.weekends, + nowInput: o.now, + validRangeInput: o.validRange, + visibleRangeInput: o.visibleRange, + fixedWeekCount: o.fixedWeekCount + }), d = this.buildViewApi(t, this.getCurrentData, r.dateEnv); + return { viewSpec: a, options: o, dateProfileGenerator: u, viewApi: d }; + } + processRawViewOptions(t, r, n, i, a) { + let o = w4([ + G1, + t.optionDefaults, + n, + i, + t.optionOverrides, + a + ]), l = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _de), Sde), bde), Kyt), r.listenerRefiners), r.optionRefiners), u = {}, d = this.currentViewOptionsInput, f = this.currentViewOptionsRefined, g = !1, v = {}; + for (let y in o) + o[y] === d[y] || Eb[y] && Eb[y](o[y], d[y]) ? u[y] = f[y] : (o[y] === this.currentCalendarOptionsInput[y] || Eb[y] && Eb[y](o[y], this.currentCalendarOptionsInput[y]) ? y in this.currentCalendarOptionsRefined && (u[y] = this.currentCalendarOptionsRefined[y]) : l[y] ? u[y] = l[y](o[y]) : v[y] = o[y], g = !0); + return g && (this.currentViewOptionsInput = o, this.currentViewOptionsRefined = u), { + rawOptions: this.currentViewOptionsInput, + refinedOptions: this.currentViewOptionsRefined, + extra: v + }; + } +} +function USt(e, t, r, n, i, a, o, l) { + let u = cIe(t || o.defaultCode, o.map); + return new i_t({ + calendarSystem: "gregory", + timeZone: e, + namedTimeZoneImpl: a.namedTimeZonedImpl, + locale: u, + weekNumberCalculation: r, + firstDay: n, + weekText: i, + cmdFormatter: a.cmdFormatter, + defaultSeparator: l + }); +} +function jSt(e, t) { + let r = t.themeClasses[e.themeSystem] || L0; + return new r(e); +} +function $St(e) { + let t = e.dateProfileGeneratorClass || vwe; + return new t(e); +} +function VSt(e, t, r) { + return new ySt(e, t, r); +} +function zSt(e) { + return _l(e, (t) => t.ui); +} +function HSt(e, t, r) { + let n = { "": t }; + for (let i in e) { + let a = e[i]; + a.sourceId && r[a.sourceId] && (n[i] = r[a.sourceId]); + } + return n; +} +function WSt(e) { + let { options: t } = e; + return { + eventUiSingleBase: JR({ + display: t.eventDisplay, + editable: t.editable, + startEditable: t.eventStartEditable, + durationEditable: t.eventDurationEditable, + constraint: t.eventConstraint, + overlap: typeof t.eventOverlap == "boolean" ? t.eventOverlap : void 0, + allow: t.eventAllow, + backgroundColor: t.eventBackgroundColor, + borderColor: t.eventBorderColor, + textColor: t.eventTextColor, + color: t.eventColor + // classNames: options.eventClassNames // render hook will handle this + }, e), + selectionConfig: JR({ + constraint: t.selectConstraint, + overlap: typeof t.selectOverlap == "boolean" ? t.selectOverlap : void 0, + allow: t.selectAllow + }, e) + }; +} +function k4(e, t) { + for (let r of t.pluginHooks.isLoadingFuncs) + if (r(e)) + return !0; + return !1; +} +function GSt(e) { + return Twe(e.options.businessHours, e); +} +function Lde(e, t) { + for (let r in e) + console.warn(`Unknown option '${r}'` + (t ? ` for view '${t}'` : "")); +} +class YSt extends Vn { + render() { + let t = this.props.widgetGroups.map((r) => this.renderWidgetGroup(r)); + return De("div", { className: "fc-toolbar-chunk" }, ...t); + } + renderWidgetGroup(t) { + let { props: r } = this, { theme: n } = this.context, i = [], a = !0; + for (let o of t) { + let { buttonName: l, buttonClick: u, buttonText: d, buttonIcon: f, buttonHint: g } = o; + if (l === "title") + a = !1, i.push(De("h2", { className: "fc-toolbar-title", id: r.titleId }, r.title)); + else { + let v = l === r.activeButton, y = !r.isTodayEnabled && l === "today" || !r.isPrevEnabled && l === "prev" || !r.isNextEnabled && l === "next", C = [`fc-${l}-button`, n.getClass("button")]; + v && C.push(n.getClass("buttonActive")), i.push(De("button", { type: "button", title: typeof g == "function" ? g(r.navUnit) : g, disabled: y, "aria-pressed": v, className: C.join(" "), onClick: u }, d || (f ? De("span", { className: f, role: "img" }) : ""))); + } + } + if (i.length > 1) { + let o = a && n.getClass("buttonGroup") || ""; + return De("div", { className: o }, ...i); + } + return i[0]; + } +} +class Fde extends Vn { + render() { + let { model: t, extraClassName: r } = this.props, n = !1, i, a, o = t.sectionWidgets, l = o.center; + return o.left ? (n = !0, i = o.left) : i = o.start, o.right ? (n = !0, a = o.right) : a = o.end, De( + "div", + { className: [ + r || "", + "fc-toolbar", + n ? "fc-toolbar-ltr" : "" + ].join(" ") }, + this.renderSection("start", i || []), + this.renderSection("center", l || []), + this.renderSection("end", a || []) + ); + } + renderSection(t, r) { + let { props: n } = this; + return De(YSt, { key: t, widgetGroups: r, title: n.title, navUnit: n.navUnit, activeButton: n.activeButton, isTodayEnabled: n.isTodayEnabled, isPrevEnabled: n.isPrevEnabled, isNextEnabled: n.isNextEnabled, titleId: n.titleId }); + } +} +class XSt extends Vn { + constructor() { + super(...arguments), this.state = { + availableWidth: null + }, this.handleEl = (t) => { + this.el = t, wf(this.props.elRef, t), this.updateAvailableWidth(); + }, this.handleResize = () => { + this.updateAvailableWidth(); + }; + } + render() { + let { props: t, state: r } = this, { aspectRatio: n } = t, i = [ + "fc-view-harness", + n || t.liquid || t.height ? "fc-view-harness-active" : "fc-view-harness-passive" + // let the view do the height + ], a = "", o = ""; + return n ? r.availableWidth !== null ? a = r.availableWidth / n : o = `${1 / n * 100}%` : a = t.height || "", De("div", { "aria-labelledby": t.labeledById, ref: this.handleEl, className: i.join(" "), style: { height: a, paddingBottom: o } }, t.children); + } + componentDidMount() { + this.context.addResizeHandler(this.handleResize); + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleResize); + } + updateAvailableWidth() { + this.el && // needed. but why? + this.props.aspectRatio && this.setState({ availableWidth: this.el.offsetWidth }); + } +} +class KSt extends LI { + constructor(t) { + super(t), this.handleSegClick = (r, n) => { + let { component: i } = this, { context: a } = i, o = Qw(n); + if (o && // might be the
        surrounding the more link + i.isValidSegDownEl(r.target)) { + let l = ql(r.target, ".fc-event-forced-url"), u = l ? l.querySelector("a[href]").href : ""; + a.emitter.trigger("eventClick", { + el: n, + event: new Vo(i.context, o.eventRange.def, o.eventRange.instance), + jsEvent: r, + view: a.viewApi + }), u && !r.defaultPrevented && (window.location.href = u); + } + }, this.destroy = QTe( + t.el, + "click", + ".fc-event", + // on both fg and bg events + this.handleSegClick + ); + } +} +class ZSt extends LI { + constructor(t) { + super(t), this.handleEventElRemove = (r) => { + r === this.currentSegEl && this.handleSegLeave(null, this.currentSegEl); + }, this.handleSegEnter = (r, n) => { + Qw(n) && (this.currentSegEl = n, this.triggerEvent("eventMouseEnter", r, n)); + }, this.handleSegLeave = (r, n) => { + this.currentSegEl && (this.currentSegEl = null, this.triggerEvent("eventMouseLeave", r, n)); + }, this.removeHoverListeners = iyt( + t.el, + ".fc-event", + // on both fg and bg events + this.handleSegEnter, + this.handleSegLeave + ); + } + destroy() { + this.removeHoverListeners(); + } + triggerEvent(t, r, n) { + let { component: i } = this, { context: a } = i, o = Qw(n); + (!r || i.isValidSegDownEl(r.target)) && a.emitter.trigger(t, { + el: n, + event: new Vo(a, o.eventRange.def, o.eventRange.instance), + jsEvent: r, + view: a.viewApi + }); + } +} +class qSt extends $E { + constructor() { + super(...arguments), this.buildViewContext = Gr(s_t), this.buildViewPropTransformers = Gr(QSt), this.buildToolbarProps = Gr(JSt), this.headerRef = Ga(), this.footerRef = Ga(), this.interactionsStore = {}, this.state = { + viewLabelId: jm() + }, this.registerInteractiveComponent = (t, r) => { + let n = a0t(t, r), o = [ + KSt, + ZSt + ].concat(this.props.pluginHooks.componentInteractions).map((l) => new l(n)); + this.interactionsStore[t.uid] = o, u6[t.uid] = n; + }, this.unregisterInteractiveComponent = (t) => { + let r = this.interactionsStore[t.uid]; + if (r) { + for (let n of r) + n.destroy(); + delete this.interactionsStore[t.uid]; + } + delete u6[t.uid]; + }, this.resizeRunner = new KR(() => { + this.props.emitter.trigger("_resize", !0), this.props.emitter.trigger("windowResize", { view: this.props.viewApi }); + }), this.handleWindowResize = (t) => { + let { options: r } = this.props; + r.handleWindowResize && t.target === window && this.resizeRunner.request(r.windowResizeDelay); + }; + } + /* + renders INSIDE of an outer div + */ + render() { + let { props: t } = this, { toolbarConfig: r, options: n } = t, i = this.buildToolbarProps( + t.viewSpec, + t.dateProfile, + t.dateProfileGenerator, + t.currentDate, + qD(t.options.now, t.dateEnv), + // TODO: use NowTimer???? + t.viewTitle + ), a = !1, o = "", l; + t.isHeightAuto || t.forPrint ? o = "" : n.height != null ? a = !0 : n.contentHeight != null ? o = n.contentHeight : l = Math.max(n.aspectRatio, 0.5); + let u = this.buildViewContext(t.viewSpec, t.viewApi, t.options, t.dateProfileGenerator, t.dateEnv, t.theme, t.pluginHooks, t.dispatch, t.getCurrentData, t.emitter, t.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent), d = r.header && r.header.hasTitle ? this.state.viewLabelId : void 0; + return De( + gv.Provider, + { value: u }, + r.header && De(Fde, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: r.header, titleId: d }, i)), + De( + XSt, + { liquid: a, height: o, aspectRatio: l, labeledById: d }, + this.renderView(t), + this.buildAppendContent() + ), + r.footer && De(Fde, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: r.footer, titleId: "" }, i)) + ); + } + componentDidMount() { + let { props: t } = this; + this.calendarInteractions = t.pluginHooks.calendarInteractions.map((n) => new n(t)), window.addEventListener("resize", this.handleWindowResize); + let { propSetHandlers: r } = t.pluginHooks; + for (let n in r) + r[n](t[n], t); + } + componentDidUpdate(t) { + let { props: r } = this, { propSetHandlers: n } = r.pluginHooks; + for (let i in n) + r[i] !== t[i] && n[i](r[i], r); + } + componentWillUnmount() { + window.removeEventListener("resize", this.handleWindowResize), this.resizeRunner.clear(); + for (let t of this.calendarInteractions) + t.destroy(); + this.props.emitter.trigger("_unmount"); + } + buildAppendContent() { + let { props: t } = this, r = t.pluginHooks.viewContainerAppends.map((n) => n(t)); + return De(Di, {}, ...r); + } + renderView(t) { + let { pluginHooks: r } = t, { viewSpec: n } = t, i = { + dateProfile: t.dateProfile, + businessHours: t.businessHours, + eventStore: t.renderableEventStore, + eventUiBases: t.eventUiBases, + dateSelection: t.dateSelection, + eventSelection: t.eventSelection, + eventDrag: t.eventDrag, + eventResize: t.eventResize, + isHeightAuto: t.isHeightAuto, + forPrint: t.forPrint + }, a = this.buildViewPropTransformers(r.viewPropsTransformers); + for (let l of a) + Object.assign(i, l.transform(i, t)); + let o = n.component; + return De(o, Object.assign({}, i)); + } +} +function JSt(e, t, r, n, i, a) { + let o = r.build(i, void 0, !1), l = r.buildPrev(t, n, !1), u = r.buildNext(t, n, !1); + return { + title: a, + activeButton: e.type, + navUnit: e.singleUnit, + isTodayEnabled: o.isValid && !tv(t.currentRange, i), + isPrevEnabled: l.isValid, + isNextEnabled: u.isValid + }; +} +function QSt(e) { + return e.map((t) => new t()); +} +class ebt extends FI { + constructor(t, r = {}) { + super(), this.isRendering = !1, this.isRendered = !1, this.currentClassNames = [], this.customContentRenderId = 0, this.handleAction = (n) => { + switch (n.type) { + case "SET_EVENT_DRAG": + case "SET_EVENT_RESIZE": + this.renderRunner.tryDrain(); + } + }, this.handleData = (n) => { + this.currentData = n, this.renderRunner.request(n.calendarOptions.rerenderDelay); + }, this.handleRenderRequest = () => { + if (this.isRendering) { + this.isRendered = !0; + let { currentData: n } = this; + Jw(() => { + XR(De(i0t, { options: n.calendarOptions, theme: n.theme, emitter: n.emitter }, (i, a, o, l) => (this.setClassNames(i), this.setHeight(a), De( + dwe.Provider, + { value: this.customContentRenderId }, + De(qSt, Object.assign({ isHeightAuto: o, forPrint: l }, n)) + ))), this.el); + }); + } else + this.isRendered && (this.isRendered = !1, XR(null, this.el), this.setClassNames([]), this.setHeight("")); + }, Zmt(t), this.el = t, this.renderRunner = new KR(this.handleRenderRequest), new BSt({ + optionOverrides: r, + calendarApi: this, + onAction: this.handleAction, + onData: this.handleData + }); + } + render() { + let t = this.isRendering; + t ? this.customContentRenderId += 1 : this.isRendering = !0, this.renderRunner.request(), t && this.updateSize(); + } + destroy() { + this.isRendering && (this.isRendering = !1, this.renderRunner.request()); + } + updateSize() { + Jw(() => { + super.updateSize(); + }); + } + batchRendering(t) { + this.renderRunner.pause("batchRendering"), t(), this.renderRunner.resume("batchRendering"); + } + pauseRendering() { + this.renderRunner.pause("pauseRendering"); + } + resumeRendering() { + this.renderRunner.resume("pauseRendering", !0); + } + resetOptions(t, r) { + this.currentDataManager.resetOptions(t, r); + } + setClassNames(t) { + if (!_d(t, this.currentClassNames)) { + let { classList: r } = this.el; + for (let n of this.currentClassNames) + r.remove(n); + for (let n of t) + r.add(n); + this.currentClassNames = t; + } + } + setHeight(t) { + qTe(this.el, "height", t); + } +} +const tbt = parseInt(String($react.version).split(".")[0]), rbt = tbt < 18; +class vIe extends $react.Component { + constructor() { + super(...arguments), this.elRef = $react.createRef(), this.isUpdating = !1, this.isUnmounting = !1, this.state = { + customRenderingMap: /* @__PURE__ */ new Map() + }, this.requestResize = () => { + this.isUnmounting || (this.cancelResize(), this.resizeId = requestAnimationFrame(() => { + this.doResize(); + })); + }; + } + render() { + const t = []; + for (const r of this.state.customRenderingMap.values()) + t.push(/* @__PURE__ */ dt(nbt, { + customRendering: r + }, r.id)); + return /* @__PURE__ */ dt("div", { + ref: this.elRef, + children: t + }); + } + componentDidMount() { + this.isUnmounting = !1; + const t = new j0t(); + this.handleCustomRendering = t.handle.bind(t), this.calendar = new ebt(this.elRef.current, Object.assign(Object.assign({}, this.props), { + handleCustomRendering: this.handleCustomRendering + })), this.calendar.render(); + let r; + t.subscribe((n) => { + const i = Date.now(), a = !r; + // don't call flushSync if React version already does sync rendering by default + // guards against fatal errors: + // https://github.com/fullcalendar/fullcalendar/issues/7448 + (rbt || // + a || this.isUpdating || this.isUnmounting || i - r < 100 ? mIe : $react_dom.flushSync)(() => { + this.setState({ + customRenderingMap: n + }, () => { + r = i, a ? this.doResize() : this.requestResize(); + }); + }); + }); + } + componentDidUpdate() { + this.isUpdating = !0, this.calendar.resetOptions(Object.assign(Object.assign({}, this.props), { + handleCustomRendering: this.handleCustomRendering + })), this.isUpdating = !1; + } + componentWillUnmount() { + this.isUnmounting = !0, this.cancelResize(), this.calendar.destroy(); + } + doResize() { + this.calendar.updateSize(); + } + cancelResize() { + this.resizeId !== void 0 && (cancelAnimationFrame(this.resizeId), this.resizeId = void 0); + } + getApi() { + return this.calendar; + } +} +vIe.act = mIe; +class nbt extends $react.PureComponent { + render() { + const { + customRendering: t + } = this.props, { + generatorMeta: r + } = t, n = typeof r == "function" ? r(t.renderProps) : r; + return $react_dom.createPortal(n, t.containerEl); + } +} +function mIe(e) { + e(); +} +const ibt = 365 + 7, abt = "https://fullcalendar.io/docs/schedulerLicenseKey#invalid", obt = "https://fullcalendar.io/docs/schedulerLicenseKey#outdated", sbt = [ + "GPL-My-Project-Is-Open-Source", + "CC-Attribution-NonCommercial-NoDerivatives" +], lbt = { + position: "absolute", + zIndex: 99999, + bottom: "1px", + left: "1px", + background: "#eee", + borderColor: "#ddd", + borderStyle: "solid", + borderWidth: "1px 1px 0 0", + padding: "2px 4px", + fontSize: "12px", + borderTopRightRadius: "3px" +}; +function cbt(e) { + let t = e.options.schedulerLicenseKey, r = typeof window != "undefined" ? window.location.href : ""; + if (!hbt(r)) { + let n = ubt(t, e.pluginHooks.premiumReleaseDate); + if (n !== "valid") + return De("div", { className: "fc-license-message", style: lbt }, n === "outdated" ? De( + Di, + null, + "Your license key is too old to work with this version. ", + De("a", { href: obt }, "More Info") + ) : De( + Di, + null, + "Your license key is invalid. ", + De("a", { href: abt }, "More Info") + )); + } + return null; +} +function ubt(e, t) { + if (sbt.indexOf(e) !== -1) + return "valid"; + const r = (e || "").match(/^(\d+)-fcs-(\d+)$/); + if (r && r[1].length === 10) { + const n = new Date(parseInt(r[2], 10) * 1e3), i = If.mockSchedulerReleaseDate || t; + if (h7(i)) + return yl(i, -ibt) < n ? "valid" : "outdated"; + } + return "invalid"; +} +function hbt(e) { + return /\w+:\/\/fullcalendar\.io\/|\/examples\/[\w-]+\.html$/.test(e); +} +const dbt = { + schedulerLicenseKey: String +}; +var eO = rc({ + name: "@fullcalendar/premium-common", + premiumReleaseDate: "2024-02-20", + optionRefiners: dbt, + viewContainerAppends: [cbt] +}); +function fbt(e) { + let t = e.getBoundingClientRect(), r = Lwe(e); + return { + left: t.left + r.borderLeft + r.scrollbarLeft - pbt(e), + top: t.top + r.borderTop - e.scrollTop + }; +} +function pbt(e) { + let t = e.scrollLeft; + if (window.getComputedStyle(e).direction === "rtl") + switch (yIe()) { + case "negative": + t *= -1; + case "reverse": + t = e.scrollWidth - t - e.clientWidth; + } + return t; +} +function gbt(e, t) { + if (window.getComputedStyle(e).direction === "rtl") + switch (yIe()) { + case "reverse": + t = e.scrollWidth - t; + break; + case "negative": + t = -(e.scrollWidth - t); + break; + } + e.scrollLeft = t; +} +let Bde; +function yIe() { + return Bde || (Bde = vbt()); +} +function vbt() { + let e = document.createElement("div"); + e.style.position = "absolute", e.style.top = "-1000px", e.style.width = "1px", e.style.height = "1px", e.style.overflow = "scroll", e.style.direction = "rtl", e.style.fontSize = "100px", e.innerHTML = "A", document.body.appendChild(e); + let t; + return e.scrollLeft > 0 ? t = "positive" : (e.scrollLeft = 1, e.scrollLeft > 0 ? t = "reverse" : t = "negative"), DB(e), t; +} +const mbt = ".fc-sticky"; +class ybt { + constructor(t, r) { + this.scrollEl = t, this.isRtl = r, this.updateSize = () => { + let { scrollEl: n } = this, i = jE(n, mbt), a = this.queryElGeoms(i), o = n.clientWidth; + _bt(i, a, o); + }; + } + queryElGeoms(t) { + let { scrollEl: r, isRtl: n } = this, i = fbt(r), a = []; + for (let o of t) { + let l = Ade( + Fwe(o.parentNode, !0, !0), + // weird way to call this!!! + -i.left, + -i.top + ), u = o.getBoundingClientRect(), d = window.getComputedStyle(o), f = window.getComputedStyle(o.parentNode).textAlign, g = null; + f === "start" ? f = n ? "right" : "left" : f === "end" && (f = n ? "left" : "right"), d.position !== "sticky" && (g = Ade( + u, + -i.left - (parseFloat(d.left) || 0), + // could be 'auto' + -i.top - (parseFloat(d.top) || 0) + )), a.push({ + parentBound: l, + naturalBound: g, + elWidth: u.width, + elHeight: u.height, + textAlign: f + }); + } + return a; + } +} +function _bt(e, t, r) { + e.forEach((n, i) => { + let { textAlign: a, elWidth: o, parentBound: l } = t[i], u = l.right - l.left, d; + a === "center" && u > r ? d = (r - o) / 2 : d = "", Dw(n, { + left: d, + right: d, + top: 0 + }); + }); +} +class Sbt extends Vn { + constructor() { + super(...arguments), this.elRef = Ga(), this.state = { + xScrollbarWidth: 0, + yScrollbarWidth: 0 + }, this.handleScroller = (t) => { + this.scroller = t, wf(this.props.scrollerRef, t); + }, this.handleSizing = () => { + let { props: t } = this; + t.overflowY === "scroll-hidden" && this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() }), t.overflowX === "scroll-hidden" && this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() }); + }; + } + render() { + let { props: t, state: r, context: n } = this, i = n.isRtl && D2(), a = 0, o = 0, l = 0, { overflowX: u, overflowY: d } = t; + return t.forPrint && (u = "visible", d = "visible"), u === "scroll-hidden" && (l = r.xScrollbarWidth), d === "scroll-hidden" && r.yScrollbarWidth != null && (i ? a = r.yScrollbarWidth : o = r.yScrollbarWidth), De( + "div", + { ref: this.elRef, className: "fc-scroller-harness" + (t.liquid ? " fc-scroller-harness-liquid" : "") }, + De(k7, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: u === "scroll-hidden" ? "scroll" : u, overflowY: d === "scroll-hidden" ? "scroll" : d, overcomeLeft: a, overcomeRight: o, overcomeBottom: l, maxHeight: typeof t.maxHeight == "number" ? t.maxHeight + (u === "scroll-hidden" ? r.xScrollbarWidth : 0) : "", liquid: t.liquid, liquidIsAbsolute: !0 }, t.children) + ); + } + componentDidMount() { + this.handleSizing(), this.context.addResizeHandler(this.handleSizing); + } + getSnapshotBeforeUpdate(t) { + return this.props.forPrint && !t.forPrint ? { simulateScrollLeft: this.scroller.el.scrollLeft } : {}; + } + componentDidUpdate(t, r, n) { + const { props: i, scroller: { el: a } } = this; + if (Cc(t, i) || this.handleSizing(), n.simulateScrollLeft !== void 0) + a.style.left = -n.simulateScrollLeft + "px"; + else if (!i.forPrint && t.forPrint) { + const o = -parseInt(a.style.left); + a.style.left = "", a.scrollLeft = o; + } + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleSizing); + } + needsXScrolling() { + return this.scroller.needsXScrolling(); + } + needsYScrolling() { + return this.scroller.needsYScrolling(); + } +} +const Ude = "wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" "); +class bbt { + constructor(t) { + this.el = t, this.emitter = new JD(), this.isScrolling = !1, this.isTouching = !1, this.isRecentlyWheeled = !1, this.isRecentlyScrolled = !1, this.wheelWaiter = new KR(this._handleWheelWaited.bind(this)), this.scrollWaiter = new KR(this._handleScrollWaited.bind(this)), this.handleScroll = () => { + this.startScroll(), this.emitter.trigger("scroll", this.isRecentlyWheeled, this.isTouching), this.isRecentlyScrolled = !0, this.scrollWaiter.request(500); + }, this.handleWheel = () => { + this.isRecentlyWheeled = !0, this.wheelWaiter.request(500); + }, this.handleTouchStart = () => { + this.isTouching = !0; + }, this.handleTouchEnd = () => { + this.isTouching = !1, this.isRecentlyScrolled || this.endScroll(); + }, t.addEventListener("scroll", this.handleScroll), t.addEventListener("touchstart", this.handleTouchStart, { passive: !0 }), t.addEventListener("touchend", this.handleTouchEnd); + for (let r of Ude) + t.addEventListener(r, this.handleWheel); + } + destroy() { + let { el: t } = this; + t.removeEventListener("scroll", this.handleScroll), t.removeEventListener("touchstart", this.handleTouchStart, { passive: !0 }), t.removeEventListener("touchend", this.handleTouchEnd); + for (let r of Ude) + t.removeEventListener(r, this.handleWheel); + } + // Start / Stop + // ---------------------------------------------------------------------------------------------- + startScroll() { + this.isScrolling || (this.isScrolling = !0, this.emitter.trigger("scrollStart", this.isRecentlyWheeled, this.isTouching)); + } + endScroll() { + this.isScrolling && (this.emitter.trigger("scrollEnd"), this.isScrolling = !1, this.isRecentlyScrolled = !0, this.isRecentlyWheeled = !1, this.scrollWaiter.clear(), this.wheelWaiter.clear()); + } + _handleScrollWaited() { + this.isRecentlyScrolled = !1, this.isTouching || this.endScroll(); + } + _handleWheelWaited() { + this.isRecentlyWheeled = !1; + } +} +class Ebt { + constructor(t, r) { + this.isVertical = t, this.scrollEls = r, this.isPaused = !1, this.scrollListeners = r.map((n) => this.bindScroller(n)); + } + destroy() { + for (let t of this.scrollListeners) + t.destroy(); + } + bindScroller(t) { + let { scrollEls: r, isVertical: n } = this, i = new bbt(t); + const a = (l, u) => { + if (!this.isPaused && ((!this.masterEl || this.masterEl !== t && (l || u)) && this.assignMaster(t), this.masterEl === t)) + for (let d of r) + d !== t && (n ? d.scrollTop = t.scrollTop : d.scrollLeft = t.scrollLeft); + }, o = () => { + this.masterEl === t && (this.masterEl = null); + }; + return i.emitter.on("scroll", a), i.emitter.on("scrollEnd", o), i; + } + assignMaster(t) { + this.masterEl = t; + for (let r of this.scrollListeners) + r.el !== t && r.endScroll(); + } + /* + will normalize the scrollLeft value + */ + forceScrollLeft(t) { + this.isPaused = !0; + for (let r of this.scrollListeners) + gbt(r.el, t); + this.isPaused = !1; + } + forceScrollTop(t) { + this.isPaused = !0; + for (let r of this.scrollListeners) + r.el.scrollTop = t; + this.isPaused = !1; + } +} +If.SCROLLGRID_RESIZE_INTERVAL = 500; +class z7 extends Vn { + constructor() { + super(...arguments), this.compileColGroupStats = T4(Ibt, Abt), this.renderMicroColGroups = T4(tIe), this.clippedScrollerRefs = new vc(), this.scrollerElRefs = new vc(this._handleScrollerEl.bind(this)), this.chunkElRefs = new vc(this._handleChunkEl.bind(this)), this.scrollSyncersBySection = {}, this.scrollSyncersByColumn = {}, this.rowUnstableMap = /* @__PURE__ */ new Map(), this.rowInnerMaxHeightMap = /* @__PURE__ */ new Map(), this.anyRowHeightsChanged = !1, this.recentSizingCnt = 0, this.state = { + shrinkWidths: [], + forceYScrollbars: !1, + forceXScrollbars: !1, + scrollerClientWidths: {}, + scrollerClientHeights: {}, + sectionRowMaxHeights: [] + }, this.handleSizing = (t, r) => { + if (!this.allowSizing()) + return; + r || (this.anyRowHeightsChanged = !0); + let n = {}; + (t || !r && !this.rowUnstableMap.size) && (n.sectionRowMaxHeights = this.computeSectionRowMaxHeights()), this.setState(Object.assign(Object.assign({ shrinkWidths: this.computeShrinkWidths() }, this.computeScrollerDims()), n), () => { + this.rowUnstableMap.size || this.updateStickyScrolling(); + }); + }, this.handleRowHeightChange = (t, r) => { + let { rowUnstableMap: n, rowInnerMaxHeightMap: i } = this; + if (!r) + n.set(t, !0); + else { + n.delete(t); + let a = jde(t); + (!i.has(t) || i.get(t) !== a) && (i.set(t, a), this.anyRowHeightsChanged = !0), !n.size && this.anyRowHeightsChanged && (this.anyRowHeightsChanged = !1, this.setState({ + sectionRowMaxHeights: this.computeSectionRowMaxHeights() + })); + } + }; + } + render() { + let { props: t, state: r, context: n } = this, { shrinkWidths: i } = r, a = this.compileColGroupStats(t.colGroups.map((_) => [_])), o = this.renderMicroColGroups(a.map((_, E) => [_.cols, i[E]])), l = iIe(t.liquid, n); + this.getDims(); + let u = t.sections, d = u.length, f = 0, g, v = [], y = [], C = []; + for (; f < d && (g = u[f]).type === "header"; ) + v.push(this.renderSection(g, f, a, o, r.sectionRowMaxHeights, !0)), f += 1; + for (; f < d && (g = u[f]).type === "body"; ) + y.push(this.renderSection(g, f, a, o, r.sectionRowMaxHeights, !1)), f += 1; + for (; f < d && (g = u[f]).type === "footer"; ) + C.push(this.renderSection(g, f, a, o, r.sectionRowMaxHeights, !0)), f += 1; + const A = !T7(), S = { role: "rowgroup" }; + return De("table", { + ref: t.elRef, + role: "grid", + className: l.join(" ") + }, wbt(a, i), !!(!A && v.length) && De("thead", S, ...v), !!(!A && y.length) && De("tbody", S, ...y), !!(!A && C.length) && De("tfoot", S, ...C), A && De("tbody", S, ...v, ...y, ...C)); + } + renderSection(t, r, n, i, a, o) { + return "outerContent" in t ? De(Di, { key: t.key }, t.outerContent) : De("tr", { key: t.key, role: "presentation", className: aIe(t, this.props.liquid).join(" ") }, t.chunks.map((l, u) => this.renderChunk(t, r, n[u], i[u], l, u, (a[r] || [])[u] || [], o))); + } + renderChunk(t, r, n, i, a, o, l, u) { + if ("outerContent" in a) + return De(Di, { key: a.key }, a.outerContent); + let { state: d } = this, { scrollerClientWidths: f, scrollerClientHeights: g } = d, [v, y] = this.getDims(), C = r * y + o, A = !this.context.isRtl || D2() ? y - 1 : 0, S = o === A, _ = r === v - 1, E = _ && d.forceXScrollbars, I = S && d.forceYScrollbars, w = n && n.allowXScrolling, x = Jwe(this.props, t), b = P7(this.props, t), R = t.expandRows && b, M = n && n.totalColMinWidth || "", O = Qwe(t, a, { + tableColGroupNode: i, + tableMinWidth: M, + clientWidth: f[C] !== void 0 ? f[C] : null, + clientHeight: g[C] !== void 0 ? g[C] : null, + expandRows: R, + syncRowHeights: !!t.syncRowHeights, + rowSyncHeights: l, + reportRowHeightChange: this.handleRowHeightChange + }, u), P = E ? _ ? "scroll" : "scroll-hidden" : w ? _ ? "auto" : "scroll-hidden" : "hidden", B = I ? S ? "scroll" : "scroll-hidden" : x ? S ? "auto" : "scroll-hidden" : "hidden"; + return O = De(Sbt, { ref: this.clippedScrollerRefs.createRef(C), scrollerElRef: this.scrollerElRefs.createRef(C), overflowX: P, overflowY: B, forPrint: this.props.forPrint, liquid: b, maxHeight: t.maxHeight }, O), De(u ? "th" : "td", { + key: a.key, + ref: this.chunkElRefs.createRef(C), + role: "presentation" + }, O); + } + componentDidMount() { + this.getStickyScrolling = T4(Rbt), this.getScrollSyncersBySection = gde(Vde.bind(this, !0), null, eN), this.getScrollSyncersByColumn = gde(Vde.bind(this, !1), null, eN), this.updateScrollSyncers(), this.handleSizing(!1), this.context.addResizeHandler(this.handleSizing); + } + componentDidUpdate(t, r) { + this.updateScrollSyncers(), this.handleSizing(!1, r.sectionRowMaxHeights !== this.state.sectionRowMaxHeights); + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleSizing), this.destroyScrollSyncers(); + } + allowSizing() { + let t = /* @__PURE__ */ new Date(); + return !this.lastSizingDate || t.valueOf() > this.lastSizingDate.valueOf() + If.SCROLLGRID_RESIZE_INTERVAL ? (this.lastSizingDate = t, this.recentSizingCnt = 0, !0) : (this.recentSizingCnt += 1) <= 10; + } + computeShrinkWidths() { + let t = this.compileColGroupStats(this.props.colGroups.map((o) => [o])), [r, n] = this.getDims(), i = r * n, a = []; + return t.forEach((o, l) => { + if (o.hasShrinkCol) { + let u = this.chunkElRefs.collect(l, i, n); + a[l] = qwe(u); + } + }), a; + } + // has the side effect of grooming rowInnerMaxHeightMap + // TODO: somehow short-circuit if there are no new height changes + computeSectionRowMaxHeights() { + let t = /* @__PURE__ */ new Map(), [r, n] = this.getDims(), i = []; + for (let a = 0; a < r; a += 1) { + let o = this.props.sections[a], l = []; + if (o && o.syncRowHeights) { + let u = []; + for (let g = 0; g < n; g += 1) { + let v = a * n + g, y = [], C = this.chunkElRefs.currentMap[v]; + C ? y = jE(C, ".fc-scrollgrid-sync-table tr").map((A) => { + let S = jde(A); + return t.set(A, S), S; + }) : y = [], u.push(y); + } + let d = u[0].length, f = !0; + for (let g = 1; g < n; g += 1) + if (!(o.chunks[g] && o.chunks[g].outerContent !== void 0) && u[g].length !== d) { + f = !1; + break; + } + if (f) { + for (let g = 0; g < n; g += 1) + l.push([]); + for (let g = 0; g < d; g += 1) { + let v = []; + for (let C = 0; C < n; C += 1) { + let A = u[C][g]; + A != null && v.push(A); + } + let y = Math.max(...v); + for (let C = 0; C < n; C += 1) + l[C].push(y); + } + } else { + let g = []; + for (let y = 0; y < n; y += 1) + g.push(Cbt(u[y]) + u[y].length); + let v = Math.max(...g); + for (let y = 0; y < n; y += 1) { + let C = u[y].length, A = v - C, S = Math.floor(A / C), _ = A - S * (C - 1), E = [], I = 0; + for (I < C && (E.push(_), I += 1); I < C; ) + E.push(S), I += 1; + l.push(E); + } + } + } + i.push(l); + } + return this.rowInnerMaxHeightMap = t, i; + } + computeScrollerDims() { + let t = Pwe(), [r, n] = this.getDims(), i = !this.context.isRtl || D2() ? n - 1 : 0, a = r - 1, o = this.clippedScrollerRefs.currentMap, l = this.scrollerElRefs.currentMap, u = !1, d = !1, f = {}, g = {}; + for (let v = 0; v < r; v += 1) { + let y = v * n + i, C = o[y]; + if (C && C.needsYScrolling()) { + u = !0; + break; + } + } + for (let v = 0; v < n; v += 1) { + let y = a * n + v, C = o[y]; + if (C && C.needsXScrolling()) { + d = !0; + break; + } + } + for (let v = 0; v < r; v += 1) + for (let y = 0; y < n; y += 1) { + let C = v * n + y, A = l[C]; + if (A) { + let S = A.parentNode; + f[C] = Math.floor(S.getBoundingClientRect().width - (y === i && u ? t.y : 0)), g[C] = Math.floor(S.getBoundingClientRect().height - (v === a && d ? t.x : 0)); + } + } + return { forceYScrollbars: u, forceXScrollbars: d, scrollerClientWidths: f, scrollerClientHeights: g }; + } + updateStickyScrolling() { + let { isRtl: t } = this.context, r = this.scrollerElRefs.getAll().map((n) => [n, t]); + this.getStickyScrolling(r).forEach((n) => n.updateSize()); + } + updateScrollSyncers() { + let [t, r] = this.getDims(), n = t * r, i = {}, a = {}, o = this.scrollerElRefs.currentMap; + for (let l = 0; l < t; l += 1) { + let u = l * r, d = u + r; + i[l] = lwe(o, u, d, 1); + } + for (let l = 0; l < r; l += 1) + a[l] = this.scrollerElRefs.collect(l, n, r); + this.scrollSyncersBySection = this.getScrollSyncersBySection(i), this.scrollSyncersByColumn = this.getScrollSyncersByColumn(a); + } + destroyScrollSyncers() { + _l(this.scrollSyncersBySection, eN), _l(this.scrollSyncersByColumn, eN); + } + getChunkConfigByIndex(t) { + let r = this.getDims()[1], n = Math.floor(t / r), i = t % r, a = this.props.sections[n]; + return a && a.chunks[i]; + } + forceScrollLeft(t, r) { + let n = this.scrollSyncersByColumn[t]; + n && n.forceScrollLeft(r); + } + forceScrollTop(t, r) { + let n = this.scrollSyncersBySection[t]; + n && n.forceScrollTop(r); + } + _handleChunkEl(t, r) { + let n = this.getChunkConfigByIndex(parseInt(r, 10)); + n && wf(n.elRef, t); + } + _handleScrollerEl(t, r) { + let n = this.getChunkConfigByIndex(parseInt(r, 10)); + n && wf(n.scrollerElRef, t); + } + getDims() { + let t = this.props.sections.length, r = t ? this.props.sections[0].chunks.length : 0; + return [t, r]; + } +} +z7.addStateEquality({ + shrinkWidths: _d, + scrollerClientWidths: Cc, + scrollerClientHeights: Cc +}); +function Cbt(e) { + let t = 0; + for (let r of e) + t += r; + return t; +} +function jde(e) { + let t = jE(e, ".fc-scrollgrid-sync-inner").map(Tbt); + return t.length ? Math.max(...t) : 0; +} +function Tbt(e) { + return e.offsetHeight; +} +function wbt(e, t) { + let r = e.map((n, i) => { + let a = n.width; + return a === "shrink" && (a = n.totalColWidth + rIe(t[i]) + 1), // eslint-disable-next-line react/jsx-key + De("col", { style: { width: a } }); + }); + return De("colgroup", {}, ...r); +} +function Ibt(e) { + let t = $de(e.cols, "width"), r = $de(e.cols, "minWidth"), n = nIe(e.cols), i = e.width !== "shrink" && !!(t || r || n); + return { + hasShrinkCol: n, + totalColWidth: t, + totalColMinWidth: r, + allowXScrolling: i, + cols: e.cols, + width: e.width + }; +} +function $de(e, t) { + let r = 0; + for (let n of e) { + let i = n[t]; + typeof i == "number" && (r += i * (n.span || 1)); + } + return r; +} +const xbt = { + cols: eIe +}; +function Abt(e, t) { + return YN(e, t, xbt); +} +function Vde(e, ...t) { + return new Ebt(e, t); +} +function eN(e) { + e.destroy(); +} +function Rbt(e, t) { + return new ybt(e, t); +} +const Dbt = 18, O2 = 6, Obt = 200; +If.MAX_TIMELINE_SLOTS = 1e3; +const p6 = [ + { years: 1 }, + { months: 1 }, + { days: 1 }, + { hours: 1 }, + { minutes: 30 }, + { minutes: 15 }, + { minutes: 10 }, + { minutes: 5 }, + { minutes: 1 }, + { seconds: 30 }, + { seconds: 15 }, + { seconds: 10 }, + { seconds: 5 }, + { seconds: 1 }, + { milliseconds: 500 }, + { milliseconds: 100 }, + { milliseconds: 10 }, + { milliseconds: 1 } +]; +function _Ie(e, t, r, n) { + let i = { + labelInterval: r.slotLabelInterval, + slotDuration: r.slotDuration + }; + kbt(i, e, t), SIe(i, e, t), Pbt(i, e, t); + let a = r.slotLabelFormat, o = Array.isArray(a) ? a : a != null ? [a] : Nbt(i, e, t, r); + i.headerFormats = o.map((w) => co(w)), i.isTimeScale = !!i.slotDuration.milliseconds; + let l = null; + if (!i.isTimeScale) { + const w = T0(i.slotDuration).unit; + /year|month|week/.test(w) && (l = w); + } + i.largeUnit = l, i.emphasizeWeeks = iwe(i.slotDuration) === 1 && iw("weeks", e, t) >= 2 && !r.businessHours; + let u = r.snapDuration, d, f; + u && (d = na(u), f = C0(i.slotDuration, d)), f == null && (d = i.slotDuration, f = 1), i.snapDuration = d, i.snapsPerSlot = f; + let g = Kc(e.slotMaxTime) - Kc(e.slotMinTime), v = zde(e.renderRange.start, i, t), y = zde(e.renderRange.end, i, t); + i.isTimeScale && (v = t.add(v, e.slotMinTime), y = t.add(yl(y, -1), e.slotMaxTime)), i.timeWindowMs = g, i.normalizedRange = { start: v, end: y }; + let C = [], A = v; + for (; A < y; ) + M2(A, i, e, n) && C.push(A), A = t.add(A, i.slotDuration); + i.slotDates = C; + let S = -1, _ = 0; + const E = [], I = []; + for (A = v; A < y; ) + M2(A, i, e, n) ? (S += 1, E.push(S), I.push(_)) : E.push(S + 0.5), A = t.add(A, i.snapDuration), _ += 1; + return i.snapDiffToIndex = E, i.snapIndexToDiff = I, i.snapCnt = S + 1, i.slotCnt = i.snapCnt / i.snapsPerSlot, i.isWeekStarts = Lbt(i, t), i.cellRows = Fbt(i, t), i.slotsPerLabel = C0(i.labelInterval, i.slotDuration), i; +} +function zde(e, t, r) { + let n = e; + return t.isTimeScale || (n = ho(n), t.largeUnit && (n = r.startOf(n, t.largeUnit))), n; +} +function Mbt(e, t, r) { + if (!t.isTimeScale && (e = NB(e), t.largeUnit)) { + let n = e; + e = { + start: r.startOf(e.start, t.largeUnit), + end: r.startOf(e.end, t.largeUnit) + }, (e.end.valueOf() !== n.end.valueOf() || e.end <= e.start) && (e = { + start: e.start, + end: r.add(e.end, t.slotDuration) + }); + } + return e; +} +function M2(e, t, r, n) { + if (n.isHiddenDay(e)) + return !1; + if (t.isTimeScale) { + let i = ho(e), o = e.valueOf() - i.valueOf() - Kc(r.slotMinTime); + return o = (o % 864e5 + 864e5) % 864e5, o < t.timeWindowMs; + } + return !0; +} +function kbt(e, t, r) { + const { currentRange: n } = t; + if (e.labelInterval && r.countDurationsBetween(n.start, n.end, e.labelInterval) > If.MAX_TIMELINE_SLOTS && (console.warn("slotLabelInterval results in too many cells"), e.labelInterval = null), e.slotDuration && r.countDurationsBetween(n.start, n.end, e.slotDuration) > If.MAX_TIMELINE_SLOTS && (console.warn("slotDuration results in too many cells"), e.slotDuration = null), e.labelInterval && e.slotDuration) { + const i = C0(e.labelInterval, e.slotDuration); + (i === null || i < 1) && (console.warn("slotLabelInterval must be a multiple of slotDuration"), e.slotDuration = null); + } +} +function SIe(e, t, r) { + const { currentRange: n } = t; + let { labelInterval: i } = e; + if (!i) { + let a; + if (e.slotDuration) { + for (a of p6) { + const o = na(a), l = C0(o, e.slotDuration); + if (l !== null && l <= O2) { + i = o; + break; + } + } + i || (i = e.slotDuration); + } else + for (a of p6) + if (i = na(a), r.countDurationsBetween(n.start, n.end, i) >= Dbt) + break; + e.labelInterval = i; + } + return i; +} +function Pbt(e, t, r) { + const { currentRange: n } = t; + let { slotDuration: i } = e; + if (!i) { + const a = SIe(e, t, r); + for (let o of p6) { + const l = na(o), u = C0(a, l); + if (u !== null && u > 1 && u <= O2) { + i = l; + break; + } + } + i && r.countDurationsBetween(n.start, n.end, i) > Obt && (i = null), i || (i = a), e.slotDuration = i; + } + return i; +} +function Nbt(e, t, r, n) { + let i, a; + const { labelInterval: o } = e; + let l = T0(o).unit; + const u = n.weekNumbers; + let d = i = a = null; + switch (l === "week" && !u && (l = "day"), l) { + case "year": + d = { year: "numeric" }; + break; + case "month": + iw("years", t, r) > 1 && (d = { year: "numeric" }), i = { month: "short" }; + break; + case "week": + iw("years", t, r) > 1 && (d = { year: "numeric" }), i = { week: "narrow" }; + break; + case "day": + iw("years", t, r) > 1 ? d = { year: "numeric", month: "long" } : iw("months", t, r) > 1 && (d = { month: "long" }), u && (i = { week: "short" }), a = { weekday: "narrow", day: "numeric" }; + break; + case "hour": + u && (d = { week: "short" }), iw("days", t, r) > 1 && (i = { weekday: "short", day: "numeric", month: "numeric", omitCommas: !0 }), a = { + hour: "numeric", + minute: "2-digit", + omitZeroMinute: !0, + meridiem: "short" + }; + break; + case "minute": + _yt(o) / 60 >= O2 ? (d = { + hour: "numeric", + meridiem: "short" + }, i = (f) => ":" + $m(f.date.minute, 2)) : d = { + hour: "numeric", + minute: "numeric", + meridiem: "short" + }; + break; + case "second": + Syt(o) / 60 >= O2 ? (d = { hour: "numeric", minute: "2-digit", meridiem: "lowercase" }, i = (f) => ":" + $m(f.date.second, 2)) : d = { hour: "numeric", minute: "2-digit", second: "2-digit", meridiem: "lowercase" }; + break; + case "millisecond": + d = { hour: "numeric", minute: "2-digit", second: "2-digit", meridiem: "lowercase" }, i = (f) => "." + $m(f.millisecond, 3); + break; + } + return [].concat(d || [], i || [], a || []); +} +function iw(e, t, r) { + let n = t.currentRange, i = null; + return e === "years" ? i = r.diffWholeYears(n.start, n.end) : e === "months" || e === "weeks" ? i = r.diffWholeMonths(n.start, n.end) : e === "days" && (i = ZR(n.start, n.end)), i || 0; +} +function Lbt(e, t) { + let { slotDates: r, emphasizeWeeks: n } = e, i = null, a = []; + for (let o of r) { + let l = t.computeWeekNumber(o), u = n && i !== null && i !== l; + i = l, a.push(u); + } + return a; +} +function Fbt(e, t) { + let r = e.slotDates, n = e.headerFormats, i = n.map(() => []), a = iwe(e.slotDuration), o = a === 7 ? "week" : a === 1 ? "day" : null, l = n.map((u) => u.getLargestUnit ? u.getLargestUnit() : null); + for (let u = 0; u < r.length; u += 1) { + let d = r[u], f = e.isWeekStarts[u]; + for (let g = 0; g < n.length; g += 1) { + let v = n[g], y = i[g], C = y[y.length - 1], A = g === n.length - 1, S = n.length > 1 && !A, _ = null, E = l[g] || (A ? o : null); + if (S) { + let I = t.format(d, v); + !C || C.text !== I ? _ = Hde(d, I, E) : C.colspan += 1; + } else if (!C || rE(t.countDurationsBetween(e.normalizedRange.start, d, e.labelInterval))) { + let I = t.format(d, v); + _ = Hde(d, I, E); + } else + C.colspan += 1; + _ && (_.weekStart = f, y.push(_)); + } + } + return i; +} +function Hde(e, t, r) { + return { date: e, text: t, rowUnit: r, colspan: 1, isWeekStart: !1 }; +} +class Bbt extends Vn { + constructor() { + super(...arguments), this.refineRenderProps = d0($bt), this.buildCellNavLinkAttrs = Gr(Ubt); + } + render() { + let { props: t, context: r } = this, { dateEnv: n, options: i } = r, { cell: a, dateProfile: o, tDateProfile: l } = t, u = QD(a.date, t.todayRange, t.nowDate, o), d = this.refineRenderProps({ + level: t.rowLevel, + dateMarker: a.date, + text: a.text, + dateEnv: r.dateEnv, + viewApi: r.viewApi + }); + return De(is, { elTag: "th", elClasses: [ + "fc-timeline-slot", + "fc-timeline-slot-label", + a.isWeekStart && "fc-timeline-slot-em", + ...// TODO: so slot classnames for week/month/bigger. see note above about rowUnit + a.rowUnit === "time" ? kwe(u, r.theme) : BI(u, r.theme) + ], elAttrs: { + colSpan: a.colspan, + "data-date": n.formatIso(a.date, { + omitTime: !l.isTimeScale, + omitTimeZoneOffset: !0 + }) + }, renderProps: d, generatorName: "slotLabelContent", customGenerator: i.slotLabelContent, defaultGenerator: jbt, classNameGenerator: i.slotLabelClassNames, didMount: i.slotLabelDidMount, willUnmount: i.slotLabelWillUnmount }, (f) => De( + "div", + { className: "fc-timeline-slot-frame", style: { height: t.rowInnerHeight } }, + De(f, { elTag: "a", elClasses: [ + "fc-timeline-slot-cushion", + "fc-scrollgrid-sync-inner", + t.isSticky && "fc-sticky" + ], elAttrs: this.buildCellNavLinkAttrs(r, a.date, a.rowUnit) }) + )); + } +} +function Ubt(e, t, r) { + return r && r !== "time" ? TE(e, t, r) : {}; +} +function jbt(e) { + return e.text; +} +function $bt(e) { + return { + level: e.level, + date: e.dateEnv.toDate(e.dateMarker), + view: e.viewApi, + text: e.text + }; +} +class Vbt extends Vn { + render() { + let { dateProfile: t, tDateProfile: r, rowInnerHeights: n, todayRange: i, nowDate: a } = this.props, { cellRows: o } = r; + return De(Di, null, o.map((l, u) => { + let d = u === o.length - 1, g = [ + "fc-timeline-header-row", + r.isTimeScale && d ? "fc-timeline-header-row-chrono" : "" + ]; + return ( + // eslint-disable-next-line react/no-array-index-key + De("tr", { key: u, className: g.join(" ") }, l.map((v) => De(Bbt, { key: v.date.toISOString(), cell: v, rowLevel: u, dateProfile: t, tDateProfile: r, todayRange: i, nowDate: a, rowInnerHeight: n && n[u], isSticky: !d }))) + ); + })); + } +} +class zbt { + constructor(t, r, n, i, a, o) { + this.slatRootEl = t, this.dateProfile = n, this.tDateProfile = i, this.dateEnv = a, this.isRtl = o, this.outerCoordCache = new ey( + t, + r, + !0, + // isHorizontal + !1 + ), this.innerCoordCache = new ey( + t, + tyt(r, "div"), + !0, + // isHorizontal + !1 + ); + } + isDateInRange(t) { + return tv(this.dateProfile.currentRange, t); + } + // results range from negative width of area to 0 + dateToCoord(t) { + let { tDateProfile: r } = this, i = this.computeDateSnapCoverage(t) / r.snapsPerSlot, a = Math.floor(i); + a = Math.min(a, r.slotCnt - 1); + let o = i - a, { innerCoordCache: l, outerCoordCache: u } = this; + return this.isRtl ? u.originClientRect.width - (u.rights[a] - l.getWidth(a) * o) : u.lefts[a] + l.getWidth(a) * o; + } + rangeToCoords(t) { + return { + start: this.dateToCoord(t.start), + end: this.dateToCoord(t.end) + }; + } + durationToCoord(t) { + let { dateProfile: r, tDateProfile: n, dateEnv: i, isRtl: a } = this, o = 0; + if (r) { + let l = i.add(r.activeRange.start, t); + n.isTimeScale || (l = ho(l)), o = this.dateToCoord(l), !a && o && (o += 1); + } + return o; + } + coordFromLeft(t) { + return this.isRtl ? this.outerCoordCache.originClientRect.width - t : t; + } + // returned value is between 0 and the number of snaps + computeDateSnapCoverage(t) { + return g6(t, this.tDateProfile, this.dateEnv); + } +} +function g6(e, t, r) { + let n = r.countDurationsBetween(t.normalizedRange.start, e, t.snapDuration); + if (n < 0) + return 0; + if (n >= t.snapDiffToIndex.length) + return t.snapCnt; + let i = Math.floor(n), a = t.snapDiffToIndex[i]; + return rE(a) ? a += n - i : a = Math.ceil(a), a; +} +function H7(e, t) { + return e === null ? { left: "", right: "" } : t ? { right: e, left: "" } : { left: e, right: "" }; +} +function W7(e, t) { + return e ? t ? { right: e.start, left: -e.end } : { left: e.start, right: -e.end } : { left: "", right: "" }; +} +class bIe extends Vn { + constructor() { + super(...arguments), this.rootElRef = Ga(); + } + render() { + let { props: t, context: r } = this, n = T0(t.tDateProfile.slotDuration).unit, i = t.slatCoords && t.slatCoords.dateProfile === t.dateProfile ? t.slatCoords : null; + return De(Bp, { unit: n }, (a, o) => De( + "div", + { className: "fc-timeline-header", ref: this.rootElRef }, + De( + "table", + { "aria-hidden": !0, className: "fc-scrollgrid-sync-table", style: { minWidth: t.tableMinWidth, width: t.clientWidth } }, + t.tableColGroupNode, + De( + "tbody", + null, + De(Vbt, { dateProfile: t.dateProfile, tDateProfile: t.tDateProfile, nowDate: a, todayRange: o, rowInnerHeights: t.rowInnerHeights }) + ) + ), + r.options.nowIndicator && // need to have a container regardless of whether the current view has a visible now indicator + // because apparently removal of the element resets the scroll for some reasons (issue #5351). + // this issue doesn't happen for the timeline body however ( + De("div", { className: "fc-timeline-now-indicator-container" }, i && i.isDateInRange(a) && De(UI, { elClasses: ["fc-timeline-now-indicator-arrow"], elStyle: H7(i.dateToCoord(a), r.isRtl), isAxis: !0, date: a })) + )); + } + componentDidMount() { + this.updateSize(); + } + componentDidUpdate() { + this.updateSize(); + } + updateSize() { + this.props.onMaxCushionWidth && this.props.onMaxCushionWidth(this.computeMaxCushionWidth()); + } + computeMaxCushionWidth() { + return Math.max(...jE(this.rootElRef.current, ".fc-timeline-header-row:last-child .fc-timeline-slot-cushion").map((t) => t.getBoundingClientRect().width)); + } +} +class Hbt extends Vn { + render() { + let { props: t, context: r } = this, { dateEnv: n, options: i, theme: a } = r, { date: o, tDateProfile: l, isEm: u } = t, d = QD(t.date, t.todayRange, t.nowDate, t.dateProfile), f = Object.assign(Object.assign({ date: n.toDate(t.date) }, d), { view: r.viewApi }); + return De(is, { elTag: "td", elRef: t.elRef, elClasses: [ + "fc-timeline-slot", + "fc-timeline-slot-lane", + u && "fc-timeline-slot-em", + l.isTimeScale ? rE(n.countDurationsBetween(l.normalizedRange.start, t.date, l.labelInterval)) ? "fc-timeline-slot-major" : "fc-timeline-slot-minor" : "", + ...t.isDay ? BI(d, a) : kwe(d, a) + ], elAttrs: { + "data-date": n.formatIso(o, { + omitTimeZoneOffset: !0, + omitTime: !l.isTimeScale + }) + }, renderProps: f, generatorName: "slotLaneContent", customGenerator: i.slotLaneContent, classNameGenerator: i.slotLaneClassNames, didMount: i.slotLaneDidMount, willUnmount: i.slotLaneWillUnmount }, (g) => De(g, { elTag: "div" })); + } +} +class Wbt extends Vn { + render() { + let { props: t } = this, { tDateProfile: r, cellElRefs: n } = t, { slotDates: i, isWeekStarts: a } = r, o = !r.isTimeScale && !r.largeUnit; + return De( + "tbody", + null, + De("tr", null, i.map((l, u) => { + let d = l.toISOString(); + return De(Hbt, { key: d, elRef: n.createRef(d), date: l, dateProfile: t.dateProfile, tDateProfile: r, nowDate: t.nowDate, todayRange: t.todayRange, isEm: a[u], isDay: o }); + })) + ); + } +} +class EIe extends Vn { + constructor() { + super(...arguments), this.rootElRef = Ga(), this.cellElRefs = new vc(), this.handleScrollRequest = (t) => { + let { onScrollLeftRequest: r } = this.props, { coords: n } = this; + if (r && n) { + if (t.time) { + let i = n.coordFromLeft(n.durationToCoord(t.time)); + r(i); + } + return !0; + } + return null; + }; + } + render() { + let { props: t, context: r } = this; + return De( + "div", + { className: "fc-timeline-slots", ref: this.rootElRef }, + De( + "table", + { "aria-hidden": !0, className: r.theme.getClass("table"), style: { + minWidth: t.tableMinWidth, + width: t.clientWidth + } }, + t.tableColGroupNode, + De(Wbt, { cellElRefs: this.cellElRefs, dateProfile: t.dateProfile, tDateProfile: t.tDateProfile, nowDate: t.nowDate, todayRange: t.todayRange }) + ) + ); + } + componentDidMount() { + this.updateSizing(), this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest); + } + componentDidUpdate(t) { + this.updateSizing(), this.scrollResponder.update(t.dateProfile !== this.props.dateProfile); + } + componentWillUnmount() { + this.scrollResponder.detach(), this.props.onCoords && this.props.onCoords(null); + } + updateSizing() { + let { props: t, context: r } = this; + t.clientWidth !== null && // is sizing stable? + this.scrollResponder && this.rootElRef.current.offsetWidth && (this.coords = new zbt(this.rootElRef.current, Gbt(this.cellElRefs.currentMap, t.tDateProfile.slotDates), t.dateProfile, t.tDateProfile, r.dateEnv, r.isRtl), t.onCoords && t.onCoords(this.coords), this.scrollResponder.update(!1)); + } + positionToHit(t) { + let { outerCoordCache: r } = this.coords, { dateEnv: n, isRtl: i } = this.context, { tDateProfile: a } = this.props, o = r.leftToIndex(t); + if (o != null) { + let l = r.getWidth(o), u = i ? (r.rights[o] - t) / l : (t - r.lefts[o]) / l, d = Math.floor(u * a.snapsPerSlot), f = n.add(a.slotDates[o], awe(a.snapDuration, d)), g = n.add(f, a.snapDuration); + return { + dateSpan: { + range: { start: f, end: g }, + allDay: !this.props.tDateProfile.isTimeScale + }, + dayEl: this.cellElRefs.currentMap[o], + left: r.lefts[o], + right: r.rights[o] + }; + } + return null; + } +} +function Gbt(e, t) { + return t.map((r) => { + let n = r.toISOString(); + return e[n]; + }); +} +function CIe(e, t, r) { + let n = []; + if (r) + for (let i of e) { + let a = r.rangeToCoords(i), o = Math.round(a.start), l = Math.round(a.end); + l - o < t && (l = o + t), n.push({ start: o, end: l }); + } + return n; +} +function Ybt(e, t, r, n, i, a) { + let o = [], l = []; + for (let E = 0; E < e.length; E += 1) { + let I = e[E], w = I.eventRange.instance.instanceId, x = r[w], b = t[E]; + x && b ? o.push({ + index: E, + span: b, + thickness: x + }) : l.push({ + seg: I, + hcoords: b, + top: null + }); + } + let u = new R7(); + i != null && (u.strictOrder = i), a != null && (u.maxStackCnt = a); + let d = u.addSegs(o), f = d.map((E) => ({ + seg: e[E.index], + hcoords: E.span, + top: null + })), g = Uwe(d), v = [], y = []; + const C = (E) => e[E.index]; + for (let E = 0; E < g.length; E += 1) { + let I = g[E], w = I.entries.map(C), x = n[MB($B(w))]; + x != null ? v.push({ + index: e.length + E, + thickness: x, + span: I.span + }) : y.push({ + seg: w, + hcoords: I.span, + top: null + }); + } + u.maxStackCnt = -1, u.addSegs(v); + let A = u.toRects(), S = [], _ = 0; + for (let E of A) { + let I = E.index; + S.push({ + seg: I < e.length ? e[I] : g[I - e.length].entries.map(C), + hcoords: E.span, + top: E.levelCoord + }), _ = Math.max(_, E.levelCoord + E.thickness); + } + return [ + S.concat(l, f, y), + _ + ]; +} +class TIe extends Vn { + render() { + let { props: t } = this, r = [].concat(t.eventResizeSegs, t.dateSelectionSegs); + return t.timelineCoords && De( + "div", + { className: "fc-timeline-bg" }, + this.renderSegs(t.businessHourSegs || [], t.timelineCoords, "non-business"), + this.renderSegs(t.bgEventSegs || [], t.timelineCoords, "bg-event"), + this.renderSegs(r, t.timelineCoords, "highlight") + ); + } + renderSegs(t, r, n) { + let { todayRange: i, nowDate: a } = this.props, { isRtl: o } = this.context, l = CIe(t, 0, r), u = t.map((d, f) => { + let g = l[f], v = W7(g, o); + return De("div", { key: E7(d.eventRange), className: "fc-timeline-bg-harness", style: v }, n === "bg-event" ? De(U7, Object.assign({ seg: d }, bf(d, i, a))) : j7(n)); + }); + return De(Di, null, u); + } +} +class wIe extends M7 { + sliceRange(t, r, n, i, a) { + let o = Mbt(t, i, a), l = []; + if (g6(o.start, i, a) < g6(o.end, i, a)) { + let u = cv(o, i.normalizedRange); + u && l.push({ + start: u.start, + end: u.end, + isStart: u.start.valueOf() === o.start.valueOf() && M2(u.start, i, r, n), + isEnd: u.end.valueOf() === o.end.valueOf() && M2(Jm(u.end, -1), i, r, n) + }); + } + return l; + } +} +const Xbt = co({ + hour: "numeric", + minute: "2-digit", + omitZeroMinute: !0, + meridiem: "narrow" +}); +class IIe extends Vn { + render() { + let { props: t } = this; + return De(L7, Object.assign({}, t, { elClasses: ["fc-timeline-event", "fc-h-event"], defaultTimeFormat: Xbt, defaultDisplayEventTime: !t.isTimeScale })); + } +} +class Kbt extends Vn { + render() { + let { props: t, context: r } = this, { hiddenSegs: n, placement: i, resourceId: a } = t, { top: o, hcoords: l } = i, u = l && o !== null, d = W7(l, r.isRtl), f = a ? { resourceId: a } : {}; + return De($7, { elRef: t.elRef, elClasses: ["fc-timeline-more-link"], elStyle: Object.assign({ visibility: u ? "" : "hidden", top: o || 0 }, d), allDayDate: null, moreCnt: n.length, allSegs: n, hiddenSegs: n, dateProfile: t.dateProfile, todayRange: t.todayRange, extraDateSpan: f, popoverContent: () => De(Di, null, n.map((g) => { + let v = g.eventRange.instance.instanceId; + return De( + "div", + { key: v, style: { visibility: t.isForcedInvisible[v] ? "hidden" : "" } }, + De(IIe, Object.assign({ isTimeScale: t.isTimeScale, seg: g, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: v === t.eventSelection }, bf(g, t.todayRange, t.nowDate))) + ); + })) }, (g) => De(g, { elTag: "div", elClasses: ["fc-timeline-more-link-inner", "fc-sticky"] })); + } +} +class G7 extends Vn { + constructor() { + super(...arguments), this.slicer = new wIe(), this.sortEventSegs = Gr(BB), this.harnessElRefs = new vc(), this.moreElRefs = new vc(), this.innerElRef = Ga(), this.state = { + eventInstanceHeights: {}, + moreLinkHeights: {} + }, this.handleResize = (t) => { + t && this.updateSize(); + }; + } + render() { + let { props: t, state: r, context: n } = this, { options: i } = n, { dateProfile: a, tDateProfile: o } = t, l = this.slicer.sliceProps( + t, + a, + o.isTimeScale ? null : t.nextDayThreshold, + n, + // wish we didn't have to pass in the rest of the args... + a, + n.dateProfileGenerator, + o, + n.dateEnv + ), u = (l.eventDrag ? l.eventDrag.segs : null) || (l.eventResize ? l.eventResize.segs : null) || [], d = this.sortEventSegs(l.fgEventSegs, i.eventOrder), f = CIe(d, i.eventMinWidth, t.timelineCoords), [g, v] = Ybt(d, f, r.eventInstanceHeights, r.moreLinkHeights, i.eventOrderStrict, i.eventMaxStack), y = ( + // TODO: more convenient + (l.eventDrag ? l.eventDrag.affectedInstances : null) || (l.eventResize ? l.eventResize.affectedInstances : null) || {} + ); + return De( + Di, + null, + De(TIe, { businessHourSegs: l.businessHourSegs, bgEventSegs: l.bgEventSegs, timelineCoords: t.timelineCoords, eventResizeSegs: l.eventResize ? l.eventResize.segs : [], dateSelectionSegs: l.dateSelectionSegs, nowDate: t.nowDate, todayRange: t.todayRange }), + De( + "div", + { className: "fc-timeline-events fc-scrollgrid-sync-inner", ref: this.innerElRef, style: { height: v } }, + this.renderFgSegs(g, y, !1, !1, !1), + this.renderFgSegs(Zbt(u, t.timelineCoords, g), {}, !!l.eventDrag, !!l.eventResize, !1) + ) + ); + } + componentDidMount() { + this.updateSize(), this.context.addResizeHandler(this.handleResize); + } + componentDidUpdate(t, r) { + (t.eventStore !== this.props.eventStore || // external thing changed? + t.timelineCoords !== this.props.timelineCoords || // external thing changed? + r.moreLinkHeights !== this.state.moreLinkHeights) && this.updateSize(); + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleResize); + } + updateSize() { + let { props: t } = this, { timelineCoords: r } = t; + const n = this.innerElRef.current; + t.onHeightChange && t.onHeightChange(n, !1), r && this.setState({ + eventInstanceHeights: _l(this.harnessElRefs.currentMap, (i) => Math.round(i.getBoundingClientRect().height)), + moreLinkHeights: _l(this.moreElRefs.currentMap, (i) => Math.round(i.getBoundingClientRect().height)) + }, () => { + t.onHeightChange && t.onHeightChange(n, !0); + }), t.syncParentMinHeight && (n.parentElement.style.minHeight = n.style.height); + } + renderFgSegs(t, r, n, i, a) { + let { harnessElRefs: o, moreElRefs: l, props: u, context: d } = this, f = n || i || a; + return De(Di, null, t.map((g) => { + let { seg: v, hcoords: y, top: C } = g; + if (Array.isArray(v)) { + let E = MB($B(v)); + return De(Kbt, { key: "m:" + E, elRef: l.createRef(E), hiddenSegs: v, placement: g, dateProfile: u.dateProfile, nowDate: u.nowDate, todayRange: u.todayRange, isTimeScale: u.tDateProfile.isTimeScale, eventSelection: u.eventSelection, resourceId: u.resourceId, isForcedInvisible: r }); + } + let A = v.eventRange.instance.instanceId, S = f || !!(!r[A] && y && C !== null), _ = W7(y, d.isRtl); + return De( + "div", + { key: "e:" + A, ref: f ? null : o.createRef(A), className: "fc-timeline-event-harness", style: Object.assign({ visibility: S ? "" : "hidden", top: C || 0 }, _) }, + De(IIe, Object.assign({ + isTimeScale: u.tDateProfile.isTimeScale, + seg: v, + isDragging: n, + isResizing: i, + isDateSelecting: a, + isSelected: A === u.eventSelection + /* TODO: bad for mirror? */ + }, bf(v, u.todayRange, u.nowDate))) + ); + })); + } +} +G7.addStateEquality({ + eventInstanceHeights: Cc, + moreLinkHeights: Cc +}); +function Zbt(e, t, r) { + if (!e.length || !t) + return []; + let n = qbt(r); + return e.map((i) => ({ + seg: i, + hcoords: t.rangeToCoords(i), + top: n[i.eventRange.instance.instanceId] + })); +} +function qbt(e) { + let t = {}; + for (let r of e) { + let { seg: n } = r; + Array.isArray(n) || (t[n.eventRange.instance.instanceId] = r.top); + } + return t; +} +class Jbt extends tc { + constructor() { + super(...arguments), this.slatsRef = Ga(), this.state = { + coords: null + }, this.handeEl = (t) => { + t ? this.context.registerInteractiveComponent(this, { el: t }) : this.context.unregisterInteractiveComponent(this); + }, this.handleCoords = (t) => { + this.setState({ coords: t }), this.props.onSlatCoords && this.props.onSlatCoords(t); + }; + } + render() { + let { props: t, state: r, context: n } = this, { options: i } = n, { dateProfile: a, tDateProfile: o } = t, l = T0(o.slotDuration).unit; + return De( + "div", + { className: "fc-timeline-body", ref: this.handeEl, style: { + minWidth: t.tableMinWidth, + height: t.clientHeight, + width: t.clientWidth + } }, + De(Bp, { unit: l }, (u, d) => De( + Di, + null, + De(EIe, { ref: this.slatsRef, dateProfile: a, tDateProfile: o, nowDate: u, todayRange: d, clientWidth: t.clientWidth, tableColGroupNode: t.tableColGroupNode, tableMinWidth: t.tableMinWidth, onCoords: this.handleCoords, onScrollLeftRequest: t.onScrollLeftRequest }), + De(G7, { dateProfile: a, tDateProfile: t.tDateProfile, nowDate: u, todayRange: d, nextDayThreshold: i.nextDayThreshold, businessHours: t.businessHours, eventStore: t.eventStore, eventUiBases: t.eventUiBases, dateSelection: t.dateSelection, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, timelineCoords: r.coords, syncParentMinHeight: !0 }), + i.nowIndicator && r.coords && r.coords.isDateInRange(u) && De( + "div", + { className: "fc-timeline-now-indicator-container" }, + De(UI, { elClasses: ["fc-timeline-now-indicator-line"], elStyle: H7(r.coords.dateToCoord(u), n.isRtl), isAxis: !1, date: u }) + ) + )) + ); + } + // Hit System + // ------------------------------------------------------------------------------------------ + queryHit(t, r, n, i) { + let o = this.slatsRef.current.positionToHit(t); + return o ? { + dateProfile: this.props.dateProfile, + dateSpan: o.dateSpan, + rect: { + left: o.left, + right: o.right, + top: 0, + bottom: i + }, + dayEl: o.dayEl, + layer: 0 + } : null; + } +} +class Qbt extends tc { + constructor() { + super(...arguments), this.buildTimelineDateProfile = Gr(_Ie), this.scrollGridRef = Ga(), this.state = { + slatCoords: null, + slotCushionMaxWidth: null + }, this.handleSlatCoords = (t) => { + this.setState({ slatCoords: t }); + }, this.handleScrollLeftRequest = (t) => { + this.scrollGridRef.current.forceScrollLeft(0, t); + }, this.handleMaxCushionWidth = (t) => { + this.setState({ + slotCushionMaxWidth: Math.ceil(t) + // for less rerendering TODO: DRY + }); + }; + } + render() { + let { props: t, state: r, context: n } = this, { options: i } = n, a = !t.forPrint && tI(i), o = !t.forPrint && UB(i), l = this.buildTimelineDateProfile(t.dateProfile, n.dateEnv, i, n.dateProfileGenerator), { slotMinWidth: u } = i, d = xIe(l, u || this.computeFallbackSlotMinWidth(l)), f = [ + { + type: "header", + key: "header", + isSticky: a, + chunks: [{ + key: "timeline", + content: (g) => De(bIe, { dateProfile: t.dateProfile, clientWidth: g.clientWidth, clientHeight: g.clientHeight, tableMinWidth: g.tableMinWidth, tableColGroupNode: g.tableColGroupNode, tDateProfile: l, slatCoords: r.slatCoords, onMaxCushionWidth: u ? null : this.handleMaxCushionWidth }) + }] + }, + { + type: "body", + key: "body", + liquid: !0, + chunks: [{ + key: "timeline", + content: (g) => De(Jbt, Object.assign({}, t, { clientWidth: g.clientWidth, clientHeight: g.clientHeight, tableMinWidth: g.tableMinWidth, tableColGroupNode: g.tableColGroupNode, tDateProfile: l, onSlatCoords: this.handleSlatCoords, onScrollLeftRequest: this.handleScrollLeftRequest })) + }] + } + ]; + return o && f.push({ + type: "footer", + key: "footer", + isSticky: !0, + chunks: [{ + key: "timeline", + content: eI + }] + }), De( + w0, + { elClasses: [ + "fc-timeline", + i.eventOverlap === !1 ? "fc-timeline-overlap-disabled" : "" + ], viewSpec: n.viewSpec }, + De(z7, { ref: this.scrollGridRef, liquid: !t.isHeightAuto && !t.forPrint, forPrint: t.forPrint, collapsibleWidth: !1, colGroups: [ + { cols: d } + ], sections: f }) + ); + } + computeFallbackSlotMinWidth(t) { + return Math.max(30, (this.state.slotCushionMaxWidth || 0) / t.slotsPerLabel); + } +} +function xIe(e, t) { + return [{ + span: e.slotCnt, + minWidth: t || 1 + // needs to be a non-zero number to trigger horizontal scrollbars!?????? + }]; +} +var eEt = '.fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:"";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}'; +P0(eEt); +var tEt = rc({ + name: "@fullcalendar/timeline", + premiumReleaseDate: "2024-02-20", + deps: [eO], + initialView: "timelineDay", + views: { + timeline: { + component: Qbt, + usesMinMaxTime: !0, + eventResizableFromStart: !0 + // how is this consumed for TimelineView tho? + }, + timelineDay: { + type: "timeline", + duration: { days: 1 } + }, + timelineWeek: { + type: "timeline", + duration: { weeks: 1 } + }, + timelineMonth: { + type: "timeline", + duration: { months: 1 } + }, + timelineYear: { + type: "timeline", + duration: { years: 1 } + } + } +}); +const AIe = "_fc:", rEt = { + id: String, + parentId: String, + children: At, + title: String, + businessHours: At, + extendedProps: At, + // event-ui + eventEditable: Boolean, + eventStartEditable: Boolean, + eventDurationEditable: Boolean, + eventConstraint: At, + eventOverlap: Boolean, + eventAllow: At, + eventClassNames: l6, + eventBackgroundColor: String, + eventBorderColor: String, + eventTextColor: String, + eventColor: String +}; +function Y7(e, t = "", r, n) { + let { refined: i, extra: a } = KD(e, rEt), o = { + id: i.id || AIe + pv(), + parentId: i.parentId || t, + title: i.title || "", + businessHours: i.businessHours ? Twe(i.businessHours, n) : null, + ui: JR({ + editable: i.eventEditable, + startEditable: i.eventStartEditable, + durationEditable: i.eventDurationEditable, + constraint: i.eventConstraint, + overlap: i.eventOverlap, + allow: i.eventAllow, + classNames: i.eventClassNames, + backgroundColor: i.eventBackgroundColor, + borderColor: i.eventBorderColor, + textColor: i.eventTextColor, + color: i.eventColor + }, n), + extendedProps: Object.assign(Object.assign({}, a), i.extendedProps) + }; + if (Object.freeze(o.ui.classNames), Object.freeze(o.extendedProps), !r[o.id]) { + if (r[o.id] = o, i.children) + for (let l of i.children) + Y7(l, o.id, r, n); + } + return o; +} +function RIe(e) { + return e.indexOf(AIe) === 0 ? "" : e; +} +class qc { + constructor(t, r) { + this._context = t, this._resource = r; + } + setProp(t, r) { + let n = this._resource; + this._context.dispatch({ + type: "SET_RESOURCE_PROP", + resourceId: n.id, + propName: t, + propValue: r + }), this.sync(n); + } + setExtendedProp(t, r) { + let n = this._resource; + this._context.dispatch({ + type: "SET_RESOURCE_EXTENDED_PROP", + resourceId: n.id, + propName: t, + propValue: r + }), this.sync(n); + } + sync(t) { + let r = this._context, n = t.id; + this._resource = r.getCurrentData().resourceStore[n], r.emitter.trigger("resourceChange", { + oldResource: new qc(r, t), + resource: this, + revert() { + r.dispatch({ + type: "ADD_RESOURCE", + resourceHash: { + [n]: t + } + }); + } + }); + } + remove() { + let t = this._context, r = this._resource, n = r.id; + t.dispatch({ + type: "REMOVE_RESOURCE", + resourceId: n + }), t.emitter.trigger("resourceRemove", { + resource: this, + revert() { + t.dispatch({ + type: "ADD_RESOURCE", + resourceHash: { + [n]: r + } + }); + } + }); + } + getParent() { + let t = this._context, r = this._resource.parentId; + return r ? new qc(t, t.getCurrentData().resourceStore[r]) : null; + } + getChildren() { + let t = this._resource.id, r = this._context, { resourceStore: n } = r.getCurrentData(), i = []; + for (let a in n) + n[a].parentId === t && i.push(new qc(r, n[a])); + return i; + } + /* + this is really inefficient! + TODO: make EventApi::resourceIds a hash or keep an index in the Calendar's state + */ + getEvents() { + let t = this._resource.id, r = this._context, { defs: n, instances: i } = r.getCurrentData().eventStore, a = []; + for (let o in i) { + let l = i[o], u = n[l.defId]; + u.resourceIds.indexOf(t) !== -1 && a.push(new Vo(r, u, l)); + } + return a; + } + get id() { + return RIe(this._resource.id); + } + get title() { + return this._resource.title; + } + get eventConstraint() { + return this._resource.ui.constraints[0] || null; + } + // TODO: better type + get eventOverlap() { + return this._resource.ui.overlap; + } + get eventAllow() { + return this._resource.ui.allows[0] || null; + } + // TODO: better type + get eventBackgroundColor() { + return this._resource.ui.backgroundColor; + } + get eventBorderColor() { + return this._resource.ui.borderColor; + } + get eventTextColor() { + return this._resource.ui.textColor; + } + // NOTE: user can't modify these because Object.freeze was called in event-def parsing + get eventClassNames() { + return this._resource.ui.classNames; + } + get extendedProps() { + return this._resource.extendedProps; + } + toPlainObject(t = {}) { + let r = this._resource, { ui: n } = r, i = this.id, a = {}; + return i && (a.id = i), r.title && (a.title = r.title), t.collapseEventColor && n.backgroundColor && n.backgroundColor === n.borderColor ? a.eventColor = n.backgroundColor : (n.backgroundColor && (a.eventBackgroundColor = n.backgroundColor), n.borderColor && (a.eventBorderColor = n.borderColor)), n.textColor && (a.eventTextColor = n.textColor), n.classNames.length && (a.eventClassNames = n.classNames), Object.keys(r.extendedProps).length && (t.collapseExtendedProps ? Object.assign(a, r.extendedProps) : a.extendedProps = r.extendedProps), a; + } + toJSON() { + return this.toPlainObject(); + } +} +function nEt(e, t) { + let r = []; + for (let n in e) + r.push(new qc(t, e[n])); + return r; +} +class DIe extends I7 { + getKeyInfo(t) { + return Object.assign({ "": {} }, t.resourceStore); + } + getKeysForDateSpan(t) { + return [t.resourceId || ""]; + } + getKeysForEventDef(t) { + let r = t.resourceIds; + return r.length ? r : [""]; + } +} +const OIe = u7("id,title"); +function iEt(e, t) { + let { emitter: r } = t; + r.hasHandlers("resourcesSet") && r.trigger("resourcesSet", nEt(e, t)); +} +function aEt(e) { + return { + resource: new qc(e.context, e.resource) + }; +} +class oEt extends Vn { + constructor() { + super(...arguments), this.refineRenderProps = d0(lEt); + } + render() { + const { props: t } = this; + return De(gv.Consumer, null, (r) => { + let { options: n } = r, i = this.refineRenderProps({ + resource: t.resource, + date: t.date, + context: r + }); + return De(is, Object.assign({}, t, { elAttrs: Object.assign(Object.assign({}, t.elAttrs), { "data-resource-id": t.resource.id, "data-date": t.date ? NI(t.date) : void 0 }), renderProps: i, generatorName: "resourceLabelContent", customGenerator: n.resourceLabelContent, defaultGenerator: sEt, classNameGenerator: n.resourceLabelClassNames, didMount: n.resourceLabelDidMount, willUnmount: n.resourceLabelWillUnmount })); + }); + } +} +function sEt(e) { + return e.resource.title || e.resource.id; +} +function lEt(e) { + return { + resource: new qc(e.context, e.resource), + date: e.date ? e.context.dateEnv.toDate(e.date) : null, + view: e.context.viewApi + }; +} +class P4 extends Vn { + render() { + let { props: t } = this; + return De(oEt, { elTag: "th", elClasses: ["fc-col-header-cell", "fc-resource"], elAttrs: { + role: "columnheader", + colSpan: t.colSpan + }, resource: t.resource, date: t.date }, (r) => De( + "div", + { className: "fc-scrollgrid-sync-inner" }, + De(r, { elTag: "span", elClasses: [ + "fc-col-header-cell-cushion", + t.isSticky && "fc-sticky" + ] }) + )); + } +} +class cEt extends Vn { + constructor() { + super(...arguments), this.buildDateFormat = Gr(uEt); + } + render() { + let { props: t, context: r } = this, n = this.buildDateFormat(r.options.dayHeaderFormat, t.datesRepDistinctDays, t.dates.length); + return De(Bp, { unit: "day" }, (i, a) => t.dates.length === 1 ? this.renderResourceRow(t.resources, t.dates[0]) : r.options.datesAboveResources ? this.renderDayAndResourceRows(t.dates, n, a, t.resources) : this.renderResourceAndDayRows(t.resources, t.dates, n, a)); + } + renderResourceRow(t, r) { + let n = t.map((i) => De(P4, { key: i.id, resource: i, colSpan: 1, date: r })); + return this.buildTr(n, "resources"); + } + renderDayAndResourceRows(t, r, n, i) { + let a = [], o = []; + for (let l of t) { + a.push(this.renderDateCell(l, r, n, i.length, null, !0)); + for (let u of i) + o.push(De(P4, { key: u.id + ":" + l.toISOString(), resource: u, colSpan: 1, date: l })); + } + return De( + Di, + null, + this.buildTr(a, "day"), + this.buildTr(o, "resources") + ); + } + renderResourceAndDayRows(t, r, n, i) { + let a = [], o = []; + for (let l of t) { + a.push(De(P4, { key: l.id, resource: l, colSpan: r.length, isSticky: !0 })); + for (let u of r) + o.push(this.renderDateCell(u, n, i, 1, l)); + } + return De( + Di, + null, + this.buildTr(a, "resources"), + this.buildTr(o, "day") + ); + } + // a cell with date text. might have a resource associated with it + renderDateCell(t, r, n, i, a, o) { + let { props: l } = this, u = a ? `:${a.id}` : "", d = a ? { resource: new qc(this.context, a) } : {}, f = a ? { "data-resource-id": a.id } : {}; + return l.datesRepDistinctDays ? De(zwe, { key: t.toISOString() + u, date: t, dateProfile: l.dateProfile, todayRange: n, colCnt: l.dates.length * l.resources.length, dayHeaderFormat: r, colSpan: i, isSticky: o, extraRenderProps: d, extraDataAttrs: f }) : De( + Hwe, + { key: t.getUTCDay() + u, dow: t.getUTCDay(), dayHeaderFormat: r, colSpan: i, isSticky: o, extraRenderProps: d, extraDataAttrs: f } + ); + } + buildTr(t, r) { + let { renderIntro: n } = this.props; + return t.length || (t = [De("td", { key: 0 }, " ")]), De( + "tr", + { key: r, role: "row" }, + n && n(r), + t + ); + } +} +function uEt(e, t, r) { + return e || jwe(t, r); +} +class hEt { + constructor(t) { + let r = {}, n = []; + for (let i = 0; i < t.length; i += 1) { + let a = t[i].id; + n.push(a), r[a] = i; + } + this.ids = n, this.indicesById = r, this.length = t.length; + } +} +class MIe { + constructor(t, r, n) { + this.dayTableModel = t, this.resources = r, this.context = n, this.resourceIndex = new hEt(r), this.rowCnt = t.rowCnt, this.colCnt = t.colCnt * r.length, this.cells = this.buildCells(); + } + buildCells() { + let { rowCnt: t, dayTableModel: r, resources: n } = this, i = []; + for (let a = 0; a < t; a += 1) { + let o = []; + for (let l = 0; l < r.colCnt; l += 1) + for (let u = 0; u < n.length; u += 1) { + let d = n[u], f = { resource: new qc(this.context, d) }, g = { "data-resource-id": d.id }, v = ["fc-resource"], y = { resourceId: d.id }, C = r.cells[a][l].date; + o[this.computeCol(l, u)] = { + key: d.id + ":" + C.toISOString(), + date: C, + extraRenderProps: f, + extraDataAttrs: g, + extraClassNames: v, + extraDateSpan: y + }; + } + i.push(o); + } + return i; + } +} +class dEt extends MIe { + computeCol(t, r) { + return r * this.dayTableModel.colCnt + t; + } + /* + all date ranges are intact + */ + computeColRanges(t, r, n) { + return [ + { + firstCol: this.computeCol(t, n), + lastCol: this.computeCol(r, n), + isStart: !0, + isEnd: !0 + } + ]; + } +} +class fEt extends MIe { + computeCol(t, r) { + return t * this.resources.length + r; + } + /* + every single day is broken up + */ + computeColRanges(t, r, n) { + let i = []; + for (let a = t; a <= r; a += 1) { + let o = this.computeCol(a, n); + i.push({ + firstCol: o, + lastCol: o, + isStart: a === t, + isEnd: a === r + }); + } + return i; + } +} +const Wde = []; +class kIe { + constructor() { + this.joinDateSelection = Gr(this.joinSegs), this.joinBusinessHours = Gr(this.joinSegs), this.joinFgEvents = Gr(this.joinSegs), this.joinBgEvents = Gr(this.joinSegs), this.joinEventDrags = Gr(this.joinInteractions), this.joinEventResizes = Gr(this.joinInteractions); + } + /* + propSets also has a '' key for things with no resource + */ + joinProps(t, r) { + let n = [], i = [], a = [], o = [], l = [], u = [], d = "", f = r.resourceIndex.ids.concat([""]); + for (let g of f) { + let v = t[g]; + n.push(v.dateSelectionSegs), i.push(g ? v.businessHourSegs : Wde), a.push(g ? v.fgEventSegs : Wde), o.push(v.bgEventSegs), l.push(v.eventDrag), u.push(v.eventResize), d = d || v.eventSelection; + } + return { + dateSelectionSegs: this.joinDateSelection(r, ...n), + businessHourSegs: this.joinBusinessHours(r, ...i), + fgEventSegs: this.joinFgEvents(r, ...a), + bgEventSegs: this.joinBgEvents(r, ...o), + eventDrag: this.joinEventDrags(r, ...l), + eventResize: this.joinEventResizes(r, ...u), + eventSelection: d + }; + } + joinSegs(t, ...r) { + let n = t.resources.length, i = []; + for (let a = 0; a < n; a += 1) { + for (let o of r[a]) + i.push(...this.transformSeg(o, t, a)); + for (let o of r[n]) + i.push(...this.transformSeg(o, t, a)); + } + return i; + } + /* + for expanding non-resource segs to all resources. + only for public use. + no memoizing. + */ + expandSegs(t, r) { + let n = t.resources.length, i = []; + for (let a = 0; a < n; a += 1) + for (let o of r) + i.push(...this.transformSeg(o, t, a)); + return i; + } + joinInteractions(t, ...r) { + let n = t.resources.length, i = {}, a = [], o = !1, l = !1; + for (let u = 0; u < n; u += 1) { + let d = r[u]; + if (d) { + o = !0; + for (let f of d.segs) + a.push(...this.transformSeg(f, t, u)); + Object.assign(i, d.affectedInstances), l = l || d.isEvent; + } + if (r[n]) + for (let f of r[n].segs) + a.push(...this.transformSeg(f, t, u)); + } + return o ? { + affectedInstances: i, + segs: a, + isEvent: l + } : null; + } +} +class PIe extends I7 { + getKeyInfo(t) { + let { resourceDayTableModel: r } = t, n = _l(r.resourceIndex.indicesById, (i) => r.resources[i]); + return n[""] = {}, n; + } + getKeysForDateSpan(t) { + return [t.resourceId || ""]; + } + getKeysForEventDef(t) { + let r = t.resourceIds; + return r.length ? r : [""]; + } +} +function pEt(e, t) { + return NIe(e, [], t, !1, {}, !0).map((r) => r.resource); +} +function NIe(e, t, r, n, i, a) { + let o = gEt(e, n ? -1 : 1, t, r), l = []; + return KN(o, l, n, [], 0, i, a), l; +} +function KN(e, t, r, n, i, a, o) { + for (let l = 0; l < e.length; l += 1) { + let u = e[l], d = u.group; + if (d) + if (r) { + let f = t.length, g = n.length; + if (KN(u.children, t, r, n.concat(0), i, a, o), f < t.length) { + let v = t[f], y = v.rowSpans = v.rowSpans.slice(); + y[g] = t.length - f; + } + } else { + let f = d.spec.field + ":" + d.value, g = a[f] != null ? a[f] : o; + t.push({ id: f, group: d, isExpanded: g }), g && KN(u.children, t, r, n, i + 1, a, o); + } + else if (u.resource) { + let f = u.resource.id, g = a[f] != null ? a[f] : o; + t.push({ + id: f, + rowSpans: n, + depth: i, + isExpanded: g, + hasChildren: !!u.children.length, + resource: u.resource, + resourceFields: u.resourceFields + }), g && KN(u.children, t, r, n, i + 1, a, o); + } + } +} +function gEt(e, t, r, n) { + let i = vEt(e, n), a = []; + for (let o in i) { + let l = i[o]; + l.resource.parentId || LIe(l, a, r, 0, t, n); + } + return a; +} +function vEt(e, t) { + let r = {}; + for (let n in e) { + let i = e[n]; + r[n] = { + resource: i, + resourceFields: BIe(i), + children: [] + }; + } + for (let n in e) { + let i = e[n]; + if (i.parentId) { + let a = r[i.parentId]; + a && FIe(r[n], a.children, t); + } + } + return r; +} +function LIe(e, t, r, n, i, a) { + if (r.length && (i === -1 || n <= i)) { + let o = mEt(e, t, r[0]); + LIe(e, o.children, r.slice(1), n + 1, i, a); + } else + FIe(e, t, a); +} +function mEt(e, t, r) { + let n = e.resourceFields[r.field], i, a; + if (r.order) + for (a = 0; a < t.length; a += 1) { + let o = t[a]; + if (o.group) { + let l = nwe(n, o.group.value) * r.order; + if (l === 0) { + i = o; + break; + } else if (l < 0) + break; + } + } + else + for (a = 0; a < t.length; a += 1) { + let o = t[a]; + if (o.group && n === o.group.value) { + i = o; + break; + } + } + return i || (i = { + group: { + value: n, + spec: r + }, + children: [] + }, t.splice(a, 0, i)), i; +} +function FIe(e, t, r) { + let n; + for (n = 0; n < t.length && !(rwe(t[n].resourceFields, e.resourceFields, r) > 0); n += 1) + ; + t.splice(n, 0, e); +} +function BIe(e) { + let t = Object.assign(Object.assign(Object.assign({}, e.extendedProps), e.ui), e); + return delete t.ui, delete t.extendedProps, t; +} +function yEt(e, t) { + return e.spec === t.spec && e.value === t.value; +} +function _Et(e, t, r) { + let n = t.dateSpan.resourceId, i = r.dateSpan.resourceId; + n && i && n !== i && (e.resourceMutation = { + matchResourceId: n, + setResourceId: i + }); +} +function SEt(e, t, r) { + let n = t.resourceMutation; + if (n && UIe(e, r)) { + let i = e.resourceIds.indexOf(n.matchResourceId); + if (i !== -1) { + let a = e.resourceIds.slice(); + a.splice(i, 1), a.indexOf(n.setResourceId) === -1 && a.push(n.setResourceId), e.resourceIds = a; + } + } +} +function UIe(e, t) { + let { resourceEditable: r } = e; + if (r == null) { + let n = e.sourceId && t.getCurrentData().eventSources[e.sourceId]; + n && (r = n.extendedProps.resourceEditable), r == null && (r = t.options.eventResourceEditable, r == null && (r = t.options.editable)); + } + return r; +} +function bEt(e, t) { + let { resourceMutation: r } = e; + if (r) { + let { calendarApi: n } = t; + return { + oldResource: n.getResourceById(r.matchResourceId), + newResource: n.getResourceById(r.setResourceId) + }; + } + return { + oldResource: null, + newResource: null + }; +} +class EEt { + constructor() { + this.filterResources = Gr(CEt); + } + transform(t, r) { + return r.viewSpec.optionDefaults.needsResourceData ? { + resourceStore: this.filterResources(r.resourceStore, r.options.filterResourcesWithEvents, r.eventStore, r.dateProfile.activeRange), + resourceEntityExpansions: r.resourceEntityExpansions + } : null; + } +} +function CEt(e, t, r, n) { + if (t) { + let i = TEt(r.instances, n), a = wEt(i, r.defs); + return Object.assign(a, IEt(a, e)), Qm(e, (o, l) => a[l]); + } + return e; +} +function TEt(e, t) { + return Qm(e, (r) => kB(r.range, t)); +} +function wEt(e, t) { + let r = {}; + for (let n in e) { + let i = e[n]; + for (let a of t[i.defId].resourceIds) + r[a] = !0; + } + return r; +} +function IEt(e, t) { + let r = {}; + for (let n in e) { + let i; + for (; (i = t[n]) && (n = i.parentId, n); ) + r[n] = !0; + } + return r; +} +function xEt(e, t, r, n) { + if (!e) { + let i = n.getCurrentData(); + if (i.viewSpecs[i.currentViewType].optionDefaults.needsResourceData && UIe(t, n)) + return !0; + } + return e; +} +class AEt { + constructor() { + this.buildResourceEventUis = Gr(REt, Cc), this.injectResourceEventUis = Gr(DEt); + } + transform(t, r) { + return r.viewSpec.optionDefaults.needsResourceData ? null : { + eventUiBases: this.injectResourceEventUis(t.eventUiBases, t.eventStore.defs, this.buildResourceEventUis(r.resourceStore)) + }; + } +} +function REt(e) { + return _l(e, (t) => t.ui); +} +function DEt(e, t, r) { + return _l(e, (n, i) => i ? OEt(n, t[i], r) : n); +} +function OEt(e, t, r) { + let n = []; + for (let i of t.resourceIds) + r[i] && n.unshift(r[i]); + return n.unshift(e), _7(n); +} +let X7 = []; +function K7(e) { + X7.push(e); +} +function jIe(e) { + return X7[e]; +} +function MEt() { + return X7; +} +const kEt = { + id: String, + // for array. TODO: move to resource-array + resources: At, + // for json feed. TODO: move to resource-json-feed + url: String, + method: String, + startParam: String, + endParam: String, + timeZoneParam: String, + extraParams: At +}; +function PEt(e) { + let t; + if (typeof e == "string" ? t = { url: e } : typeof e == "function" || Array.isArray(e) ? t = { resources: e } : typeof e == "object" && e && (t = e), t) { + let { refined: r, extra: n } = KD(t, kEt); + LEt(n); + let i = NEt(r); + if (i) + return { + _raw: e, + sourceId: pv(), + sourceDefId: i.sourceDefId, + meta: i.meta, + publicId: r.id || "", + isFetching: !1, + latestFetchId: "", + fetchRange: null + }; + } + return null; +} +function NEt(e) { + let t = MEt(); + for (let r = t.length - 1; r >= 0; r -= 1) { + let i = t[r].parseMeta(e); + if (i) + return { meta: i, sourceDefId: r }; + } + return null; +} +function LEt(e) { + for (let t in e) + console.warn(`Unknown resource prop '${t}'`); +} +function FEt(e, t, r) { + let { options: n, dateProfile: i } = r; + if (!e || !t) + return Gde(n.initialResources || n.resources, i.activeRange, n.refetchResourcesOnNavigate, r); + switch (t.type) { + case "RESET_RESOURCE_SOURCE": + return Gde(t.resourceSourceInput, i.activeRange, n.refetchResourcesOnNavigate, r); + case "PREV": + case "NEXT": + case "CHANGE_DATE": + case "CHANGE_VIEW_TYPE": + return BEt(e, i.activeRange, n.refetchResourcesOnNavigate, r); + case "RECEIVE_RESOURCES": + case "RECEIVE_RESOURCE_ERROR": + return jEt(e, t.fetchId, t.fetchRange); + case "REFETCH_RESOURCES": + return Z7(e, i.activeRange, r); + default: + return e; + } +} +function Gde(e, t, r, n) { + if (e) { + let i = PEt(e); + return i = Z7(i, r ? t : null, n), i; + } + return null; +} +function BEt(e, t, r, n) { + return r && !UEt(e) && (!e.fetchRange || !pwe(e.fetchRange, t)) ? Z7(e, t, n) : e; +} +function UEt(e) { + return !!jIe(e.sourceDefId).ignoreRange; +} +function Z7(e, t, r) { + let n = jIe(e.sourceDefId), i = pv(); + return n.fetch({ + resourceSource: e, + range: t, + context: r + }, (a) => { + r.dispatch({ + type: "RECEIVE_RESOURCES", + fetchId: i, + fetchRange: t, + rawResources: a.rawResources + }); + }, (a) => { + r.dispatch({ + type: "RECEIVE_RESOURCE_ERROR", + fetchId: i, + fetchRange: t, + error: a + }); + }), Object.assign(Object.assign({}, e), { isFetching: !0, latestFetchId: i }); +} +function jEt(e, t, r) { + return t === e.latestFetchId ? Object.assign(Object.assign({}, e), { isFetching: !1, fetchRange: r }) : e; +} +function $Et(e, t, r, n) { + if (!e || !t) + return {}; + switch (t.type) { + case "RECEIVE_RESOURCES": + return VEt(e, t.rawResources, t.fetchId, r, n); + case "ADD_RESOURCE": + return zEt(e, t.resourceHash); + case "REMOVE_RESOURCE": + return HEt(e, t.resourceId); + case "SET_RESOURCE_PROP": + return WEt(e, t.resourceId, t.propName, t.propValue); + case "SET_RESOURCE_EXTENDED_PROP": + return GEt(e, t.resourceId, t.propName, t.propValue); + default: + return e; + } +} +function VEt(e, t, r, n, i) { + if (n.latestFetchId === r) { + let a = {}; + for (let o of t) + Y7(o, "", a, i); + return a; + } + return e; +} +function zEt(e, t) { + return Object.assign(Object.assign({}, e), t); +} +function HEt(e, t) { + let r = Object.assign({}, e); + delete r[t]; + for (let n in r) + r[n].parentId === t && (r[n] = Object.assign(Object.assign({}, r[n]), { parentId: "" })); + return r; +} +function WEt(e, t, r, n) { + let i = e[t]; + return i ? Object.assign(Object.assign({}, e), { [t]: Object.assign(Object.assign({}, i), { [r]: n }) }) : e; +} +function GEt(e, t, r, n) { + let i = e[t]; + return i ? Object.assign(Object.assign({}, e), { [t]: Object.assign(Object.assign({}, i), { extendedProps: Object.assign(Object.assign({}, i.extendedProps), { [r]: n }) }) }) : e; +} +function YEt(e, t) { + if (!e || !t) + return {}; + switch (t.type) { + case "SET_RESOURCE_ENTITY_EXPANDED": + return Object.assign(Object.assign({}, e), { [t.id]: t.isExpanded }); + default: + return e; + } +} +function XEt(e, t, r) { + let n = FEt(e && e.resourceSource, t, r), i = $Et(e && e.resourceStore, t, n, r), a = YEt(e && e.resourceEntityExpansions, t); + return { + resourceSource: n, + resourceStore: i, + resourceEntityExpansions: a + }; +} +const KEt = { + resourceId: String, + resourceIds: At, + resourceEditable: Boolean +}; +function ZEt(e) { + return { + resourceIds: qEt(e.resourceIds).concat(e.resourceId ? [e.resourceId] : []), + resourceEditable: e.resourceEditable + }; +} +function qEt(e) { + return (e || []).map((t) => String(t)); +} +function JEt(e, t) { + let r = e.dateSpan.resourceId, n = t.dateSpan.resourceId; + return r && n ? { resourceId: r } : null; +} +FI.prototype.addResource = function(e, t = !0) { + let r = this.getCurrentData(), n, i; + e instanceof qc ? (i = e._resource, n = { [i.id]: i }) : (n = {}, i = Y7(e, "", n, r)), this.dispatch({ + type: "ADD_RESOURCE", + resourceHash: n + }), t && this.trigger("_scrollRequest", { resourceId: i.id }); + let a = new qc(r, i); + return r.emitter.trigger("resourceAdd", { + resource: a, + revert: () => { + this.dispatch({ + type: "REMOVE_RESOURCE", + resourceId: i.id + }); + } + }), a; +}; +FI.prototype.getResourceById = function(e) { + e = String(e); + let t = this.getCurrentData(); + if (t.resourceStore) { + let r = t.resourceStore[e]; + if (r) + return new qc(t, r); + } + return null; +}; +FI.prototype.getResources = function() { + let e = this.getCurrentData(), { resourceStore: t } = e, r = []; + if (t) + for (let n in t) + r.push(new qc(e, t[n])); + return r; +}; +FI.prototype.getTopLevelResources = function() { + let e = this.getCurrentData(), { resourceStore: t } = e, r = []; + if (t) + for (let n in t) + t[n].parentId || r.push(new qc(e, t[n])); + return r; +}; +FI.prototype.refetchResources = function() { + this.dispatch({ + type: "REFETCH_RESOURCES" + }); +}; +function QEt(e, t) { + return e.resourceId ? { resource: t.calendarApi.getResourceById(e.resourceId) } : {}; +} +function eCt(e, t) { + return e.resourceId ? { resource: t.calendarApi.getResourceById(e.resourceId) } : {}; +} +function tCt(e, t) { + let n = new DIe().splitProps(Object.assign(Object.assign({}, e), { resourceStore: t.getCurrentData().resourceStore })); + for (let i in n) { + let a = n[i]; + if (i && n[""] && (a = Object.assign(Object.assign({}, a), { eventStore: LB(n[""].eventStore, a.eventStore), eventUiBases: Object.assign(Object.assign({}, n[""].eventUiBases), a.eventUiBases) })), !Kwe(a, t, { resourceId: i }, rCt.bind(null, i))) + return !1; + } + return !0; +} +function rCt(e, t) { + return Object.assign(Object.assign({}, t), { constraints: nCt(e, t.constraints) }); +} +function nCt(e, t) { + return t.map((r) => { + let n = r.defs; + if (n) + for (let i in n) { + let a = n[i].resourceIds; + if (a.length && a.indexOf(e) === -1) + return !1; + } + return r; + }); +} +function iCt(e) { + return e.resourceId ? { resourceId: e.resourceId } : {}; +} +const aCt = { + resources: oCt +}; +function oCt(e, t) { + t.getCurrentData().resourceSource._raw !== e && t.dispatch({ + type: "RESET_RESOURCE_SOURCE", + resourceSourceInput: e + }); +} +const sCt = { + initialResources: At, + resources: At, + eventResourceEditable: Boolean, + refetchResourcesOnNavigate: Boolean, + resourceOrder: u7, + filterResourcesWithEvents: Boolean, + resourceGroupField: String, + resourceAreaWidth: At, + resourceAreaColumns: At, + resourcesInitiallyExpanded: Boolean, + datesAboveResources: Boolean, + needsResourceData: Boolean, + resourceAreaHeaderClassNames: At, + resourceAreaHeaderContent: At, + resourceAreaHeaderDidMount: At, + resourceAreaHeaderWillUnmount: At, + resourceGroupLabelClassNames: At, + resourceGroupLabelContent: At, + resourceGroupLabelDidMount: At, + resourceGroupLabelWillUnmount: At, + resourceLabelClassNames: At, + resourceLabelContent: At, + resourceLabelDidMount: At, + resourceLabelWillUnmount: At, + resourceLaneClassNames: At, + resourceLaneContent: At, + resourceLaneDidMount: At, + resourceLaneWillUnmount: At, + resourceGroupLaneClassNames: At, + resourceGroupLaneContent: At, + resourceGroupLaneDidMount: At, + resourceGroupLaneWillUnmount: At +}, lCt = { + resourcesSet: At, + resourceAdd: At, + resourceChange: At, + resourceRemove: At +}; +Vo.prototype.getResources = function() { + let { calendarApi: e } = this._context; + return this._def.resourceIds.map((t) => e.getResourceById(t)); +}; +Vo.prototype.setResources = function(e) { + let t = []; + for (let r of e) { + let n = null; + typeof r == "string" ? n = r : typeof r == "number" ? n = String(r) : r instanceof qc ? n = r.id : console.warn("unknown resource type: " + r), n && t.push(n); + } + this.mutate({ + standardProps: { + resourceIds: t + } + }); +}; +K7({ + ignoreRange: !0, + parseMeta(e) { + return Array.isArray(e.resources) ? e.resources : null; + }, + fetch(e, t) { + t({ + rawResources: e.resourceSource.meta + }); + } +}); +K7({ + parseMeta(e) { + return typeof e.resources == "function" ? e.resources : null; + }, + fetch(e, t, r) { + const n = e.context.dateEnv, i = e.resourceSource.meta, a = e.range ? { + start: n.toDate(e.range.start), + end: n.toDate(e.range.end), + startStr: n.formatIso(e.range.start), + endStr: n.formatIso(e.range.end), + timeZone: n.timeZone + } : {}; + Dwe(i.bind(null, a), (o) => t({ rawResources: o }), r); + } +}); +K7({ + parseMeta(e) { + return e.url ? { + url: e.url, + method: (e.method || "GET").toUpperCase(), + extraParams: e.extraParams + } : null; + }, + fetch(e, t, r) { + const n = e.resourceSource.meta, i = cCt(n, e.range, e.context); + Owe(n.method, n.url, i).then(([a, o]) => { + t({ rawResources: a, response: o }); + }, r); + } +}); +function cCt(e, t, r) { + let { dateEnv: n, options: i } = r, a, o, l, u, d = {}; + return t && (a = e.startParam, a == null && (a = i.startParam), o = e.endParam, o == null && (o = i.endParam), l = e.timeZoneParam, l == null && (l = i.timeZoneParam), d[a] = n.formatIso(t.start), d[o] = n.formatIso(t.end), n.timeZone !== "local" && (d[l] = n.timeZone)), typeof e.extraParams == "function" ? u = e.extraParams() : u = e.extraParams || {}, Object.assign(d, u), d; +} +var $Ie = rc({ + name: "@fullcalendar/resource", + premiumReleaseDate: "2024-02-20", + deps: [eO], + reducers: [XEt], + isLoadingFuncs: [ + (e) => e.resourceSource && e.resourceSource.isFetching + ], + eventRefiners: KEt, + eventDefMemberAdders: [ZEt], + isDraggableTransformers: [xEt], + eventDragMutationMassagers: [_Et], + eventDefMutationAppliers: [SEt], + dateSelectionTransformers: [JEt], + datePointTransforms: [QEt], + dateSpanTransforms: [eCt], + viewPropsTransformers: [EEt, AEt], + isPropsValid: tCt, + externalDefTransforms: [iCt], + eventDropTransformers: [bEt], + optionChangeHandlers: aCt, + optionRefiners: sCt, + listenerRefiners: lCt, + propSetHandlers: { resourceStore: iEt } +}); +function VIe({ depth: e, hasChildren: t, isExpanded: r, onExpanderClick: n }) { + let i = []; + for (let o = 0; o < e; o += 1) + i.push(De("span", { className: "fc-icon" })); + let a = ["fc-icon"]; + return t && (r ? a.push("fc-icon-minus-square") : a.push("fc-icon-plus-square")), i.push(De( + "span", + { className: "fc-datagrid-expander" + (t ? "" : " fc-datagrid-expander-placeholder"), onClick: n }, + De("span", { className: a.join(" ") }) + )), De(Di, {}, ...i); +} +class uCt extends Vn { + constructor() { + super(...arguments), this.refineRenderProps = d0(dCt), this.onExpanderClick = (t) => { + let { props: r } = this; + r.hasChildren && this.context.dispatch({ + type: "SET_RESOURCE_ENTITY_EXPANDED", + id: r.resource.id, + isExpanded: !r.isExpanded + }); + }; + } + render() { + let { props: t, context: r } = this, { colSpec: n } = t, i = this.refineRenderProps({ + resource: t.resource, + fieldValue: t.fieldValue, + context: r + }); + return De(is, { elTag: "td", elClasses: [ + "fc-datagrid-cell", + "fc-resource" + ], elAttrs: { + role: "gridcell", + "data-resource-id": t.resource.id + }, renderProps: i, generatorName: n.isMain ? "resourceLabelContent" : void 0, customGenerator: n.cellContent, defaultGenerator: hCt, classNameGenerator: n.cellClassNames, didMount: n.cellDidMount, willUnmount: n.cellWillUnmount }, (a) => De( + "div", + { className: "fc-datagrid-cell-frame", style: { height: t.innerHeight } }, + De( + "div", + { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner" }, + n.isMain && De(VIe, { depth: t.depth, hasChildren: t.hasChildren, isExpanded: t.isExpanded, onExpanderClick: this.onExpanderClick }), + De(a, { elTag: "span", elClasses: ["fc-datagrid-cell-main"] }) + ) + )); + } +} +function hCt(e) { + return e.fieldValue || De(Di, null, " "); +} +function dCt(e) { + return { + resource: new qc(e.context, e.resource), + fieldValue: e.fieldValue, + view: e.context.viewApi + }; +} +class fCt extends Vn { + render() { + let { props: t, context: r } = this, { colSpec: n } = t, i = { + groupValue: t.fieldValue, + view: r.viewApi + }; + return De(is, { elTag: "td", elClasses: [ + "fc-datagrid-cell", + "fc-resource-group" + ], elAttrs: { + role: "gridcell", + rowSpan: t.rowSpan + }, renderProps: i, generatorName: "resourceGroupLabelContent", customGenerator: n.cellContent, defaultGenerator: pCt, classNameGenerator: n.cellClassNames, didMount: n.cellDidMount, willUnmount: n.cellWillUnmount }, (a) => De( + "div", + { className: "fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid" }, + De(a, { elTag: "div", elClasses: ["fc-datagrid-cell-cushion", "fc-sticky"] }) + )); + } +} +function pCt(e) { + return e.groupValue || De(Di, null, " "); +} +class zIe extends Vn { + render() { + let { props: t } = this, { resource: r, rowSpans: n, depth: i } = t, a = BIe(r); + return De("tr", { role: "row" }, t.colSpecs.map((o, l) => { + let u = n[l]; + if (u === 0) + return null; + u == null && (u = 1); + let d = o.field ? a[o.field] : r.title || RIe(r.id); + return u > 1 ? De(fCt, { key: l, colSpec: o, fieldValue: d, rowSpan: u }) : De(uCt, { key: l, colSpec: o, resource: r, fieldValue: d, depth: i, hasChildren: t.hasChildren, isExpanded: t.isExpanded, innerHeight: t.innerHeight }); + })); + } +} +zIe.addPropsEquality({ + rowSpans: _d +}); +class HIe extends Vn { + constructor() { + super(...arguments), this.innerInnerRef = Ga(), this.onExpanderClick = () => { + let { props: t } = this; + this.context.dispatch({ + type: "SET_RESOURCE_ENTITY_EXPANDED", + id: t.id, + isExpanded: !t.isExpanded + }); + }; + } + render() { + let { props: t, context: r } = this, n = { groupValue: t.group.value, view: r.viewApi }, i = t.group.spec; + return De( + "tr", + { role: "row" }, + De(is, { elTag: "th", elClasses: [ + "fc-datagrid-cell", + "fc-resource-group", + r.theme.getClass("tableCellShaded") + ], elAttrs: { + // ARIA TODO: not really a columnheader + // extremely tedious to make this aria-compliant, + // to assign multiple headers to each cell + // https://www.w3.org/WAI/tutorials/tables/multi-level/ + role: "columnheader", + scope: "colgroup", + colSpan: t.spreadsheetColCnt + }, renderProps: n, generatorName: "resourceGroupLabelContent", customGenerator: i.labelContent, defaultGenerator: gCt, classNameGenerator: i.labelClassNames, didMount: i.labelDidMount, willUnmount: i.labelWillUnmount }, (a) => De( + "div", + { className: "fc-datagrid-cell-frame", style: { height: t.innerHeight } }, + De( + "div", + { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner", ref: this.innerInnerRef }, + De(VIe, { depth: 0, hasChildren: !0, isExpanded: t.isExpanded, onExpanderClick: this.onExpanderClick }), + De(a, { elTag: "span", elClasses: ["fc-datagrid-cell-main"] }) + ) + )) + ); + } +} +HIe.addPropsEquality({ + group: yEt +}); +function gCt(e) { + return e.groupValue || De(Di, null, " "); +} +const vCt = 20; +class mCt extends Vn { + constructor() { + super(...arguments), this.resizerElRefs = new vc(this._handleColResizerEl.bind(this)), this.colDraggings = {}; + } + render() { + let { colSpecs: t, superHeaderRendering: r, rowInnerHeights: n } = this.props, i = { view: this.context.viewApi }, a = []; + if (n = n.slice(), r) { + let l = n.shift(); + a.push(De( + "tr", + { key: "row-super", role: "row" }, + De(is, { elTag: "th", elClasses: [ + "fc-datagrid-cell", + "fc-datagrid-cell-super" + ], elAttrs: { + role: "columnheader", + scope: "colgroup", + colSpan: t.length + }, renderProps: i, generatorName: "resourceAreaHeaderContent", customGenerator: r.headerContent, defaultGenerator: r.headerDefault, classNameGenerator: r.headerClassNames, didMount: r.headerDidMount, willUnmount: r.headerWillUnmount }, (u) => De( + "div", + { className: "fc-datagrid-cell-frame", style: { height: l } }, + De(u, { elTag: "div", elClasses: ["fc-datagrid-cell-cushion", "fc-scrollgrid-sync-inner"] }) + )) + )); + } + let o = n.shift(); + return a.push(De("tr", { key: "row", role: "row" }, t.map((l, u) => { + let d = u === t.length - 1; + return De(is, { key: u, elTag: "th", elClasses: ["fc-datagrid-cell"], elAttrs: { role: "columnheader" }, renderProps: i, generatorName: "resourceAreaHeaderContent", customGenerator: l.headerContent, defaultGenerator: l.headerDefault, classNameGenerator: l.headerClassNames, didMount: l.headerDidMount, willUnmount: l.headerWillUnmount }, (f) => De( + "div", + { className: "fc-datagrid-cell-frame", style: { height: o } }, + De( + "div", + { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner" }, + l.isMain && De( + "span", + { className: "fc-datagrid-expander fc-datagrid-expander-placeholder" }, + De("span", { className: "fc-icon" }) + ), + De(f, { elTag: "span", elClasses: ["fc-datagrid-cell-main"] }) + ), + !d && De("div", { className: "fc-datagrid-cell-resizer", ref: this.resizerElRefs.createRef(u) }) + )); + }))), De(Di, null, a); + } + _handleColResizerEl(t, r) { + let { colDraggings: n } = this; + if (t) { + let i = this.initColResizing(t, parseInt(r, 10)); + i && (n[r] = i); + } else { + let i = n[r]; + i && (i.destroy(), delete n[r]); + } + } + initColResizing(t, r) { + let { pluginHooks: n, isRtl: i } = this.context, { onColWidthChange: a } = this.props, o = n.elementDraggingImpl; + if (o) { + let l = new o(t), u, d; + return l.emitter.on("dragstart", () => { + d = jE(ql(t, "tr"), "th").map((g) => g.getBoundingClientRect().width), u = d[r]; + }), l.emitter.on("dragmove", (f) => { + d[r] = Math.max(u + f.deltaX * (i ? -1 : 1), vCt), a && a(d.slice()); + }), l.setAutoScrollEnabled(!1), l; + } + return null; + } +} +class yCt extends Vn { + constructor() { + super(...arguments), this.refineRenderProps = d0(aEt), this.handleHeightChange = (t, r) => { + this.props.onHeightChange && this.props.onHeightChange( + // would want to use own
        ref, but not guaranteed to be ready when this fires + ql(t, "tr"), + r + ); + }; + } + render() { + let { props: t, context: r } = this, { options: n } = r, i = this.refineRenderProps({ resource: t.resource, context: r }); + return De( + "tr", + { ref: t.elRef }, + De(is, { elTag: "td", elClasses: [ + "fc-timeline-lane", + "fc-resource" + ], elAttrs: { + "data-resource-id": t.resource.id + }, renderProps: i, generatorName: "resourceLaneContent", customGenerator: n.resourceLaneContent, classNameGenerator: n.resourceLaneClassNames, didMount: n.resourceLaneDidMount, willUnmount: n.resourceLaneWillUnmount }, (a) => De( + "div", + { className: "fc-timeline-lane-frame", style: { height: t.innerHeight } }, + De(a, { elTag: "div", elClasses: ["fc-timeline-lane-misc"] }), + De(G7, { dateProfile: t.dateProfile, tDateProfile: t.tDateProfile, nowDate: t.nowDate, todayRange: t.todayRange, nextDayThreshold: t.nextDayThreshold, businessHours: t.businessHours, eventStore: t.eventStore, eventUiBases: t.eventUiBases, dateSelection: t.dateSelection, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, timelineCoords: t.timelineCoords, onHeightChange: this.handleHeightChange, resourceId: t.resource.id }) + )) + ); + } +} +class _Ct extends Vn { + render() { + let { props: t, context: r } = this, { renderHooks: n } = t, i = { + groupValue: t.groupValue, + view: r.viewApi + }; + return De( + "tr", + { ref: t.elRef }, + De(is, { elTag: "td", elRef: t.elRef, elClasses: [ + "fc-timeline-lane", + "fc-resource-group", + r.theme.getClass("tableCellShaded") + ], renderProps: i, generatorName: "resourceGroupLaneContent", customGenerator: n.laneContent, classNameGenerator: n.laneClassNames, didMount: n.laneDidMount, willUnmount: n.laneWillUnmount }, (a) => De(a, { elTag: "div", elStyle: { height: t.innerHeight } })) + ); + } +} +class SCt extends Vn { + render() { + let { props: t, context: r } = this, { rowElRefs: n, innerHeights: i } = t; + return De("tbody", null, t.rowNodes.map((a, o) => { + if (a.group) + return De(_Ct, { key: a.id, elRef: n.createRef(a.id), groupValue: a.group.value, renderHooks: a.group.spec, innerHeight: i[o] || "" }); + if (a.resource) { + let l = a.resource; + return De(yCt, Object.assign({ key: a.id, elRef: n.createRef(a.id) }, t.splitProps[l.id], { resource: l, dateProfile: t.dateProfile, tDateProfile: t.tDateProfile, nowDate: t.nowDate, todayRange: t.todayRange, nextDayThreshold: r.options.nextDayThreshold, businessHours: l.businessHours || t.fallbackBusinessHours, innerHeight: i[o] || "", timelineCoords: t.slatCoords, onHeightChange: t.onRowHeightChange })); + } + return null; + })); + } +} +class bCt extends Vn { + constructor() { + super(...arguments), this.rootElRef = Ga(), this.rowElRefs = new vc(); + } + render() { + let { props: t, context: r } = this; + return De( + "table", + { ref: this.rootElRef, "aria-hidden": !0, className: "fc-scrollgrid-sync-table " + r.theme.getClass("table"), style: { + minWidth: t.tableMinWidth, + width: t.clientWidth, + height: t.minHeight + } }, + De(SCt, { rowElRefs: this.rowElRefs, rowNodes: t.rowNodes, dateProfile: t.dateProfile, tDateProfile: t.tDateProfile, nowDate: t.nowDate, todayRange: t.todayRange, splitProps: t.splitProps, fallbackBusinessHours: t.fallbackBusinessHours, slatCoords: t.slatCoords, innerHeights: t.innerHeights, onRowHeightChange: t.onRowHeightChange }) + ); + } + componentDidMount() { + this.updateCoords(); + } + componentDidUpdate() { + this.updateCoords(); + } + componentWillUnmount() { + this.props.onRowCoords && this.props.onRowCoords(null); + } + updateCoords() { + let { props: t } = this; + t.onRowCoords && t.clientWidth !== null && this.props.onRowCoords(new ey(this.rootElRef.current, ECt(this.rowElRefs.currentMap, t.rowNodes), !1, !0)); + } +} +function ECt(e, t) { + return t.map((r) => e[r.id]); +} +class CCt extends tc { + constructor() { + super(...arguments), this.computeHasResourceBusinessHours = Gr(TCt), this.resourceSplitter = new DIe(), this.bgSlicer = new wIe(), this.slatsRef = Ga(), this.state = { + slatCoords: null + }, this.handleEl = (t) => { + t ? this.context.registerInteractiveComponent(this, { el: t }) : this.context.unregisterInteractiveComponent(this); + }, this.handleSlatCoords = (t) => { + this.setState({ slatCoords: t }), this.props.onSlatCoords && this.props.onSlatCoords(t); + }, this.handleRowCoords = (t) => { + this.rowCoords = t, this.props.onRowCoords && this.props.onRowCoords(t); + }; + } + render() { + let { props: t, state: r, context: n } = this, { dateProfile: i, tDateProfile: a } = t, o = T0(a.slotDuration).unit, l = this.computeHasResourceBusinessHours(t.rowNodes), u = this.resourceSplitter.splitProps(t), d = u[""], f = this.bgSlicer.sliceProps( + d, + i, + a.isTimeScale ? null : t.nextDayThreshold, + n, + // wish we didn't need to pass in the rest of these args... + i, + n.dateProfileGenerator, + a, + n.dateEnv + ), g = r.slatCoords && r.slatCoords.dateProfile === t.dateProfile ? r.slatCoords : null; + return De( + "div", + { ref: this.handleEl, className: [ + "fc-timeline-body", + t.expandRows ? "fc-timeline-body-expandrows" : "" + ].join(" "), style: { minWidth: t.tableMinWidth } }, + De(Bp, { unit: o }, (v, y) => De( + Di, + null, + De(EIe, { ref: this.slatsRef, dateProfile: i, tDateProfile: a, nowDate: v, todayRange: y, clientWidth: t.clientWidth, tableColGroupNode: t.tableColGroupNode, tableMinWidth: t.tableMinWidth, onCoords: this.handleSlatCoords, onScrollLeftRequest: t.onScrollLeftRequest }), + De(TIe, { + businessHourSegs: l ? null : f.businessHourSegs, + bgEventSegs: f.bgEventSegs, + timelineCoords: g, + // empty array will result in unnecessary rerenders? + eventResizeSegs: f.eventResize ? f.eventResize.segs : [], + dateSelectionSegs: f.dateSelectionSegs, + nowDate: v, + todayRange: y + }), + De(bCt, { rowNodes: t.rowNodes, dateProfile: i, tDateProfile: t.tDateProfile, nowDate: v, todayRange: y, splitProps: u, fallbackBusinessHours: l ? t.businessHours : null, clientWidth: t.clientWidth, minHeight: t.expandRows ? t.clientHeight : "", tableMinWidth: t.tableMinWidth, innerHeights: t.rowInnerHeights, slatCoords: g, onRowCoords: this.handleRowCoords, onRowHeightChange: t.onRowHeightChange }), + n.options.nowIndicator && g && g.isDateInRange(v) && De( + "div", + { className: "fc-timeline-now-indicator-container" }, + De(UI, { elClasses: ["fc-timeline-now-indicator-line"], elStyle: H7(g.dateToCoord(v), n.isRtl), isAxis: !1, date: v }) + ) + )) + ); + } + // Hit System + // ------------------------------------------------------------------------------------------ + queryHit(t, r) { + let n = this.rowCoords, i = n.topToIndex(r); + if (i != null) { + let a = this.props.rowNodes[i].resource; + if (a) { + let o = this.slatsRef.current.positionToHit(t); + if (o) + return { + dateProfile: this.props.dateProfile, + dateSpan: { + range: o.dateSpan.range, + allDay: o.dateSpan.allDay, + resourceId: a.id + }, + rect: { + left: o.left, + right: o.right, + top: n.tops[i], + bottom: n.bottoms[i] + }, + dayEl: o.dayEl, + layer: 0 + }; + } + } + return null; + } +} +function TCt(e) { + for (let t of e) { + let r = t.resource; + if (r && r.businessHours) + return !0; + } + return !1; +} +const Yde = 30; +class wCt extends Vn { + constructor() { + super(...arguments), this.scrollGridRef = Ga(), this.timeBodyScrollerElRef = Ga(), this.spreadsheetHeaderChunkElRef = Ga(), this.rootElRef = Ga(), this.ensureScrollGridResizeId = 0, this.state = { + resourceAreaWidthOverride: null + }, this.ensureScrollGridResize = () => { + this.ensureScrollGridResizeId && clearTimeout(this.ensureScrollGridResizeId), this.ensureScrollGridResizeId = setTimeout(() => { + this.scrollGridRef.current.handleSizing(!1); + }, If.SCROLLGRID_RESIZE_INTERVAL + 1); + }; + } + render() { + let { props: t, state: r, context: n } = this, { options: i } = n, a = !t.forPrint && tI(i), o = !t.forPrint && UB(i), l = [ + { + type: "header", + key: "header", + syncRowHeights: !0, + isSticky: a, + chunks: [ + { + key: "datagrid", + elRef: this.spreadsheetHeaderChunkElRef, + // TODO: allow the content to specify this. have general-purpose 'content' with obj with keys + tableClassName: "fc-datagrid-header", + rowContent: t.spreadsheetHeaderRows + }, + { + key: "divider", + outerContent: De("td", { role: "presentation", className: "fc-resource-timeline-divider " + n.theme.getClass("tableCellShaded") }) + }, + { + key: "timeline", + content: t.timeHeaderContent + } + ] + }, + { + type: "body", + key: "body", + syncRowHeights: !0, + liquid: !0, + expandRows: !!i.expandRows, + chunks: [ + { + key: "datagrid", + tableClassName: "fc-datagrid-body", + rowContent: t.spreadsheetBodyRows + }, + { + key: "divider", + outerContent: De("td", { role: "presentation", className: "fc-resource-timeline-divider " + n.theme.getClass("tableCellShaded") }) + }, + { + key: "timeline", + scrollerElRef: this.timeBodyScrollerElRef, + content: t.timeBodyContent + } + ] + } + ]; + o && l.push({ + type: "footer", + key: "footer", + isSticky: !0, + chunks: [ + { + key: "datagrid", + content: eI + }, + { + key: "divider", + outerContent: De("td", { role: "presentation", className: "fc-resource-timeline-divider " + n.theme.getClass("tableCellShaded") }) + }, + { + key: "timeline", + content: eI + } + ] + }); + let u = r.resourceAreaWidthOverride != null ? r.resourceAreaWidthOverride : i.resourceAreaWidth; + return De(z7, { ref: this.scrollGridRef, elRef: this.rootElRef, liquid: !t.isHeightAuto && !t.forPrint, forPrint: t.forPrint, collapsibleWidth: !1, colGroups: [ + { cols: t.spreadsheetCols, width: u }, + { cols: [] }, + { cols: t.timeCols } + ], sections: l }); + } + forceTimeScroll(t) { + this.scrollGridRef.current.forceScrollLeft(2, t); + } + forceResourceScroll(t) { + this.scrollGridRef.current.forceScrollTop(1, t); + } + getResourceScroll() { + return this.timeBodyScrollerElRef.current.scrollTop; + } + // Resource Area Resizing + // ------------------------------------------------------------------------------------------ + // NOTE: a callback Ref for the resizer was firing multiple times with same elements (Preact) + // that's why we use spreadsheetResizerElRef instead + componentDidMount() { + this.initSpreadsheetResizing(); + } + componentWillUnmount() { + this.destroySpreadsheetResizing(); + } + initSpreadsheetResizing() { + let { isRtl: t, pluginHooks: r } = this.context, n = r.elementDraggingImpl, i = this.spreadsheetHeaderChunkElRef.current; + if (n) { + let a = this.rootElRef.current, o = this.spreadsheetResizerDragging = new n(a, ".fc-resource-timeline-divider"), l, u; + o.emitter.on("dragstart", () => { + l = i.getBoundingClientRect().width, u = a.getBoundingClientRect().width; + }), o.emitter.on("dragmove", (d) => { + let f = l + d.deltaX * (t ? -1 : 1); + f = Math.max(f, Yde), f = Math.min(f, u - Yde), this.setState({ + resourceAreaWidthOverride: f + }, this.ensureScrollGridResize); + }), o.setAutoScrollEnabled(!1); + } + } + destroySpreadsheetResizing() { + this.spreadsheetResizerDragging && this.spreadsheetResizerDragging.destroy(); + } +} +class WIe extends Vn { + constructor(t, r) { + super(t, r), this.processColOptions = Gr(RCt), this.buildTimelineDateProfile = Gr(_Ie), this.hasNesting = Gr(ACt), this.buildRowNodes = Gr(NIe), this.layoutRef = Ga(), this.rowNodes = [], this.renderedRowNodes = [], this.buildRowIndex = Gr(ICt), this.handleSlatCoords = (n) => { + this.setState({ slatCoords: n }); + }, this.handleRowCoords = (n) => { + this.rowCoords = n, this.scrollResponder.update(!1); + }, this.handleMaxCushionWidth = (n) => { + this.setState({ + slotCushionMaxWidth: Math.ceil(n) + // for less rerendering TODO: DRY + }); + }, this.handleScrollLeftRequest = (n) => { + this.layoutRef.current.forceTimeScroll(n); + }, this.handleScrollRequest = (n) => { + let { rowCoords: i } = this, a = this.layoutRef.current, o = n.rowId || n.resourceId; + if (i) { + if (o) { + let u = this.buildRowIndex(this.renderedRowNodes)[o]; + if (u != null) { + let d = n.fromBottom != null ? i.bottoms[u] - n.fromBottom : ( + // pixels from bottom edge + i.tops[u] + ); + a.forceResourceScroll(d); + } + } + return !0; + } + return null; + }, this.handleColWidthChange = (n) => { + this.setState({ + spreadsheetColWidths: n + }); + }, this.state = { + resourceAreaWidth: r.options.resourceAreaWidth, + spreadsheetColWidths: [] + }; + } + render() { + let { props: t, state: r, context: n } = this, { options: i, viewSpec: a } = n, { superHeaderRendering: o, groupSpecs: l, orderSpecs: u, isVGrouping: d, colSpecs: f } = this.processColOptions(n.options), g = this.buildTimelineDateProfile(t.dateProfile, n.dateEnv, i, n.dateProfileGenerator), v = this.rowNodes = this.buildRowNodes(t.resourceStore, l, u, d, t.resourceEntityExpansions, i.resourcesInitiallyExpanded), { slotMinWidth: y } = i, C = xIe(g, y || this.computeFallbackSlotMinWidth(g)); + return De( + w0, + { elClasses: [ + "fc-resource-timeline", + !this.hasNesting(v) && "fc-resource-timeline-flat", + "fc-timeline", + i.eventOverlap === !1 ? "fc-timeline-overlap-disabled" : "fc-timeline-overlap-enabled" + ], viewSpec: a }, + De(wCt, { ref: this.layoutRef, forPrint: t.forPrint, isHeightAuto: t.isHeightAuto, spreadsheetCols: xCt(f, r.spreadsheetColWidths, ""), spreadsheetHeaderRows: (A) => De( + mCt, + { superHeaderRendering: o, colSpecs: f, onColWidthChange: this.handleColWidthChange, rowInnerHeights: A.rowSyncHeights } + ), spreadsheetBodyRows: (A) => De(Di, null, this.renderSpreadsheetRows(v, f, A.rowSyncHeights)), timeCols: C, timeHeaderContent: (A) => De(bIe, { clientWidth: A.clientWidth, clientHeight: A.clientHeight, tableMinWidth: A.tableMinWidth, tableColGroupNode: A.tableColGroupNode, dateProfile: t.dateProfile, tDateProfile: g, slatCoords: r.slatCoords, rowInnerHeights: A.rowSyncHeights, onMaxCushionWidth: y ? null : this.handleMaxCushionWidth }), timeBodyContent: (A) => De(CCt, { dateProfile: t.dateProfile, clientWidth: A.clientWidth, clientHeight: A.clientHeight, tableMinWidth: A.tableMinWidth, tableColGroupNode: A.tableColGroupNode, expandRows: A.expandRows, tDateProfile: g, rowNodes: v, businessHours: t.businessHours, dateSelection: t.dateSelection, eventStore: t.eventStore, eventUiBases: t.eventUiBases, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, resourceStore: t.resourceStore, nextDayThreshold: n.options.nextDayThreshold, rowInnerHeights: A.rowSyncHeights, onSlatCoords: this.handleSlatCoords, onRowCoords: this.handleRowCoords, onScrollLeftRequest: this.handleScrollLeftRequest, onRowHeightChange: A.reportRowHeightChange }) }) + ); + } + renderSpreadsheetRows(t, r, n) { + return t.map((i, a) => i.group ? De(HIe, { key: i.id, id: i.id, spreadsheetColCnt: r.length, isExpanded: i.isExpanded, group: i.group, innerHeight: n[a] || "" }) : i.resource ? De(zIe, { key: i.id, colSpecs: r, rowSpans: i.rowSpans, depth: i.depth, isExpanded: i.isExpanded, hasChildren: i.hasChildren, resource: i.resource, innerHeight: n[a] || "" }) : null); + } + componentDidMount() { + this.renderedRowNodes = this.rowNodes, this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest); + } + getSnapshotBeforeUpdate() { + return this.props.forPrint ? {} : { resourceScroll: this.queryResourceScroll() }; + } + componentDidUpdate(t, r, n) { + this.renderedRowNodes = this.rowNodes, this.scrollResponder.update(t.dateProfile !== this.props.dateProfile), n.resourceScroll && this.handleScrollRequest(n.resourceScroll); + } + componentWillUnmount() { + this.scrollResponder.detach(); + } + computeFallbackSlotMinWidth(t) { + return Math.max(30, (this.state.slotCushionMaxWidth || 0) / t.slotsPerLabel); + } + queryResourceScroll() { + let { rowCoords: t, renderedRowNodes: r } = this; + if (t) { + let n = this.layoutRef.current, i = t.bottoms, a = n.getResourceScroll(), o = {}; + for (let l = 0; l < i.length; l += 1) { + let u = r[l], d = i[l] - a; + if (d > 0) { + o.rowId = u.id, o.fromBottom = d; + break; + } + } + return o; + } + return null; + } +} +WIe.addStateEquality({ + spreadsheetColWidths: _d +}); +function ICt(e) { + let t = {}; + for (let r = 0; r < e.length; r += 1) + t[e[r].id] = r; + return t; +} +function xCt(e, t, r = "") { + return e.map((n, i) => ({ + className: n.isMain ? "fc-main-col" : "", + width: t[i] || n.width || r + })); +} +function ACt(e) { + for (let t of e) + if (t.group || t.resource && t.hasChildren) + return !0; + return !1; +} +function RCt(e) { + let t = e.resourceAreaColumns || [], r = null; + t.length ? e.resourceAreaHeaderContent && (r = { + headerClassNames: e.resourceAreaHeaderClassNames, + headerContent: e.resourceAreaHeaderContent, + headerDidMount: e.resourceAreaHeaderDidMount, + headerWillUnmount: e.resourceAreaHeaderWillUnmount + }) : t.push({ + headerClassNames: e.resourceAreaHeaderClassNames, + headerContent: e.resourceAreaHeaderContent, + headerDefault: () => "Resources", + headerDidMount: e.resourceAreaHeaderDidMount, + headerWillUnmount: e.resourceAreaHeaderWillUnmount + }); + let n = [], i = [], a = [], o = !1; + for (let f of t) + f.group ? i.push(Object.assign(Object.assign({}, f), { cellClassNames: f.cellClassNames || e.resourceGroupLabelClassNames, cellContent: f.cellContent || e.resourceGroupLabelContent, cellDidMount: f.cellDidMount || e.resourceGroupLabelDidMount, cellWillUnmount: f.cellWillUnmount || e.resourceGroupLaneWillUnmount })) : n.push(f); + let l = n[0]; + if (l.isMain = !0, l.cellClassNames = l.cellClassNames || e.resourceLabelClassNames, l.cellContent = l.cellContent || e.resourceLabelContent, l.cellDidMount = l.cellDidMount || e.resourceLabelDidMount, l.cellWillUnmount = l.cellWillUnmount || e.resourceLabelWillUnmount, i.length) + a = i, o = !0; + else { + let f = e.resourceGroupField; + f && a.push({ + field: f, + labelClassNames: e.resourceGroupLabelClassNames, + labelContent: e.resourceGroupLabelContent, + labelDidMount: e.resourceGroupLabelDidMount, + labelWillUnmount: e.resourceGroupLabelWillUnmount, + laneClassNames: e.resourceGroupLaneClassNames, + laneContent: e.resourceGroupLaneContent, + laneDidMount: e.resourceGroupLaneDidMount, + laneWillUnmount: e.resourceGroupLaneWillUnmount + }); + } + let u = e.resourceOrder || OIe, d = []; + for (let f of u) { + let g = !1; + for (let v of a) + if (v.field === f.field) { + v.order = f.order, g = !0; + break; + } + g || d.push(f); + } + return { + superHeaderRendering: r, + isVGrouping: o, + groupSpecs: a, + colSpecs: i.concat(n), + orderSpecs: d + }; +} +var DCt = ".fc .fc-resource-timeline-divider{cursor:col-resize;width:3px}.fc .fc-resource-group{font-weight:inherit;text-align:inherit}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:var(--fc-neutral-bg-color)}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-timeline-body-expandrows td.fc-timeline-lane{position:relative}.fc-timeline-body-expandrows .fc-timeline-lane-frame{position:static}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{align-items:center;display:flex;justify-content:flex-start;position:relative}.fc .fc-datagrid-cell-resizer{bottom:0;cursor:col-resize;position:absolute;top:0;width:5px;z-index:1}.fc .fc-datagrid-cell-cushion{overflow:hidden;padding:8px;white-space:nowrap}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}"; +P0(DCt); +var Xde = rc({ + name: "@fullcalendar/resource-timeline", + premiumReleaseDate: "2024-02-20", + deps: [ + eO, + $Ie, + tEt + ], + initialView: "resourceTimelineDay", + views: { + resourceTimeline: { + type: "timeline", + component: WIe, + needsResourceData: !0, + resourceAreaWidth: "30%", + resourcesInitiallyExpanded: !0, + eventResizableFromStart: !0 + // TODO: not DRY with this same setting in the main timeline config + }, + resourceTimelineDay: { + type: "resourceTimeline", + duration: { days: 1 } + }, + resourceTimelineWeek: { + type: "resourceTimeline", + duration: { weeks: 1 } + }, + resourceTimelineMonth: { + type: "resourceTimeline", + duration: { months: 1 } + }, + resourceTimelineYear: { + type: "resourceTimeline", + duration: { years: 1 } + } + } +}); +class OCt extends tc { + constructor() { + super(...arguments), this.headerElRef = Ga(); + } + renderSimpleLayout(t, r) { + let { props: n, context: i } = this, a = [], o = tI(i.options); + return t && a.push({ + type: "header", + key: "header", + isSticky: o, + chunk: { + elRef: this.headerElRef, + tableClassName: "fc-col-header", + rowContent: t + } + }), a.push({ + type: "body", + key: "body", + liquid: !0, + chunk: { content: r } + }), De( + w0, + { elClasses: ["fc-daygrid"], viewSpec: i.viewSpec }, + De(N7, { liquid: !n.isHeightAuto && !n.forPrint, collapsibleWidth: n.forPrint, cols: [], sections: a }) + ); + } + renderHScrollLayout(t, r, n, i) { + let a = this.context.pluginHooks.scrollGridImpl; + if (!a) + throw new Error("No ScrollGrid implementation"); + let { props: o, context: l } = this, u = !o.forPrint && tI(l.options), d = !o.forPrint && UB(l.options), f = []; + return t && f.push({ + type: "header", + key: "header", + isSticky: u, + chunks: [{ + key: "main", + elRef: this.headerElRef, + tableClassName: "fc-col-header", + rowContent: t + }] + }), f.push({ + type: "body", + key: "body", + liquid: !0, + chunks: [{ + key: "main", + content: r + }] + }), d && f.push({ + type: "footer", + key: "footer", + isSticky: !0, + chunks: [{ + key: "main", + content: eI + }] + }), De( + w0, + { elClasses: ["fc-daygrid"], viewSpec: l.viewSpec }, + De(a, { liquid: !o.isHeightAuto && !o.forPrint, forPrint: o.forPrint, collapsibleWidth: o.forPrint, colGroups: [{ cols: [{ span: n, minWidth: i }] }], sections: f }) + ); + } +} +function tN(e, t) { + let r = []; + for (let n = 0; n < t; n += 1) + r[n] = []; + for (let n of e) + r[n.row].push(n); + return r; +} +function rN(e, t) { + let r = []; + for (let n = 0; n < t; n += 1) + r[n] = []; + for (let n of e) + r[n.firstCol].push(n); + return r; +} +function Kde(e, t) { + let r = []; + if (e) { + for (let n = 0; n < t; n += 1) + r[n] = { + affectedInstances: e.affectedInstances, + isEvent: e.isEvent, + segs: [] + }; + for (let n of e.segs) + r[n.row].segs.push(n); + } else + for (let n = 0; n < t; n += 1) + r[n] = null; + return r; +} +const GIe = co({ + hour: "numeric", + minute: "2-digit", + omitZeroMinute: !0, + meridiem: "narrow" +}); +function YIe(e) { + let { display: t } = e.eventRange.ui; + return t === "list-item" || t === "auto" && !e.eventRange.def.allDay && e.firstCol === e.lastCol && // can't be multi-day + e.isStart && // " + e.isEnd; +} +class XIe extends Vn { + render() { + let { props: t } = this; + return De(L7, Object.assign({}, t, { elClasses: ["fc-daygrid-event", "fc-daygrid-block-event", "fc-h-event"], defaultTimeFormat: GIe, defaultDisplayEventEnd: t.defaultDisplayEventEnd, disableResizing: !t.seg.eventRange.def.allDay })); + } +} +class KIe extends Vn { + render() { + let { props: t, context: r } = this, { options: n } = r, { seg: i } = t, a = n.eventTimeFormat || GIe, o = Y1(i, a, r, !0, t.defaultDisplayEventEnd); + return De(jB, Object.assign({}, t, { elTag: "a", elClasses: ["fc-daygrid-event", "fc-daygrid-dot-event"], elAttrs: C7(t.seg, r), defaultGenerator: MCt, timeText: o, isResizing: !1, isDateSelecting: !1 })); + } +} +function MCt(e) { + return De( + Di, + null, + De("div", { className: "fc-daygrid-event-dot", style: { borderColor: e.borderColor || e.backgroundColor } }), + e.timeText && De("div", { className: "fc-event-time" }, e.timeText), + De("div", { className: "fc-event-title" }, e.event.title || De(Di, null, " ")) + ); +} +class kCt extends Vn { + constructor() { + super(...arguments), this.compileSegs = Gr(PCt); + } + render() { + let { props: t } = this, { allSegs: r, invisibleSegs: n } = this.compileSegs(t.singlePlacements); + return De($7, { elClasses: ["fc-daygrid-more-link"], dateProfile: t.dateProfile, todayRange: t.todayRange, allDayDate: t.allDayDate, moreCnt: t.moreCnt, allSegs: r, hiddenSegs: n, alignmentElRef: t.alignmentElRef, alignGridTop: t.alignGridTop, extraDateSpan: t.extraDateSpan, popoverContent: () => { + let i = (t.eventDrag ? t.eventDrag.affectedInstances : null) || (t.eventResize ? t.eventResize.affectedInstances : null) || {}; + return De(Di, null, r.map((a) => { + let o = a.eventRange.instance.instanceId; + return De("div", { className: "fc-daygrid-event-harness", key: o, style: { + visibility: i[o] ? "hidden" : "" + } }, YIe(a) ? De(KIe, Object.assign({ seg: a, isDragging: !1, isSelected: o === t.eventSelection, defaultDisplayEventEnd: !1 }, bf(a, t.todayRange))) : De(XIe, Object.assign({ seg: a, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: o === t.eventSelection, defaultDisplayEventEnd: !1 }, bf(a, t.todayRange)))); + })); + } }); + } +} +function PCt(e) { + let t = [], r = []; + for (let n of e) + t.push(n.seg), n.isVisible || r.push(n.seg); + return { allSegs: t, invisibleSegs: r }; +} +const NCt = co({ week: "narrow" }); +class LCt extends tc { + constructor() { + super(...arguments), this.rootElRef = Ga(), this.state = { + dayNumberId: jm() + }, this.handleRootEl = (t) => { + wf(this.rootElRef, t), wf(this.props.elRef, t); + }; + } + render() { + let { context: t, props: r, state: n, rootElRef: i } = this, { options: a, dateEnv: o } = t, { date: l, dateProfile: u } = r; + const d = r.showDayNumber && BCt(l, u.currentRange, o); + return De(F7, { elTag: "td", elRef: this.handleRootEl, elClasses: [ + "fc-daygrid-day", + ...r.extraClassNames || [] + ], elAttrs: Object.assign(Object.assign(Object.assign({}, r.extraDataAttrs), r.showDayNumber ? { "aria-labelledby": n.dayNumberId } : {}), { role: "gridcell" }), defaultGenerator: FCt, date: l, dateProfile: u, todayRange: r.todayRange, showDayNumber: r.showDayNumber, isMonthStart: d, extraRenderProps: r.extraRenderProps }, (f, g) => De( + "div", + { ref: r.innerElRef, className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", style: { minHeight: r.minHeight } }, + r.showWeekNumber && De(oIe, { elTag: "a", elClasses: ["fc-daygrid-week-number"], elAttrs: TE(t, l, "week"), date: l, defaultFormat: NCt }), + !g.isDisabled && (r.showDayNumber || B7(a) || r.forceDayTop) ? De( + "div", + { className: "fc-daygrid-day-top" }, + De(f, { elTag: "a", elClasses: [ + "fc-daygrid-day-number", + d && "fc-daygrid-month-start" + ], elAttrs: Object.assign(Object.assign({}, TE(t, l)), { id: n.dayNumberId }) }) + ) : r.showDayNumber ? ( + // for creating correct amount of space (see issue #7162) + De( + "div", + { className: "fc-daygrid-day-top", style: { visibility: "hidden" } }, + De("a", { className: "fc-daygrid-day-number" }, " ") + ) + ) : void 0, + De( + "div", + { className: "fc-daygrid-day-events", ref: r.fgContentElRef }, + r.fgContent, + De( + "div", + { className: "fc-daygrid-day-bottom", style: { marginTop: r.moreMarginTop } }, + De(kCt, { allDayDate: l, singlePlacements: r.singlePlacements, moreCnt: r.moreCnt, alignmentElRef: i, alignGridTop: !r.showDayNumber, extraDateSpan: r.extraDateSpan, dateProfile: r.dateProfile, eventSelection: r.eventSelection, eventDrag: r.eventDrag, eventResize: r.eventResize, todayRange: r.todayRange }) + ) + ), + De("div", { className: "fc-daygrid-day-bg" }, r.bgContent) + )); + } +} +function FCt(e) { + return e.dayNumberText || De(Di, null, " "); +} +function BCt(e, t, r) { + const { start: n, end: i } = t, a = Jm(i, -1), o = r.getYear(n), l = r.getMonth(n), u = r.getYear(a), d = r.getMonth(a); + return !(o === u && l === d) && // first date in current view? + (e.valueOf() === n.valueOf() || // a month-start that's within the current range? + r.getDay(e) === 1 && e.valueOf() < i.valueOf()); +} +function ZIe(e) { + return e.eventRange.instance.instanceId + ":" + e.firstCol; +} +function qIe(e) { + return ZIe(e) + ":" + e.lastCol; +} +function UCt(e, t, r, n, i, a, o) { + let l = new VCt((_) => { + let E = e[_.index].eventRange.instance.instanceId + ":" + _.span.start + ":" + (_.span.end - 1); + return i[E] || 1; + }); + l.allowReslicing = !0, l.strictOrder = n, t === !0 || r === !0 ? (l.maxCoord = a, l.hiddenConsumes = !0) : typeof t == "number" ? l.maxStackCnt = t : typeof r == "number" && (l.maxStackCnt = r, l.hiddenConsumes = !0); + let u = [], d = []; + for (let _ = 0; _ < e.length; _ += 1) { + let E = e[_], I = qIe(E); + i[I] != null ? u.push({ + index: _, + span: { + start: E.firstCol, + end: E.lastCol + 1 + } + }) : d.push(E); + } + let f = l.addSegs(u), g = l.toRects(), { singleColPlacements: v, multiColPlacements: y, leftoverMargins: C } = jCt(g, e, o), A = [], S = []; + for (let _ of d) { + y[_.firstCol].push({ + seg: _, + isVisible: !1, + isAbsolute: !0, + absoluteTop: 0, + marginTop: 0 + }); + for (let E = _.firstCol; E <= _.lastCol; E += 1) + v[E].push({ + seg: Mw(_, E, E + 1, o), + isVisible: !1, + isAbsolute: !1, + absoluteTop: 0, + marginTop: 0 + }); + } + for (let _ = 0; _ < o.length; _ += 1) + A.push(0); + for (let _ of f) { + let E = e[_.index], I = _.span; + y[I.start].push({ + seg: Mw(E, I.start, I.end, o), + isVisible: !1, + isAbsolute: !0, + absoluteTop: 0, + marginTop: 0 + }); + for (let w = I.start; w < I.end; w += 1) + A[w] += 1, v[w].push({ + seg: Mw(E, w, w + 1, o), + isVisible: !1, + isAbsolute: !1, + absoluteTop: 0, + marginTop: 0 + }); + } + for (let _ = 0; _ < o.length; _ += 1) + S.push(C[_]); + return { singleColPlacements: v, multiColPlacements: y, moreCnts: A, moreMarginTops: S }; +} +function jCt(e, t, r) { + let n = $Ct(e, r.length), i = [], a = [], o = []; + for (let l = 0; l < r.length; l += 1) { + let u = n[l], d = [], f = 0, g = 0; + for (let y of u) { + let C = t[y.index]; + d.push({ + seg: Mw(C, l, l + 1, r), + isVisible: !0, + isAbsolute: !1, + absoluteTop: y.levelCoord, + marginTop: y.levelCoord - f + }), f = y.levelCoord + y.thickness; + } + let v = []; + f = 0, g = 0; + for (let y of u) { + let C = t[y.index], A = y.span.end - y.span.start > 1, S = y.span.start === l; + g += y.levelCoord - f, f = y.levelCoord + y.thickness, A ? (g += y.thickness, S && v.push({ + seg: Mw(C, y.span.start, y.span.end, r), + isVisible: !0, + isAbsolute: !0, + absoluteTop: y.levelCoord, + marginTop: 0 + })) : S && (v.push({ + seg: Mw(C, y.span.start, y.span.end, r), + isVisible: !0, + isAbsolute: !1, + absoluteTop: y.levelCoord, + marginTop: g + // claim the margin + }), g = 0); + } + i.push(d), a.push(v), o.push(g); + } + return { singleColPlacements: i, multiColPlacements: a, leftoverMargins: o }; +} +function $Ct(e, t) { + let r = []; + for (let n = 0; n < t; n += 1) + r.push([]); + for (let n of e) + for (let i = n.span.start; i < n.span.end; i += 1) + r[i].push(n); + return r; +} +function Mw(e, t, r, n) { + if (e.firstCol === t && e.lastCol === r - 1) + return e; + let i = e.eventRange, a = i.range, o = cv(a, { + start: n[t].date, + end: yl(n[r - 1].date, 1) + }); + return Object.assign(Object.assign({}, e), { firstCol: t, lastCol: r - 1, eventRange: { + def: i.def, + ui: Object.assign(Object.assign({}, i.ui), { durationEditable: !1 }), + instance: i.instance, + range: o + }, isStart: e.isStart && o.start.valueOf() === a.start.valueOf(), isEnd: e.isEnd && o.end.valueOf() === a.end.valueOf() }); +} +class VCt extends R7 { + constructor() { + super(...arguments), this.hiddenConsumes = !1, this.forceHidden = {}; + } + addSegs(t) { + const r = super.addSegs(t), { entriesByLevel: n } = this, i = (a) => !this.forceHidden[iE(a)]; + for (let a = 0; a < n.length; a += 1) + n[a] = n[a].filter(i); + return r; + } + handleInvalidInsertion(t, r, n) { + const { entriesByLevel: i, forceHidden: a } = this, { touchingEntry: o, touchingLevel: l, touchingLateral: u } = t; + if (this.hiddenConsumes && o) { + const d = iE(o); + if (!a[d]) + if (this.allowReslicing) { + const f = Object.assign(Object.assign({}, o), { span: D7(o.span, r.span) }), g = iE(f); + a[g] = !0, i[l][u] = f, n.push(f), this.splitEntry(o, r, n); + } else + a[d] = !0, n.push(o); + } + super.handleInvalidInsertion(t, r, n); + } +} +class JIe extends tc { + constructor() { + super(...arguments), this.cellElRefs = new vc(), this.frameElRefs = new vc(), this.fgElRefs = new vc(), this.segHarnessRefs = new vc(), this.rootElRef = Ga(), this.state = { + framePositions: null, + maxContentHeight: null, + segHeights: {} + }, this.handleResize = (t) => { + t && this.updateSizing(!0); + }; + } + render() { + let { props: t, state: r, context: n } = this, { options: i } = n, a = t.cells.length, o = rN(t.businessHourSegs, a), l = rN(t.bgEventSegs, a), u = rN(this.getHighlightSegs(), a), d = rN(this.getMirrorSegs(), a), { singleColPlacements: f, multiColPlacements: g, moreCnts: v, moreMarginTops: y } = UCt(BB(t.fgEventSegs, i.eventOrder), t.dayMaxEvents, t.dayMaxEventRows, i.eventOrderStrict, r.segHeights, r.maxContentHeight, t.cells), C = ( + // TODO: messy way to compute this + t.eventDrag && t.eventDrag.affectedInstances || t.eventResize && t.eventResize.affectedInstances || {} + ); + return De( + "tr", + { ref: this.rootElRef, role: "row" }, + t.renderIntro && t.renderIntro(), + t.cells.map((A, S) => { + let _ = this.renderFgSegs(S, t.forPrint ? f[S] : g[S], t.todayRange, C), E = this.renderFgSegs(S, zCt(d[S], g), t.todayRange, {}, !!t.eventDrag, !!t.eventResize, !1); + return De(LCt, { key: A.key, elRef: this.cellElRefs.createRef(A.key), innerElRef: this.frameElRefs.createRef(A.key), dateProfile: t.dateProfile, date: A.date, showDayNumber: t.showDayNumbers, showWeekNumber: t.showWeekNumbers && S === 0, forceDayTop: t.showWeekNumbers, todayRange: t.todayRange, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, extraRenderProps: A.extraRenderProps, extraDataAttrs: A.extraDataAttrs, extraClassNames: A.extraClassNames, extraDateSpan: A.extraDateSpan, moreCnt: v[S], moreMarginTop: y[S], singlePlacements: f[S], fgContentElRef: this.fgElRefs.createRef(A.key), fgContent: ( + // Fragment scopes the keys + De( + Di, + null, + De(Di, null, _), + De(Di, null, E) + ) + ), bgContent: ( + // Fragment scopes the keys + De( + Di, + null, + this.renderFillSegs(u[S], "highlight"), + this.renderFillSegs(o[S], "non-business"), + this.renderFillSegs(l[S], "bg-event") + ) + ), minHeight: t.cellMinHeight }); + }) + ); + } + componentDidMount() { + this.updateSizing(!0), this.context.addResizeHandler(this.handleResize); + } + componentDidUpdate(t, r) { + let n = this.props; + this.updateSizing(!Cc(t, n)); + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleResize); + } + getHighlightSegs() { + let { props: t } = this; + return t.eventDrag && t.eventDrag.segs.length ? t.eventDrag.segs : t.eventResize && t.eventResize.segs.length ? t.eventResize.segs : t.dateSelectionSegs; + } + getMirrorSegs() { + let { props: t } = this; + return t.eventResize && t.eventResize.segs.length ? t.eventResize.segs : []; + } + renderFgSegs(t, r, n, i, a, o, l) { + let { context: u } = this, { eventSelection: d } = this.props, { framePositions: f } = this.state, g = this.props.cells.length === 1, v = a || o || l, y = []; + if (f) + for (let C of r) { + let { seg: A } = C, { instanceId: S } = A.eventRange.instance, _ = C.isVisible && !i[S], E = C.isAbsolute, I = "", w = ""; + E && (u.isRtl ? (w = 0, I = f.lefts[A.lastCol] - f.lefts[A.firstCol]) : (I = 0, w = f.rights[A.firstCol] - f.rights[A.lastCol])), y.push(De("div", { className: "fc-daygrid-event-harness" + (E ? " fc-daygrid-event-harness-abs" : ""), key: ZIe(A), ref: v ? null : this.segHarnessRefs.createRef(qIe(A)), style: { + visibility: _ ? "" : "hidden", + marginTop: E ? "" : C.marginTop, + top: E ? C.absoluteTop : "", + left: I, + right: w + } }, YIe(A) ? De(KIe, Object.assign({ seg: A, isDragging: a, isSelected: S === d, defaultDisplayEventEnd: g }, bf(A, n))) : De(XIe, Object.assign({ seg: A, isDragging: a, isResizing: o, isDateSelecting: l, isSelected: S === d, defaultDisplayEventEnd: g }, bf(A, n))))); + } + return y; + } + renderFillSegs(t, r) { + let { isRtl: n } = this.context, { todayRange: i } = this.props, { framePositions: a } = this.state, o = []; + if (a) + for (let l of t) { + let u = n ? { + right: 0, + left: a.lefts[l.lastCol] - a.lefts[l.firstCol] + } : { + left: 0, + right: a.rights[l.firstCol] - a.rights[l.lastCol] + }; + o.push(De("div", { key: E7(l.eventRange), className: "fc-daygrid-bg-harness", style: u }, r === "bg-event" ? De(U7, Object.assign({ seg: l }, bf(l, i))) : j7(r))); + } + return De(Di, {}, ...o); + } + updateSizing(t) { + let { props: r, state: n, frameElRefs: i } = this; + if (!r.forPrint && r.clientWidth !== null) { + if (t) { + let u = r.cells.map((d) => i.currentMap[d.key]); + if (u.length) { + let d = this.rootElRef.current, f = new ey( + d, + u, + !0, + // isHorizontal + !1 + ); + (!n.framePositions || !n.framePositions.similarTo(f)) && this.setState({ + framePositions: new ey( + d, + u, + !0, + // isHorizontal + !1 + ) + }); + } + } + const a = this.state.segHeights, o = this.querySegHeights(), l = r.dayMaxEvents === !0 || r.dayMaxEventRows === !0; + this.safeSetState({ + // HACK to prevent oscillations of events being shown/hidden from max-event-rows + // Essentially, once you compute an element's height, never null-out. + // TODO: always display all events, as visibility:hidden? + segHeights: Object.assign(Object.assign({}, a), o), + maxContentHeight: l ? this.computeMaxContentHeight() : null + }); + } + } + querySegHeights() { + let t = this.segHarnessRefs.currentMap, r = {}; + for (let n in t) { + let i = Math.round(t[n].getBoundingClientRect().height); + r[n] = Math.max(r[n] || 0, i); + } + return r; + } + computeMaxContentHeight() { + let t = this.props.cells[0].key, r = this.cellElRefs.currentMap[t], n = this.fgElRefs.currentMap[t]; + return r.getBoundingClientRect().bottom - n.getBoundingClientRect().top; + } + getCellEls() { + let t = this.cellElRefs.currentMap; + return this.props.cells.map((r) => t[r.key]); + } +} +JIe.addStateEquality({ + segHeights: Cc +}); +function zCt(e, t) { + if (!e.length) + return []; + let r = HCt(t); + return e.map((n) => ({ + seg: n, + isVisible: !0, + isAbsolute: !0, + absoluteTop: r[n.eventRange.instance.instanceId], + marginTop: 0 + })); +} +function HCt(e) { + let t = {}; + for (let r of e) + for (let n of r) + t[n.seg.eventRange.instance.instanceId] = n.absoluteTop; + return t; +} +class QIe extends tc { + constructor() { + super(...arguments), this.splitBusinessHourSegs = Gr(tN), this.splitBgEventSegs = Gr(tN), this.splitFgEventSegs = Gr(tN), this.splitDateSelectionSegs = Gr(tN), this.splitEventDrag = Gr(Kde), this.splitEventResize = Gr(Kde), this.rowRefs = new vc(); + } + render() { + let { props: t, context: r } = this, n = t.cells.length, i = this.splitBusinessHourSegs(t.businessHourSegs, n), a = this.splitBgEventSegs(t.bgEventSegs, n), o = this.splitFgEventSegs(t.fgEventSegs, n), l = this.splitDateSelectionSegs(t.dateSelectionSegs, n), u = this.splitEventDrag(t.eventDrag, n), d = this.splitEventResize(t.eventResize, n), f = n >= 7 && t.clientWidth ? t.clientWidth / r.options.aspectRatio / 6 : null; + return De(Bp, { unit: "day" }, (g, v) => De(Di, null, t.cells.map((y, C) => De(JIe, { + ref: this.rowRefs.createRef(C), + key: y.length ? y[0].date.toISOString() : C, + showDayNumbers: n > 1, + showWeekNumbers: t.showWeekNumbers, + todayRange: v, + dateProfile: t.dateProfile, + cells: y, + renderIntro: t.renderRowIntro, + businessHourSegs: i[C], + eventSelection: t.eventSelection, + bgEventSegs: a[C].filter(WCt), + fgEventSegs: o[C], + dateSelectionSegs: l[C], + eventDrag: u[C], + eventResize: d[C], + dayMaxEvents: t.dayMaxEvents, + dayMaxEventRows: t.dayMaxEventRows, + clientWidth: t.clientWidth, + clientHeight: t.clientHeight, + cellMinHeight: f, + forPrint: t.forPrint + })))); + } + componentDidMount() { + this.registerInteractiveComponent(); + } + componentDidUpdate() { + this.registerInteractiveComponent(); + } + registerInteractiveComponent() { + if (!this.rootEl) { + const t = this.rowRefs.currentMap[0].getCellEls()[0], r = t ? t.closest(".fc-daygrid-body") : null; + r && (this.rootEl = r, this.context.registerInteractiveComponent(this, { + el: r, + isHitComboAllowed: this.props.isHitComboAllowed + })); + } + } + componentWillUnmount() { + this.rootEl && (this.context.unregisterInteractiveComponent(this), this.rootEl = null); + } + // Hit System + // ---------------------------------------------------------------------------------------------------- + prepareHits() { + this.rowPositions = new ey( + this.rootEl, + this.rowRefs.collect().map((t) => t.getCellEls()[0]), + // first cell el in each row. TODO: not optimal + !1, + !0 + ), this.colPositions = new ey( + this.rootEl, + this.rowRefs.currentMap[0].getCellEls(), + // cell els in first row + !0, + // horizontal + !1 + ); + } + queryHit(t, r) { + let { colPositions: n, rowPositions: i } = this, a = n.leftToIndex(t), o = i.topToIndex(r); + if (o != null && a != null) { + let l = this.props.cells[o][a]; + return { + dateProfile: this.props.dateProfile, + dateSpan: Object.assign({ range: this.getCellRange(o, a), allDay: !0 }, l.extraDateSpan), + dayEl: this.getCellEl(o, a), + rect: { + left: n.lefts[a], + right: n.rights[a], + top: i.tops[o], + bottom: i.bottoms[o] + }, + layer: 0 + }; + } + return null; + } + getCellEl(t, r) { + return this.rowRefs.currentMap[t].getCellEls()[r]; + } + getCellRange(t, r) { + let n = this.props.cells[t][r].date, i = yl(n, 1); + return { start: n, end: i }; + } +} +function WCt(e) { + return e.eventRange.def.allDay; +} +class exe extends tc { + constructor() { + super(...arguments), this.elRef = Ga(), this.needsScrollReset = !1; + } + render() { + let { props: t } = this, { dayMaxEventRows: r, dayMaxEvents: n, expandRows: i } = t, a = n === !0 || r === !0; + a && !i && (a = !1, r = null, n = null); + let o = [ + "fc-daygrid-body", + a ? "fc-daygrid-body-balanced" : "fc-daygrid-body-unbalanced", + i ? "" : "fc-daygrid-body-natural" + // will height of one row depend on the others? + ]; + return De( + "div", + { ref: this.elRef, className: o.join(" "), style: { + // these props are important to give this wrapper correct dimensions for interactions + // TODO: if we set it here, can we avoid giving to inner tables? + width: t.clientWidth, + minWidth: t.tableMinWidth + } }, + De( + "table", + { role: "presentation", className: "fc-scrollgrid-sync-table", style: { + width: t.clientWidth, + minWidth: t.tableMinWidth, + height: i ? t.clientHeight : "" + } }, + t.colGroupNode, + De( + "tbody", + { role: "presentation" }, + De(QIe, { dateProfile: t.dateProfile, cells: t.cells, renderRowIntro: t.renderRowIntro, showWeekNumbers: t.showWeekNumbers, clientWidth: t.clientWidth, clientHeight: t.clientHeight, businessHourSegs: t.businessHourSegs, bgEventSegs: t.bgEventSegs, fgEventSegs: t.fgEventSegs, dateSelectionSegs: t.dateSelectionSegs, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, dayMaxEvents: n, dayMaxEventRows: r, forPrint: t.forPrint, isHitComboAllowed: t.isHitComboAllowed }) + ) + ) + ); + } + componentDidMount() { + this.requestScrollReset(); + } + componentDidUpdate(t) { + t.dateProfile !== this.props.dateProfile ? this.requestScrollReset() : this.flushScrollReset(); + } + requestScrollReset() { + this.needsScrollReset = !0, this.flushScrollReset(); + } + flushScrollReset() { + if (this.needsScrollReset && this.props.clientWidth) { + const t = GCt(this.elRef.current, this.props.dateProfile); + if (t) { + const r = t.closest(".fc-daygrid-body"), n = r.closest(".fc-scroller"), i = t.getBoundingClientRect().top - r.getBoundingClientRect().top; + n.scrollTop = i ? i + 1 : 0; + } + this.needsScrollReset = !1; + } + } +} +function GCt(e, t) { + let r; + return t.currentRangeUnit.match(/year|month/) && (r = e.querySelector(`[data-date="${n6(t.currentDate)}-01"]`)), r || (r = e.querySelector(`[data-date="${NI(t.currentDate)}"]`)), r; +} +class q7 extends M7 { + constructor() { + super(...arguments), this.forceDayIfListItem = !0; + } + sliceRange(t, r) { + return r.sliceRange(t); + } +} +class txe extends tc { + constructor() { + super(...arguments), this.slicer = new q7(), this.tableRef = Ga(); + } + render() { + let { props: t, context: r } = this; + return De(exe, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(t, t.dateProfile, t.nextDayThreshold, r, t.dayTableModel), { dateProfile: t.dateProfile, cells: t.dayTableModel.cells, colGroupNode: t.colGroupNode, tableMinWidth: t.tableMinWidth, renderRowIntro: t.renderRowIntro, dayMaxEvents: t.dayMaxEvents, dayMaxEventRows: t.dayMaxEventRows, showWeekNumbers: t.showWeekNumbers, expandRows: t.expandRows, headerAlignElRef: t.headerAlignElRef, clientWidth: t.clientWidth, clientHeight: t.clientHeight, forPrint: t.forPrint })); + } +} +class YCt extends OCt { + constructor() { + super(...arguments), this.buildDayTableModel = Gr(rxe), this.headerRef = Ga(), this.tableRef = Ga(); + } + render() { + let { options: t, dateProfileGenerator: r } = this.context, { props: n } = this, i = this.buildDayTableModel(n.dateProfile, r), a = t.dayHeaders && De(O7, { ref: this.headerRef, dateProfile: n.dateProfile, dates: i.headerDates, datesRepDistinctDays: i.rowCnt === 1 }), o = (l) => De(txe, { ref: this.tableRef, dateProfile: n.dateProfile, dayTableModel: i, businessHours: n.businessHours, dateSelection: n.dateSelection, eventStore: n.eventStore, eventUiBases: n.eventUiBases, eventSelection: n.eventSelection, eventDrag: n.eventDrag, eventResize: n.eventResize, nextDayThreshold: t.nextDayThreshold, colGroupNode: l.tableColGroupNode, tableMinWidth: l.tableMinWidth, dayMaxEvents: t.dayMaxEvents, dayMaxEventRows: t.dayMaxEventRows, showWeekNumbers: t.weekNumbers, expandRows: !n.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: l.clientWidth, clientHeight: l.clientHeight, forPrint: n.forPrint }); + return t.dayMinWidth ? this.renderHScrollLayout(a, o, i.colCnt, t.dayMinWidth) : this.renderSimpleLayout(a, o); + } +} +function rxe(e, t) { + let r = new Wwe(e.renderRange, t); + return new Gwe(r, /year|month|week/.test(e.currentRangeUnit)); +} +class nxe extends vwe { + // Computes the date range that will be rendered + buildRenderRange(t, r, n) { + let i = super.buildRenderRange(t, r, n), { props: a } = this; + return ixe({ + currentRange: i, + snapToWeek: /^(year|month)$/.test(r), + fixedWeekCount: a.fixedWeekCount, + dateEnv: a.dateEnv + }); + } +} +function ixe(e) { + let { dateEnv: t, currentRange: r } = e, { start: n, end: i } = r, a; + if (e.snapToWeek && (n = t.startOfWeek(n), a = t.startOfWeek(i), a.valueOf() !== i.valueOf() && (i = dde(a, 1))), e.fixedWeekCount) { + let o = t.startOfWeek(t.startOfMonth(yl(r.end, -1))), l = Math.ceil( + // could be partial weeks due to hiddenDays + Eyt(o, i) + ); + i = dde(i, 6 - l); + } + return { start: n, end: i }; +} +var XCt = ':root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:"";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:"";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}'; +P0(XCt); +class KCt extends I7 { + getKeyInfo() { + return { + allDay: {}, + timed: {} + }; + } + getKeysForDateSpan(t) { + return t.allDay ? ["allDay"] : ["timed"]; + } + getKeysForEventDef(t) { + return t.allDay ? H_t(t) ? ["timed", "allDay"] : ["allDay"] : ["timed"]; + } +} +const ZCt = co({ + hour: "numeric", + minute: "2-digit", + omitZeroMinute: !0, + meridiem: "short" +}); +function axe(e) { + let t = [ + "fc-timegrid-slot", + "fc-timegrid-slot-label", + e.isLabeled ? "fc-scrollgrid-shrink" : "fc-timegrid-slot-minor" + ]; + return De(gv.Consumer, null, (r) => { + if (!e.isLabeled) + return De("td", { className: t.join(" "), "data-time": e.isoTimeStr }); + let { dateEnv: n, options: i, viewApi: a } = r, o = ( + // TODO: fully pre-parse + i.slotLabelFormat == null ? ZCt : Array.isArray(i.slotLabelFormat) ? co(i.slotLabelFormat[0]) : co(i.slotLabelFormat) + ), l = { + level: 0, + time: e.time, + date: n.toDate(e.date), + view: a, + text: n.format(e.date, o) + }; + return De(is, { elTag: "td", elClasses: t, elAttrs: { + "data-time": e.isoTimeStr + }, renderProps: l, generatorName: "slotLabelContent", customGenerator: i.slotLabelContent, defaultGenerator: qCt, classNameGenerator: i.slotLabelClassNames, didMount: i.slotLabelDidMount, willUnmount: i.slotLabelWillUnmount }, (u) => De( + "div", + { className: "fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame" }, + De(u, { elTag: "div", elClasses: [ + "fc-timegrid-slot-label-cushion", + "fc-scrollgrid-shrink-cushion" + ] }) + )); + }); +} +function qCt(e) { + return e.text; +} +class JCt extends Vn { + render() { + return this.props.slatMetas.map((t) => De( + "tr", + { key: t.key }, + De(axe, Object.assign({}, t)) + )); + } +} +const QCt = co({ week: "short" }), eTt = 5; +class oxe extends tc { + constructor() { + super(...arguments), this.allDaySplitter = new KCt(), this.headerElRef = Ga(), this.rootElRef = Ga(), this.scrollerElRef = Ga(), this.state = { + slatCoords: null + }, this.handleScrollTopRequest = (t) => { + let r = this.scrollerElRef.current; + r && (r.scrollTop = t); + }, this.renderHeadAxis = (t, r = "") => { + let { options: n } = this.context, { dateProfile: i } = this.props, a = i.renderRange, l = N0(a.start, a.end) === 1 ? TE(this.context, a.start, "week") : {}; + return n.weekNumbers && t === "day" ? De(oIe, { elTag: "th", elClasses: [ + "fc-timegrid-axis", + "fc-scrollgrid-shrink" + ], elAttrs: { + "aria-hidden": !0 + }, date: a.start, defaultFormat: QCt }, (u) => De( + "div", + { className: [ + "fc-timegrid-axis-frame", + "fc-scrollgrid-shrink-frame", + "fc-timegrid-axis-frame-liquid" + ].join(" "), style: { height: r } }, + De(u, { elTag: "a", elClasses: [ + "fc-timegrid-axis-cushion", + "fc-scrollgrid-shrink-cushion", + "fc-scrollgrid-sync-inner" + ], elAttrs: l }) + )) : De( + "th", + { "aria-hidden": !0, className: "fc-timegrid-axis" }, + De("div", { className: "fc-timegrid-axis-frame", style: { height: r } }) + ); + }, this.renderTableRowAxis = (t) => { + let { options: r, viewApi: n } = this.context, i = { + text: r.allDayText, + view: n + }; + return ( + // TODO: make reusable hook. used in list view too + De(is, { elTag: "td", elClasses: [ + "fc-timegrid-axis", + "fc-scrollgrid-shrink" + ], elAttrs: { + "aria-hidden": !0 + }, renderProps: i, generatorName: "allDayContent", customGenerator: r.allDayContent, defaultGenerator: tTt, classNameGenerator: r.allDayClassNames, didMount: r.allDayDidMount, willUnmount: r.allDayWillUnmount }, (a) => De( + "div", + { className: [ + "fc-timegrid-axis-frame", + "fc-scrollgrid-shrink-frame", + t == null ? " fc-timegrid-axis-frame-liquid" : "" + ].join(" "), style: { height: t } }, + De(a, { elTag: "span", elClasses: [ + "fc-timegrid-axis-cushion", + "fc-scrollgrid-shrink-cushion", + "fc-scrollgrid-sync-inner" + ] }) + )) + ); + }, this.handleSlatCoords = (t) => { + this.setState({ slatCoords: t }); + }; + } + // rendering + // ---------------------------------------------------------------------------------------------------- + renderSimpleLayout(t, r, n) { + let { context: i, props: a } = this, o = [], l = tI(i.options); + return t && o.push({ + type: "header", + key: "header", + isSticky: l, + chunk: { + elRef: this.headerElRef, + tableClassName: "fc-col-header", + rowContent: t + } + }), r && (o.push({ + type: "body", + key: "all-day", + chunk: { content: r } + }), o.push({ + type: "body", + key: "all-day-divider", + outerContent: ( + // TODO: rename to cellContent so don't need to define ? + De( + "tr", + { role: "presentation", className: "fc-scrollgrid-section" }, + De("td", { className: "fc-timegrid-divider " + i.theme.getClass("tableCellShaded") }) + ) + ) + })), o.push({ + type: "body", + key: "body", + liquid: !0, + expandRows: !!i.options.expandRows, + chunk: { + scrollerElRef: this.scrollerElRef, + content: n + } + }), De( + w0, + { elRef: this.rootElRef, elClasses: ["fc-timegrid"], viewSpec: i.viewSpec }, + De(N7, { liquid: !a.isHeightAuto && !a.forPrint, collapsibleWidth: a.forPrint, cols: [{ width: "shrink" }], sections: o }) + ); + } + renderHScrollLayout(t, r, n, i, a, o, l) { + let u = this.context.pluginHooks.scrollGridImpl; + if (!u) + throw new Error("No ScrollGrid implementation"); + let { context: d, props: f } = this, g = !f.forPrint && tI(d.options), v = !f.forPrint && UB(d.options), y = []; + t && y.push({ + type: "header", + key: "header", + isSticky: g, + syncRowHeights: !0, + chunks: [ + { + key: "axis", + rowContent: (A) => De("tr", { role: "presentation" }, this.renderHeadAxis("day", A.rowSyncHeights[0])) + }, + { + key: "cols", + elRef: this.headerElRef, + tableClassName: "fc-col-header", + rowContent: t + } + ] + }), r && (y.push({ + type: "body", + key: "all-day", + syncRowHeights: !0, + chunks: [ + { + key: "axis", + rowContent: (A) => De("tr", { role: "presentation" }, this.renderTableRowAxis(A.rowSyncHeights[0])) + }, + { + key: "cols", + content: r + } + ] + }), y.push({ + key: "all-day-divider", + type: "body", + outerContent: ( + // TODO: rename to cellContent so don't need to define ? + De( + "tr", + { role: "presentation", className: "fc-scrollgrid-section" }, + De("td", { colSpan: 2, className: "fc-timegrid-divider " + d.theme.getClass("tableCellShaded") }) + ) + ) + })); + let C = d.options.nowIndicator; + return y.push({ + type: "body", + key: "body", + liquid: !0, + expandRows: !!d.options.expandRows, + chunks: [ + { + key: "axis", + content: (A) => ( + // TODO: make this now-indicator arrow more DRY with TimeColsContent + De( + "div", + { className: "fc-timegrid-axis-chunk" }, + De( + "table", + { "aria-hidden": !0, style: { height: A.expandRows ? A.clientHeight : "" } }, + A.tableColGroupNode, + De( + "tbody", + null, + De(JCt, { slatMetas: o }) + ) + ), + De( + "div", + { className: "fc-timegrid-now-indicator-container" }, + De(Bp, { + unit: C ? "minute" : "day" + /* hacky */ + }, (S) => { + let _ = C && l && l.safeComputeTop(S); + return typeof _ == "number" ? De(UI, { elClasses: ["fc-timegrid-now-indicator-arrow"], elStyle: { top: _ }, isAxis: !0, date: S }) : null; + }) + ) + ) + ) + }, + { + key: "cols", + scrollerElRef: this.scrollerElRef, + content: n + } + ] + }), v && y.push({ + key: "footer", + type: "footer", + isSticky: !0, + chunks: [ + { + key: "axis", + content: eI + }, + { + key: "cols", + content: eI + } + ] + }), De( + w0, + { elRef: this.rootElRef, elClasses: ["fc-timegrid"], viewSpec: d.viewSpec }, + De(u, { liquid: !f.isHeightAuto && !f.forPrint, forPrint: f.forPrint, collapsibleWidth: !1, colGroups: [ + { width: "shrink", cols: [{ width: "shrink" }] }, + { cols: [{ span: i, minWidth: a }] } + ], sections: y }) + ); + } + /* Dimensions + ------------------------------------------------------------------------------------------------------------------*/ + getAllDayMaxEventProps() { + let { dayMaxEvents: t, dayMaxEventRows: r } = this.context.options; + return (t === !0 || r === !0) && (t = void 0, r = eTt), { dayMaxEvents: t, dayMaxEventRows: r }; + } +} +function tTt(e) { + return e.text; +} +class rTt { + constructor(t, r, n) { + this.positions = t, this.dateProfile = r, this.slotDuration = n; + } + safeComputeTop(t) { + let { dateProfile: r } = this; + if (tv(r.currentRange, t)) { + let n = ho(t), i = t.valueOf() - n.valueOf(); + if (i >= Kc(r.slotMinTime) && i < Kc(r.slotMaxTime)) + return this.computeTimeTop(na(i)); + } + return null; + } + // Computes the top coordinate, relative to the bounds of the grid, of the given date. + // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. + computeDateTop(t, r) { + return r || (r = ho(t)), this.computeTimeTop(na(t.valueOf() - r.valueOf())); + } + // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration). + // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform. + // Eventually allow computation with arbirary slat dates. + computeTimeTop(t) { + let { positions: r, dateProfile: n } = this, i = r.els.length, a = (t.milliseconds - Kc(n.slotMinTime)) / Kc(this.slotDuration), o, l; + return a = Math.max(0, a), a = Math.min(i, a), o = Math.floor(a), o = Math.min(o, i - 1), l = a - o, r.tops[o] + r.getHeight(o) * l; + } +} +class nTt extends Vn { + render() { + let { props: t, context: r } = this, { options: n } = r, { slatElRefs: i } = t; + return De("tbody", null, t.slatMetas.map((a, o) => { + let l = { + time: a.time, + date: r.dateEnv.toDate(a.date), + view: r.viewApi + }; + return De( + "tr", + { key: a.key, ref: i.createRef(a.key) }, + t.axis && De(axe, Object.assign({}, a)), + De(is, { elTag: "td", elClasses: [ + "fc-timegrid-slot", + "fc-timegrid-slot-lane", + !a.isLabeled && "fc-timegrid-slot-minor" + ], elAttrs: { + "data-time": a.isoTimeStr + }, renderProps: l, generatorName: "slotLaneContent", customGenerator: n.slotLaneContent, classNameGenerator: n.slotLaneClassNames, didMount: n.slotLaneDidMount, willUnmount: n.slotLaneWillUnmount }) + ); + })); + } +} +class iTt extends Vn { + constructor() { + super(...arguments), this.rootElRef = Ga(), this.slatElRefs = new vc(); + } + render() { + let { props: t, context: r } = this; + return De( + "div", + { ref: this.rootElRef, className: "fc-timegrid-slots" }, + De( + "table", + { "aria-hidden": !0, className: r.theme.getClass("table"), style: { + minWidth: t.tableMinWidth, + width: t.clientWidth, + height: t.minHeight + } }, + t.tableColGroupNode, + De(nTt, { slatElRefs: this.slatElRefs, axis: t.axis, slatMetas: t.slatMetas }) + ) + ); + } + componentDidMount() { + this.updateSizing(); + } + componentDidUpdate() { + this.updateSizing(); + } + componentWillUnmount() { + this.props.onCoords && this.props.onCoords(null); + } + updateSizing() { + let { context: t, props: r } = this; + r.onCoords && r.clientWidth !== null && this.rootElRef.current.offsetHeight && r.onCoords(new rTt(new ey(this.rootElRef.current, aTt(this.slatElRefs.currentMap, r.slatMetas), !1, !0), this.props.dateProfile, t.options.slotDuration)); + } +} +function aTt(e, t) { + return t.map((r) => e[r.key]); +} +function t1(e, t) { + let r = [], n; + for (n = 0; n < t; n += 1) + r.push([]); + if (e) + for (n = 0; n < e.length; n += 1) + r[e[n].col].push(e[n]); + return r; +} +function Zde(e, t) { + let r = []; + if (e) { + for (let n = 0; n < t; n += 1) + r[n] = { + affectedInstances: e.affectedInstances, + isEvent: e.isEvent, + segs: [] + }; + for (let n of e.segs) + r[n.col].segs.push(n); + } else + for (let n = 0; n < t; n += 1) + r[n] = null; + return r; +} +class oTt extends Vn { + render() { + let { props: t } = this; + return De($7, { elClasses: ["fc-timegrid-more-link"], elStyle: { + top: t.top, + bottom: t.bottom + }, allDayDate: null, moreCnt: t.hiddenSegs.length, allSegs: t.hiddenSegs, hiddenSegs: t.hiddenSegs, extraDateSpan: t.extraDateSpan, dateProfile: t.dateProfile, todayRange: t.todayRange, popoverContent: () => lxe(t.hiddenSegs, t), defaultGenerator: sTt, forceTimed: !0 }, (r) => De(r, { elTag: "div", elClasses: ["fc-timegrid-more-link-inner", "fc-sticky"] })); + } +} +function sTt(e) { + return e.shortText; +} +function lTt(e, t, r) { + let n = new R7(); + t != null && (n.strictOrder = t), r != null && (n.maxStackCnt = r); + let i = n.addSegs(e), a = Uwe(i), o = cTt(n); + return o = fTt(o, 1), { segRects: pTt(o), hiddenGroups: a }; +} +function cTt(e) { + const { entriesByLevel: t } = e, r = J7((n, i) => n + ":" + i, (n, i) => { + let a = dTt(e, n, i), o = qde(a, r), l = t[n][i]; + return [ + Object.assign(Object.assign({}, l), { nextLevelNodes: o[0] }), + l.thickness + o[1] + // the pressure builds + ]; + }); + return qde(t.length ? { level: 0, lateralStart: 0, lateralEnd: t[0].length } : null, r)[0]; +} +function qde(e, t) { + if (!e) + return [[], 0]; + let { level: r, lateralStart: n, lateralEnd: i } = e, a = n, o = []; + for (; a < i; ) + o.push(t(r, a)), a += 1; + return o.sort(uTt), [ + o.map(hTt), + o[0][1] + // first item's pressure + ]; +} +function uTt(e, t) { + return t[1] - e[1]; +} +function hTt(e) { + return e[0]; +} +function dTt(e, t, r) { + let { levelCoords: n, entriesByLevel: i } = e, a = i[t][r], o = n[t] + a.thickness, l = n.length, u = t; + for (; u < l && n[u] < o; u += 1) + ; + for (; u < l; u += 1) { + let d = i[u], f, g = d6(d, a.span.start, h6), v = g[0] + g[1], y = v; + for ( + ; + // loop through entries that horizontally intersect + (f = d[y]) && // but not past the whole seg list + f.span.start < a.span.end; + ) + y += 1; + if (v < y) + return { level: u, lateralStart: v, lateralEnd: y }; + } + return null; +} +function fTt(e, t) { + const r = J7((n, i, a) => iE(n), (n, i, a) => { + let { nextLevelNodes: o, thickness: l } = n, u = l + a, d = l / u, f, g = []; + if (!o.length) + f = t; + else + for (let y of o) + if (f === void 0) { + let C = r(y, i, u); + f = C[0], g.push(C[1]); + } else { + let C = r(y, f, 0); + g.push(C[1]); + } + let v = (f - i) * d; + return [f - v, Object.assign(Object.assign({}, n), { thickness: v, nextLevelNodes: g })]; + }); + return e.map((n) => r(n, 0, 0)[1]); +} +function pTt(e) { + let t = []; + const r = J7((i, a, o) => iE(i), (i, a, o) => { + let l = Object.assign(Object.assign({}, i), { + levelCoord: a, + stackDepth: o, + stackForward: 0 + }); + return t.push(l), l.stackForward = n(i.nextLevelNodes, a + i.thickness, o + 1) + 1; + }); + function n(i, a, o) { + let l = 0; + for (let u of i) + l = Math.max(r(u, a, o), l); + return l; + } + return n(e, 0, 0), t; +} +function J7(e, t) { + const r = {}; + return (...n) => { + let i = e(...n); + return i in r ? r[i] : r[i] = t(...n); + }; +} +function Jde(e, t, r = null, n = 0) { + let i = []; + if (r) + for (let a = 0; a < e.length; a += 1) { + let o = e[a], l = r.computeDateTop(o.start, t), u = Math.max( + l + (n || 0), + // :( + r.computeDateTop(o.end, t) + ); + i.push({ + start: Math.round(l), + end: Math.round(u) + // + }); + } + return i; +} +function gTt(e, t, r, n) { + let i = [], a = []; + for (let d = 0; d < e.length; d += 1) { + let f = t[d]; + f ? i.push({ + index: d, + thickness: 1, + span: f + }) : a.push(e[d]); + } + let { segRects: o, hiddenGroups: l } = lTt(i, r, n), u = []; + for (let d of o) + u.push({ + seg: e[d.index], + rect: d + }); + for (let d of a) + u.push({ seg: d, rect: null }); + return { segPlacements: u, hiddenGroups: l }; +} +const vTt = co({ + hour: "numeric", + minute: "2-digit", + meridiem: !1 +}); +class sxe extends Vn { + render() { + return De(L7, Object.assign({}, this.props, { elClasses: [ + "fc-timegrid-event", + "fc-v-event", + this.props.isShort && "fc-timegrid-event-short" + ], defaultTimeFormat: vTt })); + } +} +class mTt extends Vn { + constructor() { + super(...arguments), this.sortEventSegs = Gr(BB); + } + // TODO: memoize event-placement? + render() { + let { props: t, context: r } = this, { options: n } = r, i = n.selectMirror, a = ( + // yuck + t.eventDrag && t.eventDrag.segs || t.eventResize && t.eventResize.segs || i && t.dateSelectionSegs || [] + ), o = ( + // TODO: messy way to compute this + t.eventDrag && t.eventDrag.affectedInstances || t.eventResize && t.eventResize.affectedInstances || {} + ), l = this.sortEventSegs(t.fgEventSegs, n.eventOrder); + return De(F7, { elTag: "td", elRef: t.elRef, elClasses: [ + "fc-timegrid-col", + ...t.extraClassNames || [] + ], elAttrs: Object.assign({ role: "gridcell" }, t.extraDataAttrs), date: t.date, dateProfile: t.dateProfile, todayRange: t.todayRange, extraRenderProps: t.extraRenderProps }, (u) => De( + "div", + { className: "fc-timegrid-col-frame" }, + De( + "div", + { className: "fc-timegrid-col-bg" }, + this.renderFillSegs(t.businessHourSegs, "non-business"), + this.renderFillSegs(t.bgEventSegs, "bg-event"), + this.renderFillSegs(t.dateSelectionSegs, "highlight") + ), + De("div", { className: "fc-timegrid-col-events" }, this.renderFgSegs(l, o, !1, !1, !1)), + De("div", { className: "fc-timegrid-col-events" }, this.renderFgSegs(a, {}, !!t.eventDrag, !!t.eventResize, !!i, "mirror")), + De("div", { className: "fc-timegrid-now-indicator-container" }, this.renderNowIndicator(t.nowIndicatorSegs)), + B7(n) && De(u, { elTag: "div", elClasses: ["fc-timegrid-col-misc"] }) + )); + } + renderFgSegs(t, r, n, i, a, o) { + let { props: l } = this; + return l.forPrint ? lxe(t, l) : this.renderPositionedFgSegs(t, r, n, i, a, o); + } + renderPositionedFgSegs(t, r, n, i, a, o) { + let { eventMaxStack: l, eventShortHeight: u, eventOrderStrict: d, eventMinHeight: f } = this.context.options, { date: g, slatCoords: v, eventSelection: y, todayRange: C, nowDate: A } = this.props, S = n || i || a, _ = Jde(t, g, v, f), { segPlacements: E, hiddenGroups: I } = gTt(t, _, d, l); + return De( + Di, + null, + this.renderHiddenGroups(I, t), + E.map((w) => { + let { seg: x, rect: b } = w, R = x.eventRange.instance.instanceId, M = S || !!(!r[R] && b), O = N4(b && b.span), P = !S && b ? this.computeSegHStyle(b) : { left: 0, right: 0 }, B = !!b && b.stackForward > 0, H = !!b && b.span.end - b.span.start < u; + return De( + "div", + { className: "fc-timegrid-event-harness" + (B ? " fc-timegrid-event-harness-inset" : ""), key: o || R, style: Object.assign(Object.assign({ visibility: M ? "" : "hidden" }, O), P) }, + De(sxe, Object.assign({ seg: x, isDragging: n, isResizing: i, isDateSelecting: a, isSelected: R === y, isShort: H }, bf(x, C, A))) + ); + }) + ); + } + // will already have eventMinHeight applied because segInputs already had it + renderHiddenGroups(t, r) { + let { extraDateSpan: n, dateProfile: i, todayRange: a, nowDate: o, eventSelection: l, eventDrag: u, eventResize: d } = this.props; + return De(Di, null, t.map((f) => { + let g = N4(f.span), v = yTt(f.entries, r); + return De(oTt, { key: MB($B(v)), hiddenSegs: v, top: g.top, bottom: g.bottom, extraDateSpan: n, dateProfile: i, todayRange: a, nowDate: o, eventSelection: l, eventDrag: u, eventResize: d }); + })); + } + renderFillSegs(t, r) { + let { props: n, context: i } = this, o = Jde(t, n.date, n.slatCoords, i.options.eventMinHeight).map((l, u) => { + let d = t[u]; + return De("div", { key: E7(d.eventRange), className: "fc-timegrid-bg-harness", style: N4(l) }, r === "bg-event" ? De(U7, Object.assign({ seg: d }, bf(d, n.todayRange, n.nowDate))) : j7(r)); + }); + return De(Di, null, o); + } + renderNowIndicator(t) { + let { slatCoords: r, date: n } = this.props; + return r ? t.map((i, a) => De( + UI, + { + // key doesn't matter. will only ever be one + key: a, + elClasses: ["fc-timegrid-now-indicator-line"], + elStyle: { + top: r.computeDateTop(i.start, n) + }, + isAxis: !1, + date: n + } + )) : null; + } + computeSegHStyle(t) { + let { isRtl: r, options: n } = this.context, i = n.slotEventOverlap, a = t.levelCoord, o = t.levelCoord + t.thickness, l, u; + i && (o = Math.min(1, a + (o - a) * 2)), r ? (l = 1 - o, u = a) : (l = a, u = 1 - o); + let d = { + zIndex: t.stackDepth + 1, + left: l * 100 + "%", + right: u * 100 + "%" + }; + return i && !t.stackForward && (d[r ? "marginLeft" : "marginRight"] = 10 * 2), d; + } +} +function lxe(e, { todayRange: t, nowDate: r, eventSelection: n, eventDrag: i, eventResize: a }) { + let o = (i ? i.affectedInstances : null) || (a ? a.affectedInstances : null) || {}; + return De(Di, null, e.map((l) => { + let u = l.eventRange.instance.instanceId; + return De( + "div", + { key: u, style: { visibility: o[u] ? "hidden" : "" } }, + De(sxe, Object.assign({ seg: l, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: u === n, isShort: !1 }, bf(l, t, r))) + ); + })); +} +function N4(e) { + return e ? { + top: e.start, + bottom: -e.end + } : { top: "", bottom: "" }; +} +function yTt(e, t) { + return e.map((r) => t[r.index]); +} +class _Tt extends Vn { + constructor() { + super(...arguments), this.splitFgEventSegs = Gr(t1), this.splitBgEventSegs = Gr(t1), this.splitBusinessHourSegs = Gr(t1), this.splitNowIndicatorSegs = Gr(t1), this.splitDateSelectionSegs = Gr(t1), this.splitEventDrag = Gr(Zde), this.splitEventResize = Gr(Zde), this.rootElRef = Ga(), this.cellElRefs = new vc(); + } + render() { + let { props: t, context: r } = this, n = r.options.nowIndicator && t.slatCoords && t.slatCoords.safeComputeTop(t.nowDate), i = t.cells.length, a = this.splitFgEventSegs(t.fgEventSegs, i), o = this.splitBgEventSegs(t.bgEventSegs, i), l = this.splitBusinessHourSegs(t.businessHourSegs, i), u = this.splitNowIndicatorSegs(t.nowIndicatorSegs, i), d = this.splitDateSelectionSegs(t.dateSelectionSegs, i), f = this.splitEventDrag(t.eventDrag, i), g = this.splitEventResize(t.eventResize, i); + return De( + "div", + { className: "fc-timegrid-cols", ref: this.rootElRef }, + De( + "table", + { role: "presentation", style: { + minWidth: t.tableMinWidth, + width: t.clientWidth + } }, + t.tableColGroupNode, + De( + "tbody", + { role: "presentation" }, + De( + "tr", + { role: "row" }, + t.axis && De( + "td", + { "aria-hidden": !0, className: "fc-timegrid-col fc-timegrid-axis" }, + De( + "div", + { className: "fc-timegrid-col-frame" }, + De("div", { className: "fc-timegrid-now-indicator-container" }, typeof n == "number" && De(UI, { elClasses: ["fc-timegrid-now-indicator-arrow"], elStyle: { top: n }, isAxis: !0, date: t.nowDate })) + ) + ), + t.cells.map((v, y) => De(mTt, { key: v.key, elRef: this.cellElRefs.createRef(v.key), dateProfile: t.dateProfile, date: v.date, nowDate: t.nowDate, todayRange: t.todayRange, extraRenderProps: v.extraRenderProps, extraDataAttrs: v.extraDataAttrs, extraClassNames: v.extraClassNames, extraDateSpan: v.extraDateSpan, fgEventSegs: a[y], bgEventSegs: o[y], businessHourSegs: l[y], nowIndicatorSegs: u[y], dateSelectionSegs: d[y], eventDrag: f[y], eventResize: g[y], slatCoords: t.slatCoords, eventSelection: t.eventSelection, forPrint: t.forPrint })) + ) + ) + ) + ); + } + componentDidMount() { + this.updateCoords(); + } + componentDidUpdate() { + this.updateCoords(); + } + updateCoords() { + let { props: t } = this; + t.onColCoords && t.clientWidth !== null && t.onColCoords(new ey( + this.rootElRef.current, + STt(this.cellElRefs.currentMap, t.cells), + !0, + // horizontal + !1 + )); + } +} +function STt(e, t) { + return t.map((r) => e[r.key]); +} +class cxe extends tc { + constructor() { + super(...arguments), this.processSlotOptions = Gr(bTt), this.state = { + slatCoords: null + }, this.handleRootEl = (t) => { + t ? this.context.registerInteractiveComponent(this, { + el: t, + isHitComboAllowed: this.props.isHitComboAllowed + }) : this.context.unregisterInteractiveComponent(this); + }, this.handleScrollRequest = (t) => { + let { onScrollTopRequest: r } = this.props, { slatCoords: n } = this.state; + if (r && n) { + if (t.time) { + let i = n.computeTimeTop(t.time); + i = Math.ceil(i), i && (i += 1), r(i); + } + return !0; + } + return !1; + }, this.handleColCoords = (t) => { + this.colCoords = t; + }, this.handleSlatCoords = (t) => { + this.setState({ slatCoords: t }), this.props.onSlatCoords && this.props.onSlatCoords(t); + }; + } + render() { + let { props: t, state: r } = this; + return De( + "div", + { className: "fc-timegrid-body", ref: this.handleRootEl, style: { + // these props are important to give this wrapper correct dimensions for interactions + // TODO: if we set it here, can we avoid giving to inner tables? + width: t.clientWidth, + minWidth: t.tableMinWidth + } }, + De(iTt, { axis: t.axis, dateProfile: t.dateProfile, slatMetas: t.slatMetas, clientWidth: t.clientWidth, minHeight: t.expandRows ? t.clientHeight : "", tableMinWidth: t.tableMinWidth, tableColGroupNode: t.axis ? t.tableColGroupNode : null, onCoords: this.handleSlatCoords }), + De(_Tt, { cells: t.cells, axis: t.axis, dateProfile: t.dateProfile, businessHourSegs: t.businessHourSegs, bgEventSegs: t.bgEventSegs, fgEventSegs: t.fgEventSegs, dateSelectionSegs: t.dateSelectionSegs, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, todayRange: t.todayRange, nowDate: t.nowDate, nowIndicatorSegs: t.nowIndicatorSegs, clientWidth: t.clientWidth, tableMinWidth: t.tableMinWidth, tableColGroupNode: t.tableColGroupNode, slatCoords: r.slatCoords, onColCoords: this.handleColCoords, forPrint: t.forPrint }) + ); + } + componentDidMount() { + this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest); + } + componentDidUpdate(t) { + this.scrollResponder.update(t.dateProfile !== this.props.dateProfile); + } + componentWillUnmount() { + this.scrollResponder.detach(); + } + queryHit(t, r) { + let { dateEnv: n, options: i } = this.context, { colCoords: a } = this, { dateProfile: o } = this.props, { slatCoords: l } = this.state, { snapDuration: u, snapsPerSlot: d } = this.processSlotOptions(this.props.slotDuration, i.snapDuration), f = a.leftToIndex(t), g = l.positions.topToIndex(r); + if (f != null && g != null) { + let v = this.props.cells[f], y = l.positions.tops[g], C = l.positions.getHeight(g), A = (r - y) / C, S = Math.floor(A * d), _ = g * d + S, E = this.props.cells[f].date, I = r6(o.slotMinTime, awe(u, _)), w = n.add(E, I), x = n.add(w, u); + return { + dateProfile: o, + dateSpan: Object.assign({ range: { start: w, end: x }, allDay: !1 }, v.extraDateSpan), + dayEl: a.els[f], + rect: { + left: a.lefts[f], + right: a.rights[f], + top: y, + bottom: y + C + }, + layer: 0 + }; + } + return null; + } +} +function bTt(e, t) { + let r = t || e, n = C0(e, r); + return n === null && (r = e, n = 1), { snapDuration: r, snapsPerSlot: n }; +} +class uxe extends M7 { + sliceRange(t, r) { + let n = []; + for (let i = 0; i < r.length; i += 1) { + let a = cv(t, r[i]); + a && n.push({ + start: a.start, + end: a.end, + isStart: a.start.valueOf() === t.start.valueOf(), + isEnd: a.end.valueOf() === t.end.valueOf(), + col: i + }); + } + return n; + } +} +class ETt extends tc { + constructor() { + super(...arguments), this.buildDayRanges = Gr(hxe), this.slicer = new uxe(), this.timeColsRef = Ga(); + } + render() { + let { props: t, context: r } = this, { dateProfile: n, dayTableModel: i } = t, { nowIndicator: a, nextDayThreshold: o } = r.options, l = this.buildDayRanges(i, n, r.dateEnv); + return De(Bp, { unit: a ? "minute" : "day" }, (u, d) => De(cxe, Object.assign({ ref: this.timeColsRef }, this.slicer.sliceProps(t, n, null, r, l), { forPrint: t.forPrint, axis: t.axis, dateProfile: n, slatMetas: t.slatMetas, slotDuration: t.slotDuration, cells: i.cells[0], tableColGroupNode: t.tableColGroupNode, tableMinWidth: t.tableMinWidth, clientWidth: t.clientWidth, clientHeight: t.clientHeight, expandRows: t.expandRows, nowDate: u, nowIndicatorSegs: a && this.slicer.sliceNowDate(u, n, o, r, l), todayRange: d, onScrollTopRequest: t.onScrollTopRequest, onSlatCoords: t.onSlatCoords }))); + } +} +function hxe(e, t, r) { + let n = []; + for (let i of e.headerDates) + n.push({ + start: r.add(i, t.slotMinTime), + end: r.add(i, t.slotMaxTime) + }); + return n; +} +const Qde = [ + { hours: 1 }, + { minutes: 30 }, + { minutes: 15 }, + { seconds: 30 }, + { seconds: 15 } +]; +function dxe(e, t, r, n, i) { + let a = /* @__PURE__ */ new Date(0), o = e, l = na(0), u = r || CTt(n), d = []; + for (; Kc(o) < Kc(t); ) { + let f = i.add(a, o), g = C0(l, u) !== null; + d.push({ + date: f, + time: o, + key: f.toISOString(), + isoTimeStr: kyt(f), + isLabeled: g + }), o = r6(o, n), l = r6(l, n); + } + return d; +} +function CTt(e) { + let t, r, n; + for (t = Qde.length - 1; t >= 0; t -= 1) + if (r = na(Qde[t]), n = C0(r, e), n !== null && n > 1) + return r; + return e; +} +class TTt extends oxe { + constructor() { + super(...arguments), this.buildTimeColsModel = Gr(fxe), this.buildSlatMetas = Gr(dxe); + } + render() { + let { options: t, dateEnv: r, dateProfileGenerator: n } = this.context, { props: i } = this, { dateProfile: a } = i, o = this.buildTimeColsModel(a, n), l = this.allDaySplitter.splitProps(i), u = this.buildSlatMetas(a.slotMinTime, a.slotMaxTime, t.slotLabelInterval, t.slotDuration, r), { dayMinWidth: d } = t, f = !d, g = d, v = t.dayHeaders && De(O7, { dates: o.headerDates, dateProfile: a, datesRepDistinctDays: !0, renderIntro: f ? this.renderHeadAxis : null }), y = t.allDaySlot !== !1 && ((A) => De(txe, Object.assign({}, l.allDay, { dateProfile: a, dayTableModel: o, nextDayThreshold: t.nextDayThreshold, tableMinWidth: A.tableMinWidth, colGroupNode: A.tableColGroupNode, renderRowIntro: f ? this.renderTableRowAxis : null, showWeekNumbers: !1, expandRows: !1, headerAlignElRef: this.headerElRef, clientWidth: A.clientWidth, clientHeight: A.clientHeight, forPrint: i.forPrint }, this.getAllDayMaxEventProps()))), C = (A) => De(ETt, Object.assign({}, l.timed, { dayTableModel: o, dateProfile: a, axis: f, slotDuration: t.slotDuration, slatMetas: u, forPrint: i.forPrint, tableColGroupNode: A.tableColGroupNode, tableMinWidth: A.tableMinWidth, clientWidth: A.clientWidth, clientHeight: A.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: A.expandRows, onScrollTopRequest: this.handleScrollTopRequest })); + return g ? this.renderHScrollLayout(v, y, C, o.colCnt, d, u, this.state.slatCoords) : this.renderSimpleLayout(v, y, C); + } +} +function fxe(e, t) { + let r = new Wwe(e.renderRange, t); + return new Gwe(r, !1); +} +var wTt = '.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:"\\00a0"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}'; +P0(wTt); +const ITt = { + allDaySlot: Boolean +}; +var pxe = rc({ + name: "@fullcalendar/timegrid", + initialView: "timeGridWeek", + optionRefiners: ITt, + views: { + timeGrid: { + component: TTt, + usesMinMaxTime: !0, + allDaySlot: !0, + slotDuration: "00:30:00", + slotEventOverlap: !0 + // a bad name. confused with overlap/constraint system + }, + timeGridDay: { + type: "timeGrid", + duration: { days: 1 } + }, + timeGridWeek: { + type: "timeGrid", + duration: { weeks: 1 } + } + } +}); +class xTt extends kIe { + transformSeg(t, r, n) { + return r.computeColRanges(t.firstCol, t.lastCol, n).map((a) => Object.assign(Object.assign(Object.assign({}, t), a), { isStart: t.isStart && a.isStart, isEnd: t.isEnd && a.isEnd })); + } +} +class ATt extends tc { + constructor() { + super(...arguments), this.splitter = new PIe(), this.slicers = {}, this.joiner = new xTt(), this.tableRef = Ga(), this.isHitComboAllowed = (t, r) => this.props.resourceDayTableModel.dayTableModel.colCnt === 1 || t.dateSpan.resourceId === r.dateSpan.resourceId; + } + render() { + let { props: t, context: r } = this, { resourceDayTableModel: n, nextDayThreshold: i, dateProfile: a } = t, o = this.splitter.splitProps(t); + this.slicers = _l(o, (u, d) => this.slicers[d] || new q7()); + let l = _l(this.slicers, (u, d) => u.sliceProps(o[d], a, i, r, n.dayTableModel)); + return De(exe, Object.assign({ forPrint: t.forPrint, ref: this.tableRef }, this.joiner.joinProps(l, n), { cells: n.cells, dateProfile: a, colGroupNode: t.colGroupNode, tableMinWidth: t.tableMinWidth, renderRowIntro: t.renderRowIntro, dayMaxEvents: t.dayMaxEvents, dayMaxEventRows: t.dayMaxEventRows, showWeekNumbers: t.showWeekNumbers, expandRows: t.expandRows, headerAlignElRef: t.headerAlignElRef, clientWidth: t.clientWidth, clientHeight: t.clientHeight, isHitComboAllowed: this.isHitComboAllowed })); + } +} +class RTt extends kIe { + transformSeg(t, r, n) { + return [ + Object.assign(Object.assign({}, t), { col: r.computeCol(t.col, n) }) + ]; + } +} +class DTt extends tc { + constructor() { + super(...arguments), this.buildDayRanges = Gr(hxe), this.splitter = new PIe(), this.slicers = {}, this.joiner = new RTt(), this.timeColsRef = Ga(), this.isHitComboAllowed = (t, r) => this.dayRanges.length === 1 || t.dateSpan.resourceId === r.dateSpan.resourceId; + } + render() { + let { props: t, context: r } = this, { dateEnv: n, options: i } = r, { dateProfile: a, resourceDayTableModel: o } = t, l = this.dayRanges = this.buildDayRanges(o.dayTableModel, a, n), u = this.splitter.splitProps(t); + this.slicers = _l(u, (f, g) => this.slicers[g] || new uxe()); + let d = _l(this.slicers, (f, g) => f.sliceProps(u[g], a, null, r, l)); + return ( + // TODO: would move this further down hierarchy, but sliceNowDate needs it + De(Bp, { unit: i.nowIndicator ? "minute" : "day" }, (f, g) => De(cxe, Object.assign({ ref: this.timeColsRef }, this.joiner.joinProps(d, o), { dateProfile: a, axis: t.axis, slotDuration: t.slotDuration, slatMetas: t.slatMetas, cells: o.cells[0], tableColGroupNode: t.tableColGroupNode, tableMinWidth: t.tableMinWidth, clientWidth: t.clientWidth, clientHeight: t.clientHeight, expandRows: t.expandRows, nowDate: f, nowIndicatorSegs: i.nowIndicator && this.buildNowIndicatorSegs(f), todayRange: g, onScrollTopRequest: t.onScrollTopRequest, forPrint: t.forPrint, onSlatCoords: t.onSlatCoords, isHitComboAllowed: this.isHitComboAllowed }))) + ); + } + buildNowIndicatorSegs(t) { + let r = this.slicers[""].sliceNowDate(t, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges); + return this.joiner.expandSegs(this.props.resourceDayTableModel, r); + } +} +class OTt extends oxe { + constructor() { + super(...arguments), this.flattenResources = Gr(pEt), this.buildResourceTimeColsModel = Gr(MTt), this.buildSlatMetas = Gr(dxe); + } + render() { + let { props: t, context: r } = this, { options: n, dateEnv: i } = r, { dateProfile: a } = t, o = this.allDaySplitter.splitProps(t), l = n.resourceOrder || OIe, u = this.flattenResources(t.resourceStore, l), d = this.buildResourceTimeColsModel(a, r.dateProfileGenerator, u, n.datesAboveResources, r), f = this.buildSlatMetas(a.slotMinTime, a.slotMaxTime, n.slotLabelInterval, n.slotDuration, i), { dayMinWidth: g } = n, v = !g, y = g, C = n.dayHeaders && De(cEt, { resources: u, dates: d.dayTableModel.headerDates, dateProfile: a, datesRepDistinctDays: !0, renderIntro: v ? this.renderHeadAxis : null }), A = n.allDaySlot !== !1 && ((_) => De(ATt, Object.assign({}, o.allDay, { dateProfile: a, resourceDayTableModel: d, nextDayThreshold: n.nextDayThreshold, tableMinWidth: _.tableMinWidth, colGroupNode: _.tableColGroupNode, renderRowIntro: v ? this.renderTableRowAxis : null, showWeekNumbers: !1, expandRows: !1, headerAlignElRef: this.headerElRef, clientWidth: _.clientWidth, clientHeight: _.clientHeight, forPrint: t.forPrint }, this.getAllDayMaxEventProps()))), S = (_) => De(DTt, Object.assign({}, o.timed, { dateProfile: a, axis: v, slotDuration: n.slotDuration, slatMetas: f, resourceDayTableModel: d, tableColGroupNode: _.tableColGroupNode, tableMinWidth: _.tableMinWidth, clientWidth: _.clientWidth, clientHeight: _.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: _.expandRows, forPrint: t.forPrint, onScrollTopRequest: this.handleScrollTopRequest })); + return y ? this.renderHScrollLayout(C, A, S, d.colCnt, g, f, this.state.slatCoords) : this.renderSimpleLayout(C, A, S); + } +} +function MTt(e, t, r, n, i) { + let a = fxe(e, t); + return n ? new fEt(a, r, i) : new dEt(a, r, i); +} +var efe = rc({ + name: "@fullcalendar/resource-timegrid", + premiumReleaseDate: "2024-02-20", + deps: [ + eO, + $Ie, + pxe + ], + initialView: "resourceTimeGridDay", + views: { + resourceTimeGrid: { + type: "timeGrid", + component: OTt, + needsResourceData: !0 + }, + resourceTimeGridDay: { + type: "resourceTimeGrid", + duration: { days: 1 } + }, + resourceTimeGridWeek: { + type: "resourceTimeGrid", + duration: { weeks: 1 } + } + } +}); +If.COLLAPSIBLE_WIDTH_THRESHOLD = 1200; +let gw = [], v6 = []; +function kTt(e) { + gw.length || PTt(), gw.push(e), e.calendarApi.on("_unmount", () => { + byt(gw, e), gw.length || NTt(); + }); +} +function PTt() { + window.addEventListener("beforeprint", gxe), window.addEventListener("afterprint", vxe); +} +function NTt() { + window.removeEventListener("beforeprint", gxe), window.removeEventListener("afterprint", vxe); +} +function gxe() { + for (let e of gw) + e.emitter.trigger("_beforeprint"); + Jw(() => { + v6.push(LTt()); + }); +} +function vxe() { + for (let e of gw) + e.emitter.trigger("_afterprint"); + Jw(() => { + for (; v6.length; ) + v6.shift()(); + }); +} +function LTt() { + let e = jE(document.body, ".fc-scrollgrid"); + return e.forEach(FTt), () => e.forEach(BTt); +} +function FTt(e) { + let t = e.getBoundingClientRect().width; + (!e.classList.contains("fc-scrollgrid-collapsible") || t < If.COLLAPSIBLE_WIDTH_THRESHOLD) && (e.style.width = t + "px"); +} +function BTt(e) { + e.style.width = ""; +} +var UTt = ".fc .fc-event,.fc .fc-scrollgrid table tr{-moz-column-break-inside:avoid;break-inside:avoid}.fc-media-print{display:block;max-width:100%}.fc-media-print .fc-bg-event,.fc-media-print .fc-non-business,.fc-media-print .fc-timegrid-axis-chunk,.fc-media-print .fc-timegrid-slots,.fc-media-print .fc-timeline-slots{display:none}.fc-media-print .fc-h-event,.fc-media-print .fc-toolbar button,.fc-media-print .fc-v-event{background:#fff!important;color:#000!important}.fc-media-print .fc-event,.fc-media-print .fc-event-main{color:#000!important}.fc-media-print .fc-timegrid-event{margin:.5em 0}"; +P0(UTt); +var tfe = rc({ + name: "@fullcalendar/adaptive", + premiumReleaseDate: "2024-02-20", + deps: [eO], + contextInit: kTt +}), jTt = rc({ + name: "@fullcalendar/daygrid", + initialView: "dayGridMonth", + views: { + dayGrid: { + component: YCt, + dateProfileGeneratorClass: nxe + }, + dayGridDay: { + type: "dayGrid", + duration: { days: 1 } + }, + dayGridWeek: { + type: "dayGrid", + duration: { weeks: 1 } + }, + dayGridMonth: { + type: "dayGrid", + duration: { months: 1 }, + fixedWeekCount: !0 + }, + dayGridYear: { + type: "dayGrid", + duration: { years: 1 } + } + } +}); +class $Tt extends tc { + constructor() { + super(...arguments), this.buildDayTableModel = Gr(rxe), this.slicer = new q7(), this.state = { + labelId: jm() + }; + } + render() { + const { props: t, state: r, context: n } = this, { dateProfile: i, forPrint: a } = t, { options: o } = n, l = this.buildDayTableModel(i, n.dateProfileGenerator), u = this.slicer.sliceProps(t, i, o.nextDayThreshold, n, l), d = t.tableWidth != null ? t.tableWidth / o.aspectRatio : null, f = l.cells.length, g = d != null ? d / f : null; + return De( + "div", + { ref: t.elRef, "data-date": t.isoDateStr, className: "fc-multimonth-month", style: { width: t.width }, role: "grid", "aria-labelledby": r.labelId }, + De( + "div", + { className: "fc-multimonth-header", style: { marginBottom: g }, role: "presentation" }, + De("div", { className: "fc-multimonth-title", id: r.labelId }, n.dateEnv.format(t.dateProfile.currentRange.start, t.titleFormat)), + De( + "table", + { className: [ + "fc-multimonth-header-table", + n.theme.getClass("table") + ].join(" "), role: "presentation" }, + De( + "thead", + { role: "rowgroup" }, + De(O7, { dateProfile: t.dateProfile, dates: l.headerDates, datesRepDistinctDays: !1 }) + ) + ) + ), + De( + "div", + { className: [ + "fc-multimonth-daygrid", + "fc-daygrid", + "fc-daygrid-body", + !a && "fc-daygrid-body-balanced", + a && "fc-daygrid-body-unbalanced", + a && "fc-daygrid-body-natural" + ].join(" "), style: { marginTop: -g } }, + De( + "table", + { className: [ + "fc-multimonth-daygrid-table", + n.theme.getClass("table") + ].join(" "), style: { height: a ? "" : d }, role: "presentation" }, + De( + "tbody", + { role: "rowgroup" }, + De(QIe, Object.assign({}, u, { dateProfile: i, cells: l.cells, eventSelection: t.eventSelection, dayMaxEvents: !a, dayMaxEventRows: !a, showWeekNumbers: o.weekNumbers, clientWidth: t.clientWidth, clientHeight: t.clientHeight, forPrint: a })) + ) + ) + ) + ); + } +} +class VTt extends tc { + constructor() { + super(...arguments), this.splitDateProfileByMonth = Gr(HTt), this.buildMonthFormat = Gr(YTt), this.scrollElRef = Ga(), this.firstMonthElRef = Ga(), this.needsScrollReset = !1, this.handleSizing = (t) => { + t && this.updateSize(); + }; + } + render() { + const { context: t, props: r, state: n } = this, { options: i } = t, { clientWidth: a, clientHeight: o } = n, l = n.monthHPadding || 0, u = Math.min(a != null ? Math.floor(a / (i.multiMonthMinWidth + l)) : 1, i.multiMonthMaxColumns) || 1, d = 100 / u + "%", f = a == null ? null : a / u - l, g = a != null && u === 1, v = this.splitDateProfileByMonth(t.dateProfileGenerator, r.dateProfile, t.dateEnv, g ? !1 : i.fixedWeekCount, i.showNonCurrentDates), y = this.buildMonthFormat(i.multiMonthTitleFormat, v), C = [ + "fc-multimonth", + g ? "fc-multimonth-singlecol" : "fc-multimonth-multicol", + f != null && f < 400 ? "fc-multimonth-compact" : "" + ]; + return De(w0, { elRef: this.scrollElRef, elClasses: C, viewSpec: t.viewSpec }, v.map((A, S) => { + const _ = n6(A.currentRange.start); + return De($Tt, Object.assign({}, r, { key: _, isoDateStr: _, elRef: S === 0 ? this.firstMonthElRef : void 0, titleFormat: y, dateProfile: A, width: d, tableWidth: f, clientWidth: a, clientHeight: o })); + })); + } + componentDidMount() { + this.updateSize(), this.context.addResizeHandler(this.handleSizing), this.requestScrollReset(); + } + componentDidUpdate(t) { + Cc(t, this.props) || this.handleSizing(!1), t.dateProfile !== this.props.dateProfile ? this.requestScrollReset() : this.flushScrollReset(); + } + componentWillUnmount() { + this.context.removeResizeHandler(this.handleSizing); + } + updateSize() { + const t = this.scrollElRef.current, r = this.firstMonthElRef.current; + t && this.setState({ + clientWidth: t.clientWidth, + clientHeight: t.clientHeight + }), r && t && this.state.monthHPadding == null && this.setState({ + monthHPadding: t.clientWidth - // go within padding + r.firstChild.offsetWidth + }); + } + requestScrollReset() { + this.needsScrollReset = !0, this.flushScrollReset(); + } + flushScrollReset() { + if (this.needsScrollReset && this.state.monthHPadding != null) { + const { currentDate: t } = this.props.dateProfile, r = this.scrollElRef.current, n = r.querySelector(`[data-date="${n6(t)}"]`); + r.scrollTop = n.getBoundingClientRect().top - this.firstMonthElRef.current.getBoundingClientRect().top, this.needsScrollReset = !1; + } + } + // workaround for when queued setState render (w/ clientWidth) gets cancelled because + // subsequent update and shouldComponentUpdate says not to render :( + shouldComponentUpdate() { + return !0; + } +} +const zTt = na(1, "month"); +function HTt(e, t, r, n, i) { + const { start: a, end: o } = t.currentRange; + let l = a; + const u = []; + for (; l.valueOf() < o.valueOf(); ) { + const d = r.add(l, zTt), f = { + // yuck + start: e.skipHiddenDays(l), + end: e.skipHiddenDays(d, -1, !0) + }; + let g = ixe({ + currentRange: f, + snapToWeek: !0, + fixedWeekCount: n, + dateEnv: r + }); + g = { + // yuck + start: e.skipHiddenDays(g.start), + end: e.skipHiddenDays(g.end, -1, !0) + }; + const v = t.activeRange ? cv(t.activeRange, i ? g : f) : null; + u.push({ + currentDate: t.currentDate, + isValid: t.isValid, + validRange: t.validRange, + renderRange: g, + activeRange: v, + currentRange: f, + currentRangeUnit: "month", + isRangeAllDay: !0, + dateIncrement: t.dateIncrement, + slotMinTime: t.slotMaxTime, + slotMaxTime: t.slotMinTime + }), l = d; + } + return u; +} +const WTt = co({ year: "numeric", month: "long" }), GTt = co({ month: "long" }); +function YTt(e, t) { + return e || (t[0].currentRange.start.getUTCFullYear() !== t[t.length - 1].currentRange.start.getUTCFullYear() ? WTt : GTt); +} +const XTt = { + multiMonthTitleFormat: co, + multiMonthMaxColumns: Number, + multiMonthMinWidth: Number +}; +var KTt = ".fc .fc-multimonth{border:1px solid var(--fc-border-color);display:flex;flex-wrap:wrap;overflow-x:hidden;overflow-y:auto}.fc .fc-multimonth-title{font-size:1.2em;font-weight:700;padding:1em 0;text-align:center}.fc .fc-multimonth-daygrid{background:var(--fc-page-bg-color)}.fc .fc-multimonth-daygrid-table,.fc .fc-multimonth-header-table{table-layout:fixed;width:100%}.fc .fc-multimonth-daygrid-table{border-top-style:hidden!important}.fc .fc-multimonth-singlecol .fc-multimonth{position:relative}.fc .fc-multimonth-singlecol .fc-multimonth-header{background:var(--fc-page-bg-color);position:relative;top:0;z-index:2}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid{position:relative;z-index:1}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid-table,.fc .fc-multimonth-singlecol .fc-multimonth-header-table{border-left-style:hidden;border-right-style:hidden}.fc .fc-multimonth-singlecol .fc-multimonth-month:last-child .fc-multimonth-daygrid-table{border-bottom-style:hidden}.fc .fc-multimonth-multicol{line-height:1}.fc .fc-multimonth-multicol .fc-multimonth-month{padding:0 1.2em 1.2em}.fc .fc-multimonth-multicol .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);display:block;float:none;padding:1px}.fc .fc-multimonth-compact{line-height:1}.fc .fc-multimonth-compact .fc-multimonth-daygrid-table,.fc .fc-multimonth-compact .fc-multimonth-header-table{font-size:.9em}.fc-media-screen .fc-multimonth-singlecol .fc-multimonth-header{position:sticky}.fc-media-print .fc-multimonth{overflow:visible}"; +P0(KTt); +var ZTt = rc({ + name: "@fullcalendar/multimonth", + initialView: "multiMonthYear", + optionRefiners: XTt, + views: { + multiMonth: { + component: VTt, + dateProfileGeneratorClass: nxe, + multiMonthMinWidth: 350, + multiMonthMaxColumns: 3 + }, + multiMonthYear: { + type: "multiMonth", + duration: { years: 1 }, + fixedWeekCount: !0, + showNonCurrentDates: !1 + } + } +}); +If.touchMouseIgnoreWait = 500; +let m6 = 0, k2 = 0, y6 = !1; +class mxe { + constructor(t) { + this.subjectEl = null, this.selector = "", this.handleSelector = "", this.shouldIgnoreMove = !1, this.shouldWatchScroll = !0, this.isDragging = !1, this.isTouchDragging = !1, this.wasTouchScroll = !1, this.handleMouseDown = (r) => { + if (!this.shouldIgnoreMouse() && qTt(r) && this.tryStart(r)) { + let n = this.createEventFromMouse(r, !0); + this.emitter.trigger("pointerdown", n), this.initScrollWatch(n), this.shouldIgnoreMove || document.addEventListener("mousemove", this.handleMouseMove), document.addEventListener("mouseup", this.handleMouseUp); + } + }, this.handleMouseMove = (r) => { + let n = this.createEventFromMouse(r); + this.recordCoords(n), this.emitter.trigger("pointermove", n); + }, this.handleMouseUp = (r) => { + document.removeEventListener("mousemove", this.handleMouseMove), document.removeEventListener("mouseup", this.handleMouseUp), this.emitter.trigger("pointerup", this.createEventFromMouse(r)), this.cleanup(); + }, this.handleTouchStart = (r) => { + if (this.tryStart(r)) { + this.isTouchDragging = !0; + let n = this.createEventFromTouch(r, !0); + this.emitter.trigger("pointerdown", n), this.initScrollWatch(n); + let i = r.target; + this.shouldIgnoreMove || i.addEventListener("touchmove", this.handleTouchMove), i.addEventListener("touchend", this.handleTouchEnd), i.addEventListener("touchcancel", this.handleTouchEnd), window.addEventListener("scroll", this.handleTouchScroll, !0); + } + }, this.handleTouchMove = (r) => { + let n = this.createEventFromTouch(r); + this.recordCoords(n), this.emitter.trigger("pointermove", n); + }, this.handleTouchEnd = (r) => { + if (this.isDragging) { + let n = r.target; + n.removeEventListener("touchmove", this.handleTouchMove), n.removeEventListener("touchend", this.handleTouchEnd), n.removeEventListener("touchcancel", this.handleTouchEnd), window.removeEventListener("scroll", this.handleTouchScroll, !0), this.emitter.trigger("pointerup", this.createEventFromTouch(r)), this.cleanup(), this.isTouchDragging = !1, JTt(); + } + }, this.handleTouchScroll = () => { + this.wasTouchScroll = !0; + }, this.handleScroll = (r) => { + if (!this.shouldIgnoreMove) { + let n = window.pageXOffset - this.prevScrollX + this.prevPageX, i = window.pageYOffset - this.prevScrollY + this.prevPageY; + this.emitter.trigger("pointermove", { + origEvent: r, + isTouch: this.isTouchDragging, + subjectEl: this.subjectEl, + pageX: n, + pageY: i, + deltaX: n - this.origPageX, + deltaY: i - this.origPageY + }); + } + }, this.containerEl = t, this.emitter = new JD(), t.addEventListener("mousedown", this.handleMouseDown), t.addEventListener("touchstart", this.handleTouchStart, { passive: !0 }), QTt(); + } + destroy() { + this.containerEl.removeEventListener("mousedown", this.handleMouseDown), this.containerEl.removeEventListener("touchstart", this.handleTouchStart, { passive: !0 }), ewt(); + } + tryStart(t) { + let r = this.querySubjectEl(t), n = t.target; + return r && (!this.handleSelector || ql(n, this.handleSelector)) ? (this.subjectEl = r, this.isDragging = !0, this.wasTouchScroll = !1, !0) : !1; + } + cleanup() { + y6 = !1, this.isDragging = !1, this.subjectEl = null, this.destroyScrollWatch(); + } + querySubjectEl(t) { + return this.selector ? ql(t.target, this.selector) : this.containerEl; + } + shouldIgnoreMouse() { + return m6 || this.isTouchDragging; + } + // can be called by user of this class, to cancel touch-based scrolling for the current drag + cancelTouchScroll() { + this.isDragging && (y6 = !0); + } + // Scrolling that simulates pointermoves + // ---------------------------------------------------------------------------------------------------- + initScrollWatch(t) { + this.shouldWatchScroll && (this.recordCoords(t), window.addEventListener("scroll", this.handleScroll, !0)); + } + recordCoords(t) { + this.shouldWatchScroll && (this.prevPageX = t.pageX, this.prevPageY = t.pageY, this.prevScrollX = window.pageXOffset, this.prevScrollY = window.pageYOffset); + } + destroyScrollWatch() { + this.shouldWatchScroll && window.removeEventListener("scroll", this.handleScroll, !0); + } + // Event Normalization + // ---------------------------------------------------------------------------------------------------- + createEventFromMouse(t, r) { + let n = 0, i = 0; + return r ? (this.origPageX = t.pageX, this.origPageY = t.pageY) : (n = t.pageX - this.origPageX, i = t.pageY - this.origPageY), { + origEvent: t, + isTouch: !1, + subjectEl: this.subjectEl, + pageX: t.pageX, + pageY: t.pageY, + deltaX: n, + deltaY: i + }; + } + createEventFromTouch(t, r) { + let n = t.touches, i, a, o = 0, l = 0; + return n && n.length ? (i = n[0].pageX, a = n[0].pageY) : (i = t.pageX, a = t.pageY), r ? (this.origPageX = i, this.origPageY = a) : (o = i - this.origPageX, l = a - this.origPageY), { + origEvent: t, + isTouch: !0, + subjectEl: this.subjectEl, + pageX: i, + pageY: a, + deltaX: o, + deltaY: l + }; + } +} +function qTt(e) { + return e.button === 0 && !e.ctrlKey; +} +function JTt() { + m6 += 1, setTimeout(() => { + m6 -= 1; + }, If.touchMouseIgnoreWait); +} +function QTt() { + k2 += 1, k2 === 1 && window.addEventListener("touchmove", yxe, { passive: !1 }); +} +function ewt() { + k2 -= 1, k2 || window.removeEventListener("touchmove", yxe, { passive: !1 }); +} +function yxe(e) { + y6 && e.preventDefault(); +} +class twt { + constructor() { + this.isVisible = !1, this.sourceEl = null, this.mirrorEl = null, this.sourceElRect = null, this.parentNode = document.body, this.zIndex = 9999, this.revertDuration = 0; + } + start(t, r, n) { + this.sourceEl = t, this.sourceElRect = this.sourceEl.getBoundingClientRect(), this.origScreenX = r - window.pageXOffset, this.origScreenY = n - window.pageYOffset, this.deltaX = 0, this.deltaY = 0, this.updateElPosition(); + } + handleMove(t, r) { + this.deltaX = t - window.pageXOffset - this.origScreenX, this.deltaY = r - window.pageYOffset - this.origScreenY, this.updateElPosition(); + } + // can be called before start + setIsVisible(t) { + t ? this.isVisible || (this.mirrorEl && (this.mirrorEl.style.display = ""), this.isVisible = t, this.updateElPosition()) : this.isVisible && (this.mirrorEl && (this.mirrorEl.style.display = "none"), this.isVisible = t); + } + // always async + stop(t, r) { + let n = () => { + this.cleanup(), r(); + }; + t && this.mirrorEl && this.isVisible && this.revertDuration && // if 0, transition won't work + (this.deltaX || this.deltaY) ? this.doRevertAnimation(n, this.revertDuration) : setTimeout(n, 0); + } + doRevertAnimation(t, r) { + let n = this.mirrorEl, i = this.sourceEl.getBoundingClientRect(); + n.style.transition = "top " + r + "ms,left " + r + "ms", Dw(n, { + left: i.left, + top: i.top + }), ayt(n, () => { + n.style.transition = "", t(); + }); + } + cleanup() { + this.mirrorEl && (DB(this.mirrorEl), this.mirrorEl = null), this.sourceEl = null; + } + updateElPosition() { + this.sourceEl && this.isVisible && Dw(this.getMirrorEl(), { + left: this.sourceElRect.left + this.deltaX, + top: this.sourceElRect.top + this.deltaY + }); + } + getMirrorEl() { + let t = this.sourceElRect, r = this.mirrorEl; + return r || (r = this.mirrorEl = this.sourceEl.cloneNode(!0), r.style.userSelect = "none", r.style.webkitUserSelect = "none", r.classList.add("fc-event-dragging"), Dw(r, { + position: "fixed", + zIndex: this.zIndex, + visibility: "", + boxSizing: "border-box", + width: t.right - t.left, + height: t.bottom - t.top, + right: "auto", + bottom: "auto", + margin: 0 + }), this.parentNode.appendChild(r)), r; + } +} +class _xe extends A7 { + constructor(t, r) { + super(), this.handleScroll = () => { + this.scrollTop = this.scrollController.getScrollTop(), this.scrollLeft = this.scrollController.getScrollLeft(), this.handleScrollChange(); + }, this.scrollController = t, this.doesListening = r, this.scrollTop = this.origScrollTop = t.getScrollTop(), this.scrollLeft = this.origScrollLeft = t.getScrollLeft(), this.scrollWidth = t.getScrollWidth(), this.scrollHeight = t.getScrollHeight(), this.clientWidth = t.getClientWidth(), this.clientHeight = t.getClientHeight(), this.clientRect = this.computeClientRect(), this.doesListening && this.getEventTarget().addEventListener("scroll", this.handleScroll); + } + destroy() { + this.doesListening && this.getEventTarget().removeEventListener("scroll", this.handleScroll); + } + getScrollTop() { + return this.scrollTop; + } + getScrollLeft() { + return this.scrollLeft; + } + setScrollTop(t) { + this.scrollController.setScrollTop(t), this.doesListening || (this.scrollTop = Math.max(Math.min(t, this.getMaxScrollTop()), 0), this.handleScrollChange()); + } + setScrollLeft(t) { + this.scrollController.setScrollLeft(t), this.doesListening || (this.scrollLeft = Math.max(Math.min(t, this.getMaxScrollLeft()), 0), this.handleScrollChange()); + } + getClientWidth() { + return this.clientWidth; + } + getClientHeight() { + return this.clientHeight; + } + getScrollWidth() { + return this.scrollWidth; + } + getScrollHeight() { + return this.scrollHeight; + } + handleScrollChange() { + } +} +class Sxe extends _xe { + constructor(t, r) { + super(new v0t(t), r); + } + getEventTarget() { + return this.scrollController.el; + } + computeClientRect() { + return Fwe(this.scrollController.el); + } +} +class rwt extends _xe { + constructor(t) { + super(new m0t(), t); + } + getEventTarget() { + return window; + } + computeClientRect() { + return { + left: this.scrollLeft, + right: this.scrollLeft + this.clientWidth, + top: this.scrollTop, + bottom: this.scrollTop + this.clientHeight + }; + } + // the window is the only scroll object that changes it's rectangle relative + // to the document's topleft as it scrolls + handleScrollChange() { + this.clientRect = this.computeClientRect(); + } +} +const rfe = typeof performance == "function" ? performance.now : Date.now; +class nwt { + constructor() { + this.isEnabled = !0, this.scrollQuery = [window, ".fc-scroller"], this.edgeThreshold = 50, this.maxVelocity = 300, this.pointerScreenX = null, this.pointerScreenY = null, this.isAnimating = !1, this.scrollCaches = null, this.everMovedUp = !1, this.everMovedDown = !1, this.everMovedLeft = !1, this.everMovedRight = !1, this.animate = () => { + if (this.isAnimating) { + let t = this.computeBestEdge(this.pointerScreenX + window.pageXOffset, this.pointerScreenY + window.pageYOffset); + if (t) { + let r = rfe(); + this.handleSide(t, (r - this.msSinceRequest) / 1e3), this.requestAnimation(r); + } else + this.isAnimating = !1; + } + }; + } + start(t, r, n) { + this.isEnabled && (this.scrollCaches = this.buildCaches(n), this.pointerScreenX = null, this.pointerScreenY = null, this.everMovedUp = !1, this.everMovedDown = !1, this.everMovedLeft = !1, this.everMovedRight = !1, this.handleMove(t, r)); + } + handleMove(t, r) { + if (this.isEnabled) { + let n = t - window.pageXOffset, i = r - window.pageYOffset, a = this.pointerScreenY === null ? 0 : i - this.pointerScreenY, o = this.pointerScreenX === null ? 0 : n - this.pointerScreenX; + a < 0 ? this.everMovedUp = !0 : a > 0 && (this.everMovedDown = !0), o < 0 ? this.everMovedLeft = !0 : o > 0 && (this.everMovedRight = !0), this.pointerScreenX = n, this.pointerScreenY = i, this.isAnimating || (this.isAnimating = !0, this.requestAnimation(rfe())); + } + } + stop() { + if (this.isEnabled) { + this.isAnimating = !1; + for (let t of this.scrollCaches) + t.destroy(); + this.scrollCaches = null; + } + } + requestAnimation(t) { + this.msSinceRequest = t, requestAnimationFrame(this.animate); + } + handleSide(t, r) { + let { scrollCache: n } = t, { edgeThreshold: i } = this, a = i - t.distance, o = ( + // the closer to the edge, the faster we scroll + a * a / (i * i) * // quadratic + this.maxVelocity * r + ), l = 1; + switch (t.name) { + case "left": + l = -1; + case "right": + n.setScrollLeft(n.getScrollLeft() + o * l); + break; + case "top": + l = -1; + case "bottom": + n.setScrollTop(n.getScrollTop() + o * l); + break; + } + } + // left/top are relative to document topleft + computeBestEdge(t, r) { + let { edgeThreshold: n } = this, i = null, a = this.scrollCaches || []; + for (let o of a) { + let l = o.clientRect, u = t - l.left, d = l.right - t, f = r - l.top, g = l.bottom - r; + u >= 0 && d >= 0 && f >= 0 && g >= 0 && (f <= n && this.everMovedUp && o.canScrollUp() && (!i || i.distance > f) && (i = { scrollCache: o, name: "top", distance: f }), g <= n && this.everMovedDown && o.canScrollDown() && (!i || i.distance > g) && (i = { scrollCache: o, name: "bottom", distance: g }), u <= n && this.everMovedLeft && o.canScrollLeft() && (!i || i.distance > u) && (i = { scrollCache: o, name: "left", distance: u }), d <= n && this.everMovedRight && o.canScrollRight() && (!i || i.distance > d) && (i = { scrollCache: o, name: "right", distance: d })); + } + return i; + } + buildCaches(t) { + return this.queryScrollEls(t).map((r) => r === window ? new rwt(!1) : new Sxe(r, !1)); + } + queryScrollEls(t) { + let r = []; + for (let n of this.scrollQuery) + typeof n == "object" ? r.push(n) : r.push(...Array.prototype.slice.call(t.getRootNode().querySelectorAll(n))); + return r; + } +} +class tO extends _0t { + constructor(t, r) { + super(t), this.containerEl = t, this.delay = null, this.minDistance = 0, this.touchScrollAllowed = !0, this.mirrorNeedsRevert = !1, this.isInteracting = !1, this.isDragging = !1, this.isDelayEnded = !1, this.isDistanceSurpassed = !1, this.delayTimeoutId = null, this.onPointerDown = (i) => { + this.isDragging || (this.isInteracting = !0, this.isDelayEnded = !1, this.isDistanceSurpassed = !1, oyt(document.body), lyt(document.body), i.isTouch || i.origEvent.preventDefault(), this.emitter.trigger("pointerdown", i), this.isInteracting && // not destroyed via pointerdown handler + !this.pointer.shouldIgnoreMove && (this.mirror.setIsVisible(!1), this.mirror.start(i.subjectEl, i.pageX, i.pageY), this.startDelay(i), this.minDistance || this.handleDistanceSurpassed(i))); + }, this.onPointerMove = (i) => { + if (this.isInteracting) { + if (this.emitter.trigger("pointermove", i), !this.isDistanceSurpassed) { + let a = this.minDistance, o, { deltaX: l, deltaY: u } = i; + o = l * l + u * u, o >= a * a && this.handleDistanceSurpassed(i); + } + this.isDragging && (i.origEvent.type !== "scroll" && (this.mirror.handleMove(i.pageX, i.pageY), this.autoScroller.handleMove(i.pageX, i.pageY)), this.emitter.trigger("dragmove", i)); + } + }, this.onPointerUp = (i) => { + this.isInteracting && (this.isInteracting = !1, syt(document.body), cyt(document.body), this.emitter.trigger("pointerup", i), this.isDragging && (this.autoScroller.stop(), this.tryStopDrag(i)), this.delayTimeoutId && (clearTimeout(this.delayTimeoutId), this.delayTimeoutId = null)); + }; + let n = this.pointer = new mxe(t); + n.emitter.on("pointerdown", this.onPointerDown), n.emitter.on("pointermove", this.onPointerMove), n.emitter.on("pointerup", this.onPointerUp), r && (n.selector = r), this.mirror = new twt(), this.autoScroller = new nwt(); + } + destroy() { + this.pointer.destroy(), this.onPointerUp({}); + } + startDelay(t) { + typeof this.delay == "number" ? this.delayTimeoutId = setTimeout(() => { + this.delayTimeoutId = null, this.handleDelayEnd(t); + }, this.delay) : this.handleDelayEnd(t); + } + handleDelayEnd(t) { + this.isDelayEnded = !0, this.tryStartDrag(t); + } + handleDistanceSurpassed(t) { + this.isDistanceSurpassed = !0, this.tryStartDrag(t); + } + tryStartDrag(t) { + this.isDelayEnded && this.isDistanceSurpassed && (!this.pointer.wasTouchScroll || this.touchScrollAllowed) && (this.isDragging = !0, this.mirrorNeedsRevert = !1, this.autoScroller.start(t.pageX, t.pageY, this.containerEl), this.emitter.trigger("dragstart", t), this.touchScrollAllowed === !1 && this.pointer.cancelTouchScroll()); + } + tryStopDrag(t) { + this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, t)); + } + stopDrag(t) { + this.isDragging = !1, this.emitter.trigger("dragend", t); + } + // fill in the implementations... + setIgnoreMove(t) { + this.pointer.shouldIgnoreMove = t; + } + setMirrorIsVisible(t) { + this.mirror.setIsVisible(t); + } + setMirrorNeedsRevert(t) { + this.mirrorNeedsRevert = t; + } + setAutoScrollEnabled(t) { + this.autoScroller.isEnabled = t; + } +} +class iwt { + constructor(t) { + this.origRect = x7(t), this.scrollCaches = Bwe(t).map((r) => new Sxe(r, !0)); + } + destroy() { + for (let t of this.scrollCaches) + t.destroy(); + } + computeLeft() { + let t = this.origRect.left; + for (let r of this.scrollCaches) + t += r.origScrollLeft - r.getScrollLeft(); + return t; + } + computeTop() { + let t = this.origRect.top; + for (let r of this.scrollCaches) + t += r.origScrollTop - r.getScrollTop(); + return t; + } + isWithinClipping(t, r) { + let n = { left: t, top: r }; + for (let i of this.scrollCaches) + if (!awt(i.getEventTarget()) && !o0t(n, i.clientRect)) + return !1; + return !0; + } +} +function awt(e) { + let t = e.tagName; + return t === "HTML" || t === "BODY"; +} +class VB { + constructor(t, r) { + this.useSubjectCenter = !1, this.requireInitial = !0, this.initialHit = null, this.movingHit = null, this.finalHit = null, this.handlePointerDown = (n) => { + let { dragging: i } = this; + this.initialHit = null, this.movingHit = null, this.finalHit = null, this.prepareHits(), this.processFirstCoord(n), this.initialHit || !this.requireInitial ? (i.setIgnoreMove(!1), this.emitter.trigger("pointerdown", n)) : i.setIgnoreMove(!0); + }, this.handleDragStart = (n) => { + this.emitter.trigger("dragstart", n), this.handleMove(n, !0); + }, this.handleDragMove = (n) => { + this.emitter.trigger("dragmove", n), this.handleMove(n); + }, this.handlePointerUp = (n) => { + this.releaseHits(), this.emitter.trigger("pointerup", n); + }, this.handleDragEnd = (n) => { + this.movingHit && this.emitter.trigger("hitupdate", null, !0, n), this.finalHit = this.movingHit, this.movingHit = null, this.emitter.trigger("dragend", n); + }, this.droppableStore = r, t.emitter.on("pointerdown", this.handlePointerDown), t.emitter.on("dragstart", this.handleDragStart), t.emitter.on("dragmove", this.handleDragMove), t.emitter.on("pointerup", this.handlePointerUp), t.emitter.on("dragend", this.handleDragEnd), this.dragging = t, this.emitter = new JD(); + } + // sets initialHit + // sets coordAdjust + processFirstCoord(t) { + let r = { left: t.pageX, top: t.pageY }, n = r, i = t.subjectEl, a; + i instanceof HTMLElement && (a = x7(i), n = s0t(n, a)); + let o = this.initialHit = this.queryHitForOffset(n.left, n.top); + if (o) { + if (this.useSubjectCenter && a) { + let l = Mwe(a, o.rect); + l && (n = l0t(l)); + } + this.coordAdjust = c0t(n, r); + } else + this.coordAdjust = { left: 0, top: 0 }; + } + handleMove(t, r) { + let n = this.queryHitForOffset(t.pageX + this.coordAdjust.left, t.pageY + this.coordAdjust.top); + (r || !zB(this.movingHit, n)) && (this.movingHit = n, this.emitter.trigger("hitupdate", n, !1, t)); + } + prepareHits() { + this.offsetTrackers = _l(this.droppableStore, (t) => (t.component.prepareHits(), new iwt(t.el))); + } + releaseHits() { + let { offsetTrackers: t } = this; + for (let r in t) + t[r].destroy(); + this.offsetTrackers = {}; + } + queryHitForOffset(t, r) { + let { droppableStore: n, offsetTrackers: i } = this, a = null; + for (let o in n) { + let l = n[o].component, u = i[o]; + if (u && // wasn't destroyed mid-drag + u.isWithinClipping(t, r)) { + let d = u.computeLeft(), f = u.computeTop(), g = t - d, v = r - f, { origRect: y } = u, C = y.right - y.left, A = y.bottom - y.top; + if ( + // must be within the element's bounds + g >= 0 && g < C && v >= 0 && v < A + ) { + let S = l.queryHit(g, v, C, A); + S && // make sure the hit is within activeRange, meaning it's not a dead cell + PB(S.dateProfile.activeRange, S.dateSpan.range) && (!a || S.layer > a.layer) && (S.componentId = o, S.context = l.context, S.rect.left += d, S.rect.right += d, S.rect.top += f, S.rect.bottom += f, a = S); + } + } + } + return a; + } +} +function zB(e, t) { + return !e && !t ? !0 : !!e != !!t ? !1 : Q_t(e.dateSpan, t.dateSpan); +} +function bxe(e, t) { + let r = {}; + for (let n of t.pluginHooks.datePointTransforms) + Object.assign(r, n(e, t)); + return Object.assign(r, owt(e, t.dateEnv)), r; +} +function owt(e, t) { + return { + date: t.toDate(e.range.start), + dateStr: t.formatIso(e.range.start, { omitTime: e.allDay }), + allDay: e.allDay + }; +} +class swt extends LI { + constructor(t) { + super(t), this.handlePointerDown = (n) => { + let { dragging: i } = this, a = n.origEvent.target; + i.setIgnoreMove(!this.component.isValidDateDownEl(a)); + }, this.handleDragEnd = (n) => { + let { component: i } = this, { pointer: a } = this.dragging; + if (!a.wasTouchScroll) { + let { initialHit: o, finalHit: l } = this.hitDragging; + if (o && l && zB(o, l)) { + let { context: u } = i, d = Object.assign(Object.assign({}, bxe(o.dateSpan, u)), { dayEl: o.dayEl, jsEvent: n.origEvent, view: u.viewApi || u.calendarApi.view }); + u.emitter.trigger("dateClick", d); + } + } + }, this.dragging = new tO(t.el), this.dragging.autoScroller.isEnabled = !1; + let r = this.hitDragging = new VB(this.dragging, w7(t)); + r.emitter.on("pointerdown", this.handlePointerDown), r.emitter.on("dragend", this.handleDragEnd); + } + destroy() { + this.dragging.destroy(); + } +} +class lwt extends LI { + constructor(t) { + super(t), this.dragSelection = null, this.handlePointerDown = (o) => { + let { component: l, dragging: u } = this, { options: d } = l.context, f = d.selectable && l.isValidDateDownEl(o.origEvent.target); + u.setIgnoreMove(!f), u.delay = o.isTouch ? cwt(l) : null; + }, this.handleDragStart = (o) => { + this.component.context.calendarApi.unselect(o); + }, this.handleHitUpdate = (o, l) => { + let { context: u } = this.component, d = null, f = !1; + if (o) { + let g = this.hitDragging.initialHit; + o.componentId === g.componentId && this.isHitComboAllowed && !this.isHitComboAllowed(g, o) || (d = uwt(g, o, u.pluginHooks.dateSelectionTransformers)), (!d || !E0t(d, o.dateProfile, u)) && (f = !0, d = null); + } + d ? u.dispatch({ type: "SELECT_DATES", selection: d }) : l || u.dispatch({ type: "UNSELECT_DATES" }), f ? l7() : c7(), l || (this.dragSelection = d); + }, this.handlePointerUp = (o) => { + this.dragSelection && (wwe(this.dragSelection, o, this.component.context), this.dragSelection = null); + }; + let { component: r } = t, { options: n } = r.context, i = this.dragging = new tO(t.el); + i.touchScrollAllowed = !1, i.minDistance = n.selectMinDistance || 0, i.autoScroller.isEnabled = n.dragScroll; + let a = this.hitDragging = new VB(this.dragging, w7(t)); + a.emitter.on("pointerdown", this.handlePointerDown), a.emitter.on("dragstart", this.handleDragStart), a.emitter.on("hitupdate", this.handleHitUpdate), a.emitter.on("pointerup", this.handlePointerUp); + } + destroy() { + this.dragging.destroy(); + } +} +function cwt(e) { + let { options: t } = e.context, r = t.selectLongPressDelay; + return r == null && (r = t.longPressDelay), r; +} +function uwt(e, t, r) { + let n = e.dateSpan, i = t.dateSpan, a = [ + n.range.start, + n.range.end, + i.range.start, + i.range.end + ]; + a.sort(hyt); + let o = {}; + for (let l of r) { + let u = l(e, t); + if (u === !1) + return null; + u && Object.assign(o, u); + } + return o.range = { start: a[0], end: a[3] }, o.allDay = n.allDay, o; +} +class rO extends LI { + constructor(t) { + super(t), this.subjectEl = null, this.subjectSeg = null, this.isDragging = !1, this.eventRange = null, this.relevantEvents = null, this.receivingContext = null, this.validMutation = null, this.mutatedRelevantEvents = null, this.handlePointerDown = (o) => { + let l = o.origEvent.target, { component: u, dragging: d } = this, { mirror: f } = d, { options: g } = u.context, v = u.context; + this.subjectEl = o.subjectEl; + let y = this.subjectSeg = Qw(o.subjectEl), A = (this.eventRange = y.eventRange).instance.instanceId; + this.relevantEvents = y7(v.getCurrentData().eventStore, A), d.minDistance = o.isTouch ? 0 : g.eventDragMinDistance, d.delay = // only do a touch delay if touch and this event hasn't been selected yet + o.isTouch && A !== u.props.eventSelection ? dwt(u) : null, g.fixedMirrorParent ? f.parentNode = g.fixedMirrorParent : f.parentNode = ql(l, ".fc"), f.revertDuration = g.dragRevertDuration; + let S = u.isValidSegDownEl(l) && !ql(l, ".fc-event-resizer"); + d.setIgnoreMove(!S), this.isDragging = S && o.subjectEl.classList.contains("fc-event-draggable"); + }, this.handleDragStart = (o) => { + let l = this.component.context, u = this.eventRange, d = u.instance.instanceId; + o.isTouch ? d !== this.component.props.eventSelection && l.dispatch({ type: "SELECT_EVENT", eventInstanceId: d }) : l.dispatch({ type: "UNSELECT_EVENT" }), this.isDragging && (l.calendarApi.unselect(o), l.emitter.trigger("eventDragStart", { + el: this.subjectEl, + event: new Vo(l, u.def, u.instance), + jsEvent: o.origEvent, + view: l.viewApi + })); + }, this.handleHitUpdate = (o, l) => { + if (!this.isDragging) + return; + let u = this.relevantEvents, d = this.hitDragging.initialHit, f = this.component.context, g = null, v = null, y = null, C = !1, A = { + affectedEvents: u, + mutatedEvents: gd(), + isEvent: !0 + }; + if (o) { + g = o.context; + let S = g.options; + f === g || S.editable && S.droppable ? (v = hwt(d, o, g.getCurrentData().pluginHooks.eventDragMutationMassagers), v && (y = b7(u, g.getCurrentData().eventUiBases, v, g), A.mutatedEvents = y, Ywe(A, o.dateProfile, g) || (C = !0, v = null, y = null, A.mutatedEvents = gd()))) : g = null; + } + this.displayDrag(g, A), C ? l7() : c7(), l || (f === g && // TODO: write test for this + zB(d, o) && (v = null), this.dragging.setMirrorNeedsRevert(!v), this.dragging.setMirrorIsVisible(!o || !this.subjectEl.getRootNode().querySelector(".fc-event-mirror")), this.receivingContext = g, this.validMutation = v, this.mutatedRelevantEvents = y); + }, this.handlePointerUp = () => { + this.isDragging || this.cleanup(); + }, this.handleDragEnd = (o) => { + if (this.isDragging) { + let l = this.component.context, u = l.viewApi, { receivingContext: d, validMutation: f } = this, g = this.eventRange.def, v = this.eventRange.instance, y = new Vo(l, g, v), C = this.relevantEvents, A = this.mutatedRelevantEvents, { finalHit: S } = this.hitDragging; + if (this.clearDrag(), l.emitter.trigger("eventDragStop", { + el: this.subjectEl, + event: y, + jsEvent: o.origEvent, + view: u + }), f) { + if (d === l) { + let _ = new Vo(l, A.defs[g.defId], v ? A.instances[v.instanceId] : null); + l.dispatch({ + type: "MERGE_EVENTS", + eventStore: A + }); + let E = { + oldEvent: y, + event: _, + relatedEvents: nE(A, l, v), + revert() { + l.dispatch({ + type: "MERGE_EVENTS", + eventStore: C + // the pre-change data + }); + } + }, I = {}; + for (let w of l.getCurrentData().pluginHooks.eventDropTransformers) + Object.assign(I, w(f, l)); + l.emitter.trigger("eventDrop", Object.assign(Object.assign(Object.assign({}, E), I), { el: o.subjectEl, delta: f.datesDelta, jsEvent: o.origEvent, view: u })), l.emitter.trigger("eventChange", E); + } else if (d) { + let _ = { + event: y, + relatedEvents: nE(C, l, v), + revert() { + l.dispatch({ + type: "MERGE_EVENTS", + eventStore: C + }); + } + }; + l.emitter.trigger("eventLeave", Object.assign(Object.assign({}, _), { draggedEl: o.subjectEl, view: u })), l.dispatch({ + type: "REMOVE_EVENTS", + eventStore: C + }), l.emitter.trigger("eventRemove", _); + let E = A.defs[g.defId], I = A.instances[v.instanceId], w = new Vo(d, E, I); + d.dispatch({ + type: "MERGE_EVENTS", + eventStore: A + }); + let x = { + event: w, + relatedEvents: nE(A, d, I), + revert() { + d.dispatch({ + type: "REMOVE_EVENTS", + eventStore: A + }); + } + }; + d.emitter.trigger("eventAdd", x), o.isTouch && d.dispatch({ + type: "SELECT_EVENT", + eventInstanceId: v.instanceId + }), d.emitter.trigger("drop", Object.assign(Object.assign({}, bxe(S.dateSpan, d)), { draggedEl: o.subjectEl, jsEvent: o.origEvent, view: S.context.viewApi })), d.emitter.trigger("eventReceive", Object.assign(Object.assign({}, x), { draggedEl: o.subjectEl, view: S.context.viewApi })); + } + } else + l.emitter.trigger("_noEventDrop"); + } + this.cleanup(); + }; + let { component: r } = this, { options: n } = r.context, i = this.dragging = new tO(t.el); + i.pointer.selector = rO.SELECTOR, i.touchScrollAllowed = !1, i.autoScroller.isEnabled = n.dragScroll; + let a = this.hitDragging = new VB(this.dragging, u6); + a.useSubjectCenter = t.useEventCenter, a.emitter.on("pointerdown", this.handlePointerDown), a.emitter.on("dragstart", this.handleDragStart), a.emitter.on("hitupdate", this.handleHitUpdate), a.emitter.on("pointerup", this.handlePointerUp), a.emitter.on("dragend", this.handleDragEnd); + } + destroy() { + this.dragging.destroy(); + } + // render a drag state on the next receivingCalendar + displayDrag(t, r) { + let n = this.component.context, i = this.receivingContext; + i && i !== t && (i === n ? i.dispatch({ + type: "SET_EVENT_DRAG", + state: { + affectedEvents: r.affectedEvents, + mutatedEvents: gd(), + isEvent: !0 + } + }) : i.dispatch({ type: "UNSET_EVENT_DRAG" })), t && t.dispatch({ type: "SET_EVENT_DRAG", state: r }); + } + clearDrag() { + let t = this.component.context, { receivingContext: r } = this; + r && r.dispatch({ type: "UNSET_EVENT_DRAG" }), t !== r && t.dispatch({ type: "UNSET_EVENT_DRAG" }); + } + cleanup() { + this.subjectSeg = null, this.isDragging = !1, this.eventRange = null, this.relevantEvents = null, this.receivingContext = null, this.validMutation = null, this.mutatedRelevantEvents = null; + } +} +rO.SELECTOR = ".fc-event-draggable, .fc-event-resizable"; +function hwt(e, t, r) { + let n = e.dateSpan, i = t.dateSpan, a = n.range.start, o = i.range.start, l = {}; + n.allDay !== i.allDay && (l.allDay = i.allDay, l.hasEnd = t.context.options.allDayMaintainDuration, i.allDay && (a = ho(a))); + let u = pw(a, o, e.context.dateEnv, e.componentId === t.componentId ? e.largeUnit : null); + u.milliseconds && (l.allDay = !1); + let d = { + datesDelta: u, + standardProps: l + }; + for (let f of r) + f(d, e, t); + return d; +} +function dwt(e) { + let { options: t } = e.context, r = t.eventLongPressDelay; + return r == null && (r = t.longPressDelay), r; +} +class fwt extends LI { + constructor(t) { + super(t), this.draggingSegEl = null, this.draggingSeg = null, this.eventRange = null, this.relevantEvents = null, this.validMutation = null, this.mutatedRelevantEvents = null, this.handlePointerDown = (a) => { + let { component: o } = this, l = this.querySegEl(a), u = Qw(l), d = this.eventRange = u.eventRange; + this.dragging.minDistance = o.context.options.eventDragMinDistance, this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(a.origEvent.target) || a.isTouch && this.component.props.eventSelection !== d.instance.instanceId); + }, this.handleDragStart = (a) => { + let { context: o } = this.component, l = this.eventRange; + this.relevantEvents = y7(o.getCurrentData().eventStore, this.eventRange.instance.instanceId); + let u = this.querySegEl(a); + this.draggingSegEl = u, this.draggingSeg = Qw(u), o.calendarApi.unselect(), o.emitter.trigger("eventResizeStart", { + el: u, + event: new Vo(o, l.def, l.instance), + jsEvent: a.origEvent, + view: o.viewApi + }); + }, this.handleHitUpdate = (a, o, l) => { + let { context: u } = this.component, d = this.relevantEvents, f = this.hitDragging.initialHit, g = this.eventRange.instance, v = null, y = null, C = !1, A = { + affectedEvents: d, + mutatedEvents: gd(), + isEvent: !0 + }; + a && (a.componentId === f.componentId && this.isHitComboAllowed && !this.isHitComboAllowed(f, a) || (v = pwt(f, a, l.subjectEl.classList.contains("fc-event-resizer-start"), g.range))), v && (y = b7(d, u.getCurrentData().eventUiBases, v, u), A.mutatedEvents = y, Ywe(A, a.dateProfile, u) || (C = !0, v = null, y = null, A.mutatedEvents = null)), y ? u.dispatch({ + type: "SET_EVENT_RESIZE", + state: A + }) : u.dispatch({ type: "UNSET_EVENT_RESIZE" }), C ? l7() : c7(), o || (v && zB(f, a) && (v = null), this.validMutation = v, this.mutatedRelevantEvents = y); + }, this.handleDragEnd = (a) => { + let { context: o } = this.component, l = this.eventRange.def, u = this.eventRange.instance, d = new Vo(o, l, u), f = this.relevantEvents, g = this.mutatedRelevantEvents; + if (o.emitter.trigger("eventResizeStop", { + el: this.draggingSegEl, + event: d, + jsEvent: a.origEvent, + view: o.viewApi + }), this.validMutation) { + let v = new Vo(o, g.defs[l.defId], u ? g.instances[u.instanceId] : null); + o.dispatch({ + type: "MERGE_EVENTS", + eventStore: g + }); + let y = { + oldEvent: d, + event: v, + relatedEvents: nE(g, o, u), + revert() { + o.dispatch({ + type: "MERGE_EVENTS", + eventStore: f + // the pre-change events + }); + } + }; + o.emitter.trigger("eventResize", Object.assign(Object.assign({}, y), { el: this.draggingSegEl, startDelta: this.validMutation.startDelta || na(0), endDelta: this.validMutation.endDelta || na(0), jsEvent: a.origEvent, view: o.viewApi })), o.emitter.trigger("eventChange", y); + } else + o.emitter.trigger("_noEventResize"); + this.draggingSeg = null, this.relevantEvents = null, this.validMutation = null; + }; + let { component: r } = t, n = this.dragging = new tO(t.el); + n.pointer.selector = ".fc-event-resizer", n.touchScrollAllowed = !1, n.autoScroller.isEnabled = r.context.options.dragScroll; + let i = this.hitDragging = new VB(this.dragging, w7(t)); + i.emitter.on("pointerdown", this.handlePointerDown), i.emitter.on("dragstart", this.handleDragStart), i.emitter.on("hitupdate", this.handleHitUpdate), i.emitter.on("dragend", this.handleDragEnd); + } + destroy() { + this.dragging.destroy(); + } + querySegEl(t) { + return ql(t.subjectEl, ".fc-event"); + } +} +function pwt(e, t, r, n) { + let i = e.context.dateEnv, a = e.dateSpan.range.start, o = t.dateSpan.range.start, l = pw(a, o, i, e.largeUnit); + if (r) { + if (i.add(n.start, l) < n.end) + return { startDelta: l }; + } else if (i.add(n.end, l) > n.start) + return { endDelta: l }; + return null; +} +class gwt { + constructor(t) { + this.context = t, this.isRecentPointerDateSelect = !1, this.matchesCancel = !1, this.matchesEvent = !1, this.onSelect = (n) => { + n.jsEvent && (this.isRecentPointerDateSelect = !0); + }, this.onDocumentPointerDown = (n) => { + let i = this.context.options.unselectCancel, a = JTe(n.origEvent); + this.matchesCancel = !!ql(a, i), this.matchesEvent = !!ql(a, rO.SELECTOR); + }, this.onDocumentPointerUp = (n) => { + let { context: i } = this, { documentPointer: a } = this, o = i.getCurrentData(); + if (!a.wasTouchScroll) { + if (o.dateSelection && // an existing date selection? + !this.isRecentPointerDateSelect) { + let l = i.options.unselectAuto; + l && (!l || !this.matchesCancel) && i.calendarApi.unselect(n); + } + o.eventSelection && // an existing event selected? + !this.matchesEvent && i.dispatch({ type: "UNSELECT_EVENT" }); + } + this.isRecentPointerDateSelect = !1; + }; + let r = this.documentPointer = new mxe(document); + r.shouldIgnoreMove = !0, r.shouldWatchScroll = !1, r.emitter.on("pointerdown", this.onDocumentPointerDown), r.emitter.on("pointerup", this.onDocumentPointerUp), t.emitter.on("select", this.onSelect); + } + destroy() { + this.context.emitter.off("select", this.onSelect), this.documentPointer.destroy(); + } +} +const vwt = { + fixedMirrorParent: At +}, mwt = { + dateClick: At, + eventDragStart: At, + eventDragStop: At, + eventDrop: At, + eventResizeStart: At, + eventResizeStop: At, + eventResize: At, + drop: At, + eventReceive: At, + eventLeave: At +}; +If.dataAttrPrefix = ""; +var ywt = rc({ + name: "@fullcalendar/interaction", + componentInteractions: [swt, lwt, rO, fwt], + calendarInteractions: [gwt], + elementDraggingImpl: tO, + optionRefiners: vwt, + listenerRefiners: mwt +}); +class _wt extends Vn { + constructor() { + super(...arguments), this.state = { + textId: jm() + }; + } + render() { + let { theme: t, dateEnv: r, options: n, viewApi: i } = this.context, { cellId: a, dayDate: o, todayRange: l } = this.props, { textId: u } = this.state, d = QD(o, l), f = n.listDayFormat ? r.format(o, n.listDayFormat) : "", g = n.listDaySideFormat ? r.format(o, n.listDaySideFormat) : "", v = Object.assign({ + date: r.toDate(o), + view: i, + textId: u, + text: f, + sideText: g, + navLinkAttrs: TE(this.context, o), + sideNavLinkAttrs: TE(this.context, o, "day", !1) + }, d); + return De(is, { elTag: "tr", elClasses: [ + "fc-list-day", + ...BI(d, t) + ], elAttrs: { + "data-date": NI(o) + }, renderProps: v, generatorName: "dayHeaderContent", customGenerator: n.dayHeaderContent, defaultGenerator: Swt, classNameGenerator: n.dayHeaderClassNames, didMount: n.dayHeaderDidMount, willUnmount: n.dayHeaderWillUnmount }, (y) => ( + // TODO: force-hide top border based on :first-child + De( + "th", + { scope: "colgroup", colSpan: 3, id: a, "aria-labelledby": u }, + De(y, { elTag: "div", elClasses: [ + "fc-list-day-cushion", + t.getClass("tableCellShaded") + ] }) + ) + )); + } +} +function Swt(e) { + return De( + Di, + null, + e.text && De("a", Object.assign({ id: e.textId, className: "fc-list-day-text" }, e.navLinkAttrs), e.text), + e.sideText && /* not keyboard tabbable */ + De("a", Object.assign({ "aria-hidden": !0, className: "fc-list-day-side-text" }, e.sideNavLinkAttrs), e.sideText) + ); +} +const bwt = co({ + hour: "numeric", + minute: "2-digit", + meridiem: "short" +}); +class Ewt extends Vn { + render() { + let { props: t, context: r } = this, { options: n } = r, { seg: i, timeHeaderId: a, eventHeaderId: o, dateHeaderId: l } = t, u = n.eventTimeFormat || bwt; + return De(jB, Object.assign({}, t, { elTag: "tr", elClasses: [ + "fc-list-event", + i.eventRange.def.url && "fc-event-forced-url" + ], defaultGenerator: () => Cwt(i, r), seg: i, timeText: "", disableDragging: !0, disableResizing: !0 }), (d, f) => De( + Di, + null, + Twt(i, u, r, a, l), + De( + "td", + { "aria-hidden": !0, className: "fc-list-event-graphic" }, + De("span", { className: "fc-list-event-dot", style: { + borderColor: f.borderColor || f.backgroundColor + } }) + ), + De(d, { elTag: "td", elClasses: ["fc-list-event-title"], elAttrs: { headers: `${o} ${l}` } }) + )); + } +} +function Cwt(e, t) { + let r = C7(e, t); + return De("a", Object.assign({}, r), e.eventRange.def.title); +} +function Twt(e, t, r, n, i) { + let { options: a } = r; + if (a.displayEventTime !== !1) { + let o = e.eventRange.def, l = e.eventRange.instance, u = !1, d; + if (o.allDay ? u = !0 : v_t(e.eventRange.range) ? e.isStart ? d = Y1(e, t, r, null, null, l.range.start, e.end) : e.isEnd ? d = Y1(e, t, r, null, null, e.start, l.range.end) : u = !0 : d = Y1(e, t, r), u) { + let f = { + text: r.options.allDayText, + view: r.viewApi + }; + return De(is, { elTag: "td", elClasses: ["fc-list-event-time"], elAttrs: { + headers: `${n} ${i}` + }, renderProps: f, generatorName: "allDayContent", customGenerator: a.allDayContent, defaultGenerator: wwt, classNameGenerator: a.allDayClassNames, didMount: a.allDayDidMount, willUnmount: a.allDayWillUnmount }); + } + return De("td", { className: "fc-list-event-time" }, d); + } + return null; +} +function wwt(e) { + return e.text; +} +class Iwt extends tc { + constructor() { + super(...arguments), this.computeDateVars = Gr(Awt), this.eventStoreToSegs = Gr(this._eventStoreToSegs), this.state = { + timeHeaderId: jm(), + eventHeaderId: jm(), + dateHeaderIdRoot: jm() + }, this.setRootEl = (t) => { + t ? this.context.registerInteractiveComponent(this, { + el: t + }) : this.context.unregisterInteractiveComponent(this); + }; + } + render() { + let { props: t, context: r } = this, { dayDates: n, dayRanges: i } = this.computeDateVars(t.dateProfile), a = this.eventStoreToSegs(t.eventStore, t.eventUiBases, i); + return De( + w0, + { elRef: this.setRootEl, elClasses: [ + "fc-list", + r.theme.getClass("table"), + r.options.stickyHeaderDates !== !1 ? "fc-list-sticky" : "" + ], viewSpec: r.viewSpec }, + De(k7, { liquid: !t.isHeightAuto, overflowX: t.isHeightAuto ? "visible" : "hidden", overflowY: t.isHeightAuto ? "visible" : "auto" }, a.length > 0 ? this.renderSegList(a, n) : this.renderEmptyMessage()) + ); + } + renderEmptyMessage() { + let { options: t, viewApi: r } = this.context, n = { + text: t.noEventsText, + view: r + }; + return De(is, { elTag: "div", elClasses: ["fc-list-empty"], renderProps: n, generatorName: "noEventsContent", customGenerator: t.noEventsContent, defaultGenerator: xwt, classNameGenerator: t.noEventsClassNames, didMount: t.noEventsDidMount, willUnmount: t.noEventsWillUnmount }, (i) => De(i, { elTag: "div", elClasses: ["fc-list-empty-cushion"] })); + } + renderSegList(t, r) { + let { theme: n, options: i } = this.context, { timeHeaderId: a, eventHeaderId: o, dateHeaderIdRoot: l } = this.state, u = Rwt(t); + return De(Bp, { unit: "day" }, (d, f) => { + let g = []; + for (let v = 0; v < u.length; v += 1) { + let y = u[v]; + if (y) { + let C = NI(r[v]), A = l + "-" + C; + g.push(De(_wt, { key: C, cellId: A, dayDate: r[v], todayRange: f })), y = BB(y, i.eventOrder); + for (let S of y) + g.push(De(Ewt, Object.assign({ key: C + ":" + S.eventRange.instance.instanceId, seg: S, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: !1, timeHeaderId: a, eventHeaderId: o, dateHeaderId: A }, bf(S, f, d)))); + } + } + return De( + "table", + { className: "fc-list-table " + n.getClass("table") }, + De( + "thead", + null, + De( + "tr", + null, + De("th", { scope: "col", id: a }, i.timeHint), + De("th", { scope: "col", "aria-hidden": !0 }), + De("th", { scope: "col", id: o }, i.eventHint) + ) + ), + De("tbody", null, g) + ); + }); + } + _eventStoreToSegs(t, r, n) { + return this.eventRangesToSegs(c6(t, r, this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, n); + } + eventRangesToSegs(t, r) { + let n = []; + for (let i of t) + n.push(...this.eventRangeToSegs(i, r)); + return n; + } + eventRangeToSegs(t, r) { + let { dateEnv: n } = this.context, { nextDayThreshold: i } = this.context.options, a = t.range, o = t.def.allDay, l, u, d, f = []; + for (l = 0; l < r.length; l += 1) + if (u = cv(a, r[l]), u && (d = { + component: this, + eventRange: t, + start: u.start, + end: u.end, + isStart: t.isStart && u.start.valueOf() === a.start.valueOf(), + isEnd: t.isEnd && u.end.valueOf() === a.end.valueOf(), + dayIndex: l + }, f.push(d), !d.isEnd && !o && l + 1 < r.length && a.end < n.add(r[l + 1].start, i))) { + d.end = a.end, d.isEnd = !0; + break; + } + return f; + } +} +function xwt(e) { + return e.text; +} +function Awt(e) { + let t = ho(e.renderRange.start), r = e.renderRange.end, n = [], i = []; + for (; t < r; ) + n.push(t), i.push({ + start: t, + end: yl(t, 1) + }), t = yl(t, 1); + return { dayDates: n, dayRanges: i }; +} +function Rwt(e) { + let t = [], r, n; + for (r = 0; r < e.length; r += 1) + n = e[r], (t[n.dayIndex] || (t[n.dayIndex] = [])).push(n); + return t; +} +var Dwt = ':root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid var(--fc-border-color)}.fc .fc-list-empty{align-items:center;background-color:var(--fc-neutral-bg-color);display:flex;height:100%;justify-content:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{border-style:hidden;width:100%}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{background:var(--fc-page-bg-color);position:sticky;top:0}.fc .fc-list-table thead{left:-10000px;position:absolute}.fc .fc-list-table tbody>tr:first-child th{border-top:0}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{clear:both;content:"";display:table}.fc-theme-standard .fc-list-day-cushion{background-color:var(--fc-neutral-bg-color)}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:var(--fc-list-event-hover-bg-color)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{border:calc(var(--fc-list-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-list-event-dot-width)/2);box-sizing:content-box;display:inline-block;height:0;width:0}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}'; +P0(Dwt); +const Owt = { + listDayFormat: nfe, + listDaySideFormat: nfe, + noEventsClassNames: At, + noEventsContent: At, + noEventsDidMount: At, + noEventsWillUnmount: At + // noEventsText is defined in base options +}; +function nfe(e) { + return e === !1 ? null : co(e); +} +var Mwt = rc({ + name: "@fullcalendar/list", + optionRefiners: Owt, + views: { + list: { + component: Iwt, + buttonTextKey: "list", + listDayFormat: { month: "long", day: "numeric", year: "numeric" } + // like "January 1, 2016" + }, + listDay: { + type: "list", + duration: { days: 1 }, + listDayFormat: { weekday: "long" } + // day-of-week is all we need. full date is probably in headerToolbar + }, + listWeek: { + type: "list", + duration: { weeks: 1 }, + listDayFormat: { weekday: "long" }, + listDaySideFormat: { month: "long", day: "numeric", year: "numeric" } + }, + listMonth: { + type: "list", + duration: { month: 1 }, + listDaySideFormat: { weekday: "long" } + // day-of-week is nice-to-have + }, + listYear: { + type: "list", + duration: { year: 1 }, + listDaySideFormat: { weekday: "long" } + // day-of-week is nice-to-have + } + } +}), kwt = { + code: "af", + week: { + dow: 1, + doy: 4 + // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + }, + buttonText: { + prev: "Vorige", + next: "Volgende", + today: "Vandag", + year: "Jaar", + month: "Maand", + week: "Week", + day: "Dag", + list: "Agenda" + }, + allDayText: "Heeldag", + moreLinkText: "Addisionele", + noEventsText: "Daar is geen gebeurtenisse nie" +}, Pwt = { + code: "ar-dz", + week: { + dow: 0, + doy: 4 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, Nwt = { + code: "ar-kw", + week: { + dow: 0, + doy: 12 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, Lwt = { + code: "ar-ly", + week: { + dow: 6, + doy: 12 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, Fwt = { + code: "ar-ma", + week: { + dow: 6, + doy: 12 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, Bwt = { + code: "ar-sa", + week: { + dow: 0, + doy: 6 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, Uwt = { + code: "ar-tn", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, jwt = { + code: "ar", + week: { + dow: 6, + doy: 12 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "السابق", + next: "التالي", + today: "اليوم", + year: "سنة", + month: "شهر", + week: "أسبوع", + day: "يوم", + list: "أجندة" + }, + weekText: "أسبوع", + allDayText: "اليوم كله", + moreLinkText: "أخرى", + noEventsText: "أي أحداث لعرض" +}, $wt = { + code: "az", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Əvvəl", + next: "Sonra", + today: "Bu Gün", + year: "Il", + month: "Ay", + week: "Həftə", + day: "Gün", + list: "Gündəm" + }, + weekText: "Həftə", + allDayText: "Bütün Gün", + moreLinkText(e) { + return "+ daha çox " + e; + }, + noEventsText: "Göstərmək üçün hadisə yoxdur" +}, Vwt = { + code: "bg", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "назад", + next: "напред", + today: "днес", + year: "година", + month: "Месец", + week: "Седмица", + day: "Ден", + list: "График" + }, + allDayText: "Цял ден", + moreLinkText(e) { + return "+още " + e; + }, + noEventsText: "Няма събития за показване" +}, zwt = { + code: "bn", + week: { + dow: 0, + doy: 6 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "পেছনে", + next: "সামনে", + today: "আজ", + year: "বছর", + month: "মাস", + week: "সপ্তাহ", + day: "দিন", + list: "তালিকা" + }, + weekText: "সপ্তাহ", + allDayText: "সারাদিন", + moreLinkText(e) { + return "+অন্যান্য " + e; + }, + noEventsText: "কোনো ইভেন্ট নেই" +}, Hwt = { + code: "bs", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Prošli", + next: "Sljedeći", + today: "Danas", + year: "Godina", + month: "Mjesec", + week: "Sedmica", + day: "Dan", + list: "Raspored" + }, + weekText: "Sed", + allDayText: "Cijeli dan", + moreLinkText(e) { + return "+ još " + e; + }, + noEventsText: "Nema događaja za prikazivanje" +}, Wwt = { + code: "ca", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Anterior", + next: "Següent", + today: "Avui", + year: "Any", + month: "Mes", + week: "Setmana", + day: "Dia", + list: "Agenda" + }, + weekText: "Set", + allDayText: "Tot el dia", + moreLinkText: "més", + noEventsText: "No hi ha esdeveniments per mostrar" +}, Gwt = { + code: "cs", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Dříve", + next: "Později", + today: "Nyní", + year: "Rok", + month: "Měsíc", + week: "Týden", + day: "Den", + list: "Agenda" + }, + weekText: "Týd", + allDayText: "Celý den", + moreLinkText(e) { + return "+další: " + e; + }, + noEventsText: "Žádné akce k zobrazení" +}, Ywt = { + code: "cy", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Blaenorol", + next: "Nesaf", + today: "Heddiw", + year: "Blwyddyn", + month: "Mis", + week: "Wythnos", + day: "Dydd", + list: "Rhestr" + }, + weekText: "Wythnos", + allDayText: "Trwy'r dydd", + moreLinkText: "Mwy", + noEventsText: "Dim digwyddiadau" +}, Xwt = { + code: "da", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Forrige", + next: "Næste", + today: "I dag", + year: "År", + month: "Måned", + week: "Uge", + day: "Dag", + list: "Agenda" + }, + weekText: "Uge", + allDayText: "Hele dagen", + moreLinkText: "flere", + noEventsText: "Ingen arrangementer at vise" +}; +function L4(e) { + return e === "Tag" || e === "Monat" ? "r" : e === "Jahr" ? "s" : ""; +} +var Kwt = { + code: "de-at", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Zurück", + next: "Vor", + today: "Heute", + year: "Jahr", + month: "Monat", + week: "Woche", + day: "Tag", + list: "Terminübersicht" + }, + weekText: "KW", + weekTextLong: "Woche", + allDayText: "Ganztägig", + moreLinkText(e) { + return "+ weitere " + e; + }, + noEventsText: "Keine Ereignisse anzuzeigen", + buttonHints: { + prev(e) { + return `Vorherige${L4(e)} ${e}`; + }, + next(e) { + return `Nächste${L4(e)} ${e}`; + }, + today(e) { + return e === "Tag" ? "Heute" : `Diese${L4(e)} ${e}`; + } + }, + viewHint(e) { + return e + (e === "Woche" ? "n" : e === "Monat" ? "s" : "es") + "ansicht"; + }, + navLinkHint: "Gehe zu $0", + moreLinkHint(e) { + return "Zeige " + (e === 1 ? "ein weiteres Ereignis" : e + " weitere Ereignisse"); + }, + closeHint: "Schließen", + timeHint: "Uhrzeit", + eventHint: "Ereignis" +}; +function F4(e) { + return e === "Tag" || e === "Monat" ? "r" : e === "Jahr" ? "s" : ""; +} +var Zwt = { + code: "de", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Zurück", + next: "Vor", + today: "Heute", + year: "Jahr", + month: "Monat", + week: "Woche", + day: "Tag", + list: "Terminübersicht" + }, + weekText: "KW", + weekTextLong: "Woche", + allDayText: "Ganztägig", + moreLinkText(e) { + return "+ weitere " + e; + }, + noEventsText: "Keine Ereignisse anzuzeigen", + buttonHints: { + prev(e) { + return `Vorherige${F4(e)} ${e}`; + }, + next(e) { + return `Nächste${F4(e)} ${e}`; + }, + today(e) { + return e === "Tag" ? "Heute" : `Diese${F4(e)} ${e}`; + } + }, + viewHint(e) { + return e + (e === "Woche" ? "n" : e === "Monat" ? "s" : "es") + "ansicht"; + }, + navLinkHint: "Gehe zu $0", + moreLinkHint(e) { + return "Zeige " + (e === 1 ? "ein weiteres Ereignis" : e + " weitere Ereignisse"); + }, + closeHint: "Schließen", + timeHint: "Uhrzeit", + eventHint: "Ereignis" +}, qwt = { + code: "el", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4st is the first week of the year. + }, + buttonText: { + prev: "Προηγούμενος", + next: "Επόμενος", + today: "Σήμερα", + year: "Ετος", + month: "Μήνας", + week: "Εβδομάδα", + day: "Ημέρα", + list: "Ατζέντα" + }, + weekText: "Εβδ", + allDayText: "Ολοήμερο", + moreLinkText: "περισσότερα", + noEventsText: "Δεν υπάρχουν γεγονότα προς εμφάνιση" +}, Jwt = { + code: "en-au", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonHints: { + prev: "Previous $0", + next: "Next $0", + today: "This $0" + }, + viewHint: "$0 view", + navLinkHint: "Go to $0", + moreLinkHint(e) { + return `Show ${e} more event${e === 1 ? "" : "s"}`; + } +}, Qwt = { + code: "en-gb", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonHints: { + prev: "Previous $0", + next: "Next $0", + today: "This $0" + }, + viewHint: "$0 view", + navLinkHint: "Go to $0", + moreLinkHint(e) { + return `Show ${e} more event${e === 1 ? "" : "s"}`; + } +}, eIt = { + code: "en-nz", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonHints: { + prev: "Previous $0", + next: "Next $0", + today: "This $0" + }, + viewHint: "$0 view", + navLinkHint: "Go to $0", + moreLinkHint(e) { + return `Show ${e} more event${e === 1 ? "" : "s"}`; + } +}, tIt = { + code: "eo", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Antaŭa", + next: "Sekva", + today: "Hodiaŭ", + year: "Jaro", + month: "Monato", + week: "Semajno", + day: "Tago", + list: "Tagordo" + }, + weekText: "Sm", + allDayText: "Tuta tago", + moreLinkText: "pli", + noEventsText: "Neniuj eventoj por montri" +}, rIt = { + code: "es", + week: { + dow: 0, + doy: 6 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Ant", + next: "Sig", + today: "Hoy", + year: "Año", + month: "Mes", + week: "Semana", + day: "Día", + list: "Agenda" + }, + weekText: "Sm", + allDayText: "Todo el día", + moreLinkText: "más", + noEventsText: "No hay eventos para mostrar" +}, nIt = { + code: "es", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Ant", + next: "Sig", + today: "Hoy", + year: "Año", + month: "Mes", + week: "Semana", + day: "Día", + list: "Agenda" + }, + buttonHints: { + prev: "$0 antes", + next: "$0 siguiente", + today(e) { + return e === "Día" ? "Hoy" : (e === "Semana" ? "Esta" : "Este") + " " + e.toLocaleLowerCase(); + } + }, + viewHint(e) { + return "Vista " + (e === "Semana" ? "de la" : "del") + " " + e.toLocaleLowerCase(); + }, + weekText: "Sm", + weekTextLong: "Semana", + allDayText: "Todo el día", + moreLinkText: "más", + moreLinkHint(e) { + return `Mostrar ${e} eventos más`; + }, + noEventsText: "No hay eventos para mostrar", + navLinkHint: "Ir al $0", + closeHint: "Cerrar", + timeHint: "La hora", + eventHint: "Evento" +}, iIt = { + code: "et", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Eelnev", + next: "Järgnev", + today: "Täna", + year: "Aasta", + month: "Kuu", + week: "Nädal", + day: "Päev", + list: "Päevakord" + }, + weekText: "näd", + allDayText: "Kogu päev", + moreLinkText(e) { + return "+ veel " + e; + }, + noEventsText: "Kuvamiseks puuduvad sündmused" +}, aIt = { + code: "eu", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Aur", + next: "Hur", + today: "Gaur", + year: "Urtea", + month: "Hilabetea", + week: "Astea", + day: "Eguna", + list: "Agenda" + }, + weekText: "As", + allDayText: "Egun osoa", + moreLinkText: "gehiago", + noEventsText: "Ez dago ekitaldirik erakusteko" +}, oIt = { + code: "fa", + week: { + dow: 6, + doy: 12 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "قبلی", + next: "بعدی", + today: "امروز", + year: "سال", + month: "ماه", + week: "هفته", + day: "روز", + list: "برنامه" + }, + weekText: "هف", + allDayText: "تمام روز", + moreLinkText(e) { + return "بیش از " + e; + }, + noEventsText: "هیچ رویدادی به نمایش" +}, sIt = { + code: "fi", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Edellinen", + next: "Seuraava", + today: "Tänään", + year: "Vuosi", + month: "Kuukausi", + week: "Viikko", + day: "Päivä", + list: "Tapahtumat" + }, + weekText: "Vk", + allDayText: "Koko päivä", + moreLinkText: "lisää", + noEventsText: "Ei näytettäviä tapahtumia" +}, lIt = { + code: "fr", + buttonText: { + prev: "Précédent", + next: "Suivant", + today: "Aujourd'hui", + year: "Année", + month: "Mois", + week: "Semaine", + day: "Jour", + list: "Mon planning" + }, + weekText: "Sem.", + allDayText: "Toute la journée", + moreLinkText: "en plus", + noEventsText: "Aucun évènement à afficher" +}, cIt = { + code: "fr-ch", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Précédent", + next: "Suivant", + today: "Courant", + year: "Année", + month: "Mois", + week: "Semaine", + day: "Jour", + list: "Mon planning" + }, + weekText: "Sm", + allDayText: "Toute la journée", + moreLinkText: "en plus", + noEventsText: "Aucun évènement à afficher" +}, uIt = { + code: "fr", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Précédent", + next: "Suivant", + today: "Aujourd'hui", + year: "Année", + month: "Mois", + week: "Semaine", + day: "Jour", + list: "Planning" + }, + weekText: "Sem.", + weekTextLong: "Semaine", + allDayText: "Toute la journée", + moreLinkText: "en plus", + noEventsText: "Aucun évènement à afficher" +}, hIt = { + code: "gl", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Ant", + next: "Seg", + today: "Hoxe", + year: "Ano", + month: "Mes", + week: "Semana", + day: "Día", + list: "Axenda" + }, + buttonHints: { + prev: "$0 antes", + next: "$0 seguinte", + today(e) { + return e === "Día" ? "Hoxe" : (e === "Semana" ? "Esta" : "Este") + " " + e.toLocaleLowerCase(); + } + }, + viewHint(e) { + return "Vista " + (e === "Semana" ? "da" : "do") + " " + e.toLocaleLowerCase(); + }, + weekText: "Sm", + weekTextLong: "Semana", + allDayText: "Todo o día", + moreLinkText: "máis", + moreLinkHint(e) { + return `Amosar ${e} eventos máis`; + }, + noEventsText: "Non hai eventos para amosar", + navLinkHint: "Ir ao $0", + closeHint: "Pechar", + timeHint: "A hora", + eventHint: "Evento" +}, dIt = { + code: "he", + direction: "rtl", + buttonText: { + prev: "הקודם", + next: "הבא", + today: "היום", + year: "שנה", + month: "חודש", + week: "שבוע", + day: "יום", + list: "סדר יום" + }, + allDayText: "כל היום", + moreLinkText: "נוספים", + noEventsText: "אין אירועים להצגה", + weekText: "שבוע" +}, fIt = { + code: "hi", + week: { + dow: 0, + doy: 6 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "पिछला", + next: "अगला", + today: "आज", + year: "वर्ष", + month: "महीना", + week: "सप्ताह", + day: "दिन", + list: "कार्यसूची" + }, + weekText: "हफ्ता", + allDayText: "सभी दिन", + moreLinkText(e) { + return "+अधिक " + e; + }, + noEventsText: "कोई घटनाओं को प्रदर्शित करने के लिए" +}, pIt = { + code: "hr", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Prijašnji", + next: "Sljedeći", + today: "Danas", + year: "Godina", + month: "Mjesec", + week: "Tjedan", + day: "Dan", + list: "Raspored" + }, + weekText: "Tje", + allDayText: "Cijeli dan", + moreLinkText(e) { + return "+ još " + e; + }, + noEventsText: "Nema događaja za prikaz" +}, gIt = { + code: "hu", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "vissza", + next: "előre", + today: "ma", + year: "Év", + month: "Hónap", + week: "Hét", + day: "Nap", + list: "Lista" + }, + weekText: "Hét", + allDayText: "Egész nap", + moreLinkText: "további", + noEventsText: "Nincs megjeleníthető esemény" +}, vIt = { + code: "hy-am", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Նախորդ", + next: "Հաջորդ", + today: "Այսօր", + year: "Տարի", + month: "Ամիս", + week: "Շաբաթ", + day: "Օր", + list: "Օրվա ցուցակ" + }, + weekText: "Շաբ", + allDayText: "Ամբողջ օր", + moreLinkText(e) { + return "+ ևս " + e; + }, + noEventsText: "Բացակայում է իրադարձությունը ցուցադրելու" +}, mIt = { + code: "id", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "mundur", + next: "maju", + today: "hari ini", + year: "Tahun", + month: "Bulan", + week: "Minggu", + day: "Hari", + list: "Agenda" + }, + weekText: "Mg", + allDayText: "Sehari penuh", + moreLinkText: "lebih", + noEventsText: "Tidak ada acara untuk ditampilkan" +}, yIt = { + code: "is", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Fyrri", + next: "Næsti", + today: "Í dag", + year: "Ár", + month: "Mánuður", + week: "Vika", + day: "Dagur", + list: "Dagskrá" + }, + weekText: "Vika", + allDayText: "Allan daginn", + moreLinkText: "meira", + noEventsText: "Engir viðburðir til að sýna" +}, _It = { + code: "it", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Prec", + next: "Succ", + today: "Oggi", + year: "Anno", + month: "Mese", + week: "Settimana", + day: "Giorno", + list: "Agenda" + }, + weekText: "Sm", + allDayText: "Tutto il giorno", + moreLinkText(e) { + return "+altri " + e; + }, + noEventsText: "Non ci sono eventi da visualizzare" +}, SIt = { + code: "ja", + buttonText: { + prev: "前", + next: "次", + today: "今日", + year: "年", + month: "月", + week: "週", + day: "日", + list: "予定リスト" + }, + weekText: "週", + allDayText: "終日", + moreLinkText(e) { + return "他 " + e + " 件"; + }, + noEventsText: "表示する予定はありません" +}, bIt = { + code: "ka", + week: { + dow: 1, + doy: 7 + }, + buttonText: { + prev: "წინა", + next: "შემდეგი", + today: "დღეს", + year: "წელიწადი", + month: "თვე", + week: "კვირა", + day: "დღე", + list: "დღის წესრიგი" + }, + weekText: "კვ", + allDayText: "მთელი დღე", + moreLinkText(e) { + return "+ კიდევ " + e; + }, + noEventsText: "ღონისძიებები არ არის" +}, EIt = { + code: "kk", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Алдыңғы", + next: "Келесі", + today: "Бүгін", + year: "Жыл", + month: "Ай", + week: "Апта", + day: "Күн", + list: "Күн тәртібі" + }, + weekText: "Не", + allDayText: "Күні бойы", + moreLinkText(e) { + return "+ тағы " + e; + }, + noEventsText: "Көрсету үшін оқиғалар жоқ" +}, CIt = { + code: "km", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "មុន", + next: "បន្ទាប់", + today: "ថ្ងៃនេះ", + year: "ឆ្នាំ", + month: "ខែ", + week: "សប្តាហ៍", + day: "ថ្ងៃ", + list: "បញ្ជី" + }, + weekText: "សប្តាហ៍", + allDayText: "ពេញមួយថ្ងៃ", + moreLinkText: "ច្រើនទៀត", + noEventsText: "គ្មានព្រឹត្តិការណ៍ត្រូវបង្ហាញ" +}, TIt = { + code: "ko", + buttonText: { + prev: "이전달", + next: "다음달", + today: "오늘", + year: "년도", + month: "월", + week: "주", + day: "일", + list: "일정목록" + }, + weekText: "주", + allDayText: "종일", + moreLinkText: "개", + noEventsText: "일정이 없습니다" +}, wIt = { + code: "ku", + week: { + dow: 6, + doy: 12 + // The week that contains Jan 1st is the first week of the year. + }, + direction: "rtl", + buttonText: { + prev: "پێشتر", + next: "دواتر", + today: "ئەمڕو", + year: "ساڵ", + month: "مانگ", + week: "هەفتە", + day: "ڕۆژ", + list: "بەرنامە" + }, + weekText: "هەفتە", + allDayText: "هەموو ڕۆژەکە", + moreLinkText: "زیاتر", + noEventsText: "هیچ ڕووداوێك نیە" +}, IIt = { + code: "lb", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Zréck", + next: "Weider", + today: "Haut", + year: "Joer", + month: "Mount", + week: "Woch", + day: "Dag", + list: "Terminiwwersiicht" + }, + weekText: "W", + allDayText: "Ganzen Dag", + moreLinkText: "méi", + noEventsText: "Nee Evenementer ze affichéieren" +}, xIt = { + code: "lt", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Atgal", + next: "Pirmyn", + today: "Šiandien", + year: "Metai", + month: "Mėnuo", + week: "Savaitė", + day: "Diena", + list: "Darbotvarkė" + }, + weekText: "SAV", + allDayText: "Visą dieną", + moreLinkText: "daugiau", + noEventsText: "Nėra įvykių rodyti" +}, AIt = { + code: "lv", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Iepr.", + next: "Nāk.", + today: "Šodien", + year: "Gads", + month: "Mēnesis", + week: "Nedēļa", + day: "Diena", + list: "Dienas kārtība" + }, + weekText: "Ned.", + allDayText: "Visu dienu", + moreLinkText(e) { + return "+vēl " + e; + }, + noEventsText: "Nav notikumu" +}, RIt = { + code: "mk", + buttonText: { + prev: "претходно", + next: "следно", + today: "Денес", + year: "година", + month: "Месец", + week: "Недела", + day: "Ден", + list: "График" + }, + weekText: "Сед", + allDayText: "Цел ден", + moreLinkText(e) { + return "+повеќе " + e; + }, + noEventsText: "Нема настани за прикажување" +}, DIt = { + code: "ms", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Sebelum", + next: "Selepas", + today: "hari ini", + year: "Tahun", + month: "Bulan", + week: "Minggu", + day: "Hari", + list: "Agenda" + }, + weekText: "Mg", + allDayText: "Sepanjang hari", + moreLinkText(e) { + return "masih ada " + e + " acara"; + }, + noEventsText: "Tiada peristiwa untuk dipaparkan" +}, OIt = { + code: "nb", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Forrige", + next: "Neste", + today: "I dag", + year: "År", + month: "Måned", + week: "Uke", + day: "Dag", + list: "Agenda" + }, + weekText: "Uke", + weekTextLong: "Uke", + allDayText: "Hele dagen", + moreLinkText: "til", + noEventsText: "Ingen hendelser å vise", + buttonHints: { + prev: "Forrige $0", + next: "Neste $0", + today: "Nåværende $0" + }, + viewHint: "$0 visning", + navLinkHint: "Gå til $0", + moreLinkHint(e) { + return `Vis ${e} flere hendelse${e === 1 ? "" : "r"}`; + } +}, MIt = { + code: "ne", + week: { + dow: 7, + doy: 1 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "अघिल्लो", + next: "अर्को", + today: "आज", + year: "वर्ष", + month: "महिना", + week: "हप्ता", + day: "दिन", + list: "सूची" + }, + weekText: "हप्ता", + allDayText: "दिनभरि", + moreLinkText: "थप लिंक", + noEventsText: "देखाउनको लागि कुनै घटनाहरू छैनन्" +}, kIt = { + code: "nl", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Vorige", + next: "Volgende", + today: "Vandaag", + year: "Jaar", + month: "Maand", + week: "Week", + day: "Dag", + list: "Lijst" + }, + allDayText: "Hele dag", + moreLinkText: "extra", + noEventsText: "Geen evenementen om te laten zien" +}, PIt = { + code: "nn", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Førre", + next: "Neste", + today: "I dag", + year: "År", + month: "Månad", + week: "Veke", + day: "Dag", + list: "Agenda" + }, + weekText: "Veke", + allDayText: "Heile dagen", + moreLinkText: "til", + noEventsText: "Ingen hendelser å vise" +}, NIt = { + code: "pl", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Poprzedni", + next: "Następny", + today: "Dziś", + year: "Rok", + month: "Miesiąc", + week: "Tydzień", + day: "Dzień", + list: "Plan dnia" + }, + weekText: "Tydz", + allDayText: "Cały dzień", + moreLinkText: "więcej", + noEventsText: "Brak wydarzeń do wyświetlenia" +}, LIt = { + code: "pt-br", + buttonText: { + prev: "Anterior", + next: "Próximo", + prevYear: "Ano anterior", + nextYear: "Próximo ano", + year: "Ano", + today: "Hoje", + month: "Mês", + week: "Semana", + day: "Dia", + list: "Lista" + }, + buttonHints: { + prev: "$0 Anterior", + next: "Próximo $0", + today(e) { + return e === "Dia" ? "Hoje" : (e === "Semana" ? "Esta" : "Este") + " " + e.toLocaleLowerCase(); + } + }, + viewHint(e) { + return "Visualizar " + (e === "Semana" ? "a" : "o") + " " + e.toLocaleLowerCase(); + }, + weekText: "Sm", + weekTextLong: "Semana", + allDayText: "dia inteiro", + moreLinkText(e) { + return "mais +" + e; + }, + moreLinkHint(e) { + return `Mostrar mais ${e} eventos`; + }, + noEventsText: "Não há eventos para mostrar", + navLinkHint: "Ir para $0", + closeHint: "Fechar", + timeHint: "A hora", + eventHint: "Evento" +}, FIt = { + code: "pt", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Anterior", + next: "Seguinte", + today: "Hoje", + year: "Ano", + month: "Mês", + week: "Semana", + day: "Dia", + list: "Agenda" + }, + weekText: "Sem", + allDayText: "Todo o dia", + moreLinkText: "mais", + noEventsText: "Não há eventos para mostrar" +}, BIt = { + code: "ro", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "precedentă", + next: "următoare", + today: "Azi", + year: "An", + month: "Lună", + week: "Săptămână", + day: "Zi", + list: "Agendă" + }, + weekText: "Săpt", + allDayText: "Toată ziua", + moreLinkText(e) { + return "+alte " + e; + }, + noEventsText: "Nu există evenimente de afișat" +}, UIt = { + code: "ru", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Пред", + next: "След", + today: "Сегодня", + year: "Год", + month: "Месяц", + week: "Неделя", + day: "День", + list: "Повестка дня" + }, + weekText: "Нед", + allDayText: "Весь день", + moreLinkText(e) { + return "+ ещё " + e; + }, + noEventsText: "Нет событий для отображения" +}, jIt = { + code: "si-lk", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "පෙර", + next: "පසු", + today: "අද", + year: "අවුරුදු", + month: "මාසය", + week: "සතිය", + day: "දවස", + list: "ලැයිස්තුව" + }, + weekText: "සති", + allDayText: "සියලු", + moreLinkText: "තවත්", + noEventsText: "මුකුත් නැත" +}, $It = { + code: "sk", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Predchádzajúci", + next: "Nasledujúci", + today: "Dnes", + year: "Rok", + month: "Mesiac", + week: "Týždeň", + day: "Deň", + list: "Rozvrh" + }, + weekText: "Ty", + allDayText: "Celý deň", + moreLinkText(e) { + return "+ďalšie: " + e; + }, + noEventsText: "Žiadne akcie na zobrazenie" +}, VIt = { + code: "sl", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Prejšnji", + next: "Naslednji", + today: "Trenutni", + year: "Leto", + month: "Mesec", + week: "Teden", + day: "Dan", + list: "Dnevni red" + }, + weekText: "Teden", + allDayText: "Ves dan", + moreLinkText: "več", + noEventsText: "Ni dogodkov za prikaz" +}, zIt = { + code: "sm", + buttonText: { + prev: "Talu ai", + next: "Mulimuli atu", + today: "Aso nei", + year: "Tausaga", + month: "Masina", + week: "Vaiaso", + day: "Aso", + list: "Faasologa" + }, + weekText: "Vaiaso", + allDayText: "Aso atoa", + moreLinkText: "sili atu", + noEventsText: "Leai ni mea na tutupu" +}, HIt = { + code: "sq", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "mbrapa", + next: "Përpara", + today: "Sot", + year: "Viti", + month: "Muaj", + week: "Javë", + day: "Ditë", + list: "Listë" + }, + weekText: "Ja", + allDayText: "Gjithë ditën", + moreLinkText(e) { + return "+më tepër " + e; + }, + noEventsText: "Nuk ka evente për të shfaqur" +}, WIt = { + code: "sr-cyrl", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Претходна", + next: "следећи", + today: "Данас", + year: "Година", + month: "Месец", + week: "Недеља", + day: "Дан", + list: "Планер" + }, + weekText: "Сед", + allDayText: "Цео дан", + moreLinkText(e) { + return "+ још " + e; + }, + noEventsText: "Нема догађаја за приказ" +}, GIt = { + code: "sr", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Prethodna", + next: "Sledeći", + today: "Danas", + year: "Godina", + month: "Mеsеc", + week: "Nеdеlja", + day: "Dan", + list: "Planеr" + }, + weekText: "Sed", + allDayText: "Cеo dan", + moreLinkText(e) { + return "+ još " + e; + }, + noEventsText: "Nеma događaja za prikaz" +}, YIt = { + code: "sv", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Förra", + next: "Nästa", + today: "Idag", + year: "År", + month: "Månad", + week: "Vecka", + day: "Dag", + list: "Program" + }, + buttonHints: { + prev(e) { + return `Föregående ${e.toLocaleLowerCase()}`; + }, + next(e) { + return `Nästa ${e.toLocaleLowerCase()}`; + }, + today(e) { + return (e === "Program" ? "Detta" : "Denna") + " " + e.toLocaleLowerCase(); + } + }, + viewHint: "$0 vy", + navLinkHint: "Gå till $0", + moreLinkHint(e) { + return `Visa ytterligare ${e} händelse${e === 1 ? "" : "r"}`; + }, + weekText: "v.", + weekTextLong: "Vecka", + allDayText: "Heldag", + moreLinkText: "till", + noEventsText: "Inga händelser att visa", + closeHint: "Stäng", + timeHint: "Klockan", + eventHint: "Händelse" +}, XIt = { + code: "ta-in", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "முந்தைய", + next: "அடுத்தது", + today: "இன்று", + year: "ஆண்டு", + month: "மாதம்", + week: "வாரம்", + day: "நாள்", + list: "தினசரி அட்டவணை" + }, + weekText: "வாரம்", + allDayText: "நாள் முழுவதும்", + moreLinkText(e) { + return "+ மேலும் " + e; + }, + noEventsText: "காண்பிக்க நிகழ்வுகள் இல்லை" +}, KIt = { + code: "th", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "ก่อนหน้า", + next: "ถัดไป", + prevYear: "ปีก่อนหน้า", + nextYear: "ปีถัดไป", + year: "ปี", + today: "วันนี้", + month: "เดือน", + week: "สัปดาห์", + day: "วัน", + list: "กำหนดการ" + }, + weekText: "สัปดาห์", + allDayText: "ตลอดวัน", + moreLinkText: "เพิ่มเติม", + noEventsText: "ไม่มีกิจกรรมที่จะแสดง" +}, ZIt = { + code: "tr", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "geri", + next: "ileri", + today: "bugün", + year: "Yıl", + month: "Ay", + week: "Hafta", + day: "Gün", + list: "Ajanda" + }, + weekText: "Hf", + allDayText: "Tüm gün", + moreLinkText: "daha fazla", + noEventsText: "Gösterilecek etkinlik yok" +}, qIt = { + code: "ug", + buttonText: { + prev: "ئالدىنقى", + next: "كېيىنكى", + today: "بۈگۈن", + year: "يىل", + month: "ئاي", + week: "ھەپتە", + day: "كۈن", + list: "كۈنتەرتىپ" + }, + allDayText: "پۈتۈن كۈن" +}, JIt = { + code: "uk", + week: { + dow: 1, + doy: 7 + // The week that contains Jan 1st is the first week of the year. + }, + buttonText: { + prev: "Попередній", + next: "далі", + today: "Сьогодні", + year: "рік", + month: "Місяць", + week: "Тиждень", + day: "День", + list: "Порядок денний" + }, + weekText: "Тиж", + allDayText: "Увесь день", + moreLinkText(e) { + return "+ще " + e + "..."; + }, + noEventsText: "Немає подій для відображення" +}, QIt = { + code: "uz-cy", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Олин", + next: "Кейин", + today: "Бугун", + month: "Ой", + week: "Ҳафта", + day: "Кун", + list: "Кун тартиби" + }, + weekText: "Ҳафта", + allDayText: "Кун бўйича", + moreLinkText(e) { + return "+ яна " + e; + }, + noEventsText: "Кўрсатиш учун воқеалар йўқ" +}, ext = { + code: "uz", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Oldingi", + next: "Keyingi", + today: "Bugun", + year: "Yil", + month: "Oy", + week: "Xafta", + day: "Kun", + list: "Kun tartibi" + }, + allDayText: "Kun bo'yi", + moreLinkText(e) { + return "+ yana " + e; + }, + noEventsText: "Ko'rsatish uchun voqealar yo'q" +}, txt = { + code: "vi", + week: { + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "Trước", + next: "Tiếp", + today: "Hôm nay", + year: "Năm", + month: "Tháng", + week: "Tuần", + day: "Ngày", + list: "Lịch biểu" + }, + weekText: "Tu", + allDayText: "Cả ngày", + moreLinkText(e) { + return "+ thêm " + e; + }, + noEventsText: "Không có sự kiện để hiển thị" +}, rxt = { + code: "zh-cn", + week: { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow: 1, + doy: 4 + // The week that contains Jan 4th is the first week of the year. + }, + buttonText: { + prev: "上月", + next: "下月", + today: "今天", + year: "年", + month: "月", + week: "周", + day: "日", + list: "日程" + }, + weekText: "周", + allDayText: "全天", + moreLinkText(e) { + return "另外 " + e + " 个"; + }, + noEventsText: "没有事件显示" +}, nxt = { + code: "zh-tw", + buttonText: { + prev: "上個", + next: "下個", + today: "今天", + year: "年", + month: "月", + week: "週", + day: "天", + list: "活動列表" + }, + weekText: "週", + allDayText: "整天", + moreLinkText: "顯示更多", + noEventsText: "沒有任何活動" +}, ixt = [ + kwt, + Pwt, + Nwt, + Lwt, + Fwt, + Bwt, + Uwt, + jwt, + $wt, + Vwt, + zwt, + Hwt, + Wwt, + Gwt, + Ywt, + Xwt, + Kwt, + Zwt, + qwt, + Jwt, + Qwt, + eIt, + tIt, + rIt, + nIt, + iIt, + aIt, + oIt, + sIt, + lIt, + cIt, + uIt, + hIt, + dIt, + fIt, + pIt, + gIt, + vIt, + mIt, + yIt, + _It, + SIt, + bIt, + EIt, + CIt, + TIt, + wIt, + IIt, + xIt, + AIt, + RIt, + DIt, + OIt, + MIt, + kIt, + PIt, + NIt, + LIt, + FIt, + BIt, + UIt, + jIt, + $It, + VIt, + zIt, + HIt, + WIt, + GIt, + YIt, + XIt, + KIt, + ZIt, + qIt, + JIt, + QIt, + ext, + txt, + rxt, + nxt +]; +function B4(e, t, r, n) { + let i; + return t === "local" ? i = $moment(e) : t === "UTC" ? i = $moment.utc(e) : $moment.tz ? i = $moment.tz(e, t) : (i = $moment.utc(e), r != null && i.utcOffset(r)), i.locale(n), i; +} +function axt(e, t) { + let r = Exe(e); + if (t.end) { + let n = B4(t.start.array, t.timeZone, t.start.timeZoneOffset, t.localeCodes[0]), i = B4(t.end.array, t.timeZone, t.end.timeZoneOffset, t.localeCodes[0]); + return _6(r, ife(n), ife(i), t.defaultSeparator); + } + return B4(t.date.array, t.timeZone, t.date.timeZoneOffset, t.localeCodes[0]).format(r.whole); +} +function ife(e) { + return (t) => t ? e.format(t) : ""; +} +function Exe(e) { + let t = e.match(/^(.*?)\{(.*)\}(.*)$/); + if (t) { + let r = Exe(t[2]); + return { + head: t[1], + middle: r, + tail: t[3], + whole: t[1] + r.whole + t[3] + }; + } + return { + head: null, + middle: null, + tail: null, + whole: e + }; +} +function _6(e, t, r, n) { + if (e.middle) { + let o = t(e.head), l = _6(e.middle, t, r, n), u = t(e.tail), d = r(e.head), f = _6(e.middle, t, r, n), g = r(e.tail); + if (o === d && u === g) + return o + (l === f ? l : l + n + f) + u; + } + let i = t(e.whole), a = r(e.whole); + return i === a ? i : i + n + a; +} +var oxt = rc({ + name: "@fullcalendar/moment", + cmdFormatter: axt +}); +class sxt extends $react.Component { + constructor(t) { + super(t), this.state = {}; + } + static getDerivedStateFromError(t) { + return { + errorMessage: t.toString() + }; + } + componentDidCatch(t, r) { + } + render() { + return this.state.errorMessage ? /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt("p", { + children: this.state.errorMessage + }), /* @__PURE__ */ dt(IB, { + type: "primary", + onClick: () => this.setState({ + errorMessage: "" + }), + children: "Retry" + })] + }) : this.props.children; + } +} +const lxt = $styled_components.div` + position: relative; + height: 100%; + overflow: hidden; + color: ${(e) => e.$style.text}; + .fc-theme-standard .fc-list-day-cushion, + .fc .fc-timegrid-col.fc-day-today, + .fc .fc-daygrid-day.fc-day-today { + background-color: ${(e) => e.$style.background}; + } + .fc .fc-highlight { + background-color: ${(e) => e.$style.selectBackground}; + } + a { + color: ${(e) => e.$style.text}; + } + + .fc .fc-timegrid-slot { + height: 28px; + } + + // day + .fc-timeGridDay-view { + .fc-col-header-cell { + font-size: 20px; + font-weight: 500; + a { + line-height: 67px; + } + } + } + + // list + .fc-list { + .fc-list-table { + table-layout: fixed; + th { + background-color: ${(e) => e.$style.background}; + } + } + .fc-list-event-graphic { + display: none; + } + .fc-list-day-cushion { + font-size: 16px; + font-weight: 500; + line-height: 32px; + padding: 0 24px; + } + .fc-list-day-side-text { + float: left; + margin-left: 24px; + } + .fc-list-day { + th { + padding: 8px 0 3px 0; + } + > th { + border: none; + } + &:not(:nth-of-type(1)) .fc-list-day-cushion { + border-top: 1px solid + ${(e) => $lowcoder_sdk.toHex(e.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(e.$style.border, 0.03)}; + } + } + .fc-event + .fc-list-day th { + padding-top: 11px; + .fc-list-day-cushion { + padding-top: 8px; + } + } + .fc-event { + .fc-list-event-time, + .fc-list-event-title { + border: none; + } + &:hover .event { + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); + border-width: 1px; + margin: 2px 5px; + height: 20px; + .event-title { + margin-left: 15px; + } + &::before { + left: 2px; + } + } + } + .fc-event { + font-size: 13px; + line-height: 20px; + display: flex; + align-items: center; + &.no-time { + padding-left: 19px; + } + } + .fc-list-event-time { + padding: 0px 16px 0 24px; + vertical-align: middle; + min-width: 87px; + width: 87px; + box-sizing: content-box; + } + .fc-list-event-title { + min-width: 266px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 0 14px 0 0; + cursor: pointer; + .event { + font-size: 13px; + height: 18px; + line-height: 18px; + margin: 3px 5px; + border-width: 0; + align-items: center; + &::before { + height: 14px; + top: 2px; + left: 3px; + } + .event-time { + display: none; + } + .event-title { + margin-left: 16px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .event-remove { + background-color: inherit; + } + } + } + .fc-event:hover td { + background-color: inherit; + } + } + + // month + .fc-dayGridMonth-view { + .fc-daygrid-day-frame { + min-height: 95px; + height: 100%; + } + .fc-col-header-cell { + font-size: 14px; + font-weight: 400; + text-align: left; + padding-left: 16px; + a { + padding: 0; + line-height: 39px; + } + } + .fc-daygrid-day-number { + font-size: 14px; + line-height: 22px; + font-weight: 500; + padding: 0 6px; + border-radius: 11px; + margin: 12px 0 0 10px; + } + .fc-daygrid-day-top { + flex-direction: inherit; + } + .fc-day-today .fc-daygrid-day-number { + background-color: ${(e) => { + var t; + return (t = e.$theme) != null && t.primary ? e.$theme.primary : e.$style.background; +}}; + color: ${(e) => { + var t, r, n; + return $lowcoder_sdk.contrastText(((t = e.$theme) == null ? void 0 : t.primary) || "", ((r = e.$theme) == null ? void 0 : r.textDark) || "#000000", ((n = e.$theme) == null ? void 0 : n.textLight) || "#ffffff"); +}}; + } + .fc-daygrid-day-events { + padding: 1px 0 5px 0; + min-height: unset; + .fc-event { + margin: 2px 4px 2px 12px; + padding: 0; + &:hover .event { + padding-right: 20px; + } + .event { + font-size: 13px; + line-height: 18px; + padding-right: 0; + .event-time { + display: none; + } + .event-title { + margin-left: 15px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + &::before { + height: 14px; + } + } + } + .fc-daygrid-day-bottom { + padding: 2px 2px 0 10px; + } + } + .fc-day-other { + color: ${(e) => e.$style.text}; + .fc-daygrid-day-top, + .fc-daygrid-day-events { + opacity: 0.35; + } + .event::before { + background-color: ${(e) => e.$style.text}; + } + } + } + // month drag event + .fc > .fc-event { + visibility: hidden; + } + + // more link + .fc-view-harness-active .fc-more-popover { + border-radius: 4px; + box-shadow: 0 0px 10px 4px rgba(0, 0, 0, 0.25); + overflow: hidden; + left: ${(e) => `min(${e.$left}px, calc(100% - 210px)) !important`}; + .fc-popover-body { + padding: 4px 0; + min-width: 200px; + width: 200px; + .fc-daygrid-event-harness { + margin: 4px; + .fc-event { + margin: 0; + .event { + height: fit-content; + .event-title { + white-space: pre-wrap; + } + .event-time { + margin-top: 0; + } + } + } + } + } + .fc-popover-header, + .fc-popover-body { + background-color: ${(e) => e.$style.background}; + } + .fc-popover-header .fc-popover-close { + color: #8b8fa3; + &:hover { + color: #222; + } + } + } + + .fc-direction-ltr .fc-timegrid-more-link { + border: 1px solid ${(e) => e.$style.border}; + border-radius: 4px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); + font-size: 13px; + display: inline-block; + font-weight: 500; + background-color: ${(e) => $lowcoder_sdk.lightenColor(e.$style.background, 0.1)}; + } + + .fc-dayGridMonth-view .fc-more-link { + margin: 0 2px 2px 2px !important; + } + .fc-timeGridWeek-view .fc-more-link, + .fc-timeGridDay-view .fc-more-link { + margin: 2px !important; + } + .fc-daygrid-day-events { + margin: 0 !important; + padding: 2px 0; + .fc-event { + margin: 2px 4px; + } + .fc-daygrid-day-bottom { + line-height: 16px; + padding: 0; + .fc-more-link { + width: calc(100% - 4px); + border: 1px solid ${(e) => e.$style.border}; + border-radius: 4px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15); + font-size: 13px; + display: inline-block; + height: 20px; + padding-left: 15px; + font-weight: 500; + background-color: ${(e) => $lowcoder_sdk.lightenColor(e.$style.background, 0.1)}; + } + } + } + + // on resize + .fc-media-screen { + height: 100% !important; + } + .fc-scroller { + overflow: hidden auto !important; + overflow: hidden overlay !important; + } + .fc-col-header, + .fc-scroller > div, + .fc-scroller > div > table, + .fc-scrollgrid-sync-table, + .fc-timegrid-cols > table, + .fc .fc-scrollgrid, + .fc .fc-scrollgrid table { + width: 100% !important; + } + + // event + .fc-timegrid-event .fc-event-main { + padding: 4px 0 4px 1px; + } + .fc-event { + position: relative; + height: 100%; + background-color: unset !important; + border: none !important; + box-shadow: none !important; + .event-remove { + color: ${(e) => e.$style.text}; + } + &:hover { + .event-remove { + opacity: ${(e) => e.$editable ? 1 : void 0}; + } + } + } + + // left time + .time.past { + opacity: 0.35; + } + + .past .time { + opacity: 0.35; + } + + .future .time { + opacity: 1; + } + + .fc-scrollgrid-liquid > tbody { + & > tr:nth-of-type(2) { + display: ${(e) => e.allDay && 1}; + } + } + .fc .fc-timegrid-slot-label-cushion { + padding: 0 15px; + } + + // border-radius, bg + .fc-theme-standard .fc-list { + background-color: ${(e) => e.$style.background}; + border-radius: ${(e) => `0 0 ${e.$style.radius} ${e.$style.radius}`}; + border-color: ${(e) => e.$style.border}; + border-top-color: ${(e) => $lowcoder_sdk.toHex(e.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(e.$style.border, 0.03)}; + } + .fc-scrollgrid-liquid { + border-radius: ${(e) => `0 0 ${e.$style.radius} ${e.$style.radius}`}; + overflow: hidden; + border-right-width: 1px; + border-bottom-width: 1px; + border-color: ${(e) => e.$style.border}; + > thead, + > tbody > tr:nth-of-type(1), + .fc-scrollgrid-section-liquid > td { + background-color: ${(e) => e.$style.background}; + } + } + .fc-scrollgrid-section-liquid > td, + .fc-scrollgrid-liquid .fc-scrollgrid-section-header > th { + border: none; + } + .fc-scrollgrid-liquid > tbody > tr:nth-of-type(1) > td { + border-right: none; + } + .fc-theme-standard .fc-scrollgrid { + border-color: ${(e) => $lowcoder_sdk.toHex(e.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(e.$style.border, 0.03)}; + } + .fc .fc-scrollgrid { + border-bottom-width: 1px; + border-right-width: 1px; + } + + .fc-day-sat, + .fc-day-sun { + &.fc-timegrid-col, + &.fc-daygrid-day { + background-color: ${(e) => $lowcoder_sdk.isDarkColor(e.$style.background) ? $lowcoder_sdk.darkenColor(e.$style.background, 0.06) : $lowcoder_sdk.darkenColor(e.$style.background, 0.02)}; + } + } + .fc-theme-standard td, + .fc-theme-standard th { + border-color: ${(e) => $lowcoder_sdk.toHex(e.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(e.$style.border, 0.03)}; + } + + // header + .fc .fc-toolbar.fc-header-toolbar { + padding: 16px; + margin-bottom: 0; + border: 1px solid ${(e) => e.$style.border}; + border-bottom: none; + border-radius: ${(e) => `${e.$style.radius} ${e.$style.radius} 0 0`}; + background-color: ${(e) => e.$style.background}; + } + .fc-toolbar-title { + color: ${(e) => e.$style.title}; + font-size: 24px; + line-height: 24px; + display: inline-flex; + } + .fc-toolbar-chunk { + display: inline-flex; + align-items: center; + } + .fc .fc-toolbar-chunk .fc-button.fc-button-primary { + height: 28px; + display: flex; + align-items: center; + justify-content: center; + &:not(:disabled):not(.fc-button-active) { + &:hover, + &:active { + color: ${(e) => e.$style.btnText}; + background-color: ${(e) => $lowcoder_sdk.toHex(e.$style.headerBtnBackground) === "#FFFFFF" ? "#F5F5F6" : $lowcoder_sdk.genHoverColor(e.$style.headerBtnBackground)}; + border-color: ${(e) => $lowcoder_sdk.toHex(e.$style.headerBtnBackground) === "#FFFFFF" ? "#D7D9E0" : $lowcoder_sdk.backgroundToBorder($lowcoder_sdk.genHoverColor(e.$style.headerBtnBackground))}; + } + } + &:not(:disabled):focus { + box-shadow: none; + } + &:disabled { + cursor: not-allowed; + opacity: 1; + &, + &:hover { + background-color: ${(e) => e.$style.headerBtnBackground}; + border-color: ${(e) => $lowcoder_sdk.backgroundToBorder(e.$style.headerBtnBackground)}; + color: ${(e) => $lowcoder_sdk.toHex(e.$style.btnText) === "#222222" ? "#B8B9BF" : $lowcoder_sdk.contrastColor(e.$style.btnText)}; + } + } + } + .fc .fc-button-primary:not(:disabled).fc-button-active:focus, + .fc .fc-button-primary:not(:disabled):active:focus { + box-shadow: none; + } + .fc-toolbar-chunk:nth-of-type(3) .fc-button-primary { + height: 28px; + display: inline-flex; + font-size: 14px; + margin-left: 8px; + background-color: ${(e) => e.$style.headerBtnBackground}; + border-color: ${(e) => $lowcoder_sdk.backgroundToBorder(e.$style.headerBtnBackground)}; + color: ${(e) => e.$style.btnText}; + &.fc-today-button { + min-width: 52px; + } + &.fc-prev-button, + &.fc-next-button { + padding: 0; + width: 28px; + color: ${(e) => $lowcoder_sdk.lightenColor(e.$style.btnText, 0.4)}; + } + &.fc-prev-button { + margin-left: 12px; + } + } + .fc-toolbar-chunk:nth-of-type(3) .fc-button-group { + background-color: ${(e) => $lowcoder_sdk.toHex(e.$style.headerBtnBackground) === "#FFFFFF" ? "#EFEFF1" : $lowcoder_sdk.isDarkColor(e.$style.headerBtnBackground) ? e.$style.headerBtnBackground : $lowcoder_sdk.darkenColor(e.$style.headerBtnBackground, 0.1)}; + border-radius: 4px; + margin-left: 16px; + .fc-button-primary { + background-color: transparent; + min-width: 60px; + border-radius: 4px; + margin: 2px; + border: none; + color: ${(e) => $lowcoder_sdk.toHex(e.$style.btnText) === "#222222" ? "#8B8FA3" : $lowcoder_sdk.lightenColor(e.$style.btnText, 0.4)}; + font-weight: 500; + + &.fc-button-active { + background-color: ${(e) => $lowcoder_sdk.isDarkColor(e.$style.headerBtnBackground) ? $lowcoder_sdk.lightenColor(e.$style.headerBtnBackground, 0.1) : e.$style.headerBtnBackground}; + color: ${(e) => e.$style.btnText}; + } + } + } + + // week head + .fc-timeGridWeek-view { + .week-head { + display: flex; + flex-direction: column; + font-size: 14px; + font-weight: 400; + &.past span { + opacity: 0.35; + } + .week { + padding-bottom: 3px; + } + .day { + font-size: 20px; + font-weight: 500; + line-height: 22px; + } + } + .fc-day-today.fc-col-header-cell { + background-color: ${(e) => { + var t; + return $lowcoder_sdk.isDarkColor(e.$style.background) ? "#ffffff19" : $lowcoder_sdk.toHex((t = e.$theme) == null ? void 0 : t.primary) + "19"; +}}; + a { + color: ${(e) => { + var t; + return !$lowcoder_sdk.isDarkColor(e.$style.background) && $lowcoder_sdk.darkenColor((t = e.$theme) == null ? void 0 : t.primary, 0.1); +}}; + } + } + .fc-col-header-cell-cushion { + padding: 8px 0 13px 0; + } + } + + // week left + .fc .fc-timegrid-axis-cushion { + min-width: 62px; + min-height: 52px; + max-width: none; + display: inline-flex; + align-items: center; + justify-content: center; + } + .fc-direction-ltr .fc-timegrid-slot-label-frame { + text-align: center; + } + .fc .fc-timegrid-slot-label { + border: none; + } + + // time can doubleClick + .fc-timegrid-bg-harness, + .fc-daygrid-day-bg { + pointer-events: none; + } +`, cxt = $styled_components.div` + position: absolute; + pointer-events: auto; + top: 0; + right: 0; + display: flex; + padding: 5px; + opacity: 0; + cursor: pointer; + &:hover { + g { + stroke: #315efb; + } + } +`, uxt = $styled_components.div` + height: 100%; + width: 100%; + pointer-events: none; + border-radius: 4px; + box-shadow: ${(e) => !e.isList && "0 0 5px 0 rgba(0, 0, 0, 0.15)"}; + border: 1px solid ${(e) => e.$style.border}; + display: ${(e) => e.isList && "flex"}; + background-color: ${(e) => !e.isList && $lowcoder_sdk.lightenColor(e.$style.background, 0.1)}; + overflow: hidden; + font-size: 13px; + line-height: 19px; + padding-right: 20px; + overflow: hidden; + position: relative; + &::before { + content: ""; + position: absolute; + display: block; + width: 5px; + height: calc(100% - 4px); + left: 2px; + top: 2px; + border-radius: 3px; + background-color: ${(e) => e.bg}; + } + + .event-time { + color: ${(e) => !e.isList && ($lowcoder_sdk.isDarkColor(e.$style.text) ? $lowcoder_sdk.lightenColor(e.$style.text, 0.2) : e.$style.text)}; + margin-left: 15px; + white-space: pre-wrap; + margin-top: 2px; + } + .event-title { + color: ${(e) => !e.isList && e.$style.text}; + font-weight: 500; + margin-left: 15px; + white-space: pre-wrap; + word-break: break-word; + } + + &.small { + height: 20px; + .event-time { + display: none; + } + .event-title { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + &.middle { + padding-top: 2px; + .event-time, + .event-title { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + &.large { + .event-time { + margin-top: 13px; + } + } + &.past { + background-color: ${(e) => $lowcoder_sdk.isDarkColor(e.$style.background) && e.$style.background}; + &::before { + background-color: ${(e) => $lowcoder_sdk.toHex(e.$style.text) === "#3C3C3C" ? "#8B8FA3" : $lowcoder_sdk.isDarkColor(e.$style.text) ? $lowcoder_sdk.lightenColor(e.$style.text, 0.3) : e.$style.text}; + } + &::before, + .event-title, + .event-time { + opacity: 0.35; + } + } +`, hxt = $styled_components(rw)` + .ant-form-item-label { + width: 100px; + text-align: left; + line-height: 18px; + label:not(.ant-form-item-required) { + margin-left: 11px; + } + label span { + ${$lowcoder_sdk.UnderlineCss} + } + } +`; +var V_ = /* @__PURE__ */ ((e) => (e.YEAR = "multiMonthYear", e.MONTH = "dayGridMonth", e.WEEK = "timeGridWeek", e.DAY = "timeGridDay", e.DAYLIST = "dayGridDay", e.LIST = "listWeek", e.TIMEGRID = "timeGridDay", e))(V_ || {}); +const dxt = [{ + label: yt("calendar.resourceTimeGridDay"), + value: "resourceTimeGridDay" +}, { + label: yt("calendar.timeline"), + value: "resourceTimelineDay" +}, { + label: yt("calendar.year"), + value: "multiMonthYear" +}, { + label: yt("calendar.month"), + value: "dayGridMonth" +}, { + label: yt("calendar.week"), + value: "timeGridWeek" +}, { + label: yt("calendar.weekdaygrid"), + value: "dayGridWeek" +}, { + label: yt("calendar.daygrid"), + value: "dayGridDay" +}, { + label: yt("calendar.day"), + value: "timeGridDay" +}, { + label: yt("calendar.list"), + value: "listWeek" +}], fxt = [{ + label: yt("calendar.year"), + value: "multiMonthYear" +}, { + label: yt("calendar.month"), + value: "dayGridMonth" +}, { + label: yt("calendar.week"), + value: "timeGridWeek" +}, { + label: yt("calendar.weekdaygrid"), + value: "dayGridWeek" +}, { + label: yt("calendar.daygrid"), + value: "dayGridDay" +}, { + label: yt("calendar.day"), + value: "timeGridDay" +}, { + label: yt("calendar.list"), + value: "listWeek" +}], pxt = [{ + label: yt("calendar.monday"), + value: "1" +}, { + label: yt("calendar.tuesday"), + value: "2" +}, { + label: yt("calendar.wednesday"), + value: "3" +}, { + label: yt("calendar.thursday"), + value: "4" +}, { + label: yt("calendar.friday"), + value: "5" +}, { + label: yt("calendar.saturday"), + value: "6" +}, { + label: yt("calendar.sunday"), + value: "0" +}], gxt = [{ + id: "1", + title: "Coding", + start: $dayjs().hour(10).minute(0).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + end: $dayjs().hour(12).minute(30).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + color: "#079968" +}, { + id: "2", + title: "Rest", + start: $dayjs().hour(24).format($lowcoder_sdk.DATE_FORMAT), + end: $dayjs().hour(48).format($lowcoder_sdk.DATE_FORMAT), + allDay: !0 +}], vxt = [{ + id: "1", + resourceId: "d1", + title: "event 1", + start: $dayjs().hour(10).minute(0).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + end: $dayjs().hour(17).minute(30).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + color: "#079968" +}, { + id: "2", + resourceId: "b", + title: "event 5", + start: $dayjs().hour(8).minute(0).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + end: $dayjs().hour(16).minute(30).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + color: "#079968" +}, { + id: "3", + resourceId: "a", + title: "event 3", + start: $dayjs().hour(12).minute(0).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + end: $dayjs().hour(21).minute(30).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT), + color: "#079968" +}], mxt = [{ + id: "a", + title: "Auditorium A" +}, { + id: "b", + title: "Auditorium B", + eventColor: "green" +}, { + id: "d", + title: "Auditorium D", + children: [{ + id: "d1", + title: "Room D1" + }, { + id: "d2", + title: "Room D2" + }] +}], yxt = { + today: yt("calendar.today"), + month: yt("calendar.month"), + week: yt("calendar.week"), + timeline: yt("calendar.timeline"), + day: yt("calendar.day"), + list: yt("calendar.list") +}, _xt = { + left: "title", + right: "prev today next dayGridMonth,timeGridWeek,timeGridDay,listWeek" +}, Sxt = { + left: "title", + right: "prev today next resourceTimelineMonth,resourceTimelineWeek,resourceTimelineDay" +}, bxt = { + left: "title", + right: "prev today next" +}, Ext = (e) => { + const t = e.text.split(" "); + return { + html: ` + ${t[0]} + ${t[1]} + ` + }; +}, afe = (e) => { + let t = !1; + return e.view.type === "timeGridWeek" ? t = $dayjs().isAfter($dayjs($dayjs().format("YYYY MM DD " + e.text))) : e.view.type === "timeGridDay" && (t = $dayjs().isAfter($dayjs($dayjs(e.view.activeStart).format("YYYY MM DD " + e.text)))), { + html: `${e.text}` + }; +}, Cxt = { + timeGridWeek: { + dayHeaderFormat: "ddd DD", + dayHeaderContent: (e) => Ext(e), + slotLabelContent: (e) => afe(e) + }, + timeGridDay: { + slotLabelContent: (e) => afe(e) + }, + listWeek: { + listDayFormat: { + weekday: "short" + } + } +}, U4 = [{ + hour: "2-digit", + minute: "2-digit" +}], Txt = [{ + week: "short" +}, { + hour: "2-digit" +}], wxt = [{ + week: "short" +}, { + weekday: "short" +}], Ixt = (e) => { + let t = ""; + return [ + "timeGridWeek", + "timeGridDay" + /* DAY */ + ].includes(e.view.type) && ($dayjs().isAfter(e.view.activeEnd) ? t = "past" : $dayjs().isBefore(e.view.activeStart) && (t = "future")), t; +}, xxt = { + events: $lowcoder_sdk.jsonValueExposingStateControl("events", gxt), + resourcesEvents: $lowcoder_sdk.jsonValueExposingStateControl("resourcesEvents", vxt), + resources: $lowcoder_sdk.jsonValueExposingStateControl("resources", mxt), + resourceName: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, yt("calendar.resourcesDefault")), + onEvent: $lowcoder_sdk.ChangeEventHandlerControl, + onDropEvent: $lowcoder_sdk.DragEventHandlerControl, + editable: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + showEventTime: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + showWeekends: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + showAllDay: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + defaultDate: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "{{ new Date() }}"), + firstDay: $lowcoder_sdk.dropdownControl(pxt, "1"), + dayMaxEvents: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 2), + eventMaxStack: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 0), + style: $lowcoder_sdk.styleControl($lowcoder_sdk.CalendarStyle), + licenseKey: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, ""), + currentFreeView: $lowcoder_sdk.dropdownControl(fxt, "timeGridWeek"), + currentPremiumView: $lowcoder_sdk.dropdownControl(dxt, "resourceTimelineDay") +}; +let S6 = function() { + return new $lowcoder_sdk.UICompBuilder(xxt, (e) => { + const t = $react.useContext($lowcoder_sdk.ThemeContext), r = $react.createRef(), n = $react.useRef(), [i] = rw.useForm(), [a, o] = $react.useState(void 0), [l, u] = $react.useState(e.licenseKey !== ""); + $react.useEffect(() => { + u(e.licenseKey !== ""); + }, [e.licenseKey]); + let d = l ? e.currentPremiumView : e.currentFreeView, f = d == "resourceTimelineDay" || d == "resourceTimeGridDay" ? e.resourcesEvents : e.events; + console.log("currentEvents", f); + let g = Array.isArray(f.value) ? f.value.map((ne) => { + var fe; + return br({ + title: ne.title, + id: ne.id, + start: $dayjs(ne.start, $lowcoder_sdk.DateParser).format(), + end: $dayjs(ne.end, $lowcoder_sdk.DateParser).format(), + allDay: ne.allDay, + resourceId: ne.resourceId ? ne.resourceId : null, + color: $lowcoder_sdk.isValidColor(ne.color || "") ? ne.color : (fe = t == null ? void 0 : t.theme) == null ? void 0 : fe.primary + }, ne.groupId ? { + groupId: ne.groupId + } : {}); + }) : [f.value]; + const v = e.resources.value, C = [jTt, pxe, ywt, Mwt, oxt, Xde, efe, tfe, ZTt].filter((ne) => l ? !0 : ![Xde, efe, tfe].includes(ne)), A = (ne) => { + switch (ne) { + case "resourceTimelineDay": + return Sxt; + case "resourceTimeGridDay": + return bxt; + default: + return _xt; + } + }, [S, _] = $react.useState(U4), E = (ne) => { + switch (ne.view.type) { + case "resourceTimelineDay": + _(U4); + break; + case "resourceTimelineWeek": + _(Txt); + break; + case "resourceTimelineMonth": + _(wxt); + break; + default: + _(U4); + break; + } + }; + let I; + try { + I = new Date(e.defaultDate || Date.now()).toISOString(); + } catch (ne) { + I = void 0; + } + let { + showEventTime: w, + showWeekends: x, + showAllDay: b, + dayMaxEvents: R, + eventMaxStack: M, + style: O, + firstDay: P, + editable: B, + licenseKey: H, + resourceName: Y + } = e; + function X(ne) { + const fe = ne.view.type === "listWeek"; + let de = ""; + if ([V_.WEEK, V_.DAY].includes(ne.view.type)) { + const be = $dayjs(ne.event.end).diff($dayjs(ne.event.start), "minutes"); + be <= 30 || ne.event.allDay ? de = "small" : be <= 60 ? de = "middle" : de = "large"; + } + const Te = $dayjs().isAfter($dayjs(ne.event.end)) && ne.view.type !== V_.MONTH ? "past" : ""; + return /* @__PURE__ */ gn(uxt, { + className: `event ${de} ${Te}`, + bg: ne.backgroundColor, + theme: t == null ? void 0 : t.theme, + isList: fe, + allDay: b, + $style: e.style, + children: [/* @__PURE__ */ dt("div", { + className: "event-time", + children: ne.timeText + }), /* @__PURE__ */ dt("div", { + className: "event-title", + children: ne.event.title + }), /* @__PURE__ */ dt(cxt, { + isList: fe, + className: "event-remove", + onClick: (be) => { + be.stopPropagation(), e.onEvent("change"); + const Ve = g.filter((pe) => pe.id !== ne.event.id); + e.events.onChange(Ve); + }, + onMouseDown: (be) => { + be.stopPropagation(), be.preventDefault(); + }, + children: /* @__PURE__ */ dt($lowcoder_sdk.CalendarDeleteIcon, {}) + })] + }); + } + const ee = () => { + const ne = e.events.value.find((fe) => { + var de; + return fe.id === ((de = n.current) == null ? void 0 : de.id); + }); + if (!(!B || !n.current)) + if (ne) { + const { + title: fe, + groupId: de, + color: Te, + id: be + } = ne; + J({ + title: fe, + groupId: de, + color: Te, + id: be + }, !0); + } else + J(n.current, !1); + }, ae = (ne) => { + const fe = { + allDay: ne.allDay, + start: ne.startStr, + end: ne.endStr + }, de = ne.view.type, Te = $dayjs(ne.end).diff($dayjs(ne.start), "minutes"); + if (de === V_.MONTH && Te === 1440 || [V_.WEEK, V_.DAY].includes(de) && Te === 30 || ne.allDay && Te === 1440) { + n.current = fe, setTimeout(() => { + n.current = void 0; + }, 500); + return; + } + J(fe, !1); + }, J = (ne, fe) => { + var be; + const de = yt(fe ? "calendar.editEvent" : "calendar.creatEvent"); + i && i.setFieldsValue(ne); + const Te = (be = n.current) == null ? void 0 : be.id; + $lowcoder_sdk.CustomModal.confirm({ + title: de, + content: /* @__PURE__ */ gn(hxt, { + form: i, + children: [/* @__PURE__ */ dt(rw.Item, { + label: /* @__PURE__ */ dt($lowcoder_sdk.Tooltip, { + title: yt("calendar.eventIdTooltip"), + children: yt("calendar.eventId") + }), + name: "id", + rules: [{ + required: !0, + message: yt("calendar.eventIdRequire") + }], + children: /* @__PURE__ */ dt(YP, {}) + }), /* @__PURE__ */ dt(rw.Item, { + label: yt("calendar.eventName"), + name: "title", + rules: [{ + required: !0, + message: yt("calendar.eventNameRequire") + }], + children: /* @__PURE__ */ dt(YP, {}) + }), /* @__PURE__ */ dt(rw.Item, { + label: yt("calendar.eventColor"), + name: "color", + children: /* @__PURE__ */ dt(YP, {}) + }), /* @__PURE__ */ dt(rw.Item, { + label: /* @__PURE__ */ dt($lowcoder_sdk.Tooltip, { + title: yt("calendar.groupIdTooltip"), + children: yt("calendar.eventGroupId") + }), + name: "groupId", + children: /* @__PURE__ */ dt(YP, {}) + })] + }), + onConfirm: () => (i.submit(), i.validateFields().then(() => { + const { + id: Ve, + groupId: pe, + color: Be, + title: Ue = "" + } = i.getFieldsValue(); + if (e.events.value.findIndex((Re) => Re.id === Ve) > -1 && Ve !== Te) + throw i.setFields([{ + name: "id", + errors: [yt("calendar.eventIdExist")] + }]), new Error(); + if (fe) { + const Re = e.events.value.map((Ne) => Ne.id === Te ? br(br(rn(br({}, Ne), { + title: Ue, + id: Ve + }), pe !== void 0 ? { + groupId: pe + } : null), Be !== void 0 ? { + color: Be + } : null) : Ne); + e.events.onChange(Re); + } else { + const Re = br(br({ + allDay: ne.allDay, + start: ne.start, + end: ne.end, + id: Ve, + title: Ue + }, pe !== void 0 ? { + groupId: pe + } : null), Be !== void 0 ? { + color: Be + } : null); + e.events.onChange([...e.events.value, Re]); + } + e.onEvent("change"), i.resetFields(); + })), + onCancel: () => { + i.resetFields(); + } + }); + }; + return /* @__PURE__ */ dt(lxt, { + ref: r, + $editable: B, + $style: O, + $theme: t == null ? void 0 : t.theme, + onDoubleClick: ee, + $left: a, + children: /* @__PURE__ */ dt(sxt, { + children: /* @__PURE__ */ dt(vIe, { + slotEventOverlap: !1, + events: g, + dayHeaders: !0, + dayHeaderFormat: { + weekday: "short", + month: "numeric", + day: "numeric", + omitCommas: !0 + }, + expandRows: !0, + multiMonthMinWidth: 250, + nowIndicator: !0, + height: "100%", + locale: Mje(), + locales: ixt, + firstDay: Number(P), + plugins: C, + headerToolbar: A(d), + resourceAreaHeaderContent: Y, + buttonText: yxt, + schedulerLicenseKey: H, + views: Cxt, + resources: d == "resourceTimelineDay" || d == "resourceTimeGridDay" ? v : [], + eventClassNames: () => w ? "" : "no-time", + slotLabelFormat: S, + viewClassNames: Ixt, + moreLinkText: yt("calendar.more"), + initialDate: I, + initialView: d, + editable: B, + selectable: B, + datesSet: E, + selectMirror: !1, + displayEventTime: w, + dayMaxEvents: R, + eventMaxStack: M || void 0, + weekends: x, + allDaySlot: b, + eventContent: X, + select: (ne) => ae(ne), + eventClick: (ne) => { + const fe = g.find((de) => de.id === ne.event.id); + n.current = fe, setTimeout(() => { + n.current = void 0; + }, 500); + }, + moreLinkClick: (ne) => { + var Te, be, Ve, pe, Be, Ue, Qe, Re, Ne, Me; + let fe = 0; + const de = ne.jsEvent.target; + ne.view.type === V_.DAY ? ne.allDay ? fe = ((be = (Te = de.offsetParent) == null ? void 0 : Te.parentElement) == null ? void 0 : be.offsetLeft) || 0 : fe = ((Ve = de.parentElement) == null ? void 0 : Ve.offsetLeft) || 0 : ne.allDay ? fe = ((Ue = (Be = (pe = de.offsetParent) == null ? void 0 : pe.parentElement) == null ? void 0 : Be.parentElement) == null ? void 0 : Ue.offsetLeft) || 0 : fe = ((Me = (Ne = (Re = (Qe = de.offsetParent) == null ? void 0 : Qe.parentElement) == null ? void 0 : Re.parentElement) == null ? void 0 : Ne.parentElement) == null ? void 0 : Me.offsetLeft) || 0, o(fe); + }, + eventsSet: (ne) => { + let fe = !1, de = []; + ne.forEach((Te) => { + const be = g.find((Be) => Be.id === Te.id), Ve = $dayjs(Te.start, $lowcoder_sdk.DateParser).format(), pe = $dayjs(Te.end, $lowcoder_sdk.DateParser).format(); + Ve !== (be == null ? void 0 : be.start) || pe !== (be == null ? void 0 : be.end) || !!Te.allDay != !!(be != null && be.allDay) ? (fe = !0, de.push(rn(br({}, be), { + allDay: Te.allDay, + start: Te.startStr, + end: Te.endStr + }))) : de.push(be); + }), fe && e.onEvent("change"); + }, + eventDragStop: (ne) => { + ne.view && e.onEventDrop("dropEvent"); + } + }) + }) + }, I ? d + I : d); + }).setPropertyViewFn((e) => { + const t = e.licenseKey.getView(); + return /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.basic, + children: [e.defaultDate.propertyView({ + label: yt("calendar.defaultDate"), + tooltip: yt("calendar.defaultDateTooltip") + }), e.events.propertyView({ + label: yt("calendar.events") + }), t == "" ? null : e.resourcesEvents.propertyView({ + label: yt("calendar.resourcesEvents") + })] + }), t != "" && /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: yt("calendar.resources"), + children: [e.resources.propertyView({ + label: yt("calendar.resources") + }), e.resourceName.propertyView({ + label: yt("calendar.resourcesName") + })] + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.interaction, + children: [$lowcoder_sdk.hiddenPropertyView(e), e.onEvent.getPropertyView(), e.onDropEvent.getPropertyView(), e.editable.propertyView({ + label: yt("calendar.editable") + })] + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.advanced, + children: [e.showEventTime.propertyView({ + label: yt("calendar.showEventTime"), + tooltip: yt("calendar.showEventTimeTooltip") + }), e.showWeekends.propertyView({ + label: yt("calendar.showWeekends") + }), e.showAllDay.propertyView({ + label: yt("calendar.showAllDay"), + tooltip: yt("calendar.showAllDayTooltip") + }), e.dayMaxEvents.propertyView({ + label: yt("calendar.dayMaxEvents"), + tooltip: yt("calendar.dayMaxEventsTooltip") + }), e.eventMaxStack.propertyView({ + label: yt("calendar.eventMaxStack"), + tooltip: yt("calendar.eventMaxStackTooltip") + })] + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: [e.licenseKey.propertyView({ + label: yt("calendar.license"), + tooltip: yt("calendar.licenseTooltip") + }), t == "" ? e.currentFreeView.propertyView({ + label: yt("calendar.defaultView"), + tooltip: yt("calendar.defaultViewTooltip") + }) : e.currentPremiumView.propertyView({ + label: yt("calendar.defaultView"), + tooltip: yt("calendar.defaultViewTooltip") + }), e.firstDay.propertyView({ + label: yt("calendar.startWeek") + })] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.style, + children: e.style.getPropertyView() + })] + }); + }).build(); +}(); +S6 = class extends S6 { + autoHeight() { + return !1; + } +}; +const Axt = $lowcoder_sdk.withExposingConfigs(S6, [new $lowcoder_sdk.NameConfig("events", yt("calendar.events")), new $lowcoder_sdk.NameConfig("resourcesEvents", yt("calendar.resourcesEvents")), new $lowcoder_sdk.NameConfig("resources", yt("calendar.resources")), $lowcoder_sdk.NameConfigHidden]), Rxt = $lowcoder_sdk.withMethodExposing(Axt, [{ + method: { + name: "setCalendarView", + description: "timeGridWeek || timeGridDay || dayGridMonth || listWeek || resourceTimelineDay || resourceTimeGridDay || resourceTimelineWeek || resourceTimelineMonth", + params: [{ + name: "viewType", + type: "string" + }] + }, + execute: (e, t) => { + const r = t[0]; + return e.children.licenseKey.getView() == "" ? e.children.defaultFreeView.dispatchChangeValueAction(r) : e.children.defaultPremiumView.dispatchChangeValueAction(r); + } +}]); +function Dxt(e) { + for (var t = [], r = 1; r < arguments.length; r++) + t[r - 1] = arguments[r]; + var n = Array.from(typeof e == "string" ? [e] : e); + n[n.length - 1] = n[n.length - 1].replace(/\r?\n([\t ]*)$/, ""); + var i = n.reduce(function(l, u) { + var d = u.match(/\n([\t ]+|(?!\s).)/g); + return d ? l.concat(d.map(function(f) { + var g, v; + return (v = (g = f.match(/[\t ]/g)) === null || g === void 0 ? void 0 : g.length) !== null && v !== void 0 ? v : 0; + })) : l; + }, []); + if (i.length) { + var a = new RegExp(` +[ ]{` + Math.min.apply(Math, i) + "}", "g"); + n = n.map(function(l) { + return l.replace(a, ` +`); + }); + } + n[0] = n[0].replace(/^\r?\n/, ""); + var o = n[0]; + return t.forEach(function(l, u) { + var d = o.match(/(?:^|\n)( *)$/), f = d ? d[1] : "", g = l; + typeof l == "string" && l.includes(` +`) && (g = String(l).split(` +`).map(function(v, y) { + return y === 0 ? v : "" + f + v; + }).join(` +`)), o += g + n[u + 1]; + }), o; +} +var Cxe = {}; +(function(e) { + Object.defineProperty(e, "__esModule", { value: !0 }), e.sanitizeUrl = e.BLANK_URL = void 0; + var t = /^([^\w]*)(javascript|data|vbscript)/im, r = /&#(\w+)(^\w|;)?/g, n = /&(newline|tab);/gi, i = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim, a = /^.+(:|:)/gim, o = [".", "/"]; + e.BLANK_URL = "about:blank"; + function l(f) { + return o.indexOf(f[0]) > -1; + } + function u(f) { + var g = f.replace(i, ""); + return g.replace(r, function(v, y) { + return String.fromCharCode(y); + }); + } + function d(f) { + if (!f) + return e.BLANK_URL; + var g = u(f).replace(n, "").replace(i, "").trim(); + if (!g) + return e.BLANK_URL; + if (l(g)) + return g; + var v = g.match(a); + if (!v) + return g; + var y = v[0]; + return t.test(y) ? e.BLANK_URL : g; + } + e.sanitizeUrl = d; +})(Cxe); +var Oxt = { value: () => { +} }; +function Txe() { + for (var e = 0, t = arguments.length, r = {}, n; e < t; ++e) { + if (!(n = arguments[e] + "") || n in r || /[\s.]/.test(n)) + throw new Error("illegal type: " + n); + r[n] = []; + } + return new ZN(r); +} +function ZN(e) { + this._ = e; +} +function Mxt(e, t) { + return e.trim().split(/^|\s+/).map(function(r) { + var n = "", i = r.indexOf("."); + if (i >= 0 && (n = r.slice(i + 1), r = r.slice(0, i)), r && !t.hasOwnProperty(r)) + throw new Error("unknown type: " + r); + return { type: r, name: n }; + }); +} +ZN.prototype = Txe.prototype = { + constructor: ZN, + on: function(e, t) { + var r = this._, n = Mxt(e + "", r), i, a = -1, o = n.length; + if (arguments.length < 2) { + for (; ++a < o; ) + if ((i = (e = n[a]).type) && (i = kxt(r[i], e.name))) + return i; + return; + } + if (t != null && typeof t != "function") + throw new Error("invalid callback: " + t); + for (; ++a < o; ) + if (i = (e = n[a]).type) + r[i] = ofe(r[i], e.name, t); + else if (t == null) + for (i in r) + r[i] = ofe(r[i], e.name, null); + return this; + }, + copy: function() { + var e = {}, t = this._; + for (var r in t) + e[r] = t[r].slice(); + return new ZN(e); + }, + call: function(e, t) { + if ((i = arguments.length - 2) > 0) + for (var r = new Array(i), n = 0, i, a; n < i; ++n) + r[n] = arguments[n + 2]; + if (!this._.hasOwnProperty(e)) + throw new Error("unknown type: " + e); + for (a = this._[e], n = 0, i = a.length; n < i; ++n) + a[n].value.apply(t, r); + }, + apply: function(e, t, r) { + if (!this._.hasOwnProperty(e)) + throw new Error("unknown type: " + e); + for (var n = this._[e], i = 0, a = n.length; i < a; ++i) + n[i].value.apply(t, r); + } +}; +function kxt(e, t) { + for (var r = 0, n = e.length, i; r < n; ++r) + if ((i = e[r]).name === t) + return i.value; +} +function ofe(e, t, r) { + for (var n = 0, i = e.length; n < i; ++n) + if (e[n].name === t) { + e[n] = Oxt, e = e.slice(0, n).concat(e.slice(n + 1)); + break; + } + return r != null && e.push({ name: t, value: r }), e; +} +var b6 = "http://www.w3.org/1999/xhtml"; +const sfe = { + svg: "http://www.w3.org/2000/svg", + xhtml: b6, + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +}; +function HB(e) { + var t = e += "", r = t.indexOf(":"); + return r >= 0 && (t = e.slice(0, r)) !== "xmlns" && (e = e.slice(r + 1)), sfe.hasOwnProperty(t) ? { space: sfe[t], local: e } : e; +} +function Pxt(e) { + return function() { + var t = this.ownerDocument, r = this.namespaceURI; + return r === b6 && t.documentElement.namespaceURI === b6 ? t.createElement(e) : t.createElementNS(r, e); + }; +} +function Nxt(e) { + return function() { + return this.ownerDocument.createElementNS(e.space, e.local); + }; +} +function wxe(e) { + var t = HB(e); + return (t.local ? Nxt : Pxt)(t); +} +function Lxt() { +} +function Q7(e) { + return e == null ? Lxt : function() { + return this.querySelector(e); + }; +} +function Fxt(e) { + typeof e != "function" && (e = Q7(e)); + for (var t = this._groups, r = t.length, n = new Array(r), i = 0; i < r; ++i) + for (var a = t[i], o = a.length, l = n[i] = new Array(o), u, d, f = 0; f < o; ++f) + (u = a[f]) && (d = e.call(u, u.__data__, f, a)) && ("__data__" in u && (d.__data__ = u.__data__), l[f] = d); + return new Sd(n, this._parents); +} +function Bxt(e) { + return e == null ? [] : Array.isArray(e) ? e : Array.from(e); +} +function Uxt() { + return []; +} +function Ixe(e) { + return e == null ? Uxt : function() { + return this.querySelectorAll(e); + }; +} +function jxt(e) { + return function() { + return Bxt(e.apply(this, arguments)); + }; +} +function $xt(e) { + typeof e == "function" ? e = jxt(e) : e = Ixe(e); + for (var t = this._groups, r = t.length, n = [], i = [], a = 0; a < r; ++a) + for (var o = t[a], l = o.length, u, d = 0; d < l; ++d) + (u = o[d]) && (n.push(e.call(u, u.__data__, d, o)), i.push(u)); + return new Sd(n, i); +} +function xxe(e) { + return function() { + return this.matches(e); + }; +} +function Axe(e) { + return function(t) { + return t.matches(e); + }; +} +var Vxt = Array.prototype.find; +function zxt(e) { + return function() { + return Vxt.call(this.children, e); + }; +} +function Hxt() { + return this.firstElementChild; +} +function Wxt(e) { + return this.select(e == null ? Hxt : zxt(typeof e == "function" ? e : Axe(e))); +} +var Gxt = Array.prototype.filter; +function Yxt() { + return Array.from(this.children); +} +function Xxt(e) { + return function() { + return Gxt.call(this.children, e); + }; +} +function Kxt(e) { + return this.selectAll(e == null ? Yxt : Xxt(typeof e == "function" ? e : Axe(e))); +} +function Zxt(e) { + typeof e != "function" && (e = xxe(e)); + for (var t = this._groups, r = t.length, n = new Array(r), i = 0; i < r; ++i) + for (var a = t[i], o = a.length, l = n[i] = [], u, d = 0; d < o; ++d) + (u = a[d]) && e.call(u, u.__data__, d, a) && l.push(u); + return new Sd(n, this._parents); +} +function Rxe(e) { + return new Array(e.length); +} +function qxt() { + return new Sd(this._enter || this._groups.map(Rxe), this._parents); +} +function P2(e, t) { + this.ownerDocument = e.ownerDocument, this.namespaceURI = e.namespaceURI, this._next = null, this._parent = e, this.__data__ = t; +} +P2.prototype = { + constructor: P2, + appendChild: function(e) { + return this._parent.insertBefore(e, this._next); + }, + insertBefore: function(e, t) { + return this._parent.insertBefore(e, t); + }, + querySelector: function(e) { + return this._parent.querySelector(e); + }, + querySelectorAll: function(e) { + return this._parent.querySelectorAll(e); + } +}; +function Jxt(e) { + return function() { + return e; + }; +} +function Qxt(e, t, r, n, i, a) { + for (var o = 0, l, u = t.length, d = a.length; o < d; ++o) + (l = t[o]) ? (l.__data__ = a[o], n[o] = l) : r[o] = new P2(e, a[o]); + for (; o < u; ++o) + (l = t[o]) && (i[o] = l); +} +function eAt(e, t, r, n, i, a, o) { + var l, u, d = /* @__PURE__ */ new Map(), f = t.length, g = a.length, v = new Array(f), y; + for (l = 0; l < f; ++l) + (u = t[l]) && (v[l] = y = o.call(u, u.__data__, l, t) + "", d.has(y) ? i[l] = u : d.set(y, u)); + for (l = 0; l < g; ++l) + y = o.call(e, a[l], l, a) + "", (u = d.get(y)) ? (n[l] = u, u.__data__ = a[l], d.delete(y)) : r[l] = new P2(e, a[l]); + for (l = 0; l < f; ++l) + (u = t[l]) && d.get(v[l]) === u && (i[l] = u); +} +function tAt(e) { + return e.__data__; +} +function rAt(e, t) { + if (!arguments.length) + return Array.from(this, tAt); + var r = t ? eAt : Qxt, n = this._parents, i = this._groups; + typeof e != "function" && (e = Jxt(e)); + for (var a = i.length, o = new Array(a), l = new Array(a), u = new Array(a), d = 0; d < a; ++d) { + var f = n[d], g = i[d], v = g.length, y = nAt(e.call(f, f && f.__data__, d, n)), C = y.length, A = l[d] = new Array(C), S = o[d] = new Array(C), _ = u[d] = new Array(v); + r(f, g, A, S, _, y, t); + for (var E = 0, I = 0, w, x; E < C; ++E) + if (w = A[E]) { + for (E >= I && (I = E + 1); !(x = S[I]) && ++I < C; ) + ; + w._next = x || null; + } + } + return o = new Sd(o, n), o._enter = l, o._exit = u, o; +} +function nAt(e) { + return typeof e == "object" && "length" in e ? e : Array.from(e); +} +function iAt() { + return new Sd(this._exit || this._groups.map(Rxe), this._parents); +} +function aAt(e, t, r) { + var n = this.enter(), i = this, a = this.exit(); + return typeof e == "function" ? (n = e(n), n && (n = n.selection())) : n = n.append(e + ""), t != null && (i = t(i), i && (i = i.selection())), r == null ? a.remove() : r(a), n && i ? n.merge(i).order() : i; +} +function oAt(e) { + for (var t = e.selection ? e.selection() : e, r = this._groups, n = t._groups, i = r.length, a = n.length, o = Math.min(i, a), l = new Array(i), u = 0; u < o; ++u) + for (var d = r[u], f = n[u], g = d.length, v = l[u] = new Array(g), y, C = 0; C < g; ++C) + (y = d[C] || f[C]) && (v[C] = y); + for (; u < i; ++u) + l[u] = r[u]; + return new Sd(l, this._parents); +} +function sAt() { + for (var e = this._groups, t = -1, r = e.length; ++t < r; ) + for (var n = e[t], i = n.length - 1, a = n[i], o; --i >= 0; ) + (o = n[i]) && (a && o.compareDocumentPosition(a) ^ 4 && a.parentNode.insertBefore(o, a), a = o); + return this; +} +function lAt(e) { + e || (e = cAt); + function t(g, v) { + return g && v ? e(g.__data__, v.__data__) : !g - !v; + } + for (var r = this._groups, n = r.length, i = new Array(n), a = 0; a < n; ++a) { + for (var o = r[a], l = o.length, u = i[a] = new Array(l), d, f = 0; f < l; ++f) + (d = o[f]) && (u[f] = d); + u.sort(t); + } + return new Sd(i, this._parents).order(); +} +function cAt(e, t) { + return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN; +} +function uAt() { + var e = arguments[0]; + return arguments[0] = this, e.apply(null, arguments), this; +} +function hAt() { + return Array.from(this); +} +function dAt() { + for (var e = this._groups, t = 0, r = e.length; t < r; ++t) + for (var n = e[t], i = 0, a = n.length; i < a; ++i) { + var o = n[i]; + if (o) + return o; + } + return null; +} +function fAt() { + let e = 0; + for (const t of this) + ++e; + return e; +} +function pAt() { + return !this.node(); +} +function gAt(e) { + for (var t = this._groups, r = 0, n = t.length; r < n; ++r) + for (var i = t[r], a = 0, o = i.length, l; a < o; ++a) + (l = i[a]) && e.call(l, l.__data__, a, i); + return this; +} +function vAt(e) { + return function() { + this.removeAttribute(e); + }; +} +function mAt(e) { + return function() { + this.removeAttributeNS(e.space, e.local); + }; +} +function yAt(e, t) { + return function() { + this.setAttribute(e, t); + }; +} +function _At(e, t) { + return function() { + this.setAttributeNS(e.space, e.local, t); + }; +} +function SAt(e, t) { + return function() { + var r = t.apply(this, arguments); + r == null ? this.removeAttribute(e) : this.setAttribute(e, r); + }; +} +function bAt(e, t) { + return function() { + var r = t.apply(this, arguments); + r == null ? this.removeAttributeNS(e.space, e.local) : this.setAttributeNS(e.space, e.local, r); + }; +} +function EAt(e, t) { + var r = HB(e); + if (arguments.length < 2) { + var n = this.node(); + return r.local ? n.getAttributeNS(r.space, r.local) : n.getAttribute(r); + } + return this.each((t == null ? r.local ? mAt : vAt : typeof t == "function" ? r.local ? bAt : SAt : r.local ? _At : yAt)(r, t)); +} +function Dxe(e) { + return e.ownerDocument && e.ownerDocument.defaultView || e.document && e || e.defaultView; +} +function CAt(e) { + return function() { + this.style.removeProperty(e); + }; +} +function TAt(e, t, r) { + return function() { + this.style.setProperty(e, t, r); + }; +} +function wAt(e, t, r) { + return function() { + var n = t.apply(this, arguments); + n == null ? this.style.removeProperty(e) : this.style.setProperty(e, n, r); + }; +} +function IAt(e, t, r) { + return arguments.length > 1 ? this.each((t == null ? CAt : typeof t == "function" ? wAt : TAt)(e, t, r == null ? "" : r)) : rI(this.node(), e); +} +function rI(e, t) { + return e.style.getPropertyValue(t) || Dxe(e).getComputedStyle(e, null).getPropertyValue(t); +} +function xAt(e) { + return function() { + delete this[e]; + }; +} +function AAt(e, t) { + return function() { + this[e] = t; + }; +} +function RAt(e, t) { + return function() { + var r = t.apply(this, arguments); + r == null ? delete this[e] : this[e] = r; + }; +} +function DAt(e, t) { + return arguments.length > 1 ? this.each((t == null ? xAt : typeof t == "function" ? RAt : AAt)(e, t)) : this.node()[e]; +} +function Oxe(e) { + return e.trim().split(/^|\s+/); +} +function eX(e) { + return e.classList || new Mxe(e); +} +function Mxe(e) { + this._node = e, this._names = Oxe(e.getAttribute("class") || ""); +} +Mxe.prototype = { + add: function(e) { + var t = this._names.indexOf(e); + t < 0 && (this._names.push(e), this._node.setAttribute("class", this._names.join(" "))); + }, + remove: function(e) { + var t = this._names.indexOf(e); + t >= 0 && (this._names.splice(t, 1), this._node.setAttribute("class", this._names.join(" "))); + }, + contains: function(e) { + return this._names.indexOf(e) >= 0; + } +}; +function kxe(e, t) { + for (var r = eX(e), n = -1, i = t.length; ++n < i; ) + r.add(t[n]); +} +function Pxe(e, t) { + for (var r = eX(e), n = -1, i = t.length; ++n < i; ) + r.remove(t[n]); +} +function OAt(e) { + return function() { + kxe(this, e); + }; +} +function MAt(e) { + return function() { + Pxe(this, e); + }; +} +function kAt(e, t) { + return function() { + (t.apply(this, arguments) ? kxe : Pxe)(this, e); + }; +} +function PAt(e, t) { + var r = Oxe(e + ""); + if (arguments.length < 2) { + for (var n = eX(this.node()), i = -1, a = r.length; ++i < a; ) + if (!n.contains(r[i])) + return !1; + return !0; + } + return this.each((typeof t == "function" ? kAt : t ? OAt : MAt)(r, t)); +} +function NAt() { + this.textContent = ""; +} +function LAt(e) { + return function() { + this.textContent = e; + }; +} +function FAt(e) { + return function() { + var t = e.apply(this, arguments); + this.textContent = t == null ? "" : t; + }; +} +function BAt(e) { + return arguments.length ? this.each(e == null ? NAt : (typeof e == "function" ? FAt : LAt)(e)) : this.node().textContent; +} +function UAt() { + this.innerHTML = ""; +} +function jAt(e) { + return function() { + this.innerHTML = e; + }; +} +function $At(e) { + return function() { + var t = e.apply(this, arguments); + this.innerHTML = t == null ? "" : t; + }; +} +function VAt(e) { + return arguments.length ? this.each(e == null ? UAt : (typeof e == "function" ? $At : jAt)(e)) : this.node().innerHTML; +} +function zAt() { + this.nextSibling && this.parentNode.appendChild(this); +} +function HAt() { + return this.each(zAt); +} +function WAt() { + this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild); +} +function GAt() { + return this.each(WAt); +} +function YAt(e) { + var t = typeof e == "function" ? e : wxe(e); + return this.select(function() { + return this.appendChild(t.apply(this, arguments)); + }); +} +function XAt() { + return null; +} +function KAt(e, t) { + var r = typeof e == "function" ? e : wxe(e), n = t == null ? XAt : typeof t == "function" ? t : Q7(t); + return this.select(function() { + return this.insertBefore(r.apply(this, arguments), n.apply(this, arguments) || null); + }); +} +function ZAt() { + var e = this.parentNode; + e && e.removeChild(this); +} +function qAt() { + return this.each(ZAt); +} +function JAt() { + var e = this.cloneNode(!1), t = this.parentNode; + return t ? t.insertBefore(e, this.nextSibling) : e; +} +function QAt() { + var e = this.cloneNode(!0), t = this.parentNode; + return t ? t.insertBefore(e, this.nextSibling) : e; +} +function e1t(e) { + return this.select(e ? QAt : JAt); +} +function t1t(e) { + return arguments.length ? this.property("__data__", e) : this.node().__data__; +} +function r1t(e) { + return function(t) { + e.call(this, t, this.__data__); + }; +} +function n1t(e) { + return e.trim().split(/^|\s+/).map(function(t) { + var r = "", n = t.indexOf("."); + return n >= 0 && (r = t.slice(n + 1), t = t.slice(0, n)), { type: t, name: r }; + }); +} +function i1t(e) { + return function() { + var t = this.__on; + if (t) { + for (var r = 0, n = -1, i = t.length, a; r < i; ++r) + a = t[r], (!e.type || a.type === e.type) && a.name === e.name ? this.removeEventListener(a.type, a.listener, a.options) : t[++n] = a; + ++n ? t.length = n : delete this.__on; + } + }; +} +function a1t(e, t, r) { + return function() { + var n = this.__on, i, a = r1t(t); + if (n) { + for (var o = 0, l = n.length; o < l; ++o) + if ((i = n[o]).type === e.type && i.name === e.name) { + this.removeEventListener(i.type, i.listener, i.options), this.addEventListener(i.type, i.listener = a, i.options = r), i.value = t; + return; + } + } + this.addEventListener(e.type, a, r), i = { type: e.type, name: e.name, value: t, listener: a, options: r }, n ? n.push(i) : this.__on = [i]; + }; +} +function o1t(e, t, r) { + var n = n1t(e + ""), i, a = n.length, o; + if (arguments.length < 2) { + var l = this.node().__on; + if (l) { + for (var u = 0, d = l.length, f; u < d; ++u) + for (i = 0, f = l[u]; i < a; ++i) + if ((o = n[i]).type === f.type && o.name === f.name) + return f.value; + } + return; + } + for (l = t ? a1t : i1t, i = 0; i < a; ++i) + this.each(l(n[i], t, r)); + return this; +} +function Nxe(e, t, r) { + var n = Dxe(e), i = n.CustomEvent; + typeof i == "function" ? i = new i(t, r) : (i = n.document.createEvent("Event"), r ? (i.initEvent(t, r.bubbles, r.cancelable), i.detail = r.detail) : i.initEvent(t, !1, !1)), e.dispatchEvent(i); +} +function s1t(e, t) { + return function() { + return Nxe(this, e, t); + }; +} +function l1t(e, t) { + return function() { + return Nxe(this, e, t.apply(this, arguments)); + }; +} +function c1t(e, t) { + return this.each((typeof t == "function" ? l1t : s1t)(e, t)); +} +function* u1t() { + for (var e = this._groups, t = 0, r = e.length; t < r; ++t) + for (var n = e[t], i = 0, a = n.length, o; i < a; ++i) + (o = n[i]) && (yield o); +} +var Lxe = [null]; +function Sd(e, t) { + this._groups = e, this._parents = t; +} +function nO() { + return new Sd([[document.documentElement]], Lxe); +} +function h1t() { + return this; +} +Sd.prototype = nO.prototype = { + constructor: Sd, + select: Fxt, + selectAll: $xt, + selectChild: Wxt, + selectChildren: Kxt, + filter: Zxt, + data: rAt, + enter: qxt, + exit: iAt, + join: aAt, + merge: oAt, + selection: h1t, + order: sAt, + sort: lAt, + call: uAt, + nodes: hAt, + node: dAt, + size: fAt, + empty: pAt, + each: gAt, + attr: EAt, + style: IAt, + property: DAt, + classed: PAt, + text: BAt, + html: VAt, + raise: HAt, + lower: GAt, + append: YAt, + insert: KAt, + remove: qAt, + clone: e1t, + datum: t1t, + on: o1t, + dispatch: c1t, + [Symbol.iterator]: u1t +}; +function ff(e) { + return typeof e == "string" ? new Sd([[document.querySelector(e)]], [document.documentElement]) : new Sd([[e]], Lxe); +} +function tX(e, t, r) { + e.prototype = t.prototype = r, r.constructor = e; +} +function Fxe(e, t) { + var r = Object.create(e.prototype); + for (var n in t) + r[n] = t[n]; + return r; +} +function iO() { +} +var QR = 0.7, N2 = 1 / QR, kw = "\\s*([+-]?\\d+)\\s*", eD = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", rv = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", d1t = /^#([0-9a-f]{3,8})$/, f1t = new RegExp(`^rgb\\(${kw},${kw},${kw}\\)$`), p1t = new RegExp(`^rgb\\(${rv},${rv},${rv}\\)$`), g1t = new RegExp(`^rgba\\(${kw},${kw},${kw},${eD}\\)$`), v1t = new RegExp(`^rgba\\(${rv},${rv},${rv},${eD}\\)$`), m1t = new RegExp(`^hsl\\(${eD},${rv},${rv}\\)$`), y1t = new RegExp(`^hsla\\(${eD},${rv},${rv},${eD}\\)$`), lfe = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 +}; +tX(iO, tD, { + copy(e) { + return Object.assign(new this.constructor(), this, e); + }, + displayable() { + return this.rgb().displayable(); + }, + hex: cfe, + // Deprecated! Use color.formatHex. + formatHex: cfe, + formatHex8: _1t, + formatHsl: S1t, + formatRgb: ufe, + toString: ufe +}); +function cfe() { + return this.rgb().formatHex(); +} +function _1t() { + return this.rgb().formatHex8(); +} +function S1t() { + return Bxe(this).formatHsl(); +} +function ufe() { + return this.rgb().formatRgb(); +} +function tD(e) { + var t, r; + return e = (e + "").trim().toLowerCase(), (t = d1t.exec(e)) ? (r = t[1].length, t = parseInt(t[1], 16), r === 6 ? hfe(t) : r === 3 ? new wh(t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | t & 240, (t & 15) << 4 | t & 15, 1) : r === 8 ? nN(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, (t & 255) / 255) : r === 4 ? nN(t >> 12 & 15 | t >> 8 & 240, t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | t & 240, ((t & 15) << 4 | t & 15) / 255) : null) : (t = f1t.exec(e)) ? new wh(t[1], t[2], t[3], 1) : (t = p1t.exec(e)) ? new wh(t[1] * 255 / 100, t[2] * 255 / 100, t[3] * 255 / 100, 1) : (t = g1t.exec(e)) ? nN(t[1], t[2], t[3], t[4]) : (t = v1t.exec(e)) ? nN(t[1] * 255 / 100, t[2] * 255 / 100, t[3] * 255 / 100, t[4]) : (t = m1t.exec(e)) ? pfe(t[1], t[2] / 100, t[3] / 100, 1) : (t = y1t.exec(e)) ? pfe(t[1], t[2] / 100, t[3] / 100, t[4]) : lfe.hasOwnProperty(e) ? hfe(lfe[e]) : e === "transparent" ? new wh(NaN, NaN, NaN, 0) : null; +} +function hfe(e) { + return new wh(e >> 16 & 255, e >> 8 & 255, e & 255, 1); +} +function nN(e, t, r, n) { + return n <= 0 && (e = t = r = NaN), new wh(e, t, r, n); +} +function b1t(e) { + return e instanceof iO || (e = tD(e)), e ? (e = e.rgb(), new wh(e.r, e.g, e.b, e.opacity)) : new wh(); +} +function E6(e, t, r, n) { + return arguments.length === 1 ? b1t(e) : new wh(e, t, r, n == null ? 1 : n); +} +function wh(e, t, r, n) { + this.r = +e, this.g = +t, this.b = +r, this.opacity = +n; +} +tX(wh, E6, Fxe(iO, { + brighter(e) { + return e = e == null ? N2 : Math.pow(N2, e), new wh(this.r * e, this.g * e, this.b * e, this.opacity); + }, + darker(e) { + return e = e == null ? QR : Math.pow(QR, e), new wh(this.r * e, this.g * e, this.b * e, this.opacity); + }, + rgb() { + return this; + }, + clamp() { + return new wh(aE(this.r), aE(this.g), aE(this.b), L2(this.opacity)); + }, + displayable() { + return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; + }, + hex: dfe, + // Deprecated! Use color.formatHex. + formatHex: dfe, + formatHex8: E1t, + formatRgb: ffe, + toString: ffe +})); +function dfe() { + return `#${Hb(this.r)}${Hb(this.g)}${Hb(this.b)}`; +} +function E1t() { + return `#${Hb(this.r)}${Hb(this.g)}${Hb(this.b)}${Hb((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; +} +function ffe() { + const e = L2(this.opacity); + return `${e === 1 ? "rgb(" : "rgba("}${aE(this.r)}, ${aE(this.g)}, ${aE(this.b)}${e === 1 ? ")" : `, ${e})`}`; +} +function L2(e) { + return isNaN(e) ? 1 : Math.max(0, Math.min(1, e)); +} +function aE(e) { + return Math.max(0, Math.min(255, Math.round(e) || 0)); +} +function Hb(e) { + return e = aE(e), (e < 16 ? "0" : "") + e.toString(16); +} +function pfe(e, t, r, n) { + return n <= 0 ? e = t = r = NaN : r <= 0 || r >= 1 ? e = t = NaN : t <= 0 && (e = NaN), new Tp(e, t, r, n); +} +function Bxe(e) { + if (e instanceof Tp) + return new Tp(e.h, e.s, e.l, e.opacity); + if (e instanceof iO || (e = tD(e)), !e) + return new Tp(); + if (e instanceof Tp) + return e; + e = e.rgb(); + var t = e.r / 255, r = e.g / 255, n = e.b / 255, i = Math.min(t, r, n), a = Math.max(t, r, n), o = NaN, l = a - i, u = (a + i) / 2; + return l ? (t === a ? o = (r - n) / l + (r < n) * 6 : r === a ? o = (n - t) / l + 2 : o = (t - r) / l + 4, l /= u < 0.5 ? a + i : 2 - a - i, o *= 60) : l = u > 0 && u < 1 ? 0 : o, new Tp(o, l, u, e.opacity); +} +function C1t(e, t, r, n) { + return arguments.length === 1 ? Bxe(e) : new Tp(e, t, r, n == null ? 1 : n); +} +function Tp(e, t, r, n) { + this.h = +e, this.s = +t, this.l = +r, this.opacity = +n; +} +tX(Tp, C1t, Fxe(iO, { + brighter(e) { + return e = e == null ? N2 : Math.pow(N2, e), new Tp(this.h, this.s, this.l * e, this.opacity); + }, + darker(e) { + return e = e == null ? QR : Math.pow(QR, e), new Tp(this.h, this.s, this.l * e, this.opacity); + }, + rgb() { + var e = this.h % 360 + (this.h < 0) * 360, t = isNaN(e) || isNaN(this.s) ? 0 : this.s, r = this.l, n = r + (r < 0.5 ? r : 1 - r) * t, i = 2 * r - n; + return new wh( + j4(e >= 240 ? e - 240 : e + 120, i, n), + j4(e, i, n), + j4(e < 120 ? e + 240 : e - 120, i, n), + this.opacity + ); + }, + clamp() { + return new Tp(gfe(this.h), iN(this.s), iN(this.l), L2(this.opacity)); + }, + displayable() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; + }, + formatHsl() { + const e = L2(this.opacity); + return `${e === 1 ? "hsl(" : "hsla("}${gfe(this.h)}, ${iN(this.s) * 100}%, ${iN(this.l) * 100}%${e === 1 ? ")" : `, ${e})`}`; + } +})); +function gfe(e) { + return e = (e || 0) % 360, e < 0 ? e + 360 : e; +} +function iN(e) { + return Math.max(0, Math.min(1, e || 0)); +} +function j4(e, t, r) { + return (e < 60 ? t + (r - t) * e / 60 : e < 180 ? r : e < 240 ? t + (r - t) * (240 - e) / 60 : t) * 255; +} +const rX = (e) => () => e; +function Uxe(e, t) { + return function(r) { + return e + r * t; + }; +} +function T1t(e, t, r) { + return e = Math.pow(e, r), t = Math.pow(t, r) - e, r = 1 / r, function(n) { + return Math.pow(e + n * t, r); + }; +} +function $Ut(e, t) { + var r = t - e; + return r ? Uxe(e, r > 180 || r < -180 ? r - 360 * Math.round(r / 360) : r) : rX(isNaN(e) ? t : e); +} +function w1t(e) { + return (e = +e) == 1 ? jxe : function(t, r) { + return r - t ? T1t(t, r, e) : rX(isNaN(t) ? r : t); + }; +} +function jxe(e, t) { + var r = t - e; + return r ? Uxe(e, r) : rX(isNaN(e) ? t : e); +} +const vfe = function e(t) { + var r = w1t(t); + function n(i, a) { + var o = r((i = E6(i)).r, (a = E6(a)).r), l = r(i.g, a.g), u = r(i.b, a.b), d = jxe(i.opacity, a.opacity); + return function(f) { + return i.r = o(f), i.g = l(f), i.b = u(f), i.opacity = d(f), i + ""; + }; + } + return n.gamma = e, n; +}(1); +function G_(e, t) { + return e = +e, t = +t, function(r) { + return e * (1 - r) + t * r; + }; +} +var C6 = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, $4 = new RegExp(C6.source, "g"); +function I1t(e) { + return function() { + return e; + }; +} +function x1t(e) { + return function(t) { + return e(t) + ""; + }; +} +function A1t(e, t) { + var r = C6.lastIndex = $4.lastIndex = 0, n, i, a, o = -1, l = [], u = []; + for (e = e + "", t = t + ""; (n = C6.exec(e)) && (i = $4.exec(t)); ) + (a = i.index) > r && (a = t.slice(r, a), l[o] ? l[o] += a : l[++o] = a), (n = n[0]) === (i = i[0]) ? l[o] ? l[o] += i : l[++o] = i : (l[++o] = null, u.push({ i: o, x: G_(n, i) })), r = $4.lastIndex; + return r < t.length && (a = t.slice(r), l[o] ? l[o] += a : l[++o] = a), l.length < 2 ? u[0] ? x1t(u[0].x) : I1t(t) : (t = u.length, function(d) { + for (var f = 0, g; f < t; ++f) + l[(g = u[f]).i] = g.x(d); + return l.join(""); + }); +} +var mfe = 180 / Math.PI, T6 = { + translateX: 0, + translateY: 0, + rotate: 0, + skewX: 0, + scaleX: 1, + scaleY: 1 +}; +function $xe(e, t, r, n, i, a) { + var o, l, u; + return (o = Math.sqrt(e * e + t * t)) && (e /= o, t /= o), (u = e * r + t * n) && (r -= e * u, n -= t * u), (l = Math.sqrt(r * r + n * n)) && (r /= l, n /= l, u /= l), e * n < t * r && (e = -e, t = -t, u = -u, o = -o), { + translateX: i, + translateY: a, + rotate: Math.atan2(t, e) * mfe, + skewX: Math.atan(u) * mfe, + scaleX: o, + scaleY: l + }; +} +var aN; +function R1t(e) { + const t = new (typeof DOMMatrix == "function" ? DOMMatrix : WebKitCSSMatrix)(e + ""); + return t.isIdentity ? T6 : $xe(t.a, t.b, t.c, t.d, t.e, t.f); +} +function D1t(e) { + return e == null || (aN || (aN = document.createElementNS("http://www.w3.org/2000/svg", "g")), aN.setAttribute("transform", e), !(e = aN.transform.baseVal.consolidate())) ? T6 : (e = e.matrix, $xe(e.a, e.b, e.c, e.d, e.e, e.f)); +} +function Vxe(e, t, r, n) { + function i(d) { + return d.length ? d.pop() + " " : ""; + } + function a(d, f, g, v, y, C) { + if (d !== g || f !== v) { + var A = y.push("translate(", null, t, null, r); + C.push({ i: A - 4, x: G_(d, g) }, { i: A - 2, x: G_(f, v) }); + } else + (g || v) && y.push("translate(" + g + t + v + r); + } + function o(d, f, g, v) { + d !== f ? (d - f > 180 ? f += 360 : f - d > 180 && (d += 360), v.push({ i: g.push(i(g) + "rotate(", null, n) - 2, x: G_(d, f) })) : f && g.push(i(g) + "rotate(" + f + n); + } + function l(d, f, g, v) { + d !== f ? v.push({ i: g.push(i(g) + "skewX(", null, n) - 2, x: G_(d, f) }) : f && g.push(i(g) + "skewX(" + f + n); + } + function u(d, f, g, v, y, C) { + if (d !== g || f !== v) { + var A = y.push(i(y) + "scale(", null, ",", null, ")"); + C.push({ i: A - 4, x: G_(d, g) }, { i: A - 2, x: G_(f, v) }); + } else + (g !== 1 || v !== 1) && y.push(i(y) + "scale(" + g + "," + v + ")"); + } + return function(d, f) { + var g = [], v = []; + return d = e(d), f = e(f), a(d.translateX, d.translateY, f.translateX, f.translateY, g, v), o(d.rotate, f.rotate, g, v), l(d.skewX, f.skewX, g, v), u(d.scaleX, d.scaleY, f.scaleX, f.scaleY, g, v), d = f = null, function(y) { + for (var C = -1, A = v.length, S; ++C < A; ) + g[(S = v[C]).i] = S.x(y); + return g.join(""); + }; + }; +} +var O1t = Vxe(R1t, "px, ", "px)", "deg)"), M1t = Vxe(D1t, ", ", ")", ")"), nI = 0, b1 = 0, r1 = 0, zxe = 1e3, F2, E1, B2 = 0, wE = 0, WB = 0, rD = typeof performance == "object" && performance.now ? performance : Date, Hxe = typeof window == "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(e) { + setTimeout(e, 17); +}; +function nX() { + return wE || (Hxe(k1t), wE = rD.now() + WB); +} +function k1t() { + wE = 0; +} +function U2() { + this._call = this._time = this._next = null; +} +U2.prototype = Wxe.prototype = { + constructor: U2, + restart: function(e, t, r) { + if (typeof e != "function") + throw new TypeError("callback is not a function"); + r = (r == null ? nX() : +r) + (t == null ? 0 : +t), !this._next && E1 !== this && (E1 ? E1._next = this : F2 = this, E1 = this), this._call = e, this._time = r, w6(); + }, + stop: function() { + this._call && (this._call = null, this._time = 1 / 0, w6()); + } +}; +function Wxe(e, t, r) { + var n = new U2(); + return n.restart(e, t, r), n; +} +function P1t() { + nX(), ++nI; + for (var e = F2, t; e; ) + (t = wE - e._time) >= 0 && e._call.call(void 0, t), e = e._next; + --nI; +} +function yfe() { + wE = (B2 = rD.now()) + WB, nI = b1 = 0; + try { + P1t(); + } finally { + nI = 0, L1t(), wE = 0; + } +} +function N1t() { + var e = rD.now(), t = e - B2; + t > zxe && (WB -= t, B2 = e); +} +function L1t() { + for (var e, t = F2, r, n = 1 / 0; t; ) + t._call ? (n > t._time && (n = t._time), e = t, t = t._next) : (r = t._next, t._next = null, t = e ? e._next = r : F2 = r); + E1 = e, w6(n); +} +function w6(e) { + if (!nI) { + b1 && (b1 = clearTimeout(b1)); + var t = e - wE; + t > 24 ? (e < 1 / 0 && (b1 = setTimeout(yfe, e - rD.now() - WB)), r1 && (r1 = clearInterval(r1))) : (r1 || (B2 = rD.now(), r1 = setInterval(N1t, zxe)), nI = 1, Hxe(yfe)); + } +} +function _fe(e, t, r) { + var n = new U2(); + return t = t == null ? 0 : +t, n.restart((i) => { + n.stop(), e(i + t); + }, t, r), n; +} +var F1t = Txe("start", "end", "cancel", "interrupt"), B1t = [], Gxe = 0, Sfe = 1, I6 = 2, qN = 3, bfe = 4, x6 = 5, JN = 6; +function GB(e, t, r, n, i, a) { + var o = e.__transition; + if (!o) + e.__transition = {}; + else if (r in o) + return; + U1t(e, r, { + name: t, + index: n, + // For context during callback. + group: i, + // For context during callback. + on: F1t, + tween: B1t, + time: a.time, + delay: a.delay, + duration: a.duration, + ease: a.ease, + timer: null, + state: Gxe + }); +} +function iX(e, t) { + var r = Up(e, t); + if (r.state > Gxe) + throw new Error("too late; already scheduled"); + return r; +} +function vv(e, t) { + var r = Up(e, t); + if (r.state > qN) + throw new Error("too late; already running"); + return r; +} +function Up(e, t) { + var r = e.__transition; + if (!r || !(r = r[t])) + throw new Error("transition not found"); + return r; +} +function U1t(e, t, r) { + var n = e.__transition, i; + n[t] = r, r.timer = Wxe(a, 0, r.time); + function a(d) { + r.state = Sfe, r.timer.restart(o, r.delay, r.time), r.delay <= d && o(d - r.delay); + } + function o(d) { + var f, g, v, y; + if (r.state !== Sfe) + return u(); + for (f in n) + if (y = n[f], y.name === r.name) { + if (y.state === qN) + return _fe(o); + y.state === bfe ? (y.state = JN, y.timer.stop(), y.on.call("interrupt", e, e.__data__, y.index, y.group), delete n[f]) : +f < t && (y.state = JN, y.timer.stop(), y.on.call("cancel", e, e.__data__, y.index, y.group), delete n[f]); + } + if (_fe(function() { + r.state === qN && (r.state = bfe, r.timer.restart(l, r.delay, r.time), l(d)); + }), r.state = I6, r.on.call("start", e, e.__data__, r.index, r.group), r.state === I6) { + for (r.state = qN, i = new Array(v = r.tween.length), f = 0, g = -1; f < v; ++f) + (y = r.tween[f].value.call(e, e.__data__, r.index, r.group)) && (i[++g] = y); + i.length = g + 1; + } + } + function l(d) { + for (var f = d < r.duration ? r.ease.call(null, d / r.duration) : (r.timer.restart(u), r.state = x6, 1), g = -1, v = i.length; ++g < v; ) + i[g].call(e, f); + r.state === x6 && (r.on.call("end", e, e.__data__, r.index, r.group), u()); + } + function u() { + r.state = JN, r.timer.stop(), delete n[t]; + for (var d in n) + return; + delete e.__transition; + } +} +function j1t(e, t) { + var r = e.__transition, n, i, a = !0, o; + if (r) { + t = t == null ? null : t + ""; + for (o in r) { + if ((n = r[o]).name !== t) { + a = !1; + continue; + } + i = n.state > I6 && n.state < x6, n.state = JN, n.timer.stop(), n.on.call(i ? "interrupt" : "cancel", e, e.__data__, n.index, n.group), delete r[o]; + } + a && delete e.__transition; + } +} +function $1t(e) { + return this.each(function() { + j1t(this, e); + }); +} +function V1t(e, t) { + var r, n; + return function() { + var i = vv(this, e), a = i.tween; + if (a !== r) { + n = r = a; + for (var o = 0, l = n.length; o < l; ++o) + if (n[o].name === t) { + n = n.slice(), n.splice(o, 1); + break; + } + } + i.tween = n; + }; +} +function z1t(e, t, r) { + var n, i; + if (typeof r != "function") + throw new Error(); + return function() { + var a = vv(this, e), o = a.tween; + if (o !== n) { + i = (n = o).slice(); + for (var l = { name: t, value: r }, u = 0, d = i.length; u < d; ++u) + if (i[u].name === t) { + i[u] = l; + break; + } + u === d && i.push(l); + } + a.tween = i; + }; +} +function H1t(e, t) { + var r = this._id; + if (e += "", arguments.length < 2) { + for (var n = Up(this.node(), r).tween, i = 0, a = n.length, o; i < a; ++i) + if ((o = n[i]).name === e) + return o.value; + return null; + } + return this.each((t == null ? V1t : z1t)(r, e, t)); +} +function aX(e, t, r) { + var n = e._id; + return e.each(function() { + var i = vv(this, n); + (i.value || (i.value = {}))[t] = r.apply(this, arguments); + }), function(i) { + return Up(i, n).value[t]; + }; +} +function Yxe(e, t) { + var r; + return (typeof t == "number" ? G_ : t instanceof tD ? vfe : (r = tD(t)) ? (t = r, vfe) : A1t)(e, t); +} +function W1t(e) { + return function() { + this.removeAttribute(e); + }; +} +function G1t(e) { + return function() { + this.removeAttributeNS(e.space, e.local); + }; +} +function Y1t(e, t, r) { + var n, i = r + "", a; + return function() { + var o = this.getAttribute(e); + return o === i ? null : o === n ? a : a = t(n = o, r); + }; +} +function X1t(e, t, r) { + var n, i = r + "", a; + return function() { + var o = this.getAttributeNS(e.space, e.local); + return o === i ? null : o === n ? a : a = t(n = o, r); + }; +} +function K1t(e, t, r) { + var n, i, a; + return function() { + var o, l = r(this), u; + return l == null ? void this.removeAttribute(e) : (o = this.getAttribute(e), u = l + "", o === u ? null : o === n && u === i ? a : (i = u, a = t(n = o, l))); + }; +} +function Z1t(e, t, r) { + var n, i, a; + return function() { + var o, l = r(this), u; + return l == null ? void this.removeAttributeNS(e.space, e.local) : (o = this.getAttributeNS(e.space, e.local), u = l + "", o === u ? null : o === n && u === i ? a : (i = u, a = t(n = o, l))); + }; +} +function q1t(e, t) { + var r = HB(e), n = r === "transform" ? M1t : Yxe; + return this.attrTween(e, typeof t == "function" ? (r.local ? Z1t : K1t)(r, n, aX(this, "attr." + e, t)) : t == null ? (r.local ? G1t : W1t)(r) : (r.local ? X1t : Y1t)(r, n, t)); +} +function J1t(e, t) { + return function(r) { + this.setAttribute(e, t.call(this, r)); + }; +} +function Q1t(e, t) { + return function(r) { + this.setAttributeNS(e.space, e.local, t.call(this, r)); + }; +} +function eRt(e, t) { + var r, n; + function i() { + var a = t.apply(this, arguments); + return a !== n && (r = (n = a) && Q1t(e, a)), r; + } + return i._value = t, i; +} +function tRt(e, t) { + var r, n; + function i() { + var a = t.apply(this, arguments); + return a !== n && (r = (n = a) && J1t(e, a)), r; + } + return i._value = t, i; +} +function rRt(e, t) { + var r = "attr." + e; + if (arguments.length < 2) + return (r = this.tween(r)) && r._value; + if (t == null) + return this.tween(r, null); + if (typeof t != "function") + throw new Error(); + var n = HB(e); + return this.tween(r, (n.local ? eRt : tRt)(n, t)); +} +function nRt(e, t) { + return function() { + iX(this, e).delay = +t.apply(this, arguments); + }; +} +function iRt(e, t) { + return t = +t, function() { + iX(this, e).delay = t; + }; +} +function aRt(e) { + var t = this._id; + return arguments.length ? this.each((typeof e == "function" ? nRt : iRt)(t, e)) : Up(this.node(), t).delay; +} +function oRt(e, t) { + return function() { + vv(this, e).duration = +t.apply(this, arguments); + }; +} +function sRt(e, t) { + return t = +t, function() { + vv(this, e).duration = t; + }; +} +function lRt(e) { + var t = this._id; + return arguments.length ? this.each((typeof e == "function" ? oRt : sRt)(t, e)) : Up(this.node(), t).duration; +} +function cRt(e, t) { + if (typeof t != "function") + throw new Error(); + return function() { + vv(this, e).ease = t; + }; +} +function uRt(e) { + var t = this._id; + return arguments.length ? this.each(cRt(t, e)) : Up(this.node(), t).ease; +} +function hRt(e, t) { + return function() { + var r = t.apply(this, arguments); + if (typeof r != "function") + throw new Error(); + vv(this, e).ease = r; + }; +} +function dRt(e) { + if (typeof e != "function") + throw new Error(); + return this.each(hRt(this._id, e)); +} +function fRt(e) { + typeof e != "function" && (e = xxe(e)); + for (var t = this._groups, r = t.length, n = new Array(r), i = 0; i < r; ++i) + for (var a = t[i], o = a.length, l = n[i] = [], u, d = 0; d < o; ++d) + (u = a[d]) && e.call(u, u.__data__, d, a) && l.push(u); + return new ty(n, this._parents, this._name, this._id); +} +function pRt(e) { + if (e._id !== this._id) + throw new Error(); + for (var t = this._groups, r = e._groups, n = t.length, i = r.length, a = Math.min(n, i), o = new Array(n), l = 0; l < a; ++l) + for (var u = t[l], d = r[l], f = u.length, g = o[l] = new Array(f), v, y = 0; y < f; ++y) + (v = u[y] || d[y]) && (g[y] = v); + for (; l < n; ++l) + o[l] = t[l]; + return new ty(o, this._parents, this._name, this._id); +} +function gRt(e) { + return (e + "").trim().split(/^|\s+/).every(function(t) { + var r = t.indexOf("."); + return r >= 0 && (t = t.slice(0, r)), !t || t === "start"; + }); +} +function vRt(e, t, r) { + var n, i, a = gRt(t) ? iX : vv; + return function() { + var o = a(this, e), l = o.on; + l !== n && (i = (n = l).copy()).on(t, r), o.on = i; + }; +} +function mRt(e, t) { + var r = this._id; + return arguments.length < 2 ? Up(this.node(), r).on.on(e) : this.each(vRt(r, e, t)); +} +function yRt(e) { + return function() { + var t = this.parentNode; + for (var r in this.__transition) + if (+r !== e) + return; + t && t.removeChild(this); + }; +} +function _Rt() { + return this.on("end.remove", yRt(this._id)); +} +function SRt(e) { + var t = this._name, r = this._id; + typeof e != "function" && (e = Q7(e)); + for (var n = this._groups, i = n.length, a = new Array(i), o = 0; o < i; ++o) + for (var l = n[o], u = l.length, d = a[o] = new Array(u), f, g, v = 0; v < u; ++v) + (f = l[v]) && (g = e.call(f, f.__data__, v, l)) && ("__data__" in f && (g.__data__ = f.__data__), d[v] = g, GB(d[v], t, r, v, d, Up(f, r))); + return new ty(a, this._parents, t, r); +} +function bRt(e) { + var t = this._name, r = this._id; + typeof e != "function" && (e = Ixe(e)); + for (var n = this._groups, i = n.length, a = [], o = [], l = 0; l < i; ++l) + for (var u = n[l], d = u.length, f, g = 0; g < d; ++g) + if (f = u[g]) { + for (var v = e.call(f, f.__data__, g, u), y, C = Up(f, r), A = 0, S = v.length; A < S; ++A) + (y = v[A]) && GB(y, t, r, A, v, C); + a.push(v), o.push(f); + } + return new ty(a, o, t, r); +} +var ERt = nO.prototype.constructor; +function CRt() { + return new ERt(this._groups, this._parents); +} +function TRt(e, t) { + var r, n, i; + return function() { + var a = rI(this, e), o = (this.style.removeProperty(e), rI(this, e)); + return a === o ? null : a === r && o === n ? i : i = t(r = a, n = o); + }; +} +function Xxe(e) { + return function() { + this.style.removeProperty(e); + }; +} +function wRt(e, t, r) { + var n, i = r + "", a; + return function() { + var o = rI(this, e); + return o === i ? null : o === n ? a : a = t(n = o, r); + }; +} +function IRt(e, t, r) { + var n, i, a; + return function() { + var o = rI(this, e), l = r(this), u = l + ""; + return l == null && (u = l = (this.style.removeProperty(e), rI(this, e))), o === u ? null : o === n && u === i ? a : (i = u, a = t(n = o, l)); + }; +} +function xRt(e, t) { + var r, n, i, a = "style." + t, o = "end." + a, l; + return function() { + var u = vv(this, e), d = u.on, f = u.value[a] == null ? l || (l = Xxe(t)) : void 0; + (d !== r || i !== f) && (n = (r = d).copy()).on(o, i = f), u.on = n; + }; +} +function ARt(e, t, r) { + var n = (e += "") == "transform" ? O1t : Yxe; + return t == null ? this.styleTween(e, TRt(e, n)).on("end.style." + e, Xxe(e)) : typeof t == "function" ? this.styleTween(e, IRt(e, n, aX(this, "style." + e, t))).each(xRt(this._id, e)) : this.styleTween(e, wRt(e, n, t), r).on("end.style." + e, null); +} +function RRt(e, t, r) { + return function(n) { + this.style.setProperty(e, t.call(this, n), r); + }; +} +function DRt(e, t, r) { + var n, i; + function a() { + var o = t.apply(this, arguments); + return o !== i && (n = (i = o) && RRt(e, o, r)), n; + } + return a._value = t, a; +} +function ORt(e, t, r) { + var n = "style." + (e += ""); + if (arguments.length < 2) + return (n = this.tween(n)) && n._value; + if (t == null) + return this.tween(n, null); + if (typeof t != "function") + throw new Error(); + return this.tween(n, DRt(e, t, r == null ? "" : r)); +} +function MRt(e) { + return function() { + this.textContent = e; + }; +} +function kRt(e) { + return function() { + var t = e(this); + this.textContent = t == null ? "" : t; + }; +} +function PRt(e) { + return this.tween("text", typeof e == "function" ? kRt(aX(this, "text", e)) : MRt(e == null ? "" : e + "")); +} +function NRt(e) { + return function(t) { + this.textContent = e.call(this, t); + }; +} +function LRt(e) { + var t, r; + function n() { + var i = e.apply(this, arguments); + return i !== r && (t = (r = i) && NRt(i)), t; + } + return n._value = e, n; +} +function FRt(e) { + var t = "text"; + if (arguments.length < 1) + return (t = this.tween(t)) && t._value; + if (e == null) + return this.tween(t, null); + if (typeof e != "function") + throw new Error(); + return this.tween(t, LRt(e)); +} +function BRt() { + for (var e = this._name, t = this._id, r = Kxe(), n = this._groups, i = n.length, a = 0; a < i; ++a) + for (var o = n[a], l = o.length, u, d = 0; d < l; ++d) + if (u = o[d]) { + var f = Up(u, t); + GB(u, e, r, d, o, { + time: f.time + f.delay + f.duration, + delay: 0, + duration: f.duration, + ease: f.ease + }); + } + return new ty(n, this._parents, e, r); +} +function URt() { + var e, t, r = this, n = r._id, i = r.size(); + return new Promise(function(a, o) { + var l = { value: o }, u = { value: function() { + --i === 0 && a(); + } }; + r.each(function() { + var d = vv(this, n), f = d.on; + f !== e && (t = (e = f).copy(), t._.cancel.push(l), t._.interrupt.push(l), t._.end.push(u)), d.on = t; + }), i === 0 && a(); + }); +} +var jRt = 0; +function ty(e, t, r, n) { + this._groups = e, this._parents = t, this._name = r, this._id = n; +} +function Kxe() { + return ++jRt; +} +var Tm = nO.prototype; +ty.prototype = { + constructor: ty, + select: SRt, + selectAll: bRt, + selectChild: Tm.selectChild, + selectChildren: Tm.selectChildren, + filter: fRt, + merge: pRt, + selection: CRt, + transition: BRt, + call: Tm.call, + nodes: Tm.nodes, + node: Tm.node, + size: Tm.size, + empty: Tm.empty, + each: Tm.each, + on: mRt, + attr: q1t, + attrTween: rRt, + style: ARt, + styleTween: ORt, + text: PRt, + textTween: FRt, + remove: _Rt, + tween: H1t, + delay: aRt, + duration: lRt, + ease: uRt, + easeVarying: dRt, + end: URt, + [Symbol.iterator]: Tm[Symbol.iterator] +}; +function $Rt(e) { + return ((e *= 2) <= 1 ? e * e * e : (e -= 2) * e * e + 2) / 2; +} +var VRt = { + time: null, + // Set on use. + delay: 0, + duration: 250, + ease: $Rt +}; +function zRt(e, t) { + for (var r; !(r = e.__transition) || !(r = r[t]); ) + if (!(e = e.parentNode)) + throw new Error(`transition ${t} not found`); + return r; +} +function HRt(e) { + var t, r; + e instanceof ty ? (t = e._id, e = e._name) : (t = Kxe(), (r = VRt).time = nX(), e = e == null ? null : e + ""); + for (var n = this._groups, i = n.length, a = 0; a < i; ++a) + for (var o = n[a], l = o.length, u, d = 0; d < l; ++d) + (u = o[d]) && GB(u, e, t, d, o, r || zRt(u, t)); + return new ty(n, this._parents, e, t); +} +nO.prototype.interrupt = $1t; +nO.prototype.transition = HRt; +const VUt = Math.abs, zUt = Math.atan2, HUt = Math.cos, WUt = Math.max, GUt = Math.min, YUt = Math.sin, XUt = Math.sqrt, Efe = 1e-12, oX = Math.PI, Cfe = oX / 2, KUt = 2 * oX; +function ZUt(e) { + return e > 1 ? 0 : e < -1 ? oX : Math.acos(e); +} +function qUt(e) { + return e >= 1 ? Cfe : e <= -1 ? -Cfe : Math.asin(e); +} +function Zxe(e) { + this._context = e; +} +Zxe.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); + break; + case 1: + this._point = 2; + default: + this._context.lineTo(e, t); + break; + } + } +}; +function WRt(e) { + return new Zxe(e); +} +class qxe { + constructor(t, r) { + this._context = t, this._x = r; + } + areaStart() { + this._line = 0; + } + areaEnd() { + this._line = NaN; + } + lineStart() { + this._point = 0; + } + lineEnd() { + (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line = 1 - this._line; + } + point(t, r) { + switch (t = +t, r = +r, this._point) { + case 0: { + this._point = 1, this._line ? this._context.lineTo(t, r) : this._context.moveTo(t, r); + break; + } + case 1: + this._point = 2; + default: { + this._x ? this._context.bezierCurveTo(this._x0 = (this._x0 + t) / 2, this._y0, this._x0, r, t, r) : this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + r) / 2, t, this._y0, t, r); + break; + } + } + this._x0 = t, this._y0 = r; + } +} +function GRt(e) { + return new qxe(e, !0); +} +function YRt(e) { + return new qxe(e, !1); +} +function I0() { +} +function j2(e, t, r) { + e._context.bezierCurveTo( + (2 * e._x0 + e._x1) / 3, + (2 * e._y0 + e._y1) / 3, + (e._x0 + 2 * e._x1) / 3, + (e._y0 + 2 * e._y1) / 3, + (e._x0 + 4 * e._x1 + t) / 6, + (e._y0 + 4 * e._y1 + r) / 6 + ); +} +function YB(e) { + this._context = e; +} +YB.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 3: + j2(this, this._x1, this._y1); + case 2: + this._context.lineTo(this._x1, this._y1); + break; + } + (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3, this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); + default: + j2(this, e, t); + break; + } + this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t; + } +}; +function XRt(e) { + return new YB(e); +} +function Jxe(e) { + this._context = e; +} +Jxe.prototype = { + areaStart: I0, + areaEnd: I0, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN, this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 1: { + this._context.moveTo(this._x2, this._y2), this._context.closePath(); + break; + } + case 2: { + this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3), this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3), this._context.closePath(); + break; + } + case 3: { + this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4); + break; + } + } + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1, this._x2 = e, this._y2 = t; + break; + case 1: + this._point = 2, this._x3 = e, this._y3 = t; + break; + case 2: + this._point = 3, this._x4 = e, this._y4 = t, this._context.moveTo((this._x0 + 4 * this._x1 + e) / 6, (this._y0 + 4 * this._y1 + t) / 6); + break; + default: + j2(this, e, t); + break; + } + this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t; + } +}; +function KRt(e) { + return new Jxe(e); +} +function Qxe(e) { + this._context = e; +} +Qxe.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0; + }, + lineEnd: function() { + (this._line || this._line !== 0 && this._point === 3) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1; + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + var r = (this._x0 + 4 * this._x1 + e) / 6, n = (this._y0 + 4 * this._y1 + t) / 6; + this._line ? this._context.lineTo(r, n) : this._context.moveTo(r, n); + break; + case 3: + this._point = 4; + default: + j2(this, e, t); + break; + } + this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t; + } +}; +function ZRt(e) { + return new Qxe(e); +} +function eAe(e, t) { + this._basis = new YB(e), this._beta = t; +} +eAe.prototype = { + lineStart: function() { + this._x = [], this._y = [], this._basis.lineStart(); + }, + lineEnd: function() { + var e = this._x, t = this._y, r = e.length - 1; + if (r > 0) + for (var n = e[0], i = t[0], a = e[r] - n, o = t[r] - i, l = -1, u; ++l <= r; ) + u = l / r, this._basis.point( + this._beta * e[l] + (1 - this._beta) * (n + u * a), + this._beta * t[l] + (1 - this._beta) * (i + u * o) + ); + this._x = this._y = null, this._basis.lineEnd(); + }, + point: function(e, t) { + this._x.push(+e), this._y.push(+t); + } +}; +const qRt = function e(t) { + function r(n) { + return t === 1 ? new YB(n) : new eAe(n, t); + } + return r.beta = function(n) { + return e(+n); + }, r; +}(0.85); +function $2(e, t, r) { + e._context.bezierCurveTo( + e._x1 + e._k * (e._x2 - e._x0), + e._y1 + e._k * (e._y2 - e._y0), + e._x2 + e._k * (e._x1 - t), + e._y2 + e._k * (e._y1 - r), + e._x2, + e._y2 + ); +} +function sX(e, t) { + this._context = e, this._k = (1 - t) / 6; +} +sX.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: + this._context.lineTo(this._x2, this._y2); + break; + case 3: + $2(this, this._x1, this._y1); + break; + } + (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); + break; + case 1: + this._point = 2, this._x1 = e, this._y1 = t; + break; + case 2: + this._point = 3; + default: + $2(this, e, t); + break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t; + } +}; +const JRt = function e(t) { + function r(n) { + return new sX(n, t); + } + return r.tension = function(n) { + return e(+n); + }, r; +}(0); +function lX(e, t) { + this._context = e, this._k = (1 - t) / 6; +} +lX.prototype = { + areaStart: I0, + areaEnd: I0, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 1: { + this._context.moveTo(this._x3, this._y3), this._context.closePath(); + break; + } + case 2: { + this._context.lineTo(this._x3, this._y3), this._context.closePath(); + break; + } + case 3: { + this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5); + break; + } + } + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1, this._x3 = e, this._y3 = t; + break; + case 1: + this._point = 2, this._context.moveTo(this._x4 = e, this._y4 = t); + break; + case 2: + this._point = 3, this._x5 = e, this._y5 = t; + break; + default: + $2(this, e, t); + break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t; + } +}; +const QRt = function e(t) { + function r(n) { + return new lX(n, t); + } + return r.tension = function(n) { + return e(+n); + }, r; +}(0); +function cX(e, t) { + this._context = e, this._k = (1 - t) / 6; +} +cX.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0; + }, + lineEnd: function() { + (this._line || this._line !== 0 && this._point === 3) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1; + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); + break; + case 3: + this._point = 4; + default: + $2(this, e, t); + break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t; + } +}; +const eDt = function e(t) { + function r(n) { + return new cX(n, t); + } + return r.tension = function(n) { + return e(+n); + }, r; +}(0); +function uX(e, t, r) { + var n = e._x1, i = e._y1, a = e._x2, o = e._y2; + if (e._l01_a > Efe) { + var l = 2 * e._l01_2a + 3 * e._l01_a * e._l12_a + e._l12_2a, u = 3 * e._l01_a * (e._l01_a + e._l12_a); + n = (n * l - e._x0 * e._l12_2a + e._x2 * e._l01_2a) / u, i = (i * l - e._y0 * e._l12_2a + e._y2 * e._l01_2a) / u; + } + if (e._l23_a > Efe) { + var d = 2 * e._l23_2a + 3 * e._l23_a * e._l12_a + e._l12_2a, f = 3 * e._l23_a * (e._l23_a + e._l12_a); + a = (a * d + e._x1 * e._l23_2a - t * e._l12_2a) / f, o = (o * d + e._y1 * e._l23_2a - r * e._l12_2a) / f; + } + e._context.bezierCurveTo(n, i, a, o, e._x2, e._y2); +} +function tAe(e, t) { + this._context = e, this._alpha = t; +} +tAe.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: + this._context.lineTo(this._x2, this._y2); + break; + case 3: + this.point(this._x2, this._y2); + break; + } + (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + if (e = +e, t = +t, this._point) { + var r = this._x2 - e, n = this._y2 - t; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(r * r + n * n, this._alpha)); + } + switch (this._point) { + case 0: + this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + default: + uX(this, e, t); + break; + } + this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t; + } +}; +const tDt = function e(t) { + function r(n) { + return t ? new tAe(n, t) : new sX(n, 0); + } + return r.alpha = function(n) { + return e(+n); + }, r; +}(0.5); +function rAe(e, t) { + this._context = e, this._alpha = t; +} +rAe.prototype = { + areaStart: I0, + areaEnd: I0, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 1: { + this._context.moveTo(this._x3, this._y3), this._context.closePath(); + break; + } + case 2: { + this._context.lineTo(this._x3, this._y3), this._context.closePath(); + break; + } + case 3: { + this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5); + break; + } + } + }, + point: function(e, t) { + if (e = +e, t = +t, this._point) { + var r = this._x2 - e, n = this._y2 - t; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(r * r + n * n, this._alpha)); + } + switch (this._point) { + case 0: + this._point = 1, this._x3 = e, this._y3 = t; + break; + case 1: + this._point = 2, this._context.moveTo(this._x4 = e, this._y4 = t); + break; + case 2: + this._point = 3, this._x5 = e, this._y5 = t; + break; + default: + uX(this, e, t); + break; + } + this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t; + } +}; +const rDt = function e(t) { + function r(n) { + return t ? new rAe(n, t) : new lX(n, 0); + } + return r.alpha = function(n) { + return e(+n); + }, r; +}(0.5); +function nAe(e, t) { + this._context = e, this._alpha = t; +} +nAe.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; + }, + lineEnd: function() { + (this._line || this._line !== 0 && this._point === 3) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + if (e = +e, t = +t, this._point) { + var r = this._x2 - e, n = this._y2 - t; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(r * r + n * n, this._alpha)); + } + switch (this._point) { + case 0: + this._point = 1; + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); + break; + case 3: + this._point = 4; + default: + uX(this, e, t); + break; + } + this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t; + } +}; +const nDt = function e(t) { + function r(n) { + return t ? new nAe(n, t) : new cX(n, 0); + } + return r.alpha = function(n) { + return e(+n); + }, r; +}(0.5); +function iAe(e) { + this._context = e; +} +iAe.prototype = { + areaStart: I0, + areaEnd: I0, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + this._point && this._context.closePath(); + }, + point: function(e, t) { + e = +e, t = +t, this._point ? this._context.lineTo(e, t) : (this._point = 1, this._context.moveTo(e, t)); + } +}; +function iDt(e) { + return new iAe(e); +} +function Tfe(e) { + return e < 0 ? -1 : 1; +} +function wfe(e, t, r) { + var n = e._x1 - e._x0, i = t - e._x1, a = (e._y1 - e._y0) / (n || i < 0 && -0), o = (r - e._y1) / (i || n < 0 && -0), l = (a * i + o * n) / (n + i); + return (Tfe(a) + Tfe(o)) * Math.min(Math.abs(a), Math.abs(o), 0.5 * Math.abs(l)) || 0; +} +function Ife(e, t) { + var r = e._x1 - e._x0; + return r ? (3 * (e._y1 - e._y0) / r - t) / 2 : t; +} +function V4(e, t, r) { + var n = e._x0, i = e._y0, a = e._x1, o = e._y1, l = (a - n) / 3; + e._context.bezierCurveTo(n + l, i + l * t, a - l, o - l * r, a, o); +} +function V2(e) { + this._context = e; +} +V2.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: + this._context.lineTo(this._x1, this._y1); + break; + case 3: + V4(this, this._t0, Ife(this, this._t0)); + break; + } + (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line = 1 - this._line; + }, + point: function(e, t) { + var r = NaN; + if (e = +e, t = +t, !(e === this._x1 && t === this._y1)) { + switch (this._point) { + case 0: + this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3, V4(this, Ife(this, r = wfe(this, e, t)), r); + break; + default: + V4(this, this._t0, r = wfe(this, e, t)); + break; + } + this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t, this._t0 = r; + } + } +}; +function aAe(e) { + this._context = new oAe(e); +} +(aAe.prototype = Object.create(V2.prototype)).point = function(e, t) { + V2.prototype.point.call(this, t, e); +}; +function oAe(e) { + this._context = e; +} +oAe.prototype = { + moveTo: function(e, t) { + this._context.moveTo(t, e); + }, + closePath: function() { + this._context.closePath(); + }, + lineTo: function(e, t) { + this._context.lineTo(t, e); + }, + bezierCurveTo: function(e, t, r, n, i, a) { + this._context.bezierCurveTo(t, e, n, r, a, i); + } +}; +function aDt(e) { + return new V2(e); +} +function oDt(e) { + return new aAe(e); +} +function sAe(e) { + this._context = e; +} +sAe.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x = [], this._y = []; + }, + lineEnd: function() { + var e = this._x, t = this._y, r = e.length; + if (r) + if (this._line ? this._context.lineTo(e[0], t[0]) : this._context.moveTo(e[0], t[0]), r === 2) + this._context.lineTo(e[1], t[1]); + else + for (var n = xfe(e), i = xfe(t), a = 0, o = 1; o < r; ++a, ++o) + this._context.bezierCurveTo(n[0][a], i[0][a], n[1][a], i[1][a], e[o], t[o]); + (this._line || this._line !== 0 && r === 1) && this._context.closePath(), this._line = 1 - this._line, this._x = this._y = null; + }, + point: function(e, t) { + this._x.push(+e), this._y.push(+t); + } +}; +function xfe(e) { + var t, r = e.length - 1, n, i = new Array(r), a = new Array(r), o = new Array(r); + for (i[0] = 0, a[0] = 2, o[0] = e[0] + 2 * e[1], t = 1; t < r - 1; ++t) + i[t] = 1, a[t] = 4, o[t] = 4 * e[t] + 2 * e[t + 1]; + for (i[r - 1] = 2, a[r - 1] = 7, o[r - 1] = 8 * e[r - 1] + e[r], t = 1; t < r; ++t) + n = i[t] / a[t - 1], a[t] -= n, o[t] -= n * o[t - 1]; + for (i[r - 1] = o[r - 1] / a[r - 1], t = r - 2; t >= 0; --t) + i[t] = (o[t] - i[t + 1]) / a[t]; + for (a[r - 1] = (e[r] + i[r - 1]) / 2, t = 0; t < r - 1; ++t) + a[t] = 2 * e[t + 1] - i[t + 1]; + return [i, a]; +} +function sDt(e) { + return new sAe(e); +} +function XB(e, t) { + this._context = e, this._t = t; +} +XB.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x = this._y = NaN, this._point = 0; + }, + lineEnd: function() { + 0 < this._t && this._t < 1 && this._point === 2 && this._context.lineTo(this._x, this._y), (this._line || this._line !== 0 && this._point === 1) && this._context.closePath(), this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line); + }, + point: function(e, t) { + switch (e = +e, t = +t, this._point) { + case 0: + this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); + break; + case 1: + this._point = 2; + default: { + if (this._t <= 0) + this._context.lineTo(this._x, t), this._context.lineTo(e, t); + else { + var r = this._x * (1 - this._t) + e * this._t; + this._context.lineTo(r, this._y), this._context.lineTo(r, t); + } + break; + } + } + this._x = e, this._y = t; + } +}; +function lDt(e) { + return new XB(e, 0.5); +} +function cDt(e) { + return new XB(e, 0); +} +function uDt(e) { + return new XB(e, 1); +} +function C1(e, t, r) { + this.k = e, this.x = t, this.y = r; +} +C1.prototype = { + constructor: C1, + scale: function(e) { + return e === 1 ? this : new C1(this.k * e, this.x, this.y); + }, + translate: function(e, t) { + return e === 0 & t === 0 ? this : new C1(this.k, this.x + this.k * e, this.y + this.k * t); + }, + apply: function(e) { + return [e[0] * this.k + this.x, e[1] * this.k + this.y]; + }, + applyX: function(e) { + return e * this.k + this.x; + }, + applyY: function(e) { + return e * this.k + this.y; + }, + invert: function(e) { + return [(e[0] - this.x) / this.k, (e[1] - this.y) / this.k]; + }, + invertX: function(e) { + return (e - this.x) / this.k; + }, + invertY: function(e) { + return (e - this.y) / this.k; + }, + rescaleX: function(e) { + return e.copy().domain(e.range().map(this.invertX, this).map(e.invert, e)); + }, + rescaleY: function(e) { + return e.copy().domain(e.range().map(this.invertY, this).map(e.invert, e)); + }, + toString: function() { + return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; + } +}; +C1.prototype; +/*! @license DOMPurify 3.1.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.0/LICENSE */ +const { + entries: lAe, + setPrototypeOf: Afe, + isFrozen: hDt, + getPrototypeOf: dDt, + getOwnPropertyDescriptor: fDt +} = Object; +let { + freeze: ju, + seal: xf, + create: cAe +} = Object, { + apply: A6, + construct: R6 +} = typeof Reflect != "undefined" && Reflect; +ju || (ju = function(t) { + return t; +}); +xf || (xf = function(t) { + return t; +}); +A6 || (A6 = function(t, r, n) { + return t.apply(r, n); +}); +R6 || (R6 = function(t, r) { + return new t(...r); +}); +const oN = bd(Array.prototype.forEach), Rfe = bd(Array.prototype.pop), n1 = bd(Array.prototype.push), QN = bd(String.prototype.toLowerCase), z4 = bd(String.prototype.toString), Dfe = bd(String.prototype.match), i1 = bd(String.prototype.replace), pDt = bd(String.prototype.indexOf), gDt = bd(String.prototype.trim), Sp = bd(Object.prototype.hasOwnProperty), yh = bd(RegExp.prototype.test), a1 = vDt(TypeError); +function bd(e) { + return function(t) { + for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) + n[i - 1] = arguments[i]; + return A6(e, t, n); + }; +} +function vDt(e) { + return function() { + for (var t = arguments.length, r = new Array(t), n = 0; n < t; n++) + r[n] = arguments[n]; + return R6(e, r); + }; +} +function va(e, t) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : QN; + Afe && Afe(e, null); + let n = t.length; + for (; n--; ) { + let i = t[n]; + if (typeof i == "string") { + const a = r(i); + a !== i && (hDt(t) || (t[n] = a), i = a); + } + e[i] = !0; + } + return e; +} +function mDt(e) { + for (let t = 0; t < e.length; t++) + Sp(e, t) || (e[t] = null); + return e; +} +function Tb(e) { + const t = cAe(null); + for (const [r, n] of lAe(e)) + Sp(e, r) && (Array.isArray(n) ? t[r] = mDt(n) : n && typeof n == "object" && n.constructor === Object ? t[r] = Tb(n) : t[r] = n); + return t; +} +function sN(e, t) { + for (; e !== null; ) { + const n = fDt(e, t); + if (n) { + if (n.get) + return bd(n.get); + if (typeof n.value == "function") + return bd(n.value); + } + e = dDt(e); + } + function r() { + return null; + } + return r; +} +const Ofe = ju(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]), H4 = ju(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]), W4 = ju(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]), yDt = ju(["animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]), G4 = ju(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts"]), _Dt = ju(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]), Mfe = ju(["#text"]), kfe = ju(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns", "slot"]), Y4 = ju(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]), Pfe = ju(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]), lN = ju(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]), SDt = xf(/\{\{[\w\W]*|[\w\W]*\}\}/gm), bDt = xf(/<%[\w\W]*|[\w\W]*%>/gm), EDt = xf(/\${[\w\W]*}/gm), CDt = xf(/^data-[\-\w.\u00B7-\uFFFF]/), TDt = xf(/^aria-[\-\w]+$/), uAe = xf( + /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i + // eslint-disable-line no-useless-escape +), wDt = xf(/^(?:\w+script|data):/i), IDt = xf( + /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g + // eslint-disable-line no-control-regex +), hAe = xf(/^html$/i), xDt = xf(/^[a-z][.\w]*(-[.\w]+)+$/i); +var Nfe = /* @__PURE__ */ Object.freeze({ + __proto__: null, + MUSTACHE_EXPR: SDt, + ERB_EXPR: bDt, + TMPLIT_EXPR: EDt, + DATA_ATTR: CDt, + ARIA_ATTR: TDt, + IS_ALLOWED_URI: uAe, + IS_SCRIPT_OR_DATA: wDt, + ATTR_WHITESPACE: IDt, + DOCTYPE_NAME: hAe, + CUSTOM_ELEMENT: xDt +}); +const ADt = function() { + return typeof window == "undefined" ? null : window; +}, RDt = function(t, r) { + if (typeof t != "object" || typeof t.createPolicy != "function") + return null; + let n = null; + const i = "data-tt-policy-suffix"; + r && r.hasAttribute(i) && (n = r.getAttribute(i)); + const a = "dompurify" + (n ? "#" + n : ""); + try { + return t.createPolicy(a, { + createHTML(o) { + return o; + }, + createScriptURL(o) { + return o; + } + }); + } catch (o) { + return console.warn("TrustedTypes policy " + a + " could not be created."), null; + } +}; +function dAe() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ADt(); + const t = (Cr) => dAe(Cr); + if (t.version = "3.1.0", t.removed = [], !e || !e.document || e.document.nodeType !== 9) + return t.isSupported = !1, t; + let { + document: r + } = e; + const n = r, i = n.currentScript, { + DocumentFragment: a, + HTMLTemplateElement: o, + Node: l, + Element: u, + NodeFilter: d, + NamedNodeMap: f = e.NamedNodeMap || e.MozNamedAttrMap, + HTMLFormElement: g, + DOMParser: v, + trustedTypes: y + } = e, C = u.prototype, A = sN(C, "cloneNode"), S = sN(C, "nextSibling"), _ = sN(C, "childNodes"), E = sN(C, "parentNode"); + if (typeof o == "function") { + const Cr = r.createElement("template"); + Cr.content && Cr.content.ownerDocument && (r = Cr.content.ownerDocument); + } + let I, w = ""; + const { + implementation: x, + createNodeIterator: b, + createDocumentFragment: R, + getElementsByTagName: M + } = r, { + importNode: O + } = n; + let P = {}; + t.isSupported = typeof lAe == "function" && typeof E == "function" && x && x.createHTMLDocument !== void 0; + const { + MUSTACHE_EXPR: B, + ERB_EXPR: H, + TMPLIT_EXPR: Y, + DATA_ATTR: X, + ARIA_ATTR: ee, + IS_SCRIPT_OR_DATA: ae, + ATTR_WHITESPACE: J, + CUSTOM_ELEMENT: ne + } = Nfe; + let { + IS_ALLOWED_URI: fe + } = Nfe, de = null; + const Te = va({}, [...Ofe, ...H4, ...W4, ...G4, ...Mfe]); + let be = null; + const Ve = va({}, [...kfe, ...Y4, ...Pfe, ...lN]); + let pe = Object.seal(cAe(null, { + tagNameCheck: { + writable: !0, + configurable: !1, + enumerable: !0, + value: null + }, + attributeNameCheck: { + writable: !0, + configurable: !1, + enumerable: !0, + value: null + }, + allowCustomizedBuiltInElements: { + writable: !0, + configurable: !1, + enumerable: !0, + value: !1 + } + })), Be = null, Ue = null, Qe = !0, Re = !0, Ne = !1, Me = !0, we = !1, He = !0, Ie = !1, Ae = !1, Fe = !1, $e = !1, lt = !1, it = !1, nt = !0, ut = !1; + const rt = "user-content-"; + let Ke = !0, ze = !1, qe = {}, ct = null; + const ft = va({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]); + let _t = null; + const Nt = va({}, ["audio", "video", "img", "source", "image", "track"]); + let Yt = null; + const tr = va({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]), Ct = "http://www.w3.org/1998/Math/MathML", hr = "http://www.w3.org/2000/svg", Er = "http://www.w3.org/1999/xhtml"; + let Fr = Er, Dn = !1, hn = null; + const Jn = va({}, [Ct, hr, Er], z4); + let nn = null; + const dn = ["application/xhtml+xml", "text/html"], an = "text/html"; + let zn = null, Lt = null; + const Ot = r.createElement("form"), Jt = function(gt) { + return gt instanceof RegExp || gt instanceof Function; + }, jt = function() { + let gt = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!(Lt && Lt === gt)) { + if ((!gt || typeof gt != "object") && (gt = {}), gt = Tb(gt), nn = // eslint-disable-next-line unicorn/prefer-includes + dn.indexOf(gt.PARSER_MEDIA_TYPE) === -1 ? an : gt.PARSER_MEDIA_TYPE, zn = nn === "application/xhtml+xml" ? z4 : QN, de = Sp(gt, "ALLOWED_TAGS") ? va({}, gt.ALLOWED_TAGS, zn) : Te, be = Sp(gt, "ALLOWED_ATTR") ? va({}, gt.ALLOWED_ATTR, zn) : Ve, hn = Sp(gt, "ALLOWED_NAMESPACES") ? va({}, gt.ALLOWED_NAMESPACES, z4) : Jn, Yt = Sp(gt, "ADD_URI_SAFE_ATTR") ? va( + Tb(tr), + // eslint-disable-line indent + gt.ADD_URI_SAFE_ATTR, + // eslint-disable-line indent + zn + // eslint-disable-line indent + ) : tr, _t = Sp(gt, "ADD_DATA_URI_TAGS") ? va( + Tb(Nt), + // eslint-disable-line indent + gt.ADD_DATA_URI_TAGS, + // eslint-disable-line indent + zn + // eslint-disable-line indent + ) : Nt, ct = Sp(gt, "FORBID_CONTENTS") ? va({}, gt.FORBID_CONTENTS, zn) : ft, Be = Sp(gt, "FORBID_TAGS") ? va({}, gt.FORBID_TAGS, zn) : {}, Ue = Sp(gt, "FORBID_ATTR") ? va({}, gt.FORBID_ATTR, zn) : {}, qe = Sp(gt, "USE_PROFILES") ? gt.USE_PROFILES : !1, Qe = gt.ALLOW_ARIA_ATTR !== !1, Re = gt.ALLOW_DATA_ATTR !== !1, Ne = gt.ALLOW_UNKNOWN_PROTOCOLS || !1, Me = gt.ALLOW_SELF_CLOSE_IN_ATTR !== !1, we = gt.SAFE_FOR_TEMPLATES || !1, He = gt.SAFE_FOR_XML !== !1, Ie = gt.WHOLE_DOCUMENT || !1, $e = gt.RETURN_DOM || !1, lt = gt.RETURN_DOM_FRAGMENT || !1, it = gt.RETURN_TRUSTED_TYPE || !1, Fe = gt.FORCE_BODY || !1, nt = gt.SANITIZE_DOM !== !1, ut = gt.SANITIZE_NAMED_PROPS || !1, Ke = gt.KEEP_CONTENT !== !1, ze = gt.IN_PLACE || !1, fe = gt.ALLOWED_URI_REGEXP || uAe, Fr = gt.NAMESPACE || Er, pe = gt.CUSTOM_ELEMENT_HANDLING || {}, gt.CUSTOM_ELEMENT_HANDLING && Jt(gt.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (pe.tagNameCheck = gt.CUSTOM_ELEMENT_HANDLING.tagNameCheck), gt.CUSTOM_ELEMENT_HANDLING && Jt(gt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (pe.attributeNameCheck = gt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), gt.CUSTOM_ELEMENT_HANDLING && typeof gt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements == "boolean" && (pe.allowCustomizedBuiltInElements = gt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), we && (Re = !1), lt && ($e = !0), qe && (de = va({}, Mfe), be = [], qe.html === !0 && (va(de, Ofe), va(be, kfe)), qe.svg === !0 && (va(de, H4), va(be, Y4), va(be, lN)), qe.svgFilters === !0 && (va(de, W4), va(be, Y4), va(be, lN)), qe.mathMl === !0 && (va(de, G4), va(be, Pfe), va(be, lN))), gt.ADD_TAGS && (de === Te && (de = Tb(de)), va(de, gt.ADD_TAGS, zn)), gt.ADD_ATTR && (be === Ve && (be = Tb(be)), va(be, gt.ADD_ATTR, zn)), gt.ADD_URI_SAFE_ATTR && va(Yt, gt.ADD_URI_SAFE_ATTR, zn), gt.FORBID_CONTENTS && (ct === ft && (ct = Tb(ct)), va(ct, gt.FORBID_CONTENTS, zn)), Ke && (de["#text"] = !0), Ie && va(de, ["html", "head", "body"]), de.table && (va(de, ["tbody"]), delete Be.tbody), gt.TRUSTED_TYPES_POLICY) { + if (typeof gt.TRUSTED_TYPES_POLICY.createHTML != "function") + throw a1('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); + if (typeof gt.TRUSTED_TYPES_POLICY.createScriptURL != "function") + throw a1('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); + I = gt.TRUSTED_TYPES_POLICY, w = I.createHTML(""); + } else + I === void 0 && (I = RDt(y, i)), I !== null && typeof w == "string" && (w = I.createHTML("")); + ju && ju(gt), Lt = gt; + } + }, nr = va({}, ["mi", "mo", "mn", "ms", "mtext"]), Ht = va({}, ["foreignobject", "desc", "title", "annotation-xml"]), wn = va({}, ["title", "style", "font", "a", "script"]), On = va({}, [...H4, ...W4, ...yDt]), or = va({}, [...G4, ..._Dt]), Pt = function(gt) { + let Xt = E(gt); + (!Xt || !Xt.tagName) && (Xt = { + namespaceURI: Fr, + tagName: "template" + }); + const Wt = QN(gt.tagName), zr = QN(Xt.tagName); + return hn[gt.namespaceURI] ? gt.namespaceURI === hr ? Xt.namespaceURI === Er ? Wt === "svg" : Xt.namespaceURI === Ct ? Wt === "svg" && (zr === "annotation-xml" || nr[zr]) : !!On[Wt] : gt.namespaceURI === Ct ? Xt.namespaceURI === Er ? Wt === "math" : Xt.namespaceURI === hr ? Wt === "math" && Ht[zr] : !!or[Wt] : gt.namespaceURI === Er ? Xt.namespaceURI === hr && !Ht[zr] || Xt.namespaceURI === Ct && !nr[zr] ? !1 : !or[Wt] && (wn[Wt] || !On[Wt]) : !!(nn === "application/xhtml+xml" && hn[gt.namespaceURI]) : !1; + }, Qr = function(gt) { + n1(t.removed, { + element: gt + }); + try { + gt.parentNode.removeChild(gt); + } catch (Xt) { + gt.remove(); + } + }, Bn = function(gt, Xt) { + try { + n1(t.removed, { + attribute: Xt.getAttributeNode(gt), + from: Xt + }); + } catch (Wt) { + n1(t.removed, { + attribute: null, + from: Xt + }); + } + if (Xt.removeAttribute(gt), gt === "is" && !be[gt]) + if ($e || lt) + try { + Qr(Xt); + } catch (Wt) { + } + else + try { + Xt.setAttribute(gt, ""); + } catch (Wt) { + } + }, Un = function(gt) { + let Xt = null, Wt = null; + if (Fe) + gt = "" + gt; + else { + const vn = Dfe(gt, /^[\r\n\t ]+/); + Wt = vn && vn[0]; + } + nn === "application/xhtml+xml" && Fr === Er && (gt = '' + gt + ""); + const zr = I ? I.createHTML(gt) : gt; + if (Fr === Er) + try { + Xt = new v().parseFromString(zr, nn); + } catch (vn) { + } + if (!Xt || !Xt.documentElement) { + Xt = x.createDocument(Fr, "template", null); + try { + Xt.documentElement.innerHTML = Dn ? w : zr; + } catch (vn) { + } + } + const _r = Xt.body || Xt.documentElement; + return gt && Wt && _r.insertBefore(r.createTextNode(Wt), _r.childNodes[0] || null), Fr === Er ? M.call(Xt, Ie ? "html" : "body")[0] : Ie ? Xt.documentElement : _r; + }, Yn = function(gt) { + return b.call( + gt.ownerDocument || gt, + gt, + // eslint-disable-next-line no-bitwise + d.SHOW_ELEMENT | d.SHOW_COMMENT | d.SHOW_TEXT | d.SHOW_PROCESSING_INSTRUCTION | d.SHOW_CDATA_SECTION, + null + ); + }, fi = function(gt) { + return gt instanceof g && (typeof gt.nodeName != "string" || typeof gt.textContent != "string" || typeof gt.removeChild != "function" || !(gt.attributes instanceof f) || typeof gt.removeAttribute != "function" || typeof gt.setAttribute != "function" || typeof gt.namespaceURI != "string" || typeof gt.insertBefore != "function" || typeof gt.hasChildNodes != "function"); + }, xn = function(gt) { + return typeof l == "function" && gt instanceof l; + }, Or = function(gt, Xt, Wt) { + P[gt] && oN(P[gt], (zr) => { + zr.call(t, Xt, Wt, Lt); + }); + }, Dr = function(gt) { + let Xt = null; + if (Or("beforeSanitizeElements", gt, null), fi(gt)) + return Qr(gt), !0; + const Wt = zn(gt.nodeName); + if (Or("uponSanitizeElement", gt, { + tagName: Wt, + allowedTags: de + }), gt.hasChildNodes() && !xn(gt.firstElementChild) && yh(/<[/\w]/g, gt.innerHTML) && yh(/<[/\w]/g, gt.textContent) || gt.nodeType === 7 || He && gt.nodeType === 8 && yh(/<[/\w]/g, gt.data)) + return Qr(gt), !0; + if (!de[Wt] || Be[Wt]) { + if (!Be[Wt] && as(Wt) && (pe.tagNameCheck instanceof RegExp && yh(pe.tagNameCheck, Wt) || pe.tagNameCheck instanceof Function && pe.tagNameCheck(Wt))) + return !1; + if (Ke && !ct[Wt]) { + const zr = E(gt) || gt.parentNode, _r = _(gt) || gt.childNodes; + if (_r && zr) { + const vn = _r.length; + for (let Xe = vn - 1; Xe >= 0; --Xe) + zr.insertBefore(A(_r[Xe], !0), S(gt)); + } + } + return Qr(gt), !0; + } + return gt instanceof u && !Pt(gt) || (Wt === "noscript" || Wt === "noembed" || Wt === "noframes") && yh(/<\/no(script|embed|frames)/i, gt.innerHTML) ? (Qr(gt), !0) : (we && gt.nodeType === 3 && (Xt = gt.textContent, oN([B, H, Y], (zr) => { + Xt = i1(Xt, zr, " "); + }), gt.textContent !== Xt && (n1(t.removed, { + element: gt.cloneNode() + }), gt.textContent = Xt)), Or("afterSanitizeElements", gt, null), !1); + }, po = function(gt, Xt, Wt) { + if (nt && (Xt === "id" || Xt === "name") && (Wt in r || Wt in Ot)) + return !1; + if (!(Re && !Ue[Xt] && yh(X, Xt))) { + if (!(Qe && yh(ee, Xt))) { + if (!be[Xt] || Ue[Xt]) { + if ( + // First condition does a very basic check if a) it's basically a valid custom element tagname AND + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck + !(as(gt) && (pe.tagNameCheck instanceof RegExp && yh(pe.tagNameCheck, gt) || pe.tagNameCheck instanceof Function && pe.tagNameCheck(gt)) && (pe.attributeNameCheck instanceof RegExp && yh(pe.attributeNameCheck, Xt) || pe.attributeNameCheck instanceof Function && pe.attributeNameCheck(Xt)) || // Alternative, second condition checks if it's an `is`-attribute, AND + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck + Xt === "is" && pe.allowCustomizedBuiltInElements && (pe.tagNameCheck instanceof RegExp && yh(pe.tagNameCheck, Wt) || pe.tagNameCheck instanceof Function && pe.tagNameCheck(Wt))) + ) + return !1; + } else if (!Yt[Xt]) { + if (!yh(fe, i1(Wt, J, ""))) { + if (!((Xt === "src" || Xt === "xlink:href" || Xt === "href") && gt !== "script" && pDt(Wt, "data:") === 0 && _t[gt])) { + if (!(Ne && !yh(ae, i1(Wt, J, "")))) { + if (Wt) + return !1; + } + } + } + } + } + } + return !0; + }, as = function(gt) { + return gt !== "annotation-xml" && Dfe(gt, ne); + }, zo = function(gt) { + Or("beforeSanitizeAttributes", gt, null); + const { + attributes: Xt + } = gt; + if (!Xt) + return; + const Wt = { + attrName: "", + attrValue: "", + keepAttr: !0, + allowedAttributes: be + }; + let zr = Xt.length; + for (; zr--; ) { + const _r = Xt[zr], { + name: vn, + namespaceURI: Xe, + value: Tt + } = _r, Bt = zn(vn); + let Gt = vn === "value" ? Tt : gDt(Tt); + if (Wt.attrName = Bt, Wt.attrValue = Gt, Wt.keepAttr = !0, Wt.forceKeepAttr = void 0, Or("uponSanitizeAttribute", gt, Wt), Gt = Wt.attrValue, Wt.forceKeepAttr || (Bn(vn, gt), !Wt.keepAttr)) + continue; + if (!Me && yh(/\/>/i, Gt)) { + Bn(vn, gt); + continue; + } + we && oN([B, H, Y], (Ur) => { + Gt = i1(Gt, Ur, " "); + }); + const ur = zn(gt.nodeName); + if (po(ur, Bt, Gt)) { + if (ut && (Bt === "id" || Bt === "name") && (Bn(vn, gt), Gt = rt + Gt), I && typeof y == "object" && typeof y.getAttributeType == "function" && !Xe) + switch (y.getAttributeType(ur, Bt)) { + case "TrustedHTML": { + Gt = I.createHTML(Gt); + break; + } + case "TrustedScriptURL": { + Gt = I.createScriptURL(Gt); + break; + } + } + try { + Xe ? gt.setAttributeNS(Xe, vn, Gt) : gt.setAttribute(vn, Gt), Rfe(t.removed); + } catch (Ur) { + } + } + } + Or("afterSanitizeAttributes", gt, null); + }, Bs = function Cr(gt) { + let Xt = null; + const Wt = Yn(gt); + for (Or("beforeSanitizeShadowDOM", gt, null); Xt = Wt.nextNode(); ) + Or("uponSanitizeShadowNode", Xt, null), !Dr(Xt) && (Xt.content instanceof a && Cr(Xt.content), zo(Xt)); + Or("afterSanitizeShadowDOM", gt, null); + }; + return t.sanitize = function(Cr) { + let gt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, Xt = null, Wt = null, zr = null, _r = null; + if (Dn = !Cr, Dn && (Cr = ""), typeof Cr != "string" && !xn(Cr)) + if (typeof Cr.toString == "function") { + if (Cr = Cr.toString(), typeof Cr != "string") + throw a1("dirty is not a string, aborting"); + } else + throw a1("toString is not a function"); + if (!t.isSupported) + return Cr; + if (Ae || jt(gt), t.removed = [], typeof Cr == "string" && (ze = !1), ze) { + if (Cr.nodeName) { + const Tt = zn(Cr.nodeName); + if (!de[Tt] || Be[Tt]) + throw a1("root node is forbidden and cannot be sanitized in-place"); + } + } else if (Cr instanceof l) + Xt = Un(""), Wt = Xt.ownerDocument.importNode(Cr, !0), Wt.nodeType === 1 && Wt.nodeName === "BODY" || Wt.nodeName === "HTML" ? Xt = Wt : Xt.appendChild(Wt); + else { + if (!$e && !we && !Ie && // eslint-disable-next-line unicorn/prefer-includes + Cr.indexOf("<") === -1) + return I && it ? I.createHTML(Cr) : Cr; + if (Xt = Un(Cr), !Xt) + return $e ? null : it ? w : ""; + } + Xt && Fe && Qr(Xt.firstChild); + const vn = Yn(ze ? Cr : Xt); + for (; zr = vn.nextNode(); ) + Dr(zr) || (zr.content instanceof a && Bs(zr.content), zo(zr)); + if (ze) + return Cr; + if ($e) { + if (lt) + for (_r = R.call(Xt.ownerDocument); Xt.firstChild; ) + _r.appendChild(Xt.firstChild); + else + _r = Xt; + return (be.shadowroot || be.shadowrootmode) && (_r = O.call(n, _r, !0)), _r; + } + let Xe = Ie ? Xt.outerHTML : Xt.innerHTML; + return Ie && de["!doctype"] && Xt.ownerDocument && Xt.ownerDocument.doctype && Xt.ownerDocument.doctype.name && yh(hAe, Xt.ownerDocument.doctype.name) && (Xe = " +` + Xe), we && oN([B, H, Y], (Tt) => { + Xe = i1(Xe, Tt, " "); + }), I && it ? I.createHTML(Xe) : Xe; + }, t.setConfig = function() { + let Cr = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + jt(Cr), Ae = !0; + }, t.clearConfig = function() { + Lt = null, Ae = !1; + }, t.isValidAttribute = function(Cr, gt, Xt) { + Lt || jt({}); + const Wt = zn(Cr), zr = zn(gt); + return po(Wt, zr, Xt); + }, t.addHook = function(Cr, gt) { + typeof gt == "function" && (P[Cr] = P[Cr] || [], n1(P[Cr], gt)); + }, t.removeHook = function(Cr) { + if (P[Cr]) + return Rfe(P[Cr]); + }, t.removeHooks = function(Cr) { + P[Cr] && (P[Cr] = []); + }, t.removeAllHooks = function() { + P = {}; + }, t; +} +var iI = dAe(); +const eL = { + /* CLAMP */ + min: { + r: 0, + g: 0, + b: 0, + s: 0, + l: 0, + a: 0 + }, + max: { + r: 255, + g: 255, + b: 255, + h: 360, + s: 100, + l: 100, + a: 1 + }, + clamp: { + r: (e) => e >= 255 ? 255 : e < 0 ? 0 : e, + g: (e) => e >= 255 ? 255 : e < 0 ? 0 : e, + b: (e) => e >= 255 ? 255 : e < 0 ? 0 : e, + h: (e) => e % 360, + s: (e) => e >= 100 ? 100 : e < 0 ? 0 : e, + l: (e) => e >= 100 ? 100 : e < 0 ? 0 : e, + a: (e) => e >= 1 ? 1 : e < 0 ? 0 : e + }, + /* CONVERSION */ + //SOURCE: https://planetcalc.com/7779 + toLinear: (e) => { + const t = e / 255; + return e > 0.03928 ? Math.pow((t + 0.055) / 1.055, 2.4) : t / 12.92; + }, + //SOURCE: https://gist.github.com/mjackson/5311256 + hue2rgb: (e, t, r) => (r < 0 && (r += 1), r > 1 && (r -= 1), r < 1 / 6 ? e + (t - e) * 6 * r : r < 1 / 2 ? t : r < 2 / 3 ? e + (t - e) * (2 / 3 - r) * 6 : e), + hsl2rgb: ({ h: e, s: t, l: r }, n) => { + if (!t) + return r * 2.55; + e /= 360, t /= 100, r /= 100; + const i = r < 0.5 ? r * (1 + t) : r + t - r * t, a = 2 * r - i; + switch (n) { + case "r": + return eL.hue2rgb(a, i, e + 1 / 3) * 255; + case "g": + return eL.hue2rgb(a, i, e) * 255; + case "b": + return eL.hue2rgb(a, i, e - 1 / 3) * 255; + } + }, + rgb2hsl: ({ r: e, g: t, b: r }, n) => { + e /= 255, t /= 255, r /= 255; + const i = Math.max(e, t, r), a = Math.min(e, t, r), o = (i + a) / 2; + if (n === "l") + return o * 100; + if (i === a) + return 0; + const l = i - a, u = o > 0.5 ? l / (2 - i - a) : l / (i + a); + if (n === "s") + return u * 100; + switch (i) { + case e: + return ((t - r) / l + (t < r ? 6 : 0)) * 60; + case t: + return ((r - e) / l + 2) * 60; + case r: + return ((e - t) / l + 4) * 60; + default: + return -1; + } + } +}, DDt = eL, ODt = { + /* API */ + clamp: (e, t, r) => t > r ? Math.min(t, Math.max(r, e)) : Math.min(r, Math.max(t, e)), + round: (e) => Math.round(e * 1e10) / 1e10 +}, MDt = ODt, kDt = { + /* API */ + dec2hex: (e) => { + const t = Math.round(e).toString(16); + return t.length > 1 ? t : `0${t}`; + } +}, PDt = kDt, NDt = { + channel: DDt, + lang: MDt, + unit: PDt +}, Ti = NDt, z_ = {}; +for (let e = 0; e <= 255; e++) + z_[e] = Ti.unit.dec2hex(e); +const Hc = { + ALL: 0, + RGB: 1, + HSL: 2 +}; +class LDt { + constructor() { + this.type = Hc.ALL; + } + /* API */ + get() { + return this.type; + } + set(t) { + if (this.type && this.type !== t) + throw new Error("Cannot change both RGB and HSL channels at the same time"); + this.type = t; + } + reset() { + this.type = Hc.ALL; + } + is(t) { + return this.type === t; + } +} +const FDt = LDt; +class BDt { + /* CONSTRUCTOR */ + constructor(t, r) { + this.color = r, this.changed = !1, this.data = t, this.type = new FDt(); + } + /* API */ + set(t, r) { + return this.color = r, this.changed = !1, this.data = t, this.type.type = Hc.ALL, this; + } + /* HELPERS */ + _ensureHSL() { + const t = this.data, { h: r, s: n, l: i } = t; + r === void 0 && (t.h = Ti.channel.rgb2hsl(t, "h")), n === void 0 && (t.s = Ti.channel.rgb2hsl(t, "s")), i === void 0 && (t.l = Ti.channel.rgb2hsl(t, "l")); + } + _ensureRGB() { + const t = this.data, { r, g: n, b: i } = t; + r === void 0 && (t.r = Ti.channel.hsl2rgb(t, "r")), n === void 0 && (t.g = Ti.channel.hsl2rgb(t, "g")), i === void 0 && (t.b = Ti.channel.hsl2rgb(t, "b")); + } + /* GETTERS */ + get r() { + const t = this.data, r = t.r; + return !this.type.is(Hc.HSL) && r !== void 0 ? r : (this._ensureHSL(), Ti.channel.hsl2rgb(t, "r")); + } + get g() { + const t = this.data, r = t.g; + return !this.type.is(Hc.HSL) && r !== void 0 ? r : (this._ensureHSL(), Ti.channel.hsl2rgb(t, "g")); + } + get b() { + const t = this.data, r = t.b; + return !this.type.is(Hc.HSL) && r !== void 0 ? r : (this._ensureHSL(), Ti.channel.hsl2rgb(t, "b")); + } + get h() { + const t = this.data, r = t.h; + return !this.type.is(Hc.RGB) && r !== void 0 ? r : (this._ensureRGB(), Ti.channel.rgb2hsl(t, "h")); + } + get s() { + const t = this.data, r = t.s; + return !this.type.is(Hc.RGB) && r !== void 0 ? r : (this._ensureRGB(), Ti.channel.rgb2hsl(t, "s")); + } + get l() { + const t = this.data, r = t.l; + return !this.type.is(Hc.RGB) && r !== void 0 ? r : (this._ensureRGB(), Ti.channel.rgb2hsl(t, "l")); + } + get a() { + return this.data.a; + } + /* SETTERS */ + set r(t) { + this.type.set(Hc.RGB), this.changed = !0, this.data.r = t; + } + set g(t) { + this.type.set(Hc.RGB), this.changed = !0, this.data.g = t; + } + set b(t) { + this.type.set(Hc.RGB), this.changed = !0, this.data.b = t; + } + set h(t) { + this.type.set(Hc.HSL), this.changed = !0, this.data.h = t; + } + set s(t) { + this.type.set(Hc.HSL), this.changed = !0, this.data.s = t; + } + set l(t) { + this.type.set(Hc.HSL), this.changed = !0, this.data.l = t; + } + set a(t) { + this.changed = !0, this.data.a = t; + } +} +const UDt = BDt, jDt = new UDt({ r: 0, g: 0, b: 0, a: 0 }, "transparent"), KB = jDt, fAe = { + /* VARIABLES */ + re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i, + /* API */ + parse: (e) => { + if (e.charCodeAt(0) !== 35) + return; + const t = e.match(fAe.re); + if (!t) + return; + const r = t[1], n = parseInt(r, 16), i = r.length, a = i % 4 === 0, o = i > 4, l = o ? 1 : 17, u = o ? 8 : 4, d = a ? 0 : -1, f = o ? 255 : 15; + return KB.set({ + r: (n >> u * (d + 3) & f) * l, + g: (n >> u * (d + 2) & f) * l, + b: (n >> u * (d + 1) & f) * l, + a: a ? (n & f) * l / 255 : 1 + }, e); + }, + stringify: (e) => { + const { r: t, g: r, b: n, a: i } = e; + return i < 1 ? `#${z_[Math.round(t)]}${z_[Math.round(r)]}${z_[Math.round(n)]}${z_[Math.round(i * 255)]}` : `#${z_[Math.round(t)]}${z_[Math.round(r)]}${z_[Math.round(n)]}`; + } +}, X1 = fAe, tL = { + /* VARIABLES */ + re: /^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i, + hueRe: /^(.+?)(deg|grad|rad|turn)$/i, + /* HELPERS */ + _hue2deg: (e) => { + const t = e.match(tL.hueRe); + if (t) { + const [, r, n] = t; + switch (n) { + case "grad": + return Ti.channel.clamp.h(parseFloat(r) * 0.9); + case "rad": + return Ti.channel.clamp.h(parseFloat(r) * 180 / Math.PI); + case "turn": + return Ti.channel.clamp.h(parseFloat(r) * 360); + } + } + return Ti.channel.clamp.h(parseFloat(e)); + }, + /* API */ + parse: (e) => { + const t = e.charCodeAt(0); + if (t !== 104 && t !== 72) + return; + const r = e.match(tL.re); + if (!r) + return; + const [, n, i, a, o, l] = r; + return KB.set({ + h: tL._hue2deg(n), + s: Ti.channel.clamp.s(parseFloat(i)), + l: Ti.channel.clamp.l(parseFloat(a)), + a: o ? Ti.channel.clamp.a(l ? parseFloat(o) / 100 : parseFloat(o)) : 1 + }, e); + }, + stringify: (e) => { + const { h: t, s: r, l: n, a: i } = e; + return i < 1 ? `hsla(${Ti.lang.round(t)}, ${Ti.lang.round(r)}%, ${Ti.lang.round(n)}%, ${i})` : `hsl(${Ti.lang.round(t)}, ${Ti.lang.round(r)}%, ${Ti.lang.round(n)}%)`; + } +}, cN = tL, rL = { + /* VARIABLES */ + colors: { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000000", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyanaqua: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + gold: "#ffd700", + goldenrod: "#daa520", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + lavender: "#e6e6fa", + lavenderblush: "#fff0f5", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + rebeccapurple: "#663399", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + transparent: "#00000000", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00", + yellowgreen: "#9acd32" + }, + /* API */ + parse: (e) => { + e = e.toLowerCase(); + const t = rL.colors[e]; + if (t) + return X1.parse(t); + }, + stringify: (e) => { + const t = X1.stringify(e); + for (const r in rL.colors) + if (rL.colors[r] === t) + return r; + } +}, Lfe = rL, pAe = { + /* VARIABLES */ + re: /^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i, + /* API */ + parse: (e) => { + const t = e.charCodeAt(0); + if (t !== 114 && t !== 82) + return; + const r = e.match(pAe.re); + if (!r) + return; + const [, n, i, a, o, l, u, d, f] = r; + return KB.set({ + r: Ti.channel.clamp.r(i ? parseFloat(n) * 2.55 : parseFloat(n)), + g: Ti.channel.clamp.g(o ? parseFloat(a) * 2.55 : parseFloat(a)), + b: Ti.channel.clamp.b(u ? parseFloat(l) * 2.55 : parseFloat(l)), + a: d ? Ti.channel.clamp.a(f ? parseFloat(d) / 100 : parseFloat(d)) : 1 + }, e); + }, + stringify: (e) => { + const { r: t, g: r, b: n, a: i } = e; + return i < 1 ? `rgba(${Ti.lang.round(t)}, ${Ti.lang.round(r)}, ${Ti.lang.round(n)}, ${Ti.lang.round(i)})` : `rgb(${Ti.lang.round(t)}, ${Ti.lang.round(r)}, ${Ti.lang.round(n)})`; + } +}, uN = pAe, $Dt = { + /* VARIABLES */ + format: { + keyword: Lfe, + hex: X1, + rgb: uN, + rgba: uN, + hsl: cN, + hsla: cN + }, + /* API */ + parse: (e) => { + if (typeof e != "string") + return e; + const t = X1.parse(e) || uN.parse(e) || cN.parse(e) || Lfe.parse(e); + if (t) + return t; + throw new Error(`Unsupported color format: "${e}"`); + }, + stringify: (e) => !e.changed && e.color ? e.color : e.type.is(Hc.HSL) || e.data.r === void 0 ? cN.stringify(e) : e.a < 1 || !Number.isInteger(e.r) || !Number.isInteger(e.g) || !Number.isInteger(e.b) ? uN.stringify(e) : X1.stringify(e) +}, uv = $Dt, VDt = (e, t) => { + const r = uv.parse(e); + for (const n in t) + r[n] = Ti.channel.clamp[n](t[n]); + return uv.stringify(r); +}, gAe = VDt, zDt = (e, t, r = 0, n = 1) => { + if (typeof e != "number") + return gAe(e, { a: t }); + const i = KB.set({ + r: Ti.channel.clamp.r(e), + g: Ti.channel.clamp.g(t), + b: Ti.channel.clamp.b(r), + a: Ti.channel.clamp.a(n) + }); + return uv.stringify(i); +}, K1 = zDt, HDt = (e) => { + const { r: t, g: r, b: n } = uv.parse(e), i = 0.2126 * Ti.channel.toLinear(t) + 0.7152 * Ti.channel.toLinear(r) + 0.0722 * Ti.channel.toLinear(n); + return Ti.lang.round(i); +}, WDt = HDt, GDt = (e) => WDt(e) >= 0.5, YDt = GDt, XDt = (e) => !YDt(e), aO = XDt, KDt = (e, t, r) => { + const n = uv.parse(e), i = n[t], a = Ti.channel.clamp[t](i + r); + return i !== a && (n[t] = a), uv.stringify(n); +}, vAe = KDt, ZDt = (e, t) => vAe(e, "l", t), Zn = ZDt, qDt = (e, t) => vAe(e, "l", -t), ui = qDt, JDt = (e, t) => { + const r = uv.parse(e), n = {}; + for (const i in t) + t[i] && (n[i] = r[i] + t[i]); + return gAe(e, n); +}, kt = JDt, QDt = (e, t, r = 50) => { + const { r: n, g: i, b: a, a: o } = uv.parse(e), { r: l, g: u, b: d, a: f } = uv.parse(t), g = r / 100, v = g * 2 - 1, y = o - f, A = ((v * y === -1 ? v : (v + y) / (1 + v * y)) + 1) / 2, S = 1 - A, _ = n * A + l * S, E = i * A + u * S, I = a * A + d * S, w = o * g + f * (1 - g); + return K1(_, E, I, w); +}, eOt = QDt, tOt = (e, t = 100) => { + const r = uv.parse(e); + return r.r = 255 - r.r, r.g = 255 - r.g, r.b = 255 - r.b, eOt(r, e, t); +}, Hr = tOt; +var rOt = typeof global == "object" && global && global.Object === Object && global; +const mAe = rOt; +var nOt = typeof self == "object" && self && self.Object === Object && self, iOt = mAe || nOt || Function("return this")(); +const mv = iOt; +var aOt = mv.Symbol; +const z2 = aOt; +var yAe = Object.prototype, oOt = yAe.hasOwnProperty, sOt = yAe.toString, o1 = z2 ? z2.toStringTag : void 0; +function lOt(e) { + var t = oOt.call(e, o1), r = e[o1]; + try { + e[o1] = void 0; + var n = !0; + } catch (a) { + } + var i = sOt.call(e); + return n && (t ? e[o1] = r : delete e[o1]), i; +} +var cOt = Object.prototype, uOt = cOt.toString; +function hOt(e) { + return uOt.call(e); +} +var dOt = "[object Null]", fOt = "[object Undefined]", Ffe = z2 ? z2.toStringTag : void 0; +function jI(e) { + return e == null ? e === void 0 ? fOt : dOt : Ffe && Ffe in Object(e) ? lOt(e) : hOt(e); +} +function VE(e) { + var t = typeof e; + return e != null && (t == "object" || t == "function"); +} +var pOt = "[object AsyncFunction]", gOt = "[object Function]", vOt = "[object GeneratorFunction]", mOt = "[object Proxy]"; +function hX(e) { + if (!VE(e)) + return !1; + var t = jI(e); + return t == gOt || t == vOt || t == pOt || t == mOt; +} +var yOt = mv["__core-js_shared__"]; +const X4 = yOt; +var Bfe = function() { + var e = /[^.]+$/.exec(X4 && X4.keys && X4.keys.IE_PROTO || ""); + return e ? "Symbol(src)_1." + e : ""; +}(); +function _Ot(e) { + return !!Bfe && Bfe in e; +} +var SOt = Function.prototype, bOt = SOt.toString; +function zE(e) { + if (e != null) { + try { + return bOt.call(e); + } catch (t) { + } + try { + return e + ""; + } catch (t) { + } + } + return ""; +} +var EOt = /[\\^$.*+?()[\]{}|]/g, COt = /^\[object .+?Constructor\]$/, TOt = Function.prototype, wOt = Object.prototype, IOt = TOt.toString, xOt = wOt.hasOwnProperty, AOt = RegExp( + "^" + IOt.call(xOt).replace(EOt, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" +); +function ROt(e) { + if (!VE(e) || _Ot(e)) + return !1; + var t = hX(e) ? AOt : COt; + return t.test(zE(e)); +} +function DOt(e, t) { + return e == null ? void 0 : e[t]; +} +function HE(e, t) { + var r = DOt(e, t); + return ROt(r) ? r : void 0; +} +var OOt = HE(Object, "create"); +const nD = OOt; +function MOt() { + this.__data__ = nD ? nD(null) : {}, this.size = 0; +} +function kOt(e) { + var t = this.has(e) && delete this.__data__[e]; + return this.size -= t ? 1 : 0, t; +} +var POt = "__lodash_hash_undefined__", NOt = Object.prototype, LOt = NOt.hasOwnProperty; +function FOt(e) { + var t = this.__data__; + if (nD) { + var r = t[e]; + return r === POt ? void 0 : r; + } + return LOt.call(t, e) ? t[e] : void 0; +} +var BOt = Object.prototype, UOt = BOt.hasOwnProperty; +function jOt(e) { + var t = this.__data__; + return nD ? t[e] !== void 0 : UOt.call(t, e); +} +var $Ot = "__lodash_hash_undefined__"; +function VOt(e, t) { + var r = this.__data__; + return this.size += this.has(e) ? 0 : 1, r[e] = nD && t === void 0 ? $Ot : t, this; +} +function IE(e) { + var t = -1, r = e == null ? 0 : e.length; + for (this.clear(); ++t < r; ) { + var n = e[t]; + this.set(n[0], n[1]); + } +} +IE.prototype.clear = MOt; +IE.prototype.delete = kOt; +IE.prototype.get = FOt; +IE.prototype.has = jOt; +IE.prototype.set = VOt; +function zOt() { + this.__data__ = [], this.size = 0; +} +function ZB(e, t) { + return e === t || e !== e && t !== t; +} +function qB(e, t) { + for (var r = e.length; r--; ) + if (ZB(e[r][0], t)) + return r; + return -1; +} +var HOt = Array.prototype, WOt = HOt.splice; +function GOt(e) { + var t = this.__data__, r = qB(t, e); + if (r < 0) + return !1; + var n = t.length - 1; + return r == n ? t.pop() : WOt.call(t, r, 1), --this.size, !0; +} +function YOt(e) { + var t = this.__data__, r = qB(t, e); + return r < 0 ? void 0 : t[r][1]; +} +function XOt(e) { + return qB(this.__data__, e) > -1; +} +function KOt(e, t) { + var r = this.__data__, n = qB(r, e); + return n < 0 ? (++this.size, r.push([e, t])) : r[n][1] = t, this; +} +function sy(e) { + var t = -1, r = e == null ? 0 : e.length; + for (this.clear(); ++t < r; ) { + var n = e[t]; + this.set(n[0], n[1]); + } +} +sy.prototype.clear = zOt; +sy.prototype.delete = GOt; +sy.prototype.get = YOt; +sy.prototype.has = XOt; +sy.prototype.set = KOt; +var ZOt = HE(mv, "Map"); +const iD = ZOt; +function qOt() { + this.size = 0, this.__data__ = { + hash: new IE(), + map: new (iD || sy)(), + string: new IE() + }; +} +function JOt(e) { + var t = typeof e; + return t == "string" || t == "number" || t == "symbol" || t == "boolean" ? e !== "__proto__" : e === null; +} +function JB(e, t) { + var r = e.__data__; + return JOt(t) ? r[typeof t == "string" ? "string" : "hash"] : r.map; +} +function QOt(e) { + var t = JB(this, e).delete(e); + return this.size -= t ? 1 : 0, t; +} +function eMt(e) { + return JB(this, e).get(e); +} +function tMt(e) { + return JB(this, e).has(e); +} +function rMt(e, t) { + var r = JB(this, e), n = r.size; + return r.set(e, t), this.size += r.size == n ? 0 : 1, this; +} +function F0(e) { + var t = -1, r = e == null ? 0 : e.length; + for (this.clear(); ++t < r; ) { + var n = e[t]; + this.set(n[0], n[1]); + } +} +F0.prototype.clear = qOt; +F0.prototype.delete = QOt; +F0.prototype.get = eMt; +F0.prototype.has = tMt; +F0.prototype.set = rMt; +var nMt = "Expected a function"; +function oO(e, t) { + if (typeof e != "function" || t != null && typeof t != "function") + throw new TypeError(nMt); + var r = function() { + var n = arguments, i = t ? t.apply(this, n) : n[0], a = r.cache; + if (a.has(i)) + return a.get(i); + var o = e.apply(this, n); + return r.cache = a.set(i, o) || a, o; + }; + return r.cache = new (oO.Cache || F0)(), r; +} +oO.Cache = F0; +function iMt() { + this.__data__ = new sy(), this.size = 0; +} +function aMt(e) { + var t = this.__data__, r = t.delete(e); + return this.size = t.size, r; +} +function oMt(e) { + return this.__data__.get(e); +} +function sMt(e) { + return this.__data__.has(e); +} +var lMt = 200; +function cMt(e, t) { + var r = this.__data__; + if (r instanceof sy) { + var n = r.__data__; + if (!iD || n.length < lMt - 1) + return n.push([e, t]), this.size = ++r.size, this; + r = this.__data__ = new F0(n); + } + return r.set(e, t), this.size = r.size, this; +} +function $I(e) { + var t = this.__data__ = new sy(e); + this.size = t.size; +} +$I.prototype.clear = iMt; +$I.prototype.delete = aMt; +$I.prototype.get = oMt; +$I.prototype.has = sMt; +$I.prototype.set = cMt; +var uMt = function() { + try { + var e = HE(Object, "defineProperty"); + return e({}, "", {}), e; + } catch (t) { + } +}(); +const H2 = uMt; +function dX(e, t, r) { + t == "__proto__" && H2 ? H2(e, t, { + configurable: !0, + enumerable: !0, + value: r, + writable: !0 + }) : e[t] = r; +} +function D6(e, t, r) { + (r !== void 0 && !ZB(e[t], r) || r === void 0 && !(t in e)) && dX(e, t, r); +} +function hMt(e) { + return function(t, r, n) { + for (var i = -1, a = Object(t), o = n(t), l = o.length; l--; ) { + var u = o[e ? l : ++i]; + if (r(a[u], u, a) === !1) + break; + } + return t; + }; +} +var dMt = hMt(); +const fMt = dMt; +var _Ae = typeof exports == "object" && exports && !exports.nodeType && exports, Ufe = _Ae && typeof module == "object" && module && !module.nodeType && module, pMt = Ufe && Ufe.exports === _Ae, jfe = pMt ? mv.Buffer : void 0, $fe = jfe ? jfe.allocUnsafe : void 0; +function gMt(e, t) { + if (t) + return e.slice(); + var r = e.length, n = $fe ? $fe(r) : new e.constructor(r); + return e.copy(n), n; +} +var vMt = mv.Uint8Array; +const Vfe = vMt; +function mMt(e) { + var t = new e.constructor(e.byteLength); + return new Vfe(t).set(new Vfe(e)), t; +} +function yMt(e, t) { + var r = t ? mMt(e.buffer) : e.buffer; + return new e.constructor(r, e.byteOffset, e.length); +} +function _Mt(e, t) { + var r = -1, n = e.length; + for (t || (t = Array(n)); ++r < n; ) + t[r] = e[r]; + return t; +} +var zfe = Object.create, SMt = function() { + function e() { + } + return function(t) { + if (!VE(t)) + return {}; + if (zfe) + return zfe(t); + e.prototype = t; + var r = new e(); + return e.prototype = void 0, r; + }; +}(); +const bMt = SMt; +function SAe(e, t) { + return function(r) { + return e(t(r)); + }; +} +var EMt = SAe(Object.getPrototypeOf, Object); +const bAe = EMt; +var CMt = Object.prototype; +function QB(e) { + var t = e && e.constructor, r = typeof t == "function" && t.prototype || CMt; + return e === r; +} +function TMt(e) { + return typeof e.constructor == "function" && !QB(e) ? bMt(bAe(e)) : {}; +} +function sO(e) { + return e != null && typeof e == "object"; +} +var wMt = "[object Arguments]"; +function Hfe(e) { + return sO(e) && jI(e) == wMt; +} +var EAe = Object.prototype, IMt = EAe.hasOwnProperty, xMt = EAe.propertyIsEnumerable, AMt = Hfe(function() { + return arguments; +}()) ? Hfe : function(e) { + return sO(e) && IMt.call(e, "callee") && !xMt.call(e, "callee"); +}; +const W2 = AMt; +var RMt = Array.isArray; +const G2 = RMt; +var DMt = 9007199254740991; +function CAe(e) { + return typeof e == "number" && e > -1 && e % 1 == 0 && e <= DMt; +} +function eU(e) { + return e != null && CAe(e.length) && !hX(e); +} +function OMt(e) { + return sO(e) && eU(e); +} +function MMt() { + return !1; +} +var TAe = typeof exports == "object" && exports && !exports.nodeType && exports, Wfe = TAe && typeof module == "object" && module && !module.nodeType && module, kMt = Wfe && Wfe.exports === TAe, Gfe = kMt ? mv.Buffer : void 0, PMt = Gfe ? Gfe.isBuffer : void 0, NMt = PMt || MMt; +const fX = NMt; +var LMt = "[object Object]", FMt = Function.prototype, BMt = Object.prototype, wAe = FMt.toString, UMt = BMt.hasOwnProperty, jMt = wAe.call(Object); +function $Mt(e) { + if (!sO(e) || jI(e) != LMt) + return !1; + var t = bAe(e); + if (t === null) + return !0; + var r = UMt.call(t, "constructor") && t.constructor; + return typeof r == "function" && r instanceof r && wAe.call(r) == jMt; +} +var VMt = "[object Arguments]", zMt = "[object Array]", HMt = "[object Boolean]", WMt = "[object Date]", GMt = "[object Error]", YMt = "[object Function]", XMt = "[object Map]", KMt = "[object Number]", ZMt = "[object Object]", qMt = "[object RegExp]", JMt = "[object Set]", QMt = "[object String]", ekt = "[object WeakMap]", tkt = "[object ArrayBuffer]", rkt = "[object DataView]", nkt = "[object Float32Array]", ikt = "[object Float64Array]", akt = "[object Int8Array]", okt = "[object Int16Array]", skt = "[object Int32Array]", lkt = "[object Uint8Array]", ckt = "[object Uint8ClampedArray]", ukt = "[object Uint16Array]", hkt = "[object Uint32Array]", ps = {}; +ps[nkt] = ps[ikt] = ps[akt] = ps[okt] = ps[skt] = ps[lkt] = ps[ckt] = ps[ukt] = ps[hkt] = !0; +ps[VMt] = ps[zMt] = ps[tkt] = ps[HMt] = ps[rkt] = ps[WMt] = ps[GMt] = ps[YMt] = ps[XMt] = ps[KMt] = ps[ZMt] = ps[qMt] = ps[JMt] = ps[QMt] = ps[ekt] = !1; +function dkt(e) { + return sO(e) && CAe(e.length) && !!ps[jI(e)]; +} +function fkt(e) { + return function(t) { + return e(t); + }; +} +var IAe = typeof exports == "object" && exports && !exports.nodeType && exports, Z1 = IAe && typeof module == "object" && module && !module.nodeType && module, pkt = Z1 && Z1.exports === IAe, K4 = pkt && mAe.process, gkt = function() { + try { + var e = Z1 && Z1.require && Z1.require("util").types; + return e || K4 && K4.binding && K4.binding("util"); + } catch (t) { + } +}(); +const Yfe = gkt; +var Xfe = Yfe && Yfe.isTypedArray, vkt = Xfe ? fkt(Xfe) : dkt; +const pX = vkt; +function O6(e, t) { + if (!(t === "constructor" && typeof e[t] == "function") && t != "__proto__") + return e[t]; +} +var mkt = Object.prototype, ykt = mkt.hasOwnProperty; +function _kt(e, t, r) { + var n = e[t]; + (!(ykt.call(e, t) && ZB(n, r)) || r === void 0 && !(t in e)) && dX(e, t, r); +} +function Skt(e, t, r, n) { + var i = !r; + r || (r = {}); + for (var a = -1, o = t.length; ++a < o; ) { + var l = t[a], u = n ? n(r[l], e[l], l, r, e) : void 0; + u === void 0 && (u = e[l]), i ? dX(r, l, u) : _kt(r, l, u); + } + return r; +} +function bkt(e, t) { + for (var r = -1, n = Array(e); ++r < e; ) + n[r] = t(r); + return n; +} +var Ekt = 9007199254740991, Ckt = /^(?:0|[1-9]\d*)$/; +function xAe(e, t) { + var r = typeof e; + return t = t == null ? Ekt : t, !!t && (r == "number" || r != "symbol" && Ckt.test(e)) && e > -1 && e % 1 == 0 && e < t; +} +var Tkt = Object.prototype, wkt = Tkt.hasOwnProperty; +function Ikt(e, t) { + var r = G2(e), n = !r && W2(e), i = !r && !n && fX(e), a = !r && !n && !i && pX(e), o = r || n || i || a, l = o ? bkt(e.length, String) : [], u = l.length; + for (var d in e) + (t || wkt.call(e, d)) && !(o && // Safari 9 has enumerable `arguments.length` in strict mode. + (d == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. + i && (d == "offset" || d == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. + a && (d == "buffer" || d == "byteLength" || d == "byteOffset") || // Skip index properties. + xAe(d, u))) && l.push(d); + return l; +} +function xkt(e) { + var t = []; + if (e != null) + for (var r in Object(e)) + t.push(r); + return t; +} +var Akt = Object.prototype, Rkt = Akt.hasOwnProperty; +function Dkt(e) { + if (!VE(e)) + return xkt(e); + var t = QB(e), r = []; + for (var n in e) + n == "constructor" && (t || !Rkt.call(e, n)) || r.push(n); + return r; +} +function AAe(e) { + return eU(e) ? Ikt(e, !0) : Dkt(e); +} +function Okt(e) { + return Skt(e, AAe(e)); +} +function Mkt(e, t, r, n, i, a, o) { + var l = O6(e, r), u = O6(t, r), d = o.get(u); + if (d) { + D6(e, r, d); + return; + } + var f = a ? a(l, u, r + "", e, t, o) : void 0, g = f === void 0; + if (g) { + var v = G2(u), y = !v && fX(u), C = !v && !y && pX(u); + f = u, v || y || C ? G2(l) ? f = l : OMt(l) ? f = _Mt(l) : y ? (g = !1, f = gMt(u, !0)) : C ? (g = !1, f = yMt(u, !0)) : f = [] : $Mt(u) || W2(u) ? (f = l, W2(l) ? f = Okt(l) : (!VE(l) || hX(l)) && (f = TMt(u))) : g = !1; + } + g && (o.set(u, f), i(f, u, n, a, o), o.delete(u)), D6(e, r, f); +} +function RAe(e, t, r, n, i) { + e !== t && fMt(t, function(a, o) { + if (i || (i = new $I()), VE(a)) + Mkt(e, t, o, r, RAe, n, i); + else { + var l = n ? n(O6(e, o), a, o + "", e, t, i) : void 0; + l === void 0 && (l = a), D6(e, o, l); + } + }, AAe); +} +function DAe(e) { + return e; +} +function kkt(e, t, r) { + switch (r.length) { + case 0: + return e.call(t); + case 1: + return e.call(t, r[0]); + case 2: + return e.call(t, r[0], r[1]); + case 3: + return e.call(t, r[0], r[1], r[2]); + } + return e.apply(t, r); +} +var Kfe = Math.max; +function Pkt(e, t, r) { + return t = Kfe(t === void 0 ? e.length - 1 : t, 0), function() { + for (var n = arguments, i = -1, a = Kfe(n.length - t, 0), o = Array(a); ++i < a; ) + o[i] = n[t + i]; + i = -1; + for (var l = Array(t + 1); ++i < t; ) + l[i] = n[i]; + return l[t] = r(o), kkt(e, this, l); + }; +} +function Nkt(e) { + return function() { + return e; + }; +} +var Lkt = H2 ? function(e, t) { + return H2(e, "toString", { + configurable: !0, + enumerable: !1, + value: Nkt(t), + writable: !0 + }); +} : DAe; +const Fkt = Lkt; +var Bkt = 800, Ukt = 16, jkt = Date.now; +function $kt(e) { + var t = 0, r = 0; + return function() { + var n = jkt(), i = Ukt - (n - r); + if (r = n, i > 0) { + if (++t >= Bkt) + return arguments[0]; + } else + t = 0; + return e.apply(void 0, arguments); + }; +} +var Vkt = $kt(Fkt); +const zkt = Vkt; +function Hkt(e, t) { + return zkt(Pkt(e, t, DAe), e + ""); +} +function Wkt(e, t, r) { + if (!VE(r)) + return !1; + var n = typeof t; + return (n == "number" ? eU(r) && xAe(t, r.length) : n == "string" && t in r) ? ZB(r[t], e) : !1; +} +function Gkt(e) { + return Hkt(function(t, r) { + var n = -1, i = r.length, a = i > 1 ? r[i - 1] : void 0, o = i > 2 ? r[2] : void 0; + for (a = e.length > 3 && typeof a == "function" ? (i--, a) : void 0, o && Wkt(r[0], r[1], o) && (a = i < 3 ? void 0 : a, i = 1), t = Object(t); ++n < i; ) { + var l = r[n]; + l && e(t, l, n, a); + } + return t; + }); +} +var Ykt = Gkt(function(e, t, r) { + RAe(e, t, r); +}); +const Xkt = Ykt; +var Kkt = SAe(Object.keys, Object); +const Zkt = Kkt; +var qkt = Object.prototype, Jkt = qkt.hasOwnProperty; +function Qkt(e) { + if (!QB(e)) + return Zkt(e); + var t = []; + for (var r in Object(e)) + Jkt.call(e, r) && r != "constructor" && t.push(r); + return t; +} +var ePt = HE(mv, "DataView"); +const M6 = ePt; +var tPt = HE(mv, "Promise"); +const k6 = tPt; +var rPt = HE(mv, "Set"); +const P6 = rPt; +var nPt = HE(mv, "WeakMap"); +const N6 = nPt; +var Zfe = "[object Map]", iPt = "[object Object]", qfe = "[object Promise]", Jfe = "[object Set]", Qfe = "[object WeakMap]", epe = "[object DataView]", aPt = zE(M6), oPt = zE(iD), sPt = zE(k6), lPt = zE(P6), cPt = zE(N6), wb = jI; +(M6 && wb(new M6(new ArrayBuffer(1))) != epe || iD && wb(new iD()) != Zfe || k6 && wb(k6.resolve()) != qfe || P6 && wb(new P6()) != Jfe || N6 && wb(new N6()) != Qfe) && (wb = function(e) { + var t = jI(e), r = t == iPt ? e.constructor : void 0, n = r ? zE(r) : ""; + if (n) + switch (n) { + case aPt: + return epe; + case oPt: + return Zfe; + case sPt: + return qfe; + case lPt: + return Jfe; + case cPt: + return Qfe; + } + return t; +}); +const uPt = wb; +var hPt = "[object Map]", dPt = "[object Set]", fPt = Object.prototype, pPt = fPt.hasOwnProperty; +function Z4(e) { + if (e == null) + return !0; + if (eU(e) && (G2(e) || typeof e == "string" || typeof e.splice == "function" || fX(e) || pX(e) || W2(e))) + return !e.length; + var t = uPt(e); + if (t == hPt || t == dPt) + return !e.size; + if (QB(e)) + return !Qkt(e).length; + for (var r in e) + if (pPt.call(e, r)) + return !1; + return !0; +} +const wm = { + trace: 0, + debug: 1, + info: 2, + warn: 3, + error: 4, + fatal: 5 +}, li = { + trace: (...e) => { + }, + debug: (...e) => { + }, + info: (...e) => { + }, + warn: (...e) => { + }, + error: (...e) => { + }, + fatal: (...e) => { + } +}, gX = function(e = "fatal") { + let t = wm.fatal; + typeof e == "string" ? (e = e.toLowerCase(), e in wm && (t = wm[e])) : typeof e == "number" && (t = e), li.trace = () => { + }, li.debug = () => { + }, li.info = () => { + }, li.warn = () => { + }, li.error = () => { + }, li.fatal = () => { + }, t <= wm.fatal && (li.fatal = console.error ? console.error.bind(console, sf("FATAL"), "color: orange") : console.log.bind(console, "\x1B[35m", sf("FATAL"))), t <= wm.error && (li.error = console.error ? console.error.bind(console, sf("ERROR"), "color: orange") : console.log.bind(console, "\x1B[31m", sf("ERROR"))), t <= wm.warn && (li.warn = console.warn ? console.warn.bind(console, sf("WARN"), "color: orange") : console.log.bind(console, "\x1B[33m", sf("WARN"))), t <= wm.info && (li.info = console.info ? console.info.bind(console, sf("INFO"), "color: lightblue") : console.log.bind(console, "\x1B[34m", sf("INFO"))), t <= wm.debug && (li.debug = console.debug ? console.debug.bind(console, sf("DEBUG"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", sf("DEBUG"))), t <= wm.trace && (li.trace = console.debug ? console.debug.bind(console, sf("TRACE"), "color: lightgreen") : console.log.bind(console, "\x1B[32m", sf("TRACE"))); +}, sf = (e) => `%c${$dayjs().format("ss.SSS")} : ${e} : `, lO = //gi, gPt = (e) => e ? MAe(e).replace(/\\n/g, "#br#").split("#br#") : [""], vPt = (() => { + let e = !1; + return () => { + e || (mPt(), e = !0); + }; +})(); +function mPt() { + const e = "data-temp-href-target"; + iI.addHook("beforeSanitizeAttributes", (t) => { + t.tagName === "A" && t.hasAttribute("target") && t.setAttribute(e, t.getAttribute("target") || ""); + }), iI.addHook("afterSanitizeAttributes", (t) => { + t.tagName === "A" && t.hasAttribute(e) && (t.setAttribute("target", t.getAttribute(e) || ""), t.removeAttribute(e), t.getAttribute("target") === "_blank" && t.setAttribute("rel", "noopener")); + }); +} +const OAe = (e) => (vPt(), iI.sanitize(e)), tpe = (e, t) => { + var r; + if (((r = t.flowchart) == null ? void 0 : r.htmlLabels) !== !1) { + const n = t.securityLevel; + n === "antiscript" || n === "strict" ? e = OAe(e) : n !== "loose" && (e = MAe(e), e = e.replace(//g, ">"), e = e.replace(/=/g, "="), e = bPt(e)); + } + return e; +}, aD = (e, t) => e && (t.dompurifyConfig ? e = iI.sanitize(tpe(e, t), t.dompurifyConfig).toString() : e = iI.sanitize(tpe(e, t), { + FORBID_TAGS: ["style"] +}).toString(), e), yPt = (e, t) => typeof e == "string" ? aD(e, t) : e.flat().map((r) => aD(r, t)), _Pt = (e) => lO.test(e), SPt = (e) => e.split(lO), bPt = (e) => e.replace(/#br#/g, "
        "), MAe = (e) => e.replace(lO, "#br#"), EPt = (e) => { + let t = ""; + return e && (t = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, t = t.replaceAll(/\(/g, "\\("), t = t.replaceAll(/\)/g, "\\)")), t; +}, kAe = (e) => !(e === !1 || ["false", "null", "0"].includes(String(e).trim().toLowerCase())), CPt = function(...e) { + const t = e.filter((r) => !isNaN(r)); + return Math.max(...t); +}, TPt = function(...e) { + const t = e.filter((r) => !isNaN(r)); + return Math.min(...t); +}, JUt = function(e) { + const t = e.split(/(,)/), r = []; + for (let n = 0; n < t.length; n++) { + let i = t[n]; + if (i === "," && n > 0 && n + 1 < t.length) { + const a = t[n - 1], o = t[n + 1]; + wPt(a, o) && (i = a + "," + o, n++, r.pop()); + } + r.push(IPt(i)); + } + return r.join(""); +}, L6 = (e, t) => Math.max(0, e.split(t).length - 1), wPt = (e, t) => { + const r = L6(e, "~"), n = L6(t, "~"); + return r === 1 && n === 1; +}, IPt = (e) => { + const t = L6(e, "~"); + let r = !1; + if (t <= 1) + return e; + t % 2 !== 0 && e.startsWith("~") && (e = e.substring(1), r = !0); + const n = [...e]; + let i = n.indexOf("~"), a = n.lastIndexOf("~"); + for (; i !== -1 && a !== -1 && i !== a; ) + n[i] = "<", n[a] = ">", i = n.indexOf("~"), a = n.lastIndexOf("~"); + return r && n.unshift("~"), n.join(""); +}, rpe = () => window.MathMLElement !== void 0, F6 = /\$\$(.*)\$\$/g, npe = (e) => { + var r; + var t; + return ((r = (t = e.match(F6)) == null ? void 0 : t.length) != null ? r : 0) > 0; +}, QUt = (e, t) => ye(void 0, null, function* () { + e = yield xPt(e, t); + const r = document.createElement("div"); + r.innerHTML = e, r.id = "katex-temp", r.style.visibility = "hidden", r.style.position = "absolute", r.style.top = "0"; + const n = document.querySelector("body"); + n == null || n.insertAdjacentElement("beforeend", r); + const i = { width: r.clientWidth, height: r.clientHeight }; + return r.remove(), i; +}), xPt = (e, t) => ye(void 0, null, function* () { + if (!npe(e)) + return e; + if (!rpe() && !t.legacyMathML) + return e.replace(F6, "MathML is unsupported in this environment."); + const { default: r } = yield import("./47848c42.js"); + return e.split(lO).map( + (n) => npe(n) ? ` +
        + ${n} +
        + ` : `
        ${n}
        ` + ).join("").replace( + F6, + (n, i) => r.renderToString(i, { + throwOnError: !0, + displayMode: !0, + output: rpe() ? "mathml" : "htmlAndMathml" + }).replace(/\n/g, " ").replace(//g, "") + ); +}), vX = { + getRows: gPt, + sanitizeText: aD, + sanitizeTextOrArray: yPt, + hasBreaks: _Pt, + splitBreaks: SPt, + lineBreakRegex: lO, + removeScript: OAe, + getUrl: EPt, + evaluate: kAe, + getMax: CPt, + getMin: TPt +}, Mu = (e, t) => t ? kt(e, { s: -40, l: 10 }) : kt(e, { s: -40, l: -10 }), tU = "#ffffff", rU = "#f2f2f2"; +let APt = class { + constructor() { + this.background = "#f4f4f4", this.primaryColor = "#fff4dd", this.noteBkgColor = "#fff5ad", this.noteTextColor = "#333", this.THEME_COLOR_LIMIT = 12, this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif', this.fontSize = "16px"; + } + updateColors() { + var t, r, n, i, a, o, l, u, d, f, g; + if (this.primaryTextColor = this.primaryTextColor || (this.darkMode ? "#eee" : "#333"), this.secondaryColor = this.secondaryColor || kt(this.primaryColor, { h: -120 }), this.tertiaryColor = this.tertiaryColor || kt(this.primaryColor, { h: 180, l: 5 }), this.primaryBorderColor = this.primaryBorderColor || Mu(this.primaryColor, this.darkMode), this.secondaryBorderColor = this.secondaryBorderColor || Mu(this.secondaryColor, this.darkMode), this.tertiaryBorderColor = this.tertiaryBorderColor || Mu(this.tertiaryColor, this.darkMode), this.noteBorderColor = this.noteBorderColor || Mu(this.noteBkgColor, this.darkMode), this.noteBkgColor = this.noteBkgColor || "#fff5ad", this.noteTextColor = this.noteTextColor || "#333", this.secondaryTextColor = this.secondaryTextColor || Hr(this.secondaryColor), this.tertiaryTextColor = this.tertiaryTextColor || Hr(this.tertiaryColor), this.lineColor = this.lineColor || Hr(this.background), this.arrowheadColor = this.arrowheadColor || Hr(this.background), this.textColor = this.textColor || this.primaryTextColor, this.border2 = this.border2 || this.tertiaryBorderColor, this.nodeBkg = this.nodeBkg || this.primaryColor, this.mainBkg = this.mainBkg || this.primaryColor, this.nodeBorder = this.nodeBorder || this.primaryBorderColor, this.clusterBkg = this.clusterBkg || this.tertiaryColor, this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor, this.defaultLinkColor = this.defaultLinkColor || this.lineColor, this.titleColor = this.titleColor || this.tertiaryTextColor, this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? ui(this.secondaryColor, 30) : this.secondaryColor), this.nodeTextColor = this.nodeTextColor || this.primaryTextColor, this.actorBorder = this.actorBorder || this.primaryBorderColor, this.actorBkg = this.actorBkg || this.mainBkg, this.actorTextColor = this.actorTextColor || this.primaryTextColor, this.actorLineColor = this.actorLineColor || "grey", this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg, this.signalColor = this.signalColor || this.textColor, this.signalTextColor = this.signalTextColor || this.textColor, this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder, this.labelTextColor = this.labelTextColor || this.actorTextColor, this.loopTextColor = this.loopTextColor || this.actorTextColor, this.activationBorderColor = this.activationBorderColor || ui(this.secondaryColor, 10), this.activationBkgColor = this.activationBkgColor || this.secondaryColor, this.sequenceNumberColor = this.sequenceNumberColor || Hr(this.lineColor), this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor, this.altSectionBkgColor = this.altSectionBkgColor || "white", this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor, this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor, this.excludeBkgColor = this.excludeBkgColor || "#eeeeee", this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor, this.taskBkgColor = this.taskBkgColor || this.primaryColor, this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor, this.activeTaskBkgColor = this.activeTaskBkgColor || Zn(this.primaryColor, 23), this.gridColor = this.gridColor || "lightgrey", this.doneTaskBkgColor = this.doneTaskBkgColor || "lightgrey", this.doneTaskBorderColor = this.doneTaskBorderColor || "grey", this.critBorderColor = this.critBorderColor || "#ff8888", this.critBkgColor = this.critBkgColor || "red", this.todayLineColor = this.todayLineColor || "red", this.taskTextColor = this.taskTextColor || this.textColor, this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor, this.taskTextLightColor = this.taskTextLightColor || this.textColor, this.taskTextColor = this.taskTextColor || this.primaryTextColor, this.taskTextDarkColor = this.taskTextDarkColor || this.textColor, this.taskTextClickableColor = this.taskTextClickableColor || "#003163", this.personBorder = this.personBorder || this.primaryBorderColor, this.personBkg = this.personBkg || this.mainBkg, this.transitionColor = this.transitionColor || this.lineColor, this.transitionLabelColor = this.transitionLabelColor || this.textColor, this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor, this.stateBkg = this.stateBkg || this.mainBkg, this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg, this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor, this.altBackground = this.altBackground || this.tertiaryColor, this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg, this.compositeBorder = this.compositeBorder || this.nodeBorder, this.innerEndBackground = this.nodeBorder, this.errorBkgColor = this.errorBkgColor || this.tertiaryColor, this.errorTextColor = this.errorTextColor || this.tertiaryTextColor, this.transitionColor = this.transitionColor || this.lineColor, this.specialStateColor = this.lineColor, this.cScale0 = this.cScale0 || this.primaryColor, this.cScale1 = this.cScale1 || this.secondaryColor, this.cScale2 = this.cScale2 || this.tertiaryColor, this.cScale3 = this.cScale3 || kt(this.primaryColor, { h: 30 }), this.cScale4 = this.cScale4 || kt(this.primaryColor, { h: 60 }), this.cScale5 = this.cScale5 || kt(this.primaryColor, { h: 90 }), this.cScale6 = this.cScale6 || kt(this.primaryColor, { h: 120 }), this.cScale7 = this.cScale7 || kt(this.primaryColor, { h: 150 }), this.cScale8 = this.cScale8 || kt(this.primaryColor, { h: 210, l: 150 }), this.cScale9 = this.cScale9 || kt(this.primaryColor, { h: 270 }), this.cScale10 = this.cScale10 || kt(this.primaryColor, { h: 300 }), this.cScale11 = this.cScale11 || kt(this.primaryColor, { h: 330 }), this.darkMode) + for (let y = 0; y < this.THEME_COLOR_LIMIT; y++) + this["cScale" + y] = ui(this["cScale" + y], 75); + else + for (let y = 0; y < this.THEME_COLOR_LIMIT; y++) + this["cScale" + y] = ui(this["cScale" + y], 25); + for (let y = 0; y < this.THEME_COLOR_LIMIT; y++) + this["cScaleInv" + y] = this["cScaleInv" + y] || Hr(this["cScale" + y]); + for (let y = 0; y < this.THEME_COLOR_LIMIT; y++) + this.darkMode ? this["cScalePeer" + y] = this["cScalePeer" + y] || Zn(this["cScale" + y], 10) : this["cScalePeer" + y] = this["cScalePeer" + y] || ui(this["cScale" + y], 10); + this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor; + for (let y = 0; y < this.THEME_COLOR_LIMIT; y++) + this["cScaleLabel" + y] = this["cScaleLabel" + y] || this.scaleLabelColor; + const v = this.darkMode ? -4 : -1; + for (let y = 0; y < 5; y++) + this["surface" + y] = this["surface" + y] || kt(this.mainBkg, { h: 180, s: -15, l: v * (5 + y * 3) }), this["surfacePeer" + y] = this["surfacePeer" + y] || kt(this.mainBkg, { h: 180, s: -15, l: v * (8 + y * 3) }); + this.classText = this.classText || this.textColor, this.fillType0 = this.fillType0 || this.primaryColor, this.fillType1 = this.fillType1 || this.secondaryColor, this.fillType2 = this.fillType2 || kt(this.primaryColor, { h: 64 }), this.fillType3 = this.fillType3 || kt(this.secondaryColor, { h: 64 }), this.fillType4 = this.fillType4 || kt(this.primaryColor, { h: -64 }), this.fillType5 = this.fillType5 || kt(this.secondaryColor, { h: -64 }), this.fillType6 = this.fillType6 || kt(this.primaryColor, { h: 128 }), this.fillType7 = this.fillType7 || kt(this.secondaryColor, { h: 128 }), this.pie1 = this.pie1 || this.primaryColor, this.pie2 = this.pie2 || this.secondaryColor, this.pie3 = this.pie3 || this.tertiaryColor, this.pie4 = this.pie4 || kt(this.primaryColor, { l: -10 }), this.pie5 = this.pie5 || kt(this.secondaryColor, { l: -10 }), this.pie6 = this.pie6 || kt(this.tertiaryColor, { l: -10 }), this.pie7 = this.pie7 || kt(this.primaryColor, { h: 60, l: -10 }), this.pie8 = this.pie8 || kt(this.primaryColor, { h: -60, l: -10 }), this.pie9 = this.pie9 || kt(this.primaryColor, { h: 120, l: 0 }), this.pie10 = this.pie10 || kt(this.primaryColor, { h: 60, l: -20 }), this.pie11 = this.pie11 || kt(this.primaryColor, { h: -60, l: -20 }), this.pie12 = this.pie12 || kt(this.primaryColor, { h: 120, l: -10 }), this.pieTitleTextSize = this.pieTitleTextSize || "25px", this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor, this.pieSectionTextSize = this.pieSectionTextSize || "17px", this.pieSectionTextColor = this.pieSectionTextColor || this.textColor, this.pieLegendTextSize = this.pieLegendTextSize || "17px", this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor, this.pieStrokeColor = this.pieStrokeColor || "black", this.pieStrokeWidth = this.pieStrokeWidth || "2px", this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px", this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black", this.pieOpacity = this.pieOpacity || "0.7", this.quadrant1Fill = this.quadrant1Fill || this.primaryColor, this.quadrant2Fill = this.quadrant2Fill || kt(this.primaryColor, { r: 5, g: 5, b: 5 }), this.quadrant3Fill = this.quadrant3Fill || kt(this.primaryColor, { r: 10, g: 10, b: 10 }), this.quadrant4Fill = this.quadrant4Fill || kt(this.primaryColor, { r: 15, g: 15, b: 15 }), this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor, this.quadrant2TextFill = this.quadrant2TextFill || kt(this.primaryTextColor, { r: -5, g: -5, b: -5 }), this.quadrant3TextFill = this.quadrant3TextFill || kt(this.primaryTextColor, { r: -10, g: -10, b: -10 }), this.quadrant4TextFill = this.quadrant4TextFill || kt(this.primaryTextColor, { r: -15, g: -15, b: -15 }), this.quadrantPointFill = this.quadrantPointFill || aO(this.quadrant1Fill) ? Zn(this.quadrant1Fill) : ui(this.quadrant1Fill), this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor, this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor, this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor, this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor, this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor, this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor, this.xyChart = { + backgroundColor: ((t = this.xyChart) == null ? void 0 : t.backgroundColor) || this.background, + titleColor: ((r = this.xyChart) == null ? void 0 : r.titleColor) || this.primaryTextColor, + xAxisTitleColor: ((n = this.xyChart) == null ? void 0 : n.xAxisTitleColor) || this.primaryTextColor, + xAxisLabelColor: ((i = this.xyChart) == null ? void 0 : i.xAxisLabelColor) || this.primaryTextColor, + xAxisTickColor: ((a = this.xyChart) == null ? void 0 : a.xAxisTickColor) || this.primaryTextColor, + xAxisLineColor: ((o = this.xyChart) == null ? void 0 : o.xAxisLineColor) || this.primaryTextColor, + yAxisTitleColor: ((l = this.xyChart) == null ? void 0 : l.yAxisTitleColor) || this.primaryTextColor, + yAxisLabelColor: ((u = this.xyChart) == null ? void 0 : u.yAxisLabelColor) || this.primaryTextColor, + yAxisTickColor: ((d = this.xyChart) == null ? void 0 : d.yAxisTickColor) || this.primaryTextColor, + yAxisLineColor: ((f = this.xyChart) == null ? void 0 : f.yAxisLineColor) || this.primaryTextColor, + plotColorPalette: ((g = this.xyChart) == null ? void 0 : g.plotColorPalette) || "#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0" + }, this.requirementBackground = this.requirementBackground || this.primaryColor, this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor, this.requirementBorderSize = this.requirementBorderSize || "1", this.requirementTextColor = this.requirementTextColor || this.primaryTextColor, this.relationColor = this.relationColor || this.lineColor, this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? ui(this.secondaryColor, 30) : this.secondaryColor), this.relationLabelColor = this.relationLabelColor || this.actorTextColor, this.git0 = this.git0 || this.primaryColor, this.git1 = this.git1 || this.secondaryColor, this.git2 = this.git2 || this.tertiaryColor, this.git3 = this.git3 || kt(this.primaryColor, { h: -30 }), this.git4 = this.git4 || kt(this.primaryColor, { h: -60 }), this.git5 = this.git5 || kt(this.primaryColor, { h: -90 }), this.git6 = this.git6 || kt(this.primaryColor, { h: 60 }), this.git7 = this.git7 || kt(this.primaryColor, { h: 120 }), this.darkMode ? (this.git0 = Zn(this.git0, 25), this.git1 = Zn(this.git1, 25), this.git2 = Zn(this.git2, 25), this.git3 = Zn(this.git3, 25), this.git4 = Zn(this.git4, 25), this.git5 = Zn(this.git5, 25), this.git6 = Zn(this.git6, 25), this.git7 = Zn(this.git7, 25)) : (this.git0 = ui(this.git0, 25), this.git1 = ui(this.git1, 25), this.git2 = ui(this.git2, 25), this.git3 = ui(this.git3, 25), this.git4 = ui(this.git4, 25), this.git5 = ui(this.git5, 25), this.git6 = ui(this.git6, 25), this.git7 = ui(this.git7, 25)), this.gitInv0 = this.gitInv0 || Hr(this.git0), this.gitInv1 = this.gitInv1 || Hr(this.git1), this.gitInv2 = this.gitInv2 || Hr(this.git2), this.gitInv3 = this.gitInv3 || Hr(this.git3), this.gitInv4 = this.gitInv4 || Hr(this.git4), this.gitInv5 = this.gitInv5 || Hr(this.git5), this.gitInv6 = this.gitInv6 || Hr(this.git6), this.gitInv7 = this.gitInv7 || Hr(this.git7), this.branchLabelColor = this.branchLabelColor || (this.darkMode ? "black" : this.labelTextColor), this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor, this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor, this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor, this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor, this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor, this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor, this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor, this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor, this.tagLabelColor = this.tagLabelColor || this.primaryTextColor, this.tagLabelBackground = this.tagLabelBackground || this.primaryColor, this.tagLabelBorder = this.tagBorder || this.primaryBorderColor, this.tagLabelFontSize = this.tagLabelFontSize || "10px", this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor, this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor, this.commitLabelFontSize = this.commitLabelFontSize || "10px", this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || tU, this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || rU; + } + calculate(t) { + if (typeof t != "object") { + this.updateColors(); + return; + } + const r = Object.keys(t); + r.forEach((n) => { + this[n] = t[n]; + }), this.updateColors(), r.forEach((n) => { + this[n] = t[n]; + }); + } +}; +const RPt = (e) => { + const t = new APt(); + return t.calculate(e), t; +}; +let DPt = class { + constructor() { + this.background = "#333", this.primaryColor = "#1f2020", this.secondaryColor = Zn(this.primaryColor, 16), this.tertiaryColor = kt(this.primaryColor, { h: -160 }), this.primaryBorderColor = Hr(this.background), this.secondaryBorderColor = Mu(this.secondaryColor, this.darkMode), this.tertiaryBorderColor = Mu(this.tertiaryColor, this.darkMode), this.primaryTextColor = Hr(this.primaryColor), this.secondaryTextColor = Hr(this.secondaryColor), this.tertiaryTextColor = Hr(this.tertiaryColor), this.lineColor = Hr(this.background), this.textColor = Hr(this.background), this.mainBkg = "#1f2020", this.secondBkg = "calculated", this.mainContrastColor = "lightgrey", this.darkTextColor = Zn(Hr("#323D47"), 10), this.lineColor = "calculated", this.border1 = "#81B1DB", this.border2 = K1(255, 255, 255, 0.25), this.arrowheadColor = "calculated", this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif', this.fontSize = "16px", this.labelBackground = "#181818", this.textColor = "#ccc", this.THEME_COLOR_LIMIT = 12, this.nodeBkg = "calculated", this.nodeBorder = "calculated", this.clusterBkg = "calculated", this.clusterBorder = "calculated", this.defaultLinkColor = "calculated", this.titleColor = "#F9FFFE", this.edgeLabelBackground = "calculated", this.actorBorder = "calculated", this.actorBkg = "calculated", this.actorTextColor = "calculated", this.actorLineColor = "calculated", this.signalColor = "calculated", this.signalTextColor = "calculated", this.labelBoxBkgColor = "calculated", this.labelBoxBorderColor = "calculated", this.labelTextColor = "calculated", this.loopTextColor = "calculated", this.noteBorderColor = "calculated", this.noteBkgColor = "#fff5ad", this.noteTextColor = "calculated", this.activationBorderColor = "calculated", this.activationBkgColor = "calculated", this.sequenceNumberColor = "black", this.sectionBkgColor = ui("#EAE8D9", 30), this.altSectionBkgColor = "calculated", this.sectionBkgColor2 = "#EAE8D9", this.excludeBkgColor = ui(this.sectionBkgColor, 10), this.taskBorderColor = K1(255, 255, 255, 70), this.taskBkgColor = "calculated", this.taskTextColor = "calculated", this.taskTextLightColor = "calculated", this.taskTextOutsideColor = "calculated", this.taskTextClickableColor = "#003163", this.activeTaskBorderColor = K1(255, 255, 255, 50), this.activeTaskBkgColor = "#81B1DB", this.gridColor = "calculated", this.doneTaskBkgColor = "calculated", this.doneTaskBorderColor = "grey", this.critBorderColor = "#E83737", this.critBkgColor = "#E83737", this.taskTextDarkColor = "calculated", this.todayLineColor = "#DB5757", this.personBorder = this.primaryBorderColor, this.personBkg = this.mainBkg, this.labelColor = "calculated", this.errorBkgColor = "#a44141", this.errorTextColor = "#ddd"; + } + updateColors() { + var t, r, n, i, a, o, l, u, d, f, g; + this.secondBkg = Zn(this.mainBkg, 16), this.lineColor = this.mainContrastColor, this.arrowheadColor = this.mainContrastColor, this.nodeBkg = this.mainBkg, this.nodeBorder = this.border1, this.clusterBkg = this.secondBkg, this.clusterBorder = this.border2, this.defaultLinkColor = this.lineColor, this.edgeLabelBackground = Zn(this.labelBackground, 25), this.actorBorder = this.border1, this.actorBkg = this.mainBkg, this.actorTextColor = this.mainContrastColor, this.actorLineColor = this.mainContrastColor, this.signalColor = this.mainContrastColor, this.signalTextColor = this.mainContrastColor, this.labelBoxBkgColor = this.actorBkg, this.labelBoxBorderColor = this.actorBorder, this.labelTextColor = this.mainContrastColor, this.loopTextColor = this.mainContrastColor, this.noteBorderColor = this.secondaryBorderColor, this.noteBkgColor = this.secondBkg, this.noteTextColor = this.secondaryTextColor, this.activationBorderColor = this.border1, this.activationBkgColor = this.secondBkg, this.altSectionBkgColor = this.background, this.taskBkgColor = Zn(this.mainBkg, 23), this.taskTextColor = this.darkTextColor, this.taskTextLightColor = this.mainContrastColor, this.taskTextOutsideColor = this.taskTextLightColor, this.gridColor = this.mainContrastColor, this.doneTaskBkgColor = this.mainContrastColor, this.taskTextDarkColor = this.darkTextColor, this.transitionColor = this.transitionColor || this.lineColor, this.transitionLabelColor = this.transitionLabelColor || this.textColor, this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor, this.stateBkg = this.stateBkg || this.mainBkg, this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg, this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor, this.altBackground = this.altBackground || "#555", this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg, this.compositeBorder = this.compositeBorder || this.nodeBorder, this.innerEndBackground = this.primaryBorderColor, this.specialStateColor = "#f4f4f4", this.errorBkgColor = this.errorBkgColor || this.tertiaryColor, this.errorTextColor = this.errorTextColor || this.tertiaryTextColor, this.fillType0 = this.primaryColor, this.fillType1 = this.secondaryColor, this.fillType2 = kt(this.primaryColor, { h: 64 }), this.fillType3 = kt(this.secondaryColor, { h: 64 }), this.fillType4 = kt(this.primaryColor, { h: -64 }), this.fillType5 = kt(this.secondaryColor, { h: -64 }), this.fillType6 = kt(this.primaryColor, { h: 128 }), this.fillType7 = kt(this.secondaryColor, { h: 128 }), this.cScale1 = this.cScale1 || "#0b0000", this.cScale2 = this.cScale2 || "#4d1037", this.cScale3 = this.cScale3 || "#3f5258", this.cScale4 = this.cScale4 || "#4f2f1b", this.cScale5 = this.cScale5 || "#6e0a0a", this.cScale6 = this.cScale6 || "#3b0048", this.cScale7 = this.cScale7 || "#995a01", this.cScale8 = this.cScale8 || "#154706", this.cScale9 = this.cScale9 || "#161722", this.cScale10 = this.cScale10 || "#00296f", this.cScale11 = this.cScale11 || "#01629c", this.cScale12 = this.cScale12 || "#010029", this.cScale0 = this.cScale0 || this.primaryColor, this.cScale1 = this.cScale1 || this.secondaryColor, this.cScale2 = this.cScale2 || this.tertiaryColor, this.cScale3 = this.cScale3 || kt(this.primaryColor, { h: 30 }), this.cScale4 = this.cScale4 || kt(this.primaryColor, { h: 60 }), this.cScale5 = this.cScale5 || kt(this.primaryColor, { h: 90 }), this.cScale6 = this.cScale6 || kt(this.primaryColor, { h: 120 }), this.cScale7 = this.cScale7 || kt(this.primaryColor, { h: 150 }), this.cScale8 = this.cScale8 || kt(this.primaryColor, { h: 210 }), this.cScale9 = this.cScale9 || kt(this.primaryColor, { h: 270 }), this.cScale10 = this.cScale10 || kt(this.primaryColor, { h: 300 }), this.cScale11 = this.cScale11 || kt(this.primaryColor, { h: 330 }); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleInv" + v] = this["cScaleInv" + v] || Hr(this["cScale" + v]); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScalePeer" + v] = this["cScalePeer" + v] || Zn(this["cScale" + v], 10); + for (let v = 0; v < 5; v++) + this["surface" + v] = this["surface" + v] || kt(this.mainBkg, { h: 30, s: -30, l: -(-10 + v * 4) }), this["surfacePeer" + v] = this["surfacePeer" + v] || kt(this.mainBkg, { h: 30, s: -30, l: -(-7 + v * 4) }); + this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? "black" : this.labelTextColor); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleLabel" + v] = this["cScaleLabel" + v] || this.scaleLabelColor; + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["pie" + v] = this["cScale" + v]; + this.pieTitleTextSize = this.pieTitleTextSize || "25px", this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor, this.pieSectionTextSize = this.pieSectionTextSize || "17px", this.pieSectionTextColor = this.pieSectionTextColor || this.textColor, this.pieLegendTextSize = this.pieLegendTextSize || "17px", this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor, this.pieStrokeColor = this.pieStrokeColor || "black", this.pieStrokeWidth = this.pieStrokeWidth || "2px", this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px", this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black", this.pieOpacity = this.pieOpacity || "0.7", this.quadrant1Fill = this.quadrant1Fill || this.primaryColor, this.quadrant2Fill = this.quadrant2Fill || kt(this.primaryColor, { r: 5, g: 5, b: 5 }), this.quadrant3Fill = this.quadrant3Fill || kt(this.primaryColor, { r: 10, g: 10, b: 10 }), this.quadrant4Fill = this.quadrant4Fill || kt(this.primaryColor, { r: 15, g: 15, b: 15 }), this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor, this.quadrant2TextFill = this.quadrant2TextFill || kt(this.primaryTextColor, { r: -5, g: -5, b: -5 }), this.quadrant3TextFill = this.quadrant3TextFill || kt(this.primaryTextColor, { r: -10, g: -10, b: -10 }), this.quadrant4TextFill = this.quadrant4TextFill || kt(this.primaryTextColor, { r: -15, g: -15, b: -15 }), this.quadrantPointFill = this.quadrantPointFill || aO(this.quadrant1Fill) ? Zn(this.quadrant1Fill) : ui(this.quadrant1Fill), this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor, this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor, this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor, this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor, this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor, this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor, this.xyChart = { + backgroundColor: ((t = this.xyChart) == null ? void 0 : t.backgroundColor) || this.background, + titleColor: ((r = this.xyChart) == null ? void 0 : r.titleColor) || this.primaryTextColor, + xAxisTitleColor: ((n = this.xyChart) == null ? void 0 : n.xAxisTitleColor) || this.primaryTextColor, + xAxisLabelColor: ((i = this.xyChart) == null ? void 0 : i.xAxisLabelColor) || this.primaryTextColor, + xAxisTickColor: ((a = this.xyChart) == null ? void 0 : a.xAxisTickColor) || this.primaryTextColor, + xAxisLineColor: ((o = this.xyChart) == null ? void 0 : o.xAxisLineColor) || this.primaryTextColor, + yAxisTitleColor: ((l = this.xyChart) == null ? void 0 : l.yAxisTitleColor) || this.primaryTextColor, + yAxisLabelColor: ((u = this.xyChart) == null ? void 0 : u.yAxisLabelColor) || this.primaryTextColor, + yAxisTickColor: ((d = this.xyChart) == null ? void 0 : d.yAxisTickColor) || this.primaryTextColor, + yAxisLineColor: ((f = this.xyChart) == null ? void 0 : f.yAxisLineColor) || this.primaryTextColor, + plotColorPalette: ((g = this.xyChart) == null ? void 0 : g.plotColorPalette) || "#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22" + }, this.classText = this.primaryTextColor, this.requirementBackground = this.requirementBackground || this.primaryColor, this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor, this.requirementBorderSize = this.requirementBorderSize || "1", this.requirementTextColor = this.requirementTextColor || this.primaryTextColor, this.relationColor = this.relationColor || this.lineColor, this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? ui(this.secondaryColor, 30) : this.secondaryColor), this.relationLabelColor = this.relationLabelColor || this.actorTextColor, this.git0 = Zn(this.secondaryColor, 20), this.git1 = Zn(this.pie2 || this.secondaryColor, 20), this.git2 = Zn(this.pie3 || this.tertiaryColor, 20), this.git3 = Zn(this.pie4 || kt(this.primaryColor, { h: -30 }), 20), this.git4 = Zn(this.pie5 || kt(this.primaryColor, { h: -60 }), 20), this.git5 = Zn(this.pie6 || kt(this.primaryColor, { h: -90 }), 10), this.git6 = Zn(this.pie7 || kt(this.primaryColor, { h: 60 }), 10), this.git7 = Zn(this.pie8 || kt(this.primaryColor, { h: 120 }), 20), this.gitInv0 = this.gitInv0 || Hr(this.git0), this.gitInv1 = this.gitInv1 || Hr(this.git1), this.gitInv2 = this.gitInv2 || Hr(this.git2), this.gitInv3 = this.gitInv3 || Hr(this.git3), this.gitInv4 = this.gitInv4 || Hr(this.git4), this.gitInv5 = this.gitInv5 || Hr(this.git5), this.gitInv6 = this.gitInv6 || Hr(this.git6), this.gitInv7 = this.gitInv7 || Hr(this.git7), this.gitBranchLabel0 = this.gitBranchLabel0 || Hr(this.labelTextColor), this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor, this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor, this.gitBranchLabel3 = this.gitBranchLabel3 || Hr(this.labelTextColor), this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor, this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor, this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor, this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor, this.tagLabelColor = this.tagLabelColor || this.primaryTextColor, this.tagLabelBackground = this.tagLabelBackground || this.primaryColor, this.tagLabelBorder = this.tagBorder || this.primaryBorderColor, this.tagLabelFontSize = this.tagLabelFontSize || "10px", this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor, this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor, this.commitLabelFontSize = this.commitLabelFontSize || "10px", this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || Zn(this.background, 12), this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || Zn(this.background, 2); + } + calculate(t) { + if (typeof t != "object") { + this.updateColors(); + return; + } + const r = Object.keys(t); + r.forEach((n) => { + this[n] = t[n]; + }), this.updateColors(), r.forEach((n) => { + this[n] = t[n]; + }); + } +}; +const OPt = (e) => { + const t = new DPt(); + return t.calculate(e), t; +}; +let MPt = class { + constructor() { + this.background = "#f4f4f4", this.primaryColor = "#ECECFF", this.secondaryColor = kt(this.primaryColor, { h: 120 }), this.secondaryColor = "#ffffde", this.tertiaryColor = kt(this.primaryColor, { h: -160 }), this.primaryBorderColor = Mu(this.primaryColor, this.darkMode), this.secondaryBorderColor = Mu(this.secondaryColor, this.darkMode), this.tertiaryBorderColor = Mu(this.tertiaryColor, this.darkMode), this.primaryTextColor = Hr(this.primaryColor), this.secondaryTextColor = Hr(this.secondaryColor), this.tertiaryTextColor = Hr(this.tertiaryColor), this.lineColor = Hr(this.background), this.textColor = Hr(this.background), this.background = "white", this.mainBkg = "#ECECFF", this.secondBkg = "#ffffde", this.lineColor = "#333333", this.border1 = "#9370DB", this.border2 = "#aaaa33", this.arrowheadColor = "#333333", this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif', this.fontSize = "16px", this.labelBackground = "#e8e8e8", this.textColor = "#333", this.THEME_COLOR_LIMIT = 12, this.nodeBkg = "calculated", this.nodeBorder = "calculated", this.clusterBkg = "calculated", this.clusterBorder = "calculated", this.defaultLinkColor = "calculated", this.titleColor = "calculated", this.edgeLabelBackground = "calculated", this.actorBorder = "calculated", this.actorBkg = "calculated", this.actorTextColor = "black", this.actorLineColor = "grey", this.signalColor = "calculated", this.signalTextColor = "calculated", this.labelBoxBkgColor = "calculated", this.labelBoxBorderColor = "calculated", this.labelTextColor = "calculated", this.loopTextColor = "calculated", this.noteBorderColor = "calculated", this.noteBkgColor = "#fff5ad", this.noteTextColor = "calculated", this.activationBorderColor = "#666", this.activationBkgColor = "#f4f4f4", this.sequenceNumberColor = "white", this.sectionBkgColor = "calculated", this.altSectionBkgColor = "calculated", this.sectionBkgColor2 = "calculated", this.excludeBkgColor = "#eeeeee", this.taskBorderColor = "calculated", this.taskBkgColor = "calculated", this.taskTextLightColor = "calculated", this.taskTextColor = this.taskTextLightColor, this.taskTextDarkColor = "calculated", this.taskTextOutsideColor = this.taskTextDarkColor, this.taskTextClickableColor = "calculated", this.activeTaskBorderColor = "calculated", this.activeTaskBkgColor = "calculated", this.gridColor = "calculated", this.doneTaskBkgColor = "calculated", this.doneTaskBorderColor = "calculated", this.critBorderColor = "calculated", this.critBkgColor = "calculated", this.todayLineColor = "calculated", this.sectionBkgColor = K1(102, 102, 255, 0.49), this.altSectionBkgColor = "white", this.sectionBkgColor2 = "#fff400", this.taskBorderColor = "#534fbc", this.taskBkgColor = "#8a90dd", this.taskTextLightColor = "white", this.taskTextColor = "calculated", this.taskTextDarkColor = "black", this.taskTextOutsideColor = "calculated", this.taskTextClickableColor = "#003163", this.activeTaskBorderColor = "#534fbc", this.activeTaskBkgColor = "#bfc7ff", this.gridColor = "lightgrey", this.doneTaskBkgColor = "lightgrey", this.doneTaskBorderColor = "grey", this.critBorderColor = "#ff8888", this.critBkgColor = "red", this.todayLineColor = "red", this.personBorder = this.primaryBorderColor, this.personBkg = this.mainBkg, this.labelColor = "black", this.errorBkgColor = "#552222", this.errorTextColor = "#552222", this.updateColors(); + } + updateColors() { + var t, r, n, i, a, o, l, u, d, f, g; + this.cScale0 = this.cScale0 || this.primaryColor, this.cScale1 = this.cScale1 || this.secondaryColor, this.cScale2 = this.cScale2 || this.tertiaryColor, this.cScale3 = this.cScale3 || kt(this.primaryColor, { h: 30 }), this.cScale4 = this.cScale4 || kt(this.primaryColor, { h: 60 }), this.cScale5 = this.cScale5 || kt(this.primaryColor, { h: 90 }), this.cScale6 = this.cScale6 || kt(this.primaryColor, { h: 120 }), this.cScale7 = this.cScale7 || kt(this.primaryColor, { h: 150 }), this.cScale8 = this.cScale8 || kt(this.primaryColor, { h: 210 }), this.cScale9 = this.cScale9 || kt(this.primaryColor, { h: 270 }), this.cScale10 = this.cScale10 || kt(this.primaryColor, { h: 300 }), this.cScale11 = this.cScale11 || kt(this.primaryColor, { h: 330 }), this.cScalePeer1 = this.cScalePeer1 || ui(this.secondaryColor, 45), this.cScalePeer2 = this.cScalePeer2 || ui(this.tertiaryColor, 40); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScale" + v] = ui(this["cScale" + v], 10), this["cScalePeer" + v] = this["cScalePeer" + v] || ui(this["cScale" + v], 25); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleInv" + v] = this["cScaleInv" + v] || kt(this["cScale" + v], { h: 180 }); + for (let v = 0; v < 5; v++) + this["surface" + v] = this["surface" + v] || kt(this.mainBkg, { h: 30, l: -(5 + v * 5) }), this["surfacePeer" + v] = this["surfacePeer" + v] || kt(this.mainBkg, { h: 30, l: -(7 + v * 5) }); + if (this.scaleLabelColor = this.scaleLabelColor !== "calculated" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor, this.labelTextColor !== "calculated") { + this.cScaleLabel0 = this.cScaleLabel0 || Hr(this.labelTextColor), this.cScaleLabel3 = this.cScaleLabel3 || Hr(this.labelTextColor); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleLabel" + v] = this["cScaleLabel" + v] || this.labelTextColor; + } + this.nodeBkg = this.mainBkg, this.nodeBorder = this.border1, this.clusterBkg = this.secondBkg, this.clusterBorder = this.border2, this.defaultLinkColor = this.lineColor, this.titleColor = this.textColor, this.edgeLabelBackground = this.labelBackground, this.actorBorder = Zn(this.border1, 23), this.actorBkg = this.mainBkg, this.labelBoxBkgColor = this.actorBkg, this.signalColor = this.textColor, this.signalTextColor = this.textColor, this.labelBoxBorderColor = this.actorBorder, this.labelTextColor = this.actorTextColor, this.loopTextColor = this.actorTextColor, this.noteBorderColor = this.border2, this.noteTextColor = this.actorTextColor, this.taskTextColor = this.taskTextLightColor, this.taskTextOutsideColor = this.taskTextDarkColor, this.transitionColor = this.transitionColor || this.lineColor, this.transitionLabelColor = this.transitionLabelColor || this.textColor, this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor, this.stateBkg = this.stateBkg || this.mainBkg, this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg, this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor, this.altBackground = this.altBackground || "#f0f0f0", this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg, this.compositeBorder = this.compositeBorder || this.nodeBorder, this.innerEndBackground = this.nodeBorder, this.specialStateColor = this.lineColor, this.errorBkgColor = this.errorBkgColor || this.tertiaryColor, this.errorTextColor = this.errorTextColor || this.tertiaryTextColor, this.transitionColor = this.transitionColor || this.lineColor, this.classText = this.primaryTextColor, this.fillType0 = this.primaryColor, this.fillType1 = this.secondaryColor, this.fillType2 = kt(this.primaryColor, { h: 64 }), this.fillType3 = kt(this.secondaryColor, { h: 64 }), this.fillType4 = kt(this.primaryColor, { h: -64 }), this.fillType5 = kt(this.secondaryColor, { h: -64 }), this.fillType6 = kt(this.primaryColor, { h: 128 }), this.fillType7 = kt(this.secondaryColor, { h: 128 }), this.pie1 = this.pie1 || this.primaryColor, this.pie2 = this.pie2 || this.secondaryColor, this.pie3 = this.pie3 || kt(this.tertiaryColor, { l: -40 }), this.pie4 = this.pie4 || kt(this.primaryColor, { l: -10 }), this.pie5 = this.pie5 || kt(this.secondaryColor, { l: -30 }), this.pie6 = this.pie6 || kt(this.tertiaryColor, { l: -20 }), this.pie7 = this.pie7 || kt(this.primaryColor, { h: 60, l: -20 }), this.pie8 = this.pie8 || kt(this.primaryColor, { h: -60, l: -40 }), this.pie9 = this.pie9 || kt(this.primaryColor, { h: 120, l: -40 }), this.pie10 = this.pie10 || kt(this.primaryColor, { h: 60, l: -40 }), this.pie11 = this.pie11 || kt(this.primaryColor, { h: -90, l: -40 }), this.pie12 = this.pie12 || kt(this.primaryColor, { h: 120, l: -30 }), this.pieTitleTextSize = this.pieTitleTextSize || "25px", this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor, this.pieSectionTextSize = this.pieSectionTextSize || "17px", this.pieSectionTextColor = this.pieSectionTextColor || this.textColor, this.pieLegendTextSize = this.pieLegendTextSize || "17px", this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor, this.pieStrokeColor = this.pieStrokeColor || "black", this.pieStrokeWidth = this.pieStrokeWidth || "2px", this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px", this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black", this.pieOpacity = this.pieOpacity || "0.7", this.quadrant1Fill = this.quadrant1Fill || this.primaryColor, this.quadrant2Fill = this.quadrant2Fill || kt(this.primaryColor, { r: 5, g: 5, b: 5 }), this.quadrant3Fill = this.quadrant3Fill || kt(this.primaryColor, { r: 10, g: 10, b: 10 }), this.quadrant4Fill = this.quadrant4Fill || kt(this.primaryColor, { r: 15, g: 15, b: 15 }), this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor, this.quadrant2TextFill = this.quadrant2TextFill || kt(this.primaryTextColor, { r: -5, g: -5, b: -5 }), this.quadrant3TextFill = this.quadrant3TextFill || kt(this.primaryTextColor, { r: -10, g: -10, b: -10 }), this.quadrant4TextFill = this.quadrant4TextFill || kt(this.primaryTextColor, { r: -15, g: -15, b: -15 }), this.quadrantPointFill = this.quadrantPointFill || aO(this.quadrant1Fill) ? Zn(this.quadrant1Fill) : ui(this.quadrant1Fill), this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor, this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor, this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor, this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor, this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor, this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor, this.xyChart = { + backgroundColor: ((t = this.xyChart) == null ? void 0 : t.backgroundColor) || this.background, + titleColor: ((r = this.xyChart) == null ? void 0 : r.titleColor) || this.primaryTextColor, + xAxisTitleColor: ((n = this.xyChart) == null ? void 0 : n.xAxisTitleColor) || this.primaryTextColor, + xAxisLabelColor: ((i = this.xyChart) == null ? void 0 : i.xAxisLabelColor) || this.primaryTextColor, + xAxisTickColor: ((a = this.xyChart) == null ? void 0 : a.xAxisTickColor) || this.primaryTextColor, + xAxisLineColor: ((o = this.xyChart) == null ? void 0 : o.xAxisLineColor) || this.primaryTextColor, + yAxisTitleColor: ((l = this.xyChart) == null ? void 0 : l.yAxisTitleColor) || this.primaryTextColor, + yAxisLabelColor: ((u = this.xyChart) == null ? void 0 : u.yAxisLabelColor) || this.primaryTextColor, + yAxisTickColor: ((d = this.xyChart) == null ? void 0 : d.yAxisTickColor) || this.primaryTextColor, + yAxisLineColor: ((f = this.xyChart) == null ? void 0 : f.yAxisLineColor) || this.primaryTextColor, + plotColorPalette: ((g = this.xyChart) == null ? void 0 : g.plotColorPalette) || "#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3" + }, this.requirementBackground = this.requirementBackground || this.primaryColor, this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor, this.requirementBorderSize = this.requirementBorderSize || "1", this.requirementTextColor = this.requirementTextColor || this.primaryTextColor, this.relationColor = this.relationColor || this.lineColor, this.relationLabelBackground = this.relationLabelBackground || this.labelBackground, this.relationLabelColor = this.relationLabelColor || this.actorTextColor, this.git0 = this.git0 || this.primaryColor, this.git1 = this.git1 || this.secondaryColor, this.git2 = this.git2 || this.tertiaryColor, this.git3 = this.git3 || kt(this.primaryColor, { h: -30 }), this.git4 = this.git4 || kt(this.primaryColor, { h: -60 }), this.git5 = this.git5 || kt(this.primaryColor, { h: -90 }), this.git6 = this.git6 || kt(this.primaryColor, { h: 60 }), this.git7 = this.git7 || kt(this.primaryColor, { h: 120 }), this.darkMode ? (this.git0 = Zn(this.git0, 25), this.git1 = Zn(this.git1, 25), this.git2 = Zn(this.git2, 25), this.git3 = Zn(this.git3, 25), this.git4 = Zn(this.git4, 25), this.git5 = Zn(this.git5, 25), this.git6 = Zn(this.git6, 25), this.git7 = Zn(this.git7, 25)) : (this.git0 = ui(this.git0, 25), this.git1 = ui(this.git1, 25), this.git2 = ui(this.git2, 25), this.git3 = ui(this.git3, 25), this.git4 = ui(this.git4, 25), this.git5 = ui(this.git5, 25), this.git6 = ui(this.git6, 25), this.git7 = ui(this.git7, 25)), this.gitInv0 = this.gitInv0 || ui(Hr(this.git0), 25), this.gitInv1 = this.gitInv1 || Hr(this.git1), this.gitInv2 = this.gitInv2 || Hr(this.git2), this.gitInv3 = this.gitInv3 || Hr(this.git3), this.gitInv4 = this.gitInv4 || Hr(this.git4), this.gitInv5 = this.gitInv5 || Hr(this.git5), this.gitInv6 = this.gitInv6 || Hr(this.git6), this.gitInv7 = this.gitInv7 || Hr(this.git7), this.gitBranchLabel0 = this.gitBranchLabel0 || Hr(this.labelTextColor), this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor, this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor, this.gitBranchLabel3 = this.gitBranchLabel3 || Hr(this.labelTextColor), this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor, this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor, this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor, this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor, this.tagLabelColor = this.tagLabelColor || this.primaryTextColor, this.tagLabelBackground = this.tagLabelBackground || this.primaryColor, this.tagLabelBorder = this.tagBorder || this.primaryBorderColor, this.tagLabelFontSize = this.tagLabelFontSize || "10px", this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor, this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor, this.commitLabelFontSize = this.commitLabelFontSize || "10px", this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || tU, this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || rU; + } + calculate(t) { + if (typeof t != "object") { + this.updateColors(); + return; + } + const r = Object.keys(t); + r.forEach((n) => { + this[n] = t[n]; + }), this.updateColors(), r.forEach((n) => { + this[n] = t[n]; + }); + } +}; +const kPt = (e) => { + const t = new MPt(); + return t.calculate(e), t; +}; +let PPt = class { + constructor() { + this.background = "#f4f4f4", this.primaryColor = "#cde498", this.secondaryColor = "#cdffb2", this.background = "white", this.mainBkg = "#cde498", this.secondBkg = "#cdffb2", this.lineColor = "green", this.border1 = "#13540c", this.border2 = "#6eaa49", this.arrowheadColor = "green", this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif', this.fontSize = "16px", this.tertiaryColor = Zn("#cde498", 10), this.primaryBorderColor = Mu(this.primaryColor, this.darkMode), this.secondaryBorderColor = Mu(this.secondaryColor, this.darkMode), this.tertiaryBorderColor = Mu(this.tertiaryColor, this.darkMode), this.primaryTextColor = Hr(this.primaryColor), this.secondaryTextColor = Hr(this.secondaryColor), this.tertiaryTextColor = Hr(this.primaryColor), this.lineColor = Hr(this.background), this.textColor = Hr(this.background), this.THEME_COLOR_LIMIT = 12, this.nodeBkg = "calculated", this.nodeBorder = "calculated", this.clusterBkg = "calculated", this.clusterBorder = "calculated", this.defaultLinkColor = "calculated", this.titleColor = "#333", this.edgeLabelBackground = "#e8e8e8", this.actorBorder = "calculated", this.actorBkg = "calculated", this.actorTextColor = "black", this.actorLineColor = "grey", this.signalColor = "#333", this.signalTextColor = "#333", this.labelBoxBkgColor = "calculated", this.labelBoxBorderColor = "#326932", this.labelTextColor = "calculated", this.loopTextColor = "calculated", this.noteBorderColor = "calculated", this.noteBkgColor = "#fff5ad", this.noteTextColor = "calculated", this.activationBorderColor = "#666", this.activationBkgColor = "#f4f4f4", this.sequenceNumberColor = "white", this.sectionBkgColor = "#6eaa49", this.altSectionBkgColor = "white", this.sectionBkgColor2 = "#6eaa49", this.excludeBkgColor = "#eeeeee", this.taskBorderColor = "calculated", this.taskBkgColor = "#487e3a", this.taskTextLightColor = "white", this.taskTextColor = "calculated", this.taskTextDarkColor = "black", this.taskTextOutsideColor = "calculated", this.taskTextClickableColor = "#003163", this.activeTaskBorderColor = "calculated", this.activeTaskBkgColor = "calculated", this.gridColor = "lightgrey", this.doneTaskBkgColor = "lightgrey", this.doneTaskBorderColor = "grey", this.critBorderColor = "#ff8888", this.critBkgColor = "red", this.todayLineColor = "red", this.personBorder = this.primaryBorderColor, this.personBkg = this.mainBkg, this.labelColor = "black", this.errorBkgColor = "#552222", this.errorTextColor = "#552222"; + } + updateColors() { + var t, r, n, i, a, o, l, u, d, f, g; + this.actorBorder = ui(this.mainBkg, 20), this.actorBkg = this.mainBkg, this.labelBoxBkgColor = this.actorBkg, this.labelTextColor = this.actorTextColor, this.loopTextColor = this.actorTextColor, this.noteBorderColor = this.border2, this.noteTextColor = this.actorTextColor, this.cScale0 = this.cScale0 || this.primaryColor, this.cScale1 = this.cScale1 || this.secondaryColor, this.cScale2 = this.cScale2 || this.tertiaryColor, this.cScale3 = this.cScale3 || kt(this.primaryColor, { h: 30 }), this.cScale4 = this.cScale4 || kt(this.primaryColor, { h: 60 }), this.cScale5 = this.cScale5 || kt(this.primaryColor, { h: 90 }), this.cScale6 = this.cScale6 || kt(this.primaryColor, { h: 120 }), this.cScale7 = this.cScale7 || kt(this.primaryColor, { h: 150 }), this.cScale8 = this.cScale8 || kt(this.primaryColor, { h: 210 }), this.cScale9 = this.cScale9 || kt(this.primaryColor, { h: 270 }), this.cScale10 = this.cScale10 || kt(this.primaryColor, { h: 300 }), this.cScale11 = this.cScale11 || kt(this.primaryColor, { h: 330 }), this.cScalePeer1 = this.cScalePeer1 || ui(this.secondaryColor, 45), this.cScalePeer2 = this.cScalePeer2 || ui(this.tertiaryColor, 40); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScale" + v] = ui(this["cScale" + v], 10), this["cScalePeer" + v] = this["cScalePeer" + v] || ui(this["cScale" + v], 25); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleInv" + v] = this["cScaleInv" + v] || kt(this["cScale" + v], { h: 180 }); + this.scaleLabelColor = this.scaleLabelColor !== "calculated" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor; + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleLabel" + v] = this["cScaleLabel" + v] || this.scaleLabelColor; + for (let v = 0; v < 5; v++) + this["surface" + v] = this["surface" + v] || kt(this.mainBkg, { h: 30, s: -30, l: -(5 + v * 5) }), this["surfacePeer" + v] = this["surfacePeer" + v] || kt(this.mainBkg, { h: 30, s: -30, l: -(8 + v * 5) }); + this.nodeBkg = this.mainBkg, this.nodeBorder = this.border1, this.clusterBkg = this.secondBkg, this.clusterBorder = this.border2, this.defaultLinkColor = this.lineColor, this.taskBorderColor = this.border1, this.taskTextColor = this.taskTextLightColor, this.taskTextOutsideColor = this.taskTextDarkColor, this.activeTaskBorderColor = this.taskBorderColor, this.activeTaskBkgColor = this.mainBkg, this.transitionColor = this.transitionColor || this.lineColor, this.transitionLabelColor = this.transitionLabelColor || this.textColor, this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor, this.stateBkg = this.stateBkg || this.mainBkg, this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg, this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor, this.altBackground = this.altBackground || "#f0f0f0", this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg, this.compositeBorder = this.compositeBorder || this.nodeBorder, this.innerEndBackground = this.primaryBorderColor, this.specialStateColor = this.lineColor, this.errorBkgColor = this.errorBkgColor || this.tertiaryColor, this.errorTextColor = this.errorTextColor || this.tertiaryTextColor, this.transitionColor = this.transitionColor || this.lineColor, this.classText = this.primaryTextColor, this.fillType0 = this.primaryColor, this.fillType1 = this.secondaryColor, this.fillType2 = kt(this.primaryColor, { h: 64 }), this.fillType3 = kt(this.secondaryColor, { h: 64 }), this.fillType4 = kt(this.primaryColor, { h: -64 }), this.fillType5 = kt(this.secondaryColor, { h: -64 }), this.fillType6 = kt(this.primaryColor, { h: 128 }), this.fillType7 = kt(this.secondaryColor, { h: 128 }), this.pie1 = this.pie1 || this.primaryColor, this.pie2 = this.pie2 || this.secondaryColor, this.pie3 = this.pie3 || this.tertiaryColor, this.pie4 = this.pie4 || kt(this.primaryColor, { l: -30 }), this.pie5 = this.pie5 || kt(this.secondaryColor, { l: -30 }), this.pie6 = this.pie6 || kt(this.tertiaryColor, { h: 40, l: -40 }), this.pie7 = this.pie7 || kt(this.primaryColor, { h: 60, l: -10 }), this.pie8 = this.pie8 || kt(this.primaryColor, { h: -60, l: -10 }), this.pie9 = this.pie9 || kt(this.primaryColor, { h: 120, l: 0 }), this.pie10 = this.pie10 || kt(this.primaryColor, { h: 60, l: -50 }), this.pie11 = this.pie11 || kt(this.primaryColor, { h: -60, l: -50 }), this.pie12 = this.pie12 || kt(this.primaryColor, { h: 120, l: -50 }), this.pieTitleTextSize = this.pieTitleTextSize || "25px", this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor, this.pieSectionTextSize = this.pieSectionTextSize || "17px", this.pieSectionTextColor = this.pieSectionTextColor || this.textColor, this.pieLegendTextSize = this.pieLegendTextSize || "17px", this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor, this.pieStrokeColor = this.pieStrokeColor || "black", this.pieStrokeWidth = this.pieStrokeWidth || "2px", this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px", this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black", this.pieOpacity = this.pieOpacity || "0.7", this.quadrant1Fill = this.quadrant1Fill || this.primaryColor, this.quadrant2Fill = this.quadrant2Fill || kt(this.primaryColor, { r: 5, g: 5, b: 5 }), this.quadrant3Fill = this.quadrant3Fill || kt(this.primaryColor, { r: 10, g: 10, b: 10 }), this.quadrant4Fill = this.quadrant4Fill || kt(this.primaryColor, { r: 15, g: 15, b: 15 }), this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor, this.quadrant2TextFill = this.quadrant2TextFill || kt(this.primaryTextColor, { r: -5, g: -5, b: -5 }), this.quadrant3TextFill = this.quadrant3TextFill || kt(this.primaryTextColor, { r: -10, g: -10, b: -10 }), this.quadrant4TextFill = this.quadrant4TextFill || kt(this.primaryTextColor, { r: -15, g: -15, b: -15 }), this.quadrantPointFill = this.quadrantPointFill || aO(this.quadrant1Fill) ? Zn(this.quadrant1Fill) : ui(this.quadrant1Fill), this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor, this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor, this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor, this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor, this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor, this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor, this.xyChart = { + backgroundColor: ((t = this.xyChart) == null ? void 0 : t.backgroundColor) || this.background, + titleColor: ((r = this.xyChart) == null ? void 0 : r.titleColor) || this.primaryTextColor, + xAxisTitleColor: ((n = this.xyChart) == null ? void 0 : n.xAxisTitleColor) || this.primaryTextColor, + xAxisLabelColor: ((i = this.xyChart) == null ? void 0 : i.xAxisLabelColor) || this.primaryTextColor, + xAxisTickColor: ((a = this.xyChart) == null ? void 0 : a.xAxisTickColor) || this.primaryTextColor, + xAxisLineColor: ((o = this.xyChart) == null ? void 0 : o.xAxisLineColor) || this.primaryTextColor, + yAxisTitleColor: ((l = this.xyChart) == null ? void 0 : l.yAxisTitleColor) || this.primaryTextColor, + yAxisLabelColor: ((u = this.xyChart) == null ? void 0 : u.yAxisLabelColor) || this.primaryTextColor, + yAxisTickColor: ((d = this.xyChart) == null ? void 0 : d.yAxisTickColor) || this.primaryTextColor, + yAxisLineColor: ((f = this.xyChart) == null ? void 0 : f.yAxisLineColor) || this.primaryTextColor, + plotColorPalette: ((g = this.xyChart) == null ? void 0 : g.plotColorPalette) || "#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176" + }, this.requirementBackground = this.requirementBackground || this.primaryColor, this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor, this.requirementBorderSize = this.requirementBorderSize || "1", this.requirementTextColor = this.requirementTextColor || this.primaryTextColor, this.relationColor = this.relationColor || this.lineColor, this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground, this.relationLabelColor = this.relationLabelColor || this.actorTextColor, this.git0 = this.git0 || this.primaryColor, this.git1 = this.git1 || this.secondaryColor, this.git2 = this.git2 || this.tertiaryColor, this.git3 = this.git3 || kt(this.primaryColor, { h: -30 }), this.git4 = this.git4 || kt(this.primaryColor, { h: -60 }), this.git5 = this.git5 || kt(this.primaryColor, { h: -90 }), this.git6 = this.git6 || kt(this.primaryColor, { h: 60 }), this.git7 = this.git7 || kt(this.primaryColor, { h: 120 }), this.darkMode ? (this.git0 = Zn(this.git0, 25), this.git1 = Zn(this.git1, 25), this.git2 = Zn(this.git2, 25), this.git3 = Zn(this.git3, 25), this.git4 = Zn(this.git4, 25), this.git5 = Zn(this.git5, 25), this.git6 = Zn(this.git6, 25), this.git7 = Zn(this.git7, 25)) : (this.git0 = ui(this.git0, 25), this.git1 = ui(this.git1, 25), this.git2 = ui(this.git2, 25), this.git3 = ui(this.git3, 25), this.git4 = ui(this.git4, 25), this.git5 = ui(this.git5, 25), this.git6 = ui(this.git6, 25), this.git7 = ui(this.git7, 25)), this.gitInv0 = this.gitInv0 || Hr(this.git0), this.gitInv1 = this.gitInv1 || Hr(this.git1), this.gitInv2 = this.gitInv2 || Hr(this.git2), this.gitInv3 = this.gitInv3 || Hr(this.git3), this.gitInv4 = this.gitInv4 || Hr(this.git4), this.gitInv5 = this.gitInv5 || Hr(this.git5), this.gitInv6 = this.gitInv6 || Hr(this.git6), this.gitInv7 = this.gitInv7 || Hr(this.git7), this.gitBranchLabel0 = this.gitBranchLabel0 || Hr(this.labelTextColor), this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor, this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor, this.gitBranchLabel3 = this.gitBranchLabel3 || Hr(this.labelTextColor), this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor, this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor, this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor, this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor, this.tagLabelColor = this.tagLabelColor || this.primaryTextColor, this.tagLabelBackground = this.tagLabelBackground || this.primaryColor, this.tagLabelBorder = this.tagBorder || this.primaryBorderColor, this.tagLabelFontSize = this.tagLabelFontSize || "10px", this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor, this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor, this.commitLabelFontSize = this.commitLabelFontSize || "10px", this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || tU, this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || rU; + } + calculate(t) { + if (typeof t != "object") { + this.updateColors(); + return; + } + const r = Object.keys(t); + r.forEach((n) => { + this[n] = t[n]; + }), this.updateColors(), r.forEach((n) => { + this[n] = t[n]; + }); + } +}; +const NPt = (e) => { + const t = new PPt(); + return t.calculate(e), t; +}; +class LPt { + constructor() { + this.primaryColor = "#eee", this.contrast = "#707070", this.secondaryColor = Zn(this.contrast, 55), this.background = "#ffffff", this.tertiaryColor = kt(this.primaryColor, { h: -160 }), this.primaryBorderColor = Mu(this.primaryColor, this.darkMode), this.secondaryBorderColor = Mu(this.secondaryColor, this.darkMode), this.tertiaryBorderColor = Mu(this.tertiaryColor, this.darkMode), this.primaryTextColor = Hr(this.primaryColor), this.secondaryTextColor = Hr(this.secondaryColor), this.tertiaryTextColor = Hr(this.tertiaryColor), this.lineColor = Hr(this.background), this.textColor = Hr(this.background), this.mainBkg = "#eee", this.secondBkg = "calculated", this.lineColor = "#666", this.border1 = "#999", this.border2 = "calculated", this.note = "#ffa", this.text = "#333", this.critical = "#d42", this.done = "#bbb", this.arrowheadColor = "#333333", this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif', this.fontSize = "16px", this.THEME_COLOR_LIMIT = 12, this.nodeBkg = "calculated", this.nodeBorder = "calculated", this.clusterBkg = "calculated", this.clusterBorder = "calculated", this.defaultLinkColor = "calculated", this.titleColor = "calculated", this.edgeLabelBackground = "white", this.actorBorder = "calculated", this.actorBkg = "calculated", this.actorTextColor = "calculated", this.actorLineColor = "calculated", this.signalColor = "calculated", this.signalTextColor = "calculated", this.labelBoxBkgColor = "calculated", this.labelBoxBorderColor = "calculated", this.labelTextColor = "calculated", this.loopTextColor = "calculated", this.noteBorderColor = "calculated", this.noteBkgColor = "calculated", this.noteTextColor = "calculated", this.activationBorderColor = "#666", this.activationBkgColor = "#f4f4f4", this.sequenceNumberColor = "white", this.sectionBkgColor = "calculated", this.altSectionBkgColor = "white", this.sectionBkgColor2 = "calculated", this.excludeBkgColor = "#eeeeee", this.taskBorderColor = "calculated", this.taskBkgColor = "calculated", this.taskTextLightColor = "white", this.taskTextColor = "calculated", this.taskTextDarkColor = "calculated", this.taskTextOutsideColor = "calculated", this.taskTextClickableColor = "#003163", this.activeTaskBorderColor = "calculated", this.activeTaskBkgColor = "calculated", this.gridColor = "calculated", this.doneTaskBkgColor = "calculated", this.doneTaskBorderColor = "calculated", this.critBkgColor = "calculated", this.critBorderColor = "calculated", this.todayLineColor = "calculated", this.personBorder = this.primaryBorderColor, this.personBkg = this.mainBkg, this.labelColor = "black", this.errorBkgColor = "#552222", this.errorTextColor = "#552222"; + } + updateColors() { + var t, r, n, i, a, o, l, u, d, f, g; + this.secondBkg = Zn(this.contrast, 55), this.border2 = this.contrast, this.actorBorder = Zn(this.border1, 23), this.actorBkg = this.mainBkg, this.actorTextColor = this.text, this.actorLineColor = this.lineColor, this.signalColor = this.text, this.signalTextColor = this.text, this.labelBoxBkgColor = this.actorBkg, this.labelBoxBorderColor = this.actorBorder, this.labelTextColor = this.text, this.loopTextColor = this.text, this.noteBorderColor = "#999", this.noteBkgColor = "#666", this.noteTextColor = "#fff", this.cScale0 = this.cScale0 || "#555", this.cScale1 = this.cScale1 || "#F4F4F4", this.cScale2 = this.cScale2 || "#555", this.cScale3 = this.cScale3 || "#BBB", this.cScale4 = this.cScale4 || "#777", this.cScale5 = this.cScale5 || "#999", this.cScale6 = this.cScale6 || "#DDD", this.cScale7 = this.cScale7 || "#FFF", this.cScale8 = this.cScale8 || "#DDD", this.cScale9 = this.cScale9 || "#BBB", this.cScale10 = this.cScale10 || "#999", this.cScale11 = this.cScale11 || "#777"; + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleInv" + v] = this["cScaleInv" + v] || Hr(this["cScale" + v]); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this.darkMode ? this["cScalePeer" + v] = this["cScalePeer" + v] || Zn(this["cScale" + v], 10) : this["cScalePeer" + v] = this["cScalePeer" + v] || ui(this["cScale" + v], 10); + this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? "black" : this.labelTextColor), this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1, this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1; + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["cScaleLabel" + v] = this["cScaleLabel" + v] || this.scaleLabelColor; + for (let v = 0; v < 5; v++) + this["surface" + v] = this["surface" + v] || kt(this.mainBkg, { l: -(5 + v * 5) }), this["surfacePeer" + v] = this["surfacePeer" + v] || kt(this.mainBkg, { l: -(8 + v * 5) }); + this.nodeBkg = this.mainBkg, this.nodeBorder = this.border1, this.clusterBkg = this.secondBkg, this.clusterBorder = this.border2, this.defaultLinkColor = this.lineColor, this.titleColor = this.text, this.sectionBkgColor = Zn(this.contrast, 30), this.sectionBkgColor2 = Zn(this.contrast, 30), this.taskBorderColor = ui(this.contrast, 10), this.taskBkgColor = this.contrast, this.taskTextColor = this.taskTextLightColor, this.taskTextDarkColor = this.text, this.taskTextOutsideColor = this.taskTextDarkColor, this.activeTaskBorderColor = this.taskBorderColor, this.activeTaskBkgColor = this.mainBkg, this.gridColor = Zn(this.border1, 30), this.doneTaskBkgColor = this.done, this.doneTaskBorderColor = this.lineColor, this.critBkgColor = this.critical, this.critBorderColor = ui(this.critBkgColor, 10), this.todayLineColor = this.critBkgColor, this.transitionColor = this.transitionColor || "#000", this.transitionLabelColor = this.transitionLabelColor || this.textColor, this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor, this.stateBkg = this.stateBkg || this.mainBkg, this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg, this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor, this.altBackground = this.altBackground || "#f4f4f4", this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg, this.stateBorder = this.stateBorder || "#000", this.innerEndBackground = this.primaryBorderColor, this.specialStateColor = "#222", this.errorBkgColor = this.errorBkgColor || this.tertiaryColor, this.errorTextColor = this.errorTextColor || this.tertiaryTextColor, this.classText = this.primaryTextColor, this.fillType0 = this.primaryColor, this.fillType1 = this.secondaryColor, this.fillType2 = kt(this.primaryColor, { h: 64 }), this.fillType3 = kt(this.secondaryColor, { h: 64 }), this.fillType4 = kt(this.primaryColor, { h: -64 }), this.fillType5 = kt(this.secondaryColor, { h: -64 }), this.fillType6 = kt(this.primaryColor, { h: 128 }), this.fillType7 = kt(this.secondaryColor, { h: 128 }); + for (let v = 0; v < this.THEME_COLOR_LIMIT; v++) + this["pie" + v] = this["cScale" + v]; + this.pie12 = this.pie0, this.pieTitleTextSize = this.pieTitleTextSize || "25px", this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor, this.pieSectionTextSize = this.pieSectionTextSize || "17px", this.pieSectionTextColor = this.pieSectionTextColor || this.textColor, this.pieLegendTextSize = this.pieLegendTextSize || "17px", this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor, this.pieStrokeColor = this.pieStrokeColor || "black", this.pieStrokeWidth = this.pieStrokeWidth || "2px", this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px", this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black", this.pieOpacity = this.pieOpacity || "0.7", this.quadrant1Fill = this.quadrant1Fill || this.primaryColor, this.quadrant2Fill = this.quadrant2Fill || kt(this.primaryColor, { r: 5, g: 5, b: 5 }), this.quadrant3Fill = this.quadrant3Fill || kt(this.primaryColor, { r: 10, g: 10, b: 10 }), this.quadrant4Fill = this.quadrant4Fill || kt(this.primaryColor, { r: 15, g: 15, b: 15 }), this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor, this.quadrant2TextFill = this.quadrant2TextFill || kt(this.primaryTextColor, { r: -5, g: -5, b: -5 }), this.quadrant3TextFill = this.quadrant3TextFill || kt(this.primaryTextColor, { r: -10, g: -10, b: -10 }), this.quadrant4TextFill = this.quadrant4TextFill || kt(this.primaryTextColor, { r: -15, g: -15, b: -15 }), this.quadrantPointFill = this.quadrantPointFill || aO(this.quadrant1Fill) ? Zn(this.quadrant1Fill) : ui(this.quadrant1Fill), this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor, this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor, this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor, this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor, this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor, this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor, this.xyChart = { + backgroundColor: ((t = this.xyChart) == null ? void 0 : t.backgroundColor) || this.background, + titleColor: ((r = this.xyChart) == null ? void 0 : r.titleColor) || this.primaryTextColor, + xAxisTitleColor: ((n = this.xyChart) == null ? void 0 : n.xAxisTitleColor) || this.primaryTextColor, + xAxisLabelColor: ((i = this.xyChart) == null ? void 0 : i.xAxisLabelColor) || this.primaryTextColor, + xAxisTickColor: ((a = this.xyChart) == null ? void 0 : a.xAxisTickColor) || this.primaryTextColor, + xAxisLineColor: ((o = this.xyChart) == null ? void 0 : o.xAxisLineColor) || this.primaryTextColor, + yAxisTitleColor: ((l = this.xyChart) == null ? void 0 : l.yAxisTitleColor) || this.primaryTextColor, + yAxisLabelColor: ((u = this.xyChart) == null ? void 0 : u.yAxisLabelColor) || this.primaryTextColor, + yAxisTickColor: ((d = this.xyChart) == null ? void 0 : d.yAxisTickColor) || this.primaryTextColor, + yAxisLineColor: ((f = this.xyChart) == null ? void 0 : f.yAxisLineColor) || this.primaryTextColor, + plotColorPalette: ((g = this.xyChart) == null ? void 0 : g.plotColorPalette) || "#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0" + }, this.requirementBackground = this.requirementBackground || this.primaryColor, this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor, this.requirementBorderSize = this.requirementBorderSize || "1", this.requirementTextColor = this.requirementTextColor || this.primaryTextColor, this.relationColor = this.relationColor || this.lineColor, this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground, this.relationLabelColor = this.relationLabelColor || this.actorTextColor, this.git0 = ui(this.pie1, 25) || this.primaryColor, this.git1 = this.pie2 || this.secondaryColor, this.git2 = this.pie3 || this.tertiaryColor, this.git3 = this.pie4 || kt(this.primaryColor, { h: -30 }), this.git4 = this.pie5 || kt(this.primaryColor, { h: -60 }), this.git5 = this.pie6 || kt(this.primaryColor, { h: -90 }), this.git6 = this.pie7 || kt(this.primaryColor, { h: 60 }), this.git7 = this.pie8 || kt(this.primaryColor, { h: 120 }), this.gitInv0 = this.gitInv0 || Hr(this.git0), this.gitInv1 = this.gitInv1 || Hr(this.git1), this.gitInv2 = this.gitInv2 || Hr(this.git2), this.gitInv3 = this.gitInv3 || Hr(this.git3), this.gitInv4 = this.gitInv4 || Hr(this.git4), this.gitInv5 = this.gitInv5 || Hr(this.git5), this.gitInv6 = this.gitInv6 || Hr(this.git6), this.gitInv7 = this.gitInv7 || Hr(this.git7), this.branchLabelColor = this.branchLabelColor || this.labelTextColor, this.gitBranchLabel0 = this.branchLabelColor, this.gitBranchLabel1 = "white", this.gitBranchLabel2 = this.branchLabelColor, this.gitBranchLabel3 = "white", this.gitBranchLabel4 = this.branchLabelColor, this.gitBranchLabel5 = this.branchLabelColor, this.gitBranchLabel6 = this.branchLabelColor, this.gitBranchLabel7 = this.branchLabelColor, this.tagLabelColor = this.tagLabelColor || this.primaryTextColor, this.tagLabelBackground = this.tagLabelBackground || this.primaryColor, this.tagLabelBorder = this.tagBorder || this.primaryBorderColor, this.tagLabelFontSize = this.tagLabelFontSize || "10px", this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor, this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor, this.commitLabelFontSize = this.commitLabelFontSize || "10px", this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || tU, this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || rU; + } + calculate(t) { + if (typeof t != "object") { + this.updateColors(); + return; + } + const r = Object.keys(t); + r.forEach((n) => { + this[n] = t[n]; + }), this.updateColors(), r.forEach((n) => { + this[n] = t[n]; + }); + } +} +const FPt = (e) => { + const t = new LPt(); + return t.calculate(e), t; +}, Vm = { + base: { + getThemeVariables: RPt + }, + dark: { + getThemeVariables: OPt + }, + default: { + getThemeVariables: kPt + }, + forest: { + getThemeVariables: NPt + }, + neutral: { + getThemeVariables: FPt + } +}, Im = { + flowchart: { + useMaxWidth: !0, + titleTopMargin: 25, + subGraphTitleMargin: { + top: 0, + bottom: 0 + }, + diagramPadding: 8, + htmlLabels: !0, + nodeSpacing: 50, + rankSpacing: 50, + curve: "basis", + padding: 15, + defaultRenderer: "dagre-wrapper", + wrappingWidth: 200 + }, + sequence: { + useMaxWidth: !0, + hideUnusedParticipants: !1, + activationWidth: 10, + diagramMarginX: 50, + diagramMarginY: 10, + actorMargin: 50, + width: 150, + height: 65, + boxMargin: 10, + boxTextMargin: 5, + noteMargin: 10, + messageMargin: 35, + messageAlign: "center", + mirrorActors: !0, + forceMenus: !1, + bottomMarginAdj: 1, + rightAngles: !1, + showSequenceNumbers: !1, + actorFontSize: 14, + actorFontFamily: '"Open Sans", sans-serif', + actorFontWeight: 400, + noteFontSize: 14, + noteFontFamily: '"trebuchet ms", verdana, arial, sans-serif', + noteFontWeight: 400, + noteAlign: "center", + messageFontSize: 16, + messageFontFamily: '"trebuchet ms", verdana, arial, sans-serif', + messageFontWeight: 400, + wrap: !1, + wrapPadding: 10, + labelBoxWidth: 50, + labelBoxHeight: 20 + }, + gantt: { + useMaxWidth: !0, + titleTopMargin: 25, + barHeight: 20, + barGap: 4, + topPadding: 50, + rightPadding: 75, + leftPadding: 75, + gridLineStartPadding: 35, + fontSize: 11, + sectionFontSize: 11, + numberSectionStyles: 4, + axisFormat: "%Y-%m-%d", + topAxis: !1, + displayMode: "", + weekday: "sunday" + }, + journey: { + useMaxWidth: !0, + diagramMarginX: 50, + diagramMarginY: 10, + leftMargin: 150, + width: 150, + height: 50, + boxMargin: 10, + boxTextMargin: 5, + noteMargin: 10, + messageMargin: 35, + messageAlign: "center", + bottomMarginAdj: 1, + rightAngles: !1, + taskFontSize: 14, + taskFontFamily: '"Open Sans", sans-serif', + taskMargin: 50, + activationWidth: 10, + textPlacement: "fo", + actorColours: [ + "#8FBC8F", + "#7CFC00", + "#00FFFF", + "#20B2AA", + "#B0E0E6", + "#FFFFE0" + ], + sectionFills: [ + "#191970", + "#8B008B", + "#4B0082", + "#2F4F4F", + "#800000", + "#8B4513", + "#00008B" + ], + sectionColours: [ + "#fff" + ] + }, + class: { + useMaxWidth: !0, + titleTopMargin: 25, + arrowMarkerAbsolute: !1, + dividerMargin: 10, + padding: 5, + textHeight: 10, + defaultRenderer: "dagre-wrapper", + htmlLabels: !1 + }, + state: { + useMaxWidth: !0, + titleTopMargin: 25, + dividerMargin: 10, + sizeUnit: 5, + padding: 8, + textHeight: 10, + titleShift: -15, + noteMargin: 10, + forkWidth: 70, + forkHeight: 7, + miniPadding: 2, + fontSizeFactor: 5.02, + fontSize: 24, + labelHeight: 16, + edgeLengthFactor: "20", + compositTitleSize: 35, + radius: 5, + defaultRenderer: "dagre-wrapper" + }, + er: { + useMaxWidth: !0, + titleTopMargin: 25, + diagramPadding: 20, + layoutDirection: "TB", + minEntityWidth: 100, + minEntityHeight: 75, + entityPadding: 15, + stroke: "gray", + fill: "honeydew", + fontSize: 12 + }, + pie: { + useMaxWidth: !0, + textPosition: 0.75 + }, + quadrantChart: { + useMaxWidth: !0, + chartWidth: 500, + chartHeight: 500, + titleFontSize: 20, + titlePadding: 10, + quadrantPadding: 5, + xAxisLabelPadding: 5, + yAxisLabelPadding: 5, + xAxisLabelFontSize: 16, + yAxisLabelFontSize: 16, + quadrantLabelFontSize: 16, + quadrantTextTopPadding: 5, + pointTextPadding: 5, + pointLabelFontSize: 12, + pointRadius: 5, + xAxisPosition: "top", + yAxisPosition: "left", + quadrantInternalBorderStrokeWidth: 1, + quadrantExternalBorderStrokeWidth: 2 + }, + xyChart: { + useMaxWidth: !0, + width: 700, + height: 500, + titleFontSize: 20, + titlePadding: 10, + showTitle: !0, + xAxis: { + $ref: "#/$defs/XYChartAxisConfig", + showLabel: !0, + labelFontSize: 14, + labelPadding: 5, + showTitle: !0, + titleFontSize: 16, + titlePadding: 5, + showTick: !0, + tickLength: 5, + tickWidth: 2, + showAxisLine: !0, + axisLineWidth: 2 + }, + yAxis: { + $ref: "#/$defs/XYChartAxisConfig", + showLabel: !0, + labelFontSize: 14, + labelPadding: 5, + showTitle: !0, + titleFontSize: 16, + titlePadding: 5, + showTick: !0, + tickLength: 5, + tickWidth: 2, + showAxisLine: !0, + axisLineWidth: 2 + }, + chartOrientation: "vertical", + plotReservedSpacePercent: 50 + }, + requirement: { + useMaxWidth: !0, + rect_fill: "#f9f9f9", + text_color: "#333", + rect_border_size: "0.5px", + rect_border_color: "#bbb", + rect_min_width: 200, + rect_min_height: 200, + fontSize: 14, + rect_padding: 10, + line_height: 20 + }, + mindmap: { + useMaxWidth: !0, + padding: 10, + maxNodeWidth: 200 + }, + timeline: { + useMaxWidth: !0, + diagramMarginX: 50, + diagramMarginY: 10, + leftMargin: 150, + width: 150, + height: 50, + boxMargin: 10, + boxTextMargin: 5, + noteMargin: 10, + messageMargin: 35, + messageAlign: "center", + bottomMarginAdj: 1, + rightAngles: !1, + taskFontSize: 14, + taskFontFamily: '"Open Sans", sans-serif', + taskMargin: 50, + activationWidth: 10, + textPlacement: "fo", + actorColours: [ + "#8FBC8F", + "#7CFC00", + "#00FFFF", + "#20B2AA", + "#B0E0E6", + "#FFFFE0" + ], + sectionFills: [ + "#191970", + "#8B008B", + "#4B0082", + "#2F4F4F", + "#800000", + "#8B4513", + "#00008B" + ], + sectionColours: [ + "#fff" + ], + disableMulticolor: !1 + }, + gitGraph: { + useMaxWidth: !0, + titleTopMargin: 25, + diagramPadding: 8, + nodeLabel: { + width: 75, + height: 100, + x: -25, + y: 0 + }, + mainBranchName: "main", + mainBranchOrder: 0, + showCommitLabel: !0, + showBranches: !0, + rotateCommitLabel: !0, + parallelCommits: !1, + arrowMarkerAbsolute: !1 + }, + c4: { + useMaxWidth: !0, + diagramMarginX: 50, + diagramMarginY: 10, + c4ShapeMargin: 50, + c4ShapePadding: 20, + width: 216, + height: 60, + boxMargin: 10, + c4ShapeInRow: 4, + nextLinePaddingX: 0, + c4BoundaryInRow: 2, + personFontSize: 14, + personFontFamily: '"Open Sans", sans-serif', + personFontWeight: "normal", + external_personFontSize: 14, + external_personFontFamily: '"Open Sans", sans-serif', + external_personFontWeight: "normal", + systemFontSize: 14, + systemFontFamily: '"Open Sans", sans-serif', + systemFontWeight: "normal", + external_systemFontSize: 14, + external_systemFontFamily: '"Open Sans", sans-serif', + external_systemFontWeight: "normal", + system_dbFontSize: 14, + system_dbFontFamily: '"Open Sans", sans-serif', + system_dbFontWeight: "normal", + external_system_dbFontSize: 14, + external_system_dbFontFamily: '"Open Sans", sans-serif', + external_system_dbFontWeight: "normal", + system_queueFontSize: 14, + system_queueFontFamily: '"Open Sans", sans-serif', + system_queueFontWeight: "normal", + external_system_queueFontSize: 14, + external_system_queueFontFamily: '"Open Sans", sans-serif', + external_system_queueFontWeight: "normal", + boundaryFontSize: 14, + boundaryFontFamily: '"Open Sans", sans-serif', + boundaryFontWeight: "normal", + messageFontSize: 12, + messageFontFamily: '"Open Sans", sans-serif', + messageFontWeight: "normal", + containerFontSize: 14, + containerFontFamily: '"Open Sans", sans-serif', + containerFontWeight: "normal", + external_containerFontSize: 14, + external_containerFontFamily: '"Open Sans", sans-serif', + external_containerFontWeight: "normal", + container_dbFontSize: 14, + container_dbFontFamily: '"Open Sans", sans-serif', + container_dbFontWeight: "normal", + external_container_dbFontSize: 14, + external_container_dbFontFamily: '"Open Sans", sans-serif', + external_container_dbFontWeight: "normal", + container_queueFontSize: 14, + container_queueFontFamily: '"Open Sans", sans-serif', + container_queueFontWeight: "normal", + external_container_queueFontSize: 14, + external_container_queueFontFamily: '"Open Sans", sans-serif', + external_container_queueFontWeight: "normal", + componentFontSize: 14, + componentFontFamily: '"Open Sans", sans-serif', + componentFontWeight: "normal", + external_componentFontSize: 14, + external_componentFontFamily: '"Open Sans", sans-serif', + external_componentFontWeight: "normal", + component_dbFontSize: 14, + component_dbFontFamily: '"Open Sans", sans-serif', + component_dbFontWeight: "normal", + external_component_dbFontSize: 14, + external_component_dbFontFamily: '"Open Sans", sans-serif', + external_component_dbFontWeight: "normal", + component_queueFontSize: 14, + component_queueFontFamily: '"Open Sans", sans-serif', + component_queueFontWeight: "normal", + external_component_queueFontSize: 14, + external_component_queueFontFamily: '"Open Sans", sans-serif', + external_component_queueFontWeight: "normal", + wrap: !0, + wrapPadding: 10, + person_bg_color: "#08427B", + person_border_color: "#073B6F", + external_person_bg_color: "#686868", + external_person_border_color: "#8A8A8A", + system_bg_color: "#1168BD", + system_border_color: "#3C7FC0", + system_db_bg_color: "#1168BD", + system_db_border_color: "#3C7FC0", + system_queue_bg_color: "#1168BD", + system_queue_border_color: "#3C7FC0", + external_system_bg_color: "#999999", + external_system_border_color: "#8A8A8A", + external_system_db_bg_color: "#999999", + external_system_db_border_color: "#8A8A8A", + external_system_queue_bg_color: "#999999", + external_system_queue_border_color: "#8A8A8A", + container_bg_color: "#438DD5", + container_border_color: "#3C7FC0", + container_db_bg_color: "#438DD5", + container_db_border_color: "#3C7FC0", + container_queue_bg_color: "#438DD5", + container_queue_border_color: "#3C7FC0", + external_container_bg_color: "#B3B3B3", + external_container_border_color: "#A6A6A6", + external_container_db_bg_color: "#B3B3B3", + external_container_db_border_color: "#A6A6A6", + external_container_queue_bg_color: "#B3B3B3", + external_container_queue_border_color: "#A6A6A6", + component_bg_color: "#85BBF0", + component_border_color: "#78A8D8", + component_db_bg_color: "#85BBF0", + component_db_border_color: "#78A8D8", + component_queue_bg_color: "#85BBF0", + component_queue_border_color: "#78A8D8", + external_component_bg_color: "#CCCCCC", + external_component_border_color: "#BFBFBF", + external_component_db_bg_color: "#CCCCCC", + external_component_db_border_color: "#BFBFBF", + external_component_queue_bg_color: "#CCCCCC", + external_component_queue_border_color: "#BFBFBF" + }, + sankey: { + useMaxWidth: !0, + width: 600, + height: 400, + linkColor: "gradient", + nodeAlignment: "justify", + showValues: !0, + prefix: "", + suffix: "" + }, + block: { + useMaxWidth: !0, + padding: 8 + }, + theme: "default", + maxTextSize: 5e4, + maxEdges: 500, + darkMode: !1, + fontFamily: '"trebuchet ms", verdana, arial, sans-serif;', + logLevel: 5, + securityLevel: "strict", + startOnLoad: !0, + arrowMarkerAbsolute: !1, + secure: [ + "secure", + "securityLevel", + "startOnLoad", + "maxTextSize", + "maxEdges" + ], + legacyMathML: !1, + deterministicIds: !1, + fontSize: 16 +}, PAe = rn(br({}, Im), { + // Set, even though they're `undefined` so that `configKeys` finds these keys + // TODO: Should we replace these with `null` so that they can go in the JSON Schema? + deterministicIDSeed: void 0, + themeCSS: void 0, + // add non-JSON default config values + themeVariables: Vm.default.getThemeVariables(), + sequence: rn(br({}, Im.sequence), { + messageFont: function() { + return { + fontFamily: this.messageFontFamily, + fontSize: this.messageFontSize, + fontWeight: this.messageFontWeight + }; + }, + noteFont: function() { + return { + fontFamily: this.noteFontFamily, + fontSize: this.noteFontSize, + fontWeight: this.noteFontWeight + }; + }, + actorFont: function() { + return { + fontFamily: this.actorFontFamily, + fontSize: this.actorFontSize, + fontWeight: this.actorFontWeight + }; + } + }), + gantt: rn(br({}, Im.gantt), { + tickInterval: void 0, + useWidth: void 0 + // can probably be removed since `configKeys` already includes this + }), + c4: rn(br({}, Im.c4), { + useWidth: void 0, + personFont: function() { + return { + fontFamily: this.personFontFamily, + fontSize: this.personFontSize, + fontWeight: this.personFontWeight + }; + }, + external_personFont: function() { + return { + fontFamily: this.external_personFontFamily, + fontSize: this.external_personFontSize, + fontWeight: this.external_personFontWeight + }; + }, + systemFont: function() { + return { + fontFamily: this.systemFontFamily, + fontSize: this.systemFontSize, + fontWeight: this.systemFontWeight + }; + }, + external_systemFont: function() { + return { + fontFamily: this.external_systemFontFamily, + fontSize: this.external_systemFontSize, + fontWeight: this.external_systemFontWeight + }; + }, + system_dbFont: function() { + return { + fontFamily: this.system_dbFontFamily, + fontSize: this.system_dbFontSize, + fontWeight: this.system_dbFontWeight + }; + }, + external_system_dbFont: function() { + return { + fontFamily: this.external_system_dbFontFamily, + fontSize: this.external_system_dbFontSize, + fontWeight: this.external_system_dbFontWeight + }; + }, + system_queueFont: function() { + return { + fontFamily: this.system_queueFontFamily, + fontSize: this.system_queueFontSize, + fontWeight: this.system_queueFontWeight + }; + }, + external_system_queueFont: function() { + return { + fontFamily: this.external_system_queueFontFamily, + fontSize: this.external_system_queueFontSize, + fontWeight: this.external_system_queueFontWeight + }; + }, + containerFont: function() { + return { + fontFamily: this.containerFontFamily, + fontSize: this.containerFontSize, + fontWeight: this.containerFontWeight + }; + }, + external_containerFont: function() { + return { + fontFamily: this.external_containerFontFamily, + fontSize: this.external_containerFontSize, + fontWeight: this.external_containerFontWeight + }; + }, + container_dbFont: function() { + return { + fontFamily: this.container_dbFontFamily, + fontSize: this.container_dbFontSize, + fontWeight: this.container_dbFontWeight + }; + }, + external_container_dbFont: function() { + return { + fontFamily: this.external_container_dbFontFamily, + fontSize: this.external_container_dbFontSize, + fontWeight: this.external_container_dbFontWeight + }; + }, + container_queueFont: function() { + return { + fontFamily: this.container_queueFontFamily, + fontSize: this.container_queueFontSize, + fontWeight: this.container_queueFontWeight + }; + }, + external_container_queueFont: function() { + return { + fontFamily: this.external_container_queueFontFamily, + fontSize: this.external_container_queueFontSize, + fontWeight: this.external_container_queueFontWeight + }; + }, + componentFont: function() { + return { + fontFamily: this.componentFontFamily, + fontSize: this.componentFontSize, + fontWeight: this.componentFontWeight + }; + }, + external_componentFont: function() { + return { + fontFamily: this.external_componentFontFamily, + fontSize: this.external_componentFontSize, + fontWeight: this.external_componentFontWeight + }; + }, + component_dbFont: function() { + return { + fontFamily: this.component_dbFontFamily, + fontSize: this.component_dbFontSize, + fontWeight: this.component_dbFontWeight + }; + }, + external_component_dbFont: function() { + return { + fontFamily: this.external_component_dbFontFamily, + fontSize: this.external_component_dbFontSize, + fontWeight: this.external_component_dbFontWeight + }; + }, + component_queueFont: function() { + return { + fontFamily: this.component_queueFontFamily, + fontSize: this.component_queueFontSize, + fontWeight: this.component_queueFontWeight + }; + }, + external_component_queueFont: function() { + return { + fontFamily: this.external_component_queueFontFamily, + fontSize: this.external_component_queueFontSize, + fontWeight: this.external_component_queueFontWeight + }; + }, + boundaryFont: function() { + return { + fontFamily: this.boundaryFontFamily, + fontSize: this.boundaryFontSize, + fontWeight: this.boundaryFontWeight + }; + }, + messageFont: function() { + return { + fontFamily: this.messageFontFamily, + fontSize: this.messageFontSize, + fontWeight: this.messageFontWeight + }; + } + }), + pie: rn(br({}, Im.pie), { + useWidth: 984 + }), + xyChart: rn(br({}, Im.xyChart), { + useWidth: void 0 + }), + requirement: rn(br({}, Im.requirement), { + useWidth: void 0 + }), + gitGraph: rn(br({}, Im.gitGraph), { + // TODO: This is a temporary override for `gitGraph`, since every other + // diagram does have `useMaxWidth`, but instead sets it to `true`. + // Should we set this to `true` instead? + useMaxWidth: !1 + }), + sankey: rn(br({}, Im.sankey), { + // this is false, unlike every other diagram (other than gitGraph) + // TODO: can we make this default to `true` instead? + useMaxWidth: !1 + }) +}), NAe = (e, t = "") => Object.keys(e).reduce((r, n) => Array.isArray(e[n]) ? r : typeof e[n] == "object" && e[n] !== null ? [...r, t + n, ...NAe(e[n], "")] : [...r, t + n], []), BPt = new Set(NAe(PAe, "")), UPt = PAe, Y2 = (e) => { + if (li.debug("sanitizeDirective called with", e), !(typeof e != "object" || e == null)) { + if (Array.isArray(e)) { + e.forEach((t) => Y2(t)); + return; + } + for (const t of Object.keys(e)) { + if (li.debug("Checking key", t), t.startsWith("__") || t.includes("proto") || t.includes("constr") || !BPt.has(t) || e[t] == null) { + li.debug("sanitize deleting key: ", t), delete e[t]; + continue; + } + if (typeof e[t] == "object") { + li.debug("sanitizing object", t), Y2(e[t]); + continue; + } + const r = ["themeCSS", "fontFamily", "altFontFamily"]; + for (const n of r) + t.includes(n) && (li.debug("sanitizing css option", t), e[t] = jPt(e[t])); + } + if (e.themeVariables) + for (const t of Object.keys(e.themeVariables)) { + const r = e.themeVariables[t]; + r != null && r.match && !r.match(/^[\d "#%(),.;A-Za-z]+$/) && (e.themeVariables[t] = ""); + } + li.debug("After sanitization", e); + } +}, jPt = (e) => { + let t = 0, r = 0; + for (const n of e) { + if (t < r) + return "{ /* ERROR: Unbalanced CSS */ }"; + n === "{" ? t++ : n === "}" && r++; + } + return t !== r ? "{ /* ERROR: Unbalanced CSS */ }" : e; +}, LAe = new RegExp("^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+", "s"), q1 = /%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi, $Pt = /\s*%%.*\n/gm; +class FAe extends Error { + constructor(t) { + super(t), this.name = "UnknownDiagramError"; + } +} +const aI = {}, nU = function(e, t) { + e = e.replace(LAe, "").replace(q1, "").replace($Pt, ` +`); + for (const [r, { detector: n }] of Object.entries(aI)) + if (n(e, t)) + return r; + throw new FAe( + `No diagram type detected matching given configuration for text: ${e}` + ); +}, BAe = (...e) => { + for (const { id: t, detector: r, loader: n } of e) + UAe(t, r, n); +}, UAe = (e, t, r) => { + aI[e] ? li.error(`Detector with key ${e} already exists`) : aI[e] = { detector: t, loader: r }, li.debug(`Detector with key ${e} added${r ? " with loader" : ""}`); +}, VPt = (e) => aI[e].loader, B6 = (e, t, { depth: r = 2, clobber: n = !1 } = {}) => { + const i = { depth: r, clobber: n }; + return Array.isArray(t) && !Array.isArray(e) ? (t.forEach((a) => B6(e, a, i)), e) : Array.isArray(t) && Array.isArray(e) ? (t.forEach((a) => { + e.includes(a) || e.push(a); + }), e) : e === void 0 || r <= 0 ? e != null && typeof e == "object" && typeof t == "object" ? Object.assign(e, t) : t : (t !== void 0 && typeof e == "object" && typeof t == "object" && Object.keys(t).forEach((a) => { + typeof t[a] == "object" && (e[a] === void 0 || typeof e[a] == "object") ? (e[a] === void 0 && (e[a] = Array.isArray(t[a]) ? [] : {}), e[a] = B6(e[a], t[a], { depth: r - 1, clobber: n })) : (n || typeof e[a] != "object" && typeof t[a] != "object") && (e[a] = t[a]); + }), e); +}, Xc = B6, zPt = "​", HPt = { + curveBasis: XRt, + curveBasisClosed: KRt, + curveBasisOpen: ZRt, + curveBumpX: GRt, + curveBumpY: YRt, + curveBundle: qRt, + curveCardinalClosed: QRt, + curveCardinalOpen: eDt, + curveCardinal: JRt, + curveCatmullRomClosed: rDt, + curveCatmullRomOpen: nDt, + curveCatmullRom: tDt, + curveLinear: WRt, + curveLinearClosed: iDt, + curveMonotoneX: aDt, + curveMonotoneY: oDt, + curveNatural: sDt, + curveStep: lDt, + curveStepAfter: uDt, + curveStepBefore: cDt +}, WPt = /\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi, GPt = function(e, t) { + const r = jAe(e, /(?:init\b)|(?:initialize\b)/); + let n = {}; + if (Array.isArray(r)) { + const o = r.map((l) => l.args); + Y2(o), n = Xc(n, [...o]); + } else + n = r.args; + if (!n) + return; + let i = nU(e, t); + const a = "config"; + return n[a] !== void 0 && (i === "flowchart-v2" && (i = "flowchart"), n[i] = n[a], delete n[a]), n; +}, jAe = function(e, t = null) { + try { + const r = new RegExp( + `[%]{2}(?![{]${WPt.source})(?=[}][%]{2}).* +`, + "ig" + ); + e = e.trim().replace(r, "").replace(/'/gm, '"'), li.debug( + `Detecting diagram directive${t !== null ? " type:" + t : ""} based on the text:${e}` + ); + let n; + const i = []; + for (; (n = q1.exec(e)) !== null; ) + if (n.index === q1.lastIndex && q1.lastIndex++, n && !t || t && n[1] && n[1].match(t) || t && n[2] && n[2].match(t)) { + const a = n[1] ? n[1] : n[2], o = n[3] ? n[3].trim() : n[4] ? JSON.parse(n[4].trim()) : null; + i.push({ type: a, args: o }); + } + return i.length === 0 ? { type: e, args: null } : i.length === 1 ? i[0] : i; + } catch (r) { + return li.error( + `ERROR: ${r.message} - Unable to parse directive type: '${t}' based on the text: '${e}'` + ), { type: void 0, args: null }; + } +}, YPt = function(e) { + return e.replace(q1, ""); +}, XPt = function(e, t) { + for (const [r, n] of t.entries()) + if (n.match(e)) + return r; + return -1; +}; +function KPt(e, t) { + var n; + if (!e) + return t; + const r = `curve${e.charAt(0).toUpperCase() + e.slice(1)}`; + return (n = HPt[r]) != null ? n : t; +} +function ZPt(e, t) { + const r = e.trim(); + if (r) + return t.securityLevel !== "loose" ? Cxe.sanitizeUrl(r) : r; +} +const qPt = (e, ...t) => { + const r = e.split("."), n = r.length - 1, i = r[n]; + let a = window; + for (let o = 0; o < n; o++) + if (a = a[r[o]], !a) { + li.error(`Function name: ${e} not found in window`); + return; + } + a[i](...t); +}; +function $Ae(e, t) { + return !e || !t ? 0 : Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)); +} +function JPt(e) { + let t, r = 0; + e.forEach((i) => { + r += $Ae(i, t), t = i; + }); + const n = r / 2; + return mX(e, n); +} +function QPt(e) { + return e.length === 1 ? e[0] : JPt(e); +} +const ipe = (e, t = 2) => { + const r = Math.pow(10, t); + return Math.round(e * r) / r; +}, mX = (e, t) => { + let r, n = t; + for (const i of e) { + if (r) { + const a = $Ae(i, r); + if (a < n) + n -= a; + else { + const o = n / a; + if (o <= 0) + return r; + if (o >= 1) + return { x: i.x, y: i.y }; + if (o > 0 && o < 1) + return { + x: ipe((1 - o) * r.x + o * i.x, 5), + y: ipe((1 - o) * r.y + o * i.y, 5) + }; + } + } + r = i; + } + throw new Error("Could not find a suitable point for the given distance"); +}, eNt = (e, t, r) => { + li.info(`our points ${JSON.stringify(t)}`), t[0] !== r && (t = t.reverse()); + const i = mX(t, 25), a = e ? 10 : 5, o = Math.atan2(t[0].y - i.y, t[0].x - i.x), l = { x: 0, y: 0 }; + return l.x = Math.sin(o) * a + (t[0].x + i.x) / 2, l.y = -Math.cos(o) * a + (t[0].y + i.y) / 2, l; +}; +function tNt(e, t, r) { + const n = structuredClone(r); + li.info("our points", n), t !== "start_left" && t !== "start_right" && n.reverse(); + const i = 25 + e, a = mX(n, i), o = 10 + e * 0.5, l = Math.atan2(n[0].y - a.y, n[0].x - a.x), u = { x: 0, y: 0 }; + return t === "start_left" ? (u.x = Math.sin(l + Math.PI) * o + (n[0].x + a.x) / 2, u.y = -Math.cos(l + Math.PI) * o + (n[0].y + a.y) / 2) : t === "end_right" ? (u.x = Math.sin(l - Math.PI) * o + (n[0].x + a.x) / 2 - 5, u.y = -Math.cos(l - Math.PI) * o + (n[0].y + a.y) / 2 - 5) : t === "end_left" ? (u.x = Math.sin(l) * o + (n[0].x + a.x) / 2 - 5, u.y = -Math.cos(l) * o + (n[0].y + a.y) / 2 - 5) : (u.x = Math.sin(l) * o + (n[0].x + a.x) / 2, u.y = -Math.cos(l) * o + (n[0].y + a.y) / 2), u; +} +function rNt(e) { + let t = "", r = ""; + for (const n of e) + n !== void 0 && (n.startsWith("color:") || n.startsWith("text-align:") ? r = r + n + ";" : t = t + n + ";"); + return { style: t, labelStyle: r }; +} +let ape = 0; +const nNt = () => (ape++, "id-" + Math.random().toString(36).substr(2, 12) + "-" + ape); +function iNt(e) { + let t = ""; + const r = "0123456789abcdef", n = r.length; + for (let i = 0; i < e; i++) + t += r.charAt(Math.floor(Math.random() * n)); + return t; +} +const aNt = (e) => iNt(e.length), oNt = function() { + return { + x: 0, + y: 0, + fill: void 0, + anchor: "start", + style: "#666", + width: 100, + height: 100, + textMargin: 0, + rx: 0, + ry: 0, + valign: void 0, + text: "" + }; +}, sNt = function(e, t) { + const r = t.text.replace(vX.lineBreakRegex, " "), [, n] = _X(t.fontSize), i = e.append("text"); + i.attr("x", t.x), i.attr("y", t.y), i.style("text-anchor", t.anchor), i.style("font-family", t.fontFamily), i.style("font-size", n), i.style("font-weight", t.fontWeight), i.attr("fill", t.fill), t.class !== void 0 && i.attr("class", t.class); + const a = i.append("tspan"); + return a.attr("x", t.x + t.textMargin * 2), a.attr("fill", t.fill), a.text(r), i; +}, lNt = oO( + (e, t, r) => { + if (!e || (r = Object.assign( + { fontSize: 12, fontWeight: 400, fontFamily: "Arial", joinWith: "
        " }, + r + ), vX.lineBreakRegex.test(e))) + return e; + const n = e.split(" "), i = []; + let a = ""; + return n.forEach((o, l) => { + const u = X2(`${o} `, r), d = X2(a, r); + if (u > t) { + const { hyphenatedStrings: v, remainingWord: y } = cNt(o, t, "-", r); + i.push(a, ...v), a = y; + } else + d + u >= t ? (i.push(a), a = o) : a = [a, o].filter(Boolean).join(" "); + l + 1 === n.length && i.push(a); + }), i.filter((o) => o !== "").join(r.joinWith); + }, + (e, t, r) => `${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}` +), cNt = oO( + (e, t, r = "-", n) => { + n = Object.assign( + { fontSize: 12, fontWeight: 400, fontFamily: "Arial", margin: 0 }, + n + ); + const i = [...e], a = []; + let o = ""; + return i.forEach((l, u) => { + const d = `${o}${l}`; + if (X2(d, n) >= t) { + const g = u + 1, v = i.length === g, y = `${d}${r}`; + a.push(v ? d : y), o = ""; + } else + o = d; + }), { hyphenatedStrings: a, remainingWord: o }; + }, + (e, t, r = "-", n) => `${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}` +); +function uNt(e, t) { + return yX(e, t).height; +} +function X2(e, t) { + return yX(e, t).width; +} +const yX = oO( + (e, t) => { + const { fontSize: r = 12, fontFamily: n = "Arial", fontWeight: i = 400 } = t; + if (!e) + return { width: 0, height: 0 }; + const [, a] = _X(r), o = ["sans-serif", n], l = e.split(vX.lineBreakRegex), u = [], d = ff("body"); + if (!d.remove) + return { width: 0, height: 0, lineHeight: 0 }; + const f = d.append("svg"); + for (const v of o) { + let y = 0; + const C = { width: 0, height: 0, lineHeight: 0 }; + for (const A of l) { + const S = oNt(); + S.text = A || zPt; + const _ = sNt(f, S).style("font-size", a).style("font-weight", i).style("font-family", v), E = (_._groups || _)[0][0].getBBox(); + if (E.width === 0 && E.height === 0) + throw new Error("svg element not in render tree"); + C.width = Math.round(Math.max(C.width, E.width)), y = Math.round(E.height), C.height += y, C.lineHeight = Math.round(Math.max(C.lineHeight, y)); + } + u.push(C); + } + f.remove(); + const g = isNaN(u[1].height) || isNaN(u[1].width) || isNaN(u[1].lineHeight) || u[0].height > u[1].height && u[0].width > u[1].width && u[0].lineHeight > u[1].lineHeight ? 0 : 1; + return u[g]; + }, + (e, t) => `${e}${t.fontSize}${t.fontWeight}${t.fontFamily}` +); +class hNt { + constructor(t = !1, r) { + this.count = 0, this.count = r ? r.length : 0, this.next = t ? () => this.count++ : () => Date.now(); + } +} +let hN; +const dNt = function(e) { + return hN = hN || document.createElement("div"), e = escape(e).replace(/%26/g, "&").replace(/%23/g, "#").replace(/%3B/g, ";"), hN.innerHTML = e, unescape(hN.textContent); +}; +function VAe(e) { + return "str" in e; +} +const fNt = (e, t, r, n) => { + var i; + if (!n) + return; + const a = (i = e.node()) == null ? void 0 : i.getBBox(); + a && e.append("text").text(n).attr("x", a.x + a.width / 2).attr("y", -r).attr("class", t); +}, _X = (e) => { + if (typeof e == "number") + return [e, e + "px"]; + const t = parseInt(e != null ? e : "", 10); + return Number.isNaN(t) ? [void 0, void 0] : e === String(t) ? [t, e + "px"] : [t, e]; +}; +function zAe(e, t) { + return Xkt({}, e, t); +} +const J1 = { + assignWithDepth: Xc, + wrapLabel: lNt, + calculateTextHeight: uNt, + calculateTextWidth: X2, + calculateTextDimensions: yX, + cleanAndMerge: zAe, + detectInit: GPt, + detectDirective: jAe, + isSubstringInArray: XPt, + interpolateToCurve: KPt, + calcLabelPosition: QPt, + calcCardinalityPosition: eNt, + calcTerminalLabelPosition: tNt, + formatUrl: ZPt, + getStylesFromArray: rNt, + generateId: nNt, + random: aNt, + runFunc: qPt, + entityDecode: dNt, + insertTitle: fNt, + parseFontSize: _X, + InitIDGenerator: hNt +}, pNt = function(e) { + let t = e; + return t = t.replace(/style.*:\S*#.*;/g, function(r) { + return r.substring(0, r.length - 1); + }), t = t.replace(/classDef.*:\S*#.*;/g, function(r) { + return r.substring(0, r.length - 1); + }), t = t.replace(/#\w+;/g, function(r) { + const n = r.substring(1, r.length - 1); + return /^\+?\d+$/.test(n) ? "fl°°" + n + "¶ß" : "fl°" + n + "¶ß"; + }), t; +}, gNt = function(e) { + return e.replace(/fl°°/g, "&#").replace(/fl°/g, "&").replace(/¶ß/g, ";"); +}, ope = "10.9.0", oI = Object.freeze(UPt); +let bh = Xc({}, oI), HAe, sI = [], Q1 = Xc({}, oI); +const iU = (e, t) => { + let r = Xc({}, e), n = {}; + for (const i of t) + YAe(i), n = Xc(n, i); + if (r = Xc(r, n), n.theme && n.theme in Vm) { + const i = Xc({}, HAe), a = Xc( + i.themeVariables || {}, + n.themeVariables + ); + r.theme && r.theme in Vm && (r.themeVariables = Vm[r.theme].getThemeVariables(a)); + } + return Q1 = r, XAe(Q1), Q1; +}, vNt = (e) => (bh = Xc({}, oI), bh = Xc(bh, e), e.theme && Vm[e.theme] && (bh.themeVariables = Vm[e.theme].getThemeVariables(e.themeVariables)), iU(bh, sI), bh), mNt = (e) => { + HAe = Xc({}, e); +}, yNt = (e) => (bh = Xc(bh, e), iU(bh, sI), bh), WAe = () => Xc({}, bh), GAe = (e) => (XAe(e), Xc(Q1, e), hv()), hv = () => Xc({}, Q1), YAe = (e) => { + var t; + e && (["secure", ...(t = bh.secure) != null ? t : []].forEach((r) => { + Object.hasOwn(e, r) && (li.debug(`Denied attempt to modify a secure key ${r}`, e[r]), delete e[r]); + }), Object.keys(e).forEach((r) => { + r.startsWith("__") && delete e[r]; + }), Object.keys(e).forEach((r) => { + typeof e[r] == "string" && (e[r].includes("<") || e[r].includes(">") || e[r].includes("url(data:")) && delete e[r], typeof e[r] == "object" && YAe(e[r]); + })); +}, _Nt = (e) => { + Y2(e), e.fontFamily && (!e.themeVariables || !e.themeVariables.fontFamily) && (e.themeVariables = { fontFamily: e.fontFamily }), sI.push(e), iU(bh, sI); +}, K2 = (e = bh) => { + sI = [], iU(e, sI); +}, SNt = { + LAZY_LOAD_DEPRECATED: "The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead." +}, spe = {}, bNt = (e) => { + spe[e] || (li.warn(SNt[e]), spe[e] = !0); +}, XAe = (e) => { + e && (e.lazyLoadedDiagrams || e.loadExternalDiagramsAtStartup) && bNt("LAZY_LOAD_DEPRECATED"); +}, KAe = "c4", ENt = (e) => /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e), CNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./02596f6c.js"); + return { id: KAe, diagram: e }; +}), TNt = { + id: KAe, + detector: ENt, + loader: CNt +}, wNt = TNt, ZAe = "flowchart", INt = (e, t) => { + var r, n; + return ((r = t == null ? void 0 : t.flowchart) == null ? void 0 : r.defaultRenderer) === "dagre-wrapper" || ((n = t == null ? void 0 : t.flowchart) == null ? void 0 : n.defaultRenderer) === "elk" ? !1 : /^\s*graph/.test(e); +}, xNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./5f94a727.js"); + return { id: ZAe, diagram: e }; +}), ANt = { + id: ZAe, + detector: INt, + loader: xNt +}, RNt = ANt, qAe = "flowchart-v2", DNt = (e, t) => { + var r, n, i; + return ((r = t == null ? void 0 : t.flowchart) == null ? void 0 : r.defaultRenderer) === "dagre-d3" || ((n = t == null ? void 0 : t.flowchart) == null ? void 0 : n.defaultRenderer) === "elk" ? !1 : /^\s*graph/.test(e) && ((i = t == null ? void 0 : t.flowchart) == null ? void 0 : i.defaultRenderer) === "dagre-wrapper" ? !0 : /^\s*flowchart/.test(e); +}, ONt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./79929275.js"); + return { id: qAe, diagram: e }; +}), MNt = { + id: qAe, + detector: DNt, + loader: ONt +}, kNt = MNt, JAe = "er", PNt = (e) => /^\s*erDiagram/.test(e), NNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./116e77a5.js"); + return { id: JAe, diagram: e }; +}), LNt = { + id: JAe, + detector: PNt, + loader: NNt +}, FNt = LNt, QAe = "gitGraph", BNt = (e) => /^\s*gitGraph/.test(e), UNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./32cceee9.js"); + return { id: QAe, diagram: e }; +}), jNt = { + id: QAe, + detector: BNt, + loader: UNt +}, $Nt = jNt, e1e = "gantt", VNt = (e) => /^\s*gantt/.test(e), zNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./2d256667.js"); + return { id: e1e, diagram: e }; +}), HNt = { + id: e1e, + detector: VNt, + loader: zNt +}, WNt = HNt, t1e = "info", GNt = (e) => /^\s*info/.test(e), YNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./dcbd4e73.js"); + return { id: t1e, diagram: e }; +}), XNt = { + id: t1e, + detector: GNt, + loader: YNt +}, r1e = "pie", KNt = (e) => /^\s*pie/.test(e), ZNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./e1e81803.js"); + return { id: r1e, diagram: e }; +}), qNt = { + id: r1e, + detector: KNt, + loader: ZNt +}, n1e = "quadrantChart", JNt = (e) => /^\s*quadrantChart/.test(e), QNt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./56525b94.js"); + return { id: n1e, diagram: e }; +}), eLt = { + id: n1e, + detector: JNt, + loader: QNt +}, tLt = eLt, i1e = "xychart", rLt = (e) => /^\s*xychart-beta/.test(e), nLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./728928d2.js"); + return { id: i1e, diagram: e }; +}), iLt = { + id: i1e, + detector: rLt, + loader: nLt +}, aLt = iLt, a1e = "requirement", oLt = (e) => /^\s*requirement(Diagram)?/.test(e), sLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./62954dbd.js"); + return { id: a1e, diagram: e }; +}), lLt = { + id: a1e, + detector: oLt, + loader: sLt +}, cLt = lLt, o1e = "sequence", uLt = (e) => /^\s*sequenceDiagram/.test(e), hLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./e934239f.js"); + return { id: o1e, diagram: e }; +}), dLt = { + id: o1e, + detector: uLt, + loader: hLt +}, fLt = dLt, s1e = "class", pLt = (e, t) => { + var r; + return ((r = t == null ? void 0 : t.class) == null ? void 0 : r.defaultRenderer) === "dagre-wrapper" ? !1 : /^\s*classDiagram/.test(e); +}, gLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./1a7d2804.js"); + return { id: s1e, diagram: e }; +}), vLt = { + id: s1e, + detector: pLt, + loader: gLt +}, mLt = vLt, l1e = "classDiagram", yLt = (e, t) => { + var r; + return /^\s*classDiagram/.test(e) && ((r = t == null ? void 0 : t.class) == null ? void 0 : r.defaultRenderer) === "dagre-wrapper" ? !0 : /^\s*classDiagram-v2/.test(e); +}, _Lt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./fbf3e70e.js"); + return { id: l1e, diagram: e }; +}), SLt = { + id: l1e, + detector: yLt, + loader: _Lt +}, bLt = SLt, c1e = "state", ELt = (e, t) => { + var r; + return ((r = t == null ? void 0 : t.state) == null ? void 0 : r.defaultRenderer) === "dagre-wrapper" ? !1 : /^\s*stateDiagram/.test(e); +}, CLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./cb6c34e7.js"); + return { id: c1e, diagram: e }; +}), TLt = { + id: c1e, + detector: ELt, + loader: CLt +}, wLt = TLt, u1e = "stateDiagram", ILt = (e, t) => { + var r; + return !!(/^\s*stateDiagram-v2/.test(e) || /^\s*stateDiagram/.test(e) && ((r = t == null ? void 0 : t.state) == null ? void 0 : r.defaultRenderer) === "dagre-wrapper"); +}, xLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./0738aeda.js"); + return { id: u1e, diagram: e }; +}), ALt = { + id: u1e, + detector: ILt, + loader: xLt +}, RLt = ALt, h1e = "journey", DLt = (e) => /^\s*journey/.test(e), OLt = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./60619617.js"); + return { id: h1e, diagram: e }; +}), MLt = { + id: h1e, + detector: DLt, + loader: OLt +}, kLt = MLt, PLt = function(e, t) { + for (let r of t) + e.attr(r[0], r[1]); +}, NLt = function(e, t, r) { + let n = /* @__PURE__ */ new Map(); + return r ? (n.set("width", "100%"), n.set("style", `max-width: ${t}px;`)) : (n.set("height", e), n.set("width", t)), n; +}, d1e = function(e, t, r, n) { + const i = NLt(t, r, n); + PLt(e, i); +}, LLt = function(e, t, r, n) { + const i = t.node().getBBox(), a = i.width, o = i.height; + li.info(`SVG bounds: ${a}x${o}`, i); + let l = 0, u = 0; + li.info(`Graph bounds: ${l}x${u}`, e), l = a + r * 2, u = o + r * 2, li.info(`Calculated bounds: ${l}x${u}`), d1e(t, u, l, n); + const d = `${i.x - r} ${i.y - r} ${i.width + 2 * r} ${i.height + 2 * r}`; + t.attr("viewBox", d); +}, nL = {}, FLt = (e, t, r) => { + let n = ""; + return e in nL && nL[e] ? n = nL[e](r) : li.warn(`No theme found for ${e}`), ` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + + ${n} + + ${t} +`; +}, BLt = (e, t) => { + t !== void 0 && (nL[e] = t); +}, ULt = FLt; +let SX = "", bX = "", EX = ""; +const CX = (e) => aD(e, hv()), jLt = () => { + SX = "", EX = "", bX = ""; +}, $Lt = (e) => { + SX = CX(e).replace(/^\s+/g, ""); +}, VLt = () => SX, zLt = (e) => { + EX = CX(e).replace(/\n\s+/g, ` +`); +}, HLt = () => EX, WLt = (e) => { + bX = CX(e); +}, GLt = () => bX, YLt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + clear: jLt, + getAccDescription: HLt, + getAccTitle: VLt, + getDiagramTitle: GLt, + setAccDescription: zLt, + setAccTitle: $Lt, + setDiagramTitle: WLt +}, Symbol.toStringTag, { value: "Module" })), XLt = li, KLt = gX, TX = hv, ijt = GAe, ajt = oI, ZLt = (e) => aD(e, TX()), qLt = LLt, JLt = () => YLt, Z2 = {}, q2 = (e, t, r) => { + var n; + if (Z2[e]) + throw new Error(`Diagram ${e} already registered.`); + Z2[e] = t, r && UAe(e, r), BLt(e, t.styles), (n = t.injectUtils) == null || n.call( + t, + XLt, + KLt, + TX, + ZLt, + qLt, + JLt(), + () => { + } + ); +}, wX = (e) => { + if (e in Z2) + return Z2[e]; + throw new QLt(e); +}; +class QLt extends Error { + constructor(t) { + super(`Diagram ${t} not found.`); + } +} +const e2t = (e) => { + var a; + var t; + const { securityLevel: r } = TX(); + let n = ff("body"); + if (r === "sandbox") { + const l = (a = (t = ff(`#i${e}`).node()) == null ? void 0 : t.contentDocument) != null ? a : document; + n = ff(l.body); + } + return n.select(`#${e}`); +}, t2t = (e, t, r) => { + li.debug(`rendering svg for syntax error +`); + const n = e2t(t), i = n.append("g"); + n.attr("viewBox", "0 0 2412 512"), d1e(n, 100, 512, !0), i.append("path").attr("class", "error-icon").attr( + "d", + "m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z" + ), i.append("path").attr("class", "error-icon").attr( + "d", + "m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z" + ), i.append("path").attr("class", "error-icon").attr( + "d", + "m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z" + ), i.append("path").attr("class", "error-icon").attr( + "d", + "m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z" + ), i.append("path").attr("class", "error-icon").attr( + "d", + "m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z" + ), i.append("path").attr("class", "error-icon").attr( + "d", + "m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z" + ), i.append("text").attr("class", "error-text").attr("x", 1440).attr("y", 250).attr("font-size", "150px").style("text-anchor", "middle").text("Syntax error in text"), i.append("text").attr("class", "error-text").attr("x", 1250).attr("y", 400).attr("font-size", "100px").style("text-anchor", "middle").text(`mermaid version ${r}`); +}, f1e = { draw: t2t }, r2t = f1e, n2t = { + db: {}, + renderer: f1e, + parser: { + parser: { yy: {} }, + parse: () => { + } + } +}, i2t = n2t, p1e = "flowchart-elk", a2t = (e, t) => { + var r; + return ( + // If diagram explicitly states flowchart-elk + !!(/^\s*flowchart-elk/.test(e) || // If a flowchart/graph diagram has their default renderer set to elk + /^\s*flowchart|graph/.test(e) && ((r = t == null ? void 0 : t.flowchart) == null ? void 0 : r.defaultRenderer) === "elk") + ); +}, o2t = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./8de27e61.js"); + return { id: p1e, diagram: e }; +}), s2t = { + id: p1e, + detector: a2t, + loader: o2t +}, l2t = s2t, g1e = "timeline", c2t = (e) => /^\s*timeline/.test(e), u2t = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./0ddaa2bc.js"); + return { id: g1e, diagram: e }; +}), h2t = { + id: g1e, + detector: c2t, + loader: u2t +}, d2t = h2t, v1e = "mindmap", f2t = (e) => /^\s*mindmap/.test(e), p2t = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./35fb67fd.js"); + return { id: v1e, diagram: e }; +}), g2t = { + id: v1e, + detector: f2t, + loader: p2t +}, v2t = g2t, m1e = "sankey", m2t = (e) => /^\s*sankey-beta/.test(e), y2t = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./0933b788.js"); + return { id: m1e, diagram: e }; +}), _2t = { + id: m1e, + detector: m2t, + loader: y2t +}, S2t = _2t, y1e = "block", b2t = (e) => /^\s*block-beta/.test(e), E2t = () => ye(void 0, null, function* () { + const { diagram: e } = yield import("./519a1dac.js"); + return { id: y1e, diagram: e }; +}), C2t = { + id: y1e, + detector: b2t, + loader: E2t +}, T2t = C2t; +let lpe = !1; +const IX = () => { + lpe || (lpe = !0, q2("error", i2t, (e) => e.toLowerCase().trim() === "error"), q2( + "---", + // --- diagram type may appear if YAML front-matter is not parsed correctly + { + db: { + clear: () => { + } + }, + styles: {}, + // should never be used + renderer: { + draw: () => { + } + }, + parser: { + parser: { yy: {} }, + parse: () => { + throw new Error( + "Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks" + ); + } + }, + init: () => null + // no op + }, + (e) => e.toLowerCase().trimStart().startsWith("---") + ), BAe( + wNt, + bLt, + mLt, + FNt, + WNt, + XNt, + qNt, + cLt, + fLt, + l2t, + kNt, + RNt, + v2t, + d2t, + $Nt, + RLt, + wLt, + kLt, + tLt, + S2t, + aLt, + T2t + )); +}; +class _1e { + constructor(t, r = {}) { + this.text = t, this.metadata = r, this.type = "graph", this.text = pNt(t), this.text += ` +`; + const n = hv(); + try { + this.type = nU(t, n); + } catch (a) { + this.type = "error", this.detectError = a; + } + const i = wX(this.type); + li.debug("Type " + this.type), this.db = i.db, this.renderer = i.renderer, this.parser = i.parser, this.parser.parser.yy = this.db, this.init = i.init, this.parse(); + } + parse() { + var t, r, n, i, a; + if (this.detectError) + throw this.detectError; + (r = (t = this.db).clear) == null || r.call(t); + const o = hv(); + (n = this.init) == null || n.call(this, o), this.metadata.title && ((a = (i = this.db).setDiagramTitle) == null || a.call(i, this.metadata.title)), this.parser.parse(this.text); + } + render(t, r) { + return ye(this, null, function* () { + yield this.renderer.draw(this.text, t, r, this); + }); + } + getParser() { + return this.parser; + } + getType() { + return this.type; + } +} +const w2t = (r, ...n) => ye(void 0, [r, ...n], function* (e, t = {}) { + const i = nU(e, hv()); + try { + wX(i); + } catch (a) { + const o = VPt(i); + if (!o) + throw new FAe(`Diagram ${i} not found.`); + const { id: l, diagram: u } = yield o(); + q2(l, u); + } + return new _1e(e, t); +}); +let cpe = []; +const I2t = () => { + cpe.forEach((e) => { + e(); + }), cpe = []; +}, x2t = "graphics-document document"; +function A2t(e, t) { + e.attr("role", x2t), t !== "" && e.attr("aria-roledescription", t); +} +function R2t(e, t, r, n) { + if (e.insert !== void 0) { + if (r) { + const i = `chart-desc-${n}`; + e.attr("aria-describedby", i), e.insert("desc", ":first-child").attr("id", i).text(r); + } + if (t) { + const i = `chart-title-${n}`; + e.attr("aria-labelledby", i), e.insert("title", ":first-child").attr("id", i).text(t); + } + } +} +const D2t = (e) => e.replace(/^\s*%%(?!{)[^\n]+\n?/gm, "").trimStart(); +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ +function S1e(e) { + return typeof e == "undefined" || e === null; +} +function O2t(e) { + return typeof e == "object" && e !== null; +} +function M2t(e) { + return Array.isArray(e) ? e : S1e(e) ? [] : [e]; +} +function k2t(e, t) { + var r, n, i, a; + if (t) + for (a = Object.keys(t), r = 0, n = a.length; r < n; r += 1) + i = a[r], e[i] = t[i]; + return e; +} +function P2t(e, t) { + var r = "", n; + for (n = 0; n < t; n += 1) + r += e; + return r; +} +function N2t(e) { + return e === 0 && Number.NEGATIVE_INFINITY === 1 / e; +} +var L2t = S1e, F2t = O2t, B2t = M2t, U2t = P2t, j2t = N2t, $2t = k2t, Ou = { + isNothing: L2t, + isObject: F2t, + toArray: B2t, + repeat: U2t, + isNegativeZero: j2t, + extend: $2t +}; +function b1e(e, t) { + var r = "", n = e.reason || "(unknown reason)"; + return e.mark ? (e.mark.name && (r += 'in "' + e.mark.name + '" '), r += "(" + (e.mark.line + 1) + ":" + (e.mark.column + 1) + ")", !t && e.mark.snippet && (r += ` + +` + e.mark.snippet), n + " " + r) : n; +} +function oD(e, t) { + Error.call(this), this.name = "YAMLException", this.reason = e, this.mark = t, this.message = b1e(this, !1), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack || ""; +} +oD.prototype = Object.create(Error.prototype); +oD.prototype.constructor = oD; +oD.prototype.toString = function(t) { + return this.name + ": " + b1e(this, t); +}; +var Dm = oD; +function q4(e, t, r, n, i) { + var a = "", o = "", l = Math.floor(i / 2) - 1; + return n - t > l && (a = " ... ", t = n - l + a.length), r - n > l && (o = " ...", r = n + l - o.length), { + str: a + e.slice(t, r).replace(/\t/g, "→") + o, + pos: n - t + a.length + // relative position + }; +} +function J4(e, t) { + return Ou.repeat(" ", t - e.length) + e; +} +function V2t(e, t) { + if (t = Object.create(t || null), !e.buffer) + return null; + t.maxLength || (t.maxLength = 79), typeof t.indent != "number" && (t.indent = 1), typeof t.linesBefore != "number" && (t.linesBefore = 3), typeof t.linesAfter != "number" && (t.linesAfter = 2); + for (var r = /\r?\n|\r|\0/g, n = [0], i = [], a, o = -1; a = r.exec(e.buffer); ) + i.push(a.index), n.push(a.index + a[0].length), e.position <= a.index && o < 0 && (o = n.length - 2); + o < 0 && (o = n.length - 1); + var l = "", u, d, f = Math.min(e.line + t.linesAfter, i.length).toString().length, g = t.maxLength - (t.indent + f + 3); + for (u = 1; u <= t.linesBefore && !(o - u < 0); u++) + d = q4( + e.buffer, + n[o - u], + i[o - u], + e.position - (n[o] - n[o - u]), + g + ), l = Ou.repeat(" ", t.indent) + J4((e.line - u + 1).toString(), f) + " | " + d.str + ` +` + l; + for (d = q4(e.buffer, n[o], i[o], e.position, g), l += Ou.repeat(" ", t.indent) + J4((e.line + 1).toString(), f) + " | " + d.str + ` +`, l += Ou.repeat("-", t.indent + f + 3 + d.pos) + `^ +`, u = 1; u <= t.linesAfter && !(o + u >= i.length); u++) + d = q4( + e.buffer, + n[o + u], + i[o + u], + e.position - (n[o] - n[o + u]), + g + ), l += Ou.repeat(" ", t.indent) + J4((e.line + u + 1).toString(), f) + " | " + d.str + ` +`; + return l.replace(/\n$/, ""); +} +var z2t = V2t, H2t = [ + "kind", + "multi", + "resolve", + "construct", + "instanceOf", + "predicate", + "represent", + "representName", + "defaultStyle", + "styleAliases" +], W2t = [ + "scalar", + "sequence", + "mapping" +]; +function G2t(e) { + var t = {}; + return e !== null && Object.keys(e).forEach(function(r) { + e[r].forEach(function(n) { + t[String(n)] = r; + }); + }), t; +} +function Y2t(e, t) { + if (t = t || {}, Object.keys(t).forEach(function(r) { + if (H2t.indexOf(r) === -1) + throw new Dm('Unknown option "' + r + '" is met in definition of "' + e + '" YAML type.'); + }), this.options = t, this.tag = e, this.kind = t.kind || null, this.resolve = t.resolve || function() { + return !0; + }, this.construct = t.construct || function(r) { + return r; + }, this.instanceOf = t.instanceOf || null, this.predicate = t.predicate || null, this.represent = t.represent || null, this.representName = t.representName || null, this.defaultStyle = t.defaultStyle || null, this.multi = t.multi || !1, this.styleAliases = G2t(t.styleAliases || null), W2t.indexOf(this.kind) === -1) + throw new Dm('Unknown kind "' + this.kind + '" is specified for "' + e + '" YAML type.'); +} +var Jc = Y2t; +function upe(e, t) { + var r = []; + return e[t].forEach(function(n) { + var i = r.length; + r.forEach(function(a, o) { + a.tag === n.tag && a.kind === n.kind && a.multi === n.multi && (i = o); + }), r[i] = n; + }), r; +} +function X2t() { + var e = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, t, r; + function n(i) { + i.multi ? (e.multi[i.kind].push(i), e.multi.fallback.push(i)) : e[i.kind][i.tag] = e.fallback[i.tag] = i; + } + for (t = 0, r = arguments.length; t < r; t += 1) + arguments[t].forEach(n); + return e; +} +function U6(e) { + return this.extend(e); +} +U6.prototype.extend = function(t) { + var r = [], n = []; + if (t instanceof Jc) + n.push(t); + else if (Array.isArray(t)) + n = n.concat(t); + else if (t && (Array.isArray(t.implicit) || Array.isArray(t.explicit))) + t.implicit && (r = r.concat(t.implicit)), t.explicit && (n = n.concat(t.explicit)); + else + throw new Dm("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })"); + r.forEach(function(a) { + if (!(a instanceof Jc)) + throw new Dm("Specified list of YAML types (or a single Type object) contains a non-Type object."); + if (a.loadKind && a.loadKind !== "scalar") + throw new Dm("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."); + if (a.multi) + throw new Dm("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit."); + }), n.forEach(function(a) { + if (!(a instanceof Jc)) + throw new Dm("Specified list of YAML types (or a single Type object) contains a non-Type object."); + }); + var i = Object.create(U6.prototype); + return i.implicit = (this.implicit || []).concat(r), i.explicit = (this.explicit || []).concat(n), i.compiledImplicit = upe(i, "implicit"), i.compiledExplicit = upe(i, "explicit"), i.compiledTypeMap = X2t(i.compiledImplicit, i.compiledExplicit), i; +}; +var K2t = U6, Z2t = new Jc("tag:yaml.org,2002:str", { + kind: "scalar", + construct: function(e) { + return e !== null ? e : ""; + } +}), q2t = new Jc("tag:yaml.org,2002:seq", { + kind: "sequence", + construct: function(e) { + return e !== null ? e : []; + } +}), J2t = new Jc("tag:yaml.org,2002:map", { + kind: "mapping", + construct: function(e) { + return e !== null ? e : {}; + } +}), Q2t = new K2t({ + explicit: [ + Z2t, + q2t, + J2t + ] +}); +function eFt(e) { + if (e === null) + return !0; + var t = e.length; + return t === 1 && e === "~" || t === 4 && (e === "null" || e === "Null" || e === "NULL"); +} +function tFt() { + return null; +} +function rFt(e) { + return e === null; +} +var nFt = new Jc("tag:yaml.org,2002:null", { + kind: "scalar", + resolve: eFt, + construct: tFt, + predicate: rFt, + represent: { + canonical: function() { + return "~"; + }, + lowercase: function() { + return "null"; + }, + uppercase: function() { + return "NULL"; + }, + camelcase: function() { + return "Null"; + }, + empty: function() { + return ""; + } + }, + defaultStyle: "lowercase" +}); +function iFt(e) { + if (e === null) + return !1; + var t = e.length; + return t === 4 && (e === "true" || e === "True" || e === "TRUE") || t === 5 && (e === "false" || e === "False" || e === "FALSE"); +} +function aFt(e) { + return e === "true" || e === "True" || e === "TRUE"; +} +function oFt(e) { + return Object.prototype.toString.call(e) === "[object Boolean]"; +} +var sFt = new Jc("tag:yaml.org,2002:bool", { + kind: "scalar", + resolve: iFt, + construct: aFt, + predicate: oFt, + represent: { + lowercase: function(e) { + return e ? "true" : "false"; + }, + uppercase: function(e) { + return e ? "TRUE" : "FALSE"; + }, + camelcase: function(e) { + return e ? "True" : "False"; + } + }, + defaultStyle: "lowercase" +}); +function lFt(e) { + return 48 <= e && e <= 57 || 65 <= e && e <= 70 || 97 <= e && e <= 102; +} +function cFt(e) { + return 48 <= e && e <= 55; +} +function uFt(e) { + return 48 <= e && e <= 57; +} +function hFt(e) { + if (e === null) + return !1; + var t = e.length, r = 0, n = !1, i; + if (!t) + return !1; + if (i = e[r], (i === "-" || i === "+") && (i = e[++r]), i === "0") { + if (r + 1 === t) + return !0; + if (i = e[++r], i === "b") { + for (r++; r < t; r++) + if (i = e[r], i !== "_") { + if (i !== "0" && i !== "1") + return !1; + n = !0; + } + return n && i !== "_"; + } + if (i === "x") { + for (r++; r < t; r++) + if (i = e[r], i !== "_") { + if (!lFt(e.charCodeAt(r))) + return !1; + n = !0; + } + return n && i !== "_"; + } + if (i === "o") { + for (r++; r < t; r++) + if (i = e[r], i !== "_") { + if (!cFt(e.charCodeAt(r))) + return !1; + n = !0; + } + return n && i !== "_"; + } + } + if (i === "_") + return !1; + for (; r < t; r++) + if (i = e[r], i !== "_") { + if (!uFt(e.charCodeAt(r))) + return !1; + n = !0; + } + return !(!n || i === "_"); +} +function dFt(e) { + var t = e, r = 1, n; + if (t.indexOf("_") !== -1 && (t = t.replace(/_/g, "")), n = t[0], (n === "-" || n === "+") && (n === "-" && (r = -1), t = t.slice(1), n = t[0]), t === "0") + return 0; + if (n === "0") { + if (t[1] === "b") + return r * parseInt(t.slice(2), 2); + if (t[1] === "x") + return r * parseInt(t.slice(2), 16); + if (t[1] === "o") + return r * parseInt(t.slice(2), 8); + } + return r * parseInt(t, 10); +} +function fFt(e) { + return Object.prototype.toString.call(e) === "[object Number]" && e % 1 === 0 && !Ou.isNegativeZero(e); +} +var pFt = new Jc("tag:yaml.org,2002:int", { + kind: "scalar", + resolve: hFt, + construct: dFt, + predicate: fFt, + represent: { + binary: function(e) { + return e >= 0 ? "0b" + e.toString(2) : "-0b" + e.toString(2).slice(1); + }, + octal: function(e) { + return e >= 0 ? "0o" + e.toString(8) : "-0o" + e.toString(8).slice(1); + }, + decimal: function(e) { + return e.toString(10); + }, + /* eslint-disable max-len */ + hexadecimal: function(e) { + return e >= 0 ? "0x" + e.toString(16).toUpperCase() : "-0x" + e.toString(16).toUpperCase().slice(1); + } + }, + defaultStyle: "decimal", + styleAliases: { + binary: [2, "bin"], + octal: [8, "oct"], + decimal: [10, "dec"], + hexadecimal: [16, "hex"] + } +}), gFt = new RegExp( + // 2.5e4, 2.5 and integers + "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$" +); +function vFt(e) { + return !(e === null || !gFt.test(e) || // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + e[e.length - 1] === "_"); +} +function mFt(e) { + var t, r; + return t = e.replace(/_/g, "").toLowerCase(), r = t[0] === "-" ? -1 : 1, "+-".indexOf(t[0]) >= 0 && (t = t.slice(1)), t === ".inf" ? r === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY : t === ".nan" ? NaN : r * parseFloat(t, 10); +} +var yFt = /^[-+]?[0-9]+e/; +function _Ft(e, t) { + var r; + if (isNaN(e)) + switch (t) { + case "lowercase": + return ".nan"; + case "uppercase": + return ".NAN"; + case "camelcase": + return ".NaN"; + } + else if (Number.POSITIVE_INFINITY === e) + switch (t) { + case "lowercase": + return ".inf"; + case "uppercase": + return ".INF"; + case "camelcase": + return ".Inf"; + } + else if (Number.NEGATIVE_INFINITY === e) + switch (t) { + case "lowercase": + return "-.inf"; + case "uppercase": + return "-.INF"; + case "camelcase": + return "-.Inf"; + } + else if (Ou.isNegativeZero(e)) + return "-0.0"; + return r = e.toString(10), yFt.test(r) ? r.replace("e", ".e") : r; +} +function SFt(e) { + return Object.prototype.toString.call(e) === "[object Number]" && (e % 1 !== 0 || Ou.isNegativeZero(e)); +} +var bFt = new Jc("tag:yaml.org,2002:float", { + kind: "scalar", + resolve: vFt, + construct: mFt, + predicate: SFt, + represent: _Ft, + defaultStyle: "lowercase" +}), E1e = Q2t.extend({ + implicit: [ + nFt, + sFt, + pFt, + bFt + ] +}), EFt = E1e, C1e = new RegExp( + "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$" +), T1e = new RegExp( + "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$" +); +function CFt(e) { + return e === null ? !1 : C1e.exec(e) !== null || T1e.exec(e) !== null; +} +function TFt(e) { + var t, r, n, i, a, o, l, u = 0, d = null, f, g, v; + if (t = C1e.exec(e), t === null && (t = T1e.exec(e)), t === null) + throw new Error("Date resolve error"); + if (r = +t[1], n = +t[2] - 1, i = +t[3], !t[4]) + return new Date(Date.UTC(r, n, i)); + if (a = +t[4], o = +t[5], l = +t[6], t[7]) { + for (u = t[7].slice(0, 3); u.length < 3; ) + u += "0"; + u = +u; + } + return t[9] && (f = +t[10], g = +(t[11] || 0), d = (f * 60 + g) * 6e4, t[9] === "-" && (d = -d)), v = new Date(Date.UTC(r, n, i, a, o, l, u)), d && v.setTime(v.getTime() - d), v; +} +function wFt(e) { + return e.toISOString(); +} +var IFt = new Jc("tag:yaml.org,2002:timestamp", { + kind: "scalar", + resolve: CFt, + construct: TFt, + instanceOf: Date, + represent: wFt +}); +function xFt(e) { + return e === "<<" || e === null; +} +var AFt = new Jc("tag:yaml.org,2002:merge", { + kind: "scalar", + resolve: xFt +}), xX = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`; +function RFt(e) { + if (e === null) + return !1; + var t, r, n = 0, i = e.length, a = xX; + for (r = 0; r < i; r++) + if (t = a.indexOf(e.charAt(r)), !(t > 64)) { + if (t < 0) + return !1; + n += 6; + } + return n % 8 === 0; +} +function DFt(e) { + var t, r, n = e.replace(/[\r\n=]/g, ""), i = n.length, a = xX, o = 0, l = []; + for (t = 0; t < i; t++) + t % 4 === 0 && t && (l.push(o >> 16 & 255), l.push(o >> 8 & 255), l.push(o & 255)), o = o << 6 | a.indexOf(n.charAt(t)); + return r = i % 4 * 6, r === 0 ? (l.push(o >> 16 & 255), l.push(o >> 8 & 255), l.push(o & 255)) : r === 18 ? (l.push(o >> 10 & 255), l.push(o >> 2 & 255)) : r === 12 && l.push(o >> 4 & 255), new Uint8Array(l); +} +function OFt(e) { + var t = "", r = 0, n, i, a = e.length, o = xX; + for (n = 0; n < a; n++) + n % 3 === 0 && n && (t += o[r >> 18 & 63], t += o[r >> 12 & 63], t += o[r >> 6 & 63], t += o[r & 63]), r = (r << 8) + e[n]; + return i = a % 3, i === 0 ? (t += o[r >> 18 & 63], t += o[r >> 12 & 63], t += o[r >> 6 & 63], t += o[r & 63]) : i === 2 ? (t += o[r >> 10 & 63], t += o[r >> 4 & 63], t += o[r << 2 & 63], t += o[64]) : i === 1 && (t += o[r >> 2 & 63], t += o[r << 4 & 63], t += o[64], t += o[64]), t; +} +function MFt(e) { + return Object.prototype.toString.call(e) === "[object Uint8Array]"; +} +var kFt = new Jc("tag:yaml.org,2002:binary", { + kind: "scalar", + resolve: RFt, + construct: DFt, + predicate: MFt, + represent: OFt +}), PFt = Object.prototype.hasOwnProperty, NFt = Object.prototype.toString; +function LFt(e) { + if (e === null) + return !0; + var t = [], r, n, i, a, o, l = e; + for (r = 0, n = l.length; r < n; r += 1) { + if (i = l[r], o = !1, NFt.call(i) !== "[object Object]") + return !1; + for (a in i) + if (PFt.call(i, a)) + if (!o) + o = !0; + else + return !1; + if (!o) + return !1; + if (t.indexOf(a) === -1) + t.push(a); + else + return !1; + } + return !0; +} +function FFt(e) { + return e !== null ? e : []; +} +var BFt = new Jc("tag:yaml.org,2002:omap", { + kind: "sequence", + resolve: LFt, + construct: FFt +}), UFt = Object.prototype.toString; +function jFt(e) { + if (e === null) + return !0; + var t, r, n, i, a, o = e; + for (a = new Array(o.length), t = 0, r = o.length; t < r; t += 1) { + if (n = o[t], UFt.call(n) !== "[object Object]" || (i = Object.keys(n), i.length !== 1)) + return !1; + a[t] = [i[0], n[i[0]]]; + } + return !0; +} +function $Ft(e) { + if (e === null) + return []; + var t, r, n, i, a, o = e; + for (a = new Array(o.length), t = 0, r = o.length; t < r; t += 1) + n = o[t], i = Object.keys(n), a[t] = [i[0], n[i[0]]]; + return a; +} +var VFt = new Jc("tag:yaml.org,2002:pairs", { + kind: "sequence", + resolve: jFt, + construct: $Ft +}), zFt = Object.prototype.hasOwnProperty; +function HFt(e) { + if (e === null) + return !0; + var t, r = e; + for (t in r) + if (zFt.call(r, t) && r[t] !== null) + return !1; + return !0; +} +function WFt(e) { + return e !== null ? e : {}; +} +var GFt = new Jc("tag:yaml.org,2002:set", { + kind: "mapping", + resolve: HFt, + construct: WFt +}), YFt = EFt.extend({ + implicit: [ + IFt, + AFt + ], + explicit: [ + kFt, + BFt, + VFt, + GFt + ] +}), x0 = Object.prototype.hasOwnProperty, J2 = 1, w1e = 2, I1e = 3, Q2 = 4, Q4 = 1, XFt = 2, hpe = 3, KFt = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/, ZFt = /[\x85\u2028\u2029]/, qFt = /[,\[\]\{\}]/, x1e = /^(?:!|!!|![a-z\-]+!)$/i, A1e = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; +function dpe(e) { + return Object.prototype.toString.call(e); +} +function nv(e) { + return e === 10 || e === 13; +} +function oE(e) { + return e === 9 || e === 32; +} +function Ih(e) { + return e === 9 || e === 32 || e === 10 || e === 13; +} +function vw(e) { + return e === 44 || e === 91 || e === 93 || e === 123 || e === 125; +} +function JFt(e) { + var t; + return 48 <= e && e <= 57 ? e - 48 : (t = e | 32, 97 <= t && t <= 102 ? t - 97 + 10 : -1); +} +function QFt(e) { + return e === 120 ? 2 : e === 117 ? 4 : e === 85 ? 8 : 0; +} +function eBt(e) { + return 48 <= e && e <= 57 ? e - 48 : -1; +} +function fpe(e) { + return e === 48 ? "\0" : e === 97 ? "\x07" : e === 98 ? "\b" : e === 116 || e === 9 ? " " : e === 110 ? ` +` : e === 118 ? "\v" : e === 102 ? "\f" : e === 114 ? "\r" : e === 101 ? "\x1B" : e === 32 ? " " : e === 34 ? '"' : e === 47 ? "/" : e === 92 ? "\\" : e === 78 ? "…" : e === 95 ? " " : e === 76 ? "\u2028" : e === 80 ? "\u2029" : ""; +} +function tBt(e) { + return e <= 65535 ? String.fromCharCode(e) : String.fromCharCode( + (e - 65536 >> 10) + 55296, + (e - 65536 & 1023) + 56320 + ); +} +var R1e = new Array(256), D1e = new Array(256); +for (var YT = 0; YT < 256; YT++) + R1e[YT] = fpe(YT) ? 1 : 0, D1e[YT] = fpe(YT); +function rBt(e, t) { + this.input = e, this.filename = t.filename || null, this.schema = t.schema || YFt, this.onWarning = t.onWarning || null, this.legacy = t.legacy || !1, this.json = t.json || !1, this.listener = t.listener || null, this.implicitTypes = this.schema.compiledImplicit, this.typeMap = this.schema.compiledTypeMap, this.length = e.length, this.position = 0, this.line = 0, this.lineStart = 0, this.lineIndent = 0, this.firstTabInLine = -1, this.documents = []; +} +function O1e(e, t) { + var r = { + name: e.filename, + buffer: e.input.slice(0, -1), + // omit trailing \0 + position: e.position, + line: e.line, + column: e.position - e.lineStart + }; + return r.snippet = z2t(r), new Dm(t, r); +} +function qn(e, t) { + throw O1e(e, t); +} +function eF(e, t) { + e.onWarning && e.onWarning.call(null, O1e(e, t)); +} +var ppe = { + YAML: function(t, r, n) { + var i, a, o; + t.version !== null && qn(t, "duplication of %YAML directive"), n.length !== 1 && qn(t, "YAML directive accepts exactly one argument"), i = /^([0-9]+)\.([0-9]+)$/.exec(n[0]), i === null && qn(t, "ill-formed argument of the YAML directive"), a = parseInt(i[1], 10), o = parseInt(i[2], 10), a !== 1 && qn(t, "unacceptable YAML version of the document"), t.version = n[0], t.checkLineBreaks = o < 2, o !== 1 && o !== 2 && eF(t, "unsupported YAML version of the document"); + }, + TAG: function(t, r, n) { + var i, a; + n.length !== 2 && qn(t, "TAG directive accepts exactly two arguments"), i = n[0], a = n[1], x1e.test(i) || qn(t, "ill-formed tag handle (first argument) of the TAG directive"), x0.call(t.tagMap, i) && qn(t, 'there is a previously declared suffix for "' + i + '" tag handle'), A1e.test(a) || qn(t, "ill-formed tag prefix (second argument) of the TAG directive"); + try { + a = decodeURIComponent(a); + } catch (o) { + qn(t, "tag prefix is malformed: " + a); + } + t.tagMap[i] = a; + } +}; +function f0(e, t, r, n) { + var i, a, o, l; + if (t < r) { + if (l = e.input.slice(t, r), n) + for (i = 0, a = l.length; i < a; i += 1) + o = l.charCodeAt(i), o === 9 || 32 <= o && o <= 1114111 || qn(e, "expected valid JSON character"); + else + KFt.test(l) && qn(e, "the stream contains non-printable characters"); + e.result += l; + } +} +function gpe(e, t, r, n) { + var i, a, o, l; + for (Ou.isObject(r) || qn(e, "cannot merge mappings; the provided source object is unacceptable"), i = Object.keys(r), o = 0, l = i.length; o < l; o += 1) + a = i[o], x0.call(t, a) || (t[a] = r[a], n[a] = !0); +} +function mw(e, t, r, n, i, a, o, l, u) { + var d, f; + if (Array.isArray(i)) + for (i = Array.prototype.slice.call(i), d = 0, f = i.length; d < f; d += 1) + Array.isArray(i[d]) && qn(e, "nested arrays are not supported inside keys"), typeof i == "object" && dpe(i[d]) === "[object Object]" && (i[d] = "[object Object]"); + if (typeof i == "object" && dpe(i) === "[object Object]" && (i = "[object Object]"), i = String(i), t === null && (t = {}), n === "tag:yaml.org,2002:merge") + if (Array.isArray(a)) + for (d = 0, f = a.length; d < f; d += 1) + gpe(e, t, a[d], r); + else + gpe(e, t, a, r); + else + !e.json && !x0.call(r, i) && x0.call(t, i) && (e.line = o || e.line, e.lineStart = l || e.lineStart, e.position = u || e.position, qn(e, "duplicated mapping key")), i === "__proto__" ? Object.defineProperty(t, i, { + configurable: !0, + enumerable: !0, + writable: !0, + value: a + }) : t[i] = a, delete r[i]; + return t; +} +function AX(e) { + var t; + t = e.input.charCodeAt(e.position), t === 10 ? e.position++ : t === 13 ? (e.position++, e.input.charCodeAt(e.position) === 10 && e.position++) : qn(e, "a line break is expected"), e.line += 1, e.lineStart = e.position, e.firstTabInLine = -1; +} +function vl(e, t, r) { + for (var n = 0, i = e.input.charCodeAt(e.position); i !== 0; ) { + for (; oE(i); ) + i === 9 && e.firstTabInLine === -1 && (e.firstTabInLine = e.position), i = e.input.charCodeAt(++e.position); + if (t && i === 35) + do + i = e.input.charCodeAt(++e.position); + while (i !== 10 && i !== 13 && i !== 0); + if (nv(i)) + for (AX(e), i = e.input.charCodeAt(e.position), n++, e.lineIndent = 0; i === 32; ) + e.lineIndent++, i = e.input.charCodeAt(++e.position); + else + break; + } + return r !== -1 && n !== 0 && e.lineIndent < r && eF(e, "deficient indentation"), n; +} +function aU(e) { + var t = e.position, r; + return r = e.input.charCodeAt(t), !!((r === 45 || r === 46) && r === e.input.charCodeAt(t + 1) && r === e.input.charCodeAt(t + 2) && (t += 3, r = e.input.charCodeAt(t), r === 0 || Ih(r))); +} +function RX(e, t) { + t === 1 ? e.result += " " : t > 1 && (e.result += Ou.repeat(` +`, t - 1)); +} +function nBt(e, t, r) { + var n, i, a, o, l, u, d, f, g = e.kind, v = e.result, y; + if (y = e.input.charCodeAt(e.position), Ih(y) || vw(y) || y === 35 || y === 38 || y === 42 || y === 33 || y === 124 || y === 62 || y === 39 || y === 34 || y === 37 || y === 64 || y === 96 || (y === 63 || y === 45) && (i = e.input.charCodeAt(e.position + 1), Ih(i) || r && vw(i))) + return !1; + for (e.kind = "scalar", e.result = "", a = o = e.position, l = !1; y !== 0; ) { + if (y === 58) { + if (i = e.input.charCodeAt(e.position + 1), Ih(i) || r && vw(i)) + break; + } else if (y === 35) { + if (n = e.input.charCodeAt(e.position - 1), Ih(n)) + break; + } else { + if (e.position === e.lineStart && aU(e) || r && vw(y)) + break; + if (nv(y)) + if (u = e.line, d = e.lineStart, f = e.lineIndent, vl(e, !1, -1), e.lineIndent >= t) { + l = !0, y = e.input.charCodeAt(e.position); + continue; + } else { + e.position = o, e.line = u, e.lineStart = d, e.lineIndent = f; + break; + } + } + l && (f0(e, a, o, !1), RX(e, e.line - u), a = o = e.position, l = !1), oE(y) || (o = e.position + 1), y = e.input.charCodeAt(++e.position); + } + return f0(e, a, o, !1), e.result ? !0 : (e.kind = g, e.result = v, !1); +} +function iBt(e, t) { + var r, n, i; + if (r = e.input.charCodeAt(e.position), r !== 39) + return !1; + for (e.kind = "scalar", e.result = "", e.position++, n = i = e.position; (r = e.input.charCodeAt(e.position)) !== 0; ) + if (r === 39) + if (f0(e, n, e.position, !0), r = e.input.charCodeAt(++e.position), r === 39) + n = e.position, e.position++, i = e.position; + else + return !0; + else + nv(r) ? (f0(e, n, i, !0), RX(e, vl(e, !1, t)), n = i = e.position) : e.position === e.lineStart && aU(e) ? qn(e, "unexpected end of the document within a single quoted scalar") : (e.position++, i = e.position); + qn(e, "unexpected end of the stream within a single quoted scalar"); +} +function aBt(e, t) { + var r, n, i, a, o, l; + if (l = e.input.charCodeAt(e.position), l !== 34) + return !1; + for (e.kind = "scalar", e.result = "", e.position++, r = n = e.position; (l = e.input.charCodeAt(e.position)) !== 0; ) { + if (l === 34) + return f0(e, r, e.position, !0), e.position++, !0; + if (l === 92) { + if (f0(e, r, e.position, !0), l = e.input.charCodeAt(++e.position), nv(l)) + vl(e, !1, t); + else if (l < 256 && R1e[l]) + e.result += D1e[l], e.position++; + else if ((o = QFt(l)) > 0) { + for (i = o, a = 0; i > 0; i--) + l = e.input.charCodeAt(++e.position), (o = JFt(l)) >= 0 ? a = (a << 4) + o : qn(e, "expected hexadecimal character"); + e.result += tBt(a), e.position++; + } else + qn(e, "unknown escape sequence"); + r = n = e.position; + } else + nv(l) ? (f0(e, r, n, !0), RX(e, vl(e, !1, t)), r = n = e.position) : e.position === e.lineStart && aU(e) ? qn(e, "unexpected end of the document within a double quoted scalar") : (e.position++, n = e.position); + } + qn(e, "unexpected end of the stream within a double quoted scalar"); +} +function oBt(e, t) { + var r = !0, n, i, a, o = e.tag, l, u = e.anchor, d, f, g, v, y, C = /* @__PURE__ */ Object.create(null), A, S, _, E; + if (E = e.input.charCodeAt(e.position), E === 91) + f = 93, y = !1, l = []; + else if (E === 123) + f = 125, y = !0, l = {}; + else + return !1; + for (e.anchor !== null && (e.anchorMap[e.anchor] = l), E = e.input.charCodeAt(++e.position); E !== 0; ) { + if (vl(e, !0, t), E = e.input.charCodeAt(e.position), E === f) + return e.position++, e.tag = o, e.anchor = u, e.kind = y ? "mapping" : "sequence", e.result = l, !0; + r ? E === 44 && qn(e, "expected the node content, but found ','") : qn(e, "missed comma between flow collection entries"), S = A = _ = null, g = v = !1, E === 63 && (d = e.input.charCodeAt(e.position + 1), Ih(d) && (g = v = !0, e.position++, vl(e, !0, t))), n = e.line, i = e.lineStart, a = e.position, lI(e, t, J2, !1, !0), S = e.tag, A = e.result, vl(e, !0, t), E = e.input.charCodeAt(e.position), (v || e.line === n) && E === 58 && (g = !0, E = e.input.charCodeAt(++e.position), vl(e, !0, t), lI(e, t, J2, !1, !0), _ = e.result), y ? mw(e, l, C, S, A, _, n, i, a) : g ? l.push(mw(e, null, C, S, A, _, n, i, a)) : l.push(A), vl(e, !0, t), E = e.input.charCodeAt(e.position), E === 44 ? (r = !0, E = e.input.charCodeAt(++e.position)) : r = !1; + } + qn(e, "unexpected end of the stream within a flow collection"); +} +function sBt(e, t) { + var r, n, i = Q4, a = !1, o = !1, l = t, u = 0, d = !1, f, g; + if (g = e.input.charCodeAt(e.position), g === 124) + n = !1; + else if (g === 62) + n = !0; + else + return !1; + for (e.kind = "scalar", e.result = ""; g !== 0; ) + if (g = e.input.charCodeAt(++e.position), g === 43 || g === 45) + Q4 === i ? i = g === 43 ? hpe : XFt : qn(e, "repeat of a chomping mode identifier"); + else if ((f = eBt(g)) >= 0) + f === 0 ? qn(e, "bad explicit indentation width of a block scalar; it cannot be less than one") : o ? qn(e, "repeat of an indentation width identifier") : (l = t + f - 1, o = !0); + else + break; + if (oE(g)) { + do + g = e.input.charCodeAt(++e.position); + while (oE(g)); + if (g === 35) + do + g = e.input.charCodeAt(++e.position); + while (!nv(g) && g !== 0); + } + for (; g !== 0; ) { + for (AX(e), e.lineIndent = 0, g = e.input.charCodeAt(e.position); (!o || e.lineIndent < l) && g === 32; ) + e.lineIndent++, g = e.input.charCodeAt(++e.position); + if (!o && e.lineIndent > l && (l = e.lineIndent), nv(g)) { + u++; + continue; + } + if (e.lineIndent < l) { + i === hpe ? e.result += Ou.repeat(` +`, a ? 1 + u : u) : i === Q4 && a && (e.result += ` +`); + break; + } + for (n ? oE(g) ? (d = !0, e.result += Ou.repeat(` +`, a ? 1 + u : u)) : d ? (d = !1, e.result += Ou.repeat(` +`, u + 1)) : u === 0 ? a && (e.result += " ") : e.result += Ou.repeat(` +`, u) : e.result += Ou.repeat(` +`, a ? 1 + u : u), a = !0, o = !0, u = 0, r = e.position; !nv(g) && g !== 0; ) + g = e.input.charCodeAt(++e.position); + f0(e, r, e.position, !1); + } + return !0; +} +function vpe(e, t) { + var r, n = e.tag, i = e.anchor, a = [], o, l = !1, u; + if (e.firstTabInLine !== -1) + return !1; + for (e.anchor !== null && (e.anchorMap[e.anchor] = a), u = e.input.charCodeAt(e.position); u !== 0 && (e.firstTabInLine !== -1 && (e.position = e.firstTabInLine, qn(e, "tab characters must not be used in indentation")), !(u !== 45 || (o = e.input.charCodeAt(e.position + 1), !Ih(o)))); ) { + if (l = !0, e.position++, vl(e, !0, -1) && e.lineIndent <= t) { + a.push(null), u = e.input.charCodeAt(e.position); + continue; + } + if (r = e.line, lI(e, t, I1e, !1, !0), a.push(e.result), vl(e, !0, -1), u = e.input.charCodeAt(e.position), (e.line === r || e.lineIndent > t) && u !== 0) + qn(e, "bad indentation of a sequence entry"); + else if (e.lineIndent < t) + break; + } + return l ? (e.tag = n, e.anchor = i, e.kind = "sequence", e.result = a, !0) : !1; +} +function lBt(e, t, r) { + var n, i, a, o, l, u, d = e.tag, f = e.anchor, g = {}, v = /* @__PURE__ */ Object.create(null), y = null, C = null, A = null, S = !1, _ = !1, E; + if (e.firstTabInLine !== -1) + return !1; + for (e.anchor !== null && (e.anchorMap[e.anchor] = g), E = e.input.charCodeAt(e.position); E !== 0; ) { + if (!S && e.firstTabInLine !== -1 && (e.position = e.firstTabInLine, qn(e, "tab characters must not be used in indentation")), n = e.input.charCodeAt(e.position + 1), a = e.line, (E === 63 || E === 58) && Ih(n)) + E === 63 ? (S && (mw(e, g, v, y, C, null, o, l, u), y = C = A = null), _ = !0, S = !0, i = !0) : S ? (S = !1, i = !0) : qn(e, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"), e.position += 1, E = n; + else { + if (o = e.line, l = e.lineStart, u = e.position, !lI(e, r, w1e, !1, !0)) + break; + if (e.line === a) { + for (E = e.input.charCodeAt(e.position); oE(E); ) + E = e.input.charCodeAt(++e.position); + if (E === 58) + E = e.input.charCodeAt(++e.position), Ih(E) || qn(e, "a whitespace character is expected after the key-value separator within a block mapping"), S && (mw(e, g, v, y, C, null, o, l, u), y = C = A = null), _ = !0, S = !1, i = !1, y = e.tag, C = e.result; + else if (_) + qn(e, "can not read an implicit mapping pair; a colon is missed"); + else + return e.tag = d, e.anchor = f, !0; + } else if (_) + qn(e, "can not read a block mapping entry; a multiline key may not be an implicit key"); + else + return e.tag = d, e.anchor = f, !0; + } + if ((e.line === a || e.lineIndent > t) && (S && (o = e.line, l = e.lineStart, u = e.position), lI(e, t, Q2, !0, i) && (S ? C = e.result : A = e.result), S || (mw(e, g, v, y, C, A, o, l, u), y = C = A = null), vl(e, !0, -1), E = e.input.charCodeAt(e.position)), (e.line === a || e.lineIndent > t) && E !== 0) + qn(e, "bad indentation of a mapping entry"); + else if (e.lineIndent < t) + break; + } + return S && mw(e, g, v, y, C, null, o, l, u), _ && (e.tag = d, e.anchor = f, e.kind = "mapping", e.result = g), _; +} +function cBt(e) { + var t, r = !1, n = !1, i, a, o; + if (o = e.input.charCodeAt(e.position), o !== 33) + return !1; + if (e.tag !== null && qn(e, "duplication of a tag property"), o = e.input.charCodeAt(++e.position), o === 60 ? (r = !0, o = e.input.charCodeAt(++e.position)) : o === 33 ? (n = !0, i = "!!", o = e.input.charCodeAt(++e.position)) : i = "!", t = e.position, r) { + do + o = e.input.charCodeAt(++e.position); + while (o !== 0 && o !== 62); + e.position < e.length ? (a = e.input.slice(t, e.position), o = e.input.charCodeAt(++e.position)) : qn(e, "unexpected end of the stream within a verbatim tag"); + } else { + for (; o !== 0 && !Ih(o); ) + o === 33 && (n ? qn(e, "tag suffix cannot contain exclamation marks") : (i = e.input.slice(t - 1, e.position + 1), x1e.test(i) || qn(e, "named tag handle cannot contain such characters"), n = !0, t = e.position + 1)), o = e.input.charCodeAt(++e.position); + a = e.input.slice(t, e.position), qFt.test(a) && qn(e, "tag suffix cannot contain flow indicator characters"); + } + a && !A1e.test(a) && qn(e, "tag name cannot contain such characters: " + a); + try { + a = decodeURIComponent(a); + } catch (l) { + qn(e, "tag name is malformed: " + a); + } + return r ? e.tag = a : x0.call(e.tagMap, i) ? e.tag = e.tagMap[i] + a : i === "!" ? e.tag = "!" + a : i === "!!" ? e.tag = "tag:yaml.org,2002:" + a : qn(e, 'undeclared tag handle "' + i + '"'), !0; +} +function uBt(e) { + var t, r; + if (r = e.input.charCodeAt(e.position), r !== 38) + return !1; + for (e.anchor !== null && qn(e, "duplication of an anchor property"), r = e.input.charCodeAt(++e.position), t = e.position; r !== 0 && !Ih(r) && !vw(r); ) + r = e.input.charCodeAt(++e.position); + return e.position === t && qn(e, "name of an anchor node must contain at least one character"), e.anchor = e.input.slice(t, e.position), !0; +} +function hBt(e) { + var t, r, n; + if (n = e.input.charCodeAt(e.position), n !== 42) + return !1; + for (n = e.input.charCodeAt(++e.position), t = e.position; n !== 0 && !Ih(n) && !vw(n); ) + n = e.input.charCodeAt(++e.position); + return e.position === t && qn(e, "name of an alias node must contain at least one character"), r = e.input.slice(t, e.position), x0.call(e.anchorMap, r) || qn(e, 'unidentified alias "' + r + '"'), e.result = e.anchorMap[r], vl(e, !0, -1), !0; +} +function lI(e, t, r, n, i) { + var a, o, l, u = 1, d = !1, f = !1, g, v, y, C, A, S; + if (e.listener !== null && e.listener("open", e), e.tag = null, e.anchor = null, e.kind = null, e.result = null, a = o = l = Q2 === r || I1e === r, n && vl(e, !0, -1) && (d = !0, e.lineIndent > t ? u = 1 : e.lineIndent === t ? u = 0 : e.lineIndent < t && (u = -1)), u === 1) + for (; cBt(e) || uBt(e); ) + vl(e, !0, -1) ? (d = !0, l = a, e.lineIndent > t ? u = 1 : e.lineIndent === t ? u = 0 : e.lineIndent < t && (u = -1)) : l = !1; + if (l && (l = d || i), (u === 1 || Q2 === r) && (J2 === r || w1e === r ? A = t : A = t + 1, S = e.position - e.lineStart, u === 1 ? l && (vpe(e, S) || lBt(e, S, A)) || oBt(e, A) ? f = !0 : (o && sBt(e, A) || iBt(e, A) || aBt(e, A) ? f = !0 : hBt(e) ? (f = !0, (e.tag !== null || e.anchor !== null) && qn(e, "alias node should not have any properties")) : nBt(e, A, J2 === r) && (f = !0, e.tag === null && (e.tag = "?")), e.anchor !== null && (e.anchorMap[e.anchor] = e.result)) : u === 0 && (f = l && vpe(e, S))), e.tag === null) + e.anchor !== null && (e.anchorMap[e.anchor] = e.result); + else if (e.tag === "?") { + for (e.result !== null && e.kind !== "scalar" && qn(e, 'unacceptable node kind for ! tag; it should be "scalar", not "' + e.kind + '"'), g = 0, v = e.implicitTypes.length; g < v; g += 1) + if (C = e.implicitTypes[g], C.resolve(e.result)) { + e.result = C.construct(e.result), e.tag = C.tag, e.anchor !== null && (e.anchorMap[e.anchor] = e.result); + break; + } + } else if (e.tag !== "!") { + if (x0.call(e.typeMap[e.kind || "fallback"], e.tag)) + C = e.typeMap[e.kind || "fallback"][e.tag]; + else + for (C = null, y = e.typeMap.multi[e.kind || "fallback"], g = 0, v = y.length; g < v; g += 1) + if (e.tag.slice(0, y[g].tag.length) === y[g].tag) { + C = y[g]; + break; + } + C || qn(e, "unknown tag !<" + e.tag + ">"), e.result !== null && C.kind !== e.kind && qn(e, "unacceptable node kind for !<" + e.tag + '> tag; it should be "' + C.kind + '", not "' + e.kind + '"'), C.resolve(e.result, e.tag) ? (e.result = C.construct(e.result, e.tag), e.anchor !== null && (e.anchorMap[e.anchor] = e.result)) : qn(e, "cannot resolve a node with !<" + e.tag + "> explicit tag"); + } + return e.listener !== null && e.listener("close", e), e.tag !== null || e.anchor !== null || f; +} +function dBt(e) { + var t = e.position, r, n, i, a = !1, o; + for (e.version = null, e.checkLineBreaks = e.legacy, e.tagMap = /* @__PURE__ */ Object.create(null), e.anchorMap = /* @__PURE__ */ Object.create(null); (o = e.input.charCodeAt(e.position)) !== 0 && (vl(e, !0, -1), o = e.input.charCodeAt(e.position), !(e.lineIndent > 0 || o !== 37)); ) { + for (a = !0, o = e.input.charCodeAt(++e.position), r = e.position; o !== 0 && !Ih(o); ) + o = e.input.charCodeAt(++e.position); + for (n = e.input.slice(r, e.position), i = [], n.length < 1 && qn(e, "directive name must not be less than one character in length"); o !== 0; ) { + for (; oE(o); ) + o = e.input.charCodeAt(++e.position); + if (o === 35) { + do + o = e.input.charCodeAt(++e.position); + while (o !== 0 && !nv(o)); + break; + } + if (nv(o)) + break; + for (r = e.position; o !== 0 && !Ih(o); ) + o = e.input.charCodeAt(++e.position); + i.push(e.input.slice(r, e.position)); + } + o !== 0 && AX(e), x0.call(ppe, n) ? ppe[n](e, n, i) : eF(e, 'unknown document directive "' + n + '"'); + } + if (vl(e, !0, -1), e.lineIndent === 0 && e.input.charCodeAt(e.position) === 45 && e.input.charCodeAt(e.position + 1) === 45 && e.input.charCodeAt(e.position + 2) === 45 ? (e.position += 3, vl(e, !0, -1)) : a && qn(e, "directives end mark is expected"), lI(e, e.lineIndent - 1, Q2, !1, !0), vl(e, !0, -1), e.checkLineBreaks && ZFt.test(e.input.slice(t, e.position)) && eF(e, "non-ASCII line breaks are interpreted as content"), e.documents.push(e.result), e.position === e.lineStart && aU(e)) { + e.input.charCodeAt(e.position) === 46 && (e.position += 3, vl(e, !0, -1)); + return; + } + if (e.position < e.length - 1) + qn(e, "end of the stream or a document separator is expected"); + else + return; +} +function M1e(e, t) { + e = String(e), t = t || {}, e.length !== 0 && (e.charCodeAt(e.length - 1) !== 10 && e.charCodeAt(e.length - 1) !== 13 && (e += ` +`), e.charCodeAt(0) === 65279 && (e = e.slice(1))); + var r = new rBt(e, t), n = e.indexOf("\0"); + for (n !== -1 && (r.position = n, qn(r, "null byte is not allowed in input")), r.input += "\0"; r.input.charCodeAt(r.position) === 32; ) + r.lineIndent += 1, r.position += 1; + for (; r.position < r.length - 1; ) + dBt(r); + return r.documents; +} +function fBt(e, t, r) { + t !== null && typeof t == "object" && typeof r == "undefined" && (r = t, t = null); + var n = M1e(e, r); + if (typeof t != "function") + return n; + for (var i = 0, a = n.length; i < a; i += 1) + t(n[i]); +} +function pBt(e, t) { + var r = M1e(e, t); + if (r.length !== 0) { + if (r.length === 1) + return r[0]; + throw new Dm("expected a single document in the stream, but found more"); + } +} +var gBt = fBt, vBt = pBt, mBt = { + loadAll: gBt, + load: vBt +}, yBt = E1e, _Bt = mBt.load; +function SBt(e) { + var i; + const t = e.match(LAe); + if (!t) + return { + text: e, + metadata: {} + }; + let r = (i = _Bt(t[1], { + // To support config, we need JSON schema. + // https://www.yaml.org/spec/1.2/spec.html#id2803231 + schema: yBt + })) != null ? i : {}; + r = typeof r == "object" && !Array.isArray(r) ? r : {}; + const n = {}; + return r.displayMode && (n.displayMode = r.displayMode.toString()), r.title && (n.title = r.title.toString()), r.config && (n.config = r.config), { + text: e.slice(t[0].length), + metadata: n + }; +} +const bBt = (e) => e.replace(/\r\n?/g, ` +`).replace( + /<(\w+)([^>]*)>/g, + (t, r, n) => "<" + r + n.replace(/="([^"]*)"/g, "='$1'") + ">" +), EBt = (e) => { + const { text: t, metadata: r } = SBt(e), { displayMode: n, title: i, config: a = {} } = r; + return n && (a.gantt || (a.gantt = {}), a.gantt.displayMode = n), { title: i, config: a, text: t }; +}, CBt = (e) => { + var n; + const t = (n = J1.detectInit(e)) != null ? n : {}, r = J1.detectDirective(e, "wrap"); + return Array.isArray(r) ? t.wrap = r.some(({ type: i }) => { + }) : (r == null ? void 0 : r.type) === "wrap" && (t.wrap = !0), { + text: YPt(e), + directive: t + }; +}; +function k1e(e) { + const t = bBt(e), r = EBt(t), n = CBt(r.text), i = zAe(r.config, n.directive); + return e = D2t(n.text), { + code: e, + title: r.title, + config: i + }; +} +const TBt = 5e4, wBt = "graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa", IBt = "sandbox", xBt = "loose", ABt = "http://www.w3.org/2000/svg", RBt = "http://www.w3.org/1999/xlink", DBt = "http://www.w3.org/1999/xhtml", OBt = "100%", MBt = "100%", kBt = "border:0;margin:0;", PBt = "margin:0", NBt = "allow-top-navigation-by-user-activation allow-popups", LBt = 'The "iframe" tag is not supported by your browser.', FBt = ["foreignobject"], BBt = ["dominant-baseline"]; +function P1e(e) { + var r; + const t = k1e(e); + return K2(), _Nt((r = t.config) != null ? r : {}), t; +} +function UBt(e, t) { + return ye(this, null, function* () { + IX(), e = P1e(e).code; + try { + yield DX(e); + } catch (r) { + if (t != null && t.suppressErrors) + return !1; + throw r; + } + return !0; + }); +} +const mpe = (e, t, r = []) => ` +.${e} ${t} { ${r.join(" !important; ")} !important; }`, jBt = (e, t = {}) => { + var r; + let n = ""; + if (e.themeCSS !== void 0 && (n += ` +${e.themeCSS}`), e.fontFamily !== void 0 && (n += ` +:root { --mermaid-font-family: ${e.fontFamily}}`), e.altFontFamily !== void 0 && (n += ` +:root { --mermaid-alt-font-family: ${e.altFontFamily}}`), !Z4(t)) { + const l = e.htmlLabels || ((r = e.flowchart) == null ? void 0 : r.htmlLabels) ? ["> *", "span"] : ["rect", "polygon", "ellipse", "circle", "path"]; + for (const u in t) { + const d = t[u]; + Z4(d.styles) || l.forEach((f) => { + n += mpe(d.id, f, d.styles); + }), Z4(d.textStyles) || (n += mpe(d.id, "tspan", d.textStyles)); + } + } + return n; +}, $Bt = (e, t, r, n) => { + const i = jBt(e, r), a = ULt(t, i, e.themeVariables); + return iL(Rpe(`${n}{${a}}`), Dpe); +}, VBt = (e = "", t, r) => { + let n = e; + return !r && !t && (n = n.replace( + /marker-end="url\([\d+./:=?A-Za-z-]*?#/g, + 'marker-end="url(#' + )), n = gNt(n), n = n.replace(/
        /g, "
        "), n; +}, zBt = (e = "", t) => { + var r, n; + const i = (n = (r = t == null ? void 0 : t.viewBox) == null ? void 0 : r.baseVal) != null && n.height ? t.viewBox.baseVal.height + "px" : MBt, a = btoa('' + e + ""); + return ``; +}, ype = (e, t, r, n, i) => { + const a = e.append("div"); + a.attr("id", r), n && a.attr("style", n); + const o = a.append("svg").attr("id", t).attr("width", "100%").attr("xmlns", ABt); + return i && o.attr("xmlns:xlink", i), o.append("g"), e; +}; +function _pe(e, t) { + return e.append("iframe").attr("id", t).attr("style", "width: 100%; height: 100%;").attr("sandbox", ""); +} +const HBt = (e, t, r, n) => { + var i, a, o; + (i = e.getElementById(t)) == null || i.remove(), (a = e.getElementById(r)) == null || a.remove(), (o = e.getElementById(n)) == null || o.remove(); +}, WBt = function(e, t, r) { + return ye(this, null, function* () { + var fe; + var n, i, a, o, l, u; + IX(); + const d = P1e(t); + t = d.code; + const f = hv(); + li.debug(f), t.length > ((fe = f == null ? void 0 : f.maxTextSize) != null ? fe : TBt) && (t = wBt); + const g = "#" + e, v = "i" + e, y = "#" + v, C = "d" + e, A = "#" + C; + let S = ff("body"); + const _ = f.securityLevel === IBt, E = f.securityLevel === xBt, I = f.fontFamily; + if (r !== void 0) { + if (r && (r.innerHTML = ""), _) { + const de = _pe(ff(r), v); + S = ff(de.nodes()[0].contentDocument.body), S.node().style.margin = 0; + } else + S = ff(r); + ype(S, e, C, `font-family: ${I}`, RBt); + } else { + if (HBt(document, e, C, v), _) { + const de = _pe(ff("body"), v); + S = ff(de.nodes()[0].contentDocument.body), S.node().style.margin = 0; + } else + S = ff("body"); + ype(S, e, C); + } + let w, x; + try { + w = yield DX(t, { title: d.title }); + } catch (de) { + w = new _1e("error"), x = de; + } + const b = S.select(A).node(), R = w.type, M = b.firstChild, O = M.firstChild, P = (i = (n = w.renderer).getClasses) == null ? void 0 : i.call(n, t, w), B = $Bt(f, R, P, g), H = document.createElement("style"); + H.innerHTML = B, M.insertBefore(H, O); + try { + yield w.renderer.draw(t, e, ope, w); + } catch (de) { + throw r2t.draw(t, e, ope), de; + } + const Y = S.select(`${A} svg`), X = (o = (a = w.db).getAccTitle) == null ? void 0 : o.call(a), ee = (u = (l = w.db).getAccDescription) == null ? void 0 : u.call(l); + YBt(R, Y, X, ee), S.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns", DBt); + let ae = S.select(A).node().innerHTML; + if (li.debug("config.arrowMarkerAbsolute", f.arrowMarkerAbsolute), ae = VBt(ae, _, kAe(f.arrowMarkerAbsolute)), _) { + const de = S.select(A + " svg").node(); + ae = zBt(ae, de); + } else + E || (ae = iI.sanitize(ae, { + ADD_TAGS: FBt, + ADD_ATTR: BBt + })); + if (I2t(), x) + throw x; + const ne = ff(_ ? y : A).node(); + return ne && "remove" in ne && ne.remove(), { + svg: ae, + bindFunctions: w.db.bindFunctions + }; + }); +}; +function GBt(e = {}) { + var t; + e != null && e.fontFamily && !((t = e.themeVariables) != null && t.fontFamily) && (e.themeVariables || (e.themeVariables = {}), e.themeVariables.fontFamily = e.fontFamily), mNt(e), e != null && e.theme && e.theme in Vm ? e.themeVariables = Vm[e.theme].getThemeVariables( + e.themeVariables + ) : e && (e.themeVariables = Vm.default.getThemeVariables(e.themeVariables)); + const r = typeof e == "object" ? vNt(e) : WAe(); + gX(r.logLevel), IX(); +} +const DX = (e, t = {}) => { + const { code: r } = k1e(e); + return w2t(r, t); +}; +function YBt(e, t, r, n) { + A2t(t, e), R2t(t, r, n, t.attr("id")); +} +const xE = Object.freeze({ + render: WBt, + parse: UBt, + getDiagramFromText: DX, + initialize: GBt, + getConfig: hv, + setConfig: GAe, + getSiteConfig: WAe, + updateSiteConfig: yNt, + reset: () => { + K2(); + }, + globalReset: () => { + K2(oI); + }, + defaultConfig: oI +}); +gX(hv().logLevel); +K2(hv()); +const XBt = () => ye(void 0, null, function* () { + li.debug("Loading registered diagrams"); + const t = (yield Promise.allSettled( + Object.entries(aI).map((a) => ye(void 0, [a], function* ([r, { detector: n, loader: i }]) { + if (i) + try { + wX(r); + } catch (o) { + try { + const { diagram: l, id: u } = yield i(); + q2(u, l, n); + } catch (l) { + throw li.error(`Failed to load external diagram with key ${r}. Removing from detectors.`), delete aI[r], l; + } + } + })) + )).filter((r) => r.status === "rejected"); + if (t.length > 0) { + li.error(`Failed to load ${t.length} external diagrams`); + for (const r of t) + li.error(r); + throw new Error(`Failed to load ${t.length} external diagrams`); + } +}), KBt = (e, t, r) => { + li.warn(e), VAe(e) ? (r && r(e.str, e.hash), t.push(rn(br({}, e), { message: e.str, error: e }))) : (r && r(e), e instanceof Error && t.push({ + str: e.message, + message: e.message, + hash: e.name, + error: e + })); +}, N1e = function() { + return ye(this, arguments, function* (e = { + querySelector: ".mermaid" + }) { + try { + yield ZBt(e); + } catch (t) { + if (VAe(t) && li.error(t.str), Af.parseError && Af.parseError(t), !e.suppressErrors) + throw li.error("Use the suppressErrors option to suppress these errors"), t; + } + }); +}, ZBt = function() { + return ye(this, arguments, function* ({ postRenderCallback: e, querySelector: t, nodes: r } = { + querySelector: ".mermaid" + }) { + const n = xE.getConfig(); + li.debug(`${e ? "" : "No "}Callback function found`); + let i; + if (r) + i = r; + else if (t) + i = document.querySelectorAll(t); + else + throw new Error("Nodes and querySelector are both undefined"); + li.debug(`Found ${i.length} diagrams`), (n == null ? void 0 : n.startOnLoad) !== void 0 && (li.debug("Start On Load: " + (n == null ? void 0 : n.startOnLoad)), xE.updateSiteConfig({ startOnLoad: n == null ? void 0 : n.startOnLoad })); + const a = new J1.InitIDGenerator(n.deterministicIds, n.deterministicIDSeed); + let o; + const l = []; + for (const u of Array.from(i)) { + li.info("Rendering diagram: " + u.id); + /*! Check if previously processed */ + if (u.getAttribute("data-processed")) + continue; + u.setAttribute("data-processed", "true"); + const d = `mermaid-${a.next()}`; + o = u.innerHTML, o = Dxt(J1.entityDecode(o)).trim().replace(//gi, "
        "); + const f = J1.detectInit(o); + f && li.debug("Detected early reinit: ", f); + try { + const { svg: g, bindFunctions: v } = yield U1e(d, o, u); + u.innerHTML = g, e && (yield e(d)), v && v(u); + } catch (g) { + KBt(g, l, Af.parseError); + } + } + if (l.length > 0) + throw l[0]; + }); +}, L1e = function(e) { + xE.initialize(e); +}, qBt = function(e, t, r) { + return ye(this, null, function* () { + li.warn("mermaid.init is deprecated. Please use run instead."), e && L1e(e); + const n = { postRenderCallback: r, querySelector: ".mermaid" }; + typeof t == "string" ? n.querySelector = t : t && (t instanceof HTMLElement ? n.nodes = [t] : n.nodes = t), yield N1e(n); + }); +}, JBt = (r, ...n) => ye(void 0, [r, ...n], function* (e, { + lazyLoad: t = !0 +} = {}) { + BAe(...e), t === !1 && (yield XBt()); +}), F1e = function() { + if (Af.startOnLoad) { + const { startOnLoad: e } = xE.getConfig(); + e && Af.run().catch((t) => li.error("Mermaid failed to initialize", t)); + } +}; +if (typeof document != "undefined") { + /*! + * Wait for document loaded before starting the execution + */ + window.addEventListener("load", F1e, !1); +} +const QBt = function(e) { + Af.parseError = e; +}, tF = []; +let eH = !1; +const B1e = () => ye(void 0, null, function* () { + if (!eH) { + for (eH = !0; tF.length > 0; ) { + const e = tF.shift(); + if (e) + try { + yield e(); + } catch (t) { + li.error("Error executing queue", t); + } + } + eH = !1; + } +}), eUt = (e, t) => ye(void 0, null, function* () { + return new Promise((r, n) => { + const i = () => new Promise((a, o) => { + xE.parse(e, t).then( + (l) => { + a(l), r(l); + }, + (l) => { + var u; + li.error("Error parsing", l), (u = Af.parseError) == null || u.call(Af, l), o(l), n(l); + } + ); + }); + tF.push(i), B1e().catch(n); + }); +}), U1e = (e, t, r) => new Promise((n, i) => { + const a = () => new Promise((o, l) => { + xE.render(e, t, r).then( + (u) => { + o(u), n(u); + }, + (u) => { + var d; + li.error("Error parsing", u), (d = Af.parseError) == null || d.call(Af, u), l(u), i(u); + } + ); + }); + tF.push(a), B1e().catch(i); +}), Af = { + startOnLoad: !0, + mermaidAPI: xE, + parse: eUt, + render: U1e, + init: qBt, + run: N1e, + registerExternalDiagrams: JBt, + initialize: L1e, + parseError: void 0, + contentLoaded: F1e, + setParseErrorHandler: QBt, + detectType: nU +}; +function tUt(e) { + const t = { + lt: "<", + gt: ">", + nbsp: " ", + amp: "&", + quot: '"' + }; + return e.replace(/&(lt|gt|nbsp|amp|quot);/gi, function(r, n) { + return t[n]; + }).trim(); +} +const rUt = ({ + id: e = "graphDiv", + code: t = "" +}) => { + const [r, n] = $react.useState(""); + return $react.useEffect(() => { + Af.initialize({ + startOnLoad: !1 + }); + }, []), $react.useEffect(() => { + t && Af.mermaidAPI.render(e, tUt(t)).then((i) => { + n(i.svg); + }); + }, [t, n]), /* @__PURE__ */ dt("pre", { + className: "mermaid", + dangerouslySetInnerHTML: { + __html: r + } + }); +}, nUt = { + code: $lowcoder_sdk.stringExposingStateControl("code", `graph LR + Start --> Stop`), + onEvent: $lowcoder_sdk.eventHandlerControl([{ + label: "onChange", + value: "change", + description: "" + }]) +}, iUt = new $lowcoder_sdk.UICompBuilder(nUt, (e) => { + const t = e.code.value; + return /* @__PURE__ */ dt(rUt, { + code: t + }); +}).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: "Basic", + children: e.code.propertyView({ + label: "code" + }) + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: "Interaction", + children: e.onEvent.propertyView() + })] +})).build(), aUt = $lowcoder_sdk.withMethodExposing(iUt, []), oUt = $lowcoder_sdk.withExposingConfigs(aUt, [new $lowcoder_sdk.NameConfig("code", "")]); +var j1e = { exports: {} }; +(function(e, t) { + (function(r, n) { + e.exports = n(); + })(s1, function() { + function r(h, s) { + return s.forEach(function(c) { + c && typeof c != "string" && !Array.isArray(c) && Object.keys(c).forEach(function(p) { + if (p !== "default" && !(p in h)) { + var m = Object.getOwnPropertyDescriptor(c, p); + Object.defineProperty(h, p, m.get ? m : { enumerable: !0, get: function() { + return c[p]; + } }); + } + }); + }), Object.freeze(h); + } + var n = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof s1 != "undefined" ? s1 : typeof self != "undefined" ? self : {}; + function i(h) { + return h && h.__esModule && Object.prototype.hasOwnProperty.call(h, "default") ? h.default : h; + } + var a = function(h) { + try { + return !!h(); + } catch (s) { + return !0; + } + }, o = !a(function() { + var h = function() { + }.bind(); + return typeof h != "function" || h.hasOwnProperty("prototype"); + }), l = o, u = Function.prototype, d = u.call, f = l && u.bind.bind(d, d), g = l ? f : function(h) { + return function() { + return d.apply(h, arguments); + }; + }, v = g({}.isPrototypeOf), y = function(h) { + return h && h.Math == Math && h; + }, C = y(typeof globalThis == "object" && globalThis) || y(typeof window == "object" && window) || y(typeof self == "object" && self) || y(typeof n == "object" && n) || function() { + return this; + }() || n || Function("return this")(), A = o, S = Function.prototype, _ = S.apply, E = S.call, I = typeof Reflect == "object" && Reflect.apply || (A ? E.bind(_) : function() { + return E.apply(_, arguments); + }), w = g, x = w({}.toString), b = w("".slice), R = function(h) { + return b(x(h), 8, -1); + }, M = R, O = g, P = function(h) { + if (M(h) === "Function") + return O(h); + }, B = typeof document == "object" && document.all, H = { all: B, IS_HTMLDDA: B === void 0 && B !== void 0 }, Y = H.all, X = H.IS_HTMLDDA ? function(h) { + return typeof h == "function" || h === Y; + } : function(h) { + return typeof h == "function"; + }, ee = {}, ae = !a(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }), J = o, ne = Function.prototype.call, fe = J ? ne.bind(ne) : function() { + return ne.apply(ne, arguments); + }, de = {}, Te = {}.propertyIsEnumerable, be = Object.getOwnPropertyDescriptor, Ve = be && !Te.call({ 1: 2 }, 1); + de.f = Ve ? function(h) { + var s = be(this, h); + return !!s && s.enumerable; + } : Te; + var pe, Be, Ue = function(h, s) { + return { enumerable: !(1 & h), configurable: !(2 & h), writable: !(4 & h), value: s }; + }, Qe = a, Re = R, Ne = Object, Me = g("".split), we = Qe(function() { + return !Ne("z").propertyIsEnumerable(0); + }) ? function(h) { + return Re(h) == "String" ? Me(h, "") : Ne(h); + } : Ne, He = function(h) { + return h == null; + }, Ie = He, Ae = TypeError, Fe = function(h) { + if (Ie(h)) + throw Ae("Can't call method on " + h); + return h; + }, $e = we, lt = Fe, it = function(h) { + return $e(lt(h)); + }, nt = X, ut = H.all, rt = H.IS_HTMLDDA ? function(h) { + return typeof h == "object" ? h !== null : nt(h) || h === ut; + } : function(h) { + return typeof h == "object" ? h !== null : nt(h); + }, Ke = {}, ze = Ke, qe = C, ct = X, ft = function(h) { + return ct(h) ? h : void 0; + }, _t = function(h, s) { + return arguments.length < 2 ? ft(ze[h]) || ft(qe[h]) : ze[h] && ze[h][s] || qe[h] && qe[h][s]; + }, Nt = typeof navigator != "undefined" && String(navigator.userAgent) || "", Yt = C, tr = Nt, Ct = Yt.process, hr = Yt.Deno, Er = Ct && Ct.versions || hr && hr.version, Fr = Er && Er.v8; + Fr && (Be = (pe = Fr.split("."))[0] > 0 && pe[0] < 4 ? 1 : +(pe[0] + pe[1])), !Be && tr && (!(pe = tr.match(/Edge\/(\d+)/)) || pe[1] >= 74) && (pe = tr.match(/Chrome\/(\d+)/)) && (Be = +pe[1]); + var Dn = Be, hn = Dn, Jn = a, nn = C.String, dn = !!Object.getOwnPropertySymbols && !Jn(function() { + var h = Symbol(); + return !nn(h) || !(Object(h) instanceof Symbol) || !Symbol.sham && hn && hn < 41; + }), an = dn && !Symbol.sham && typeof Symbol.iterator == "symbol", zn = _t, Lt = X, Ot = v, Jt = Object, jt = an ? function(h) { + return typeof h == "symbol"; + } : function(h) { + var s = zn("Symbol"); + return Lt(s) && Ot(s.prototype, Jt(h)); + }, nr = String, Ht = function(h) { + try { + return nr(h); + } catch (s) { + return "Object"; + } + }, wn = X, On = Ht, or = TypeError, Pt = function(h) { + if (wn(h)) + return h; + throw or(On(h) + " is not a function"); + }, Qr = Pt, Bn = He, Un = function(h, s) { + var c = h[s]; + return Bn(c) ? void 0 : Qr(c); + }, Yn = fe, fi = X, xn = rt, Or = TypeError, Dr = { exports: {} }, po = C, as = Object.defineProperty, zo = function(h, s) { + try { + as(po, h, { value: s, configurable: !0, writable: !0 }); + } catch (c) { + po[h] = s; + } + return s; + }, Bs = "__core-js_shared__", Cr = C[Bs] || zo(Bs, {}), gt = Cr; + (Dr.exports = function(h, s) { + return gt[h] || (gt[h] = s !== void 0 ? s : {}); + })("versions", []).push({ version: "3.31.1", mode: "pure", copyright: "© 2014-2023 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE", source: "https://github.com/zloirock/core-js" }); + var Xt = Dr.exports, Wt = Fe, zr = Object, _r = function(h) { + return zr(Wt(h)); + }, vn = _r, Xe = g({}.hasOwnProperty), Tt = Object.hasOwn || function(h, s) { + return Xe(vn(h), s); + }, Bt = g, Gt = 0, ur = Math.random(), Ur = Bt(1 .toString), Mr = function(h) { + return "Symbol(" + (h === void 0 ? "" : h) + ")_" + Ur(++Gt + ur, 36); + }, ai = Xt, en = Tt, Br = Mr, Xn = dn, ir = an, Fi = C.Symbol, wi = ai("wks"), gs = ir ? Fi.for || Fi : Fi && Fi.withoutSetter || Br, Bi = function(h) { + return en(wi, h) || (wi[h] = Xn && en(Fi, h) ? Fi[h] : gs("Symbol." + h)), wi[h]; + }, nc = fe, aa = rt, Lo = jt, Ua = Un, As = function(h, s) { + var c, p; + if (s === "string" && fi(c = h.toString) && !xn(p = Yn(c, h)) || fi(c = h.valueOf) && !xn(p = Yn(c, h)) || s !== "string" && fi(c = h.toString) && !xn(p = Yn(c, h))) + return p; + throw Or("Can't convert object to primitive value"); + }, Ho = TypeError, Rs = Bi("toPrimitive"), Vu = function(h, s) { + if (!aa(h) || Lo(h)) + return h; + var c, p = Ua(h, Rs); + if (p) { + if (s === void 0 && (s = "default"), c = nc(p, h, s), !aa(c) || Lo(c)) + return c; + throw Ho("Can't convert object to primitive value"); + } + return s === void 0 && (s = "number"), As(h, s); + }, ic = jt, vs = function(h) { + var s = Vu(h, "string"); + return ic(s) ? s : s + ""; + }, Ia = rt, oi = C.document, Ds = Ia(oi) && Ia(oi.createElement), Xa = function(h) { + return Ds ? oi.createElement(h) : {}; + }, xa = Xa, oa = !ae && !a(function() { + return Object.defineProperty(xa("div"), "a", { get: function() { + return 7; + } }).a != 7; + }), ma = ae, fa = fe, os = de, Ul = Ue, Os = it, ja = vs, sa = Tt, pi = oa, Xr = Object.getOwnPropertyDescriptor; + ee.f = ma ? Xr : function(h, s) { + if (h = Os(h), s = ja(s), pi) + try { + return Xr(h, s); + } catch (c) { + } + if (sa(h, s)) + return Ul(!fa(os.f, h, s), h[s]); + }; + var Mn = a, pa = X, Qa = /#|\.prototype\./, ya = function(h, s) { + var c = Hn[Ki(h)]; + return c == gi || c != ka && (pa(s) ? Mn(s) : !!s); + }, Ki = ya.normalize = function(h) { + return String(h).replace(Qa, ".").toLowerCase(); + }, Hn = ya.data = {}, ka = ya.NATIVE = "N", gi = ya.POLYFILL = "P", Lf = ya, la = Pt, tu = o, jp = P(P.bind), bl = function(h, s) { + return la(h), s === void 0 ? h : tu ? jp(h, s) : function() { + return h.apply(s, arguments); + }; + }, Ui = {}, rl = ae && a(function() { + return Object.defineProperty(function() { + }, "prototype", { value: 42, writable: !1 }).prototype != 42; + }), El = rt, yv = String, $a = TypeError, go = function(h) { + if (El(h)) + return h; + throw $a(yv(h) + " is not an object"); + }, Ms = ae, Zt = oa, Rh = rl, ac = go, Wo = vs, ji = TypeError, ru = Object.defineProperty, oc = Object.getOwnPropertyDescriptor, mn = "enumerable", An = "configurable", jl = "writable"; + Ui.f = Ms ? Rh ? function(h, s, c) { + if (ac(h), s = Wo(s), ac(c), typeof h == "function" && s === "prototype" && "value" in c && jl in c && !c[jl]) { + var p = oc(h, s); + p && p[jl] && (h[s] = c.value, c = { configurable: An in c ? c[An] : p[An], enumerable: mn in c ? c[mn] : p[mn], writable: !1 }); + } + return ru(h, s, c); + } : ru : function(h, s, c) { + if (ac(h), s = Wo(s), ac(c), Zt) + try { + return ru(h, s, c); + } catch (p) { + } + if ("get" in c || "set" in c) + throw ji("Accessors not supported"); + return "value" in c && (h[s] = c.value), h; + }; + var kr = Ui, sc = Ue, ro = ae ? function(h, s, c) { + return kr.f(h, s, sc(1, c)); + } : function(h, s, c) { + return h[s] = c, h; + }, lc = C, Go = I, ly = P, Cl = X, nl = ee.f, Pa = Lf, no = Ke, Yo = bl, Zi = ro, vo = Tt, Ff = function(h) { + var s = function(c, p, m) { + if (this instanceof s) { + switch (arguments.length) { + case 0: + return new h(); + case 1: + return new h(c); + case 2: + return new h(c, p); + } + return new h(c, p, m); + } + return Go(h, this, arguments); + }; + return s.prototype = h.prototype, s; + }, ki = function(h, s) { + var c, p, m, T, D, k, N, U, V, G = h.target, K = h.global, q = h.stat, ue = h.proto, oe = K ? lc : q ? lc[G] : (lc[G] || {}).prototype, he = K ? no : no[G] || Zi(no, G, {})[G], Ce = he.prototype; + for (T in s) + p = !(c = Pa(K ? T : G + (q ? "." : "#") + T, h.forced)) && oe && vo(oe, T), k = he[T], p && (N = h.dontCallGetSet ? (V = nl(oe, T)) && V.value : oe[T]), D = p && N ? N : s[T], p && typeof k == typeof D || (U = h.bind && p ? Yo(D, lc) : h.wrap && p ? Ff(D) : ue && Cl(D) ? ly(D) : D, (h.sham || D && D.sham || k && k.sham) && Zi(U, "sham", !0), Zi(he, T, U), ue && (vo(no, m = G + "Prototype") || Zi(no, m, {}), Zi(no[m], T, D), h.real && Ce && (c || !Ce[T]) && Zi(Ce, T, D))); + }, nu = Math.ceil, Dh = Math.floor, on = Math.trunc || function(h) { + var s = +h; + return (s > 0 ? Dh : nu)(s); + }, iu = function(h) { + var s = +h; + return s != s || s === 0 ? 0 : on(s); + }, _v = iu, Bf = Math.max, $p = Math.min, Uf = function(h, s) { + var c = _v(h); + return c < 0 ? Bf(c + s, 0) : $p(c, s); + }, Sv = iu, bv = Math.min, Ev = function(h) { + return h > 0 ? bv(Sv(h), 9007199254740991) : 0; + }, au = function(h) { + return Ev(h.length); + }, Cv = it, cy = Uf, uy = au, Va = function(h) { + return function(s, c, p) { + var m, T = Cv(s), D = uy(T), k = cy(p, D); + if (h && c != c) { + for (; D > k; ) + if ((m = T[k++]) != m) + return !0; + } else + for (; D > k; k++) + if ((h || k in T) && T[k] === c) + return h || k || 0; + return !h && -1; + }; + }, Oh = { includes: Va(!0), indexOf: Va(!1) }, Vp = Oh.includes; + ki({ target: "Array", proto: !0, forced: a(function() { + return !Array(1).includes(); + }) }, { includes: function(h) { + return Vp(this, h, arguments.length > 1 ? arguments[1] : void 0); + } }); + var Tv = Ke, wc = function(h) { + return Tv[h + "Prototype"]; + }, zp = wc("Array").includes, hy = rt, Id = R, ti = Bi("match"), ss = function(h) { + var s; + return hy(h) && ((s = h[ti]) !== void 0 ? !!s : Id(h) == "RegExp"); + }, ta = TypeError, te = {}; + te[Bi("toStringTag")] = "z"; + var xe = String(te) === "[object z]", at = xe, wt = X, Tr = R, jr = Bi("toStringTag"), Sn = Object, Oi = Tr(function() { + return arguments; + }()) == "Arguments", Ii = at ? Tr : function(h) { + var s, c, p; + return h === void 0 ? "Undefined" : h === null ? "Null" : typeof (c = function(m, T) { + try { + return m[T]; + } catch (D) { + } + }(s = Sn(h), jr)) == "string" ? c : Oi ? Tr(s) : (p = Tr(s)) == "Object" && wt(s.callee) ? "Arguments" : p; + }, ln = Ii, Vs = String, mo = function(h) { + if (ln(h) === "Symbol") + throw TypeError("Cannot convert a Symbol value to a string"); + return Vs(h); + }, zu = Bi("match"), dy = ki, jf = function(h) { + if (ss(h)) + throw ta("The method doesn't accept regular expressions"); + return h; + }, fy = Fe, Hp = mo, WE = function(h) { + var s = /./; + try { + "/./"[h](s); + } catch (c) { + try { + return s[zu] = !1, "/./"[h](s); + } catch (p) { + } + } + return !1; + }, VI = g("".indexOf); + dy({ target: "String", proto: !0, forced: !WE("includes") }, { includes: function(h) { + return !!~VI(Hp(fy(this)), Hp(jf(h)), arguments.length > 1 ? arguments[1] : void 0); + } }); + var py = wc("String").includes, ou = v, GE = zp, ls = py, B0 = Array.prototype, xd = String.prototype, rr = i(function(h) { + var s = h.includes; + return h === B0 || ou(B0, h) && s === B0.includes ? GE : typeof h == "string" || h === xd || ou(xd, h) && s === xd.includes ? ls : s; + }); + let wv = !0, Iv = !0; + function Wp(h, s, c) { + const p = h.match(s); + return p && p.length >= c && parseInt(p[c], 10); + } + function il(h, s, c) { + if (!h.RTCPeerConnection) + return; + const p = h.RTCPeerConnection.prototype, m = p.addEventListener; + p.addEventListener = function(D, k) { + if (D !== s) + return m.apply(this, arguments); + const N = (U) => { + const V = c(U); + V && (k.handleEvent ? k.handleEvent(V) : k(V)); + }; + return this._eventMap = this._eventMap || {}, this._eventMap[s] || (this._eventMap[s] = /* @__PURE__ */ new Map()), this._eventMap[s].set(k, N), m.apply(this, [D, N]); + }; + const T = p.removeEventListener; + p.removeEventListener = function(D, k) { + if (D !== s || !this._eventMap || !this._eventMap[s]) + return T.apply(this, arguments); + if (!this._eventMap[s].has(k)) + return T.apply(this, arguments); + const N = this._eventMap[s].get(k); + return this._eventMap[s].delete(k), this._eventMap[s].size === 0 && delete this._eventMap[s], Object.keys(this._eventMap).length === 0 && delete this._eventMap, T.apply(this, [D, N]); + }, Object.defineProperty(p, "on" + s, { get() { + return this["_on" + s]; + }, set(D) { + this["_on" + s] && (this.removeEventListener(s, this["_on" + s]), delete this["_on" + s]), D && this.addEventListener(s, this["_on" + s] = D); + }, enumerable: !0, configurable: !0 }); + } + function Ad(h) { + return typeof h != "boolean" ? new Error("Argument type: " + typeof h + ". Please use a boolean.") : (wv = h, h ? "adapter.js logging disabled" : "adapter.js logging enabled"); + } + function Hu(h) { + return typeof h != "boolean" ? new Error("Argument type: " + typeof h + ". Please use a boolean.") : (Iv = !h, "adapter.js deprecation warnings " + (h ? "disabled" : "enabled")); + } + function xv() { + if (typeof window == "object") { + if (wv) + return; + typeof console != "undefined" && typeof console.log == "function" && console.log.apply(console, arguments); + } + } + function gy(h, s) { + Iv && console.warn(h + " is deprecated, please use " + s + " instead."); + } + function YE(h) { + return Object.prototype.toString.call(h) === "[object Object]"; + } + function XE(h) { + return YE(h) ? Object.keys(h).reduce(function(s, c) { + const p = YE(h[c]), m = p ? XE(h[c]) : h[c], T = p && !Object.keys(m).length; + return m === void 0 || T ? s : Object.assign(s, { [c]: m }); + }, {}) : h; + } + function Av(h, s, c) { + s && !c.has(s.id) && (c.set(s.id, s), Object.keys(s).forEach((p) => { + p.endsWith("Id") ? Av(h, h.get(s[p]), c) : p.endsWith("Ids") && s[p].forEach((m) => { + Av(h, h.get(m), c); + }); + })); + } + function vy(h, s, c) { + const p = c ? "outbound-rtp" : "inbound-rtp", m = /* @__PURE__ */ new Map(); + if (s === null) + return m; + const T = []; + return h.forEach((D) => { + D.type === "track" && D.trackIdentifier === s.id && T.push(D); + }), T.forEach((D) => { + h.forEach((k) => { + k.type === p && k.trackId === D.id && Av(h, k, m); + }); + }), m; + } + const KE = xv; + function U0(h, s) { + const c = h && h.navigator; + if (!c.mediaDevices) + return; + const p = function(D) { + if (typeof D != "object" || D.mandatory || D.optional) + return D; + const k = {}; + return Object.keys(D).forEach((N) => { + if (N === "require" || N === "advanced" || N === "mediaSource") + return; + const U = typeof D[N] == "object" ? D[N] : { ideal: D[N] }; + U.exact !== void 0 && typeof U.exact == "number" && (U.min = U.max = U.exact); + const V = function(G, K) { + return G ? G + K.charAt(0).toUpperCase() + K.slice(1) : K === "deviceId" ? "sourceId" : K; + }; + if (U.ideal !== void 0) { + k.optional = k.optional || []; + let G = {}; + typeof U.ideal == "number" ? (G[V("min", N)] = U.ideal, k.optional.push(G), G = {}, G[V("max", N)] = U.ideal, k.optional.push(G)) : (G[V("", N)] = U.ideal, k.optional.push(G)); + } + U.exact !== void 0 && typeof U.exact != "number" ? (k.mandatory = k.mandatory || {}, k.mandatory[V("", N)] = U.exact) : ["min", "max"].forEach((G) => { + U[G] !== void 0 && (k.mandatory = k.mandatory || {}, k.mandatory[V(G, N)] = U[G]); + }); + }), D.advanced && (k.optional = (k.optional || []).concat(D.advanced)), k; + }, m = function(D, k) { + if (s.version >= 61) + return k(D); + if ((D = JSON.parse(JSON.stringify(D))) && typeof D.audio == "object") { + const N = function(U, V, G) { + V in U && !(G in U) && (U[G] = U[V], delete U[V]); + }; + N((D = JSON.parse(JSON.stringify(D))).audio, "autoGainControl", "googAutoGainControl"), N(D.audio, "noiseSuppression", "googNoiseSuppression"), D.audio = p(D.audio); + } + if (D && typeof D.video == "object") { + let N = D.video.facingMode; + N = N && (typeof N == "object" ? N : { ideal: N }); + const U = s.version < 66; + if (N && (N.exact === "user" || N.exact === "environment" || N.ideal === "user" || N.ideal === "environment") && (!c.mediaDevices.getSupportedConstraints || !c.mediaDevices.getSupportedConstraints().facingMode || U)) { + let V; + if (delete D.video.facingMode, N.exact === "environment" || N.ideal === "environment" ? V = ["back", "rear"] : N.exact !== "user" && N.ideal !== "user" || (V = ["front"]), V) + return c.mediaDevices.enumerateDevices().then((G) => { + let K = (G = G.filter((q) => q.kind === "videoinput")).find((q) => V.some((ue) => q.label.toLowerCase().includes(ue))); + return !K && G.length && V.includes("back") && (K = G[G.length - 1]), K && (D.video.deviceId = N.exact ? { exact: K.deviceId } : { ideal: K.deviceId }), D.video = p(D.video), KE("chrome: " + JSON.stringify(D)), k(D); + }); + } + D.video = p(D.video); + } + return KE("chrome: " + JSON.stringify(D)), k(D); + }, T = function(D) { + return s.version >= 64 ? D : { name: { PermissionDeniedError: "NotAllowedError", PermissionDismissedError: "NotAllowedError", InvalidStateError: "NotAllowedError", DevicesNotFoundError: "NotFoundError", ConstraintNotSatisfiedError: "OverconstrainedError", TrackStartError: "NotReadableError", MediaDeviceFailedDueToShutdown: "NotAllowedError", MediaDeviceKillSwitchOn: "NotAllowedError", TabCaptureError: "AbortError", ScreenCaptureError: "AbortError", DeviceCaptureError: "AbortError" }[D.name] || D.name, message: D.message, constraint: D.constraint || D.constraintName, toString() { + return this.name + (this.message && ": ") + this.message; + } }; + }; + if (c.getUserMedia = function(D, k, N) { + m(D, (U) => { + c.webkitGetUserMedia(U, k, (V) => { + N && N(T(V)); + }); + }); + }.bind(c), c.mediaDevices.getUserMedia) { + const D = c.mediaDevices.getUserMedia.bind(c.mediaDevices); + c.mediaDevices.getUserMedia = function(k) { + return m(k, (N) => D(N).then((U) => { + if (N.audio && !U.getAudioTracks().length || N.video && !U.getVideoTracks().length) + throw U.getTracks().forEach((V) => { + V.stop(); + }), new DOMException("", "NotFoundError"); + return U; + }, (U) => Promise.reject(T(U)))); + }; + } + } + function wo(h) { + h.MediaStream = h.MediaStream || h.webkitMediaStream; + } + function cs(h) { + if (typeof h == "object" && h.RTCPeerConnection && !("ontrack" in h.RTCPeerConnection.prototype)) { + Object.defineProperty(h.RTCPeerConnection.prototype, "ontrack", { get() { + return this._ontrack; + }, set(c) { + this._ontrack && this.removeEventListener("track", this._ontrack), this.addEventListener("track", this._ontrack = c); + }, enumerable: !0, configurable: !0 }); + const s = h.RTCPeerConnection.prototype.setRemoteDescription; + h.RTCPeerConnection.prototype.setRemoteDescription = function() { + return this._ontrackpoly || (this._ontrackpoly = (c) => { + c.stream.addEventListener("addtrack", (p) => { + let m; + m = h.RTCPeerConnection.prototype.getReceivers ? this.getReceivers().find((D) => D.track && D.track.id === p.track.id) : { track: p.track }; + const T = new Event("track"); + T.track = p.track, T.receiver = m, T.transceiver = { receiver: m }, T.streams = [c.stream], this.dispatchEvent(T); + }), c.stream.getTracks().forEach((p) => { + let m; + m = h.RTCPeerConnection.prototype.getReceivers ? this.getReceivers().find((D) => D.track && D.track.id === p.id) : { track: p }; + const T = new Event("track"); + T.track = p, T.receiver = m, T.transceiver = { receiver: m }, T.streams = [c.stream], this.dispatchEvent(T); + }); + }, this.addEventListener("addstream", this._ontrackpoly)), s.apply(this, arguments); + }; + } else + il(h, "track", (s) => (s.transceiver || Object.defineProperty(s, "transceiver", { value: { receiver: s.receiver } }), s)); + } + function Mh(h) { + if (typeof h == "object" && h.RTCPeerConnection && !("getSenders" in h.RTCPeerConnection.prototype) && "createDTMFSender" in h.RTCPeerConnection.prototype) { + const s = function(m, T) { + return { track: T, get dtmf() { + return this._dtmf === void 0 && (T.kind === "audio" ? this._dtmf = m.createDTMFSender(T) : this._dtmf = null), this._dtmf; + }, _pc: m }; + }; + if (!h.RTCPeerConnection.prototype.getSenders) { + h.RTCPeerConnection.prototype.getSenders = function() { + return this._senders = this._senders || [], this._senders.slice(); + }; + const m = h.RTCPeerConnection.prototype.addTrack; + h.RTCPeerConnection.prototype.addTrack = function(D, k) { + let N = m.apply(this, arguments); + return N || (N = s(this, D), this._senders.push(N)), N; + }; + const T = h.RTCPeerConnection.prototype.removeTrack; + h.RTCPeerConnection.prototype.removeTrack = function(D) { + T.apply(this, arguments); + const k = this._senders.indexOf(D); + k !== -1 && this._senders.splice(k, 1); + }; + } + const c = h.RTCPeerConnection.prototype.addStream; + h.RTCPeerConnection.prototype.addStream = function(m) { + this._senders = this._senders || [], c.apply(this, [m]), m.getTracks().forEach((T) => { + this._senders.push(s(this, T)); + }); + }; + const p = h.RTCPeerConnection.prototype.removeStream; + h.RTCPeerConnection.prototype.removeStream = function(m) { + this._senders = this._senders || [], p.apply(this, [m]), m.getTracks().forEach((T) => { + const D = this._senders.find((k) => k.track === T); + D && this._senders.splice(this._senders.indexOf(D), 1); + }); + }; + } else if (typeof h == "object" && h.RTCPeerConnection && "getSenders" in h.RTCPeerConnection.prototype && "createDTMFSender" in h.RTCPeerConnection.prototype && h.RTCRtpSender && !("dtmf" in h.RTCRtpSender.prototype)) { + const s = h.RTCPeerConnection.prototype.getSenders; + h.RTCPeerConnection.prototype.getSenders = function() { + const c = s.apply(this, []); + return c.forEach((p) => p._pc = this), c; + }, Object.defineProperty(h.RTCRtpSender.prototype, "dtmf", { get() { + return this._dtmf === void 0 && (this.track.kind === "audio" ? this._dtmf = this._pc.createDTMFSender(this.track) : this._dtmf = null), this._dtmf; + } }); + } + } + function kh(h) { + if (!h.RTCPeerConnection) + return; + const s = h.RTCPeerConnection.prototype.getStats; + h.RTCPeerConnection.prototype.getStats = function() { + const [c, p, m] = arguments; + if (arguments.length > 0 && typeof c == "function") + return s.apply(this, arguments); + if (s.length === 0 && (arguments.length === 0 || typeof c != "function")) + return s.apply(this, []); + const T = function(k) { + const N = {}; + return k.result().forEach((U) => { + const V = { id: U.id, timestamp: U.timestamp, type: { localcandidate: "local-candidate", remotecandidate: "remote-candidate" }[U.type] || U.type }; + U.names().forEach((G) => { + V[G] = U.stat(G); + }), N[V.id] = V; + }), N; + }, D = function(k) { + return new Map(Object.keys(k).map((N) => [N, k[N]])); + }; + if (arguments.length >= 2) { + const k = function(N) { + p(D(T(N))); + }; + return s.apply(this, [k, c]); + } + return new Promise((k, N) => { + s.apply(this, [function(U) { + k(D(T(U))); + }, N]); + }).then(p, m); + }; + } + function su(h) { + if (!(typeof h == "object" && h.RTCPeerConnection && h.RTCRtpSender && h.RTCRtpReceiver)) + return; + if (!("getStats" in h.RTCRtpSender.prototype)) { + const c = h.RTCPeerConnection.prototype.getSenders; + c && (h.RTCPeerConnection.prototype.getSenders = function() { + const m = c.apply(this, []); + return m.forEach((T) => T._pc = this), m; + }); + const p = h.RTCPeerConnection.prototype.addTrack; + p && (h.RTCPeerConnection.prototype.addTrack = function() { + const m = p.apply(this, arguments); + return m._pc = this, m; + }), h.RTCRtpSender.prototype.getStats = function() { + const m = this; + return this._pc.getStats().then((T) => vy(T, m.track, !0)); + }; + } + if (!("getStats" in h.RTCRtpReceiver.prototype)) { + const c = h.RTCPeerConnection.prototype.getReceivers; + c && (h.RTCPeerConnection.prototype.getReceivers = function() { + const p = c.apply(this, []); + return p.forEach((m) => m._pc = this), p; + }), il(h, "track", (p) => (p.receiver._pc = p.srcElement, p)), h.RTCRtpReceiver.prototype.getStats = function() { + const p = this; + return this._pc.getStats().then((m) => vy(m, p.track, !1)); + }; + } + if (!("getStats" in h.RTCRtpSender.prototype) || !("getStats" in h.RTCRtpReceiver.prototype)) + return; + const s = h.RTCPeerConnection.prototype.getStats; + h.RTCPeerConnection.prototype.getStats = function() { + if (arguments.length > 0 && arguments[0] instanceof h.MediaStreamTrack) { + const c = arguments[0]; + let p, m, T; + return this.getSenders().forEach((D) => { + D.track === c && (p ? T = !0 : p = D); + }), this.getReceivers().forEach((D) => (D.track === c && (m ? T = !0 : m = D), D.track === c)), T || p && m ? Promise.reject(new DOMException("There are more than one sender or receiver for the track.", "InvalidAccessError")) : p ? p.getStats() : m ? m.getStats() : Promise.reject(new DOMException("There is no sender or receiver for the track.", "InvalidAccessError")); + } + return s.apply(this, arguments); + }; + } + function Ph(h) { + h.RTCPeerConnection.prototype.getLocalStreams = function() { + return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, Object.keys(this._shimmedLocalStreams).map((T) => this._shimmedLocalStreams[T][0]); + }; + const s = h.RTCPeerConnection.prototype.addTrack; + h.RTCPeerConnection.prototype.addTrack = function(T, D) { + if (!D) + return s.apply(this, arguments); + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + const k = s.apply(this, arguments); + return this._shimmedLocalStreams[D.id] ? this._shimmedLocalStreams[D.id].indexOf(k) === -1 && this._shimmedLocalStreams[D.id].push(k) : this._shimmedLocalStreams[D.id] = [D, k], k; + }; + const c = h.RTCPeerConnection.prototype.addStream; + h.RTCPeerConnection.prototype.addStream = function(T) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}, T.getTracks().forEach((N) => { + if (this.getSenders().find((U) => U.track === N)) + throw new DOMException("Track already exists.", "InvalidAccessError"); + }); + const D = this.getSenders(); + c.apply(this, arguments); + const k = this.getSenders().filter((N) => D.indexOf(N) === -1); + this._shimmedLocalStreams[T.id] = [T].concat(k); + }; + const p = h.RTCPeerConnection.prototype.removeStream; + h.RTCPeerConnection.prototype.removeStream = function(T) { + return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, delete this._shimmedLocalStreams[T.id], p.apply(this, arguments); + }; + const m = h.RTCPeerConnection.prototype.removeTrack; + h.RTCPeerConnection.prototype.removeTrack = function(T) { + return this._shimmedLocalStreams = this._shimmedLocalStreams || {}, T && Object.keys(this._shimmedLocalStreams).forEach((D) => { + const k = this._shimmedLocalStreams[D].indexOf(T); + k !== -1 && this._shimmedLocalStreams[D].splice(k, 1), this._shimmedLocalStreams[D].length === 1 && delete this._shimmedLocalStreams[D]; + }), m.apply(this, arguments); + }; + } + function my(h, s) { + if (!h.RTCPeerConnection) + return; + if (h.RTCPeerConnection.prototype.addTrack && s.version >= 65) + return Ph(h); + const c = h.RTCPeerConnection.prototype.getLocalStreams; + h.RTCPeerConnection.prototype.getLocalStreams = function() { + const N = c.apply(this); + return this._reverseStreams = this._reverseStreams || {}, N.map((U) => this._reverseStreams[U.id]); + }; + const p = h.RTCPeerConnection.prototype.addStream; + h.RTCPeerConnection.prototype.addStream = function(N) { + if (this._streams = this._streams || {}, this._reverseStreams = this._reverseStreams || {}, N.getTracks().forEach((U) => { + if (this.getSenders().find((V) => V.track === U)) + throw new DOMException("Track already exists.", "InvalidAccessError"); + }), !this._reverseStreams[N.id]) { + const U = new h.MediaStream(N.getTracks()); + this._streams[N.id] = U, this._reverseStreams[U.id] = N, N = U; + } + p.apply(this, [N]); + }; + const m = h.RTCPeerConnection.prototype.removeStream; + function T(N, U) { + let V = U.sdp; + return Object.keys(N._reverseStreams || []).forEach((G) => { + const K = N._reverseStreams[G], q = N._streams[K.id]; + V = V.replace(new RegExp(q.id, "g"), K.id); + }), new RTCSessionDescription({ type: U.type, sdp: V }); + } + h.RTCPeerConnection.prototype.removeStream = function(N) { + this._streams = this._streams || {}, this._reverseStreams = this._reverseStreams || {}, m.apply(this, [this._streams[N.id] || N]), delete this._reverseStreams[this._streams[N.id] ? this._streams[N.id].id : N.id], delete this._streams[N.id]; + }, h.RTCPeerConnection.prototype.addTrack = function(N, U) { + if (this.signalingState === "closed") + throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.", "InvalidStateError"); + const V = [].slice.call(arguments, 1); + if (V.length !== 1 || !V[0].getTracks().find((K) => K === N)) + throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.", "NotSupportedError"); + if (this.getSenders().find((K) => K.track === N)) + throw new DOMException("Track already exists.", "InvalidAccessError"); + this._streams = this._streams || {}, this._reverseStreams = this._reverseStreams || {}; + const G = this._streams[U.id]; + if (G) + G.addTrack(N), Promise.resolve().then(() => { + this.dispatchEvent(new Event("negotiationneeded")); + }); + else { + const K = new h.MediaStream([N]); + this._streams[U.id] = K, this._reverseStreams[K.id] = U, this.addStream(K); + } + return this.getSenders().find((K) => K.track === N); + }, ["createOffer", "createAnswer"].forEach(function(N) { + const U = h.RTCPeerConnection.prototype[N], V = { [N]() { + const G = arguments; + return arguments.length && typeof arguments[0] == "function" ? U.apply(this, [(K) => { + const q = T(this, K); + G[0].apply(null, [q]); + }, (K) => { + G[1] && G[1].apply(null, K); + }, arguments[2]]) : U.apply(this, arguments).then((K) => T(this, K)); + } }; + h.RTCPeerConnection.prototype[N] = V[N]; + }); + const D = h.RTCPeerConnection.prototype.setLocalDescription; + h.RTCPeerConnection.prototype.setLocalDescription = function() { + return arguments.length && arguments[0].type ? (arguments[0] = function(N, U) { + let V = U.sdp; + return Object.keys(N._reverseStreams || []).forEach((G) => { + const K = N._reverseStreams[G], q = N._streams[K.id]; + V = V.replace(new RegExp(K.id, "g"), q.id); + }), new RTCSessionDescription({ type: U.type, sdp: V }); + }(this, arguments[0]), D.apply(this, arguments)) : D.apply(this, arguments); + }; + const k = Object.getOwnPropertyDescriptor(h.RTCPeerConnection.prototype, "localDescription"); + Object.defineProperty(h.RTCPeerConnection.prototype, "localDescription", { get() { + const N = k.get.apply(this); + return N.type === "" ? N : T(this, N); + } }), h.RTCPeerConnection.prototype.removeTrack = function(N) { + if (this.signalingState === "closed") + throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.", "InvalidStateError"); + if (!N._pc) + throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.", "TypeError"); + if (N._pc !== this) + throw new DOMException("Sender was not created by this connection.", "InvalidAccessError"); + let U; + this._streams = this._streams || {}, Object.keys(this._streams).forEach((V) => { + this._streams[V].getTracks().find((G) => N.track === G) && (U = this._streams[V]); + }), U && (U.getTracks().length === 1 ? this.removeStream(this._reverseStreams[U.id]) : U.removeTrack(N.track), this.dispatchEvent(new Event("negotiationneeded"))); + }; + } + function Pi(h, s) { + !h.RTCPeerConnection && h.webkitRTCPeerConnection && (h.RTCPeerConnection = h.webkitRTCPeerConnection), h.RTCPeerConnection && s.version < 53 && ["setLocalDescription", "setRemoteDescription", "addIceCandidate"].forEach(function(c) { + const p = h.RTCPeerConnection.prototype[c], m = { [c]() { + return arguments[0] = new (c === "addIceCandidate" ? h.RTCIceCandidate : h.RTCSessionDescription)(arguments[0]), p.apply(this, arguments); + } }; + h.RTCPeerConnection.prototype[c] = m[c]; + }); + } + function Xo(h, s) { + il(h, "negotiationneeded", (c) => { + const p = c.target; + if (!(s.version < 72 || p.getConfiguration && p.getConfiguration().sdpSemantics === "plan-b") || p.signalingState === "stable") + return c; + }); + } + var Nh = Object.freeze({ __proto__: null, fixNegotiationNeeded: Xo, shimAddTrackRemoveTrack: my, shimAddTrackRemoveTrackWithNative: Ph, shimGetDisplayMedia: function(h, s) { + h.navigator.mediaDevices && "getDisplayMedia" in h.navigator.mediaDevices || h.navigator.mediaDevices && (typeof s == "function" ? h.navigator.mediaDevices.getDisplayMedia = function(c) { + return s(c).then((p) => { + const m = c.video && c.video.width, T = c.video && c.video.height, D = c.video && c.video.frameRate; + return c.video = { mandatory: { chromeMediaSource: "desktop", chromeMediaSourceId: p, maxFrameRate: D || 3 } }, m && (c.video.mandatory.maxWidth = m), T && (c.video.mandatory.maxHeight = T), h.navigator.mediaDevices.getUserMedia(c); + }); + } : console.error("shimGetDisplayMedia: getSourceId argument is not a function")); + }, shimGetSendersWithDtmf: Mh, shimGetStats: kh, shimGetUserMedia: U0, shimMediaStream: wo, shimOnTrack: cs, shimPeerConnection: Pi, shimSenderReceiverGetStats: su }); + function Gp(h, s) { + const c = h && h.navigator, p = h && h.MediaStreamTrack; + if (c.getUserMedia = function(m, T, D) { + gy("navigator.getUserMedia", "navigator.mediaDevices.getUserMedia"), c.mediaDevices.getUserMedia(m).then(T, D); + }, !(s.version > 55 && "autoGainControl" in c.mediaDevices.getSupportedConstraints())) { + const m = function(D, k, N) { + k in D && !(N in D) && (D[N] = D[k], delete D[k]); + }, T = c.mediaDevices.getUserMedia.bind(c.mediaDevices); + if (c.mediaDevices.getUserMedia = function(D) { + return typeof D == "object" && typeof D.audio == "object" && (D = JSON.parse(JSON.stringify(D)), m(D.audio, "autoGainControl", "mozAutoGainControl"), m(D.audio, "noiseSuppression", "mozNoiseSuppression")), T(D); + }, p && p.prototype.getSettings) { + const D = p.prototype.getSettings; + p.prototype.getSettings = function() { + const k = D.apply(this, arguments); + return m(k, "mozAutoGainControl", "autoGainControl"), m(k, "mozNoiseSuppression", "noiseSuppression"), k; + }; + } + if (p && p.prototype.applyConstraints) { + const D = p.prototype.applyConstraints; + p.prototype.applyConstraints = function(k) { + return this.kind === "audio" && typeof k == "object" && (k = JSON.parse(JSON.stringify(k)), m(k, "autoGainControl", "mozAutoGainControl"), m(k, "noiseSuppression", "mozNoiseSuppression")), D.apply(this, [k]); + }; + } + } + } + function Lh(h) { + typeof h == "object" && h.RTCTrackEvent && "receiver" in h.RTCTrackEvent.prototype && !("transceiver" in h.RTCTrackEvent.prototype) && Object.defineProperty(h.RTCTrackEvent.prototype, "transceiver", { get() { + return { receiver: this.receiver }; + } }); + } + function Wu(h, s) { + if (typeof h != "object" || !h.RTCPeerConnection && !h.mozRTCPeerConnection) + return; + !h.RTCPeerConnection && h.mozRTCPeerConnection && (h.RTCPeerConnection = h.mozRTCPeerConnection), s.version < 53 && ["setLocalDescription", "setRemoteDescription", "addIceCandidate"].forEach(function(m) { + const T = h.RTCPeerConnection.prototype[m], D = { [m]() { + return arguments[0] = new (m === "addIceCandidate" ? h.RTCIceCandidate : h.RTCSessionDescription)(arguments[0]), T.apply(this, arguments); + } }; + h.RTCPeerConnection.prototype[m] = D[m]; + }); + const c = { inboundrtp: "inbound-rtp", outboundrtp: "outbound-rtp", candidatepair: "candidate-pair", localcandidate: "local-candidate", remotecandidate: "remote-candidate" }, p = h.RTCPeerConnection.prototype.getStats; + h.RTCPeerConnection.prototype.getStats = function() { + const [m, T, D] = arguments; + return p.apply(this, [m || null]).then((k) => { + if (s.version < 53 && !T) + try { + k.forEach((N) => { + N.type = c[N.type] || N.type; + }); + } catch (N) { + if (N.name !== "TypeError") + throw N; + k.forEach((U, V) => { + k.set(V, Object.assign({}, U, { type: c[U.type] || U.type })); + }); + } + return k; + }).then(T, D); + }; + } + function Gu(h) { + if (typeof h != "object" || !h.RTCPeerConnection || !h.RTCRtpSender || h.RTCRtpSender && "getStats" in h.RTCRtpSender.prototype) + return; + const s = h.RTCPeerConnection.prototype.getSenders; + s && (h.RTCPeerConnection.prototype.getSenders = function() { + const p = s.apply(this, []); + return p.forEach((m) => m._pc = this), p; + }); + const c = h.RTCPeerConnection.prototype.addTrack; + c && (h.RTCPeerConnection.prototype.addTrack = function() { + const p = c.apply(this, arguments); + return p._pc = this, p; + }), h.RTCRtpSender.prototype.getStats = function() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(/* @__PURE__ */ new Map()); + }; + } + function Rv(h) { + if (typeof h != "object" || !h.RTCPeerConnection || !h.RTCRtpSender || h.RTCRtpSender && "getStats" in h.RTCRtpReceiver.prototype) + return; + const s = h.RTCPeerConnection.prototype.getReceivers; + s && (h.RTCPeerConnection.prototype.getReceivers = function() { + const c = s.apply(this, []); + return c.forEach((p) => p._pc = this), c; + }), il(h, "track", (c) => (c.receiver._pc = c.srcElement, c)), h.RTCRtpReceiver.prototype.getStats = function() { + return this._pc.getStats(this.track); + }; + } + function Yp(h) { + h.RTCPeerConnection && !("removeStream" in h.RTCPeerConnection.prototype) && (h.RTCPeerConnection.prototype.removeStream = function(s) { + gy("removeStream", "removeTrack"), this.getSenders().forEach((c) => { + c.track && s.getTracks().includes(c.track) && this.removeTrack(c); + }); + }); + } + function Ic(h) { + h.DataChannel && !h.RTCDataChannel && (h.RTCDataChannel = h.DataChannel); + } + function Yu(h) { + if (typeof h != "object" || !h.RTCPeerConnection) + return; + const s = h.RTCPeerConnection.prototype.addTransceiver; + s && (h.RTCPeerConnection.prototype.addTransceiver = function() { + this.setParametersPromises = []; + let c = arguments[1] && arguments[1].sendEncodings; + c === void 0 && (c = []), c = [...c]; + const p = c.length > 0; + p && c.forEach((T) => { + if ("rid" in T && !/^[a-z0-9]{0,16}$/i.test(T.rid)) + throw new TypeError("Invalid RID value provided."); + if ("scaleResolutionDownBy" in T && !(parseFloat(T.scaleResolutionDownBy) >= 1)) + throw new RangeError("scale_resolution_down_by must be >= 1.0"); + if ("maxFramerate" in T && !(parseFloat(T.maxFramerate) >= 0)) + throw new RangeError("max_framerate must be >= 0.0"); + }); + const m = s.apply(this, arguments); + if (p) { + const { sender: T } = m, D = T.getParameters(); + (!("encodings" in D) || D.encodings.length === 1 && Object.keys(D.encodings[0]).length === 0) && (D.encodings = c, T.sendEncodings = c, this.setParametersPromises.push(T.setParameters(D).then(() => { + delete T.sendEncodings; + }).catch(() => { + delete T.sendEncodings; + }))); + } + return m; + }); + } + function Dv(h) { + if (typeof h != "object" || !h.RTCRtpSender) + return; + const s = h.RTCRtpSender.prototype.getParameters; + s && (h.RTCRtpSender.prototype.getParameters = function() { + const c = s.apply(this, arguments); + return "encodings" in c || (c.encodings = [].concat(this.sendEncodings || [{}])), c; + }); + } + function $f(h) { + if (typeof h != "object" || !h.RTCPeerConnection) + return; + const s = h.RTCPeerConnection.prototype.createOffer; + h.RTCPeerConnection.prototype.createOffer = function() { + return this.setParametersPromises && this.setParametersPromises.length ? Promise.all(this.setParametersPromises).then(() => s.apply(this, arguments)).finally(() => { + this.setParametersPromises = []; + }) : s.apply(this, arguments); + }; + } + function Fh(h) { + if (typeof h != "object" || !h.RTCPeerConnection) + return; + const s = h.RTCPeerConnection.prototype.createAnswer; + h.RTCPeerConnection.prototype.createAnswer = function() { + return this.setParametersPromises && this.setParametersPromises.length ? Promise.all(this.setParametersPromises).then(() => s.apply(this, arguments)).finally(() => { + this.setParametersPromises = []; + }) : s.apply(this, arguments); + }; + } + var Ov = Object.freeze({ __proto__: null, shimAddTransceiver: Yu, shimCreateAnswer: Fh, shimCreateOffer: $f, shimGetDisplayMedia: function(h, s) { + h.navigator.mediaDevices && "getDisplayMedia" in h.navigator.mediaDevices || h.navigator.mediaDevices && (h.navigator.mediaDevices.getDisplayMedia = function(c) { + if (!c || !c.video) { + const p = new DOMException("getDisplayMedia without video constraints is undefined"); + return p.name = "NotFoundError", p.code = 8, Promise.reject(p); + } + return c.video === !0 ? c.video = { mediaSource: s } : c.video.mediaSource = s, h.navigator.mediaDevices.getUserMedia(c); + }); + }, shimGetParameters: Dv, shimGetUserMedia: Gp, shimOnTrack: Lh, shimPeerConnection: Wu, shimRTCDataChannel: Ic, shimReceiverGetStats: Rv, shimRemoveStream: Yp, shimSenderGetStats: Gu }); + function yy(h) { + if (typeof h == "object" && h.RTCPeerConnection) { + if ("getLocalStreams" in h.RTCPeerConnection.prototype || (h.RTCPeerConnection.prototype.getLocalStreams = function() { + return this._localStreams || (this._localStreams = []), this._localStreams; + }), !("addStream" in h.RTCPeerConnection.prototype)) { + const s = h.RTCPeerConnection.prototype.addTrack; + h.RTCPeerConnection.prototype.addStream = function(c) { + this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach((p) => s.call(this, p, c)), c.getVideoTracks().forEach((p) => s.call(this, p, c)); + }, h.RTCPeerConnection.prototype.addTrack = function(c, ...p) { + return p && p.forEach((m) => { + this._localStreams ? this._localStreams.includes(m) || this._localStreams.push(m) : this._localStreams = [m]; + }), s.apply(this, arguments); + }; + } + "removeStream" in h.RTCPeerConnection.prototype || (h.RTCPeerConnection.prototype.removeStream = function(s) { + this._localStreams || (this._localStreams = []); + const c = this._localStreams.indexOf(s); + if (c === -1) + return; + this._localStreams.splice(c, 1); + const p = s.getTracks(); + this.getSenders().forEach((m) => { + p.includes(m.track) && this.removeTrack(m); + }); + }); + } + } + function Xp(h) { + if (typeof h == "object" && h.RTCPeerConnection && ("getRemoteStreams" in h.RTCPeerConnection.prototype || (h.RTCPeerConnection.prototype.getRemoteStreams = function() { + return this._remoteStreams ? this._remoteStreams : []; + }), !("onaddstream" in h.RTCPeerConnection.prototype))) { + Object.defineProperty(h.RTCPeerConnection.prototype, "onaddstream", { get() { + return this._onaddstream; + }, set(c) { + this._onaddstream && (this.removeEventListener("addstream", this._onaddstream), this.removeEventListener("track", this._onaddstreampoly)), this.addEventListener("addstream", this._onaddstream = c), this.addEventListener("track", this._onaddstreampoly = (p) => { + p.streams.forEach((m) => { + if (this._remoteStreams || (this._remoteStreams = []), this._remoteStreams.includes(m)) + return; + this._remoteStreams.push(m); + const T = new Event("addstream"); + T.stream = m, this.dispatchEvent(T); + }); + }); + } }); + const s = h.RTCPeerConnection.prototype.setRemoteDescription; + h.RTCPeerConnection.prototype.setRemoteDescription = function() { + const c = this; + return this._onaddstreampoly || this.addEventListener("track", this._onaddstreampoly = function(p) { + p.streams.forEach((m) => { + if (c._remoteStreams || (c._remoteStreams = []), c._remoteStreams.indexOf(m) >= 0) + return; + c._remoteStreams.push(m); + const T = new Event("addstream"); + T.stream = m, c.dispatchEvent(T); + }); + }), s.apply(c, arguments); + }; + } + } + function Vf(h) { + if (typeof h != "object" || !h.RTCPeerConnection) + return; + const s = h.RTCPeerConnection.prototype, c = s.createOffer, p = s.createAnswer, m = s.setLocalDescription, T = s.setRemoteDescription, D = s.addIceCandidate; + s.createOffer = function(N, U) { + const V = arguments.length >= 2 ? arguments[2] : arguments[0], G = c.apply(this, [V]); + return U ? (G.then(N, U), Promise.resolve()) : G; + }, s.createAnswer = function(N, U) { + const V = arguments.length >= 2 ? arguments[2] : arguments[0], G = p.apply(this, [V]); + return U ? (G.then(N, U), Promise.resolve()) : G; + }; + let k = function(N, U, V) { + const G = m.apply(this, [N]); + return V ? (G.then(U, V), Promise.resolve()) : G; + }; + s.setLocalDescription = k, k = function(N, U, V) { + const G = T.apply(this, [N]); + return V ? (G.then(U, V), Promise.resolve()) : G; + }, s.setRemoteDescription = k, k = function(N, U, V) { + const G = D.apply(this, [N]); + return V ? (G.then(U, V), Promise.resolve()) : G; + }, s.addIceCandidate = k; + } + function $l(h) { + const s = h && h.navigator; + if (s.mediaDevices && s.mediaDevices.getUserMedia) { + const c = s.mediaDevices, p = c.getUserMedia.bind(c); + s.mediaDevices.getUserMedia = (m) => p(_y(m)); + } + !s.getUserMedia && s.mediaDevices && s.mediaDevices.getUserMedia && (s.getUserMedia = function(c, p, m) { + s.mediaDevices.getUserMedia(c).then(p, m); + }.bind(s)); + } + function _y(h) { + return h && h.video !== void 0 ? Object.assign({}, h, { video: XE(h.video) }) : h; + } + function j0(h) { + if (!h.RTCPeerConnection) + return; + const s = h.RTCPeerConnection; + h.RTCPeerConnection = function(c, p) { + if (c && c.iceServers) { + const m = []; + for (let T = 0; T < c.iceServers.length; T++) { + let D = c.iceServers[T]; + !D.hasOwnProperty("urls") && D.hasOwnProperty("url") ? (gy("RTCIceServer.url", "RTCIceServer.urls"), D = JSON.parse(JSON.stringify(D)), D.urls = D.url, delete D.url, m.push(D)) : m.push(c.iceServers[T]); + } + c.iceServers = m; + } + return new s(c, p); + }, h.RTCPeerConnection.prototype = s.prototype, "generateCertificate" in s && Object.defineProperty(h.RTCPeerConnection, "generateCertificate", { get: () => s.generateCertificate }); + } + function Sy(h) { + typeof h == "object" && h.RTCTrackEvent && "receiver" in h.RTCTrackEvent.prototype && !("transceiver" in h.RTCTrackEvent.prototype) && Object.defineProperty(h.RTCTrackEvent.prototype, "transceiver", { get() { + return { receiver: this.receiver }; + } }); + } + function Xu(h) { + const s = h.RTCPeerConnection.prototype.createOffer; + h.RTCPeerConnection.prototype.createOffer = function(c) { + if (c) { + c.offerToReceiveAudio !== void 0 && (c.offerToReceiveAudio = !!c.offerToReceiveAudio); + const p = this.getTransceivers().find((T) => T.receiver.track.kind === "audio"); + c.offerToReceiveAudio === !1 && p ? p.direction === "sendrecv" ? p.setDirection ? p.setDirection("sendonly") : p.direction = "sendonly" : p.direction === "recvonly" && (p.setDirection ? p.setDirection("inactive") : p.direction = "inactive") : c.offerToReceiveAudio !== !0 || p || this.addTransceiver("audio", { direction: "recvonly" }), c.offerToReceiveVideo !== void 0 && (c.offerToReceiveVideo = !!c.offerToReceiveVideo); + const m = this.getTransceivers().find((T) => T.receiver.track.kind === "video"); + c.offerToReceiveVideo === !1 && m ? m.direction === "sendrecv" ? m.setDirection ? m.setDirection("sendonly") : m.direction = "sendonly" : m.direction === "recvonly" && (m.setDirection ? m.setDirection("inactive") : m.direction = "inactive") : c.offerToReceiveVideo !== !0 || m || this.addTransceiver("video", { direction: "recvonly" }); + } + return s.apply(this, arguments); + }; + } + function zf(h) { + typeof h != "object" || h.AudioContext || (h.AudioContext = h.webkitAudioContext); + } + var Hf = Object.freeze({ __proto__: null, shimAudioContext: zf, shimCallbacksAPI: Vf, shimConstraints: _y, shimCreateOfferLegacy: Xu, shimGetUserMedia: $l, shimLocalStreamsAPI: yy, shimRTCIceServerUrls: j0, shimRemoteStreamsAPI: Xp, shimTrackEventTransceiver: Sy }), xc = { exports: {} }; + (function(h) { + const s = { generateIdentifier: function() { + return Math.random().toString(36).substring(2, 12); + } }; + s.localCName = s.generateIdentifier(), s.splitLines = function(c) { + return c.trim().split(` +`).map((p) => p.trim()); + }, s.splitSections = function(c) { + return c.split(` +m=`).map((p, m) => (m > 0 ? "m=" + p : p).trim() + `\r +`); + }, s.getDescription = function(c) { + const p = s.splitSections(c); + return p && p[0]; + }, s.getMediaSections = function(c) { + const p = s.splitSections(c); + return p.shift(), p; + }, s.matchPrefix = function(c, p) { + return s.splitLines(c).filter((m) => m.indexOf(p) === 0); + }, s.parseCandidate = function(c) { + let p; + p = c.indexOf("a=candidate:") === 0 ? c.substring(12).split(" ") : c.substring(10).split(" "); + const m = { foundation: p[0], component: { 1: "rtp", 2: "rtcp" }[p[1]] || p[1], protocol: p[2].toLowerCase(), priority: parseInt(p[3], 10), ip: p[4], address: p[4], port: parseInt(p[5], 10), type: p[7] }; + for (let T = 8; T < p.length; T += 2) + switch (p[T]) { + case "raddr": + m.relatedAddress = p[T + 1]; + break; + case "rport": + m.relatedPort = parseInt(p[T + 1], 10); + break; + case "tcptype": + m.tcpType = p[T + 1]; + break; + case "ufrag": + m.ufrag = p[T + 1], m.usernameFragment = p[T + 1]; + break; + default: + m[p[T]] === void 0 && (m[p[T]] = p[T + 1]); + } + return m; + }, s.writeCandidate = function(c) { + const p = []; + p.push(c.foundation); + const m = c.component; + m === "rtp" ? p.push(1) : m === "rtcp" ? p.push(2) : p.push(m), p.push(c.protocol.toUpperCase()), p.push(c.priority), p.push(c.address || c.ip), p.push(c.port); + const T = c.type; + return p.push("typ"), p.push(T), T !== "host" && c.relatedAddress && c.relatedPort && (p.push("raddr"), p.push(c.relatedAddress), p.push("rport"), p.push(c.relatedPort)), c.tcpType && c.protocol.toLowerCase() === "tcp" && (p.push("tcptype"), p.push(c.tcpType)), (c.usernameFragment || c.ufrag) && (p.push("ufrag"), p.push(c.usernameFragment || c.ufrag)), "candidate:" + p.join(" "); + }, s.parseIceOptions = function(c) { + return c.substring(14).split(" "); + }, s.parseRtpMap = function(c) { + let p = c.substring(9).split(" "); + const m = { payloadType: parseInt(p.shift(), 10) }; + return p = p[0].split("/"), m.name = p[0], m.clockRate = parseInt(p[1], 10), m.channels = p.length === 3 ? parseInt(p[2], 10) : 1, m.numChannels = m.channels, m; + }, s.writeRtpMap = function(c) { + let p = c.payloadType; + c.preferredPayloadType !== void 0 && (p = c.preferredPayloadType); + const m = c.channels || c.numChannels || 1; + return "a=rtpmap:" + p + " " + c.name + "/" + c.clockRate + (m !== 1 ? "/" + m : "") + `\r +`; + }, s.parseExtmap = function(c) { + const p = c.substring(9).split(" "); + return { id: parseInt(p[0], 10), direction: p[0].indexOf("/") > 0 ? p[0].split("/")[1] : "sendrecv", uri: p[1], attributes: p.slice(2).join(" ") }; + }, s.writeExtmap = function(c) { + return "a=extmap:" + (c.id || c.preferredId) + (c.direction && c.direction !== "sendrecv" ? "/" + c.direction : "") + " " + c.uri + (c.attributes ? " " + c.attributes : "") + `\r +`; + }, s.parseFmtp = function(c) { + const p = {}; + let m; + const T = c.substring(c.indexOf(" ") + 1).split(";"); + for (let D = 0; D < T.length; D++) + m = T[D].trim().split("="), p[m[0].trim()] = m[1]; + return p; + }, s.writeFmtp = function(c) { + let p = "", m = c.payloadType; + if (c.preferredPayloadType !== void 0 && (m = c.preferredPayloadType), c.parameters && Object.keys(c.parameters).length) { + const T = []; + Object.keys(c.parameters).forEach((D) => { + c.parameters[D] !== void 0 ? T.push(D + "=" + c.parameters[D]) : T.push(D); + }), p += "a=fmtp:" + m + " " + T.join(";") + `\r +`; + } + return p; + }, s.parseRtcpFb = function(c) { + const p = c.substring(c.indexOf(" ") + 1).split(" "); + return { type: p.shift(), parameter: p.join(" ") }; + }, s.writeRtcpFb = function(c) { + let p = "", m = c.payloadType; + return c.preferredPayloadType !== void 0 && (m = c.preferredPayloadType), c.rtcpFeedback && c.rtcpFeedback.length && c.rtcpFeedback.forEach((T) => { + p += "a=rtcp-fb:" + m + " " + T.type + (T.parameter && T.parameter.length ? " " + T.parameter : "") + `\r +`; + }), p; + }, s.parseSsrcMedia = function(c) { + const p = c.indexOf(" "), m = { ssrc: parseInt(c.substring(7, p), 10) }, T = c.indexOf(":", p); + return T > -1 ? (m.attribute = c.substring(p + 1, T), m.value = c.substring(T + 1)) : m.attribute = c.substring(p + 1), m; + }, s.parseSsrcGroup = function(c) { + const p = c.substring(13).split(" "); + return { semantics: p.shift(), ssrcs: p.map((m) => parseInt(m, 10)) }; + }, s.getMid = function(c) { + const p = s.matchPrefix(c, "a=mid:")[0]; + if (p) + return p.substring(6); + }, s.parseFingerprint = function(c) { + const p = c.substring(14).split(" "); + return { algorithm: p[0].toLowerCase(), value: p[1].toUpperCase() }; + }, s.getDtlsParameters = function(c, p) { + return { role: "auto", fingerprints: s.matchPrefix(c + p, "a=fingerprint:").map(s.parseFingerprint) }; + }, s.writeDtlsParameters = function(c, p) { + let m = "a=setup:" + p + `\r +`; + return c.fingerprints.forEach((T) => { + m += "a=fingerprint:" + T.algorithm + " " + T.value + `\r +`; + }), m; + }, s.parseCryptoLine = function(c) { + const p = c.substring(9).split(" "); + return { tag: parseInt(p[0], 10), cryptoSuite: p[1], keyParams: p[2], sessionParams: p.slice(3) }; + }, s.writeCryptoLine = function(c) { + return "a=crypto:" + c.tag + " " + c.cryptoSuite + " " + (typeof c.keyParams == "object" ? s.writeCryptoKeyParams(c.keyParams) : c.keyParams) + (c.sessionParams ? " " + c.sessionParams.join(" ") : "") + `\r +`; + }, s.parseCryptoKeyParams = function(c) { + if (c.indexOf("inline:") !== 0) + return null; + const p = c.substring(7).split("|"); + return { keyMethod: "inline", keySalt: p[0], lifeTime: p[1], mkiValue: p[2] ? p[2].split(":")[0] : void 0, mkiLength: p[2] ? p[2].split(":")[1] : void 0 }; + }, s.writeCryptoKeyParams = function(c) { + return c.keyMethod + ":" + c.keySalt + (c.lifeTime ? "|" + c.lifeTime : "") + (c.mkiValue && c.mkiLength ? "|" + c.mkiValue + ":" + c.mkiLength : ""); + }, s.getCryptoParameters = function(c, p) { + return s.matchPrefix(c + p, "a=crypto:").map(s.parseCryptoLine); + }, s.getIceParameters = function(c, p) { + const m = s.matchPrefix(c + p, "a=ice-ufrag:")[0], T = s.matchPrefix(c + p, "a=ice-pwd:")[0]; + return m && T ? { usernameFragment: m.substring(12), password: T.substring(10) } : null; + }, s.writeIceParameters = function(c) { + let p = "a=ice-ufrag:" + c.usernameFragment + `\r +a=ice-pwd:` + c.password + `\r +`; + return c.iceLite && (p += `a=ice-lite\r +`), p; + }, s.parseRtpParameters = function(c) { + const p = { codecs: [], headerExtensions: [], fecMechanisms: [], rtcp: [] }, m = s.splitLines(c)[0].split(" "); + p.profile = m[2]; + for (let D = 3; D < m.length; D++) { + const k = m[D], N = s.matchPrefix(c, "a=rtpmap:" + k + " ")[0]; + if (N) { + const U = s.parseRtpMap(N), V = s.matchPrefix(c, "a=fmtp:" + k + " "); + switch (U.parameters = V.length ? s.parseFmtp(V[0]) : {}, U.rtcpFeedback = s.matchPrefix(c, "a=rtcp-fb:" + k + " ").map(s.parseRtcpFb), p.codecs.push(U), U.name.toUpperCase()) { + case "RED": + case "ULPFEC": + p.fecMechanisms.push(U.name.toUpperCase()); + } + } + } + s.matchPrefix(c, "a=extmap:").forEach((D) => { + p.headerExtensions.push(s.parseExtmap(D)); + }); + const T = s.matchPrefix(c, "a=rtcp-fb:* ").map(s.parseRtcpFb); + return p.codecs.forEach((D) => { + T.forEach((k) => { + D.rtcpFeedback.find((N) => N.type === k.type && N.parameter === k.parameter) || D.rtcpFeedback.push(k); + }); + }), p; + }, s.writeRtpDescription = function(c, p) { + let m = ""; + m += "m=" + c + " ", m += p.codecs.length > 0 ? "9" : "0", m += " " + (p.profile || "UDP/TLS/RTP/SAVPF") + " ", m += p.codecs.map((D) => D.preferredPayloadType !== void 0 ? D.preferredPayloadType : D.payloadType).join(" ") + `\r +`, m += `c=IN IP4 0.0.0.0\r +`, m += `a=rtcp:9 IN IP4 0.0.0.0\r +`, p.codecs.forEach((D) => { + m += s.writeRtpMap(D), m += s.writeFmtp(D), m += s.writeRtcpFb(D); + }); + let T = 0; + return p.codecs.forEach((D) => { + D.maxptime > T && (T = D.maxptime); + }), T > 0 && (m += "a=maxptime:" + T + `\r +`), p.headerExtensions && p.headerExtensions.forEach((D) => { + m += s.writeExtmap(D); + }), m; + }, s.parseRtpEncodingParameters = function(c) { + const p = [], m = s.parseRtpParameters(c), T = m.fecMechanisms.indexOf("RED") !== -1, D = m.fecMechanisms.indexOf("ULPFEC") !== -1, k = s.matchPrefix(c, "a=ssrc:").map((K) => s.parseSsrcMedia(K)).filter((K) => K.attribute === "cname"), N = k.length > 0 && k[0].ssrc; + let U; + const V = s.matchPrefix(c, "a=ssrc-group:FID").map((K) => K.substring(17).split(" ").map((q) => parseInt(q, 10))); + V.length > 0 && V[0].length > 1 && V[0][0] === N && (U = V[0][1]), m.codecs.forEach((K) => { + if (K.name.toUpperCase() === "RTX" && K.parameters.apt) { + let q = { ssrc: N, codecPayloadType: parseInt(K.parameters.apt, 10) }; + N && U && (q.rtx = { ssrc: U }), p.push(q), T && (q = JSON.parse(JSON.stringify(q)), q.fec = { ssrc: N, mechanism: D ? "red+ulpfec" : "red" }, p.push(q)); + } + }), p.length === 0 && N && p.push({ ssrc: N }); + let G = s.matchPrefix(c, "b="); + return G.length && (G = G[0].indexOf("b=TIAS:") === 0 ? parseInt(G[0].substring(7), 10) : G[0].indexOf("b=AS:") === 0 ? 1e3 * parseInt(G[0].substring(5), 10) * 0.95 - 16e3 : void 0, p.forEach((K) => { + K.maxBitrate = G; + })), p; + }, s.parseRtcpParameters = function(c) { + const p = {}, m = s.matchPrefix(c, "a=ssrc:").map((k) => s.parseSsrcMedia(k)).filter((k) => k.attribute === "cname")[0]; + m && (p.cname = m.value, p.ssrc = m.ssrc); + const T = s.matchPrefix(c, "a=rtcp-rsize"); + p.reducedSize = T.length > 0, p.compound = T.length === 0; + const D = s.matchPrefix(c, "a=rtcp-mux"); + return p.mux = D.length > 0, p; + }, s.writeRtcpParameters = function(c) { + let p = ""; + return c.reducedSize && (p += `a=rtcp-rsize\r +`), c.mux && (p += `a=rtcp-mux\r +`), c.ssrc !== void 0 && c.cname && (p += "a=ssrc:" + c.ssrc + " cname:" + c.cname + `\r +`), p; + }, s.parseMsid = function(c) { + let p; + const m = s.matchPrefix(c, "a=msid:"); + if (m.length === 1) + return p = m[0].substring(7).split(" "), { stream: p[0], track: p[1] }; + const T = s.matchPrefix(c, "a=ssrc:").map((D) => s.parseSsrcMedia(D)).filter((D) => D.attribute === "msid"); + return T.length > 0 ? (p = T[0].value.split(" "), { stream: p[0], track: p[1] }) : void 0; + }, s.parseSctpDescription = function(c) { + const p = s.parseMLine(c), m = s.matchPrefix(c, "a=max-message-size:"); + let T; + m.length > 0 && (T = parseInt(m[0].substring(19), 10)), isNaN(T) && (T = 65536); + const D = s.matchPrefix(c, "a=sctp-port:"); + if (D.length > 0) + return { port: parseInt(D[0].substring(12), 10), protocol: p.fmt, maxMessageSize: T }; + const k = s.matchPrefix(c, "a=sctpmap:"); + if (k.length > 0) { + const N = k[0].substring(10).split(" "); + return { port: parseInt(N[0], 10), protocol: N[1], maxMessageSize: T }; + } + }, s.writeSctpDescription = function(c, p) { + let m = []; + return m = c.protocol !== "DTLS/SCTP" ? ["m=" + c.kind + " 9 " + c.protocol + " " + p.protocol + `\r +`, `c=IN IP4 0.0.0.0\r +`, "a=sctp-port:" + p.port + `\r +`] : ["m=" + c.kind + " 9 " + c.protocol + " " + p.port + `\r +`, `c=IN IP4 0.0.0.0\r +`, "a=sctpmap:" + p.port + " " + p.protocol + ` 65535\r +`], p.maxMessageSize !== void 0 && m.push("a=max-message-size:" + p.maxMessageSize + `\r +`), m.join(""); + }, s.generateSessionId = function() { + return Math.random().toString().substr(2, 22); + }, s.writeSessionBoilerplate = function(c, p, m) { + let T; + const D = p !== void 0 ? p : 2; + return T = c || s.generateSessionId(), `v=0\r +o=` + (m || "thisisadapterortc") + " " + T + " " + D + ` IN IP4 127.0.0.1\r +s=-\r +t=0 0\r +`; + }, s.getDirection = function(c, p) { + const m = s.splitLines(c); + for (let T = 0; T < m.length; T++) + switch (m[T]) { + case "a=sendrecv": + case "a=sendonly": + case "a=recvonly": + case "a=inactive": + return m[T].substring(2); + } + return p ? s.getDirection(p) : "sendrecv"; + }, s.getKind = function(c) { + return s.splitLines(c)[0].split(" ")[0].substring(2); + }, s.isRejected = function(c) { + return c.split(" ", 2)[1] === "0"; + }, s.parseMLine = function(c) { + const p = s.splitLines(c)[0].substring(2).split(" "); + return { kind: p[0], port: parseInt(p[1], 10), protocol: p[2], fmt: p.slice(3).join(" ") }; + }, s.parseOLine = function(c) { + const p = s.matchPrefix(c, "o=")[0].substring(2).split(" "); + return { username: p[0], sessionId: p[1], sessionVersion: parseInt(p[2], 10), netType: p[3], addressType: p[4], address: p[5] }; + }, s.isValidSDP = function(c) { + if (typeof c != "string" || c.length === 0) + return !1; + const p = s.splitLines(c); + for (let m = 0; m < p.length; m++) + if (p[m].length < 2 || p[m].charAt(1) !== "=") + return !1; + return !0; + }, h.exports = s; + })(xc); + var by = xc.exports, Wf = i(by), ZE = r({ __proto__: null, default: Wf }, [by]); + function Ku(h) { + if (!h.RTCIceCandidate || h.RTCIceCandidate && "foundation" in h.RTCIceCandidate.prototype) + return; + const s = h.RTCIceCandidate; + h.RTCIceCandidate = function(c) { + if (typeof c == "object" && c.candidate && c.candidate.indexOf("a=") === 0 && ((c = JSON.parse(JSON.stringify(c))).candidate = c.candidate.substr(2)), c.candidate && c.candidate.length) { + const p = new s(c), m = Wf.parseCandidate(c.candidate), T = Object.assign(p, m); + return T.toJSON = function() { + return { candidate: T.candidate, sdpMid: T.sdpMid, sdpMLineIndex: T.sdpMLineIndex, usernameFragment: T.usernameFragment }; + }, T; + } + return new s(c); + }, h.RTCIceCandidate.prototype = s.prototype, il(h, "icecandidate", (c) => (c.candidate && Object.defineProperty(c, "candidate", { value: new h.RTCIceCandidate(c.candidate), writable: "false" }), c)); + } + function Tl(h) { + !h.RTCIceCandidate || h.RTCIceCandidate && "relayProtocol" in h.RTCIceCandidate.prototype || il(h, "icecandidate", (s) => { + if (s.candidate) { + const c = Wf.parseCandidate(s.candidate.candidate); + c.type === "relay" && (s.candidate.relayProtocol = { 0: "tls", 1: "tcp", 2: "udp" }[c.priority >> 24]); + } + return s; + }); + } + function Gf(h, s) { + if (!h.RTCPeerConnection) + return; + "sctp" in h.RTCPeerConnection.prototype || Object.defineProperty(h.RTCPeerConnection.prototype, "sctp", { get() { + return this._sctp === void 0 ? null : this._sctp; + } }); + const c = function(k) { + if (!k || !k.sdp) + return !1; + const N = Wf.splitSections(k.sdp); + return N.shift(), N.some((U) => { + const V = Wf.parseMLine(U); + return V && V.kind === "application" && V.protocol.indexOf("SCTP") !== -1; + }); + }, p = function(k) { + const N = k.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (N === null || N.length < 2) + return -1; + const U = parseInt(N[1], 10); + return U != U ? -1 : U; + }, m = function(k) { + let N = 65536; + return s.browser === "firefox" && (N = s.version < 57 ? k === -1 ? 16384 : 2147483637 : s.version < 60 ? s.version === 57 ? 65535 : 65536 : 2147483637), N; + }, T = function(k, N) { + let U = 65536; + s.browser === "firefox" && s.version === 57 && (U = 65535); + const V = Wf.matchPrefix(k.sdp, "a=max-message-size:"); + return V.length > 0 ? U = parseInt(V[0].substr(19), 10) : s.browser === "firefox" && N !== -1 && (U = 2147483637), U; + }, D = h.RTCPeerConnection.prototype.setRemoteDescription; + h.RTCPeerConnection.prototype.setRemoteDescription = function() { + if (this._sctp = null, s.browser === "chrome" && s.version >= 76) { + const { sdpSemantics: k } = this.getConfiguration(); + k === "plan-b" && Object.defineProperty(this, "sctp", { get() { + return this._sctp === void 0 ? null : this._sctp; + }, enumerable: !0, configurable: !0 }); + } + if (c(arguments[0])) { + const k = p(arguments[0]), N = m(k), U = T(arguments[0], k); + let V; + V = N === 0 && U === 0 ? Number.POSITIVE_INFINITY : N === 0 || U === 0 ? Math.max(N, U) : Math.min(N, U); + const G = {}; + Object.defineProperty(G, "maxMessageSize", { get: () => V }), this._sctp = G; + } + return D.apply(this, arguments); + }; + } + function Bh(h) { + if (!h.RTCPeerConnection || !("createDataChannel" in h.RTCPeerConnection.prototype)) + return; + function s(p, m) { + const T = p.send; + p.send = function() { + const D = arguments[0], k = D.length || D.size || D.byteLength; + if (p.readyState === "open" && m.sctp && k > m.sctp.maxMessageSize) + throw new TypeError("Message too large (can send a maximum of " + m.sctp.maxMessageSize + " bytes)"); + return T.apply(p, arguments); + }; + } + const c = h.RTCPeerConnection.prototype.createDataChannel; + h.RTCPeerConnection.prototype.createDataChannel = function() { + const p = c.apply(this, arguments); + return s(p, this), p; + }, il(h, "datachannel", (p) => (s(p.channel, p.target), p)); + } + function Yf(h) { + if (!h.RTCPeerConnection || "connectionState" in h.RTCPeerConnection.prototype) + return; + const s = h.RTCPeerConnection.prototype; + Object.defineProperty(s, "connectionState", { get() { + return { completed: "connected", checking: "connecting" }[this.iceConnectionState] || this.iceConnectionState; + }, enumerable: !0, configurable: !0 }), Object.defineProperty(s, "onconnectionstatechange", { get() { + return this._onconnectionstatechange || null; + }, set(c) { + this._onconnectionstatechange && (this.removeEventListener("connectionstatechange", this._onconnectionstatechange), delete this._onconnectionstatechange), c && this.addEventListener("connectionstatechange", this._onconnectionstatechange = c); + }, enumerable: !0, configurable: !0 }), ["setLocalDescription", "setRemoteDescription"].forEach((c) => { + const p = s[c]; + s[c] = function() { + return this._connectionstatechangepoly || (this._connectionstatechangepoly = (m) => { + const T = m.target; + if (T._lastConnectionState !== T.connectionState) { + T._lastConnectionState = T.connectionState; + const D = new Event("connectionstatechange", m); + T.dispatchEvent(D); + } + return m; + }, this.addEventListener("iceconnectionstatechange", this._connectionstatechangepoly)), p.apply(this, arguments); + }; + }); + } + function Mv(h, s) { + if (!h.RTCPeerConnection || s.browser === "chrome" && s.version >= 71 || s.browser === "safari" && s.version >= 605) + return; + const c = h.RTCPeerConnection.prototype.setRemoteDescription; + h.RTCPeerConnection.prototype.setRemoteDescription = function(p) { + if (p && p.sdp && p.sdp.indexOf(` +a=extmap-allow-mixed`) !== -1) { + const m = p.sdp.split(` +`).filter((T) => T.trim() !== "a=extmap-allow-mixed").join(` +`); + h.RTCSessionDescription && p instanceof h.RTCSessionDescription ? arguments[0] = new h.RTCSessionDescription({ type: p.type, sdp: m }) : p.sdp = m; + } + return c.apply(this, arguments); + }; + } + function lu(h, s) { + if (!h.RTCPeerConnection || !h.RTCPeerConnection.prototype) + return; + const c = h.RTCPeerConnection.prototype.addIceCandidate; + c && c.length !== 0 && (h.RTCPeerConnection.prototype.addIceCandidate = function() { + return arguments[0] ? (s.browser === "chrome" && s.version < 78 || s.browser === "firefox" && s.version < 68 || s.browser === "safari") && arguments[0] && arguments[0].candidate === "" ? Promise.resolve() : c.apply(this, arguments) : (arguments[1] && arguments[1].apply(null), Promise.resolve()); + }); + } + function Xf(h, s) { + if (!h.RTCPeerConnection || !h.RTCPeerConnection.prototype) + return; + const c = h.RTCPeerConnection.prototype.setLocalDescription; + c && c.length !== 0 && (h.RTCPeerConnection.prototype.setLocalDescription = function() { + let p = arguments[0] || {}; + if (typeof p != "object" || p.type && p.sdp) + return c.apply(this, arguments); + if (p = { type: p.type, sdp: p.sdp }, !p.type) + switch (this.signalingState) { + case "stable": + case "have-local-offer": + case "have-remote-pranswer": + p.type = "offer"; + break; + default: + p.type = "answer"; + } + return p.sdp || p.type !== "offer" && p.type !== "answer" ? c.apply(this, [p]) : (p.type === "offer" ? this.createOffer : this.createAnswer).apply(this).then((m) => c.apply(this, [m])); + }); + } + var Ey = Object.freeze({ __proto__: null, removeExtmapAllowMixed: Mv, shimAddIceCandidateNullOrEmpty: lu, shimConnectionState: Yf, shimMaxMessageSize: Gf, shimParameterlessSetLocalDescription: Xf, shimRTCIceCandidate: Ku, shimRTCIceCandidateRelayProtocol: Tl, shimSendThrowTypeError: Bh }); + (function({ window: h } = {}, s = { shimChrome: !0, shimFirefox: !0, shimSafari: !0 }) { + const c = xv, p = function(T) { + const D = { browser: null, version: null }; + if (T === void 0 || !T.navigator) + return D.browser = "Not a browser.", D; + const { navigator: k } = T; + if (k.mozGetUserMedia) + D.browser = "firefox", D.version = Wp(k.userAgent, /Firefox\/(\d+)\./, 1); + else if (k.webkitGetUserMedia || T.isSecureContext === !1 && T.webkitRTCPeerConnection) + D.browser = "chrome", D.version = Wp(k.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + else { + if (!T.RTCPeerConnection || !k.userAgent.match(/AppleWebKit\/(\d+)\./)) + return D.browser = "Not a supported browser.", D; + D.browser = "safari", D.version = Wp(k.userAgent, /AppleWebKit\/(\d+)\./, 1), D.supportsUnifiedPlan = T.RTCRtpTransceiver && "currentDirection" in T.RTCRtpTransceiver.prototype; + } + return D; + }(h), m = { browserDetails: p, commonShim: Ey, extractVersion: Wp, disableLog: Ad, disableWarnings: Hu, sdp: ZE }; + switch (p.browser) { + case "chrome": + if (!Nh || !Pi || !s.shimChrome) + return c("Chrome shim is not included in this adapter release."), m; + if (p.version === null) + return c("Chrome shim can not determine version, not shimming."), m; + c("adapter.js shimming chrome."), m.browserShim = Nh, lu(h, p), Xf(h), U0(h, p), wo(h), Pi(h, p), cs(h), my(h, p), Mh(h), kh(h), su(h), Xo(h, p), Ku(h), Tl(h), Yf(h), Gf(h, p), Bh(h), Mv(h, p); + break; + case "firefox": + if (!Ov || !Wu || !s.shimFirefox) + return c("Firefox shim is not included in this adapter release."), m; + c("adapter.js shimming firefox."), m.browserShim = Ov, lu(h, p), Xf(h), Gp(h, p), Wu(h, p), Lh(h), Yp(h), Gu(h), Rv(h), Ic(h), Yu(h), Dv(h), $f(h), Fh(h), Ku(h), Yf(h), Gf(h, p), Bh(h); + break; + case "safari": + if (!Hf || !s.shimSafari) + return c("Safari shim is not included in this adapter release."), m; + c("adapter.js shimming safari."), m.browserShim = Hf, lu(h, p), Xf(h), j0(h), Xu(h), Vf(h), yy(h), Xp(h), Sy(h), $l(h), zf(h), Ku(h), Tl(h), Gf(h, p), Bh(h), Mv(h, p); + break; + default: + c("Unsupported browser!"); + } + })({ window: typeof window == "undefined" ? void 0 : window }); + var Kp = { exports: {} }, Zp = ki, Uh = ae, qp = Ui.f; + Zp({ target: "Object", stat: !0, forced: Object.defineProperty !== qp, sham: !Uh }, { defineProperty: qp }); + var Rd = Ke.Object, Cy = Kp.exports = function(h, s, c) { + return Rd.defineProperty(h, s, c); + }; + Rd.defineProperty.sham && (Cy.sham = !0); + var $0 = i(Kp.exports), kv = R, Ty = Array.isArray || function(h) { + return kv(h) == "Array"; + }, cu = TypeError, V0 = vs, z0 = Ui, Jp = Ue, wy = function(h, s, c) { + var p = V0(s); + p in h ? z0.f(h, p, Jp(0, c)) : h[p] = c; + }, qE = X, Zu = Cr, Iy = g(Function.toString); + qE(Zu.inspectSource) || (Zu.inspectSource = function(h) { + return Iy(h); + }); + var H0 = Zu.inspectSource, xy = g, Qp = a, uu = X, JE = Ii, W0 = H0, wl = function() { + }, Pv = [], qu = _t("Reflect", "construct"), Nv = /^\s*(?:class|function)\b/, Ju = xy(Nv.exec), Ko = !Nv.exec(wl), Lv = function(h) { + if (!uu(h)) + return !1; + try { + return qu(wl, Pv, h), !0; + } catch (s) { + return !1; + } + }, Ay = function(h) { + if (!uu(h)) + return !1; + switch (JE(h)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return !1; + } + try { + return Ko || !!Ju(Nv, W0(h)); + } catch (s) { + return !0; + } + }; + Ay.sham = !0; + var Ry = !qu || Qp(function() { + var h; + return Lv(Lv.call) || !Lv(Object) || !Lv(function() { + h = !0; + }) || h; + }) ? Ay : Lv, G0 = Ty, QE = Ry, al = rt, cc = Bi("species"), Fv = Array, Dy = function(h) { + var s; + return G0(h) && (s = h.constructor, (QE(s) && (s === Fv || G0(s.prototype)) || al(s) && (s = s[cc]) === null) && (s = void 0)), s === void 0 ? Fv : s; + }, Kf = function(h, s) { + return new (Dy(h))(s === 0 ? 0 : s); + }, Bv = a, Y0 = Dn, X0 = Bi("species"), eC = ki, tC = a, K0 = Ty, rC = rt, ms = _r, nC = au, Oy = function(h) { + if (h > 9007199254740991) + throw cu("Maximum allowed index exceeded"); + return h; + }, Z0 = wy, Io = Kf, iC = function(h) { + return Y0 >= 51 || !Bv(function() { + var s = []; + return (s.constructor = {})[X0] = function() { + return { foo: 1 }; + }, s[h](Boolean).foo !== 1; + }); + }, q0 = Dn, J0 = Bi("isConcatSpreadable"), xo = q0 >= 51 || !tC(function() { + var h = []; + return h[J0] = !1, h.concat()[0] !== h; + }), Q0 = function(h) { + if (!rC(h)) + return !1; + var s = h[J0]; + return s !== void 0 ? !!s : K0(h); + }; + eC({ target: "Array", proto: !0, arity: 1, forced: !xo || !iC("concat") }, { concat: function(h) { + var s, c, p, m, T, D = ms(this), k = Io(D, 0), N = 0; + for (s = -1, p = arguments.length; s < p; s++) + if (Q0(T = s === -1 ? D : arguments[s])) + for (m = nC(T), Oy(N + m), c = 0; c < m; c++, N++) + c in T && Z0(k, N, T[c]); + else + Oy(N + 1), Z0(k, N++, T); + return k.length = N, k; + } }); + var Zf = {}, Uv = {}, Vl = Tt, hu = it, Dd = Oh.indexOf, Il = Uv, My = g([].push), ky = function(h, s) { + var c, p = hu(h), m = 0, T = []; + for (c in p) + !Vl(Il, c) && Vl(p, c) && My(T, c); + for (; s.length > m; ) + Vl(p, c = s[m++]) && (~Dd(T, c) || My(T, c)); + return T; + }, Py = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"], zl = ky, eS = Py, eg = Object.keys || function(h) { + return zl(h, eS); + }, jv = ae, uc = rl, tS = Ui, rS = go, aC = it, jh = eg; + Zf.f = jv && !uc ? Object.defineProperties : function(h, s) { + rS(h); + for (var c, p = aC(s), m = jh(s), T = m.length, D = 0; T > D; ) + tS.f(h, c = m[D++], p[c]); + return h; + }; + var Ac, $v = _t("document", "documentElement"), oC = Mr, qf = Xt("keys"), Vv = function(h) { + return qf[h] || (qf[h] = oC(h)); + }, sC = go, nS = Zf, iS = Py, lC = Uv, Jf = $v, Ny = Xa, Od = "prototype", zv = "script", aS = Vv("IE_PROTO"), tg = function() { + }, Ly = function(h) { + return "<" + zv + ">" + h + ""; + }, Hv = function(h) { + h.write(Ly("")), h.close(); + var s = h.parentWindow.Object; + return h = null, s; + }, Qu = function() { + try { + Ac = new ActiveXObject("htmlfile"); + } catch (m) { + } + var h, s, c; + Qu = typeof document != "undefined" ? document.domain && Ac ? Hv(Ac) : (s = Ny("iframe"), c = "java" + zv + ":", s.style.display = "none", Jf.appendChild(s), s.src = String(c), (h = s.contentWindow.document).open(), h.write(Ly("document.F=Object")), h.close(), h.F) : Hv(Ac); + for (var p = iS.length; p--; ) + delete Qu[Od][iS[p]]; + return Qu(); + }; + lC[aS] = !0; + var eh = Object.create || function(h, s) { + var c; + return h !== null ? (tg[Od] = sC(h), c = new tg(), tg[Od] = null, c[aS] = h) : c = Qu(), s === void 0 ? c : nS.f(c, s); + }, Qf = {}, Fy = ky, rg = Py.concat("length", "prototype"); + Qf.f = Object.getOwnPropertyNames || function(h) { + return Fy(h, rg); + }; + var xl = {}, ng = Uf, oS = au, sS = wy, By = Array, ep = Math.max, Md = function(h, s, c) { + for (var p = oS(h), m = ng(s, p), T = ng(c === void 0 ? p : c, p), D = By(ep(T - m, 0)), k = 0; m < T; m++, k++) + sS(D, k, h[m]); + return D.length = k, D; + }, zs = R, Wv = it, Uy = Qf.f, $h = Md, Hl = typeof window == "object" && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; + xl.f = function(h) { + return Hl && zs(h) == "Window" ? function(s) { + try { + return Uy(s); + } catch (c) { + return $h(Hl); + } + }(h) : Uy(Wv(h)); + }; + var ig = {}; + ig.f = Object.getOwnPropertySymbols; + var lS = ro, Wl = function(h, s, c, p) { + return p && p.enumerable ? h[s] = c : lS(h, s, c), h; + }, ri = Ui, Gv = function(h, s, c) { + return ri.f(h, s, c); + }, Ir = {}, Al = Bi; + Ir.f = Al; + var mi, Hs, jy, ag = Ke, Rc = Tt, Yv = Ir, du = Ui.f, Fo = function(h) { + var s = ag.Symbol || (ag.Symbol = {}); + Rc(s, h) || du(s, h, { value: Yv.f(h) }); + }, og = fe, z = _t, Q = Bi, Se = Wl, Ze = function() { + var h = z("Symbol"), s = h && h.prototype, c = s && s.valueOf, p = Q("toPrimitive"); + s && !s[p] && Se(s, p, function(m) { + return og(c, this); + }, { arity: 1 }); + }, bt = Ii, ar = xe ? {}.toString : function() { + return "[object " + bt(this) + "]"; + }, Vr = xe, Wn = Ui.f, tn = ro, Ni = Tt, yo = ar, us = Bi("toStringTag"), Dc = function(h, s, c, p) { + if (h) { + var m = c ? h : h.prototype; + Ni(m, us) || Wn(m, us, { configurable: !0, value: s }), p && !Vr && tn(m, "toString", yo); + } + }, sg = X, kd = C.WeakMap, Xv = sg(kd) && /native code/.test(String(kd)), uO = C, oU = rt, sU = ro, zI = Tt, HI = Cr, lU = Vv, cU = Uv, hO = "Object already initialized", WI = uO.TypeError, uU = uO.WeakMap; + if (Xv || HI.state) { + var fu = HI.state || (HI.state = new uU()); + fu.get = fu.get, fu.has = fu.has, fu.set = fu.set, mi = function(h, s) { + if (fu.has(h)) + throw WI(hO); + return s.facade = h, fu.set(h, s), s; + }, Hs = function(h) { + return fu.get(h) || {}; + }, jy = function(h) { + return fu.has(h); + }; + } else { + var $y = lU("state"); + cU[$y] = !0, mi = function(h, s) { + if (zI(h, $y)) + throw WI(hO); + return s.facade = h, sU(h, $y, s), s; + }, Hs = function(h) { + return zI(h, $y) ? h[$y] : {}; + }, jy = function(h) { + return zI(h, $y); + }; + } + var Vy = { set: mi, get: Hs, has: jy, enforce: function(h) { + return jy(h) ? Hs(h) : mi(h, {}); + }, getterFor: function(h) { + return function(s) { + var c; + if (!oU(s) || (c = Hs(s)).type !== h) + throw WI("Incompatible receiver, " + h + " required"); + return c; + }; + } }, dO = bl, hU = we, dU = _r, fU = au, pU = Kf, fO = g([].push), lg = function(h) { + var s = h == 1, c = h == 2, p = h == 3, m = h == 4, T = h == 6, D = h == 7, k = h == 5 || T; + return function(N, U, V, G) { + for (var K, q, ue = dU(N), oe = hU(ue), he = dO(U, V), Ce = fU(oe), ke = 0, Ge = G || pU, tt = s ? Ge(N, Ce) : c || D ? Ge(N, 0) : void 0; Ce > ke; ke++) + if ((k || ke in oe) && (q = he(K = oe[ke], ke, ue), h)) + if (s) + tt[ke] = q; + else if (q) + switch (h) { + case 3: + return !0; + case 5: + return K; + case 6: + return ke; + case 2: + fO(tt, K); + } + else + switch (h) { + case 4: + return !1; + case 7: + fO(tt, K); + } + return T ? -1 : p || m ? m : tt; + }; + }, pO = { forEach: lg(0), map: lg(1), filter: lg(2), some: lg(3), every: lg(4), find: lg(5), findIndex: lg(6), filterReject: lg(7) }, cC = ki, GI = C, YI = fe, gU = g, zy = ae, Hy = dn, vU = a, Ws = Tt, gO = v, XI = go, Wy = it, KI = vs, mU = mo, ZI = Ue, cS = eh, vO = eg, yU = Qf, mO = xl, _U = ig, yO = ee, qI = Ui, _O = Zf, SO = de, bO = Wl, EO = Gv, JI = Xt, QI = Uv, ex = Mr, SU = Bi, bU = Ir, CO = Fo, EU = Ze, TO = Dc, tx = Vy, uC = pO.forEach, Oc = Vv("hidden"), hC = "Symbol", Gy = "prototype", CU = tx.set, rx = tx.getterFor(hC), Vh = Object[Gy], cg = GI.Symbol, dC = cg && cg[Gy], TU = GI.TypeError, nx = GI.QObject, ix = yO.f, ug = qI.f, wO = mO.f, wU = SO.f, IO = gU([].push), tp = JI("symbols"), uS = JI("op-symbols"), xO = JI("wks"), ax = !nx || !nx[Gy] || !nx[Gy].findChild, ox = zy && vU(function() { + return cS(ug({}, "a", { get: function() { + return ug(this, "a", { value: 7 }).a; + } })).a != 7; + }) ? function(h, s, c) { + var p = ix(Vh, s); + p && delete Vh[s], ug(h, s, c), p && h !== Vh && ug(Vh, s, p); + } : ug, ce = function(h, s) { + var c = tp[h] = cS(dC); + return CU(c, { type: hC, tag: h, description: s }), zy || (c.description = s), c; + }, W = function(h, s, c) { + h === Vh && W(uS, s, c), XI(h); + var p = KI(s); + return XI(c), Ws(tp, p) ? (c.enumerable ? (Ws(h, Oc) && h[Oc][p] && (h[Oc][p] = !1), c = cS(c, { enumerable: ZI(0, !1) })) : (Ws(h, Oc) || ug(h, Oc, ZI(1, {})), h[Oc][p] = !0), ox(h, p, c)) : ug(h, p, c); + }, F = function(h, s) { + XI(h); + var c = Wy(s), p = vO(c).concat(re(c)); + return uC(p, function(m) { + zy && !YI(j, c, m) || W(h, m, c[m]); + }), h; + }, j = function(h) { + var s = KI(h), c = YI(wU, this, s); + return !(this === Vh && Ws(tp, s) && !Ws(uS, s)) && (!(c || !Ws(this, s) || !Ws(tp, s) || Ws(this, Oc) && this[Oc][s]) || c); + }, L = function(h, s) { + var c = Wy(h), p = KI(s); + if (c !== Vh || !Ws(tp, p) || Ws(uS, p)) { + var m = ix(c, p); + return !m || !Ws(tp, p) || Ws(c, Oc) && c[Oc][p] || (m.enumerable = !0), m; + } + }, $ = function(h) { + var s = wO(Wy(h)), c = []; + return uC(s, function(p) { + Ws(tp, p) || Ws(QI, p) || IO(c, p); + }), c; + }, re = function(h) { + var s = h === Vh, c = wO(s ? uS : Wy(h)), p = []; + return uC(c, function(m) { + !Ws(tp, m) || s && !Ws(Vh, m) || IO(p, tp[m]); + }), p; + }; + Hy || (cg = function() { + if (gO(dC, this)) + throw TU("Symbol is not a constructor"); + var h = arguments.length && arguments[0] !== void 0 ? mU(arguments[0]) : void 0, s = ex(h), c = function(p) { + this === Vh && YI(c, uS, p), Ws(this, Oc) && Ws(this[Oc], s) && (this[Oc][s] = !1), ox(this, s, ZI(1, p)); + }; + return zy && ax && ox(Vh, s, { configurable: !0, set: c }), ce(s, h); + }, bO(dC = cg[Gy], "toString", function() { + return rx(this).tag; + }), bO(cg, "withoutSetter", function(h) { + return ce(ex(h), h); + }), SO.f = j, qI.f = W, _O.f = F, yO.f = L, yU.f = mO.f = $, _U.f = re, bU.f = function(h) { + return ce(SU(h), h); + }, zy && EO(dC, "description", { configurable: !0, get: function() { + return rx(this).description; + } })), cC({ global: !0, constructor: !0, wrap: !0, forced: !Hy, sham: !Hy }, { Symbol: cg }), uC(vO(xO), function(h) { + CO(h); + }), cC({ target: hC, stat: !0, forced: !Hy }, { useSetter: function() { + ax = !0; + }, useSimple: function() { + ax = !1; + } }), cC({ target: "Object", stat: !0, forced: !Hy, sham: !zy }, { create: function(h, s) { + return s === void 0 ? cS(h) : F(cS(h), s); + }, defineProperty: W, defineProperties: F, getOwnPropertyDescriptor: L }), cC({ target: "Object", stat: !0, forced: !Hy }, { getOwnPropertyNames: $ }), EU(), TO(cg, hC), QI[Oc] = !0; + var le = dn && !!Symbol.for && !!Symbol.keyFor, me = ki, ve = _t, Oe = Tt, je = mo, pt = Xt, vt = le, It = pt("string-to-symbol-registry"), Et = pt("symbol-to-string-registry"); + me({ target: "Symbol", stat: !0, forced: !vt }, { for: function(h) { + var s = je(h); + if (Oe(It, s)) + return It[s]; + var c = ve("Symbol")(s); + return It[s] = c, Et[c] = s, c; + } }); + var Rt = ki, sr = Tt, un = jt, yn = Ht, Kn = le, xr = Xt("symbol-to-string-registry"); + Rt({ target: "Symbol", stat: !0, forced: !Kn }, { keyFor: function(h) { + if (!un(h)) + throw TypeError(yn(h) + " is not a symbol"); + if (sr(xr, h)) + return xr[h]; + } }); + var Aa = g([].slice), ol = Ty, Mc = X, hs = R, zh = mo, rp = g([].push), kc = ki, Yy = _t, hS = I, fC = fe, hg = g, dS = a, fS = X, pS = jt, gS = Aa, pC = function(h) { + if (Mc(h)) + return h; + if (ol(h)) { + for (var s = h.length, c = [], p = 0; p < s; p++) { + var m = h[p]; + typeof m == "string" ? rp(c, m) : typeof m != "number" && hs(m) != "Number" && hs(m) != "String" || rp(c, zh(m)); + } + var T = c.length, D = !0; + return function(k, N) { + if (D) + return D = !1, N; + if (ol(this)) + return N; + for (var U = 0; U < T; U++) + if (c[U] === k) + return N; + }; + } + }, gC = dn, vC = String, Hh = Yy("JSON", "stringify"), Kv = hg(/./.exec), vS = hg("".charAt), mC = hg("".charCodeAt), yC = hg("".replace), _C = hg(1 .toString), SC = /[\uD800-\uDFFF]/g, mS = /^[\uD800-\uDBFF]$/, th = /^[\uDC00-\uDFFF]$/, dg = !gC || dS(function() { + var h = Yy("Symbol")(); + return Hh([h]) != "[null]" || Hh({ a: h }) != "{}" || Hh(Object(h)) != "{}"; + }), sx = dS(function() { + return Hh("\uDF06\uD834") !== '"\\udf06\\ud834"' || Hh("\uDEAD") !== '"\\udead"'; + }), AO = function(h, s) { + var c = gS(arguments), p = pC(s); + if (fS(p) || h !== void 0 && !pS(h)) + return c[1] = function(m, T) { + if (fS(p) && (T = fC(p, this, vC(m), T)), !pS(T)) + return T; + }, hS(Hh, null, c); + }, RO = function(h, s, c) { + var p = vS(c, s - 1), m = vS(c, s + 1); + return Kv(mS, h) && !Kv(th, m) || Kv(th, h) && !Kv(mS, p) ? "\\u" + _C(mC(h, 0), 16) : h; + }; + Hh && kc({ target: "JSON", stat: !0, arity: 3, forced: dg || sx }, { stringify: function(h, s, c) { + var p = gS(arguments), m = hS(dg ? AO : Hh, null, p); + return sx && typeof m == "string" ? yC(m, SC, RO) : m; + } }); + var lx = ig, DO = _r; + ki({ target: "Object", stat: !0, forced: !dn || a(function() { + lx.f(1); + }) }, { getOwnPropertySymbols: function(h) { + var s = lx.f; + return s ? s(DO(h)) : []; + } }), Fo("asyncIterator"), Fo("hasInstance"), Fo("isConcatSpreadable"), Fo("iterator"), Fo("match"), Fo("matchAll"), Fo("replace"), Fo("search"), Fo("species"), Fo("split"); + var OO = Ze; + Fo("toPrimitive"), OO(); + var MO = _t, kO = Dc; + Fo("toStringTag"), kO(MO("Symbol"), "Symbol"), Fo("unscopables"), Dc(C.JSON, "JSON", !0); + var fg, cx, ux, PO = Ke.Symbol, Zv = {}, bC = ae, z1e = Tt, MX = Function.prototype, H1e = bC && Object.getOwnPropertyDescriptor, IU = z1e(MX, "name"), kX = { EXISTS: IU, PROPER: IU && function() { + }.name === "something", CONFIGURABLE: IU && (!bC || bC && H1e(MX, "name").configurable) }, W1e = !a(function() { + function h() { + } + return h.prototype.constructor = null, Object.getPrototypeOf(new h()) !== h.prototype; + }), G1e = Tt, Y1e = X, X1e = _r, K1e = W1e, PX = Vv("IE_PROTO"), xU = Object, Z1e = xU.prototype, AU = K1e ? xU.getPrototypeOf : function(h) { + var s = X1e(h); + if (G1e(s, PX)) + return s[PX]; + var c = s.constructor; + return Y1e(c) && s instanceof c ? c.prototype : s instanceof xU ? Z1e : null; + }, q1e = a, J1e = X, Q1e = rt, eRe = eh, NX = AU, tRe = Wl, RU = Bi("iterator"), LX = !1; + [].keys && ("next" in (ux = [].keys()) ? (cx = NX(NX(ux))) !== Object.prototype && (fg = cx) : LX = !0); + var rRe = !Q1e(fg) || q1e(function() { + var h = {}; + return fg[RU].call(h) !== h; + }); + J1e((fg = rRe ? {} : eRe(fg))[RU]) || tRe(fg, RU, function() { + return this; + }); + var FX = { IteratorPrototype: fg, BUGGY_SAFARI_ITERATORS: LX }, nRe = FX.IteratorPrototype, iRe = eh, aRe = Ue, oRe = Dc, sRe = Zv, lRe = function() { + return this; + }, BX = function(h, s, c, p) { + var m = s + " Iterator"; + return h.prototype = iRe(nRe, { next: aRe(+!p, c) }), oRe(h, m, !1, !0), sRe[m] = lRe, h; + }, cRe = g, uRe = Pt, hRe = X, dRe = String, fRe = TypeError, pRe = function(h, s, c) { + try { + return cRe(uRe(Object.getOwnPropertyDescriptor(h, s)[c])); + } catch (p) { + } + }, gRe = go, vRe = function(h) { + if (typeof h == "object" || hRe(h)) + return h; + throw fRe("Can't set " + dRe(h) + " as a prototype"); + }, mRe = Object.setPrototypeOf || ("__proto__" in {} ? function() { + var h, s = !1, c = {}; + try { + (h = pRe(Object.prototype, "__proto__", "set"))(c, []), s = c instanceof Array; + } catch (p) { + } + return function(p, m) { + return gRe(p), vRe(m), s ? h(p, m) : p.__proto__ = m, p; + }; + }() : void 0), yRe = ki, _Re = fe, SRe = kX, bRe = BX, ERe = AU, CRe = Dc, UX = Wl, jX = Zv, TRe = FX, wRe = SRe.PROPER, NO = TRe.BUGGY_SAFARI_ITERATORS, DU = Bi("iterator"), $X = "keys", LO = "values", VX = "entries", IRe = function() { + return this; + }, zX = function(h, s, c, p, m, T, D) { + bRe(c, s, p); + var k, N, U, V = function(Ce) { + if (Ce === m && oe) + return oe; + if (!NO && Ce in q) + return q[Ce]; + switch (Ce) { + case $X: + case LO: + case VX: + return function() { + return new c(this, Ce); + }; + } + return function() { + return new c(this); + }; + }, G = s + " Iterator", K = !1, q = h.prototype, ue = q[DU] || q["@@iterator"] || m && q[m], oe = !NO && ue || V(m), he = s == "Array" && q.entries || ue; + if (he && (k = ERe(he.call(new h()))) !== Object.prototype && k.next && (CRe(k, G, !0, !0), jX[G] = IRe), wRe && m == LO && ue && ue.name !== LO && (K = !0, oe = function() { + return _Re(ue, this); + }), m) + if (N = { values: V(LO), keys: T ? oe : V($X), entries: V(VX) }, D) + for (U in N) + (NO || K || !(U in q)) && UX(q, U, N[U]); + else + yRe({ target: s, proto: !0, forced: NO || K }, N); + return D && q[DU] !== oe && UX(q, DU, oe, { name: m }), jX[s] = oe, N; + }, HX = function(h, s) { + return { value: h, done: s }; + }, xRe = it, WX = Zv, GX = Vy; + Ui.f; + var ARe = zX, YX = HX, XX = "Array Iterator", RRe = GX.set, DRe = GX.getterFor(XX); + ARe(Array, "Array", function(h, s) { + RRe(this, { type: XX, target: xRe(h), index: 0, kind: s }); + }, function() { + var h = DRe(this), s = h.target, c = h.kind, p = h.index++; + return !s || p >= s.length ? (h.target = void 0, YX(void 0, !0)) : YX(c == "keys" ? p : c == "values" ? s[p] : [p, s[p]], !1); + }, "values"), WX.Arguments = WX.Array; + var ORe = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }, MRe = C, kRe = Ii, PRe = ro, KX = Zv, ZX = Bi("toStringTag"); + for (var OU in ORe) { + var qX = MRe[OU], MU = qX && qX.prototype; + MU && kRe(MU) !== ZX && PRe(MU, ZX, OU), KX[OU] = KX.Array; + } + var NRe = PO, LRe = Bi, FRe = Ui.f, JX = LRe("metadata"), QX = Function.prototype; + QX[JX] === void 0 && FRe(QX, JX, { value: null }), Fo("dispose"), Fo("metadata"); + var BRe = NRe; + Fo("asyncDispose"); + var URe = g, kU = _t("Symbol"), jRe = kU.keyFor, $Re = URe(kU.prototype.valueOf), eK = kU.isRegisteredSymbol || function(h) { + try { + return jRe($Re(h)) !== void 0; + } catch (s) { + return !1; + } + }; + ki({ target: "Symbol", stat: !0 }, { isRegisteredSymbol: eK }); + for (var VRe = Xt, tK = _t, zRe = g, HRe = jt, WRe = Bi, FO = tK("Symbol"), rK = FO.isWellKnownSymbol, nK = tK("Object", "getOwnPropertyNames"), GRe = zRe(FO.prototype.valueOf), iK = VRe("wks"), PU = 0, aK = nK(FO), YRe = aK.length; PU < YRe; PU++) + try { + var oK = aK[PU]; + HRe(FO[oK]) && WRe(oK); + } catch (h) { + } + var sK = function(h) { + if (rK && rK(h)) + return !0; + try { + for (var s = GRe(h), c = 0, p = nK(iK), m = p.length; c < m; c++) + if (iK[p[c]] == s) + return !0; + } catch (T) { + } + return !1; + }; + ki({ target: "Symbol", stat: !0, forced: !0 }, { isWellKnownSymbol: sK }), Fo("matcher"), Fo("observable"), ki({ target: "Symbol", stat: !0, name: "isRegisteredSymbol" }, { isRegistered: eK }), ki({ target: "Symbol", stat: !0, name: "isWellKnownSymbol", forced: !0 }, { isWellKnown: sK }), Fo("metadataKey"), Fo("patternMatch"), Fo("replaceAll"); + var EC = i(BRe), NU = g, XRe = iu, KRe = mo, ZRe = Fe, qRe = NU("".charAt), lK = NU("".charCodeAt), JRe = NU("".slice), cK = function(h) { + return function(s, c) { + var p, m, T = KRe(ZRe(s)), D = XRe(c), k = T.length; + return D < 0 || D >= k ? h ? "" : void 0 : (p = lK(T, D)) < 55296 || p > 56319 || D + 1 === k || (m = lK(T, D + 1)) < 56320 || m > 57343 ? h ? qRe(T, D) : p : h ? JRe(T, D, D + 2) : m - 56320 + (p - 55296 << 10) + 65536; + }; + }, uK = { codeAt: cK(!1), charAt: cK(!0) }, QRe = uK.charAt, eDe = mo, hK = Vy, tDe = zX, dK = HX, fK = "String Iterator", rDe = hK.set, nDe = hK.getterFor(fK); + tDe(String, "String", function(h) { + rDe(this, { type: fK, string: eDe(h), index: 0 }); + }, function() { + var h, s = nDe(this), c = s.string, p = s.index; + return p >= c.length ? dK(void 0, !0) : (h = QRe(c, p), s.index += h.length, dK(h, !1)); + }); + var pK = i(Ir.f("iterator")); + function hx(h) { + return hx = typeof EC == "function" && typeof pK == "symbol" ? function(s) { + return typeof s; + } : function(s) { + return s && typeof EC == "function" && s.constructor === EC && s !== EC.prototype ? "symbol" : typeof s; + }, hx(h); + } + var iDe = i(Ir.f("toPrimitive")); + function aDe(h) { + var s = function(c, p) { + if (hx(c) !== "object" || c === null) + return c; + var m = c[iDe]; + if (m !== void 0) { + var T = m.call(c, p || "default"); + if (hx(T) !== "object") + return T; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (p === "string" ? String : Number)(c); + }(h, "string"); + return hx(s) === "symbol" ? s : String(s); + } + function Z(h, s, c) { + return (s = aDe(s)) in h ? $0(h, s, { value: c, enumerable: !0, configurable: !0, writable: !0 }) : h[s] = c, h; + } + var oDe = wc("Array").keys, sDe = Ii, lDe = Tt, cDe = v, uDe = oDe, LU = Array.prototype, hDe = { DOMTokenList: !0, NodeList: !0 }, rh = i(function(h) { + var s = h.keys; + return h === LU || cDe(LU, h) && s === LU.keys || lDe(hDe, sDe(h)) ? uDe : s; + }), gK = Ht, dDe = TypeError, vK = Md, fDe = Math.floor, FU = function(h, s) { + var c = h.length, p = fDe(c / 2); + return c < 8 ? pDe(h, s) : gDe(h, FU(vK(h, 0, p), s), FU(vK(h, p), s), s); + }, pDe = function(h, s) { + for (var c, p, m = h.length, T = 1; T < m; ) { + for (p = T, c = h[T]; p && s(h[p - 1], c) > 0; ) + h[p] = h[--p]; + p !== T++ && (h[p] = c); + } + return h; + }, gDe = function(h, s, c, p) { + for (var m = s.length, T = c.length, D = 0, k = 0; D < m || k < T; ) + h[D + k] = D < m && k < T ? p(s[D], c[k]) <= 0 ? s[D++] : c[k++] : D < m ? s[D++] : c[k++]; + return h; + }, mK = FU, vDe = a, BU = function(h, s) { + var c = [][h]; + return !!c && vDe(function() { + c.call(null, s || function() { + return 1; + }, 1); + }); + }, yK = Nt.match(/firefox\/(\d+)/i), mDe = !!yK && +yK[1], yDe = /MSIE|Trident/.test(Nt), _K = Nt.match(/AppleWebKit\/(\d+)\./), _De = !!_K && +_K[1], SDe = ki, SK = g, bDe = Pt, EDe = _r, bK = au, CDe = function(h, s) { + if (!delete h[s]) + throw dDe("Cannot delete property " + gK(s) + " of " + gK(h)); + }, EK = mo, UU = a, TDe = mK, wDe = BU, CK = mDe, IDe = yDe, TK = Dn, wK = _De, Xy = [], IK = SK(Xy.sort), xDe = SK(Xy.push), ADe = UU(function() { + Xy.sort(void 0); + }), RDe = UU(function() { + Xy.sort(null); + }), DDe = wDe("sort"), xK = !UU(function() { + if (TK) + return TK < 70; + if (!(CK && CK > 3)) { + if (IDe) + return !0; + if (wK) + return wK < 603; + var h, s, c, p, m = ""; + for (h = 65; h < 76; h++) { + switch (s = String.fromCharCode(h), h) { + case 66: + case 69: + case 70: + case 72: + c = 3; + break; + case 68: + case 71: + c = 4; + break; + default: + c = 2; + } + for (p = 0; p < 47; p++) + Xy.push({ k: s + p, v: c }); + } + for (Xy.sort(function(T, D) { + return D.v - T.v; + }), p = 0; p < Xy.length; p++) + s = Xy[p].k.charAt(0), m.charAt(m.length - 1) !== s && (m += s); + return m !== "DGBEFHACIJK"; + } + }); + SDe({ target: "Array", proto: !0, forced: ADe || !RDe || !DDe || !xK }, { sort: function(h) { + h !== void 0 && bDe(h); + var s = EDe(this); + if (xK) + return h === void 0 ? IK(s) : IK(s, h); + var c, p, m = [], T = bK(s); + for (p = 0; p < T; p++) + p in s && xDe(m, s[p]); + for (TDe(m, function(D) { + return function(k, N) { + return N === void 0 ? -1 : k === void 0 ? 1 : D !== void 0 ? +D(k, N) || 0 : EK(k) > EK(N) ? 1 : -1; + }; + }(h)), c = bK(m), p = 0; p < c; ) + s[p] = m[p++]; + for (; p < T; ) + CDe(s, p++); + return s; + } }); + var ODe = wc("Array").sort, MDe = v, kDe = ODe, jU = Array.prototype, dx = i(function(h) { + var s = h.sort; + return h === jU || MDe(jU, h) && s === jU.sort ? kDe : s; + }), PDe = _t, NDe = Qf, LDe = ig, FDe = go, BDe = g([].concat), UDe = PDe("Reflect", "ownKeys") || function(h) { + var s = NDe.f(FDe(h)), c = LDe.f; + return c ? BDe(s, c(h)) : s; + }, AK = Tt, jDe = UDe, $De = ee, VDe = Ui, zDe = rt, HDe = ro, RK = Error, WDe = g("".replace), GDe = String(RK("zxcasd").stack), DK = /\n\s*at [^:]*:[^\n]*/, YDe = DK.test(GDe), XDe = Ue, KDe = !a(function() { + var h = Error("a"); + return !("stack" in h) || (Object.defineProperty(h, "stack", XDe(1, 7)), h.stack !== 7); + }), ZDe = ro, qDe = function(h, s) { + if (YDe && typeof h == "string" && !RK.prepareStackTrace) + for (; s--; ) + h = WDe(h, DK, ""); + return h; + }, JDe = KDe, OK = Error.captureStackTrace, QDe = Zv, eOe = Bi("iterator"), tOe = Array.prototype, MK = function(h) { + return h !== void 0 && (QDe.Array === h || tOe[eOe] === h); + }, rOe = Ii, kK = Un, nOe = He, iOe = Zv, aOe = Bi("iterator"), BO = function(h) { + if (!nOe(h)) + return kK(h, aOe) || kK(h, "@@iterator") || iOe[rOe(h)]; + }, oOe = fe, sOe = Pt, lOe = go, cOe = Ht, uOe = BO, hOe = TypeError, $U = function(h, s) { + var c = arguments.length < 2 ? uOe(h) : s; + if (sOe(c)) + return lOe(oOe(c, h)); + throw hOe(cOe(h) + " is not iterable"); + }, dOe = fe, PK = go, fOe = Un, NK = function(h, s, c) { + var p, m; + PK(h); + try { + if (!(p = fOe(h, "return"))) { + if (s === "throw") + throw c; + return c; + } + p = dOe(p, h); + } catch (T) { + m = !0, p = T; + } + if (s === "throw") + throw c; + if (m) + throw p; + return PK(p), c; + }, pOe = bl, gOe = fe, vOe = go, mOe = Ht, yOe = MK, _Oe = au, LK = v, SOe = $U, bOe = BO, FK = NK, EOe = TypeError, UO = function(h, s) { + this.stopped = h, this.result = s; + }, BK = UO.prototype, fx = function(h, s, c) { + var p, m, T, D, k, N, U, V = c && c.that, G = !(!c || !c.AS_ENTRIES), K = !(!c || !c.IS_RECORD), q = !(!c || !c.IS_ITERATOR), ue = !(!c || !c.INTERRUPTED), oe = pOe(s, V), he = function(ke) { + return p && FK(p, "normal", ke), new UO(!0, ke); + }, Ce = function(ke) { + return G ? (vOe(ke), ue ? oe(ke[0], ke[1], he) : oe(ke[0], ke[1])) : ue ? oe(ke, he) : oe(ke); + }; + if (K) + p = h.iterator; + else if (q) + p = h; + else { + if (!(m = bOe(h))) + throw EOe(mOe(h) + " is not iterable"); + if (yOe(m)) { + for (T = 0, D = _Oe(h); D > T; T++) + if ((k = Ce(h[T])) && LK(BK, k)) + return k; + return new UO(!1); + } + p = SOe(h, m); + } + for (N = K ? h.next : p.next; !(U = gOe(N, p)).done; ) { + try { + k = Ce(U.value); + } catch (ke) { + FK(p, "throw", ke); + } + if (typeof k == "object" && k && LK(BK, k)) + return k; + } + return new UO(!1); + }, COe = mo, TOe = ki, wOe = v, IOe = AU, jO = mRe, xOe = function(h, s, c) { + for (var p = jDe(s), m = VDe.f, T = $De.f, D = 0; D < p.length; D++) { + var k = p[D]; + AK(h, k) || c && AK(c, k) || m(h, k, T(s, k)); + } + }, UK = eh, VU = ro, zU = Ue, AOe = function(h, s) { + zDe(s) && "cause" in s && HDe(h, "cause", s.cause); + }, ROe = function(h, s, c, p) { + JDe && (OK ? OK(h, s) : ZDe(h, "stack", qDe(c, p))); + }, DOe = fx, OOe = function(h, s) { + return h === void 0 ? arguments.length < 2 ? "" : s : COe(h); + }, MOe = Bi("toStringTag"), $O = Error, kOe = [].push, CC = function(h, s) { + var c, p = wOe(HU, this); + jO ? c = jO($O(), p ? IOe(this) : HU) : (c = p ? this : UK(HU), VU(c, MOe, "Error")), s !== void 0 && VU(c, "message", OOe(s)), ROe(c, CC, c.stack, 1), arguments.length > 2 && AOe(c, arguments[2]); + var m = []; + return DOe(h, kOe, { that: m }), VU(c, "errors", m), c; + }; + jO ? jO(CC, $O) : xOe(CC, $O, { name: !0 }); + var HU = CC.prototype = UK($O.prototype, { constructor: zU(1, CC), message: zU(1, ""), name: zU(1, "AggregateError") }); + TOe({ global: !0, constructor: !0, arity: 2 }, { AggregateError: CC }); + var px, TC, jK, WU, gx = typeof process != "undefined" && R(process) == "process", POe = _t, NOe = Gv, LOe = ae, $K = Bi("species"), FOe = v, BOe = TypeError, GU = function(h, s) { + if (FOe(s, h)) + return h; + throw BOe("Incorrect invocation"); + }, UOe = Ry, jOe = Ht, $Oe = TypeError, VK = go, VOe = function(h) { + if (UOe(h)) + return h; + throw $Oe(jOe(h) + " is not a constructor"); + }, zOe = He, HOe = Bi("species"), zK = function(h, s) { + var c, p = VK(h).constructor; + return p === void 0 || zOe(c = VK(p)[HOe]) ? s : VOe(c); + }, WOe = TypeError, VO = function(h, s) { + if (h < s) + throw WOe("Not enough arguments"); + return h; + }, HK = /(?:ipad|iphone|ipod).*applewebkit/i.test(Nt), Wh = C, GOe = I, YOe = bl, WK = X, XOe = Tt, GK = a, YK = $v, KOe = Aa, XK = Xa, ZOe = VO, qOe = HK, JOe = gx, YU = Wh.setImmediate, XU = Wh.clearImmediate, QOe = Wh.process, KU = Wh.Dispatch, eMe = Wh.Function, KK = Wh.MessageChannel, tMe = Wh.String, ZU = 0, vx = {}, ZK = "onreadystatechange"; + GK(function() { + px = Wh.location; + }); + var qU = function(h) { + if (XOe(vx, h)) { + var s = vx[h]; + delete vx[h], s(); + } + }, JU = function(h) { + return function() { + qU(h); + }; + }, qK = function(h) { + qU(h.data); + }, JK = function(h) { + Wh.postMessage(tMe(h), px.protocol + "//" + px.host); + }; + YU && XU || (YU = function(h) { + ZOe(arguments.length, 1); + var s = WK(h) ? h : eMe(h), c = KOe(arguments, 1); + return vx[++ZU] = function() { + GOe(s, void 0, c); + }, TC(ZU), ZU; + }, XU = function(h) { + delete vx[h]; + }, JOe ? TC = function(h) { + QOe.nextTick(JU(h)); + } : KU && KU.now ? TC = function(h) { + KU.now(JU(h)); + } : KK && !qOe ? (WU = (jK = new KK()).port2, jK.port1.onmessage = qK, TC = YOe(WU.postMessage, WU)) : Wh.addEventListener && WK(Wh.postMessage) && !Wh.importScripts && px && px.protocol !== "file:" && !GK(JK) ? (TC = JK, Wh.addEventListener("message", qK, !1)) : TC = ZK in XK("script") ? function(h) { + YK.appendChild(XK("script"))[ZK] = function() { + YK.removeChild(this), qU(h); + }; + } : function(h) { + setTimeout(JU(h), 0); + }); + var QK = { set: YU, clear: XU }, eZ = function() { + this.head = null, this.tail = null; + }; + eZ.prototype = { add: function(h) { + var s = { item: h, next: null }, c = this.tail; + c ? c.next = s : this.head = s, this.tail = s; + }, get: function() { + var h = this.head; + if (h) + return (this.head = h.next) === null && (this.tail = null), h.item; + } }; + var wC, QU, ej, tj, tZ, rZ = eZ, rMe = /ipad|iphone|ipod/i.test(Nt) && typeof Pebble != "undefined", nMe = /web0s(?!.*chrome)/i.test(Nt), yS = C, nZ = bl, iMe = ee.f, rj = QK.set, aMe = rZ, oMe = HK, sMe = rMe, lMe = nMe, nj = gx, iZ = yS.MutationObserver || yS.WebKitMutationObserver, aZ = yS.document, oZ = yS.process, zO = yS.Promise, sZ = iMe(yS, "queueMicrotask"), ij = sZ && sZ.value; + if (!ij) { + var HO = new aMe(), WO = function() { + var h, s; + for (nj && (h = oZ.domain) && h.exit(); s = HO.get(); ) + try { + s(); + } catch (c) { + throw HO.head && wC(), c; + } + h && h.enter(); + }; + oMe || nj || lMe || !iZ || !aZ ? !sMe && zO && zO.resolve ? ((tj = zO.resolve(void 0)).constructor = zO, tZ = nZ(tj.then, tj), wC = function() { + tZ(WO); + }) : nj ? wC = function() { + oZ.nextTick(WO); + } : (rj = nZ(rj, yS), wC = function() { + rj(WO); + }) : (QU = !0, ej = aZ.createTextNode(""), new iZ(WO).observe(ej, { characterData: !0 }), wC = function() { + ej.data = QU = !QU; + }), ij = function(h) { + HO.head || wC(), HO.add(h); + }; + } + var cMe = ij, IC = function(h) { + try { + return { error: !1, value: h() }; + } catch (s) { + return { error: !0, value: s }; + } + }, _S = C.Promise, lZ = typeof Deno == "object" && Deno && typeof Deno.version == "object", uMe = !lZ && !gx && typeof window == "object" && typeof document == "object", hMe = C, mx = _S, dMe = X, fMe = Lf, pMe = H0, gMe = Bi, vMe = uMe, mMe = lZ, aj = Dn, cZ = mx && mx.prototype, yMe = gMe("species"), uZ = !1, hZ = dMe(hMe.PromiseRejectionEvent), _Me = fMe("Promise", function() { + var h = pMe(mx), s = h !== String(mx); + if (!s && aj === 66 || !cZ.catch || !cZ.finally) + return !0; + if (!aj || aj < 51 || !/native code/.test(h)) { + var c = new mx(function(m) { + m(1); + }), p = function(m) { + m(function() { + }, function() { + }); + }; + if ((c.constructor = {})[yMe] = p, !(uZ = c.then(function() { + }) instanceof p)) + return !0; + } + return !s && (vMe || mMe) && !hZ; + }), yx = { CONSTRUCTOR: _Me, REJECTION_EVENT: hZ, SUBCLASSING: uZ }, pg = {}, dZ = Pt, SMe = TypeError, bMe = function(h) { + var s, c; + this.promise = new h(function(p, m) { + if (s !== void 0 || c !== void 0) + throw SMe("Bad Promise constructor"); + s = p, c = m; + }), this.resolve = dZ(s), this.reject = dZ(c); + }; + pg.f = function(h) { + return new bMe(h); + }; + var oj, fZ, EMe = ki, GO = gx, Ky = C, _x = fe, CMe = Wl, TMe = Dc, wMe = function(h) { + var s = POe(h); + LOe && s && !s[$K] && NOe(s, $K, { configurable: !0, get: function() { + return this; + } }); + }, IMe = Pt, sj = X, xMe = rt, AMe = GU, RMe = zK, pZ = QK.set, lj = cMe, DMe = function(h, s) { + try { + arguments.length == 1 ? console.error(h) : console.error(h, s); + } catch (c) { + } + }, OMe = IC, MMe = rZ, gZ = Vy, cj = _S, vZ = yx, mZ = pg, YO = "Promise", yZ = vZ.CONSTRUCTOR, kMe = vZ.REJECTION_EVENT, uj = gZ.getterFor(YO), PMe = gZ.set, NMe = cj && cj.prototype, Sx = cj, hj = NMe, _Z = Ky.TypeError, dj = Ky.document, fj = Ky.process, pj = mZ.f, LMe = pj, FMe = !!(dj && dj.createEvent && Ky.dispatchEvent), SZ = "unhandledrejection", bZ = function(h) { + var s; + return !(!xMe(h) || !sj(s = h.then)) && s; + }, EZ = function(h, s) { + var c, p, m, T = s.value, D = s.state == 1, k = D ? h.ok : h.fail, N = h.resolve, U = h.reject, V = h.domain; + try { + k ? (D || (s.rejection === 2 && UMe(s), s.rejection = 1), k === !0 ? c = T : (V && V.enter(), c = k(T), V && (V.exit(), m = !0)), c === h.promise ? U(_Z("Promise-chain cycle")) : (p = bZ(c)) ? _x(p, c, N, U) : N(c)) : U(T); + } catch (G) { + V && !m && V.exit(), U(G); + } + }, CZ = function(h, s) { + h.notified || (h.notified = !0, lj(function() { + for (var c, p = h.reactions; c = p.get(); ) + EZ(c, h); + h.notified = !1, s && !h.rejection && BMe(h); + })); + }, TZ = function(h, s, c) { + var p, m; + FMe ? ((p = dj.createEvent("Event")).promise = s, p.reason = c, p.initEvent(h, !1, !0), Ky.dispatchEvent(p)) : p = { promise: s, reason: c }, !kMe && (m = Ky["on" + h]) ? m(p) : h === SZ && DMe("Unhandled promise rejection", c); + }, BMe = function(h) { + _x(pZ, Ky, function() { + var s, c = h.facade, p = h.value; + if (wZ(h) && (s = OMe(function() { + GO ? fj.emit("unhandledRejection", p, c) : TZ(SZ, c, p); + }), h.rejection = GO || wZ(h) ? 2 : 1, s.error)) + throw s.value; + }); + }, wZ = function(h) { + return h.rejection !== 1 && !h.parent; + }, UMe = function(h) { + _x(pZ, Ky, function() { + var s = h.facade; + GO ? fj.emit("rejectionHandled", s) : TZ("rejectionhandled", s, h.value); + }); + }, xC = function(h, s, c) { + return function(p) { + h(s, p, c); + }; + }, AC = function(h, s, c) { + h.done || (h.done = !0, c && (h = c), h.value = s, h.state = 2, CZ(h, !0)); + }, gj = function(h, s, c) { + if (!h.done) { + h.done = !0, c && (h = c); + try { + if (h.facade === s) + throw _Z("Promise can't be resolved itself"); + var p = bZ(s); + p ? lj(function() { + var m = { done: !1 }; + try { + _x(p, s, xC(gj, m, h), xC(AC, m, h)); + } catch (T) { + AC(m, T, h); + } + }) : (h.value = s, h.state = 1, CZ(h, !1)); + } catch (m) { + AC({ done: !1 }, m, h); + } + } + }; + yZ && (hj = (Sx = function(h) { + AMe(this, hj), IMe(h), _x(oj, this); + var s = uj(this); + try { + h(xC(gj, s), xC(AC, s)); + } catch (c) { + AC(s, c); + } + }).prototype, (oj = function(h) { + PMe(this, { type: YO, done: !1, notified: !1, parent: !1, reactions: new MMe(), rejection: !1, state: 0, value: void 0 }); + }).prototype = CMe(hj, "then", function(h, s) { + var c = uj(this), p = pj(RMe(this, Sx)); + return c.parent = !0, p.ok = !sj(h) || h, p.fail = sj(s) && s, p.domain = GO ? fj.domain : void 0, c.state == 0 ? c.reactions.add(p) : lj(function() { + EZ(p, c); + }), p.promise; + }), fZ = function() { + var h = new oj(), s = uj(h); + this.promise = h, this.resolve = xC(gj, s), this.reject = xC(AC, s); + }, mZ.f = pj = function(h) { + return h === Sx || h === void 0 ? new fZ(h) : LMe(h); + }), EMe({ global: !0, constructor: !0, wrap: !0, forced: yZ }, { Promise: Sx }), TMe(Sx, YO, !1, !0), wMe(YO); + var IZ = Bi("iterator"), xZ = !1; + try { + var jMe = 0, AZ = { next: function() { + return { done: !!jMe++ }; + }, return: function() { + xZ = !0; + } }; + AZ[IZ] = function() { + return this; + }, Array.from(AZ, function() { + throw 2; + }); + } catch (h) { + } + var $Me = _S, VMe = function(h, s) { + if (!s && !xZ) + return !1; + var c = !1; + try { + var p = {}; + p[IZ] = function() { + return { next: function() { + return { done: c = !0 }; + } }; + }, h(p); + } catch (m) { + } + return c; + }, XO = yx.CONSTRUCTOR || !VMe(function(h) { + $Me.all(h).then(void 0, function() { + }); + }), zMe = fe, HMe = Pt, WMe = pg, GMe = IC, YMe = fx; + ki({ target: "Promise", stat: !0, forced: XO }, { all: function(h) { + var s = this, c = WMe.f(s), p = c.resolve, m = c.reject, T = GMe(function() { + var D = HMe(s.resolve), k = [], N = 0, U = 1; + YMe(h, function(V) { + var G = N++, K = !1; + U++, zMe(D, s, V).then(function(q) { + K || (K = !0, k[G] = q, --U || p(k)); + }, m); + }), --U || p(k); + }); + return T.error && m(T.value), c.promise; + } }); + var XMe = ki, KMe = yx.CONSTRUCTOR; + _S && _S.prototype, XMe({ target: "Promise", proto: !0, forced: KMe, real: !0 }, { catch: function(h) { + return this.then(void 0, h); + } }); + var ZMe = fe, qMe = Pt, JMe = pg, QMe = IC, eke = fx; + ki({ target: "Promise", stat: !0, forced: XO }, { race: function(h) { + var s = this, c = JMe.f(s), p = c.reject, m = QMe(function() { + var T = qMe(s.resolve); + eke(h, function(D) { + ZMe(T, s, D).then(c.resolve, p); + }); + }); + return m.error && p(m.value), c.promise; + } }); + var tke = fe, rke = pg; + ki({ target: "Promise", stat: !0, forced: yx.CONSTRUCTOR }, { reject: function(h) { + var s = rke.f(this); + return tke(s.reject, void 0, h), s.promise; + } }); + var nke = go, ike = rt, ake = pg, RZ = function(h, s) { + if (nke(h), ike(s) && s.constructor === h) + return s; + var c = ake.f(h); + return (0, c.resolve)(s), c.promise; + }, oke = ki, ske = _S, lke = yx.CONSTRUCTOR, cke = RZ, uke = _t("Promise"), hke = !lke; + oke({ target: "Promise", stat: !0, forced: !0 }, { resolve: function(h) { + return cke(hke && this === uke ? ske : this, h); + } }); + var dke = fe, fke = Pt, pke = pg, gke = IC, vke = fx; + ki({ target: "Promise", stat: !0, forced: XO }, { allSettled: function(h) { + var s = this, c = pke.f(s), p = c.resolve, m = c.reject, T = gke(function() { + var D = fke(s.resolve), k = [], N = 0, U = 1; + vke(h, function(V) { + var G = N++, K = !1; + U++, dke(D, s, V).then(function(q) { + K || (K = !0, k[G] = { status: "fulfilled", value: q }, --U || p(k)); + }, function(q) { + K || (K = !0, k[G] = { status: "rejected", reason: q }, --U || p(k)); + }); + }), --U || p(k); + }); + return T.error && m(T.value), c.promise; + } }); + var mke = fe, yke = Pt, _ke = _t, Ske = pg, bke = IC, Eke = fx, DZ = "No one promise resolved"; + ki({ target: "Promise", stat: !0, forced: XO }, { any: function(h) { + var s = this, c = _ke("AggregateError"), p = Ske.f(s), m = p.resolve, T = p.reject, D = bke(function() { + var k = yke(s.resolve), N = [], U = 0, V = 1, G = !1; + Eke(h, function(K) { + var q = U++, ue = !1; + V++, mke(k, s, K).then(function(oe) { + ue || G || (G = !0, m(oe)); + }, function(oe) { + ue || G || (ue = !0, N[q] = oe, --V || T(new c(N, DZ))); + }); + }), --V || T(new c(N, DZ)); + }); + return D.error && T(D.value), p.promise; + } }); + var Cke = ki, vj = _S, Tke = a, wke = _t, Ike = X, xke = zK, OZ = RZ, Ake = vj && vj.prototype; + Cke({ target: "Promise", proto: !0, real: !0, forced: !!vj && Tke(function() { + Ake.finally.call({ then: function() { + } }, function() { + }); + }) }, { finally: function(h) { + var s = xke(this, wke("Promise")), c = Ike(h); + return this.then(c ? function(p) { + return OZ(s, h()).then(function() { + return p; + }); + } : h, c ? function(p) { + return OZ(s, h()).then(function() { + throw p; + }); + } : h); + } }); + var MZ = Ke.Promise, ot = i(MZ); + const Rke = () => { + }; + function bx() { + const h = { promise: void 0, isResolved: !1, isRejected: !1, isFinished: !1, resolve: void 0, reject: void 0, cancel: Rke }; + return h.promise = new ot((s, c) => { + h.resolve = (p) => { + h.isFinished || (h.isResolved = !0, h.isFinished = !0, s(p), h.value = p); + }, h.reject = (p) => { + h.isFinished || (h.isRejected = !0, h.isFinished = !0, c(p)); + }; + }), h; + } + const KO = /* @__PURE__ */ new Map(), ZO = /* @__PURE__ */ new Map(), gg = /* @__PURE__ */ new Map(); + var Zo, xi; + (function(h) { + h.WIN_10 = "Windows 10", h.WIN_81 = "Windows 8.1", h.WIN_8 = "Windows 8", h.WIN_7 = "Windows 7", h.WIN_VISTA = "Windows Vista", h.WIN_SERVER_2003 = "Windows Server 2003", h.WIN_XP = "Windows XP", h.WIN_2000 = "Windows 2000", h.ANDROID = "Android", h.HARMONY_OS = "HarmonyOS", h.OPEN_BSD = "Open BSD", h.SUN_OS = "Sun OS", h.LINUX = "Linux", h.IOS = "iOS", h.MAC_OS = "Mac OS", h.CHROMIUM_OS = "Chromium OS", h.QNX = "QNX", h.UNIX = "UNIX", h.BEOS = "BeOS", h.OS_2 = "OS/2", h.SEARCH_BOT = "Search Bot"; + })(Zo || (Zo = {})), function(h) { + h.CHROME = "Chrome", h.SAFARI = "Safari", h.EDGE = "Edge", h.FIREFOX = "Firefox", h.OPERA = "OPR", h.QQ = "QQBrowser", h.WECHAT = "MicroMessenger"; + }(xi || (xi = {})); + var mj = { exports: {} }; + (function(h, s) { + (function(c, p) { + var m = "function", T = "undefined", D = "object", k = "string", N = "major", U = "model", V = "name", G = "type", K = "vendor", q = "version", ue = "architecture", oe = "console", he = "mobile", Ce = "tablet", ke = "smarttv", Ge = "wearable", tt = "embedded", Ye = "Amazon", et = "Apple", ht = "ASUS", st = "BlackBerry", Ut = "Browser", Vt = "Chrome", fn = "Firefox", Nn = "Google", ha = "Huawei", jo = "LG", Sa = "Microsoft", Su = "Motorola", xt = "Opera", zt = "Samsung", gr = "Sharp", qr = "Sony", Si = "Xiaomi", Qt = "Zebra", se = "Facebook", Pe = "Chromium OS", We = "Mac OS", Ft = function(oo) { + for (var $o = {}, ba = 0; ba < oo.length; ba++) + $o[oo[ba].toUpperCase()] = oo[ba]; + return $o; + }, pn = function(oo, $o) { + return typeof oo === k && ga($o).indexOf(ga(oo)) !== -1; + }, ga = function(oo) { + return oo.toLowerCase(); + }, Js = function(oo, $o) { + if (typeof oo === k) + return oo = oo.replace(/^\s\s*/, ""), typeof $o === T ? oo : oo.substring(0, 350); + }, bu = function(oo, $o) { + for (var ba, Eu, kg, so, bi, $c, A_ = 0; A_ < $o.length && !bi; ) { + var fp = $o[A_], wre = $o[A_ + 1]; + for (ba = Eu = 0; ba < fp.length && !bi && fp[ba]; ) + if (bi = fp[ba++].exec(oo)) + for (kg = 0; kg < wre.length; kg++) + $c = bi[++Eu], typeof (so = wre[kg]) === D && so.length > 0 ? so.length === 2 ? typeof so[1] == m ? this[so[0]] = so[1].call(this, $c) : this[so[0]] = so[1] : so.length === 3 ? typeof so[1] !== m || so[1].exec && so[1].test ? this[so[0]] = $c ? $c.replace(so[1], so[2]) : p : this[so[0]] = $c ? so[1].call(this, $c, so[2]) : p : so.length === 4 && (this[so[0]] = $c ? so[3].call(this, $c.replace(so[1], so[2])) : p) : this[so] = $c || p; + A_ += 2; + } + }, ym = function(oo, $o) { + for (var ba in $o) + if (typeof $o[ba] === D && $o[ba].length > 0) { + for (var Eu = 0; Eu < $o[ba].length; Eu++) + if (pn($o[ba][Eu], oo)) + return ba === "?" ? p : ba; + } else if (pn($o[ba], oo)) + return ba === "?" ? p : ba; + return oo; + }, wk = { ME: "4.90", "NT 3.11": "NT3.51", "NT 4.0": "NT4.0", 2e3: "NT 5.0", XP: ["NT 5.1", "NT 5.2"], Vista: "NT 6.0", 7: "NT 6.1", 8: "NT 6.2", 8.1: "NT 6.3", 10: ["NT 6.4", "NT 10.0"], RT: "ARM" }, Ik = { browser: [[/\b(?:crmo|crios)\/([\w\.]+)/i], [q, [V, "Chrome"]], [/edg(?:e|ios|a)?\/([\w\.]+)/i], [q, [V, "Edge"]], [/(opera mini)\/([-\w\.]+)/i, /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i], [V, q], [/opios[\/ ]+([\w\.]+)/i], [q, [V, xt + " Mini"]], [/\bopr\/([\w\.]+)/i], [q, [V, xt]], [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, /(ba?idubrowser)[\/ ]?([\w\.]+)/i, /(?:ms|\()(ie) ([\w\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, /(weibo)__([\d\.]+)/i], [V, q], [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i], [q, [V, "UC" + Ut]], [/microm.+\bqbcore\/([\w\.]+)/i, /\bqbcore\/([\w\.]+).+microm/i], [q, [V, "WeChat(Win) Desktop"]], [/micromessenger\/([\w\.]+)/i], [q, [V, "WeChat"]], [/konqueror\/([\w\.]+)/i], [q, [V, "Konqueror"]], [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i], [q, [V, "IE"]], [/yabrowser\/([\w\.]+)/i], [q, [V, "Yandex"]], [/(avast|avg)\/([\w\.]+)/i], [[V, /(.+)/, "$1 Secure " + Ut], q], [/\bfocus\/([\w\.]+)/i], [q, [V, fn + " Focus"]], [/\bopt\/([\w\.]+)/i], [q, [V, xt + " Touch"]], [/coc_coc\w+\/([\w\.]+)/i], [q, [V, "Coc Coc"]], [/dolfin\/([\w\.]+)/i], [q, [V, "Dolphin"]], [/coast\/([\w\.]+)/i], [q, [V, xt + " Coast"]], [/miuibrowser\/([\w\.]+)/i], [q, [V, "MIUI " + Ut]], [/fxios\/([-\w\.]+)/i], [q, [V, fn]], [/\bqihu|(qi?ho?o?|360)browser/i], [[V, "360 " + Ut]], [/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i], [[V, /(.+)/, "$1 " + Ut], q], [/(comodo_dragon)\/([\w\.]+)/i], [[V, /_/g, " "], q], [/(electron)\/([\w\.]+) safari/i, /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i], [V, q], [/(metasr)[\/ ]?([\w\.]+)/i, /(lbbrowser)/i, /\[(linkedin)app\]/i], [V], [/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i], [[V, se], q], [/(kakao(?:talk|story))[\/ ]([\w\.]+)/i, /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, /safari (line)\/([\w\.]+)/i, /\b(line)\/([\w\.]+)\/iab/i, /(chromium|instagram)[\/ ]([-\w\.]+)/i], [V, q], [/\bgsa\/([\w\.]+) .*safari\//i], [q, [V, "GSA"]], [/headlesschrome(?:\/([\w\.]+)| )/i], [q, [V, Vt + " Headless"]], [/ wv\).+(chrome)\/([\w\.]+)/i], [[V, Vt + " WebView"], q], [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i], [q, [V, "Android " + Ut]], [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i], [V, q], [/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i], [q, [V, "Mobile Safari"]], [/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i], [q, V], [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i], [V, [q, ym, { "1.0": "/8", 1.2: "/1", 1.3: "/3", "2.0": "/412", "2.0.2": "/416", "2.0.3": "/417", "2.0.4": "/419", "?": "/" }]], [/(webkit|khtml)\/([\w\.]+)/i], [V, q], [/(navigator|netscape\d?)\/([-\w\.]+)/i], [[V, "Netscape"], q], [/mobile vr; rv:([\w\.]+)\).+firefox/i], [q, [V, fn + " Reality"]], [/ekiohf.+(flow)\/([\w\.]+)/i, /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, /(firefox)\/([\w\.]+)/i, /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, /(links) \(([\w\.]+)/i, /panasonic;(viera)/i], [V, q], [/(cobalt)\/([\w\.]+)/i], [V, [q, /master.|lts./, ""]]], cpu: [[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i], [[ue, "amd64"]], [/(ia32(?=;))/i], [[ue, ga]], [/((?:i[346]|x)86)[;\)]/i], [[ue, "ia32"]], [/\b(aarch64|arm(v?8e?l?|_?64))\b/i], [[ue, "arm64"]], [/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i], [[ue, "armhf"]], [/windows (ce|mobile); ppc;/i], [[ue, "arm"]], [/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i], [[ue, /ower/, "", ga]], [/(sun4\w)[;\)]/i], [[ue, "sparc"]], [/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i], [[ue, ga]]], device: [[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i], [U, [K, zt], [G, Ce]], [/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, /samsung[- ]([-\w]+)/i, /sec-(sgh\w+)/i], [U, [K, zt], [G, he]], [/\((ip(?:hone|od)[\w ]*);/i], [U, [K, et], [G, he]], [/\((ipad);[-\w\),; ]+apple/i, /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i], [U, [K, et], [G, Ce]], [/(macintosh);/i], [U, [K, et]], [/\b(sh-?[altvz]?\d\d[a-ekm]?)/i], [U, [K, gr], [G, he]], [/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i], [U, [K, ha], [G, Ce]], [/(?:huawei|honor)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i], [U, [K, ha], [G, he]], [/\b(poco[\w ]+)(?: bui|\))/i, /\b; (\w+) build\/hm\1/i, /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i], [[U, /_/g, " "], [K, Si], [G, he]], [/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i], [[U, /_/g, " "], [K, Si], [G, Ce]], [/; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i], [U, [K, "OPPO"], [G, he]], [/vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i], [U, [K, "Vivo"], [G, he]], [/\b(rmx[12]\d{3})(?: bui|;|\))/i], [U, [K, "Realme"], [G, he]], [/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i], [U, [K, Su], [G, he]], [/\b(mz60\d|xoom[2 ]{0,2}) build\//i], [U, [K, Su], [G, Ce]], [/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i], [U, [K, jo], [G, Ce]], [/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, /\blg-?([\d\w]+) bui/i], [U, [K, jo], [G, he]], [/(ideatab[-\w ]+)/i, /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i], [U, [K, "Lenovo"], [G, Ce]], [/(?:maemo|nokia).*(n900|lumia \d+)/i, /nokia[-_ ]?([-\w\.]*)/i], [[U, /_/g, " "], [K, "Nokia"], [G, he]], [/(pixel c)\b/i], [U, [K, Nn], [G, Ce]], [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i], [U, [K, Nn], [G, he]], [/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i], [U, [K, qr], [G, he]], [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i], [[U, "Xperia Tablet"], [K, qr], [G, Ce]], [/ (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i], [U, [K, "OnePlus"], [G, he]], [/(alexa)webm/i, /(kf[a-z]{2}wi)( bui|\))/i, /(kf[a-z]+)( bui|\)).+silk\//i], [U, [K, Ye], [G, Ce]], [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i], [[U, /(.+)/g, "Fire Phone $1"], [K, Ye], [G, he]], [/(playbook);[-\w\),; ]+(rim)/i], [U, K, [G, Ce]], [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i], [U, [K, st], [G, he]], [/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i], [U, [K, ht], [G, Ce]], [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i], [U, [K, ht], [G, he]], [/(nexus 9)/i], [U, [K, "HTC"], [G, Ce]], [/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i], [K, [U, /_/g, " "], [G, he]], [/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i], [U, [K, "Acer"], [G, Ce]], [/droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i], [U, [K, "Meizu"], [G, he]], [/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, /(hp) ([\w ]+\w)/i, /(asus)-?(\w+)/i, /(microsoft); (lumia[\w ]+)/i, /(lenovo)[-_ ]?([-\w]+)/i, /(jolla)/i, /(oppo) ?([\w ]+) bui/i], [K, U, [G, he]], [/(kobo)\s(ereader|touch)/i, /(archos) (gamepad2?)/i, /(hp).+(touchpad(?!.+tablet)|tablet)/i, /(kindle)\/([\w\.]+)/i, /(nook)[\w ]+build\/(\w+)/i, /(dell) (strea[kpr\d ]*[\dko])/i, /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, /(trinity)[- ]*(t\d{3}) bui/i, /(gigaset)[- ]+(q\w{1,9}) bui/i, /(vodafone) ([\w ]+)(?:\)| bui)/i], [K, U, [G, Ce]], [/(surface duo)/i], [U, [K, Sa], [G, Ce]], [/droid [\d\.]+; (fp\du?)(?: b|\))/i], [U, [K, "Fairphone"], [G, he]], [/(u304aa)/i], [U, [K, "AT&T"], [G, he]], [/\bsie-(\w*)/i], [U, [K, "Siemens"], [G, he]], [/\b(rct\w+) b/i], [U, [K, "RCA"], [G, Ce]], [/\b(venue[\d ]{2,7}) b/i], [U, [K, "Dell"], [G, Ce]], [/\b(q(?:mv|ta)\w+) b/i], [U, [K, "Verizon"], [G, Ce]], [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i], [U, [K, "Barnes & Noble"], [G, Ce]], [/\b(tm\d{3}\w+) b/i], [U, [K, "NuVision"], [G, Ce]], [/\b(k88) b/i], [U, [K, "ZTE"], [G, Ce]], [/\b(nx\d{3}j) b/i], [U, [K, "ZTE"], [G, he]], [/\b(gen\d{3}) b.+49h/i], [U, [K, "Swiss"], [G, he]], [/\b(zur\d{3}) b/i], [U, [K, "Swiss"], [G, Ce]], [/\b((zeki)?tb.*\b) b/i], [U, [K, "Zeki"], [G, Ce]], [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i], [[K, "Dragon Touch"], U, [G, Ce]], [/\b(ns-?\w{0,9}) b/i], [U, [K, "Insignia"], [G, Ce]], [/\b((nxa|next)-?\w{0,9}) b/i], [U, [K, "NextBook"], [G, Ce]], [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i], [[K, "Voice"], U, [G, he]], [/\b(lvtel\-)?(v1[12]) b/i], [[K, "LvTel"], U, [G, he]], [/\b(ph-1) /i], [U, [K, "Essential"], [G, he]], [/\b(v(100md|700na|7011|917g).*\b) b/i], [U, [K, "Envizen"], [G, Ce]], [/\b(trio[-\w\. ]+) b/i], [U, [K, "MachSpeed"], [G, Ce]], [/\btu_(1491) b/i], [U, [K, "Rotor"], [G, Ce]], [/(shield[\w ]+) b/i], [U, [K, "Nvidia"], [G, Ce]], [/(sprint) (\w+)/i], [K, U, [G, he]], [/(kin\.[onetw]{3})/i], [[U, /\./g, " "], [K, Sa], [G, he]], [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i], [U, [K, Qt], [G, Ce]], [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i], [U, [K, Qt], [G, he]], [/smart-tv.+(samsung)/i], [K, [G, ke]], [/hbbtv.+maple;(\d+)/i], [[U, /^/, "SmartTV"], [K, zt], [G, ke]], [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i], [[K, jo], [G, ke]], [/(apple) ?tv/i], [K, [U, et + " TV"], [G, ke]], [/crkey/i], [[U, Vt + "cast"], [K, Nn], [G, ke]], [/droid.+aft(\w)( bui|\))/i], [U, [K, Ye], [G, ke]], [/\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i], [U, [K, gr], [G, ke]], [/(bravia[\w ]+)( bui|\))/i], [U, [K, qr], [G, ke]], [/(mitv-\w{5}) bui/i], [U, [K, Si], [G, ke]], [/Hbbtv.*(technisat) (.*);/i], [K, U, [G, ke]], [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i], [[K, Js], [U, Js], [G, ke]], [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i], [[G, ke]], [/(ouya)/i, /(nintendo) ([wids3utch]+)/i], [K, U, [G, oe]], [/droid.+; (shield) bui/i], [U, [K, "Nvidia"], [G, oe]], [/(playstation [345portablevi]+)/i], [U, [K, qr], [G, oe]], [/\b(xbox(?: one)?(?!; xbox))[\); ]/i], [U, [K, Sa], [G, oe]], [/((pebble))app/i], [K, U, [G, Ge]], [/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i], [U, [K, et], [G, Ge]], [/droid.+; (glass) \d/i], [U, [K, Nn], [G, Ge]], [/droid.+; (wt63?0{2,3})\)/i], [U, [K, Qt], [G, Ge]], [/(quest( 2| pro)?)/i], [U, [K, se], [G, Ge]], [/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i], [K, [G, tt]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i], [U, [G, he]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i], [U, [G, Ce]], [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i], [[G, Ce]], [/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i], [[G, he]], [/(android[-\w\. ]{0,9});.+buil/i], [U, [K, "Generic"]]], engine: [[/windows.+ edge\/([\w\.]+)/i], [q, [V, "EdgeHTML"]], [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i], [q, [V, "Blink"]], [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, /ekioh(flow)\/([\w\.]+)/i, /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, /(icab)[\/ ]([23]\.[\d\.]+)/i], [V, q], [/rv\:([\w\.]{1,9})\b.+(gecko)/i], [q, V]], os: [[/microsoft (windows) (vista|xp)/i], [V, q], [/(windows) nt 6\.2; (arm)/i, /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i], [V, [q, ym, wk]], [/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i], [[V, "Windows"], [q, ym, wk]], [/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, /cfnetwork\/.+darwin/i], [[q, /_/g, "."], [V, "iOS"]], [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i], [[V, We], [q, /_/g, "."]], [/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i], [q, V], [/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, /(blackberry)\w*\/([\w\.]*)/i, /(tizen|kaios)[\/ ]([\w\.]+)/i, /\((series40);/i], [V, q], [/\(bb(10);/i], [q, [V, st]], [/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i], [q, [V, "Symbian"]], [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i], [q, [V, fn + " OS"]], [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i], [q, [V, "webOS"]], [/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i], [q, [V, "watchOS"]], [/crkey\/([\d\.]+)/i], [q, [V, Vt + "cast"]], [/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i], [[V, Pe], q], [/panasonic;(viera)/i, /(netrange)mmh/i, /(nettv)\/(\d+\.[\w\.]+)/i, /(nintendo|playstation) ([wids345portablevuch]+)/i, /(xbox); +xbox ([^\);]+)/i, /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, /(mint)[\/\(\) ]?(\w*)/i, /(mageia|vectorlinux)[; ]/i, /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, /(hurd|linux) ?([\w\.]*)/i, /(gnu) ?([\w\.]*)/i, /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, /(haiku) (\w+)/i], [V, q], [/(sunos) ?([\w\.\d]*)/i], [[V, "Solaris"], q], [/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, /(unix) ?([\w\.]*)/i], [V, q]] }, td = function(oo, $o) { + if (typeof oo === D && ($o = oo, oo = p), !(this instanceof td)) + return new td(oo, $o).getResult(); + var ba = typeof c !== T && c.navigator ? c.navigator : p, Eu = oo || (ba && ba.userAgent ? ba.userAgent : ""), kg = ba && ba.userAgentData ? ba.userAgentData : p, so = $o ? function(bi, $c) { + var A_ = {}; + for (var fp in bi) + $c[fp] && $c[fp].length % 2 == 0 ? A_[fp] = $c[fp].concat(bi[fp]) : A_[fp] = bi[fp]; + return A_; + }(Ik, $o) : Ik; + return this.getBrowser = function() { + var bi = {}; + return bi[V] = p, bi[q] = p, bu.call(bi, Eu, so.browser), bi[N] = function($c) { + return typeof $c === k ? $c.replace(/[^\d\.]/g, "").split(".")[0] : p; + }(bi[q]), ba && ba.brave && typeof ba.brave.isBrave == m && (bi[V] = "Brave"), bi; + }, this.getCPU = function() { + var bi = {}; + return bi[ue] = p, bu.call(bi, Eu, so.cpu), bi; + }, this.getDevice = function() { + var bi = {}; + return bi[K] = p, bi[U] = p, bi[G] = p, bu.call(bi, Eu, so.device), !bi[G] && kg && kg.mobile && (bi[G] = he), bi[U] == "Macintosh" && ba && typeof ba.standalone !== T && ba.maxTouchPoints && ba.maxTouchPoints > 2 && (bi[U] = "iPad", bi[G] = Ce), bi; + }, this.getEngine = function() { + var bi = {}; + return bi[V] = p, bi[q] = p, bu.call(bi, Eu, so.engine), bi; + }, this.getOS = function() { + var bi = {}; + return bi[V] = p, bi[q] = p, bu.call(bi, Eu, so.os), !bi[V] && kg && kg.platform != "Unknown" && (bi[V] = kg.platform.replace(/chrome os/i, Pe).replace(/macos/i, We)), bi; + }, this.getResult = function() { + return { ua: this.getUA(), browser: this.getBrowser(), engine: this.getEngine(), os: this.getOS(), device: this.getDevice(), cpu: this.getCPU() }; + }, this.getUA = function() { + return Eu; + }, this.setUA = function(bi) { + return Eu = typeof bi === k && bi.length > 350 ? Js(bi, 350) : bi, this; + }, this.setUA(Eu), this; + }; + td.VERSION = "0.7.34", td.BROWSER = Ft([V, q, N]), td.CPU = Ft([ue]), td.DEVICE = Ft([U, K, G, oe, he, ke, Ce, Ge, tt]), td.ENGINE = td.OS = Ft([V, q]), h.exports && (s = h.exports = td), s.UAParser = td; + var x_ = typeof c !== T && (c.jQuery || c.Zepto); + if (x_ && !x_.ua) { + var mT = new td(); + x_.ua = mT.getResult(), x_.ua.get = function() { + return mT.getUA(); + }, x_.ua.set = function(oo) { + mT.setUA(oo); + var $o = mT.getResult(); + for (var ba in $o) + x_.ua[ba] = $o[ba]; + }; + } + })(typeof window == "object" ? window : n); + })(mj, mj.exports); + const yj = new (i(mj.exports))(); + let qv = yj.getResult(), _j = null; + function yi(h) { + if (!_j) { + h && yj.setUA(h), qv = yj.getResult(); + const s = function(T) { + if (T.engine.name === "Blink" && T.browser.name !== "WeChat") + return xi.CHROME; + switch (T.browser.name) { + case "Chrome Headless": + case "Chrome": + case "Chromium": + return xi.CHROME; + case "Safari": + case "Mobile Safari": + return xi.SAFARI; + case "Edge": + return xi.EDGE; + case "Firefox": + return xi.FIREFOX; + case "QQBrowser": + return xi.QQ; + case "Opera": + return xi.OPERA; + case "WeChat": + return xi.WECHAT; + default: + return T.browser.name || ""; + } + }(qv), c = function(T) { + let D; + return D = T.engine.name === "Blink" ? T.engine.version || "" : T.browser.version || "", D.split(".")[0]; + }(qv), p = function(T) { + return T.os.name === "Windows" ? T.os.version ? T.os.name + " " + T.os.version : T.os.name : T.os.name || ""; + }(qv), m = qv.os.version; + if (!(s && c && p && m)) + return { name: s, version: c, os: p, osVersion: m }; + _j = { name: s, version: c, os: p, osVersion: m }; + } + return _j; + } + function qO() { + return yi().os; + } + function kZ() { + const h = yi(); + return "".concat(h.os, " ").concat(h.osVersion); + } + function JO() { + const h = yi(); + return !!(qv.engine.name === "WebKit" && h.os === Zo.MAC_OS && navigator.maxTouchPoints && navigator.maxTouchPoints > 0 && h.name !== xi.SAFARI || Rl() && h.name !== xi.SAFARI); + } + function Dke() { + const h = yi(); + if (JO()) { + if (h.os === Zo.MAC_OS) + return !0; + if (h.os === Zo.IOS) { + const s = qv.os.version && qv.os.version.split("."); + if (s && Number(s[0]) === 14 && s[1] && Number(s[1]) >= 3 || s && Number(s[0]) > 14) + return !0; + } + } + return !1; + } + function Oke() { + return qv.engine.name === "WebKit"; + } + function Jv() { + return yi().name === xi.CHROME; + } + function ks() { + return yi().name === xi.SAFARI; + } + function qi() { + return yi().name === xi.FIREFOX; + } + function Rl() { + return yi().os === Zo.IOS; + } + function Sj(h) { + const s = yi(); + return !(s.name !== xi.CHROME || !s.osVersion) && Number(s.version) >= h; + } + function PZ(h) { + const s = yi(); + return !(s.name !== xi.EDGE || !s.osVersion) && Number(s.version) >= h; + } + function NZ(h) { + const s = yi(); + return !(s.name !== xi.OPERA || !s.osVersion) && Number(s.version) >= h; + } + function LZ() { + const h = yi(); + return !(h.name !== xi.CHROME || !h.osVersion) && Number(h.version) <= 90; + } + function FZ() { + const h = yi(); + if (h.os !== Zo.IOS || !h.osVersion) + return !1; + const s = h.osVersion.split("."); + return Number(s[0]) < 14 || Number(s[0]) === 14 && Number(s[1]) <= 6; + } + function RC() { + const h = yi(); + if (h.os !== Zo.IOS || !h.osVersion) + return !1; + const s = h.osVersion.split("."); + return Number(s[0]) === 15; + } + function bj() { + const h = yi(); + if (h.os !== Zo.IOS || !h.osVersion) + return !1; + const s = h.osVersion.split("."); + return Number(s[0]) === 16; + } + function BZ() { + const h = yi(); + if (h.os !== Zo.IOS || !h.osVersion) + return !1; + const s = h.osVersion.split("."); + return Number(s[0]) === 15 && Number(s[1]) >= 1; + } + function vg() { + return ks() && navigator.maxTouchPoints > 0; + } + function UZ() { + return yi().name === xi.WECHAT; + } + function jZ() { + return window.navigator.appVersion && window.navigator.appVersion.match(/Chrome\/([\w\W]*?)\./) !== null && window.navigator.appVersion.match(/Chrome\/([\w\W]*?)\./)[1] <= 35; + } + function Zy() { + const h = yi(); + return h.name === xi.EDGE || h.name === xi.SAFARI ? !1 : !!navigator.userAgent.toLocaleLowerCase().match(/chrome\/[\d]./i); + } + function QO() { + return qO() === Zo.ANDROID; + } + function Ex() { + const h = yi(); + return QO() && (h.name === xi.CHROME || h.name === xi.WECHAT || /chrome|chromium/i.test(navigator.userAgent)); + } + var _e; + (function(h) { + h.UNEXPECTED_ERROR = "UNEXPECTED_ERROR", h.UNEXPECTED_RESPONSE = "UNEXPECTED_RESPONSE", h.TIMEOUT = "TIMEOUT", h.INVALID_PARAMS = "INVALID_PARAMS", h.NOT_READABLE = "NOT_READABLE", h.NOT_SUPPORTED = "NOT_SUPPORTED", h.INVALID_OPERATION = "INVALID_OPERATION", h.OPERATION_ABORTED = "OPERATION_ABORTED", h.WEB_SECURITY_RESTRICT = "WEB_SECURITY_RESTRICT", h.EXCHANGE_SDP_FAILED = "EXCHANGE_SDP_FAILED", h.ADD_CANDIDATE_FAILED = "ADD_CANDIDATE_FAILED", h.DATACHANNEL_FAILED = "DATACHANNEL_FAILED", h.NETWORK_ERROR = "NETWORK_ERROR", h.NETWORK_TIMEOUT = "NETWORK_TIMEOUT", h.NETWORK_RESPONSE_ERROR = "NETWORK_RESPONSE_ERROR", h.API_INVOKE_TIMEOUT = "API_INVOKE_TIMEOUT", h.ENUMERATE_DEVICES_FAILED = "ENUMERATE_DEVICES_FAILED", h.DEVICE_NOT_FOUND = "DEVICE_NOT_FOUND", h.ELECTRON_IS_NULL = "ELECTRON_IS_NULL", h.ELECTRON_DESKTOP_CAPTURER_GET_SOURCES_ERROR = "ELECTRON_DESKTOP_CAPTURER_GET_SOURCES_ERROR", h.CHROME_PLUGIN_NO_RESPONSE = "CHROME_PLUGIN_NO_RESPONSE", h.CHROME_PLUGIN_NOT_INSTALL = "CHROME_PLUGIN_NOT_INSTALL", h.MEDIA_OPTION_INVALID = "MEDIA_OPTION_INVALID", h.PERMISSION_DENIED = "PERMISSION_DENIED", h.CONSTRAINT_NOT_SATISFIED = "CONSTRAINT_NOT_SATISFIED", h.TRACK_IS_DISABLED = "TRACK_IS_DISABLED", h.GET_VIDEO_ELEMENT_VISIBLE_ERROR = "GET_VIDEO_ELEMENT_VISIBLE_ERROR", h.SHARE_AUDIO_NOT_ALLOWED = "SHARE_AUDIO_NOT_ALLOWED", h.LOW_STREAM_ENCODING_ERROR = "LOW_STREAM_ENCODING_ERROR", h.SET_ENCODING_PARAMETER_ERROR = "SET_ENCODING_PARAMETER_ERROR", h.TRACK_STATE_UNREACHABLE = "TRACK_STATE_UNREACHABLE", h.INVALID_UINT_UID_FROM_STRING_UID = "INVALID_UINT_UID_FROM_STRING_UID", h.CAN_NOT_GET_PROXY_SERVER = "CAN_NOT_GET_PROXY_SERVER", h.CAN_NOT_GET_GATEWAY_SERVER = "CAN_NOT_GET_GATEWAY_SERVER", h.VOID_GATEWAY_ADDRESS = "VOID_GATEWAY_ADDRESS", h.UID_CONFLICT = "UID_CONFLICT", h.MULTI_UNILBS_RESPONSE_ERROR = "MULTI_UNILBS_RESPONSE_ERROR", h.UPDATE_TICKET_FAILED = "UPDATE_TICKET_FAILED", h.INVALID_LOCAL_TRACK = "INVALID_LOCAL_TRACK", h.INVALID_TRACK = "INVALID_TRACK", h.SENDER_NOT_FOUND = "SENDER_NOT_FOUND", h.CREATE_OFFER_FAILED = "CREATE_OFFER_FAILED", h.SET_ANSWER_FAILED = "SET_ANSWER_FAILED", h.ICE_FAILED = "ICE_FAILED", h.PC_CLOSED = "PC_CLOSED", h.SENDER_REPLACE_FAILED = "SENDER_REPLACE_FAILED", h.GET_LOCAL_CAPABILITIES_FAILED = "GET_LOCAL_CAPABILITIES_FAILED", h.GET_LOCAL_CONNECTION_PARAMS_FAILED = "GET_LOCAL_CONNECTION_PARAMS_FAILED", h.SUBSCRIBE_FAILED = "SUBSCRIBE_FAILED", h.UNSUBSCRIBE_FAILED = "UNSUBSCRIBE_FAILED", h.GATEWAY_P2P_LOST = "GATEWAY_P2P_LOST", h.NO_ICE_CANDIDATE = "NO_ICE_CANDIDATE", h.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS = "CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS", h.EXIST_DISABLED_VIDEO_TRACK = "EXIST_DISABLED_VIDEO_TRACK", h.INVALID_REMOTE_USER = "INVALID_REMOTE_USER", h.REMOTE_USER_IS_NOT_PUBLISHED = "REMOTE_USER_IS_NOT_PUBLISHED", h.CUSTOM_REPORT_SEND_FAILED = "CUSTOM_REPORT_SEND_FAILED", h.CUSTOM_REPORT_FREQUENCY_TOO_HIGH = "CUSTOM_REPORT_FREQUENCY_TOO_HIGH", h.FETCH_AUDIO_FILE_FAILED = "FETCH_AUDIO_FILE_FAILED", h.READ_LOCAL_AUDIO_FILE_ERROR = "READ_LOCAL_AUDIO_FILE_ERROR", h.DECODE_AUDIO_FILE_FAILED = "DECODE_AUDIO_FILE_FAILED", h.WS_ABORT = "WS_ABORT", h.WS_DISCONNECT = "WS_DISCONNECT", h.WS_ERR = "WS_ERR", h.EXTERNAL_SIGNAL_ABORT = "EXTERNAL_SIGNAL_ABORT", h.LIVE_STREAMING_TASK_CONFLICT = "LIVE_STREAMING_TASK_CONFLICT", h.LIVE_STREAMING_INVALID_ARGUMENT = "LIVE_STREAMING_INVALID_ARGUMENT", h.LIVE_STREAMING_INTERNAL_SERVER_ERROR = "LIVE_STREAMING_INTERNAL_SERVER_ERROR", h.LIVE_STREAMING_PUBLISH_STREAM_NOT_AUTHORIZED = "LIVE_STREAMING_PUBLISH_STREAM_NOT_AUTHORIZED", h.LIVE_STREAMING_TRANSCODING_NOT_SUPPORTED = "LIVE_STREAMING_TRANSCODING_NOT_SUPPORTED", h.LIVE_STREAMING_CDN_ERROR = "LIVE_STREAMING_CDN_ERROR", h.LIVE_STREAMING_INVALID_RAW_STREAM = "LIVE_STREAMING_INVALID_RAW_STREAM", h.LIVE_STREAMING_WARN_STREAM_NUM_REACH_LIMIT = "LIVE_STREAMING_WARN_STREAM_NUM_REACH_LIMIT", h.LIVE_STREAMING_WARN_FAILED_LOAD_IMAGE = "LIVE_STREAMING_WARN_FAILED_LOAD_IMAGE", h.LIVE_STREAMING_WARN_FREQUENT_REQUEST = "LIVE_STREAMING_WARN_FREQUENT_REQUEST", h.WEBGL_INTERNAL_ERROR = "WEBGL_INTERNAL_ERROR", h.BEAUTY_PROCESSOR_INTERNAL_ERROR = "BEAUTY_PROCESSOR_INTERNAL_ERROR", h.CROSS_CHANNEL_WAIT_STATUS_ERROR = "CROSS_CHANNEL_WAIT_STATUS_ERROR", h.CROSS_CHANNEL_FAILED_JOIN_SRC = "CROSS_CHANNEL_FAILED_JOIN_SEC", h.CROSS_CHANNEL_FAILED_JOIN_DEST = "CROSS_CHANNEL_FAILED_JOIN_DEST", h.CROSS_CHANNEL_FAILED_PACKET_SENT_TO_DEST = "CROSS_CHANNEL_FAILED_PACKET_SENT_TO_DEST", h.CROSS_CHANNEL_SERVER_ERROR_RESPONSE = "CROSS_CHANNEL_SERVER_ERROR_RESPONSE", h.METADATA_OUT_OF_RANGE = "METADATA_OUT_OF_RANGE", h.LOCAL_AEC_ERROR = "LOCAL_AEC_ERROR", h.INVALID_PLUGIN = "INVALID_PLUGIN", h.DISCONNECT_P2P = "DISCONNECT_P2P", h.INIT_WEBSOCKET_TIMEOUT = "INIT_WEBSOCKET_TIMEOUT", h.CONVERTING_IMAGEDATA_TO_BLOB_FAILED = "CONVERTING_IMAGEDATA_TO_BLOB_FAILED", h.CONVERTING_VIDEO_FRAME_TO_BLOB_FAILED = "CONVERTING_VIDEO_FRAME_TO_BLOB_FAILED", h.INIT_DATACHANNEL_TIMEOUT = "INIT_DATACHANNEL_TIMEOUT", h.CREATE_DATACHANNEL_ERROR = "CREATE_DATACHANNEL_ERROR", h.DATACHANNEL_CONNECTION_TIMEOUT = "DATACHANNEL_CONNECTION_TIMEOUT", h.PROHIBITED_OPERATION = "PROHIBITED_OPERATION", h.IMAGE_MODERATION_UPLOAD_FAILED = "IMAGE_MODERATION_UPLOAD_FAILED", h.P2P_MESSAGE_FAILED = "P2P_MESSAGE_FAILED"; + })(_e || (_e = {})); + let mt = class extends Error { + constructor(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "", c = arguments.length > 2 ? arguments[2] : void 0; + super(s), Z(this, "code", void 0), Z(this, "message", void 0), Z(this, "data", void 0), Z(this, "name", "AgoraRTCException"), this.code = h, this.message = "AgoraRTCError ".concat(this.code, ": ").concat(s), this.data = c; + } + toString() { + return this.data ? "data: ".concat(JSON.stringify(this.data), ` +`).concat(this.stack) : "".concat(this.stack); + } + print() { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "error", s = arguments.length > 1 ? arguments[1] : void 0; + return h === "error" && (s || console).error(this.toString()), h === "warning" && (s || console).warn(this.toString()), this; + } + throw(h) { + throw this.print("error", h), this; + } + }; + function Qv(h, s) { + if (typeof h != "boolean") + throw new mt(_e.INVALID_PARAMS, "Invalid ".concat(s, ": The value is of the boolean type.")); + } + function qo(h, s, c) { + if (!rr(c).call(c, h)) + throw new mt(_e.INVALID_PARAMS, "".concat(s, " can only be set as ").concat(JSON.stringify(c))); + } + function Wi(h, s) { + let c = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1, p = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1e4; + if (h < c || h > p || (!(arguments.length > 4 && arguments[4] !== void 0) || arguments[4]) && !function(m) { + return typeof m == "number" && m % 1 == 0; + }(h)) + throw new mt(_e.INVALID_PARAMS, "invalid ".concat(s, ": the value range is [").concat(c, ", ").concat(p, "]. integer only")); + } + function Ej(h, s) { + if (typeof h != "number") { + if (!(h.min || h.max || h.ideal || h.exact)) + throw new mt(_e.INVALID_PARAMS, "".concat(s, " is not a valid ConstrainLong")); + h.min !== void 0 && Wi(h.min, "".concat(s, ".min"), 0, 1 / 0), h.max !== void 0 && Wi(h.max, "".concat(s, ".max"), 1, 1 / 0), h.exact !== void 0 && Wi(h.exact, "".concat(s, ".exact"), 1, 1 / 0), h.ideal !== void 0 && Wi(h.ideal, "".concat(s, ".ideal"), 1, 1 / 0); + } else + Wi(h, s, 1, 1 / 0); + } + function Gs(h, s) { + let c = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1, p = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 255, m = !(arguments.length > 4 && arguments[4] !== void 0) || arguments[4]; + if (h == null) + throw new mt(_e.INVALID_PARAMS, "".concat(s || "param", " cannot be empty")); + if (!$Z(h, c, p, m)) + throw new mt(_e.INVALID_PARAMS, "Invalid ".concat(s || "string param", ": Length of the string: [").concat(c, ",").concat(p, "].").concat(m ? " ASCII characters only." : "")); + } + function em(h, s) { + if (!Array.isArray(h)) + throw new mt(_e.INVALID_PARAMS, "".concat(s, " should be an array")); + } + function za(h) { + return h == null; + } + function $Z(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1, c = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 255, p = !(arguments.length > 3 && arguments[3] !== void 0) || arguments[3]; + return typeof h == "string" && h.length <= c && h.length >= s && (!p || function(m) { + if (typeof m != "string") + return !1; + for (let T = 0; T < m.length; T += 1) { + const D = m.charCodeAt(T); + if (D < 0 || D > 255) + return !1; + } + return !0; + }(h)); + } + function VZ(h, s, c) { + if ("getBigUint64" in DataView.prototype) + return h.getBigUint64(s, c); + const p = h.getUint32(s, c), m = h.getUint32(s + 4, c), T = +!!c, D = +!c; + return BigInt(p * D + m * T) << BigInt(32) | BigInt(p * T + m * D); + } + function zZ(h, s, c, p) { + if ("setBigUint64" in DataView.prototype) + return h.setBigUint64(s, c, p); + const m = Number(c >> BigInt(32)), T = Number(c & BigInt(4294967295)); + p ? (h.setUint32(s + 4, m, p), h.setUint32(s, T, p)) : (h.setUint32(s, m, p), h.setUint32(s + 4, T, p)); + } + var DC, eM; + (function(h) { + h.COVERED = "COVERED", h.POSITION = "POSITION", h.SIZE = "SIZE", h.STYLE = "STYLE"; + })(DC || (DC = {})), function(h) { + h.UNMOUNTED = "UNMOUNTED", h.INVALID_HTML_ELEMENT = "INVALID_HTML_ELEMENT"; + }(eM || (eM = {})); + const HZ = new class { + constructor() { + Z(this, "_clientSize", null), Z(this, "getClientWidth", () => document.documentElement ? document.documentElement.clientWidth : document.body.clientWidth), Z(this, "getClientHeight", () => document.documentElement ? document.documentElement.clientHeight : document.body.clientHeight), Z(this, "getStyle", (h) => window.getComputedStyle(h, null)), Z(this, "checkCssVisibleProperty", (h) => { + var s; + let c = !0; + const p = this.getStyle(h), { display: m, visibility: T, opacity: D, filter: k } = p; + return (m === "none" || rr(s = ["hidden", "collapse"]).call(s, T) || Number(D) < 0.1) && (c = !1), c ? (k && k.split(" ").filter((N) => { + var U; + const V = N.split("(")[0]; + return rr(U = ["brightness", "blur", "opacity"]).call(U, V); + }).map((N) => { + const [U, V] = N.split(/\(|\)/); + return [U, Number(V.match(/^[0-9\.]+/))]; + }).forEach((N) => { + const [U, V] = N; + switch (U) { + case "brightness": + (V < 0.1 || V > 3) && (c = !1); + break; + case "blur": + V > 3 && (c = !1); + break; + case "opacity": + V < 0.1 && (c = !1); + } + }), c) : !1; + }), Z(this, "checkPropertyUpToAllParentNodes", (h, s) => { + let c = !0, p = !0; + const m = (D) => s(D); + let T = h; + for (; T && p; ) + m(T) || (c = !1, p = !1), T = T.parentElement, T || (p = !1); + return c; + }), Z(this, "checkActualCssVisibleIncludeInherit", (h) => this.checkPropertyUpToAllParentNodes(h, this.checkCssVisibleProperty)), Z(this, "getSizeAboutClient", (h) => { + const { width: s, height: c, left: p, right: m, top: T, bottom: D } = h.getBoundingClientRect(), k = this.getClientWidth(), N = this.getClientHeight(); + return { width: s, height: c, left: p, right: m, top: T, bottom: D, clientWidth: k, clientHeight: N, clientMin: Math.min(k, N) }; + }), Z(this, "checkActualSize", () => { + const { width: h, height: s, clientMin: c } = this._clientSize; + return this.checkSizeIsVisible(h, s, c); + }), Z(this, "elementFromPoint", (h, s) => document.elementFromPoint ? document.elementFromPoint(h, s) : null), Z(this, "checkCoverForAPoint", (h, s, c) => { + const p = this.elementFromPoint(h, s); + return p !== null && p !== c; + }), Z(this, "getPointPositionList", () => { + const { width: h, height: s, left: c, top: p } = this._clientSize, m = h / 6, T = s / 6, D = [], k = Are(10, 6); + for (let N = 0; N < 5; N++) + for (let U = 0; U < 5; U++) { + const V = (c * k + (N === 0 ? 0.1 : N === 4 ? (m * N * k - 1e5) / k : m * N) * k) / k, G = (p * k + (U === 0 ? 0.1 : U === 4 ? (T * U * k - 1e5) / k : T * U) * k) / k; + D.push({ x: V, y: G }); + } + return [...D]; + }), Z(this, "checkElementCover", (h) => this.getPointPositionList().map((s) => this.checkCoverForAPoint(s.x, s.y, h)).filter((s) => !!s).length > 6), Z(this, "checkSizeIsVisible", (h, s, c) => (h > 50 || c / h <= 10) && (s > 50 || c / s <= 10)), Z(this, "checkSizeOfPartInClient", () => { + const { left: h, right: s, top: c, bottom: p, clientHeight: m, clientWidth: T, clientMin: D } = this._clientSize; + let k, N, U, V; + if (h < 0) + k = 0; + else { + if (!(h < T)) + return !1; + k = h; + } + if (s < 0) + return !1; + if (N = s < T ? s : T, c < 0) + U = 0; + else { + if (!(c < m)) + return !1; + U = c; + } + if (p < 0) + return !1; + V = p < m ? p : m; + const G = N - k, K = V - U; + return this.checkSizeIsVisible(G, K, D); + }), Z(this, "returnHiddenResult", (h) => (this._clientSize = null, { visible: !1, reason: h })), Z(this, "checkOneElementVisible", (h) => { + if (h instanceof HTMLElement) { + if (this.checkElementIsMountedOnDom(h)) { + if (this.checkActualCssVisibleIncludeInherit(h)) { + if (this._clientSize = this.getSizeAboutClient(h), this.checkElementCover(h)) + return this.returnHiddenResult(DC.COVERED); + { + const s = this.checkActualSize(), c = this.checkSizeOfPartInClient(); + return s && !c ? this.returnHiddenResult(DC.POSITION) : s ? (this._clientSize = null, { visible: !0 }) : this.returnHiddenResult(DC.SIZE); + } + } + return this.returnHiddenResult(DC.STYLE); + } + return this.returnHiddenResult(eM.UNMOUNTED); + } + return this.returnHiddenResult(eM.INVALID_HTML_ELEMENT); + }), Z(this, "checkElementIsMountedOnDom", (h) => this.checkPropertyUpToAllParentNodes(h, (s) => s.nodeName.toUpperCase() !== "HTML" ? s.parentElement !== null : !!document.documentElement)); + } + }(); + function Cj(h) { + return new TextEncoder().encode(h); + } + const WZ = function(h, s) { + const c = new Uint8Array(h.byteLength + s.byteLength); + return c.set(new Uint8Array(h), 0), c.set(new Uint8Array(s), h.byteLength), c; + }, Mke = (h) => ye(this, null, function* () { + const s = function(T) { + const D = window.atob(T), k = new Uint8Array(new ArrayBuffer(D.length)); + for (let N = 0; N < D.length; N += 1) + k[N] = D.charCodeAt(N); + return k; + }(`MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCMnXAHkKIGAM+x4N22gCI+Wyu +STM9ztkT3uYslTT2PuKmZfPzhH6kVdO7PTjGCOZnAsyb3oTtWat0KcxQ4jxvqQV+ +HvYl3iI1Yd4vl2c3qRMJPLtRDfNxa2Mcxgq7e9aEUibzdd0st+OJAy3tOj/Y0aVy +xQiYDz3vqa6bP29adwIDAQAB`), c = yield window.crypto.subtle.importKey("spki", s, { name: "RSA-OAEP", hash: "SHA-256" }, !0, ["encrypt"]), p = Cj(h), m = yield window.crypto.subtle.encrypt({ name: "RSA-OAEP" }, c, p); + return function(T) { + let D = ""; + for (let k = 0; k < T.length; k += 1) + D += String.fromCharCode(T[k]); + return window.btoa(D); + }(new Uint8Array(m)); + }), Tj = (h) => ye(this, null, function* () { + return function(s, c) { + let p = ""; + return new Uint8Array(s).forEach((m) => { + p += m.toString(c).padStart(2, "0"); + }), p; + }(yield crypto.subtle.digest("SHA-256", Cj(h)), 16); + }); + class Ra { + constructor() { + Z(this, "_events", {}), Z(this, "addListener", this.on); + } + getListeners(s) { + return this._events[s] ? this._events[s].map((c) => c.listener) : []; + } + on(s, c) { + this._events[s] || (this._events[s] = []); + const p = this._events[s]; + this._indexOfListener(p, c) === -1 && p.push({ listener: c, once: !1 }); + } + once(s, c) { + this._events[s] || (this._events[s] = []); + const p = this._events[s]; + this._indexOfListener(p, c) === -1 && p.push({ listener: c, once: !0 }); + } + off(s, c) { + if (!this._events[s]) + return; + const p = this._events[s], m = this._indexOfListener(p, c); + m !== -1 && p.splice(m, 1), this._events[s].length === 0 && delete this._events[s]; + } + removeAllListeners(s) { + s ? delete this._events[s] : this._events = {}; + } + emit(s) { + this._events[s] || (this._events[s] = []); + const c = this._events[s].map((D) => D); + for (var p = arguments.length, m = new Array(p > 1 ? p - 1 : 0), T = 1; T < p; T++) + m[T - 1] = arguments[T]; + for (let D = 0; D < c.length; D += 1) { + const k = c[D]; + k.once && this.off(s, k.listener), k.listener.apply(this, m || []); + } + } + safeEmit(s) { + for (var c = arguments.length, p = new Array(c > 1 ? c - 1 : 0), m = 1; m < c; m++) + p[m - 1] = arguments[m]; + [...this._events[s] || []].forEach((T) => { + T.once && this.off(s, T.listener); + try { + T.listener.apply(this, p); + } catch (D) { + console.error("safeEmit event:".concat(s, " error ").concat(D == null ? void 0 : D.toString())); + } + }); + } + _indexOfListener(s, c) { + let p = s.length; + for (; p--; ) + if (s[p].listener === c) + return p; + return -1; + } + } + let Cx = null; + function GZ() { + if (Cx) + return Cx; + if (window.electron) + return Cx = window.electron; + if (!window.require) + return null; + try { + return Cx = window.require("electron"), Cx; + } catch (h) { + return null; + } + } + var Ao, Na, wj, jn, $n, ys, Dl, tm; + function YZ(h) { + return Wi(h.timeout, "config.timeout", 0, 1e5), Wi(h.timeoutFactor, "config.timeoutFactor", 0, 100, !1), Wi(h.maxRetryCount, "config.maxRetryConfig", 0, 1 / 0), Wi(h.maxRetryTimeout, "config.maxRetryTimeout", 0, 1 / 0), !0; + } + function OC(h) { + if (!Array.isArray(h) || h.length < 1) + return !1; + try { + h.forEach((s) => { + if (!s.urls) + throw Error(); + }); + } catch (s) { + return !1; + } + return !0; + } + function XZ(h) { + return Gs(h.turnServerURL, "turnServerURL"), Gs(h.username, "username"), Gs(h.password, "password"), h.udpport && Wi(h.udpport, "udpport", 1, 99999, !0), h.forceturn && Qv(h.forceturn, "forceturn"), h.security && Qv(h.security, "security"), h.tcpport && Wi(h.tcpport, "tcpport", 1, 99999, !0), !0; + } + function KZ(h) { + return h.level !== void 0 && qo(h.level, "level", [1, 2, 3]), h.delay !== void 0 && Wi(h.delay, "delay", 0, 3e3, !0), !0; + } + function Ro(h, s) { + for (var c = arguments.length, p = new Array(c > 2 ? c - 2 : 0), m = 2; m < c; m++) + p[m - 2] = arguments[m]; + return h.getListeners(s).length === 0 ? ot.reject(new mt(_e.UNEXPECTED_ERROR, "can not emit promise")) : new ot((T, D) => { + h.emit(s, ...p, T, D); + }); + } + function Ji(h, s) { + if (h.getListeners(s).length === 0) + return ot.resolve(); + for (var c = arguments.length, p = new Array(c > 2 ? c - 2 : 0), m = 2; m < c; m++) + p[m - 2] = arguments[m]; + return Ro(h, s, ...p); + } + function pu(h, s) { + if (h.getListeners(s).length === 0) + return null; + for (var c = arguments.length, p = new Array(c > 2 ? c - 2 : 0), m = 2; m < c; m++) + p[m - 2] = arguments[m]; + return SS(h, s, ...p); + } + function SS(h, s) { + let c = null, p = null; + for (var m = arguments.length, T = new Array(m > 2 ? m - 2 : 0), D = 2; D < m; D++) + T[D - 2] = arguments[D]; + if (h.emit(s, ...T, (k) => { + c = k; + }, (k) => { + p = k; + }), p !== null) + throw p; + if (c === null) + throw new mt(_e.UNEXPECTED_ERROR, "handler is not sync"); + return c; + } + (function(h) { + h.CREATE_CLIENT = "createClient", h.CHECK_SYSTEM_REQUIREMENTS = "checkSystemRequirements", h.SET_AREA = "setArea", h.CHECK_VIDEO_TRACK_IS_ACTIVE = "checkVideoTrackIsActive", h.CHECK_AUDIO_TRACK_IS_ACTIVE = "checkAudioTrackIsActive", h.CREATE_MIC_AUDIO_TRACK = "createMicrophoneAudioTrack", h.CREATE_CUSTOM_AUDIO_TRACK = "createCustomAudioTrack", h.CREATE_BUFFER_AUDIO_TRACK = "createBufferSourceAudioTrack", h.CREATE_CAM_VIDEO_TRACK = "createCameraVideoTrack", h.CREATE_CUSTOM_VIDEO_TRACK = "createCustomVideoTrack", h.CREATE_MIC_AND_CAM_TRACKS = "createMicrophoneAndCameraTracks", h.CREATE_SCREEN_VIDEO_TRACK = "createScreenVideoTrack", h.SET_ENCRYPTION_CONFIG = "Client.setEncryptionConfig", h.START_PROXY_SERVER = "Client.startProxyServer", h.STOP_PROXY_SERVER = "Client.stopProxyServer", h.SET_PROXY_SERVER = "Client.setProxyServer", h.SET_TURN_SERVER = "Client.setTurnServer", h.SET_CLIENT_ROLE = "Client.setClientRole", h.SET_LOW_STREAM_PARAMETER = "Client.setLowStreamParameter", h.ENABLE_DUAL_STREAM = "Client.enableDualStream", h.DISABLE_DUAL_STREAM = "Client.disableDualStream", h.JOIN = "Client.join", h.LEAVE = "Client.leave", h.PUBLISH = "Client.publish", h.UNPUBLISH = "Client.unpublish", h.SUBSCRIBE = "Client.subscribe", h.MASS_SUBSCRIBE = "Client.massSubscribe", h.MASS_UNSUBSCRIBE = "Client.massUnsubscribe", h.UNSUBSCRIBE = "Client.unsubscribe", h.RENEW_TOKEN = "Client.renewToken", h.SET_REMOTE_VIDEO_STREAM_TYPE = "Client.setRemoteVideoStreamType", h.SET_STREAM_FALLBACK_OPTION = "Client.setStreamFallbackOption", h.ENABLE_AUDIO_VOLUME_INDICATOR = "Client.enableAudioVolumeIndicator", h.SEND_CUSTOM_REPORT_MESSAGE = "Client.sendCustomReportMessage", h.INSPECT_VIDEO_CONTENT = "Client.inspectVideoContent", h.STOP_INSPECT_VIDEO_CONTENT = "Client.stopInspectVideoContent", h.JOIN_FALLBACK_TO_PROXY = "Client._joinFallbackToProxy", h.DATACHANNEL_FAILBACK = "Client._datachannelFailback", h.ON_LIVE_STREAM_WARNING = "Client.onLiveStreamWarning", h.ON_LIVE_STREAM_ERROR = "Client.onLiveStreamingError", h.START_LIVE_STREAMING = "Client.startLiveStreaming", h.SET_LIVE_TRANSCODING = "Client.setLiveTranscoding", h.STOP_LIVE_STREAMING = "Client.stopLiveStreaming", h.START_CHANNEL_MEDIA_RELAY = "Client.startChannelMediaRelay", h.UPDATE_CHANNEL_MEDIA_RELAY = "Client.updateChannelMediaRelay", h.STOP_CHANNEL_MEDIA_RELAY = "Client.stopChannelMediaRelay", h.REQUEST_CONFIG_DISTRIBUTE = "_config-distribute-request", h.SET_CONFIG_DISTRIBUTE = "_configDistribute", h.LOCAL_TRACK_SET_MUTED = "LocalTrack.setMute", h.LOCAL_AUDIO_TRACK_PLAY = "LocalAudioTrack.play", h.LOCAL_AUDIO_TRACK_PLAY_IN_ELEMENT = "LocalAudioTrack.playInElement", h.LOCAL_AUDIO_TRACK_STOP = "LocalAudioTrack.stop", h.LOCAL_AUDIO_TRACK_SET_VOLUME = "LocalAudioTrack.setVolume", h.MIC_AUDIO_TRACK_SET_DEVICE = "MicrophoneAudioTrack.setDevice", h.BUFFER_AUDIO_TRACK_START = "BufferSourceAudioTrack.startProcessAudioBuffer", h.BUFFER_AUDIO_TRACK_STOP = "BufferSourceAudioTrack.stopProcessAudioBuffer", h.BUFFER_AUDIO_TRACK_PAUSE = "BufferSourceAudioTrack.pauseProcessAudioBuffer", h.BUFFER_AUDIO_TRACK_RESUME = "BufferSourceAudioTrack.resumeProcessAudioBuffer", h.BUFFER_AUDIO_TRACK_SEEK = "BufferSourceAudioTrack.seekAudioBuffer", h.LOCAL_VIDEO_TRACK_PLAY = "LocalVideoTrack.play", h.LOCAL_VIDEO_TRACK_STOP = "LocalVideoTrack.stop", h.LOCAL_VIDEO_TRACK_GET_VIDEO_VISIBLE = "LocalVideoTrack.getVideoElementVisibleStatus", h.LOCAL_VIDEO_TRACK_BEAUTY = "LocalVideoTrack.setBeautyEffect", h.LOCAL_VIDEO_SEND_SEI_DATA = "LocalVideoTrack.sendSeiData", h.CAM_VIDEO_TRACK_SET_DEVICE = "CameraVideoTrack.setDevice", h.CAM_VIDEO_TRACK_SET_ENCODER_CONFIG = "CameraVideoTrack.setEncoderConfiguration", h.REMOTE_VIDEO_TRACK_PLAY = "RemoteVideoTrack.play", h.REMOTE_VIDEO_TRACK_STOP = "RemoteVideoTrack.stop", h.REMOTE_VIDEO_TRACK_GET_VIDEO_VISIBLE = "RemoteVideoTrack.getVideoElementVisibleStatus", h.REMOTE_AUDIO_TRACK_PLAY = "RemoteAudioTrack.play", h.REMOTE_AUDIO_TRACK_STOP = "RemoteAudioTrack.stop", h.REMOTE_AUDIO_SET_VOLUME = "RemoteAudioTrack.setVolume", h.REMOTE_AUDIO_SET_OUTPUT_DEVICE = "RemoteAudioTrack.setOutputDevice", h.GET_MEDIA_STREAM_TRACK = "Track.getMediaStreamTrack", h.STREAM_TYPE_CHANGE = "streamTypeChange", h.CONNECTION_STATE_CHANGE = "connectionStateChange", h.LOAD_CONFIG_FROM_LOCALSTORAGE = "loadConfigFromLocalStorage", h.IMAGE_MODERATION_UPLOAD = "imageModerationUpload"; + })(Ao || (Ao = {})), function(h) { + h.TRACER = "tracer"; + }(Na || (Na = {})), function(h) { + h[h.AUDIENCE_LEVEL_LOW_LATENCY = 1] = "AUDIENCE_LEVEL_LOW_LATENCY", h[h.AUDIENCE_LEVEL_ULTRA_LOW_LATENCY = 2] = "AUDIENCE_LEVEL_ULTRA_LOW_LATENCY", h[h.AUDIENCE_LEVEL_SYNC_LATENCY = 3] = "AUDIENCE_LEVEL_SYNC_LATENCY"; + }(wj || (wj = {})), function(h) { + h.LEAVE = "LEAVE", h.NETWORK_ERROR = "NETWORK_ERROR", h.SERVER_ERROR = "SERVER_ERROR", h.UID_BANNED = "UID_BANNED", h.IP_BANNED = "IP_BANNED", h.CHANNEL_BANNED = "CHANNEL_BANNED", h.FALLBACK = "FALLBACK", h.LICENSE_MISSING = "LICENSE_MISSING", h.LICENSE_EXPIRED = "LICENSE_EXPIRED", h.LICENSE_MINUTES_EXCEEDED = "LICENSE_MINUTES_EXCEEDED", h.LICENSE_PERIOD_INVALID = "LICENSE_PERIOD_INVALID", h.LICENSE_MULTIPLE_SDK_SERVICE = "LICENSE_MULTIPLE_SDK_SERVICE", h.LICENSE_ILLEGAL = "LICENSE_ILLEGAL", h.TOKEN_EXPIRE = "TOKEN_EXPIRE"; + }(jn || (jn = {})), function(h) { + h.CONNECTION_STATE_CHANGE = "connection-state-change", h.MEDIA_RECONNECT_START = "media-reconnect-start", h.MEDIA_RECONNECT_END = "media-reconnect-end", h.IS_USING_CLOUD_PROXY = "is-using-cloud-proxy", h.USER_JOINED = "user-joined", h.USER_LEAVED = "user-left", h.USER_PUBLISHED = "user-published", h.USER_UNPUBLISHED = "user-unpublished", h.USER_INFO_UPDATED = "user-info-updated", h.CLIENT_BANNED = "client-banned", h.CHANNEL_MEDIA_RELAY_STATE = "channel-media-relay-state", h.CHANNEL_MEDIA_RELAY_EVENT = "channel-media-relay-event", h.VOLUME_INDICATOR = "volume-indicator", h.CRYPT_ERROR = "crypt-error", h.ON_TOKEN_PRIVILEGE_WILL_EXPIRE = "token-privilege-will-expire", h.ON_TOKEN_PRIVILEGE_DID_EXPIRE = "token-privilege-did-expire", h.NETWORK_QUALITY = "network-quality", h.STREAM_TYPE_CHANGED = "stream-type-changed", h.STREAM_FALLBACK = "stream-fallback", h.RECEIVE_METADATA = "receive-metadata", h.STREAM_MESSAGE = "stream-message", h.LIVE_STREAMING_ERROR = "live-streaming-error", h.LIVE_STREAMING_WARNING = "live-streaming-warning", h.INJECT_STREAM_STATUS = "stream-inject-status", h.EXCEPTION = "exception", h.ERROR = "error", h.P2P_LOST = "p2p_lost", h.JOIN_FALLBACK_TO_PROXY = "join-fallback-to-proxy", h.CHANNEL_FALLBACK_TO_WEBSOCKET = "channel-fallback-to-websocket", h.MEDIA_CONNECTION_TYPE_CHANGE = "media-connection-type-change", h.PUBLISHED_USER_LIST = "published-user-list", h.CONTENT_INSPECT_CONNECTION_STATE_CHANGE = "content-inspect-connection-state-change", h.CONTENT_INSPECT_ERROR = "content-inspect-error", h.CONTENT_INSPECT_RESULT = "content-inspect-result", h.IMAGE_MODERATION_CONNECTION_STATE_CHANGE = "image-moderation-connection-state-change"; + }($n || ($n = {})), function(h) { + h.NETWORK_ERROR = "NETWORK_ERROR", h.SERVER_ERROR = "SERVER_ERROR", h.MULTI_IP = "MULTI_IP", h.TIMEOUT = "TIMEOUT", h.OFFLINE = "OFFLINE", h.LEAVE = "LEAVE", h.P2P_FAILED = "P2P_FAILED", h.FALLBACK = "FALLBACK"; + }(ys || (ys = {})), function(h) { + h.ONLINE = "ONLINE", h.OFFLINE = "OFFLINE"; + }(Dl || (Dl = {})), function(h) { + h.NETWORK_STATE_CHANGE = "NETWORK_STATE_CHANGE", h.ONLINE = "ONLINE", h.OFFLINE = "OFFLINE"; + }(tm || (tm = {})); + const Do = new class extends Ra { + set networkState(h) { + this.emit(tm.NETWORK_STATE_CHANGE, h, this._networkState), h === Dl.ONLINE ? this.emit(tm.ONLINE) : h === Dl.OFFLINE && (this.onlineWaiter = new ot((s) => { + this.once(tm.ONLINE, () => { + this.onlineWaiter = void 0, s(Dl.ONLINE); + }); + }), this.emit(tm.OFFLINE)), this._networkState = h; + } + get networkState() { + return this._networkState; + } + get isOnline() { + return this._networkState === Dl.ONLINE; + } + constructor() { + super(), Z(this, "_moduleName", "network-indicator"), Z(this, "_networkState", Dl.ONLINE), Z(this, "onlineWaiter", void 0), window.addEventListener("online", () => { + this.networkState = Dl.ONLINE; + }), window.addEventListener("offline", () => { + this.networkState = Dl.OFFLINE; + }); + } + }(); + var kke = Pt, Pke = _r, Nke = we, Lke = au, Fke = TypeError, ZZ = function(h) { + return function(s, c, p, m) { + kke(c); + var T = Pke(s), D = Nke(T), k = Lke(T), N = h ? k - 1 : 0, U = h ? -1 : 1; + if (p < 2) + for (; ; ) { + if (N in D) { + m = D[N], N += U; + break; + } + if (N += U, h ? N < 0 : k <= N) + throw Fke("Reduce of empty array with no initial value"); + } + for (; h ? N >= 0 : k > N; N += U) + N in D && (m = c(m, D[N], N, T)); + return m; + }; + }, Bke = { left: ZZ(!1), right: ZZ(!0) }.left; + ki({ target: "Array", proto: !0, forced: !gx && Dn > 79 && Dn < 83 || !BU("reduce") }, { reduce: function(h) { + var s = arguments.length; + return Bke(this, h, s, s > 1 ? arguments[1] : void 0); + } }); + var Uke = wc("Array").reduce, jke = v, $ke = Uke, Ij = Array.prototype, rm = i(function(h) { + var s = h.reduce; + return h === Ij || jke(Ij, h) && s === Ij.reduce ? $ke : s; + }); + function qZ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function bS(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? qZ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : qZ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function tM(h, s) { + const c = h.indexOf(s); + c !== -1 && h.splice(c, 1); + } + function MC(h) { + const s = []; + return h.forEach((c) => { + s.indexOf(c) === -1 && s.push(c); + }), s; + } + function rM(h) { + ot !== void 0 ? ot.resolve().then(h) : setTimeout(h, 0); + } + function ca(h) { + return JSON.parse(JSON.stringify(h)); + } + function ES(h) { + try { + return ca(h); + } catch (s) { + return h; + } + } + const JZ = {}; + function kC(h, s) { + JZ[s] || (JZ[s] = !0, h()); + } + function Tx(h) { + const s = window.atob(h), c = new Uint8Array(new ArrayBuffer(s.length)); + for (let p = 0; p < s.length; p += 1) + c[p] = s.charCodeAt(p); + return c; + } + function PC(h) { + let s = ""; + for (let c = 0; c < h.length; c += 1) + s += String.fromCharCode(h[c]); + return window.btoa(s); + } + function QZ() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + const p = rm(s).call(s, (D, k) => D + k.length, 0), m = new Uint8Array(new ArrayBuffer(p)); + let T = 0; + return s.forEach((D) => { + m.set(D, T), T += D.length; + }), m; + } + function mg(h) { + return window.TextEncoder ? new TextEncoder().encode(h).length : h.length; + } + function eq(h) { + let s = 0; + return /DingTalk/i.test(navigator.userAgent) && h.realFormData && (h = h.realFormData), h.forEach((c) => { + s += typeof c == "string" ? mg(c) : c.size; + }), s + 138; + } + function Vke(h) { + const s = new mt(_e.TIMEOUT, "timeout"); + return new ot((c, p) => { + window.setTimeout(() => p(s), h); + }); + } + function _s(h) { + return new ot((s) => { + window.setTimeout(s, h); + }); + } + function ra() { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 7, s = arguments.length > 1 ? arguments[1] : void 0; + const c = Math.random().toString(16).substr(2, h).toLowerCase(); + return c.length === h ? "".concat(s).concat(c) : "".concat(s).concat(c) + ra(h - c.length, ""); + } + function xj() { + return ra(32, "").toUpperCase(); + } + const nM = () => { + }, tq = new class { + constructor() { + Z(this, "fnMap", /* @__PURE__ */ new Map()); + } + throttleByKey(h, s, c, p) { + for (var m = arguments.length, T = new Array(m > 4 ? m - 4 : 0), D = 4; D < m; D++) + T[D - 4] = arguments[D]; + if (this.fnMap.has(s)) { + const k = this.fnMap.get(s); + if (k.threshold !== c) { + k.fn(...k.args), clearTimeout(k.timer); + const N = window.setTimeout(() => { + const U = this.fnMap.get(s); + U && U.fn(...U.args), this.fnMap.delete(s); + }, c); + this.fnMap.set(s, { fn: h, threshold: c, timer: N, args: T, skipFn: p }); + } else + k.skipFn && k.skipFn(...k.args), this.fnMap.set(s, bS(bS({}, k), {}, { fn: h, args: T, skipFn: p })); + } else { + const k = window.setTimeout(() => { + const N = this.fnMap.get(s); + N && N.fn(...N.args), this.fnMap.delete(s); + }, c); + this.fnMap.set(s, { fn: h, threshold: c, timer: k, args: T, skipFn: p }); + } + } + }(), rq = tq.throttleByKey.bind(tq); + function nq(h) { + return typeof h == "object" && h !== null && !(h instanceof RegExp); + } + function Aj(h, s) { + if (!nq(h) || !nq(s) || Array.isArray(h) && !Array.isArray(s) || !Array.isArray(h) && Array.isArray(s)) + return s; + if (Array.isArray(s) && Array.isArray(h)) { + const c = [...h]; + for (let p = 0; p < s.length; p++) + c[p] = Aj(h[p], s[p]); + return c; + } + { + const c = bS({}, h); + for (const p in s) + Object.prototype.hasOwnProperty.call(s, p) && (Object.prototype.hasOwnProperty.call(h, p) ? c[p] = Aj(h[p], s[p]) : c[p] = s[p]); + return c; + } + } + function iq(h, s) { + let c = [0]; + if (s && (c = new Array(s).fill(0)), h === 0) + return c; + let p = 0; + for (; h > 0 && (c[p] = 255 & h, h >>= 8, p++, !s || p !== s); ) + ; + return c; + } + let zke = 1, iM = console; + class Ss { + static setLogger(s) { + iM = s; + } + constructor(s) { + Z(this, "lockingPromise", ot.resolve()), Z(this, "locks", 0), Z(this, "name", ""), Z(this, "lockId", void 0), this.lockId = zke++, s && (this.name = s), iM.debug("[lock-".concat(this.name, "-").concat(this.lockId, "] is created.")); + } + get isLocked() { + return this.locks > 0; + } + lock(s) { + let c; + this.locks += 1, iM.debug("[lock-".concat(this.name, "-").concat(this.lockId, "] is locked, current queue ").concat(this.locks, ". ").concat(typeof s == "string" ? s : "")); + const p = new ot((T) => { + c = () => { + this.locks -= 1, iM.debug("[lock-".concat(this.name, "-").concat(this.lockId, "] is not locked, current queue ").concat(this.locks, ". ").concat(typeof s == "string" ? s : "")), T(); + }; + }), m = this.lockingPromise.then(() => c); + return this.lockingPromise = this.lockingPromise.then(() => p), m; + } + } + function NC(h, s) { + return function(c, p, m) { + const T = m.value; + if (typeof T != "function") + throw new Error("Cannot use mutex on object property."); + return m.value = function() { + return ye(this, arguments, function* () { + const D = this[s]; + if (!D) + throw new Error("mutex property key ".concat(s, " doesn't exist on ").concat(h)); + const k = yield D.lock("From ".concat(h, ".").concat(p)); + try { + for (var N = arguments.length, U = new Array(N), V = 0; V < N; V++) + U[V] = arguments[V]; + return yield T.apply(this, U); + } finally { + k(); + } + }); + }, m; + }; + } + const Oo = { timeout: 500, timeoutFactor: 1.5, maxRetryCount: 1 / 0, maxRetryTimeout: 1e4 }; + function aM(h, s) { + const c = Math.floor(s.timeout * Math.pow(s.timeoutFactor, h)); + return Math.min(s.maxRetryTimeout, c); + } + function np(h, s, c, p) { + const m = Object.assign({}, Oo, p); + let T = m.timeout; + const D = () => ye(this, null, function* () { + yield function(U) { + return new ot((V) => { + window.setTimeout(V, U); + }); + }(T), T *= m.timeoutFactor, T = Math.min(m.maxRetryTimeout, T); + }); + let k = !1; + const N = new ot((U, V) => ye(this, null, function* () { + s = s || (() => !1), c = c || (() => !0); + for (let G = 0; G < m.maxRetryCount; G += 1) { + if (k) + return V(new mt(_e.OPERATION_ABORTED)); + try { + const K = yield h(); + if (!s(K, G) || G + 1 === m.maxRetryCount) + return U(K); + yield D(); + } catch (K) { + if (!c(K, G) || G + 1 === m.maxRetryCount) + return V(K); + yield D(); + } + } + })); + return N.cancel = () => k = !0, N; + } + let Rj = class { + constructor(h) { + Z(this, "input", []), Z(this, "size", void 0), this.size = h; + } + add(h) { + this.input.push(h), this.input.length > this.size && this.input.splice(0, 1); + } + mean() { + var h; + return this.input.length === 0 ? 0 : rm(h = this.input).call(h, (s, c) => s + c) / this.input.length; + } + }; + function aq(h, s) { + return function() { + return h.apply(s, arguments); + }; + } + const { toString: Hke } = Object.prototype, { getPrototypeOf: Dj } = Object, oM = (Oj = /* @__PURE__ */ Object.create(null), (h) => { + const s = Hke.call(h); + return Oj[s] || (Oj[s] = s.slice(8, -1).toLowerCase()); + }); + var Oj; + const yg = (h) => (h = h.toLowerCase(), (s) => oM(s) === h), sM = (h) => (s) => typeof s === h, { isArray: LC } = Array, Ix = sM("undefined"), oq = yg("ArrayBuffer"), Wke = sM("string"), Pd = sM("function"), sq = sM("number"), lM = (h) => h !== null && typeof h == "object", cM = (h) => { + if (oM(h) !== "object") + return !1; + const s = Dj(h); + return !(s !== null && s !== Object.prototype && Object.getPrototypeOf(s) !== null || Symbol.toStringTag in h || Symbol.iterator in h); + }, Gke = yg("Date"), Yke = yg("File"), Xke = yg("Blob"), Kke = yg("FileList"), Zke = yg("URLSearchParams"); + function xx(h, s, { allOwnKeys: c = !1 } = {}) { + if (h == null) + return; + let p, m; + if (typeof h != "object" && (h = [h]), LC(h)) + for (p = 0, m = h.length; p < m; p++) + s.call(null, h[p], p, h); + else { + const T = c ? Object.getOwnPropertyNames(h) : Object.keys(h), D = T.length; + let k; + for (p = 0; p < D; p++) + k = T[p], s.call(null, h[k], k, h); + } + } + function lq(h, s) { + s = s.toLowerCase(); + const c = Object.keys(h); + let p, m = c.length; + for (; m-- > 0; ) + if (p = c[m], s === p.toLowerCase()) + return p; + return null; + } + const cq = typeof globalThis != "undefined" ? globalThis : typeof self != "undefined" ? self : typeof window != "undefined" ? window : s1, uq = (h) => !Ix(h) && h !== cq, qke = (Mj = typeof Uint8Array != "undefined" && Dj(Uint8Array), (h) => Mj && h instanceof Mj); + var Mj; + const Jke = yg("HTMLFormElement"), hq = (({ hasOwnProperty: h }) => (s, c) => h.call(s, c))(Object.prototype), Qke = yg("RegExp"), dq = (h, s) => { + const c = Object.getOwnPropertyDescriptors(h), p = {}; + xx(c, (m, T) => { + let D; + (D = s(m, T, h)) !== !1 && (p[T] = D || m); + }), Object.defineProperties(h, p); + }, kj = "abcdefghijklmnopqrstuvwxyz", fq = "0123456789", pq = { DIGIT: fq, ALPHA: kj, ALPHA_DIGIT: kj + kj.toUpperCase() + fq }, ePe = yg("AsyncFunction"); + var dr = { isArray: LC, isArrayBuffer: oq, isBuffer: function(h) { + return h !== null && !Ix(h) && h.constructor !== null && !Ix(h.constructor) && Pd(h.constructor.isBuffer) && h.constructor.isBuffer(h); + }, isFormData: (h) => { + let s; + return h && (typeof FormData == "function" && h instanceof FormData || Pd(h.append) && ((s = oM(h)) === "formdata" || s === "object" && Pd(h.toString) && h.toString() === "[object FormData]")); + }, isArrayBufferView: function(h) { + let s; + return s = typeof ArrayBuffer != "undefined" && ArrayBuffer.isView ? ArrayBuffer.isView(h) : h && h.buffer && oq(h.buffer), s; + }, isString: Wke, isNumber: sq, isBoolean: (h) => h === !0 || h === !1, isObject: lM, isPlainObject: cM, isUndefined: Ix, isDate: Gke, isFile: Yke, isBlob: Xke, isRegExp: Qke, isFunction: Pd, isStream: (h) => lM(h) && Pd(h.pipe), isURLSearchParams: Zke, isTypedArray: qke, isFileList: Kke, forEach: xx, merge: function h() { + const { caseless: s } = uq(this) && this || {}, c = {}, p = (m, T) => { + const D = s && lq(c, T) || T; + cM(c[D]) && cM(m) ? c[D] = h(c[D], m) : cM(m) ? c[D] = h({}, m) : LC(m) ? c[D] = m.slice() : c[D] = m; + }; + for (let m = 0, T = arguments.length; m < T; m++) + arguments[m] && xx(arguments[m], p); + return c; + }, extend: (h, s, c, { allOwnKeys: p } = {}) => (xx(s, (m, T) => { + c && Pd(m) ? h[T] = aq(m, c) : h[T] = m; + }, { allOwnKeys: p }), h), trim: (h) => h.trim ? h.trim() : h.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""), stripBOM: (h) => (h.charCodeAt(0) === 65279 && (h = h.slice(1)), h), inherits: (h, s, c, p) => { + h.prototype = Object.create(s.prototype, p), h.prototype.constructor = h, Object.defineProperty(h, "super", { value: s.prototype }), c && Object.assign(h.prototype, c); + }, toFlatObject: (h, s, c, p) => { + let m, T, D; + const k = {}; + if (s = s || {}, h == null) + return s; + do { + for (m = Object.getOwnPropertyNames(h), T = m.length; T-- > 0; ) + D = m[T], p && !p(D, h, s) || k[D] || (s[D] = h[D], k[D] = !0); + h = c !== !1 && Dj(h); + } while (h && (!c || c(h, s)) && h !== Object.prototype); + return s; + }, kindOf: oM, kindOfTest: yg, endsWith: (h, s, c) => { + h = String(h), (c === void 0 || c > h.length) && (c = h.length), c -= s.length; + const p = h.indexOf(s, c); + return p !== -1 && p === c; + }, toArray: (h) => { + if (!h) + return null; + if (LC(h)) + return h; + let s = h.length; + if (!sq(s)) + return null; + const c = new Array(s); + for (; s-- > 0; ) + c[s] = h[s]; + return c; + }, forEachEntry: (h, s) => { + const c = (h && h[Symbol.iterator]).call(h); + let p; + for (; (p = c.next()) && !p.done; ) { + const m = p.value; + s.call(h, m[0], m[1]); + } + }, matchAll: (h, s) => { + let c; + const p = []; + for (; (c = h.exec(s)) !== null; ) + p.push(c); + return p; + }, isHTMLForm: Jke, hasOwnProperty: hq, hasOwnProp: hq, reduceDescriptors: dq, freezeMethods: (h) => { + dq(h, (s, c) => { + if (Pd(h) && ["arguments", "caller", "callee"].indexOf(c) !== -1) + return !1; + const p = h[c]; + Pd(p) && (s.enumerable = !1, "writable" in s ? s.writable = !1 : s.set || (s.set = () => { + throw Error("Can not rewrite read-only method '" + c + "'"); + })); + }); + }, toObjectSet: (h, s) => { + const c = {}, p = (m) => { + m.forEach((T) => { + c[T] = !0; + }); + }; + return LC(h) ? p(h) : p(String(h).split(s)), c; + }, toCamelCase: (h) => h.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function(s, c, p) { + return c.toUpperCase() + p; + }), noop: () => { + }, toFiniteNumber: (h, s) => (h = +h, Number.isFinite(h) ? h : s), findKey: lq, global: cq, isContextDefined: uq, ALPHABET: pq, generateString: (h = 16, s = pq.ALPHA_DIGIT) => { + let c = ""; + const { length: p } = s; + for (; h--; ) + c += s[Math.random() * p | 0]; + return c; + }, isSpecCompliantForm: function(h) { + return !!(h && Pd(h.append) && h[Symbol.toStringTag] === "FormData" && h[Symbol.iterator]); + }, toJSONObject: (h) => { + const s = new Array(10), c = (p, m) => { + if (lM(p)) { + if (s.indexOf(p) >= 0) + return; + if (!("toJSON" in p)) { + s[m] = p; + const T = LC(p) ? [] : {}; + return xx(p, (D, k) => { + const N = c(D, m + 1); + !Ix(N) && (T[k] = N); + }), s[m] = void 0, T; + } + } + return p; + }; + return c(h, 0); + }, isAsyncFn: ePe, isThenable: (h) => h && (lM(h) || Pd(h)) && Pd(h.then) && Pd(h.catch) }; + function La(h, s, c, p, m) { + Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack, this.message = h, this.name = "AxiosError", s && (this.code = s), c && (this.config = c), p && (this.request = p), m && (this.response = m); + } + dr.inherits(La, Error, { toJSON: function() { + return { message: this.message, name: this.name, description: this.description, number: this.number, fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, config: dr.toJSONObject(this.config), code: this.code, status: this.response && this.response.status ? this.response.status : null }; + } }); + const gq = La.prototype, vq = {}; + ["ERR_BAD_OPTION_VALUE", "ERR_BAD_OPTION", "ECONNABORTED", "ETIMEDOUT", "ERR_NETWORK", "ERR_FR_TOO_MANY_REDIRECTS", "ERR_DEPRECATED", "ERR_BAD_RESPONSE", "ERR_BAD_REQUEST", "ERR_CANCELED", "ERR_NOT_SUPPORT", "ERR_INVALID_URL"].forEach((h) => { + vq[h] = { value: h }; + }), Object.defineProperties(La, vq), Object.defineProperty(gq, "isAxiosError", { value: !0 }), La.from = (h, s, c, p, m, T) => { + const D = Object.create(gq); + return dr.toFlatObject(h, D, function(k) { + return k !== Error.prototype; + }, (k) => k !== "isAxiosError"), La.call(D, h.message, s, c, p, m), D.cause = h, D.name = h.name, T && Object.assign(D, T), D; + }; + function Pj(h) { + return dr.isPlainObject(h) || dr.isArray(h); + } + function mq(h) { + return dr.endsWith(h, "[]") ? h.slice(0, -2) : h; + } + function yq(h, s, c) { + return h ? h.concat(s).map(function(p, m) { + return p = mq(p), !c && m ? "[" + p + "]" : p; + }).join(c ? "." : "") : s; + } + const tPe = dr.toFlatObject(dr, {}, null, function(h) { + return /^is[A-Z]/.test(h); + }); + function uM(h, s, c) { + if (!dr.isObject(h)) + throw new TypeError("target must be an object"); + s = s || new FormData(); + const p = (c = dr.toFlatObject(c, { metaTokens: !0, dots: !1, indexes: !1 }, !1, function(K, q) { + return !dr.isUndefined(q[K]); + })).metaTokens, m = c.visitor || U, T = c.dots, D = c.indexes, k = (c.Blob || typeof Blob != "undefined" && Blob) && dr.isSpecCompliantForm(s); + if (!dr.isFunction(m)) + throw new TypeError("visitor must be a function"); + function N(K) { + if (K === null) + return ""; + if (dr.isDate(K)) + return K.toISOString(); + if (!k && dr.isBlob(K)) + throw new La("Blob is not supported. Use a Buffer instead."); + return dr.isArrayBuffer(K) || dr.isTypedArray(K) ? k && typeof Blob == "function" ? new Blob([K]) : Buffer.from(K) : K; + } + function U(K, q, ue) { + let oe = K; + if (K && !ue && typeof K == "object") { + if (dr.endsWith(q, "{}")) + q = p ? q : q.slice(0, -2), K = JSON.stringify(K); + else if (dr.isArray(K) && function(he) { + return dr.isArray(he) && !he.some(Pj); + }(K) || (dr.isFileList(K) || dr.endsWith(q, "[]")) && (oe = dr.toArray(K))) + return q = mq(q), oe.forEach(function(he, Ce) { + !dr.isUndefined(he) && he !== null && s.append(D === !0 ? yq([q], Ce, T) : D === null ? q : q + "[]", N(he)); + }), !1; + } + return !!Pj(K) || (s.append(yq(ue, q, T), N(K)), !1); + } + const V = [], G = Object.assign(tPe, { defaultVisitor: U, convertValue: N, isVisitable: Pj }); + if (!dr.isObject(h)) + throw new TypeError("data must be an object"); + return function K(q, ue) { + if (!dr.isUndefined(q)) { + if (V.indexOf(q) !== -1) + throw Error("Circular reference detected in " + ue.join(".")); + V.push(q), dr.forEach(q, function(oe, he) { + (!(dr.isUndefined(oe) || oe === null) && m.call(s, oe, dr.isString(he) ? he.trim() : he, ue, G)) === !0 && K(oe, ue ? ue.concat(he) : [he]); + }), V.pop(); + } + }(h), s; + } + function _q(h) { + const s = { "!": "%21", "'": "%27", "(": "%28", ")": "%29", "~": "%7E", "%20": "+", "%00": "\0" }; + return encodeURIComponent(h).replace(/[!'()~]|%20|%00/g, function(c) { + return s[c]; + }); + } + function Nj(h, s) { + this._pairs = [], h && uM(h, this, s); + } + const Sq = Nj.prototype; + function rPe(h) { + return encodeURIComponent(h).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); + } + function bq(h, s, c) { + if (!s) + return h; + const p = c && c.encode || rPe, m = c && c.serialize; + let T; + if (T = m ? m(s, c) : dr.isURLSearchParams(s) ? s.toString() : new Nj(s, c).toString(p), T) { + const D = h.indexOf("#"); + D !== -1 && (h = h.slice(0, D)), h += (h.indexOf("?") === -1 ? "?" : "&") + T; + } + return h; + } + Sq.append = function(h, s) { + this._pairs.push([h, s]); + }, Sq.toString = function(h) { + const s = h ? function(c) { + return h.call(this, c, _q); + } : _q; + return this._pairs.map(function(c) { + return s(c[0]) + "=" + s(c[1]); + }, "").join("&"); + }; + var Eq = class { + constructor() { + this.handlers = []; + } + use(h, s, c) { + return this.handlers.push({ fulfilled: h, rejected: s, synchronous: !!c && c.synchronous, runWhen: c ? c.runWhen : null }), this.handlers.length - 1; + } + eject(h) { + this.handlers[h] && (this.handlers[h] = null); + } + clear() { + this.handlers && (this.handlers = []); + } + forEach(h) { + dr.forEach(this.handlers, function(s) { + s !== null && h(s); + }); + } + }, Cq = { silentJSONParsing: !0, forcedJSONParsing: !0, clarifyTimeoutError: !1 }, nPe = { isBrowser: !0, classes: { URLSearchParams: typeof URLSearchParams != "undefined" ? URLSearchParams : Nj, FormData: typeof FormData != "undefined" ? FormData : null, Blob: typeof Blob != "undefined" ? Blob : null }, protocols: ["http", "https", "file", "blob", "url", "data"] }; + const Tq = typeof window != "undefined" && typeof document != "undefined", iPe = (wq = typeof navigator != "undefined" && navigator.product, Tq && ["ReactNative", "NativeScript", "NS"].indexOf(wq) < 0); + var wq; + const aPe = typeof WorkerGlobalScope != "undefined" && self instanceof WorkerGlobalScope && typeof self.importScripts == "function"; + var _g = br(br({}, Object.freeze({ __proto__: null, hasBrowserEnv: Tq, hasStandardBrowserEnv: iPe, hasStandardBrowserWebWorkerEnv: aPe })), nPe); + function Iq(h) { + function s(c, p, m, T) { + let D = c[T++]; + if (D === "__proto__") + return !0; + const k = Number.isFinite(+D), N = T >= c.length; + return D = !D && dr.isArray(m) ? m.length : D, N ? (dr.hasOwnProp(m, D) ? m[D] = [m[D], p] : m[D] = p, !k) : (m[D] && dr.isObject(m[D]) || (m[D] = []), s(c, p, m[D], T) && dr.isArray(m[D]) && (m[D] = function(U) { + const V = {}, G = Object.keys(U); + let K; + const q = G.length; + let ue; + for (K = 0; K < q; K++) + ue = G[K], V[ue] = U[ue]; + return V; + }(m[D])), !k); + } + if (dr.isFormData(h) && dr.isFunction(h.entries)) { + const c = {}; + return dr.forEachEntry(h, (p, m) => { + s(function(T) { + return dr.matchAll(/\w+|\[(\w*)]/g, T).map((D) => D[0] === "[]" ? "" : D[1] || D[0]); + }(p), m, c, 0); + }), c; + } + return null; + } + const Lj = { transitional: Cq, adapter: ["xhr", "http"], transformRequest: [function(h, s) { + const c = s.getContentType() || "", p = c.indexOf("application/json") > -1, m = dr.isObject(h); + if (m && dr.isHTMLForm(h) && (h = new FormData(h)), dr.isFormData(h)) + return p ? JSON.stringify(Iq(h)) : h; + if (dr.isArrayBuffer(h) || dr.isBuffer(h) || dr.isStream(h) || dr.isFile(h) || dr.isBlob(h)) + return h; + if (dr.isArrayBufferView(h)) + return h.buffer; + if (dr.isURLSearchParams(h)) + return s.setContentType("application/x-www-form-urlencoded;charset=utf-8", !1), h.toString(); + let T; + if (m) { + if (c.indexOf("application/x-www-form-urlencoded") > -1) + return function(D, k) { + return uM(D, new _g.classes.URLSearchParams(), Object.assign({ visitor: function(N, U, V, G) { + return _g.isNode && dr.isBuffer(N) ? (this.append(U, N.toString("base64")), !1) : G.defaultVisitor.apply(this, arguments); + } }, k)); + }(h, this.formSerializer).toString(); + if ((T = dr.isFileList(h)) || c.indexOf("multipart/form-data") > -1) { + const D = this.env && this.env.FormData; + return uM(T ? { "files[]": h } : h, D && new D(), this.formSerializer); + } + } + return m || p ? (s.setContentType("application/json", !1), function(D, k, N) { + if (dr.isString(D)) + try { + return (k || JSON.parse)(D), dr.trim(D); + } catch (U) { + if (U.name !== "SyntaxError") + throw U; + } + return (N || JSON.stringify)(D); + }(h)) : h; + }], transformResponse: [function(h) { + const s = this.transitional || Lj.transitional, c = s && s.forcedJSONParsing, p = this.responseType === "json"; + if (h && dr.isString(h) && (c && !this.responseType || p)) { + const m = !(s && s.silentJSONParsing) && p; + try { + return JSON.parse(h); + } catch (T) { + if (m) + throw T.name === "SyntaxError" ? La.from(T, La.ERR_BAD_RESPONSE, this, null, this.response) : T; + } + } + return h; + }], timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", maxContentLength: -1, maxBodyLength: -1, env: { FormData: _g.classes.FormData, Blob: _g.classes.Blob }, validateStatus: function(h) { + return h >= 200 && h < 300; + }, headers: { common: { Accept: "application/json, text/plain, */*", "Content-Type": void 0 } } }; + dr.forEach(["delete", "get", "head", "post", "put", "patch"], (h) => { + Lj.headers[h] = {}; + }); + var Fj = Lj; + const oPe = dr.toObjectSet(["age", "authorization", "content-length", "content-type", "etag", "expires", "from", "host", "if-modified-since", "if-unmodified-since", "last-modified", "location", "max-forwards", "proxy-authorization", "referer", "retry-after", "user-agent"]), xq = Symbol("internals"); + function Ax(h) { + return h && String(h).trim().toLowerCase(); + } + function hM(h) { + return h === !1 || h == null ? h : dr.isArray(h) ? h.map(hM) : String(h); + } + function Bj(h, s, c, p, m) { + return dr.isFunction(p) ? p.call(this, s, c) : (m && (s = c), dr.isString(s) ? dr.isString(p) ? s.indexOf(p) !== -1 : dr.isRegExp(p) ? p.test(s) : void 0 : void 0); + } + class dM { + constructor(s) { + s && this.set(s); + } + set(s, c, p) { + const m = this; + function T(k, N, U) { + const V = Ax(N); + if (!V) + throw new Error("header name must be a non-empty string"); + const G = dr.findKey(m, V); + (!G || m[G] === void 0 || U === !0 || U === void 0 && m[G] !== !1) && (m[G || N] = hM(k)); + } + const D = (k, N) => dr.forEach(k, (U, V) => T(U, V, N)); + return dr.isPlainObject(s) || s instanceof this.constructor ? D(s, c) : dr.isString(s) && (s = s.trim()) && !/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(s.trim()) ? D(((k) => { + const N = {}; + let U, V, G; + return k && k.split(` +`).forEach(function(K) { + G = K.indexOf(":"), U = K.substring(0, G).trim().toLowerCase(), V = K.substring(G + 1).trim(), !U || N[U] && oPe[U] || (U === "set-cookie" ? N[U] ? N[U].push(V) : N[U] = [V] : N[U] = N[U] ? N[U] + ", " + V : V); + }), N; + })(s), c) : s != null && T(c, s, p), this; + } + get(s, c) { + if (s = Ax(s)) { + const p = dr.findKey(this, s); + if (p) { + const m = this[p]; + if (!c) + return m; + if (c === !0) + return function(T) { + const D = /* @__PURE__ */ Object.create(null), k = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let N; + for (; N = k.exec(T); ) + D[N[1]] = N[2]; + return D; + }(m); + if (dr.isFunction(c)) + return c.call(this, m, p); + if (dr.isRegExp(c)) + return c.exec(m); + throw new TypeError("parser must be boolean|regexp|function"); + } + } + } + has(s, c) { + if (s = Ax(s)) { + const p = dr.findKey(this, s); + return !(!p || this[p] === void 0 || c && !Bj(0, this[p], p, c)); + } + return !1; + } + delete(s, c) { + const p = this; + let m = !1; + function T(D) { + if (D = Ax(D)) { + const k = dr.findKey(p, D); + !k || c && !Bj(0, p[k], k, c) || (delete p[k], m = !0); + } + } + return dr.isArray(s) ? s.forEach(T) : T(s), m; + } + clear(s) { + const c = Object.keys(this); + let p = c.length, m = !1; + for (; p--; ) { + const T = c[p]; + s && !Bj(0, this[T], T, s, !0) || (delete this[T], m = !0); + } + return m; + } + normalize(s) { + const c = this, p = {}; + return dr.forEach(this, (m, T) => { + const D = dr.findKey(p, T); + if (D) + return c[D] = hM(m), void delete c[T]; + const k = s ? function(N) { + return N.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (U, V, G) => V.toUpperCase() + G); + }(T) : String(T).trim(); + k !== T && delete c[T], c[k] = hM(m), p[k] = !0; + }), this; + } + concat(...s) { + return this.constructor.concat(this, ...s); + } + toJSON(s) { + const c = /* @__PURE__ */ Object.create(null); + return dr.forEach(this, (p, m) => { + p != null && p !== !1 && (c[m] = s && dr.isArray(p) ? p.join(", ") : p); + }), c; + } + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + toString() { + return Object.entries(this.toJSON()).map(([s, c]) => s + ": " + c).join(` +`); + } + get [Symbol.toStringTag]() { + return "AxiosHeaders"; + } + static from(s) { + return s instanceof this ? s : new this(s); + } + static concat(s, ...c) { + const p = new this(s); + return c.forEach((m) => p.set(m)), p; + } + static accessor(s) { + const c = (this[xq] = this[xq] = { accessors: {} }).accessors, p = this.prototype; + function m(T) { + const D = Ax(T); + c[D] || (function(k, N) { + const U = dr.toCamelCase(" " + N); + ["get", "set", "has"].forEach((V) => { + Object.defineProperty(k, V + U, { value: function(G, K, q) { + return this[V].call(this, N, G, K, q); + }, configurable: !0 }); + }); + }(p, T), c[D] = !0); + } + return dr.isArray(s) ? s.forEach(m) : m(s), this; + } + } + dM.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]), dr.reduceDescriptors(dM.prototype, ({ value: h }, s) => { + let c = s[0].toUpperCase() + s.slice(1); + return { get: () => h, set(p) { + this[c] = p; + } }; + }), dr.freezeMethods(dM); + var nm = dM; + function Uj(h, s) { + const c = this || Fj, p = s || c, m = nm.from(p.headers); + let T = p.data; + return dr.forEach(h, function(D) { + T = D.call(c, T, m.normalize(), s ? s.status : void 0); + }), m.normalize(), T; + } + function Aq(h) { + return !(!h || !h.__CANCEL__); + } + function Rx(h, s, c) { + La.call(this, h == null ? "canceled" : h, La.ERR_CANCELED, s, c), this.name = "CanceledError"; + } + dr.inherits(Rx, La, { __CANCEL__: !0 }); + var sPe = _g.hasStandardBrowserEnv ? { write(h, s, c, p, m, T) { + const D = [h + "=" + encodeURIComponent(s)]; + dr.isNumber(c) && D.push("expires=" + new Date(c).toGMTString()), dr.isString(p) && D.push("path=" + p), dr.isString(m) && D.push("domain=" + m), T === !0 && D.push("secure"), document.cookie = D.join("; "); + }, read(h) { + const s = document.cookie.match(new RegExp("(^|;\\s*)(" + h + ")=([^;]*)")); + return s ? decodeURIComponent(s[3]) : null; + }, remove(h) { + this.write(h, "", Date.now() - 864e5); + } } : { write() { + }, read: () => null, remove() { + } }; + function Rq(h, s) { + return h && !function(c) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(c); + }(s) ? function(c, p) { + return p ? c.replace(/\/?\/$/, "") + "/" + p.replace(/^\/+/, "") : c; + }(h, s) : s; + } + var lPe = _g.hasStandardBrowserEnv ? function() { + const h = /(msie|trident)/i.test(navigator.userAgent), s = document.createElement("a"); + let c; + function p(m) { + let T = m; + return h && (s.setAttribute("href", T), T = s.href), s.setAttribute("href", T), { href: s.href, protocol: s.protocol ? s.protocol.replace(/:$/, "") : "", host: s.host, search: s.search ? s.search.replace(/^\?/, "") : "", hash: s.hash ? s.hash.replace(/^#/, "") : "", hostname: s.hostname, port: s.port, pathname: s.pathname.charAt(0) === "/" ? s.pathname : "/" + s.pathname }; + } + return c = p(window.location.href), function(m) { + const T = dr.isString(m) ? p(m) : m; + return T.protocol === c.protocol && T.host === c.host; + }; + }() : function() { + return !0; + }; + function Dq(h, s) { + let c = 0; + const p = function(m, T) { + m = m || 10; + const D = new Array(m), k = new Array(m); + let N, U = 0, V = 0; + return T = T !== void 0 ? T : 1e3, function(G) { + const K = Date.now(), q = k[V]; + N || (N = K), D[U] = G, k[U] = K; + let ue = V, oe = 0; + for (; ue !== U; ) + oe += D[ue++], ue %= m; + if (U = (U + 1) % m, U === V && (V = (V + 1) % m), K - N < T) + return; + const he = q && K - q; + return he ? Math.round(1e3 * oe / he) : void 0; + }; + }(50, 250); + return (m) => { + const T = m.loaded, D = m.lengthComputable ? m.total : void 0, k = T - c, N = p(k); + c = T; + const U = { loaded: T, total: D, progress: D ? T / D : void 0, bytes: k, rate: N || void 0, estimated: N && D && T <= D ? (D - T) / N : void 0, event: m }; + U[s ? "download" : "upload"] = !0, h(U); + }; + } + var cPe = typeof XMLHttpRequest != "undefined" && function(h) { + return new Promise(function(s, c) { + let p = h.data; + const m = nm.from(h.headers).normalize(); + let T, D, { responseType: k, withXSRFToken: N } = h; + function U() { + h.cancelToken && h.cancelToken.unsubscribe(T), h.signal && h.signal.removeEventListener("abort", T); + } + if (dr.isFormData(p)) { + if (_g.hasStandardBrowserEnv || _g.hasStandardBrowserWebWorkerEnv) + m.setContentType(!1); + else if ((D = m.getContentType()) !== !1) { + const [ue, ...oe] = D ? D.split(";").map((he) => he.trim()).filter(Boolean) : []; + m.setContentType([ue || "multipart/form-data", ...oe].join("; ")); + } + } + let V = new XMLHttpRequest(); + if (h.auth) { + const ue = h.auth.username || "", oe = h.auth.password ? unescape(encodeURIComponent(h.auth.password)) : ""; + m.set("Authorization", "Basic " + btoa(ue + ":" + oe)); + } + const G = Rq(h.baseURL, h.url); + function K() { + if (!V) + return; + const ue = nm.from("getAllResponseHeaders" in V && V.getAllResponseHeaders()); + (function(oe, he, Ce) { + const ke = Ce.config.validateStatus; + Ce.status && ke && !ke(Ce.status) ? he(new La("Request failed with status code " + Ce.status, [La.ERR_BAD_REQUEST, La.ERR_BAD_RESPONSE][Math.floor(Ce.status / 100) - 4], Ce.config, Ce.request, Ce)) : oe(Ce); + })(function(oe) { + s(oe), U(); + }, function(oe) { + c(oe), U(); + }, { data: k && k !== "text" && k !== "json" ? V.response : V.responseText, status: V.status, statusText: V.statusText, headers: ue, config: h, request: V }), V = null; + } + if (V.open(h.method.toUpperCase(), bq(G, h.params, h.paramsSerializer), !0), V.timeout = h.timeout, "onloadend" in V ? V.onloadend = K : V.onreadystatechange = function() { + V && V.readyState === 4 && (V.status !== 0 || V.responseURL && V.responseURL.indexOf("file:") === 0) && setTimeout(K); + }, V.onabort = function() { + V && (c(new La("Request aborted", La.ECONNABORTED, h, V)), V = null); + }, V.onerror = function() { + c(new La("Network Error", La.ERR_NETWORK, h, V)), V = null; + }, V.ontimeout = function() { + let ue = h.timeout ? "timeout of " + h.timeout + "ms exceeded" : "timeout exceeded"; + const oe = h.transitional || Cq; + h.timeoutErrorMessage && (ue = h.timeoutErrorMessage), c(new La(ue, oe.clarifyTimeoutError ? La.ETIMEDOUT : La.ECONNABORTED, h, V)), V = null; + }, _g.hasStandardBrowserEnv && (N && dr.isFunction(N) && (N = N(h)), N || N !== !1 && lPe(G))) { + const ue = h.xsrfHeaderName && h.xsrfCookieName && sPe.read(h.xsrfCookieName); + ue && m.set(h.xsrfHeaderName, ue); + } + p === void 0 && m.setContentType(null), "setRequestHeader" in V && dr.forEach(m.toJSON(), function(ue, oe) { + V.setRequestHeader(oe, ue); + }), dr.isUndefined(h.withCredentials) || (V.withCredentials = !!h.withCredentials), k && k !== "json" && (V.responseType = h.responseType), typeof h.onDownloadProgress == "function" && V.addEventListener("progress", Dq(h.onDownloadProgress, !0)), typeof h.onUploadProgress == "function" && V.upload && V.upload.addEventListener("progress", Dq(h.onUploadProgress)), (h.cancelToken || h.signal) && (T = (ue) => { + V && (c(!ue || ue.type ? new Rx(null, h, V) : ue), V.abort(), V = null); + }, h.cancelToken && h.cancelToken.subscribe(T), h.signal && (h.signal.aborted ? T() : h.signal.addEventListener("abort", T))); + const q = function(ue) { + const oe = /^([-+\w]{1,25})(:?\/\/|:)/.exec(ue); + return oe && oe[1] || ""; + }(G); + q && _g.protocols.indexOf(q) === -1 ? c(new La("Unsupported protocol " + q + ":", La.ERR_BAD_REQUEST, h)) : V.send(p || null); + }); + }; + const jj = { http: null, xhr: cPe }; + dr.forEach(jj, (h, s) => { + if (h) { + try { + Object.defineProperty(h, "name", { value: s }); + } catch (c) { + } + Object.defineProperty(h, "adapterName", { value: s }); + } + }); + const Oq = (h) => `- ${h}`, uPe = (h) => dr.isFunction(h) || h === null || h === !1; + var Mq = { getAdapter: (h) => { + h = dr.isArray(h) ? h : [h]; + const { length: s } = h; + let c, p; + const m = {}; + for (let T = 0; T < s; T++) { + let D; + if (c = h[T], p = c, !uPe(c) && (p = jj[(D = String(c)).toLowerCase()], p === void 0)) + throw new La(`Unknown adapter '${D}'`); + if (p) + break; + m[D || "#" + T] = p; + } + if (!p) { + const T = Object.entries(m).map(([D, k]) => `adapter ${D} ` + (k === !1 ? "is not supported by the environment" : "is not available in the build")); + throw new La("There is no suitable adapter to dispatch the request " + (s ? T.length > 1 ? `since : +` + T.map(Oq).join(` +`) : " " + Oq(T[0]) : "as no adapter specified"), "ERR_NOT_SUPPORT"); + } + return p; + }, adapters: jj }; + function $j(h) { + if (h.cancelToken && h.cancelToken.throwIfRequested(), h.signal && h.signal.aborted) + throw new Rx(null, h); + } + function kq(h) { + return $j(h), h.headers = nm.from(h.headers), h.data = Uj.call(h, h.transformRequest), ["post", "put", "patch"].indexOf(h.method) !== -1 && h.headers.setContentType("application/x-www-form-urlencoded", !1), Mq.getAdapter(h.adapter || Fj.adapter)(h).then(function(s) { + return $j(h), s.data = Uj.call(h, h.transformResponse, s), s.headers = nm.from(s.headers), s; + }, function(s) { + return Aq(s) || ($j(h), s && s.response && (s.response.data = Uj.call(h, h.transformResponse, s.response), s.response.headers = nm.from(s.response.headers))), Promise.reject(s); + }); + } + const Pq = (h) => h instanceof nm ? h.toJSON() : h; + function FC(h, s) { + s = s || {}; + const c = {}; + function p(U, V, G) { + return dr.isPlainObject(U) && dr.isPlainObject(V) ? dr.merge.call({ caseless: G }, U, V) : dr.isPlainObject(V) ? dr.merge({}, V) : dr.isArray(V) ? V.slice() : V; + } + function m(U, V, G) { + return dr.isUndefined(V) ? dr.isUndefined(U) ? void 0 : p(void 0, U, G) : p(U, V, G); + } + function T(U, V) { + if (!dr.isUndefined(V)) + return p(void 0, V); + } + function D(U, V) { + return dr.isUndefined(V) ? dr.isUndefined(U) ? void 0 : p(void 0, U) : p(void 0, V); + } + function k(U, V, G) { + return G in s ? p(U, V) : G in h ? p(void 0, U) : void 0; + } + const N = { url: T, method: T, data: T, baseURL: D, transformRequest: D, transformResponse: D, paramsSerializer: D, timeout: D, timeoutMessage: D, withCredentials: D, withXSRFToken: D, adapter: D, responseType: D, xsrfCookieName: D, xsrfHeaderName: D, onUploadProgress: D, onDownloadProgress: D, decompress: D, maxContentLength: D, maxBodyLength: D, beforeRedirect: D, transport: D, httpAgent: D, httpsAgent: D, cancelToken: D, socketPath: D, responseEncoding: D, validateStatus: k, headers: (U, V) => m(Pq(U), Pq(V), !0) }; + return dr.forEach(Object.keys(Object.assign({}, h, s)), function(U) { + const V = N[U] || m, G = V(h[U], s[U], U); + dr.isUndefined(G) && V !== k || (c[U] = G); + }), c; + } + const Nq = "1.6.7", Vj = {}; + ["object", "boolean", "number", "function", "string", "symbol"].forEach((h, s) => { + Vj[h] = function(c) { + return typeof c === h || "a" + (s < 1 ? "n " : " ") + h; + }; + }); + const Lq = {}; + Vj.transitional = function(h, s, c) { + function p(m, T) { + return "[Axios v" + Nq + "] Transitional option '" + m + "'" + T + (c ? ". " + c : ""); + } + return (m, T, D) => { + if (h === !1) + throw new La(p(T, " has been removed" + (s ? " in " + s : "")), La.ERR_DEPRECATED); + return s && !Lq[T] && (Lq[T] = !0, console.warn(p(T, " has been deprecated since v" + s + " and will be removed in the near future"))), !h || h(m, T, D); + }; + }; + var zj = { assertOptions: function(h, s, c) { + if (typeof h != "object") + throw new La("options must be an object", La.ERR_BAD_OPTION_VALUE); + const p = Object.keys(h); + let m = p.length; + for (; m-- > 0; ) { + const T = p[m], D = s[T]; + if (D) { + const k = h[T], N = k === void 0 || D(k, T, h); + if (N !== !0) + throw new La("option " + T + " must be " + N, La.ERR_BAD_OPTION_VALUE); + } else if (c !== !0) + throw new La("Unknown option " + T, La.ERR_BAD_OPTION); + } + }, validators: Vj }; + const qy = zj.validators; + let fM = class { + constructor(h) { + this.defaults = h, this.interceptors = { request: new Eq(), response: new Eq() }; + } + request(h, s) { + return ye(this, null, function* () { + try { + return yield this._request(h, s); + } catch (c) { + if (c instanceof Error) { + let p; + Error.captureStackTrace ? Error.captureStackTrace(p = {}) : p = new Error(); + const m = p.stack ? p.stack.replace(/^.+\n/, "") : ""; + c.stack ? m && !String(c.stack).endsWith(m.replace(/^.+\n.+\n/, "")) && (c.stack += ` +` + m) : c.stack = m; + } + throw c; + } + }); + } + _request(h, s) { + typeof h == "string" ? (s = s || {}).url = h : s = h || {}, s = FC(this.defaults, s); + const { transitional: c, paramsSerializer: p, headers: m } = s; + c !== void 0 && zj.assertOptions(c, { silentJSONParsing: qy.transitional(qy.boolean), forcedJSONParsing: qy.transitional(qy.boolean), clarifyTimeoutError: qy.transitional(qy.boolean) }, !1), p != null && (dr.isFunction(p) ? s.paramsSerializer = { serialize: p } : zj.assertOptions(p, { encode: qy.function, serialize: qy.function }, !0)), s.method = (s.method || this.defaults.method || "get").toLowerCase(); + let T = m && dr.merge(m.common, m[s.method]); + m && dr.forEach(["delete", "get", "head", "post", "put", "patch", "common"], (q) => { + delete m[q]; + }), s.headers = nm.concat(T, m); + const D = []; + let k = !0; + this.interceptors.request.forEach(function(q) { + typeof q.runWhen == "function" && q.runWhen(s) === !1 || (k = k && q.synchronous, D.unshift(q.fulfilled, q.rejected)); + }); + const N = []; + let U; + this.interceptors.response.forEach(function(q) { + N.push(q.fulfilled, q.rejected); + }); + let V, G = 0; + if (!k) { + const q = [kq.bind(this), void 0]; + for (q.unshift.apply(q, D), q.push.apply(q, N), V = q.length, U = Promise.resolve(s); G < V; ) + U = U.then(q[G++], q[G++]); + return U; + } + V = D.length; + let K = s; + for (G = 0; G < V; ) { + const q = D[G++], ue = D[G++]; + try { + K = q(K); + } catch (oe) { + ue.call(this, oe); + break; + } + } + try { + U = kq.call(this, K); + } catch (q) { + return Promise.reject(q); + } + for (G = 0, V = N.length; G < V; ) + U = U.then(N[G++], N[G++]); + return U; + } + getUri(h) { + return bq(Rq((h = FC(this.defaults, h)).baseURL, h.url), h.params, h.paramsSerializer); + } + }; + dr.forEach(["delete", "get", "head", "options"], function(h) { + fM.prototype[h] = function(s, c) { + return this.request(FC(c || {}, { method: h, url: s, data: (c || {}).data })); + }; + }), dr.forEach(["post", "put", "patch"], function(h) { + function s(c) { + return function(p, m, T) { + return this.request(FC(T || {}, { method: h, headers: c ? { "Content-Type": "multipart/form-data" } : {}, url: p, data: m })); + }; + } + fM.prototype[h] = s(), fM.prototype[h + "Form"] = s(!0); + }); + var pM = fM; + class Hj { + constructor(s) { + if (typeof s != "function") + throw new TypeError("executor must be a function."); + let c; + this.promise = new Promise(function(m) { + c = m; + }); + const p = this; + this.promise.then((m) => { + if (!p._listeners) + return; + let T = p._listeners.length; + for (; T-- > 0; ) + p._listeners[T](m); + p._listeners = null; + }), this.promise.then = (m) => { + let T; + const D = new Promise((k) => { + p.subscribe(k), T = k; + }).then(m); + return D.cancel = function() { + p.unsubscribe(T); + }, D; + }, s(function(m, T, D) { + p.reason || (p.reason = new Rx(m, T, D), c(p.reason)); + }); + } + throwIfRequested() { + if (this.reason) + throw this.reason; + } + subscribe(s) { + this.reason ? s(this.reason) : this._listeners ? this._listeners.push(s) : this._listeners = [s]; + } + unsubscribe(s) { + if (!this._listeners) + return; + const c = this._listeners.indexOf(s); + c !== -1 && this._listeners.splice(c, 1); + } + static source() { + let s; + return { token: new Hj(function(c) { + s = c; + }), cancel: s }; + } + } + var hPe = Hj; + const Wj = { Continue: 100, SwitchingProtocols: 101, Processing: 102, EarlyHints: 103, Ok: 200, Created: 201, Accepted: 202, NonAuthoritativeInformation: 203, NoContent: 204, ResetContent: 205, PartialContent: 206, MultiStatus: 207, AlreadyReported: 208, ImUsed: 226, MultipleChoices: 300, MovedPermanently: 301, Found: 302, SeeOther: 303, NotModified: 304, UseProxy: 305, Unused: 306, TemporaryRedirect: 307, PermanentRedirect: 308, BadRequest: 400, Unauthorized: 401, PaymentRequired: 402, Forbidden: 403, NotFound: 404, MethodNotAllowed: 405, NotAcceptable: 406, ProxyAuthenticationRequired: 407, RequestTimeout: 408, Conflict: 409, Gone: 410, LengthRequired: 411, PreconditionFailed: 412, PayloadTooLarge: 413, UriTooLong: 414, UnsupportedMediaType: 415, RangeNotSatisfiable: 416, ExpectationFailed: 417, ImATeapot: 418, MisdirectedRequest: 421, UnprocessableEntity: 422, Locked: 423, FailedDependency: 424, TooEarly: 425, UpgradeRequired: 426, PreconditionRequired: 428, TooManyRequests: 429, RequestHeaderFieldsTooLarge: 431, UnavailableForLegalReasons: 451, InternalServerError: 500, NotImplemented: 501, BadGateway: 502, ServiceUnavailable: 503, GatewayTimeout: 504, HttpVersionNotSupported: 505, VariantAlsoNegotiates: 506, InsufficientStorage: 507, LoopDetected: 508, NotExtended: 510, NetworkAuthenticationRequired: 511 }; + Object.entries(Wj).forEach(([h, s]) => { + Wj[s] = h; + }); + var dPe = Wj; + const sl = function h(s) { + const c = new pM(s), p = aq(pM.prototype.request, c); + return dr.extend(p, pM.prototype, c, { allOwnKeys: !0 }), dr.extend(p, c, null, { allOwnKeys: !0 }), p.create = function(m) { + return h(FC(s, m)); + }, p; + }(Fj); + sl.Axios = pM, sl.CanceledError = Rx, sl.CancelToken = hPe, sl.isCancel = Aq, sl.VERSION = Nq, sl.toFormData = uM, sl.AxiosError = La, sl.Cancel = sl.CanceledError, sl.all = function(h) { + return Promise.all(h); + }, sl.spread = function(h) { + return function(s) { + return h.apply(null, s); + }; + }, sl.isAxiosError = function(h) { + return dr.isObject(h) && h.isAxiosError === !0; + }, sl.mergeConfig = FC, sl.AxiosHeaders = nm, sl.formToJSON = (h) => Iq(dr.isHTMLForm(h) ? new FormData(h) : h), sl.getAdapter = Mq.getAdapter, sl.HttpStatusCode = dPe, sl.default = sl; + var Pc = sl; + function Fq(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Bq(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Fq(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Fq(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + let gM, vM = 0, Gj = 0; + function Yj(h, s, c, p) { + return new ot((m, T) => { + s.responseType = s.responseType || "json", s.data && !c ? (s.data = JSON.stringify(s.data), vM += mg(s.data)) : c && (s.data.size ? vM += s.data.size : s.data instanceof FormData ? vM += eq(s.data) : vM += mg(JSON.stringify(s.data))), s.headers = s.headers || {}, s.headers["Content-Type"] = s.headers["Content-Type"] || "application/json", s.method = "POST", s.url = h, Pc.request(s).then((D) => { + typeof D.data == "string" ? Gj += mg(D.data) : D.data instanceof ArrayBuffer || D.data instanceof Uint8Array ? Gj += D.data.byteLength : Gj += mg(JSON.stringify(D.data)), p && m({ data: D.data, headers: D.headers }), m(D.data); + }).catch((D) => { + Pc.isCancel(D) ? T(new mt(_e.OPERATION_ABORTED, "cancel token canceled")) : D.code === "ECONNABORTED" ? T(new mt(_e.NETWORK_TIMEOUT, D.message)) : D.response ? T(new mt(_e.NETWORK_RESPONSE_ERROR, D.response.status)) : T(new mt(_e.NETWORK_ERROR, D.message)); + }); + }); + } + function fPe(h, s) { + return ye(this, null, function* () { + const c = new Blob([s.data], { type: "buffer" }); + return yield Yj(h, Bq(Bq({}, s), {}, { data: c, headers: { "Content-Type": "application/octet-stream" } }), !0); + }); + } + const pPe = () => (gM || gM || (gM = (window.location.protocol.split(":")[0] || "").toUpperCase(), gM)) === "HTTPS", Uq = () => window.isSecureContext !== void 0, Gh = function(h) { + if (h.match(/[0-9]+\.[0-9]+\.[0-9]+$/)) + return h; + const s = h.match(/([0-9]+\.[0-9]+\.[0-9]+)\-alpha\.([0-9]+)/); + if (s && s[1] && s[2]) { + const p = s[1], m = s[2]; + return "".concat(p, ".").concat(m); + } + const c = h.match(/([0-9]+\.[0-9]+\.[0-9]+)\-special\.([0-9]+)/); + if (c && c[1] && c[2]) { + const p = c[1], m = c[2]; + return "".concat(p, ".").concat(100 * (Number(m) + 1)); + } + return "4.0.0.999"; + }("4.20.2"), Xj = function() { + try { + return JSON.parse("true") === !0; + } catch (h) { + return !0; + } + }(); + var im; + (function(h) { + h.Default = "default", h.Auto = "auto", h.Relay = "relay", h.SdRtn = "sd-rtn"; + })(im || (im = {})); + const Kj = "v4.20.2-0-g8ae7fdad(3/20/2024, 4:48:46 PM)", Ol = { PROCESS_ID: "", ENCRYPT_AES: !0, AREAS: ["CHINA", "GLOBAL"], WEBCS_DOMAIN: ["webrtc2-ap-web-1.agora.io", "webrtc2-2.ap.sd-rtn.com"], WEBCS_DOMAIN_BACKUP_LIST: ["webrtc2-ap-web-3.agora.io", "webrtc2-4.ap.sd-rtn.com"], PROXY_CS: ["ap-proxy-1.agora.io", "ap-proxy-2.agora.io"], CDS_AP: ["cds-ap-web-1.agora.io", "cds-web-2.ap.sd-rtn.com", "cds-ap-web-3.agora.io", "cds-web-4.ap.sd-rtn.com"], ACCOUNT_REGISTER: ["sua-ap-web-1.agora.io", "sua-web-2.ap.sd-rtn.com", "sua-ap-web-3.agora.io", "sua-web-4.ap.sd-rtn.com"], UAP_AP: ["uap-ap-web-1.agora.io", "uap-web-2.ap.sd-rtn.com", "uap-ap-web-3.agora.io", "uap-web-4.ap.sd-rtn.com"], LOG_UPLOAD_SERVER: "logservice.agora.io", EVENT_REPORT_DOMAIN: "statscollector-1.agora.io", EVENT_REPORT_BACKUP_DOMAIN: "web-2.statscollector.sd-rtn.com", ENABLE_EVENT_REPORT: !0, GATEWAY_ADDRESS: [], GATEWAY_WSS_ADDRESS: "", LIVE_STREAMING_ADDRESS: "", HTTP_CONNECT_TIMEOUT: 5e3, SIGNAL_REQUEST_TIMEOUT: 1e4, REPORT_STATS: !0, UPLOAD_LOG: !1, NOT_REPORT_EVENT: [], SUBSCRIBE_TWCC: !1, PUBLISH_TWCC: !1, PING_PONG_TIME_OUT: 10, WEBSOCKET_TIMEOUT_MIN: 1e4, EVENT_REPORT_SEND_INTERVAL: 3e3, CONFIG_DISTRIBUTE_INTERVAL: 3e5, ENABLE_CONFIG_DISTRIBUTE: !0, CANDIDATE_TIMEOUT: 5e3, SHOW_REPORT_INVOKER_LOG: !1, JOIN_EXTEND: "", PUB_EXTEND: "", SUB_EXTEND: "", FORCE_TURN: !1, TURN_ENABLE_TCP: !0, TURN_ENABLE_UDP: !0, MAX_UPLOAD_CACHE: 50, UPLOAD_CACHE_INTERVAL: 2e3, AJAX_REQUEST_CONCURRENT: 3, REPORT_APP_SCENARIO: void 0, GATEWAY_DOMAINS: ["edge.agora.io", "edge.sd-rtn.com"], CONNECT_GATEWAY_WITHOUT_DOMAIN: !1, WORKER_DOMAIN: "edge.agora.io", TURN_DOMAIN: "edge.agora.io", EVENT_REPORT_RETRY: !0, CHROME_FORCE_PLAN_B: !1, AUDIO_SOURCE_VOLUME_UPDATE_INTERVAL: 400, AUDIO_SOURCE_AVG_VOLUME_DURATION: 3e3, AUDIO_VOLUME_INDICATION_INTERVAL: 2e3, VOLUME_VOICE_WEIGHT: 10, GET_VOLUME_OF_MUTED_AUDIO_TRACK: !1, STATS_UPDATE_INTERVAL: 250, NORMAL_EVENT_QUEUE_CAPACITY: 100, CUSTOM_REPORT: !0, CUSTOM_REPORT_LIMIT: 20, PROXY_SERVER_TYPE2: "webnginx-proxy.agora.io", PROXY_SERVER_TYPE3: ["webrtc-cloud-proxy.sd-rtn.com", "webrtc-cloud-proxy.agora.io"], CUSTOM_PUB_ANSWER_MODIFIER: null, CUSTOM_SUB_ANSWER_MODIFIER: null, CUSTOM_PUB_OFFER_MODIFIER: null, CUSTOM_SUB_OFFER_MODIFIER: null, DSCP_TYPE: "high", REMOVE_NEW_CODECS: !0, FRAGEMENT_LENGTH: 3, WEBSOCKET_COMPRESS: !1, SIMULCAST: !1, PRELOAD_MEDIA_COUNT: 0, USE_PUB_RTX: !1, USE_SUB_RTX: !1, CHECK_VIDEO_VISIBLE_INTERVAL: 3e4, CHECK_LOCAL_STATS_INTERVAL: 100, PROFILE_SWITCH_INTERVAL: 2e3, UNSUPPORTED_VIDEO_CODEC: [], ENUMERATE_DEVICES_INTERVAL: !1, ENUMERATE_DEVICES_INTERVAL_TIME: 1e4, USE_NEW_TOKEN: !1, CLOSE_AFB_FOR_LOCAL_AP: !0, JOIN_MAX_CONCURRENCY: 6, JOIN_WITH_FALLBACK_SIGNAL_PROXY: !0, JOIN_WITH_FALLBACK_MEDIA_PROXY: !0, JOIN_WITH_FALLBACK_MEDIA_PROXY_FORCE: !1, JOIN_GATEWAY_TRY_443PORT_DURATION: 2e3, JOIN_GATEWAY_USE_443PORT_ONLY: !1, JOIN_GATEWAY_USE_DUAL_DOMAIN: !0, JOIN_GATEWAY_FALLBACK_PORT: 443, USE_TURN_SERVER_OF_GATEWAY: !1, H264_PROFILE_LEVEL_ID: "", USE_NEW_LOG: !1, LOG_VERSION: 3, MEDIA_DEVICE_CONSTRAINTS: null, ENCRYPT_PROXY_USERNAME_AND_PSW: !0, SDP_LOGGING: !1, CSP_DETECTED_HOSTNAME_LIST: ["agora.io", "sd-rtn.com"], REMOTE_AUDIO_TRACK_USES_WEB_AUDIO: !1, LOCAL_AUDIO_TRACK_USES_WEB_AUDIO: !1, BITRATE_ADAPTER_TYPE: "STANDARD_BITRATE", AI_DENOISER_PARAMETERS: { excludedLinks: [] }, ADJUST_3A_FROM_PLUGINS: !0, RAISE_H264_BASELINE_PRIORITY: !0, FILTER_SEND_H264_BASELINE: !1, ENABLE_PUBLISHED_USER_LIST: !0, MAX_SUBSCRIPTION: 50, X_GOOGLE_START_BITRATE: void 0, NEW_REPORT_SERVER: !1, NEW_REPORT_SERVER_DOMAINS: ["data-reporting.agora.io", "data-reporting.agora.io"], VIDEO_INSPECT_WORKER_MESSAGE_LENGTH_LIMIT: 3e5, VIDEO_INSPECT_INTERVAL_MINIMUM: 1e3, VIDEO_INSPECT_QUALITY_RATIO: 0.9, VIDEO_INSPECT_WORKER_MANAGER_HOST: "edge.agora.io", VIDEO_INSPECT_WORKER_MANAGER_PORT: "", VIDEO_INSPECT_WORKER_PORT: "", SHOW_VIDEO_INSPECT_WORKER_MESSAGE: !1, STATS_COLLECTOR_PORT: 443, FORCE_TURN_TCP: !1, SUBSCRIBE_AUDIO_FILTER_TOPN: void 0, ENABLE_PUBLISH_AUDIO_FILTER: void 0, DISABLE_FEC: void 0, WEBAUDIO_INIT_OPTIONS: void 0, FILTER_VIDEO_FEC: !0, FILTER_AUDIO_FEC: !1, CHROME_DUAL_STREAM_USE_ENCODING: !0, DISABLE_DUAL_STREAM_USE_ENCODING: !1, EXTENSION_USAGE_UPLOAD_INTERVAL: 1e4, ICE_RESTART: !0, ICE_RESTART_INTERVAL: 1e4, NEW_ICE_RESTART: !1, ENABLE_USER_LICENSE_CHECK: !0, SIGNAL_CHANNEL: 0, TRANSMITTER_INITIAL_RTT: 30, TRANSMITTER_INITIAL_RTO: 30, TRANSMITTER_MAX_BATCH_ACK_COUNT: 2, TRANSMITTER_MAX_RTO: 500, DATACHANNEL_COMPRESS: !1, FINGERPRINT: null, DC_JOIN_WITH_FAILBACK: 5e3, ENABLE_VIDEO_FRAME_CALLBACK: !0, VIDEO_FREEZE_DURATION: 500, SPATIALIZER_PARAMETERS: {}, UPLOAD_LOG_INTERVAL: 3e3, UPLOAD_LOG_REQUEST_RETRY_INTERVAL: 2e3, UPLOAD_LOG_REQUEST_MAX_RETRY_INTERVAL: 2e4, UPLOAD_LOG_TRY_INTERVAL_WHILE_OFF: 5e3, UPLOAD_LOG_RETRY_INTERVAL_V1: 1e4, UPLOAD_LOG_TWICE_RETRY_INTERVAL_V1: 200, UPLOAD_LOG_LENGTH_EACH_TIME: 10, APP_TYPE: 0, DISABLE_WEBAUDIO: !1, CHANNEL_MEDIA_RELAY_SERVERS: void 0, KEEP_LAST_FRAME: !0, FORWARD_P2P_CREATION: !0, SYNC_GROUP: !0, BLOCK_LOCAL_CLIENT: !1, AP_AREA: !0, SVC: [], ENABLE_ENCODED_TRANSFORM: !1, ENABLE_VIDEO_SEI: !1, IMAGE_MODERATION_WORKER_HOST: "edge.agora.io", IMAGE_MODERATION_WORKER_MESSAGE_LENGTH_LIMIT: 3e5, IMAGE_MODERATION_INTERVAL_MINIMUM: 1e3, SHOW_IMAGE_MODERATION_WORKER_MESSAGE: !1, IMAGE_MODERATION_QUALITY_RATIO: 0.9, IMAGE_MODERATION_UPLOAD_REPORT_INTERVAL: 5e3, SHOW_GLOBAL_CLIENT_LIST: !1, ENABLE_DATASTREAM_2: !1, DATASTREAM_MAX_RETRANSMITS: 10, ENABLE_USER_AUTO_REBALANCE_CHECK: !0, ENABLE_INSTANT_VIDEO: !1, ENABLE_NTP_REPORT: !1, USE_XR: !1, TCP_CANDIDATE_ONLY: !1, EXTERNAL_SIGNAL_REQUEST_TIMEOUT: 3e3, SHOW_P2P_LOG: !1, MAX_P2P_TIMEOUT: 3e4, P2P_TOKEN_INTERVAL: 1e3, SHOW_DATASTREAM2_LOG: !1, RESTRICTION_SET_PLAYBACK_DEVICE: !0, USE_PURE_ENCRYPTION_MASTER_KEY: !1, ACCOUNT_REGISTER_RETRY_TIMEOUT: 1, ACCOUNT_REGISTER_RETRY_RATIO: 2, ACCOUNT_REGISTER_RETRY_TIMEOUT_MAX: 6e4, ACCOUNT_REGISTER_RETRY_COUNT_MAX: 1e5, AUDIO_CONTEXT: null, WEBCS_BACKUP_CONNECT_TIMEOUT: 6e3, PLAYER_STATE_DEFER: 2e3, SIGNAL_REQUEST_WATCH_INTERVAL: 1e3, FILEPATH_LENMAX: 255, DUALSTREAM_OPERATION_CHECK: !0, MEDIA_ELEMENT_EXISTS_DEPTH: 3, SHIM_CANDIDATE: !1, LEAVE_MSG_TIMEOUT: 2e3, STATS_FILTER: { transportId: !0, googTrackId: !0 }, FILTER_VIDEO_CODEC: [], PLUGIN_INFO: [] }; + function Gi(h, s, c) { + var p, m; + rr(p = Object.keys(Ol)).call(p, h) && (!c && rr(m = Object.keys(Jy)).call(m, h) || (Ol[h] = s, h === "ENABLE_VIDEO_SEI" && s === !0 && (Ol.ENABLE_ENCODED_TRANSFORM = !0))); + } + function Le(h) { + return Ol[h]; + } + const Jy = {}; + function jq(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Sr(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? jq(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : jq(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + var kn; + (function(h) { + h.SET_SESSION_ID = "SET_SESSION_ID", h.SET_P2P_ID = "SET_P2P_id", h.SET_DC_ID = "SET_DC_id", h.SET_UID = "SET_UID", h.SET_INT_UID = "SET_INT_UID", h.SET_PUB_ID = "SET_PUB_ID", h.SET_CLOUD_PROXY_SERVER_MODE = "SET_CLOUD_PROXY_SERVER_MODE", h.KEY_METRIC_CLIENT_CREATED = "KEY_METRIC_CLIENT_CREATED", h.KEY_METRIC_JOIN_START = "KEY_METRIC_JOIN_START", h.AVOID_JOIN_START = "AVOID_JOIN_START", h.KEY_METRIC_JOIN_END = "KEY_METRIC_JOIN_END", h.KEY_METRIC_REQUEST_AP_START = "KEY_METRIC_REQUEST_AP_START", h.KEY_METRIC_REQUEST_AP_END = "KEY_METRIC_REQUEST_AP_END", h.KEY_METRIC_JOIN_GATEWAY_START = "KEY_METRIC_JOIN_GATEWAY_START", h.KEY_METRIC_JOIN_GATEWAY_END = "KEY_METRIC_JOIN_GATEWAY_END", h.KEY_METRIC_PEER_CONNECTION_START = "KEY_METRIC_PEER_CONNECTION_START", h.KEY_METRIC_PEER_CONNECTION_END = "KEY_METRIC_PEER_CONNECTION_END", h.KEY_METRIC_DESCRIPTION_START = "KEY_METRIC_DESCRIPTION_START", h.KEY_METRIC_ICE_CONNECTION_END = "KEY_METRIC_ICE_CONNECTION_END", h.KEY_METRIC_SIGNAL_CHANNEL_OPEN = "KEY_METRIC_SIGNAL_CHANNEL_OPEN", h.KEY_METRIC_PUBLISH = "KEY_METRIC_PUBLISH", h.KEY_METRIC_SUBSCRIBE = "KEY_METRIC_SUBSCRIBE", h.RECORD_JOIN_CHANNEL_SERVICE = "RECORD_JOIN_CHANNEL_SERVICE", h.RESET_JOIN_CHANNEL_SERVICE_RECORDS = "RESET_JOIN_CHANNEL_SERVICE_RECORDS", h.RESET_KEY_METRICS = "RESET_KEY_METRICS", h.SET_USE_DATACHANNEL = "SET_USE_DATACHANNEL", h.SET_USE_P2P = "SET_USE_P2P", h.SET_TRANSPORT_TYPE = "SET_TRANSPORT_TYPE"; + })(kn || (kn = {})); + class gPe { + constructor(s, c, p, m) { + Z(this, "state", void 0), this.state = { codec: s, audioCodec: c, mode: p, clientId: m, sessionId: null, p2pId: 0, dcId: 0, pubId: 0, subId: 0, avoidJoinStart: 0, keyMetrics: { publish: [], subscribe: [] }, joinChannelServiceRecords: [], cloudProxyServerMode: "disabled", useDataChannel: !1, useP2P: !1, p2pTransport: im.Default }; + } + dispatch(s) { + this.state = function(c, p) { + switch (p.type) { + case kn.SET_SESSION_ID: + return Sr(Sr({}, c), {}, { sessionId: p.sessionId }); + case kn.SET_P2P_ID: + return Sr(Sr({}, c), {}, { p2pId: p.p2pId }); + case kn.SET_UID: + return Sr(Sr({}, c), {}, { uid: p.uid }); + case kn.SET_INT_UID: + return Sr(Sr({}, c), {}, { intUid: p.intUid }); + case kn.SET_PUB_ID: + return Sr(Sr({}, c), {}, { pubId: p.pubId }); + case kn.KEY_METRIC_CLIENT_CREATED: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { clientCreated: p.metric }) }); + case kn.KEY_METRIC_JOIN_START: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { joinStart: p.metric }) }); + case kn.AVOID_JOIN_START: + return Sr(Sr({}, c), {}, { avoidJoinStart: p.avoidJoinStart }); + case kn.KEY_METRIC_JOIN_END: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { joinEnd: p.metric }) }); + case kn.KEY_METRIC_REQUEST_AP_START: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { requestAPStart: p.metric }) }); + case kn.KEY_METRIC_REQUEST_AP_END: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { requestAPEnd: p.metric }) }); + case kn.KEY_METRIC_JOIN_GATEWAY_START: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { joinGatewayStart: p.metric }) }); + case kn.KEY_METRIC_JOIN_GATEWAY_END: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { joinGatewayEnd: p.metric }) }); + case kn.KEY_METRIC_PEER_CONNECTION_START: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { peerConnectionStart: p.metric }) }); + case kn.KEY_METRIC_PEER_CONNECTION_END: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { peerConnectionEnd: p.metric }) }); + case kn.KEY_METRIC_DESCRIPTION_START: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { descriptionStart: p.metric }) }); + case kn.KEY_METRIC_SIGNAL_CHANNEL_OPEN: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { signalChannelOpen: p.metric }) }); + case kn.KEY_METRIC_ICE_CONNECTION_END: + return Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { iceConnectionEnd: p.metric }) }); + case kn.KEY_METRIC_PUBLISH: { + const m = c.keyMetrics.publish, T = m.findIndex((D) => D.trackId === p.metric.trackId); + return T !== -1 ? (m[T] = Sr(Sr({}, m[T]), p.metric), Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { publish: [...m] }) })) : Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { publish: [...c.keyMetrics.publish, p.metric] }) }); + } + case kn.KEY_METRIC_SUBSCRIBE: { + const m = c.keyMetrics.subscribe, T = m.findIndex((D) => D.userId === p.metric.userId && D.type === p.metric.type); + return T !== -1 ? (m[T] = Sr(Sr({}, m[T]), p.metric), Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { subscribe: [...m] }) })) : Sr(Sr({}, c), {}, { keyMetrics: Sr(Sr({}, c.keyMetrics), {}, { subscribe: [...c.keyMetrics.subscribe, p.metric] }) }); + } + case kn.SET_CLOUD_PROXY_SERVER_MODE: + return c.cloudProxyServerMode = p.mode, c; + case kn.RECORD_JOIN_CHANNEL_SERVICE: + return typeof p.index != "number" ? c.joinChannelServiceRecords = [...c.joinChannelServiceRecords, p.record] : (c.joinChannelServiceRecords[p.index] = Sr(Sr({}, c.joinChannelServiceRecords[p.index]), p.record), c.joinChannelServiceRecords = [...c.joinChannelServiceRecords]), c; + case kn.RESET_JOIN_CHANNEL_SERVICE_RECORDS: + return c.joinChannelServiceRecords = [], c; + case kn.RESET_KEY_METRICS: + return c.keyMetrics = { publish: [], subscribe: [] }, c; + case kn.SET_USE_DATACHANNEL: + return Sr(Sr({}, c), {}, { useDataChannel: p.val }); + case kn.SET_USE_P2P: + return Sr(Sr({}, c), {}, { useP2P: p.val }); + case kn.SET_TRANSPORT_TYPE: + return Sr(Sr({}, c), {}, { p2pTransport: p.val }); + default: + return c; + } + }(this.state, s); + } + set sessionId(s) { + this.dispatch({ type: kn.SET_SESSION_ID, sessionId: s }); + } + get sessionId() { + return this.state.sessionId; + } + set codec(s) { + this.state.codec = s; + } + get codec() { + return this.state.codec; + } + get mode() { + return this.state.mode; + } + get audioCodec() { + return this.state.audioCodec; + } + get clientId() { + return this.state.clientId; + } + set p2pId(s) { + this.dispatch({ type: kn.SET_P2P_ID, p2pId: s }); + } + get p2pId() { + return this.state.p2pId; + } + set dcId(s) { + this.dispatch({ type: kn.SET_DC_ID, dcId: s }); + } + get dcId() { + return this.state.dcId; + } + set uid(s) { + this.dispatch({ type: kn.SET_UID, uid: s }); + } + get uid() { + return this.state.uid; + } + set intUid(s) { + this.dispatch({ type: kn.SET_INT_UID, intUid: s }); + } + get intUid() { + return this.state.intUid; + } + set pubId(s) { + this.dispatch({ type: kn.SET_PUB_ID, pubId: s }); + } + get pubId() { + return this.state.pubId; + } + set cloudProxyServerMode(s) { + this.dispatch({ type: kn.SET_CLOUD_PROXY_SERVER_MODE, mode: s }); + } + get cloudProxyServerMode() { + return this.state.cloudProxyServerMode; + } + set useDataChannel(s) { + this.dispatch({ type: kn.SET_USE_DATACHANNEL, val: s }); + } + get useDataChannel() { + return this.state.useDataChannel; + } + set useP2P(s) { + this.dispatch({ type: kn.SET_USE_P2P, val: s }); + } + get useP2P() { + return this.state.useP2P; + } + set p2pTransport(s) { + this.dispatch({ type: kn.SET_TRANSPORT_TYPE, val: s }); + } + get p2pTransport() { + return this.state.p2pTransport; + } + clientCreated() { + this.dispatch({ type: kn.KEY_METRIC_CLIENT_CREATED, metric: Date.now() }); + } + joinStart() { + this.dispatch({ type: kn.KEY_METRIC_JOIN_START, metric: Date.now() }); + } + joinEnd() { + this.dispatch({ type: kn.KEY_METRIC_JOIN_END, metric: Date.now() }); + } + requestAPStart() { + this.dispatch({ type: kn.KEY_METRIC_REQUEST_AP_START, metric: Date.now() }); + } + requestAPEnd() { + this.dispatch({ type: kn.KEY_METRIC_REQUEST_AP_END, metric: Date.now() }); + } + joinGatewayStart() { + this.dispatch({ type: kn.KEY_METRIC_JOIN_GATEWAY_START, metric: Date.now() }); + } + joinGatewayEnd() { + this.dispatch({ type: kn.KEY_METRIC_JOIN_GATEWAY_END, metric: Date.now() }); + } + peerConnectionStart() { + this.dispatch({ type: kn.KEY_METRIC_PEER_CONNECTION_START, metric: Date.now() }); + } + peerConnectionEnd() { + this.dispatch({ type: kn.KEY_METRIC_PEER_CONNECTION_END, metric: Date.now() }); + } + descriptionStart() { + this.dispatch({ type: kn.KEY_METRIC_DESCRIPTION_START, metric: Date.now() }); + } + signalChannelOpen() { + this.dispatch({ type: kn.KEY_METRIC_SIGNAL_CHANNEL_OPEN, metric: Date.now() }); + } + iceConnectionEnd() { + this.dispatch({ type: kn.KEY_METRIC_ICE_CONNECTION_END, metric: Date.now() }); + } + publish(s, c, p, m) { + this.dispatch({ type: kn.KEY_METRIC_PUBLISH, metric: Sr(Sr({ trackId: s, type: c }, p && { publishStart: p }), m && { publishEnd: m }) }); + } + subscribe(s, c, p, m, T, D, k) { + this.dispatch({ type: kn.KEY_METRIC_SUBSCRIBE, metric: Sr(Sr(Sr(Sr(Sr({ userId: s, type: c }, p && { subscribeStart: p }), m && { subscribeEnd: m }), T && { firstFrame: T }), D && { streamAdded: D }), k && { firstDecoded: k }) }); + } + massSubscribe(s, c, p, m) { + s.forEach((T) => { + this.dispatch({ type: kn.KEY_METRIC_SUBSCRIBE, metric: Sr(Sr(Sr({ userId: T.userId, type: T.type }, c && { subscribeStart: c }), p && { subscribeEnd: p }), m && { firstFrame: m }) }); + }); + } + get keyMetrics() { + return this.state.keyMetrics; + } + recordJoinChannelService(s, c) { + s.service === "gateway" && Array.isArray(s.urls) && (s.urls = s.urls.map((p) => p.replace(/(\d+)-\d+-\d+-(\d+)/, "$1-*-*-$2"))); + try { + return typeof c != "number" ? (this.dispatch({ type: kn.RECORD_JOIN_CHANNEL_SERVICE, record: Sr(Sr({}, s), {}, { sessionId: this.sessionId, cloudProxyMode: this.cloudProxyServerMode, uid: this.uid }) }), this.state.joinChannelServiceRecords.length - 1) : (c < 0 || c >= this.state.joinChannelServiceRecords.length || this.dispatch({ type: kn.RECORD_JOIN_CHANNEL_SERVICE, record: s, index: c }), c); + } catch (p) { + return 0; + } + } + resetJoinChannelServiceRecords() { + this.dispatch({ type: kn.RESET_JOIN_CHANNEL_SERVICE_RECORDS }); + } + resetKeyMetrics() { + this.dispatch({ type: kn.RESET_KEY_METRICS }); + } + get joinChannelServiceRecords() { + try { + return this.state.joinChannelServiceRecords; + } catch (s) { + return []; + } + } + get avoidJoinStart() { + return this.state.avoidJoinStart; + } + set avoidJoinStart(s) { + this.dispatch({ type: kn.AVOID_JOIN_START, avoidJoinStart: s }); + } + } + var Qy, $q; + (function(h) { + h.h264 = "h264", h.h265 = "h265", h.vp8 = "vp8", h.vp9 = "vp9", h.av1 = "av1"; + })(Qy || (Qy = {})), function(h) { + h.opus = "opus", h.pcma = "pcma", h.pcmu = "pcmu", h.g722 = "g722"; + }($q || ($q = {})); + const Vq = 128, vPe = 96, zq = 1e3, BC = 10; + let mPe = 0; + const mM = new class extends Ra { + reportLogUploadError(h) { + this.emit("REPORT_LOG_UPLOAD", h); + } + }(); + class yPe { + constructor(s) { + Z(this, "logger", void 0), Z(this, "prefixLists", []), this.logger = s; + } + debug() { + for (var s = arguments.length, c = new Array(s), p = 0; p < s; p++) + c[p] = arguments[p]; + this.logger.debug(...this.prefixLists, ...c); + } + info() { + for (var s = arguments.length, c = new Array(s), p = 0; p < s; p++) + c[p] = arguments[p]; + this.logger.info(...this.prefixLists, ...c); + } + warning() { + for (var s = arguments.length, c = new Array(s), p = 0; p < s; p++) + c[p] = arguments[p]; + this.logger.warning(...this.prefixLists, ...c); + } + error() { + for (var s = arguments.length, c = new Array(s), p = 0; p < s; p++) + c[p] = arguments[p]; + this.logger.error(...this.prefixLists, ...c); + } + prefix(s) { + return this.prefixLists.push(s), this; + } + popPrefix() { + return this.prefixLists.pop(), this; + } + } + function Zj() { + const h = /* @__PURE__ */ new Date(); + return h.toTimeString().split(" ")[0] + ":" + h.getMilliseconds(); + } + function Hq() { + const h = /* @__PURE__ */ new Date(), s = /((\d+:){2}\d+)/.exec((/* @__PURE__ */ new Date()).toUTCString()); + return s ? (s == null ? void 0 : s[0]) + ":" + h.getUTCMilliseconds() : h.toTimeString().split(" ")[0] + ":" + h.getMilliseconds(); + } + const Yh = { DEBUG: 0, INFO: 1, WARNING: 2, ERROR: 3, NONE: 4 }, yM = Date.now(), Dx = (h) => { + for (const s in Yh) + if (Object.prototype.hasOwnProperty.call(Yh, s) && Yh[s] === h) + return s; + return "DEFAULT"; + }, ie = new class { + constructor() { + Z(this, "proxyServerURL", void 0), Z(this, "logLevel", Yh.DEBUG), Z(this, "uploadState", "collecting"), Z(this, "uploadLogWaitingList", []), Z(this, "uploadLogUploadingList", []), Z(this, "uploadErrorCount", 0), Z(this, "currentLogID", 0), Z(this, "url", void 0), Z(this, "extLog", (h, s) => { + this.appendLogToWaitingList(h, ...s); + }); + } + debug() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + const p = [Yh.DEBUG].concat(s); + this.log.apply(this, p); + } + info() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + const p = [Yh.INFO].concat(s); + this.log.apply(this, p); + } + warning() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + const p = [Yh.WARNING].concat(s); + this.log.apply(this, p); + } + warn() { + this.warning(...arguments); + } + error() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + const p = [Yh.ERROR].concat(s); + this.log.apply(this, p); + } + upload() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + const p = [Yh.DEBUG].concat(s); + this.uploadLog.apply(this, p); + } + setLogLevel(h) { + h = Math.min(Math.max(0, h), 4), this.logLevel = h; + } + enableLogUpload() { + Gi("UPLOAD_LOG", !0); + } + disableLogUpload() { + Gi("UPLOAD_LOG", !1), this.uploadLogUploadingList = [], this.uploadLogWaitingList = []; + } + setProxyServer(h) { + this.proxyServerURL = h; + } + prefix(h) { + return new yPe(this).prefix(h); + } + log() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + if (Date.now() - yM < 100) + return void setTimeout(() => { + this.log(...s); + }, Date.now() - yM); + const p = Math.max(0, Math.min(4, s[0])); + if (s[0] = Zj() + " Agora-SDK [".concat(Dx(p), "]:"), this.appendLogToWaitingList(p, ...s), p < this.logLevel) + return; + const m = Zj() + " %cAgora-SDK [".concat(Dx(p), "]:"); + let T = []; + if (!Le("USE_NEW_LOG")) + switch (p) { + case Yh.DEBUG: + T = [m, "color: #64B5F6;"].concat(s.slice(1)), console.log.apply(console, T); + break; + case Yh.INFO: + T = [m, "color: #1E88E5; font-weight: bold;"].concat(s.slice(1)), console.log.apply(console, T); + break; + case Yh.WARNING: + T = [m, "color: #FB8C00; font-weight: bold;"].concat(s.slice(1)), console.warn.apply(console, T); + break; + case Yh.ERROR: + T = [m, "color: #B00020; font-weight: bold;"].concat(s.slice(1)), console.error.apply(console, T); + } + } + uploadLog() { + for (var h = arguments.length, s = new Array(h), c = 0; c < h; c++) + s[c] = arguments[c]; + if (Date.now() - yM < 100) + return void setTimeout(() => { + this.uploadLog(...s); + }, Date.now() - yM); + const p = Math.max(0, Math.min(4, s[0])); + s[0] = Zj() + " Agora-SDK [".concat(Dx(p), "]:"), this.appendLogToWaitingList(p, ...s); + } + appendLogToWaitingList(h) { + if (!Le("UPLOAD_LOG")) + return; + for (var s = arguments.length, c = new Array(s > 1 ? s - 1 : 0), p = 1; p < s; p++) + c[p - 1] = arguments[p]; + Array.isArray(c[0]) ? c[0][0] = Hq() + " Agora-SDK [".concat(Dx(h), "]:") : c[0] = Hq() + " Agora-SDK [".concat(Dx(h), "]:"); + let m = ""; + c.forEach((T) => { + typeof T == "object" && (T = JSON.stringify(T)), m += "".concat(T, " "); + }), this.uploadLogWaitingList.push({ payload_str: m, log_level: h, log_item_id: this.currentLogID++ }), this.uploadState === "uploading" && this.uploadLogUploadingList.length === 0 && this.uploadLogInterval(); + } + startUpload() { + this.uploadState = "uploading", this.uploadLogUploadingList.length === 0 && this.uploadLogInterval(); + } + uploadLogs() { + return ye(this, null, function* () { + const h = this.uploadLogUploadingList, s = { sdk_version: Gh, process_id: Le("PROCESS_ID"), payload: JSON.stringify(h) }; + return np(() => ye(this, null, function* () { + const c = yield Pc.post(this.url || (this.proxyServerURL ? "https://".concat(this.proxyServerURL, "/ls/?h=").concat(Le("LOG_UPLOAD_SERVER"), "&p=443&d=upload/v1") : "https://".concat(Le("LOG_UPLOAD_SERVER"), "/upload/v1")), s, { responseType: "text" }); + if (c.data !== "OK") { + const p = new Error("unexpected upload log response"); + throw p.response = c, p; + } + }), () => (this.uploadLogUploadingList = [], !1), (c) => (c.response ? mM.reportLogUploadError({ status: c.response.status, data: c.response.data, headers: c.response.headers, message: c.message }) : c.request ? mM.reportLogUploadError({ status: c.request.status, message: c.message }) : mM.reportLogUploadError({ status: -1, message: c.message }), !0), { timeout: Le("UPLOAD_LOG_REQUEST_RETRY_INTERVAL"), maxRetryTimeout: Le("UPLOAD_LOG_REQUEST_MAX_RETRY_INTERVAL") }); + }); + } + uploadLogInterval() { + this.uploadLogUploadingList.length === 0 && this.uploadLogWaitingList.length === 0 || (this.uploadLogUploadingList.length === 0 && (this.uploadLogUploadingList = this.uploadLogWaitingList.splice(0, Le("UPLOAD_LOG_LENGTH_EACH_TIME"))), this.uploadLogs().then(() => { + this.uploadErrorCount = 0, this.uploadLogWaitingList.length > 0 && window.setTimeout(() => this.uploadLogInterval(), Le("UPLOAD_LOG_INTERVAL")); + }).catch((h) => { + this.uploadErrorCount += 1, this.uploadErrorCount < 2 ? window.setTimeout(() => this.uploadLogInterval(), Le("UPLOAD_LOG_TWICE_RETRY_INTERVAL_V1")) : window.setTimeout(() => this.uploadLogInterval(), Le("UPLOAD_LOG_RETRY_INTERVAL_V1")); + })); + } + }(); + var Wq, Gq; + function _Pe(h) { + return Gs(h.reportId, "params.reportId", 0, 100, !1), Gs(h.category, "params.category", 0, 100, !1), Gs(h.event, "params.event", 0, 100, !1), Gs(h.label, "params.label", 0, 100, !1), Wi(h.value, "params.value", Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, !1), !0; + } + (function(h) { + h.FREE = "free", h.UPLOADING = "uploading"; + })(Wq || (Wq = {})), function(h) { + h[h.MISC = 0] = "MISC", h[h.INTERNAL_EVENT = 1] = "INTERNAL_EVENT", h[h.PUBLIC_EVENT = 2] = "PUBLIC_EVENT", h[h.WEB_EVENT = 3] = "WEB_EVENT", h[h.INTERNAL_API = 4] = "INTERNAL_API", h[h.WEB_API = 5] = "WEB_API", h[h.PUBLIC_API = 6] = "PUBLIC_API"; + }(Gq || (Gq = {})); + const SPe = { sid: "", lts: 0, success: null, cname: null, uid: null, peer: null, cid: null, elapse: null, extend: null, vid: 0 }; + var Jo, _a, Yq, Xq; + function Kq(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function bn(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Kq(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Kq(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + (function(h) { + h.PUBLISH = "publish", h.SUBSCRIBE = "subscribe", h.WS_COMPRESSOR_INIT = "ws_compressor_init", h.SESSION_INIT = "session_init", h.JOIN_CHOOSE_SERVER = "join_choose_server", h.REQ_USER_ACCOUNT = "req_user_account", h.JOIN_GATEWAY = "join_gateway", h.REJOIN_GATEWAY = "rejoin_gateway", h.STREAM_SWITCH = "stream_switch", h.REQUEST_PROXY_WORKER_MANAGER = "request_proxy_worker_manager", h.REQUEST_PROXY_APPCENTER = "request_proxy_appcenter", h.FIRST_VIDEO_RECEIVED = "first_video_received", h.FIRST_AUDIO_RECEIVED = "first_audio_received", h.FIRST_VIDEO_DECODE = "first_video_decode", h.FIRST_AUDIO_DECODE = "first_audio_decode", h.ON_ADD_AUDIO_STREAM = "on_add_audio_stream", h.ON_ADD_VIDEO_STREAM = "on_add_video_stream", h.ON_UPDATE_STREAM = "on_update_stream", h.ON_REMOVE_STREAM = "on_remove_stream", h.USER_ANALYTICS = "req_user_analytics", h.PC_STATS = "pc_stats", h.UPDATE_REMOTE_RTPCAPABILITIES = "update_remote_rtpCapabilities"; + })(Jo || (Jo = {})), function(h) { + h.SESSION = "io.agora.pb.Wrtc.Session", h.JOIN_CHOOSE_SERVER = "io.agora.pb.Wrtc.JoinChooseServer", h.REQ_USER_ACCOUNT = "io.agora.pb.Wrtc.ReqUserAccount", h.JOIN_GATEWAY = "io.agora.pb.Wrtc.JoinGateway", h.RE_JOIN_GATEWAY = "io.agora.pb.Wrtc.ReJoinGateway", h.PUBLISH = "io.agora.pb.Wrtc.Publish", h.SUBSCRIBE = "io.agora.pb.Wrtc.Subscribe", h.WS_COMPRESSOR_INIT = "io.agora.pb.Wrtc.WsCompressorInit", h.STREAM_SWITCH = "io.agora.pb.Wrtc.StreamSwitch", h.AUDIO_SENDING_STOPPED = "io.agora.pb.Wrtc.AudioSendingStopped", h.VIDEO_SENDING_STOPPED = "io.agora.pb.Wrtc.VideoSendingStopped", h.REQUEST_PROXY_APPCENTER = "io.agora.pb.Wrtc.RequestProxyAppCenter", h.REQUEST_PROXY_WORKER_MANAGER = "io.agora.pb.Wrtc.RequestProxyWorkerManager", h.API_INVOKE = "io.agora.pb.Wrtc.ApiInvoke", h.FIRST_VIDEO_RECEIVED = "io.agora.pb.Wrtc.FirstVideoReceived", h.FIRST_AUDIO_RECEIVED = "io.agora.pb.Wrtc.FirstAudioReceived", h.FIRST_VIDEO_DECODE = "io.agora.pb.Wrtc.FirstVideoDecode", h.FIRST_AUDIO_DECODE = "io.agora.pb.Wrtc.FirstAudioDecode", h.ON_ADD_AUDIO_STREAM = "io.agora.pb.Wrtc.OnAddAudioStream", h.ON_ADD_VIDEO_STREAM = "io.agora.pb.Wrtc.OnAddVideoStream", h.ON_UPDATE_STREAM = "io.agora.pb.Wrtc.OnUpdateStream", h.ON_REMOVE_STREAM = "io.agora.pb.Wrtc.OnRemoveStream", h.JOIN_CHANNEL_TIMEOUT = "io.agora.pb.Wrtc.JoinChannelTimeout", h.PEER_PUBLISH_STATUS = "io.agora.pb.Wrtc.PeerPublishStatus", h.WORKER_EVENT = "io.agora.pb.Wrtc.WorkerEvent", h.AP_WORKER_EVENT = "io.agora.pb.Wrtc.APWorkerEvent", h.JOIN_WEB_PROXY_AP = "io.agora.pb.Wrtc.JoinWebProxyAP", h.WEBSOCKET_QUIT = "io.agora.pb.Wrtc.WebSocketQuit", h.USER_ANALYTICS = "io.agora.pb.Wrtc.UserAnalytics", h.AUTOPLAY_FAILED = "io.agora.pb.Wrtc.AutoplayFailed", h.PC_STATS = "io.agora.pb.Wrtc.PCStats", h.UPDATE_REMOTE_RTPCAPABILITIES = "io.agora.pb.Wrtc.UpdateRemoteRTPCapabilities"; + }(_a || (_a = {})), function(h) { + h[h.WORKER_EVENT = 156] = "WORKER_EVENT", h[h.AP_WORKER_EVENT = 160] = "AP_WORKER_EVENT"; + }(Yq || (Yq = {})), function(h) { + h[h.SESSION = 26] = "SESSION", h[h.JOIN_CHOOSE_SERVER = 27] = "JOIN_CHOOSE_SERVER", h[h.REQ_USER_ACCOUNT = 196] = "REQ_USER_ACCOUNT", h[h.JOIN_GATEWAY = 28] = "JOIN_GATEWAY", h[h.PUBLISH = 30] = "PUBLISH", h[h.SUBSCRIBE = 29] = "SUBSCRIBE", h[h.WS_COMPRESSOR_INIT = 9430] = "WS_COMPRESSOR_INIT", h[h.STREAM_SWITCH = 32] = "STREAM_SWITCH", h[h.AUDIO_SENDING_STOPPED = 33] = "AUDIO_SENDING_STOPPED", h[h.VIDEO_SENDING_STOPPED = 34] = "VIDEO_SENDING_STOPPED", h[h.REQUEST_PROXY_APPCENTER = 35] = "REQUEST_PROXY_APPCENTER", h[h.REQUEST_PROXY_WORKER_MANAGER = 36] = "REQUEST_PROXY_WORKER_MANAGER", h[h.API_INVOKE = 41] = "API_INVOKE", h[h.FIRST_VIDEO_RECEIVED = 348] = "FIRST_VIDEO_RECEIVED", h[h.FIRST_AUDIO_RECEIVED = 349] = "FIRST_AUDIO_RECEIVED", h[h.FIRST_VIDEO_DECODE = 350] = "FIRST_VIDEO_DECODE", h[h.FIRST_AUDIO_DECODE = 351] = "FIRST_AUDIO_DECODE", h[h.ON_ADD_AUDIO_STREAM = 352] = "ON_ADD_AUDIO_STREAM", h[h.ON_ADD_VIDEO_STREAM = 353] = "ON_ADD_VIDEO_STREAM", h[h.ON_UPDATE_STREAM = 356] = "ON_UPDATE_STREAM", h[h.ON_REMOVE_STREAM = 355] = "ON_REMOVE_STREAM", h[h.JOIN_CHANNEL_TIMEOUT = 407] = "JOIN_CHANNEL_TIMEOUT", h[h.PEER_PUBLISH_STATUS = 408] = "PEER_PUBLISH_STATUS", h[h.WORKER_EVENT = 156] = "WORKER_EVENT", h[h.AP_WORKER_EVENT = 160] = "AP_WORKER_EVENT", h[h.JOIN_WEB_PROXY_AP = 700] = "JOIN_WEB_PROXY_AP", h[h.WEBSOCKET_QUIT = 671] = "WEBSOCKET_QUIT", h[h.USER_ANALYTICS = 1e4] = "USER_ANALYTICS", h[h.AUTOPLAY_FAILED = 9178] = "AUTOPLAY_FAILED"; + }(Xq || (Xq = {})); + class Ox { + constructor() { + Z(this, "baseInfoMap", /* @__PURE__ */ new Map()), Z(this, "proxyServer", void 0), Z(this, "eventUploadTimer", void 0), Z(this, "setSessionIdTimer", void 0), Z(this, "url", void 0), Z(this, "backupUrl", void 0), Z(this, "_appId", void 0), Z(this, "keyEventUploadPendingItems", []), Z(this, "normalEventUploadPendingItems", []), Z(this, "apiInvokeUploadPendingItems", []), Z(this, "apiInvokeCount", 0), Z(this, "ltsList", []), Z(this, "lastSendNormalEventTime", Date.now()), Z(this, "customReportCounterTimer", void 0), Z(this, "customReportCount", 0), Z(this, "extApiInvoke", (s) => ye(this, null, function* () { + for (const c of s) { + const p = bn(bn({}, c), {}, { sid: null, invokeId: ++this.apiInvokeCount, tag: Na.TRACER }); + this.sendApiInvoke(p); + } + })), this.eventUploadTimer = window.setInterval(this.doSend.bind(this), Le("EVENT_REPORT_SEND_INTERVAL")), this.setSessionIdTimer = window.setInterval(this.appendSessionId.bind(this), Le("EVENT_REPORT_SEND_INTERVAL")); + } + getBaseInfoBySessionId(s) { + return this.baseInfoMap.get(s); + } + adjustSessionStartTime(s) { + if (!this.baseInfoMap.has(s) && !this.baseInfoMap.get(s)) + return void ie.error("adjust session ".concat(s, " start time, sid is not exist or info is undefined")); + const c = this.baseInfoMap.get(s), p = Date.now(), m = c.startTime; + c.startTime = p, ie.debug("rewrite session ".concat(s, " startTime: ").concat(p, " , ").concat(p - m, "ms")), this.baseInfoMap.set(s, c); + } + setAppId(s) { + this._appId = s; + } + reportApiInvoke(s, c, p) { + c.timeout = c.timeout || 6e4, c.reportResult = c.reportResult === void 0 || c.reportResult; + const m = Date.now(); + this.apiInvokeCount += 1; + const T = this.apiInvokeCount, D = () => ({ tag: c.tag, invokeId: T, sid: s, name: c.name, apiInvokeTime: m, options: c.options, states: c.states || null }), k = !!Le("SHOW_REPORT_INVOKER_LOG"); + k && ie.info("".concat(c.name, " start"), c.options); + let N = !1; + _s(c.timeout).then(() => { + N || (this.sendApiInvoke(bn(bn({}, D()), {}, { error: _e.API_INVOKE_TIMEOUT, success: !1 })), ie.debug("".concat(c.name, " timeout"))); + }); + const U = new mt(_e.UNEXPECTED_ERROR, "".concat(c.name, ": this api invoke is end")); + return { onSuccess: (V) => { + const G = () => { + if (N) + throw U; + return N = !0, this.sendApiInvoke(bn(bn({}, D()), {}, { success: !0 }, c.reportResult && { result: V })), k && ie.info("".concat(c.name, " onSuccess")), V; + }; + return p ? rq(G, c.name + "Success", p, () => N = !0) : G(); + }, onError: (V) => { + const G = () => { + if (N) + throw V; + N = !0, this.sendApiInvoke(bn(bn({}, D()), {}, { success: !1, error: V })), k && ie.info("".concat(c.name, " onFailure"), V.toString()); + }; + return p ? rq(G, c.name + "Error", p, () => N = !0) : G(); + } }; + } + sessionInit(s, c) { + if (this.baseInfoMap.has(s)) + return; + const p = Date.now(), m = this.createBaseInfo(s, p); + m.cname = c.cname; + const T = Object.assign({}, { willUploadConsoleLog: Le("UPLOAD_LOG"), maxTouchPoints: navigator.maxTouchPoints, areaVersion: Xj ? "global" : "oversea", areas: Le("AREAS") && Le("AREAS").join(",") }, c.extend), { stringUid: D, channelProfile: k, channelMode: N, isABTestSuccess: U, lsid: V, clientRole: G } = c, K = Date.now(), q = bn(bn({}, m), {}, { eventType: Jo.SESSION_INIT, appid: c.appid, browser: navigator.userAgent, build: Kj, lts: K, elapse: K - p, extend: JSON.stringify(T), mode: c.mode, process: Le("PROCESS_ID"), appType: Le("APP_TYPE"), success: !0, version: Gh, stringUid: D, channelProfile: k, channelMode: N, isABTestSuccess: U, lsid: V, clientType: 20, clientRole: G, serviceId: Le("PROCESS_ID"), extensionID: Le("PLUGIN_INFO").join(",") || "" }); + this.send({ type: _a.SESSION, data: q }, !0); + } + joinChooseServer(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { eventType: Jo.JOIN_CHOOSE_SERVER, lts: T, eventElapse: T - c.lts, chooseServerAddr: c.csAddr, errorCode: c.ec, elapse: T - p.startTime, success: c.succ, chooseServerAddrList: JSON.stringify(c.serverList), uid: c.uid ? parseInt(c.uid) : null, cid: c.cid ? parseInt(c.cid) : null, chooseServerIp: c.csIp || "", opid: c.opid, unilbsServerIds: c.unilbsServerIds, extend: c.extend || void 0, isHttp3: c.isHttp3 }); + this.send({ type: _a.JOIN_CHOOSE_SERVER, data: D }, !0); + } + reqUserAccount(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { eventType: Jo.REQ_USER_ACCOUNT, lts: T, success: c.success, serverAddress: c.serverAddr, stringUid: c.stringUid, uid: c.uid, errorCode: c.errorCode, elapse: T - p.startTime, eventElapse: T - c.lts, extend: JSON.stringify(c.extend) }); + this.send({ type: _a.REQ_USER_ACCOUNT, data: D }, !0); + } + joinGateway(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info; + c.vid && (m.vid = c.vid), m.uid = c.uid, m.cid = c.cid; + const T = Date.now(), { firstSuccess: D, avoidJoinStartTime: k, isProxy: N, addr: U } = c, V = T - (D && k ? k : p.startTime), G = bn(bn({}, m), {}, { eventType: Jo.JOIN_GATEWAY, lts: T, gatewayAddr: c.addr, success: c.succ, errorCode: c.ec, elapse: V, eventElapse: T - c.lts, firstSuccess: D, signalChannel: c.signalChannel }), K = G.success ? 1 : 0; + if (c.succ && (p.lastJoinSuccessTime = T), D) + this.send({ type: _a.JOIN_GATEWAY, data: G }, !0); + else { + let q; + if (U) + if (N) { + const oe = U.match(/h=(\d{1,3}-){3}\d{1,3}/g), he = U.match(/p=[0-9]{1,6}/g); + q = { isSuccess: K, gatewayIp: oe && oe.length ? oe[0].split("=")[1].replace(/-/g, ".") : "", port: he && he.length ? he[0].split("=")[1] : "", isProxy: N ? 1 : 0 }; + } else { + const oe = U.match(/wss:\/\/(\d{1,3}-){3}\d{1,3}/g), he = U.match(/(:|p=)[0-9]{1,6}/g); + q = { isSuccess: K, gatewayIp: oe && oe.length ? oe[0].split("//")[1].replace(/-/g, ".") : "", port: he && he.length ? he[0].split(/:|p=/g)[1] : "", isProxy: N ? 1 : 0 }; + } + else + q = { isSuccess: K, gatewayIp: "", port: "", isProxy: N ? 1 : 0 }; + delete G.success, delete G.eventType, delete G.firstSuccess, G.vid = Number(G.vid); + const ue = Object.assign({}, G, q, { eventType: Jo.REJOIN_GATEWAY }); + this.send({ type: _a.RE_JOIN_GATEWAY, data: ue }, !0); + } + } + joinChannelTimeout(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = Date.now(), T = bn(bn({}, p.info), {}, { lts: m, timeout: c, elapse: m - p.startTime }); + this.send({ type: _a.JOIN_CHANNEL_TIMEOUT, data: T }, !0); + } + publish(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { eventType: Jo.PUBLISH, lts: T, eventElapse: c.eventElapse, elapse: T - p.startTime, success: c.succ, errorCode: c.ec, videoName: c.videoName, audioName: c.audioName, screenName: c.screenName, screenshare: c.screenshare, audio: c.audio, video: c.video, p2pid: c.p2pid, publishRequestid: c.publishRequestid }); + this.send({ type: _a.PUBLISH, data: D }, !0); + } + subscribe(s, c, p) { + const m = this.baseInfoMap.get(s); + if (!m) + return; + const T = m.info, D = Date.now(), k = bn(bn({}, T), {}, { eventType: Jo.SUBSCRIBE, lts: D, eventElapse: c.eventElapse, elapse: D - m.startTime, success: c.succ, errorCode: c.ec, video: c.video, audio: c.audio, subscribeRequestid: c.subscribeRequestid, p2pid: c.p2pid }, p && { extend: JSON.stringify({ isMassSubscribe: !0 }) }); + typeof c.peerid == "string" ? k.peerSuid = c.peerid : k.peer = c.peerid, this.send({ type: _a.SUBSCRIBE, data: k }, !0); + } + wsCompressorInit(s) { + var c; + const p = [...rh(c = this.baseInfoMap).call(c)], m = p.length ? p[0] : "UnableToGetSid", T = this.baseInfoMap.get(m); + if (!T) + return; + const D = T.info, k = Date.now(), N = bn(bn({}, D), {}, { eventType: Jo.WS_COMPRESSOR_INIT, lts: k, eventElapse: s.eventElapse, elapse: k - T.startTime, status: s.status ? 1 : 2 }); + this.send({ type: _a.WS_COMPRESSOR_INIT, data: N }, !0); + } + firstRemoteVideoDecode(s, c, p, m) { + const T = this.baseInfoMap.get(s); + if (!T) + return; + const D = T.info, k = Date.now(), N = bn(bn(bn({}, D), m), {}, { elapse: k - T.startTime, eventType: c, lts: k, firstDecodeFrame: Math.max(k - T.startTime, 0), apEnd: Math.max(m.apEnd - T.startTime, 0), apStart: Math.max(m.apStart - T.startTime, 0), joinGwEnd: Math.max(m.joinGwEnd - T.startTime, 0), joinGwStart: Math.max(m.joinGwStart - T.startTime, 0), pcEnd: Math.max(m.pcEnd - T.startTime, 0), pcStart: Math.max(m.pcStart - T.startTime, 0), subscriberEnd: Math.max(m.subscriberEnd - T.startTime, 0), subscriberStart: Math.max(m.subscriberStart - T.startTime, 0), videoAddNotify: Math.max(m.videoAddNotify - T.startTime, 0) }); + this.send({ type: p, data: N }, !0); + } + firstRemoteFrame(s, c, p, m) { + const T = this.baseInfoMap.get(s); + if (!T) + return; + const D = T.info, k = Date.now(), N = bn(bn(bn({}, D), m), {}, { elapse: k - T.startTime, eventType: c, lts: k }); + this.send({ type: p, data: N }, !0); + } + pcStats(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn(bn({}, m), c), {}, { vid: m.vid === void 0 ? 0 : Number(m.vid), elapse: T - p.startTime, eventType: Jo.PC_STATS, lts: T }); + this.send({ type: _a.PC_STATS, data: D }, !0); + } + updateRemoteRTPCapabilities(s, c) { + if (s) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn(bn({}, m), c), {}, { vid: m.vid === void 0 ? 0 : Number(m.vid), eventType: Jo.UPDATE_REMOTE_RTPCAPABILITIES, lts: T }); + this.send({ type: _a.UPDATE_REMOTE_RTPCAPABILITIES, data: D }, !0); + } + } + onGatewayStream(s, c, p, m) { + const T = this.baseInfoMap.get(s); + if (!T) + return; + const D = T.info, k = Date.now(), N = bn(bn(bn({}, D), m), {}, { eventType: c, lts: k }); + this.send({ type: p, data: N }, !0); + } + streamSwitch(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { eventType: Jo.STREAM_SWITCH, lts: T, isDual: c.isdual, elapse: T - p.startTime, success: c.succ }); + this.send({ type: _a.STREAM_SWITCH, data: D }, !0); + } + requestProxyAppCenter(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { eventType: Jo.REQUEST_PROXY_APPCENTER, lts: T, eventElapse: T - c.lts, elapse: T - p.startTime, APAddr: c.APAddr, workerManagerList: c.workerManagerList, response: c.response, errorCode: c.ec, success: c.succ }); + this.send({ type: _a.REQUEST_PROXY_APPCENTER, data: D }, !0); + } + requestProxyWorkerManager(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { eventType: Jo.REQUEST_PROXY_WORKER_MANAGER, lts: T, eventElapse: T - c.lts, elapse: T - p.startTime, workerManagerAddr: c.workerManagerAddr, response: c.response, errorCode: c.ec, success: c.succ }); + this.send({ type: _a.REQUEST_PROXY_WORKER_MANAGER, data: D }, !0); + } + setProxyServer(s) { + this.proxyServer = s, s ? ie.debug("reportProxyServerurl: ".concat(s)) : ie.debug("disable reportProxyServerurl: ".concat(s)); + } + peerPublishStatus(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn({}, m), {}, { subscribeElapse: c.subscribeElapse, peer: c.peer, peerPublishDuration: Math.max(c.audioPublishDuration, c.videoPublishDuration), audiotag: c.audioPublishDuration > 0 ? 1 : -1, videotag: c.videoPublishDuration > 0 ? 1 : -1, lts: T, elapse: T - p.startTime, joinChannelSuccessElapse: T - (p.lastJoinSuccessTime || T), peerPublishDurationVideo: c.videoPublishDuration, peerPublishDurationAudio: c.audioPublishDuration }); + this.send({ type: _a.PEER_PUBLISH_STATUS, data: D }, !0); + } + workerEvent(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(); + (function(k, N, U) { + const V = k[N]; + if (!V || typeof V != "string") + return [k]; + k[N] = ""; + const G = mg(JSON.stringify(k)); + let K = 0; + const q = []; + let ue = 0; + for (let oe = 0; oe < V.length; oe++) + ue += V.charCodeAt(oe) <= 127 ? 1 : 3, ue <= U - G || (q[q.length] = bS(bS({}, k), {}, { [N]: V.substring(K, oe) }), K = oe, ue = V.charCodeAt(oe) <= 127 ? 1 : 3); + return K !== V.length - 1 && (q[q.length] = bS(bS({}, k), {}, { [N]: V.substring(K) })), q; + })(bn(bn(bn({}, m), c), {}, { elapse: T - p.startTime, lts: T, productType: "WebRTC" }), "payload", 1300).forEach((k) => this.send({ type: _a.WORKER_EVENT, data: k }, !0)); + } + apworkerEvent(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn(bn({}, m), c), {}, { elapse: T - p.startTime, lts: T }); + this.send({ type: _a.AP_WORKER_EVENT, data: D }, !0); + } + joinWebProxyAP(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn(bn({}, m), c), {}, { elapse: T - p.startTime, lts: T, extend: c.extend || void 0 }); + this.send({ type: _a.JOIN_WEB_PROXY_AP, data: D }, !0); + } + WebSocketQuit(s, c) { + const p = this.baseInfoMap.get(s); + if (!p) + return; + const m = p.info, T = Date.now(), D = bn(bn(bn({}, m), c), {}, { elapse: T - p.startTime, lts: T }); + this.send({ type: _a.WEBSOCKET_QUIT, data: D }, !0); + } + sendCustomReportMessage(s, c) { + return ye(this, null, function* () { + if (this.customReportCount += c.length, this.customReportCount > Le("CUSTOM_REPORT_LIMIT")) + throw new mt(_e.CUSTOM_REPORT_FREQUENCY_TOO_HIGH); + this.customReportCounterTimer || (this.customReportCounterTimer = window.setInterval(() => { + this.customReportCount = 0; + }, 5e3)); + const p = Date.now(), m = c.map((T) => ({ type: _a.USER_ANALYTICS, data: bn(bn({ sid: s }, T), {}, { lts: p }) })); + try { + Le("NEW_REPORT_SERVER") ? yield this.postDataToStatsCollector2(m) : yield this.postDataToStatsCollector(m); + } catch (T) { + throw ie.error("send custom report message failed", T.toString()), new mt(_e.CUSTOM_REPORT_SEND_FAILED, T.message); + } + }); + } + sendApiInvoke(s) { + const c = Le("NOT_REPORT_EVENT"); + if (s.tag && rr(c) && rr(c).call(c, s.tag)) + return !1; + if (s.sid === null) + return this.apiInvokeUploadPendingItems.push(s), !1; + const p = this.baseInfoMap.get(s.sid); + if (!p) + return this.apiInvokeUploadPendingItems.push(s), !1; + const { cname: m, uid: T, cid: D } = p.info; + let k; + if (s.lts = s.lts || Date.now(), s.error) + if (s.error instanceof mt) { + const { code: U, message: V } = s.error; + k = U || V || s.error.toString(); + } else + k = s.error.toString(); + const N = { invokeId: s.invokeId, sid: s.sid, cname: m, cid: D, uid: T, lts: s.lts, success: s.success, elapse: s.lts - p.startTime, execElapse: s.lts - s.apiInvokeTime, apiName: s.name, options: s.options ? JSON.stringify(s.options) : void 0, execStates: s.states ? JSON.stringify(s.states) : void 0, execResult: s.result ? JSON.stringify(s.result) : void 0, errorCode: s.error ? k : void 0, errorMsg: s.error ? JSON.stringify(s.error) : void 0 }; + return this.send({ type: _a.API_INVOKE, data: N }, !1), !0; + } + appendSessionId() { + Ox.__CLIENT_LIST__.forEach((s) => { + if (s._sessionId) { + const c = this.apiInvokeUploadPendingItems.length; + for (let p = 0; p < c; p++) { + const m = this.apiInvokeUploadPendingItems.shift(); + m && (m.sid = s._sessionId, this.sendApiInvoke(Object.assign({}, m))); + } + } + }); + } + send(s, c) { + if (c) + return this.keyEventUploadPendingItems.push(s), void this.sendItems(this.keyEventUploadPendingItems, !0); + this.normalEventUploadPendingItems.push(s), this.normalEventUploadPendingItems.length > Le("NORMAL_EVENT_QUEUE_CAPACITY") && this.normalEventUploadPendingItems.splice(0, 1), this.normalEventUploadPendingItems.length >= 10 && this.sendItems(this.normalEventUploadPendingItems, !1); + } + doSend() { + this.keyEventUploadPendingItems.length > 0 && this.sendItems(this.keyEventUploadPendingItems, !0), this.normalEventUploadPendingItems.length > 0 && Date.now() - this.lastSendNormalEventTime >= 5e3 && this.sendItems(this.normalEventUploadPendingItems, !1); + } + sendItems(s, c) { + const p = [], m = []; + for (; s.length; ) { + const D = s.shift(); + p.length < 20 ? p.push(D) : m.push(D); + } + s.push(...m); + for (const D of [...p]) { + var T; + this.ltsList.indexOf(D.data.lts) !== -1 ? (D.data.lts = this.ltsList[this.ltsList.length - 1] + 1, this.ltsList.push(D.data.lts)) : (this.ltsList.push(D.data.lts), dx(T = this.ltsList).call(T, (k, N) => k - N)); + } + return c || (this.lastSendNormalEventTime = Date.now()), Le("ENABLE_EVENT_REPORT") && p.length && (Le("NEW_REPORT_SERVER") ? this.postDataToStatsCollector2(p) : this.postDataToStatsCollector(p)).catch(((D) => (k) => { + Le("EVENT_REPORT_RETRY") && (c ? this.keyEventUploadPendingItems = this.keyEventUploadPendingItems.concat(D) : (this.normalEventUploadPendingItems = this.normalEventUploadPendingItems.concat(D), this.normalEventUploadPendingItems.length > Le("NORMAL_EVENT_QUEUE_CAPACITY") && (this.normalEventUploadPendingItems.splice(0, this.normalEventUploadPendingItems.length - Le("NORMAL_EVENT_QUEUE_CAPACITY")), ie.warning("report: drop normal events")))); + })(p)), s; + } + postDataToStatsCollector2(s) { + return ye(this, null, function* () { + Do.networkState === Dl.OFFLINE && (yield ot.race([Do.onlineWaiter, _s(2 * Oo.maxRetryTimeout)])); + const c = (T) => { + let D = new Uint8Array(); + return T.forEach((k) => { + const N = Cj(JSON.stringify(k.data)), U = new ArrayBuffer(5), V = ((K) => { + let q = 0; + return Object.entries(_a).forEach((ue) => { + let [oe, he] = ue; + he === K.type && (q = EventNameToID[oe]); + }), q; + })(k), G = new DataView(U); + G.setUint16(0, N.byteLength, !0), G.setUint8(2, 255 & V), G.setUint8(3, V >>> 8 & 255), G.setUint8(4, V >>> 16 & 255), D = WZ(D, new Uint8Array(U)), D = WZ(D, N); + }), D; + }, p = "event"; + let m = this.proxyServer ? "https://".concat(this.proxyServer, "/rs/?h=").concat(Le("NEW_REPORT_SERVER_DOMAINS")[0], "&p=443&d=").concat(p) : "https://".concat(Le("NEW_REPORT_SERVER_DOMAINS")[0], "/").concat(p); + for (let T = 0; T < 2; T += 1) { + T === 1 && (m = this.proxyServer ? "https://".concat(this.proxyServer, "/rs/?h=").concat(Le("NEW_REPORT_SERVER_DOMAINS")[1], "&p=443&d=").concat(p) : "https://".concat(Le("NEW_REPORT_SERVER_DOMAINS")[1], "/").concat(p)); + try { + yield Yj(m, { timeout: 1e4, data: c(s), headers: bn(bn({ biz: "webrtc", sendts: Math.round(Date.now() / 1e3), debug: "false" }, this._appId && { appid: this._appId }), {}, { "Content-Type": "application/octet-stream" }) }, !0); + } catch (D) { + if (T === 1) + throw D; + continue; + } + return; + } + }); + } + postDataToStatsCollector(c) { + return ye(this, arguments, function* (s) { + let p = arguments.length > 1 && arguments[1] !== void 0 && arguments[1]; + const m = { msgType: "EventMessages", sentTs: Math.round(Date.now() / 1e3), payloads: s.map((k) => JSON.stringify(k)), vid: ((k) => { + const N = k && k.data.sid && this.baseInfoMap.get(k.data.sid); + return N && N.info.vid && +N.info.vid || 0; + })(s[0]) }; + Do.networkState === Dl.OFFLINE && (yield ot.race([Do.onlineWaiter, _s(2 * Oo.maxRetryTimeout)])); + const T = p ? "/events/proto-raws" : "/events/messages"; + let D = this.url || (this.proxyServer ? "https://".concat(this.proxyServer, "/rs/?h=").concat(Le("EVENT_REPORT_DOMAIN"), "&p=").concat(Le("STATS_COLLECTOR_PORT"), "&d=").concat(T) : "https://".concat(Le("EVENT_REPORT_DOMAIN"), ":").concat(Le("STATS_COLLECTOR_PORT")).concat(T)); + for (let k = 0; k < 2; k += 1) { + k === 1 && (D = this.backupUrl || (this.proxyServer ? "https://".concat(this.proxyServer, "/rs/?h=").concat(Le("EVENT_REPORT_BACKUP_DOMAIN"), "&p=").concat(Le("STATS_COLLECTOR_PORT"), "&d=").concat(T) : "https://".concat(Le("EVENT_REPORT_BACKUP_DOMAIN"), ":").concat(Le("STATS_COLLECTOR_PORT")).concat(T))); + try { + p ? yield fPe(D, { timeout: 1e4, data: m }) : yield Yj(D, { timeout: 1e4, data: m }); + } catch (N) { + if (k === 1) + throw N; + continue; + } + return; + } + }); + } + createBaseInfo(s, c) { + const p = Object.assign({}, SPe); + return p.sid = s, this.baseInfoMap.set(s, { info: p, startTime: c }), p; + } + reportResourceTiming(s, c) { + const p = performance.getEntriesByName(s), m = p[p.length - 1]; + m && this.reportApiInvoke(c, { name: "Client.resourceTiming", options: m, tag: Na.TRACER }).onSuccess(); + } + } + function Pr() { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return function(s, c, p) { + const m = p.value; + if (typeof m == "function") { + const T = h.className || s.__className__ || (s.constructor.name === "AgoraRTCClient" ? "Client" : s.constructor.name); + p.value = function() { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + let U = k; + if (h.argsMap) + try { + U = h.argsMap(this, ...k); + } catch (G) { + ie.warning(G), U = []; + } + try { + JSON.stringify(U); + } catch (G) { + ie.warning("arguments for method ".concat(T, ".").concat(String(c), " not serializable for apiInvoke.")), U = []; + } + const V = (h.report || vr).reportApiInvoke(this._sessionId || null, { name: "".concat(T, ".").concat(String(c)), options: U, tag: Na.TRACER, reportResult: h.reportResult }, h.throttleTime); + try { + const G = m.apply(this, k); + return G instanceof ot ? G.then((K) => (V.onSuccess(h.reportResult && K), K)).catch((K) => { + throw V.onError(K), K; + }) : (V.onSuccess(h.reportResult && G), G); + } catch (G) { + throw V.onError(G), G; + } + }; + } + return p; + }; + } + Z(Ox, "__CLIENT_LIST__", []); + const vr = new Ox(); + mM.on("REPORT_LOG_UPLOAD", (h) => { + h.networkState = Do.networkState, vr.reportApiInvoke(null, { name: "logUploadError", options: h, tag: Na.TRACER }); + }); + const bPe = ["CHINA", "GLOBAL"], Gl = function() { + const h = "us".concat("erna", "me"), s = "pa".concat("sswo", "rd"), c = ["t", "s", "t"]; + c.splice(1, 0, "e"); + const p = c.join(""), m = []; + for (let k = 0; k < 6; k++) + m.push("1"); + const T = m.join(""), D = {}; + return D[h] = p, D[s] = T, Object.assign(D, { turnServerURL: "", tcpport: 3433, udpport: 3478, forceturn: !1 }); + }(); + window.DEFAULT_TURN_CONFIG = Gl, Xj || (Ol.WEBCS_DOMAIN = ["ap-web-1-oversea.agora.io", "ap-web-1-north-america.agora.io"], Ol.WEBCS_DOMAIN_BACKUP_LIST = ["ap-web-2-oversea.agora.io", "ap-web-2-north-america.agora.io"], Ol.PROXY_CS = ["proxy-ap-web-oversea.agora.io", "proxy-ap-web-america.agora.io"], Ol.CDS_AP = ["cds-ap-web-oversea.agora.io", "cds-ap-web-america.agora.io", "cds-ap-web-america2.agora.io"], Ol.ACCOUNT_REGISTER = ["sua-ap-web-oversea.agora.io", "sua-ap-web-america.agora.io", "sua-ap-web-america2.agora.io"], Ol.UAP_AP = ["uap-ap-web-oversea.agora.io", "uap-ap-web-america.agora.io", "uap-ap-web-america2.agora.io"], Ol.LOG_UPLOAD_SERVER = "logservice-oversea.agora.io", Ol.EVENT_REPORT_DOMAIN = "statscollector-1-oversea.agora.io", Ol.EVENT_REPORT_BACKUP_DOMAIN = "statscollector-2-oversea.agora.io", Ol.PROXY_SERVER_TYPE3 = "webrtc-cloud-proxy.agora.io", Ol.AREAS = ["NORTH_AMERICA", "OVERSEA"]); + const Zq = [[0, 1, 2, 3, 4, 5, 5], [0, 2, 2, 3, 4, 5, 5], [0, 3, 3, 3, 4, 5, 5], [0, 4, 4, 4, 4, 5, 5], [0, 5, 5, 5, 5, 5, 5]], e_ = []; + function CS(h, s) { + return !!s && e_.some((c) => c.uid === h && c.channelName === s); + } + Ox.__CLIENT_LIST__ = e_; + var qj, Nc, UC, Mx, nh, ll, Rr, Rn, cr, mr, am, Zr, qq, cl, Yr, Qo, t_, EPe = wc("Array").values, CPe = Ii, TPe = Tt, wPe = v, IPe = EPe, Jj = Array.prototype, xPe = { DOMTokenList: !0, NodeList: !0 }, ip = i(function(h) { + var s = h.values; + return h === Jj || wPe(Jj, h) && s === Jj.values || TPe(xPe, CPe(h)) ? IPe : s; + }); + function St(h, s, c, p) { + var m, T = arguments.length, D = T < 3 ? s : p === null ? p = Object.getOwnPropertyDescriptor(s, c) : p; + if (typeof Reflect == "object" && typeof Reflect.decorate == "function") + D = Reflect.decorate(h, s, c, p); + else + for (var k = h.length - 1; k >= 0; k--) + (m = h[k]) && (D = (T < 3 ? m(D) : T > 3 ? m(s, c, D) : m(s, c)) || D); + return T > 3 && D && Object.defineProperty(s, c, D), D; + } + function ge(h, s) { + if (typeof Reflect == "object" && typeof Reflect.metadata == "function") + return Reflect.metadata(h, s); + } + (function(h) { + h.L1T1 = "L1T1", h.L1T2 = "L1T2", h.L1T3 = "L1T3", h.L2T1_KEY = "L2T1_KEY", h.L2T2_KEY = "L2T2_KEY", h.L2T3_KEY = "L2T3_KEY", h.L3T1_KEY = "L3T1_KEY", h.L3T2_KEY = "L3T2_KEY", h.L3T3_KEY = "L3T3_KEY"; + })(qj || (qj = {})), function(h) { + h.CERTIFICATE = "certificate", h.CODEC = "codec", h.CANDIDATE_PAIR = "candidate-pair", h.LOCAL_CANDIDATE = "local-candidate", h.REMOTE_CANDIDATE = "remote-candidate", h.INBOUND = "inbound-rtp", h.TRACK = "track", h.OUTBOUND = "outbound-rtp", h.PC = "peer-connection", h.REMOTE_INBOUND = "remote-inbound-rtp", h.REMOTE_OUTBOUND = "remote-outbound-rtp", h.TRANSPORT = "transport", h.CSRC = "csrc", h.DATA_CHANNEL = "data-channel", h.STREAM = "stream", h.SENDER = "sender", h.RECEIVER = "receiver"; + }(Nc || (Nc = {})), function(h) { + h[h.ACCESS_POINT = 101] = "ACCESS_POINT", h[h.UNILBS = 201] = "UNILBS", h[h.STRING_UID_ALLOCATOR = 901] = "STRING_UID_ALLOCATOR"; + }(UC || (UC = {})), function(h) { + h[h.IIIEGAL_APPID = 1] = "IIIEGAL_APPID", h[h.IIIEGAL_UID = 2] = "IIIEGAL_UID", h[h.INTERNAL_ERROR = 3] = "INTERNAL_ERROR"; + }(Mx || (Mx = {})), function(h) { + h[h.INVALID_VENDOR_KEY = 5] = "INVALID_VENDOR_KEY", h[h.INVALID_CHANNEL_NAME = 7] = "INVALID_CHANNEL_NAME", h[h.INTERNAL_ERROR = 8] = "INTERNAL_ERROR", h[h.NO_AUTHORIZED = 9] = "NO_AUTHORIZED", h[h.DYNAMIC_KEY_TIMEOUT = 10] = "DYNAMIC_KEY_TIMEOUT", h[h.NO_ACTIVE_STATUS = 11] = "NO_ACTIVE_STATUS", h[h.DYNAMIC_KEY_EXPIRED = 13] = "DYNAMIC_KEY_EXPIRED", h[h.STATIC_USE_DYNAMIC_KEY = 14] = "STATIC_USE_DYNAMIC_KEY", h[h.DYNAMIC_USE_STATIC_KEY = 15] = "DYNAMIC_USE_STATIC_KEY", h[h.USER_OVERLOAD = 16] = "USER_OVERLOAD", h[h.FORBIDDEN_REGION = 18] = "FORBIDDEN_REGION", h[h.CANNOT_MEET_AREA_DEMAND = 19] = "CANNOT_MEET_AREA_DEMAND"; + }(nh || (nh = {})), function(h) { + h[h.NO_FLAG_SET = 100] = "NO_FLAG_SET", h[h.FLAG_SET_BUT_EMPTY = 101] = "FLAG_SET_BUT_EMPTY", h[h.INVALID_FALG_SET = 102] = "INVALID_FALG_SET", h[h.FLAG_SET_BUT_NO_RE = 103] = "FLAG_SET_BUT_NO_RE", h[h.INVALID_SERVICE_ID = 104] = "INVALID_SERVICE_ID", h[h.NO_SERVICE_AVAILABLE = 200] = "NO_SERVICE_AVAILABLE", h[h.NO_SERVICE_AVAILABLE_P2P = 201] = "NO_SERVICE_AVAILABLE_P2P", h[h.NO_SERVICE_AVAILABLE_VOICE = 202] = "NO_SERVICE_AVAILABLE_VOICE", h[h.NO_SERVICE_AVAILABLE_WEBRTC = 203] = "NO_SERVICE_AVAILABLE_WEBRTC", h[h.NO_SERVICE_AVAILABLE_CDS = 204] = "NO_SERVICE_AVAILABLE_CDS", h[h.NO_SERVICE_AVAILABLE_CDN = 205] = "NO_SERVICE_AVAILABLE_CDN", h[h.NO_SERVICE_AVAILABLE_TDS = 206] = "NO_SERVICE_AVAILABLE_TDS", h[h.NO_SERVICE_AVAILABLE_REPORT = 207] = "NO_SERVICE_AVAILABLE_REPORT", h[h.NO_SERVICE_AVAILABLE_APP_CENTER = 208] = "NO_SERVICE_AVAILABLE_APP_CENTER", h[h.NO_SERVICE_AVAILABLE_ENV0 = 209] = "NO_SERVICE_AVAILABLE_ENV0", h[h.NO_SERVICE_AVAILABLE_VOET = 210] = "NO_SERVICE_AVAILABLE_VOET", h[h.NO_SERVICE_AVAILABLE_STRING_UID = 211] = "NO_SERVICE_AVAILABLE_STRING_UID", h[h.NO_SERVICE_AVAILABLE_WEBRTC_UNILBS = 212] = "NO_SERVICE_AVAILABLE_WEBRTC_UNILBS", h[h.NO_SERVICE_AVAILABLE_UNILBS_FLV = 213] = "NO_SERVICE_AVAILABLE_UNILBS_FLV"; + }(ll || (ll = {})), function(h) { + h[h.K_TIMESTAMP_EXPIRED = 2] = "K_TIMESTAMP_EXPIRED", h[h.K_CHANNEL_PERMISSION_INVALID = 3] = "K_CHANNEL_PERMISSION_INVALID", h[h.K_CERTIFICATE_INVALID = 4] = "K_CERTIFICATE_INVALID", h[h.K_CHANNEL_NAME_EMPTY = 5] = "K_CHANNEL_NAME_EMPTY", h[h.K_CHANNEL_NOT_FOUND = 6] = "K_CHANNEL_NOT_FOUND", h[h.K_TICKET_INVALID = 7] = "K_TICKET_INVALID", h[h.K_CHANNEL_CONFLICTED = 8] = "K_CHANNEL_CONFLICTED", h[h.K_SERVICE_NOT_READY = 9] = "K_SERVICE_NOT_READY", h[h.K_SERVICE_TOO_HEAVY = 10] = "K_SERVICE_TOO_HEAVY", h[h.K_UID_BANNED = 14] = "K_UID_BANNED", h[h.K_IP_BANNED = 15] = "K_IP_BANNED", h[h.K_CHANNEL_BANNED = 16] = "K_CHANNEL_BANNED", h[h.K_AUTO_REBALANCE = 28] = "K_AUTO_REBALANCE", h[h.WARN_NO_AVAILABLE_CHANNEL = 103] = "WARN_NO_AVAILABLE_CHANNEL", h[h.WARN_LOOKUP_CHANNEL_TIMEOUT = 104] = "WARN_LOOKUP_CHANNEL_TIMEOUT", h[h.WARN_LOOKUP_CHANNEL_REJECTED = 105] = "WARN_LOOKUP_CHANNEL_REJECTED", h[h.WARN_OPEN_CHANNEL_TIMEOUT = 106] = "WARN_OPEN_CHANNEL_TIMEOUT", h[h.WARN_OPEN_CHANNEL_REJECTED = 107] = "WARN_OPEN_CHANNEL_REJECTED", h[h.WARN_REQUEST_DEFERRED = 108] = "WARN_REQUEST_DEFERRED", h[h.ERR_DYNAMIC_KEY_TIMEOUT = 109] = "ERR_DYNAMIC_KEY_TIMEOUT", h[h.ERR_NO_AUTHORIZED = 110] = "ERR_NO_AUTHORIZED", h[h.ERR_VOM_SERVICE_UNAVAILABLE = 111] = "ERR_VOM_SERVICE_UNAVAILABLE", h[h.ERR_NO_CHANNEL_AVAILABLE_CODE = 112] = "ERR_NO_CHANNEL_AVAILABLE_CODE", h[h.ERR_MASTER_VOCS_UNAVAILABLE = 114] = "ERR_MASTER_VOCS_UNAVAILABLE", h[h.ERR_INTERNAL_ERROR = 115] = "ERR_INTERNAL_ERROR", h[h.ERR_NO_ACTIVE_STATUS = 116] = "ERR_NO_ACTIVE_STATUS", h[h.ERR_INVALID_UID = 117] = "ERR_INVALID_UID", h[h.ERR_DYNAMIC_KEY_EXPIRED = 118] = "ERR_DYNAMIC_KEY_EXPIRED", h[h.ERR_STATIC_USE_DYANMIC_KE = 119] = "ERR_STATIC_USE_DYANMIC_KE", h[h.ERR_DYNAMIC_USE_STATIC_KE = 120] = "ERR_DYNAMIC_USE_STATIC_KE", h[h.ERR_NO_VOCS_AVAILABLE = 2e3] = "ERR_NO_VOCS_AVAILABLE", h[h.ERR_NO_VOS_AVAILABLE = 2001] = "ERR_NO_VOS_AVAILABLE", h[h.ERR_JOIN_CHANNEL_TIMEOUT = 2002] = "ERR_JOIN_CHANNEL_TIMEOUT", h[h.ERR_REPEAT_JOIN_CHANNEL = 2003] = "ERR_REPEAT_JOIN_CHANNEL", h[h.ERR_JOIN_BY_MULTI_IP = 2004] = "ERR_JOIN_BY_MULTI_IP", h[h.ERR_NOT_JOINED = 2011] = "ERR_NOT_JOINED", h[h.ERR_REPEAT_JOIN_REQUEST = 2012] = "ERR_REPEAT_JOIN_REQUEST", h[h.ERR_INVALID_VENDOR_KEY = 2013] = "ERR_INVALID_VENDOR_KEY", h[h.ERR_INVALID_CHANNEL_NAME = 2014] = "ERR_INVALID_CHANNEL_NAME", h[h.ERR_INVALID_STRINGUID = 2015] = "ERR_INVALID_STRINGUID", h[h.ERR_TOO_MANY_USERS = 2016] = "ERR_TOO_MANY_USERS", h[h.ERR_SET_CLIENT_ROLE_TIMEOUT = 2017] = "ERR_SET_CLIENT_ROLE_TIMEOUT", h[h.ERR_SET_CLIENT_ROLE_NO_PERMISSION = 2018] = "ERR_SET_CLIENT_ROLE_NO_PERMISSION", h[h.ERR_SET_CLIENT_ROLE_ALREADY_IN_USE = 2019] = "ERR_SET_CLIENT_ROLE_ALREADY_IN_USE", h[h.ERR_PUBLISH_REQUEST_INVALID = 2020] = "ERR_PUBLISH_REQUEST_INVALID", h[h.ERR_SUBSCRIBE_REQUEST_INVALID = 2021] = "ERR_SUBSCRIBE_REQUEST_INVALID", h[h.ERR_NOT_SUPPORTED_MESSAGE = 2022] = "ERR_NOT_SUPPORTED_MESSAGE", h[h.ERR_ILLEAGAL_PLUGIN = 2023] = "ERR_ILLEAGAL_PLUGIN", h[h.ERR_REJOIN_TOKEN_INVALID = 2024] = "ERR_REJOIN_TOKEN_INVALID", h[h.ERR_REJOIN_USER_NOT_JOINED = 2025] = "ERR_REJOIN_USER_NOT_JOINED", h[h.ERR_INVALID_OPTIONAL_INFO = 2027] = "ERR_INVALID_OPTIONAL_INFO", h[h.ILLEGAL_AES_PASSWORD = 2028] = "ILLEGAL_AES_PASSWORD", h[h.ILLEGAL_CLIENT_ROLE_LEVEL = 2029] = "ILLEGAL_CLIENT_ROLE_LEVEL", h[h.ERR_TOO_MANY_BROADCASTERS = 2031] = "ERR_TOO_MANY_BROADCASTERS", h[h.ERR_TOO_MANY_SUBSCRIBERS = 2032] = "ERR_TOO_MANY_SUBSCRIBERS", h[h.ERR_LICENSE_MISSING = 32769] = "ERR_LICENSE_MISSING", h[h.ERR_LICENSE_EXPIRED = 32771] = "ERR_LICENSE_EXPIRED", h[h.ERR_LICENSE_MINUTES_EXCEEDED = 32773] = "ERR_LICENSE_MINUTES_EXCEEDED", h[h.ERR_LICENSE_PERIOD_INVALID = 32774] = "ERR_LICENSE_PERIOD_INVALID", h[h.ERR_LICENSE_MULTIPLE_SDK_SERVICE = 32778] = "ERR_LICENSE_MULTIPLE_SDK_SERVICE", h[h.ERR_LICENSE_ILLEGAL = 32783] = "ERR_LICENSE_ILLEGAL", h[h.ERR_TEST_RECOVER = 9e3] = "ERR_TEST_RECOVER", h[h.ERR_TEST_TRYNEXT = 9001] = "ERR_TEST_TRYNEXT", h[h.ERR_TEST_RETRY = 9002] = "ERR_TEST_RETRY"; + }(Rr || (Rr = {})), function(h) { + h.CONNECTING = "connecting", h.CONNECTED = "connected", h.RECONNECTING = "reconnecting", h.CLOSED = "closed"; + }(Rn || (Rn = {})), function(h) { + h.WS_CONNECTED = "ws_connected", h.WS_RECONNECTING = "ws_reconnecting", h.WS_CLOSED = "ws_closed", h.WS_RECONNECT_WAITTING_FINISH = "ws_reconnect_waitting_finish", h.WS_RECONNECT_CREATE_CONNECTION = "ws_reconnect_create_connection", h.ON_BINARY_DATA = "on_binary_data", h.REQUEST_RECOVER = "request_recover", h.REQUEST_JOIN_INFO = "request_join_info", h.REQUEST_REJOIN_INFO = "req_rejoin_info", h.IS_P2P_DISCONNECTED = "is_p2p_dis", h.DISCONNECT_P2P = "dis_p2p", h.ABORT_P2P_EXECUTION = "abort_p2p_execution", h.NEED_RENEW_SESSION = "need-sid", h.REPORT_JOIN_GATEWAY = "report_join_gateway", h.REQUEST_TIMEOUT = "request_timeout", h.REQUEST_SUCCESS = "request_success", h.JOIN_RESPONSE = "join_response", h.DATACHANNEL_PRECONNECT = "datachannel_preconnect", h.DATACHANNEL_CONNECTING = "datachannel_connecting", h.DATACHANNEL_FAILBACK = "datachannel_failback", h.P2P_CONNECTION = "p2p_connection", h.P2P_REMOTE_CANDIDATE_UPDATE = "p2p_remote_candidate_update", h.P2P_SUBSCRIBE = "p2p_subscribe", h.P2P_UNSUBSCRIBE = "p2p_unsubscribe", h.P2P_EXCHANGE_SDP = "p2p_exchange_sdp", h.P2P_ON_ADD_VIDEO_STREAM = "p2p_on_add_video_stream", h.P2P_ON_ADD_AUDIO_STREAM = "p2p_on_add_audio_stream"; + }(cr || (cr = {})), function(h) { + h.PING = "ping", h.PING_BACK = "ping_back", h.JOIN = "join_v3", h.REJOIN = "rejoin_v3", h.LEAVE = "leave", h.SET_CLIENT_ROLE = "set_client_role", h.PUBLISH = "publish", h.PUBLISH_DATASTREAM = "publish_datastream", h.UNPUBLISH = "unpublish", h.UNPUBLISH_DATASTREAM = "unpublish_datastream", h.SUBSCRIBE = "subscribe", h.PRE_SUBSCRIBE = "pre_subscribe", h.SUBSCRIBE_DATASTREAM = "subscribe_datastream", h.SUBSCRIBE_STREAMS = "subscribe_streams", h.UNSUBSCRIBE = "unsubscribe", h.UNSUBSCRIBE_DATASTREAM = "unsubscribe_datastream", h.UNSUBSCRIBE_STREAMS = "unsubscribe_streams", h.SUBSCRIBE_CHANGE = "subscribe_change", h.TRAFFIC_STATS = "traffic_stats", h.RENEW_TOKEN = "renew_token", h.SWITCH_VIDEO_STREAM = "switch_video_stream", h.DEFAULT_VIDEO_STREAM = "default_video_stream", h.SET_FALLBACK_OPTION = "set_fallback_option", h.GATEWAY_INFO = "gateway_info", h.CONTROL = "control", h.SEND_METADATA = "send_metadata", h.DATA_STREAM = "data_stream", h.PICK_SVC_LAYER = "pick_svc_layer", h.RESTART_ICE = "restart_ice", h.CONNECT_PC = "connect_pc", h.SET_VIDEO_PROFILE = "set_video_profile", h.SET_PARAMETER = "set_parameter", h.SET_RTM2_FLAG = "set_rtm2_flag"; + }(mr || (mr = {})), function(h) { + h.WRTC_STATS = "wrtc_stats", h.WS_INFLATE_DATA_LENGTH = "ws_inflate_data_length", h.DENOISER_STATS = "denoiser_stats", h.EXTENSION_USAGE_STATS = "extension_usage_stats"; + }(am || (am = {})), function(h) { + h.ON_USER_ONLINE = "on_user_online", h.ON_USER_OFFLINE = "on_user_offline", h.ON_STREAM_FALLBACK_UPDATE = "on_stream_fallback_update", h.ON_PUBLISH_STREAM = "on_publish_stream", h.ON_UPLINK_STATS = "on_uplink_stats", h.ON_P2P_LOST = "on_p2p_lost", h.ON_REMOVE_STREAM = "on_remove_stream", h.ON_ADD_AUDIO_STREAM = "on_add_audio_stream", h.ON_ADD_VIDEO_STREAM = "on_add_video_stream", h.ON_TOKEN_PRIVILEGE_WILL_EXPIRE = "on_token_privilege_will_expire", h.ON_TOKEN_PRIVILEGE_DID_EXPIRE = "on_token_privilege_did_expire", h.ON_USER_BANNED = "on_user_banned", h.ON_USER_LICENSE_BANNED = "on_user_license_banned", h.ON_NOTIFICATION = "on_notification", h.ON_CRYPT_ERROR = "on_crypt_error", h.MUTE_AUDIO = "mute_audio", h.MUTE_VIDEO = "mute_video", h.UNMUTE_AUDIO = "unmute_audio", h.UNMUTE_VIDEO = "unmute_video", h.ON_P2P_OK = "on_p2p_ok", h.RECEIVE_METADATA = "receive_metadata", h.ON_DATA_STREAM = "on_data_stream", h.ON_RTP_CAPABILITY_CHANGE = "on_rtp_capability_change", h.ON_REMOTE_DATASTREAM_UPDATE = "on_remote_datastream_update", h.ON_REMOTE_FULL_DATASTREAM_INFO = "on_remote_full_datastream_info", h.ENABLE_LOCAL_VIDEO = "enable_local_video", h.DISABLE_LOCAL_VIDEO = "disable_local_video", h.ENABLE_LOCAL_AUDIO = "enable_local_audio", h.DISABLE_LOCAL_AUDIO = "disable_local_audio", h.ON_PUBLISHED_USER_LIST = "on_published_user_list"; + }(Zr || (Zr = {})), function(h) { + h.CONNECTION_STATE_CHANGE = "CONNECTION_STATE_CHANGE", h.NEED_ANSWER = "NEED_ANSWER", h.NEED_RENEGOTIATE = "NEED_RENEGOTIATE", h.P2P_LOST = "P2P_LOST", h.GATEWAY_P2P_LOST = "GATEWAY_P2P_LOST", h.NEED_UNPUB = "NEED_UNPUB", h.NEED_UNSUB = "NEED_UNSUB", h.NEED_UPLOAD = "NEED_UPLOAD", h.NEED_CONTROL = "NEED_CONTROL", h.START_RECONNECT = "START_RECONNECT", h.END_RECONNECT = "END_RECONNECT", h.NEED_SIGNAL_RTT = "NEED_SIGNAL_RTT"; + }(qq || (qq = {})), function(h) { + h.SEND_ONLY = "SEND_ONLY", h.RECEIVE_ONLY = "RECEIVE_ONLY"; + }(cl || (cl = {})), function(h) { + h.CONNECTED = "websocket:connected", h.RECONNECTING = "websocket:reconnecting", h.WILL_RECONNECT = "websocket:will_reconnect", h.CLOSED = "websocket:closed", h.FAILED = "websocket:failed", h.ON_MESSAGE = "websocket:on_message", h.REQUEST_NEW_URLS = "websocket:request_new_urls", h.RECONNECT_WAITTING_FINISH = "websocket:reconnect_waitting_finish", h.RECONNECT_CREATE_CONNECTION = "websocket:reconnect_create_connection", h.ON_TOKEN_PRIVILEGE_DID_EXPIRE = "websocket:on_token_privilege_did_expire"; + }(Yr || (Yr = {})); + class Je extends mt { + constructor(s) { + super(s, arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "", arguments.length > 2 ? arguments[2] : void 0), Z(this, "name", "AgoraRTCException"); + } + print() { + let s = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "error"; + return super.print(s, ie); + } + throw() { + super.throw(ie); + } + } + function Qj(h) { + if (typeof h != "string" || !/^[a-zA-Z0-9 \!\#\$\%\&\(\)\+\-\:\;\<\=\.\>\?\@\[\]\^\_\{\}\|\~\,]{1,64}$/.test(h)) + throw ie.error("Invalid Channel Name ".concat(h)), new Je(_e.INVALID_PARAMS, "The length must be within 64 bytes. The supported characters: a-z,A-Z,0-9,space,!, #, $, %, &, (, ), +, -, :, ;, <, =, ., >, ?, @, [, ], ^, _, {, }, |, ~, ,"); + } + function e5(h) { + if (s = h, !(typeof s == "number" && Math.floor(s) === s && 0 <= s && s <= 4294967295 || $Z(h, 1, 255))) + throw new Je(_e.INVALID_PARAMS, "[String uid] Length of the string: [1,255]. ASCII characters only. [Number uid] The value range is [0,10000]"); + var s; + typeof h == "string" && ie.warn("You input a string as the user ID, to ensure better end-user experience, Agora highly suggests not using a string as the user ID."); + } + (function(h) { + h.TRANSCODE = "mix_streaming", h.RAW = "raw_streaming", h.INJECT = "inject_streaming"; + })(Qo || (Qo = {})), function(h) { + h[h.INJECT_STREAM_STATUS_START_SUCCESS = 0] = "INJECT_STREAM_STATUS_START_SUCCESS", h[h.INJECT_STREAM_STATUS_START_ALREADY_EXISTS = 1] = "INJECT_STREAM_STATUS_START_ALREADY_EXISTS", h[h.INJECT_STREAM_STATUS_START_UNAUTHORIZED = 2] = "INJECT_STREAM_STATUS_START_UNAUTHORIZED", h[h.INJECT_STREAM_STATUS_START_TIMEOUT = 3] = "INJECT_STREAM_STATUS_START_TIMEOUT", h[h.INJECT_STREAM_STATUS_START_FAILED = 4] = "INJECT_STREAM_STATUS_START_FAILED", h[h.INJECT_STREAM_STATUS_STOP_SUCCESS = 5] = "INJECT_STREAM_STATUS_STOP_SUCCESS", h[h.INJECT_STREAM_STATUS_STOP_NOT_FOUND = 6] = "INJECT_STREAM_STATUS_STOP_NOT_FOUND", h[h.INJECT_STREAM_STATUS_STOP_UNAUTHORIZED = 7] = "INJECT_STREAM_STATUS_STOP_UNAUTHORIZED", h[h.INJECT_STREAM_STATUS_STOP_TIMEOUT = 8] = "INJECT_STREAM_STATUS_STOP_TIMEOUT", h[h.INJECT_STREAM_STATUS_STOP_FAILED = 9] = "INJECT_STREAM_STATUS_STOP_FAILED", h[h.INJECT_STREAM_STATUS_BROKEN = 10] = "INJECT_STREAM_STATUS_BROKEN"; + }(t_ || (t_ = {})); + const APe = { alpha: 1, height: 640, width: 360, x: 0, y: 0, zOrder: 0, audioChannel: 0 }, t5 = { x: 0, y: 0, width: 160, height: 160, zOrder: 255, alpha: 1 }; + function r5(h, s) { + Gs(h.url, "".concat(s, ".url"), 1, 1e3, !1), za(h.x) || Wi(h.x, "".concat(s, ".x"), 0, 1e4), za(h.y) || Wi(h.y, "".concat(s, ".y"), 0, 1e4), za(h.width) || Wi(h.width, "".concat(s, ".width"), 0, 1e4), za(h.height) || Wi(h.height, "".concat(s, ".height"), 0, 1e4), za(h.zOrder) || Wi(h.zOrder, "".concat(s, ".zOrder"), 0, 255), za(h.alpha) || Wi(h.alpha, "".concat(s, ".alpha"), 0, 1, !1); + } + const RPe = { audioBitrate: 48, audioChannels: 1, audioSampleRate: 48e3, backgroundColor: 0, height: 360, lowLatency: !1, videoBitrate: 400, videoCodecProfile: 100, videoCodecType: 1, videoFrameRate: 15, videoGop: 30, width: 640, images: [], userConfigs: [], userConfigExtraInfo: "" }, DPe = { audioBitrate: 48, audioChannels: 2, audioVolume: 100, audioSampleRate: 48e3, height: 0, width: 0, videoBitrate: 400, videoFramerate: 15, videoGop: 30 }; + var Nd, jC, _o, Jq, ul, ap, Yl, r_, Ci, Ka, TS, Bo, _M, vi; + function Qq(h) { + if (!h.channelName) + throw new Je(_e.INVALID_PARAMS, "invalid channelName in info"); + if (typeof h.uid != "number") + throw new Je(_e.INVALID_PARAMS, "invalid uid in info, uid must be a number"); + return h.token && Gs(h.token, "info.token", 1, 2047), e5(h.uid), Qj(h.channelName), !0; + } + (function(h) { + h.WARNING = "@live_uap-warning", h.ERROR = "@line_uap-error", h.PUBLISH_STREAM_STATUS = "@live_uap-publish-status", h.INJECT_STREAM_STATUS = "@live_uap-inject-status", h.WORKER_STATUS = "@live_uap-worker-status", h.REQUEST_NEW_ADDRESS = "@live_uap-request-address"; + })(Nd || (Nd = {})), function(h) { + h.REQUEST_WORKER_MANAGER_LIST = "@live_req_worker_manager"; + }(jC || (jC = {})), function(h) { + h[h.LIVE_STREAM_RESPONSE_SUCCEED = 200] = "LIVE_STREAM_RESPONSE_SUCCEED", h[h.LIVE_STREAM_RESPONSE_ALREADY_EXISTS_STREAM = 454] = "LIVE_STREAM_RESPONSE_ALREADY_EXISTS_STREAM", h[h.LIVE_STREAM_RESPONSE_TRANSCODING_PARAMETER_ERROR = 450] = "LIVE_STREAM_RESPONSE_TRANSCODING_PARAMETER_ERROR", h[h.LIVE_STREAM_RESPONSE_BAD_STREAM = 451] = "LIVE_STREAM_RESPONSE_BAD_STREAM", h[h.LIVE_STREAM_RESPONSE_WM_PARAMETER_ERROR = 400] = "LIVE_STREAM_RESPONSE_WM_PARAMETER_ERROR", h[h.LIVE_STREAM_RESPONSE_WM_WORKER_NOT_EXIST = 404] = "LIVE_STREAM_RESPONSE_WM_WORKER_NOT_EXIST", h[h.LIVE_STREAM_RESPONSE_NOT_AUTHORIZED = 456] = "LIVE_STREAM_RESPONSE_NOT_AUTHORIZED", h[h.LIVE_STREAM_RESPONSE_FAILED_LOAD_IMAGE = 457] = "LIVE_STREAM_RESPONSE_FAILED_LOAD_IMAGE", h[h.LIVE_STREAM_RESPONSE_REQUEST_TOO_OFTEN = 429] = "LIVE_STREAM_RESPONSE_REQUEST_TOO_OFTEN", h[h.LIVE_STREAM_RESPONSE_NOT_FOUND_PUBLISH = 452] = "LIVE_STREAM_RESPONSE_NOT_FOUND_PUBLISH", h[h.LIVE_STREAM_RESPONSE_NOT_SUPPORTED = 453] = "LIVE_STREAM_RESPONSE_NOT_SUPPORTED", h[h.LIVE_STREAM_RESPONSE_MAX_STREAM_NUM = 455] = "LIVE_STREAM_RESPONSE_MAX_STREAM_NUM", h[h.LIVE_STREAM_RESPONSE_INTERNAL_SERVER_ERROR = 500] = "LIVE_STREAM_RESPONSE_INTERNAL_SERVER_ERROR", h[h.LIVE_STREAM_RESPONSE_WORKER_LOST = 501] = "LIVE_STREAM_RESPONSE_WORKER_LOST", h[h.LIVE_STREAM_RESPONSE_RESOURCE_LIMIT = 502] = "LIVE_STREAM_RESPONSE_RESOURCE_LIMIT", h[h.LIVE_STREAM_RESPONSE_WORKER_QUIT = 503] = "LIVE_STREAM_RESPONSE_WORKER_QUIT", h[h.ERROR_FAIL_SEND_MESSAGE = 504] = "ERROR_FAIL_SEND_MESSAGE", h[h.PUBLISH_STREAM_STATUS_ERROR_RTMP_HANDSHAKE = 30] = "PUBLISH_STREAM_STATUS_ERROR_RTMP_HANDSHAKE", h[h.PUBLISH_STREAM_STATUS_ERROR_RTMP_CONNECT = 31] = "PUBLISH_STREAM_STATUS_ERROR_RTMP_CONNECT", h[h.PUBLISH_STREAM_STATUS_ERROR_RTMP_PUBLISH = 32] = "PUBLISH_STREAM_STATUS_ERROR_RTMP_PUBLISH", h[h.PUBLISH_STREAM_STATUS_ERROR_PUBLISH_BROKEN = 33] = "PUBLISH_STREAM_STATUS_ERROR_PUBLISH_BROKEN"; + }(_o || (_o = {})), function(h) { + h.CONNECT_FAILED = "connect failed", h.CONNECT_TIMEOUT = "connect timeout", h.WS_DISCONNECTED = "websocket disconnected", h.REQUEST_TIMEOUT = "request timeout", h.REQUEST_FAILED = "request failed", h.WAIT_STATUS_TIMEOUT = "wait status timeout", h.WAIT_STATUS_ERROR = "wait status error", h.BAD_STATE = "bad state", h.WS_ABORT = "ws abort", h.AP_REQUEST_TIMEOUT = "AP request timeout", h.AP_JSON_PARSE_ERROR = "AP json parse error", h.AP_REQUEST_ERROR = "AP request error", h.AP_REQUEST_ABORT = "AP request abort"; + }(Jq || (Jq = {})), function(h) { + h[h.SetSdkProfile = 0] = "SetSdkProfile", h[h.SetSourceChannel = 1] = "SetSourceChannel", h[h.SetSourceUserId = 2] = "SetSourceUserId", h[h.SetDestChannel = 3] = "SetDestChannel", h[h.StartPacketTransfer = 4] = "StartPacketTransfer", h[h.StopPacketTransfer = 5] = "StopPacketTransfer", h[h.UpdateDestChannel = 6] = "UpdateDestChannel", h[h.Reconnect = 7] = "Reconnect", h[h.SetVideoProfile = 8] = "SetVideoProfile"; + }(ul || (ul = {})), function(h) { + h.NETWORK_DISCONNECTED = "NETWORK_DISCONNECTED", h.NETWORK_CONNECTED = "NETWORK_CONNECTED", h.PACKET_JOINED_SRC_CHANNEL = "PACKET_JOINED_SRC_CHANNEL", h.PACKET_JOINED_DEST_CHANNEL = "PACKET_JOINED_DEST_CHANNEL", h.PACKET_SENT_TO_DEST_CHANNEL = "PACKET_SENT_TO_DEST_CHANNEL", h.PACKET_RECEIVED_VIDEO_FROM_SRC = "PACKET_RECEIVED_VIDEO_FROM_SRC", h.PACKET_RECEIVED_AUDIO_FROM_SRC = "PACKET_RECEIVED_AUDIO_FROM_SRC", h.PACKET_UPDATE_DEST_CHANNEL = "PACKET_UPDATE_DEST_CHANNEL", h.PACKET_UPDATE_DEST_CHANNEL_REFUSED = "PACKET_UPDATE_DEST_CHANNEL_REFUSED", h.PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = "PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE"; + }(ap || (ap = {})), function(h) { + h.RELAY_STATE_IDLE = "RELAY_STATE_IDLE", h.RELAY_STATE_CONNECTING = "RELAY_STATE_CONNECTING", h.RELAY_STATE_RUNNING = "RELAY_STATE_RUNNING", h.RELAY_STATE_FAILURE = "RELAY_STATE_FAILURE"; + }(Yl || (Yl = {})), function(h) { + h.RELAY_OK = "RELAY_OK", h.SERVER_CONNECTION_LOST = "SERVER_CONNECTION_LOST", h.SRC_TOKEN_EXPIRED = "SRC_TOKEN_EXPIRED", h.DEST_TOKEN_EXPIRED = "DEST_TOKEN_EXPIRED"; + }(r_ || (r_ = {})), function(h) { + h.High = "high", h.Low = "low", h.Audio = "audio", h.Screen = "screen", h.ScreenLow = "screen_low"; + }(Ci || (Ci = {})), function(h) { + h.DISCONNECT = "disconnect", h.CONNECTION_STATE_CHANGE = "connection-state-change", h.NETWORK_QUALITY = "network-quality", h.STREAM_TYPE_CHANGE = "stream-type-change", h.IS_P2P_DISCONNECTED = "is-p2p-dis", h.DISCONNECT_P2P = "dis-p2p", h.REQUEST_NEW_GATEWAY_LIST = "req-gate-url", h.NEED_RENEW_SESSION = "need-sid", h.REQUEST_P2P_CONNECTION_PARAMS = "request-p2p-connection-params", h.JOIN_RESPONSE = "join-response", h.REQUEST_DC_CONNECTION_PARAMS = "request-dc-connection-params", h.RESET_CONNECTION_EVENTS = "reset-connection-events", h.DATACHANNEL_PRECONNECT = "datachannel_preconnect", h.DATACHANNEL_FAILBACK = "datachannel_failback", h.RESET_SIGNAL = "reset-signal"; + }(Ka || (Ka = {})), function(h) { + h.P2P_DISCONNECTED = "P2P_DISCONNECTED", h.A_ROUND_WS_FAILED = "A_ROUND_WS_FAILED", h.TIMEOUT = "TIMEOUT", h.UNKNOWN_REASON = "UNKNOWN_REASON"; + }(TS || (TS = {})), function(h) { + h[h.Nothing = 0] = "Nothing", h[h.Audio = 1] = "Audio", h[h.LwoVideo = 2] = "LwoVideo", h[h.Video = 4] = "Video", h[h.Data = 8] = "Data", h[h.DataStream0 = 256] = "DataStream0", h[h.DataStream1 = 512] = "DataStream1", h[h.DataStream2 = 1024] = "DataStream2", h[h.DataStream3 = 2048] = "DataStream3", h[h.DataStream4 = 4096] = "DataStream4", h[h.DataStream5 = 8192] = "DataStream5", h[h.DataStream6 = 16384] = "DataStream6", h[h.DataStream7 = 32768] = "DataStream7"; + }(Bo || (Bo = {})), function(h) { + h[h.websocket = 0] = "websocket", h[h.datachannel = 1] = "datachannel"; + }(_M || (_M = {})), function(h) { + h.CHINA = "CHINA", h.ASIA = "ASIA", h.NORTH_AMERICA = "NORTH_AMERICA", h.EUROPE = "EUROPE", h.JAPAN = "JAPAN", h.INDIA = "INDIA", h.KOREA = "KOREA", h.HKMC = "HKMC", h.US = "US", h.OCEANIA = "OCEANIA", h.SOUTH_AMERICA = "SOUTH_AMERICA", h.AFRICA = "AFRICA", h.OVERSEA = "OVERSEA", h.GLOBAL = "GLOBAL", h.EXTENSIONS = "EXTENSIONS"; + }(vi || (vi = {})); + const eJ = [vi.AFRICA, vi.ASIA, vi.CHINA, vi.EUROPE, vi.GLOBAL, vi.INDIA, vi.JAPAN, vi.NORTH_AMERICA, vi.OCEANIA, vi.OVERSEA, vi.SOUTH_AMERICA]; + var Ps; + (function(h) { + h.CHINA = "CN", h.ASIA = "AS", h.NORTH_AMERICA = "NA", h.EUROPE = "EU", h.JAPAN = "JP", h.INDIA = "IN", h.KOREA = "KR", h.HKMC = "HK", h.US = "US", h.OCEANIA = "OC", h.SOUTH_AMERICA = "SA", h.AFRICA = "AF", h.OVERSEA = "OVERSEA", h.GLOBAL = "GLOBAL", h.EXTENSIONS = "GLOBAL"; + })(Ps || (Ps = {})); + const SM = { CHINA: {}, ASIA: { CODE: Ps.ASIA, WEBCS_DOMAIN: ["ap-web-1-asia.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-asia.agora.io"], PROXY_CS: ["proxy-ap-web-asia.agora.io"], CDS_AP: ["cds-ap-web-asia.agora.io", "cds-ap-web-asia2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-asia.agora.io", "sua-ap-web-asia2.agora.io"], UAP_AP: ["uap-ap-web-asia.agora.io", "uap-ap-web-asia2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-asia.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-asia.agora.io"], LOG_UPLOAD_SERVER: ["logservice-asia.agora.io"], PROXY_SERVER_TYPE3: ["southeast-asia.webrtc-cloud-proxy.sd-rtn.com"] }, NORTH_AMERICA: { CODE: Ps.NORTH_AMERICA, WEBCS_DOMAIN: ["ap-web-1-north-america.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-north-america.agora.io"], PROXY_CS: ["proxy-ap-web-america.agora.io"], CDS_AP: ["cds-ap-web-america.agora.io", "cds-ap-web-america2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-america.agora.io", "sua-ap-web-america2.agora.io"], UAP_AP: ["uap-ap-web-america.agora.io", "uap-ap-web-america2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-north-america.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-north-america.agora.io"], LOG_UPLOAD_SERVER: ["logservice-north-america.agora.io"], PROXY_SERVER_TYPE3: ["east-usa.webrtc-cloud-proxy.sd-rtn.com"] }, EUROPE: { CODE: Ps.EUROPE, WEBCS_DOMAIN: ["ap-web-1-europe.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-europe.agora.io"], PROXY_CS: ["proxy-ap-web-europe.agora.io"], CDS_AP: ["cds-ap-web-europe.agora.io", "cds-ap-web-europe2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-europe.agora.io", "sua-ap-web-europe.agora.io"], UAP_AP: ["uap-ap-web-europe.agora.io", "uap-ap-web-europe2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-europe.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-europe.agora.io"], LOG_UPLOAD_SERVER: ["logservice-europe.agora.io"], PROXY_SERVER_TYPE3: ["europe.webrtc-cloud-proxy.sd-rtn.com"] }, JAPAN: { CODE: Ps.JAPAN, WEBCS_DOMAIN: ["ap-web-1-japan.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-japan.agora.io"], PROXY_CS: ["proxy-ap-web-japan.agora.io"], CDS_AP: ["cds-ap-web-japan.agora.io", "cds-ap-web-japan2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-japan.agora.io", "sua-ap-web-japan2.agora.io"], UAP_AP: ["uap-ap-web-japan.agora.io", "uap-ap-web-japan2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-japan.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-japan.agora.io"], LOG_UPLOAD_SERVER: ["logservice-japan.agora.io"], PROXY_SERVER_TYPE3: ["japan.webrtc-cloud-proxy.sd-rtn.com"] }, INDIA: { CODE: Ps.INDIA, WEBCS_DOMAIN: ["ap-web-1-india.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-india.agora.io"], PROXY_CS: ["proxy-ap-web-india.agora.io"], CDS_AP: ["cds-ap-web-india.agora.io", "cds-ap-web-india2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-india.agora.io", "sua-ap-web-india2.agora.io"], UAP_AP: ["uap-ap-web-india.agora.io", "uap-ap-web-india2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-india.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-india.agora.io"], LOG_UPLOAD_SERVER: ["logservice-india.agora.io"], PROXY_SERVER_TYPE3: ["india.webrtc-cloud-proxy.sd-rtn.com"] }, KOREA: { CODE: Ps.KOREA, WEBCS_DOMAIN: ["ap-web-1-korea.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-korea.agora.io"], PROXY_CS: ["proxy-ap-web-korea.agora.io"], CDS_AP: ["cds-ap-web-korea.agora.io", "cds-ap-web-korea2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-korea.agora.io", "sua-ap-web-korea2.agora.io"], UAP_AP: ["uap-ap-web-korea.agora.io", "uap-ap-web-korea2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-korea.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-korea.agora.io"], LOG_UPLOAD_SERVER: ["logservice-korea.agora.io"], PROXY_SERVER_TYPE3: ["korea.webrtc-cloud-proxy.sd-rtn.com"] }, HKMC: { CODE: Ps.HKMC, WEBCS_DOMAIN: ["ap-web-1-hkmc.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-hkmc.agora.io"], PROXY_CS: ["proxy-ap-web-hkmc.agora.io"], CDS_AP: ["cds-ap-web-hkmc.agora.io", "cds-ap-web-hkmc2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-hkmc.agora.io", "sua-ap-web-hkmc2.agora.io"], UAP_AP: ["uap-ap-web-hkmc.agora.io", "uap-ap-web-hkmc2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-hkmc.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-hkmc.agora.io"], LOG_UPLOAD_SERVER: ["logservice-hkmc.agora.io"], PROXY_SERVER_TYPE3: ["hkmc.webrtc-cloud-proxy.sd-rtn.com"] }, US: { CODE: Ps.US, WEBCS_DOMAIN: ["ap-web-1-us.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-us.agora.io"], PROXY_CS: ["proxy-ap-web-us.agora.io"], CDS_AP: ["cds-ap-web-us.agora.io", "cds-ap-web-us2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-us.agora.io", "sua-ap-web-us2.agora.io"], UAP_AP: ["uap-ap-web-us.agora.io", "uap-ap-web-us2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-us.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-us.agora.io"], LOG_UPLOAD_SERVER: ["logservice-us.agora.io"], PROXY_SERVER_TYPE3: ["us.webrtc-cloud-proxy.sd-rtn.com"] }, OVERSEA: { CODE: Ps.OVERSEA, WEBCS_DOMAIN: ["ap-web-1-oversea.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-oversea.agora.io"], PROXY_CS: ["proxy-ap-web-oversea.agora.io"], CDS_AP: ["cds-ap-web-oversea.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-oversea.agora.io"], UAP_AP: ["uap-ap-web-oversea.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-oversea.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-oversea.agora.io"], LOG_UPLOAD_SERVER: ["logservice-oversea.agora.io"], PROXY_SERVER_TYPE3: ["webrtc-cloud-proxy.agora.io"] }, GLOBAL: { CODE: Ps.GLOBAL, WEBCS_DOMAIN: ["webrtc2-ap-web-1.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["webrtc2-ap-web-3.agora.io"], PROXY_CS: ["ap-proxy-1.agora.io", "ap-proxy-2.agora.io"], CDS_AP: ["cds-ap-web-1.agora.io", "cds-ap-web-3.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-1.agora.io", "sua-ap-web-3.agora.io"], UAP_AP: ["uap-ap-web-1.agora.io", "uap-ap-web-3.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2.agora.io"], LOG_UPLOAD_SERVER: ["logservice.agora.io"], PROXY_SERVER_TYPE3: ["webrtc-cloud-proxy.sd-rtn.com"] }, OCEANIA: { CODE: Ps.OCEANIA, WEBCS_DOMAIN: ["ap-web-1-oceania.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-oceania.agora.io"], PROXY_CS: ["proxy-ap-web-oceania.agora.io"], CDS_AP: ["cds-ap-web-oceania.agora.io", "cds-ap-web-oceania2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-oceania.agora.io", "sua-ap-web-oceania2.agora.io"], UAP_AP: ["uap-ap-web-oceania.agora.io", "uap-ap-web-oceania2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-oceania.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-oceania.agora.io"], LOG_UPLOAD_SERVER: ["logservice-oceania.agora.io"], PROXY_SERVER_TYPE3: ["oceania.webrtc-cloud-proxy.sd-rtn.com"] }, SOUTH_AMERICA: { CODE: Ps.SOUTH_AMERICA, WEBCS_DOMAIN: ["ap-web-1-south-america.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-south-america.agora.io"], PROXY_CS: ["proxy-ap-web-south-america.agora.io"], CDS_AP: ["cds-ap-web-south-america.agora.io", "cds-ap-web-south-america2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-south-america.agora.io", "sua-ap-web-south-america2.agora.io"], UAP_AP: ["uap-ap-web-south-america.agora.io", "uap-ap-web-south-america2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-south-america.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-south-america.agora.io"], LOG_UPLOAD_SERVER: ["logservice-south-america.agora.io"], PROXY_SERVER_TYPE3: ["south-america.webrtc-cloud-proxy.sd-rtn.com"] }, AFRICA: { CODE: Ps.AFRICA, WEBCS_DOMAIN: ["ap-web-1-africa.agora.io"], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-africa.agora.io"], PROXY_CS: ["proxy-ap-web-africa.agora.io"], CDS_AP: ["cds-ap-web-africa.agora.io", "cds-ap-web-africa2.agora.io"], ACCOUNT_REGISTER: ["sua-ap-web-africa.agora.io", "sua-ap-web-africa2.agora.io"], UAP_AP: ["uap-ap-web-africa.agora.io", "uap-ap-web-africa2.agora.io"], EVENT_REPORT_DOMAIN: ["statscollector-1-africa.agora.io"], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-africa.agora.io"], LOG_UPLOAD_SERVER: ["logservice-south-africa.agora.io"], PROXY_SERVER_TYPE3: ["africa.webrtc-cloud-proxy.sd-rtn.com"] }, EXTENSIONS: {} }; + var kx, tJ, pr, Ys, op, Mt, Ai, Nr, rJ, ih, ah, es, Sg, io, Ld, nJ, gu, Xh, n_, Za, i_, bg, iJ, n5; + Xj && (SM.CHINA = { CODE: Ps.CHINA, WEBCS_DOMAIN: ["webrtc2-2.ap.sd-rtn.com"], WEBCS_DOMAIN_BACKUP_LIST: ["webrtc2-4.ap.sd-rtn.com"], PROXY_CS: ["proxy-web.ap.sd-rtn.com"], CDS_AP: ["cds-web-2.ap.sd-rtn.com", "cds-web-4.ap.sd-rtn.com"], ACCOUNT_REGISTER: ["sua-web-2.ap.sd-rtn.com", "sua-web-4.ap.sd-rtn.com"], UAP_AP: ["uap-web-2.ap.sd-rtn.com", "uap-web-4.ap.sd-rtn.com"], EVENT_REPORT_DOMAIN: ["web-3.statscollector.sd-rtn.com"], EVENT_REPORT_BACKUP_DOMAIN: ["web-4.statscollector.sd-rtn.com"], LOG_UPLOAD_SERVER: ["logservice-china.agora.io"], PROXY_SERVER_TYPE3: ["east-cn.webrtc-cloud-proxy.sd-rtn.com"] }), function(h) { + h.UPDATE_BITRATE_LIMIT = "update_bitrate_limit"; + }(kx || (kx = {})); + class aJ extends Ra { + constructor(s, c) { + super(), Z(this, "onICEConnectionStateChange", void 0), Z(this, "onConnectionStateChange", void 0), Z(this, "onDTLSTransportStateChange", void 0), Z(this, "onDTLSTransportError", void 0), Z(this, "onICETransportStateChange", void 0), Z(this, "onFirstAudioReceived", void 0), Z(this, "onFirstVideoReceived", void 0), Z(this, "onFirstAudioDecoded", void 0), Z(this, "onFirstVideoDecoded", void 0), Z(this, "onFirstVideoDecodedTimeout", void 0), Z(this, "onSelectedLocalCandidateChanged", void 0), Z(this, "onSelectedRemoteCandidateChanged", void 0); + } + } + class bM extends aJ { + constructor(s, c) { + super(s, c); + } + } + (function(h) { + h.SEND = "sendonly", h.RECV = "recvonly", h.SENDRECV = "sendrecv", h.INACTIVE = "inactive"; + })(tJ || (tJ = {})), function(h) { + h.VIDEO = "video", h.AUDIO = "audio"; + }(pr || (pr = {})), function(h) { + h[h.UDP = 0] = "UDP", h[h.TCP = 1] = "TCP", h[h.RELAY = 2] = "RELAY"; + }(Ys || (Ys = {})), function(h) { + h[h.FIRST_CONNECTION = 0] = "FIRST_CONNECTION", h[h.TCP_RESTART = 1] = "TCP_RESTART", h[h.RELAY_RESTART = 2] = "RELAY_RESTART", h[h.OLD_FIRST_CONNECTION = 10] = "OLD_FIRST_CONNECTION", h[h.OLD_RESTART = 11] = "OLD_RESTART", h[h.DISCONNECTED_OR_FAILED = 20] = "DISCONNECTED_OR_FAILED"; + }(op || (op = {})), function(h) { + h.LocalVideoTrack = "videoTrack", h.LocalAudioTrack = "audioTrack", h.LocalVideoLowTrack = "videoLowTrack"; + }(Mt || (Mt = {})), function(h) { + h.New = "new", h.Connected = "connected", h.Reconnecting = "reconnecting", h.Disconnected = "disconnected"; + }(Ai || (Ai = {})), function(h) { + h.StateChange = "stateChange", h.IceConnectionStateChange = "iceConnectionStateChange", h.RequestMuteLocal = "requestMuteLocal", h.RequestUnmuteLocal = "requestUnmuteLocal", h.RequestRePublish = "requestRePublish", h.RequestRePublishDataChannel = "requestRePublishDataChannel", h.RequestReSubscribe = "requestReSubscribe", h.RequestUploadStats = "requestUploadStats", h.RequestUpload = "requestUpload", h.MediaReconnectStart = "MediaReconnectStart", h.MediaReconnectEnd = "MediaReconnectEnd", h.NeedSignalRTT = "NeedSignalRTT", h.RequestRestartICE = "RequestRestartIce", h.PeerConnectionStateChange = "PeerConnectionStateChange", h.RequestReconnect = "RequestReconnect", h.RequestReconnectPC = "RequestReconnectPC", h.RequestUnpublishForReconnectPC = "RequestUnpublishForReconnectPC", h.P2PLost = "P2PLost", h.UpdateVideoEncoder = "UpdateVideoEncoder", h.ConnectionTypeChange = "ConnectionTypeChange", h.RequestLowStreamParameter = "RequestLowStreamParameter", h.QueryClientConnectionState = "QueryClientConnectionState", h.LocalCandidate = "LocalCandidate", h.RequestP2PMuteLocal = "requestP2PMuteLocal", h.RequestP2PUnPublish = "RequestP2PUnPublish", h.RequestP2PUnmuteRemote = "RequestP2PUnmuteRemote", h.RequestP2PMuteRemote = "RequestP2PMuteRemote", h.RequestP2PRestartICE = "RequestP2PRestartICE"; + }(Nr || (Nr = {})), function(h) { + h.MUTE_LOCAL_VIDEO = "mute_local_video", h.MUTE_LOCAL_AUDIO = "mute_local_audio", h.UNMUTE_LOCAL_VIDEO = "unmute_local_video", h.UNMUTE_LOCAL_AUDIO = "unmute_local_audio", h.MUTE_REMOTE_VIDEO = "mute_remote_video", h.MUTE_REMOTE_AUDIO = "mute_remote_audio", h.UNMUTE_REMOTE_VIDEO = "unmute_remote_video", h.UNMUTE_REMOTE_AUDIO = "unmute_remote_audio"; + }(rJ || (rJ = {})), function(h) { + h.CONNECTING = "CONNECTING", h.RECONNECTING = "RECONNECTING", h.CONNECTED = "CONNECTED", h.CLOSED = "CLOSED"; + }(ih || (ih = {})), function(h) { + h[h.CONNECT_AP = 0] = "CONNECT_AP", h[h.AP_CONNECTED = 1] = "AP_CONNECTED", h[h.CONNECT_WORKER_MANAGER = 2] = "CONNECT_WORKER_MANAGER", h[h.WORKER_MANAGER_CONNECTED = 3] = "WORKER_MANAGER_CONNECTED", h[h.GET_WORKER_MANAGER_RESPONSE = 4] = "GET_WORKER_MANAGER_RESPONSE", h[h.CONNECT_WORKER = 5] = "CONNECT_WORKER", h[h.WORKER_CONNECTED = 6] = "WORKER_CONNECTED", h[h.CLOSED = 7] = "CLOSED"; + }(ah || (ah = {})), function(h) { + h.CONNECTION_STATE_CHANGE = "connection-state-change", h.STATE_CHANGE = "state-change", h.INSPECT_RESULT = "inspect-result", h.CLIENT_LOCAL_VIDEO_TRACK = "client-local-video-track", h.REQUEST_NEW_WORKER_URL = "request-new-worker-url"; + }(es || (es = {})), function(h) { + h.NETWORK_ERROR = "NETWORK_ERROR", h.SERVER_ERROR = "SERVER_ERROR", h.MULTI_IP = "MULTI_IP", h.TIMEOUT = "TIMEOUT", h.OFFLINE = "OFFLINE", h.LEAVE = "LEAVE", h.P2P_FAILED = "P2P_FAILED", h.FALLBACK = "FALLBACK"; + }(Sg || (Sg = {})), function(h) { + h.CONNECTED = "transmitter:connected", h.RECONNECTING = "transmitter:reconnecting", h.WILL_RECONNECT = "transmitter:will_reconnect", h.CLOSED = "transmitter:closed", h.FAILED = "transmitter:failed", h.ON_MESSAGE = "transmitter:on_message", h.REQUEST_NEW_URLS = "transmitter:request_new_urls", h.RECONNECT_WAITTING_FINISH = "transmitter:reconnect_waitting_finish", h.RECONNECT_CREATE_CONNECTION = "transmitter:reconnect_create_connection", h.ON_TOKEN_PRIVILEGE_DID_EXPIRE = "transmitter:on_token_privilege_did_expire", h.TO_CONNECT_DATACHANNEL = "transmitter:to_connect_datachannel", h.FAILBACK = "transmitter:failback"; + }(io || (io = {})), function(h) { + h.CAMERA_CHANGED = "camera-changed", h.MICROPHONE_CHANGED = "microphone-changed", h.PLAYBACK_DEVICE_CHANGED = "playback-device-changed", h.AUDIO_AUTOPLAY_FAILED = "audio-autoplay-failed", h.AUTOPLAY_FAILED = "autoplay-failed", h.AUDIO_CONTEXT_STATE_CHANGED = "audio-context-state-changed", h.SECURITY_POLICY_VIOLATION = "security-policy-violation"; + }(Ld || (Ld = {})), function(h) { + h[h.APP_TYPE_INVALID_VALUE = -1] = "APP_TYPE_INVALID_VALUE", h[h.APP_TYPE_NATIVE = 0] = "APP_TYPE_NATIVE", h[h.APP_TYPE_NATIVE_COCOS = 1] = "APP_TYPE_NATIVE_COCOS", h[h.APP_TYPE_NATIVE_UNITY = 2] = "APP_TYPE_NATIVE_UNITY", h[h.APP_TYPE_NATIVE_ELECTRON = 3] = "APP_TYPE_NATIVE_ELECTRON", h[h.APP_TYPE_NATIVE_FLUTTER = 4] = "APP_TYPE_NATIVE_FLUTTER", h[h.APP_TYPE_NATIVE_UNREAL = 5] = "APP_TYPE_NATIVE_UNREAL", h[h.APP_TYPE_NATIVE_XAMARIN = 6] = "APP_TYPE_NATIVE_XAMARIN", h[h.APP_TYPE_NATIVE_API_CLOUD = 7] = "APP_TYPE_NATIVE_API_CLOUD", h[h.APP_TYPE_NATIVE_REACT_NATIVE = 8] = "APP_TYPE_NATIVE_REACT_NATIVE", h[h.APP_TYPE_NATIVE_PYTHON = 9] = "APP_TYPE_NATIVE_PYTHON", h[h.APP_TYPE_NATIVE_COCOS_CREATOR = 10] = "APP_TYPE_NATIVE_COCOS_CREATOR", h[h.APP_TYPE_NATIVE_RUST = 11] = "APP_TYPE_NATIVE_RUST", h[h.APP_TYPE_NATIVE_C_SHARP = 12] = "APP_TYPE_NATIVE_C_SHARP", h[h.APP_TYPE_NATIVE_CEF = 13] = "APP_TYPE_NATIVE_CEF", h[h.APP_TYPE_NATIVE_UNI_APP = 14] = "APP_TYPE_NATIVE_UNI_APP", h[h.APP_TYPE_WEBRTC = 1e3] = "APP_TYPE_WEBRTC", h[h.APP_TYPE_WEBRTC_REACT = 1001] = "APP_TYPE_WEBRTC_REACT", h[h.APP_TYPE_WEBRTC_VUE = 1002] = "APP_TYPE_WEBRTC_VUE", h[h.APP_TYPE_WEBRTC_ANGULAR = 1003] = "APP_TYPE_WEBRTC_ANGULAR"; + }(nJ || (nJ = {})), function(h) { + h.CONNECTING = "CONNECTING", h.RECONNECTING = "RECONNECTING", h.CONNECTED = "CONNECTED", h.CLOSED = "CLOSED"; + }(gu || (gu = {})), function(h) { + h.CONNECTION_STATE_CHANGE = "connection-state-change", h.STATE_CHANGE = "state-change", h.INSPECT_RESULT = "inspect-result", h.CLIENT_LOCAL_VIDEO_TRACK = "client-local-video-track", h.REQUEST_NEW_WORKER_URL = "request-new-worker-url"; + }(Xh || (Xh = {})), function(h) { + h[h.CONNECT_AP = 0] = "CONNECT_AP", h[h.AP_CONNECTED = 1] = "AP_CONNECTED", h[h.CONNECT_WORKER_MANAGER = 2] = "CONNECT_WORKER_MANAGER", h[h.WORKER_MANAGER_CONNECTED = 3] = "WORKER_MANAGER_CONNECTED", h[h.GET_WORKER_MANAGER_RESPONSE = 4] = "GET_WORKER_MANAGER_RESPONSE", h[h.CONNECT_WORKER = 5] = "CONNECT_WORKER", h[h.WORKER_CONNECTED = 6] = "WORKER_CONNECTED", h[h.CLOSED = 7] = "CLOSED"; + }(n_ || (n_ = {})), function(h) { + h.CALL = "call", h.CANDIDATE = "candidate", h.PUBLISH = "publish", h.UNPUBLISH = "unpublish", h.CONTROL = "control", h.RESTART_ICE = "restart_ice", h.ACK = "ack", h.RESPONSE = "response", h.JOIN = "join", h.CHECK = "check"; + }(Za || (Za = {})), function(h) { + h.ABORT = "abort"; + }(i_ || (i_ = {})), function(h) { + h.MUTE_LOCAL_AUDIO = "mute_local_audio", h.MUTE_LOCAL_VIDEO = "mute_local_video", h.UNMUTE_LOCAL_AUDIO = "unmute_local_audio", h.UNMUTE_LOCAL_VIDEO = "unmute_local_video"; + }(bg || (bg = {})), function(h) { + h[h.SUCCESS = 1] = "SUCCESS", h[h.FAILED = 0] = "FAILED"; + }(iJ || (iJ = {})), function(h) { + h.P2P_TOKEN_TIMEOUT = "p2p_token_timeout", h.P2P_TOKEN_CHANGED = "p2p_token_changed"; + }(n5 || (n5 = {})); + const OPe = { [UC.ACCESS_POINT]: { [ll.NO_FLAG_SET]: { desc: "flag is zero", retry: !1 }, [ll.FLAG_SET_BUT_EMPTY]: { desc: "flag is empty", retry: !1 }, [ll.INVALID_FALG_SET]: { desc: "invalid flag", retry: !1 }, [ll.FLAG_SET_BUT_NO_RE]: { desc: "flag set unilbs but no request", retry: !1 }, [ll.INVALID_SERVICE_ID]: { desc: "invalid service id", retry: !1 }, [ll.NO_SERVICE_AVAILABLE]: { desc: "no service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_P2P]: { desc: "no unilbs p2p service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_VOICE]: { desc: "no unilbs voice service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_WEBRTC]: { desc: "no unilbs webrtc service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_CDS]: { desc: "no cds service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_CDN]: { desc: "no cdn dispatcher service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_TDS]: { desc: "no tds service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_REPORT]: { desc: "no unilbs report service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_APP_CENTER]: { desc: "no app center service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_ENV0]: { desc: "no unilbs sig env0 service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_VOET]: { desc: "no unilbs voet service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_STRING_UID]: { desc: "no string uid service available", retry: !0 }, [ll.NO_SERVICE_AVAILABLE_WEBRTC_UNILBS]: { desc: "no webrtc unilbs service available", retry: !0 } }, [UC.UNILBS]: { [nh.INVALID_VENDOR_KEY]: { desc: "invalid vendor key, can not find appid", retry: !1 }, [nh.INVALID_CHANNEL_NAME]: { desc: "invalid channel name", retry: !1 }, [nh.INTERNAL_ERROR]: { desc: "unilbs internal error", retry: !1 }, [nh.NO_AUTHORIZED]: { desc: "invalid token, authorized failed", retry: !1 }, [nh.DYNAMIC_KEY_TIMEOUT]: { desc: "dynamic key or token timeout", retry: !1 }, [nh.NO_ACTIVE_STATUS]: { desc: "no active status", retry: !1 }, [nh.DYNAMIC_KEY_EXPIRED]: { desc: "dynamic key expired", retry: !1 }, [nh.STATIC_USE_DYNAMIC_KEY]: { desc: "static use dynamic key", retry: !1 }, [nh.DYNAMIC_USE_STATIC_KEY]: { desc: "dynamic use static key", retry: !1 }, [nh.USER_OVERLOAD]: { desc: "amount of users over load", retry: !1 }, [nh.FORBIDDEN_REGION]: { desc: "the request is forbidden in this area", retry: !1 }, [nh.CANNOT_MEET_AREA_DEMAND]: { desc: "unable to allocate services in this area", retry: !1 } }, [UC.STRING_UID_ALLOCATOR]: { [Mx.IIIEGAL_APPID]: { desc: "invalid appid", retry: !1 }, [Mx.IIIEGAL_UID]: { desc: "invalid string uid", retry: !1 }, [Mx.INTERNAL_ERROR]: { desc: "string uid allocator internal error", retry: !0 } } }; + function EM(h) { + const s = OPe[Math.floor(h / 1e4)]; + if (!s) + return { desc: "unkonw error", retry: !1 }; + const c = s[h % 1e4]; + if (!c) { + if (Math.floor(h / 1e4) === UC.ACCESS_POINT) { + const p = h % 1e4; + if (p.toString()[0] === "1") + return { desc: h.toString(), retry: !1 }; + if (p.toString()[0] === "2") + return { desc: h.toString(), retry: !0 }; + } + return { desc: "unkonw error", retry: !1 }; + } + return c; + } + const MPe = { [Rr.K_TIMESTAMP_EXPIRED]: { desc: "K_TIMESTAMP_EXPIRED", action: "failed" }, [Rr.K_CHANNEL_PERMISSION_INVALID]: { desc: "K_CHANNEL_PERMISSION_INVALID", action: "failed" }, [Rr.K_CERTIFICATE_INVALID]: { desc: "K_CERTIFICATE_INVALID", action: "failed" }, [Rr.K_CHANNEL_NAME_EMPTY]: { desc: "K_CHANNEL_NAME_EMPTY", action: "failed" }, [Rr.K_CHANNEL_NOT_FOUND]: { desc: "K_CHANNEL_NOT_FOUND", action: "failed" }, [Rr.K_TICKET_INVALID]: { desc: "K_TICKET_INVALID", action: "failed" }, [Rr.K_CHANNEL_CONFLICTED]: { desc: "K_CHANNEL_CONFLICTED", action: "failed" }, [Rr.K_SERVICE_NOT_READY]: { desc: "K_SERVICE_NOT_READY", action: "tryNext" }, [Rr.K_SERVICE_TOO_HEAVY]: { desc: "K_SERVICE_TOO_HEAVY", action: "tryNext" }, [Rr.K_UID_BANNED]: { desc: "K_UID_BANNED", action: "failed" }, [Rr.K_IP_BANNED]: { desc: "K_IP_BANNED", action: "failed" }, [Rr.K_AUTO_REBALANCE]: { desc: "k_AUTO_REBALANCE", action: "recover" }, [Rr.ERR_INVALID_VENDOR_KEY]: { desc: "ERR_INVALID_VENDOR_KEY", action: "failed" }, [Rr.ERR_INVALID_CHANNEL_NAME]: { desc: "ERR_INVALID_CHANNEL_NAME", action: "failed" }, [Rr.WARN_NO_AVAILABLE_CHANNEL]: { desc: "WARN_NO_AVAILABLE_CHANNEL", action: "failed" }, [Rr.WARN_LOOKUP_CHANNEL_TIMEOUT]: { desc: "WARN_LOOKUP_CHANNEL_TIMEOUT", action: "tryNext" }, [Rr.WARN_LOOKUP_CHANNEL_REJECTED]: { desc: "WARN_LOOKUP_CHANNEL_REJECTED", action: "failed" }, [Rr.WARN_OPEN_CHANNEL_TIMEOUT]: { desc: "WARN_OPEN_CHANNEL_TIMEOUT", action: "tryNext" }, [Rr.WARN_OPEN_CHANNEL_REJECTED]: { desc: "WARN_OPEN_CHANNEL_REJECTED", action: "failed" }, [Rr.WARN_REQUEST_DEFERRED]: { desc: "WARN_REQUEST_DEFERRED", action: "failed" }, [Rr.ERR_DYNAMIC_KEY_TIMEOUT]: { desc: "ERR_DYNAMIC_KEY_TIMEOUT", action: "failed" }, [Rr.ERR_NO_AUTHORIZED]: { desc: "ERR_NO_AUTHORIZED", action: "failed" }, [Rr.ERR_VOM_SERVICE_UNAVAILABLE]: { desc: "ERR_VOM_SERVICE_UNAVAILABLE", action: "tryNext" }, [Rr.ERR_NO_CHANNEL_AVAILABLE_CODE]: { desc: "ERR_NO_CHANNEL_AVAILABLE_CODE", action: "failed" }, [Rr.ERR_MASTER_VOCS_UNAVAILABLE]: { desc: "ERR_MASTER_VOCS_UNAVAILABLE", action: "tryNext" }, [Rr.ERR_INTERNAL_ERROR]: { desc: "ERR_INTERNAL_ERROR", action: "tryNext" }, [Rr.ERR_NO_ACTIVE_STATUS]: { desc: "ERR_NO_ACTIVE_STATUS", action: "failed" }, [Rr.ERR_INVALID_UID]: { desc: "ERR_INVALID_UID", action: "failed" }, [Rr.ERR_DYNAMIC_KEY_EXPIRED]: { desc: "ERR_DYNAMIC_KEY_EXPIRED", action: "failed" }, [Rr.ERR_STATIC_USE_DYANMIC_KE]: { desc: "ERR_STATIC_USE_DYANMIC_KE", action: "failed" }, [Rr.ERR_DYNAMIC_USE_STATIC_KE]: { desc: "ERR_DYNAMIC_USE_STATIC_KE", action: "failed" }, [Rr.ERR_NO_VOCS_AVAILABLE]: { desc: "ERR_NO_VOCS_AVAILABLE", action: "tryNext" }, [Rr.ERR_NO_VOS_AVAILABLE]: { desc: "ERR_NO_VOS_AVAILABLE", action: "tryNext" }, [Rr.ERR_JOIN_CHANNEL_TIMEOUT]: { desc: "ERR_JOIN_CHANNEL_TIMEOUT", action: "tryNext" }, [Rr.ERR_JOIN_BY_MULTI_IP]: { desc: "ERR_JOIN_BY_MULTI_IP", action: "recover" }, [Rr.ERR_NOT_JOINED]: { desc: "ERR_NOT_JOINED", action: "failed" }, [Rr.ERR_REPEAT_JOIN_REQUEST]: { desc: "ERR_REPEAT_JOIN_REQUEST", action: "quit" }, [Rr.ERR_REPEAT_JOIN_CHANNEL]: { desc: "ERR_REPEAT_JOIN_CHANNEL", action: "quit" }, [Rr.ERR_INVALID_STRINGUID]: { desc: "ERR_INVALID_STRINGUID", action: "failed" }, [Rr.ERR_TOO_MANY_USERS]: { desc: "ERR_TOO_MANY_USERS", action: "tryNext" }, [Rr.ERR_SET_CLIENT_ROLE_TIMEOUT]: { desc: "ERR_SET_CLIENT_ROLE_TIMEOUT", action: "failed" }, [Rr.ERR_SET_CLIENT_ROLE_NO_PERMISSION]: { desc: "ERR_SET_CLIENT_ROLE_TIMEOUT", action: "failed" }, [Rr.ERR_SET_CLIENT_ROLE_ALREADY_IN_USE]: { desc: "ERR_SET_CLIENT_ROLE_ALREADY_IN_USE", action: "success" }, [Rr.ERR_PUBLISH_REQUEST_INVALID]: { desc: "ERR_PUBLISH_REQUEST_INVALID", action: "failed" }, [Rr.ERR_SUBSCRIBE_REQUEST_INVALID]: { desc: "ERR_SUBSCRIBE_REQUEST_INVALID", action: "failed" }, [Rr.ERR_NOT_SUPPORTED_MESSAGE]: { desc: "ERR_NOT_SUPPORTED_MESSAGE", action: "failed" }, [Rr.ERR_ILLEAGAL_PLUGIN]: { desc: "ERR_ILLEAGAL_PLUGIN", action: "failed" }, [Rr.ILLEGAL_CLIENT_ROLE_LEVEL]: { desc: "ILLEGAL_CLIENT_ROLE_LEVEL", action: "failed" }, [Rr.ERR_REJOIN_TOKEN_INVALID]: { desc: "ERR_REJOIN_TOKEN_INVALID", action: "failed" }, [Rr.ERR_REJOIN_USER_NOT_JOINED]: { desc: "ERR_REJOIN_NOT_JOINED", action: "failed" }, [Rr.ERR_INVALID_OPTIONAL_INFO]: { desc: "ERR_INVALID_OPTIONAL_INFO", action: "quit" }, [Rr.ERR_TEST_RECOVER]: { desc: "ERR_TEST_RECOVER", action: "recover" }, [Rr.ERR_TEST_TRYNEXT]: { desc: "ERR_TEST_TRYNEXT", action: "recover" }, [Rr.ERR_TEST_RETRY]: { desc: "ERR_TEST_RETRY", action: "recover" }, [Rr.ILLEGAL_AES_PASSWORD]: { desc: "ERR_TEST_RETRY", action: "failed" }, [Rr.ERR_TOO_MANY_BROADCASTERS]: { desc: "ERR_TOO_MANY_BROADCASTERS", action: "failed" }, [Rr.ERR_TOO_MANY_SUBSCRIBERS]: { desc: "ERR_TOO_MANY_SUBSCRIBERS", action: "failed" }, [Rr.ERR_LICENSE_ILLEGAL]: { desc: "ERR_LICENSE_ILLEGAL", action: "quit" }, [Rr.ERR_LICENSE_MISSING]: { desc: "ERR_LICENSE_MISSING", action: "quit" }, [Rr.ERR_LICENSE_EXPIRED]: { desc: "ERR_LICENSE_EXPIRED", action: "quit" }, [Rr.ERR_LICENSE_MINUTES_EXCEEDED]: { desc: "ERR_LICENSE_MINUTES_EXCEEDED", action: "quit" }, [Rr.ERR_LICENSE_PERIOD_INVALID]: { desc: "ERR_LICENSE_PERIOD_INVALID", action: "quit" }, [Rr.ERR_LICENSE_MULTIPLE_SDK_SERVICE]: { desc: "ERR_LICENSE_MULTIPLE_SDK_SERVICE", action: "quit" } }; + function wS(h) { + return MPe[h] || { desc: "UNKNOW_ERROR_".concat(h), action: "failed" }; + } + function oJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function i5(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? oJ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : oJ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function sJ(h) { + return h.every((s) => s.readyState === WebSocket.CLOSED || s.readyState === WebSocket.CLOSING); + } + function lJ(h, s) { + if (typeof h == "string") + return h; + const { proxy: c, host: p, port: m } = h; + if (s) { + const T = Le("JOIN_GATEWAY_FALLBACK_PORT") || 443; + return T === 443 ? "wss://".concat(p, "/ws/?p=").concat(Number(m) + 150) : "wss://".concat(p, ":").concat(T, "/ws/?p=").concat(Number(m) + 150); + } + return c ? "wss://".concat(c, "/ws/?h=").concat(p, "&p=").concat(m) : "wss://".concat(p, ":").concat(m); + } + const kPe = /wss:\/\/(.+)\/ws\/\?h=(.+)&p=([0-9]+)\/?/, PPe = /wss:\/\/(.+)\/ws\/\?p=([0-9]+)\/?/, NPe = /wss:\/\/(.+):([0-9]+)\/?/, LPe = /wss:\/\/(.[^\/]+)\/?/; + let FPe = 0; + class BPe { + constructor(s, c) { + Z(this, "id", 0), Z(this, "store", void 0), Z(this, "recordIndex", void 0), Z(this, "websockets", []), Z(this, "try443PortDuration", 2e3), Z(this, "forceCloseWSDuration", 5e3), Z(this, "try443PortTimeout", null), Z(this, "forceCloseTimeout", null), Z(this, "isTry443PortFailed", !1), Z(this, "isNormalPortFailed", !1), Z(this, "useDoubleDomain", !1), Z(this, "useProxy", !1), Z(this, "startTime", Date.now()), this.id = ++FPe, this.try443PortDuration = Le("JOIN_GATEWAY_TRY_443PORT_DURATION") || 2e3, this.forceCloseWSDuration = s || 5e3, this.store = c; + } + closeAllWebsockets() { + this.websockets.forEach((s) => { + s.onopen = null, s.onclose = null, s.onmessage = null, s.close(); + }), this.websockets.length = 0; + } + clearTimeout() { + this.forceCloseTimeout && clearTimeout(this.forceCloseTimeout), this.try443PortTimeout && clearTimeout(this.try443PortTimeout); + } + logger() { + var s; + const c = Date.now() - this.startTime; + for (var p = arguments.length, m = new Array(p), T = 0; T < p; T++) + m[T] = arguments[T]; + ie.debug("[choose-best-ws ".concat((s = this.store) === null || s === void 0 ? void 0 : s.clientId, " ").concat(this.id, "] ").concat(c, "ms:"), ...m); + } + createWebSocket(s, c, p) { + this.logger("createWebSocket:", s, { isTry443Port: c, hasTimeoutDetection: p }); + const m = Le("GATEWAY_DOMAINS"), T = Date.now(), D = [], k = m.find((V) => { + var G; + return rr(G = s.host).call(G, V); + }); + k || (this.useDoubleDomain = !1); + const N = []; + if (this.useDoubleDomain) + m.forEach((V) => { + N.push(lJ(i5(i5({}, s), {}, { host: s.host.replace(k, V) }), c)); + }); + else { + const V = i5({}, s); + if (c && k) { + const G = m.find((K) => K !== k); + G && (V.host = V.host.replace(k, G)); + } + N.push(lJ(V, c)); + } + try { + N.forEach((V) => { + const G = new WebSocket(V); + G.binaryType = "arraybuffer", D.push(G), this.logger("ws is connecting:", G.url); + }); + } catch (V) { + if (this.logger("ws create failed"), D.forEach((G) => G.close()), D.length = 0, this.useDoubleDomain) + return this.useDoubleDomain = !1, this.createWebSocket(s, c, p); + if (!c && Number(s.port) !== 443) + return this.createWebSocket(s, !0, p); + throw new Je(_e.WS_ERR, "init websocket failed! Error: ".concat(V.toString())); + } + const U = bx(); + return this.store && this.store.recordJoinChannelService({ urls: D.map((V) => V.url), service: "gateway" }, this.recordIndex), D.forEach((V) => { + V.onopen = () => { + this.logger("onopen: ws ".concat(V.url, " open cost ").concat(Date.now() - T, "ms")), this.websockets.forEach((G) => { + G !== V && (G.onopen = null, G.onclose = null, G.onmessage = null, G.close(), this.logger("close backup websocket: ".concat(G.url))); + }), this.websockets.length = 0, U.resolve(V); + }, V.onclose = (G) => { + this.logger("onclose: ws ".concat(V.url, " closed cost ").concat(Date.now() - T, "ms state: ").concat(V.readyState)), c ? this.isTry443PortFailed = sJ(D) : this.isNormalPortFailed = sJ(D), this.logger("443: ".concat(this.useProxy ? "not try" : this.isTry443PortFailed ? "failed" : "trying", " 47xx: ").concat(this.isNormalPortFailed ? "failed" : "trying")), (c && this.isTry443PortFailed || !c && (this.isTry443PortFailed || this.useProxy) && this.isNormalPortFailed) && (this.logger("onclose: all websocket is closed, ".concat(G.reason)), U.reject({ code: G.code, reason: TS.A_ROUND_WS_FAILED })); + }, V.onmessage = (G) => this.logger("".concat(V.url, " onmessage: ").concat(G.data)); + }), this.websockets.push(...D), p || (() => { + const V = () => { + this.logger("5s timeout close un-opens, isWebsocket created: ", U.isResolved), this.websockets.forEach((G) => G.readyState !== WebSocket.OPEN && G.close()); + }; + if (c || this.useProxy) + return this.logger("add 5s timeout at ".concat(c ? "try-443" : "proxy", " condition")), this.forceCloseTimeout = window.setTimeout(V, this.forceCloseWSDuration); + this.try443PortTimeout = window.setTimeout(() => { + if (this.logger("2s timeout, isWebsocket created: ", U.isResolved), U.isResolved) + return V(); + yi().os === Zo.MAC_OS && qi() && V(), this.createWebSocket(s, !0, !0).then((G) => U.resolve(G)).catch((G) => { + this.isNormalPortFailed && U.reject(G), this.logger("try 443 port to create ws failed"); + }), this.forceCloseTimeout = window.setTimeout(V, this.forceCloseWSDuration); + }, this.try443PortDuration); + })(), U.promise; + } + chooseBestWebsocket(s, c, p, m) { + return this.useDoubleDomain = !!c, typeof s == "string" && (s = function(T) { + let D, k, N; + return [, D, k, N] = T.match(kPe) || [], D || ([, k, N] = T.match(PPe) || []), k && N || ([, k, N] = T.match(NPe) || []), k && N || ([, k] = T.match(LPe) || []), k || ie.warning("un-destructible url: ", T), { proxy: D, host: k, port: N || "443" }; + }(s)), this.recordIndex = m, this.useProxy = !!s.proxy, p && this.useProxy && (ie.warn("cannot use 443 only when use proxy"), p = !1), this.createWebSocket(s, !!p, !1).finally(() => this.clearTimeout()); + } + } + function cJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + class uJ extends Ra { + get url() { + return this.websocket && this.websocket.url || null; + } + get reconnectMode() { + return this._reconnectMode; + } + set reconnectMode(s) { + var c; + rr(c = ["tryNext", "recover"]).call(c, s) && this.resetReconnectCount(s), this._reconnectMode = s; + } + get state() { + return this._state; + } + set state(s) { + s !== this._state && (this._state = s, this._state === "reconnecting" ? this.emit(Yr.RECONNECTING, this.reconnectReason) : this._state === "connected" ? this.emit(Yr.CONNECTED) : this._state === "closed" ? this.emit(Yr.CLOSED) : this._state === "failed" && this.emit(Yr.FAILED)); + } + resetReconnectCount(s) { + ie.debug("websocket reset reconnect count, reason: " + s), this.reconnectCount = 0; + } + constructor(s, c) { + let p = arguments.length > 2 && arguments[2] !== void 0 && arguments[2], m = arguments.length > 3 && arguments[3] !== void 0 && arguments[3], T = arguments.length > 4 && arguments[4] !== void 0 && arguments[4], D = arguments.length > 5 ? arguments[5] : void 0; + super(), Z(this, "connectionID", 0), Z(this, "currentURLIndex", 0), Z(this, "urls", []), Z(this, "_reconnectMode", "tryNext"), Z(this, "reconnectReason", void 0), Z(this, "_initMutex", new Ss("websocket")), Z(this, "name", void 0), Z(this, "_state", "closed"), Z(this, "reconnectInterrupter", void 0), Z(this, "websocket", void 0), Z(this, "retryConfig", void 0), Z(this, "reconnectCount", 0), Z(this, "forceCloseTimeout", 5e3), Z(this, "onlineReconnectListener", void 0), Z(this, "useCompress", void 0), Z(this, "tryDoubleDomain", !1), Z(this, "use443PortOnly", !1), Z(this, "wsInflateLength", 0), Z(this, "wsDeflateLength", 0), Z(this, "closeEstablishingWs", () => { + }), Z(this, "store", void 0), Z(this, "joinGatewayRecordIndex", void 0), this.store = D, this.name = s, this.retryConfig = function(G) { + for (var K = 1; K < arguments.length; K++) { + var q = arguments[K] != null ? arguments[K] : {}; + K % 2 ? cJ(Object(q), !0).forEach(function(ue) { + Z(G, ue, q[ue]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(G, Object.getOwnPropertyDescriptors(q)) : cJ(Object(q)).forEach(function(ue) { + Object.defineProperty(G, ue, Object.getOwnPropertyDescriptor(q, ue)); + }); + } + return G; + }({}, c), this.useCompress = p, this.tryDoubleDomain = m, this.use443PortOnly = T; + const { timeout: k, timeoutFactor: N } = c, U = Math.max(300, Math.floor(3 * k / 5)), V = Math.max(1.2, Math.floor(8 * N) / 10); + Dl.ONLINE && (this.retryConfig.timeout = U, this.retryConfig.timeoutFactor = V), Do.on(tm.NETWORK_STATE_CHANGE, (G, K) => { + G !== K && (this.resetReconnectCount("network state change: ".concat(K, " -> ").concat(G)), G === Dl.ONLINE ? (this.retryConfig.timeout = U, this.retryConfig.timeoutFactor = V) : (this.retryConfig.timeout = k, this.retryConfig.timeoutFactor = N)); + }); + } + getConnection() { + return this.websocket || void 0; + } + init(c) { + return ye(this, arguments, function* (s) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5e3; + const m = yield this._initMutex.lock(); + this.forceCloseTimeout = p, this.urls = s, this.state = "connecting"; + try { + const T = bx(), D = this.urls[this.currentURLIndex]; + this.createWebSocketConnection(D).then(T.resolve).catch(T.reject), this.once(Yr.CLOSED, () => { + T.reject(new mt(_e.WS_DISCONNECT)); + }), this.once(Yr.CONNECTED, T.resolve), yield T.promise; + } catch (T) { + } finally { + m(); + } + }); + } + close(s, c) { + if (this.currentURLIndex = 0, this.resetReconnectCount("close"), this.reconnectInterrupter && this.reconnectInterrupter(), this.websocket) { + this.websocket.onclose = null, this.websocket.onopen = null, this.websocket.onmessage = null; + const p = this.websocket; + c ? setTimeout(() => p.close(), 500) : p.close(), this.websocket = void 0; + } + this.state = s ? "failed" : "closed", this.closeEstablishingWs && this.closeEstablishingWs(); + } + reconnect(s, c) { + if (!this.websocket) + return void ie.warning("[".concat(this.name, "] can not reconnect, no websocket")); + s !== void 0 && (this.reconnectMode = s), ie.debug("[".concat(this.name, "] reconnect is triggered initiative")), typeof this.joinGatewayRecordIndex == "number" && this.store && this.store.recordJoinChannelService({ status: "error", errors: [new Error(c)] }, this.joinGatewayRecordIndex); + const p = this.websocket.onclose; + this.websocket.onclose = null, this.websocket.close(), p && p.bind(this.websocket)({ code: 9999, reason: c }); + } + sendMessage(s) { + let c = arguments.length > 2 && arguments[2] !== void 0 && arguments[2]; + if (!this.websocket || this.websocket.readyState !== WebSocket.OPEN) + throw new mt(_e.WS_ABORT, "websocket is not ready"); + try { + c || (s = JSON.stringify(s)), this.websocket.send(s); + } catch (p) { + throw new mt(_e.WS_ERR, "send websocket message error" + p.toString()); + } + } + setWsInflateData(s) { + this.wsDeflateLength = this.wsDeflateLength + s.originLength, this.wsInflateLength = this.wsInflateLength + s.compressedLength; + } + getWsInflateData() { + const s = this.wsInflateLength, c = this.wsDeflateLength; + return this.clearWsInflateData(), { wsInflateLength: s, wsDeflateLength: c }; + } + clearWsInflateData() { + this.wsInflateLength = 0, this.wsDeflateLength = 0; + } + createWebSocketConnection(s) { + return ye(this, null, function* () { + var c; + const p = bx(); + this.connectionID += 1, this.joinGatewayRecordIndex = void 0; + const m = (V) => { + var G; + (G = this.store) === null || G === void 0 || G.signalChannelOpen(), ie.debug("[".concat(this.name, "] websocket opened:"), V), this.reconnectMode = "retry", this.state = "connected", this.resetReconnectCount("opened"), p.resolve(); + }, T = (V) => ye(this, null, function* () { + var G; + if (ie.debug("[".concat(this.name, "] websocket close ").concat((G = this.websocket) === null || G === void 0 ? void 0 : G.url, ", code: ").concat(V.code, ", reason: ").concat(V.reason, ", current mode: ").concat(this.reconnectMode)), this.reconnectCount >= this.retryConfig.maxRetryCount) + p.reject(new mt(_e.WS_DISCONNECT, "websocket close: ".concat(V.code))), this.close(); + else { + this.state === "connected" && (this.reconnectReason = V.reason, this.state = "reconnecting"); + const K = pu(this, Yr.WILL_RECONNECT, this.reconnectMode, V.reason) || this.reconnectMode, q = yield this.reconnectWithAction(K); + if (this.state === "closed") + return void ie.debug("[".concat(this.connectionID, "] ws is closed, no need to reconnect")); + if (!q) + return p.reject(new mt(_e.WS_DISCONNECT, "websocket reconnect failed: ".concat(V.code))), this.close(!0); + p.resolve(); + } + }), D = (V) => { + this.emit(Yr.ON_MESSAGE, V); + }, k = (V) => { + ie.warn("[".concat(this.connectionID, "] ws open error ").concat(V)); + }; + this.websocket && (this.websocket.onclose = null, this.websocket.close()), Le("GATEWAY_WSS_ADDRESS") && this.name.startsWith("gateway") && (s = Le("GATEWAY_WSS_ADDRESS")), ie.debug("[".concat(this.name, "] start connect, url:"), s); + const N = (c = this.store) === null || c === void 0 ? void 0 : c.recordJoinChannelService({ startTs: Date.now(), status: "pending", service: "gateway" }); + try { + var U; + const V = yield this.chooseBestWebsocketConnection(s); + this.websocket = V, m && m(this.websocket.url), this.websocket.onclose = T, this.websocket.onmessage = D, this.websocket.onerror = k, (U = this.store) === null || U === void 0 || U.recordJoinChannelService({ endTs: Date.now(), status: "success" }, N), this.joinGatewayRecordIndex = N; + } catch (V) { + const G = this.state === "closed", K = V instanceof mt, q = K && V.code === _e.WS_ABORT, ue = K && V.code === _e.WS_ERR, oe = K ? V.message : V && (V.reason || V.toString()); + ie.warning("[choose-best-ws] chooseBestWebsocket error: ".concat(oe)), this.store && this.store.recordJoinChannelService({ endTs: Date.now(), status: q ? "aborted" : "error", errors: [V] }, N), G || ue ? (p.reject(G ? new mt(_e.WS_DISCONNECT, "websocket is closed: ".concat(oe)) : new mt(_e.WS_ERR, "init websocket failed: ".concat(oe))), ue && ie.error("[".concat(this.name, "] init websocket failed: ").concat(oe))) : T && T(V); + } + return p.promise; + }); + } + reconnectWithAction(c) { + return ye(this, arguments, function* (s) { + let p = !(arguments.length > 1 && arguments[1] !== void 0) || arguments[1]; + if (this.reconnectCount >= this.retryConfig.maxRetryCount || this.urls.length === 0 || this.state === "closed") + return !1; + ie.warning("[choose-best-ws] action: =>", s), this.onlineReconnectListener || Do.isOnline || !Do.onlineWaiter || (this.onlineReconnectListener = Do.onlineWaiter.then(() => { + this.onlineReconnectListener = void 0; + })); + let m = !0; + if (this.reconnectInterrupter = () => m = !1, p) { + const k = aM(this.reconnectCount, this.retryConfig); + ie.debug("[".concat(this.name, "] wait ").concat(k, "ms to reconnect websocket, mode: ").concat(s)), yield ot.race([_s(k), this.onlineReconnectListener || new ot(() => { + })]); + } + if (this._state === "closed" || !m) + return !1; + this.reconnectCount += 1; + const T = (k, N) => ye(this, null, function* () { + this.emit(Yr.RECONNECT_CREATE_CONNECTION, N), yield this.createWebSocketConnection(k); + }); + try { + if (s === "retry") + this.emit(Yr.RECONNECT_WAITTING_FINISH, s), yield T(this.urls[this.currentURLIndex], s); + else if (s === "tryNext") { + if (this.currentURLIndex += 1, this.currentURLIndex >= this.urls.length) + return this.reconnectWithAction("recover", !1); + ie.debug("[".concat(this.name, "] websocket url length: ").concat(this.urls.length, " current index: ").concat(this.currentURLIndex)), this.emit(Yr.RECONNECT_WAITTING_FINISH, s), yield T(this.urls[this.currentURLIndex], s); + } else + s === "recover" && (ie.debug("[".concat(this.name, "] request new urls")), this.resetReconnectCount("recover mode"), this.emit(Yr.RECONNECT_WAITTING_FINISH, s), this.urls = yield Ro(this, Yr.REQUEST_NEW_URLS), this.currentURLIndex = 0, yield T(this.urls[this.currentURLIndex], s)); + } catch (k) { + var D; + ie.error("[".concat(this.name, "] reconnect failed ").concat(k && k.toString())); + const N = k == null || (D = k.data) === null || D === void 0 ? void 0 : D.desc; + return Array.isArray(N) && rr(N).call(N, "dynamic key expired") ? (this.emit(Yr.ON_TOKEN_PRIVILEGE_DID_EXPIRE), !1) : this.reconnectWithAction(s, p); + } + return !0; + }); + } + } + class Px extends uJ { + constructor(s, c) { + super(s, c, arguments.length > 2 && arguments[2] !== void 0 && arguments[2], arguments.length > 3 && arguments[3] !== void 0 && arguments[3], arguments.length > 4 && arguments[4] !== void 0 && arguments[4], arguments.length > 5 ? arguments[5] : void 0); + } + chooseBestWebsocketConnection(s, c) { + return ye(this, null, function* () { + const p = bx(), m = function(D, k) { + return new BPe(D, k); + }(this.forceCloseTimeout, this.store); + this.closeEstablishingWs = () => { + ie.debug("[choose-best-ws] close establishing websockets"), m.closeAllWebsockets(), p.reject(new mt(_e.WS_ABORT, "choose best websocket aborted")); + }; + const T = Le("GATEWAY_DOMAINS"); + return ie.debug("[choose-best-ws] currentDomain: ", s, ", domains: ", T, "total: ".concat(this.urls.length), "current: ".concat(this.currentURLIndex + 1)), m.chooseBestWebsocket(s, this.tryDoubleDomain, this.use443PortOnly, c).then(p.resolve).catch(p.reject), p.promise.finally(() => { + this.closeEstablishingWs = void 0; + }); + }); + } + } + class Nx extends uJ { + constructor(s, c) { + super(s, c, arguments.length > 2 && arguments[2] !== void 0 && arguments[2], arguments.length > 3 && arguments[3] !== void 0 && arguments[3], arguments.length > 4 && arguments[4] !== void 0 && arguments[4], arguments.length > 5 ? arguments[5] : void 0); + } + chooseBestWebsocketConnection(s, c) { + return ye(this, null, function* () { + return new ot((p, m) => { + let T = !1; + const D = []; + this.closeEstablishingWs = () => { + ie.debug("[choose-best-ws] close establishing websockets"), D.forEach((ue) => { + ue.onclose = null, ue.onopen = null, ue.onmessage = null, ue.close(); + }), m(new mt(_e.WS_ABORT, "choose best websocket aborted")); + }; + const k = Le("GATEWAY_DOMAINS"); + let N; + const U = s.indexOf("?h="), V = k.find((ue) => U !== -1 ? rr(s).call(s, ue, U) : rr(s).call(s, ue)); + ie.debug("[choose-best-ws] currentDomain: ", V, ", domains: ", k); + let G = !this.tryDoubleDomain || !V; + if (!G && V) { + var K; + const ue = Date.now(); + try { + k.forEach((oe) => { + const he = U === -1 ? s.replace(V, oe) : s.substr(0, U) + s.substr(U).replace(V, oe), Ce = new WebSocket(he); + Ce.binaryType = "arraybuffer", D.push(Ce), ie.debug("[choose-best-ws] ws is connecting:", Ce.url); + }); + } catch (oe) { + for (ie.debug("[choose-best-ws] ws create failed, fallback to single url"), D.forEach((he) => he.close()); D.length; ) + D.pop(); + G = !0; + } + (K = this.store) === null || K === void 0 || K.recordJoinChannelService({ urls: D.map((oe) => oe.url), service: "gateway" }, c), D.forEach((oe) => { + oe.onopen = () => { + if (T) + return; + const he = Date.now() - ue; + ie.debug("[choose-best-ws] ws open cost ".concat(he, "ms")), D.filter((Ce) => Ce !== oe).forEach((Ce) => { + ie.debug("[choose-best-ws]close backup websocket: ".concat(Ce.url)), Ce.close(); + }), T = !0, p(oe); + }, oe.onclose = (he) => { + N = he, !T && (D.find((Ce) => !(Ce.readyState === WebSocket.CLOSED || Ce.readyState === WebSocket.CLOSING)) || (ie.debug("[choose-best-ws] all websocket is closed"), T = !0, m(N))); + }, oe.onmessage = (he) => { + ie.debug("[choose-best-ws]".concat(oe.url, " onmessage: ").concat(he.data)); + }; + }), _s(this.forceCloseTimeout).then(() => { + D.forEach((oe) => { + oe.readyState !== WebSocket.OPEN && oe.close(); + }); + }); + } + if (G) { + var q; + let ue; + ie.debug("[choose-best-ws] use single url: ", s), (q = this.store) === null || q === void 0 || q.recordJoinChannelService({ urls: [s], service: "gateway" }, c); + try { + ue = new WebSocket(s), D.push(ue), ue.binaryType = "arraybuffer"; + } catch (oe) { + const he = new mt(_e.WS_ERR, "init websocket failed! Error: ".concat(oe.toString())); + return ie.error("[".concat(this.name, "]").concat(he)), void m(he); + } + ue.onopen = () => { + p(ue); + }, ue.onclose = (oe) => { + m(oe); + }, ue.onmessage = (oe) => { + ie.debug("[choose-best-ws]".concat(ue.url, " onmessage: ").concat(oe.data)); + }, _s(this.forceCloseTimeout).then(() => { + ue && ue.readyState !== WebSocket.OPEN && ue.close(); + }); + } + }).then((p) => (this.closeEstablishingWs = void 0, p)).catch((p) => { + throw this.closeEstablishingWs = void 0, p; + }); + }); + } + } + class hJ extends Ra { + get connectionState() { + return this._connectionState; + } + set connectionState(s) { + s !== this._connectionState && (this._connectionState = s, s === Rn.CONNECTED ? this.emit(cr.WS_CONNECTED) : s === Rn.RECONNECTING ? this.emit(cr.WS_RECONNECTING, this._websocketReconnectReason) : s === Rn.CLOSED && this.emit(cr.WS_CLOSED, this._disconnectedReason)); + } + get currentURLIndex() { + return this.websocket.currentURLIndex; + } + get url() { + return this.websocket && this.websocket.url || null; + } + get rtt() { + return this.rttRolling.mean(); + } + constructor(s, c) { + super(), Z(this, "_disconnectedReason", void 0), Z(this, "_websocketReconnectReason", void 0), Z(this, "_connectionState", Rn.CLOSED), Z(this, "reconnectToken", void 0), Z(this, "websocket", void 0), Z(this, "openConnectionTime", void 0), Z(this, "clientId", void 0), Z(this, "lastMsgTime", Date.now()), Z(this, "uploadCache", []), Z(this, "uploadCacheInterval", void 0), Z(this, "rttRolling", new Rj(5)), Z(this, "pingpongTimer", void 0), Z(this, "wsInflateDataTimer", void 0), Z(this, "pingpongTimeoutCount", 0), Z(this, "joinResponse", void 0), Z(this, "multiIpOption", void 0), Z(this, "initError", void 0), Z(this, "spec", void 0), Z(this, "store", void 0), Z(this, "onWebsocketMessage", (p) => { + if (p.data instanceof ArrayBuffer) + return void this.emit(cr.ON_BINARY_DATA, p.data); + const m = JSON.parse(p.data); + if (this.lastMsgTime = Date.now(), Object.prototype.hasOwnProperty.call(m, "_id")) { + const T = "res-@".concat(m._id); + this.emit(T, m._result, m._message); + } else if (Object.prototype.hasOwnProperty.call(m, "_type")) { + if (this.emit(m._type, m._message), m._type === Zr.ON_NOTIFICATION && this.handleNotification(m._message), m._type === Zr.ON_USER_BANNED) + switch (m._message.error_code) { + case 14: + this.close(jn.UID_BANNED); + break; + case 15: + this.close(jn.IP_BANNED); + break; + case 16: + this.close(jn.CHANNEL_BANNED); + } + if (m._type === Zr.ON_USER_LICENSE_BANNED) + switch (m._message.error_code) { + case Rr.ERR_LICENSE_MISSING: + this.close(jn.LICENSE_MISSING); + break; + case Rr.ERR_LICENSE_EXPIRED: + this.close(jn.LICENSE_EXPIRED); + break; + case Rr.ERR_LICENSE_MINUTES_EXCEEDED: + this.close(jn.LICENSE_MINUTES_EXCEEDED); + break; + case Rr.ERR_LICENSE_PERIOD_INVALID: + this.close(jn.LICENSE_PERIOD_INVALID); + break; + case Rr.ERR_LICENSE_MULTIPLE_SDK_SERVICE: + this.close(jn.LICENSE_MULTIPLE_SDK_SERVICE); + break; + case Rr.ERR_LICENSE_ILLEGAL: + this.close(jn.LICENSE_ILLEGAL); + break; + default: + this.close(); + } + } + }), this.clientId = s.clientId, this.spec = s, this.store = c, this.websocket = new Px("gateway-".concat(this.clientId), this.spec.retryConfig, !0, Le("JOIN_GATEWAY_USE_DUAL_DOMAIN"), Le("JOIN_GATEWAY_USE_443PORT_ONLY"), c), this.handleWebsocketEvents(), window.addEventListener("offline", () => { + this.connectionState === Rn.CONNECTED && this.reconnect("retry", ys.OFFLINE); + }); + } + request(s, c, p, m) { + return ye(this, null, function* () { + const T = ra(6, ""), D = { _id: T, _type: s, _message: c }, k = this.websocket.connectionID, N = () => new ot((ue, oe) => { + if (this.connectionState === Rn.CONNECTED) + return ue(); + const he = () => { + this.off(cr.WS_CLOSED, Ce), ue(); + }, Ce = () => { + this.off(cr.WS_CONNECTED, he), oe(new Je(_e.WS_ABORT)); + }; + this.once(cr.WS_CONNECTED, he), this.once(cr.WS_CLOSED, Ce), s !== mr.PUBLISH && s !== mr.PUBLISH_DATASTREAM && s !== mr.SUBSCRIBE && s !== mr.SUBSCRIBE_DATASTREAM && s !== mr.UNSUBSCRIBE && s !== mr.UNSUBSCRIBE_DATASTREAM && s !== mr.UNPUBLISH && s !== mr.UNPUBLISH_DATASTREAM && s !== mr.CONTROL && s !== mr.RESTART_ICE || this.once(cr.DISCONNECT_P2P, () => { + oe(new Je(_e.DISCONNECT_P2P)); + }), s !== mr.PUBLISH && s !== mr.RESTART_ICE || this.once(cr.ABORT_P2P_EXECUTION, () => { + oe(new Je(_e.DISCONNECT_P2P)); + }); + }); + if (this.connectionState !== Rn.CONNECTING && this.connectionState !== Rn.RECONNECTING || s === mr.JOIN || s === mr.REJOIN || (yield N()), this.websocket.sendMessage(D, !0), m) + return; + const U = new ot((ue, oe) => { + let he = !1; + const Ce = (Ge, tt) => { + he = !0, ue({ isSuccess: Ge === "success", message: tt || {} }), this.off(cr.WS_CLOSED, ke), this.off(cr.WS_RECONNECTING, ke), this.emit(cr.REQUEST_SUCCESS, s, c); + }; + this.once("res-@".concat(T), Ce); + const ke = () => { + oe(new Je(_e.WS_ABORT, "type: ".concat(s))), this.off(cr.WS_CLOSED, ke), this.off(cr.WS_RECONNECTING, ke), this.off("res-@".concat(T), Ce); + }; + this.once(cr.WS_CLOSED, ke), this.once(cr.WS_RECONNECTING, ke), _s(Le("SIGNAL_REQUEST_TIMEOUT")).then(() => { + this.websocket.connectionID !== k || he || (ie.warning("[".concat(this.clientId, "] ws request timeout, type: ").concat(s)), this.emit(cr.REQUEST_TIMEOUT, s, c)); + }); + }); + let V = null; + try { + V = yield U; + } catch (ue) { + if (this.connectionState === Rn.CLOSED || s === mr.LEAVE) + throw new Je(_e.WS_ABORT); + return !this.spec.forceWaitGatewayResponse || p ? ue.throw() : s === mr.JOIN || s === mr.REJOIN ? null : (yield N(), yield this.request(s, c)); + } + if (V.isSuccess) + return V.message; + const G = Number(V.message.error_code || V.message.code), K = wS(G), q = new Je(_e.UNEXPECTED_RESPONSE, "".concat(K.desc, ": ").concat(V.message.error_str), { code: G, data: V.message }); + return K.action === "success" ? V.message : (ie.warning("[".concat(this.clientId, "] [").concat(this.websocket.connectionID, "] unexpected response from type ").concat(s, ", error_code: ").concat(G, ", message: ").concat(K.desc, ", action: ").concat(K.action)), G === Rr.ERR_TOO_MANY_BROADCASTERS ? ((s === mr.JOIN || s === mr.REJOIN) && (this.initError = q, this.close()), q.throw()) : K.action === "failed" ? q.throw() : K.action === "quit" ? (this.initError = q, this.close(), q.throw()) : (G === Rr.ERR_JOIN_BY_MULTI_IP ? (this.multiIpOption = V.message.option, ie.warning("[".concat(this.clientId, "] detect multi ip, recover")), this.reconnect("recover", ys.MULTI_IP)) : this.reconnect(K.action, ys.SERVER_ERROR), s === mr.JOIN || s === mr.REJOIN ? null : yield this.request(s, c))); + }); + } + waitMessage(s, c) { + return new ot((p) => { + const m = (T) => { + (!c || c(T)) && (this.off(s, m), p(T)); + }; + this.on(s, m); + }); + } + uploadWRTCStats(s) { + if (!this.store.sessionId) + return void ie.warn("[".concat(this.clientId, "] no session id when upload wrtc stats")); + const c = { lts: Date.now(), sid: this.store.sessionId, uid: this.store.intUid, stats: s }; + this.upload(am.WRTC_STATS, c); + } + upload(s, c) { + const p = { _type: s, _message: c }; + try { + this.websocket.sendMessage(p); + } catch (m) { + const T = Le("MAX_UPLOAD_CACHE") || 50; + this.uploadCache.push(p), this.uploadCache.length > T && this.uploadCache.splice(0, 1), this.uploadCache.length > 0 && !this.uploadCacheInterval && (this.uploadCacheInterval = window.setInterval(() => { + if (this.connectionState !== Rn.CONNECTED) + return; + const D = this.uploadCache.splice(0, 1)[0]; + this.uploadCache.length === 0 && (window.clearInterval(this.uploadCacheInterval), this.uploadCacheInterval = void 0), this.upload(D._type, D._message); + }, Le("UPLOAD_CACHE_INTERVAL") || 2e3)); + } + } + send(s, c) { + const p = { _type: s, _message: c }; + this.websocket.sendMessage(p); + } + init(s, c) { + return this.initError = void 0, this.multiIpOption = void 0, this.joinResponse = void 0, this.reconnectToken = void 0, this.openConnectionTime = void 0, new ot((p, m) => { + this.once(cr.WS_CONNECTED, () => p(this.joinResponse)), this.once(cr.WS_CLOSED, () => m(this.initError || new Je(_e.WS_ABORT))), this.connectionState = Rn.CONNECTING, this.websocket.init(s).catch(m), this.wsInflateDataTimer && window.clearInterval(this.wsInflateDataTimer), this.wsInflateDataTimer = window.setInterval(() => { + this.handleWsInflateData(); + }, 2e4); + }); + } + close(s) { + this.pingpongTimer && (this.pingpongTimeoutCount = 0, window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0), this.wsInflateDataTimer && (this.handleWsInflateData(), window.clearInterval(this.wsInflateDataTimer), this.wsInflateDataTimer = void 0), this.reconnectToken = void 0, this.joinResponse = void 0, this._disconnectedReason = s || jn.LEAVE, this.connectionState = Rn.CLOSED, ie.debug("[".concat(this.clientId, "] ") + "will close websocket in signal"), this.websocket.close(), s === jn.FALLBACK && (this.websocket.removeAllListeners(), this.websocket = new Px("gateway-".concat(this.clientId), this.spec.retryConfig, !0, Le("JOIN_GATEWAY_USE_DUAL_DOMAIN"), Le("JOIN_GATEWAY_USE_443PORT_ONLY"), this.store), this.handleWebsocketEvents()); + } + join() { + return ye(this, null, function* () { + if (!this.joinResponse) { + this.emit(cr.ABORT_P2P_EXECUTION); + const s = yield Ro(this, cr.REQUEST_JOIN_INFO), c = yield this.request(mr.JOIN, s); + if (!c) + return this.emit(cr.REPORT_JOIN_GATEWAY, TS.TIMEOUT, this.url || ""), !1; + this.joinResponse = c, this.emit(cr.JOIN_RESPONSE, this.joinResponse), this.reconnectToken = this.joinResponse.rejoin_token; + } + return this.connectionState = Rn.CONNECTED, this.pingpongTimer && window.clearInterval(this.pingpongTimer), this.pingpongTimer = window.setInterval(this.handlePingPong.bind(this), 3e3), !0; + }); + } + rejoin() { + return ye(this, null, function* () { + if (!this.reconnectToken) + throw new Je(_e.UNEXPECTED_ERROR, "can not rejoin, no rejoin token"); + const s = SS(this, cr.REQUEST_REJOIN_INFO); + s.token = this.reconnectToken; + const c = yield this.request(mr.REJOIN, s); + return !!c && (this.connectionState = Rn.CONNECTED, this.pingpongTimer && window.clearInterval(this.pingpongTimer), this.pingpongTimer = window.setInterval(this.handlePingPong.bind(this), 3e3), c.peers && c.peers.forEach((p) => { + this.emit(Zr.ON_USER_ONLINE, { uid: p.uid }), p.audio && this.emit(Zr.ON_ADD_AUDIO_STREAM, { uid: p.uid, uint_id: p.uint_id, audio: !0, ssrcId: p.audio_ssrc }), p.video && this.emit(Zr.ON_ADD_VIDEO_STREAM, { uid: p.uid, uint_id: p.uint_id, video: !0, ssrcId: p.video_ssrc }), p.audio_mute ? this.emit(Zr.MUTE_AUDIO, { uid: p.uid }) : this.emit(Zr.UNMUTE_AUDIO, { uid: p.uid }), p.video_mute ? this.emit(Zr.MUTE_VIDEO, { uid: p.uid }) : this.emit(Zr.UNMUTE_VIDEO, { uid: p.uid }), p.audio_enable_local ? this.emit(Zr.ENABLE_LOCAL_AUDIO, { uid: p.uid }) : this.emit(Zr.DISABLE_LOCAL_AUDIO, { uid: p.uid }), p.video_enable_local ? this.emit(Zr.ENABLE_LOCAL_VIDEO, { uid: p.uid }) : this.emit(Zr.DISABLE_LOCAL_VIDEO, { uid: p.uid }), p.audio || p.video || this.emit(Zr.ON_REMOVE_STREAM, { uid: p.uid, uint_id: p.uint_id }); + }), !0); + }); + } + reconnect(s, c) { + this.pingpongTimer && (this.pingpongTimeoutCount = 0, window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0), this.websocket.reconnect(s, c); + } + handleNotification(s) { + ie.debug("[".concat(this.clientId, "] receive notification: "), s); + const c = wS(s.code); + if (c.action !== "success") { + if (c.action !== "failed") + return c.action === "quit" ? (c.desc === "ERR_REPEAT_JOIN_CHANNEL" && this.close(jn.UID_BANNED), void this.close()) : void this.reconnect(c.action, ys.SERVER_ERROR); + ie.error("[".concat(this.clientId, "] ignore error: "), c.desc); + } + } + handlePingPong() { + if (!this.websocket || this.websocket.state !== "connected") + return; + this.pingpongTimeoutCount > 0 && this.rttRolling.add(3e3), this.pingpongTimeoutCount += 1; + const s = Le("PING_PONG_TIME_OUT"), c = Date.now(); + this.pingpongTimeoutCount >= s && (ie.warning("[".concat(this.clientId, "] PING-PONG Timeout. Last Socket Message: ").concat(c - this.lastMsgTime, "ms")), c - this.lastMsgTime > Le("WEBSOCKET_TIMEOUT_MIN")) ? this.reconnect("retry", ys.TIMEOUT) : this.request(mr.PING, void 0, !0).then(() => { + this.pingpongTimeoutCount = 0; + const p = Date.now() - c; + this.rttRolling.add(p), Le("REPORT_STATS") && this.send(mr.PING_BACK, { pingpongElapse: p }); + }).catch((p) => { + }); + } + handleWsInflateData() { + const { wsInflateLength: s, wsDeflateLength: c } = this.websocket.getWsInflateData(); + s !== 0 && c !== 0 && this.upload(am.WS_INFLATE_DATA_LENGTH, { ws_deflate_length: c, ws_inflate_length: s }); + } + handleWebsocketEvents() { + this.websocket.on(Yr.RECONNECT_WAITTING_FINISH, (s) => { + this.emit(cr.WS_RECONNECT_WAITTING_FINISH, s); + }), this.websocket.on(Yr.RECONNECT_CREATE_CONNECTION, (s) => { + this.emit(cr.WS_RECONNECT_CREATE_CONNECTION, s); + }), this.websocket.on(Yr.ON_MESSAGE, this.onWebsocketMessage), this.websocket.on(Yr.CLOSED, () => { + this.connectionState = Rn.CLOSED; + }), this.websocket.on(Yr.FAILED, () => { + this._disconnectedReason = jn.NETWORK_ERROR, this.connectionState = Rn.CLOSED; + }), this.websocket.on(Yr.RECONNECTING, (s) => { + this._websocketReconnectReason = s, this.joinResponse = void 0, this.connectionState === Rn.CONNECTED ? this.connectionState = Rn.RECONNECTING : this.connectionState = Rn.CONNECTING; + }), this.websocket.on(Yr.WILL_RECONNECT, (s, c, p) => { + const m = SS(this, cr.IS_P2P_DISCONNECTED), T = m || s !== "retry"; + m && s === "retry" && (ie.debug("".concat(this.clientId, " reconnect mode is retry, but p2p lost, change to tryNext")), s = "tryNext", c = TS.P2P_DISCONNECTED), T && (ie.debug("".concat(this.clientId, " will renewSession, reconnect mode: ").concat(s)), this.emit(cr.REPORT_JOIN_GATEWAY, c || TS.UNKNOWN_REASON, this.url || ""), this.reconnectToken = void 0, this.emit(cr.NEED_RENEW_SESSION), this.emit(cr.DISCONNECT_P2P)), p(s); + }), this.websocket.on(Yr.CONNECTED, () => { + this.openConnectionTime = Date.now(), this.reconnectToken ? this.rejoin().catch((s) => { + ie.warning("[".concat(this.clientId, "] rejoin failed ").concat(s)), this.reconnect("tryNext", ys.SERVER_ERROR); + }) : this.join().catch((s) => { + if (this.emit(cr.REPORT_JOIN_GATEWAY, s.message || s.code || TS.UNKNOWN_REASON, this.url || ""), s instanceof Je && s.code === _e.UNEXPECTED_RESPONSE && s.data.code === Rr.ERR_NO_AUTHORIZED) + return ie.warning("[".concat(this.clientId, "] reconnect no authorized, recover")), void this.reconnect("recover", ys.SERVER_ERROR); + ie.error("[".concat(this.clientId, "] join gateway request failed"), s.toString()), this.spec.forceWaitGatewayResponse ? this.reconnect("tryNext", ys.SERVER_ERROR) : (this.initError = s, this.close()); + }); + }), this.websocket.on(Yr.REQUEST_NEW_URLS, (s, c) => { + Ro(this, cr.REQUEST_RECOVER, this.multiIpOption).then(s).catch(c); + }), this.websocket.on(Yr.ON_TOKEN_PRIVILEGE_DID_EXPIRE, () => { + this.emit(Zr.ON_TOKEN_PRIVILEGE_DID_EXPIRE); + }); + } + } + var dJ = ` +\v\f\r                 \u2028\u2029\uFEFF`, UPe = Fe, jPe = mo, a5 = dJ, fJ = g("".replace), $Pe = RegExp("^[" + a5 + "]+"), VPe = RegExp("(^|[^" + a5 + "])[" + a5 + "]+$"), o5 = function(h) { + return function(s) { + var c = jPe(UPe(s)); + return 1 & h && (c = fJ(c, $Pe, "")), 2 & h && (c = fJ(c, VPe, "$1")), c; + }; + }, zPe = { start: o5(1), end: o5(2), trim: o5(3) }, HPe = kX.PROPER, WPe = a, pJ = dJ, GPe = zPe.trim; + ki({ target: "String", proto: !0, forced: function(h) { + return WPe(function() { + return !!pJ[h]() || "​…᠎"[h]() !== "​…᠎" || HPe && pJ[h].name !== h; + }); + }("trim") }, { trim: function() { + return GPe(this); + } }); + var bs, Kh, YPe = wc("String").trim, XPe = v, KPe = YPe, s5 = String.prototype, l5 = i(function(h) { + var s = h.trim; + return typeof h == "string" || h === s5 || XPe(s5, h) && s === s5.trim ? KPe : s; + }); + function gJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function CM(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? gJ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : gJ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function a_(h) { + return h.match(/^[\.\:\d]+$/) ? "".concat(h.replace(/[^\d]/g, "-"), ".").concat(Le("TURN_DOMAIN")) : (ie.info("Unidentified as ip: ".concat(h, ", use as host")), h); + } + function vJ(h, s) { + h.addresses || (h.addresses = []); + const c = function(T, D) { + if (Le("CONNECT_GATEWAY_WITHOUT_DOMAIN")) + return T.map((U) => { + let { ip: V, port: G } = U; + return { address: "".concat(V, ":").concat(G) }; + }); + const k = Le("GATEWAY_DOMAINS"); + let N = k[1] && rr(D).call(D, k[1]) ? 1 : 0; + return T.map((U) => { + let { domain_prefix: V, port: G, ip: K } = U; + if (V) + return { address: "".concat(V, ".").concat(k[N++ % k.length], ":").concat(G) }; + const q = /^[\.\:\d]+$/.test(K), ue = q ? "".concat(K.replace(/[^\d]/g, "-"), ".").concat(k[N++ % k.length], ":").concat(G) : "".concat(K, ":").concat(G); + return q || ie.info("Unidentified as ip: ".concat(K, ", use as host")), { ip: K, port: G, address: ue }; + }); + }(h.addresses, s), p = Array.isArray(h.detail) && h.detail[18]; + if (p && typeof p == "string") { + const T = p.split(";"); + for (let D = 0; D < T.length; D++) { + var m; + const k = l5(m = T[D]).call(m); + c[D] && k && (c[D].ip6 = k); + } + } + return { gatewayAddrs: c, uid: h.uid, cid: h.cid, cert: h.cert, vid: h.detail && h.detail[8], uni_lbs_ip: h.detail && h.detail[1], res: h, csIp: h.detail && h.detail[502] }; + } + function oh(h) { + return typeof h == "number" ? h : h.exact || h.ideal || h.max || h.min || 0; + } + function mJ(h) { + const s = h._encoderConfig; + if (!s) + return {}; + const c = { resolution: s.width && s.height ? "".concat(oh(s.width), "x").concat(oh(s.height)) : void 0, maxVideoBW: s.bitrateMax, minVideoBW: s.bitrateMin }; + return typeof s.frameRate == "number" ? (c.maxFrameRate = s.frameRate, c.minFrameRate = s.frameRate) : s.frameRate && (c.maxFrameRate = s.frameRate.max || s.frameRate.ideal || s.frameRate.exact || s.frameRate.min, c.minFrameRate = s.frameRate.min || s.frameRate.ideal || s.frameRate.exact || s.frameRate.max), c; + } + function yJ(h) { + return h >= 0 && h < 0.17 ? 1 : h >= 0.17 && h < 0.36 ? 2 : h >= 0.36 && h < 0.59 ? 3 : h >= 0.59 && h <= 1 ? 4 : h > 1 ? 5 : 0; + } + function c5(h, s) { + let c, p, m; + switch (s) { + case bs.CHOOSE_SERVER: + p = 4096, m = "choose server"; + break; + case bs.CLOUD_PROXY: + p = 1048576, m = "proxy"; + break; + case bs.CLOUD_PROXY_5: + p = 4194304, m = "proxy5"; + break; + case bs.CLOUD_PROXY_FALLBACK: + p = 4194310, m = "proxy fallback"; + break; + default: + throw new Je(_e.UNEXPECTED_ERROR, "multi unlibs response transformer get unknown service id", { csIp: h.detail && h.detail[502], retry: !1 }); + } + if (h.response_body.forEach((T) => { + T.buffer && T.buffer.flag === p && (c = { code: T.buffer.code, addresses: (T.buffer.edges_services || []).map((D) => CM(CM({}, D), {}, { ticket: T.buffer.cert })), server_ts: h.enter_ts, uid: T.buffer.uid, cid: T.buffer.cid, cname: T.buffer.cname, detail: CM(CM({}, T.buffer.detail), h.detail), flag: T.buffer.flag, opid: h.opid, cert: T.buffer.cert }); + }), !c) + throw new Je(_e.MULTI_UNILBS_RESPONSE_ERROR, "cannot parse response ".concat(m, " from multi unilbs response"), { csIp: h.detail && h.detail[502] }); + return c; + } + function ZPe(h, s) { + return ye(this, null, function* () { + return yield ot.all(h.addresses.map((c) => ye(this, null, function* () { + return { address: a_(c.ip), tcpport: c.port, udpport: c.port, username: s && Le("ENCRYPT_PROXY_USERNAME_AND_PSW") && window.isSecureContext ? s.toString() : Gl.username, password: s && Le("ENCRYPT_PROXY_USERNAME_AND_PSW") && window.isSecureContext ? yield Tj(s.toString()) : Gl.password }; + }))); + }); + } + function u5(h, s) { + const c = s._videoHeight || s.getMediaStreamTrack(!0).getSettings().height; + return c ? Math.max(c / oh(h.height), 1) : (ie.warning("can't get ori-track's height, default scale down 4 times for low stream"), 4); + } + function o_(h) { + let { candidateType: s, relayProtocol: c, type: p, address: m, port: T, protocol: D } = h; + return p === "local-candidate" ? { candidateType: s, relayProtocol: c, protocol: D } : { candidateType: s, relayProtocol: c, address: m, port: T, protocol: D }; + } + function _J(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + (function(h) { + h[h.CHOOSE_SERVER = 11] = "CHOOSE_SERVER", h[h.CLOUD_PROXY = 18] = "CLOUD_PROXY", h[h.CLOUD_PROXY_5 = 20] = "CLOUD_PROXY_5", h[h.CLOUD_PROXY_FALLBACK = 26] = "CLOUD_PROXY_FALLBACK"; + })(bs || (bs = {})); + class qPe extends Ra { + get url() { + return this._url ? this._url : null; + } + get reconnectMode() { + return this._reconnectMode; + } + set reconnectMode(s) { + var c; + rr(c = ["tryNext", "recover"]).call(c, s) && this.resetReconnectCount(s), this._reconnectMode = s; + } + get state() { + return this._state; + } + set state(s) { + s !== this._state && (this._state = s, this._state === "reconnecting" ? this.emit(io.RECONNECTING, this.reconnectReason) : this._state === "connected" ? this.emit(io.CONNECTED) : this._state === "closed" ? this.emit(io.CLOSED) : this._state === "failed" && this.emit(io.FAILED)); + } + constructor(s, c, p, m) { + super(), Z(this, "connectionID", 0), Z(this, "currentURLIndex", 0), Z(this, "reconnectReason", void 0), Z(this, "_reconnectMode", "tryNext"), Z(this, "_name", void 0), Z(this, "_state", "closed"), Z(this, "_retryConfig", void 0), Z(this, "_reconnectCount", 0), Z(this, "_forceCloseTimeout", 5e3), Z(this, "_onlineReconnectListener", void 0), Z(this, "_closeEstablishingTransmitter", () => { + }), Z(this, "_store", void 0), Z(this, "_joinChannelServiceRecordIndex", void 0), Z(this, "_useCompress", void 0), Z(this, "_inflateLength", 0), Z(this, "_deflateLength", 0), this._store = m, this._name = s, this._retryConfig = function(T) { + for (var D = 1; D < arguments.length; D++) { + var k = arguments[D] != null ? arguments[D] : {}; + D % 2 ? _J(Object(k), !0).forEach(function(N) { + Z(T, N, k[N]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(T, Object.getOwnPropertyDescriptors(k)) : _J(Object(k)).forEach(function(N) { + Object.defineProperty(T, N, Object.getOwnPropertyDescriptor(k, N)); + }); + } + return T; + }({}, c), this._useCompress = p; + } + resetReconnectCount(s) { + ie.debug("".concat(this._name, " reset reconnect count, reason: ").concat(s)), this._reconnectCount = 0; + } + close(s, c) { + if (this.currentURLIndex = 0, this.resetReconnectCount("close"), this._reconnectInterrupter && this._reconnectInterrupter(), this._transmitter) { + this._transmitter.onclose = null, this._transmitter.onopen = null, this._transmitter.onmessage = null; + const p = this._transmitter; + c ? setTimeout(() => p.close(), 500) : p.close(), this._transmitter = void 0; + } + this.state = s ? "failed" : "closed", this._closeEstablishingTransmitter && this._closeEstablishingTransmitter(); + } + reconnect(s, c) { + if (!this._transmitter) + return void ie.warning("[".concat(this._name, "] can not reconnect, no websocket")); + var p; + s !== void 0 && (this.reconnectMode = s), ie.debug("[".concat(this._name, "] reconnect is triggered initiative")), typeof this._joinChannelServiceRecordIndex == "number" && ((p = this._store) === null || p === void 0 || p.recordJoinChannelService({ status: "error", errors: [new Error(c)] }, this._joinChannelServiceRecordIndex)); + const m = this._transmitter.onclose; + this._transmitter.onclose = null, this._transmitter.close(), m && m.bind(this._transmitter)({ code: 9999, reason: c }); + } + getInflateData() { + const s = this._inflateLength, c = this._deflateLength; + return this.clearInflateData(), { inflateLength: s, deflateLength: c }; + } + setInflateData(s) { + this._deflateLength = this._deflateLength + s.originLength, this._inflateLength = this._inflateLength + s.compressedLength; + } + clearInflateData() { + this._inflateLength = 0, this._deflateLength = 0; + } + } + (function(h) { + h[h.Default = 0] = "Default", h[h.Ack = 1] = "Ack"; + })(Kh || (Kh = {})); + class JPe { + constructor(s, c, p) { + Z(this, "version", 1), Z(this, "initialRTO", void 0), Z(this, "maxBatchAckCount", void 0), Z(this, "maxRTO", void 0), Z(this, "initialRTT", void 0), Z(this, "ID", void 0), Z(this, "rtt", void 0), Z(this, "packetNumber", 1), Z(this, "rtoRatioMap", /* @__PURE__ */ new Map()), Z(this, "timeoutMap", /* @__PURE__ */ new Map()), Z(this, "unorderedPacketQueue", []), Z(this, "batchAckPacketQueue", []), Z(this, "lastOrderedPacketNumber", 0), Z(this, "batchAckTimer", void 0), Z(this, "sendImpl", void 0), Z(this, "receiveImpl", void 0), this.sendImpl = s, this.receiveImpl = c, this.ID = ra(7, "transmitter-"), this.initialRTO = (p == null ? void 0 : p.initialRTO) !== void 0 ? p.initialRTO : Le("TRANSMITTER_INITIAL_RTO"), this.initialRTT = (p == null ? void 0 : p.initialRTT) !== void 0 ? p.initialRTT : Le("TRANSMITTER_INITIAL_RTT"), this.rtt = (p == null ? void 0 : p.initialRTT) !== void 0 ? p.initialRTT : Le("TRANSMITTER_INITIAL_RTT"), this.maxBatchAckCount = (p == null ? void 0 : p.maxBatchAckCount) !== void 0 ? p.maxBatchAckCount : Le("TRANSMITTER_MAX_BATCH_ACK_COUNT"), this.maxRTO = (p == null ? void 0 : p.maxRTO) !== void 0 ? p.maxRTO : Le("TRANSMITTER_MAX_RTO"); + } + packetize(s, c) { + return { type: Kh.Default, version: this.version, packetNumber: c, payload: s }; + } + serialize(s) { + switch (s.type) { + case Kh.Default: { + let c; + typeof s.payload == "string" ? c = new TextEncoder().encode(s.payload) : c = s.payload; + const p = new ArrayBuffer(c.length + 15), m = new DataView(p); + return m.setUint16(0, s.version), m.setUint8(2, s.type), m.setUint32(3, s.packetNumber), zZ(m, 7, BigInt(s.sendTs)), new Uint8Array(m.buffer).set(c, 15), p; + } + case Kh.Ack: { + const c = new ArrayBuffer(16), p = new DataView(c); + return p.setUint16(0, s.version), p.setUint8(2, s.type), p.setUint32(3, s.maxAckPacketNumber), p.setUint8(7, s.shift), zZ(p, 8, BigInt(s.ackSendTs)), c; + } + } + } + deserialize(s) { + const c = new DataView(s), p = c.getUint16(0), m = c.getUint8(2); + switch (m) { + case Kh.Default: { + const T = c.getUint32(3), D = VZ(c, 7), k = s.slice(15), N = new TextDecoder().decode(k); + return { version: p, type: m, packetNumber: T, sendTs: Number(D), payload: N }; + } + case Kh.Ack: { + const T = c.getUint32(3), D = c.getUint8(7), k = VZ(c, 8); + return { version: p, type: m, maxAckPacketNumber: T, shift: D, ackSendTs: Number(k) }; + } + default: + throw ie.error("[".concat(this.ID, "] Unrecognized packet type ").concat(m)), new Error("Unrecognized packet type ".concat(m)); + } + } + sendMessage(s) { + const c = this.packetize(s, this.packetNumber); + this.packetNumber = this.packetNumber === 4294967295 ? 1 : this.packetNumber + 1; + const p = this.calculateRTO(c), m = window.setTimeout(() => { + this.resendMessage(c); + }, p); + this.timeoutMap.set(c.packetNumber, m), this.sendPacket(c); + } + onData(s) { + const c = this.deserialize(s); + c.type === Kh.Default ? this.ack(c) : c.type === Kh.Ack && (this.updateRTT(c, Math.round(performance.now())), this.clearRTO(c)); + } + close() { + this.rtt = this.initialRTT, this.packetNumber = 1, Array.from(this.timeoutMap.entries()).forEach((s) => { + let [c, p] = s; + window.clearTimeout(p); + }), this.timeoutMap = /* @__PURE__ */ new Map(), this.rtoRatioMap = /* @__PURE__ */ new Map(), this.unorderedPacketQueue = [], this.batchAckPacketQueue = [], this.lastOrderedPacketNumber = 0, this.batchAckTimer !== void 0 && window.clearTimeout(this.batchAckTimer); + } + resendMessage(s) { + const c = this.calculateRTO(s), p = window.setTimeout(() => { + this.resendMessage(s); + }, c); + this.timeoutMap.set(s.packetNumber, p), this.sendPacket(s); + } + calculateRTO(s) { + const c = this.rtoRatioMap.get(s.packetNumber); + if (c === void 0) + return this.rtoRatioMap.set(s.packetNumber, 1), this.initialRTO; + { + const p = 9 * this.rtt / 8 * c; + return this.rtoRatioMap.set(s.packetNumber, c + 1), p > this.maxRTO ? this.maxRTO : p; + } + } + updateRTT(s, c) { + const p = s.ackSendTs; + this.rtt = this.rtt * (7 / 8) + (c - p - this.rtt) / 8; + } + ack(s) { + if (s.packetNumber === this.lastOrderedPacketNumber + 1) + for (this.batchAckPacketQueue.length >= this.maxBatchAckCount && this.batchAck(), this.batchAckTimer ? this.batchAckPacketQueue.push(s) : (this.batchAckPacketQueue.push(s), this.batchAckTimer = window.setTimeout(() => { + this.batchAck(); + }, this.rtt / 8)), this.lastOrderedPacketNumber += 1, this.receiveImpl(s.payload); ; ) { + const c = this.unorderedPacketQueue[0]; + if (!c) { + this.unorderedPacketQueue.shift(); + break; + } + this.batchAckTimer && this.batchAck(), this.receiveImpl(c.payload), this.unorderedPacketQueue.shift(), this.lastOrderedPacketNumber += 1; + } + else if (s.packetNumber <= this.lastOrderedPacketNumber) { + const c = { ackSendTs: s.sendTs, maxAckPacketNumber: s.packetNumber, shift: 0, type: Kh.Ack, version: this.version }; + this.sendPacket(c); + } else if (s.packetNumber > this.lastOrderedPacketNumber) { + this.unorderedPacketQueue[s.packetNumber - this.lastOrderedPacketNumber - 2] = s; + const c = { ackSendTs: s.sendTs, maxAckPacketNumber: s.packetNumber, shift: 0, type: Kh.Ack, version: this.version }; + this.sendPacket(c); + } + } + batchAck() { + window.clearTimeout(this.batchAckTimer), this.batchAckTimer = void 0; + const s = { ackSendTs: this.batchAckPacketQueue[this.batchAckPacketQueue.length - 1].sendTs, maxAckPacketNumber: this.batchAckPacketQueue[this.batchAckPacketQueue.length - 1].packetNumber, shift: this.batchAckPacketQueue.length - 1, type: Kh.Ack, version: this.version }; + this.sendPacket(s), this.batchAckPacketQueue = []; + } + sendPacket(s) { + s.type === Kh.Default && (s.sendTs = Math.round(performance.now())); + const c = this.serialize(s); + this.sendImpl(c); + } + clearRTO(s) { + for (let c = s.maxAckPacketNumber - s.shift; c <= s.maxAckPacketNumber; c++) { + const p = this.timeoutMap.get(c); + p !== void 0 && window.clearTimeout(p), this.timeoutMap.delete(c), this.rtoRatioMap.delete(c); + } + } + } + class SJ extends qPe { + constructor(s, c) { + super(s, c, arguments.length > 2 && arguments[2] !== void 0 && arguments[2], arguments.length > 3 ? arguments[3] : void 0), Z(this, "_initMutex", void 0), Z(this, "_reconnectInterrupter", void 0), Z(this, "_url", void 0), Z(this, "_transmitter", void 0), Z(this, "_addresses", void 0), Z(this, "_reliableTransmission", void 0), this._initMutex = new Ss("datachannel"); + const { timeout: p, timeoutFactor: m } = c, T = Math.max(300, Math.floor(3 * p / 5)), D = Math.max(1.2, Math.floor(8 * m) / 10); + Dl.ONLINE && (this._retryConfig.timeout = T, this._retryConfig.timeoutFactor = D), Do.on(tm.NETWORK_STATE_CHANGE, (k, N) => { + k !== N && (this.resetReconnectCount("network state change: ".concat(N, " -> ").concat(k)), k === Dl.ONLINE ? (this._retryConfig.timeout = T, this._retryConfig.timeoutFactor = D) : (this._retryConfig.timeout = p, this._retryConfig.timeoutFactor = m)); + }); + } + getConnection() { + if (this._reliableTransmission) + return this._reliableTransmission; + } + init(c) { + return ye(this, arguments, function* (s) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5e3; + this._forceCloseTimeout = p; + const m = (T, D) => { + this._addresses = s, this.currentURLIndex = this._addresses.findIndex((N) => N.fingerprint || Le("FINGERPRINT")); + const k = this._addresses[this.currentURLIndex]; + this.state = "connecting", this.createTransmitterConnection(k).then(T).catch(D), this.once(io.CLOSED, () => D(new Je(_e.WS_DISCONNECT))), this.once(io.CONNECTED, () => T()); + }; + return this._initMutex.lock().then((T) => new ot((D, k) => { + m(D, k); + }).then(() => { + T(); + }).catch(() => { + T(); + })); + }); + } + sendMessage(s) { + let c = arguments.length > 2 && arguments[2] !== void 0 && arguments[2]; + if (!this._transmitter || !this._reliableTransmission) + throw new Je(_e.WS_ABORT, "datachannel is not ready"); + try { + c || (s = JSON.stringify(s)), this._reliableTransmission.sendMessage(s); + } catch (p) { + throw new Je(_e.WS_ERR, "send datachannel signal message error" + p.toString()); + } + } + unbindDcCloseEventListener() { + this._transmitter && (this._transmitter.onclose = null); + } + sendMessageWithJSON(s) { + const c = JSON.stringify(s); + return { compressed: c, compressedLength: c.length, origin: s }; + } + sendMessageWithUint8Array(s) { + return { compressed: s, compressedLength: s.byteLength, origin: s }; + } + createTransmitterConnection(s) { + return this.connectionID += 1, this._joinChannelServiceRecordIndex = void 0, this._url = "dc://".concat(s.ip, ":").concat(s.port), new ot((c, p) => { + var m; + const T = () => { + ie.debug("[".concat(this._name, "] datachannel opened:"), this._url), this.reconnectMode = "retry", this.state = "connected", this.resetReconnectCount("opened"), c(); + }, D = (V) => ye(this, null, function* () { + var G; + if ((G = this._closeEstablishingTransmitter) === null || G === void 0 || G.call(this), ie.debug("[".concat(this._name, "] datachannel close ").concat(this._url, ", code: ").concat(V.code, ", reason: ").concat(V.reason, ", current mode: ").concat(this.reconnectMode)), this._reconnectCount < this._retryConfig.maxRetryCount) { + this.state === "connected" && (this.reconnectReason = V.reason, this.state = "reconnecting"); + const K = pu(this, io.WILL_RECONNECT, this.reconnectMode) || this.reconnectMode, q = yield this.reconnectWithAction(K); + if (this.state === "closed") + return void ie.debug("[".concat(this.connectionID, "] dc is closed, no need to reconnect")); + if (!q) + return p(new Je(_e.WS_DISCONNECT, "datachannel reconnect failed: ".concat(V.code))), void this.close(!0); + c(); + } else + p(new Je(_e.WS_DISCONNECT, "datachannel close: ".concat(V.code))), this.close(); + }), k = (V) => { + var G; + (G = this._reliableTransmission) === null || G === void 0 || G.onData(V.data); + }; + this._transmitter && (this._transmitter.onclose = null, this._transmitter.close()), this._reliableTransmission && (this._reliableTransmission.close(), this._reliableTransmission = void 0), ie.debug("[".concat(this._name, "] start connect, address: ").concat(JSON.stringify(s))); + const N = (m = this._store) === null || m === void 0 ? void 0 : m.recordJoinChannelService({ startTs: Date.now(), status: "pending", service: "gateway" }), U = Date.now(); + Ro(this, io.TO_CONNECT_DATACHANNEL, s).then((V) => { + var G, K; + if (!V) + throw new Error("transmissonInfo not exist yet"); + const { transmitter: q, close: ue } = V; + this._transmitter = q, (G = this._store) === null || G === void 0 || G.signalChannelOpen(); + const oe = Date.now() - U; + ie.debug("[choose dc] dc open cost ".concat(oe, "ms")), this._reliableTransmission = new JPe((he) => { + var Ce; + this._transmitter && this._transmitter.readyState === "open" && ((Ce = this._transmitter) === null || Ce === void 0 || Ce.send(he)); + }, (he) => { + typeof he == "string" && this.emit(io.ON_MESSAGE, he); + }), this._closeEstablishingTransmitter = () => { + var he; + (he = this._reliableTransmission) === null || he === void 0 || he.close(), this._reliableTransmission = void 0, ue(); + }, T && T(), q.onclose = D, q.onmessage = k, (K = this._store) === null || K === void 0 || K.recordJoinChannelService({ endTs: Date.now(), status: "success" }, N), this._joinChannelServiceRecordIndex = N; + }).catch((V) => { + var G; + if ((G = this._store) === null || G === void 0 || G.recordJoinChannelService({ endTs: Date.now(), status: V instanceof Je && V.code === _e.WS_ABORT ? "aborted" : "error", errors: [V] }, N), this.state !== "closed") { + if (V instanceof Je && V.code === _e.WS_ERR) { + const K = new Je(_e.WS_ERR, "init datachannel failed! Error: ".concat(V.toString())); + return ie.error("[".concat(this._name, "]").concat(K)), void p(K); + } + D && D(V); + } else + p(new Je(_e.WS_DISCONNECT, "datachannel is closed: ".concat(V.toString()))); + }); + }); + } + reconnectWithAction(c) { + return ye(this, arguments, function* (s) { + let p = !(arguments.length > 1 && arguments[1] !== void 0) || arguments[1]; + if (this._reconnectCount >= this._retryConfig.maxRetryCount || !this._addresses || this.state === "closed") + return !1; + this._onlineReconnectListener || Do.networkState !== Dl.OFFLINE || (this._onlineReconnectListener = Do.onlineWaiter && Do.onlineWaiter.then(() => { + this._onlineReconnectListener = void 0; + })); + let m = !0; + if (this._reconnectInterrupter = () => { + m = !1; + }, p) { + const N = aM(this._reconnectCount, this._retryConfig); + ie.debug("[".concat(this._name, "] wait ").concat(N, "ms to reconnect datachannel, mode: ").concat(s)), yield ot.race([_s(N), this._onlineReconnectListener || new ot(() => { + })]); + } + if (this.state === "closed" || !m) + return !1; + this._reconnectCount += 1; + const T = (N, U) => ye(this, null, function* () { + this.emit(io.RECONNECT_CREATE_CONNECTION, U), yield this.createTransmitterConnection(N); + }); + try { + if (s === "retry") { + const N = this._addresses[this.currentURLIndex]; + this.emit(io.RECONNECT_WAITTING_FINISH, s), yield T(N, s); + } else if (s === "tryNext") { + this.currentURLIndex += 1; + for (let U = this.currentURLIndex; U < this._addresses.length; U++) { + if (this._addresses[U].fingerprint || Le("FINGERPRINT")) { + this.currentURLIndex = U; + break; + } + this.currentURLIndex += 1; + } + if (this.currentURLIndex >= this._addresses.length) + return ie.debug("[".concat(this._name, "] the available addresses are exhausted, change to recover")), yield this.reconnectWithAction("recover", !1); + ie.debug("[".concat(this._name, "] datachannel url length: ").concat(this._addresses.length, " current index: ").concat(this.currentURLIndex)); + const N = this._addresses[this.currentURLIndex]; + this.emit(io.RECONNECT_WAITTING_FINISH, s), yield T(N, s); + } else + s === "recover" && (ie.debug("[".concat(this._name, "] start to failback to websocket")), this.resetReconnectCount("recover mode"), this.emit(io.RECONNECT_WAITTING_FINISH, s), this.emit(io.FAILBACK)); + return !0; + } catch (N) { + var D, k; + return ie.error("[".concat(this._name, "] reconnect failed"), N.toString()), N != null && (D = N.data) !== null && D !== void 0 && D.desc && Array.isArray(N.data.desc) && N.data.desc.length && rr(k = N.data.desc).call(k, "dynamic key expired") ? (this.emit(io.ON_TOKEN_PRIVILEGE_DID_EXPIRE), !1) : yield this.reconnectWithAction(s, p); + } + }); + } + } + class om extends Ra { + get connectionState() { + return this._connectionState; + } + set connectionState(s) { + s !== this._connectionState && (this._connectionState = s, s === Rn.CONNECTED ? this.emit(cr.WS_CONNECTED) : s === Rn.RECONNECTING ? this.emit(cr.WS_RECONNECTING, this._websocketReconnectReason) : s === Rn.CLOSED && this.emit(cr.WS_CLOSED, this._disconnectedReason)); + } + get currentURLIndex() { + return this.websocket.currentURLIndex; + } + get url() { + return this.websocket ? this.websocket.url : null; + } + get rtt() { + return this.rttRolling.mean(); + } + constructor(s, c) { + super(), Z(this, "_disconnectedReason", void 0), Z(this, "_websocketReconnectReason", void 0), Z(this, "_connectionState", Rn.CLOSED), Z(this, "reconnectToken", void 0), Z(this, "websocket", void 0), Z(this, "openConnectionTime", void 0), Z(this, "clientId", void 0), Z(this, "lastMsgTime", Date.now()), Z(this, "uploadCache", []), Z(this, "uploadCacheInterval", void 0), Z(this, "rttRolling", new Rj(5)), Z(this, "pingpongTimer", void 0), Z(this, "inflateDataTimer", void 0), Z(this, "pingpongTimeoutCount", 0), Z(this, "joinResponse", void 0), Z(this, "multiIpOption", void 0), Z(this, "initError", void 0), Z(this, "spec", void 0), Z(this, "store", void 0), Z(this, "onWebsocketMessage", (p) => { + if (p instanceof ArrayBuffer) + return void this.emit(cr.ON_BINARY_DATA, p); + const m = JSON.parse(p); + if (this.lastMsgTime = Date.now(), Object.prototype.hasOwnProperty.call(m, "_id")) { + const T = "res-@".concat(m._id); + this.emit(T, m._result, m._message); + } else if (Object.prototype.hasOwnProperty.call(m, "_type") && (this.emit(m._type, m._message), m._type === Zr.ON_NOTIFICATION && this.handleNotification(m._message), m._type === Zr.ON_USER_BANNED)) + switch (m._message.error_code) { + case 14: + this.close(jn.UID_BANNED); + break; + case 15: + this.close(jn.IP_BANNED); + break; + case 16: + this.close(jn.CHANNEL_BANNED); + } + }), this.clientId = s.clientId, this.spec = s, this.store = c, this.websocket = new SJ("gateway-".concat(this.clientId), this.spec.retryConfig, !0, c), this.handleWebsocketEvents(), window.addEventListener("offline", () => { + this.connectionState === Rn.CONNECTED && this.reconnect("retry", Sg.OFFLINE); + }); + } + request(s, c, p, m) { + return ye(this, null, function* () { + const T = ra(6, ""), D = { _id: T, _type: s, _message: c }, k = this.websocket.connectionID, N = () => new ot((ue, oe) => { + if (this.connectionState === Rn.CONNECTED) + return ue(); + const he = () => { + this.off(cr.WS_CLOSED, Ce), ue(); + }, Ce = () => { + this.off(cr.WS_CONNECTED, he), oe(new Je(_e.WS_ABORT)); + }; + this.once(cr.WS_CONNECTED, he), this.once(cr.WS_CLOSED, Ce), s !== mr.PUBLISH && s !== mr.SUBSCRIBE && s !== mr.UNSUBSCRIBE && s !== mr.UNPUBLISH && s !== mr.CONTROL && s !== mr.RESTART_ICE || this.once(cr.DISCONNECT_P2P, () => { + oe(new Je(_e.DISCONNECT_P2P)); + }), s !== mr.PUBLISH && s !== mr.RESTART_ICE || this.once(cr.ABORT_P2P_EXECUTION, () => { + oe(new Je(_e.DISCONNECT_P2P)); + }); + }); + if (this.connectionState !== Rn.CONNECTING && this.connectionState !== Rn.RECONNECTING || s === mr.JOIN || s === mr.REJOIN || (yield N()), s === mr.LEAVE && (this.websocket.unbindDcCloseEventListener(), m = !0), this.websocket.sendMessage(D, !0, !1), m) + return; + const U = new ot((ue, oe) => { + let he = !1; + const Ce = (Ge, tt) => { + he = !0, ue({ isSuccess: Ge === "success", message: tt || {} }), this.off(cr.WS_CLOSED, ke), this.off(cr.WS_RECONNECTING, ke), this.emit(cr.REQUEST_SUCCESS, s, c); + }; + this.once("res-@".concat(T), Ce); + const ke = () => { + oe(new Je(_e.WS_ABORT, "type: ".concat(s))), this.off(cr.WS_CLOSED, ke), this.off(cr.WS_RECONNECTING, ke), this.off("res-@".concat(T), Ce); + }; + this.once(cr.WS_CLOSED, ke), this.once(cr.WS_RECONNECTING, ke), _s(Le("SIGNAL_REQUEST_TIMEOUT")).then(() => { + this.websocket.connectionID !== k || he || (ie.warning("dc request timeout, type: ".concat(s)), this.emit(cr.REQUEST_TIMEOUT, s, c)); + }); + }); + let V = null; + try { + V = yield U; + } catch (ue) { + if (this.connectionState === Rn.CLOSED || s === mr.LEAVE) + throw new Je(_e.WS_ABORT); + return !this.spec.forceWaitGatewayResponse || p ? ue.throw() : s === mr.JOIN || s === mr.REJOIN ? null : (yield N(), yield this.request(s, c)); + } + if (V.isSuccess) + return V.message; + const G = Number(V.message.error_code || V.message.code), K = wS(G), q = new Je(_e.UNEXPECTED_RESPONSE, "".concat(K.desc, ": ").concat(V.message.error_str), { code: G, data: V.message }); + return K.action === "success" ? V.message : (ie.warning("[".concat(this.websocket.connectionID, "] unexpected response from type ").concat(s, ", error_code: ").concat(G, ", message: ").concat(K.desc, ", action: ").concat(K.action)), G === Rr.ERR_TOO_MANY_BROADCASTERS ? ((s === mr.JOIN || s === mr.REJOIN) && (this.initError = q, this.close()), q.throw()) : K.action === "failed" ? q.throw() : K.action === "quit" ? (this.initError = q, this.close(), q.throw()) : (G === Rr.ERR_JOIN_BY_MULTI_IP ? (this.multiIpOption = V.message.option, ie.warning("[".concat(this.clientId, "] detect multi ip, recover")), this.reconnect("recover", Sg.MULTI_IP)) : this.reconnect(K.action, Sg.SERVER_ERROR), s === mr.JOIN || s === mr.REJOIN ? null : yield this.request(s, c))); + }); + } + waitMessage(s, c) { + return new ot((p) => { + const m = (T) => { + (!c || c(T)) && (this.off(s, m), p(T)); + }; + this.on(s, m); + }); + } + uploadWRTCStats(s) { + if (!this.store.sessionId) + return void ie.warn("[".concat(this.clientId, "] no session id when upload wrtc stats")); + const c = { lts: Date.now(), sid: this.store.sessionId, uid: this.store.intUid, stats: s }; + this.upload(am.WRTC_STATS, c); + } + upload(s, c) { + const p = { _type: s, _message: c }; + try { + this.websocket.sendMessage(p); + } catch (m) { + const T = Le("MAX_UPLOAD_CACHE") || 50; + this.uploadCache.push(p), this.uploadCache.length > T && this.uploadCache.splice(0, 1), this.uploadCache.length > 0 && !this.uploadCacheInterval && (this.uploadCacheInterval = window.setInterval(() => { + if (this.connectionState !== Rn.CONNECTED) + return; + const D = this.uploadCache.splice(0, 1)[0]; + this.uploadCache.length === 0 && (window.clearInterval(this.uploadCacheInterval), this.uploadCacheInterval = void 0), this.upload(D._type, D._message); + }, Le("UPLOAD_CACHE_INTERVAL") || 2e3)); + } + } + send(s, c) { + const p = { _type: s, _message: c }; + this.websocket.sendMessage(p); + } + init(s, c) { + return this.initError = void 0, this.multiIpOption = void 0, this.joinResponse = void 0, this.reconnectToken = void 0, this.openConnectionTime = void 0, new ot((p, m) => { + this.once(cr.WS_CONNECTED, () => p(this.joinResponse)), this.once(cr.WS_CLOSED, () => m(this.initError || new Je(_e.WS_ABORT))), this.connectionState = Rn.CONNECTING, this.websocket.init(s).catch(m), this.websocket.once(io.FAILBACK, () => { + this.openConnectionTime === void 0 && m(new Je(_e.INIT_DATACHANNEL_TIMEOUT)); + }), this.inflateDataTimer && window.clearInterval(this.inflateDataTimer), this.inflateDataTimer = window.setInterval(() => { + this.handleInflateData(); + }, 2e4), setTimeout(() => { + c && this.openConnectionTime === void 0 && (ie.debug("[".concat(this.clientId, "] init datachannel timeout while join with failback to websocket")), m(new Je(_e.INIT_DATACHANNEL_TIMEOUT))); + }, Le("DC_JOIN_WITH_FAILBACK")); + }); + } + close(s) { + this.pingpongTimer && (this.pingpongTimeoutCount = 0, window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0), this.inflateDataTimer && (this.handleInflateData(), window.clearInterval(this.inflateDataTimer), this.inflateDataTimer = void 0), this.reconnectToken = void 0, this.joinResponse = void 0, this._disconnectedReason = s || jn.LEAVE, this.connectionState = Rn.CLOSED, ie.debug("[".concat(this.clientId, "] ") + "will close datachannel in signal"), this.websocket.close(), s === jn.FALLBACK && (this.websocket.removeAllListeners(), this.websocket = new SJ("gateway-".concat(this.clientId), this.spec.retryConfig, !0, this.store), this.handleWebsocketEvents()); + } + join() { + return ye(this, null, function* () { + if (!this.joinResponse) { + this.emit(cr.ABORT_P2P_EXECUTION); + const s = yield Ro(this, cr.DATACHANNEL_CONNECTING), c = yield this.request(mr.JOIN, s); + if (!c) + return this.emit(cr.REPORT_JOIN_GATEWAY, _e.TIMEOUT, this.url || ""), !1; + this.joinResponse = c, this.emit(cr.JOIN_RESPONSE, this.joinResponse), this.reconnectToken = this.joinResponse.rejoin_token; + } + return this.connectionState = Rn.CONNECTED, this.pingpongTimer && window.clearInterval(this.pingpongTimer), this.pingpongTimer = window.setInterval(this.handlePingPong.bind(this), 3e3), !0; + }); + } + rejoin() { + return ye(this, null, function* () { + if (!this.reconnectToken) + throw new Je(_e.UNEXPECTED_ERROR, "can not rejoin, no rejoin token"); + const s = SS(this, cr.REQUEST_REJOIN_INFO); + s.token = this.reconnectToken; + const c = yield this.request(mr.REJOIN, s); + return !!c && (this.connectionState = Rn.CONNECTED, this.pingpongTimer && window.clearInterval(this.pingpongTimer), this.pingpongTimer = window.setInterval(this.handlePingPong.bind(this), 3e3), c.peers && c.peers.forEach((p) => { + this.emit(Zr.ON_USER_ONLINE, { uid: p.uid }), p.audio && this.emit(Zr.ON_ADD_AUDIO_STREAM, { uid: p.uid, uint_id: p.uint_id, audio: !0, ssrcId: p.audio_ssrc }), p.video && this.emit(Zr.ON_ADD_VIDEO_STREAM, { uid: p.uid, uint_id: p.uint_id, video: !0, ssrcId: p.video_ssrc }), p.audio_mute ? this.emit(Zr.MUTE_AUDIO, { uid: p.uid }) : this.emit(Zr.UNMUTE_AUDIO, { uid: p.uid }), p.video_mute ? this.emit(Zr.MUTE_VIDEO, { uid: p.uid }) : this.emit(Zr.UNMUTE_VIDEO, { uid: p.uid }), p.audio_enable_local ? this.emit(Zr.ENABLE_LOCAL_AUDIO, { uid: p.uid }) : this.emit(Zr.DISABLE_LOCAL_AUDIO, { uid: p.uid }), p.video_enable_local ? this.emit(Zr.ENABLE_LOCAL_VIDEO, { uid: p.uid }) : this.emit(Zr.DISABLE_LOCAL_VIDEO, { uid: p.uid }), p.audio || p.video || this.emit(Zr.ON_REMOVE_STREAM, { uid: p.uid, uint_id: p.uint_id }); + }), !0); + }); + } + reconnect(s, c) { + this.pingpongTimer && (this.pingpongTimeoutCount = 0, window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0), this.websocket.reconnect(s, c); + } + handleNotification(s) { + ie.debug("[".concat(this.clientId, "] receive notification: "), s); + const c = wS(s.code); + if (c.action !== "success") { + if (c.action !== "failed") + return c.action === "quit" ? (c.desc === "ERR_REPEAT_JOIN_CHANNEL" && this.close(jn.UID_BANNED), void this.close()) : void this.reconnect(c.action, Sg.SERVER_ERROR); + ie.error("[".concat(this.clientId, "] ignore error: "), c.desc); + } + } + handlePingPong() { + if (!this.websocket || this.websocket.state !== "connected") + return; + this.pingpongTimeoutCount > 0 && this.rttRolling.add(3e3), this.pingpongTimeoutCount += 1; + const s = Le("PING_PONG_TIME_OUT"), c = Date.now(); + this.pingpongTimeoutCount >= s && (ie.warning("PINGPONG Timeout. Last Socket Message: ".concat(c - this.lastMsgTime, "ms")), c - this.lastMsgTime > Le("WEBSOCKET_TIMEOUT_MIN")) ? this.reconnect("retry", Sg.TIMEOUT) : this.request(mr.PING, void 0, !0).then(() => { + this.pingpongTimeoutCount = 0; + const p = Date.now() - c; + this.rttRolling.add(p), Le("REPORT_STATS") && this.send(mr.PING_BACK, { pingpongElapse: p }); + }).catch((p) => { + }); + } + handleInflateData() { + const { inflateLength: s, deflateLength: c } = this.websocket.getInflateData(); + s !== 0 && c !== 0 && this.upload(am.WS_INFLATE_DATA_LENGTH, { ws_deflate_length: c, ws_inflate_length: s }); + } + handleWebsocketEvents() { + this.websocket.on(io.RECONNECT_WAITTING_FINISH, (s) => { + this.emit(cr.WS_RECONNECT_WAITTING_FINISH, s); + }), this.websocket.on(io.RECONNECT_CREATE_CONNECTION, (s) => { + this.emit(cr.WS_RECONNECT_CREATE_CONNECTION, s); + }), this.websocket.on(io.ON_MESSAGE, this.onWebsocketMessage), this.websocket.on(io.CLOSED, () => { + this.connectionState = Rn.CLOSED; + }), this.websocket.on(io.FAILED, () => { + this._disconnectedReason = jn.NETWORK_ERROR, this.connectionState = Rn.CLOSED; + }), this.websocket.on(io.RECONNECTING, (s) => { + this._websocketReconnectReason = s, this.joinResponse = void 0, this.connectionState === Rn.CONNECTED ? this.connectionState = Rn.RECONNECTING : this.connectionState = Rn.CONNECTING; + }), this.websocket.on(io.WILL_RECONNECT, (s, c) => { + if (SS(this, cr.IS_P2P_DISCONNECTED) && s === "retry") + return ie.debug("".concat(this.clientId, " reconnect mode is retry, but p2p lost, change to tryNext")), this.reconnectToken = void 0, this.emit(cr.NEED_RENEW_SESSION), this.emit(cr.DISCONNECT_P2P), c("tryNext"); + s !== "retry" && (ie.debug("".concat(this.clientId, " websockt will_connect event, renewSession reconnectMode is ").concat(s)), this.reconnectToken = void 0, this.emit(cr.NEED_RENEW_SESSION), this.emit(cr.DISCONNECT_P2P)), c(s); + }), this.websocket.on(io.CONNECTED, () => { + this.openConnectionTime = Date.now(), this.reconnectToken ? this.rejoin().catch((s) => { + ie.warning("[".concat(this.clientId, "] rejoin failed ").concat(s)), this.reconnect("tryNext", Sg.SERVER_ERROR); + }) : this.join().catch((s) => { + if (this.emit(cr.REPORT_JOIN_GATEWAY, s.message || s.code, this.url || ""), s instanceof Je && s.code === _e.UNEXPECTED_RESPONSE && s.data.code === Rr.ERR_NO_AUTHORIZED) + return ie.warning("[".concat(this.clientId, "] reconnect no authorized, recover")), void this.reconnect("recover", Sg.SERVER_ERROR); + ie.error("[".concat(this.clientId, "] join gateway request failed"), s.toString()), this.spec.forceWaitGatewayResponse ? this.reconnect("tryNext", Sg.SERVER_ERROR) : (this.initError = s, this.close()); + }); + }), this.websocket.on(io.REQUEST_NEW_URLS, (s, c) => { + Ro(this, cr.REQUEST_RECOVER, this.multiIpOption).then(s).catch(c); + }), this.websocket.on(io.ON_TOKEN_PRIVILEGE_DID_EXPIRE, () => { + this.emit(Zr.ON_TOKEN_PRIVILEGE_DID_EXPIRE); + }), this.websocket.on(io.TO_CONNECT_DATACHANNEL, (s, c, p) => ye(this, null, function* () { + return Ro(this, cr.DATACHANNEL_PRECONNECT, s).then(c).catch(p); + })), this.websocket.on(io.FAILBACK, () => { + this.openConnectionTime !== void 0 && this.emit(cr.DATACHANNEL_FAILBACK); + }); + } + } + class IS extends Ra { + constructor(s, c) { + super(), Z(this, "signal", void 0), Z(this, "token", void 0), Z(this, "tokenTimeout", void 0), Z(this, "tokenInterval", void 0), Z(this, "_sequence", 0), Z(this, "userMap", /* @__PURE__ */ new Map()), Z(this, "encoder", new TextEncoder()), this.signal = s, this.token = c; + const p = () => { + this.signal.connectionState === Rn.CONNECTED && this.check(), this.userMap.size === 0 ? this.tokenInterval = window.setTimeout(p, 1e3) : this.tokenInterval = window.setTimeout(p, 3 * Le("P2P_TOKEN_INTERVAL")); + }; + p(); + } + send(s, c, p, m, T) { + return ye(this, null, function* () { + var D, k, N; + if (this.userMap.size === 0) + return; + const U = Array.from(ip(D = this.userMap).call(D))[0].token; + typeof c != "string" && (c = JSON.stringify(c)), m = (k = m) !== null && k !== void 0 ? k : ra(6, ""), T = (N = T) !== null && N !== void 0 ? N : this._sequence++; + const V = { _id: m, _type: s, _seq: T, _message: c, token: "".concat(this.token, "_").concat(U) }; + Le("SHOW_P2P_LOG") && ie.debug("send message", V, "noNeedResponse : ".concat(p)), this.splitMessage(JSON.stringify(V)).forEach((K) => { + this.signal.request(mr.DATA_STREAM, { payload: PC(this.encoder.encode(K)) }); + }); + const G = new ot((K, q) => { + const ue = window.setTimeout(() => { + this.off("res-@".concat(m, "_ack"), oe), this.off("res-@".concat(m), Ce), this.off(i_.ABORT, he), ie.debug("[external-signal] request timeout, type: ".concat(s, ", requestId: ").concat(m)), this.userMap.size === 0 ? q(new mt(_e.INVALID_REMOTE_USER)) : q(new mt(_e.TIMEOUT)); + }, Le("EXTERNAL_SIGNAL_REQUEST_TIMEOUT")), oe = () => { + ue && window.clearTimeout(ue), this.off(i_.ABORT, he), p && K(); + }, he = () => { + ue && window.clearTimeout(ue), this.off("res-@".concat(m, "_ack"), oe), this.off("res-@".concat(m), Ce), q(new mt(_e.EXTERNAL_SIGNAL_ABORT, "type: ".concat(s, ", requestId: ").concat(m))); + }; + this.once(i_.ABORT, he), this.once("res-@".concat(m, "_ack"), oe); + const Ce = (Ge, tt) => { + ke = !0, ue && window.clearTimeout(ue), this.off("res-@".concat(m, "_ack"), oe), this.off(i_.ABORT, he), Ge === "success" ? K(tt) : q(new mt(_e.P2P_MESSAGE_FAILED, "request ".concat(s, " failed, requestId: ").concat(m))); + }; + let ke = !1; + p || (this.once("res-@".concat(m), Ce), _s(Le("SIGNAL_REQUEST_TIMEOUT")).then(() => { + ke || ie.warning("external_signal request timeout, type: ".concat(s, ", requestId: ").concat(m, ", ").concat(V)); + })); + }); + try { + return yield G; + } catch (K) { + if (K.code === _e.TIMEOUT) + return yield this.send(s, c, p, m, T); + throw K; + } + }); + } + onMessage(s) { + var c; + const { _uid: p } = s; + let m, T = this.userMap.get(p); + if (T) + m = T.splitMessageMap; + else { + if (this.userMap.size > 0 || !("_type" in s) || s._type !== Za.CHECK) + return; + const { token: U } = s; + m = /* @__PURE__ */ new Map(), T = { uid: p, isStart: !0, token: U, splitMessageMap: m, nextExpectedSequenceNumber: 0, receivedMessagesMap: /* @__PURE__ */ new Map() }, this.userMap.set(p, T), this.signal.emit(Zr.ON_USER_ONLINE, { uid: p }), this.handleUserOnline(); + } + if ("id" in s && "total" in s) { + var D; + const { id: U, total: V } = s, G = (D = m.get(U)) !== null && D !== void 0 ? D : []; + if (G.push(s), m.has(U) || m.set(U, G), G.length !== V) + return; + { + const K = dx(G).call(G, (q, ue) => q.index - ue.index).map((q) => q.payload).join(""); + m.delete(U), (s = JSON.parse(K))._uid = p; + } + } + const { _type: k, token: N } = s; + if (rr(c = [Za.ACK, Za.CHECK]).call(c, k)) + return k === Za.CHECK && this.handleCheckToken(T, N), void this.receiveMessage(s); + N === "".concat(T.token, "_").concat(this.token) ? this.handleReceivedMessage(s) : ie.debug('Receive unexpected message", '.concat(N, ", cur_token: ").concat(T.token, "_").concat(this.token), s); + } + check() { + const s = { _id: ra(6, ""), token: this.token, _type: Za.CHECK }; + Le("SHOW_P2P_LOG") && ie.debug("send message", s), this.signal.request(mr.DATA_STREAM, { payload: PC(this.encoder.encode(JSON.stringify(s))) }); + } + ack(s) { + const c = { _id: s, _type: Za.ACK, token: this.token }; + Le("SHOW_P2P_LOG") && ie.debug("send message", c), this.signal.request(mr.DATA_STREAM, { payload: PC(this.encoder.encode(JSON.stringify(c))) }); + } + response(s, c, p) { + this.send(Za.RESPONSE, JSON.stringify({ success: !p, message: c }), !0, s); + } + handleReceivedMessage(s) { + const c = () => { + this.userMap.forEach((U) => { + const { receivedMessagesMap: V, nextExpectedSequenceNumber: G } = U; + for (; V.has(G); ) { + const K = V.get(G); + V.delete(G), this.receiveMessage(K), U.nextExpectedSequenceNumber++; + } + }); + }; + if (!s) + return void c(); + const { _uid: p, _seq: m } = s, T = this.userMap.get(p), { receivedMessagesMap: D, isStart: k, nextExpectedSequenceNumber: N } = T; + if (m < N) + return this.ack(s._id), void ie.debug("[external-signal] receive old message, seq: ".concat(m, ", ").concat(s._message)); + D.set(m, s), k && m === N && (this.receiveMessage(s), D.delete(N), T.nextExpectedSequenceNumber++, c()); + } + receiveMessage(s) { + const { _id: c, _type: p, _message: m, _uid: T } = s; + if (Le("SHOW_P2P_LOG") && ie.debug("receive message", s), c) { + let D; + switch (s._type !== Za.ACK && (m && (D = JSON.parse(m)), this.ack(s._id)), s._type) { + case Za.CANDIDATE: + case Za.CONTROL: + this.signal.emit(p, D, T); + break; + case Za.PUBLISH: + case Za.UNPUBLISH: + case Za.RESTART_ICE: + case Za.CALL: + D.uid = T, Ro(this.signal, p, D).then((k) => { + this.response(s._id, k); + }).catch(() => { + this.response(s._id, void 0, !0); + }); + break; + case Za.ACK: + this.getListeners("res-@".concat(c, "_ack")).length > 0 && this.emit("res-@".concat(c, "_ack")); + break; + case Za.RESPONSE: { + const { success: k, message: N } = D; + this.emit("res-@".concat(c), k ? "success" : "failed", N); + break; + } + } + } + } + splitMessage(s) { + if (s.length < IS.MAX_MESSAGE_SIZE) + return [s]; + const c = [], { remoteToken: p } = JSON.parse(s), m = ra(6, ""); + let T = 0, D = 800; + const k = Math.ceil(s.length / D); + for (; s.length > 0; ) { + T++; + const N = { id: m, index: T, total: k, payload: s.slice(0, D), token: "".concat(this.token, "_").concat(p) }; + JSON.stringify(N).length > IS.MAX_MESSAGE_SIZE ? D -= 50 : (c.push(N), s = s.slice(D)); + } + return c.map((N) => JSON.stringify(N)); + } + handleCheckToken(s, c) { + return s.token !== c ? (ie.debug("token changed, from ".concat(s.token, " to ").concat(c)), this.reset(s.uid, c), !1) : (this.tokenTimeout && (window.clearTimeout(this.tokenTimeout), this.tokenTimeout = void 0), this.tokenTimeout = window.setTimeout(() => { + ie.debug("token timeout, ".concat(c)), this.reset(s.uid); + }, Le("MAX_P2P_TIMEOUT")), !0); + } + handleUserOnline() { + return ye(this, null, function* () { + const s = yield Ro(this.signal, Za.CALL, void 0), c = yield this.send(Za.CALL, s); + this.signal.emit(cr.P2P_CONNECTION, c, !0); + }); + } + reset(s, c) { + return ye(this, null, function* () { + const p = this.userMap.get(s); + p && (this.emit(i_.ABORT), this.signal.emit(Zr.ON_USER_OFFLINE, { uid: p.uid, reason: n5.P2P_TOKEN_CHANGED }), this._sequence = 0, this.userMap.clear(), c || (ie.debug("change local token from ".concat(c, " to ").concat(c)), this.token = ra(6, ""))); + }); + } + clear() { + this._sequence = 0, this.userMap.clear(), this.tokenInterval && window.clearTimeout(this.tokenInterval), this.tokenInterval = void 0, this.tokenTimeout && window.clearTimeout(this.tokenTimeout), this.tokenTimeout = void 0, this.emit(i_.ABORT); + } + } + Z(IS, "MAX_SIZE", 1), Z(IS, "MAX_MESSAGE_SIZE", 1024); + class bJ extends Ra { + get connectionState() { + return this._connectionState; + } + set connectionState(s) { + s !== this._connectionState && (this._connectionState = s, s === Rn.CONNECTED ? this.emit(cr.WS_CONNECTED) : s === Rn.RECONNECTING ? this.emit(cr.WS_RECONNECTING, this._websocketReconnectReason) : s === Rn.CLOSED && this.emit(cr.WS_CLOSED, this._disconnectedReason)); + } + get currentURLIndex() { + return this.websocket.currentURLIndex; + } + get url() { + return this.websocket && this.websocket.url || null; + } + get rtt() { + return this.rttRolling.mean(); + } + constructor(s, c) { + super(), Z(this, "_disconnectedReason", void 0), Z(this, "_websocketReconnectReason", void 0), Z(this, "_connectionState", Rn.CLOSED), Z(this, "reconnectToken", void 0), Z(this, "p2pToken", void 0), Z(this, "websocket", void 0), Z(this, "openConnectionTime", void 0), Z(this, "clientId", void 0), Z(this, "lastMsgTime", Date.now()), Z(this, "uploadCache", []), Z(this, "uploadCacheInterval", void 0), Z(this, "rttRolling", new Rj(5)), Z(this, "pingpongTimer", void 0), Z(this, "pingpongTimeoutCount", 0), Z(this, "joinResponse", void 0), Z(this, "multiIpOption", void 0), Z(this, "initError", void 0), Z(this, "spec", void 0), Z(this, "store", void 0), Z(this, "_external_signal", void 0), Z(this, "onWebsocketMessage", (p) => { + if (p.data instanceof ArrayBuffer) + return void this.emit(cr.ON_BINARY_DATA, p.data); + const m = JSON.parse(p.data); + if (this.lastMsgTime = Date.now(), Object.prototype.hasOwnProperty.call(m, "_id")) { + const T = "res-@".concat(m._id); + this.emit(T, m._result, m._message); + } else if (Object.prototype.hasOwnProperty.call(m, "_type")) { + switch (m._type) { + case Zr.ON_DATA_STREAM: + return void this.handleDataStream(m._message); + case Zr.MUTE_AUDIO: + case Zr.MUTE_VIDEO: + case Zr.ON_P2P_LOST: + case Zr.ON_USER_ONLINE: + return; + case Zr.ON_USER_OFFLINE: + const { uid: T } = m._message; + return ie.debug("[".concat(this.clientId, "] user-offline uid: ").concat(T)), void this._external_signal.reset(T); + } + if (this.emit(m._type, m._message), m._type === Zr.ON_NOTIFICATION && this.handleNotification(m._message), m._type === Zr.ON_USER_BANNED) + switch (m._message.error_code) { + case 14: + this.close(jn.UID_BANNED); + break; + case 15: + this.close(jn.IP_BANNED); + break; + case 16: + this.close(jn.CHANNEL_BANNED); + } + if (m._type === Zr.ON_USER_LICENSE_BANNED) + switch (m._message.error_code) { + case Rr.ERR_LICENSE_MISSING: + this.close(jn.LICENSE_MISSING); + break; + case Rr.ERR_LICENSE_EXPIRED: + this.close(jn.LICENSE_EXPIRED); + break; + case Rr.ERR_LICENSE_MINUTES_EXCEEDED: + this.close(jn.LICENSE_MINUTES_EXCEEDED); + break; + case Rr.ERR_LICENSE_PERIOD_INVALID: + this.close(jn.LICENSE_PERIOD_INVALID); + break; + case Rr.ERR_LICENSE_MULTIPLE_SDK_SERVICE: + this.close(jn.LICENSE_MULTIPLE_SDK_SERVICE); + break; + case Rr.ERR_LICENSE_ILLEGAL: + this.close(jn.LICENSE_ILLEGAL); + break; + default: + this.close(); + } + } + }), this.clientId = s.clientId, this.spec = s, this.store = c, this.websocket = new Px("gateway-".concat(this.clientId), this.spec.retryConfig, !0, Le("JOIN_GATEWAY_USE_DUAL_DOMAIN"), Le("JOIN_GATEWAY_USE_443PORT_ONLY"), c), this.handleWebsocketEvents(), window.addEventListener("offline", () => { + this.connectionState === Rn.CONNECTED && this.reconnect("retry", ys.OFFLINE); + }), this.p2pToken = ra(6, ""), this._external_signal = new IS(this, this.p2pToken); + } + request(s, c, p, m) { + return ye(this, null, function* () { + const T = ra(6, ""), D = { _id: T, _type: s, _message: c }, k = this.websocket.connectionID, N = () => new ot((ue, oe) => { + if (this.connectionState === Rn.CONNECTED) + return ue(); + const he = () => { + this.off(cr.WS_CLOSED, Ce), ue(); + }, Ce = () => { + this.off(cr.WS_CONNECTED, he), oe(new mt(_e.WS_ABORT)); + }; + this.once(cr.WS_CONNECTED, he), this.once(cr.WS_CLOSED, Ce); + }); + if (this.connectionState !== Rn.CONNECTING && this.connectionState !== Rn.RECONNECTING || s === mr.JOIN || s === mr.REJOIN || (yield N()), this.websocket.sendMessage(D, !0), m) + return; + const U = new ot((ue, oe) => { + let he = !1; + const Ce = (Ge, tt) => { + he = !0, ue({ isSuccess: Ge === "success", message: tt || {} }), this.off(cr.WS_CLOSED, ke), this.off(cr.WS_RECONNECTING, ke), this.emit(cr.REQUEST_SUCCESS, s, c); + }; + this.once("res-@".concat(T), Ce); + const ke = () => { + oe(new mt(_e.WS_ABORT, "type: ".concat(s))), this.off(cr.WS_CLOSED, ke), this.off(cr.WS_RECONNECTING, ke), this.off("res-@".concat(T), Ce); + }; + this.once(cr.WS_CLOSED, ke), this.once(cr.WS_RECONNECTING, ke), _s(Le("SIGNAL_REQUEST_TIMEOUT")).then(() => { + this.websocket.connectionID !== k || he || (ie.warning("[".concat(this.clientId, "] ws request timeout, type: ").concat(s)), this.emit(cr.REQUEST_TIMEOUT, s, c)); + }); + }); + let V = null; + try { + V = yield U; + } catch (ue) { + if (this.connectionState === Rn.CLOSED || s === mr.LEAVE) + throw new mt(_e.WS_ABORT); + return !this.spec.forceWaitGatewayResponse || p ? ue.throw() : s === mr.JOIN || s === mr.REJOIN ? null : (yield N(), yield this.request(s, c)); + } + if (V.isSuccess) + return V.message; + const G = Number(V.message.error_code || V.message.code), K = wS(G), q = new mt(_e.UNEXPECTED_RESPONSE, "".concat(K.desc, ": ").concat(V.message.error_str), { code: G, data: V.message }); + return K.action === "success" ? V.message : (ie.warning("[".concat(this.clientId, "] [").concat(this.websocket.connectionID, "] unexpected response from type ").concat(s, ", error_code: ").concat(G, ", message: ").concat(K.desc, ", action: ").concat(K.action)), G === Rr.ERR_TOO_MANY_BROADCASTERS ? ((s === mr.JOIN || s === mr.REJOIN) && (this.initError = q, this.close()), q.throw()) : K.action === "failed" ? q.throw() : K.action === "quit" ? (this.initError = q, this.close(), q.throw()) : (G === Rr.ERR_JOIN_BY_MULTI_IP ? (this.multiIpOption = V.message.option, ie.warning("[".concat(this.clientId, "] detect multi ip, recover")), this.reconnect("recover", ys.MULTI_IP)) : this.reconnect(K.action, ys.SERVER_ERROR), s === mr.JOIN || s === mr.REJOIN ? null : yield this.request(s, c))); + }); + } + waitMessage(s, c) { + return new ot((p) => { + const m = (T) => { + (!c || c(T)) && (this.off(s, m), p(T)); + }; + this.on(s, m); + }); + } + uploadWRTCStats(s) { + if (!this.store.sessionId) + return void ie.warn("[".concat(this.clientId, "] no session id when upload wrtc stats")); + const c = { lts: Date.now(), sid: this.store.sessionId, uid: this.store.intUid, stats: s }; + this.upload(am.WRTC_STATS, c); + } + upload(s, c) { + const p = { _type: s, _message: c }; + try { + this.websocket.sendMessage(p); + } catch (m) { + const T = Le("MAX_UPLOAD_CACHE") || 50; + this.uploadCache.push(p), this.uploadCache.length > T && this.uploadCache.splice(0, 1), this.uploadCache.length > 0 && !this.uploadCacheInterval && (this.uploadCacheInterval = window.setInterval(() => { + if (this.connectionState !== Rn.CONNECTED) + return; + const D = this.uploadCache.splice(0, 1)[0]; + this.uploadCache.length === 0 && (window.clearInterval(this.uploadCacheInterval), this.uploadCacheInterval = void 0), this.upload(D._type, D._message); + }, Le("UPLOAD_CACHE_INTERVAL") || 2e3)); + } + } + send(s, c) { + const p = { _type: s, _message: c }; + this.websocket.sendMessage(p); + } + sendExtensionMessage(s, c, p) { + return ye(this, null, function* () { + return yield this._external_signal.send(s, c, p); + }); + } + init(s) { + return this.initError = void 0, this.multiIpOption = void 0, this.joinResponse = void 0, this.reconnectToken = void 0, this.openConnectionTime = void 0, new ot((c, p) => { + this.once(cr.WS_CONNECTED, () => c(this.joinResponse)), this.once(cr.WS_CLOSED, () => p(this.initError || new mt(_e.WS_ABORT))), this.connectionState = Rn.CONNECTING, this.websocket.init(s).catch(p); + }); + } + close(s) { + this.pingpongTimer && (this.pingpongTimeoutCount = 0, window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0), this.reconnectToken = void 0, this.joinResponse = void 0, this._external_signal.clear(), this._disconnectedReason = s || jn.LEAVE, this.connectionState = Rn.CLOSED, ie.debug("[".concat(this.clientId, "] ") + "will close websocket in signal"), this.websocket.close(), s === jn.FALLBACK && (this.websocket.removeAllListeners(), this.websocket = new Px("gateway-".concat(this.clientId), this.spec.retryConfig, !0, Le("JOIN_GATEWAY_USE_DUAL_DOMAIN"), Le("JOIN_GATEWAY_USE_443PORT_ONLY"), this.store), this.handleWebsocketEvents()), this.p2pToken = ra(6, ""), this._external_signal.clear(), this._external_signal = new IS(this, this.p2pToken); + } + join() { + return ye(this, null, function* () { + if (!this.joinResponse) { + this.emit(cr.ABORT_P2P_EXECUTION); + const s = yield Ro(this, cr.REQUEST_JOIN_INFO), c = yield this.request(mr.JOIN, s); + if (!c) + return this.emit(cr.REPORT_JOIN_GATEWAY, _e.TIMEOUT, this.url || ""), !1; + this.joinResponse = c, this.emit(cr.JOIN_RESPONSE, this.joinResponse), this.reconnectToken = this.joinResponse.rejoin_token; + } + return this.connectionState = Rn.CONNECTED, this.pingpongTimer && window.clearInterval(this.pingpongTimer), this.pingpongTimer = window.setInterval(this.handlePingPong.bind(this), 3e3), !0; + }); + } + reconnect(s, c) { + this.pingpongTimer && (this.pingpongTimeoutCount = 0, window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0), this.websocket.reconnect(s, c); + } + handleDataStream(s) { + try { + var c; + const p = Tx(s.payload), m = new TextDecoder().decode(p), T = JSON.parse(m); + "total" in T && "id" in T || rr(c = Object.values(Za)).call(c, T._type) ? (T._uid = s.uid, this._external_signal.onMessage(T)) : this.emit(Zr.ON_DATA_STREAM, s); + } catch (p) { + this.emit(Zr.ON_DATA_STREAM, s); + } + } + handleNotification(s) { + ie.debug("[".concat(this.clientId, "] receive notification: "), s); + const c = wS(s.code); + if (c.action !== "success") { + if (c.action !== "failed") + return c.action === "quit" ? (c.desc === "ERR_REPEAT_JOIN_CHANNEL" && this.close(jn.UID_BANNED), void this.close()) : void this.reconnect(c.action, ys.SERVER_ERROR); + ie.error("[".concat(this.clientId, "] ignore error: "), c.desc); + } + } + handlePingPong() { + if (!this.websocket || this.websocket.state !== "connected") + return; + this.pingpongTimeoutCount > 0 && this.rttRolling.add(3e3), this.pingpongTimeoutCount += 1; + const s = Le("PING_PONG_TIME_OUT"), c = Date.now(); + this.pingpongTimeoutCount >= s && (ie.warning("[".concat(this.clientId, "] PINGPONG Timeout. Last Socket Message: ").concat(c - this.lastMsgTime, "ms")), c - this.lastMsgTime > Le("WEBSOCKET_TIMEOUT_MIN")) ? this.reconnect("retry", ys.TIMEOUT) : this.request(mr.PING, void 0, !0).then(() => { + this.pingpongTimeoutCount = 0; + const p = Date.now() - c; + this.rttRolling.add(p), Le("REPORT_STATS") && this.send(mr.PING_BACK, { pingpongElapse: p }); + }).catch((p) => { + }); + } + handleWebsocketEvents() { + this.websocket.on(Yr.RECONNECT_WAITTING_FINISH, (s) => { + this.emit(cr.WS_RECONNECT_WAITTING_FINISH, s); + }), this.websocket.on(Yr.RECONNECT_CREATE_CONNECTION, (s) => { + this.emit(cr.WS_RECONNECT_CREATE_CONNECTION, s); + }), this.websocket.on(Yr.ON_MESSAGE, this.onWebsocketMessage), this.websocket.on(Yr.CLOSED, () => { + this.connectionState = Rn.CLOSED; + }), this.websocket.on(Yr.FAILED, () => { + this._disconnectedReason = jn.NETWORK_ERROR, this.connectionState = Rn.CLOSED; + }), this.websocket.on(Yr.RECONNECTING, (s) => { + this._websocketReconnectReason = s, this.joinResponse = void 0, this.connectionState === Rn.CONNECTED ? this.connectionState = Rn.RECONNECTING : this.connectionState = Rn.CONNECTING; + }), this.websocket.on(Yr.WILL_RECONNECT, (s, c, p) => { + s !== "retry" ? (ie.debug("".concat(this.clientId, " websocket will_connect event, renewSession reconnectMode is ").concat(s)), this.reconnectToken = void 0, this.emit(cr.NEED_RENEW_SESSION)) : ie.debug("".concat(this.clientId, " reconnect mode is retry, no need to renew session")), p(s); + }), this.websocket.on(Yr.CONNECTED, () => { + this.openConnectionTime = Date.now(), this.join().catch((s) => { + if (this.emit(cr.REPORT_JOIN_GATEWAY, s.message || s.code, this.url || ""), s instanceof mt && s.code === _e.UNEXPECTED_RESPONSE && s.data.code === Rr.ERR_NO_AUTHORIZED) + return ie.warning("[".concat(this.clientId, "] reconnect no authorized, recover")), void this.reconnect("recover", ys.SERVER_ERROR); + ie.error("[".concat(this.clientId, "] join gateway request failed"), s.toString()), this.spec.forceWaitGatewayResponse ? this.reconnect("tryNext", ys.SERVER_ERROR) : (this.initError = s, this.close()); + }); + }), this.websocket.on(Yr.REQUEST_NEW_URLS, (s, c) => { + Ro(this, cr.REQUEST_RECOVER, this.multiIpOption).then(s).catch(c); + }), this.websocket.on(Yr.ON_TOKEN_PRIVILEGE_DID_EXPIRE, () => { + this.emit(Zr.ON_TOKEN_PRIVILEGE_DID_EXPIRE); + }); + } + } + function EJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Fd(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? EJ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : EJ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + const h5 = /* @__PURE__ */ new Map(); + class QPe extends Ra { + get state() { + return this._state; + } + set state(s) { + if (s === this._state) + return; + const c = this._state; + this._state = s, s === "DISCONNECTED" && this._disconnectedReason ? this.emit(Ka.CONNECTION_STATE_CHANGE, s, c, this._disconnectedReason) : this.emit(Ka.CONNECTION_STATE_CHANGE, s, c); + } + get joinGatewayStartTime() { + return this._joinGatewayStartTime; + } + set joinGatewayStartTime(s) { + ie.debug("[".concat(this.store.clientId, "] set joinGatewayStartTime at ").concat(s)), this._joinGatewayStartTime = s; + } + constructor(s, c) { + super(), Z(this, "store", void 0), Z(this, "joinInfo", void 0), Z(this, "key", void 0), Z(this, "ntpOffset", 0), Z(this, "signal", void 0), Z(this, "role", void 0), Z(this, "inChannelInfo", { joinAt: null, duration: 0 }), Z(this, "spec", void 0), Z(this, "_state", "DISCONNECTED"), Z(this, "_statsCollector", void 0), Z(this, "_disconnectedReason", void 0), Z(this, "isSignalRecover", !1), Z(this, "hasChangeBGPAddress", !1), Z(this, "trafficStatsInterval", void 0), Z(this, "networkQualityInterval", void 0), Z(this, "_joinGatewayStartTime", 0), Z(this, "_signalTimeout", !1), Z(this, "_clientRoleOptions", void 0), Z(this, "_isProactiveJoin", !1), this.store = s, this.spec = c, this.signal = this.store.useP2P ? new bJ(Fd(Fd({}, c), {}, { retryConfig: c.websocketRetryConfig }), s) : this.store.useDataChannel ? new om(Fd(Fd({}, c), {}, { retryConfig: c.websocketRetryConfig }), s) : new hJ(Fd(Fd({}, c), {}, { retryConfig: c.websocketRetryConfig }), s), this._statsCollector = c.statsCollector, this.role = c.role || "audience", this._clientRoleOptions = c.clientRoleOptions, this.handleSignalEvents(); + } + join(s, c, p) { + return ye(this, null, function* () { + if (this.signal instanceof om) { + let N = !1; + s.cloudProxyServer !== "disabled" ? (ie.debug("[".concat(this.store.clientId, "] Dc is not supported, because cloudProxyServer are not supported (").concat(s.cloudProxyServer, ")")), N = !0) : "".concat(s.apResponse.cid, "_").concat(s.apResponse.cert).length > 255 || "".concat(s.apResponse.cid, "_").concat(s.apResponse.cert).length < 22 ? (ie.debug("[".concat(this.store.clientId, "] Dc is not supported, because ticket length is incorrect, it has to be between 22 and 255")), N = !0) : s.apResponse.addresses.some((U) => U.fingerprint) || Le("FINGERPRINT") || (ie.debug("[".concat(this.store.clientId, "] Dc is not supported, because fingerprint does not exist")), N = !0), N && this.resetSignal(); + } + this.store.joinGatewayStart(), s.cloudProxyServer !== "disabled" && (this.hasChangeBGPAddress = !0); + const m = Date.now(); + let T = h5.get(s.cname); + if (T || (T = /* @__PURE__ */ new Map(), h5.set(s.cname, T)), this._isProactiveJoin = !0, T.has(s.uid)) { + const N = new Je(_e.UID_CONFLICT); + throw vr.joinGateway(s.sid, { lts: m, succ: !1, ec: N.message, addr: null, uid: s.uid, cid: s.cid, firstSuccess: this._isProactiveJoin, avoidJoinStartTime: this.store.avoidJoinStart, isProxy: !!s.proxyServer, signalChannel: this.signal instanceof om ? "1" : "0" }), this._isProactiveJoin = !1, N; + } + T.set(s.uid, !0), this.joinInfo = s, this.key = c; + let D = 0; + this.joinGatewayStartTime = m; + const k = s.proxyServer; + try { + let N; + if (ie.debug("[".concat(this.store.clientId, "] use ").concat(this.signal instanceof om ? "datachannel" : "websocket", " join uid ").concat(D)), this.signal instanceof om) + N = yield this.signal.init(s.apResponse.addresses, p); + else { + const U = s.gatewayAddrs.map((V) => { + let { address: G } = V; + const [K, q] = G.split(":"), ue = { host: K, port: q }; + return s.proxyServer && (ue.proxy = s.proxyServer), ue; + }); + N = yield this.signal.init(U, p); + } + D = N.uid, ie.debug("[".concat(this.store.clientId, "] ").concat(this.signal instanceof om ? "datachannel" : "websocket", " join uid ").concat(D, " cost ").concat(Date.now() - this.joinGatewayStartTime)); + } catch (N) { + throw N && N.code === _e.INIT_WEBSOCKET_TIMEOUT ? (ie.warning("[".concat(this.store.clientId, "] User join failed"), N.toString()), N) : N && N.code === _e.INIT_DATACHANNEL_TIMEOUT ? (ie.warning("[".concat(this.store.clientId, "] User join datachannel failed"), N.toString()), this.resetSignal(), N) : (ie.error("[".concat(this.store.clientId, "] User join failed"), N.toString()), vr.joinGateway(s.sid, { lts: m, succ: !1, ec: N.message, addr: this.signal.url, uid: s.uid, cid: s.cid, firstSuccess: this._isProactiveJoin, avoidJoinStartTime: this.store.avoidJoinStart, isProxy: !!k, signalChannel: this.signal instanceof om ? "1" : "0" }), this._isProactiveJoin = !1, T.delete(s.uid), this.signal.close(), N); + } + return this.state = "CONNECTED", this.inChannelInfo.joinAt = Date.now(), ie.debug("[".concat(this.store.clientId, "] Connected to gateway server")), this.trafficStatsInterval = window.setInterval(() => { + this.updateTrafficStats().catch((N) => { + ie.warning("[".concat(this.store.clientId, "] get traffic stats error"), N.toString()); + }); + }, 3e3), this.networkQualityInterval = window.setInterval(() => { + navigator && navigator.onLine !== void 0 && !navigator.onLine ? this.emit(Ka.NETWORK_QUALITY, { downlinkNetworkQuality: 6, uplinkNetworkQuality: 6 }) : this._signalTimeout ? this.emit(Ka.NETWORK_QUALITY, { downlinkNetworkQuality: 5, uplinkNetworkQuality: 5 }) : this.state === "CONNECTED" && this._statsCollector.trafficStats ? this.emit(Ka.NETWORK_QUALITY, { uplinkNetworkQuality: yJ(this._statsCollector.trafficStats.B_unq), downlinkNetworkQuality: yJ(this._statsCollector.trafficStats.B_dnq) }) : this.emit(Ka.NETWORK_QUALITY, { uplinkNetworkQuality: 0, downlinkNetworkQuality: 0 }); + }, 2e3), this.store.joinGatewayEnd(), D; + }); + } + leave() { + return ye(this, arguments, function* () { + let s = arguments.length > 0 && arguments[0] !== void 0 && arguments[0], c = arguments.length > 1 ? arguments[1] : void 0; + if (this.state !== "DISCONNECTED") { + c !== jn.FALLBACK && (this.state = "DISCONNECTING"); + try { + s || this.signal.connectionState !== Rn.CONNECTED || (yield function(p, m) { + return m === 1 / 0 ? p : ot.race([p, Vke(m)]); + }(this.signal.request(mr.LEAVE, void 0, !0), 3e3)); + } catch (p) { + ie.warning("[".concat(this.store.clientId, "] leave request failed, ignore"), p); + } + this.signal.close(c), c !== jn.FALLBACK && (this.state = "DISCONNECTED"), this.reset(); + } + }); + } + publish(s, c, p) { + return ye(this, null, function* () { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish when connection state is ".concat(this.state)); + const m = { state: "offer", p2p_id: this.store.p2pId, ortc: c, mode: this.spec.mode, extend: Le("PUB_EXTEND"), twcc: !!Le("PUBLISH_TWCC"), rtx: !!Le("USE_PUB_RTX") }; + try { + return (yield this.signal.request(mr.PUBLISH, m, !0))._message; + } catch (T) { + if (p && T.data && T.data.code === Rr.ERR_PUBLISH_REQUEST_INVALID) + return ie.warning("[".concat(this.store.clientId, "] receive publish error code, retry"), T.toString()), yield this.tryUnpubBeforeRepub(s, c), this.publish(s, c, !1); + throw T; + } + }); + } + publishDataChannel(s, c, p) { + return ye(this, null, function* () { + var m; + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish when connection state is ".concat(this.state)); + const T = { stream_id: c.streamId, ordered: c.ordered ? 1 : 0, max_retrans_times: (m = c.maxRetransmits) !== null && m !== void 0 ? m : 10, channel_id: c.channelId, metadata: c.metadata }; + try { + yield this.signal.request(mr.PUBLISH_DATASTREAM, T, !0); + } catch (D) { + if (p && D.data && D.data.code === Rr.ERR_PUBLISH_REQUEST_INVALID) + return ie.warning("[".concat(this.store.clientId, "] receive publish datachannels error code, retry"), D.toString()), yield this.tryUnpubDataChannelBeforeRepub(s, c), this.publishDataChannel(s, c, !1); + throw D; + } + }); + } + unpublish(s, c) { + return ye(this, null, function* () { + try { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish when connection state is ".concat(this.state)); + yield this.signal.request(mr.UNPUBLISH, { stream_id: c, ortc: s }, !0); + } catch (p) { + ie.warning("[".concat(this.store.clientId, "] unpublish warning: "), p); + } + }); + } + unpublishDataChannel(s) { + return ye(this, null, function* () { + try { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish when connection state is ".concat(this.state)); + yield ot.all(s.map((c) => this.signal.request(mr.UNPUBLISH_DATASTREAM, { channel_id: c }, !0))); + } catch (c) { + ie.warning("unpublish datachannels warning: ", c); + } + }); + } + presubscribe(s, c, p) { + return ye(this, null, function* () { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not presubscribe when connection state is ".concat(this.state)); + const m = { stream_id: s, stream_type: c, mode: this.spec.mode, codec: this.spec.codec, p2p_id: this.store.p2pId, twcc: !!Le("SUBSCRIBE_TWCC"), rtx: !!Le("USE_SUB_RTX") || void 0, extend: Le("SUB_EXTEND"), svc: Array.isArray(Le("SVC")) && Le("SVC").length !== 0 ? Le("SVC") : void 0 }; + try { + return yield this.signal.request(mr.PRE_SUBSCRIBE, m, !0); + } catch (T) { + if (p && T.data && T.data.code === Rr.ERR_SUBSCRIBE_REQUEST_INVALID) + return ie.warning("[".concat(this.store.clientId, "] pre-subscribe error, retry"), T.toString()), this.presubscribe(s, c, !1); + throw T; + } + }); + } + subscribe(s, c, p) { + return ye(this, null, function* () { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not subscribe when connection state is ".concat(this.state)); + const m = { stream_id: s, stream_type: c.stream_type, mode: this.spec.mode, codec: this.spec.codec, p2p_id: this.store.p2pId, twcc: !!Le("SUBSCRIBE_TWCC"), rtx: !!Le("USE_SUB_RTX"), extend: Le("SUB_EXTEND"), ssrcId: c.ssrcId, svc: Array.isArray(Le("SVC")) && Le("SVC").length !== 0 ? Le("SVC") : void 0 }; + try { + return (yield this.signal.request(mr.SUBSCRIBE, m, !0))._message; + } catch (T) { + if (p && T.data && T.data.code === Rr.ERR_SUBSCRIBE_REQUEST_INVALID) + return ie.warning("[".concat(this.store.clientId, "] receiver subscribe error code, retry"), T.toString()), yield this.tryUnsubBeforeResub(s, c), yield this.subscribe(s, c, !1); + throw T; + } + }); + } + subscribeDataChannel(s, c, p) { + return ye(this, null, function* () { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not subscribe datachannel when connection state is ".concat(this.state)); + const m = { uid: s, stream_id: c.id, channel_id: c.datachannelId }; + try { + return void (yield this.signal.request(mr.SUBSCRIBE_DATASTREAM, m, !0)); + } catch (T) { + if (p && T.data && T.data.code === Rr.ERR_SUBSCRIBE_REQUEST_INVALID) + return ie.warning("[".concat(this.store.clientId, "] receiver subscribe datachannel error code, retry"), T.toString()), yield this.tryUnsubDataChannelBeforeResub(s, c), yield this.subscribeDataChannel(s, c, !1); + throw T; + } + }); + } + subscribeAll(s, c) { + return ye(this, null, function* () { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not massSubscribe when connection state is ".concat(this.state)); + const p = { p2p_id: this.store.p2pId, users: s, dtx: !1, rtx: !!Le("USE_SUB_RTX") }; + try { + return yield this.signal.request(mr.SUBSCRIBE_STREAMS, p, !0); + } catch (m) { + if (c && m.data && m.data.code === Rr.ERR_SUBSCRIBE_REQUEST_INVALID) + return ie.warning("[".concat(this.store.clientId, "] receiver massSubscribe error code, retry"), m.toString()), yield this.tryMassUnsubBeforeResub(s), yield this.subscribeAll(s, !1); + throw m; + } + }); + } + setVideoProfile(s) { + return ye(this, null, function* () { + const c = function(p) { + if (!(p.bitrateMax && p.bitrateMin && p.frameRate && p.height && p.width)) + return; + let m = p.frameRate, T = p.width, D = p.height, k = !0; + return typeof m != "number" && (m = m.exact || m.ideal || m.max || m.min || 0, m || (k = !1)), typeof T != "number" && (T = T.exact || T.ideal || T.max || T.min || 0, T || (k = !1)), typeof D != "number" && (D = D.exact || D.ideal || D.max || D.min || 0, m || (k = !1)), k ? { stream_type: 0, width: T, height: D, fps: m, start_bps: 1e3 * p.bitrateMax, min_bps: 1e3 * p.bitrateMin, target_bps: 1e3 * p.bitrateMax } : void 0; + }(s); + if (c) + return this.signal.request(mr.SET_VIDEO_PROFILE, c); + ie.debug("[".concat(this.store.clientId, "] encoder config is not complete, do not report to gateway")); + }); + } + unsubscribe(s, c) { + return ye(this, null, function* () { + try { + yield this.signal.request(mr.UNSUBSCRIBE, { p2p_id: this.store.p2pId, ortc: s, stream_id: c }, !0); + } catch (p) { + ie.warning("[".concat(this.store.clientId, "] unsubscribe warning: "), p); + } + }); + } + unsubscribeDataChannel(s, c) { + return ye(this, null, function* () { + try { + if (this.state !== "CONNECTED" && this.state !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish when connection state is ".concat(this.state)); + yield ot.all(s.map((p) => this.signal.request(mr.UNSUBSCRIBE_DATASTREAM, { stream_id: p, uid: c }, !0))); + } catch (p) { + ie.warning("unsubscribeDataChannel warning: ", p); + } + }); + } + massUnsubscribe(s) { + return ye(this, null, function* () { + try { + yield this.signal.request(mr.UNSUBSCRIBE_STREAMS, s, !0); + } catch (c) { + ie.warning("[".concat(this.store.clientId, "] massUnsubscribeAll warning: "), c); + } + }); + } + reconnectPC(s) { + return ye(this, null, function* () { + const { iceParameters: c, dtlsParameters: p, rtpCapabilities: m } = s; + return { gatewayEstablishParams: yield this.signal.request(mr.CONNECT_PC, { p2p_id: this.store.p2pId, stream_id: this.store.uid, ortc: { iceParameters: c, dtlsParameters: p, rtpCapabilities: m } }, !0), gatewayAddress: this.getCurrentGatewayAddress() }; + }); + } + getGatewayInfo() { + return this.signal.request(mr.GATEWAY_INFO); + } + renewToken(s) { + return ye(this, null, function* () { + yield this.signal.request(mr.RENEW_TOKEN, s), this.key = s.token; + }); + } + setClientRole(s, c) { + return ye(this, null, function* () { + if (c && (this._clientRoleOptions = Object.assign({}, c)), this.state !== "CONNECTED") + return void (this.role = s); + let p, m = 0; + s === "audience" ? this._clientRoleOptions && this._clientRoleOptions.delay ? (p = this._clientRoleOptions.delay, m = 1) : m = this._clientRoleOptions && this._clientRoleOptions.level ? this._clientRoleOptions.level : 2 : m = 0, yield this.signal.request(mr.SET_CLIENT_ROLE, { role: s, level: m, delay: p, client_ts: Date.now() }), this.role = s; + }); + } + setRemoteVideoStreamType(s, c) { + return ye(this, null, function* () { + yield this.signal.request(mr.SWITCH_VIDEO_STREAM, { stream_id: s, stream_type: c }); + }); + } + setDefaultRemoteVideoStreamType(s) { + return ye(this, null, function* () { + yield this.signal.request(mr.DEFAULT_VIDEO_STREAM, { stream_type: s }); + }); + } + setStreamFallbackOption(s, c) { + return ye(this, null, function* () { + yield this.signal.request(mr.SET_FALLBACK_OPTION, { stream_id: s, fallback_type: c }); + }); + } + pickSVCLayer(s, c) { + return ye(this, null, function* () { + yield this.signal.request(mr.PICK_SVC_LAYER, { stream_id: s, spatial_layer: c.spatialLayer, temporal_layer: c.temporalLayer }); + }); + } + setRTM2Flag(s) { + return ye(this, null, function* () { + yield this.signal.request(mr.SET_RTM2_FLAG, { rtm2_flag: s }); + }); + } + sendExtensionMessage(s, c, p) { + return ye(this, null, function* () { + if (this.signal instanceof bJ) + return this.signal.sendExtensionMessage(s, c, p); + }); + } + getInChannelInfo() { + return this.inChannelInfo.joinAt && (this.inChannelInfo.duration = Date.now() - this.inChannelInfo.joinAt), Fd({}, this.inChannelInfo); + } + getGatewayVersion() { + return ye(this, null, function* () { + return (yield this.signal.request(mr.GATEWAY_INFO)).version; + }); + } + reset() { + if (this.inChannelInfo.joinAt && (this.inChannelInfo.duration = Date.now() - this.inChannelInfo.joinAt, this.inChannelInfo.joinAt = null), this.trafficStatsInterval && (window.clearInterval(this.trafficStatsInterval), this.trafficStatsInterval = void 0), this.joinInfo) { + const s = h5.get(this.joinInfo.cname); + s && s.delete(this.joinInfo.uid); + } + this.joinInfo = void 0, this.key = void 0, this.networkQualityInterval && (window.clearInterval(this.networkQualityInterval), this.networkQualityInterval = void 0); + } + updateTurnConfigFromSignal() { + if (!this.joinInfo) + return; + const s = function(c) { + let p; + return p = c.startsWith("dc") ? c.match(/(dc\:\/\/)?([^:]+):(\d+)/) : c.match(/(wss\:\/\/)?([^:]+):(\d+)/), p ? { username: Gl.username, password: Gl.password, turnServerURL: p[2], tcpport: parseInt(p[3]) + 30, udpport: parseInt(p[3]) + 30, forceturn: !1 } : null; + }((this.joinInfo.cloudProxyServer === "disabled" ? this.signal.url : this.joinInfo.gatewayAddrs[this.signal.currentURLIndex].address) || ""); + this.joinInfo.turnServer.serversFromGateway = [], s && this.joinInfo.turnServer.mode !== "off" && this.joinInfo.cloudProxyServer === "disabled" && this.joinInfo.turnServer.serversFromGateway.push(Fd(Fd({}, Gl), {}, { turnServerURL: s.turnServerURL, tcpport: s.tcpport, udpport: s.udpport, username: this.joinInfo.uid.toString(), password: this.joinInfo.token })); + } + updateTrafficStats() { + return ye(this, null, function* () { + if (this.state !== "CONNECTED") + return; + const s = yield this.signal.request(mr.TRAFFIC_STATS, void 0, !0); + s.timestamp = Date.now(), s.ntp_offset != null && (this.ntpOffset = s.ntp_offset), s.peer_delay.forEach((c) => { + const p = this._statsCollector.trafficStats && this._statsCollector.trafficStats.peer_delay.find((m) => m.peer_uid === c.peer_uid); + p && p.B_st !== c.B_st && rM(() => { + this.emit(Ka.STREAM_TYPE_CHANGE, c.peer_uid, c.B_st); + }); + }), this._statsCollector.updateTrafficStats(s); + }); + } + getJoinMessage(s) { + if (!this.joinInfo || !this.key) + throw new Je(_e.UNEXPECTED_ERROR, "can not generate join message, no join info"); + const c = Object.assign({}, this.joinInfo.apResponse); + let p = Le("REPORT_APP_SCENARIO"); + if (typeof p != "string") + try { + p = JSON.stringify(p); + } catch (T) { + p = void 0; + } + p && p.length > 128 && (p = void 0); + const m = Fd({ license: this.joinInfo.license, p2p_id: this.store.p2pId, session_id: this.joinInfo.sid, app_id: this.joinInfo.appId, channel_key: this.key, channel_name: this.joinInfo.cname, sdk_version: Gh, browser: navigator.userAgent, process_id: Le("PROCESS_ID"), mode: this.store.useP2P ? "p2p" : this.spec.mode, codec: this.spec.codec, role: this.role, has_changed_gateway: this.hasChangeBGPAddress, ap_response: c, extend: Le("JOIN_EXTEND"), details: { 6: this.joinInfo.stringUid, cservice_map: this.joinInfo.cloudProxyServer === "proxy3" ? "1" : this.joinInfo.cloudProxyServer === "proxy5" ? "2" : void 0 }, features: { rejoin: !0 }, optionalInfo: this.joinInfo.optionalInfo, appScenario: p, attributes: { userAttributes: { enablePublishedUserList: Le("ENABLE_PUBLISHED_USER_LIST"), maxSubscription: Le("MAX_SUBSCRIPTION"), subscribeAudioFilterTopN: typeof Le("SUBSCRIBE_AUDIO_FILTER_TOPN") == "number" ? Le("SUBSCRIBE_AUDIO_FILTER_TOPN") : void 0, enablePublishAudioFilter: typeof Le("ENABLE_PUBLISH_AUDIO_FILTER") == "boolean" ? Le("ENABLE_PUBLISH_AUDIO_FILTER") : void 0, enableUserLicenseCheck: typeof Le("ENABLE_USER_LICENSE_CHECK") == "boolean" ? Le("ENABLE_USER_LICENSE_CHECK") : void 0, enableRTX: Le("USE_PUB_RTX") === !0 || Le("USE_SUB_RTX") === !0 || void 0, disableFEC: Le("DISABLE_FEC"), enableNTPReport: !!Le("ENABLE_NTP_REPORT") || void 0, enableInstantVideo: !!Le("ENABLE_INSTANT_VIDEO") || void 0, enableDataStream2: typeof Le("ENABLE_DATASTREAM_2") == "boolean" ? Le("ENABLE_DATASTREAM_2") : void 0, rtm2Flag: typeof this.joinInfo.rtmFlag == "number" ? this.joinInfo.rtmFlag : void 0, enableUserAutoRebalanceCheck: !!Le("ENABLE_USER_AUTO_REBALANCE_CHECK"), enableXR: typeof Le("USE_XR") == "boolean" ? Le("USE_XR") : void 0 } }, join_ts: this.joinGatewayStartTime }, s); + return this.joinInfo.stringUid && (m.string_uid = this.joinInfo.stringUid), this.joinInfo.aesmode && this.joinInfo.aespassword && (m.aes_mode = this.joinInfo.aesmode, Le("ENCRYPT_AES") ? (m.aes_secret = this.joinInfo.aespassword, m.aes_encrypt = !0) : m.aes_secret = this.joinInfo.aespassword, this.joinInfo.aessalt && (m.aes_salt = this.joinInfo.aessalt)), c.addresses[this.signal.websocket.currentURLIndex] && (m.ap_response.ticket = c.addresses[this.signal.websocket.currentURLIndex].ticket, delete c.addresses), this.joinInfo.defaultVideoStream !== void 0 && (m.default_video_stream = this.joinInfo.defaultVideoStream), m; + } + getRejoinMessage() { + if (!this.joinInfo) + throw new Je(_e.UNEXPECTED_ERROR, "can not generate rejoin message, no join info"); + return { session_id: this.joinInfo.sid, channel_name: this.joinInfo.cname, cid: this.joinInfo.cid, uid: this.joinInfo.uid, vid: Number(this.joinInfo.vid) }; + } + handleSignalEvents() { + this.signal.on(cr.WS_RECONNECT_WAITTING_FINISH, (s) => { + var c; + rr(c = ["tryNext", "recover"]).call(c, s) && this.joinInfo && vr.adjustSessionStartTime(this.joinInfo.sid); + }), this.signal.on(cr.WS_RECONNECT_CREATE_CONNECTION, (s) => { + this.joinGatewayStartTime = Date.now(); + }), this.signal.on(cr.WS_RECONNECTING, (s) => { + this.joinInfo && vr.WebSocketQuit(this.joinInfo.sid, { lts: Date.now(), succ: -1, cname: this.joinInfo.cname, uid: this.joinInfo.uid, cid: this.joinInfo.cid, errorCode: s || ys.NETWORK_ERROR }), this.joinInfo && (this.state = "RECONNECTING", vr.sessionInit(this.joinInfo.sid, { lts: (/* @__PURE__ */ new Date()).getTime(), extend: this.isSignalRecover ? { recover: !0 } : { rejoin: !0 }, cname: this.joinInfo.cname, appid: this.joinInfo.appId, mode: this.spec.mode, stringUid: this.joinInfo.stringUid, channelProfile: this.spec.mode === "live" ? 1 : 0, channelMode: 0, lsid: this.joinInfo.sid, clientRole: this.role === "audience" ? 2 : 1 }), this.isSignalRecover = !1, this.joinGatewayStartTime = Date.now()); + }), this.signal.on(cr.WS_CLOSED, (s) => { + let c; + switch (s) { + case jn.LEAVE: + c = ys.LEAVE; + break; + case jn.UID_BANNED: + case jn.IP_BANNED: + case jn.CHANNEL_BANNED: + case jn.SERVER_ERROR: + c = ys.SERVER_ERROR; + break; + case jn.FALLBACK: + c = ys.FALLBACK; + break; + case jn.LICENSE_MISSING: + case jn.LICENSE_EXPIRED: + case jn.LICENSE_MINUTES_EXCEEDED: + case jn.LICENSE_PERIOD_INVALID: + case jn.LICENSE_MULTIPLE_SDK_SERVICE: + case jn.LICENSE_ILLEGAL: + case jn.TOKEN_EXPIRE: + c = s; + break; + default: + c = ys.NETWORK_ERROR; + } + ie.debug("[".concat(this.store.clientId, "] [signal] websocket closed, reason: ").concat(c || "undefined -> " + ys.NETWORK_ERROR)), this.joinInfo && vr.WebSocketQuit(this.joinInfo.sid, { lts: Date.now(), succ: s === jn.LEAVE ? 1 : -1, cname: this.joinInfo.cname, uid: this.joinInfo.uid, cid: this.joinInfo.cid, errorCode: c }), this._disconnectedReason = s, s !== jn.FALLBACK && (this.state = "DISCONNECTED"), this.reset(); + }), this.signal.on(cr.WS_CONNECTED, () => { + if (this.updateTurnConfigFromSignal(), this.state = "CONNECTED", this.joinInfo && (this.role === "audience" && this._clientRoleOptions && (this._clientRoleOptions.level || this._clientRoleOptions.delay) && (ie.debug("[".concat(this.store.clientId, "] patch to send set client role, role: ").concat(this.role, ", mode: ").concat(this.spec.mode, ", level: ").concat(this._clientRoleOptions.level, ", delay: ").concat(this._clientRoleOptions.delay)), this.setClientRole(this.role, this._clientRoleOptions)), vr.joinGateway(this.joinInfo.sid, { lts: this.joinGatewayStartTime, succ: !0, ec: null, vid: this.joinInfo.vid, addr: this.signal.url, uid: this.joinInfo.uid, cid: this.joinInfo.cid, firstSuccess: this._isProactiveJoin, avoidJoinStartTime: this.store.avoidJoinStart, isProxy: !!this.joinInfo.proxyServer, signalChannel: this.signal instanceof om ? "1" : "0" }), this._isProactiveJoin = !1, this.joinInfo.useLocalAccessPoint && this.joinInfo.setLocalAPVersion === 1)) { + const s = this.signal.url && this.signal.url.match(/wss\:\/\/([^:]+):(\d+)/); + if (!s) + return void ie.error("[".concat(this.store.clientId, "] set local access point after joined failed: ").concat(s)); + Gi("EVENT_REPORT_DOMAIN", s[1]), Gi("EVENT_REPORT_BACKUP_DOMAIN", s[1]), Gi("LOG_UPLOAD_SERVER", "".concat(s[1], ":6444")); + } + }), this.signal.on(Zr.ON_UPLINK_STATS, (s) => { + this._statsCollector.updateUplinkStats(s); + }), this.signal.on(cr.REQUEST_RECOVER, (s, c, p) => { + if (!this.joinInfo) + return p(new Je(_e.UNEXPECTED_ERROR, "gateway: can not recover, no join info")); + s && (this.joinInfo.multiIP = s, this.hasChangeBGPAddress = !0), this.isSignalRecover = !0, Ro(this, Ka.REQUEST_NEW_GATEWAY_LIST).then(c).catch(p); + }), this.signal.on(cr.REQUEST_JOIN_INFO, (s) => ye(this, null, function* () { + var c; + if (this.updateTurnConfigFromSignal(), this.store.useP2P) + return void s(this.getJoinMessage({ ortc: {} })); + const { iceParameters: p, dtlsParameters: m, rtpCapabilities: T } = yield Ro(this, Ka.REQUEST_P2P_CONNECTION_PARAMS, { turnServer: (c = this.joinInfo) === null || c === void 0 ? void 0 : c.turnServer }); + s(this.getJoinMessage({ ortc: { iceParameters: p, dtlsParameters: m, rtpCapabilities: T, version: "2" } })); + })), this.signal.on(cr.REQUEST_REJOIN_INFO, (s) => { + s(this.getRejoinMessage()); + }), this.signal.on(cr.REPORT_JOIN_GATEWAY, (s, c) => { + this.joinInfo && (vr.joinGateway(this.joinInfo.sid, { lts: this.joinGatewayStartTime, succ: !1, ec: s, addr: c, uid: this.joinInfo.uid, cid: this.joinInfo.cid, firstSuccess: this._isProactiveJoin, avoidJoinStartTime: this.store.avoidJoinStart, isProxy: !!this.joinInfo.proxyServer, signalChannel: this.signal instanceof om ? "1" : "0" }), this._isProactiveJoin = !1); + }), this.signal.on(cr.IS_P2P_DISCONNECTED, (s) => { + s(SS(this, Ka.IS_P2P_DISCONNECTED)); + }), this.signal.on(cr.DISCONNECT_P2P, () => { + this.emit(Ka.DISCONNECT_P2P); + }), this.signal.on(cr.NEED_RENEW_SESSION, () => { + this.emit(Ka.NEED_RENEW_SESSION); + }), this.signal.on(cr.REQUEST_SUCCESS, () => { + this._signalTimeout = !1; + }), this.signal.on(cr.REQUEST_TIMEOUT, () => { + this._signalTimeout = !0; + }), this.signal.on(cr.JOIN_RESPONSE, (s) => { + const c = this.getCurrentGatewayAddress(); + this.emit(Ka.JOIN_RESPONSE, s, c); + }), this.signal.on(cr.DATACHANNEL_PRECONNECT, (s, c, p) => ye(this, null, function* () { + this.updateTurnConfigFromSignal(); + const m = this.getCurrentGatewayAddress(); + return Ro(this, Ka.DATACHANNEL_PRECONNECT, s, m).then(c).catch(p); + })), this.signal.on(cr.DATACHANNEL_CONNECTING, (s) => ye(this, null, function* () { + const { iceParameters: c, dtlsParameters: p, rtpCapabilities: m } = yield Ro(this, Ka.REQUEST_DC_CONNECTION_PARAMS); + s(this.getJoinMessage({ ortc: { iceParameters: c, dtlsParameters: p, rtpCapabilities: m, version: "2" } })); + })), this.signal.on(cr.DATACHANNEL_FAILBACK, () => { + ie.warning("[".concat(this.store.clientId, "] User join datachannel failed")), this.reset(), this.resetSignal(), this.emit(Ka.DATACHANNEL_FAILBACK); + }); + } + tryUnsubBeforeResub(s, c) { + return ye(this, null, function* () { + try { + yield this.signal.request(mr.UNSUBSCRIBE, { p2p_id: this.store.p2pId, stream_id: s, ortc: [c] }, !0); + } catch (p) { + throw ie.warning("[".concat(this.store.clientId, "] tryUnsubBeforeResub warning"), p), p; + } + }); + } + tryUnsubDataChannelBeforeResub(s, c) { + return ye(this, null, function* () { + try { + yield this.signal.request(mr.UNSUBSCRIBE, { stream_id: c.id }, !0); + } catch (p) { + throw ie.warning("unsubscribe datachannel warning", p), p; + } + }); + } + tryUnpubBeforeRepub(s, c) { + return ye(this, null, function* () { + try { + yield this.signal.request(mr.UNPUBLISH, { stream_id: s, ortc: c }, !0); + } catch (p) { + throw ie.warning("[".concat(this.store.clientId, "] tryUnpubBeforeRepub warning: "), p), p; + } + }); + } + tryUnpubDataChannelBeforeRepub(s, c) { + return ye(this, null, function* () { + try { + yield this.signal.request(mr.UNPUBLISH_DATASTREAM, { channnel_id: c.channelId }, !0); + } catch (p) { + throw ie.warning("unpublish datastream warning: ", p), p; + } + }); + } + tryMassUnsubBeforeResub(s) { + return ye(this, null, function* () { + const c = { users: s.map((p) => ({ stream_id: p.stream_id, stream_type: p.stream_type })) }; + try { + yield this.signal.request(mr.UNSUBSCRIBE_STREAMS, c, !0); + } catch (p) { + throw ie.warning("[".concat(this.store.clientId, "] tryMassUnsubBeforeResub warning"), p), p; + } + }); + } + muteLocal(s, c) { + return ye(this, null, function* () { + const p = { action: s.find((m) => m.stream_type === Ci.Audio) ? "mute_local_audio" : "mute_local_video", p2p_id: this.store.p2pId, ortc: s, stream_id: c }; + try { + yield this.signal.request(mr.CONTROL, p, !0, !0); + } catch (m) { + throw ie.warning("[".concat(this.store.clientId, "] gateway muteLocal warning: "), m), m; + } + }); + } + unmuteLocal(s, c) { + return ye(this, null, function* () { + const p = { action: s.find((m) => m.stream_type === Ci.Audio) ? "unmute_local_audio" : "unmute_local_video", p2p_id: this.store.p2pId, ortc: s, stream_id: c }; + try { + yield this.signal.request(mr.CONTROL, p, !0, !0); + } catch (m) { + throw ie.warning("[".concat(this.store.clientId, "] gateway unmuteLocal warning: "), m), m; + } + }); + } + muteRemote(s, c) { + return ye(this, null, function* () { + const p = { action: s === pr.AUDIO ? "mute_remote_audio" : "mute_remote_video", p2p_id: this.store.p2pId, stream_id: c }; + try { + yield this.signal.request(mr.CONTROL, p, !0, !0); + } catch (m) { + throw ie.warning("[".concat(this.store.clientId, "] gateway muteRemote warning: "), m), m; + } + }); + } + unmuteRemote(s, c) { + return ye(this, null, function* () { + const p = { action: s === pr.AUDIO ? "unmute_remote_audio" : "unmute_remote_video", p2p_id: this.store.p2pId, stream_id: c }; + try { + yield this.signal.request(mr.CONTROL, p, !0, !0); + } catch (m) { + throw ie.warning("[".concat(this.store.clientId, "] gateway unmuteRemote warning: "), m), m; + } + }); + } + uploadWRTCStats(s) { + this.signal.uploadWRTCStats(s); + } + upload(s, c) { + this.signal.upload(s, c); + } + getSignalRTT() { + return this.signal.rtt; + } + restartICE(s) { + return ye(this, null, function* () { + const c = { p2p_id: this.store.p2pId, stream_id: this.store.uid, ortc: s }; + try { + return yield this.signal.request(mr.RESTART_ICE, c, !0); + } catch (p) { + throw ie.warning("[".concat(this.store.clientId, "] P2PChannel.restartICE warning: "), p), p; + } + }); + } + reconnect() { + this.state === "CONNECTED" && this.signal.reconnect(void 0, ys.P2P_FAILED); + } + getCurrentGatewayAddress() { + var s; + if (!Le("GATEWAY_WSS_ADDRESS")) + return (s = this.joinInfo) !== null && s !== void 0 && s.gatewayAddrs ? this.joinInfo.gatewayAddrs[this.signal.currentURLIndex] : void 0; + } + setPublishAudioFilterEnabled(s) { + return ye(this, null, function* () { + yield this.signal.request(mr.SET_PARAMETER, { enablePublishAudioFilter: s }); + }); + } + resetSignal() { + this.signal && (this.signal.removeAllListeners(), this.signal.close(jn.FALLBACK)), this.store.useDataChannel = !1, this.signal = new hJ(Fd(Fd({}, this.spec), {}, { retryConfig: this.spec.websocketRetryConfig }), this.store), this.handleSignalEvents(), this.emit(Ka.RESET_SIGNAL, _M.websocket); + } + } + let TM = 0, d5 = 0; + function sm(h, s, c, p) { + return new ot((m, T) => { + s.timeout = s.timeout || Le("HTTP_CONNECT_TIMEOUT"), s.responseType = s.responseType || "json", s.data && !c ? (s.data = JSON.stringify(s.data), TM += mg(s.data)) : c && (s.data.size ? TM += s.data.size : s.data instanceof FormData ? TM += eq(s.data) : TM += mg(JSON.stringify(s.data))), s.headers = s.headers || {}, s.headers["Content-Type"] = s.headers["Content-Type"] || "application/json", s.method = "POST", s.url = h, Pc.request(s).then((D) => { + typeof D.data == "string" ? d5 += mg(D.data) : D.data instanceof ArrayBuffer || D.data instanceof Uint8Array ? d5 += D.data.byteLength : d5 += mg(JSON.stringify(D.data)), p && m({ data: D.data, headers: D.headers }), m(D.data); + }).catch((D) => { + Pc.isCancel(D) ? T(new Je(_e.OPERATION_ABORTED, "cancel token canceled")) : D.code === "ECONNABORTED" ? T(new Je(_e.NETWORK_TIMEOUT, D.message)) : D.response ? T(new Je(_e.NETWORK_RESPONSE_ERROR, D.response.status)) : T(new Je(_e.NETWORK_ERROR, D.message)); + }); + }); + } + /*! formdata-polyfill. MIT License. Jimmy W?rting */ + (function() { + var h; + function s(xt) { + var zt = 0; + return function() { + return zt < xt.length ? { done: !1, value: xt[zt++] } : { done: !0 }; + }; + } + var c = typeof Object.defineProperties == "function" ? Object.defineProperty : function(xt, zt, gr) { + return xt == Array.prototype || xt == Object.prototype || (xt[zt] = gr.value), xt; + }, p, m = function(xt) { + xt = [typeof globalThis == "object" && globalThis, xt, typeof window == "object" && window, typeof self == "object" && self, typeof n == "object" && n]; + for (var zt = 0; zt < xt.length; ++zt) { + var gr = xt[zt]; + if (gr && gr.Math == Math) + return gr; + } + throw Error("Cannot find global object"); + }(this); + function T(xt, zt) { + if (zt) + e: { + var gr = m; + xt = xt.split("."); + for (var qr = 0; qr < xt.length - 1; qr++) { + var Si = xt[qr]; + if (!(Si in gr)) + break e; + gr = gr[Si]; + } + (zt = zt(qr = gr[xt = xt[xt.length - 1]])) != qr && zt != null && c(gr, xt, { configurable: !0, writable: !0, value: zt }); + } + } + function D(xt) { + return (xt = { next: xt })[Symbol.iterator] = function() { + return this; + }, xt; + } + function k(xt) { + var zt = typeof Symbol != "undefined" && Symbol.iterator && xt[Symbol.iterator]; + return zt ? zt.call(xt) : { next: s(xt) }; + } + if (T("Symbol", function(xt) { + function zt(Si, Qt) { + this.A = Si, c(this, "description", { configurable: !0, writable: !0, value: Qt }); + } + if (xt) + return xt; + zt.prototype.toString = function() { + return this.A; + }; + var gr = "jscomp_symbol_" + (1e9 * Math.random() >>> 0) + "_", qr = 0; + return function Si(Qt) { + if (this instanceof Si) + throw new TypeError("Symbol is not a constructor"); + return new zt(gr + (Qt || "") + "_" + qr++, Qt); + }; + }), T("Symbol.iterator", function(xt) { + if (xt) + return xt; + xt = Symbol("Symbol.iterator"); + for (var zt = "Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "), gr = 0; gr < zt.length; gr++) { + var qr = m[zt[gr]]; + typeof qr == "function" && typeof qr.prototype[xt] != "function" && c(qr.prototype, xt, { configurable: !0, writable: !0, value: function() { + return D(s(this)); + } }); + } + return xt; + }), typeof Object.setPrototypeOf == "function") + p = Object.setPrototypeOf; + else { + var N; + e: { + var U = {}; + try { + U.__proto__ = { a: !0 }, N = U.a; + break e; + } catch (xt) { + } + N = !1; + } + p = N ? function(xt, zt) { + if (xt.__proto__ = zt, xt.__proto__ !== zt) + throw new TypeError(xt + " is not extensible"); + return xt; + } : null; + } + var V = p; + function G() { + this.m = !1, this.j = null, this.v = void 0, this.h = 1, this.u = this.C = 0, this.l = null; + } + function K(xt) { + if (xt.m) + throw new TypeError("Generator is already running"); + xt.m = !0; + } + function q(xt, zt) { + return xt.h = 3, { value: zt }; + } + function ue(xt) { + this.g = new G(), this.G = xt; + } + function oe(xt, zt, gr, qr) { + try { + var Si = zt.call(xt.g.j, gr); + if (!(Si instanceof Object)) + throw new TypeError("Iterator result " + Si + " is not an object"); + if (!Si.done) + return xt.g.m = !1, Si; + var Qt = Si.value; + } catch (se) { + return xt.g.j = null, xt.g.s(se), he(xt); + } + return xt.g.j = null, qr.call(xt.g, Qt), he(xt); + } + function he(xt) { + for (; xt.g.h; ) + try { + var zt = xt.G(xt.g); + if (zt) + return xt.g.m = !1, { value: zt.value, done: !1 }; + } catch (gr) { + xt.g.v = void 0, xt.g.s(gr); + } + if (xt.g.m = !1, xt.g.l) { + if (zt = xt.g.l, xt.g.l = null, zt.F) + throw zt.D; + return { value: zt.return, done: !0 }; + } + return { value: void 0, done: !0 }; + } + function Ce(xt) { + this.next = function(zt) { + return xt.o(zt); + }, this.throw = function(zt) { + return xt.s(zt); + }, this.return = function(zt) { + return function(gr, qr) { + K(gr.g); + var Si = gr.g.j; + return Si ? oe(gr, "return" in Si ? Si.return : function(Qt) { + return { value: Qt, done: !0 }; + }, qr, gr.g.return) : (gr.g.return(qr), he(gr)); + }(xt, zt); + }, this[Symbol.iterator] = function() { + return this; + }; + } + function ke(xt, zt) { + return zt = new Ce(new ue(zt)), V && xt.prototype && V(zt, xt.prototype), zt; + } + if (G.prototype.o = function(xt) { + this.v = xt; + }, G.prototype.s = function(xt) { + this.l = { D: xt, F: !0 }, this.h = this.C || this.u; + }, G.prototype.return = function(xt) { + this.l = { return: xt }, this.h = this.u; + }, ue.prototype.o = function(xt) { + return K(this.g), this.g.j ? oe(this, this.g.j.next, xt, this.g.o) : (this.g.o(xt), he(this)); + }, ue.prototype.s = function(xt) { + return K(this.g), this.g.j ? oe(this, this.g.j.throw, xt, this.g.o) : (this.g.s(xt), he(this)); + }, T("Array.prototype.entries", function(xt) { + return xt || function() { + return function(zt, gr) { + zt instanceof String && (zt += ""); + var qr = 0, Si = !1, Qt = { next: function() { + if (!Si && qr < zt.length) { + var se = qr++; + return { value: gr(se, zt[se]), done: !1 }; + } + return Si = !0, { done: !0, value: void 0 }; + } }; + return Qt[Symbol.iterator] = function() { + return Qt; + }, Qt; + }(this, function(zt, gr) { + return [zt, gr]; + }); + }; + }), typeof Blob != "undefined" && (typeof FormData == "undefined" || !FormData.prototype.keys)) { + var Ge = function(xt, zt) { + for (var gr = 0; gr < xt.length; gr++) + zt(xt[gr]); + }, tt = function(xt) { + return xt.replace(/\r?\n|\r/g, `\r +`); + }, Ye = function(xt, zt, gr) { + return zt instanceof Blob ? (gr = gr !== void 0 ? gr + "" : typeof zt.name == "string" ? zt.name : "blob", zt.name === gr && Object.prototype.toString.call(zt) !== "[object Blob]" || (zt = new File([zt], gr)), [String(xt), zt]) : [String(xt), String(zt)]; + }, et = function(xt, zt) { + if (xt.length < zt) + throw new TypeError(zt + " argument required, but only " + xt.length + " present."); + }, ht = typeof globalThis == "object" ? globalThis : typeof window == "object" ? window : typeof self == "object" ? self : this, st = ht.FormData, Ut = ht.XMLHttpRequest && ht.XMLHttpRequest.prototype.send, Vt = ht.Request && ht.fetch, fn = ht.navigator && ht.navigator.sendBeacon, Nn = ht.Element && ht.Element.prototype, ha = ht.Symbol && Symbol.toStringTag; + ha && (Blob.prototype[ha] || (Blob.prototype[ha] = "Blob"), "File" in ht && !File.prototype[ha] && (File.prototype[ha] = "File")); + try { + new File([], ""); + } catch (xt) { + ht.File = function(zt, gr, qr) { + return zt = new Blob(zt, qr || {}), Object.defineProperties(zt, { name: { value: gr }, lastModified: { value: +(qr && qr.lastModified !== void 0 ? new Date(qr.lastModified) : /* @__PURE__ */ new Date()) }, toString: { value: function() { + return "[object File]"; + } } }), ha && Object.defineProperty(zt, ha, { value: "File" }), zt; + }; + } + var jo = function(xt) { + return xt.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + }, Sa = function(xt) { + this.i = []; + var zt = this; + xt && Ge(xt.elements, function(gr) { + if (gr.name && !gr.disabled && gr.type !== "submit" && gr.type !== "button" && !gr.matches("form fieldset[disabled] *")) + if (gr.type === "file") { + var qr = gr.files && gr.files.length ? gr.files : [new File([], "", { type: "application/octet-stream" })]; + Ge(qr, function(Si) { + zt.append(gr.name, Si); + }); + } else + gr.type === "select-multiple" || gr.type === "select-one" ? Ge(gr.options, function(Si) { + !Si.disabled && Si.selected && zt.append(gr.name, Si.value); + }) : gr.type === "checkbox" || gr.type === "radio" ? gr.checked && zt.append(gr.name, gr.value) : (qr = gr.type === "textarea" ? tt(gr.value) : gr.value, zt.append(gr.name, qr)); + }); + }; + if ((h = Sa.prototype).append = function(xt, zt, gr) { + et(arguments, 2), this.i.push(Ye(xt, zt, gr)); + }, h.delete = function(xt) { + et(arguments, 1); + var zt = []; + xt = String(xt), Ge(this.i, function(gr) { + gr[0] !== xt && zt.push(gr); + }), this.i = zt; + }, h.entries = function xt() { + var zt, gr = this; + return ke(xt, function(qr) { + if (qr.h == 1 && (zt = 0), qr.h != 3) + return zt < gr.i.length ? qr = q(qr, gr.i[zt]) : (qr.h = 0, qr = void 0), qr; + zt++, qr.h = 2; + }); + }, h.forEach = function(xt, zt) { + et(arguments, 1); + for (var gr = k(this), qr = gr.next(); !qr.done; qr = gr.next()) { + var Si = k(qr.value); + qr = Si.next().value, Si = Si.next().value, xt.call(zt, Si, qr, this); + } + }, h.get = function(xt) { + et(arguments, 1); + var zt = this.i; + xt = String(xt); + for (var gr = 0; gr < zt.length; gr++) + if (zt[gr][0] === xt) + return zt[gr][1]; + return null; + }, h.getAll = function(xt) { + et(arguments, 1); + var zt = []; + return xt = String(xt), Ge(this.i, function(gr) { + gr[0] === xt && zt.push(gr[1]); + }), zt; + }, h.has = function(xt) { + et(arguments, 1), xt = String(xt); + for (var zt = 0; zt < this.i.length; zt++) + if (this.i[zt][0] === xt) + return !0; + return !1; + }, h.keys = function xt() { + var zt, gr, qr, Si, Qt = this; + return ke(xt, function(se) { + if (se.h == 1 && (zt = k(Qt), gr = zt.next()), se.h != 3) + return gr.done ? void (se.h = 0) : (qr = gr.value, Si = k(qr), q(se, Si.next().value)); + gr = zt.next(), se.h = 2; + }); + }, h.set = function(xt, zt, gr) { + et(arguments, 2), xt = String(xt); + var qr = [], Si = Ye(xt, zt, gr), Qt = !0; + Ge(this.i, function(se) { + se[0] === xt ? Qt && (Qt = !qr.push(Si)) : qr.push(se); + }), Qt && qr.push(Si), this.i = qr; + }, h.values = function xt() { + var zt, gr, qr, Si, Qt = this; + return ke(xt, function(se) { + if (se.h == 1 && (zt = k(Qt), gr = zt.next()), se.h != 3) + return gr.done ? void (se.h = 0) : (qr = gr.value, (Si = k(qr)).next(), q(se, Si.next().value)); + gr = zt.next(), se.h = 2; + }); + }, Sa.prototype._asNative = function() { + for (var xt = new st(), zt = k(this), gr = zt.next(); !gr.done; gr = zt.next()) { + var qr = k(gr.value); + gr = qr.next().value, qr = qr.next().value, xt.append(gr, qr); + } + return xt; + }, Sa.prototype._blob = function() { + var xt = "----formdata-polyfill-" + Math.random(), zt = [], gr = "--" + xt + `\r +Content-Disposition: form-data; name="`; + return this.forEach(function(qr, Si) { + return typeof qr == "string" ? zt.push(gr + jo(tt(Si)) + `"\r +\r +` + tt(qr) + `\r +`) : zt.push(gr + jo(tt(Si)) + '"; filename="' + jo(qr.name) + `"\r +Content-Type: ` + (qr.type || "application/octet-stream") + `\r +\r +`, qr, `\r +`); + }), zt.push("--" + xt + "--"), new Blob(zt, { type: "multipart/form-data; boundary=" + xt }); + }, Sa.prototype[Symbol.iterator] = function() { + return this.entries(); + }, Sa.prototype.toString = function() { + return "[object FormData]"; + }, Nn && !Nn.matches && (Nn.matches = Nn.matchesSelector || Nn.mozMatchesSelector || Nn.msMatchesSelector || Nn.oMatchesSelector || Nn.webkitMatchesSelector || function(xt) { + for (var zt = (xt = (this.document || this.ownerDocument).querySelectorAll(xt)).length; 0 <= --zt && xt.item(zt) !== this; ) + ; + return -1 < zt; + }), ha && (Sa.prototype[ha] = "FormData"), Ut) { + var Su = ht.XMLHttpRequest.prototype.setRequestHeader; + ht.XMLHttpRequest.prototype.setRequestHeader = function(xt, zt) { + Su.call(this, xt, zt), xt.toLowerCase() === "content-type" && (this.B = !0); + }, ht.XMLHttpRequest.prototype.send = function(xt) { + xt instanceof Sa ? (xt = xt._blob(), this.B || this.setRequestHeader("Content-Type", xt.type), Ut.call(this, xt)) : Ut.call(this, xt); + }; + } + Vt && (ht.fetch = function(xt, zt) { + return zt && zt.body && zt.body instanceof Sa && (zt.body = zt.body._blob()), Vt.call(this, xt, zt); + }), fn && (ht.navigator.sendBeacon = function(xt, zt) { + return zt instanceof Sa && (zt = zt._asNative()), fn.call(this, xt, zt); + }), ht.FormData = Sa; + } + })(); + const wM = () => { + const h = Le("AREAS"); + return h.length === 0 && h.push(vi.GLOBAL), rm(h).call(h, (s, c, p) => { + const m = CJ(c); + return m ? p === 0 ? m : "".concat(s, ",").concat(m) : s; + }, ""); + }, CJ = (h) => h === vi.OVERSEA ? "".concat(Ps.ASIA, ",").concat(Ps.EUROPE, ",").concat(Ps.AFRICA, ",").concat(Ps.NORTH_AMERICA, ",").concat(Ps.SOUTH_AMERICA, ",").concat(Ps.OCEANIA) : Ps[h], eNe = (h) => { + const s = { CODE: "", WEBCS_DOMAIN: [], WEBCS_DOMAIN_BACKUP_LIST: [], PROXY_CS: [], CDS_AP: [], ACCOUNT_REGISTER: [], UAP_AP: [], EVENT_REPORT_DOMAIN: [], EVENT_REPORT_BACKUP_DOMAIN: [], LOG_UPLOAD_SERVER: [], PROXY_SERVER_TYPE3: [] }; + return h.map((c) => { + const p = SM[c], m = Object.keys(p); + m && m.map((T) => { + T !== "CODE" && (s[T] = s[T].concat(p[T])); + }); + }), s; + }, IM = { GLOBAL: { ASIA: [vi.CHINA, vi.JAPAN, vi.INDIA, vi.KOREA, vi.HKMC], EUROPE: [], NORTH_AMERICA: [vi.US], SOUTH_AMERICA: [], OCEANIA: [], AFRICA: [] } }, xM = Object.keys(IM[vi.GLOBAL]), f5 = [vi.CHINA, vi.NORTH_AMERICA, vi.EUROPE, vi.ASIA, vi.JAPAN, vi.INDIA, vi.OCEANIA, vi.SOUTH_AMERICA, vi.AFRICA, vi.KOREA, vi.HKMC, vi.US], tNe = function(h, s) { + let c = []; + if (rr(h).call(h, vi.GLOBAL)) { + const T = [vi.GLOBAL, vi.OVERSEA], D = Object.keys(SM); + if (s === vi.GLOBAL) + throw new Je(_e.INVALID_PARAMS, "GLOBAL is an invalid excludedArea value"); + if (s === vi.CHINA) + c = [vi.OVERSEA]; + else if (m = s, rr(xM).call(xM, m)) { + const k = (p = s, IM[vi.GLOBAL][p] || []), N = [...T, s, ...k]; + c = D.filter((U) => !rr(N).call(N, U)); + } else if (function(k) { + let N = !1; + return xM.forEach((U) => { + var V; + rr(V = IM[vi.GLOBAL][U]).call(V, k) && (N = !0); + }), N; + }(s)) { + const k = function(U) { + let V; + return xM.forEach((G) => { + var K; + rr(K = IM[vi.GLOBAL][G]).call(K, U) && (V = G); + }), V; + }(s), N = [...T, k, s]; + c = D.filter((U) => !rr(N).call(N, U)); + } else + c = h; + c = function(k) { + const N = []; + return f5.forEach((U) => { + rr(k).call(k, U) && N.push(U); + }), N.concat(k.filter((U) => !rr(f5).call(f5, U))); + }(c); + } else + c = h; + var p, m; + return c; + }; + function TJ(h) { + var s, c; + if (!h && rr(s = Le("AREAS")).call(s, vi.EXTENSIONS)) + return ie.debug("update area from ap : reset"), void p5(bPe, !0); + if (!rr(c = Le("AREAS")).call(c, vi.GLOBAL) || !h) + return; + let p = SM.EXTENSIONS; + p && (p = { CODE: CJ(vi.EXTENSIONS), WEBCS_DOMAIN: ["ap-web-1-".concat(h, ".agora.io")], WEBCS_DOMAIN_BACKUP_LIST: ["ap-web-2-".concat(h, ".ap.sd-rtn.com")], PROXY_CS: ["proxy-ap-web-".concat(h, ".agora.io")], CDS_AP: ["cds-ap-web-1-".concat(h, ".agora.io"), "cds-ap-web-2-".concat(h, ".ap.sd-rtn.com")], ACCOUNT_REGISTER: ["sua-ap-web-1-".concat(h, ".agora.io"), "sua-ap-web-2-".concat(h, ".ap.sd-rtn.com")], UAP_AP: ["uap-ap-web-1-".concat(h, ".agora.io"), "uap-ap-web-2-".concat(h, ".ap.sd-rtn.com")], EVENT_REPORT_DOMAIN: ["statscollector-1-".concat(h, ".agora.io")], EVENT_REPORT_BACKUP_DOMAIN: ["statscollector-2-".concat(h, ".agora.io")], LOG_UPLOAD_SERVER: ["logservice-".concat(h, ".agora.io")], PROXY_SERVER_TYPE3: ["webrtc-cloud-proxy-".concat(h, ".agora.io")] }, ie.debug("update area from ap success: ".concat(h, ",config is "), p), Gi("AREAS", [vi.EXTENSIONS], !0), Object.keys(p).map((m) => { + m === "LOG_UPLOAD_SERVER" || m === "EVENT_REPORT_DOMAIN" || m === "EVENT_REPORT_BACKUP_DOMAIN" || m === "PROXY_SERVER_TYPE3" ? Gi(m, p[m][0]) : Gi(m, p[m]); + })); + } + function p5(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 && arguments[1]; + const c = vr.reportApiInvoke(null, { name: Ao.SET_AREA, options: h, tag: Na.TRACER }); + try { + let p = []; + if (typeof h == "string" && (p = [h]), Array.isArray(h) && (h.forEach((T) => { + if (!rr(eJ).call(eJ, T)) + throw new Je(_e.INVALID_PARAMS, "invalid area code"); + }), p = h), Object.prototype.toString.call(h) === "[object Object]") { + const { areaCode: T, excludedArea: D } = h; + if (!T) + throw new Je(_e.INVALID_PARAMS, "area code is needed"); + let k = T; + typeof T == "string" && (k = [T]), p = D ? tNe(k, D) : k; + } + if (!s) { + if (Jy.AREAS) { + const T = new Je(_e.PROHIBITED_OPERATION, "setArea is prohibited because of config-distribute"); + return c.onError(T), void ie.warning("setArea is prohibited because of config-distribute"); + } + if (rr(p).call(p, vi.GLOBAL) && Le("AREAS") === vi.EXTENSIONS) { + const T = new Je(_e.PROHIBITED_OPERATION, "setArea is prohibited because of ap extensions"); + return c.onError(T), void ie.warning("setArea is prohibited because of ap extensions"); + } + } + Gi("AREAS", p, s); + const m = eNe(p); + Object.keys(m).map((T) => { + T === "LOG_UPLOAD_SERVER" || T === "EVENT_REPORT_DOMAIN" || T === "EVENT_REPORT_BACKUP_DOMAIN" || T === "PROXY_SERVER_TYPE3" ? Gi(T, m[T][0]) : Gi(T, m[T]); + }), ie.debug("set area success:", p.join(",")); + } catch (p) { + throw c.onError(p), p; + } + c.onSuccess(); + } + function wJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function g5(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? wJ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : wJ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + let v5 = 1; + function rNe(h, s, c, p, m) { + v5 += 1; + const T = { sid: c.sid, command: "convergeAllocateEdge", uid: "666", appId: c.appId, ts: Math.floor(Date.now() / 1e3), seq: v5, requestId: v5, version: Gh, cname: c.cname }, D = { service_name: s, json_body: JSON.stringify(T) }; + let k, N, U = h[0]; + return np(() => ye(this, null, function* () { + k = Date.now(); + const V = yield sm(U, { data: D, cancelToken: p, headers: { "X-Packet-Service-Type": "0", "X-Packet-URI": "61" } }); + if (N = Date.now() - k, V.code !== 0) { + const q = new Je(_e.UNEXPECTED_RESPONSE, "live streaming ap error, code" + V.code, { retry: !0, responseTime: N }); + throw ie.error(q.toString()), q; + } + const G = JSON.parse(V.json_body); + if (G.code !== 200) { + const q = new Je(_e.UNEXPECTED_RESPONSE, "live streaming app center error, code: ".concat(G.code, ", reason: ").concat(G.reason), { code: G.code, responseTime: N }); + throw ie.error(q.toString()), q; + } + if (!G.servers || G.servers.length === 0) { + const q = new Je(_e.UNEXPECTED_RESPONSE, "live streaming app center empty server", { code: G.code, responseTime: N }); + throw ie.error(q.toString()), q; + } + const K = function(q, ue) { + return { addressList: q.servers.map((oe) => "wss://".concat(oe.address.replace(/\./g, "-"), ".").concat(Le("WORKER_DOMAIN"), ":").concat(oe.wss, "?serviceName=").concat(encodeURIComponent(ue))), workerToken: q.workerToken, vid: q.vid }; + }(G, s); + return Le("LIVE_STREAMING_ADDRESS") && (K.addressList = Le("LIVE_STREAMING_ADDRESS") instanceof Array ? Le("LIVE_STREAMING_ADDRESS") : [Le("LIVE_STREAMING_ADDRESS")]), g5(g5({}, K), {}, { responseTime: N }); + }), (V, G) => (vr.apworkerEvent(c.sid, { success: !0, sc: 200, serviceName: s, responseDetail: JSON.stringify(V.addressList), firstSuccess: G === 0, responseTime: N, serverIp: h[G % h.length] }), !1), (V, G) => (vr.apworkerEvent(c.sid, { success: !1, sc: V.data && V.data.code || 200, serviceName: s, responseTime: N, serverIp: h[G % h.length] }), !!(V.code !== _e.OPERATION_ABORTED && V.code !== _e.UNEXPECTED_RESPONSE || V.data && V.data.retry) && (U = h[(G + 1) % h.length], !0)), m); + } + let m5 = 1; + function IJ(h, s, c, p) { + let { url: m, areaCode: T } = h; + const D = Date.now(); + let k; + const [N, U] = DJ(s, T, [bs.CHOOSE_SERVER]); + let V = Do.networkState; + return np(() => ye(this, null, function* () { + V && Do.networkState === Dl.OFFLINE && Do.onlineWaiter && (yield ot.race([Do.onlineWaiter, _s(p && p.maxRetryTimeout || Oo.maxRetryTimeout)])), V = Do.networkState; + const { data: G, headers: K } = yield sm(m, { data: N, cancelToken: c, headers: { "Content-Type": "multipart/form-data;" } }, !0, !0); + k = K.http3 === "1" ? 1 : -1, vr.reportResourceTiming(m, s.sid), AJ(G, m, s, D, [bs.CHOOSE_SERVER], k); + const q = c5(G, bs.CHOOSE_SERVER); + return RJ(q), vJ(q, m); + }), (G) => (G && vr.joinChooseServer(s.sid, { lts: D, succ: !0, csAddr: m, opid: U, serverList: G.gatewayAddrs.map((K) => K.address), ec: null, cid: G.cid.toString(), uid: G.uid.toString(), csIp: G.csIp, unilbsServerIds: [bs.CHOOSE_SERVER].toString(), isHttp3: k }), !1), (G) => G.code !== _e.OPERATION_ABORTED && (G.code === _e.CAN_NOT_GET_GATEWAY_SERVER ? G.data.retry : (vr.joinChooseServer(s.sid, { lts: D, succ: !1, csAddr: m, serverList: null, opid: U, ec: G.code, csIp: G.data && G.data.csIp, unilbsServerIds: [bs.CHOOSE_SERVER].toString(), extend: JSON.stringify({ networkState: V }), isHttp3: k }), ie.warning("[".concat(s.clientId, "] Choose server network error, retry"), G), !0)), p); + } + function xJ(h, s, c, p) { + let m, { url: T, areaCode: D, serviceIds: k } = h; + const N = Date.now(), [U, V] = DJ(s, D, k); + let G; + return np(() => ye(this, null, function* () { + G && Do.networkState === Dl.OFFLINE && Do.onlineWaiter && (yield ot.race([Do.onlineWaiter, _s(p && p.maxRetryTimeout || Oo.maxRetryTimeout)])), G = Do.networkState; + const { data: K, headers: q } = yield sm(T, { data: U, cancelToken: c, headers: { "Content-Type": "multipart/form-data;" } }, !0, !0); + m = q.http3 === "1" ? 1 : -1, vr.reportResourceTiming(T, s.sid), AJ(K, T, s, N, k, m); + const ue = c5(K, bs.CHOOSE_SERVER), oe = c5(K, s.cloudProxyServer === "proxy5" ? bs.CLOUD_PROXY_5 : s.cloudProxyServer === "proxy3" || s.cloudProxyServer === "proxy4" ? bs.CLOUD_PROXY : bs.CLOUD_PROXY_FALLBACK); + return RJ(ue), { gatewayInfo: vJ(ue, T), proxyInfo: oe, url: T }; + }), (K) => (K.gatewayInfo && vr.joinChooseServer(s.sid, { lts: N, succ: !0, csAddr: T, serverList: K.gatewayInfo.gatewayAddrs.map((q) => q.address), ec: null, opid: V, cid: K.gatewayInfo.cid.toString(), uid: K.gatewayInfo.uid.toString(), csIp: K.gatewayInfo.csIp, unilbsServerIds: k.toString(), isHttp3: m }), K.proxyInfo && vr.joinWebProxyAP(s.sid, { lts: N, sucess: 1, apServerAddr: T, turnServerAddrList: K.proxyInfo.addresses.map((q) => q.ip).join(","), errorCode: null, eventType: s.cloudProxyServer, unilbsServerIds: k.toString() }), !1), (K) => K.code !== _e.OPERATION_ABORTED && (K.code === _e.CAN_NOT_GET_GATEWAY_SERVER ? K.data.retry : (vr.joinWebProxyAP(s.sid, { lts: N, sucess: 0, apServerAddr: T, turnServerAddrList: null, errorCode: K.code, eventType: s.cloudProxyServer, unilbsServerIds: k.toString(), extend: JSON.stringify({ networkState: G }) }), ie.warning("[".concat(s.clientId, "] multi unilbs network error, retry"), K), !0)), p); + } + const AJ = (h, s, c, p, m, T) => { + const D = [], k = (N) => { + N.flag === 4096 ? vr.joinChooseServer(c.sid, { lts: p, succ: !1, csAddr: s, opid: h.opid, serverList: null, ec: N.error.message, csIp: N.error.data && N.error.data.csIp, unilbsServerIds: m.toString(), isHttp3: T }) : N.flag !== 1048576 && N.flag !== 4194304 && N.flag !== 4194310 || vr.joinWebProxyAP(c.sid, { lts: p, sucess: 0, apServerAddr: s, turnServerAddrList: null, errorCode: N.error.code, eventType: c.cloudProxyServer, unilbsServerIds: m.toString() }); + }; + if (h.response_body.forEach((N) => { + const U = N.buffer.code; + if (N.uri === 23 && U === 0 && !N.buffer.edges_services) + if (N.buffer.flag === 4194310) + ie.warning("no edge services in ap response of proxy fallback, will not set proxy in iceServers"), N.buffer.edges_services = []; + else { + const V = { error: new Je(_e.CAN_NOT_GET_GATEWAY_SERVER, "no edge services in ap response", { retry: !0, csIp: h.detail[502] }), flag: N.buffer.flag }; + D.push(V), k(V); + } + if (U !== 0) { + const V = EM(U), G = { error: new Je(_e.CAN_NOT_GET_GATEWAY_SERVER, V.desc, { desc: V.desc, retry: V.retry, csIp: h.detail[502] }), flag: N.buffer.flag }; + N.buffer.flag === 4194310 ? ie.warning(G.error.toString()) : D.push(G), k(G); + } + }), D.length) + throw ie.warning("[".concat(c.clientId, "] multi unilbs ").concat(s, " failed, ").concat(D.map((N) => "flag: ".concat(N.flag, ", message: ").concat(N.error.message, ", retry: ").concat(N.error.data.retry)).join(" | "))), new Je(_e.CAN_NOT_GET_GATEWAY_SERVER, D.map((N) => "flag: ".concat(N.flag, ", message: ").concat(N.error.message)).join(" | "), { retry: !!D.find((N) => N.error.data.retry), csIp: h.detail[502], desc: [...new Set(D.map((N) => { + var U; + return N == null || (U = N.error) === null || U === void 0 || (U = U.data) === null || U === void 0 ? void 0 : U.desc; + }).filter((N) => !!N))] }); + }, RJ = (h) => { + var s, c, p, m; + if (h.addresses && h.addresses.length === 0 && h.code === 0) + throw new Je(_e.CAN_NOT_GET_GATEWAY_SERVER, "void gateway address", { retry: !0, csIp: h.detail && h.detail[502] }); + if (Le("AP_AREA") && ((p = h.detail) !== null && p !== void 0 && p[23] && typeof ((m = h.detail) === null || m === void 0 ? void 0 : m[23]) == "string" ? TJ(h.detail[23].toLowerCase()) : TJ()), (s = h.detail) !== null && s !== void 0 && s[19] && typeof ((c = h.detail) === null || c === void 0 ? void 0 : c[19]) == "string") { + const D = h.detail[19], k = D == null ? void 0 : D.split(";"); + for (let N = 0; N < k.length; N++) { + var T; + const U = l5(T = k[N]).call(T); + h.addresses[N] && k && (h.addresses[N].fingerprint = U); + } + } + if (Le("GATEWAY_ADDRESS") && Le("GATEWAY_ADDRESS").length > 0) { + ie.debug("assign gateway address to", Le("GATEWAY_ADDRESS")); + const D = Le("GATEWAY_ADDRESS").map((k) => { + var N, U; + const V = (N = (U = h.addresses.find((G) => G.ip === k.ip && G.port === k.port)) === null || U === void 0 ? void 0 : U.fingerprint) !== null && N !== void 0 ? N : ""; + return { ip: k.ip, port: k.port, ticket: h.addresses[0] && h.addresses[0].ticket, fingerprint: V }; + }); + h.addresses = D; + } + }, nNe = (h, s) => { + if (h.response_body && h.response_body.length) { + const c = h.response_body[0]; + if (c.buffer.code !== 0) { + const p = EM(c.buffer.code); + throw new Je(_e.UPDATE_TICKET_FAILED, "[".concat(c.buffer.code, "]: ").concat(p.desc), { retry: p.retry }); + } + return c.buffer.ticket; + } + throw ie.debug("update ticket request received ap response without response body:", s), new Je(_e.UPDATE_TICKET_FAILED, "cannot find response body from ap response", { retry: !1 }); + }, DJ = (h, s, c) => { + const p = Math.floor(Math.random() * 1e12), m = { appid: h.appId, client_ts: Date.now(), opid: p, sid: h.sid, request_bodies: [{ uri: 22, buffer: { cname: h.cname, detail: g5({ 6: h.stringUid, 11: s, 12: Le("USE_NEW_TOKEN") ? "1" : void 0, 22: s }, h.apRTM ? { 26: "RTM2" } : {}), key: h.token, service_ids: c, uid: h.uid || 0 } }] }; + m.request_bodies.forEach((D) => { + h.multiIP && h.multiIP.gateway_ip && (D.buffer.detail[5] = JSON.stringify({ vocs_ip: [h.multiIP.uni_lbs_ip], vos_ip: [h.multiIP.gateway_ip] })); + }); + const T = new FormData(); + return T.append("request", JSON.stringify(m)), [T, p]; + }, iNe = (h, s) => { + const c = Math.floor(Math.random() * 1e12), p = { appid: h.appId, client_ts: Date.now(), opid: c, sid: h.sid, request_bodies: [{ uri: 28, buffer: { cname: h.cname, detail: { 1: "", 6: h.stringUid, 12: "1" }, token: h.token, service_ids: s, uid: h.uid || 0, edges_services: h.apResponse.addresses.map((T) => ({ ip: T.ip, port: T.port })) } }] }, m = new FormData(); + return m.append("request", JSON.stringify(p)), [m, c]; + }; + let $C = 0; + function VC(h) { + return ot.all(h.map((s) => s.then((c) => { + throw c; + }, (c) => c))).then((s) => { + throw s; + }, (s) => s); + } + const Lx = (h) => ye(this, null, function* () { + let { fragementLength: s, referenceList: c, asyncMapHandler: p, allFailedhandler: m, promisesCollector: T } = h, D = 0; + const k = s; + let N, U = 0; + const V = () => ye(this, null, function* () { + const G = (() => { + const K = D * k, q = K + k; + return c.slice(K, q).map(p); + })(); + T && T.push(...G); + try { + N = yield VC(G); + } catch (K) { + if (U += k, D++, !(U >= c.length)) + return void (yield V()); + m(K); + } + G.forEach((K) => K.cancel()); + }); + return yield V(), N; + }); + function y5(h, s, c, p) { + return ye(this, null, function* () { + return { gatewayInfo: yield function(T, D, k, N) { + return ye(this, null, function* () { + let U = null; + const V = [], G = () => ye(this, null, function* () { + const q = Le("WEBCS_DOMAIN").slice(0, Le("AJAX_REQUEST_CONCURRENT")).map((he) => ({ url: T.proxyServer ? "https://".concat(T.proxyServer, "/ap/?url=").concat(he + "/api/v2/transpond/webrtc?v=2") : "https://".concat(he, "/api/v2/transpond/webrtc?v=2"), areaCode: wM() })), ue = N.recordJoinChannelService({ startTs: Date.now(), status: "pending", service: "chooseServer", urls: q.map((he) => he.url) }), oe = yield Lx({ fragementLength: Le("FRAGEMENT_LENGTH"), referenceList: q, asyncMapHandler: (he) => (ie.debug("[".concat(T.clientId, "] Connect to choose_server:"), he.url), IJ(he, T, D, k)), allFailedhandler: (he) => { + throw N.recordJoinChannelService({ endTs: Date.now(), status: "error", errors: he }, ue), he[0]; + }, promisesCollector: V }); + return N.recordJoinChannelService({ endTs: Date.now(), status: "success" }, ue), oe; + }), K = () => ye(this, null, function* () { + if (yield _s(1e3), U !== null) + return U; + const q = Le("WEBCS_DOMAIN_BACKUP_LIST").map((he) => ({ url: T.proxyServer ? "https://".concat(T.proxyServer, "/ap/?url=").concat(he + "/api/v2/transpond/webrtc?v=2") : "https://".concat(he, "/api/v2/transpond/webrtc?v=2"), areaCode: wM() })), ue = N.recordJoinChannelService({ endTs: void 0, startTs: Date.now(), status: "pending", service: "chooseServer", urls: q.map((he) => he.url) }), oe = yield Lx({ fragementLength: Le("FRAGEMENT_LENGTH"), referenceList: q, asyncMapHandler: (he) => (ie.debug("[".concat(T.clientId, "] Connect to backup choose_server:"), he.url), IJ(he, T, D, k)), allFailedhandler: (he) => { + throw N.recordJoinChannelService({ endTs: Date.now(), status: "error", errors: he }, ue), he[0]; + }, promisesCollector: V }); + return N.recordJoinChannelService({ endTs: Date.now(), status: "success" }, ue), oe; + }); + try { + return U = yield VC([G(), K()]), V.length && V.forEach((q) => q.cancel && typeof q.cancel == "function" && q.cancel()), U; + } catch (q) { + throw q[0]; + } + }); + }(h, s, c, p) }; + }); + } + function OJ(h, s, c, p, m) { + return ye(this, null, function* () { + const T = h.cloudProxyServer; + if (T === "disabled") { + if (!p) + return; + if (h.useLocalAccessPoint) + return yield y5(h, s, c, m); + if (Le("JOIN_WITH_FALLBACK_MEDIA_PROXY")) { + const { gatewayInfo: K, proxyInfo: q } = yield kJ(h, s, c, m); + if (h.turnServer && h.turnServer.mode !== "auto") + return { gatewayInfo: K }; + const ue = q.map((oe) => ({ turnServerURL: oe.address, tcpport: oe.tcpport || Gl.tcpport, udpport: oe.udpport || Gl.udpport, username: oe.username || Gl.username, password: oe.password || Gl.password, forceturn: !1, security: !0 })); + if (m.useP2P) { + var D; + const oe = (D = h.uid) !== null && D !== void 0 ? D : K.uid, he = "glb:".concat(oe.toString()), Ce = yield Tj(he), ke = q.map((Ge) => ({ turnServerURL: Ge.address, tcpport: Ge.tcpport || Gl.tcpport, udpport: Ge.udpport || Gl.udpport, username: he, password: Ce, forceturn: !1, security: !0 })); + ue.push(...ke); + } + return h.turnServer = { mode: "manual", servers: ue }, { gatewayInfo: K }; + } + return yield y5(h, s, c, m); + } + const { proxyInfo: k, gatewayInfo: N } = yield kJ(h, s, c, m), U = { gatewayInfo: N }, V = k.map((K) => ({ turnServerURL: K.address, tcpport: T === "proxy3" ? void 0 : K.tcpport ? K.tcpport : Gl.tcpport, udpport: T === "proxy4" ? void 0 : K.udpport ? K.udpport : Gl.udpport, username: K.username || Gl.username, password: K.password || Gl.password, forceturn: T !== "proxy4", security: T === "proxy5" })); + if (m.useP2P) { + var G; + const K = (G = h.uid) !== null && G !== void 0 ? G : N.uid, q = "glb:".concat(K.toString()), ue = yield Tj(q), oe = k.map((he) => ({ turnServerURL: he.address, tcpport: T === "proxy3" ? void 0 : he.tcpport || Gl.tcpport, udpport: T === "proxy4" ? void 0 : he.udpport || Gl.udpport, username: q, password: ue, forceturn: T !== "proxy4", security: T === "proxy5" })); + V.push(...oe); + } + return h.turnServer = { mode: "manual", servers: V }, ie.debug("[".concat(h.clientId, "] set proxy server: ").concat(h.proxyServer, ", mode: ").concat(T)), U; + }); + } + function MJ(h, s, c, p, m) { + return ye(this, null, function* () { + const T = Le("ACCOUNT_REGISTER").slice(0, Le("AJAX_REQUEST_CONCURRENT")); + let D = []; + D = s.proxyServer ? T.map((N) => "https://".concat(s.proxyServer, "/ap/?url=").concat(N + "/api/v1")) : T.map((N) => "https://".concat(N, "/api/v1")); + const k = m == null ? void 0 : m.recordJoinChannelService({ startTs: Date.now(), status: "pending", service: "stringUID", urls: D }); + try { + const N = yield function(U, V, G, K, q) { + return ye(this, null, function* () { + const ue = Date.now(), oe = { sid: G.sid, opid: 10, appid: G.appId, string_uid: V }; + let he = U[0]; + const Ce = yield np(() => sm(he + "".concat(he.indexOf("?") === -1 ? "?" : "&", "action=stringuid"), { data: oe, cancelToken: K, headers: { "X-Packet-Service-Type": 0, "X-Packet-URI": 72 } }), (ke, Ge) => { + if (ke.code === 0) { + if (ke.uid <= 0 || ke.uid >= Math.pow(2, 32)) + throw ie.error("Invalid Uint Uid ".concat(V, " => ").concat(ke.uid), ke), vr.reqUserAccount(oe.sid, { lts: ue, success: !1, serverAddr: he, stringUid: oe.string_uid, uid: ke.uid, errorCode: _e.INVALID_UINT_UID_FROM_STRING_UID, extend: oe }), new Je(_e.INVALID_UINT_UID_FROM_STRING_UID); + return vr.reqUserAccount(oe.sid, { lts: ue, success: !0, serverAddr: he, stringUid: oe.string_uid, uid: ke.uid, errorCode: null, extend: oe }), !1; + } + const tt = EM(ke.code); + return tt.retry && (he = U[(Ge + 1) % U.length]), vr.reqUserAccount(oe.sid, { lts: ue, success: !1, serverAddr: he, stringUid: oe.string_uid, uid: ke.uid, errorCode: tt.desc, extend: oe }), tt.retry; + }, (ke, Ge) => ke.code !== _e.OPERATION_ABORTED && (vr.reqUserAccount(oe.sid, { lts: ue, success: !1, serverAddr: he, stringUid: oe.string_uid, uid: null, errorCode: ke.code, extend: oe }), he = U[(Ge + 1) % U.length], !0), q); + if (Ce.code !== 0) { + const ke = EM(Ce.code); + throw new Je(_e.UNEXPECTED_RESPONSE, ke.desc); + } + return Ce; + }); + }(D, h, s, c, p); + return m == null || m.recordJoinChannelService({ status: "success", endTs: Date.now() }, k), N.uid; + } catch (N) { + throw m == null || m.recordJoinChannelService({ status: "error", endTs: Date.now(), errors: [N] }, k), N; + } + }); + } + function aNe(h, s, c) { + return ye(this, null, function* () { + const p = Le("CDS_AP").slice(0, Le("AJAX_REQUEST_CONCURRENT")).map((N) => h.proxyServer ? "https://".concat(h.proxyServer, "/ap/?url=").concat(N + "/api/v1") : "https://".concat(N, "/api/v1?action=config")), m = p.map((N) => function(U, V, G, K) { + const q = yi(), ue = { flag: 64, cipher_method: 0, features: { device: q.name, system: q.os, system_general: navigator.userAgent, vendor: V.appId, version: Gh, cname: V.cname, sid: V.sid, session_id: V.sid, detail: "", proxyServer: V.proxyServer } }; + return np(() => sm(U, { data: ue, timeout: 1e3, cancelToken: G, headers: { "X-Packet-Service-Type": 0, "X-Packet-URI": 54 } }), void 0, (oe) => oe.code !== _e.OPERATION_ABORTED, K); + }(N, h, s, c)); + let T = null, D = null, k = {}; + try { + T = yield VC(m); + } catch (N) { + if (N.code === _e.OPERATION_ABORTED) + throw N; + D = N; + } + if (m.forEach((N) => N.cancel()), vr.reportApiInvoke(h.sid, { name: Ao.REQUEST_CONFIG_DISTRIBUTE, options: { error: D, res: T } }).onSuccess(), T && T.test_tags) + try { + k = function(N) { + if (!N.test_tags) + return {}; + const U = N.test_tags, V = Object.keys(U), G = {}; + return V.forEach((K) => { + var q; + const ue = l5(q = K.slice(4)).call(q), oe = JSON.parse(U[K])[1]; + G[ue] = oe; + }), G; + }(T); + } catch (N) { + } + return k; + }); + } + function kJ(h, s, c, p) { + return ye(this, null, function* () { + const m = Le("PROXY_SERVER_TYPE3"), T = (q, ue, oe) => { + let he = oe || m; + return Array.isArray(he) && (he = ue % 2 == 0 ? m[1] : m[0]), "https://".concat(he, "/ap/?url=").concat(q); + }; + let D = null; + const k = [], N = () => ye(this, null, function* () { + const q = Le("WEBCS_DOMAIN").slice(0, Le("AJAX_REQUEST_CONCURRENT")).map((he, Ce) => { + let ke; + return ke = h.cloudProxyServer === "disabled" && h.proxyServer ? T("".concat(he, "/api/v2/transpond/webrtc?v=2"), Ce, h.proxyServer) : h.cloudProxyServer === "disabled" || h.cloudProxyServer === "fallback" ? "https://".concat(he, "/api/v2/transpond/webrtc?v=2") : T("".concat(he, "/api/v2/transpond/webrtc?v=2"), Ce), { url: ke, areaCode: wM(), serviceIds: [bs.CHOOSE_SERVER, h.cloudProxyServer === "proxy5" ? bs.CLOUD_PROXY_5 : h.cloudProxyServer === "proxy3" || h.cloudProxyServer === "proxy4" ? bs.CLOUD_PROXY : bs.CLOUD_PROXY_FALLBACK] }; + }), ue = p.recordJoinChannelService({ startTs: Date.now(), status: "pending", service: "chooseServer", urls: q.map((he) => he.url) }), oe = yield Lx({ fragementLength: Le("FRAGEMENT_LENGTH"), referenceList: q, asyncMapHandler: (he) => (ie.debug("[".concat(h.clientId, "] Connect to choose_server:"), he.url), xJ(he, h, s, c)), allFailedhandler: (he) => { + throw p.recordJoinChannelService({ endTs: Date.now(), status: "error", errors: he }, ue), he[0]; + }, promisesCollector: k }); + return p.recordJoinChannelService({ endTs: Date.now(), status: "success" }, ue), oe; + }), U = () => ye(this, null, function* () { + if (yield _s(1e3), D !== null) + return D; + const q = Le("WEBCS_DOMAIN_BACKUP_LIST").map((he, Ce) => { + let ke; + return ke = h.cloudProxyServer === "disabled" && h.proxyServer ? T("".concat(he, "/api/v2/transpond/webrtc?v=2"), Ce, h.proxyServer) : h.cloudProxyServer === "disabled" || h.cloudProxyServer === "fallback" ? "https://".concat(he, "/api/v2/transpond/webrtc?v=2") : T("".concat(he, "/api/v2/transpond/webrtc?v=2"), Ce), { url: ke, areaCode: wM(), serviceIds: [bs.CHOOSE_SERVER, h.cloudProxyServer === "proxy5" ? bs.CLOUD_PROXY_5 : h.cloudProxyServer === "proxy3" || h.cloudProxyServer === "proxy4" ? bs.CLOUD_PROXY : bs.CLOUD_PROXY_FALLBACK] }; + }), ue = p.recordJoinChannelService({ startTs: Date.now(), status: "pending", service: "chooseServer", urls: q.map((he) => he.url) }), oe = yield Lx({ fragementLength: Le("FRAGEMENT_LENGTH"), referenceList: q, asyncMapHandler: (he) => (ie.debug("[".concat(h.clientId, "] Connect to backup choose_server:"), he.url), xJ(he, h, s, c)), allFailedhandler: (he) => { + throw p.recordJoinChannelService({ endTs: Date.now(), status: "error", errors: he }, ue), he[0]; + }, promisesCollector: k }); + return p.recordJoinChannelService({ endTs: Date.now(), status: "success" }, ue), oe; + }); + let V, G, K; + try { + ({ gatewayInfo: V, proxyInfo: G, url: K } = yield VC([N(), U()])); + } catch (q) { + throw q[0]; + } + if (k.length && k.forEach((q) => q.cancel && typeof q.cancel == "function" && q.cancel()), !V || !G) + throw new Je(_e.UNEXPECTED_ERROR, "missing gateway or proxy response").print(); + if (h.apUrl = K, h.cloudProxyServer !== "disabled" && Array.isArray(m) && K) { + const q = /^https?:\/\/(.+?)(\/.*)?$/.exec(K)[1]; + rr(m).call(m, q) && (h.proxyServer = q, ie.setProxyServer(q), vr.setProxyServer(q)); + } + return D = { gatewayInfo: V, proxyInfo: yield ZPe(G, V.uid) }, D; + }); + } + function PJ(h, s, c, p) { + return ye(this, null, function* () { + const m = Le("UAP_AP").slice(0, Le("AJAX_REQUEST_CONCURRENT")).map((T) => s.proxyServer ? "https://".concat(s.proxyServer, "/ap/?url=").concat(T + "/api/v1?action=uap") : "https://".concat(T, "/api/v1?action=uap")); + return yield rNe(m, h, s, c, p); + }); + } + function oNe(h, s, c) { + return ye(this, null, function* () { + const p = Le("UAP_AP").slice(0, Le("AJAX_REQUEST_CONCURRENT")).map((T) => h.proxyServer ? "https://".concat(h.proxyServer, "/ap/?url=").concat(T + "/api/v1?action=uap") : "https://".concat(T, "/api/v1?action=uap")), m = p.map((T) => function(D, k, N, U) { + const V = { command: "convergeAllocateEdge", sid: k.sid, appId: k.appId, token: k.token, ts: Date.now(), version: Gh, cname: k.cname, uid: k.uid.toString(), requestId: m5, seq: m5 }; + m5 += 1; + const G = { service_name: "tele_channel", json_body: JSON.stringify(V) }; + return np(() => ye(this, null, function* () { + const K = yield sm(D, { data: G, cancelToken: N, headers: { "X-Packet-Service-Type": 0, "X-Packet-URI": 61 } }); + if (K.code !== 0) { + const ue = new Je(_e.UNEXPECTED_RESPONSE, "cross channel ap error, code" + K.code, { retry: !0 }); + throw ie.error(ue.toString()), ue; + } + const q = JSON.parse(K.json_body); + if (q.code !== 200) { + const ue = new Je(_e.UNEXPECTED_RESPONSE, "cross channel app center error, code: ".concat(q.code, ", reason: ").concat(q.reason)); + throw ie.error(ue.toString()), ue; + } + if (!q.servers || q.servers.length === 0) { + const ue = new Je(_e.UNEXPECTED_RESPONSE, "cross channel app center empty server"); + throw ie.error(ue.toString()), ue; + } + return { vid: q.vid, workerToken: q.workerToken, addressList: (Le("CHANNEL_MEDIA_RELAY_SERVERS") || q.servers).map((ue) => "wss://".concat(ue.address.replace(/\./g, "-"), ".").concat(Le("WORKER_DOMAIN"), ":").concat(ue.wss)) }; + }), void 0, (K) => !!(K.code !== _e.OPERATION_ABORTED && K.code !== _e.UNEXPECTED_RESPONSE || K.data && K.data.retry), U); + }(T, h, s, c)); + try { + const T = yield VC(m); + return m.forEach((D) => D.cancel()), T; + } catch (T) { + throw T[0]; + } + }); + } + function sNe(h, s, c) { + return ye(this, null, function* () { + let p = null; + const m = [], T = (D) => ye(this, null, function* () { + const k = Le(D ? "WEBCS_DOMAIN_BACKUP_LIST" : "WEBCS_DOMAIN").map((N) => h.proxyServer ? "https://".concat(h.proxyServer, "/ap/?url=").concat(N + "/api/v2/transpond/webrtc?v=2") : "https://".concat(N, "/api/v2/transpond/webrtc?v=2")); + return D && (yield _s(1e3), p !== null) ? p : yield Lx({ fragementLength: Le("FRAGEMENT_LENGTH"), referenceList: k, asyncMapHandler: (N) => (ie.debug("[".concat(h.clientId, "] update ticket, Connect to ").concat(D ? "backup" : "", " choose_server:"), N), function(U, V, G, K) { + const [q] = iNe(V, [bs.CHOOSE_SERVER]); + let ue = Do.networkState; + return np(() => ye(this, null, function* () { + ue && Do.networkState === Dl.OFFLINE && Do.onlineWaiter && (yield ot.race([Do.onlineWaiter, _s(K && K.maxRetryTimeout || Oo.maxRetryTimeout)])), ue = Do.networkState; + const oe = yield sm(U, { data: q, cancelToken: G, headers: { "Content-Type": "multipart/form-data;" } }, !0); + return nNe(oe, U); + }), () => !1, (oe) => oe.code !== _e.OPERATION_ABORTED && (oe.code === _e.UPDATE_TICKET_FAILED ? oe.data.retry : (ie.warning("[".concat(V.clientId, "] update ticket network error, retry"), oe), !0)), K); + }(N, h, s, c)), allFailedhandler: (N) => { + throw N[0]; + }, promisesCollector: m }); + }); + try { + return p = yield VC([T(!1), T(!0)]), m.length && m.forEach((D) => D.cancel && typeof D.cancel == "function" && D.cancel()), p; + } catch (D) { + throw D[0]; + } + }); + } + function NJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function LJ(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? NJ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : NJ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class lNe extends Ra { + get isSuccess() { + return !!this.configs; + } + constructor() { + super(), Z(this, "configs", void 0), Z(this, "joinInfo", void 0), Z(this, "cancelToken", void 0), Z(this, "retryConfig", { timeout: 3e3, timeoutFactor: 1.5, maxRetryCount: 1, maxRetryTimeout: 1e4 }), Z(this, "interval", void 0), Z(this, "mutex", new Ss("config-distribute")), Z(this, "mutableParamsRead", !1); + } + startGetConfigDistribute(s, c) { + this.joinInfo = s, this.cancelToken = c, this.interval && this.stopGetConfigDistribute(), Le("ENABLE_CONFIG_DISTRIBUTE") && (this.updateConfigDistribute(), this.interval = window.setInterval(() => { + this.updateConfigDistribute(); + }, Le("CONFIG_DISTRIBUTE_INTERVAL"))); + } + stopGetConfigDistribute() { + this.interval && clearInterval(this.interval), this.interval = void 0, this.joinInfo = void 0, this.cancelToken = void 0; + } + awaitConfigDistributeComplete() { + return ye(this, null, function* () { + this.mutex.isLocked && (yield this.mutex.lock())(); + }); + } + updateConfigDistribute() { + return ye(this, null, function* () { + if (this.mutableParamsRead || (this.mutableParamsRead = !0, vr.reportApiInvoke(null, { options: void 0, name: Ao.LOAD_CONFIG_FROM_LOCALSTORAGE, tag: Na.TRACER }).onSuccess(JSON.stringify(Jy))), !this.joinInfo || !this.cancelToken || !this.retryConfig) + return void ie.debug("[config-distribute] get config distribute interrupted have no joininfo"); + let s; + const c = yield this.mutex.lock(); + try { + s = yield aNe(this.joinInfo, this.cancelToken, this.retryConfig), ie.debug("[config-distribute] get config distribute", JSON.stringify(s)), s.limit_bitrate && this.handleBitrateLimit(s.limit_bitrate), this.cacheGlobalParameterConfig(s), this.configs = s; + } catch (p) { + const m = new Je(_e.NETWORK_RESPONSE_ERROR, p); + ie.warning("[config-distribute] ".concat(m.toString())); + } finally { + c(); + } + }); + } + getBitrateLimit() { + return this.configs ? this.configs.limit_bitrate : void 0; + } + handleBitrateLimit(s) { + var c; + (c = s) && c.uplink && c.id && c.uplink.max_bitrate !== void 0 && c.uplink.min_bitrate !== void 0 && (this.configs && this.configs.limit_bitrate ? this.configs && this.configs.limit_bitrate && this.configs.limit_bitrate.id !== s.id && this.emit(kx.UPDATE_BITRATE_LIMIT, s) : this.emit(kx.UPDATE_BITRATE_LIMIT, s)); + } + getLowStreamConfigDistribute() { + return this.configs && this.configs.limit_bitrate && LJ({}, this.configs.limit_bitrate.low_stream_uplink); + } + cacheGlobalParameterConfig(s) { + var c; + const p = dx(c = Object.keys(s).filter((T) => /^webrtc_ng_global_parameter/.test(T))).call(c); + for (let T = 0; T < p.length; T++) + for (let D = p.length - 1; D > T; D--) { + const k = p[D]; + if (typeof s[k].__priority == "number") { + const N = s[k].__priority, U = p[D - 1]; + if (typeof s[U].__priority == "number") { + if (!(N > s[U].__priority)) + continue; + { + const V = k; + p[D] = p[D - 1], p[D - 1] = V; + } + } else { + const V = k; + p[D] = p[D - 1], p[D - 1] = V; + } + } + } + const m = {}; + p.forEach((T) => { + const D = s[T], k = D.__expires; + Object.keys(D).forEach((N) => { + N === "__priority" || N === "__expires" || Object.prototype.hasOwnProperty.call(m, N) || (m[N] = LJ({ value: D[N] }, k && { expires: k })); + }); + }); + try { + (function(k) { + try { + const N = Date.now(); + Object.keys(k).forEach((U) => { + switch (U) { + case "ENABLE_EVENT_REPORT": + case "UPLOAD_LOG": + if (Object.prototype.hasOwnProperty.call(Ol, U)) { + const { value: V, expires: G } = k[U]; + if (G && G <= N) + return; + Jy[U] = V, Ol[U] = V, ie.debug("Update global parameters from config distribute", U, V); + } + } + }); + } catch (N) { + ie.error("Error update config immediately: ".concat(k), N.message); + } + })(m); + const T = JSON.stringify(m), D = window.btoa(T); + window.localStorage.setItem("websdk_ng_global_parameter", D), ie.debug("Caching global parameters ".concat(T)); + } catch (T) { + ie.error("Error caching global parameters:", T.message); + } + } + } + const hl = { getDisplayMedia: !1, getStreamFromExtension: !1, supportUnifiedPlan: !1, supportMinBitrate: !1, supportSetRtpSenderParameters: !1, supportDualStream: !0, webAudioMediaStreamDest: !1, supportReplaceTrack: !1, supportWebGL: !1, webAudioWithAEC: !1, supportRequestFrame: !1, supportShareAudio: !1, supportDualStreamEncoding: !1, supportDataChannel: !1, supportPCSetConfiguration: !1, supportWebRTCEncodedTransform: !1, supportWebRTCInsertableStream: !1 }; + function _i() { + return hl; + } + var ds; + function zC(h, s, c) { + return { sampleRate: h, stereo: s, bitrate: c }; + } + function ci(h, s, c, p, m) { + return { width: h, height: s, frameRate: c, bitrateMin: p, bitrateMax: m }; + } + function Bd(h, s, c, p, m) { + return { width: { max: h }, height: { max: s }, frameRate: c, bitrateMin: p, bitrateMax: m }; + } + function _5(h, s) { + return { numSpatialLayers: h, numTemporalLayers: s }; + } + (function(h) { + h.IOS_15_16_INTERRUPTION_START = "ios15_16-interruption-start", h.IOS_15_16_INTERRUPTION_END = "ios15_16-interruption-end", h.IOS_INTERRUPTION_START = "ios-interruption-start", h.IOS_INTERRUPTION_END = "ios-interruption-end", h.STATE_CHANGE = "state-change"; + })(ds || (ds = {})); + const cNe = { "90p": ci(160, 90), "90p_1": ci(160, 90), "120p": ci(160, 120, 15, 30, 65), "120p_1": ci(160, 120, 15, 30, 65), "120p_3": ci(120, 120, 15, 30, 50), "120p_4": ci(212, 120), "180p": ci(320, 180, 15, 30, 140), "180p_1": ci(320, 180, 15, 30, 140), "180p_3": ci(180, 180, 15, 30, 100), "180p_4": ci(240, 180, 15, 30, 120), "240p": ci(320, 240, 15, 40, 200), "240p_1": ci(320, 240, 15, 40, 200), "240p_3": ci(240, 240, 15, 40, 140), "240p_4": ci(424, 240, 15, 40, 220), "360p": ci(640, 360, 15, 80, 400), "360p_1": ci(640, 360, 15, 80, 400), "360p_3": ci(360, 360, 15, 80, 260), "360p_4": ci(640, 360, 30, 80, 600), "360p_6": ci(360, 360, 30, 80, 400), "360p_7": ci(480, 360, 15, 80, 320), "360p_8": ci(480, 360, 30, 80, 490), "360p_9": ci(640, 360, 15, 80, 800), "360p_10": ci(640, 360, 24, 80, 800), "360p_11": ci(640, 360, 24, 80, 1e3), "480p": ci(640, 480, 15, 100, 500), "480p_1": ci(640, 480, 15, 100, 500), "480p_2": ci(640, 480, 30, 100, 1e3), "480p_3": ci(480, 480, 15, 100, 400), "480p_4": ci(640, 480, 30, 100, 750), "480p_6": ci(480, 480, 30, 100, 600), "480p_8": ci(848, 480, 15, 100, 610), "480p_9": ci(848, 480, 30, 100, 930), "480p_10": ci(640, 480, 10, 100, 400), "720p": ci(1280, 720, 15, 120, 1130), "720p_auto": ci(1280, 720, 30, 900, 3e3), "720p_1": ci(1280, 720, 15, 120, 1130), "720p_2": ci(1280, 720, 30, 120, 2e3), "720p_3": ci(1280, 720, 30, 120, 1710), "720p_5": ci(960, 720, 15, 120, 910), "720p_6": ci(960, 720, 30, 120, 1380), "1080p": ci(1920, 1080, 15, 120, 2080), "1080p_1": ci(1920, 1080, 15, 120, 2080), "1080p_2": ci(1920, 1080, 30, 120, 3e3), "1080p_3": ci(1920, 1080, 30, 120, 3150), "1080p_5": ci(1920, 1080, 60, 120, 4780), "1440p": ci(2560, 1440, 30, 120, 4850), "1440p_1": ci(2560, 1440, 30, 120, 4850), "1440p_2": ci(2560, 1440, 60, 120, 7350), "4k": ci(3840, 2160, 30, 120, 8910), "4k_1": ci(3840, 2160, 30, 120, 8910), "4k_3": ci(3840, 2160, 60, 120, 13500) }, AM = [{ scaleResolutionDownBy: 2, width: 1280, height: 720, frameRate: 30, bitrateMin: 300, bitrateMax: 900 }, { scaleResolutionDownBy: 1.333333, width: 1280, height: 720, frameRate: 30, bitrateMin: 600, bitrateMax: 2e3 }, { scaleResolutionDownBy: 1, width: 1280, height: 720, frameRate: 30, bitrateMin: 900, bitrateMax: 3e3 }], uNe = { "480p": Bd(640, 480, 5), "480p_1": Bd(640, 480, 5), "480p_2": Bd(640, 480, 30), "480p_3": Bd(640, 480, 15), "720p": Bd(1280, 720, 5), "720p_auto": ci(1280, 720, 30, 900, 3e3), "720p_1": Bd(1280, 720, 5), "720p_2": Bd(1280, 720, 30), "720p_3": Bd(1280, 720, 15), "1080p": Bd(1920, 1080, 5), "1080p_1": Bd(1920, 1080, 5), "1080p_2": Bd(1920, 1080, 30), "1080p_3": Bd(1920, 1080, 15) }, hNe = { "1SL1TL": _5(1, 1), "3SL3TL": _5(3, 3), "2SL3TL": _5(2, 3) }; + function Eg(h) { + return h || (h = "480p_1"), typeof h == "string" ? Object.assign({}, cNe[h]) : h; + } + function S5(h) { + return typeof h == "string" ? Object.assign({}, uNe[h]) : h; + } + function RM(h) { + return typeof h == "string" ? Object.assign({}, hNe[h]) : h; + } + const dNe = { speech_low_quality: zC(16e3, !1), speech_standard: zC(32e3, !1, 18), music_standard: zC(48e3, !1), standard_stereo: zC(48e3, !0, 56), high_quality: zC(48e3, !1, 128), high_quality_stereo: zC(48e3, !0, 192) }; + function DM(h) { + return typeof h == "string" ? Object.assign({}, dNe[h]) : h; + } + const HC = []; + function FJ(h) { + return qo(h, "mediaSource", ["screen", "window", "application"]), !0; + } + var lr, ua, s_, b5, E5, l_, c_, u_, Lc, BJ; + (function(h) { + h.NEED_RENEGOTIATE = "@need_renegotiate", h.NEED_REPLACE_TRACK = "@need_replace_track", h.NEED_REPLACE_MIXING_TRACK = "@need_replace_mixing_track", h.NEED_CLOSE = "@need_close", h.NEED_ENABLE_TRACK = "@need_enable_track", h.NEED_DISABLE_TRACK = "@need_disable_track", h.NEED_SESSION_ID = "@need_sid", h.SET_OPTIMIZATION_MODE = "@set_optimization_mode", h.GET_STATS = "@get_stats", h.GET_RTC_STATS = "@get_rtc_stats", h.GET_LOW_VIDEO_TRACK = "@get_low_video_track", h.NEED_RESET_REMOTE_SDP = "@need_reset_remote_sdp", h.NEED_UPDATE_VIDEO_ENCODER = "@need_update_video_encoder", h.NEED_MUTE_TRACK = "@need_mute_track", h.NEED_UNMUTE_TRACK = "@need_unmute_track"; + })(lr || (lr = {})), function(h) { + h.SCREEN_TRACK = "screen_track", h.CUSTOM_TRACK = "custome_track", h.LOW_STREAM = "low_stream"; + }(ua || (ua = {})), function(h) { + h[h.HIGH_STREAM = 0] = "HIGH_STREAM", h[h.LOW_STREAM = 1] = "LOW_STREAM"; + }(s_ || (s_ = {})), function(h) { + h[h.HIGH_STREAM = 0] = "HIGH_STREAM", h[h.LOW_STREAM = 1] = "LOW_STREAM"; + }(b5 || (b5 = {})), function(h) { + h[h.DISABLE = 0] = "DISABLE", h[h.LOW_STREAM = 1] = "LOW_STREAM", h[h.AUDIO_ONLY = 2] = "AUDIO_ONLY"; + }(E5 || (E5 = {})), function(h) { + h.TRANSCEIVER_UPDATED = "transceiver-updated", h.SEI_TO_SEND = "sei-to-send", h.SEI_RECEIVED = "sei-received"; + }(l_ || (l_ = {})), function(h) { + h.SOURCE_STATE_CHANGE = "source-state-change", h.TRACK_ENDED = "track-ended", h.BEAUTY_EFFECT_OVERLOAD = "beauty-effect-overload", h.VIDEO_ELEMENT_VISIBLE_STATUS = "video-element-visible-status", h.CLOSED = "closed"; + }(c_ || (c_ = {})), function(h) { + h.FIRST_FRAME_DECODED = "first-frame-decoded", h.VIDEO_ELEMENT_VISIBLE_STATUS = "video-element-visible-status", h.VIDEO_STATE_CHANGED = "video-state-changed"; + }(u_ || (u_ = {})), function(h) { + h.AUDIO_SOURCE_STATE_CHANGE = "audio_source_state_change", h.RECEIVE_TRACK_BUFFER = "receive_track_buffer", h.ON_AUDIO_BUFFER = "on_audio_buffer", h.UPDATE_SOURCE = "update_source"; + }(Lc || (Lc = {})), function(h) { + h.UPDATE_TRACK_SOURCE = "update-track-source"; + }(BJ || (BJ = {})); + const C5 = { sendVolumeLevel: 0, sendBitrate: 0, sendBytes: 0, sendPackets: 0, sendPacketsLost: 0, sendJitterMs: 0, sendRttMs: 0, currentPacketLossRate: 0 }, T5 = { sendBytes: 0, sendBitrate: 0, sendPackets: 0, sendPacketsLost: 0, sendJitterMs: 0, sendRttMs: 0, sendResolutionHeight: 0, sendResolutionWidth: 0, captureResolutionHeight: 0, captureResolutionWidth: 0, targetSendBitrate: 0, totalDuration: 0, totalFreezeTime: 0, currentPacketLossRate: 0 }, UJ = { transportDelay: 0, end2EndDelay: 0, receiveBitrate: 0, receiveLevel: 0, receiveBytes: 0, receiveDelay: 0, receivePackets: 0, receivePacketsLost: 0, totalDuration: 0, totalFreezeTime: 0, freezeRate: 0, packetLossRate: 0, currentPacketLossRate: 0, publishDuration: -1 }, fNe = { uplinkNetworkQuality: 0, downlinkNetworkQuality: 0 }, jJ = { transportDelay: 0, end2EndDelay: 0, receiveBitrate: 0, receiveBytes: 0, receiveDelay: 0, receivePackets: 0, receivePacketsLost: 0, receiveResolutionHeight: 0, receiveResolutionWidth: 0, totalDuration: 0, totalFreezeTime: 0, freezeRate: 0, packetLossRate: 0, currentPacketLossRate: 0, publishDuration: -1 }; + var dl, Fc, xS, lm, fl, Ud; + (function(h) { + h.ON_TRACK = "on_track", h.ON_NODE = "on_node"; + })(dl || (dl = {})), function(h) { + h.REQUEST_UPDATE_CONSTRAINTS = "request_update_constraints", h.REQUEST_CONSTRAINTS = "request_constraints"; + }(Fc || (Fc = {})), function(h) { + h.IDLE = "IDLE", h.INITING = "INITING", h.INITEND = "INITEND"; + }(xS || (xS = {})), function(h) { + h.STATE_CHANGE = "state_change", h.RECORDING_DEVICE_CHANGED = "recordingDeviceChanged", h.PLAYOUT_DEVICE_CHANGED = "playoutDeviceChanged", h.CAMERA_DEVICE_CHANGED = "cameraDeviceChanged"; + }(lm || (lm = {})), function(h) { + h.NONE = "none", h.INIT = "init", h.CANPLAY = "canplay", h.PLAYING = "playing", h.PAUSED = "paused", h.SUSPEND = "suspend", h.STALLED = "stalled", h.WAITING = "waiting", h.ERROR = "error", h.DESTROYED = "destroyed", h.ABORT = "abort", h.ENDED = "ended", h.EMPTIED = "emptied", h.LOADEDDATA = "loadeddata"; + }(fl || (fl = {})), function(h) { + h[h.VideoStateStopped = 0] = "VideoStateStopped", h[h.VideoStateStarting = 1] = "VideoStateStarting", h[h.VideoStateDecoding = 2] = "VideoStateDecoding", h[h.VideoStateFrozen = 3] = "VideoStateFrozen"; + }(Ud || (Ud = {})); + const w5 = { uninit: 100, none: 110, init: 120, loadeddata: 130, canplay: 200, playing: 210, paused: 220, suspend: 300, stalled: 310, waiting: 320, error: 330, destroyed: 340, abort: 350, ended: 360, emptied: 370 }; + var WC; + (function(h) { + h.OPEN = "open", h.MESSAGE = "message", h.CLOSE = "close", h.CLOSING = "closing", h.ERROR = "error"; + })(WC || (WC = {})); + class $J extends Ra { + constructor(s, c) { + super(), Z(this, "_ID", void 0), Z(this, "_rtpTransceiver", void 0), Z(this, "_lowRtpTransceiver", void 0), Z(this, "_hints", []), Z(this, "_isClosed", !1), Z(this, "_originMediaStreamTrack", void 0), Z(this, "_mediaStreamTrack", void 0), Z(this, "_external", {}), this._ID = c || ra(8, "track-"), this._originMediaStreamTrack = s, this._mediaStreamTrack = s, function(p) { + rr(HC).call(HC, p) || HC.push(p); + }(this); + } + toString() { + return this._ID; + } + getTrackId() { + return this._ID; + } + getMediaStreamTrack(s) { + if (!s) { + const c = vr.reportApiInvoke(null, { name: Ao.GET_MEDIA_STREAM_TRACK, options: [], tag: Na.TRACER }); + this._mediaStreamTrack && typeof this._mediaStreamTrack.label == "string" ? c.onSuccess(this._mediaStreamTrack.label) : c.onSuccess(""); + } + return this._mediaStreamTrack; + } + getRTCRtpTransceiver(s) { + return s === s_.LOW_STREAM ? this._lowRtpTransceiver : this._rtpTransceiver; + } + getMediaStreamTrackSettings() { + return this.getMediaStreamTrack(!0).getSettings(); + } + close() { + this._isClosed = !0, this._lowRtpTransceiver = void 0, this._rtpTransceiver = void 0, function(s) { + const c = HC.indexOf(s); + c !== -1 && HC.splice(c, 1); + }(this), this.emit(c_.CLOSED), this.removeAllListeners(l_.SEI_RECEIVED); + } + _updateRtpTransceiver(s, c) { + if (c === s_.LOW_STREAM) { + if (this._lowRtpTransceiver === s) + return; + this._lowRtpTransceiver = s; + } else { + if (this._rtpTransceiver === s) + return; + this._rtpTransceiver = s; + } + this.emit(l_.TRANSCEIVER_UPDATED, s, c); + } + } + class Xs extends $J { + get isExternalTrack() { + return this._isExternalTrack; + } + get muted() { + return this._muted; + } + get enabled() { + return this._enabled; + } + get processorContext() { + return this._processorContext; + } + constructor(s, c) { + super(s, c), Z(this, "_enabled", !0), Z(this, "_muted", !1), Z(this, "_isExternalTrack", !1), Z(this, "_isClosed", !1), Z(this, "_enabledMutex", void 0), Z(this, "processor", void 0), Z(this, "_handleTrackEnded", () => { + this.onTrackEnded(); + }), this._enabledMutex = new Ss("".concat(this.getTrackId())), s.addEventListener("ended", this._handleTrackEnded); + } + getTrackLabel() { + var s, c; + return (s = (c = this._originMediaStreamTrack) === null || c === void 0 ? void 0 : c.label) !== null && s !== void 0 ? s : ""; + } + close() { + this._isClosed || (this.stop(), this._originMediaStreamTrack.stop(), this._mediaStreamTrack !== this._originMediaStreamTrack && (this._mediaStreamTrack.stop(), this._mediaStreamTrack = null), this._originMediaStreamTrack = null, this._enabledMutex = null, ie.debug("[".concat(this.getTrackId(), "] close")), this.emit(lr.NEED_CLOSE), super.close()); + } + _updateOriginMediaStreamTrack(p, m) { + return ye(this, arguments, function* (s, c) { + let T = arguments.length > 2 && arguments[2] !== void 0 && arguments[2]; + this._isExternalTrack = T, s !== this._originMediaStreamTrack && (this._originMediaStreamTrack && (this._originMediaStreamTrack.removeEventListener("ended", this._handleTrackEnded), c && this._originMediaStreamTrack.stop()), s.addEventListener("ended", this._handleTrackEnded), this._originMediaStreamTrack = s, this._muted && (this._originMediaStreamTrack.enabled = !1), this._mediaStreamTrack = this._originMediaStreamTrack, this._updatePlayerSource(), yield Ji(this, lr.NEED_REPLACE_TRACK, this), this.processor && this._processorContext && this.processor.updateInput({ track: this._originMediaStreamTrack, context: this._processorContext })); + }); + } + _getDefaultPlayerConfig() { + return {}; + } + onTrackEnded() { + ie.debug("[".concat(this.getTrackId(), "] track ended")), this.safeEmit(c_.TRACK_ENDED); + } + stateCheck(s, c) { + if (ie.debug("check track state, [muted: ".concat(this._muted, ", enabled: ").concat(this._enabled, "] to [").concat(s, ": ").concat(c, "]")), Qv(c, s), this._enabled && this._muted && s === "enabled" && c === !1) + throw new mt(_e.TRACK_STATE_UNREACHABLE, "cannot set enabled while the track is muted").print("error", ie); + if (!this._enabled && !this._muted && s === "muted" && c === !0) + throw new mt(_e.TRACK_STATE_UNREACHABLE, "cannot set muted while the track is disabled").print("error", ie); + } + getProcessorStats() { + return this._processorContext && this._processorContext.gatherStats() || []; + } + getProcessorUsage() { + return this._processorContext ? this._processorContext.gatherUsage() : ot.resolve([]); + } + } + function VJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + const zJ = window.AudioContext || window.webkitAudioContext; + let sh = null; + const $i = new class extends Ra { + constructor() { + super(...arguments), Z(this, "prevState", void 0), Z(this, "curState", void 0), Z(this, "currentTime", void 0), Z(this, "currentTimeStuckAt", void 0), Z(this, "interruptDetectorTrack", void 0), Z(this, "onLocalAudioTrackMute", () => { + ie.info("ios15-interruption-start"), this.emit(ds.IOS_15_16_INTERRUPTION_START); + }), Z(this, "onLocalAudioTrackUnmute", () => ye(this, null, function* () { + ie.info("ios15-interruption-end"), this.curState !== "running" || this.duringInterruption ? ie.info("ios15-interruption-end-canceled") : (sh && (yield sh.suspend()), this.emit(ds.IOS_15_16_INTERRUPTION_END)); + })); + } + get duringInterruption() { + return this.prevState === "running" && this.curState === "interrupted"; + } + bindInterruptDetectorTrack(h) { + ie.debug("webaudio bindInterruptDetectorTrack ".concat(h.getTrackId())), this.interruptDetectorTrack || (this.interruptDetectorTrack = h, this.interruptDetectorTrack._mediaStreamTrack.onmute = this.onLocalAudioTrackMute, this.interruptDetectorTrack._mediaStreamTrack.onunmute = this.onLocalAudioTrackUnmute); + } + unbindInterruptDetectorTrack(h) { + ie.debug("webaudio unbindInterruptDetectorTrack ".concat(h.getTrackId())), this.interruptDetectorTrack && this.interruptDetectorTrack === h && (this.interruptDetectorTrack._mediaStreamTrack && (this.interruptDetectorTrack._mediaStreamTrack.onmute = null, this.interruptDetectorTrack._mediaStreamTrack.onunmute = null), this.interruptDetectorTrack = void 0); + } + }(); + function pNe() { + if (!zJ) + return void ie.error("your browser is not support web audio"); + ie.info("create audio context"); + const h = function(s) { + for (var c = 1; c < arguments.length; c++) { + var p = arguments[c] != null ? arguments[c] : {}; + c % 2 ? VJ(Object(p), !0).forEach(function(m) { + Z(s, m, p[m]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(s, Object.getOwnPropertyDescriptors(p)) : VJ(Object(p)).forEach(function(m) { + Object.defineProperty(s, m, Object.getOwnPropertyDescriptor(p, m)); + }); + } + return s; + }({}, Le("WEBAUDIO_INIT_OPTIONS")); + ie.debug("audio context init option:", JSON.stringify(h)), sh = new zJ(h), $i.curState = sh.state, sh.onstatechange = () => { + $i.prevState = $i.curState, $i.curState = sh ? sh.state : void 0; + const { prevState: s, curState: c } = $i, p = c === "running", m = c === "interrupted", T = s === "running", D = s === "suspended", k = s === "interrupted", N = yi().osVersion; + (Rl() || vg()) && T && m && (ie.info("ios".concat(N, "-interruption-start")), $i.emit(ds.IOS_INTERRUPTION_START)), (Rl() || vg()) && (D || k) && p && (ie.info("ios".concat(N, "-interruption-end")), $i.emit(ds.IOS_INTERRUPTION_END)), s !== c && $i.emit(ds.STATE_CHANGE, c, s); + }, setInterval(() => { + var s; + const c = (s = sh) === null || s === void 0 ? void 0 : s.currentTime; + $i.currentTime !== c ? ($i.currentTimeStuckAt && (ie.debug("AudioContext current time resume at ".concat(c)), $i.currentTimeStuckAt = void 0), $i.currentTime = c) : (c !== $i.currentTimeStuckAt && (vr.reportApiInvoke(null, { name: "WEB_AUDIO_CURRENT_TIME_STUCK", options: { currentTime: c }, tag: Na.TRACER }).onSuccess(), ie.warning("AudioContext current time stuck at ".concat(c))), $i.currentTimeStuckAt = c); + }, 5e3), function(s) { + return ye(this, null, function* () { + const c = ["click", "contextmenu", "auxclick", "dblclick", "mousedown", "mouseup", "touchend", "keydown", "keyup"]; + let p, m = !1, T = !1, D = !1; + function k(he) { + s.state === "running" ? N(!1) : Rl() || vg() ? s.state === "suspended" && (N(!0), he && s.resume().then(V, V)) : s.state !== "closed" && (N(!0), he && s.resume().then(V, V)); + } + function N(he) { + if (m !== he) { + m = he; + for (let Ce = 0, ke = c; Ce < ke.length; Ce += 1) { + const Ge = ke[Ce]; + he ? window.addEventListener(Ge, G, { capture: !0, passive: !0 }) : window.removeEventListener(Ge, G, { capture: !0, passive: !0 }); + } + } + } + function U() { + k(!0); + } + function V() { + k(!1); + } + function G() { + k(!0); + } + function K(he) { + if (!D) + if (p.paused) + if (he) { + let Ce; + q(!1), D = !0; + try { + Ce = p.play(), Ce ? Ce.then(ue, ue) : (p.addEventListener("playing", ue), p.addEventListener("abort", ue), p.addEventListener("error", ue)); + } catch (ke) { + ue(); + } + } else + q(!0); + else + q(!1); + } + function q(he) { + if (T !== he) { + T = he; + for (let Ce = 0, ke = c; Ce < ke.length; Ce++) { + const Ge = ke[Ce]; + he ? window.addEventListener(Ge, oe, { capture: !0, passive: !0 }) : window.removeEventListener(Ge, oe, { capture: !0, passive: !0 }); + } + } + } + function ue() { + p.removeEventListener("playing", ue), p.removeEventListener("abort", ue), p.removeEventListener("error", ue), D = !1, K(!1); + } + function oe() { + K(!0); + } + if (Rl()) { + const he = s.createMediaStreamDestination(), Ce = document.createElement("div"); + Ce.innerHTML = "", p = Ce.children.item(0), p.controls = !1, p.disableRemotePlayback = !0, p.preload = "auto", p.srcObject = he.stream, K(!0); + } + $i.on(ds.STATE_CHANGE, U), k(!1); + }); + }(sh); + } + function GC() { + if (!sh) { + if (pNe(), !sh) + throw new mt(_e.NOT_SUPPORTED, "can not create audio context"); + return sh; + } + return sh; + } + function AS(h) { + if (function() { + if (I5 !== null) + return I5; + const p = GC(), m = p.createBufferSource(), T = p.createGain(), D = p.createGain(); + m.connect(T), m.connect(D), m.disconnect(T); + let k = !1; + try { + m.disconnect(T); + } catch (N) { + k = !0; + } + return m.disconnect(), I5 = k, k; + }()) + return; + const s = h.connect, c = h.disconnect; + h.connect = (p, m, T) => { + var D; + return h._inputNodes || (h._inputNodes = []), rr(D = h._inputNodes).call(D, p) || (p instanceof AudioNode ? (h._inputNodes.push(p), s.call(h, p, m, T)) : s.call(h, p, m)), h; + }, h.disconnect = (p, m, T) => { + c.call(h), p ? tM(h._inputNodes, p) : h._inputNodes = []; + for (const D of h._inputNodes) + s.call(h, D); + }; + } + let I5 = null; + function x5(h, s) { + let c = !1; + const p = 1 / s; + if (Le("DISABLE_WEBAUDIO")) { + const m = window.setInterval(() => { + c ? window.clearInterval(m) : h(performance.now() / 1e3); + }, 1e3 * p); + } else { + const m = GC(); + let T = m.createGain(); + T.gain.value = 0, T.connect(m.destination); + const D = () => { + if (c) + return void (T = null); + const k = m.createOscillator(); + k.onended = D, k.connect(T), k.start(0), k.stop(m.currentTime + p), h(m.currentTime); + }; + D(); + } + return () => { + c = !0; + }; + } + class HJ { + constructor() { + Z(this, "context", void 0), Z(this, "analyserNode", void 0), Z(this, "sourceNode", void 0), this.context = GC(), this.analyserNode = this.context.createAnalyser(), this.analyserNode.fftSize = 2048, this.analyserNode.smoothingTimeConstant = 0.4; + } + updateSource(s) { + if (s !== this.sourceNode) { + if (this.sourceNode) + try { + this.sourceNode.disconnect(this.analyserNode); + } catch (c) { + } + this.sourceNode = s, s == null || s.connect(this.analyserNode); + } + } + getVolumeLevel() { + if (!this.sourceNode || (!this.context || Rl() || vg() || this.context.state !== "running" && this.context.resume(), !this.analyserNode)) + return 0; + const s = new Float32Array(this.analyserNode.fftSize); + if (this.analyserNode.getFloatTimeDomainData) + this.analyserNode.getFloatTimeDomainData(s); + else { + const p = new Uint8Array(this.analyserNode.fftSize); + this.analyserNode.getByteTimeDomainData(p); + for (let m = 0; m < s.length; ++m) + s[m] = p[m] / 128 - 1; + } + const c = rm(s).call(s, (p, m) => p + m * m, 0) / s.length; + return Math.max(10 * Math.log10(c) + 100, 0) / 100; + } + getAnalyserNode() { + return this.analyserNode; + } + rebuildAnalyser() { + try { + var s, c; + (s = this.sourceNode) === null || s === void 0 || s.disconnect(this.analyserNode), this.analyserNode = this.context.createAnalyser(), this.analyserNode.fftSize = 2048, this.analyserNode.smoothingTimeConstant = 0.4, (c = this.sourceNode) === null || c === void 0 || c.connect(this.analyserNode); + } catch (p) { + ie.warning("rebuild analyser node failed."); + } + } + destroy() { + this.updateSource(void 0); + } + } + class WJ extends Ra { + get processSourceNode() { + return this.sourceNode; + } + set processedNode(s) { + var c; + if (!this.isDestroyed && this._processedNode !== s) { + try { + var p; + (p = this.sourceNode) === null || p === void 0 || p.disconnect(this.outputNode); + } catch (m) { + } + (c = this._processedNode) === null || c === void 0 || c.disconnect(), this._processedNode = s, this.connect(); + } + } + get processedNode() { + return this._processedNode; + } + constructor() { + super(), Z(this, "outputNode", void 0), Z(this, "outputTrack", void 0), Z(this, "isPlayed", !1), Z(this, "context", void 0), Z(this, "audioBufferNode", void 0), Z(this, "destNode", void 0), Z(this, "audioOutputLevel", 0), Z(this, "volumeLevelAnalyser", void 0), Z(this, "_processedNode", void 0), Z(this, "playNode", void 0), Z(this, "isDestroyed", !1), Z(this, "onNoAudioInput", void 0), Z(this, "isNoAudioInput", !1), Z(this, "_noAudioInputCount", 0), this.context = GC(), this.playNode = this.context.destination, this.outputNode = this.context.createGain(), AS(this.outputNode), this.volumeLevelAnalyser = new HJ(); + } + startGetAudioBuffer(s) { + this.audioBufferNode || (this.audioBufferNode = this.context.createScriptProcessor(s), this.outputNode.connect(this.audioBufferNode), this.audioBufferNode.connect(this.context.destination), this.audioBufferNode.onaudioprocess = (c) => { + this.emit(Lc.ON_AUDIO_BUFFER, function(p) { + for (let m = 0; m < p.outputBuffer.numberOfChannels; m += 1) { + const T = p.outputBuffer.getChannelData(m); + for (let D = 0; D < T.length; D += 1) + T[D] = 0; + } + return p.inputBuffer; + }(c)); + }); + } + stopGetAudioBuffer() { + this.audioBufferNode && (this.audioBufferNode.onaudioprocess = null, this.outputNode.disconnect(this.audioBufferNode), this.audioBufferNode = void 0); + } + createOutputTrack() { + if (!_i().webAudioMediaStreamDest) + throw new mt(_e.NOT_SUPPORTED, "your browser is not support audio processor"); + return this.destNode && this.outputTrack || (this.destNode = this.context.createMediaStreamDestination(), this.outputNode.connect(this.destNode), this.outputTrack = this.destNode.stream.getAudioTracks()[0]), this.outputTrack; + } + play(s) { + this.context.state !== "running" && rM(() => { + $i.emit("autoplay-failed"); + }), this.isPlayed = !0, this.playNode = s || this.context.destination, this.outputNode.connect(this.playNode); + } + stop() { + if (this.isPlayed) + try { + this.outputNode.disconnect(this.playNode); + } catch (s) { + } + this.isPlayed = !1; + } + getAccurateVolumeLevel() { + return this.volumeLevelAnalyser.getVolumeLevel(); + } + checkHasAudioInput() { + return ye(this, arguments, function* () { + let s = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + if (s > 5) + return this.isNoAudioInput = !0, this.onNoAudioInput && this.onNoAudioInput(), !1; + Rl() || vg() ? this.context.state === "suspended" && this.context.resume() : this.context.state !== "running" && this.context.resume(); + const c = this.volumeLevelAnalyser.getAnalyserNode(); + let p; + c.getFloatTimeDomainData ? (p = new Float32Array(c.fftSize), c.getFloatTimeDomainData(p)) : (p = new Uint8Array(c.fftSize), c.getByteTimeDomainData(p)); + let m = !1; + for (let T = 0; T < p.length; T++) + p[T] !== 0 && (m = !0); + return m ? (this.isNoAudioInput = !1, !0) : (yield _s(200), (yield this.checkHasAudioInput(s ? s + 1 : 1)) && m); + }); + } + getAudioVolume() { + return this.outputNode.gain.value; + } + setVolume(s) { + this.outputNode.gain.setValueAtTime(s, this.context.currentTime); + } + destroy() { + this.disconnect(), this.stop(), this.isDestroyed = !0, this.onNoAudioInput = void 0; + } + disconnect() { + var s, c; + (s = this.processedNode) === null || s === void 0 || s.disconnect(), (c = this.sourceNode) === null || c === void 0 || c.disconnect(), this.outputNode && this.outputNode.disconnect(); + } + connect() { + var s; + this.processedNode ? (s = this.processedNode) === null || s === void 0 || s.connect(this.outputNode) : this.sourceNode && this.sourceNode.connect(this.outputNode), this.volumeLevelAnalyser.updateSource(this.outputNode); + } + } + class GJ extends WJ { + get isFreeze() { + return !1; + } + constructor(s, c, p) { + var m; + if (super(), Z(this, "sourceNode", void 0), Z(this, "track", void 0), Z(this, "clonedTrack", void 0), Z(this, "audioElement", void 0), Z(this, "isCurrentTrackCloned", !1), Z(this, "isRemoteTrack", !1), Z(this, "originVolumeLevelAnalyser", void 0), Z(this, "rebuildWebAudio", () => ye(this, null, function* () { + if (ie.debug("ready to rebuild web audio, state:", this.context.state), this.isNoAudioInput && (yield this.checkHasAudioInput()), !this.isNoAudioInput || this.isDestroyed) + return document.body.removeEventListener("click", this.rebuildWebAudio, !0), void ie.debug("rebuild web audio success, current volume status", this.getAccurateVolumeLevel()); + this.context.resume().then(() => ie.info("resume success")), ie.debug("rebuild web audio because of ios 12 bugs"), this.disconnect(); + const k = this.track; + this.track = this.track.clone(), this.isCurrentTrackCloned ? k.stop() : this.isCurrentTrackCloned = !0; + const N = new MediaStream([this.track]); + this.sourceNode = this.context.createMediaStreamSource(N), AS(this.sourceNode), this.volumeLevelAnalyser.rebuildAnalyser(); + const U = this.outputNode.gain.value; + this.outputNode = this.context.createGain(), this.outputNode.gain.setValueAtTime(U, this.context.currentTime), AS(this.outputNode), this.emit(Lc.UPDATE_SOURCE), this.connect(), this.audioElement.srcObject = N, this.isPlayed && this.play(this.playNode), this.checkHasAudioInput(); + })), s.kind !== "audio") + throw new mt(_e.UNEXPECTED_ERROR); + this.track = s; + const T = new MediaStream([this.track]); + if (this.isRemoteTrack = !!c, this.sourceNode = this.context.createMediaStreamSource(T), AS(this.sourceNode), p) { + const k = p.clone(); + k.enabled = !0, this.clonedTrack = k, ie.debug("create an unmuted track ".concat(k.id, " from the original track ").concat(p.id, " to get the volume")); + const N = this.context.createMediaStreamSource(new MediaStream([k])); + AS(N), this.originVolumeLevelAnalyser = new HJ(), this.originVolumeLevelAnalyser.updateSource(N); + } + this.connect(), this.audioElement = document.createElement("audio"), this.audioElement.srcObject = T; + const D = yi(); + c && D.os === Zo.IOS && Number((m = D.osVersion) === null || m === void 0 ? void 0 : m.split(".")[0]) < 15 && ($i.on(ds.STATE_CHANGE, () => { + this.context.state === "suspended" ? document.body.addEventListener("click", this.rebuildWebAudio, !0) : this.context.state === "running" && this.rebuildWebAudio(); + }), this.checkHasAudioInput().then((k) => { + k || document.body.addEventListener("click", this.rebuildWebAudio, !0); + })); + } + updateTrack(s) { + this.sourceNode.disconnect(), this.track = s, this.isCurrentTrackCloned = !1; + const c = new MediaStream([s]); + this.sourceNode = this.context.createMediaStreamSource(c), AS(this.sourceNode), this.processedNode || this.sourceNode.connect(this.outputNode), this.emit(Lc.UPDATE_SOURCE), this.audioElement.srcObject = c; + } + destroy() { + var s; + this.audioElement.srcObject = null, this.audioElement.remove(), $i.off("state-change", this.rebuildWebAudio), (s = this.originVolumeLevelAnalyser) === null || s === void 0 || s.destroy(), this.clonedTrack = void 0, super.destroy(); + } + createMediaStreamSourceNode(s) { + return this.context.createMediaStreamSource(new MediaStream([s])); + } + updateOriginTrack(s) { + const c = s.clone(); + c.enabled = !0, this.clonedTrack && (this.clonedTrack.stop(), this.clonedTrack = c), ie.debug("create an unmuted track ".concat(c.id, " from the original track ").concat(s.id, " to get the volume")); + const p = this.context.createMediaStreamSource(new MediaStream([c])); + AS(p), this.originVolumeLevelAnalyser && this.originVolumeLevelAnalyser.updateSource(p); + } + getOriginVolumeLevel() { + return this.originVolumeLevelAnalyser ? this.originVolumeLevelAnalyser.getVolumeLevel() : this.getAccurateVolumeLevel(); + } + } + function YJ(h, s, c) { + return ye(this, null, function* () { + const p = (T, D) => T ? typeof T != "number" ? T.max || T.exact || T.ideal || T.min || D : T : D, m = { audio: !!c && { mandatory: { chromeMediaSource: "desktop" } }, video: { mandatory: { chromeMediaSource: "desktop", chromeMediaSourceId: h, maxHeight: p(s.height, 1080), maxWidth: p(s.width, 1920) } } }; + return s.frameRate && typeof s.frameRate != "number" ? (m.video.mandatory.maxFrameRate = s.frameRate.max, m.video.mandatory.minFrameRate = s.frameRate.min) : typeof s.frameRate == "number" && (m.video.mandatory.maxFrameRate = s.frameRate), yield navigator.mediaDevices.getUserMedia(m); + }); + } + function gNe(h, s) { + return ye(this, null, function* () { + const c = yield XJ(h.mediaSource), { sourceId: p, audio: m } = yield function(T) { + let D = arguments.length > 1 && arguments[1] !== void 0 && arguments[1]; + return new ot((k, N) => { + const U = document.createElement("div"); + U.innerText = "share screen", U.setAttribute("style", "text-align: center; height: 25px; line-height: 25px; border-radius: 4px 4px 0 0; background: #D4D2D4; border-bottom: solid 1px #B9B8B9;"); + const V = document.createElement("div"); + V.setAttribute("style", "width: 100%; height: 500px; padding: 15px 25px ; box-sizing: border-box;"); + const G = document.createElement("div"); + G.innerText = "Agora Web Screensharing wants to share the contents of your screen with webdemo.agorabeckon.com. Choose what you'd like to share.", G.setAttribute("style", "height: 12%;"); + const K = document.createElement("div"); + K.setAttribute("style", "width: 100%; height: 80%; background: #FFF; border: solid 1px #CBCBCB; display: flex; flex-wrap: wrap; justify-content: space-around; overflow-y: scroll; padding: 0 15px; box-sizing: border-box;"); + const q = document.createElement("div"); + q.setAttribute("style", "display: flex; justify-content: space-between; padding: 16px 0;"); + const ue = document.createElement("button"); + ue.innerHTML = "cancel", ue.setAttribute("style", "width: 85px;"), ue.onclick = () => { + document.body.removeChild(Ce); + const ke = new Error("NotAllowedError"); + ke.name = "NotAllowedError", N(ke); + }; + let oe = D; + const he = document.createElement("div"); + if (D) { + const ke = document.createElement("input"); + ke.setAttribute("type", "checkbox"); + const Ge = document.createElement("span"); + ke.setAttribute("style", "margin-right: 6px;"), Ge.innerText = "Share audio", ke.checked = oe, ke.onchange = () => { + oe = ke.checked; + }, he.appendChild(ke), he.appendChild(Ge); + } + q.appendChild(he), q.appendChild(ue), V.appendChild(G), V.appendChild(K), V.appendChild(q); + const Ce = document.createElement("div"); + Ce.setAttribute("style", "position: fixed; z-index: 99999999; top: 50%; left: 50%; width: 620px; height: 525px; background: #ECECEC; border-radius: 4px; -webkit-transform: translate(-50%,-50%); transform: translate(-50%,-50%);"), Ce.appendChild(U), Ce.appendChild(V), document.body.appendChild(Ce), T.map((ke) => { + if (ke.id) { + const Ge = document.createElement("div"); + Ge.setAttribute("style", "width: 30%; height: 160px; padding: 20px 0; text-align: center;box-sizing: content-box;"); + let tt = ke.thumbnail; + try { + const { width: Ye } = tt.getSize(); + Ye > 1920 && (tt = tt.resize({ width: 1920 })); + } catch (Ye) { + throw Ye && Ye.message.startsWith("Illegal invocation") && console.error("Operate thumbnail error, please try to set contextIsolation: false. (https://github.com/electron/electron/issues/34953)"), Ye; + } + Ge.innerHTML = '
        ' + ke.name.replace(/[\u00A0-\u9999<>\&]/g, function(Ye) { + return "&#" + Ye.charCodeAt(0) + ";"; + }) + "", Ge.onclick = () => { + document.body.removeChild(Ce), k({ sourceId: ke.id, audio: oe }); + }, K.appendChild(Ge); + } + }); + }); + }(c, s); + return yield YJ(p, h, m); + }); + } + function XJ(h) { + return ye(this, null, function* () { + let s = ["window", "screen"]; + h !== "application" && h !== "window" || (s = ["window"]), h === "screen" && (s = ["screen"]); + const c = GZ(); + if (!c) + throw console.error("failed to fetch electron, please mount it to window"), new mt(_e.ELECTRON_IS_NULL); + let p = null; + try { + var m; + p = ((m = c.desktopCapturer) === null || m === void 0 ? void 0 : m.getSources({ types: s })) || c.ipcRenderer.invoke("DESKTOP_CAPTURER_GET_SOURCES", { types: s }); + } catch (T) { + p = null; + } + p && p.then || (p = new ot((T, D) => { + c.desktopCapturer.getSources({ types: s }, (k, N) => { + k ? D(k) : T(N); + }); + })); + try { + return yield p; + } catch (T) { + throw new mt(_e.ELECTRON_DESKTOP_CAPTURER_GET_SOURCES_ERROR, T.toString()); + } + }); + } + function KJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + const A5 = new Ss("safari"); + let ZJ = !1, qJ = !1; + function lh(h, s) { + return ye(this, null, function* () { + let c = 0, p = null; + for (; c < 2; ) + try { + p = yield vNe(h, s, c > 0); + break; + } catch (m) { + if (m instanceof mt) + throw ie.error("[".concat(s, "] ").concat(m.toString())), m; + const T = OM(m.name || m.code || m, m.message); + if (T.code === _e.MEDIA_OPTION_INVALID) { + ie.debug("[".concat(s, "] detect media option invalid, retry")), c += 1, yield _s(500); + continue; + } + throw ie.error("[".concat(s, "] ").concat(T.toString())), T; + } + if (!p) + throw new mt(_e.UNEXPECTED_ERROR, "can not find stream after getUserMedia"); + return p; + }); + } + function vNe(h, s, c) { + return ye(this, null, function* () { + if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) + throw new mt(_e.NOT_SUPPORTED, "can not find getUserMedia"); + c && (h.video && (delete h.video.width, delete h.video.height), h.screen && (delete h.screen.width, delete h.screen.height)); + const p = _i(), m = new MediaStream(); + if (h.audioSource && m.addTrack(h.audioSource), h.videoSource && m.addTrack(h.videoSource), !h.audio && !h.video && !h.screen) + return ie.debug("Using Video Source/ Audio Source"), m; + if (h.screen) + if (GZ()) + h.screen.sourceId ? YC(m, yield YJ(h.screen.sourceId, h.screen, h.screenAudio)) : YC(m, yield gNe(h.screen, h.screenAudio)); + else if (Jv() && h.screen.extensionId && h.screen.mandatory) { + if (!p.getStreamFromExtension) + throw new mt(_e.NOT_SUPPORTED, "This browser does not support screen sharing"); + ie.debug("[".concat(s, '] Screen access on chrome stable, looking for extension"')); + const K = yield (D = h.screen.extensionId, k = s, new ot((q, ue) => { + try { + chrome.runtime.sendMessage(D, { getStream: !0 }, (oe) => { + if (!oe || !oe.streamId) + return ie.error("[".concat(k, "] No response from Chrome Plugin. Plugin not installed properly"), oe), void ue(new mt(_e.CHROME_PLUGIN_NO_RESPONSE, "No response from Chrome Plugin. Plugin not installed properly")); + q(oe.streamId); + }); + } catch (oe) { + ie.error("[".concat(k, "] AgoraRTC screensharing plugin is not accessible(").concat(D, ")"), oe.toString()), ue(new mt(_e.CHROME_PLUGIN_NOT_INSTALL)); + } + })); + h.screen.mandatory.chromeMediaSourceId = K, YC(m, yield navigator.mediaDevices.getUserMedia({ video: { mandatory: h.screen.mandatory } })); + } else if (p.getDisplayMedia) { + var T; + h.screen.mediaSource && FJ(h.screen.mediaSource); + const K = { width: h.screen.width, height: h.screen.height, frameRate: h.screen.frameRate, displaySurface: (T = h.screen.displaySurface) !== null && T !== void 0 ? T : h.screen.mediaSource === "screen" ? "monitor" : h.screen.mediaSource }, { selfBrowserSurface: q, surfaceSwitching: ue, systemAudio: oe } = h.screen, he = { selfBrowserSurface: q, surfaceSwitching: ue, systemAudio: oe }; + !q && delete he.selfBrowserSurface, !ue && delete he.surfaceSwitching, !oe && delete he.systemAudio, ie.debug("[".concat(s, "] getDisplayMedia:"), JSON.stringify({ video: K, audio: !!h.screenAudio, controls: he })); + const Ce = yield navigator.mediaDevices.getDisplayMedia(function(ke) { + for (var Ge = 1; Ge < arguments.length; Ge++) { + var tt = arguments[Ge] != null ? arguments[Ge] : {}; + Ge % 2 ? KJ(Object(tt), !0).forEach(function(Ye) { + Z(ke, Ye, tt[Ye]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(ke, Object.getOwnPropertyDescriptors(tt)) : KJ(Object(tt)).forEach(function(Ye) { + Object.defineProperty(ke, Ye, Object.getOwnPropertyDescriptor(tt, Ye)); + }); + } + return ke; + }({ video: K, audio: !!h.screenAudio }, he)); + YC(m, Ce); + } else { + if (!qi()) + throw ie.error("[".concat(s, "] This browser does not support screenSharing")), new mt(_e.NOT_SUPPORTED, "This browser does not support screen sharing"); + { + h.screen.mediaSource && FJ(h.screen.mediaSource); + const K = { video: { mediaSource: h.screen.mediaSource, width: h.screen.width, height: h.screen.height, frameRate: h.screen.frameRate } }; + ie.debug("[".concat(s, "] getUserMedia: ").concat(JSON.stringify(K))), YC(m, yield navigator.mediaDevices.getUserMedia(K)); + } + } + var D, k; + if (!h.video && !h.audio) + return m; + let N = { video: h.video, audio: h.audio }, U = Le("MEDIA_DEVICE_CONSTRAINTS"); + if (U) + try { + typeof U == "string" && (U = JSON.parse(U)), N = Aj(N, U); + } catch (K) { + } + ie.debug("[".concat(s, "] GetUserMedia"), JSON.stringify(N)), yi(); + let V, G = null; + (ks() || Rl() || JO()) && (G = yield A5.lock()); + try { + V = yield navigator.mediaDevices.getUserMedia(N); + } catch (K) { + throw G && G(), K; + } + return N.audio && (ZJ = !0), N.video && (qJ = !0), YC(m, V), G && G(), m; + }); + } + function OM(h, s) { + switch (h) { + case "Starting video failed": + case "OverconstrainedError": + case "TrackStartError": + return new mt(_e.MEDIA_OPTION_INVALID, "".concat(h, ": ").concat(s)); + case "NotFoundError": + case "DevicesNotFoundError": + return new mt(_e.DEVICE_NOT_FOUND, "".concat(h, ": ").concat(s)); + case "NotSupportedError": + return new mt(_e.NOT_SUPPORTED, "".concat(h, ": ").concat(s)); + case "NotReadableError": + return new mt(_e.NOT_READABLE, "".concat(h, ": ").concat(s)); + case "InvalidStateError": + case "NotAllowedError": + case "PERMISSION_DENIED": + case "PermissionDeniedError": + return new mt(_e.PERMISSION_DENIED, "".concat(h, ": ").concat(s)); + case "ConstraintNotSatisfiedError": + return new mt(_e.CONSTRAINT_NOT_SATISFIED, "".concat(h, ": ").concat(s)); + default: + return ie.error("getUserMedia unexpected error", h), new mt(_e.UNEXPECTED_ERROR, "".concat(h, ": ").concat(s)); + } + } + function YC(h, s) { + const c = h.getVideoTracks()[0], p = h.getAudioTracks()[0], m = s.getVideoTracks()[0], T = s.getAudioTracks()[0]; + T && (p && h.removeTrack(p), h.addTrack(T)), m && (c && h.removeTrack(c), h.addTrack(m)); + } + const ch = new class extends Ra { + get state() { + return this._state; + } + set state(h) { + h !== this._state && (this.emit(lm.STATE_CHANGE, h), this._state = h); + } + constructor() { + super(), Z(this, "_state", xS.IDLE), Z(this, "isAccessMicrophonePermission", !1), Z(this, "isAccessCameraPermission", !1), Z(this, "lastAccessMicrophonePermission", !1), Z(this, "lastAccessCameraPermission", !1), Z(this, "checkdeviceMatched", !1), Z(this, "deviceInfoMap", /* @__PURE__ */ new Map()), this.init().then(() => { + navigator.mediaDevices.addEventListener && navigator.mediaDevices.addEventListener("devicechange", this.updateDevicesInfo.bind(this)), window.setInterval(() => { + (Le("ENUMERATE_DEVICES_INTERVAL") || (QO() || qO() === Zo.HARMONY_OS) && Zy()) && this.updateDevicesInfo(); + }, Le("ENUMERATE_DEVICES_INTERVAL_TIME")); + }).catch((h) => ie.error(h.toString())); + } + enumerateDevices(c, p) { + return ye(this, arguments, function* (h, s) { + let m = arguments.length > 2 && arguments[2] !== void 0 && arguments[2]; + if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) + return new mt(_e.NOT_SUPPORTED, "enumerateDevices() not supported.").throw(); + const T = yield navigator.mediaDevices.enumerateDevices(), D = this.checkMediaDeviceInfoIsOk(T); + let k = !this.isAccessMicrophonePermission && h, N = !this.isAccessCameraPermission && s; + D.audio && (k = !1), D.video && (N = !1); + let U = null, V = null, G = null; + if (!m && (k || N)) { + if (A5.isLocked && (ie.debug("[device manager] wait GUM lock"), (yield A5.lock())(), ie.debug("[device manager] GUM unlock")), ZJ && (k = !1, this.isAccessMicrophonePermission = !0), qJ && (N = !1, this.isAccessCameraPermission = !0), ie.debug("[device manager] check media device permissions", h, s, k, N), k && N) { + try { + G = yield navigator.mediaDevices.getUserMedia({ audio: !0, video: !0 }); + } catch (K) { + const q = OM(K.name || K.code || K, K.message); + if (q.code === _e.PERMISSION_DENIED) + throw q; + ie.warning("getUserMedia failed in getDevices", q); + } + this.isAccessCameraPermission = !0, this.isAccessMicrophonePermission = !0; + } else if (k) { + try { + U = yield navigator.mediaDevices.getUserMedia({ audio: h }); + } catch (K) { + const q = OM(K.name || K.code || K, K.message); + if (q.code === _e.PERMISSION_DENIED) + throw q; + ie.warning("getUserMedia failed in getDevices", q); + } + this.isAccessMicrophonePermission = !0; + } else if (N) { + try { + V = yield navigator.mediaDevices.getUserMedia({ video: s }); + } catch (K) { + const q = OM(K.name || K.code || K, K.message); + if (q.code === _e.PERMISSION_DENIED) + throw q; + ie.warning("getUserMedia failed in getDevices", q); + } + this.isAccessCameraPermission = !0; + } + ie.debug("[device manager] mic permission", h, "cam permission", s); + } + try { + const K = yield navigator.mediaDevices.enumerateDevices(); + return U && U.getTracks().forEach((q) => q.stop()), V && V.getTracks().forEach((q) => q.stop()), G && G.getTracks().forEach((q) => q.stop()), U = null, V = null, G = null, K; + } catch (K) { + return U && U.getTracks().forEach((q) => q.stop()), V && V.getTracks().forEach((q) => q.stop()), G && G.getTracks().forEach((q) => q.stop()), U = null, V = null, G = null, new mt(_e.ENUMERATE_DEVICES_FAILED, K.toString()).throw(); + } + }); + } + getRecordingDevices() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 && arguments[0]; + return (yield this.enumerateDevices(!0, !1, h)).filter((s) => s.kind === "audioinput"); + }); + } + getCamerasDevices() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 && arguments[0]; + return (yield this.enumerateDevices(!1, !0, h)).filter((s) => s.kind === "videoinput"); + }); + } + getSpeakers() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 && arguments[0]; + return (yield this.enumerateDevices(!0, !1, h)).filter((s) => s.kind === "audiooutput"); + }); + } + searchDeviceIdByName(h) { + let s = null; + return this.deviceInfoMap.forEach((c) => { + c.device.label === h && (s = c.device.deviceId); + }), s; + } + getDeviceById(h) { + return ye(this, null, function* () { + const s = (yield this.enumerateDevices(!0, !0, !0)).find((c) => c.deviceId === h); + if (!s) + throw new mt(_e.DEVICE_NOT_FOUND, "deviceId: ".concat(h)); + return s; + }); + } + init() { + return ye(this, null, function* () { + this.state = xS.INITING; + try { + yield this.updateDevicesInfo(), this.state = xS.INITEND; + } catch (h) { + throw ie.warning("Device Detection functionality cannot start properly.", h.toString()), this.state = xS.IDLE, !(typeof isSecureContext == "boolean" ? isSecureContext : location.protocol === "https:" || location.protocol === "file:" || location.hostname === "localhost" || location.hostname === "127.0.0.1" || location.hostname === "::1") && new mt(_e.WEB_SECURITY_RESTRICT, "Your context is limited by web security, please try using https protocol or localhost.").throw(), h; + } + }); + } + updateDevicesInfo() { + return ye(this, null, function* () { + const h = yield this.enumerateDevices(!0, !0, !0), s = Date.now(), c = []; + if (h[0] && h[0].label && this.checkdeviceMatched === !1) { + this.checkdeviceMatched = !0; + const m = h.find((D) => D.kind === "audioinput" && D.deviceId === "default"), T = h.find((D) => D.kind === "audiooutput" && D.deviceId === "default"); + m && T ? T.groupId === m.groupId ? ie.debug("[device-check] default input ".concat(m.label, " and output ").concat(T.label, " is the same group")) : ie.warning("[device-check] default input ".concat(m.label, " and output ").concat(T.label, " is not the same group")) : ie.debug("[device-check] default input or output not found"); + } + const p = this.checkMediaDeviceInfoIsOk(h); + if (h.forEach((m) => { + if (!m.deviceId) + return; + const T = this.deviceInfoMap.get("".concat(m.kind, "_").concat(m.deviceId)); + if ((T ? T.state : "INACTIVE") !== "ACTIVE") { + const D = { initAt: s, updateAt: s, device: m, state: "ACTIVE" }; + this.deviceInfoMap.set("".concat(m.kind, "_").concat(m.deviceId), D), c.push(D); + } + T && (T.updateAt = s); + }), this.deviceInfoMap.forEach((m, T) => { + m.state === "ACTIVE" && m.updateAt !== s && (m.state = "INACTIVE", c.push(m)); + }), this.state !== xS.INITEND) + return p.audio && (this.lastAccessMicrophonePermission = !0, this.isAccessMicrophonePermission = !0), void (p.video && (this.lastAccessCameraPermission = !0, this.isAccessCameraPermission = !0)); + c.forEach((m) => { + switch (m.device.kind) { + case "audioinput": + this.lastAccessMicrophonePermission && this.isAccessMicrophonePermission && this.emit(lm.RECORDING_DEVICE_CHANGED, m); + break; + case "videoinput": + this.lastAccessCameraPermission && this.isAccessCameraPermission && this.emit(lm.CAMERA_DEVICE_CHANGED, m); + break; + case "audiooutput": + this.lastAccessMicrophonePermission && this.isAccessMicrophonePermission && this.emit(lm.PLAYOUT_DEVICE_CHANGED, m); + } + }), p.audio && (this.lastAccessMicrophonePermission = !0, this.isAccessMicrophonePermission = !0), p.video && (this.lastAccessCameraPermission = !0, this.isAccessCameraPermission = !0); + }); + } + checkMediaDeviceInfoIsOk(h) { + const s = h.filter((m) => m.kind === "audioinput"), c = h.filter((m) => m.kind === "videoinput"), p = { audio: !1, video: !1 }; + for (const m of s) + if (m.label && m.deviceId) { + p.audio = !0; + break; + } + for (const m of c) + if (m.label && m.deviceId) { + p.video = !0; + break; + } + return p; + } + }(); + let R5 = !1; + const uh = new class extends Ra { + constructor() { + super(...arguments), Z(this, "onAutoplayFailed", void 0), Z(this, "onAudioAutoplayFailed", void 0); + } + }(); + function JJ() { + if (yi(), !R5) { + const h = (s) => { + s.preventDefault(), R5 = !1, Ex() ? document.body.removeEventListener("click", h, !0) : (document.body.removeEventListener("touchstart", h, !0), document.body.removeEventListener("mousedown", h, !0)); + }; + R5 = !0, Ex() ? document.body.addEventListener("click", h, !0) : (document.body.addEventListener("touchstart", h, !0), document.body.addEventListener("mousedown", h, !0)), ie.info("detect media autoplay failed, document: https://docs.agora.io/cn/Voice/autoplay_policy_web_ng?platform=Web"), uh.onAutoplayFailed ? uh.onAutoplayFailed() : uh.onAudioAutoplayFailed ? ie.warning(`AgoraRTC.onAudioAutoplayFailed has been deprecated in favor of AgoraRTC.onAutoplayFailed. + + Please refer to the Agora document to migrate the newer API, https://docs.agora.io/en/Voice/autoplay_policy_web_ng?platform=Web .`) : ie.warning(`We have detected a media autoplay failed event, and found out that you haven't implemented AgoraRTC.onAutoplayFailed callback yet. + + It will cause audio/video element not playing automatically on some browsers without user interaction, possibly hurting user experiences. + + Please refer to the Agora document to properly handle autoplay failed event, https://docs.agora.io/en/Voice/autoplay_policy_web_ng?platform=Web .`), uh.emit("autoplay-failed"); + } + } + function QJ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function eQ(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? QJ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : QJ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function tQ(h, s, c, p) { + if (!h) + return; + const m = vr.getBaseInfoBySessionId(h); + if (!m) + return; + const T = m.info, D = Date.now(), k = eQ(eQ({}, T), {}, { vid: T.vid === void 0 ? 0 : Number(T.vid), lts: D, elapse: D - m.startTime, cbRegistered: uh.onAutoplayFailed || uh.onAudioAutoplayFailed ? 1 : -1, errorMsg: c, mediaType: s, trackId: p, extend: void 0 }); + vr.send({ type: _a.AUTOPLAY_FAILED, data: k }, !0); + } + const mNe = ["play", "playing", "loadeddata", "canplay", "pause", "stalled", "suspend", "waiting", "abort", "emptied", "ended", "error"], hc = new class { + constructor() { + Z(this, "onAutoplayFailed", void 0), Z(this, "elementMap", /* @__PURE__ */ new Map()), Z(this, "elementStateMap", /* @__PURE__ */ new Map()), Z(this, "elementsNeedToResume", []), Z(this, "sinkIdMap", /* @__PURE__ */ new Map()), Z(this, "autoResumeAfterInterruption", (h) => { + Array.from(this.elementMap.entries()).forEach((s) => { + let [c, p] = s; + const m = this.elementStateMap.get(c), T = p.srcObject.getAudioTracks()[0], D = T && T.readyState; + if (ie.debug("resume after interrupted, ele: ".concat(m, " audio: ").concat(D, " ").concat(h)), D === "live") { + if (h) + return p.pause(), void p.play(); + if ($i.curState === "running") + return RC() ? (p.pause(), void p.play()) : void (m && m === "paused" && p.play()); + } + }); + }), Z(this, "autoResumeAfterInterruptionOnIOS15_16", () => { + Array.from(this.elementMap.entries()).forEach((h) => { + let [s, c] = h; + const p = c.srcObject.getAudioTracks()[0]; + p && p.readyState === "live" && (ie.debug("auto resume after interruption inside autoResumeAfterInterruptionOnIOS15"), c.pause(), c.play()); + }); + }), this.autoResumeAudioElement(), $i.on(ds.IOS_INTERRUPTION_END, this.autoResumeAfterInterruption), $i.on(ds.IOS_15_16_INTERRUPTION_END, this.autoResumeAfterInterruptionOnIOS15_16), $i.on(ds.STATE_CHANGE, () => { + Rl() && $i.prevState === "suspended" && $i.curState === "running" && this.autoResumeAfterInterruption(); + }); + } + setSinkID(h, s) { + return ye(this, null, function* () { + const c = this.elementMap.get(h); + if (this.sinkIdMap.set(h, s), c) + try { + yield c.setSinkId(s); + } catch (p) { + throw new mt(_e.PERMISSION_DENIED, "can not set sink id: " + p.toString()); + } + }); + } + play(h, s, c, p) { + if (this.elementMap.has(s)) + return; + const m = document.createElement("audio"); + m.autoplay = !0, m.srcObject = new MediaStream([h]), this.bindAudioElementEvents(s, m), this.elementMap.set(s, m), this.elementStateMap.set(s, fl.INIT), this.setVolume(s, c); + const T = this.sinkIdMap.get(s); + if (T) + try { + m.setSinkId(T).catch((k) => { + ie.warning("[".concat(s, "] set sink id failed"), k.toString()); + }); + } catch (k) { + ie.warning("[".concat(s, "] set sink id failed"), k.toString()); + } + const D = m.play(); + D && D.then && D.catch((k) => { + p && tQ(p, "audio", k.message, s), ie.warning("audio element play warning", k.toString()), this.elementMap.has(s) && k.name === "NotAllowedError" && (ie.warning("detected audio element autoplay failed"), this.elementsNeedToResume.push(m), rM(() => { + this.onAutoplayFailed && this.onAutoplayFailed(), JJ(); + })); + }); + } + updateTrack(h, s) { + const c = this.elementMap.get(h); + c && (c.srcObject = new MediaStream([s])); + } + isPlaying(h) { + return this.elementMap.has(h) && this.elementStateMap.get(h) === "playing"; + } + setVolume(h, s) { + const c = this.elementMap.get(h); + c && (s = Math.max(0, Math.min(100, s)), c.volume = s / 100); + } + stop(h) { + const s = this.elementMap.get(h); + if (this.sinkIdMap.delete(h), !s) + return; + const c = this.elementsNeedToResume.indexOf(s); + this.elementsNeedToResume.splice(c, 1), s.srcObject = null, s.remove(), this.elementMap.delete(h), this.elementStateMap.delete(h); + } + bindAudioElementEvents(h, s) { + mNe.forEach((c) => { + s.addEventListener(c, (p) => { + const m = this.elementStateMap.get(h), T = p.type === "pause" ? "paused" : p.type; + if (ie.debug("[".concat(h, "] audio-element-status change ").concat(m, " => ").concat(T)), p.type === "error") { + const D = s == null ? void 0 : s.error; + D && ie.error("[".concat(h, "] media error, code: ").concat(D.code, ", message: ").concat(D.message)); + } + this.elementStateMap.set(h, T); + }); + }); + } + getPlayerState(h) { + return this.elementStateMap.get(h) || "uninit"; + } + autoResumeAudioElement() { + const h = () => { + this.elementsNeedToResume.forEach((s) => { + s.play().then((c) => { + ie.debug("Auto resume audio element success"); + }).catch((c) => { + ie.warning("Auto resume audio element failed!", c); + }); + }), this.elementsNeedToResume = []; + }; + new ot((s) => { + document.body ? s() : window.addEventListener("load", () => s()); + }).then(() => { + Ex() ? document.body.addEventListener("click", h, !0) : (document.body.addEventListener("touchstart", h, !0), document.body.addEventListener("mousedown", h, !0)); + }); + } + }(); + function ao() { + return function(h, s, c) { + const p = c.value; + return typeof p == "function" && (c.value = function() { + this._isClosed && new mt(_e.INVALID_OPERATION, "[".concat(this.getTrackId(), "] cannot operate a closed track")).print("warning", ie); + for (var m = arguments.length, T = new Array(m), D = 0; D < m; D++) + T[D] = arguments[D]; + const k = p.apply(this, T); + return k instanceof ot ? new ot((N, U) => { + k.then(N).catch(U); + }) : k; + }), c; + }; + } + function rQ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function MM(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? rQ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : rQ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class nQ extends Ra { + constructor(s) { + super(), Z(this, "name", "VideoProcessorDestination"), Z(this, "ID", "0"), Z(this, "_source", void 0), Z(this, "videoContext", void 0), Z(this, "inputTrack", void 0), this.videoContext = s; + } + get kind() { + return "video"; + } + get enabled() { + return !0; + } + pipe() { + throw new mt(_e.NOT_SUPPORTED, "VideoProcessor cannot pipe to any other Processor"); + } + unpipe() { + throw new mt(_e.NOT_SUPPORTED, "VideoProcessor cannot unpipe to any other Processor"); + } + enable() { + } + disable() { + } + updateInput(s) { + if (s.context !== this.videoContext) + throw new Error(`ProcessorContext passed to VideoTrack.processorDestination doesn't match it's belonging VideoTrack's context. +Probably you are making pipeline like this: +videoTrack1.pipe(processor).pipe(videoTrack2.processorDestination).`); + s.track && s.track !== this.inputTrack && (this.videoContext.chained = !0, this.inputTrack = s.track, this.emit(dl.ON_TRACK, s.track)); + } + reset() { + this.inputTrack = void 0, this.videoContext.chained = !1, this.emit(dl.ON_TRACK, void 0); + } + } + class iQ extends Ra { + set chained(s) { + this._chained = s; + } + get chained() { + return this._chained; + } + constructor(s, c) { + super(), Z(this, "constraintsMap", /* @__PURE__ */ new Map()), Z(this, "statsRegistry", []), Z(this, "usageRegistry", []), Z(this, "trackId", void 0), Z(this, "direction", void 0), Z(this, "_chained", !1), this.trackId = s, this.direction = c; + } + getConstraints() { + return ye(this, null, function* () { + return yield Ro(this, Fc.REQUEST_CONSTRAINTS); + }); + } + requestApplyConstraints(s, c) { + return ye(this, null, function* () { + var p; + return ie.info("processor ".concat(c.name, " requestApplyConstraints for ").concat(this.trackId)), s && this.constraintsMap.set(c, s), Ji(this, Fc.REQUEST_UPDATE_CONSTRAINTS, Array.from(ip(p = this.constraintsMap).call(p))); + }); + } + requestRevertConstraints(s) { + return ye(this, null, function* () { + var c; + if (this.constraintsMap.has(s)) + return ie.info("processor ".concat(s.name, " requestRevertConstraints for ").concat(this.trackId)), this.constraintsMap.delete(s), Ji(this, Fc.REQUEST_UPDATE_CONSTRAINTS, Array.from(ip(c = this.constraintsMap).call(c))); + }); + } + registerStats(s, c, p) { + this.statsRegistry.find((m) => m.processorID === s.ID && m.processorName === s.name && m.type === c) || this.statsRegistry.push({ processorName: s.name, processorID: s.ID, type: c, cb: p }); + } + unregisterStats(s, c) { + const p = this.statsRegistry.findIndex((m) => m.processorID === s.ID && m.processorName === s.name && m.type === c); + p !== -1 && this.statsRegistry.splice(p, 1); + } + gatherStats() { + const s = []; + for (const { processorID: c, processorName: p, type: m, cb: T } of this.statsRegistry) + try { + const D = T(); + s.push({ processorID: c, processorName: p, type: m, stats: D }); + } catch (D) { + ie.error(new mt(_e.UNEXPECTED_ERROR, D.message)); + } + return s; + } + registerUsage(s, c) { + this.usageRegistry.find((p) => p.processorID === s.ID && p.processorName === s.name) || this.usageRegistry.push({ processorID: s.ID, processorName: s.name, cb: c }); + } + unregisterUsage(s) { + const c = this.usageRegistry.findIndex((p) => p.processorID === s.ID && p.processorName === s.name); + c !== -1 && this.usageRegistry.splice(c, 1); + } + gatherUsage() { + return ye(this, null, function* () { + const s = []; + if (!this.chained) + return []; + for (const { cb: c } of this.usageRegistry) + try { + let p = c(); + p instanceof ot && (p = yield p), s.push(MM(MM({}, p), {}, { direction: this.direction })); + } catch (p) { + ie.error("gather extension usage error", p); + } + return s; + }); + } + getDirection() { + return this.direction; + } + } + class aQ extends Ra { + constructor(s) { + super(), Z(this, "name", "AudioProcessorDestination"), Z(this, "ID", "0"), Z(this, "inputTrack", void 0), Z(this, "inputNode", void 0), Z(this, "audioProcessorContext", void 0), Z(this, "_source", void 0), this.audioProcessorContext = s; + } + get kind() { + return "audio"; + } + get enabled() { + return !0; + } + pipe() { + throw new mt(_e.NOT_SUPPORTED, "AudioProcessorDestination cannot pipe to any other Processor"); + } + unpipe() { + throw new mt(_e.NOT_SUPPORTED, "AudioProcessor cannot unpipe to any other Processor"); + } + enable() { + } + disable() { + } + reset() { + this.inputTrack = void 0, this.inputNode = void 0, this.audioProcessorContext.chained = !1, this.emit(dl.ON_TRACK, void 0), this.emit(dl.ON_NODE, void 0); + } + updateInput(s) { + if (s.context !== this.audioProcessorContext) + throw new Error(`ProcessorContext passed to AudioTrack.processorDestination doesn't match it's belonging AudioTrack's context. + Probably you are making pipeline like this: audioTrack1.pipe(processor).pipe(audioTrack2.processorDestination).`); + s.track && this.inputTrack !== s.track && (this.audioProcessorContext.chained = !0, this.inputTrack = s.track, this.emit(dl.ON_TRACK, this.inputTrack)), s.node && this.inputNode !== s.node && (this.audioProcessorContext.chained = !0, this.inputNode = s.node, this.emit(dl.ON_NODE, this.inputNode)); + } + } + class oQ extends Ra { + set chained(s) { + this._chained = s; + } + get chained() { + return this._chained; + } + constructor(s, c, p) { + super(), Z(this, "constraintsMap", /* @__PURE__ */ new Map()), Z(this, "statsRegistry", []), Z(this, "audioContext", void 0), Z(this, "trackId", void 0), Z(this, "direction", void 0), Z(this, "usageRegistry", []), Z(this, "_chained", !1), this.audioContext = s, this.trackId = c, this.direction = p; + } + getConstraints() { + return ye(this, null, function* () { + return Ro(this, Fc.REQUEST_CONSTRAINTS); + }); + } + getAudioContext() { + return this.audioContext; + } + requestApplyConstraints(s, c) { + return ye(this, null, function* () { + var p; + return ie.info("processor ".concat(c.name, " requestApplyConstraints for ").concat(this.trackId)), s && this.constraintsMap.set(c, s), Ji(this, Fc.REQUEST_UPDATE_CONSTRAINTS, Array.from(ip(p = this.constraintsMap).call(p))); + }); + } + requestRevertConstraints(s) { + return ye(this, null, function* () { + var c; + if (this.constraintsMap.has(s)) + return this.constraintsMap.delete(s), Ji(this, Fc.REQUEST_UPDATE_CONSTRAINTS, Array.from(ip(c = this.constraintsMap).call(c))); + }); + } + registerStats(s, c, p) { + this.statsRegistry.find((m) => m.processorID === s.ID && m.processorName === s.name && m.type === c) || this.statsRegistry.push({ processorName: s.name, processorID: s.ID, type: c, cb: p }); + } + unregisterStats(s, c) { + const p = this.statsRegistry.findIndex((m) => m.processorID === s.ID && m.processorName === s.name && m.type === c); + p !== -1 && this.statsRegistry.splice(p, 1); + } + gatherStats() { + const s = []; + for (const { processorID: c, processorName: p, type: m, cb: T } of this.statsRegistry) + try { + const D = T(); + s.push({ processorID: c, processorName: p, type: m, stats: D }); + } catch (D) { + ie.error(new mt(_e.UNEXPECTED_ERROR, D.message)); + } + return s; + } + registerUsage(s, c) { + this.usageRegistry.find((p) => p.processorID === s.ID && p.processorName === s.name) || this.usageRegistry.push({ processorID: s.ID, processorName: s.name, cb: c }); + } + unregisterUsage(s) { + const c = this.usageRegistry.findIndex((p) => p.processorID === s.ID && p.processorName === s.name); + c !== -1 && this.usageRegistry.splice(c, 1); + } + gatherUsage() { + return ye(this, null, function* () { + const s = []; + if (!this.chained) + return []; + for (const { cb: c } of this.usageRegistry) + try { + let p = c(); + p instanceof ot && (p = yield p), s.push(MM(MM({}, p), {}, { direction: this.direction })); + } catch (p) { + ie.error("gather extension usage error", p); + } + return s; + }); + } + getDirection() { + return this.direction; + } + } + class D5 extends Ra { + get isPlayed() { + return !0; + } + get isFreeze() { + return !1; + } + constructor() { + super(), Z(this, "context", void 0), Z(this, "processSourceNode", void 0), Z(this, "outputTrack", void 0), Z(this, "processedNode", void 0), Z(this, "clonedTrack", void 0), Z(this, "outputNode", void 0), this.outputNode = new yNe(); + } + setVolume() { + } + createOutputTrack() { + throw new mt(_e.NOT_SUPPORTED, "can not create output MediaStreamTrack when WebAudio disabled"); + } + getOriginVolumeLevel() { + return 0; + } + getAccurateVolumeLevel() { + return 0; + } + stopGetAudioBuffer() { + } + startGetAudioBuffer() { + } + play() { + } + stop() { + } + destroy() { + } + updateTrack() { + } + updateOriginTrack() { + } + createMediaStreamSourceNode() { + } + } + class yNe { + disconnect() { + } + connect() { + } + } + function sQ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function O5(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? sQ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : sQ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class Vi extends Xs { + get _source() { + return this.initWebAudio(); + } + set _source(s) { + this._trackSource = s; + } + get processorContext() { + return this._processorContext || (this._processorContext = this.initProcessor().processorContext), this._processorContext; + } + get processorDestination() { + return this._processorDestination || (this._processorDestination = this.initProcessor().processorDestination), this._processorDestination; + } + get isPlaying() { + return this._useAudioElement ? hc.isPlaying(this.getTrackId()) : this._source.isPlayed; + } + get __className__() { + return "LocalAudioTrack"; + } + constructor(s, c, p, m) { + super(s, p), Z(this, "trackMediaType", "audio"), Z(this, "_encoderConfig", void 0), Z(this, "_trackSource", void 0), Z(this, "_enabled", !0), Z(this, "_volume", 100), Z(this, "_useAudioElement", !0), Z(this, "_bypassWebAudio", !1), Z(this, "processor", void 0), Z(this, "_processorContext", void 0), Z(this, "_processorDestination", void 0), Z(this, "_getOriginVolumeLevel", void 0), this._encoderConfig = c, this._getOriginVolumeLevel = !!m, this._trackSource = new D5(), Le("DISABLE_WEBAUDIO") && (this._bypassWebAudio = !0), Le("LOCAL_AUDIO_TRACK_USES_WEB_AUDIO") && (this._useAudioElement = !1), ks() && !sh ? setTimeout(() => this.initWebAudio()) : this.initWebAudio(); + } + setVolume(s) { + Wi(s, "volume", 0, 1e3), this._volume = s, this._source.setVolume(s / 100), this._useAudioElement && hc.setVolume(this.getTrackId(), s); + try { + if (this._bypassWebAudio) + return void ie.debug("[".concat(this.getTrackId(), "] setVolume returned because no pass through WebAudio.")); + const c = this._source.createOutputTrack(); + this._mediaStreamTrack !== c && (this._mediaStreamTrack = c, Ji(this, lr.NEED_REPLACE_TRACK, this).then(() => { + ie.debug("[".concat(this.getTrackId(), "] replace web audio track success")); + }).catch((p) => { + ie.warning("[".concat(this.getTrackId(), "] replace web audio track failed"), p); + })); + } catch (c) { + } + } + getVolumeLevel() { + return this._muted && this.enabled && this._getOriginVolumeLevel ? this._source.getOriginVolumeLevel() : this._source.getAccurateVolumeLevel(); + } + setPlaybackDevice(s) { + return ye(this, null, function* () { + if (!this._useAudioElement || !Jv() && Le("RESTRICTION_SET_PLAYBACK_DEVICE")) + throw new mt(_e.NOT_SUPPORTED, "your browser does not support setting the audio output device"); + yield hc.setSinkID(this.getTrackId(), s); + }); + } + setEnabled(s, c, p) { + return ye(this, null, function* () { + return this._setEnabled(s, c, p); + }); + } + _setEnabled(s, c, p) { + return ye(this, null, function* () { + if (!p) { + if (s === this._enabled) + return; + this.stateCheck("enabled", s); + } + if (ie.info("[".concat(this.getTrackId(), "] start setEnabled"), s), s) { + this._originMediaStreamTrack.enabled = !0; + try { + p || (this._enabled = !0), yield Ji(this, lr.NEED_ENABLE_TRACK, this), ie.info("[".concat(this.getTrackId(), "] setEnabled to ").concat(s, " success")); + } catch (m) { + throw p || (this._enabled = !1), ie.error("[".concat(this.getTrackId(), "] setEnabled to true error"), m.toString()), m; + } + } else { + this._originMediaStreamTrack.enabled = !1, p || (this._enabled = !1); + try { + yield Ji(this, lr.NEED_DISABLE_TRACK, this); + } catch (m) { + throw p || (this._enabled = !0), ie.error("[".concat(this.getTrackId(), "] setEnabled to false error"), m.toString()), m; + } + } + }); + } + setMuted(s) { + return ye(this, null, function* () { + s !== this._muted && (this.stateCheck("muted", s), this._muted = s, this._originMediaStreamTrack.enabled = !s, ie.debug("[".concat(this.getTrackId(), "] start set muted: ").concat(s)), s ? yield Ji(this, lr.NEED_MUTE_TRACK, this) : yield Ji(this, lr.NEED_UNMUTE_TRACK, this)); + }); + } + getStats() { + return kC(() => { + ie.warning("[deprecated] LocalAudioTrack.getStats will be removed in the future, use AgoraRTCClient.getLocalAudioStats instead"); + }, "localAudioTrackGetStatsWarning"), pu(this, lr.GET_STATS) || O5({}, C5); + } + setAudioFrameCallback(s) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 4096; + if (!s) + return this._source.removeAllListeners(Lc.ON_AUDIO_BUFFER), void this._source.stopGetAudioBuffer(); + this._source.startGetAudioBuffer(c), this._source.removeAllListeners(Lc.ON_AUDIO_BUFFER), this._source.on(Lc.ON_AUDIO_BUFFER, (p) => s(p)); + } + play() { + ie.debug("[".concat(this.getTrackId(), "] start audio playback")), this._useAudioElement ? (ie.debug("[".concat(this.getTrackId(), "] start audio playback in element")), hc.play(this._mediaStreamTrack, this.getTrackId(), this._volume)) : this._source.play(); + } + stop() { + ie.debug("[".concat(this.getTrackId(), "] stop audio playback")), this._useAudioElement ? hc.stop(this.getTrackId()) : this._source.stop(); + } + close() { + super.close(), this._processorDestination && this.unbindProcessorDestinationEvents(this._processorDestination), this._processorContext && this.unbindProcessorContextEvents(this._processorContext), this.unpipe(), this._processorDestination && this._processorDestination._source && this._processorDestination._source.unpipe(), this._source.destroy(); + } + _updatePlayerSource() { + let s = !(arguments.length > 0 && arguments[0] !== void 0) || arguments[0]; + ie.debug("[".concat(this.getTrackId(), "] update player source track")), s && this._source.updateTrack(this._mediaStreamTrack), this._useAudioElement && hc.updateTrack(this.getTrackId(), this._mediaStreamTrack); + } + _updateOriginMediaStreamTrack(s, c) { + return ye(this, null, function* () { + this._originMediaStreamTrack !== s && (this._originMediaStreamTrack && (this._originMediaStreamTrack.removeEventListener("ended", this._handleTrackEnded), c && this._originMediaStreamTrack.stop()), s.addEventListener("ended", this._handleTrackEnded), this._originMediaStreamTrack = s, this._muted && (this._originMediaStreamTrack.enabled = !1), this.processor && this._processorContext && this.processor.updateInput({ track: s, context: this._processorContext }), this._mediaStreamTrack !== this._source.outputTrack ? (this._mediaStreamTrack = this._originMediaStreamTrack, this._updatePlayerSource(), yield Ji(this, lr.NEED_REPLACE_TRACK, this)) : this._source.updateTrack(this._originMediaStreamTrack), this._getOriginVolumeLevel && this._source.updateOriginTrack(s)); + }); + } + renewMediaStreamTrack(s) { + return ot.resolve(void 0); + } + pipe(s) { + if (this._bypassWebAudio) + throw new mt(_e.INVALID_OPERATION, "Can not process AudioTrack when bypassWebAudio set to true."); + if (this.processor === s) + return s; + if (s._source) + throw new mt(_e.INVALID_OPERATION, "Processor ".concat(s.name, " already piped, please call unpipe beforehand.")); + return this.unpipe(), this.processor = s, this.processor._source = this, s.updateInput({ track: this._originMediaStreamTrack, node: this._source.processSourceNode, context: this.processorContext }), s; + } + unpipe() { + var s; + if (!this.processor) + return; + const c = this.processor; + (s = this._source.processSourceNode) === null || s === void 0 || s.disconnect(), this.processor._source = !1, this.processor = void 0, c.reset(); + } + bindProcessorDestinationEvents(s) { + s.on(dl.ON_TRACK, (c) => ye(this, null, function* () { + c ? c !== this._mediaStreamTrack && (this._mediaStreamTrack = c, this._updatePlayerSource(!1), this._source.processedNode = this._source.createMediaStreamSourceNode(c), yield Ji(this, lr.NEED_REPLACE_TRACK, this)) : this._mediaStreamTrack !== this._originMediaStreamTrack && (this._mediaStreamTrack = this._originMediaStreamTrack, this._updatePlayerSource(), yield Ji(this, lr.NEED_REPLACE_TRACK, this)); + })), s.on(dl.ON_NODE, (c) => { + this._source.processedNode = c; + }); + } + unbindProcessorDestinationEvents(s) { + s.removeAllListeners(dl.ON_TRACK), s.removeAllListeners(dl.ON_NODE); + } + bindProcessorContextEvents(s) { + s.on(Fc.REQUEST_CONSTRAINTS, (c) => ye(this, null, function* () { + c(this._originMediaStreamTrack.getSettings()); + })); + } + unbindProcessorContextEvents(s) { + s.removeAllListeners(Fc.REQUEST_CONSTRAINTS); + } + initWebAudio() { + return this._trackSource instanceof D5 && (this._trackSource = new GJ(this._mediaStreamTrack, !1, this._getOriginVolumeLevel ? this._mediaStreamTrack : void 0)), this._trackSource; + } + initProcessor() { + const s = new oQ(this._source.context, this.getTrackId(), "local"), c = new aQ(s); + return this._processorContext = s, this._processorDestination = c, this.bindProcessorContextEvents(s), this.bindProcessorDestinationEvents(c), this._source.on(Lc.UPDATE_SOURCE, () => { + this.processor && this.processor.updateInput({ node: this._source.processSourceNode, context: s }); + }), this._useAudioElement && (this._useAudioElement = !1, this.isPlaying && (hc.stop(this.getTrackId()), this._source.play()), Ji(this, lr.NEED_REPLACE_MIXING_TRACK, this).then(() => { + ie.debug("[".concat(this.getTrackId(), "] replace from origin track to web audio track success")); + }).catch((p) => { + ie.warning("[".concat(this.getTrackId(), "] replace from origin track to web audio track failed"), p); + })), { processorContext: s, processorDestination: c }; + } + } + St([Pr({ argsMap: (h, s) => [h.getTrackId(), s], throttleTime: 300 }), ge("design:type", Function), ge("design:paramtypes", [Number]), ge("design:returntype", void 0)], Vi.prototype, "setVolume", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], Vi.prototype, "setPlaybackDevice", null), St([NC("LocalAudioTrack", "_enabledMutex"), Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean, Object, Boolean]), ge("design:returntype", ot)], Vi.prototype, "setEnabled", null), St([NC("LocalAudioTrack", "_enabledMutex"), Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean]), ge("design:returntype", ot)], Vi.prototype, "setMuted", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", Object)], Vi.prototype, "getStats", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", [Object, Number]), ge("design:returntype", void 0)], Vi.prototype, "setAudioFrameCallback", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Vi.prototype, "play", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Vi.prototype, "stop", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Vi.prototype, "close", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s.name] }), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", Object)], Vi.prototype, "pipe", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Vi.prototype, "unpipe", null); + class cm extends Vi { + get __className__() { + return "MicrophoneAudioTrack"; + } + constructor(s, c, p, m) { + super(s, c.encoderConfig ? DM(c.encoderConfig) : {}, m, Le("GET_VOLUME_OF_MUTED_AUDIO_TRACK")), Z(this, "_config", void 0), Z(this, "_deviceName", "default"), Z(this, "_constraints", void 0), Z(this, "_originalConstraints", void 0), Z(this, "_enabled", !0), this._config = c, this._constraints = p, this._originalConstraints = p, this._deviceName = s.label, typeof c.bypassWebAudio == "boolean" && (this._bypassWebAudio = c.bypassWebAudio), (RC() || bj()) && $i.bindInterruptDetectorTrack(this); + } + setDevice(s) { + return ye(this, null, function* () { + if (ie.info("[".concat(this.getTrackId(), "] start set device to ").concat(s)), this._enabled) + try { + const c = yield ch.getDeviceById(s), p = {}; + p.audio = O5({}, this._constraints), p.audio.deviceId = { exact: s }, this._originMediaStreamTrack.stop(); + let m = null; + try { + m = yield lh(p, this.getTrackId()); + } catch (T) { + throw ie.error("[".concat(this.getTrackId(), "] setDevice failed"), T.toString()), m = yield lh({ audio: this._constraints }, this.getTrackId()), yield this._updateOriginMediaStreamTrack(m.getAudioTracks()[0], !1), T; + } + yield this._updateOriginMediaStreamTrack(m.getAudioTracks()[0], !1), this._deviceName = c.label, this._config.microphoneId = s, this._constraints.deviceId = { exact: s }; + } catch (c) { + throw ie.error("[".concat(this.getTrackId(), "] setDevice error"), c.toString()), c; + } + else + try { + const c = yield ch.getDeviceById(s); + this._deviceName = c.label, this._config.microphoneId = s, this._constraints.deviceId = { exact: s }; + } catch (c) { + throw ie.error("[".concat(this.getTrackId(), "] setDevice error"), c.toString()), c; + } + ie.info("[".concat(this.getTrackId(), "] set device to ").concat(s, " success")); + }); + } + setEnabled(s, c, p) { + return ye(this, null, function* () { + if (c) + return ie.debug("[".concat(this.getTrackId(), "] setEnabled false (do not close microphone)")), yield cV(cm.prototype, this, "_setEnabled").call(this, s); + if (!p) { + if (s === this._enabled) + return; + this.stateCheck("enabled", s); + } + if (ie.info("[".concat(this.getTrackId(), "] start setEnabled"), s), !s) { + var m; + this._originMediaStreamTrack.onended = null, this._originMediaStreamTrack.stop(), (m = this._source.clonedTrack) === null || m === void 0 || m.stop(), p || (this._enabled = !1); + try { + yield Ji(this, lr.NEED_DISABLE_TRACK, this); + } catch (k) { + throw ie.error("[".concat(this.getTrackId(), "] setEnabled false failed"), k.toString()), k; + } + return; + } + const T = O5({}, this._constraints), D = ch.searchDeviceIdByName(this._deviceName); + D && !T.deviceId && (T.deviceId = D); + try { + p || (this._enabled = !0); + const k = yield lh({ audio: this._constraints }, this.getTrackId()); + yield this._updateOriginMediaStreamTrack(k.getAudioTracks()[0], !1), yield Ji(this, lr.NEED_ENABLE_TRACK, this); + } catch (k) { + throw p || (this._enabled = !1), ie.error("[".concat(this.getTrackId(), "] setEnabled true failed"), k.toString()), k; + } + ie.info("[".concat(this.getTrackId(), "] setEnabled success")); + }); + } + close() { + super.close(), (RC() || bj()) && $i.unbindInterruptDetectorTrack(this); + } + onTrackEnded() { + if ((Rl() || vg()) && this._enabled && !this._isClosed && $i.duringInterruption) { + const s = () => ye(this, null, function* () { + $i.off(ds.IOS_INTERRUPTION_END, s), this._enabled && !this._isClosed && (ie.debug("[".concat(this.getTrackId(), "] try capture microphone media device for interrupted iOS device.")), yield this.setEnabled(!1), yield this.setEnabled(!0)); + }); + $i.on(ds.IOS_INTERRUPTION_END, s); + } else + ie.debug("[".concat(this.getTrackId(), "] track ended")), this.safeEmit(c_.TRACK_ENDED); + } + renewMediaStreamTrack(s) { + return ye(this, null, function* () { + const c = s || this._constraints, p = ch.searchDeviceIdByName(this._deviceName); + if (p && !c.deviceId && (c.deviceId = p), this._constraints = c, this._enabled) { + this._originMediaStreamTrack.stop(); + const m = yield lh({ audio: this._constraints }, this.getTrackId()); + yield this._updateOriginMediaStreamTrack(m.getAudioTracks()[0], !0); + } + }); + } + bindProcessorContextEvents(s) { + super.bindProcessorContextEvents(s), s.on(Fc.REQUEST_UPDATE_CONSTRAINTS, (c, p, m) => ye(this, null, function* () { + try { + const T = Object.assign({}, this._originalConstraints, ...c); + yield this.renewMediaStreamTrack(T), p(); + } catch (T) { + m(T); + } + })); + } + unbindProcessorContextEvents(s) { + super.unbindProcessorContextEvents(s), s.removeAllListeners(Fc.REQUEST_UPDATE_CONSTRAINTS); + } + } + St([Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], cm.prototype, "setDevice", null), St([NC("MicrophoneAudioTrack", "_enabledMutex"), Pr({ argsMap: (h, s, c) => [h.getTrackId(), s, c] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean, Boolean, Boolean]), ge("design:returntype", ot)], cm.prototype, "setEnabled", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], cm.prototype, "close", null); + class h_ extends Vi { + get __className__() { + return "BufferSourceAudioTrack"; + } + constructor(s, c, p, m) { + super(c.createOutputTrack(), p, m), Z(this, "source", void 0), Z(this, "_bufferSource", void 0), this._useAudioElement = !1, this.source = s, this._bufferSource = c, this._bufferSource.on(Lc.AUDIO_SOURCE_STATE_CHANGE, (T) => { + this.safeEmit(c_.SOURCE_STATE_CHANGE, T); + }); + try { + this._mediaStreamTrack = this._source.createOutputTrack(); + } catch (T) { + } + } + get currentState() { + return this._bufferSource.currentState; + } + get duration() { + return this._bufferSource.duration; + } + get playbackSpeed() { + return this._bufferSource.playbackSpeed; + } + getCurrentTime() { + return this._bufferSource.currentTime; + } + startProcessAudioBuffer(s) { + s && this._bufferSource.updateOptions(s), this._bufferSource.startProcessAudioBuffer(); + } + pauseProcessAudioBuffer() { + this._bufferSource.pauseProcessAudioBuffer(); + } + seekAudioBuffer(s) { + this._bufferSource.seekAudioBuffer(s); + } + resumeProcessAudioBuffer() { + this._bufferSource.resumeProcessAudioBuffer(); + } + stopProcessAudioBuffer() { + this._bufferSource.stopProcessAudioBuffer(); + } + close() { + this.source = null, this._bufferSource.destroy(), super.close(); + } + setAudioBufferPlaybackSpeed(s) { + Wi(s, "speed", 0), this._bufferSource.setAudioBufferPlaybackSpeed(s); + } + } + St([Pr({ argsMap: (h, s) => [h.getTrackId(), s, h.duration] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", void 0)], h_.prototype, "startProcessAudioBuffer", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], h_.prototype, "pauseProcessAudioBuffer", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Number]), ge("design:returntype", void 0)], h_.prototype, "seekAudioBuffer", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], h_.prototype, "resumeProcessAudioBuffer", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], h_.prototype, "stopProcessAudioBuffer", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], h_.prototype, "close", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Number]), ge("design:returntype", void 0)], h_.prototype, "setAudioBufferPlaybackSpeed", null); + class Uo extends Vi { + get __className__() { + return "MixingAudioTrack"; + } + get isActive() { + for (const s of this.trackList) + if (s._enabled && !s._isClosed && !s.muted) + return !0; + return !1; + } + constructor() { + const s = GC().createMediaStreamDestination(); + super(s.stream.getAudioTracks()[0], void 0, ra(8, "track-mix-")), Z(this, "trackList", void 0), Z(this, "destNode", void 0), this._useAudioElement = !1; + try { + this._mediaStreamTrack = this._source.createOutputTrack(); + } catch (c) { + } + this.destNode = s, this.trackList = []; + } + hasAudioTrack(s) { + return this.trackList.indexOf(s) !== -1; + } + addAudioTrack(s) { + this.trackList.indexOf(s) === -1 ? (ie.debug("add ".concat(s.getTrackId(), " to mixing track")), s._source.outputNode.connect(this.destNode), this.trackList.push(s), this.updateEncoderConfig()) : ie.debug("track ".concat(s.getTrackId(), " is already added")); + } + removeAudioTrack(s) { + if (this.trackList.indexOf(s) !== -1) { + ie.debug("remove ".concat(s.getTrackId(), " from mixing track")); + try { + s._source.outputNode.disconnect(this.destNode); + } catch (c) { + } + tM(this.trackList, s), this.updateEncoderConfig(); + } + } + updateEncoderConfig() { + const s = {}; + this.trackList.forEach((c) => { + c._encoderConfig && ((c._encoderConfig.bitrate || 0) > (s.bitrate || 0) && (s.bitrate = c._encoderConfig.bitrate), (c._encoderConfig.sampleRate || 0) > (s.sampleRate || 0) && (s.sampleRate = c._encoderConfig.sampleRate), (c._encoderConfig.sampleSize || 0) > (s.sampleSize || 0) && (s.sampleSize = c._encoderConfig.sampleSize), c._encoderConfig.stereo && (s.stereo = !0)); + }), this._encoderConfig = s; + } + _updateRtpTransceiver(s) { + this._rtpTransceiver !== s && (this._rtpTransceiver = s, this.trackList.forEach((c) => { + c instanceof Uo ? c.emit(l_.TRANSCEIVER_UPDATED, s) : c._updateRtpTransceiver(s); + })); + } + } + function kM(h) { + const s = {}; + h.facingMode && (s.facingMode = h.facingMode), h.cameraId && (s.deviceId = { exact: h.cameraId }); + const c = Eg(h.encoderConfig); + return c.width != null && (s.width = c.width), c.height != null && (s.height = c.height), !jZ() && c.frameRate && (s.frameRate = c.frameRate), yi().name === xi.EDGE && typeof s.frameRate == "object" && (s.frameRate.max = 60), qi() && (s.frameRate = { ideal: 30, max: 30 }), s; + } + function lQ(h) { + const s = {}; + if (jZ() || (h.AGC !== void 0 && (s.autoGainControl = h.AGC), h.AEC !== void 0 && (s.echoCancellation = h.AEC), h.ANS !== void 0 && (s.noiseSuppression = h.ANS, Jv() && h.ANS && (s.googHighpassFilter = h.ANS))), h.encoderConfig) { + const c = DM(h.encoderConfig); + s.channelCount = c.stereo ? 2 : 1, s.sampleRate = c.sampleRate, s.sampleSize = c.sampleSize; + } + return h.microphoneId && (s.deviceId = { exact: h.microphoneId }), QO() && (s.sampleRate = void 0), s; + } + class _Ne extends WJ { + set currentState(s) { + s !== this._currentState && (this._currentState = s, this.safeEmit(Lc.AUDIO_SOURCE_STATE_CHANGE, this._currentState)); + } + get currentState() { + return this._currentState; + } + constructor(s) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + super(), Z(this, "audioBuffer", void 0), Z(this, "sourceNode", void 0), Z(this, "startPlayTime", 0), Z(this, "startPlayOffset", 0), Z(this, "pausePlayTime", 0), Z(this, "options", void 0), Z(this, "currentLoopCount", 0), Z(this, "currentPlaybackSpeed", 100), Z(this, "_currentState", "stopped"), this.audioBuffer = s, this.options = c, this.startPlayOffset = this.options.startPlayTime || 0; + } + createWebAudioDiagram() { + return this.context.createGain(); + } + get duration() { + return this.audioBuffer ? this.audioBuffer.duration : 0; + } + get playbackSpeed() { + return this.currentPlaybackSpeed; + } + get currentTime() { + return this.audioBuffer ? this.currentState === "stopped" ? 0 : this.currentState === "paused" ? this.pausePlayTime : ((this.context.currentTime - this.startPlayTime) * (this.playbackSpeed / 100) + this.startPlayOffset) % this.audioBuffer.duration : 0; + } + updateOptions(s) { + this.currentState === "stopped" ? (this.options = s, this.startPlayOffset = this.options.startPlayTime || 0) : ie.warning("can not set audio source options"); + } + startProcessAudioBuffer() { + this.sourceNode && this.stopProcessAudioBuffer(), this.sourceNode = this.createSourceNode(), this.startSourceNode(), this.currentState = "playing"; + } + pauseProcessAudioBuffer() { + this.sourceNode && this.currentState === "playing" && (this.pausePlayTime = this.currentTime, this.sourceNode.onended = null, this.sourceNode.stop(), this.sourceNode.buffer = null, this.sourceNode = this.createSourceNode(), this.currentState = "paused"); + } + seekAudioBuffer(s) { + this.sourceNode && (this.sourceNode.onended = null, this.currentState === "playing" && this.sourceNode.stop(), this.sourceNode = this.createSourceNode(), this.currentState === "playing" ? (this.startPlayOffset = s, this.startSourceNode()) : this.currentState === "paused" && (this.pausePlayTime = s)); + } + resumeProcessAudioBuffer() { + this.currentState === "paused" && this.sourceNode && (this.startPlayOffset = this.pausePlayTime, this.pausePlayTime = 0, this.startSourceNode(), this.currentState = "playing"); + } + stopProcessAudioBuffer() { + if (this.sourceNode) { + this.sourceNode.onended = null; + try { + this.sourceNode.stop(); + } catch (s) { + } + this.reset(); + } + } + destroy() { + this.audioBuffer = null, super.destroy(); + } + setAudioBufferPlaybackSpeed(s) { + this.sourceNode && (this.currentState === "playing" && (this.startPlayOffset = this.currentTime, this.startPlayTime = this.context.currentTime), this.sourceNode.playbackRate.value = s / 100), this.currentPlaybackSpeed = s; + } + startSourceNode() { + this.sourceNode && this.sourceNode.buffer && (this.sourceNode.start(0, this.startPlayOffset), this.startPlayTime = this.context.currentTime, this.sourceNode.onended = this.handleSourceNodeEnded.bind(this)); + } + createSourceNode() { + const s = this.context.createBufferSource(); + return s.buffer = this.audioBuffer, s.loop = !!this.options.loop, s.connect(this.outputNode), s.playbackRate.value = this.currentPlaybackSpeed / 100, s; + } + handleSourceNodeEnded() { + if (this.currentLoopCount += 1, this.options.cycle && this.options.cycle > this.currentLoopCount) + return this.startPlayOffset = 0, this.sourceNode = void 0, void this.startProcessAudioBuffer(); + this.reset(); + } + reset() { + this.startPlayOffset = this.options.startPlayTime || 0, this.currentState = "stopped", this.sourceNode && (this.sourceNode.disconnect(), this.sourceNode = void 0), this.currentLoopCount = 0; + } + } + const cQ = /* @__PURE__ */ new Map(); + function SNe(h, s) { + return ye(this, null, function* () { + let c = null; + if (typeof h == "string") { + const m = cQ.get(h); + if (m) + return ie.debug("use cached audio resource: ", h), m; + try { + c = (yield np(() => Pc.get(h, { responseType: "arraybuffer" }), void 0, void 0, { maxRetryCount: 3 })).data; + } catch (T) { + throw new mt(_e.FETCH_AUDIO_FILE_FAILED, T.toString()); + } + } else + c = yield new ot((T, D) => { + const k = new FileReader(); + k.onload = (N) => { + N.target ? T(N.target.result) : D(new mt(_e.READ_LOCAL_AUDIO_FILE_ERROR)); + }, k.onerror = () => { + D(new mt(_e.READ_LOCAL_AUDIO_FILE_ERROR)); + }, k.readAsArrayBuffer(h); + }); + const p = yield function(m) { + const T = GC(); + return new ot((D, k) => { + T.decodeAudioData(m, (N) => { + D(N); + }, (N) => { + k(new mt(_e.DECODE_AUDIO_FILE_FAILED, N.toString())); + }); + }); + }(c); + return typeof h == "string" && s && cQ.set(h, p), p; + }); + } + const M5 = (h) => { + const s = document.createElement("canvas"); + return s.width = 2, s.height = 2, new ot((c, p) => { + s.toBlob((m) => ye(this, null, function* () { + if (s.remove(), m) { + const T = yield uQ(m); + c({ buffer: T, width: s.width, height: s.height }); + } else + p(new mt(_e.CONVERTING_VIDEO_FRAME_TO_BLOB_FAILED)); + }), h, 1); + }); + }, uQ = (h) => ye(this, null, function* () { + const s = yield h.arrayBuffer(); + return new Uint8Array(s); + }); + function hQ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function dQ(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? hQ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : hQ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class k5 { + get videoElementStatus() { + return this._videoElementStatus; + } + set videoElementStatus(s) { + s !== this._videoElementStatus && (ie.debug("[".concat(this.trackId, "] video-element-status change ").concat(this._videoElementStatus, " => ").concat(s)), this._videoElementStatus = s); + } + get videoState() { + return this._videoState; + } + set videoState(s) { + var c; + s !== this._videoState && (ie.debug("[".concat(this.trackId, "] video-status change ").concat(this._videoState, " => ").concat(s)), this._videoState = s, (c = this.onVideoStateChanged) === null || c === void 0 || c.call(this, this.videoState)); + } + constructor(s) { + Z(this, "trackId", void 0), Z(this, "config", void 0), Z(this, "onFirstVideoFrameDecoded", void 0), Z(this, "onVideoStateChanged", void 0), Z(this, "freezeTimeCounterList", []), Z(this, "renderFreezeAccTime", 0), Z(this, "isKeepLastFrame", !1), Z(this, "timeUpdatedCount", 0), Z(this, "freezeTime", 0), Z(this, "playbackTime", 0), Z(this, "lastTimeUpdatedTime", 0), Z(this, "autoplayFailed", !1), Z(this, "videoTrack", void 0), Z(this, "videoElement", void 0), Z(this, "cacheVideoElement", void 0), Z(this, "_videoState", Ud.VideoStateStopped), Z(this, "videoElementCheckInterval", void 0), Z(this, "videoElementFreezeTimeout", void 0), Z(this, "_videoElementStatus", fl.NONE), Z(this, "isGettingVideoDimensions", !1), Z(this, "startGetVideoDimensions", () => { + const c = () => { + if (this.isGettingVideoDimensions = !0, this.videoElement.videoWidth * this.videoElement.videoHeight > 4) + return ie.debug("[".concat(this.trackId, "] current video dimensions:"), this.videoElement.videoWidth, this.videoElement.videoHeight), void (this.isGettingVideoDimensions = !1); + setTimeout(c, 500); + }; + !this.isGettingVideoDimensions && c(); + }), Z(this, "autoResumeAfterInterruption", () => { + this.videoTrack && this.videoTrack.readyState === "live" && $i.curState === "running" && (ie.debug("[track-".concat(this.trackId, "] video element paused, auto resume for ").concat(kZ())), BZ() ? (this.videoElement.srcObject = null, this.videoElement.srcObject = new MediaStream([this.videoTrack]), this.videoElement.play()) : (this.videoElement.pause(), this.videoElement.play())); + }), Z(this, "handleVideoEvents", (c) => { + switch (c.type) { + case "play": + case "playing": + this.startGetVideoDimensions(), this.videoElementStatus = fl.PLAYING; + break; + case "loadeddata": + if (this.videoState = Ud.VideoStateStarting, this.onFirstVideoFrameDecoded && this.onFirstVideoFrameDecoded(), this.cacheVideoElement) { + try { + this.cacheVideoElement.srcObject = null, this.cacheVideoElement.remove(); + } catch (p) { + } + this.cacheVideoElement = void 0; + } + break; + case "canplay": + this.videoElementStatus = fl.CANPLAY; + break; + case "stalled": + this.videoElementStatus = fl.STALLED; + break; + case "suspend": + this.videoElementStatus = fl.SUSPEND; + break; + case "pause": + this.videoElementStatus = fl.PAUSED, Rl() || vg() || ks() && this.autoplayFailed || !this.videoTrack || this.videoTrack.readyState !== "live" || (ie.debug("[track-".concat(this.trackId, "] video element paused, auto resume")), this.videoElement.play()); + break; + case "waiting": + this.videoElementStatus = fl.WAITING; + break; + case "abort": + this.videoElementStatus = fl.ABORT; + break; + case "ended": + this.videoElementStatus = fl.ENDED; + break; + case "emptied": + this.videoElementStatus = fl.EMPTIED; + break; + case "error": { + this.videoElementStatus = fl.ERROR; + const p = this.videoElement.error; + p && ie.error("[".concat(this.trackId, "] media error, code: ").concat(p.code, ", message: ").concat(p.message)); + break; + } + case "timeupdate": { + const p = performance.now(); + if (this.timeUpdatedCount += 1, this.timeUpdatedCount < 10) + return void (this.lastTimeUpdatedTime = p); + const m = p - this.lastTimeUpdatedTime, T = this.lastTimeUpdatedTime; + if (this.lastTimeUpdatedTime = p, um.lastVisibleTime < um.lastHiddenTime || T < um.lastHiddenTime || T < um.lastVisibleTime) + return; + for (m > Le("VIDEO_FREEZE_DURATION") && (this.freezeTime += m), this.playbackTime += m; this.playbackTime >= 6e3; ) { + this.playbackTime -= 6e3; + const D = Math.min(6e3, this.freezeTime); + this.freezeTimeCounterList.push(D), this.freezeTime = Math.max(0, this.freezeTime - 6e3); + } + break; + } + } + }), Z(this, "autoResumeAfterInterruptionOnIOS15_16", () => { + this.videoTrack && this.videoTrack.readyState === "live" && (ie.debug("[track-".concat(this.trackId, "] video element paused, auto resume for ").concat(kZ())), BZ() ? (this.videoElement.srcObject = null, this.videoElement.srcObject = new MediaStream([this.videoTrack]), this.videoElement.play()) : (this.videoElement.pause(), this.videoElement.play())); + }), this.trackId = s.trackId, this.config = s, s.element instanceof HTMLVideoElement ? this.videoElement = s.element : this.videoElement = document.createElement("video"), $i.on(ds.IOS_INTERRUPTION_END, this.autoResumeAfterInterruption), $i.on(ds.IOS_15_16_INTERRUPTION_END, this.autoResumeAfterInterruptionOnIOS15_16); + } + getVideoElement() { + return this.videoElement; + } + getContainerElement() { + var s; + return (s = this.videoElement.parentElement) !== null && s !== void 0 ? s : void 0; + } + updateConfig(s) { + this.config = s, this.trackId = s.trackId, s.element !== this.videoElement && (this.destroy(), this.videoElement = s.element), this.videoTrack && this.initVideoElement(); + } + updateVideoTrack(s) { + this.videoTrack !== s && (this.videoTrack = s, this.initVideoElement()); + } + play(s) { + const c = this.videoElement.play(); + c && c.catch && c.catch((m) => { + s && tQ(s, "video", m.message, this.trackId), m.name === "NotAllowedError" ? (ie.warning("detected video element autoplay failed", m), this.autoplayFailed = !0, this.handleAutoPlayFailed()) : ie.warning("[".concat(this.trackId, "] play warning: "), m); + }); + const p = yi(); + if ((p.name === "Safari" && Number(p.version) === 15 || RC()) && c && c.then) { + const m = () => { + this.config.mirror && (this.videoElement.style.transform = "rotateY(180deg)"); + }; + c.then(m).catch(m); + } + } + getCurrentFrame() { + const s = document.createElement("canvas"); + s.width = this.videoElement.videoWidth, s.height = this.videoElement.videoHeight; + const c = s.getContext("2d"); + if (!c) + return ie.error("create canvas context failed!"), new ImageData(2, 2); + c.drawImage(this.videoElement, 0, 0, s.width, s.height); + const p = c.getImageData(0, 0, s.width, s.height); + return s.remove(), p; + } + getCurrentFrameToUint8Array(c) { + return ye(this, arguments, function* (s) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + const m = document.createElement("canvas"); + m.width = this.videoElement.videoWidth, m.height = this.videoElement.videoHeight; + const T = m.getContext("2d"); + return T ? (T.drawImage(this.videoElement, 0, 0, m.width, m.height), new ot((D, k) => { + m.toBlob((N) => ye(this, null, function* () { + if (m.remove(), N) { + const U = yield uQ(N); + D({ buffer: U, width: m.width, height: m.height }); + } else + k(new mt(_e.CONVERTING_VIDEO_FRAME_TO_BLOB_FAILED)); + }), s, p < 0 ? 0.1 : p > 1 ? 1 : p); + })) : yield M5(s); + }); + } + destroy() { + $i.off(ds.IOS_INTERRUPTION_END, this.autoResumeAfterInterruption), $i.off(ds.IOS_15_16_INTERRUPTION_END, this.autoResumeAfterInterruptionOnIOS15_16), this.videoElement.srcObject = null, this.resetVideoElement(), this.freezeTimeCounterList = [], this.videoState = Ud.VideoStateStopped; + } + initVideoElement() { + if (this.videoElementStatus = fl.INIT, !this.videoElementCheckInterval && (fQ.forEach((T) => { + this.videoElement.addEventListener(T, this.handleVideoEvents); + }), this.videoElementCheckInterval = window.setInterval(() => { + (function(T) { + return T !== document.body && document.body.contains(T); + })(this.videoElement) || (this.videoElementStatus = fl.DESTROYED); + }, 1e3), Le("ENABLE_VIDEO_FRAME_CALLBACK"))) { + var s, c; + let T; + const D = () => { + document.visibilityState === "visible" && (document.removeEventListener("visibilitychange", D), this.videoElementFreezeTimeout = window.setTimeout(k, Le("VIDEO_FREEZE_DURATION"))); + }, k = () => { + this.videoElementFreezeTimeout = void 0, this.videoState === Ud.VideoStateDecoding && (document.visibilityState === "visible" ? this.videoState = Ud.VideoStateFrozen : document.addEventListener("visibilitychange", D)); + }, N = (U, V) => { + if (this.videoElementStatus === fl.PLAYING) { + if (T) { + const q = V.presentationTime - T.presentationTime; + this.videoState === Ud.VideoStateStarting && (this.videoState = Ud.VideoStateDecoding), this.videoState === Ud.VideoStateDecoding && this.onVideoStateChanged && (this.videoElementFreezeTimeout && window.clearTimeout(this.videoElementFreezeTimeout), this.videoElementFreezeTimeout = window.setTimeout(k, Le("VIDEO_FREEZE_DURATION"))), q < Le("VIDEO_FREEZE_DURATION") && this.videoState === Ud.VideoStateFrozen && (this.videoState = Ud.VideoStateDecoding), q > Le("VIDEO_FREEZE_DURATION") && um.lastVisibleTime >= um.lastHiddenTime && T.timestamp > um.lastVisibleTime && T.timestamp > um.lastHiddenTime && (this.renderFreezeAccTime += q); + } + T = dQ(dQ({}, V), {}, { timestamp: U }); + } + var G, K; + Le("ENABLE_VIDEO_FRAME_CALLBACK") && ((G = (K = this.videoElement).requestVideoFrameCallback) === null || G === void 0 || G.call(K, N)); + }; + (s = (c = this.videoElement).requestVideoFrameCallback) === null || s === void 0 || s.call(c, N); + } + this.videoElement.controls = !1, this.videoElement.setAttribute("playsinline", ""), QO() && (this.videoElement.poster = "noposter"); + const p = yi(); + p.name === "Safari" && Number(p.version) === 15 || RC() || !this.config.mirror || (this.videoElement.style.transform = "rotateY(180deg)"), this.config.fit ? this.videoElement.style.objectFit = this.config.fit : this.videoElement.style.objectFit = "cover", this.videoElement.setAttribute("muted", ""), this.videoElement.muted = !0, this.videoElement.srcObject && this.videoElement.srcObject instanceof MediaStream ? this.videoElement.srcObject.getVideoTracks()[0] !== this.videoTrack && (this.videoElement.srcObject = this.videoTrack ? new MediaStream([this.videoTrack]) : null, qi() && this.videoElement.load()) : (this.videoElement.srcObject = this.videoTrack ? new MediaStream([this.videoTrack]) : null, qi() && this.videoElement.load()); + const m = this.videoElement.play(); + m !== void 0 && m.catch((T) => { + ie.debug("[".concat(this.trackId, "] playback interrupted"), T.toString()); + }); + } + resetVideoElement() { + fQ.forEach((s) => { + this.videoElement && this.videoElement.removeEventListener(s, this.handleVideoEvents); + }), this.videoElementCheckInterval && (window.clearInterval(this.videoElementCheckInterval), this.videoElementCheckInterval = void 0), this.videoElementStatus = fl.NONE; + } + handleAutoPlayFailed() { + const s = (c) => { + c.preventDefault(), this.videoElement.play().then(() => { + ie.debug("[".concat(this.trackId, "] Video element for trackId:").concat(this.trackId, " autoplay resumed.")); + }).catch((p) => { + ie.error(p); + }), this.autoplayFailed = !1, Ex() ? document.body.removeEventListener("click", s, !0) : (document.body.removeEventListener("touchstart", s, !0), document.body.removeEventListener("mousedown", s, !0)); + }; + Ex() ? document.body.addEventListener("click", s, !0) : (document.body.addEventListener("touchstart", s, !0), document.body.addEventListener("mousedown", s, !0)), JJ(); + } + } + const fQ = ["play", "playing", "loadeddata", "canplay", "pause", "stalled", "suspend", "waiting", "abort", "emptied", "ended", "timeupdate", "error"]; + class PM extends k5 { + constructor(s) { + super(s), Z(this, "container", void 0), Z(this, "slot", void 0), this.slot = s.element, this.updateConfig(s); + } + updateConfig(s) { + this.config = s, this.trackId = s.trackId; + const c = s.element; + c !== this.slot && (this.destroy(), this.slot = c), this.createElements(); + } + updateVideoTrack(s) { + this.videoTrack !== s && (this.videoTrack = s, this.createElements()); + } + play(s) { + var c; + (c = this.container) !== null && c !== void 0 && c.contains(this.videoElement) && super.play(s); + } + getCurrentFrame() { + var s; + return (s = this.container) !== null && s !== void 0 && s.contains(this.videoElement) ? super.getCurrentFrame() : new ImageData(2, 2); + } + getCurrentFrameToUint8Array(c) { + return ye(this, arguments, function* (s) { + var p; + let m = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + return (p = this.container) !== null && p !== void 0 && p.contains(this.videoElement) ? yield cV(PM.prototype, this, "getCurrentFrameToUint8Array").call(this, s, m) : yield M5(s); + }); + } + destroy() { + if (super.destroy(), this.videoElement.remove(), this.videoElement = document.createElement("video"), this.container) { + try { + this.container.remove(), this.slot.removeChild(this.container); + } catch (s) { + } + this.container = void 0; + } + } + createElements() { + this.container || (this.container = document.createElement("div")), this.container.id = "agora-video-player-".concat(this.trackId), this.container.style.width = "100%", this.container.style.height = "100%", this.container.style.position = "relative", this.container.style.overflow = "hidden", this.videoTrack ? (this.container.style.backgroundColor = "black", Le("KEEP_LAST_FRAME") && this.isKeepLastFrame && this.videoElement.paused && this.resetVideoElement(), this.mountedVideoElement()) : this.unmountedVideoElement(), this.slot.appendChild(this.container); + } + mountedVideoElement() { + var s; + !this.container || (s = this.container) !== null && s !== void 0 && s.contains(this.videoElement) || this.container.appendChild(this.videoElement), super.initVideoElement(), this.videoElement.id = "video_".concat(this.trackId), this.videoElement.className = "agora_video_player", this.videoElement.style.width = "100%", this.videoElement.style.height = "100%", this.videoElement.style.position = "absolute", this.videoElement.style.left = "0", this.videoElement.style.top = "0"; + } + unmountedVideoElement() { + var s; + if ((s = this.container) !== null && s !== void 0 && s.contains(this.videoElement)) { + super.resetVideoElement(); + try { + this.container && this.container.removeChild(this.videoElement); + } catch (c) { + } + this.videoElement = document.createElement("video"); + } + } + resetVideoElement() { + var s; + (s = this.container) !== null && s !== void 0 && s.contains(this.videoElement) && (super.resetVideoElement(), this.cacheVideoElement = this.videoElement, this.videoElement = document.createElement("video")); + } + getContainerElement() { + return this.container; + } + } + function pQ(h) { + return new ot((s, c) => { + let p = !1; + const m = document.createElement("video"); + m.setAttribute("autoplay", ""), m.setAttribute("muted", ""), m.muted = !0, m.autoplay = !0, m.setAttribute("playsinline", ""), m.setAttribute("style", "position: fixed; top: 0; left: 0; width: 1px; height: 1px"), document.body.appendChild(m); + const T = Rl() ? "canplay" : "playing"; + m.addEventListener(T, () => { + const D = m.videoWidth, k = m.videoHeight; + !D && qi() || (p = !0, m.srcObject = null, m.remove(), s([D, k])); + }), m.srcObject = new MediaStream([h]), m.play().catch(nM), setTimeout(() => { + p || (m.srcObject = null, m.remove(), s([m.videoWidth, m.videoHeight])); + }, 4e3); + }); + } + const bNe = (h, s, c) => ye(this, null, function* () { + const p = function(D) { + const k = []; + for (let N = 0; N < D.length; N += 2) + k.push(parseInt(D.slice(N, N + 2), 16)); + return Uint8Array.from(k); + }(function(D) { + const k = "0123456789abcdef"; + function N(Ut) { + let Vt, fn = ""; + for (Vt = 0; Vt <= 3; Vt++) + fn += k.charAt(Ut >> 8 * Vt + 4 & 15) + k.charAt(Ut >> 8 * Vt & 15); + return fn; + } + function U(Ut, Vt) { + const fn = (65535 & Ut) + (65535 & Vt); + return (Ut >> 16) + (Vt >> 16) + (fn >> 16) << 16 | 65535 & fn; + } + function V(Ut, Vt, fn, Nn, ha, jo) { + return U(function(Sa, Su) { + return Sa << Su | Sa >>> 32 - Su; + }(U(U(Vt, Ut), U(Nn, jo)), ha), fn); + } + function G(Ut, Vt, fn, Nn, ha, jo, Sa) { + return V(Vt & fn | ~Vt & Nn, Ut, Vt, ha, jo, Sa); + } + function K(Ut, Vt, fn, Nn, ha, jo, Sa) { + return V(Vt & Nn | fn & ~Nn, Ut, Vt, ha, jo, Sa); + } + function q(Ut, Vt, fn, Nn, ha, jo, Sa) { + return V(Vt ^ fn ^ Nn, Ut, Vt, ha, jo, Sa); + } + function ue(Ut, Vt, fn, Nn, ha, jo, Sa) { + return V(fn ^ (Vt | ~Nn), Ut, Vt, ha, jo, Sa); + } + const oe = function(Ut) { + let Vt; + const fn = 1 + (Ut.length + 8 >> 6), Nn = new Array(16 * fn); + for (Vt = 0; Vt < 16 * fn; Vt++) + Nn[Vt] = 0; + for (Vt = 0; Vt < Ut.length; Vt++) + Nn[Vt >> 2] |= Ut.charCodeAt(Vt) << Vt % 4 * 8; + return Nn[Vt >> 2] |= 128 << Vt % 4 * 8, Nn[16 * fn - 2] = 8 * Ut.length, Nn; + }(D); + let he, Ce, ke, Ge, tt, Ye = 1732584193, et = -271733879, ht = -1732584194, st = 271733878; + for (he = 0; he < oe.length; he += 16) + Ce = Ye, ke = et, Ge = ht, tt = st, Ye = G(Ye, et, ht, st, oe[he + 0], 7, -680876936), st = G(st, Ye, et, ht, oe[he + 1], 12, -389564586), ht = G(ht, st, Ye, et, oe[he + 2], 17, 606105819), et = G(et, ht, st, Ye, oe[he + 3], 22, -1044525330), Ye = G(Ye, et, ht, st, oe[he + 4], 7, -176418897), st = G(st, Ye, et, ht, oe[he + 5], 12, 1200080426), ht = G(ht, st, Ye, et, oe[he + 6], 17, -1473231341), et = G(et, ht, st, Ye, oe[he + 7], 22, -45705983), Ye = G(Ye, et, ht, st, oe[he + 8], 7, 1770035416), st = G(st, Ye, et, ht, oe[he + 9], 12, -1958414417), ht = G(ht, st, Ye, et, oe[he + 10], 17, -42063), et = G(et, ht, st, Ye, oe[he + 11], 22, -1990404162), Ye = G(Ye, et, ht, st, oe[he + 12], 7, 1804603682), st = G(st, Ye, et, ht, oe[he + 13], 12, -40341101), ht = G(ht, st, Ye, et, oe[he + 14], 17, -1502002290), et = G(et, ht, st, Ye, oe[he + 15], 22, 1236535329), Ye = K(Ye, et, ht, st, oe[he + 1], 5, -165796510), st = K(st, Ye, et, ht, oe[he + 6], 9, -1069501632), ht = K(ht, st, Ye, et, oe[he + 11], 14, 643717713), et = K(et, ht, st, Ye, oe[he + 0], 20, -373897302), Ye = K(Ye, et, ht, st, oe[he + 5], 5, -701558691), st = K(st, Ye, et, ht, oe[he + 10], 9, 38016083), ht = K(ht, st, Ye, et, oe[he + 15], 14, -660478335), et = K(et, ht, st, Ye, oe[he + 4], 20, -405537848), Ye = K(Ye, et, ht, st, oe[he + 9], 5, 568446438), st = K(st, Ye, et, ht, oe[he + 14], 9, -1019803690), ht = K(ht, st, Ye, et, oe[he + 3], 14, -187363961), et = K(et, ht, st, Ye, oe[he + 8], 20, 1163531501), Ye = K(Ye, et, ht, st, oe[he + 13], 5, -1444681467), st = K(st, Ye, et, ht, oe[he + 2], 9, -51403784), ht = K(ht, st, Ye, et, oe[he + 7], 14, 1735328473), et = K(et, ht, st, Ye, oe[he + 12], 20, -1926607734), Ye = q(Ye, et, ht, st, oe[he + 5], 4, -378558), st = q(st, Ye, et, ht, oe[he + 8], 11, -2022574463), ht = q(ht, st, Ye, et, oe[he + 11], 16, 1839030562), et = q(et, ht, st, Ye, oe[he + 14], 23, -35309556), Ye = q(Ye, et, ht, st, oe[he + 1], 4, -1530992060), st = q(st, Ye, et, ht, oe[he + 4], 11, 1272893353), ht = q(ht, st, Ye, et, oe[he + 7], 16, -155497632), et = q(et, ht, st, Ye, oe[he + 10], 23, -1094730640), Ye = q(Ye, et, ht, st, oe[he + 13], 4, 681279174), st = q(st, Ye, et, ht, oe[he + 0], 11, -358537222), ht = q(ht, st, Ye, et, oe[he + 3], 16, -722521979), et = q(et, ht, st, Ye, oe[he + 6], 23, 76029189), Ye = q(Ye, et, ht, st, oe[he + 9], 4, -640364487), st = q(st, Ye, et, ht, oe[he + 12], 11, -421815835), ht = q(ht, st, Ye, et, oe[he + 15], 16, 530742520), et = q(et, ht, st, Ye, oe[he + 2], 23, -995338651), Ye = ue(Ye, et, ht, st, oe[he + 0], 6, -198630844), st = ue(st, Ye, et, ht, oe[he + 7], 10, 1126891415), ht = ue(ht, st, Ye, et, oe[he + 14], 15, -1416354905), et = ue(et, ht, st, Ye, oe[he + 5], 21, -57434055), Ye = ue(Ye, et, ht, st, oe[he + 12], 6, 1700485571), st = ue(st, Ye, et, ht, oe[he + 3], 10, -1894986606), ht = ue(ht, st, Ye, et, oe[he + 10], 15, -1051523), et = ue(et, ht, st, Ye, oe[he + 1], 21, -2054922799), Ye = ue(Ye, et, ht, st, oe[he + 8], 6, 1873313359), st = ue(st, Ye, et, ht, oe[he + 15], 10, -30611744), ht = ue(ht, st, Ye, et, oe[he + 6], 15, -1560198380), et = ue(et, ht, st, Ye, oe[he + 13], 21, 1309151649), Ye = ue(Ye, et, ht, st, oe[he + 4], 6, -145523070), st = ue(st, Ye, et, ht, oe[he + 11], 10, -1120210379), ht = ue(ht, st, Ye, et, oe[he + 2], 15, 718787259), et = ue(et, ht, st, Ye, oe[he + 9], 21, -343485551), Ye = U(Ye, Ce), et = U(et, ke), ht = U(ht, Ge), st = U(st, tt); + return N(Ye) + N(et) + N(ht) + N(st); + }("" + s + c)).slice(0, 16), m = p.slice(0, 12), T = yield window.crypto.subtle.importKey("raw", p, "AES-GCM", !0, ["encrypt"]); + return new Uint8Array(yield window.crypto.subtle.encrypt({ name: "AES-GCM", iv: m }, T, h)); + }), gQ = (h, s, c) => ye(this, null, function* () { + return yield bNe(h.buffer, s, c); + }); + function vQ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function hh(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? vQ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : vQ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class In extends Xs { + get isPlaying() { + return !(!this._player || this._player.videoElementStatus !== fl.PLAYING); + } + get processorContext() { + return this._processorContext; + } + set processorContext(s) { + this._processorContext = s; + } + get __className__() { + return "LocalVideoTrack"; + } + constructor(s, c, p, m, T, D) { + if (super(s, T), Z(this, "trackMediaType", "video"), Z(this, "_player", void 0), Z(this, "isUseScaleResolutionDownBy", !1), Z(this, "_videoVisibleTimer", null), Z(this, "_statsTimer", null), Z(this, "_previousVideoVisibleStatus", void 0), Z(this, "_clearPreviousVideoVisibleStatus", () => this._previousVideoVisibleStatus = void 0), Z(this, "_encoderConfig", void 0), Z(this, "_scalabilityMode", { numSpatialLayers: 1, numTemporalLayers: 1 }), Z(this, "_optimizationMode", void 0), Z(this, "_videoHeight", void 0), Z(this, "_videoWidth", void 0), Z(this, "_forceBitrateLimit", void 0), Z(this, "_enabled", !0), Z(this, "processorDestination", void 0), Z(this, "_processorContext", void 0), ks()) { + const { width: k, height: N } = s.getSettings(); + this._videoWidth = k, this._videoHeight = N; + } else + this.updateMediaStreamTrackResolution(); + if (this._encoderConfig = c, this._scalabilityMode = p, this._optimizationMode = m, this._hints = D || [], this._hints.indexOf(ua.SCREEN_TRACK) === -1) + this.updateBitrateFromProfile(); + else if (function(k, N, U) { + const V = yi(); + return !(V.name !== k || !V.osVersion) && (U ? Number(V.version) >= N && Number(V.version) <= U : Number(V.version) === N); + }(xi.CHROME, 115) && qO().indexOf("Windows") !== -1) { + const k = function(N, U) { + if ("VideoFrame" in window && "TransformStream" in window && _i().supportWebRTCInsertableStream) { + const V = new MediaStreamTrackProcessor(N), G = new MediaStreamTrackGenerator({ kind: "video" }); + let K, q, ue = Date.now(); + const oe = () => { + he && (clearInterval(he), he = void 0), K && (K.close(), K = void 0), N.stop(), q = void 0, G.removeEventListener("ended", oe); + }; + let he = window.setInterval(() => { + if (q && K && Date.now() - ue > (U != null ? U : 1e3)) + try { + G.readyState === "live" ? q.enqueue(K.clone()) : oe(); + } catch (ke) { + oe(); + } + }, U != null ? U : 1e3); + const Ce = new TransformStream({ transform: (ke, Ge) => { + G.readyState === "live" ? (q = Ge, ue = Date.now(), K === void 0 ? (K = ke, Ge.enqueue(ke.clone())) : (Ge.enqueue(K), K = ke)) : ke.close(); + } }); + return G.addEventListener("ended", oe), V.readable.pipeThrough(Ce).pipeTo(G.writable), G; + } + }(s); + k && (ie.info("local screen video track begin to inject frame"), this._mediaStreamTrack = k); + } + c && this._hints.indexOf(ua.CUSTOM_TRACK) !== -1 && this.setEncoderConfiguration(c), this._processorContext = new iQ(this.getTrackId(), "local"), this.processorDestination = new nQ(this.processorContext), this.bindProcessorDestinationEvents(); + } + play(s) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (typeof s == "string") { + const m = document.getElementById(s); + m ? s = m : (ie.warning("[".concat(this.getTrackId(), '] can not find "#').concat(s, '" element, use document.body')), s = document.body); + } + ie.debug("[".concat(this.getTrackId(), "] start video playback in ").concat(s instanceof HTMLVideoElement ? "HTMLVideoElement" : "HTMLElement"), JSON.stringify(c)); + const p = hh(hh(hh({}, this._getDefaultPlayerConfig()), c), {}, { trackId: this.getTrackId(), element: s }); + this._player ? this._player.updateConfig(p) : (s instanceof HTMLVideoElement ? this._player = new k5(p) : this._player = new PM(p), this._player.updateVideoTrack(this._mediaStreamTrack)), this._player.play(), this._videoVisibleTimer && window.clearInterval(this._videoVisibleTimer), this._clearPreviousVideoVisibleStatus(), this._videoVisibleTimer = window.setInterval(() => { + try { + const m = this.getVideoElementVisibleStatus(); + this.safeEmit(c_.VIDEO_ELEMENT_VISIBLE_STATUS, m); + } catch (m) { + } + }, Le("CHECK_VIDEO_VISIBLE_INTERVAL")); + } + stop() { + this._player && (this._videoVisibleTimer && (window.clearInterval(this._videoVisibleTimer), this._videoVisibleTimer = null), this._statsTimer && (this.isUseScaleResolutionDownBy = !1, window.clearInterval(this._statsTimer), this._statsTimer = null), this._clearPreviousVideoVisibleStatus(), this._player.destroy(), this._player = void 0, ie.debug("[".concat(this.getTrackId(), "] stop video playback"))); + } + setEnabled(s, c) { + return ye(this, null, function* () { + if (!c) { + if (s === this._enabled) + return; + this.stateCheck("enabled", s); + } + if (ie.info("[".concat(this.getTrackId(), "] start setEnabled"), s), !s) { + this._originMediaStreamTrack.enabled = !1; + try { + yield Ji(this, lr.NEED_DISABLE_TRACK, this); + } catch (p) { + throw ie.error("[".concat(this.getTrackId(), "] setEnabled to false error"), p.toString()), p; + } + return c || (this._enabled = !1), void ie.info("[".concat(this.getTrackId(), "] setEnabled to false success")); + } + this._originMediaStreamTrack.enabled = !0; + try { + yield Ji(this, lr.NEED_ENABLE_TRACK, this); + } catch (p) { + throw ie.error("[".concat(this.getTrackId(), "] setEnabled to true error"), p.toString()), p; + } + ie.info("[".concat(this.getTrackId(), "] setEnabled to true success")), c || (this._enabled = !0); + }); + } + setMuted(s) { + return ye(this, null, function* () { + s !== this._muted && (this.stateCheck("muted", s), this._muted = s, this._originMediaStreamTrack.enabled = !s, ie.debug("[".concat(this.getTrackId(), "] start set muted: ").concat(s)), s ? yield Ji(this, lr.NEED_MUTE_TRACK, this) : yield Ji(this, lr.NEED_UNMUTE_TRACK, this)); + }); + } + setEncoderConfiguration(s, c) { + return ye(this, null, function* () { + if (!this._enabled) + throw new mt(_e.TRACK_IS_DISABLED, "can not set encoder configuration when track is disabled"); + if (s === "720p_auto" ? this.startMonitorStats() : this._statsTimer && (window.clearInterval(this._statsTimer), this._statsTimer = null), s = Eg(s), this._forceBitrateLimit && (s.bitrateMax = this._forceBitrateLimit.max_bitrate ? this._forceBitrateLimit.max_bitrate : s.bitrateMax, s.bitrateMin = this._forceBitrateLimit.min_bitrate ? this._forceBitrateLimit.min_bitrate : s.bitrateMin), s.width || s.height || s.frameRate) { + const p = kM({ encoderConfig: s }); + (ks() || Rl() || vg()) && (p.deviceId = void 0), ie.debug("[".concat(this.getTrackId(), "] setEncoderConfiguration applyConstraints"), JSON.stringify(s), JSON.stringify(p)); + try { + yield this._originMediaStreamTrack.applyConstraints(p), this.updateMediaStreamTrackResolution(); + } catch (m) { + const T = new mt(_e.UNEXPECTED_ERROR, m.toString()); + throw ie.error("[".concat(this.getTrackId(), "] applyConstraints error"), T.toString()), T; + } + } + this._encoderConfig = s, this._hints.indexOf(ua.SCREEN_TRACK) === -1 && this.updateBitrateFromProfile(); + try { + yield Ji(this, lr.NEED_UPDATE_VIDEO_ENCODER, this); + } catch (p) { + return p.throw(ie); + } + }); + } + getStats() { + return kC(() => { + ie.warning("[deprecated] LocalVideoTrack.getStats will be removed in the future, use AgoraRTCClient.getLocalVideoStats instead"); + }, "localVideoTrackGetStatsWarning"), pu(this, lr.GET_STATS) || hh({}, T5); + } + setBeautyEffect(s) { + return ye(this, null, function* () { + ie.error("LocalVideoTrack.setBeautyEffect was deprecated, please migrate to agora-extension-beauty-effect"); + }); + } + getCurrentFrameData() { + return this._player ? this._player.getCurrentFrame() : new ImageData(2, 2); + } + getCurrentFrameImage(c) { + return ye(this, arguments, function* (s) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + return this._player ? this._player.getCurrentFrameToUint8Array(s, p) : yield M5(s); + }); + } + setBitrateLimit(s) { + return ye(this, null, function* () { + if (ie.debug("[".concat(this.getTrackId(), "] set bitrate limit, ").concat(JSON.stringify(s))), s) { + this._forceBitrateLimit = s, this._encoderConfig && (this._encoderConfig.bitrateMax ? this._encoderConfig.bitrateMax = this._encoderConfig.bitrateMax < s.max_bitrate ? this._encoderConfig.bitrateMax : s.max_bitrate : this._encoderConfig.bitrateMax = s.max_bitrate, this._encoderConfig.bitrateMin, this._encoderConfig.bitrateMin = s.min_bitrate); + try { + yield Ji(this, lr.NEED_UPDATE_VIDEO_ENCODER, this); + } catch (c) { + return c.throw(ie); + } + } + }); + } + setOptimizationMode(s) { + return ye(this, null, function* () { + if (s !== "motion" && s !== "detail" && s !== "balanced") + return void ie.error(_e.INVALID_PARAMS, "optimization mode must be motion, detail or balanced"); + const c = this._optimizationMode; + try { + this._optimizationMode = s, yield Ji(this, lr.SET_OPTIMIZATION_MODE, this); + } catch (p) { + throw this._optimizationMode = c, ie.error("[".concat(this.getTrackId(), "] set optimization mode failed"), p.toString()), p; + } + ie.info("[".concat(this.getTrackId(), "] set optimization mode success (").concat(s, ")")); + }); + } + setScalabiltyMode(s) { + if (s.numSpatialLayers === 1 && s.numTemporalLayers !== 1) + return ie.error(_e.INVALID_PARAMS, "scalability mode currently not supported, no SVC."), void (this._scalabilityMode = { numSpatialLayers: 1, numTemporalLayers: 1 }); + this._scalabilityMode = s, ie.info("[".concat(this.getTrackId(), "] set scalability mode success (").concat(s, ")")); + } + updateMediaStreamTrackResolution() { + pQ(this._originMediaStreamTrack).then((s) => { + let [c, p] = s; + this._videoHeight = p, this._videoWidth = c; + }).catch(nM); + } + _updatePlayerSource() { + this._player && this._player.updateVideoTrack(this._mediaStreamTrack); + } + _getDefaultPlayerConfig() { + return { fit: "contain" }; + } + setSenderConfiguration(s) { + return ye(this, null, function* () { + if (!this._enabled) + throw new mt(_e.TRACK_IS_DISABLED, "can not set encoder configuration when track is disabled"); + ie.debug("[".concat(this.getTrackId(), "] setSenderConfiguration applyConstraints"), JSON.stringify(s)), s = Eg(s), this._forceBitrateLimit && (s.bitrateMax = this._forceBitrateLimit.max_bitrate ? this._forceBitrateLimit.max_bitrate : s.bitrateMax, s.bitrateMin = this._forceBitrateLimit.min_bitrate ? this._forceBitrateLimit.min_bitrate : s.bitrateMin), this._encoderConfig = s, this._hints.indexOf(ua.SCREEN_TRACK) === -1 && this.updateBitrateFromProfile(); + try { + yield Ji(this, lr.NEED_UPDATE_VIDEO_ENCODER, this); + } catch (c) { + return c.throw(ie); + } + }); + } + updateBitrateFromProfile() { + if (!this._encoderConfig) + return; + const { width: s, height: c, frameRate: p } = this.getMediaStreamTrackSettings(); + if (!s || !c || !p) + return; + const { bitrateMax: m, bitrateMin: T } = this._encoderConfig; + if (T == null || m == null) { + const { max: D, min: k } = function(N, U, V, G, K) { + const q = Le("BITRATE_ADAPTER_TYPE"); + if (q === "DEFAULT_BITRATE") + return { min: G, max: K }; + if (K === void 0) { + var ue; + const he = Math.floor(200 * Math.pow(V / 15, 0.6) * Math.pow(N * U / 640 / 360, 0.75)); + K = q === "STANDARD_BITRATE" ? 4 * he : 2 * he, G = (ue = G) !== null && ue !== void 0 ? ue : he; + } else { + var oe; + G = (oe = G) !== null && oe !== void 0 ? oe : Math.floor(K / 10); + } + return { min: G, max: K }; + }(s, c, p, T, m); + this._encoderConfig.bitrateMin = k, this._encoderConfig.bitrateMax = D, ie.debug("[".concat(this.getTrackId(), "] update bitrate from profile, [w: ").concat(s, ", h: ").concat(c, ", fps: ").concat(p, "] => [brMax: ").concat(D, ", brMin: ").concat(k, "]")); + } + } + getVideoElementVisibleStatus() { + try { + var s, c; + const p = this == null || (s = this._player) === null || s === void 0 ? void 0 : s.getContainerElement(), m = { track: this, element: this == null || (c = this._player) === null || c === void 0 ? void 0 : c.getVideoElement(), slot: p == null ? void 0 : p.parentElement }, { element: T, slot: D } = m; + if (this.isPlaying && T instanceof HTMLVideoElement && D instanceof HTMLElement) { + const k = HZ.checkOneElementVisible(T), N = Object.assign({}, k); + if (N.visible !== this._previousVideoVisibleStatus) { + this._previousVideoVisibleStatus = N.visible; + const U = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.LOCAL_VIDEO_TRACK_GET_VIDEO_VISIBLE, options: [this.getTrackId()] }); + N.visible ? U.onSuccess("Video is visible") : U.onSuccess("Invisible because of ".concat(N.reason)); + } + return N; + } + return; + } catch (p) { + throw new mt(_e.GET_VIDEO_ELEMENT_VISIBLE_ERROR, p.message); + } + } + renewMediaStreamTrack(s) { + return ye(this, null, function* () { + }); + } + pipe(s) { + if (this.processor === s) + return s; + if (s._source) + throw new mt(_e.INVALID_OPERATION, "Processor ".concat(s.name, " already piped, please call unpipe beforehand.")); + return this.unpipe(), this.processor = s, this.processor._source = this, s.updateInput({ track: this._originMediaStreamTrack, context: this.processorContext }), s; + } + unpipe() { + if (!this.processor) + return; + const s = this.processor; + this.processor._source = void 0, this.processor = void 0, s.reset(); + } + close() { + super.close(), this.unbindProcessorDestinationEvents(), this.unbindProcessorContextEvents(), this.unpipe(), this.processorDestination._source && this.processorDestination._source.unpipe(); + } + clone(s) { + let c = !(arguments.length > 1 && arguments[1] !== void 0) || arguments[1], p = this._encoderConfig; + s && (p = hh(hh({}, p), Eg(s))), p = ES(p); + const m = ra(8, "track-video-cloned-"), T = new In(c ? this._mediaStreamTrack.clone() : this._mediaStreamTrack, p, ES(this._scalabilityMode), this._optimizationMode, m, ES(this._hints)); + return s && p && T.setEncoderConfiguration(p), ie.debug("clone video track from ".concat(this.getTrackId(), " to ").concat(m, ", clone ").concat(c)), T; + } + replaceTrack(s, c) { + return ye(this, null, function* () { + if (!(s instanceof MediaStreamTrack)) + throw new mt(_e.INVALID_PARAMS, "track should be an instance of MediaStreamTrack"); + if (s.kind !== "video") + throw new mt(_e.INVALID_PARAMS, "track should be a video MediaStreamTrack"); + yield this._updateOriginMediaStreamTrack(s, c, !0), this.updateMediaStreamTrackResolution(); + }); + } + startMonitorStats() { + if (!ks() && !Rl()) + return; + this._statsTimer && window.clearInterval(this._statsTimer); + let s = 2, c = AM[s], p = -1, m = Date.now(); + const T = (D) => { + D > 2 || D < 0 || (m = Date.now(), c = AM[D], this.setSenderConfiguration(c)); + }; + this.isUseScaleResolutionDownBy = !0, this._statsTimer = window.setInterval(() => { + const D = this.getStats(), k = pu(this, lr.GET_RTC_STATS); + if (D.sendPackets > 0 && k) { + p === -1 && (p = Date.now()); + const N = Date.now(); + if (N - p < 1e3 || N - m < Le("PROFILE_SWITCH_INTERVAL")) + return; + const U = D.sendFrameRate, V = 0.6 * c.frameRate, G = 0.9 * c.frameRate; + typeof U == "number" && U > 0 && U < V ? s > 0 && (s--, T(s), ie.debug("[".concat(this.getTrackId(), "] step down for fps ").concat(U, ", switchProfile to ").concat(s))) : k.OutgoingAvailableBandwidth < c.bitrateMin ? s > 0 && (s--, T(s), ie.debug("[".concat(this.getTrackId(), "] step down for OutgoingAvailableBandwidth ").concat(k.OutgoingAvailableBandwidth, ", bitrateMin ").concat(c.bitrateMin, ", switchProfile to ").concat(s))) : typeof U == "number" && U > G && s < AM.length - 1 && k.OutgoingAvailableBandwidth > 1.2 * AM[s + 1].bitrateMin && (s++, T(s), ie.debug("[".concat(this.getTrackId(), "] step up for fps ").concat(U, ", OutgoingAvailableBandwidth ").concat(k.OutgoingAvailableBandwidth, ", switchProfile to ").concat(s))); + } + }, Le("CHECK_LOCAL_STATS_INTERVAL")); + } + sendSeiData(s) { + if (kC(() => { + vr.reportApiInvoke(null, { name: Ao.LOCAL_VIDEO_SEND_SEI_DATA, options: [], tag: Na.TRACER }).onSuccess(""); + }, this._mediaStreamTrack.id || this.getTrackId()), !Le("ENABLE_VIDEO_SEI") || !Le("ENABLE_ENCODED_TRANSFORM")) + return void ie.warning('To send/receive SEI, please call AgoraRTC.setParameter("ENABLE_VIDEO_SEI", true) before instantiate IAgoraRtcClient'); + if (!(s instanceof Uint8Array)) + return new mt(_e.INVALID_PARAMS, "Invalid argument type, ILocalVideoTrack.sendSeiData() only accept Uint8Array argument.").throw(); + const c = this.getRTCRtpTransceiver(); + if (!c) + return void ie.warning("Video track is not published, SEI can not be send"); + const p = c.sender.getParameters(); + if (p.codecs.length === 0) + return; + const m = p.codecs[0].mimeType.toLocaleLowerCase(); + m === "video/h264" ? this.safeEmit("sei-to-send", s) : ie.warning("SEI is not supported by ".concat(m)); + } + bindProcessorDestinationEvents() { + this.processorDestination.on(dl.ON_TRACK, (s) => ye(this, null, function* () { + s ? s !== this._mediaStreamTrack && (this._mediaStreamTrack = s, this._updatePlayerSource(), yield Ji(this, lr.NEED_REPLACE_TRACK, this)) : this._mediaStreamTrack !== this._originMediaStreamTrack && (this._mediaStreamTrack = this._originMediaStreamTrack, this._updatePlayerSource(), yield Ji(this, lr.NEED_REPLACE_TRACK, this)); + })); + } + unbindProcessorDestinationEvents() { + this.processorDestination.removeAllListeners(dl.ON_TRACK); + } + unbindProcessorContextEvents() { + this.processorContext.removeAllListeners(Fc.REQUEST_UPDATE_CONSTRAINTS), this.processorContext.removeAllListeners(Fc.REQUEST_CONSTRAINTS); + } + } + St([Pr({ argsMap: (h, s, c) => [h.getTrackId(), typeof s == "string" ? s : s instanceof HTMLVideoElement ? "HTMLVideoElement" : "HTMLElement", c] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Object, Object]), ge("design:returntype", void 0)], In.prototype, "play", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], In.prototype, "stop", null), St([NC("LocalVideoTrack", "_enabledMutex"), Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean, Boolean]), ge("design:returntype", ot)], In.prototype, "setEnabled", null), St([NC("LocalVideoTrack", "_enabledMutex"), Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean]), ge("design:returntype", ot)], In.prototype, "setMuted", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Object, Boolean]), ge("design:returntype", ot)], In.prototype, "setEncoderConfiguration", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", Object)], In.prototype, "getStats", null), St([Pr({ argsMap: (h, s, c) => [h.getTrackId(), s, c] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean, Object]), ge("design:returntype", ot)], In.prototype, "setBeautyEffect", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ImageData)], In.prototype, "getCurrentFrameData", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", [String, Number]), ge("design:returntype", ot)], In.prototype, "getCurrentFrameImage", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], In.prototype, "setBitrateLimit", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], In.prototype, "setOptimizationMode", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", void 0)], In.prototype, "setScalabiltyMode", null), St([ao(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], In.prototype, "updateMediaStreamTrackResolution", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s.name] }), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", Object)], In.prototype, "pipe", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], In.prototype, "unpipe", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], In.prototype, "close", null), St([Pr({ argsMap: (h, s, c) => [h.getTrackId(), s.label, c] }), ge("design:type", Function), ge("design:paramtypes", [MediaStreamTrack, Boolean]), ge("design:returntype", ot)], In.prototype, "replaceTrack", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], In.prototype, "startMonitorStats", null); + class d_ extends In { + get __className__() { + return "CameraVideoTrack"; + } + constructor(s, c, p, m, T, D) { + super(s, Eg(c.encoderConfig), m, T, D), Z(this, "_config", void 0), Z(this, "_originalConstraints", void 0), Z(this, "_constraints", void 0), Z(this, "_enabled", !0), Z(this, "_deviceName", "default"), Z(this, "tryResumeVideoForIOS15_16WeChat", () => ye(this, null, function* () { + (RC() || bj()) && !function() { + const k = yi(); + if (k.os !== Zo.IOS || !k.osVersion) + return !1; + const N = k.osVersion.split("."); + return Number(N[0]) === 15 && Number(N[1]) >= 2; + }() && UZ() && this._enabled && !this._isClosed && (ie.debug("[".concat(this.getTrackId(), "] try capture camera media device for interrupted iOS 15 device on WeChat.")), yield this.renewMediaStreamTrack()); + })), this._config = c, this._originalConstraints = p, this._constraints = p, this._deviceName = s.label, this._encoderConfig = Eg(this._config.encoderConfig), $i.on(ds.IOS_15_16_INTERRUPTION_END, this.tryResumeVideoForIOS15_16WeChat), $i.on(ds.IOS_INTERRUPTION_END, this.tryResumeVideoForIOS15_16WeChat), this.bindProcessorContextEvents(); + } + setDevice(s) { + return ye(this, null, function* () { + return typeof s == "string" ? this._setDeviceById(s) : s.deviceId ? this._setDeviceById(s.deviceId) : s.facingMode ? this._setDeviceByFacingModel(s.facingMode) : void 0; + }); + } + _setDeviceById(s) { + return ye(this, null, function* () { + if (ie.info("[".concat(this.getTrackId(), "] set device to ").concat(s)), this._enabled) + try { + const c = yield ch.getDeviceById(s), p = {}; + p.video = hh({}, this._constraints), p.video.deviceId = { exact: s }, p.video.facingMode = void 0, this._originMediaStreamTrack.stop(); + let m = null; + try { + m = yield lh(p, this.getTrackId()); + } catch (T) { + throw ie.error("[".concat(this.getTrackId(), "] setDevice failed"), T.toString()), m = yield lh({ video: this._constraints }, this.getTrackId()), yield this._updateOriginMediaStreamTrack(m.getVideoTracks()[0], !1), T; + } + yield this._updateOriginMediaStreamTrack(m.getVideoTracks()[0], !1), this.updateMediaStreamTrackResolution(), this._deviceName = c.label, this._config.cameraId = s, this._constraints.deviceId = { exact: s }; + } catch (c) { + throw ie.error("[".concat(this.getTrackId(), "] setDevice error"), c.toString()), c; + } + else + try { + const c = yield ch.getDeviceById(s); + this._deviceName = c.label, this._config.cameraId = s, this._constraints.deviceId = { exact: s }; + } catch (c) { + throw ie.error("[".concat(this.getTrackId(), "] setDevice error"), c.toString()), c; + } + ie.info("[".concat(this.getTrackId(), "] setDevice success")); + }); + } + _setDeviceByFacingModel(s) { + return ye(this, null, function* () { + ie.info("[".concat(this.getTrackId(), "] set facingMode ").concat(s)); + const c = { video: hh(hh({}, this._constraints), {}, { deviceId: void 0, facingMode: { exact: s } }) }; + if (this._enabled) { + this._originMediaStreamTrack.stop(); + let p = null; + try { + p = yield lh(c, this.getTrackId()); + } catch (m) { + throw ie.error("[".concat(this.getTrackId(), "] setDeviceByFacingModel failed"), m.toString()), p = yield lh({ video: this._constraints }, this.getTrackId()), yield this._updateOriginMediaStreamTrack(p.getVideoTracks()[0], !1), m; + } + yield this._updateOriginMediaStreamTrack(p.getVideoTracks()[0], !1), this.updateMediaStreamTrackResolution(); + } + this._deviceName = "", this._config.facingMode = s, this._config.cameraId = void 0, this._constraints = hh({}, c.video), ie.info("[".concat(this.getTrackId(), "] setDeviceByFacingModel success")); + }); + } + setEnabled(s, c) { + return ye(this, null, function* () { + if (!c) { + if (s === this._enabled) + return; + this.stateCheck("enabled", s); + } + if (ie.info("[".concat(this.getTrackId(), "] start setEnabled"), s), s) { + try { + if (this.isExternalTrack) + this._originMediaStreamTrack.enabled = !0; + else { + const p = yield lh({ video: this._constraints }, this.getTrackId()); + yield this._updateOriginMediaStreamTrack(p.getVideoTracks()[0], !1); + } + yield Ji(this, lr.NEED_ENABLE_TRACK, this); + } catch (p) { + throw ie.error("[".concat(this.getTrackId(), "] setEnabled true error"), p.toString()), p; + } + this.updateMediaStreamTrackResolution(), ie.info("[".concat(this.getTrackId(), "] setEnabled to true success")), c || (this._enabled = !0); + } else { + this.isExternalTrack ? this._originMediaStreamTrack.enabled = !1 : (this._originMediaStreamTrack.onended = null, this._originMediaStreamTrack.stop()), c || (this._enabled = !1); + try { + yield Ji(this, lr.NEED_DISABLE_TRACK, this); + } catch (p) { + throw ie.error("[".concat(this.getTrackId(), "] setEnabled to false error"), p.toString()), p; + } + ie.info("[".concat(this.getTrackId(), "] setEnabled to false success")); + } + }); + } + setEncoderConfiguration(s, c) { + return ye(this, null, function* () { + if (!this._enabled) + throw new mt(_e.TRACK_IS_DISABLED, "can not set encoder configuration when track is disabled"); + s === "720p_auto" ? this.startMonitorStats() : this._statsTimer && (window.clearInterval(this._statsTimer), this._statsTimer = null), s = Eg(s), this._forceBitrateLimit && (s.bitrateMax = this._forceBitrateLimit.max_bitrate ? this._forceBitrateLimit.max_bitrate : s.bitrateMax, s.bitrateMin = this._forceBitrateLimit.min_bitrate ? this._forceBitrateLimit.min_bitrate : s.bitrateMin); + const p = ca(this._config); + p.encoderConfig = s; + const m = kM(p); + (ks() || Rl() || vg()) && (m.deviceId = void 0), ie.debug("[".concat(this.getTrackId(), "] setEncoderConfiguration applyConstraints"), JSON.stringify(s), JSON.stringify(m)); + try { + yield this._originMediaStreamTrack.applyConstraints(m), this.updateMediaStreamTrackResolution(); + } catch (T) { + const D = new mt(_e.UNEXPECTED_ERROR, T.toString()); + throw ie.error("[".concat(this.getTrackId(), "] applyConstraints error"), D.toString()), D; + } + this._config = p, this._constraints = m, this._originalConstraints = m, this._encoderConfig = s, this._hints.indexOf(ua.SCREEN_TRACK) === -1 && this.updateBitrateFromProfile(); + try { + yield Ji(this, lr.NEED_UPDATE_VIDEO_ENCODER, this); + } catch (T) { + return T.throw(ie); + } + }); + } + _getDefaultPlayerConfig() { + return { mirror: !0, fit: "cover" }; + } + onTrackEnded() { + if ((Rl() || vg()) && this._enabled && !this._isClosed && $i.duringInterruption) { + const s = () => ye(this, null, function* () { + $i.off(ds.IOS_INTERRUPTION_END, s), this._enabled && !this._isClosed && (ie.debug("[".concat(this.getTrackId(), "] try capture camera media device for interrupted iOS device.")), yield this.setEnabled(!1), yield this.setEnabled(!0)); + }); + $i.on(ds.IOS_INTERRUPTION_END, s); + } else + ie.debug("[".concat(this.getTrackId(), "] track ended")), this.safeEmit(c_.TRACK_ENDED); + } + renewMediaStreamTrack(s) { + return ye(this, null, function* () { + const c = s || this._constraints, p = ch.searchDeviceIdByName(this._deviceName); + if (p && !c.deviceId && (c.deviceId = { exact: p }), this._enabled) { + const m = yield lh({ video: c }, this.getTrackId()); + this._constraints = c, yield this._updateOriginMediaStreamTrack(m.getVideoTracks()[0], !0), this.updateMediaStreamTrackResolution(); + } + }); + } + close() { + super.close(), $i.off(ds.IOS_15_16_INTERRUPTION_END, this.tryResumeVideoForIOS15_16WeChat), $i.off(ds.IOS_INTERRUPTION_END, this.tryResumeVideoForIOS15_16WeChat); + } + clone(s) { + let c = !(arguments.length > 1 && arguments[1] !== void 0) || arguments[1], p = this._encoderConfig; + s && (p = hh(hh({}, p), Eg(s))), p = ES(p); + const m = ra(8, "track-cam-cloned-"), T = new d_(c ? this._mediaStreamTrack.clone() : this._mediaStreamTrack, ES(hh(hh({}, this._config), {}, { encoderConfig: p })), ES(this._constraints), ES(this._scalabilityMode), this._optimizationMode, m); + return s && p && T.setEncoderConfiguration(p), ie.debug("clone track from ".concat(this.getTrackId(), " to ").concat(m, ", clone ").concat(c)), T; + } + bindProcessorContextEvents() { + this.processorContext.on(Fc.REQUEST_UPDATE_CONSTRAINTS, (s, c, p) => ye(this, null, function* () { + try { + const m = Object.assign({}, this._originalConstraints, ...s); + yield this.renewMediaStreamTrack(m), c(); + } catch (m) { + p(m); + } + })), this.processorContext.on(Fc.REQUEST_CONSTRAINTS, (s) => ye(this, null, function* () { + s(this._originMediaStreamTrack.getSettings()); + })); + } + } + function mQ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function NM(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? mQ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : mQ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function P5(h, s, c, p) { + c.optimizationMode && (p && p.width && p.height ? (c.encoderConfig = NM(NM({}, p), {}, { bitrateMin: p.bitrateMin, bitrateMax: p.bitrateMax }), c.optimizationMode !== "motion" && c.optimizationMode !== "detail" || (s.contentHint = c.optimizationMode, s.contentHint === c.optimizationMode ? ie.debug("[".concat(h, "] set content hint to"), c.optimizationMode) : ie.debug("[".concat(h, "] set content hint failed")))) : ie.warning("[".concat(h, "] can not apply optimization mode bitrate config, no encoderConfig"))); + } + function yQ(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function LM(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? yQ(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : yQ(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + St([Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], d_.prototype, "setDevice", null), St([NC("CameraVideoTrack", "_enabledMutex"), Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Boolean, Boolean]), ge("design:returntype", ot)], d_.prototype, "setEnabled", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ao(), ge("design:type", Function), ge("design:paramtypes", [Object, Boolean]), ge("design:returntype", ot)], d_.prototype, "setEncoderConfiguration", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], d_.prototype, "close", null); + class _Q extends $J { + getUserId() { + return this._userId; + } + constructor(s, c, p, m) { + super(s, "track-".concat(s.kind, "-").concat(c, "-").concat(m.clientId, "_").concat(ra(5, ""))), Z(this, "_userId", void 0), Z(this, "_uintId", void 0), Z(this, "_isDestroyed", !1), Z(this, "store", void 0), Z(this, "processor", void 0), this._userId = c, this._uintId = p, this.store = m; + } + _updateOriginMediaStreamTrack(s) { + this._originMediaStreamTrack = s, this._mediaStreamTrack = s, this._updatePlayerSource(), this.processor && this.processor.updateInput({ track: this._originMediaStreamTrack, context: this.processorContext }); + } + _destroy() { + this._isDestroyed = !0, ie.info("[".concat(this.getTrackId(), "] is destroyed")), this.stop(), super.close(); + } + getProcessorStats() { + return this.processorContext.gatherStats(); + } + getProcessorUsage() { + return this.processorContext.gatherUsage(); + } + } + class Cg extends _Q { + get isPlaying() { + return !(!this._player || this._player.videoElementStatus !== fl.PLAYING); + } + get __className__() { + return "RemoteVideoTrack"; + } + constructor(s, c, p, m) { + super(s, c, p, m), Z(this, "_videoVisibleTimer", null), Z(this, "_previousVideoVisibleStatus", void 0), Z(this, "_clearPreviousVideoVisibleStatus", () => this._previousVideoVisibleStatus = void 0), Z(this, "trackMediaType", "video"), Z(this, "_videoWidth", void 0), Z(this, "_videoHeight", void 0), Z(this, "_player", void 0), Z(this, "processorDestination", void 0), Z(this, "processorContext", void 0), this.updateMediaStreamTrackResolution(), this.processorContext = new iQ(this.getTrackId(), "remote"), this.processorDestination = new nQ(this.processorContext), this.bindProcessorDestinationEvents(); + } + getStats() { + return kC(() => { + ie.warning("[deprecated] RemoteVideoTrack.getStats will be removed in the future, use AgoraRTCClient.getRemoteVideoStats instead"); + }, "remoteVideoTrackGetStatsWarning"), pu(this, lr.GET_STATS) || LM({}, jJ); + } + play(s) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (typeof s == "string") { + const m = document.getElementById(s); + m ? s = m : (ie.warning("[".concat(this.getTrackId(), '] can not find "#').concat(s, '" element, use document.body')), s = document.body); + } + ie.debug("[".concat(this.getTrackId(), "] start video playback in ").concat(s instanceof HTMLVideoElement ? "HTMLVideoElement" : "HTMLElement"), JSON.stringify(c)); + const p = LM(LM({ fit: "cover" }, c), {}, { trackId: this.getTrackId(), element: s }); + this._player ? this._player.updateConfig(p) : (s instanceof HTMLVideoElement ? this._player = new k5(p) : this._player = new PM(p), this._player.updateVideoTrack(this._mediaStreamTrack), this._player.onFirstVideoFrameDecoded = () => { + this.store.subscribe(this.getUserId(), "video", void 0, void 0, Date.now()), this.safeEmit(u_.FIRST_FRAME_DECODED); + }, this._player.onVideoStateChanged = (m) => { + this.safeEmit(u_.VIDEO_STATE_CHANGED, m); + }), this._player.play(this.store.sessionId || void 0), this._videoVisibleTimer && window.clearInterval(this._videoVisibleTimer), this._clearPreviousVideoVisibleStatus(), this._videoVisibleTimer = window.setInterval(() => { + try { + const m = this.getVideoElementVisibleStatus(); + this.safeEmit(u_.VIDEO_ELEMENT_VISIBLE_STATUS, m); + } catch (m) { + } + }, Le("CHECK_VIDEO_VISIBLE_INTERVAL")); + } + stop() { + this._player && (this._videoVisibleTimer && (window.clearInterval(this._videoVisibleTimer), this._videoVisibleTimer = null), this._clearPreviousVideoVisibleStatus(), this._player.destroy(), this._player = void 0, ie.debug("[".concat(this.getTrackId(), "] stop video playback"))); + } + getCurrentFrameData() { + return this._player ? this._player.getCurrentFrame() : new ImageData(2, 2); + } + updateMediaStreamTrackResolution() { + pQ(this._originMediaStreamTrack).then((s) => { + let [c, p] = s; + this._videoHeight = p, this._videoWidth = c; + }).catch(nM); + } + _updatePlayerSource() { + ie.debug("[".concat(this.getTrackId(), "] update player source track")), this._player && this._player.updateVideoTrack(this._mediaStreamTrack); + } + getVideoElementVisibleStatus() { + try { + var s, c; + const p = this == null || (s = this._player) === null || s === void 0 ? void 0 : s.getContainerElement(), m = { track: this, element: this == null || (c = this._player) === null || c === void 0 ? void 0 : c.getVideoElement(), slot: p == null ? void 0 : p.parentElement }, { element: T, slot: D } = m; + if (this.isPlaying && T instanceof HTMLVideoElement && D instanceof HTMLElement) { + const k = HZ.checkOneElementVisible(T), N = Object.assign({}, k); + if (N.visible !== this._previousVideoVisibleStatus) { + this._previousVideoVisibleStatus = N.visible; + const U = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.REMOTE_VIDEO_TRACK_GET_VIDEO_VISIBLE, options: [this.getTrackId()] }); + N.visible ? U.onSuccess("Video is visible") : U.onSuccess("Invisible because of ".concat(N.reason)); + } + return N; + } + return; + } catch (p) { + throw new mt(_e.GET_VIDEO_ELEMENT_VISIBLE_ERROR, p.message); + } + } + pipe(s) { + if (this.processor === s) + return s; + if (s._source) + throw new mt(_e.INVALID_OPERATION, "Processor ".concat(s.name, " already piped, please call unpipe beforehand.")); + return this.unpipe(), this.processor = s, this.processor._source = this, s.updateInput({ track: this._originMediaStreamTrack, context: this.processorContext }), s; + } + unpipe() { + if (!this.processor) + return; + const s = this.processor; + this.processor._source = void 0, this.processor = void 0, s.reset(); + } + bindProcessorDestinationEvents() { + this.processorDestination.on(dl.ON_TRACK, (s) => ye(this, null, function* () { + s ? s !== this._mediaStreamTrack && (this._mediaStreamTrack = s, this._updatePlayerSource()) : this._mediaStreamTrack !== this._originMediaStreamTrack && (this._mediaStreamTrack = this._originMediaStreamTrack, this._updatePlayerSource()); + })); + } + unbindProcessorDestinationEvents() { + this.processorDestination.removeAllListeners(dl.ON_TRACK); + } + _destroy() { + super._destroy(), this.unbindProcessorDestinationEvents(); + } + _onSei(s) { + this.emit(l_.SEI_RECEIVED, s); + } + } + St([Pr({ argsMap: (h, s, c) => [h.getTrackId(), typeof s == "string" ? s : s instanceof HTMLVideoElement ? "HTMLVideoElement" : "HTMLElement", c] }), ge("design:type", Function), ge("design:paramtypes", [Object, Object]), ge("design:returntype", void 0)], Cg.prototype, "play", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Cg.prototype, "stop", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s.name] }), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", Object)], Cg.prototype, "pipe", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Cg.prototype, "unpipe", null); + class jd extends _Q { + get isPlaying() { + return this._useAudioElement ? hc.isPlaying(this.getTrackId()) : this._source.isPlayed; + } + get __className__() { + return "RemoteAudioTrack"; + } + constructor(s, c, p, m) { + super(s, c, p, m), Z(this, "trackMediaType", "audio"), Z(this, "_source", void 0), Z(this, "_useAudioElement", !0), Z(this, "_volume", 100), Z(this, "processorContext", void 0), Z(this, "processorDestination", void 0), Z(this, "_played", !1), Z(this, "_bypassWebAudio", !1), Le("DISABLE_WEBAUDIO") ? (this._source = new D5(), this._bypassWebAudio = !0, this._useAudioElement = !0) : (this._source = new GJ(s, !0), Le("REMOTE_AUDIO_TRACK_USES_WEB_AUDIO") && (this._useAudioElement = !1)), this._source.once(Lc.RECEIVE_TRACK_BUFFER, () => { + this.safeEmit(u_.FIRST_FRAME_DECODED); + }), this.processorContext = new oQ(this._source.context, this.getTrackId(), "remote"), this.processorDestination = new aQ(this.processorContext), this.bindProcessorDestinationEvents(), this._source.on(Lc.UPDATE_SOURCE, () => { + this.processor && this.processor.updateInput({ node: this._source.processSourceNode, context: this.processorContext }); + }); + } + setAudioFrameCallback(s) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 4096; + if (!s) + return this._source.removeAllListeners(Lc.ON_AUDIO_BUFFER), void this._source.stopGetAudioBuffer(); + this._source.startGetAudioBuffer(c), this._source.removeAllListeners(Lc.ON_AUDIO_BUFFER), this._source.on(Lc.ON_AUDIO_BUFFER, (p) => s(p)); + } + setVolume(s) { + this._volume = s, this._useAudioElement ? hc.setVolume(this.getTrackId(), s) : this._source.setVolume(s / 100); + } + setPlaybackDevice(s) { + return ye(this, null, function* () { + if (!this._useAudioElement || !Jv() && Le("RESTRICTION_SET_PLAYBACK_DEVICE")) + throw new mt(_e.NOT_SUPPORTED, "your browser does not support setting the audio output device"); + yield hc.setSinkID(this.getTrackId(), s); + }); + } + getVolumeLevel() { + return this._source.getAccurateVolumeLevel(); + } + getStats() { + return kC(() => { + ie.warning("[deprecated] RemoteAudioTrack.getStats will be removed in the future, use AgoraRTCClient.getRemoteAudioStats instead"); + }, "remoteAudioTrackGetStatsWarning"), pu(this, lr.GET_STATS) || LM({}, UJ); + } + play() { + ie.debug("[".concat(this.getTrackId(), "] start audio playback")), this._played = !0, this._useAudioElement ? (ie.debug("[".concat(this.getTrackId(), "] use audio element to play")), hc.play(this._mediaStreamTrack, this.getTrackId(), this._volume, this.store.sessionId || void 0)) : this._source.play(); + } + stop() { + ie.debug("[".concat(this.getTrackId(), "] stop audio playback")), this._played = !1, this._useAudioElement ? hc.stop(this.getTrackId()) : this._source.stop(); + } + _destroy() { + super._destroy(), this._played = !1, this.unbindProcessorDestinationEvents(), this._source.destroy(); + } + _isFreeze() { + return this._source.isFreeze; + } + _updatePlayerSource() { + let s = !(arguments.length > 0 && arguments[0] !== void 0) || arguments[0]; + ie.debug("[".concat(this.getTrackId(), "] update player source track")), s && this._source.updateTrack(this._mediaStreamTrack), this._useAudioElement && hc.updateTrack(this.getTrackId(), this._mediaStreamTrack); + } + pipe(s) { + if (this._bypassWebAudio) + throw new mt(_e.NOT_SUPPORTED, "can not pipe extension when WebAudio disabled"); + if (this.processor === s) + return s; + if (s._source) + throw new mt(_e.INVALID_OPERATION, "Processor ".concat(s.name, " already piped, please call unpipe beforehand.")); + return this.unpipe(), this.processor = s, this.processor._source = this, s.updateInput({ track: this._originMediaStreamTrack, node: this._source.processSourceNode, context: this.processorContext }), s; + } + unpipe() { + var s; + if (this._bypassWebAudio) + throw new mt(_e.NOT_SUPPORTED, "can not unpipe extension when WebAudio disabled"); + if (!this.processor) + return; + const c = this.processor; + (s = this._source.processSourceNode) === null || s === void 0 || s.disconnect(), this.processor._source = !1, this.processor = void 0, c.reset(); + } + bindProcessorDestinationEvents() { + this.processorDestination.on(dl.ON_TRACK, (s) => ye(this, null, function* () { + s ? s !== this._mediaStreamTrack && (this._mediaStreamTrack = s, this._updatePlayerSource(!1), this._source.processedNode = this._source.createMediaStreamSourceNode(s)) : this._mediaStreamTrack !== this._originMediaStreamTrack && (this._mediaStreamTrack = this._originMediaStreamTrack, this._updatePlayerSource()); + })), this.processorDestination.on(dl.ON_NODE, (s) => { + this._source.processedNode = s; + const c = !s; + this._useAudioElement !== c && (this._played ? (this.stop(), this._useAudioElement = c, this.play()) : this._useAudioElement = c); + }); + } + unbindProcessorDestinationEvents() { + this.processorDestination.removeAllListeners(dl.ON_TRACK), this.processorDestination.removeAllListeners(dl.ON_NODE); + } + } + St([Pr({ argsMap: (h, s) => [h.getTrackId(), s], throttleTime: 300 }), ge("design:type", Function), ge("design:paramtypes", [Number]), ge("design:returntype", void 0)], jd.prototype, "setVolume", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s] }), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], jd.prototype, "setPlaybackDevice", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], jd.prototype, "play", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], jd.prototype, "stop", null), St([Pr({ argsMap: (h, s) => [h.getTrackId(), s.name] }), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", Object)], jd.prototype, "pipe", null), St([Pr({ argsMap: (h) => [h.getTrackId()] }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], jd.prototype, "unpipe", null); + const um = new class extends Ra { + get visibility() { + return document.visibilityState; + } + get lastHiddenTime() { + return this._lastHiddenTime; + } + get lastVisibleTime() { + return this._lastVisibleTime; + } + constructor() { + super(), Z(this, "_lastHiddenTime", 0), Z(this, "_lastVisibleTime", 0), document.addEventListener("visibilitychange", () => { + document.visibilityState === "hidden" ? this._lastHiddenTime = performance.now() : this._lastVisibleTime = performance.now(), ie.debug("document visibility went ".concat(document.visibilityState)), this.emit("VISIBILITY_CHANGE", document.visibilityState); + }); + } + }(); + /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ + function XC(h) { + let s = h.length; + for (; --s >= 0; ) + h[s] = 0; + } + const N5 = 256, SQ = 286, Fx = 30, Bx = 15, L5 = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]), FM = new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]), ENe = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]), bQ = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), hm = new Array(576); + XC(hm); + const Ux = new Array(60); + XC(Ux); + const jx = new Array(512); + XC(jx); + const $x = new Array(256); + XC($x); + const F5 = new Array(29); + XC(F5); + const BM = new Array(Fx); + function B5(h, s, c, p, m) { + this.static_tree = h, this.extra_bits = s, this.extra_base = c, this.elems = p, this.max_length = m, this.has_stree = h && h.length; + } + let EQ, CQ, TQ; + function U5(h, s) { + this.dyn_tree = h, this.max_code = 0, this.stat_desc = s; + } + XC(BM); + const wQ = (h) => h < 256 ? jx[h] : jx[256 + (h >>> 7)], Vx = (h, s) => { + h.pending_buf[h.pending++] = 255 & s, h.pending_buf[h.pending++] = s >>> 8 & 255; + }, dh = (h, s, c) => { + h.bi_valid > 16 - c ? (h.bi_buf |= s << h.bi_valid & 65535, Vx(h, h.bi_buf), h.bi_buf = s >> 16 - h.bi_valid, h.bi_valid += c - 16) : (h.bi_buf |= s << h.bi_valid & 65535, h.bi_valid += c); + }, Tg = (h, s, c) => { + dh(h, c[2 * s], c[2 * s + 1]); + }, IQ = (h, s) => { + let c = 0; + do + c |= 1 & h, h >>>= 1, c <<= 1; + while (--s > 0); + return c >>> 1; + }, xQ = (h, s, c) => { + const p = new Array(16); + let m, T, D = 0; + for (m = 1; m <= Bx; m++) + D = D + c[m - 1] << 1, p[m] = D; + for (T = 0; T <= s; T++) { + let k = h[2 * T + 1]; + k !== 0 && (h[2 * T] = IQ(p[k]++, k)); + } + }, AQ = (h) => { + let s; + for (s = 0; s < SQ; s++) + h.dyn_ltree[2 * s] = 0; + for (s = 0; s < Fx; s++) + h.dyn_dtree[2 * s] = 0; + for (s = 0; s < 19; s++) + h.bl_tree[2 * s] = 0; + h.dyn_ltree[512] = 1, h.opt_len = h.static_len = 0, h.sym_next = h.matches = 0; + }, RQ = (h) => { + h.bi_valid > 8 ? Vx(h, h.bi_buf) : h.bi_valid > 0 && (h.pending_buf[h.pending++] = h.bi_buf), h.bi_buf = 0, h.bi_valid = 0; + }, DQ = (h, s, c, p) => { + const m = 2 * s, T = 2 * c; + return h[m] < h[T] || h[m] === h[T] && p[s] <= p[c]; + }, j5 = (h, s, c) => { + const p = h.heap[c]; + let m = c << 1; + for (; m <= h.heap_len && (m < h.heap_len && DQ(s, h.heap[m + 1], h.heap[m], h.depth) && m++, !DQ(s, p, h.heap[m], h.depth)); ) + h.heap[c] = h.heap[m], c = m, m <<= 1; + h.heap[c] = p; + }, OQ = (h, s, c) => { + let p, m, T, D, k = 0; + if (h.sym_next !== 0) + do + p = 255 & h.pending_buf[h.sym_buf + k++], p += (255 & h.pending_buf[h.sym_buf + k++]) << 8, m = h.pending_buf[h.sym_buf + k++], p === 0 ? Tg(h, m, s) : (T = $x[m], Tg(h, T + N5 + 1, s), D = L5[T], D !== 0 && (m -= F5[T], dh(h, m, D)), p--, T = wQ(p), Tg(h, T, c), D = FM[T], D !== 0 && (p -= BM[T], dh(h, p, D))); + while (k < h.sym_next); + Tg(h, 256, s); + }, $5 = (h, s) => { + const c = s.dyn_tree, p = s.stat_desc.static_tree, m = s.stat_desc.has_stree, T = s.stat_desc.elems; + let D, k, N, U = -1; + for (h.heap_len = 0, h.heap_max = 573, D = 0; D < T; D++) + c[2 * D] !== 0 ? (h.heap[++h.heap_len] = U = D, h.depth[D] = 0) : c[2 * D + 1] = 0; + for (; h.heap_len < 2; ) + N = h.heap[++h.heap_len] = U < 2 ? ++U : 0, c[2 * N] = 1, h.depth[N] = 0, h.opt_len--, m && (h.static_len -= p[2 * N + 1]); + for (s.max_code = U, D = h.heap_len >> 1; D >= 1; D--) + j5(h, c, D); + N = T; + do + D = h.heap[1], h.heap[1] = h.heap[h.heap_len--], j5(h, c, 1), k = h.heap[1], h.heap[--h.heap_max] = D, h.heap[--h.heap_max] = k, c[2 * N] = c[2 * D] + c[2 * k], h.depth[N] = (h.depth[D] >= h.depth[k] ? h.depth[D] : h.depth[k]) + 1, c[2 * D + 1] = c[2 * k + 1] = N, h.heap[1] = N++, j5(h, c, 1); + while (h.heap_len >= 2); + h.heap[--h.heap_max] = h.heap[1], ((V, G) => { + const K = G.dyn_tree, q = G.max_code, ue = G.stat_desc.static_tree, oe = G.stat_desc.has_stree, he = G.stat_desc.extra_bits, Ce = G.stat_desc.extra_base, ke = G.stat_desc.max_length; + let Ge, tt, Ye, et, ht, st, Ut = 0; + for (et = 0; et <= Bx; et++) + V.bl_count[et] = 0; + for (K[2 * V.heap[V.heap_max] + 1] = 0, Ge = V.heap_max + 1; Ge < 573; Ge++) + tt = V.heap[Ge], et = K[2 * K[2 * tt + 1] + 1] + 1, et > ke && (et = ke, Ut++), K[2 * tt + 1] = et, tt > q || (V.bl_count[et]++, ht = 0, tt >= Ce && (ht = he[tt - Ce]), st = K[2 * tt], V.opt_len += st * (et + ht), oe && (V.static_len += st * (ue[2 * tt + 1] + ht))); + if (Ut !== 0) { + do { + for (et = ke - 1; V.bl_count[et] === 0; ) + et--; + V.bl_count[et]--, V.bl_count[et + 1] += 2, V.bl_count[ke]--, Ut -= 2; + } while (Ut > 0); + for (et = ke; et !== 0; et--) + for (tt = V.bl_count[et]; tt !== 0; ) + Ye = V.heap[--Ge], Ye > q || (K[2 * Ye + 1] !== et && (V.opt_len += (et - K[2 * Ye + 1]) * K[2 * Ye], K[2 * Ye + 1] = et), tt--); + } + })(h, s), xQ(c, U, h.bl_count); + }, MQ = (h, s, c) => { + let p, m, T = -1, D = s[1], k = 0, N = 7, U = 4; + for (D === 0 && (N = 138, U = 3), s[2 * (c + 1) + 1] = 65535, p = 0; p <= c; p++) + m = D, D = s[2 * (p + 1) + 1], ++k < N && m === D || (k < U ? h.bl_tree[2 * m] += k : m !== 0 ? (m !== T && h.bl_tree[2 * m]++, h.bl_tree[32]++) : k <= 10 ? h.bl_tree[34]++ : h.bl_tree[36]++, k = 0, T = m, D === 0 ? (N = 138, U = 3) : m === D ? (N = 6, U = 3) : (N = 7, U = 4)); + }, kQ = (h, s, c) => { + let p, m, T = -1, D = s[1], k = 0, N = 7, U = 4; + for (D === 0 && (N = 138, U = 3), p = 0; p <= c; p++) + if (m = D, D = s[2 * (p + 1) + 1], !(++k < N && m === D)) { + if (k < U) + do + Tg(h, m, h.bl_tree); + while (--k != 0); + else + m !== 0 ? (m !== T && (Tg(h, m, h.bl_tree), k--), Tg(h, 16, h.bl_tree), dh(h, k - 3, 2)) : k <= 10 ? (Tg(h, 17, h.bl_tree), dh(h, k - 3, 3)) : (Tg(h, 18, h.bl_tree), dh(h, k - 11, 7)); + k = 0, T = m, D === 0 ? (N = 138, U = 3) : m === D ? (N = 6, U = 3) : (N = 7, U = 4); + } + }; + let PQ = !1; + const NQ = (h, s, c, p) => { + dh(h, 0 + (p ? 1 : 0), 3), RQ(h), Vx(h, c), Vx(h, ~c), c && h.pending_buf.set(h.window.subarray(s, s + c), h.pending), h.pending += c; + }; + var CNe = (h) => { + PQ || ((() => { + let s, c, p, m, T; + const D = new Array(16); + for (p = 0, m = 0; m < 28; m++) + for (F5[m] = p, s = 0; s < 1 << L5[m]; s++) + $x[p++] = m; + for ($x[p - 1] = m, T = 0, m = 0; m < 16; m++) + for (BM[m] = T, s = 0; s < 1 << FM[m]; s++) + jx[T++] = m; + for (T >>= 7; m < Fx; m++) + for (BM[m] = T << 7, s = 0; s < 1 << FM[m] - 7; s++) + jx[256 + T++] = m; + for (c = 0; c <= Bx; c++) + D[c] = 0; + for (s = 0; s <= 143; ) + hm[2 * s + 1] = 8, s++, D[8]++; + for (; s <= 255; ) + hm[2 * s + 1] = 9, s++, D[9]++; + for (; s <= 279; ) + hm[2 * s + 1] = 7, s++, D[7]++; + for (; s <= 287; ) + hm[2 * s + 1] = 8, s++, D[8]++; + for (xQ(hm, 287, D), s = 0; s < Fx; s++) + Ux[2 * s + 1] = 5, Ux[2 * s] = IQ(s, 5); + EQ = new B5(hm, L5, 257, SQ, Bx), CQ = new B5(Ux, FM, 0, Fx, Bx), TQ = new B5(new Array(0), ENe, 0, 19, 7); + })(), PQ = !0), h.l_desc = new U5(h.dyn_ltree, EQ), h.d_desc = new U5(h.dyn_dtree, CQ), h.bl_desc = new U5(h.bl_tree, TQ), h.bi_buf = 0, h.bi_valid = 0, AQ(h); + }, TNe = (h, s, c, p) => { + let m, T, D = 0; + h.level > 0 ? (h.strm.data_type === 2 && (h.strm.data_type = ((k) => { + let N, U = 4093624447; + for (N = 0; N <= 31; N++, U >>>= 1) + if (1 & U && k.dyn_ltree[2 * N] !== 0) + return 0; + if (k.dyn_ltree[18] !== 0 || k.dyn_ltree[20] !== 0 || k.dyn_ltree[26] !== 0) + return 1; + for (N = 32; N < N5; N++) + if (k.dyn_ltree[2 * N] !== 0) + return 1; + return 0; + })(h)), $5(h, h.l_desc), $5(h, h.d_desc), D = ((k) => { + let N; + for (MQ(k, k.dyn_ltree, k.l_desc.max_code), MQ(k, k.dyn_dtree, k.d_desc.max_code), $5(k, k.bl_desc), N = 18; N >= 3 && k.bl_tree[2 * bQ[N] + 1] === 0; N--) + ; + return k.opt_len += 3 * (N + 1) + 5 + 5 + 4, N; + })(h), m = h.opt_len + 3 + 7 >>> 3, T = h.static_len + 3 + 7 >>> 3, T <= m && (m = T)) : m = T = c + 5, c + 4 <= m && s !== -1 ? NQ(h, s, c, p) : h.strategy === 4 || T === m ? (dh(h, 2 + (p ? 1 : 0), 3), OQ(h, hm, Ux)) : (dh(h, 4 + (p ? 1 : 0), 3), ((k, N, U, V) => { + let G; + for (dh(k, N - 257, 5), dh(k, U - 1, 5), dh(k, V - 4, 4), G = 0; G < V; G++) + dh(k, k.bl_tree[2 * bQ[G] + 1], 3); + kQ(k, k.dyn_ltree, N - 1), kQ(k, k.dyn_dtree, U - 1); + })(h, h.l_desc.max_code + 1, h.d_desc.max_code + 1, D + 1), OQ(h, h.dyn_ltree, h.dyn_dtree)), AQ(h), p && RQ(h); + }, wNe = (h, s, c) => (h.pending_buf[h.sym_buf + h.sym_next++] = s, h.pending_buf[h.sym_buf + h.sym_next++] = s >> 8, h.pending_buf[h.sym_buf + h.sym_next++] = c, s === 0 ? h.dyn_ltree[2 * c]++ : (h.matches++, s--, h.dyn_ltree[2 * ($x[c] + N5 + 1)]++, h.dyn_dtree[2 * wQ(s)]++), h.sym_next === h.sym_end), INe = { _tr_init: CNe, _tr_stored_block: NQ, _tr_flush_block: TNe, _tr_tally: wNe, _tr_align: (h) => { + dh(h, 2, 3), Tg(h, 256, hm), ((s) => { + s.bi_valid === 16 ? (Vx(s, s.bi_buf), s.bi_buf = 0, s.bi_valid = 0) : s.bi_valid >= 8 && (s.pending_buf[s.pending++] = 255 & s.bi_buf, s.bi_buf >>= 8, s.bi_valid -= 8); + })(h); + } }, zx = (h, s, c, p) => { + let m = 65535 & h | 0, T = h >>> 16 & 65535 | 0, D = 0; + for (; c !== 0; ) { + D = c > 2e3 ? 2e3 : c, c -= D; + do + m = m + s[p++] | 0, T = T + m | 0; + while (--D); + m %= 65521, T %= 65521; + } + return m | T << 16 | 0; + }; + const xNe = new Uint32Array((() => { + let h, s = []; + for (var c = 0; c < 256; c++) { + h = c; + for (var p = 0; p < 8; p++) + h = 1 & h ? 3988292384 ^ h >>> 1 : h >>> 1; + s[c] = h; + } + return s; + })()); + var Xl = (h, s, c, p) => { + const m = xNe, T = p + c; + h ^= -1; + for (let D = p; D < T; D++) + h = h >>> 8 ^ m[255 & (h ^ s[D])]; + return -1 ^ h; + }, RS = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }, KC = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_MEM_ERROR: -4, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; + const { _tr_init: ANe, _tr_stored_block: V5, _tr_flush_block: RNe, _tr_tally: f_, _tr_align: DNe } = INe, { Z_NO_FLUSH: p_, Z_PARTIAL_FLUSH: ONe, Z_FULL_FLUSH: MNe, Z_FINISH: $d, Z_BLOCK: LQ, Z_OK: dc, Z_STREAM_END: FQ, Z_STREAM_ERROR: wg, Z_DATA_ERROR: kNe, Z_BUF_ERROR: z5, Z_DEFAULT_COMPRESSION: PNe, Z_FILTERED: NNe, Z_HUFFMAN_ONLY: UM, Z_RLE: LNe, Z_FIXED: FNe, Z_DEFAULT_STRATEGY: BNe, Z_UNKNOWN: UNe, Z_DEFLATED: jM } = KC, H5 = 286, jNe = 30, $Ne = 19, VNe = 2 * H5 + 1, zNe = 15, DS = 258, Ig = 262, ZC = 42, OS = 113, Hx = 666, MS = (h, s) => (h.msg = RS[s], s), BQ = (h) => 2 * h - (h > 4 ? 9 : 0), g_ = (h) => { + let s = h.length; + for (; --s >= 0; ) + h[s] = 0; + }, HNe = (h) => { + let s, c, p, m = h.w_size; + s = h.hash_size, p = s; + do + c = h.head[--p], h.head[p] = c >= m ? c - m : 0; + while (--s); + s = m, p = s; + do + c = h.prev[--p], h.prev[p] = c >= m ? c - m : 0; + while (--s); + }; + let v_ = (h, s, c) => (s << h.hash_shift ^ c) & h.hash_mask; + const Zh = (h) => { + const s = h.state; + let c = s.pending; + c > h.avail_out && (c = h.avail_out), c !== 0 && (h.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + c), h.next_out), h.next_out += c, s.pending_out += c, h.total_out += c, h.avail_out -= c, s.pending -= c, s.pending === 0 && (s.pending_out = 0)); + }, qh = (h, s) => { + RNe(h, h.block_start >= 0 ? h.block_start : -1, h.strstart - h.block_start, s), h.block_start = h.strstart, Zh(h.strm); + }, eo = (h, s) => { + h.pending_buf[h.pending++] = s; + }, Wx = (h, s) => { + h.pending_buf[h.pending++] = s >>> 8 & 255, h.pending_buf[h.pending++] = 255 & s; + }, W5 = (h, s, c, p) => { + let m = h.avail_in; + return m > p && (m = p), m === 0 ? 0 : (h.avail_in -= m, s.set(h.input.subarray(h.next_in, h.next_in + m), c), h.state.wrap === 1 ? h.adler = zx(h.adler, s, m, c) : h.state.wrap === 2 && (h.adler = Xl(h.adler, s, m, c)), h.next_in += m, h.total_in += m, m); + }, UQ = (h, s) => { + let c, p, m = h.max_chain_length, T = h.strstart, D = h.prev_length, k = h.nice_match; + const N = h.strstart > h.w_size - Ig ? h.strstart - (h.w_size - Ig) : 0, U = h.window, V = h.w_mask, G = h.prev, K = h.strstart + DS; + let q = U[T + D - 1], ue = U[T + D]; + h.prev_length >= h.good_match && (m >>= 2), k > h.lookahead && (k = h.lookahead); + do + if (c = s, U[c + D] === ue && U[c + D - 1] === q && U[c] === U[T] && U[++c] === U[T + 1]) { + T += 2, c++; + do + ; + while (U[++T] === U[++c] && U[++T] === U[++c] && U[++T] === U[++c] && U[++T] === U[++c] && U[++T] === U[++c] && U[++T] === U[++c] && U[++T] === U[++c] && U[++T] === U[++c] && T < K); + if (p = DS - (K - T), T = K - DS, p > D) { + if (h.match_start = s, D = p, p >= k) + break; + q = U[T + D - 1], ue = U[T + D]; + } + } + while ((s = G[s & V]) > N && --m != 0); + return D <= h.lookahead ? D : h.lookahead; + }, qC = (h) => { + const s = h.w_size; + let c, p, m; + do { + if (p = h.window_size - h.lookahead - h.strstart, h.strstart >= s + (s - Ig) && (h.window.set(h.window.subarray(s, s + s - p), 0), h.match_start -= s, h.strstart -= s, h.block_start -= s, h.insert > h.strstart && (h.insert = h.strstart), HNe(h), p += s), h.strm.avail_in === 0) + break; + if (c = W5(h.strm, h.window, h.strstart + h.lookahead, p), h.lookahead += c, h.lookahead + h.insert >= 3) + for (m = h.strstart - h.insert, h.ins_h = h.window[m], h.ins_h = v_(h, h.ins_h, h.window[m + 1]); h.insert && (h.ins_h = v_(h, h.ins_h, h.window[m + 3 - 1]), h.prev[m & h.w_mask] = h.head[h.ins_h], h.head[h.ins_h] = m, m++, h.insert--, !(h.lookahead + h.insert < 3)); ) + ; + } while (h.lookahead < Ig && h.strm.avail_in !== 0); + }, jQ = (h, s) => { + let c, p, m, T = h.pending_buf_size - 5 > h.w_size ? h.w_size : h.pending_buf_size - 5, D = 0, k = h.strm.avail_in; + do { + if (c = 65535, m = h.bi_valid + 42 >> 3, h.strm.avail_out < m || (m = h.strm.avail_out - m, p = h.strstart - h.block_start, c > p + h.strm.avail_in && (c = p + h.strm.avail_in), c > m && (c = m), c < T && (c === 0 && s !== $d || s === p_ || c !== p + h.strm.avail_in))) + break; + D = s === $d && c === p + h.strm.avail_in ? 1 : 0, V5(h, 0, 0, D), h.pending_buf[h.pending - 4] = c, h.pending_buf[h.pending - 3] = c >> 8, h.pending_buf[h.pending - 2] = ~c, h.pending_buf[h.pending - 1] = ~c >> 8, Zh(h.strm), p && (p > c && (p = c), h.strm.output.set(h.window.subarray(h.block_start, h.block_start + p), h.strm.next_out), h.strm.next_out += p, h.strm.avail_out -= p, h.strm.total_out += p, h.block_start += p, c -= p), c && (W5(h.strm, h.strm.output, h.strm.next_out, c), h.strm.next_out += c, h.strm.avail_out -= c, h.strm.total_out += c); + } while (D === 0); + return k -= h.strm.avail_in, k && (k >= h.w_size ? (h.matches = 2, h.window.set(h.strm.input.subarray(h.strm.next_in - h.w_size, h.strm.next_in), 0), h.strstart = h.w_size, h.insert = h.strstart) : (h.window_size - h.strstart <= k && (h.strstart -= h.w_size, h.window.set(h.window.subarray(h.w_size, h.w_size + h.strstart), 0), h.matches < 2 && h.matches++, h.insert > h.strstart && (h.insert = h.strstart)), h.window.set(h.strm.input.subarray(h.strm.next_in - k, h.strm.next_in), h.strstart), h.strstart += k, h.insert += k > h.w_size - h.insert ? h.w_size - h.insert : k), h.block_start = h.strstart), h.high_water < h.strstart && (h.high_water = h.strstart), D ? 4 : s !== p_ && s !== $d && h.strm.avail_in === 0 && h.strstart === h.block_start ? 2 : (m = h.window_size - h.strstart, h.strm.avail_in > m && h.block_start >= h.w_size && (h.block_start -= h.w_size, h.strstart -= h.w_size, h.window.set(h.window.subarray(h.w_size, h.w_size + h.strstart), 0), h.matches < 2 && h.matches++, m += h.w_size, h.insert > h.strstart && (h.insert = h.strstart)), m > h.strm.avail_in && (m = h.strm.avail_in), m && (W5(h.strm, h.window, h.strstart, m), h.strstart += m, h.insert += m > h.w_size - h.insert ? h.w_size - h.insert : m), h.high_water < h.strstart && (h.high_water = h.strstart), m = h.bi_valid + 42 >> 3, m = h.pending_buf_size - m > 65535 ? 65535 : h.pending_buf_size - m, T = m > h.w_size ? h.w_size : m, p = h.strstart - h.block_start, (p >= T || (p || s === $d) && s !== p_ && h.strm.avail_in === 0 && p <= m) && (c = p > m ? m : p, D = s === $d && h.strm.avail_in === 0 && c === p ? 1 : 0, V5(h, h.block_start, c, D), h.block_start += c, Zh(h.strm)), D ? 3 : 1); + }, G5 = (h, s) => { + let c, p; + for (; ; ) { + if (h.lookahead < Ig) { + if (qC(h), h.lookahead < Ig && s === p_) + return 1; + if (h.lookahead === 0) + break; + } + if (c = 0, h.lookahead >= 3 && (h.ins_h = v_(h, h.ins_h, h.window[h.strstart + 3 - 1]), c = h.prev[h.strstart & h.w_mask] = h.head[h.ins_h], h.head[h.ins_h] = h.strstart), c !== 0 && h.strstart - c <= h.w_size - Ig && (h.match_length = UQ(h, c)), h.match_length >= 3) + if (p = f_(h, h.strstart - h.match_start, h.match_length - 3), h.lookahead -= h.match_length, h.match_length <= h.max_lazy_match && h.lookahead >= 3) { + h.match_length--; + do + h.strstart++, h.ins_h = v_(h, h.ins_h, h.window[h.strstart + 3 - 1]), c = h.prev[h.strstart & h.w_mask] = h.head[h.ins_h], h.head[h.ins_h] = h.strstart; + while (--h.match_length != 0); + h.strstart++; + } else + h.strstart += h.match_length, h.match_length = 0, h.ins_h = h.window[h.strstart], h.ins_h = v_(h, h.ins_h, h.window[h.strstart + 1]); + else + p = f_(h, 0, h.window[h.strstart]), h.lookahead--, h.strstart++; + if (p && (qh(h, !1), h.strm.avail_out === 0)) + return 1; + } + return h.insert = h.strstart < 2 ? h.strstart : 2, s === $d ? (qh(h, !0), h.strm.avail_out === 0 ? 3 : 4) : h.sym_next && (qh(h, !1), h.strm.avail_out === 0) ? 1 : 2; + }, JC = (h, s) => { + let c, p, m; + for (; ; ) { + if (h.lookahead < Ig) { + if (qC(h), h.lookahead < Ig && s === p_) + return 1; + if (h.lookahead === 0) + break; + } + if (c = 0, h.lookahead >= 3 && (h.ins_h = v_(h, h.ins_h, h.window[h.strstart + 3 - 1]), c = h.prev[h.strstart & h.w_mask] = h.head[h.ins_h], h.head[h.ins_h] = h.strstart), h.prev_length = h.match_length, h.prev_match = h.match_start, h.match_length = 2, c !== 0 && h.prev_length < h.max_lazy_match && h.strstart - c <= h.w_size - Ig && (h.match_length = UQ(h, c), h.match_length <= 5 && (h.strategy === NNe || h.match_length === 3 && h.strstart - h.match_start > 4096) && (h.match_length = 2)), h.prev_length >= 3 && h.match_length <= h.prev_length) { + m = h.strstart + h.lookahead - 3, p = f_(h, h.strstart - 1 - h.prev_match, h.prev_length - 3), h.lookahead -= h.prev_length - 1, h.prev_length -= 2; + do + ++h.strstart <= m && (h.ins_h = v_(h, h.ins_h, h.window[h.strstart + 3 - 1]), c = h.prev[h.strstart & h.w_mask] = h.head[h.ins_h], h.head[h.ins_h] = h.strstart); + while (--h.prev_length != 0); + if (h.match_available = 0, h.match_length = 2, h.strstart++, p && (qh(h, !1), h.strm.avail_out === 0)) + return 1; + } else if (h.match_available) { + if (p = f_(h, 0, h.window[h.strstart - 1]), p && qh(h, !1), h.strstart++, h.lookahead--, h.strm.avail_out === 0) + return 1; + } else + h.match_available = 1, h.strstart++, h.lookahead--; + } + return h.match_available && (p = f_(h, 0, h.window[h.strstart - 1]), h.match_available = 0), h.insert = h.strstart < 2 ? h.strstart : 2, s === $d ? (qh(h, !0), h.strm.avail_out === 0 ? 3 : 4) : h.sym_next && (qh(h, !1), h.strm.avail_out === 0) ? 1 : 2; + }; + function xg(h, s, c, p, m) { + this.good_length = h, this.max_lazy = s, this.nice_length = c, this.max_chain = p, this.func = m; + } + const Gx = [new xg(0, 0, 0, 0, jQ), new xg(4, 4, 8, 4, G5), new xg(4, 5, 16, 8, G5), new xg(4, 6, 32, 32, G5), new xg(4, 4, 16, 16, JC), new xg(8, 16, 32, 32, JC), new xg(8, 16, 128, 128, JC), new xg(8, 32, 128, 256, JC), new xg(32, 128, 258, 1024, JC), new xg(32, 258, 258, 4096, JC)]; + function WNe() { + this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = jM, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(2 * VNe), this.dyn_dtree = new Uint16Array(2 * (2 * jNe + 1)), this.bl_tree = new Uint16Array(2 * (2 * $Ne + 1)), g_(this.dyn_ltree), g_(this.dyn_dtree), g_(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(zNe + 1), this.heap = new Uint16Array(2 * H5 + 1), g_(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(2 * H5 + 1), g_(this.depth), this.sym_buf = 0, this.lit_bufsize = 0, this.sym_next = 0, this.sym_end = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; + } + const Yx = (h) => { + if (!h) + return 1; + const s = h.state; + return !s || s.strm !== h || s.status !== ZC && s.status !== 57 && s.status !== 69 && s.status !== 73 && s.status !== 91 && s.status !== 103 && s.status !== OS && s.status !== Hx ? 1 : 0; + }, $Q = (h) => { + if (Yx(h)) + return MS(h, wg); + h.total_in = h.total_out = 0, h.data_type = UNe; + const s = h.state; + return s.pending = 0, s.pending_out = 0, s.wrap < 0 && (s.wrap = -s.wrap), s.status = s.wrap === 2 ? 57 : s.wrap ? ZC : OS, h.adler = s.wrap === 2 ? 0 : 1, s.last_flush = -2, ANe(s), dc; + }, VQ = (h) => { + const s = $Q(h); + var c; + return s === dc && ((c = h.state).window_size = 2 * c.w_size, g_(c.head), c.max_lazy_match = Gx[c.level].max_lazy, c.good_match = Gx[c.level].good_length, c.nice_match = Gx[c.level].nice_length, c.max_chain_length = Gx[c.level].max_chain, c.strstart = 0, c.block_start = 0, c.lookahead = 0, c.insert = 0, c.match_length = c.prev_length = 2, c.match_available = 0, c.ins_h = 0), s; + }, zQ = (h, s, c, p, m, T) => { + if (!h) + return wg; + let D = 1; + if (s === PNe && (s = 6), p < 0 ? (D = 0, p = -p) : p > 15 && (D = 2, p -= 16), m < 1 || m > 9 || c !== jM || p < 8 || p > 15 || s < 0 || s > 9 || T < 0 || T > FNe || p === 8 && D !== 1) + return MS(h, wg); + p === 8 && (p = 9); + const k = new WNe(); + return h.state = k, k.strm = h, k.status = ZC, k.wrap = D, k.gzhead = null, k.w_bits = p, k.w_size = 1 << k.w_bits, k.w_mask = k.w_size - 1, k.hash_bits = m + 7, k.hash_size = 1 << k.hash_bits, k.hash_mask = k.hash_size - 1, k.hash_shift = ~~((k.hash_bits + 3 - 1) / 3), k.window = new Uint8Array(2 * k.w_size), k.head = new Uint16Array(k.hash_size), k.prev = new Uint16Array(k.w_size), k.lit_bufsize = 1 << m + 6, k.pending_buf_size = 4 * k.lit_bufsize, k.pending_buf = new Uint8Array(k.pending_buf_size), k.sym_buf = k.lit_bufsize, k.sym_end = 3 * (k.lit_bufsize - 1), k.level = s, k.strategy = T, k.method = c, VQ(h); + }; + var GNe = (h, s) => { + if (Yx(h) || s > LQ || s < 0) + return h ? MS(h, wg) : wg; + const c = h.state; + if (!h.output || h.avail_in !== 0 && !h.input || c.status === Hx && s !== $d) + return MS(h, h.avail_out === 0 ? z5 : wg); + const p = c.last_flush; + if (c.last_flush = s, c.pending !== 0) { + if (Zh(h), h.avail_out === 0) + return c.last_flush = -1, dc; + } else if (h.avail_in === 0 && BQ(s) <= BQ(p) && s !== $d) + return MS(h, z5); + if (c.status === Hx && h.avail_in !== 0) + return MS(h, z5); + if (c.status === ZC && c.wrap === 0 && (c.status = OS), c.status === ZC) { + let m = jM + (c.w_bits - 8 << 4) << 8, T = -1; + if (T = c.strategy >= UM || c.level < 2 ? 0 : c.level < 6 ? 1 : c.level === 6 ? 2 : 3, m |= T << 6, c.strstart !== 0 && (m |= 32), m += 31 - m % 31, Wx(c, m), c.strstart !== 0 && (Wx(c, h.adler >>> 16), Wx(c, 65535 & h.adler)), h.adler = 1, c.status = OS, Zh(h), c.pending !== 0) + return c.last_flush = -1, dc; + } + if (c.status === 57) { + if (h.adler = 0, eo(c, 31), eo(c, 139), eo(c, 8), c.gzhead) + eo(c, (c.gzhead.text ? 1 : 0) + (c.gzhead.hcrc ? 2 : 0) + (c.gzhead.extra ? 4 : 0) + (c.gzhead.name ? 8 : 0) + (c.gzhead.comment ? 16 : 0)), eo(c, 255 & c.gzhead.time), eo(c, c.gzhead.time >> 8 & 255), eo(c, c.gzhead.time >> 16 & 255), eo(c, c.gzhead.time >> 24 & 255), eo(c, c.level === 9 ? 2 : c.strategy >= UM || c.level < 2 ? 4 : 0), eo(c, 255 & c.gzhead.os), c.gzhead.extra && c.gzhead.extra.length && (eo(c, 255 & c.gzhead.extra.length), eo(c, c.gzhead.extra.length >> 8 & 255)), c.gzhead.hcrc && (h.adler = Xl(h.adler, c.pending_buf, c.pending, 0)), c.gzindex = 0, c.status = 69; + else if (eo(c, 0), eo(c, 0), eo(c, 0), eo(c, 0), eo(c, 0), eo(c, c.level === 9 ? 2 : c.strategy >= UM || c.level < 2 ? 4 : 0), eo(c, 3), c.status = OS, Zh(h), c.pending !== 0) + return c.last_flush = -1, dc; + } + if (c.status === 69) { + if (c.gzhead.extra) { + let m = c.pending, T = (65535 & c.gzhead.extra.length) - c.gzindex; + for (; c.pending + T > c.pending_buf_size; ) { + let k = c.pending_buf_size - c.pending; + if (c.pending_buf.set(c.gzhead.extra.subarray(c.gzindex, c.gzindex + k), c.pending), c.pending = c.pending_buf_size, c.gzhead.hcrc && c.pending > m && (h.adler = Xl(h.adler, c.pending_buf, c.pending - m, m)), c.gzindex += k, Zh(h), c.pending !== 0) + return c.last_flush = -1, dc; + m = 0, T -= k; + } + let D = new Uint8Array(c.gzhead.extra); + c.pending_buf.set(D.subarray(c.gzindex, c.gzindex + T), c.pending), c.pending += T, c.gzhead.hcrc && c.pending > m && (h.adler = Xl(h.adler, c.pending_buf, c.pending - m, m)), c.gzindex = 0; + } + c.status = 73; + } + if (c.status === 73) { + if (c.gzhead.name) { + let m, T = c.pending; + do { + if (c.pending === c.pending_buf_size) { + if (c.gzhead.hcrc && c.pending > T && (h.adler = Xl(h.adler, c.pending_buf, c.pending - T, T)), Zh(h), c.pending !== 0) + return c.last_flush = -1, dc; + T = 0; + } + m = c.gzindex < c.gzhead.name.length ? 255 & c.gzhead.name.charCodeAt(c.gzindex++) : 0, eo(c, m); + } while (m !== 0); + c.gzhead.hcrc && c.pending > T && (h.adler = Xl(h.adler, c.pending_buf, c.pending - T, T)), c.gzindex = 0; + } + c.status = 91; + } + if (c.status === 91) { + if (c.gzhead.comment) { + let m, T = c.pending; + do { + if (c.pending === c.pending_buf_size) { + if (c.gzhead.hcrc && c.pending > T && (h.adler = Xl(h.adler, c.pending_buf, c.pending - T, T)), Zh(h), c.pending !== 0) + return c.last_flush = -1, dc; + T = 0; + } + m = c.gzindex < c.gzhead.comment.length ? 255 & c.gzhead.comment.charCodeAt(c.gzindex++) : 0, eo(c, m); + } while (m !== 0); + c.gzhead.hcrc && c.pending > T && (h.adler = Xl(h.adler, c.pending_buf, c.pending - T, T)); + } + c.status = 103; + } + if (c.status === 103) { + if (c.gzhead.hcrc) { + if (c.pending + 2 > c.pending_buf_size && (Zh(h), c.pending !== 0)) + return c.last_flush = -1, dc; + eo(c, 255 & h.adler), eo(c, h.adler >> 8 & 255), h.adler = 0; + } + if (c.status = OS, Zh(h), c.pending !== 0) + return c.last_flush = -1, dc; + } + if (h.avail_in !== 0 || c.lookahead !== 0 || s !== p_ && c.status !== Hx) { + let m = c.level === 0 ? jQ(c, s) : c.strategy === UM ? ((T, D) => { + let k; + for (; ; ) { + if (T.lookahead === 0 && (qC(T), T.lookahead === 0)) { + if (D === p_) + return 1; + break; + } + if (T.match_length = 0, k = f_(T, 0, T.window[T.strstart]), T.lookahead--, T.strstart++, k && (qh(T, !1), T.strm.avail_out === 0)) + return 1; + } + return T.insert = 0, D === $d ? (qh(T, !0), T.strm.avail_out === 0 ? 3 : 4) : T.sym_next && (qh(T, !1), T.strm.avail_out === 0) ? 1 : 2; + })(c, s) : c.strategy === LNe ? ((T, D) => { + let k, N, U, V; + const G = T.window; + for (; ; ) { + if (T.lookahead <= DS) { + if (qC(T), T.lookahead <= DS && D === p_) + return 1; + if (T.lookahead === 0) + break; + } + if (T.match_length = 0, T.lookahead >= 3 && T.strstart > 0 && (U = T.strstart - 1, N = G[U], N === G[++U] && N === G[++U] && N === G[++U])) { + V = T.strstart + DS; + do + ; + while (N === G[++U] && N === G[++U] && N === G[++U] && N === G[++U] && N === G[++U] && N === G[++U] && N === G[++U] && N === G[++U] && U < V); + T.match_length = DS - (V - U), T.match_length > T.lookahead && (T.match_length = T.lookahead); + } + if (T.match_length >= 3 ? (k = f_(T, 1, T.match_length - 3), T.lookahead -= T.match_length, T.strstart += T.match_length, T.match_length = 0) : (k = f_(T, 0, T.window[T.strstart]), T.lookahead--, T.strstart++), k && (qh(T, !1), T.strm.avail_out === 0)) + return 1; + } + return T.insert = 0, D === $d ? (qh(T, !0), T.strm.avail_out === 0 ? 3 : 4) : T.sym_next && (qh(T, !1), T.strm.avail_out === 0) ? 1 : 2; + })(c, s) : Gx[c.level].func(c, s); + if (m !== 3 && m !== 4 || (c.status = Hx), m === 1 || m === 3) + return h.avail_out === 0 && (c.last_flush = -1), dc; + if (m === 2 && (s === ONe ? DNe(c) : s !== LQ && (V5(c, 0, 0, !1), s === MNe && (g_(c.head), c.lookahead === 0 && (c.strstart = 0, c.block_start = 0, c.insert = 0))), Zh(h), h.avail_out === 0)) + return c.last_flush = -1, dc; + } + return s !== $d ? dc : c.wrap <= 0 ? FQ : (c.wrap === 2 ? (eo(c, 255 & h.adler), eo(c, h.adler >> 8 & 255), eo(c, h.adler >> 16 & 255), eo(c, h.adler >> 24 & 255), eo(c, 255 & h.total_in), eo(c, h.total_in >> 8 & 255), eo(c, h.total_in >> 16 & 255), eo(c, h.total_in >> 24 & 255)) : (Wx(c, h.adler >>> 16), Wx(c, 65535 & h.adler)), Zh(h), c.wrap > 0 && (c.wrap = -c.wrap), c.pending !== 0 ? dc : FQ); + }, YNe = (h, s) => { + let c = s.length; + if (Yx(h)) + return wg; + const p = h.state, m = p.wrap; + if (m === 2 || m === 1 && p.status !== ZC || p.lookahead) + return wg; + if (m === 1 && (h.adler = zx(h.adler, s, c, 0)), p.wrap = 0, c >= p.w_size) { + m === 0 && (g_(p.head), p.strstart = 0, p.block_start = 0, p.insert = 0); + let N = new Uint8Array(p.w_size); + N.set(s.subarray(c - p.w_size, c), 0), s = N, c = p.w_size; + } + const T = h.avail_in, D = h.next_in, k = h.input; + for (h.avail_in = c, h.next_in = 0, h.input = s, qC(p); p.lookahead >= 3; ) { + let N = p.strstart, U = p.lookahead - 2; + do + p.ins_h = v_(p, p.ins_h, p.window[N + 3 - 1]), p.prev[N & p.w_mask] = p.head[p.ins_h], p.head[p.ins_h] = N, N++; + while (--U); + p.strstart = N, p.lookahead = 2, qC(p); + } + return p.strstart += p.lookahead, p.block_start = p.strstart, p.insert = p.lookahead, p.lookahead = 0, p.match_length = p.prev_length = 2, p.match_available = 0, h.next_in = D, h.input = k, h.avail_in = T, p.wrap = m, dc; + }, Xx = { deflateInit: (h, s) => zQ(h, s, jM, 15, 8, BNe), deflateInit2: zQ, deflateReset: VQ, deflateResetKeep: $Q, deflateSetHeader: (h, s) => Yx(h) || h.state.wrap !== 2 ? wg : (h.state.gzhead = s, dc), deflate: GNe, deflateEnd: (h) => { + if (Yx(h)) + return wg; + const s = h.state.status; + return h.state = null, s === OS ? MS(h, kNe) : dc; + }, deflateSetDictionary: YNe, deflateInfo: "pako deflate (from Nodeca project)" }; + const XNe = (h, s) => Object.prototype.hasOwnProperty.call(h, s); + var $M = { assign: function(h) { + const s = Array.prototype.slice.call(arguments, 1); + for (; s.length; ) { + const c = s.shift(); + if (c) { + if (typeof c != "object") + throw new TypeError(c + "must be non-object"); + for (const p in c) + XNe(c, p) && (h[p] = c[p]); + } + } + return h; + }, flattenChunks: (h) => { + let s = 0; + for (let p = 0, m = h.length; p < m; p++) + s += h[p].length; + const c = new Uint8Array(s); + for (let p = 0, m = 0, T = h.length; p < T; p++) { + let D = h[p]; + c.set(D, m), m += D.length; + } + return c; + } }; + let HQ = !0; + try { + String.fromCharCode.apply(null, new Uint8Array(1)); + } catch (h) { + HQ = !1; + } + const Kx = new Uint8Array(256); + for (let h = 0; h < 256; h++) + Kx[h] = h >= 252 ? 6 : h >= 248 ? 5 : h >= 240 ? 4 : h >= 224 ? 3 : h >= 192 ? 2 : 1; + Kx[254] = Kx[254] = 1; + var Zx = { string2buf: (h) => { + if (typeof TextEncoder == "function" && TextEncoder.prototype.encode) + return new TextEncoder().encode(h); + let s, c, p, m, T, D = h.length, k = 0; + for (m = 0; m < D; m++) + c = h.charCodeAt(m), (64512 & c) == 55296 && m + 1 < D && (p = h.charCodeAt(m + 1), (64512 & p) == 56320 && (c = 65536 + (c - 55296 << 10) + (p - 56320), m++)), k += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4; + for (s = new Uint8Array(k), T = 0, m = 0; T < k; m++) + c = h.charCodeAt(m), (64512 & c) == 55296 && m + 1 < D && (p = h.charCodeAt(m + 1), (64512 & p) == 56320 && (c = 65536 + (c - 55296 << 10) + (p - 56320), m++)), c < 128 ? s[T++] = c : c < 2048 ? (s[T++] = 192 | c >>> 6, s[T++] = 128 | 63 & c) : c < 65536 ? (s[T++] = 224 | c >>> 12, s[T++] = 128 | c >>> 6 & 63, s[T++] = 128 | 63 & c) : (s[T++] = 240 | c >>> 18, s[T++] = 128 | c >>> 12 & 63, s[T++] = 128 | c >>> 6 & 63, s[T++] = 128 | 63 & c); + return s; + }, buf2string: (h, s) => { + const c = s || h.length; + if (typeof TextDecoder == "function" && TextDecoder.prototype.decode) + return new TextDecoder().decode(h.subarray(0, s)); + let p, m; + const T = new Array(2 * c); + for (m = 0, p = 0; p < c; ) { + let D = h[p++]; + if (D < 128) { + T[m++] = D; + continue; + } + let k = Kx[D]; + if (k > 4) + T[m++] = 65533, p += k - 1; + else { + for (D &= k === 2 ? 31 : k === 3 ? 15 : 7; k > 1 && p < c; ) + D = D << 6 | 63 & h[p++], k--; + k > 1 ? T[m++] = 65533 : D < 65536 ? T[m++] = D : (D -= 65536, T[m++] = 55296 | D >> 10 & 1023, T[m++] = 56320 | 1023 & D); + } + } + return ((D, k) => { + if (k < 65534 && D.subarray && HQ) + return String.fromCharCode.apply(null, D.length === k ? D : D.subarray(0, k)); + let N = ""; + for (let U = 0; U < k; U++) + N += String.fromCharCode(D[U]); + return N; + })(T, m); + }, utf8border: (h, s) => { + (s = s || h.length) > h.length && (s = h.length); + let c = s - 1; + for (; c >= 0 && (192 & h[c]) == 128; ) + c--; + return c < 0 || c === 0 ? s : c + Kx[h[c]] > s ? c : s; + } }, WQ = function() { + this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; + }; + const GQ = Object.prototype.toString, { Z_NO_FLUSH: KNe, Z_SYNC_FLUSH: ZNe, Z_FULL_FLUSH: qNe, Z_FINISH: JNe, Z_OK: VM, Z_STREAM_END: QNe, Z_DEFAULT_COMPRESSION: eLe, Z_DEFAULT_STRATEGY: tLe, Z_DEFLATED: rLe } = KC; + function qx(h) { + this.options = $M.assign({ level: eLe, method: rLe, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: tLe }, h || {}); + let s = this.options; + s.raw && s.windowBits > 0 ? s.windowBits = -s.windowBits : s.gzip && s.windowBits > 0 && s.windowBits < 16 && (s.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new WQ(), this.strm.avail_out = 0; + let c = Xx.deflateInit2(this.strm, s.level, s.method, s.windowBits, s.memLevel, s.strategy); + if (c !== VM) + throw new Error(RS[c]); + if (s.header && Xx.deflateSetHeader(this.strm, s.header), s.dictionary) { + let p; + if (p = typeof s.dictionary == "string" ? Zx.string2buf(s.dictionary) : GQ.call(s.dictionary) === "[object ArrayBuffer]" ? new Uint8Array(s.dictionary) : s.dictionary, c = Xx.deflateSetDictionary(this.strm, p), c !== VM) + throw new Error(RS[c]); + this._dict_set = !0; + } + } + function Y5(h, s) { + const c = new qx(s); + if (c.push(h, !0), c.err) + throw c.msg || RS[c.err]; + return c.result; + } + qx.prototype.push = function(h, s) { + const c = this.strm, p = this.options.chunkSize; + let m, T; + if (this.ended) + return !1; + for (T = s === ~~s ? s : s === !0 ? JNe : KNe, typeof h == "string" ? c.input = Zx.string2buf(h) : GQ.call(h) === "[object ArrayBuffer]" ? c.input = new Uint8Array(h) : c.input = h, c.next_in = 0, c.avail_in = c.input.length; ; ) + if (c.avail_out === 0 && (c.output = new Uint8Array(p), c.next_out = 0, c.avail_out = p), (T === ZNe || T === qNe) && c.avail_out <= 6) + this.onData(c.output.subarray(0, c.next_out)), c.avail_out = 0; + else { + if (m = Xx.deflate(c, T), m === QNe) + return c.next_out > 0 && this.onData(c.output.subarray(0, c.next_out)), m = Xx.deflateEnd(this.strm), this.onEnd(m), this.ended = !0, m === VM; + if (c.avail_out !== 0) { + if (T > 0 && c.next_out > 0) + this.onData(c.output.subarray(0, c.next_out)), c.avail_out = 0; + else if (c.avail_in === 0) + break; + } else + this.onData(c.output); + } + return !0; + }, qx.prototype.onData = function(h) { + this.chunks.push(h); + }, qx.prototype.onEnd = function(h) { + h === VM && (this.result = $M.flattenChunks(this.chunks)), this.chunks = [], this.err = h, this.msg = this.strm.msg; + }; + var nLe = { Deflate: qx, deflate: Y5, deflateRaw: function(h, s) { + return (s = s || {}).raw = !0, Y5(h, s); + }, gzip: function(h, s) { + return (s = s || {}).gzip = !0, Y5(h, s); + }, constants: KC }; + const zM = 16209; + var iLe = function(h, s) { + let c, p, m, T, D, k, N, U, V, G, K, q, ue, oe, he, Ce, ke, Ge, tt, Ye, et, ht, st, Ut; + const Vt = h.state; + c = h.next_in, st = h.input, p = c + (h.avail_in - 5), m = h.next_out, Ut = h.output, T = m - (s - h.avail_out), D = m + (h.avail_out - 257), k = Vt.dmax, N = Vt.wsize, U = Vt.whave, V = Vt.wnext, G = Vt.window, K = Vt.hold, q = Vt.bits, ue = Vt.lencode, oe = Vt.distcode, he = (1 << Vt.lenbits) - 1, Ce = (1 << Vt.distbits) - 1; + e: + do { + q < 15 && (K += st[c++] << q, q += 8, K += st[c++] << q, q += 8), ke = ue[K & he]; + t: + for (; ; ) { + if (Ge = ke >>> 24, K >>>= Ge, q -= Ge, Ge = ke >>> 16 & 255, Ge === 0) + Ut[m++] = 65535 & ke; + else { + if (!(16 & Ge)) { + if (!(64 & Ge)) { + ke = ue[(65535 & ke) + (K & (1 << Ge) - 1)]; + continue t; + } + if (32 & Ge) { + Vt.mode = 16191; + break e; + } + h.msg = "invalid literal/length code", Vt.mode = zM; + break e; + } + tt = 65535 & ke, Ge &= 15, Ge && (q < Ge && (K += st[c++] << q, q += 8), tt += K & (1 << Ge) - 1, K >>>= Ge, q -= Ge), q < 15 && (K += st[c++] << q, q += 8, K += st[c++] << q, q += 8), ke = oe[K & Ce]; + r: + for (; ; ) { + if (Ge = ke >>> 24, K >>>= Ge, q -= Ge, Ge = ke >>> 16 & 255, !(16 & Ge)) { + if (!(64 & Ge)) { + ke = oe[(65535 & ke) + (K & (1 << Ge) - 1)]; + continue r; + } + h.msg = "invalid distance code", Vt.mode = zM; + break e; + } + if (Ye = 65535 & ke, Ge &= 15, q < Ge && (K += st[c++] << q, q += 8, q < Ge && (K += st[c++] << q, q += 8)), Ye += K & (1 << Ge) - 1, Ye > k) { + h.msg = "invalid distance too far back", Vt.mode = zM; + break e; + } + if (K >>>= Ge, q -= Ge, Ge = m - T, Ye > Ge) { + if (Ge = Ye - Ge, Ge > U && Vt.sane) { + h.msg = "invalid distance too far back", Vt.mode = zM; + break e; + } + if (et = 0, ht = G, V === 0) { + if (et += N - Ge, Ge < tt) { + tt -= Ge; + do + Ut[m++] = G[et++]; + while (--Ge); + et = m - Ye, ht = Ut; + } + } else if (V < Ge) { + if (et += N + V - Ge, Ge -= V, Ge < tt) { + tt -= Ge; + do + Ut[m++] = G[et++]; + while (--Ge); + if (et = 0, V < tt) { + Ge = V, tt -= Ge; + do + Ut[m++] = G[et++]; + while (--Ge); + et = m - Ye, ht = Ut; + } + } + } else if (et += V - Ge, Ge < tt) { + tt -= Ge; + do + Ut[m++] = G[et++]; + while (--Ge); + et = m - Ye, ht = Ut; + } + for (; tt > 2; ) + Ut[m++] = ht[et++], Ut[m++] = ht[et++], Ut[m++] = ht[et++], tt -= 3; + tt && (Ut[m++] = ht[et++], tt > 1 && (Ut[m++] = ht[et++])); + } else { + et = m - Ye; + do + Ut[m++] = Ut[et++], Ut[m++] = Ut[et++], Ut[m++] = Ut[et++], tt -= 3; + while (tt > 2); + tt && (Ut[m++] = Ut[et++], tt > 1 && (Ut[m++] = Ut[et++])); + } + break; + } + } + break; + } + } while (c < p && m < D); + tt = q >> 3, c -= tt, q -= tt << 3, K &= (1 << q) - 1, h.next_in = c, h.next_out = m, h.avail_in = c < p ? p - c + 5 : 5 - (c - p), h.avail_out = m < D ? D - m + 257 : 257 - (m - D), Vt.hold = K, Vt.bits = q; + }; + const HM = 15, aLe = new Uint16Array([3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]), oLe = new Uint8Array([16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78]), sLe = new Uint16Array([1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0]), lLe = new Uint8Array([16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]); + var Jx = (h, s, c, p, m, T, D, k) => { + const N = k.bits; + let U, V, G, K, q, ue, oe = 0, he = 0, Ce = 0, ke = 0, Ge = 0, tt = 0, Ye = 0, et = 0, ht = 0, st = 0, Ut = null; + const Vt = new Uint16Array(16), fn = new Uint16Array(16); + let Nn, ha, jo, Sa = null; + for (oe = 0; oe <= HM; oe++) + Vt[oe] = 0; + for (he = 0; he < p; he++) + Vt[s[c + he]]++; + for (Ge = N, ke = HM; ke >= 1 && Vt[ke] === 0; ke--) + ; + if (Ge > ke && (Ge = ke), ke === 0) + return m[T++] = 20971520, m[T++] = 20971520, k.bits = 1, 0; + for (Ce = 1; Ce < ke && Vt[Ce] === 0; Ce++) + ; + for (Ge < Ce && (Ge = Ce), et = 1, oe = 1; oe <= HM; oe++) + if (et <<= 1, et -= Vt[oe], et < 0) + return -1; + if (et > 0 && (h === 0 || ke !== 1)) + return -1; + for (fn[1] = 0, oe = 1; oe < HM; oe++) + fn[oe + 1] = fn[oe] + Vt[oe]; + for (he = 0; he < p; he++) + s[c + he] !== 0 && (D[fn[s[c + he]]++] = he); + if (h === 0 ? (Ut = Sa = D, ue = 20) : h === 1 ? (Ut = aLe, Sa = oLe, ue = 257) : (Ut = sLe, Sa = lLe, ue = 0), st = 0, he = 0, oe = Ce, q = T, tt = Ge, Ye = 0, G = -1, ht = 1 << Ge, K = ht - 1, h === 1 && ht > 852 || h === 2 && ht > 592) + return 1; + for (; ; ) { + Nn = oe - Ye, D[he] + 1 < ue ? (ha = 0, jo = D[he]) : D[he] >= ue ? (ha = Sa[D[he] - ue], jo = Ut[D[he] - ue]) : (ha = 96, jo = 0), U = 1 << oe - Ye, V = 1 << tt, Ce = V; + do + V -= U, m[q + (st >> Ye) + V] = Nn << 24 | ha << 16 | jo | 0; + while (V !== 0); + for (U = 1 << oe - 1; st & U; ) + U >>= 1; + if (U !== 0 ? (st &= U - 1, st += U) : st = 0, he++, --Vt[oe] == 0) { + if (oe === ke) + break; + oe = s[c + D[he]]; + } + if (oe > Ge && (st & K) !== G) { + for (Ye === 0 && (Ye = Ge), q += Ce, tt = oe - Ye, et = 1 << tt; tt + Ye < ke && (et -= Vt[tt + Ye], !(et <= 0)); ) + tt++, et <<= 1; + if (ht += 1 << tt, h === 1 && ht > 852 || h === 2 && ht > 592) + return 1; + G = st & K, m[G] = Ge << 24 | tt << 16 | q - T | 0; + } + } + return st !== 0 && (m[q + st] = oe - Ye << 24 | 64 << 16 | 0), k.bits = Ge, 0; + }; + const { Z_FINISH: YQ, Z_BLOCK: cLe, Z_TREES: WM, Z_OK: kS, Z_STREAM_END: uLe, Z_NEED_DICT: hLe, Z_STREAM_ERROR: Vd, Z_DATA_ERROR: XQ, Z_MEM_ERROR: KQ, Z_BUF_ERROR: dLe, Z_DEFLATED: ZQ } = KC, GM = 16180, YM = 16190, dm = 16191, X5 = 16192, K5 = 16194, XM = 16199, KM = 16200, Z5 = 16206, Es = 16209, qQ = (h) => (h >>> 24 & 255) + (h >>> 8 & 65280) + ((65280 & h) << 8) + ((255 & h) << 24); + function fLe() { + this.strm = null, this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; + } + const PS = (h) => { + if (!h) + return 1; + const s = h.state; + return !s || s.strm !== h || s.mode < GM || s.mode > 16211 ? 1 : 0; + }, JQ = (h) => { + if (PS(h)) + return Vd; + const s = h.state; + return h.total_in = h.total_out = s.total = 0, h.msg = "", s.wrap && (h.adler = 1 & s.wrap), s.mode = GM, s.last = 0, s.havedict = 0, s.flags = -1, s.dmax = 32768, s.head = null, s.hold = 0, s.bits = 0, s.lencode = s.lendyn = new Int32Array(852), s.distcode = s.distdyn = new Int32Array(592), s.sane = 1, s.back = -1, kS; + }, QQ = (h) => { + if (PS(h)) + return Vd; + const s = h.state; + return s.wsize = 0, s.whave = 0, s.wnext = 0, JQ(h); + }, eee = (h, s) => { + let c; + if (PS(h)) + return Vd; + const p = h.state; + return s < 0 ? (c = 0, s = -s) : (c = 5 + (s >> 4), s < 48 && (s &= 15)), s && (s < 8 || s > 15) ? Vd : (p.window !== null && p.wbits !== s && (p.window = null), p.wrap = c, p.wbits = s, QQ(h)); + }, tee = (h, s) => { + if (!h) + return Vd; + const c = new fLe(); + h.state = c, c.strm = h, c.window = null, c.mode = GM; + const p = eee(h, s); + return p !== kS && (h.state = null), p; + }; + let q5, J5, ree = !0; + const pLe = (h) => { + if (ree) { + q5 = new Int32Array(512), J5 = new Int32Array(32); + let s = 0; + for (; s < 144; ) + h.lens[s++] = 8; + for (; s < 256; ) + h.lens[s++] = 9; + for (; s < 280; ) + h.lens[s++] = 7; + for (; s < 288; ) + h.lens[s++] = 8; + for (Jx(1, h.lens, 0, 288, q5, 0, h.work, { bits: 9 }), s = 0; s < 32; ) + h.lens[s++] = 5; + Jx(2, h.lens, 0, 32, J5, 0, h.work, { bits: 5 }), ree = !1; + } + h.lencode = q5, h.lenbits = 9, h.distcode = J5, h.distbits = 5; + }, nee = (h, s, c, p) => { + let m; + const T = h.state; + return T.window === null && (T.wsize = 1 << T.wbits, T.wnext = 0, T.whave = 0, T.window = new Uint8Array(T.wsize)), p >= T.wsize ? (T.window.set(s.subarray(c - T.wsize, c), 0), T.wnext = 0, T.whave = T.wsize) : (m = T.wsize - T.wnext, m > p && (m = p), T.window.set(s.subarray(c - p, c - p + m), T.wnext), (p -= m) ? (T.window.set(s.subarray(c - p, c), 0), T.wnext = p, T.whave = T.wsize) : (T.wnext += m, T.wnext === T.wsize && (T.wnext = 0), T.whave < T.wsize && (T.whave += m))), 0; + }; + var gLe = (h, s) => { + let c, p, m, T, D, k, N, U, V, G, K, q, ue, oe, he, Ce, ke, Ge, tt, Ye, et, ht, st = 0; + const Ut = new Uint8Array(4); + let Vt, fn; + const Nn = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); + if (PS(h) || !h.output || !h.input && h.avail_in !== 0) + return Vd; + c = h.state, c.mode === dm && (c.mode = X5), D = h.next_out, m = h.output, N = h.avail_out, T = h.next_in, p = h.input, k = h.avail_in, U = c.hold, V = c.bits, G = k, K = N, ht = kS; + e: + for (; ; ) + switch (c.mode) { + case GM: + if (c.wrap === 0) { + c.mode = X5; + break; + } + for (; V < 16; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (2 & c.wrap && U === 35615) { + c.wbits === 0 && (c.wbits = 15), c.check = 0, Ut[0] = 255 & U, Ut[1] = U >>> 8 & 255, c.check = Xl(c.check, Ut, 2, 0), U = 0, V = 0, c.mode = 16181; + break; + } + if (c.head && (c.head.done = !1), !(1 & c.wrap) || (((255 & U) << 8) + (U >> 8)) % 31) { + h.msg = "incorrect header check", c.mode = Es; + break; + } + if ((15 & U) !== ZQ) { + h.msg = "unknown compression method", c.mode = Es; + break; + } + if (U >>>= 4, V -= 4, et = 8 + (15 & U), c.wbits === 0 && (c.wbits = et), et > 15 || et > c.wbits) { + h.msg = "invalid window size", c.mode = Es; + break; + } + c.dmax = 1 << c.wbits, c.flags = 0, h.adler = c.check = 1, c.mode = 512 & U ? 16189 : dm, U = 0, V = 0; + break; + case 16181: + for (; V < 16; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (c.flags = U, (255 & c.flags) !== ZQ) { + h.msg = "unknown compression method", c.mode = Es; + break; + } + if (57344 & c.flags) { + h.msg = "unknown header flags set", c.mode = Es; + break; + } + c.head && (c.head.text = U >> 8 & 1), 512 & c.flags && 4 & c.wrap && (Ut[0] = 255 & U, Ut[1] = U >>> 8 & 255, c.check = Xl(c.check, Ut, 2, 0)), U = 0, V = 0, c.mode = 16182; + case 16182: + for (; V < 32; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + c.head && (c.head.time = U), 512 & c.flags && 4 & c.wrap && (Ut[0] = 255 & U, Ut[1] = U >>> 8 & 255, Ut[2] = U >>> 16 & 255, Ut[3] = U >>> 24 & 255, c.check = Xl(c.check, Ut, 4, 0)), U = 0, V = 0, c.mode = 16183; + case 16183: + for (; V < 16; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + c.head && (c.head.xflags = 255 & U, c.head.os = U >> 8), 512 & c.flags && 4 & c.wrap && (Ut[0] = 255 & U, Ut[1] = U >>> 8 & 255, c.check = Xl(c.check, Ut, 2, 0)), U = 0, V = 0, c.mode = 16184; + case 16184: + if (1024 & c.flags) { + for (; V < 16; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + c.length = U, c.head && (c.head.extra_len = U), 512 & c.flags && 4 & c.wrap && (Ut[0] = 255 & U, Ut[1] = U >>> 8 & 255, c.check = Xl(c.check, Ut, 2, 0)), U = 0, V = 0; + } else + c.head && (c.head.extra = null); + c.mode = 16185; + case 16185: + if (1024 & c.flags && (q = c.length, q > k && (q = k), q && (c.head && (et = c.head.extra_len - c.length, c.head.extra || (c.head.extra = new Uint8Array(c.head.extra_len)), c.head.extra.set(p.subarray(T, T + q), et)), 512 & c.flags && 4 & c.wrap && (c.check = Xl(c.check, p, q, T)), k -= q, T += q, c.length -= q), c.length)) + break e; + c.length = 0, c.mode = 16186; + case 16186: + if (2048 & c.flags) { + if (k === 0) + break e; + q = 0; + do + et = p[T + q++], c.head && et && c.length < 65536 && (c.head.name += String.fromCharCode(et)); + while (et && q < k); + if (512 & c.flags && 4 & c.wrap && (c.check = Xl(c.check, p, q, T)), k -= q, T += q, et) + break e; + } else + c.head && (c.head.name = null); + c.length = 0, c.mode = 16187; + case 16187: + if (4096 & c.flags) { + if (k === 0) + break e; + q = 0; + do + et = p[T + q++], c.head && et && c.length < 65536 && (c.head.comment += String.fromCharCode(et)); + while (et && q < k); + if (512 & c.flags && 4 & c.wrap && (c.check = Xl(c.check, p, q, T)), k -= q, T += q, et) + break e; + } else + c.head && (c.head.comment = null); + c.mode = 16188; + case 16188: + if (512 & c.flags) { + for (; V < 16; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (4 & c.wrap && U !== (65535 & c.check)) { + h.msg = "header crc mismatch", c.mode = Es; + break; + } + U = 0, V = 0; + } + c.head && (c.head.hcrc = c.flags >> 9 & 1, c.head.done = !0), h.adler = c.check = 0, c.mode = dm; + break; + case 16189: + for (; V < 32; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + h.adler = c.check = qQ(U), U = 0, V = 0, c.mode = YM; + case YM: + if (c.havedict === 0) + return h.next_out = D, h.avail_out = N, h.next_in = T, h.avail_in = k, c.hold = U, c.bits = V, hLe; + h.adler = c.check = 1, c.mode = dm; + case dm: + if (s === cLe || s === WM) + break e; + case X5: + if (c.last) { + U >>>= 7 & V, V -= 7 & V, c.mode = Z5; + break; + } + for (; V < 3; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + switch (c.last = 1 & U, U >>>= 1, V -= 1, 3 & U) { + case 0: + c.mode = 16193; + break; + case 1: + if (pLe(c), c.mode = XM, s === WM) { + U >>>= 2, V -= 2; + break e; + } + break; + case 2: + c.mode = 16196; + break; + case 3: + h.msg = "invalid block type", c.mode = Es; + } + U >>>= 2, V -= 2; + break; + case 16193: + for (U >>>= 7 & V, V -= 7 & V; V < 32; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if ((65535 & U) != (U >>> 16 ^ 65535)) { + h.msg = "invalid stored block lengths", c.mode = Es; + break; + } + if (c.length = 65535 & U, U = 0, V = 0, c.mode = K5, s === WM) + break e; + case K5: + c.mode = 16195; + case 16195: + if (q = c.length, q) { + if (q > k && (q = k), q > N && (q = N), q === 0) + break e; + m.set(p.subarray(T, T + q), D), k -= q, T += q, N -= q, D += q, c.length -= q; + break; + } + c.mode = dm; + break; + case 16196: + for (; V < 14; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (c.nlen = 257 + (31 & U), U >>>= 5, V -= 5, c.ndist = 1 + (31 & U), U >>>= 5, V -= 5, c.ncode = 4 + (15 & U), U >>>= 4, V -= 4, c.nlen > 286 || c.ndist > 30) { + h.msg = "too many length or distance symbols", c.mode = Es; + break; + } + c.have = 0, c.mode = 16197; + case 16197: + for (; c.have < c.ncode; ) { + for (; V < 3; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + c.lens[Nn[c.have++]] = 7 & U, U >>>= 3, V -= 3; + } + for (; c.have < 19; ) + c.lens[Nn[c.have++]] = 0; + if (c.lencode = c.lendyn, c.lenbits = 7, Vt = { bits: c.lenbits }, ht = Jx(0, c.lens, 0, 19, c.lencode, 0, c.work, Vt), c.lenbits = Vt.bits, ht) { + h.msg = "invalid code lengths set", c.mode = Es; + break; + } + c.have = 0, c.mode = 16198; + case 16198: + for (; c.have < c.nlen + c.ndist; ) { + for (; st = c.lencode[U & (1 << c.lenbits) - 1], he = st >>> 24, Ce = st >>> 16 & 255, ke = 65535 & st, !(he <= V); ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (ke < 16) + U >>>= he, V -= he, c.lens[c.have++] = ke; + else { + if (ke === 16) { + for (fn = he + 2; V < fn; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (U >>>= he, V -= he, c.have === 0) { + h.msg = "invalid bit length repeat", c.mode = Es; + break; + } + et = c.lens[c.have - 1], q = 3 + (3 & U), U >>>= 2, V -= 2; + } else if (ke === 17) { + for (fn = he + 3; V < fn; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + U >>>= he, V -= he, et = 0, q = 3 + (7 & U), U >>>= 3, V -= 3; + } else { + for (fn = he + 7; V < fn; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + U >>>= he, V -= he, et = 0, q = 11 + (127 & U), U >>>= 7, V -= 7; + } + if (c.have + q > c.nlen + c.ndist) { + h.msg = "invalid bit length repeat", c.mode = Es; + break; + } + for (; q--; ) + c.lens[c.have++] = et; + } + } + if (c.mode === Es) + break; + if (c.lens[256] === 0) { + h.msg = "invalid code -- missing end-of-block", c.mode = Es; + break; + } + if (c.lenbits = 9, Vt = { bits: c.lenbits }, ht = Jx(1, c.lens, 0, c.nlen, c.lencode, 0, c.work, Vt), c.lenbits = Vt.bits, ht) { + h.msg = "invalid literal/lengths set", c.mode = Es; + break; + } + if (c.distbits = 6, c.distcode = c.distdyn, Vt = { bits: c.distbits }, ht = Jx(2, c.lens, c.nlen, c.ndist, c.distcode, 0, c.work, Vt), c.distbits = Vt.bits, ht) { + h.msg = "invalid distances set", c.mode = Es; + break; + } + if (c.mode = XM, s === WM) + break e; + case XM: + c.mode = KM; + case KM: + if (k >= 6 && N >= 258) { + h.next_out = D, h.avail_out = N, h.next_in = T, h.avail_in = k, c.hold = U, c.bits = V, iLe(h, K), D = h.next_out, m = h.output, N = h.avail_out, T = h.next_in, p = h.input, k = h.avail_in, U = c.hold, V = c.bits, c.mode === dm && (c.back = -1); + break; + } + for (c.back = 0; st = c.lencode[U & (1 << c.lenbits) - 1], he = st >>> 24, Ce = st >>> 16 & 255, ke = 65535 & st, !(he <= V); ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (Ce && !(240 & Ce)) { + for (Ge = he, tt = Ce, Ye = ke; st = c.lencode[Ye + ((U & (1 << Ge + tt) - 1) >> Ge)], he = st >>> 24, Ce = st >>> 16 & 255, ke = 65535 & st, !(Ge + he <= V); ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + U >>>= Ge, V -= Ge, c.back += Ge; + } + if (U >>>= he, V -= he, c.back += he, c.length = ke, Ce === 0) { + c.mode = 16205; + break; + } + if (32 & Ce) { + c.back = -1, c.mode = dm; + break; + } + if (64 & Ce) { + h.msg = "invalid literal/length code", c.mode = Es; + break; + } + c.extra = 15 & Ce, c.mode = 16201; + case 16201: + if (c.extra) { + for (fn = c.extra; V < fn; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + c.length += U & (1 << c.extra) - 1, U >>>= c.extra, V -= c.extra, c.back += c.extra; + } + c.was = c.length, c.mode = 16202; + case 16202: + for (; st = c.distcode[U & (1 << c.distbits) - 1], he = st >>> 24, Ce = st >>> 16 & 255, ke = 65535 & st, !(he <= V); ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (!(240 & Ce)) { + for (Ge = he, tt = Ce, Ye = ke; st = c.distcode[Ye + ((U & (1 << Ge + tt) - 1) >> Ge)], he = st >>> 24, Ce = st >>> 16 & 255, ke = 65535 & st, !(Ge + he <= V); ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + U >>>= Ge, V -= Ge, c.back += Ge; + } + if (U >>>= he, V -= he, c.back += he, 64 & Ce) { + h.msg = "invalid distance code", c.mode = Es; + break; + } + c.offset = ke, c.extra = 15 & Ce, c.mode = 16203; + case 16203: + if (c.extra) { + for (fn = c.extra; V < fn; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + c.offset += U & (1 << c.extra) - 1, U >>>= c.extra, V -= c.extra, c.back += c.extra; + } + if (c.offset > c.dmax) { + h.msg = "invalid distance too far back", c.mode = Es; + break; + } + c.mode = 16204; + case 16204: + if (N === 0) + break e; + if (q = K - N, c.offset > q) { + if (q = c.offset - q, q > c.whave && c.sane) { + h.msg = "invalid distance too far back", c.mode = Es; + break; + } + q > c.wnext ? (q -= c.wnext, ue = c.wsize - q) : ue = c.wnext - q, q > c.length && (q = c.length), oe = c.window; + } else + oe = m, ue = D - c.offset, q = c.length; + q > N && (q = N), N -= q, c.length -= q; + do + m[D++] = oe[ue++]; + while (--q); + c.length === 0 && (c.mode = KM); + break; + case 16205: + if (N === 0) + break e; + m[D++] = c.length, N--, c.mode = KM; + break; + case Z5: + if (c.wrap) { + for (; V < 32; ) { + if (k === 0) + break e; + k--, U |= p[T++] << V, V += 8; + } + if (K -= N, h.total_out += K, c.total += K, 4 & c.wrap && K && (h.adler = c.check = c.flags ? Xl(c.check, m, K, D - K) : zx(c.check, m, K, D - K)), K = N, 4 & c.wrap && (c.flags ? U : qQ(U)) !== c.check) { + h.msg = "incorrect data check", c.mode = Es; + break; + } + U = 0, V = 0; + } + c.mode = 16207; + case 16207: + if (c.wrap && c.flags) { + for (; V < 32; ) { + if (k === 0) + break e; + k--, U += p[T++] << V, V += 8; + } + if (4 & c.wrap && U !== (4294967295 & c.total)) { + h.msg = "incorrect length check", c.mode = Es; + break; + } + U = 0, V = 0; + } + c.mode = 16208; + case 16208: + ht = uLe; + break e; + case Es: + ht = XQ; + break e; + case 16210: + return KQ; + default: + return Vd; + } + return h.next_out = D, h.avail_out = N, h.next_in = T, h.avail_in = k, c.hold = U, c.bits = V, (c.wsize || K !== h.avail_out && c.mode < Es && (c.mode < Z5 || s !== YQ)) && nee(h, h.output, h.next_out, K - h.avail_out), G -= h.avail_in, K -= h.avail_out, h.total_in += G, h.total_out += K, c.total += K, 4 & c.wrap && K && (h.adler = c.check = c.flags ? Xl(c.check, m, K, h.next_out - K) : zx(c.check, m, K, h.next_out - K)), h.data_type = c.bits + (c.last ? 64 : 0) + (c.mode === dm ? 128 : 0) + (c.mode === XM || c.mode === K5 ? 256 : 0), (G === 0 && K === 0 || s === YQ) && ht === kS && (ht = dLe), ht; + }, fm = { inflateReset: QQ, inflateReset2: eee, inflateResetKeep: JQ, inflateInit: (h) => tee(h, 15), inflateInit2: tee, inflate: gLe, inflateEnd: (h) => { + if (PS(h)) + return Vd; + let s = h.state; + return s.window && (s.window = null), h.state = null, kS; + }, inflateGetHeader: (h, s) => { + if (PS(h)) + return Vd; + const c = h.state; + return 2 & c.wrap ? (c.head = s, s.done = !1, kS) : Vd; + }, inflateSetDictionary: (h, s) => { + const c = s.length; + let p, m, T; + return PS(h) ? Vd : (p = h.state, p.wrap !== 0 && p.mode !== YM ? Vd : p.mode === YM && (m = 1, m = zx(m, s, c, 0), m !== p.check) ? XQ : (T = nee(h, s, c, c), T ? (p.mode = 16210, KQ) : (p.havedict = 1, kS))); + }, inflateInfo: "pako inflate (from Nodeca project)" }, vLe = function() { + this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1; + }; + const iee = Object.prototype.toString, { Z_NO_FLUSH: mLe, Z_FINISH: yLe, Z_OK: Qx, Z_STREAM_END: Q5, Z_NEED_DICT: e$, Z_STREAM_ERROR: _Le, Z_DATA_ERROR: aee, Z_MEM_ERROR: SLe } = KC; + function eA(h) { + this.options = $M.assign({ chunkSize: 65536, windowBits: 15, to: "" }, h || {}); + const s = this.options; + s.raw && s.windowBits >= 0 && s.windowBits < 16 && (s.windowBits = -s.windowBits, s.windowBits === 0 && (s.windowBits = -15)), !(s.windowBits >= 0 && s.windowBits < 16) || h && h.windowBits || (s.windowBits += 32), s.windowBits > 15 && s.windowBits < 48 && !(15 & s.windowBits) && (s.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new WQ(), this.strm.avail_out = 0; + let c = fm.inflateInit2(this.strm, s.windowBits); + if (c !== Qx) + throw new Error(RS[c]); + if (this.header = new vLe(), fm.inflateGetHeader(this.strm, this.header), s.dictionary && (typeof s.dictionary == "string" ? s.dictionary = Zx.string2buf(s.dictionary) : iee.call(s.dictionary) === "[object ArrayBuffer]" && (s.dictionary = new Uint8Array(s.dictionary)), s.raw && (c = fm.inflateSetDictionary(this.strm, s.dictionary), c !== Qx))) + throw new Error(RS[c]); + } + function t$(h, s) { + const c = new eA(s); + if (c.push(h), c.err) + throw c.msg || RS[c.err]; + return c.result; + } + eA.prototype.push = function(h, s) { + const c = this.strm, p = this.options.chunkSize, m = this.options.dictionary; + let T, D, k; + if (this.ended) + return !1; + for (D = s === ~~s ? s : s === !0 ? yLe : mLe, iee.call(h) === "[object ArrayBuffer]" ? c.input = new Uint8Array(h) : c.input = h, c.next_in = 0, c.avail_in = c.input.length; ; ) { + for (c.avail_out === 0 && (c.output = new Uint8Array(p), c.next_out = 0, c.avail_out = p), T = fm.inflate(c, D), T === e$ && m && (T = fm.inflateSetDictionary(c, m), T === Qx ? T = fm.inflate(c, D) : T === aee && (T = e$)); c.avail_in > 0 && T === Q5 && c.state.wrap > 0 && h[c.next_in] !== 0; ) + fm.inflateReset(c), T = fm.inflate(c, D); + switch (T) { + case _Le: + case aee: + case e$: + case SLe: + return this.onEnd(T), this.ended = !0, !1; + } + if (k = c.avail_out, c.next_out && (c.avail_out === 0 || T === Q5)) + if (this.options.to === "string") { + let N = Zx.utf8border(c.output, c.next_out), U = c.next_out - N, V = Zx.buf2string(c.output, N); + c.next_out = U, c.avail_out = p - U, U && c.output.set(c.output.subarray(N, N + U), 0), this.onData(V); + } else + this.onData(c.output.length === c.next_out ? c.output : c.output.subarray(0, c.next_out)); + if (T !== Qx || k !== 0) { + if (T === Q5) + return T = fm.inflateEnd(this.strm), this.onEnd(T), this.ended = !0, !0; + if (c.avail_in === 0) + break; + } + } + return !0; + }, eA.prototype.onData = function(h) { + this.chunks.push(h); + }, eA.prototype.onEnd = function(h) { + h === Qx && (this.options.to === "string" ? this.result = this.chunks.join("") : this.result = $M.flattenChunks(this.chunks)), this.chunks = [], this.err = h, this.msg = this.strm.msg; + }; + var bLe = { Inflate: eA, inflate: t$, inflateRaw: function(h, s) { + return (s = s || {}).raw = !0, t$(h, s); + }, ungzip: t$, constants: KC }; + const { Deflate: OUt, deflate: ELe, deflateRaw: MUt, gzip: kUt } = nLe, { Inflate: PUt, inflate: CLe, inflateRaw: NUt, ungzip: LUt } = bLe; + var r$, TLe = ELe, wLe = CLe; + (function(h) { + h[h.ONE_BYTE = 0] = "ONE_BYTE", h[h.TWO_BYTE = 1] = "TWO_BYTE"; + })(r$ || (r$ = {})); + class ILe { + constructor() { + Z(this, "_sequence", 0), Z(this, "_startTime", Date.now()), Z(this, "isUseOneByte", !0); + } + get startTime() { + const s = Date.now() - this._startTime; + return s < Math.pow(2, 16) ? s : (this._startTime += Math.pow(2, 16), this.startTime); + } + get sequence() { + return this._sequence < Math.pow(2, 32) ? this._sequence++ : (this._sequence -= Math.pow(2, 32), this.sequence); + } + serialize(s) { + const c = { commonPacketHeader: { length: 0, reserved: 0, extension: 0, sequence: this.sequence }, commonStreamHeader: this.startTime, extension: void 0, payload: s }; + if (s.byteLength > 128) { + const k = new Uint8Array(4); + k.set([1, 0, 0, 0]); + const N = { id: 0, length: 4, data: k.buffer }, U = { profile: this.isUseOneByte ? 0 : 1, length: this.isUseOneByte ? 5 : 6, datas: [N] }; + c.commonPacketHeader.extension = 1, c.extension = U, c.payload = this.compress(s), c.commonPacketHeader.length = 8 + (c.extension.length + 2) + c.payload.byteLength; + } else + c.commonPacketHeader.length = 8 + c.payload.byteLength; + Le("SHOW_DATASTREAM2_LOG") && ie.debug("send data header: ".concat(JSON.stringify(c.commonPacketHeader))); + const p = new ArrayBuffer(c.commonPacketHeader.length), m = new Uint8Array(p), T = new DataView(p); + let D = 0; + if (T.setUint16(D, c.commonPacketHeader.extension << 15 | c.commonPacketHeader.reserved << 14 | c.commonPacketHeader.length, !0), D += 2, T.setUint32(D, c.commonPacketHeader.sequence, !0), D += 4, T.setUint16(D, c.commonStreamHeader, !0), D += 2, c.extension) { + const k = this.serializeExtension(c.extension); + m.set(new Uint8Array(k), D), D += k.byteLength; + } + if (m.set(new Uint8Array(c.payload), D), D += c.payload.byteLength, D !== c.commonPacketHeader.length) + throw Error("serialize error!"); + return p; + } + deserialize(s) { + if (s.byteLength < 4) + return new ArrayBuffer(0); + const c = new DataView(s); + let p = 0; + const m = c.getUint16(p, !0); + p += 2; + const T = { length: 16383 & m, reserved: (16384 & m) >> 14, extension: (32768 & m) >> 15, sequence: c.getUint16(p + 2, !0) << 16 | c.getUint16(p, !0) }; + let D, k; + if (p += 4, Le("SHOW_DATASTREAM2_LOG") && ie.debug("receive data header: ".concat(JSON.stringify(T))), c.getUint16(p, !0), p += 2, T.extension) { + k = this.deserializeExtension(s.slice(p)), p += 2 + k.length, D = s.slice(p); + let N = !1; + if (k.datas.length > 0) { + const U = k.datas.find((V) => V.id === 0); + U && (N = (1 & new DataView(U.data).getUint32(0, !0)) == 1); + } + D = N ? this.decompress(D) : D; + } else + D = s.slice(8); + return D; + } + serializeExtension(s) { + const { profile: c, length: p, datas: m } = s, T = new ArrayBuffer(p + 2), D = new Uint8Array(T), k = new DataView(T); + let N = 0; + if (k.setUint8(N++, c), k.setUint8(N++, p), m.forEach((U) => { + c ? (k.setUint8(N++, U.id), k.setUint8(N++, U.length), D.set(new Uint8Array(U.data), N), N += U.data.byteLength) : (k.setUint8(N++, U.id | U.length << 4), D.set(new Uint8Array(U.data), N), N += U.data.byteLength); + }), N !== p + 2) + throw Error("serialize extension error, is ".concat(N, "!==").concat(p + 2)); + return T; + } + deserializeExtension(s) { + const c = new DataView(s); + let p = 0; + const m = c.getUint8(p); + p++; + const T = c.getUint8(p); + p++; + const D = m === r$.TWO_BYTE, k = [], N = new DataView(s, 2); + let U = 0; + for (; U < T; ) { + let V = 0, G = 0, K = new ArrayBuffer(0); + D ? (V = N.getUint8(U), U++, G = N.getUint8(U), U++) : (V = 15 & N.getUint8(U), G = N.getUint8(U) >> 4, U++), G > 0 && (K = N.buffer.slice(U + 2, U + 2 + G), U += K.byteLength), k.push({ id: V, length: G, data: K }); + } + if (U !== T) + throw Error("parse error"); + return { profile: m, length: T, datas: k }; + } + decompress(s) { + return wLe(new Uint8Array(s)); + } + compress(s) { + return TLe(new Uint8Array(s)); + } + } + class oee extends Ra { + constructor(s, c) { + super(), Z(this, "_version", 1), Z(this, "_type", 3), Z(this, "_config", void 0), Z(this, "_originDataChannel", void 0), Z(this, "_dataStreamPacketHeader", new ArrayBuffer(4)), Z(this, "_dataStreamPacketHandler", void 0), Z(this, "_datachannelEventMap", /* @__PURE__ */ new Map()), this._config = s, c && (this._originDataChannel = c, this._bandDataChannelEvents(c)), this._initPacketHeader(), this._dataStreamPacketHandler = new ILe(); + } + get id() { + return this._config.id; + } + get ordered() { + return this._config.ordered; + } + get maxRetransmits() { + return Le("DATASTREAM_MAX_RETRANSMITS"); + } + get metadata() { + return this._config.metadata; + } + get readyState() { + var s, c; + return (s = (c = this._originDataChannel) === null || c === void 0 ? void 0 : c.readyState) !== null && s !== void 0 ? s : "connecting"; + } + get _originDataChannelId() { + var s, c; + return (s = (c = this._originDataChannel) === null || c === void 0 ? void 0 : c.id) !== null && s !== void 0 ? s : null; + } + getChannelId() { + return this.id; + } + getConfig() { + return this._config; + } + _close() { + this._originDataChannel && (this._unbindDataChannelEvents(this._originDataChannel), this._originDataChannel = void 0); + } + _waitTillOpen() { + return ye(this, null, function* () { + return new ot((s, c) => { + if (this._originDataChannel) { + this._originDataChannel.readyState === "open" && s(); + const p = setTimeout(() => { + var m; + c(new mt(_e.DATACHANNEL_CONNECTION_TIMEOUT, "Cannot create datachannel, id: ".concat((m = this._originDataChannel) === null || m === void 0 ? void 0 : m.id))); + }, 1e4); + this._originDataChannel.onopen = () => { + clearTimeout(p), this._originDataChannel && this._bandDataChannelEvents(this._originDataChannel), s(); + }, this._originDataChannel.onerror = () => { + throw clearTimeout(p), new mt(_e.DATACHANNEL_CONNECTION_TIMEOUT); + }; + } else + c(new mt(_e.DATACHANNEL_CONNECTION_TIMEOUT, "cannot find dataChannel")); + }); + }); + } + _updateOriginDataChannel(s) { + this._originDataChannel = s, this._bandDataChannelEvents(s); + } + _initPacketHeader() { + const s = new DataView(this._dataStreamPacketHeader); + s.setUint16(0, this._version), s.setUint8(2, this._type), s.setUint8(3, this._config.id); + } + _bandDataChannelEvents(s) { + this._unbindDataChannelEvents(s), [WC.OPEN, WC.CLOSE, WC.ERROR].forEach((c) => { + const p = () => { + this.emit(c); + }; + this._datachannelEventMap.set(c, p), s.addEventListener(c, p); + }); + } + _unbindDataChannelEvents(s) { + Array.from(this._datachannelEventMap.entries()).forEach((c) => { + let [p, m] = c; + s.removeEventListener(p, m); + }), this._datachannelEventMap.clear(); + } + } + class xLe extends oee { + constructor(s) { + super(s), Z(this, "_messageListener", void 0), this._messageListener = (c) => { + if (c.data.byteLength < this._dataStreamPacketHeader.byteLength) + throw Error("invalid byteLength: the byte length must exceed " + this._dataStreamPacketHeader.byteLength); + const p = c.data.slice(0, this._dataStreamPacketHeader.byteLength), m = new DataView(p).getUint8(3); + if (m !== this.id) + return void (Le("SHOW_DATASTREAM2_LOG") && ie.debug("invalid datachannel id: ".concat(m, " !== ").concat(this.id))); + let T = c.data.slice(this._dataStreamPacketHeader.byteLength); + T = this._dataStreamPacketHandler.deserialize(T), this.emit(WC.MESSAGE, T); + }; + } + _updateOriginDataChannel(s) { + super._updateOriginDataChannel(s), this._bandRemoteDataChannelEvents(); + } + _close() { + this._originDataChannel && (this._originDataChannel.removeEventListener("message", this._messageListener), super._close()); + } + _bandRemoteDataChannelEvents() { + this._originDataChannel && this._originDataChannel.addEventListener("message", this._messageListener); + } + } + class see extends oee { + send(s) { + if (this._originDataChannel) { + let c = s; + c = this._dataStreamPacketHandler.serialize(s); + const p = new Uint8Array(this._dataStreamPacketHeader.byteLength + c.byteLength); + p.set(new Uint8Array(this._dataStreamPacketHeader), 0), p.set(new Uint8Array(c), this._dataStreamPacketHeader.byteLength), this._originDataChannel.send(p.buffer); + } + } + } + var ALe = a, RLe = Bi("iterator"), n$ = !ALe(function() { + var h = new URL("b?a=1&b=2&c=3", "http://a"), s = h.searchParams, c = new URLSearchParams("a=1&a=2"), p = ""; + return h.pathname = "c%20d", s.forEach(function(m, T) { + s.delete("b"), p += T + m; + }), c.delete("a", 2), !h.toJSON || !c.has("a", 1) || c.has("a", 2) || !s.size && !0 || !s.sort || h.href !== "http://a/c%20d?a=1&c=3" || s.get("c") !== "3" || String(new URLSearchParams("?a=1")) !== "a=1" || !s[RLe] || new URL("https://a@b").username !== "a" || new URLSearchParams(new URLSearchParams("a=b")).get("a") !== "b" || new URL("http://тест").host !== "xn--e1aybc" || new URL("http://a#б").hash !== "#%D0%B1" || p !== "a1c3" || new URL("http://x", void 0).host !== "x"; + }), DLe = Wl, i$ = ki, QC = C, ZM = fe, Ag = g, eT = ae, lee = n$, cee = Wl, OLe = Gv, MLe = function(h, s, c) { + for (var p in s) + c && c.unsafe && h[p] ? h[p] = s[p] : DLe(h, p, s[p], c); + return h; + }, kLe = Dc, PLe = BX, a$ = Vy, uee = GU, o$ = X, NLe = Tt, LLe = bl, FLe = Ii, BLe = go, hee = rt, vu = mo, ULe = eh, dee = Ue, s$ = $U, jLe = BO, tT = VO, $Le = mK, VLe = Bi("iterator"), tA = "URLSearchParams", fee = tA + "Iterator", pee = a$.set, zd = a$.getterFor(tA), zLe = a$.getterFor(fee), HLe = Object.getOwnPropertyDescriptor, l$ = function(h) { + if (!eT) + return QC[h]; + var s = HLe(QC, h); + return s && s.value; + }, gee = l$("fetch"), qM = l$("Request"), rA = l$("Headers"), c$ = qM && qM.prototype, vee = rA && rA.prototype, WLe = QC.RegExp, GLe = QC.TypeError, mee = QC.decodeURIComponent, YLe = QC.encodeURIComponent, XLe = Ag("".charAt), yee = Ag([].join), NS = Ag([].push), u$ = Ag("".replace), KLe = Ag([].shift), _ee = Ag([].splice), See = Ag("".split), ZLe = Ag("".slice), qLe = /\+/g, bee = Array(4), JLe = function(h) { + return bee[h - 1] || (bee[h - 1] = WLe("((?:%[\\da-f]{2}){" + h + "})", "gi")); + }, QLe = function(h) { + try { + return mee(h); + } catch (s) { + return h; + } + }, Eee = function(h) { + var s = u$(h, qLe, " "), c = 4; + try { + return mee(s); + } catch (p) { + for (; c; ) + s = u$(s, JLe(c--), QLe); + return s; + } + }, e2e = /[!'()~]|%20/g, t2e = { "!": "%21", "'": "%27", "(": "%28", ")": "%29", "~": "%7E", "%20": "+" }, r2e = function(h) { + return t2e[h]; + }, Cee = function(h) { + return u$(YLe(h), e2e, r2e); + }, h$ = PLe(function(h, s) { + pee(this, { type: fee, iterator: s$(zd(h).entries), kind: s }); + }, "Iterator", function() { + var h = zLe(this), s = h.kind, c = h.iterator.next(), p = c.value; + return c.done || (c.value = s === "keys" ? p.key : s === "values" ? p.value : [p.key, p.value]), c; + }, !0), Tee = function(h) { + this.entries = [], this.url = null, h !== void 0 && (hee(h) ? this.parseObject(h) : this.parseQuery(typeof h == "string" ? XLe(h, 0) === "?" ? ZLe(h, 1) : h : vu(h))); + }; + Tee.prototype = { type: tA, bindURL: function(h) { + this.url = h, this.update(); + }, parseObject: function(h) { + var s, c, p, m, T, D, k, N = jLe(h); + if (N) + for (c = (s = s$(h, N)).next; !(p = ZM(c, s)).done; ) { + if (T = (m = s$(BLe(p.value))).next, (D = ZM(T, m)).done || (k = ZM(T, m)).done || !ZM(T, m).done) + throw GLe("Expected sequence with length 2"); + NS(this.entries, { key: vu(D.value), value: vu(k.value) }); + } + else + for (var U in h) + NLe(h, U) && NS(this.entries, { key: U, value: vu(h[U]) }); + }, parseQuery: function(h) { + if (h) + for (var s, c, p = See(h, "&"), m = 0; m < p.length; ) + (s = p[m++]).length && (c = See(s, "="), NS(this.entries, { key: Eee(KLe(c)), value: Eee(yee(c, "=")) })); + }, serialize: function() { + for (var h, s = this.entries, c = [], p = 0; p < s.length; ) + h = s[p++], NS(c, Cee(h.key) + "=" + Cee(h.value)); + return yee(c, "&"); + }, update: function() { + this.entries.length = 0, this.parseQuery(this.url.query); + }, updateURL: function() { + this.url && this.url.update(); + } }; + var JM = function() { + uee(this, rT); + var h = pee(this, new Tee(arguments.length > 0 ? arguments[0] : void 0)); + eT || (this.size = h.entries.length); + }, rT = JM.prototype; + if (MLe(rT, { append: function(h, s) { + var c = zd(this); + tT(arguments.length, 2), NS(c.entries, { key: vu(h), value: vu(s) }), eT || this.length++, c.updateURL(); + }, delete: function(h) { + for (var s = zd(this), c = tT(arguments.length, 1), p = s.entries, m = vu(h), T = c < 2 ? void 0 : arguments[1], D = T === void 0 ? T : vu(T), k = 0; k < p.length; ) { + var N = p[k]; + if (N.key !== m || D !== void 0 && N.value !== D) + k++; + else if (_ee(p, k, 1), D !== void 0) + break; + } + eT || (this.size = p.length), s.updateURL(); + }, get: function(h) { + var s = zd(this).entries; + tT(arguments.length, 1); + for (var c = vu(h), p = 0; p < s.length; p++) + if (s[p].key === c) + return s[p].value; + return null; + }, getAll: function(h) { + var s = zd(this).entries; + tT(arguments.length, 1); + for (var c = vu(h), p = [], m = 0; m < s.length; m++) + s[m].key === c && NS(p, s[m].value); + return p; + }, has: function(h) { + for (var s = zd(this).entries, c = tT(arguments.length, 1), p = vu(h), m = c < 2 ? void 0 : arguments[1], T = m === void 0 ? m : vu(m), D = 0; D < s.length; ) { + var k = s[D++]; + if (k.key === p && (T === void 0 || k.value === T)) + return !0; + } + return !1; + }, set: function(h, s) { + var c = zd(this); + tT(arguments.length, 1); + for (var p, m = c.entries, T = !1, D = vu(h), k = vu(s), N = 0; N < m.length; N++) + (p = m[N]).key === D && (T ? _ee(m, N--, 1) : (T = !0, p.value = k)); + T || NS(m, { key: D, value: k }), eT || (this.size = m.length), c.updateURL(); + }, sort: function() { + var h = zd(this); + $Le(h.entries, function(s, c) { + return s.key > c.key ? 1 : -1; + }), h.updateURL(); + }, forEach: function(h) { + for (var s, c = zd(this).entries, p = LLe(h, arguments.length > 1 ? arguments[1] : void 0), m = 0; m < c.length; ) + p((s = c[m++]).value, s.key, this); + }, keys: function() { + return new h$(this, "keys"); + }, values: function() { + return new h$(this, "values"); + }, entries: function() { + return new h$(this, "entries"); + } }, { enumerable: !0 }), cee(rT, VLe, rT.entries, { name: "entries" }), cee(rT, "toString", function() { + return zd(this).serialize(); + }, { enumerable: !0 }), eT && OLe(rT, "size", { get: function() { + return zd(this).entries.length; + }, configurable: !0, enumerable: !0 }), kLe(JM, tA), i$({ global: !0, constructor: !0, forced: !lee }, { URLSearchParams: JM }), !lee && o$(rA)) { + var n2e = Ag(vee.has), i2e = Ag(vee.set), wee = function(h) { + if (hee(h)) { + var s, c = h.body; + if (FLe(c) === tA) + return s = h.headers ? new rA(h.headers) : new rA(), n2e(s, "content-type") || i2e(s, "content-type", "application/x-www-form-urlencoded;charset=UTF-8"), ULe(h, { body: dee(0, vu(c)), headers: dee(0, s) }); + } + return h; + }; + if (o$(gee) && i$({ global: !0, enumerable: !0, dontCallGetSet: !0, forced: !0 }, { fetch: function(h) { + return gee(h, arguments.length > 1 ? wee(arguments[1]) : {}); + } }), o$(qM)) { + var d$ = function(h) { + return uee(this, c$), new qM(h, arguments.length > 1 ? wee(arguments[1]) : {}); + }; + c$.constructor = d$, d$.prototype = c$, i$({ global: !0, constructor: !0, dontCallGetSet: !0, forced: !0 }, { Request: d$ }); + } + } + var Hd, a2e = { URLSearchParams: JM, getState: zd }, Iee = ae, o2e = g, s2e = fe, l2e = a, f$ = eg, c2e = ig, u2e = de, h2e = _r, d2e = we, nT = Object.assign, xee = Object.defineProperty, f2e = o2e([].concat), p2e = !nT || l2e(function() { + if (Iee && nT({ b: 1 }, nT(xee({}, "a", { enumerable: !0, get: function() { + xee(this, "b", { value: 3, enumerable: !1 }); + } }), { b: 2 })).b !== 1) + return !0; + var h = {}, s = {}, c = Symbol(), p = "abcdefghijklmnopqrst"; + return h[c] = 7, p.split("").forEach(function(m) { + s[m] = m; + }), nT({}, h)[c] != 7 || f$(nT({}, s)).join("") != p; + }) ? function(h, s) { + for (var c = h2e(h), p = arguments.length, m = 1, T = c2e.f, D = u2e.f; p > m; ) + for (var k, N = d2e(arguments[m++]), U = T ? f2e(f$(N), T(N)) : f$(N), V = U.length, G = 0; V > G; ) + k = U[G++], Iee && !s2e(D, N, k) || (c[k] = N[k]); + return c; + } : nT, g2e = go, v2e = NK, m2e = bl, y2e = fe, _2e = _r, S2e = function(h, s, c, p) { + try { + return p ? s(g2e(c)[0], c[1]) : s(c); + } catch (m) { + v2e(h, "throw", m); + } + }, b2e = MK, E2e = Ry, C2e = au, Aee = wy, T2e = $U, w2e = BO, Ree = Array, LS = g, p$ = 2147483647, I2e = /[^\0-\u007E]/, Dee = /[.\u3002\uFF0E\uFF61]/g, Oee = "Overflow: input needs wider integers to process", Mee = RangeError, x2e = LS(Dee.exec), iT = Math.floor, g$ = String.fromCharCode, kee = LS("".charCodeAt), Pee = LS([].join), m_ = LS([].push), A2e = LS("".replace), R2e = LS("".split), D2e = LS("".toLowerCase), Nee = function(h) { + return h + 22 + 75 * (h < 26); + }, O2e = function(h, s, c) { + var p = 0; + for (h = c ? iT(h / 700) : h >> 1, h += iT(h / s); h > 455; ) + h = iT(h / 35), p += 36; + return iT(p + 36 * h / (h + 38)); + }, M2e = function(h) { + var s = []; + h = function(Ce) { + for (var ke = [], Ge = 0, tt = Ce.length; Ge < tt; ) { + var Ye = kee(Ce, Ge++); + if (Ye >= 55296 && Ye <= 56319 && Ge < tt) { + var et = kee(Ce, Ge++); + (64512 & et) == 56320 ? m_(ke, ((1023 & Ye) << 10) + (1023 & et) + 65536) : (m_(ke, Ye), Ge--); + } else + m_(ke, Ye); + } + return ke; + }(h); + var c, p, m = h.length, T = 128, D = 0, k = 72; + for (c = 0; c < h.length; c++) + (p = h[c]) < 128 && m_(s, g$(p)); + var N = s.length, U = N; + for (N && m_(s, "-"); U < m; ) { + var V = p$; + for (c = 0; c < h.length; c++) + (p = h[c]) >= T && p < V && (V = p); + var G = U + 1; + if (V - T > iT((p$ - D) / G)) + throw Mee(Oee); + for (D += (V - T) * G, T = V, c = 0; c < h.length; c++) { + if ((p = h[c]) < T && ++D > p$) + throw Mee(Oee); + if (p == T) { + for (var K = D, q = 36; ; ) { + var ue = q <= k ? 1 : q >= k + 26 ? 26 : q - k; + if (K < ue) + break; + var oe = K - ue, he = 36 - ue; + m_(s, g$(Nee(ue + oe % he))), K = iT(oe / he), q += 36; + } + m_(s, g$(Nee(K))), k = O2e(D, G, U == N), D = 0, U++; + } + } + D++, T++; + } + return Pee(s, ""); + }, k2e = ki, v$ = ae, P2e = n$, m$ = C, Lee = bl, Wd = g, QM = Wl, Gd = Gv, N2e = GU, y$ = Tt, _$ = p2e, aT = function(h) { + var s = _2e(h), c = E2e(this), p = arguments.length, m = p > 1 ? arguments[1] : void 0, T = m !== void 0; + T && (m = m2e(m, p > 2 ? arguments[2] : void 0)); + var D, k, N, U, V, G, K = w2e(s), q = 0; + if (!K || this === Ree && b2e(K)) + for (D = C2e(s), k = c ? new this(D) : Ree(D); D > q; q++) + G = T ? m(s[q], q) : s[q], Aee(k, q, G); + else + for (V = (U = T2e(s, K)).next, k = c ? new this() : []; !(N = y2e(V, U)).done; q++) + G = T ? S2e(U, m, [N.value, q], !0) : N.value, Aee(k, q, G); + return k.length = q, k; + }, sp = Md, L2e = uK.codeAt, F2e = function(h) { + var s, c, p = [], m = R2e(A2e(D2e(h), Dee, "."), "."); + for (s = 0; s < m.length; s++) + c = m[s], m_(p, x2e(I2e, c) ? "xn--" + M2e(c) : c); + return Pee(p, "."); + }, pm = mo, B2e = Dc, U2e = VO, Fee = a2e, Bee = Vy, j2e = Bee.set, ek = Bee.getterFor("URL"), $2e = Fee.URLSearchParams, V2e = Fee.getState, nA = m$.URL, S$ = m$.TypeError, tk = m$.parseInt, z2e = Math.floor, Uee = Math.pow, Yd = Wd("".charAt), lp = Wd(/./.exec), iA = Wd([].join), H2e = Wd(1 .toString), W2e = Wd([].pop), oT = Wd([].push), b$ = Wd("".replace), G2e = Wd([].shift), Y2e = Wd("".split), aA = Wd("".slice), rk = Wd("".toLowerCase), X2e = Wd([].unshift), E$ = "Invalid scheme", FS = "Invalid host", jee = "Invalid port", $ee = /[a-z]/i, K2e = /[\d+-.a-z]/i, C$ = /\d/, Z2e = /^0x/i, q2e = /^[0-7]+$/, J2e = /^\d+$/, Vee = /^[\da-f]+$/i, Q2e = /[\0\t\n\r #%/:<>?@[\\\]^|]/, eFe = /[\0\t\n\r #/:<>?@[\\\]^|]/, tFe = /^[\u0000-\u0020]+/, rFe = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/, nFe = /[\t\n\r]/g, oA = function(h) { + var s, c, p, m; + if (typeof h == "number") { + for (s = [], c = 0; c < 4; c++) + X2e(s, h % 256), h = z2e(h / 256); + return iA(s, "."); + } + if (typeof h == "object") { + for (s = "", p = function(T) { + for (var D = null, k = 1, N = null, U = 0, V = 0; V < 8; V++) + T[V] !== 0 ? (U > k && (D = N, k = U), N = null, U = 0) : (N === null && (N = V), ++U); + return U > k && (D = N, k = U), D; + }(h), c = 0; c < 8; c++) + m && h[c] === 0 || (m && (m = !1), p === c ? (s += c ? ":" : "::", m = !0) : (s += H2e(h[c], 16), c < 7 && (s += ":"))); + return "[" + s + "]"; + } + return h; + }, nk = {}, zee = _$({}, nk, { " ": 1, '"': 1, "<": 1, ">": 1, "`": 1 }), Hee = _$({}, zee, { "#": 1, "?": 1, "{": 1, "}": 1 }), T$ = _$({}, Hee, { "/": 1, ":": 1, ";": 1, "=": 1, "@": 1, "[": 1, "\\": 1, "]": 1, "^": 1, "|": 1 }), y_ = function(h, s) { + var c = L2e(h, 0); + return c > 32 && c < 127 && !y$(s, h) ? h : encodeURIComponent(h); + }, ik = { ftp: 21, file: null, http: 80, https: 443, ws: 80, wss: 443 }, sA = function(h, s) { + var c; + return h.length == 2 && lp($ee, Yd(h, 0)) && ((c = Yd(h, 1)) == ":" || !s && c == "|"); + }, Wee = function(h) { + var s; + return h.length > 1 && sA(aA(h, 0, 2)) && (h.length == 2 || (s = Yd(h, 2)) === "/" || s === "\\" || s === "?" || s === "#"); + }, iFe = function(h) { + return h === "." || rk(h) === "%2e"; + }, w$ = {}, Gee = {}, I$ = {}, Yee = {}, Xee = {}, x$ = {}, Kee = {}, Zee = {}, ak = {}, ok = {}, A$ = {}, R$ = {}, D$ = {}, O$ = {}, qee = {}, M$ = {}, sT = {}, Rg = {}, Jee = {}, BS = {}, gm = {}, k$ = function(h, s, c) { + var p, m, T, D = pm(h); + if (s) { + if (m = this.parse(D)) + throw S$(m); + this.searchParams = null; + } else { + if (c !== void 0 && (p = new k$(c, !0)), m = this.parse(D, null, p)) + throw S$(m); + (T = V2e(new $2e())).bindURL(this), this.searchParams = T; + } + }; + k$.prototype = { type: "URL", parse: function(h, s, c) { + var p, m, T, D, k, N = this, U = s || w$, V = 0, G = "", K = !1, q = !1, ue = !1; + for (h = pm(h), s || (N.scheme = "", N.username = "", N.password = "", N.host = null, N.port = null, N.path = [], N.query = null, N.fragment = null, N.cannotBeABaseURL = !1, h = b$(h, tFe, ""), h = b$(h, rFe, "$1")), h = b$(h, nFe, ""), p = aT(h); V <= p.length; ) { + switch (m = p[V], U) { + case w$: + if (!m || !lp($ee, m)) { + if (s) + return E$; + U = I$; + continue; + } + G += rk(m), U = Gee; + break; + case Gee: + if (m && (lp(K2e, m) || m == "+" || m == "-" || m == ".")) + G += rk(m); + else { + if (m != ":") { + if (s) + return E$; + G = "", U = I$, V = 0; + continue; + } + if (s && (N.isSpecial() != y$(ik, G) || G == "file" && (N.includesCredentials() || N.port !== null) || N.scheme == "file" && !N.host)) + return; + if (N.scheme = G, s) + return void (N.isSpecial() && ik[N.scheme] == N.port && (N.port = null)); + G = "", N.scheme == "file" ? U = O$ : N.isSpecial() && c && c.scheme == N.scheme ? U = Yee : N.isSpecial() ? U = Zee : p[V + 1] == "/" ? (U = Xee, V++) : (N.cannotBeABaseURL = !0, oT(N.path, ""), U = Jee); + } + break; + case I$: + if (!c || c.cannotBeABaseURL && m != "#") + return E$; + if (c.cannotBeABaseURL && m == "#") { + N.scheme = c.scheme, N.path = sp(c.path), N.query = c.query, N.fragment = "", N.cannotBeABaseURL = !0, U = gm; + break; + } + U = c.scheme == "file" ? O$ : x$; + continue; + case Yee: + if (m != "/" || p[V + 1] != "/") { + U = x$; + continue; + } + U = ak, V++; + break; + case Xee: + if (m == "/") { + U = ok; + break; + } + U = Rg; + continue; + case x$: + if (N.scheme = c.scheme, m == Hd) + N.username = c.username, N.password = c.password, N.host = c.host, N.port = c.port, N.path = sp(c.path), N.query = c.query; + else if (m == "/" || m == "\\" && N.isSpecial()) + U = Kee; + else if (m == "?") + N.username = c.username, N.password = c.password, N.host = c.host, N.port = c.port, N.path = sp(c.path), N.query = "", U = BS; + else { + if (m != "#") { + N.username = c.username, N.password = c.password, N.host = c.host, N.port = c.port, N.path = sp(c.path), N.path.length--, U = Rg; + continue; + } + N.username = c.username, N.password = c.password, N.host = c.host, N.port = c.port, N.path = sp(c.path), N.query = c.query, N.fragment = "", U = gm; + } + break; + case Kee: + if (!N.isSpecial() || m != "/" && m != "\\") { + if (m != "/") { + N.username = c.username, N.password = c.password, N.host = c.host, N.port = c.port, U = Rg; + continue; + } + U = ok; + } else + U = ak; + break; + case Zee: + if (U = ak, m != "/" || Yd(G, V + 1) != "/") + continue; + V++; + break; + case ak: + if (m != "/" && m != "\\") { + U = ok; + continue; + } + break; + case ok: + if (m == "@") { + K && (G = "%40" + G), K = !0, T = aT(G); + for (var oe = 0; oe < T.length; oe++) { + var he = T[oe]; + if (he != ":" || ue) { + var Ce = y_(he, T$); + ue ? N.password += Ce : N.username += Ce; + } else + ue = !0; + } + G = ""; + } else if (m == Hd || m == "/" || m == "?" || m == "#" || m == "\\" && N.isSpecial()) { + if (K && G == "") + return "Invalid authority"; + V -= aT(G).length + 1, G = "", U = A$; + } else + G += m; + break; + case A$: + case R$: + if (s && N.scheme == "file") { + U = M$; + continue; + } + if (m != ":" || q) { + if (m == Hd || m == "/" || m == "?" || m == "#" || m == "\\" && N.isSpecial()) { + if (N.isSpecial() && G == "") + return FS; + if (s && G == "" && (N.includesCredentials() || N.port !== null)) + return; + if (D = N.parseHost(G)) + return D; + if (G = "", U = sT, s) + return; + continue; + } + m == "[" ? q = !0 : m == "]" && (q = !1), G += m; + } else { + if (G == "") + return FS; + if (D = N.parseHost(G)) + return D; + if (G = "", U = D$, s == R$) + return; + } + break; + case D$: + if (!lp(C$, m)) { + if (m == Hd || m == "/" || m == "?" || m == "#" || m == "\\" && N.isSpecial() || s) { + if (G != "") { + var ke = tk(G, 10); + if (ke > 65535) + return jee; + N.port = N.isSpecial() && ke === ik[N.scheme] ? null : ke, G = ""; + } + if (s) + return; + U = sT; + continue; + } + return jee; + } + G += m; + break; + case O$: + if (N.scheme = "file", m == "/" || m == "\\") + U = qee; + else { + if (!c || c.scheme != "file") { + U = Rg; + continue; + } + if (m == Hd) + N.host = c.host, N.path = sp(c.path), N.query = c.query; + else if (m == "?") + N.host = c.host, N.path = sp(c.path), N.query = "", U = BS; + else { + if (m != "#") { + Wee(iA(sp(p, V), "")) || (N.host = c.host, N.path = sp(c.path), N.shortenPath()), U = Rg; + continue; + } + N.host = c.host, N.path = sp(c.path), N.query = c.query, N.fragment = "", U = gm; + } + } + break; + case qee: + if (m == "/" || m == "\\") { + U = M$; + break; + } + c && c.scheme == "file" && !Wee(iA(sp(p, V), "")) && (sA(c.path[0], !0) ? oT(N.path, c.path[0]) : N.host = c.host), U = Rg; + continue; + case M$: + if (m == Hd || m == "/" || m == "\\" || m == "?" || m == "#") { + if (!s && sA(G)) + U = Rg; + else if (G == "") { + if (N.host = "", s) + return; + U = sT; + } else { + if (D = N.parseHost(G)) + return D; + if (N.host == "localhost" && (N.host = ""), s) + return; + G = "", U = sT; + } + continue; + } + G += m; + break; + case sT: + if (N.isSpecial()) { + if (U = Rg, m != "/" && m != "\\") + continue; + } else if (s || m != "?") + if (s || m != "#") { + if (m != Hd && (U = Rg, m != "/")) + continue; + } else + N.fragment = "", U = gm; + else + N.query = "", U = BS; + break; + case Rg: + if (m == Hd || m == "/" || m == "\\" && N.isSpecial() || !s && (m == "?" || m == "#")) { + if ((k = rk(k = G)) === ".." || k === "%2e." || k === ".%2e" || k === "%2e%2e" ? (N.shortenPath(), m == "/" || m == "\\" && N.isSpecial() || oT(N.path, "")) : iFe(G) ? m == "/" || m == "\\" && N.isSpecial() || oT(N.path, "") : (N.scheme == "file" && !N.path.length && sA(G) && (N.host && (N.host = ""), G = Yd(G, 0) + ":"), oT(N.path, G)), G = "", N.scheme == "file" && (m == Hd || m == "?" || m == "#")) + for (; N.path.length > 1 && N.path[0] === ""; ) + G2e(N.path); + m == "?" ? (N.query = "", U = BS) : m == "#" && (N.fragment = "", U = gm); + } else + G += y_(m, Hee); + break; + case Jee: + m == "?" ? (N.query = "", U = BS) : m == "#" ? (N.fragment = "", U = gm) : m != Hd && (N.path[0] += y_(m, nk)); + break; + case BS: + s || m != "#" ? m != Hd && (m == "'" && N.isSpecial() ? N.query += "%27" : N.query += m == "#" ? "%23" : y_(m, nk)) : (N.fragment = "", U = gm); + break; + case gm: + m != Hd && (N.fragment += y_(m, zee)); + } + V++; + } + }, parseHost: function(h) { + var s, c, p; + if (Yd(h, 0) == "[") { + if (Yd(h, h.length - 1) != "]" || (s = function(m) { + var T, D, k, N, U, V, G, K = [0, 0, 0, 0, 0, 0, 0, 0], q = 0, ue = null, oe = 0, he = function() { + return Yd(m, oe); + }; + if (he() == ":") { + if (Yd(m, 1) != ":") + return; + oe += 2, ue = ++q; + } + for (; he(); ) { + if (q == 8) + return; + if (he() != ":") { + for (T = D = 0; D < 4 && lp(Vee, he()); ) + T = 16 * T + tk(he(), 16), oe++, D++; + if (he() == ".") { + if (D == 0 || (oe -= D, q > 6)) + return; + for (k = 0; he(); ) { + if (N = null, k > 0) { + if (!(he() == "." && k < 4)) + return; + oe++; + } + if (!lp(C$, he())) + return; + for (; lp(C$, he()); ) { + if (U = tk(he(), 10), N === null) + N = U; + else { + if (N == 0) + return; + N = 10 * N + U; + } + if (N > 255) + return; + oe++; + } + K[q] = 256 * K[q] + N, ++k != 2 && k != 4 || q++; + } + if (k != 4) + return; + break; + } + if (he() == ":") { + if (oe++, !he()) + return; + } else if (he()) + return; + K[q++] = T; + } else { + if (ue !== null) + return; + oe++, ue = ++q; + } + } + if (ue !== null) + for (V = q - ue, q = 7; q != 0 && V > 0; ) + G = K[q], K[q--] = K[ue + V - 1], K[ue + --V] = G; + else if (q != 8) + return; + return K; + }(aA(h, 1, -1)), !s)) + return FS; + this.host = s; + } else if (this.isSpecial()) { + if (h = F2e(h), lp(Q2e, h) || (s = function(m) { + var T, D, k, N, U, V, G, K = Y2e(m, "."); + if (K.length && K[K.length - 1] == "" && K.length--, (T = K.length) > 4) + return m; + for (D = [], k = 0; k < T; k++) { + if ((N = K[k]) == "") + return m; + if (U = 10, N.length > 1 && Yd(N, 0) == "0" && (U = lp(Z2e, N) ? 16 : 8, N = aA(N, U == 8 ? 1 : 2)), N === "") + V = 0; + else { + if (!lp(U == 10 ? J2e : U == 8 ? q2e : Vee, N)) + return m; + V = tk(N, U); + } + oT(D, V); + } + for (k = 0; k < T; k++) + if (V = D[k], k == T - 1) { + if (V >= Uee(256, 5 - T)) + return null; + } else if (V > 255) + return null; + for (G = W2e(D), k = 0; k < D.length; k++) + G += D[k] * Uee(256, 3 - k); + return G; + }(h), s === null)) + return FS; + this.host = s; + } else { + if (lp(eFe, h)) + return FS; + for (s = "", c = aT(h), p = 0; p < c.length; p++) + s += y_(c[p], nk); + this.host = s; + } + }, cannotHaveUsernamePasswordPort: function() { + return !this.host || this.cannotBeABaseURL || this.scheme == "file"; + }, includesCredentials: function() { + return this.username != "" || this.password != ""; + }, isSpecial: function() { + return y$(ik, this.scheme); + }, shortenPath: function() { + var h = this.path, s = h.length; + !s || this.scheme == "file" && s == 1 && sA(h[0], !0) || h.length--; + }, serialize: function() { + var h = this, s = h.scheme, c = h.username, p = h.password, m = h.host, T = h.port, D = h.path, k = h.query, N = h.fragment, U = s + ":"; + return m !== null ? (U += "//", h.includesCredentials() && (U += c + (p ? ":" + p : "") + "@"), U += oA(m), T !== null && (U += ":" + T)) : s == "file" && (U += "//"), U += h.cannotBeABaseURL ? D[0] : D.length ? "/" + iA(D, "/") : "", k !== null && (U += "?" + k), N !== null && (U += "#" + N), U; + }, setHref: function(h) { + var s = this.parse(h); + if (s) + throw S$(s); + this.searchParams.update(); + }, getOrigin: function() { + var h = this.scheme, s = this.port; + if (h == "blob") + try { + return new lT(h.path[0]).origin; + } catch (c) { + return "null"; + } + return h != "file" && this.isSpecial() ? h + "://" + oA(this.host) + (s !== null ? ":" + s : "") : "null"; + }, getProtocol: function() { + return this.scheme + ":"; + }, setProtocol: function(h) { + this.parse(pm(h) + ":", w$); + }, getUsername: function() { + return this.username; + }, setUsername: function(h) { + var s = aT(pm(h)); + if (!this.cannotHaveUsernamePasswordPort()) { + this.username = ""; + for (var c = 0; c < s.length; c++) + this.username += y_(s[c], T$); + } + }, getPassword: function() { + return this.password; + }, setPassword: function(h) { + var s = aT(pm(h)); + if (!this.cannotHaveUsernamePasswordPort()) { + this.password = ""; + for (var c = 0; c < s.length; c++) + this.password += y_(s[c], T$); + } + }, getHost: function() { + var h = this.host, s = this.port; + return h === null ? "" : s === null ? oA(h) : oA(h) + ":" + s; + }, setHost: function(h) { + this.cannotBeABaseURL || this.parse(h, A$); + }, getHostname: function() { + var h = this.host; + return h === null ? "" : oA(h); + }, setHostname: function(h) { + this.cannotBeABaseURL || this.parse(h, R$); + }, getPort: function() { + var h = this.port; + return h === null ? "" : pm(h); + }, setPort: function(h) { + this.cannotHaveUsernamePasswordPort() || ((h = pm(h)) == "" ? this.port = null : this.parse(h, D$)); + }, getPathname: function() { + var h = this.path; + return this.cannotBeABaseURL ? h[0] : h.length ? "/" + iA(h, "/") : ""; + }, setPathname: function(h) { + this.cannotBeABaseURL || (this.path = [], this.parse(h, sT)); + }, getSearch: function() { + var h = this.query; + return h ? "?" + h : ""; + }, setSearch: function(h) { + (h = pm(h)) == "" ? this.query = null : (Yd(h, 0) == "?" && (h = aA(h, 1)), this.query = "", this.parse(h, BS)), this.searchParams.update(); + }, getSearchParams: function() { + return this.searchParams.facade; + }, getHash: function() { + var h = this.fragment; + return h ? "#" + h : ""; + }, setHash: function(h) { + (h = pm(h)) != "" ? (Yd(h, 0) == "#" && (h = aA(h, 1)), this.fragment = "", this.parse(h, gm)) : this.fragment = null; + }, update: function() { + this.query = this.searchParams.serialize() || null; + } }; + var lT = function(h) { + var s = N2e(this, mu), c = U2e(arguments.length, 1) > 1 ? arguments[1] : void 0, p = j2e(s, new k$(h, !1, c)); + v$ || (s.href = p.serialize(), s.origin = p.getOrigin(), s.protocol = p.getProtocol(), s.username = p.getUsername(), s.password = p.getPassword(), s.host = p.getHost(), s.hostname = p.getHostname(), s.port = p.getPort(), s.pathname = p.getPathname(), s.search = p.getSearch(), s.searchParams = p.getSearchParams(), s.hash = p.getHash()); + }, mu = lT.prototype, Xd = function(h, s) { + return { get: function() { + return ek(this)[h](); + }, set: s && function(c) { + return ek(this)[s](c); + }, configurable: !0, enumerable: !0 }; + }; + if (v$ && (Gd(mu, "href", Xd("serialize", "setHref")), Gd(mu, "origin", Xd("getOrigin")), Gd(mu, "protocol", Xd("getProtocol", "setProtocol")), Gd(mu, "username", Xd("getUsername", "setUsername")), Gd(mu, "password", Xd("getPassword", "setPassword")), Gd(mu, "host", Xd("getHost", "setHost")), Gd(mu, "hostname", Xd("getHostname", "setHostname")), Gd(mu, "port", Xd("getPort", "setPort")), Gd(mu, "pathname", Xd("getPathname", "setPathname")), Gd(mu, "search", Xd("getSearch", "setSearch")), Gd(mu, "searchParams", Xd("getSearchParams")), Gd(mu, "hash", Xd("getHash", "setHash"))), QM(mu, "toJSON", function() { + return ek(this).serialize(); + }, { enumerable: !0 }), QM(mu, "toString", function() { + return ek(this).serialize(); + }, { enumerable: !0 }), nA) { + var Qee = nA.createObjectURL, ete = nA.revokeObjectURL; + Qee && QM(lT, "createObjectURL", Lee(Qee, nA)), ete && QM(lT, "revokeObjectURL", Lee(ete, nA)); + } + B2e(lT, "URL"), k2e({ global: !0, constructor: !0, forced: !P2e, sham: !v$ }, { URL: lT }); + var aFe = ki, oFe = a, sFe = VO, tte = mo, lFe = n$, rte = _t("URL"); + aFe({ target: "URL", stat: !0, forced: !(lFe && oFe(function() { + rte.canParse(); + })) }, { canParse: function(h) { + var s = sFe(arguments.length, 1), c = tte(h), p = s < 2 || arguments[1] === void 0 ? void 0 : tte(arguments[1]); + try { + return !!new rte(c, p); + } catch (m) { + return !1; + } + } }); + var nte = i(Ke.URL); + function sk() { + const h = new Blob([atob("ZnVuY3Rpb24gZShlKXtjb25zdCB0PW5ldyBEYXRhVmlldyhlLmRhdGEpO2lmKDA9PT10LmdldFVpbnQ4KDApJiYwPT09dC5nZXRVaW50OCgxKSYmMD09PXQuZ2V0VWludDgoMikmJjE9PT10LmdldFVpbnQ4KDMpJiY2PT09dC5nZXRVaW50OCg0KSl7bGV0IG49NixyPTAsbz0wO2Zvcig7MjU1PT09KG89dC5nZXRVaW50OChuKyspKTspcis9MjU1O3IrPW87Y29uc3QgYT1mdW5jdGlvbihlLHQsbil7bGV0IHI9bmV3IFVpbnQ4QXJyYXkoZSx0LG4pLG89W10sYT0wO2Zvcig7YTxuOylhKzM8biYmMD09PXJbYV0mJjA9PT1yW2ErMV0mJjM9PT1yW2ErMl0mJigwPT09clthKzNdfHwxPT09clthKzNdfHwyPT09clthKzNdfHwzPT09clthKzNdKT8oby5wdXNoKHJbYV0sclthKzFdLHJbYSszXSksYSs9NCk6KG8ucHVzaChyW2FdKSxhKyspO3JldHVybiBuZXcgVWludDhBcnJheShvKX0oZS5kYXRhLG4scik7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHQoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IG49W10scj0wO2Zvcig7cjx0OylyKzI8dCYmMD09PWVbcl0mJjA9PT1lW3IrMV0mJigwPT09ZVtyKzJdfHwxPT09ZVtyKzJdfHwyPT09ZVtyKzJdfHwzPT09ZVtyKzJdKT8obi5wdXNoKGVbcl0sZVtyKzFdLDMsZVtyKzJdKSxyKz0zKToobi5wdXNoKGVbcl0pLHIrKyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KG4pfSh0KSxyPW4ubGVuZ3RoLG89TWF0aC5mbG9vcihyLzI1NSksYT1yJTI1NSxzPW5ldyBVaW50OEFycmF5KDYrbysxK3IrZS5ieXRlTGVuZ3RoKTtzWzBdPTAsc1sxXT0wLHNbMl09MCxzWzNdPTEsc1s0XT02LHNbNV09MTAxO2xldCBpPTA7Zm9yKDtpPG87KXNbNitpXT0yNTUsaSsrO3JldHVybiBzWzYraV09YSxpKysscy5zZXQobiw2K2kpLHMuc2V0KG5ldyBVaW50OEFycmF5KGUpLDYraStyKSxzLmJ1ZmZlcn1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIlNhZmFyaSIpPi0xJiYtMT09PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQ2hyb21lIikmJihzZWxmLm9ucnRjdHJhbnNmb3JtPW49Pntjb25zdCByPW4udHJhbnNmb3JtZXI7bGV0IG89W107ci5vcHRpb25zLnBvcnQub25tZXNzYWdlPWU9PntlLmRhdGEuc2VpJiZvLnB1c2goZS5kYXRhLnNlaSl9LHNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTtjb25zdCBhPXIucmVhZGFibGUuZ2V0UmVhZGVyKCkscz1yLndyaXRhYmxlLmdldFdyaXRlcigpOyJyeCI9PT1yLm9wdGlvbnMubmFtZT9mdW5jdGlvbiB0KG4pe2EucmVhZCgpLnRoZW4oKHI9PntpZighci5kb25lKXtpZihyLnZhbHVlIGluc3RhbmNlb2YgUlRDRW5jb2RlZFZpZGVvRnJhbWUpe2NvbnN0IHQ9ZShyLnZhbHVlKTt0JiZuLm9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7c2VpOnR9KX1zLndyaXRlKHIudmFsdWUpLG4ub3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKHt0cmFuc2Zvcm1lZDohMH0pLHQobil9fSkpfShyKToidHgiPT09ci5vcHRpb25zLm5hbWUmJmZ1bmN0aW9uIGUobil7YS5yZWFkKCkudGhlbigocj0+e2lmKCFyLmRvbmUpe2lmKHIudmFsdWUgaW5zdGFuY2VvZiBSVENFbmNvZGVkVmlkZW9GcmFtZSl7Y29uc3QgZT1vLnNoaWZ0KCk7ZSYmKHIudmFsdWUuZGF0YT10KHIudmFsdWUuZGF0YSxlKSl9cy53cml0ZShyLnZhbHVlKSxuLm9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7dHJhbnNmb3JtZWQ6ITB9KSxlKG4pfX0pKX0ocil9LHNlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKSk7Cg==")], { type: "text/javascript" }); + return setTimeout(() => nte.revokeObjectURL(h), 0), new Worker(nte.createObjectURL(h)); + } + const lk = /* @__PURE__ */ new Map(), ck = /* @__PURE__ */ new Map(); + function cFe(h) { + return ye(this, null, function* () { + if (!_i().supportWebRTCEncodedTransform) + return void ie.warning("browser not support audio encoded transform"); + if (ck.has(h)) + return; + const s = { track: h.track }; + if (Jv()) { + if (!h.createEncodedStreams) + return void ie.warning("browser not support createEncodedStreams() API"); + let p = null; + try { + p = h.createEncodedStreams(); + } catch (T) { + return void ie.error("create audio-encoded-streams error", T && T.message); + } + const m = new TransformStream({ transform(T, D) { + s.controller || (s.controller = D), h.track && h.track.id !== s.track.id && (ie.debug("audio track changed: ".concat(s.track.id, " => ").concat(h.track.id)), s.track.removeEventListener("ended", c), s.track = h.track, s.track.addEventListener("ended", c)), D.enqueue(T); + } }); + p.readable.pipeThrough(m).pipeTo(p.writable); + } else if (ks()) { + if (typeof RTCRtpScriptTransform == "undefined") + return void ie.warning("browser not support RTCRtpScriptTransform"); + const p = sk(), m = new MessageChannel(); + yield new ot((D) => p.onmessage = (k) => { + k.data === "registered" && D(void 0); + }); + const T = new RTCRtpScriptTransform(p, { name: "rx", port: m.port2 }, [m.port2]); + h.transform = T, yield new ot((D) => p.onmessage = (k) => { + k.data === "started" && D(void 0); + }), m.port1.onmessage = (D) => { + var k; + D.data.transformed && h.track && ((k = h.track) === null || k === void 0 ? void 0 : k.id) !== s.track.id && (ie.debug("audio track changed: ".concat(s.track.id, " => ").concat(h.track.id)), s.track.removeEventListener("ended", c), s.track = h.track, s.track.addEventListener("ended", c)); + }, s.worker = p; + } + function c() { + h.track.removeEventListener("ended", c), function(p) { + const m = ck.get(p); + if (m) { + ck.delete(p); + try { + var T, D; + (T = m.controller) === null || T === void 0 || T.terminate(), (D = m.worker) === null || D === void 0 || D.terminate(); + } catch (k) { + ie.warning(k && k.message); + } + } + }(h); + } + ck.set(h, s), h.track.addEventListener("ended", c); + }); + } + function uFe(h) { + const s = new DataView(h.data); + if (s.getUint8(0) === 0 && s.getUint8(1) === 0 && s.getUint8(2) === 0 && s.getUint8(3) === 1 && s.getUint8(4) === 6) { + let c = 6, p = 0, m = 0; + for (; (m = s.getUint8(c++)) === 255; ) + p += 255; + p += m; + const T = function(D, k, N) { + let U = new Uint8Array(D, k, N), V = [], G = 0; + for (; G < N; ) + G + 3 < N && U[G] === 0 && U[G + 1] === 0 && U[G + 2] === 3 && (U[G + 3] === 0 || U[G + 3] === 1 || U[G + 3] === 2 || U[G + 3] === 3) ? (V.push(U[G], U[G + 1], U[G + 3]), G += 4) : (V.push(U[G]), G++); + return new Uint8Array(V); + }(h.data, c, p); + return new Uint8Array(T); + } + return null; + } + function hFe(h, s) { + const c = function(N) { + const U = N.length; + let V = [], G = 0; + for (; G < U; ) + G + 2 < U && N[G] === 0 && N[G + 1] === 0 && (N[G + 2] === 0 || N[G + 2] === 1 || N[G + 2] === 2 || N[G + 2] === 3) ? (V.push(N[G], N[G + 1], 3, N[G + 2]), G += 3) : (V.push(N[G]), G++); + return new Uint8Array(V); + }(s), p = c.length, m = Math.floor(p / 255), T = p % 255, D = new Uint8Array(6 + m + 1 + p + h.byteLength); + D[0] = 0, D[1] = 0, D[2] = 0, D[3] = 1, D[4] = 6, D[5] = 101; + let k = 0; + for (; k < m; ) + D[6 + k] = 255, k++; + return D[6 + k] = T, k++, D.set(c, 6 + k), D.set(new Uint8Array(h), 6 + k + p), D.buffer; + } + const uk = /* @__PURE__ */ new Map(), lA = /* @__PURE__ */ new Map(); + function dFe(s) { + return ye(this, arguments, function* (h) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (!_i().supportWebRTCEncodedTransform) + return void ie.warning("browser not support video encoded transform"); + if (!h.track) + return; + if (lA.has(h)) { + const T = lA.get(h); + return void (T && (T.onSei = c.onSei)); + } + const p = { track: h.track, onSei: c.onSei }; + if (Jv()) { + if (!h.createEncodedStreams) + return void ie.warning("browser not support createEncodedStreams() API"); + let T = null; + try { + T = h.createEncodedStreams(); + } catch (k) { + return void ie.error("create video-encoded-streams error", k && k.message); + } + const D = new TransformStream({ transform(k, N) { + p.controller || (p.controller = N), h.track && h.track.id !== p.track.id && (ie.debug("video track changed: ".concat(p.track.id, " => ").concat(h.track.id)), p.track.removeEventListener("ended", m), p.track = h.track, p.track.addEventListener("ended", m)); + const U = uFe(k); + U && p.onSei && p.onSei(U), N.enqueue(k); + } }); + T.readable.pipeThrough(D).pipeTo(T.writable); + } else if (ks()) { + if (typeof RTCRtpScriptTransform == "undefined") + return void ie.warning("browser not support RTCRtpScriptTransform"); + const T = sk(), D = new MessageChannel(); + yield new ot((N) => T.onmessage = (U) => { + U.data === "registered" && N(void 0); + }); + const k = new RTCRtpScriptTransform(T, { name: "rx", port: D.port2 }, [D.port2]); + h.transform = k, yield new ot((N) => T.onmessage = (U) => { + U.data === "started" && N(void 0); + }), D.port1.onmessage = (N) => { + var U; + N.data.transformed && h.track && ((U = h.track) === null || U === void 0 ? void 0 : U.id) !== p.track.id ? (ie.debug("video track changed: ".concat(p.track.id, " => ").concat(h.track.id)), p.track.removeEventListener("ended", m), p.track = h.track, p.track.addEventListener("ended", m)) : N.data.sei && p.onSei && p.onSei(N.data.sei); + }, p.worker = T; + } + function m() { + if (h.track) { + if (this.id !== h.track.id) + return; + h.track.removeEventListener("ended", m); + } + (function(T) { + const D = lA.get(T); + if (D) { + lA.delete(T); + try { + var k, N; + (k = D.controller) === null || k === void 0 || k.terminate(), (N = D.worker) === null || N === void 0 || N.terminate(); + } catch (U) { + ie.warning(U && U.message); + } + } + })(h); + } + lA.set(h, p), h.track.addEventListener("ended", m); + }); + } + (function() { + const h = yi(); + hl.getDisplayMedia = function(s) { + return !!(navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia); + }(), hl.getStreamFromExtension = h.name === xi.CHROME && Number(h.version) > 34, hl.supportUnifiedPlan = function() { + if (!window.RTCRtpTransceiver || !("currentDirection" in RTCRtpTransceiver.prototype)) + return !1; + const s = new RTCPeerConnection(); + let c = !1; + try { + s.addTransceiver("audio"), c = !0; + } catch (p) { + } + return s.close(), c; + }(), hl.supportMinBitrate = h.name === xi.CHROME || h.name === xi.EDGE, hl.supportSetRtpSenderParameters = function() { + const s = yi(); + return !window.RTCRtpSender || !window.RTCRtpSender.prototype.setParameters || !window.RTCRtpSender.prototype.getParameters ? !1 : !!Zy() || !(!ks() && !JO()) || s.name === xi.FIREFOX && Number(s.version) >= 64; + }(), h.name === xi.SAFARI && (Number(h.version) >= 14 ? hl.supportDualStream = !0 : hl.supportDualStream = !1), hl.webAudioMediaStreamDest = function() { + const s = yi(); + return !(s.name === xi.SAFARI && Number(s.version) < 12); + }(), hl.supportReplaceTrack = function() { + return window.RTCRtpSender ? typeof RTCRtpSender.prototype.replaceTrack == "function" : !1; + }(), hl.supportWebGL = typeof WebGLRenderingContext != "undefined", hl.supportRequestFrame = !!window.CanvasCaptureMediaStreamTrack, Zy() || (hl.webAudioWithAEC = !0), hl.supportShareAudio = function() { + const s = yi(); + return (s.os === Zo.WIN_10 || s.os === Zo.WIN_81 || s.os === Zo.WIN_7 || s.os === Zo.LINUX || s.os === Zo.MAC_OS || s.os === Zo.CHROMIUM_OS) && s.name === xi.CHROME && Number(s.version) >= 74; + }(), hl.supportDataChannel = function() { + return !!(Sj(76) || function(s) { + const c = yi(); + return !(c.name !== xi.FIREFOX || !c.osVersion) && Number(c.version) >= s; + }(68) || function(s) { + const c = yi(); + return !(c.name !== xi.SAFARI || !c.osVersion) && Number(c.version) >= s; + }(14)); + }(), hl.supportPCSetConfiguration = function() { + const s = window.RTCPeerConnection; + return !qi() && !!s && s.prototype.setConfiguration instanceof Function; + }(), hl.supportWebRTCEncodedTransform = function() { + const s = yi(); + return s.name === "Chrome" && Number(s.version) >= 86 || s.name === "Safari" && Number(s.version) >= 15; + }(), hl.supportWebRTCInsertableStream = function() { + const s = yi(); + return (s.name === xi.CHROME || s.name === xi.EDGE) && Number(s.version) >= 94 && "MediaStreamTrackGenerator" in window && "MediaStreamTrackProcessor" in window; + }(), rM(() => { + hl.supportDualStreamEncoding = function() { + const s = yi(); + return Le("DISABLE_WEBAUDIO") ? !0 : s.name === "Safari" && Number(s.version) >= 14 || !!(s.name === "Chrome" && /Windows/i.test(s.os || "") && Number(s.version) >= 100 && Le("CHROME_DUAL_STREAM_USE_ENCODING")); + }(), ie.info("browser compatibility", JSON.stringify(hl), JSON.stringify(h)); + }); + })(); + class fFe extends Ra { + constructor() { + super(...arguments), Z(this, "resultStorage", /* @__PURE__ */ new Map()); + } + setLocalAudioStats(s, c, p) { + this.record("AUDIO_INPUT_LEVEL_TOO_LOW", s, this.checkAudioInputLevel(p, c)), this.record("SEND_AUDIO_BITRATE_TOO_LOW", s, this.checkSendAudioBitrate(p, c)); + } + setLocalVideoStats(s, c, p) { + this.record("SEND_VIDEO_BITRATE_TOO_LOW", s, this.checkSendVideoBitrate(p, c)), this.record("FRAMERATE_INPUT_TOO_LOW", s, this.checkFramerateInput(p, c)), this.record("FRAMERATE_SENT_TOO_LOW", s, this.checkFramerateSent(p)); + } + setRemoteAudioStats(s, c) { + const p = s.getUserId(); + this.record("AUDIO_OUTPUT_LEVEL_TOO_LOW", p, this.checkAudioOutputLevel(c)); + } + setRemoteVideoStats(s, c) { + const p = s.getUserId(); + this.record("RECV_VIDEO_DECODE_FAILED", p, this.checkVideoDecode(c)); + } + record(s, c, p) { + if (Le("STATS_UPDATE_INTERVAL") > 500) + return; + this.resultStorage.has(s) || this.resultStorage.set(s, { result: [], isPrevNormal: !0 }); + const m = this.resultStorage.get(s); + if (m && (m.result.push(p), m.result.length >= 5)) { + var T; + const D = rr(T = m.result).call(T, !0); + m.isPrevNormal && !D && this.emit("exception", ite[s], s, c), !m.isPrevNormal && D && this.emit("exception", ite[s] + 2e3, s + "_RECOVER", c), m.isPrevNormal = D, m.result = []; + } + } + checkAudioOutputLevel(s) { + return !(s.receiveBitrate > 0 && s.receiveLevel === 0); + } + checkAudioInputLevel(s, c) { + return c instanceof Uo && !c.isActive || !!c.muted || s.sendVolumeLevel !== 0; + } + checkFramerateInput(s, c) { + let p = null; + c._encoderConfig && c._encoderConfig.frameRate && (p = oh(c._encoderConfig.frameRate)); + const m = s.captureFrameRate; + return !p || !m || !(p > 10 && m < 5 || p < 10 && p >= 5 && m <= 1); + } + checkFramerateSent(s) { + return !(s.captureFrameRate && s.sendFrameRate && s.captureFrameRate > 5 && s.sendFrameRate <= 1); + } + checkSendVideoBitrate(s, c) { + return !!c.muted || s.sendBitrate !== 0; + } + checkSendAudioBitrate(s, c) { + return c instanceof Uo && !c.isActive || !!c.muted || s.sendBitrate !== 0; + } + checkVideoDecode(s) { + return s.receiveBitrate === 0 || s.decodeFrameRate !== 0; + } + } + const ite = { FRAMERATE_INPUT_TOO_LOW: 1001, FRAMERATE_SENT_TOO_LOW: 1002, SEND_VIDEO_BITRATE_TOO_LOW: 1003, RECV_VIDEO_DECODE_FAILED: 1005, AUDIO_INPUT_LEVEL_TOO_LOW: 2001, AUDIO_OUTPUT_LEVEL_TOO_LOW: 2002, SEND_AUDIO_BITRATE_TOO_LOW: 2003 }, Ks = new class { + markSubscribeStart(h, s) { + performance.mark("agora-web-sdk/".concat(h, "/subscribe-").concat(s)); + } + markPublishStart(h, s) { + performance.mark("agora-web-sdk/".concat(h, "/publish-").concat(s)); + } + measureFromSubscribeStart(h, s) { + const c = performance.getEntriesByName("agora-web-sdk/".concat(h, "/subscribe-").concat(s)); + if (c.length > 0) { + const p = c[c.length - 1]; + return Math.round(performance.now() - p.startTime); + } + return 0; + } + measureFromPublishStart(h, s) { + const c = performance.getEntriesByName("agora-web-sdk/".concat(h, "/publish-").concat(s)); + if (c.length > 0) { + const p = c[c.length - 1]; + return Math.round(performance.now() - p.startTime); + } + return 0; + } + }(); + function P$(h, s) { + this.v = h, this.k = s; + } + function En(h) { + return new P$(h, 0); + } + var pFe = MZ, gFe = pg; + ki({ target: "Promise", stat: !0, forced: !0 }, { withResolvers: function() { + var h = gFe.f(this); + return { promise: h.promise, resolve: h.resolve, reject: h.reject }; + } }); + var vFe = pg, mFe = IC; + ki({ target: "Promise", stat: !0, forced: !0 }, { try: function(h) { + var s = vFe.f(this), c = mFe(h); + return (c.error ? s.reject : s.resolve)(c.value), s.promise; + } }); + var N$ = i(pFe), ate = Ir.f("asyncIterator"), yFe = i(ate); + function cA(h) { + var s, c; + function p(T, D) { + try { + var k = h[T](D), N = k.value, U = N instanceof P$; + N$.resolve(U ? N.v : N).then(function(V) { + if (U) { + var G = T === "return" ? "return" : "next"; + if (!N.k || V.done) + return p(G, V); + V = h[G](V).value; + } + m(k.done ? "return" : "normal", V); + }, function(V) { + p("throw", V); + }); + } catch (V) { + m("throw", V); + } + } + function m(T, D) { + switch (T) { + case "return": + s.resolve({ value: D, done: !0 }); + break; + case "throw": + s.reject(D); + break; + default: + s.resolve({ value: D, done: !1 }); + } + (s = s.next) ? p(s.key, s.arg) : c = null; + } + this._invoke = function(T, D) { + return new N$(function(k, N) { + var U = { key: T, arg: D, resolve: k, reject: N, next: null }; + c ? c = c.next = U : (s = c = U, p(T, D)); + }); + }, typeof h.return != "function" && (this.return = void 0); + } + function yu(h) { + return function() { + return new cA(h.apply(this, arguments)); + }; + } + cA.prototype[typeof EC == "function" && yFe || "@@asyncIterator"] = function() { + return this; + }, cA.prototype.next = function(h) { + return this._invoke("next", h); + }, cA.prototype.throw = function(h) { + return this._invoke("throw", h); + }, cA.prototype.return = function(h) { + return this._invoke("return", h); + }; + var ote = i(Ke.Object.getOwnPropertySymbols), _Fe = ki, SFe = Oh.indexOf, bFe = BU, L$ = P([].indexOf), ste = !!L$ && 1 / L$([1], 1, -0) < 0; + _Fe({ target: "Array", proto: !0, forced: ste || !bFe("indexOf") }, { indexOf: function(h) { + var s = arguments.length > 1 ? arguments[1] : void 0; + return ste ? L$(this, h, s) || 0 : SFe(this, h, s); + } }); + var EFe = wc("Array").indexOf, CFe = v, TFe = EFe, F$ = Array.prototype, lte = i(function(h) { + var s = h.indexOf; + return h === F$ || CFe(F$, h) && s === F$.indexOf ? TFe : s; + }), wFe = _r, cte = eg; + ki({ target: "Object", stat: !0, forced: a(function() { + cte(1); + }) }, { keys: function(h) { + return cte(wFe(h)); + } }); + var IFe = i(Ke.Object.keys); + function xFe(h, s) { + if (h == null) + return {}; + var c, p, m = function(D, k) { + if (D == null) + return {}; + var N, U, V = {}, G = IFe(D); + for (U = 0; U < G.length; U++) + N = G[U], lte(k).call(k, N) >= 0 || (V[N] = D[N]); + return V; + }(h, s); + if (ote) { + var T = ote(h); + for (p = 0; p < T.length; p++) + c = T[p], lte(s).call(s, c) >= 0 || Object.prototype.propertyIsEnumerable.call(h, c) && (m[c] = h[c]); + } + return m; + } + var ute = { exports: {} }; + (function(h, s) { + h.exports = (() => { + var c = { 8: (T, D, k) => { + k.r(D), k.d(D, { Parser: () => fn, Printer: () => Su, parse: () => qr, print: () => Si }); + const N = ` +`, U = "".concat("\r").concat(N), V = " "; + let G; + function K(Qt) { + return Qt >= "0" && Qt <= "9"; + } + function q(Qt) { + return Qt >= "!" && Qt <= "~"; + } + function ue(Qt) { + return q(Qt) || Qt >= "€" && Qt <= "ÿ"; + } + function oe(Qt) { + return Qt === "!" || Qt >= "#" && Qt <= "'" || Qt >= "*" && Qt <= "+" || Qt >= "-" && Qt <= "." || Qt >= "0" && Qt <= "9" || Qt >= "A" && Qt <= "Z" || Qt >= "^" && Qt <= "~"; + } + function he(Qt) { + return Qt >= "1" && Qt <= "9"; + } + function Ce(Qt) { + return Qt >= "A" && Qt <= "Z" || Qt >= "a" && Qt <= "z"; + } + function ke(Qt) { + return Qt === "d" || Qt === "h" || Qt === "m" || Qt === "s"; + } + function Ge(Qt) { + return Qt > "" && Qt < " " || Qt > "\v" && Qt < "\f" || Qt > "" && Qt < "ÿ"; + } + function tt(Qt) { + return Ce(Qt) || K(Qt) || Qt === "+" || Qt === "/"; + } + function Ye(Qt) { + return K(Qt) || Ce(Qt) || Qt === "+" || Qt === "/" || Qt === "-" || Qt === "_"; + } + function et(Qt) { + return Ce(Qt) || K(Qt) || Qt === "+" || Qt === "/"; + } + function ht(Qt, se) { + var Pe = Object.keys(Qt); + if (Object.getOwnPropertySymbols) { + var We = Object.getOwnPropertySymbols(Qt); + se && (We = We.filter(function(Ft) { + return Object.getOwnPropertyDescriptor(Qt, Ft).enumerable; + })), Pe.push.apply(Pe, We); + } + return Pe; + } + function st(Qt) { + for (var se = 1; se < arguments.length; se++) { + var Pe = arguments[se] != null ? arguments[se] : {}; + se % 2 ? ht(Object(Pe), !0).forEach(function(We) { + Ut(Qt, We, Pe[We]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(Qt, Object.getOwnPropertyDescriptors(Pe)) : ht(Object(Pe)).forEach(function(We) { + Object.defineProperty(Qt, We, Object.getOwnPropertyDescriptor(Pe, We)); + }); + } + return Qt; + } + function Ut(Qt, se, Pe) { + return se in Qt ? Object.defineProperty(Qt, se, { value: Pe, enumerable: !0, configurable: !0, writable: !0 }) : Qt[se] = Pe, Qt; + } + (function(Qt) { + Qt.VERSION = "v", Qt.ORIGIN = "o", Qt.SESSION_NAME = "s", Qt.INFORMATION = "i", Qt.URI = "u", Qt.EMAIL = "e", Qt.PHONE = "p", Qt.CONNECTION = "c", Qt.BANDWIDTH = "b", Qt.TIME = "t", Qt.REPEAT = "r", Qt.ZONE_ADJUSTMENTS = "z", Qt.KEY = "k", Qt.ATTRIBUTE = "a", Qt.MEDIA = "m"; + })(G || (G = {})); + class Vt { + consumeText(se, Pe) { + let We = Pe; + for (; We < se.length; ) { + const Ft = se[We]; + if (Ft === "\0" || Ft === "\r" || Ft === N) + break; + We += 1; + } + if (We - Pe == 0) + throw new Error("Invalid text, at ".concat(se)); + return We; + } + consumeUnicastAddress(se, Pe, We) { + return this.consumeTill(se, Pe, V); + } + consumeOneOrMore(se, Pe, We) { + let Ft = Pe; + for (; We(se[Ft]); ) + Ft++; + if (Ft - Pe == 0) + throw new Error("Invalid rule at ".concat(Pe, ".")); + return Ft; + } + consumeSpace(se, Pe) { + if (se[Pe] === V) + return Pe + 1; + throw new Error("Invalid space at ".concat(Pe, ".")); + } + consumeIP4Address(se, Pe) { + let We = Pe; + for (let Ft = 0; Ft < 4; Ft++) + if (We = this.consumeDecimalUChar(se, We), Ft !== 3) { + if (se[We] !== ".") + throw new Error("Invalid IP4 address."); + We++; + } + return We; + } + consumeDecimalUChar(se, Pe) { + let We = Pe; + for (let pn = 0; pn < 3 && K(se[We]); pn++, We++) + ; + if (We - Pe == 0) + throw new Error("Invalid decimal uchar."); + const Ft = parseInt(se.slice(Pe, We)); + if (Ft >= 0 && Ft <= 255) + return We; + throw new Error("Invalid decimal uchar"); + } + consumeIP6Address(se, Pe) { + let We = this.consumeHexpart(se, Pe); + return se[We] === ":" && (We += 1, We = this.consumeIP4Address(se, We)), We; + } + consumeHexpart(se, Pe) { + let We = Pe; + if (se[We] === ":" && se[We + 1] === ":") { + We += 2; + try { + We = this.consumeHexseq(se, We); + } catch (Ft) { + } + return We; + } + if (We = this.consumeHexseq(se, We), se[We] === ":" && se[We + 1] === ":") { + We += 2; + try { + We = this.consumeHexseq(se, We); + } catch (Ft) { + } + return We; + } + return We; + } + consumeHexseq(se, Pe) { + let We = Pe; + for (; We = this.consumeHex4(se, We), se[We] === ":" && se[We + 1] !== ":"; ) + We += 1; + return We; + } + consumeHex4(se, Pe) { + let We = 0; + for (; We < 4; We++) + if (!((Ft = se[Pe + We]) >= "0" && Ft <= "9" || Ft >= "a" && Ft <= "f" || Ft >= "A" && Ft <= "F")) { + if (We === 0) + throw new Error("Invalid hex 4"); + break; + } + var Ft; + return Pe + We; + } + consumeFQDN(se, Pe) { + let We = Pe; + for (; K(se[We]) || Ce(se[We]) || se[We] === "-" || se[We] === "."; ) + We += 1; + if (We - Pe < 4) + throw new Error("Invalid FQDN"); + return We; + } + consumeExtnAddr(se, Pe) { + return this.consumeOneOrMore(se, Pe, ue); + } + consumeMulticastAddress(se, Pe, We) { + switch (We) { + case "IP4": + case "ip4": + return this.consumeIP4MulticastAddress(se, Pe); + case "IP6": + case "ip6": + return this.consumeIP6MulticastAddress(se, Pe); + default: + try { + return this.consumeFQDN(se, Pe); + } catch (Ft) { + return this.consumeExtnAddr(se, Pe); + } + } + } + consumeIP6MulticastAddress(se, Pe) { + const We = this.consumeHexpart(se, Pe); + return se[We] === "/" ? this.consumeInteger(se, We + 1) : We; + } + consumeIP4MulticastAddress(se, Pe) { + let We = Pe + 3; + const Ft = se.slice(Pe, We), pn = parseInt(Ft); + if (pn < 224 || pn > 239) + throw new Error("Invalid IP4 multicast address, IPv4 multicast addresses may be in the range 224.0.0.0 to 239.255.255.255."); + for (let ga = 0; ga < 3; ga++) { + if (se[We] !== ".") + throw new Error("Invalid IP4 multicast address."); + We += 1, We = this.consumeDecimalUChar(se, We); + } + return se[We] === "/" && (We += 1), We = this.consumeTTL(se, We), se[We] === "/" && (We = this.consumeInteger(se, We)), We; + } + consumeInteger(se, Pe) { + if (!he(se[Pe])) + throw new Error("Invalid integer."); + for (Pe += 1; K(se[Pe]); ) + Pe += 1; + return Pe; + } + consumeTTL(se, Pe) { + if (se[Pe] === "0") + return Pe + 1; + if (!he(se[Pe])) + throw new Error("Invalid TTL."); + Pe += 1; + for (let We = 0; We < 2 && K(se[Pe]); We++) + Pe += 1; + return Pe; + } + consumeToken(se, Pe) { + return this.consumeOneOrMore(se, Pe, oe); + } + consumeTime(se, Pe) { + let We = Pe; + if (se[We] === "0") + return We + 1; + for (he(se[We]) && (We += 1); K(se[We]); ) + We++; + if (We - Pe < 10) + throw new Error("Invalid time"); + return We; + } + consumeAddress(se, Pe) { + return this.consumeTill(se, Pe, V); + } + consumeTypedTime(se, Pe) { + let We = Pe; + return We = this.consumeOneOrMore(se, We, K), ke(se[We]) ? We + 1 : We; + } + consumeRepeatInterval(se, Pe) { + if (!he(se[Pe])) + throw new Error("Invalid repeat interval"); + for (Pe += 1; K(se[Pe]); ) + Pe += 1; + return ke(se[Pe]) && (Pe += 1), Pe; + } + consumePort(se, Pe) { + return this.consumeOneOrMore(se, Pe, K); + } + consume(se, Pe, We) { + for (let Ft = 0; Ft < We.length; Ft++) { + if (Pe + Ft >= se.length) + throw new Error("consume exceeding value length"); + if (se[Pe + Ft] !== We[Ft]) + throw new Error("consume ".concat(We, " failed at ").concat(Ft)); + } + return Pe + We.length; + } + consumeTill(se, Pe, We) { + let Ft = Pe; + for (; Ft < se.length && (typeof We != "string" || se[Ft] !== We) && (typeof We != "function" || !We(se[Ft])); ) + Ft++; + return Ft; + } + } + class fn extends Vt { + constructor() { + super(), Ut(this, "records", []), Ut(this, "currentLine", 0); + } + parse(se) { + const Pe = this.probeEOL(se); + this.records = se.split(Pe).filter(($o) => !!$o.trim()).map(this.parseLine), this.currentLine = 0; + const We = this.parseVersion(), Ft = this.parseOrigin(), pn = this.parseSessionName(), ga = this.parseInformation(), Js = this.parseUri(), bu = this.parseEmail(), ym = this.parsePhone(), wk = this.parseConnection(), Ik = this.parseBandWidth(), td = this.parseTimeFields(), x_ = this.parseKey(), mT = this.parseSessionAttribute(), oo = this.parseMediaDescription(); + if (this.currentLine !== this.records.length) + throw new Error("parsing failed, non exhaustive sdp lines."); + return { version: We, origin: Ft, sessionName: pn, information: ga, uri: Js, emails: bu, phones: ym, connection: wk, bandwidths: Ik, timeFields: td, key: x_, attributes: mT, mediaDescriptions: oo }; + } + getCurrentRecord() { + const se = this.records[this.currentLine]; + if (!se) + throw new Error("Record doesn't exit."); + return se; + } + probeEOL(se) { + for (let Pe = 0; Pe < se.length; Pe++) + if (se[Pe] === N) + return se[Pe - 1] === "\r" ? U : N; + throw new Error("Invalid newline character."); + } + parseLine(se, Pe) { + if (se.length < 2) + throw new Error("Invalid sdp line, sdp line should be of form =."); + const We = se[0]; + if (se[1] !== "=") + throw new Error('Invalid sdp line, should be a single character followed by an "=" sign.'); + return { type: We, value: se.slice(2), line: Pe, cur: 0 }; + } + parseSessionAttribute() { + const se = new ha(); + for (; this.currentLine < this.records.length; ) { + const Pe = this.getCurrentRecord(); + if (Pe.type !== G.ATTRIBUTE) + break; + const We = { attField: this.extractOneOrMore(Pe, (Ft) => oe(Ft) && Ft !== ":"), _cur: 0 }; + Pe.value[Pe.cur] === ":" && (Pe.cur += 1, We.attValue = this.extractOneOrMore(Pe, Ge)), se.parse(We), this.currentLine++; + } + return se.digest(); + } + parseMediaAttributes(se) { + const Pe = new jo(se); + for (; this.currentLine < this.records.length; ) { + const We = this.getCurrentRecord(); + if (We.type !== G.ATTRIBUTE) + break; + const Ft = { attField: this.extractOneOrMore(We, (pn) => oe(pn) && pn !== ":"), _cur: 0 }; + We.value[We.cur] === ":" && (We.cur += 1, Ft.attValue = this.extractOneOrMore(We, Ge)), Pe.parse(Ft), this.currentLine++; + } + return Pe.digest(); + } + parseKey() { + const se = this.getCurrentRecord(); + if (se.type === G.KEY) { + if (se.value === "prompt" || se.value === "clear:" || se.value === "base64:" || se.value === "uri:") + return se.value; + throw this.currentLine++, new Error("Invalid key."); + } + } + parseZone() { + const se = this.getCurrentRecord(); + if (se.type === G.ZONE_ADJUSTMENTS) { + const Pe = []; + for (; ; ) + try { + const We = this.extract(se, this.consumeTime); + this.consumeSpaceForRecord(se); + let Ft = !1; + se.value[se.cur] === "-" && (Ft = !0, se.cur += 1); + const pn = this.extract(se, this.consumeTypedTime); + Pe.push({ time: We, typedTime: pn, back: Ft }); + } catch (We) { + break; + } + if (Pe.length === 0) + throw new Error("Invalid zone adjustments"); + return this.currentLine++, Pe; + } + return []; + } + parseRepeat() { + const se = []; + for (; ; ) { + const Pe = this.getCurrentRecord(); + if (Pe.type !== G.REPEAT) + break; + { + const We = this.extract(Pe, this.consumeRepeatInterval), Ft = this.parseTypedTime(Pe); + se.push({ repeatInterval: We, typedTimes: Ft }), this.currentLine++; + } + } + return se; + } + parseTypedTime(se) { + const Pe = []; + for (; ; ) + try { + this.consumeSpaceForRecord(se), Pe.push(this.extract(se, this.consumeTypedTime)); + } catch (We) { + break; + } + if (Pe.length === 0) + throw new Error("Invalid typed time."); + return Pe; + } + parseTime() { + const se = this.getCurrentRecord(), Pe = this.extract(se, this.consumeTime); + this.consumeSpaceForRecord(se); + const We = this.extract(se, this.consumeTime); + return this.currentLine++, { startTime: Pe, stopTime: We }; + } + parseBandWidth() { + const se = []; + for (; this.currentLine < this.records.length; ) { + const Pe = this.getCurrentRecord(); + if (Pe.type !== G.BANDWIDTH) + break; + { + const We = this.extractOneOrMore(Pe, oe); + if (Pe.value[Pe.cur] !== ":") + throw new Error("Invalid bandwidth field."); + Pe.cur++; + const Ft = this.extractOneOrMore(Pe, K); + se.push({ bwtype: We, bandwidth: Ft }), this.currentLine++; + } + } + return se; + } + parseVersion() { + const se = this.getCurrentRecord(); + if (se.type !== G.VERSION) + throw new Error("first sdp record must be version"); + const Pe = se.value.slice(0, this.consumeOneOrMore(se.value, 0, K)); + if (Pe.length !== se.value.length) + throw new Error('invalid proto version, "v='.concat(se.value, '"')); + return this.currentLine++, Pe; + } + parseOrigin() { + const se = this.getCurrentRecord(); + if (se.type !== G.ORIGIN) + throw new Error("second line of sdp must be origin"); + const Pe = this.extractOneOrMore(se, ue); + this.consumeSpaceForRecord(se); + const We = this.extractOneOrMore(se, K); + this.consumeSpaceForRecord(se); + const Ft = this.extractOneOrMore(se, K); + this.consumeSpaceForRecord(se); + const pn = this.extractOneOrMore(se, oe); + this.consumeSpaceForRecord(se); + const ga = this.extractOneOrMore(se, oe); + this.consumeSpaceForRecord(se); + const Js = this.extract(se, this.consumeUnicastAddress); + return this.currentLine++, { username: Pe, sessId: We, sessVersion: Ft, nettype: pn, addrtype: ga, unicastAddress: Js }; + } + parseSessionName() { + const se = this.getCurrentRecord(); + if (se.type === G.SESSION_NAME) { + const Pe = this.extract(se, this.consumeText); + return this.currentLine++, Pe; + } + } + parseInformation() { + const se = this.getCurrentRecord(); + if (se.type !== G.INFORMATION) + return; + const Pe = this.extract(se, this.consumeText); + return this.currentLine++, Pe; + } + parseUri() { + const se = this.getCurrentRecord(); + if (se.type === G.URI) + return this.currentLine++, se.value; + } + parseEmail() { + const se = []; + for (; ; ) { + const Pe = this.getCurrentRecord(); + if (Pe.type !== G.EMAIL) + break; + se.push(Pe.value), this.currentLine++; + } + return se; + } + parsePhone() { + const se = []; + for (; ; ) { + const Pe = this.getCurrentRecord(); + if (Pe.type !== G.PHONE) + break; + se.push(Pe.value), this.currentLine++; + } + return se; + } + parseConnection() { + const se = this.getCurrentRecord(); + if (se.type === G.CONNECTION) { + const Pe = this.extractOneOrMore(se, oe); + this.consumeSpaceForRecord(se); + const We = this.extractOneOrMore(se, oe); + this.consumeSpaceForRecord(se); + const Ft = this.extract(se, this.consumeAddress); + return this.currentLine++, { nettype: Pe, addrtype: We, address: Ft }; + } + } + parseMedia() { + const se = this.getCurrentRecord(), Pe = this.extract(se, this.consumeToken); + this.consumeSpaceForRecord(se); + let We = this.extract(se, this.consumePort); + se.value[se.cur] === "/" && (se.cur += 1, We += this.extract(se, this.consumeInteger)), this.consumeSpaceForRecord(se); + const Ft = []; + for (Ft.push(this.extract(se, this.consumeToken)); se.value[se.cur] === "/"; ) + se.cur += 1, Ft.push(this.extract(se, this.consumeToken)); + if (Ft.length === 0) + throw new Error("Invalid proto"); + const pn = this.parseFmt(se); + return this.currentLine++, { mediaType: Pe, port: We, protos: Ft, fmts: pn }; + } + parseTimeFields() { + const se = []; + for (; this.getCurrentRecord().type === G.TIME; ) { + const Pe = this.parseTime(), We = this.parseRepeat(), Ft = this.parseZone(); + se.push({ time: Pe, repeats: We, zones: Ft }); + } + return se; + } + parseMediaDescription() { + const se = []; + for (; this.currentLine < this.records.length && this.getCurrentRecord().type === G.MEDIA; ) { + const Pe = this.parseMedia(), We = this.parseInformation(), Ft = this.parseConnections(), pn = this.parseBandWidth(), ga = this.parseKey(), Js = this.parseMediaAttributes(Pe); + se.push({ media: Pe, information: We, connections: Ft, bandwidths: pn, key: ga, attributes: Js }); + } + return se; + } + parseConnections() { + const se = []; + for (; this.currentLine < this.records.length && this.getCurrentRecord().type === G.CONNECTION; ) + se.push(this.parseConnection()); + return se; + } + parseFmt(se) { + const Pe = []; + for (; ; ) + try { + this.consumeSpaceForRecord(se), Pe.push(this.extract(se, this.consumeToken)); + } catch (We) { + break; + } + if (Pe.length === 0) + throw new Error("Invalid fmts"); + return Pe; + } + extract(se, Pe, ...We) { + const Ft = Pe.call(this, se.value, se.cur, ...We), pn = se.value.slice(se.cur, Ft); + return se.cur = Ft, pn; + } + extractOneOrMore(se, Pe) { + const We = this.consumeOneOrMore(se.value, se.cur, Pe), Ft = se.value.slice(se.cur, We); + return se.cur = We, Ft; + } + consumeSpaceForRecord(se) { + if (se.value[se.cur] !== V) + throw new Error("Invalid space at ".concat(se.cur, ".")); + se.cur += 1; + } + } + class Nn extends Vt { + constructor(...se) { + super(...se), Ut(this, "attributes", void 0), Ut(this, "digested", !1); + } + extractOneOrMore(se, Pe, We) { + const Ft = this.consumeOneOrMore(se.attValue, se._cur, Pe), pn = se.attValue.slice(se._cur, Ft), [ga, Js] = We || []; + if (typeof ga == "number" && pn.length < ga) + throw new Error("error in length, should be more or equal than ".concat(ga, " characters.")); + if (typeof Js == "number" && pn.length > Js) + throw new Error("error in length, should be less or equal than ".concat(Js, " characters.")); + return se._cur = Ft, pn; + } + consumeAttributeSpace(se) { + if (se.attValue[se._cur] !== V) + throw new Error("Invalid space at ".concat(se._cur, ".")); + se._cur += 1; + } + extract(se, Pe, ...We) { + if (!se.attValue) + throw new Error("Nothing to extract from attValue."); + const Ft = Pe.call(this, se.attValue, se._cur, ...We), pn = se.attValue.slice(se._cur, Ft); + return se._cur = Ft, pn; + } + atEnd(se) { + if (!se.attValue) + throw new Error(); + return se._cur >= se.attValue.length; + } + peekChar(se) { + if (!se.attValue) + throw new Error(); + return se.attValue[se._cur]; + } + peek(se, Pe) { + if (!se.attValue) + throw new Error(); + for (let We = 0; We < Pe.length; We++) + if (Pe[We] !== se.attValue[se._cur + We]) + return !1; + return !0; + } + parseIceUfrag(se) { + if (this.attributes.iceUfrag) + throw new Error("Invalid ice-ufrag, should be only a single line if 'a=ice-ufrag'"); + this.attributes.iceUfrag = this.extractOneOrMore(se, tt, [4, 256]); + } + parseIcePwd(se) { + if (this.attributes.icePwd) + throw new Error("Invalid ice-pwd, should be only a single line if 'a=ice-pwd'"); + this.attributes.icePwd = this.extractOneOrMore(se, tt, [22, 256]); + } + parseIceOptions(se) { + if (this.attributes.iceOptions) + throw new Error("Invalid ice-options, should be only one 'ice-options' line"); + const Pe = []; + for (; !this.atEnd(se); ) { + Pe.push(this.extractOneOrMore(se, tt)); + try { + this.consumeAttributeSpace(se); + } catch (We) { + if (this.atEnd(se)) + break; + throw We; + } + } + this.attributes.iceOptions = Pe; + } + parseFingerprint(se) { + const Pe = this.extract(se, this.consumeToken); + this.consumeAttributeSpace(se); + const We = this.extract(se, this.consumeTill); + this.attributes.fingerprints.push({ hashFunction: Pe, fingerprint: We }); + } + parseExtmap(se) { + const Pe = this.extractOneOrMore(se, K); + let We; + this.peekChar(se) === "/" && (this.extract(se, this.consume, "/"), We = this.extract(se, this.consumeToken)), this.consumeAttributeSpace(se); + const Ft = this.extract(se, this.consumeTill, V), pn = st(st({ entry: parseInt(Pe, 10) }, We && { direction: We }), {}, { extensionName: Ft }); + this.peekChar(se) === V && (this.consumeAttributeSpace(se), pn.extensionAttributes = this.extract(se, this.consumeTill)), this.attributes.extmaps.push(pn); + } + parseSetup(se) { + if (this.attributes.setup) + throw new Error("must only be one single 'a=setup' line."); + const Pe = this.extract(se, this.consumeTill); + if (Pe !== "active" && Pe !== "passive" && Pe !== "actpass" && Pe !== "holdconn") + throw new Error("role must be one of 'active', 'passive', 'actpass', 'holdconn'."); + this.attributes.setup = Pe; + } + } + class ha extends Nn { + constructor(...se) { + super(...se), Ut(this, "attributes", { unrecognized: [], groups: [], extmaps: [], fingerprints: [], identities: [] }); + } + parse(se) { + if (this.digested) + throw new Error("already digested"); + try { + switch (se.attField) { + case "group": + this.parseGroup(se); + break; + case "ice-lite": + this.parseIceLite(); + break; + case "ice-ufrag": + this.parseIceUfrag(se); + break; + case "ice-pwd": + this.parseIcePwd(se); + break; + case "ice-options": + this.parseIceOptions(se); + break; + case "fingerprint": + this.parseFingerprint(se); + break; + case "setup": + this.parseSetup(se); + break; + case "tls-id": + this.parseTlsId(se); + break; + case "identity": + this.parseIdentity(se); + break; + case "extmap": + this.parseExtmap(se); + break; + case "msid-semantic": + this.parseMsidSemantic(se); + break; + default: + se.ignored = !0, this.attributes.unrecognized.push(se); + } + } catch (Pe) { + throw console.error("parsing session attribute ".concat(se.attField, ' error, "a=').concat(se.attField, ":").concat(se.attValue, '"')), Pe; + } + if (!se.ignored && se.attValue && !this.atEnd(se)) + throw new Error("attribute parsing error"); + } + digest() { + return this.digested = !0, this.attributes; + } + parseGroup(se) { + const Pe = this.extract(se, this.consumeToken), We = []; + for (; !this.atEnd(se) && this.peekChar(se) === V; ) + this.consumeAttributeSpace(se), We.push(this.extract(se, this.consumeToken)); + this.attributes.groups.push({ semantic: Pe, identificationTag: We }); + } + parseIceLite() { + if (this.attributes.iceLite) + throw new Error("Invalid ice-lite, should be only a single line of 'a=ice-lite'"); + this.attributes.iceLite = !0; + } + parseTlsId(se) { + if (this.attributes.tlsId) + throw new Error("must be only one tld-id line"); + this.attributes.tlsId = this.extractOneOrMore(se, Ye); + } + parseIdentity(se) { + const Pe = this.extractOneOrMore(se, et), We = []; + for (; !this.atEnd(se) && this.peekChar(se) === V; ) { + this.consumeAttributeSpace(se); + const Ft = this.extract(se, this.consumeToken); + this.extract(se, this.consume, "="); + const pn = this.extractOneOrMore(se, (ga) => ga !== V && Ge(ga)); + We.push({ name: Ft, value: pn }); + } + this.attributes.identities.push({ assertionValue: Pe, extensions: We }); + } + parseMsidSemantic(se) { + this.peekChar(se) === V && this.consumeAttributeSpace(se); + const Pe = { semantic: this.extract(se, this.consumeToken), identifierList: [] }; + for (; ; ) { + try { + this.consumeAttributeSpace(se); + } catch (We) { + break; + } + if (this.peekChar(se) === "*") { + this.extract(se, this.consume, "*"), Pe.applyForAll = !0; + break; + } + { + const We = this.extract(se, this.consumeTill, V); + Pe.identifierList.push(We); + } + } + this.attributes.msidSemantic = Pe; + } + } + class jo extends Nn { + constructor(se) { + super(), Ut(this, "attributes", void 0), se.protos.indexOf("RTP") !== -1 || se.protos.indexOf("rtp"), this.attributes = { unrecognized: [], candidates: [], extmaps: [], fingerprints: [], imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: [], ssrcGroups: [], rtcpFeedbackWildcards: [], payloads: [] }; + } + parse(se) { + if (this.digested) + throw new Error("already digested"); + try { + switch (se.attField) { + case "extmap": + this.parseExtmap(se); + break; + case "setup": + this.parseSetup(se); + break; + case "ice-ufrag": + this.parseIceUfrag(se); + break; + case "ice-pwd": + this.parseIcePwd(se); + break; + case "ice-options": + this.parseIceOptions(se); + break; + case "candidate": + this.parseCandidate(se); + break; + case "remote-candidate": + this.parseRemoteCandidate(se); + break; + case "end-of-candidates": + this.parseEndOfCandidates(); + break; + case "fingerprint": + this.parseFingerprint(se); + break; + case "rtpmap": + this.parseRtpmap(se); + break; + case "ptime": + this.parsePtime(se); + break; + case "maxptime": + this.parseMaxPtime(se); + break; + case "sendrecv": + case "recvonly": + case "sendonly": + case "inactive": + this.parseDirection(se); + break; + case "ssrc": + this.parseSSRC(se); + break; + case "fmtp": + this.parseFmtp(se); + break; + case "rtcp-fb": + this.parseRtcpFb(se); + break; + case "rtcp-mux": + this.parseRTCPMux(); + break; + case "rtcp-mux-only": + this.parseRTCPMuxOnly(); + break; + case "rtcp-rsize": + this.parseRTCPRsize(); + break; + case "rtcp": + this.parseRTCP(se); + break; + case "mid": + this.parseMid(se); + break; + case "msid": + this.parseMsid(se); + break; + case "imageattr": + this.parseImageAttr(se); + break; + case "rid": + this.parseRid(se); + break; + case "simulcast": + this.parseSimulcast(se); + break; + case "sctp-port": + this.parseSctpPort(se); + break; + case "max-message-size": + this.parseMaxMessageSize(se); + break; + case "ssrc-group": + this.parseSSRCGroup(se); + break; + default: + se.ignored = !0, this.attributes.unrecognized.push(se); + } + } catch (Pe) { + throw console.error("parsing media attribute ".concat(se.attField, ' error, "a=').concat(se.attField, ":").concat(se.attValue, '"')), Pe; + } + if (!se.ignored && se.attValue && !this.atEnd(se)) + throw new Error("attribute parsing error"); + } + parseCandidate(se) { + const Pe = this.extractOneOrMore(se, tt, [1, 32]); + this.consumeAttributeSpace(se); + const We = this.extractOneOrMore(se, K, [1, 5]); + this.consumeAttributeSpace(se); + const Ft = this.extract(se, this.consumeToken); + this.consumeAttributeSpace(se); + const pn = this.extractOneOrMore(se, K, [1, 10]); + this.consumeAttributeSpace(se); + const ga = this.extract(se, this.consumeAddress); + this.consumeAttributeSpace(se); + const Js = this.extract(se, this.consumePort); + this.consumeAttributeSpace(se), this.extract(se, this.consume, "typ"), this.consumeAttributeSpace(se); + const bu = { foundation: Pe, componentId: We, transport: Ft, priority: pn, connectionAddress: ga, port: Js, type: this.extract(se, this.consumeToken), extension: {} }; + for (this.peek(se, " raddr") && (this.extract(se, this.consume, " raddr"), this.consumeAttributeSpace(se), bu.relAddr = this.extract(se, this.consumeAddress)), this.peek(se, " rport") && (this.extract(se, this.consume, " rport"), this.consumeAttributeSpace(se), bu.relPort = this.extract(se, this.consumePort)); this.peekChar(se) === V; ) { + this.consumeAttributeSpace(se); + const ym = this.extract(se, this.consumeToken); + this.consumeAttributeSpace(se), bu.extension[ym] = this.extractOneOrMore(se, q); + } + this.attributes.candidates.push(bu); + } + parseRemoteCandidate(se) { + const Pe = []; + for (; ; ) { + const We = this.extractOneOrMore(se, K, [1, 5]); + this.consumeAttributeSpace(se); + const Ft = this.extract(se, this.consumeAddress); + this.consumeAttributeSpace(se); + const pn = this.extract(se, this.consumePort); + Pe.push({ componentId: We, connectionAddress: Ft, port: pn }); + try { + this.consumeAttributeSpace(se); + } catch (ga) { + break; + } + } + this.attributes.remoteCandidatesList.push(Pe); + } + parseEndOfCandidates() { + if (this.attributes.endOfCandidates) + throw new Error("must be only one line of end-of-candidates"); + this.attributes.endOfCandidates = !0; + } + parseRtpmap(se) { + const Pe = this.extract(se, this.consumeToken); + this.consumeAttributeSpace(se); + const We = this.extract(se, this.consumeTill, "/"); + this.extract(se, this.consume, "/"); + const Ft = { encodingName: We, clockRate: this.extractOneOrMore(se, K) }; + this.atEnd(se) || this.peekChar(se) !== "/" || (this.extract(se, this.consume, "/"), Ft.encodingParameters = parseInt(this.extract(se, this.consumeTill), 10)); + const pn = this.attributes.payloads.find((ga) => ga.payloadType === parseInt(Pe, 10)); + pn ? pn.rtpMap = Ft : this.attributes.payloads.push({ payloadType: parseInt(Pe, 10), rtpMap: Ft, rtcpFeedbacks: [] }); + } + parsePtime(se) { + if (this.attributes.ptime) + throw new Error("must be only one line of ptime"); + this.attributes.ptime = this.extract(se, this.consumeTill); + } + parseMaxPtime(se) { + if (this.attributes.maxPtime) + throw new Error("must be only one line of ptime"); + this.attributes.maxPtime = this.extract(se, this.consumeTill); + } + parseDirection(se) { + if (this.attributes.direction) + throw new Error("must be only one line of direction info"); + this.attributes.direction = se.attField; + } + parseSSRC(se) { + const Pe = this.extractOneOrMore(se, K); + this.consumeAttributeSpace(se); + const We = this.extract(se, this.consumeTill, ":"); + let Ft; + this.peekChar(se) === ":" && (this.extract(se, this.consume, ":"), Ft = this.extract(se, this.consumeTill)); + const pn = this.attributes.ssrcs.find((ga) => ga.ssrcId === parseInt(Pe, 10)); + pn ? pn.attributes[We] = Ft : this.attributes.ssrcs.push({ ssrcId: parseInt(Pe, 10), attributes: { [We]: Ft } }); + } + parseFmtp(se) { + const Pe = this.extract(se, this.consumeTill, V); + this.consumeAttributeSpace(se); + const We = this.extract(se, this.consumeTill), Ft = {}; + We.split(";").forEach((ga) => { + let [Js, bu] = ga.split("="); + Js = Js.trim(); + const ym = typeof bu == "string" ? bu.trim() : null; + typeof Js == "string" && Js.length > 0 && (Ft[Js] = ym); + }); + const pn = this.attributes.payloads.find((ga) => ga.payloadType === parseInt(Pe, 10)); + pn ? pn.fmtp = { parameters: Ft } : this.attributes.payloads.push({ payloadType: parseInt(Pe, 10), rtcpFeedbacks: [], fmtp: { parameters: Ft } }); + } + parseFmtParameters(se) { + const Pe = {}, We = this.extract(se, this.consumeTill, "="); + se._cur++; + const Ft = this.extract(se, this.consumeTill, ";"); + for (Pe[We] = Ft; se.attValue[se._cur] === ";"; ) { + const pn = this.extract(se, this.consumeTill, "="); + se._cur++; + const ga = this.extract(se, this.consumeTill, ";"); + Pe[pn] = ga; + } + return Pe; + } + parseRtcpFb(se) { + let Pe = ""; + Pe = this.peekChar(se) === "*" ? this.extract(se, this.consume, "*") : this.extract(se, this.consumeTill, V), this.consumeAttributeSpace(se); + const We = this.extract(se, this.consumeTill, V); + let Ft; + if (We === "trr-int") + Ft = { type: We, interval: this.extract(se, this.consumeTill) }; + else { + const pn = { type: We }; + this.peekChar(se) === V && (this.consumeAttributeSpace(se), pn.parameter = this.extract(se, this.consumeToken), this.peekChar(se) === V && (pn.additional = this.extract(se, this.consumeTill))), Ft = pn; + } + if (Pe === "*") + this.attributes.rtcpFeedbackWildcards.push(Ft); + else { + const pn = this.attributes.payloads.find((ga) => ga.payloadType === parseInt(Pe, 10)); + pn ? pn.rtcpFeedbacks.push(Ft) : this.attributes.payloads.push({ payloadType: parseInt(Pe, 10), rtcpFeedbacks: [Ft] }); + } + } + parseRTCPMux() { + if (this.attributes.rtcpMux) + throw new Error("must be single line of rtcp-mux"); + this.attributes.rtcpMux = !0; + } + parseRTCPMuxOnly() { + if (this.attributes.rtcpMuxOnly) + throw new Error("must be single line of rtcp-only"); + this.attributes.rtcpMuxOnly = !0; + } + parseRTCPRsize() { + if (this.attributes.rtcpRsize) + throw new Error("must be single line of rtcp-rsize"); + this.attributes.rtcpRsize = !0; + } + parseRTCP(se) { + if (this.attributes.rtcp) + throw new Error("must be single line of rtcp"); + const Pe = { port: this.extract(se, this.consumePort) }; + this.peekChar(se) === V && (this.consumeAttributeSpace(se), Pe.netType = this.extractOneOrMore(se, oe), this.consumeAttributeSpace(se), Pe.addressType = this.extractOneOrMore(se, oe), this.consumeAttributeSpace(se), Pe.address = this.extract(se, this.consumeAddress)), this.attributes.rtcp = Pe; + } + parseMsid(se) { + const Pe = { id: this.extractOneOrMore(se, oe, [1, 64]) }; + this.peekChar(se) === V && (this.consumeAttributeSpace(se), Pe.appdata = this.extractOneOrMore(se, oe, [1, 64])), this.attributes.msids.push(Pe); + } + parseImageAttr(se) { + this.attributes.imageattr.push(se.attValue); + } + parseRid(se) { + const Pe = this.extractOneOrMore(se, (Ft) => Ce(Ft) || K(Ft) || Ft === "_" || Ft === "-"); + this.consumeAttributeSpace(se); + const We = { id: Pe, direction: this.extract(se, this.consumeToken), params: [] }; + if (this.peekChar(se) === V) { + if (this.consumeAttributeSpace(se), this.peek(se, "pt=")) { + this.extract(se, this.consume, "pt="); + const Ft = []; + for (; ; ) { + const pn = this.extract(se, this.consumeToken); + Ft.push(pn); + try { + this.extract(se, this.consume, ","); + } catch (ga) { + break; + } + } + We.payloads = Ft, this.peekChar(se) === V && this.extract(se, this.consume, V); + } + for (; ; ) { + const Ft = this.extract(se, this.consumeToken); + switch (Ft) { + case "depend": { + const pn = { type: Ft, rids: this.extract(se, this.consume, "=").split(",") }; + We.params.push(pn); + break; + } + default: { + const pn = { type: Ft }; + this.peekChar(se) === "=" && (this.extract(se, this.consume, "="), pn.val = this.extract(se, this.consumeTill, ";")), We.params.push(pn); + } + } + try { + this.extract(se, this.consume, ";"); + } catch (pn) { + break; + } + } + } + this.attributes.rids.push(We); + } + parseSimulcast(se) { + if (this.attributes.simulcast) + throw new Error("must be single line of simulcast"); + this.attributes.simulcast = se.attValue, this.extract(se, this.consumeTill); + } + parseSctpPort(se) { + this.attributes.sctpPort = this.extractOneOrMore(se, K, [1, 5]); + } + parseMaxMessageSize(se) { + this.attributes.maxMessageSize = this.extractOneOrMore(se, K, [1, void 0]); + } + digest() { + return this.digested = !0, this.attributes; + } + parseMid(se) { + this.attributes.mid = this.extract(se, this.consumeToken); + } + parseSSRCGroup(se) { + const Pe = this.extract(se, this.consumeToken), We = []; + for (; ; ) + try { + this.consumeAttributeSpace(se); + const Ft = this.extract(se, this.consumeInteger); + We.push(parseInt(Ft, 10)); + } catch (Ft) { + break; + } + this.attributes.ssrcGroups.push({ semantic: Pe, ssrcIds: We }); + } + } + function Sa(Qt, se, Pe) { + return se in Qt ? Object.defineProperty(Qt, se, { value: Pe, enumerable: !0, configurable: !0, writable: !0 }) : Qt[se] = Pe, Qt; + } + class Su { + constructor() { + Sa(this, "eol", U); + } + print(se, Pe) { + let We = ""; + return Pe && (this.eol = Pe), We += this.printVersion(se.version), We += this.printOrigin(se.origin), We += this.printSessionName(se.sessionName), We += this.printInformation(se.information), We += this.printUri(se.uri), We += this.printEmail(se.emails), We += this.printPhone(se.phones), We += this.printConnection(se.connection), We += this.printBandwidth(se.bandwidths), We += this.printTimeFields(se.timeFields), We += this.printKey(se.key), We += this.printSessionAttributes(se.attributes), We += this.printMediaDescription(se.mediaDescriptions), We; + } + printVersion(se) { + return "v=".concat(se).concat(this.eol); + } + printOrigin(se) { + return "o=".concat(se.username, " ").concat(se.sessId, " ").concat(se.sessVersion, " ").concat(se.nettype, " ").concat(se.addrtype, " ").concat(se.unicastAddress).concat(this.eol); + } + printSessionName(se) { + return se ? "s=".concat(se).concat(this.eol) : ""; + } + printInformation(se) { + return se ? "i=".concat(se).concat(this.eol) : ""; + } + printUri(se) { + return se ? "u=".concat(se).concat(this.eol) : ""; + } + printEmail(se) { + let Pe = ""; + for (const We of se) + Pe += "e=".concat(We).concat(this.eol); + return Pe; + } + printPhone(se) { + let Pe = ""; + for (const We of se) + Pe += "e=".concat(We).concat(this.eol); + return Pe; + } + printConnection(se) { + return se ? "c=".concat(se.nettype, " ").concat(se.addrtype, " ").concat(se.address).concat(this.eol) : ""; + } + printBandwidth(se) { + let Pe = ""; + for (const We of se) + Pe += "b=".concat(We.bwtype, ":").concat(We.bandwidth).concat(this.eol); + return Pe; + } + printTimeFields(se) { + let Pe = ""; + for (const We of se) { + Pe += "t=".concat(We.time.startTime, " ").concat(We.time.startTime).concat(this.eol); + for (const Ft of We.repeats) + Pe += "r=".concat(Ft.repeatInterval, " ").concat(Ft.typedTimes.join(" ")).concat(this.eol); + We.zoneAdjustments && (Pe += "z=", Pe += "z=".concat(We.zoneAdjustments.map((Ft) => "".concat(Ft.time, " ").concat(Ft.back ? "-" : "", " ").concat(Ft.typedTime)).join(" ")).concat(this.eol), Pe += this.eol); + } + return Pe; + } + printKey(se) { + return se ? "k=".concat(se).concat(this.eol) : ""; + } + printAttributes(se) { + let Pe = ""; + for (const We of se) + Pe += "a=".concat(We.attField).concat(We.attValue ? ":".concat(We.attValue) : "").concat(this.eol); + return Pe; + } + printMediaDescription(se) { + let Pe = ""; + for (const We of se) + Pe += this.printMedia(We.media), Pe += this.printInformation(We.information), Pe += this.printConnections(We.connections), Pe += this.printBandwidth(We.bandwidths), Pe += this.printKey(We.key), Pe += this.printMediaAttributes(We); + return Pe; + } + printConnections(se) { + let Pe = ""; + for (const We of se) + Pe += this.printConnection(We); + return Pe; + } + printMedia(se) { + return "m=".concat(se.mediaType, " ").concat(se.port, " ").concat(se.protos.join("/"), " ").concat(se.fmts.join(" ")).concat(this.eol); + } + printSessionAttributes(se) { + return new zt(this.eol).print(se); + } + printMediaAttributes(se) { + return new gr(this.eol).print(se); + } + } + class xt { + constructor(se) { + Sa(this, "eol", void 0), this.eol = se; + } + printIceUfrag(se) { + return se === void 0 ? "" : "a=ice-ufrag:".concat(se).concat(this.eol); + } + printIcePwd(se) { + return se === void 0 ? "" : "a=ice-pwd:".concat(se).concat(this.eol); + } + printIceOptions(se) { + return se === void 0 ? "" : "a=ice-options:".concat(se.join(V)).concat(this.eol); + } + printFingerprints(se) { + return se.length > 0 ? se.map((Pe) => "a=fingerprint:".concat(Pe.hashFunction).concat(V).concat(Pe.fingerprint)).join(this.eol) + this.eol : ""; + } + printExtmap(se) { + return se.map((Pe) => "a=extmap:".concat(Pe.entry).concat(Pe.direction ? "/".concat(Pe.direction) : "").concat(V).concat(Pe.extensionName).concat(Pe.extensionAttributes ? "".concat(V).concat(Pe.extensionAttributes) : "").concat(this.eol)).join(""); + } + printSetup(se) { + return se === void 0 ? "" : "a=setup:".concat(se).concat(this.eol); + } + printUnrecognized(se) { + return se.map((Pe) => "a=".concat(Pe.attField).concat(Pe.attValue ? ":".concat(Pe.attValue) : "").concat(this.eol)).join(""); + } + } + class zt extends xt { + print(se) { + let Pe = ""; + return Pe += this.printGroups(se.groups), Pe += this.printMsidSemantic(se.msidSemantic), Pe += this.printIceLite(se.iceLite), Pe += this.printIceUfrag(se.iceUfrag), Pe += this.printIcePwd(se.icePwd), Pe += this.printIceOptions(se.iceOptions), Pe += this.printFingerprints(se.fingerprints), Pe += this.printSetup(se.setup), Pe += this.printTlsId(se.tlsId), Pe += this.printIdentity(se.identities), Pe += this.printExtmap(se.extmaps), Pe += this.printUnrecognized(se.unrecognized), Pe; + } + printGroups(se) { + let Pe = ""; + return se.length > 0 && (Pe += se.map((We) => "a=group:".concat(We.semantic).concat(We.identificationTag.map((Ft) => "".concat(V).concat(Ft)).join("")).concat(this.eol)).join("")), Pe; + } + printIceLite(se) { + return se === void 0 ? "" : "a=ice-lite" + this.eol; + } + printTlsId(se) { + return se ? "a=tls-id:".concat(se).concat(this.eol) : ""; + } + printIdentity(se) { + return se.length === 0 ? "" : se.map((Pe) => "a=identity:".concat(Pe.assertionValue).concat(Pe.extensions.map((We) => "".concat(V).concat(We.name).concat(We.value ? "=".concat(We.value) : "")))).join(this.eol) + this.eol; + } + printMsidSemantic(se) { + if (!se) + return ""; + let Pe = "a=msid-semantic:".concat(se.semantic); + return se.applyForAll ? Pe += "".concat(V, "*") : se.identifierList.length > 0 && (Pe += se.identifierList.map((We) => "".concat(V).concat(We))), Pe + this.eol; + } + } + class gr extends xt { + print(se) { + const Pe = se.attributes; + let We = ""; + return We += this.printRTCP(Pe.rtcp), We += this.printIceUfrag(Pe.iceUfrag), We += this.printIcePwd(Pe.icePwd), We += this.printIceOptions(Pe.iceOptions), We += this.printCandidates(Pe.candidates), We += this.printRemoteCandidatesList(Pe.remoteCandidatesList), We += this.printEndOfCandidates(Pe.endOfCandidates), We += this.printFingerprints(Pe.fingerprints), We += this.printSetup(Pe.setup), We += this.printMid(Pe.mid), We += this.printExtmap(Pe.extmaps), We += this.printRTPRelated(Pe), We += this.printPtime(Pe.ptime), We += this.printMaxPtime(Pe.maxPtime), We += this.printDirection(Pe.direction), We += this.printSSRCGroups(Pe.ssrcGroups), We += this.printSSRC(Pe.ssrcs), We += this.printRTCPMux(Pe.rtcpMux), We += this.printRTCPMuxOnly(Pe.rtcpMuxOnly), We += this.printRTCPRsize(Pe.rtcpRsize), We += this.printMSId(Pe.msids), We += this.printImageattr(Pe.imageattr), We += this.printRid(Pe.rids), We += this.printSimulcast(Pe.simulcast), We += this.printSCTPPort(Pe.sctpPort), We += this.printMaxMessageSize(Pe.maxMessageSize), We += this.printUnrecognized(Pe.unrecognized), We; + } + printCandidates(se) { + return se.map((Pe) => "a=candidate:".concat(Pe.foundation).concat(V).concat(Pe.componentId).concat(V).concat(Pe.transport).concat(V).concat(Pe.priority).concat(V).concat(Pe.connectionAddress).concat(V).concat(Pe.port).concat(V, "typ").concat(V).concat(Pe.type).concat(Pe.relAddr ? "".concat(V, "raddr").concat(V).concat(Pe.relAddr) : "").concat(Pe.relPort ? "".concat(V, "rport").concat(V).concat(Pe.relPort) : "").concat(Object.keys(Pe.extension).map((We) => "".concat(V).concat(We).concat(V).concat(Pe.extension[We])).join("")).concat(this.eol)).join(""); + } + printRemoteCandidatesList(se) { + return se.map((Pe) => "a=remote-candidates:".concat(Pe.join(V)).concat(this.eol)).join(""); + } + printEndOfCandidates(se) { + return se === void 0 ? "" : "a=end-of-candidates" + this.eol; + } + printRTPRelated(se) { + if (!se.payloads) + return ""; + const Pe = se.payloads; + let We = ""; + We += se.rtcpFeedbackWildcards.map((Ft) => this.printRTCPFeedback("*", Ft)).join(""); + for (const Ft of Pe) + We += this.printRtpMap(Ft.payloadType, Ft.rtpMap), We += this.printFmtp(Ft.payloadType, Ft.fmtp), We += Ft.rtcpFeedbacks.map((pn) => this.printRTCPFeedback(Ft.payloadType, pn)).join(""); + return We; + } + printFmtp(se, Pe) { + if (!Pe) + return ""; + const We = Object.keys(Pe.parameters); + return We.length === 1 && Pe.parameters[We[0]] === null ? "a=fmtp:".concat(se).concat(V).concat(We[0]).concat(this.eol) : "a=fmtp:".concat(se).concat(V).concat(Object.keys(Pe.parameters).map((Ft) => "".concat(Ft, "=").concat(Pe.parameters[Ft])).join(";")).concat(this.eol); + } + printRtpMap(se, Pe) { + return Pe ? "a=rtpmap:".concat(se).concat(V).concat(Pe.encodingName, "/").concat(Pe.clockRate).concat(Pe.encodingParameters ? "/".concat(Pe.encodingParameters) : "").concat(this.eol) : ""; + } + printRTCPFeedback(se, Pe) { + let We = "a=rtcp-fb:".concat(se).concat(V), Ft = Pe; + return Ft.type === "trr-int" ? We += "ttr-int".concat(V).concat(Ft.interval) : (We += "".concat(Ft.type), Ft.parameter && (We += "".concat(V).concat(Ft.parameter), Ft.additional && (We += "".concat(V).concat(Ft.additional)))), We + this.eol; + } + printPtime(se) { + return se === void 0 ? "" : "a=ptime:".concat(se).concat(this.eol); + } + printMaxPtime(se) { + return se === void 0 ? "" : "a=maxptime:".concat(se).concat(this.eol); + } + printDirection(se) { + return se === void 0 ? "" : "a=".concat(se).concat(this.eol); + } + printSSRC(se) { + return se.map((Pe) => Object.keys(Pe.attributes).map((We) => "a=ssrc:".concat(Pe.ssrcId.toString(10)).concat(V).concat(We).concat(Pe.attributes[We] ? ":".concat(Pe.attributes[We]) : "").concat(this.eol)).join("")).join(""); + } + printRTCPMux(se) { + return se === void 0 ? "" : "a=rtcp-mux".concat(this.eol); + } + printRTCPMuxOnly(se) { + return se === void 0 ? "" : "a=rtcp-mux-only".concat(this.eol); + } + printRTCPRsize(se) { + return se === void 0 ? "" : "a=rtcp-rsize".concat(this.eol); + } + printRTCP(se) { + if (se === void 0) + return ""; + let Pe = "a=rtcp:".concat(se.port); + return se.netType && (Pe += "".concat(V).concat(se.netType)), se.addressType && (Pe += "".concat(V).concat(se.addressType)), se.address && (Pe += "".concat(V).concat(se.address)), Pe + this.eol; + } + printMSId(se) { + return se.map((Pe) => "a=msid:".concat(Pe.id).concat(Pe.appdata ? "".concat(V).concat(Pe.appdata) : "").concat(this.eol)).join(""); + } + printImageattr(se) { + return se.map((Pe) => "a=imageattr:".concat(Pe).concat(this.eol)).join(""); + } + printRid(se) { + return se.map((Pe) => { + let We = "a=rid:".concat(Pe.id).concat(V).concat(Pe.direction); + return Pe.payloads && (We += "".concat(V, "pt=").concat(Pe.payloads.join(","))), Pe.params.length > 0 && (We += "".concat(V).concat(Pe.params.map((Ft) => Ft.type === "depend" ? "depend=".concat(Ft.rids.join(",")) : "".concat(Ft.type, "=").concat(Ft.val)).join(";"))), We + this.eol; + }).join(""); + } + printSimulcast(se) { + return se === void 0 ? "" : "a=simulcast:".concat(se).concat(this.eol); + } + printSCTPPort(se) { + return se === void 0 ? "" : "a=sctp-port:".concat(se).concat(this.eol); + } + printMaxMessageSize(se) { + return se === void 0 ? "" : "a=max-message-size:".concat(se).concat(this.eol); + } + printMid(se) { + return se === void 0 ? "" : "a=mid:".concat(se).concat(this.eol); + } + printSSRCGroups(se) { + return se.map((Pe) => "a=ssrc-group:".concat(Pe.semantic).concat(Pe.ssrcIds.map((We) => "".concat(V).concat(We.toString(10))).join("")).concat(this.eol)).join(""); + } + } + function qr(Qt) { + return new fn().parse(Qt); + } + function Si(Qt, se) { + return new Su().print(Qt, se); + } + } }, p = {}; + function m(T) { + if (p[T]) + return p[T].exports; + var D = p[T] = { exports: {} }; + return c[T](D, D.exports, m), D.exports; + } + return m.d = (T, D) => { + for (var k in D) + m.o(D, k) && !m.o(T, k) && Object.defineProperty(T, k, { enumerable: !0, get: D[k] }); + }, m.o = (T, D) => Object.prototype.hasOwnProperty.call(T, D), m.r = (T) => { + typeof Symbol != "undefined" && Symbol.toStringTag && Object.defineProperty(T, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(T, "__esModule", { value: !0 }); + }, m(8); + })(); + })(ute); + var Da = ute.exports; + function Kd(h) { + if (Array.isArray(h)) + return h.map((c) => c); + if (!hte(h)) + return h; + const s = {}; + for (const c in h) { + const p = h[c]; + hte(p) || Array.isArray(p) ? s[c] = Kd(p) : s[c] = p; + } + return s; + } + function hte(h) { + return !(typeof h != "object" || Array.isArray(h) || !h); + } + class B$ { + constructor(s) { + Z(this, "input", []), Z(this, "size", void 0), this.size = s; + } + add(s) { + this.input.push(s), this.input.length > this.size && this.input.splice(0, 1); + } + diffMean() { + return this.input.length === 0 ? 0 : (this.input[this.input.length - 1] - this.input[0]) / this.input.length; + } + } + const Dg = { address: "unknown", candidateType: "unknown", id: "unknown", port: 0, priority: 0, protocol: "unknown", type: "unknown" }, uA = { timestamp: 0, bitrate: { actualEncoded: 0, transmit: 0 }, sendPacketLossRate: 0, recvPacketLossRate: 0, videoRecv: [], videoSend: [], audioRecv: [], audioSend: [], selectedCandidatePair: { id: "unknown", localCandidate: Dg, remoteCandidate: Dg } }, dte = { firsCount: 0, nacksCount: 0, plisCount: 0, framesDecodeCount: 0, framesDecodeInterval: 0, framesDecodeFreezeTime: 0, decodeFrameRate: 0, bytes: 0, packetsLost: 0, packetLostRate: 0, packets: 0, ssrc: 0, qpSumPerFrame: 0 }, fte = { firsCount: 0, nacksCount: 0, plisCount: 0, frameCount: 0, bytes: 0, packets: 0, packetsLost: 0, packetLostRate: 0, ssrc: 0, rttMs: 0, jitterMs: 0, qpSumPerFrame: 0 }, pte = { bytes: 0, packets: 0, packetsLost: 0, packetLostRate: 0, ssrc: 0, rttMs: 0, jitterMs: 0 }, gte = { jitterBufferMs: 0, jitterMs: 0, bytes: 0, packetsLost: 0, packetLostRate: 0, packets: 0, ssrc: 0, receivedFrames: 0, droppedFrames: 0, concealedSamples: 0 }; + function vte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function mte(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? vte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : vte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class U$ { + constructor(s, c) { + Z(this, "onFirstVideoReceived", void 0), Z(this, "onFirstVideoDecoded", void 0), Z(this, "onFirstAudioReceived", void 0), Z(this, "onFirstVideoDecodedTimeout", void 0), Z(this, "onFirstAudioDecoded", void 0), Z(this, "onSelectedLocalCandidateChanged", void 0), Z(this, "onSelectedRemoteCandidateChanged", void 0), Z(this, "videoIsReady", !1), Z(this, "videoIsReady2", {}), Z(this, "pc", void 0), Z(this, "options", void 0), Z(this, "intervalTimer", void 0), Z(this, "stats", Kd(uA)), Z(this, "isFirstVideoReceived", {}), Z(this, "isFirstVideoDecoded", {}), Z(this, "isFirstAudioReceived", {}), Z(this, "isFirstAudioDecoded", {}), Z(this, "isFirstVideoDecodedTimeout", {}), Z(this, "lossRateWindowStats", []), this.pc = s, this.options = c, this.intervalTimer = window.setInterval(() => ye(this, null, function* () { + this.updateStats(); + }), this.options.updateInterval); + } + getStats() { + return this.stats; + } + getSelectedCandidatePair() { + return new ot((s) => { + s({ local: mte({}, Dg), remote: mte({}, Dg) }); + }); + } + setVideoIsReady(s) { + this.videoIsReady = s; + } + setVideoIsReady2(s, c) { + this.videoIsReady2[s] = c; + } + getVideoIsReady(s) { + return this.videoIsReady2[s] || !1; + } + setIsFirstAudioDecoded(s) { + } + destroy() { + window.clearInterval(this.intervalTimer), this.pc = void 0; + } + calcLossRate(s) { + this.lossRateWindowStats.push(s), this.lossRateWindowStats.length > this.options.lossRateInterval && this.lossRateWindowStats.splice(0, 1); + const c = this.lossRateWindowStats.length, p = ["videoSend", "audioSend", "videoRecv", "audioRecv"]; + let m = 0, T = 0, D = 0, k = 0; + for (const N of p) + s[N].forEach((U, V) => { + if (!this.lossRateWindowStats[c - 1][N][V] || !this.lossRateWindowStats[0][N][V]) + return; + const G = this.lossRateWindowStats[c - 1][N][V].packets - this.lossRateWindowStats[0][N][V].packets, K = this.lossRateWindowStats[c - 1][N][V].packetsLost - this.lossRateWindowStats[0][N][V].packetsLost; + N === "videoSend" || N === "audioSend" ? (m += G, D += K) : (T += G, k += K), Number.isNaN(G) || Number.isNaN(G) ? U.packetLostRate = 0 : U.packetLostRate = G <= 0 || K <= 0 ? 0 : K / (G + K); + }); + s.sendPacketLossRate = m <= 0 || D <= 0 ? 0 : D / (m + D), s.recvPacketLossRate = T <= 0 || k <= 0 ? 0 : k / (T + k); + } + } + function yte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function AFe(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? yte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : yte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class RFe extends U$ { + constructor() { + super(...arguments), Z(this, "_stats", uA), Z(this, "lastDecodeVideoReceiverStats", /* @__PURE__ */ new Map()); + } + updateStats() { + return ye(this, null, function* () { + const s = yield this._getStats(), c = this.statsResponsesToObjects(s); + this._stats = Kd(uA); + const p = c.filter((T) => T.type === "ssrc"); + this.processSSRCStats(p); + const m = c.find((T) => T.type === "VideoBwe"); + m && this.processBandwidthStats(m), this._stats.timestamp = Date.now(), this.calcLossRate(this._stats), this.stats = this._stats; + }); + } + processBandwidthStats(s) { + this._stats.bitrate = { actualEncoded: Number(s.googActualEncBitrate), targetEncoded: Number(s.googTargetEncBitrate), retransmit: Number(s.googRetransmitBitrate), transmit: Number(s.googTransmitBitrate) }, this._stats.sendBandwidth = Number(s.googAvailableSendBandwidth); + } + processSSRCStats(s) { + s.forEach((c) => { + var p; + const m = rr(p = c.id).call(p, "send"); + switch ("".concat(c.mediaType, "_").concat(m ? "send" : "recv")) { + case "video_send": { + const T = Kd(fte); + T.codec = c.googCodecName, T.adaptionChangeReason = "none", c.googCpuLimitedResolution && (T.adaptionChangeReason = "cpu"), c.googBandwidthLimitedResolution && (T.adaptionChangeReason = "bandwidth"), T.avgEncodeMs = Number(c.googAvgEncodeMs), T.inputFrame = { width: Number(c.googFrameWidthInput) || Number(c.googFrameWidthSent), height: Number(c.googFrameHeightInput) || Number(c.googFrameHeightSent), frameRate: Number(c.googFrameRateInput) }, T.sentFrame = { width: Number(c.googFrameWidthSent), height: Number(c.googFrameHeightSent), frameRate: Number(c.googFrameRateInput) }, T.firsCount = Number(c.googFirReceived), T.nacksCount = Number(c.googNacksReceived), T.plisCount = Number(c.googPlisReceived), T.frameCount = Number(c.framesEncoded), T.bytes = Number(c.bytesSent), T.packets = Number(c.packetsSent), T.packetsLost = Number(c.packetsLost), T.ssrc = Number(c.ssrc), T.rttMs = Number(c.googRtt || 0), this._stats.videoSend.push(T), this._stats.rtt = T.rttMs; + break; + } + case "video_recv": { + const T = Kd(dte), D = this.lastDecodeVideoReceiverStats.get(Number(c.ssrc)); + if (T.codec = c.googCodecName, T.targetDelayMs = Number(c.googTargetDelayMs), T.renderDelayMs = Number(c.googRenderDelayMs), T.currentDelayMs = Number(c.googCurrentDelayMs), T.minPlayoutDelayMs = Number(c.googMinPlayoutDelayMs), T.decodeMs = Number(c.googDecodeMs), T.maxDecodeMs = Number(c.googMaxDecodeMs), T.receivedFrame = { width: Number(c.googFrameWidthReceived), height: Number(c.googFrameHeightReceived), frameRate: Number(c.googFrameRateReceived) }, T.decodedFrame = { width: Number(c.googFrameWidthReceived), height: Number(c.googFrameHeightReceived), frameRate: Number(c.googFrameRateDecoded) }, T.decodeFrameRate = Number(c.googFrameRateDecoded), T.outputFrame = { width: Number(c.googFrameWidthReceived), height: Number(c.googFrameHeightReceived), frameRate: Number(c.googFrameRateOutput) }, T.jitterBufferMs = Number(c.googJitterBufferMs), T.firsCount = Number(c.googFirsSent), T.nacksCount = Number(c.googNacksSent), T.plisCount = Number(c.googPlisSent), T.framesDecodeCount = Number(c.framesDecoded), T.bytes = Number(c.bytesReceived), T.packets = Number(c.packetsReceived), T.packetsLost = Number(c.packetsLost), T.ssrc = Number(c.ssrc), T.packets > 0 && !this.isFirstVideoReceived[T.ssrc] && (this.onFirstVideoReceived && this.onFirstVideoReceived(T.ssrc), this.isFirstVideoReceived[T.ssrc] = !0), T.framesDecodeCount > 0 && !this.isFirstVideoDecoded[T.ssrc] && (this.onFirstVideoDecoded && this.onFirstVideoDecoded(T.ssrc, T.decodedFrame.width, T.decodedFrame.height), this.isFirstVideoDecoded[T.ssrc] = !0), D) { + const k = D.stats, N = Date.now() - D.lts; + T.framesDecodeFreezeTime = k.framesDecodeFreezeTime, T.framesDecodeInterval = k.framesDecodeInterval, T.framesDecodeCount > k.framesDecodeCount && this.isFirstVideoDecoded[T.ssrc] ? (D.lts = Date.now(), T.framesDecodeInterval = N, T.framesDecodeInterval >= this.options.freezeRateLimit && (this.getVideoIsReady(parseInt(c.ssrc, 10)) ? T.framesDecodeFreezeTime += T.framesDecodeInterval : this.setVideoIsReady2(parseInt(c.ssrc, 10), !0))) : T.framesDecodeCount < D.stats.framesDecodeCount && (T.framesDecodeInterval = 0); + } + this.lastDecodeVideoReceiverStats.set(T.ssrc, { stats: AFe({}, T), lts: Date.now() }), this._stats.videoRecv.push(T); + break; + } + case "audio_recv": { + const T = Kd(gte); + T.codec = c.googCodecName, T.outputLevel = Math.abs(Number(c.audioOutputLevel)) / 32767, T.decodingCNG = Number(c.googDecodingCNG), T.decodingCTN = Number(c.googDecodingCTN), T.decodingCTSG = Number(c.googDecodingCTSG), T.decodingNormal = Number(c.googDecodingNormal), T.decodingPLC = Number(c.googDecodingPLC), T.decodingPLCCNG = Number(c.googDecodingPLCCNG), T.expandRate = Number(c.googExpandRate), T.accelerateRate = Number(c.googAccelerateRate), T.preemptiveExpandRate = Number(c.googPreemptiveExpandRate), T.secondaryDecodedRate = Number(c.googSecondaryDecodedRate), T.speechExpandRate = Number(c.googSpeechExpandRate), T.preferredJitterBufferMs = Number(c.googPreferredJitterBufferMs), T.jitterBufferMs = Number(c.googJitterBufferMs), T.jitterMs = Number(c.googJitterReceived), T.bytes = Number(c.bytesReceived), T.packets = Number(c.packetsReceived), T.packetsLost = Number(c.packetsLost), T.ssrc = Number(c.ssrc), T.receivedFrames = Number(c.googDecodingCTN) || Number(c.packetsReceived), T.droppedFrames = Number(c.googDecodingPLC) + Number(c.googDecodingPLCCNG) || Number(c.packetsLost), T.receivedFrames > 0 && !this.isFirstAudioReceived[T.ssrc] && (this.onFirstAudioReceived && this.onFirstAudioReceived(T.ssrc), this.isFirstAudioReceived[T.ssrc] = !0), T.decodingNormal > 0 && !this.isFirstAudioDecoded[T.ssrc] && (this.onFirstAudioDecoded && this.onFirstAudioDecoded(T.ssrc), this.isFirstAudioDecoded[T.ssrc] = !0), this._stats.audioRecv.push(T); + break; + } + case "audio_send": { + const T = Kd(pte); + T.codec = c.googCodecName, T.inputLevel = Math.abs(Number(c.audioInputLevel)) / 32767, T.aecReturnLoss = Number(c.googEchoCancellationReturnLoss || 0), T.aecReturnLossEnhancement = Number(c.googEchoCancellationReturnLossEnhancement || 0), T.residualEchoLikelihood = Number(c.googResidualEchoLikelihood || 0), T.residualEchoLikelihoodRecentMax = Number(c.googResidualEchoLikelihoodRecentMax || 0), T.bytes = Number(c.bytesSent), T.packets = Number(c.packetsSent), T.packetsLost = Number(c.packetsLost), T.ssrc = Number(c.ssrc), T.rttMs = Number(c.googRtt || 0), this._stats.rtt = T.rttMs, this._stats.audioSend.push(T); + break; + } + } + }); + } + _getStats() { + return new ot((s, c) => { + this.pc.getStats(s, c); + }); + } + statsResponsesToObjects(s) { + const c = []; + return s.result().forEach((p) => { + const m = { id: p.id, timestamp: p.timestamp.valueOf().toString(), type: p.type }; + p.names().forEach((T) => { + m[T] = p.stat(T); + }), c.push(m); + }), c; + } + } + function _te(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function US(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? _te(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : _te(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class Ste extends U$ { + constructor() { + super(...arguments), Z(this, "_stats", uA), Z(this, "report", void 0), Z(this, "lastDecodeVideoReceiverStats", /* @__PURE__ */ new Map()), Z(this, "lastVideoFramesRecv", /* @__PURE__ */ new Map()), Z(this, "lastVideoFramesSent", /* @__PURE__ */ new Map()), Z(this, "lastVideoFramesDecode", /* @__PURE__ */ new Map()), Z(this, "lastVideoJBDelay", /* @__PURE__ */ new Map()), Z(this, "lastAudioJBDelay", /* @__PURE__ */ new Map()), Z(this, "mediaBytesSent", /* @__PURE__ */ new Map()), Z(this, "mediaBytesRetransmit", /* @__PURE__ */ new Map()), Z(this, "mediaBytesTargetEncode", /* @__PURE__ */ new Map()), Z(this, "lastEncoderMs", /* @__PURE__ */ new Map()); + } + updateStats() { + return ye(this, null, function* () { + this.report = yield this.pc.getStats(), this._stats = Kd(uA), this.report.forEach((s) => { + switch (s.type) { + case Nc.OUTBOUND: + case Nc.INBOUND: { + const c = s.mediaType || s.kind, p = !c && "frameWidth" in s, m = !c && !("frameWidth" in s); + s.type === Nc.OUTBOUND ? c === "audio" || m ? this.processAudioOutboundStats(s) : (c === "video" || p) && this.processVideoOutboundStats(s) : s.type === Nc.INBOUND && (c === "audio" || m ? this.processAudioInboundStats(s) : (c === "video" || p) && this.processVideoInboundStats(s)); + break; + } + case Nc.TRANSPORT: { + const c = this.report.get(s.selectedCandidatePairId); + c && this.processCandidatePairStats(c); + break; + } + case Nc.CANDIDATE_PAIR: + s.selected && this.processCandidatePairStats(s); + } + }), this.updateSendBitrate(), this._stats.timestamp = Date.now(), this.calcLossRate(this._stats), this.stats = this._stats; + }); + } + getSelectedCandidatePair() { + return ye(this, null, function* () { + const s = yield this.pc.getStats(), c = { local: US({}, Dg), remote: US({}, Dg) }; + return s.forEach((p) => { + let m; + if (p.type === Nc.TRANSPORT && (m = s.get(p.selectedCandidatePairId)), p.type === Nc.CANDIDATE_PAIR && p.selected && (m = p), m) { + const T = (D, k) => { + D.type = k.type, D.id = k.id, k.address && (D.address = k.address), k.candidateType && (D.candidateType = k.candidateType), k.port && (D.port = k.port), k.priority && (D.priority = k.priority), k.protocol && (D.protocol = k.protocol), k.relayProtocol && (D.relayProtocol = k.relayProtocol); + }; + if (m.localCandidateId) { + const D = s.get(m.localCandidateId); + D && T(c.local, D); + } + if (m.remoteCandidateId) { + const D = s.get(m.remoteCandidateId); + D && T(c.remote, D); + } + } + }), c; + }); + } + processCandidatePairStats(s) { + if (this._stats.sendBandwidth = s.availableOutgoingBitrate || 0, s.currentRoundTripTime && (this._stats.rtt = 1e3 * s.currentRoundTripTime), this._stats.videoSend.forEach((c) => { + s.currentRoundTripTime && (c.rttMs = 1e3 * s.currentRoundTripTime); + }), this._stats.audioSend.forEach((c) => { + s.currentRoundTripTime && (c.rttMs = 1e3 * s.currentRoundTripTime); + }), this._stats.selectedCandidatePair.id = s.id, s.localCandidateId) { + const c = this.report.get(s.localCandidateId); + c && this.processCandidateStats(c); + } + if (s.remoteCandidateId) { + const c = this.report.get(s.remoteCandidateId); + c && this.processCandidateStats(c); + } + } + processCandidateStats(s) { + let c; + s.type === Nc.LOCAL_CANDIDATE && (c = this._stats.selectedCandidatePair.localCandidate), s.type === Nc.REMOTE_CANDIDATE && (c = this._stats.selectedCandidatePair.remoteCandidate), c && (c.type = s.type, c.id = s.id, s.address && (c.address = s.address), s.candidateType && (c.candidateType = s.candidateType), s.port && (c.port = s.port), s.priority && (c.priority = s.priority), s.protocol && (c.protocol = s.protocol), s.relayProtocol && (c.relayProtocol = s.relayProtocol), s.type === Nc.LOCAL_CANDIDATE && this.stats.selectedCandidatePair.localCandidate.id !== c.id && this.onSelectedLocalCandidateChanged && this.onSelectedLocalCandidateChanged(US({}, c), US({}, this.stats.selectedCandidatePair.localCandidate)), s.type === Nc.REMOTE_CANDIDATE && this.stats.selectedCandidatePair.remoteCandidate.id !== c.id && this.onSelectedRemoteCandidateChanged && this.onSelectedRemoteCandidateChanged(US({}, c), US({}, this.stats.selectedCandidatePair.remoteCandidate))); + } + processAudioInboundStats(s) { + let c = this._stats.audioRecv.find((p) => p.ssrc === s.ssrc); + c || (c = Kd(gte), this._stats.audioRecv.push(c)), c.ssrc = s.ssrc, c.packets = s.packetsReceived, c.packetsLost = s.packetsLost, c.bytes = s.bytesReceived, c.jitterMs = 1e3 * s.jitter, this.processAudioTrackReceiverStats(s, s.trackId, c), s.codecId && (c.codec = this.getCodecFromCodecStats(s.codecId)), c.receivedFrames || (c.receivedFrames = s.packetsReceived), c.droppedFrames || (c.droppedFrames = s.packetsLost), c.receivedFrames > 0 && !this.isFirstAudioReceived[c.ssrc] && (this.onFirstAudioReceived && this.onFirstAudioReceived(c.ssrc), this.isFirstAudioReceived[c.ssrc] = !0), c.outputLevel && c.outputLevel > 0 && !this.isFirstAudioDecoded[c.ssrc] && (this.onFirstAudioDecoded && this.onFirstAudioDecoded(c.ssrc), this.isFirstAudioDecoded[c.ssrc] = !0), typeof s.concealedSamples == "number" && (c.concealedSamples = s.concealedSamples); + } + processVideoInboundStats(s) { + let c = this._stats.videoRecv.find((D) => D.ssrc === s.ssrc); + c || (c = Kd(dte), this._stats.videoRecv.push(c)), c.ssrc = s.ssrc, c.packets = s.packetsReceived, c.packetsLost = s.packetsLost, c.bytes = s.bytesReceived, c.firsCount = s.firCount, c.nacksCount = s.nackCount, c.plisCount = s.pliCount, c.framesDecodeCount = s.framesDecoded, c.totalInterFrameDelay = s.totalInterFrameDelay, c.totalSquaredInterFrameDelay = s.totalSquaredInterFrameDelay; + const p = this.lastDecodeVideoReceiverStats.get(c.ssrc), m = this.lastVideoFramesDecode.get(c.ssrc), T = Date.now(); + if (c.framesDecodeCount > 0 && !this.isFirstVideoDecoded[c.ssrc]) { + const D = c.decodedFrame ? c.decodedFrame.width : 0, k = c.decodedFrame ? c.decodedFrame.height : 0; + this.onFirstVideoDecoded && this.onFirstVideoDecoded(c.ssrc, D, k), this.isFirstVideoDecoded[c.ssrc] = !0; + } + if (p) { + const D = p.stats, k = T - p.lts; + c.framesDecodeFreezeTime = D.framesDecodeFreezeTime, c.framesDecodeInterval = D.framesDecodeInterval, !this.isFirstVideoDecoded[c.ssrc] && k > this.options.firstVideoDecodedTimeout && !this.isFirstVideoDecodedTimeout[c.ssrc] && (this.onFirstVideoDecodedTimeout && this.onFirstVideoDecodedTimeout(c.ssrc), this.isFirstVideoDecodedTimeout[c.ssrc] = !0), c.framesDecodeCount > D.framesDecodeCount && this.isFirstVideoDecoded[c.ssrc] ? (p.lts = Date.now(), c.framesDecodeInterval = k, c.framesDecodeInterval >= this.options.freezeRateLimit && (this.getVideoIsReady(parseInt(s.ssrc)) ? c.framesDecodeFreezeTime += c.framesDecodeInterval : this.setVideoIsReady2(parseInt(s.ssrc, 10), !0))) : c.framesDecodeCount < D.framesDecodeCount && (c.framesDecodeInterval = 0), s.framesDecoded && s.qpSum && (p.stats.framesDecodeCount > s.framesDecoded ? c.qpSumPerFrame = s.qpSum / s.framesDecoded : c.qpSumPerFrame = (s.qpSum - p.qpSum) / (s.framesDecoded - p.stats.framesDecodeCount)); + } + m && T - m.lts >= 800 ? (c.decodeFrameRate = Math.round((c.framesDecodeCount - m.count) / ((T - m.lts) / 1e3)), this.lastVideoFramesDecode.set(c.ssrc, { count: c.framesDecodeCount, lts: T, rate: c.decodeFrameRate })) : m ? c.decodeFrameRate = m.rate : this.lastVideoFramesDecode.set(c.ssrc, { count: c.framesDecodeCount, lts: T, rate: 0 }), s.totalDecodeTime && (c.decodeMs = 1e3 * s.totalDecodeTime), this.processVideoTrackReceiverStats(s, s.trackId, c), s.codecId && (c.codec = this.getCodecFromCodecStats(s.codecId)), s.framerateMean && (c.framesRateFirefox = s.framerateMean), c.packets > 0 && !this.isFirstVideoReceived[c.ssrc] && (this.onFirstVideoReceived && this.onFirstVideoReceived(c.ssrc), this.isFirstVideoReceived[c.ssrc] = !0), this.lastDecodeVideoReceiverStats.set(c.ssrc, { stats: US({}, c), lts: p ? p.lts : Date.now(), qpSum: s.qpSum }); + } + processVideoOutboundStats(s) { + let c = this._stats.videoSend.find((m) => m.ssrc === s.ssrc); + c || (c = Kd(fte), this._stats.videoSend.push(c)); + const p = this.mediaBytesSent.get(s.ssrc); + if (p) + p.add(s.bytesSent); + else { + const m = new B$(10); + m.add(s.bytesSent), this.mediaBytesSent.set(s.ssrc, m); + } + if (s.retransmittedBytesSent !== void 0) { + const m = this.mediaBytesRetransmit.get(s.ssrc); + if (m) + m.add(s.retransmittedBytesSent); + else { + const T = new B$(10); + T.add(s.retransmittedBytesSent), this.mediaBytesRetransmit.set(s.ssrc, T); + } + } + if (s.totalEncodedBytesTarget) { + const m = this.mediaBytesTargetEncode.get(s.ssrc); + if (m) + m.add(s.totalEncodedBytesTarget); + else { + const T = new B$(10); + T.add(s.totalEncodedBytesTarget), this.mediaBytesTargetEncode.set(s.ssrc, T); + } + } + if (c.ssrc = s.ssrc, c.bytes = s.bytesSent, c.packets = s.packetsSent, c.firsCount = s.firCount, c.nacksCount = s.nackCount, c.plisCount = s.pliCount, c.frameCount = s.framesEncoded, c.adaptionChangeReason = s.qualityLimitationReason, c.scalabilityMode = s.scalabilityMode, s.totalEncodeTime && s.framesEncoded) { + const m = this.lastEncoderMs.get(s.ssrc); + if (!m || m.lastFrameCount > s.framesEncoded) + c.avgEncodeMs = 1e3 * s.totalEncodeTime / s.framesEncoded; + else { + const T = s.framesEncoded - m.lastFrameCount, D = s.totalEncodeTime - m.lastEncoderTime; + c.avgEncodeMs = 1e3 * D / T; + } + } + if (s.framesEncoded && s.qpSum) { + const m = this.lastEncoderMs.get(s.ssrc); + !m || m.lastFrameCount > s.framesEncoded ? c.qpSumPerFrame = s.qpSum / s.framesEncoded : c.qpSumPerFrame = (s.qpSum - m.lastQpSum) / (s.framesEncoded - m.lastFrameCount); + } + if (this.lastEncoderMs.set(s.ssrc, { lastFrameCount: s.framesEncoded, lastEncoderTime: s.totalEncodeTime, lastQpSum: s.qpSum, lts: Date.now() }), s.codecId && (c.codec = this.getCodecFromCodecStats(s.codecId)), s.mediaSourceId && this.processVideoMediaSource(s.mediaSourceId, c), this.processVideoTrackSenderStats(s, s.trackId, c), s.remoteId) + this.processRemoteInboundStats(s.remoteId, c); + else { + const m = this.findRemoteStatsId(s.ssrc, Nc.REMOTE_INBOUND); + m && this.processRemoteInboundStats(m, c); + } + } + processAudioOutboundStats(s) { + let c = this._stats.audioSend.find((p) => p.ssrc === s.ssrc); + if (c || (c = Kd(pte), this._stats.audioSend.push(c)), c.ssrc = s.ssrc, c.packets = s.packetsSent, c.bytes = s.bytesSent, s.mediaSourceId && this.processAudioMediaSource(s.mediaSourceId, c), s.codecId && (c.codec = this.getCodecFromCodecStats(s.codecId)), this.processAudioTrackSenderStats(s, s.trackId, c), s.remoteId) + this.processRemoteInboundStats(s.remoteId, c); + else { + const p = this.findRemoteStatsId(s.ssrc, Nc.REMOTE_INBOUND); + p && this.processRemoteInboundStats(p, c); + } + } + findRemoteStatsId(s, c) { + var p; + const m = Array.from(ip(p = this.report).call(p)).find((T) => T.type === c && T.ssrc === s); + return m ? m.id : null; + } + processVideoMediaSource(s, c) { + const p = this.report.get(s); + p && p.width && p.height && p.framesPerSecond && (c.inputFrame = { width: p.width, height: p.height, frameRate: p.framesPerSecond }); + } + processAudioMediaSource(s, c) { + const p = this.report.get(s); + p && (c.inputLevel = p.audioLevel); + } + processVideoTrackSenderStats(s, c, p) { + var m, T, D, k; + const N = c ? this.report.get(c) : void 0, U = (m = N == null ? void 0 : N.framesSent) !== null && m !== void 0 ? m : s.framesSent; + if (typeof U != "number") + return; + let V = (T = N == null ? void 0 : N.frameWidth) !== null && T !== void 0 ? T : s.frameWidth, G = (D = N == null ? void 0 : N.frameHeight) !== null && D !== void 0 ? D : s.frameHeight, K = (k = N == null ? void 0 : N.framesPerSecond) !== null && k !== void 0 ? k : s.framesPerSecond; + if (typeof V == "number" && typeof G == "number" || (V = 0, G = 0), K == null) { + const q = Date.now(), ue = this.lastVideoFramesSent.get(p.ssrc); + ue && q - ue.lts >= 800 ? (K = Math.round((U - ue.count) / ((q - ue.lts) / 1e3)), this.lastVideoFramesSent.set(p.ssrc, { count: U, lts: q, rate: K })) : ue ? K = ue.rate : this.lastVideoFramesSent.set(p.ssrc, { count: U, lts: q, rate: 0 }); + } + p.sentFrame = { width: V, height: G, frameRate: Math.max(0, K) }; + } + processVideoTrackReceiverStats(s, c, p) { + var m, T, D, k, N; + const U = c ? this.report.get(c) : void 0, V = (m = U == null ? void 0 : U.framesReceived) !== null && m !== void 0 ? m : s.framesReceived, G = (T = U == null ? void 0 : U.frameWidth) !== null && T !== void 0 ? T : s.frameWidth, K = (D = U == null ? void 0 : U.frameHeight) !== null && D !== void 0 ? D : s.frameHeight, q = (k = U == null ? void 0 : U.jitterBufferDelay) !== null && k !== void 0 ? k : s.jitterBufferDelay, ue = (N = U == null ? void 0 : U.jitterBufferEmittedCount) !== null && N !== void 0 ? N : s.jitterBufferEmittedCount; + if (typeof V == "number") { + const oe = this.lastVideoFramesRecv.get(p.ssrc), he = Date.now(); + p.framesReceivedCount = V; + let Ce = 0; + oe && he - oe.lts >= 800 ? (Ce = Math.round((V - oe.count) / ((he - oe.lts) / 1e3)), this.lastVideoFramesRecv.set(p.ssrc, { count: V, lts: he, rate: Ce })) : oe ? Ce = oe.rate : this.lastVideoFramesRecv.set(p.ssrc, { count: V, lts: he, rate: 0 }), p.receivedFrame = { width: G || 0, height: K || 0, frameRate: Ce || 0 }, p.decodedFrame = { width: G || 0, height: K || 0, frameRate: p.decodeFrameRate || 0 }, p.outputFrame = { width: G || 0, height: K || 0, frameRate: p.decodeFrameRate || 0 }; + } + if (q && ue) { + const oe = this.lastVideoJBDelay.get(p.ssrc) || { jitterBufferDelay: 0, jitterBufferEmittedCount: 0, jitterBufferMs: 0 }; + let he = oe.jitterBufferMs; + const Ce = ue - oe.jitterBufferEmittedCount; + Ce > 0 && (he = 1e3 * (q - oe.jitterBufferDelay) / Ce), p.jitterBufferMs = he, p.currentDelayMs = Math.round(he), this.lastVideoJBDelay.set(p.ssrc, { jitterBufferDelay: q, jitterBufferEmittedCount: ue, jitterBufferMs: p.currentDelayMs }); + } + } + processAudioTrackSenderStats(s, c, p) { + var m, T, D, k; + const N = c ? this.report.get(c) : void 0, U = (m = (T = N == null ? void 0 : N.echoReturnLoss) !== null && T !== void 0 ? T : s.echoReturnLoss) !== null && m !== void 0 ? m : 0, V = (D = (k = N == null ? void 0 : N.echoReturnLossEnhancement) !== null && k !== void 0 ? k : s.echoReturnLossEnhancement) !== null && D !== void 0 ? D : 0; + p.aecReturnLoss = U, p.aecReturnLossEnhancement = V; + } + processAudioTrackReceiverStats(s, c, p) { + var m, T, D, k, N, U, V; + const G = c ? this.report.get(c) : void 0, K = (m = G == null ? void 0 : G.removedSamplesForAcceleration) !== null && m !== void 0 ? m : s.removedSamplesForAcceleration, q = (T = G == null ? void 0 : G.totalSamplesReceived) !== null && T !== void 0 ? T : s.totalSamplesReceived, ue = (D = G == null ? void 0 : G.jitterBufferDelay) !== null && D !== void 0 ? D : s.jitterBufferDelay, oe = (k = G == null ? void 0 : G.jitterBufferEmittedCount) !== null && k !== void 0 ? k : s.jitterBufferEmittedCount, he = (N = G == null ? void 0 : G.audioLevel) !== null && N !== void 0 ? N : s == null ? void 0 : s.audioLevel, Ce = (U = G == null ? void 0 : G.totalSamplesDuration) !== null && U !== void 0 ? U : s == null ? void 0 : s.totalSamplesDuration, ke = (V = G == null ? void 0 : G.concealedSamples) !== null && V !== void 0 ? V : s.concealedSamples; + if (K && q && (p.accelerateRate = K / q), ue && oe) { + const tt = this.lastAudioJBDelay.get(p.ssrc) || { jitterBufferDelay: 0, jitterBufferEmittedCount: 0, jitterBufferMs: 0 }; + let Ye = tt.jitterBufferMs; + const et = oe - tt.jitterBufferEmittedCount; + et > 0 && (Ye = 1e3 * (ue - tt.jitterBufferDelay) / et), p.jitterBufferMs = Math.round(Ye), this.lastAudioJBDelay.set(p.ssrc, { jitterBufferDelay: ue, jitterBufferEmittedCount: oe, jitterBufferMs: p.jitterBufferMs }); + } + p.outputLevel = he; + let Ge = 1920; + Ce && q && (Ge = q / Ce / 50, p.receivedFrames = Math.round(q / Ge)), ke && (p.droppedFrames = Math.round(ke / Ge)); + } + processRemoteInboundStats(s, c) { + const p = this.report.get(s); + p && (c.packetsLost = p.packetsLost, p.roundTripTime && (c.rttMs = 1e3 * p.roundTripTime), p.jitter && (c.jitterMs = 1e3 * p.jitter), p.timestamp && (c.timestamp = p.timestamp)); + } + getCodecFromCodecStats(s) { + const c = this.report.get(s); + if (!c) + return ""; + const p = c.mimeType.match(/\/(.*)$/); + return p && p[1] ? p[1] : ""; + } + updateSendBitrate() { + let s = 0, c = null, p = null; + this.mediaBytesSent.forEach((T) => { + s += T.diffMean(); + }), this.mediaBytesRetransmit.forEach((T) => { + c = c === null ? T.diffMean() : c + T.diffMean(); + }), this.mediaBytesTargetEncode.forEach((T) => { + p = p === null ? T.diffMean() : p + T.diffMean(); + }); + const m = c !== null ? s - c : s; + this._stats.bitrate = { actualEncoded: 8 * m / (this.options.updateInterval / 1e3), transmit: 8 * s / (this.options.updateInterval / 1e3) }, c !== null && (this._stats.bitrate.retransmit = 8 * c / (this.options.updateInterval / 1e3)), p !== null && (this._stats.bitrate.targetEncoded = 8 * p / (this.options.updateInterval / 1e3)); + } + } + class DFe extends U$ { + updateStats() { + return ot.resolve(); + } + } + function hk(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 250, c = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 8, p = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 500, m = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 1e4; + const T = function() { + const D = navigator.userAgent.toLocaleLowerCase().match(/chrome\/[\d]*/i); + return D && D[0] ? Number(D[0].split("/")[1]) : null; + }(); + return T ? T < 76 ? new RFe(h, { updateInterval: s, lossRateInterval: c, freezeRateLimit: p, firstVideoDecodedTimeout: m }) : new Ste(h, { updateInterval: s, lossRateInterval: c, freezeRateLimit: p, firstVideoDecodedTimeout: m }) : function(D) { + return !!window.RTCStatsReport && D.getStats() instanceof ot; + }(h) ? new Ste(h, { updateInterval: s, lossRateInterval: c, freezeRateLimit: p, firstVideoDecodedTimeout: m }) : new DFe(h, { updateInterval: s, lossRateInterval: c, freezeRateLimit: p, firstVideoDecodedTimeout: m }); + } + function bte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Ete(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? bte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : bte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function hA(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, c = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, p = arguments.length > 3 ? arguments[3] : void 0; + const { filterRTX: m, filterVideoFec: T, filterAudioFec: D, filterAudioCodec: k, filterVideoCodec: N } = s, { useXR: U } = c; + let V = [], G = [], K = [], q = [], ue = !1, oe = !1; + if (Da.parse(h).mediaDescriptions.forEach((Ce) => { + p && p !== Ce.attributes.direction || (Ce.media.mediaType !== "video" || ue || (G = Ce.attributes.payloads, q = Ce.attributes.extmaps, ue = !0), Ce.media.mediaType !== "audio" || oe || (V = Ce.attributes.payloads, K = Ce.attributes.extmaps, oe = !0)); + }), !q || G.length === 0) + throw new Error("Cannot get video capabilities from SDP."); + if (!K || V.length === 0) + throw new Error("Cannot get audio capabilities from SDP."); + G.forEach((Ce) => { + var ke; + (ke = Ce.rtpMap) !== null && ke !== void 0 && ke.clockRate && (Ce.rtpMap.clockRate = parseInt(Ce.rtpMap.clockRate)), U && Ce.rtcpFeedbacks.push({ type: "rrtr" }); + }), V.forEach((Ce) => { + var ke; + (ke = Ce.rtpMap) !== null && ke !== void 0 && ke.clockRate && (Ce.rtpMap.clockRate = parseInt(Ce.rtpMap.clockRate)), U && Ce.rtcpFeedbacks.push({ type: "rrtr" }); + }), m && (V = V.filter((Ce) => { + var ke; + return ((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLowerCase()) !== "rtx"; + }), G = G.filter((Ce) => { + var ke; + return ((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLowerCase()) !== "rtx"; + })), T && (G = G.filter((Ce) => { + var ke; + return !/(red)|(ulpfec)|(flexfec)/i.test(((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName) || ""); + })), D && (V = V.filter((Ce) => { + var ke; + return !/(red)|(ulpfec)|(flexfec)/i.test(((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName) || ""); + })), k && (k == null ? void 0 : k.length) > 0 && (V = V.filter((Ce) => { + var ke; + return rr(k).call(k, ((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLowerCase()) || ""); + })), N && (N == null ? void 0 : N.length) > 0 && (G = G.filter((Ce) => { + var ke; + return rr(N).call(N, ((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLowerCase()) || ""); + })); + const he = Le("UNSUPPORTED_VIDEO_CODEC"); + return he && he.length > 0 && (G = G.filter((Ce) => !(Ce.rtpMap && rr(he).call(he, Ce.rtpMap.encodingName.toLowerCase())))), { audioCodecs: V, videoCodecs: G, audioExtensions: K, videoExtensions: q }; + } + function cp(h) { + const s = Da.parse(h); + let c, p; + for (const m of s.mediaDescriptions) { + if (!c) { + const T = m.attributes.iceUfrag, D = m.attributes.icePwd; + if (!T || !D) + throw new Error("Cannot get iceUfrag or icePwd from SDP."); + c = { iceUfrag: T, icePwd: D }; + } + if (!p) { + const T = m.attributes.fingerprints; + T.length > 0 && (p = { fingerprints: T }); + } + } + if (!p && s.attributes.fingerprints.length > 0 && (p = { fingerprints: s.attributes.fingerprints }), !p || !c) + throw new Error("Cannot get iceParameters or dtlsParameters from SDP."); + return { iceParameters: c, dtlsParameters: p }; + } + function j$(h, s) { + const c = [], p = h.attributes.ssrcGroups.filter((D) => D.semantic === "FID"), m = h.attributes.ssrcGroups.find((D) => D.semantic === "SIM"), T = h.attributes.ssrcs; + if (m) + m.ssrcIds.forEach((D) => { + var k; + const N = (k = p.find((U) => U.ssrcIds[0] === D)) === null || k === void 0 ? void 0 : k.ssrcIds[1]; + c.push({ ssrcId: D, rtx: s ? N : void 0 }); + }); + else if (p.length > 0) { + const D = p[0].ssrcIds[0], k = p[0].ssrcIds[1]; + c.push({ ssrcId: D, rtx: s ? k : void 0 }); + } else { + if (T.length === 0) + throw new Error("No ssrcs found on local media description."); + c.push({ ssrcId: T[0].ssrcId }); + } + return c; + } + function Cte(h, s) { + const { cname: c } = h; + let p; + s && s.ip && typeof s.port == "number" ? (p = [{ foundation: "udpcandidate", componentId: "1", transport: "udp", priority: "2103266323", connectionAddress: s.ip, port: s.port.toString(), type: "host", extension: {} }], ie.debug("Using remote candidate from AP ".concat(s.ip, ":").concat(s.port)), s.ip6 && (p.push({ foundation: "udpcandidate", componentId: "1", transport: "udp", priority: "2103266323", connectionAddress: s.ip6, port: s.port.toString(), type: "host", extension: {} }), ie.debug("Using IPV6 remote candidate from AP ".concat(s.ip6, ":").concat(s.port)))) : p = h.iceParameters.candidates.map((k) => ({ foundation: k.foundation, componentId: "1", transport: k.protocol, priority: k.priority.toString(), connectionAddress: k.ip, port: k.port.toString(), type: k.type, extension: {} })); + const m = { fingerprints: h.dtlsParameters.fingerprints.map((k) => ({ hashFunction: k.algorithm, fingerprint: k.fingerprint })) }, T = { iceUfrag: h.iceParameters.iceUfrag, icePwd: h.iceParameters.icePwd }; + let D; + switch (h.dtlsParameters.role) { + case "server": + D = "passive"; + break; + case "client": + D = "active"; + break; + case "auto": + D = "actpass"; + } + return { dtlsParameters: m, iceParameters: T, candidates: p, rtpCapabilities: uT(h.rtpCapabilities), setup: D, cname: c }; + } + function Bc(h, s, c) { + const p = [], m = []; + return h.forEach((T) => { + let { ssrcId: D, rtx: k } = T; + const N = ra(8, "track-"), U = { ssrcId: D, attributes: Ete({ label: N, mslabel: c = c || ra(10, ""), msid: "".concat(c, " ").concat(N) }, s && { cname: s }) }; + if (p.push(U), k !== void 0) { + const V = { ssrcId: k, attributes: Ete({ label: N, mslabel: c, msid: "".concat(c, " ").concat(N) }, s && { cname: s }) }; + p.push(V), m.push({ semantic: "FID", ssrcIds: [D, k] }); + } + }), h.length > 1 && m.push({ semantic: "SIM", ssrcIds: h.map((T) => { + let { ssrcId: D } = T; + return D; + }) }), { ssrcs: p, ssrcGroups: m }; + } + function __(h, s) { + s instanceof Vi && h.attributes.payloads.forEach((c) => { + var p; + const m = (p = c.rtpMap) === null || p === void 0 ? void 0 : p.encodingName.toLowerCase(); + if (!m || ["opus", "pcmu", "pcma", "g722"].indexOf(m) === -1) + return; + c.fmtp || (c.fmtp = { parameters: {} }), c.fmtp.parameters.minptime = "10", c.fmtp.parameters.useinbandfec = "1"; + const T = s._encoderConfig; + T && m !== "pcmu" && m !== "pcma" && m !== "g722" && (T.bitrate && !qi() && (c.fmtp.parameters.maxaveragebitrate = "".concat(Math.floor(1e3 * T.bitrate))), T.sampleRate && (c.fmtp.parameters.maxplaybackrate = "".concat(T.sampleRate), c.fmtp.parameters["sprop-maxcapturerate"] = "".concat(T.sampleRate)), T.stereo && (c.fmtp.parameters.stereo = "1", c.fmtp.parameters["sprop-stereo"] = "1")); + }); + } + function dk(h) { + const s = h.attributes.unrecognized.findIndex((c) => c.attField === "x-google-flag" && c.attValue === "conference"); + s !== -1 && h.attributes.unrecognized.splice(s, 1); + } + function fk(h, s) { + var c; + if (!(s instanceof In && s._encoderConfig && s._hints.indexOf(ua.SCREEN_TRACK) === -1)) + return; + const p = s._encoderConfig; + _i().supportMinBitrate && p.bitrateMin && h.attributes.payloads.forEach((m) => { + var T, D; + rr(T = ["h264", "h265", "vp8", "vp9", "av1"]).call(T, ((D = m.rtpMap) === null || D === void 0 ? void 0 : D.encodingName.toLowerCase()) || "") && (m.fmtp || (m.fmtp = { parameters: {} }), m.fmtp.parameters["x-google-min-bitrate"] = "".concat(p.bitrateMin)); + }), _i().supportMinBitrate && !rr(c = s._hints).call(c, ua.LOW_STREAM) && p.bitrateMax && h.attributes.payloads.forEach((m) => { + var T, D; + rr(T = ["h264", "h265", "vp8", "vp9", "av1"]).call(T, ((D = m.rtpMap) === null || D === void 0 ? void 0 : D.encodingName.toLowerCase()) || "") && (m.fmtp || (m.fmtp = { parameters: {} }), m.fmtp.parameters["x-google-start-bitrate"] = "".concat(Le("X_GOOGLE_START_BITRATE") || Math.floor(p.bitrateMax))); + }); + } + function $$(h) { + if (h.media.mediaType !== "video") + return; + const s = yi(); + if (s.name !== xi.SAFARI && s.os !== Zo.IOS) + return; + const c = h.attributes.extmaps.findIndex((p) => /video-orientation/g.test(p.extensionName)); + c !== -1 && h.attributes.extmaps.splice(c, 1); + } + function cT(h, s, c) { + if (!s) + return; + let p, m; + if (h.media.mediaType === "video" ? (p = c.videoExtensions, m = c.videoCodecs) : (p = c.audioExtensions, m = c.audioCodecs), s.twcc === !0) { + const T = p.find((D) => D.extensionName === "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"); + T && (h.attributes.extmaps.find((k) => k.extensionName === "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01") || h.attributes.extmaps.push({ entry: T.entry, extensionName: "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" }), function(k, N) { + return N.filter((U) => !!k.find((V) => V.payloadType === U.payloadType && !!V.rtcpFeedbacks.find((G) => G.type === "transport-cc"))); + }(m, h.attributes.payloads).forEach((k) => { + k.rtcpFeedbacks.find((N) => N.type === "transport-cc") || k.rtcpFeedbacks.push({ type: "transport-cc" }); + })); + } else if (s.twcc === !1) { + const T = h.attributes.extmaps.findIndex((D) => D.extensionName === "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"); + T !== -1 && h.attributes.extmaps.splice(T, 1), h.attributes.payloads.forEach((D) => { + const k = D.rtcpFeedbacks.findIndex((N) => N.type === "transport-cc"); + k !== -1 && D.rtcpFeedbacks.splice(k, 1); + }); + } + if (s.remb === !0) { + const T = p.find((D) => D.extensionName === "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"); + T && (h.attributes.extmaps.find((k) => k.extensionName === "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time") || h.attributes.extmaps.push({ entry: T.entry, extensionName: "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time" }), function(k, N) { + return N.filter((U) => !!k.find((V) => V.payloadType === U.payloadType && !!V.rtcpFeedbacks.find((G) => G.type === "goog-remb"))); + }(m, h.attributes.payloads).forEach((k) => { + k.rtcpFeedbacks.find((N) => N.type === "goog-remb") || k.rtcpFeedbacks.push({ type: "goog-remb" }); + })); + } else if (s.remb === !1) { + const T = h.attributes.extmaps.findIndex((D) => D.extensionName === "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"); + T !== -1 && h.attributes.extmaps.splice(T, 1), h.attributes.payloads.forEach((D) => { + const k = D.rtcpFeedbacks.findIndex((N) => N.type === "goog-remb"); + k !== -1 && D.rtcpFeedbacks.splice(k, 1); + }); + } + } + function V$(h, s, c) { + if (qi() || h.media.mediaType !== "video" || !(s instanceof In) || c !== "vp9" && c !== "vp8" || c === "vp8" && !Le("SIMULCAST") || s._scalabilityMode === void 0 || s._scalabilityMode.numSpatialLayers <= 1) + return; + const p = c === "vp8" ? 2 : s._scalabilityMode.numSpatialLayers, m = h.attributes.ssrcs[0], T = h.attributes.ssrcGroups.find((k) => k.semantic === "FID" && k.ssrcIds[0] === m.ssrcId), D = { semantic: "SIM", ssrcIds: [m.ssrcId] }; + for (let k = 1; k < p; k++) + h.attributes.ssrcs.push({ ssrcId: m.ssrcId + k, attributes: ca(m.attributes) }), D.ssrcIds.push(m.ssrcId + k), T && (h.attributes.ssrcs.push({ ssrcId: T.ssrcIds[1] + k, attributes: ca(m.attributes) }), h.attributes.ssrcGroups.push({ semantic: "FID", ssrcIds: [m.ssrcId + k, T.ssrcIds[1] + k] })); + h.attributes.ssrcGroups.unshift(D); + } + function z$() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + const c = new RTCPeerConnection(); + c.addTransceiver("video", { direction: "sendonly" }), c.addTransceiver("audio", { direction: "sendonly" }), c.addTransceiver("video", { direction: "recvonly" }), c.addTransceiver("audio", { direction: "recvonly" }); + const p = (yield c.createOffer()).sdp, { send: m, recv: T, sendrecv: D } = function() { + let k = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, N = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, U = arguments.length > 2 ? arguments[2] : void 0; + const V = hA(U, k, N, "sendonly"), G = hA(U, k, N, "recvonly"), K = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, q = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, ue = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }; + if (Zd(V, G, "videoExtensions", K, q, ue), Zd(V, G, "videoCodecs", K, q, ue), Zd(V, G, "audioExtensions", K, q, ue), Zd(V, G, "audioCodecs", K, q, ue), Le("RAISE_H264_BASELINE_PRIORITY")) { + const oe = ue.videoCodecs.findIndex((he) => { + var Ce, ke; + return ((Ce = he.rtpMap) === null || Ce === void 0 ? void 0 : Ce.encodingName.toLocaleLowerCase()) === "h264" && ((ke = he.fmtp) === null || ke === void 0 ? void 0 : ke.parameters["profile-level-id"]) === "42001f"; + }); + if (oe !== -1) { + const he = ue.videoCodecs.findIndex((Ce) => { + var ke; + return ((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLocaleLowerCase()) === "h264"; + }); + if (he < oe) { + ie.debug("raising H264 baseline profile priority"); + const Ce = ue.videoCodecs[oe]; + ue.videoCodecs.splice(oe, 1), ue.videoCodecs.splice(he, 0, Ce); + } + he !== -1 && (q.videoCodecs = q.videoCodecs.filter((Ce) => { + var ke, Ge; + return !(((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLocaleLowerCase()) === "h264" && ((Ge = Ce.fmtp) === null || Ge === void 0 ? void 0 : Ge.parameters["profile-level-id"]) !== "42001f"); + })), he !== -1 && Le("FILTER_SEND_H264_BASELINE") && (K.videoCodecs = K.videoCodecs.filter((Ce) => { + var ke, Ge; + return !(((ke = Ce.rtpMap) === null || ke === void 0 ? void 0 : ke.encodingName.toLocaleLowerCase()) === "h264" && ((Ge = Ce.fmtp) === null || Ge === void 0 ? void 0 : Ge.parameters["profile-level-id"]) !== "42001f"); + })); + } + } + return { send: K, recv: q, sendrecv: ue }; + }(h, s, p); + try { + c.close(); + } catch (k) { + } + return { send: m, recv: T, sendrecv: D }; + }); + } + function Tte() { + const h = { audioCodecs: [], videoCodecs: [], audioExtensions: [], videoExtensions: [] }, s = hA(arguments.length > 2 ? arguments[2] : void 0, arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, "recvonly"), c = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, p = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, m = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }; + if (Zd(h, s, "videoExtensions", c, p, m), Zd(h, s, "videoCodecs", c, p, m), Zd(h, s, "audioExtensions", c, p, m), Zd(h, s, "audioCodecs", c, p, m), Le("RAISE_H264_BASELINE_PRIORITY")) { + const T = m.videoCodecs.findIndex((D) => D.rtpMap && D.rtpMap.encodingName.toLocaleLowerCase() === "h264" && D.fmtp && D.fmtp.parameters["profile-level-id"] === "42001f"); + if (T !== -1) { + const D = m.videoCodecs.findIndex((k) => k.rtpMap && k.rtpMap.encodingName.toLocaleLowerCase() === "h264"); + if (D < T) { + ie.debug("raising H264 baseline profile priority"); + const k = m.videoCodecs[T]; + m.videoCodecs.splice(T, 1), m.videoCodecs.splice(D, 0, k); + } + D !== -1 && (p.videoCodecs = p.videoCodecs.filter((k) => !(k.rtpMap && k.rtpMap.encodingName.toLocaleLowerCase() === "h264" && k.fmtp && k.fmtp.parameters["profile-level-id"] !== "42001f"))); + } + } + return { send: c, recv: p, sendrecv: m }; + } + function Zd(h, s, c, p, m, T) { + if (c === "videoExtensions" || c === "audioExtensions") { + const D = []; + return h[c].forEach((k) => { + s[c].some((N, U) => { + if (k.entry === N.entry && k.extensionName === N.extensionName) + return D.push(U), !0; + }) ? T[c].push(k) : p[c].push(k); + }), void s[c].forEach((k, N) => { + D.indexOf(N) === -1 && m[c].push(k); + }); + } + if (c === "videoCodecs" || c === "audioCodecs") { + const D = []; + return h[c].forEach((k) => { + s[c].some((N, U) => { + if (k.payloadType === N.payloadType && JSON.stringify(k) === JSON.stringify(N)) + return D.push(U), !0; + }) ? T[c].push(k) : p[c].push(k); + }), void s[c].forEach((k, N) => { + D.indexOf(N) === -1 && m[c].push(k); + }); + } + } + function uT(h) { + const { send: s, recv: c, sendrecv: p } = h; + if (!p) { + if (!s || !c) + throw new Error("cannot merge rtp capabilities because one of send or recv is empty!"); + return { send: s, recv: c }; + } + let m, T; + return s ? (m = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, m.audioCodecs = [...s.audioCodecs, ...p.audioCodecs], m.videoCodecs = [...s.videoCodecs, ...p.videoCodecs], m.audioExtensions = [...s.audioExtensions, ...p.audioExtensions], m.videoExtensions = [...s.videoExtensions, ...p.videoExtensions]) : m = p, c ? (T = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, T.audioCodecs = [...c.audioCodecs, ...p.audioCodecs], T.videoCodecs = [...c.videoCodecs, ...p.videoCodecs], T.audioExtensions = [...c.audioExtensions, ...p.audioExtensions], T.videoExtensions = [...c.videoExtensions, ...p.videoExtensions]) : T = p, { send: m, recv: T }; + } + function up(h) { + h.media.mediaType === "audio" && h.attributes.payloads.filter((s) => { + var c; + return ((c = s.rtpMap) === null || c === void 0 ? void 0 : c.encodingName.toLowerCase()) === "opus"; + }).forEach((s) => { + s.fmtp || (s.fmtp = { parameters: {} }), s.fmtp.parameters.stereo = "1", s.fmtp.parameters["sprop-stereo"] = "1"; + }); + } + function dA(h) { + h.mediaDescriptions.forEach((s) => { + s.media.mediaType !== "video" && s.media.mediaType !== "audio" || s.attributes.payloads.forEach((c) => { + c.rtcpFeedbacks.findIndex((p) => p.type === "rrtr") === -1 && c.rtcpFeedbacks.push({ type: "rrtr" }); + }); + }); + } + function jS(h, s, c, p) { + let m = []; + if (h === pr.VIDEO) { + if (Le("H264_PROFILE_LEVEL_ID") && p === "h264" && (m = s.videoCodecs.filter((T) => { + var D; + return rr(D = T.rtpMap && T.rtpMap.encodingName.toLowerCase() || "").call(D, p) && T && T.fmtp && T.fmtp.parameters["profile-level-id"] === Le("H264_PROFILE_LEVEL_ID"); + })), !Array.isArray(m) || m.length === 0) { + let T = []; + const D = [], k = []; + c.videoCodecs.forEach((N) => { + var U, V, G; + rr(U = N.rtpMap && N.rtpMap.encodingName.toLowerCase() || "").call(U, p) && T.push(N), rr(V = N.rtpMap && N.rtpMap.encodingName.toLowerCase() || "").call(V, "vp8") && D.push(N), rr(G = N.rtpMap && N.rtpMap.encodingName.toLowerCase() || "").call(G, "h264") && k.push(N); + }), T.length === 0 && (D.length !== 0 ? (T = D, ie.warning("codec ".concat(p, " not included in rtpCapabilities, fallback to default payloads: vp8"))) : k.length !== 0 && (T = k, ie.warning("codec ".concat(p, " not included in rtpCapabilities, fallback to default payloads: h264")))), T.length !== 0 && (m = s.videoCodecs.filter((N) => T.some((U) => U.payloadType === N.payloadType))); + } + if (Le("USE_PUB_RTX")) { + const T = m.map((k) => k.payloadType.toString()), D = s.videoCodecs.filter((k) => k.rtpMap && k.rtpMap.encodingName === "rtx" && rr(T).call(T, k.fmtp && k.fmtp.parameters.apt || "")); + m = [...m, ...D]; + } + m.length === 0 && (ie.warning("codec ".concat(p, " not included in rtpCapabilities, fallback to default payloads: ").concat(s.videoCodecs[0].rtpMap && s.videoCodecs[0].rtpMap.encodingName)), m = s.videoCodecs); + } else + m = s.audioCodecs.filter((T) => { + var D; + return rr(D = T.rtpMap && T.rtpMap.encodingName.toLowerCase() || "").call(D, p); + }), m.length === 0 && (ie.warning("codec ".concat(p, " not included in rtpCapabilities, fallback to opus")), m = s.audioCodecs.filter((T) => { + var D; + return rr(D = T.rtpMap && T.rtpMap.encodingName.toLowerCase() || "").call(D, "opus"); + })); + return m; + } + let wte = class { + get localCapabilities() { + return ca(this._localCapabilities); + } + get rtpCapabilities() { + return ca(this._rtpCapabilities); + } + get candidates() { + return ca(this._candidates); + } + get iceParameters() { + return ca(this._iceParameters); + } + get dtlsParameters() { + return ca(this._dtlsParameters); + } + constructor(h) { + Z(this, "sessionDesc", void 0), Z(this, "_localCapabilities", void 0), Z(this, "_rtpCapabilities", void 0), Z(this, "_candidates", void 0), Z(this, "_iceParameters", void 0), Z(this, "_dtlsParameters", void 0), Z(this, "setup", void 0), Z(this, "currentMidIndex", void 0), Z(this, "cname", "o/i14u9pJrxRKAsu"), Z(this, "firefoxSsrcMidMap", /* @__PURE__ */ new Map()), h = ca(h); + const { remoteIceParameters: s, remoteDtlsParameters: c, candidates: p, remoteRTPCapabilities: m, localCapabilities: T, direction: D, setup: k, videoCodec: N, audioCodec: U } = h; + let V; + this.setup = k, V = D === cl.RECEIVE_ONLY ? Da.parse(`v=0 +o=- 0 0 IN IP4 127.0.0.1 +s=AgoraGateway +t=0 0 +a=group:BUNDLE 0 1 +a=msid-semantic: WMS +a=extmap-allow-mixed +m=video 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=sendonly +a=rtcp-mux +a=rtcp-rsize +a=mid:0 +m=audio 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=sendonly +a=rtcp-mux +a=rtcp-rsize +a=mid:1 +`) : Da.parse(`v=0 +o=- 0 0 IN IP4 127.0.0.1 +s=AgoraGateway +t=0 0 +a=group:BUNDLE 0 1 +a=msid-semantic: WMS +a=extmap-allow-mixed +m=video 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=recvonly +a=rtcp-mux +a=rtcp-rsize +a=mid:0 +m=audio 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=recvonly +a=rtcp-mux +a=rtcp-rsize +a=mid:1 +`), this._rtpCapabilities = m, this._candidates = p, this._iceParameters = s, this._dtlsParameters = c, this._localCapabilities = T; + const G = D === cl.RECEIVE_ONLY ? this.rtpCapabilities.send : this.rtpCapabilities.recv, K = D === cl.RECEIVE_ONLY ? this._localCapabilities.recv : this._localCapabilities.send, q = D === cl.RECEIVE_ONLY ? m.send.videoCodecs : jS(pr.VIDEO, G, K, N), ue = D === cl.RECEIVE_ONLY ? m.send.audioCodecs : jS(pr.AUDIO, G, K, U); + for (const oe of V.mediaDescriptions) { + if (oe.attributes.iceUfrag = s.iceUfrag, oe.attributes.icePwd = s.icePwd, oe.attributes.fingerprints = c.fingerprints, oe.attributes.candidates = p, oe.attributes.setup = this.setup, oe.media.mediaType === "application" && (oe.attributes.sctpPort = "5000"), oe.media.mediaType === "video" && (oe.media.fmts = q.map((he) => he.payloadType.toString(10)), oe.attributes.payloads = q, oe.attributes.extmaps = G.videoExtensions, Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: he, ssrcGroups: Ce } = Bc([{ ssrcId: 4e4, rtx: Le("USE_SUB_RTX") ? 40001 : void 0 }], this.cname); + oe.attributes.ssrcs = he, oe.attributes.ssrcGroups = Ce; + } + if (oe.media.mediaType === "audio" && (oe.media.fmts = ue.map((he) => he.payloadType.toString(10)), oe.attributes.payloads = ue, oe.attributes.extmaps = G.audioExtensions, up(oe), Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: he, ssrcGroups: Ce } = Bc([{ ssrcId: 2e4 }], this.cname); + oe.attributes.ssrcs = he, oe.attributes.ssrcGroups = Ce; + } + } + this.sessionDesc = V, this.currentMidIndex = V.mediaDescriptions.length - 1; + } + toString() { + return Da.print(this.sessionDesc); + } + hasMid(h) { + return Array.isArray(h) ? h.every((s) => this.hasMid(s)) : this.sessionDesc.mediaDescriptions.some((s) => s.attributes.mid === h); + } + send(h, s, c, p, m) { + c = c.replace(/ /g, "-"); + const { ssrcs: T, ssrcGroups: D } = Bc(s, this.cname, Le("SYNC_GROUP") ? c : void 0), k = this.findPreloadMediaDesc(T); + if (k) { + if (qi() && this.firefoxSsrcMidMap.set(T[0].ssrcId, k.attributes.mid), m && (m.twcc || m.remb)) { + const N = this.sessionDesc.mediaDescriptions.indexOf(k); + return this.sessionDesc.mediaDescriptions[N] = this.mungSendMediaDesc(k, m), { mid: k.attributes.mid, needExchangeSDP: !0 }; + } + return { mid: k.attributes.mid, needExchangeSDP: !1 }; + } + { + const N = this.findAvailableMediaIndex(h, T, p); + let U; + return N === -1 ? (U = this.createOrRecycleSendMedia(h, T, D, "sendonly", p, m), this.updateBundleMids()) : (U = ca(this.sessionDesc.mediaDescriptions[N]), U.attributes.direction = "sendonly", U.attributes.ssrcs = T, U.attributes.ssrcGroups = D, this.sessionDesc.mediaDescriptions[N] = this.mungSendMediaDesc(U, m)), qi() && this.firefoxSsrcMidMap.set(T[0].ssrcId, U.attributes.mid), { needExchangeSDP: !0, mid: U.attributes.mid }; + } + } + stopSending(h) { + const s = this.sessionDesc.mediaDescriptions.filter((c) => c.attributes.mid && h.indexOf(c.attributes.mid) !== -1); + if (s.length !== h.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.stopSending."); + s.forEach((c) => { + c.attributes.ssrcs = []; + }), this.updateBundleMids(); + } + receive(h, s, c) { + const p = []; + return h.forEach((m) => { + const T = m._mediaStreamTrack.kind, D = this.findAvailableRecvMediaIndex(T); + let k, N = !1; + D === -1 ? (N = !0, k = this.createOrRecycleRecvMedia(m, [], "recvonly", s, c), this.updateBundleMids()) : (k = ca(this.sessionDesc.mediaDescriptions[D]), k.attributes.direction = "recvonly"), p.push({ mid: k.attributes.mid, needCreateTransceiver: N }); + }), p; + } + stopReceiving(h) { + const s = this.sessionDesc.mediaDescriptions.filter((c) => h.indexOf(c.attributes.mid) !== -1); + if (s.length !== h.length) + throw new Error("MediaDescriptions' length doesn't match mids's length when calling RemoteSDP.receive."); + s.forEach((c) => { + c.media.port = "0", c.attributes.direction = "inactive"; + }), this.updateBundleMids(); + } + addRemoteCandidate(h) { + const { foundation: s, protocol: c, address: p, port: m, type: T, relatedAddress: D, relatedPort: k, priority: N } = new RTCIceCandidate(h), U = { foundation: s != null ? s : "", componentId: "1", transport: c != null ? c : "", priority: N ? N + "" : "", connectionAddress: p != null ? p : "", port: m ? m + "" : "", type: T ? T + "" : "", relAddr: D != null ? D : "", relPort: k ? k + "" : "", extension: {} }; + this.candidates.some((V) => V.priority === U.priority && V.connectionAddress === U.connectionAddress && V.port === U.port) || (this._candidates.push(U), this.sessionDesc.mediaDescriptions.forEach((V) => { + V.attributes.candidates = this.candidates; + })); + } + clearRemoteCandidate() { + this._candidates = [], this.sessionDesc.mediaDescriptions[0].attributes.candidates = this._candidates; + } + createOrRecycleRecvMedia(h, s, c, p, m) { + const T = h._mediaStreamTrack.kind, D = this.rtpCapabilities.recv, k = jS(T, D, this.localCapabilities.send, T === pr.AUDIO ? m : p), N = T === pr.VIDEO ? D.videoExtensions : D.audioExtensions, U = "".concat(++this.currentMidIndex); + let V = { media: { mediaType: T, port: "9", protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: k.map((K) => K.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: [], extmaps: N, fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: s, ssrcGroups: [], rtcpFeedbackWildcards: [], payloads: k, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: c, rtcpMux: !0, rtcpRsize: !0, mid: "".concat(U) } }; + V = this.mungRecvMediaDsec(V, h); + const G = this.findFirstClosedMedia(T); + if (G) { + const K = this.sessionDesc.mediaDescriptions.indexOf(G); + this.sessionDesc.mediaDescriptions[K] = V; + } else + this.sessionDesc.mediaDescriptions.push(V); + return V; + } + muteRemote(h) { + const s = this.sessionDesc.mediaDescriptions.filter((c) => rr(h).call(h, c.attributes.mid || "")); + if (s.length !== h.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.muteRemote."); + s.forEach((c) => { + c.attributes.direction = "inactive"; + }); + } + unmuteRemote(h) { + const s = this.sessionDesc.mediaDescriptions.filter((c) => rr(h).call(h, c.attributes.mid || "")); + if (s.length !== h.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.muteRemote."); + s.forEach((c) => { + c.attributes.direction = "recvonly"; + }); + } + findAvailableMediaIndex(h, s, c) { + return this.sessionDesc.mediaDescriptions.findIndex((p) => { + const m = p.media.mediaType === h && p.media.port !== "0" && (p.attributes.direction === "sendonly" || p.attributes.direction === "sendrecv") && p.attributes.ssrcs.length === 0; + if (qi()) { + if (m) { + const T = this.firefoxSsrcMidMap.get(s[0].ssrcId); + return !(T || p.attributes.mid !== "0" && p.attributes.mid !== "1") || !(!T || T !== p.attributes.mid); + } + return !1; + } + return m && p.attributes.mid === c; + }); + } + findAvailableRecvMediaIndex(h) { + return this.sessionDesc.mediaDescriptions.findIndex((s) => { + const c = s.media.mediaType === h && s.media.port !== "0" && (s.attributes.direction === "recvonly" || s.attributes.direction === "sendrecv"); + return s.attributes.mid !== "0" && s.attributes.mid !== "1" && c; + }); + } + predictReceivingMids(h) { + const s = []; + for (let c = 0; c < h; c++) + s.push((this.currentMidIndex + c + 1).toString(10)); + return s; + } + restartICE(h) { + h = ca(h), this._iceParameters = h, this.sessionDesc.mediaDescriptions.forEach((s) => { + s.attributes.iceUfrag = h.iceUfrag, s.attributes.icePwd = h.icePwd; + }); + } + createOrRecycleSendMedia(h, s, c, p, m, T) { + const D = this.rtpCapabilities.send, k = h === pr.VIDEO ? D.videoCodecs : D.audioCodecs, N = h === pr.VIDEO ? D.videoExtensions : D.audioExtensions; + qi() && (m = "".concat(++this.currentMidIndex)); + let U = { media: { mediaType: h, port: "9", protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: k.map((G) => G.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: [], extmaps: N, fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: s, ssrcGroups: c, rtcpFeedbackWildcards: [], payloads: k, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: p, rtcpMux: !0, rtcpRsize: !0, mid: m } }; + U = this.mungSendMediaDesc(U, T); + const V = this.findFirstClosedMedia(h); + if (V) { + const G = this.sessionDesc.mediaDescriptions.indexOf(V); + this.sessionDesc.mediaDescriptions[G] = U; + } else + this.sessionDesc.mediaDescriptions.push(U); + return U; + } + mungRecvMediaDsec(h, s, c) { + const p = ca(h); + return dk(p), __(p, s), fk(p, s), $$(p), cT(p, c, this.localCapabilities.send), p; + } + mungSendMediaDesc(h, s) { + const c = ca(h); + return cT(c, s, this.localCapabilities.recv), up(c), c; + } + updateRecvMedia(h, s) { + const c = this.sessionDesc.mediaDescriptions.findIndex((p) => p.attributes.mid === h); + if (c !== -1) { + const p = this.mungRecvMediaDsec(this.sessionDesc.mediaDescriptions[c], s); + this.sessionDesc.mediaDescriptions[c] = p; + } + } + updateBundleMids() { + this.sessionDesc.attributes.groups[0].identificationTag = this.sessionDesc.mediaDescriptions.filter((h) => h.media.port !== "0").map((h) => h.attributes.mid); + } + findPreloadMediaDesc(h) { + return this.sessionDesc.mediaDescriptions.find((s) => { + var c; + return ((c = s.attributes) === null || c === void 0 || (c = c.ssrcs[0]) === null || c === void 0 ? void 0 : c.ssrcId) === h[0].ssrcId; + }); + } + findFirstClosedMedia(h) { + return this.sessionDesc.mediaDescriptions.find((s) => qi() ? s.media.port === "0" && s.media.mediaType === h : s.media.port === "0"); + } + }; + const OFe = ["sdp"]; + function Ite(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function S_(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Ite(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Ite(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + let fh = class aw extends aJ { + get currentLocalDescription() { + return this.peerConnection.currentLocalDescription; + } + get currentRemoteDescription() { + return this.peerConnection.currentRemoteDescription; + } + get peerConnectionState() { + return this.peerConnection.connectionState; + } + get iceConnectionState() { + return this.peerConnection.iceConnectionState; + } + get dtlsTransportState() { + var s, c; + return (s = (c = this.peerConnection.getReceivers()[0]) === null || c === void 0 || (c = c.transport) === null || c === void 0 ? void 0 : c.state) !== null && s !== void 0 ? s : null; + } + get localCodecs() { + return []; + } + set isInRestartIce(s) { + this._isInRestartIce = s; + } + get isInRestartIce() { + return this._isInRestartIce; + } + constructor(s, c, p) { + super(s, c), Z(this, "direction", void 0), Z(this, "name", void 0), Z(this, "store", void 0), Z(this, "spec", void 0), Z(this, "peerConnection", void 0), Z(this, "initialOffer", void 0), Z(this, "transport", void 0), Z(this, "statsFilter", void 0), Z(this, "localCandidateCount", 0), Z(this, "allCandidatesReceived", !1), Z(this, "localCandidateAddress", null), Z(this, "useXR", Le("USE_XR")), Z(this, "filter", { filterRTX: !Le("USE_PUB_RTX") && !Le("USE_SUB_RTX"), filterVideoFec: Le("FILTER_VIDEO_FEC"), filterAudioFec: Le("FILTER_AUDIO_FEC") }), Z(this, "extension", { useXR: this.useXR }), Z(this, "_isInRestartIce", !1), Z(this, "mutex", new Ss("P2PConnection-mutex")), Z(this, "onLocalCandidate", void 0), Z(this, "remoteSDP", void 0), Z(this, "pendingCandidates", []), Z(this, "localCapabilities", void 0), Z(this, "isReady", !1), Z(this, "restartCnt", 0), Z(this, "curTurnServerIndex", 0), this.store = c, this.spec = s, this.peerConnection = new RTCPeerConnection(aw.resolvePCConfiguration(s, c.p2pTransport), { optional: [{ googDscp: !0 }] }), this.direction = p != null ? p : cl.SEND_ONLY, this.name = this.direction === cl.SEND_ONLY ? "sendP2PConnection" : "recvP2PConnection", this.statsFilter = hk(this.peerConnection, Le("STATS_UPDATE_INTERVAL"), void 0, qi() ? 1200 : void 0), this.bindPCEvents(), this.bindStatsEvents(), this.store.p2pId = this.store.p2pId + 1; + } + establish(s) { + return ye(this, null, function* () { + try { + const c = yield z$(this.filter, this.extension); + if (this.localCapabilities = uT(c), s) { + const { sdp: p } = s, m = xFe(s, OFe), T = function() { + const V = { audioCodecs: [], videoCodecs: [], audioExtensions: [], videoExtensions: [] }, G = hA(arguments.length > 2 ? arguments[2] : void 0, arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, "sendonly"), K = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, q = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, ue = { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }; + if (Zd(G, V, "videoExtensions", K, q, ue), Zd(G, V, "videoCodecs", K, q, ue), Zd(G, V, "audioExtensions", K, q, ue), Zd(G, V, "audioCodecs", K, q, ue), Le("RAISE_H264_BASELINE_PRIORITY")) { + const oe = ue.videoCodecs.findIndex((he) => he.rtpMap && he.rtpMap.encodingName.toLocaleLowerCase() === "h264" && he.fmtp && he.fmtp.parameters["profile-level-id"] === "42001f"); + if (oe !== -1) { + const he = ue.videoCodecs.findIndex((Ce) => Ce.rtpMap && Ce.rtpMap.encodingName.toLocaleLowerCase() === "h264"); + if (he < oe) { + ie.debug("raising H264 baseline profile priority"); + const Ce = ue.videoCodecs[oe]; + ue.videoCodecs.splice(oe, 1), ue.videoCodecs.splice(he, 0, Ce); + } + he !== -1 && Le("FILTER_SEND_H264_BASELINE") && (K.videoCodecs = K.videoCodecs.filter((Ce) => !(Ce.rtpMap && Ce.rtpMap.encodingName.toLocaleLowerCase() === "h264" && Ce.fmtp && Ce.fmtp.parameters["profile-level-id"] !== "42001f"))); + } + } + return { send: K, recv: q, sendrecv: ue }; + }(this.filter, this.extension, p); + this.remoteSDP = new wte({ remoteIceParameters: m.iceParameters, remoteDtlsParameters: m.dtlsParameters, candidates: [], remoteRTPCapabilities: T, localCapabilities: this.localCapabilities, direction: this.direction, setup: "actpass", videoCodec: this.store.codec, audioCodec: this.store.audioCodec }), yield this.setRemoteDescription({ type: "offer", sdp: this.remoteSDP.toString() }), this.isReady = !0; + const D = yield this.peerConnection.createAnswer(); + if (!D.sdp) + throw new Error("Cannot get answer sdp when trying to establish PeerConnection."); + const k = cp(D.sdp); + yield this.peerConnection.setLocalDescription(D); + const N = yield Tte(this.filter, this.extension, D.sdp); + this.localCapabilities = uT(N); + const U = this.peerConnection.getTransceivers()[0]; + return U != null && U.receiver && U.receiver.transport && this.tryBindTransportEvents(U.receiver.transport), S_(S_({}, k), {}, { sdp: D.sdp }); + } + { + this.peerConnection.addTransceiver("video", { direction: "sendonly" }), this.peerConnection.addTransceiver("audio", { direction: "sendonly" }); + const p = yield this.peerConnection.createOffer(); + if (!p.sdp) + throw new Error("Cannot get initialOffer.sdp when trying to establish PeerConnection."); + const m = cp(p.sdp); + return this.initialOffer = p, S_(S_({}, m), {}, { sdp: p.sdp }); + } + } catch (c) { + throw new mt(_e.GET_LOCAL_CONNECTION_PARAMS_FAILED, c.toString()); + } + }); + } + connect(s) { + return ye(this, null, function* () { + try { + if (!this.initialOffer) + throw new Error("Cannot establish P2PConnection without initial offer."); + yield this.peerConnection.setLocalDescription(this.initialOffer); + const { sdp: c, iceParameters: p, dtlsParameters: m } = s, T = yield Tte(this.filter, this.extension, c); + this.remoteSDP = new wte({ remoteIceParameters: p, remoteDtlsParameters: m, candidates: [], remoteRTPCapabilities: T, localCapabilities: this.localCapabilities, direction: this.direction, setup: "active", videoCodec: this.store.codec, audioCodec: this.store.audioCodec }), yield this.setRemoteDescription({ type: "answer", sdp: this.remoteSDP.toString() }); + const D = this.peerConnection.getTransceivers()[0]; + D != null && D.sender && D.sender.transport && this.tryBindTransportEvents(D.sender.transport); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.connect failed; ".concat(c.toString())); + } + }); + } + addRemoteCandidate(s) { + return ye(this, null, function* () { + try { + s && this.pendingCandidates.push(s), this.peerConnection.remoteDescription && this.isReady && (this.pendingCandidates.forEach((c) => { + this.peerConnection.addIceCandidate(c); + }), this.pendingCandidates = []); + } catch (c) { + throw new mt(_e.ADD_CANDIDATE_FAILED, "P2PConnection.addRemoteCandidate failed; ".concat(c.toString())); + } + }); + } + send(s, c, p) { + var m = this; + return yu(function* () { + const T = yield En(m.mutex.lock("From P2PConnection.send")); + try { + if (!m.remoteSDP) + throw new Error("Cannot call P2PConnection.send before remote SDP created"); + const D = [], k = m.remoteSDP.receive(s, c, p); + s.forEach((he, Ce) => { + if (k[Ce].needCreateTransceiver) { + const ke = m.peerConnection.addTransceiver(he._mediaStreamTrack, { direction: "sendonly" }); + D.push(ke), he._updateRtpTransceiver(ke); + } else { + const ke = m.peerConnection.getTransceivers().find((Ge) => Ge.mid === k[Ce].mid); + if (!ke) + throw new Error("cannot find transceiver when sendPeerconnection send, mid is ".concat(k[Ce].mid)); + D.push(ke), he._updateRtpTransceiver(ke); + } + }), qi() && Le("SIMULCAST") === !0 && (yield En(m.applySimulcastForFirefox(D, s))); + const N = k.map((he) => he.mid), U = yield En(m.peerConnection.createOffer()), V = m.mungSendOfferSDP(U.sdp, s, N), G = Da.parse(V), K = N.map((he) => { + const Ce = G.mediaDescriptions.find((ke) => ke.attributes.mid === he); + if (!Ce) + throw new Error("Cannot extract ssrc from mediaDescription."); + return j$(Ce, Le("USE_PUB_RTX")); + }), q = D.map((he, Ce) => { + const ke = N[Ce]; + return { localSSRC: K[Ce], id: ke }; + }); + yield En(m.peerConnection.setLocalDescription({ type: "offer", sdp: V })); + try { + yield q; + } catch (he) { + const Ce = m.remoteSDP.toString(); + throw yield En(m.peerConnection.setLocalDescription({ type: "offer", sdp: V })), yield En(m.peerConnection.setRemoteDescription({ type: "answer", sdp: Ce })), yield En(m.stopSending(N, !0)), he; + } + yield En(m.applySimulcastEncodings(D, s)), yield En(m.applySendEncodings(D, s)); + const ue = m.remoteSDP.toString(), oe = m.logSDPExchange(V, "offer", "local", "send"); + return oe == null || oe(ue), yield En(m.setRemoteDescription({ type: "answer", sdp: ue })), D.map((he, Ce) => { + const ke = N[Ce]; + return { localSSRC: K[Ce], id: ke }; + }); + } catch (D) { + throw D instanceof mt ? D : new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.send failed; ".concat(D.toString())); + } finally { + T(); + } + })(); + } + stopSending(s, c) { + return ye(this, null, function* () { + const p = c ? void 0 : yield this.mutex.lock("From P2PConnection.stopSending"); + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopSending before remote SDP created"); + const m = this.peerConnection.getTransceivers().filter((N) => s.indexOf(N.mid) !== -1); + if (m.length !== s.length) + throw new Error("Transceivers' length (".concat(m.length, ") doesn't match mids' length (").concat(s.length, ") when trying to call P2PConnection.stopSending.")); + m.map((N) => { + var U; + N.direction = "inactive", (U = N.stop) === null || U === void 0 || U.call(N); + }); + const T = yield this.peerConnection.createOffer(), D = this.logSDPExchange(T.sdp || "", "offer", "local", "stopSending"); + yield this.peerConnection.setLocalDescription(T), this.remoteSDP.stopReceiving(s); + const k = this.remoteSDP.toString(); + D == null || D(k), yield this.setRemoteDescription({ type: "answer", sdp: k }); + } catch (m) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.stopSending failed; ".concat(m.toString())); + } finally { + p && p(); + } + }); + } + receive(s, c, p, m) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.receive ".concat(s, " before remoteSDP created.")); + const { mid: T, needExchangeSDP: D } = this.remoteSDP.send(s, c, p, m); + if (D) { + const N = this.remoteSDP.toString(), U = this.logSDPExchange(N, "offer", "remote", "receive"); + yield this.setRemoteDescription({ type: "offer", sdp: N }); + const V = yield this.peerConnection.createAnswer(), G = this.mungReceiveAnswerSDP(V.sdp, T, s); + U == null || U(G || ""), yield this.peerConnection.setLocalDescription({ type: "answer", sdp: G }), ie.debug("[".concat(this.store.clientId, "] [P2PConnection] receive ").concat(s, " by exchanging SDP.")); + } else + ie.debug("[".concat(this.store.clientId, "] [P2PConnection] receive ").concat(s, " no need to exchange SDP.")); + const k = this.peerConnection.getTransceivers().find((N) => N.mid === T); + if (!k || k.mid === null) + throw new Error("Cannot get transceiver after setLocalDescription."); + return { track: k.receiver.track, mid: k.mid, transceiver: k }; + } catch (T) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.receive failed; ".concat(T.toString())); + } + }); + } + mockReceive(s, c, p, m) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.receive ".concat(s, " before remoteSDP created.")); + const { mid: T, needExchangeSDP: D } = this.remoteSDP.send(s, c, p, m); + if (D) { + const k = this.remoteSDP.toString(), N = this.logSDPExchange(k, "offer", "remote", "receive"); + yield this.setRemoteDescription({ type: "offer", sdp: k }); + const U = yield this.peerConnection.createAnswer(), V = this.mungReceiveAnswerSDP(U.sdp, T, s); + N == null || N(V || ""), yield this.peerConnection.setLocalDescription({ type: "answer", sdp: V }), ie.debug("[".concat(this.store.clientId, "] [P2PConnection] receive ").concat(s, " by exchanging SDP.")); + } else + ie.debug("[".concat(this.store.clientId, "] [P2PConnection] receive ").concat(s, " no need to exchange SDP.")); + } catch (T) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.receive failed; ".concat(T.toString())); + } + }); + } + stopReceiving(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopReceiving before remote SDP created."); + this.remoteSDP.stopSending(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "stopReceiving"); + yield this.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection stopReceiving failed; ".concat(c.toString())); + } + }); + } + restartICE(s) { + return ye(this, null, function* () { + try { + if (this.store.p2pTransport === im.Auto && (this.store.p2pTransport = im.SdRtn, _i().supportPCSetConfiguration && this.peerConnection.setConfiguration(aw.resolvePCConfiguration(this.spec, this.store.p2pTransport))), this.restartCnt > 3 && (this.restartCnt = 0, _i().supportPCSetConfiguration && this.peerConnection.setConfiguration(aw.resolvePCConfiguration(this.spec, this.store.p2pTransport, ++this.curTurnServerIndex))), !s) { + this.restartCnt++, this.isReady = !1; + const c = yield this.peerConnection.createOffer({ iceRestart: !0 }); + if (!c.sdp) + throw new Error("Cannot restartICE because restart offer SDP does not exist."); + const { iceParameters: p } = cp(c.sdp); + return this.store.descriptionStart(), this.direction === cl.SEND_ONLY && (yield this.peerConnection.setLocalDescription(c)), p; + } + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopReceiving before remote SDP created."); + if (this.remoteSDP.restartICE(s), this.store.descriptionStart(), this.direction === cl.RECEIVE_ONLY) { + this.restartCnt++, yield this.setRemoteDescription({ type: "offer", sdp: this.remoteSDP.toString() }); + const c = yield this.peerConnection.createAnswer(); + if (!c.sdp) + throw new Error("Cannot get answer sdp when trying to iceRestart."); + const { iceParameters: p } = cp(c.sdp); + return yield this.peerConnection.setLocalDescription(c), p; + } + yield this.setRemoteDescription({ type: "answer", sdp: this.remoteSDP.toString() }), this.isReady = !0; + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection stopReceiving failed; ".concat(c.toString())); + } + }); + } + close() { + var s; + this.peerConnection.close(), this.peerConnection.onicecandidate = null, (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, "closed"), this.tryUnbindTransportEvents(), this.unbindPCEvents(), this.unbindStatsEvents(), this.transport = void 0, this.statsFilter.destroy(); + } + getStats() { + return this.statsFilter.getStats(); + } + getRemoteVideoIsReady(s) { + return this.statsFilter.getVideoIsReady(s); + } + updateEncoderConfig(s, c) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.updateEncoderConfig before remote SDP created."); + const p = yield this.peerConnection.createOffer(), m = this.mungSendOfferSDP(p.sdp, [c], [s]); + this.remoteSDP.updateRecvMedia(s, c); + const T = this.remoteSDP.toString(), D = this.logSDPExchange(m, "offer", "local", "updateEncoderConfig"); + yield this.peerConnection.setLocalDescription({ type: "offer", sdp: m }), D == null || D(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (p) { + throw new mt(_e.EXCHANGE_SDP_FAILED, p.toString()); + } + }); + } + updateSendParameters(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getTransceivers().filter((m) => m.mid === s); + p.length === 1 && (this.isVP8Simulcast(c) ? qi() || (yield this.applySimulcastEncodings(p, [c])) : yield this.applySendEncodings(p, [c])); + }); + } + setStatsRemoteVideoIsReady(s, c) { + this.statsFilter.setVideoIsReady2(s, c); + } + replaceTrack(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getTransceivers().find((m) => m.mid === c); + p && (yield p.sender.replaceTrack(s._mediaStreamTrack)); + }); + } + getSelectedCandidatePair() { + return ye(this, null, function* () { + const s = this.peerConnection.getReceivers(); + if (s.length > 0 && s[0].transport && s[0].transport.iceTransport && s[0].transport.iceTransport.getSelectedCandidatePair && s[0].transport.iceTransport.getSelectedCandidatePair()) { + const c = s[0].transport.iceTransport, { local: p, remote: m } = c.getSelectedCandidatePair(); + return { local: S_(S_({}, Dg), {}, { candidateType: p.type, protocol: p.protocol, address: p.address, port: p.port }), remote: S_(S_({}, Dg), {}, { candidateType: m.type, protocol: m.protocol, address: m.address, port: m.port }) }; + } + return this.statsFilter.getSelectedCandidatePair(); + }); + } + bindPCEvents() { + this.peerConnection.oniceconnectionstatechange = () => { + var s, c; + rr(s = ["connected", "completed"]).call(s, this.peerConnection.iceConnectionState) && (this.isReady = !1), (c = this.onICEConnectionStateChange) === null || c === void 0 || c.call(this, this.peerConnection.iceConnectionState); + }, this.peerConnection.onconnectionstatechange = () => { + var s; + this.peerConnection.connectionState === "connected" && (this.restartCnt = 0), (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.connectionState); + }, this.startICECandidate(); + } + startICECandidate() { + this.peerConnection.onicecandidate || (this.localCandidateCount = 0, this.peerConnection.onicecandidate = (s) => { + if (s.candidate) { + var c; + s.candidate.candidate && (this.localCandidateAddress = s.candidate.address, (c = this.onLocalCandidate) === null || c === void 0 || c.call(this, s.candidate.toJSON())), this.localCandidateCount += 1; + } else + this.allCandidatesReceived = !0, ie.debug("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] local candidate count"), this.localCandidateCount); + }); + } + unbindPCEvents() { + this.peerConnection.oniceconnectionstatechange = null, this.peerConnection.onconnectionstatechange = null, this.peerConnection.onsignalingstatechange = null, this.peerConnection.onicecandidateerror = null, this.peerConnection.onicecandidate = null, this.peerConnection.ontrack = null; + } + static resolvePCConfiguration(s, c) { + let p = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + const m = { iceServers: [] }; + var T; + return s.iceServers ? m.iceServers = s.iceServers : s.turnServer && s.turnServer.mode !== "off" && (OC(s.turnServer.servers) ? m.iceServers = s.turnServer.servers : (m.iceServers && m.iceServers.push(...aw.turnServerConfigToIceServers(s.turnServer.servers, c, p)), Le("USE_TURN_SERVER_OF_GATEWAY") && m.iceServers && s.turnServer.serversFromGateway && m.iceServers.push(...aw.turnServerConfigToIceServers(s.turnServer.serversFromGateway, c, p)), rr(T = [im.Relay, im.SdRtn]).call(T, c) && (m.iceTransportPolicy = "relay"), Le("FORCE_TURN_TCP") ? m.iceTransportPolicy = "relay" : s.turnServer.servers.concat(s.turnServer.serversFromGateway || []).forEach((D) => { + D.forceturn && (m.iceTransportPolicy = "relay"); + }))), Le("ENABLE_ENCODED_TRANSFORM") && _i().supportWebRTCEncodedTransform && (m.encodedInsertableStreams = !0), ie.debug("P2PConnection p2pTransport is ".concat(c)), m; + } + static turnServerConfigToIceServers(s, c) { + let p = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + const m = [], T = s.filter((k) => k.tcpport); + ie.debug("P2PConnection turnServers is ".concat(T, ", current index is ").concat(p)); + const D = T.length > p ? T[p] : T[0]; + switch (c) { + case im.SdRtn: + const k = s.filter((U) => { + var V; + return rr(V = U.username).call(V, "glb:") && U.turnServerURL == U.turnServerURL; + }), N = k.length > p ? k[p] : k[0]; + N && (m.push({ username: N.username, credential: N.password, credentialType: "password", urls: "turn:".concat(a_(N.turnServerURL), ":").concat(N.tcpport, "?transport=udp") }), m.push({ username: N.username, credential: N.password, credentialType: "password", urls: "turns:".concat(a_(N.turnServerURL), ":").concat(N.tcpport, "?transport=tcp") })); + break; + case im.Relay: + D && (m.push({ username: D.username, credential: D.password, credentialType: "password", urls: "turn:".concat(D.turnServerURL, ":").concat(D.tcpport, "?transport=udp") }), m.push({ username: D.username, credential: D.password, credentialType: "password", urls: "turns:".concat(a_(D.turnServerURL), ":").concat(D.tcpport, "?transport=tcp") })); + break; + default: + D && (m.push({ username: D.username, credential: D.password, credentialType: "password", urls: "turn:".concat(D.turnServerURL, ":").concat(D.tcpport, "?transport=udp") }), m.push({ username: D.username, credential: D.password, credentialType: "password", urls: "turns:".concat(a_(D.turnServerURL), ":").concat(D.tcpport, "?transport=tcp") }), m.push({ username: D.username, credential: D.password, credentialType: "password", urls: "stun:".concat(D.turnServerURL, ":").concat(D.tcpport) })); + } + return m; + } + tryBindTransportEvents(s) { + if (s) { + this.transport = s, s.onstatechange = () => { + var p; + s != null && s.state && ((p = this.onDTLSTransportStateChange) === null || p === void 0 || p.call(this, s.state)); + }, s.onerror = (p) => { + var m; + (m = this.onDTLSTransportError) === null || m === void 0 || m.call(this, "error" in p ? p.error : p); + }; + const c = s.iceTransport; + c && (c.onstatechange = () => { + const p = s == null ? void 0 : s.iceTransport.state; + var m; + p && ((m = this.onICETransportStateChange) === null || m === void 0 || m.call(this, p)); + }, c.getSelectedCandidatePair && (c.onselectedcandidatepairchange = () => { + if (c.getSelectedCandidatePair()) { + const { local: p, remote: m } = c.getSelectedCandidatePair(); + ie.info("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] selectedcandidatepairchange: local ").concat(JSON.stringify({ candidateType: p.type, protocol: p.protocol }), ", remote ").concat(JSON.stringify({ candidateType: m.type, protocol: m.protocol, address: m.address, port: m.port }), " )")); + } + })); + } + } + tryUnbindTransportEvents() { + this.transport && (this.transport.onstatechange = null, this.transport.onerror = null, this.transport.iceTransport && (this.transport.iceTransport.onstatechange = null)); + } + updateRtpSenderEncodings(s, c) { + return ye(this, null, function* () { + var p; + if (c || (c = this.peerConnection.getSenders().find((V) => V.track === s._mediaStreamTrack)), !c) + return ie.warn("[".concat(s.getTrackId(), "] no rtpSender found}")); + if (this.isVP8Simulcast(s)) + return ie.warn("[updateRtpSenderEncodings] Track is VP8 simulcast, please apply simulcast encodings"); + if (!_i().supportSetRtpSenderParameters) + return ie.warn("[updateRtpSenderEncodings] Browser not support set rtp-sender parameters"); + const m = {}, T = {}; + switch (s._optimizationMode) { + case "motion": + m.degradationPreference = "maintain-framerate"; + break; + case "detail": + m.degradationPreference = "maintain-resolution"; + break; + default: + m.degradationPreference = "balanced"; + } + if (s._encoderConfig) { + var D; + const { bitrateMax: V, frameRate: G, scaleResolutionDownBy: K } = s._encoderConfig; + V && (T.maxBitrate = 1e3 * V), rr(D = s._hints).call(D, ua.LOW_STREAM) && (G && (T.maxFramerate = oh(G)), K && K >= 1 && (T.scaleResolutionDownBy = K)); + } + if (Le("DSCP_TYPE") && Zy()) { + var k; + const V = Le("DSCP_TYPE"); + rr(k = ["very-low", "low", "medium", "high"]).call(k, V) && (T.networkPriority = V); + } + const N = c.getParameters(), U = (p = N.encodings) === null || p === void 0 ? void 0 : p[0]; + qi() && !U && (m.encodings = [T]), U && Object.assign(U, T), Object.assign(N, m), ie.debug("[".concat(s.getTrackId(), "] updateRtpSenderEncodings: ").concat(JSON.stringify(N.encodings))), yield c.setParameters(N); + }); + } + applySendEncodings(s, c) { + return ye(this, null, function* () { + try { + if (!_i().supportSetRtpSenderParameters || s.length !== c.length) + return; + for (let p = 0; p < s.length; p++) { + const m = s[p], T = c[p]; + T instanceof In && !this.isVP8Simulcast(T) && (yield this.updateRtpSenderEncodings(T, m.sender)); + } + } catch (p) { + ie.debug("[".concat(this.store.clientId, "] Apply RTPSendEncodings failed.")); + } + }); + } + mungSendOfferSDP(s, c, p) { + const m = Da.parse(s); + return c.forEach((T, D) => { + const k = p[D], N = m.mediaDescriptions.find((U) => U.attributes.mid === k); + N && (__(N, T), V$(N, T, this.store.codec)); + }), Da.print(m); + } + bindStatsEvents() { + this.statsFilter.onFirstAudioReceived = (s) => { + var c; + (c = this.onFirstAudioReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoReceived = (s) => { + var c; + (c = this.onFirstVideoReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstAudioDecoded = (s) => { + var c; + (c = this.onFirstAudioDecoded) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoDecoded = (s, c, p) => { + var m; + (m = this.onFirstVideoDecoded) === null || m === void 0 || m.call(this, s, c, p); + }, this.statsFilter.onSelectedLocalCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedLocalCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onSelectedRemoteCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedRemoteCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onFirstVideoDecodedTimeout = (s) => { + var c; + (c = this.onFirstVideoDecodedTimeout) === null || c === void 0 || c.call(this, s); + }; + } + unbindStatsEvents() { + this.statsFilter.onFirstAudioReceived = void 0, this.statsFilter.onFirstVideoReceived = void 0, this.statsFilter.onFirstAudioDecoded = void 0, this.statsFilter.onFirstVideoDecoded = void 0, this.statsFilter.onSelectedLocalCandidateChanged = void 0, this.statsFilter.onSelectedRemoteCandidateChanged = void 0, this.statsFilter.onFirstVideoDecodedTimeout = void 0; + } + applySimulcastForFirefox(s, c) { + return ye(this, null, function* () { + if (s.length === c.length) + for (let N = 0; N < s.length; N++) { + var p, m, T, D, k; + const U = s[N], V = c[N]; + if (V instanceof In && !rr(p = V._hints).call(p, ua.LOW_STREAM) && (m = V._encoderConfig) !== null && m !== void 0 && m.bitrateMax && ((T = V._encoderConfig) === null || T === void 0 ? void 0 : T.bitrateMax) > 200 && (D = V._scalabilityMode) !== null && D !== void 0 && D.numSpatialLayers && ((k = V._scalabilityMode) === null || k === void 0 ? void 0 : k.numSpatialLayers) > 1 && this.store.codec === "vp8") { + const G = {}, K = { high: 1e3 * (V._encoderConfig.bitrateMax - 50), medium: 5e4 }; + G.encodings = [{ rid: "m", active: !0, maxBitrate: K.medium, scaleResolutionDownBy: 4 }, { rid: "h", active: !0, maxBitrate: K.high }]; + const q = U.sender.getParameters(); + yield U.sender.setParameters(Object.assign(q, G)); + } + } + }); + } + applySimulcastEncodings(s, c) { + return ye(this, null, function* () { + if (!qi() && s.length === c.length) + for (let p = 0; p < s.length; p++) { + const m = c[p]; + if (m instanceof In && this.isVP8Simulcast(m)) { + const T = s[p], D = {}, k = { high: 1e3 * (m._encoderConfig.bitrateMax - 50), medium: 5e4 }; + D.encodings = [{ active: !0, adaptivePtime: !1, networkPriority: "high", priority: "high", maxBitrate: k.high }, { active: !0, adaptivePtime: !1, networkPriority: "low", priority: "low", maxBitrate: k.medium, scaleResolutionDownBy: 4 }]; + const N = T.sender.getParameters(); + yield T.sender.setParameters(Object.assign(N, D)); + } + } + }); + } + isVP8Simulcast(s) { + var c, p, m, T, D; + return !!(s instanceof In && Le("SIMULCAST") && this.store.codec === "vp8" && !rr(c = s._hints).call(c, ua.LOW_STREAM) && (p = s._encoderConfig) !== null && p !== void 0 && p.bitrateMax && ((m = s._encoderConfig) === null || m === void 0 ? void 0 : m.bitrateMax) > 200 && (T = s._scalabilityMode) !== null && T !== void 0 && T.numSpatialLayers && ((D = s._scalabilityMode) === null || D === void 0 ? void 0 : D.numSpatialLayers) > 1); + } + logSDPExchange(s, c, p, m) { + if (Le("SDP_LOGGING")) + return ie.upload("[".concat(this.store.clientId, "] exchanging ").concat(p, " ").concat(c, " SDP during P2PConnection.").concat(m, ` +`), s), c === "offer" ? (T) => { + this.logSDPExchange(T, "answer", p === "local" ? "remote" : "local", m); + } : void 0; + } + muteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.muteLocal before remote SDP created."); + const c = this.peerConnection.getTransceivers().filter((D) => D.mid && s.indexOf(D.mid) !== -1); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length."); + c.map((D) => { + D.direction = "inactive"; + }); + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "muteLocal"); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.muteRemote(s); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.setRemoteDescription({ type: "answer", sdp: T }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.muteLocal failed; ".concat(c.toString())); + } + }); + } + unmuteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.unmuteLocal before remote SDP created."); + const c = this.peerConnection.getTransceivers().filter((D) => D.mid && s.indexOf(D.mid) !== -1); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length."); + c.map((D) => ye(this, null, function* () { + D.direction = "sendonly"; + })); + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "unmuteLocal"); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.unmuteRemote(s); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.setRemoteDescription({ type: "answer", sdp: T }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.unmuteLocal failed; ".concat(c.toString())); + } + }); + } + getRemoteSSRC(s, c) { + return ye(this, null, function* () { + var p, m; + if (c = (p = c) !== null && p !== void 0 ? p : (m = this.currentRemoteDescription) === null || m === void 0 ? void 0 : m.sdp) { + var T; + const D = (T = Da.parse(c).mediaDescriptions.find((k) => k.attributes.mid === s)) === null || T === void 0 ? void 0 : T.attributes.ssrcs; + return D == null ? void 0 : D[0].ssrcId; + } + }); + } + setRemoteDescription(s) { + return ye(this, null, function* () { + var c; + yield this.peerConnection.setRemoteDescription(s), rr(c = ["connected", "completed"]).call(c, this.peerConnection.iceConnectionState) || (this.isReady = !0, this.addRemoteCandidate()); + }); + } + mungReceiveAnswerSDP(s, c, p) { + const m = Da.parse(s), T = m.mediaDescriptions.find((D) => D.attributes.mid === c); + return T && (p === pr.AUDIO && T.media.mediaType === "audio" && up(T), this.useXR && dA(m)), Da.print(m); + } + }; + function qd(h, s, c) { + const p = h[s]; + if (typeof p != "function") + throw new Error("Cannot use mutex on object property."); + return c.value = function() { + return ye(this, arguments, function* () { + const m = this.mutex, T = yield m.lock("From P2PConnection.".concat(s)); + try { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + return yield p.apply(this, k); + } finally { + T(); + } + }); + }, c; + } + function H$(h, s) { + let c = document.createElement("video"), p = document.createElement("canvas"); + c.setAttribute("style", "display:none"), p.setAttribute("style", "display:none"), c.setAttribute("muted", ""), c.muted = !0, c.setAttribute("autoplay", ""), c.autoplay = !0, c.setAttribute("playsinline", ""), p.width = oh(s.width), p.height = oh(s.height); + const m = oh(s.framerate || 15); + document.body.append(c), document.body.append(p); + let T = h._mediaStreamTrack; + c.srcObject = new MediaStream([T]), c.play(); + const D = p.getContext("2d"); + if (!D) + throw new Je(_e.UNEXPECTED_ERROR, "can not get canvas context"); + const k = _i(), N = p.captureStream(k.supportRequestFrame ? 0 : m).getVideoTracks()[0]; + N.canvas || (N.canvas = p), p.startCapture = () => { + if (!c) + return p.stopCapture && p.stopCapture(); + if (c.paused && c.play(), c.videoHeight > 2 && c.videoWidth > 2) { + const V = c.videoWidth, G = c.videoHeight / V, K = p.width * G; + Math.abs(K - p.height) >= 2 && (ie.debug("adjust low stream resolution", "".concat(p.width, "x").concat(p.height, " -> ").concat(p.width, "x").concat(K)), p.height = K); + } + D.drawImage(c, 0, 0, p.width, p.height), N.requestFrame && N.requestFrame(), T !== h._mediaStreamTrack && (T = h._mediaStreamTrack, c.srcObject = new MediaStream([T])); + }, p.stopCapture = x5(() => p.startCapture && p.startCapture(), m); + const U = N.stop; + return N.stop = () => { + U.call(N), c && (c.remove(), c.srcObject = null, c = null), p && (p.width = 0, p.remove(), p.stopCapture && p.stopCapture(), p.startCapture = void 0, p.stopCapture = void 0, p = null), ie.debug("clean low stream renderer"); + }, N; + } + var fA, xte, fs, b_, Zs, hT, W$, vm, Jh, G$, ph; + St([qd, ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], fh.prototype, "establish", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], fh.prototype, "connect", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [String, Array, String, String]), ge("design:returntype", ot)], fh.prototype, "receive", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [String, Array, String, String]), ge("design:returntype", ot)], fh.prototype, "mockReceive", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], fh.prototype, "stopReceiving", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], fh.prototype, "restartICE", null), St([qd, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], fh.prototype, "close", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], fh.prototype, "updateEncoderConfig", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], fh.prototype, "updateSendParameters", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [Xs, String]), ge("design:returntype", ot)], fh.prototype, "replaceTrack", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], fh.prototype, "muteLocal", null), St([qd, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], fh.prototype, "unmuteLocal", null), function(h) { + h[h.HEIGHT = 2033] = "HEIGHT", h[h.FRAME_RATE = 2034] = "FRAME_RATE", h[h.WIDTH = 2035] = "WIDTH"; + }(fA || (fA = {})), function(h) { + h[h.HEIGHT = 2072] = "HEIGHT", h[h.FRAME_RATE = 2074] = "FRAME_RATE", h[h.WIDTH = 2076] = "WIDTH"; + }(xte || (xte = {})), function(h) { + h[h.FRAME_RATE = 2002] = "FRAME_RATE", h[h.WIDTH = 2003] = "WIDTH", h[h.HEIGHT = 2004] = "HEIGHT", h[h.PACKAGE_LOST = 2005] = "PACKAGE_LOST", h[h.AVG_ENCODE = 2007] = "AVG_ENCODE", h[h.NACKS = 2009] = "NACKS", h[h.PLIS = 2010] = "PLIS", h[h.FIRS = 2011] = "FIRS", h[h.BITRATE = 2012] = "BITRATE", h[h.PACKAGE_RATE = 2031] = "PACKAGE_RATE", h[h.ADAPTATION = 2032] = "ADAPTATION", h[h.ACTUAL_ENCODED = 2060] = "ACTUAL_ENCODED", h[h.BANDWIDTH = 2061] = "BANDWIDTH", h[h.RETRANSMIT = 2062] = "RETRANSMIT", h[h.TARGET_ENCODED = 2064] = "TARGET_ENCODED", h[h.TRANSMIT = 2066] = "TRANSMIT", h[h.FREEZE = 2082] = "FREEZE", h[h.DISABLED = 2095] = "DISABLED", h[h.PLAYER_STATUS = 2128] = "PLAYER_STATUS", h[h.QP_SUM = 2143] = "QP_SUM"; + }(fs || (fs = {})), function(h) { + h[h.BITRATE = 2069] = "BITRATE", h[h.PACKAGE_LOST = 2070] = "PACKAGE_LOST", h[h.PACKAGE_RATE = 2071] = "PACKAGE_RATE", h[h.HEIGHT = 2073] = "HEIGHT", h[h.FRAME_RATE = 2075] = "FRAME_RATE", h[h.WIDTH = 2077] = "WIDTH"; + }(b_ || (b_ = {})), function(h) { + h[h.JITTER = -1] = "JITTER", h[h.PACKAGE_LOST = 2014] = "PACKAGE_LOST", h[h.WIDTH = 2018] = "WIDTH", h[h.HEIGHT = 2019] = "HEIGHT", h[h.FRAME_RATE = 2020] = "FRAME_RATE", h[h.JITTER_BUFFER = 2023] = "JITTER_BUFFER", h[h.CURRENT_DELAY = 2024] = "CURRENT_DELAY", h[h.NACKS = 2026] = "NACKS", h[h.PLIS = 2027] = "PLIS", h[h.FIRS = 2028] = "FIRS", h[h.BITRATE = 2029] = "BITRATE", h[h.PACKAGE_RATE = 2078] = "PACKAGE_RATE", h[h.FREEZE = 2084] = "FREEZE", h[h.DISABLED = 2101] = "DISABLED", h[h.PLAYER_STATUS = 2129] = "PLAYER_STATUS", h[h.QP_SUM = 2144] = "QP_SUM", h[h.I_FRAME_DELAY = 2149] = "I_FRAME_DELAY"; + }(Zs || (Zs = {})), function(h) { + h[h.FRAME_RATE_DECODE = 2021] = "FRAME_RATE_DECODE", h[h.FRAME_RATE_RENDER = 2022] = "FRAME_RATE_RENDER", h[h.FREEZE_TIME = 2109] = "FREEZE_TIME", h[h.FREEZE_TIME_RENDER = 2147] = "FREEZE_TIME_RENDER"; + }(hT || (hT = {})), function(h) { + h[h.PCM_LEVEL = 2104] = "PCM_LEVEL"; + }(W$ || (W$ = {})), function(h) { + h[h.PACKAGE_LOST = -1] = "PACKAGE_LOST", h[h.LEVEL = 2038] = "LEVEL", h[h.BITRATE = 2039] = "BITRATE", h[h.PACKAGE_RATE = 2040] = "PACKAGE_RATE", h[h.AEC_RETURN_LOSS = 2041] = "AEC_RETURN_LOSS", h[h.AEC_RETURN_LOSS_ENH = 2042] = "AEC_RETURN_LOSS_ENH", h[h.FREEZE = 2081] = "FREEZE", h[h.DISABLED = 2096] = "DISABLED"; + }(vm || (vm = {})), function(h) { + h[h.BITRATE = 2044] = "BITRATE", h[h.PACKAGE_LOST = 2045] = "PACKAGE_LOST", h[h.PACKAGE_RATE = 2046] = "PACKAGE_RATE", h[h.CURRENT_DELAY = 2047] = "CURRENT_DELAY", h[h.JITTER_BUFFER = 2054] = "JITTER_BUFFER", h[h.JITTER = 2055] = "JITTER", h[h.FREEZE = 2083] = "FREEZE", h[h.DISABLED = 2102] = "DISABLED", h[h.PCM_LEVEL = 2105] = "PCM_LEVEL", h[h.PLAYER_STATUS = 2130] = "PLAYER_STATUS", h[h.CONCEALED_SAMPLES = 2148] = "CONCEALED_SAMPLES"; + }(Jh || (Jh = {})), function(h) { + h[h.FREEZE_TIME = -1] = "FREEZE_TIME", h[h.LEVEL = 2043] = "LEVEL"; + }(G$ || (G$ = {})), function(h) { + h[h.RTT = 2006] = "RTT", h[h.CONN_TYPE = 801] = "CONN_TYPE"; + }(ph || (ph = {})); + const mm = 1e3, $S = 3; + function Pn(h, s, c) { + c != null && Number.isFinite(c) && (h[s] = Math.round(Math.max(0, c))); + } + function Ate(h) { + const s = { [ph.CONN_TYPE]: 0, [ph.RTT]: h.rtt }; + switch (h.selectedCandidatePair.localCandidate.candidateType) { + case "relay": { + const c = h.selectedCandidatePair.localCandidate.relayProtocol; + c === "udp" && (s[ph.CONN_TYPE] = 1), c === "tcp" && (s[ph.CONN_TYPE] = 3), c === "tls" && (s[ph.CONN_TYPE] = 4); + break; + } + case "srflx": + s[ph.CONN_TYPE] = 2; + } + return s; + } + class Rte extends Ra { + constructor(s) { + super(), Z(this, "store", void 0), Z(this, "uploadWRTCStatsTimer", void 0), Z(this, "uploadOutboundDenoiserStatsTimer", void 0), Z(this, "uploadExtStatsTimer", void 0), Z(this, "uploadExtUsageStatsTimer", void 0), Z(this, "uploadInboundExtStatsTimer", void 0), Z(this, "requestStats", void 0), Z(this, "requestTransportStats", void 0), Z(this, "requestLocalMedia", void 0), Z(this, "requestRemoteMedia", void 0), Z(this, "requestAllTracks", void 0), Z(this, "requestVideoIsReady", void 0), Z(this, "requestUploadStats", void 0), Z(this, "requestUpload", void 0), Z(this, "uploadOutboundStarted", !1), Z(this, "uploadInboundStarted", !1), Z(this, "uploadTransportStarted", !1), Z(this, "uploadExtensionUsageStarted", !1), Z(this, "lastRecvStats", void 0), Z(this, "lastSendStats", void 0), Z(this, "lastFullRecvStats", void 0), Z(this, "lastFullSendStats", void 0), Z(this, "needUploadRenderFreezeTime", !0), this.store = s; + } + uploadWRTCStats(s) { + if (!this.requestStats || !this.requestUploadStats) + return; + let c, p; + if (this.uploadTransportStarted && (c = this.requestStats(), this.store.useP2P && (p = this.requestStats(!0))), !c && this.uploadOutboundStarted && (c = this.requestStats()), !p && this.uploadInboundStarted && (p = this.requestStats(!0)), c || p) { + const m = {}; + if (this.uploadTransportStarted && c) { + const T = this.getTransportStats(c, p, s); + T && (m.misc = [T]); + } + if (this.uploadOutboundStarted && c) { + const T = this.getOutboundStats(c, s ? this.lastSendStats : this.lastFullSendStats, s); + T && (m.outbound = [T]); + } + if (this.uploadInboundStarted && p) { + const T = this.getInboundStats(p, s ? this.lastRecvStats : this.lastFullRecvStats, s); + T && (m.inbound = T); + } + this.requestUploadStats(m); + } + this.lastRecvStats = p, this.lastSendStats = c, s || (this.lastFullRecvStats = p, this.lastFullSendStats = c); + } + startUploadWRTCStats() { + if (this.uploadWRTCStatsTimer) + return; + let s = 1; + this.uploadWRTCStatsTimer = window.setInterval(() => { + if (!this.uploadTransportStarted && !this.uploadInboundStarted && !this.uploadOutboundStarted) + return this.stopUploadWRTCStats(); + this.uploadWRTCStats(s !== $S), ++s === $S + 1 && (s = 1); + }, mm); + } + stopUploadWRTCStats() { + window.clearInterval(this.uploadWRTCStatsTimer), this.uploadWRTCStatsTimer = void 0, this.lastSendStats && (this.lastSendStats.videoSend = [], this.lastSendStats.audioSend = [], this.lastSendStats = void 0), this.lastRecvStats && (this.lastRecvStats.videoRecv = [], this.lastRecvStats.audioRecv = [], this.lastRecvStats = void 0); + } + getTransportStats(s, c, p) { + if (!this.requestStats) + return; + if (p) + return s.rtt == null ? void 0 : { addition: { [ph.RTT]: s.rtt, [ph.CONN_TYPE]: void 0 } }; + const m = Ate(s); + if (this.store.useP2P) { + if (c) { + const T = Ate(c); + m[ph.CONN_TYPE] += T[ph.CONN_TYPE] << 3; + } + m[ph.CONN_TYPE] += 110; + } else + m[ph.CONN_TYPE] += 100; + return { addition: m }; + } + getOutboundStats(s, c, p) { + if (!this.requestUploadStats || !this.requestLocalMedia) + return; + const m = this.requestLocalMedia(); + if (!m || m.length === 0) + return; + let T, D, k; + return m.forEach((N) => { + let [U, { track: V, ssrcs: G }] = N; + switch (U) { + case Mt.LocalVideoLowTrack: + case Mt.LocalVideoTrack: + if (U === Mt.LocalVideoTrack) { + const K = function(oe, he, Ce, ke, Ge) { + const tt = he.videoSend.find((Ut) => Ut.ssrc === oe); + if (!tt) + return; + const Ye = {}, { sentFrame: et, inputFrame: ht } = tt; + if (ht && et) { + const Ut = ht.frameRate, Vt = et.frameRate; + Ye[fs.FREEZE] = function(fn, Nn) { + let ha = !0; + return ha = !(fn <= 5) && (fn <= 10 ? Nn < 3 : fn <= 20 ? Nn < 4 : Nn < 5), ha; + }(Ut, Vt) ? 1 : 0; + } + if (Pn(Ye, fs.QP_SUM, tt.qpSumPerFrame), Ge) + return Ye; + switch (et && (Pn(Ye, fs.HEIGHT, et.height), Pn(Ye, fs.WIDTH, et.width), Pn(Ye, fs.FRAME_RATE, et.frameRate)), Ye[fs.DISABLED] = ke._originMediaStreamTrack && !ke._originMediaStreamTrack.enabled || ke._mediaStreamTrack && !ke._mediaStreamTrack.enabled ? 1 : 0, tt.adaptionChangeReason) { + case "none": + Ye[fs.ADAPTATION] = 0; + break; + case "cpu": + Ye[fs.ADAPTATION] = 1; + break; + case "bandwidth": + Ye[fs.ADAPTATION] = 2; + break; + case "other": + Ye[fs.ADAPTATION] = 3; + } + Ye[fs.PLAYER_STATUS] = w5[ke._player ? ke._player.videoElementStatus : "uninit"], Pn(Ye, fs.NACKS, tt.nacksCount), Pn(Ye, fs.PLIS, tt.plisCount), Pn(Ye, fs.FIRS, tt.firsCount), Pn(Ye, fs.AVG_ENCODE, tt.avgEncodeMs); + const st = Ce && Ce.videoSend.find((Ut) => Ut.ssrc === oe); + if (st) { + let Ut = Ge ? mm : mm * $S; + st.timestamp && tt.timestamp && (Ut = tt.timestamp - st.timestamp), st.packets != null && tt.packets != null && Pn(Ye, fs.PACKAGE_RATE, 1e3 * (tt.packets - st.packets) / Ut), tt.packetsLost != null && st.packetsLost != null && Pn(Ye, fs.PACKAGE_LOST, tt.packetsLost - st.packetsLost), st.bytes != null && tt.bytes != null && Pn(Ye, fs.BITRATE, 8 * (tt.bytes - st.bytes) / Ut); + } + return Ye; + }(G[0].ssrcId, s, c, V, p), q = p ? null : function(oe, he, Ce) { + const ke = he.videoSend.find((st) => st.ssrc === oe); + if (!ke) + return null; + const Ge = {}, tt = ke.inputFrame, Ye = tt && tt.height || Ce && Ce._videoHeight || 0, et = tt && tt.width || Ce && Ce._videoWidth || 0, ht = tt && tt.frameRate || 0; + return Pn(Ge, fA.HEIGHT, Ye), Pn(Ge, fA.WIDTH, et), Pn(Ge, fA.FRAME_RATE, ht), Ge; + }(G[0].ssrcId, s, V), ue = p ? null : function(oe) { + const he = {}; + return Pn(he, fs.RETRANSMIT, oe.bitrate.retransmit), Pn(he, fs.TARGET_ENCODED, oe.bitrate.targetEncoded), Pn(he, fs.ACTUAL_ENCODED, oe.bitrate.actualEncoded), Pn(he, fs.TRANSMIT, oe.bitrate.transmit), Pn(he, fs.BANDWIDTH, oe.sendBandwidth), he; + }(s); + D = Object.assign({}, K, q, ue); + } else + k = p ? void 0 : function(K, q, ue) { + const oe = q.videoSend.find((ke) => ke.ssrc === K); + if (!oe) + return; + const he = {}, Ce = oe.sentFrame; + if (Ce && (Pn(he, b_.HEIGHT, Ce.height), Pn(he, b_.WIDTH, Ce.width), Pn(he, b_.FRAME_RATE, Ce.frameRate)), ue) { + const ke = ue.videoSend.find((Ge) => Ge.ssrc === K); + if (ke) { + let Ge = mm * $S; + ke.timestamp && oe.timestamp && (Ge = oe.timestamp - ke.timestamp), ke.packets != null && oe.packets != null && Pn(he, b_.PACKAGE_RATE, 1e3 * (oe.packets - ke.packets) / Ge), oe.packetsLost != null && ke.packetsLost != null && Pn(he, b_.PACKAGE_LOST, oe.packetsLost - ke.packetsLost), ke.bytes != null && oe.bytes != null && Pn(he, b_.BITRATE, 8 * (oe.bytes - ke.bytes) / Ge); + } + } + return he; + }(G[0].ssrcId, s, c); + break; + case Mt.LocalAudioTrack: + T = p ? void 0 : function(K, q, ue, oe) { + const he = q.audioSend.find((Ye) => Ye.ssrc === K); + if (!he) + return; + const Ce = {}; + Ce[vm.DISABLED] = oe._originMediaStreamTrack && !oe._originMediaStreamTrack.enabled || oe._mediaStreamTrack && !oe._mediaStreamTrack.enabled ? 1 : 0; + const ke = oe._source.getAccurateVolumeLevel(), Ge = he.inputLevel; + Pn(Ce, vm.LEVEL, 100 * (Ge == null ? ke : Ge)), Pn(Ce, W$.PCM_LEVEL, 100 * ke), Pn(Ce, vm.AEC_RETURN_LOSS, he.aecReturnLoss), Pn(Ce, vm.AEC_RETURN_LOSS_ENH, he.aecReturnLossEnhancement), Ce[vm.FREEZE] = 0; + const tt = ue && ue.audioSend.find((Ye) => Ye.ssrc === K); + if (tt) { + let Ye = mm * $S; + tt.timestamp && he.timestamp && (Ye = he.timestamp - tt.timestamp), tt.bytes != null && he.bytes != null && Pn(Ce, vm.BITRATE, 8 * (he.bytes - tt.bytes) / Ye), tt.packets != null && he.packets != null && Pn(Ce, vm.PACKAGE_RATE, 1e3 * (he.packets - tt.packets) / Ye); + } + return Ce; + }(G[0].ssrcId, s, c, V); + } + }), { high: D, low: k, audio: T }; + } + getInboundStats(s, c, p) { + if (!this.requestRemoteMedia) + return; + const m = this.requestRemoteMedia() || [], T = []; + return m.forEach((D) => { + let [k, N] = D; + const U = { peer: k.uid }; + if (N.has(pr.VIDEO) && k.videoTrack) { + const V = k._videoSSRC && this.requestVideoIsReady && this.requestVideoIsReady(k._videoSSRC) || !1, G = k.videoTrack ? function(K, q, ue, oe, he, Ce, ke) { + const Ge = q.videoRecv.find((Ut) => Ut.ssrc === K); + if (!Ge) + return; + const tt = {}, { receivedFrame: Ye, outputFrame: et, decodeFrameRate: ht } = Ge, st = ue && ue.videoRecv.find((Ut) => Ut.ssrc === K); + if (tt[Zs.FREEZE] = he && pA.isRemoteVideoFreeze(oe, Ge, st) ? 1 : 0, Pn(tt, hT.FRAME_RATE_DECODE, ht), Pn(tt, Zs.QP_SUM, Ge.qpSumPerFrame), Ge.framesRateFirefox && Pn(tt, Zs.FRAME_RATE, Ge.framesRateFirefox), Ye && Pn(tt, Zs.FRAME_RATE, Ye.frameRate), st) { + const Ut = q.timestamp - ue.timestamp || (ke ? mm : $S * mm); + Ge.packetsLost != null && st.packetsLost != null && Pn(tt, Zs.PACKAGE_LOST, Ge.packetsLost - st.packetsLost), st.bytes != null && Ge.bytes != null && Pn(tt, Zs.BITRATE, 8 * (Ge.bytes - st.bytes) / Ut), st.packets != null && Ge.packets != null && Pn(tt, Zs.PACKAGE_RATE, 1e3 * (Ge.packets - st.packets) / Ut); + } + if (ke) + return tt; + if (Ye ? (Pn(tt, Zs.HEIGHT, Ye.height), Pn(tt, Zs.WIDTH, Ye.width)) : oe && (Pn(tt, Zs.HEIGHT, oe._videoHeight || 0), Pn(tt, Zs.WIDTH, oe._videoWidth || 0)), et && Pn(tt, hT.FRAME_RATE_RENDER, et.frameRate), Pn(tt, Zs.JITTER_BUFFER, Ge.jitterBufferMs), Pn(tt, Zs.CURRENT_DELAY, Ge.currentDelayMs), Pn(tt, Zs.FIRS, Ge.firsCount), Pn(tt, Zs.NACKS, Ge.nacksCount), Pn(tt, Zs.PLIS, Ge.plisCount), oe) { + tt[Zs.DISABLED] = oe._originMediaStreamTrack.enabled && oe._mediaStreamTrack.enabled ? 0 : 1; + const Ut = oe._player; + if (Ut) { + const { freezeTimeCounterList: Vt, renderFreezeAccTime: fn } = Ut; + if (Vt && Vt.length > 0 && Pn(tt, hT.FREEZE_TIME, Vt.splice(0, 1)[0]), Ce && um.visibility === "visible") { + const Nn = Math.min(6e3, fn); + Ut.renderFreezeAccTime = Math.max(0, fn - Nn), Pn(tt, hT.FREEZE_TIME_RENDER, Nn); + } + } + } + if (tt[Zs.PLAYER_STATUS] = w5[oe._player ? oe._player.videoElementStatus : "uninit"], st && Ge.totalInterFrameDelay !== void 0 && Ge.totalSquaredInterFrameDelay !== void 0 && st.totalInterFrameDelay !== void 0 && st.totalSquaredInterFrameDelay !== void 0) { + const Ut = Ge.totalInterFrameDelay - st.totalInterFrameDelay, Vt = Ge.totalSquaredInterFrameDelay - st.totalSquaredInterFrameDelay, fn = Ge.framesDecodeCount - st.framesDecodeCount, Nn = Ut / fn * 1e3, ha = Math.round(1e3 * Math.sqrt((Vt - Math.pow(Ut, 2) / fn) / fn)); + !isNaN(ha) && Nn + ha > Math.max(3 * Nn, Nn + 150) && (tt[Zs.I_FRAME_DELAY] = ha); + } + return tt; + }(k._videoSSRC, s, c, k.videoTrack, V === !0, this.needUploadRenderFreezeTime, p) : void 0; + G && (U.video = G); + } + if (N.has(pr.AUDIO) && k.audioTrack) { + const V = k.audioTrack ? function(G, K, q, ue, oe) { + const he = K.audioRecv.find((Ut) => Ut.ssrc === G); + if (!he) + return; + const Ce = {}, ke = q && q.audioRecv.find((Ut) => Ut.ssrc === G), { receivedFrames: Ge, droppedFrames: tt } = he; + var Ye, et; + if (Pn(Ce, Jh.JITTER, he.jitterMs), Ge != null && tt != null && (Ce[Jh.FREEZE] = (et = tt, (Ye = Ge) === 0 || 100 * et / Ye > 20 ? 1 : 0)), ke) { + const Ut = K.timestamp - q.timestamp || (oe ? mm : mm * $S); + he.packets != null && ke.packets != null && Pn(Ce, Jh.PACKAGE_RATE, 1e3 * (he.packets - ke.packets) / Ut), ke.bytes != null && he.bytes != null && Pn(Ce, Jh.BITRATE, 8 * (he.bytes - ke.bytes) / Ut), he.packetsLost != null && ke.packetsLost != null && Pn(Ce, Jh.PACKAGE_LOST, he.packetsLost - ke.packetsLost); + } + if (oe) + return Ce; + const ht = ue._source.getAccurateVolumeLevel(), st = he.outputLevel; + if (Pn(Ce, G$.LEVEL, 100 * (st == null ? ht : st)), Pn(Ce, Jh.PCM_LEVEL, 100 * ht), ue && (Ce[Jh.DISABLED] = ue._originMediaStreamTrack.enabled && ue._mediaStreamTrack.enabled ? 0 : 1), Pn(Ce, Jh.JITTER_BUFFER, he.jitterBufferMs), Pn(Ce, Jh.CURRENT_DELAY, he.jitterBufferMs), Ce[Jh.PLAYER_STATUS] = w5[hc.getPlayerState(ue.getTrackId())], ke) { + const Ut = he.concealedSamples - ke.concealedSamples; + Ut > 0 && Pn(Ce, Jh.CONCEALED_SAMPLES, Ut); + } + return Ce; + }(k._audioSSRC, s, c, k.audioTrack, p) : void 0; + V && (U.audio = V); + } + (U.video || U.audio) && T.push(U); + }), this.needUploadRenderFreezeTime = !this.needUploadRenderFreezeTime, T; + } + startUploadTransportStats() { + this.uploadTransportStarted = !0, this.uploadWRTCStatsTimer || this.startUploadWRTCStats(); + } + stopUploadTransportStats() { + this.uploadTransportStarted = !1; + } + startUploadOutboundStats() { + this.uploadOutboundStarted || (this.uploadOutboundStarted = !0, this.uploadWRTCStatsTimer || this.startUploadWRTCStats(), this.uploadOutboundDenoiserStatsTimer && window.clearInterval(this.uploadOutboundDenoiserStatsTimer), this.uploadOutboundDenoiserStatsTimer = window.setInterval(() => { + if (!this.requestAllTracks || !this.requestUpload) + return; + const s = (this.requestAllTracks() || []).find((c) => c instanceof cm); + if (s && s._external.getDenoiserStats) { + const c = s._external.getDenoiserStats(); + c && this.requestUpload(am.DENOISER_STATS, c); + } + }, 2e3), this.uploadExtStatsTimer && window.clearInterval(this.uploadExtStatsTimer), this.uploadExtStatsTimer = window.setInterval(() => { + !this.requestAllTracks || !this.requestUpload || this.requestAllTracks().forEach((s) => { + s.getProcessorStats().forEach((c) => { + this.requestUpload && this.requestUpload(c.type, c.stats); + }); + }); + }, 2e3)); + } + stopUploadOutboundStats() { + this.uploadOutboundStarted && (this.uploadOutboundStarted = !1, this.lastSendStats && (this.lastSendStats.videoSend = [], this.lastSendStats.audioSend = [], this.lastSendStats = void 0), this.uploadOutboundDenoiserStatsTimer && window.clearInterval(this.uploadOutboundDenoiserStatsTimer), this.uploadOutboundDenoiserStatsTimer = void 0); + } + startUploadInboundStats() { + this.uploadInboundStarted || (this.uploadInboundStarted = !0, this.uploadWRTCStatsTimer || this.startUploadWRTCStats(), this.uploadInboundExtStatsTimer && window.clearInterval(this.uploadInboundExtStatsTimer), this.uploadInboundExtStatsTimer = window.setInterval(() => { + !this.requestUpload || !this.requestRemoteMedia || (this.requestRemoteMedia() || []).forEach((s) => { + let [c, p] = s; + p.has(pr.VIDEO) && c.videoTrack && c.videoTrack.getProcessorStats().forEach((m) => { + this.requestUpload && this.requestUpload(m.type, m.stats); + }), p.has(pr.AUDIO) && c.audioTrack && c.audioTrack.getProcessorStats().forEach((m) => { + this.requestUpload && this.requestUpload(m.type, m.stats); + }); + }); + }, 2e3)); + } + stopUploadInboundStats() { + this.uploadInboundStarted && (this.uploadInboundStarted = !1, this.lastRecvStats && (this.lastRecvStats.videoRecv = [], this.lastRecvStats.audioRecv = [], this.lastRecvStats = void 0)); + } + startUploadExtensionUsageStats() { + if (this.uploadExtensionUsageStarted) + return; + this.uploadExtensionUsageStarted = !0, this.uploadExtUsageStatsTimer && window.clearInterval(this.uploadExtUsageStatsTimer); + const s = /* @__PURE__ */ new Map(); + this.uploadExtUsageStatsTimer = window.setInterval(() => ye(this, null, function* () { + const c = Date.now(), p = { connectionInterval: Le("EXTENSION_USAGE_UPLOAD_INTERVAL") / 1e3, details: [], lts: c }; + let m = []; + const T = this.requestAllTracks && this.requestAllTracks() || []; + for (const U of T) + !U.muted && U.enabled && (m = m.concat(yield U.getProcessorUsage())); + const D = this.requestRemoteMedia && this.requestRemoteMedia() || []; + for (const [U, V] of D) + V.has(pr.VIDEO) && U.videoTrack && (m = m.concat(yield U.videoTrack.getProcessorUsage())), V.has(pr.AUDIO) && U.audioTrack && (m = m.concat(yield U.audioTrack.getProcessorUsage())); + if (m.length === 0) + return; + p.details = function(U, V) { + const G = {}; + for (const { id: oe, value: he, level: Ce, direction: ke } of U) { + var K; + const Ge = (K = V.get(oe)) !== null && K !== void 0 ? K : 0, tt = he === 2 ? Ge + Le("EXTENSION_USAGE_UPLOAD_INTERVAL") / 1e3 : Ge; + var q, ue; + V.set(oe, tt), G[oe] ? (he === 2 && (G[oe].value = he), Ce > G[oe].level && (G[oe].level = Ce), ke === "remote" && (G[oe].remoteUidCount += 1), G[oe].totalTs = (q = V.get(oe)) !== null && q !== void 0 ? q : 0) : G[oe] = { value: he, level: Ce, remoteUidCount: ke === "local" ? 0 : 1, totalTs: (ue = V.get(oe)) !== null && ue !== void 0 ? ue : 0 }; + } + return Object.keys(G).map((oe) => { + const { level: he, value: Ce, totalTs: ke } = G[oe]; + return { id: oe, level: he, value: Ce, totalTs: ke }; + }); + }(m, s); + const k = Date.now(), N = k > c ? k : c + 1; + this.requestUpload && this.requestUpload(am.EXTENSION_USAGE_STATS, { usageStats: p, sendTs: N }); + }), Le("EXTENSION_USAGE_UPLOAD_INTERVAL")); + } + stopUploadExtensionUsageStats() { + this.uploadExtensionUsageStarted && (this.uploadExtensionUsageStarted = !1, this.uploadExtUsageStatsTimer && window.clearInterval(this.uploadExtUsageStatsTimer), this.uploadExtUsageStatsTimer = void 0); + } + } + class Ns { + get hasVideo() { + return this._video_enabled_ && !this._video_muted_ && this._video_added_; + } + get hasAudio() { + return this._audio_enabled_ && !this._audio_muted_ && this._audio_added_; + } + get audioTrack() { + if (this.hasAudio || this._audio_pre_subscribed) + return this._audioTrack; + } + get videoTrack() { + if (this.hasVideo || this._video_pre_subscribed) + return this._videoTrack; + } + get dataChannels() { + return this._dataChannels; + } + constructor(s, c) { + Z(this, "uid", void 0), Z(this, "_uintid", void 0), Z(this, "_trust_in_room_", !0), Z(this, "_trust_audio_enabled_state_", !0), Z(this, "_trust_video_enabled_state_", !0), Z(this, "_trust_audio_mute_state_", !0), Z(this, "_trust_video_mute_state_", !0), Z(this, "_audio_muted_", !1), Z(this, "_video_muted_", !1), Z(this, "_audio_enabled_", !0), Z(this, "_video_enabled_", !0), Z(this, "_audio_added_", !1), Z(this, "_video_added_", !1), Z(this, "_is_pre_created", !1), Z(this, "_video_pre_subscribed", !1), Z(this, "_audio_pre_subscribed", !1), Z(this, "_trust_video_stream_added_state_", !0), Z(this, "_trust_audio_stream_added_state_", !0), Z(this, "_audioTrack", void 0), Z(this, "_videoTrack", void 0), Z(this, "_dataChannels", []), Z(this, "_audioSSRC", void 0), Z(this, "_videoSSRC", void 0), Z(this, "_audioOrtc", void 0), Z(this, "_videoOrtc", void 0), Z(this, "_cname", void 0), Z(this, "_rtxSsrcId", void 0), Z(this, "_videoMid", void 0), Z(this, "_audioMid", void 0), this.uid = s, this._uintid = c; + } + } + var Qh; + function MFe(h, s) { + var c; + let p; + switch (s) { + case Mt.LocalAudioTrack: + p = Ci.Audio; + break; + case Mt.LocalVideoTrack: + p = rr(c = h._hints).call(c, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalVideoLowTrack: + p = Ci.Low; + } + return p; + } + function Y$(h) { + const s = _i(); + if (h.some((c) => c._bypassWebAudio)) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio"); + if (!s.webAudioMediaStreamDest) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks because your browser does not support audio mixing"); + } + function X$(h, s) { + Y$(h); + const c = s || new Uo(); + return h.forEach((p) => c.addAudioTrack(p)), c; + } + function Dte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function pk(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Dte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Dte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + (function(h) { + h.SEND_ONLY = "SEND_ONLY", h.RECEIVE_ONLY = "RECEIVE_ONLY"; + })(Qh || (Qh = {})); + class ts extends Ra { + get state() { + return this._state; + } + set state(s) { + const c = this._state; + this._state = s, this.emit(Nr.StateChange, c, this._state); + } + constructor(s, c) { + super(), Z(this, "store", void 0), Z(this, "statsUploader", void 0), Z(this, "sendConnection", void 0), Z(this, "recvConnection", void 0), Z(this, "localTrackMap", /* @__PURE__ */ new Map()), Z(this, "remoteUserMap", /* @__PURE__ */ new Map()), Z(this, "localDataChannels", []), Z(this, "pendingLocalTracks", []), Z(this, "pendingRemoteTracks", []), Z(this, "statsCollector", void 0), Z(this, "dtlsFailedCount", 0), Z(this, "sendMutex", new Ss("P2PChannel2-send-mutex")), Z(this, "recvMutex", new Ss("P2PChannel2-recv-mutex")), Z(this, "_state", Ai.Disconnected), Z(this, "_restartStates", ["disconnected", "failed"]), Z(this, "reconnectInterval", void 0), Z(this, "uploadUnplinkStarted", !1), Z(this, "uploadDownlinkStarted", !1), Z(this, "uplinkStateUploadInterval", void 0), Z(this, "downlinkStatsUploadInterval", void 0), Z(this, "handleMuteLocalTrack", (p, m, T) => ye(this, null, function* () { + const D = yield this.sendMutex.lock("Locking from P2PChannel2.handleMuteLocalTrack"); + try { + if (!this.sendConnection || this.state !== Ai.Connected) + return void T(new mt(_e.INVALID_OPERATION, "Cannot call P2PChannel2.handleMuteLocalTrack before sendConnection established.")); + const U = this.filterTobeMutedTracks(p); + if (U.length === 0) + return void m(); + const V = U.find((ue) => ue[0] === "videoLowTrack"); + V && V[1].track._originMediaStreamTrack.stop(), yield this.sendConnection.muteLocal(U.map((ue) => { + let [, { id: oe }] = ue; + return oe; + })); + let G = !1; + var k, N; + p.trackMediaType === "video" ? G = !((k = this.localTrackMap.get(Mt.LocalAudioTrack)) === null || k === void 0 || !k.track._muted) : G = ((N = this.localTrackMap.get(Mt.LocalVideoTrack)) === null || N === void 0 ? void 0 : N.id) === void 0; + const K = this.createMuteMessage(U); + yield Ji(this, Nr.RequestMuteLocal, K); + const q = p.trackMediaType === "video" ? bg.MUTE_LOCAL_VIDEO : bg.MUTE_LOCAL_AUDIO; + yield Ji(this, Nr.RequestP2PMuteLocal, { action: q, message: K, isMuteAll: G }), m(); + } catch (U) { + T(U); + } finally { + D(); + } + })), Z(this, "handleUnmuteLocalTrack", (p, m, T) => ye(this, null, function* () { + const D = yield this.sendMutex.lock("Locking from P2PChannel2.handleUnmuteLocalTrack"); + try { + if (!this.sendConnection || this.state !== Ai.Connected) + return void T(new mt(_e.INVALID_OPERATION, "Cannot call P2PChannel2.handleUnmuteLocalTrack before sendConnection established.")); + const k = this.filterTobeUnmutedTracks(p); + if (k.length === 0) + return void m(); + yield this.sendConnection.unmuteLocal(k.map((V) => { + let [, { id: G }] = V; + return G; + })); + const N = this.createUnmuteMessage(k), U = p.trackMediaType === "video" ? bg.UNMUTE_LOCAL_VIDEO : bg.UNMUTE_LOCAL_AUDIO; + yield Ji(this, Nr.RequestP2PMuteLocal, { action: U, message: N }), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleUpdateVideoEncoder", (p, m, T) => ye(this, null, function* () { + const D = yield this.sendMutex.lock("Locking from P2PChannel2.handleSetVideoEncoder"); + try { + const k = this.localTrackMap.get(Mt.LocalVideoTrack); + if (!this.sendConnection || !k || k.track !== p || this.state !== Ai.Connected) + return void m(); + const { id: N, track: U } = k; + N && (yield this.sendConnection.updateSendParameters(N, U), yield this.sendConnection.updateEncoderConfig(N, U), this.emit(Nr.UpdateVideoEncoder, U)), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleSetOptimizationMode", (p, m, T) => ye(this, null, function* () { + const D = yield this.sendMutex.lock("Locking from P2PChannel2.handleSetOptimizationMode"); + try { + const k = this.localTrackMap.get(Mt.LocalVideoTrack); + if (!this.sendConnection || !k || k.track !== p || this.state !== Ai.Connected) + return; + const { id: N, track: U } = k; + N && (yield this.sendConnection.updateSendParameters(N, U)), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleReplaceTrack", (p, m, T, D) => ye(this, null, function* () { + let k; + ie.debug("[".concat(this.store.clientId, "] P2PChannel2 handleReplaceTrack for [track-id-").concat(p.getTrackId(), "]")), typeof D == "boolean" && D || (k = yield this.sendMutex.lock("From P2PChannel2.handleReplaceTrack")); + try { + var N; + const V = Array.from(this.localTrackMap.entries()).find((G) => { + let [, { track: K }] = G; + return p === K; + }); + if (!this.sendConnection || !V || V[1].id === void 0 || this.state !== Ai.Connected) + return void m(); + if (yield (N = this.sendConnection) === null || N === void 0 ? void 0 : N.replaceTrack(p, V[1].id), V[0] === Mt.LocalVideoTrack && _i().supportDualStreamEncoding) { + const G = this.localTrackMap.get(Mt.LocalVideoLowTrack); + if (G) { + const K = p._mediaStreamTrack.clone(); + G.track._originMediaStreamTrack.stop(), G.track._mediaStreamTrack = K, G.track._originMediaStreamTrack = K, yield new ot((q, ue) => { + this.handleReplaceTrack(G.track, q, ue, !0); + }); + } + } + m(); + } catch (V) { + T(V); + } finally { + var U; + (U = k) === null || U === void 0 || U(); + } + })), Z(this, "handleGetLocalVideoStats", (p) => { + p(this.statsCollector.getLocalVideoTrackStats()); + }), Z(this, "handleGetLocalAudioStats", (p) => { + p(this.statsCollector.getLocalAudioTrackStats()); + }), Z(this, "handleGetRemoteVideoStats", (p) => this.statsCollector.getRemoteVideoTrackStats(p.uid)[p.uid]), Z(this, "handleGetRemoteAudioStats", (p) => this.statsCollector.getRemoteAudioTrackStats(p.uid)[p.uid]), this.store = s, this.statsCollector = c, this.statsCollector.addP2PChannel(this), this.statsUploader = new Rte(s), this.bindStatsUploaderEvents(), this.reconnectInterval = window.setInterval(() => { + [this.sendConnection, this.recvConnection].forEach((p) => { + p && (p.iceConnectionState !== "disconnected" && p.iceConnectionState !== "failed" || this.handleDisconnect(p.direction)); + }); + }, Le("ICE_RESTART_INTERVAL")); + } + startP2PConnection(s, c) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support startP2PConnection."); + }); + } + connect(s, c, p, m, T, D) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support connect."); + }); + } + startP2P(s, c) { + return ye(this, null, function* () { + let p; + try { + if (c) { + this.recvConnection && (ie.warning("[".concat(this.store.clientId, "] P2PChannel.startP2P reset recvConnection.")), this.recvConnection.close(), this.unbindConnectionEvents(this.recvConnection)), p = yield this.recvMutex.lock("From P2PChannel.startP2P"), this.recvConnection = new fh(s, this.store, cl.RECEIVE_ONLY), this.bindConnectionEvents(this.recvConnection); + const m = yield this.recvConnection.establish(c); + return { iceParameters: m.iceParameters, dtlsParameters: m.dtlsParameters, sdp: m.sdp }; + } + { + this.state = Ai.New, this.sendConnection && (ie.warning("[".concat(this.store.clientId, "] P2PChannel.startP2P reset sendConnection.")), this.sendConnection.close(), this.unbindConnectionEvents(this.sendConnection)), p = yield this.sendMutex.lock("From P2PChannel.startP2P"), this.sendConnection = new fh(s, this.store), this.store.peerConnectionStart(), this.bindConnectionEvents(this.sendConnection); + const m = yield this.sendConnection.establish(); + return { iceParameters: m.iceParameters, dtlsParameters: m.dtlsParameters, sdp: m.sdp }; + } + } finally { + p && p(); + } + }); + } + p2pConnect(s) { + return ye(this, null, function* () { + if (!this.sendConnection) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot P2PChannel2.p2pConnect before P2PChannel2.startP2PConnection ."); + this.store.peerConnectionStart(), yield this.sendConnection.connect(s), this.statsUploader.startUploadTransportStats(), this.statsUploader.startUploadExtensionUsageStats(), this.state = Ai.Connected; + }); + } + addRemoteCandidate(s, c) { + return ye(this, null, function* () { + if (c === cl.RECEIVE_ONLY) { + if (!this.sendConnection) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot P2PChannel2.connect before P2PChannel2.addRemoteCandidate ."); + yield this.sendConnection.addRemoteCandidate(s); + } else { + if (!this.recvConnection) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot P2PChannel2.connect before P2PChannel2.addRemoteCandidate ."); + yield this.recvConnection.addRemoteCandidate(s); + } + }); + } + publish(s, c, p) { + var m = this; + return yu(function* () { + const T = yield En(m.sendMutex.lock("From P2PChannel.publish")); + try { + if (!m.sendConnection || m.state !== Ai.Connected) { + m.throwIfTrackTypeNotMatch(s); + const V = s.filter((G) => m.pendingLocalTracks.indexOf(G) === -1); + return void (m.pendingLocalTracks = m.pendingLocalTracks.concat(V)); + } + m.store.pubId = m.store.pubId + 1, Ks.markPublishStart(m.store.clientId, m.store.pubId); + const D = m.filterTobePublishedTracks(s, c, p); + if (D.length === 0) + return void (yield En(m.tryToUnmuteAudio(s))); + D.forEach((V) => { + let { track: G, type: K } = V; + const q = Date.now(); + m.store.publish(G.getTrackId(), K === Mt.LocalAudioTrack ? "audio" : "video", q); + }), m.bindLocalTrackEvents(D); + const k = yield En(m.sendConnection.send(D.map((V) => { + let { track: G } = V; + return G; + }), m.store.codec, m.store.audioCodec)), N = (yield En(k.next())).value, U = m.createGatewayPublishMessage(D, N); + try { + yield U; + } catch (V) { + throw k.throw(V), (V == null ? void 0 : V.code) === _e.WS_ABORT && D.forEach((G) => { + let { track: K } = G; + m.pendingLocalTracks.indexOf(K) === -1 && m.pendingLocalTracks.push(K); + }), m.unbindLocalTrackEvents(D), V; + } + yield En(k.next()), D.forEach((V) => { + let { type: G } = V; + m.statsCollector.addLocalStats(G); + }), m.statsUploader.startUploadOutboundStats(), m.assignLocalTracks(D, N), D.forEach((V) => { + let { track: G, type: K } = V; + const q = Date.now(); + m.store.publish(G.getTrackId(), K === Mt.LocalAudioTrack ? "audio" : "video", void 0, q); + }), m.startUploadUplinkState(); + } finally { + T(); + } + })(); + } + unpublish(s) { + return ye(this, null, function* () { + if (!this.sendConnection || this.state !== Ai.Connected) + return void (s.length === 0 ? this.pendingLocalTracks.length = 0 : this.pendingLocalTracks = this.pendingLocalTracks.filter((T) => !rr(s).call(s, T))); + const c = this.filterTobeUnpublishedTracks(s); + if (c.length === 0) + return; + const p = c.find((T) => T[0] === "videoLowTrack"); + p && p[1].track.close(); + const m = this.createGatewayUnpublishMessage(c); + if (yield this.sendConnection.stopSending(c.map((T) => { + let [, { id: D }] = T; + return D; + })), this.withdrawLocalTracks(c), this.unbindLocalTrackEvents(c.map((T) => { + let [D, { track: k }] = T; + return { type: D, track: k }; + })), c.forEach((T) => { + let [D] = T; + this.statsCollector.removeLocalStats(D); + }), this.localTrackMap.size === 0 && (this.statsUploader.stopUploadOutboundStats(), this.stopUploadUplinkState()), this.sendConnection && this.state === Ai.Connected) + return p && p[1].track.close(), m; + s.forEach((T) => { + const D = this.pendingLocalTracks.indexOf(T); + D !== -1 && this.pendingLocalTracks.splice(D, 1); + }); + }); + } + startUploadUplinkState() { + if (this.uploadUnplinkStarted) + return; + this.uploadUnplinkStarted = !0, this.uplinkStateUploadInterval && window.clearInterval(this.uplinkStateUploadInterval); + const s = () => { + const c = [], p = []; + Array.from(this.localTrackMap.entries()).forEach((m) => { + let [T, { track: D, ssrcs: k }] = m; + const N = { stream_type: MFe(D, T), ssrcs: k }; + D._muted || !D._enabled ? c.push(N) : p.push(N); + }), c.length > 0 && c.forEach((m) => { + Ji(this, Nr.RequestMuteLocal, [m]); + }), p.length > 0 && p.forEach((m) => { + Ji(this, Nr.RequestUnmuteLocal, [m]); + }); + }; + s(), this.uplinkStateUploadInterval = window.setInterval(() => { + s(); + }, 3e3); + } + stopUploadUplinkState() { + this.uploadUnplinkStarted && (this.uploadUnplinkStarted = !1, this.uplinkStateUploadInterval && window.clearInterval(this.uplinkStateUploadInterval)); + } + publishLowStream(s) { + return yu(function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support publishLowStream."); + })(); + } + republish() { + return ye(this, null, function* () { + this.pendingLocalTracks.length > 0 && (ie.debug("[".concat(this.store.clientId, "] Emit P2PChannelEvents.RequestRePublish to republish tracks.")), yield Ro(this, Nr.RequestRePublish, this.pendingLocalTracks), this.emit(Nr.MediaReconnectEnd, this.store.uid), this.pendingLocalTracks = []); + }); + } + unpublishLowStream() { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support unpublishLowStream."); + }); + } + subscribe(s, c, p, m) { + return ye(this, null, function* () { + var T; + if (!this.recvConnection) + throw new mt(_e.INVALID_OPERATION, "Cannot subscribe remote user when recvConnection disconnected."); + if ((T = this.remoteUserMap.get(s)) !== null && T !== void 0 && T.has(c)) + return; + const { track: D, mid: k, transceiver: N } = yield this.recvConnection.receive(c, [{ ssrcId: p }], String(s.uid), m); + c === pr.AUDIO ? (s._audioTrack ? s._audioTrack._updateOriginMediaStreamTrack(D) : (s._audioTrack = new jd(D, s.uid, s._uintid, this.store), ie.info("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, "] create remote audio track: ").concat(s._audioTrack.getTrackId()))), N && s._audioTrack._updateRtpTransceiver(N), this.bindRemoteTrackEvents(s, s._audioTrack)) : (s._videoSSRC = p, s._videoTrack ? s._videoTrack._updateOriginMediaStreamTrack(D) : (s._videoTrack = new Cg(D, s.uid, s._uintid, this.store), ie.info("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, "] create remote video track: ").concat(s._videoTrack.getTrackId()))), N && s._videoTrack._updateRtpTransceiver(N), this.bindRemoteTrackEvents(s, s._videoTrack)); + const U = this.remoteUserMap.get(s); + U ? U.set(c, k) : this.remoteUserMap.set(s, /* @__PURE__ */ new Map([[c, k]])), this.statsCollector.addRemoteStats(s.uid), this.statsUploader.startUploadInboundStats(), this.startUploadDownlinkState(); + const V = this.pendingRemoteTracks.findIndex((G) => { + let { user: K, kind: q } = G; + return K.uid === s.uid && c === q; + }); + V !== -1 && (this.pendingRemoteTracks.splice(V, 1), this.emit(Nr.MediaReconnectEnd, s.uid)); + }); + } + mockSubscribe(s, c, p, m) { + return ye(this, null, function* () { + if (!this.recvConnection) + throw new mt(_e.INVALID_OPERATION, "Cannot subscribe remote user when recvConnection disconnected."); + yield this.recvConnection.mockReceive(c, [{ ssrcId: p }], String(s.uid), m); + }); + } + unsubscribe(s, c, p) { + return ye(this, null, function* () { + const m = this.pendingRemoteTracks.filter((D) => { + let { user: k, kind: N } = D; + return c !== void 0 ? k.uid === s.uid && c === N : k.uid === s.uid; + }); + if (m.forEach((D) => { + const k = this.pendingRemoteTracks.indexOf(D); + this.pendingRemoteTracks.splice(k, 1); + }), this.recvConnection || p || m.forEach((D) => { + let { kind: k } = D; + var N; + if (k === pr.AUDIO) + (N = s._audioTrack) === null || N === void 0 || N._destroy(), s._audioTrack = void 0; + else if (k === pr.VIDEO) { + var U; + (U = s._videoTrack) === null || U === void 0 || U._destroy(), s._videoTrack = void 0; + } + }), !this.recvConnection) + return; + const T = this.filterTobeUnSubscribedTracks(s, c); + T.length !== 0 && (yield this.recvConnection.stopReceiving(T.map((D) => { + let [, { id: k }] = D; + return k; + })), this.withdrawRemoteTracks(T), this.remoteUserMap.size === 0 && (this.statsUploader.stopUploadInboundStats(), this.stopUploadDownlinkState()), T.forEach((D) => { + let [k, { kind: N }] = D; + var U, V; + if (N === pr.VIDEO && k._videoSSRC && ((U = this.recvConnection) === null || U === void 0 || U.setStatsRemoteVideoIsReady(k._videoSSRC, !1)), N === pr.VIDEO) + this.unbindRemoteTrackEvents(k._videoTrack), p || ((V = k._videoTrack) === null || V === void 0 || V._destroy(), k._videoTrack = void 0); + else if (N === pr.AUDIO) { + var G; + this.unbindRemoteTrackEvents(k._audioTrack), !p && ((G = k._audioTrack) === null || G === void 0 || G._destroy(), k._audioTrack = void 0); + } + }), T.forEach((D) => { + let [, { kind: k }] = D; + Ji(this, Nr.RequestP2PMuteRemote, k); + })); + }); + } + startUploadDownlinkState() { + if (this.uploadDownlinkStarted) + return; + this.uploadDownlinkStarted = !0, this.downlinkStatsUploadInterval && window.clearInterval(this.downlinkStatsUploadInterval); + const s = () => Array.from(this.remoteUserMap.entries()).forEach((c) => { + let [, p] = c; + [pr.VIDEO, pr.AUDIO].forEach((m) => { + p.has(m) ? Ji(this, Nr.RequestP2PUnmuteRemote, m) : Ji(this, Nr.RequestP2PMuteRemote, m); + }); + }); + s(), this.downlinkStatsUploadInterval = window.setInterval(() => { + s(); + }, 3e3); + } + stopUploadDownlinkState() { + this.uploadDownlinkStarted && (this.uploadDownlinkStarted = !1, this.downlinkStatsUploadInterval && window.clearInterval(this.downlinkStatsUploadInterval)); + } + getAllDataChannels() { + return this.localDataChannels; + } + massSubscribe(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support massSubscribe."); + }); + } + massSubscribeNoLock(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support massSubscribeNoLock."); + }); + } + massUnsubscribe(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support massUnsubscribe."); + }); + } + massUnsubscribeNoLock(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "p2p mode does not support massUnsubscribeNoLock."); + }); + } + muteRemote(s, c) { + return ye(this, null, function* () { + if (!this.recvConnection) + return; + const p = this.remoteUserMap.get(s); + if (!p) + return void ie.warning("[".concat(this.store.clientId, "] P2PChannel2.muteRemote has no remote user ").concat(s.uid, ".")); + if (!p.get(c)) + return void ie.warning("[".concat(this.store.clientId, "] P2PChannel2.muteRemote has no remote user ").concat(s.uid, " media type ").concat(c, ".")); + const m = c === pr.VIDEO ? s._videoSSRC : s._audioSSRC; + m !== void 0 && this.recvConnection.setStatsRemoteVideoIsReady(m, !1); + }); + } + unmuteRemote(s, c) { + return ye(this, null, function* () { + return this.unmuteRemoteNoLock(s, c); + }); + } + unmuteRemoteNoLock(s, c) { + return ye(this, null, function* () { + if (!this.recvConnection) + return; + const p = this.remoteUserMap.get(s); + if (!p) + return void ie.warning("[".concat(this.store.clientId, "] P2PChannel2.unmuteRemote has no remote user ").concat(s.uid, ".")); + p.get(c) || ie.warning("[".concat(this.store.clientId, "] P2PChannel2.unmuteRemote has no remote user ").concat(s.uid, " media type ").concat(c, ".")); + }); + } + getAllTracks(s) { + const c = this.localTrackMap.get(Mt.LocalAudioTrack); + if ((c == null ? void 0 : c.track) instanceof Uo) { + const p = c.track; + return Array.from(this.localTrackMap.entries()).filter((m) => { + let [T] = m; + return T !== Mt.LocalAudioTrack; + }).filter((m) => { + let [T] = m; + return !(s && T === Mt.LocalVideoLowTrack); + }).map((m) => { + let [, { track: T }] = m; + return T; + }).concat(p.trackList); + } + return Array.from(this.localTrackMap.entries()).filter((p) => { + let [m] = p; + return !(s && m === Mt.LocalVideoLowTrack); + }).map((p) => { + let [, { track: m }] = p; + return m; + }); + } + reportPublishEvent(s, c, p, m, T) { + if (s) { + const k = this.localTrackMap.get(Mt.LocalAudioTrack), N = m ? this.localTrackMap.get(Mt.LocalVideoLowTrack) : this.localTrackMap.get(Mt.LocalVideoTrack); + vr.publish(this.store.sessionId, { eventElapse: Ks.measureFromPublishStart(this.store.clientId, this.store.pubId), succ: s, ec: c, audioName: k == null ? void 0 : k.track.getTrackLabel(), videoName: N == null ? void 0 : N.track.getTrackLabel(), screenshare: (N == null ? void 0 : N.track._hints.indexOf(ua.SCREEN_TRACK)) !== -1, audio: !!k, video: !!N, p2pid: this.store.p2pId, publishRequestid: this.store.pubId, extend: T }); + } else { + var D; + p || (p = []); + const k = p.find((U) => U instanceof Vi), N = m ? (D = this.localTrackMap.get(Mt.LocalVideoTrack)) === null || D === void 0 ? void 0 : D.track : p.find((U) => U instanceof In); + vr.publish(this.store.sessionId, { eventElapse: Ks.measureFromPublishStart(this.store.clientId, this.store.pubId), succ: s, ec: c, audioName: k == null ? void 0 : k.getTrackLabel(), videoName: N == null ? void 0 : N.getTrackLabel(), screenshare: (N == null ? void 0 : N._hints.indexOf(ua.SCREEN_TRACK)) !== -1, audio: !!k, video: !!N, p2pid: this.store.p2pId, publishRequestid: this.store.pubId, extend: T }); + } + } + reportSubscribeEvent(s, c, p, m) { + const T = m === pr.VIDEO ? p._videoSSRC : p._audioSSRC; + T && vr.subscribe(this.store.sessionId, { succ: s, ec: c, video: m === pr.VIDEO, audio: m === pr.AUDIO, peerid: p.uid, subscribeRequestid: m === pr.VIDEO ? p._videoSSRC : p._audioSSRC, p2pid: this.store.p2pId, eventElapse: Ks.measureFromSubscribeStart(this.store.clientId, T) }); + } + reset() { + ie.debug("[".concat(this.store.clientId, "] P2PChannel2.reset")), this.sendMutex = new Ss("P2PChannel2-send-mutex"), this.sendMutex = new Ss("P2PChannel2-recv-mutex"), this.sendConnection && (this.sendConnection.close(), this.unbindConnectionEvents(this.sendConnection), this.sendConnection = void 0), this.recvConnection && (this.recvConnection.close(), this.unbindConnectionEvents(this.recvConnection), this.recvConnection = void 0), this.statsUploader.stopUploadOutboundStats(), this.statsUploader.stopUploadInboundStats(), this.statsUploader.stopUploadTransportStats(), this.statsUploader.stopUploadExtensionUsageStats(), this.stopUploadUplinkState(), this.stopUploadDownlinkState(), this.unbindLocalTrackEvents(), this.unbindAllRemoteTrackEvents(), this.unbindRtpTransceiver(); + const s = this.localTrackMap.get(Mt.LocalAudioTrack); + if ((s == null ? void 0 : s.track) instanceof Uo) { + if (s.track.trackList.length > 0) { + const c = s.track; + s.track.trackList.forEach((p) => { + c.removeAudioTrack(p); + }); + } + s.track.close(); + } + this.localTrackMap.clear(), this.remoteUserMap.clear(), this.statsCollector.removeRemoteStats(), this.statsCollector.removeLocalStats(), this.dtlsFailedCount = 0, this.pendingLocalTracks = [], this.pendingRemoteTracks = [], this.reconnectInterval && (window.clearInterval(this.reconnectInterval), this.reconnectInterval = void 0), this.state = Ai.Disconnected; + } + getStats(s) { + var c, p; + return s ? (p = this.recvConnection) === null || p === void 0 ? void 0 : p.getStats() : (c = this.sendConnection) === null || c === void 0 ? void 0 : c.getStats(); + } + getRemoteVideoIsReady(s) { + var c; + return ((c = this.recvConnection) === null || c === void 0 ? void 0 : c.getRemoteVideoIsReady(s)) || !1; + } + getLocalAudioVolume() { + const s = this.localTrackMap.get(Mt.LocalAudioTrack); + if (s) + return s.track.getVolumeLevel(); + } + getLocalVideoSize() { + const s = this.localTrackMap.get(Mt.LocalVideoTrack); + if (s) + return { width: s.track._videoWidth || 0, height: s.track._videoHeight || 0 }; + } + getEncoderConfig(s) { + const c = this.localTrackMap.get(s); + return c && c.track instanceof In || c && c.track instanceof Vi ? c.track._encoderConfig : void 0; + } + getLocalMedia(s) { + return this.localTrackMap.get(s); + } + hasLocalMedia() { + return this.localTrackMap.size > 0; + } + hasRemoteMedia(s, c) { + if (!s) + return this.remoteUserMap.size > 0; + const p = this.remoteUserMap.get(s); + return !!p && (!c || p.has(c)); + } + hasRemoteMediaWithLock(s, c) { + return ye(this, null, function* () { + if (!s) + return this.remoteUserMap.size > 0; + const p = this.remoteUserMap.get(s); + return !!p && (!c || p.has(c)); + }); + } + getRemoteMedia(s) { + var c; + const p = Array.from(rh(c = this.remoteUserMap).call(c)).find((m) => m.uid === s); + return p ? { audioTrack: p.audioTrack, audioSSRC: p._audioSSRC, videoTrack: p.videoTrack, videoSSRC: p._videoSSRC } : {}; + } + getAudioLevels() { + let s = Array.from(this.remoteUserMap.entries()).map((p) => { + let [m] = p; + return { uid: m.uid, level: m.audioTrack ? 100 * m.audioTrack._source.getAccurateVolumeLevel() : 0 }; + }); + const c = this.localTrackMap.get(Mt.LocalAudioTrack); + return c && s.push({ level: 100 * c.track._source.getAccurateVolumeLevel(), uid: this.store.uid }), s = dx(s).call(s, (p, m) => p.level - m.level), s; + } + disconnectForReconnect() { + return ye(this, null, function* () { + this.sendConnection && this.recvConnection && (ie.debug("[".concat(this.store.clientId, "] P2PChannel2.disconnectForReconnect closing P2PConnection")), this.state = Ai.Reconnecting, Le("KEEP_LAST_FRAME") && this.remoteUserMap.size !== 0 && Array.from(this.remoteUserMap.entries()).forEach((s) => { + let [c] = s; + var p; + c._videoTrack && c._videoTrack._player && ((p = c._videoTrack._player.getVideoElement()) === null || p === void 0 || p.pause(), c._videoTrack._player.isKeepLastFrame = !0, c._videoTrack._originMediaStreamTrack.stop()); + }), this.sendConnection.close(), this.unbindConnectionEvents(this.sendConnection), this.sendConnection = void 0, this.recvConnection.close(), this.unbindConnectionEvents(this.recvConnection), this.recvConnection = void 0, this.localTrackMap.size !== 0 && (Array.from(this.localTrackMap.entries()).forEach((s) => { + var c; + let [p, { track: m }] = s; + switch (p) { + case Mt.LocalVideoTrack: + rr(c = m._hints).call(c, ua.LOW_STREAM) ? m.close() : this.pendingLocalTracks.push(m); + break; + case Mt.LocalAudioTrack: + m instanceof Uo ? this.pendingLocalTracks = this.pendingLocalTracks.concat(m.trackList) : this.pendingLocalTracks.push(m); + case Mt.LocalVideoLowTrack: + } + }), this.emit(Nr.MediaReconnectStart, this.store.uid)), this.unbindLocalTrackEvents(), this.localTrackMap.clear(), this.remoteUserMap.size !== 0 && Array.from(this.remoteUserMap.entries()).forEach((s) => { + let [c, p] = s; + Array.from(rh(p).call(p)).forEach((m) => { + this.setPendingRemoteMedia(c, m); + }), this.emit(Nr.MediaReconnectStart, c.uid); + }), this.unbindAllRemoteTrackEvents(), this.remoteUserMap.clear(), this.stopUploadUplinkState(), this.stopUploadDownlinkState(), this.statsUploader.stopUploadOutboundStats(), this.statsUploader.stopUploadInboundStats(), this.statsUploader.stopUploadTransportStats(), ie.debug("[".concat(this.store.clientId, "] P2PChannel2 disconnected, waiting to reconnect."))); + }); + } + hasPendingRemoteMedia(s, c) { + for (const p of this.pendingRemoteTracks) { + const { user: m, kind: T } = p; + if ((s instanceof Ns ? s.uid : s) === m.uid && c === T) + return !0; + } + return !1; + } + setPendingRemoteMedia(s, c) { + this.hasPendingRemoteMedia(s, c) || this.pendingRemoteTracks.push({ user: s, kind: c }); + } + restartICE(s, c) { + return ye(this, null, function* () { + let p, m; + if (s === cl.SEND_ONLY) { + if (!this.sendConnection) + throw new mt(_e.INVALID_OPERATION, "Cannot call P2PChannel2.handleMuteLocalTrack before sendConnection established."); + p = yield this.sendMutex.lock("From P2PChannel.restartICE"), m = this.sendConnection; + } else { + if (!this.recvConnection) + throw new mt(_e.INVALID_OPERATION, "Cannot call P2PChannel2.handleMuteLocalTrack before recvConnection established."); + p = yield this.recvMutex.lock("From P2PChannel.restartICE"), m = this.recvConnection; + } + try { + if (c) { + const T = yield m.restartICE(c); + return m.isInRestartIce = !1, T; + } + { + const T = yield m.restartICE(); + if (T) { + const D = yield Ro(this, Nr.RequestP2PRestartICE, { direction: cl.RECEIVE_ONLY, iceParameter: T }); + yield m.restartICE(D), m.isInRestartIce = !1; + } + } + } finally { + p(); + } + }); + } + getUplinkNetworkQuality() { + if (!this.sendConnection) + return 0; + const s = this.sendConnection.getStats(), c = this.localTrackMap.get(Mt.LocalVideoTrack), p = this.localTrackMap.get(Mt.LocalAudioTrack), m = s.videoSend.find((ue) => { + var oe; + return ue.ssrc === (c == null || (oe = c.ssrcs) === null || oe === void 0 ? void 0 : oe[0].ssrcId); + }), T = s.audioSend.find((ue) => { + var oe; + return ue.ssrc === (p == null || (oe = p.ssrcs) === null || oe === void 0 ? void 0 : oe[0].ssrcId); + }); + if (!m || !T) + return 1; + const D = pu(this, Nr.NeedSignalRTT), k = m ? m.rttMs : void 0, N = T ? T.rttMs : void 0, U = k && N ? (k + N) / 2 : k || N, V = (U && D ? (U + D) / 2 : U || D) || 0, G = 100 * s.sendPacketLossRate * 0.7 / 50 + 0.3 * V / 1500, K = G < 0.17 ? 1 : G < 0.36 ? 2 : G < 0.59 ? 3 : G < 0.1 ? 4 : 5, q = c == null ? void 0 : c.track; + if (q && q._encoderConfig && q._hints.indexOf(ua.SCREEN_TRACK) === -1) { + const ue = q._encoderConfig.bitrateMax, oe = s.bitrate.actualEncoded; + if (ue && oe) { + const he = (1e3 * ue - oe) / (1e3 * ue); + return Zq[he < 0.15 ? 0 : he < 0.3 ? 1 : he < 0.45 ? 2 : he < 0.6 ? 3 : 4][K]; + } + } + return K; + } + getDownlinkNetworkQuality() { + if (!this.recvConnection) + return 0; + const s = this.recvConnection.getStats(); + let c = 0; + return Array.from(this.remoteUserMap.entries()).forEach((p) => { + let [m] = p; + const T = m._audioSSRC, D = m._videoSSRC, k = s.audioRecv.find((oe) => oe.ssrc === T), N = s.videoRecv.find((oe) => oe.ssrc === D); + if (!k && !N) + return void (c += 1); + const U = pu(this, Nr.NeedSignalRTT), V = s.rtt, G = (V && U ? (V + U) / 2 : V || U) || 0, K = k ? k.jitterMs : void 0, q = s.recvPacketLossRate; + let ue = 0.7 * q * 100 / 50 + 0.3 * G / 1500; + K && (ue = 0.6 * q * 100 / 50 + 0.2 * G / 1500 + 0.2 * K / 400), c += ue < 0.1 ? 1 : ue < 0.17 ? 2 : ue < 0.36 ? 3 : ue < 0.59 ? 4 : 5; + }), this.remoteUserMap.size > 0 ? Math.round(c / this.remoteUserMap.size) : c; + } + muteLocalTrack(s) { + return ye(this, null, function* () { + return new ot((c, p) => { + this.handleMuteLocalTrack(s, c, p); + }); + }); + } + filterTobePublishedTracks(s, c, p) { + const m = [], T = _i(), D = this.getAllTracks(); + s = MC(s = s.filter((U) => D.indexOf(U) === -1)); + let k = !1, N = !1; + for (const U of s) { + if (U instanceof In && (this.localTrackMap.has(Mt.LocalVideoTrack) || k ? new mt(_e.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS).throw() : (m.push({ track: U, type: Mt.LocalVideoTrack }), k = !0), c)) { + const V = this.getLowVideoTrack(U, p); + m.push({ track: V, type: Mt.LocalVideoLowTrack }); + } + if (U instanceof Vi) { + const V = this.localTrackMap.get(Mt.LocalAudioTrack); + if (V) { + if (!(V.track instanceof Uo)) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio or your browser does not support audio mixing"); + if (U._bypassWebAudio) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio"); + V.track.addAudioTrack(U), this.bindLocalAudioTrackEvents(U, !0); + } else if (N) { + const G = m.find((K) => { + let { type: q } = K; + return q === Mt.LocalAudioTrack; + }); + if (!(G.track instanceof Uo)) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio or your browser does not support audio mixing"); + if (U._bypassWebAudio) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio"); + G.track.addAudioTrack(U); + } else { + if (!T.webAudioMediaStreamDest || U instanceof Uo || U._bypassWebAudio) + m.push({ track: U, type: Mt.LocalAudioTrack }); + else { + const G = new Uo(); + G.addAudioTrack(U), m.push({ track: G, type: Mt.LocalAudioTrack }); + } + N = !0; + } + } + } + return m; + } + filterTobeUnpublishedTracks(s) { + const c = [], p = this.getAllTracks(); + s = MC(s = s.filter((m) => p.indexOf(m) !== -1)); + for (const m of s) { + if (m instanceof Vi) { + const T = this.localTrackMap.get(Mt.LocalAudioTrack); + if (!T) + continue; + T.track instanceof Uo ? (T.track.removeAudioTrack(m), this.unbindLocalAudioTrackEvents(m), T.track.trackList.length === 0 && (c.push([Mt.LocalAudioTrack, T]), T.track.close())) : c.push([Mt.LocalAudioTrack, T]); + } + if (m instanceof In) { + const T = this.localTrackMap.get(Mt.LocalVideoTrack); + if (!T) + continue; + c.push([Mt.LocalVideoTrack, T]); + const D = this.localTrackMap.get(Mt.LocalVideoLowTrack); + D && c.push([Mt.LocalVideoLowTrack, D]); + } + } + return c; + } + bindLocalTrackEvents(s) { + s.forEach((c) => { + let { track: p, type: m } = c; + switch (m) { + case Mt.LocalVideoTrack: + p.addListener(lr.GET_STATS, this.handleGetLocalVideoStats), p.addListener(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), p.addListener(lr.NEED_UPDATE_VIDEO_ENCODER, this.handleUpdateVideoEncoder), p.addListener(lr.SET_OPTIMIZATION_MODE, this.handleSetOptimizationMode), p.addListener(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), p.addListener(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + break; + case Mt.LocalAudioTrack: + this.bindLocalAudioTrackEvents(p); + case Mt.LocalVideoLowTrack: + } + }); + } + bindLocalAudioTrackEvents(s, c) { + s instanceof Uo ? s.trackList.forEach((p) => { + p.addListener(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), p.addListener(lr.GET_STATS, this.handleGetLocalAudioStats), p.addListener(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + }) : (s.addListener(lr.GET_STATS, this.handleGetLocalAudioStats), s.addListener(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), s.addListener(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), s.addListener(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), s.addListener(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack), c || s.addListener(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack)); + } + unbindLocalTrackEvents(s) { + s || (s = Array.from(this.localTrackMap.entries()).map((c) => { + let [p, { track: m }] = c; + return { track: m, type: p }; + })), s.forEach((c) => { + let { track: p, type: m } = c; + switch (m) { + case Mt.LocalVideoTrack: + p.off(lr.GET_STATS, this.handleGetLocalVideoStats), p.off(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), p.off(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), p.off(lr.NEED_UPDATE_VIDEO_ENCODER, this.handleUpdateVideoEncoder), p.off(lr.SET_OPTIMIZATION_MODE, this.handleSetOptimizationMode), p.off(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), p.off(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), p.off(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + break; + case Mt.LocalAudioTrack: + this.unbindLocalAudioTrackEvents(p); + case Mt.LocalVideoLowTrack: + } + }); + } + unbindLocalAudioTrackEvents(s) { + s instanceof Uo ? s.trackList.forEach((c) => { + c.off(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), c.off(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), c.off(lr.GET_STATS, this.handleGetLocalAudioStats), c.off(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), c.off(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + }) : (s.off(lr.GET_STATS, this.handleGetLocalAudioStats), s.off(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), s.off(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), s.off(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), s.off(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), s.off(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack)); + } + bindRemoteTrackEvents(s, c) { + c instanceof Cg && c.addListener(lr.GET_STATS, (p) => { + p(this.handleGetRemoteVideoStats(s)); + }), c instanceof jd && c.addListener(lr.GET_STATS, (p) => { + p(this.handleGetRemoteAudioStats(s)); + }); + } + unbindRemoteTrackEvents(s) { + s && s.removeAllListeners(lr.GET_STATS); + } + unbindAllRemoteTrackEvents() { + Array.from(this.remoteUserMap.entries()).forEach((s) => { + let [c, p] = s; + p.has(pr.AUDIO) && this.unbindRemoteTrackEvents(c._audioTrack), p.has(pr.VIDEO) && this.unbindRemoteTrackEvents(c._videoTrack); + }); + } + createGatewayPublishMessage(s, c) { + return s.map((p, m) => { + var T; + let D, { track: k, type: N } = p; + switch (N) { + case Mt.LocalAudioTrack: + D = Ci.Audio; + break; + case Mt.LocalVideoTrack: + D = rr(T = k._hints).call(T, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalVideoLowTrack: + D = Ci.Low; + } + return { kind: N === Mt.LocalAudioTrack ? pr.AUDIO : pr.VIDEO, stream_type: D, mid: c[m].id, ssrcs: c[m].localSSRC, isMuted: k.muted || !k.enabled }; + }); + } + createGatewayUnpublishMessage(s) { + return s.map((c) => { + var p; + let m, [T, { track: D, ssrcs: k, id: N }] = c; + switch (T) { + case Mt.LocalVideoTrack: + m = rr(p = D._hints).call(p, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalAudioTrack: + m = Ci.Audio; + break; + case Mt.LocalVideoLowTrack: + m = Ci.Low; + } + return { stream_type: m, ssrcs: k, mid: N }; + }); + } + assignLocalTracks(s, c) { + s.forEach((p, m) => { + let { track: T, type: D } = p; + this.localTrackMap.set(D, { track: T, id: c[m].id, ssrcs: c[m].localSSRC }); + }); + } + withdrawLocalTracks(s) { + s.forEach((c) => { + let [p] = c; + this.localTrackMap.delete(p); + }); + } + bindConnectionEvents(s) { + s.onConnectionStateChange = (c) => ye(this, null, function* () { + var p; + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: ").concat(s.name, ".onConnectionStateChange(").concat(c, ")")), this.emit(Nr.PeerConnectionStateChange, c), c !== "connected" || this.store.keyMetrics.peerConnectionEnd || this.store.peerConnectionEnd(), c === "connected" && (s.isInRestartIce = !1), rr(p = this._restartStates).call(p, c) && !s.isInRestartIce && (c === "disconnected" && (yield _s(800)), s.iceConnectionState !== "disconnected" && s.iceConnectionState !== "failed" || this.handleDisconnect(s.direction)); + }), s.onICEConnectionStateChange = (c) => { + c !== "connected" || this.store.keyMetrics.iceConnectionEnd || this.store.iceConnectionEnd(), ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onICEConnectionStateChange(").concat(c, ")")), vr.reportApiInvoke(this.store.sessionId, { name: "ICEConnectionStateChange", options: c, tag: Na.TRACER }).onSuccess(), this.emit(Nr.IceConnectionStateChange, c); + }, s.onICETransportStateChange = (c) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onICETransportStateChange(").concat(c, ")")); + }, s.onDTLSTransportStateChange = (c) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onDTLSTransportStateChange(").concat(c, ")")); + }, s.onDTLSTransportError = (c) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onDTLSTransportError(").concat(c, ")")); + }, s.onFirstAudioDecoded = (c) => { + var p; + const m = Array.from(rh(p = this.remoteUserMap).call(p)).find((D) => D._audioSSRC === c); + var T; + m && (this.store.subscribe(m.uid, "audio", void 0, void 0, void 0, Date.now()), (T = m.audioTrack) === null || T === void 0 || T.emit(u_.FIRST_FRAME_DECODED), vr.firstRemoteFrame(this.store.sessionId, Jo.FIRST_AUDIO_DECODE, _a.FIRST_AUDIO_DECODE, { peer: m._uintid, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, c), subscribeRequestid: c, p2pid: this.store.p2pId })); + }, s.onFirstAudioReceived = (c) => { + var p; + const m = Array.from(rh(p = this.remoteUserMap).call(p)).find((T) => T._audioSSRC === c); + m && vr.firstRemoteFrame(this.store.sessionId, Jo.FIRST_AUDIO_RECEIVED, _a.FIRST_AUDIO_RECEIVED, { peer: m._uintid, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, c), subscribeRequestid: c, p2pid: this.store.p2pId }); + }, s.onFirstVideoDecoded = (c, p, m) => { + this.reportVideoFirstFrameDecoded(c, p, m); + }, s.onFirstVideoReceived = (c) => { + var p; + const m = Array.from(rh(p = this.remoteUserMap).call(p)).find((T) => T._videoSSRC === c); + m && vr.firstRemoteFrame(this.store.sessionId, Jo.FIRST_VIDEO_RECEIVED, _a.FIRST_VIDEO_RECEIVED, { peer: m._uintid, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, c), subscribeRequestid: c, p2pid: this.store.p2pId }); + }, s.onSelectedLocalCandidateChanged = (c, p) => { + const m = c.candidateType === "relay", T = p.candidateType === "relay"; + p.candidateType !== "unknown" && m === T || this.emit(Nr.ConnectionTypeChange, m), ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.SelectedLocalCandidateChanged(").concat(JSON.stringify(o_(p)), " -> ").concat(JSON.stringify(o_(c)), ")")); + }, s.onSelectedRemoteCandidateChanged = (c, p) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.SelectedRemoteCandidateChanged(").concat(JSON.stringify(o_(p)), " -> ").concat(JSON.stringify(o_(c)), ")")); + }, s.onFirstVideoDecodedTimeout = (c) => { + this.reportVideoFirstFrameDecoded(c, void 0, void 0, !0); + }, s.onLocalCandidate = (c) => { + this.emit(Nr.LocalCandidate, { candidate: c, direction: s.direction }); + }; + } + unbindConnectionEvents(s) { + s.onConnectionStateChange = void 0, s.onICEConnectionStateChange = void 0, s.onICETransportStateChange = void 0, s.onDTLSTransportStateChange = void 0, s.onDTLSTransportError = void 0, s.onFirstAudioDecoded = void 0, s.onFirstAudioReceived = void 0, s.onFirstVideoDecoded = void 0, s.onFirstVideoReceived = void 0, s.onSelectedLocalCandidateChanged = void 0, s.onSelectedRemoteCandidateChanged = void 0, s.onFirstVideoDecodedTimeout = void 0, s.onLocalCandidate = void 0; + } + handleDisconnect(s) { + return ye(this, null, function* () { + const c = s === cl.SEND_ONLY ? this.sendConnection : this.recvConnection; + c && !c.isInRestartIce && (c.isInRestartIce = !0, ie.debug("[".concat(this.store.clientId, "] [P2PChannel-").concat(c.name, "] start use restartICE")), s === cl.SEND_ONLY ? this.restartICE(s) : Ro(this, Nr.RequestP2PRestartICE, { direction: cl.SEND_ONLY })); + }); + } + filterTobeMutedTracks(s) { + const c = []; + if (this.getAllTracks().indexOf(s) === -1) + return c; + const p = this.localTrackMap.get(Mt.LocalAudioTrack); + if (s instanceof Vi && (p == null ? void 0 : p.track) instanceof Uo) + return p.track.isActive || c.push([Mt.LocalAudioTrack, p]), c; + const m = Array.from(this.localTrackMap.entries()).find((T) => { + let [, { track: D }] = T; + return s === D; + }); + if (m && (c.push(m), m[0] === Mt.LocalVideoTrack)) { + const T = this.localTrackMap.get(Mt.LocalVideoLowTrack); + T && c.push([Mt.LocalVideoLowTrack, T]); + } + return c; + } + filterTobeUnmutedTracks(s) { + const c = [], p = this.localTrackMap.get(Mt.LocalAudioTrack); + if (s instanceof Vi && (p == null ? void 0 : p.track) instanceof Uo) + return p.track.isActive && c.push([Mt.LocalAudioTrack, p]), c; + const m = Array.from(this.localTrackMap.entries()).find((T) => { + let [, { track: D }] = T; + return s === D; + }); + if (m) + if (m[0] === Mt.LocalVideoTrack) { + c.push(m); + const T = this.localTrackMap.get(Mt.LocalVideoLowTrack); + T && c.push([Mt.LocalVideoLowTrack, T]); + } else + c.push(m); + return c; + } + createMuteMessage(s) { + return s.map((c) => { + var p; + let m, [T, { track: D, ssrcs: k, id: N }] = c; + switch (T) { + case Mt.LocalAudioTrack: + m = Ci.Audio; + break; + case Mt.LocalVideoTrack: + m = rr(p = D._hints).call(p, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalVideoLowTrack: + m = Ci.Low; + } + return { stream_type: m, ssrcs: k, mid: N }; + }); + } + createUnmuteMessage(s) { + return s.map((c) => { + var p; + let m, [T, { track: D, ssrcs: k, id: N }] = c; + switch (T) { + case Mt.LocalAudioTrack: + m = Ci.Audio; + break; + case Mt.LocalVideoTrack: + m = rr(p = D._hints).call(p, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalVideoLowTrack: + m = Ci.Low; + } + return { stream_type: m, ssrcs: k, mid: N }; + }); + } + filterTobeUnSubscribedTracks(s, c) { + const p = [], m = this.remoteUserMap.get(s); + if (!m) + return p; + if (c) { + const T = m.get(c); + if (!T) + return p; + p.push([s, { kind: c, id: T }]); + } else + Array.from(m.entries()).forEach((T) => { + let [D, k] = T; + p.push([s, { kind: D, id: k }]); + }); + return p; + } + createUnsubscribeMessage(s) { + const c = []; + return s.forEach((p) => { + let [m, { kind: T, id: D }] = p; + switch (T) { + case pr.VIDEO: + return void (m._videoSSRC && c.push({ stream_type: pr.VIDEO, ssrcId: m._videoSSRC })); + case pr.AUDIO: + return void (m._audioSSRC && c.push({ stream_type: pr.AUDIO, ssrcId: m._audioSSRC })); + } + }), c; + } + withdrawRemoteTracks(s) { + s.forEach((c) => { + let [p, { kind: m }] = c; + const T = this.remoteUserMap.get(p); + T && (T.delete(m), Array.from(T.entries()).length === 0 && this.remoteUserMap.delete(p)); + }); + } + updateBitrateLimit(s) { + return ye(this, null, function* () { + const c = this.localTrackMap.get(Mt.LocalVideoTrack), p = this.localTrackMap.get(Mt.LocalVideoLowTrack); + c && (yield c.track.setBitrateLimit(s.uplink)), p && s.low_stream_uplink && (yield p.track.setBitrateLimit({ max_bitrate: s.low_stream_uplink.bitrate, min_bitrate: s.low_stream_uplink.bitrate || 0 })); + }); + } + isP2PDisconnected() { + if (this.sendConnection && this.recvConnection) { + const s = this.sendConnection.peerConnectionState, c = this.recvConnection.peerConnectionState; + return s !== "connected" && c !== "connected"; + } + return !0; + } + tryToUnmuteAudio(s) { + return ye(this, null, function* () { + for (let c = 0; c < s.length; c++) + if (s[c] instanceof Vi) { + const p = this.filterTobeUnmutedTracks(s[c]); + if (p.length === 0) + continue; + const m = this.createUnmuteMessage(p); + return void (yield Ji(this, Nr.RequestUnmuteLocal, m)); + } + }); + } + bindStatsUploaderEvents() { + this.statsUploader.requestStats = (s) => this.getStats(s), this.statsUploader.requestLocalMedia = () => Array.from(this.localTrackMap.entries()).filter((s) => { + let [, { ssrcs: c }] = s; + return !!c; + }), this.statsUploader.requestRemoteMedia = () => Array.from(this.remoteUserMap.entries()), this.statsUploader.requestVideoIsReady = (s) => { + var c; + return !((c = this.recvConnection) === null || c === void 0 || !c.getRemoteVideoIsReady(s)); + }, this.statsUploader.requestUpload = (s, c) => this.emit(Nr.RequestUpload, s, c), this.statsUploader.requestUploadStats = (s) => this.emit(Nr.RequestUploadStats, s), this.statsUploader.requestAllTracks = () => this.getAllTracks(); + } + unbindStatsUploaderEvents() { + this.statsUploader.requestStats = void 0, this.statsUploader.requestLocalMedia = void 0, this.statsUploader.requestRemoteMedia = void 0, this.statsUploader.requestVideoIsReady = void 0; + } + requestReconnect() { + return ye(this, null, function* () { + this.dtlsFailedCount += 1, yield _s(aM(this.dtlsFailedCount, Oo)), this.emit(Nr.RequestReconnect); + }); + } + reconnectP2P() { + return ye(this, null, function* () { + }); + } + canPublishLowStream() { + return this.localTrackMap.has(Mt.LocalVideoTrack) || this.pendingLocalTracks.some((s) => s instanceof In); + } + throwIfTrackTypeNotMatch(s) { + if (s.filter((c) => c instanceof In).length > 1) + throw new mt(_e.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS); + if (s.filter((c) => c instanceof Vi).length > 1 && (s.some((c) => c instanceof Vi && c._bypassWebAudio) || !_i().webAudioMediaStreamDest)) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio or your browser doesn't support MediaStreamDestNode"); + for (const c of s) { + if (c instanceof In && this.pendingLocalTracks.some((p) => p instanceof In)) + throw new mt(_e.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS); + if (c instanceof Vi && this.pendingLocalTracks.some((p) => p instanceof Vi) && (!_i().webAudioMediaStreamDest || c._bypassWebAudio || this.pendingLocalTracks.some((p) => p instanceof Vi && p._bypassWebAudio))) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio or your browser doesn't support MediaStreamDestNode"); + } + } + getLowVideoTrack(s, c) { + const p = !Le("DISABLE_DUAL_STREAM_USE_ENCODING") && _i().supportDualStreamEncoding, m = pk(pk({}, { width: 160, height: 120, framerate: 15, bitrate: 50 }), c); + let T; + T = p ? s._mediaStreamTrack.clone() : H$(s, m); + const D = ra(8, "track-low-"), k = new In(T, pk(pk({}, p && { scaleResolutionDownBy: u5(m, s) }), {}, { frameRate: m.framerate, bitrateMax: m.bitrate, bitrateMin: m.bitrate }), void 0, void 0, D); + return k.on(l_.TRANSCEIVER_UPDATED, (N) => { + s._updateRtpTransceiver(N, s_.LOW_STREAM); + }), k._hints.push(ua.LOW_STREAM), s.addListener(lr.NEED_CLOSE, () => { + k.close(); + }), k; + } + globalLock() { + return ye(this, null, function* () { + return this.recvMutex.lock("From P2PChannel2.globalLock"); + }); + } + reportVideoFirstFrameDecoded(s, c, p, m) { + var T; + const D = Array.from(rh(T = this.remoteUserMap).call(T)).find((k) => k._videoSSRC === s); + if (D) { + m || this.store.subscribe(D.uid, "video", void 0, void 0, void 0, void 0, Date.now()); + const k = this.store.keyMetrics, N = k.subscribe.find((U) => U.userId === D.uid && U.type === "video"); + vr.firstRemoteVideoDecode(this.store.sessionId, Jo.FIRST_VIDEO_DECODE, _a.FIRST_VIDEO_DECODE, { peer: D._uintid, videowidth: c, videoheight: p, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, s), subscribeRequestid: s, p2pid: this.store.p2pId, apEnd: k.requestAPEnd || 0, apStart: k.requestAPStart || 0, joinGwEnd: k.joinGatewayEnd || 0, joinGwStart: k.joinGatewayStart || 0, pcEnd: k.peerConnectionEnd || 0, pcStart: k.peerConnectionStart || 0, subscriberEnd: (N == null ? void 0 : N.subscribeEnd) || 0, subscriberStart: (N == null ? void 0 : N.subscribeStart) || 0, videoAddNotify: (N == null ? void 0 : N.streamAdded) || 0, state: m ? 1 : 0 }); + } + } + remoteMediaSsrcChanged(s, c, p) { + return ye(this, null, function* () { + if (!this.recvConnection) + return !1; + const m = this.remoteUserMap.get(s); + if (!m) + return !1; + const T = m.get(c); + if (!T) + return !1; + const D = yield this.recvConnection.getRemoteSSRC(T); + return D !== void 0 && D !== p; + }); + } + resetConnection(s) { + ie.debug("[".concat(this.store.clientId, "] [P2PChannel2] reset connection to ").concat(s)), this.state === Ai.Connected ? (ie.debug("[".concat(this.store.clientId, "] [P2PChannel2] fallback to websocket but P2PChannel2 state still connected, disconnect first")), this.disconnectForReconnect()) : (this.sendConnection && (this.sendConnection.close(), this.unbindConnectionEvents(this.sendConnection), this.sendConnection = void 0), this.recvConnection && (this.recvConnection.close(), this.unbindConnectionEvents(this.recvConnection), this.recvConnection = void 0)); + } + publishDataChannel(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + unpublishDataChannel(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + subscribeDataChannel(s, c) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + unsubscribeDataChannel(s, c) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + hasPendingRemoteDataChannel(s, c) { + throw new mt(_e.NOT_SUPPORTED); + } + setPendingRemoteDataChannel(s, c) { + throw new mt(_e.NOT_SUPPORTED); + } + preConnect(s, c, p, m, T, D) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + getEstablishParams() { + throw new mt(_e.NOT_SUPPORTED); + } + reSubscribe(s) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + updateVideoStreamParameter(s, c) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED); + }); + } + unbindRtpTransceiver() { + this.localTrackMap.size !== 0 && Array.from(this.localTrackMap.entries()).forEach((s) => { + let [c, { track: p }] = s; + c === Mt.LocalVideoLowTrack ? p._updateRtpTransceiver(void 0, s_.LOW_STREAM) : p._updateRtpTransceiver(void 0); + }); + } + } + function hp(h) { + return function(s, c, p) { + const m = s[c]; + if (typeof m != "function") + throw new Error("Cannot use mutex on object property."); + return p.value = function() { + return ye(this, arguments, function* () { + for (var T = arguments.length, D = new Array(T), k = 0; k < T; k++) + D[k] = arguments[k]; + switch (h) { + case Qh.SEND_ONLY: { + const N = yield this.sendMutex.lock("From P2PChannel2.".concat(c)); + try { + return yield m.apply(this, D); + } finally { + N(); + } + } + case Qh.RECEIVE_ONLY: { + const N = yield this.recvMutex.lock("From P2PChannel2.".concat(c)); + try { + return yield m.apply(this, D); + } finally { + N(); + } + } + default: { + const N = yield this.sendMutex.lock("From P2PChannel2.".concat(c)), U = yield this.recvMutex.lock("From P2PChannel2.".concat(c)); + try { + return yield m.apply(this, D); + } finally { + N(), U(); + } + } + } + }); + }, p; + }; + } + function Ote(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function VS(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Ote(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Ote(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + St([hp(Qh.SEND_ONLY), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], ts.prototype, "p2pConnect", null), St([hp(Qh.SEND_ONLY), ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], ts.prototype, "unpublish", null), St([hp(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], ts.prototype, "unpublishLowStream", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number, String]), ge("design:returntype", ot)], ts.prototype, "subscribe", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number, String]), ge("design:returntype", ot)], ts.prototype, "mockSubscribe", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String, Boolean]), ge("design:returntype", ot)], ts.prototype, "unsubscribe", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String]), ge("design:returntype", ot)], ts.prototype, "muteRemote", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String]), ge("design:returntype", ot)], ts.prototype, "unmuteRemote", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String]), ge("design:returntype", ot)], ts.prototype, "hasRemoteMediaWithLock", null), St([hp(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], ts.prototype, "disconnectForReconnect", null), St([hp(Qh.RECEIVE_ONLY), ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number]), ge("design:returntype", ot)], ts.prototype, "remoteMediaSsrcChanged", null); + class pA { + constructor(s) { + Z(this, "store", void 0), Z(this, "onStatsException", void 0), Z(this, "onUploadPublishDuration", void 0), Z(this, "onStatsChanged", void 0), Z(this, "localStats", /* @__PURE__ */ new Map()), Z(this, "remoteStats", /* @__PURE__ */ new Map()), Z(this, "updateStatsInterval", void 0), Z(this, "trafficStats", void 0), Z(this, "trafficStatsPeerList", []), Z(this, "uplinkStats", void 0), Z(this, "exceptionMonitor", void 0), Z(this, "p2pChannel", void 0), Z(this, "scalabilityMode", qj.L1T1), Z(this, "updateStats", () => { + this.p2pChannel && (this.updateRemoteStats(this.p2pChannel), this.updateLocalStats(this.p2pChannel)); + }), this.store = s, this.updateStatsInterval = window.setInterval(this.updateStats, 1e3), this.exceptionMonitor = new fFe(), this.exceptionMonitor.on("exception", (c, p, m) => { + this.onStatsException && this.onStatsException(c, p, m); + }); + } + reset() { + this.localStats = /* @__PURE__ */ new Map(), this.remoteStats = /* @__PURE__ */ new Map(), this.trafficStats = void 0, this.trafficStatsPeerList = [], this.uplinkStats = void 0; + } + getLocalAudioTrackStats() { + return this.localStats.get(Mt.LocalAudioTrack) || VS({}, C5); + } + getLocalVideoTrackStats() { + return this.localStats.get(Mt.LocalVideoTrack) || VS({}, T5); + } + getRemoteAudioTrackStats(s) { + const c = (T, D) => { + if (!this.trafficStats) + return D; + const k = this.trafficStats.peer_delay.find((N) => N.peer_uid === T); + return k && (D.publishDuration = k.B_ppad + (Date.now() - this.trafficStats.timestamp)), D; + }, p = {}; + if (s) { + var m; + const T = (m = this.remoteStats.get(s)) === null || m === void 0 ? void 0 : m.audioStats; + T && (p[s] = c(s, T)); + } else + Array.from(this.remoteStats.entries()).forEach((T) => { + let [D, { audioStats: k }] = T; + k && (p[D] = c(D, k)); + }); + return p; + } + getRemoteNetworkQualityStats(s) { + const c = {}; + if (s) { + var p; + const m = (p = this.remoteStats.get(s)) === null || p === void 0 ? void 0 : p.networkStats; + m && (c[s] = m); + } else + Array.from(this.remoteStats.entries()).forEach((m) => { + let [T, { networkStats: D }] = m; + D && (c[T] = D); + }); + return c; + } + getRemoteVideoTrackStats(s) { + const c = (T, D) => { + if (!this.trafficStats) + return D; + const k = this.trafficStats.peer_delay.find((N) => N.peer_uid === T); + return k && (D.publishDuration = k.B_ppvd + (Date.now() - this.trafficStats.timestamp)), D; + }, p = {}; + if (s) { + var m; + const T = (m = this.remoteStats.get(s)) === null || m === void 0 ? void 0 : m.videoStats; + T && (p[s] = c(s, T)); + } else + Array.from(this.remoteStats.entries()).forEach((T) => { + let [D, { videoStats: k }] = T; + k && (p[D] = c(D, k)); + }); + return p; + } + getRTCStats() { + let s = 0, c = 0, p = 0, m = 0; + const T = this.localStats.get(Mt.LocalAudioTrack); + T && (s += T.sendBytes, c += T.sendBitrate); + const D = this.localStats.get(Mt.LocalVideoTrack); + D && (s += D.sendBytes, c += D.sendBitrate); + const k = this.localStats.get(Mt.LocalVideoLowTrack); + k && (s += k.sendBytes, c += k.sendBitrate), this.remoteStats.forEach((U) => { + let { audioStats: V, videoStats: G } = U; + V && (p += V.receiveBytes, m += V.receiveBitrate), G && (p += G.receiveBytes, m += G.receiveBitrate); + }); + let N = 1; + return this.trafficStats && (N += this.trafficStats.peer_delay.length), { Duration: 0, UserCount: N, SendBitrate: c, SendBytes: s, RecvBytes: p, RecvBitrate: m, OutgoingAvailableBandwidth: this.uplinkStats ? this.uplinkStats.B_uab / 1e3 : 0, RTT: this.trafficStats ? 2 * this.trafficStats.B_acd : 0 }; + } + addLocalStats(s) { + this.localStats.set(s, void 0); + } + removeLocalStats(s) { + s ? this.localStats.delete(s) : this.localStats.clear(); + } + addRemoteStats(s) { + this.remoteStats.set(s, {}); + } + removeRemoteStats(s) { + s ? this.remoteStats.delete(s) : this.remoteStats.clear(); + } + addP2PChannel(s) { + this.p2pChannel = s; + } + updateTrafficStats(s) { + s.peer_delay = s.peer_delay.filter((c) => c.B_ppad !== void 0 || c.B_ppvd !== void 0), s.peer_delay.filter((c) => this.trafficStatsPeerList.indexOf(c.peer_uid) === -1).forEach((c) => { + var p; + const m = (p = this.p2pChannel) === null || p === void 0 ? void 0 : p.getRemoteMedia(c.peer_uid), T = m != null && m.videoSSRC ? Ks.measureFromSubscribeStart(this.store.clientId, m.videoSSRC) : 0, D = m != null && m.audioSSRC ? Ks.measureFromSubscribeStart(this.store.clientId, m.audioSSRC) : 0; + c.B_ppad !== void 0 && c.B_ppvd !== void 0 && (this.onUploadPublishDuration && this.onUploadPublishDuration(c.peer_uid, c.B_ppad, c.B_ppvd, T > D ? T : D), this.trafficStatsPeerList.push(c.peer_uid)); + }), this.trafficStats = s; + } + updateUplinkStats(s) { + this.uplinkStats && this.uplinkStats.B_fir !== s.B_fir && ie.debug("[".concat(this.store.clientId, "]: Period fir changes to ").concat(s.B_fir)), this.uplinkStats = s; + } + static isRemoteVideoFreeze(s, c, p) { + if (!s) + return !1; + const m = !!p && c.framesDecodeFreezeTime > p.framesDecodeFreezeTime, T = !p || c.framesDecodeCount > p.framesDecodeCount; + return m || !T; + } + static isRemoteAudioFreeze(s) { + return !!s && s._isFreeze(); + } + isLocalVideoFreeze(s) { + return !(!s.inputFrame || !s.sentFrame) && s.inputFrame.frameRate > 5 && s.sentFrame.frameRate < 3; + } + updateLocalStats(s) { + Array.from(this.localStats.entries()).forEach((c) => { + let [p, m] = c; + switch (p) { + case Mt.LocalVideoTrack: + case Mt.LocalVideoLowTrack: { + const D = m, k = VS({}, T5), N = s.getStats(), U = s.getLocalMedia(p); + if (N) { + const V = N.videoSend.find((G) => G.ssrc === (U == null ? void 0 : U.ssrcs[0].ssrcId)); + if (V) { + const G = s.getLocalVideoSize(), K = s.getEncoderConfig(Mt.LocalVideoTrack); + V.codec !== "H264" && V.codec !== "H265" && V.codec !== "VP8" && V.codec !== "VP9" && V.codec !== "AV1X" && V.codec !== "AV1" || (k.codecType = V.codec), k.sendBytes = V.bytes, k.sendBitrate = D ? 8 * Math.max(0, k.sendBytes - D.sendBytes) : 0, V.inputFrame ? (k.captureFrameRate = V.inputFrame.frameRate, k.captureResolutionHeight = V.inputFrame.height, k.captureResolutionWidth = V.inputFrame.width) : G && (k.captureResolutionWidth = G.width, k.captureResolutionHeight = G.height), V.sentFrame ? (k.sendFrameRate = V.sentFrame.frameRate, k.sendResolutionHeight = V.sentFrame.height, k.sendResolutionWidth = V.sentFrame.width) : G && (k.sendResolutionWidth = G.width, k.sendResolutionHeight = G.height), V.avgEncodeMs && (k.encodeDelay = V.avgEncodeMs), K && K.bitrateMax && (k.targetSendBitrate = 1e3 * K.bitrateMax), k.sendPackets = V.packets, k.sendPacketsLost = V.packetsLost, k.sendJitterMs = V.jitterMs, k.sendRttMs = V.rttMs, k.totalDuration = D ? D.totalDuration + 1 : 1, k.totalFreezeTime = D ? D.totalFreezeTime : 0, this.isLocalVideoFreeze(V) && (k.totalFreezeTime += 1), V.scalabilityMode && this.scalabilityMode !== V.scalabilityMode && (ie.debug("[".concat(this.store.clientId, "]: The scalabilityMode of the video sending stream is ").concat(V.scalabilityMode)), this.scalabilityMode = V.scalabilityMode); + } + this.trafficStats && (k.currentPacketLossRate = (this.trafficStats.B_pvlr4 || 0) / 100); + } + var T; + this.localStats.set(p, k), ((D == null ? void 0 : D.sendResolutionWidth) !== k.sendResolutionWidth || (D == null ? void 0 : D.sendResolutionHeight) !== k.sendResolutionHeight) && ((T = this.onStatsChanged) === null || T === void 0 || T.call(this, "resolution", { width: k.sendResolutionWidth, height: k.sendResolutionHeight })), k && U && this.exceptionMonitor.setLocalVideoStats(this.store.uid, U.track, k); + break; + } + case Mt.LocalAudioTrack: { + const D = m, k = VS({}, C5), N = s.getStats(), U = s.getLocalMedia(p); + if (N) { + const V = N.audioSend.find((G) => G.ssrc === (U == null ? void 0 : U.ssrcs[0].ssrcId)); + if (V) { + if (V.codec !== "opus" && V.codec !== "aac" && V.codec !== "PCMU" && V.codec !== "PCMA" && V.codec !== "G722" || (k.codecType = V.codec), V.inputLevel) + k.sendVolumeLevel = Math.round(32767 * V.inputLevel); + else { + const G = s.getLocalAudioVolume(); + G && (k.sendVolumeLevel = Math.round(32767 * G)); + } + k.sendBytes = V.bytes, k.sendPackets = V.packets, k.sendPacketsLost = V.packetsLost, k.sendJitterMs = V.jitterMs, k.sendRttMs = V.rttMs, k.sendBitrate = D ? 8 * Math.max(0, k.sendBytes - D.sendBytes) : 0; + } + } + this.trafficStats && (k.currentPacketLossRate = (this.trafficStats.B_palr4 || 0) / 100), this.localStats.set(Mt.LocalAudioTrack, k), k && U && this.exceptionMonitor.setLocalAudioStats(this.store.uid, U.track, k); + break; + } + } + }); + } + updateRemoteStats(s) { + Array.from(this.remoteStats.entries()).forEach((c) => { + var p, m; + let [T, { videoStats: D, audioStats: k, videoPcStats: N }] = c; + const U = k, V = D, G = N, K = VS({}, UJ), q = VS({}, jJ), ue = VS({}, fNe), { audioTrack: oe, videoTrack: he, audioSSRC: Ce, videoSSRC: ke } = s.getRemoteMedia(T); + let Ge; + Ge = s instanceof ts ? s.getStats(!0) : s.getStats(); + const tt = (p = Ge) === null || p === void 0 ? void 0 : p.audioRecv.find((ht) => ht.ssrc === Ce), Ye = (m = Ge) === null || m === void 0 ? void 0 : m.videoRecv.find((ht) => ht.ssrc === ke), et = this.trafficStats && this.trafficStats.peer_delay.find((ht) => ht.peer_uid === T); + if (tt && (tt.codec !== "opus" && tt.codec !== "aac" && tt.codec !== "PCMU" && tt.codec !== "PCMA" && tt.codec !== "G722" || (K.codecType = tt.codec), tt.outputLevel ? K.receiveLevel = Math.round(32767 * tt.outputLevel) : oe && (K.receiveLevel = Math.round(32767 * oe.getVolumeLevel())), K.receiveBytes = tt.bytes, K.receivePackets = tt.packets, K.receivePacketsLost = tt.packetsLost, K.packetLossRate = K.receivePacketsLost / (K.receivePackets + K.receivePacketsLost), K.receiveBitrate = U ? 8 * Math.max(0, K.receiveBytes - U.receiveBytes) : 0, K.totalDuration = U ? U.totalDuration + 1 : 1, K.totalFreezeTime = U ? U.totalFreezeTime : 0, K.freezeRate = K.totalFreezeTime / K.totalDuration, K.receiveDelay = tt.jitterBufferMs, K.totalDuration > 10 && pA.isRemoteAudioFreeze(oe) && (K.totalFreezeTime += 1)), Ye) { + Ye.codec !== "H264" && Ye.codec !== "H265" && Ye.codec !== "VP8" && Ye.codec !== "VP9" && Ye.codec !== "AV1X" && Ye.codec !== "AV1" || (q.codecType = Ye.codec), q.receiveBytes = Ye.bytes, q.receiveBitrate = V ? 8 * Math.max(0, q.receiveBytes - V.receiveBytes) : 0, q.decodeFrameRate = Ye.decodeFrameRate < 0 ? 0 : Ye.decodeFrameRate, q.renderFrameRate = Ye.decodeFrameRate < 0 ? 0 : Ye.decodeFrameRate, Ye.outputFrame && (q.renderFrameRate = Ye.outputFrame.frameRate), Ye.receivedFrame ? (q.receiveFrameRate = Ye.receivedFrame.frameRate, q.receiveResolutionHeight = Ye.receivedFrame.height, q.receiveResolutionWidth = Ye.receivedFrame.width) : he && (q.receiveResolutionHeight = he._videoHeight || 0, q.receiveResolutionWidth = he._videoWidth || 0), Ye.framesRateFirefox !== void 0 && (q.receiveFrameRate = Math.round(Ye.framesRateFirefox)), q.receivePackets = Ye.packets, q.receivePacketsLost = Ye.packetsLost, q.packetLossRate = q.receivePacketsLost / (q.receivePackets + q.receivePacketsLost), q.totalDuration = V ? V.totalDuration + 1 : 1, q.totalFreezeTime = V ? V.totalFreezeTime : 0, q.receiveDelay = Ye.jitterBufferMs || 0; + const ht = !!ke && s.getRemoteVideoIsReady(ke); + he && ht && pA.isRemoteVideoFreeze(he, Ye, G) && (q.totalFreezeTime += 1), q.freezeRate = q.totalFreezeTime / q.totalDuration; + } + et && (K.end2EndDelay = et.B_ad, q.end2EndDelay = et.B_vd, K.transportDelay = et.B_ed, q.transportDelay = et.B_ed, K.currentPacketLossRate = et.B_ealr4 / 100, q.currentPacketLossRate = et.B_evlr4 / 100, ue.uplinkNetworkQuality = et.B_punq ? et.B_punq : 0, ue.downlinkNetworkQuality = et.B_pdnq ? et.B_pdnq : 0), this.remoteStats.set(T, { audioStats: K, videoStats: q, videoPcStats: Ye, networkStats: ue }), oe && this.exceptionMonitor.setRemoteAudioStats(oe, K), he && this.exceptionMonitor.setRemoteVideoStats(he, q); + }); + } + } + function Mte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function gA(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Mte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Mte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class kFe extends Ra { + constructor(s, c, p, m) { + super(), Z(this, "spec", void 0), Z(this, "token", void 0), Z(this, "websocket", void 0), Z(this, "pingpongTimer", void 0), Z(this, "reconnectMode", "retry"), Z(this, "serviceMode", void 0), Z(this, "reqId", 0), Z(this, "commandReqId", 0), Z(this, "handleWebSocketOpen", () => { + this.reconnectMode = "retry", this.startPingPong(); + }), Z(this, "handleWebSocketMessage", (T) => { + if (!T.data) + return; + const D = JSON.parse(T.data); + D.requestId ? this.emit("@".concat(D.requestId, "-").concat(D.sid), D) : this.serviceMode === Qo.INJECT ? this.emit(Nd.INJECT_STREAM_STATUS, D) : (vr.workerEvent(this.spec.sid, { actionType: "status", serverCode: D.code, workerType: this.serviceMode === Qo.TRANSCODE ? 1 : 2 }), this.emit(Nd.PUBLISH_STREAM_STATUS, D)); + }), this.spec = c, this.token = s, this.serviceMode = m, this.websocket = new Nx("live-streaming", p), this.websocket.on(Yr.CONNECTED, this.handleWebSocketOpen), this.websocket.on(Yr.ON_MESSAGE, this.handleWebSocketMessage), this.websocket.on(Yr.REQUEST_NEW_URLS, (T, D) => { + Ro(this, Nd.REQUEST_NEW_ADDRESS).then(T).catch(D); + }), this.websocket.on(Yr.RECONNECTING, () => { + this.websocket.reconnectMode = this.reconnectMode; + }); + } + init(s) { + return this.websocket.init(s); + } + request(s, c, p, m) { + return ye(this, null, function* () { + this.reqId += 1, s === "request" && (this.commandReqId += 1); + const T = this.commandReqId, D = this.reqId; + if (!D || !this.websocket) + throw new Je(_e.UNEXPECTED_ERROR); + const k = gA({ command: s, sdkVersion: Gh === "4.20.2" ? "0.0.1" : Gh, seq: D, requestId: D, allocate: p, cname: this.spec.cname, appId: this.spec.appId, sid: this.spec.sid, uid: this.spec.uid.toString(), ts: Math.floor(Date.now() / 1e3) }, c); + if (this.websocket.state === "closed") + throw new Je(_e.WS_DISCONNECT); + const N = () => new ot((K, q) => { + this.websocket.once(Yr.CLOSED, () => q(new Je(_e.WS_ABORT))), this.websocket.once(Yr.CONNECTED, K); + }); + this.websocket.state !== "connected" && (yield N()), k.clientRequest && (k.clientRequest.workerToken = this.token); + const U = new ot((K, q) => { + const ue = () => { + q(new Je(_e.WS_ABORT)); + }; + this.websocket.once(Yr.RECONNECTING, ue), this.websocket.once(Yr.CLOSED, ue), this.once("@".concat(D, "-").concat(this.spec.sid), (oe) => { + K(oe); + }); + }); + m && vr.workerEvent(this.spec.sid, gA(gA({}, m), {}, { requestId: T, actionType: "request", payload: JSON.stringify(c.clientRequest), serverCode: 0, code: 0 })); + const V = Date.now(); + this.websocket.sendMessage(k); + let G = null; + try { + G = yield U; + } catch (K) { + if (this.websocket.state === "closed") + throw K; + return yield N(), yield this.request(s, c, p); + } + return m && vr.workerEvent(this.spec.sid, gA(gA({}, m), {}, { requestId: T, actionType: "response", payload: JSON.stringify(G.serverResponse), serverCode: G.code, success: G.code === 200, responseTime: Date.now() - V })), G.code !== 200 && this.handleResponseError(G), G; + }); + } + tryNextAddress() { + this.reconnectMode = "tryNext", this.websocket.reconnect("tryNext"); + } + close() { + const s = Gh === "4.20.2" ? "0.0.1" : Gh; + this.reqId += 1, this.websocket.state === "connected" ? (this.websocket.sendMessage({ command: "request", appId: this.spec.appId, cname: this.spec.cname, uid: this.spec.uid.toString(), sdkVersion: s, sid: this.spec.sid, seq: this.reqId, ts: Math.floor(Date.now() / 1e3), requestId: this.reqId, clientRequest: { command: "DestroyWorker" } }), this.websocket.close(!1, !0)) : this.websocket.close(!1), this.pingpongTimer && (window.clearInterval(this.pingpongTimer), this.pingpongTimer = void 0); + } + handleResponseError(s) { + switch (s.code) { + case _o.LIVE_STREAM_RESPONSE_ALREADY_EXISTS_STREAM: + return void ie.warning("live stream response already exists stream"); + case _o.LIVE_STREAM_RESPONSE_TRANSCODING_PARAMETER_ERROR: + case _o.LIVE_STREAM_RESPONSE_BAD_STREAM: + case _o.LIVE_STREAM_RESPONSE_WM_PARAMETER_ERROR: + return new Je(_e.LIVE_STREAMING_INVALID_ARGUMENT, "", { code: s.code }).throw(); + case _o.LIVE_STREAM_RESPONSE_WM_WORKER_NOT_EXIST: + if (s.serverResponse.command === "UnpublishStream" || s.serverResponse.command === "UninjectStream") + return; + throw new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "live stream response wm worker not exist", { retry: !0 }); + case _o.LIVE_STREAM_RESPONSE_NOT_AUTHORIZED: + return new Je(_e.LIVE_STREAMING_PUBLISH_STREAM_NOT_AUTHORIZED, "", { code: s.code }).throw(); + case _o.LIVE_STREAM_RESPONSE_FAILED_LOAD_IMAGE: { + const c = new Je(_e.LIVE_STREAMING_WARN_FAILED_LOAD_IMAGE); + return this.emit(Nd.WARNING, c, s.serverResponse.url); + } + case _o.LIVE_STREAM_RESPONSE_REQUEST_TOO_OFTEN: { + const c = new Je(_e.LIVE_STREAMING_WARN_FREQUENT_REQUEST); + return this.emit(Nd.WARNING, c, s.serverResponse.url); + } + case _o.LIVE_STREAM_RESPONSE_NOT_FOUND_PUBLISH: + throw new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "live stream response wm worker not exist", { retry: !0 }); + case _o.LIVE_STREAM_RESPONSE_NOT_SUPPORTED: + return new Je(_e.LIVE_STREAMING_TRANSCODING_NOT_SUPPORTED, "", { code: s.code }).throw(); + case _o.LIVE_STREAM_RESPONSE_MAX_STREAM_NUM: { + const c = new Je(_e.LIVE_STREAMING_WARN_STREAM_NUM_REACH_LIMIT); + return this.emit(Nd.WARNING, c, s.serverResponse.url); + } + case _o.LIVE_STREAM_RESPONSE_INTERNAL_SERVER_ERROR: + return new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "", { code: s.code }).throw(); + case _o.LIVE_STREAM_RESPONSE_RESOURCE_LIMIT: + throw new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "live stream resource limit", { retry: !0, changeAddress: !0 }); + case _o.LIVE_STREAM_RESPONSE_WORKER_LOST: + case _o.LIVE_STREAM_RESPONSE_WORKER_QUIT: + if (s.serverResponse.command === "UnpublishStream" || s.serverResponse.command === "UninjectStream") + return; + throw new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "error fail send message", { retry: !0, changeAddress: !0 }); + case _o.ERROR_FAIL_SEND_MESSAGE: + if (s.serverResponse.command === "UnpublishStream" || s.serverResponse.command === "UninjectStream") + return; + if (s.serverResponse.command === "UpdateTranscoding" || s.serverResponse.command === "ControlStream") + return new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "error fail send message", { code: s.code }).throw(); + throw new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "error fail send message", { retry: !0, changeAddress: !0 }); + case _o.PUBLISH_STREAM_STATUS_ERROR_PUBLISH_BROKEN: + case _o.PUBLISH_STREAM_STATUS_ERROR_RTMP_CONNECT: + case _o.PUBLISH_STREAM_STATUS_ERROR_RTMP_HANDSHAKE: + case _o.PUBLISH_STREAM_STATUS_ERROR_RTMP_PUBLISH: + return new Je(_e.LIVE_STREAMING_CDN_ERROR, "", { code: s.code }).throw(); + } + } + startPingPong() { + this.pingpongTimer && window.clearInterval(this.pingpongTimer), this.pingpongTimer = window.setInterval(() => { + this.websocket.state === "connected" && this.request("ping", {}).catch(nM); + }, 6e3); + } + } + function kte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function fc(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? kte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : kte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class PFe extends Ra { + constructor(s) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Oo, p = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Oo; + super(), Z(this, "onLiveStreamWarning", void 0), Z(this, "onLiveStreamError", void 0), Z(this, "onInjectStatusChange", void 0), Z(this, "spec", void 0), Z(this, "retryTimeout", 1e4), Z(this, "connection", void 0), Z(this, "httpRetryConfig", void 0), Z(this, "wsRetryConfig", void 0), Z(this, "streamingTasks", /* @__PURE__ */ new Map()), Z(this, "isStartingStreamingTask", !1), Z(this, "taskMutex", new Ss("live-streaming")), Z(this, "cancelToken", Pc.CancelToken.source()), Z(this, "transcodingConfig", void 0), Z(this, "injectConfig", fc({}, DPe)), Z(this, "injectLoopTimes", 0), Z(this, "uapResponse", void 0), Z(this, "lastTaskId", 1), Z(this, "statusError", /* @__PURE__ */ new Map()), this.spec = s, this.httpRetryConfig = p, this.wsRetryConfig = c; + } + setTranscodingConfig(s) { + return ye(this, null, function* () { + const c = fc(fc({}, RPe), s); + c.videoCodecProfile !== 66 && c.videoCodecProfile !== 77 && c.videoCodecProfile !== 100 && (ie.debug("[".concat(this.spec.clientId, "] set transcoding config, fix video codec profile: ").concat(c.videoCodecProfile, " -> 100")), c.videoCodecProfile = 100), c.transcodingUsers || (c.transcodingUsers = c.userConfigs), c.transcodingUsers && (c.transcodingUsers = c.transcodingUsers.map((D) => fc(fc(fc({}, APe), D), {}, { zOrder: D.zOrder ? D.zOrder + 1 : 1 }))), function(D) { + za(D.width) || Wi(D.width, "config.width", 0, 1e4), za(D.height) || Wi(D.height, "config.height", 0, 1e4), za(D.videoBitrate) || Wi(D.videoBitrate, "config.videoBitrate", 1, 1e6), za(D.videoFrameRate) || Wi(D.videoFrameRate, "config.videoFrameRate"), za(D.lowLatency) || Qv(D.lowLatency, "config.lowLatency"), za(D.audioSampleRate) || qo(D.audioSampleRate, "config.audioSampleRate", [32e3, 44100, 48e3]), za(D.audioBitrate) || Wi(D.audioBitrate, "config.audioBitrate", 1, 128), za(D.audioChannels) || qo(D.audioChannels, "config.audioChannels", [1, 2, 3, 4, 5]), za(D.videoGop) || Wi(D.videoGop, "config.videoGop"), za(D.videoCodecProfile) || qo(D.videoCodecProfile, "config.videoCodecProfile", [66, 77, 100]), za(D.userCount) || Wi(D.userCount, "config.userCount", 0, 17), za(D.backgroundColor) || Wi(D.backgroundColor, "config.backgroundColor", 0, 16777215), za(D.userConfigExtraInfo) || Gs(D.userConfigExtraInfo, "config.userConfigExtraInfo", 0, 4096, !1), D.transcodingUsers && !za(D.transcodingUsers) && (em(D.transcodingUsers, "config.transcodingUsers"), D.transcodingUsers.forEach((k, N) => { + e5(k.uid), za(k.x) || Wi(k.x, "transcodingUser[".concat(N, "].x"), 0, 1e4), za(k.y) || Wi(k.y, "transcodingUser[".concat(N, "].y"), 0, 1e4), za(k.width) || Wi(k.width, "transcodingUser[".concat(N, "].width"), 0, 1e4), za(k.height) || Wi(k.height, "transcodingUser[".concat(N, "].height"), 0, 1e4), za(k.zOrder) || Wi(k.zOrder - 1, "transcodingUser[".concat(N, "].zOrder"), 0, 100), za(k.alpha) || Wi(k.alpha, "transcodingUser[".concat(N, "].alpha"), 0, 1, !1); + })), za(D.watermark) || r5(D.watermark, "watermark"), za(D.backgroundImage) || r5(D.backgroundImage, "backgroundImage"), D.images && !za(D.images) && (em(D.images, "config.images"), D.images.forEach((k, N) => { + r5(k, "images[".concat(N, "]")); + })); + }(c); + const p = []; + c.images && p.push(...c.images.map((D) => fc(fc(fc({}, t5), D), {}, { zOrder: 255 }))), c.backgroundImage && (p.push(fc(fc(fc({}, t5), c.backgroundImage), {}, { zOrder: 0 })), delete c.backgroundImage), c.watermark && (p.push(fc(fc(fc({}, t5), c.watermark), {}, { zOrder: 255 })), delete c.watermark), c.images = p, c.transcodingUsers && (c.userConfigs = c.transcodingUsers.map((D) => fc({}, D)), c.userCount = c.transcodingUsers.length, delete c.transcodingUsers); + const m = (c.userConfigs || []).map((D) => typeof D.uid == "number" ? ot.resolve(D.uid) : MJ(D.uid, this.spec, this.cancelToken.token, this.httpRetryConfig)); + if ((yield ot.all(m)).forEach((D, k) => { + c.userConfigs && c.userConfigs[k] && (c.userConfigs[k].uid = D); + }), this.transcodingConfig = c, this.connection) + try { + var T; + const D = yield this.connection.request("request", { clientRequest: { command: "UpdateTranscoding", transcodingConfig: this.transcodingConfig } }, !1, { command: "UpdateTranscoding", workerType: 1, requestByUser: !0, tid: Array.from(ip(T = this.streamingTasks).call(T)).map((k) => k.taskId).join("#") }); + ie.debug("[".concat(this.spec.clientId, "] update live transcoding config success, code: ").concat(D.code, ", config:"), JSON.stringify(this.transcodingConfig)); + } catch (D) { + if (!D.data || !D.data.retry) + throw D; + D.data.changeAddress && this.connection.tryNextAddress(), this.streamingTasks.forEach((k) => { + ie.warning("[".concat(this.spec.clientId, "] live streaming receive error"), D.toString(), "try to republish", k.url), this.startLiveStreamingTask(k.url, k.mode, D).then(() => { + ie.debug("[".concat(this.spec.clientId, "] live streaming republish ").concat(k.url, " success")); + }).catch((N) => { + ie.error("[".concat(this.spec.clientId, "] live streaming republish failed"), k.url, N.toString()), this.onLiveStreamError && this.onLiveStreamError(k.url, N); + }); + }); + } + }); + } + setInjectStreamConfig(s, c) { + this.injectConfig = Object.assign({}, this.injectConfig, s), this.injectLoopTimes = c; + } + startLiveStreamingTask(s, c, p) { + return ye(this, null, function* () { + var m; + if (Array.from(ip(m = this.streamingTasks).call(m)).find((N) => N.mode === Qo.INJECT) && c === Qo.INJECT) + return new Je(_e.LIVE_STREAMING_TASK_CONFLICT, "inject stream over limit").throw(); + if (!this.transcodingConfig && c === Qo.TRANSCODE) + throw new Je(_e.INVALID_OPERATION, "[LiveStreaming] no transcoding config found, can not start transcoding streaming task"); + let T = { command: "PublishStream", ts: Date.now(), url: s, uid: this.spec.uid.toString(), autoDestroyTime: 100, acceptImageTimeout: !0 }; + ie.debug("[".concat(this.spec.clientId, "] start live streaming ").concat(s, ", mode: ").concat(c)); + const D = yield this.taskMutex.lock(); + if (!this.connection && p) + return void D(); + if (this.streamingTasks.get(s) && !p) + return D(), new Je(_e.LIVE_STREAMING_TASK_CONFLICT).throw(); + try { + this.connection || (this.connection = yield this.connect(c)); + } catch (N) { + throw D(), N; + } + switch (c) { + case Qo.TRANSCODE: + T.transcodingConfig = fc({}, this.transcodingConfig); + break; + case Qo.RAW: + break; + case Qo.INJECT: + T = { cname: this.spec.cname, command: "InjectStream", sid: this.spec.sid, transcodingConfig: this.injectConfig, ts: Date.now(), url: s, loopTimes: this.injectLoopTimes }; + } + this.uapResponse && this.uapResponse.vid && (T.vid = this.uapResponse.vid), this.isStartingStreamingTask = !0; + const k = this.lastTaskId++; + try { + const N = new ot((V, G) => { + _s(this.retryTimeout).then(() => { + if (p) + return G(p); + const K = this.statusError.get(s); + return K ? (this.statusError.delete(s), G(K)) : void 0; + }); + }), U = yield ot.race([this.connection.request("request", { clientRequest: T }, !0, { url: s, command: "PublishStream", workerType: c === Qo.TRANSCODE ? 1 : 2, requestByUser: !p, tid: k.toString() }), N]); + this.isStartingStreamingTask = !1, ie.debug("[".concat(this.spec.clientId, "] live streaming started, code: ").concat(U.code)), this.streamingTasks.set(s, { clientRequest: T, mode: c, url: s, taskId: k }), D(); + } catch (N) { + if (D(), this.isStartingStreamingTask = !1, !N.data || !N.data.retry || p) + throw N; + return N.data.changeAddress ? (this.connection.tryNextAddress(), yield this.startLiveStreamingTask(s, c, N)) : yield this.startLiveStreamingTask(s, c, N); + } + }); + } + stopLiveStreamingTask(s) { + return new ot((c, p) => { + const m = this.streamingTasks.get(s); + if (!m || !this.connection) + return new Je(_e.UNEXPECTED_ERROR, "can not find streaming task to stop").throw(); + const T = m.mode; + m.abortTask = () => { + ie.debug("[".concat(this.spec.clientId, "] stop live streaming success(worker exception)")), this.streamingTasks.delete(s), c(); + }, this.connection.request("request", { clientRequest: { command: T === Qo.INJECT ? "UninjectStream" : "UnpublishStream", url: m.url } }, !1, { url: s, command: "UnPublishStream", workerType: T === Qo.TRANSCODE ? 1 : 2, requestByUser: !0, tid: (this.lastTaskId++).toString() }).then((D) => { + ie.debug("[".concat(this.spec.clientId, "] stop live streaming success, code: ").concat(D.code)), this.streamingTasks.delete(s), this.streamingTasks.size === 0 && T !== Qo.INJECT && (this.connection && this.connection.close(), this.connection = void 0), c(), T === Qo.INJECT && this.onInjectStatusChange && this.onInjectStatusChange(t_.INJECT_STREAM_STATUS_STOP_SUCCESS, this.spec.uid, s); + }).catch(p); + }); + } + controlInjectStream(s, c, p, m) { + return ye(this, null, function* () { + const T = this.streamingTasks.get(s); + if (!T || !this.connection || T.mode !== Qo.INJECT) + throw new Je(_e.INVALID_OPERATION, "can not find inject stream task to control"); + return (yield this.connection.request("request", { clientRequest: { command: "ControlStream", url: s, control: c, audioVolume: p, position: m } })).serverResponse; + }); + } + resetAllTask() { + var s; + const c = Array.from(ip(s = this.streamingTasks).call(s)); + this.terminate(); + for (const p of c) + this.startLiveStreamingTask(p.url, p.mode).catch((m) => { + this.onLiveStreamError && this.onLiveStreamError(p.url, m); + }); + } + terminate() { + this.cancelToken && this.cancelToken.cancel(), this.streamingTasks = /* @__PURE__ */ new Map(), this.isStartingStreamingTask = !1, this.statusError = /* @__PURE__ */ new Map(), this.cancelToken = Pc.CancelToken.source(), this.uapResponse = void 0, this.connection && this.connection.close(), this.connection = void 0; + } + connect(s) { + return ye(this, null, function* () { + if (this.connection) + throw new Je(_e.UNEXPECTED_ERROR, "live streaming connection has already connected"); + const c = yield Ro(this, jC.REQUEST_WORKER_MANAGER_LIST, s); + return this.uapResponse = c, this.connection = new kFe(c.workerToken, this.spec, this.wsRetryConfig, s), this.connection.on(Nd.WARNING, (p, m) => this.onLiveStreamWarning && this.onLiveStreamWarning(m, p)), this.connection.on(Nd.PUBLISH_STREAM_STATUS, (p) => this.handlePublishStreamServer(p)), this.connection.on(Nd.INJECT_STREAM_STATUS, (p) => this.handleInjectStreamServerStatus(p)), this.connection.on(Nd.REQUEST_NEW_ADDRESS, (p, m) => { + if (!this.connection) + return m(new Je(_e.UNEXPECTED_ERROR, "can not get new live streaming address list")); + Ro(this, jC.REQUEST_WORKER_MANAGER_LIST, s).then((T) => { + this.uapResponse = T, p(T.addressList); + }).catch(m); + }), yield this.connection.init(c.addressList), this.connection; + }); + } + handlePublishStreamServer(s) { + const c = s.serverStatus && s.serverStatus.url || "empty_url", p = this.streamingTasks.get(c), m = s.reason; + switch (s.code) { + case _o.PUBLISH_STREAM_STATUS_ERROR_PUBLISH_BROKEN: + case _o.PUBLISH_STREAM_STATUS_ERROR_RTMP_CONNECT: + case _o.PUBLISH_STREAM_STATUS_ERROR_RTMP_HANDSHAKE: + case _o.PUBLISH_STREAM_STATUS_ERROR_RTMP_PUBLISH: { + const D = new Je(_e.LIVE_STREAMING_CDN_ERROR, "", { code: s.code }); + if (p) + return ie.error(D.toString()), this.onLiveStreamError && this.onLiveStreamError(c, D); + if (!this.isStartingStreamingTask) + return; + this.statusError.set(c, D); + } + case _o.LIVE_STREAM_RESPONSE_FAILED_LOAD_IMAGE: { + const D = new Je(_e.LIVE_STREAMING_WARN_FAILED_LOAD_IMAGE, m); + return this.onLiveStreamWarning && this.onLiveStreamWarning(c, D); + } + case _o.LIVE_STREAM_RESPONSE_WORKER_LOST: + case _o.LIVE_STREAM_RESPONSE_WORKER_QUIT: { + var T; + if (!this.connection) + return; + this.connection.tryNextAddress(); + const D = Array.from(ip(T = this.streamingTasks).call(T)); + for (const k of D) + k.abortTask ? k.abortTask() : (ie.warning("[".concat(this.spec.clientId, "] publish stream status code"), s.code, "try to republish", k.url), this.startLiveStreamingTask(k.url, k.mode, new Je(_e.LIVE_STREAMING_INTERNAL_SERVER_ERROR, "", { code: s.code })).then(() => { + ie.debug("[".concat(this.spec.clientId, "] republish live stream success"), k.url); + }).catch((N) => { + ie.error(N.toString()), this.onLiveStreamError && this.onLiveStreamError(k.url, N); + })); + return; + } + } + } + handleInjectStreamServerStatus(s) { + const c = Number(s.uid), p = s.serverStatus && s.serverStatus.url; + switch (s.code) { + case 200: + return void (this.onInjectStatusChange && this.onInjectStatusChange(t_.INJECT_STREAM_STATUS_START_SUCCESS, c, p)); + case 451: + return this.onInjectStatusChange && this.onInjectStatusChange(t_.INJECT_STREAM_STATUS_START_ALREADY_EXISTS, c, p), void this.streamingTasks.delete(p); + case 453: + return this.onInjectStatusChange && this.onInjectStatusChange(t_.INJECT_STREAM_STATUS_START_UNAUTHORIZED, c, p), void this.streamingTasks.delete(p); + case 470: + return this.onInjectStatusChange && this.onInjectStatusChange(t_.INJECT_STREAM_STATUS_BROKEN, c, p), void this.streamingTasks.delete(p); + case 499: + return this.onInjectStatusChange && this.onInjectStatusChange(t_.INJECT_STREAM_STATUS_START_TIMEOUT, c, p), void this.streamingTasks.delete(p); + default: + return void ie.debug("inject stream server status", s); + } + } + hasUrl(s) { + return this.streamingTasks.has(s); + } + } + class gk { + constructor() { + Z(this, "destChannelMediaInfos", /* @__PURE__ */ new Map()), Z(this, "srcChannelMediaInfo", void 0); + } + setSrcChannelInfo(s) { + Qq(s), this.srcChannelMediaInfo = s; + } + addDestChannelInfo(s) { + Qq(s), this.destChannelMediaInfos.set(s.channelName, s); + } + removeDestChannelInfo(s) { + Qj(s), this.destChannelMediaInfos.delete(s); + } + getSrcChannelMediaInfo() { + return this.srcChannelMediaInfo; + } + getDestChannelMediaInfo() { + return this.destChannelMediaInfos; + } + } + function Pte(h) { + if (!(h instanceof gk)) + return new Je(_e.INVALID_PARAMS, "Config should be instance of [ChannelMediaRelayConfiguration]").throw(); + const s = h.getSrcChannelMediaInfo(), c = h.getDestChannelMediaInfo(); + if (!s) + return new Je(_e.INVALID_PARAMS, "srcChannelMediaInfo should not be empty").throw(); + if (c.size === 0) + return new Je(_e.INVALID_PARAMS, "destChannelMediaInfo should not be empty").throw(); + } + class NFe extends Ra { + constructor(s, c, p) { + super(), Z(this, "ws", void 0), Z(this, "requestId", 1), Z(this, "heartBeatTimer", void 0), Z(this, "joinInfo", void 0), Z(this, "clientId", void 0), Z(this, "onOpen", () => { + this.emit("open"), this.startHeartBeatCheck(); + }), Z(this, "onClose", (m) => { + this.emit("close"), this.dispose(); + }), Z(this, "onMessage", (m) => { + const T = JSON.parse(m.data); + if (!T || T.command !== "serverResponse" || !T.requestId) + return T && T.command === "serverStatus" && T.serverStatus && T.serverStatus.command ? (this.emit("status", T.serverStatus), void this.emit(T.serverStatus.command, T.serverStatus)) : void 0; + this.emit("req_".concat(T.requestId), T); + }), this.joinInfo = s, this.clientId = c, this.ws = new Nx("cross-channel-".concat(this.clientId), p), this.ws.on(Yr.RECONNECTING, () => { + this.ws.reconnectMode = "retry", this.emit("reconnecting"); + }), this.ws.on(Yr.CONNECTED, this.onOpen), this.ws.on(Yr.ON_MESSAGE, this.onMessage), this.ws.on(Yr.CLOSED, this.onClose); + } + isConnect() { + return this.ws.state === "connected"; + } + sendMessage(s) { + const c = this.requestId++; + return s.requestId = c, s.seq = c, this.ws.sendMessage(s), c; + } + waitStatus(s) { + return new ot((c, p) => { + const m = window.setTimeout(() => { + p(new Je(_e.TIMEOUT, "wait status timeout, status: ".concat(s))); + }, 5e3); + this.once(s, (T) => { + window.clearTimeout(m), T.state && T.state !== 0 ? p(new Je(_e.CROSS_CHANNEL_WAIT_STATUS_ERROR, "wait status error, status: ".concat(s))) : c(void 0); + }), this.once("dispose", () => { + window.clearTimeout(m), p(new Je(_e.WS_ABORT)); + }); + }); + } + request(s) { + return ye(this, null, function* () { + if (this.ws.state === "closed") + throw new Je(_e.WS_DISCONNECT); + const c = () => new ot((D, k) => { + this.ws.once(Yr.CLOSED, () => k(new Je(_e.WS_ABORT))), this.ws.once(Yr.CONNECTED, D); + }); + this.ws.state !== "connected" && (yield c()); + const p = this.sendMessage(s), m = new ot((D, k) => { + const N = () => { + k(new Je(_e.WS_ABORT)); + }; + this.ws.once(Yr.RECONNECTING, N), this.ws.once(Yr.CLOSED, N), this.once("req_".concat(p), D), _s(3e3).then(() => { + this.removeAllListeners("req_".concat(p)), this.ws.off(Yr.RECONNECTING, N), this.ws.off(Yr.CLOSED, N), k(new Je(_e.TIMEOUT, "cross channel ws request timeout")); + }); + }), T = yield m; + if (!T || T.code !== 200) + throw new Je(_e.CROSS_CHANNEL_SERVER_ERROR_RESPONSE, "response: ".concat(JSON.stringify(T))); + return T; + }); + } + connect(s) { + return ye(this, null, function* () { + this.ws.removeAllListeners(Yr.REQUEST_NEW_URLS), this.ws.on(Yr.REQUEST_NEW_URLS, (c) => { + c(s); + }), yield this.ws.init(s); + }); + } + dispose() { + this.clearHeartBeatCheck(), this.emit("dispose"), this.removeAllListeners(), this.ws.close(); + } + sendPing(s) { + const c = this.requestId++; + return s.requestId = c, this.ws.sendMessage(s), c; + } + startHeartBeatCheck() { + this.heartBeatTimer && window.clearInterval(this.heartBeatTimer), this.heartBeatTimer = window.setInterval(() => { + this.sendPing({ command: "ping", appId: this.joinInfo.appId, cname: this.joinInfo.cname, uid: this.joinInfo.uid.toString(), sid: this.joinInfo.sid, ts: +/* @__PURE__ */ new Date(), requestId: 0 }); + }, 3e3); + } + clearHeartBeatCheck() { + window.clearInterval(this.heartBeatTimer), this.heartBeatTimer = void 0; + } + } + class LFe extends Ra { + set state(s) { + s !== this._state && (s !== Yl.RELAY_STATE_FAILURE && (this.errorCode = r_.RELAY_OK), this.emit("state", s, this.errorCode), this._state = s); + } + get state() { + return this._state; + } + constructor(s, c, p, m, T) { + super(), Z(this, "joinInfo", void 0), Z(this, "sid", void 0), Z(this, "clientId", void 0), Z(this, "cancelToken", Pc.CancelToken.source()), Z(this, "workerToken", void 0), Z(this, "requestId", 0), Z(this, "signal", void 0), Z(this, "prevChannelMediaConfig", void 0), Z(this, "httpRetryConfig", void 0), Z(this, "_resolution", void 0), Z(this, "_state", Yl.RELAY_STATE_IDLE), Z(this, "errorCode", r_.RELAY_OK), Z(this, "onStatus", (D) => { + ie.debug("[".concat(this.clientId, "] ChannelMediaStatus: ").concat(JSON.stringify(D))), D && D.command && (D.command === "onAudioPacketReceived" && this.emit("event", ap.PACKET_RECEIVED_AUDIO_FROM_SRC), D.command === "onVideoPacketReceived" && this.emit("event", ap.PACKET_RECEIVED_VIDEO_FROM_SRC), D.command === "onSrcTokenPrivilegeDidExpire" && (this.errorCode = r_.SRC_TOKEN_EXPIRED, this.state = Yl.RELAY_STATE_FAILURE), D.command === "onDestTokenPrivilegeDidExpire" && (this.errorCode = r_.DEST_TOKEN_EXPIRED, this.state = Yl.RELAY_STATE_FAILURE)); + }), Z(this, "onReconnect", () => ye(this, null, function* () { + ie.debug("[".concat(this.clientId, "] ChannelMediaSocket disconnect, reconnecting")), this.emit("event", ap.NETWORK_DISCONNECTED), this.state = Yl.RELAY_STATE_IDLE, this.prevChannelMediaConfig && this.sendStartRelayMessage(this.prevChannelMediaConfig).catch((D) => { + this.state !== Yl.RELAY_STATE_IDLE && (ie.error("auto restart channel media relay failed", D.toString()), this.errorCode = r_.SERVER_CONNECTION_LOST, this.state = Yl.RELAY_STATE_FAILURE); + }); + })), this.joinInfo = s, this.clientId = c, this.sid = xj(), this.signal = new NFe(this.joinInfo, this.clientId, p), this.httpRetryConfig = m, this._resolution = T; + } + startChannelMediaRelay(s) { + return ye(this, null, function* () { + if (this.state !== Yl.RELAY_STATE_IDLE) + throw new Je(_e.INVALID_OPERATION); + this.state = Yl.RELAY_STATE_CONNECTING, yield this.connect(), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: connect success")); + try { + yield this.sendStartRelayMessage(s); + } catch (c) { + throw c.data && c.data.serverResponse && c.data.serverResponse.command === "SetSourceChannel" ? new Je(_e.CROSS_CHANNEL_FAILED_JOIN_SRC) : c.data && c.data.serverResponse && c.serverResponse.command === "SetDestChannelStatus" ? new Je(_e.CROSS_CHANNEL_FAILED_JOIN_DEST) : c.data && c.data.serverResponse && c.serverResponse.command === "StartPacketTransfer" ? new Je(_e.CROSS_CHANNEL_FAILED_PACKET_SENT_TO_DEST) : c; + } + this.prevChannelMediaConfig = s; + }); + } + updateChannelMediaRelay(s) { + return ye(this, null, function* () { + if (this.state !== Yl.RELAY_STATE_RUNNING) + throw new Je(_e.INVALID_OPERATION); + yield this.sendUpdateMessage(s), this.prevChannelMediaConfig = s; + }); + } + setVideoProfile(s) { + return ye(this, null, function* () { + if (this._resolution = s, this.state !== Yl.RELAY_STATE_RUNNING) + throw new Je(_e.INVALID_OPERATION); + const c = this.genMessage(ul.SetVideoProfile); + yield this.signal.request(c), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: setVideoProfile success")); + }); + } + stopChannelMediaRelay() { + return ye(this, null, function* () { + yield this.sendStopRelayMessage(), ie.debug("[".concat(this.clientId, "] stopChannelMediaRelay: send stop message success")), this.state = Yl.RELAY_STATE_IDLE, this.dispose(); + }); + } + dispose() { + ie.debug("[".concat(this.clientId, "] disposeChannelMediaRelay")), this.cancelToken.cancel(), this.cancelToken = Pc.CancelToken.source(), this.state = Yl.RELAY_STATE_IDLE, this.emit("dispose"), this.signal.dispose(), this.prevChannelMediaConfig = void 0; + } + connect() { + return ye(this, null, function* () { + const s = yield oNe(this.joinInfo, this.cancelToken.token, this.httpRetryConfig); + this.workerToken = s.workerToken, yield this.signal.connect(s.addressList), this.emit("event", ap.NETWORK_CONNECTED), this.signal.on("status", this.onStatus), this.signal.on("reconnecting", this.onReconnect); + }); + } + sendStartRelayMessage(s) { + return ye(this, null, function* () { + const c = this.genMessage(ul.StopPacketTransfer); + yield this.signal.request(c), yield this.signal.waitStatus("Normal Quit"), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: StopPacketTransfer success")); + const p = this.genMessage(ul.SetSdkProfile, s); + yield this.signal.request(p), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: SetSdkProfile success")); + const m = this.genMessage(ul.SetSourceChannel, s); + yield this.signal.request(m), yield this.signal.waitStatus("SetSourceChannelStatus"), this.emit("event", ap.PACKET_JOINED_SRC_CHANNEL), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: SetSourceChannel success")); + const T = this.genMessage(ul.SetSourceUserId, s); + yield this.signal.request(T), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: SetSourceUserId success")); + const D = this.genMessage(ul.SetDestChannel, s); + yield this.signal.request(D), yield this.signal.waitStatus("SetDestChannelStatus"), this.emit("event", ap.PACKET_JOINED_DEST_CHANNEL), ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: SetDestChannel success")); + const k = this.genMessage(ul.StartPacketTransfer, s); + yield this.signal.request(k), this.emit("event", ap.PACKET_SENT_TO_DEST_CHANNEL), this.state = Yl.RELAY_STATE_RUNNING, ie.debug("[".concat(this.clientId, "] startChannelMediaRelay: StartPacketTransfer success")), this.setVideoProfile(this._resolution); + }); + } + sendUpdateMessage(s) { + return ye(this, null, function* () { + const c = this.genMessage(ul.UpdateDestChannel, s); + yield this.signal.request(c), this.emit("event", ap.PACKET_UPDATE_DEST_CHANNEL), ie.debug("[".concat(this.clientId, "] sendUpdateMessage: UpdateDestChannel success")); + }); + } + sendStopRelayMessage() { + return ye(this, null, function* () { + const s = this.genMessage(ul.StopPacketTransfer); + yield this.signal.request(s), ie.debug("[".concat(this.clientId, "] sendStopRelayMessage: StopPacketTransfer success")); + }); + } + genMessage(s, c) { + const p = [], m = [], T = []; + this.requestId += 1; + const D = { appId: this.joinInfo.appId, cname: this.joinInfo.cname, uid: this.joinInfo.uid.toString(), sdkVersion: Gh, sid: this.sid, ts: Date.now(), requestId: this.requestId, seq: this.requestId, allocate: !0, clientRequest: {} }; + D.sdkVersion === "4.20.2" && (D.sdkVersion = "0.0.1"); + let k = null, N = null; + switch (s) { + case ul.SetSdkProfile: + return D.clientRequest = { command: "SetSdkProfile", type: "multi_channel" }, D; + case ul.SetSourceChannel: + if (N = c && c.getSrcChannelMediaInfo(), !N) + throw new Je(_e.UNEXPECTED_ERROR, "can not find source config"); + return D.clientRequest = { command: "SetSourceChannel", uid: "0", channelName: N.channelName, token: N.token || this.joinInfo.appId }, D; + case ul.SetSourceUserId: + if (N = c && c.getSrcChannelMediaInfo(), !N) + throw new Je(_e.UNEXPECTED_ERROR, "can not find source config"); + return D.clientRequest = { command: "SetSourceUserId", uid: N.uid + "" }, D; + case ul.SetDestChannel: + if (k = c && c.getDestChannelMediaInfo(), !k) + throw new Je(_e.UNEXPECTED_ERROR, "can not find dest config"); + return k.forEach((U) => { + p.push(U.channelName), m.push(U.uid + ""), T.push(U.token || this.joinInfo.appId); + }), D.clientRequest = { command: "SetDestChannel", channelName: p, uid: m, token: T }, D; + case ul.StartPacketTransfer: + return D.clientRequest = { command: "StartPacketTransfer" }, D; + case ul.Reconnect: + return D.clientRequest = { command: "Reconnect" }, D; + case ul.StopPacketTransfer: + return D.clientRequest = { command: "StopPacketTransfer" }, D; + case ul.UpdateDestChannel: + if (k = c && c.getDestChannelMediaInfo(), !k) + throw new Je(_e.UNEXPECTED_ERROR, "can not find dest config"); + return k.forEach((U) => { + p.push(U.channelName), m.push(U.uid + ""), T.push(U.token || this.joinInfo.appId); + }), D.clientRequest = { command: "UpdateDestChannel", channelName: p, uid: m, token: T }, D; + case ul.SetVideoProfile: + D.clientRequest = { command: "SetVideoProfile", width: this._resolution.width, height: this._resolution.height }; + } + return D; + } + } + function vk(h) { + var s = {}, c = !1; + function p(m, T) { + return c = !0, { done: !1, value: new P$(T = new N$(function(D) { + D(h[m](T)); + }), 1) }; + } + return s[EC !== void 0 && pK || "@@iterator"] = function() { + return this; + }, s.next = function(m) { + return c ? (c = !1, m) : p("next", m); + }, typeof h.throw == "function" && (s.throw = function(m) { + if (c) + throw c = !1, m; + return p("throw", m); + }), typeof h.return == "function" && (s.return = function(m) { + return c ? (c = !1, m) : p("return", m); + }), s; + } + var Nte = i(ate); + function Lte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Fte(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Lte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Lte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function Bte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Ute(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Bte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Bte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class Cs extends bM { + get peerConnectionState() { + return this.peerConnection.connectionState; + } + get iceConnectionState() { + return this.peerConnection.iceConnectionState; + } + get currentLocalDescription() { + return this.peerConnection.currentLocalDescription; + } + get currentRemoteDescription() { + return this.peerConnection.currentRemoteDescription; + } + get localCodecs() { + return [...new Set(this.localCapabilities && this.localCapabilities.videoCodecs.map((s) => s.rtpMap && s.rtpMap.encodingName.toLowerCase() || "").filter((s) => { + var c; + return rr(c = Object.keys(Qy)).call(c, s); + }))]; + } + constructor(s, c) { + super(s, c), Z(this, "store", void 0), Z(this, "peerConnection", void 0), Z(this, "remoteSDP", void 0), Z(this, "initialOffer", void 0), Z(this, "statsFilter", void 0), Z(this, "useRTX", !1), Z(this, "localCapabilities", void 0), Z(this, "localCandidateCount", 0), Z(this, "allCandidatesReceived", !1), Z(this, "establishPromise", void 0), Z(this, "mutex", new Ss("P2PConnection-mutex")), this.store = c, this.peerConnection = new RTCPeerConnection(Cs.resolvePCConfiguration(s), { optional: [{ googDscp: !0 }] }), this.statsFilter = hk(this.peerConnection, Le("STATS_UPDATE_INTERVAL"), void 0, qi() ? 1200 : void 0), this.bindPCEvents(), this.bindStatsEvents(), this.store.p2pId = this.store.p2pId + 1, this.establishPromise = this.establish(); + } + establish() { + return ye(this, null, function* () { + try { + const s = yield this.peerConnection.createOffer({ offerToReceiveAudio: !0, offerToReceiveVideo: !0 }); + if (!s.sdp) + throw new Error("Cannot get initialOffer.sdp when trying to establish PeerConnection."); + const c = cp(s.sdp), p = hA(s.sdp, { filterRTX: !this.useRTX, filterVideoFec: Le("FILTER_VIDEO_FEC"), filterAudioFec: Le("FILTER_AUDIO_FEC"), filterAudioCodec: ["opus"] }); + return this.localCapabilities = p, this.initialOffer = s, Ute(Ute({}, c), {}, { rtpCapabilities: { send: { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, recv: { audioCodecs: [], audioExtensions: [], videoCodecs: [], videoExtensions: [] }, sendrecv: p }, offerSDP: s.sdp }); + } catch (s) { + throw new mt(_e.GET_LOCAL_CONNECTION_PARAMS_FAILED, s.toString()); + } + }); + } + connect(s, c, p, m, T, D) { + return ye(this, null, function* () { + try { + if (!this.initialOffer) + throw new Error("Cannot establish P2PConnection without initial offer."); + this.remoteSDP = new class { + constructor(N) { + Z(this, "sessionDesc", void 0), Z(this, "localCapabilities", void 0), Z(this, "rtpCapabilities", void 0), Z(this, "candidates", void 0), Z(this, "iceParameters", void 0), Z(this, "dtlsParameters", void 0), Z(this, "setup", void 0), Z(this, "currentMidIndex", void 0), Z(this, "cname", void 0), N = ca(N); + const { remoteIceParameters: U, remoteDtlsParameters: V, candidates: G, remoteRTPCapabilities: K, remoteSetup: q, localCapabilities: ue, sdkCodec: oe, cname: he } = N, Ce = Da.parse(`v=0 +o=- 0 0 IN IP4 127.0.0.1 +s=AgoraGateway +t=0 0 +a=group:BUNDLE audio video +a=msid-semantic: WMS +a=ice-lite +m=audio 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=sendrecv +a=rtcp-mux +a=rtcp-rsize +a=mid:audio +m=video 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=sendrecv +a=rtcp-mux +a=rtcp-rsize +a=mid:video +`); + this.rtpCapabilities = K, this.candidates = G, this.iceParameters = U, this.dtlsParameters = V, this.setup = q, this.localCapabilities = ue, this.cname = he; + for (let ke = 0; ke < Ce.mediaDescriptions.length; ke++) { + const Ge = Ce.mediaDescriptions[ke]; + if (Ge.attributes.iceUfrag = U.iceUfrag, Ge.attributes.icePwd = U.icePwd, Ge.attributes.fingerprints = V.fingerprints, Ge.attributes.candidates = G, Ge.attributes.setup = q, Ge.media.mediaType === "video") { + Ge.media.fmts = K.videoCodecs.map((Ye) => Ye.payloadType.toString(10)); + let tt = K.videoCodecs.filter((Ye) => { + var et, ht; + return (et = Ye.rtpMap) === null || et === void 0 ? void 0 : rr(ht = et.encodingName.toLowerCase()).call(ht, oe); + }); + tt.length === 0 && (tt = K.videoCodecs), Ge.attributes.payloads = tt, Ge.attributes.extmaps = K.videoExtensions; + } + Ge.media.mediaType === "audio" && (Ge.media.fmts = K.audioCodecs.map((tt) => tt.payloadType.toString(10)), Ge.attributes.payloads = K.audioCodecs, Ge.attributes.extmaps = K.audioExtensions), Ce.mediaDescriptions[ke] = this.mungMediaDesc(Ge); + } + this.sessionDesc = Ce, this.currentMidIndex = Ce.mediaDescriptions.length - 1; + } + toString() { + return Da.print(this.sessionDesc); + } + send(N, U, V) { + const { ssrcs: G, ssrcGroups: K } = Bc(U, this.cname), q = this.sessionDesc.mediaDescriptions.find((he) => N === pr.VIDEO ? he.media.mediaType === "video" : he.media.mediaType === "audio"), ue = G[0].attributes.label, oe = G[0].attributes.mslabel; + return q.attributes.ssrcs = q.attributes.ssrcs.concat(G), q.attributes.ssrcGroups = q.attributes.ssrcGroups.concat(K), { id: ue, mslabel: oe }; + } + batchSend(N) { + return N.map((U) => { + let { kind: V, ssrcMsg: G } = U; + return this.send(V, G, void 0); + }); + } + stopSending(N) { + this.sessionDesc.mediaDescriptions.forEach((U) => { + const V = [], G = [], K = []; + U.attributes.ssrcs.forEach((q) => { + rr(N).call(N, q.attributes.label || "") ? K.push(q) : V.push(q); + }), U.attributes.ssrcGroups.forEach((q) => { + var ue; + rr(ue = K.map((oe) => oe.ssrcId)).call(ue, q.ssrcIds[0]) || G.push(q); + }), U.attributes.ssrcs = V, U.attributes.ssrcGroups = G; + }); + } + mute(N) { + const U = this.sessionDesc.mediaDescriptions.find((V) => V.attributes.mid === N); + if (!U) + throw new Error("mediaDescription not found with ".concat(N, " in remote SDP when calling RemoteSDP.mute.")); + U.attributes.direction = "inactive"; + } + unmute(N) { + const U = this.sessionDesc.mediaDescriptions.find((V) => V.attributes.mid === N); + if (!U) + throw new Error("mediaDescription not found with ".concat(N, " in remote SDP when calling RemoteSDP.unmute.")); + U.attributes.direction = "sendonly"; + } + receive(N, U, V) { + N.forEach((G, K) => { + const q = G._mediaStreamTrack, ue = this.sessionDesc.mediaDescriptions.findIndex((he) => he.attributes.mid === q.kind), oe = this.mungRecvMediaDsec(this.sessionDesc.mediaDescriptions[ue], G); + this.sessionDesc.mediaDescriptions[ue] = oe; + }); + } + stopReceiving(N) { + } + updateCandidates(N) { + N === Ys.TCP ? this.candidates.forEach((U) => { + this.candidates.findIndex((V) => V.transport === "tcp" && V.connectionAddress === U.connectionAddress && V.port === U.port) === -1 && this.candidates.push(Fte(Fte({}, U), {}, { foundation: "tcpcandidate", priority: Number(U.priority) - 1 + "", transport: "tcp", port: Number(U.port) + 90 + "" })); + }) : this.candidates = this.candidates.filter((U) => U.transport !== "tcp"); + for (const U of this.sessionDesc.mediaDescriptions) + U.attributes.candidates = this.candidates; + } + restartICE(N) { + N = ca(N), this.iceParameters = N, this.sessionDesc.mediaDescriptions.forEach((U) => { + U.attributes.iceUfrag = N.iceUfrag, U.attributes.icePwd = N.icePwd; + }); + } + predictReceivingMids(N) { + const U = []; + for (let V = 0; V < N; V++) + U.push((this.currentMidIndex + V + 1).toString(10)); + return U; + } + mungRecvMediaDsec(N, U) { + const V = ca(N); + return __(V, U), fk(V, U), V; + } + updateRecvMedia(N, U) { + const V = this.sessionDesc.mediaDescriptions.findIndex((G) => G.attributes.mid === N); + if (V !== -1) { + const G = this.mungRecvMediaDsec(this.sessionDesc.mediaDescriptions[V], U); + this.sessionDesc.mediaDescriptions[V] = G; + } + } + bumpMid(N) { + this.currentMidIndex += N; + } + updateTrackLabel(N, U, V) { + const G = this.sessionDesc.mediaDescriptions.find((q) => N === pr.VIDEO ? q.attributes.mid === "video" : q.attributes.mid === "audio"); + if (G) { + const q = G.attributes.ssrcs.find((ue) => ue.attributes.label === U); + var K; + q && (q.attributes.label = V, (K = q.attributes.msid) === null || K === void 0 || K.replace(U, V)); + } + } + mungMediaDesc(N) { + const U = ca(N); + return dk(U), function(V) { + const G = V.attributes.extmaps.find((K) => K.extensionName === "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"); + G && V.attributes.extmaps.splice(V.attributes.extmaps.indexOf(G), 1), V.attributes.payloads.forEach((K) => { + const q = K.rtcpFeedbacks.findIndex((ue) => ue.type === "transport-cc"); + q !== -1 && K.rtcpFeedbacks.splice(q, 1); + }); + }(U), U; + } + getSSRC(N) { + for (const U of this.sessionDesc.mediaDescriptions) + for (const V of U.attributes.ssrcs) + if (V.attributes.label === N) + return [V]; + } + }({ remoteIceParameters: s, remoteDtlsParameters: c, candidates: p, remoteRTPCapabilities: m.send, remoteSetup: T, localCapabilities: this.localCapabilities, sdkCodec: this.store.codec, cname: D }); + const k = this.remoteSDP.toString(); + yield this.peerConnection.setLocalDescription(this.initialOffer), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: k }); + } catch (k) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.connect failed; ".concat(k.toString())); + } + }); + } + updateRemoteRTPCapabilities(s, c) { + return ye(this, null, function* () { + throw new mt(_e.NOT_SUPPORTED, "Planb mode does not support createDataChannels."); + }); + } + send(s, c) { + var p = this; + return yu(function* () { + const m = yield En(p.mutex.lock()); + try { + if (!p.remoteSDP) + throw new Error("Cannot call P2PConnection.send before remote SDP created"); + const T = s.map((K) => p.peerConnection.addTrack(K._mediaStreamTrack)), D = yield En(p.peerConnection.createOffer()), k = Da.parse(D.sdp), N = s.map((K) => { + const q = K._mediaStreamTrack, ue = k.mediaDescriptions.find((oe) => oe.attributes.mid === q.kind); + if (!ue) + throw new Error("Cannot extract ssrc from mediaDescription."); + return function(oe, he, Ce) { + const ke = oe.attributes.ssrcs.filter((tt) => tt.attributes.label === he), Ge = oe.attributes.ssrcGroups; + if (ke.length === 0) + throw new Error("Cannot extract ssrc from plan-b SDP."); + if (Ge && ke.length > 1) { + const tt = Ge.find((Ye) => Ye.ssrcIds.indexOf(ke[0].ssrcId) !== -1); + return tt ? [{ ssrcId: tt.ssrcIds[0], rtx: Ce ? tt.ssrcIds[1] : void 0 }] : [{ ssrcId: ke[0].ssrcId }]; + } + return [{ ssrcId: ke[0].ssrcId }]; + }(ue, q.id, p.useRTX); + }); + let U; + try { + U = yield N; + } catch (K) { + throw T.forEach((q) => { + ks() && q.replaceTrack(null), p.peerConnection.removeTrack(q); + }), K; + } + const V = p.mungSendOfferSDP(D.sdp, s); + p.remoteSDP.receive(s, c, U); + const G = p.remoteSDP.toString(); + return yield En(p.peerConnection.setLocalDescription({ type: "offer", sdp: V })), yield En(p.applySendEncodings(T, s)), yield En(p.peerConnection.setRemoteDescription({ type: "answer", sdp: G })), s.map((K, q) => { + const ue = K._mediaStreamTrack.id; + return { localSSRC: N[q], id: ue }; + }); + } catch (T) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.send failed; ".concat(T.toString())); + } finally { + m(); + } + })(); + } + stopSending(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopSending before remote SDP created"); + const c = this.peerConnection.getSenders().filter((T) => { + var D; + return s.indexOf(((D = T.track) === null || D === void 0 ? void 0 : D.id) || "") !== -1; + }); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length when trying to call P2PConnection.stopSending."); + c.map((T) => { + ks() && T.replaceTrack(null), this.peerConnection.removeTrack(T); + }); + const p = yield this.peerConnection.createOffer(); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.stopReceiving(s); + const m = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: m }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.stopSending failed; ".concat(c.toString())); + } + }); + } + receive(s, c, p, m) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.receive ".concat(s, " before remoteSDP created.")); + const { id: T, mslabel: D } = this.remoteSDP.send(s, c, m), k = new ot((V, G) => { + const K = setTimeout(() => { + G(new Error("Cannot receive track, id: ".concat(T))); + }, 1e4), q = (ue) => { + const oe = yi(); + if ((oe.name === "Safari" && Number(oe.version) === 11 || Rl()) && ue.track.id !== T && ue.streams[0].id === D) { + var he; + const Ce = ue.streams[0].getTracks()[0]; + return (he = this.remoteSDP) === null || he === void 0 || he.updateTrackLabel(s, T, ue.track.id), this.peerConnection.removeEventListener("track", q), clearTimeout(K), void V(Ce); + } + if (ue.track.id === T) + return this.peerConnection.removeEventListener("track", q), clearTimeout(K), void V(ue.track); + }; + this.peerConnection.addEventListener("track", q); + }), N = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: N }); + const U = yield this.peerConnection.createAnswer(); + return yield this.peerConnection.setLocalDescription(U), { track: yield k, id: T }; + } catch (T) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.receive failed; ".concat(T.toString())); + } + }); + } + stopReceiving(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopReceiving before remote SDP created."); + this.remoteSDP.stopSending(s); + const c = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const p = yield this.peerConnection.createAnswer(); + yield this.peerConnection.setLocalDescription(p); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection stopReceiving failed; ".concat(c.toString())); + } + }); + } + muteRemote(s) { + return ye(this, null, function* () { + }); + } + unmuteRemote(s) { + return ye(this, null, function* () { + }); + } + muteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.muteLocal before remote SDP created."); + const c = this.peerConnection.getSenders().filter((p) => { + var m; + return s.indexOf(((m = p.track) === null || m === void 0 ? void 0 : m.id) || "") !== -1; + }); + if (c.length !== s.length) + throw new Error("sender' length doesn't match mids' length."); + c.map((p) => { + if (ks() && p.track) + p.track.enabled = !1; + else { + const m = p.getParameters(); + m.encodings.forEach((T) => T.active = !1), p.setParameters(m); + } + }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.muteLocal failed; ".concat(c.toString())); + } + }); + } + unmuteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.unmuteLocal before remote SDP created."); + const c = this.peerConnection.getSenders().filter((T) => { + var D; + return s.indexOf(((D = T.track) === null || D === void 0 ? void 0 : D.id) || "") !== -1; + }); + if (c.length !== s.length) + throw new Error("Senders' length doesn't match mids' length."); + c.map((T) => ye(this, null, function* () { + if (ks() && T.track) + T.track.enabled = !0; + else { + const D = T.getParameters(); + D.encodings.forEach((k) => k.active = !0), yield T.setParameters(D); + } + })); + const p = yield this.peerConnection.createOffer(); + yield this.peerConnection.setLocalDescription(p); + const m = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: m }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.unmuteLocal failed; ".concat(c.toString())); + } + }); + } + restartICE(s) { + var c = this; + return yu(function* () { + const p = yield En(c.mutex.lock("From P2PConnection.restartICE")); + try { + if (!c.remoteSDP) + throw new Error("Cannot restartICE before remoteSDP created."); + if (_i().supportPCSetConfiguration) { + const N = c.peerConnection.getConfiguration(), U = s === Ys.RELAY ? "relay" : "all"; + N.iceTransportPolicy !== U && (ie.debug("[".concat(c.store.clientId, "] restartICE change iceTransportPolicy from [").concat(N.iceTransportPolicy, "] to [").concat(U, "]")), N.iceTransportPolicy = U, c.peerConnection.setConfiguration(N)); + } else if (s === Ys.RELAY) + return; + s !== Ys.RELAY && c.remoteSDP.updateCandidates(s); + const m = yield En(c.peerConnection.createOffer({ iceRestart: !0 })); + if (!m.sdp) + throw new Error("Cannot restartICE because restart offer SDP does not exist."); + const T = cp(m.sdp), { remoteIceParameters: D } = yield T.iceParameters; + c.remoteSDP.restartICE(D); + const k = c.remoteSDP.toString(); + yield En(c.peerConnection.setLocalDescription(m)), yield En(c.peerConnection.setRemoteDescription({ type: "answer", sdp: k })); + } catch (m) { + ie.warning("[".concat(c.store.clientId, "] restart ICE failed, abort operation"), m); + } finally { + p(); + } + })(); + } + close() { + var s; + this.peerConnection.close(), (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, "closed"), this.unbindPCEvents(), this.unbindStatsEvents(), this.removeAllListeners(), this.statsFilter.destroy(); + } + getStats() { + return this.statsFilter.getStats(); + } + getRemoteVideoIsReady(s) { + return this.statsFilter.getVideoIsReady(s); + } + updateEncoderConfig(s, c) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.updateEncoderConfig before remote SDP created."); + const p = yield this.peerConnection.createOffer(), m = this.mungSendOfferSDP(p.sdp, [c]); + this.remoteSDP.updateRecvMedia(c._mediaStreamTrack.kind, c); + const T = this.remoteSDP.toString(); + yield this.peerConnection.setLocalDescription({ type: "offer", sdp: m }), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (p) { + throw new mt(_e.EXCHANGE_SDP_FAILED, p.toString()); + } + }); + } + updateSendParameters(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getSenders().filter((m) => { + var T; + return ((T = m.track) === null || T === void 0 ? void 0 : T.id) === s; + }); + p.length === 1 && (yield this.applySendEncodings(p, [c])); + }); + } + setStatsRemoteVideoIsReady(s, c) { + this.statsFilter.setVideoIsReady2(s, c); + } + replaceTrack(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getSenders().find((m) => { + var T; + return ((T = m.track) === null || T === void 0 ? void 0 : T.id) === c; + }); + p && (yield p.replaceTrack(s._mediaStreamTrack)); + }); + } + createDataChannels(s, c) { + throw new mt(_e.NOT_SUPPORTED, "Planb mode does not support createDataChannels."); + } + stopDataChannels(s) { + throw new mt(_e.NOT_SUPPORTED, "Planb mode does not support stopDataChannels."); + } + bindPCEvents() { + this.peerConnection.oniceconnectionstatechange = () => { + var s; + (s = this.onICEConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.iceConnectionState); + }, this.peerConnection.onconnectionstatechange = () => { + var s; + (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.connectionState); + }, this.peerConnection.onicecandidate = (s) => { + s.candidate ? this.localCandidateCount += 1 : (this.peerConnection.onicecandidate = null, this.allCandidatesReceived = !0, ie.debug("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] local candidate count"), this.localCandidateCount)); + }, setTimeout(() => { + this.allCandidatesReceived || (this.allCandidatesReceived = !0, ie.debug("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] onicecandidate timeout, local candidate count"), this.localCandidateCount)); + }, Le("CANDIDATE_TIMEOUT")); + } + unbindPCEvents() { + this.peerConnection.oniceconnectionstatechange = null, this.peerConnection.onconnectionstatechange = null, this.peerConnection.onsignalingstatechange = null, this.peerConnection.onicecandidateerror = null, this.peerConnection.onicecandidate = null, this.peerConnection.ontrack = null; + } + static resolvePCConfiguration(s) { + const c = { iceServers: [], sdpSemantics: "plan-b" }; + return s.iceServers ? c.iceServers = s.iceServers : s.turnServer && s.turnServer.mode !== "off" && (OC(s.turnServer.servers) ? c.iceServers = s.turnServer.servers : (c.iceServers && c.iceServers.push(...Cs.turnServerConfigToIceServers(s.turnServer.servers)), Le("USE_TURN_SERVER_OF_GATEWAY") && c.iceServers && s.turnServer.serversFromGateway && c.iceServers.push(...Cs.turnServerConfigToIceServers(s.turnServer.serversFromGateway)), s.turnServer.servers.concat(s.turnServer.serversFromGateway || []).forEach((p) => { + p.forceturn && (c.iceTransportPolicy = "relay"); + }))), c; + } + static turnServerConfigToIceServers(s) { + const c = []; + return s.forEach((p) => { + p.security ? p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turns:".concat(p.turnServerURL, ":").concat(p.tcpport, "?transport=tcp") }) : (p.udpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.udpport, "?transport=udp") }), p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.tcpport, "?transport=tcp") })); + }), c; + } + updateRtpSenderEncodings(s, c) { + return ye(this, null, function* () { + var p; + if (c || (c = this.peerConnection.getSenders().find((U) => { + var V; + return ((V = U.track) === null || V === void 0 ? void 0 : V.id) === s._mediaStreamTrack.id; + })), !c) + return ie.warn("[".concat(s.getTrackId(), "] no rtpSender found}")); + if (!_i().supportSetRtpSenderParameters) + return ie.warn("Browser not support set rtp-sender parameters"); + const m = {}, T = {}; + if (s instanceof In) + switch (s._optimizationMode) { + case "motion": + m.degradationPreference = "maintain-framerate"; + break; + case "detail": + m.degradationPreference = "maintain-resolution"; + break; + default: + m.degradationPreference = "balanced"; + } + if (Le("DSCP_TYPE") && Zy()) { + var D; + const U = Le("DSCP_TYPE"); + rr(D = ["very-low", "low", "medium", "high"]).call(D, U) && (T.networkPriority = U); + } + const k = c.getParameters(), N = (p = k.encodings) === null || p === void 0 ? void 0 : p[0]; + N && Object.assign(N, T), Object.assign(k, m), ie.debug("[".concat(s.getTrackId(), "] updateRtpSenderEncodings: ").concat(JSON.stringify(k.encodings))), yield c.setParameters(k); + }); + } + applySendEncodings(s, c) { + return ye(this, null, function* () { + try { + if (!_i().supportSetRtpSenderParameters || s.length !== c.length) + return; + for (let p = 0; p < s.length; p++) { + const m = s[p], T = c[p]; + m && T && (yield this.updateRtpSenderEncodings(T, m)); + } + } catch (p) { + ie.debug("[".concat(this.store.clientId, "] Apply RTPSendEncodings failed.")); + } + }); + } + mungSendOfferSDP(s, c) { + const p = Da.parse(s); + return c.forEach((m, T) => { + const D = m._mediaStreamTrack, k = p.mediaDescriptions.find((N) => N.attributes.mid === D.kind); + k && __(k, m); + }), Da.print(p); + } + bindStatsEvents() { + this.statsFilter.onFirstAudioReceived = (s) => { + var c; + (c = this.onFirstAudioReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoReceived = (s) => { + var c; + (c = this.onFirstVideoReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstAudioDecoded = (s) => { + var c; + (c = this.onFirstAudioDecoded) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoDecoded = (s, c, p) => { + var m; + (m = this.onFirstVideoDecoded) === null || m === void 0 || m.call(this, s, c, p); + }, this.statsFilter.onSelectedLocalCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedLocalCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onSelectedRemoteCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedRemoteCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }; + } + unbindStatsEvents() { + this.statsFilter.onFirstAudioReceived = void 0, this.statsFilter.onFirstVideoReceived = void 0, this.statsFilter.onFirstAudioDecoded = void 0, this.statsFilter.onFirstVideoDecoded = void 0, this.statsFilter.onSelectedLocalCandidateChanged = void 0, this.statsFilter.onSelectedRemoteCandidateChanged = void 0; + } + batchReceive(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.batchReceive before remoteSDP created."); + const c = this.remoteSDP.batchSend(s).map((T, D) => { + let { id: k, mslabel: N } = T; + const { kind: U } = s[D]; + return new ot((V, G) => { + const K = setTimeout(() => { + G(new Error("Cannot receive track, id: ".concat(k))); + }, 1e4), q = (ue) => { + const oe = yi(); + if (oe.name === "Safari" && Number(oe.version) === 11 && ue.track.id !== k && ue.streams[0].id === N) { + var he; + const Ce = ue.streams[0].getTracks()[0]; + return (he = this.remoteSDP) === null || he === void 0 || he.updateTrackLabel(U, k, ue.track.id), this.peerConnection.removeEventListener("track", q), clearTimeout(K), void V({ track: Ce, id: k }); + } + if (ue.track.id === k) + return this.peerConnection.removeEventListener("track", q), clearTimeout(K), void V({ track: ue.track, id: k }); + }; + this.peerConnection.addEventListener("track", q); + }); + }), p = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: p }); + const m = yield this.peerConnection.createAnswer(); + return yield this.peerConnection.setLocalDescription(m), yield ot.all(c); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.receive failed; ".concat(c.toString())); + } + }); + } + getRemoteSSRC(s) { + return ye(this, null, function* () { + if (!this.remoteSDP) + return; + const c = this.remoteSDP.getSSRC(s); + return c == null ? void 0 : c[0].ssrcId; + }); + } + setConfiguration(s) { + if (_i().supportPCSetConfiguration) { + const c = Cs.resolvePCConfiguration(s); + this.peerConnection.setConfiguration(c); + } + } + } + function ed(h, s, c) { + const p = h[s]; + if (typeof p != "function") + throw new Error("Cannot use mutex on object property."); + return c.value = function() { + return ye(this, arguments, function* () { + const m = this.mutex, T = yield m.lock("Locking from P2PConnection.".concat(s)); + try { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + return yield p.apply(this, k); + } finally { + T(); + } + }); + }, c; + } + function jte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function E_(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? jte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : jte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + St([ed, ge("design:type", Function), ge("design:paramtypes", [Object, Object, Array, Object, String, String]), ge("design:returntype", ot)], Cs.prototype, "connect", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Cs.prototype, "stopSending", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [String, Array, String, Object]), ge("design:returntype", ot)], Cs.prototype, "receive", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Cs.prototype, "stopReceiving", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], Cs.prototype, "muteRemote", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], Cs.prototype, "unmuteRemote", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Cs.prototype, "muteLocal", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Cs.prototype, "unmuteLocal", null), St([ed, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], Cs.prototype, "close", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], Cs.prototype, "updateEncoderConfig", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], Cs.prototype, "updateSendParameters", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [Xs, String]), ge("design:returntype", ot)], Cs.prototype, "replaceTrack", null), St([ed, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], Cs.prototype, "getRemoteSSRC", null); + const vA = "9", $te = 4e4; + function Vte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function dT(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Vte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Vte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class to extends bM { + get currentLocalDescription() { + return this.peerConnection.currentLocalDescription; + } + get currentRemoteDescription() { + return this.peerConnection.currentRemoteDescription; + } + get peerConnectionState() { + return this.peerConnection.connectionState; + } + get iceConnectionState() { + return this.peerConnection.iceConnectionState; + } + get dtlsTransportState() { + var s, c; + return (s = (c = this.peerConnection.getReceivers()[0]) === null || c === void 0 || (c = c.transport) === null || c === void 0 ? void 0 : c.state) !== null && s !== void 0 ? s : null; + } + get localCodecs() { + return [...new Set(this.localCapabilities && this.localCapabilities.send.videoCodecs.map((s) => s.rtpMap && s.rtpMap.encodingName.toLowerCase() || "").filter((s) => { + var c; + return rr(c = Object.keys(Qy)).call(c, s); + }))]; + } + constructor(s, c) { + super(s, c), Z(this, "store", void 0), Z(this, "peerConnection", void 0), Z(this, "remoteSDP", void 0), Z(this, "initialOffer", void 0), Z(this, "transportEventReceiver", void 0), Z(this, "statsFilter", void 0), Z(this, "useXR", Le("USE_XR")), Z(this, "localCapabilities", void 0), Z(this, "remoteCodecs", void 0), Z(this, "localCandidateCount", 0), Z(this, "allCandidatesReceived", !1), Z(this, "dataStreamChannelMap", /* @__PURE__ */ new Map()), Z(this, "establishPromise", void 0), Z(this, "recoveredDataChannelIds", []), Z(this, "currentDataChannelId", 1), Z(this, "mutex", new Ss("P2PConnection-mutex")), this.store = c, this.peerConnection = new RTCPeerConnection(to.resolvePCConfiguration(s), { optional: [{ googDscp: !0 }] }), this.statsFilter = hk(this.peerConnection, Le("STATS_UPDATE_INTERVAL"), void 0, qi() ? 1200 : void 0), this.bindPCEvents(), this.bindStatsEvents(), this.store.p2pId = this.store.p2pId + 1, this.establishPromise = this.establish(); + } + updateRemoteRTPCapabilities(s, c) { + return ye(this, null, function* () { + if (this.remoteCodecs = c, !this.remoteSDP) + return void ie.debug("[P2PConnection] cannot updateRemoteRTPCapabilities before remote SDP created, local codecs: ".concat(this.localCodecs, ", codecs: ").concat(c)); + if (this.remoteSDP.updateRemoteCodec(s, c, this.store.codec)) { + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "muteLocal"); + yield this.peerConnection.setLocalDescription(p); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } else + ie.debug("[P2PConnection] updateRemoteRTPCapabilities no need to exchange SDP."); + }); + } + establish() { + return ye(this, null, function* () { + try { + this.peerConnection.addTransceiver("video", { direction: "recvonly" }), this.peerConnection.addTransceiver("audio", { direction: "recvonly" }); + const s = yield this.peerConnection.createOffer(); + if (!s.sdp) + throw new Error("Cannot get initialOffer.sdp when trying to establish PeerConnection."); + const c = cp(s.sdp), p = yield z$({ filterRTX: !Le("USE_PUB_RTX") && !Le("USE_SUB_RTX"), filterVideoFec: Le("FILTER_VIDEO_FEC"), filterAudioFec: Le("FILTER_AUDIO_FEC"), filterVideoCodec: Le("FILTER_VIDEO_CODEC") }, { useXR: this.useXR }); + return this.localCapabilities = uT(p), this.initialOffer = s, dT(dT({}, c), {}, { rtpCapabilities: p, offerSDP: s.sdp }); + } catch (s) { + throw new mt(_e.GET_LOCAL_CONNECTION_PARAMS_FAILED, s.toString()); + } + }); + } + connect(s, c, p, m, T, D) { + return ye(this, null, function* () { + try { + if (!this.initialOffer) + throw new Error("Cannot establish P2PConnection without initial offer."); + this.remoteSDP = new class { + get localCapabilities() { + return ca(this._localCapabilities); + } + get rtpCapabilities() { + return ca(this._rtpCapabilities); + } + get candidates() { + return ca(this._candidates); + } + get iceParameters() { + return ca(this._iceParameters); + } + get dtlsParameters() { + return ca(this._dtlsParameters); + } + constructor(q) { + Z(this, "sessionDesc", void 0), Z(this, "_localCapabilities", void 0), Z(this, "_rtpCapabilities", void 0), Z(this, "_candidates", void 0), Z(this, "_iceParameters", void 0), Z(this, "_dtlsParameters", void 0), Z(this, "setup", void 0), Z(this, "currentMidIndex", void 0), Z(this, "cname", void 0), Z(this, "firefoxSsrcMidMap", /* @__PURE__ */ new Map()), q = ca(q); + const { remoteIceParameters: ue, remoteDtlsParameters: oe, candidates: he, remoteRTPCapabilities: Ce, remoteSetup: ke, localCapabilities: Ge, cname: tt } = q, Ye = Da.parse(`v=0 +o=- 0 0 IN IP4 127.0.0.1 +s=AgoraGateway +t=0 0 +a=group:BUNDLE 0 1 +a=msid-semantic: WMS +a=ice-lite +m=video 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=sendonly +a=rtcp-mux +a=rtcp-rsize +a=mid:0 +m=audio 9 UDP/TLS/RTP/SAVPF 0 +c=IN IP4 127.0.0.1 +a=rtcp:9 IN IP4 0.0.0.0 +a=sendonly +a=rtcp-mux +a=rtcp-rsize +a=mid:1 +`); + this._rtpCapabilities = Ce, this._candidates = he, this._iceParameters = ue, this._dtlsParameters = oe, this._localCapabilities = Ge, this.setup = ke, this.cname = tt; + const et = this.rtpCapabilities.send; + for (const ht of Ye.mediaDescriptions) { + if (ht.attributes.iceUfrag = ue.iceUfrag, ht.attributes.icePwd = ue.icePwd, ht.attributes.fingerprints = oe.fingerprints, ht.attributes.candidates = he, ht.attributes.setup = ke, ht.media.mediaType === "video" && (ht.media.fmts = et.videoCodecs.map((st) => st.payloadType.toString(10)), ht.attributes.payloads = et.videoCodecs, ht.attributes.extmaps = et.videoExtensions, Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: st, ssrcGroups: Ut } = Bc([{ ssrcId: $te, rtx: Le("USE_SUB_RTX") ? 40001 : void 0 }], this.cname); + ht.attributes.ssrcs = st, ht.attributes.ssrcGroups = Ut; + } + if (ht.media.mediaType === "audio" && (ht.media.fmts = et.audioCodecs.map((st) => st.payloadType.toString(10)), ht.attributes.payloads = et.audioCodecs, ht.attributes.extmaps = et.audioExtensions, up(ht), Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: st, ssrcGroups: Ut } = Bc([{ ssrcId: 2e4 }], this.cname); + ht.attributes.ssrcs = st, ht.attributes.ssrcGroups = Ut; + } + } + this.sessionDesc = Ye, this.currentMidIndex = Ye.mediaDescriptions.length - 1; + } + preloadRemoteMedia() { + const q = Le("PRELOAD_MEDIA_COUNT"); + this.rtpCapabilities; + const ue = this.candidates, oe = this.dtlsParameters, he = this.iceParameters, Ce = this.rtpCapabilities.send; + for (let ke = 1; ke < q; ke++) { + const Ge = 2 * ke + 2e4, tt = 2 * ke + $te, { ssrcs: Ye, ssrcGroups: et } = Bc([{ ssrcId: Ge }], this.cname), { ssrcs: ht, ssrcGroups: st } = Bc([{ ssrcId: tt, rtx: Le("USE_SUB_RTX") ? tt + 1 : void 0 }], this.cname); + this.sessionDesc.mediaDescriptions.push({ media: { mediaType: "video", port: vA, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: Ce.videoCodecs.map((Ut) => Ut.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: he.iceUfrag, icePwd: he.icePwd, unrecognized: [], candidates: ue, extmaps: Ce.videoExtensions, fingerprints: oe.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: ht, ssrcGroups: st, rtcpFeedbackWildcards: [], payloads: Ce.videoCodecs, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: "sendonly", rtcpMux: !0, rtcpRsize: !0, mid: "".concat(2 * ke) } }), this.sessionDesc.mediaDescriptions.push({ media: { mediaType: "audio", port: vA, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: Ce.audioCodecs.map((Ut) => Ut.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: he.iceUfrag, icePwd: he.icePwd, unrecognized: [], candidates: ue, extmaps: Ce.audioExtensions, fingerprints: oe.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: Ye, ssrcGroups: et, rtcpFeedbackWildcards: [], payloads: Ce.audioCodecs, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: "sendonly", rtcpMux: !0, rtcpRsize: !0, mid: "".concat(2 * ke + 1) } }), this.currentMidIndex += 2; + } + this.updateBundleMids(); + } + toString() { + return Da.print(this.sessionDesc); + } + send(q, ue, oe, he) { + const { ssrcs: Ce, ssrcGroups: ke } = Bc(ue, this.cname, Le("SYNC_GROUP") ? oe : void 0), Ge = this.findPreloadMediaDesc(Ce); + if (Ge) { + if (qi() && this.firefoxSsrcMidMap.set(Ce[0].ssrcId, Ge.attributes.mid), he && (he.twcc || he.remb)) { + const tt = this.sessionDesc.mediaDescriptions.indexOf(Ge); + return this.sessionDesc.mediaDescriptions[tt] = this.mungSendMediaDesc(Ge, he), { mid: Ge.attributes.mid, needExchangeSDP: !0 }; + } + return { mid: Ge.attributes.mid, needExchangeSDP: !1 }; + } + { + const tt = this.findAvailableMediaIndex(q, Ce); + let Ye; + return tt === -1 || tt === 1 && (ks() || LZ()) || tt === 0 && Le("USE_SUB_RTX") || FZ() ? (Ye = this.createOrRecycleSendMedia(q, Ce, ke, "sendonly", he), this.updateBundleMids()) : (Ye = ca(this.sessionDesc.mediaDescriptions[tt]), Ye.attributes.direction = "sendonly", Ye.attributes.ssrcs = Ce, Ye.attributes.ssrcGroups = ke, this.sessionDesc.mediaDescriptions[tt] = this.mungSendMediaDesc(Ye, he)), qi() && this.firefoxSsrcMidMap.set(Ce[0].ssrcId, Ye.attributes.mid), { mid: Ye.attributes.mid, needExchangeSDP: !0 }; + } + } + sendDataChannel() { + const { mediaDesc: q, needExchangeSDP: ue } = this.createOrRecycleDataChannel(); + return this.updateBundleMids(), { mid: q.attributes.mid, needExchangeSDP: ue }; + } + batchSend(q) { + const ue = q.map((Ce) => { + let { kind: ke, ssrcMsg: Ge, mslabel: tt } = Ce; + return this.send(ke, Ge, tt); + }), oe = []; + let he = !1; + return ue.forEach((Ce) => { + let { mid: ke, needExchangeSDP: Ge } = Ce; + Ge && (he = !0), oe.push(ke); + }), { mids: oe, needExchangeSDP: he }; + } + stopSending(q) { + const ue = this.sessionDesc.mediaDescriptions.filter((oe) => oe.attributes.mid && q.indexOf(oe.attributes.mid) !== -1); + if (ue.length !== q.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.stopSending."); + ue.forEach((oe) => { + oe.attributes.mid === "0" || qi() || FZ() ? oe.attributes.ssrcs = [] : (oe.attributes.ssrcs = [], oe.attributes.direction = "inactive", oe.media.port = "0"); + }), this.updateBundleMids(); + } + mute(q) { + const ue = this.sessionDesc.mediaDescriptions.find((oe) => oe.attributes.mid === q); + if (!ue) + throw new Error("mediaDescription not found with ".concat(q, " in remote SDP when calling RemoteSDP.mute.")); + ue.attributes.direction = "inactive"; + } + unmute(q) { + const ue = this.sessionDesc.mediaDescriptions.find((oe) => oe.attributes.mid === q); + if (!ue) + throw new Error("mediaDescription not found with ".concat(q, " in remote SDP when calling RemoteSDP.unmute.")); + ue.attributes.direction = "sendonly"; + } + muteRemote(q) { + const ue = this.sessionDesc.mediaDescriptions.filter((oe) => rr(q).call(q, oe.attributes.mid || "")); + if (ue.length !== q.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.muteRemote."); + ue.forEach((oe) => { + oe.attributes.direction = "inactive"; + }); + } + unmuteRemote(q) { + const ue = this.sessionDesc.mediaDescriptions.filter((oe) => rr(q).call(q, oe.attributes.mid || "")); + if (ue.length !== q.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.muteRemote."); + ue.forEach((oe) => { + oe.attributes.direction = "recvonly"; + }); + } + receive(q, ue, oe, he) { + q.forEach((Ce, ke) => { + this.createOrRecycleRecvMedia(Ce, [], "recvonly", ue, oe, he[ke]); + }), this.updateBundleMids(); + } + stopReceiving(q) { + const ue = this.sessionDesc.mediaDescriptions.filter((oe) => q.indexOf(oe.attributes.mid) !== -1); + if (ue.length !== q.length) + throw new Error("MediaDescriptions' length doesn't match mids's length when calling RemoteSDP.receive."); + ue.forEach((oe) => { + oe.media.port = "0", oe.attributes.direction = "inactive"; + }), this.updateBundleMids(); + } + updateCandidates(q) { + const ue = this._candidates.filter((oe) => oe.transport === "udp"); + if (q === Ys.TCP) { + if (ue.length === 0) + return; + if (Le("TCP_CANDIDATE_ONLY")) { + const oe = this._candidates.filter((he) => he.transport === "tcp"); + ue.forEach((he) => { + oe.findIndex((Ce) => Ce.connectionAddress === he.connectionAddress) === -1 && oe.push(E_(E_({}, he), {}, { foundation: "tcpcandidate", priority: Number(he.priority) - 1 + "", transport: "tcp", port: Number(he.port) + 90 + "" })); + }), this._candidates = oe; + } else { + const oe = []; + ue.forEach((he) => { + oe.push(E_(E_({}, he), {}, { foundation: "tcpcandidate", priority: Number(he.priority) - 1 + "", transport: "tcp", port: Number(he.port) + 90 + "" })); + }), this._candidates = [...ue, ...oe]; + } + } else if (q === Ys.RELAY) { + if (ue.length !== 0) + return; + { + const oe = this._candidates.filter((he) => he.transport === "tcp"); + oe.forEach((he) => { + ue.push(E_(E_({}, he), {}, { foundation: "udpcandidate", priority: Number(he.priority) + 1 + "", transport: "udp", port: Number(he.port) - 90 + "" })); + }), this._candidates = [...ue, ...oe]; + } + } else + ue.length === 0 ? (this._candidates.filter((oe) => oe.transport === "tcp").forEach((oe) => { + ue.push(E_(E_({}, oe), {}, { foundation: "udpcandidate", priority: Number(oe.priority) + 1 + "", transport: "udp", port: Number(oe.port) - 90 + "" })); + }), this._candidates = ue) : this._candidates = this._candidates.filter((oe) => oe.transport !== "tcp"); + for (const oe of this.sessionDesc.mediaDescriptions) + oe.attributes.candidates = this.candidates; + } + restartICE(q) { + q = ca(q), this._iceParameters = q, this.sessionDesc.mediaDescriptions.forEach((ue) => { + ue.attributes.iceUfrag = q.iceUfrag, ue.attributes.icePwd = q.icePwd; + }); + } + predictReceivingMids(q) { + const ue = []; + for (let oe = 0; oe < q; oe++) + ue.push((this.currentMidIndex + oe + 1).toString(10)); + return ue; + } + findAvailableMediaIndex(q, ue) { + return this.sessionDesc.mediaDescriptions.findIndex((oe) => { + const he = oe.media.mediaType === q && oe.media.port !== "0" && (oe.attributes.direction === "sendonly" || oe.attributes.direction === "sendrecv") && oe.attributes.ssrcs.length === 0; + if (qi()) { + if (he) { + const Ce = this.firefoxSsrcMidMap.get(ue[0].ssrcId); + return !(Ce || oe.attributes.mid !== "0" && oe.attributes.mid !== "1") || !(!Ce || Ce !== oe.attributes.mid); + } + return !1; + } + return he; + }); + } + createOrRecycleDataChannel() { + for (const oe of this.sessionDesc.mediaDescriptions) + if (oe.media.mediaType === "application") + return { mediaDesc: oe, needExchangeSDP: !1 }; + this.currentMidIndex += 1; + const q = "".concat(this.currentMidIndex), ue = { media: { mediaType: "application", port: vA, protos: ["UDP", "DTLS", "SCTP"], fmts: ["webrtc-datachannel"] }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: this.candidates, extmaps: [], fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: [], ssrcGroups: [], rtcpFeedbackWildcards: [], payloads: [], rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, mid: "".concat(q), sctpPort: "5000" } }; + return this.sessionDesc.mediaDescriptions.push(ue), { mediaDesc: ue, needExchangeSDP: !0 }; + } + createOrRecycleRecvMedia(q, ue, oe, he, Ce, ke) { + const Ge = q._mediaStreamTrack.kind, tt = this.rtpCapabilities.recv, Ye = jS(Ge, tt, this.localCapabilities.send, Ge === pr.VIDEO ? he : Ce), et = Ge === pr.VIDEO ? tt.videoExtensions : tt.audioExtensions; + this.currentMidIndex += 1; + const ht = "".concat(this.currentMidIndex); + let st = { media: { mediaType: Ge, port: vA, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: Ye.map((Vt) => Vt.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: this.candidates, extmaps: et, fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: ue, ssrcGroups: [], rtcpFeedbackWildcards: [], payloads: Ye, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: oe, rtcpMux: !0, rtcpRsize: !0, mid: "".concat(ht) } }; + st = this.mungRecvMediaDsec(st, q, ke); + const Ut = this.findFirstClosedMedia(Ge); + if (Ut) { + const Vt = this.sessionDesc.mediaDescriptions.indexOf(Ut); + this.sessionDesc.mediaDescriptions[Vt] = st; + } else + this.sessionDesc.mediaDescriptions.push(st); + return st; + } + updateRemoteCodec(q, ue, oe) { + const he = [...new Set(this._rtpCapabilities.recv.videoCodecs.map((st) => st.rtpMap && st.rtpMap.encodingName.toLowerCase() || "").filter((st) => { + var Ut; + return rr(Ut = Object.keys(Qy)).call(Ut, st); + }))], Ce = new Set(ue); + if (he.every((st) => Ce.has(st))) + return ie.debug("codecs has not changed, no need to updateRemoteCodec, codecs: ".concat(ue)), !1; + const ke = this._rtpCapabilities.recv.videoCodecs.filter((st) => ue.some((Ut) => { + var Vt; + return rr(Vt = st.rtpMap && st.rtpMap.encodingName.toLowerCase() || "").call(Vt, Ut); + })); + if (ke.length === 0) + return ie.debug("updateRemoteCodec failed, because cannot find matched codec, remoteCapabilities codecs: ".concat(he, " codecs: ").concat(ue)), !1; + const Ge = [...new Set(ke.map((st) => st.rtpMap && st.rtpMap.encodingName.toLowerCase() || ""))]; + let tt; + if (ie.debug("updateRemoteCodec, from ".concat(he, " to ").concat(Ge)), q.length === 0) + tt = this.sessionDesc.mediaDescriptions.filter((st) => st.media.mediaType === "video" && st.attributes.direction === "recvonly"); + else if (tt = this.sessionDesc.mediaDescriptions.filter((st) => st.attributes.mid && rr(q).call(q, st.attributes.mid) && st.attributes.direction === "recvonly"), tt.length !== q.length) + return ie.debug("updateRemoteCodec failed, because cannot find mids, mids: ".concat(q, ", codecs: ").concat(ue)), !1; + this._rtpCapabilities.recv.videoCodecs = ke; + const Ye = this.localCapabilities.send, et = this.rtpCapabilities.recv, ht = jS(pr.VIDEO, et, Ye, oe); + return tt.forEach((st) => { + const Ut = ht.map((Vt) => Vt.payloadType.toString(10)); + ie.debug("updateRemoteCodec mid: ".concat(st.attributes.mid, ", from ").concat(st.attributes.payloads, " to ").concat(ht)), st.attributes.payloads = ht, st.media.fmts = Ut; + }), !0; + } + createOrRecycleSendMedia(q, ue, oe, he, Ce) { + const ke = this.rtpCapabilities.send, Ge = q === pr.VIDEO ? ke.videoCodecs : ke.audioCodecs, tt = q === pr.VIDEO ? ke.videoExtensions : ke.audioExtensions; + this.currentMidIndex += 1; + const Ye = "".concat(this.currentMidIndex); + let et = { media: { mediaType: q, port: vA, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: Ge.map((st) => st.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: this.candidates, extmaps: tt, fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: ue, ssrcGroups: oe, rtcpFeedbackWildcards: [], payloads: Ge, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: he, rtcpMux: !0, rtcpRsize: !0, mid: "".concat(Ye) } }; + et = this.mungSendMediaDesc(et, Ce); + const ht = this.findFirstClosedMedia(q); + if (ht) { + const st = this.sessionDesc.mediaDescriptions.indexOf(ht); + this.sessionDesc.mediaDescriptions[st] = et; + } else + this.sessionDesc.mediaDescriptions.push(et); + return et; + } + updateBundleMids() { + this.sessionDesc.attributes.groups[0].identificationTag = this.sessionDesc.mediaDescriptions.filter((q) => q.media.port !== "0").map((q) => q.attributes.mid); + } + mungRecvMediaDsec(q, ue, oe) { + const he = ca(q); + return dk(he), __(he, ue), fk(he, ue), $$(he), cT(he, oe, this.localCapabilities.send), he; + } + mungSendMediaDesc(q, ue) { + const oe = ca(q); + return cT(oe, ue, this.localCapabilities.recv), up(oe), oe; + } + updateRecvMedia(q, ue) { + const oe = this.sessionDesc.mediaDescriptions.findIndex((he) => he.attributes.mid === q); + if (oe !== -1) { + const he = this.mungRecvMediaDsec(this.sessionDesc.mediaDescriptions[oe], ue); + this.sessionDesc.mediaDescriptions[oe] = he; + } + } + bumpMid(q) { + this.currentMidIndex += q; + } + findFirstClosedMedia(q) { + return this.sessionDesc.mediaDescriptions.find((ue) => qi() ? ue.media.port === "0" && ue.media.mediaType === q : ue.media.port === "0"); + } + findPreloadMediaDesc(q) { + return this.sessionDesc.mediaDescriptions.find((ue) => { + var oe; + return ((oe = ue.attributes) === null || oe === void 0 || (oe = oe.ssrcs[0]) === null || oe === void 0 ? void 0 : oe.ssrcId) === q[0].ssrcId; + }); + } + getSSRC(q) { + var ue; + return (ue = this.sessionDesc.mediaDescriptions.find((oe) => oe.attributes.mid === q)) === null || ue === void 0 ? void 0 : ue.attributes.ssrcs; + } + }({ remoteIceParameters: s, remoteDtlsParameters: c, candidates: p, remoteRTPCapabilities: m, remoteSetup: T, localCapabilities: this.localCapabilities, cname: D }), Array.isArray(this.remoteCodecs) && this.remoteCodecs.length > 0 && this.remoteSDP.updateRemoteCodec([], this.remoteCodecs, this.store.codec); + const k = this.remoteSDP.toString(), N = Da.parse(this.initialOffer.sdp), U = N.mediaDescriptions.find((q) => q.media.mediaType === "audio"); + U && up(U), this.useXR && dA(N); + const V = Da.print(N), G = this.logSDPExchange(V || "", "offer", "local", "connect"); + this.store.descriptionStart(), yield this.peerConnection.setLocalDescription({ type: "offer", sdp: V }), G == null || G(k), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: k }); + const K = this.peerConnection.getTransceivers()[0]; + if (K != null && K.receiver && this.tryBindTransportEvents(K.receiver), Le("PRELOAD_MEDIA_COUNT") > 0) { + this.remoteSDP.preloadRemoteMedia(); + const q = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: q }); + const ue = yield this.peerConnection.createAnswer(); + yield this.peerConnection.setLocalDescription(ue); + } + } catch (k) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.connect failed; ".concat(k.toString())); + } + }); + } + send(s, c, p) { + var m = this; + return yu(function* () { + const T = yield En(m.mutex.lock("From P2PConnection.send")); + try { + if (!m.remoteSDP) + throw new Error("Cannot call P2PConnection.send before remote SDP created"); + const D = []; + s.forEach((oe) => { + const he = m.peerConnection.addTransceiver(oe._mediaStreamTrack, { direction: "sendonly" }); + D.push(he), oe._updateRtpTransceiver(he); + }), qi() && Le("SIMULCAST") === !0 && (yield En(m.applySimulcastForFirefox(D, s))); + const k = yield En(m.peerConnection.createOffer()), N = m.remoteSDP.predictReceivingMids(s.length), U = m.mungSendOfferSDP(k.sdp, s, N), V = Da.parse(U), G = N.map((oe) => { + const he = V.mediaDescriptions.find((Ce) => Ce.attributes.mid === oe); + if (!he) + throw new Error("Cannot extract ssrc from mediaDescription."); + return j$(he, Le("USE_PUB_RTX")); + }); + let K; + try { + K = yield G; + } catch (oe) { + K = [], m.remoteSDP.receive(s, c, p, K); + const he = m.remoteSDP.toString(); + throw yield En(m.peerConnection.setLocalDescription({ type: "offer", sdp: U })), yield En(m.peerConnection.setRemoteDescription({ type: "answer", sdp: he })), yield En(m.stopSending(N, !0)), oe; + } + m.remoteSDP.receive(s, c, p, K); + const q = m.remoteSDP.toString(), ue = m.logSDPExchange(U, "offer", "local", "send"); + return yield En(m.peerConnection.setLocalDescription({ type: "offer", sdp: U })), yield En(m.applySimulcastEncodings(D, s)), yield En(m.applySendEncodings(D, s)), ue == null || ue(q), yield En(m.peerConnection.setRemoteDescription({ type: "answer", sdp: q })), D.map((oe, he) => { + const Ce = N[he]; + return { localSSRC: G[he], id: Ce, transceiver: oe }; + }); + } catch (D) { + throw D instanceof mt ? D : new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.send failed; ".concat(D.toString())); + } finally { + T(); + } + })(); + } + createDataChannels(s, c) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.createDataChannels before remote SDP created"); + let p = this.dataStreamChannelMap.get(s); + if (p && p.readyState === "open") + ie.debug("[P2PConnection] Channels are already available and can be reused directly."); + else { + const T = this.currentDataChannelId < 1023 ? this.currentDataChannelId++ : this.recoveredDataChannelIds.shift(); + if (typeof T != "number") + throw new Error("create DataChannel error, because cannot get dc id"); + p = this.peerConnection.createDataChannel("datastream-channel", { id: T, negotiated: !0, ordered: !1, maxRetransmits: Le("DATASTREAM_MAX_RETRANSMITS") }), p.binaryType = "arraybuffer", this.dataStreamChannelMap.set(s, p); + } + c.forEach((T) => { + T._updateOriginDataChannel(p); + }); + const { needExchangeSDP: m } = this.remoteSDP.sendDataChannel(); + if (m) { + const T = this.remoteSDP.toString(); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: T }); + const D = yield this.peerConnection.createAnswer(); + yield this.peerConnection.setLocalDescription(D), ie.debug("[P2PConnection] createDataChannels by exchanging SDP."); + } else + ie.debug("[P2PConnection] createDataChannels no need to exchange SDP."); + return; + } catch (p) { + throw p instanceof mt ? p : new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.createDataChannels failed; ".concat(p.toString())); + } + }); + } + stopDataChannels(s) { + return ye(this, null, function* () { + try { + const c = this.dataStreamChannelMap.get(s); + return c && (c.id && this.recoveredDataChannelIds.push(c.id), c.close()), void this.dataStreamChannelMap.delete(s); + } catch (c) { + throw c instanceof mt ? c : new mt(_e.DATACHANNEL_FAILED, "P2PConnection.stopDataChannels failed; ".concat(c.toString())); + } + }); + } + stopSending(s, c) { + return ye(this, null, function* () { + const p = c ? void 0 : yield this.mutex.lock("From P2PConnection.stopSending"); + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopSending before remote SDP created"); + const m = this.peerConnection.getTransceivers().filter((N) => s.indexOf(N.mid) !== -1); + if (m.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length when trying to call P2PConnection.stopSending."); + m.map((N) => { + var U; + N.direction = "inactive", (U = N.stop) === null || U === void 0 || U.call(N); + }); + const T = yield this.peerConnection.createOffer(), D = this.logSDPExchange(T.sdp || "", "offer", "local", "stopSending"); + yield this.peerConnection.setLocalDescription(T), this.remoteSDP.stopReceiving(s); + const k = this.remoteSDP.toString(); + D == null || D(k), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: k }); + } catch (m) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.stopSending failed; ".concat(m.toString())); + } finally { + p && p(); + } + }); + } + receive(s, c, p, m) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.receive ".concat(s, " before remoteSDP created.")); + const { mid: T, needExchangeSDP: D } = this.remoteSDP.send(s, c, p, m); + if (D) { + const N = this.remoteSDP.toString(), U = this.logSDPExchange(N, "offer", "remote", "receive"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: N }); + const V = yield this.peerConnection.createAnswer(), G = this.mungReceiveAnswerSDP(V.sdp, T, s); + U == null || U(G || ""), yield this.peerConnection.setLocalDescription({ type: "answer", sdp: G }), ie.debug("[".concat(this.store.clientId, "] [P2PConnection] receive ").concat(s, " by exchanging SDP.")); + } else + ie.debug("[".concat(this.store.clientId, "] [P2PConnection] receive ").concat(s, " no need to exchange SDP.")); + const k = this.peerConnection.getTransceivers().find((N) => N.mid === T); + if (!k) + throw new Error("Cannot get transceiver after setLocalDescription."); + return { track: k.receiver.track, id: T, transceiver: k }; + } catch (T) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.receive failed; ".concat(T.toString())); + } + }); + } + batchReceive(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.batchReceive before remoteSDP created."); + const { mids: c, needExchangeSDP: p } = this.remoteSDP.batchSend(s); + if (p) { + const m = this.remoteSDP.toString(), T = this.logSDPExchange(m, "offer", "remote", "receive"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: m }); + const D = yield this.peerConnection.createAnswer(); + T == null || T(D.sdp || ""), yield this.peerConnection.setLocalDescription(D), ie.debug("[".concat(this.store.clientId, "] [P2PConnection] batchReceive by exchanging SDP.")); + } else + ie.debug("[".concat(this.store.clientId, "] [P2PConnection] batchReceive no need to exchange SDP.")); + return c.map((m) => { + const T = this.peerConnection.getTransceivers().find((D) => D.mid === m); + if (!T) + throw new Error("Cannot get transceiver after setLocalDescription."); + return { track: T.receiver.track, id: m, transceiver: T }; + }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.receive failed; ".concat(c.toString())); + } + }); + } + stopReceiving(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.stopReceiving before remote SDP created."); + this.remoteSDP.stopSending(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "stopReceiving"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection stopReceiving failed; ".concat(c.toString())); + } + }); + } + muteRemote(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.muteRemote mid=".concat(s, " before remote SDP created.")); + this.remoteSDP.mute(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "muteRemote"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.muteRemote failed; ".concat(c.toString())); + } + }); + } + unmuteRemote(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.unmuteRemote mid=".concat(s, " before remote SDP created.")); + this.remoteSDP.unmute(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "unmuteRemote"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.unmuteRemote failed; ".concat(c.toString())); + } + }); + } + muteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.muteLocal before remote SDP created."); + const c = this.peerConnection.getTransceivers().filter((D) => D.mid && s.indexOf(D.mid) !== -1); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length."); + c.map((D) => { + D.direction = "inactive"; + }); + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "muteLocal"); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.muteRemote(s); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.muteLocal failed; ".concat(c.toString())); + } + }); + } + unmuteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.unmuteLocal before remote SDP created."); + const c = this.peerConnection.getTransceivers().filter((D) => D.mid && s.indexOf(D.mid) !== -1); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length."); + c.map((D, k) => ye(this, null, function* () { + D.direction = "sendonly"; + })); + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "unmuteLocal"); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.unmuteRemote(s); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (c) { + throw new mt(_e.EXCHANGE_SDP_FAILED, "P2PConnection.unmuteLocal failed; ".concat(c.toString())); + } + }); + } + restartICE(s) { + var c = this; + return yu(function* () { + const p = yield En(c.mutex.lock("From P2PConnection.restartICE")); + try { + if (!c.remoteSDP) + throw new Error("Cannot restartICE before remoteSDP created."); + if (_i().supportPCSetConfiguration) { + const U = c.peerConnection.getConfiguration(), V = s === Ys.RELAY ? "relay" : "all"; + U.iceTransportPolicy !== V && (ie.debug("[".concat(c.store.clientId, "] restartICE change iceTransportPolicy from [").concat(U.iceTransportPolicy, "] to [").concat(V, "]")), U.iceTransportPolicy = V, c.peerConnection.setConfiguration(U)); + } else if (s === Ys.RELAY) + return; + c.remoteSDP.updateCandidates(s); + const m = yield En(c.peerConnection.createOffer({ iceRestart: !0 })); + if (!m.sdp) + throw new Error("Cannot restartICE because restart offer SDP does not exist."); + const T = cp(m.sdp), { remoteIceParameters: D } = yield T.iceParameters; + c.remoteSDP.restartICE(D); + const k = c.remoteSDP.toString(), N = c.logSDPExchange(m.sdp || "", "offer", "local", "restartICE"); + c.store.descriptionStart(), yield En(c.peerConnection.setLocalDescription(m)), N == null || N(k), yield En(c.peerConnection.setRemoteDescription({ type: "answer", sdp: k })); + } catch (m) { + ie.warning("[".concat(c.store.clientId, "] restart ICE failed, abort operation"), m); + } finally { + p(); + } + })(); + } + close() { + var s; + this.peerConnection.close(), (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, "closed"), this.tryUnbindTransportEvents(), this.unbindPCEvents(), this.unbindStatsEvents(), this.removeAllListeners(), this.transportEventReceiver = void 0, this.statsFilter.destroy(), this.dataStreamChannelMap.clear(), this.recoveredDataChannelIds = [], this.currentDataChannelId = 1; + } + getStats() { + return this.statsFilter.getStats(); + } + getRemoteVideoIsReady(s) { + return this.statsFilter.getVideoIsReady(s); + } + updateEncoderConfig(s, c) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call P2PConnection.updateEncoderConfig before remote SDP created."); + const p = yield this.peerConnection.createOffer(), m = this.mungSendOfferSDP(p.sdp, [c], [s]); + this.remoteSDP.updateRecvMedia(s, c); + const T = this.remoteSDP.toString(), D = this.logSDPExchange(m, "offer", "local", "updateEncoderConfig"); + yield this.peerConnection.setLocalDescription({ type: "offer", sdp: m }), D == null || D(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (p) { + throw new mt(_e.EXCHANGE_SDP_FAILED, p.toString()); + } + }); + } + updateSendParameters(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getTransceivers().filter((m) => m.mid === s); + p.length === 1 && (this.isVP8Simulcast(c) ? qi() || (yield this.applySimulcastEncodings(p, [c])) : yield this.applySendEncodings(p, [c])); + }); + } + setStatsRemoteVideoIsReady(s, c) { + this.statsFilter.setVideoIsReady2(s, c); + } + replaceTrack(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getTransceivers().find((m) => m.mid === c); + p && (yield p.sender.replaceTrack(s._mediaStreamTrack)); + }); + } + getSelectedCandidatePair() { + return ye(this, null, function* () { + const s = this.peerConnection.getReceivers(); + if (s.length > 0 && s[0].transport && s[0].transport.iceTransport && s[0].transport.iceTransport.getSelectedCandidatePair && s[0].transport.iceTransport.getSelectedCandidatePair()) { + const c = s[0].transport.iceTransport, { local: p, remote: m } = c.getSelectedCandidatePair(); + return { local: dT(dT({}, Dg), {}, { candidateType: p.type, protocol: p.protocol, address: p.address, port: p.port }), remote: dT(dT({}, Dg), {}, { candidateType: m.type, protocol: m.protocol, address: m.address, port: m.port }) }; + } + return this.statsFilter.getSelectedCandidatePair(); + }); + } + bindPCEvents() { + this.peerConnection.oniceconnectionstatechange = () => { + var s; + (s = this.onICEConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.iceConnectionState); + }, this.peerConnection.onconnectionstatechange = () => { + var s; + (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.connectionState); + }, this.peerConnection.onicecandidate = (s) => { + s.candidate ? this.localCandidateCount += 1 : (this.peerConnection.onicecandidate = null, this.allCandidatesReceived = !0, ie.debug("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] local candidate count"), this.localCandidateCount)); + }, setTimeout(() => { + this.allCandidatesReceived || (this.allCandidatesReceived = !0, ie.debug("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] onicecandidate timeout, local candidate count"), this.localCandidateCount)); + }, Le("CANDIDATE_TIMEOUT")); + } + unbindPCEvents() { + this.peerConnection.oniceconnectionstatechange = null, this.peerConnection.onconnectionstatechange = null, this.peerConnection.onsignalingstatechange = null, this.peerConnection.onicecandidateerror = null, this.peerConnection.onicecandidate = null, this.peerConnection.ontrack = null; + } + static resolvePCConfiguration(s) { + const c = { iceServers: [] }; + return s.iceServers ? c.iceServers = s.iceServers : s.turnServer && s.turnServer.mode !== "off" && (OC(s.turnServer.servers) ? c.iceServers = s.turnServer.servers : (c.iceServers && c.iceServers.push(...to.turnServerConfigToIceServers(s.turnServer.servers)), Le("USE_TURN_SERVER_OF_GATEWAY") && c.iceServers && s.turnServer.serversFromGateway && c.iceServers.push(...to.turnServerConfigToIceServers(s.turnServer.serversFromGateway)), Le("FORCE_TURN_TCP") ? c.iceTransportPolicy = "relay" : s.turnServer.servers.concat(s.turnServer.serversFromGateway || []).forEach((p) => { + p.forceturn && (c.iceTransportPolicy = "relay"); + }))), Le("ENABLE_ENCODED_TRANSFORM") && _i().supportWebRTCEncodedTransform && (c.encodedInsertableStreams = !0), c; + } + static turnServerConfigToIceServers(s) { + const c = []; + return s.forEach((p) => { + p.security ? p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turns:".concat(a_(p.turnServerURL), ":").concat(p.tcpport, "?transport=tcp") }) : (p.udpport && !Le("FORCE_TURN_TCP") && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.udpport, "?transport=udp") }), p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.tcpport, "?transport=tcp") })); + }), c; + } + tryBindTransportEvents(s) { + const c = s.transport; + if (c) { + this.transportEventReceiver = s, c.onstatechange = () => { + var m; + c != null && c.state && ((m = this.onDTLSTransportStateChange) === null || m === void 0 || m.call(this, c.state)); + }, c.onerror = (m) => { + var T; + (T = this.onDTLSTransportError) === null || T === void 0 || T.call(this, "error" in m ? m.error : m); + }; + const p = c.iceTransport; + p && (p.onstatechange = () => { + const m = c == null ? void 0 : c.iceTransport.state; + var T; + m && ((T = this.onICETransportStateChange) === null || T === void 0 || T.call(this, m)); + }, p.getSelectedCandidatePair && (p.onselectedcandidatepairchange = () => { + if (p.getSelectedCandidatePair()) { + const { local: m, remote: T } = p.getSelectedCandidatePair(); + ie.info("[".concat(this.store.clientId, "] [pc-").concat(this.store.p2pId, "] selectedcandidatepairchange: local ").concat(JSON.stringify({ candidateType: m.type, protocol: m.protocol }), ", remote ").concat(JSON.stringify({ candidateType: T.type, protocol: T.protocol, address: T.address, port: T.port }), " )")); + } + })); + } + } + tryUnbindTransportEvents() { + this.transportEventReceiver && this.transportEventReceiver.transport && (this.transportEventReceiver.transport.onstatechange = null, this.transportEventReceiver.transport.onerror = null, this.transportEventReceiver.transport.iceTransport && (this.transportEventReceiver.transport.iceTransport.onstatechange = null)); + } + updateRtpSenderEncodings(s, c) { + return ye(this, null, function* () { + var p; + if (c || (c = this.peerConnection.getSenders().find((V) => V.track === s._mediaStreamTrack)), !c) + return ie.warn("[".concat(s.getTrackId(), "] no rtpSender found}")); + if (this.isVP8Simulcast(s)) + return ie.warn("[updateRtpSenderEncodings] Track is VP8 simulcast, please apply simulcast encodings"); + if (!_i().supportSetRtpSenderParameters) + return ie.warn("[updateRtpSenderEncodings] Browser not support set rtp-sender parameters"); + const m = {}, T = {}; + switch (s._optimizationMode) { + case "motion": + m.degradationPreference = "maintain-framerate"; + break; + case "detail": + m.degradationPreference = "maintain-resolution"; + break; + default: + m.degradationPreference = "balanced"; + } + if (s._encoderConfig) { + var D; + const { bitrateMax: V, frameRate: G, scaleResolutionDownBy: K } = s._encoderConfig; + V && (T.maxBitrate = 1e3 * V), (rr(D = s._hints).call(D, ua.LOW_STREAM) || s.isUseScaleResolutionDownBy) && (G && (T.maxFramerate = oh(G)), K && K >= 1 && (T.scaleResolutionDownBy = K)); + } + if (Le("DSCP_TYPE") && Zy()) { + var k; + const V = Le("DSCP_TYPE"); + rr(k = ["very-low", "low", "medium", "high"]).call(k, V) && (T.networkPriority = V); + } + const N = c.getParameters(), U = (p = N.encodings) === null || p === void 0 ? void 0 : p[0]; + qi() && !U && (m.encodings = [T]), U && Object.assign(U, T), Object.assign(N, m), ie.debug("[".concat(s.getTrackId(), "] updateRtpSenderEncodings: ").concat(JSON.stringify(N.encodings))), yield c.setParameters(N); + }); + } + applySendEncodings(s, c) { + return ye(this, null, function* () { + try { + if (!_i().supportSetRtpSenderParameters || s.length !== c.length) + return; + for (let p = 0; p < s.length; p++) { + const m = s[p], T = c[p]; + T instanceof In && !this.isVP8Simulcast(T) && (yield this.updateRtpSenderEncodings(T, m.sender)); + } + } catch (p) { + ie.debug("[".concat(this.store.clientId, "] Apply RTPSendEncodings failed.")); + } + }); + } + mungSendOfferSDP(s, c, p) { + const m = Da.parse(s); + return c.forEach((T, D) => { + const k = p[D], N = m.mediaDescriptions.find((U) => U.attributes.mid === k); + N && (__(N, T), V$(N, T, this.store.codec)); + }), Da.print(m); + } + mungReceiveAnswerSDP(s, c, p) { + const m = Da.parse(s), T = m.mediaDescriptions.find((D) => D.attributes.mid === c); + return T && (p === pr.AUDIO && T.media.mediaType === "audio" && up(T), this.useXR && dA(m)), Da.print(m); + } + bindStatsEvents() { + this.statsFilter.onFirstAudioReceived = (s) => { + var c; + (c = this.onFirstAudioReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoReceived = (s) => { + var c; + (c = this.onFirstVideoReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstAudioDecoded = (s) => { + var c; + (c = this.onFirstAudioDecoded) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoDecoded = (s, c, p) => { + var m; + (m = this.onFirstVideoDecoded) === null || m === void 0 || m.call(this, s, c, p); + }, this.statsFilter.onSelectedLocalCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedLocalCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onSelectedRemoteCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedRemoteCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onFirstVideoDecodedTimeout = (s) => { + var c; + (c = this.onFirstVideoDecodedTimeout) === null || c === void 0 || c.call(this, s); + }; + } + unbindStatsEvents() { + this.statsFilter.onFirstAudioReceived = void 0, this.statsFilter.onFirstVideoReceived = void 0, this.statsFilter.onFirstAudioDecoded = void 0, this.statsFilter.onFirstVideoDecoded = void 0, this.statsFilter.onSelectedLocalCandidateChanged = void 0, this.statsFilter.onSelectedRemoteCandidateChanged = void 0, this.statsFilter.onFirstVideoDecodedTimeout = void 0; + } + applySimulcastForFirefox(s, c) { + return ye(this, null, function* () { + if (s.length === c.length) + for (let N = 0; N < s.length; N++) { + var p, m, T, D, k; + const U = s[N], V = c[N]; + if (V instanceof In && !rr(p = V._hints).call(p, ua.LOW_STREAM) && (m = V._encoderConfig) !== null && m !== void 0 && m.bitrateMax && ((T = V._encoderConfig) === null || T === void 0 ? void 0 : T.bitrateMax) > 200 && (D = V._scalabilityMode) !== null && D !== void 0 && D.numSpatialLayers && ((k = V._scalabilityMode) === null || k === void 0 ? void 0 : k.numSpatialLayers) > 1 && this.store.codec === "vp8") { + const G = {}, K = { high: 1e3 * (V._encoderConfig.bitrateMax - 50), medium: 5e4 }; + G.encodings = [{ rid: "m", active: !0, maxBitrate: K.medium, scaleResolutionDownBy: 4 }, { rid: "h", active: !0, maxBitrate: K.high }]; + const q = U.sender.getParameters(); + yield U.sender.setParameters(Object.assign(q, G)); + } + } + }); + } + applySimulcastEncodings(s, c) { + return ye(this, null, function* () { + if (!qi() && s.length === c.length) + for (let p = 0; p < s.length; p++) { + const m = c[p]; + if (m instanceof In && this.isVP8Simulcast(m)) { + const T = s[p], D = {}, k = { high: 1e3 * (m._encoderConfig.bitrateMax - 50), medium: 5e4 }; + D.encodings = [{ active: !0, adaptivePtime: !1, networkPriority: "high", priority: "high", maxBitrate: k.high }, { active: !0, adaptivePtime: !1, networkPriority: "low", priority: "low", maxBitrate: k.medium, scaleResolutionDownBy: 4 }]; + const N = T.sender.getParameters(); + yield T.sender.setParameters(Object.assign(N, D)); + } + } + }); + } + isVP8Simulcast(s) { + var c, p, m, T, D; + return !!(s instanceof In && Le("SIMULCAST") && this.store.codec === "vp8" && !rr(c = s._hints).call(c, ua.LOW_STREAM) && (p = s._encoderConfig) !== null && p !== void 0 && p.bitrateMax && ((m = s._encoderConfig) === null || m === void 0 ? void 0 : m.bitrateMax) > 200 && (T = s._scalabilityMode) !== null && T !== void 0 && T.numSpatialLayers && ((D = s._scalabilityMode) === null || D === void 0 ? void 0 : D.numSpatialLayers) > 1); + } + logSDPExchange(s, c, p, m) { + if (Le("SDP_LOGGING")) + return ie.upload("[".concat(this.store.clientId, "] exchanging ").concat(p, " ").concat(c, " SDP during P2PConnection.").concat(m, ` +`), s), c === "offer" ? (T) => { + this.logSDPExchange(T, "answer", p === "local" ? "remote" : "local", m); + } : void 0; + } + getRemoteSSRC(s) { + return ye(this, null, function* () { + if (!this.remoteSDP) + return; + const c = this.remoteSDP.getSSRC(s); + return c == null ? void 0 : c[0].ssrcId; + }); + } + setConfiguration(s) { + if (_i().supportPCSetConfiguration) { + const c = to.resolvePCConfiguration(s); + this.peerConnection.setConfiguration(c); + } + } + } + function _u(h, s, c) { + const p = h[s]; + if (typeof p != "function") + throw new Error("Cannot use mutex on object property."); + return c.value = function() { + return ye(this, arguments, function* () { + const m = this.mutex, T = yield m.lock("From P2PConnection.".concat(s)); + try { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + return yield p.apply(this, k); + } finally { + T(); + } + }); + }, c; + } + function zte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Hte(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? zte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : zte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + St([_u, ge("design:type", Function), ge("design:paramtypes", [Array, Array]), ge("design:returntype", ot)], to.prototype, "updateRemoteRTPCapabilities", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Object, Object, Array, Object, String, String]), ge("design:returntype", ot)], to.prototype, "connect", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Object, Array]), ge("design:returntype", ot)], to.prototype, "createDataChannels", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [String, Array, String, Object]), ge("design:returntype", ot)], to.prototype, "receive", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], to.prototype, "batchReceive", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], to.prototype, "stopReceiving", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], to.prototype, "muteRemote", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], to.prototype, "unmuteRemote", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], to.prototype, "muteLocal", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], to.prototype, "unmuteLocal", null), St([_u, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], to.prototype, "close", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], to.prototype, "updateEncoderConfig", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], to.prototype, "updateSendParameters", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [Xs, String]), ge("design:returntype", ot)], to.prototype, "replaceTrack", null), St([_u, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], to.prototype, "getRemoteSSRC", null); + const Wte = `v=0 +o=- 0 0 IN IP4 127.0.0.1 +s=AgoraGateway +t=0 0 +a=group:BUNDLE 0 +a=msid-semantic: WMS +a=ice-lite +m=application 9 UDP/DTLS/SCTP webrtc-datachannel +c=IN IP4 127.0.0.1 +a=mid:0 +`, mk = "9", K$ = 2e4, Z$ = 4e4; + class FFe { + get localCapabilities() { + return ca(this._localCapabilities); + } + get rtpCapabilities() { + return ca(this._rtpCapabilities); + } + get candidates() { + return ca(this._candidates); + } + get iceParameters() { + return ca(this._iceParameters); + } + get dtlsParameters() { + return ca(this._dtlsParameters); + } + constructor(s) { + Z(this, "sessionDesc", void 0), Z(this, "_localCapabilities", void 0), Z(this, "_rtpCapabilities", void 0), Z(this, "_candidates", void 0), Z(this, "_iceParameters", void 0), Z(this, "_dtlsParameters", void 0), Z(this, "setup", void 0), Z(this, "currentMidIndex", void 0), Z(this, "cname", void 0), Z(this, "firefoxSsrcMidMap", /* @__PURE__ */ new Map()), s = ca(s); + const { remoteIceParameters: c, remoteDtlsParameters: p, candidates: m, remoteRTPCapabilities: T, remoteSetup: D, localCapabilities: k, cname: N } = s, U = Da.parse(Wte); + this._rtpCapabilities = T, this._candidates = m, this._iceParameters = c, this._dtlsParameters = p, this._localCapabilities = k, this.setup = D, this.cname = N; + const V = this.rtpCapabilities.send; + for (const G of U.mediaDescriptions) { + if (G.attributes.iceUfrag = c.iceUfrag, G.attributes.icePwd = c.icePwd, G.attributes.fingerprints = p.fingerprints, G.attributes.candidates = m, G.attributes.setup = D, G.media.mediaType === "application" && (G.attributes.sctpPort = "5000"), G.media.mediaType === "video" && (G.media.fmts = V.videoCodecs.map((K) => K.payloadType.toString(10)), G.attributes.payloads = V.videoCodecs, G.attributes.extmaps = V.videoExtensions, Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: K, ssrcGroups: q } = Bc([{ ssrcId: Z$, rtx: Le("USE_SUB_RTX") ? 40001 : void 0 }], this.cname); + G.attributes.ssrcs = K, G.attributes.ssrcGroups = q; + } + if (G.media.mediaType === "audio" && (G.media.fmts = V.audioCodecs.map((K) => K.payloadType.toString(10)), G.attributes.payloads = V.audioCodecs, G.attributes.extmaps = V.audioExtensions, up(G), Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: K, ssrcGroups: q } = Bc([{ ssrcId: K$ }], this.cname); + G.attributes.ssrcs = K, G.attributes.ssrcGroups = q; + } + } + this.sessionDesc = U, this.currentMidIndex = U.mediaDescriptions.length - 1; + } + updateRemoteRTPCapabilities(s) { + const c = Da.parse(Wte); + this._rtpCapabilities = s; + const p = this.rtpCapabilities.send; + for (const m of c.mediaDescriptions) { + if (m.attributes.iceUfrag = this._iceParameters.iceUfrag, m.attributes.icePwd = this._iceParameters.icePwd, m.attributes.fingerprints = this._dtlsParameters.fingerprints, m.attributes.candidates = this._candidates, m.attributes.setup = this.setup, m.media.mediaType === "application" && (m.attributes.sctpPort = "5000"), m.media.mediaType === "video" && (m.media.fmts = p.videoCodecs.map((T) => T.payloadType.toString(10)), m.attributes.payloads = p.videoCodecs, m.attributes.extmaps = p.videoExtensions, Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: T, ssrcGroups: D } = Bc([{ ssrcId: Z$, rtx: Le("USE_SUB_RTX") ? 40001 : void 0 }], this.cname); + m.attributes.ssrcs = T, m.attributes.ssrcGroups = D; + } + if (m.media.mediaType === "audio" && (m.media.fmts = p.audioCodecs.map((T) => T.payloadType.toString(10)), m.attributes.payloads = p.audioCodecs, m.attributes.extmaps = p.audioExtensions, Le("PRELOAD_MEDIA_COUNT") > 0)) { + const { ssrcs: T, ssrcGroups: D } = Bc([{ ssrcId: K$ }], this.cname); + m.attributes.ssrcs = T, m.attributes.ssrcGroups = D; + } + } + this.sessionDesc = c, this.currentMidIndex = c.mediaDescriptions.length - 1; + } + preloadRemoteMedia(s) { + this.rtpCapabilities; + const c = this.candidates, p = this.dtlsParameters, m = this.iceParameters, T = this.rtpCapabilities.send; + for (let D = 1; D < s; D++) { + const k = 2 * D + K$, N = 2 * D + Z$, { ssrcs: U, ssrcGroups: V } = Bc([{ ssrcId: k }], this.cname), { ssrcs: G, ssrcGroups: K } = Bc([{ ssrcId: N, rtx: Le("USE_SUB_RTX") ? N + 1 : void 0 }], this.cname); + this.sessionDesc.mediaDescriptions.push({ media: { mediaType: "video", port: mk, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: T.videoCodecs.map((q) => q.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: m.iceUfrag, icePwd: m.icePwd, unrecognized: [], candidates: c, extmaps: T.videoExtensions, fingerprints: p.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: G, ssrcGroups: K, rtcpFeedbackWildcards: [], payloads: T.videoCodecs, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: "sendonly", rtcpMux: !0, rtcpRsize: !0, mid: "".concat(2 * D - 1) } }), this.sessionDesc.mediaDescriptions.push({ media: { mediaType: "audio", port: mk, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: T.audioCodecs.map((q) => q.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: m.iceUfrag, icePwd: m.icePwd, unrecognized: [], candidates: c, extmaps: T.audioExtensions, fingerprints: p.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: U, ssrcGroups: V, rtcpFeedbackWildcards: [], payloads: T.audioCodecs, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: "sendonly", rtcpMux: !0, rtcpRsize: !0, mid: "".concat(2 * D) } }), this.currentMidIndex += 2; + } + this.updateBundleMids(); + } + toString() { + return Da.print(this.sessionDesc); + } + send(s, c, p, m) { + const { ssrcs: T, ssrcGroups: D } = Bc(c, this.cname, Le("SYNC_GROUP") ? p : void 0), k = this.findPreloadMediaDesc(T); + if (k) { + if (qi() && this.firefoxSsrcMidMap.set(T[0].ssrcId, k.attributes.mid), m && (m.twcc || m.remb)) { + const N = this.sessionDesc.mediaDescriptions.indexOf(k); + return this.sessionDesc.mediaDescriptions[N] = this.mungSendMediaDesc(k, m), { mid: k.attributes.mid, needExchangeSDP: !0 }; + } + return { mid: k.attributes.mid, needExchangeSDP: !1 }; + } + { + const N = this.findAvailableMediaIndex(s, T); + let U; + return N === -1 || ks() || Rl() || LZ() || N === 0 && Le("USE_SUB_RTX") ? (U = this.createOrRecycleSendMedia(s, T, D, "sendonly", m), this.updateBundleMids()) : (U = ca(this.sessionDesc.mediaDescriptions[N]), U.attributes.direction = "sendonly", U.attributes.ssrcs = T, U.attributes.ssrcGroups = D, this.sessionDesc.mediaDescriptions[N] = this.mungSendMediaDesc(U, m)), qi() && this.firefoxSsrcMidMap.set(T[0].ssrcId, U.attributes.mid), { mid: U.attributes.mid, needExchangeSDP: !0 }; + } + } + batchSend(s) { + const c = s.map((T) => { + let { kind: D, ssrcMsg: k, mslabel: N } = T; + return this.send(D, k, N); + }), p = []; + let m = !1; + return c.forEach((T) => { + let { mid: D, needExchangeSDP: k } = T; + k && (m = !0), p.push(D); + }), { mids: p, needExchangeSDP: m }; + } + stopSending(s) { + const c = this.sessionDesc.mediaDescriptions.filter((p) => p.attributes.mid && s.indexOf(p.attributes.mid) !== -1); + if (c.length !== s.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.stopSending."); + c.forEach((p) => { + p.attributes.mid === "0" || qi() || ks() || Rl() ? p.attributes.ssrcs = [] : (p.attributes.ssrcs = [], p.attributes.direction = "inactive", p.media.port = "0"); + }), this.updateBundleMids(); + } + mute(s) { + const c = this.sessionDesc.mediaDescriptions.find((p) => p.attributes.mid === s); + if (!c) + throw new Error("mediaDescription not found with ".concat(s, " in remote SDP when calling RemoteSDP.mute.")); + c.attributes.direction = "inactive"; + } + unmute(s) { + const c = this.sessionDesc.mediaDescriptions.find((p) => p.attributes.mid === s); + if (!c) + throw new Error("mediaDescription not found with ".concat(s, " in remote SDP when calling RemoteSDP.unmute.")); + c.attributes.direction = "sendonly"; + } + muteRemote(s) { + const c = this.sessionDesc.mediaDescriptions.filter((p) => rr(s).call(s, p.attributes.mid || "")); + if (c.length !== s.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.muteRemote."); + c.forEach((p) => { + p.attributes.direction = "inactive"; + }); + } + unmuteRemote(s) { + const c = this.sessionDesc.mediaDescriptions.filter((p) => rr(s).call(s, p.attributes.mid || "")); + if (c.length !== s.length) + throw new Error("mediaDescriptions' length doesn't match mids' length when calling RemoteSDP.muteRemote."); + c.forEach((p) => { + p.attributes.direction = "recvonly"; + }); + } + receive(s, c, p, m) { + s.forEach((T, D) => { + this.createOrRecycleRecvMedia(T, [], "recvonly", c, p, m[D]); + }), this.updateBundleMids(); + } + stopReceiving(s) { + const c = this.sessionDesc.mediaDescriptions.filter((p) => s.indexOf(p.attributes.mid) !== -1); + if (c.length !== s.length) + throw new Error("MediaDescriptions' length doesn't match mids's length when calling RemoteSDP.receive."); + c.forEach((p) => { + p.media.port = "0", p.attributes.direction = "inactive"; + }), this.updateBundleMids(); + } + updateCandidates(s) { + s === Ys.TCP ? this._candidates.forEach((c) => { + this._candidates.findIndex((p) => p.transport === "tcp" && p.connectionAddress === c.connectionAddress && p.port === c.port) === -1 && this._candidates.push(Hte(Hte({}, c), {}, { foundation: "tcpcandidate", priority: Number(c.priority) - 1 + "", transport: "tcp", port: Number(c.port) + 90 + "" })); + }) : this._candidates = this._candidates.filter((c) => c.transport !== "tcp"); + for (const c of this.sessionDesc.mediaDescriptions) + c.attributes.candidates = this.candidates; + } + restartICE(s) { + s = ca(s), this._iceParameters = s, this.sessionDesc.mediaDescriptions.forEach((c) => { + c.attributes.iceUfrag = s.iceUfrag, c.attributes.icePwd = s.icePwd; + }); + } + predictReceivingMids(s) { + const c = []; + for (let p = 0; p < s; p++) + c.push((this.currentMidIndex + p + 1).toString(10)); + return c; + } + findAvailableMediaIndex(s, c) { + return this.sessionDesc.mediaDescriptions.findIndex((p) => { + const m = p.media.mediaType === s && p.media.port !== "0" && (p.attributes.direction === "sendonly" || p.attributes.direction === "sendrecv") && p.attributes.ssrcs.length === 0; + if (qi()) { + if (m) { + const T = this.firefoxSsrcMidMap.get(c[0].ssrcId); + return !(T || p.attributes.mid !== "0" && p.attributes.mid !== "1") || !(!T || T !== p.attributes.mid); + } + return !1; + } + return m; + }); + } + createOrRecycleRecvMedia(s, c, p, m, T, D) { + const k = s._mediaStreamTrack.kind, N = this.rtpCapabilities.recv, U = jS(k, N, this.localCapabilities.send, k === pr.VIDEO ? m : T), V = k === pr.VIDEO ? N.videoExtensions : N.audioExtensions; + this.currentMidIndex += 1; + const G = "".concat(this.currentMidIndex); + let K = { media: { mediaType: k, port: mk, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: U.map((ue) => ue.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: this.candidates, extmaps: V, fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: c, ssrcGroups: [], rtcpFeedbackWildcards: [], payloads: U, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: p, rtcpMux: !0, rtcpRsize: !0, mid: "".concat(G) } }; + K = this.mungRecvMediaDsec(K, s, D); + const q = this.findFirstClosedMedia(k); + if (q) { + const ue = this.sessionDesc.mediaDescriptions.indexOf(q); + this.sessionDesc.mediaDescriptions[ue] = K; + } else + this.sessionDesc.mediaDescriptions.push(K); + return K; + } + updateRemoteCodec(s, c, p) { + const m = [...new Set(this._rtpCapabilities.recv.videoCodecs.map((K) => K.rtpMap && K.rtpMap.encodingName.toLowerCase() || "").filter((K) => { + var q; + return rr(q = Object.keys(Qy)).call(q, K); + }))], T = new Set(c); + if (m.every((K) => T.has(K))) + return ie.debug("codecs has not changed, no need to updateRemoteCodec, codecs: ".concat(c)), !1; + const D = this._rtpCapabilities.recv.videoCodecs.filter((K) => c.some((q) => { + var ue; + return rr(ue = K.rtpMap && K.rtpMap.encodingName.toLowerCase() || "").call(ue, q); + })); + if (D.length === 0) + return ie.debug("updateRemoteCodec failed, because cannot find matched codec, remoteCapabilities codecs: ".concat(m, " codecs: ").concat(c)), !1; + const k = [...new Set(D.map((K) => K.rtpMap && K.rtpMap.encodingName.toLowerCase() || ""))]; + let N; + if (ie.debug("updateRemoteCodec, from ".concat(m, " to ").concat(k)), s.length === 0) + N = this.sessionDesc.mediaDescriptions.filter((K) => K.media.mediaType === "video" && K.attributes.direction === "recvonly"); + else if (N = this.sessionDesc.mediaDescriptions.filter((K) => K.attributes.mid && rr(s).call(s, K.attributes.mid) && K.attributes.direction === "recvonly"), N.length !== s.length) + return ie.debug("updateRemoteCodec failed, because cannot find mids, mids: ".concat(s, ", codecs: ").concat(c)), !1; + this._rtpCapabilities.recv.videoCodecs = D; + const U = this.localCapabilities.send, V = this.rtpCapabilities.recv, G = jS(pr.VIDEO, V, U, p); + return N.forEach((K) => { + const q = G.map((ue) => ue.payloadType.toString(10)); + ie.debug("updateRemoteCodec mid: ".concat(K.attributes.mid, ", from ").concat(K.attributes.payloads, " to ").concat(G)), K.attributes.payloads = G, K.media.fmts = q; + }), !0; + } + createOrRecycleSendMedia(s, c, p, m, T) { + const D = this.rtpCapabilities.send, k = s === pr.VIDEO ? D.videoCodecs : D.audioCodecs, N = s === pr.VIDEO ? D.videoExtensions : D.audioExtensions; + this.currentMidIndex += 1; + const U = "".concat(this.currentMidIndex); + let V = { media: { mediaType: s, port: mk, protos: ["UDP", "TLS", "RTP", "SAVPF"], fmts: k.map((K) => K.payloadType.toString(10)) }, connections: [{ nettype: "IN", addrtype: "IP4", address: "127.0.0.1" }], bandwidths: [], attributes: { iceUfrag: this.iceParameters.iceUfrag, icePwd: this.iceParameters.icePwd, unrecognized: [], candidates: this.candidates, extmaps: N, fingerprints: this.dtlsParameters.fingerprints, imageattr: [], msids: [], remoteCandidatesList: [], rids: [], ssrcs: c, ssrcGroups: p, rtcpFeedbackWildcards: [], payloads: k, rtcp: { port: "9", netType: "IN", addressType: "IP4", address: "0.0.0.0" }, setup: this.setup, direction: m, rtcpMux: !0, rtcpRsize: !0, mid: "".concat(U) } }; + V = this.mungSendMediaDesc(V, T); + const G = this.findFirstClosedMedia(s); + if (G) { + const K = this.sessionDesc.mediaDescriptions.indexOf(G); + this.sessionDesc.mediaDescriptions[K] = V; + } else + this.sessionDesc.mediaDescriptions.push(V); + return V; + } + updateBundleMids() { + this.sessionDesc.attributes.groups[0].identificationTag = this.sessionDesc.mediaDescriptions.filter((s) => s.media.port !== "0").map((s) => s.attributes.mid); + } + mungRecvMediaDsec(s, c, p) { + const m = ca(s); + return dk(m), __(m, c), fk(m, c), $$(m), cT(m, p, this.localCapabilities.send), m; + } + mungSendMediaDesc(s, c) { + const p = ca(s); + return cT(p, c, this.localCapabilities.recv), up(p), p; + } + updateRecvMedia(s, c) { + const p = this.sessionDesc.mediaDescriptions.findIndex((m) => m.attributes.mid === s); + if (p !== -1) { + const m = this.mungRecvMediaDsec(this.sessionDesc.mediaDescriptions[p], c); + this.sessionDesc.mediaDescriptions[p] = m; + } + } + bumpMid(s) { + this.currentMidIndex += s; + } + findFirstClosedMedia(s) { + return this.sessionDesc.mediaDescriptions.find((c) => qi() ? c.media.port === "0" && c.media.mediaType === s : c.media.port === "0"); + } + findPreloadMediaDesc(s) { + return this.sessionDesc.mediaDescriptions.find((c) => { + var p; + return ((p = c.attributes) === null || p === void 0 || (p = p.ssrcs[0]) === null || p === void 0 ? void 0 : p.ssrcId) === s[0].ssrcId; + }); + } + getSSRC(s) { + var c; + return (c = this.sessionDesc.mediaDescriptions.find((p) => p.attributes.mid === s)) === null || c === void 0 ? void 0 : c.attributes.ssrcs; + } + } + function Gte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function yk(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Gte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Gte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + class qs extends bM { + get currentLocalDescription() { + return this.peerConnection.currentLocalDescription; + } + get currentRemoteDescription() { + return this.peerConnection.currentRemoteDescription; + } + get peerConnectionState() { + return this.peerConnection.connectionState; + } + get iceConnectionState() { + return this.peerConnection.iceConnectionState; + } + get localCodecs() { + let s; + return this.localCapabilities && (s = uT(this.localCapabilities)), [...new Set(s && s.send.videoCodecs.map((c) => c.rtpMap && c.rtpMap.encodingName.toLowerCase() || "").filter((c) => { + var p; + return rr(p = Object.keys(Qy)).call(p, c); + }))]; + } + constructor(s, c, p) { + super(s, c), Z(this, "store", void 0), Z(this, "peerConnection", void 0), Z(this, "remoteSDP", void 0), Z(this, "initialOffer", void 0), Z(this, "transportEventReceiver", void 0), Z(this, "statsFilter", void 0), Z(this, "useXR", Le("USE_XR")), Z(this, "localCapabilities", void 0), Z(this, "localCandidateCount", 0), Z(this, "allCandidatesReceived", !1), Z(this, "remoteCodecs", void 0), Z(this, "dataStreamChannelMap", /* @__PURE__ */ new Map()), Z(this, "establishPromise", void 0), Z(this, "mutex", new Ss("NVExtentionsConnection-mutex")), Z(this, "rtcMedia", void 0), this.store = c, this.peerConnection = p, this.statsFilter = hk(this.peerConnection, Le("STATS_UPDATE_INTERVAL"), void 0, qi() ? 1200 : void 0), this.bindPCEvents(), this.bindStatsEvents(), this.store.p2pId = this.store.p2pId + 1, this.establishPromise = this.establish(); + } + establish(s) { + return ye(this, null, function* () { + try { + const c = yield this.peerConnection.createOffer(); + if (!c.sdp) + throw new Error("Cannot get initialOffer.sdp when trying to establish PeerConnection."); + const p = cp(c.sdp), m = yield z$({ filterRTX: !Le("USE_PUB_RTX") && !Le("USE_SUB_RTX"), filterVideoFec: Le("FILTER_VIDEO_FEC"), filterAudioFec: Le("FILTER_AUDIO_FEC"), filterVideoCodec: Le("FILTER_VIDEO_CODEC") }, { useXR: this.useXR }); + return this.localCapabilities = m, this.initialOffer = c, yk(yk({}, p), {}, { rtpCapabilities: m, offerSDP: c.sdp }); + } catch (c) { + throw new Je(_e.GET_LOCAL_CONNECTION_PARAMS_FAILED, c.toString()); + } + }); + } + connect(s, c, p, m, T, D) { + return ye(this, null, function* () { + try { + if (!this.initialOffer) + throw new Error("Cannot establish NVConnection without initial offer."); + this.remoteSDP = new FFe({ remoteIceParameters: s, remoteDtlsParameters: c, candidates: p, remoteRTPCapabilities: m, remoteSetup: T, localCapabilities: uT(this.localCapabilities), cname: D }); + const k = this.remoteSDP.toString(), N = Da.parse(this.initialOffer.sdp), U = N.mediaDescriptions.find((K) => K.media.mediaType === "audio"); + U && up(U), this.useXR && dA(N); + const V = Da.print(N), G = this.logSDPExchange(V || "", "offer", "local", "connect"); + yield this.peerConnection.setLocalDescription({ type: "offer", sdp: V }), G == null || G(k), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: k }); + } catch (k) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NV.connect failed; ".concat(k.toString())); + } + }); + } + updateRemoteRTPCapabilities(s, c) { + return ye(this, null, function* () { + if (this.remoteCodecs = c, !this.remoteSDP) + return void ie.debug("[P2PConnection] cannot updateRemoteRTPCapabilities before remote SDP created, local codecs: ".concat(this.localCodecs, ", codecs: ").concat(c)); + if (this.remoteSDP.updateRemoteCodec(s, c, this.store.codec)) { + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "muteLocal"); + yield this.peerConnection.setLocalDescription(p); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } else + ie.debug("[P2PConnection] updateRemoteRTPCapabilities no need to exchange SDP."); + }); + } + updateRemoteConnect(s) { + return ye(this, null, function* () { + var c, p, m, T; + (c = this.remoteSDP) === null || c === void 0 || c.updateRemoteRTPCapabilities(s), Array.isArray(this.remoteCodecs) && this.remoteCodecs.length > 0 && ((T = this.remoteSDP) === null || T === void 0 || T.updateRemoteCodec([], this.remoteCodecs, this.store.codec)), (p = this.remoteSDP) === null || p === void 0 || p.preloadRemoteMedia(2); + const D = (m = this.remoteSDP) === null || m === void 0 ? void 0 : m.toString(); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: D }); + const k = yield this.peerConnection.createAnswer(); + yield this.peerConnection.setLocalDescription(k), ie.debug("[NVExtentionsConnection] updateRemoteRTPCapabilities by exchanging SDP."); + }); + } + send(s, c, p) { + var m = this; + return yu(function* () { + const T = yield En(m.mutex.lock("From NVExtentionsConnection.send")); + try { + if (!m.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.send before remote SDP created"); + const D = []; + s.forEach((oe) => { + const he = m.peerConnection.addTransceiver(oe._mediaStreamTrack, { direction: "sendonly" }); + D.push(he); + }), qi() && Le("SIMULCAST") === !0 && (yield En(m.applySimulcastForFirefox(D, s))); + const k = yield En(m.peerConnection.createOffer()), N = m.remoteSDP.predictReceivingMids(s.length), U = m.mungSendOfferSDP(k.sdp, s, N), V = Da.parse(U), G = N.map((oe) => { + const he = V.mediaDescriptions.find((Ce) => Ce.attributes.mid === oe); + if (!he) + throw new Error("Cannot extract ssrc from mediaDescription."); + return j$(he, Le("USE_PUB_RTX")); + }); + let K; + try { + K = yield G; + } catch (oe) { + K = [], m.remoteSDP.receive(s, c, p, K); + const he = m.remoteSDP.toString(); + throw yield En(m.peerConnection.setLocalDescription({ type: "offer", sdp: U })), yield En(m.peerConnection.setRemoteDescription({ type: "answer", sdp: he })), yield En(m.stopSending(N, !0)), oe; + } + m.remoteSDP.receive(s, c, p, K); + const q = m.remoteSDP.toString(), ue = m.logSDPExchange(U, "offer", "local", "send"); + return yield En(m.peerConnection.setLocalDescription({ type: "offer", sdp: U })), yield En(m.applySimulcastEncodings(D, s)), yield En(m.applySendEncodings(D, s)), ue == null || ue(q), yield En(m.peerConnection.setRemoteDescription({ type: "answer", sdp: q })), D.map((oe, he) => { + const Ce = N[he]; + return { localSSRC: G[he], id: Ce, transceiver: oe }; + }); + } catch (D) { + throw D instanceof Je ? D : new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.send failed; ".concat(D.toString())); + } finally { + T(); + } + })(); + } + stopSending(s, c) { + return ye(this, null, function* () { + const p = c ? void 0 : yield this.mutex.lock("From NVExtentionsConnection.stopSending"); + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.stopSending before remote SDP created"); + const m = this.peerConnection.getTransceivers().filter((N) => s.indexOf(N.mid) !== -1); + if (m.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length when trying to call NVExtentionsConnection.stopSending."); + m.map((N) => { + var U; + N.direction = "inactive", (U = N.stop) === null || U === void 0 || U.call(N); + }); + const T = yield this.peerConnection.createOffer(), D = this.logSDPExchange(T.sdp || "", "offer", "local", "stopSending"); + yield this.peerConnection.setLocalDescription(T), this.remoteSDP.stopReceiving(s); + const k = this.remoteSDP.toString(); + D == null || D(k), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: k }); + } catch (m) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.stopSending failed; ".concat(m.toString())); + } finally { + p && p(); + } + }); + } + createDataChannels(s, c) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.createDataChannels before remote SDP created"); + let p = this.dataStreamChannelMap.get(s); + return p && p.readyState === "open" ? ie.debug("[P2PConnection] Channels are already available and can be reused directly.") : (p = this.peerConnection.createDataChannel("datastream-channel", { ordered: !1, maxRetransmits: Le("DATASTREAM_MAX_RETRANSMITS") }), p.binaryType = "arraybuffer", this.dataStreamChannelMap.set(s, p)), void c.forEach((m) => { + m._updateOriginDataChannel(p); + }); + } catch (p) { + throw p instanceof Je ? p : new Je(_e.DATACHANNEL_FAILED, "NVExtentionsConnection.createDataChannels failed; ".concat(p.toString())); + } + }); + } + stopDataChannels(s) { + return ye(this, null, function* () { + try { + const c = this.dataStreamChannelMap.get(s); + return c == null || c.close(), void this.dataStreamChannelMap.delete(s); + } catch (c) { + throw c instanceof Je ? c : new Je(_e.DATACHANNEL_FAILED, "NVExtentionsConnection.stopDataChannels failed; ".concat(c.toString())); + } + }); + } + receive(s, c, p, m) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.receive ".concat(s, " before remoteSDP created.")); + const { mid: T, needExchangeSDP: D } = this.remoteSDP.send(s, c, p, m); + if (D) { + const N = this.remoteSDP.toString(), U = this.logSDPExchange(N, "offer", "remote", "receive"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: N }); + const V = yield this.peerConnection.createAnswer(), G = this.mungReceiveAnswerSDP(V.sdp, T, s); + U == null || U(G || ""), yield this.peerConnection.setLocalDescription({ type: "answer", sdp: G }), ie.debug("[NVExtentionsConnection] receive ".concat(s, " by exchanging SDP.")); + } else + ie.debug("[NVExtentionsConnection] receive ".concat(s, " no need to exchange SDP.")); + const k = this.peerConnection.getTransceivers().find((N) => N.mid === T); + if (!k) + throw new Error("Cannot get transceiver after setLocalDescription."); + return { track: k.receiver.track, id: T }; + } catch (T) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.receive failed; ".concat(T.toString())); + } + }); + } + batchReceive(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.batchReceive before remoteSDP created."); + const { mids: c, needExchangeSDP: p } = this.remoteSDP.batchSend(s); + if (p) { + const m = this.remoteSDP.toString(), T = this.logSDPExchange(m, "offer", "remote", "receive"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: m }); + const D = yield this.peerConnection.createAnswer(); + T == null || T(D.sdp || ""), yield this.peerConnection.setLocalDescription(D), ie.debug("[NVExtentionsConnection] batchReceive by exchanging SDP."); + } else + ie.debug("[NVExtentionsConnection] batchReceive no need to exchange SDP."); + return c.map((m) => { + const T = this.peerConnection.getTransceivers().find((D) => D.mid === m); + if (!T) + throw new Error("Cannot get transceiver after setLocalDescription."); + return { track: T.receiver.track, id: m }; + }); + } catch (c) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.receive failed; ".concat(c.toString())); + } + }); + } + stopReceiving(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.stopReceiving before remote SDP created."); + this.remoteSDP.stopSending(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "stopReceiving"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection stopReceiving failed; ".concat(c.toString())); + } + }); + } + muteRemote(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.muteRemote mid=".concat(s, " before remote SDP created.")); + this.remoteSDP.mute(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "muteRemote"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.muteRemote failed; ".concat(c.toString())); + } + }); + } + unmuteRemote(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.unmuteRemote mid=".concat(s, " before remote SDP created.")); + this.remoteSDP.unmute(s); + const c = this.remoteSDP.toString(), p = this.logSDPExchange(c, "offer", "remote", "unmuteRemote"); + yield this.peerConnection.setRemoteDescription({ type: "offer", sdp: c }); + const m = yield this.peerConnection.createAnswer(); + p == null || p(m.sdp || ""), yield this.peerConnection.setLocalDescription(m); + } catch (c) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.unmuteRemote failed; ".concat(c.toString())); + } + }); + } + muteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.muteLocal before remote SDP created."); + const c = this.peerConnection.getTransceivers().filter((D) => D.mid && s.indexOf(D.mid) !== -1); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length."); + c.map((D) => { + D.direction = "inactive"; + }); + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "muteLocal"); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.muteRemote(s); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (c) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.muteLocal failed; ".concat(c.toString())); + } + }); + } + unmuteLocal(s) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.unmuteLocal before remote SDP created."); + const c = this.peerConnection.getTransceivers().filter((D) => D.mid && s.indexOf(D.mid) !== -1); + if (c.length !== s.length) + throw new Error("Transceivers' length doesn't match mids' length."); + c.map((D, k) => ye(this, null, function* () { + D.direction = "sendonly"; + })); + const p = yield this.peerConnection.createOffer(), m = this.logSDPExchange(p.sdp || "", "offer", "local", "unmuteLocal"); + yield this.peerConnection.setLocalDescription(p), this.remoteSDP.unmuteRemote(s); + const T = this.remoteSDP.toString(); + m == null || m(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (c) { + throw new Je(_e.EXCHANGE_SDP_FAILED, "NVExtentionsConnection.unmuteLocal failed; ".concat(c.toString())); + } + }); + } + restartICE(s) { + var c = this; + return yu(function* () { + const p = yield En(c.mutex.lock("From NVExtentionsConnection.restartICE")); + try { + if (!c.remoteSDP) + throw new Error("Cannot restartICE before remoteSDP created."); + if (_i().supportPCSetConfiguration) { + const U = c.peerConnection.getConfiguration(), V = s === Ys.RELAY ? "relay" : "all"; + U.iceTransportPolicy !== V && (ie.debug("restartICE change iceTransportPolicy from [".concat(U.iceTransportPolicy, "] to [").concat(V, "]")), U.iceTransportPolicy = V, c.peerConnection.setConfiguration(U)); + } else if (s === Ys.RELAY) + return; + s !== Ys.RELAY && c.remoteSDP.updateCandidates(s); + const m = yield En(c.peerConnection.createOffer({ iceRestart: !0 })); + if (!m.sdp) + throw new Error("Cannot restartICE because restart offer SDP does not exist."); + const T = cp(m.sdp), { remoteIceParameters: D } = yield T.iceParameters; + c.remoteSDP.restartICE(D); + const k = c.remoteSDP.toString(), N = c.logSDPExchange(m.sdp || "", "offer", "local", "restartICE"); + yield En(c.peerConnection.setLocalDescription(m)), N == null || N(k), yield En(c.peerConnection.setRemoteDescription({ type: "answer", sdp: k })); + } catch (m) { + ie.warning("restart ICE failed, abort operation", m); + } finally { + p(); + } + })(); + } + close() { + var s; + (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, "closed"), this.unbindPCEvents(), this.unbindStatsEvents(), this.removeAllListeners(), this.transportEventReceiver = void 0, this.statsFilter.destroy(), this.dataStreamChannelMap.clear(); + } + getStats() { + return this.statsFilter.getStats(); + } + getRemoteVideoIsReady(s) { + return this.statsFilter.getVideoIsReady(s); + } + updateEncoderConfig(s, c) { + return ye(this, null, function* () { + try { + if (!this.remoteSDP) + throw new Error("Cannot call NVExtentionsConnection.updateEncoderConfig before remote SDP created."); + const p = yield this.peerConnection.createOffer(), m = this.mungSendOfferSDP(p.sdp, [c], [s]); + this.remoteSDP.updateRecvMedia(s, c); + const T = this.remoteSDP.toString(), D = this.logSDPExchange(m, "offer", "local", "updateEncoderConfig"); + yield this.peerConnection.setLocalDescription({ type: "offer", sdp: m }), D == null || D(T), yield this.peerConnection.setRemoteDescription({ type: "answer", sdp: T }); + } catch (p) { + throw new Je(_e.EXCHANGE_SDP_FAILED, p.toString()); + } + }); + } + updateSendParameters(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getTransceivers().filter((m) => m.mid === s); + p.length === 1 && (this.isVP8Simulcast(c) ? qi() || (yield this.applySimulcastEncodings(p, [c])) : yield this.applySendEncodings(p, [c])); + }); + } + setStatsRemoteVideoIsReady(s, c) { + this.statsFilter.setVideoIsReady2(s, c); + } + replaceTrack(s, c) { + return ye(this, null, function* () { + const p = this.peerConnection.getTransceivers().find((m) => m.mid === c); + p && (yield p.sender.replaceTrack(s._mediaStreamTrack)); + }); + } + getP2PConnectionParams() { + var s; + if ((s = this.peerConnection.currentLocalDescription) === null || s === void 0 || !s.sdp || !this.localCapabilities) + throw new Error(); + return yk(yk({}, cp(this.peerConnection.currentLocalDescription.sdp)), {}, { rtpCapabilities: this.localCapabilities }); + } + bindPCEvents() { + this.peerConnection.oniceconnectionstatechange = () => { + var s; + (s = this.onICEConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.iceConnectionState); + }, this.peerConnection.onconnectionstatechange = () => { + var s; + (s = this.onConnectionStateChange) === null || s === void 0 || s.call(this, this.peerConnection.connectionState); + }, this.peerConnection.onicecandidate = (s) => { + s.candidate ? this.localCandidateCount += 1 : (this.peerConnection.onicecandidate = null, this.allCandidatesReceived = !0, ie.debug("[pc-".concat(this.store.p2pId, "] local candidate count"), this.localCandidateCount)); + }, setTimeout(() => { + this.allCandidatesReceived || (this.allCandidatesReceived = !0, ie.debug("[pc-".concat(this.store.p2pId, "] onicecandidate timeout, local candidate count"), this.localCandidateCount)); + }, Le("CANDIDATE_TIMEOUT")); + } + unbindPCEvents() { + this.peerConnection.oniceconnectionstatechange = null, this.peerConnection.onconnectionstatechange = null, this.peerConnection.onsignalingstatechange = null, this.peerConnection.onicecandidateerror = null, this.peerConnection.onicecandidate = null, this.peerConnection.ontrack = null; + } + static resolvePCConfiguration(s) { + const c = { iceServers: [] }; + return s.iceServers ? c.iceServers = s.iceServers : s.turnServer && s.turnServer.mode !== "off" && (OC(s.turnServer.servers) ? c.iceServers = s.turnServer.servers : (c.iceServers && c.iceServers.push(...qs.turnServerConfigToIceServers(s.turnServer.servers)), Le("USE_TURN_SERVER_OF_GATEWAY") && c.iceServers && s.turnServer.serversFromGateway && c.iceServers.push(...qs.turnServerConfigToIceServers(s.turnServer.serversFromGateway)), Le("FORCE_TURN_TCP") ? c.iceTransportPolicy = "relay" : s.turnServer.servers.concat(s.turnServer.serversFromGateway || []).forEach((p) => { + p.forceturn && (c.iceTransportPolicy = "relay"); + }))), c; + } + static turnServerConfigToIceServers(s) { + const c = []; + return s.forEach((p) => { + p.security ? p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turns:".concat(a_(p.turnServerURL), ":").concat(p.tcpport, "?transport=tcp") }) : (p.udpport && !Le("FORCE_TURN_TCP") && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.udpport, "?transport=udp") }), p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.tcpport, "?transport=tcp") })); + }), c; + } + applySendEncodings(s, c) { + return ye(this, null, function* () { + try { + if (!_i().supportSetRtpSenderParameters || s.length !== c.length) + return; + for (let G = 0; G < s.length; G++) { + const K = s[G], q = c[G]; + if (q && q instanceof In) { + var p, m, T; + if (this.isVP8Simulcast(q)) + continue; + const ue = {}, oe = {}; + switch (q._optimizationMode) { + case "motion": + ue.degradationPreference = "maintain-framerate"; + break; + case "detail": + ue.degradationPreference = "maintain-resolution"; + break; + default: + ue.degradationPreference = "balanced"; + } + var D, k, N, U; + if ((p = q._encoderConfig) !== null && p !== void 0 && p.bitrateMax && (oe.maxBitrate = 1e3 * ((D = q._encoderConfig) === null || D === void 0 ? void 0 : D.bitrateMax)), rr(m = q._hints).call(m, ua.LOW_STREAM) && ((k = q._encoderConfig) !== null && k !== void 0 && k.frameRate && (oe.maxFramerate = oh(q._encoderConfig.frameRate)), (N = q._encoderConfig) !== null && N !== void 0 && N.scaleResolutionDownBy && ((U = q._encoderConfig) === null || U === void 0 ? void 0 : U.scaleResolutionDownBy) > 1 && (oe.scaleResolutionDownBy = q._encoderConfig.scaleResolutionDownBy)), Le("DSCP_TYPE") && Zy()) { + var V; + const ke = Le("DSCP_TYPE"); + rr(V = ["very-low", "low", "medium", "high"]).call(V, ke) && (oe.networkPriority = ke); + } + const he = K.sender.getParameters(), Ce = (T = he.encodings) === null || T === void 0 ? void 0 : T[0]; + qi() && !Ce && (ue.encodings = [oe]), Ce && Object.assign(Ce, oe), Object.assign(he, ue), yield K.sender.setParameters(he); + } + } + } catch (G) { + ie.debug("Apply RTPSendEncodings failed."); + } + }); + } + mungSendOfferSDP(s, c, p) { + const m = Da.parse(s); + return c.forEach((T, D) => { + const k = p[D], N = m.mediaDescriptions.find((U) => U.attributes.mid === k); + N && (__(N, T), V$(N, T, this.store.codec)); + }), Da.print(m); + } + mungReceiveAnswerSDP(s, c, p) { + const m = Da.parse(s), T = m.mediaDescriptions.find((D) => D.attributes.mid === c); + return T && p === pr.AUDIO && T.media.mediaType === "audio" && up(T), this.useXR && dA(m), Da.print(m); + } + bindStatsEvents() { + this.statsFilter.onFirstAudioReceived = (s) => { + var c; + (c = this.onFirstAudioReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoReceived = (s) => { + var c; + (c = this.onFirstVideoReceived) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstAudioDecoded = (s) => { + var c; + (c = this.onFirstAudioDecoded) === null || c === void 0 || c.call(this, s); + }, this.statsFilter.onFirstVideoDecoded = (s, c, p) => { + var m; + (m = this.onFirstVideoDecoded) === null || m === void 0 || m.call(this, s, c, p); + }, this.statsFilter.onSelectedLocalCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedLocalCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onSelectedRemoteCandidateChanged = (s, c) => { + var p; + (p = this.onSelectedRemoteCandidateChanged) === null || p === void 0 || p.call(this, s, c); + }, this.statsFilter.onFirstVideoDecodedTimeout = (s) => { + var c; + (c = this.onFirstVideoDecodedTimeout) === null || c === void 0 || c.call(this, s); + }; + } + unbindStatsEvents() { + this.statsFilter.onFirstAudioReceived = void 0, this.statsFilter.onFirstVideoReceived = void 0, this.statsFilter.onFirstAudioDecoded = void 0, this.statsFilter.onFirstVideoDecoded = void 0, this.statsFilter.onSelectedLocalCandidateChanged = void 0, this.statsFilter.onSelectedRemoteCandidateChanged = void 0, this.statsFilter.onFirstVideoDecodedTimeout = void 0; + } + applySimulcastForFirefox(s, c) { + return ye(this, null, function* () { + if (s.length === c.length) + for (let N = 0; N < s.length; N++) { + var p, m, T, D, k; + const U = s[N], V = c[N]; + if (V instanceof In && !rr(p = V._hints).call(p, ua.LOW_STREAM) && (m = V._encoderConfig) !== null && m !== void 0 && m.bitrateMax && ((T = V._encoderConfig) === null || T === void 0 ? void 0 : T.bitrateMax) > 200 && (D = V._scalabilityMode) !== null && D !== void 0 && D.numSpatialLayers && ((k = V._scalabilityMode) === null || k === void 0 ? void 0 : k.numSpatialLayers) > 1 && this.store.codec === "vp8") { + const G = {}, K = { high: 1e3 * (V._encoderConfig.bitrateMax - 50), medium: 5e4 }; + G.encodings = [{ rid: "m", active: !0, maxBitrate: K.medium, scaleResolutionDownBy: 4 }, { rid: "h", active: !0, maxBitrate: K.high }]; + const q = U.sender.getParameters(); + yield U.sender.setParameters(Object.assign(q, G)); + } + } + }); + } + applySimulcastEncodings(s, c) { + return ye(this, null, function* () { + if (!qi() && s.length === c.length) + for (let p = 0; p < s.length; p++) { + const m = c[p]; + if (m instanceof In && this.isVP8Simulcast(m)) { + const T = s[p], D = {}, k = { high: 1e3 * (m._encoderConfig.bitrateMax - 50), medium: 5e4 }; + D.encodings = [{ active: !0, adaptivePtime: !1, networkPriority: "high", priority: "high", maxBitrate: k.high }, { active: !0, adaptivePtime: !1, networkPriority: "low", priority: "low", maxBitrate: k.medium, scaleResolutionDownBy: 4 }]; + const N = T.sender.getParameters(); + yield T.sender.setParameters(Object.assign(N, D)); + } + } + }); + } + isVP8Simulcast(s) { + var c, p, m, T, D; + return !!(s instanceof In && Le("SIMULCAST") && this.store.codec === "vp8" && !rr(c = s._hints).call(c, ua.LOW_STREAM) && (p = s._encoderConfig) !== null && p !== void 0 && p.bitrateMax && ((m = s._encoderConfig) === null || m === void 0 ? void 0 : m.bitrateMax) > 200 && (T = s._scalabilityMode) !== null && T !== void 0 && T.numSpatialLayers && ((D = s._scalabilityMode) === null || D === void 0 ? void 0 : D.numSpatialLayers) > 1); + } + logSDPExchange(s, c, p, m) { + if (Le("SDP_LOGGING")) + return ie.upload("exchanging ".concat(p, " ").concat(c, " SDP during NVExtentionsConnection.").concat(m, ` +`), s), c === "offer" ? (T) => { + this.logSDPExchange(T, "answer", p === "local" ? "remote" : "local", m); + } : void 0; + } + getRemoteSSRC(s) { + return ye(this, null, function* () { + if (!this.remoteSDP) + return; + const c = this.remoteSDP.getSSRC(s); + return c == null ? void 0 : c[0].ssrcId; + }); + } + setConfiguration(s) { + if (_i().supportPCSetConfiguration) { + const c = qs.resolvePCConfiguration(s); + this.peerConnection.setConfiguration(c); + } + } + } + function Uc(h, s, c) { + const p = h[s]; + if (typeof p != "function") + throw new Error("Cannot use mutex on object property."); + return c.value = function() { + return ye(this, arguments, function* () { + const m = this.mutex, T = yield m.lock("From NVExtentionsConnection.".concat(s)); + try { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + return yield p.apply(this, k); + } finally { + T(); + } + }); + }, c; + } + function Yte(h) { + var s, c, p, m = 2; + for (typeof Symbol != "undefined" && (c = Nte, p = Symbol.iterator); m--; ) { + if (c && (s = h[c]) != null) + return s.call(h); + if (p && (s = h[p]) != null) + return new _k(s.call(h)); + c = "@@asyncIterator", p = "@@iterator"; + } + throw new TypeError("Object is not async iterable"); + } + function _k(h) { + function s(c) { + if (Object(c) !== c) + return ot.reject(new TypeError(c + " is not an object.")); + var p = c.done; + return ot.resolve(c.value).then(function(m) { + return { value: m, done: p }; + }); + } + return _k = function(c) { + this.s = c, this.n = c.next; + }, _k.prototype = { s: null, n: null, next: function() { + return s(this.n.apply(this.s, arguments)); + }, return: function(c) { + var p = this.s.return; + return p === void 0 ? ot.resolve({ value: c, done: !0 }) : s(p.apply(this.s, arguments)); + }, throw: function(c) { + var p = this.s.return; + return p === void 0 ? ot.reject(c) : s(p.apply(this.s, arguments)); + } }, new _k(h); + } + St([Uc, ge("design:type", Function), ge("design:paramtypes", [Object, Object, Array, Object, String, String]), ge("design:returntype", ot)], qs.prototype, "connect", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Array, Array]), ge("design:returntype", ot)], qs.prototype, "updateRemoteRTPCapabilities", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], qs.prototype, "updateRemoteConnect", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Object, Array]), ge("design:returntype", ot)], qs.prototype, "createDataChannels", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [String, Array, String, Object]), ge("design:returntype", ot)], qs.prototype, "receive", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], qs.prototype, "batchReceive", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], qs.prototype, "stopReceiving", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], qs.prototype, "muteRemote", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], qs.prototype, "unmuteRemote", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], qs.prototype, "muteLocal", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], qs.prototype, "unmuteLocal", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], qs.prototype, "close", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], qs.prototype, "updateEncoderConfig", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], qs.prototype, "updateSendParameters", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [Xs, String]), ge("design:returntype", ot)], qs.prototype, "replaceTrack", null), St([Uc, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], qs.prototype, "getRemoteSSRC", null); + class rs extends bM { + get currentLocalDescription() { + return this.peerConnection.currentLocalDescription; + } + get currentRemoteDescription() { + return this.peerConnection.currentRemoteDescription; + } + get peerConnectionState() { + return this.peerConnection.connectionState; + } + get iceConnectionState() { + return this.peerConnection.iceConnectionState; + } + get localCodecs() { + return this._p2pConnection.localCodecs; + } + constructor(s, c) { + super(s, c), Z(this, "store", void 0), Z(this, "peerConnection", void 0), Z(this, "cname", void 0), Z(this, "mutex", new Ss("DataChannelConnection-mutex")), Z(this, "dataChannel", void 0), Z(this, "_p2pConnection", void 0), Z(this, "establishPromise", void 0), Z(this, "_nvMedia", void 0), this.store = c, this.store.dcId = this.store.dcId + 1, this.peerConnection = new RTCPeerConnection(rs.resolvePCConfiguration(s), { optional: [{ googDscp: !0 }] }), this.dataChannel = this.peerConnection.createDataChannel("agora-signal", { ordered: !1, maxPacketLifeTime: 50 }), this.dataChannel.binaryType = "arraybuffer", this._p2pConnection = new qs(s, c, this.peerConnection), this.bindPCEvents(), this.establishPromise = this._p2pConnection.establishPromise; + } + establish() { + return ye(this, null, function* () { + var s; + const c = (s = this._nvMedia) === null || s === void 0 ? void 0 : s.getLocalRtpCapabilities(); + return yield this._p2pConnection.establish(c); + }); + } + getP2PConnectionParams() { + return this._p2pConnection.getP2PConnectionParams(); + } + connect(s, c, p, m, T, D) { + return ye(this, null, function* () { + return this.cname = D, yield this._p2pConnection.connect(s, c, p, m, T, D), yield new ot((k, N) => { + const U = setTimeout(() => { + this.closeSignal(), N(new Je(_e.DATACHANNEL_CONNECTION_TIMEOUT, "Datachannel connection timed out, candidates: ".concat(JSON.stringify(p)))); + }, 2e3); + this.dataChannel.onopen = () => { + if (this.dataChannel.readyState === "open") + return clearTimeout(U), void k(); + }, this.dataChannel.onerror = (V) => { + this.closeSignal(), N(V); + }; + }), { transmitter: this.dataChannel, close: this.closeSignal.bind(this) }; + }); + } + updateRemoteRTPCapabilities(s, c) { + return ye(this, null, function* () { + return this._p2pConnection.updateRemoteRTPCapabilities(s, c); + }); + } + send(s, c, p) { + var m = this; + return yu(function* () { + const T = yield En(m.mutex.lock("From DataChannelConnection.send")); + try { + return yield* _A(vk(Yte(m._p2pConnection.send(s, c, p)))); + } finally { + T(); + } + })(); + } + stopSending(s, c) { + return ye(this, null, function* () { + return this._p2pConnection.stopSending(s, c); + }); + } + createDataChannels(s, c) { + return ye(this, null, function* () { + return this._p2pConnection.createDataChannels(s, c); + }); + } + stopDataChannels(s) { + return ye(this, null, function* () { + return this._p2pConnection.stopDataChannels(s); + }); + } + receive(s, c, p, m) { + return ye(this, null, function* () { + return this._nvMedia ? (ie.debug("[DataChannelConnection] receive ".concat(s, " by DataChannel.")), yield this._nvMedia.reveiveByRTCMedia(s, c, this.cname)) : (ie.debug("[DataChannelConnection] receive ".concat(s, " by WebRTC.")), yield this._p2pConnection.receive(s, c, p, m)); + }); + } + batchReceive(s) { + return ye(this, null, function* () { + return [...yield this._p2pConnection.batchReceive(s)]; + }); + } + stopReceiving(s) { + return ye(this, null, function* () { + return yield this._p2pConnection.stopReceiving(s); + }); + } + muteRemote(s) { + return ye(this, null, function* () { + return yield this._p2pConnection.muteRemote(s); + }); + } + unmuteRemote(s) { + return ye(this, null, function* () { + return yield this._p2pConnection.unmuteRemote(s); + }); + } + muteLocal(s) { + return ye(this, null, function* () { + return yield this._p2pConnection.muteLocal(s); + }); + } + unmuteLocal(s) { + return ye(this, null, function* () { + return yield this._p2pConnection.unmuteLocal(s); + }); + } + restartICE(s) { + var c = this; + return yu(function* () { + return yield* _A(vk(Yte(c._p2pConnection.restartICE(s)))); + })(); + } + close() { + var s; + (s = this._nvMedia) === null || s === void 0 || s.close(), this._p2pConnection.close(), this.unbindConnectionEvents(this._p2pConnection); + } + getStats() { + return this._p2pConnection.getStats(); + } + getRemoteVideoIsReady(s) { + return this._p2pConnection.getRemoteVideoIsReady(s); + } + updateRemoteConnect(s) { + var c; + (c = this._nvMedia) === null || c === void 0 || c.setRemoteRtpCapabilities(s), this._p2pConnection.updateRemoteConnect(s); + } + updateEncoderConfig(s, c) { + return ye(this, null, function* () { + return yield this._p2pConnection.updateEncoderConfig(s, c); + }); + } + updateSendParameters(s, c) { + return ye(this, null, function* () { + return yield this._p2pConnection.updateSendParameters(s, c); + }); + } + setStatsRemoteVideoIsReady(s, c) { + this._p2pConnection.setStatsRemoteVideoIsReady(s, c); + } + replaceTrack(s, c) { + return ye(this, null, function* () { + return yield this._p2pConnection.replaceTrack(s, c); + }); + } + getRemoteSSRC(s) { + return ye(this, null, function* () { + return this._p2pConnection.getRemoteSSRC(s); + }); + } + logSDPExchange(s, c, p, m) { + if (Le("SDP_LOGGING")) + return ie.upload("exchanging ".concat(p, " ").concat(c, " SDP during DataChannelConnection.").concat(m, ` +`), s), c === "offer" ? (T) => { + this.logSDPExchange(T, "answer", p === "local" ? "remote" : "local", m); + } : void 0; + } + static resolvePCConfiguration(s) { + const c = { iceServers: [] }; + return s.iceServers ? c.iceServers = s.iceServers : s.turnServer && s.turnServer.mode !== "off" && (OC(s.turnServer.servers) ? c.iceServers = s.turnServer.servers : (c.iceServers && c.iceServers.push(...rs.turnServerConfigToIceServers(s.turnServer.servers)), Le("USE_TURN_SERVER_OF_GATEWAY") && c.iceServers && s.turnServer.serversFromGateway && c.iceServers.push(...rs.turnServerConfigToIceServers(s.turnServer.serversFromGateway)), Le("FORCE_TURN_TCP") ? c.iceTransportPolicy = "relay" : s.turnServer.servers.concat(s.turnServer.serversFromGateway || []).forEach((p) => { + p.forceturn && (c.iceTransportPolicy = "relay"); + }))), c; + } + static turnServerConfigToIceServers(s) { + const c = []; + return s.forEach((p) => { + p.security ? p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turns:".concat(a_(p.turnServerURL), ":").concat(p.tcpport, "?transport=tcp") }) : (p.udpport && !Le("FORCE_TURN_TCP") && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.udpport, "?transport=udp") }), p.tcpport && c.push({ username: p.username, credential: p.password, credentialType: "password", urls: "turn:".concat(p.turnServerURL, ":").concat(p.tcpport, "?transport=tcp") })); + }), c; + } + bindPCEvents() { + this._p2pConnection.onICEConnectionStateChange = (s) => { + var c; + return (c = this.onICEConnectionStateChange) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onConnectionStateChange = (s) => { + var c; + return (c = this.onConnectionStateChange) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onDTLSTransportStateChange = (s) => { + var c; + return (c = this.onDTLSTransportStateChange) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onDTLSTransportError = (s) => { + var c; + return (c = this.onDTLSTransportError) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onICETransportStateChange = (s) => { + var c; + return (c = this.onICETransportStateChange) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onFirstAudioReceived = (s) => { + var c; + return (c = this.onFirstAudioReceived) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onFirstVideoReceived = (s) => { + var c; + return (c = this.onFirstVideoReceived) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onFirstAudioDecoded = (s) => { + var c; + return (c = this.onFirstAudioDecoded) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onFirstVideoDecoded = (s, c, p) => { + var m; + return (m = this.onFirstVideoDecoded) === null || m === void 0 ? void 0 : m.call(this, s, c, p); + }, this._p2pConnection.onFirstVideoDecodedTimeout = (s) => { + var c; + return (c = this.onFirstVideoDecodedTimeout) === null || c === void 0 ? void 0 : c.call(this, s); + }, this._p2pConnection.onSelectedLocalCandidateChanged = (s, c) => { + var p; + return (p = this.onSelectedLocalCandidateChanged) === null || p === void 0 ? void 0 : p.call(this, s, c); + }, this._p2pConnection.onSelectedRemoteCandidateChanged = (s, c) => { + var p; + return (p = this.onSelectedRemoteCandidateChanged) === null || p === void 0 ? void 0 : p.call(this, s, c); + }; + } + closeSignal() { + this.dataChannel.close(), this.peerConnection.close(); + } + unbindConnectionEvents(s) { + s.onConnectionStateChange = void 0, s.onICEConnectionStateChange = void 0, s.onICETransportStateChange = void 0, s.onDTLSTransportStateChange = void 0, s.onDTLSTransportError = void 0, s.onFirstAudioDecoded = void 0, s.onFirstAudioReceived = void 0, s.onFirstVideoDecoded = void 0, s.onFirstVideoReceived = void 0, s.onSelectedLocalCandidateChanged = void 0, s.onSelectedRemoteCandidateChanged = void 0, s.onFirstVideoDecodedTimeout = void 0; + } + setConfiguration(s) { + this._p2pConnection.setConfiguration(s); + } + } + function gh(h, s, c) { + const p = h[s]; + if (typeof p != "function") + throw new Error("Cannot use mutex on object property."); + return c.value = function() { + return ye(this, arguments, function* () { + const m = this.mutex, T = yield m.lock("From DataChannelConnection.".concat(s)); + try { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + return yield p.apply(this, k); + } finally { + T(); + } + }); + }, c; + } + function Xte(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function C_(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? Xte(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : Xte(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + function Kte(h) { + var s, c, p, m = 2; + for (typeof Symbol != "undefined" && (c = Nte, p = Symbol.iterator); m--; ) { + if (c && (s = h[c]) != null) + return s.call(h); + if (p && (s = h[p]) != null) + return new Sk(s.call(h)); + c = "@@asyncIterator", p = "@@iterator"; + } + throw new TypeError("Object is not async iterable"); + } + function Sk(h) { + function s(c) { + if (Object(c) !== c) + return ot.reject(new TypeError(c + " is not an object.")); + var p = c.done; + return ot.resolve(c.value).then(function(m) { + return { value: m, done: p }; + }); + } + return Sk = function(c) { + this.s = c, this.n = c.next; + }, Sk.prototype = { s: null, n: null, next: function() { + return s(this.n.apply(this.s, arguments)); + }, return: function(c) { + var p = this.s.return; + return p === void 0 ? ot.resolve({ value: c, done: !0 }) : s(p.apply(this.s, arguments)); + }, throw: function(c) { + var p = this.s.return; + return p === void 0 ? ot.reject(c) : s(p.apply(this.s, arguments)); + } }, new Sk(h); + } + St([gh, ge("design:type", Function), ge("design:paramtypes", [Object, Object, Array, Object, String, String]), ge("design:returntype", ot)], rs.prototype, "connect", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [Array, Array]), ge("design:returntype", ot)], rs.prototype, "updateRemoteRTPCapabilities", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [Object, Array]), ge("design:returntype", ot)], rs.prototype, "createDataChannels", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [String, Array, String, Object]), ge("design:returntype", ot)], rs.prototype, "receive", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], rs.prototype, "stopReceiving", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], rs.prototype, "muteRemote", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], rs.prototype, "unmuteRemote", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], rs.prototype, "muteLocal", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], rs.prototype, "unmuteLocal", null), St([gh, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], rs.prototype, "close", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], rs.prototype, "updateEncoderConfig", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [String, Xs]), ge("design:returntype", ot)], rs.prototype, "updateSendParameters", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [Xs, String]), ge("design:returntype", ot)], rs.prototype, "replaceTrack", null), St([gh, ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], rs.prototype, "getRemoteSSRC", null); + class Ts extends Ra { + get state() { + return this._state; + } + set state(s) { + const c = this._state; + this._state = s, this.emit(Nr.StateChange, c, this._state); + } + constructor(s, c) { + super(), Z(this, "store", void 0), Z(this, "statsUploader", void 0), Z(this, "connection", void 0), Z(this, "localTrackMap", /* @__PURE__ */ new Map()), Z(this, "remoteUserMap", /* @__PURE__ */ new Map()), Z(this, "localDataChannels", []), Z(this, "remoteDataChannelMap", /* @__PURE__ */ new Map()), Z(this, "pendingLocalTracks", []), Z(this, "pendingRemoteTracks", []), Z(this, "pendingLocalDataChannels", []), Z(this, "pendingRemoteDataChannels", []), Z(this, "statsCollector", void 0), Z(this, "isPlanB", !1), Z(this, "shouldForwardP2PCreation", void 0), Z(this, "iceFailedCount", 0), Z(this, "dtlsFailedCount", 0), Z(this, "mutex", new Ss("P2PChannel-mutex")), Z(this, "_state", Ai.Disconnected), Z(this, "_pcStatsUploadType", Le("NEW_ICE_RESTART") ? op.FIRST_CONNECTION : op.OLD_FIRST_CONNECTION), Z(this, "_isInRestartIce", !1), Z(this, "_isStartRestartIce", !1), Z(this, "_restartStates", ["disconnected", "failed"]), Z(this, "_restartTimer", void 0), Z(this, "_isFirstConnected", !0), Z(this, "handleMuteLocalTrack", (p, m, T) => ye(this, null, function* () { + const D = yield this.mutex.lock("Locking from P2PChannel.handleMuteLocalTrack"); + try { + if (!this.connection || this.state !== Ai.Connected) + return void T(new mt(_e.INVALID_OPERATION, "Cannot call P2PChannel.handleMuteLocalTrack before connection established.")); + const k = this.filterTobeMutedTracks(p); + if (k.length === 0) + return void m(); + const N = k.find((V) => V[0] === "videoLowTrack"); + N && N[1].track._originMediaStreamTrack.stop(), yield this.connection.muteLocal(k.map((V) => { + let [, { id: G }] = V; + return G; + })); + const U = this.createMuteMessage(k); + yield Ji(this, Nr.RequestMuteLocal, U), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleUnmuteLocalTrack", (p, m, T) => ye(this, null, function* () { + const D = yield this.mutex.lock("Locking from P2PChannel.handleUnmuteLocalTrack"); + try { + if (!this.connection || this.state !== Ai.Connected) + return void T(new mt(_e.INVALID_OPERATION, "Cannot call P2PChannel.handleUnmuteLocalTrack before connection established.")); + const k = this.filterTobeUnmutedTracks(p); + if (k.length === 0) + return void m(); + const N = k.find((V) => V[0] === "videoLowTrack"); + if (N) { + const V = N[1]; + if (V.track._originMediaStreamTrack.stop(), !Le("DISABLE_DUAL_STREAM_USE_ENCODING") && _i().supportDualStreamEncoding) { + const G = p._mediaStreamTrack.clone(); + V.track._mediaStreamTrack = G, V.track._originMediaStreamTrack = G; + } else { + const G = H$(p, SS(this, Nr.RequestLowStreamParameter)); + V.track._mediaStreamTrack = G, V.track._originMediaStreamTrack = G; + } + yield new ot((G, K) => { + this.handleReplaceTrack(V.track, G, K, !0); + }); + } + yield this.connection.unmuteLocal(k.map((V) => { + let [, { id: G }] = V; + return G; + })); + const U = this.createUnmuteMessage(k); + yield Ji(this, Nr.RequestUnmuteLocal, U), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleUpdateVideoEncoder", (p, m, T) => ye(this, null, function* () { + const D = yield this.mutex.lock("Locking from P2PChannel.handleSetVideoEncoder"); + try { + const k = this.localTrackMap.get(Mt.LocalVideoTrack); + if (!this.connection || !k || k.track !== p || this.state !== Ai.Connected) + return void m(); + const { id: N, track: U } = k; + yield this.connection.updateSendParameters(N, U), yield this.connection.updateEncoderConfig(N, U), this.emit(Nr.UpdateVideoEncoder, U), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleSetOptimizationMode", (p, m, T) => ye(this, null, function* () { + const D = yield this.mutex.lock("Locking from P2PChannel.handleSetOptimizationMode"); + try { + const k = this.localTrackMap.get(Mt.LocalVideoTrack); + if (!this.connection || !k || k.track !== p || this.state !== Ai.Connected) + return; + const { id: N, track: U } = k; + yield this.connection.updateSendParameters(N, U), m(); + } catch (k) { + T(k); + } finally { + D(); + } + })), Z(this, "handleReplaceMixingTrack", (p, m, T, D) => ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) + return void m(); + const k = X$([p]); + let N; + ie.debug("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection will replace audioTrack [").concat(k.getTrackId(), "]")), typeof D == "boolean" && D || (N = yield this.mutex.lock("From P2PChannel.handleReplaceMixingTrack")); + try { + yield this.replaceTrack(p, k), m(); + } catch (V) { + T(V); + } finally { + var U; + (U = N) === null || U === void 0 || U(); + } + })), Z(this, "handleReplaceTrack", (p, m, T, D) => ye(this, null, function* () { + let k; + ie.debug("[".concat(this.store.clientId, "] P2PChannel handleReplaceTrack for [track-id-").concat(p.getTrackId(), "]")), typeof D == "boolean" && D || (k = yield this.mutex.lock("From P2PChannel.handleReplaceTrack")); + try { + var N; + const V = Array.from(this.localTrackMap.entries()).find((G) => { + let [, { track: K }] = G; + return p === K; + }); + if (!this.connection || !V || this.state !== Ai.Connected) + return void m(); + if (yield (N = this.connection) === null || N === void 0 ? void 0 : N.replaceTrack(p, V[1].id), this.isPlanB) { + const G = V[1]; + G.id = p._mediaStreamTrack.id, this.localTrackMap.set(V[0], G); + } + if (V[0] === Mt.LocalVideoTrack && !Le("DISABLE_DUAL_STREAM_USE_ENCODING") && _i().supportDualStreamEncoding) { + const G = this.localTrackMap.get(Mt.LocalVideoLowTrack); + if (G) { + const K = p._mediaStreamTrack.clone(); + G.track._originMediaStreamTrack.stop(), G.track._mediaStreamTrack = K, G.track._originMediaStreamTrack = K, yield new ot((q, ue) => { + this.handleReplaceTrack(G.track, q, ue, !0); + }); + } + } + m(); + } catch (V) { + T(V); + } finally { + var U; + (U = k) === null || U === void 0 || U(); + } + })), Z(this, "handleGetRTCStats", (p) => { + p(this.statsCollector.getRTCStats()); + }), Z(this, "handleGetLocalVideoStats", (p) => { + p(this.statsCollector.getLocalVideoTrackStats()); + }), Z(this, "handleGetLocalAudioStats", (p) => { + p(this.statsCollector.getLocalAudioTrackStats()); + }), Z(this, "handleGetRemoteVideoStats", (p) => this.statsCollector.getRemoteVideoTrackStats(p.uid)[p.uid]), Z(this, "handleGetRemoteAudioStats", (p) => this.statsCollector.getRemoteAudioTrackStats(p.uid)[p.uid]), this.store = s, this.statsCollector = c, this.statsCollector.addP2PChannel(this), this.statsUploader = new Rte(this.store), this.bindStatsUploaderEvents(), this.isPlanB = !_i().supportUnifiedPlan || Le("CHROME_FORCE_PLAN_B") && Zy(), this.shouldForwardP2PCreation = Le("FORWARD_P2P_CREATION") && _i().supportPCSetConfiguration && function() { + const p = qO(); + return p === Zo.ANDROID || p === Zo.IOS || p === Zo.HARMONY_OS; + }(), this.shouldForwardP2PCreation && (this.connection = this.store.useDataChannel ? new rs({}, this.store) : this.isPlanB ? new Cs({}, this.store) : new to({}, this.store), this.bindConnectionEvents(this.connection)); + } + startP2PConnection(s, c) { + return ye(this, null, function* () { + var p; + this.state = Ai.New; + const m = this.shouldForwardP2PCreation && ((p = this.connection) === null || p === void 0 ? void 0 : p.peerConnectionState) === "closed"; + if (this.shouldForwardP2PCreation && !m || (m && this.connection && (ie.warning("[".concat(this.store.clientId, "] P2PChannel.startP2PConnection ForwardP2P closed.")), this.connection.close(), this.unbindConnectionEvents(this.connection)), this.connection = this.store.useDataChannel ? new rs(s, this.store) : this.isPlanB ? new Cs(s, this.store) : new to(s, this.store), this.bindConnectionEvents(this.connection)), !this.connection) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot P2PChannel.startConnection before P2PConnection initialization ."); + return this._pcStatsUploadType = Le("NEW_ICE_RESTART") ? op.FIRST_CONNECTION : op.OLD_FIRST_CONNECTION, this._isFirstConnected = !0, this._isInRestartIce = !1, this._isStartRestartIce = !1, this.connection.setConfiguration(s), this.connection.establishPromise; + }); + } + connect(s, c, p, m, T, D) { + return ye(this, null, function* () { + if (!this.connection) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot P2PChannel.connect before P2PChannel.startP2PConnection ."); + this.connection instanceof rs ? this.connection.updateRemoteConnect(m) : (this.store.peerConnectionStart(), yield this.connection.connect(s, c, p, m, T, D), this.statsUploader.startUploadTransportStats(), this.statsUploader.startUploadExtensionUsageStats(), this.state = Ai.Connected); + }); + } + updateRemoteRTPCapabilities(s) { + const c = Array.from(this.localTrackMap.entries()).filter((T) => { + var D; + let [k] = T; + return rr(D = [Mt.LocalVideoLowTrack, Mt.LocalVideoTrack]).call(D, k); + }), p = c.map((T) => { + let [, { id: D }] = T; + return D; + }), m = c.map((T) => { + let [D] = T; + return D; + }); + if (this.connection instanceof to) { + if (vr.updateRemoteRTPCapabilities(this.store.sessionId, { trackTypes: JSON.stringify(m), localCodecs: JSON.stringify(this.connection.localCodecs), remoteCodecs: JSON.stringify(s) }), !rr(s).call(s, this.store.codec)) { + const T = ["vp8", "h264"].find((D) => rr(s).call(s, D)); + T && (this.store.codec = T, ie.debug("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, " updateRemoteRTPCapabilities] default codec is not available, hence the fallback to ").concat(T, "."))); + } + this.connection.updateRemoteRTPCapabilities(p, s); + } + } + preConnect(s, c, p, m, T, D) { + return ye(this, null, function* () { + if (!this.connection) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot P2PChannel.connect before P2PChannel.startP2PConnection ."); + this.store.peerConnectionStart(); + const k = yield this.connection.connect(s, c, p, m, T, D); + return this.statsUploader.startUploadTransportStats(), this.statsUploader.startUploadExtensionUsageStats(), this.state = Ai.Connected, k; + }); + } + getEstablishParams() { + if (this.connection instanceof rs) + return this.connection.getP2PConnectionParams(); + throw new Error("Only DataChannelConnection needs to obtain establishParams"); + } + publishDataChannel(s) { + return ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) { + if (this.state === Ai.Disconnected) + throw new mt(_e.UNEXPECTED_ERROR, "PeerConnection already disconnected."); + return void s.forEach((p) => { + var m; + rr(m = this.pendingLocalDataChannels).call(m, p) || this.pendingLocalDataChannels.push(p); + }); + } + const c = this.filterTobePublishedDataChannels(s); + c.length !== 0 && (c.forEach((p) => { + const m = Date.now(); + this.store.publish(p.id.toString(), "datachannel", m); + }), yield this.connection.createDataChannels(this.store.uid, c), c.forEach((p) => { + this.localDataChannels.push(p); + const m = Date.now(); + this.store.publish(p.id + "", "datachannel", void 0, m); + })); + }); + } + publish(s, c, p) { + var m = this; + return yu(function* () { + const T = yield En(m.mutex.lock("From P2PChannel.publish")); + try { + if (!m.connection || m.state !== Ai.Connected) { + if (m.state === Ai.Disconnected) + throw new mt(_e.UNEXPECTED_ERROR, "PeerConnection already disconnected."); + m.throwIfTrackTypeNotMatch(s); + const k = s.filter((N) => m.pendingLocalTracks.indexOf(N) === -1); + return void (m.pendingLocalTracks = m.pendingLocalTracks.concat(k)); + } + m.store.pubId = m.store.pubId + 1, Ks.markPublishStart(m.store.clientId, m.store.pubId); + const D = m.filterTobePublishedTracks(s, c, p); + if (D.length === 0) + return void (yield En(m.tryToUnmuteAudio(s))); + yield* _A(vk(Kte(m.doPublish(m.connection, D)))); + } finally { + T(); + } + })(); + } + doPublish(s, c) { + var p = this; + return yu(function* () { + c.forEach((K) => { + let { track: q, type: ue } = K; + const oe = Date.now(); + p.store.publish(q.getTrackId(), ue === Mt.LocalAudioTrack ? "audio" : "video", oe); + }), p.bindLocalTrackEvents(c); + const m = c.map((K) => { + let { track: q } = K; + return q; + }), T = yield En(s.send(c.map((K) => { + let { track: q } = K; + return q; + }), p.store.codec, p.store.audioCodec)), D = (yield En(T.next())).value, k = p.createGatewayPublishMessage(c, D); + let N; + try { + N = yield k; + } catch (K) { + throw T.throw(K), (K == null ? void 0 : K.code) === _e.WS_ABORT && c.forEach((q) => { + let { track: ue } = q; + p.pendingLocalTracks.indexOf(ue) === -1 && p.pendingLocalTracks.push(ue); + }), p.unbindLocalTrackEvents(c), K; + } + const U = p.mapPubResToRemoteConfig(k, N), V = (yield En(T.next(U))).value, G = Le("ENABLE_VIDEO_SEI"); + m.forEach((K) => ye(this, null, function* () { + const q = K.getRTCRtpTransceiver(); + q && G && (K.trackMediaType === pr.VIDEO ? yield function(ue, oe) { + return ye(this, null, function* () { + if (!_i().supportWebRTCEncodedTransform) + return void ie.warning("browser not support video encoded transform"); + if (uk.has(ue) || !ue.track) + return; + const he = { track: ue.track }; + if (Jv()) { + if (!ue.createEncodedStreams) + return void ie.warning("browser not support createEncodedStreams() API"); + let ke = null; + try { + ke = ue.createEncodedStreams(); + } catch (Ye) { + return void ie.error("create video-encoded-streams error", Ye && Ye.message); + } + let Ge = []; + oe.on("sei-to-send", (Ye) => { + Ge.push(Ye); + }); + const tt = new TransformStream({ transform(Ye, et) { + he.controller || (he.controller = et), ue.track && ue.track.id !== he.track.id && (ie.debug("video track changed: ".concat(he.track.id, " => ").concat(ue.track.id)), he.track.removeEventListener("ended", Ce), he.track = ue.track, he.track.addEventListener("ended", Ce)); + const ht = Ge.shift(); + ht && (Ye.data = hFe(Ye.data, ht)), et.enqueue(Ye); + } }); + ke.readable.pipeThrough(tt).pipeTo(ke.writable); + } else { + if (!ks()) + return; + { + if (typeof RTCRtpScriptTransform == "undefined") + return void ie.warning("browser not support RTCRtpScriptTransform"); + const ke = sk(), Ge = new MessageChannel(); + yield new ot((Ye) => ke.onmessage = (et) => { + et.data === "registered" && Ye(void 0); + }); + const tt = new RTCRtpScriptTransform(ke, { name: "tx", port: Ge.port2 }, [Ge.port2]); + ue.transform = tt, yield new ot((Ye) => ke.onmessage = (et) => { + et.data === "started" && Ye(void 0); + }), oe.on("sei-to-send", (Ye) => { + Ge.port1.postMessage({ sei: Ye }); + }), Ge.port1.onmessage = (Ye) => { + var et; + Ye.data.transformed && ue.track && ((et = ue.track) === null || et === void 0 ? void 0 : et.id) !== he.track.id && (ie.debug("video track changed: ".concat(he.track.id, " => ").concat(ue.track.id)), he.track.removeEventListener("ended", Ce), he.track = ue.track, he.track.addEventListener("ended", Ce)); + }, he.worker = ke; + } + } + function Ce() { + if (ue.track) { + if (this.id !== ue.track.id) + return; + ue.track.removeEventListener("ended", Ce); + } + const ke = uk.get(ue); + if (ke) { + uk.delete(ue); + try { + var Ge, tt; + (Ge = ke.controller) === null || Ge === void 0 || Ge.terminate(), (tt = ke.worker) === null || tt === void 0 || tt.terminate(); + } catch (Ye) { + ie.warning(Ye && Ye.message); + } + } + } + uk.set(ue, he), ue.track.addEventListener("ended", Ce); + }); + }(q.sender, K) : K.trackMediaType === pr.AUDIO && (yield function(ue) { + return ye(this, null, function* () { + if (!_i().supportWebRTCEncodedTransform) + return void ie.warning("browser not support audio encoded transform"); + if (lk.has(ue) || !ue.track) + return; + const oe = { track: ue.track }; + if (Jv()) { + if (!ue.createEncodedStreams) + return void ie.warning("browser not support createEncodedStreams() API"); + let Ce = null; + try { + Ce = ue.createEncodedStreams(); + } catch (Ge) { + return void ie.error("create audio-encoded-streams error", Ge && Ge.message); + } + const ke = new TransformStream({ transform(Ge, tt) { + oe.controller || (oe.controller = tt), ue.track && ue.track.id !== oe.track.id && (ie.debug("audio track changed: ".concat(oe.track.id, " => ").concat(ue.track.id)), oe.track.removeEventListener("ended", he), oe.track = ue.track, oe.track.addEventListener("ended", he)), tt.enqueue(Ge); + } }); + Ce.readable.pipeThrough(ke).pipeTo(Ce.writable); + } else if (ks()) { + if (typeof RTCRtpScriptTransform == "undefined") + return void ie.warning("browser not support RTCRtpScriptTransform"); + const Ce = sk(), ke = new MessageChannel(); + yield new ot((tt) => Ce.onmessage = (Ye) => { + Ye.data === "registered" && tt(void 0); + }); + const Ge = new RTCRtpScriptTransform(Ce, { name: "tx", port: ke.port2 }, [ke.port2]); + ue.transform = Ge, yield new ot((tt) => Ce.onmessage = (Ye) => { + Ye.data === "started" && tt(void 0); + }), ke.port1.onmessage = (tt) => { + var Ye; + tt.data.transformed && ue.track && ((Ye = ue.track) === null || Ye === void 0 ? void 0 : Ye.id) !== oe.track.id && (ie.debug("audio track changed: ".concat(oe.track.id, " => ").concat(ue.track.id)), oe.track.removeEventListener("ended", he), oe.track = ue.track, oe.track.addEventListener("ended", he)); + }, oe.worker = Ce; + } + function he() { + if (ue.track) { + if (this.id !== ue.track.id) + return; + ue.track.removeEventListener("ended", he); + } + const Ce = lk.get(ue); + if (Ce) { + lk.delete(ue); + try { + var ke, Ge; + (ke = Ce.controller) === null || ke === void 0 || ke.terminate(), (Ge = Ce.worker) === null || Ge === void 0 || Ge.terminate(); + } catch (tt) { + ie.warning(tt && tt.message); + } + } + } + lk.set(ue, oe), ue.track.addEventListener("ended", he); + }); + }(q.sender))); + })), c.forEach((K) => { + let { type: q } = K; + p.statsCollector.addLocalStats(q); + }), p.assignLocalTracks(c, V), p.statsUploader.startUploadOutboundStats(), c.forEach((K) => { + let { track: q, type: ue } = K; + const oe = Date.now(); + p.store.publish(q.getTrackId(), ue === Mt.LocalAudioTrack ? "audio" : "video", void 0, oe); + }); + })(); + } + updateVideoStreamParameter(s, c) { + return ye(this, null, function* () { + const p = this.localTrackMap.get(c); + if (!p) + return; + if (!(p.track instanceof In)) + return ie.warn("[updateVideoStreamParameter]: track is not an instance of LocalVideoTrack"); + if (!(this.connection instanceof to || this.connection instanceof Cs)) + return ie.warn("[updateVideoStreamParameter]: connection is not P2PConnection or P2PConnectionPlanB"); + const { track: m } = p, T = function(D, k) { + const N = {}; + return D.height && D.width && (N.scaleResolutionDownBy = u5(D, k)), N.maxFramerate = D.framerate ? oh(D.framerate) : void 0, N.maxBitrate = D.bitrate ? 1e3 * D.bitrate : void 0, N; + }(s, m); + if (m._encoderConfig || (m._encoderConfig = {}), c !== Mt.LocalVideoLowTrack || !Le("DISABLE_DUAL_STREAM_USE_ENCODING") && _i().supportDualStreamEncoding) + T.scaleResolutionDownBy != null && (m._encoderConfig.scaleResolutionDownBy = T.scaleResolutionDownBy); + else { + const D = m._originMediaStreamTrack; + if (!D.canvas) + return ie.warn("[".concat(m.getTrackId(), "] no canvas on track")); + (function(k, N) { + const U = k.canvas; + N.width && (U.width = oh(N.width)), N.height && (U.height = oh(N.height)), N.framerate && (U.stopCapture && U.stopCapture(), U.stopCapture = x5(() => { + !U.startCapture && U.stopCapture && U.stopCapture(), U.startCapture && U.startCapture(); + }, oh(N.framerate))); + })(D, s); + } + T.maxBitrate != null && (m._encoderConfig.bitrateMax = T.maxBitrate / 1e3), T.maxFramerate != null && (m._encoderConfig.frameRate && typeof m._encoderConfig.frameRate == "object" ? m._encoderConfig.frameRate.max = T.maxFramerate : m._encoderConfig.frameRate = { max: T.maxFramerate }), ie.debug("[".concat(m.getTrackId(), "] LowStreamEncoderConfig: , ").concat(JSON.stringify(m._encoderConfig))), yield this.connection.updateRtpSenderEncodings(m); + }); + } + publishLowStream(s) { + var c = this; + return yu(function* () { + if (!c.connection || c.state !== Ai.Connected) + return; + const p = yield En(c.mutex.lock("Locking from P2PChannel.publishLowStream")); + try { + const T = c.localTrackMap.get(Mt.LocalVideoTrack); + if (!T) + throw new mt(_e.UNEXPECTED_ERROR, "Could not find high stream"); + if (c.localTrackMap.has(Mt.LocalVideoLowTrack)) + throw new mt(_e.UNEXPECTED_ERROR, "[".concat(c.store.clientId, "] Can't publish low stream when stream already publish")); + const D = [{ track: c.getLowVideoTrack(T.track, s), type: Mt.LocalVideoLowTrack }]; + if (yield* _A(vk(Kte(c.doPublish(c.connection, D)))), T.track.muted || !T.track.enabled) { + var m; + const k = (m = c.localTrackMap.get(Mt.LocalVideoLowTrack)) === null || m === void 0 ? void 0 : m.id; + k !== void 0 && (yield En(c.connection.muteLocal([k]))); + } + } finally { + p(); + } + })(); + } + republish() { + return ye(this, null, function* () { + this.pendingLocalTracks.length > 0 && (ie.debug("[".concat(this.store.clientId, "] Emit P2PChannelEvents.RequestRePublish to republish tracks.")), yield Ro(this, Nr.RequestRePublish, this.pendingLocalTracks), this.emit(Nr.MediaReconnectEnd, this.store.uid), this.pendingLocalTracks = []), this.pendingLocalDataChannels.length > 0 && (ie.debug("Emit P2PChannelEvents.RequestRePublishDataChannel to republish datachannels."), yield Ro(this, Nr.RequestRePublishDataChannel, this.pendingLocalDataChannels), this.pendingLocalDataChannels = []); + }); + } + reSubscribe(s) { + return ye(this, null, function* () { + for (let c = this.pendingRemoteTracks.length - 1; c >= 0; c--) { + const { user: p, kind: m } = this.pendingRemoteTracks[c]; + (m !== pr.AUDIO || p._audio_added_ && p._audioSSRC) && (m !== pr.VIDEO || p._video_added_ && p._videoSSRC) || this.pendingRemoteTracks.splice(c, 1); + } + if (s) + yield Ro(this, Nr.RequestReSubscribe, this.pendingRemoteTracks); + else + for (const { user: c, kind: p } of this.pendingRemoteTracks) + yield this.subscribe(c, p, p === pr.VIDEO ? c._videoSSRC : c._audioSSRC); + this.pendingRemoteTracks.forEach((c) => { + let { user: p } = c; + this.emit(Nr.MediaReconnectEnd, p.uid); + }), this.pendingRemoteTracks = []; + }); + } + unpublish(s) { + return ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) + return void s.forEach((m) => { + const T = this.pendingLocalTracks.indexOf(m); + T !== -1 && this.pendingLocalTracks.splice(T, 1); + }); + const c = this.filterTobeUnpublishedTracks(s); + if (c.length === 0) + return; + const p = c.find((m) => m[0] === "videoLowTrack"); + return p && p[1].track.close(), this.doUnpublish(this.connection, c); + }); + } + unpublishDataChannel(s) { + return ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) + return void s.forEach((p) => { + const m = this.pendingLocalDataChannels.indexOf(p); + m !== -1 && this.pendingLocalDataChannels.splice(m, 1); + }); + const c = this.filterTobeUnpublishedDataChannels(s); + return c.length !== 0 ? (c.forEach((p) => { + const m = this.localDataChannels.indexOf(p); + m !== -1 && this.localDataChannels.splice(m, 1); + }), this.localDataChannels.length === 0 && (yield this.connection.stopDataChannels(this.store.uid)), c.map((p) => p.id)) : void 0; + }); + } + unpublishLowStream() { + return ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) + return; + const s = this.localTrackMap.get(Mt.LocalVideoLowTrack); + if (!s) + return; + s.track.close(); + const c = [[Mt.LocalVideoLowTrack, s]]; + return this.doUnpublish(this.connection, c); + }); + } + doUnpublish(s, c) { + return ye(this, null, function* () { + const p = this.createGatewayUnpublishMessage(c); + return yield s.stopSending(c.map((m) => { + let [, { id: T }] = m; + return T; + })), this.withdrawLocalTracks(c), this.unbindLocalTrackEvents(c.map((m) => { + let [T, { track: D }] = m; + return { type: T, track: D }; + })), c.forEach((m) => { + let [T] = m; + this.statsCollector.removeLocalStats(T); + }), this.localTrackMap.size === 0 && this.statsUploader.stopUploadOutboundStats(), p; + }); + } + subscribeDataChannel(s, c) { + return ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) + throw new mt(_e.INVALID_OPERATION, "Cannot subscribe remote user when peerConnection disconnected."); + const p = c.filter((m) => { + var T; + return !((T = this.remoteDataChannelMap.get(s)) !== null && T !== void 0 && T.get(m.id)); + }); + if (p.length !== 0) + return yield this.connection.createDataChannels(s.uid, p), p.forEach((m) => { + var T; + this.remoteDataChannelMap.has(s) ? (T = this.remoteDataChannelMap.get(s)) === null || T === void 0 || T.set(m.id, m) : this.remoteDataChannelMap.set(s, /* @__PURE__ */ new Map([[m.id, m]])); + const D = this.pendingRemoteDataChannels.findIndex((k) => { + let { user: N, id: U } = k; + return N.uid === s.uid && U === m.id; + }); + D !== -1 && this.pendingRemoteDataChannels.splice(D, 1); + }), p.map((m) => m.id); + }); + } + subscribe(s, c, p, m, T) { + return ye(this, null, function* () { + var D; + if (!this.connection || this.state !== Ai.Connected) + throw new mt(_e.INVALID_OPERATION, "Cannot subscribe remote user when peerConnection disconnected."); + if ((D = this.remoteUserMap.get(s)) !== null && D !== void 0 && D.has(c)) + return; + let k, N, U; + if (T) { + const K = T.find((ue) => { + let { stream_type: oe } = ue; + return oe === c; + }); + if (!K) + throw new mt(_e.UNEXPECTED_ERROR, "Cannot subscribe to remote ".concat(c, " for user: ").concat(s.uid, " because subscribe answer from gateway does not contain stream_type: ").concat(c, ".")); + const q = yield this.connection.receive(c, K.ssrcs, String(s._uintid), K.attributes); + this.connection instanceof to && (U = q.transceiver), k = q.track, N = q.id; + } else { + const K = yield this.connection.receive(c, [{ ssrcId: p, rtx: m }], String(s._uintid), void 0); + this.connection instanceof to && (U = K.transceiver), k = K.track, N = K.id; + } + c === pr.AUDIO ? (s._audioTrack ? s._audioTrack._updateOriginMediaStreamTrack(k) : (s._audioTrack = new jd(k, s.uid, s._uintid, this.store), ie.info("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, "] create remote audio track: ").concat(s._audioTrack.getTrackId()))), U && s._audioTrack._updateRtpTransceiver(U), this.bindRemoteTrackEvents(s, s._audioTrack)) : (s._videoTrack ? s._videoTrack._updateOriginMediaStreamTrack(k) : (s._videoTrack = new Cg(k, s.uid, s._uintid, this.store), ie.info("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, "] create remote video track: ").concat(s._videoTrack.getTrackId()))), U && s._videoTrack._updateRtpTransceiver(U), this.bindRemoteTrackEvents(s, s._videoTrack)), Le("ENABLE_VIDEO_SEI") && U && (c == pr.VIDEO ? yield dFe(U.receiver, { onSei: (K) => { + var q; + (q = s._videoTrack) === null || q === void 0 || q._onSei(K); + } }) : c == pr.AUDIO && (yield cFe(U.receiver))); + const V = this.remoteUserMap.get(s); + V ? V.set(c, N) : this.remoteUserMap.set(s, /* @__PURE__ */ new Map([[c, N]])), this.statsCollector.addRemoteStats(s.uid), this.statsUploader.startUploadInboundStats(); + const G = this.pendingRemoteTracks.findIndex((K) => { + let { user: q, kind: ue } = K; + return q.uid === s.uid && c === ue; + }); + G !== -1 && (this.pendingRemoteTracks.splice(G, 1), this.emit(Nr.MediaReconnectEnd, s.uid)); + }); + } + massSubscribe(s) { + return ye(this, null, function* () { + return this.massSubscribeNoLock(s); + }); + } + massSubscribeNoLock(s) { + return ye(this, null, function* () { + if (!this.connection || this.state !== Ai.Connected) + throw new mt(_e.INVALID_OPERATION, "Cannot subscribeAll remote users when peerConnection disconnected."); + s = s.filter((p) => { + var m; + let { user: T, mediaType: D } = p; + return !((m = this.remoteUserMap.get(T)) !== null && m !== void 0 && m.has(D)); + }); + const c = yield this.connection.batchReceive(s.map((p) => { + let { user: m, mediaType: T, ssrcId: D, rtxSsrcId: k } = p; + return { kind: T, ssrcMsg: [{ ssrcId: D, rtx: k }], mslabel: String(m._uintid) }; + })); + s.forEach((p, m) => { + let { user: T, mediaType: D } = p; + const { track: k, id: N, transceiver: U } = c[m]; + D === pr.AUDIO ? (T._audioTrack ? T._audioTrack._updateOriginMediaStreamTrack(k) : (T._audioTrack = new jd(k, T.uid, T._uintid, this.store), ie.info("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, "] create remote audio track: ").concat(T._audioTrack.getTrackId()))), U && T._audioTrack._updateRtpTransceiver(U), this.bindRemoteTrackEvents(T, T._audioTrack)) : (T._videoTrack ? T._videoTrack._updateOriginMediaStreamTrack(k) : (T._videoTrack = new Cg(k, T.uid, T._uintid, this.store), ie.info("[".concat(this.store.clientId, "] [").concat(this.store.p2pId, "] create remote video track: ").concat(T._videoTrack.getTrackId()))), U && T._videoTrack._updateRtpTransceiver(U), this.bindRemoteTrackEvents(T, T._videoTrack)); + const V = this.remoteUserMap.get(T); + V ? V.set(D, N) : this.remoteUserMap.set(T, /* @__PURE__ */ new Map([[D, N]])), this.statsCollector.addRemoteStats(T.uid), this.statsUploader.startUploadInboundStats(); + const G = this.pendingRemoteTracks.findIndex((K) => { + let { user: q, kind: ue } = K; + return q.uid === T.uid && D === ue; + }); + G !== -1 && (this.pendingRemoteTracks.splice(G, 1), this.emit(Nr.MediaReconnectEnd, T.uid)); + }); + }); + } + unsubscribe(s, c, p) { + return ye(this, null, function* () { + const m = this.pendingRemoteTracks.filter((k) => { + let { user: N, kind: U } = k; + return c !== void 0 ? N.uid === s.uid && c === U : N.uid === s.uid; + }); + if (m.forEach((k) => { + const N = this.pendingRemoteTracks.indexOf(k); + this.pendingRemoteTracks.splice(N, 1); + }), this.connection && this.state === Ai.Connected || p || m.forEach((k) => { + let { kind: N } = k; + var U; + if (N === pr.AUDIO) + (U = s._audioTrack) === null || U === void 0 || U._destroy(), s._audioTrack = void 0; + else if (N === pr.VIDEO) { + var V; + (V = s._videoTrack) === null || V === void 0 || V._destroy(), s._videoTrack = void 0; + } + }), !this.connection || this.state !== Ai.Connected) + return; + const T = this.filterTobeUnSubscribedTracks(s, c); + if (T.length === 0) + return; + yield this.connection.stopReceiving(T.map((k) => { + let [, { id: N }] = k; + return N; + })); + const D = this.createUnsubscribeMessage(T); + return this.withdrawRemoteTracks(T), this.remoteUserMap.size === 0 && this.statsUploader.stopUploadInboundStats(), T.forEach((k) => { + let [N, { kind: U }] = k; + var V, G; + if (U === pr.VIDEO && N._videoSSRC && ((V = this.connection) === null || V === void 0 || V.setStatsRemoteVideoIsReady(N._videoSSRC, !1)), U === pr.VIDEO) + this.unbindRemoteTrackEvents(N._videoTrack), p || ((G = N._videoTrack) === null || G === void 0 || G._destroy(), N._videoTrack = void 0); + else if (U === pr.AUDIO) { + var K; + this.unbindRemoteTrackEvents(N._audioTrack), !p && ((K = N._audioTrack) === null || K === void 0 || K._destroy(), N._audioTrack = void 0); + } + }), D; + }); + } + unsubscribeDataChannel(s, c) { + return ye(this, null, function* () { + if (c.forEach((T) => { + const D = this.pendingRemoteDataChannels.findIndex((k) => k.id === T.id); + D !== -1 && this.pendingRemoteDataChannels.splice(D, 1); + }), !this.connection) + return; + const p = this.filterTobeUnSubscribedDataChannels(s, c); + if (p.length === 0) + return; + c.forEach((T) => { + T._close(); + }); + const m = this.remoteDataChannelMap.get(s); + return p.forEach((T) => { + m && m.delete(T.id); + }), m && m.size === 0 && (this.remoteDataChannelMap.delete(s), yield this.connection.stopDataChannels(s.uid)), p.map((T) => T.id); + }); + } + massUnsubscribe(s) { + return ye(this, null, function* () { + return this.massUnsubscribeNoLock(s); + }); + } + massUnsubscribeNoLock(s) { + return ye(this, null, function* () { + let c = []; + for (const { user: T, mediaType: D } of s) { + const k = this.pendingRemoteTracks.filter((N) => { + let { user: U, kind: V } = N; + return D !== void 0 ? U.uid === T.uid && D === V : U.uid === T.uid; + }); + k.forEach((N) => { + const U = this.pendingRemoteTracks.indexOf(N); + this.pendingRemoteTracks.splice(U, 1); + }), c = c.concat(k); + } + if (!this.connection || this.state !== Ai.Connected) + return void c.forEach((T) => { + let { user: D, kind: k } = T; + var N; + if (k === pr.AUDIO) + (N = D._audioTrack) === null || N === void 0 || N._destroy(), D._audioTrack = void 0; + else if (k === pr.VIDEO) { + var U; + (U = D._videoTrack) === null || U === void 0 || U._destroy(), D._videoTrack = void 0; + } + }); + const p = rm(s).call(s, (T, D) => { + let { user: k, mediaType: N } = D; + const U = this.filterTobeUnSubscribedTracks(k, N); + return T.concat(U); + }, []); + if (p.length === 0) + return; + yield this.connection.stopReceiving(p.map((T) => { + let [, { id: D }] = T; + return D; + })); + const m = this.createUnsubscribeAllMessage(p); + return this.withdrawRemoteTracks(p), this.remoteUserMap.size === 0 && this.statsUploader.stopUploadInboundStats(), p.forEach((T) => { + let [D, { kind: k }] = T; + var N, U; + if (k === pr.VIDEO && D._videoSSRC && ((N = this.connection) === null || N === void 0 || N.setStatsRemoteVideoIsReady(D._videoSSRC, !1)), k === pr.VIDEO) + this.unbindRemoteTrackEvents(D._videoTrack), (U = D._videoTrack) === null || U === void 0 || U._destroy(), D._videoTrack = void 0; + else if (k === pr.AUDIO) { + var V; + this.unbindRemoteTrackEvents(D._audioTrack), (V = D._audioTrack) === null || V === void 0 || V._destroy(), D._audioTrack = void 0; + } + }), m; + }); + } + muteRemote(s, c) { + return ye(this, null, function* () { + if (!this.connection) + return; + const p = this.remoteUserMap.get(s); + if (!p) + return void ie.warning("[".concat(this.store.clientId, "] P2PChannel.muteRemote has no remote user ").concat(s.uid, ".")); + if (!p.get(c)) + return void ie.warning("[".concat(this.store.clientId, "] P2PChannel.muteRemote has no remote user ").concat(s.uid, " media type ").concat(c, ".")); + const m = c === pr.VIDEO ? s._videoSSRC : s._audioSSRC; + m !== void 0 && this.connection.setStatsRemoteVideoIsReady(m, !1); + }); + } + unmuteRemote(s, c) { + return ye(this, null, function* () { + return this.unmuteRemoteNoLock(s, c); + }); + } + unmuteRemoteNoLock(s, c) { + return ye(this, null, function* () { + if (!this.connection) + return; + const p = this.remoteUserMap.get(s); + if (!p) + return void ie.warning("[".concat(this.store.clientId, "] P2PChannel.unmuteRemote has no remote user ").concat(s.uid, ".")); + p.get(c) || ie.warning("[".concat(this.store.clientId, "] P2PChannel.unmuteRemote has no remote user ").concat(s.uid, " media type ").concat(c, ".")); + }); + } + getAllTracks(s) { + const c = this.localTrackMap.get(Mt.LocalAudioTrack); + if ((c == null ? void 0 : c.track) instanceof Uo) { + const p = c.track; + return Array.from(this.localTrackMap.entries()).filter((m) => { + let [T] = m; + return T !== Mt.LocalAudioTrack; + }).filter((m) => { + let [T] = m; + return !(s && T === Mt.LocalVideoLowTrack); + }).map((m) => { + let [, { track: T }] = m; + return T; + }).concat(p.trackList); + } + return Array.from(this.localTrackMap.entries()).filter((p) => { + let [m] = p; + return !(s && m === Mt.LocalVideoLowTrack); + }).map((p) => { + let [, { track: m }] = p; + return m; + }); + } + getAllDataChannels() { + return this.localDataChannels; + } + reportPublishEvent(s, c, p, m, T) { + if (s) { + const k = this.localTrackMap.get(Mt.LocalAudioTrack), N = m ? this.localTrackMap.get(Mt.LocalVideoLowTrack) : this.localTrackMap.get(Mt.LocalVideoTrack); + vr.publish(this.store.sessionId, { eventElapse: Ks.measureFromPublishStart(this.store.clientId, this.store.pubId), succ: s, ec: c, audioName: k == null ? void 0 : k.track.getTrackLabel(), videoName: N == null ? void 0 : N.track.getTrackLabel(), screenshare: (N == null ? void 0 : N.track._hints.indexOf(ua.SCREEN_TRACK)) !== -1, audio: !!k, video: !!N, p2pid: this.store.p2pId, publishRequestid: this.store.pubId, extend: T }); + } else { + var D; + p || (p = []); + const k = p.find((U) => U instanceof Vi), N = m ? (D = this.localTrackMap.get(Mt.LocalVideoTrack)) === null || D === void 0 ? void 0 : D.track : p.find((U) => U instanceof In); + vr.publish(this.store.sessionId, { eventElapse: Ks.measureFromPublishStart(this.store.clientId, this.store.pubId), succ: s, ec: c, audioName: k == null ? void 0 : k.getTrackLabel(), videoName: N == null ? void 0 : N.getTrackLabel(), screenshare: (N == null ? void 0 : N._hints.indexOf(ua.SCREEN_TRACK)) !== -1, audio: !!k, video: !!N, p2pid: this.store.p2pId, publishRequestid: this.store.pubId, extend: T }); + } + } + reportSubscribeEvent(s, c, p, m) { + const T = m === pr.VIDEO ? p._videoSSRC : p._audioSSRC; + T && vr.subscribe(this.store.sessionId, { succ: s, ec: c, video: m === pr.VIDEO, audio: m === pr.AUDIO, peerid: p.uid, subscribeRequestid: m === pr.VIDEO ? p._videoSSRC : p._audioSSRC, p2pid: this.store.p2pId, eventElapse: Ks.measureFromSubscribeStart(this.store.clientId, T) }); + } + reset() { + ie.debug("[".concat(this.store.clientId, "] P2PChannel.reset")), this.mutex = new Ss("P2PChannel-mutex"), this.connection && (this.connection.close(), this.unbindConnectionEvents(this.connection), this.connection = void 0), this.shouldForwardP2PCreation && (this.connection = this.store.useDataChannel ? new rs({}, this.store) : this.isPlanB ? new Cs({}, this.store) : new to({}, this.store), this.bindConnectionEvents(this.connection)), this.statsUploader.stopUploadOutboundStats(), this.statsUploader.stopUploadInboundStats(), this.statsUploader.stopUploadTransportStats(), this.statsUploader.stopUploadExtensionUsageStats(), this.unbindLocalTrackEvents(), this.unbindAllRemoteTrackEvents(), this.unbindRtpTransceiver(); + const s = this.localTrackMap.get(Mt.LocalAudioTrack); + if ((s == null ? void 0 : s.track) instanceof Uo) { + if (s.track.trackList.length > 0) { + const c = s.track; + s.track.trackList.forEach((p) => { + c.removeAudioTrack(p); + }); + } + s.track.close(); + } + this.localTrackMap.clear(), this.remoteUserMap.clear(), this.statsCollector.removeRemoteStats(), this.statsCollector.removeLocalStats(), this.iceFailedCount = 0, this.dtlsFailedCount = 0, this.pendingLocalTracks = [], this.pendingRemoteTracks = [], this.localDataChannels = [], this.remoteDataChannelMap.clear(), this.pendingLocalDataChannels = [], this.pendingRemoteDataChannels = [], this.state = Ai.Disconnected; + } + getStats() { + var s; + return (s = this.connection) === null || s === void 0 ? void 0 : s.getStats(); + } + getRemoteVideoIsReady(s) { + var c; + return ((c = this.connection) === null || c === void 0 ? void 0 : c.getRemoteVideoIsReady(s)) || !1; + } + getLocalAudioVolume() { + const s = this.localTrackMap.get(Mt.LocalAudioTrack); + if (s) + return s.track.getVolumeLevel(); + } + getLocalVideoSize() { + const s = this.localTrackMap.get(Mt.LocalVideoTrack); + if (s) + return { width: s.track._videoWidth || 0, height: s.track._videoHeight || 0 }; + } + getEncoderConfig(s) { + const c = this.localTrackMap.get(s); + return c && c.track instanceof In || c && c.track instanceof Vi ? c.track._encoderConfig : void 0; + } + getLocalMedia(s) { + return this.localTrackMap.get(s); + } + hasLocalMedia() { + return this.localTrackMap.size > 0; + } + hasRemoteMedia(s, c) { + if (!s) + return this.remoteUserMap.size > 0; + const p = this.remoteUserMap.get(s); + return !!p && (!c || p.has(c)); + } + hasRemoteMediaWithLock(s, c) { + return ye(this, null, function* () { + if (!s) + return this.remoteUserMap.size > 0; + const p = this.remoteUserMap.get(s); + return !!p && (!c || p.has(c)); + }); + } + getRemoteMedia(s) { + var c; + const p = Array.from(rh(c = this.remoteUserMap).call(c)).find((m) => m.uid === s); + return p ? { audioTrack: p.audioTrack, audioSSRC: p._audioSSRC, videoTrack: p.videoTrack, videoSSRC: p._videoSSRC } : {}; + } + getAudioLevels() { + let s = Array.from(this.remoteUserMap.entries()).map((p) => { + let [m] = p; + return { uid: m.uid, level: m.audioTrack ? 100 * m.audioTrack._source.getAccurateVolumeLevel() : 0 }; + }); + const c = this.localTrackMap.get(Mt.LocalAudioTrack); + return c && s.push({ level: 100 * c.track._source.getAccurateVolumeLevel(), uid: this.store.uid }), s = dx(s).call(s, (p, m) => p.level - m.level), s; + } + disconnectForReconnect() { + return ye(this, null, function* () { + this.connection && (ie.debug("[".concat(this.store.clientId, "] P2PChannel.disconnectForReconnect closing P2PConnection")), this.state = Ai.Reconnecting, Le("KEEP_LAST_FRAME") && this.remoteUserMap.size !== 0 && Array.from(this.remoteUserMap.entries()).forEach((s) => { + let [c] = s; + var p; + c._videoTrack && c._videoTrack._player && ((p = c._videoTrack._player.getVideoElement()) === null || p === void 0 || p.pause(), c._videoTrack._player.isKeepLastFrame = !0, c._videoTrack._originMediaStreamTrack.stop()); + }), this.connection.close(), this.unbindConnectionEvents(this.connection), this.connection = void 0, this.shouldForwardP2PCreation && (this.connection = this.store.useDataChannel ? new rs({}, this.store) : this.isPlanB ? new Cs({}, this.store) : new to({}, this.store), this.bindConnectionEvents(this.connection)), this.localTrackMap.size !== 0 && (Array.from(this.localTrackMap.entries()).forEach((s) => { + var c; + let [p, { track: m }] = s; + switch (p) { + case Mt.LocalVideoTrack: + rr(c = m._hints).call(c, ua.LOW_STREAM) ? m.close() : this.pendingLocalTracks.push(m); + break; + case Mt.LocalAudioTrack: + m instanceof Uo ? this.pendingLocalTracks = this.pendingLocalTracks.concat(m.trackList) : this.pendingLocalTracks.push(m); + case Mt.LocalVideoLowTrack: + } + }), this.emit(Nr.MediaReconnectStart, this.store.uid)), this.unbindLocalTrackEvents(), this.localTrackMap.clear(), this.remoteUserMap.size !== 0 && Array.from(this.remoteUserMap.entries()).forEach((s) => { + let [c, p] = s; + Array.from(rh(p).call(p)).forEach((m) => { + this.setPendingRemoteMedia(c, m); + }), this.emit(Nr.MediaReconnectStart, c.uid); + }), this.unbindAllRemoteTrackEvents(), this.remoteUserMap.clear(), this.localDataChannels.length !== 0 && (this.localDataChannels.forEach((s) => { + this.pendingLocalDataChannels.push(s); + }), this.localDataChannels.length = 0), this.remoteDataChannelMap.size !== 0 && (Array.from(this.remoteDataChannelMap.entries()).forEach((s) => { + let [c, p] = s; + Array.from(rh(p).call(p)).forEach((m) => { + this.setPendingRemoteDataChannel(c, m); + }); + }), this.remoteDataChannelMap.clear()), this.statsUploader.stopUploadOutboundStats(), this.statsUploader.stopUploadInboundStats(), this.statsUploader.stopUploadTransportStats(), ie.debug("[".concat(this.store.clientId, "] P2PChannel disconnected, waiting to reconnect."))); + }); + } + hasPendingRemoteDataChannel(s, c) { + for (const p of this.pendingRemoteDataChannels) { + const { user: m, id: T } = p; + if ((s instanceof Ns ? s.uid : s) === m.uid && T === c) + return !0; + } + return !1; + } + setPendingRemoteDataChannel(s, c) { + this.hasPendingRemoteDataChannel(s, c) || this.pendingRemoteDataChannels.push({ user: s, id: c }); + } + hasPendingRemoteMedia(s, c) { + for (const p of this.pendingRemoteTracks) { + const { user: m, kind: T } = p; + if ((s instanceof Ns ? s.uid : s) === m.uid && c === T) + return !0; + } + return !1; + } + setPendingRemoteMedia(s, c) { + this.hasPendingRemoteMedia(s, c) || this.pendingRemoteTracks.push({ user: s, kind: c }); + } + restartICE(s) { + var c = this; + return yu(function* () { + if (!c.connection || c.state !== Ai.Connected || c.connection instanceof rs) + return; + const p = yield En(c.mutex.lock("From P2PChannel.restartICE")); + let m; + try { + m = yield En(c.connection.restartICE(s)); + const D = yield En(m.next()); + if (D.done) + return; + const k = D.value, N = yield k; + switch (c.reportPCDisconnectedOrFailed(s), s) { + case Ys.TCP: + c._pcStatsUploadType = op.TCP_RESTART; + break; + case Ys.RELAY: + c._pcStatsUploadType = op.RELAY_RESTART; + break; + default: + c._pcStatsUploadType = op.OLD_RESTART; + } + c._isInRestartIce = !0, m.next(N); + } catch (D) { + var T; + (T = m) === null || T === void 0 || T.throw(D); + } finally { + p(); + } + })(); + } + getUplinkNetworkQuality() { + if (!this.connection) + return 0; + const s = this.connection.getStats(), c = this.localTrackMap.get(Mt.LocalVideoTrack), p = this.localTrackMap.get(Mt.LocalAudioTrack), m = s.videoSend.find((ue) => ue.ssrc === (c == null ? void 0 : c.ssrcs[0].ssrcId)), T = s.audioSend.find((ue) => ue.ssrc === (p == null ? void 0 : p.ssrcs[0].ssrcId)); + if (!m || !T) + return 1; + const D = pu(this, Nr.NeedSignalRTT), k = m ? m.rttMs : void 0, N = T ? T.rttMs : void 0, U = k && N ? (k + N) / 2 : k || N, V = (U && D ? (U + D) / 2 : U || D) || 0, G = 100 * s.sendPacketLossRate * 0.7 / 50 + 0.3 * V / 1500, K = G < 0.17 ? 1 : G < 0.36 ? 2 : G < 0.59 ? 3 : G < 0.1 ? 4 : 5, q = c == null ? void 0 : c.track; + if (q && q._encoderConfig && q._hints.indexOf(ua.SCREEN_TRACK) === -1) { + const ue = q._encoderConfig.bitrateMax, oe = s.bitrate.actualEncoded; + if (ue && oe) { + const he = (1e3 * ue - oe) / (1e3 * ue); + return Zq[he < 0.15 ? 0 : he < 0.3 ? 1 : he < 0.45 ? 2 : he < 0.6 ? 3 : 4][K]; + } + } + return K; + } + getDownlinkNetworkQuality() { + if (!this.connection) + return 0; + const s = this.connection.getStats(); + let c = 0; + return Array.from(this.remoteUserMap.entries()).forEach((p) => { + let [m] = p; + const T = m._audioSSRC, D = m._videoSSRC, k = s.audioRecv.find((oe) => oe.ssrc === T), N = s.videoRecv.find((oe) => oe.ssrc === D); + if (!k && !N) + return void (c += 1); + const U = pu(this, Nr.NeedSignalRTT), V = s.rtt, G = (V && U ? (V + U) / 2 : V || U) || 0, K = k ? k.jitterMs : void 0, q = s.recvPacketLossRate; + let ue = 0.7 * q * 100 / 50 + 0.3 * G / 1500; + K && (ue = 0.6 * q * 100 / 50 + 0.2 * G / 1500 + 0.2 * K / 400), c += ue < 0.1 ? 1 : ue < 0.17 ? 2 : ue < 0.36 ? 3 : ue < 0.59 ? 4 : 5; + }), this.remoteUserMap.size > 0 ? Math.round(c / this.remoteUserMap.size) : c; + } + muteLocalTrack(s) { + return ye(this, null, function* () { + return new ot((c, p) => { + this.handleMuteLocalTrack(s, c, p); + }); + }); + } + replaceTrack(s, c) { + return ye(this, null, function* () { + var p; + if (ie.debug("[".concat(this.store.clientId, "] P2PChannel replaceTrack from [").concat(s.getTrackId(), "] to [").concat(c.getTrackId(), "]")), !this.connection || this.state !== Ai.Connected) + return; + const m = Array.from(this.localTrackMap.entries()).find((D) => { + let [, { track: k }] = D; + return s === k; + }); + if (!m) + return; + const T = m[0]; + if (s !== c && (this.unbindLocalTrackEvents([{ track: s, type: T }]), this.bindLocalTrackEvents([{ track: c, type: T }]), m[1].track = c), yield (p = this.connection) === null || p === void 0 ? void 0 : p.replaceTrack(c, m[1].id), this.isPlanB) { + const D = m[1]; + D.id = c._mediaStreamTrack.id, this.localTrackMap.set(T, D); + } + if (T === Mt.LocalVideoTrack && !Le("DISABLE_DUAL_STREAM_USE_ENCODING") && _i().supportDualStreamEncoding) { + const D = this.localTrackMap.get(Mt.LocalVideoLowTrack); + if (D) { + const k = s._mediaStreamTrack.clone(); + D.track._originMediaStreamTrack.stop(), D.track._mediaStreamTrack = k, D.track._originMediaStreamTrack = k, yield new ot((N, U) => { + this.handleReplaceTrack(D.track, N, U, !0); + }); + } + } + }); + } + filterTobePublishedTracks(s, c, p) { + const m = [], T = this.getAllTracks(); + s = MC(s = s.filter((U) => T.indexOf(U) === -1)); + let D, k = !1; + const N = this.localTrackMap.get(Mt.LocalAudioTrack); + for (const U of s) { + if (U instanceof In && (this.localTrackMap.has(Mt.LocalVideoTrack) || k ? new mt(_e.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS).throw() : (m.push({ track: U, type: Mt.LocalVideoTrack }), k = !0), c)) { + const V = this.getLowVideoTrack(U, p); + m.push({ track: V, type: Mt.LocalVideoLowTrack }); + } + if (U instanceof Vi) + if (N) { + const V = N.track; + if (V instanceof Uo) + Y$([U]), V.addAudioTrack(U), this.bindLocalAudioTrackEvents(U, !0); + else { + const G = X$([V, U]); + ie.debug("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection will replace audioTrack [").concat(G.getTrackId(), "]")), this.replaceTrack(V, G); + } + } else + D instanceof Uo ? (Y$([U]), D.addAudioTrack(U)) : D || !U._useAudioElement && _i().webAudioMediaStreamDest && !U._bypassWebAudio ? D = X$(D ? [U, D] : [U]) : D = U; + } + return D && (ie.debug("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection will send audioTrack [").concat(D.getTrackId(), "]")), m.push({ track: D, type: Mt.LocalAudioTrack })), m; + } + filterTobeUnpublishedTracks(s) { + const c = [], p = this.getAllTracks(); + s = MC(s = s.filter((m) => p.indexOf(m) !== -1)); + for (const m of s) { + if (m instanceof Vi) { + const T = this.localTrackMap.get(Mt.LocalAudioTrack); + if (!T) + continue; + T.track instanceof Uo ? (T.track.removeAudioTrack(m), this.unbindLocalAudioTrackEvents(m), T.track.trackList.length === 0 && (c.push([Mt.LocalAudioTrack, T]), T.track.close())) : c.push([Mt.LocalAudioTrack, T]); + } + if (m instanceof In) { + const T = this.localTrackMap.get(Mt.LocalVideoTrack); + if (!T) + continue; + c.push([Mt.LocalVideoTrack, T]); + const D = this.localTrackMap.get(Mt.LocalVideoLowTrack); + D && c.push([Mt.LocalVideoLowTrack, D]); + } + } + return c; + } + filterTobePublishedDataChannels(s) { + return s = (s = MC(s)).filter((c) => this.localDataChannels.findIndex((p) => p.id === c.id) === -1); + } + filterTobeUnpublishedDataChannels(s) { + return s = (s = (s = MC(s)).filter((c) => this.localDataChannels.indexOf(c) !== -1)).filter((c) => c._originDataChannel); + } + bindLocalTrackEvents(s) { + s.forEach((c) => { + let { track: p, type: m } = c; + switch (m) { + case Mt.LocalVideoTrack: + p.addListener(lr.GET_STATS, this.handleGetLocalVideoStats), p.addListener(lr.GET_RTC_STATS, this.handleGetRTCStats), p.addListener(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), p.addListener(lr.NEED_UPDATE_VIDEO_ENCODER, this.handleUpdateVideoEncoder), p.addListener(lr.SET_OPTIMIZATION_MODE, this.handleSetOptimizationMode), p.addListener(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), p.addListener(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + break; + case Mt.LocalAudioTrack: + this.bindLocalAudioTrackEvents(p); + case Mt.LocalVideoLowTrack: + } + }); + } + bindLocalAudioTrackEvents(s, c) { + s instanceof Uo ? s.trackList.forEach((p) => { + p.addListener(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), p.addListener(lr.GET_STATS, this.handleGetLocalAudioStats), p.addListener(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), p.addListener(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + }) : (s.addListener(lr.GET_STATS, this.handleGetLocalAudioStats), s.addListener(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), s.addListener(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), s.addListener(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), s.addListener(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack), c || (s.addListener(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), s.addListener(lr.NEED_REPLACE_MIXING_TRACK, this.handleReplaceMixingTrack))); + } + unbindLocalTrackEvents(s) { + s || (s = Array.from(this.localTrackMap.entries()).map((c) => { + let [p, { track: m }] = c; + return { track: m, type: p }; + })), s.forEach((c) => { + let { track: p, type: m } = c; + switch (m) { + case Mt.LocalVideoTrack: + p.off(lr.GET_STATS, this.handleGetLocalVideoStats), p.off(lr.GET_RTC_STATS, this.handleGetRTCStats), p.off(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), p.off(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), p.off(lr.NEED_UPDATE_VIDEO_ENCODER, this.handleUpdateVideoEncoder), p.off(lr.SET_OPTIMIZATION_MODE, this.handleSetOptimizationMode), p.off(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), p.off(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), p.off(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + break; + case Mt.LocalAudioTrack: + this.unbindLocalAudioTrackEvents(p); + case Mt.LocalVideoLowTrack: + } + }); + } + unbindLocalAudioTrackEvents(s) { + s instanceof Uo ? s.trackList.forEach((c) => { + c.off(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), c.off(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), c.off(lr.GET_STATS, this.handleGetLocalAudioStats), c.off(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), c.off(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack); + }) : (s.off(lr.GET_STATS, this.handleGetLocalAudioStats), s.off(lr.NEED_DISABLE_TRACK, this.handleMuteLocalTrack), s.off(lr.NEED_ENABLE_TRACK, this.handleUnmuteLocalTrack), s.off(lr.NEED_REPLACE_TRACK, this.handleReplaceTrack), s.off(lr.NEED_REPLACE_MIXING_TRACK, this.handleReplaceMixingTrack), s.off(lr.NEED_MUTE_TRACK, this.handleMuteLocalTrack), s.off(lr.NEED_UNMUTE_TRACK, this.handleUnmuteLocalTrack)); + } + bindRemoteTrackEvents(s, c) { + c instanceof Cg && c.addListener(lr.GET_STATS, (p) => { + p(this.handleGetRemoteVideoStats(s)); + }), c instanceof jd && c.addListener(lr.GET_STATS, (p) => { + p(this.handleGetRemoteAudioStats(s)); + }); + } + unbindRemoteTrackEvents(s) { + s && s.removeAllListeners(lr.GET_STATS); + } + unbindAllRemoteTrackEvents() { + Array.from(this.remoteUserMap.entries()).forEach((s) => { + let [c, p] = s; + p.has(pr.AUDIO) && this.unbindRemoteTrackEvents(c._audioTrack), p.has(pr.VIDEO) && this.unbindRemoteTrackEvents(c._videoTrack); + }); + } + createGatewayPublishMessage(s, c) { + return s.map((p, m) => { + var T; + let D, k, { track: N, type: U } = p; + switch (U) { + case Mt.LocalAudioTrack: + D = Ci.Audio, k = { dtx: N instanceof cm && N._config.DTX, hq: !1, lq: !1, stereo: !1, speech: !1 }; + break; + case Mt.LocalVideoTrack: + D = rr(T = N._hints).call(T, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High, k = C_(C_({}, mJ(N)), {}, { codec: this.store.codec }); + break; + case Mt.LocalVideoLowTrack: + D = Ci.Low, k = C_(C_({}, mJ(N)), {}, { codec: this.store.codec }); + } + return { stream_type: D, attributes: k, ssrcs: c[m] }; + }); + } + createGatewayUnpublishMessage(s) { + return s.map((c) => { + var p; + let m, [T, { track: D, ssrcs: k, id: N }] = c; + switch (T) { + case Mt.LocalVideoTrack: + m = rr(p = D._hints).call(p, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalAudioTrack: + m = Ci.Audio; + break; + case Mt.LocalVideoLowTrack: + m = Ci.Low; + } + return { stream_type: m, ssrcs: k, mid: N }; + }); + } + assignLocalTracks(s, c) { + s.forEach((p, m) => { + let { track: T, type: D } = p; + this.localTrackMap.set(D, { track: T, id: c[m].id, ssrcs: c[m].localSSRC }); + }); + } + withdrawLocalTracks(s) { + s.forEach((c) => { + let [p] = c; + this.localTrackMap.delete(p); + }); + } + bindConnectionEvents(s) { + s.onConnectionStateChange = (c) => ye(this, null, function* () { + if (ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onConnectionStateChange(").concat(c, ")")), this.emit(Nr.PeerConnectionStateChange, c), c !== "connected" || this.store.keyMetrics.peerConnectionEnd || this.store.peerConnectionEnd(), c === "connected" && (this._restartTimer && (clearTimeout(this._restartTimer), this._restartTimer = void 0), (this._isFirstConnected || this._isInRestartIce) && this.reportPCStats(Date.now(), !0, this._pcStatsUploadType), this._isInRestartIce = !1, this._isFirstConnected = !1, this._isStartRestartIce = !1), Le("NEW_ICE_RESTART")) { + var p; + if (rr(p = this._restartStates).call(p, c)) { + if (this._isStartRestartIce) + return; + this._isStartRestartIce = !0; + const m = (k) => { + (s.iceConnectionState === "disconnected" || s.iceConnectionState === "checking" || s.iceConnectionState === "failed") && (ie.debug("[".concat(this.store.clientId, "] [P2PChannel] start use restartICE, type is ").concat(k)), pu(this, Nr.QueryClientConnectionState) === "CONNECTED" && this.emit(Nr.RequestRestartICE, k)); + }, T = () => { + s.iceConnectionState !== "disconnected" && s.iceConnectionState !== "checking" && s.iceConnectionState !== "failed" || (this.reportPCStats(Date.now(), !1, this._pcStatsUploadType), ie.debug("[".concat(this.store.clientId, "] P2PConnection disconnected timeout, force reconnect")), setTimeout(() => this.emit(Nr.P2PLost), 0), this.iceFailedCount += 1, this.requestReconnect()); + }, D = Le("ICE_RESTART_INTERVAL"); + return void (this._restartTimer = window.setTimeout(() => { + if (Le("JOIN_WITH_FALLBACK_MEDIA_PROXY_FORCE") && _i().supportPCSetConfiguration) + m(Ys.RELAY), this._restartTimer = window.setTimeout(T, D); + else if (qi()) + m(Ys.UDP), this._restartTimer = window.setTimeout(T, 4e3); + else { + if (m(Ys.TCP), _i().supportPCSetConfiguration) + return void (this._restartTimer = window.setTimeout(() => { + m(Ys.RELAY), this._restartTimer = window.setTimeout(T, D); + }, D)); + this._restartTimer = window.setTimeout(T, D); + } + }, 800)); + } + } else { + if (c === "disconnected" && s.iceConnectionState === "disconnected") + return setTimeout(() => { + s.iceConnectionState === "disconnected" && Le("ICE_RESTART") && pu(this, Nr.QueryClientConnectionState) === "CONNECTED" && this.emit(Nr.RequestRestartICE); + }, 800), void setTimeout(() => { + s.peerConnectionState === "disconnected" && (ie.debug("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection disconnected timeout 4000ms, force reconnect")), this.reportPCStats(Date.now(), !1, this._pcStatsUploadType), this._isInRestartIce = !1, setTimeout(() => this.emit(Nr.P2PLost), 0), this.iceFailedCount += 1, this.requestReconnect()); + }, 4e3); + c === "failed" && (ie.debug("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection state failed, force reconnect")), this.reportPCDisconnectedOrFailed(), setTimeout(() => this.emit(Nr.P2PLost), 0), this.iceFailedCount += 1, yield this.requestReconnect()); + } + }), s.onICEConnectionStateChange = (c) => { + c !== "connected" || this.store.keyMetrics.iceConnectionEnd || this.store.iceConnectionEnd(), ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onICEConnectionStateChange(").concat(c, ")")), vr.reportApiInvoke(this.store.sessionId, { name: "ICEConnectionStateChange", options: c, tag: Na.TRACER }).onSuccess(), this.emit(Nr.IceConnectionStateChange, c); + }, s.onICETransportStateChange = (c) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onICETransportStateChange(").concat(c, ")")); + }, s.onDTLSTransportStateChange = (c) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onDTLSTransportStateChange(").concat(c, ")")); + }, s.onDTLSTransportError = (c) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.onDTLSTransportError(").concat(c, ")")); + }, s.onFirstAudioDecoded = (c) => { + var p; + const m = Array.from(rh(p = this.remoteUserMap).call(p)).find((D) => D._audioSSRC === c); + var T; + m && (this.store.subscribe(m.uid, "audio", void 0, void 0, void 0, Date.now()), (T = m.audioTrack) === null || T === void 0 || T.emit(u_.FIRST_FRAME_DECODED), vr.firstRemoteFrame(this.store.sessionId, Jo.FIRST_AUDIO_DECODE, _a.FIRST_AUDIO_DECODE, { peer: m._uintid, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, c), subscribeRequestid: c, p2pid: this.store.p2pId })); + }, s.onFirstAudioReceived = (c) => { + var p; + const m = Array.from(rh(p = this.remoteUserMap).call(p)).find((T) => T._audioSSRC === c); + m && vr.firstRemoteFrame(this.store.sessionId, Jo.FIRST_AUDIO_RECEIVED, _a.FIRST_AUDIO_RECEIVED, { peer: m._uintid, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, c), subscribeRequestid: c, p2pid: this.store.p2pId }); + }, s.onFirstVideoDecoded = (c, p, m) => { + this.reportVideoFirstFrameDecoded(c, p, m); + }, s.onFirstVideoReceived = (c) => { + var p; + const m = Array.from(rh(p = this.remoteUserMap).call(p)).find((T) => T._videoSSRC === c); + m && vr.firstRemoteFrame(this.store.sessionId, Jo.FIRST_VIDEO_RECEIVED, _a.FIRST_VIDEO_RECEIVED, { peer: m._uintid, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, c), subscribeRequestid: c, p2pid: this.store.p2pId }); + }, s.onSelectedLocalCandidateChanged = (c, p) => { + const m = c.candidateType === "relay", T = p.candidateType === "relay"; + p.candidateType !== "unknown" && m === T || this.emit(Nr.ConnectionTypeChange, m), ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.SelectedLocalCandidateChanged(").concat(JSON.stringify(o_(p)), " -> ").concat(JSON.stringify(o_(c)), ")")); + }, s.onSelectedRemoteCandidateChanged = (c, p) => { + ie.info("[".concat(this.store.clientId, "] [p2pId: ").concat(this.store.p2pId, "]: P2PConnection.SelectedRemoteCandidateChanged(").concat(JSON.stringify(o_(p)), " -> ").concat(JSON.stringify(o_(c)), ")")); + }, s.onFirstVideoDecodedTimeout = (c) => { + this.reportVideoFirstFrameDecoded(c, void 0, void 0, !0); + }; + } + unbindConnectionEvents(s) { + s.onConnectionStateChange = void 0, s.onICEConnectionStateChange = void 0, s.onICETransportStateChange = void 0, s.onDTLSTransportStateChange = void 0, s.onDTLSTransportError = void 0, s.onFirstAudioDecoded = void 0, s.onFirstAudioReceived = void 0, s.onFirstVideoDecoded = void 0, s.onFirstVideoReceived = void 0, s.onSelectedLocalCandidateChanged = void 0, s.onSelectedRemoteCandidateChanged = void 0, s.onFirstVideoDecodedTimeout = void 0; + } + filterTobeMutedTracks(s) { + const c = []; + if (this.getAllTracks().indexOf(s) === -1) + return c; + const p = this.localTrackMap.get(Mt.LocalAudioTrack); + if (s instanceof Vi && (p == null ? void 0 : p.track) instanceof Uo) + return p.track.isActive || c.push([Mt.LocalAudioTrack, p]), c; + const m = Array.from(this.localTrackMap.entries()).find((T) => { + let [, { track: D }] = T; + return s === D; + }); + if (m && (c.push(m), m[0] === Mt.LocalVideoTrack)) { + const T = this.localTrackMap.get(Mt.LocalVideoLowTrack); + T && c.push([Mt.LocalVideoLowTrack, T]); + } + return c; + } + filterTobeUnmutedTracks(s) { + const c = [], p = this.localTrackMap.get(Mt.LocalAudioTrack); + if (s instanceof Vi && (p == null ? void 0 : p.track) instanceof Uo) + return p.track.isActive && c.push([Mt.LocalAudioTrack, p]), c; + const m = Array.from(this.localTrackMap.entries()).find((T) => { + let [, { track: D }] = T; + return s === D; + }); + if (m) + if (m[0] === Mt.LocalVideoTrack) { + c.push(m); + const T = this.localTrackMap.get(Mt.LocalVideoLowTrack); + T && c.push([Mt.LocalVideoLowTrack, T]); + } else + c.push(m); + return c; + } + createMuteMessage(s) { + return s.map((c) => { + var p; + let m, [T, { track: D, ssrcs: k, id: N }] = c; + switch (T) { + case Mt.LocalAudioTrack: + m = Ci.Audio; + break; + case Mt.LocalVideoTrack: + m = rr(p = D._hints).call(p, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalVideoLowTrack: + m = Ci.Low; + } + return { stream_type: m, ssrcs: k, mid: N }; + }); + } + createUnmuteMessage(s) { + return s.map((c) => { + var p; + let m, [T, { track: D, ssrcs: k, id: N }] = c; + switch (T) { + case Mt.LocalAudioTrack: + m = Ci.Audio; + break; + case Mt.LocalVideoTrack: + m = rr(p = D._hints).call(p, ua.SCREEN_TRACK) ? Ci.Screen : Ci.High; + break; + case Mt.LocalVideoLowTrack: + m = Ci.Low; + } + return { stream_type: m, ssrcs: k, mid: N }; + }); + } + filterTobeUnSubscribedTracks(s, c) { + const p = [], m = this.remoteUserMap.get(s); + if (!m) + return p; + if (c) { + const T = m.get(c); + if (!T) + return p; + p.push([s, { kind: c, id: T }]); + } else + Array.from(m.entries()).forEach((T) => { + let [D, k] = T; + p.push([s, { kind: D, id: k }]); + }); + return p; + } + filterTobeUnSubscribedDataChannels(s, c) { + const p = []; + return c.forEach((m) => { + var T; + (T = this.remoteDataChannelMap.get(s)) !== null && T !== void 0 && T.has(m.id) && p.push(m); + }), p; + } + createUnsubscribeMessage(s) { + const c = []; + return s.forEach((p) => { + let [m, { kind: T, id: D }] = p; + switch (T) { + case pr.VIDEO: + return void (m._videoSSRC && c.push({ stream_type: pr.VIDEO, ssrcId: m._videoSSRC })); + case pr.AUDIO: + return void (m._audioSSRC && c.push({ stream_type: pr.AUDIO, ssrcId: m._audioSSRC })); + } + }), c; + } + createUnsubscribeAllMessage(s) { + const c = /* @__PURE__ */ new Map(); + return s.forEach((p) => { + let [m, { kind: T }] = p; + if (c.has(m)) { + let D = c.get(m); + T === pr.VIDEO ? D |= Bo.Video : D |= Bo.Audio, c.set(m, D); + } else + T === pr.VIDEO ? c.set(m, Bo.Video) : c.set(m, Bo.Audio); + }), { users: Array.from(c.entries()).map((p) => { + let [m, T] = p; + return { stream_id: m.uid, stream_type: T }; + }) }; + } + withdrawRemoteTracks(s) { + s.forEach((c) => { + let [p, { kind: m }] = c; + const T = this.remoteUserMap.get(p); + T && (T.delete(m), Array.from(T.entries()).length === 0 && this.remoteUserMap.delete(p)); + }); + } + updateBitrateLimit(s) { + return ye(this, null, function* () { + const c = this.localTrackMap.get(Mt.LocalVideoTrack), p = this.localTrackMap.get(Mt.LocalVideoLowTrack); + c && (yield c.track.setBitrateLimit(s.uplink)), p && s.low_stream_uplink && (yield p.track.setBitrateLimit({ max_bitrate: s.low_stream_uplink.bitrate, min_bitrate: s.low_stream_uplink.bitrate || 0 })); + }); + } + isP2PDisconnected() { + return this.connection ? this.connection.peerConnectionState !== "connected" : !0; + } + mapPubResToRemoteConfig(s, c) { + return s.map((p, m) => { + var T; + let { stream_type: D } = p; + return (T = c.find((k) => { + let { stream_type: N } = k; + return D === N; + })) === null || T === void 0 ? void 0 : T.attributes; + }); + } + tryToUnmuteAudio(s) { + return ye(this, null, function* () { + for (let p = 0; p < s.length; p++) + if (s[p] instanceof Vi) { + var c; + const m = this.filterTobeUnmutedTracks(s[p]); + if (m.length === 0) + continue; + yield (c = this.connection) === null || c === void 0 ? void 0 : c.unmuteLocal(m.map((D) => { + let [, { id: k }] = D; + return k; + })); + const T = this.createUnmuteMessage(m); + return void (yield Ji(this, Nr.RequestUnmuteLocal, T)); + } + }); + } + bindStatsUploaderEvents() { + this.statsUploader.requestStats = () => this.getStats(), this.statsUploader.requestLocalMedia = () => Array.from(this.localTrackMap.entries()), this.statsUploader.requestRemoteMedia = () => Array.from(this.remoteUserMap.entries()), this.statsUploader.requestVideoIsReady = (s) => { + var c; + return !((c = this.connection) === null || c === void 0 || !c.getRemoteVideoIsReady(s)); + }, this.statsUploader.requestUpload = (s, c) => this.emit(Nr.RequestUpload, s, c), this.statsUploader.requestUploadStats = (s) => this.emit(Nr.RequestUploadStats, s), this.statsUploader.requestAllTracks = () => this.getAllTracks(); + } + unbindStatsUploaderEvents() { + this.statsUploader.requestStats = void 0, this.statsUploader.requestLocalMedia = void 0, this.statsUploader.requestRemoteMedia = void 0, this.statsUploader.requestVideoIsReady = void 0; + } + requestReconnect() { + return ye(this, null, function* () { + this.dtlsFailedCount += 1, yield _s(aM(this.dtlsFailedCount, Oo)), this.emit(Nr.RequestReconnect); + }); + } + reconnectP2P() { + return ye(this, null, function* () { + const s = Array.from(this.localTrackMap.entries()), c = this.createGatewayUnpublishMessage(s); + Array.from(this.remoteUserMap.entries()), c.length > 0 && (yield Ro(this, Nr.RequestUnpublishForReconnectPC, c)), this.disconnectForReconnect(), this.emit(Nr.RequestReconnectPC); + }); + } + canPublishLowStream() { + return this.localTrackMap.has(Mt.LocalVideoTrack) || this.pendingLocalTracks.some((s) => s instanceof In); + } + throwIfTrackTypeNotMatch(s) { + if (s.filter((c) => c instanceof In).length > 1) + throw new mt(_e.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS); + if (s.filter((c) => c instanceof Vi).length > 1 && (s.some((c) => c instanceof Vi && c._bypassWebAudio) || !_i().webAudioMediaStreamDest)) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio or your browser doesn't support MediaStreamDestNode"); + for (const c of s) { + if (c instanceof In && this.pendingLocalTracks.some((p) => p instanceof In)) + throw new mt(_e.CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS); + if (c instanceof Vi && this.pendingLocalTracks.some((p) => p instanceof Vi) && (!_i().webAudioMediaStreamDest || c._bypassWebAudio || this.pendingLocalTracks.some((p) => p instanceof Vi && p._bypassWebAudio))) + throw new mt(_e.NOT_SUPPORTED, "cannot publish multiple tracks which one of them configured with bypassWebAudio or your browser doesn't support MediaStreamDestNode"); + } + } + getLowVideoTrack(s, c) { + const p = !Le("DISABLE_DUAL_STREAM_USE_ENCODING") && _i().supportDualStreamEncoding, m = C_(C_({}, { width: 160, height: 120, framerate: 15, bitrate: 50 }), c); + let T; + T = p ? s._mediaStreamTrack.clone() : H$(s, m); + const D = ra(8, "track-low-"), k = new In(T, C_(C_({}, p && { scaleResolutionDownBy: u5(m, s) }), {}, { frameRate: m.framerate, bitrateMax: m.bitrate, bitrateMin: m.bitrate }), void 0, void 0, D); + return k.on(l_.TRANSCEIVER_UPDATED, (N) => { + s._updateRtpTransceiver(N, s_.LOW_STREAM); + }), k._hints.push(ua.LOW_STREAM), s.on("sei-to-send", (N) => { + k.emit("sei-to-send", N); + }), s.addListener(lr.NEED_CLOSE, () => { + k.close(); + }), k; + } + globalLock() { + return ye(this, null, function* () { + return this.mutex.lock("From P2PChannel.globalLock"); + }); + } + reportPCStats(m, T, D) { + return ye(this, arguments, function* (s, c, p) { + let k = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; + if (this.connection && this.connection instanceof to) { + var N, U, V, G; + const K = this.store.keyMetrics.descriptionStart || 0, { iceConnectionState: q, dtlsTransportState: ue, peerConnectionState: oe } = this.connection, { local: he, remote: Ce } = yield this.connection.getSelectedCandidatePair(); + vr.pcStats(this.store.sessionId, { startTime: K, eventElapse: s - K || 0, iceconnectionsate: q, dtlsstate: ue, connectionstate: oe, intSucc: c ? 1 : 2, error: k, selectedLocalCandidateProtocol: (N = he == null ? void 0 : he.protocol) !== null && N !== void 0 ? N : "", selectedLocalCandidateType: (U = he.candidateType) !== null && U !== void 0 ? U : "", selectedLocalCandidateAddress: "".concat(he.address, ":").concat(he.port), selectedRemoteCandidateProtocol: (V = Ce.protocol) !== null && V !== void 0 ? V : "", selectedRemoteCandidateType: (G = Ce.candidateType) !== null && G !== void 0 ? G : "", selectedRemoteCandidateAddress: "".concat(Ce.address, ":").concat(Ce.port), restartCnt: p }); + } + }); + } + reportVideoFirstFrameDecoded(s, c, p, m) { + var T; + const D = Array.from(rh(T = this.remoteUserMap).call(T)).find((k) => k._videoSSRC === s); + if (D) { + m || this.store.subscribe(D.uid, "video", void 0, void 0, void 0, void 0, Date.now()); + const k = this.store.keyMetrics, N = k.subscribe.find((U) => U.userId === D.uid && U.type === "video"); + vr.firstRemoteVideoDecode(this.store.sessionId, Jo.FIRST_VIDEO_DECODE, _a.FIRST_VIDEO_DECODE, { peer: D._uintid, videowidth: c, videoheight: p, subscribeElapse: Ks.measureFromSubscribeStart(this.store.clientId, s), subscribeRequestid: s, p2pid: this.store.p2pId, apEnd: k.requestAPEnd || 0, apStart: k.requestAPStart || 0, joinGwEnd: k.joinGatewayEnd || 0, joinGwStart: k.joinGatewayStart || 0, pcEnd: k.peerConnectionEnd || 0, pcStart: k.peerConnectionStart || 0, subscriberEnd: (N == null ? void 0 : N.subscribeEnd) || 0, subscriberStart: (N == null ? void 0 : N.subscribeStart) || 0, videoAddNotify: (N == null ? void 0 : N.streamAdded) || 0, state: m ? 1 : 0 }); + } + } + remoteMediaSsrcChanged(s, c, p) { + return ye(this, null, function* () { + if (!this.connection) + return !1; + const m = this.remoteUserMap.get(s); + if (!m) + return !1; + const T = m.get(c); + if (!T) + return !1; + const D = yield this.connection.getRemoteSSRC(T); + return D !== void 0 && D !== p; + }); + } + resetConnection(s) { + ie.debug("[".concat(this.store.clientId, "] [P2PChannel] reset connection to ").concat(s)), this.state === Ai.Connected ? (ie.debug("[".concat(this.store.clientId, "] [P2PChannel] fallback to websocket but P2PChannel state still connected, disconnect first")), this.disconnectForReconnect()) : (this.connection && (this.connection.close(), this.unbindConnectionEvents(this.connection), this.connection = void 0), this.shouldForwardP2PCreation && (this.connection = s === _M.datachannel ? new rs({}, this.store) : this.isPlanB ? new Cs({}, this.store) : new to({}, this.store), this.bindConnectionEvents(this.connection))); + } + unbindRtpTransceiver() { + this.localTrackMap.size !== 0 && Array.from(this.localTrackMap.entries()).forEach((s) => { + let [c, { track: p }] = s; + c === Mt.LocalVideoLowTrack ? p._updateRtpTransceiver(void 0, s_.LOW_STREAM) : p._updateRtpTransceiver(void 0); + }); + } + reportPCDisconnectedOrFailed(s) { + this.connection && this.connection instanceof to && (this.connection.iceConnectionState !== "disconnected" && this.connection.iceConnectionState !== "checking" && this.connection.iceConnectionState !== "failed" || (this._isFirstConnected ? (this.reportPCStats(Date.now(), !1, this._pcStatsUploadType), this._isFirstConnected = !1) : this._pcStatsUploadType === op.TCP_RESTART && s === Ys.RELAY ? this.reportPCStats(Date.now(), !1, this._pcStatsUploadType) : this.reportPCStats(Date.now(), !1, op.DISCONNECTED_OR_FAILED))); + } + } + function pl(h, s, c) { + const p = h[s]; + if (typeof p != "function") + throw new Error("Cannot use mutex on object property."); + return c.value = function() { + return ye(this, arguments, function* () { + const m = this.mutex, T = yield m.lock("From P2PChannel.".concat(s)); + try { + for (var D = arguments.length, k = new Array(D), N = 0; N < D; N++) + k[N] = arguments[N]; + return yield p.apply(this, k); + } finally { + T(); + } + }); + }, c; + } + function BFe(h) { + let s = Jte(); + return function(c, p) { + let m = c.appId; + m !== void 0 && (Li(p, 10), Og(p, m)); + let T = c.cid; + T !== void 0 && (Li(p, 16), Li(p, T)); + let D = c.cname; + D !== void 0 && (Li(p, 26), Og(p, D)); + let k = c.deviceId; + k !== void 0 && (Li(p, 34), Og(p, k)); + let N = c.elapse; + N !== void 0 && (Li(p, 40), T_(p, N)); + let U = c.fileSize; + U !== void 0 && (Li(p, 48), T_(p, fT(U))); + let V = c.height; + V !== void 0 && (Li(p, 56), T_(p, fT(V))); + let G = c.jpg; + G !== void 0 && (Li(p, 66), Li(p, G.length), function(Su, xt) { + let zt = pT(Su, xt.length); + Su.bytes.set(xt, zt); + }(p, G)); + let K = c.networkType; + K !== void 0 && (Li(p, 72), T_(p, fT(K))); + let q = c.osType; + q !== void 0 && (Li(p, 80), T_(p, fT(q))); + let ue = c.requestId; + ue !== void 0 && (Li(p, 90), Og(p, ue)); + let oe = c.sdkVersion; + oe !== void 0 && (Li(p, 98), Og(p, oe)); + let he = c.sequence; + he !== void 0 && (Li(p, 104), T_(p, fT(he))); + let Ce = c.sid; + Ce !== void 0 && (Li(p, 114), Og(p, Ce)); + let ke = c.timestamp; + ke !== void 0 && (Li(p, 120), T_(p, ke)); + let Ge = c.uid; + Ge !== void 0 && (Li(p, 128), Li(p, Ge)); + let tt = c.vid; + tt !== void 0 && (Li(p, 136), Li(p, tt)); + let Ye = c.width; + Ye !== void 0 && (Li(p, 144), T_(p, fT(Ye))); + let et = c.service; + et !== void 0 && (Li(p, 152), Li(p, et)); + let ht = c.callbackData; + ht !== void 0 && (Li(p, 162), Og(p, ht)); + let st = c.jpgEncryption; + st !== void 0 && (Li(p, 168), Li(p, st)); + let Ut = c.requestType; + Ut !== void 0 && (Li(p, 176), Li(p, Ut)); + let Vt = c.scorePorn; + Vt !== void 0 && (Li(p, 185), tV(p, Vt)); + let fn = c.scoreSexy; + fn !== void 0 && (Li(p, 193), tV(p, fn)); + let Nn = c.scoreNeutral; + Nn !== void 0 && (Li(p, 201), tV(p, Nn)); + let ha = c.scene; + ha !== void 0 && (Li(p, 208), Li(p, ha)); + let jo = c.ossFilePrefix; + jo !== void 0 && (Li(p, 218), Og(p, jo)); + let Sa = c.serviceVendor; + if (Sa !== void 0) + for (let Su of Sa) { + Li(p, 226); + let xt = Jte(); + $Fe(Su, xt), Li(p, xt.limit), WFe(p, xt), HFe(xt); + } + }(h, s), function(c) { + let p = c.bytes, m = c.limit; + return p.length === m ? p : p.subarray(0, m); + }(s); + } + function UFe(h) { + return function(c) { + let p = {}; + e: + for (; !Qte(c); ) { + let m = Mg(c); + switch (m >>> 3) { + case 0: + break e; + case 1: + p.code = Mg(c); + break; + case 2: + p.msg = ere(c, Mg(c)); + break; + case 3: { + let T = VFe(c); + p.data = jFe(c), c.limit = T; + break; + } + default: + Zte(c, 7 & m); + } + } + return p; + }({ bytes: s = h, offset: 0, limit: s.length }); + var s; + } + function jFe(h) { + let s = {}; + e: + for (; !Qte(h); ) { + let c = Mg(h); + switch (c >>> 3) { + case 0: + break e; + case 1: + s.requestId = ere(h, Mg(h)); + break; + case 2: + s.requestType = Mg(h) >>> 0; + break; + case 3: + s.scorePorn = eV(h); + break; + case 4: + s.scoreSexy = eV(h); + break; + case 5: + s.scoreNeutral = eV(h); + break; + case 6: + s.requestScene = Mg(h) >>> 0; + break; + case 7: + s.scene = Mg(h) >>> 0; + break; + default: + Zte(h, 7 & c); + } + } + return s; + } + function $Fe(h, s) { + let c = h.service; + c !== void 0 && (Li(s, 8), Li(s, c)); + let p = h.vendor; + p !== void 0 && (Li(s, 16), Li(s, p)); + let m = h.token; + m !== void 0 && (Li(s, 26), Og(s, m)); + let T = h.callbackUrl; + T !== void 0 && (Li(s, 34), Og(s, T)); + } + function VFe(h) { + let s = Mg(h), c = h.limit; + return h.limit = h.offset + s, c; + } + function Zte(h, s) { + switch (s) { + case 0: + for (; 128 & tre(h); ) + ; + break; + case 2: + J$(h, Mg(h)); + break; + case 5: + J$(h, 4); + break; + case 1: + J$(h, 8); + break; + default: + throw new Error("Unimplemented type: " + s); + } + } + St([pl, ge("design:type", Function), ge("design:paramtypes", [Object, Boolean]), ge("design:returntype", ot)], Ts.prototype, "startP2PConnection", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Object, Object, Array, Object, String, String]), ge("design:returntype", ot)], Ts.prototype, "connect", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", void 0)], Ts.prototype, "updateRemoteRTPCapabilities", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Object, Object, Array, Object, String, String]), ge("design:returntype", ot)], Ts.prototype, "preConnect", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Ts.prototype, "publishDataChannel", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Ts.prototype, "unpublish", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Ts.prototype, "unpublishDataChannel", null), St([pl, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], Ts.prototype, "unpublishLowStream", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, Array]), ge("design:returntype", ot)], Ts.prototype, "subscribeDataChannel", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number, Number, Array]), ge("design:returntype", ot)], Ts.prototype, "subscribe", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Ts.prototype, "massSubscribe", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, String, Boolean]), ge("design:returntype", ot)], Ts.prototype, "unsubscribe", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, Array]), ge("design:returntype", ot)], Ts.prototype, "unsubscribeDataChannel", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], Ts.prototype, "massUnsubscribe", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, String]), ge("design:returntype", ot)], Ts.prototype, "muteRemote", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, String]), ge("design:returntype", ot)], Ts.prototype, "unmuteRemote", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, String]), ge("design:returntype", ot)], Ts.prototype, "hasRemoteMediaWithLock", null), St([pl, ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], Ts.prototype, "disconnectForReconnect", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], Ts.prototype, "updateBitrateLimit", null), St([pl, ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number]), ge("design:returntype", ot)], Ts.prototype, "remoteMediaSsrcChanged", null); + let zFe = new Float32Array(1); + new Uint8Array(zFe.buffer); + let q$ = new Float64Array(1), jc = new Uint8Array(q$.buffer); + function fT(h) { + return { low: h |= 0, high: h >> 31, unsigned: h >= 0 }; + } + let qte = []; + function Jte() { + const h = qte.pop(); + return h ? (h.offset = h.limit = 0, h) : { bytes: new Uint8Array(64), offset: 0, limit: 0 }; + } + function HFe(h) { + qte.push(h); + } + function J$(h, s) { + if (h.offset + s > h.limit) + throw new Error("Skip past limit"); + h.offset += s; + } + function Qte(h) { + return h.offset >= h.limit; + } + function pT(h, s) { + let c = h.bytes, p = h.offset, m = h.limit, T = p + s; + if (T > c.length) { + let D = new Uint8Array(2 * T); + D.set(c), h.bytes = D; + } + return h.offset = T, T > m && (h.limit = T), p; + } + function Q$(h, s) { + let c = h.offset; + if (c + s > h.limit) + throw new Error("Read past limit"); + return h.offset += s, c; + } + function ere(h, s) { + let c = Q$(h, s), p = String.fromCharCode, m = h.bytes, T = "�", D = ""; + for (let k = 0; k < s; k++) { + let N, U, V, G, K = m[k + c]; + 128 & K ? (224 & K) == 192 ? k + 1 >= s ? D += T : (N = m[k + c + 1], (192 & N) != 128 ? D += T : (G = (31 & K) << 6 | 63 & N, G < 128 ? D += T : (D += p(G), k++))) : (240 & K) == 224 ? k + 2 >= s ? D += T : (N = m[k + c + 1], U = m[k + c + 2], (49344 & (N | U << 8)) != 32896 ? D += T : (G = (15 & K) << 12 | (63 & N) << 6 | 63 & U, G < 2048 || G >= 55296 && G <= 57343 ? D += T : (D += p(G), k += 2))) : (248 & K) == 240 ? k + 3 >= s ? D += T : (N = m[k + c + 1], U = m[k + c + 2], V = m[k + c + 3], (12632256 & (N | U << 8 | V << 16)) != 8421504 ? D += T : (G = (7 & K) << 18 | (63 & N) << 12 | (63 & U) << 6 | 63 & V, G < 65536 || G > 1114111 ? D += T : (G -= 65536, D += p(55296 + (G >> 10), 56320 + (1023 & G)), k += 3))) : D += T : D += p(K); + } + return D; + } + function Og(h, s) { + let c = s.length, p = 0; + for (let D = 0; D < c; D++) { + let k = s.charCodeAt(D); + k >= 55296 && k <= 56319 && D + 1 < c && (k = (k << 10) + s.charCodeAt(++D) - 56613888), p += k < 128 ? 1 : k < 2048 ? 2 : k < 65536 ? 3 : 4; + } + Li(h, p); + let m = pT(h, p), T = h.bytes; + for (let D = 0; D < c; D++) { + let k = s.charCodeAt(D); + k >= 55296 && k <= 56319 && D + 1 < c && (k = (k << 10) + s.charCodeAt(++D) - 56613888), k < 128 ? T[m++] = k : (k < 2048 ? T[m++] = k >> 6 & 31 | 192 : (k < 65536 ? T[m++] = k >> 12 & 15 | 224 : (T[m++] = k >> 18 & 7 | 240, T[m++] = k >> 12 & 63 | 128), T[m++] = k >> 6 & 63 | 128), T[m++] = 63 & k | 128); + } + } + function WFe(h, s) { + let c = pT(h, s.limit), p = h.bytes, m = s.bytes; + for (let T = 0, D = s.limit; T < D; T++) + p[T + c] = m[T]; + } + function tre(h) { + return h.bytes[Q$(h, 1)]; + } + function rre(h, s) { + let c = pT(h, 1); + h.bytes[c] = s; + } + function eV(h) { + let s = Q$(h, 8), c = h.bytes; + return jc[0] = c[s++], jc[1] = c[s++], jc[2] = c[s++], jc[3] = c[s++], jc[4] = c[s++], jc[5] = c[s++], jc[6] = c[s++], jc[7] = c[s++], q$[0]; + } + function tV(h, s) { + let c = pT(h, 8), p = h.bytes; + q$[0] = s, p[c++] = jc[0], p[c++] = jc[1], p[c++] = jc[2], p[c++] = jc[3], p[c++] = jc[4], p[c++] = jc[5], p[c++] = jc[6], p[c++] = jc[7]; + } + function Mg(h) { + let s, c = 0, p = 0; + do + s = tre(h), c < 32 && (p |= (127 & s) << c), c += 7; + while (128 & s); + return p; + } + function Li(h, s) { + for (s >>>= 0; s >= 128; ) + rre(h, 127 & s | 128), s >>>= 7; + rre(h, s); + } + function T_(h, s) { + let c = s.low >>> 0, p = (s.low >>> 28 | s.high << 4) >>> 0, m = s.high >>> 24, T = m === 0 ? p === 0 ? c < 16384 ? c < 128 ? 1 : 2 : c < 1 << 21 ? 3 : 4 : p < 16384 ? p < 128 ? 5 : 6 : p < 1 << 21 ? 7 : 8 : m < 128 ? 9 : 10, D = pT(h, T), k = h.bytes; + switch (T) { + case 10: + k[D + 9] = m >>> 7 & 1; + case 9: + k[D + 8] = T !== 9 ? 128 | m : 127 & m; + case 8: + k[D + 7] = T !== 8 ? p >>> 21 | 128 : p >>> 21 & 127; + case 7: + k[D + 6] = T !== 7 ? p >>> 14 | 128 : p >>> 14 & 127; + case 6: + k[D + 5] = T !== 6 ? p >>> 7 | 128 : p >>> 7 & 127; + case 5: + k[D + 4] = T !== 5 ? 128 | p : 127 & p; + case 4: + k[D + 3] = T !== 4 ? c >>> 21 | 128 : c >>> 21 & 127; + case 3: + k[D + 2] = T !== 3 ? c >>> 14 | 128 : c >>> 14 & 127; + case 2: + k[D + 1] = T !== 2 ? c >>> 7 | 128 : c >>> 7 & 127; + case 1: + k[D] = T !== 1 ? 128 | c : 127 & c; + } + } + function nre(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + const GFe = /* @__PURE__ */ new Map([["moderation", 1], ["supervise", 2]]); + class bk extends Ra { + get connectionState() { + return this._connectionState; + } + set connectionState(s) { + if (this._connectionState === s) + return; + const c = this._connectionState; + this._connectionState = s, this.emit(es.CONNECTION_STATE_CHANGE, c, s); + } + get inspectType() { + return this._inspectType; + } + set inspectType(s) { + var c; + this._inspectMode = rm(c = s.map((p) => GFe.get(p) || 0)).call(c, (p, m) => p + m), this._inspectType = s; + } + get quality() { + return this._quality; + } + set quality(s) { + this._quality = s > 1 ? 1 : s < 0.1 ? 0.1 : s, this.qualityTimer && (window.clearTimeout(this.qualityTimer), this.qualityTimer = null), this._quality >= 1 || (this.qualityTimer = window.setTimeout(() => { + this.quality = this._quality / this.qualityRatio; + }, 6e4)); + } + constructor(s) { + super(), Z(this, "name", "AgoraRTCVideoContentInspect"), Z(this, "_connectionState", ih.CONNECTING), Z(this, "_innerConnectionState", void 0), Z(this, "sequence", 0), Z(this, "inspectStartTime", void 0), Z(this, "workerManagerConnection", void 0), Z(this, "workerConnection", void 0), Z(this, "workerMessageLengthLimit", void 0), Z(this, "inspectIntervalMinimum", void 0), Z(this, "qualityRatio", void 0), Z(this, "_connectInfo", void 0), Z(this, "_cancelTokenSource", Pc.CancelToken.source()), Z(this, "_retryConfig", void 0), Z(this, "wmSequence", 0), Z(this, "inspectInterval", void 0), Z(this, "inspectTimer", null), Z(this, "ossFilePrefix", void 0), Z(this, "extraInfo", void 0), Z(this, "_inspectType", void 0), Z(this, "_inspectMode", void 0), Z(this, "_quality", 1), Z(this, "qualityTimer", null), Z(this, "_inspectId", void 0), Z(this, "_needWorkUrlOnly", !1), Z(this, "inspectImage", () => { + if (this.connectionState !== ih.CONNECTED) + throw new Je(_e.OPERATION_ABORTED, "content inspect service connection status is ".concat(this.connectionState)); + this.inspectTimer && (window.clearInterval(this.inspectTimer), this.inspectTimer = null), this.inspectTimer = window.setInterval(() => { + this.connectionState === ih.CONNECTED ? this.requestToInspectImage() : ie.debug("[".concat(this._inspectId, "] Inspect State is not connected , "), this.connectionState); + }, this.inspectInterval < this.inspectIntervalMinimum ? this.inspectIntervalMinimum : this.inspectInterval), this.requestToInspectImage(); + }), this._inspectId = ra(5, "inspect-"), this.workerMessageLengthLimit = Le("VIDEO_INSPECT_WORKER_MESSAGE_LENGTH_LIMIT"), this.inspectIntervalMinimum = Le("VIDEO_INSPECT_INTERVAL_MINIMUM"), this.qualityRatio = Le("VIDEO_INSPECT_QUALITY_RATIO"), this.inspectInterval = s.interval, this.ossFilePrefix = s.ossFilePrefix, this.extraInfo = s.extraInfo, this.inspectType = s.inspectType, this.inspectStartTime = Number(Date.now()), this.workerManagerConnection = new Nx("worker-manager-" + this._inspectId, Oo), this.on(es.STATE_CHANGE, (c, p) => { + this._innerConnectionState = c, ie.debug("[".concat(this._inspectId, "] Inspect operation :").concat(ah[c], " ").concat(p || "")); + }), this.handleWorkerManagerEvents(), this.workerConnection = new Nx("worker-" + this._inspectId, Oo), this.handleWorkerEvents(); + } + init(s, c) { + return ye(this, null, function* () { + this.emit(es.STATE_CHANGE, ah.CONNECT_AP), this._connectInfo = s; + const p = this._cancelTokenSource.token; + return this._retryConfig = c, new ot((m, T) => { + this.on(es.CONNECTION_STATE_CHANGE, (D, k) => { + k === ih.CONNECTED && m(); + }), this.requestAP(s, p, c).then((D) => { + this.connectWorkerManager(D); + }).catch((D) => { + T(D); + }); + }); + }); + } + requestAP(s, c, p) { + return ye(this, null, function* () { + const m = Le("WEBCS_DOMAIN").map((k) => "https://".concat(k, "/api/v1")), T = yield function(k, N, U, V) { + let { appId: G, areaCode: K, cname: q, sid: ue, token: oe, uid: he } = N; + $C++; + const Ce = "image_moderation_api", ke = { service_name: Ce, json_body: JSON.stringify({ appId: G, areaCode: K, cname: q, command: "allocateEdge", requestId: $C, seq: $C, sid: ue, token: oe, ts: Date.now(), uid: he + "" }) }; + let Ge, tt, Ye = k[0]; + return np(() => ye(this, null, function* () { + Ge = Date.now(); + const et = yield sm(Ye, { data: ke, cancelToken: U, headers: { "X-Packet-Service-Type": "0", "X-Packet-URI": "61" }, params: { action: "wrtc_gateway" } }); + if (tt = Date.now() - Ge, et.code !== 0) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "image inspect ap error, code" + et.code, { retry: !0, responseTime: tt }); + throw ie.error(Vt.toString()), Vt; + } + const ht = JSON.parse(et.json_body); + if (ht.code !== 200) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "image inspect ap error, code: ".concat(ht.code, ", reason: ").concat(ht.reason), { code: ht.code, responseTime: tt }); + throw ie.error(Vt.toString()), Vt; + } + if (!ht.servers || !Array.isArray(ht.servers) || ht.servers.length === 0) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "image inspect ap empty server", { code: ht.code, responseTime: tt }); + throw ie.error(Vt.toString()), Vt; + } + const st = Le("VIDEO_INSPECT_WORKER_MANAGER_HOST"), Ut = Le("VIDEO_INSPECT_WORKER_MANAGER_PORT"); + return { addressList: ht.servers.map((Vt) => { + let { address: fn, wss: Nn } = Vt; + if (fn && Nn) + return "wss://".concat(fn.replace(/\./g, "-"), ".").concat(st, ":").concat(Ut || Nn); + }).filter((Vt) => !!Vt), workerToken: ht.workerToken, vid: ht.vid, responseTime: tt }; + }), (et, ht) => (vr.apworkerEvent(ue, { success: !0, sc: 200, serviceName: Ce, responseDetail: JSON.stringify(et.addressList), firstSuccess: ht === 0, responseTime: tt, serverIp: k[ht % k.length] }), !1), (et, ht) => (vr.apworkerEvent(ue, { success: !1, sc: et.data && et.data.code || 200, serviceName: Ce, responseTime: tt, serverIp: k[ht % k.length] }), !!(et.code !== _e.OPERATION_ABORTED && et.code !== _e.UNEXPECTED_RESPONSE || et.data && et.data.retry) && (Ye = k[(ht + 1) % k.length], !0)), V); + }(m, s, c, p); + this.emit(es.STATE_CHANGE, ah.AP_CONNECTED); + const { addressList: D } = T; + return this.wmSequence++, D; + }); + } + connectWorkerManager(c) { + return ye(this, arguments, function* (s) { + let p = arguments.length > 1 && arguments[1] !== void 0 && arguments[1]; + this._needWorkUrlOnly = p, this.emit(es.STATE_CHANGE, ah.CONNECT_WORKER_MANAGER), yield this.workerManagerConnection.init(s, 1e4); + }); + } + connectWorker(s) { + return ye(this, null, function* () { + yield this.workerConnection.init([s]); + }); + } + handleWorkerManagerEvents() { + this.workerManagerConnection.on(Yr.CONNECTED, () => ye(this, null, function* () { + this.emit(es.STATE_CHANGE, ah.WORKER_MANAGER_CONNECTED, this.workerManagerConnection.url), this.workerManagerConnection.sendMessage({ appId: this._connectInfo.appId, cname: this._connectInfo.cname, uid: this._connectInfo.uid + "", sdkVersion: "4.20.2", sid: this._connectInfo.sid, seq: this.wmSequence, ts: Number(Date.now()), requestId: Math.floor(1e12 * Math.random()), allocate: !0, clientRequest: { command: "join" } }, !0); + })), this.workerManagerConnection.on(Yr.CLOSED, () => { + this._innerConnectionState < ah.GET_WORKER_MANAGER_RESPONSE && ie.debug("[".concat(this._inspectId, "] Inspect worker manager is closed before connecting worker")); + }), this.workerManagerConnection.on(Yr.FAILED, () => { + this._innerConnectionState < ah.GET_WORKER_MANAGER_RESPONSE && ie.debug("[".concat(this._inspectId, "] Connecting inspect worker manager is failed before connecting worker")); + }), this.workerManagerConnection.on(Yr.RECONNECTING, () => { + this._innerConnectionState < ah.GET_WORKER_MANAGER_RESPONSE && ie.debug("[".concat(this._inspectId, "] Inspect worker manager is reconnecting before connecting worker")); + }), this.workerManagerConnection.on(Yr.ON_MESSAGE, (s) => ye(this, null, function* () { + this.emit(es.STATE_CHANGE, ah.GET_WORKER_MANAGER_RESPONSE); + const c = this.workerManagerConnection.url; + this.workerManagerConnection.close(); + const p = JSON.parse(s.data); + if (p.code !== 200) + throw ie.error("[".concat(this._inspectId, "] Unexpected code ").concat(p.code, " from worker manager")), new Je(_e.UNEXPECTED_RESPONSE, "response code of worker is unexpected", p); + if (!(p.serverResponse && p.serverResponse.portWss && c)) + throw ie.error("[".concat(this._inspectId, "] Unexpected content from worker manager : ").concat(JSON.stringify(p))), new Je(_e.UNEXPECTED_RESPONSE, "response content of worker is unexpected", p); + { + const m = Le("VIDEO_INSPECT_WORKER_PORT") || p.serverResponse.portWss, T = c.replace(/:\d+\/?$/, ":".concat(m)); + this.emit(es.STATE_CHANGE, ah.CONNECT_WORKER, T), this._needWorkUrlOnly ? this.emit(es.REQUEST_NEW_WORKER_URL, T) : yield this.connectWorker(T); + } + })), this.workerManagerConnection.on(Yr.WILL_RECONNECT, (s, c, p) => { + p(s); + }), this.workerManagerConnection.on(Yr.REQUEST_NEW_URLS, (s, c) => { + this.requestAP(this._connectInfo, this._cancelTokenSource.token, this._retryConfig).then(s).catch(c); + }); + } + handleWorkerEvents() { + this.workerConnection.on(Yr.CONNECTED, () => ye(this, null, function* () { + this.emit(es.STATE_CHANGE, ah.WORKER_CONNECTED, this.workerConnection.url), this.connectionState = ih.CONNECTED; + })), this.workerConnection.on(Yr.ON_MESSAGE, (s) => ye(this, null, function* () { + if (s.data instanceof ArrayBuffer) { + const p = UFe(new Uint8Array(s.data)); + if (Le("SHOW_VIDEO_INSPECT_WORKER_MESSAGE") && ie.debug("[".concat(this._inspectId, "] Response message for worker of inspect content "), JSON.stringify(p)), p.code === 200) { + if (Array.isArray(this.inspectType) && this.inspectType.length === 1 && this.inspectType[0] === "supervise") + return void this.emit(es.INSPECT_RESULT, void 0, void 0); + if (p.data && p.data.scorePorn && p.data.scoreSexy && p.data.scoreNeutral) { + var c; + const m = { porn: p.data.scorePorn, sexy: p.data.scoreSexy, neutral: p.data.scoreNeutral }, T = rm(c = Object.keys(m)).call(c, (k, N) => m[k] > m[N] ? k : N, "porn"), D = Object.keys(m).find((k) => k === T); + this.emit(es.INSPECT_RESULT, D); + } else + this.emit(es.INSPECT_RESULT, void 0, new Je(_e.UNEXPECTED_RESPONSE, p.code + "", "There is an unexpected data on message")); + } else + this.emit(es.INSPECT_RESULT, void 0, new Je(_e.UNEXPECTED_RESPONSE, p.code + "", p.msg)); + } else + ie.error("[".concat(this._inspectId, "] Unexpected message type from worker")), this.emit(es.INSPECT_RESULT, void 0, new Je(_e.UNEXPECTED_RESPONSE, "invalid worker message type")); + })), this.workerConnection.on(Yr.CLOSED, () => { + this.connectionState = ih.CLOSED; + }), this.workerConnection.on(Yr.FAILED, () => { + this.connectionState = ih.CLOSED; + }), this.workerConnection.on(Yr.RECONNECTING, () => { + this.connectionState = this.connectionState === ih.CONNECTED ? ih.RECONNECTING : ih.CONNECTING; + }), this.workerConnection.on(Yr.WILL_RECONNECT, (s, c, p) => { + s === "recover" && p(s), p("tryNext"); + }), this.workerConnection.on(Yr.REQUEST_NEW_URLS, (s, c) => { + this.workerManagerConnection.close(), this.once(es.REQUEST_NEW_WORKER_URL, (p) => { + s([p]); + }), this.requestAP(this._connectInfo, this._cancelTokenSource.token, this._retryConfig).then((p) => { + this.connectWorkerManager(p, !0); + }).catch((p) => { + c(p); + }); + }); + } + static intToLong(s) { + return { low: s |= 0, high: s >> 31, unsigned: s >= 0 }; + } + requestToInspectImage() { + return ye(this, null, function* () { + this.sequence++; + const s = pu(this, es.CLIENT_LOCAL_VIDEO_TRACK), c = { appId: this._connectInfo.appId, cname: this._connectInfo.cname, cid: this._connectInfo.cid, sid: this._connectInfo.sid, uid: this._connectInfo.uid, vid: this._connectInfo.vid }; + if (s) { + if (!s.isPlaying) + return void this.emit(es.INSPECT_RESULT, void 0, new Je(_e.INVALID_OPERATION, "Only the track being played can be inspected")); + const p = yield this.generateRequestData(s, c); + this.workerConnection.sendMessage(p, !0, !0); + } else + this.emit(es.INSPECT_RESULT, void 0, new Je(_e.INVALID_OPERATION, "Only the track being published can be inspected")); + }); + } + generateRequestData(s, c) { + return ye(this, null, function* () { + let { appId: p, cname: m, cid: T, vid: D, sid: k, uid: N } = c; + const U = Date.now(), V = yield s.getCurrentFrameImage("image/jpeg", this.quality), G = yield gQ(V, p, m), K = this.sequence + "-" + T + "-" + N + "-" + U + "-" + ra(12, ""), q = { appId: p, cid: T, cname: m, deviceId: "", elapse: bk.intToLong(Number(U - this.inspectStartTime)), fileSize: G.byteLength, jpgEncryption: 2, height: V.height, width: V.width, jpg: G, networkType: 6, osType: 7, requestId: K, sdkVersion: "4.20.2", sequence: this.sequence, sid: k, timestamp: bk.intToLong(U), uid: N, vid: D, service: this._inspectMode, callbackData: this.extraInfo, ossFilePrefix: this.ossFilePrefix }; + this.extraInfo === void 0 && delete q.callbackData, this.ossFilePrefix === void 0 && delete q.ossFilePrefix; + const ue = BFe(q); + if (ue.byteLength < this.workerMessageLengthLimit) { + if (Le("SHOW_VIDEO_INSPECT_WORKER_MESSAGE")) { + const oe = function(he) { + for (var Ce = 1; Ce < arguments.length; Ce++) { + var ke = arguments[Ce] != null ? arguments[Ce] : {}; + Ce % 2 ? nre(Object(ke), !0).forEach(function(Ge) { + Z(he, Ge, ke[Ge]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(he, Object.getOwnPropertyDescriptors(ke)) : nre(Object(ke)).forEach(function(Ge) { + Object.defineProperty(he, Ge, Object.getOwnPropertyDescriptor(ke, Ge)); + }); + } + return he; + }({}, q); + delete oe.jpg, ie.debug("[".concat(this._inspectId, "] Request message for worker of inspect content "), JSON.stringify(oe)); + } + return ue; + } + { + const oe = this.quality * this.qualityRatio; + return this.quality = oe, yield this.generateRequestData(s, { appId: p, cname: m, cid: T, vid: D, sid: k, uid: N }); + } + }); + } + close() { + this._cancelTokenSource.cancel(), this._cancelTokenSource = Pc.CancelToken.source(), this.workerManagerConnection && this.workerManagerConnection.close(), this.workerConnection && this.workerConnection.close(), this.inspectTimer && window.clearInterval(this.inspectTimer), this.inspectTimer = null, this.connectionState = ih.CLOSED, this.emit(es.STATE_CHANGE, ah.CLOSED); + } + } + function YFe(h) { + let s = function() { + const c = ZFe.pop(); + return c ? (c.offset = c.limit = 0, c) : { bytes: new Uint8Array(64), offset: 0, limit: 0 }; + }(); + return function(c, p) { + let m = c.appId; + m !== void 0 && (So(p, 10), w_(p, m)); + let T = c.cid; + T !== void 0 && (So(p, 16), So(p, T)); + let D = c.cname; + D !== void 0 && (So(p, 26), w_(p, D)); + let k = c.deviceId; + k !== void 0 && (So(p, 34), w_(p, k)); + let N = c.elapse; + N !== void 0 && (So(p, 40), I_(p, N)); + let U = c.fileSize; + U !== void 0 && (So(p, 48), I_(p, gT(U))); + let V = c.height; + V !== void 0 && (So(p, 56), I_(p, gT(V))); + let G = c.jpg; + G !== void 0 && (So(p, 66), So(p, G.length), are(p, G)); + let K = c.networkType; + K !== void 0 && (So(p, 72), I_(p, gT(K))); + let q = c.osType; + q !== void 0 && (So(p, 80), I_(p, gT(q))); + let ue = c.requestId; + ue !== void 0 && (So(p, 90), w_(p, ue)); + let oe = c.sdkVersion; + oe !== void 0 && (So(p, 98), w_(p, oe)); + let he = c.sequence; + he !== void 0 && (So(p, 104), I_(p, gT(he))); + let Ce = c.sid; + Ce !== void 0 && (So(p, 114), w_(p, Ce)); + let ke = c.timestamp; + ke !== void 0 && (So(p, 120), I_(p, ke)); + let Ge = c.uid; + Ge !== void 0 && (So(p, 128), So(p, Ge)); + let tt = c.vid; + tt !== void 0 && (So(p, 136), So(p, tt)); + let Ye = c.width; + Ye !== void 0 && (So(p, 144), I_(p, gT(Ye))); + let et = c.service; + et !== void 0 && (So(p, 152), So(p, et)); + let ht = c.callbackData; + ht !== void 0 && (So(p, 162), So(p, ht.length), are(p, ht)); + let st = c.ticket; + st !== void 0 && (So(p, 170), w_(p, st)); + let Ut = c.vendorConfigs; + Ut !== void 0 && (So(p, 178), w_(p, Ut)); + }(h, s), function(c) { + let p = c.bytes, m = c.limit; + return p.length === m ? p : p.subarray(0, m); + }(s); + } + function XFe(h) { + return function(c) { + let p = {}; + e: + for (; !qFe(c); ) { + let m = mA(c); + switch (m >>> 3) { + case 0: + break e; + case 1: + p.code = mA(c); + break; + case 2: + p.msg = ore(c, mA(c)); + break; + case 3: + p.requestId = ore(c, mA(c)); + break; + case 4: + p.timestamp = JFe(c, !1); + break; + default: + KFe(c, 7 & m); + } + } + return p; + }({ bytes: s = h, offset: 0, limit: s.length }); + var s; + } + function KFe(h, s) { + switch (s) { + case 0: + for (; 128 & Jd(h); ) + ; + break; + case 2: + rV(h, mA(h)); + break; + case 5: + rV(h, 4); + break; + case 1: + rV(h, 8); + break; + default: + throw new Error("Unimplemented type: " + s); + } + } + function gT(h) { + return { low: h |= 0, high: h >> 31, unsigned: h >= 0 }; + } + let ZFe = []; + function rV(h, s) { + if (h.offset + s > h.limit) + throw new Error("Skip past limit"); + h.offset += s; + } + function qFe(h) { + return h.offset >= h.limit; + } + function Ek(h, s) { + let c = h.bytes, p = h.offset, m = h.limit, T = p + s; + if (T > c.length) { + let D = new Uint8Array(2 * T); + D.set(c), h.bytes = D; + } + return h.offset = T, T > m && (h.limit = T), p; + } + function ire(h, s) { + let c = h.offset; + if (c + s > h.limit) + throw new Error("Read past limit"); + return h.offset += s, c; + } + function are(h, s) { + let c = Ek(h, s.length); + h.bytes.set(s, c); + } + function ore(h, s) { + let c = ire(h, s), p = String.fromCharCode, m = h.bytes, T = "�", D = ""; + for (let k = 0; k < s; k++) { + let N, U, V, G, K = m[k + c]; + 128 & K ? (224 & K) == 192 ? k + 1 >= s ? D += T : (N = m[k + c + 1], (192 & N) != 128 ? D += T : (G = (31 & K) << 6 | 63 & N, G < 128 ? D += T : (D += p(G), k++))) : (240 & K) == 224 ? k + 2 >= s ? D += T : (N = m[k + c + 1], U = m[k + c + 2], (49344 & (N | U << 8)) != 32896 ? D += T : (G = (15 & K) << 12 | (63 & N) << 6 | 63 & U, G < 2048 || G >= 55296 && G <= 57343 ? D += T : (D += p(G), k += 2))) : (248 & K) == 240 ? k + 3 >= s ? D += T : (N = m[k + c + 1], U = m[k + c + 2], V = m[k + c + 3], (12632256 & (N | U << 8 | V << 16)) != 8421504 ? D += T : (G = (7 & K) << 18 | (63 & N) << 12 | (63 & U) << 6 | 63 & V, G < 65536 || G > 1114111 ? D += T : (G -= 65536, D += p(55296 + (G >> 10), 56320 + (1023 & G)), k += 3))) : D += T : D += p(K); + } + return D; + } + function w_(h, s) { + let c = s.length, p = 0; + for (let D = 0; D < c; D++) { + let k = s.charCodeAt(D); + k >= 55296 && k <= 56319 && D + 1 < c && (k = (k << 10) + s.charCodeAt(++D) - 56613888), p += k < 128 ? 1 : k < 2048 ? 2 : k < 65536 ? 3 : 4; + } + So(h, p); + let m = Ek(h, p), T = h.bytes; + for (let D = 0; D < c; D++) { + let k = s.charCodeAt(D); + k >= 55296 && k <= 56319 && D + 1 < c && (k = (k << 10) + s.charCodeAt(++D) - 56613888), k < 128 ? T[m++] = k : (k < 2048 ? T[m++] = k >> 6 & 31 | 192 : (k < 65536 ? T[m++] = k >> 12 & 15 | 224 : (T[m++] = k >> 18 & 7 | 240, T[m++] = k >> 12 & 63 | 128), T[m++] = k >> 6 & 63 | 128), T[m++] = 63 & k | 128); + } + } + function Jd(h) { + return h.bytes[ire(h, 1)]; + } + function sre(h, s) { + let c = Ek(h, 1); + h.bytes[c] = s; + } + function mA(h) { + let s, c = 0, p = 0; + do + s = Jd(h), c < 32 && (p |= (127 & s) << c), c += 7; + while (128 & s); + return p; + } + function So(h, s) { + for (s >>>= 0; s >= 128; ) + sre(h, 127 & s | 128), s >>>= 7; + sre(h, s); + } + function JFe(h, s) { + let c, p = 0, m = 0, T = 0; + return c = Jd(h), p = 127 & c, 128 & c && (c = Jd(h), p |= (127 & c) << 7, 128 & c && (c = Jd(h), p |= (127 & c) << 14, 128 & c && (c = Jd(h), p |= (127 & c) << 21, 128 & c && (c = Jd(h), m = 127 & c, 128 & c && (c = Jd(h), m |= (127 & c) << 7, 128 & c && (c = Jd(h), m |= (127 & c) << 14, 128 & c && (c = Jd(h), m |= (127 & c) << 21, 128 & c && (c = Jd(h), T = 127 & c, 128 & c && (c = Jd(h), T |= (127 & c) << 7))))))))), { low: p | m << 28, high: m >>> 4 | T << 24, unsigned: s }; + } + function I_(h, s) { + let c = s.low >>> 0, p = (s.low >>> 28 | s.high << 4) >>> 0, m = s.high >>> 24, T = m === 0 ? p === 0 ? c < 16384 ? c < 128 ? 1 : 2 : c < 1 << 21 ? 3 : 4 : p < 16384 ? p < 128 ? 5 : 6 : p < 1 << 21 ? 7 : 8 : m < 128 ? 9 : 10, D = Ek(h, T), k = h.bytes; + switch (T) { + case 10: + k[D + 9] = m >>> 7 & 1; + case 9: + k[D + 8] = T !== 9 ? 128 | m : 127 & m; + case 8: + k[D + 7] = T !== 8 ? p >>> 21 | 128 : p >>> 21 & 127; + case 7: + k[D + 6] = T !== 7 ? p >>> 14 | 128 : p >>> 14 & 127; + case 6: + k[D + 5] = T !== 6 ? p >>> 7 | 128 : p >>> 7 & 127; + case 5: + k[D + 4] = T !== 5 ? 128 | p : 127 & p; + case 4: + k[D + 3] = T !== 4 ? c >>> 21 | 128 : c >>> 21 & 127; + case 3: + k[D + 2] = T !== 3 ? c >>> 14 | 128 : c >>> 14 & 127; + case 2: + k[D + 1] = T !== 2 ? c >>> 7 | 128 : c >>> 7 & 127; + case 1: + k[D] = T !== 1 ? 128 | c : 127 & c; + } + } + const lre = {}, cre = {}, Ck = 4294967296, ure = Ck * Ck, hre = ure / 2, nV = fre(0, !0), dre = fre(0), QFe = vT(0, -2147483648, !1), eBe = vT(-1, 2147483647, !1), tBe = vT(-1, -1, !0); + function fre(h, s) { + let c, p, m; + return s ? (m = 0 <= (h >>>= 0) && h < 256) && (p = cre[h], p) ? p : (c = vT(h, 0, !0), m && (cre[h] = c), c) : (m = -128 <= (h |= 0) && h < 128) && (p = lre[h], p) ? p : (c = vT(h, h < 0 ? -1 : 0, !1), m && (lre[h] = c), c); + } + function vT(h, s, c) { + return { low: 0 | h, high: 0 | s, unsigned: !!c }; + } + function rBe(h, s) { + if (isNaN(h)) + return s ? nV : dre; + if (s) { + if (h < 0) + return nV; + if (h >= ure) + return tBe; + } else { + if (h <= -hre) + return QFe; + if (h + 1 >= hre) + return eBe; + } + return h < 0 ? s ? nV : dre : vT(h % Ck | 0, h / Ck | 0, s); + } + function pre(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + class iV extends Ra { + get connectionState() { + return this._connectionState; + } + set connectionState(s) { + if (this._connectionState === s) + return; + const c = this._connectionState; + this._connectionState = s, this.emit(Xh.CONNECTION_STATE_CHANGE, s, c); + } + get quality() { + return this._quality; + } + set quality(s) { + this._quality = s > 1 ? 1 : s < 0.1 ? 0.1 : s, this._qualityTimer && (window.clearTimeout(this._qualityTimer), this._qualityTimer = null), this._quality >= 1 || (this._qualityTimer = window.setTimeout(() => { + this.quality = this._quality / this._qualityRatio; + }, 6e4)); + } + constructor(s) { + var c; + super(), Z(this, "name", "AgoraRTCImageModeration"), Z(this, "_connectionState", gu.CONNECTING), Z(this, "_sequence", 0), Z(this, "_moderationStartTime", void 0), Z(this, "_workerConnection", void 0), Z(this, "_workerMessageLengthLimit", void 0), Z(this, "_qualityRatio", void 0), Z(this, "_connectInfo", void 0), Z(this, "_cancelTokenSource", Pc.CancelToken.source()), Z(this, "_retryConfig", void 0), Z(this, "_moderationInterval", void 0), Z(this, "_moderationTimer", null), Z(this, "_moderationMode", 1), Z(this, "_quality", 1), Z(this, "_qualityTimer", null), Z(this, "_ticket", void 0), Z(this, "_moderationIntervalMinimum", void 0), Z(this, "_uploadFailedNum", 0), Z(this, "_uploadNum", 0), Z(this, "_uploadTimer", null), Z(this, "_extraInfo", void 0), Z(this, "_vendor", ""), Z(this, "_encoder", new TextEncoder()), Z(this, "_moderationId", void 0), Z(this, "inspectImage", () => { + if (this.connectionState !== gu.CONNECTED) + throw new Je(_e.OPERATION_ABORTED, "image moderation service connection status is ".concat(this.connectionState)); + this._moderationTimer && (window.clearInterval(this._moderationTimer), this._moderationTimer = null), this._moderationTimer = window.setInterval(() => { + this.connectionState === gu.CONNECTED ? this.requestToInspectImage() : ie.debug("[".concat(this._moderationId, "] Moderation State is not connected , "), this.connectionState); + }, this._moderationInterval < this._moderationIntervalMinimum ? this._moderationIntervalMinimum : this._moderationInterval), this.requestToInspectImage(); + }), this._moderationId = ra(5, "image-moderation-"), this._workerMessageLengthLimit = Le("IMAGE_MODERATION_WORKER_MESSAGE_LENGTH_LIMIT"), this._moderationIntervalMinimum = Le("IMAGE_MODERATION_INTERVAL_MINIMUM"), this._moderationInterval = (c = s.interval) !== null && c !== void 0 ? c : 1e3, s.extraInfo && (this._extraInfo = this._encoder.encode(s.extraInfo)), s.vendor && (this._vendor = s.vendor), this._qualityRatio = Le("IMAGE_MODERATION_QUALITY_RATIO"), this._moderationStartTime = Number(Date.now()), this._workerConnection = new Nx("worker-" + this._moderationId, Oo), this.on(Xh.STATE_CHANGE, (p, m) => { + ie.debug("[".concat(this._moderationId, "] Moderation operation :").concat(n_[p], " ").concat(m || "")); + }), this.handleWorkerEvents(); + } + init(s, c) { + return ye(this, null, function* () { + this.emit(Xh.STATE_CHANGE, n_.CONNECT_AP), this._connectInfo = s; + const p = this._cancelTokenSource.token; + return this._retryConfig = c, new ot((m, T) => { + this.on(Xh.CONNECTION_STATE_CHANGE, (D, k) => { + D === gu.CONNECTED && m(); + }), this.requestAP(s, p, c).then((D) => { + this.connectWorker(D); + }).catch((D) => { + T(D); + }); + }); + }); + } + updateConfig(s) { + var c; + this._moderationInterval = (c = s.interval) !== null && c !== void 0 ? c : 1e3, s.extraInfo && (this._extraInfo = this._encoder.encode(s.extraInfo)), s.vendor && (this._vendor = s.vendor), ie.debug("[".concat(this._moderationId, "] updateConfig: ").concat(JSON.stringify(s))), this.connectionState === gu.CONNECTED && this.inspectImage(); + } + requestAP(s, c, p) { + return ye(this, null, function* () { + const m = Le("WEBCS_DOMAIN").map((N) => "https://".concat(N, "/api/v1")), T = yield function(N, U, V, G) { + let { appId: K, areaCode: q, cname: ue, sid: oe, token: he, uid: Ce } = U; + $C++; + const ke = "moderation_plugin", Ge = { service_name: ke, json_body: JSON.stringify({ appId: K, areaCode: q, cname: ue, command: "allocateEdge", requestId: $C, seq: $C, sid: oe, appToken: he, ts: Date.now(), uid: Ce + "" }) }; + let tt, Ye, et = N[0]; + return np(() => ye(this, null, function* () { + tt = Date.now(); + const ht = yield sm(et, { data: Ge, cancelToken: V, headers: { "X-Packet-Service-Type": "0", "X-Packet-URI": "61" }, params: { action: "wrtc_gateway" } }); + if (Ye = Date.now() - tt, ht.code !== 0) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "moderation plugin ap error, code" + ht.code, { retry: !0, responseTime: Ye }); + throw ie.error(Vt.toString()), Vt; + } + const st = JSON.parse(ht.json_body); + if (st.code !== 200) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "moderation plugin ap error, code: ".concat(st.code, ", reason: ").concat(st.reason), { code: st.code, responseTime: Ye }); + throw ie.error(Vt.toString()), Vt; + } + if (!st.servers || !Array.isArray(st.servers) || st.servers.length === 0) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "moderation plugin ap empty server", { code: st.code, responseTime: Ye }); + throw ie.error(Vt.toString()), Vt; + } + if (!st.servers.some((Vt) => !!Vt.wss)) { + const Vt = new Je(_e.UNEXPECTED_RESPONSE, "moderation plugin ap empty port", { code: st.code, responseTime: Ye }); + throw ie.error(Vt.toString()), Vt; + } + const Ut = Le("IMAGE_MODERATION_WORKER_HOST"); + return { addressList: st.servers.map((Vt) => { + let { address: fn, wss: Nn } = Vt; + if (fn && Nn) + return "wss://".concat(fn.replace(/\./g, "-"), ".").concat(Ut, ":").concat(Nn, "/moderation"); + }).filter((Vt) => !!Vt), workerToken: st.workerToken, vid: st.vid, ticket: st.appTicket, responseTime: Ye }; + }), (ht, st) => (vr.apworkerEvent(oe, { success: !0, sc: 200, serviceName: ke, responseDetail: JSON.stringify(ht.addressList), firstSuccess: st === 0, responseTime: Ye, serverIp: N[st % N.length] }), !1), (ht, st) => (vr.apworkerEvent(oe, { success: !1, sc: ht.data && ht.data.code || 200, serviceName: ke, responseTime: Ye, serverIp: N[st % N.length] }), !!(ht.code !== _e.OPERATION_ABORTED && ht.code !== _e.UNEXPECTED_RESPONSE || ht.data && ht.data.retry) && (et = N[(st + 1) % N.length], !0)), G); + }(m, s, c, p); + this.emit(Xh.STATE_CHANGE, n_.AP_CONNECTED); + const { addressList: D, ticket: k } = T; + return this._ticket = k, D; + }); + } + connectWorker(s) { + return ye(this, null, function* () { + this.emit(Xh.STATE_CHANGE, n_.CONNECT_WORKER), yield this._workerConnection.init(s, 1e4); + }); + } + handleWorkerEvents() { + this._workerConnection.on(Yr.CONNECTED, () => ye(this, null, function* () { + this.emit(Xh.STATE_CHANGE, n_.WORKER_CONNECTED, this._workerConnection.url), this.connectionState = gu.CONNECTED; + })), this._workerConnection.on(Yr.CLOSED, () => { + this.connectionState = gu.CLOSED; + }), this._workerConnection.on(Yr.FAILED, () => { + this.connectionState = gu.CLOSED; + }), this._workerConnection.on(Yr.RECONNECTING, () => { + this.connectionState = this.connectionState === gu.CONNECTED ? gu.RECONNECTING : gu.CONNECTING; + }), this._workerConnection.on(Yr.ON_MESSAGE, (s) => ye(this, null, function* () { + if (s.data instanceof ArrayBuffer) { + const c = XFe(new Uint8Array(s.data)); + Le("SHOW_IMAGE_MODERATION_WORKER_MESSAGE") && ie.debug("[".concat(this._moderationId, "] Response message for worker of image moderation "), JSON.stringify(c)), this._uploadNum++, c.code === void 0 || c.code === 0 || (this._uploadFailedNum++, ie.error("[".concat(this._moderationId, "] Error response from worke, code is ").concat(c.code, ", msg is ").concat(c.msg)), this._uploadTimer || (this._uploadTimer = window.setTimeout(() => { + vr.reportApiInvoke(this._connectInfo.sid || null, { name: Ao.IMAGE_MODERATION_UPLOAD, options: [this._uploadFailedNum, this._uploadNum, c.code], tag: Na.TRACER }).onError(new Je(_e.IMAGE_MODERATION_UPLOAD_FAILED, c.msg)), this._uploadTimer = null; + }, Le("IMAGE_MODERATION_UPLOAD_REPORT_INTERVAL")))); + } else + ie.error("[".concat(this._moderationId, "] Unexpected message type from worker")); + })), this._workerConnection.on(Yr.WILL_RECONNECT, (s, c, p) => { + s === "recover" && p(s), p("tryNext"); + }), this._workerConnection.on(Yr.REQUEST_NEW_URLS, (s, c) => { + this.requestAP(this._connectInfo, this._cancelTokenSource.token, this._retryConfig).then(s).catch(c); + }); + } + static intToLong(s) { + return { low: s |= 0, high: s >> 31, unsigned: s >= 0 }; + } + requestToInspectImage() { + return ye(this, null, function* () { + const s = pu(this, Xh.CLIENT_LOCAL_VIDEO_TRACK), c = { appId: this._connectInfo.appId, cname: this._connectInfo.cname, cid: this._connectInfo.cid, sid: this._connectInfo.sid, uid: this._connectInfo.uid, vid: this._connectInfo.vid }; + if (s) { + if (!s.isPlaying) + return void (Le("SHOW_IMAGE_MODERATION_WORKER_MESSAGE") && ie.debug("Only the track being played can be inspected")); + this._sequence++; + const p = yield this.generateRequestData(s, c); + this._workerConnection.sendMessage(p, !0, !0); + } else + Le("SHOW_IMAGE_MODERATION_WORKER_MESSAGE") && ie.debug("Only the track being published can be inspected"); + }); + } + generateRequestData(s, c) { + return ye(this, null, function* () { + let { appId: p, cname: m, cid: T, vid: D, sid: k, uid: N } = c; + const U = Date.now(), V = yield s.getCurrentFrameImage("image/jpeg", this.quality), G = yield gQ(V, p, m), K = this._sequence + "-" + T + "-" + N + "-" + U + "-" + ra(12, ""), q = { appId: p, cid: T, cname: m, deviceId: "", elapse: iV.intToLong(Number(U - this._moderationStartTime)), fileSize: V.buffer.byteLength, height: V.height, width: V.width, jpg: G, networkType: 6, osType: 7, requestId: K, sdkVersion: "4.20.2", sequence: this._sequence, sid: k, timestamp: rBe(U), uid: N, vid: D, service: this._moderationMode, ticket: this._ticket, callbackData: this._extraInfo, vendorConfigs: this._vendor }; + this._extraInfo === void 0 && delete q.callbackData; + const ue = YFe(q); + if (ue.byteLength < this._workerMessageLengthLimit) { + if (Le("SHOW_IMAGE_MODERATION_WORKER_MESSAGE")) { + const oe = function(he) { + for (var Ce = 1; Ce < arguments.length; Ce++) { + var ke = arguments[Ce] != null ? arguments[Ce] : {}; + Ce % 2 ? pre(Object(ke), !0).forEach(function(Ge) { + Z(he, Ge, ke[Ge]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(he, Object.getOwnPropertyDescriptors(ke)) : pre(Object(ke)).forEach(function(Ge) { + Object.defineProperty(he, Ge, Object.getOwnPropertyDescriptor(ke, Ge)); + }); + } + return he; + }({}, q); + delete oe.jpg, ie.debug("[".concat(this._moderationId, "] Request message for worker of image moderation service: "), JSON.stringify(oe)); + } + return ue; + } + { + const oe = this.quality * this._qualityRatio; + return this.quality = oe, yield this.generateRequestData(s, { appId: p, cname: m, cid: T, vid: D, sid: k, uid: N }); + } + }); + } + close() { + this._cancelTokenSource.cancel(), this._cancelTokenSource = Pc.CancelToken.source(), this._workerConnection && this._workerConnection.close(), this._moderationTimer && window.clearInterval(this._moderationTimer), this._moderationTimer = null, this._uploadTimer && window.clearTimeout(this._uploadTimer), this._uploadTimer = null, this.connectionState = gu.CLOSED, this.emit(Xh.STATE_CHANGE, n_.CLOSED); + } + } + function gre(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function vre(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? gre(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : gre(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + const nBe = Date.now(), iBe = 20, aV = /* @__PURE__ */ new Map(), Tk = /* @__PURE__ */ new Map(); + function mre(h) { + return ye(this, null, function* () { + const s = aV.get(h), c = Array.isArray(s) && s[s.length - 1], p = Tk.get(h); + if (!c) + return void (p.isSyncing = !1); + const m = { uid: c.uid, payload: c.payload }; + p.firstRecvTs === 0 && (p.firstRecvTs = c.recvTs, p.firstSendTs = c.sendTs); + const T = c.sendTs - p.firstSendTs, D = T - (Date.now() - p.firstRecvTs); + D > 0 && (p.firstRecvTs = Date.now() - T); + let k = c.mediaDelay + D; + k <= 0 ? (s.pop(), yre(c.context, m), k = 0) : k = Math.min(k, iBe), setTimeout(() => s.length && mre(h), k); + }); + } + function yre(h, s) { + h.safeEmit($n.STREAM_MESSAGE, s.uid, s.payload), h.onStreamMessage && h.onStreamMessage(s); + } + function aBe(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, c = arguments.length > 2 ? arguments[2] : void 0; + if (!h.syncWithAudio) + return yre(c, { uid: h.uid, payload: h.payload }); + const p = "".concat(c.id, "-").concat(h.uid), m = aV.get(p) || [], T = m.findIndex((U) => h.sendTs >= U.sendTs), D = vre(vre({}, h), {}, { context: c, mediaDelay: s, recvTs: Date.now() }); + T === -1 ? m.push(D) : m.splice(T, 0, D), aV.set(p, m); + let k = !1; + var N; + Tk.has(p) ? k = !((N = Tk.get(p)) === null || N === void 0 || !N.isSyncing) : Tk.set(p, { isSyncing: k, firstRecvTs: 0, firstSendTs: 0 }), k || mre(p); + } + const oBe = yi().name; + function sBe() { + return !function(h, s, c) { + const p = yi(); + if (p.os !== Zo.IOS || !p.osVersion) + return !1; + const m = p.osVersion.split("."); + return c ? s && Number(m[0]) === h && Number(m[1]) < s || Number(m[0]) < h : s ? Number(m[0]) === h && Number(m[1]) <= s || Number(m[0]) < h : Number(m[0]) <= h; + }(16, 0, !0) && !function(h, s, c) { + const p = yi(); + if (p.name !== xi.SAFARI || !p.osVersion) + return !1; + const m = p.version.split("."); + return c ? s && Number(m[0]) === h && Number(m[1]) < s || Number(m[0]) < h : s ? Number(m[0]) === h && Number(m[1]) <= s || Number(m[0]) < h : Number(m[0]) <= h; + }(16, 0, !0); + } + function _re(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function dp(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? _re(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : _re(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + Ss.setLogger(ie); + class zi extends Ra { + get connectionState() { + return this._gateway.state; + } + get remoteUsers() { + return this._users; + } + get localTracks() { + return this._p2pChannel.getAllTracks(!0); + } + get uid() { + return this._uid; + } + get channelName() { + return this._channelName; + } + get localDataChannels() { + return this._p2pChannel.getAllDataChannels(); + } + get mode() { + return this._config.mode; + } + get role() { + var s; + return ((s = this._config) === null || s === void 0 ? void 0 : s.role) || "audience"; + } + get codec() { + return this._config.codec; + } + get audioCodec() { + return this._config.audioCodec || "opus"; + } + get isStringUID() { + return !!this._joinInfo && !!this._joinInfo.stringUid; + } + get __className__() { + return "Client"; + } + constructor(s) { + let c; + if (super(), Z(this, "store", void 0), Z(this, "_uid", void 0), Z(this, "_channelName", void 0), Z(this, "_uintUid", void 0), Z(this, "_users", []), Z(this, "_config", void 0), Z(this, "_clientId", void 0), Z(this, "_appId", void 0), Z(this, "_sessionId", null), Z(this, "_key", void 0), Z(this, "_rtmConfig", {}), Z(this, "_joinInfo", void 0), Z(this, "_gateway", void 0), Z(this, "_statsCollector", void 0), Z(this, "_configDistribute", void 0), Z(this, "_leaveMutex", new Ss("client-leave")), Z(this, "_publishMutex", new Ss("client-publish")), Z(this, "_renewTokenMutex", new Ss("client-renewtoken")), Z(this, "_subscribeMutex", new Ss("client-subscribe")), Z(this, "_encryptionMode", "none"), Z(this, "_encryptionSecret", null), Z(this, "_encryptionSalt", null), Z(this, "_encryptDataStream", !1), Z(this, "_encryptDataStreamKey", null), Z(this, "_encryptDataStreamIv", null), Z(this, "_proxyServer", void 0), Z(this, "_turnServer", { servers: [], mode: "auto" }), Z(this, "_cloudProxyServerMode", "disabled"), Z(this, "_isDualStreamEnabled", !1), Z(this, "_defaultStreamFallbackType", void 0), Z(this, "_lowStreamParameter", void 0), Z(this, "_streamFallbackTypeCacheMap", /* @__PURE__ */ new Map()), Z(this, "_remoteStreamTypeCacheMap", /* @__PURE__ */ new Map()), Z(this, "_axiosCancelSource", Pc.CancelToken.source()), Z(this, "_audioVolumeIndicationInterval", void 0), Z(this, "_networkQualityInterval", void 0), Z(this, "_userOfflineTimeout", void 0), Z(this, "_streamRemovedTimeout", void 0), Z(this, "_injectStreamingClient", void 0), Z(this, "_liveTranscodeStreamingClient", void 0), Z(this, "_liveRawStreamingClient", void 0), Z(this, "_channelMediaRelayClient", void 0), Z(this, "_networkQualitySensitivity", "normal"), Z(this, "_p2pChannel", void 0), Z(this, "_useLocalAccessPoint", !1), Z(this, "_setLocalAPVersion", void 0), Z(this, "_joinAndNotLeaveYet", !1), Z(this, "_numberOfJoinCount", 0), Z(this, "_remoteDefaultVideoStreamType", void 0), Z(this, "_inspect", void 0), Z(this, "_moderation", void 0), Z(this, "_license", void 0), Z(this, "_pendingPublishedUsers", []), Z(this, "ntpAlignErrorCount", 0), Z(this, "remoteInboundOffset", 0), Z(this, "_handleLocalTrackEnable", (p, m, T) => { + this.publish(p, !1).then(m).catch(T); + }), Z(this, "_handleLocalTrackDisable", (p, m, T) => { + this.unpublish(p).then(m).catch(T); + }), Z(this, "_handleUserOnline", (p) => { + if (Le("BLOCK_LOCAL_CLIENT") && CS(p.uid, this.channelName)) + return void ie.debug("[".concat(p.uid, "] will be ignored in local")); + this.isStringUID && typeof p.uid != "string" && ie.error("[".concat(this._clientId, "] StringUID is Mixed with UintUID")); + const m = this._users.find((T) => T.uid === p.uid); + if (m) + m._trust_in_room_ = !0, m._is_pre_created && (m._is_pre_created = !1, this.safeEmit($n.USER_JOINED, m)); + else { + const T = new Ns(p.uid, p.uint_id || p.uid); + this._users.push(T), ie.debug("[".concat(this._clientId, "] user online"), p.uid), this.safeEmit($n.USER_JOINED, T); + } + }), Z(this, "_handleUserOffline", (p) => { + if (Le("BLOCK_LOCAL_CLIENT") && CS(p.uid, this.channelName)) + return; + const m = this._users.find((T) => T.uid === p.uid); + m && (this._handleRemoveStream(p), this._handleRemoveDataChannels(p), m._audio_pre_subscribed || m._video_pre_subscribed ? m._is_pre_created = !0 : tM(this._users, m), this._remoteStreamTypeCacheMap.delete(m.uid), this._streamFallbackTypeCacheMap.delete(m.uid), ie.debug("[".concat(this._clientId, "] user offline"), p.uid, "reason:", p.reason), this.safeEmit($n.USER_LEAVED, m, p.reason)); + }), Z(this, "_handleAddAudioOrVideoStream", (p, m, T, D, k, N, U) => { + if (Le("BLOCK_LOCAL_CLIENT") && CS(m, this.channelName)) + return; + const V = this._users.find((K) => K.uid === m); + if (!V) + return void ie.error("[".concat(this._clientId, "] can not find target user!(on_add_stream)")); + ie.debug("[".concat(this._clientId, "] stream added with uid ").concat(m, ", type ").concat(p)), this.store.subscribe(V.uid, p, void 0, void 0, void 0, Date.now()); + const G = p === "audio" ? V.hasAudio : V.hasVideo; + V._uintid || (V._uintid = k || m), p === "audio" ? V._trust_audio_stream_added_state_ = !0 : V._trust_video_stream_added_state_ = !0, p === "audio" ? (V._audio_added_ = !0, T !== void 0 && (V._audioSSRC = T), D !== void 0 && (V._cname = D), N && (V._audioOrtc = N)) : (V._video_added_ = !0, T !== void 0 && (V._videoSSRC = T), D !== void 0 && (V._cname = D), U !== void 0 && (V._rtxSsrcId = U), N && (V._videoOrtc = N)), (p === "audio" ? V.hasAudio : V.hasVideo) && !G && (ie.info("[".concat(this._clientId, "] remote user ").concat(V.uid, " published ").concat(p)), this.safeEmit($n.USER_PUBLISHED, V, p)), p === "video" ? vr.onGatewayStream(this._sessionId, Jo.ON_ADD_VIDEO_STREAM, _a.ON_ADD_VIDEO_STREAM, { peer: k || m, ssrc: V._videoSSRC }) : vr.onGatewayStream(this._sessionId, Jo.ON_ADD_AUDIO_STREAM, _a.ON_ADD_AUDIO_STREAM, { peer: k || m, ssrc: V._audioSSRC }), this._p2pChannel.remoteMediaSsrcChanged(V, p, T).then((K) => { + if (K && (ie.debug("[".concat(this._clientId, "] resubscribe ").concat(p, " for user ").concat(V.uid, " after rejoin because SSRC id changed.")), this._p2pChannel instanceof Ts)) + return this._p2pChannel.unsubscribe(V, p, !0).then(() => this._subscribe(V, p, !0).catch((q) => { + ie.error("[".concat(this._clientId, "] resubscribe error"), q.toString()); + })); + }), this._p2pChannel.hasPendingRemoteMedia(V, p) && (ie.debug("[".concat(this._clientId, "] resubscribe ").concat(p, " for user ").concat(V.uid, " after reconnect.")), this._subscribe(V, p, !0).catch((K) => { + ie.error("[".concat(this._clientId, "] resubscribe error"), K.toString()); + })); + }), Z(this, "_handleRemoveStream", (p) => { + if (Le("BLOCK_LOCAL_CLIENT") && CS(p.uid, this.channelName)) + return; + const m = this._users.find((D) => D.uid === p.uid); + if (!m) + return void ie.warning("[".concat(this._clientId, "] can not find target user!(on_remove_stream)")); + ie.debug("[".concat(this._clientId, "] stream removed with uid ").concat(p.uid)); + let T = () => { + }; + m.hasAudio && m.hasVideo ? T = () => { + ie.info("[".concat(this._clientId, "] remote user ").concat(m.uid, " unpublished audio track")), this.safeEmit($n.USER_UNPUBLISHED, m, "audio"), ie.info("[".concat(this._clientId, "] remote user ").concat(m.uid, " unpublished video track")), this.safeEmit($n.USER_UNPUBLISHED, m, "video"); + } : m.hasVideo ? T = () => { + ie.info("[".concat(this._clientId, "] remote user ").concat(m.uid, " unpublished video track")), this.safeEmit($n.USER_UNPUBLISHED, m, "video"); + } : m.hasAudio && (T = () => { + ie.info("[".concat(this._clientId, "] remote user ").concat(m.uid, " unpublished audio track")), this.safeEmit($n.USER_UNPUBLISHED, m, "audio"); + }), m._video_pre_subscribed || m._audio_pre_subscribed || (m._trust_audio_stream_added_state_ = !0, m._trust_video_stream_added_state_ = !0, m._audio_added_ = !1, m._video_added_ = !1, this._p2pChannel instanceof Ts && this._p2pChannel.unsubscribe(m).then((D) => { + if (D) + return this._gateway.unsubscribe(D, m.uid); + }), m._audioSSRC = void 0, m._videoSSRC = void 0, m._audioOrtc = void 0, m._videoOrtc = void 0, m._rtxSsrcId = void 0), vr.onGatewayStream(this._sessionId, Jo.ON_REMOVE_STREAM, _a.ON_REMOVE_STREAM, { peer: p.uint_id || p.uid }), T(); + }), Z(this, "_handleSetStreamLocalEnable", (p, m, T) => { + if (Le("BLOCK_LOCAL_CLIENT") && CS(m, this.channelName)) + return; + const D = this._users.find((U) => U.uid === m); + if (!D) + return void ie.error("[".concat(this._clientId, "] can not find target user!(disable_local)")); + ie.debug("[".concat(this._clientId, "] local ").concat(p, " ").concat(T ? "enabled" : "disabled", " with uid ").concat(m)); + const k = p === "audio" ? D.hasAudio : D.hasVideo; + if (p === "audio") { + D._trust_audio_enabled_state_ = !0; + const U = D._audio_enabled_; + if (D._audio_enabled_ = T, D._audio_enabled_ === U) + return; + { + const V = D._audio_enabled_ ? "enable-local-audio" : "disable-local-audio"; + ie.debug("[".concat(this._clientId, "] user-info-updated, uid: ").concat(m, ", msg: ").concat(V)), this.safeEmit($n.USER_INFO_UPDATED, m, V); + } + } else { + D._trust_video_enabled_state_ = !0; + const U = D._video_enabled_; + if (D._video_enabled_ = T, D._video_enabled_ === U) + return; + { + const V = D._video_enabled_ ? "enable-local-video" : "disable-local-video"; + ie.debug("[".concat(this._clientId, "] user-info-update, uid: ").concat(m, ", msg: ").concat(V)), this.safeEmit($n.USER_INFO_UPDATED, m, V); + } + } + const N = p === "audio" ? D.hasAudio : D.hasVideo; + return k !== N ? !k && N ? (ie.info("[".concat(this._clientId, "] remote user ").concat(m, " published ").concat(p)), void this.safeEmit($n.USER_PUBLISHED, D, p)) : (p === "video" && D._videoTrack && D._videoTrack._destroy(), p === "audio" && D._audioTrack, this._p2pChannel.muteRemote(D, p), ie.info("[".concat(this._clientId, "] remote user ").concat(m, " unpublished ").concat(p)), void this.safeEmit($n.USER_UNPUBLISHED, D, p)) : void 0; + }), Z(this, "_handleMuteStream", (p, m, T) => { + if (Le("BLOCK_LOCAL_CLIENT") && CS(p, this.channelName)) + return; + ie.debug("[".concat(this._clientId, "] receive mute message"), p, m, T); + const D = this._users.find((U) => U.uid === p); + if (!D) + return void ie.warning("[".concat(this._clientId, "] can not find remote user, ignore mute event, uid: ").concat(p)); + const k = m === "audio" ? D.hasAudio : D.hasVideo; + if (m === "audio") { + D._trust_audio_mute_state_ = !0; + const U = D._audio_muted_; + if (D._audio_muted_ = T, D._audio_muted_ === U) + return; + { + const V = D._audio_muted_ ? "mute-audio" : "unmute-audio"; + ie.debug("[".concat(this._clientId, "] user-info-update, uid: ").concat(p, ", msg: ").concat(V)), this.safeEmit($n.USER_INFO_UPDATED, p, V); + } + } else { + D._trust_video_mute_state_ = !0; + const U = D._video_muted_; + if (D._video_muted_ = T, D._video_muted_ === U) + return; + { + const V = D._video_muted_ ? "mute-video" : "unmute-video"; + ie.debug("[".concat(this._clientId, "] user-info-update, uid: ").concat(p, ", msg: ").concat(V)), this.safeEmit($n.USER_INFO_UPDATED, p, V); + } + } + const N = m === "audio" ? D.hasAudio : D.hasVideo; + if (k !== N) { + if (!k && N) + return (m === "audio" ? D._audioSSRC : D._videoSSRC) ? (ie.info("[".concat(this._clientId, "] remote user ").concat(p, " published ").concat(m)), void this.safeEmit($n.USER_PUBLISHED, D, m)) : void ie.warning("[".concat(this._clientId, "] remote user ").concat(p, " receive ").concat(m, " unmute message before add stream message, ").concat(m, " SSRC doesn't exist yet.")); + m === "video" && D._videoTrack && !D._video_pre_subscribed && D._videoTrack._destroy(), m === "audio" && D._audioTrack, this._p2pChannel.muteRemote(D, m), ie.info("[".concat(this._clientId, "] remote user ").concat(p, " unpublished ").concat(m)), this.safeEmit($n.USER_UNPUBLISHED, D, m); + } + }), Z(this, "_handleP2PLost", (p) => ye(this, null, function* () { + ie.debug("[".concat(this._clientId, "] receive p2p lost"), p), parseInt(p.p2pid, 10) === this.store.p2pId ? yield this._p2pChannel.requestReconnect() : ie.warning("[".concat(this._clientId, "] P2PLost stream not found"), p); + })), Z(this, "_handleTokenWillExpire", () => { + ie.debug("[".concat(this._clientId, "] received message onTokenPrivilegeWillExpire")), this.safeEmit($n.ON_TOKEN_PRIVILEGE_WILL_EXPIRE); + }), Z(this, "_handleBeforeUnload", (p) => { + p.type === "beforeunload" && p.returnValue !== void 0 && p.returnValue !== "" || (this.leave(), ie.info("[".concat(this._clientId, "] auto leave onbeforeunload or pagehide"))); + }), Z(this, "_handleUpdateNetworkQuality", () => { + if (this._networkQualitySensitivity === "normal") + return; + if (navigator && navigator.onLine !== void 0 && !navigator.onLine) + return void this.safeEmit($n.NETWORK_QUALITY, { downlinkNetworkQuality: 6, uplinkNetworkQuality: 6 }); + const p = { downlinkNetworkQuality: 0, uplinkNetworkQuality: 0 }; + p.uplinkNetworkQuality = this._p2pChannel.getUplinkNetworkQuality(), p.downlinkNetworkQuality = this._p2pChannel.getDownlinkNetworkQuality(), this.safeEmit($n.NETWORK_QUALITY, p); + }), Z(this, "_handleP2PAddAudioOrVideoStream", (p, m, T, D) => { + const k = this._users.find((U) => U.uid === m); + if (!k) + return void ie.error("[".concat(this._clientId, "] can not find target user!(on_add_stream)")); + ie.debug("[".concat(this._clientId, "] stream added with uid ").concat(m, ", type ").concat(p)), this.store.subscribe(k.uid, p, void 0, void 0, void 0, Date.now()); + const N = p === "audio" ? k.hasAudio : k.hasVideo; + p === "audio" ? k._trust_audio_stream_added_state_ = !0 : k._trust_video_stream_added_state_ = !0, p === "audio" ? (k._audio_added_ = !0, T !== void 0 && (k._audioSSRC = T), D !== void 0 && (k._audioMid = D)) : (k._video_added_ = !0, T !== void 0 && (k._videoSSRC = T), D !== void 0 && (k._videoMid = D)), (p === "audio" ? k.hasAudio : k.hasVideo) && !N && (ie.info("[".concat(this._clientId, "] remote user ").concat(k.uid, " published ").concat(p)), this.safeEmit($n.USER_PUBLISHED, k, p)), this._p2pChannel.hasPendingRemoteMedia(k, p) && (ie.debug("[".concat(this._clientId, "] resubscribe ").concat(p, " for user ").concat(k.uid, " after reconnect.")), this._subscribe(k, p, !0).catch((U) => { + ie.error("[".concat(this._clientId, "] resubscribe error"), U.toString()); + })); + }), this._config = s, this._clientId = ra(5, "client-"), this.store = new gPe(s.codec, s.audioCodec, s.mode, this._clientId), this.store.clientCreated(), s.proxyServer && this.setProxyServer(s.proxyServer, !0), s.turnServer && this.setTurnServer(s.turnServer, !0), ie.info("[".concat(this._clientId, "] Initializing AgoraRTC client v").concat(Gh, " build: ").concat(Kj, ", mode: ").concat(this.mode, ", codec: ").concat(this.codec)), s.clientRoleOptions) + try { + KZ(s.clientRoleOptions), c = Object.assign({}, s.clientRoleOptions); + } catch (p) { + ie.warning("[".concat(this._clientId, "] ").concat(p.toString())); + } + this._statsCollector = new pA(this.store), this._statsCollector.onStatsException = (p, m, T) => { + ie.debug("[".concat(this._clientId, "] receive exception msg, code: ").concat(p, ", msg: ").concat(m, ", uid: ").concat(T)), this.safeEmit($n.EXCEPTION, { code: p, msg: m, uid: T }); + }, this._statsCollector.onUploadPublishDuration = (p, m, T, D) => { + const k = this._users.find((N) => N.uid === p); + k && vr.peerPublishStatus(this._sessionId, { subscribeElapse: D, audioPublishDuration: m, videoPublishDuration: T, peer: k._uintid }); + }, this.store.useDataChannel = _i().supportDataChannel && Le("SIGNAL_CHANNEL"), this.store.useP2P = s.mode === "p2p", this._gateway = new QPe(this.store, { clientId: this._clientId, mode: this.mode, codec: this.codec, websocketRetryConfig: s.websocketRetryConfig || Oo, httpRetryConfig: s.httpRetryConfig || Oo, forceWaitGatewayResponse: s.forceWaitGatewayResponse === void 0 || s.forceWaitGatewayResponse, statsCollector: this._statsCollector, role: s.role, clientRoleOptions: c }), this._configDistribute = new lNe(), this.store.useP2P ? (this._p2pChannel = new ts(this.store, this._statsCollector), this._handleP2PEvents()) : this._p2pChannel = new Ts(this.store, this._statsCollector), this._handleP2PChannelEvents(), this._handleGatewayEvents(), this._handleGatewaySignalEvents(); + } + joinMeta(D, k, N, U, V) { + return ye(this, arguments, function* (s, c, p, m, T) { + let G = !(arguments.length > 5 && arguments[5] !== void 0) || arguments[5], K = arguments.length > 6 && arguments[6] !== void 0 && arguments[6]; + Gi("JOIN_GATEWAY_USE_443PORT_ONLY", G), Gi("JOIN_GATEWAY_USE_DUAL_DOMAIN", K); + const q = this._gateway.signal.websocket; + return q instanceof Px && (q.use443PortOnly = G, q.tryDoubleDomain = K), function(Ce, ke, Ge) { + return ye(this, arguments, function* (ue, oe, he) { + KO.get(ue) || KO.set(ue, []), ZO.get(ue) || ZO.set(ue, oe), gg.get(ue) || gg.set(ue, 0); + const tt = KO.get(ue), Ye = ZO.get(ue); + if (!tt || !Ye) + throw new Error("concurrent: deferQueue or maxConcurrency is null"); + if (gg.get(ue) === Ye) { + const Vt = bx(); + tt.push(Vt), yield Vt.promise; + } + gg.set(ue, gg.get(ue) + 1); + for (var et = arguments.length, ht = new Array(et > 3 ? et - 3 : 0), st = 3; st < et; st++) + ht[st - 3] = arguments[st]; + const Ut = yield he(...ht); + return gg.set(ue, gg.get(ue) - 1), gg.get(ue) === Ye - 1 && tt.length > 0 && (tt[0].resolve(), tt.shift()), gg.get(ue) === 0 && (KO.set(ue, []), ZO.set(ue, 0), gg.set(ue, 0)), Ut; + }); + }("client.join", Le("JOIN_MAX_CONCURRENCY"), this.join.bind(this), s, c, p, m, T); + }); + } + join(s, c, p, m, T) { + return ye(this, null, function* () { + const D = ++this._numberOfJoinCount; + this.store.joinStart(), m && (this.store.uid = m); + const k = pPe(), N = Uq() ? window.isSecureContext : "Browser Not Support"; + if (!Uq() && !k || !window.isSecureContext) { + const oe = "The website must be running in a secure context (About secure context: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts ), otherwise the media collection will be restricted by the browser"; + ie.warning(oe); + } + const U = xj(); + this.connectionState === "DISCONNECTED" && (this.store.avoidJoinStart = Math.round(Date.now()), ie.debug("[".concat(this._clientId, "] set avoidJoinStart to ").concat(this.store.avoidJoinStart))); + const V = vr.reportApiInvoke(U, { name: Ao.JOIN, options: [s, c, p, m], states: { isHttps: k, isSecureContext: N }, tag: Na.TRACER }); + vr.setAppId(s); + try { + if (!p && p !== null) + throw new Je(_e.INVALID_PARAMS, "Invalid token: ".concat(p, ". If you don not use token, set it to null")); + p && Gs(p, "token", 1, 2047), Gs(s, "appid", 1, 2047), Qj(c), m && e5(m), T && Gs(T, "optionalInfo", 1, 2047); + } catch (oe) { + throw V.onError(oe), oe; + } + if (ie.info("[".concat(this._clientId, "] start join channel ").concat(c, ", join number: ").concat(D)), this._leaveMutex.isLocked && (ie.debug("[".concat(this._clientId, "] join: waiting leave operation")), (yield this._leaveMutex.lock())(), ie.debug("[".concat(this._clientId, "] join: continue"))), this._joinAndNotLeaveYet = !0, this.connectionState !== "DISCONNECTED") { + const oe = new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] Client already in connecting/connected state")); + throw V.onError(oe), oe; + } + this._sessionId || (this._sessionId = U, this.store.sessionId = this._sessionId), this._gateway.state = "CONNECTING"; + const G = dp(dp({}, this._rtmConfig), {}, { clientId: this._clientId, appId: s, sid: this._sessionId, cname: c, uid: typeof m != "string" ? m : null, turnServer: this._turnServer, proxyServer: this._proxyServer, token: p || s, cloudProxyServer: this._cloudProxyServerMode, optionalInfo: T, license: this._license, useLocalAccessPoint: this._useLocalAccessPoint }, this._remoteDefaultVideoStreamType !== void 0 && { defaultVideoStream: this._remoteDefaultVideoStreamType }); + if (this._useLocalAccessPoint && (G.setLocalAPVersion = this._setLocalAPVersion), typeof m == "string" && (G.stringUid = m, this._uintUid ? (G.uid = this._uintUid, this._uintUid = void 0) : G.uid = 0), this._encryptionMode !== "none" && this._encryptionSecret) { + if (G.aesmode = this._encryptionMode, G.aespassword = yield Mke(this._encryptionSecret), !this._joinAndNotLeaveYet) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] Client already left")); + this._encryptionSalt && (G.aessalt = this._encryptionSalt); + } + if (this._encryptDataStream && (this._encryptionMode === "aes-128-gcm2" || this._encryptionMode === "aes-256-gcm2")) + if (this._encryptionSalt && this._encryptionSecret) + if (window.crypto.subtle) { + const oe = new TextEncoder(), he = Le("USE_PURE_ENCRYPTION_MASTER_KEY") ? oe.encode(G.appId + this._encryptionSecret + this._encryptionSecret) : oe.encode(G.appId + G.cname + this._encryptionSecret); + this._encryptDataStreamIv = yield function(Ce, ke, Ge) { + return ye(this, null, function* () { + const tt = yield window.crypto.subtle.importKey("raw", ke, "PBKDF2", !1, ["deriveBits", "deriveKey"]), Ye = Ce === "aes-128-gcm2" ? 128 : 256, et = yield window.crypto.subtle.deriveBits({ name: "PBKDF2", iterations: zq, hash: "SHA-256", salt: Ge }, tt, Ye + vPe); + return new Uint8Array(et).subarray(Ye / 8); + }); + }(this._encryptionMode, he, Tx(this._encryptionSalt)), this._encryptDataStreamKey = yield function(Ce, ke, Ge) { + return ye(this, null, function* () { + const tt = yield window.crypto.subtle.importKey("raw", ke, "PBKDF2", !1, ["deriveBits", "deriveKey"]), Ye = Ce === "aes-128-gcm2" ? 128 : 256; + return yield window.crypto.subtle.deriveKey({ name: "PBKDF2", iterations: zq, hash: "SHA-256", salt: Ge }, tt, { name: "AES-GCM", length: Ye }, !0, ["encrypt", "decrypt"]); + }); + }(this._encryptionMode, he, Tx(this._encryptionSalt)); + } else + N ? ie.warning("[".concat(this._clientId, "] encrypt datastream must be running in a secure context, fallback to plain data stream")) : ie.warning("[".concat(this._clientId, "] current browser do not support WebCrypto ,fallback to plain data stream")), this._encryptDataStream = !1; + else + this._encryptDataStream = !1, ie.debug("[".concat(this._clientId, "] no salt / secret, cannot support encrypt data stream, fallback to plain data stream")); + this._startSession(this._sessionId, { channel: c, appId: s, stringUid: G.stringUid }); + const K = this._sessionId; + setTimeout(() => { + this.connectionState === "CONNECTING" && K === this._sessionId && vr.joinChannelTimeout(this._sessionId, 5); + }, 5e3); + try { + var q; + let oe; + const he = G.cloudProxyServer; + if (rr(q = ["proxy3", "proxy4", "proxy5"]).call(q, he)) { + const Ye = Le("PROXY_SERVER_TYPE3"); + Array.isArray(Ye) ? G.proxyServer = Ye[0] : G.proxyServer = Ye; + } + if (vr.setProxyServer(G.proxyServer), ie.setProxyServer(G.proxyServer), this.store.requestAPStart(), G.stringUid && !G.uid) { + let Ye; + [Ye, oe] = yield ot.all([MJ(G.stringUid, G, this._axiosCancelSource.token, this._config.httpRetryConfig || Oo, this.store), OJ(G, this._axiosCancelSource.token, this._config.httpRetryConfig || Oo, !0, this.store)]), ie.debug("[".concat(this._clientId, "] getUserAccount Success ").concat(G.stringUid, " => ").concat(Ye)), G.uid = Ye, oe.gatewayInfo.uid = Ye, oe.gatewayInfo.res.uid = Ye; + } else + oe = yield OJ(G, this._axiosCancelSource.token, this._config.httpRetryConfig || Oo, !0, this.store); + if (!this._joinAndNotLeaveYet) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] Client already left")); + this.store.requestAPEnd(), setTimeout(() => { + this._configDistribute.startGetConfigDistribute(G, this._axiosCancelSource.token), this._configDistribute.on(kx.UPDATE_BITRATE_LIMIT, (Ye) => { + this._p2pChannel.updateBitrateLimit(Ye); + }); + }, 0), this._key = p || s; + const Ce = oe.gatewayInfo, ke = G.uid ? G.uid : Ce.uid; + this._joinInfo = dp(dp({}, G), {}, { cid: Ce.cid, uid: ke, vid: Ce.vid, apResponse: Ce.res, uni_lbs_ip: Ce.uni_lbs_ip, gatewayAddrs: Ce.gatewayAddrs }), this.store.intUid = ke; + const Ge = yield this._joinGateway(); + if (!this._joinAndNotLeaveYet) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] Client already left")); + V.onSuccess(Ge), this._appId = s, this._channelName = G.cname, this._uid = Ge, this.store.uid = Ge, setTimeout(() => { + this._networkQualityInterval && window.clearInterval(this._networkQualityInterval), this._networkQualityInterval = window.setInterval(this._handleUpdateNetworkQuality, 2e3), window.addEventListener(ks() ? "beforeunload" : "pagehide", this._handleBeforeUnload); + }, 0); + const tt = G.stringUid ? "string uid: ".concat(G.stringUid, ",uid: ").concat(G.uid) : "uid: ".concat(this._uid); + return ie.info("[".concat(this._clientId, "] Joining channel success: channel: ").concat(c, ",").concat(tt)), setTimeout(() => { + ie.startUpload(); + }, 5e3), this.store.joinEnd(), ue = this, rr(e_).call(e_, ue) || e_.push(ue), Ge; + } catch (oe) { + const he = Array.isArray(oe) ? oe[0] : oe; + throw he && he.code === _e.OPERATION_ABORTED ? ie.warning("[".concat(this._clientId, "] join number: ").concat(D, ", Joining channel failed, rollback"), he) : ie.error("[".concat(this._clientId, "] join number: ").concat(D, ", Joining channel failed, rollback"), he), he.code !== _e.OPERATION_ABORTED && this._numberOfJoinCount === D && (this._gateway.state = "DISCONNECTED", this._reset()), V.onError(he), he; + } + var ue; + }); + } + _joinGateway() { + if (!this._joinInfo || !this._key) + throw new Je(_e.INVALID_OPERATION); + return this._gateway.join(this._joinInfo, this._key, !(this._joinInfo.cloudProxyServer !== "disabled" || this._joinInfo.proxyServer || !Le("JOIN_WITH_FALLBACK_SIGNAL_PROXY"))).then((s) => s).catch((s) => { + if (s.code === _e.INIT_WEBSOCKET_TIMEOUT) + return this._gateway.leave(!0, jn.FALLBACK), s; + if (s.code === _e.INIT_DATACHANNEL_TIMEOUT) + return this._gateway.leave(!0, jn.FALLBACK), s; + throw s; + }).then((s) => { + if (s instanceof Je) { + if (s.code === _e.INIT_WEBSOCKET_TIMEOUT) { + if (ie.info("[".concat(this._clientId, "] join timeout, fallback to proxy")), !this._joinInfo || !this._key) + throw new Je(_e.INVALID_OPERATION); + this._joinInfo.cloudProxyServer = "fallback", this._cloudProxyServerMode = "fallback", this.store.cloudProxyServerMode = "fallback"; + const c = Le("PROXY_SERVER_TYPE3"); + if (Array.isArray(c)) + if (this._joinInfo.apUrl) { + const m = /^https?:\/\/(.+?)(\/.*)?$/.exec(this._joinInfo.apUrl)[1].split("."), T = m.slice(m.length - 2).join("."); + c.forEach((D) => { + this._joinInfo && rr(D).call(D, T) && (this._joinInfo.proxyServer = D); + }), this._joinInfo.proxyServer || (this._joinInfo.proxyServer = c[0]); + } else + this._joinInfo.proxyServer = c[0]; + else + this._joinInfo.proxyServer = c; + const p = Le("LOG_UPLOAD_SERVER").match(/.+:(\d{1,5})$/); + return p && p[1] && p[1] !== "443" && ie.setProxyServer(this._joinInfo.proxyServer), Le("STATS_COLLECTOR_PORT").toString() !== "443" && vr.setProxyServer(this._joinInfo.proxyServer), vr.reportApiInvoke(this._sessionId, { name: Ao.JOIN_FALLBACK_TO_PROXY, options: [this._joinInfo.proxyServer], tag: Na.TRACER }).onSuccess(), this.safeEmit($n.JOIN_FALLBACK_TO_PROXY, this._joinInfo.proxyServer), Le("JOIN_WITH_FALLBACK_MEDIA_PROXY_FORCE") && this._joinInfo.turnServer.servers.forEach((m) => { + "forceturn" in m && (m.forceturn = !0); + }), this._gateway.join(this._joinInfo, this._key); + } + if (ie.info("[".concat(this._clientId, "] join by datachannel timeout, fallback to websocket")), !this._joinInfo || !this._key) + throw new Je(_e.INVALID_OPERATION); + return vr.reportApiInvoke(this._sessionId, { name: Ao.DATACHANNEL_FAILBACK, options: [this.store.clientId], tag: Na.TRACER }).onSuccess(), this._joinGateway(); + } + return s; + }).then((s) => s); + } + leave() { + return ye(this, null, function* () { + ie.info("[".concat(this._clientId, "] Leaving channel")), window.removeEventListener(ks() ? "beforeunload" : "pagehide", this._handleBeforeUnload), this._reset(), function(c) { + const p = e_.indexOf(c); + p !== -1 && e_.splice(p, 1); + }(this); + const s = yield this._leaveMutex.lock(); + if (this.connectionState === "DISCONNECTED") + return ie.info("[".concat(this._clientId, "] Leaving channel repeated, success")), void s(); + yield this._gateway.leave(this.connectionState !== "CONNECTED"), ie.info("[".concat(this._clientId, "] Leaving channel success")), this._joinAndNotLeaveYet = !1, this.store.resetJoinChannelServiceRecords(), s(); + }); + } + publish(c) { + return ye(this, arguments, function* (s) { + let p = !(arguments.length > 1 && arguments[1] !== void 0) || arguments[1]; + if (!Array.isArray(s)) { + if (!(s instanceof Xs)) + return this._publishDataChannel(s); + s = [s]; + } + if (s.length === 0) + throw new Je(_e.INVALID_PARAMS, "param list is empty"); + const m = s; + if (this._gateway.role === "audience") + throw new Je(_e.INVALID_OPERATION, "audience can not publish stream"); + for (const D of m) { + if (!(D instanceof Xs)) + throw new Je(_e.INVALID_PARAMS, "parameter is not local track"); + if (!D._enabled && p) + throw new Je(_e.TRACK_IS_DISABLED, "can not publish a disabled track: ".concat(D.getTrackId())); + } + ie.info("[".concat(this._clientId, "] Publishing tracks, id ").concat(m.map((D) => "".concat(D.getTrackId(), " ")))); + const T = yield this._publishMutex.lock(); + yield this._configDistribute.awaitConfigDistributeComplete(), p && m.forEach((D) => { + const k = this._configDistribute.getBitrateLimit(); + D instanceof In && k && D.setBitrateLimit(k.uplink); + }); + try { + yield this._publishHighStream(m), ie.info("[".concat(this._clientId, "] Publish success, id ").concat(m.map((D) => "".concat(D.getTrackId(), " ")))); + } catch (D) { + throw ie.error("[".concat(this._clientId, "] publish error"), D.toString()), D; + } finally { + T(); + } + }); + } + _publishDataChannel(s) { + return ye(this, null, function* () { + Wi(s.id, "id", 0, 65535, !0), Qv(s.ordered, "ordered"), Gs(s.metadata, "metadata", 0, 512), ie.info("[".concat(this._clientId, "] Publishing datachannels, id ").concat(s.id)); + const c = yield this._publishMutex.lock(); + try { + if (this._p2pChannel.getAllDataChannels().findIndex((m) => m.id === s.id) !== -1) + throw new Je(_e.INVALID_PARAMS, "Invalid id: ".concat(s.id, ". If you want to republish the datachannel, unpublish first")); + if (!this._joinInfo || this._uid === void 0) + throw new Je(_e.INVALID_OPERATION, "Can't publish datachannel, haven't joined yet!"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish datachannel in ".concat(this.connectionState, " state")); + if (this._turnServer.mode === "auto" && Le("FORCE_TURN") && !Le("TURN_ENABLE_TCP") && !Le("TURN_ENABLE_UDP")) + throw new Je(_e.UNEXPECTED_ERROR, "force TURN With No TURN Configuration"); + const p = new see(s); + if (yield this._p2pChannel.publishDataChannel([p]), !this._p2pChannel.isP2PDisconnected()) { + if (typeof p._originDataChannelId != "number") + throw ie.error("[".concat(this._clientId, "] can not publish with mediaType datachannel, cannot get RTCDatachannel id")), new Je(_e.CREATE_DATACHANNEL_ERROR); + try { + const m = { streamId: s.id, ordered: s.ordered, maxRetransmits: Le("DATASTREAM_MAX_RETRANSMITS"), metadata: s.metadata, channelId: p._originDataChannelId }; + yield this._gateway.publishDataChannel(this._uid, m, !0), yield p._waitTillOpen(); + } catch (m) { + if (m.code !== _e.DISCONNECT_P2P) + throw m; + } + } + return ie.info("[".concat(this._clientId, "] Publish dataChannels success, id ").concat(p.id)), p; + } catch (p) { + throw ie.error("[".concat(this._clientId, "] publish datachannels error"), p.toString()), p; + } finally { + c(); + } + }); + } + unpublish(s) { + return ye(this, null, function* () { + if (!this._joinInfo || this._uid === void 0) + throw new Je(_e.INVALID_OPERATION, "Can't unpublish stream, haven't joined yet!"); + let c = []; + if (s) + if (Array.isArray(s)) + c = s; + else { + if (!(s instanceof Xs)) + return this._unpublishDataChannel([s]); + c = [s]; + } + else + this.store.useP2P || (yield this._unpublishDataChannel()), c = this._p2pChannel.getAllTracks(!0); + ie.info("[".concat(this._clientId, "] Unpublish tracks, tracks ").concat(c.map((m) => "".concat(m.getTrackId(), " ")), " ")); + const p = yield this._publishMutex.lock(); + try { + if (this._p2pChannel instanceof ts) { + const m = yield this._p2pChannel.unpublish(c); + m && (yield this._gateway.sendExtensionMessage(Za.UNPUBLISH, { unpubMsg: m }, !0)); + } else { + const m = yield this._p2pChannel.unpublish(c); + m && (yield this._gateway.unpublish(m, this._uid)), ie.info("[".concat(this._clientId, "] Unpublish success,tracks ").concat(c.map((T) => "".concat(T.getTrackId())))); + } + } catch (m) { + throw ie.error("[".concat(this._clientId, "] unpublish error"), m.toString()), m; + } finally { + p && p(); + } + }); + } + _unpublishDataChannel(s) { + return ye(this, null, function* () { + s !== void 0 && s.length !== 0 || (s = this._p2pChannel.getAllDataChannels()), ie.info("[".concat(this._clientId, "] Unpublish datachannels, datachannels ").concat(s.map((p) => "".concat(p.id, " ")), " ")); + const c = yield this._publishMutex.lock(); + try { + const p = yield this._p2pChannel.unpublishDataChannel(s); + p && (yield this._gateway.unpublishDataChannel(p)), ie.info("[".concat(this._clientId, "] Unpublish dataChannel success,dataChannel ").concat(s.map((m) => "".concat(m.id)))); + } catch (p) { + throw ie.error("[".concat(this._clientId, "] unpublish dataChannel error"), p.toString()), p; + } finally { + c && c(); + } + }); + } + subscribe(s, c, p) { + return ye(this, null, function* () { + return c === "datachannel" ? this._subscribeDataChannel(s, p) : this._subscribe(s, c); + }); + } + presubscribe(s, c) { + return ye(this, null, function* () { + if (qo(c, "mediaType", ["audio", "video"]), this._p2pChannel instanceof ts) + throw new Je(_e.INVALID_OPERATION, "can't presub at p2p mode"); + if (!this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "can't presub when not join"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can't presub in ".concat(this.connectionState, " state")); + const p = c === pr.AUDIO, m = c === pr.VIDEO, T = yield this._subscribeMutex.lock(); + try { + const { ssrcId: D, ortc: k, rtxSsrcId: N, cname: U, uint_id: V } = yield this._gateway.presubscribe(s, c, !0); + if (D == null) + throw new Je(_e.UNEXPECTED_RESPONSE, "no ssrc id"); + let G = this._users.find((q) => q.uid === s); + G || (G = new Ns(s, V || s), G._is_pre_created = !0, this._users.push(G)), U && (G._cname = U), G._uintid || (G._uintid = V || s), p && (G._audioSSRC = D, G._audio_pre_subscribed = !0, k && (G._audioOrtc = k)), m && (G._videoSSRC = D, G._video_pre_subscribed = !0, k && (G._videoOrtc = k), N != null && (G._rtxSsrcId = N)), ie.info("[".concat(this._clientId, "] presub succeed ssrc: ").concat(D)), yield this._p2pChannel.subscribe(G, c, D, N, k); + const K = p ? G._audioTrack : G._videoTrack; + if (!K) + throw new Je(_e.UNEXPECTED_ERROR, "can not find remote track in user"); + return p && (G._trust_audio_stream_added_state_ = !0, G._audio_added_ = !0), m && (G._trust_video_stream_added_state_ = !0, G._video_added_ = !0), K; + } catch (D) { + throw ie.error("[".concat(this._clientId, "] presub user ").concat(s, " error"), D), D; + } finally { + T(); + } + }); + } + _subscribeDataChannel(s, c) { + return ye(this, null, function* () { + var p; + if (Wi(c, "channelId", 0, 65535, !0), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't subscribe datachannel, not joined"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "Can't subscribe datachannel in ".concat(this.connectionState, " state")); + if (!this._users.find((k) => k === s)) + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, ", this user is not in the channel")), new Je(_e.INVALID_REMOTE_USER, "user is not in the channel"); + if (!s.hasAudio && !s.hasVideo && s._dataChannels.length === 0) + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, ", user is not published")), new Je(_e.INVALID_REMOTE_USER, "user is not published"); + const m = (p = s._dataChannels) === null || p === void 0 ? void 0 : p.find((k) => k.id === c); + if (!m) + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, " with mediaType datachannel, remote datachannel is not published")), new Je(_e.REMOTE_USER_IS_NOT_PUBLISHED); + const T = yield this._subscribeMutex.lock(); + ie.info("[".concat(this._clientId, "] subscribe user ").concat(s.uid, ", mediaType: datachannel")); + try { + const k = yield this._p2pChannel.subscribeDataChannel(s, [m]); + if (k && rr(k).call(k, m.id)) + try { + var D; + if (typeof m._originDataChannelId != "number") + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, " with mediaType datachannel, cannot get RTCDatachannel")), new Je(_e.CREATE_DATACHANNEL_ERROR); + const N = { id: m.id, datachannelId: m._originDataChannelId, ordered: m.ordered, maxRetransmits: m.maxRetransmits, metadata: (D = m.metadata) !== null && D !== void 0 ? D : "" }; + yield this._gateway.subscribeDataChannel(s.uid, N, !0), yield m._waitTillOpen(); + } catch (N) { + if ((N == null ? void 0 : N.code) !== _e.WS_ABORT) + throw yield this._p2pChannel.unsubscribeDataChannel(s, [m]), N; + yield this._p2pChannel.unsubscribeDataChannel(s, [m]), this._p2pChannel.setPendingRemoteDataChannel(s, m.id); + } + return ie.info("[".concat(this._clientId, "] subscribe success user ").concat(s.uid, ", mediaType: datachannel")), m; + } finally { + T(); + } + }); + } + _p2pSubscribe(s, c, p) { + return ye(this, null, function* () { + if (qo(c, "mediaType", ["audio", "video"]), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't subscribe stream, not joined"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "Can't subscribe stream in ".concat(this.connectionState, " state")); + if (!this._users.find((T) => T === s)) { + const T = new Je(_e.INVALID_REMOTE_USER, "user is not in the channel"); + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, ", this user is not in the channel")), T; + } + if (!s.hasAudio && !s.hasVideo) { + const T = new Je(_e.INVALID_REMOTE_USER, "user is not published"); + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, ", user is not published")), T; + } + if (!p && (c === "audio" && !s.hasAudio || c === "video" && !s.hasVideo)) { + const T = new Je(_e.REMOTE_USER_IS_NOT_PUBLISHED); + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, " with mediaType ").concat(c, ", remote track is not published")), T; + } + const m = yield this._subscribeMutex.lock(); + ie.info("[".concat(this._clientId, "] subscribe user ").concat(s.uid, ", mediaType: ").concat(c)); + try { + if (yield this._p2pChannel.hasRemoteMediaWithLock(s, c)) + yield this._p2pChannel.unmuteRemote(s, c); + else + try { + const D = c === "audio" ? s._audioSSRC : s._videoSSRC, k = c === "audio" ? s._audioMid : s._videoMid; + this.store.subscribe(s.uid, c, Date.now()), this._p2pChannel instanceof ts && (yield this._p2pChannel.subscribe(s, c, D, k)); + } catch (D) { + throw D; + } + ie.info("[".concat(this._clientId, "] subscribe success user ").concat(s.uid, ", mediaType: ").concat(c)), this._defaultStreamFallbackType && this.setStreamFallbackOption(s.uid, this._defaultStreamFallbackType).catch((D) => { + ie.warning("[".concat(this._clientId, "] auto set fallback failed"), D); + }); + const T = c === "audio" ? s._audioTrack : s._videoTrack; + if (!T) + throw new Je(_e.UNEXPECTED_ERROR, "can not find remote track in user object"); + return T; + } catch (T) { + throw ie.error("[".concat(this._clientId, "] subscribe user ").concat(s.uid, " error"), T), T; + } finally { + m(); + } + }); + } + _subscribe(s, c, p) { + return ye(this, null, function* () { + if (this._p2pChannel instanceof ts) + return this._p2pSubscribe(s, c); + if (qo(c, "mediaType", ["audio", "video"]), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't subscribe stream, not joined"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "Can't subscribe stream in ".concat(this.connectionState, " state")); + if (!this._users.find((U) => U === s)) { + const U = new Je(_e.INVALID_REMOTE_USER, "user is not in the channel"); + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, ", this user is not in the channel")), U; + } + if (!s.hasAudio && !s.hasVideo) { + const U = new Je(_e.INVALID_REMOTE_USER, "user is not published"); + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, ", user is not published")), U; + } + if (!(p || (c !== "audio" || s.hasAudio && s._audioSSRC !== void 0) && (c !== "video" || s.hasVideo && s._videoSSRC !== void 0))) { + const U = new Je(_e.REMOTE_USER_IS_NOT_PUBLISHED); + throw ie.error("[".concat(this._clientId, "] can not subscribe ").concat(s.uid, " with mediaType ").concat(c, ", remote track is not published")), U; + } + let m = c === "audio" ? s._audioSSRC : s._videoSSRC, T = c === "audio" ? s._audioOrtc : s._videoOrtc, D = c === "video" ? s._rtxSsrcId : void 0, k = { stream_type: c === "audio" ? pr.AUDIO : pr.VIDEO, ssrcId: m }; + const N = yield this._subscribeMutex.lock(); + ie.info("[".concat(this._clientId, "] subscribe user ").concat(s.uid, ", mediaType: ").concat(c)); + try { + if (yield this._p2pChannel.hasRemoteMediaWithLock(s, c)) + yield this._p2pChannel.unmuteRemote(s, c); + else + try { + const V = c === "audio" ? s._audioSSRC : s._videoSSRC; + V !== void 0 && V !== m && (m = V, T = c === "audio" ? s._audioOrtc : s._videoOrtc, D = c === "video" ? s._rtxSsrcId : void 0, k = { stream_type: c === "audio" ? pr.AUDIO : pr.VIDEO, ssrcId: m }), Ks.markSubscribeStart(this.store.clientId, m), this.store.subscribe(s.uid, c, Date.now()), yield this._p2pChannel.subscribe(s, c, m, D, T); + try { + yield this._gateway.subscribe(s.uid, k, !0); + } catch (G) { + if ((G == null ? void 0 : G.code) !== _e.WS_ABORT) + throw yield this._p2pChannel.unsubscribe(s, c), G; + yield this._p2pChannel.unsubscribe(s, c, !0), this._p2pChannel.setPendingRemoteMedia(s, c); + } + this.store.subscribe(s.uid, c, void 0, Date.now()), this._p2pChannel.reportSubscribeEvent(!0, null, s, c); + } catch (V) { + throw this._p2pChannel.reportSubscribeEvent(!1, V == null ? void 0 : V.code, s, c), V; + } + ie.info("[".concat(this._clientId, "] subscribe success user ").concat(s.uid, ", mediaType: ").concat(c)), this._defaultStreamFallbackType && this.setStreamFallbackOption(s.uid, this._defaultStreamFallbackType).catch((V) => { + ie.warning("[".concat(this._clientId, "] auto set fallback failed"), V); + }); + const U = c === "audio" ? s._audioTrack : s._videoTrack; + if (!U) + throw new Je(_e.UNEXPECTED_ERROR, "can not find remote track in user object"); + return U; + } catch (U) { + throw ie.error("[".concat(this._clientId, "] subscribe user ").concat(s.uid, " error"), U), U; + } finally { + N(); + } + }); + } + massSubscribe(s) { + return ye(this, null, function* () { + if (em(s, "subscribeList"), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't subscribe stream, not joined"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "Can't subscribe stream in ".concat(this.connectionState, " state")); + const c = Date.now(), p = /* @__PURE__ */ new Map(), m = yield this._subscribeMutex.lock(); + ie.info("[".concat(this._clientId, "]start massSubscribe user ").concat(s.map((N) => { + let { user: U, mediaType: V } = N; + return "user: ".concat(U == null ? void 0 : U.uid, ", mediaType: ").concat(V); + }).join("; "))); + const T = (s = [...s]).map((N) => { + let { user: U, mediaType: V } = N; + return { user: U, mediaType: V }; + }), D = yield this._p2pChannel.globalLock(); + try { + var k; + for (let U = s.length - 1; U >= 0; U--) { + const V = s[U], { user: G, mediaType: K } = V; + if (qo(K, "mediaType", ["audio", "video"]), !G) { + const oe = new Je(_e.INVALID_PARAMS, "user property does not exist in subscribeList item"); + throw ie.error("[".concat(this._clientId, "] user property does not exist in subscribeList item")), oe; + } + if (!this._users.find((oe) => oe === G)) { + const oe = new Je(_e.INVALID_REMOTE_USER, "user is not in the channel"); + ie.error("[".concat(this._clientId, "] can not massSubscribe ").concat(G.uid, ", this user is not in the channel")), T[U].error = oe, s.splice(U, 1); + continue; + } + if (K === "audio" && (!G.hasAudio || G._audioSSRC === void 0) || K === "video" && (!G.hasVideo || G._videoSSRC === void 0)) { + const oe = new Je(_e.REMOTE_USER_IS_NOT_PUBLISHED); + ie.error("[".concat(this._clientId, "] can not subscribe ").concat(G.uid, " with mediaType ").concat(K, ", remote user is not published")), T[U].error = oe, s.splice(U, 1); + continue; + } + const q = Bo.Video | Bo.LwoVideo, ue = p.get(G); + if (ue) { + if (K === "video" ? ue & q : ue & Bo.Audio) { + s.splice(U, 1), ie.warning("[".concat(this._clientId, "] repeat massSubscribe user:").concat(G.uid, ", mediaType:").concat(K, " twice")); + continue; + } + p.set(G, ue | (K === "video" ? q : Bo.Audio)); + } else + p.set(G, K === "video" ? q : Bo.Audio); + } + for (let U = s.length - 1; U >= 0; U--) { + const V = s[U], { user: G, mediaType: K } = V, q = Bo.Video | Bo.LwoVideo; + if (this._p2pChannel.hasRemoteMedia(G, K)) { + yield this._p2pChannel.unmuteRemoteNoLock(G, K); + const ue = p.get(G); + p.set(G, K === "video" ? ue ^ q : ue ^ Bo.Audio), s.splice(U, 1); + } + } + this.store.massSubscribe(s.map((U) => ({ userId: U.user.uid, type: U.mediaType })), c); + const N = rm(k = Array.from(p.entries())).call(k, (U, V) => { + let [G, K] = V; + if (K === 0) + return U; + const q = { stream_id: G.uid, stream_type: K }; + return K & Bo.Audio && (q.audio_ssrc = G._audioSSRC), K & Bo.Video && (q.video_ssrc = G._videoSSRC), U.push(q), U; + }, []); + try { + s.length > 0 && (yield this._p2pChannel.massSubscribeNoLock(s.map((V) => { + let { user: G, mediaType: K } = V; + return { user: G, mediaType: K, ssrcId: K === pr.VIDEO ? G._videoSSRC : G._audioSSRC, rtxSsrcId: K === pr.VIDEO ? G._rtxSsrcId : void 0 }; + }))); + const U = /* @__PURE__ */ new Map(); + if (N.length > 0) { + const V = yield this._gateway.subscribeAll(N, !0); + ((V == null ? void 0 : V.users) || []).forEach((G) => { + let { stream_id: K, video_error_code: q, audio_error_code: ue, error_code: oe } = G; + (q || ue || oe) && U.set(K, { video_error_code: q, audio_error_code: ue, error_code: oe }); + }); + } + if (Array.from(U.entries()).length > 0) { + const V = []; + Array.from(U.entries()).forEach((G) => { + let [K, q] = G; + const ue = this.remoteUsers.find((oe) => oe.uid === K); + if (ue) { + let oe; + q.error_code || q.video_error_code && q.audio_error_code ? oe = void 0 : q.video_error_code ? oe = pr.VIDEO : q.audio_error_code && (oe = pr.AUDIO), V.push({ user: ue, mediaType: oe }); + } + }), V.length > 0 && (yield this._p2pChannel.massUnsubscribeNoLock(V)); + } + for (const V of T) { + const G = U.get(V.user.uid); + if (G) { + const K = G.error_code || V.mediaType === "audio" && G.audio_error_code || V.mediaType === "video" && G.video_error_code; + if (K) { + const q = wS(K); + ie.error("user:".concat(V.user.uid, " mediaType:").concat(V.mediaType, " has massSubscribe error ").concat(q.desc)), V.error = new Je(_e.SUBSCRIBE_FAILED, "code ".concat(K, ": ").concat(q.desc)); + } + } + V.error || (V.mediaType === "video" ? V.track = V.user.videoTrack : V.track = V.user.audioTrack); + } + return this.store.massSubscribe(T.filter((V) => !V.error).map((V) => ({ userId: V.user.uid, type: V.mediaType })), void 0, Date.now()), T.forEach((V) => { + var G; + vr.subscribe(this.store.sessionId, { succ: !!V.error, ec: ((G = V.error) === null || G === void 0 ? void 0 : G.code) || null, video: V.mediaType === pr.VIDEO, audio: V.mediaType === pr.AUDIO, peerid: V.user.uid, subscribeRequestid: V.mediaType === pr.VIDEO ? V.user._videoSSRC : V.user._audioSSRC, p2pid: this.store.p2pId, eventElapse: Math.floor(performance.now() - c) }, !0); + }), ie.info("[".concat(this._clientId, "] massSubscribe success ").concat(s.map((V) => { + let { user: G, mediaType: K } = V; + return "user: ".concat(G == null ? void 0 : G.uid, ", mediaType: ").concat(K); + }).join("; "))), T; + } catch (U) { + throw yield this._p2pChannel.massUnsubscribeNoLock(s), U; + } + } finally { + D(), m(); + } + }); + } + unsubscribe(s, c, p) { + return ye(this, null, function* () { + if (c || this.store.useP2P) { + if (c === "datachannel") + return this._unsubscribeDataChannel(s, p); + } else + yield this._unsubscribeDataChannel(s, p); + if (c && qo(c, "mediaType", ["audio", "video"]), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't unsubscribe stream, haven't joined yet!"); + if (!this._users.find((T) => T === s)) { + const T = new Je(_e.INVALID_REMOTE_USER, "user is not in the channel"); + throw ie.error("[".concat(this._clientId, "] can not unsubscribe ").concat(s.uid, ", user is not in the channel")), T; + } + ie.info("[".concat(this._clientId, "] unsubscribe uid: ").concat(s.uid, ", mediaType: ").concat(c)); + const m = yield this._subscribeMutex.lock(); + try { + if (this._p2pChannel instanceof ts) + yield this._p2pChannel.unsubscribe(s, c); + else { + const T = yield this._p2pChannel.unsubscribe(s, c); + T && (yield this._gateway.unsubscribe(T, s.uid)), c && c !== "audio" || (s._audio_pre_subscribed = !1), c && c !== "video" || (s._video_pre_subscribed = !1), s._is_pre_created && tM(this._users, s), ie.info("[".concat(this._clientId, "] unsubscribe success uid: ").concat(s.uid, ", mediaType: ").concat(c)); + } + } catch (T) { + if (T.code === _e.DISCONNECT_P2P) + return void ie.warning("disconnecting p2p, abort unsubscribe request."); + throw ie.error("[".concat(this._clientId, "] unsubscribe user ").concat(s.uid, " error"), T.toString()), T; + } finally { + m(); + } + }); + } + _unsubscribeDataChannel(s, c) { + return ye(this, null, function* () { + if (c && Wi(c, "id", 0, 65535, !0), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't unsubscribe datachannel, haven't joined yet!"); + if (!this._users.find((m) => m === s)) { + const m = new Je(_e.INVALID_REMOTE_USER, "user is not in the channel"); + throw ie.error("[".concat(this._clientId, "] can not unsubscribe ").concat(s.uid, ", user is not in the channel")), m; + } + let p; + if (typeof c == "number") { + const m = s._dataChannels.find((T) => T.id === c); + m && (p = [m]); + } else + p = s._dataChannels; + if (p === void 0) { + const m = new Je(_e.REMOTE_USER_IS_NOT_PUBLISHED); + throw ie.error("[".concat(this._clientId, "] can not unsubscribe ").concat(s.uid, " with channelId ").concat(c, ", remote datachannel is not published")), m; + } + ie.info("[".concat(this._clientId, "] unsubscribe uid: ").concat(s.uid, ", mediaType: datachannel, ids: ").concat(p.map((m) => m.id))); + try { + const m = yield this._p2pChannel.unsubscribeDataChannel(s, p); + m && (yield this._gateway.unsubscribeDataChannel(m, s.uid)), ie.info("[".concat(this._clientId, "] unsubscribe datachannel success uid: ").concat(s.uid, ", mediaType: datachannel, ids: ").concat(m)); + } catch (m) { + if (m.code === _e.DISCONNECT_P2P) + return void ie.warning("disconnecting p2p, abort unsubscribe request."); + throw ie.error("[".concat(this._clientId, "] unsubscribe user ").concat(s.uid, " error"), m.toString()), m; + } + }); + } + massUnsubscribe(s) { + return ye(this, null, function* () { + if (em(s, "unsubscribeList"), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't unsubscribeAll stream, haven't joined yet!"); + ie.info("[".concat(this._clientId, "] start massUnsubscribe ").concat(s.map((p) => { + let { user: m, mediaType: T } = p; + return "user: ".concat(m == null ? void 0 : m.uid, ", mediaType: ").concat(T, ";"); + }).join())), s = [...s]; + const c = /* @__PURE__ */ new Map(); + for (let p = s.length - 1; p >= 0; p--) { + const { user: m, mediaType: T } = s[p]; + if (!m) { + const k = new Je(_e.INVALID_PARAMS, "user property does not exist in unsubscribeList item"); + throw ie.error("[".concat(this._clientId, "] user property does not exist in unsubscribeList item")), k; + } + if (qo(T, "mediaType", ["video", "audio", void 0]), !this._users.find((k) => k === m)) { + ie.warning("[".concat(this._clientId, "] can not unsubscribe ").concat(m.uid, ", user is not in the channel")), s.splice(p, 1); + continue; + } + const D = Bo.Video | Bo.LwoVideo; + if (c.has(m)) { + const k = c.get(m); + let N; + switch (T) { + case "video": + N = k & D; + break; + case "audio": + N = k & Bo.Audio; + break; + default: + N = k & (Bo.Audio | D); + } + if (N) { + ie.warning("[".concat(this._clientId, "] repeat massUnsubscribe user:").concat(m.uid, ",mediaType:").concat(T, " twice.")), s.splice(p, 1); + continue; + } + T ? T === "audio" ? c.set(m, k | Bo.Audio) : T === "video" && c.set(m, k | D) : c.set(m, k | Bo.Audio | D); + } else + T ? T === "audio" ? c.set(m, Bo.Audio) : T === "video" && c.set(m, D) : c.set(m, Bo.Audio | D); + } + try { + const p = yield this._p2pChannel.massUnsubscribe(s); + p && (yield this._gateway.massUnsubscribe(p)), ie.info("[".concat(this._clientId, "] massUnsubscribe success ").concat(s.map((m) => { + let { user: T, mediaType: D } = m; + return "user: ".concat(T == null ? void 0 : T.uid, ", mediaType: ").concat(D, ";"); + }).join())); + } catch (p) { + if (p.code === _e.DISCONNECT_P2P) + return void ie.warning("[".concat(this._clientId, "] disconnecting p2p, abort unsubscribe request.")); + throw ie.error("[".concat(this._clientId, "] massUnsubscribe error"), p.toString()), p; + } + }); + } + setLowStreamParameter(s) { + return ye(this, null, function* () { + (function(p) { + if (!p) + throw new mt(_e.INVALID_PARAMS); + za(p.width) || Ej(p.width, "streamParameter.width"), za(p.height) || Ej(p.height, "streamParameter.height"), za(p.framerate) || Ej(p.framerate, "streamParameter.framerate"), za(p.bitrate) || Wi(p.bitrate, "streamParameter.bitrate"); + })(s), (!s.width && s.height || s.width && !s.height) && ie.warning("[".concat(this._clientId, "] The width and height parameters take effect only when both are set")), ie.info("[".concat(this._clientId, "] set low stream parameter to"), JSON.stringify(s)); + const c = this._configDistribute.getLowStreamConfigDistribute(); + if (c && c.bitrate && s.bitrate && c.bitrate < s.bitrate && (s.bitrate = c.bitrate), this._lowStreamParameter = s, this._isDualStreamEnabled) + return this._p2pChannel.updateVideoStreamParameter(s, Mt.LocalVideoLowTrack); + }); + } + enableDualStream() { + return ye(this, null, function* () { + if (!_i().supportDualStream) + throw vr.streamSwitch(this._sessionId, { lts: Date.now(), isdual: !0, succ: !1 }), new Je(_e.NOT_SUPPORTED, "Your browser is not support dual stream"); + if (this._isDualStreamEnabled) + throw new Je(_e.INVALID_OPERATION, "Dual stream is already enabled"); + if (this._p2pChannel.canPublishLowStream()) + try { + yield this._publishLowStream(); + } catch (s) { + throw vr.streamSwitch(this._sessionId, { lts: Date.now(), isdual: !0, succ: !1 }), s; + } + this._isDualStreamEnabled = !0, vr.streamSwitch(this._sessionId, { lts: Date.now(), isdual: !0, succ: !0 }), ie.info("[".concat(this._clientId, "] enable dual stream")); + }); + } + disableDualStream() { + return ye(this, null, function* () { + if (this._isDualStreamEnabled) { + if (!this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "Can't publish stream, haven't joined yet!"); + if (this._p2pChannel.getLocalMedia(Mt.LocalVideoLowTrack)) + try { + const s = yield this._p2pChannel.unpublishLowStream(); + s && (yield this._gateway.unpublish(s, this._joinInfo.stringUid || this._joinInfo.uid)); + } catch (s) { + throw vr.streamSwitch(this._sessionId, { lts: Date.now(), isdual: !1, succ: !1 }), s; + } + this._isDualStreamEnabled = !1, vr.streamSwitch(this._sessionId, { lts: Date.now(), isdual: !1, succ: !0 }), ie.info("[".concat(this._clientId, "] disable dual stream")); + } + }); + } + setClientRole(s, c) { + return ye(this, null, function* () { + if (function(p) { + qo(p, "role", ["audience", "host"]); + }(s), c && KZ(c), this.mode === "rtc" || this.mode === "p2p") + throw ie.warning("[".concat(this._clientId, "]").concat(this.mode, " mode can not use setClientRole")), new Je(_e.INVALID_OPERATION, "".concat(this.mode, " mode can not use setClientRole")); + if (c && c.level && s === "host") + throw new Je(_e.INVALID_OPERATION, "host mode can not set audience latency level"); + if (s === "audience" && this._p2pChannel.hasLocalMedia()) + throw new Je(_e.INVALID_OPERATION, "can not set client role to audience when publishing stream"); + yield this._gateway.setClientRole(s, c), this._config.role = s, ie.info("[".concat(this._clientId, "] set client role to ").concat(s, ", level: ").concat(c && c.level)); + }); + } + getRemoteInboundOffset() { + var s; + const c = (s = this._p2pChannel.getStats()) === null || s === void 0 ? void 0 : s.audioSend[0]; + if (!c || !c.timestamp) + return 0; + const p = c.timestamp - Date.now(); + return Math.abs(p) > 1e3 + c.rttMs + 100 ? this.ntpAlignErrorCount += 1 : this.ntpAlignErrorCount = 0, this.ntpAlignErrorCount >= 3 ? p : 0; + } + getNtpWallTimeInMs() { + return document.visibilityState === "visible" && (this.remoteInboundOffset = this.getRemoteInboundOffset()), this.remoteInboundOffset + Date.now() + this._gateway.ntpOffset; + } + setProxyServer(s, c) { + if (Gs(s, "proxyServer"), !c) { + if (this.connectionState !== "DISCONNECTED") + throw new Je(_e.INVALID_OPERATION, "Set proxy server before join channel"); + if (this._cloudProxyServerMode !== "disabled" || this._useLocalAccessPoint) + throw new Je(_e.INVALID_OPERATION, "You have already set the proxy"); + } + this._proxyServer = s, vr.setProxyServer(this._proxyServer), ie.setProxyServer(this._proxyServer), ie.info("[".concat(this._clientId, "] Set proxy server ").concat(c ? "by initialize call" : "", " success.")); + } + setTurnServer(s, c) { + if (Array.isArray(s) || (s = [s]), !c) { + if (this.connectionState !== "DISCONNECTED") + throw new Je(_e.INVALID_OPERATION, "Set turn server before join channel"); + if (this._cloudProxyServerMode !== "disabled" || this._useLocalAccessPoint) + throw new Je(_e.INVALID_OPERATION, "You have already set the proxy"); + } + if (OC(s)) + return this._turnServer = { servers: s, mode: "original-manual" }, void ie.info("[".concat(this._clientId, "] Set original turnserver ").concat(c ? "by initialize call" : "", " success: ").concat(s.map((p) => p.urls).join(","), ".")); + s.forEach((p) => XZ(p)), this._turnServer = { servers: s, mode: "manual" }, ie.info("[".concat(this._clientId, "] Set turnserver ").concat(c ? "by initialize call" : "", " success.")); + } + setLicense(s) { + if (this.connectionState !== "DISCONNECTED") + throw new Je(_e.INVALID_OPERATION, "you should set license before join channel"); + if (Gs(s, "license", 32, 32), !/^[A-Za-z\d]+$/.test(s)) + throw new Je(_e.INVALID_PARAMS, "license should only contains characters from A-Z a-z 0-9"); + this._license = s, ie.info("[".concat(this._clientId, "] set license success"), s); + } + startProxyServer(s) { + if (this.connectionState !== "DISCONNECTED") + throw new Je(_e.INVALID_OPERATION, "Start proxy server before join channel"); + if (this._proxyServer || this._turnServer.mode === "manual" || this._useLocalAccessPoint) + throw new Je(_e.INVALID_OPERATION, "You have already set the proxy"); + const c = [3, 4, 5]; + let p; + switch (s === void 0 && (s = 3), s) { + case 1: + case 2: + throw new Je(_e.NOT_SUPPORTED, "proxy mode 1/2 has been deprecated and not supported."); + case 3: + p = "proxy3"; + break; + case 4: + p = "proxy4"; + break; + case 5: + p = "proxy5"; + break; + default: + throw new Je(_e.INVALID_PARAMS, "proxy server mode must be ".concat(c.join("|"))); + } + this._cloudProxyServerMode = p, this.store.cloudProxyServerMode = p, ie.info("[".concat(this._clientId, "] set cloud proxy server mode to"), this._cloudProxyServerMode); + } + stopProxyServer() { + if (this.connectionState !== "DISCONNECTED") + throw new Je(_e.INVALID_OPERATION, "Stop proxy server after leave channel"); + vr.setProxyServer(), ie.setProxyServer(), this._cloudProxyServerMode = "disabled", this.store.cloudProxyServerMode = "disabled", ie.info("[".concat(this._clientId, "] set cloud proxy server mode to"), this._cloudProxyServerMode), this._proxyServer = void 0, this._turnServer = { mode: "auto", servers: [] }; + } + setLocalAccessPointsV2(s) { + if (!s.accessPoints) + throw new Je(_e.INVALID_PARAMS, "accessPoints is required."); + em(s.accessPoints.serverList, "accessPoints.serverList"), Gs(s.accessPoints.domain, "accessPoints.domain"); + const c = (q, ue) => { + Wi(q, ue, 0, 65535, !0); + }; + let p = 443; + if (s.accessPoints.port && (c(s.accessPoints.port, "accessPoints.port"), p = s.accessPoints.port), this._proxyServer || this._cloudProxyServerMode !== "disabled") + throw new Je(_e.INVALID_OPERATION, "set local access point failed, You have already set the cloud proxy"); + Le("CLOSE_AFB_FOR_LOCAL_AP") && (Gi("JOIN_WITH_FALLBACK_SIGNAL_PROXY", !1), Gi("JOIN_WITH_FALLBACK_MEDIA_PROXY", !1)); + const m = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/, T = s.accessPoints.domain, D = s.accessPoints.serverList.map((q) => m.test(q) ? "".concat(q.replace(/\./g, "-"), ".").concat(T) : q), k = D.map((q) => "".concat(q, ":").concat(p)); + this._useLocalAccessPoint = !0, this._setLocalAPVersion = 2, Gi("WEBCS_DOMAIN", k), Gi("WEBCS_DOMAIN_BACKUP_LIST", k), Gi("GATEWAY_DOMAINS", [T]), s.report && s.report.hostname && Array.isArray(s.report.hostname) && s.report.hostname.length ? (em(s.report.hostname, "report.hostname"), Gi("EVENT_REPORT_DOMAIN", s.report.hostname[0]), Gi("EVENT_REPORT_BACKUP_DOMAIN", s.report.hostname[1] || s.report.hostname[0])) : (Gi("EVENT_REPORT_DOMAIN", D[0]), Gi("EVENT_REPORT_BACKUP_DOMAIN", D[1] || D[0])); + let N = 6443; + s.report && s.report.port && (c(s.report.port, "report.port"), N = s.report.port), Gi("STATS_COLLECTOR_PORT", N), s.report ? Gi("ENABLE_EVENT_REPORT", !0) : Gi("ENABLE_EVENT_REPORT", !1); + let U = ""; + s.log && s.log.hostname && Array.isArray(s.log.hostname) && s.log.hostname.length ? (em(s.log.hostname, "log.hostname"), U = s.log.hostname[0]) : U = D[0]; + let V = 6444; + s.log && s.log.port && (c(s.log.port, "log.port"), V = s.log.port), Gi("LOG_UPLOAD_SERVER", "".concat(U, ":").concat(V)); + let G = []; + s.cds && s.cds.hostname && Array.isArray(s.cds.hostname) && s.cds.hostname.length ? (em(s.cds.hostname, "cds.hostname"), G = s.cds.hostname) : G = D; + let K = 443; + s.cds && s.cds.port && (c(s.cds.port, "cds.port"), K = s.cds.port), Gi("CDS_AP", G.map((q) => "".concat(q, ":").concat(K))), s.cds ? Gi("ENABLE_CONFIG_DISTRIBUTE", !0) : Gi("ENABLE_CONFIG_DISTRIBUTE", !1), ie.info("set local access point v2 success"); + } + setLocalAccessPoints(s, c) { + if (em(s, "serverList"), Gs(c, "domain"), this._proxyServer || this._cloudProxyServerMode !== "disabled") + throw new Je(_e.INVALID_OPERATION, "set local access point failed, You have already set the cloud proxy"); + const p = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; + s = s.map((m) => p.test(m) ? "".concat(m.replace(/\./g, "-"), ".").concat(c) : m), this._useLocalAccessPoint = !0, this._setLocalAPVersion = 1, Gi("WEBCS_DOMAIN", s), Gi("WEBCS_DOMAIN_BACKUP_LIST", s), Gi("GATEWAY_DOMAINS", [c]), Gi("EVENT_REPORT_DOMAIN", s[0]), Gi("EVENT_REPORT_BACKUP_DOMAIN", s[1] || s[0]), Gi("LOG_UPLOAD_SERVER", "".concat(s[0], ":6444")), ie.info("[".concat(this._clientId, "] set local access point success")); + } + setRemoteDefaultVideoStreamType(s) { + return ye(this, null, function* () { + if (qo(s, "streamType", [0, 1]), this._remoteDefaultVideoStreamType = s, this._joinInfo) + try { + yield this._gateway.setDefaultRemoteVideoStreamType(s), this._joinInfo.defaultVideoStream = this._remoteDefaultVideoStreamType; + } catch (c) { + throw ie.error("[".concat(this._clientId, "] set default remote video stream type error"), c.toString()), c; + } + else + ie.debug("[".concat(this._clientId, "] haven't joined yet, cache remoteDefaultVideoStreamType ").concat(s)); + }); + } + setRemoteVideoStreamType(s, c) { + return ye(this, null, function* () { + qo(c, "streamType", [0, 1]); + try { + yield this._gateway.setRemoteVideoStreamType(s, c), setTimeout(() => { + const p = this._users.find((m) => m.uid === s); + p && p.videoTrack && p.videoTrack.updateMediaStreamTrackResolution(); + }, 2e3); + } catch (p) { + throw ie.error("[".concat(this._clientId, "] set remote video stream type error"), p.toString()), p; + } + ie.info("[".concat(this._clientId, "] set remote ").concat(s, " video stream type to ").concat(c)), this._remoteStreamTypeCacheMap.set(s, c); + }); + } + setStreamFallbackOption(s, c) { + return ye(this, null, function* () { + qo(c, "fallbackType", [0, 1, 2]); + try { + yield this._gateway.setStreamFallbackOption(s, c); + } catch (p) { + throw ie.error("[".concat(this._clientId, "] set stream fallback option"), p.toString()), p; + } + ie.info("[".concat(this._clientId, "] set remote ").concat(s, " stream fallback type to ").concat(c)), this._streamFallbackTypeCacheMap.set(s, c); + }); + } + setEncryptionConfig(s, c, p, m) { + (function(D) { + qo(D, "encryptionMode", ["aes-128-xts", "aes-256-xts", "aes-128-ecb", "sm4-128-ecb", "aes-128-gcm", "aes-256-gcm", "aes-128-gcm2", "aes-256-gcm2", "none"]); + })(s), Gs(c, "secret"); + const T = ["aes-128-gcm2", "aes-256-gcm2"]; + if (rr(T).call(T, s)) { + if (!p || !(p instanceof Uint8Array && p.length === 32)) + throw new Je(_e.INVALID_PARAMS, "salt must be an Uint8Array and exactly equal to 32 bytes"); + } else if (p) + throw new Je(_e.INVALID_PARAMS, "current encrypt mode does not need salt"); + if (m) { + if (Qv(m, "encryptDataStream"), !rr(T).call(T, s)) + throw new Je(_e.INVALID_PARAMS, "current encrypt mode does not support data stream"); + this._encryptDataStream = !0; + } + new RegExp(`^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*,.<>?/:;'"|{}\\[\\]])(?=.{8,})`).test(c) || ie.warning(`The secret is not strong: + The secret must contain at least 1 lowercase alphabetical character, + The secret must contain at least 1 uppercase alphabetical character, + The secret must contain at least 1 numeric character, + The secret must contain at least one special character, + The secret must be eight characters or longer. + `), this._encryptionMode = s, this._encryptionSecret = c, p && (this._encryptionSalt = PC(p)); + } + renewToken(s) { + return ye(this, null, function* () { + if (Gs(s, "token", 1, 2047), !this._key || !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "renewToken should not be called before user join"); + const c = this._key; + this._key = s, this._joinInfo && (this._joinInfo.token = s); + const p = yield this._renewTokenMutex.lock(); + try { + if (Le("USE_NEW_TOKEN")) { + ie.debug("[".concat(this._clientId, "] start renew token with ticket from unilbs")); + const m = yield sNe(this._joinInfo, this._axiosCancelSource.token, this._config.httpRetryConfig || Oo); + ie.debug("[".concat(this._clientId, "] get ticket from unilbs success")), yield this._gateway.renewToken({ token: s, ticket: m }); + } else + ie.debug("[".concat(this._clientId, "] start renew token without ticket")), yield this._gateway.renewToken({ token: s }); + ie.debug("[".concat(this._clientId, "] renewToken success")); + } catch (m) { + throw this._key = c, this._joinInfo.token = c, ie.error("[".concat(this._clientId, "] renewToken failed"), m.toString()), m; + } finally { + p(); + } + }); + } + enableAudioVolumeIndicator() { + this._audioVolumeIndicationInterval ? ie.warning("you have already enabled audio volume indicator!") : this._audioVolumeIndicationInterval = window.setInterval(() => { + const s = this._p2pChannel.getAudioLevels(); + this.safeEmit($n.VOLUME_INDICATOR, s); + }, Le("AUDIO_VOLUME_INDICATION_INTERVAL") || 2e3); + } + getRTCStats() { + const s = this._statsCollector.getRTCStats(), c = this._gateway.getInChannelInfo(); + return s.Duration = Math.round(c.duration / 1e3), s; + } + startLiveStreaming(s, c) { + return ye(this, null, function* () { + if (!c) { + if (this.codec !== "h264") + throw new Je(_e.LIVE_STREAMING_INVALID_RAW_STREAM, "raw streaming is only support h264"); + if (!this._p2pChannel.hasLocalMedia()) + throw new Je(_e.LIVE_STREAMING_INVALID_RAW_STREAM, "can not find stream to raw streaming"); + } + if (this._liveRawStreamingClient && this._liveRawStreamingClient.hasUrl(s) || this._liveTranscodeStreamingClient && this._liveTranscodeStreamingClient.hasUrl(s)) + throw new Je(_e.LIVE_STREAMING_TASK_CONFLICT); + const p = c ? Qo.TRANSCODE : Qo.RAW; + return this._createLiveStreamingClient(p).startLiveStreamingTask(s, p); + }); + } + setLiveTranscoding(s) { + return this._createLiveStreamingClient(Qo.TRANSCODE).setTranscodingConfig(s); + } + stopLiveStreaming(s) { + return ye(this, null, function* () { + const c = [this._liveRawStreamingClient, this._liveTranscodeStreamingClient].filter((p) => p && p.hasUrl(s)); + if (!c.length) + throw new Je(_e.INVALID_PARAMS, "can not find live streaming url to stop"); + yield ot.all(c.map((p) => p && p.stopLiveStreamingTask(s))); + }); + } + addInjectStreamUrl(s, c) { + return ye(this, null, function* () { + if (!this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "can not addInjectStreamUrl, no joininfo"); + const p = this._createLiveStreamingClient(Qo.INJECT); + p.setInjectStreamConfig(c, 0), yield p.startLiveStreamingTask(s, Qo.INJECT); + }); + } + removeInjectStreamUrl() { + return ye(this, null, function* () { + var s; + const c = this._createLiveStreamingClient(Qo.INJECT), p = Array.from(ip(s = c.streamingTasks).call(s)).find((m) => m.mode === Qo.INJECT); + if (!this._joinInfo || !p) + throw new Je(_e.INVALID_OPERATION, "can remove addInjectStreamUrl, no joininfo or inject task"); + yield c.stopLiveStreamingTask(p.url); + }); + } + startChannelMediaRelay(s) { + return ye(this, null, function* () { + Pte(s), yield this._createChannelMediaRelayClient().startChannelMediaRelay(s); + }); + } + updateChannelMediaRelay(s) { + return ye(this, null, function* () { + Pte(s), yield this._createChannelMediaRelayClient().updateChannelMediaRelay(s); + }); + } + stopChannelMediaRelay() { + return ye(this, null, function* () { + yield this._createChannelMediaRelayClient().stopChannelMediaRelay(), this._statsCollector.onStatsChanged && (this._statsCollector.onStatsChanged = void 0); + }); + } + sendStreamMessage(c) { + return ye(this, arguments, function* (s) { + var p; + let m = !(arguments.length > 1 && arguments[1] !== void 0) || arguments[1]; + if (!this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "can not send data stream, not joined"); + if ((typeof s == "string" || s instanceof Uint8Array) && (s = { payload: s }), typeof s.payload == "string") { + const D = new TextEncoder(); + s.payload = D.encode(s.payload); + } + let T = !1; + if (this._encryptDataStream && this._encryptDataStreamIv && this._encryptDataStreamKey && window.crypto.subtle && rr(p = ["aes-128-gcm2", "aes-256-gcm2"]).call(p, this._encryptionMode) && (T = !0, s.payload = yield function(D, k, N) { + return ye(this, null, function* () { + var U; + const V = rm(U = Array.from(N)).call(U, (Ce, ke) => Ce + ke, 0), G = { serverTs: 0, seq: mPe++, length: N.length, checkSum: V }, K = new Uint8Array(iq(V, 2)), q = new ArrayBuffer(BC), ue = new DataView(q); + ue.setUint32(0, G.serverTs), ue.setUint16(4, G.seq), ue.setUint16(6, G.length), ue.setUint16(8, G.checkSum); + const oe = 16 - N.length % 16; + N = QZ(N, new Uint8Array(oe)); + const he = yield window.crypto.subtle.encrypt({ name: "AES-GCM", iv: D, tagLength: Vq, additionalData: K }, k, N); + return QZ(new Uint8Array(q), new Uint8Array(he)); + }); + }(this._encryptDataStreamIv, this._encryptDataStreamKey, s.payload)), new Blob([s.payload]).size > 1024) + throw new Je(_e.INVALID_PARAMS, T ? "encrypted stream message out of range." : "stream message out of range."); + return this._gateway.signal.request(mr.DATA_STREAM, { payload: PC(s.payload), syncWithAudio: s.syncWithAudio, sendTs: Date.now() - nBe }, !m); + }); + } + sendMetadata(s) { + if (!this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "can not send metadata, not joined"); + if (new Blob([s]).size > 1024) + throw new Je(_e.METADATA_OUT_OF_RANGE); + return this._gateway.signal.request(mr.SEND_METADATA, { session_id: this._joinInfo.sid, metadata: PC(s) }); + } + sendCustomReportMessage(s) { + return ye(this, null, function* () { + if (Array.isArray(s) || (s = [s]), s.forEach(_Pe), !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "can not send custom report, not joined"); + yield vr.sendCustomReportMessage(this._joinInfo.sid, s); + }); + } + getLocalAudioStats() { + return this._statsCollector.getLocalAudioTrackStats(); + } + getRemoteAudioStats() { + return this._statsCollector.getRemoteAudioTrackStats(); + } + getLocalVideoStats() { + return this._statsCollector.getLocalVideoTrackStats(); + } + getRemoteVideoStats() { + return this._statsCollector.getRemoteVideoTrackStats(); + } + getRemoteNetworkQuality() { + return this._statsCollector.getRemoteNetworkQualityStats(); + } + pickSVCLayer(s, c) { + return ye(this, null, function* () { + qo(c.spatialLayer, "spatialLayer", [0, 1, 2, 3]), qo(c.temporalLayer, "temporalLayer", [0, 1, 2, 3]); + try { + yield this._gateway.pickSVCLayer(s, c); + } catch (p) { + throw ie.error("[".concat(this._clientId, "] pick SVC layer failed"), p.toString()), p; + } + }); + } + setRTMConfig(s) { + return ye(this, null, function* () { + const { apRTM: c = !1, rtmFlag: p } = s; + if (Qv(c, "apRTM"), Wi(p, "rtmFlag", 0), this._rtmConfig.apRTM = c, this._rtmConfig.rtmFlag = p, ie.debug("[".concat(this._clientId, "] setRTMconfig ").concat(JSON.stringify(s), " in ").concat(this.connectionState, " state")), (this.connectionState === "CONNECTED" || this.connectionState === "RECONNECTING") && this._joinInfo) + return this._joinInfo.apRTM = c, this._joinInfo.rtmFlag = p, this._gateway.setRTM2Flag(p); + }); + } + _reset() { + if (ie.debug("[".concat(this._clientId, "] reset client")), this._axiosCancelSource.cancel(), this._axiosCancelSource = Pc.CancelToken.source(), this._streamFallbackTypeCacheMap = /* @__PURE__ */ new Map(), this._remoteStreamTypeCacheMap = /* @__PURE__ */ new Map(), this._configDistribute.stopGetConfigDistribute(), this._joinInfo = void 0, this._proxyServer = void 0, this._defaultStreamFallbackType = void 0, this._sessionId = null, this.store.sessionId = null, this._statsCollector.reset(), this._key = void 0, this._appId = void 0, this._uid = void 0, this.store.uid = void 0, this._channelName = void 0, this._encryptionMode = "none", this._encryptionSecret = null, this._encryptionSalt = null, this._encryptDataStreamKey = null, this._encryptDataStreamIv = null, this._pendingPublishedUsers = [], this._users.forEach((s) => { + s._audioTrack && s._audioTrack._destroy(), s._videoTrack && s._videoTrack._destroy(), s._dataChannels && (s._dataChannels.forEach((c) => c._close()), s._dataChannels.length = 0); + }), this._users = [], this._audioVolumeIndicationInterval && (window.clearInterval(this._audioVolumeIndicationInterval), this._audioVolumeIndicationInterval = void 0), this._cloudProxyServerMode === "fallback" && (this._cloudProxyServerMode = "disabled", this.store.cloudProxyServerMode = "disabled"), this._p2pChannel.reset(), this._publishMutex = new Ss("client-publish"), this._subscribeMutex = new Ss("client-subscribe"), this._networkQualityInterval && (window.clearInterval(this._networkQualityInterval), this._networkQualityInterval = void 0), this._injectStreamingClient && (this._injectStreamingClient.terminate(), this._injectStreamingClient.removeAllListeners(), this._injectStreamingClient = void 0), this._liveRawStreamingClient && (this._liveRawStreamingClient.terminate(), this._liveRawStreamingClient.removeAllListeners(), this._liveRawStreamingClient = void 0), this._liveTranscodeStreamingClient && (this._liveTranscodeStreamingClient.terminate(), this._liveTranscodeStreamingClient.removeAllListeners(), this._liveTranscodeStreamingClient = void 0), this._channelMediaRelayClient && (this._channelMediaRelayClient.dispose(), this._channelMediaRelayClient = void 0), this._inspect) + try { + this._inspect.close(), this._inspect = void 0; + } catch (s) { + } + if (this._moderation) + try { + this.setImageModeration(!1); + } catch (s) { + } + } + _startSession(s, c) { + var p; + const m = s || xj(); + s ? ie.debug("[".concat(this._clientId, "] new Session ").concat(m)) : ie.debug("[".concat(this._clientId, "] renewSession ").concat(this._sessionId, " => ").concat(m)); + const T = s ? "" : this._sessionId || ""; + this._sessionId = m, this.store.sessionId = m; + const D = { lts: (/* @__PURE__ */ new Date()).getTime(), mode: this.mode, stringUid: (c == null ? void 0 : c.stringUid) || ((p = this._joinInfo) === null || p === void 0 ? void 0 : p.stringUid), channelProfile: this.mode === "live" ? 1 : 0, channelMode: 0, isABTestSuccess: Number(this._configDistribute.isSuccess), lsid: T, clientRole: this.role === "audience" ? 2 : 1 }; + c ? vr.sessionInit(this._sessionId, dp({ cname: c.channel, appid: c.appId }, D)) : this._joinInfo ? vr.sessionInit(this._sessionId, dp({ cname: this._joinInfo.cname, appid: this._joinInfo.appId }, D)) : this._gateway.joinInfo && vr.sessionInit(this._sessionId, dp({ cname: this._gateway.joinInfo.cname, appid: this._gateway.joinInfo.appId }, D)), this._joinInfo && (this._joinInfo.sid = m), this._gateway.joinInfo && (this._gateway.joinInfo.sid = m); + } + _publishHighStream(s) { + return ye(this, null, function* () { + if (!this._joinInfo || this._uid === void 0) + throw new Je(_e.INVALID_OPERATION, "Can't publish stream, haven't joined yet!"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish stream in ".concat(this.connectionState, " state")); + if (this._turnServer.mode === "auto" && Le("FORCE_TURN") && !Le("TURN_ENABLE_TCP") && !Le("TURN_ENABLE_UDP")) + throw new Je(_e.UNEXPECTED_ERROR, "force TURN With No TURN Configuration"); + ie.debug("[".concat(this._clientId, "] publish high stream")); + try { + const p = yield this._p2pChannel.publish(s, this._isDualStreamEnabled, this._lowStreamParameter); + if (this._p2pChannel instanceof ts) { + const m = (yield p.next()).value; + if (m) { + try { + yield this._gateway.sendExtensionMessage(Za.PUBLISH, m, !0); + } catch (T) { + throw p.throw(T), T; + } + yield p.next(); + } + this._p2pChannel.reportPublishEvent(!0, null); + } else { + const m = (yield p.next()).value; + if (m) { + var c; + let T; + try { + T = yield this._gateway.publish(this._uid, m, !0); + } catch (D) { + if (D.code !== _e.DISCONNECT_P2P) + throw p.throw(D), D; + } + yield p.next(((c = T) === null || c === void 0 ? void 0 : c.ortc) || []); + } + this._p2pChannel.reportPublishEvent(!0, null); + for (const T of s) + T instanceof In && T._encoderConfig && this._gateway.setVideoProfile(T._encoderConfig), !T.muted && T.enabled || (yield this._p2pChannel.muteLocalTrack(T)); + } + } catch (p) { + if (this._p2pChannel.reportPublishEvent(!1, p == null ? void 0 : p.code, s), (p == null ? void 0 : p.code) === _e.WS_ABORT) + return; + throw p; + } + }); + } + _publishLowStream() { + return ye(this, null, function* () { + if (!this._joinInfo || this._uid === void 0) + throw new Je(_e.INVALID_OPERATION, "Can't publish stream, haven't joined yet!"); + if (this.connectionState !== "CONNECTED" && this.connectionState !== "RECONNECTING") + throw new Je(_e.INVALID_OPERATION, "can not publish stream in ".concat(this.connectionState, " state")); + ie.debug("[".concat(this._clientId, "] publish low stream")); + const s = this._configDistribute.getLowStreamConfigDistribute(); + s && s.bitrate && (this._lowStreamParameter || (this._lowStreamParameter = { width: 160, height: 120, framerate: 15, bitrate: 50 }), this._lowStreamParameter && this._lowStreamParameter.bitrate && s.bitrate < this._lowStreamParameter.bitrate && (this._lowStreamParameter.bitrate = s.bitrate)); + try { + const p = yield this._p2pChannel.publishLowStream(this._lowStreamParameter), m = (yield p.next()).value; + if (m) { + var c; + let T; + try { + T = yield this._gateway.publish(this._uid, m, !0); + } catch (D) { + if (D.code !== _e.DISCONNECT_P2P) + throw p.throw(D), D; + } + p.next(((c = T) === null || c === void 0 ? void 0 : c.ortc) || []), this._p2pChannel.reportPublishEvent(!0, null, void 0, !0); + } + } catch (p) { + if (this._p2pChannel.reportPublishEvent(!1, p == null ? void 0 : p.code, void 0, !0), (p == null ? void 0 : p.code) === _e.WS_ABORT) + return; + throw p; + } + }); + } + _createLiveStreamingClient(s) { + if (!this._joinInfo || !this._appId) + return new Je(_e.INVALID_OPERATION, "can not create live streaming client, please join channel first").throw(); + const c = () => new PFe(this._joinInfo, this._config.websocketRetryConfig || Oo, this._config.httpRetryConfig || Oo), p = (m) => { + m.onLiveStreamError = (T, D) => { + vr.reportApiInvoke(this._sessionId, { name: Ao.ON_LIVE_STREAM_ERROR, options: [T, D], tag: Na.TRACER }).onSuccess(), this.safeEmit($n.LIVE_STREAMING_ERROR, T, D); + }, m.onLiveStreamWarning = (T, D) => { + vr.reportApiInvoke(this._sessionId, { name: Ao.ON_LIVE_STREAM_WARNING, options: [T, D], tag: Na.TRACER }).onSuccess(), this.safeEmit($n.LIVE_STREAMING_WARNING, T, D); + }, m.on(jC.REQUEST_WORKER_MANAGER_LIST, (T, D, k) => { + if (!this._joinInfo) + return k(new Je(_e.INVALID_OPERATION, "can not find join info to get worker manager")); + PJ(T, this._joinInfo, this._axiosCancelSource.token, Oo).then(D).catch(k); + }); + }; + switch (s) { + case Qo.RAW: + return this._liveRawStreamingClient || (this._liveRawStreamingClient = c(), p(this._liveRawStreamingClient)), this._liveRawStreamingClient; + case Qo.TRANSCODE: + return this._liveTranscodeStreamingClient || (this._liveTranscodeStreamingClient = c(), p(this._liveTranscodeStreamingClient)), this._liveTranscodeStreamingClient; + case Qo.INJECT: + return this._injectStreamingClient || (this._injectStreamingClient = c(), this._injectStreamingClient.on(jC.REQUEST_WORKER_MANAGER_LIST, (m, T, D) => { + if (!this._joinInfo) + return D(new Je(_e.INVALID_OPERATION, "can not find join info to get worker manager")); + PJ(m, this._joinInfo, this._axiosCancelSource.token, Oo).then(T).catch(D); + }), this._injectStreamingClient.onInjectStatusChange = (m, T, D) => { + this.safeEmit($n.INJECT_STREAM_STATUS, m, T, D); + }), this._injectStreamingClient; + } + } + _createChannelMediaRelayClient() { + if (!this._joinInfo) + return new Je(_e.INVALID_OPERATION, "can not create channel media relay client, please join channel first").throw(); + if (!this._channelMediaRelayClient) { + const { sendResolutionWidth: s, sendResolutionHeight: c } = this.getLocalVideoStats(), p = { width: s, height: c }; + this._channelMediaRelayClient = new LFe(this._joinInfo, this._clientId, this._config.websocketRetryConfig || Oo, this._config.httpRetryConfig || Oo, p), this._channelMediaRelayClient.on("state", (m) => { + m === Yl.RELAY_STATE_FAILURE && this._channelMediaRelayClient && this._channelMediaRelayClient.dispose(), this.safeEmit($n.CHANNEL_MEDIA_RELAY_STATE, m); + }), this._channelMediaRelayClient.on("event", (m) => { + this.safeEmit($n.CHANNEL_MEDIA_RELAY_EVENT, m); + }), this._statsCollector.onStatsChanged = (m, T) => { + var D; + m === "resolution" && ((D = this._channelMediaRelayClient) === null || D === void 0 || D.setVideoProfile(T)); + }; + } + return this._channelMediaRelayClient; + } + _handleUpdateDataChannel(s, c) { + const { added: p, deleted: m } = s, T = []; + Array.isArray(p) && p.length > 0 && p.forEach((D) => { + const { uid: k, stream_id: N, ordered: U, max_retrans_times: V, metadata: G } = D, K = this._users.find((q) => q._uintid === k); + if (!K) + return void ie.error("[".concat(this._clientId, "] can not find target user!(on_add_data_channel)")); + if (ie.debug("[".concat(this._clientId, "] data_channel added with uid ").concat(k)), rr(T).call(T, K) || T.push(K), K._uintid || (K._uintid = k), K._dataChannels.findIndex((q) => q.id === D.stream_id) === -1) { + const q = { id: N, ordered: !!U, maxRetransmits: V, metadata: G }, ue = new xLe(q); + K._dataChannels.push(ue), ie.info("[".concat(this._clientId, "] remote user ").concat(K.uid, " published datachannel")), c || this.safeEmit($n.USER_PUBLISHED, K, "datachannel", q); + } + this._p2pChannel.hasPendingRemoteDataChannel(K, D.stream_id) && (ie.debug("[".concat(this._clientId, "] resubscribe datachannel for user ").concat(K.uid, " after reconnect.")), this._subscribeDataChannel(K, D.stream_id).catch((q) => { + ie.error("[".concat(this._clientId, "] resubscribe datachannel error"), q.toString()); + })); + }), c && (this.safeEmit($n.PUBLISHED_USER_LIST, this._pendingPublishedUsers), this._pendingPublishedUsers = []), Array.isArray(m) && m.length > 0 && m.forEach((D) => { + const { uid: k, stream_id: N } = D, U = this._users.find((G) => G._uintid === k); + if (!U) + return void ie.error("[".concat(this._clientId, "] can not find target user!(on_delete_data_channel)")); + const V = U._dataChannels.find((G) => G.id === D.stream_id); + V && (ie.debug("[".concat(this._clientId, "] data_stream delete with uid ").concat(k)), this._p2pChannel.unsubscribeDataChannel(U, [V]).then((G) => { + if (U._dataChannels = U._dataChannels.filter((K) => K !== V), G) + return this._gateway.unsubscribeDataChannel(G, U.uid); + }), ie.info("[".concat(this._clientId, "] remote user ").concat(k, " unpublished datachannel ,id:").concat(V.id)), this.safeEmit($n.USER_UNPUBLISHED, U, "datachannel", V._config)); + }); + } + _handleRemoveDataChannels(s) { + const c = this._users.find((p) => p.uid === s.uid); + if (c) { + if (c._dataChannels !== void 0 && c._dataChannels.length > 0) { + ie.debug("[".concat(this._clientId, "] datachannel removed with uid ").concat(s.uid)); + const p = () => { + ie.info("[".concat(this._clientId, "] remote user ").concat(c.uid, " unpublished datachannel")), c._dataChannels.forEach((m) => { + this.safeEmit($n.USER_UNPUBLISHED, c, "datachannel", m._config); + }); + }; + this._p2pChannel.unsubscribeDataChannel(c, c._dataChannels).then((m) => { + if (m) + return this._gateway.unsubscribeDataChannel(m, c.uid); + }), p(); + } + } else + ie.warning("[".concat(this._clientId, "] can not find target user!(on_remove_datachannel)")); + } + _handleGatewayEvents() { + this._gateway.on(Ka.DISCONNECT_P2P, () => ye(this, null, function* () { + yield this._p2pChannel.disconnectForReconnect(); + })), this._gateway.on(Ka.CONNECTION_STATE_CHANGE, (s, c, p) => { + var m; + if (p === jn.FALLBACK) + return; + const T = () => { + this.safeEmit($n.CONNECTION_STATE_CHANGE, s, c, p); + }; + if (vr.reportApiInvoke(this._sessionId || ((m = this._gateway.joinInfo) === null || m === void 0 ? void 0 : m.sid) || null, { name: Ao.CONNECTION_STATE_CHANGE, options: [s, c, p], tag: Na.TRACER }).onSuccess(JSON.stringify({ cur: s, prev: c, reason: p })), ie.info("[".concat(this._clientId, "] connection state change: ").concat(c, " -> ").concat(s)), s === "DISCONNECTED") + return this._reset(), void T(); + if (s === "RECONNECTING") + this._users.forEach((k) => { + k._trust_in_room_ = !1, k._trust_audio_enabled_state_ = !1, k._trust_video_enabled_state_ = !1, k._trust_audio_mute_state_ = !1, k._trust_video_mute_state_ = !1, k._trust_audio_stream_added_state_ = !1, k._trust_video_stream_added_state_ = !1, k._is_pre_created || (k._audio_pre_subscribed || (k._audioSSRC = void 0, k._audioOrtc = void 0), k._video_pre_subscribed || (k._videoSSRC = void 0, k._videoOrtc = void 0, k._rtxSsrcId = void 0), k._cname = void 0); + }), this._userOfflineTimeout && window.clearTimeout(this._userOfflineTimeout), this._streamRemovedTimeout && window.clearTimeout(this._streamRemovedTimeout), this._userOfflineTimeout = void 0, this._streamRemovedTimeout = void 0; + else if (s === "CONNECTED") { + var D; + this._streamFallbackTypeCacheMap.forEach((k, N) => { + this._gateway.setStreamFallbackOption(N, k).catch((U) => { + ie.warning("[".concat(this._clientId, "] auto set stream fallback option failed"), U); + }); + }), this._remoteStreamTypeCacheMap.forEach((k, N) => { + this._gateway.setRemoteVideoStreamType(N, k).catch((U) => { + ie.warning("[".concat(this._clientId, "] auto set remote stream type failed"), U); + }); + }), this._remoteDefaultVideoStreamType !== void 0 && ((D = this._joinInfo) === null || D === void 0 ? void 0 : D.defaultVideoStream) === void 0 && this.setRemoteDefaultVideoStreamType(this._remoteDefaultVideoStreamType).then(() => { + ie.debug("[".concat(this._clientId, "] setRemoteDefaultVideoStreamType after gateway connected")); + }).catch((k) => { + ie.error("[".concat(this._clientId, "] setRemoteDefaultVideoStreamType after gateway failed, ").concat(k)); + }), this.store.useP2P || (this._p2pChannel.republish(), this._userOfflineTimeout = window.setTimeout(() => { + this.connectionState === "CONNECTED" && (this._userOfflineTimeout = void 0, this._users.filter((k) => !k._trust_in_room_).forEach((k) => { + ie.debug("[".concat(this._clientId, "] user offline timeout, emit user offline ").concat(k.uid)), this._handleUserOffline({ uid: k.uid }); + })); + }, 3e3), this._streamRemovedTimeout = window.setTimeout(() => { + this.connectionState === "CONNECTED" && (this._streamRemovedTimeout = void 0, this._users.forEach((k) => { + k._trust_audio_mute_state_ || (ie.debug("[".concat(this._clientId, "] auto dispatch audio unmute event ").concat(k.uid)), this._handleMuteStream(k.uid, pr.AUDIO, !1)), k._trust_video_mute_state_ || (ie.debug("[".concat(this._clientId, "] auto dispatch video unmute event ").concat(k.uid)), this._handleMuteStream(k.uid, pr.VIDEO, !1)), k._trust_audio_enabled_state_ || (ie.debug("[".concat(this._clientId, "] auto dispatch enable local audio ").concat(k.uid)), this._handleSetStreamLocalEnable("audio", k.uid, !0)), k._trust_video_enabled_state_ || (ie.debug("[".concat(this._clientId, "] auto dispatch enable local video ").concat(k.uid)), this._handleSetStreamLocalEnable("video", k.uid, !0)), k._trust_video_stream_added_state_ || (ie.debug("[".concat(this._clientId, "] auto dispatch reset video stream added ").concat(k.uid)), this._handleResetAddStream(k, "video")), k._trust_audio_stream_added_state_ || (ie.debug("[".concat(this._clientId, "] auto dispatch reset audio stream added ").concat(k.uid)), this._handleResetAddStream(k, "audio")), k._video_added_ || k._audio_added_ || (ie.debug("[".concat(this._clientId, "] auto dispatch stream remove ").concat(k.uid)), this._handleRemoveStream({ uid: k.uid, uint_id: k._uintid })); + })); + }, 1e3)); + } + T(); + }), this._gateway.on(Ka.REQUEST_NEW_GATEWAY_LIST, (s, c) => { + if (!this._joinInfo) + return c(new Je(_e.UNEXPECTED_ERROR, "can not recover, no join info")); + y5(this._joinInfo, this._axiosCancelSource.token, this._config.httpRetryConfig || Oo, this.store).then((p) => { + this._joinInfo && (this._joinInfo.apResponse = p.gatewayInfo.res, this._joinInfo.gatewayAddrs = p.gatewayInfo.gatewayAddrs, this._joinInfo.uni_lbs_ip = p.gatewayInfo.uni_lbs_ip); + const m = []; + p.gatewayInfo.gatewayAddrs.forEach((T) => { + let { address: D } = T; + const [k, N] = D.split(":"); + this._joinInfo && this._joinInfo.proxyServer ? m.push({ proxy: this._joinInfo.proxyServer, host: k, port: N }) : m.push({ host: k, port: N }); + }), s(m); + }).catch(c); + }), this._gateway.on(Ka.NETWORK_QUALITY, (s) => { + this._networkQualitySensitivity === "normal" && this.safeEmit($n.NETWORK_QUALITY, s); + }), this._gateway.on(Ka.STREAM_TYPE_CHANGE, (s, c) => { + this.safeEmit($n.STREAM_TYPE_CHANGED, s, c), vr.reportApiInvoke(this._sessionId, { name: Ao.STREAM_TYPE_CHANGE, options: [s, c], tag: Na.TRACER }).onSuccess(JSON.stringify({ uid: s, streamType: c })); + }), this._gateway.on(Ka.IS_P2P_DISCONNECTED, (s) => { + this._p2pChannel.isP2PDisconnected() ? s(!0) : this._p2pChannel.hasLocalMedia() || this._p2pChannel.hasRemoteMedia() ? s(!1) : s(!0); + }), this._gateway.on(Ka.NEED_RENEW_SESSION, () => { + this._startSession(); + }), this._gateway.on(Ka.REQUEST_P2P_CONNECTION_PARAMS, (s, c, p) => ye(this, null, function* () { + try { + c(yield this._p2pChannel.startP2PConnection(s)); + } catch (m) { + p(m); + } + })), this._gateway.on(Ka.JOIN_RESPONSE, (s, c) => { + if (this.store.useP2P) + return; + const { dtlsParameters: p, iceParameters: m, candidates: T, rtpCapabilities: D, setup: k, cname: N } = Cte(s.ortc, c); + this._p2pChannel.connect(m, p, T, D, k, N); + }), this._gateway.on(Ka.REQUEST_DC_CONNECTION_PARAMS, (s) => { + s(this._p2pChannel.getEstablishParams()); + }), this._gateway.on(Ka.RESET_SIGNAL, (s) => { + this._p2pChannel.resetConnection(s), this._handleGatewaySignalEvents(); + }), this._gateway.on(Ka.DATACHANNEL_FAILBACK, () => { + this._joinGateway(); + }), this._gateway.on(Ka.DATACHANNEL_PRECONNECT, (s, c, p, m) => ye(this, null, function* () { + var T, D, k, N, U, V; + yield this._p2pChannel.startP2PConnection({ turnServer: (T = this._joinInfo) === null || T === void 0 ? void 0 : T.turnServer }, !0); + const G = function(K, q) { + let ue; + return q && q.ip && typeof q.port == "number" ? (ue = [{ foundation: "udpcandidate", componentId: "1", transport: "udp", priority: "2103266323", connectionAddress: q.ip, port: q.port.toString(), type: "host", extension: {} }], ie.debug("Using remote candidate from AP ".concat(q.ip, ":").concat(q.port)), q.ip6 && (ue.push({ foundation: "udpcandidate", componentId: "1", transport: "udp", priority: "2103266323", connectionAddress: q.ip6, port: q.port.toString(), type: "host", extension: {} }), ie.debug("Using IPV6 remote candidate from AP ".concat(q.ip6, ":").concat(q.port)))) : ue = [{ foundation: "udpcandidate", componentId: "1", transport: "udp", priority: "2103266323", connectionAddress: K.ip, port: K.port.toString(), type: "host", extension: {} }], ue; + }(s, c); + return this._p2pChannel.preConnect({ iceUfrag: "".concat((D = this._joinInfo) === null || D === void 0 ? void 0 : D.apResponse.cid, "_").concat((k = this._joinInfo) === null || k === void 0 ? void 0 : k.apResponse.cert), icePwd: "".concat((N = this._joinInfo) === null || N === void 0 ? void 0 : N.apResponse.cid, "_").concat((U = this._joinInfo) === null || U === void 0 ? void 0 : U.apResponse.cert) }, { fingerprints: [{ hashFunction: "sha-256", fingerprint: (V = Le("FINGERPRINT")) !== null && V !== void 0 ? V : s.fingerprint }] }, G, { send: { audioCodecs: [], videoCodecs: [], audioExtensions: [], videoExtensions: [] }, recv: { audioCodecs: [], videoCodecs: [], audioExtensions: [], videoExtensions: [] } }, "active", "o/i14u9pJrxRKAsu").then(p).catch(m); + })); + } + _handleGatewaySignalEvents() { + this._gateway.signal.on(Zr.ON_USER_ONLINE, this._handleUserOnline), this._gateway.signal.on(Zr.ON_USER_OFFLINE, this._handleUserOffline), this._gateway.signal.on(Zr.ON_ADD_AUDIO_STREAM, (s) => this._handleAddAudioOrVideoStream("audio", s.uid, s.ssrcId, s.cname, s.uint_id, s.ortc)), this._gateway.signal.on(Zr.ON_ADD_VIDEO_STREAM, (s) => this._handleAddAudioOrVideoStream("video", s.uid, s.ssrcId, s.cname, s.uint_id, s.ortc, s.rtxSsrcId)), this._gateway.signal.on(Zr.ON_REMOTE_DATASTREAM_UPDATE, (s) => { + this._handleUpdateDataChannel(s); + }), this._gateway.signal.on(Zr.ON_REMOTE_FULL_DATASTREAM_INFO, (s) => { + this._handleUpdateDataChannel({ added: s.datastreams, deleted: [] }, !0); + }), this._gateway.signal.on(Zr.ON_REMOVE_STREAM, this._handleRemoveStream), this._gateway.signal.on(Zr.ON_P2P_LOST, this._handleP2PLost), this._gateway.signal.on(Zr.MUTE_AUDIO, (s) => this._handleMuteStream(s.uid, pr.AUDIO, !0)), this._gateway.signal.on(Zr.UNMUTE_AUDIO, (s) => this._handleMuteStream(s.uid, pr.AUDIO, !1)), this._gateway.signal.on(Zr.MUTE_VIDEO, (s) => this._handleMuteStream(s.uid, pr.VIDEO, !0)), this._gateway.signal.on(Zr.UNMUTE_VIDEO, (s) => this._handleMuteStream(s.uid, pr.VIDEO, !1)), this._gateway.signal.on(Zr.RECEIVE_METADATA, (s) => { + const c = Tx(s.metadata); + this.safeEmit($n.RECEIVE_METADATA, s.uid, c); + }), this._gateway.signal.on(Zr.ON_DATA_STREAM, (s) => ye(this, null, function* () { + var c; + if (!s) + return; + let p = Tx(s.payload); + if (this._encryptDataStream && this._encryptDataStreamIv && this._encryptDataStreamKey && window.crypto.subtle && rr(c = ["aes-128-gcm2", "aes-256-gcm2"]).call(c, this._encryptionMode)) { + if (s.payload.length < BC) + throw new Je(_e.UNEXPECTED_RESPONSE, "payload length ".concat(s.payload.length, " is less than header length ").concat(BC)); + p = yield function(D, k, N) { + return ye(this, null, function* () { + const U = N.subarray(0, BC), V = U.slice(8, BC), G = (V[0] << 8) + V[1], K = (U[6] << 8) + U[7], q = yield window.crypto.subtle.decrypt({ name: "AES-GCM", iv: D, tagLength: Vq, additionalData: new Uint8Array(iq(G, 2)) }, k, N.subarray(BC)); + return new Uint8Array(q).subarray(0, K); + }); + }(this._encryptDataStreamIv, this._encryptDataStreamKey, p); + } + let m = 0; + if (s.ordered || s.syncWithAudio) { + const T = this._p2pChannel.getStats(), D = this.remoteUsers.find((N) => N.uid === s.uid), k = T == null ? void 0 : T.audioRecv.find((N) => N.ssrc === (D == null ? void 0 : D._audioSSRC)); + m = k == null ? void 0 : k.jitterBufferMs; + } + m == null && (m = 0), aBe(dp(dp({}, s), {}, { payload: p }), m, { id: this._clientId, onStreamMessage: typeof this.onStreamMessage == "function" ? this.onStreamMessage.bind(this) : void 0, safeEmit: this.safeEmit.bind(this) }); + })), this._gateway.signal.on(Zr.ON_CRYPT_ERROR, () => { + kC(() => { + ie.warning("[".concat(this._clientId, "] on crypt error")), this.safeEmit($n.CRYPT_ERROR); + }, this._sessionId); + }), this._gateway.signal.on(Zr.ON_TOKEN_PRIVILEGE_WILL_EXPIRE, this._handleTokenWillExpire), this._gateway.signal.on(Zr.ON_TOKEN_PRIVILEGE_DID_EXPIRE, () => { + ie.warning("[".concat(this._clientId, "] received message onTokenPrivilegeDidExpire, please get new token and join again")), this._gateway.leave(!0, jn.TOKEN_EXPIRE), this.safeEmit($n.ON_TOKEN_PRIVILEGE_DID_EXPIRE), this._reset(); + }), this._gateway.signal.on(Zr.ON_STREAM_FALLBACK_UPDATE, (s) => { + ie.debug("[".concat(this._clientId, "] stream fallback peerId: ").concat(s.stream_id, ", attr: ").concat(s.stream_type)), this.safeEmit($n.STREAM_FALLBACK, s.stream_id, s.stream_type === 1 ? "fallback" : "recover"); + }), this._gateway.signal.on(Zr.ON_PUBLISH_STREAM, (s) => { + this.uid === this._uid && (this._p2pChannel.reportPublishEvent(!0, null, void 0, !1, JSON.stringify({ proxy: s.proxy })), ie.info("[".concat(this._clientId, "] on publish stream, ").concat(JSON.stringify(s)))); + }), this._gateway.signal.on(Zr.ENABLE_LOCAL_VIDEO, (s) => { + this._handleSetStreamLocalEnable("video", s.uid, !0); + }), this._gateway.signal.on(Zr.DISABLE_LOCAL_VIDEO, (s) => { + this._handleSetStreamLocalEnable("video", s.uid, !1); + }), this._gateway.signal.on(cr.REQUEST_TIMEOUT, (s, c) => { + if (this._joinInfo) + switch (s) { + case mr.PUBLISH: { + if (!c) + return; + const T = c.ortc; + if (T) { + var p, m; + const D = T.some((U) => { + let { stream_type: V } = U; + return V === Ci.Audio; + }), k = T.some((U) => { + let { stream_type: V } = U; + return V !== Ci.Audio; + }), N = T.some((U) => { + let { stream_type: V } = U; + return V === Ci.Screen || V === Ci.ScreenLow; + }); + c.state === "offer" && vr.publish(this._joinInfo.sid, { eventElapse: Ks.measureFromPublishStart(this.store.clientId, this.store.pubId), succ: !1, ec: _e.TIMEOUT, audio: D, video: k, p2pid: c.p2p_id, publishRequestid: this.store.pubId, screenshare: N, audioName: D ? (p = T.find((U) => { + let { stream_type: V } = U; + return V === Ci.Audio; + })) === null || p === void 0 || (p = p.ssrcs[0]) === null || p === void 0 ? void 0 : p.ssrcId.toString() : void 0, videoName: k ? (m = T.find((U) => { + let { stream_type: V } = U; + return V !== Ci.Audio; + })) === null || m === void 0 || (m = m.ssrcs[0]) === null || m === void 0 ? void 0 : m.ssrcId.toString() : void 0 }); + } + break; + } + case mr.SUBSCRIBE: + c && vr.subscribe(this._joinInfo.sid, { succ: !1, ec: _e.TIMEOUT, audio: c.stream_type === pr.AUDIO, video: c.stream_type === pr.VIDEO, peerid: c.stream_id, subscribeRequestid: c.ssrcId, p2pid: this.store.p2pId, eventElapse: Ks.measureFromSubscribeStart(this.store.clientId, c.ssrcId) }); + } + }), this._gateway.signal.on(Zr.ON_P2P_OK, (s) => { + this.uid, this._uid; + }), this._gateway.signal.on(Zr.ON_PUBLISHED_USER_LIST, (s) => { + if (s == null || !s.users) + return; + Le("BLOCK_LOCAL_CLIENT") && (s.users = s.users.filter((m) => !CS(m.string_id || m.stream_id, this.channelName))); + const c = [], p = []; + for (const m of s.users) { + let T = this._users.find((G) => G._uintid === m.stream_id); + T ? T._trust_in_room_ = !0 : (T = new Ns(m.string_id || m.stream_id, m.stream_id), this._users.push(T), this.getListeners($n.PUBLISHED_USER_LIST).length === 0 && (ie.debug("[".concat(this._clientId, "] user online"), m.stream_id), this.safeEmit($n.USER_JOINED, T))); + const D = Bo.Audio & m.stream_type, k = (Bo.Video | Bo.LwoVideo) & m.stream_type, N = (65280 & m.stream_type) != 0, U = D && T.hasAudio, V = k && T.hasVideo; + k && (T._trust_video_stream_added_state_ = !0, T._video_added_ = !0, T._videoSSRC = m.video_ssrc, T._rtxSsrcId = m.video_rtx), D && (T._trust_audio_stream_added_state_ = !0, T._audio_added_ = !0, T._audioSSRC = m.audio_ssrc), D && !U && this.getListeners($n.PUBLISHED_USER_LIST).length === 0 && (ie.info("[".concat(this._clientId, "] remote user ").concat(T.uid, " published audio")), this.safeEmit($n.USER_PUBLISHED, T, "audio")), k && !V && this.getListeners($n.PUBLISHED_USER_LIST).length === 0 && (ie.info("[".concat(this._clientId, "] remote user ").concat(T.uid, " published video")), this.safeEmit($n.USER_PUBLISHED, T, "video")), (D && !U || k && !V || N) && c.push(T), k && this._p2pChannel.hasPendingRemoteMedia(T, "video") && p.push({ user: T, mediaType: "video" }), D && this._p2pChannel.hasPendingRemoteMedia(T, "audio") && p.push({ user: T, mediaType: "audio" }); + } + p.length > 0 && (ie.debug("[".concat(this._clientId, "] RE massSubscribe after reconnect ").concat(p.map((m) => "user: ".concat(m.user.uid, ", mediaType: ").concat(m.mediaType)).join("; "), " ")), this.massSubscribe(p).catch((m) => { + ie.error("[".concat(this._clientId, "] mass resubscribe error"), m.toString()); + })), this.getListeners($n.PUBLISHED_USER_LIST).length > 0 ? Le("ENABLE_DATASTREAM_2") ? this._pendingPublishedUsers = c : (ie.info("[".concat(this._clientId, "] client emit user-list event, users: ").concat(c.map((m) => m.uid).join(", "))), this.safeEmit($n.PUBLISHED_USER_LIST, c)) : ie.info("[".concat(this._clientId, "] client not emit user-list event case there is no user-list listener, users: ").concat(c.map((m) => m.uid).join(", "))); + }), this._gateway.signal.on(Zr.ON_RTP_CAPABILITY_CHANGE, (s) => { + const { video_codec: c } = s; + this._p2pChannel instanceof Ts && this._p2pChannel.updateRemoteRTPCapabilities(c.map((p) => p.toLowerCase()).filter((p) => { + var m; + return rr(m = Object.keys(Qy)).call(m, p); + })); + }); + } + _handleP2PEvents() { + this._gateway.signal.on(Zr.ON_USER_OFFLINE, () => { + this._p2pChannel.disconnectForReconnect(); + }), this._gateway.signal.on(Za.PUBLISH, (s, c, p) => { + const { uid: m } = s; + s.forEach((T) => { + const { kind: D, ssrcs: k, mid: N, isMuted: U } = T; + this._handleP2PAddAudioOrVideoStream(D, m, k[0].ssrcId, N); + const V = this._users.find((G) => G.uid === m); + return V && this._p2pChannel instanceof ts ? this._p2pChannel.mockSubscribe(V, D, k[0].ssrcId, N).then(() => { + c(); + }).catch(p) : c(), this._handleMuteStream(m, D, !!U); + }); + }), this._gateway.signal.on(Za.CALL, (s, c, p) => ye(this, null, function* () { + if (this._p2pChannel instanceof ts) + try { + var m; + c(yield this._p2pChannel.startP2P({ turnServer: (m = this._joinInfo) === null || m === void 0 ? void 0 : m.turnServer }, s)); + } catch (T) { + p(T); + } + })), this._gateway.signal.on(cr.P2P_CONNECTION, (s) => ye(this, null, function* () { + this._p2pChannel instanceof ts && (yield this._p2pChannel.p2pConnect(s)); + })), this._gateway.signal.on(Za.UNPUBLISH, (s, c, p) => ye(this, null, function* () { + if (this._p2pChannel instanceof ts) { + const { unpubMsg: m, uid: T } = s, D = this._users.find((k) => k.uid === T); + if (!D) + return ie.warning("[".concat(this._clientId, "] can not find remote user, ignore mute event, uid: ").concat(T)), void c(); + try { + m.forEach((k) => ye(this, null, function* () { + let { stream_type: N } = k; + const U = N === Ci.Audio ? pr.AUDIO : pr.VIDEO; + yield this._p2pChannel.unsubscribe(D, U), this._handleMuteStream(T, U, !0); + })), c(); + } catch (k) { + p(k); + } + } + })), this._gateway.signal.on(Za.CONTROL, (s, c) => ye(this, null, function* () { + const { action: p } = s; + switch (p) { + case bg.MUTE_LOCAL_VIDEO: + this._handleMuteStream(c, pr.VIDEO, !0); + break; + case bg.MUTE_LOCAL_AUDIO: + this._handleMuteStream(c, pr.AUDIO, !0); + break; + case bg.UNMUTE_LOCAL_VIDEO: + this._handleP2PAddAudioOrVideoStream("video", c), this._handleMuteStream(c, pr.VIDEO, !1); + break; + case bg.UNMUTE_LOCAL_AUDIO: + this._handleP2PAddAudioOrVideoStream("audio", c), this._handleMuteStream(c, pr.AUDIO, !1); + } + })), this._gateway.signal.on(Za.RESTART_ICE, (s, c, p) => ye(this, null, function* () { + if (this._p2pChannel instanceof ts) + try { + const { direction: m, iceParameter: T } = s; + m !== cl.SEND_ONLY || T ? c(yield this._p2pChannel.restartICE(m, T)) : (this._p2pChannel.handleDisconnect(m), c()); + } catch (m) { + p(m); + } + })), this._gateway.signal.on(Za.CANDIDATE, (s) => { + if (this._p2pChannel instanceof ts) { + const { candidate: c, direction: p } = s; + this._p2pChannel.addRemoteCandidate(c, p); + } + }), this._p2pChannel.on(Nr.RequestP2PRestartICE, (s, c, p) => ye(this, null, function* () { + try { + const { direction: m } = s; + c(yield this._gateway.sendExtensionMessage(Za.RESTART_ICE, s, m === cl.SEND_ONLY)); + } catch (m) { + p(m); + } + })), this._p2pChannel.on(Nr.LocalCandidate, (s) => { + this._gateway.sendExtensionMessage(Za.CANDIDATE, JSON.stringify(s), !0); + }), this._p2pChannel.on(Nr.RequestP2PMuteLocal, (s, c, p) => ye(this, null, function* () { + try { + yield this._gateway.sendExtensionMessage(Za.CONTROL, s, !0), c(); + } catch (m) { + p(m); + } + })), this._p2pChannel.on(Nr.RequestP2PUnmuteRemote, (s, c, p) => ye(this, null, function* () { + if (this._joinInfo) + try { + yield this._gateway.unmuteRemote(s, this._joinInfo.stringUid || this._joinInfo.uid), c(); + } catch (m) { + m.code === _e.DISCONNECT_P2P ? c() : p(m); + } + else + c(); + })), this._p2pChannel.on(Nr.RequestP2PMuteRemote, (s, c, p) => ye(this, null, function* () { + if (this._joinInfo) + try { + yield this._gateway.muteRemote(s, this._joinInfo.stringUid || this._joinInfo.uid), c(); + } catch (m) { + m.code === _e.DISCONNECT_P2P ? c() : p(m); + } + else + c(); + })), this._p2pChannel.on(Nr.StateChange, (s, c) => { + c === Ai.Connected && this._p2pChannel.republish(); + }); + } + _handleP2PChannelEvents() { + this._p2pChannel.on(Nr.RequestMuteLocal, (s, c, p) => ye(this, null, function* () { + if (this._joinInfo) + try { + yield this._gateway.muteLocal(s, this._joinInfo.stringUid || this._joinInfo.uid), c(); + } catch (m) { + m.code === _e.DISCONNECT_P2P ? c() : p(m); + } + else + c(); + })), this._p2pChannel.on(Nr.RequestUnmuteLocal, (s, c, p) => ye(this, null, function* () { + if (this._joinInfo) + try { + yield this._gateway.unmuteLocal(s, this._joinInfo.stringUid || this._joinInfo.uid), c(); + } catch (m) { + m.code === _e.DISCONNECT_P2P ? c() : p(m); + } + else + c(); + })), this._p2pChannel.on(Nr.RequestRePublish, (s, c, p) => { + this.publish(s, !1).then(c).catch(p); + }), this._p2pChannel.on(Nr.RequestRePublishDataChannel, (s, c, p) => { + ot.all(s.map((m) => ye(this, null, function* () { + yield this._p2pChannel.publishDataChannel([m]); + const T = { streamId: m.id, ordered: m.ordered, maxRetransmits: m.maxRetransmits, metadata: m.metadata, channelId: m._originDataChannelId }; + try { + yield this._gateway.publishDataChannel(this._uid, T, !0); + } catch (D) { + if (D.code !== _e.DISCONNECT_P2P) + throw D; + } + }))).then(c).catch(p); + }), this._p2pChannel.on(Nr.RequestReSubscribe, (s, c, p) => ye(this, null, function* () { + try { + for (const { user: m, kind: T } of s) + T === pr.VIDEO ? yield this.subscribe(m, "video") : yield this.subscribe(m, "audio"); + c(); + } catch (m) { + p(m); + } + })), this._p2pChannel.on(Nr.RequestUpload, (s, c) => { + this._gateway.upload(s, c); + }), this._p2pChannel.on(Nr.RequestUploadStats, (s) => { + this._gateway.uploadWRTCStats(s); + }), this._p2pChannel.on(Nr.MediaReconnectStart, (s) => { + this.safeEmit($n.MEDIA_RECONNECT_START, s); + }), this._p2pChannel.on(Nr.MediaReconnectEnd, (s) => { + this.safeEmit($n.MEDIA_RECONNECT_END, s); + }), this._p2pChannel.on(Nr.NeedSignalRTT, (s) => { + s(this._gateway.getSignalRTT()); + }), this._p2pChannel.on(Nr.RequestRestartICE, (s) => ye(this, null, function* () { + if (this._p2pChannel instanceof ts) + return; + const c = yield this._p2pChannel.restartICE(s), p = yield c.next(); + if (p.done) + return; + const m = p.value; + let T; + try { + T = yield this._gateway.restartICE({ iceParameters: m }); + } catch (k) { + return void c.throw(k); + } + const { iceParameters: D } = function(k) { + const N = k.iceParameters; + return { iceParameters: { iceUfrag: N.iceUfrag, icePwd: N.icePwd } }; + }(T); + yield c.next({ remoteIceParameters: D }); + })), this._p2pChannel.on(Nr.RequestReconnect, () => ye(this, null, function* () { + this._gateway.reconnect(); + })), this._p2pChannel.on(Nr.RequestReconnectPC, () => ye(this, null, function* () { + var s; + const { iceParameters: c, dtlsParameters: p, rtpCapabilities: m } = yield this._p2pChannel.startP2PConnection({ turnServer: (s = this._joinInfo) === null || s === void 0 ? void 0 : s.turnServer }), { gatewayEstablishParams: T, gatewayAddress: D } = yield this._gateway.reconnectPC({ iceParameters: c, dtlsParameters: p, rtpCapabilities: m }), { dtlsParameters: k, iceParameters: N, candidates: U, rtpCapabilities: V, setup: G, cname: K } = Cte(T, D); + yield this._p2pChannel.connect(N, k, U, V, G, K), yield this._p2pChannel.republish(), yield this._p2pChannel.reSubscribe(); + })), this._p2pChannel.on(Nr.RequestUnpublishForReconnectPC, (s, c, p) => ye(this, null, function* () { + this._joinInfo && this._uid !== void 0 ? (yield this._gateway.unpublish(s, this._uid), c()) : p(); + })), this._p2pChannel.on(Nr.P2PLost, () => { + this.safeEmit($n.P2P_LOST, this.store.uid); + }), this._p2pChannel.on(Nr.UpdateVideoEncoder, (s) => { + s._encoderConfig && this._gateway.setVideoProfile(s._encoderConfig); + }), this._p2pChannel.on(Nr.ConnectionTypeChange, (s) => { + this.safeEmit($n.IS_USING_CLOUD_PROXY, s); + }), this._p2pChannel.on(Nr.RequestLowStreamParameter, (s) => { + s(this._lowStreamParameter || { width: 160, height: 120, framerate: 15, bitrate: 50 }); + }), this._p2pChannel.on(Nr.QueryClientConnectionState, (s) => { + s(this.connectionState); + }); + } + getKeyMetrics() { + return this.store.keyMetrics; + } + enableContentInspect(s) { + return ye(this, null, function* () { + if (this.connectionState !== "CONNECTED" || !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] Client did not join channel")); + if (this._inspect) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] Inspect content service already in connecting/connected state")); + if (!s) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] inspectConfig is necessary")); + if (!s.inspectType || !Array.isArray(s.inspectType)) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] inspectConfig.inspectType is necessary and is an instance of Array.")); + { + const c = [...new Set(s.inspectType)]; + c.forEach((p) => { + var m; + if (!rr(m = ["supervise", "moderation"]).call(m, p)) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] ").concat(p, " is not a valid inspect type.")); + }), s.inspectType = c; + } + if (s && s.extraInfo && s.extraInfo.length > 1024) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] inspectConfig.extraInfo length cannot exceed 1024 bytes")); + try { + const c = new bk(s); + this._inspect = c, this.handleVideoInspectEvents(this._inspect), yield c.init({ appId: this._joinInfo.appId, areaCode: "", cname: this._joinInfo.cname, sid: this._joinInfo.sid, token: this._joinInfo.token, uid: this._joinInfo.uid, cid: this._joinInfo.cid, vid: this._joinInfo.vid ? Number(this._joinInfo.vid) : 0 }, Oo); + } catch (c) { + throw Array.isArray(c) ? c[0] : c; + } + }); + } + disableContentInspect() { + return ye(this, null, function* () { + if (!this._inspect) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] inspectVideoContent not started")); + try { + this._inspect.close(), this._inspect = void 0; + } catch (s) { + throw Array.isArray(s) ? s[0] : s; + } + }); + } + setImageModeration(s, c) { + return ye(this, null, function* () { + if (Qv(s, "enabled"), s) { + if (!c) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] config is necessary")); + if (Wi(c.interval, "interval", 1e3, 1 / 0), c && c.extraInfo && c.extraInfo.length > 1024) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] config.extraInfo length cannot exceed 1024 bytes")); + if (c && c.vendor && c.vendor.length > 1024) + throw new Je(_e.INVALID_PARAMS, "[".concat(this._clientId, "] config.vendor length cannot exceed 1024 bytes")); + if (this.connectionState !== "CONNECTED" || !this._joinInfo) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, '] can not enable image moderation, not joined"')); + try { + if (this._moderation) + return void this._moderation.updateConfig(c); + const p = new iV(c); + this._moderation = p, this.handleImageModerationEvents(this._moderation), yield p.init({ appId: this._joinInfo.appId, areaCode: "", cname: this._joinInfo.cname, sid: this._joinInfo.sid, token: this._joinInfo.token, uid: this._joinInfo.uid, cid: this._joinInfo.cid, vid: this._joinInfo.vid ? Number(this._joinInfo.vid) : 0 }, Oo); + } catch (p) { + throw Array.isArray(p) ? p[0] : p; + } + } else { + if (!this._moderation) + throw new Je(_e.INVALID_OPERATION, "[".concat(this._clientId, "] image moderation not started")); + try { + this._moderation.close(), this._moderation.removeAllListeners(), this._moderation = void 0; + } catch (p) { + throw Array.isArray(p) ? p[0] : p; + } + } + }); + } + setP2PTransport(s) { + if (function(c) { + qo(c, "transport", ["default", "auto", "relay", "sd-rtn"]); + }(s), this.mode !== "p2p") + throw new Je(_e.INVALID_OPERATION, "only p2p mode can set p2pTransport"); + this.store.p2pTransport = s, ie.info("[".concat(this._clientId, "] set client p2pTransport to ").concat(s)); + } + handleImageModerationEvents(s) { + s.on(Xh.CONNECTION_STATE_CHANGE, (c, p) => { + if (this.safeEmit($n.IMAGE_MODERATION_CONNECTION_STATE_CHANGE, c, p), c === gu.CONNECTED) { + if (this.connectionState !== "CONNECTED") + throw this.setImageModeration(!1), new Je(_e.OPERATION_ABORTED, "Image moderation was cancelled because it left the channel"); + s.inspectImage(); + } + }), s.on(Xh.CLIENT_LOCAL_VIDEO_TRACK, (c) => { + c(this.localTracks.filter((p) => p.trackMediaType === "video")[0]); + }); + } + handleVideoInspectEvents(s) { + s.on(es.CONNECTION_STATE_CHANGE, (c, p) => { + if (this.safeEmit($n.CONTENT_INSPECT_CONNECTION_STATE_CHANGE, c, p), p === ih.CONNECTED) { + if (this.connectionState !== "CONNECTED") + return void this.safeEmit($n.CONTENT_INSPECT_ERROR, new Je(_e.OPERATION_ABORTED, "Content inspect was cancelled because it left the channel")); + s.inspectImage(); + } + }), s.on(es.INSPECT_RESULT, (c, p) => { + var m; + if ((p == null ? void 0 : p.code) === _e.INVALID_OPERATION && this.connectionState === "DISCONNECTED") + return ie.debug("Stop inspect content because that has left channel"), this == null || (m = this._inspect) === null || m === void 0 || m.close(), void (this._inspect = void 0); + this.safeEmit($n.CONTENT_INSPECT_RESULT, c, p); + }), s.on(es.CLIENT_LOCAL_VIDEO_TRACK, (c) => { + c(this.localTracks.filter((p) => p.trackMediaType === "video")[0]); + }); + } + getJoinChannelServiceRecords() { + return ie.debug("getJoinChannelServiceRecords"), this.store.joinChannelServiceRecords; + } + setPublishAudioFilterEnabled(s) { + return ye(this, null, function* () { + Qv(s, "enabled"), Gi("ENABLE_PUBLISH_AUDIO_FILTER", s), this._joinInfo && (yield this._gateway.setPublishAudioFilterEnabled(s)); + }); + } + _handleResetAddStream(s, c) { + switch (c) { + case "audio": + s._audio_added_ = !1, s._trust_audio_stream_added_state_ = !0; + break; + case "video": + s._video_added_ = !1, s._trust_video_stream_added_state_ = !0; + } + } + } + St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], zi.prototype, "leave", null), St([Pr({ argsMap: (h, s) => { + if (!Array.isArray(s)) { + if (!(s instanceof Xs)) + return [s]; + s = [s]; + } + return s.map((c) => c ? Object(c).toString() : "null"); + } }), ge("design:type", Function), ge("design:paramtypes", [Object, Boolean]), ge("design:returntype", ot)], zi.prototype, "publish", null), St([Pr({ argsMap: (h, s) => (s || (s = []), s instanceof see ? [s.getChannelId()] : (Array.isArray(s) || (s = [s]), s.map((c) => c.getTrackId()))) }), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], zi.prototype, "unpublish", null), St([Pr({ argsMap: (h, s, c, p) => [s.uid, c, p] }), ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number]), ge("design:returntype", ot)], zi.prototype, "subscribe", null), St([Pr({ argsMap: (h, s, c) => [s, c] }), ge("design:type", Function), ge("design:paramtypes", [Object, String]), ge("design:returntype", ot)], zi.prototype, "presubscribe", null), St([Pr({ argsMap: (h, s) => s.map((c) => { + let { user: p, mediaType: m } = c; + return [p == null ? void 0 : p.uid, m]; + }) }), ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], zi.prototype, "massSubscribe", null), St([Pr({ argsMap: (h, s, c, p) => [s.uid, c, p] }), ge("design:type", Function), ge("design:paramtypes", [Ns, String, Number]), ge("design:returntype", ot)], zi.prototype, "unsubscribe", null), St([Pr({ argsMap: (h, s) => s.map((c) => { + let { user: p, mediaType: m } = c; + return { uid: p == null ? void 0 : p.uid, mediaType: m }; + }) }), ge("design:type", Function), ge("design:paramtypes", [Array]), ge("design:returntype", ot)], zi.prototype, "massUnsubscribe", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], zi.prototype, "setLowStreamParameter", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], zi.prototype, "enableDualStream", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], zi.prototype, "disableDualStream", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String, Object]), ge("design:returntype", ot)], zi.prototype, "setClientRole", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String, Boolean]), ge("design:returntype", void 0)], zi.prototype, "setProxyServer", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object, Boolean]), ge("design:returntype", void 0)], zi.prototype, "setTurnServer", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", void 0)], zi.prototype, "setLicense", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Number]), ge("design:returntype", void 0)], zi.prototype, "startProxyServer", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], zi.prototype, "stopProxyServer", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", void 0)], zi.prototype, "setLocalAccessPointsV2", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Array, String]), ge("design:returntype", void 0)], zi.prototype, "setLocalAccessPoints", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Number]), ge("design:returntype", ot)], zi.prototype, "setRemoteDefaultVideoStreamType", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object, Number]), ge("design:returntype", ot)], zi.prototype, "setRemoteVideoStreamType", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object, Number]), ge("design:returntype", ot)], zi.prototype, "setStreamFallbackOption", null), St([Pr({ argsMap: (h, s) => [s] }), ge("design:type", Function), ge("design:paramtypes", [String, String, Uint8Array, Boolean]), ge("design:returntype", void 0)], zi.prototype, "setEncryptionConfig", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], zi.prototype, "renewToken", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", void 0)], zi.prototype, "enableAudioVolumeIndicator", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String, Boolean]), ge("design:returntype", ot)], zi.prototype, "startLiveStreaming", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], zi.prototype, "setLiveTranscoding", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", ot)], zi.prototype, "stopLiveStreaming", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String, Object]), ge("design:returntype", ot)], zi.prototype, "addInjectStreamUrl", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], zi.prototype, "removeInjectStreamUrl", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [gk]), ge("design:returntype", ot)], zi.prototype, "startChannelMediaRelay", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [gk]), ge("design:returntype", ot)], zi.prototype, "updateChannelMediaRelay", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], zi.prototype, "stopChannelMediaRelay", null), St([Pr({ argsMap: (h, s) => (Array.isArray(s) || (s = [s]), [JSON.stringify(s)]) }), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], zi.prototype, "sendCustomReportMessage", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object, Object]), ge("design:returntype", ot)], zi.prototype, "pickSVCLayer", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], zi.prototype, "setRTMConfig", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Object]), ge("design:returntype", ot)], zi.prototype, "enableContentInspect", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", ot)], zi.prototype, "disableContentInspect", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Boolean, Object]), ge("design:returntype", ot)], zi.prototype, "setImageModeration", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [String]), ge("design:returntype", void 0)], zi.prototype, "setP2PTransport", null), St([Pr({ reportResult: !0 }), ge("design:type", Function), ge("design:paramtypes", []), ge("design:returntype", Array)], zi.prototype, "getJoinChannelServiceRecords", null), St([Pr(), ge("design:type", Function), ge("design:paramtypes", [Boolean]), ge("design:returntype", ot)], zi.prototype, "setPublishAudioFilterEnabled", null); + class yA { + constructor(s, c) { + Z(this, "id", 0), Z(this, "element", void 0), Z(this, "peerPair", void 0), Z(this, "context", void 0), Z(this, "audioPlayerElement", void 0), Z(this, "audioTrack", void 0), yA.count += 1, this.id = yA.count, this.element = s, this.context = c; + } + initPeers() { + this.peerPair = [new RTCPeerConnection(), new RTCPeerConnection()], this.peerPair[1].ontrack = (s) => { + const c = document.createElement("audio"); + c.srcObject = new MediaStream([s.track]), c.play(), this.audioPlayerElement = c; + }; + } + switchSdp() { + return ye(this, null, function* () { + if (!this.peerPair) + return; + const s = (p, m) => ye(this, null, function* () { + const T = m === "offer" ? yield p.createOffer() : yield p.createAnswer(); + return yield p.setLocalDescription(T), p.iceGatheringState === "complete" ? p.localDescription : new ot((D) => { + p.onicegatheringstatechange = () => { + p.iceGatheringState === "complete" && D(p.localDescription); + }; + }); + }), c = (p, m) => ye(this, null, function* () { + return yield p.setRemoteDescription(m); + }); + try { + const p = yield s(this.peerPair[0], "offer"); + yield c(this.peerPair[1], p); + const m = yield s(this.peerPair[1], "answer"); + yield c(this.peerPair[0], m); + } catch (p) { + throw new Je(_e.LOCAL_AEC_ERROR, p.toString()).print(); + } + }); + } + getTracksFromMediaElement(s) { + return ye(this, null, function* () { + if (this.audioTrack) + return this.audioTrack; + let c; + try { + s instanceof HTMLVideoElement && (s.captureStream ? s.captureStream() : s.mozCaptureStream()), c = this.context.createMediaStreamDestination(), this.context.createMediaElementSource(s).connect(c); + } catch (m) { + throw new Je(_e.LOCAL_AEC_ERROR, m.toString()).print(); + } + if (!c) + throw new Je(_e.LOCAL_AEC_ERROR, "no dest node when local aec").print(); + const p = c.stream.getAudioTracks()[0]; + return this.audioTrack = p, p; + }); + } + getElement() { + return this.element; + } + startEchoCancellation() { + return ye(this, null, function* () { + this.context.resume(), this.peerPair && this.close(), this.initPeers(); + const s = this.element, c = yield this.getTracksFromMediaElement(s); + this.peerPair && this.peerPair[0].addTrack(c), yield this.switchSdp(); + }); + } + close() { + ie.debug("close echo cancellation unit, id is", this.id), this.audioPlayerElement && this.audioPlayerElement.pause(), this.peerPair && this.peerPair.forEach((s) => { + s.close(); + }), this.peerPair = void 0, this.audioPlayerElement = void 0; + } + } + Z(yA, "count", 0); + const lBe = window.AudioContext || window.webkitAudioContext; + class Sre { + constructor() { + Z(this, "units", []), Z(this, "context", void 0); + } + processExternalMediaAEC(s) { + if (!this._doesEnvironmentNeedAEC()) + return ie.debug("the system does not need to process local aec"), -1; + this.context || (this.context = new lBe()); + let c = this.units.find((p) => p && p.getElement() === s); + return c || (c = new yA(s, this.context), this.units.push(c)), c.startEchoCancellation(), ie.debug("start processing local audio echo cancellation, id is", c.id), c.id; + } + _doesEnvironmentNeedAEC() { + return yi().name !== xi.SAFARI; + } + } + St([Pr({ report: vr }), ge("design:type", Function), ge("design:paramtypes", [HTMLAudioElement]), ge("design:returntype", Number)], Sre.prototype, "processExternalMediaAEC", null); + const cBe = new Sre(); + function bre(h, s) { + var c = Object.keys(h); + if (Object.getOwnPropertySymbols) { + var p = Object.getOwnPropertySymbols(h); + s && (p = p.filter(function(m) { + return Object.getOwnPropertyDescriptor(h, m).enumerable; + })), c.push.apply(c, p); + } + return c; + } + function Ere(h) { + for (var s = 1; s < arguments.length; s++) { + var c = arguments[s] != null ? arguments[s] : {}; + s % 2 ? bre(Object(c), !0).forEach(function(p) { + Z(h, p, c[p]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(h, Object.getOwnPropertyDescriptors(c)) : bre(Object(c)).forEach(function(p) { + Object.defineProperty(h, p, Object.getOwnPropertyDescriptor(c, p)); + }); + } + return h; + } + const oV = window || document; + function Cre(h) { + let s = arguments.length > 1 && arguments[1] !== void 0 && arguments[1]; + if (!oV) + return; + const c = Mo._cspEventHandlerPointer; + if (c && s) + return void console.error(c, s); + const p = (m) => { + if (!(m && m.blockedURI && (Mo.onSecurityPolicyViolation || Mo.getListeners(Ld.SECURITY_POLICY_VIOLATION).length > 0))) + return; + const T = m.blockedURI; + Le("CSP_DETECTED_HOSTNAME_LIST").some((D) => rr(T).call(T, D)) && (Mo.onSecurityPolicyViolation && typeof Mo.onSecurityPolicyViolation == "function" && Mo.onSecurityPolicyViolation(m), Mo.getListeners(Ld.SECURITY_POLICY_VIOLATION).length > 0 && Mo.safeEmit(Ld.SECURITY_POLICY_VIOLATION, m)); + }; + c && oV.removeEventListener("securitypolicyviolation", c), (s || h && typeof h == "function" || Mo.getListeners(Ld.SECURITY_POLICY_VIOLATION).length > 0) && oV.addEventListener("securitypolicyviolation", p), Mo._cspEventHandlerPointer = p; + } + Gi("PROCESS_ID", "process-".concat(ra(8, ""), "-").concat(ra(4, ""), "-").concat(ra(4, ""), "-").concat(ra(4, ""), "-").concat(ra(12, ""))), function() { + let h; + try { + h = window.localStorage.getItem("websdk_ng_global_parameter"); + } catch (s) { + return void ie.error("Error loading sdk config", s.message); + } + if (h) + try { + const s = JSON.parse(window.atob(h)), c = Date.now(); + ie.debug("Loading global parameters from cache", s), Object.keys(s).forEach((p) => { + if (Object.prototype.hasOwnProperty.call(Ol, p)) { + const { value: m, expires: T } = s[p]; + if (T && T <= c) + return; + Jy[p] = m, Ol[p] = m; + } + }); + } catch (s) { + ie.error("Error loading mutableParamsCache: ".concat(h), s.message); + } + }(), Array.isArray(Jy.AREAS) && Jy.AREAS.length > 0 && p5(Jy.AREAS, !0); + const Tre = (h, s, c) => { + ie.debug("setParameter key:".concat(h, ", value:").concat(JSON.stringify(s))), Gi(h, s, c); + }, Mo = function(h) { + const s = new Ra(), c = h, p = { getListeners: s.getListeners.bind(s), on: (m, T) => (function(D, k) { + D === Ld.SECURITY_POLICY_VIOLATION && Cre(k, !0); + }(m, T), s.on.bind(s)(m, T)), addListener: s.addListener.bind(s), once: s.once.bind(s), off: s.off.bind(s), removeAllListeners: s.removeAllListeners.bind(s), emit: s.emit.bind(s), safeEmit: s.safeEmit.bind(s) }; + return Ere(Ere({}, c), p); + }({ __TRACK_LIST__: HC, VERSION: Gh, BUILD: Kj, ESM_BUNDLER: !1, ESM: !1, UMD: !0, DEV: !1, setParameter: Tre, getParameter: Le, getSupportedCodec: function() { + return ye(this, null, function* () { + let h = { audio: [], video: [] }; + try { + let s = new RTCPeerConnection(); + s.addTransceiver("video", { direction: "recvonly" }), s.addTransceiver("audio", { direction: "recvonly" }); + const c = (yield s.createOffer()).sdp; + if (!c) + return h; + s.close(), s = null, h = function(p) { + const m = { video: [], audio: [] }; + return p.match(/ VP8/i) && m.video.push("VP8"), p.match(/ VP9/i) && m.video.push("VP9"), p.match(/ AV1/i) && m.video.push("AV1"), p.match(/ H264/i) && m.video.push("H264"), p.match(/ H265/i) && m.video.push("H265"), p.match(/ opus/i) && m.audio.push("OPUS"), p.match(/ PCMU/i) && m.audio.push("PCMU"), p.match(/ PCMA/i) && m.audio.push("PCMA"), p.match(/ G722/i) && m.audio.push("G722"), m; + }(c); + } catch (s) { + throw new Je(_e.CREATE_OFFER_FAILED, s.toString && s.toString()).print(); + } + return h; + }); + }, checkSystemRequirements: function() { + const h = vr.reportApiInvoke(null, { name: Ao.CHECK_SYSTEM_REQUIREMENTS, options: [], tag: Na.TRACER }); + let s = !1; + try { + const T = window.RTCPeerConnection, D = navigator.mediaDevices && navigator.mediaDevices.getUserMedia, k = window.WebSocket; + s = !!(T && D && k); + } catch (T) { + return ie.error("check system requirement failed: ", T), !1; + } + let c = !1; + const p = yi(); + p.name === xi.CHROME && Number(p.version) >= 58 && (!Oke() || Dke()) && (c = !0), p.name === xi.FIREFOX && Number(p.version) >= 56 && (c = !0), p.name === xi.OPERA && Number(p.version) >= 45 && (c = !0), p.name === xi.SAFARI && Number(p.version) >= 11 && (c = !0), (UZ() || yi().name === xi.QQ) && (c = !0), ie.debug("checkSystemRequirements, api:", s, "browser", c); + const m = s && c; + return h.onSuccess(m), m; + }, getDevices: function(h) { + return ch.enumerateDevices(!0, !0, h); + }, getMicrophones: function(h) { + return ch.getRecordingDevices(h); + }, getCameras: function(h) { + return ch.getCamerasDevices(h); + }, getElectronScreenSources: XJ, getPlaybackDevices: function(h) { + return ch.getSpeakers(h); + }, createClient: function() { + var h; + let s = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : { codec: "vp8", audioCodec: "opus", mode: "rtc" }; + const c = vr.reportApiInvoke(null, { name: Ao.CREATE_CLIENT, options: [s], tag: Na.TRACER }); + try { + (function(p) { + qo(p.codec, "config.codec", ["vp8", "vp9", "av1", "h264", "h265"]), qo(p.mode, "config.mode", ["rtc", "live", "p2p"]), p.audioCodec !== void 0 && qo(p.audioCodec, "config.audioCodec", ["opus", "pcmu", "pcma", "g722"]), p.proxyServer !== void 0 && Gs(p.proxyServer, "config.proxyServer", 1, 1e4), p.turnServer !== void 0 && XZ(p.turnServer), p.httpRetryConfig !== void 0 && YZ(p.httpRetryConfig), p.websocketRetryConfig !== void 0 && YZ(p.websocketRetryConfig); + })(s); + } catch (p) { + throw c.onError(p), p; + } + return sBe() || (s.codec === "vp9" && (s.codec = "vp8", ie.debug("browser not support vp9, force use vp8")), Gi("UNSUPPORTED_VIDEO_CODEC", ["vp9"])), s.audioCodec === void 0 && (s.audioCodec = "opus"), c.onSuccess(), new zi(dp(dp({ forceWaitGatewayResponse: !0 }, s), {}, { role: rr(h = ["rtc", "p2p"]).call(h, s.mode) ? "host" : s.role || "audience" })); + }, createCameraVideoTrack: function() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + const s = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_CAM_VIDEO_TRACK, options: [NM({}, h)] }), c = kM(h), p = ra(8, "track-cam-"); + let m = null; + const T = h.encoderConfig === "720p_auto"; + ie.info("start create camera video track with config", JSON.stringify(h), "trackId", p); + try { + m = (yield lh({ video: c }, p)).getVideoTracks()[0] || null; + } catch (k) { + throw s.onError(k), k; + } + if (!m) { + const k = new mt(_e.UNEXPECTED_ERROR, "can not find track in media stream"); + return s.onError(k), k.throw(ie); + } + h.optimizationMode && P5(p, m, h, Eg(h.encoderConfig)); + const D = new d_(m, h, c, h.scalabiltyMode ? RM(h.scalabiltyMode) : { numSpatialLayers: 1, numTemporalLayers: 1 }, h.optimizationMode, p); + return T && D.startMonitorStats(), s.onSuccess(D.getTrackId()), ie.info("create camera video success, trackId:", p), D; + }); + }, createCustomVideoTrack: function(h) { + const s = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_CUSTOM_VIDEO_TRACK, options: [h] }), c = new In(h.mediaStreamTrack, { width: h.width, height: h.height, frameRate: h.frameRate, bitrateMax: h.bitrateMax, bitrateMin: h.bitrateMin }, h.scalabiltyMode ? RM(h.scalabiltyMode) : { numSpatialLayers: 1, numTemporalLayers: 1 }, h.optimizationMode, ra(8, "track-cus-"), [ua.CUSTOM_TRACK]); + return s.onSuccess(c.getTrackId()), ie.info("create custom video track success with config", h, "trackId", c.getTrackId()), c; + }, createScreenVideoTrack: function() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "disable"; + const c = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_SCREEN_VIDEO_TRACK, options: [NM({}, h), s] }), p = h.encoderConfig === "720p_auto"; + h.encoderConfig ? typeof h.encoderConfig == "string" || h.encoderConfig.width && h.encoderConfig.height || (h.encoderConfig.width = { max: 1920 }, h.encoderConfig.height = { max: 1080 }) : h.encoderConfig = "1080p_2"; + const m = function(G) { + const K = {}; + G.screenSourceType && (K.mediaSource = G.screenSourceType), G.extensionId && Jv() && (K.extensionId = G.extensionId); + const { displaySurface: q, selfBrowserSurface: ue, surfaceSwitching: oe, systemAudio: he } = G; + (Sj(107) || PZ(107) || NZ(93)) && (q && (qo(q, "displaySurface", ["browser", "window", "monitor"]), K.displaySurface = q), ue ? (qo(ue, "selfBrowserSurface", ["exclude", "include"]), K.selfBrowserSurface = ue) : K.selfBrowserSurface = "include", oe && (qo(oe, "surfaceSwitching", ["exclude", "include"]), K.surfaceSwitching = oe)), (Sj(105) || PZ(105) || NZ(91)) && he && (qo(he, "systemAudio", ["exclude", "include"]), K.systemAudio = he), G.electronScreenSourceId && (K.sourceId = G.electronScreenSourceId); + const Ce = G.encoderConfig ? S5(G.encoderConfig) : null; + return K.mandatory = { chromeMediaSource: "desktop", maxWidth: Ce ? Ce.width : void 0, maxHeight: Ce ? Ce.height : void 0 }, Ce && (Ce.frameRate && (typeof Ce.frameRate == "number" ? (K.mandatory.maxFrameRate = Ce.frameRate, K.mandatory.minFrameRate = Ce.frameRate) : (K.mandatory.maxFrameRate = Ce.frameRate.max || Ce.frameRate.ideal || Ce.frameRate.exact || void 0, K.mandatory.minFrameRate = Ce.frameRate.min || Ce.frameRate.ideal || Ce.frameRate.exact || void 0), K.frameRate = Ce.frameRate), Ce.width && (K.width = Ce.width), Ce.height && (K.height = Ce.height)), K; + }(h), T = ra(8, "track-scr-v-"); + let D = null, k = null; + const N = _i(); + if (!N.supportShareAudio && s === "enable") { + const G = new mt(_e.NOT_SUPPORTED, "your browser or platform is not support share-screen with audio"); + return c.onError(G), G.throw(ie); + } + ie.info("start create screen video track with config", h, "withAudio", s, "trackId", T); + try { + const G = yield lh({ screen: m, screenAudio: s === "auto" ? N.supportShareAudio : s === "enable" }, T); + D = G.getVideoTracks()[0] || null, k = G.getAudioTracks()[0] || null; + } catch (G) { + throw c.onError(G), G; + } + if (!D) { + const G = new mt(_e.UNEXPECTED_ERROR, "can not find track in media stream"); + return c.onError(G), G.throw(ie); + } + if (!k && s === "enable") { + D && D.stop(); + const G = new mt(_e.SHARE_AUDIO_NOT_ALLOWED); + return c.onError(G), G.throw(ie); + } + h.optimizationMode || (h.optimizationMode = "detail"), h.optimizationMode && (P5(T, D, h, h.encoderConfig && S5(h.encoderConfig) || void 0), h.encoderConfig && typeof h.encoderConfig != "string" && (h.encoderConfig.bitrateMin = h.encoderConfig.bitrateMax)); + const U = new In(D, h.encoderConfig ? S5(h.encoderConfig) : {}, h.scalabiltyMode ? RM(h.scalabiltyMode) : { numSpatialLayers: 1, numTemporalLayers: 1 }, h.optimizationMode, T, [ua.SCREEN_TRACK]); + if (p && U.startMonitorStats(), !k) + return c.onSuccess(U.getTrackId()), ie.info("create screen video track success", "video:", U.getTrackId()), U; + const V = new Vi(k, void 0, ra(8, "track-scr-a-"), !1); + return c.onSuccess([U.getTrackId(), V.getTrackId()]), ie.info("create screen video track success", "video:", U.getTrackId(), "audio:", V.getTrackId()), [U, V]; + }); + }, createMicrophoneAndCameraTracks: function() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + const c = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_MIC_AND_CAM_TRACKS, options: [h, s] }), p = s.encoderConfig === "720p_auto", m = kM(s), T = lQ(h), D = ra(8, "track-mic-"), k = ra(8, "track-cam-"); + let N = null, U = null; + ie.info("start create camera video track(".concat(k, ") and microphone audio track(").concat(D, ") with config, audio: ").concat(JSON.stringify(h), ", video: ").concat(JSON.stringify(s))); + try { + const K = yield lh({ audio: T, video: m }, "".concat(D, "-").concat(k)); + N = K.getAudioTracks()[0], U = K.getVideoTracks()[0]; + } catch (K) { + throw c.onError(K), K; + } + if (!N || !U) { + const K = new mt(_e.UNEXPECTED_ERROR, "can not find tracks in media stream"); + return c.onError(K), K.throw(ie); + } + s.optimizationMode && P5(k, U, s, Eg(s.encoderConfig)); + const V = new cm(N, h, T, D), G = new d_(U, s, m, s.scalabiltyMode ? RM(s.scalabiltyMode) : { numSpatialLayers: 1, numTemporalLayers: 1 }, s.optimizationMode, k); + return p && G.startMonitorStats(), c.onSuccess([V.getTrackId(), G.getTrackId()]), ie.info("create camera video track(".concat(k, ") and microphone audio track(").concat(D, ") success")), [V, G]; + }); + }, createMicrophoneAudioTrack: function() { + return ye(this, arguments, function* () { + let h = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + const s = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_MIC_AUDIO_TRACK, options: [h] }), c = lQ(h), p = ra(8, "track-mic-"); + let m = null; + ie.info("start create microphone audio track with config", JSON.stringify(h), "trackId", p); + try { + m = (yield lh({ audio: c }, p)).getAudioTracks()[0] || null; + } catch (D) { + throw s.onError(D), D; + } + if (!m) { + const D = new mt(_e.UNEXPECTED_ERROR, "can not find track in media stream"); + return s.onError(D), D.throw(ie); + } + const T = new cm(m, h, c, p); + return s.onSuccess(T.getTrackId()), ie.info("create microphone audio track success, trackId:", p), T; + }); + }, createCustomAudioTrack: function(h) { + const s = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_CUSTOM_AUDIO_TRACK, options: [h] }), c = new Vi(h.mediaStreamTrack, h.encoderConfig ? DM(h.encoderConfig) : {}, ra(8, "track-cus-"), !1); + return ie.info("create custom audio track success with config", h, "trackId", c.getTrackId()), s.onSuccess(c.getTrackId()), c; + }, createBufferSourceAudioTrack: function(h) { + return ye(this, null, function* () { + var s; + const { cacheOnlineFile: c, encoderConfig: p } = h; + let { source: m } = h; + const T = { source: m instanceof AudioBuffer ? "AudioBuffer" : m instanceof File ? (s = File.name) !== null && s !== void 0 ? s : "File" : m, cacheOnlineFile: c, encoderConfig: p }, D = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CREATE_BUFFER_AUDIO_TRACK, options: [T] }); + if (Le("DISABLE_WEBAUDIO")) + throw new mt(_e.NOT_SUPPORTED, "can not create BufferSourceAudioTrack when WebAudio disabled"); + const k = ra(8, "track-buf-"); + ie.info("start create buffer source audio track with config", JSON.stringify(T), "trackId", k); + const N = m; + if (!(m instanceof AudioBuffer)) + try { + m = yield SNe(m, c); + } catch (G) { + return D.onError(G), G.throw(ie); + } + const U = new _Ne(m), V = new h_(N, U, p ? DM(p) : {}, k); + return ie.info("create buffer source audio track success, trackId:", k), D.onSuccess(V.getTrackId()), V; + }); + }, setAppType: function(h) { + if (ie.debug("setAppType: ".concat(h)), !(Number.isInteger(h) && h >= 0)) + throw ie.debug("Invalid appType"), new Je(_e.INVALID_PARAMS, "invalid app type", h); + Gi("APP_TYPE", Math.floor(h)); + }, setLogLevel: function(h) { + ie.setLogLevel(h); + }, enableLogUpload: function() { + Le("USE_NEW_LOG") ? Gi("UPLOAD_LOG", !0) : ie.enableLogUpload(); + }, disableLogUpload: function() { + Le("USE_NEW_LOG") ? Gi("UPLOAD_LOG", !1) : ie.disableLogUpload(); + }, createChannelMediaRelayConfiguration: function() { + return new gk(); + }, checkAudioTrackIsActive: function(s) { + return ye(this, arguments, function* (h) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5e3; + const p = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CHECK_AUDIO_TRACK_IS_ACTIVE, options: [c] }); + if (!(h instanceof Vi || h instanceof jd)) { + const U = new Je(_e.INVALID_TRACK, "the parameter is not a audio track"); + return p.onError(U), U.throw(); + } + c && c < 1e3 && (c = 1e3); + const m = h instanceof Vi ? h.getTrackLabel() : "remote_track", T = h.getVolumeLevel(); + let D = T, k = T; + const N = Date.now(); + return new ot((U) => { + const V = setInterval(() => { + const G = h.getVolumeLevel(); + D = G > D ? G : D, k = G < k ? G : k; + const K = D - k > 1e-4, q = Date.now() - N; + if (K || q > c) { + clearInterval(V); + const ue = K, oe = { duration: q, deviceLabel: m, maxVolumeLevel: D, result: ue }; + ie.info("[track-".concat(h.getTrackId(), "] check audio track active completed. ").concat(JSON.stringify(oe))), p.onSuccess(oe), U(ue); + } + }, 200); + }); + }); + }, checkVideoTrackIsActive: function(s) { + return ye(this, arguments, function* (h) { + let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5e3; + const p = vr.reportApiInvoke(null, { tag: Na.TRACER, name: Ao.CHECK_VIDEO_TRACK_IS_ACTIVE, options: [c] }); + if (!(h instanceof In || h instanceof Cg)) { + const K = new Je(_e.INVALID_TRACK, "the parameter is not a video track"); + return p.onError(K), K.throw(); + } + c && c < 1e3 && (c = 1e3); + const m = h instanceof In ? h.getTrackLabel() : "remote_track", T = h.getMediaStreamTrack(!0), D = document.createElement("video"); + D.style.width = "1px", D.style.height = "1px", D.setAttribute("muted", ""), D.muted = !0, D.setAttribute("playsinline", ""), D.controls = !1, (ks() || JO()) && (D.style.opacity = "0.01", D.style.position = "fixed", D.style.left = "0", D.style.top = "0", document.body.appendChild(D)), D.srcObject = new MediaStream([T]), D.play(); + const k = document.createElement("canvas"); + k.width = 160, k.height = 120; + let N = 0, U = 0; + try { + const K = Date.now(); + N = yield function(q, ue, oe, he) { + let Ce, ke = 0, Ge = null; + return new ot((tt, Ye) => { + function et() { + ke > he && Ce && (Ce(), tt(ke)); + const ht = oe.getContext("2d"); + if (!ht) { + const Vt = new Je(_e.UNEXPECTED_ERROR, "can not get canvas 2d context."); + return ie.error(Vt.toString()), void Ye(Vt); + } + ht.drawImage(q, 0, 0, 160, 120); + const st = ht.getImageData(0, 0, oe.width, oe.height), Ut = Math.floor(st.data.length / 3); + if (Ge) { + for (let Vt = 0; Vt < Ut; Vt += 3) + if (st.data[Vt] !== Ge[Vt]) + return ke += 1, void (Ge = st.data); + Ge = st.data; + } else + Ge = st.data; + } + setTimeout(() => { + Ce && (Ce(), tt(ke)); + }, ue), Ce = x5(() => { + et(); + }, 30); + }); + }(D, c, k, 4), U = Date.now() - K; + } catch (K) { + throw p.onError(K), K; + } + oBe === xi.SAFARI && (D.pause(), D.remove()), D.srcObject = null; + const V = N > 4, G = { duration: U, changedPicNum: N, deviceLabel: m, result: V }; + return ie.info("[track-".concat(h.getTrackId(), "] check video track active completed. ").concat(JSON.stringify(G))), p.onSuccess(G), V; + }); + }, setArea: p5, audioElementPlayCenter: hc, resumeAudioContext: function() { + hc.autoResumeAfterInterruption(!0); + }, processExternalMediaAEC: function(h) { + cBe.processExternalMediaAEC(h); + }, registerExtensions: function(h) { + const s = Le("PLUGIN_INFO") || []; + h.forEach((c) => { + "name" in c && !rr(s).call(s, c.name) && s.push(c.name); + const p = c; + p.__registered__ = !0, p.logger.hookLog = ie.extLog, p.reporter.hookApiInvoke = vr.extApiInvoke, p.parameters && Object.keys(p.parameters).forEach((m) => { + p.parameters[m] = Le(m); + }); + }), Tre("PLUGIN_INFO", s); + }, ChannelMediaRelayError: r_, ChannelMediaRelayEvent: ap, ChannelMediaRelayState: Yl, RemoteStreamFallbackType: E5, RemoteStreamType: b5, ConnectionDisconnectedReason: jn, AudienceLatencyLevelType: wj, AREAS: vi }); + return Object.defineProperties(Mo, { onAudioAutoplayFailed: { get: () => uh.onAudioAutoplayFailed, set: (h) => { + uh.onAudioAutoplayFailed = h; + } }, onAutoplayFailed: { get: () => uh.onAutoplayFailed, set: (h) => { + uh.onAutoplayFailed = h; + } }, _onSecurityPolicyViolation: { value: void 0, writable: !0 }, _cspEventHandlerPointer: { value: void 0, writable: !0 }, onSecurityPolicyViolation: { get: () => Mo._onSecurityPolicyViolation, set(h) { + Mo._onSecurityPolicyViolation = h, Cre(h); + } }, __CLIENT_LIST__: { get: () => Le("SHOW_GLOBAL_CLIENT_LIST") ? e_ : [] } }), ch.on(lm.CAMERA_DEVICE_CHANGED, (h) => { + ie.info("camera device changed", JSON.stringify(h)), Mo.onCameraChanged && Mo.onCameraChanged(h), Mo.safeEmit(Ld.CAMERA_CHANGED, h); + }), ch.on(lm.RECORDING_DEVICE_CHANGED, (h) => { + ie.info("microphone device changed", JSON.stringify(h)), Mo.onMicrophoneChanged && Mo.onMicrophoneChanged(h), Mo.safeEmit(Ld.MICROPHONE_CHANGED, h); + }), ch.on(lm.PLAYOUT_DEVICE_CHANGED, (h) => { + ie.debug("playout device changed", JSON.stringify(h)), Mo.onPlaybackDeviceChanged && Mo.onPlaybackDeviceChanged(h), Mo.safeEmit(Ld.PLAYBACK_DEVICE_CHANGED, h); + }), hc.onAutoplayFailed = () => { + ie.info("detect audio element autoplay failed"), uh.onAudioAutoplayFailed && uh.onAudioAutoplayFailed(); + }, $i.on("autoplay-failed", () => { + ie.info("detect webaudio autoplay failed"), uh.onAudioAutoplayFailed && uh.onAudioAutoplayFailed(), Mo.safeEmit(Ld.AUTOPLAY_FAILED); + }), $i.on(ds.STATE_CHANGE, (h, s) => { + ie.info("audio context state changed: ".concat(s, " => ").concat(h)), Mo.onAudioContextStateChanged && Mo.onAudioContextStateChanged(h, s), Mo.safeEmit(Ld.AUDIO_CONTEXT_STATE_CHANGED, h, s); + }), Do.on(tm.NETWORK_STATE_CHANGE, (h, s) => { + ie.info("[network-indicator] network state changed, ".concat(s, " => ").concat(h)); + }), window && (window.__ARTC__ = Mo), Mo; + }); +})(j1e); +var sUt = j1e.exports; +const cO = /* @__PURE__ */ cD(sUt); +let dN; +const lUt = new Uint8Array(16); +function cUt() { + if (!dN && (dN = typeof crypto != "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !dN)) + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + return dN(lUt); +} +const pc = []; +for (let e = 0; e < 256; ++e) + pc.push((e + 256).toString(16).slice(1)); +function uUt(e, t = 0) { + return pc[e[t + 0]] + pc[e[t + 1]] + pc[e[t + 2]] + pc[e[t + 3]] + "-" + pc[e[t + 4]] + pc[e[t + 5]] + "-" + pc[e[t + 6]] + pc[e[t + 7]] + "-" + pc[e[t + 8]] + pc[e[t + 9]] + "-" + pc[e[t + 10]] + pc[e[t + 11]] + pc[e[t + 12]] + pc[e[t + 13]] + pc[e[t + 14]] + pc[e[t + 15]]; +} +const hUt = typeof crypto != "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto), Spe = { + randomUUID: hUt +}; +function rF(e, t, r) { + if (Spe.randomUUID && !t && !e) + return Spe.randomUUID(); + e = e || {}; + const n = e.random || (e.rng || cUt)(); + if (n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128, t) { + r = r || 0; + for (let i = 0; i < 16; ++i) + t[r + i] = n[i]; + return t; + } + return uUt(n); +} +const dUt = [$lowcoder_sdk.closeEvent], tH = 378, bpe = 16; +function Epe(e) { + return $lowcoder_sdk.isNumeric(e) ? e + "px" : e; +} +const ns = cO.createClient({ + mode: "rtc", + codec: "vp8" +}); +cO.setLogLevel(4); +let ow, _f, Mb, Ru, sE, eR; +const OX = (e) => ye(void 0, null, function* () { + if (_f) + return _f.setEnabled(e); + _f = yield cO.createCameraVideoTrack(), _f.play(Ru + ""); +}), $1e = (e) => ye(void 0, null, function* () { + if (ow) + return ow.setEnabled(e); + ow = yield cO.createMicrophoneAudioTrack(), e ? yield ns.publish(ow) : yield ns.unpublish(ow); +}), fUt = (e) => ye(void 0, null, function* () { + try { + e === !1 ? (yield ns.unpublish(Mb), Mb.close(), yield ns.publish(_f), _f.play(Ru + "")) : (Mb = yield cO.createScreenVideoTrack({ + screenSourceType: "screen" + }, "disable"), yield ns.unpublish(_f), Mb.play("share-screen"), yield ns.publish(Mb)); + } catch (t) { + console.error("Failed to create screen share stream:", t); + } +}), pUt = () => ye(void 0, null, function* () { + Mb && Mb.close(), _f && (yield ns.unpublish(_f), yield OX(!1)), ow && (yield $1e(!1)), yield ns.leave(), yield sE.leave(); +}), gUt = (e, t, r, n) => ye(void 0, null, function* () { + yield OX(!0), yield ns.join(e, t, n, Ru), yield ns.publish(_f), yield yUt(e, Ru, r, t); +}), vUt = (e) => { + sE.sendMessage({ + text: JSON.stringify(e) + }); +}, mUt = (e, t) => { + eR.sendMessageToPeer({ + text: JSON.stringify(e) + }, t); +}, yUt = (e, t, r, n) => ye(void 0, null, function* () { + eR = (yield import("./e158889d.js").then((o) => o.i)).default.createInstance(e); + let a = { + uid: String(t), + token: r || null + }; + yield eR.login(a), sE = eR.createChannel(n), yield sE.join(); +}), _Ut = "__canvas_container__", SUt = { + visible: $lowcoder_sdk.withDefault($lowcoder_sdk.BooleanStateControl, "false"), + onEvent: $lowcoder_sdk.eventHandlerControl(dUt), + onMeetingEvent: $lowcoder_sdk.MeetingEventHandlerControl, + width: $lowcoder_sdk.StringControl, + height: $lowcoder_sdk.StringControl, + autoHeight: $lowcoder_sdk.AutoHeightControl, + style: $lowcoder_sdk.styleControl($lowcoder_sdk.DrawerStyle), + placement: $lowcoder_sdk.PositionControl, + maskClosable: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + showMask: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0), + meetingActive: $lowcoder_sdk.withDefault($lowcoder_sdk.BooleanStateControl, "false"), + audioControl: $lowcoder_sdk.withDefault($lowcoder_sdk.BooleanStateControl, "false"), + videoControl: $lowcoder_sdk.withDefault($lowcoder_sdk.BooleanStateControl, "true"), + endCall: $lowcoder_sdk.withDefault($lowcoder_sdk.BooleanStateControl, "false"), + sharing: $lowcoder_sdk.withDefault($lowcoder_sdk.BooleanStateControl, "false"), + appId: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, yt("meeting.appid")), + participants: $lowcoder_sdk.stateComp([]), + usersScreenShared: $lowcoder_sdk.stateComp([]), + localUser: $lowcoder_sdk.jsonObjectExposingStateControl(""), + localUserID: $lowcoder_sdk.withDefault($lowcoder_sdk.stringStateControl(yt("meeting.localUserID")), rF() + ""), + meetingName: $lowcoder_sdk.withDefault($lowcoder_sdk.stringStateControl(yt("meeting.meetingName")), rF() + ""), + rtmToken: $lowcoder_sdk.stringStateControl(yt("meeting.rtmToken")), + rtcToken: $lowcoder_sdk.stringStateControl(yt("meeting.rtcToken")), + messages: $lowcoder_sdk.stateComp([]) +}; +let sD = function() { + return new $lowcoder_sdk.ContainerCompBuilder(SUt, (e, t) => { + const r = ["top", "bottom"].includes(e.placement), x = e.container, { + items: n + } = x, i = Rre(x, [ + "items" + ]), a = $react.useCallback((b, R, M, O) => { + t(r ? $lowcoder_sdk.changeChildAction("height", M.height, !0) : $lowcoder_sdk.changeChildAction("width", M.width, !0)); + }, [t, r]), [o, l] = $react.useState([]), [u, d] = $react.useState({ + update: !1, + userid: null + }), [f, g] = $react.useState([]), [v, y] = $react.useState(!1), [C, A] = $react.useState(), [S, _] = $react.useState(), [E, I] = $react.useState(); + $react.useEffect(() => { + if (S) { + let b = e.participants, R = { + user: S.uid, + audiostatus: S.hasAudio, + streamingVideo: !0 + }; + l((M) => [...M, R]), t($lowcoder_sdk.changeChildAction("participants", w($lowcoder_sdk.getData([...b, R]).data, "user"), !1)); + } + }, [S]); + function w(b, R) { + const M = [], O = /* @__PURE__ */ new Set(); + for (const P of b) { + const B = P[R]; + O.has(B) || (O.add(B), M.push(P)); + } + return M; + } + return $react.useEffect(() => { + if (E) { + let b = o.filter((M) => M.user !== E.uid); + b.filter((M) => M.host === !0).length == 0 && b.length > 0 && (b[0].host = !0), l(b), t($lowcoder_sdk.changeChildAction("participants", w($lowcoder_sdk.getData(b).data, "user"), !1)); + } + }, [E]), $react.useEffect(() => { + if (u.userid) { + const R = e.participants.map((M) => M.user === u.userid && M.speaking != u.update ? rn(br({}, M), { + speaking: u.update + }) : M); + t($lowcoder_sdk.changeChildAction("participants", $lowcoder_sdk.getData(R).data, !1)); + } + }, [u]), $react.useEffect(() => { + const R = e.participants.map((O) => O.user === (C == null ? void 0 : C.uid) ? rn(br({}, O), { + streamingSharing: e.sharing.value + }) : O); + t($lowcoder_sdk.changeChildAction("participants", $lowcoder_sdk.getData(R).data, !1)); + let M = { + user: Ru + "", + audiostatus: e.audioControl.value, + streamingVideo: e.videoControl.value, + streamingSharing: e.sharing.value, + speaking: v + }; + e.localUser.onChange(M); + }, [e.sharing.value]), $react.useEffect(() => { + const R = e.participants.map((M) => M.user === (C == null ? void 0 : C.uid) ? rn(br({}, M), { + streamingVideo: C == null ? void 0 : C.hasVideo + }) : M); + t($lowcoder_sdk.changeChildAction("participants", $lowcoder_sdk.getData(R).data, !1)); + }, [C == null ? void 0 : C.hasVideo]), $react.useEffect(() => { + f && t($lowcoder_sdk.changeChildAction("messages", $lowcoder_sdk.getData(f).data, !1)); + }, [f]), $react.useEffect(() => { + if (v === !0 || C) { + let b = { + user: Ru + "", + audiostatus: e.audioControl.value, + streamingVideo: e.videoControl.value, + speaking: v + }; + e.localUser.onChange(b); + } + }, [v]), $react.useEffect(() => { + sE && (eR.on("MessageFromPeer", function(b, R) { + g((M) => (M.length >= 500 && M.pop(), [...M, { + peermessage: JSON.parse(b.text + ""), + from: R + }])); + }), sE.on("ChannelMessage", function(b, R) { + g((M) => (M.length >= 500 && M.pop(), [...M, { + channelmessage: JSON.parse(b.text + ""), + from: R + }])), t($lowcoder_sdk.changeChildAction("messages", $lowcoder_sdk.getData(f).data, !1)); + })); + }, [sE]), $react.useEffect(() => { + ns && (ns.enableAudioVolumeIndicator(), ns.on("user-joined", (b) => { + _(b); + }), ns.on("user-left", (b, R) => { + I(b); + }), ns.on("volume-indicator", (b) => { + b.length !== 0 && b.map((R) => { + const M = R.level >= 30; + R.uid === Ru && e.localUser.value.speaking != M ? y(M) : d({ + update: M, + userid: R.uid + }); + }); + }), ns.on("user-published", (b, R) => ye(this, null, function* () { + A(b); + })), ns.on("user-unpublished", (b, R) => { + A(b); + })); + }, [ns]), /* @__PURE__ */ dt($lowcoder_sdk.BackgroundColorContext.Provider, { + value: e.style.background, + children: /* @__PURE__ */ dt( + $lowcoder_sdk.Drawer, + { + onResizeStop: a, + rootStyle: e.visible.value ? { + overflow: "auto", + pointerEvents: "auto" + } : {}, + styles: { + wrapper: { + maxHeight: "100%", + maxWidth: "100%" + }, + body: { + padding: 0, + backgroundColor: e.style.background + } + }, + closable: !1, + placement: e.placement, + open: e.visible.value, + getContainer: () => document.querySelector(`#${_Ut}`) || document.body, + footer: null, + width: Epe(e.width || tH), + height: e.autoHeight ? "" : Epe(e.height || tH), + onClose: (b) => { + e.visible.onChange(!1); + }, + afterOpenChange: (b) => { + b || e.onEvent("close"); + }, + zIndex: $lowcoder_sdk.Layers.drawer, + maskClosable: e.maskClosable, + mask: e.showMask, + children: /* @__PURE__ */ dt($lowcoder_sdk.InnerGrid, rn(br({}, i), { + items: $lowcoder_sdk.gridItemCompToGridItems(n), + autoHeight: e.autoHeight, + minHeight: r ? tH + "px" : "100%", + style: { + height: "100%" + }, + containerPadding: [bpe, bpe], + hintPlaceholder: $lowcoder_sdk.HintPlaceHolder, + bgColor: e.style.background + })) + } + ) + }); + }).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.meetings, + children: [e.appId.propertyView({ + label: yt("meeting.appid") + }), e.meetingName.propertyView({ + label: yt("meeting.meetingName") + }), e.localUserID.propertyView({ + label: yt("meeting.localUserID") + }), e.rtmToken.propertyView({ + label: yt("meeting.rtmToken") + }), e.rtcToken.propertyView({ + label: yt("meeting.rtcToken") + })] + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.interaction, + children: [e.onEvent.getPropertyView(), e.onMeetingEvent.getPropertyView()] + })] + })).build(); +}(); +sD = class extends sD { + autoHeight() { + return !1; + } +}; +sD = $lowcoder_sdk.withMethodExposing(sD, [{ + method: { + name: "openDrawer", + params: [] + }, + execute: (e, t) => { + e.children.visible.getView().onChange(!0); + } +}, { + method: { + name: "startSharing", + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + if (!e.children.meetingActive.getView().value) + return; + let r = !e.children.sharing.getView().value; + yield fUt(r), e.children.sharing.change(r); + }) +}, { + method: { + name: "audioControl", + description: yt("meeting.actionBtnDesc"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + if (!e.children.meetingActive.getView().value) + return; + let r = !e.children.audioControl.getView().value; + e.children.localUser.change({ + user: Ru + "", + audiostatus: r, + streamingVideo: e.children.videoControl.getView().value, + speaking: !1 + }), yield $1e(r), e.children.audioControl.change(r); + }) +}, { + method: { + name: "videoControl", + description: yt("meeting.actionBtnDesc"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + if (!e.children.meetingActive.getView().value) + return; + let r = !e.children.videoControl.getView().value; + _f ? _f.setEnabled(r) : yield OX(r); + let n = { + user: Ru + "", + streamingVideo: r, + audiostatus: e.children.audioControl.getView().value, + speaking: e.children.localUser.getView().value.speaking + }; + e.children.localUser.change(n), e.children.videoControl.change(r); + }) +}, { + method: { + name: "startMeeting", + description: yt("meeting.actionBtnDesc"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + console.log("startMeeting ", { + user: Ru + "", + audiostatus: !1, + speaking: !1, + streamingVideo: !0 + }), !e.children.meetingActive.getView().value && (Ru = e.children.localUserID.getView().value === "" ? rF() : e.children.localUserID.getView().value, e.children.localUser.change({ + user: Ru + "", + audiostatus: !1, + speaking: !1, + streamingVideo: !0 + }), console.log("startMeeting localUser ", { + user: Ru + "", + audiostatus: !1, + speaking: !1, + streamingVideo: !0 + }), e.children.localUser.children.value.dispatch($lowcoder_sdk.changeChildAction("localUser", { + user: Ru + "", + audiostatus: !1, + speaking: !1, + streamingVideo: !0 + }, !1)), e.children.videoControl.change(!0), yield gUt(e.children.appId.getView(), e.children.meetingName.getView().value === "" ? rF() : e.children.meetingName.getView().value, e.children.rtmToken.getView().value, e.children.rtcToken.getView().value), e.children.meetingActive.change(!0)); + }) +}, { + method: { + name: "broadCast", + description: yt("meeting.broadCast"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + if (!e.children.meetingActive.getView().value) + return; + let r = t !== void 0 && t[0] !== void 0 ? t[0] : "", n = t !== void 0 && t[1] !== void 0 ? t[1] : "", i = { + time: Date.now(), + message: r + }; + n.length > 0 && n[0] !== void 0 ? n.forEach((a) => { + i.to = a, mUt(i, String(a)); + }) : vUt(i); + }) +}, { + method: { + name: "setMeetingName", + description: yt("meeting.meetingName"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + let r = t[0]; + e.children.meetingName.change(r); + }) +}, { + method: { + name: "setUserName", + description: yt("meeting.userName"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + let r = t[0], n = e.children.localUser.getView().value; + e.children.localUser.change(rn(br({}, n), { + userName: r + })); + }) +}, { + method: { + name: "setRTCToken", + description: yt("meeting.rtcToken"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + let r = t[0]; + e.children.rtcToken.change(r); + }) +}, { + method: { + name: "setRTMToken", + description: yt("meeting.rtmToken"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + let r = t[0]; + e.children.rtmToken.change(r); + }) +}, { + method: { + name: "endMeeting", + description: yt("meeting.actionBtnDesc"), + params: [] + }, + execute: (e, t) => ye(void 0, null, function* () { + if (!e.children.meetingActive.getView().value) + return; + let r = !e.children.endCall.getView().value; + e.children.endCall.change(r), e.children.meetingActive.change(!1), yield pUt(), e.children.localUser.change({ + user: Ru + "", + streamingVideo: !1 + }); + }) +}]); +const bUt = $lowcoder_sdk.withExposingConfigs(sD, [new $lowcoder_sdk.NameConfig("appId", yt("meeting.appid")), new $lowcoder_sdk.NameConfig("localUser", yt("meeting.host")), new $lowcoder_sdk.NameConfig("participants", yt("meeting.participants")), new $lowcoder_sdk.NameConfig("meetingActive", yt("meeting.meetingActive")), new $lowcoder_sdk.NameConfig("meetingName", yt("meeting.meetingName")), new $lowcoder_sdk.NameConfig("localUserID", yt("meeting.localUserID")), new $lowcoder_sdk.NameConfig("messages", yt("meeting.messages")), new $lowcoder_sdk.NameConfig("rtmToken", yt("meeting.rtmToken")), new $lowcoder_sdk.NameConfig("rtcToken", yt("meeting.rtcToken"))]); +function EUt(e) { + const t = $lowcoder_sdk.genHoverColor(e.background), r = $lowcoder_sdk.genActiveColor(e.background); + return $styled_components.css` + &&& { + border-radius: ${e.radius}; + margin: ${e.margin}; + padding: ${e.padding}; + &:not(:disabled) { + // click animation color + --antd-wave-shadow-color: ${e.border}; + border-color: ${e.border}; + color: ${e.text}; + background-color: ${e.background}; + border-radius: ${e.radius}; + margin: ${e.margin}; + padding: ${e.padding}; + + &:hover, + &:focus { + color: ${e.text}; + background-color: ${t}; + border-color: ${e.border === e.background ? t : e.border}; + } + + &:active { + color: ${e.text}; + background-color: ${r}; + border-color: ${e.border === e.background ? r : e.border}; + } + } + } + `; +} +$styled_components(IB)` + ${(e) => e.$buttonStyle && EUt(e.$buttonStyle)} + width: 100%; + height: auto; + display: inline-flex; + justify-content: center; + align-items: center; + overflow: hidden; + span { + overflow: hidden; + text-overflow: ellipsis; + } + gap: 6px; +`; +$styled_components.div` + // The button component is disabled but can respond to drag & select events + ${(e) => e.disabled && ` + cursor: not-allowed; + button:disabled { + pointer-events: none; + } + `}; +`; +function CUt(e) { + return e && (e.hasOwnProperty("backgroundColor") || e.hasOwnProperty("borderColor") || e.hasOwnProperty("color")) ? { + background: e.backgroundColor, + border: e.borderColor, + text: e.color + } : e; +} +const TUt = $lowcoder_sdk.styleControl($lowcoder_sdk.ButtonStyle), V1e = $lowcoder_sdk.migrateOldData(TUt, CUt); +$lowcoder_sdk.refMethods([$lowcoder_sdk.focusWithOptions, $lowcoder_sdk.blurMethod, $lowcoder_sdk.clickMethod]); +const wUt = $lowcoder_sdk.styled.video` + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: space-around; +`, IUt = { + autoHeight: $lowcoder_sdk.withDefault($lowcoder_sdk.AutoHeightControl, "auto"), + profilePadding: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "0px"), + profileBorderRadius: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "0px"), + videoAspectRatio: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "1 / 1"), + onEvent: $lowcoder_sdk.MeetingEventHandlerControl, + disabled: $lowcoder_sdk.BoolCodeControl, + loading: $lowcoder_sdk.BoolCodeControl, + style: V1e, + viewRef: $lowcoder_sdk.RefControl, + userId: $lowcoder_sdk.withDefault($lowcoder_sdk.stringExposingStateControl(""), "{{meeting1.localUser}}"), + profileImageUrl: $lowcoder_sdk.withDefault($lowcoder_sdk.StringStateControl, "https://api.dicebear.com/7.x/fun-emoji/svg?seed=Peanut&radius=50&backgroundColor=transparent&randomizeIds=true&eyes=wink,sleepClose"), + noVideoText: $lowcoder_sdk.stringExposingStateControl(yt("meeting.noVideo")) +}; +let j6 = function() { + return new $lowcoder_sdk.UICompBuilder(IUt, (e) => { + const t = $react.useRef(null), r = $react.useRef(null), [n, i] = $react.useState(), [a, o] = $react.useState(""), [l, u] = $react.useState(!0); + return $react.useEffect(() => { + var d; + if (e.userId.value !== "") { + let f = JSON.parse((d = e.userId) == null ? void 0 : d.value); + ns.on("user-published", (g, v) => ye(this, null, function* () { + if (v === "video") { + const y = yield ns.subscribe(g, v); + let C = g.uid + ""; + g.hasVideo && g.uid + "" !== f.user && f.user !== "" && e.onEvent("videoOn"), document.getElementById(C) && y.play(C); + } + if (v === "audio") { + const y = yield ns.subscribe(g, v); + g.hasAudio && g.uid + "" !== f.user && f.user !== "" && (f.audiostatus = g.hasVideo, e.onEvent("audioUnmuted")), y.play(); + } + })), ns.on("user-unpublished", (g, v) => { + var y; + v === "audio" && !g.hasAudio && g.uid + "" !== f.user && f.user !== "" && (f.audiostatus = g.hasVideo, e.onEvent("audioMuted")), v === "video" && (t.current && ((y = t.current) == null ? void 0 : y.id) === g.uid + "" && (t.current.srcObject = null), !g.hasVideo && g.uid + "" !== f.user && f.user !== "" && e.onEvent("videoOff")); + }), i(f.user), o(f.userName), u(f.streamingVideo); + } + }, [e.userId.value]), console.log("userId", n), /* @__PURE__ */ dt($lowcoder_sdk.EditorContext.Consumer, { + children: (d) => /* @__PURE__ */ dt(uF, { + children: /* @__PURE__ */ gn("div", { + ref: r, + style: { + display: "flex", + alignItems: "center", + height: "100%", + overflow: "hidden", + borderRadius: e.style.radius, + aspectRatio: e.videoAspectRatio, + backgroundColor: e.style.background, + padding: e.style.padding, + margin: e.style.margin + }, + children: [n ? /* @__PURE__ */ dt(wUt, { + onClick: () => e.onEvent("videoClicked"), + ref: t, + style: { + display: `${l ? "flex" : "none"}`, + aspectRatio: e.videoAspectRatio, + borderRadius: e.style.radius, + width: "auto" + }, + id: n + }) : /* @__PURE__ */ dt(Ta, {}), /* @__PURE__ */ gn("div", { + style: { + flexDirection: "column", + alignItems: "center", + display: `${!l || n ? "flex" : "none"}`, + margin: "0 auto", + padding: e.profilePadding + }, + children: [/* @__PURE__ */ dt("img", { + alt: "", + style: { + borderRadius: e.profileBorderRadius, + width: "100%", + overflow: "hidden" + }, + src: e.profileImageUrl.value + }), /* @__PURE__ */ dt("p", { + style: { + margin: "0" + }, + children: a != null ? a : "" + })] + })] + }) + }) + }); + }).setPropertyViewFn((e) => /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.basic, + children: [e.userId.propertyView({ + label: yt("meeting.videoId") + }), e.profileImageUrl.propertyView({ + label: yt("meeting.profileImageUrl"), + placeholder: "https://api.dicebear.com/7.x/fun-emoji/svg?seed=Peanut&radius=50&backgroundColor=transparent&randomizeIds=true&eyes=wink,sleepClose" + })] + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: e.autoHeight.getPropertyView() + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.style, + children: [e.profilePadding.propertyView({ + label: "Profile Image Padding" + }), e.profileBorderRadius.propertyView({ + label: "Profile Image Border Radius" + }), e.videoAspectRatio.propertyView({ + label: "Video Aspect Ratio" + }), e.style.getPropertyView()] + })] + })).build(); +}(); +j6 = class extends j6 { + autoHeight() { + return !1; + } +}; +const xUt = $lowcoder_sdk.withExposingConfigs(j6, [new $lowcoder_sdk.NameConfig("loading", yt("meeting.loadingDesc")), new $lowcoder_sdk.NameConfig("profileImageUrl", yt("meeting.profileImageUrl")), ...$lowcoder_sdk.CommonNameConfig]), AUt = $lowcoder_sdk.styled.video` + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: space-around; +`, RUt = { + autoHeight: $lowcoder_sdk.withDefault($lowcoder_sdk.AutoHeightControl, "fixed"), + profilePadding: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "0px"), + profileBorderRadius: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "0px"), + videoAspectRatio: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, ""), + onEvent: $lowcoder_sdk.MeetingEventHandlerControl, + disabled: $lowcoder_sdk.BoolCodeControl, + loading: $lowcoder_sdk.BoolCodeControl, + style: V1e, + viewRef: $lowcoder_sdk.RefControl, + userId: $lowcoder_sdk.withDefault($lowcoder_sdk.stringExposingStateControl(""), "{{meeting1.localUser}}"), + noVideoText: $lowcoder_sdk.stringExposingStateControl(yt("meeting.noVideo")) +}; +let $6 = function() { + return new $lowcoder_sdk.UICompBuilder(RUt, (e) => { + const t = $react.useRef(null), r = $react.useRef(null), [n, i] = $react.useState(), [a, o] = $react.useState(""), [l, u] = $react.useState(!0); + return $react.useEffect(() => { + var d; + if (e.userId.value !== "") { + let f = JSON.parse((d = e.userId) == null ? void 0 : d.value); + ns.on("user-published", (g, v) => ye(this, null, function* () { + if (v === "video") { + const y = yield ns.subscribe(g, v); + let C = g.uid + ""; + g.hasVideo && g.uid + "" !== f.user && f.user !== "" && e.onEvent("videoOn"), document.getElementById(C) && y.play(C); + } + if (v === "audio") { + const y = yield ns.subscribe(g, v); + g.hasAudio && g.uid + "" !== f.user && f.user !== "" && (f.audiostatus = g.hasVideo, e.onEvent("audioUnmuted")), y.play(); + } + })), ns.on("user-unpublished", (g, v) => { + var y; + v === "audio" && !g.hasAudio && g.uid + "" !== f.user && f.user !== "" && (f.audiostatus = g.hasVideo, e.onEvent("audioMuted")), v === "video" && (t.current && ((y = t.current) == null ? void 0 : y.id) === g.uid + "" && (t.current.srcObject = null), !g.hasVideo && g.uid + "" !== f.user && f.user !== "" && e.onEvent("videoOff")); + }), i(f.user), o(f.userName), u(f.streamingSharing); + } + }, [e.userId.value]), /* @__PURE__ */ dt($lowcoder_sdk.EditorContext.Consumer, { + children: (d) => { + var f, g, v, y, C; + return /* @__PURE__ */ dt(uF, { + children: /* @__PURE__ */ gn("div", { + ref: r, + style: { + display: "flex", + alignItems: "center", + height: "100%", + overflow: "hidden", + borderRadius: (f = e == null ? void 0 : e.style) == null ? void 0 : f.radius, + aspectRatio: e == null ? void 0 : e.videoAspectRatio, + backgroundColor: (g = e.style) == null ? void 0 : g.background, + padding: (v = e.style) == null ? void 0 : v.padding, + margin: (y = e.style) == null ? void 0 : y.margin + }, + children: [n ? /* @__PURE__ */ dt(AUt, { + onClick: () => e.onEvent("videoClicked"), + ref: t, + style: { + display: `${l ? "flex" : "none"}`, + aspectRatio: e.videoAspectRatio, + borderRadius: e.style.radius, + width: "auto" + }, + id: "share-screen" + }) : /* @__PURE__ */ dt(Ta, {}), /* @__PURE__ */ gn("div", { + style: { + flexDirection: "column", + alignItems: "center", + display: `${!l || n ? "flex" : "none"}`, + margin: "0 auto", + padding: e.profilePadding + }, + children: [/* @__PURE__ */ dt("img", { + alt: "", + style: { + borderRadius: e.profileBorderRadius, + width: "100%", + overflow: "hidden" + }, + src: (C = e.profileImageUrl) == null ? void 0 : C.value + }), /* @__PURE__ */ dt("p", { + style: { + margin: "0" + }, + children: a != null ? a : "" + })] + })] + }) + }); + } + }); + }).setPropertyViewFn((e) => { + var t; + return /* @__PURE__ */ gn(Ta, { + children: [/* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.basic, + children: e.userId.propertyView({ + label: yt("meeting.videoId") + }) + }), /* @__PURE__ */ dt($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.layout, + children: e.autoHeight.getPropertyView() + }), /* @__PURE__ */ gn($lowcoder_sdk.Section, { + name: $lowcoder_sdk.sectionNames.style, + children: [e.profilePadding.propertyView({ + label: "Profile Image Padding" + }), e.profileBorderRadius.propertyView({ + label: "Profile Image Border Radius" + }), e.videoAspectRatio.propertyView({ + label: "Video Aspect Ratio" + }), (t = e.style) == null ? void 0 : t.getPropertyView()] + })] + }); + }).build(); +}(); +$6 = class extends $6 { + autoHeight() { + return !1; + } +}; +const DUt = $lowcoder_sdk.withExposingConfigs($6, [new $lowcoder_sdk.NameConfig("loading", yt("meeting.loadingDesc")), ...$lowcoder_sdk.CommonNameConfig]), ojt = { + chart: Rst, + imageEditor: ldt, + calendar: Rxt, + mermaid: oUt, + meetingController: bUt, + meetingStream: xUt, + meetingSharing: DUt +}; +export { + rX as $, + $Mt as A, + hX as B, + J1 as C, + K1 as D, + uUt as E, + WLt as F, + GLt as G, + jLt as H, + XRt as I, + JUt as J, + qLt as K, + aNt as L, + tX as M, + Fxe as N, + iO as O, + b1t as P, + jxe as Q, + wh as R, + Sd as S, + $Ut as T, + e2t as U, + KUt as V, + UPt as W, + zAe as X, + _X as Y, + kPt as Z, + hv as _, + VLt as a, + $I as a$, + G_ as a0, + tD as a1, + vfe as a2, + A1t as a3, + npe as a4, + QUt as a5, + zPt as a6, + nNt as a7, + VE as a8, + zkt as a9, + Efe as aA, + XUt as aB, + GUt as aC, + VUt as aD, + zUt as aE, + qUt as aF, + ZUt as aG, + WUt as aH, + Ti as aI, + uv as aJ, + sO as aK, + jI as aL, + z2 as aM, + Ikt as aN, + Qkt as aO, + oO as aP, + W2 as aQ, + Skt as aR, + bAe as aS, + mMt as aT, + yMt as aU, + uPt as aV, + Yfe as aW, + _Mt as aX, + fX as aY, + gMt as aZ, + TMt as a_, + Pkt as aa, + mv as ab, + Hkt as ac, + Wkt as ad, + AAe as ae, + ZB as af, + eU as ag, + G2 as ah, + fMt as ai, + dX as aj, + DAe as ak, + xAe as al, + _kt as am, + fkt as an, + Nkt as ao, + Xkt as ap, + lO as aq, + ajt as ar, + YLt as as, + aO as at, + Zn as au, + ui as av, + oX as aw, + HUt as ax, + YUt as ay, + Cfe as az, + HLt as b, + F0 as b0, + Vfe as b1, + pX as b2, + CAe as b3, + P6 as b4, + OMt as b5, + Z4 as b6, + gNt as b7, + Dxt as b8, + ojt as b9, + s1 as c, + zLt as d, + TX as e, + aD as f, + cD as g, + Xc as h, + X2 as i, + ff as j, + d1e as k, + li as l, + vX as m, + uNt as n, + Cxe as o, + WRt as p, + rNt as q, + kAe as r, + $Lt as s, + xPt as t, + KPt as u, + LLt as v, + lNt as w, + ijt as x, + Lxe as y, + Bxt as z +}; diff --git a/client/packages/lowcoder/public/package/0933b788.js b/client/packages/lowcoder/public/package/0933b788.js new file mode 100644 index 000000000..9e6409554 --- /dev/null +++ b/client/packages/lowcoder/public/package/0933b788.js @@ -0,0 +1,818 @@ +import { e as rt, a as mt, s as kt, b as _t, d as xt, G as vt, F as bt, H as wt, m as St, ar as Lt, j as G, v as Et } from "./08856db2.js"; +import { o as At } from "./92e85b65.js"; +import { s as Tt } from "./2ff7471d.js"; +import "./f9637058.js"; +function ot(t, i) { + let r; + if (i === void 0) + for (const c of t) + c != null && (r < c || r === void 0 && c >= c) && (r = c); + else { + let c = -1; + for (let h of t) + (h = i(h, ++c, t)) != null && (r < h || r === void 0 && h >= h) && (r = h); + } + return r; +} +function yt(t, i) { + let r; + if (i === void 0) + for (const c of t) + c != null && (r > c || r === void 0 && c >= c) && (r = c); + else { + let c = -1; + for (let h of t) + (h = i(h, ++c, t)) != null && (r > h || r === void 0 && h >= h) && (r = h); + } + return r; +} +function Z(t, i) { + let r = 0; + if (i === void 0) + for (let c of t) + (c = +c) && (r += c); + else { + let c = -1; + for (let h of t) + (h = +i(h, ++c, t)) && (r += h); + } + return r; +} +function Mt(t) { + return t.target.depth; +} +function Nt(t) { + return t.depth; +} +function Pt(t, i) { + return i - 1 - t.height; +} +function dt(t, i) { + return t.sourceLinks.length ? t.depth : i - 1; +} +function Ct(t) { + return t.targetLinks.length ? t.depth : t.sourceLinks.length ? yt(t.sourceLinks, Mt) - 1 : 0; +} +function H(t) { + return function() { + return t; + }; +} +function lt(t, i) { + return Y(t.source, i.source) || t.index - i.index; +} +function at(t, i) { + return Y(t.target, i.target) || t.index - i.index; +} +function Y(t, i) { + return t.y0 - i.y0; +} +function J(t) { + return t.value; +} +function It(t) { + return t.index; +} +function $t(t) { + return t.nodes; +} +function Ot(t) { + return t.links; +} +function ct(t, i) { + const r = t.get(i); + if (!r) + throw new Error("missing: " + i); + return r; +} +function ut({ nodes: t }) { + for (const i of t) { + let r = i.y0, c = r; + for (const h of i.sourceLinks) + h.y0 = r + h.width / 2, r += h.width; + for (const h of i.targetLinks) + h.y1 = c + h.width / 2, c += h.width; + } +} +function jt() { + let t = 0, i = 0, r = 1, c = 1, h = 24, k = 8, d, g = It, s = dt, l, u, p = $t, v = Ot, y = 6; + function _() { + const n = { nodes: p.apply(null, arguments), links: v.apply(null, arguments) }; + return E(n), L(n), A(n), N(n), b(n), ut(n), n; + } + _.update = function(n) { + return ut(n), n; + }, _.nodeId = function(n) { + return arguments.length ? (g = typeof n == "function" ? n : H(n), _) : g; + }, _.nodeAlign = function(n) { + return arguments.length ? (s = typeof n == "function" ? n : H(n), _) : s; + }, _.nodeSort = function(n) { + return arguments.length ? (l = n, _) : l; + }, _.nodeWidth = function(n) { + return arguments.length ? (h = +n, _) : h; + }, _.nodePadding = function(n) { + return arguments.length ? (k = d = +n, _) : k; + }, _.nodes = function(n) { + return arguments.length ? (p = typeof n == "function" ? n : H(n), _) : p; + }, _.links = function(n) { + return arguments.length ? (v = typeof n == "function" ? n : H(n), _) : v; + }, _.linkSort = function(n) { + return arguments.length ? (u = n, _) : u; + }, _.size = function(n) { + return arguments.length ? (t = i = 0, r = +n[0], c = +n[1], _) : [r - t, c - i]; + }, _.extent = function(n) { + return arguments.length ? (t = +n[0][0], r = +n[1][0], i = +n[0][1], c = +n[1][1], _) : [[t, i], [r, c]]; + }, _.iterations = function(n) { + return arguments.length ? (y = +n, _) : y; + }; + function E({ nodes: n, links: f }) { + for (const [a, o] of n.entries()) + o.index = a, o.sourceLinks = [], o.targetLinks = []; + const e = new Map(n.map((a, o) => [g(a, o, n), a])); + for (const [a, o] of f.entries()) { + o.index = a; + let { source: m, target: x } = o; + typeof m != "object" && (m = o.source = ct(e, m)), typeof x != "object" && (x = o.target = ct(e, x)), m.sourceLinks.push(o), x.targetLinks.push(o); + } + if (u != null) + for (const { sourceLinks: a, targetLinks: o } of n) + a.sort(u), o.sort(u); + } + function L({ nodes: n }) { + for (const f of n) + f.value = f.fixedValue === void 0 ? Math.max(Z(f.sourceLinks, J), Z(f.targetLinks, J)) : f.fixedValue; + } + function A({ nodes: n }) { + const f = n.length; + let e = new Set(n), a = /* @__PURE__ */ new Set(), o = 0; + for (; e.size; ) { + for (const m of e) { + m.depth = o; + for (const { target: x } of m.sourceLinks) + a.add(x); + } + if (++o > f) + throw new Error("circular link"); + e = a, a = /* @__PURE__ */ new Set(); + } + } + function N({ nodes: n }) { + const f = n.length; + let e = new Set(n), a = /* @__PURE__ */ new Set(), o = 0; + for (; e.size; ) { + for (const m of e) { + m.height = o; + for (const { source: x } of m.targetLinks) + a.add(x); + } + if (++o > f) + throw new Error("circular link"); + e = a, a = /* @__PURE__ */ new Set(); + } + } + function P({ nodes: n }) { + const f = ot(n, (o) => o.depth) + 1, e = (r - t - h) / (f - 1), a = new Array(f); + for (const o of n) { + const m = Math.max(0, Math.min(f - 1, Math.floor(s.call(null, o, f)))); + o.layer = m, o.x0 = t + m * e, o.x1 = o.x0 + h, a[m] ? a[m].push(o) : a[m] = [o]; + } + if (l) + for (const o of a) + o.sort(l); + return a; + } + function j(n) { + const f = yt(n, (e) => (c - i - (e.length - 1) * d) / Z(e, J)); + for (const e of n) { + let a = i; + for (const o of e) { + o.y0 = a, o.y1 = a + o.value * f, a = o.y1 + d; + for (const m of o.sourceLinks) + m.width = m.value * f; + } + a = (c - a + d) / (e.length + 1); + for (let o = 0; o < e.length; ++o) { + const m = e[o]; + m.y0 += a * (o + 1), m.y1 += a * (o + 1); + } + T(e); + } + } + function b(n) { + const f = P(n); + d = Math.min(k, (c - i) / (ot(f, (e) => e.length) - 1)), j(f); + for (let e = 0; e < y; ++e) { + const a = Math.pow(0.99, e), o = Math.max(1 - a, (e + 1) / y); + $(f, a, o), M(f, a, o); + } + } + function M(n, f, e) { + for (let a = 1, o = n.length; a < o; ++a) { + const m = n[a]; + for (const x of m) { + let F = 0, D = 0; + for (const { source: U, value: K } of x.targetLinks) { + let W = K * (x.layer - U.layer); + F += S(U, x) * W, D += W; + } + if (!(D > 0)) + continue; + let R = (F / D - x.y0) * f; + x.y0 += R, x.y1 += R, w(x); + } + l === void 0 && m.sort(Y), C(m, e); + } + } + function $(n, f, e) { + for (let a = n.length, o = a - 2; o >= 0; --o) { + const m = n[o]; + for (const x of m) { + let F = 0, D = 0; + for (const { target: U, value: K } of x.sourceLinks) { + let W = K * (U.layer - x.layer); + F += O(x, U) * W, D += W; + } + if (!(D > 0)) + continue; + let R = (F / D - x.y0) * f; + x.y0 += R, x.y1 += R, w(x); + } + l === void 0 && m.sort(Y), C(m, e); + } + } + function C(n, f) { + const e = n.length >> 1, a = n[e]; + z(n, a.y0 - d, e - 1, f), I(n, a.y1 + d, e + 1, f), z(n, c, n.length - 1, f), I(n, i, 0, f); + } + function I(n, f, e, a) { + for (; e < n.length; ++e) { + const o = n[e], m = (f - o.y0) * a; + m > 1e-6 && (o.y0 += m, o.y1 += m), f = o.y1 + d; + } + } + function z(n, f, e, a) { + for (; e >= 0; --e) { + const o = n[e], m = (o.y1 - f) * a; + m > 1e-6 && (o.y0 -= m, o.y1 -= m), f = o.y0 - d; + } + } + function w({ sourceLinks: n, targetLinks: f }) { + if (u === void 0) { + for (const { source: { sourceLinks: e } } of f) + e.sort(at); + for (const { target: { targetLinks: e } } of n) + e.sort(lt); + } + } + function T(n) { + if (u === void 0) + for (const { sourceLinks: f, targetLinks: e } of n) + f.sort(at), e.sort(lt); + } + function S(n, f) { + let e = n.y0 - (n.sourceLinks.length - 1) * d / 2; + for (const { target: a, width: o } of n.sourceLinks) { + if (a === f) + break; + e += o + d; + } + for (const { source: a, width: o } of f.targetLinks) { + if (a === n) + break; + e -= o; + } + return e; + } + function O(n, f) { + let e = f.y0 - (f.targetLinks.length - 1) * d / 2; + for (const { source: a, width: o } of f.targetLinks) { + if (a === n) + break; + e += o + d; + } + for (const { target: a, width: o } of n.sourceLinks) { + if (a === f) + break; + e -= o; + } + return e; + } + return _; +} +var tt = Math.PI, et = 2 * tt, B = 1e-6, zt = et - B; +function nt() { + this._x0 = this._y0 = // start of current subpath + this._x1 = this._y1 = null, this._ = ""; +} +function gt() { + return new nt(); +} +nt.prototype = gt.prototype = { + constructor: nt, + moveTo: function(t, i) { + this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +i); + }, + closePath: function() { + this._x1 !== null && (this._x1 = this._x0, this._y1 = this._y0, this._ += "Z"); + }, + lineTo: function(t, i) { + this._ += "L" + (this._x1 = +t) + "," + (this._y1 = +i); + }, + quadraticCurveTo: function(t, i, r, c) { + this._ += "Q" + +t + "," + +i + "," + (this._x1 = +r) + "," + (this._y1 = +c); + }, + bezierCurveTo: function(t, i, r, c, h, k) { + this._ += "C" + +t + "," + +i + "," + +r + "," + +c + "," + (this._x1 = +h) + "," + (this._y1 = +k); + }, + arcTo: function(t, i, r, c, h) { + t = +t, i = +i, r = +r, c = +c, h = +h; + var k = this._x1, d = this._y1, g = r - t, s = c - i, l = k - t, u = d - i, p = l * l + u * u; + if (h < 0) + throw new Error("negative radius: " + h); + if (this._x1 === null) + this._ += "M" + (this._x1 = t) + "," + (this._y1 = i); + else if (p > B) + if (!(Math.abs(u * g - s * l) > B) || !h) + this._ += "L" + (this._x1 = t) + "," + (this._y1 = i); + else { + var v = r - k, y = c - d, _ = g * g + s * s, E = v * v + y * y, L = Math.sqrt(_), A = Math.sqrt(p), N = h * Math.tan((tt - Math.acos((_ + p - E) / (2 * L * A))) / 2), P = N / A, j = N / L; + Math.abs(P - 1) > B && (this._ += "L" + (t + P * l) + "," + (i + P * u)), this._ += "A" + h + "," + h + ",0,0," + +(u * v > l * y) + "," + (this._x1 = t + j * g) + "," + (this._y1 = i + j * s); + } + }, + arc: function(t, i, r, c, h, k) { + t = +t, i = +i, r = +r, k = !!k; + var d = r * Math.cos(c), g = r * Math.sin(c), s = t + d, l = i + g, u = 1 ^ k, p = k ? c - h : h - c; + if (r < 0) + throw new Error("negative radius: " + r); + this._x1 === null ? this._ += "M" + s + "," + l : (Math.abs(this._x1 - s) > B || Math.abs(this._y1 - l) > B) && (this._ += "L" + s + "," + l), r && (p < 0 && (p = p % et + et), p > zt ? this._ += "A" + r + "," + r + ",0,1," + u + "," + (t - d) + "," + (i - g) + "A" + r + "," + r + ",0,1," + u + "," + (this._x1 = s) + "," + (this._y1 = l) : p > B && (this._ += "A" + r + "," + r + ",0," + +(p >= tt) + "," + u + "," + (this._x1 = t + r * Math.cos(h)) + "," + (this._y1 = i + r * Math.sin(h)))); + }, + rect: function(t, i, r, c) { + this._ += "M" + (this._x0 = this._x1 = +t) + "," + (this._y0 = this._y1 = +i) + "h" + +r + "v" + +c + "h" + -r + "Z"; + }, + toString: function() { + return this._; + } +}; +function ht(t) { + return function() { + return t; + }; +} +function Dt(t) { + return t[0]; +} +function Bt(t) { + return t[1]; +} +var Vt = Array.prototype.slice; +function Ft(t) { + return t.source; +} +function Rt(t) { + return t.target; +} +function Ut(t) { + var i = Ft, r = Rt, c = Dt, h = Bt, k = null; + function d() { + var g, s = Vt.call(arguments), l = i.apply(this, s), u = r.apply(this, s); + if (k || (k = g = gt()), t(k, +c.apply(this, (s[0] = l, s)), +h.apply(this, s), +c.apply(this, (s[0] = u, s)), +h.apply(this, s)), g) + return k = null, g + "" || null; + } + return d.source = function(g) { + return arguments.length ? (i = g, d) : i; + }, d.target = function(g) { + return arguments.length ? (r = g, d) : r; + }, d.x = function(g) { + return arguments.length ? (c = typeof g == "function" ? g : ht(+g), d) : c; + }, d.y = function(g) { + return arguments.length ? (h = typeof g == "function" ? g : ht(+g), d) : h; + }, d.context = function(g) { + return arguments.length ? (k = g == null ? null : g, d) : k; + }, d; +} +function Wt(t, i, r, c, h) { + t.moveTo(i, r), t.bezierCurveTo(i = (i + c) / 2, r, i, h, c, h); +} +function Gt() { + return Ut(Wt); +} +function Ht(t) { + return [t.source.x1, t.y0]; +} +function Yt(t) { + return [t.target.x0, t.y1]; +} +function Xt() { + return Gt().source(Ht).target(Yt); +} +var it = function() { + var t = function(g, s, l, u) { + for (l = l || {}, u = g.length; u--; l[g[u]] = s) + ; + return l; + }, i = [1, 9], r = [1, 10], c = [1, 5, 10, 12], h = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, SANKEY: 4, NEWLINE: 5, csv: 6, opt_eof: 7, record: 8, csv_tail: 9, EOF: 10, "field[source]": 11, COMMA: 12, "field[target]": 13, "field[value]": 14, field: 15, escaped: 16, non_escaped: 17, DQUOTE: 18, ESCAPED_TEXT: 19, NON_ESCAPED_TEXT: 20, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "SANKEY", 5: "NEWLINE", 10: "EOF", 11: "field[source]", 12: "COMMA", 13: "field[target]", 14: "field[value]", 18: "DQUOTE", 19: "ESCAPED_TEXT", 20: "NON_ESCAPED_TEXT" }, + productions_: [0, [3, 4], [6, 2], [9, 2], [9, 0], [7, 1], [7, 0], [8, 5], [15, 1], [15, 1], [16, 3], [17, 1]], + performAction: function(s, l, u, p, v, y, _) { + var E = y.length - 1; + switch (v) { + case 7: + const L = p.findOrCreateNode(y[E - 4].trim().replaceAll('""', '"')), A = p.findOrCreateNode(y[E - 2].trim().replaceAll('""', '"')), N = parseFloat(y[E].trim()); + p.addLink(L, A, N); + break; + case 8: + case 9: + case 11: + this.$ = y[E]; + break; + case 10: + this.$ = y[E - 1]; + break; + } + }, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, { 5: [1, 3] }, { 6: 4, 8: 5, 15: 6, 16: 7, 17: 8, 18: i, 20: r }, { 1: [2, 6], 7: 11, 10: [1, 12] }, t(r, [2, 4], { 9: 13, 5: [1, 14] }), { 12: [1, 15] }, t(c, [2, 8]), t(c, [2, 9]), { 19: [1, 16] }, t(c, [2, 11]), { 1: [2, 1] }, { 1: [2, 5] }, t(r, [2, 2]), { 6: 17, 8: 5, 15: 6, 16: 7, 17: 8, 18: i, 20: r }, { 15: 18, 16: 7, 17: 8, 18: i, 20: r }, { 18: [1, 19] }, t(r, [2, 3]), { 12: [1, 20] }, t(c, [2, 10]), { 15: 21, 16: 7, 17: 8, 18: i, 20: r }, t([1, 5, 10], [2, 7])], + defaultActions: { 11: [2, 1], 12: [2, 5] }, + parseError: function(s, l) { + if (l.recoverable) + this.trace(s); + else { + var u = new Error(s); + throw u.hash = l, u; + } + }, + parse: function(s) { + var l = this, u = [0], p = [], v = [null], y = [], _ = this.table, E = "", L = 0, A = 0, N = 2, P = 1, j = y.slice.call(arguments, 1), b = Object.create(this.lexer), M = { yy: {} }; + for (var $ in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, $) && (M.yy[$] = this.yy[$]); + b.setInput(s, M.yy), M.yy.lexer = b, M.yy.parser = this, typeof b.yylloc == "undefined" && (b.yylloc = {}); + var C = b.yylloc; + y.push(C); + var I = b.options && b.options.ranges; + typeof M.yy.parseError == "function" ? this.parseError = M.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function z() { + var x; + return x = p.pop() || b.lex() || P, typeof x != "number" && (x instanceof Array && (p = x, x = p.pop()), x = l.symbols_[x] || x), x; + } + for (var w, T, S, O, n = {}, f, e, a, o; ; ) { + if (T = u[u.length - 1], this.defaultActions[T] ? S = this.defaultActions[T] : ((w === null || typeof w == "undefined") && (w = z()), S = _[T] && _[T][w]), typeof S == "undefined" || !S.length || !S[0]) { + var m = ""; + o = []; + for (f in _[T]) + this.terminals_[f] && f > N && o.push("'" + this.terminals_[f] + "'"); + b.showPosition ? m = "Parse error on line " + (L + 1) + `: +` + b.showPosition() + ` +Expecting ` + o.join(", ") + ", got '" + (this.terminals_[w] || w) + "'" : m = "Parse error on line " + (L + 1) + ": Unexpected " + (w == P ? "end of input" : "'" + (this.terminals_[w] || w) + "'"), this.parseError(m, { + text: b.match, + token: this.terminals_[w] || w, + line: b.yylineno, + loc: C, + expected: o + }); + } + if (S[0] instanceof Array && S.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + T + ", token: " + w); + switch (S[0]) { + case 1: + u.push(w), v.push(b.yytext), y.push(b.yylloc), u.push(S[1]), w = null, A = b.yyleng, E = b.yytext, L = b.yylineno, C = b.yylloc; + break; + case 2: + if (e = this.productions_[S[1]][1], n.$ = v[v.length - e], n._$ = { + first_line: y[y.length - (e || 1)].first_line, + last_line: y[y.length - 1].last_line, + first_column: y[y.length - (e || 1)].first_column, + last_column: y[y.length - 1].last_column + }, I && (n._$.range = [ + y[y.length - (e || 1)].range[0], + y[y.length - 1].range[1] + ]), O = this.performAction.apply(n, [ + E, + A, + L, + M.yy, + S[1], + v, + y + ].concat(j)), typeof O != "undefined") + return O; + e && (u = u.slice(0, -1 * e * 2), v = v.slice(0, -1 * e), y = y.slice(0, -1 * e)), u.push(this.productions_[S[1]][0]), v.push(n.$), y.push(n._$), a = _[u[u.length - 2]][u[u.length - 1]], u.push(a); + break; + case 3: + return !0; + } + } + return !0; + } + }, k = function() { + var g = { + EOF: 1, + parseError: function(l, u) { + if (this.yy.parser) + this.yy.parser.parseError(l, u); + else + throw new Error(l); + }, + // resets the lexer, sets new input + setInput: function(s, l) { + return this.yy = l || this.yy || {}, this._input = s, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var s = this._input[0]; + this.yytext += s, this.yyleng++, this.offset++, this.match += s, this.matched += s; + var l = s.match(/(?:\r\n?|\n).*/g); + return l ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), s; + }, + // unshifts one char (or a string) into the input + unput: function(s) { + var l = s.length, u = s.split(/(?:\r\n?|\n)/g); + this._input = s + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - l), this.offset -= l; + var p = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), u.length - 1 && (this.yylineno -= u.length - 1); + var v = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: u ? (u.length === p.length ? this.yylloc.first_column : 0) + p[p.length - u.length].length - u[0].length : this.yylloc.first_column - l + }, this.options.ranges && (this.yylloc.range = [v[0], v[0] + this.yyleng - l]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(s) { + this.unput(this.match.slice(s)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var s = this.matched.substr(0, this.matched.length - this.match.length); + return (s.length > 20 ? "..." : "") + s.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var s = this.match; + return s.length < 20 && (s += this._input.substr(0, 20 - s.length)), (s.substr(0, 20) + (s.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var s = this.pastInput(), l = new Array(s.length + 1).join("-"); + return s + this.upcomingInput() + ` +` + l + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(s, l) { + var u, p, v; + if (this.options.backtrack_lexer && (v = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (v.yylloc.range = this.yylloc.range.slice(0))), p = s[0].match(/(?:\r\n?|\n).*/g), p && (this.yylineno += p.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: p ? p[p.length - 1].length - p[p.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + s[0].length + }, this.yytext += s[0], this.match += s[0], this.matches = s, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(s[0].length), this.matched += s[0], u = this.performAction.call(this, this.yy, this, l, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), u) + return u; + if (this._backtrack) { + for (var y in v) + this[y] = v[y]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var s, l, u, p; + this._more || (this.yytext = "", this.match = ""); + for (var v = this._currentRules(), y = 0; y < v.length; y++) + if (u = this._input.match(this.rules[v[y]]), u && (!l || u[0].length > l[0].length)) { + if (l = u, p = y, this.options.backtrack_lexer) { + if (s = this.test_match(u, v[y]), s !== !1) + return s; + if (this._backtrack) { + l = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return l ? (s = this.test_match(l, v[p]), s !== !1 ? s : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var l = this.next(); + return l || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(l) { + this.conditionStack.push(l); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var l = this.conditionStack.length - 1; + return l > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(l) { + return l = this.conditionStack.length - 1 - Math.abs(l || 0), l >= 0 ? this.conditionStack[l] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(l) { + this.begin(l); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(l, u, p, v) { + switch (p) { + case 0: + return this.pushState("csv"), 4; + case 1: + return 10; + case 2: + return 5; + case 3: + return 12; + case 4: + return this.pushState("escaped_text"), 18; + case 5: + return 20; + case 6: + return this.popState("escaped_text"), 18; + case 7: + return 19; + } + }, + rules: [/^(?:sankey-beta\b)/i, /^(?:$)/i, /^(?:((\u000D\u000A)|(\u000A)))/i, /^(?:(\u002C))/i, /^(?:(\u0022))/i, /^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i, /^(?:(\u0022)(?!(\u0022)))/i, /^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i], + conditions: { csv: { rules: [1, 2, 3, 4, 5, 6, 7], inclusive: !1 }, escaped_text: { rules: [6, 7], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7], inclusive: !0 } } + }; + return g; + }(); + h.lexer = k; + function d() { + this.yy = {}; + } + return d.prototype = h, h.Parser = d, new d(); +}(); +it.parser = it; +const X = it; +let q = [], Q = [], V = {}; +const qt = () => { + q = [], Q = [], V = {}, wt(); +}; +class Qt { + constructor(i, r, c = 0) { + this.source = i, this.target = r, this.value = c; + } +} +const Kt = (t, i, r) => { + q.push(new Qt(t, i, r)); +}; +class Zt { + constructor(i) { + this.ID = i; + } +} +const Jt = (t) => (t = St.sanitizeText(t, rt()), V[t] || (V[t] = new Zt(t), Q.push(V[t])), V[t]), te = () => Q, ee = () => q, ne = () => ({ + nodes: Q.map((t) => ({ id: t.ID })), + links: q.map((t) => ({ + source: t.source.ID, + target: t.target.ID, + value: t.value + })) +}), ie = { + nodesMap: V, + getConfig: () => rt().sankey, + getNodes: te, + getLinks: ee, + getGraph: ne, + addLink: Kt, + findOrCreateNode: Jt, + getAccTitle: mt, + setAccTitle: kt, + getAccDescription: _t, + setAccDescription: xt, + getDiagramTitle: vt, + setDiagramTitle: bt, + clear: qt +}, pt = class st { + static next(i) { + return new st(i + ++st.count); + } + constructor(i) { + this.id = i, this.href = `#${i}`; + } + toString() { + return "url(" + this.href + ")"; + } +}; +pt.count = 0; +let ft = pt; +const se = { + left: Nt, + right: Pt, + center: Ct, + justify: dt +}, re = function(t, i, r, c) { + var z, w, T, S, O, n, f; + const { securityLevel: h, sankey: k } = rt(), d = Lt.sankey; + let g; + h === "sandbox" && (g = G("#i" + i)); + const s = h === "sandbox" ? G(g.nodes()[0].contentDocument.body) : G("body"), l = h === "sandbox" ? s.select(`[id="${i}"]`) : G(`[id="${i}"]`), u = (z = k == null ? void 0 : k.width) != null ? z : d.width, p = (w = k == null ? void 0 : k.height) != null ? w : d.width, v = (T = k == null ? void 0 : k.useMaxWidth) != null ? T : d.useMaxWidth, y = (S = k == null ? void 0 : k.nodeAlignment) != null ? S : d.nodeAlignment, _ = (O = k == null ? void 0 : k.prefix) != null ? O : d.prefix, E = (n = k == null ? void 0 : k.suffix) != null ? n : d.suffix, L = (f = k == null ? void 0 : k.showValues) != null ? f : d.showValues, A = c.db.getGraph(), N = se[y], P = 10; + jt().nodeId((e) => e.id).nodeWidth(P).nodePadding(10 + (L ? 15 : 0)).nodeAlign(N).extent([ + [0, 0], + [u, p] + ])(A); + const b = At(Tt); + l.append("g").attr("class", "nodes").selectAll(".node").data(A.nodes).join("g").attr("class", "node").attr("id", (e) => (e.uid = ft.next("node-")).id).attr("transform", function(e) { + return "translate(" + e.x0 + "," + e.y0 + ")"; + }).attr("x", (e) => e.x0).attr("y", (e) => e.y0).append("rect").attr("height", (e) => e.y1 - e.y0).attr("width", (e) => e.x1 - e.x0).attr("fill", (e) => b(e.id)); + const M = ({ id: e, value: a }) => L ? `${e} +${_}${Math.round(a * 100) / 100}${E}` : e; + l.append("g").attr("class", "node-labels").attr("font-family", "sans-serif").attr("font-size", 14).selectAll("text").data(A.nodes).join("text").attr("x", (e) => e.x0 < u / 2 ? e.x1 + 6 : e.x0 - 6).attr("y", (e) => (e.y1 + e.y0) / 2).attr("dy", `${L ? "0" : "0.35"}em`).attr("text-anchor", (e) => e.x0 < u / 2 ? "start" : "end").text(M); + const $ = l.append("g").attr("class", "links").attr("fill", "none").attr("stroke-opacity", 0.5).selectAll(".link").data(A.links).join("g").attr("class", "link").style("mix-blend-mode", "multiply"), C = (k == null ? void 0 : k.linkColor) || "gradient"; + if (C === "gradient") { + const e = $.append("linearGradient").attr("id", (a) => (a.uid = ft.next("linearGradient-")).id).attr("gradientUnits", "userSpaceOnUse").attr("x1", (a) => a.source.x1).attr("x2", (a) => a.target.x0); + e.append("stop").attr("offset", "0%").attr("stop-color", (a) => b(a.source.id)), e.append("stop").attr("offset", "100%").attr("stop-color", (a) => b(a.target.id)); + } + let I; + switch (C) { + case "gradient": + I = (e) => e.uid; + break; + case "source": + I = (e) => b(e.source.id); + break; + case "target": + I = (e) => b(e.target.id); + break; + default: + I = C; + } + $.append("path").attr("d", Xt()).attr("stroke", I).attr("stroke-width", (e) => Math.max(1, e.width)), Et(void 0, l, 0, v); +}, oe = { + draw: re +}, le = (t) => t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g, "").replaceAll(/([\n\r])+/g, ` +`).trim(), ae = X.parse.bind(X); +X.parse = (t) => ae(le(t)); +const ye = { + parser: X, + db: ie, + renderer: oe +}; +export { + ye as diagram +}; diff --git a/client/packages/lowcoder/public/package/0c155f84.js b/client/packages/lowcoder/public/package/0c155f84.js new file mode 100644 index 000000000..e7b030a76 --- /dev/null +++ b/client/packages/lowcoder/public/package/0c155f84.js @@ -0,0 +1,455 @@ +var C = (e, l, s) => new Promise((o, i) => { + var p = (c) => { + try { + a(s.next(c)); + } catch (r) { + i(r); + } + }, f = (c) => { + try { + a(s.throw(c)); + } catch (r) { + i(r); + } + }, a = (c) => c.done ? o(c.value) : Promise.resolve(c.value).then(p, f); + a((s = s.apply(e, l)).next()); +}); +import { G as F } from "./4504d077.js"; +import { S as G, y as j, z as U, A as H, B as K, q as B, l as g, r as W, e as S, m as q, t as P, u as L, p as A, j as $, C as X, v as J, D as Q } from "./08856db2.js"; +import { r as Y } from "./7ca39633.js"; +import { c as Z } from "./85051678.js"; +function O(e) { + return typeof e == "string" ? new G([document.querySelectorAll(e)], [document.documentElement]) : new G([U(e)], j); +} +function fe(e, l) { + return !!e.children(l).length; +} +function ue(e) { + return N(e.v) + ":" + N(e.w) + ":" + N(e.name); +} +var ee = /:/g; +function N(e) { + return e ? String(e).replace(ee, "\\:") : ""; +} +function te(e, l) { + l && e.attr("style", l); +} +function we(e, l, s) { + l && e.attr("class", l).attr("class", s + " " + e.attr("class")); +} +function he(e, l) { + var s = l.graph(); + if (H(s)) { + var o = s.transition; + if (K(o)) + return o(e); + } + return e; +} +function re(e, l) { + var s = e.append("foreignObject").attr("width", "100000"), o = s.append("xhtml:div"); + o.attr("xmlns", "http://www.w3.org/1999/xhtml"); + var i = l.label; + switch (typeof i) { + case "function": + o.insert(i); + break; + case "object": + o.insert(function() { + return i; + }); + break; + default: + o.html(i); + } + te(o, l.labelStyle), o.style("display", "inline-block"), o.style("white-space", "nowrap"); + var p = o.node().getBoundingClientRect(); + return s.attr("width", p.width).attr("height", p.height), s; +} +const V = {}, le = function(e) { + const l = Object.keys(e); + for (const s of l) + V[s] = e[s]; +}, M = function(e, l, s, o, i, p) { + return C(this, null, function* () { + const f = o.select(`[id="${s}"]`), a = Object.keys(e); + for (const c of a) { + const r = e[c]; + let y = "default"; + r.classes.length > 0 && (y = r.classes.join(" ")), y = y + " flowchart-label"; + const w = B(r.styles); + let t = r.text !== void 0 ? r.text : r.id, d; + if (g.info("vertex", r, r.labelType), r.labelType === "markdown") + g.info("vertex", r, r.labelType); + else if (W(S().flowchart.htmlLabels)) + d = re(f, { + label: t + }).node(), d.parentNode.removeChild(d); + else { + const k = i.createElementNS("http://www.w3.org/2000/svg", "text"); + k.setAttribute("style", w.labelStyle.replace("color:", "fill:")); + const _ = t.split(q.lineBreakRegex); + for (const E of _) { + const v = i.createElementNS("http://www.w3.org/2000/svg", "tspan"); + v.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), v.setAttribute("dy", "1em"), v.setAttribute("x", "1"), v.textContent = E, k.appendChild(v); + } + d = k; + } + let b = 0, n = ""; + switch (r.type) { + case "round": + b = 5, n = "rect"; + break; + case "square": + n = "rect"; + break; + case "diamond": + n = "question"; + break; + case "hexagon": + n = "hexagon"; + break; + case "odd": + n = "rect_left_inv_arrow"; + break; + case "lean_right": + n = "lean_right"; + break; + case "lean_left": + n = "lean_left"; + break; + case "trapezoid": + n = "trapezoid"; + break; + case "inv_trapezoid": + n = "inv_trapezoid"; + break; + case "odd_right": + n = "rect_left_inv_arrow"; + break; + case "circle": + n = "circle"; + break; + case "ellipse": + n = "ellipse"; + break; + case "stadium": + n = "stadium"; + break; + case "subroutine": + n = "subroutine"; + break; + case "cylinder": + n = "cylinder"; + break; + case "group": + n = "rect"; + break; + case "doublecircle": + n = "doublecircle"; + break; + default: + n = "rect"; + } + const T = yield P(t, S()); + l.setNode(r.id, { + labelStyle: w.labelStyle, + shape: n, + labelText: T, + labelType: r.labelType, + rx: b, + ry: b, + class: y, + style: w.style, + id: r.id, + link: r.link, + linkTarget: r.linkTarget, + tooltip: p.db.getTooltip(r.id) || "", + domId: p.db.lookUpDomId(r.id), + haveCallback: r.haveCallback, + width: r.type === "group" ? 500 : void 0, + dir: r.dir, + type: r.type, + props: r.props, + padding: S().flowchart.padding + }), g.info("setNode", { + labelStyle: w.labelStyle, + labelType: r.labelType, + shape: n, + labelText: T, + rx: b, + ry: b, + class: y, + style: w.style, + id: r.id, + domId: p.db.lookUpDomId(r.id), + width: r.type === "group" ? 500 : void 0, + type: r.type, + dir: r.dir, + props: r.props, + padding: S().flowchart.padding + }); + } + }); +}, R = function(e, l, s) { + return C(this, null, function* () { + g.info("abc78 edges = ", e); + let o = 0, i = {}, p, f; + if (e.defaultStyle !== void 0) { + const a = B(e.defaultStyle); + p = a.style, f = a.labelStyle; + } + for (const a of e) { + o++; + const c = "L-" + a.start + "-" + a.end; + i[c] === void 0 ? (i[c] = 0, g.info("abc78 new entry", c, i[c])) : (i[c]++, g.info("abc78 new entry", c, i[c])); + let r = c + "-" + i[c]; + g.info("abc78 new link id to be used is", c, r, i[c]); + const y = "LS-" + a.start, w = "LE-" + a.end, t = { style: "", labelStyle: "" }; + switch (t.minlen = a.length || 1, a.type === "arrow_open" ? t.arrowhead = "none" : t.arrowhead = "normal", t.arrowTypeStart = "arrow_open", t.arrowTypeEnd = "arrow_open", a.type) { + case "double_arrow_cross": + t.arrowTypeStart = "arrow_cross"; + case "arrow_cross": + t.arrowTypeEnd = "arrow_cross"; + break; + case "double_arrow_point": + t.arrowTypeStart = "arrow_point"; + case "arrow_point": + t.arrowTypeEnd = "arrow_point"; + break; + case "double_arrow_circle": + t.arrowTypeStart = "arrow_circle"; + case "arrow_circle": + t.arrowTypeEnd = "arrow_circle"; + break; + } + let d = "", b = ""; + switch (a.stroke) { + case "normal": + d = "fill:none;", p !== void 0 && (d = p), f !== void 0 && (b = f), t.thickness = "normal", t.pattern = "solid"; + break; + case "dotted": + t.thickness = "normal", t.pattern = "dotted", t.style = "fill:none;stroke-width:2px;stroke-dasharray:3;"; + break; + case "thick": + t.thickness = "thick", t.pattern = "solid", t.style = "stroke-width: 3.5px;fill:none;"; + break; + case "invisible": + t.thickness = "invisible", t.pattern = "solid", t.style = "stroke-width: 0;fill:none;"; + break; + } + if (a.style !== void 0) { + const n = B(a.style); + d = n.style, b = n.labelStyle; + } + t.style = t.style += d, t.labelStyle = t.labelStyle += b, a.interpolate !== void 0 ? t.curve = L(a.interpolate, A) : e.defaultInterpolate !== void 0 ? t.curve = L(e.defaultInterpolate, A) : t.curve = L(V.curve, A), a.text === void 0 ? a.style !== void 0 && (t.arrowheadStyle = "fill: #333") : (t.arrowheadStyle = "fill: #333", t.labelpos = "c"), t.labelType = a.labelType, t.label = yield P(a.text.replace(q.lineBreakRegex, ` +`), S()), a.style === void 0 && (t.style = t.style || "stroke: #333; stroke-width: 1.5px;fill:none;"), t.labelStyle = t.labelStyle.replace("color:", "fill:"), t.id = r, t.classes = "flowchart-link " + y + " " + w, l.setEdge(a.start, a.end, t, o); + } + }); +}, ae = function(e, l) { + return l.db.getClasses(); +}, oe = function(e, l, s, o) { + return C(this, null, function* () { + g.info("Drawing flowchart"); + let i = o.db.getDirection(); + i === void 0 && (i = "TD"); + const { securityLevel: p, flowchart: f } = S(), a = f.nodeSpacing || 50, c = f.rankSpacing || 50; + let r; + p === "sandbox" && (r = $("#i" + l)); + const y = p === "sandbox" ? $(r.nodes()[0].contentDocument.body) : $("body"), w = p === "sandbox" ? r.nodes()[0].contentDocument : document, t = new F({ + multigraph: !0, + compound: !0 + }).setGraph({ + rankdir: i, + nodesep: a, + ranksep: c, + marginx: 0, + marginy: 0 + }).setDefaultEdgeLabel(function() { + return {}; + }); + let d; + const b = o.db.getSubGraphs(); + g.info("Subgraphs - ", b); + for (let u = b.length - 1; u >= 0; u--) + d = b[u], g.info("Subgraph - ", d), o.db.addVertex( + d.id, + { text: d.title, type: d.labelType }, + "group", + void 0, + d.classes, + d.dir + ); + const n = o.db.getVertices(), T = o.db.getEdges(); + g.info("Edges", T); + let k = 0; + for (k = b.length - 1; k >= 0; k--) { + d = b[k], O("cluster").append("text"); + for (let u = 0; u < d.nodes.length; u++) + g.info("Setting up subgraphs", d.nodes[u], d.id), t.setParent(d.nodes[u], d.id); + } + yield M(n, t, l, y, w, o), yield R(T, t); + const _ = y.select(`[id="${l}"]`), E = y.select("#" + l + " g"); + if (yield Y(E, t, ["point", "circle", "cross"], "flowchart", l), X.insertTitle(_, "flowchartTitleText", f.titleTopMargin, o.db.getDiagramTitle()), J(t, _, f.diagramPadding, f.useMaxWidth), o.db.indexNodes("subGraph" + k), !f.htmlLabels) { + const u = w.querySelectorAll('[id="' + l + '"] .edgeLabel .label'); + for (const x of u) { + const m = x.getBBox(), h = w.createElementNS("http://www.w3.org/2000/svg", "rect"); + h.setAttribute("rx", 0), h.setAttribute("ry", 0), h.setAttribute("width", m.width), h.setAttribute("height", m.height), x.insertBefore(h, x.firstChild); + } + } + Object.keys(n).forEach(function(u) { + const x = n[u]; + if (x.link) { + const m = $("#" + l + ' [id="' + u + '"]'); + if (m) { + const h = w.createElementNS("http://www.w3.org/2000/svg", "a"); + h.setAttributeNS("http://www.w3.org/2000/svg", "class", x.classes.join(" ")), h.setAttributeNS("http://www.w3.org/2000/svg", "href", x.link), h.setAttributeNS("http://www.w3.org/2000/svg", "rel", "noopener"), p === "sandbox" ? h.setAttributeNS("http://www.w3.org/2000/svg", "target", "_top") : x.linkTarget && h.setAttributeNS("http://www.w3.org/2000/svg", "target", x.linkTarget); + const D = m.insert(function() { + return h; + }, ":first-child"), I = m.select(".label-container"); + I && D.append(function() { + return I.node(); + }); + const z = m.select(".label"); + z && D.append(function() { + return z.node(); + }); + } + } + }); + }); +}, ge = { + setConf: le, + addVertices: M, + addEdges: R, + getClasses: ae, + draw: oe +}, ne = (e, l) => { + const s = Z, o = s(e, "r"), i = s(e, "g"), p = s(e, "b"); + return Q(o, i, p, l); +}, se = (e) => `.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor || e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + .label text,span,p { + fill: ${e.nodeTextColor || e.textColor}; + color: ${e.nodeTextColor || e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${ne(e.edgeLabelBackground, 0.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`, ye = se; +export { + te as a, + re as b, + he as c, + we as d, + ue as e, + ge as f, + ye as g, + fe as i, + O as s +}; diff --git a/client/packages/lowcoder/public/package/0ddaa2bc.js b/client/packages/lowcoder/public/package/0ddaa2bc.js new file mode 100644 index 000000000..ea9e8fa63 --- /dev/null +++ b/client/packages/lowcoder/public/package/0ddaa2bc.js @@ -0,0 +1,796 @@ +import { as as ft, H as gt, e as mt, l as S, j as q, v as xt, at as _t, au as bt, av as kt } from "./08856db2.js"; +import { a as D } from "./eb460319.js"; +import "./256b619e.js"; +var K = function() { + var n = function(g, i, r, c) { + for (r = r || {}, c = g.length; c--; r[g[c]] = i) + ; + return r; + }, t = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], e = [1, 9], a = [1, 10], s = [1, 11], h = [1, 12], l = [1, 13], p = [1, 16], y = [1, 17], f = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, timeline: 4, document: 5, EOF: 6, line: 7, SPACE: 8, statement: 9, NEWLINE: 10, title: 11, acc_title: 12, acc_title_value: 13, acc_descr: 14, acc_descr_value: 15, acc_descr_multiline_value: 16, section: 17, period_statement: 18, event_statement: 19, period: 20, event: 21, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "timeline", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 11: "title", 12: "acc_title", 13: "acc_title_value", 14: "acc_descr", 15: "acc_descr_value", 16: "acc_descr_multiline_value", 17: "section", 20: "period", 21: "event" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]], + performAction: function(i, r, c, d, u, o, I) { + var x = o.length - 1; + switch (u) { + case 1: + return o[x - 1]; + case 2: + this.$ = []; + break; + case 3: + o[x - 1].push(o[x]), this.$ = o[x - 1]; + break; + case 4: + case 5: + this.$ = o[x]; + break; + case 6: + case 7: + this.$ = []; + break; + case 8: + d.getCommonDb().setDiagramTitle(o[x].substr(6)), this.$ = o[x].substr(6); + break; + case 9: + this.$ = o[x].trim(), d.getCommonDb().setAccTitle(this.$); + break; + case 10: + case 11: + this.$ = o[x].trim(), d.getCommonDb().setAccDescription(this.$); + break; + case 12: + d.addSection(o[x].substr(8)), this.$ = o[x].substr(8); + break; + case 15: + d.addTask(o[x], 0, ""), this.$ = o[x]; + break; + case 16: + d.addEvent(o[x].substr(2)), this.$ = o[x]; + break; + } + }, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, n(t, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: e, 12: a, 14: s, 16: h, 17: l, 18: 14, 19: 15, 20: p, 21: y }, n(t, [2, 7], { 1: [2, 1] }), n(t, [2, 3]), { 9: 18, 11: e, 12: a, 14: s, 16: h, 17: l, 18: 14, 19: 15, 20: p, 21: y }, n(t, [2, 5]), n(t, [2, 6]), n(t, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, n(t, [2, 11]), n(t, [2, 12]), n(t, [2, 13]), n(t, [2, 14]), n(t, [2, 15]), n(t, [2, 16]), n(t, [2, 4]), n(t, [2, 9]), n(t, [2, 10])], + defaultActions: {}, + parseError: function(i, r) { + if (r.recoverable) + this.trace(i); + else { + var c = new Error(i); + throw c.hash = r, c; + } + }, + parse: function(i) { + var r = this, c = [0], d = [], u = [null], o = [], I = this.table, x = "", E = 0, O = 0, z = 2, H = 1, j = o.slice.call(arguments, 1), k = Object.create(this.lexer), $ = { yy: {} }; + for (var R in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, R) && ($.yy[R] = this.yy[R]); + k.setInput(i, $.yy), $.yy.lexer = k, $.yy.parser = this, typeof k.yylloc == "undefined" && (k.yylloc = {}); + var F = k.yylloc; + o.push(F); + var A = k.options && k.options.ranges; + typeof $.yy.parseError == "function" ? this.parseError = $.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function w() { + var L; + return L = d.pop() || k.lex() || H, typeof L != "number" && (L instanceof Array && (d = L, L = d.pop()), L = r.symbols_[L] || L), L; + } + for (var _, T, v, N, P = {}, V, M, Y, G; ; ) { + if (T = c[c.length - 1], this.defaultActions[T] ? v = this.defaultActions[T] : ((_ === null || typeof _ == "undefined") && (_ = w()), v = I[T] && I[T][_]), typeof v == "undefined" || !v.length || !v[0]) { + var J = ""; + G = []; + for (V in I[T]) + this.terminals_[V] && V > z && G.push("'" + this.terminals_[V] + "'"); + k.showPosition ? J = "Parse error on line " + (E + 1) + `: +` + k.showPosition() + ` +Expecting ` + G.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : J = "Parse error on line " + (E + 1) + ": Unexpected " + (_ == H ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(J, { + text: k.match, + token: this.terminals_[_] || _, + line: k.yylineno, + loc: F, + expected: G + }); + } + if (v[0] instanceof Array && v.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + T + ", token: " + _); + switch (v[0]) { + case 1: + c.push(_), u.push(k.yytext), o.push(k.yylloc), c.push(v[1]), _ = null, O = k.yyleng, x = k.yytext, E = k.yylineno, F = k.yylloc; + break; + case 2: + if (M = this.productions_[v[1]][1], P.$ = u[u.length - M], P._$ = { + first_line: o[o.length - (M || 1)].first_line, + last_line: o[o.length - 1].last_line, + first_column: o[o.length - (M || 1)].first_column, + last_column: o[o.length - 1].last_column + }, A && (P._$.range = [ + o[o.length - (M || 1)].range[0], + o[o.length - 1].range[1] + ]), N = this.performAction.apply(P, [ + x, + O, + E, + $.yy, + v[1], + u, + o + ].concat(j)), typeof N != "undefined") + return N; + M && (c = c.slice(0, -1 * M * 2), u = u.slice(0, -1 * M), o = o.slice(0, -1 * M)), c.push(this.productions_[v[1]][0]), u.push(P.$), o.push(P._$), Y = I[c[c.length - 2]][c[c.length - 1]], c.push(Y); + break; + case 3: + return !0; + } + } + return !0; + } + }, b = function() { + var g = { + EOF: 1, + parseError: function(r, c) { + if (this.yy.parser) + this.yy.parser.parseError(r, c); + else + throw new Error(r); + }, + // resets the lexer, sets new input + setInput: function(i, r) { + return this.yy = r || this.yy || {}, this._input = i, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var i = this._input[0]; + this.yytext += i, this.yyleng++, this.offset++, this.match += i, this.matched += i; + var r = i.match(/(?:\r\n?|\n).*/g); + return r ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), i; + }, + // unshifts one char (or a string) into the input + unput: function(i) { + var r = i.length, c = i.split(/(?:\r\n?|\n)/g); + this._input = i + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - r), this.offset -= r; + var d = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), c.length - 1 && (this.yylineno -= c.length - 1); + var u = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: c ? (c.length === d.length ? this.yylloc.first_column : 0) + d[d.length - c.length].length - c[0].length : this.yylloc.first_column - r + }, this.options.ranges && (this.yylloc.range = [u[0], u[0] + this.yyleng - r]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(i) { + this.unput(this.match.slice(i)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var i = this.matched.substr(0, this.matched.length - this.match.length); + return (i.length > 20 ? "..." : "") + i.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var i = this.match; + return i.length < 20 && (i += this._input.substr(0, 20 - i.length)), (i.substr(0, 20) + (i.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var i = this.pastInput(), r = new Array(i.length + 1).join("-"); + return i + this.upcomingInput() + ` +` + r + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(i, r) { + var c, d, u; + if (this.options.backtrack_lexer && (u = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (u.yylloc.range = this.yylloc.range.slice(0))), d = i[0].match(/(?:\r\n?|\n).*/g), d && (this.yylineno += d.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: d ? d[d.length - 1].length - d[d.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + i[0].length + }, this.yytext += i[0], this.match += i[0], this.matches = i, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(i[0].length), this.matched += i[0], c = this.performAction.call(this, this.yy, this, r, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), c) + return c; + if (this._backtrack) { + for (var o in u) + this[o] = u[o]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var i, r, c, d; + this._more || (this.yytext = "", this.match = ""); + for (var u = this._currentRules(), o = 0; o < u.length; o++) + if (c = this._input.match(this.rules[u[o]]), c && (!r || c[0].length > r[0].length)) { + if (r = c, d = o, this.options.backtrack_lexer) { + if (i = this.test_match(c, u[o]), i !== !1) + return i; + if (this._backtrack) { + r = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return r ? (i = this.test_match(r, u[d]), i !== !1 ? i : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var r = this.next(); + return r || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(r) { + this.conditionStack.push(r); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var r = this.conditionStack.length - 1; + return r > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(r) { + return r = this.conditionStack.length - 1 - Math.abs(r || 0), r >= 0 ? this.conditionStack[r] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(r) { + this.begin(r); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(r, c, d, u) { + switch (d) { + case 0: + break; + case 1: + break; + case 2: + return 10; + case 3: + break; + case 4: + break; + case 5: + return 4; + case 6: + return 11; + case 7: + return this.begin("acc_title"), 12; + case 8: + return this.popState(), "acc_title_value"; + case 9: + return this.begin("acc_descr"), 14; + case 10: + return this.popState(), "acc_descr_value"; + case 11: + this.begin("acc_descr_multiline"); + break; + case 12: + this.popState(); + break; + case 13: + return "acc_descr_multiline_value"; + case 14: + return 17; + case 15: + return 21; + case 16: + return 20; + case 17: + return 6; + case 18: + return "INVALID"; + } + }, + rules: [/^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:timeline\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:section\s[^#:\n;]+)/i, /^(?::\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { acc_descr_multiline: { rules: [12, 13], inclusive: !1 }, acc_descr: { rules: [10], inclusive: !1 }, acc_title: { rules: [8], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], inclusive: !0 } } + }; + return g; + }(); + f.lexer = b; + function m() { + this.yy = {}; + } + return m.prototype = f, f.Parser = m, new m(); +}(); +K.parser = K; +const vt = K; +let W = "", st = 0; +const Q = [], U = [], B = [], it = () => ft, rt = function() { + Q.length = 0, U.length = 0, W = "", B.length = 0, gt(); +}, at = function(n) { + W = n, Q.push(n); +}, lt = function() { + return Q; +}, ot = function() { + let n = tt(); + const t = 100; + let e = 0; + for (; !n && e < t; ) + n = tt(), e++; + return U.push(...B), U; +}, ct = function(n, t, e) { + const a = { + id: st++, + section: W, + type: W, + task: n, + score: t || 0, + //if event is defined, then add it the events array + events: e ? [e] : [] + }; + B.push(a); +}, ht = function(n) { + B.find((e) => e.id === st - 1).events.push(n); +}, dt = function(n) { + const t = { + section: W, + type: W, + description: n, + task: n, + classes: [] + }; + U.push(t); +}, tt = function() { + const n = function(e) { + return B[e].processed; + }; + let t = !0; + for (const [e, a] of B.entries()) + n(e), t = t && a.processed; + return t; +}, wt = { + clear: rt, + getCommonDb: it, + addSection: at, + getSections: lt, + getTasks: ot, + addTask: ct, + addTaskOrg: dt, + addEvent: ht +}, St = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + addEvent: ht, + addSection: at, + addTask: ct, + addTaskOrg: dt, + clear: rt, + default: wt, + getCommonDb: it, + getSections: lt, + getTasks: ot +}, Symbol.toStringTag, { value: "Module" })), Et = 12, Z = function(n, t) { + const e = n.append("rect"); + return e.attr("x", t.x), e.attr("y", t.y), e.attr("fill", t.fill), e.attr("stroke", t.stroke), e.attr("width", t.width), e.attr("height", t.height), e.attr("rx", t.rx), e.attr("ry", t.ry), t.class !== void 0 && e.attr("class", t.class), e; +}, Tt = function(n, t) { + const a = n.append("circle").attr("cx", t.cx).attr("cy", t.cy).attr("class", "face").attr("r", 15).attr("stroke-width", 2).attr("overflow", "visible"), s = n.append("g"); + s.append("circle").attr("cx", t.cx - 15 / 3).attr("cy", t.cy - 15 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"), s.append("circle").attr("cx", t.cx + 15 / 3).attr("cy", t.cy - 15 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); + function h(y) { + const f = D().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(7.5).outerRadius(6.8181818181818175); + y.append("path").attr("class", "mouth").attr("d", f).attr("transform", "translate(" + t.cx + "," + (t.cy + 2) + ")"); + } + function l(y) { + const f = D().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(7.5).outerRadius(6.8181818181818175); + y.append("path").attr("class", "mouth").attr("d", f).attr("transform", "translate(" + t.cx + "," + (t.cy + 7) + ")"); + } + function p(y) { + y.append("line").attr("class", "mouth").attr("stroke", 2).attr("x1", t.cx - 5).attr("y1", t.cy + 7).attr("x2", t.cx + 5).attr("y2", t.cy + 7).attr("class", "mouth").attr("stroke-width", "1px").attr("stroke", "#666"); + } + return t.score > 3 ? h(s) : t.score < 3 ? l(s) : p(s), a; +}, It = function(n, t) { + const e = n.append("circle"); + return e.attr("cx", t.cx), e.attr("cy", t.cy), e.attr("class", "actor-" + t.pos), e.attr("fill", t.fill), e.attr("stroke", t.stroke), e.attr("r", t.r), e.class !== void 0 && e.attr("class", e.class), t.title !== void 0 && e.append("title").text(t.title), e; +}, ut = function(n, t) { + const e = t.text.replace(//gi, " "), a = n.append("text"); + a.attr("x", t.x), a.attr("y", t.y), a.attr("class", "legend"), a.style("text-anchor", t.anchor), t.class !== void 0 && a.attr("class", t.class); + const s = a.append("tspan"); + return s.attr("x", t.x + t.textMargin * 2), s.text(e), a; +}, $t = function(n, t) { + function e(s, h, l, p, y) { + return s + "," + h + " " + (s + l) + "," + h + " " + (s + l) + "," + (h + p - y) + " " + (s + l - y * 1.2) + "," + (h + p) + " " + s + "," + (h + p); + } + const a = n.append("polygon"); + a.attr("points", e(t.x, t.y, 50, 20, 7)), a.attr("class", "labelBox"), t.y = t.y + t.labelMargin, t.x = t.x + 0.5 * t.labelMargin, ut(n, t); +}, Nt = function(n, t, e) { + const a = n.append("g"), s = X(); + s.x = t.x, s.y = t.y, s.fill = t.fill, s.width = e.width, s.height = e.height, s.class = "journey-section section-type-" + t.num, s.rx = 3, s.ry = 3, Z(a, s), pt(e)( + t.text, + a, + s.x, + s.y, + s.width, + s.height, + { class: "journey-section section-type-" + t.num }, + e, + t.colour + ); +}; +let et = -1; +const Mt = function(n, t, e) { + const a = t.x + e.width / 2, s = n.append("g"); + et++; + const h = 300 + 5 * 30; + s.append("line").attr("id", "task" + et).attr("x1", a).attr("y1", t.y).attr("x2", a).attr("y2", h).attr("class", "task-line").attr("stroke-width", "1px").attr("stroke-dasharray", "4 2").attr("stroke", "#666"), Tt(s, { + cx: a, + cy: 300 + (5 - t.score) * 30, + score: t.score + }); + const l = X(); + l.x = t.x, l.y = t.y, l.fill = t.fill, l.width = e.width, l.height = e.height, l.class = "task task-type-" + t.num, l.rx = 3, l.ry = 3, Z(s, l), t.x + 14, pt(e)( + t.task, + s, + l.x, + l.y, + l.width, + l.height, + { class: "task" }, + e, + t.colour + ); +}, Lt = function(n, t) { + Z(n, { + x: t.startx, + y: t.starty, + width: t.stopx - t.startx, + height: t.stopy - t.starty, + fill: t.fill, + class: "rect" + }).lower(); +}, At = function() { + return { + x: 0, + y: 0, + fill: void 0, + "text-anchor": "start", + width: 100, + height: 100, + textMargin: 0, + rx: 0, + ry: 0 + }; +}, X = function() { + return { + x: 0, + y: 0, + width: 100, + anchor: "start", + height: 100, + rx: 0, + ry: 0 + }; +}, pt = function() { + function n(s, h, l, p, y, f, b, m) { + const g = h.append("text").attr("x", l + y / 2).attr("y", p + f / 2 + 5).style("font-color", m).style("text-anchor", "middle").text(s); + a(g, b); + } + function t(s, h, l, p, y, f, b, m, g) { + const { taskFontSize: i, taskFontFamily: r } = m, c = s.split(//gi); + for (let d = 0; d < c.length; d++) { + const u = d * i - i * (c.length - 1) / 2, o = h.append("text").attr("x", l + y / 2).attr("y", p).attr("fill", g).style("text-anchor", "middle").style("font-size", i).style("font-family", r); + o.append("tspan").attr("x", l + y / 2).attr("dy", u).text(c[d]), o.attr("y", p + f / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"), a(o, b); + } + } + function e(s, h, l, p, y, f, b, m) { + const g = h.append("switch"), r = g.append("foreignObject").attr("x", l).attr("y", p).attr("width", y).attr("height", f).attr("position", "fixed").append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + r.append("div").attr("class", "label").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(s), t(s, g, l, p, y, f, b, m), a(r, b); + } + function a(s, h) { + for (const l in h) + l in h && s.attr(l, h[l]); + } + return function(s) { + return s.textPlacement === "fo" ? e : s.textPlacement === "old" ? n : t; + }; +}(), Ht = function(n) { + n.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z"); +}; +function yt(n, t) { + n.each(function() { + var e = q(this), a = e.text().split(/(\s+|
        )/).reverse(), s, h = [], l = 1.1, p = e.attr("y"), y = parseFloat(e.attr("dy")), f = e.text(null).append("tspan").attr("x", 0).attr("y", p).attr("dy", y + "em"); + for (let b = 0; b < a.length; b++) + s = a[a.length - 1 - b], h.push(s), f.text(h.join(" ").trim()), (f.node().getComputedTextLength() > t || s === "
        ") && (h.pop(), f.text(h.join(" ").trim()), s === "
        " ? h = [""] : h = [s], f = e.append("tspan").attr("x", 0).attr("y", p).attr("dy", l + "em").text(s)); + }); +} +const Pt = function(n, t, e, a) { + const s = e % Et - 1, h = n.append("g"); + t.section = s, h.attr( + "class", + (t.class ? t.class + " " : "") + "timeline-node " + ("section-" + s) + ); + const l = h.append("g"), p = h.append("g"), f = p.append("text").text(t.descr).attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle").call(yt, t.width).node().getBBox(), b = a.fontSize && a.fontSize.replace ? a.fontSize.replace("px", "") : a.fontSize; + return t.height = f.height + b * 1.1 * 0.5 + t.padding, t.height = Math.max(t.height, t.maxHeight), t.width = t.width + 2 * t.padding, p.attr("transform", "translate(" + t.width / 2 + ", " + t.padding / 2 + ")"), zt(l, t, s), t; +}, Ct = function(n, t, e) { + const a = n.append("g"), h = a.append("text").text(t.descr).attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle").call(yt, t.width).node().getBBox(), l = e.fontSize && e.fontSize.replace ? e.fontSize.replace("px", "") : e.fontSize; + return a.remove(), h.height + l * 1.1 * 0.5 + t.padding; +}, zt = function(n, t, e) { + n.append("path").attr("id", "node-" + t.id).attr("class", "node-bkg node-" + t.type).attr( + "d", + `M0 ${t.height - 5} v${-t.height + 2 * 5} q0,-5 5,-5 h${t.width - 2 * 5} q5,0 5,5 v${t.height - 5} H0 Z` + ), n.append("line").attr("class", "node-line-" + e).attr("x1", 0).attr("y1", t.height).attr("x2", t.width).attr("y2", t.height); +}, C = { + drawRect: Z, + drawCircle: It, + drawSection: Nt, + drawText: ut, + drawLabel: $t, + drawTask: Mt, + drawBackgroundRect: Lt, + getTextObj: At, + getNoteRect: X, + initGraphics: Ht, + drawNode: Pt, + getVirtualNodeHeight: Ct +}, Rt = function(n, t, e, a) { + var $, R, F; + var s, h; + const l = mt(), p = ($ = l.leftMargin) != null ? $ : 50; + S.debug("timeline", a.db); + const y = l.securityLevel; + let f; + y === "sandbox" && (f = q("#i" + t)); + const m = (y === "sandbox" ? q(f.nodes()[0].contentDocument.body) : q("body")).select("#" + t); + m.append("g"); + const g = a.db.getTasks(), i = a.db.getCommonDb().getDiagramTitle(); + S.debug("task", g), C.initGraphics(m); + const r = a.db.getSections(); + S.debug("sections", r); + let c = 0, d = 0, u = 0, o = 0, I = 50 + p, x = 50; + o = 50; + let E = 0, O = !0; + r.forEach(function(A) { + const w = { + number: E, + descr: A, + section: E, + width: 150, + padding: 20, + maxHeight: c + }, _ = C.getVirtualNodeHeight(m, w, l); + S.debug("sectionHeight before draw", _), c = Math.max(c, _ + 20); + }); + let z = 0, H = 0; + S.debug("tasks.length", g.length); + for (const [A, w] of g.entries()) { + const _ = { + number: A, + descr: w, + section: w.section, + width: 150, + padding: 20, + maxHeight: d + }, T = C.getVirtualNodeHeight(m, _, l); + S.debug("taskHeight before draw", T), d = Math.max(d, T + 20), z = Math.max(z, w.events.length); + let v = 0; + for (let N = 0; N < w.events.length; N++) { + const V = { + descr: w.events[N], + section: w.section, + number: w.section, + width: 150, + padding: 20, + maxHeight: 50 + }; + v += C.getVirtualNodeHeight(m, V, l); + } + H = Math.max(H, v); + } + S.debug("maxSectionHeight before draw", c), S.debug("maxTaskHeight before draw", d), r && r.length > 0 ? r.forEach((A) => { + const w = g.filter((N) => N.section === A), _ = { + number: E, + descr: A, + section: E, + width: 200 * Math.max(w.length, 1) - 50, + padding: 20, + maxHeight: c + }; + S.debug("sectionNode", _); + const T = m.append("g"), v = C.drawNode(T, _, E, l); + S.debug("sectionNode output", v), T.attr("transform", `translate(${I}, ${o})`), x += c + 50, w.length > 0 && nt( + m, + w, + E, + I, + x, + d, + l, + z, + H, + c, + !1 + ), I += 200 * Math.max(w.length, 1), x = o, E++; + }) : (O = !1, nt( + m, + g, + E, + I, + x, + d, + l, + z, + H, + c, + !0 + )); + const j = m.node().getBBox(); + S.debug("bounds", j), i && m.append("text").text(i).attr("x", j.width / 2 - p).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 20), u = O ? c + d + 150 : d + 100, m.append("g").attr("class", "lineWrapper").append("line").attr("x1", p).attr("y1", u).attr("x2", j.width + 3 * p).attr("y2", u).attr("stroke-width", 4).attr("stroke", "black").attr("marker-end", "url(#arrowhead)"), xt( + void 0, + m, + (R = (s = l.timeline) == null ? void 0 : s.padding) != null ? R : 50, + (F = (h = l.timeline) == null ? void 0 : h.useMaxWidth) != null ? F : !1 + ); +}, nt = function(n, t, e, a, s, h, l, p, y, f, b) { + var m; + for (const g of t) { + const i = { + descr: g.task, + section: e, + number: e, + width: 150, + padding: 20, + maxHeight: h + }; + S.debug("taskNode", i); + const r = n.append("g").attr("class", "taskWrapper"), d = C.drawNode(r, i, e, l).height; + if (S.debug("taskHeight after draw", d), r.attr("transform", `translate(${a}, ${s})`), h = Math.max(h, d), g.events) { + const u = n.append("g").attr("class", "lineWrapper"); + let o = h; + s += 100, o = o + Ft(n, g.events, e, a, s, l), s -= 100, u.append("line").attr("x1", a + 190 / 2).attr("y1", s + h).attr("x2", a + 190 / 2).attr( + "y2", + s + h + (b ? h : f) + y + 120 + ).attr("stroke-width", 2).attr("stroke", "black").attr("marker-end", "url(#arrowhead)").attr("stroke-dasharray", "5,5"); + } + a = a + 200, b && !((m = l.timeline) != null && m.disableMulticolor) && e++; + } + s = s - 10; +}, Ft = function(n, t, e, a, s, h) { + let l = 0; + const p = s; + s = s + 100; + for (const y of t) { + const f = { + descr: y, + section: e, + number: e, + width: 150, + padding: 20, + maxHeight: 50 + }; + S.debug("eventNode", f); + const b = n.append("g").attr("class", "eventWrapper"), g = C.drawNode(b, f, e, h).height; + l = l + g, b.attr("transform", `translate(${a}, ${s})`), s = s + 10 + g; + } + return s = p, l; +}, Vt = { + setConf: () => { + }, + draw: Rt +}, Wt = (n) => { + let t = ""; + for (let e = 0; e < n.THEME_COLOR_LIMIT; e++) + n["lineColor" + e] = n["lineColor" + e] || n["cScaleInv" + e], _t(n["lineColor" + e]) ? n["lineColor" + e] = bt(n["lineColor" + e], 20) : n["lineColor" + e] = kt(n["lineColor" + e], 20); + for (let e = 0; e < n.THEME_COLOR_LIMIT; e++) { + const a = "" + (17 - 3 * e); + t += ` + .section-${e - 1} rect, .section-${e - 1} path, .section-${e - 1} circle, .section-${e - 1} path { + fill: ${n["cScale" + e]}; + } + .section-${e - 1} text { + fill: ${n["cScaleLabel" + e]}; + } + .node-icon-${e - 1} { + font-size: 40px; + color: ${n["cScaleLabel" + e]}; + } + .section-edge-${e - 1}{ + stroke: ${n["cScale" + e]}; + } + .edge-depth-${e - 1}{ + stroke-width: ${a}; + } + .section-${e - 1} line { + stroke: ${n["cScaleInv" + e]} ; + stroke-width: 3; + } + + .lineWrapper line{ + stroke: ${n["cScaleLabel" + e]} ; + } + + .disabled, .disabled circle, .disabled text { + fill: lightgray; + } + .disabled text { + fill: #efefef; + } + `; + } + return t; +}, Bt = (n) => ` + .edge { + stroke-width: 3; + } + ${Wt(n)} + .section-root rect, .section-root path, .section-root circle { + fill: ${n.git0}; + } + .section-root text { + fill: ${n.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`, Ot = Bt, Ut = { + db: St, + renderer: Vt, + parser: vt, + styles: Ot +}; +export { + Ut as diagram +}; diff --git a/client/packages/lowcoder/public/package/0fddf2f2.js b/client/packages/lowcoder/public/package/0fddf2f2.js new file mode 100644 index 000000000..5601dc7f2 --- /dev/null +++ b/client/packages/lowcoder/public/package/0fddf2f2.js @@ -0,0 +1,64 @@ +import { aq as o, o as i } from "./08856db2.js"; +const l = (s, t) => { + const e = s.append("rect"); + if (e.attr("x", t.x), e.attr("y", t.y), e.attr("fill", t.fill), e.attr("stroke", t.stroke), e.attr("width", t.width), e.attr("height", t.height), t.name && e.attr("name", t.name), t.rx !== void 0 && e.attr("rx", t.rx), t.ry !== void 0 && e.attr("ry", t.ry), t.attrs !== void 0) + for (const r in t.attrs) + e.attr(r, t.attrs[r]); + return t.class !== void 0 && e.attr("class", t.class), e; +}, x = (s, t) => { + const e = { + x: t.startx, + y: t.starty, + width: t.stopx - t.startx, + height: t.stopy - t.starty, + fill: t.fill, + stroke: t.stroke, + class: "rect" + }; + l(s, e).lower(); +}, d = (s, t) => { + const e = t.text.replace(o, " "), r = s.append("text"); + r.attr("x", t.x), r.attr("y", t.y), r.attr("class", "legend"), r.style("text-anchor", t.anchor), t.class !== void 0 && r.attr("class", t.class); + const n = r.append("tspan"); + return n.attr("x", t.x + t.textMargin * 2), n.text(e), r; +}, h = (s, t, e, r) => { + const n = s.append("image"); + n.attr("x", t), n.attr("y", e); + const a = i.sanitizeUrl(r); + n.attr("xlink:href", a); +}, y = (s, t, e, r) => { + const n = s.append("use"); + n.attr("x", t), n.attr("y", e); + const a = i.sanitizeUrl(r); + n.attr("xlink:href", `#${a}`); +}, g = () => ({ + x: 0, + y: 0, + width: 100, + height: 100, + fill: "#EDF2AE", + stroke: "#666", + anchor: "start", + rx: 0, + ry: 0 +}), p = () => ({ + x: 0, + y: 0, + width: 100, + height: 100, + "text-anchor": "start", + style: "#666", + textMargin: 0, + rx: 0, + ry: 0, + tspan: !0 +}); +export { + x as a, + p as b, + y as c, + l as d, + h as e, + d as f, + g +}; diff --git a/client/packages/lowcoder/public/package/116e77a5.js b/client/packages/lowcoder/public/package/116e77a5.js new file mode 100644 index 000000000..dfff3cda7 --- /dev/null +++ b/client/packages/lowcoder/public/package/116e77a5.js @@ -0,0 +1,927 @@ +import { E as _t, e as Y, s as Et, a as mt, d as gt, b as kt, F as xt, G as Rt, l as K, H as Ot, j as et, C as bt, k as Nt, I as Tt, J as At } from "./08856db2.js"; +import { G as Mt } from "./4504d077.js"; +import { l as It } from "./666097a3.js"; +import { l as wt } from "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +const St = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +function Dt(t) { + return typeof t == "string" && St.test(t); +} +function vt(t) { + if (!Dt(t)) + throw TypeError("Invalid UUID"); + let r; + const e = new Uint8Array(16); + return e[0] = (r = parseInt(t.slice(0, 8), 16)) >>> 24, e[1] = r >>> 16 & 255, e[2] = r >>> 8 & 255, e[3] = r & 255, e[4] = (r = parseInt(t.slice(9, 13), 16)) >>> 8, e[5] = r & 255, e[6] = (r = parseInt(t.slice(14, 18), 16)) >>> 8, e[7] = r & 255, e[8] = (r = parseInt(t.slice(19, 23), 16)) >>> 8, e[9] = r & 255, e[10] = (r = parseInt(t.slice(24, 36), 16)) / 1099511627776 & 255, e[11] = r / 4294967296 & 255, e[12] = r >>> 24 & 255, e[13] = r >>> 16 & 255, e[14] = r >>> 8 & 255, e[15] = r & 255, e; +} +function Lt(t) { + t = unescape(encodeURIComponent(t)); + const r = []; + for (let e = 0; e < t.length; ++e) + r.push(t.charCodeAt(e)); + return r; +} +const Bt = "6ba7b810-9dad-11d1-80b4-00c04fd430c8", Ct = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; +function Pt(t, r, e) { + function f(l, p, u, o) { + var h; + if (typeof l == "string" && (l = Lt(l)), typeof p == "string" && (p = vt(p)), ((h = p) === null || h === void 0 ? void 0 : h.length) !== 16) + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + let _ = new Uint8Array(16 + l.length); + if (_.set(p), _.set(l, p.length), _ = e(_), _[6] = _[6] & 15 | r, _[8] = _[8] & 63 | 128, u) { + o = o || 0; + for (let m = 0; m < 16; ++m) + u[o + m] = _[m]; + return u; + } + return _t(_); + } + try { + f.name = t; + } catch (l) { + } + return f.DNS = Bt, f.URL = Ct, f; +} +function Yt(t, r, e, f) { + switch (t) { + case 0: + return r & e ^ ~r & f; + case 1: + return r ^ e ^ f; + case 2: + return r & e ^ r & f ^ e & f; + case 3: + return r ^ e ^ f; + } +} +function rt(t, r) { + return t << r | t >>> 32 - r; +} +function Zt(t) { + const r = [1518500249, 1859775393, 2400959708, 3395469782], e = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + if (typeof t == "string") { + const u = unescape(encodeURIComponent(t)); + t = []; + for (let o = 0; o < u.length; ++o) + t.push(u.charCodeAt(o)); + } else + Array.isArray(t) || (t = Array.prototype.slice.call(t)); + t.push(128); + const f = t.length / 4 + 2, l = Math.ceil(f / 16), p = new Array(l); + for (let u = 0; u < l; ++u) { + const o = new Uint32Array(16); + for (let h = 0; h < 16; ++h) + o[h] = t[u * 64 + h * 4] << 24 | t[u * 64 + h * 4 + 1] << 16 | t[u * 64 + h * 4 + 2] << 8 | t[u * 64 + h * 4 + 3]; + p[u] = o; + } + p[l - 1][14] = (t.length - 1) * 8 / Math.pow(2, 32), p[l - 1][14] = Math.floor(p[l - 1][14]), p[l - 1][15] = (t.length - 1) * 8 & 4294967295; + for (let u = 0; u < l; ++u) { + const o = new Uint32Array(80); + for (let y = 0; y < 16; ++y) + o[y] = p[u][y]; + for (let y = 16; y < 80; ++y) + o[y] = rt(o[y - 3] ^ o[y - 8] ^ o[y - 14] ^ o[y - 16], 1); + let h = e[0], _ = e[1], m = e[2], g = e[3], R = e[4]; + for (let y = 0; y < 80; ++y) { + const k = Math.floor(y / 20), w = rt(h, 5) + Yt(k, _, m, g) + R + r[k] + o[y] >>> 0; + R = g, g = m, m = rt(_, 30) >>> 0, _ = h, h = w; + } + e[0] = e[0] + h >>> 0, e[1] = e[1] + _ >>> 0, e[2] = e[2] + m >>> 0, e[3] = e[3] + g >>> 0, e[4] = e[4] + R >>> 0; + } + return [e[0] >> 24 & 255, e[0] >> 16 & 255, e[0] >> 8 & 255, e[0] & 255, e[1] >> 24 & 255, e[1] >> 16 & 255, e[1] >> 8 & 255, e[1] & 255, e[2] >> 24 & 255, e[2] >> 16 & 255, e[2] >> 8 & 255, e[2] & 255, e[3] >> 24 & 255, e[3] >> 16 & 255, e[3] >> 8 & 255, e[3] & 255, e[4] >> 24 & 255, e[4] >> 16 & 255, e[4] >> 8 & 255, e[4] & 255]; +} +const Ft = Pt("v5", 80, Zt), Wt = Ft; +var at = function() { + var t = function(M, i, n, c) { + for (n = n || {}, c = M.length; c--; n[M[c]] = i) + ; + return n; + }, r = [6, 8, 10, 20, 22, 24, 26, 27, 28], e = [1, 10], f = [1, 11], l = [1, 12], p = [1, 13], u = [1, 14], o = [1, 15], h = [1, 21], _ = [1, 22], m = [1, 23], g = [1, 24], R = [1, 25], y = [6, 8, 10, 13, 15, 18, 19, 20, 22, 24, 26, 27, 28, 41, 42, 43, 44, 45], k = [1, 34], w = [27, 28, 46, 47], Z = [41, 42, 43, 44, 45], F = [17, 34], B = [1, 54], T = [1, 53], A = [17, 34, 36, 38], O = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, ER_DIAGRAM: 4, document: 5, EOF: 6, line: 7, SPACE: 8, statement: 9, NEWLINE: 10, entityName: 11, relSpec: 12, ":": 13, role: 14, BLOCK_START: 15, attributes: 16, BLOCK_STOP: 17, SQS: 18, SQE: 19, title: 20, title_value: 21, acc_title: 22, acc_title_value: 23, acc_descr: 24, acc_descr_value: 25, acc_descr_multiline_value: 26, ALPHANUM: 27, ENTITY_NAME: 28, attribute: 29, attributeType: 30, attributeName: 31, attributeKeyTypeList: 32, attributeComment: 33, ATTRIBUTE_WORD: 34, attributeKeyType: 35, COMMA: 36, ATTRIBUTE_KEY: 37, COMMENT: 38, cardinality: 39, relType: 40, ZERO_OR_ONE: 41, ZERO_OR_MORE: 42, ONE_OR_MORE: 43, ONLY_ONE: 44, MD_PARENT: 45, NON_IDENTIFYING: 46, IDENTIFYING: 47, WORD: 48, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "ER_DIAGRAM", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 13: ":", 15: "BLOCK_START", 17: "BLOCK_STOP", 18: "SQS", 19: "SQE", 20: "title", 21: "title_value", 22: "acc_title", 23: "acc_title_value", 24: "acc_descr", 25: "acc_descr_value", 26: "acc_descr_multiline_value", 27: "ALPHANUM", 28: "ENTITY_NAME", 34: "ATTRIBUTE_WORD", 36: "COMMA", 37: "ATTRIBUTE_KEY", 38: "COMMENT", 41: "ZERO_OR_ONE", 42: "ZERO_OR_MORE", 43: "ONE_OR_MORE", 44: "ONLY_ONE", 45: "MD_PARENT", 46: "NON_IDENTIFYING", 47: "IDENTIFYING", 48: "WORD" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 5], [9, 4], [9, 3], [9, 1], [9, 7], [9, 6], [9, 4], [9, 2], [9, 2], [9, 2], [9, 1], [11, 1], [11, 1], [16, 1], [16, 2], [29, 2], [29, 3], [29, 3], [29, 4], [30, 1], [31, 1], [32, 1], [32, 3], [35, 1], [33, 1], [12, 3], [39, 1], [39, 1], [39, 1], [39, 1], [39, 1], [40, 1], [40, 1], [14, 1], [14, 1], [14, 1]], + performAction: function(i, n, c, d, E, a, z) { + var s = a.length - 1; + switch (E) { + case 1: + break; + case 2: + this.$ = []; + break; + case 3: + a[s - 1].push(a[s]), this.$ = a[s - 1]; + break; + case 4: + case 5: + this.$ = a[s]; + break; + case 6: + case 7: + this.$ = []; + break; + case 8: + d.addEntity(a[s - 4]), d.addEntity(a[s - 2]), d.addRelationship(a[s - 4], a[s], a[s - 2], a[s - 3]); + break; + case 9: + d.addEntity(a[s - 3]), d.addAttributes(a[s - 3], a[s - 1]); + break; + case 10: + d.addEntity(a[s - 2]); + break; + case 11: + d.addEntity(a[s]); + break; + case 12: + d.addEntity(a[s - 6], a[s - 4]), d.addAttributes(a[s - 6], a[s - 1]); + break; + case 13: + d.addEntity(a[s - 5], a[s - 3]); + break; + case 14: + d.addEntity(a[s - 3], a[s - 1]); + break; + case 15: + case 16: + this.$ = a[s].trim(), d.setAccTitle(this.$); + break; + case 17: + case 18: + this.$ = a[s].trim(), d.setAccDescription(this.$); + break; + case 19: + case 43: + this.$ = a[s]; + break; + case 20: + case 41: + case 42: + this.$ = a[s].replace(/"/g, ""); + break; + case 21: + case 29: + this.$ = [a[s]]; + break; + case 22: + a[s].push(a[s - 1]), this.$ = a[s]; + break; + case 23: + this.$ = { attributeType: a[s - 1], attributeName: a[s] }; + break; + case 24: + this.$ = { attributeType: a[s - 2], attributeName: a[s - 1], attributeKeyTypeList: a[s] }; + break; + case 25: + this.$ = { attributeType: a[s - 2], attributeName: a[s - 1], attributeComment: a[s] }; + break; + case 26: + this.$ = { attributeType: a[s - 3], attributeName: a[s - 2], attributeKeyTypeList: a[s - 1], attributeComment: a[s] }; + break; + case 27: + case 28: + case 31: + this.$ = a[s]; + break; + case 30: + a[s - 2].push(a[s]), this.$ = a[s - 2]; + break; + case 32: + this.$ = a[s].replace(/"/g, ""); + break; + case 33: + this.$ = { cardA: a[s], relType: a[s - 1], cardB: a[s - 2] }; + break; + case 34: + this.$ = d.Cardinality.ZERO_OR_ONE; + break; + case 35: + this.$ = d.Cardinality.ZERO_OR_MORE; + break; + case 36: + this.$ = d.Cardinality.ONE_OR_MORE; + break; + case 37: + this.$ = d.Cardinality.ONLY_ONE; + break; + case 38: + this.$ = d.Cardinality.MD_PARENT; + break; + case 39: + this.$ = d.Identification.NON_IDENTIFYING; + break; + case 40: + this.$ = d.Identification.IDENTIFYING; + break; + } + }, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, t(r, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 9, 20: e, 22: f, 24: l, 26: p, 27: u, 28: o }, t(r, [2, 7], { 1: [2, 1] }), t(r, [2, 3]), { 9: 16, 11: 9, 20: e, 22: f, 24: l, 26: p, 27: u, 28: o }, t(r, [2, 5]), t(r, [2, 6]), t(r, [2, 11], { 12: 17, 39: 20, 15: [1, 18], 18: [1, 19], 41: h, 42: _, 43: m, 44: g, 45: R }), { 21: [1, 26] }, { 23: [1, 27] }, { 25: [1, 28] }, t(r, [2, 18]), t(y, [2, 19]), t(y, [2, 20]), t(r, [2, 4]), { 11: 29, 27: u, 28: o }, { 16: 30, 17: [1, 31], 29: 32, 30: 33, 34: k }, { 11: 35, 27: u, 28: o }, { 40: 36, 46: [1, 37], 47: [1, 38] }, t(w, [2, 34]), t(w, [2, 35]), t(w, [2, 36]), t(w, [2, 37]), t(w, [2, 38]), t(r, [2, 15]), t(r, [2, 16]), t(r, [2, 17]), { 13: [1, 39] }, { 17: [1, 40] }, t(r, [2, 10]), { 16: 41, 17: [2, 21], 29: 32, 30: 33, 34: k }, { 31: 42, 34: [1, 43] }, { 34: [2, 27] }, { 19: [1, 44] }, { 39: 45, 41: h, 42: _, 43: m, 44: g, 45: R }, t(Z, [2, 39]), t(Z, [2, 40]), { 14: 46, 27: [1, 49], 28: [1, 48], 48: [1, 47] }, t(r, [2, 9]), { 17: [2, 22] }, t(F, [2, 23], { 32: 50, 33: 51, 35: 52, 37: B, 38: T }), t([17, 34, 37, 38], [2, 28]), t(r, [2, 14], { 15: [1, 55] }), t([27, 28], [2, 33]), t(r, [2, 8]), t(r, [2, 41]), t(r, [2, 42]), t(r, [2, 43]), t(F, [2, 24], { 33: 56, 36: [1, 57], 38: T }), t(F, [2, 25]), t(A, [2, 29]), t(F, [2, 32]), t(A, [2, 31]), { 16: 58, 17: [1, 59], 29: 32, 30: 33, 34: k }, t(F, [2, 26]), { 35: 60, 37: B }, { 17: [1, 61] }, t(r, [2, 13]), t(A, [2, 30]), t(r, [2, 12])], + defaultActions: { 34: [2, 27], 41: [2, 22] }, + parseError: function(i, n) { + if (n.recoverable) + this.trace(i); + else { + var c = new Error(i); + throw c.hash = n, c; + } + }, + parse: function(i) { + var n = this, c = [0], d = [], E = [null], a = [], z = this.table, s = "", X = 0, nt = 0, ft = 2, st = 1, ut = a.slice.call(arguments, 1), N = Object.create(this.lexer), U = { yy: {} }; + for (var J in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, J) && (U.yy[J] = this.yy[J]); + N.setInput(i, U.yy), U.yy.lexer = N, U.yy.parser = this, typeof N.yylloc == "undefined" && (N.yylloc = {}); + var q = N.yylloc; + a.push(q); + var yt = N.options && N.options.ranges; + typeof U.yy.parseError == "function" ? this.parseError = U.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function pt() { + var P; + return P = d.pop() || N.lex() || st, typeof P != "number" && (P instanceof Array && (d = P, P = d.pop()), P = n.symbols_[P] || P), P; + } + for (var I, G, S, $, H = {}, Q, C, ot, j; ; ) { + if (G = c[c.length - 1], this.defaultActions[G] ? S = this.defaultActions[G] : ((I === null || typeof I == "undefined") && (I = pt()), S = z[G] && z[G][I]), typeof S == "undefined" || !S.length || !S[0]) { + var tt = ""; + j = []; + for (Q in z[G]) + this.terminals_[Q] && Q > ft && j.push("'" + this.terminals_[Q] + "'"); + N.showPosition ? tt = "Parse error on line " + (X + 1) + `: +` + N.showPosition() + ` +Expecting ` + j.join(", ") + ", got '" + (this.terminals_[I] || I) + "'" : tt = "Parse error on line " + (X + 1) + ": Unexpected " + (I == st ? "end of input" : "'" + (this.terminals_[I] || I) + "'"), this.parseError(tt, { + text: N.match, + token: this.terminals_[I] || I, + line: N.yylineno, + loc: q, + expected: j + }); + } + if (S[0] instanceof Array && S.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + G + ", token: " + I); + switch (S[0]) { + case 1: + c.push(I), E.push(N.yytext), a.push(N.yylloc), c.push(S[1]), I = null, nt = N.yyleng, s = N.yytext, X = N.yylineno, q = N.yylloc; + break; + case 2: + if (C = this.productions_[S[1]][1], H.$ = E[E.length - C], H._$ = { + first_line: a[a.length - (C || 1)].first_line, + last_line: a[a.length - 1].last_line, + first_column: a[a.length - (C || 1)].first_column, + last_column: a[a.length - 1].last_column + }, yt && (H._$.range = [ + a[a.length - (C || 1)].range[0], + a[a.length - 1].range[1] + ]), $ = this.performAction.apply(H, [ + s, + nt, + X, + U.yy, + S[1], + E, + a + ].concat(ut)), typeof $ != "undefined") + return $; + C && (c = c.slice(0, -1 * C * 2), E = E.slice(0, -1 * C), a = a.slice(0, -1 * C)), c.push(this.productions_[S[1]][0]), E.push(H.$), a.push(H._$), ot = z[c[c.length - 2]][c[c.length - 1]], c.push(ot); + break; + case 3: + return !0; + } + } + return !0; + } + }, b = function() { + var M = { + EOF: 1, + parseError: function(n, c) { + if (this.yy.parser) + this.yy.parser.parseError(n, c); + else + throw new Error(n); + }, + // resets the lexer, sets new input + setInput: function(i, n) { + return this.yy = n || this.yy || {}, this._input = i, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var i = this._input[0]; + this.yytext += i, this.yyleng++, this.offset++, this.match += i, this.matched += i; + var n = i.match(/(?:\r\n?|\n).*/g); + return n ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), i; + }, + // unshifts one char (or a string) into the input + unput: function(i) { + var n = i.length, c = i.split(/(?:\r\n?|\n)/g); + this._input = i + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - n), this.offset -= n; + var d = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), c.length - 1 && (this.yylineno -= c.length - 1); + var E = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: c ? (c.length === d.length ? this.yylloc.first_column : 0) + d[d.length - c.length].length - c[0].length : this.yylloc.first_column - n + }, this.options.ranges && (this.yylloc.range = [E[0], E[0] + this.yyleng - n]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(i) { + this.unput(this.match.slice(i)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var i = this.matched.substr(0, this.matched.length - this.match.length); + return (i.length > 20 ? "..." : "") + i.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var i = this.match; + return i.length < 20 && (i += this._input.substr(0, 20 - i.length)), (i.substr(0, 20) + (i.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var i = this.pastInput(), n = new Array(i.length + 1).join("-"); + return i + this.upcomingInput() + ` +` + n + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(i, n) { + var c, d, E; + if (this.options.backtrack_lexer && (E = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (E.yylloc.range = this.yylloc.range.slice(0))), d = i[0].match(/(?:\r\n?|\n).*/g), d && (this.yylineno += d.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: d ? d[d.length - 1].length - d[d.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + i[0].length + }, this.yytext += i[0], this.match += i[0], this.matches = i, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(i[0].length), this.matched += i[0], c = this.performAction.call(this, this.yy, this, n, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), c) + return c; + if (this._backtrack) { + for (var a in E) + this[a] = E[a]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var i, n, c, d; + this._more || (this.yytext = "", this.match = ""); + for (var E = this._currentRules(), a = 0; a < E.length; a++) + if (c = this._input.match(this.rules[E[a]]), c && (!n || c[0].length > n[0].length)) { + if (n = c, d = a, this.options.backtrack_lexer) { + if (i = this.test_match(c, E[a]), i !== !1) + return i; + if (this._backtrack) { + n = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return n ? (i = this.test_match(n, E[d]), i !== !1 ? i : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var n = this.next(); + return n || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(n) { + this.conditionStack.push(n); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var n = this.conditionStack.length - 1; + return n > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(n) { + return n = this.conditionStack.length - 1 - Math.abs(n || 0), n >= 0 ? this.conditionStack[n] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(n) { + this.begin(n); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(n, c, d, E) { + switch (d) { + case 0: + return this.begin("acc_title"), 22; + case 1: + return this.popState(), "acc_title_value"; + case 2: + return this.begin("acc_descr"), 24; + case 3: + return this.popState(), "acc_descr_value"; + case 4: + this.begin("acc_descr_multiline"); + break; + case 5: + this.popState(); + break; + case 6: + return "acc_descr_multiline_value"; + case 7: + return 10; + case 8: + break; + case 9: + return 8; + case 10: + return 28; + case 11: + return 48; + case 12: + return 4; + case 13: + return this.begin("block"), 15; + case 14: + return 36; + case 15: + break; + case 16: + return 37; + case 17: + return 34; + case 18: + return 34; + case 19: + return 38; + case 20: + break; + case 21: + return this.popState(), 17; + case 22: + return c.yytext[0]; + case 23: + return 18; + case 24: + return 19; + case 25: + return 41; + case 26: + return 43; + case 27: + return 43; + case 28: + return 43; + case 29: + return 41; + case 30: + return 41; + case 31: + return 42; + case 32: + return 42; + case 33: + return 42; + case 34: + return 42; + case 35: + return 42; + case 36: + return 43; + case 37: + return 42; + case 38: + return 43; + case 39: + return 44; + case 40: + return 44; + case 41: + return 44; + case 42: + return 44; + case 43: + return 41; + case 44: + return 42; + case 45: + return 43; + case 46: + return 45; + case 47: + return 46; + case 48: + return 47; + case 49: + return 47; + case 50: + return 46; + case 51: + return 46; + case 52: + return 46; + case 53: + return 27; + case 54: + return c.yytext[0]; + case 55: + return 6; + } + }, + rules: [/^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:[\s]+)/i, /^(?:"[^"%\r\n\v\b\\]+")/i, /^(?:"[^"]*")/i, /^(?:erDiagram\b)/i, /^(?:\{)/i, /^(?:,)/i, /^(?:\s+)/i, /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i, /^(?:"[^"]*")/i, /^(?:[\n]+)/i, /^(?:\})/i, /^(?:.)/i, /^(?:\[)/i, /^(?:\])/i, /^(?:one or zero\b)/i, /^(?:one or more\b)/i, /^(?:one or many\b)/i, /^(?:1\+)/i, /^(?:\|o\b)/i, /^(?:zero or one\b)/i, /^(?:zero or more\b)/i, /^(?:zero or many\b)/i, /^(?:0\+)/i, /^(?:\}o\b)/i, /^(?:many\(0\))/i, /^(?:many\(1\))/i, /^(?:many\b)/i, /^(?:\}\|)/i, /^(?:one\b)/i, /^(?:only one\b)/i, /^(?:1\b)/i, /^(?:\|\|)/i, /^(?:o\|)/i, /^(?:o\{)/i, /^(?:\|\{)/i, /^(?:\s*u\b)/i, /^(?:\.\.)/i, /^(?:--)/i, /^(?:to\b)/i, /^(?:optionally to\b)/i, /^(?:\.-)/i, /^(?:-\.)/i, /^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i, /^(?:.)/i, /^(?:$)/i], + conditions: { acc_descr_multiline: { rules: [5, 6], inclusive: !1 }, acc_descr: { rules: [3], inclusive: !1 }, acc_title: { rules: [1], inclusive: !1 }, block: { rules: [14, 15, 16, 17, 18, 19, 20, 21, 22], inclusive: !1 }, INITIAL: { rules: [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], inclusive: !0 } } + }; + return M; + }(); + O.lexer = b; + function D() { + this.yy = {}; + } + return D.prototype = O, O.Parser = D, new D(); +}(); +at.parser = at; +const Ut = at; +let W = {}, it = []; +const Gt = { + ZERO_OR_ONE: "ZERO_OR_ONE", + ZERO_OR_MORE: "ZERO_OR_MORE", + ONE_OR_MORE: "ONE_OR_MORE", + ONLY_ONE: "ONLY_ONE", + MD_PARENT: "MD_PARENT" +}, Ht = { + NON_IDENTIFYING: "NON_IDENTIFYING", + IDENTIFYING: "IDENTIFYING" +}, ht = function(t, r = void 0) { + return W[t] === void 0 ? (W[t] = { attributes: [], alias: r }, K.info("Added new entity :", t)) : W[t] && !W[t].alias && r && (W[t].alias = r, K.info(`Add alias '${r}' to entity '${t}'`)), W[t]; +}, zt = () => W, Kt = function(t, r) { + let e = ht(t), f; + for (f = r.length - 1; f >= 0; f--) + e.attributes.push(r[f]), K.debug("Added attribute ", r[f].attributeName); +}, Vt = function(t, r, e, f) { + let l = { + entityA: t, + roleA: r, + entityB: e, + relSpec: f + }; + it.push(l), K.debug("Added new relationship :", l); +}, Xt = () => it, Qt = function() { + W = {}, it = [], Ot(); +}, jt = { + Cardinality: Gt, + Identification: Ht, + getConfig: () => Y().er, + addEntity: ht, + addAttributes: Kt, + getEntities: zt, + addRelationship: Vt, + getRelationships: Xt, + clear: Qt, + setAccTitle: Et, + getAccTitle: mt, + setAccDescription: gt, + getAccDescription: kt, + setDiagramTitle: xt, + getDiagramTitle: Rt +}, v = { + ONLY_ONE_START: "ONLY_ONE_START", + ONLY_ONE_END: "ONLY_ONE_END", + ZERO_OR_ONE_START: "ZERO_OR_ONE_START", + ZERO_OR_ONE_END: "ZERO_OR_ONE_END", + ONE_OR_MORE_START: "ONE_OR_MORE_START", + ONE_OR_MORE_END: "ONE_OR_MORE_END", + ZERO_OR_MORE_START: "ZERO_OR_MORE_START", + ZERO_OR_MORE_END: "ZERO_OR_MORE_END", + MD_PARENT_END: "MD_PARENT_END", + MD_PARENT_START: "MD_PARENT_START" +}, Jt = function(t, r) { + let e; + t.append("defs").append("marker").attr("id", v.MD_PARENT_START).attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), t.append("defs").append("marker").attr("id", v.MD_PARENT_END).attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), t.append("defs").append("marker").attr("id", v.ONLY_ONE_START).attr("refX", 0).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M9,0 L9,18 M15,0 L15,18"), t.append("defs").append("marker").attr("id", v.ONLY_ONE_END).attr("refX", 18).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M3,0 L3,18 M9,0 L9,18"), e = t.append("defs").append("marker").attr("id", v.ZERO_OR_ONE_START).attr("refX", 0).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto"), e.append("circle").attr("stroke", r.stroke).attr("fill", "white").attr("cx", 21).attr("cy", 9).attr("r", 6), e.append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M9,0 L9,18"), e = t.append("defs").append("marker").attr("id", v.ZERO_OR_ONE_END).attr("refX", 30).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto"), e.append("circle").attr("stroke", r.stroke).attr("fill", "white").attr("cx", 9).attr("cy", 9).attr("r", 6), e.append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M21,0 L21,18"), t.append("defs").append("marker").attr("id", v.ONE_OR_MORE_START).attr("refX", 18).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"), t.append("defs").append("marker").attr("id", v.ONE_OR_MORE_END).attr("refX", 27).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"), e = t.append("defs").append("marker").attr("id", v.ZERO_OR_MORE_START).attr("refX", 18).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto"), e.append("circle").attr("stroke", r.stroke).attr("fill", "white").attr("cx", 48).attr("cy", 18).attr("r", 6), e.append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M0,18 Q18,0 36,18 Q18,36 0,18"), e = t.append("defs").append("marker").attr("id", v.ZERO_OR_MORE_END).attr("refX", 39).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto"), e.append("circle").attr("stroke", r.stroke).attr("fill", "white").attr("cx", 9).attr("cy", 18).attr("r", 6), e.append("path").attr("stroke", r.stroke).attr("fill", "none").attr("d", "M21,18 Q39,0 57,18 Q39,36 21,18"); +}, L = { + ERMarkers: v, + insertMarkers: Jt +}, qt = /[^\dA-Za-z](\W)*/g; +let x = {}, V = /* @__PURE__ */ new Map(); +const $t = function(t) { + const r = Object.keys(t); + for (const e of r) + x[e] = t[e]; +}, te = (t, r, e) => { + const f = x.entityPadding / 3, l = x.entityPadding / 3, p = x.fontSize * 0.85, u = r.node().getBBox(), o = []; + let h = !1, _ = !1, m = 0, g = 0, R = 0, y = 0, k = u.height + f * 2, w = 1; + e.forEach((T) => { + T.attributeKeyTypeList !== void 0 && T.attributeKeyTypeList.length > 0 && (h = !0), T.attributeComment !== void 0 && (_ = !0); + }), e.forEach((T) => { + const A = `${r.node().id}-attr-${w}`; + let O = 0; + const b = At(T.attributeType), D = t.append("text").classed("er entityLabel", !0).attr("id", `${A}-type`).attr("x", 0).attr("y", 0).style("dominant-baseline", "middle").style("text-anchor", "left").style("font-family", Y().fontFamily).style("font-size", p + "px").text(b), M = t.append("text").classed("er entityLabel", !0).attr("id", `${A}-name`).attr("x", 0).attr("y", 0).style("dominant-baseline", "middle").style("text-anchor", "left").style("font-family", Y().fontFamily).style("font-size", p + "px").text(T.attributeName), i = {}; + i.tn = D, i.nn = M; + const n = D.node().getBBox(), c = M.node().getBBox(); + if (m = Math.max(m, n.width), g = Math.max(g, c.width), O = Math.max(n.height, c.height), h) { + const d = T.attributeKeyTypeList !== void 0 ? T.attributeKeyTypeList.join(",") : "", E = t.append("text").classed("er entityLabel", !0).attr("id", `${A}-key`).attr("x", 0).attr("y", 0).style("dominant-baseline", "middle").style("text-anchor", "left").style("font-family", Y().fontFamily).style("font-size", p + "px").text(d); + i.kn = E; + const a = E.node().getBBox(); + R = Math.max(R, a.width), O = Math.max(O, a.height); + } + if (_) { + const d = t.append("text").classed("er entityLabel", !0).attr("id", `${A}-comment`).attr("x", 0).attr("y", 0).style("dominant-baseline", "middle").style("text-anchor", "left").style("font-family", Y().fontFamily).style("font-size", p + "px").text(T.attributeComment || ""); + i.cn = d; + const E = d.node().getBBox(); + y = Math.max(y, E.width), O = Math.max(O, E.height); + } + i.height = O, o.push(i), k += O + f * 2, w += 1; + }); + let Z = 4; + h && (Z += 2), _ && (Z += 2); + const F = m + g + R + y, B = { + width: Math.max( + x.minEntityWidth, + Math.max( + u.width + x.entityPadding * 2, + F + l * Z + ) + ), + height: e.length > 0 ? k : Math.max(x.minEntityHeight, u.height + x.entityPadding * 2) + }; + if (e.length > 0) { + const T = Math.max( + 0, + (B.width - F - l * Z) / (Z / 2) + ); + r.attr( + "transform", + "translate(" + B.width / 2 + "," + (f + u.height / 2) + ")" + ); + let A = u.height + f * 2, O = "attributeBoxOdd"; + o.forEach((b) => { + const D = A + f + b.height / 2; + b.tn.attr("transform", "translate(" + l + "," + D + ")"); + const M = t.insert("rect", "#" + b.tn.node().id).classed(`er ${O}`, !0).attr("x", 0).attr("y", A).attr("width", m + l * 2 + T).attr("height", b.height + f * 2), i = parseFloat(M.attr("x")) + parseFloat(M.attr("width")); + b.nn.attr( + "transform", + "translate(" + (i + l) + "," + D + ")" + ); + const n = t.insert("rect", "#" + b.nn.node().id).classed(`er ${O}`, !0).attr("x", i).attr("y", A).attr("width", g + l * 2 + T).attr("height", b.height + f * 2); + let c = parseFloat(n.attr("x")) + parseFloat(n.attr("width")); + if (h) { + b.kn.attr( + "transform", + "translate(" + (c + l) + "," + D + ")" + ); + const d = t.insert("rect", "#" + b.kn.node().id).classed(`er ${O}`, !0).attr("x", c).attr("y", A).attr("width", R + l * 2 + T).attr("height", b.height + f * 2); + c = parseFloat(d.attr("x")) + parseFloat(d.attr("width")); + } + _ && (b.cn.attr( + "transform", + "translate(" + (c + l) + "," + D + ")" + ), t.insert("rect", "#" + b.cn.node().id).classed(`er ${O}`, "true").attr("x", c).attr("y", A).attr("width", y + l * 2 + T).attr("height", b.height + f * 2)), A += b.height + f * 2, O = O === "attributeBoxOdd" ? "attributeBoxEven" : "attributeBoxOdd"; + }); + } else + B.height = Math.max(x.minEntityHeight, k), r.attr("transform", "translate(" + B.width / 2 + "," + B.height / 2 + ")"); + return B; +}, ee = function(t, r, e) { + const f = Object.keys(r); + let l; + return f.forEach(function(p) { + var k; + const u = oe(p, "entity"); + V.set(p, u); + const o = t.append("g").attr("id", u); + l = l === void 0 ? u : l; + const h = "text-" + u, _ = o.append("text").classed("er entityLabel", !0).attr("id", h).attr("x", 0).attr("y", 0).style("dominant-baseline", "middle").style("text-anchor", "middle").style("font-family", Y().fontFamily).style("font-size", x.fontSize + "px").text((k = r[p].alias) != null ? k : p), { width: m, height: g } = te( + o, + _, + r[p].attributes + ), y = o.insert("rect", "#" + h).classed("er entityBox", !0).attr("x", 0).attr("y", 0).attr("width", m).attr("height", g).node().getBBox(); + e.setNode(u, { + width: y.width, + height: y.height, + shape: "rect", + id: u + }); + }), l; +}, re = function(t, r) { + r.nodes().forEach(function(e) { + e !== void 0 && r.node(e) !== void 0 && t.select("#" + e).attr( + "transform", + "translate(" + (r.node(e).x - r.node(e).width / 2) + "," + (r.node(e).y - r.node(e).height / 2) + " )" + ); + }); +}, dt = function(t) { + return (t.entityA + t.roleA + t.entityB).replace(/\s/g, ""); +}, ae = function(t, r) { + return t.forEach(function(e) { + r.setEdge( + V.get(e.entityA), + V.get(e.entityB), + { relationship: e }, + dt(e) + ); + }), t; +}; +let lt = 0; +const ie = function(t, r, e, f, l) { + lt++; + const p = e.edge( + V.get(r.entityA), + V.get(r.entityB), + dt(r) + ), u = wt().x(function(k) { + return k.x; + }).y(function(k) { + return k.y; + }).curve(Tt), o = t.insert("path", "#" + f).classed("er relationshipLine", !0).attr("d", u(p.points)).style("stroke", x.stroke).style("fill", "none"); + r.relSpec.relType === l.db.Identification.NON_IDENTIFYING && o.attr("stroke-dasharray", "8,8"); + let h = ""; + switch (x.arrowMarkerAbsolute && (h = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, h = h.replace(/\(/g, "\\("), h = h.replace(/\)/g, "\\)")), r.relSpec.cardA) { + case l.db.Cardinality.ZERO_OR_ONE: + o.attr("marker-end", "url(" + h + "#" + L.ERMarkers.ZERO_OR_ONE_END + ")"); + break; + case l.db.Cardinality.ZERO_OR_MORE: + o.attr("marker-end", "url(" + h + "#" + L.ERMarkers.ZERO_OR_MORE_END + ")"); + break; + case l.db.Cardinality.ONE_OR_MORE: + o.attr("marker-end", "url(" + h + "#" + L.ERMarkers.ONE_OR_MORE_END + ")"); + break; + case l.db.Cardinality.ONLY_ONE: + o.attr("marker-end", "url(" + h + "#" + L.ERMarkers.ONLY_ONE_END + ")"); + break; + case l.db.Cardinality.MD_PARENT: + o.attr("marker-end", "url(" + h + "#" + L.ERMarkers.MD_PARENT_END + ")"); + break; + } + switch (r.relSpec.cardB) { + case l.db.Cardinality.ZERO_OR_ONE: + o.attr( + "marker-start", + "url(" + h + "#" + L.ERMarkers.ZERO_OR_ONE_START + ")" + ); + break; + case l.db.Cardinality.ZERO_OR_MORE: + o.attr( + "marker-start", + "url(" + h + "#" + L.ERMarkers.ZERO_OR_MORE_START + ")" + ); + break; + case l.db.Cardinality.ONE_OR_MORE: + o.attr( + "marker-start", + "url(" + h + "#" + L.ERMarkers.ONE_OR_MORE_START + ")" + ); + break; + case l.db.Cardinality.ONLY_ONE: + o.attr("marker-start", "url(" + h + "#" + L.ERMarkers.ONLY_ONE_START + ")"); + break; + case l.db.Cardinality.MD_PARENT: + o.attr("marker-start", "url(" + h + "#" + L.ERMarkers.MD_PARENT_START + ")"); + break; + } + const _ = o.node().getTotalLength(), m = o.node().getPointAtLength(_ * 0.5), g = "rel" + lt, y = t.append("text").classed("er relationshipLabel", !0).attr("id", g).attr("x", m.x).attr("y", m.y).style("text-anchor", "middle").style("dominant-baseline", "middle").style("font-family", Y().fontFamily).style("font-size", x.fontSize + "px").text(r.roleA).node().getBBox(); + t.insert("rect", "#" + g).classed("er relationshipLabelBox", !0).attr("x", m.x - y.width / 2).attr("y", m.y - y.height / 2).attr("width", y.width).attr("height", y.height); +}, ne = function(t, r, e, f) { + x = Y().er, K.info("Drawing ER diagram"); + const l = Y().securityLevel; + let p; + l === "sandbox" && (p = et("#i" + r)); + const o = (l === "sandbox" ? et(p.nodes()[0].contentDocument.body) : et("body")).select(`[id='${r}']`); + L.insertMarkers(o, x); + let h; + h = new Mt({ + multigraph: !0, + directed: !0, + compound: !1 + }).setGraph({ + rankdir: x.layoutDirection, + marginx: 20, + marginy: 20, + nodesep: 100, + edgesep: 100, + ranksep: 100 + }).setDefaultEdgeLabel(function() { + return {}; + }); + const _ = ee(o, f.db.getEntities(), h), m = ae(f.db.getRelationships(), h); + It(h), re(o, h), m.forEach(function(w) { + ie(o, w, h, _, f); + }); + const g = x.diagramPadding; + bt.insertTitle(o, "entityTitleText", x.titleTopMargin, f.db.getDiagramTitle()); + const R = o.node().getBBox(), y = R.width + g * 2, k = R.height + g * 2; + Nt(o, k, y, x.useMaxWidth), o.attr("viewBox", `${R.x - g} ${R.y - g} ${y} ${k}`); +}, se = "28e9f9db-3c8d-5aa5-9faf-44286ae5937c"; +function oe(t = "", r = "") { + const e = t.replace(qt, ""); + return `${ct(r)}${ct(e)}${Wt( + t, + se + )}`; +} +function ct(t = "") { + return t.length > 0 ? `${t}-` : ""; +} +const le = { + setConf: $t, + draw: ne +}, ce = (t) => ` + .entityBox { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${t.attributeBackgroundColorOdd}; + stroke: ${t.nodeBorder}; + } + + .attributeBoxEven { + fill: ${t.attributeBackgroundColorEven}; + stroke: ${t.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${t.tertiaryColor}; + opacity: 0.7; + background-color: ${t.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${t.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } + +`, he = ce, Ee = { + parser: Ut, + db: jt, + renderer: le, + styles: he +}; +export { + Ee as diagram +}; diff --git a/client/packages/lowcoder/public/package/18068d52.js b/client/packages/lowcoder/public/package/18068d52.js new file mode 100644 index 000000000..09774a2f4 --- /dev/null +++ b/client/packages/lowcoder/public/package/18068d52.js @@ -0,0 +1,1127 @@ +import { e as et, ar as me, s as ye, a as ve, b as Ve, d as Le, F as Ie, G as Re, l as J1, C as dt, H as Ne, m as we, j as w1 } from "./08856db2.js"; +var pt = function() { + var e = function(f1, a, o, f) { + for (o = o || {}, f = f1.length; f--; o[f1[f]] = a) + ; + return o; + }, u = [1, 4], i = [1, 3], n = [1, 5], c = [1, 8, 9, 10, 11, 27, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], l = [2, 2], h = [1, 13], S = [1, 14], F = [1, 15], O = [1, 16], X = [1, 23], o1 = [1, 25], p1 = [1, 26], A1 = [1, 27], _ = [1, 49], k = [1, 48], l1 = [1, 29], G1 = [1, 30], U1 = [1, 31], M1 = [1, 32], K1 = [1, 33], B = [1, 44], m = [1, 46], y = [1, 42], v = [1, 47], V = [1, 43], L = [1, 50], I = [1, 45], R = [1, 51], N = [1, 52], Y1 = [1, 34], j1 = [1, 35], z1 = [1, 36], X1 = [1, 37], I1 = [1, 57], b = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], q = [1, 61], Q = [1, 60], Z = [1, 62], H1 = [8, 9, 11, 73, 75], k1 = [1, 88], b1 = [1, 93], g1 = [1, 92], D1 = [1, 89], F1 = [1, 85], T1 = [1, 91], C1 = [1, 87], S1 = [1, 94], _1 = [1, 90], x1 = [1, 95], B1 = [1, 86], W1 = [8, 9, 10, 11, 73, 75], w = [8, 9, 10, 11, 44, 73, 75], M = [8, 9, 10, 11, 29, 42, 44, 46, 48, 50, 52, 54, 56, 58, 61, 63, 65, 66, 68, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], Et = [8, 9, 11, 42, 58, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], R1 = [42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], kt = [1, 121], bt = [1, 120], gt = [1, 128], Dt = [1, 142], Ft = [1, 143], Tt = [1, 144], Ct = [1, 145], St = [1, 130], _t = [1, 132], xt = [1, 136], Bt = [1, 137], mt = [1, 138], yt = [1, 139], vt = [1, 140], Vt = [1, 141], Lt = [1, 146], It = [1, 147], Rt = [1, 126], Nt = [1, 127], wt = [1, 134], Ot = [1, 129], Pt = [1, 133], Gt = [1, 131], nt = [8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], Ut = [1, 149], T = [8, 9, 11], K = [8, 9, 10, 11, 14, 42, 58, 86, 102, 103, 106, 108, 111, 112, 113], p = [1, 169], P = [1, 165], G = [1, 166], A = [1, 170], d = [1, 167], E = [1, 168], m1 = [75, 113, 116], g = [8, 9, 10, 11, 12, 14, 27, 29, 32, 42, 58, 73, 81, 82, 83, 84, 85, 86, 87, 102, 106, 108, 111, 112, 113], Mt = [10, 103], h1 = [31, 47, 49, 51, 53, 55, 60, 62, 64, 65, 67, 69, 113, 114, 115], J = [1, 235], $ = [1, 233], t1 = [1, 237], e1 = [1, 231], s1 = [1, 232], u1 = [1, 234], i1 = [1, 236], r1 = [1, 238], y1 = [1, 255], Kt = [8, 9, 11, 103], W = [8, 9, 10, 11, 58, 81, 102, 103, 106, 107, 108, 109], at = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, graphConfig: 4, document: 5, line: 6, statement: 7, SEMI: 8, NEWLINE: 9, SPACE: 10, EOF: 11, GRAPH: 12, NODIR: 13, DIR: 14, FirstStmtSeparator: 15, ending: 16, endToken: 17, spaceList: 18, spaceListNewline: 19, vertexStatement: 20, separator: 21, styleStatement: 22, linkStyleStatement: 23, classDefStatement: 24, classStatement: 25, clickStatement: 26, subgraph: 27, textNoTags: 28, SQS: 29, text: 30, SQE: 31, end: 32, direction: 33, acc_title: 34, acc_title_value: 35, acc_descr: 36, acc_descr_value: 37, acc_descr_multiline_value: 38, link: 39, node: 40, styledVertex: 41, AMP: 42, vertex: 43, STYLE_SEPARATOR: 44, idString: 45, DOUBLECIRCLESTART: 46, DOUBLECIRCLEEND: 47, PS: 48, PE: 49, "(-": 50, "-)": 51, STADIUMSTART: 52, STADIUMEND: 53, SUBROUTINESTART: 54, SUBROUTINEEND: 55, VERTEX_WITH_PROPS_START: 56, "NODE_STRING[field]": 57, COLON: 58, "NODE_STRING[value]": 59, PIPE: 60, CYLINDERSTART: 61, CYLINDEREND: 62, DIAMOND_START: 63, DIAMOND_STOP: 64, TAGEND: 65, TRAPSTART: 66, TRAPEND: 67, INVTRAPSTART: 68, INVTRAPEND: 69, linkStatement: 70, arrowText: 71, TESTSTR: 72, START_LINK: 73, edgeText: 74, LINK: 75, edgeTextToken: 76, STR: 77, MD_STR: 78, textToken: 79, keywords: 80, STYLE: 81, LINKSTYLE: 82, CLASSDEF: 83, CLASS: 84, CLICK: 85, DOWN: 86, UP: 87, textNoTagsToken: 88, stylesOpt: 89, "idString[vertex]": 90, "idString[class]": 91, CALLBACKNAME: 92, CALLBACKARGS: 93, HREF: 94, LINK_TARGET: 95, "STR[link]": 96, "STR[tooltip]": 97, alphaNum: 98, DEFAULT: 99, numList: 100, INTERPOLATE: 101, NUM: 102, COMMA: 103, style: 104, styleComponent: 105, NODE_STRING: 106, UNIT: 107, BRKT: 108, PCT: 109, idStringToken: 110, MINUS: 111, MULT: 112, UNICODE_TEXT: 113, TEXT: 114, TAGSTART: 115, EDGE_TEXT: 116, alphaNumToken: 117, direction_tb: 118, direction_bt: 119, direction_rl: 120, direction_lr: 121, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 8: "SEMI", 9: "NEWLINE", 10: "SPACE", 11: "EOF", 12: "GRAPH", 13: "NODIR", 14: "DIR", 27: "subgraph", 29: "SQS", 31: "SQE", 32: "end", 34: "acc_title", 35: "acc_title_value", 36: "acc_descr", 37: "acc_descr_value", 38: "acc_descr_multiline_value", 42: "AMP", 44: "STYLE_SEPARATOR", 46: "DOUBLECIRCLESTART", 47: "DOUBLECIRCLEEND", 48: "PS", 49: "PE", 50: "(-", 51: "-)", 52: "STADIUMSTART", 53: "STADIUMEND", 54: "SUBROUTINESTART", 55: "SUBROUTINEEND", 56: "VERTEX_WITH_PROPS_START", 57: "NODE_STRING[field]", 58: "COLON", 59: "NODE_STRING[value]", 60: "PIPE", 61: "CYLINDERSTART", 62: "CYLINDEREND", 63: "DIAMOND_START", 64: "DIAMOND_STOP", 65: "TAGEND", 66: "TRAPSTART", 67: "TRAPEND", 68: "INVTRAPSTART", 69: "INVTRAPEND", 72: "TESTSTR", 73: "START_LINK", 75: "LINK", 77: "STR", 78: "MD_STR", 81: "STYLE", 82: "LINKSTYLE", 83: "CLASSDEF", 84: "CLASS", 85: "CLICK", 86: "DOWN", 87: "UP", 90: "idString[vertex]", 91: "idString[class]", 92: "CALLBACKNAME", 93: "CALLBACKARGS", 94: "HREF", 95: "LINK_TARGET", 96: "STR[link]", 97: "STR[tooltip]", 99: "DEFAULT", 101: "INTERPOLATE", 102: "NUM", 103: "COMMA", 106: "NODE_STRING", 107: "UNIT", 108: "BRKT", 109: "PCT", 111: "MINUS", 112: "MULT", 113: "UNICODE_TEXT", 114: "TEXT", 115: "TAGSTART", 116: "EDGE_TEXT", 118: "direction_tb", 119: "direction_bt", 120: "direction_rl", 121: "direction_lr" }, + productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 2], [4, 3], [16, 2], [16, 1], [17, 1], [17, 1], [17, 1], [15, 1], [15, 1], [15, 2], [19, 2], [19, 2], [19, 1], [19, 1], [18, 2], [18, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 9], [7, 6], [7, 4], [7, 1], [7, 2], [7, 2], [7, 1], [21, 1], [21, 1], [21, 1], [20, 3], [20, 4], [20, 2], [20, 1], [40, 1], [40, 5], [41, 1], [41, 3], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 8], [43, 4], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 4], [43, 4], [43, 1], [39, 2], [39, 3], [39, 3], [39, 1], [39, 3], [74, 1], [74, 2], [74, 1], [74, 1], [70, 1], [71, 3], [30, 1], [30, 2], [30, 1], [30, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [28, 1], [28, 2], [28, 1], [28, 1], [24, 5], [25, 5], [26, 2], [26, 4], [26, 3], [26, 5], [26, 3], [26, 5], [26, 5], [26, 7], [26, 2], [26, 4], [26, 2], [26, 4], [26, 4], [26, 6], [22, 5], [23, 5], [23, 5], [23, 9], [23, 9], [23, 7], [23, 7], [100, 1], [100, 3], [89, 1], [89, 3], [104, 1], [104, 2], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [79, 1], [79, 1], [79, 1], [79, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [76, 1], [76, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [45, 1], [45, 2], [98, 1], [98, 2], [33, 1], [33, 1], [33, 1], [33, 1]], + performAction: function(a, o, f, r, C, t, N1) { + var s = t.length - 1; + switch (C) { + case 2: + this.$ = []; + break; + case 3: + (!Array.isArray(t[s]) || t[s].length > 0) && t[s - 1].push(t[s]), this.$ = t[s - 1]; + break; + case 4: + case 176: + this.$ = t[s]; + break; + case 11: + r.setDirection("TB"), this.$ = "TB"; + break; + case 12: + r.setDirection(t[s - 1]), this.$ = t[s - 1]; + break; + case 27: + this.$ = t[s - 1].nodes; + break; + case 28: + case 29: + case 30: + case 31: + case 32: + this.$ = []; + break; + case 33: + this.$ = r.addSubGraph(t[s - 6], t[s - 1], t[s - 4]); + break; + case 34: + this.$ = r.addSubGraph(t[s - 3], t[s - 1], t[s - 3]); + break; + case 35: + this.$ = r.addSubGraph(void 0, t[s - 1], void 0); + break; + case 37: + this.$ = t[s].trim(), r.setAccTitle(this.$); + break; + case 38: + case 39: + this.$ = t[s].trim(), r.setAccDescription(this.$); + break; + case 43: + r.addLink(t[s - 2].stmt, t[s], t[s - 1]), this.$ = { stmt: t[s], nodes: t[s].concat(t[s - 2].nodes) }; + break; + case 44: + r.addLink(t[s - 3].stmt, t[s - 1], t[s - 2]), this.$ = { stmt: t[s - 1], nodes: t[s - 1].concat(t[s - 3].nodes) }; + break; + case 45: + this.$ = { stmt: t[s - 1], nodes: t[s - 1] }; + break; + case 46: + this.$ = { stmt: t[s], nodes: t[s] }; + break; + case 47: + this.$ = [t[s]]; + break; + case 48: + this.$ = t[s - 4].concat(t[s]); + break; + case 49: + this.$ = t[s]; + break; + case 50: + this.$ = t[s - 2], r.setClass(t[s - 2], t[s]); + break; + case 51: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "square"); + break; + case 52: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "doublecircle"); + break; + case 53: + this.$ = t[s - 5], r.addVertex(t[s - 5], t[s - 2], "circle"); + break; + case 54: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "ellipse"); + break; + case 55: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "stadium"); + break; + case 56: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "subroutine"); + break; + case 57: + this.$ = t[s - 7], r.addVertex(t[s - 7], t[s - 1], "rect", void 0, void 0, void 0, Object.fromEntries([[t[s - 5], t[s - 3]]])); + break; + case 58: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "cylinder"); + break; + case 59: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "round"); + break; + case 60: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "diamond"); + break; + case 61: + this.$ = t[s - 5], r.addVertex(t[s - 5], t[s - 2], "hexagon"); + break; + case 62: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "odd"); + break; + case 63: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "trapezoid"); + break; + case 64: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "inv_trapezoid"); + break; + case 65: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "lean_right"); + break; + case 66: + this.$ = t[s - 3], r.addVertex(t[s - 3], t[s - 1], "lean_left"); + break; + case 67: + this.$ = t[s], r.addVertex(t[s]); + break; + case 68: + t[s - 1].text = t[s], this.$ = t[s - 1]; + break; + case 69: + case 70: + t[s - 2].text = t[s - 1], this.$ = t[s - 2]; + break; + case 71: + this.$ = t[s]; + break; + case 72: + var Y = r.destructLink(t[s], t[s - 2]); + this.$ = { type: Y.type, stroke: Y.stroke, length: Y.length, text: t[s - 1] }; + break; + case 73: + this.$ = { text: t[s], type: "text" }; + break; + case 74: + this.$ = { text: t[s - 1].text + "" + t[s], type: t[s - 1].type }; + break; + case 75: + this.$ = { text: t[s], type: "string" }; + break; + case 76: + this.$ = { text: t[s], type: "markdown" }; + break; + case 77: + var Y = r.destructLink(t[s]); + this.$ = { type: Y.type, stroke: Y.stroke, length: Y.length }; + break; + case 78: + this.$ = t[s - 1]; + break; + case 79: + this.$ = { text: t[s], type: "text" }; + break; + case 80: + this.$ = { text: t[s - 1].text + "" + t[s], type: t[s - 1].type }; + break; + case 81: + this.$ = { text: t[s], type: "string" }; + break; + case 82: + case 97: + this.$ = { text: t[s], type: "markdown" }; + break; + case 94: + this.$ = { text: t[s], type: "text" }; + break; + case 95: + this.$ = { text: t[s - 1].text + "" + t[s], type: t[s - 1].type }; + break; + case 96: + this.$ = { text: t[s], type: "text" }; + break; + case 98: + this.$ = t[s - 4], r.addClass(t[s - 2], t[s]); + break; + case 99: + this.$ = t[s - 4], r.setClass(t[s - 2], t[s]); + break; + case 100: + case 108: + this.$ = t[s - 1], r.setClickEvent(t[s - 1], t[s]); + break; + case 101: + case 109: + this.$ = t[s - 3], r.setClickEvent(t[s - 3], t[s - 2]), r.setTooltip(t[s - 3], t[s]); + break; + case 102: + this.$ = t[s - 2], r.setClickEvent(t[s - 2], t[s - 1], t[s]); + break; + case 103: + this.$ = t[s - 4], r.setClickEvent(t[s - 4], t[s - 3], t[s - 2]), r.setTooltip(t[s - 4], t[s]); + break; + case 104: + this.$ = t[s - 2], r.setLink(t[s - 2], t[s]); + break; + case 105: + this.$ = t[s - 4], r.setLink(t[s - 4], t[s - 2]), r.setTooltip(t[s - 4], t[s]); + break; + case 106: + this.$ = t[s - 4], r.setLink(t[s - 4], t[s - 2], t[s]); + break; + case 107: + this.$ = t[s - 6], r.setLink(t[s - 6], t[s - 4], t[s]), r.setTooltip(t[s - 6], t[s - 2]); + break; + case 110: + this.$ = t[s - 1], r.setLink(t[s - 1], t[s]); + break; + case 111: + this.$ = t[s - 3], r.setLink(t[s - 3], t[s - 2]), r.setTooltip(t[s - 3], t[s]); + break; + case 112: + this.$ = t[s - 3], r.setLink(t[s - 3], t[s - 2], t[s]); + break; + case 113: + this.$ = t[s - 5], r.setLink(t[s - 5], t[s - 4], t[s]), r.setTooltip(t[s - 5], t[s - 2]); + break; + case 114: + this.$ = t[s - 4], r.addVertex(t[s - 2], void 0, void 0, t[s]); + break; + case 115: + this.$ = t[s - 4], r.updateLink([t[s - 2]], t[s]); + break; + case 116: + this.$ = t[s - 4], r.updateLink(t[s - 2], t[s]); + break; + case 117: + this.$ = t[s - 8], r.updateLinkInterpolate([t[s - 6]], t[s - 2]), r.updateLink([t[s - 6]], t[s]); + break; + case 118: + this.$ = t[s - 8], r.updateLinkInterpolate(t[s - 6], t[s - 2]), r.updateLink(t[s - 6], t[s]); + break; + case 119: + this.$ = t[s - 6], r.updateLinkInterpolate([t[s - 4]], t[s]); + break; + case 120: + this.$ = t[s - 6], r.updateLinkInterpolate(t[s - 4], t[s]); + break; + case 121: + case 123: + this.$ = [t[s]]; + break; + case 122: + case 124: + t[s - 2].push(t[s]), this.$ = t[s - 2]; + break; + case 126: + this.$ = t[s - 1] + t[s]; + break; + case 174: + this.$ = t[s]; + break; + case 175: + this.$ = t[s - 1] + "" + t[s]; + break; + case 177: + this.$ = t[s - 1] + "" + t[s]; + break; + case 178: + this.$ = { stmt: "dir", value: "TB" }; + break; + case 179: + this.$ = { stmt: "dir", value: "BT" }; + break; + case 180: + this.$ = { stmt: "dir", value: "RL" }; + break; + case 181: + this.$ = { stmt: "dir", value: "LR" }; + break; + } + }, + table: [{ 3: 1, 4: 2, 9: u, 10: i, 12: n }, { 1: [3] }, e(c, l, { 5: 6 }), { 4: 7, 9: u, 10: i, 12: n }, { 4: 8, 9: u, 10: i, 12: n }, { 13: [1, 9], 14: [1, 10] }, { 1: [2, 1], 6: 11, 7: 12, 8: h, 9: S, 10: F, 11: O, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: X, 33: 24, 34: o1, 36: p1, 38: A1, 40: 28, 41: 38, 42: _, 43: 39, 45: 40, 58: k, 81: l1, 82: G1, 83: U1, 84: M1, 85: K1, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N, 118: Y1, 119: j1, 120: z1, 121: X1 }, e(c, [2, 9]), e(c, [2, 10]), e(c, [2, 11]), { 8: [1, 54], 9: [1, 55], 10: I1, 15: 53, 18: 56 }, e(b, [2, 3]), e(b, [2, 4]), e(b, [2, 5]), e(b, [2, 6]), e(b, [2, 7]), e(b, [2, 8]), { 8: q, 9: Q, 11: Z, 21: 58, 39: 59, 70: 63, 73: [1, 64], 75: [1, 65] }, { 8: q, 9: Q, 11: Z, 21: 66 }, { 8: q, 9: Q, 11: Z, 21: 67 }, { 8: q, 9: Q, 11: Z, 21: 68 }, { 8: q, 9: Q, 11: Z, 21: 69 }, { 8: q, 9: Q, 11: Z, 21: 70 }, { 8: q, 9: Q, 10: [1, 71], 11: Z, 21: 72 }, e(b, [2, 36]), { 35: [1, 73] }, { 37: [1, 74] }, e(b, [2, 39]), e(H1, [2, 46], { 18: 75, 10: I1 }), { 10: [1, 76] }, { 10: [1, 77] }, { 10: [1, 78] }, { 10: [1, 79] }, { 14: k1, 42: b1, 58: g1, 77: [1, 83], 86: D1, 92: [1, 80], 94: [1, 81], 98: 82, 102: F1, 103: T1, 106: C1, 108: S1, 111: _1, 112: x1, 113: B1, 117: 84 }, e(b, [2, 178]), e(b, [2, 179]), e(b, [2, 180]), e(b, [2, 181]), e(W1, [2, 47]), e(W1, [2, 49], { 44: [1, 96] }), e(w, [2, 67], { 110: 109, 29: [1, 97], 42: _, 46: [1, 98], 48: [1, 99], 50: [1, 100], 52: [1, 101], 54: [1, 102], 56: [1, 103], 58: k, 61: [1, 104], 63: [1, 105], 65: [1, 106], 66: [1, 107], 68: [1, 108], 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 111: I, 112: R, 113: N }), e(M, [2, 174]), e(M, [2, 135]), e(M, [2, 136]), e(M, [2, 137]), e(M, [2, 138]), e(M, [2, 139]), e(M, [2, 140]), e(M, [2, 141]), e(M, [2, 142]), e(M, [2, 143]), e(M, [2, 144]), e(M, [2, 145]), e(c, [2, 12]), e(c, [2, 18]), e(c, [2, 19]), { 9: [1, 110] }, e(Et, [2, 26], { 18: 111, 10: I1 }), e(b, [2, 27]), { 40: 112, 41: 38, 42: _, 43: 39, 45: 40, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, e(b, [2, 40]), e(b, [2, 41]), e(b, [2, 42]), e(R1, [2, 71], { 71: 113, 60: [1, 115], 72: [1, 114] }), { 74: 116, 76: 117, 77: [1, 118], 78: [1, 119], 113: kt, 116: bt }, e([42, 58, 60, 72, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 77]), e(b, [2, 28]), e(b, [2, 29]), e(b, [2, 30]), e(b, [2, 31]), e(b, [2, 32]), { 10: gt, 12: Dt, 14: Ft, 27: Tt, 28: 122, 32: Ct, 42: St, 58: _t, 73: xt, 77: [1, 124], 78: [1, 125], 80: 135, 81: Bt, 82: mt, 83: yt, 84: vt, 85: Vt, 86: Lt, 87: It, 88: 123, 102: Rt, 106: Nt, 108: wt, 111: Ot, 112: Pt, 113: Gt }, e(nt, l, { 5: 148 }), e(b, [2, 37]), e(b, [2, 38]), e(H1, [2, 45], { 42: Ut }), { 42: _, 45: 150, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, { 99: [1, 151], 100: 152, 102: [1, 153] }, { 42: _, 45: 154, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, { 42: _, 45: 155, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, e(T, [2, 100], { 10: [1, 156], 93: [1, 157] }), { 77: [1, 158] }, e(T, [2, 108], { 117: 160, 10: [1, 159], 14: k1, 42: b1, 58: g1, 86: D1, 102: F1, 103: T1, 106: C1, 108: S1, 111: _1, 112: x1, 113: B1 }), e(T, [2, 110], { 10: [1, 161] }), e(K, [2, 176]), e(K, [2, 163]), e(K, [2, 164]), e(K, [2, 165]), e(K, [2, 166]), e(K, [2, 167]), e(K, [2, 168]), e(K, [2, 169]), e(K, [2, 170]), e(K, [2, 171]), e(K, [2, 172]), e(K, [2, 173]), { 42: _, 45: 162, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, { 30: 163, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 171, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 173, 48: [1, 172], 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 174, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 175, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 176, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 106: [1, 177] }, { 30: 178, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 179, 63: [1, 180], 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 181, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 182, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 30: 183, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, e(M, [2, 175]), e(c, [2, 20]), e(Et, [2, 25]), e(H1, [2, 43], { 18: 184, 10: I1 }), e(R1, [2, 68], { 10: [1, 185] }), { 10: [1, 186] }, { 30: 187, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 75: [1, 188], 76: 189, 113: kt, 116: bt }, e(m1, [2, 73]), e(m1, [2, 75]), e(m1, [2, 76]), e(m1, [2, 161]), e(m1, [2, 162]), { 8: q, 9: Q, 10: gt, 11: Z, 12: Dt, 14: Ft, 21: 191, 27: Tt, 29: [1, 190], 32: Ct, 42: St, 58: _t, 73: xt, 80: 135, 81: Bt, 82: mt, 83: yt, 84: vt, 85: Vt, 86: Lt, 87: It, 88: 192, 102: Rt, 106: Nt, 108: wt, 111: Ot, 112: Pt, 113: Gt }, e(g, [2, 94]), e(g, [2, 96]), e(g, [2, 97]), e(g, [2, 150]), e(g, [2, 151]), e(g, [2, 152]), e(g, [2, 153]), e(g, [2, 154]), e(g, [2, 155]), e(g, [2, 156]), e(g, [2, 157]), e(g, [2, 158]), e(g, [2, 159]), e(g, [2, 160]), e(g, [2, 83]), e(g, [2, 84]), e(g, [2, 85]), e(g, [2, 86]), e(g, [2, 87]), e(g, [2, 88]), e(g, [2, 89]), e(g, [2, 90]), e(g, [2, 91]), e(g, [2, 92]), e(g, [2, 93]), { 6: 11, 7: 12, 8: h, 9: S, 10: F, 11: O, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: X, 32: [1, 193], 33: 24, 34: o1, 36: p1, 38: A1, 40: 28, 41: 38, 42: _, 43: 39, 45: 40, 58: k, 81: l1, 82: G1, 83: U1, 84: M1, 85: K1, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N, 118: Y1, 119: j1, 120: z1, 121: X1 }, { 10: I1, 18: 194 }, { 10: [1, 195], 42: _, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 109, 111: I, 112: R, 113: N }, { 10: [1, 196] }, { 10: [1, 197], 103: [1, 198] }, e(Mt, [2, 121]), { 10: [1, 199], 42: _, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 109, 111: I, 112: R, 113: N }, { 10: [1, 200], 42: _, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 109, 111: I, 112: R, 113: N }, { 77: [1, 201] }, e(T, [2, 102], { 10: [1, 202] }), e(T, [2, 104], { 10: [1, 203] }), { 77: [1, 204] }, e(K, [2, 177]), { 77: [1, 205], 95: [1, 206] }, e(W1, [2, 50], { 110: 109, 42: _, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 111: I, 112: R, 113: N }), { 31: [1, 207], 65: p, 79: 208, 113: A, 114: d, 115: E }, e(h1, [2, 79]), e(h1, [2, 81]), e(h1, [2, 82]), e(h1, [2, 146]), e(h1, [2, 147]), e(h1, [2, 148]), e(h1, [2, 149]), { 47: [1, 209], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 30: 210, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 49: [1, 211], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 51: [1, 212], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 53: [1, 213], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 55: [1, 214], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 58: [1, 215] }, { 62: [1, 216], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 64: [1, 217], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 30: 218, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, { 31: [1, 219], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 65: p, 67: [1, 220], 69: [1, 221], 79: 208, 113: A, 114: d, 115: E }, { 65: p, 67: [1, 223], 69: [1, 222], 79: 208, 113: A, 114: d, 115: E }, e(H1, [2, 44], { 42: Ut }), e(R1, [2, 70]), e(R1, [2, 69]), { 60: [1, 224], 65: p, 79: 208, 113: A, 114: d, 115: E }, e(R1, [2, 72]), e(m1, [2, 74]), { 30: 225, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, e(nt, l, { 5: 226 }), e(g, [2, 95]), e(b, [2, 35]), { 41: 227, 42: _, 43: 39, 45: 40, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, { 10: J, 58: $, 81: t1, 89: 228, 102: e1, 104: 229, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, { 10: J, 58: $, 81: t1, 89: 239, 101: [1, 240], 102: e1, 104: 229, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, { 10: J, 58: $, 81: t1, 89: 241, 101: [1, 242], 102: e1, 104: 229, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, { 102: [1, 243] }, { 10: J, 58: $, 81: t1, 89: 244, 102: e1, 104: 229, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, { 42: _, 45: 245, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N }, e(T, [2, 101]), { 77: [1, 246] }, { 77: [1, 247], 95: [1, 248] }, e(T, [2, 109]), e(T, [2, 111], { 10: [1, 249] }), e(T, [2, 112]), e(w, [2, 51]), e(h1, [2, 80]), e(w, [2, 52]), { 49: [1, 250], 65: p, 79: 208, 113: A, 114: d, 115: E }, e(w, [2, 59]), e(w, [2, 54]), e(w, [2, 55]), e(w, [2, 56]), { 106: [1, 251] }, e(w, [2, 58]), e(w, [2, 60]), { 64: [1, 252], 65: p, 79: 208, 113: A, 114: d, 115: E }, e(w, [2, 62]), e(w, [2, 63]), e(w, [2, 65]), e(w, [2, 64]), e(w, [2, 66]), e([10, 42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 78]), { 31: [1, 253], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 6: 11, 7: 12, 8: h, 9: S, 10: F, 11: O, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: X, 32: [1, 254], 33: 24, 34: o1, 36: p1, 38: A1, 40: 28, 41: 38, 42: _, 43: 39, 45: 40, 58: k, 81: l1, 82: G1, 83: U1, 84: M1, 85: K1, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N, 118: Y1, 119: j1, 120: z1, 121: X1 }, e(W1, [2, 48]), e(T, [2, 114], { 103: y1 }), e(Kt, [2, 123], { 105: 256, 10: J, 58: $, 81: t1, 102: e1, 106: s1, 107: u1, 108: i1, 109: r1 }), e(W, [2, 125]), e(W, [2, 127]), e(W, [2, 128]), e(W, [2, 129]), e(W, [2, 130]), e(W, [2, 131]), e(W, [2, 132]), e(W, [2, 133]), e(W, [2, 134]), e(T, [2, 115], { 103: y1 }), { 10: [1, 257] }, e(T, [2, 116], { 103: y1 }), { 10: [1, 258] }, e(Mt, [2, 122]), e(T, [2, 98], { 103: y1 }), e(T, [2, 99], { 110: 109, 42: _, 58: k, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 111: I, 112: R, 113: N }), e(T, [2, 103]), e(T, [2, 105], { 10: [1, 259] }), e(T, [2, 106]), { 95: [1, 260] }, { 49: [1, 261] }, { 60: [1, 262] }, { 64: [1, 263] }, { 8: q, 9: Q, 11: Z, 21: 264 }, e(b, [2, 34]), { 10: J, 58: $, 81: t1, 102: e1, 104: 265, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, e(W, [2, 126]), { 14: k1, 42: b1, 58: g1, 86: D1, 98: 266, 102: F1, 103: T1, 106: C1, 108: S1, 111: _1, 112: x1, 113: B1, 117: 84 }, { 14: k1, 42: b1, 58: g1, 86: D1, 98: 267, 102: F1, 103: T1, 106: C1, 108: S1, 111: _1, 112: x1, 113: B1, 117: 84 }, { 95: [1, 268] }, e(T, [2, 113]), e(w, [2, 53]), { 30: 269, 65: p, 77: P, 78: G, 79: 164, 113: A, 114: d, 115: E }, e(w, [2, 61]), e(nt, l, { 5: 270 }), e(Kt, [2, 124], { 105: 256, 10: J, 58: $, 81: t1, 102: e1, 106: s1, 107: u1, 108: i1, 109: r1 }), e(T, [2, 119], { 117: 160, 10: [1, 271], 14: k1, 42: b1, 58: g1, 86: D1, 102: F1, 103: T1, 106: C1, 108: S1, 111: _1, 112: x1, 113: B1 }), e(T, [2, 120], { 117: 160, 10: [1, 272], 14: k1, 42: b1, 58: g1, 86: D1, 102: F1, 103: T1, 106: C1, 108: S1, 111: _1, 112: x1, 113: B1 }), e(T, [2, 107]), { 31: [1, 273], 65: p, 79: 208, 113: A, 114: d, 115: E }, { 6: 11, 7: 12, 8: h, 9: S, 10: F, 11: O, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: X, 32: [1, 274], 33: 24, 34: o1, 36: p1, 38: A1, 40: 28, 41: 38, 42: _, 43: 39, 45: 40, 58: k, 81: l1, 82: G1, 83: U1, 84: M1, 85: K1, 86: B, 99: m, 102: y, 103: v, 106: V, 108: L, 110: 41, 111: I, 112: R, 113: N, 118: Y1, 119: j1, 120: z1, 121: X1 }, { 10: J, 58: $, 81: t1, 89: 275, 102: e1, 104: 229, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, { 10: J, 58: $, 81: t1, 89: 276, 102: e1, 104: 229, 105: 230, 106: s1, 107: u1, 108: i1, 109: r1 }, e(w, [2, 57]), e(b, [2, 33]), e(T, [2, 117], { 103: y1 }), e(T, [2, 118], { 103: y1 })], + defaultActions: {}, + parseError: function(a, o) { + if (o.recoverable) + this.trace(a); + else { + var f = new Error(a); + throw f.hash = o, f; + } + }, + parse: function(a) { + var o = this, f = [0], r = [], C = [null], t = [], N1 = this.table, s = "", Y = 0, Yt = 0, Se = 2, jt = 1, _e = t.slice.call(arguments, 1), x = Object.create(this.lexer), d1 = { yy: {} }; + for (var ot in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, ot) && (d1.yy[ot] = this.yy[ot]); + x.setInput(a, d1.yy), d1.yy.lexer = x, d1.yy.parser = this, typeof x.yylloc == "undefined" && (x.yylloc = {}); + var lt = x.yylloc; + t.push(lt); + var xe = x.options && x.options.ranges; + typeof d1.yy.parseError == "function" ? this.parseError = d1.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function Be() { + var a1; + return a1 = r.pop() || x.lex() || jt, typeof a1 != "number" && (a1 instanceof Array && (r = a1, a1 = r.pop()), a1 = o.symbols_[a1] || a1), a1; + } + for (var U, E1, j, ht, v1 = {}, q1, n1, zt, Q1; ; ) { + if (E1 = f[f.length - 1], this.defaultActions[E1] ? j = this.defaultActions[E1] : ((U === null || typeof U == "undefined") && (U = Be()), j = N1[E1] && N1[E1][U]), typeof j == "undefined" || !j.length || !j[0]) { + var ft = ""; + Q1 = []; + for (q1 in N1[E1]) + this.terminals_[q1] && q1 > Se && Q1.push("'" + this.terminals_[q1] + "'"); + x.showPosition ? ft = "Parse error on line " + (Y + 1) + `: +` + x.showPosition() + ` +Expecting ` + Q1.join(", ") + ", got '" + (this.terminals_[U] || U) + "'" : ft = "Parse error on line " + (Y + 1) + ": Unexpected " + (U == jt ? "end of input" : "'" + (this.terminals_[U] || U) + "'"), this.parseError(ft, { + text: x.match, + token: this.terminals_[U] || U, + line: x.yylineno, + loc: lt, + expected: Q1 + }); + } + if (j[0] instanceof Array && j.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + E1 + ", token: " + U); + switch (j[0]) { + case 1: + f.push(U), C.push(x.yytext), t.push(x.yylloc), f.push(j[1]), U = null, Yt = x.yyleng, s = x.yytext, Y = x.yylineno, lt = x.yylloc; + break; + case 2: + if (n1 = this.productions_[j[1]][1], v1.$ = C[C.length - n1], v1._$ = { + first_line: t[t.length - (n1 || 1)].first_line, + last_line: t[t.length - 1].last_line, + first_column: t[t.length - (n1 || 1)].first_column, + last_column: t[t.length - 1].last_column + }, xe && (v1._$.range = [ + t[t.length - (n1 || 1)].range[0], + t[t.length - 1].range[1] + ]), ht = this.performAction.apply(v1, [ + s, + Yt, + Y, + d1.yy, + j[1], + C, + t + ].concat(_e)), typeof ht != "undefined") + return ht; + n1 && (f = f.slice(0, -1 * n1 * 2), C = C.slice(0, -1 * n1), t = t.slice(0, -1 * n1)), f.push(this.productions_[j[1]][0]), C.push(v1.$), t.push(v1._$), zt = N1[f[f.length - 2]][f[f.length - 1]], f.push(zt); + break; + case 3: + return !0; + } + } + return !0; + } + }, Ce = function() { + var f1 = { + EOF: 1, + parseError: function(o, f) { + if (this.yy.parser) + this.yy.parser.parseError(o, f); + else + throw new Error(o); + }, + // resets the lexer, sets new input + setInput: function(a, o) { + return this.yy = o || this.yy || {}, this._input = a, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var a = this._input[0]; + this.yytext += a, this.yyleng++, this.offset++, this.match += a, this.matched += a; + var o = a.match(/(?:\r\n?|\n).*/g); + return o ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), a; + }, + // unshifts one char (or a string) into the input + unput: function(a) { + var o = a.length, f = a.split(/(?:\r\n?|\n)/g); + this._input = a + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - o), this.offset -= o; + var r = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), f.length - 1 && (this.yylineno -= f.length - 1); + var C = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: f ? (f.length === r.length ? this.yylloc.first_column : 0) + r[r.length - f.length].length - f[0].length : this.yylloc.first_column - o + }, this.options.ranges && (this.yylloc.range = [C[0], C[0] + this.yyleng - o]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(a) { + this.unput(this.match.slice(a)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var a = this.matched.substr(0, this.matched.length - this.match.length); + return (a.length > 20 ? "..." : "") + a.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var a = this.match; + return a.length < 20 && (a += this._input.substr(0, 20 - a.length)), (a.substr(0, 20) + (a.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var a = this.pastInput(), o = new Array(a.length + 1).join("-"); + return a + this.upcomingInput() + ` +` + o + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(a, o) { + var f, r, C; + if (this.options.backtrack_lexer && (C = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (C.yylloc.range = this.yylloc.range.slice(0))), r = a[0].match(/(?:\r\n?|\n).*/g), r && (this.yylineno += r.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + a[0].length + }, this.yytext += a[0], this.match += a[0], this.matches = a, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(a[0].length), this.matched += a[0], f = this.performAction.call(this, this.yy, this, o, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), f) + return f; + if (this._backtrack) { + for (var t in C) + this[t] = C[t]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var a, o, f, r; + this._more || (this.yytext = "", this.match = ""); + for (var C = this._currentRules(), t = 0; t < C.length; t++) + if (f = this._input.match(this.rules[C[t]]), f && (!o || f[0].length > o[0].length)) { + if (o = f, r = t, this.options.backtrack_lexer) { + if (a = this.test_match(f, C[t]), a !== !1) + return a; + if (this._backtrack) { + o = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return o ? (a = this.test_match(o, C[r]), a !== !1 ? a : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var o = this.next(); + return o || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(o) { + this.conditionStack.push(o); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var o = this.conditionStack.length - 1; + return o > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(o) { + return o = this.conditionStack.length - 1 - Math.abs(o || 0), o >= 0 ? this.conditionStack[o] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(o) { + this.begin(o); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: {}, + performAction: function(o, f, r, C) { + switch (r) { + case 0: + return this.begin("acc_title"), 34; + case 1: + return this.popState(), "acc_title_value"; + case 2: + return this.begin("acc_descr"), 36; + case 3: + return this.popState(), "acc_descr_value"; + case 4: + this.begin("acc_descr_multiline"); + break; + case 5: + this.popState(); + break; + case 6: + return "acc_descr_multiline_value"; + case 7: + this.begin("callbackname"); + break; + case 8: + this.popState(); + break; + case 9: + this.popState(), this.begin("callbackargs"); + break; + case 10: + return 92; + case 11: + this.popState(); + break; + case 12: + return 93; + case 13: + return "MD_STR"; + case 14: + this.popState(); + break; + case 15: + this.begin("md_string"); + break; + case 16: + return "STR"; + case 17: + this.popState(); + break; + case 18: + this.pushState("string"); + break; + case 19: + return 81; + case 20: + return 99; + case 21: + return 82; + case 22: + return 101; + case 23: + return 83; + case 24: + return 84; + case 25: + return 94; + case 26: + this.begin("click"); + break; + case 27: + this.popState(); + break; + case 28: + return 85; + case 29: + return o.lex.firstGraph() && this.begin("dir"), 12; + case 30: + return o.lex.firstGraph() && this.begin("dir"), 12; + case 31: + return o.lex.firstGraph() && this.begin("dir"), 12; + case 32: + return 27; + case 33: + return 32; + case 34: + return 95; + case 35: + return 95; + case 36: + return 95; + case 37: + return 95; + case 38: + return this.popState(), 13; + case 39: + return this.popState(), 14; + case 40: + return this.popState(), 14; + case 41: + return this.popState(), 14; + case 42: + return this.popState(), 14; + case 43: + return this.popState(), 14; + case 44: + return this.popState(), 14; + case 45: + return this.popState(), 14; + case 46: + return this.popState(), 14; + case 47: + return this.popState(), 14; + case 48: + return this.popState(), 14; + case 49: + return 118; + case 50: + return 119; + case 51: + return 120; + case 52: + return 121; + case 53: + return 102; + case 54: + return 108; + case 55: + return 44; + case 56: + return 58; + case 57: + return 42; + case 58: + return 8; + case 59: + return 103; + case 60: + return 112; + case 61: + return this.popState(), 75; + case 62: + return this.pushState("edgeText"), 73; + case 63: + return 116; + case 64: + return this.popState(), 75; + case 65: + return this.pushState("thickEdgeText"), 73; + case 66: + return 116; + case 67: + return this.popState(), 75; + case 68: + return this.pushState("dottedEdgeText"), 73; + case 69: + return 116; + case 70: + return 75; + case 71: + return this.popState(), 51; + case 72: + return "TEXT"; + case 73: + return this.pushState("ellipseText"), 50; + case 74: + return this.popState(), 53; + case 75: + return this.pushState("text"), 52; + case 76: + return this.popState(), 55; + case 77: + return this.pushState("text"), 54; + case 78: + return 56; + case 79: + return this.pushState("text"), 65; + case 80: + return this.popState(), 62; + case 81: + return this.pushState("text"), 61; + case 82: + return this.popState(), 47; + case 83: + return this.pushState("text"), 46; + case 84: + return this.popState(), 67; + case 85: + return this.popState(), 69; + case 86: + return 114; + case 87: + return this.pushState("trapText"), 66; + case 88: + return this.pushState("trapText"), 68; + case 89: + return 115; + case 90: + return 65; + case 91: + return 87; + case 92: + return "SEP"; + case 93: + return 86; + case 94: + return 112; + case 95: + return 108; + case 96: + return 42; + case 97: + return 106; + case 98: + return 111; + case 99: + return 113; + case 100: + return this.popState(), 60; + case 101: + return this.pushState("text"), 60; + case 102: + return this.popState(), 49; + case 103: + return this.pushState("text"), 48; + case 104: + return this.popState(), 31; + case 105: + return this.pushState("text"), 29; + case 106: + return this.popState(), 64; + case 107: + return this.pushState("text"), 63; + case 108: + return "TEXT"; + case 109: + return "QUOTE"; + case 110: + return 9; + case 111: + return 10; + case 112: + return 11; + } + }, + rules: [/^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:call[\s]+)/, /^(?:\([\s]*\))/, /^(?:\()/, /^(?:[^(]*)/, /^(?:\))/, /^(?:[^)]*)/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["][`])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:["])/, /^(?:style\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:href[\s])/, /^(?:click[\s]+)/, /^(?:[\s\n])/, /^(?:[^\s\n]*)/, /^(?:flowchart-elk\b)/, /^(?:graph\b)/, /^(?:flowchart\b)/, /^(?:subgraph\b)/, /^(?:end\b\s*)/, /^(?:_self\b)/, /^(?:_blank\b)/, /^(?:_parent\b)/, /^(?:_top\b)/, /^(?:(\r?\n)*\s*\n)/, /^(?:\s*LR\b)/, /^(?:\s*RL\b)/, /^(?:\s*TB\b)/, /^(?:\s*BT\b)/, /^(?:\s*TD\b)/, /^(?:\s*BR\b)/, /^(?:\s*<)/, /^(?:\s*>)/, /^(?:\s*\^)/, /^(?:\s*v\b)/, /^(?:.*direction\s+TB[^\n]*)/, /^(?:.*direction\s+BT[^\n]*)/, /^(?:.*direction\s+RL[^\n]*)/, /^(?:.*direction\s+LR[^\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:[^-]|-(?!-)+)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:[^=]|=(?!))/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:[^\.]|\.(?!))/, /^(?:\s*~~[\~]+\s*)/, /^(?:[-/\)][\)])/, /^(?:[^\(\)\[\]\{\}]|!\)+)/, /^(?:\(-)/, /^(?:\]\))/, /^(?:\(\[)/, /^(?:\]\])/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:>)/, /^(?:\)\])/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\(\(\()/, /^(?:[\\(?=\])][\]])/, /^(?:\/(?=\])\])/, /^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:<)/, /^(?:>)/, /^(?:\^)/, /^(?:\\\|)/, /^(?:v\b)/, /^(?:\*)/, /^(?:#)/, /^(?:&)/, /^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/, /^(?:-)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\|)/, /^(?:\|)/, /^(?:\))/, /^(?:\()/, /^(?:\])/, /^(?:\[)/, /^(?:(\}))/, /^(?:\{)/, /^(?:[^\[\]\(\)\{\}\|\"]+)/, /^(?:")/, /^(?:(\r?\n)+)/, /^(?:\s)/, /^(?:$)/], + conditions: { callbackargs: { rules: [11, 12, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, callbackname: { rules: [8, 9, 10, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, href: { rules: [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, click: { rules: [15, 18, 27, 28, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, dottedEdgeText: { rules: [15, 18, 67, 69, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, thickEdgeText: { rules: [15, 18, 64, 66, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, edgeText: { rules: [15, 18, 61, 63, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, trapText: { rules: [15, 18, 70, 73, 75, 77, 81, 83, 84, 85, 86, 87, 88, 101, 103, 105, 107], inclusive: !1 }, ellipseText: { rules: [15, 18, 70, 71, 72, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, text: { rules: [15, 18, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 87, 88, 100, 101, 102, 103, 104, 105, 106, 107, 108], inclusive: !1 }, vertex: { rules: [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, dir: { rules: [15, 18, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, acc_descr_multiline: { rules: [5, 6, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, acc_descr: { rules: [3, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, acc_title: { rules: [1, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, md_string: { rules: [13, 14, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, string: { rules: [15, 16, 17, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], inclusive: !1 }, INITIAL: { rules: [0, 2, 4, 7, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 67, 68, 70, 73, 75, 77, 78, 79, 81, 83, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 105, 107, 109, 110, 111, 112], inclusive: !0 } } + }; + return f1; + }(); + at.lexer = Ce; + function ct() { + this.yy = {}; + } + return ct.prototype = at, at.Parser = ct, new ct(); +}(); +pt.parser = pt; +const Xe = pt, Oe = "flowchart-"; +let Xt = 0, L1 = et(), D = {}, H = [], V1 = {}, c1 = [], $1 = {}, tt = {}, Z1 = 0, At = !0, z, st, ut = []; +const it = (e) => we.sanitizeText(e, L1), P1 = function(e) { + const u = Object.keys(D); + for (const i of u) + if (D[i].id === e) + return D[i].domId; + return e; +}, Ht = function(e, u, i, n, c, l, h = {}) { + let S, F = e; + F !== void 0 && F.trim().length !== 0 && (D[F] === void 0 && (D[F] = { + id: F, + labelType: "text", + domId: Oe + F + "-" + Xt, + styles: [], + classes: [] + }), Xt++, u !== void 0 ? (L1 = et(), S = it(u.text.trim()), D[F].labelType = u.type, S[0] === '"' && S[S.length - 1] === '"' && (S = S.substring(1, S.length - 1)), D[F].text = S) : D[F].text === void 0 && (D[F].text = e), i !== void 0 && (D[F].type = i), n != null && n.forEach(function(O) { + D[F].styles.push(O); + }), c != null && c.forEach(function(O) { + D[F].classes.push(O); + }), l !== void 0 && (D[F].dir = l), D[F].props === void 0 ? D[F].props = h : h !== void 0 && Object.assign(D[F].props, h)); +}, Wt = function(e, u, i) { + var S; + const l = { start: e, end: u, type: void 0, text: "", labelType: "text" }; + J1.info("abc78 Got edge...", l); + const h = i.text; + if (h !== void 0 && (l.text = it(h.text.trim()), l.text[0] === '"' && l.text[l.text.length - 1] === '"' && (l.text = l.text.substring(1, l.text.length - 1)), l.labelType = h.type), i !== void 0 && (l.type = i.type, l.stroke = i.stroke, l.length = i.length), (l == null ? void 0 : l.length) > 10 && (l.length = 10), H.length < ((S = L1.maxEdges) != null ? S : 500)) + J1.info("abc78 pushing edge..."), H.push(l); + else + throw new Error( + `Edge limit exceeded. ${H.length} edges found, but the limit is ${L1.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.` + ); +}, qt = function(e, u, i) { + J1.info("addLink (abc78)", e, u, i); + let n, c; + for (n = 0; n < e.length; n++) + for (c = 0; c < u.length; c++) + Wt(e[n], u[c], i); +}, Qt = function(e, u) { + e.forEach(function(i) { + i === "default" ? H.defaultInterpolate = u : H[i].interpolate = u; + }); +}, Zt = function(e, u) { + e.forEach(function(i) { + if (i >= H.length) + throw new Error( + `The index ${i} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${H.length - 1}. (Help: Ensure that the index is within the range of existing edges.)` + ); + i === "default" ? H.defaultStyle = u : (dt.isSubstringInArray("fill", u) === -1 && u.push("fill:none"), H[i].style = u); + }); +}, Jt = function(e, u) { + e.split(",").forEach(function(i) { + V1[i] === void 0 && (V1[i] = { id: i, styles: [], textStyles: [] }), u != null && u.forEach(function(n) { + if (n.match("color")) { + const c = n.replace("fill", "bgFill").replace("color", "fill"); + V1[i].textStyles.push(c); + } + V1[i].styles.push(n); + }); + }); +}, $t = function(e) { + z = e, z.match(/.*/) && (z = "LR"), z.match(/.*v/) && (z = "TB"), z === "TD" && (z = "TB"); +}, rt = function(e, u) { + e.split(",").forEach(function(i) { + let n = i; + D[n] !== void 0 && D[n].classes.push(u), $1[n] !== void 0 && $1[n].classes.push(u); + }); +}, Pe = function(e, u) { + e.split(",").forEach(function(i) { + u !== void 0 && (tt[st === "gen-1" ? P1(i) : i] = it(u)); + }); +}, Ge = function(e, u, i) { + let n = P1(e); + if (et().securityLevel !== "loose" || u === void 0) + return; + let c = []; + if (typeof i == "string") { + c = i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); + for (let l = 0; l < c.length; l++) { + let h = c[l].trim(); + h.charAt(0) === '"' && h.charAt(h.length - 1) === '"' && (h = h.substr(1, h.length - 2)), c[l] = h; + } + } + c.length === 0 && c.push(e), D[e] !== void 0 && (D[e].haveCallback = !0, ut.push(function() { + const l = document.querySelector(`[id="${n}"]`); + l !== null && l.addEventListener( + "click", + function() { + dt.runFunc(u, ...c); + }, + !1 + ); + })); +}, te = function(e, u, i) { + e.split(",").forEach(function(n) { + D[n] !== void 0 && (D[n].link = dt.formatUrl(u, L1), D[n].linkTarget = i); + }), rt(e, "clickable"); +}, ee = function(e) { + if (tt.hasOwnProperty(e)) + return tt[e]; +}, se = function(e, u, i) { + e.split(",").forEach(function(n) { + Ge(n, u, i); + }), rt(e, "clickable"); +}, ue = function(e) { + ut.forEach(function(u) { + u(e); + }); +}, ie = function() { + return z.trim(); +}, re = function() { + return D; +}, ne = function() { + return H; +}, ae = function() { + return V1; +}, ce = function(e) { + let u = w1(".mermaidTooltip"); + (u._groups || u)[0][0] === null && (u = w1("body").append("div").attr("class", "mermaidTooltip").style("opacity", 0)), w1(e).select("svg").selectAll("g.node").on("mouseover", function() { + const c = w1(this); + if (c.attr("title") === null) + return; + const h = this.getBoundingClientRect(); + u.transition().duration(200).style("opacity", ".9"), u.text(c.attr("title")).style("left", window.scrollX + h.left + (h.right - h.left) / 2 + "px").style("top", window.scrollY + h.bottom + "px"), u.html(u.html().replace(/<br\/>/g, "
        ")), c.classed("hover", !0); + }).on("mouseout", function() { + u.transition().duration(500).style("opacity", 0), w1(this).classed("hover", !1); + }); +}; +ut.push(ce); +const oe = function(e = "gen-1") { + D = {}, V1 = {}, H = [], ut = [ce], c1 = [], $1 = {}, Z1 = 0, tt = {}, At = !0, st = e, L1 = et(), Ne(); +}, le = (e) => { + st = e || "gen-2"; +}, he = function() { + return "fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"; +}, fe = function(e, u, i) { + let n = e.text.trim(), c = i.text; + e === i && i.text.match(/\s/) && (n = void 0); + function l(X) { + const o1 = { boolean: {}, number: {}, string: {} }, p1 = []; + let A1; + return { nodeList: X.filter(function(k) { + const l1 = typeof k; + return k.stmt && k.stmt === "dir" ? (A1 = k.value, !1) : k.trim() === "" ? !1 : l1 in o1 ? o1[l1].hasOwnProperty(k) ? !1 : o1[l1][k] = !0 : p1.includes(k) ? !1 : p1.push(k); + }), dir: A1 }; + } + let h = []; + const { nodeList: S, dir: F } = l(h.concat.apply(h, u)); + if (h = S, st === "gen-1") + for (let X = 0; X < h.length; X++) + h[X] = P1(h[X]); + n = n || "subGraph" + Z1, c = c || "", c = it(c), Z1 = Z1 + 1; + const O = { + id: n, + nodes: h, + title: c.trim(), + classes: [], + dir: F, + labelType: i.type + }; + return J1.info("Adding", O.id, O.nodes, O.dir), O.nodes = Fe(O, c1).nodes, c1.push(O), $1[n] = O, n; +}, Ue = function(e) { + for (const [u, i] of c1.entries()) + if (i.id === e) + return u; + return -1; +}; +let O1 = -1; +const pe = [], Ae = function(e, u) { + const i = c1[u].nodes; + if (O1 = O1 + 1, O1 > 2e3) + return; + if (pe[O1] = u, c1[u].id === e) + return { + result: !0, + count: 0 + }; + let n = 0, c = 1; + for (; n < i.length; ) { + const l = Ue(i[n]); + if (l >= 0) { + const h = Ae(e, l); + if (h.result) + return { + result: !0, + count: c + h.count + }; + c = c + h.count; + } + n = n + 1; + } + return { + result: !1, + count: c + }; +}, de = function(e) { + return pe[e]; +}, Ee = function() { + O1 = -1, c1.length > 0 && Ae("none", c1.length - 1); +}, ke = function() { + return c1; +}, be = () => At ? (At = !1, !0) : !1, Me = (e) => { + let u = e.trim(), i = "arrow_open"; + switch (u[0]) { + case "<": + i = "arrow_point", u = u.slice(1); + break; + case "x": + i = "arrow_cross", u = u.slice(1); + break; + case "o": + i = "arrow_circle", u = u.slice(1); + break; + } + let n = "normal"; + return u.includes("=") && (n = "thick"), u.includes(".") && (n = "dotted"), { type: i, stroke: n }; +}, Ke = (e, u) => { + const i = u.length; + let n = 0; + for (let c = 0; c < i; ++c) + u[c] === e && ++n; + return n; +}, Ye = (e) => { + const u = e.trim(); + let i = u.slice(0, -1), n = "arrow_open"; + switch (u.slice(-1)) { + case "x": + n = "arrow_cross", u[0] === "x" && (n = "double_" + n, i = i.slice(1)); + break; + case ">": + n = "arrow_point", u[0] === "<" && (n = "double_" + n, i = i.slice(1)); + break; + case "o": + n = "arrow_circle", u[0] === "o" && (n = "double_" + n, i = i.slice(1)); + break; + } + let c = "normal", l = i.length - 1; + i[0] === "=" && (c = "thick"), i[0] === "~" && (c = "invisible"); + let h = Ke(".", i); + return h && (c = "dotted", l = h), { type: n, stroke: c, length: l }; +}, ge = (e, u) => { + const i = Ye(e); + let n; + if (u) { + if (n = Me(u), n.stroke !== i.stroke) + return { type: "INVALID", stroke: "INVALID" }; + if (n.type === "arrow_open") + n.type = i.type; + else { + if (n.type !== i.type) + return { type: "INVALID", stroke: "INVALID" }; + n.type = "double_" + n.type; + } + return n.type === "double_arrow" && (n.type = "double_arrow_point"), n.length = i.length, n; + } + return i; +}, De = (e, u) => { + let i = !1; + return e.forEach((n) => { + n.nodes.indexOf(u) >= 0 && (i = !0); + }), i; +}, Fe = (e, u) => { + const i = []; + return e.nodes.forEach((n, c) => { + De(u, n) || i.push(e.nodes[c]); + }), { nodes: i }; +}, Te = { + firstGraph: be +}, je = { + defaultConfig: () => me.flowchart, + setAccTitle: ye, + getAccTitle: ve, + getAccDescription: Ve, + setAccDescription: Le, + addVertex: Ht, + lookUpDomId: P1, + addLink: qt, + updateLinkInterpolate: Qt, + updateLink: Zt, + addClass: Jt, + setDirection: $t, + setClass: rt, + setTooltip: Pe, + getTooltip: ee, + setClickEvent: se, + setLink: te, + bindFunctions: ue, + getDirection: ie, + getVertices: re, + getEdges: ne, + getClasses: ae, + clear: oe, + setGen: le, + defaultStyle: he, + addSubGraph: fe, + getDepthFirstPos: de, + indexNodes: Ee, + getSubGraphs: ke, + destructLink: ge, + lex: Te, + exists: De, + makeUniq: Fe, + setDiagramTitle: Ie, + getDiagramTitle: Re +}, He = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + addClass: Jt, + addLink: qt, + addSingleLink: Wt, + addSubGraph: fe, + addVertex: Ht, + bindFunctions: ue, + clear: oe, + default: je, + defaultStyle: he, + destructLink: ge, + firstGraph: be, + getClasses: ae, + getDepthFirstPos: de, + getDirection: ie, + getEdges: ne, + getSubGraphs: ke, + getTooltip: ee, + getVertices: re, + indexNodes: Ee, + lex: Te, + lookUpDomId: P1, + setClass: rt, + setClickEvent: se, + setDirection: $t, + setGen: le, + setLink: te, + updateLink: Zt, + updateLinkInterpolate: Qt +}, Symbol.toStringTag, { value: "Module" })); +export { + He as d, + je as f, + Xe as p +}; diff --git a/client/packages/lowcoder/public/package/1a7d2804.js b/client/packages/lowcoder/public/package/1a7d2804.js new file mode 100644 index 000000000..87b68c680 --- /dev/null +++ b/client/packages/lowcoder/public/package/1a7d2804.js @@ -0,0 +1,220 @@ +import { p as A, d as S, s as G } from "./f434312e.js"; +import { e as v, l as y, j as B, k as I, I as W, C as M, J as $ } from "./08856db2.js"; +import { G as J } from "./4504d077.js"; +import { l as O } from "./666097a3.js"; +import { l as P } from "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +let H = 0; +const X = function(i, a, t, o, p) { + const g = function(e) { + switch (e) { + case p.db.relationType.AGGREGATION: + return "aggregation"; + case p.db.relationType.EXTENSION: + return "extension"; + case p.db.relationType.COMPOSITION: + return "composition"; + case p.db.relationType.DEPENDENCY: + return "dependency"; + case p.db.relationType.LOLLIPOP: + return "lollipop"; + } + }; + a.points = a.points.filter((e) => !Number.isNaN(e.y)); + const s = a.points, c = P().x(function(e) { + return e.x; + }).y(function(e) { + return e.y; + }).curve(W), n = i.append("path").attr("d", c(s)).attr("id", "edge" + H).attr("class", "relation"); + let r = ""; + o.arrowMarkerAbsolute && (r = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, r = r.replace(/\(/g, "\\("), r = r.replace(/\)/g, "\\)")), t.relation.lineType == 1 && n.attr("class", "relation dashed-line"), t.relation.lineType == 10 && n.attr("class", "relation dotted-line"), t.relation.type1 !== "none" && n.attr( + "marker-start", + "url(" + r + "#" + g(t.relation.type1) + "Start)" + ), t.relation.type2 !== "none" && n.attr( + "marker-end", + "url(" + r + "#" + g(t.relation.type2) + "End)" + ); + let f, h; + const x = a.points.length; + let k = M.calcLabelPosition(a.points); + f = k.x, h = k.y; + let u, m, w, b; + if (x % 2 !== 0 && x > 1) { + let e = M.calcCardinalityPosition( + t.relation.type1 !== "none", + a.points, + a.points[0] + ), d = M.calcCardinalityPosition( + t.relation.type2 !== "none", + a.points, + a.points[x - 1] + ); + y.debug("cardinality_1_point " + JSON.stringify(e)), y.debug("cardinality_2_point " + JSON.stringify(d)), u = e.x, m = e.y, w = d.x, b = d.y; + } + if (t.title !== void 0) { + const e = i.append("g").attr("class", "classLabel"), d = e.append("text").attr("class", "label").attr("x", f).attr("y", h).attr("fill", "red").attr("text-anchor", "middle").text(t.title); + window.label = d; + const l = d.node().getBBox(); + e.insert("rect", ":first-child").attr("class", "box").attr("x", l.x - o.padding / 2).attr("y", l.y - o.padding / 2).attr("width", l.width + o.padding).attr("height", l.height + o.padding); + } + y.info("Rendering relation " + JSON.stringify(t)), t.relationTitle1 !== void 0 && t.relationTitle1 !== "none" && i.append("g").attr("class", "cardinality").append("text").attr("class", "type1").attr("x", u).attr("y", m).attr("fill", "black").attr("font-size", "6").text(t.relationTitle1), t.relationTitle2 !== void 0 && t.relationTitle2 !== "none" && i.append("g").attr("class", "cardinality").append("text").attr("class", "type2").attr("x", w).attr("y", b).attr("fill", "black").attr("font-size", "6").text(t.relationTitle2), H++; +}, Y = function(i, a, t, o) { + y.debug("Rendering class ", a, t); + const p = a.id, g = { + id: p, + label: a.id, + width: 0, + height: 0 + }, s = i.append("g").attr("id", o.db.lookUpDomId(p)).attr("class", "classGroup"); + let c; + a.link ? c = s.append("svg:a").attr("xlink:href", a.link).attr("target", a.linkTarget).append("text").attr("y", t.textHeight + t.padding).attr("x", 0) : c = s.append("text").attr("y", t.textHeight + t.padding).attr("x", 0); + let n = !0; + a.annotations.forEach(function(d) { + const l = c.append("tspan").text("«" + d + "»"); + n || l.attr("dy", t.textHeight), n = !1; + }); + let r = C(a); + const f = c.append("tspan").text(r).attr("class", "title"); + n || f.attr("dy", t.textHeight); + const h = c.node().getBBox().height; + let x, k, u; + if (a.members.length > 0) { + x = s.append("line").attr("x1", 0).attr("y1", t.padding + h + t.dividerMargin / 2).attr("y2", t.padding + h + t.dividerMargin / 2); + const d = s.append("text").attr("x", t.padding).attr("y", h + t.dividerMargin + t.textHeight).attr("fill", "white").attr("class", "classText"); + n = !0, a.members.forEach(function(l) { + _(d, l, n, t), n = !1; + }), k = d.node().getBBox(); + } + if (a.methods.length > 0) { + u = s.append("line").attr("x1", 0).attr("y1", t.padding + h + t.dividerMargin + k.height).attr("y2", t.padding + h + t.dividerMargin + k.height); + const d = s.append("text").attr("x", t.padding).attr("y", h + 2 * t.dividerMargin + k.height + t.textHeight).attr("fill", "white").attr("class", "classText"); + n = !0, a.methods.forEach(function(l) { + _(d, l, n, t), n = !1; + }); + } + const m = s.node().getBBox(); + var w = " "; + a.cssClasses.length > 0 && (w = w + a.cssClasses.join(" ")); + const e = s.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", m.width + 2 * t.padding).attr("height", m.height + t.padding + 0.5 * t.dividerMargin).attr("class", w).node().getBBox().width; + return c.node().childNodes.forEach(function(d) { + d.setAttribute("x", (e - d.getBBox().width) / 2); + }), a.tooltip && c.insert("title").text(a.tooltip), x && x.attr("x2", e), u && u.attr("x2", e), g.width = e, g.height = m.height + t.padding + 0.5 * t.dividerMargin, g; +}, C = function(i) { + let a = i.id; + return i.type && (a += "<" + $(i.type) + ">"), a; +}, Z = function(i, a, t, o) { + y.debug("Rendering note ", a, t); + const p = a.id, g = { + id: p, + text: a.text, + width: 0, + height: 0 + }, s = i.append("g").attr("id", p).attr("class", "classGroup"); + let c = s.append("text").attr("y", t.textHeight + t.padding).attr("x", 0); + const n = JSON.parse(`"${a.text}"`).split(` +`); + n.forEach(function(x) { + y.debug(`Adding line: ${x}`), c.append("tspan").text(x).attr("class", "title").attr("dy", t.textHeight); + }); + const r = s.node().getBBox(), h = s.insert("rect", ":first-child").attr("x", 0).attr("y", 0).attr("width", r.width + 2 * t.padding).attr( + "height", + r.height + n.length * t.textHeight + t.padding + 0.5 * t.dividerMargin + ).node().getBBox().width; + return c.node().childNodes.forEach(function(x) { + x.setAttribute("x", (h - x.getBBox().width) / 2); + }), g.width = h, g.height = r.height + n.length * t.textHeight + t.padding + 0.5 * t.dividerMargin, g; +}, _ = function(i, a, t, o) { + const { displayText: p, cssStyle: g } = a.getDisplayDetails(), s = i.append("tspan").attr("x", o.padding).text(p); + g !== "" && s.attr("style", a.cssStyle), t || s.attr("dy", o.textHeight); +}, N = { + getClassTitleString: C, + drawClass: Y, + drawEdge: X, + drawNote: Z +}; +let T = {}; +const E = 20, L = function(i) { + const a = Object.entries(T).find((t) => t[1].label === i); + if (a) + return a[0]; +}, R = function(i) { + i.append("defs").append("marker").attr("id", "extensionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"), i.append("defs").append("marker").attr("id", "extensionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"), i.append("defs").append("marker").attr("id", "compositionStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "compositionEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "aggregationStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "aggregationEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "dependencyStart").attr("class", "extension").attr("refX", 0).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"), i.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); +}, F = function(i, a, t, o) { + const p = v().class; + T = {}, y.info("Rendering diagram " + i); + const g = v().securityLevel; + let s; + g === "sandbox" && (s = B("#i" + a)); + const c = g === "sandbox" ? B(s.nodes()[0].contentDocument.body) : B("body"), n = c.select(`[id='${a}']`); + R(n); + const r = new J({ + multigraph: !0 + }); + r.setGraph({ + isMultiGraph: !0 + }), r.setDefaultEdgeLabel(function() { + return {}; + }); + const f = o.db.getClasses(), h = Object.keys(f); + for (const e of h) { + const d = f[e], l = N.drawClass(n, d, p, o); + T[l.id] = l, r.setNode(l.id, l), y.info("Org height: " + l.height); + } + o.db.getRelations().forEach(function(e) { + y.info( + // cspell:ignore tjoho + "tjoho" + L(e.id1) + L(e.id2) + JSON.stringify(e) + ), r.setEdge( + L(e.id1), + L(e.id2), + { + relation: e + }, + e.title || "DEFAULT" + ); + }), o.db.getNotes().forEach(function(e) { + y.debug(`Adding note: ${JSON.stringify(e)}`); + const d = N.drawNote(n, e, p, o); + T[d.id] = d, r.setNode(d.id, d), e.class && e.class in f && r.setEdge( + e.id, + L(e.class), + { + relation: { + id1: e.id, + id2: e.class, + relation: { + type1: "none", + type2: "none", + lineType: 10 + } + } + }, + "DEFAULT" + ); + }), O(r), r.nodes().forEach(function(e) { + e !== void 0 && r.node(e) !== void 0 && (y.debug("Node " + e + ": " + JSON.stringify(r.node(e))), c.select("#" + (o.db.lookUpDomId(e) || e)).attr( + "transform", + "translate(" + (r.node(e).x - r.node(e).width / 2) + "," + (r.node(e).y - r.node(e).height / 2) + " )" + )); + }), r.edges().forEach(function(e) { + e !== void 0 && r.edge(e) !== void 0 && (y.debug("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(r.edge(e))), N.drawEdge(n, r.edge(e), r.edge(e).relation, p, o)); + }); + const u = n.node().getBBox(), m = u.width + E * 2, w = u.height + E * 2; + I(n, w, m, p.useMaxWidth); + const b = `${u.x - E} ${u.y - E} ${m} ${w}`; + y.debug(`viewBox ${b}`), n.attr("viewBox", b); +}, U = { + draw: F +}, tt = { + parser: A, + db: S, + renderer: U, + styles: G, + init: (i) => { + i.class || (i.class = {}), i.class.arrowMarkerAbsolute = i.arrowMarkerAbsolute, S.clear(); + } +}; +export { + tt as diagram +}; diff --git a/client/packages/lowcoder/public/package/256b619e.js b/client/packages/lowcoder/public/package/256b619e.js new file mode 100644 index 000000000..6af47aa90 --- /dev/null +++ b/client/packages/lowcoder/public/package/256b619e.js @@ -0,0 +1,92 @@ +var E = Math.pow; +const c = Math.PI, x = 2 * c, u = 1e-6, A = x - u; +function T(e) { + this._ += e[0]; + for (let t = 1, h = e.length; t < h; ++t) + this._ += arguments[t] + e[t]; +} +function L(e) { + let t = Math.floor(e); + if (!(t >= 0)) + throw new Error(`invalid digits: ${e}`); + if (t > 15) + return T; + const h = E(10, t); + return function(i) { + this._ += i[0]; + for (let s = 1, n = i.length; s < n; ++s) + this._ += Math.round(arguments[s] * h) / h + i[s]; + }; +} +class P { + constructor(t) { + this._x0 = this._y0 = // start of current subpath + this._x1 = this._y1 = null, this._ = "", this._append = t == null ? T : L(t); + } + moveTo(t, h) { + this._append`M${this._x0 = this._x1 = +t},${this._y0 = this._y1 = +h}`; + } + closePath() { + this._x1 !== null && (this._x1 = this._x0, this._y1 = this._y0, this._append`Z`); + } + lineTo(t, h) { + this._append`L${this._x1 = +t},${this._y1 = +h}`; + } + quadraticCurveTo(t, h, i, s) { + this._append`Q${+t},${+h},${this._x1 = +i},${this._y1 = +s}`; + } + bezierCurveTo(t, h, i, s, n, $) { + this._append`C${+t},${+h},${+i},${+s},${this._x1 = +n},${this._y1 = +$}`; + } + arcTo(t, h, i, s, n) { + if (t = +t, h = +h, i = +i, s = +s, n = +n, n < 0) + throw new Error(`negative radius: ${n}`); + let $ = this._x1, r = this._y1, p = i - t, l = s - h, _ = $ - t, o = r - h, a = _ * _ + o * o; + if (this._x1 === null) + this._append`M${this._x1 = t},${this._y1 = h}`; + else if (a > u) + if (!(Math.abs(o * p - l * _) > u) || !n) + this._append`L${this._x1 = t},${this._y1 = h}`; + else { + let d = i - $, f = s - r, y = p * p + l * l, m = d * d + f * f, g = Math.sqrt(y), v = Math.sqrt(a), w = n * Math.tan((c - Math.acos((y + a - m) / (2 * g * v))) / 2), M = w / v, b = w / g; + Math.abs(M - 1) > u && this._append`L${t + M * _},${h + M * o}`, this._append`A${n},${n},0,0,${+(o * d > _ * f)},${this._x1 = t + b * p},${this._y1 = h + b * l}`; + } + } + arc(t, h, i, s, n, $) { + if (t = +t, h = +h, i = +i, $ = !!$, i < 0) + throw new Error(`negative radius: ${i}`); + let r = i * Math.cos(s), p = i * Math.sin(s), l = t + r, _ = h + p, o = 1 ^ $, a = $ ? s - n : n - s; + this._x1 === null ? this._append`M${l},${_}` : (Math.abs(this._x1 - l) > u || Math.abs(this._y1 - _) > u) && this._append`L${l},${_}`, i && (a < 0 && (a = a % x + x), a > A ? this._append`A${i},${i},0,1,${o},${t - r},${h - p}A${i},${i},0,1,${o},${this._x1 = l},${this._y1 = _}` : a > u && this._append`A${i},${i},0,${+(a >= c)},${o},${this._x1 = t + i * Math.cos(n)},${this._y1 = h + i * Math.sin(n)}`); + } + rect(t, h, i, s) { + this._append`M${this._x0 = this._x1 = +t},${this._y0 = this._y1 = +h}h${i = +i}v${+s}h${-i}Z`; + } + toString() { + return this._; + } +} +function C(e) { + return function() { + return e; + }; +} +function R(e) { + let t = 3; + return e.digits = function(h) { + if (!arguments.length) + return t; + if (h == null) + t = null; + else { + const i = Math.floor(h); + if (!(i >= 0)) + throw new RangeError(`invalid digits: ${h}`); + t = i; + } + return e; + }, () => new P(t); +} +export { + C as c, + R as w +}; diff --git a/client/packages/lowcoder/public/package/289514c9.js b/client/packages/lowcoder/public/package/289514c9.js new file mode 100644 index 000000000..ec8f207cb --- /dev/null +++ b/client/packages/lowcoder/public/package/289514c9.js @@ -0,0 +1,8 @@ +import { c as r } from "./4504d077.js"; +var e = 4; +function a(o) { + return r(o, e); +} +export { + a as c +}; diff --git a/client/packages/lowcoder/public/package/2d256667.js b/client/packages/lowcoder/public/package/2d256667.js new file mode 100644 index 000000000..4f1e396c9 --- /dev/null +++ b/client/packages/lowcoder/public/package/2d256667.js @@ -0,0 +1,2501 @@ +import { M as Re, N as je, R as Be, O as Ze, P as Cn, Q as Jt, T as Dn, c as ge, g as ye, e as xt, s as Mn, a as Sn, F as _n, G as Un, d as Yn, b as Fn, H as Ln, o as En, l as Zt, j as Pt, k as An, m as In, C as Wn } from "./08856db2.js"; +import { b as On, t as _e, c as Hn, a as Nn, l as Vn } from "./f9d0127a.js"; +import { i as Pn } from "./f9637058.js"; +function zn(t, e) { + let n; + if (e === void 0) + for (const r of t) + r != null && (n < r || n === void 0 && r >= r) && (n = r); + else { + let r = -1; + for (let i of t) + (i = e(i, ++r, t)) != null && (n < i || n === void 0 && i >= i) && (n = i); + } + return n; +} +function Rn(t, e) { + let n; + if (e === void 0) + for (const r of t) + r != null && (n > r || n === void 0 && r >= r) && (n = r); + else { + let r = -1; + for (let i of t) + (i = e(i, ++r, t)) != null && (n > i || n === void 0 && i >= i) && (n = i); + } + return n; +} +function jn(t) { + return t; +} +var Rt = 1, Kt = 2, le = 3, zt = 4, Ue = 1e-6; +function Bn(t) { + return "translate(" + t + ",0)"; +} +function Zn(t) { + return "translate(0," + t + ")"; +} +function Xn(t) { + return (e) => +t(e); +} +function $n(t, e) { + return e = Math.max(0, t.bandwidth() - e * 2) / 2, t.round() && (e = Math.round(e)), (n) => +t(n) + e; +} +function qn() { + return !this.__axis; +} +function Xe(t, e) { + var n = [], r = null, i = null, s = 6, a = 6, k = 3, Y = typeof window != "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, g = t === Rt || t === zt ? -1 : 1, b = t === zt || t === Kt ? "x" : "y", U = t === Rt || t === le ? Bn : Zn; + function C(v) { + var X = r == null ? e.ticks ? e.ticks.apply(e, n) : e.domain() : r, y = i == null ? e.tickFormat ? e.tickFormat.apply(e, n) : jn : i, L = Math.max(s, 0) + k, O = e.range(), W = +O[0] + Y, j = +O[O.length - 1] + Y, B = (e.bandwidth ? $n : Xn)(e.copy(), Y), G = v.selection ? v.selection() : v, x = G.selectAll(".domain").data([null]), A = G.selectAll(".tick").data(X, e).order(), T = A.exit(), F = A.enter().append("g").attr("class", "tick"), D = A.select("line"), w = A.select("text"); + x = x.merge(x.enter().insert("path", ".tick").attr("class", "domain").attr("stroke", "currentColor")), A = A.merge(F), D = D.merge(F.append("line").attr("stroke", "currentColor").attr(b + "2", g * s)), w = w.merge(F.append("text").attr("fill", "currentColor").attr(b, g * L).attr("dy", t === Rt ? "0em" : t === le ? "0.71em" : "0.32em")), v !== G && (x = x.transition(v), A = A.transition(v), D = D.transition(v), w = w.transition(v), T = T.transition(v).attr("opacity", Ue).attr("transform", function(o) { + return isFinite(o = B(o)) ? U(o + Y) : this.getAttribute("transform"); + }), F.attr("opacity", Ue).attr("transform", function(o) { + var d = this.parentNode.__axis; + return U((d && isFinite(d = d(o)) ? d : B(o)) + Y); + })), T.remove(), x.attr("d", t === zt || t === Kt ? a ? "M" + g * a + "," + W + "H" + Y + "V" + j + "H" + g * a : "M" + Y + "," + W + "V" + j : a ? "M" + W + "," + g * a + "V" + Y + "H" + j + "V" + g * a : "M" + W + "," + Y + "H" + j), A.attr("opacity", 1).attr("transform", function(o) { + return U(B(o) + Y); + }), D.attr(b + "2", g * s), w.attr(b, g * L).text(y), G.filter(qn).attr("fill", "none").attr("font-size", 10).attr("font-family", "sans-serif").attr("text-anchor", t === Kt ? "start" : t === zt ? "end" : "middle"), G.each(function() { + this.__axis = B; + }); + } + return C.scale = function(v) { + return arguments.length ? (e = v, C) : e; + }, C.ticks = function() { + return n = Array.from(arguments), C; + }, C.tickArguments = function(v) { + return arguments.length ? (n = v == null ? [] : Array.from(v), C) : n.slice(); + }, C.tickValues = function(v) { + return arguments.length ? (r = v == null ? null : Array.from(v), C) : r && r.slice(); + }, C.tickFormat = function(v) { + return arguments.length ? (i = v, C) : i; + }, C.tickSize = function(v) { + return arguments.length ? (s = a = +v, C) : s; + }, C.tickSizeInner = function(v) { + return arguments.length ? (s = +v, C) : s; + }, C.tickSizeOuter = function(v) { + return arguments.length ? (a = +v, C) : a; + }, C.tickPadding = function(v) { + return arguments.length ? (k = +v, C) : k; + }, C.offset = function(v) { + return arguments.length ? (Y = +v, C) : Y; + }, C; +} +function Gn(t) { + return Xe(Rt, t); +} +function Qn(t) { + return Xe(le, t); +} +const Jn = Math.PI / 180, Kn = 180 / Math.PI, Xt = 18, $e = 0.96422, qe = 1, Ge = 0.82521, Qe = 4 / 29, wt = 6 / 29, Je = 3 * wt * wt, tr = wt * wt * wt; +function Ke(t) { + if (t instanceof at) + return new at(t.l, t.a, t.b, t.opacity); + if (t instanceof lt) + return tn(t); + t instanceof Be || (t = Cn(t)); + var e = re(t.r), n = re(t.g), r = re(t.b), i = te((0.2225045 * e + 0.7168786 * n + 0.0606169 * r) / qe), s, a; + return e === n && n === r ? s = a = i : (s = te((0.4360747 * e + 0.3850649 * n + 0.1430804 * r) / $e), a = te((0.0139322 * e + 0.0971045 * n + 0.7141733 * r) / Ge)), new at(116 * i - 16, 500 * (s - i), 200 * (i - a), t.opacity); +} +function er(t, e, n, r) { + return arguments.length === 1 ? Ke(t) : new at(t, e, n, r == null ? 1 : r); +} +function at(t, e, n, r) { + this.l = +t, this.a = +e, this.b = +n, this.opacity = +r; +} +Re(at, er, je(Ze, { + brighter(t) { + return new at(this.l + Xt * (t == null ? 1 : t), this.a, this.b, this.opacity); + }, + darker(t) { + return new at(this.l - Xt * (t == null ? 1 : t), this.a, this.b, this.opacity); + }, + rgb() { + var t = (this.l + 16) / 116, e = isNaN(this.a) ? t : t + this.a / 500, n = isNaN(this.b) ? t : t - this.b / 200; + return e = $e * ee(e), t = qe * ee(t), n = Ge * ee(n), new Be( + ne(3.1338561 * e - 1.6168667 * t - 0.4906146 * n), + ne(-0.9787684 * e + 1.9161415 * t + 0.033454 * n), + ne(0.0719453 * e - 0.2289914 * t + 1.4052427 * n), + this.opacity + ); + } +})); +function te(t) { + return t > tr ? Math.pow(t, 1 / 3) : t / Je + Qe; +} +function ee(t) { + return t > wt ? t * t * t : Je * (t - Qe); +} +function ne(t) { + return 255 * (t <= 31308e-7 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - 0.055); +} +function re(t) { + return (t /= 255) <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4); +} +function nr(t) { + if (t instanceof lt) + return new lt(t.h, t.c, t.l, t.opacity); + if (t instanceof at || (t = Ke(t)), t.a === 0 && t.b === 0) + return new lt(NaN, 0 < t.l && t.l < 100 ? 0 : NaN, t.l, t.opacity); + var e = Math.atan2(t.b, t.a) * Kn; + return new lt(e < 0 ? e + 360 : e, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity); +} +function ue(t, e, n, r) { + return arguments.length === 1 ? nr(t) : new lt(t, e, n, r == null ? 1 : r); +} +function lt(t, e, n, r) { + this.h = +t, this.c = +e, this.l = +n, this.opacity = +r; +} +function tn(t) { + if (isNaN(t.h)) + return new at(t.l, 0, 0, t.opacity); + var e = t.h * Jn; + return new at(t.l, Math.cos(e) * t.c, Math.sin(e) * t.c, t.opacity); +} +Re(lt, ue, je(Ze, { + brighter(t) { + return new lt(this.h, this.c, this.l + Xt * (t == null ? 1 : t), this.opacity); + }, + darker(t) { + return new lt(this.h, this.c, this.l - Xt * (t == null ? 1 : t), this.opacity); + }, + rgb() { + return tn(this).rgb(); + } +})); +function rr(t) { + return function(e, n) { + var r = t((e = ue(e)).h, (n = ue(n)).h), i = Jt(e.c, n.c), s = Jt(e.l, n.l), a = Jt(e.opacity, n.opacity); + return function(k) { + return e.h = r(k), e.c = i(k), e.l = s(k), e.opacity = a(k), e + ""; + }; + }; +} +const ir = rr(Dn); +function sr(t, e) { + t = t.slice(); + var n = 0, r = t.length - 1, i = t[n], s = t[r], a; + return s < i && (a = n, n = r, r = a, a = i, i = s, s = a), t[n] = e.floor(i), t[r] = e.ceil(s), t; +} +const ie = /* @__PURE__ */ new Date(), se = /* @__PURE__ */ new Date(); +function K(t, e, n, r) { + function i(s) { + return t(s = arguments.length === 0 ? /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(+s)), s; + } + return i.floor = (s) => (t(s = /* @__PURE__ */ new Date(+s)), s), i.ceil = (s) => (t(s = new Date(s - 1)), e(s, 1), t(s), s), i.round = (s) => { + const a = i(s), k = i.ceil(s); + return s - a < k - s ? a : k; + }, i.offset = (s, a) => (e(s = /* @__PURE__ */ new Date(+s), a == null ? 1 : Math.floor(a)), s), i.range = (s, a, k) => { + const Y = []; + if (s = i.ceil(s), k = k == null ? 1 : Math.floor(k), !(s < a) || !(k > 0)) + return Y; + let g; + do + Y.push(g = /* @__PURE__ */ new Date(+s)), e(s, k), t(s); + while (g < s && s < a); + return Y; + }, i.filter = (s) => K((a) => { + if (a >= a) + for (; t(a), !s(a); ) + a.setTime(a - 1); + }, (a, k) => { + if (a >= a) + if (k < 0) + for (; ++k <= 0; ) + for (; e(a, -1), !s(a); ) + ; + else + for (; --k >= 0; ) + for (; e(a, 1), !s(a); ) + ; + }), n && (i.count = (s, a) => (ie.setTime(+s), se.setTime(+a), t(ie), t(se), Math.floor(n(ie, se))), i.every = (s) => (s = Math.floor(s), !isFinite(s) || !(s > 0) ? null : s > 1 ? i.filter(r ? (a) => r(a) % s === 0 : (a) => i.count(0, a) % s === 0) : i)), i; +} +const Dt = K(() => { +}, (t, e) => { + t.setTime(+t + e); +}, (t, e) => e - t); +Dt.every = (t) => (t = Math.floor(t), !isFinite(t) || !(t > 0) ? null : t > 1 ? K((e) => { + e.setTime(Math.floor(e / t) * t); +}, (e, n) => { + e.setTime(+e + n * t); +}, (e, n) => (n - e) / t) : Dt); +Dt.range; +const ut = 1e3, nt = ut * 60, ft = nt * 60, ht = ft * 24, ke = ht * 7, Ye = ht * 30, ae = ht * 365, mt = K((t) => { + t.setTime(t - t.getMilliseconds()); +}, (t, e) => { + t.setTime(+t + e * ut); +}, (t, e) => (e - t) / ut, (t) => t.getUTCSeconds()); +mt.range; +const Lt = K((t) => { + t.setTime(t - t.getMilliseconds() - t.getSeconds() * ut); +}, (t, e) => { + t.setTime(+t + e * nt); +}, (t, e) => (e - t) / nt, (t) => t.getMinutes()); +Lt.range; +const ar = K((t) => { + t.setUTCSeconds(0, 0); +}, (t, e) => { + t.setTime(+t + e * nt); +}, (t, e) => (e - t) / nt, (t) => t.getUTCMinutes()); +ar.range; +const Et = K((t) => { + t.setTime(t - t.getMilliseconds() - t.getSeconds() * ut - t.getMinutes() * nt); +}, (t, e) => { + t.setTime(+t + e * ft); +}, (t, e) => (e - t) / ft, (t) => t.getHours()); +Et.range; +const or = K((t) => { + t.setUTCMinutes(0, 0, 0); +}, (t, e) => { + t.setTime(+t + e * ft); +}, (t, e) => (e - t) / ft, (t) => t.getUTCHours()); +or.range; +const gt = K( + (t) => t.setHours(0, 0, 0, 0), + (t, e) => t.setDate(t.getDate() + e), + (t, e) => (e - t - (e.getTimezoneOffset() - t.getTimezoneOffset()) * nt) / ht, + (t) => t.getDate() - 1 +); +gt.range; +const pe = K((t) => { + t.setUTCHours(0, 0, 0, 0); +}, (t, e) => { + t.setUTCDate(t.getUTCDate() + e); +}, (t, e) => (e - t) / ht, (t) => t.getUTCDate() - 1); +pe.range; +const cr = K((t) => { + t.setUTCHours(0, 0, 0, 0); +}, (t, e) => { + t.setUTCDate(t.getUTCDate() + e); +}, (t, e) => (e - t) / ht, (t) => Math.floor(t / ht)); +cr.range; +function pt(t) { + return K((e) => { + e.setDate(e.getDate() - (e.getDay() + 7 - t) % 7), e.setHours(0, 0, 0, 0); + }, (e, n) => { + e.setDate(e.getDate() + n * 7); + }, (e, n) => (n - e - (n.getTimezoneOffset() - e.getTimezoneOffset()) * nt) / ke); +} +const Wt = pt(0), At = pt(1), en = pt(2), nn = pt(3), yt = pt(4), rn = pt(5), sn = pt(6); +Wt.range; +At.range; +en.range; +nn.range; +yt.range; +rn.range; +sn.range; +function Tt(t) { + return K((e) => { + e.setUTCDate(e.getUTCDate() - (e.getUTCDay() + 7 - t) % 7), e.setUTCHours(0, 0, 0, 0); + }, (e, n) => { + e.setUTCDate(e.getUTCDate() + n * 7); + }, (e, n) => (n - e) / ke); +} +const an = Tt(0), $t = Tt(1), lr = Tt(2), ur = Tt(3), Mt = Tt(4), fr = Tt(5), hr = Tt(6); +an.range; +$t.range; +lr.range; +ur.range; +Mt.range; +fr.range; +hr.range; +const It = K((t) => { + t.setDate(1), t.setHours(0, 0, 0, 0); +}, (t, e) => { + t.setMonth(t.getMonth() + e); +}, (t, e) => e.getMonth() - t.getMonth() + (e.getFullYear() - t.getFullYear()) * 12, (t) => t.getMonth()); +It.range; +const dr = K((t) => { + t.setUTCDate(1), t.setUTCHours(0, 0, 0, 0); +}, (t, e) => { + t.setUTCMonth(t.getUTCMonth() + e); +}, (t, e) => e.getUTCMonth() - t.getUTCMonth() + (e.getUTCFullYear() - t.getUTCFullYear()) * 12, (t) => t.getUTCMonth()); +dr.range; +const dt = K((t) => { + t.setMonth(0, 1), t.setHours(0, 0, 0, 0); +}, (t, e) => { + t.setFullYear(t.getFullYear() + e); +}, (t, e) => e.getFullYear() - t.getFullYear(), (t) => t.getFullYear()); +dt.every = (t) => !isFinite(t = Math.floor(t)) || !(t > 0) ? null : K((e) => { + e.setFullYear(Math.floor(e.getFullYear() / t) * t), e.setMonth(0, 1), e.setHours(0, 0, 0, 0); +}, (e, n) => { + e.setFullYear(e.getFullYear() + n * t); +}); +dt.range; +const kt = K((t) => { + t.setUTCMonth(0, 1), t.setUTCHours(0, 0, 0, 0); +}, (t, e) => { + t.setUTCFullYear(t.getUTCFullYear() + e); +}, (t, e) => e.getUTCFullYear() - t.getUTCFullYear(), (t) => t.getUTCFullYear()); +kt.every = (t) => !isFinite(t = Math.floor(t)) || !(t > 0) ? null : K((e) => { + e.setUTCFullYear(Math.floor(e.getUTCFullYear() / t) * t), e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0); +}, (e, n) => { + e.setUTCFullYear(e.getUTCFullYear() + n * t); +}); +kt.range; +function mr(t, e, n, r, i, s) { + const a = [ + [mt, 1, ut], + [mt, 5, 5 * ut], + [mt, 15, 15 * ut], + [mt, 30, 30 * ut], + [s, 1, nt], + [s, 5, 5 * nt], + [s, 15, 15 * nt], + [s, 30, 30 * nt], + [i, 1, ft], + [i, 3, 3 * ft], + [i, 6, 6 * ft], + [i, 12, 12 * ft], + [r, 1, ht], + [r, 2, 2 * ht], + [n, 1, ke], + [e, 1, Ye], + [e, 3, 3 * Ye], + [t, 1, ae] + ]; + function k(g, b, U) { + const C = b < g; + C && ([g, b] = [b, g]); + const v = U && typeof U.range == "function" ? U : Y(g, b, U), X = v ? v.range(g, +b + 1) : []; + return C ? X.reverse() : X; + } + function Y(g, b, U) { + const C = Math.abs(b - g) / U, v = On(([, , L]) => L).right(a, C); + if (v === a.length) + return t.every(_e(g / ae, b / ae, U)); + if (v === 0) + return Dt.every(Math.max(_e(g, b, U), 1)); + const [X, y] = a[C / a[v - 1][2] < a[v][2] / C ? v - 1 : v]; + return X.every(y); + } + return [k, Y]; +} +const [gr, yr] = mr(dt, It, Wt, gt, Et, Lt); +function oe(t) { + if (0 <= t.y && t.y < 100) { + var e = new Date(-1, t.m, t.d, t.H, t.M, t.S, t.L); + return e.setFullYear(t.y), e; + } + return new Date(t.y, t.m, t.d, t.H, t.M, t.S, t.L); +} +function ce(t) { + if (0 <= t.y && t.y < 100) { + var e = new Date(Date.UTC(-1, t.m, t.d, t.H, t.M, t.S, t.L)); + return e.setUTCFullYear(t.y), e; + } + return new Date(Date.UTC(t.y, t.m, t.d, t.H, t.M, t.S, t.L)); +} +function Ut(t, e, n) { + return { y: t, m: e, d: n, H: 0, M: 0, S: 0, L: 0 }; +} +function kr(t) { + var e = t.dateTime, n = t.date, r = t.time, i = t.periods, s = t.days, a = t.shortDays, k = t.months, Y = t.shortMonths, g = Yt(i), b = Ft(i), U = Yt(s), C = Ft(s), v = Yt(a), X = Ft(a), y = Yt(k), L = Ft(k), O = Yt(Y), W = Ft(Y), j = { + a: c, + A: Z, + b: f, + B: h, + c: null, + d: We, + e: We, + f: Vr, + g: Gr, + G: Jr, + H: Or, + I: Hr, + j: Nr, + L: on, + m: Pr, + M: zr, + p: _, + q: $, + Q: Ne, + s: Ve, + S: Rr, + u: jr, + U: Br, + V: Zr, + w: Xr, + W: $r, + x: null, + X: null, + y: qr, + Y: Qr, + Z: Kr, + "%": He + }, B = { + a: H, + A: V, + b: I, + B: P, + c: null, + d: Oe, + e: Oe, + f: ri, + g: di, + G: gi, + H: ti, + I: ei, + j: ni, + L: ln, + m: ii, + M: si, + p: it, + q: rt, + Q: Ne, + s: Ve, + S: ai, + u: oi, + U: ci, + V: li, + w: ui, + W: fi, + x: null, + X: null, + y: hi, + Y: mi, + Z: yi, + "%": He + }, G = { + a: D, + A: w, + b: o, + B: d, + c: m, + d: Ae, + e: Ae, + f: Er, + g: Ee, + G: Le, + H: Ie, + I: Ie, + j: Ur, + L: Lr, + m: _r, + M: Yr, + p: F, + q: Sr, + Q: Ir, + s: Wr, + S: Fr, + u: xr, + U: wr, + V: Cr, + w: br, + W: Dr, + x: u, + X: S, + y: Ee, + Y: Le, + Z: Mr, + "%": Ar + }; + j.x = x(n, j), j.X = x(r, j), j.c = x(e, j), B.x = x(n, B), B.X = x(r, B), B.c = x(e, B); + function x(p, E) { + return function(M) { + var l = [], R = -1, N = 0, q = p.length, Q, et, _t; + for (M instanceof Date || (M = /* @__PURE__ */ new Date(+M)); ++R < q; ) + p.charCodeAt(R) === 37 && (l.push(p.slice(N, R)), (et = Fe[Q = p.charAt(++R)]) != null ? Q = p.charAt(++R) : et = Q === "e" ? " " : "0", (_t = E[Q]) && (Q = _t(M, et)), l.push(Q), N = R + 1); + return l.push(p.slice(N, R)), l.join(""); + }; + } + function A(p, E) { + return function(M) { + var l = Ut(1900, void 0, 1), R = T(l, p, M += "", 0), N, q; + if (R != M.length) + return null; + if ("Q" in l) + return new Date(l.Q); + if ("s" in l) + return new Date(l.s * 1e3 + ("L" in l ? l.L : 0)); + if (E && !("Z" in l) && (l.Z = 0), "p" in l && (l.H = l.H % 12 + l.p * 12), l.m === void 0 && (l.m = "q" in l ? l.q : 0), "V" in l) { + if (l.V < 1 || l.V > 53) + return null; + "w" in l || (l.w = 1), "Z" in l ? (N = ce(Ut(l.y, 0, 1)), q = N.getUTCDay(), N = q > 4 || q === 0 ? $t.ceil(N) : $t(N), N = pe.offset(N, (l.V - 1) * 7), l.y = N.getUTCFullYear(), l.m = N.getUTCMonth(), l.d = N.getUTCDate() + (l.w + 6) % 7) : (N = oe(Ut(l.y, 0, 1)), q = N.getDay(), N = q > 4 || q === 0 ? At.ceil(N) : At(N), N = gt.offset(N, (l.V - 1) * 7), l.y = N.getFullYear(), l.m = N.getMonth(), l.d = N.getDate() + (l.w + 6) % 7); + } else + ("W" in l || "U" in l) && ("w" in l || (l.w = "u" in l ? l.u % 7 : "W" in l ? 1 : 0), q = "Z" in l ? ce(Ut(l.y, 0, 1)).getUTCDay() : oe(Ut(l.y, 0, 1)).getDay(), l.m = 0, l.d = "W" in l ? (l.w + 6) % 7 + l.W * 7 - (q + 5) % 7 : l.w + l.U * 7 - (q + 6) % 7); + return "Z" in l ? (l.H += l.Z / 100 | 0, l.M += l.Z % 100, ce(l)) : oe(l); + }; + } + function T(p, E, M, l) { + for (var R = 0, N = E.length, q = M.length, Q, et; R < N; ) { + if (l >= q) + return -1; + if (Q = E.charCodeAt(R++), Q === 37) { + if (Q = E.charAt(R++), et = G[Q in Fe ? E.charAt(R++) : Q], !et || (l = et(p, M, l)) < 0) + return -1; + } else if (Q != M.charCodeAt(l++)) + return -1; + } + return l; + } + function F(p, E, M) { + var l = g.exec(E.slice(M)); + return l ? (p.p = b.get(l[0].toLowerCase()), M + l[0].length) : -1; + } + function D(p, E, M) { + var l = v.exec(E.slice(M)); + return l ? (p.w = X.get(l[0].toLowerCase()), M + l[0].length) : -1; + } + function w(p, E, M) { + var l = U.exec(E.slice(M)); + return l ? (p.w = C.get(l[0].toLowerCase()), M + l[0].length) : -1; + } + function o(p, E, M) { + var l = O.exec(E.slice(M)); + return l ? (p.m = W.get(l[0].toLowerCase()), M + l[0].length) : -1; + } + function d(p, E, M) { + var l = y.exec(E.slice(M)); + return l ? (p.m = L.get(l[0].toLowerCase()), M + l[0].length) : -1; + } + function m(p, E, M) { + return T(p, e, E, M); + } + function u(p, E, M) { + return T(p, n, E, M); + } + function S(p, E, M) { + return T(p, r, E, M); + } + function c(p) { + return a[p.getDay()]; + } + function Z(p) { + return s[p.getDay()]; + } + function f(p) { + return Y[p.getMonth()]; + } + function h(p) { + return k[p.getMonth()]; + } + function _(p) { + return i[+(p.getHours() >= 12)]; + } + function $(p) { + return 1 + ~~(p.getMonth() / 3); + } + function H(p) { + return a[p.getUTCDay()]; + } + function V(p) { + return s[p.getUTCDay()]; + } + function I(p) { + return Y[p.getUTCMonth()]; + } + function P(p) { + return k[p.getUTCMonth()]; + } + function it(p) { + return i[+(p.getUTCHours() >= 12)]; + } + function rt(p) { + return 1 + ~~(p.getUTCMonth() / 3); + } + return { + format: function(p) { + var E = x(p += "", j); + return E.toString = function() { + return p; + }, E; + }, + parse: function(p) { + var E = A(p += "", !1); + return E.toString = function() { + return p; + }, E; + }, + utcFormat: function(p) { + var E = x(p += "", B); + return E.toString = function() { + return p; + }, E; + }, + utcParse: function(p) { + var E = A(p += "", !0); + return E.toString = function() { + return p; + }, E; + } + }; +} +var Fe = { "-": "", _: " ", 0: "0" }, tt = /^\s*\d+/, pr = /^%/, Tr = /[\\^$*+?|[\]().{}]/g; +function z(t, e, n) { + var r = t < 0 ? "-" : "", i = (r ? -t : t) + "", s = i.length; + return r + (s < n ? new Array(n - s + 1).join(e) + i : i); +} +function vr(t) { + return t.replace(Tr, "\\$&"); +} +function Yt(t) { + return new RegExp("^(?:" + t.map(vr).join("|") + ")", "i"); +} +function Ft(t) { + return new Map(t.map((e, n) => [e.toLowerCase(), n])); +} +function br(t, e, n) { + var r = tt.exec(e.slice(n, n + 1)); + return r ? (t.w = +r[0], n + r[0].length) : -1; +} +function xr(t, e, n) { + var r = tt.exec(e.slice(n, n + 1)); + return r ? (t.u = +r[0], n + r[0].length) : -1; +} +function wr(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.U = +r[0], n + r[0].length) : -1; +} +function Cr(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.V = +r[0], n + r[0].length) : -1; +} +function Dr(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.W = +r[0], n + r[0].length) : -1; +} +function Le(t, e, n) { + var r = tt.exec(e.slice(n, n + 4)); + return r ? (t.y = +r[0], n + r[0].length) : -1; +} +function Ee(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.y = +r[0] + (+r[0] > 68 ? 1900 : 2e3), n + r[0].length) : -1; +} +function Mr(t, e, n) { + var r = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n, n + 6)); + return r ? (t.Z = r[1] ? 0 : -(r[2] + (r[3] || "00")), n + r[0].length) : -1; +} +function Sr(t, e, n) { + var r = tt.exec(e.slice(n, n + 1)); + return r ? (t.q = r[0] * 3 - 3, n + r[0].length) : -1; +} +function _r(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.m = r[0] - 1, n + r[0].length) : -1; +} +function Ae(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.d = +r[0], n + r[0].length) : -1; +} +function Ur(t, e, n) { + var r = tt.exec(e.slice(n, n + 3)); + return r ? (t.m = 0, t.d = +r[0], n + r[0].length) : -1; +} +function Ie(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.H = +r[0], n + r[0].length) : -1; +} +function Yr(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.M = +r[0], n + r[0].length) : -1; +} +function Fr(t, e, n) { + var r = tt.exec(e.slice(n, n + 2)); + return r ? (t.S = +r[0], n + r[0].length) : -1; +} +function Lr(t, e, n) { + var r = tt.exec(e.slice(n, n + 3)); + return r ? (t.L = +r[0], n + r[0].length) : -1; +} +function Er(t, e, n) { + var r = tt.exec(e.slice(n, n + 6)); + return r ? (t.L = Math.floor(r[0] / 1e3), n + r[0].length) : -1; +} +function Ar(t, e, n) { + var r = pr.exec(e.slice(n, n + 1)); + return r ? n + r[0].length : -1; +} +function Ir(t, e, n) { + var r = tt.exec(e.slice(n)); + return r ? (t.Q = +r[0], n + r[0].length) : -1; +} +function Wr(t, e, n) { + var r = tt.exec(e.slice(n)); + return r ? (t.s = +r[0], n + r[0].length) : -1; +} +function We(t, e) { + return z(t.getDate(), e, 2); +} +function Or(t, e) { + return z(t.getHours(), e, 2); +} +function Hr(t, e) { + return z(t.getHours() % 12 || 12, e, 2); +} +function Nr(t, e) { + return z(1 + gt.count(dt(t), t), e, 3); +} +function on(t, e) { + return z(t.getMilliseconds(), e, 3); +} +function Vr(t, e) { + return on(t, e) + "000"; +} +function Pr(t, e) { + return z(t.getMonth() + 1, e, 2); +} +function zr(t, e) { + return z(t.getMinutes(), e, 2); +} +function Rr(t, e) { + return z(t.getSeconds(), e, 2); +} +function jr(t) { + var e = t.getDay(); + return e === 0 ? 7 : e; +} +function Br(t, e) { + return z(Wt.count(dt(t) - 1, t), e, 2); +} +function cn(t) { + var e = t.getDay(); + return e >= 4 || e === 0 ? yt(t) : yt.ceil(t); +} +function Zr(t, e) { + return t = cn(t), z(yt.count(dt(t), t) + (dt(t).getDay() === 4), e, 2); +} +function Xr(t) { + return t.getDay(); +} +function $r(t, e) { + return z(At.count(dt(t) - 1, t), e, 2); +} +function qr(t, e) { + return z(t.getFullYear() % 100, e, 2); +} +function Gr(t, e) { + return t = cn(t), z(t.getFullYear() % 100, e, 2); +} +function Qr(t, e) { + return z(t.getFullYear() % 1e4, e, 4); +} +function Jr(t, e) { + var n = t.getDay(); + return t = n >= 4 || n === 0 ? yt(t) : yt.ceil(t), z(t.getFullYear() % 1e4, e, 4); +} +function Kr(t) { + var e = t.getTimezoneOffset(); + return (e > 0 ? "-" : (e *= -1, "+")) + z(e / 60 | 0, "0", 2) + z(e % 60, "0", 2); +} +function Oe(t, e) { + return z(t.getUTCDate(), e, 2); +} +function ti(t, e) { + return z(t.getUTCHours(), e, 2); +} +function ei(t, e) { + return z(t.getUTCHours() % 12 || 12, e, 2); +} +function ni(t, e) { + return z(1 + pe.count(kt(t), t), e, 3); +} +function ln(t, e) { + return z(t.getUTCMilliseconds(), e, 3); +} +function ri(t, e) { + return ln(t, e) + "000"; +} +function ii(t, e) { + return z(t.getUTCMonth() + 1, e, 2); +} +function si(t, e) { + return z(t.getUTCMinutes(), e, 2); +} +function ai(t, e) { + return z(t.getUTCSeconds(), e, 2); +} +function oi(t) { + var e = t.getUTCDay(); + return e === 0 ? 7 : e; +} +function ci(t, e) { + return z(an.count(kt(t) - 1, t), e, 2); +} +function un(t) { + var e = t.getUTCDay(); + return e >= 4 || e === 0 ? Mt(t) : Mt.ceil(t); +} +function li(t, e) { + return t = un(t), z(Mt.count(kt(t), t) + (kt(t).getUTCDay() === 4), e, 2); +} +function ui(t) { + return t.getUTCDay(); +} +function fi(t, e) { + return z($t.count(kt(t) - 1, t), e, 2); +} +function hi(t, e) { + return z(t.getUTCFullYear() % 100, e, 2); +} +function di(t, e) { + return t = un(t), z(t.getUTCFullYear() % 100, e, 2); +} +function mi(t, e) { + return z(t.getUTCFullYear() % 1e4, e, 4); +} +function gi(t, e) { + var n = t.getUTCDay(); + return t = n >= 4 || n === 0 ? Mt(t) : Mt.ceil(t), z(t.getUTCFullYear() % 1e4, e, 4); +} +function yi() { + return "+0000"; +} +function He() { + return "%"; +} +function Ne(t) { + return +t; +} +function Ve(t) { + return Math.floor(+t / 1e3); +} +var bt, qt; +ki({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); +function ki(t) { + return bt = kr(t), qt = bt.format, bt.parse, bt.utcFormat, bt.utcParse, bt; +} +function pi(t) { + return new Date(t); +} +function Ti(t) { + return t instanceof Date ? +t : +/* @__PURE__ */ new Date(+t); +} +function fn(t, e, n, r, i, s, a, k, Y, g) { + var b = Hn(), U = b.invert, C = b.domain, v = g(".%L"), X = g(":%S"), y = g("%I:%M"), L = g("%I %p"), O = g("%a %d"), W = g("%b %d"), j = g("%B"), B = g("%Y"); + function G(x) { + return (Y(x) < x ? v : k(x) < x ? X : a(x) < x ? y : s(x) < x ? L : r(x) < x ? i(x) < x ? O : W : n(x) < x ? j : B)(x); + } + return b.invert = function(x) { + return new Date(U(x)); + }, b.domain = function(x) { + return arguments.length ? C(Array.from(x, Ti)) : C().map(pi); + }, b.ticks = function(x) { + var A = C(); + return t(A[0], A[A.length - 1], x == null ? 10 : x); + }, b.tickFormat = function(x, A) { + return A == null ? G : g(A); + }, b.nice = function(x) { + var A = C(); + return (!x || typeof x.range != "function") && (x = e(A[0], A[A.length - 1], x == null ? 10 : x)), x ? C(sr(A, x)) : b; + }, b.copy = function() { + return Nn(b, fn(t, e, n, r, i, s, a, k, Y, g)); + }, b; +} +function vi() { + return Pn.apply(fn(gr, yr, dt, It, Wt, gt, Et, Lt, mt, qt).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments); +} +var hn = { exports: {} }; +(function(t, e) { + (function(n, r) { + t.exports = r(); + })(ge, function() { + var n = "day"; + return function(r, i, s) { + var a = function(g) { + return g.add(4 - g.isoWeekday(), n); + }, k = i.prototype; + k.isoWeekYear = function() { + return a(this).year(); + }, k.isoWeek = function(g) { + if (!this.$utils().u(g)) + return this.add(7 * (g - this.isoWeek()), n); + var b, U, C, v, X = a(this), y = (b = this.isoWeekYear(), U = this.$u, C = (U ? s.utc : s)().year(b).startOf("year"), v = 4 - C.isoWeekday(), C.isoWeekday() > 4 && (v += 7), C.add(v, n)); + return X.diff(y, "week") + 1; + }, k.isoWeekday = function(g) { + return this.$utils().u(g) ? this.day() || 7 : this.day(this.day() % 7 ? g : g - 7); + }; + var Y = k.startOf; + k.startOf = function(g, b) { + var U = this.$utils(), C = !!U.u(b) || b; + return U.p(g) === "isoweek" ? C ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : Y.bind(this)(g, b); + }; + }; + }); +})(hn); +var bi = hn.exports; +const xi = /* @__PURE__ */ ye(bi); +var dn = { exports: {} }; +(function(t, e) { + (function(n, r) { + t.exports = r(); + })(ge, function() { + var n = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, r = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, i = /\d\d/, s = /\d\d?/, a = /\d*[^-_:/,()\s\d]+/, k = {}, Y = function(y) { + return (y = +y) + (y > 68 ? 1900 : 2e3); + }, g = function(y) { + return function(L) { + this[y] = +L; + }; + }, b = [/[+-]\d\d:?(\d\d)?|Z/, function(y) { + (this.zone || (this.zone = {})).offset = function(L) { + if (!L || L === "Z") + return 0; + var O = L.match(/([+-]|\d\d)/g), W = 60 * O[1] + (+O[2] || 0); + return W === 0 ? 0 : O[0] === "+" ? -W : W; + }(y); + }], U = function(y) { + var L = k[y]; + return L && (L.indexOf ? L : L.s.concat(L.f)); + }, C = function(y, L) { + var O, W = k.meridiem; + if (W) { + for (var j = 1; j <= 24; j += 1) + if (y.indexOf(W(j, 0, L)) > -1) { + O = j > 12; + break; + } + } else + O = y === (L ? "pm" : "PM"); + return O; + }, v = { A: [a, function(y) { + this.afternoon = C(y, !1); + }], a: [a, function(y) { + this.afternoon = C(y, !0); + }], S: [/\d/, function(y) { + this.milliseconds = 100 * +y; + }], SS: [i, function(y) { + this.milliseconds = 10 * +y; + }], SSS: [/\d{3}/, function(y) { + this.milliseconds = +y; + }], s: [s, g("seconds")], ss: [s, g("seconds")], m: [s, g("minutes")], mm: [s, g("minutes")], H: [s, g("hours")], h: [s, g("hours")], HH: [s, g("hours")], hh: [s, g("hours")], D: [s, g("day")], DD: [i, g("day")], Do: [a, function(y) { + var L = k.ordinal, O = y.match(/\d+/); + if (this.day = O[0], L) + for (var W = 1; W <= 31; W += 1) + L(W).replace(/\[|\]/g, "") === y && (this.day = W); + }], M: [s, g("month")], MM: [i, g("month")], MMM: [a, function(y) { + var L = U("months"), O = (U("monthsShort") || L.map(function(W) { + return W.slice(0, 3); + })).indexOf(y) + 1; + if (O < 1) + throw new Error(); + this.month = O % 12 || O; + }], MMMM: [a, function(y) { + var L = U("months").indexOf(y) + 1; + if (L < 1) + throw new Error(); + this.month = L % 12 || L; + }], Y: [/[+-]?\d+/, g("year")], YY: [i, function(y) { + this.year = Y(y); + }], YYYY: [/\d{4}/, g("year")], Z: b, ZZ: b }; + function X(y) { + var L, O; + L = y, O = k && k.formats; + for (var W = (y = L.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(F, D, w) { + var o = w && w.toUpperCase(); + return D || O[w] || n[w] || O[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(d, m, u) { + return m || u.slice(1); + }); + })).match(r), j = W.length, B = 0; B < j; B += 1) { + var G = W[B], x = v[G], A = x && x[0], T = x && x[1]; + W[B] = T ? { regex: A, parser: T } : G.replace(/^\[|\]$/g, ""); + } + return function(F) { + for (var D = {}, w = 0, o = 0; w < j; w += 1) { + var d = W[w]; + if (typeof d == "string") + o += d.length; + else { + var m = d.regex, u = d.parser, S = F.slice(o), c = m.exec(S)[0]; + u.call(D, c), F = F.replace(c, ""); + } + } + return function(Z) { + var f = Z.afternoon; + if (f !== void 0) { + var h = Z.hours; + f ? h < 12 && (Z.hours += 12) : h === 12 && (Z.hours = 0), delete Z.afternoon; + } + }(D), D; + }; + } + return function(y, L, O) { + O.p.customParseFormat = !0, y && y.parseTwoDigitYear && (Y = y.parseTwoDigitYear); + var W = L.prototype, j = W.parse; + W.parse = function(B) { + var G = B.date, x = B.utc, A = B.args; + this.$u = x; + var T = A[1]; + if (typeof T == "string") { + var F = A[2] === !0, D = A[3] === !0, w = F || D, o = A[2]; + D && (o = A[2]), k = this.$locale(), !F && o && (k = O.Ls[o]), this.$d = function(S, c, Z) { + try { + if (["x", "X"].indexOf(c) > -1) + return new Date((c === "X" ? 1e3 : 1) * S); + var f = X(c)(S), h = f.year, _ = f.month, $ = f.day, H = f.hours, V = f.minutes, I = f.seconds, P = f.milliseconds, it = f.zone, rt = /* @__PURE__ */ new Date(), p = $ || (h || _ ? 1 : rt.getDate()), E = h || rt.getFullYear(), M = 0; + h && !_ || (M = _ > 0 ? _ - 1 : rt.getMonth()); + var l = H || 0, R = V || 0, N = I || 0, q = P || 0; + return it ? new Date(Date.UTC(E, M, p, l, R, N, q + 60 * it.offset * 1e3)) : Z ? new Date(Date.UTC(E, M, p, l, R, N, q)) : new Date(E, M, p, l, R, N, q); + } catch (Q) { + return /* @__PURE__ */ new Date(""); + } + }(G, T, x), this.init(), o && o !== !0 && (this.$L = this.locale(o).$L), w && G != this.format(T) && (this.$d = /* @__PURE__ */ new Date("")), k = {}; + } else if (T instanceof Array) + for (var d = T.length, m = 1; m <= d; m += 1) { + A[1] = T[m - 1]; + var u = O.apply(this, A); + if (u.isValid()) { + this.$d = u.$d, this.$L = u.$L, this.init(); + break; + } + m === d && (this.$d = /* @__PURE__ */ new Date("")); + } + else + j.call(this, B); + }; + }; + }); +})(dn); +var wi = dn.exports; +const Ci = /* @__PURE__ */ ye(wi); +var mn = { exports: {} }; +(function(t, e) { + (function(n, r) { + t.exports = r(); + })(ge, function() { + return function(n, r) { + var i = r.prototype, s = i.format; + i.format = function(a) { + var k = this, Y = this.$locale(); + if (!this.isValid()) + return s.bind(this)(a); + var g = this.$utils(), b = (a || "YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function(U) { + switch (U) { + case "Q": + return Math.ceil((k.$M + 1) / 3); + case "Do": + return Y.ordinal(k.$D); + case "gggg": + return k.weekYear(); + case "GGGG": + return k.isoWeekYear(); + case "wo": + return Y.ordinal(k.week(), "W"); + case "w": + case "ww": + return g.s(k.week(), U === "w" ? 1 : 2, "0"); + case "W": + case "WW": + return g.s(k.isoWeek(), U === "W" ? 1 : 2, "0"); + case "k": + case "kk": + return g.s(String(k.$H === 0 ? 24 : k.$H), U === "k" ? 1 : 2, "0"); + case "X": + return Math.floor(k.$d.getTime() / 1e3); + case "x": + return k.$d.getTime(); + case "z": + return "[" + k.offsetName() + "]"; + case "zzz": + return "[" + k.offsetName("long") + "]"; + default: + return U; + } + }); + return s.bind(this)(b); + }; + }; + }); +})(mn); +var Di = mn.exports; +const Mi = /* @__PURE__ */ ye(Di); +var fe = function() { + var t = function(w, o, d, m) { + for (d = d || {}, m = w.length; m--; d[w[m]] = o) + ; + return d; + }, e = [6, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 35, 37], n = [1, 25], r = [1, 26], i = [1, 27], s = [1, 28], a = [1, 29], k = [1, 30], Y = [1, 31], g = [1, 9], b = [1, 10], U = [1, 11], C = [1, 12], v = [1, 13], X = [1, 14], y = [1, 15], L = [1, 16], O = [1, 18], W = [1, 19], j = [1, 20], B = [1, 21], G = [1, 22], x = [1, 24], A = [1, 32], T = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, gantt: 4, document: 5, EOF: 6, line: 7, SPACE: 8, statement: 9, NL: 10, weekday: 11, weekday_monday: 12, weekday_tuesday: 13, weekday_wednesday: 14, weekday_thursday: 15, weekday_friday: 16, weekday_saturday: 17, weekday_sunday: 18, dateFormat: 19, inclusiveEndDates: 20, topAxis: 21, axisFormat: 22, tickInterval: 23, excludes: 24, includes: 25, todayMarker: 26, title: 27, acc_title: 28, acc_title_value: 29, acc_descr: 30, acc_descr_value: 31, acc_descr_multiline_value: 32, section: 33, clickStatement: 34, taskTxt: 35, taskData: 36, click: 37, callbackname: 38, callbackargs: 39, href: 40, clickStatementDebug: 41, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "gantt", 6: "EOF", 8: "SPACE", 10: "NL", 12: "weekday_monday", 13: "weekday_tuesday", 14: "weekday_wednesday", 15: "weekday_thursday", 16: "weekday_friday", 17: "weekday_saturday", 18: "weekday_sunday", 19: "dateFormat", 20: "inclusiveEndDates", 21: "topAxis", 22: "axisFormat", 23: "tickInterval", 24: "excludes", 25: "includes", 26: "todayMarker", 27: "title", 28: "acc_title", 29: "acc_title_value", 30: "acc_descr", 31: "acc_descr_value", 32: "acc_descr_multiline_value", 33: "section", 35: "taskTxt", 36: "taskData", 37: "click", 38: "callbackname", 39: "callbackargs", 40: "href" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [34, 2], [34, 3], [34, 3], [34, 4], [34, 3], [34, 4], [34, 2], [41, 2], [41, 3], [41, 3], [41, 4], [41, 3], [41, 4], [41, 2]], + performAction: function(o, d, m, u, S, c, Z) { + var f = c.length - 1; + switch (S) { + case 1: + return c[f - 1]; + case 2: + this.$ = []; + break; + case 3: + c[f - 1].push(c[f]), this.$ = c[f - 1]; + break; + case 4: + case 5: + this.$ = c[f]; + break; + case 6: + case 7: + this.$ = []; + break; + case 8: + u.setWeekday("monday"); + break; + case 9: + u.setWeekday("tuesday"); + break; + case 10: + u.setWeekday("wednesday"); + break; + case 11: + u.setWeekday("thursday"); + break; + case 12: + u.setWeekday("friday"); + break; + case 13: + u.setWeekday("saturday"); + break; + case 14: + u.setWeekday("sunday"); + break; + case 15: + u.setDateFormat(c[f].substr(11)), this.$ = c[f].substr(11); + break; + case 16: + u.enableInclusiveEndDates(), this.$ = c[f].substr(18); + break; + case 17: + u.TopAxis(), this.$ = c[f].substr(8); + break; + case 18: + u.setAxisFormat(c[f].substr(11)), this.$ = c[f].substr(11); + break; + case 19: + u.setTickInterval(c[f].substr(13)), this.$ = c[f].substr(13); + break; + case 20: + u.setExcludes(c[f].substr(9)), this.$ = c[f].substr(9); + break; + case 21: + u.setIncludes(c[f].substr(9)), this.$ = c[f].substr(9); + break; + case 22: + u.setTodayMarker(c[f].substr(12)), this.$ = c[f].substr(12); + break; + case 24: + u.setDiagramTitle(c[f].substr(6)), this.$ = c[f].substr(6); + break; + case 25: + this.$ = c[f].trim(), u.setAccTitle(this.$); + break; + case 26: + case 27: + this.$ = c[f].trim(), u.setAccDescription(this.$); + break; + case 28: + u.addSection(c[f].substr(8)), this.$ = c[f].substr(8); + break; + case 30: + u.addTask(c[f - 1], c[f]), this.$ = "task"; + break; + case 31: + this.$ = c[f - 1], u.setClickEvent(c[f - 1], c[f], null); + break; + case 32: + this.$ = c[f - 2], u.setClickEvent(c[f - 2], c[f - 1], c[f]); + break; + case 33: + this.$ = c[f - 2], u.setClickEvent(c[f - 2], c[f - 1], null), u.setLink(c[f - 2], c[f]); + break; + case 34: + this.$ = c[f - 3], u.setClickEvent(c[f - 3], c[f - 2], c[f - 1]), u.setLink(c[f - 3], c[f]); + break; + case 35: + this.$ = c[f - 2], u.setClickEvent(c[f - 2], c[f], null), u.setLink(c[f - 2], c[f - 1]); + break; + case 36: + this.$ = c[f - 3], u.setClickEvent(c[f - 3], c[f - 1], c[f]), u.setLink(c[f - 3], c[f - 2]); + break; + case 37: + this.$ = c[f - 1], u.setLink(c[f - 1], c[f]); + break; + case 38: + case 44: + this.$ = c[f - 1] + " " + c[f]; + break; + case 39: + case 40: + case 42: + this.$ = c[f - 2] + " " + c[f - 1] + " " + c[f]; + break; + case 41: + case 43: + this.$ = c[f - 3] + " " + c[f - 2] + " " + c[f - 1] + " " + c[f]; + break; + } + }, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, t(e, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 17, 12: n, 13: r, 14: i, 15: s, 16: a, 17: k, 18: Y, 19: g, 20: b, 21: U, 22: C, 23: v, 24: X, 25: y, 26: L, 27: O, 28: W, 30: j, 32: B, 33: G, 34: 23, 35: x, 37: A }, t(e, [2, 7], { 1: [2, 1] }), t(e, [2, 3]), { 9: 33, 11: 17, 12: n, 13: r, 14: i, 15: s, 16: a, 17: k, 18: Y, 19: g, 20: b, 21: U, 22: C, 23: v, 24: X, 25: y, 26: L, 27: O, 28: W, 30: j, 32: B, 33: G, 34: 23, 35: x, 37: A }, t(e, [2, 5]), t(e, [2, 6]), t(e, [2, 15]), t(e, [2, 16]), t(e, [2, 17]), t(e, [2, 18]), t(e, [2, 19]), t(e, [2, 20]), t(e, [2, 21]), t(e, [2, 22]), t(e, [2, 23]), t(e, [2, 24]), { 29: [1, 34] }, { 31: [1, 35] }, t(e, [2, 27]), t(e, [2, 28]), t(e, [2, 29]), { 36: [1, 36] }, t(e, [2, 8]), t(e, [2, 9]), t(e, [2, 10]), t(e, [2, 11]), t(e, [2, 12]), t(e, [2, 13]), t(e, [2, 14]), { 38: [1, 37], 40: [1, 38] }, t(e, [2, 4]), t(e, [2, 25]), t(e, [2, 26]), t(e, [2, 30]), t(e, [2, 31], { 39: [1, 39], 40: [1, 40] }), t(e, [2, 37], { 38: [1, 41] }), t(e, [2, 32], { 40: [1, 42] }), t(e, [2, 33]), t(e, [2, 35], { 39: [1, 43] }), t(e, [2, 34]), t(e, [2, 36])], + defaultActions: {}, + parseError: function(o, d) { + if (d.recoverable) + this.trace(o); + else { + var m = new Error(o); + throw m.hash = d, m; + } + }, + parse: function(o) { + var d = this, m = [0], u = [], S = [null], c = [], Z = this.table, f = "", h = 0, _ = 0, $ = 2, H = 1, V = c.slice.call(arguments, 1), I = Object.create(this.lexer), P = { yy: {} }; + for (var it in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, it) && (P.yy[it] = this.yy[it]); + I.setInput(o, P.yy), P.yy.lexer = I, P.yy.parser = this, typeof I.yylloc == "undefined" && (I.yylloc = {}); + var rt = I.yylloc; + c.push(rt); + var p = I.options && I.options.ranges; + typeof P.yy.parseError == "function" ? this.parseError = P.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function E() { + var ot; + return ot = u.pop() || I.lex() || H, typeof ot != "number" && (ot instanceof Array && (u = ot, ot = u.pop()), ot = d.symbols_[ot] || ot), ot; + } + for (var M, l, R, N, q = {}, Q, et, _t, Vt; ; ) { + if (l = m[m.length - 1], this.defaultActions[l] ? R = this.defaultActions[l] : ((M === null || typeof M == "undefined") && (M = E()), R = Z[l] && Z[l][M]), typeof R == "undefined" || !R.length || !R[0]) { + var Qt = ""; + Vt = []; + for (Q in Z[l]) + this.terminals_[Q] && Q > $ && Vt.push("'" + this.terminals_[Q] + "'"); + I.showPosition ? Qt = "Parse error on line " + (h + 1) + `: +` + I.showPosition() + ` +Expecting ` + Vt.join(", ") + ", got '" + (this.terminals_[M] || M) + "'" : Qt = "Parse error on line " + (h + 1) + ": Unexpected " + (M == H ? "end of input" : "'" + (this.terminals_[M] || M) + "'"), this.parseError(Qt, { + text: I.match, + token: this.terminals_[M] || M, + line: I.yylineno, + loc: rt, + expected: Vt + }); + } + if (R[0] instanceof Array && R.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + l + ", token: " + M); + switch (R[0]) { + case 1: + m.push(M), S.push(I.yytext), c.push(I.yylloc), m.push(R[1]), M = null, _ = I.yyleng, f = I.yytext, h = I.yylineno, rt = I.yylloc; + break; + case 2: + if (et = this.productions_[R[1]][1], q.$ = S[S.length - et], q._$ = { + first_line: c[c.length - (et || 1)].first_line, + last_line: c[c.length - 1].last_line, + first_column: c[c.length - (et || 1)].first_column, + last_column: c[c.length - 1].last_column + }, p && (q._$.range = [ + c[c.length - (et || 1)].range[0], + c[c.length - 1].range[1] + ]), N = this.performAction.apply(q, [ + f, + _, + h, + P.yy, + R[1], + S, + c + ].concat(V)), typeof N != "undefined") + return N; + et && (m = m.slice(0, -1 * et * 2), S = S.slice(0, -1 * et), c = c.slice(0, -1 * et)), m.push(this.productions_[R[1]][0]), S.push(q.$), c.push(q._$), _t = Z[m[m.length - 2]][m[m.length - 1]], m.push(_t); + break; + case 3: + return !0; + } + } + return !0; + } + }, F = function() { + var w = { + EOF: 1, + parseError: function(d, m) { + if (this.yy.parser) + this.yy.parser.parseError(d, m); + else + throw new Error(d); + }, + // resets the lexer, sets new input + setInput: function(o, d) { + return this.yy = d || this.yy || {}, this._input = o, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var o = this._input[0]; + this.yytext += o, this.yyleng++, this.offset++, this.match += o, this.matched += o; + var d = o.match(/(?:\r\n?|\n).*/g); + return d ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), o; + }, + // unshifts one char (or a string) into the input + unput: function(o) { + var d = o.length, m = o.split(/(?:\r\n?|\n)/g); + this._input = o + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - d), this.offset -= d; + var u = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), m.length - 1 && (this.yylineno -= m.length - 1); + var S = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: m ? (m.length === u.length ? this.yylloc.first_column : 0) + u[u.length - m.length].length - m[0].length : this.yylloc.first_column - d + }, this.options.ranges && (this.yylloc.range = [S[0], S[0] + this.yyleng - d]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(o) { + this.unput(this.match.slice(o)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var o = this.matched.substr(0, this.matched.length - this.match.length); + return (o.length > 20 ? "..." : "") + o.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var o = this.match; + return o.length < 20 && (o += this._input.substr(0, 20 - o.length)), (o.substr(0, 20) + (o.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var o = this.pastInput(), d = new Array(o.length + 1).join("-"); + return o + this.upcomingInput() + ` +` + d + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(o, d) { + var m, u, S; + if (this.options.backtrack_lexer && (S = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (S.yylloc.range = this.yylloc.range.slice(0))), u = o[0].match(/(?:\r\n?|\n).*/g), u && (this.yylineno += u.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: u ? u[u.length - 1].length - u[u.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + o[0].length + }, this.yytext += o[0], this.match += o[0], this.matches = o, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(o[0].length), this.matched += o[0], m = this.performAction.call(this, this.yy, this, d, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), m) + return m; + if (this._backtrack) { + for (var c in S) + this[c] = S[c]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var o, d, m, u; + this._more || (this.yytext = "", this.match = ""); + for (var S = this._currentRules(), c = 0; c < S.length; c++) + if (m = this._input.match(this.rules[S[c]]), m && (!d || m[0].length > d[0].length)) { + if (d = m, u = c, this.options.backtrack_lexer) { + if (o = this.test_match(m, S[c]), o !== !1) + return o; + if (this._backtrack) { + d = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return d ? (o = this.test_match(d, S[u]), o !== !1 ? o : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var d = this.next(); + return d || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(d) { + this.conditionStack.push(d); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var d = this.conditionStack.length - 1; + return d > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(d) { + return d = this.conditionStack.length - 1 - Math.abs(d || 0), d >= 0 ? this.conditionStack[d] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(d) { + this.begin(d); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(d, m, u, S) { + switch (u) { + case 0: + return this.begin("open_directive"), "open_directive"; + case 1: + return this.begin("acc_title"), 28; + case 2: + return this.popState(), "acc_title_value"; + case 3: + return this.begin("acc_descr"), 30; + case 4: + return this.popState(), "acc_descr_value"; + case 5: + this.begin("acc_descr_multiline"); + break; + case 6: + this.popState(); + break; + case 7: + return "acc_descr_multiline_value"; + case 8: + break; + case 9: + break; + case 10: + break; + case 11: + return 10; + case 12: + break; + case 13: + break; + case 14: + this.begin("href"); + break; + case 15: + this.popState(); + break; + case 16: + return 40; + case 17: + this.begin("callbackname"); + break; + case 18: + this.popState(); + break; + case 19: + this.popState(), this.begin("callbackargs"); + break; + case 20: + return 38; + case 21: + this.popState(); + break; + case 22: + return 39; + case 23: + this.begin("click"); + break; + case 24: + this.popState(); + break; + case 25: + return 37; + case 26: + return 4; + case 27: + return 19; + case 28: + return 20; + case 29: + return 21; + case 30: + return 22; + case 31: + return 23; + case 32: + return 25; + case 33: + return 24; + case 34: + return 26; + case 35: + return 12; + case 36: + return 13; + case 37: + return 14; + case 38: + return 15; + case 39: + return 16; + case 40: + return 17; + case 41: + return 18; + case 42: + return "date"; + case 43: + return 27; + case 44: + return "accDescription"; + case 45: + return 33; + case 46: + return 35; + case 47: + return 36; + case 48: + return ":"; + case 49: + return 6; + case 50: + return "INVALID"; + } + }, + rules: [/^(?:%%\{)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:%%(?!\{)*[^\n]*)/i, /^(?:[^\}]%%*[^\n]*)/i, /^(?:%%*[^\n]*[\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:%[^\n]*)/i, /^(?:href[\s]+["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:call[\s]+)/i, /^(?:\([\s]*\))/i, /^(?:\()/i, /^(?:[^(]*)/i, /^(?:\))/i, /^(?:[^)]*)/i, /^(?:click[\s]+)/i, /^(?:[\s\n])/i, /^(?:[^\s\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:inclusiveEndDates\b)/i, /^(?:topAxis\b)/i, /^(?:axisFormat\s[^#\n;]+)/i, /^(?:tickInterval\s[^#\n;]+)/i, /^(?:includes\s[^#\n;]+)/i, /^(?:excludes\s[^#\n;]+)/i, /^(?:todayMarker\s[^\n;]+)/i, /^(?:weekday\s+monday\b)/i, /^(?:weekday\s+tuesday\b)/i, /^(?:weekday\s+wednesday\b)/i, /^(?:weekday\s+thursday\b)/i, /^(?:weekday\s+friday\b)/i, /^(?:weekday\s+saturday\b)/i, /^(?:weekday\s+sunday\b)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^\n]+)/i, /^(?:accDescription\s[^#\n;]+)/i, /^(?:section\s[^\n]+)/i, /^(?:[^:\n]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { acc_descr_multiline: { rules: [6, 7], inclusive: !1 }, acc_descr: { rules: [4], inclusive: !1 }, acc_title: { rules: [2], inclusive: !1 }, callbackargs: { rules: [21, 22], inclusive: !1 }, callbackname: { rules: [18, 19, 20], inclusive: !1 }, href: { rules: [15, 16], inclusive: !1 }, click: { rules: [24, 25], inclusive: !1 }, INITIAL: { rules: [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 17, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], inclusive: !0 } } + }; + return w; + }(); + T.lexer = F; + function D() { + this.yy = {}; + } + return D.prototype = T, T.Parser = D, new D(); +}(); +fe.parser = fe; +const Si = fe; +$dayjs.extend(xi); +$dayjs.extend(Ci); +$dayjs.extend(Mi); +let st = "", Te = "", ve, be = "", Ot = [], Ht = [], xe = {}, we = [], Gt = [], St = "", Ce = ""; +const gn = ["active", "done", "crit", "milestone"]; +let De = [], Nt = !1, Me = !1, Se = "sunday", he = 0; +const _i = function() { + we = [], Gt = [], St = "", De = [], jt = 0, me = void 0, Bt = void 0, J = [], st = "", Te = "", Ce = "", ve = void 0, be = "", Ot = [], Ht = [], Nt = !1, Me = !1, he = 0, xe = {}, Ln(), Se = "sunday"; +}, Ui = function(t) { + Te = t; +}, Yi = function() { + return Te; +}, Fi = function(t) { + ve = t; +}, Li = function() { + return ve; +}, Ei = function(t) { + be = t; +}, Ai = function() { + return be; +}, Ii = function(t) { + st = t; +}, Wi = function() { + Nt = !0; +}, Oi = function() { + return Nt; +}, Hi = function() { + Me = !0; +}, Ni = function() { + return Me; +}, Vi = function(t) { + Ce = t; +}, Pi = function() { + return Ce; +}, zi = function() { + return st; +}, Ri = function(t) { + Ot = t.toLowerCase().split(/[\s,]+/); +}, ji = function() { + return Ot; +}, Bi = function(t) { + Ht = t.toLowerCase().split(/[\s,]+/); +}, Zi = function() { + return Ht; +}, Xi = function() { + return xe; +}, $i = function(t) { + St = t, we.push(t); +}, qi = function() { + return we; +}, Gi = function() { + let t = Pe(); + const e = 10; + let n = 0; + for (; !t && n < e; ) + t = Pe(), n++; + return Gt = J, Gt; +}, yn = function(t, e, n, r) { + return r.includes(t.format(e.trim())) ? !1 : t.isoWeekday() >= 6 && n.includes("weekends") || n.includes(t.format("dddd").toLowerCase()) ? !0 : n.includes(t.format(e.trim())); +}, Qi = function(t) { + Se = t; +}, Ji = function() { + return Se; +}, kn = function(t, e, n, r) { + if (!n.length || t.manualEndTime) + return; + let i; + t.startTime instanceof Date ? i = $dayjs(t.startTime) : i = $dayjs(t.startTime, e, !0), i = i.add(1, "d"); + let s; + t.endTime instanceof Date ? s = $dayjs(t.endTime) : s = $dayjs(t.endTime, e, !0); + const [a, k] = Ki( + i, + s, + e, + n, + r + ); + t.endTime = a.toDate(), t.renderEndTime = k; +}, Ki = function(t, e, n, r, i) { + let s = !1, a = null; + for (; t <= e; ) + s || (a = e.toDate()), s = yn(t, n, r, i), s && (e = e.add(1, "d")), t = t.add(1, "d"); + return [e, a]; +}, de = function(t, e, n) { + n = n.trim(); + const i = new RegExp("^after\\s+(?[\\d\\w- ]+)").exec(n); + if (i !== null) { + let a = null; + for (const Y of i.groups.ids.split(" ")) { + let g = vt(Y); + g !== void 0 && (!a || g.endTime > a.endTime) && (a = g); + } + if (a) + return a.endTime; + const k = /* @__PURE__ */ new Date(); + return k.setHours(0, 0, 0, 0), k; + } + let s = $dayjs(n, e.trim(), !0); + if (s.isValid()) + return s.toDate(); + { + Zt.debug("Invalid date:" + n), Zt.debug("With date format:" + e.trim()); + const a = new Date(n); + if (a === void 0 || isNaN(a.getTime()) || // WebKit browsers can mis-parse invalid dates to be ridiculously + // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304. + // This can cause virtually infinite loops while rendering, so for the + // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as + // invalid. + a.getFullYear() < -1e4 || a.getFullYear() > 1e4) + throw new Error("Invalid date:" + n); + return a; + } +}, pn = function(t) { + const e = /^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim()); + return e !== null ? [Number.parseFloat(e[1]), e[2]] : [NaN, "ms"]; +}, Tn = function(t, e, n, r = !1) { + n = n.trim(); + const s = new RegExp("^until\\s+(?[\\d\\w- ]+)").exec(n); + if (s !== null) { + let b = null; + for (const C of s.groups.ids.split(" ")) { + let v = vt(C); + v !== void 0 && (!b || v.startTime < b.startTime) && (b = v); + } + if (b) + return b.startTime; + const U = /* @__PURE__ */ new Date(); + return U.setHours(0, 0, 0, 0), U; + } + let a = $dayjs(n, e.trim(), !0); + if (a.isValid()) + return r && (a = a.add(1, "d")), a.toDate(); + let k = $dayjs(t); + const [Y, g] = pn(n); + if (!Number.isNaN(Y)) { + const b = k.add(Y, g); + b.isValid() && (k = b); + } + return k.toDate(); +}; +let jt = 0; +const Ct = function(t) { + return t === void 0 ? (jt = jt + 1, "task" + jt) : t; +}, ts = function(t, e) { + let n; + e.substr(0, 1) === ":" ? n = e.substr(1, e.length) : n = e; + const r = n.split(","), i = {}; + wn(r, i, gn); + for (let a = 0; a < r.length; a++) + r[a] = r[a].trim(); + let s = ""; + switch (r.length) { + case 1: + i.id = Ct(), i.startTime = t.endTime, s = r[0]; + break; + case 2: + i.id = Ct(), i.startTime = de(void 0, st, r[0]), s = r[1]; + break; + case 3: + i.id = Ct(r[0]), i.startTime = de(void 0, st, r[1]), s = r[2]; + break; + } + return s && (i.endTime = Tn(i.startTime, st, s, Nt), i.manualEndTime = $dayjs(s, "YYYY-MM-DD", !0).isValid(), kn(i, st, Ht, Ot)), i; +}, es = function(t, e) { + let n; + e.substr(0, 1) === ":" ? n = e.substr(1, e.length) : n = e; + const r = n.split(","), i = {}; + wn(r, i, gn); + for (let s = 0; s < r.length; s++) + r[s] = r[s].trim(); + switch (r.length) { + case 1: + i.id = Ct(), i.startTime = { + type: "prevTaskEnd", + id: t + }, i.endTime = { + data: r[0] + }; + break; + case 2: + i.id = Ct(), i.startTime = { + type: "getStartDate", + startData: r[0] + }, i.endTime = { + data: r[1] + }; + break; + case 3: + i.id = Ct(r[0]), i.startTime = { + type: "getStartDate", + startData: r[1] + }, i.endTime = { + data: r[2] + }; + break; + } + return i; +}; +let me, Bt, J = []; +const vn = {}, ns = function(t, e) { + const n = { + section: St, + type: St, + processed: !1, + manualEndTime: !1, + renderEndTime: null, + raw: { data: e }, + task: t, + classes: [] + }, r = es(Bt, e); + n.raw.startTime = r.startTime, n.raw.endTime = r.endTime, n.id = r.id, n.prevTaskId = Bt, n.active = r.active, n.done = r.done, n.crit = r.crit, n.milestone = r.milestone, n.order = he, he++; + const i = J.push(n); + Bt = n.id, vn[n.id] = i - 1; +}, vt = function(t) { + const e = vn[t]; + return J[e]; +}, rs = function(t, e) { + const n = { + section: St, + type: St, + description: t, + task: t, + classes: [] + }, r = ts(me, e); + n.startTime = r.startTime, n.endTime = r.endTime, n.id = r.id, n.active = r.active, n.done = r.done, n.crit = r.crit, n.milestone = r.milestone, me = n, Gt.push(n); +}, Pe = function() { + const t = function(n) { + const r = J[n]; + let i = ""; + switch (J[n].raw.startTime.type) { + case "prevTaskEnd": { + const s = vt(r.prevTaskId); + r.startTime = s.endTime; + break; + } + case "getStartDate": + i = de(void 0, st, J[n].raw.startTime.startData), i && (J[n].startTime = i); + break; + } + return J[n].startTime && (J[n].endTime = Tn( + J[n].startTime, + st, + J[n].raw.endTime.data, + Nt + ), J[n].endTime && (J[n].processed = !0, J[n].manualEndTime = $dayjs( + J[n].raw.endTime.data, + "YYYY-MM-DD", + !0 + ).isValid(), kn(J[n], st, Ht, Ot))), J[n].processed; + }; + let e = !0; + for (const [n, r] of J.entries()) + t(n), e = e && r.processed; + return e; +}, is = function(t, e) { + let n = e; + xt().securityLevel !== "loose" && (n = En.sanitizeUrl(e)), t.split(",").forEach(function(r) { + vt(r) !== void 0 && (xn(r, () => { + window.open(n, "_self"); + }), xe[r] = n); + }), bn(t, "clickable"); +}, bn = function(t, e) { + t.split(",").forEach(function(n) { + let r = vt(n); + r !== void 0 && r.classes.push(e); + }); +}, ss = function(t, e, n) { + if (xt().securityLevel !== "loose" || e === void 0) + return; + let r = []; + if (typeof n == "string") { + r = n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); + for (let s = 0; s < r.length; s++) { + let a = r[s].trim(); + a.charAt(0) === '"' && a.charAt(a.length - 1) === '"' && (a = a.substr(1, a.length - 2)), r[s] = a; + } + } + r.length === 0 && r.push(t), vt(t) !== void 0 && xn(t, () => { + Wn.runFunc(e, ...r); + }); +}, xn = function(t, e) { + De.push( + function() { + const n = document.querySelector(`[id="${t}"]`); + n !== null && n.addEventListener("click", function() { + e(); + }); + }, + function() { + const n = document.querySelector(`[id="${t}-text"]`); + n !== null && n.addEventListener("click", function() { + e(); + }); + } + ); +}, as = function(t, e, n) { + t.split(",").forEach(function(r) { + ss(r, e, n); + }), bn(t, "clickable"); +}, os = function(t) { + De.forEach(function(e) { + e(t); + }); +}, cs = { + getConfig: () => xt().gantt, + clear: _i, + setDateFormat: Ii, + getDateFormat: zi, + enableInclusiveEndDates: Wi, + endDatesAreInclusive: Oi, + enableTopAxis: Hi, + topAxisEnabled: Ni, + setAxisFormat: Ui, + getAxisFormat: Yi, + setTickInterval: Fi, + getTickInterval: Li, + setTodayMarker: Ei, + getTodayMarker: Ai, + setAccTitle: Mn, + getAccTitle: Sn, + setDiagramTitle: _n, + getDiagramTitle: Un, + setDisplayMode: Vi, + getDisplayMode: Pi, + setAccDescription: Yn, + getAccDescription: Fn, + addSection: $i, + getSections: qi, + getTasks: Gi, + addTask: ns, + findTaskById: vt, + addTaskOrg: rs, + setIncludes: Ri, + getIncludes: ji, + setExcludes: Bi, + getExcludes: Zi, + setClickEvent: as, + setLink: is, + getLinks: Xi, + bindFunctions: os, + parseDuration: pn, + isInvalidDate: yn, + setWeekday: Qi, + getWeekday: Ji +}; +function wn(t, e, n) { + let r = !0; + for (; r; ) + r = !1, n.forEach(function(i) { + const s = "^\\s*" + i + "\\s*$", a = new RegExp(s); + t[0].match(a) && (e[i] = !0, t.shift(1), r = !0); + }); +} +const ls = function() { + Zt.debug("Something is calling, setConf, remove the call"); +}, ze = { + monday: At, + tuesday: en, + wednesday: nn, + thursday: yt, + friday: rn, + saturday: sn, + sunday: Wt +}, us = (t, e) => { + let n = [...t].map(() => -1 / 0), r = [...t].sort((s, a) => s.startTime - a.startTime || s.order - a.order), i = 0; + for (const s of r) + for (let a = 0; a < n.length; a++) + if (s.startTime >= n[a]) { + n[a] = s.endTime, s.order = a + e, a > i && (i = a); + break; + } + return i; +}; +let ct; +const fs = function(t, e, n, r) { + const i = xt().gantt, s = xt().securityLevel; + let a; + s === "sandbox" && (a = Pt("#i" + e)); + const k = s === "sandbox" ? Pt(a.nodes()[0].contentDocument.body) : Pt("body"), Y = s === "sandbox" ? a.nodes()[0].contentDocument : document, g = Y.getElementById(e); + ct = g.parentElement.offsetWidth, ct === void 0 && (ct = 1200), i.useWidth !== void 0 && (ct = i.useWidth); + const b = r.db.getTasks(); + let U = []; + for (const T of b) + U.push(T.type); + U = A(U); + const C = {}; + let v = 2 * i.topPadding; + if (r.db.getDisplayMode() === "compact" || i.displayMode === "compact") { + const T = {}; + for (const D of b) + T[D.section] === void 0 ? T[D.section] = [D] : T[D.section].push(D); + let F = 0; + for (const D of Object.keys(T)) { + const w = us(T[D], F) + 1; + F += w, v += w * (i.barHeight + i.barGap), C[D] = w; + } + } else { + v += b.length * (i.barHeight + i.barGap); + for (const T of U) + C[T] = b.filter((F) => F.type === T).length; + } + g.setAttribute("viewBox", "0 0 " + ct + " " + v); + const X = k.select(`[id="${e}"]`), y = vi().domain([ + Rn(b, function(T) { + return T.startTime; + }), + zn(b, function(T) { + return T.endTime; + }) + ]).rangeRound([0, ct - i.leftPadding - i.rightPadding]); + function L(T, F) { + const D = T.startTime, w = F.startTime; + let o = 0; + return D > w ? o = 1 : D < w && (o = -1), o; + } + b.sort(L), O(b, ct, v), An(X, v, ct, i.useMaxWidth), X.append("text").text(r.db.getDiagramTitle()).attr("x", ct / 2).attr("y", i.titleTopMargin).attr("class", "titleText"); + function O(T, F, D) { + const w = i.barHeight, o = w + i.barGap, d = i.topPadding, m = i.leftPadding, u = Vn().domain([0, U.length]).range(["#00B9FA", "#F95002"]).interpolate(ir); + j( + o, + d, + m, + F, + D, + T, + r.db.getExcludes(), + r.db.getIncludes() + ), B(m, d, F, D), W(T, o, d, m, w, u, F), G(o, d), x(m, d, F, D); + } + function W(T, F, D, w, o, d, m) { + const S = [...new Set(T.map((h) => h.order))].map((h) => T.find((_) => _.order === h)); + X.append("g").selectAll("rect").data(S).enter().append("rect").attr("x", 0).attr("y", function(h, _) { + return _ = h.order, _ * F + D - 2; + }).attr("width", function() { + return m - i.rightPadding / 2; + }).attr("height", F).attr("class", function(h) { + for (const [_, $] of U.entries()) + if (h.type === $) + return "section section" + _ % i.numberSectionStyles; + return "section section0"; + }); + const c = X.append("g").selectAll("rect").data(T).enter(), Z = r.db.getLinks(); + if (c.append("rect").attr("id", function(h) { + return h.id; + }).attr("rx", 3).attr("ry", 3).attr("x", function(h) { + return h.milestone ? y(h.startTime) + w + 0.5 * (y(h.endTime) - y(h.startTime)) - 0.5 * o : y(h.startTime) + w; + }).attr("y", function(h, _) { + return _ = h.order, _ * F + D; + }).attr("width", function(h) { + return h.milestone ? o : y(h.renderEndTime || h.endTime) - y(h.startTime); + }).attr("height", o).attr("transform-origin", function(h, _) { + return _ = h.order, (y(h.startTime) + w + 0.5 * (y(h.endTime) - y(h.startTime))).toString() + "px " + (_ * F + D + 0.5 * o).toString() + "px"; + }).attr("class", function(h) { + const _ = "task"; + let $ = ""; + h.classes.length > 0 && ($ = h.classes.join(" ")); + let H = 0; + for (const [I, P] of U.entries()) + h.type === P && (H = I % i.numberSectionStyles); + let V = ""; + return h.active ? h.crit ? V += " activeCrit" : V = " active" : h.done ? h.crit ? V = " doneCrit" : V = " done" : h.crit && (V += " crit"), V.length === 0 && (V = " task"), h.milestone && (V = " milestone " + V), V += H, V += " " + $, _ + V; + }), c.append("text").attr("id", function(h) { + return h.id + "-text"; + }).text(function(h) { + return h.task; + }).attr("font-size", i.fontSize).attr("x", function(h) { + let _ = y(h.startTime), $ = y(h.renderEndTime || h.endTime); + h.milestone && (_ += 0.5 * (y(h.endTime) - y(h.startTime)) - 0.5 * o), h.milestone && ($ = _ + o); + const H = this.getBBox().width; + return H > $ - _ ? $ + H + 1.5 * i.leftPadding > m ? _ + w - 5 : $ + w + 5 : ($ - _) / 2 + _ + w; + }).attr("y", function(h, _) { + return _ = h.order, _ * F + i.barHeight / 2 + (i.fontSize / 2 - 2) + D; + }).attr("text-height", o).attr("class", function(h) { + const _ = y(h.startTime); + let $ = y(h.endTime); + h.milestone && ($ = _ + o); + const H = this.getBBox().width; + let V = ""; + h.classes.length > 0 && (V = h.classes.join(" ")); + let I = 0; + for (const [it, rt] of U.entries()) + h.type === rt && (I = it % i.numberSectionStyles); + let P = ""; + return h.active && (h.crit ? P = "activeCritText" + I : P = "activeText" + I), h.done ? h.crit ? P = P + " doneCritText" + I : P = P + " doneText" + I : h.crit && (P = P + " critText" + I), h.milestone && (P += " milestoneText"), H > $ - _ ? $ + H + 1.5 * i.leftPadding > m ? V + " taskTextOutsideLeft taskTextOutside" + I + " " + P : V + " taskTextOutsideRight taskTextOutside" + I + " " + P + " width-" + H : V + " taskText taskText" + I + " " + P + " width-" + H; + }), xt().securityLevel === "sandbox") { + let h; + h = Pt("#i" + e); + const _ = h.nodes()[0].contentDocument; + c.filter(function($) { + return Z[$.id] !== void 0; + }).each(function($) { + var H = _.querySelector("#" + $.id), V = _.querySelector("#" + $.id + "-text"); + const I = H.parentNode; + var P = _.createElement("a"); + P.setAttribute("xlink:href", Z[$.id]), P.setAttribute("target", "_top"), I.appendChild(P), P.appendChild(H), P.appendChild(V); + }); + } + } + function j(T, F, D, w, o, d, m, u) { + if (m.length === 0 && u.length === 0) + return; + let S, c; + for (const { startTime: H, endTime: V } of d) + (S === void 0 || H < S) && (S = H), (c === void 0 || V > c) && (c = V); + if (!S || !c) + return; + if ($dayjs(c).diff($dayjs(S), "year") > 5) { + Zt.warn( + "The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days." + ); + return; + } + const Z = r.db.getDateFormat(), f = []; + let h = null, _ = $dayjs(S); + for (; _.valueOf() <= c; ) + r.db.isInvalidDate(_, Z, m, u) ? h ? h.end = _ : h = { + start: _, + end: _ + } : h && (f.push(h), h = null), _ = _.add(1, "d"); + X.append("g").selectAll("rect").data(f).enter().append("rect").attr("id", function(H) { + return "exclude-" + H.start.format("YYYY-MM-DD"); + }).attr("x", function(H) { + return y(H.start) + D; + }).attr("y", i.gridLineStartPadding).attr("width", function(H) { + const V = H.end.add(1, "day"); + return y(V) - y(H.start); + }).attr("height", o - F - i.gridLineStartPadding).attr("transform-origin", function(H, V) { + return (y(H.start) + D + 0.5 * (y(H.end) - y(H.start))).toString() + "px " + (V * T + 0.5 * o).toString() + "px"; + }).attr("class", "exclude-range"); + } + function B(T, F, D, w) { + let o = Qn(y).tickSize(-w + F + i.gridLineStartPadding).tickFormat(qt(r.db.getAxisFormat() || i.axisFormat || "%Y-%m-%d")); + const m = /^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec( + r.db.getTickInterval() || i.tickInterval + ); + if (m !== null) { + const u = m[1], S = m[2], c = r.db.getWeekday() || i.weekday; + switch (S) { + case "millisecond": + o.ticks(Dt.every(u)); + break; + case "second": + o.ticks(mt.every(u)); + break; + case "minute": + o.ticks(Lt.every(u)); + break; + case "hour": + o.ticks(Et.every(u)); + break; + case "day": + o.ticks(gt.every(u)); + break; + case "week": + o.ticks(ze[c].every(u)); + break; + case "month": + o.ticks(It.every(u)); + break; + } + } + if (X.append("g").attr("class", "grid").attr("transform", "translate(" + T + ", " + (w - 50) + ")").call(o).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10).attr("dy", "1em"), r.db.topAxisEnabled() || i.topAxis) { + let u = Gn(y).tickSize(-w + F + i.gridLineStartPadding).tickFormat(qt(r.db.getAxisFormat() || i.axisFormat || "%Y-%m-%d")); + if (m !== null) { + const S = m[1], c = m[2], Z = r.db.getWeekday() || i.weekday; + switch (c) { + case "millisecond": + u.ticks(Dt.every(S)); + break; + case "second": + u.ticks(mt.every(S)); + break; + case "minute": + u.ticks(Lt.every(S)); + break; + case "hour": + u.ticks(Et.every(S)); + break; + case "day": + u.ticks(gt.every(S)); + break; + case "week": + u.ticks(ze[Z].every(S)); + break; + case "month": + u.ticks(It.every(S)); + break; + } + } + X.append("g").attr("class", "grid").attr("transform", "translate(" + T + ", " + F + ")").call(u).selectAll("text").style("text-anchor", "middle").attr("fill", "#000").attr("stroke", "none").attr("font-size", 10); + } + } + function G(T, F) { + let D = 0; + const w = Object.keys(C).map((o) => [o, C[o]]); + X.append("g").selectAll("text").data(w).enter().append(function(o) { + const d = o[0].split(In.lineBreakRegex), m = -(d.length - 1) / 2, u = Y.createElementNS("http://www.w3.org/2000/svg", "text"); + u.setAttribute("dy", m + "em"); + for (const [S, c] of d.entries()) { + const Z = Y.createElementNS("http://www.w3.org/2000/svg", "tspan"); + Z.setAttribute("alignment-baseline", "central"), Z.setAttribute("x", "10"), S > 0 && Z.setAttribute("dy", "1em"), Z.textContent = c, u.appendChild(Z); + } + return u; + }).attr("x", 10).attr("y", function(o, d) { + if (d > 0) + for (let m = 0; m < d; m++) + return D += w[d - 1][1], o[1] * T / 2 + D * T + F; + else + return o[1] * T / 2 + F; + }).attr("font-size", i.sectionFontSize).attr("class", function(o) { + for (const [d, m] of U.entries()) + if (o[0] === m) + return "sectionTitle sectionTitle" + d % i.numberSectionStyles; + return "sectionTitle"; + }); + } + function x(T, F, D, w) { + const o = r.db.getTodayMarker(); + if (o === "off") + return; + const d = X.append("g").attr("class", "today"), m = /* @__PURE__ */ new Date(), u = d.append("line"); + u.attr("x1", y(m) + T).attr("x2", y(m) + T).attr("y1", i.titleTopMargin).attr("y2", w - i.titleTopMargin).attr("class", "today"), o !== "" && u.attr("style", o.replace(/,/g, ";")); + } + function A(T) { + const F = {}, D = []; + for (let w = 0, o = T.length; w < o; ++w) + Object.prototype.hasOwnProperty.call(F, T[w]) || (F[T[w]] = !0, D.push(T[w])); + return D; + } +}, hs = { + setConf: ls, + draw: fs +}, ds = (t) => ` + .mermaid-main-font { + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .exclude-range { + fill: ${t.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${t.sectionBkgColor}; + } + + .section2 { + fill: ${t.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${t.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${t.titleColor}; + } + + .sectionTitle1 { + fill: ${t.titleColor}; + } + + .sectionTitle2 { + fill: ${t.titleColor}; + } + + .sectionTitle3 { + fill: ${t.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${t.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${t.fontFamily}; + fill: ${t.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${t.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideRight { + fill: ${t.taskTextDarkColor}; + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideLeft { + fill: ${t.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${t.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${t.taskBkgColor}; + stroke: ${t.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${t.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${t.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${t.activeTaskBkgColor}; + stroke: ${t.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${t.doneTaskBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${t.critBorderColor}; + fill: ${t.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.titleColor || t.textColor}; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } +`, ms = ds, ps = { + parser: Si, + db: cs, + renderer: hs, + styles: ms +}; +export { + ps as diagram +}; diff --git a/client/packages/lowcoder/public/package/2ff2c7a6.js b/client/packages/lowcoder/public/package/2ff2c7a6.js new file mode 100644 index 000000000..66ab9526f --- /dev/null +++ b/client/packages/lowcoder/public/package/2ff2c7a6.js @@ -0,0 +1,6 @@ +function t(r) { + return typeof r == "object" && "length" in r ? r : Array.from(r); +} +export { + t as a +}; diff --git a/client/packages/lowcoder/public/package/2ff7471d.js b/client/packages/lowcoder/public/package/2ff7471d.js new file mode 100644 index 000000000..b071ab963 --- /dev/null +++ b/client/packages/lowcoder/public/package/2ff7471d.js @@ -0,0 +1,9 @@ +function o(e) { + for (var c = e.length / 6 | 0, n = new Array(c), a = 0; a < c; ) + n[a] = "#" + e.slice(a * 6, ++a * 6); + return n; +} +const r = o("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); +export { + r as s +}; diff --git a/client/packages/lowcoder/public/package/32cceee9.js b/client/packages/lowcoder/public/package/32cceee9.js new file mode 100644 index 000000000..58c478cef --- /dev/null +++ b/client/packages/lowcoder/public/package/32cceee9.js @@ -0,0 +1,1276 @@ +var Ge = Object.defineProperty, Se = Object.defineProperties; +var Ae = Object.getOwnPropertyDescriptors; +var ge = Object.getOwnPropertySymbols; +var Ie = Object.prototype.hasOwnProperty, Ne = Object.prototype.propertyIsEnumerable; +var de = (r, a, o) => a in r ? Ge(r, a, { enumerable: !0, configurable: !0, writable: !0, value: o }) : r[a] = o, ke = (r, a) => { + for (var o in a || (a = {})) + Ie.call(a, o) && de(r, o, a[o]); + if (ge) + for (var o of ge(a)) + Ne.call(a, o) && de(r, o, a[o]); + return r; +}, xe = (r, a) => Se(r, Ae(a)); +import { e as v, s as He, a as Be, b as Ve, d as De, F as ze, G as je, l as B, m as D, H as qe, j as Ye, C as Fe, K as Ke, L as Ue } from "./08856db2.js"; +var me = function() { + var r = function(S, l, u, k) { + for (u = u || {}, k = S.length; k--; u[S[k]] = l) + ; + return u; + }, a = [1, 3], o = [1, 6], h = [1, 4], i = [1, 5], c = [2, 5], b = [1, 12], m = [5, 7, 13, 19, 21, 23, 24, 26, 28, 31, 37, 40, 47], x = [7, 13, 19, 21, 23, 24, 26, 28, 31, 37, 40], y = [7, 12, 13, 19, 21, 23, 24, 26, 28, 31, 37, 40], n = [7, 13, 47], C = [1, 42], _ = [1, 41], g = [7, 13, 29, 32, 35, 38, 47], f = [1, 55], d = [1, 56], p = [1, 57], E = [7, 13, 32, 35, 42, 47], z = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, eol: 4, GG: 5, document: 6, EOF: 7, ":": 8, DIR: 9, options: 10, body: 11, OPT: 12, NL: 13, line: 14, statement: 15, commitStatement: 16, mergeStatement: 17, cherryPickStatement: 18, acc_title: 19, acc_title_value: 20, acc_descr: 21, acc_descr_value: 22, acc_descr_multiline_value: 23, section: 24, branchStatement: 25, CHECKOUT: 26, ref: 27, BRANCH: 28, ORDER: 29, NUM: 30, CHERRY_PICK: 31, COMMIT_ID: 32, STR: 33, PARENT_COMMIT: 34, COMMIT_TAG: 35, EMPTYSTR: 36, MERGE: 37, COMMIT_TYPE: 38, commitType: 39, COMMIT: 40, commit_arg: 41, COMMIT_MSG: 42, NORMAL: 43, REVERSE: 44, HIGHLIGHT: 45, ID: 46, ";": 47, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 5: "GG", 7: "EOF", 8: ":", 9: "DIR", 12: "OPT", 13: "NL", 19: "acc_title", 20: "acc_title_value", 21: "acc_descr", 22: "acc_descr_value", 23: "acc_descr_multiline_value", 24: "section", 26: "CHECKOUT", 28: "BRANCH", 29: "ORDER", 30: "NUM", 31: "CHERRY_PICK", 32: "COMMIT_ID", 33: "STR", 34: "PARENT_COMMIT", 35: "COMMIT_TAG", 36: "EMPTYSTR", 37: "MERGE", 38: "COMMIT_TYPE", 40: "COMMIT", 42: "COMMIT_MSG", 43: "NORMAL", 44: "REVERSE", 45: "HIGHLIGHT", 46: "ID", 47: ";" }, + productions_: [0, [3, 2], [3, 3], [3, 4], [3, 5], [6, 0], [6, 2], [10, 2], [10, 1], [11, 0], [11, 2], [14, 2], [14, 1], [15, 1], [15, 1], [15, 1], [15, 2], [15, 2], [15, 1], [15, 1], [15, 1], [15, 2], [25, 2], [25, 4], [18, 3], [18, 5], [18, 5], [18, 7], [18, 7], [18, 5], [18, 5], [18, 5], [18, 7], [18, 7], [18, 7], [18, 7], [17, 2], [17, 4], [17, 4], [17, 4], [17, 6], [17, 6], [17, 6], [17, 6], [17, 6], [17, 6], [17, 8], [17, 8], [17, 8], [17, 8], [17, 8], [17, 8], [16, 2], [16, 3], [16, 3], [16, 5], [16, 5], [16, 3], [16, 5], [16, 5], [16, 5], [16, 5], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 3], [16, 5], [16, 5], [16, 5], [16, 5], [16, 5], [16, 5], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [41, 0], [41, 1], [39, 1], [39, 1], [39, 1], [27, 1], [27, 1], [4, 1], [4, 1], [4, 1]], + performAction: function(l, u, k, s, T, e, X) { + var t = e.length - 1; + switch (T) { + case 2: + return e[t]; + case 3: + return e[t - 1]; + case 4: + return s.setDirection(e[t - 3]), e[t - 1]; + case 6: + s.setOptions(e[t - 1]), this.$ = e[t]; + break; + case 7: + e[t - 1] += e[t], this.$ = e[t - 1]; + break; + case 9: + this.$ = []; + break; + case 10: + e[t - 1].push(e[t]), this.$ = e[t - 1]; + break; + case 11: + this.$ = e[t - 1]; + break; + case 16: + this.$ = e[t].trim(), s.setAccTitle(this.$); + break; + case 17: + case 18: + this.$ = e[t].trim(), s.setAccDescription(this.$); + break; + case 19: + s.addSection(e[t].substr(8)), this.$ = e[t].substr(8); + break; + case 21: + s.checkout(e[t]); + break; + case 22: + s.branch(e[t]); + break; + case 23: + s.branch(e[t - 2], e[t]); + break; + case 24: + s.cherryPick(e[t], "", void 0); + break; + case 25: + s.cherryPick(e[t - 2], "", void 0, e[t]); + break; + case 26: + s.cherryPick(e[t - 2], "", e[t]); + break; + case 27: + s.cherryPick(e[t - 4], "", e[t], e[t - 2]); + break; + case 28: + s.cherryPick(e[t - 4], "", e[t - 2], e[t]); + break; + case 29: + s.cherryPick(e[t], "", e[t - 2]); + break; + case 30: + s.cherryPick(e[t], "", ""); + break; + case 31: + s.cherryPick(e[t - 2], "", ""); + break; + case 32: + s.cherryPick(e[t - 4], "", "", e[t - 2]); + break; + case 33: + s.cherryPick(e[t - 4], "", "", e[t]); + break; + case 34: + s.cherryPick(e[t - 2], "", e[t - 4], e[t]); + break; + case 35: + s.cherryPick(e[t - 2], "", "", e[t]); + break; + case 36: + s.merge(e[t], "", "", ""); + break; + case 37: + s.merge(e[t - 2], e[t], "", ""); + break; + case 38: + s.merge(e[t - 2], "", e[t], ""); + break; + case 39: + s.merge(e[t - 2], "", "", e[t]); + break; + case 40: + s.merge(e[t - 4], e[t], "", e[t - 2]); + break; + case 41: + s.merge(e[t - 4], "", e[t], e[t - 2]); + break; + case 42: + s.merge(e[t - 4], "", e[t - 2], e[t]); + break; + case 43: + s.merge(e[t - 4], e[t - 2], e[t], ""); + break; + case 44: + s.merge(e[t - 4], e[t - 2], "", e[t]); + break; + case 45: + s.merge(e[t - 4], e[t], e[t - 2], ""); + break; + case 46: + s.merge(e[t - 6], e[t - 4], e[t - 2], e[t]); + break; + case 47: + s.merge(e[t - 6], e[t], e[t - 4], e[t - 2]); + break; + case 48: + s.merge(e[t - 6], e[t - 4], e[t], e[t - 2]); + break; + case 49: + s.merge(e[t - 6], e[t - 2], e[t - 4], e[t]); + break; + case 50: + s.merge(e[t - 6], e[t], e[t - 2], e[t - 4]); + break; + case 51: + s.merge(e[t - 6], e[t - 2], e[t], e[t - 4]); + break; + case 52: + s.commit(e[t]); + break; + case 53: + s.commit("", "", s.commitType.NORMAL, e[t]); + break; + case 54: + s.commit("", "", e[t], ""); + break; + case 55: + s.commit("", "", e[t], e[t - 2]); + break; + case 56: + s.commit("", "", e[t - 2], e[t]); + break; + case 57: + s.commit("", e[t], s.commitType.NORMAL, ""); + break; + case 58: + s.commit("", e[t - 2], s.commitType.NORMAL, e[t]); + break; + case 59: + s.commit("", e[t], s.commitType.NORMAL, e[t - 2]); + break; + case 60: + s.commit("", e[t - 2], e[t], ""); + break; + case 61: + s.commit("", e[t], e[t - 2], ""); + break; + case 62: + s.commit("", e[t - 4], e[t - 2], e[t]); + break; + case 63: + s.commit("", e[t - 4], e[t], e[t - 2]); + break; + case 64: + s.commit("", e[t - 2], e[t - 4], e[t]); + break; + case 65: + s.commit("", e[t], e[t - 4], e[t - 2]); + break; + case 66: + s.commit("", e[t], e[t - 2], e[t - 4]); + break; + case 67: + s.commit("", e[t - 2], e[t], e[t - 4]); + break; + case 68: + s.commit(e[t], "", s.commitType.NORMAL, ""); + break; + case 69: + s.commit(e[t], "", s.commitType.NORMAL, e[t - 2]); + break; + case 70: + s.commit(e[t - 2], "", s.commitType.NORMAL, e[t]); + break; + case 71: + s.commit(e[t - 2], "", e[t], ""); + break; + case 72: + s.commit(e[t], "", e[t - 2], ""); + break; + case 73: + s.commit(e[t], e[t - 2], s.commitType.NORMAL, ""); + break; + case 74: + s.commit(e[t - 2], e[t], s.commitType.NORMAL, ""); + break; + case 75: + s.commit(e[t - 4], "", e[t - 2], e[t]); + break; + case 76: + s.commit(e[t - 4], "", e[t], e[t - 2]); + break; + case 77: + s.commit(e[t - 2], "", e[t - 4], e[t]); + break; + case 78: + s.commit(e[t], "", e[t - 4], e[t - 2]); + break; + case 79: + s.commit(e[t], "", e[t - 2], e[t - 4]); + break; + case 80: + s.commit(e[t - 2], "", e[t], e[t - 4]); + break; + case 81: + s.commit(e[t - 4], e[t], e[t - 2], ""); + break; + case 82: + s.commit(e[t - 4], e[t - 2], e[t], ""); + break; + case 83: + s.commit(e[t - 2], e[t], e[t - 4], ""); + break; + case 84: + s.commit(e[t], e[t - 2], e[t - 4], ""); + break; + case 85: + s.commit(e[t], e[t - 4], e[t - 2], ""); + break; + case 86: + s.commit(e[t - 2], e[t - 4], e[t], ""); + break; + case 87: + s.commit(e[t - 4], e[t], s.commitType.NORMAL, e[t - 2]); + break; + case 88: + s.commit(e[t - 4], e[t - 2], s.commitType.NORMAL, e[t]); + break; + case 89: + s.commit(e[t - 2], e[t], s.commitType.NORMAL, e[t - 4]); + break; + case 90: + s.commit(e[t], e[t - 2], s.commitType.NORMAL, e[t - 4]); + break; + case 91: + s.commit(e[t], e[t - 4], s.commitType.NORMAL, e[t - 2]); + break; + case 92: + s.commit(e[t - 2], e[t - 4], s.commitType.NORMAL, e[t]); + break; + case 93: + s.commit(e[t - 6], e[t - 4], e[t - 2], e[t]); + break; + case 94: + s.commit(e[t - 6], e[t - 4], e[t], e[t - 2]); + break; + case 95: + s.commit(e[t - 6], e[t - 2], e[t - 4], e[t]); + break; + case 96: + s.commit(e[t - 6], e[t], e[t - 4], e[t - 2]); + break; + case 97: + s.commit(e[t - 6], e[t - 2], e[t], e[t - 4]); + break; + case 98: + s.commit(e[t - 6], e[t], e[t - 2], e[t - 4]); + break; + case 99: + s.commit(e[t - 4], e[t - 6], e[t - 2], e[t]); + break; + case 100: + s.commit(e[t - 4], e[t - 6], e[t], e[t - 2]); + break; + case 101: + s.commit(e[t - 2], e[t - 6], e[t - 4], e[t]); + break; + case 102: + s.commit(e[t], e[t - 6], e[t - 4], e[t - 2]); + break; + case 103: + s.commit(e[t - 2], e[t - 6], e[t], e[t - 4]); + break; + case 104: + s.commit(e[t], e[t - 6], e[t - 2], e[t - 4]); + break; + case 105: + s.commit(e[t], e[t - 4], e[t - 2], e[t - 6]); + break; + case 106: + s.commit(e[t - 2], e[t - 4], e[t], e[t - 6]); + break; + case 107: + s.commit(e[t], e[t - 2], e[t - 4], e[t - 6]); + break; + case 108: + s.commit(e[t - 2], e[t], e[t - 4], e[t - 6]); + break; + case 109: + s.commit(e[t - 4], e[t - 2], e[t], e[t - 6]); + break; + case 110: + s.commit(e[t - 4], e[t], e[t - 2], e[t - 6]); + break; + case 111: + s.commit(e[t - 2], e[t - 4], e[t - 6], e[t]); + break; + case 112: + s.commit(e[t], e[t - 4], e[t - 6], e[t - 2]); + break; + case 113: + s.commit(e[t - 2], e[t], e[t - 6], e[t - 4]); + break; + case 114: + s.commit(e[t], e[t - 2], e[t - 6], e[t - 4]); + break; + case 115: + s.commit(e[t - 4], e[t - 2], e[t - 6], e[t]); + break; + case 116: + s.commit(e[t - 4], e[t], e[t - 6], e[t - 2]); + break; + case 117: + this.$ = ""; + break; + case 118: + this.$ = e[t]; + break; + case 119: + this.$ = s.commitType.NORMAL; + break; + case 120: + this.$ = s.commitType.REVERSE; + break; + case 121: + this.$ = s.commitType.HIGHLIGHT; + break; + } + }, + table: [{ 3: 1, 4: 2, 5: a, 7: o, 13: h, 47: i }, { 1: [3] }, { 3: 7, 4: 2, 5: a, 7: o, 13: h, 47: i }, { 6: 8, 7: c, 8: [1, 9], 9: [1, 10], 10: 11, 13: b }, r(m, [2, 124]), r(m, [2, 125]), r(m, [2, 126]), { 1: [2, 1] }, { 7: [1, 13] }, { 6: 14, 7: c, 10: 11, 13: b }, { 8: [1, 15] }, r(x, [2, 9], { 11: 16, 12: [1, 17] }), r(y, [2, 8]), { 1: [2, 2] }, { 7: [1, 18] }, { 6: 19, 7: c, 10: 11, 13: b }, { 7: [2, 6], 13: [1, 22], 14: 20, 15: 21, 16: 23, 17: 24, 18: 25, 19: [1, 26], 21: [1, 27], 23: [1, 28], 24: [1, 29], 25: 30, 26: [1, 31], 28: [1, 35], 31: [1, 34], 37: [1, 33], 40: [1, 32] }, r(y, [2, 7]), { 1: [2, 3] }, { 7: [1, 36] }, r(x, [2, 10]), { 4: 37, 7: o, 13: h, 47: i }, r(x, [2, 12]), r(n, [2, 13]), r(n, [2, 14]), r(n, [2, 15]), { 20: [1, 38] }, { 22: [1, 39] }, r(n, [2, 18]), r(n, [2, 19]), r(n, [2, 20]), { 27: 40, 33: C, 46: _ }, r(n, [2, 117], { 41: 43, 32: [1, 46], 33: [1, 48], 35: [1, 44], 38: [1, 45], 42: [1, 47] }), { 27: 49, 33: C, 46: _ }, { 32: [1, 50], 35: [1, 51] }, { 27: 52, 33: C, 46: _ }, { 1: [2, 4] }, r(x, [2, 11]), r(n, [2, 16]), r(n, [2, 17]), r(n, [2, 21]), r(g, [2, 122]), r(g, [2, 123]), r(n, [2, 52]), { 33: [1, 53] }, { 39: 54, 43: f, 44: d, 45: p }, { 33: [1, 58] }, { 33: [1, 59] }, r(n, [2, 118]), r(n, [2, 36], { 32: [1, 60], 35: [1, 62], 38: [1, 61] }), { 33: [1, 63] }, { 33: [1, 64], 36: [1, 65] }, r(n, [2, 22], { 29: [1, 66] }), r(n, [2, 53], { 32: [1, 68], 38: [1, 67], 42: [1, 69] }), r(n, [2, 54], { 32: [1, 71], 35: [1, 70], 42: [1, 72] }), r(E, [2, 119]), r(E, [2, 120]), r(E, [2, 121]), r(n, [2, 57], { 35: [1, 73], 38: [1, 74], 42: [1, 75] }), r(n, [2, 68], { 32: [1, 78], 35: [1, 76], 38: [1, 77] }), { 33: [1, 79] }, { 39: 80, 43: f, 44: d, 45: p }, { 33: [1, 81] }, r(n, [2, 24], { 34: [1, 82], 35: [1, 83] }), { 32: [1, 84] }, { 32: [1, 85] }, { 30: [1, 86] }, { 39: 87, 43: f, 44: d, 45: p }, { 33: [1, 88] }, { 33: [1, 89] }, { 33: [1, 90] }, { 33: [1, 91] }, { 33: [1, 92] }, { 33: [1, 93] }, { 39: 94, 43: f, 44: d, 45: p }, { 33: [1, 95] }, { 33: [1, 96] }, { 39: 97, 43: f, 44: d, 45: p }, { 33: [1, 98] }, r(n, [2, 37], { 35: [1, 100], 38: [1, 99] }), r(n, [2, 38], { 32: [1, 102], 35: [1, 101] }), r(n, [2, 39], { 32: [1, 103], 38: [1, 104] }), { 33: [1, 105] }, { 33: [1, 106], 36: [1, 107] }, { 33: [1, 108] }, { 33: [1, 109] }, r(n, [2, 23]), r(n, [2, 55], { 32: [1, 110], 42: [1, 111] }), r(n, [2, 59], { 38: [1, 112], 42: [1, 113] }), r(n, [2, 69], { 32: [1, 115], 38: [1, 114] }), r(n, [2, 56], { 32: [1, 116], 42: [1, 117] }), r(n, [2, 61], { 35: [1, 118], 42: [1, 119] }), r(n, [2, 72], { 32: [1, 121], 35: [1, 120] }), r(n, [2, 58], { 38: [1, 122], 42: [1, 123] }), r(n, [2, 60], { 35: [1, 124], 42: [1, 125] }), r(n, [2, 73], { 35: [1, 127], 38: [1, 126] }), r(n, [2, 70], { 32: [1, 129], 38: [1, 128] }), r(n, [2, 71], { 32: [1, 131], 35: [1, 130] }), r(n, [2, 74], { 35: [1, 133], 38: [1, 132] }), { 39: 134, 43: f, 44: d, 45: p }, { 33: [1, 135] }, { 33: [1, 136] }, { 33: [1, 137] }, { 33: [1, 138] }, { 39: 139, 43: f, 44: d, 45: p }, r(n, [2, 25], { 35: [1, 140] }), r(n, [2, 26], { 34: [1, 141] }), r(n, [2, 31], { 34: [1, 142] }), r(n, [2, 29], { 34: [1, 143] }), r(n, [2, 30], { 34: [1, 144] }), { 33: [1, 145] }, { 33: [1, 146] }, { 39: 147, 43: f, 44: d, 45: p }, { 33: [1, 148] }, { 39: 149, 43: f, 44: d, 45: p }, { 33: [1, 150] }, { 33: [1, 151] }, { 33: [1, 152] }, { 33: [1, 153] }, { 33: [1, 154] }, { 33: [1, 155] }, { 33: [1, 156] }, { 39: 157, 43: f, 44: d, 45: p }, { 33: [1, 158] }, { 33: [1, 159] }, { 33: [1, 160] }, { 39: 161, 43: f, 44: d, 45: p }, { 33: [1, 162] }, { 39: 163, 43: f, 44: d, 45: p }, { 33: [1, 164] }, { 33: [1, 165] }, { 33: [1, 166] }, { 39: 167, 43: f, 44: d, 45: p }, { 33: [1, 168] }, r(n, [2, 43], { 35: [1, 169] }), r(n, [2, 44], { 38: [1, 170] }), r(n, [2, 42], { 32: [1, 171] }), r(n, [2, 45], { 35: [1, 172] }), r(n, [2, 40], { 38: [1, 173] }), r(n, [2, 41], { 32: [1, 174] }), { 33: [1, 175], 36: [1, 176] }, { 33: [1, 177] }, { 33: [1, 178] }, { 33: [1, 179] }, { 33: [1, 180] }, r(n, [2, 66], { 42: [1, 181] }), r(n, [2, 79], { 32: [1, 182] }), r(n, [2, 67], { 42: [1, 183] }), r(n, [2, 90], { 38: [1, 184] }), r(n, [2, 80], { 32: [1, 185] }), r(n, [2, 89], { 38: [1, 186] }), r(n, [2, 65], { 42: [1, 187] }), r(n, [2, 78], { 32: [1, 188] }), r(n, [2, 64], { 42: [1, 189] }), r(n, [2, 84], { 35: [1, 190] }), r(n, [2, 77], { 32: [1, 191] }), r(n, [2, 83], { 35: [1, 192] }), r(n, [2, 63], { 42: [1, 193] }), r(n, [2, 91], { 38: [1, 194] }), r(n, [2, 62], { 42: [1, 195] }), r(n, [2, 85], { 35: [1, 196] }), r(n, [2, 86], { 35: [1, 197] }), r(n, [2, 92], { 38: [1, 198] }), r(n, [2, 76], { 32: [1, 199] }), r(n, [2, 87], { 38: [1, 200] }), r(n, [2, 75], { 32: [1, 201] }), r(n, [2, 81], { 35: [1, 202] }), r(n, [2, 82], { 35: [1, 203] }), r(n, [2, 88], { 38: [1, 204] }), { 33: [1, 205] }, { 39: 206, 43: f, 44: d, 45: p }, { 33: [1, 207] }, { 33: [1, 208] }, { 39: 209, 43: f, 44: d, 45: p }, { 33: [1, 210] }, r(n, [2, 27]), r(n, [2, 32]), r(n, [2, 28]), r(n, [2, 33]), r(n, [2, 34]), r(n, [2, 35]), { 33: [1, 211] }, { 33: [1, 212] }, { 33: [1, 213] }, { 39: 214, 43: f, 44: d, 45: p }, { 33: [1, 215] }, { 39: 216, 43: f, 44: d, 45: p }, { 33: [1, 217] }, { 33: [1, 218] }, { 33: [1, 219] }, { 33: [1, 220] }, { 33: [1, 221] }, { 33: [1, 222] }, { 33: [1, 223] }, { 39: 224, 43: f, 44: d, 45: p }, { 33: [1, 225] }, { 33: [1, 226] }, { 33: [1, 227] }, { 39: 228, 43: f, 44: d, 45: p }, { 33: [1, 229] }, { 39: 230, 43: f, 44: d, 45: p }, { 33: [1, 231] }, { 33: [1, 232] }, { 33: [1, 233] }, { 39: 234, 43: f, 44: d, 45: p }, r(n, [2, 46]), r(n, [2, 48]), r(n, [2, 47]), r(n, [2, 49]), r(n, [2, 51]), r(n, [2, 50]), r(n, [2, 107]), r(n, [2, 108]), r(n, [2, 105]), r(n, [2, 106]), r(n, [2, 110]), r(n, [2, 109]), r(n, [2, 114]), r(n, [2, 113]), r(n, [2, 112]), r(n, [2, 111]), r(n, [2, 116]), r(n, [2, 115]), r(n, [2, 104]), r(n, [2, 103]), r(n, [2, 102]), r(n, [2, 101]), r(n, [2, 99]), r(n, [2, 100]), r(n, [2, 98]), r(n, [2, 97]), r(n, [2, 96]), r(n, [2, 95]), r(n, [2, 93]), r(n, [2, 94])], + defaultActions: { 7: [2, 1], 13: [2, 2], 18: [2, 3], 36: [2, 4] }, + parseError: function(l, u) { + if (u.recoverable) + this.trace(l); + else { + var k = new Error(l); + throw k.hash = u, k; + } + }, + parse: function(l) { + var u = this, k = [0], s = [], T = [null], e = [], X = this.table, t = "", re = 0, fe = 0, ve = 2, pe = 1, Ce = e.slice.call(arguments, 1), O = Object.create(this.lexer), F = { yy: {} }; + for (var ce in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, ce) && (F.yy[ce] = this.yy[ce]); + O.setInput(l, F.yy), F.yy.lexer = O, F.yy.parser = this, typeof O.yylloc == "undefined" && (O.yylloc = {}); + var oe = O.yylloc; + e.push(oe); + var Oe = O.options && O.options.ranges; + typeof F.yy.parseError == "function" ? this.parseError = F.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function Pe() { + var q; + return q = s.pop() || O.lex() || pe, typeof q != "number" && (q instanceof Array && (s = q, q = s.pop()), q = u.symbols_[q] || q), q; + } + for (var N, K, V, le, J = {}, ie, j, be, se; ; ) { + if (K = k[k.length - 1], this.defaultActions[K] ? V = this.defaultActions[K] : ((N === null || typeof N == "undefined") && (N = Pe()), V = X[K] && X[K][N]), typeof V == "undefined" || !V.length || !V[0]) { + var he = ""; + se = []; + for (ie in X[K]) + this.terminals_[ie] && ie > ve && se.push("'" + this.terminals_[ie] + "'"); + O.showPosition ? he = "Parse error on line " + (re + 1) + `: +` + O.showPosition() + ` +Expecting ` + se.join(", ") + ", got '" + (this.terminals_[N] || N) + "'" : he = "Parse error on line " + (re + 1) + ": Unexpected " + (N == pe ? "end of input" : "'" + (this.terminals_[N] || N) + "'"), this.parseError(he, { + text: O.match, + token: this.terminals_[N] || N, + line: O.yylineno, + loc: oe, + expected: se + }); + } + if (V[0] instanceof Array && V.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + K + ", token: " + N); + switch (V[0]) { + case 1: + k.push(N), T.push(O.yytext), e.push(O.yylloc), k.push(V[1]), N = null, fe = O.yyleng, t = O.yytext, re = O.yylineno, oe = O.yylloc; + break; + case 2: + if (j = this.productions_[V[1]][1], J.$ = T[T.length - j], J._$ = { + first_line: e[e.length - (j || 1)].first_line, + last_line: e[e.length - 1].last_line, + first_column: e[e.length - (j || 1)].first_column, + last_column: e[e.length - 1].last_column + }, Oe && (J._$.range = [ + e[e.length - (j || 1)].range[0], + e[e.length - 1].range[1] + ]), le = this.performAction.apply(J, [ + t, + fe, + re, + F.yy, + V[1], + T, + e + ].concat(Ce)), typeof le != "undefined") + return le; + j && (k = k.slice(0, -1 * j * 2), T = T.slice(0, -1 * j), e = e.slice(0, -1 * j)), k.push(this.productions_[V[1]][0]), T.push(J.$), e.push(J._$), be = X[k[k.length - 2]][k[k.length - 1]], k.push(be); + break; + case 3: + return !0; + } + } + return !0; + } + }, R = function() { + var S = { + EOF: 1, + parseError: function(u, k) { + if (this.yy.parser) + this.yy.parser.parseError(u, k); + else + throw new Error(u); + }, + // resets the lexer, sets new input + setInput: function(l, u) { + return this.yy = u || this.yy || {}, this._input = l, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var l = this._input[0]; + this.yytext += l, this.yyleng++, this.offset++, this.match += l, this.matched += l; + var u = l.match(/(?:\r\n?|\n).*/g); + return u ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), l; + }, + // unshifts one char (or a string) into the input + unput: function(l) { + var u = l.length, k = l.split(/(?:\r\n?|\n)/g); + this._input = l + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - u), this.offset -= u; + var s = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), k.length - 1 && (this.yylineno -= k.length - 1); + var T = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: k ? (k.length === s.length ? this.yylloc.first_column : 0) + s[s.length - k.length].length - k[0].length : this.yylloc.first_column - u + }, this.options.ranges && (this.yylloc.range = [T[0], T[0] + this.yyleng - u]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(l) { + this.unput(this.match.slice(l)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var l = this.matched.substr(0, this.matched.length - this.match.length); + return (l.length > 20 ? "..." : "") + l.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var l = this.match; + return l.length < 20 && (l += this._input.substr(0, 20 - l.length)), (l.substr(0, 20) + (l.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var l = this.pastInput(), u = new Array(l.length + 1).join("-"); + return l + this.upcomingInput() + ` +` + u + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(l, u) { + var k, s, T; + if (this.options.backtrack_lexer && (T = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (T.yylloc.range = this.yylloc.range.slice(0))), s = l[0].match(/(?:\r\n?|\n).*/g), s && (this.yylineno += s.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: s ? s[s.length - 1].length - s[s.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + l[0].length + }, this.yytext += l[0], this.match += l[0], this.matches = l, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(l[0].length), this.matched += l[0], k = this.performAction.call(this, this.yy, this, u, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), k) + return k; + if (this._backtrack) { + for (var e in T) + this[e] = T[e]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var l, u, k, s; + this._more || (this.yytext = "", this.match = ""); + for (var T = this._currentRules(), e = 0; e < T.length; e++) + if (k = this._input.match(this.rules[T[e]]), k && (!u || k[0].length > u[0].length)) { + if (u = k, s = e, this.options.backtrack_lexer) { + if (l = this.test_match(k, T[e]), l !== !1) + return l; + if (this._backtrack) { + u = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return u ? (l = this.test_match(u, T[s]), l !== !1 ? l : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var u = this.next(); + return u || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(u) { + this.conditionStack.push(u); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var u = this.conditionStack.length - 1; + return u > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(u) { + return u = this.conditionStack.length - 1 - Math.abs(u || 0), u >= 0 ? this.conditionStack[u] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(u) { + this.begin(u); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(u, k, s, T) { + switch (s) { + case 0: + return this.begin("acc_title"), 19; + case 1: + return this.popState(), "acc_title_value"; + case 2: + return this.begin("acc_descr"), 21; + case 3: + return this.popState(), "acc_descr_value"; + case 4: + this.begin("acc_descr_multiline"); + break; + case 5: + this.popState(); + break; + case 6: + return "acc_descr_multiline_value"; + case 7: + return 13; + case 8: + break; + case 9: + break; + case 10: + return 5; + case 11: + return 40; + case 12: + return 32; + case 13: + return 38; + case 14: + return 42; + case 15: + return 43; + case 16: + return 44; + case 17: + return 45; + case 18: + return 35; + case 19: + return 28; + case 20: + return 29; + case 21: + return 37; + case 22: + return 31; + case 23: + return 34; + case 24: + return 26; + case 25: + return 9; + case 26: + return 9; + case 27: + return 8; + case 28: + return "CARET"; + case 29: + this.begin("options"); + break; + case 30: + this.popState(); + break; + case 31: + return 12; + case 32: + return 36; + case 33: + this.begin("string"); + break; + case 34: + this.popState(); + break; + case 35: + return 33; + case 36: + return 30; + case 37: + return 46; + case 38: + return 7; + } + }, + rules: [/^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:(\r?\n)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gitGraph\b)/i, /^(?:commit(?=\s|$))/i, /^(?:id:)/i, /^(?:type:)/i, /^(?:msg:)/i, /^(?:NORMAL\b)/i, /^(?:REVERSE\b)/i, /^(?:HIGHLIGHT\b)/i, /^(?:tag:)/i, /^(?:branch(?=\s|$))/i, /^(?:order:)/i, /^(?:merge(?=\s|$))/i, /^(?:cherry-pick(?=\s|$))/i, /^(?:parent:)/i, /^(?:checkout(?=\s|$))/i, /^(?:LR\b)/i, /^(?:TB\b)/i, /^(?::)/i, /^(?:\^)/i, /^(?:options\r?\n)/i, /^(?:[ \r\n\t]+end\b)/i, /^(?:[\s\S]+(?=[ \r\n\t]+end))/i, /^(?:["]["])/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[0-9]+(?=\s|$))/i, /^(?:\w([-\./\w]*[-\w])?)/i, /^(?:$)/i, /^(?:\s+)/i], + conditions: { acc_descr_multiline: { rules: [5, 6], inclusive: !1 }, acc_descr: { rules: [3], inclusive: !1 }, acc_title: { rules: [1], inclusive: !1 }, options: { rules: [30, 31], inclusive: !1 }, string: { rules: [34, 35], inclusive: !1 }, INITIAL: { rules: [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 36, 37, 38, 39], inclusive: !0 } } + }; + return S; + }(); + z.lexer = R; + function A() { + this.yy = {}; + } + return A.prototype = z, z.Parser = A, new A(); +}(); +me.parser = me; +const We = me; +let ae = v().gitGraph.mainBranchName, Je = v().gitGraph.mainBranchOrder, M = {}, I = null, ee = {}; +ee[ae] = { name: ae, order: Je }; +let L = {}; +L[ae] = I; +let G = ae, Ee = "LR", W = 0; +function ue() { + return Ue({ length: 7 }); +} +function Qe(r, a) { + const o = /* @__PURE__ */ Object.create(null); + return r.reduce((h, i) => { + const c = a(i); + return o[c] || (o[c] = !0, h.push(i)), h; + }, []); +} +const Xe = function(r) { + Ee = r; +}; +let Te = {}; +const Ze = function(r) { + B.debug("options str", r), r = r && r.trim(), r = r || "{}"; + try { + Te = JSON.parse(r); + } catch (a) { + B.error("error while parsing gitGraph options", a.message); + } +}, $e = function() { + return Te; +}, et = function(r, a, o, h) { + B.debug("Entering commit:", r, a, o, h), a = D.sanitizeText(a, v()), r = D.sanitizeText(r, v()), h = D.sanitizeText(h, v()); + const i = { + id: a || W + "-" + ue(), + message: r, + seq: W++, + type: o || Q.NORMAL, + tag: h || "", + parents: I == null ? [] : [I.id], + branch: G + }; + I = i, M[i.id] = i, L[G] = i.id, B.debug("in pushCommit " + i.id); +}, tt = function(r, a) { + if (r = D.sanitizeText(r, v()), L[r] === void 0) + L[r] = I != null ? I.id : null, ee[r] = { name: r, order: a ? parseInt(a, 10) : null }, we(r), B.debug("in createBranch"); + else { + let o = new Error( + 'Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ' + r + '")' + ); + throw o.hash = { + text: "branch " + r, + token: "branch " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ['"checkout ' + r + '"'] + }, o; + } +}, rt = function(r, a, o, h) { + r = D.sanitizeText(r, v()), a = D.sanitizeText(a, v()); + const i = M[L[G]], c = M[L[r]]; + if (G === r) { + let m = new Error('Incorrect usage of "merge". Cannot merge a branch to itself'); + throw m.hash = { + text: "merge " + r, + token: "merge " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["branch abc"] + }, m; + } else if (i === void 0 || !i) { + let m = new Error( + 'Incorrect usage of "merge". Current branch (' + G + ")has no commits" + ); + throw m.hash = { + text: "merge " + r, + token: "merge " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["commit"] + }, m; + } else if (L[r] === void 0) { + let m = new Error( + 'Incorrect usage of "merge". Branch to be merged (' + r + ") does not exist" + ); + throw m.hash = { + text: "merge " + r, + token: "merge " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["branch " + r] + }, m; + } else if (c === void 0 || !c) { + let m = new Error( + 'Incorrect usage of "merge". Branch to be merged (' + r + ") has no commits" + ); + throw m.hash = { + text: "merge " + r, + token: "merge " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ['"commit"'] + }, m; + } else if (i === c) { + let m = new Error('Incorrect usage of "merge". Both branches have same head'); + throw m.hash = { + text: "merge " + r, + token: "merge " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["branch abc"] + }, m; + } else if (a && M[a] !== void 0) { + let m = new Error( + 'Incorrect usage of "merge". Commit with id:' + a + " already exists, use different custom Id" + ); + throw m.hash = { + text: "merge " + r + a + o + h, + token: "merge " + r + a + o + h, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: [ + "merge " + r + " " + a + "_UNIQUE " + o + " " + h + ] + }, m; + } + const b = { + id: a || W + "-" + ue(), + message: "merged branch " + r + " into " + G, + seq: W++, + parents: [I == null ? null : I.id, L[r]], + branch: G, + type: Q.MERGE, + customType: o, + customId: !!a, + tag: h || "" + }; + I = b, M[b.id] = b, L[G] = b.id, B.debug(L), B.debug("in mergeBranch"); +}, it = function(r, a, o, h) { + if (B.debug("Entering cherryPick:", r, a, o), r = D.sanitizeText(r, v()), a = D.sanitizeText(a, v()), o = D.sanitizeText(o, v()), h = D.sanitizeText(h, v()), !r || M[r] === void 0) { + let b = new Error( + 'Incorrect usage of "cherryPick". Source commit id should exist and provided' + ); + throw b.hash = { + text: "cherryPick " + r + " " + a, + token: "cherryPick " + r + " " + a, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["cherry-pick abc"] + }, b; + } + let i = M[r], c = i.branch; + if (h && !(Array.isArray(i.parents) && i.parents.includes(h))) + throw new Error( + "Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit." + ); + if (i.type === Q.MERGE && !h) + throw new Error( + "Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified." + ); + if (!a || M[a] === void 0) { + if (c === G) { + let x = new Error( + 'Incorrect usage of "cherryPick". Source commit is already on current branch' + ); + throw x.hash = { + text: "cherryPick " + r + " " + a, + token: "cherryPick " + r + " " + a, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["cherry-pick abc"] + }, x; + } + const b = M[L[G]]; + if (b === void 0 || !b) { + let x = new Error( + 'Incorrect usage of "cherry-pick". Current branch (' + G + ")has no commits" + ); + throw x.hash = { + text: "cherryPick " + r + " " + a, + token: "cherryPick " + r + " " + a, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ["cherry-pick abc"] + }, x; + } + const m = { + id: W + "-" + ue(), + message: "cherry-picked " + i + " into " + G, + seq: W++, + parents: [I == null ? null : I.id, i.id], + branch: G, + type: Q.CHERRY_PICK, + tag: o != null ? o : `cherry-pick:${i.id}${i.type === Q.MERGE ? `|parent:${h}` : ""}` + }; + I = m, M[m.id] = m, L[G] = m.id, B.debug(L), B.debug("in cherryPick"); + } +}, we = function(r) { + if (r = D.sanitizeText(r, v()), L[r] === void 0) { + let a = new Error( + 'Trying to checkout branch which is not yet created. (Help try using "branch ' + r + '")' + ); + throw a.hash = { + text: "checkout " + r, + token: "checkout " + r, + line: "1", + loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, + expected: ['"branch ' + r + '"'] + }, a; + } else { + G = r; + const a = L[G]; + I = M[a]; + } +}; +function ye(r, a, o) { + const h = r.indexOf(a); + h === -1 ? r.push(o) : r.splice(h, 1, o); +} +function Le(r) { + const a = r.reduce((i, c) => i.seq > c.seq ? i : c, r[0]); + let o = ""; + r.forEach(function(i) { + i === a ? o += " *" : o += " |"; + }); + const h = [o, a.id, a.seq]; + for (let i in L) + L[i] === a.id && h.push(i); + if (B.debug(h.join(" ")), a.parents && a.parents.length == 2) { + const i = M[a.parents[0]]; + ye(r, a, i), r.push(M[a.parents[1]]); + } else { + if (a.parents.length == 0) + return; + { + const i = M[a.parents]; + ye(r, a, i); + } + } + r = Qe(r, (i) => i.id), Le(r); +} +const st = function() { + B.debug(M); + const r = Re()[0]; + Le([r]); +}, at = function() { + M = {}, I = null; + let r = v().gitGraph.mainBranchName, a = v().gitGraph.mainBranchOrder; + L = {}, L[r] = null, ee = {}, ee[r] = { name: r, order: a }, G = r, W = 0, qe(); +}, nt = function() { + return Object.values(ee).map((a, o) => a.order !== null ? a : xe(ke({}, a), { + order: parseFloat(`0.${o}`, 10) + })).sort((a, o) => a.order - o.order).map(({ name: a }) => ({ name: a })); +}, ct = function() { + return L; +}, ot = function() { + return M; +}, Re = function() { + const r = Object.keys(M).map(function(a) { + return M[a]; + }); + return r.forEach(function(a) { + B.debug(a.id); + }), r.sort((a, o) => a.seq - o.seq), r; +}, lt = function() { + return G; +}, ht = function() { + return Ee; +}, mt = function() { + return I; +}, Q = { + NORMAL: 0, + REVERSE: 1, + HIGHLIGHT: 2, + MERGE: 3, + CHERRY_PICK: 4 +}, ut = { + getConfig: () => v().gitGraph, + setDirection: Xe, + setOptions: Ze, + getOptions: $e, + commit: et, + branch: tt, + merge: rt, + cherryPick: it, + checkout: we, + //reset, + prettyPrint: st, + clear: at, + getBranchesAsObjArray: nt, + getBranches: ct, + getCommits: ot, + getCommitsArray: Re, + getCurrentBranch: lt, + getDirection: ht, + getHead: mt, + setAccTitle: He, + getAccTitle: Be, + getAccDescription: Ve, + setAccDescription: De, + setDiagramTitle: ze, + getDiagramTitle: je, + commitType: Q +}; +let Z = {}; +const P = { + NORMAL: 0, + REVERSE: 1, + HIGHLIGHT: 2, + MERGE: 3, + CHERRY_PICK: 4 +}, U = 8; +let H = {}, Y = {}, ne = [], te = 0, w = "LR"; +const ft = () => { + H = {}, Y = {}, Z = {}, te = 0, ne = [], w = "LR"; +}, Me = (r) => { + const a = document.createElementNS("http://www.w3.org/2000/svg", "text"); + let o = []; + typeof r == "string" ? o = r.split(/\\n|\n|/gi) : Array.isArray(r) ? o = r : o = []; + for (const h of o) { + const i = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + i.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), i.setAttribute("dy", "1em"), i.setAttribute("x", "0"), i.setAttribute("class", "row"), i.textContent = h.trim(), a.appendChild(i); + } + return a; +}, pt = (r) => { + let a = "", o = 0; + return r.forEach((h) => { + const i = w === "TB" ? Y[h].y : Y[h].x; + i >= o && (a = h, o = i); + }), a || void 0; +}, _e = (r, a, o) => { + const h = v().gitGraph, i = r.append("g").attr("class", "commit-bullets"), c = r.append("g").attr("class", "commit-labels"); + let b = 0; + w === "TB" && (b = 30); + const x = Object.keys(a).sort((_, g) => a[_].seq - a[g].seq), y = h.parallelCommits, n = 10, C = 40; + x.forEach((_) => { + const g = a[_]; + if (y) + if (g.parents.length) { + const E = pt(g.parents); + b = w === "TB" ? Y[E].y + C : Y[E].x + C; + } else + b = 0, w === "TB" && (b = 30); + const f = b + n, d = w === "TB" ? f : H[g.branch].pos, p = w === "TB" ? H[g.branch].pos : f; + if (o) { + let E, z = g.customType !== void 0 && g.customType !== "" ? g.customType : g.type; + switch (z) { + case P.NORMAL: + E = "commit-normal"; + break; + case P.REVERSE: + E = "commit-reverse"; + break; + case P.HIGHLIGHT: + E = "commit-highlight"; + break; + case P.MERGE: + E = "commit-merge"; + break; + case P.CHERRY_PICK: + E = "commit-cherry-pick"; + break; + default: + E = "commit-normal"; + } + if (z === P.HIGHLIGHT) { + const R = i.append("rect"); + R.attr("x", p - 10), R.attr("y", d - 10), R.attr("height", 20), R.attr("width", 20), R.attr( + "class", + `commit ${g.id} commit-highlight${H[g.branch].index % U} ${E}-outer` + ), i.append("rect").attr("x", p - 6).attr("y", d - 6).attr("height", 12).attr("width", 12).attr( + "class", + `commit ${g.id} commit${H[g.branch].index % U} ${E}-inner` + ); + } else if (z === P.CHERRY_PICK) + i.append("circle").attr("cx", p).attr("cy", d).attr("r", 10).attr("class", `commit ${g.id} ${E}`), i.append("circle").attr("cx", p - 3).attr("cy", d + 2).attr("r", 2.75).attr("fill", "#fff").attr("class", `commit ${g.id} ${E}`), i.append("circle").attr("cx", p + 3).attr("cy", d + 2).attr("r", 2.75).attr("fill", "#fff").attr("class", `commit ${g.id} ${E}`), i.append("line").attr("x1", p + 3).attr("y1", d + 1).attr("x2", p).attr("y2", d - 5).attr("stroke", "#fff").attr("class", `commit ${g.id} ${E}`), i.append("line").attr("x1", p - 3).attr("y1", d + 1).attr("x2", p).attr("y2", d - 5).attr("stroke", "#fff").attr("class", `commit ${g.id} ${E}`); + else { + const R = i.append("circle"); + if (R.attr("cx", p), R.attr("cy", d), R.attr("r", g.type === P.MERGE ? 9 : 10), R.attr( + "class", + `commit ${g.id} commit${H[g.branch].index % U}` + ), z === P.MERGE) { + const A = i.append("circle"); + A.attr("cx", p), A.attr("cy", d), A.attr("r", 6), A.attr( + "class", + `commit ${E} ${g.id} commit${H[g.branch].index % U}` + ); + } + z === P.REVERSE && i.append("path").attr("d", `M ${p - 5},${d - 5}L${p + 5},${d + 5}M${p - 5},${d + 5}L${p + 5},${d - 5}`).attr( + "class", + `commit ${E} ${g.id} commit${H[g.branch].index % U}` + ); + } + } + if (w === "TB" ? Y[g.id] = { x: p, y: f } : Y[g.id] = { x: f, y: d }, o) { + if (g.type !== P.CHERRY_PICK && (g.customId && g.type === P.MERGE || g.type !== P.MERGE) && h.showCommitLabel) { + const R = c.append("g"), A = R.insert("rect").attr("class", "commit-label-bkg"), S = R.append("text").attr("x", b).attr("y", d + 25).attr("class", "commit-label").text(g.id); + let l = S.node().getBBox(); + if (A.attr("x", f - l.width / 2 - 2).attr("y", d + 13.5).attr("width", l.width + 2 * 2).attr("height", l.height + 2 * 2), w === "TB" && (A.attr("x", p - (l.width + 4 * 4 + 5)).attr("y", d - 12), S.attr("x", p - (l.width + 4 * 4)).attr("y", d + l.height - 12)), w !== "TB" && S.attr("x", f - l.width / 2), h.rotateCommitLabel) + if (w === "TB") + S.attr("transform", "rotate(-45, " + p + ", " + d + ")"), A.attr("transform", "rotate(-45, " + p + ", " + d + ")"); + else { + let u = -7.5 - (l.width + 10) / 25 * 9.5, k = 10 + l.width / 25 * 8.5; + R.attr( + "transform", + "translate(" + u + ", " + k + ") rotate(-45, " + b + ", " + d + ")" + ); + } + } + if (g.tag) { + const R = c.insert("polygon"), A = c.append("circle"), S = c.append("text").attr("y", d - 16).attr("class", "tag-label").text(g.tag); + let l = S.node().getBBox(); + S.attr("x", f - l.width / 2); + const u = l.height / 2, k = d - 19.2; + R.attr("class", "tag-label-bkg").attr( + "points", + ` + ${b - l.width / 2 - 4 / 2},${k + 2} + ${b - l.width / 2 - 4 / 2},${k - 2} + ${f - l.width / 2 - 4},${k - u - 2} + ${f + l.width / 2 + 4},${k - u - 2} + ${f + l.width / 2 + 4},${k + u + 2} + ${f - l.width / 2 - 4},${k + u + 2}` + ), A.attr("cx", b - l.width / 2 + 4 / 2).attr("cy", k).attr("r", 1.5).attr("class", "tag-hole"), w === "TB" && (R.attr("class", "tag-label-bkg").attr( + "points", + ` + ${p},${b + 2} + ${p},${b - 2} + ${p + n},${b - u - 2} + ${p + n + l.width + 4},${b - u - 2} + ${p + n + l.width + 4},${b + u + 2} + ${p + n},${b + u + 2}` + ).attr("transform", "translate(12,12) rotate(45, " + p + "," + b + ")"), A.attr("cx", p + 4 / 2).attr("cy", b).attr("transform", "translate(12,12) rotate(45, " + p + "," + b + ")"), S.attr("x", p + 5).attr("y", b + 3).attr("transform", "translate(14,14) rotate(45, " + p + "," + b + ")")); + } + } + b += C + n, b > te && (te = b); + }); +}, bt = (r, a, o, h, i) => { + const b = (w === "TB" ? o.x < h.x : o.y < h.y) ? a.branch : r.branch, m = (y) => y.branch === b, x = (y) => y.seq > r.seq && y.seq < a.seq; + return Object.values(i).some((y) => x(y) && m(y)); +}, $ = (r, a, o = 0) => { + const h = r + Math.abs(r - a) / 2; + if (o > 5) + return h; + if (ne.every((b) => Math.abs(b - h) >= 10)) + return ne.push(h), h; + const c = Math.abs(r - a); + return $(r, a - c / 5, o + 1); +}, gt = (r, a, o, h) => { + const i = Y[a.id], c = Y[o.id], b = bt(a, o, i, c, h); + let m = "", x = "", y = 0, n = 0, C = H[o.branch].index; + o.type === P.MERGE && a.id !== o.parents[0] && (C = H[a.branch].index); + let _; + if (b) { + m = "A 10 10, 0, 0, 0,", x = "A 10 10, 0, 0, 1,", y = 10, n = 10; + const g = i.y < c.y ? $(i.y, c.y) : $(c.y, i.y), f = i.x < c.x ? $(i.x, c.x) : $(c.x, i.x); + w === "TB" ? i.x < c.x ? _ = `M ${i.x} ${i.y} L ${f - y} ${i.y} ${x} ${f} ${i.y + n} L ${f} ${c.y - y} ${m} ${f + n} ${c.y} L ${c.x} ${c.y}` : (C = H[a.branch].index, _ = `M ${i.x} ${i.y} L ${f + y} ${i.y} ${m} ${f} ${i.y + n} L ${f} ${c.y - y} ${x} ${f - n} ${c.y} L ${c.x} ${c.y}`) : i.y < c.y ? _ = `M ${i.x} ${i.y} L ${i.x} ${g - y} ${m} ${i.x + n} ${g} L ${c.x - y} ${g} ${x} ${c.x} ${g + n} L ${c.x} ${c.y}` : (C = H[a.branch].index, _ = `M ${i.x} ${i.y} L ${i.x} ${g + y} ${x} ${i.x + n} ${g} L ${c.x - y} ${g} ${m} ${c.x} ${g - n} L ${c.x} ${c.y}`); + } else + m = "A 20 20, 0, 0, 0,", x = "A 20 20, 0, 0, 1,", y = 20, n = 20, w === "TB" ? (i.x < c.x && (o.type === P.MERGE && a.id !== o.parents[0] ? _ = `M ${i.x} ${i.y} L ${i.x} ${c.y - y} ${m} ${i.x + n} ${c.y} L ${c.x} ${c.y}` : _ = `M ${i.x} ${i.y} L ${c.x - y} ${i.y} ${x} ${c.x} ${i.y + n} L ${c.x} ${c.y}`), i.x > c.x && (m = "A 20 20, 0, 0, 0,", x = "A 20 20, 0, 0, 1,", y = 20, n = 20, o.type === P.MERGE && a.id !== o.parents[0] ? _ = `M ${i.x} ${i.y} L ${i.x} ${c.y - y} ${x} ${i.x - n} ${c.y} L ${c.x} ${c.y}` : _ = `M ${i.x} ${i.y} L ${c.x + y} ${i.y} ${m} ${c.x} ${i.y + n} L ${c.x} ${c.y}`), i.x === c.x && (_ = `M ${i.x} ${i.y} L ${c.x} ${c.y}`)) : (i.y < c.y && (o.type === P.MERGE && a.id !== o.parents[0] ? _ = `M ${i.x} ${i.y} L ${c.x - y} ${i.y} ${x} ${c.x} ${i.y + n} L ${c.x} ${c.y}` : _ = `M ${i.x} ${i.y} L ${i.x} ${c.y - y} ${m} ${i.x + n} ${c.y} L ${c.x} ${c.y}`), i.y > c.y && (o.type === P.MERGE && a.id !== o.parents[0] ? _ = `M ${i.x} ${i.y} L ${c.x - y} ${i.y} ${m} ${c.x} ${i.y - n} L ${c.x} ${c.y}` : _ = `M ${i.x} ${i.y} L ${i.x} ${c.y + y} ${x} ${i.x + n} ${c.y} L ${c.x} ${c.y}`), i.y === c.y && (_ = `M ${i.x} ${i.y} L ${c.x} ${c.y}`)); + r.append("path").attr("d", _).attr("class", "arrow arrow" + C % U); +}, dt = (r, a) => { + const o = r.append("g").attr("class", "commit-arrows"); + Object.keys(a).forEach((h) => { + const i = a[h]; + i.parents && i.parents.length > 0 && i.parents.forEach((c) => { + gt(o, a[c], i, a); + }); + }); +}, kt = (r, a) => { + const o = v().gitGraph, h = r.append("g"); + a.forEach((i, c) => { + const b = c % U, m = H[i.name].pos, x = h.append("line"); + x.attr("x1", 0), x.attr("y1", m), x.attr("x2", te), x.attr("y2", m), x.attr("class", "branch branch" + b), w === "TB" && (x.attr("y1", 30), x.attr("x1", m), x.attr("y2", te), x.attr("x2", m)), ne.push(m); + let y = i.name; + const n = Me(y), C = h.insert("rect"), g = h.insert("g").attr("class", "branchLabel").insert("g").attr("class", "label branch-label" + b); + g.node().appendChild(n); + let f = n.getBBox(); + C.attr("class", "branchLabelBkg label" + b).attr("rx", 4).attr("ry", 4).attr("x", -f.width - 4 - (o.rotateCommitLabel === !0 ? 30 : 0)).attr("y", -f.height / 2 + 8).attr("width", f.width + 18).attr("height", f.height + 4), g.attr( + "transform", + "translate(" + (-f.width - 14 - (o.rotateCommitLabel === !0 ? 30 : 0)) + ", " + (m - f.height / 2 - 1) + ")" + ), w === "TB" && (C.attr("x", m - f.width / 2 - 10).attr("y", 0), g.attr("transform", "translate(" + (m - f.width / 2 - 5) + ", 0)")), w !== "TB" && C.attr("transform", "translate(-19, " + (m - f.height / 2) + ")"); + }); +}, xt = function(r, a, o, h) { + var y; + ft(); + const i = v(), c = i.gitGraph; + B.debug("in gitgraph renderer", r + ` +`, "id:", a, o), Z = h.db.getCommits(); + const b = h.db.getBranchesAsObjArray(); + w = h.db.getDirection(); + const m = Ye(`[id="${a}"]`); + let x = 0; + b.forEach((n, C) => { + const _ = Me(n.name), g = m.append("g"), f = g.insert("g").attr("class", "branchLabel"), d = f.insert("g").attr("class", "label branch-label"); + d.node().appendChild(_); + let p = _.getBBox(); + H[n.name] = { pos: x, index: C }, x += 50 + (c.rotateCommitLabel ? 40 : 0) + (w === "TB" ? p.width / 2 : 0), d.remove(), f.remove(), g.remove(); + }), _e(m, Z, !1), c.showBranches && kt(m, b), dt(m, Z), _e(m, Z, !0), Fe.insertTitle( + m, + "gitTitleText", + c.titleTopMargin, + h.db.getDiagramTitle() + ), Ke( + void 0, + m, + c.diagramPadding, + (y = c.useMaxWidth) != null ? y : i.useMaxWidth + ); +}, yt = { + draw: xt +}, _t = (r) => ` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0, 1, 2, 3, 4, 5, 6, 7].map( + (a) => ` + .branch-label${a} { fill: ${r["gitBranchLabel" + a]}; } + .commit${a} { stroke: ${r["git" + a]}; fill: ${r["git" + a]}; } + .commit-highlight${a} { stroke: ${r["gitInv" + a]}; fill: ${r["gitInv" + a]}; } + .label${a} { fill: ${r["git" + a]}; } + .arrow${a} { stroke: ${r["git" + a]}; } + ` +).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${r.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${r.commitLabelFontSize}; fill: ${r.commitLabelColor};} + .commit-label-bkg { font-size: ${r.commitLabelFontSize}; fill: ${r.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${r.tagLabelFontSize}; fill: ${r.tagLabelColor};} + .tag-label-bkg { fill: ${r.tagLabelBackground}; stroke: ${r.tagLabelBorder}; } + .tag-hole { fill: ${r.textColor}; } + + .commit-merge { + stroke: ${r.primaryColor}; + fill: ${r.primaryColor}; + } + .commit-reverse { + stroke: ${r.primaryColor}; + fill: ${r.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${r.primaryColor}; + fill: ${r.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${r.textColor}; + } +`, Et = _t, Lt = { + parser: We, + db: ut, + renderer: yt, + styles: Et +}; +export { + Lt as diagram +}; diff --git a/client/packages/lowcoder/public/package/35fb67fd.js b/client/packages/lowcoder/public/package/35fb67fd.js new file mode 100644 index 000000000..4d72fc2eb --- /dev/null +++ b/client/packages/lowcoder/public/package/35fb67fd.js @@ -0,0 +1,19104 @@ +var Li = (t, e, r) => new Promise((a, n) => { + var i = (l) => { + try { + o(r.next(l)); + } catch (u) { + n(u); + } + }, s = (l) => { + try { + o(r.throw(l)); + } catch (u) { + n(u); + } + }, o = (l) => l.done ? a(l.value) : Promise.resolve(l.value).then(i, s); + o((r = r.apply(t, e)).next()); +}); +import { c as Vt, g as Xs, l as ur, e as Qn, U as Ul, v as Hl, W as _a, f as Ua, j as Yl, at as Xl, au as Wl, av as ql, Y as Kl } from "./08856db2.js"; +import { a as Zl } from "./f69b998c.js"; +function Ql(t) { + var e = typeof t; + return t != null && (e == "object" || e == "function"); +} +var la = Ql, Jl = typeof Vt == "object" && Vt && Vt.Object === Object && Vt, jl = Jl, eu = jl, tu = typeof self == "object" && self && self.Object === Object && self, ru = eu || tu || Function("return this")(), tn = ru, au = tn, nu = function() { + return au.Date.now(); +}, iu = nu, su = /\s/; +function ou(t) { + for (var e = t.length; e-- && su.test(t.charAt(e)); ) + ; + return e; +} +var lu = ou, uu = lu, fu = /^\s+/; +function hu(t) { + return t && t.slice(0, uu(t) + 1).replace(fu, ""); +} +var vu = hu, cu = tn, du = cu.Symbol, Jn = du, Ai = Jn, Ws = Object.prototype, gu = Ws.hasOwnProperty, pu = Ws.toString, Vr = Ai ? Ai.toStringTag : void 0; +function yu(t) { + var e = gu.call(t, Vr), r = t[Vr]; + try { + t[Vr] = void 0; + var a = !0; + } catch (i) { + } + var n = pu.call(t); + return a && (e ? t[Vr] = r : delete t[Vr]), n; +} +var mu = yu, bu = Object.prototype, Eu = bu.toString; +function wu(t) { + return Eu.call(t); +} +var xu = wu, Oi = Jn, Tu = mu, Cu = xu, Du = "[object Null]", Su = "[object Undefined]", Ni = Oi ? Oi.toStringTag : void 0; +function Lu(t) { + return t == null ? t === void 0 ? Su : Du : Ni && Ni in Object(t) ? Tu(t) : Cu(t); +} +var qs = Lu; +function Au(t) { + return t != null && typeof t == "object"; +} +var Ou = Au, Nu = qs, Iu = Ou, Mu = "[object Symbol]"; +function Ru(t) { + return typeof t == "symbol" || Iu(t) && Nu(t) == Mu; +} +var ua = Ru, ku = vu, Ii = la, Pu = ua, Mi = 0 / 0, Bu = /^[-+]0x[0-9a-f]+$/i, Fu = /^0b[01]+$/i, Gu = /^0o[0-7]+$/i, zu = parseInt; +function $u(t) { + if (typeof t == "number") + return t; + if (Pu(t)) + return Mi; + if (Ii(t)) { + var e = typeof t.valueOf == "function" ? t.valueOf() : t; + t = Ii(e) ? e + "" : e; + } + if (typeof t != "string") + return t === 0 ? t : +t; + t = ku(t); + var r = Fu.test(t); + return r || Gu.test(t) ? zu(t.slice(2), r ? 2 : 8) : Bu.test(t) ? Mi : +t; +} +var Vu = $u, _u = la, Tn = iu, Ri = Vu, Uu = "Expected a function", Hu = Math.max, Yu = Math.min; +function Xu(t, e, r) { + var a, n, i, s, o, l, u = 0, f = !1, h = !1, c = !0; + if (typeof t != "function") + throw new TypeError(Uu); + e = Ri(e) || 0, _u(r) && (f = !!r.leading, h = "maxWait" in r, i = h ? Hu(Ri(r.maxWait) || 0, e) : i, c = "trailing" in r ? !!r.trailing : c); + function v(S) { + var b = a, x = n; + return a = n = void 0, u = S, s = t.apply(x, b), s; + } + function d(S) { + return u = S, o = setTimeout(y, e), f ? v(S) : s; + } + function g(S) { + var b = S - l, x = S - u, w = e - b; + return h ? Yu(w, i - x) : w; + } + function p(S) { + var b = S - l, x = S - u; + return l === void 0 || b >= e || b < 0 || h && x >= i; + } + function y() { + var S = Tn(); + if (p(S)) + return E(S); + o = setTimeout(y, g(S)); + } + function E(S) { + return o = void 0, c && a ? v(S) : (a = n = void 0, s); + } + function m() { + o !== void 0 && clearTimeout(o), u = 0, a = l = n = o = void 0; + } + function T() { + return o === void 0 ? s : E(Tn()); + } + function C() { + var S = Tn(), b = p(S); + if (a = arguments, n = this, l = S, b) { + if (o === void 0) + return d(l); + if (h) + return clearTimeout(o), o = setTimeout(y, e), v(l); + } + return o === void 0 && (o = setTimeout(y, e)), s; + } + return C.cancel = m, C.flush = T, C; +} +var Wu = Xu, Ks = { exports: {} }; +(function(t, e) { + (function() { + var r, a, n, i, s, o, l, u, f, h, c, v, d, g, p; + n = Math.floor, h = Math.min, a = function(y, E) { + return y < E ? -1 : y > E ? 1 : 0; + }, f = function(y, E, m, T, C) { + var S; + if (m == null && (m = 0), C == null && (C = a), m < 0) + throw new Error("lo must be non-negative"); + for (T == null && (T = y.length); m < T; ) + S = n((m + T) / 2), C(E, y[S]) < 0 ? T = S : m = S + 1; + return [].splice.apply(y, [m, m - m].concat(E)), E; + }, o = function(y, E, m) { + return m == null && (m = a), y.push(E), g(y, 0, y.length - 1, m); + }, s = function(y, E) { + var m, T; + return E == null && (E = a), m = y.pop(), y.length ? (T = y[0], y[0] = m, p(y, 0, E)) : T = m, T; + }, u = function(y, E, m) { + var T; + return m == null && (m = a), T = y[0], y[0] = E, p(y, 0, m), T; + }, l = function(y, E, m) { + var T; + return m == null && (m = a), y.length && m(y[0], E) < 0 && (T = [y[0], E], E = T[0], y[0] = T[1], p(y, 0, m)), E; + }, i = function(y, E) { + var m, T, C, S, b, x; + for (E == null && (E = a), S = function() { + x = []; + for (var w = 0, D = n(y.length / 2); 0 <= D ? w < D : w > D; 0 <= D ? w++ : w--) + x.push(w); + return x; + }.apply(this).reverse(), b = [], T = 0, C = S.length; T < C; T++) + m = S[T], b.push(p(y, m, E)); + return b; + }, d = function(y, E, m) { + var T; + if (m == null && (m = a), T = y.indexOf(E), T !== -1) + return g(y, 0, T, m), p(y, T, m); + }, c = function(y, E, m) { + var T, C, S, b, x; + if (m == null && (m = a), C = y.slice(0, E), !C.length) + return C; + for (i(C, m), x = y.slice(E), S = 0, b = x.length; S < b; S++) + T = x[S], l(C, T, m); + return C.sort(m).reverse(); + }, v = function(y, E, m) { + var T, C, S, b, x, w, D, A, L; + if (m == null && (m = a), E * 10 <= y.length) { + if (S = y.slice(0, E).sort(m), !S.length) + return S; + for (C = S[S.length - 1], D = y.slice(E), b = 0, w = D.length; b < w; b++) + T = D[b], m(T, C) < 0 && (f(S, T, 0, null, m), S.pop(), C = S[S.length - 1]); + return S; + } + for (i(y, m), L = [], x = 0, A = h(E, y.length); 0 <= A ? x < A : x > A; 0 <= A ? ++x : --x) + L.push(s(y, m)); + return L; + }, g = function(y, E, m, T) { + var C, S, b; + for (T == null && (T = a), C = y[m]; m > E; ) { + if (b = m - 1 >> 1, S = y[b], T(C, S) < 0) { + y[m] = S, m = b; + continue; + } + break; + } + return y[m] = C; + }, p = function(y, E, m) { + var T, C, S, b, x; + for (m == null && (m = a), C = y.length, x = E, S = y[E], T = 2 * E + 1; T < C; ) + b = T + 1, b < C && !(m(y[T], y[b]) < 0) && (T = b), y[E] = y[T], E = T, T = 2 * E + 1; + return y[E] = S, g(y, x, E, m); + }, r = function() { + y.push = o, y.pop = s, y.replace = u, y.pushpop = l, y.heapify = i, y.updateItem = d, y.nlargest = c, y.nsmallest = v; + function y(E) { + this.cmp = E != null ? E : a, this.nodes = []; + } + return y.prototype.push = function(E) { + return o(this.nodes, E, this.cmp); + }, y.prototype.pop = function() { + return s(this.nodes, this.cmp); + }, y.prototype.peek = function() { + return this.nodes[0]; + }, y.prototype.contains = function(E) { + return this.nodes.indexOf(E) !== -1; + }, y.prototype.replace = function(E) { + return u(this.nodes, E, this.cmp); + }, y.prototype.pushpop = function(E) { + return l(this.nodes, E, this.cmp); + }, y.prototype.heapify = function() { + return i(this.nodes, this.cmp); + }, y.prototype.updateItem = function(E) { + return d(this.nodes, E, this.cmp); + }, y.prototype.clear = function() { + return this.nodes = []; + }, y.prototype.empty = function() { + return this.nodes.length === 0; + }, y.prototype.size = function() { + return this.nodes.length; + }, y.prototype.clone = function() { + var E; + return E = new y(), E.nodes = this.nodes.slice(0), E; + }, y.prototype.toArray = function() { + return this.nodes.slice(0); + }, y.prototype.insert = y.prototype.push, y.prototype.top = y.prototype.peek, y.prototype.front = y.prototype.peek, y.prototype.has = y.prototype.contains, y.prototype.copy = y.prototype.clone, y; + }(), function(y, E) { + return t.exports = E(); + }(this, function() { + return r; + }); + }).call(Vt); +})(Ks); +var qu = Ks.exports, Ku = qu, Zu = Array.isArray, rn = Zu, Qu = rn, Ju = ua, ju = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, ef = /^\w*$/; +function tf(t, e) { + if (Qu(t)) + return !1; + var r = typeof t; + return r == "number" || r == "symbol" || r == "boolean" || t == null || Ju(t) ? !0 : ef.test(t) || !ju.test(t) || e != null && t in Object(e); +} +var rf = tf, af = qs, nf = la, sf = "[object AsyncFunction]", of = "[object Function]", lf = "[object GeneratorFunction]", uf = "[object Proxy]"; +function ff(t) { + if (!nf(t)) + return !1; + var e = af(t); + return e == of || e == lf || e == sf || e == uf; +} +var hf = ff, vf = tn, cf = vf["__core-js_shared__"], df = cf, Cn = df, ki = function() { + var t = /[^.]+$/.exec(Cn && Cn.keys && Cn.keys.IE_PROTO || ""); + return t ? "Symbol(src)_1." + t : ""; +}(); +function gf(t) { + return !!ki && ki in t; +} +var pf = gf, yf = Function.prototype, mf = yf.toString; +function bf(t) { + if (t != null) { + try { + return mf.call(t); + } catch (e) { + } + try { + return t + ""; + } catch (e) { + } + } + return ""; +} +var Ef = bf, wf = hf, xf = pf, Tf = la, Cf = Ef, Df = /[\\^$.*+?()[\]{}|]/g, Sf = /^\[object .+?Constructor\]$/, Lf = Function.prototype, Af = Object.prototype, Of = Lf.toString, Nf = Af.hasOwnProperty, If = RegExp( + "^" + Of.call(Nf).replace(Df, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" +); +function Mf(t) { + if (!Tf(t) || xf(t)) + return !1; + var e = wf(t) ? If : Sf; + return e.test(Cf(t)); +} +var Rf = Mf; +function kf(t, e) { + return t == null ? void 0 : t[e]; +} +var Pf = kf, Bf = Rf, Ff = Pf; +function Gf(t, e) { + var r = Ff(t, e); + return Bf(r) ? r : void 0; +} +var jn = Gf, zf = jn, $f = zf(Object, "create"), an = $f, Pi = an; +function Vf() { + this.__data__ = Pi ? Pi(null) : {}, this.size = 0; +} +var _f = Vf; +function Uf(t) { + var e = this.has(t) && delete this.__data__[t]; + return this.size -= e ? 1 : 0, e; +} +var Hf = Uf, Yf = an, Xf = "__lodash_hash_undefined__", Wf = Object.prototype, qf = Wf.hasOwnProperty; +function Kf(t) { + var e = this.__data__; + if (Yf) { + var r = e[t]; + return r === Xf ? void 0 : r; + } + return qf.call(e, t) ? e[t] : void 0; +} +var Zf = Kf, Qf = an, Jf = Object.prototype, jf = Jf.hasOwnProperty; +function eh(t) { + var e = this.__data__; + return Qf ? e[t] !== void 0 : jf.call(e, t); +} +var th = eh, rh = an, ah = "__lodash_hash_undefined__"; +function nh(t, e) { + var r = this.__data__; + return this.size += this.has(t) ? 0 : 1, r[t] = rh && e === void 0 ? ah : e, this; +} +var ih = nh, sh = _f, oh = Hf, lh = Zf, uh = th, fh = ih; +function Or(t) { + var e = -1, r = t == null ? 0 : t.length; + for (this.clear(); ++e < r; ) { + var a = t[e]; + this.set(a[0], a[1]); + } +} +Or.prototype.clear = sh; +Or.prototype.delete = oh; +Or.prototype.get = lh; +Or.prototype.has = uh; +Or.prototype.set = fh; +var hh = Or; +function vh() { + this.__data__ = [], this.size = 0; +} +var ch = vh; +function dh(t, e) { + return t === e || t !== t && e !== e; +} +var Zs = dh, gh = Zs; +function ph(t, e) { + for (var r = t.length; r--; ) + if (gh(t[r][0], e)) + return r; + return -1; +} +var nn = ph, yh = nn, mh = Array.prototype, bh = mh.splice; +function Eh(t) { + var e = this.__data__, r = yh(e, t); + if (r < 0) + return !1; + var a = e.length - 1; + return r == a ? e.pop() : bh.call(e, r, 1), --this.size, !0; +} +var wh = Eh, xh = nn; +function Th(t) { + var e = this.__data__, r = xh(e, t); + return r < 0 ? void 0 : e[r][1]; +} +var Ch = Th, Dh = nn; +function Sh(t) { + return Dh(this.__data__, t) > -1; +} +var Lh = Sh, Ah = nn; +function Oh(t, e) { + var r = this.__data__, a = Ah(r, t); + return a < 0 ? (++this.size, r.push([t, e])) : r[a][1] = e, this; +} +var Nh = Oh, Ih = ch, Mh = wh, Rh = Ch, kh = Lh, Ph = Nh; +function Nr(t) { + var e = -1, r = t == null ? 0 : t.length; + for (this.clear(); ++e < r; ) { + var a = t[e]; + this.set(a[0], a[1]); + } +} +Nr.prototype.clear = Ih; +Nr.prototype.delete = Mh; +Nr.prototype.get = Rh; +Nr.prototype.has = kh; +Nr.prototype.set = Ph; +var Bh = Nr, Fh = jn, Gh = tn, zh = Fh(Gh, "Map"), $h = zh, Bi = hh, Vh = Bh, _h = $h; +function Uh() { + this.size = 0, this.__data__ = { + hash: new Bi(), + map: new (_h || Vh)(), + string: new Bi() + }; +} +var Hh = Uh; +function Yh(t) { + var e = typeof t; + return e == "string" || e == "number" || e == "symbol" || e == "boolean" ? t !== "__proto__" : t === null; +} +var Xh = Yh, Wh = Xh; +function qh(t, e) { + var r = t.__data__; + return Wh(e) ? r[typeof e == "string" ? "string" : "hash"] : r.map; +} +var sn = qh, Kh = sn; +function Zh(t) { + var e = Kh(this, t).delete(t); + return this.size -= e ? 1 : 0, e; +} +var Qh = Zh, Jh = sn; +function jh(t) { + return Jh(this, t).get(t); +} +var ev = jh, tv = sn; +function rv(t) { + return tv(this, t).has(t); +} +var av = rv, nv = sn; +function iv(t, e) { + var r = nv(this, t), a = r.size; + return r.set(t, e), this.size += r.size == a ? 0 : 1, this; +} +var sv = iv, ov = Hh, lv = Qh, uv = ev, fv = av, hv = sv; +function Ir(t) { + var e = -1, r = t == null ? 0 : t.length; + for (this.clear(); ++e < r; ) { + var a = t[e]; + this.set(a[0], a[1]); + } +} +Ir.prototype.clear = ov; +Ir.prototype.delete = lv; +Ir.prototype.get = uv; +Ir.prototype.has = fv; +Ir.prototype.set = hv; +var vv = Ir, Qs = vv, cv = "Expected a function"; +function ei(t, e) { + if (typeof t != "function" || e != null && typeof e != "function") + throw new TypeError(cv); + var r = function() { + var a = arguments, n = e ? e.apply(this, a) : a[0], i = r.cache; + if (i.has(n)) + return i.get(n); + var s = t.apply(this, a); + return r.cache = i.set(n, s) || i, s; + }; + return r.cache = new (ei.Cache || Qs)(), r; +} +ei.Cache = Qs; +var dv = ei, gv = dv, pv = 500; +function yv(t) { + var e = gv(t, function(a) { + return r.size === pv && r.clear(), a; + }), r = e.cache; + return e; +} +var mv = yv, bv = mv, Ev = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, wv = /\\(\\)?/g, xv = bv(function(t) { + var e = []; + return t.charCodeAt(0) === 46 && e.push(""), t.replace(Ev, function(r, a, n, i) { + e.push(n ? i.replace(wv, "$1") : a || r); + }), e; +}), Js = xv; +function Tv(t, e) { + for (var r = -1, a = t == null ? 0 : t.length, n = Array(a); ++r < a; ) + n[r] = e(t[r], r, t); + return n; +} +var js = Tv, Fi = Jn, Cv = js, Dv = rn, Sv = ua, Lv = 1 / 0, Gi = Fi ? Fi.prototype : void 0, zi = Gi ? Gi.toString : void 0; +function eo(t) { + if (typeof t == "string") + return t; + if (Dv(t)) + return Cv(t, eo) + ""; + if (Sv(t)) + return zi ? zi.call(t) : ""; + var e = t + ""; + return e == "0" && 1 / t == -Lv ? "-0" : e; +} +var Av = eo, Ov = Av; +function Nv(t) { + return t == null ? "" : Ov(t); +} +var to = Nv, Iv = rn, Mv = rf, Rv = Js, kv = to; +function Pv(t, e) { + return Iv(t) ? t : Mv(t, e) ? [t] : Rv(kv(t)); +} +var ro = Pv, Bv = ua, Fv = 1 / 0; +function Gv(t) { + if (typeof t == "string" || Bv(t)) + return t; + var e = t + ""; + return e == "0" && 1 / t == -Fv ? "-0" : e; +} +var ti = Gv, zv = ro, $v = ti; +function Vv(t, e) { + e = zv(e, t); + for (var r = 0, a = e.length; t != null && r < a; ) + t = t[$v(e[r++])]; + return r && r == a ? t : void 0; +} +var _v = Vv, Uv = _v; +function Hv(t, e, r) { + var a = t == null ? void 0 : Uv(t, e); + return a === void 0 ? r : a; +} +var Yv = Hv, Xv = jn, Wv = function() { + try { + var t = Xv(Object, "defineProperty"); + return t({}, "", {}), t; + } catch (e) { + } +}(), qv = Wv, $i = qv; +function Kv(t, e, r) { + e == "__proto__" && $i ? $i(t, e, { + configurable: !0, + enumerable: !0, + value: r, + writable: !0 + }) : t[e] = r; +} +var Zv = Kv, Qv = Zv, Jv = Zs, jv = Object.prototype, ec = jv.hasOwnProperty; +function tc(t, e, r) { + var a = t[e]; + (!(ec.call(t, e) && Jv(a, r)) || r === void 0 && !(e in t)) && Qv(t, e, r); +} +var rc = tc, ac = 9007199254740991, nc = /^(?:0|[1-9]\d*)$/; +function ic(t, e) { + var r = typeof t; + return e = e == null ? ac : e, !!e && (r == "number" || r != "symbol" && nc.test(t)) && t > -1 && t % 1 == 0 && t < e; +} +var sc = ic, oc = rc, lc = ro, uc = sc, Vi = la, fc = ti; +function hc(t, e, r, a) { + if (!Vi(t)) + return t; + e = lc(e, t); + for (var n = -1, i = e.length, s = i - 1, o = t; o != null && ++n < i; ) { + var l = fc(e[n]), u = r; + if (l === "__proto__" || l === "constructor" || l === "prototype") + return t; + if (n != s) { + var f = o[l]; + u = a ? a(f, l, o) : void 0, u === void 0 && (u = Vi(f) ? f : uc(e[n + 1]) ? [] : {}); + } + oc(o, l, u), o = o[l]; + } + return t; +} +var vc = hc, cc = vc; +function dc(t, e, r) { + return t == null ? t : cc(t, e, r); +} +var gc = dc; +function pc(t, e) { + var r = -1, a = t.length; + for (e || (e = Array(a)); ++r < a; ) + e[r] = t[r]; + return e; +} +var yc = pc, mc = js, bc = yc, Ec = rn, wc = ua, xc = Js, Tc = ti, Cc = to; +function Dc(t) { + return Ec(t) ? mc(t, Tc) : wc(t) ? [t] : bc(xc(Cc(t))); +} +var Sc = Dc, Lc = Wu, Ac = Ku, Oc = Yv, Nc = gc, Ic = Sc; +function fa(t) { + return t && typeof t == "object" && "default" in t ? t : { default: t }; +} +var on = /* @__PURE__ */ fa(Lc), ha = /* @__PURE__ */ fa(Ac), Mc = /* @__PURE__ */ fa(Oc), Rc = /* @__PURE__ */ fa(Nc), kc = /* @__PURE__ */ fa(Ic); +function Ue(t) { + "@babel/helpers - typeof"; + return Ue = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) { + return typeof e; + } : function(e) { + return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e; + }, Ue(t); +} +function ri(t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function"); +} +function _i(t, e) { + for (var r = 0; r < e.length; r++) { + var a = e[r]; + a.enumerable = a.enumerable || !1, a.configurable = !0, "value" in a && (a.writable = !0), Object.defineProperty(t, a.key, a); + } +} +function ai(t, e, r) { + return e && _i(t.prototype, e), r && _i(t, r), Object.defineProperty(t, "prototype", { + writable: !1 + }), t; +} +function ao(t, e, r) { + return e in t ? Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }) : t[e] = r, t; +} +function Et(t, e) { + return Pc(t) || Bc(t, e) || Fc(t, e) || Gc(); +} +function Pc(t) { + if (Array.isArray(t)) + return t; +} +function Bc(t, e) { + var r = t == null ? null : typeof Symbol != "undefined" && t[Symbol.iterator] || t["@@iterator"]; + if (r != null) { + var a = [], n = !0, i = !1, s, o; + try { + for (r = r.call(t); !(n = (s = r.next()).done) && (a.push(s.value), !(e && a.length === e)); n = !0) + ; + } catch (l) { + i = !0, o = l; + } finally { + try { + !n && r.return != null && r.return(); + } finally { + if (i) + throw o; + } + } + return a; + } +} +function Fc(t, e) { + if (t) { + if (typeof t == "string") + return Ui(t, e); + var r = Object.prototype.toString.call(t).slice(8, -1); + if (r === "Object" && t.constructor && (r = t.constructor.name), r === "Map" || r === "Set") + return Array.from(t); + if (r === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) + return Ui(t, e); + } +} +function Ui(t, e) { + (e == null || e > t.length) && (e = t.length); + for (var r = 0, a = new Array(e); r < e; r++) + a[r] = t[r]; + return a; +} +function Gc() { + throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); +} +var $e = typeof window == "undefined" ? null : window, Hi = $e ? $e.navigator : null; +$e && $e.document; +var zc = Ue(""), no = Ue({}), $c = Ue(function() { +}), Vc = typeof HTMLElement == "undefined" ? "undefined" : Ue(HTMLElement), va = function(e) { + return e && e.instanceString && Be(e.instanceString) ? e.instanceString() : null; +}, ve = function(e) { + return e != null && Ue(e) == zc; +}, Be = function(e) { + return e != null && Ue(e) === $c; +}, Me = function(e) { + return !ht(e) && (Array.isArray ? Array.isArray(e) : e != null && e instanceof Array); +}, De = function(e) { + return e != null && Ue(e) === no && !Me(e) && e.constructor === Object; +}, _c = function(e) { + return e != null && Ue(e) === no; +}, ae = function(e) { + return e != null && Ue(e) === Ue(1) && !isNaN(e); +}, Uc = function(e) { + return ae(e) && Math.floor(e) === e; +}, Ha = function(e) { + if (Vc !== "undefined") + return e != null && e instanceof HTMLElement; +}, ht = function(e) { + return ca(e) || io(e); +}, ca = function(e) { + return va(e) === "collection" && e._private.single; +}, io = function(e) { + return va(e) === "collection" && !e._private.single; +}, ni = function(e) { + return va(e) === "core"; +}, so = function(e) { + return va(e) === "stylesheet"; +}, Hc = function(e) { + return va(e) === "event"; +}, Yt = function(e) { + return e == null ? !0 : !!(e === "" || e.match(/^\s+$/)); +}, Yc = function(e) { + return typeof HTMLElement == "undefined" ? !1 : e instanceof HTMLElement; +}, Xc = function(e) { + return De(e) && ae(e.x1) && ae(e.x2) && ae(e.y1) && ae(e.y2); +}, Wc = function(e) { + return _c(e) && Be(e.then); +}, qc = function() { + return Hi && Hi.userAgent.match(/msie|trident|edge/i); +}, Jr = function(e, r) { + r || (r = function() { + if (arguments.length === 1) + return arguments[0]; + if (arguments.length === 0) + return "undefined"; + for (var i = [], s = 0; s < arguments.length; s++) + i.push(arguments[s]); + return i.join("$"); + }); + var a = function n() { + var i = this, s = arguments, o, l = r.apply(i, s), u = n.cache; + return (o = u[l]) || (o = u[l] = e.apply(i, s)), o; + }; + return a.cache = {}, a; +}, ii = Jr(function(t) { + return t.replace(/([A-Z])/g, function(e) { + return "-" + e.toLowerCase(); + }); +}), ln = Jr(function(t) { + return t.replace(/(-\w)/g, function(e) { + return e[1].toUpperCase(); + }); +}), oo = Jr(function(t, e) { + return t + e[0].toUpperCase() + e.substring(1); +}, function(t, e) { + return t + "$" + e; +}), Yi = function(e) { + return Yt(e) ? e : e.charAt(0).toUpperCase() + e.substring(1); +}, _e = "(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))", Kc = "rgb[a]?\\((" + _e + "[%]?)\\s*,\\s*(" + _e + "[%]?)\\s*,\\s*(" + _e + "[%]?)(?:\\s*,\\s*(" + _e + "))?\\)", Zc = "rgb[a]?\\((?:" + _e + "[%]?)\\s*,\\s*(?:" + _e + "[%]?)\\s*,\\s*(?:" + _e + "[%]?)(?:\\s*,\\s*(?:" + _e + "))?\\)", Qc = "hsl[a]?\\((" + _e + ")\\s*,\\s*(" + _e + "[%])\\s*,\\s*(" + _e + "[%])(?:\\s*,\\s*(" + _e + "))?\\)", Jc = "hsl[a]?\\((?:" + _e + ")\\s*,\\s*(?:" + _e + "[%])\\s*,\\s*(?:" + _e + "[%])(?:\\s*,\\s*(?:" + _e + "))?\\)", jc = "\\#[0-9a-fA-F]{3}", ed = "\\#[0-9a-fA-F]{6}", lo = function(e, r) { + return e < r ? -1 : e > r ? 1 : 0; +}, td = function(e, r) { + return -1 * lo(e, r); +}, de = Object.assign != null ? Object.assign.bind(Object) : function(t) { + for (var e = arguments, r = 1; r < e.length; r++) { + var a = e[r]; + if (a != null) + for (var n = Object.keys(a), i = 0; i < n.length; i++) { + var s = n[i]; + t[s] = a[s]; + } + } + return t; +}, rd = function(e) { + if (!(!(e.length === 4 || e.length === 7) || e[0] !== "#")) { + var r = e.length === 4, a, n, i, s = 16; + return r ? (a = parseInt(e[1] + e[1], s), n = parseInt(e[2] + e[2], s), i = parseInt(e[3] + e[3], s)) : (a = parseInt(e[1] + e[2], s), n = parseInt(e[3] + e[4], s), i = parseInt(e[5] + e[6], s)), [a, n, i]; + } +}, ad = function(e) { + var r, a, n, i, s, o, l, u; + function f(d, g, p) { + return p < 0 && (p += 1), p > 1 && (p -= 1), p < 1 / 6 ? d + (g - d) * 6 * p : p < 1 / 2 ? g : p < 2 / 3 ? d + (g - d) * (2 / 3 - p) * 6 : d; + } + var h = new RegExp("^" + Qc + "$").exec(e); + if (h) { + if (a = parseInt(h[1]), a < 0 ? a = (360 - -1 * a % 360) % 360 : a > 360 && (a = a % 360), a /= 360, n = parseFloat(h[2]), n < 0 || n > 100 || (n = n / 100, i = parseFloat(h[3]), i < 0 || i > 100) || (i = i / 100, s = h[4], s !== void 0 && (s = parseFloat(s), s < 0 || s > 1))) + return; + if (n === 0) + o = l = u = Math.round(i * 255); + else { + var c = i < 0.5 ? i * (1 + n) : i + n - i * n, v = 2 * i - c; + o = Math.round(255 * f(v, c, a + 1 / 3)), l = Math.round(255 * f(v, c, a)), u = Math.round(255 * f(v, c, a - 1 / 3)); + } + r = [o, l, u, s]; + } + return r; +}, nd = function(e) { + var r, a = new RegExp("^" + Kc + "$").exec(e); + if (a) { + r = []; + for (var n = [], i = 1; i <= 3; i++) { + var s = a[i]; + if (s[s.length - 1] === "%" && (n[i] = !0), s = parseFloat(s), n[i] && (s = s / 100 * 255), s < 0 || s > 255) + return; + r.push(Math.floor(s)); + } + var o = n[1] || n[2] || n[3], l = n[1] && n[2] && n[3]; + if (o && !l) + return; + var u = a[4]; + if (u !== void 0) { + if (u = parseFloat(u), u < 0 || u > 1) + return; + r.push(u); + } + } + return r; +}, id = function(e) { + return od[e.toLowerCase()]; +}, sd = function(e) { + return (Me(e) ? e : null) || id(e) || rd(e) || nd(e) || ad(e); +}, od = { + // special colour names + transparent: [0, 0, 0, 0], + // NB alpha === 0 + // regular colours + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + grey: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}, uo = function(e) { + for (var r = e.map, a = e.keys, n = a.length, i = 0; i < n; i++) { + var s = a[i]; + if (De(s)) + throw Error("Tried to set map with object key"); + i < a.length - 1 ? (r[s] == null && (r[s] = {}), r = r[s]) : r[s] = e.value; + } +}, fo = function(e) { + for (var r = e.map, a = e.keys, n = a.length, i = 0; i < n; i++) { + var s = a[i]; + if (De(s)) + throw Error("Tried to get map with object key"); + if (r = r[s], r == null) + return r; + } + return r; +}, Dn = $e ? $e.performance : null, ho = Dn && Dn.now ? function() { + return Dn.now(); +} : function() { + return Date.now(); +}, ld = function() { + if ($e) { + if ($e.requestAnimationFrame) + return function(t) { + $e.requestAnimationFrame(t); + }; + if ($e.mozRequestAnimationFrame) + return function(t) { + $e.mozRequestAnimationFrame(t); + }; + if ($e.webkitRequestAnimationFrame) + return function(t) { + $e.webkitRequestAnimationFrame(t); + }; + if ($e.msRequestAnimationFrame) + return function(t) { + $e.msRequestAnimationFrame(t); + }; + } + return function(t) { + t && setTimeout(function() { + t(ho()); + }, 1e3 / 60); + }; +}(), Ya = function(e) { + return ld(e); +}, Mt = ho, br = 9261, vo = 65599, Xr = 5381, co = function(e) { + for (var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : br, a = r, n; n = e.next(), !n.done; ) + a = a * vo + n.value | 0; + return a; +}, jr = function(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : br; + return r * vo + e | 0; +}, ea = function(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Xr; + return (r << 5) + r + e | 0; +}, ud = function(e, r) { + return e * 2097152 + r; +}, Gt = function(e) { + return e[0] * 2097152 + e[1]; +}, Ta = function(e, r) { + return [jr(e[0], r[0]), ea(e[1], r[1])]; +}, fd = function(e, r) { + var a = { + value: 0, + done: !1 + }, n = 0, i = e.length, s = { + next: function() { + return n < i ? a.value = e[n++] : a.done = !0, a; + } + }; + return co(s, r); +}, ar = function(e, r) { + var a = { + value: 0, + done: !1 + }, n = 0, i = e.length, s = { + next: function() { + return n < i ? a.value = e.charCodeAt(n++) : a.done = !0, a; + } + }; + return co(s, r); +}, go = function() { + return hd(arguments); +}, hd = function(e) { + for (var r, a = 0; a < e.length; a++) { + var n = e[a]; + a === 0 ? r = ar(n) : r = ar(n, r); + } + return r; +}, Xi = !0, vd = console.warn != null, cd = console.trace != null, si = Number.MAX_SAFE_INTEGER || 9007199254740991, po = function() { + return !0; +}, Xa = function() { + return !1; +}, Wi = function() { + return 0; +}, oi = function() { +}, Ge = function(e) { + throw new Error(e); +}, yo = function(e) { + if (e !== void 0) + Xi = !!e; + else + return Xi; +}, Ne = function(e) { + yo() && (vd ? console.warn(e) : (console.log(e), cd && console.trace())); +}, dd = function(e) { + return de({}, e); +}, St = function(e) { + return e == null ? e : Me(e) ? e.slice() : De(e) ? dd(e) : e; +}, gd = function(e) { + return e.slice(); +}, mo = function(e, r) { + for ( + // loop :) + r = e = ""; + // b - result , a - numeric letiable + e++ < 36; + // + r += e * 51 & 52 ? ( + // return a random number or 4 + (e ^ 15 ? ( + // generate a random number from 0 to 15 + 8 ^ Math.random() * (e ^ 20 ? 16 : 4) + ) : 4).toString(16) + ) : "-" + ) + ; + return r; +}, pd = {}, bo = function() { + return pd; +}, Qe = function(e) { + var r = Object.keys(e); + return function(a) { + for (var n = {}, i = 0; i < r.length; i++) { + var s = r[i], o = a == null ? void 0 : a[s]; + n[s] = o === void 0 ? e[s] : o; + } + return n; + }; +}, Xt = function(e, r, a) { + for (var n = e.length - 1; n >= 0 && !(e[n] === r && (e.splice(n, 1), a)); n--) + ; +}, li = function(e) { + e.splice(0, e.length); +}, yd = function(e, r) { + for (var a = 0; a < r.length; a++) { + var n = r[a]; + e.push(n); + } +}, xt = function(e, r, a) { + return a && (r = oo(a, r)), e[r]; +}, $t = function(e, r, a, n) { + a && (r = oo(a, r)), e[r] = n; +}, md = /* @__PURE__ */ function() { + function t() { + ri(this, t), this._obj = {}; + } + return ai(t, [{ + key: "set", + value: function(r, a) { + return this._obj[r] = a, this; + } + }, { + key: "delete", + value: function(r) { + return this._obj[r] = void 0, this; + } + }, { + key: "clear", + value: function() { + this._obj = {}; + } + }, { + key: "has", + value: function(r) { + return this._obj[r] !== void 0; + } + }, { + key: "get", + value: function(r) { + return this._obj[r]; + } + }]), t; +}(), Lt = typeof Map != "undefined" ? Map : md, bd = "undefined", Ed = /* @__PURE__ */ function() { + function t(e) { + if (ri(this, t), this._obj = /* @__PURE__ */ Object.create(null), this.size = 0, e != null) { + var r; + e.instanceString != null && e.instanceString() === this.instanceString() ? r = e.toArray() : r = e; + for (var a = 0; a < r.length; a++) + this.add(r[a]); + } + } + return ai(t, [{ + key: "instanceString", + value: function() { + return "set"; + } + }, { + key: "add", + value: function(r) { + var a = this._obj; + a[r] !== 1 && (a[r] = 1, this.size++); + } + }, { + key: "delete", + value: function(r) { + var a = this._obj; + a[r] === 1 && (a[r] = 0, this.size--); + } + }, { + key: "clear", + value: function() { + this._obj = /* @__PURE__ */ Object.create(null); + } + }, { + key: "has", + value: function(r) { + return this._obj[r] === 1; + } + }, { + key: "toArray", + value: function() { + var r = this; + return Object.keys(this._obj).filter(function(a) { + return r.has(a); + }); + } + }, { + key: "forEach", + value: function(r, a) { + return this.toArray().forEach(r, a); + } + }]), t; +}(), Mr = (typeof Set == "undefined" ? "undefined" : Ue(Set)) !== bd ? Set : Ed, un = function(e, r) { + var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0; + if (e === void 0 || r === void 0 || !ni(e)) { + Ge("An element must have a core reference and parameters set"); + return; + } + var n = r.group; + if (n == null && (r.data && r.data.source != null && r.data.target != null ? n = "edges" : n = "nodes"), n !== "nodes" && n !== "edges") { + Ge("An element must be of type `nodes` or `edges`; you specified `" + n + "`"); + return; + } + this.length = 1, this[0] = this; + var i = this._private = { + cy: e, + single: !0, + // indicates this is an element + data: r.data || {}, + // data object + position: r.position || { + x: 0, + y: 0 + }, + // (x, y) position pair + autoWidth: void 0, + // width and height of nodes calculated by the renderer when set to special 'auto' value + autoHeight: void 0, + autoPadding: void 0, + compoundBoundsClean: !1, + // whether the compound dimensions need to be recalculated the next time dimensions are read + listeners: [], + // array of bound listeners + group: n, + // string; 'nodes' or 'edges' + style: {}, + // properties as set by the style + rstyle: {}, + // properties for style sent from the renderer to the core + styleCxts: [], + // applied style contexts from the styler + styleKeys: {}, + // per-group keys of style property values + removed: !0, + // whether it's inside the vis; true if removed (set true here since we call restore) + selected: !!r.selected, + // whether it's selected + selectable: r.selectable === void 0 ? !0 : !!r.selectable, + // whether it's selectable + locked: !!r.locked, + // whether the element is locked (cannot be moved) + grabbed: !1, + // whether the element is grabbed by the mouse; renderer sets this privately + grabbable: r.grabbable === void 0 ? !0 : !!r.grabbable, + // whether the element can be grabbed + pannable: r.pannable === void 0 ? n === "edges" : !!r.pannable, + // whether the element has passthrough panning enabled + active: !1, + // whether the element is active from user interaction + classes: new Mr(), + // map ( className => true ) + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + rscratch: {}, + // object in which the renderer can store information + scratch: r.scratch || {}, + // scratch objects + edges: [], + // array of connected edges + children: [], + // array of children + parent: r.parent && r.parent.isNode() ? r.parent : null, + // parent ref + traversalCache: {}, + // cache of output of traversal functions + backgrounding: !1, + // whether background images are loading + bbCache: null, + // cache of the current bounding box + bbCacheShift: { + x: 0, + y: 0 + }, + // shift applied to cached bb to be applied on next get + bodyBounds: null, + // bounds cache of element body, w/o overlay + overlayBounds: null, + // bounds cache of element body, including overlay + labelBounds: { + // bounds cache of labels + all: null, + source: null, + target: null, + main: null + }, + arrowBounds: { + // bounds cache of edge arrows + source: null, + target: null, + "mid-source": null, + "mid-target": null + } + }; + if (i.position.x == null && (i.position.x = 0), i.position.y == null && (i.position.y = 0), r.renderedPosition) { + var s = r.renderedPosition, o = e.pan(), l = e.zoom(); + i.position = { + x: (s.x - o.x) / l, + y: (s.y - o.y) / l + }; + } + var u = []; + Me(r.classes) ? u = r.classes : ve(r.classes) && (u = r.classes.split(/\s+/)); + for (var f = 0, h = u.length; f < h; f++) { + var c = u[f]; + !c || c === "" || i.classes.add(c); + } + this.createEmitter(); + var v = r.style || r.css; + v && (Ne("Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead."), this.style(v)), (a === void 0 || a) && this.restore(); +}, qi = function(e) { + return e = { + bfs: e.bfs || !e.dfs, + dfs: e.dfs || !e.bfs + }, function(a, n, i) { + var s; + De(a) && !ht(a) && (s = a, a = s.roots || s.root, n = s.visit, i = s.directed), i = arguments.length === 2 && !Be(n) ? n : i, n = Be(n) ? n : function() { + }; + for (var o = this._private.cy, l = a = ve(a) ? this.filter(a) : a, u = [], f = [], h = {}, c = {}, v = {}, d = 0, g, p = this.byGroup(), y = p.nodes, E = p.edges, m = 0; m < l.length; m++) { + var T = l[m], C = T.id(); + T.isNode() && (u.unshift(T), e.bfs && (v[C] = !0, f.push(T)), c[C] = 0); + } + for (var S = function() { + var I = e.bfs ? u.shift() : u.pop(), O = I.id(); + if (e.dfs) { + if (v[O]) + return "continue"; + v[O] = !0, f.push(I); + } + var P = c[O], R = h[O], M = R != null ? R.source() : null, k = R != null ? R.target() : null, B = R == null ? void 0 : I.same(M) ? k[0] : M[0], G = void 0; + if (G = n(I, R, B, d++, P), G === !0) + return g = I, "break"; + if (G === !1) + return "break"; + for (var F = I.connectedEdges().filter(function(W) { + return (!i || W.source().same(I)) && E.has(W); + }), $ = 0; $ < F.length; $++) { + var U = F[$], _ = U.connectedNodes().filter(function(W) { + return !W.same(I) && y.has(W); + }), Y = _.id(); + _.length !== 0 && !v[Y] && (_ = _[0], u.push(_), e.bfs && (v[Y] = !0, f.push(_)), h[Y] = U, c[Y] = c[O] + 1); + } + }; u.length !== 0; ) { + var b = S(); + if (b !== "continue" && b === "break") + break; + } + for (var x = o.collection(), w = 0; w < f.length; w++) { + var D = f[w], A = h[D.id()]; + A != null && x.push(A), x.push(D); + } + return { + path: o.collection(x), + found: o.collection(g) + }; + }; +}, ta = { + breadthFirstSearch: qi({ + bfs: !0 + }), + depthFirstSearch: qi({ + dfs: !0 + }) +}; +ta.bfs = ta.breadthFirstSearch; +ta.dfs = ta.depthFirstSearch; +var wd = Qe({ + root: null, + weight: function(e) { + return 1; + }, + directed: !1 +}), xd = { + dijkstra: function(e) { + if (!De(e)) { + var r = arguments; + e = { + root: r[0], + weight: r[1], + directed: r[2] + }; + } + var a = wd(e), n = a.root, i = a.weight, s = a.directed, o = this, l = i, u = ve(n) ? this.filter(n)[0] : n[0], f = {}, h = {}, c = {}, v = this.byGroup(), d = v.nodes, g = v.edges; + g.unmergeBy(function(P) { + return P.isLoop(); + }); + for (var p = function(R) { + return f[R.id()]; + }, y = function(R, M) { + f[R.id()] = M, E.updateItem(R); + }, E = new ha.default(function(P, R) { + return p(P) - p(R); + }), m = 0; m < d.length; m++) { + var T = d[m]; + f[T.id()] = T.same(u) ? 0 : 1 / 0, E.push(T); + } + for (var C = function(R, M) { + for (var k = (s ? R.edgesTo(M) : R.edgesWith(M)).intersect(g), B = 1 / 0, G, F = 0; F < k.length; F++) { + var $ = k[F], U = l($); + (U < B || !G) && (B = U, G = $); + } + return { + edge: G, + dist: B + }; + }; E.size() > 0; ) { + var S = E.pop(), b = p(S), x = S.id(); + if (c[x] = b, b !== 1 / 0) + for (var w = S.neighborhood().intersect(d), D = 0; D < w.length; D++) { + var A = w[D], L = A.id(), I = C(S, A), O = b + I.dist; + O < p(A) && (y(A, O), h[L] = { + node: S, + edge: I.edge + }); + } + } + return { + distanceTo: function(R) { + var M = ve(R) ? d.filter(R)[0] : R[0]; + return c[M.id()]; + }, + pathTo: function(R) { + var M = ve(R) ? d.filter(R)[0] : R[0], k = [], B = M, G = B.id(); + if (M.length > 0) + for (k.unshift(M); h[G]; ) { + var F = h[G]; + k.unshift(F.edge), k.unshift(F.node), B = F.node, G = B.id(); + } + return o.spawn(k); + } + }; + } +}, Td = { + // kruskal's algorithm (finds min spanning tree, assuming undirected graph) + // implemented from pseudocode from wikipedia + kruskal: function(e) { + e = e || function(m) { + return 1; + }; + for (var r = this.byGroup(), a = r.nodes, n = r.edges, i = a.length, s = new Array(i), o = a, l = function(T) { + for (var C = 0; C < s.length; C++) { + var S = s[C]; + if (S.has(T)) + return C; + } + }, u = 0; u < i; u++) + s[u] = this.spawn(a[u]); + for (var f = n.sort(function(m, T) { + return e(m) - e(T); + }), h = 0; h < f.length; h++) { + var c = f[h], v = c.source()[0], d = c.target()[0], g = l(v), p = l(d), y = s[g], E = s[p]; + g !== p && (o.merge(c), y.merge(E), s.splice(p, 1)); + } + return o; + } +}, Cd = Qe({ + root: null, + goal: null, + weight: function(e) { + return 1; + }, + heuristic: function(e) { + return 0; + }, + directed: !1 +}), Dd = { + // Implemented from pseudocode from wikipedia + aStar: function(e) { + var r = this.cy(), a = Cd(e), n = a.root, i = a.goal, s = a.heuristic, o = a.directed, l = a.weight; + n = r.collection(n)[0], i = r.collection(i)[0]; + var u = n.id(), f = i.id(), h = {}, c = {}, v = {}, d = new ha.default(function(G, F) { + return c[G.id()] - c[F.id()]; + }), g = new Mr(), p = {}, y = {}, E = function(F, $) { + d.push(F), g.add($); + }, m, T, C = function() { + m = d.pop(), T = m.id(), g.delete(T); + }, S = function(F) { + return g.has(F); + }; + E(n, u), h[u] = 0, c[u] = s(n); + for (var b = 0; d.size() > 0; ) { + if (C(), b++, T === f) { + for (var x = [], w = i, D = f, A = y[D]; x.unshift(w), A != null && x.unshift(A), w = p[D], w != null; ) + D = w.id(), A = y[D]; + return { + found: !0, + distance: h[T], + path: this.spawn(x), + steps: b + }; + } + v[T] = !0; + for (var L = m._private.edges, I = 0; I < L.length; I++) { + var O = L[I]; + if (this.hasElementWithId(O.id()) && !(o && O.data("source") !== T)) { + var P = O.source(), R = O.target(), M = P.id() !== T ? P : R, k = M.id(); + if (this.hasElementWithId(k) && !v[k]) { + var B = h[T] + l(O); + if (!S(k)) { + h[k] = B, c[k] = B + s(M), E(M, k), p[k] = m, y[k] = O; + continue; + } + B < h[k] && (h[k] = B, c[k] = B + s(M), p[k] = m, y[k] = O); + } + } + } + } + return { + found: !1, + distance: void 0, + path: void 0, + steps: b + }; + } +}, Sd = Qe({ + weight: function(e) { + return 1; + }, + directed: !1 +}), Ld = { + // Implemented from pseudocode from wikipedia + floydWarshall: function(e) { + for (var r = this.cy(), a = Sd(e), n = a.weight, i = a.directed, s = n, o = this.byGroup(), l = o.nodes, u = o.edges, f = l.length, h = f * f, c = function(U) { + return l.indexOf(U); + }, v = function(U) { + return l[U]; + }, d = new Array(h), g = 0; g < h; g++) { + var p = g % f, y = (g - p) / f; + y === p ? d[g] = 0 : d[g] = 1 / 0; + } + for (var E = new Array(h), m = new Array(h), T = 0; T < u.length; T++) { + var C = u[T], S = C.source()[0], b = C.target()[0]; + if (S !== b) { + var x = c(S), w = c(b), D = x * f + w, A = s(C); + if (d[D] > A && (d[D] = A, E[D] = w, m[D] = C), !i) { + var L = w * f + x; + !i && d[L] > A && (d[L] = A, E[L] = x, m[L] = C); + } + } + } + for (var I = 0; I < f; I++) + for (var O = 0; O < f; O++) + for (var P = O * f + I, R = 0; R < f; R++) { + var M = O * f + R, k = I * f + R; + d[P] + d[k] < d[M] && (d[M] = d[P] + d[k], E[M] = E[P]); + } + var B = function(U) { + return (ve(U) ? r.filter(U) : U)[0]; + }, G = function(U) { + return c(B(U)); + }, F = { + distance: function(U, _) { + var Y = G(U), W = G(_); + return d[Y * f + W]; + }, + path: function(U, _) { + var Y = G(U), W = G(_), z = v(Y); + if (Y === W) + return z.collection(); + if (E[Y * f + W] == null) + return r.collection(); + var K = r.collection(), j = Y, Q; + for (K.merge(z); Y !== W; ) + j = Y, Y = E[Y * f + W], Q = m[j * f + Y], K.merge(Q), K.merge(v(Y)); + return K; + } + }; + return F; + } + // floydWarshall +}, Ad = Qe({ + weight: function(e) { + return 1; + }, + directed: !1, + root: null +}), Od = { + // Implemented from pseudocode from wikipedia + bellmanFord: function(e) { + var r = this, a = Ad(e), n = a.weight, i = a.directed, s = a.root, o = n, l = this, u = this.cy(), f = this.byGroup(), h = f.edges, c = f.nodes, v = c.length, d = new Lt(), g = !1, p = []; + s = u.collection(s)[0], h.unmergeBy(function(le) { + return le.isLoop(); + }); + for (var y = h.length, E = function(se) { + var fe = d.get(se.id()); + return fe || (fe = {}, d.set(se.id(), fe)), fe; + }, m = function(se) { + return (ve(se) ? u.$(se) : se)[0]; + }, T = function(se) { + return E(m(se)).dist; + }, C = function(se) { + for (var fe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : s, xe = m(se), Ee = [], ge = xe; ; ) { + if (ge == null) + return r.spawn(); + var we = E(ge), H = we.edge, N = we.pred; + if (Ee.unshift(ge[0]), ge.same(fe) && Ee.length > 0) + break; + H != null && Ee.unshift(H), ge = N; + } + return l.spawn(Ee); + }, S = 0; S < v; S++) { + var b = c[S], x = E(b); + b.same(s) ? x.dist = 0 : x.dist = 1 / 0, x.pred = null, x.edge = null; + } + for (var w = !1, D = function(se, fe, xe, Ee, ge, we) { + var H = Ee.dist + we; + H < ge.dist && !xe.same(Ee.edge) && (ge.dist = H, ge.pred = se, ge.edge = xe, w = !0); + }, A = 1; A < v; A++) { + w = !1; + for (var L = 0; L < y; L++) { + var I = h[L], O = I.source(), P = I.target(), R = o(I), M = E(O), k = E(P); + D(O, P, I, M, k, R), i || D(P, O, I, k, M, R); + } + if (!w) + break; + } + if (w) + for (var B = [], G = 0; G < y; G++) { + var F = h[G], $ = F.source(), U = F.target(), _ = o(F), Y = E($).dist, W = E(U).dist; + if (Y + _ < W || !i && W + _ < Y) + if (g || (Ne("Graph contains a negative weight cycle for Bellman-Ford"), g = !0), e.findNegativeWeightCycles !== !1) { + var z = []; + Y + _ < W && z.push($), !i && W + _ < Y && z.push(U); + for (var K = z.length, j = 0; j < K; j++) { + var Q = z[j], ee = [Q]; + ee.push(E(Q).edge); + for (var ne = E(Q).pred; ee.indexOf(ne) === -1; ) + ee.push(ne), ee.push(E(ne).edge), ne = E(ne).pred; + ee = ee.slice(ee.indexOf(ne)); + for (var ce = ee[0].id(), te = 0, re = 2; re < ee.length; re += 2) + ee[re].id() < ce && (ce = ee[re].id(), te = re); + ee = ee.slice(te).concat(ee.slice(0, te)), ee.push(ee[0]); + var ue = ee.map(function(le) { + return le.id(); + }).join(","); + B.indexOf(ue) === -1 && (p.push(l.spawn(ee)), B.push(ue)); + } + } else + break; + } + return { + distanceTo: T, + pathTo: C, + hasNegativeWeightCycle: g, + negativeWeightCycles: p + }; + } + // bellmanFord +}, Nd = Math.sqrt(2), Id = function(e, r, a) { + a.length === 0 && Ge("Karger-Stein must be run on a connected (sub)graph"); + for (var n = a[e], i = n[1], s = n[2], o = r[i], l = r[s], u = a, f = u.length - 1; f >= 0; f--) { + var h = u[f], c = h[1], v = h[2]; + (r[c] === o && r[v] === l || r[c] === l && r[v] === o) && u.splice(f, 1); + } + for (var d = 0; d < u.length; d++) { + var g = u[d]; + g[1] === l ? (u[d] = g.slice(), u[d][1] = o) : g[2] === l && (u[d] = g.slice(), u[d][2] = o); + } + for (var p = 0; p < r.length; p++) + r[p] === l && (r[p] = o); + return u; +}, Sn = function(e, r, a, n) { + for (; a > n; ) { + var i = Math.floor(Math.random() * r.length); + r = Id(i, e, r), a--; + } + return r; +}, Md = { + // Computes the minimum cut of an undirected graph + // Returns the correct answer with high probability + kargerStein: function() { + var e = this, r = this.byGroup(), a = r.nodes, n = r.edges; + n.unmergeBy(function(k) { + return k.isLoop(); + }); + var i = a.length, s = n.length, o = Math.ceil(Math.pow(Math.log(i) / Math.LN2, 2)), l = Math.floor(i / Nd); + if (i < 2) { + Ge("At least 2 nodes are required for Karger-Stein algorithm"); + return; + } + for (var u = [], f = 0; f < s; f++) { + var h = n[f]; + u.push([f, a.indexOf(h.source()), a.indexOf(h.target())]); + } + for (var c = 1 / 0, v = [], d = new Array(i), g = new Array(i), p = new Array(i), y = function(B, G) { + for (var F = 0; F < i; F++) + G[F] = B[F]; + }, E = 0; E <= o; E++) { + for (var m = 0; m < i; m++) + g[m] = m; + var T = Sn(g, u.slice(), i, l), C = T.slice(); + y(g, p); + var S = Sn(g, T, l, 2), b = Sn(p, C, l, 2); + S.length <= b.length && S.length < c ? (c = S.length, v = S, y(g, d)) : b.length <= S.length && b.length < c && (c = b.length, v = b, y(p, d)); + } + for (var x = this.spawn(v.map(function(k) { + return n[k[0]]; + })), w = this.spawn(), D = this.spawn(), A = d[0], L = 0; L < d.length; L++) { + var I = d[L], O = a[L]; + I === A ? w.merge(O) : D.merge(O); + } + var P = function(B) { + var G = e.spawn(); + return B.forEach(function(F) { + G.merge(F), F.connectedEdges().forEach(function($) { + e.contains($) && !x.contains($) && G.merge($); + }); + }), G; + }, R = [P(w), P(D)], M = { + cut: x, + components: R, + // n.b. partitions are included to be compatible with the old api spec + // (could be removed in a future major version) + partition1: w, + partition2: D + }; + return M; + } +}, Rd = function(e) { + return { + x: e.x, + y: e.y + }; +}, fn = function(e, r, a) { + return { + x: e.x * r + a.x, + y: e.y * r + a.y + }; +}, Eo = function(e, r, a) { + return { + x: (e.x - a.x) / r, + y: (e.y - a.y) / r + }; +}, Er = function(e) { + return { + x: e[0], + y: e[1] + }; +}, kd = function(e) { + for (var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length, n = 1 / 0, i = r; i < a; i++) { + var s = e[i]; + isFinite(s) && (n = Math.min(s, n)); + } + return n; +}, Pd = function(e) { + for (var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length, n = -1 / 0, i = r; i < a; i++) { + var s = e[i]; + isFinite(s) && (n = Math.max(s, n)); + } + return n; +}, Bd = function(e) { + for (var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length, n = 0, i = 0, s = r; s < a; s++) { + var o = e[s]; + isFinite(o) && (n += o, i++); + } + return n / i; +}, Fd = function(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0, i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0, s = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0; + n ? e = e.slice(r, a) : (a < e.length && e.splice(a, e.length - a), r > 0 && e.splice(0, r)); + for (var o = 0, l = e.length - 1; l >= 0; l--) { + var u = e[l]; + s ? isFinite(u) || (e[l] = -1 / 0, o++) : e.splice(l, 1); + } + i && e.sort(function(c, v) { + return c - v; + }); + var f = e.length, h = Math.floor(f / 2); + return f % 2 !== 0 ? e[h + 1 + o] : (e[h - 1 + o] + e[h + o]) / 2; +}, Gd = function(e) { + return Math.PI * e / 180; +}, Ca = function(e, r) { + return Math.atan2(r, e) - Math.PI / 2; +}, ui = Math.log2 || function(t) { + return Math.log(t) / Math.log(2); +}, wo = function(e) { + return e > 0 ? 1 : e < 0 ? -1 : 0; +}, nr = function(e, r) { + return Math.sqrt(er(e, r)); +}, er = function(e, r) { + var a = r.x - e.x, n = r.y - e.y; + return a * a + n * n; +}, zd = function(e) { + for (var r = e.length, a = 0, n = 0; n < r; n++) + a += e[n]; + for (var i = 0; i < r; i++) + e[i] = e[i] / a; + return e; +}, Ye = function(e, r, a, n) { + return (1 - n) * (1 - n) * e + 2 * (1 - n) * n * r + n * n * a; +}, xr = function(e, r, a, n) { + return { + x: Ye(e.x, r.x, a.x, n), + y: Ye(e.y, r.y, a.y, n) + }; +}, $d = function(e, r, a, n) { + var i = { + x: r.x - e.x, + y: r.y - e.y + }, s = nr(e, r), o = { + x: i.x / s, + y: i.y / s + }; + return a = a == null ? 0 : a, n = n != null ? n : a * s, { + x: e.x + o.x * n, + y: e.y + o.y * n + }; +}, ra = function(e, r, a) { + return Math.max(e, Math.min(a, r)); +}, ft = function(e) { + if (e == null) + return { + x1: 1 / 0, + y1: 1 / 0, + x2: -1 / 0, + y2: -1 / 0, + w: 0, + h: 0 + }; + if (e.x1 != null && e.y1 != null) { + if (e.x2 != null && e.y2 != null && e.x2 >= e.x1 && e.y2 >= e.y1) + return { + x1: e.x1, + y1: e.y1, + x2: e.x2, + y2: e.y2, + w: e.x2 - e.x1, + h: e.y2 - e.y1 + }; + if (e.w != null && e.h != null && e.w >= 0 && e.h >= 0) + return { + x1: e.x1, + y1: e.y1, + x2: e.x1 + e.w, + y2: e.y1 + e.h, + w: e.w, + h: e.h + }; + } +}, Vd = function(e) { + return { + x1: e.x1, + x2: e.x2, + w: e.w, + y1: e.y1, + y2: e.y2, + h: e.h + }; +}, _d = function(e) { + e.x1 = 1 / 0, e.y1 = 1 / 0, e.x2 = -1 / 0, e.y2 = -1 / 0, e.w = 0, e.h = 0; +}, Ud = function(e, r, a) { + return { + x1: e.x1 + r, + x2: e.x2 + r, + y1: e.y1 + a, + y2: e.y2 + a, + w: e.w, + h: e.h + }; +}, xo = function(e, r) { + e.x1 = Math.min(e.x1, r.x1), e.x2 = Math.max(e.x2, r.x2), e.w = e.x2 - e.x1, e.y1 = Math.min(e.y1, r.y1), e.y2 = Math.max(e.y2, r.y2), e.h = e.y2 - e.y1; +}, Hd = function(e, r, a) { + e.x1 = Math.min(e.x1, r), e.x2 = Math.max(e.x2, r), e.w = e.x2 - e.x1, e.y1 = Math.min(e.y1, a), e.y2 = Math.max(e.y2, a), e.h = e.y2 - e.y1; +}, ka = function(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return e.x1 -= r, e.x2 += r, e.y1 -= r, e.y2 += r, e.w = e.x2 - e.x1, e.h = e.y2 - e.y1, e; +}, Pa = function(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [0], a, n, i, s; + if (r.length === 1) + a = n = i = s = r[0]; + else if (r.length === 2) + a = i = r[0], s = n = r[1]; + else if (r.length === 4) { + var o = Et(r, 4); + a = o[0], n = o[1], i = o[2], s = o[3]; + } + return e.x1 -= s, e.x2 += n, e.y1 -= a, e.y2 += i, e.w = e.x2 - e.x1, e.h = e.y2 - e.y1, e; +}, Ki = function(e, r) { + e.x1 = r.x1, e.y1 = r.y1, e.x2 = r.x2, e.y2 = r.y2, e.w = e.x2 - e.x1, e.h = e.y2 - e.y1; +}, fi = function(e, r) { + return !(e.x1 > r.x2 || r.x1 > e.x2 || e.x2 < r.x1 || r.x2 < e.x1 || e.y2 < r.y1 || r.y2 < e.y1 || e.y1 > r.y2 || r.y1 > e.y2); +}, Sr = function(e, r, a) { + return e.x1 <= r && r <= e.x2 && e.y1 <= a && a <= e.y2; +}, Yd = function(e, r) { + return Sr(e, r.x, r.y); +}, To = function(e, r) { + return Sr(e, r.x1, r.y1) && Sr(e, r.x2, r.y2); +}, Co = function(e, r, a, n, i, s, o) { + var l = da(i, s), u = i / 2, f = s / 2, h; + { + var c = a - u + l - o, v = n - f - o, d = a + u - l + o, g = v; + if (h = _t(e, r, a, n, c, v, d, g, !1), h.length > 0) + return h; + } + { + var p = a + u + o, y = n - f + l - o, E = p, m = n + f - l + o; + if (h = _t(e, r, a, n, p, y, E, m, !1), h.length > 0) + return h; + } + { + var T = a - u + l - o, C = n + f + o, S = a + u - l + o, b = C; + if (h = _t(e, r, a, n, T, C, S, b, !1), h.length > 0) + return h; + } + { + var x = a - u - o, w = n - f + l - o, D = x, A = n + f - l + o; + if (h = _t(e, r, a, n, x, w, D, A, !1), h.length > 0) + return h; + } + var L; + { + var I = a - u + l, O = n - f + l; + if (L = Wr(e, r, a, n, I, O, l + o), L.length > 0 && L[0] <= I && L[1] <= O) + return [L[0], L[1]]; + } + { + var P = a + u - l, R = n - f + l; + if (L = Wr(e, r, a, n, P, R, l + o), L.length > 0 && L[0] >= P && L[1] <= R) + return [L[0], L[1]]; + } + { + var M = a + u - l, k = n + f - l; + if (L = Wr(e, r, a, n, M, k, l + o), L.length > 0 && L[0] >= M && L[1] >= k) + return [L[0], L[1]]; + } + { + var B = a - u + l, G = n + f - l; + if (L = Wr(e, r, a, n, B, G, l + o), L.length > 0 && L[0] <= B && L[1] >= G) + return [L[0], L[1]]; + } + return []; +}, Xd = function(e, r, a, n, i, s, o) { + var l = o, u = Math.min(a, i), f = Math.max(a, i), h = Math.min(n, s), c = Math.max(n, s); + return u - l <= e && e <= f + l && h - l <= r && r <= c + l; +}, Wd = function(e, r, a, n, i, s, o, l, u) { + var f = { + x1: Math.min(a, o, i) - u, + x2: Math.max(a, o, i) + u, + y1: Math.min(n, l, s) - u, + y2: Math.max(n, l, s) + u + }; + return !(e < f.x1 || e > f.x2 || r < f.y1 || r > f.y2); +}, qd = function(e, r, a, n) { + a -= n; + var i = r * r - 4 * e * a; + if (i < 0) + return []; + var s = Math.sqrt(i), o = 2 * e, l = (-r + s) / o, u = (-r - s) / o; + return [l, u]; +}, Kd = function(e, r, a, n, i) { + var s = 1e-5; + e === 0 && (e = s), r /= e, a /= e, n /= e; + var o, l, u, f, h, c, v, d; + if (l = (3 * a - r * r) / 9, u = -(27 * n) + r * (9 * a - 2 * (r * r)), u /= 54, o = l * l * l + u * u, i[1] = 0, v = r / 3, o > 0) { + h = u + Math.sqrt(o), h = h < 0 ? -Math.pow(-h, 1 / 3) : Math.pow(h, 1 / 3), c = u - Math.sqrt(o), c = c < 0 ? -Math.pow(-c, 1 / 3) : Math.pow(c, 1 / 3), i[0] = -v + h + c, v += (h + c) / 2, i[4] = i[2] = -v, v = Math.sqrt(3) * (-c + h) / 2, i[3] = v, i[5] = -v; + return; + } + if (i[5] = i[3] = 0, o === 0) { + d = u < 0 ? -Math.pow(-u, 1 / 3) : Math.pow(u, 1 / 3), i[0] = -v + 2 * d, i[4] = i[2] = -(d + v); + return; + } + l = -l, f = l * l * l, f = Math.acos(u / Math.sqrt(f)), d = 2 * Math.sqrt(l), i[0] = -v + d * Math.cos(f / 3), i[2] = -v + d * Math.cos((f + 2 * Math.PI) / 3), i[4] = -v + d * Math.cos((f + 4 * Math.PI) / 3); +}, Zd = function(e, r, a, n, i, s, o, l) { + var u = 1 * a * a - 4 * a * i + 2 * a * o + 4 * i * i - 4 * i * o + o * o + n * n - 4 * n * s + 2 * n * l + 4 * s * s - 4 * s * l + l * l, f = 1 * 9 * a * i - 3 * a * a - 3 * a * o - 6 * i * i + 3 * i * o + 9 * n * s - 3 * n * n - 3 * n * l - 6 * s * s + 3 * s * l, h = 1 * 3 * a * a - 6 * a * i + a * o - a * e + 2 * i * i + 2 * i * e - o * e + 3 * n * n - 6 * n * s + n * l - n * r + 2 * s * s + 2 * s * r - l * r, c = 1 * a * i - a * a + a * e - i * e + n * s - n * n + n * r - s * r, v = []; + Kd(u, f, h, c, v); + for (var d = 1e-7, g = [], p = 0; p < 6; p += 2) + Math.abs(v[p + 1]) < d && v[p] >= 0 && v[p] <= 1 && g.push(v[p]); + g.push(1), g.push(0); + for (var y = -1, E, m, T, C = 0; C < g.length; C++) + E = Math.pow(1 - g[C], 2) * a + 2 * (1 - g[C]) * g[C] * i + g[C] * g[C] * o, m = Math.pow(1 - g[C], 2) * n + 2 * (1 - g[C]) * g[C] * s + g[C] * g[C] * l, T = Math.pow(E - e, 2) + Math.pow(m - r, 2), y >= 0 ? T < y && (y = T) : y = T; + return y; +}, Qd = function(e, r, a, n, i, s) { + var o = [e - a, r - n], l = [i - a, s - n], u = l[0] * l[0] + l[1] * l[1], f = o[0] * o[0] + o[1] * o[1], h = o[0] * l[0] + o[1] * l[1], c = h * h / u; + return h < 0 ? f : c > u ? (e - i) * (e - i) + (r - s) * (r - s) : f - c; +}, ut = function(e, r, a) { + for (var n, i, s, o, l, u = 0, f = 0; f < a.length / 2; f++) + if (n = a[f * 2], i = a[f * 2 + 1], f + 1 < a.length / 2 ? (s = a[(f + 1) * 2], o = a[(f + 1) * 2 + 1]) : (s = a[(f + 1 - a.length / 2) * 2], o = a[(f + 1 - a.length / 2) * 2 + 1]), !(n == e && s == e)) + if (n >= e && e >= s || n <= e && e <= s) + l = (e - n) / (s - n) * (o - i) + i, l > r && u++; + else + continue; + return u % 2 !== 0; +}, Rt = function(e, r, a, n, i, s, o, l, u) { + var f = new Array(a.length), h; + l[0] != null ? (h = Math.atan(l[1] / l[0]), l[0] < 0 ? h = h + Math.PI / 2 : h = -h - Math.PI / 2) : h = l; + for (var c = Math.cos(-h), v = Math.sin(-h), d = 0; d < f.length / 2; d++) + f[d * 2] = s / 2 * (a[d * 2] * c - a[d * 2 + 1] * v), f[d * 2 + 1] = o / 2 * (a[d * 2 + 1] * c + a[d * 2] * v), f[d * 2] += n, f[d * 2 + 1] += i; + var g; + if (u > 0) { + var p = qa(f, -u); + g = Wa(p); + } else + g = f; + return ut(e, r, g); +}, Jd = function(e, r, a, n, i, s, o) { + for (var l = new Array(a.length), u = s / 2, f = o / 2, h = hi(s, o), c = h * h, v = 0; v < a.length / 4; v++) { + var d = void 0, g = void 0; + v === 0 ? d = a.length - 2 : d = v * 4 - 2, g = v * 4 + 2; + var p = n + u * a[v * 4], y = i + f * a[v * 4 + 1], E = -a[d] * a[g] - a[d + 1] * a[g + 1], m = h / Math.tan(Math.acos(E) / 2), T = p - m * a[d], C = y - m * a[d + 1], S = p + m * a[g], b = y + m * a[g + 1]; + l[v * 4] = T, l[v * 4 + 1] = C, l[v * 4 + 2] = S, l[v * 4 + 3] = b; + var x = a[d + 1], w = -a[d], D = x * a[g] + w * a[g + 1]; + D < 0 && (x *= -1, w *= -1); + var A = T + x * h, L = C + w * h, I = Math.pow(A - e, 2) + Math.pow(L - r, 2); + if (I <= c) + return !0; + } + return ut(e, r, l); +}, Wa = function(e) { + for (var r = new Array(e.length / 2), a, n, i, s, o, l, u, f, h = 0; h < e.length / 4; h++) { + a = e[h * 4], n = e[h * 4 + 1], i = e[h * 4 + 2], s = e[h * 4 + 3], h < e.length / 4 - 1 ? (o = e[(h + 1) * 4], l = e[(h + 1) * 4 + 1], u = e[(h + 1) * 4 + 2], f = e[(h + 1) * 4 + 3]) : (o = e[0], l = e[1], u = e[2], f = e[3]); + var c = _t(a, n, i, s, o, l, u, f, !0); + r[h * 2] = c[0], r[h * 2 + 1] = c[1]; + } + return r; +}, qa = function(e, r) { + for (var a = new Array(e.length * 2), n, i, s, o, l = 0; l < e.length / 2; l++) { + n = e[l * 2], i = e[l * 2 + 1], l < e.length / 2 - 1 ? (s = e[(l + 1) * 2], o = e[(l + 1) * 2 + 1]) : (s = e[0], o = e[1]); + var u = o - i, f = -(s - n), h = Math.sqrt(u * u + f * f), c = u / h, v = f / h; + a[l * 4] = n + c * r, a[l * 4 + 1] = i + v * r, a[l * 4 + 2] = s + c * r, a[l * 4 + 3] = o + v * r; + } + return a; +}, jd = function(e, r, a, n, i, s) { + var o = a - e, l = n - r; + o /= i, l /= s; + var u = Math.sqrt(o * o + l * l), f = u - 1; + if (f < 0) + return []; + var h = f / u; + return [(a - e) * h + e, (n - r) * h + r]; +}, rr = function(e, r, a, n, i, s, o) { + return e -= i, r -= s, e /= a / 2 + o, r /= n / 2 + o, e * e + r * r <= 1; +}, Wr = function(e, r, a, n, i, s, o) { + var l = [a - e, n - r], u = [e - i, r - s], f = l[0] * l[0] + l[1] * l[1], h = 2 * (u[0] * l[0] + u[1] * l[1]), c = u[0] * u[0] + u[1] * u[1] - o * o, v = h * h - 4 * f * c; + if (v < 0) + return []; + var d = (-h + Math.sqrt(v)) / (2 * f), g = (-h - Math.sqrt(v)) / (2 * f), p = Math.min(d, g), y = Math.max(d, g), E = []; + if (p >= 0 && p <= 1 && E.push(p), y >= 0 && y <= 1 && E.push(y), E.length === 0) + return []; + var m = E[0] * l[0] + e, T = E[0] * l[1] + r; + if (E.length > 1) { + if (E[0] == E[1]) + return [m, T]; + var C = E[1] * l[0] + e, S = E[1] * l[1] + r; + return [m, T, C, S]; + } else + return [m, T]; +}, Ln = function(e, r, a) { + return r <= e && e <= a || a <= e && e <= r ? e : e <= r && r <= a || a <= r && r <= e ? r : a; +}, _t = function(e, r, a, n, i, s, o, l, u) { + var f = e - i, h = a - e, c = o - i, v = r - s, d = n - r, g = l - s, p = c * v - g * f, y = h * v - d * f, E = g * h - c * d; + if (E !== 0) { + var m = p / E, T = y / E, C = 1e-3, S = 0 - C, b = 1 + C; + return S <= m && m <= b && S <= T && T <= b ? [e + m * h, r + m * d] : u ? [e + m * h, r + m * d] : []; + } else + return p === 0 || y === 0 ? Ln(e, a, o) === o ? [o, l] : Ln(e, a, i) === i ? [i, s] : Ln(i, o, a) === a ? [a, n] : [] : []; +}, aa = function(e, r, a, n, i, s, o, l) { + var u = [], f, h = new Array(a.length), c = !0; + s == null && (c = !1); + var v; + if (c) { + for (var d = 0; d < h.length / 2; d++) + h[d * 2] = a[d * 2] * s + n, h[d * 2 + 1] = a[d * 2 + 1] * o + i; + if (l > 0) { + var g = qa(h, -l); + v = Wa(g); + } else + v = h; + } else + v = a; + for (var p, y, E, m, T = 0; T < v.length / 2; T++) + p = v[T * 2], y = v[T * 2 + 1], T < v.length / 2 - 1 ? (E = v[(T + 1) * 2], m = v[(T + 1) * 2 + 1]) : (E = v[0], m = v[1]), f = _t(e, r, n, i, p, y, E, m), f.length !== 0 && u.push(f[0], f[1]); + return u; +}, eg = function(e, r, a, n, i, s, o, l) { + for (var u = [], f, h = new Array(a.length), c = s / 2, v = o / 2, d = hi(s, o), g = 0; g < a.length / 4; g++) { + var p = void 0, y = void 0; + g === 0 ? p = a.length - 2 : p = g * 4 - 2, y = g * 4 + 2; + var E = n + c * a[g * 4], m = i + v * a[g * 4 + 1], T = -a[p] * a[y] - a[p + 1] * a[y + 1], C = d / Math.tan(Math.acos(T) / 2), S = E - C * a[p], b = m - C * a[p + 1], x = E + C * a[y], w = m + C * a[y + 1]; + g === 0 ? (h[a.length - 2] = S, h[a.length - 1] = b) : (h[g * 4 - 2] = S, h[g * 4 - 1] = b), h[g * 4] = x, h[g * 4 + 1] = w; + var D = a[p + 1], A = -a[p], L = D * a[y] + A * a[y + 1]; + L < 0 && (D *= -1, A *= -1); + var I = S + D * d, O = b + A * d; + f = Wr(e, r, n, i, I, O, d), f.length !== 0 && u.push(f[0], f[1]); + } + for (var P = 0; P < h.length / 4; P++) + f = _t(e, r, n, i, h[P * 4], h[P * 4 + 1], h[P * 4 + 2], h[P * 4 + 3], !1), f.length !== 0 && u.push(f[0], f[1]); + if (u.length > 2) { + for (var R = [u[0], u[1]], M = Math.pow(R[0] - e, 2) + Math.pow(R[1] - r, 2), k = 1; k < u.length / 2; k++) { + var B = Math.pow(u[k * 2] - e, 2) + Math.pow(u[k * 2 + 1] - r, 2); + B <= M && (R[0] = u[k * 2], R[1] = u[k * 2 + 1], M = B); + } + return R; + } + return u; +}, Da = function(e, r, a) { + var n = [e[0] - r[0], e[1] - r[1]], i = Math.sqrt(n[0] * n[0] + n[1] * n[1]), s = (i - a) / i; + return s < 0 && (s = 1e-5), [r[0] + s * n[0], r[1] + s * n[1]]; +}, st = function(e, r) { + var a = Gn(e, r); + return a = Do(a), a; +}, Do = function(e) { + for (var r, a, n = e.length / 2, i = 1 / 0, s = 1 / 0, o = -1 / 0, l = -1 / 0, u = 0; u < n; u++) + r = e[2 * u], a = e[2 * u + 1], i = Math.min(i, r), o = Math.max(o, r), s = Math.min(s, a), l = Math.max(l, a); + for (var f = 2 / (o - i), h = 2 / (l - s), c = 0; c < n; c++) + r = e[2 * c] = e[2 * c] * f, a = e[2 * c + 1] = e[2 * c + 1] * h, i = Math.min(i, r), o = Math.max(o, r), s = Math.min(s, a), l = Math.max(l, a); + if (s < -1) + for (var v = 0; v < n; v++) + a = e[2 * v + 1] = e[2 * v + 1] + (-1 - s); + return e; +}, Gn = function(e, r) { + var a = 1 / e * 2 * Math.PI, n = e % 2 === 0 ? Math.PI / 2 + a / 2 : Math.PI / 2; + n += r; + for (var i = new Array(e * 2), s, o = 0; o < e; o++) + s = o * a + n, i[2 * o] = Math.cos(s), i[2 * o + 1] = Math.sin(-s); + return i; +}, da = function(e, r) { + return Math.min(e / 4, r / 4, 8); +}, hi = function(e, r) { + return Math.min(e / 10, r / 10, 8); +}, So = function() { + return 8; +}, tg = function(e, r, a) { + return [e - 2 * r + a, 2 * (r - e), e]; +}, zn = function(e, r) { + return { + heightOffset: Math.min(15, 0.05 * r), + widthOffset: Math.min(100, 0.25 * e), + ctrlPtOffsetPct: 0.05 + }; +}, rg = Qe({ + dampingFactor: 0.8, + precision: 1e-6, + iterations: 200, + weight: function(e) { + return 1; + } +}), ag = { + pageRank: function(e) { + for (var r = rg(e), a = r.dampingFactor, n = r.precision, i = r.iterations, s = r.weight, o = this._private.cy, l = this.byGroup(), u = l.nodes, f = l.edges, h = u.length, c = h * h, v = f.length, d = new Array(c), g = new Array(h), p = (1 - a) / h, y = 0; y < h; y++) { + for (var E = 0; E < h; E++) { + var m = y * h + E; + d[m] = 0; + } + g[y] = 0; + } + for (var T = 0; T < v; T++) { + var C = f[T], S = C.data("source"), b = C.data("target"); + if (S !== b) { + var x = u.indexOfId(S), w = u.indexOfId(b), D = s(C), A = w * h + x; + d[A] += D, g[x] += D; + } + } + for (var L = 1 / h + p, I = 0; I < h; I++) + if (g[I] === 0) + for (var O = 0; O < h; O++) { + var P = O * h + I; + d[P] = L; + } + else + for (var R = 0; R < h; R++) { + var M = R * h + I; + d[M] = d[M] / g[I] + p; + } + for (var k = new Array(h), B = new Array(h), G, F = 0; F < h; F++) + k[F] = 1; + for (var $ = 0; $ < i; $++) { + for (var U = 0; U < h; U++) + B[U] = 0; + for (var _ = 0; _ < h; _++) + for (var Y = 0; Y < h; Y++) { + var W = _ * h + Y; + B[_] += d[W] * k[Y]; + } + zd(B), G = k, k = B, B = G; + for (var z = 0, K = 0; K < h; K++) { + var j = G[K] - k[K]; + z += j * j; + } + if (z < n) + break; + } + var Q = { + rank: function(ne) { + return ne = o.collection(ne)[0], k[u.indexOf(ne)]; + } + }; + return Q; + } + // pageRank +}, Zi = Qe({ + root: null, + weight: function(e) { + return 1; + }, + directed: !1, + alpha: 0 +}), Tr = { + degreeCentralityNormalized: function(e) { + e = Zi(e); + var r = this.cy(), a = this.nodes(), n = a.length; + if (e.directed) { + for (var f = {}, h = {}, c = 0, v = 0, d = 0; d < n; d++) { + var g = a[d], p = g.id(); + e.root = g; + var y = this.degreeCentrality(e); + c < y.indegree && (c = y.indegree), v < y.outdegree && (v = y.outdegree), f[p] = y.indegree, h[p] = y.outdegree; + } + return { + indegree: function(m) { + return c == 0 ? 0 : (ve(m) && (m = r.filter(m)), f[m.id()] / c); + }, + outdegree: function(m) { + return v === 0 ? 0 : (ve(m) && (m = r.filter(m)), h[m.id()] / v); + } + }; + } else { + for (var i = {}, s = 0, o = 0; o < n; o++) { + var l = a[o]; + e.root = l; + var u = this.degreeCentrality(e); + s < u.degree && (s = u.degree), i[l.id()] = u.degree; + } + return { + degree: function(m) { + return s === 0 ? 0 : (ve(m) && (m = r.filter(m)), i[m.id()] / s); + } + }; + } + }, + // degreeCentralityNormalized + // Implemented from the algorithm in Opsahl's paper + // "Node centrality in weighted networks: Generalizing degree and shortest paths" + // check the heading 2 "Degree" + degreeCentrality: function(e) { + e = Zi(e); + var r = this.cy(), a = this, n = e, i = n.root, s = n.weight, o = n.directed, l = n.alpha; + if (i = r.collection(i)[0], o) { + for (var v = i.connectedEdges(), d = v.filter(function(S) { + return S.target().same(i) && a.has(S); + }), g = v.filter(function(S) { + return S.source().same(i) && a.has(S); + }), p = d.length, y = g.length, E = 0, m = 0, T = 0; T < d.length; T++) + E += s(d[T]); + for (var C = 0; C < g.length; C++) + m += s(g[C]); + return { + indegree: Math.pow(p, 1 - l) * Math.pow(E, l), + outdegree: Math.pow(y, 1 - l) * Math.pow(m, l) + }; + } else { + for (var u = i.connectedEdges().intersection(a), f = u.length, h = 0, c = 0; c < u.length; c++) + h += s(u[c]); + return { + degree: Math.pow(f, 1 - l) * Math.pow(h, l) + }; + } + } + // degreeCentrality +}; +Tr.dc = Tr.degreeCentrality; +Tr.dcn = Tr.degreeCentralityNormalised = Tr.degreeCentralityNormalized; +var Qi = Qe({ + harmonic: !0, + weight: function() { + return 1; + }, + directed: !1, + root: null +}), Cr = { + closenessCentralityNormalized: function(e) { + for (var r = Qi(e), a = r.harmonic, n = r.weight, i = r.directed, s = this.cy(), o = {}, l = 0, u = this.nodes(), f = this.floydWarshall({ + weight: n, + directed: i + }), h = 0; h < u.length; h++) { + for (var c = 0, v = u[h], d = 0; d < u.length; d++) + if (h !== d) { + var g = f.distance(v, u[d]); + a ? c += 1 / g : c += g; + } + a || (c = 1 / c), l < c && (l = c), o[v.id()] = c; + } + return { + closeness: function(y) { + return l == 0 ? 0 : (ve(y) ? y = s.filter(y)[0].id() : y = y.id(), o[y] / l); + } + }; + }, + // Implemented from pseudocode from wikipedia + closenessCentrality: function(e) { + var r = Qi(e), a = r.root, n = r.weight, i = r.directed, s = r.harmonic; + a = this.filter(a)[0]; + for (var o = this.dijkstra({ + root: a, + weight: n, + directed: i + }), l = 0, u = this.nodes(), f = 0; f < u.length; f++) { + var h = u[f]; + if (!h.same(a)) { + var c = o.distanceTo(h); + s ? l += 1 / c : l += c; + } + } + return s ? l : 1 / l; + } + // closenessCentrality +}; +Cr.cc = Cr.closenessCentrality; +Cr.ccn = Cr.closenessCentralityNormalised = Cr.closenessCentralityNormalized; +var ng = Qe({ + weight: null, + directed: !1 +}), $n = { + // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes + betweennessCentrality: function(e) { + for (var r = ng(e), a = r.directed, n = r.weight, i = n != null, s = this.cy(), o = this.nodes(), l = {}, u = {}, f = 0, h = { + set: function(m, T) { + u[m] = T, T > f && (f = T); + }, + get: function(m) { + return u[m]; + } + }, c = 0; c < o.length; c++) { + var v = o[c], d = v.id(); + a ? l[d] = v.outgoers().nodes() : l[d] = v.openNeighborhood().nodes(), h.set(d, 0); + } + for (var g = function(m) { + for (var T = o[m].id(), C = [], S = {}, b = {}, x = {}, w = new ha.default(function(Y, W) { + return x[Y] - x[W]; + }), D = 0; D < o.length; D++) { + var A = o[D].id(); + S[A] = [], b[A] = 0, x[A] = 1 / 0; + } + for (b[T] = 1, x[T] = 0, w.push(T); !w.empty(); ) { + var L = w.pop(); + if (C.push(L), i) + for (var I = 0; I < l[L].length; I++) { + var O = l[L][I], P = s.getElementById(L), R = void 0; + P.edgesTo(O).length > 0 ? R = P.edgesTo(O)[0] : R = O.edgesTo(P)[0]; + var M = n(R); + O = O.id(), x[O] > x[L] + M && (x[O] = x[L] + M, w.nodes.indexOf(O) < 0 ? w.push(O) : w.updateItem(O), b[O] = 0, S[O] = []), x[O] == x[L] + M && (b[O] = b[O] + b[L], S[O].push(L)); + } + else + for (var k = 0; k < l[L].length; k++) { + var B = l[L][k].id(); + x[B] == 1 / 0 && (w.push(B), x[B] = x[L] + 1), x[B] == x[L] + 1 && (b[B] = b[B] + b[L], S[B].push(L)); + } + } + for (var G = {}, F = 0; F < o.length; F++) + G[o[F].id()] = 0; + for (; C.length > 0; ) { + for (var $ = C.pop(), U = 0; U < S[$].length; U++) { + var _ = S[$][U]; + G[_] = G[_] + b[_] / b[$] * (1 + G[$]); + } + $ != o[m].id() && h.set($, h.get($) + G[$]); + } + }, p = 0; p < o.length; p++) + g(p); + var y = { + betweenness: function(m) { + var T = s.collection(m).id(); + return h.get(T); + }, + betweennessNormalized: function(m) { + if (f == 0) + return 0; + var T = s.collection(m).id(); + return h.get(T) / f; + } + }; + return y.betweennessNormalised = y.betweennessNormalized, y; + } + // betweennessCentrality +}; +$n.bc = $n.betweennessCentrality; +var ig = Qe({ + expandFactor: 2, + // affects time of computation and cluster granularity to some extent: M * M + inflateFactor: 2, + // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) + multFactor: 1, + // optional self loops for each node. Use a neutral value to improve cluster computations. + maxIterations: 20, + // maximum number of iterations of the MCL algorithm in a single run + attributes: [ + // attributes/features used to group nodes, ie. similarity values between nodes + function(t) { + return 1; + } + ] +}), sg = function(e) { + return ig(e); +}, og = function(e, r) { + for (var a = 0, n = 0; n < r.length; n++) + a += r[n](e); + return a; +}, lg = function(e, r, a) { + for (var n = 0; n < r; n++) + e[n * r + n] = a; +}, Lo = function(e, r) { + for (var a, n = 0; n < r; n++) { + a = 0; + for (var i = 0; i < r; i++) + a += e[i * r + n]; + for (var s = 0; s < r; s++) + e[s * r + n] = e[s * r + n] / a; + } +}, ug = function(e, r, a) { + for (var n = new Array(a * a), i = 0; i < a; i++) { + for (var s = 0; s < a; s++) + n[i * a + s] = 0; + for (var o = 0; o < a; o++) + for (var l = 0; l < a; l++) + n[i * a + l] += e[i * a + o] * r[o * a + l]; + } + return n; +}, fg = function(e, r, a) { + for (var n = e.slice(0), i = 1; i < a; i++) + e = ug(e, n, r); + return e; +}, hg = function(e, r, a) { + for (var n = new Array(r * r), i = 0; i < r * r; i++) + n[i] = Math.pow(e[i], a); + return Lo(n, r), n; +}, vg = function(e, r, a, n) { + for (var i = 0; i < a; i++) { + var s = Math.round(e[i] * Math.pow(10, n)) / Math.pow(10, n), o = Math.round(r[i] * Math.pow(10, n)) / Math.pow(10, n); + if (s !== o) + return !1; + } + return !0; +}, cg = function(e, r, a, n) { + for (var i = [], s = 0; s < r; s++) { + for (var o = [], l = 0; l < r; l++) + Math.round(e[s * r + l] * 1e3) / 1e3 > 0 && o.push(a[l]); + o.length !== 0 && i.push(n.collection(o)); + } + return i; +}, dg = function(e, r) { + for (var a = 0; a < e.length; a++) + if (!r[a] || e[a].id() !== r[a].id()) + return !1; + return !0; +}, gg = function(e) { + for (var r = 0; r < e.length; r++) + for (var a = 0; a < e.length; a++) + r != a && dg(e[r], e[a]) && e.splice(a, 1); + return e; +}, Ji = function(e) { + for (var r = this.nodes(), a = this.edges(), n = this.cy(), i = sg(e), s = {}, o = 0; o < r.length; o++) + s[r[o].id()] = o; + for (var l = r.length, u = l * l, f = new Array(u), h, c = 0; c < u; c++) + f[c] = 0; + for (var v = 0; v < a.length; v++) { + var d = a[v], g = s[d.source().id()], p = s[d.target().id()], y = og(d, i.attributes); + f[g * l + p] += y, f[p * l + g] += y; + } + lg(f, l, i.multFactor), Lo(f, l); + for (var E = !0, m = 0; E && m < i.maxIterations; ) + E = !1, h = fg(f, l, i.expandFactor), f = hg(h, l, i.inflateFactor), vg(f, h, u, 4) || (E = !0), m++; + var T = cg(f, l, r, n); + return T = gg(T), T; +}, pg = { + markovClustering: Ji, + mcl: Ji +}, yg = function(e) { + return e; +}, Ao = function(e, r) { + return Math.abs(r - e); +}, ji = function(e, r, a) { + return e + Ao(r, a); +}, es = function(e, r, a) { + return e + Math.pow(a - r, 2); +}, mg = function(e) { + return Math.sqrt(e); +}, bg = function(e, r, a) { + return Math.max(e, Ao(r, a)); +}, _r = function(e, r, a, n, i) { + for (var s = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : yg, o = n, l, u, f = 0; f < e; f++) + l = r(f), u = a(f), o = i(o, l, u); + return s(o); +}, Lr = { + euclidean: function(e, r, a) { + return e >= 2 ? _r(e, r, a, 0, es, mg) : _r(e, r, a, 0, ji); + }, + squaredEuclidean: function(e, r, a) { + return _r(e, r, a, 0, es); + }, + manhattan: function(e, r, a) { + return _r(e, r, a, 0, ji); + }, + max: function(e, r, a) { + return _r(e, r, a, -1 / 0, bg); + } +}; +Lr["squared-euclidean"] = Lr.squaredEuclidean; +Lr.squaredeuclidean = Lr.squaredEuclidean; +function hn(t, e, r, a, n, i) { + var s; + return Be(t) ? s = t : s = Lr[t] || Lr.euclidean, e === 0 && Be(t) ? s(n, i) : s(e, r, a, n, i); +} +var Eg = Qe({ + k: 2, + m: 2, + sensitivityThreshold: 1e-4, + distance: "euclidean", + maxIterations: 10, + attributes: [], + testMode: !1, + testCentroids: null +}), vi = function(e) { + return Eg(e); +}, Ka = function(e, r, a, n, i) { + var s = i !== "kMedoids", o = s ? function(h) { + return a[h]; + } : function(h) { + return n[h](a); + }, l = function(c) { + return n[c](r); + }, u = a, f = r; + return hn(e, n.length, o, l, u, f); +}, An = function(e, r, a) { + for (var n = a.length, i = new Array(n), s = new Array(n), o = new Array(r), l = null, u = 0; u < n; u++) + i[u] = e.min(a[u]).value, s[u] = e.max(a[u]).value; + for (var f = 0; f < r; f++) { + l = []; + for (var h = 0; h < n; h++) + l[h] = Math.random() * (s[h] - i[h]) + i[h]; + o[f] = l; + } + return o; +}, Oo = function(e, r, a, n, i) { + for (var s = 1 / 0, o = 0, l = 0; l < r.length; l++) { + var u = Ka(a, e, r[l], n, i); + u < s && (s = u, o = l); + } + return o; +}, No = function(e, r, a) { + for (var n = [], i = null, s = 0; s < r.length; s++) + i = r[s], a[i.id()] === e && n.push(i); + return n; +}, wg = function(e, r, a) { + return Math.abs(r - e) <= a; +}, xg = function(e, r, a) { + for (var n = 0; n < e.length; n++) + for (var i = 0; i < e[n].length; i++) { + var s = Math.abs(e[n][i] - r[n][i]); + if (s > a) + return !1; + } + return !0; +}, Tg = function(e, r, a) { + for (var n = 0; n < a; n++) + if (e === r[n]) + return !0; + return !1; +}, ts = function(e, r) { + var a = new Array(r); + if (e.length < 50) + for (var n = 0; n < r; n++) { + for (var i = e[Math.floor(Math.random() * e.length)]; Tg(i, a, n); ) + i = e[Math.floor(Math.random() * e.length)]; + a[n] = i; + } + else + for (var s = 0; s < r; s++) + a[s] = e[Math.floor(Math.random() * e.length)]; + return a; +}, rs = function(e, r, a) { + for (var n = 0, i = 0; i < r.length; i++) + n += Ka("manhattan", r[i], e, a, "kMedoids"); + return n; +}, Cg = function(e) { + var r = this.cy(), a = this.nodes(), n = null, i = vi(e), s = new Array(i.k), o = {}, l; + i.testMode ? typeof i.testCentroids == "number" ? (i.testCentroids, l = An(a, i.k, i.attributes)) : Ue(i.testCentroids) === "object" ? l = i.testCentroids : l = An(a, i.k, i.attributes) : l = An(a, i.k, i.attributes); + for (var u = !0, f = 0; u && f < i.maxIterations; ) { + for (var h = 0; h < a.length; h++) + n = a[h], o[n.id()] = Oo(n, l, i.distance, i.attributes, "kMeans"); + u = !1; + for (var c = 0; c < i.k; c++) { + var v = No(c, a, o); + if (v.length !== 0) { + for (var d = i.attributes.length, g = l[c], p = new Array(d), y = new Array(d), E = 0; E < d; E++) { + y[E] = 0; + for (var m = 0; m < v.length; m++) + n = v[m], y[E] += i.attributes[E](n); + p[E] = y[E] / v.length, wg(p[E], g[E], i.sensitivityThreshold) || (u = !0); + } + l[c] = p, s[c] = r.collection(v); + } + } + f++; + } + return s; +}, Dg = function(e) { + var r = this.cy(), a = this.nodes(), n = null, i = vi(e), s = new Array(i.k), o, l = {}, u, f = new Array(i.k); + i.testMode ? typeof i.testCentroids == "number" || (Ue(i.testCentroids) === "object" ? o = i.testCentroids : o = ts(a, i.k)) : o = ts(a, i.k); + for (var h = !0, c = 0; h && c < i.maxIterations; ) { + for (var v = 0; v < a.length; v++) + n = a[v], l[n.id()] = Oo(n, o, i.distance, i.attributes, "kMedoids"); + h = !1; + for (var d = 0; d < o.length; d++) { + var g = No(d, a, l); + if (g.length !== 0) { + f[d] = rs(o[d], g, i.attributes); + for (var p = 0; p < g.length; p++) + u = rs(g[p], g, i.attributes), u < f[d] && (f[d] = u, o[d] = g[p], h = !0); + s[d] = r.collection(g); + } + } + c++; + } + return s; +}, Sg = function(e, r, a, n, i) { + for (var s, o, l = 0; l < r.length; l++) + for (var u = 0; u < e.length; u++) + n[l][u] = Math.pow(a[l][u], i.m); + for (var f = 0; f < e.length; f++) + for (var h = 0; h < i.attributes.length; h++) { + s = 0, o = 0; + for (var c = 0; c < r.length; c++) + s += n[c][f] * i.attributes[h](r[c]), o += n[c][f]; + e[f][h] = s / o; + } +}, Lg = function(e, r, a, n, i) { + for (var s = 0; s < e.length; s++) + r[s] = e[s].slice(); + for (var o, l, u, f = 2 / (i.m - 1), h = 0; h < a.length; h++) + for (var c = 0; c < n.length; c++) { + o = 0; + for (var v = 0; v < a.length; v++) + l = Ka(i.distance, n[c], a[h], i.attributes, "cmeans"), u = Ka(i.distance, n[c], a[v], i.attributes, "cmeans"), o += Math.pow(l / u, f); + e[c][h] = 1 / o; + } +}, Ag = function(e, r, a, n) { + for (var i = new Array(a.k), s = 0; s < i.length; s++) + i[s] = []; + for (var o, l, u = 0; u < r.length; u++) { + o = -1 / 0, l = -1; + for (var f = 0; f < r[0].length; f++) + r[u][f] > o && (o = r[u][f], l = f); + i[l].push(e[u]); + } + for (var h = 0; h < i.length; h++) + i[h] = n.collection(i[h]); + return i; +}, as = function(e) { + var r = this.cy(), a = this.nodes(), n = vi(e), i, s, o, l, u; + l = new Array(a.length); + for (var f = 0; f < a.length; f++) + l[f] = new Array(n.k); + o = new Array(a.length); + for (var h = 0; h < a.length; h++) + o[h] = new Array(n.k); + for (var c = 0; c < a.length; c++) { + for (var v = 0, d = 0; d < n.k; d++) + o[c][d] = Math.random(), v += o[c][d]; + for (var g = 0; g < n.k; g++) + o[c][g] = o[c][g] / v; + } + s = new Array(n.k); + for (var p = 0; p < n.k; p++) + s[p] = new Array(n.attributes.length); + u = new Array(a.length); + for (var y = 0; y < a.length; y++) + u[y] = new Array(n.k); + for (var E = !0, m = 0; E && m < n.maxIterations; ) + E = !1, Sg(s, a, o, u, n), Lg(o, l, s, a, n), xg(o, l, n.sensitivityThreshold) || (E = !0), m++; + return i = Ag(a, o, n, r), { + clusters: i, + degreeOfMembership: o + }; +}, Og = { + kMeans: Cg, + kMedoids: Dg, + fuzzyCMeans: as, + fcm: as +}, Ng = Qe({ + distance: "euclidean", + // distance metric to compare nodes + linkage: "min", + // linkage criterion : how to determine the distance between clusters of nodes + mode: "threshold", + // mode:'threshold' => clusters must be threshold distance apart + threshold: 1 / 0, + // the distance threshold + // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters + addDendrogram: !1, + // whether to add the dendrogram to the graph for viz + dendrogramDepth: 0, + // depth at which dendrogram branches are merged into the returned clusters + attributes: [] + // array of attr functions +}), Ig = { + single: "min", + complete: "max" +}, Mg = function(e) { + var r = Ng(e), a = Ig[r.linkage]; + return a != null && (r.linkage = a), r; +}, ns = function(e, r, a, n, i) { + for (var s = 0, o = 1 / 0, l, u = i.attributes, f = function(w, D) { + return hn(i.distance, u.length, function(A) { + return u[A](w); + }, function(A) { + return u[A](D); + }, w, D); + }, h = 0; h < e.length; h++) { + var c = e[h].key, v = a[c][n[c]]; + v < o && (s = c, o = v); + } + if (i.mode === "threshold" && o >= i.threshold || i.mode === "dendrogram" && e.length === 1) + return !1; + var d = r[s], g = r[n[s]], p; + i.mode === "dendrogram" ? p = { + left: d, + right: g, + key: d.key + } : p = { + value: d.value.concat(g.value), + key: d.key + }, e[d.index] = p, e.splice(g.index, 1), r[d.key] = p; + for (var y = 0; y < e.length; y++) { + var E = e[y]; + d.key === E.key ? l = 1 / 0 : i.linkage === "min" ? (l = a[d.key][E.key], a[d.key][E.key] > a[g.key][E.key] && (l = a[g.key][E.key])) : i.linkage === "max" ? (l = a[d.key][E.key], a[d.key][E.key] < a[g.key][E.key] && (l = a[g.key][E.key])) : i.linkage === "mean" ? l = (a[d.key][E.key] * d.size + a[g.key][E.key] * g.size) / (d.size + g.size) : i.mode === "dendrogram" ? l = f(E.value, d.value) : l = f(E.value[0], d.value[0]), a[d.key][E.key] = a[E.key][d.key] = l; + } + for (var m = 0; m < e.length; m++) { + var T = e[m].key; + if (n[T] === d.key || n[T] === g.key) { + for (var C = T, S = 0; S < e.length; S++) { + var b = e[S].key; + a[T][b] < a[T][C] && (C = b); + } + n[T] = C; + } + e[m].index = m; + } + return d.key = g.key = d.index = g.index = null, !0; +}, Sa = function t(e, r, a) { + e && (e.value ? r.push(e.value) : (e.left && t(e.left, r), e.right && t(e.right, r))); +}, Rg = function t(e, r) { + if (!e) + return ""; + if (e.left && e.right) { + var a = t(e.left, r), n = t(e.right, r), i = r.add({ + group: "nodes", + data: { + id: a + "," + n + } + }); + return r.add({ + group: "edges", + data: { + source: a, + target: i.id() + } + }), r.add({ + group: "edges", + data: { + source: n, + target: i.id() + } + }), i.id(); + } else if (e.value) + return e.value.id(); +}, kg = function t(e, r, a) { + if (!e) + return []; + var n = [], i = [], s = []; + return r === 0 ? (e.left && Sa(e.left, n), e.right && Sa(e.right, i), s = n.concat(i), [a.collection(s)]) : r === 1 ? e.value ? [a.collection(e.value)] : (e.left && Sa(e.left, n), e.right && Sa(e.right, i), [a.collection(n), a.collection(i)]) : e.value ? [a.collection(e.value)] : (e.left && (n = t(e.left, r - 1, a)), e.right && (i = t(e.right, r - 1, a)), n.concat(i)); +}, is = function(e) { + for (var r = this.cy(), a = this.nodes(), n = Mg(e), i = n.attributes, s = function(m, T) { + return hn(n.distance, i.length, function(C) { + return i[C](m); + }, function(C) { + return i[C](T); + }, m, T); + }, o = [], l = [], u = [], f = [], h = 0; h < a.length; h++) { + var c = { + value: n.mode === "dendrogram" ? a[h] : [a[h]], + key: h, + index: h + }; + o[h] = c, f[h] = c, l[h] = [], u[h] = 0; + } + for (var v = 0; v < o.length; v++) + for (var d = 0; d <= v; d++) { + var g = void 0; + n.mode === "dendrogram" ? g = v === d ? 1 / 0 : s(o[v].value, o[d].value) : g = v === d ? 1 / 0 : s(o[v].value[0], o[d].value[0]), l[v][d] = g, l[d][v] = g, g < l[v][u[v]] && (u[v] = d); + } + for (var p = ns(o, f, l, u, n); p; ) + p = ns(o, f, l, u, n); + var y; + return n.mode === "dendrogram" ? (y = kg(o[0], n.dendrogramDepth, r), n.addDendrogram && Rg(o[0], r)) : (y = new Array(o.length), o.forEach(function(E, m) { + E.key = E.index = null, y[m] = r.collection(E.value); + })), y; +}, Pg = { + hierarchicalClustering: is, + hca: is +}, Bg = Qe({ + distance: "euclidean", + // distance metric to compare attributes between two nodes + preference: "median", + // suitability of a data point to serve as an exemplar + damping: 0.8, + // damping factor between [0.5, 1) + maxIterations: 1e3, + // max number of iterations to run + minIterations: 100, + // min number of iterations to run in order for clustering to stop + attributes: [ + // functions to quantify the similarity between any two points + // e.g. node => node.data('weight') + ] +}), Fg = function(e) { + var r = e.damping, a = e.preference; + 0.5 <= r && r < 1 || Ge("Damping must range on [0.5, 1). Got: ".concat(r)); + var n = ["median", "mean", "min", "max"]; + return n.some(function(i) { + return i === a; + }) || ae(a) || Ge("Preference must be one of [".concat(n.map(function(i) { + return "'".concat(i, "'"); + }).join(", "), "] or a number. Got: ").concat(a)), Bg(e); +}, Gg = function(e, r, a, n) { + var i = function(o, l) { + return n[l](o); + }; + return -hn(e, n.length, function(s) { + return i(r, s); + }, function(s) { + return i(a, s); + }, r, a); +}, zg = function(e, r) { + var a = null; + return r === "median" ? a = Fd(e) : r === "mean" ? a = Bd(e) : r === "min" ? a = kd(e) : r === "max" ? a = Pd(e) : a = r, a; +}, $g = function(e, r, a) { + for (var n = [], i = 0; i < e; i++) + r[i * e + i] + a[i * e + i] > 0 && n.push(i); + return n; +}, ss = function(e, r, a) { + for (var n = [], i = 0; i < e; i++) { + for (var s = -1, o = -1 / 0, l = 0; l < a.length; l++) { + var u = a[l]; + r[i * e + u] > o && (s = u, o = r[i * e + u]); + } + s > 0 && n.push(s); + } + for (var f = 0; f < a.length; f++) + n[a[f]] = a[f]; + return n; +}, Vg = function(e, r, a) { + for (var n = ss(e, r, a), i = 0; i < a.length; i++) { + for (var s = [], o = 0; o < n.length; o++) + n[o] === a[i] && s.push(o); + for (var l = -1, u = -1 / 0, f = 0; f < s.length; f++) { + for (var h = 0, c = 0; c < s.length; c++) + h += r[s[c] * e + s[f]]; + h > u && (l = f, u = h); + } + a[i] = s[l]; + } + return n = ss(e, r, a), n; +}, os = function(e) { + for (var r = this.cy(), a = this.nodes(), n = Fg(e), i = {}, s = 0; s < a.length; s++) + i[a[s].id()] = s; + var o, l, u, f, h, c; + o = a.length, l = o * o, u = new Array(l); + for (var v = 0; v < l; v++) + u[v] = -1 / 0; + for (var d = 0; d < o; d++) + for (var g = 0; g < o; g++) + d !== g && (u[d * o + g] = Gg(n.distance, a[d], a[g], n.attributes)); + f = zg(u, n.preference); + for (var p = 0; p < o; p++) + u[p * o + p] = f; + h = new Array(l); + for (var y = 0; y < l; y++) + h[y] = 0; + c = new Array(l); + for (var E = 0; E < l; E++) + c[E] = 0; + for (var m = new Array(o), T = new Array(o), C = new Array(o), S = 0; S < o; S++) + m[S] = 0, T[S] = 0, C[S] = 0; + for (var b = new Array(o * n.minIterations), x = 0; x < b.length; x++) + b[x] = 0; + var w; + for (w = 0; w < n.maxIterations; w++) { + for (var D = 0; D < o; D++) { + for (var A = -1 / 0, L = -1 / 0, I = -1, O = 0, P = 0; P < o; P++) + m[P] = h[D * o + P], O = c[D * o + P] + u[D * o + P], O >= A ? (L = A, A = O, I = P) : O > L && (L = O); + for (var R = 0; R < o; R++) + h[D * o + R] = (1 - n.damping) * (u[D * o + R] - A) + n.damping * m[R]; + h[D * o + I] = (1 - n.damping) * (u[D * o + I] - L) + n.damping * m[I]; + } + for (var M = 0; M < o; M++) { + for (var k = 0, B = 0; B < o; B++) + m[B] = c[B * o + M], T[B] = Math.max(0, h[B * o + M]), k += T[B]; + k -= T[M], T[M] = h[M * o + M], k += T[M]; + for (var G = 0; G < o; G++) + c[G * o + M] = (1 - n.damping) * Math.min(0, k - T[G]) + n.damping * m[G]; + c[M * o + M] = (1 - n.damping) * (k - T[M]) + n.damping * m[M]; + } + for (var F = 0, $ = 0; $ < o; $++) { + var U = c[$ * o + $] + h[$ * o + $] > 0 ? 1 : 0; + b[w % n.minIterations * o + $] = U, F += U; + } + if (F > 0 && (w >= n.minIterations - 1 || w == n.maxIterations - 1)) { + for (var _ = 0, Y = 0; Y < o; Y++) { + C[Y] = 0; + for (var W = 0; W < n.minIterations; W++) + C[Y] += b[W * o + Y]; + (C[Y] === 0 || C[Y] === n.minIterations) && _++; + } + if (_ === o) + break; + } + } + for (var z = $g(o, h, c), K = Vg(o, u, z), j = {}, Q = 0; Q < z.length; Q++) + j[z[Q]] = []; + for (var ee = 0; ee < a.length; ee++) { + var ne = i[a[ee].id()], ce = K[ne]; + ce != null && j[ce].push(a[ee]); + } + for (var te = new Array(z.length), re = 0; re < z.length; re++) + te[re] = r.collection(j[z[re]]); + return te; +}, _g = { + affinityPropagation: os, + ap: os +}, Ug = Qe({ + root: void 0, + directed: !1 +}), Hg = { + hierholzer: function(e) { + if (!De(e)) { + var r = arguments; + e = { + root: r[0], + directed: r[1] + }; + } + var a = Ug(e), n = a.root, i = a.directed, s = this, o = !1, l, u, f; + n && (f = ve(n) ? this.filter(n)[0].id() : n[0].id()); + var h = {}, c = {}; + i ? s.forEach(function(E) { + var m = E.id(); + if (E.isNode()) { + var T = E.indegree(!0), C = E.outdegree(!0), S = T - C, b = C - T; + S == 1 ? l ? o = !0 : l = m : b == 1 ? u ? o = !0 : u = m : (b > 1 || S > 1) && (o = !0), h[m] = [], E.outgoers().forEach(function(x) { + x.isEdge() && h[m].push(x.id()); + }); + } else + c[m] = [void 0, E.target().id()]; + }) : s.forEach(function(E) { + var m = E.id(); + if (E.isNode()) { + var T = E.degree(!0); + T % 2 && (l ? u ? o = !0 : u = m : l = m), h[m] = [], E.connectedEdges().forEach(function(C) { + return h[m].push(C.id()); + }); + } else + c[m] = [E.source().id(), E.target().id()]; + }); + var v = { + found: !1, + trail: void 0 + }; + if (o) + return v; + if (u && l) + if (i) { + if (f && u != f) + return v; + f = u; + } else { + if (f && u != f && l != f) + return v; + f || (f = u); + } + else + f || (f = s[0].id()); + var d = function(m) { + for (var T = m, C = [m], S, b, x; h[T].length; ) + S = h[T].shift(), b = c[S][0], x = c[S][1], T != x ? (h[x] = h[x].filter(function(w) { + return w != S; + }), T = x) : !i && T != b && (h[b] = h[b].filter(function(w) { + return w != S; + }), T = b), C.unshift(S), C.unshift(T); + return C; + }, g = [], p = []; + for (p = d(f); p.length != 1; ) + h[p[0]].length == 0 ? (g.unshift(s.getElementById(p.shift())), g.unshift(s.getElementById(p.shift()))) : p = d(p.shift()).concat(p); + g.unshift(s.getElementById(p.shift())); + for (var y in h) + if (h[y].length) + return v; + return v.found = !0, v.trail = this.spawn(g, !0), v; + } +}, La = function() { + var e = this, r = {}, a = 0, n = 0, i = [], s = [], o = {}, l = function(c, v) { + for (var d = s.length - 1, g = [], p = e.spawn(); s[d].x != c || s[d].y != v; ) + g.push(s.pop().edge), d--; + g.push(s.pop().edge), g.forEach(function(y) { + var E = y.connectedNodes().intersection(e); + p.merge(y), E.forEach(function(m) { + var T = m.id(), C = m.connectedEdges().intersection(e); + p.merge(m), r[T].cutVertex ? p.merge(C.filter(function(S) { + return S.isLoop(); + })) : p.merge(C); + }); + }), i.push(p); + }, u = function h(c, v, d) { + c === d && (n += 1), r[v] = { + id: a, + low: a++, + cutVertex: !1 + }; + var g = e.getElementById(v).connectedEdges().intersection(e); + if (g.size() === 0) + i.push(e.spawn(e.getElementById(v))); + else { + var p, y, E, m; + g.forEach(function(T) { + p = T.source().id(), y = T.target().id(), E = p === v ? y : p, E !== d && (m = T.id(), o[m] || (o[m] = !0, s.push({ + x: v, + y: E, + edge: T + })), E in r ? r[v].low = Math.min(r[v].low, r[E].id) : (h(c, E, v), r[v].low = Math.min(r[v].low, r[E].low), r[v].id <= r[E].low && (r[v].cutVertex = !0, l(v, E)))); + }); + } + }; + e.forEach(function(h) { + if (h.isNode()) { + var c = h.id(); + c in r || (n = 0, u(c, c), r[c].cutVertex = n > 1); + } + }); + var f = Object.keys(r).filter(function(h) { + return r[h].cutVertex; + }).map(function(h) { + return e.getElementById(h); + }); + return { + cut: e.spawn(f), + components: i + }; +}, Yg = { + hopcroftTarjanBiconnected: La, + htbc: La, + htb: La, + hopcroftTarjanBiconnectedComponents: La +}, Aa = function() { + var e = this, r = {}, a = 0, n = [], i = [], s = e.spawn(e), o = function l(u) { + i.push(u), r[u] = { + index: a, + low: a++, + explored: !1 + }; + var f = e.getElementById(u).connectedEdges().intersection(e); + if (f.forEach(function(g) { + var p = g.target().id(); + p !== u && (p in r || l(p), r[p].explored || (r[u].low = Math.min(r[u].low, r[p].low))); + }), r[u].index === r[u].low) { + for (var h = e.spawn(); ; ) { + var c = i.pop(); + if (h.merge(e.getElementById(c)), r[c].low = r[u].index, r[c].explored = !0, c === u) + break; + } + var v = h.edgesWith(h), d = h.merge(v); + n.push(d), s = s.difference(d); + } + }; + return e.forEach(function(l) { + if (l.isNode()) { + var u = l.id(); + u in r || o(u); + } + }), { + cut: s, + components: n + }; +}, Xg = { + tarjanStronglyConnected: Aa, + tsc: Aa, + tscc: Aa, + tarjanStronglyConnectedComponents: Aa +}, Io = {}; +[ta, xd, Td, Dd, Ld, Od, Md, ag, Tr, Cr, $n, pg, Og, Pg, _g, Hg, Yg, Xg].forEach(function(t) { + de(Io, t); +}); +/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/ +var Mo = 0, Ro = 1, ko = 2, kt = function t(e) { + if (!(this instanceof t)) + return new t(e); + this.id = "Thenable/1.0.7", this.state = Mo, this.fulfillValue = void 0, this.rejectReason = void 0, this.onFulfilled = [], this.onRejected = [], this.proxy = { + then: this.then.bind(this) + }, typeof e == "function" && e.call(this, this.fulfill.bind(this), this.reject.bind(this)); +}; +kt.prototype = { + /* promise resolving methods */ + fulfill: function(e) { + return ls(this, Ro, "fulfillValue", e); + }, + reject: function(e) { + return ls(this, ko, "rejectReason", e); + }, + /* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */ + then: function(e, r) { + var a = this, n = new kt(); + return a.onFulfilled.push(fs(e, n, "fulfill")), a.onRejected.push(fs(r, n, "reject")), Po(a), n.proxy; + } +}; +var ls = function(e, r, a, n) { + return e.state === Mo && (e.state = r, e[a] = n, Po(e)), e; +}, Po = function(e) { + e.state === Ro ? us(e, "onFulfilled", e.fulfillValue) : e.state === ko && us(e, "onRejected", e.rejectReason); +}, us = function(e, r, a) { + if (e[r].length !== 0) { + var n = e[r]; + e[r] = []; + var i = function() { + for (var o = 0; o < n.length; o++) + n[o](a); + }; + typeof setImmediate == "function" ? setImmediate(i) : setTimeout(i, 0); + } +}, fs = function(e, r, a) { + return function(n) { + if (typeof e != "function") + r[a].call(r, n); + else { + var i; + try { + i = e(n); + } catch (s) { + r.reject(s); + return; + } + Wg(r, i); + } + }; +}, Wg = function t(e, r) { + if (e === r || e.proxy === r) { + e.reject(new TypeError("cannot resolve promise with itself")); + return; + } + var a; + if (Ue(r) === "object" && r !== null || typeof r == "function") + try { + a = r.then; + } catch (i) { + e.reject(i); + return; + } + if (typeof a == "function") { + var n = !1; + try { + a.call( + r, + /* resolvePromise */ + /* [Promises/A+ 2.3.3.3.1] */ + function(i) { + n || (n = !0, i === r ? e.reject(new TypeError("circular thenable chain")) : t(e, i)); + }, + /* rejectPromise */ + /* [Promises/A+ 2.3.3.3.2] */ + function(i) { + n || (n = !0, e.reject(i)); + } + ); + } catch (i) { + n || e.reject(i); + } + return; + } + e.fulfill(r); +}; +kt.all = function(t) { + return new kt(function(e, r) { + for (var a = new Array(t.length), n = 0, i = function(l, u) { + a[l] = u, n++, n === t.length && e(a); + }, s = 0; s < t.length; s++) + (function(o) { + var l = t[o], u = l != null && l.then != null; + if (u) + l.then(function(h) { + i(o, h); + }, function(h) { + r(h); + }); + else { + var f = l; + i(o, f); + } + })(s); + }); +}; +kt.resolve = function(t) { + return new kt(function(e, r) { + e(t); + }); +}; +kt.reject = function(t) { + return new kt(function(e, r) { + r(t); + }); +}; +var Rr = typeof Promise != "undefined" ? Promise : kt, Vn = function(e, r, a) { + var n = ni(e), i = !n, s = this._private = de({ + duration: 1e3 + }, r, a); + if (s.target = e, s.style = s.style || s.css, s.started = !1, s.playing = !1, s.hooked = !1, s.applying = !1, s.progress = 0, s.completes = [], s.frames = [], s.complete && Be(s.complete) && s.completes.push(s.complete), i) { + var o = e.position(); + s.startPosition = s.startPosition || { + x: o.x, + y: o.y + }, s.startStyle = s.startStyle || e.cy().style().getAnimationStartStyle(e, s.style); + } + if (n) { + var l = e.pan(); + s.startPan = { + x: l.x, + y: l.y + }, s.startZoom = e.zoom(); + } + this.length = 1, this[0] = this; +}, ir = Vn.prototype; +de(ir, { + instanceString: function() { + return "animation"; + }, + hook: function() { + var e = this._private; + if (!e.hooked) { + var r, a = e.target._private.animation; + e.queue ? r = a.queue : r = a.current, r.push(this), ht(e.target) && e.target.cy().addToAnimationPool(e.target), e.hooked = !0; + } + return this; + }, + play: function() { + var e = this._private; + return e.progress === 1 && (e.progress = 0), e.playing = !0, e.started = !1, e.stopped = !1, this.hook(), this; + }, + playing: function() { + return this._private.playing; + }, + apply: function() { + var e = this._private; + return e.applying = !0, e.started = !1, e.stopped = !1, this.hook(), this; + }, + applying: function() { + return this._private.applying; + }, + pause: function() { + var e = this._private; + return e.playing = !1, e.started = !1, this; + }, + stop: function() { + var e = this._private; + return e.playing = !1, e.started = !1, e.stopped = !0, this; + }, + rewind: function() { + return this.progress(0); + }, + fastforward: function() { + return this.progress(1); + }, + time: function(e) { + var r = this._private; + return e === void 0 ? r.progress * r.duration : this.progress(e / r.duration); + }, + progress: function(e) { + var r = this._private, a = r.playing; + return e === void 0 ? r.progress : (a && this.pause(), r.progress = e, r.started = !1, a && this.play(), this); + }, + completed: function() { + return this._private.progress === 1; + }, + reverse: function() { + var e = this._private, r = e.playing; + r && this.pause(), e.progress = 1 - e.progress, e.started = !1; + var a = function(u, f) { + var h = e[u]; + h != null && (e[u] = e[f], e[f] = h); + }; + if (a("zoom", "startZoom"), a("pan", "startPan"), a("position", "startPosition"), e.style) + for (var n = 0; n < e.style.length; n++) { + var i = e.style[n], s = i.name, o = e.startStyle[s]; + e.startStyle[s] = i, e.style[n] = o; + } + return r && this.play(), this; + }, + promise: function(e) { + var r = this._private, a; + switch (e) { + case "frame": + a = r.frames; + break; + default: + case "complete": + case "completed": + a = r.completes; + } + return new Rr(function(n, i) { + a.push(function() { + n(); + }); + }); + } +}); +ir.complete = ir.completed; +ir.run = ir.play; +ir.running = ir.playing; +var qg = { + animated: function() { + return function() { + var r = this, a = r.length !== void 0, n = a ? r : [r], i = this._private.cy || this; + if (!i.styleEnabled()) + return !1; + var s = n[0]; + if (s) + return s._private.animation.current.length > 0; + }; + }, + // animated + clearQueue: function() { + return function() { + var r = this, a = r.length !== void 0, n = a ? r : [r], i = this._private.cy || this; + if (!i.styleEnabled()) + return this; + for (var s = 0; s < n.length; s++) { + var o = n[s]; + o._private.animation.queue = []; + } + return this; + }; + }, + // clearQueue + delay: function() { + return function(r, a) { + var n = this._private.cy || this; + return n.styleEnabled() ? this.animate({ + delay: r, + duration: r, + complete: a + }) : this; + }; + }, + // delay + delayAnimation: function() { + return function(r, a) { + var n = this._private.cy || this; + return n.styleEnabled() ? this.animation({ + delay: r, + duration: r, + complete: a + }) : this; + }; + }, + // delay + animation: function() { + return function(r, a) { + var n = this, i = n.length !== void 0, s = i ? n : [n], o = this._private.cy || this, l = !i, u = !l; + if (!o.styleEnabled()) + return this; + var f = o.style(); + r = de({}, r, a); + var h = Object.keys(r).length === 0; + if (h) + return new Vn(s[0], r); + switch (r.duration === void 0 && (r.duration = 400), r.duration) { + case "slow": + r.duration = 600; + break; + case "fast": + r.duration = 200; + break; + } + if (u && (r.style = f.getPropsList(r.style || r.css), r.css = void 0), u && r.renderedPosition != null) { + var c = r.renderedPosition, v = o.pan(), d = o.zoom(); + r.position = Eo(c, d, v); + } + if (l && r.panBy != null) { + var g = r.panBy, p = o.pan(); + r.pan = { + x: p.x + g.x, + y: p.y + g.y + }; + } + var y = r.center || r.centre; + if (l && y != null) { + var E = o.getCenterPan(y.eles, r.zoom); + E != null && (r.pan = E); + } + if (l && r.fit != null) { + var m = r.fit, T = o.getFitViewport(m.eles || m.boundingBox, m.padding); + T != null && (r.pan = T.pan, r.zoom = T.zoom); + } + if (l && De(r.zoom)) { + var C = o.getZoomedViewport(r.zoom); + C != null ? (C.zoomed && (r.zoom = C.zoom), C.panned && (r.pan = C.pan)) : r.zoom = null; + } + return new Vn(s[0], r); + }; + }, + // animate + animate: function() { + return function(r, a) { + var n = this, i = n.length !== void 0, s = i ? n : [n], o = this._private.cy || this; + if (!o.styleEnabled()) + return this; + a && (r = de({}, r, a)); + for (var l = 0; l < s.length; l++) { + var u = s[l], f = u.animated() && (r.queue === void 0 || r.queue), h = u.animation(r, f ? { + queue: !0 + } : void 0); + h.play(); + } + return this; + }; + }, + // animate + stop: function() { + return function(r, a) { + var n = this, i = n.length !== void 0, s = i ? n : [n], o = this._private.cy || this; + if (!o.styleEnabled()) + return this; + for (var l = 0; l < s.length; l++) { + for (var u = s[l], f = u._private, h = f.animation.current, c = 0; c < h.length; c++) { + var v = h[c], d = v._private; + a && (d.duration = 0); + } + r && (f.animation.queue = []), a || (f.animation.current = []); + } + return o.notify("draw"), this; + }; + } + // stop +}, Kg = { + // access data field + data: function(e) { + var r = { + field: "data", + bindingEvent: "data", + allowBinding: !1, + allowSetting: !1, + allowGetting: !1, + settingEvent: "data", + settingTriggersEvent: !1, + triggerFnName: "trigger", + immutableKeys: {}, + // key => true if immutable + updateStyle: !1, + beforeGet: function(n) { + }, + beforeSet: function(n, i) { + }, + onSet: function(n) { + }, + canSet: function(n) { + return !0; + } + }; + return e = de({}, r, e), function(n, i) { + var s = e, o = this, l = o.length !== void 0, u = l ? o : [o], f = l ? o[0] : o; + if (ve(n)) { + var h = n.indexOf(".") !== -1, c = h && kc.default(n); + if (s.allowGetting && i === void 0) { + var v; + return f && (s.beforeGet(f), c && f._private[s.field][n] === void 0 ? v = Mc.default(f._private[s.field], c) : v = f._private[s.field][n]), v; + } else if (s.allowSetting && i !== void 0) { + var d = !s.immutableKeys[n]; + if (d) { + var g = ao({}, n, i); + s.beforeSet(o, g); + for (var p = 0, y = u.length; p < y; p++) { + var E = u[p]; + s.canSet(E) && (c && f._private[s.field][n] === void 0 ? Rc.default(E._private[s.field], c, i) : E._private[s.field][n] = i); + } + s.updateStyle && o.updateStyle(), s.onSet(o), s.settingTriggersEvent && o[s.triggerFnName](s.settingEvent); + } + } + } else if (s.allowSetting && De(n)) { + var m = n, T, C, S = Object.keys(m); + s.beforeSet(o, m); + for (var b = 0; b < S.length; b++) { + T = S[b], C = m[T]; + var x = !s.immutableKeys[T]; + if (x) + for (var w = 0; w < u.length; w++) { + var D = u[w]; + s.canSet(D) && (D._private[s.field][T] = C); + } + } + s.updateStyle && o.updateStyle(), s.onSet(o), s.settingTriggersEvent && o[s.triggerFnName](s.settingEvent); + } else if (s.allowBinding && Be(n)) { + var A = n; + o.on(s.bindingEvent, A); + } else if (s.allowGetting && n === void 0) { + var L; + return f && (s.beforeGet(f), L = f._private[s.field]), L; + } + return o; + }; + }, + // data + // remove data field + removeData: function(e) { + var r = { + field: "data", + event: "data", + triggerFnName: "trigger", + triggerEvent: !1, + immutableKeys: {} + // key => true if immutable + }; + return e = de({}, r, e), function(n) { + var i = e, s = this, o = s.length !== void 0, l = o ? s : [s]; + if (ve(n)) { + for (var u = n.split(/\s+/), f = u.length, h = 0; h < f; h++) { + var c = u[h]; + if (!Yt(c)) { + var v = !i.immutableKeys[c]; + if (v) + for (var d = 0, g = l.length; d < g; d++) + l[d]._private[i.field][c] = void 0; + } + } + i.triggerEvent && s[i.triggerFnName](i.event); + } else if (n === void 0) { + for (var p = 0, y = l.length; p < y; p++) + for (var E = l[p]._private[i.field], m = Object.keys(E), T = 0; T < m.length; T++) { + var C = m[T], S = !i.immutableKeys[C]; + S && (E[C] = void 0); + } + i.triggerEvent && s[i.triggerFnName](i.event); + } + return s; + }; + } + // removeData +}, Zg = { + eventAliasesOn: function(e) { + var r = e; + r.addListener = r.listen = r.bind = r.on, r.unlisten = r.unbind = r.off = r.removeListener, r.trigger = r.emit, r.pon = r.promiseOn = function(a, n) { + var i = this, s = Array.prototype.slice.call(arguments, 0); + return new Rr(function(o, l) { + var u = function(v) { + i.off.apply(i, h), o(v); + }, f = s.concat([u]), h = f.concat([]); + i.on.apply(i, f); + }); + }; + } +}, Oe = {}; +[qg, Kg, Zg].forEach(function(t) { + de(Oe, t); +}); +var Qg = { + animate: Oe.animate(), + animation: Oe.animation(), + animated: Oe.animated(), + clearQueue: Oe.clearQueue(), + delay: Oe.delay(), + delayAnimation: Oe.delayAnimation(), + stop: Oe.stop() +}, Ba = { + classes: function(e) { + var r = this; + if (e === void 0) { + var a = []; + return r[0]._private.classes.forEach(function(d) { + return a.push(d); + }), a; + } else + Me(e) || (e = (e || "").match(/\S+/g) || []); + for (var n = [], i = new Mr(e), s = 0; s < r.length; s++) { + for (var o = r[s], l = o._private, u = l.classes, f = !1, h = 0; h < e.length; h++) { + var c = e[h], v = u.has(c); + if (!v) { + f = !0; + break; + } + } + f || (f = u.size !== e.length), f && (l.classes = i, n.push(o)); + } + return n.length > 0 && this.spawn(n).updateStyle().emit("class"), r; + }, + addClass: function(e) { + return this.toggleClass(e, !0); + }, + hasClass: function(e) { + var r = this[0]; + return r != null && r._private.classes.has(e); + }, + toggleClass: function(e, r) { + Me(e) || (e = e.match(/\S+/g) || []); + for (var a = this, n = r === void 0, i = [], s = 0, o = a.length; s < o; s++) + for (var l = a[s], u = l._private.classes, f = !1, h = 0; h < e.length; h++) { + var c = e[h], v = u.has(c), d = !1; + r || n && !v ? (u.add(c), d = !0) : (!r || n && v) && (u.delete(c), d = !0), !f && d && (i.push(l), f = !0); + } + return i.length > 0 && this.spawn(i).updateStyle().emit("class"), a; + }, + removeClass: function(e) { + return this.toggleClass(e, !1); + }, + flashClass: function(e, r) { + var a = this; + if (r == null) + r = 250; + else if (r === 0) + return a; + return a.addClass(e), setTimeout(function() { + a.removeClass(e); + }, r), a; + } +}; +Ba.className = Ba.classNames = Ba.classes; +var Ce = { + metaChar: "[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]", + // chars we need to escape in let names, etc + comparatorOp: "=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=", + // binary comparison op (used in data selectors) + boolOp: "\\?|\\!|\\^", + // boolean (unary) operators (used in data selectors) + string: `"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`, + // string literals (used in data selectors) -- doublequotes | singlequotes + number: _e, + // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 + meta: "degree|indegree|outdegree", + // allowed metadata fields (i.e. allowed functions to use from Collection) + separator: "\\s*,\\s*", + // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass + descendant: "\\s+", + child: "\\s+>\\s+", + subject: "\\$", + group: "node|edge|\\*", + directedEdge: "\\s+->\\s+", + undirectedEdge: "\\s+<->\\s+" +}; +Ce.variable = "(?:[\\w-.]|(?:\\\\" + Ce.metaChar + "))+"; +Ce.className = "(?:[\\w-]|(?:\\\\" + Ce.metaChar + "))+"; +Ce.value = Ce.string + "|" + Ce.number; +Ce.id = Ce.variable; +(function() { + var t, e, r; + for (t = Ce.comparatorOp.split("|"), r = 0; r < t.length; r++) + e = t[r], Ce.comparatorOp += "|@" + e; + for (t = Ce.comparatorOp.split("|"), r = 0; r < t.length; r++) + e = t[r], !(e.indexOf("!") >= 0) && e !== "=" && (Ce.comparatorOp += "|\\!" + e); +})(); +var Ie = function() { + return { + checks: [] + }; +}, ie = { + /** E.g. node */ + GROUP: 0, + /** A collection of elements */ + COLLECTION: 1, + /** A filter(ele) function */ + FILTER: 2, + /** E.g. [foo > 1] */ + DATA_COMPARE: 3, + /** E.g. [foo] */ + DATA_EXIST: 4, + /** E.g. [?foo] */ + DATA_BOOL: 5, + /** E.g. [[degree > 2]] */ + META_COMPARE: 6, + /** E.g. :selected */ + STATE: 7, + /** E.g. #foo */ + ID: 8, + /** E.g. .foo */ + CLASS: 9, + /** E.g. #foo <-> #bar */ + UNDIRECTED_EDGE: 10, + /** E.g. #foo -> #bar */ + DIRECTED_EDGE: 11, + /** E.g. $#foo -> #bar */ + NODE_SOURCE: 12, + /** E.g. #foo -> $#bar */ + NODE_TARGET: 13, + /** E.g. $#foo <-> #bar */ + NODE_NEIGHBOR: 14, + /** E.g. #foo > #bar */ + CHILD: 15, + /** E.g. #foo #bar */ + DESCENDANT: 16, + /** E.g. $#foo > #bar */ + PARENT: 17, + /** E.g. $#foo #bar */ + ANCESTOR: 18, + /** E.g. #foo > $bar > #baz */ + COMPOUND_SPLIT: 19, + /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ + TRUE: 20 +}, _n = [{ + selector: ":selected", + matches: function(e) { + return e.selected(); + } +}, { + selector: ":unselected", + matches: function(e) { + return !e.selected(); + } +}, { + selector: ":selectable", + matches: function(e) { + return e.selectable(); + } +}, { + selector: ":unselectable", + matches: function(e) { + return !e.selectable(); + } +}, { + selector: ":locked", + matches: function(e) { + return e.locked(); + } +}, { + selector: ":unlocked", + matches: function(e) { + return !e.locked(); + } +}, { + selector: ":visible", + matches: function(e) { + return e.visible(); + } +}, { + selector: ":hidden", + matches: function(e) { + return !e.visible(); + } +}, { + selector: ":transparent", + matches: function(e) { + return e.transparent(); + } +}, { + selector: ":grabbed", + matches: function(e) { + return e.grabbed(); + } +}, { + selector: ":free", + matches: function(e) { + return !e.grabbed(); + } +}, { + selector: ":removed", + matches: function(e) { + return e.removed(); + } +}, { + selector: ":inside", + matches: function(e) { + return !e.removed(); + } +}, { + selector: ":grabbable", + matches: function(e) { + return e.grabbable(); + } +}, { + selector: ":ungrabbable", + matches: function(e) { + return !e.grabbable(); + } +}, { + selector: ":animated", + matches: function(e) { + return e.animated(); + } +}, { + selector: ":unanimated", + matches: function(e) { + return !e.animated(); + } +}, { + selector: ":parent", + matches: function(e) { + return e.isParent(); + } +}, { + selector: ":childless", + matches: function(e) { + return e.isChildless(); + } +}, { + selector: ":child", + matches: function(e) { + return e.isChild(); + } +}, { + selector: ":orphan", + matches: function(e) { + return e.isOrphan(); + } +}, { + selector: ":nonorphan", + matches: function(e) { + return e.isChild(); + } +}, { + selector: ":compound", + matches: function(e) { + return e.isNode() ? e.isParent() : e.source().isParent() || e.target().isParent(); + } +}, { + selector: ":loop", + matches: function(e) { + return e.isLoop(); + } +}, { + selector: ":simple", + matches: function(e) { + return e.isSimple(); + } +}, { + selector: ":active", + matches: function(e) { + return e.active(); + } +}, { + selector: ":inactive", + matches: function(e) { + return !e.active(); + } +}, { + selector: ":backgrounding", + matches: function(e) { + return e.backgrounding(); + } +}, { + selector: ":nonbackgrounding", + matches: function(e) { + return !e.backgrounding(); + } +}].sort(function(t, e) { + return td(t.selector, e.selector); +}), Jg = function() { + for (var t = {}, e, r = 0; r < _n.length; r++) + e = _n[r], t[e.selector] = e.matches; + return t; +}(), jg = function(e, r) { + return Jg[e](r); +}, ep = "(" + _n.map(function(t) { + return t.selector; +}).join("|") + ")", dr = function(e) { + return e.replace(new RegExp("\\\\(" + Ce.metaChar + ")", "g"), function(r, a) { + return a; + }); +}, zt = function(e, r, a) { + e[e.length - 1] = a; +}, Un = [{ + name: "group", + // just used for identifying when debugging + query: !0, + regex: "(" + Ce.group + ")", + populate: function(e, r, a) { + var n = Et(a, 1), i = n[0]; + r.checks.push({ + type: ie.GROUP, + value: i === "*" ? i : i + "s" + }); + } +}, { + name: "state", + query: !0, + regex: ep, + populate: function(e, r, a) { + var n = Et(a, 1), i = n[0]; + r.checks.push({ + type: ie.STATE, + value: i + }); + } +}, { + name: "id", + query: !0, + regex: "\\#(" + Ce.id + ")", + populate: function(e, r, a) { + var n = Et(a, 1), i = n[0]; + r.checks.push({ + type: ie.ID, + value: dr(i) + }); + } +}, { + name: "className", + query: !0, + regex: "\\.(" + Ce.className + ")", + populate: function(e, r, a) { + var n = Et(a, 1), i = n[0]; + r.checks.push({ + type: ie.CLASS, + value: dr(i) + }); + } +}, { + name: "dataExists", + query: !0, + regex: "\\[\\s*(" + Ce.variable + ")\\s*\\]", + populate: function(e, r, a) { + var n = Et(a, 1), i = n[0]; + r.checks.push({ + type: ie.DATA_EXIST, + field: dr(i) + }); + } +}, { + name: "dataCompare", + query: !0, + regex: "\\[\\s*(" + Ce.variable + ")\\s*(" + Ce.comparatorOp + ")\\s*(" + Ce.value + ")\\s*\\]", + populate: function(e, r, a) { + var n = Et(a, 3), i = n[0], s = n[1], o = n[2], l = new RegExp("^" + Ce.string + "$").exec(o) != null; + l ? o = o.substring(1, o.length - 1) : o = parseFloat(o), r.checks.push({ + type: ie.DATA_COMPARE, + field: dr(i), + operator: s, + value: o + }); + } +}, { + name: "dataBool", + query: !0, + regex: "\\[\\s*(" + Ce.boolOp + ")\\s*(" + Ce.variable + ")\\s*\\]", + populate: function(e, r, a) { + var n = Et(a, 2), i = n[0], s = n[1]; + r.checks.push({ + type: ie.DATA_BOOL, + field: dr(s), + operator: i + }); + } +}, { + name: "metaCompare", + query: !0, + regex: "\\[\\[\\s*(" + Ce.meta + ")\\s*(" + Ce.comparatorOp + ")\\s*(" + Ce.number + ")\\s*\\]\\]", + populate: function(e, r, a) { + var n = Et(a, 3), i = n[0], s = n[1], o = n[2]; + r.checks.push({ + type: ie.META_COMPARE, + field: dr(i), + operator: s, + value: parseFloat(o) + }); + } +}, { + name: "nextQuery", + separator: !0, + regex: Ce.separator, + populate: function(e, r) { + var a = e.currentSubject, n = e.edgeCount, i = e.compoundCount, s = e[e.length - 1]; + a != null && (s.subject = a, e.currentSubject = null), s.edgeCount = n, s.compoundCount = i, e.edgeCount = 0, e.compoundCount = 0; + var o = e[e.length++] = Ie(); + return o; + } +}, { + name: "directedEdge", + separator: !0, + regex: Ce.directedEdge, + populate: function(e, r) { + if (e.currentSubject == null) { + var a = Ie(), n = r, i = Ie(); + return a.checks.push({ + type: ie.DIRECTED_EDGE, + source: n, + target: i + }), zt(e, r, a), e.edgeCount++, i; + } else { + var s = Ie(), o = r, l = Ie(); + return s.checks.push({ + type: ie.NODE_SOURCE, + source: o, + target: l + }), zt(e, r, s), e.edgeCount++, l; + } + } +}, { + name: "undirectedEdge", + separator: !0, + regex: Ce.undirectedEdge, + populate: function(e, r) { + if (e.currentSubject == null) { + var a = Ie(), n = r, i = Ie(); + return a.checks.push({ + type: ie.UNDIRECTED_EDGE, + nodes: [n, i] + }), zt(e, r, a), e.edgeCount++, i; + } else { + var s = Ie(), o = r, l = Ie(); + return s.checks.push({ + type: ie.NODE_NEIGHBOR, + node: o, + neighbor: l + }), zt(e, r, s), l; + } + } +}, { + name: "child", + separator: !0, + regex: Ce.child, + populate: function(e, r) { + if (e.currentSubject == null) { + var a = Ie(), n = Ie(), i = e[e.length - 1]; + return a.checks.push({ + type: ie.CHILD, + parent: i, + child: n + }), zt(e, r, a), e.compoundCount++, n; + } else if (e.currentSubject === r) { + var s = Ie(), o = e[e.length - 1], l = Ie(), u = Ie(), f = Ie(), h = Ie(); + return s.checks.push({ + type: ie.COMPOUND_SPLIT, + left: o, + right: l, + subject: u + }), u.checks = r.checks, r.checks = [{ + type: ie.TRUE + }], h.checks.push({ + type: ie.TRUE + }), l.checks.push({ + type: ie.PARENT, + // type is swapped on right side queries + parent: h, + child: f + // empty for now + }), zt(e, o, s), e.currentSubject = u, e.compoundCount++, f; + } else { + var c = Ie(), v = Ie(), d = [{ + type: ie.PARENT, + parent: c, + child: v + }]; + return c.checks = r.checks, r.checks = d, e.compoundCount++, v; + } + } +}, { + name: "descendant", + separator: !0, + regex: Ce.descendant, + populate: function(e, r) { + if (e.currentSubject == null) { + var a = Ie(), n = Ie(), i = e[e.length - 1]; + return a.checks.push({ + type: ie.DESCENDANT, + ancestor: i, + descendant: n + }), zt(e, r, a), e.compoundCount++, n; + } else if (e.currentSubject === r) { + var s = Ie(), o = e[e.length - 1], l = Ie(), u = Ie(), f = Ie(), h = Ie(); + return s.checks.push({ + type: ie.COMPOUND_SPLIT, + left: o, + right: l, + subject: u + }), u.checks = r.checks, r.checks = [{ + type: ie.TRUE + }], h.checks.push({ + type: ie.TRUE + }), l.checks.push({ + type: ie.ANCESTOR, + // type is swapped on right side queries + ancestor: h, + descendant: f + // empty for now + }), zt(e, o, s), e.currentSubject = u, e.compoundCount++, f; + } else { + var c = Ie(), v = Ie(), d = [{ + type: ie.ANCESTOR, + ancestor: c, + descendant: v + }]; + return c.checks = r.checks, r.checks = d, e.compoundCount++, v; + } + } +}, { + name: "subject", + modifier: !0, + regex: Ce.subject, + populate: function(e, r) { + if (e.currentSubject != null && e.currentSubject !== r) + return Ne("Redefinition of subject in selector `" + e.toString() + "`"), !1; + e.currentSubject = r; + var a = e[e.length - 1], n = a.checks[0], i = n == null ? null : n.type; + i === ie.DIRECTED_EDGE ? n.type = ie.NODE_TARGET : i === ie.UNDIRECTED_EDGE && (n.type = ie.NODE_NEIGHBOR, n.node = n.nodes[1], n.neighbor = n.nodes[0], n.nodes = null); + } +}]; +Un.forEach(function(t) { + return t.regexObj = new RegExp("^" + t.regex); +}); +var tp = function(e) { + for (var r, a, n, i = 0; i < Un.length; i++) { + var s = Un[i], o = s.name, l = e.match(s.regexObj); + if (l != null) { + a = l, r = s, n = o; + var u = l[0]; + e = e.substring(u.length); + break; + } + } + return { + expr: r, + match: a, + name: n, + remaining: e + }; +}, rp = function(e) { + var r = e.match(/^\s+/); + if (r) { + var a = r[0]; + e = e.substring(a.length); + } + return e; +}, ap = function(e) { + var r = this, a = r.inputText = e, n = r[0] = Ie(); + for (r.length = 1, a = rp(a); ; ) { + var i = tp(a); + if (i.expr == null) + return Ne("The selector `" + e + "`is invalid"), !1; + var s = i.match.slice(1), o = i.expr.populate(r, n, s); + if (o === !1) + return !1; + if (o != null && (n = o), a = i.remaining, a.match(/^\s*$/)) + break; + } + var l = r[r.length - 1]; + r.currentSubject != null && (l.subject = r.currentSubject), l.edgeCount = r.edgeCount, l.compoundCount = r.compoundCount; + for (var u = 0; u < r.length; u++) { + var f = r[u]; + if (f.compoundCount > 0 && f.edgeCount > 0) + return Ne("The selector `" + e + "` is invalid because it uses both a compound selector and an edge selector"), !1; + if (f.edgeCount > 1) + return Ne("The selector `" + e + "` is invalid because it uses multiple edge selectors"), !1; + f.edgeCount === 1 && Ne("The selector `" + e + "` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes."); + } + return !0; +}, np = function() { + if (this.toStringCache != null) + return this.toStringCache; + for (var e = function(f) { + return f == null ? "" : f; + }, r = function(f) { + return ve(f) ? '"' + f + '"' : e(f); + }, a = function(f) { + return " " + f + " "; + }, n = function(f, h) { + var c = f.type, v = f.value; + switch (c) { + case ie.GROUP: { + var d = e(v); + return d.substring(0, d.length - 1); + } + case ie.DATA_COMPARE: { + var g = f.field, p = f.operator; + return "[" + g + a(e(p)) + r(v) + "]"; + } + case ie.DATA_BOOL: { + var y = f.operator, E = f.field; + return "[" + e(y) + E + "]"; + } + case ie.DATA_EXIST: { + var m = f.field; + return "[" + m + "]"; + } + case ie.META_COMPARE: { + var T = f.operator, C = f.field; + return "[[" + C + a(e(T)) + r(v) + "]]"; + } + case ie.STATE: + return v; + case ie.ID: + return "#" + v; + case ie.CLASS: + return "." + v; + case ie.PARENT: + case ie.CHILD: + return i(f.parent, h) + a(">") + i(f.child, h); + case ie.ANCESTOR: + case ie.DESCENDANT: + return i(f.ancestor, h) + " " + i(f.descendant, h); + case ie.COMPOUND_SPLIT: { + var S = i(f.left, h), b = i(f.subject, h), x = i(f.right, h); + return S + (S.length > 0 ? " " : "") + b + x; + } + case ie.TRUE: + return ""; + } + }, i = function(f, h) { + return f.checks.reduce(function(c, v, d) { + return c + (h === f && d === 0 ? "$" : "") + n(v, h); + }, ""); + }, s = "", o = 0; o < this.length; o++) { + var l = this[o]; + s += i(l, l.subject), this.length > 1 && o < this.length - 1 && (s += ", "); + } + return this.toStringCache = s, s; +}, ip = { + parse: ap, + toString: np +}, Bo = function(e, r, a) { + var n, i = ve(e), s = ae(e), o = ve(a), l, u, f = !1, h = !1, c = !1; + switch (r.indexOf("!") >= 0 && (r = r.replace("!", ""), h = !0), r.indexOf("@") >= 0 && (r = r.replace("@", ""), f = !0), (i || o || f) && (l = !i && !s ? "" : "" + e, u = "" + a), f && (e = l = l.toLowerCase(), a = u = u.toLowerCase()), r) { + case "*=": + n = l.indexOf(u) >= 0; + break; + case "$=": + n = l.indexOf(u, l.length - u.length) >= 0; + break; + case "^=": + n = l.indexOf(u) === 0; + break; + case "=": + n = e === a; + break; + case ">": + c = !0, n = e > a; + break; + case ">=": + c = !0, n = e >= a; + break; + case "<": + c = !0, n = e < a; + break; + case "<=": + c = !0, n = e <= a; + break; + default: + n = !1; + break; + } + return h && (e != null || !c) && (n = !n), n; +}, sp = function(e, r) { + switch (r) { + case "?": + return !!e; + case "!": + return !e; + case "^": + return e === void 0; + } +}, op = function(e) { + return e !== void 0; +}, ci = function(e, r) { + return e.data(r); +}, lp = function(e, r) { + return e[r](); +}, ze = [], Pe = function(e, r) { + return e.checks.every(function(a) { + return ze[a.type](a, r); + }); +}; +ze[ie.GROUP] = function(t, e) { + var r = t.value; + return r === "*" || r === e.group(); +}; +ze[ie.STATE] = function(t, e) { + var r = t.value; + return jg(r, e); +}; +ze[ie.ID] = function(t, e) { + var r = t.value; + return e.id() === r; +}; +ze[ie.CLASS] = function(t, e) { + var r = t.value; + return e.hasClass(r); +}; +ze[ie.META_COMPARE] = function(t, e) { + var r = t.field, a = t.operator, n = t.value; + return Bo(lp(e, r), a, n); +}; +ze[ie.DATA_COMPARE] = function(t, e) { + var r = t.field, a = t.operator, n = t.value; + return Bo(ci(e, r), a, n); +}; +ze[ie.DATA_BOOL] = function(t, e) { + var r = t.field, a = t.operator; + return sp(ci(e, r), a); +}; +ze[ie.DATA_EXIST] = function(t, e) { + var r = t.field; + return t.operator, op(ci(e, r)); +}; +ze[ie.UNDIRECTED_EDGE] = function(t, e) { + var r = t.nodes[0], a = t.nodes[1], n = e.source(), i = e.target(); + return Pe(r, n) && Pe(a, i) || Pe(a, n) && Pe(r, i); +}; +ze[ie.NODE_NEIGHBOR] = function(t, e) { + return Pe(t.node, e) && e.neighborhood().some(function(r) { + return r.isNode() && Pe(t.neighbor, r); + }); +}; +ze[ie.DIRECTED_EDGE] = function(t, e) { + return Pe(t.source, e.source()) && Pe(t.target, e.target()); +}; +ze[ie.NODE_SOURCE] = function(t, e) { + return Pe(t.source, e) && e.outgoers().some(function(r) { + return r.isNode() && Pe(t.target, r); + }); +}; +ze[ie.NODE_TARGET] = function(t, e) { + return Pe(t.target, e) && e.incomers().some(function(r) { + return r.isNode() && Pe(t.source, r); + }); +}; +ze[ie.CHILD] = function(t, e) { + return Pe(t.child, e) && Pe(t.parent, e.parent()); +}; +ze[ie.PARENT] = function(t, e) { + return Pe(t.parent, e) && e.children().some(function(r) { + return Pe(t.child, r); + }); +}; +ze[ie.DESCENDANT] = function(t, e) { + return Pe(t.descendant, e) && e.ancestors().some(function(r) { + return Pe(t.ancestor, r); + }); +}; +ze[ie.ANCESTOR] = function(t, e) { + return Pe(t.ancestor, e) && e.descendants().some(function(r) { + return Pe(t.descendant, r); + }); +}; +ze[ie.COMPOUND_SPLIT] = function(t, e) { + return Pe(t.subject, e) && Pe(t.left, e) && Pe(t.right, e); +}; +ze[ie.TRUE] = function() { + return !0; +}; +ze[ie.COLLECTION] = function(t, e) { + var r = t.value; + return r.has(e); +}; +ze[ie.FILTER] = function(t, e) { + var r = t.value; + return r(e); +}; +var up = function(e) { + var r = this; + if (r.length === 1 && r[0].checks.length === 1 && r[0].checks[0].type === ie.ID) + return e.getElementById(r[0].checks[0].value).collection(); + var a = function(i) { + for (var s = 0; s < r.length; s++) { + var o = r[s]; + if (Pe(o, i)) + return !0; + } + return !1; + }; + return r.text() == null && (a = function() { + return !0; + }), e.filter(a); +}, fp = function(e) { + for (var r = this, a = 0; a < r.length; a++) { + var n = r[a]; + if (Pe(n, e)) + return !0; + } + return !1; +}, hp = { + matches: fp, + filter: up +}, Wt = function(e) { + this.inputText = e, this.currentSubject = null, this.compoundCount = 0, this.edgeCount = 0, this.length = 0, e == null || ve(e) && e.match(/^\s*$/) || (ht(e) ? this.addQuery({ + checks: [{ + type: ie.COLLECTION, + value: e.collection() + }] + }) : Be(e) ? this.addQuery({ + checks: [{ + type: ie.FILTER, + value: e + }] + }) : ve(e) ? this.parse(e) || (this.invalid = !0) : Ge("A selector must be created from a string; found ")); +}, qt = Wt.prototype; +[ip, hp].forEach(function(t) { + return de(qt, t); +}); +qt.text = function() { + return this.inputText; +}; +qt.size = function() { + return this.length; +}; +qt.eq = function(t) { + return this[t]; +}; +qt.sameText = function(t) { + return !this.invalid && !t.invalid && this.text() === t.text(); +}; +qt.addQuery = function(t) { + this[this.length++] = t; +}; +qt.selector = qt.toString; +var Ut = { + allAre: function(e) { + var r = new Wt(e); + return this.every(function(a) { + return r.matches(a); + }); + }, + is: function(e) { + var r = new Wt(e); + return this.some(function(a) { + return r.matches(a); + }); + }, + some: function(e, r) { + for (var a = 0; a < this.length; a++) { + var n = r ? e.apply(r, [this[a], a, this]) : e(this[a], a, this); + if (n) + return !0; + } + return !1; + }, + every: function(e, r) { + for (var a = 0; a < this.length; a++) { + var n = r ? e.apply(r, [this[a], a, this]) : e(this[a], a, this); + if (!n) + return !1; + } + return !0; + }, + same: function(e) { + if (this === e) + return !0; + e = this.cy().collection(e); + var r = this.length, a = e.length; + return r !== a ? !1 : r === 1 ? this[0] === e[0] : this.every(function(n) { + return e.hasElementWithId(n.id()); + }); + }, + anySame: function(e) { + return e = this.cy().collection(e), this.some(function(r) { + return e.hasElementWithId(r.id()); + }); + }, + allAreNeighbors: function(e) { + e = this.cy().collection(e); + var r = this.neighborhood(); + return e.every(function(a) { + return r.hasElementWithId(a.id()); + }); + }, + contains: function(e) { + e = this.cy().collection(e); + var r = this; + return e.every(function(a) { + return r.hasElementWithId(a.id()); + }); + } +}; +Ut.allAreNeighbours = Ut.allAreNeighbors; +Ut.has = Ut.contains; +Ut.equal = Ut.equals = Ut.same; +var gt = function(e, r) { + return function(n, i, s, o) { + var l = n, u = this, f; + if (l == null ? f = "" : ht(l) && l.length === 1 && (f = l.id()), u.length === 1 && f) { + var h = u[0]._private, c = h.traversalCache = h.traversalCache || {}, v = c[r] = c[r] || [], d = ar(f), g = v[d]; + return g || (v[d] = e.call(u, n, i, s, o)); + } else + return e.call(u, n, i, s, o); + }; +}, Ar = { + parent: function(e) { + var r = []; + if (this.length === 1) { + var a = this[0]._private.parent; + if (a) + return a; + } + for (var n = 0; n < this.length; n++) { + var i = this[n], s = i._private.parent; + s && r.push(s); + } + return this.spawn(r, !0).filter(e); + }, + parents: function(e) { + for (var r = [], a = this.parent(); a.nonempty(); ) { + for (var n = 0; n < a.length; n++) { + var i = a[n]; + r.push(i); + } + a = a.parent(); + } + return this.spawn(r, !0).filter(e); + }, + commonAncestors: function(e) { + for (var r, a = 0; a < this.length; a++) { + var n = this[a], i = n.parents(); + r = r || i, r = r.intersect(i); + } + return r.filter(e); + }, + orphans: function(e) { + return this.stdFilter(function(r) { + return r.isOrphan(); + }).filter(e); + }, + nonorphans: function(e) { + return this.stdFilter(function(r) { + return r.isChild(); + }).filter(e); + }, + children: gt(function(t) { + for (var e = [], r = 0; r < this.length; r++) + for (var a = this[r], n = a._private.children, i = 0; i < n.length; i++) + e.push(n[i]); + return this.spawn(e, !0).filter(t); + }, "children"), + siblings: function(e) { + return this.parent().children().not(this).filter(e); + }, + isParent: function() { + var e = this[0]; + if (e) + return e.isNode() && e._private.children.length !== 0; + }, + isChildless: function() { + var e = this[0]; + if (e) + return e.isNode() && e._private.children.length === 0; + }, + isChild: function() { + var e = this[0]; + if (e) + return e.isNode() && e._private.parent != null; + }, + isOrphan: function() { + var e = this[0]; + if (e) + return e.isNode() && e._private.parent == null; + }, + descendants: function(e) { + var r = []; + function a(n) { + for (var i = 0; i < n.length; i++) { + var s = n[i]; + r.push(s), s.children().nonempty() && a(s.children()); + } + } + return a(this.children()), this.spawn(r, !0).filter(e); + } +}; +function di(t, e, r, a) { + for (var n = [], i = new Mr(), s = t.cy(), o = s.hasCompoundNodes(), l = 0; l < t.length; l++) { + var u = t[l]; + r ? n.push(u) : o && a(n, i, u); + } + for (; n.length > 0; ) { + var f = n.shift(); + e(f), i.add(f.id()), o && a(n, i, f); + } + return t; +} +function Fo(t, e, r) { + if (r.isParent()) + for (var a = r._private.children, n = 0; n < a.length; n++) { + var i = a[n]; + e.has(i.id()) || t.push(i); + } +} +Ar.forEachDown = function(t) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + return di(this, t, e, Fo); +}; +function Go(t, e, r) { + if (r.isChild()) { + var a = r._private.parent; + e.has(a.id()) || t.push(a); + } +} +Ar.forEachUp = function(t) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + return di(this, t, e, Go); +}; +function vp(t, e, r) { + Go(t, e, r), Fo(t, e, r); +} +Ar.forEachUpAndDown = function(t) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + return di(this, t, e, vp); +}; +Ar.ancestors = Ar.parents; +var na, zo; +na = zo = { + data: Oe.data({ + field: "data", + bindingEvent: "data", + allowBinding: !0, + allowSetting: !0, + settingEvent: "data", + settingTriggersEvent: !0, + triggerFnName: "trigger", + allowGetting: !0, + immutableKeys: { + id: !0, + source: !0, + target: !0, + parent: !0 + }, + updateStyle: !0 + }), + removeData: Oe.removeData({ + field: "data", + event: "data", + triggerFnName: "trigger", + triggerEvent: !0, + immutableKeys: { + id: !0, + source: !0, + target: !0, + parent: !0 + }, + updateStyle: !0 + }), + scratch: Oe.data({ + field: "scratch", + bindingEvent: "scratch", + allowBinding: !0, + allowSetting: !0, + settingEvent: "scratch", + settingTriggersEvent: !0, + triggerFnName: "trigger", + allowGetting: !0, + updateStyle: !0 + }), + removeScratch: Oe.removeData({ + field: "scratch", + event: "scratch", + triggerFnName: "trigger", + triggerEvent: !0, + updateStyle: !0 + }), + rscratch: Oe.data({ + field: "rscratch", + allowBinding: !1, + allowSetting: !0, + settingTriggersEvent: !1, + allowGetting: !0 + }), + removeRscratch: Oe.removeData({ + field: "rscratch", + triggerEvent: !1 + }), + id: function() { + var e = this[0]; + if (e) + return e._private.data.id; + } +}; +na.attr = na.data; +na.removeAttr = na.removeData; +var cp = zo, vn = {}; +function On(t) { + return function(e) { + var r = this; + if (e === void 0 && (e = !0), r.length !== 0) + if (r.isNode() && !r.removed()) { + for (var a = 0, n = r[0], i = n._private.edges, s = 0; s < i.length; s++) { + var o = i[s]; + !e && o.isLoop() || (a += t(n, o)); + } + return a; + } else + return; + }; +} +de(vn, { + degree: On(function(t, e) { + return e.source().same(e.target()) ? 2 : 1; + }), + indegree: On(function(t, e) { + return e.target().same(t) ? 1 : 0; + }), + outdegree: On(function(t, e) { + return e.source().same(t) ? 1 : 0; + }) +}); +function gr(t, e) { + return function(r) { + for (var a, n = this.nodes(), i = 0; i < n.length; i++) { + var s = n[i], o = s[t](r); + o !== void 0 && (a === void 0 || e(o, a)) && (a = o); + } + return a; + }; +} +de(vn, { + minDegree: gr("degree", function(t, e) { + return t < e; + }), + maxDegree: gr("degree", function(t, e) { + return t > e; + }), + minIndegree: gr("indegree", function(t, e) { + return t < e; + }), + maxIndegree: gr("indegree", function(t, e) { + return t > e; + }), + minOutdegree: gr("outdegree", function(t, e) { + return t < e; + }), + maxOutdegree: gr("outdegree", function(t, e) { + return t > e; + }) +}); +de(vn, { + totalDegree: function(e) { + for (var r = 0, a = this.nodes(), n = 0; n < a.length; n++) + r += a[n].degree(e); + return r; + } +}); +var Tt, $o, Vo = function(e, r, a) { + for (var n = 0; n < e.length; n++) { + var i = e[n]; + if (!i.locked()) { + var s = i._private.position, o = { + x: r.x != null ? r.x - s.x : 0, + y: r.y != null ? r.y - s.y : 0 + }; + i.isParent() && !(o.x === 0 && o.y === 0) && i.children().shift(o, a), i.dirtyBoundingBoxCache(); + } + } +}, hs = { + field: "position", + bindingEvent: "position", + allowBinding: !0, + allowSetting: !0, + settingEvent: "position", + settingTriggersEvent: !0, + triggerFnName: "emitAndNotify", + allowGetting: !0, + validKeys: ["x", "y"], + beforeGet: function(e) { + e.updateCompoundBounds(); + }, + beforeSet: function(e, r) { + Vo(e, r, !1); + }, + onSet: function(e) { + e.dirtyCompoundBoundsCache(); + }, + canSet: function(e) { + return !e.locked(); + } +}; +Tt = $o = { + position: Oe.data(hs), + // position but no notification to renderer + silentPosition: Oe.data(de({}, hs, { + allowBinding: !1, + allowSetting: !0, + settingTriggersEvent: !1, + allowGetting: !1, + beforeSet: function(e, r) { + Vo(e, r, !0); + }, + onSet: function(e) { + e.dirtyCompoundBoundsCache(); + } + })), + positions: function(e, r) { + if (De(e)) + r ? this.silentPosition(e) : this.position(e); + else if (Be(e)) { + var a = e, n = this.cy(); + n.startBatch(); + for (var i = 0; i < this.length; i++) { + var s = this[i], o = void 0; + (o = a(s, i)) && (r ? s.silentPosition(o) : s.position(o)); + } + n.endBatch(); + } + return this; + }, + silentPositions: function(e) { + return this.positions(e, !0); + }, + shift: function(e, r, a) { + var n; + if (De(e) ? (n = { + x: ae(e.x) ? e.x : 0, + y: ae(e.y) ? e.y : 0 + }, a = r) : ve(e) && ae(r) && (n = { + x: 0, + y: 0 + }, n[e] = r), n != null) { + var i = this.cy(); + i.startBatch(); + for (var s = 0; s < this.length; s++) { + var o = this[s]; + if (!(i.hasCompoundNodes() && o.isChild() && o.ancestors().anySame(this))) { + var l = o.position(), u = { + x: l.x + n.x, + y: l.y + n.y + }; + a ? o.silentPosition(u) : o.position(u); + } + } + i.endBatch(); + } + return this; + }, + silentShift: function(e, r) { + return De(e) ? this.shift(e, !0) : ve(e) && ae(r) && this.shift(e, r, !0), this; + }, + // get/set the rendered (i.e. on screen) positon of the element + renderedPosition: function(e, r) { + var a = this[0], n = this.cy(), i = n.zoom(), s = n.pan(), o = De(e) ? e : void 0, l = o !== void 0 || r !== void 0 && ve(e); + if (a && a.isNode()) + if (l) + for (var u = 0; u < this.length; u++) { + var f = this[u]; + r !== void 0 ? f.position(e, (r - s[e]) / i) : o !== void 0 && f.position(Eo(o, i, s)); + } + else { + var h = a.position(); + return o = fn(h, i, s), e === void 0 ? o : o[e]; + } + else if (!l) + return; + return this; + }, + // get/set the position relative to the parent + relativePosition: function(e, r) { + var a = this[0], n = this.cy(), i = De(e) ? e : void 0, s = i !== void 0 || r !== void 0 && ve(e), o = n.hasCompoundNodes(); + if (a && a.isNode()) + if (s) + for (var l = 0; l < this.length; l++) { + var u = this[l], f = o ? u.parent() : null, h = f && f.length > 0, c = h; + h && (f = f[0]); + var v = c ? f.position() : { + x: 0, + y: 0 + }; + r !== void 0 ? u.position(e, r + v[e]) : i !== void 0 && u.position({ + x: i.x + v.x, + y: i.y + v.y + }); + } + else { + var d = a.position(), g = o ? a.parent() : null, p = g && g.length > 0, y = p; + p && (g = g[0]); + var E = y ? g.position() : { + x: 0, + y: 0 + }; + return i = { + x: d.x - E.x, + y: d.y - E.y + }, e === void 0 ? i : i[e]; + } + else if (!s) + return; + return this; + } +}; +Tt.modelPosition = Tt.point = Tt.position; +Tt.modelPositions = Tt.points = Tt.positions; +Tt.renderedPoint = Tt.renderedPosition; +Tt.relativePoint = Tt.relativePosition; +var dp = $o, Dr, Zt; +Dr = Zt = {}; +Zt.renderedBoundingBox = function(t) { + var e = this.boundingBox(t), r = this.cy(), a = r.zoom(), n = r.pan(), i = e.x1 * a + n.x, s = e.x2 * a + n.x, o = e.y1 * a + n.y, l = e.y2 * a + n.y; + return { + x1: i, + x2: s, + y1: o, + y2: l, + w: s - i, + h: l - o + }; +}; +Zt.dirtyCompoundBoundsCache = function() { + var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, e = this.cy(); + return !e.styleEnabled() || !e.hasCompoundNodes() ? this : (this.forEachUp(function(r) { + if (r.isParent()) { + var a = r._private; + a.compoundBoundsClean = !1, a.bbCache = null, t || r.emitAndNotify("bounds"); + } + }), this); +}; +Zt.updateCompoundBounds = function() { + var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, e = this.cy(); + if (!e.styleEnabled() || !e.hasCompoundNodes()) + return this; + if (!t && e.batching()) + return this; + function r(s) { + if (!s.isParent()) + return; + var o = s._private, l = s.children(), u = s.pstyle("compound-sizing-wrt-labels").value === "include", f = { + width: { + val: s.pstyle("min-width").pfValue, + left: s.pstyle("min-width-bias-left"), + right: s.pstyle("min-width-bias-right") + }, + height: { + val: s.pstyle("min-height").pfValue, + top: s.pstyle("min-height-bias-top"), + bottom: s.pstyle("min-height-bias-bottom") + } + }, h = l.boundingBox({ + includeLabels: u, + includeOverlays: !1, + // updating the compound bounds happens outside of the regular + // cache cycle (i.e. before fired events) + useCache: !1 + }), c = o.position; + (h.w === 0 || h.h === 0) && (h = { + w: s.pstyle("width").pfValue, + h: s.pstyle("height").pfValue + }, h.x1 = c.x - h.w / 2, h.x2 = c.x + h.w / 2, h.y1 = c.y - h.h / 2, h.y2 = c.y + h.h / 2); + function v(w, D, A) { + var L = 0, I = 0, O = D + A; + return w > 0 && O > 0 && (L = D / O * w, I = A / O * w), { + biasDiff: L, + biasComplementDiff: I + }; + } + function d(w, D, A, L) { + if (A.units === "%") + switch (L) { + case "width": + return w > 0 ? A.pfValue * w : 0; + case "height": + return D > 0 ? A.pfValue * D : 0; + case "average": + return w > 0 && D > 0 ? A.pfValue * (w + D) / 2 : 0; + case "min": + return w > 0 && D > 0 ? w > D ? A.pfValue * D : A.pfValue * w : 0; + case "max": + return w > 0 && D > 0 ? w > D ? A.pfValue * w : A.pfValue * D : 0; + default: + return 0; + } + else + return A.units === "px" ? A.pfValue : 0; + } + var g = f.width.left.value; + f.width.left.units === "px" && f.width.val > 0 && (g = g * 100 / f.width.val); + var p = f.width.right.value; + f.width.right.units === "px" && f.width.val > 0 && (p = p * 100 / f.width.val); + var y = f.height.top.value; + f.height.top.units === "px" && f.height.val > 0 && (y = y * 100 / f.height.val); + var E = f.height.bottom.value; + f.height.bottom.units === "px" && f.height.val > 0 && (E = E * 100 / f.height.val); + var m = v(f.width.val - h.w, g, p), T = m.biasDiff, C = m.biasComplementDiff, S = v(f.height.val - h.h, y, E), b = S.biasDiff, x = S.biasComplementDiff; + o.autoPadding = d(h.w, h.h, s.pstyle("padding"), s.pstyle("padding-relative-to").value), o.autoWidth = Math.max(h.w, f.width.val), c.x = (-T + h.x1 + h.x2 + C) / 2, o.autoHeight = Math.max(h.h, f.height.val), c.y = (-b + h.y1 + h.y2 + x) / 2; + } + for (var a = 0; a < this.length; a++) { + var n = this[a], i = n._private; + (!i.compoundBoundsClean || t) && (r(n), e.batching() || (i.compoundBoundsClean = !0)); + } + return this; +}; +var dt = function(e) { + return e === 1 / 0 || e === -1 / 0 ? 0 : e; +}, wt = function(e, r, a, n, i) { + n - r === 0 || i - a === 0 || r == null || a == null || n == null || i == null || (e.x1 = r < e.x1 ? r : e.x1, e.x2 = n > e.x2 ? n : e.x2, e.y1 = a < e.y1 ? a : e.y1, e.y2 = i > e.y2 ? i : e.y2, e.w = e.x2 - e.x1, e.h = e.y2 - e.y1); +}, tr = function(e, r) { + return r == null ? e : wt(e, r.x1, r.y1, r.x2, r.y2); +}, Ur = function(e, r, a) { + return xt(e, r, a); +}, Oa = function(e, r, a) { + if (!r.cy().headless()) { + var n = r._private, i = n.rstyle, s = i.arrowWidth / 2, o = r.pstyle(a + "-arrow-shape").value, l, u; + if (o !== "none") { + a === "source" ? (l = i.srcX, u = i.srcY) : a === "target" ? (l = i.tgtX, u = i.tgtY) : (l = i.midX, u = i.midY); + var f = n.arrowBounds = n.arrowBounds || {}, h = f[a] = f[a] || {}; + h.x1 = l - s, h.y1 = u - s, h.x2 = l + s, h.y2 = u + s, h.w = h.x2 - h.x1, h.h = h.y2 - h.y1, ka(h, 1), wt(e, h.x1, h.y1, h.x2, h.y2); + } + } +}, Nn = function(e, r, a) { + if (!r.cy().headless()) { + var n; + a ? n = a + "-" : n = ""; + var i = r._private, s = i.rstyle, o = r.pstyle(n + "label").strValue; + if (o) { + var l = r.pstyle("text-halign"), u = r.pstyle("text-valign"), f = Ur(s, "labelWidth", a), h = Ur(s, "labelHeight", a), c = Ur(s, "labelX", a), v = Ur(s, "labelY", a), d = r.pstyle(n + "text-margin-x").pfValue, g = r.pstyle(n + "text-margin-y").pfValue, p = r.isEdge(), y = r.pstyle(n + "text-rotation"), E = r.pstyle("text-outline-width").pfValue, m = r.pstyle("text-border-width").pfValue, T = m / 2, C = r.pstyle("text-background-padding").pfValue, S = 2, b = h, x = f, w = x / 2, D = b / 2, A, L, I, O; + if (p) + A = c - w, L = c + w, I = v - D, O = v + D; + else { + switch (l.value) { + case "left": + A = c - x, L = c; + break; + case "center": + A = c - w, L = c + w; + break; + case "right": + A = c, L = c + x; + break; + } + switch (u.value) { + case "top": + I = v - b, O = v; + break; + case "center": + I = v - D, O = v + D; + break; + case "bottom": + I = v, O = v + b; + break; + } + } + A += d - Math.max(E, T) - C - S, L += d + Math.max(E, T) + C + S, I += g - Math.max(E, T) - C - S, O += g + Math.max(E, T) + C + S; + var P = a || "main", R = i.labelBounds, M = R[P] = R[P] || {}; + M.x1 = A, M.y1 = I, M.x2 = L, M.y2 = O, M.w = L - A, M.h = O - I; + var k = p && y.strValue === "autorotate", B = y.pfValue != null && y.pfValue !== 0; + if (k || B) { + var G = k ? Ur(i.rstyle, "labelAngle", a) : y.pfValue, F = Math.cos(G), $ = Math.sin(G), U = (A + L) / 2, _ = (I + O) / 2; + if (!p) { + switch (l.value) { + case "left": + U = L; + break; + case "right": + U = A; + break; + } + switch (u.value) { + case "top": + _ = O; + break; + case "bottom": + _ = I; + break; + } + } + var Y = function(ce, te) { + return ce = ce - U, te = te - _, { + x: ce * F - te * $ + U, + y: ce * $ + te * F + _ + }; + }, W = Y(A, I), z = Y(A, O), K = Y(L, I), j = Y(L, O); + A = Math.min(W.x, z.x, K.x, j.x), L = Math.max(W.x, z.x, K.x, j.x), I = Math.min(W.y, z.y, K.y, j.y), O = Math.max(W.y, z.y, K.y, j.y); + } + var Q = P + "Rot", ee = R[Q] = R[Q] || {}; + ee.x1 = A, ee.y1 = I, ee.x2 = L, ee.y2 = O, ee.w = L - A, ee.h = O - I, wt(e, A, I, L, O), wt(i.labelBounds.all, A, I, L, O); + } + return e; + } +}, gp = function(e, r) { + if (!r.cy().headless()) { + var a = r.pstyle("outline-opacity").value, n = r.pstyle("outline-width").value; + if (a > 0 && n > 0) { + var i = r.pstyle("outline-offset").value, s = r.pstyle("shape").value, o = n + i, l = (e.w + o * 2) / e.w, u = (e.h + o * 2) / e.h, f = 0, h = 0; + ["diamond", "pentagon", "round-triangle"].includes(s) ? (l = (e.w + o * 2.4) / e.w, h = -o / 3.6) : ["concave-hexagon", "rhomboid", "right-rhomboid"].includes(s) ? l = (e.w + o * 2.4) / e.w : s === "star" ? (l = (e.w + o * 2.8) / e.w, u = (e.h + o * 2.6) / e.h, h = -o / 3.8) : s === "triangle" ? (l = (e.w + o * 2.8) / e.w, u = (e.h + o * 2.4) / e.h, h = -o / 1.4) : s === "vee" && (l = (e.w + o * 4.4) / e.w, u = (e.h + o * 3.8) / e.h, h = -o * 0.5); + var c = e.h * u - e.h, v = e.w * l - e.w; + if (Pa(e, [Math.ceil(c / 2), Math.ceil(v / 2)]), f != 0 || h !== 0) { + var d = Ud(e, f, h); + xo(e, d); + } + } + } +}, pp = function(e, r) { + var a = e._private.cy, n = a.styleEnabled(), i = a.headless(), s = ft(), o = e._private, l = e.isNode(), u = e.isEdge(), f, h, c, v, d, g, p = o.rstyle, y = l && n ? e.pstyle("bounds-expansion").pfValue : [0], E = function(ue) { + return ue.pstyle("display").value !== "none"; + }, m = !n || E(e) && (!u || E(e.source()) && E(e.target())); + if (m) { + var T = 0, C = 0; + n && r.includeOverlays && (T = e.pstyle("overlay-opacity").value, T !== 0 && (C = e.pstyle("overlay-padding").value)); + var S = 0, b = 0; + n && r.includeUnderlays && (S = e.pstyle("underlay-opacity").value, S !== 0 && (b = e.pstyle("underlay-padding").value)); + var x = Math.max(C, b), w = 0, D = 0; + if (n && (w = e.pstyle("width").pfValue, D = w / 2), l && r.includeNodes) { + var A = e.position(); + d = A.x, g = A.y; + var L = e.outerWidth(), I = L / 2, O = e.outerHeight(), P = O / 2; + f = d - I, h = d + I, c = g - P, v = g + P, wt(s, f, c, h, v), n && r.includeOutlines && gp(s, e); + } else if (u && r.includeEdges) + if (n && !i) { + var R = e.pstyle("curve-style").strValue; + if (f = Math.min(p.srcX, p.midX, p.tgtX), h = Math.max(p.srcX, p.midX, p.tgtX), c = Math.min(p.srcY, p.midY, p.tgtY), v = Math.max(p.srcY, p.midY, p.tgtY), f -= D, h += D, c -= D, v += D, wt(s, f, c, h, v), R === "haystack") { + var M = p.haystackPts; + if (M && M.length === 2) { + if (f = M[0].x, c = M[0].y, h = M[1].x, v = M[1].y, f > h) { + var k = f; + f = h, h = k; + } + if (c > v) { + var B = c; + c = v, v = B; + } + wt(s, f - D, c - D, h + D, v + D); + } + } else if (R === "bezier" || R === "unbundled-bezier" || R === "segments" || R === "taxi") { + var G; + switch (R) { + case "bezier": + case "unbundled-bezier": + G = p.bezierPts; + break; + case "segments": + case "taxi": + G = p.linePts; + break; + } + if (G != null) + for (var F = 0; F < G.length; F++) { + var $ = G[F]; + f = $.x - D, h = $.x + D, c = $.y - D, v = $.y + D, wt(s, f, c, h, v); + } + } + } else { + var U = e.source(), _ = U.position(), Y = e.target(), W = Y.position(); + if (f = _.x, h = W.x, c = _.y, v = W.y, f > h) { + var z = f; + f = h, h = z; + } + if (c > v) { + var K = c; + c = v, v = K; + } + f -= D, h += D, c -= D, v += D, wt(s, f, c, h, v); + } + if (n && r.includeEdges && u && (Oa(s, e, "mid-source"), Oa(s, e, "mid-target"), Oa(s, e, "source"), Oa(s, e, "target")), n) { + var j = e.pstyle("ghost").value === "yes"; + if (j) { + var Q = e.pstyle("ghost-offset-x").pfValue, ee = e.pstyle("ghost-offset-y").pfValue; + wt(s, s.x1 + Q, s.y1 + ee, s.x2 + Q, s.y2 + ee); + } + } + var ne = o.bodyBounds = o.bodyBounds || {}; + Ki(ne, s), Pa(ne, y), ka(ne, 1), n && (f = s.x1, h = s.x2, c = s.y1, v = s.y2, wt(s, f - x, c - x, h + x, v + x)); + var ce = o.overlayBounds = o.overlayBounds || {}; + Ki(ce, s), Pa(ce, y), ka(ce, 1); + var te = o.labelBounds = o.labelBounds || {}; + te.all != null ? _d(te.all) : te.all = ft(), n && r.includeLabels && (r.includeMainLabels && Nn(s, e, null), u && (r.includeSourceLabels && Nn(s, e, "source"), r.includeTargetLabels && Nn(s, e, "target"))); + } + return s.x1 = dt(s.x1), s.y1 = dt(s.y1), s.x2 = dt(s.x2), s.y2 = dt(s.y2), s.w = dt(s.x2 - s.x1), s.h = dt(s.y2 - s.y1), s.w > 0 && s.h > 0 && m && (Pa(s, y), ka(s, 1)), s; +}, _o = function(e) { + var r = 0, a = function(s) { + return (s ? 1 : 0) << r++; + }, n = 0; + return n += a(e.incudeNodes), n += a(e.includeEdges), n += a(e.includeLabels), n += a(e.includeMainLabels), n += a(e.includeSourceLabels), n += a(e.includeTargetLabels), n += a(e.includeOverlays), n += a(e.includeOutlines), n; +}, Uo = function(e) { + if (e.isEdge()) { + var r = e.source().position(), a = e.target().position(), n = function(s) { + return Math.round(s); + }; + return fd([n(r.x), n(r.y), n(a.x), n(a.y)]); + } else + return 0; +}, vs = function(e, r) { + var a = e._private, n, i = e.isEdge(), s = r == null ? cs : _o(r), o = s === cs, l = Uo(e), u = a.bbCachePosKey === l, f = r.useCache && u, h = function(g) { + return g._private.bbCache == null || g._private.styleDirty; + }, c = !f || h(e) || i && h(e.source()) || h(e.target()); + if (c ? (u || e.recalculateRenderedStyle(f), n = pp(e, ia), a.bbCache = n, a.bbCachePosKey = l) : n = a.bbCache, !o) { + var v = e.isNode(); + n = ft(), (r.includeNodes && v || r.includeEdges && !v) && (r.includeOverlays ? tr(n, a.overlayBounds) : tr(n, a.bodyBounds)), r.includeLabels && (r.includeMainLabels && (!i || r.includeSourceLabels && r.includeTargetLabels) ? tr(n, a.labelBounds.all) : (r.includeMainLabels && tr(n, a.labelBounds.mainRot), r.includeSourceLabels && tr(n, a.labelBounds.sourceRot), r.includeTargetLabels && tr(n, a.labelBounds.targetRot))), n.w = n.x2 - n.x1, n.h = n.y2 - n.y1; + } + return n; +}, ia = { + includeNodes: !0, + includeEdges: !0, + includeLabels: !0, + includeMainLabels: !0, + includeSourceLabels: !0, + includeTargetLabels: !0, + includeOverlays: !0, + includeUnderlays: !0, + includeOutlines: !0, + useCache: !0 +}, cs = _o(ia), ds = Qe(ia); +Zt.boundingBox = function(t) { + var e; + if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (t === void 0 || t.useCache === void 0 || t.useCache === !0)) + t === void 0 ? t = ia : t = ds(t), e = vs(this[0], t); + else { + e = ft(), t = t || ia; + var r = ds(t), a = this, n = a.cy(), i = n.styleEnabled(); + if (i) + for (var s = 0; s < a.length; s++) { + var o = a[s], l = o._private, u = Uo(o), f = l.bbCachePosKey === u, h = r.useCache && f && !l.styleDirty; + o.recalculateRenderedStyle(h); + } + this.updateCompoundBounds(!t.useCache); + for (var c = 0; c < a.length; c++) { + var v = a[c]; + tr(e, vs(v, r)); + } + } + return e.x1 = dt(e.x1), e.y1 = dt(e.y1), e.x2 = dt(e.x2), e.y2 = dt(e.y2), e.w = dt(e.x2 - e.x1), e.h = dt(e.y2 - e.y1), e; +}; +Zt.dirtyBoundingBoxCache = function() { + for (var t = 0; t < this.length; t++) { + var e = this[t]._private; + e.bbCache = null, e.bbCachePosKey = null, e.bodyBounds = null, e.overlayBounds = null, e.labelBounds.all = null, e.labelBounds.source = null, e.labelBounds.target = null, e.labelBounds.main = null, e.labelBounds.sourceRot = null, e.labelBounds.targetRot = null, e.labelBounds.mainRot = null, e.arrowBounds.source = null, e.arrowBounds.target = null, e.arrowBounds["mid-source"] = null, e.arrowBounds["mid-target"] = null; + } + return this.emitAndNotify("bounds"), this; +}; +Zt.boundingBoxAt = function(t) { + var e = this.nodes(), r = this.cy(), a = r.hasCompoundNodes(), n = r.collection(); + if (a && (n = e.filter(function(u) { + return u.isParent(); + }), e = e.not(n)), De(t)) { + var i = t; + t = function() { + return i; + }; + } + var s = function(f, h) { + return f._private.bbAtOldPos = t(f, h); + }, o = function(f) { + return f._private.bbAtOldPos; + }; + r.startBatch(), e.forEach(s).silentPositions(t), a && (n.dirtyCompoundBoundsCache(), n.dirtyBoundingBoxCache(), n.updateCompoundBounds(!0)); + var l = Vd(this.boundingBox({ + useCache: !1 + })); + return e.silentPositions(o), a && (n.dirtyCompoundBoundsCache(), n.dirtyBoundingBoxCache(), n.updateCompoundBounds(!0)), r.endBatch(), l; +}; +Dr.boundingbox = Dr.bb = Dr.boundingBox; +Dr.renderedBoundingbox = Dr.renderedBoundingBox; +var yp = Zt, qr, ga; +qr = ga = {}; +var Ho = function(e) { + e.uppercaseName = Yi(e.name), e.autoName = "auto" + e.uppercaseName, e.labelName = "label" + e.uppercaseName, e.outerName = "outer" + e.uppercaseName, e.uppercaseOuterName = Yi(e.outerName), qr[e.name] = function() { + var a = this[0], n = a._private, i = n.cy, s = i._private.styleEnabled; + if (a) + if (s) { + if (a.isParent()) + return a.updateCompoundBounds(), n[e.autoName] || 0; + var o = a.pstyle(e.name); + switch (o.strValue) { + case "label": + return a.recalculateRenderedStyle(), n.rstyle[e.labelName] || 0; + default: + return o.pfValue; + } + } else + return 1; + }, qr["outer" + e.uppercaseName] = function() { + var a = this[0], n = a._private, i = n.cy, s = i._private.styleEnabled; + if (a) + if (s) { + var o = a[e.name](), l = a.pstyle("border-width").pfValue, u = 2 * a.padding(); + return o + l + u; + } else + return 1; + }, qr["rendered" + e.uppercaseName] = function() { + var a = this[0]; + if (a) { + var n = a[e.name](); + return n * this.cy().zoom(); + } + }, qr["rendered" + e.uppercaseOuterName] = function() { + var a = this[0]; + if (a) { + var n = a[e.outerName](); + return n * this.cy().zoom(); + } + }; +}; +Ho({ + name: "width" +}); +Ho({ + name: "height" +}); +ga.padding = function() { + var t = this[0], e = t._private; + return t.isParent() ? (t.updateCompoundBounds(), e.autoPadding !== void 0 ? e.autoPadding : t.pstyle("padding").pfValue) : t.pstyle("padding").pfValue; +}; +ga.paddedHeight = function() { + var t = this[0]; + return t.height() + 2 * t.padding(); +}; +ga.paddedWidth = function() { + var t = this[0]; + return t.width() + 2 * t.padding(); +}; +var mp = ga, bp = function(e, r) { + if (e.isEdge()) + return r(e); +}, Ep = function(e, r) { + if (e.isEdge()) { + var a = e.cy(); + return fn(r(e), a.zoom(), a.pan()); + } +}, wp = function(e, r) { + if (e.isEdge()) { + var a = e.cy(), n = a.pan(), i = a.zoom(); + return r(e).map(function(s) { + return fn(s, i, n); + }); + } +}, xp = function(e) { + return e.renderer().getControlPoints(e); +}, Tp = function(e) { + return e.renderer().getSegmentPoints(e); +}, Cp = function(e) { + return e.renderer().getSourceEndpoint(e); +}, Dp = function(e) { + return e.renderer().getTargetEndpoint(e); +}, Sp = function(e) { + return e.renderer().getEdgeMidpoint(e); +}, gs = { + controlPoints: { + get: xp, + mult: !0 + }, + segmentPoints: { + get: Tp, + mult: !0 + }, + sourceEndpoint: { + get: Cp + }, + targetEndpoint: { + get: Dp + }, + midpoint: { + get: Sp + } +}, Lp = function(e) { + return "rendered" + e[0].toUpperCase() + e.substr(1); +}, Ap = Object.keys(gs).reduce(function(t, e) { + var r = gs[e], a = Lp(e); + return t[e] = function() { + return bp(this, r.get); + }, r.mult ? t[a] = function() { + return wp(this, r.get); + } : t[a] = function() { + return Ep(this, r.get); + }, t; +}, {}), Op = de({}, dp, yp, mp, Ap); +/*! +Event object based on jQuery events, MIT license + +https://jquery.org/license/ +https://tldrlegal.com/license/mit-license +https://github.com/jquery/jquery/blob/master/src/event.js +*/ +var Yo = function(e, r) { + this.recycle(e, r); +}; +function Hr() { + return !1; +} +function Na() { + return !0; +} +Yo.prototype = { + instanceString: function() { + return "event"; + }, + recycle: function(e, r) { + if (this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = Hr, e != null && e.preventDefault ? (this.type = e.type, this.isDefaultPrevented = e.defaultPrevented ? Na : Hr) : e != null && e.type ? r = e : this.type = e, r != null && (this.originalEvent = r.originalEvent, this.type = r.type != null ? r.type : this.type, this.cy = r.cy, this.target = r.target, this.position = r.position, this.renderedPosition = r.renderedPosition, this.namespace = r.namespace, this.layout = r.layout), this.cy != null && this.position != null && this.renderedPosition == null) { + var a = this.position, n = this.cy.zoom(), i = this.cy.pan(); + this.renderedPosition = { + x: a.x * n + i.x, + y: a.y * n + i.y + }; + } + this.timeStamp = e && e.timeStamp || Date.now(); + }, + preventDefault: function() { + this.isDefaultPrevented = Na; + var e = this.originalEvent; + e && e.preventDefault && e.preventDefault(); + }, + stopPropagation: function() { + this.isPropagationStopped = Na; + var e = this.originalEvent; + e && e.stopPropagation && e.stopPropagation(); + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = Na, this.stopPropagation(); + }, + isDefaultPrevented: Hr, + isPropagationStopped: Hr, + isImmediatePropagationStopped: Hr +}; +var Xo = /^([^.]+)(\.(?:[^.]+))?$/, Np = ".*", Wo = { + qualifierCompare: function(e, r) { + return e === r; + }, + eventMatches: function() { + return !0; + }, + addEventFields: function() { + }, + callbackContext: function(e) { + return e; + }, + beforeEmit: function() { + }, + afterEmit: function() { + }, + bubble: function() { + return !1; + }, + parent: function() { + return null; + }, + context: null +}, ps = Object.keys(Wo), Ip = {}; +function cn() { + for (var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Ip, e = arguments.length > 1 ? arguments[1] : void 0, r = 0; r < ps.length; r++) { + var a = ps[r]; + this[a] = t[a] || Wo[a]; + } + this.context = e || this.context, this.listeners = [], this.emitting = 0; +} +var Kt = cn.prototype, qo = function(e, r, a, n, i, s, o) { + Be(n) && (i = n, n = null), o && (s == null ? s = o : s = de({}, s, o)); + for (var l = Me(a) ? a : a.split(/\s+/), u = 0; u < l.length; u++) { + var f = l[u]; + if (!Yt(f)) { + var h = f.match(Xo); + if (h) { + var c = h[1], v = h[2] ? h[2] : null, d = r(e, f, c, v, n, i, s); + if (d === !1) + break; + } + } + } +}, ys = function(e, r) { + return e.addEventFields(e.context, r), new Yo(r.type, r); +}, Mp = function(e, r, a) { + if (Hc(a)) { + r(e, a); + return; + } else if (De(a)) { + r(e, ys(e, a)); + return; + } + for (var n = Me(a) ? a : a.split(/\s+/), i = 0; i < n.length; i++) { + var s = n[i]; + if (!Yt(s)) { + var o = s.match(Xo); + if (o) { + var l = o[1], u = o[2] ? o[2] : null, f = ys(e, { + type: l, + namespace: u, + target: e.context + }); + r(e, f); + } + } + } +}; +Kt.on = Kt.addListener = function(t, e, r, a, n) { + return qo(this, function(i, s, o, l, u, f, h) { + Be(f) && i.listeners.push({ + event: s, + // full event string + callback: f, + // callback to run + type: o, + // the event type (e.g. 'click') + namespace: l, + // the event namespace (e.g. ".foo") + qualifier: u, + // a restriction on whether to match this emitter + conf: h + // additional configuration + }); + }, t, e, r, a, n), this; +}; +Kt.one = function(t, e, r, a) { + return this.on(t, e, r, a, { + one: !0 + }); +}; +Kt.removeListener = Kt.off = function(t, e, r, a) { + var n = this; + this.emitting !== 0 && (this.listeners = gd(this.listeners)); + for (var i = this.listeners, s = function(u) { + var f = i[u]; + qo(n, function(h, c, v, d, g, p) { + if ((f.type === v || t === "*") && (!d && f.namespace !== ".*" || f.namespace === d) && (!g || h.qualifierCompare(f.qualifier, g)) && (!p || f.callback === p)) + return i.splice(u, 1), !1; + }, t, e, r, a); + }, o = i.length - 1; o >= 0; o--) + s(o); + return this; +}; +Kt.removeAllListeners = function() { + return this.removeListener("*"); +}; +Kt.emit = Kt.trigger = function(t, e, r) { + var a = this.listeners, n = a.length; + return this.emitting++, Me(e) || (e = [e]), Mp(this, function(i, s) { + r != null && (a = [{ + event: s.event, + type: s.type, + namespace: s.namespace, + callback: r + }], n = a.length); + for (var o = function(f) { + var h = a[f]; + if (h.type === s.type && (!h.namespace || h.namespace === s.namespace || h.namespace === Np) && i.eventMatches(i.context, h, s)) { + var c = [s]; + e != null && yd(c, e), i.beforeEmit(i.context, h, s), h.conf && h.conf.one && (i.listeners = i.listeners.filter(function(g) { + return g !== h; + })); + var v = i.callbackContext(i.context, h, s), d = h.callback.apply(v, c); + i.afterEmit(i.context, h, s), d === !1 && (s.stopPropagation(), s.preventDefault()); + } + }, l = 0; l < n; l++) + o(l); + i.bubble(i.context) && !s.isPropagationStopped() && i.parent(i.context).emit(s, e); + }, t), this.emitting--, this; +}; +var Rp = { + qualifierCompare: function(e, r) { + return e == null || r == null ? e == null && r == null : e.sameText(r); + }, + eventMatches: function(e, r, a) { + var n = r.qualifier; + return n != null ? e !== a.target && ca(a.target) && n.matches(a.target) : !0; + }, + addEventFields: function(e, r) { + r.cy = e.cy(), r.target = e; + }, + callbackContext: function(e, r, a) { + return r.qualifier != null ? a.target : e; + }, + beforeEmit: function(e, r) { + r.conf && r.conf.once && r.conf.onceCollection.removeListener(r.event, r.qualifier, r.callback); + }, + bubble: function() { + return !0; + }, + parent: function(e) { + return e.isChild() ? e.parent() : e.cy(); + } +}, Ia = function(e) { + return ve(e) ? new Wt(e) : e; +}, Ko = { + createEmitter: function() { + for (var e = 0; e < this.length; e++) { + var r = this[e], a = r._private; + a.emitter || (a.emitter = new cn(Rp, r)); + } + return this; + }, + emitter: function() { + return this._private.emitter; + }, + on: function(e, r, a) { + for (var n = Ia(r), i = 0; i < this.length; i++) { + var s = this[i]; + s.emitter().on(e, n, a); + } + return this; + }, + removeListener: function(e, r, a) { + for (var n = Ia(r), i = 0; i < this.length; i++) { + var s = this[i]; + s.emitter().removeListener(e, n, a); + } + return this; + }, + removeAllListeners: function() { + for (var e = 0; e < this.length; e++) { + var r = this[e]; + r.emitter().removeAllListeners(); + } + return this; + }, + one: function(e, r, a) { + for (var n = Ia(r), i = 0; i < this.length; i++) { + var s = this[i]; + s.emitter().one(e, n, a); + } + return this; + }, + once: function(e, r, a) { + for (var n = Ia(r), i = 0; i < this.length; i++) { + var s = this[i]; + s.emitter().on(e, n, a, { + once: !0, + onceCollection: this + }); + } + }, + emit: function(e, r) { + for (var a = 0; a < this.length; a++) { + var n = this[a]; + n.emitter().emit(e, r); + } + return this; + }, + emitAndNotify: function(e, r) { + if (this.length !== 0) + return this.cy().notify(e, this), this.emit(e, r), this; + } +}; +Oe.eventAliasesOn(Ko); +var Zo = { + nodes: function(e) { + return this.filter(function(r) { + return r.isNode(); + }).filter(e); + }, + edges: function(e) { + return this.filter(function(r) { + return r.isEdge(); + }).filter(e); + }, + // internal helper to get nodes and edges as separate collections with single iteration over elements + byGroup: function() { + for (var e = this.spawn(), r = this.spawn(), a = 0; a < this.length; a++) { + var n = this[a]; + n.isNode() ? e.push(n) : r.push(n); + } + return { + nodes: e, + edges: r + }; + }, + filter: function(e, r) { + if (e === void 0) + return this; + if (ve(e) || ht(e)) + return new Wt(e).filter(this); + if (Be(e)) { + for (var a = this.spawn(), n = this, i = 0; i < n.length; i++) { + var s = n[i], o = r ? e.apply(r, [s, i, n]) : e(s, i, n); + o && a.push(s); + } + return a; + } + return this.spawn(); + }, + not: function(e) { + if (e) { + ve(e) && (e = this.filter(e)); + for (var r = this.spawn(), a = 0; a < this.length; a++) { + var n = this[a], i = e.has(n); + i || r.push(n); + } + return r; + } else + return this; + }, + absoluteComplement: function() { + var e = this.cy(); + return e.mutableElements().not(this); + }, + intersect: function(e) { + if (ve(e)) { + var r = e; + return this.filter(r); + } + for (var a = this.spawn(), n = this, i = e, s = this.length < e.length, o = s ? n : i, l = s ? i : n, u = 0; u < o.length; u++) { + var f = o[u]; + l.has(f) && a.push(f); + } + return a; + }, + xor: function(e) { + var r = this._private.cy; + ve(e) && (e = r.$(e)); + var a = this.spawn(), n = this, i = e, s = function(l, u) { + for (var f = 0; f < l.length; f++) { + var h = l[f], c = h._private.data.id, v = u.hasElementWithId(c); + v || a.push(h); + } + }; + return s(n, i), s(i, n), a; + }, + diff: function(e) { + var r = this._private.cy; + ve(e) && (e = r.$(e)); + var a = this.spawn(), n = this.spawn(), i = this.spawn(), s = this, o = e, l = function(f, h, c) { + for (var v = 0; v < f.length; v++) { + var d = f[v], g = d._private.data.id, p = h.hasElementWithId(g); + p ? i.merge(d) : c.push(d); + } + }; + return l(s, o, a), l(o, s, n), { + left: a, + right: n, + both: i + }; + }, + add: function(e) { + var r = this._private.cy; + if (!e) + return this; + if (ve(e)) { + var a = e; + e = r.mutableElements().filter(a); + } + for (var n = this.spawnSelf(), i = 0; i < e.length; i++) { + var s = e[i], o = !this.has(s); + o && n.push(s); + } + return n; + }, + // in place merge on calling collection + merge: function(e) { + var r = this._private, a = r.cy; + if (!e) + return this; + if (e && ve(e)) { + var n = e; + e = a.mutableElements().filter(n); + } + for (var i = r.map, s = 0; s < e.length; s++) { + var o = e[s], l = o._private.data.id, u = !i.has(l); + if (u) { + var f = this.length++; + this[f] = o, i.set(l, { + ele: o, + index: f + }); + } + } + return this; + }, + unmergeAt: function(e) { + var r = this[e], a = r.id(), n = this._private, i = n.map; + this[e] = void 0, i.delete(a); + var s = e === this.length - 1; + if (this.length > 1 && !s) { + var o = this.length - 1, l = this[o], u = l._private.data.id; + this[o] = void 0, this[e] = l, i.set(u, { + ele: l, + index: e + }); + } + return this.length--, this; + }, + // remove single ele in place in calling collection + unmergeOne: function(e) { + e = e[0]; + var r = this._private, a = e._private.data.id, n = r.map, i = n.get(a); + if (!i) + return this; + var s = i.index; + return this.unmergeAt(s), this; + }, + // remove eles in place on calling collection + unmerge: function(e) { + var r = this._private.cy; + if (!e) + return this; + if (e && ve(e)) { + var a = e; + e = r.mutableElements().filter(a); + } + for (var n = 0; n < e.length; n++) + this.unmergeOne(e[n]); + return this; + }, + unmergeBy: function(e) { + for (var r = this.length - 1; r >= 0; r--) { + var a = this[r]; + e(a) && this.unmergeAt(r); + } + return this; + }, + map: function(e, r) { + for (var a = [], n = this, i = 0; i < n.length; i++) { + var s = n[i], o = r ? e.apply(r, [s, i, n]) : e(s, i, n); + a.push(o); + } + return a; + }, + reduce: function(e, r) { + for (var a = r, n = this, i = 0; i < n.length; i++) + a = e(a, n[i], i, n); + return a; + }, + max: function(e, r) { + for (var a = -1 / 0, n, i = this, s = 0; s < i.length; s++) { + var o = i[s], l = r ? e.apply(r, [o, s, i]) : e(o, s, i); + l > a && (a = l, n = o); + } + return { + value: a, + ele: n + }; + }, + min: function(e, r) { + for (var a = 1 / 0, n, i = this, s = 0; s < i.length; s++) { + var o = i[s], l = r ? e.apply(r, [o, s, i]) : e(o, s, i); + l < a && (a = l, n = o); + } + return { + value: a, + ele: n + }; + } +}, Ae = Zo; +Ae.u = Ae["|"] = Ae["+"] = Ae.union = Ae.or = Ae.add; +Ae["\\"] = Ae["!"] = Ae["-"] = Ae.difference = Ae.relativeComplement = Ae.subtract = Ae.not; +Ae.n = Ae["&"] = Ae["."] = Ae.and = Ae.intersection = Ae.intersect; +Ae["^"] = Ae["(+)"] = Ae["(-)"] = Ae.symmetricDifference = Ae.symdiff = Ae.xor; +Ae.fnFilter = Ae.filterFn = Ae.stdFilter = Ae.filter; +Ae.complement = Ae.abscomp = Ae.absoluteComplement; +var kp = { + isNode: function() { + return this.group() === "nodes"; + }, + isEdge: function() { + return this.group() === "edges"; + }, + isLoop: function() { + return this.isEdge() && this.source()[0] === this.target()[0]; + }, + isSimple: function() { + return this.isEdge() && this.source()[0] !== this.target()[0]; + }, + group: function() { + var e = this[0]; + if (e) + return e._private.group; + } +}, Qo = function(e, r) { + var a = e.cy(), n = a.hasCompoundNodes(); + function i(f) { + var h = f.pstyle("z-compound-depth"); + return h.value === "auto" ? n ? f.zDepth() : 0 : h.value === "bottom" ? -1 : h.value === "top" ? si : 0; + } + var s = i(e) - i(r); + if (s !== 0) + return s; + function o(f) { + var h = f.pstyle("z-index-compare"); + return h.value === "auto" && f.isNode() ? 1 : 0; + } + var l = o(e) - o(r); + if (l !== 0) + return l; + var u = e.pstyle("z-index").value - r.pstyle("z-index").value; + return u !== 0 ? u : e.poolIndex() - r.poolIndex(); +}, Za = { + forEach: function(e, r) { + if (Be(e)) + for (var a = this.length, n = 0; n < a; n++) { + var i = this[n], s = r ? e.apply(r, [i, n, this]) : e(i, n, this); + if (s === !1) + break; + } + return this; + }, + toArray: function() { + for (var e = [], r = 0; r < this.length; r++) + e.push(this[r]); + return e; + }, + slice: function(e, r) { + var a = [], n = this.length; + r == null && (r = n), e == null && (e = 0), e < 0 && (e = n + e), r < 0 && (r = n + r); + for (var i = e; i >= 0 && i < r && i < n; i++) + a.push(this[i]); + return this.spawn(a); + }, + size: function() { + return this.length; + }, + eq: function(e) { + return this[e] || this.spawn(); + }, + first: function() { + return this[0] || this.spawn(); + }, + last: function() { + return this[this.length - 1] || this.spawn(); + }, + empty: function() { + return this.length === 0; + }, + nonempty: function() { + return !this.empty(); + }, + sort: function(e) { + if (!Be(e)) + return this; + var r = this.toArray().sort(e); + return this.spawn(r); + }, + sortByZIndex: function() { + return this.sort(Qo); + }, + zDepth: function() { + var e = this[0]; + if (e) { + var r = e._private, a = r.group; + if (a === "nodes") { + var n = r.data.parent ? e.parents().size() : 0; + return e.isParent() ? n : si - 1; + } else { + var i = r.source, s = r.target, o = i.zDepth(), l = s.zDepth(); + return Math.max(o, l, 0); + } + } + } +}; +Za.each = Za.forEach; +var Pp = function() { + var e = "undefined", r = (typeof Symbol == "undefined" ? "undefined" : Ue(Symbol)) != e && Ue(Symbol.iterator) != e; + r && (Za[Symbol.iterator] = function() { + var a = this, n = { + value: void 0, + done: !1 + }, i = 0, s = this.length; + return ao({ + next: function() { + return i < s ? n.value = a[i++] : (n.value = void 0, n.done = !0), n; + } + }, Symbol.iterator, function() { + return this; + }); + }); +}; +Pp(); +var Bp = Qe({ + nodeDimensionsIncludeLabels: !1 +}), Fa = { + // Calculates and returns node dimensions { x, y } based on options given + layoutDimensions: function(e) { + e = Bp(e); + var r; + if (!this.takesUpSpace()) + r = { + w: 0, + h: 0 + }; + else if (e.nodeDimensionsIncludeLabels) { + var a = this.boundingBox(); + r = { + w: a.w, + h: a.h + }; + } else + r = { + w: this.outerWidth(), + h: this.outerHeight() + }; + return (r.w === 0 || r.h === 0) && (r.w = r.h = 1), r; + }, + // using standard layout options, apply position function (w/ or w/o animation) + layoutPositions: function(e, r, a) { + var n = this.nodes().filter(function(C) { + return !C.isParent(); + }), i = this.cy(), s = r.eles, o = function(S) { + return S.id(); + }, l = Jr(a, o); + e.emit({ + type: "layoutstart", + layout: e + }), e.animations = []; + var u = function(S, b, x) { + var w = { + x: b.x1 + b.w / 2, + y: b.y1 + b.h / 2 + }, D = { + // scale from center of bounding box (not necessarily 0,0) + x: (x.x - w.x) * S, + y: (x.y - w.y) * S + }; + return { + x: w.x + D.x, + y: w.y + D.y + }; + }, f = r.spacingFactor && r.spacingFactor !== 1, h = function() { + if (!f) + return null; + for (var S = ft(), b = 0; b < n.length; b++) { + var x = n[b], w = l(x, b); + Hd(S, w.x, w.y); + } + return S; + }, c = h(), v = Jr(function(C, S) { + var b = l(C, S); + if (f) { + var x = Math.abs(r.spacingFactor); + b = u(x, c, b); + } + return r.transform != null && (b = r.transform(C, b)), b; + }, o); + if (r.animate) { + for (var d = 0; d < n.length; d++) { + var g = n[d], p = v(g, d), y = r.animateFilter == null || r.animateFilter(g, d); + if (y) { + var E = g.animation({ + position: p, + duration: r.animationDuration, + easing: r.animationEasing + }); + e.animations.push(E); + } else + g.position(p); + } + if (r.fit) { + var m = i.animation({ + fit: { + boundingBox: s.boundingBoxAt(v), + padding: r.padding + }, + duration: r.animationDuration, + easing: r.animationEasing + }); + e.animations.push(m); + } else if (r.zoom !== void 0 && r.pan !== void 0) { + var T = i.animation({ + zoom: r.zoom, + pan: r.pan, + duration: r.animationDuration, + easing: r.animationEasing + }); + e.animations.push(T); + } + e.animations.forEach(function(C) { + return C.play(); + }), e.one("layoutready", r.ready), e.emit({ + type: "layoutready", + layout: e + }), Rr.all(e.animations.map(function(C) { + return C.promise(); + })).then(function() { + e.one("layoutstop", r.stop), e.emit({ + type: "layoutstop", + layout: e + }); + }); + } else + n.positions(v), r.fit && i.fit(r.eles, r.padding), r.zoom != null && i.zoom(r.zoom), r.pan && i.pan(r.pan), e.one("layoutready", r.ready), e.emit({ + type: "layoutready", + layout: e + }), e.one("layoutstop", r.stop), e.emit({ + type: "layoutstop", + layout: e + }); + return this; + }, + layout: function(e) { + var r = this.cy(); + return r.makeLayout(de({}, e, { + eles: this + })); + } +}; +Fa.createLayout = Fa.makeLayout = Fa.layout; +function Jo(t, e, r) { + var a = r._private, n = a.styleCache = a.styleCache || [], i; + return (i = n[t]) != null || (i = n[t] = e(r)), i; +} +function dn(t, e) { + return t = ar(t), function(a) { + return Jo(t, e, a); + }; +} +function gn(t, e) { + t = ar(t); + var r = function(n) { + return e.call(n); + }; + return function() { + var n = this[0]; + if (n) + return Jo(t, r, n); + }; +} +var Ke = { + recalculateRenderedStyle: function(e) { + var r = this.cy(), a = r.renderer(), n = r.styleEnabled(); + return a && n && a.recalculateRenderedStyle(this, e), this; + }, + dirtyStyleCache: function() { + var e = this.cy(), r = function(i) { + return i._private.styleCache = null; + }; + if (e.hasCompoundNodes()) { + var a; + a = this.spawnSelf().merge(this.descendants()).merge(this.parents()), a.merge(a.connectedEdges()), a.forEach(r); + } else + this.forEach(function(n) { + r(n), n.connectedEdges().forEach(r); + }); + return this; + }, + // fully updates (recalculates) the style for the elements + updateStyle: function(e) { + var r = this._private.cy; + if (!r.styleEnabled()) + return this; + if (r.batching()) { + var a = r._private.batchStyleEles; + return a.merge(this), this; + } + var n = r.hasCompoundNodes(), i = this; + e = !!(e || e === void 0), n && (i = this.spawnSelf().merge(this.descendants()).merge(this.parents())); + var s = i; + return e ? s.emitAndNotify("style") : s.emit("style"), i.forEach(function(o) { + return o._private.styleDirty = !0; + }), this; + }, + // private: clears dirty flag and recalculates style + cleanStyle: function() { + var e = this.cy(); + if (e.styleEnabled()) + for (var r = 0; r < this.length; r++) { + var a = this[r]; + a._private.styleDirty && (a._private.styleDirty = !1, e.style().apply(a)); + } + }, + // get the internal parsed style object for the specified property + parsedStyle: function(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0, a = this[0], n = a.cy(); + if (n.styleEnabled() && a) { + this.cleanStyle(); + var i = a._private.style[e]; + return i != null ? i : r ? n.style().getDefaultProperty(e) : null; + } + }, + numericStyle: function(e) { + var r = this[0]; + if (r.cy().styleEnabled() && r) { + var a = r.pstyle(e); + return a.pfValue !== void 0 ? a.pfValue : a.value; + } + }, + numericStyleUnits: function(e) { + var r = this[0]; + if (r.cy().styleEnabled() && r) + return r.pstyle(e).units; + }, + // get the specified css property as a rendered value (i.e. on-screen value) + // or get the whole rendered style if no property specified (NB doesn't allow setting) + renderedStyle: function(e) { + var r = this.cy(); + if (!r.styleEnabled()) + return this; + var a = this[0]; + if (a) + return r.style().getRenderedStyle(a, e); + }, + // read the calculated css style of the element or override the style (via a bypass) + style: function(e, r) { + var a = this.cy(); + if (!a.styleEnabled()) + return this; + var n = !1, i = a.style(); + if (De(e)) { + var s = e; + i.applyBypass(this, s, n), this.emitAndNotify("style"); + } else if (ve(e)) + if (r === void 0) { + var o = this[0]; + return o ? i.getStylePropertyValue(o, e) : void 0; + } else + i.applyBypass(this, e, r, n), this.emitAndNotify("style"); + else if (e === void 0) { + var l = this[0]; + return l ? i.getRawStyle(l) : void 0; + } + return this; + }, + removeStyle: function(e) { + var r = this.cy(); + if (!r.styleEnabled()) + return this; + var a = !1, n = r.style(), i = this; + if (e === void 0) + for (var s = 0; s < i.length; s++) { + var o = i[s]; + n.removeAllBypasses(o, a); + } + else { + e = e.split(/\s+/); + for (var l = 0; l < i.length; l++) { + var u = i[l]; + n.removeBypasses(u, e, a); + } + } + return this.emitAndNotify("style"), this; + }, + show: function() { + return this.css("display", "element"), this; + }, + hide: function() { + return this.css("display", "none"), this; + }, + effectiveOpacity: function() { + var e = this.cy(); + if (!e.styleEnabled()) + return 1; + var r = e.hasCompoundNodes(), a = this[0]; + if (a) { + var n = a._private, i = a.pstyle("opacity").value; + if (!r) + return i; + var s = n.data.parent ? a.parents() : null; + if (s) + for (var o = 0; o < s.length; o++) { + var l = s[o], u = l.pstyle("opacity").value; + i = u * i; + } + return i; + } + }, + transparent: function() { + var e = this.cy(); + if (!e.styleEnabled()) + return !1; + var r = this[0], a = r.cy().hasCompoundNodes(); + if (r) + return a ? r.effectiveOpacity() === 0 : r.pstyle("opacity").value === 0; + }, + backgrounding: function() { + var e = this.cy(); + if (!e.styleEnabled()) + return !1; + var r = this[0]; + return !!r._private.backgrounding; + } +}; +function In(t, e) { + var r = t._private, a = r.data.parent ? t.parents() : null; + if (a) + for (var n = 0; n < a.length; n++) { + var i = a[n]; + if (!e(i)) + return !1; + } + return !0; +} +function gi(t) { + var e = t.ok, r = t.edgeOkViaNode || t.ok, a = t.parentOk || t.ok; + return function() { + var n = this.cy(); + if (!n.styleEnabled()) + return !0; + var i = this[0], s = n.hasCompoundNodes(); + if (i) { + var o = i._private; + if (!e(i)) + return !1; + if (i.isNode()) + return !s || In(i, a); + var l = o.source, u = o.target; + return r(l) && (!s || In(l, r)) && (l === u || r(u) && (!s || In(u, r))); + } + }; +} +var kr = dn("eleTakesUpSpace", function(t) { + return t.pstyle("display").value === "element" && t.width() !== 0 && (t.isNode() ? t.height() !== 0 : !0); +}); +Ke.takesUpSpace = gn("takesUpSpace", gi({ + ok: kr +})); +var Fp = dn("eleInteractive", function(t) { + return t.pstyle("events").value === "yes" && t.pstyle("visibility").value === "visible" && kr(t); +}), Gp = dn("parentInteractive", function(t) { + return t.pstyle("visibility").value === "visible" && kr(t); +}); +Ke.interactive = gn("interactive", gi({ + ok: Fp, + parentOk: Gp, + edgeOkViaNode: kr +})); +Ke.noninteractive = function() { + var t = this[0]; + if (t) + return !t.interactive(); +}; +var zp = dn("eleVisible", function(t) { + return t.pstyle("visibility").value === "visible" && t.pstyle("opacity").pfValue !== 0 && kr(t); +}), $p = kr; +Ke.visible = gn("visible", gi({ + ok: zp, + edgeOkViaNode: $p +})); +Ke.hidden = function() { + var t = this[0]; + if (t) + return !t.visible(); +}; +Ke.isBundledBezier = gn("isBundledBezier", function() { + return this.cy().styleEnabled() ? !this.removed() && this.pstyle("curve-style").value === "bezier" && this.takesUpSpace() : !1; +}); +Ke.bypass = Ke.css = Ke.style; +Ke.renderedCss = Ke.renderedStyle; +Ke.removeBypass = Ke.removeCss = Ke.removeStyle; +Ke.pstyle = Ke.parsedStyle; +var Ht = {}; +function ms(t) { + return function() { + var e = arguments, r = []; + if (e.length === 2) { + var a = e[0], n = e[1]; + this.on(t.event, a, n); + } else if (e.length === 1 && Be(e[0])) { + var i = e[0]; + this.on(t.event, i); + } else if (e.length === 0 || e.length === 1 && Me(e[0])) { + for (var s = e.length === 1 ? e[0] : null, o = 0; o < this.length; o++) { + var l = this[o], u = !t.ableField || l._private[t.ableField], f = l._private[t.field] != t.value; + if (t.overrideAble) { + var h = t.overrideAble(l); + if (h !== void 0 && (u = h, !h)) + return this; + } + u && (l._private[t.field] = t.value, f && r.push(l)); + } + var c = this.spawn(r); + c.updateStyle(), c.emit(t.event), s && c.emit(s); + } + return this; + }; +} +function Pr(t) { + Ht[t.field] = function() { + var e = this[0]; + if (e) { + if (t.overrideField) { + var r = t.overrideField(e); + if (r !== void 0) + return r; + } + return e._private[t.field]; + } + }, Ht[t.on] = ms({ + event: t.on, + field: t.field, + ableField: t.ableField, + overrideAble: t.overrideAble, + value: !0 + }), Ht[t.off] = ms({ + event: t.off, + field: t.field, + ableField: t.ableField, + overrideAble: t.overrideAble, + value: !1 + }); +} +Pr({ + field: "locked", + overrideField: function(e) { + return e.cy().autolock() ? !0 : void 0; + }, + on: "lock", + off: "unlock" +}); +Pr({ + field: "grabbable", + overrideField: function(e) { + return e.cy().autoungrabify() || e.pannable() ? !1 : void 0; + }, + on: "grabify", + off: "ungrabify" +}); +Pr({ + field: "selected", + ableField: "selectable", + overrideAble: function(e) { + return e.cy().autounselectify() ? !1 : void 0; + }, + on: "select", + off: "unselect" +}); +Pr({ + field: "selectable", + overrideField: function(e) { + return e.cy().autounselectify() ? !1 : void 0; + }, + on: "selectify", + off: "unselectify" +}); +Ht.deselect = Ht.unselect; +Ht.grabbed = function() { + var t = this[0]; + if (t) + return t._private.grabbed; +}; +Pr({ + field: "active", + on: "activate", + off: "unactivate" +}); +Pr({ + field: "pannable", + on: "panify", + off: "unpanify" +}); +Ht.inactive = function() { + var t = this[0]; + if (t) + return !t._private.active; +}; +var tt = {}, bs = function(e) { + return function(a) { + for (var n = this, i = [], s = 0; s < n.length; s++) { + var o = n[s]; + if (o.isNode()) { + for (var l = !1, u = o.connectedEdges(), f = 0; f < u.length; f++) { + var h = u[f], c = h.source(), v = h.target(); + if (e.noIncomingEdges && v === o && c !== o || e.noOutgoingEdges && c === o && v !== o) { + l = !0; + break; + } + } + l || i.push(o); + } + } + return this.spawn(i, !0).filter(a); + }; +}, Es = function(e) { + return function(r) { + for (var a = this, n = [], i = 0; i < a.length; i++) { + var s = a[i]; + if (s.isNode()) + for (var o = s.connectedEdges(), l = 0; l < o.length; l++) { + var u = o[l], f = u.source(), h = u.target(); + e.outgoing && f === s ? (n.push(u), n.push(h)) : e.incoming && h === s && (n.push(u), n.push(f)); + } + } + return this.spawn(n, !0).filter(r); + }; +}, ws = function(e) { + return function(r) { + for (var a = this, n = [], i = {}; ; ) { + var s = e.outgoing ? a.outgoers() : a.incomers(); + if (s.length === 0) + break; + for (var o = !1, l = 0; l < s.length; l++) { + var u = s[l], f = u.id(); + i[f] || (i[f] = !0, n.push(u), o = !0); + } + if (!o) + break; + a = s; + } + return this.spawn(n, !0).filter(r); + }; +}; +tt.clearTraversalCache = function() { + for (var t = 0; t < this.length; t++) + this[t]._private.traversalCache = null; +}; +de(tt, { + // get the root nodes in the DAG + roots: bs({ + noIncomingEdges: !0 + }), + // get the leaf nodes in the DAG + leaves: bs({ + noOutgoingEdges: !0 + }), + // normally called children in graph theory + // these nodes =edges=> outgoing nodes + outgoers: gt(Es({ + outgoing: !0 + }), "outgoers"), + // aka DAG descendants + successors: ws({ + outgoing: !0 + }), + // normally called parents in graph theory + // these nodes <=edges= incoming nodes + incomers: gt(Es({ + incoming: !0 + }), "incomers"), + // aka DAG ancestors + predecessors: ws({ + incoming: !0 + }) +}); +de(tt, { + neighborhood: gt(function(t) { + for (var e = [], r = this.nodes(), a = 0; a < r.length; a++) + for (var n = r[a], i = n.connectedEdges(), s = 0; s < i.length; s++) { + var o = i[s], l = o.source(), u = o.target(), f = n === l ? u : l; + f.length > 0 && e.push(f[0]), e.push(o[0]); + } + return this.spawn(e, !0).filter(t); + }, "neighborhood"), + closedNeighborhood: function(e) { + return this.neighborhood().add(this).filter(e); + }, + openNeighborhood: function(e) { + return this.neighborhood(e); + } +}); +tt.neighbourhood = tt.neighborhood; +tt.closedNeighbourhood = tt.closedNeighborhood; +tt.openNeighbourhood = tt.openNeighborhood; +de(tt, { + source: gt(function(e) { + var r = this[0], a; + return r && (a = r._private.source || r.cy().collection()), a && e ? a.filter(e) : a; + }, "source"), + target: gt(function(e) { + var r = this[0], a; + return r && (a = r._private.target || r.cy().collection()), a && e ? a.filter(e) : a; + }, "target"), + sources: xs({ + attr: "source" + }), + targets: xs({ + attr: "target" + }) +}); +function xs(t) { + return function(r) { + for (var a = [], n = 0; n < this.length; n++) { + var i = this[n], s = i._private[t.attr]; + s && a.push(s); + } + return this.spawn(a, !0).filter(r); + }; +} +de(tt, { + edgesWith: gt(Ts(), "edgesWith"), + edgesTo: gt(Ts({ + thisIsSrc: !0 + }), "edgesTo") +}); +function Ts(t) { + return function(r) { + var a = [], n = this._private.cy, i = t || {}; + ve(r) && (r = n.$(r)); + for (var s = 0; s < r.length; s++) + for (var o = r[s]._private.edges, l = 0; l < o.length; l++) { + var u = o[l], f = u._private.data, h = this.hasElementWithId(f.source) && r.hasElementWithId(f.target), c = r.hasElementWithId(f.source) && this.hasElementWithId(f.target), v = h || c; + v && ((i.thisIsSrc || i.thisIsTgt) && (i.thisIsSrc && !h || i.thisIsTgt && !c) || a.push(u)); + } + return this.spawn(a, !0); + }; +} +de(tt, { + connectedEdges: gt(function(t) { + for (var e = [], r = this, a = 0; a < r.length; a++) { + var n = r[a]; + if (n.isNode()) + for (var i = n._private.edges, s = 0; s < i.length; s++) { + var o = i[s]; + e.push(o); + } + } + return this.spawn(e, !0).filter(t); + }, "connectedEdges"), + connectedNodes: gt(function(t) { + for (var e = [], r = this, a = 0; a < r.length; a++) { + var n = r[a]; + n.isEdge() && (e.push(n.source()[0]), e.push(n.target()[0])); + } + return this.spawn(e, !0).filter(t); + }, "connectedNodes"), + parallelEdges: gt(Cs(), "parallelEdges"), + codirectedEdges: gt(Cs({ + codirected: !0 + }), "codirectedEdges") +}); +function Cs(t) { + var e = { + codirected: !1 + }; + return t = de({}, e, t), function(a) { + for (var n = [], i = this.edges(), s = t, o = 0; o < i.length; o++) + for (var l = i[o], u = l._private, f = u.source, h = f._private.data.id, c = u.data.target, v = f._private.edges, d = 0; d < v.length; d++) { + var g = v[d], p = g._private.data, y = p.target, E = p.source, m = y === c && E === h, T = h === y && c === E; + (s.codirected && m || !s.codirected && (m || T)) && n.push(g); + } + return this.spawn(n, !0).filter(a); + }; +} +de(tt, { + components: function(e) { + var r = this, a = r.cy(), n = a.collection(), i = e == null ? r.nodes() : e.nodes(), s = []; + e != null && i.empty() && (i = e.sources()); + var o = function(f, h) { + n.merge(f), i.unmerge(f), h.merge(f); + }; + if (i.empty()) + return r.spawn(); + var l = function() { + var f = a.collection(); + s.push(f); + var h = i[0]; + o(h, f), r.bfs({ + directed: !1, + roots: h, + visit: function(v) { + return o(v, f); + } + }), f.forEach(function(c) { + c.connectedEdges().forEach(function(v) { + r.has(v) && f.has(v.source()) && f.has(v.target()) && f.merge(v); + }); + }); + }; + do + l(); + while (i.length > 0); + return s; + }, + component: function() { + var e = this[0]; + return e.cy().mutableElements().components(e)[0]; + } +}); +tt.componentsOf = tt.components; +var Ze = function(e, r) { + var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1; + if (e === void 0) { + Ge("A collection must have a reference to the core"); + return; + } + var i = new Lt(), s = !1; + if (!r) + r = []; + else if (r.length > 0 && De(r[0]) && !ca(r[0])) { + s = !0; + for (var o = [], l = new Mr(), u = 0, f = r.length; u < f; u++) { + var h = r[u]; + h.data == null && (h.data = {}); + var c = h.data; + if (c.id == null) + c.id = mo(); + else if (e.hasElementWithId(c.id) || l.has(c.id)) + continue; + var v = new un(e, h, !1); + o.push(v), l.add(c.id); + } + r = o; + } + this.length = 0; + for (var d = 0, g = r.length; d < g; d++) { + var p = r[d][0]; + if (p != null) { + var y = p._private.data.id; + (!a || !i.has(y)) && (a && i.set(y, { + index: this.length, + ele: p + }), this[this.length] = p, this.length++); + } + } + this._private = { + eles: this, + cy: e, + get map() { + return this.lazyMap == null && this.rebuildMap(), this.lazyMap; + }, + set map(E) { + this.lazyMap = E; + }, + rebuildMap: function() { + for (var m = this.lazyMap = new Lt(), T = this.eles, C = 0; C < T.length; C++) { + var S = T[C]; + m.set(S.id(), { + index: C, + ele: S + }); + } + } + }, a && (this._private.map = i), s && !n && this.restore(); +}, ke = un.prototype = Ze.prototype = Object.create(Array.prototype); +ke.instanceString = function() { + return "collection"; +}; +ke.spawn = function(t, e) { + return new Ze(this.cy(), t, e); +}; +ke.spawnSelf = function() { + return this.spawn(this); +}; +ke.cy = function() { + return this._private.cy; +}; +ke.renderer = function() { + return this._private.cy.renderer(); +}; +ke.element = function() { + return this[0]; +}; +ke.collection = function() { + return io(this) ? this : new Ze(this._private.cy, [this]); +}; +ke.unique = function() { + return new Ze(this._private.cy, this, !0); +}; +ke.hasElementWithId = function(t) { + return t = "" + t, this._private.map.has(t); +}; +ke.getElementById = function(t) { + t = "" + t; + var e = this._private.cy, r = this._private.map.get(t); + return r ? r.ele : new Ze(e); +}; +ke.$id = ke.getElementById; +ke.poolIndex = function() { + var t = this._private.cy, e = t._private.elements, r = this[0]._private.data.id; + return e._private.map.get(r).index; +}; +ke.indexOf = function(t) { + var e = t[0]._private.data.id; + return this._private.map.get(e).index; +}; +ke.indexOfId = function(t) { + return t = "" + t, this._private.map.get(t).index; +}; +ke.json = function(t) { + var e = this.element(), r = this.cy(); + if (e == null && t) + return this; + if (e != null) { + var a = e._private; + if (De(t)) { + if (r.startBatch(), t.data) { + e.data(t.data); + var n = a.data; + if (e.isEdge()) { + var i = !1, s = {}, o = t.data.source, l = t.data.target; + o != null && o != n.source && (s.source = "" + o, i = !0), l != null && l != n.target && (s.target = "" + l, i = !0), i && (e = e.move(s)); + } else { + var u = "parent" in t.data, f = t.data.parent; + u && (f != null || n.parent != null) && f != n.parent && (f === void 0 && (f = null), f != null && (f = "" + f), e = e.move({ + parent: f + })); + } + } + t.position && e.position(t.position); + var h = function(g, p, y) { + var E = t[g]; + E != null && E !== a[g] && (E ? e[p]() : e[y]()); + }; + return h("removed", "remove", "restore"), h("selected", "select", "unselect"), h("selectable", "selectify", "unselectify"), h("locked", "lock", "unlock"), h("grabbable", "grabify", "ungrabify"), h("pannable", "panify", "unpanify"), t.classes != null && e.classes(t.classes), r.endBatch(), this; + } else if (t === void 0) { + var c = { + data: St(a.data), + position: St(a.position), + group: a.group, + removed: a.removed, + selected: a.selected, + selectable: a.selectable, + locked: a.locked, + grabbable: a.grabbable, + pannable: a.pannable, + classes: null + }; + c.classes = ""; + var v = 0; + return a.classes.forEach(function(d) { + return c.classes += v++ === 0 ? d : " " + d; + }), c; + } + } +}; +ke.jsons = function() { + for (var t = [], e = 0; e < this.length; e++) { + var r = this[e], a = r.json(); + t.push(a); + } + return t; +}; +ke.clone = function() { + for (var t = this.cy(), e = [], r = 0; r < this.length; r++) { + var a = this[r], n = a.json(), i = new un(t, n, !1); + e.push(i); + } + return new Ze(t, e); +}; +ke.copy = ke.clone; +ke.restore = function() { + for (var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0, e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0, r = this, a = r.cy(), n = a._private, i = [], s = [], o, l = 0, u = r.length; l < u; l++) { + var f = r[l]; + e && !f.removed() || (f.isNode() ? i.push(f) : s.push(f)); + } + o = i.concat(s); + var h, c = function() { + o.splice(h, 1), h--; + }; + for (h = 0; h < o.length; h++) { + var v = o[h], d = v._private, g = d.data; + if (v.clearTraversalCache(), !(!e && !d.removed)) { + if (g.id === void 0) + g.id = mo(); + else if (ae(g.id)) + g.id = "" + g.id; + else if (Yt(g.id) || !ve(g.id)) { + Ge("Can not create element with invalid string ID `" + g.id + "`"), c(); + continue; + } else if (a.hasElementWithId(g.id)) { + Ge("Can not create second element with ID `" + g.id + "`"), c(); + continue; + } + } + var p = g.id; + if (v.isNode()) { + var y = d.position; + y.x == null && (y.x = 0), y.y == null && (y.y = 0); + } + if (v.isEdge()) { + for (var E = v, m = ["source", "target"], T = m.length, C = !1, S = 0; S < T; S++) { + var b = m[S], x = g[b]; + ae(x) && (x = g[b] = "" + g[b]), x == null || x === "" ? (Ge("Can not create edge `" + p + "` with unspecified " + b), C = !0) : a.hasElementWithId(x) || (Ge("Can not create edge `" + p + "` with nonexistant " + b + " `" + x + "`"), C = !0); + } + if (C) { + c(); + continue; + } + var w = a.getElementById(g.source), D = a.getElementById(g.target); + w.same(D) ? w._private.edges.push(E) : (w._private.edges.push(E), D._private.edges.push(E)), E._private.source = w, E._private.target = D; + } + d.map = new Lt(), d.map.set(p, { + ele: v, + index: 0 + }), d.removed = !1, e && a.addToPool(v); + } + for (var A = 0; A < i.length; A++) { + var L = i[A], I = L._private.data; + ae(I.parent) && (I.parent = "" + I.parent); + var O = I.parent, P = O != null; + if (P || L._private.parent) { + var R = L._private.parent ? a.collection().merge(L._private.parent) : a.getElementById(O); + if (R.empty()) + I.parent = void 0; + else if (R[0].removed()) + Ne("Node added with missing parent, reference to parent removed"), I.parent = void 0, L._private.parent = null; + else { + for (var M = !1, k = R; !k.empty(); ) { + if (L.same(k)) { + M = !0, I.parent = void 0; + break; + } + k = k.parent(); + } + M || (R[0]._private.children.push(L), L._private.parent = R[0], n.hasCompoundNodes = !0); + } + } + } + if (o.length > 0) { + for (var B = o.length === r.length ? r : new Ze(a, o), G = 0; G < B.length; G++) { + var F = B[G]; + F.isNode() || (F.parallelEdges().clearTraversalCache(), F.source().clearTraversalCache(), F.target().clearTraversalCache()); + } + var $; + n.hasCompoundNodes ? $ = a.collection().merge(B).merge(B.connectedNodes()).merge(B.parent()) : $ = B, $.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(t), t ? B.emitAndNotify("add") : e && B.emit("add"); + } + return r; +}; +ke.removed = function() { + var t = this[0]; + return t && t._private.removed; +}; +ke.inside = function() { + var t = this[0]; + return t && !t._private.removed; +}; +ke.remove = function() { + var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0, e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0, r = this, a = [], n = {}, i = r._private.cy; + function s(O) { + for (var P = O._private.edges, R = 0; R < P.length; R++) + l(P[R]); + } + function o(O) { + for (var P = O._private.children, R = 0; R < P.length; R++) + l(P[R]); + } + function l(O) { + var P = n[O.id()]; + e && O.removed() || P || (n[O.id()] = !0, O.isNode() ? (a.push(O), s(O), o(O)) : a.unshift(O)); + } + for (var u = 0, f = r.length; u < f; u++) { + var h = r[u]; + l(h); + } + function c(O, P) { + var R = O._private.edges; + Xt(R, P), O.clearTraversalCache(); + } + function v(O) { + O.clearTraversalCache(); + } + var d = []; + d.ids = {}; + function g(O, P) { + P = P[0], O = O[0]; + var R = O._private.children, M = O.id(); + Xt(R, P), P._private.parent = null, d.ids[M] || (d.ids[M] = !0, d.push(O)); + } + r.dirtyCompoundBoundsCache(), e && i.removeFromPool(a); + for (var p = 0; p < a.length; p++) { + var y = a[p]; + if (y.isEdge()) { + var E = y.source()[0], m = y.target()[0]; + c(E, y), c(m, y); + for (var T = y.parallelEdges(), C = 0; C < T.length; C++) { + var S = T[C]; + v(S), S.isBundledBezier() && S.dirtyBoundingBoxCache(); + } + } else { + var b = y.parent(); + b.length !== 0 && g(b, y); + } + e && (y._private.removed = !0); + } + var x = i._private.elements; + i._private.hasCompoundNodes = !1; + for (var w = 0; w < x.length; w++) { + var D = x[w]; + if (D.isParent()) { + i._private.hasCompoundNodes = !0; + break; + } + } + var A = new Ze(this.cy(), a); + A.size() > 0 && (t ? A.emitAndNotify("remove") : e && A.emit("remove")); + for (var L = 0; L < d.length; L++) { + var I = d[L]; + (!e || !I.removed()) && I.updateStyle(); + } + return A; +}; +ke.move = function(t) { + var e = this._private.cy, r = this, a = !1, n = !1, i = function(d) { + return d == null ? d : "" + d; + }; + if (t.source !== void 0 || t.target !== void 0) { + var s = i(t.source), o = i(t.target), l = s != null && e.hasElementWithId(s), u = o != null && e.hasElementWithId(o); + (l || u) && (e.batch(function() { + r.remove(a, n), r.emitAndNotify("moveout"); + for (var v = 0; v < r.length; v++) { + var d = r[v], g = d._private.data; + d.isEdge() && (l && (g.source = s), u && (g.target = o)); + } + r.restore(a, n); + }), r.emitAndNotify("move")); + } else if (t.parent !== void 0) { + var f = i(t.parent), h = f === null || e.hasElementWithId(f); + if (h) { + var c = f === null ? void 0 : f; + e.batch(function() { + var v = r.remove(a, n); + v.emitAndNotify("moveout"); + for (var d = 0; d < r.length; d++) { + var g = r[d], p = g._private.data; + g.isNode() && (p.parent = c); + } + v.restore(a, n); + }), r.emitAndNotify("move"); + } + } + return this; +}; +[Io, Qg, Ba, Ut, Ar, cp, vn, Op, Ko, Zo, kp, Za, Fa, Ke, Ht, tt].forEach(function(t) { + de(ke, t); +}); +var Vp = { + add: function(e) { + var r, a = this; + if (ht(e)) { + var n = e; + if (n._private.cy === a) + r = n.restore(); + else { + for (var i = [], s = 0; s < n.length; s++) { + var o = n[s]; + i.push(o.json()); + } + r = new Ze(a, i); + } + } else if (Me(e)) { + var l = e; + r = new Ze(a, l); + } else if (De(e) && (Me(e.nodes) || Me(e.edges))) { + for (var u = e, f = [], h = ["nodes", "edges"], c = 0, v = h.length; c < v; c++) { + var d = h[c], g = u[d]; + if (Me(g)) + for (var p = 0, y = g.length; p < y; p++) { + var E = de({ + group: d + }, g[p]); + f.push(E); + } + } + r = new Ze(a, f); + } else { + var m = e; + r = new un(a, m).collection(); + } + return r; + }, + remove: function(e) { + if (!ht(e)) { + if (ve(e)) { + var r = e; + e = this.$(r); + } + } + return e.remove(); + } +}; +/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ +function _p(t, e, r, a) { + var n = 4, i = 1e-3, s = 1e-7, o = 10, l = 11, u = 1 / (l - 1), f = typeof Float32Array != "undefined"; + if (arguments.length !== 4) + return !1; + for (var h = 0; h < 4; ++h) + if (typeof arguments[h] != "number" || isNaN(arguments[h]) || !isFinite(arguments[h])) + return !1; + t = Math.min(t, 1), r = Math.min(r, 1), t = Math.max(t, 0), r = Math.max(r, 0); + var c = f ? new Float32Array(l) : new Array(l); + function v(D, A) { + return 1 - 3 * A + 3 * D; + } + function d(D, A) { + return 3 * A - 6 * D; + } + function g(D) { + return 3 * D; + } + function p(D, A, L) { + return ((v(A, L) * D + d(A, L)) * D + g(A)) * D; + } + function y(D, A, L) { + return 3 * v(A, L) * D * D + 2 * d(A, L) * D + g(A); + } + function E(D, A) { + for (var L = 0; L < n; ++L) { + var I = y(A, t, r); + if (I === 0) + return A; + var O = p(A, t, r) - D; + A -= O / I; + } + return A; + } + function m() { + for (var D = 0; D < l; ++D) + c[D] = p(D * u, t, r); + } + function T(D, A, L) { + var I, O, P = 0; + do + O = A + (L - A) / 2, I = p(O, t, r) - D, I > 0 ? L = O : A = O; + while (Math.abs(I) > s && ++P < o); + return O; + } + function C(D) { + for (var A = 0, L = 1, I = l - 1; L !== I && c[L] <= D; ++L) + A += u; + --L; + var O = (D - c[L]) / (c[L + 1] - c[L]), P = A + O * u, R = y(P, t, r); + return R >= i ? E(D, P) : R === 0 ? P : T(D, A, A + u); + } + var S = !1; + function b() { + S = !0, (t !== e || r !== a) && m(); + } + var x = function(A) { + return S || b(), t === e && r === a ? A : A === 0 ? 0 : A === 1 ? 1 : p(C(A), e, a); + }; + x.getControlPoints = function() { + return [{ + x: t, + y: e + }, { + x: r, + y: a + }]; + }; + var w = "generateBezier(" + [t, e, r, a] + ")"; + return x.toString = function() { + return w; + }, x; +} +/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ +var Up = function() { + function t(a) { + return -a.tension * a.x - a.friction * a.v; + } + function e(a, n, i) { + var s = { + x: a.x + i.dx * n, + v: a.v + i.dv * n, + tension: a.tension, + friction: a.friction + }; + return { + dx: s.v, + dv: t(s) + }; + } + function r(a, n) { + var i = { + dx: a.v, + dv: t(a) + }, s = e(a, n * 0.5, i), o = e(a, n * 0.5, s), l = e(a, n, o), u = 1 / 6 * (i.dx + 2 * (s.dx + o.dx) + l.dx), f = 1 / 6 * (i.dv + 2 * (s.dv + o.dv) + l.dv); + return a.x = a.x + u * n, a.v = a.v + f * n, a; + } + return function a(n, i, s) { + var o = { + x: -1, + v: 0, + tension: null, + friction: null + }, l = [0], u = 0, f = 1 / 1e4, h = 16 / 1e3, c, v, d; + for (n = parseFloat(n) || 500, i = parseFloat(i) || 20, s = s || null, o.tension = n, o.friction = i, c = s !== null, c ? (u = a(n, i), v = u / s * h) : v = h; d = r(d || o, v), l.push(1 + d.x), u += 16, Math.abs(d.x) > f && Math.abs(d.v) > f; ) + ; + return c ? function(g) { + return l[g * (l.length - 1) | 0]; + } : u; + }; +}(), Re = function(e, r, a, n) { + var i = _p(e, r, a, n); + return function(s, o, l) { + return s + (o - s) * i(l); + }; +}, Ga = { + linear: function(e, r, a) { + return e + (r - e) * a; + }, + // default easings + ease: Re(0.25, 0.1, 0.25, 1), + "ease-in": Re(0.42, 0, 1, 1), + "ease-out": Re(0, 0, 0.58, 1), + "ease-in-out": Re(0.42, 0, 0.58, 1), + // sine + "ease-in-sine": Re(0.47, 0, 0.745, 0.715), + "ease-out-sine": Re(0.39, 0.575, 0.565, 1), + "ease-in-out-sine": Re(0.445, 0.05, 0.55, 0.95), + // quad + "ease-in-quad": Re(0.55, 0.085, 0.68, 0.53), + "ease-out-quad": Re(0.25, 0.46, 0.45, 0.94), + "ease-in-out-quad": Re(0.455, 0.03, 0.515, 0.955), + // cubic + "ease-in-cubic": Re(0.55, 0.055, 0.675, 0.19), + "ease-out-cubic": Re(0.215, 0.61, 0.355, 1), + "ease-in-out-cubic": Re(0.645, 0.045, 0.355, 1), + // quart + "ease-in-quart": Re(0.895, 0.03, 0.685, 0.22), + "ease-out-quart": Re(0.165, 0.84, 0.44, 1), + "ease-in-out-quart": Re(0.77, 0, 0.175, 1), + // quint + "ease-in-quint": Re(0.755, 0.05, 0.855, 0.06), + "ease-out-quint": Re(0.23, 1, 0.32, 1), + "ease-in-out-quint": Re(0.86, 0, 0.07, 1), + // expo + "ease-in-expo": Re(0.95, 0.05, 0.795, 0.035), + "ease-out-expo": Re(0.19, 1, 0.22, 1), + "ease-in-out-expo": Re(1, 0, 0, 1), + // circ + "ease-in-circ": Re(0.6, 0.04, 0.98, 0.335), + "ease-out-circ": Re(0.075, 0.82, 0.165, 1), + "ease-in-out-circ": Re(0.785, 0.135, 0.15, 0.86), + // user param easings... + spring: function(e, r, a) { + if (a === 0) + return Ga.linear; + var n = Up(e, r, a); + return function(i, s, o) { + return i + (s - i) * n(o); + }; + }, + "cubic-bezier": Re +}; +function Ds(t, e, r, a, n) { + if (a === 1 || e === r) + return r; + var i = n(e, r, a); + return t == null || ((t.roundValue || t.color) && (i = Math.round(i)), t.min !== void 0 && (i = Math.max(i, t.min)), t.max !== void 0 && (i = Math.min(i, t.max))), i; +} +function Ss(t, e) { + return t.pfValue != null || t.value != null ? t.pfValue != null && (e == null || e.type.units !== "%") ? t.pfValue : t.value : t; +} +function pr(t, e, r, a, n) { + var i = n != null ? n.type : null; + r < 0 ? r = 0 : r > 1 && (r = 1); + var s = Ss(t, n), o = Ss(e, n); + if (ae(s) && ae(o)) + return Ds(i, s, o, r, a); + if (Me(s) && Me(o)) { + for (var l = [], u = 0; u < o.length; u++) { + var f = s[u], h = o[u]; + if (f != null && h != null) { + var c = Ds(i, f, h, r, a); + l.push(c); + } else + l.push(h); + } + return l; + } +} +function Hp(t, e, r, a) { + var n = !a, i = t._private, s = e._private, o = s.easing, l = s.startTime, u = a ? t : t.cy(), f = u.style(); + if (!s.easingImpl) + if (o == null) + s.easingImpl = Ga.linear; + else { + var h; + if (ve(o)) { + var c = f.parse("transition-timing-function", o); + h = c.value; + } else + h = o; + var v, d; + ve(h) ? (v = h, d = []) : (v = h[1], d = h.slice(2).map(function(B) { + return +B; + })), d.length > 0 ? (v === "spring" && d.push(s.duration), s.easingImpl = Ga[v].apply(null, d)) : s.easingImpl = Ga[v]; + } + var g = s.easingImpl, p; + if (s.duration === 0 ? p = 1 : p = (r - l) / s.duration, s.applying && (p = s.progress), p < 0 ? p = 0 : p > 1 && (p = 1), s.delay == null) { + var y = s.startPosition, E = s.position; + if (E && n && !t.locked()) { + var m = {}; + Yr(y.x, E.x) && (m.x = pr(y.x, E.x, p, g)), Yr(y.y, E.y) && (m.y = pr(y.y, E.y, p, g)), t.position(m); + } + var T = s.startPan, C = s.pan, S = i.pan, b = C != null && a; + b && (Yr(T.x, C.x) && (S.x = pr(T.x, C.x, p, g)), Yr(T.y, C.y) && (S.y = pr(T.y, C.y, p, g)), t.emit("pan")); + var x = s.startZoom, w = s.zoom, D = w != null && a; + D && (Yr(x, w) && (i.zoom = ra(i.minZoom, pr(x, w, p, g), i.maxZoom)), t.emit("zoom")), (b || D) && t.emit("viewport"); + var A = s.style; + if (A && A.length > 0 && n) { + for (var L = 0; L < A.length; L++) { + var I = A[L], O = I.name, P = I, R = s.startStyle[O], M = f.properties[R.name], k = pr(R, P, p, g, M); + f.overrideBypass(t, O, k); + } + t.emit("style"); + } + } + return s.progress = p, p; +} +function Yr(t, e) { + return t == null || e == null ? !1 : ae(t) && ae(e) ? !0 : !!(t && e); +} +function Yp(t, e, r, a) { + var n = e._private; + n.started = !0, n.startTime = r - n.progress * n.duration; +} +function Ls(t, e) { + var r = e._private.aniEles, a = []; + function n(f, h) { + var c = f._private, v = c.animation.current, d = c.animation.queue, g = !1; + if (v.length === 0) { + var p = d.shift(); + p && v.push(p); + } + for (var y = function(S) { + for (var b = S.length - 1; b >= 0; b--) { + var x = S[b]; + x(); + } + S.splice(0, S.length); + }, E = v.length - 1; E >= 0; E--) { + var m = v[E], T = m._private; + if (T.stopped) { + v.splice(E, 1), T.hooked = !1, T.playing = !1, T.started = !1, y(T.frames); + continue; + } + !T.playing && !T.applying || (T.playing && T.applying && (T.applying = !1), T.started || Yp(f, m, t), Hp(f, m, t, h), T.applying && (T.applying = !1), y(T.frames), T.step != null && T.step(t), m.completed() && (v.splice(E, 1), T.hooked = !1, T.playing = !1, T.started = !1, y(T.completes)), g = !0); + } + return !h && v.length === 0 && d.length === 0 && a.push(f), g; + } + for (var i = !1, s = 0; s < r.length; s++) { + var o = r[s], l = n(o); + i = i || l; + } + var u = n(e, !0); + (i || u) && (r.length > 0 ? e.notify("draw", r) : e.notify("draw")), r.unmerge(a), e.emit("step"); +} +var Xp = { + // pull in animation functions + animate: Oe.animate(), + animation: Oe.animation(), + animated: Oe.animated(), + clearQueue: Oe.clearQueue(), + delay: Oe.delay(), + delayAnimation: Oe.delayAnimation(), + stop: Oe.stop(), + addToAnimationPool: function(e) { + var r = this; + r.styleEnabled() && r._private.aniEles.merge(e); + }, + stopAnimationLoop: function() { + this._private.animationsRunning = !1; + }, + startAnimationLoop: function() { + var e = this; + if (e._private.animationsRunning = !0, !e.styleEnabled()) + return; + function r() { + e._private.animationsRunning && Ya(function(i) { + Ls(i, e), r(); + }); + } + var a = e.renderer(); + a && a.beforeRender ? a.beforeRender(function(i, s) { + Ls(s, e); + }, a.beforeRenderPriorities.animations) : r(); + } +}, Wp = { + qualifierCompare: function(e, r) { + return e == null || r == null ? e == null && r == null : e.sameText(r); + }, + eventMatches: function(e, r, a) { + var n = r.qualifier; + return n != null ? e !== a.target && ca(a.target) && n.matches(a.target) : !0; + }, + addEventFields: function(e, r) { + r.cy = e, r.target = e; + }, + callbackContext: function(e, r, a) { + return r.qualifier != null ? a.target : e; + } +}, Ma = function(e) { + return ve(e) ? new Wt(e) : e; +}, jo = { + createEmitter: function() { + var e = this._private; + return e.emitter || (e.emitter = new cn(Wp, this)), this; + }, + emitter: function() { + return this._private.emitter; + }, + on: function(e, r, a) { + return this.emitter().on(e, Ma(r), a), this; + }, + removeListener: function(e, r, a) { + return this.emitter().removeListener(e, Ma(r), a), this; + }, + removeAllListeners: function() { + return this.emitter().removeAllListeners(), this; + }, + one: function(e, r, a) { + return this.emitter().one(e, Ma(r), a), this; + }, + once: function(e, r, a) { + return this.emitter().one(e, Ma(r), a), this; + }, + emit: function(e, r) { + return this.emitter().emit(e, r), this; + }, + emitAndNotify: function(e, r) { + return this.emit(e), this.notify(e, r), this; + } +}; +Oe.eventAliasesOn(jo); +var Hn = { + png: function(e) { + var r = this._private.renderer; + return e = e || {}, r.png(e); + }, + jpg: function(e) { + var r = this._private.renderer; + return e = e || {}, e.bg = e.bg || "#fff", r.jpg(e); + } +}; +Hn.jpeg = Hn.jpg; +var za = { + layout: function(e) { + var r = this; + if (e == null) { + Ge("Layout options must be specified to make a layout"); + return; + } + if (e.name == null) { + Ge("A `name` must be specified to make a layout"); + return; + } + var a = e.name, n = r.extension("layout", a); + if (n == null) { + Ge("No such layout `" + a + "` found. Did you forget to import it and `cytoscape.use()` it?"); + return; + } + var i; + ve(e.eles) ? i = r.$(e.eles) : i = e.eles != null ? e.eles : r.$(); + var s = new n(de({}, e, { + cy: r, + eles: i + })); + return s; + } +}; +za.createLayout = za.makeLayout = za.layout; +var qp = { + notify: function(e, r) { + var a = this._private; + if (this.batching()) { + a.batchNotifications = a.batchNotifications || {}; + var n = a.batchNotifications[e] = a.batchNotifications[e] || this.collection(); + r != null && n.merge(r); + return; + } + if (a.notificationsEnabled) { + var i = this.renderer(); + this.destroyed() || !i || i.notify(e, r); + } + }, + notifications: function(e) { + var r = this._private; + return e === void 0 ? r.notificationsEnabled : (r.notificationsEnabled = !!e, this); + }, + noNotifications: function(e) { + this.notifications(!1), e(), this.notifications(!0); + }, + batching: function() { + return this._private.batchCount > 0; + }, + startBatch: function() { + var e = this._private; + return e.batchCount == null && (e.batchCount = 0), e.batchCount === 0 && (e.batchStyleEles = this.collection(), e.batchNotifications = {}), e.batchCount++, this; + }, + endBatch: function() { + var e = this._private; + if (e.batchCount === 0) + return this; + if (e.batchCount--, e.batchCount === 0) { + e.batchStyleEles.updateStyle(); + var r = this.renderer(); + Object.keys(e.batchNotifications).forEach(function(a) { + var n = e.batchNotifications[a]; + n.empty() ? r.notify(a) : r.notify(a, n); + }); + } + return this; + }, + batch: function(e) { + return this.startBatch(), e(), this.endBatch(), this; + }, + // for backwards compatibility + batchData: function(e) { + var r = this; + return this.batch(function() { + for (var a = Object.keys(e), n = 0; n < a.length; n++) { + var i = a[n], s = e[i], o = r.getElementById(i); + o.data(s); + } + }); + } +}, Kp = Qe({ + hideEdgesOnViewport: !1, + textureOnViewport: !1, + motionBlur: !1, + motionBlurOpacity: 0.05, + pixelRatio: void 0, + desktopTapThreshold: 4, + touchTapThreshold: 8, + wheelSensitivity: 1, + debug: !1, + showFps: !1 +}), Yn = { + renderTo: function(e, r, a, n) { + var i = this._private.renderer; + return i.renderTo(e, r, a, n), this; + }, + renderer: function() { + return this._private.renderer; + }, + forceRender: function() { + return this.notify("draw"), this; + }, + resize: function() { + return this.invalidateSize(), this.emitAndNotify("resize"), this; + }, + initRenderer: function(e) { + var r = this, a = r.extension("renderer", e.name); + if (a == null) { + Ge("Can not initialise: No such renderer `".concat(e.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); + return; + } + e.wheelSensitivity !== void 0 && Ne("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); + var n = Kp(e); + n.cy = r, r._private.renderer = new a(n), this.notify("init"); + }, + destroyRenderer: function() { + var e = this; + e.notify("destroy"); + var r = e.container(); + if (r) + for (r._cyreg = null; r.childNodes.length > 0; ) + r.removeChild(r.childNodes[0]); + e._private.renderer = null, e.mutableElements().forEach(function(a) { + var n = a._private; + n.rscratch = {}, n.rstyle = {}, n.animation.current = [], n.animation.queue = []; + }); + }, + onRender: function(e) { + return this.on("render", e); + }, + offRender: function(e) { + return this.off("render", e); + } +}; +Yn.invalidateDimensions = Yn.resize; +var $a = { + // get a collection + // - empty collection on no args + // - collection of elements in the graph on selector arg + // - guarantee a returned collection when elements or collection specified + collection: function(e, r) { + return ve(e) ? this.$(e) : ht(e) ? e.collection() : Me(e) ? (r || (r = {}), new Ze(this, e, r.unique, r.removed)) : new Ze(this); + }, + nodes: function(e) { + var r = this.$(function(a) { + return a.isNode(); + }); + return e ? r.filter(e) : r; + }, + edges: function(e) { + var r = this.$(function(a) { + return a.isEdge(); + }); + return e ? r.filter(e) : r; + }, + // search the graph like jQuery + $: function(e) { + var r = this._private.elements; + return e ? r.filter(e) : r.spawnSelf(); + }, + mutableElements: function() { + return this._private.elements; + } +}; +$a.elements = $a.filter = $a.$; +var at = {}, Zr = "t", Zp = "f"; +at.apply = function(t) { + for (var e = this, r = e._private, a = r.cy, n = a.collection(), i = 0; i < t.length; i++) { + var s = t[i], o = e.getContextMeta(s); + if (!o.empty) { + var l = e.getContextStyle(o), u = e.applyContextStyle(o, l, s); + s._private.appliedInitStyle ? e.updateTransitions(s, u.diffProps) : s._private.appliedInitStyle = !0; + var f = e.updateStyleHints(s); + f && n.push(s); + } + } + return n; +}; +at.getPropertiesDiff = function(t, e) { + var r = this, a = r._private.propDiffs = r._private.propDiffs || {}, n = t + "-" + e, i = a[n]; + if (i) + return i; + for (var s = [], o = {}, l = 0; l < r.length; l++) { + var u = r[l], f = t[l] === Zr, h = e[l] === Zr, c = f !== h, v = u.mappedProperties.length > 0; + if (c || h && v) { + var d = void 0; + c && v || c ? d = u.properties : v && (d = u.mappedProperties); + for (var g = 0; g < d.length; g++) { + for (var p = d[g], y = p.name, E = !1, m = l + 1; m < r.length; m++) { + var T = r[m], C = e[m] === Zr; + if (C && (E = T.properties[p.name] != null, E)) + break; + } + !o[y] && !E && (o[y] = !0, s.push(y)); + } + } + } + return a[n] = s, s; +}; +at.getContextMeta = function(t) { + for (var e = this, r = "", a, n = t._private.styleCxtKey || "", i = 0; i < e.length; i++) { + var s = e[i], o = s.selector && s.selector.matches(t); + o ? r += Zr : r += Zp; + } + return a = e.getPropertiesDiff(n, r), t._private.styleCxtKey = r, { + key: r, + diffPropNames: a, + empty: a.length === 0 + }; +}; +at.getContextStyle = function(t) { + var e = t.key, r = this, a = this._private.contextStyles = this._private.contextStyles || {}; + if (a[e]) + return a[e]; + for (var n = { + _private: { + key: e + } + }, i = 0; i < r.length; i++) { + var s = r[i], o = e[i] === Zr; + if (o) + for (var l = 0; l < s.properties.length; l++) { + var u = s.properties[l]; + n[u.name] = u; + } + } + return a[e] = n, n; +}; +at.applyContextStyle = function(t, e, r) { + for (var a = this, n = t.diffPropNames, i = {}, s = a.types, o = 0; o < n.length; o++) { + var l = n[o], u = e[l], f = r.pstyle(l); + if (!u) + if (f) + f.bypass ? u = { + name: l, + deleteBypassed: !0 + } : u = { + name: l, + delete: !0 + }; + else + continue; + if (f !== u) { + if (u.mapped === s.fn && f != null && f.mapping != null && f.mapping.value === u.value) { + var h = f.mapping, c = h.fnValue = u.value(r); + if (c === h.prevFnValue) + continue; + } + var v = i[l] = { + prev: f + }; + a.applyParsedProperty(r, u), v.next = r.pstyle(l), v.next && v.next.bypass && (v.next = v.next.bypassed); + } + } + return { + diffProps: i + }; +}; +at.updateStyleHints = function(t) { + var e = t._private, r = this, a = r.propertyGroupNames, n = r.propertyGroupKeys, i = function(ee, ne, ce) { + return r.getPropertiesHash(ee, ne, ce); + }, s = e.styleKey; + if (t.removed()) + return !1; + var o = e.group === "nodes", l = t._private.style; + a = Object.keys(l); + for (var u = 0; u < n.length; u++) { + var f = n[u]; + e.styleKeys[f] = [br, Xr]; + } + for (var h = function(ee, ne) { + return e.styleKeys[ne][0] = jr(ee, e.styleKeys[ne][0]); + }, c = function(ee, ne) { + return e.styleKeys[ne][1] = ea(ee, e.styleKeys[ne][1]); + }, v = function(ee, ne) { + h(ee, ne), c(ee, ne); + }, d = function(ee, ne) { + for (var ce = 0; ce < ee.length; ce++) { + var te = ee.charCodeAt(ce); + h(te, ne), c(te, ne); + } + }, g = 2e9, p = function(ee) { + return -128 < ee && ee < 128 && Math.floor(ee) !== ee ? g - (ee * 1024 | 0) : ee; + }, y = 0; y < a.length; y++) { + var E = a[y], m = l[E]; + if (m != null) { + var T = this.properties[E], C = T.type, S = T.groupKey, b = void 0; + T.hashOverride != null ? b = T.hashOverride(t, m) : m.pfValue != null && (b = m.pfValue); + var x = T.enums == null ? m.value : null, w = b != null, D = x != null, A = w || D, L = m.units; + if (C.number && A && !C.multiple) { + var I = w ? b : x; + v(p(I), S), !w && L != null && d(L, S); + } else + d(m.strValue, S); + } + } + for (var O = [br, Xr], P = 0; P < n.length; P++) { + var R = n[P], M = e.styleKeys[R]; + O[0] = jr(M[0], O[0]), O[1] = ea(M[1], O[1]); + } + e.styleKey = ud(O[0], O[1]); + var k = e.styleKeys; + e.labelDimsKey = Gt(k.labelDimensions); + var B = i(t, ["label"], k.labelDimensions); + if (e.labelKey = Gt(B), e.labelStyleKey = Gt(Ta(k.commonLabel, B)), !o) { + var G = i(t, ["source-label"], k.labelDimensions); + e.sourceLabelKey = Gt(G), e.sourceLabelStyleKey = Gt(Ta(k.commonLabel, G)); + var F = i(t, ["target-label"], k.labelDimensions); + e.targetLabelKey = Gt(F), e.targetLabelStyleKey = Gt(Ta(k.commonLabel, F)); + } + if (o) { + var $ = e.styleKeys, U = $.nodeBody, _ = $.nodeBorder, Y = $.nodeOutline, W = $.backgroundImage, z = $.compound, K = $.pie, j = [U, _, Y, W, z, K].filter(function(Q) { + return Q != null; + }).reduce(Ta, [br, Xr]); + e.nodeKey = Gt(j), e.hasPie = K != null && K[0] !== br && K[1] !== Xr; + } + return s !== e.styleKey; +}; +at.clearStyleHints = function(t) { + var e = t._private; + e.styleCxtKey = "", e.styleKeys = {}, e.styleKey = null, e.labelKey = null, e.labelStyleKey = null, e.sourceLabelKey = null, e.sourceLabelStyleKey = null, e.targetLabelKey = null, e.targetLabelStyleKey = null, e.nodeKey = null, e.hasPie = null; +}; +at.applyParsedProperty = function(t, e) { + var r = this, a = e, n = t._private.style, i, s = r.types, o = r.properties[a.name].type, l = a.bypass, u = n[a.name], f = u && u.bypass, h = t._private, c = "mapping", v = function(U) { + return U == null ? null : U.pfValue != null ? U.pfValue : U.value; + }, d = function() { + var U = v(u), _ = v(a); + r.checkTriggers(t, a.name, U, _); + }; + if (e.name === "curve-style" && t.isEdge() && // loops must be bundled beziers + (e.value !== "bezier" && t.isLoop() || // edges connected to compound nodes can not be haystacks + e.value === "haystack" && (t.source().isParent() || t.target().isParent())) && (a = e = this.parse(e.name, "bezier", l)), a.delete) + return n[a.name] = void 0, d(), !0; + if (a.deleteBypassed) + return u ? u.bypass ? (u.bypassed = void 0, d(), !0) : !1 : (d(), !0); + if (a.deleteBypass) + return u ? u.bypass ? (n[a.name] = u.bypassed, d(), !0) : !1 : (d(), !0); + var g = function() { + Ne("Do not assign mappings to elements without corresponding data (i.e. ele `" + t.id() + "` has no mapping for property `" + a.name + "` with data field `" + a.field + "`); try a `[" + a.field + "]` selector to limit scope to elements with `" + a.field + "` defined"); + }; + switch (a.mapped) { + case s.mapData: { + for (var p = a.field.split("."), y = h.data, E = 0; E < p.length && y; E++) { + var m = p[E]; + y = y[m]; + } + if (y == null) + return g(), !1; + var T; + if (ae(y)) { + var C = a.fieldMax - a.fieldMin; + C === 0 ? T = 0 : T = (y - a.fieldMin) / C; + } else + return Ne("Do not use continuous mappers without specifying numeric data (i.e. `" + a.field + ": " + y + "` for `" + t.id() + "` is non-numeric)"), !1; + if (T < 0 ? T = 0 : T > 1 && (T = 1), o.color) { + var S = a.valueMin[0], b = a.valueMax[0], x = a.valueMin[1], w = a.valueMax[1], D = a.valueMin[2], A = a.valueMax[2], L = a.valueMin[3] == null ? 1 : a.valueMin[3], I = a.valueMax[3] == null ? 1 : a.valueMax[3], O = [Math.round(S + (b - S) * T), Math.round(x + (w - x) * T), Math.round(D + (A - D) * T), Math.round(L + (I - L) * T)]; + i = { + // colours are simple, so just create the flat property instead of expensive string parsing + bypass: a.bypass, + // we're a bypass if the mapping property is a bypass + name: a.name, + value: O, + strValue: "rgb(" + O[0] + ", " + O[1] + ", " + O[2] + ")" + }; + } else if (o.number) { + var P = a.valueMin + (a.valueMax - a.valueMin) * T; + i = this.parse(a.name, P, a.bypass, c); + } else + return !1; + if (!i) + return g(), !1; + i.mapping = a, a = i; + break; + } + case s.data: { + for (var R = a.field.split("."), M = h.data, k = 0; k < R.length && M; k++) { + var B = R[k]; + M = M[B]; + } + if (M != null && (i = this.parse(a.name, M, a.bypass, c)), !i) + return g(), !1; + i.mapping = a, a = i; + break; + } + case s.fn: { + var G = a.value, F = a.fnValue != null ? a.fnValue : G(t); + if (a.prevFnValue = F, F == null) + return Ne("Custom function mappers may not return null (i.e. `" + a.name + "` for ele `" + t.id() + "` is null)"), !1; + if (i = this.parse(a.name, F, a.bypass, c), !i) + return Ne("Custom function mappers may not return invalid values for the property type (i.e. `" + a.name + "` for ele `" + t.id() + "` is invalid)"), !1; + i.mapping = St(a), a = i; + break; + } + case void 0: + break; + default: + return !1; + } + return l ? (f ? a.bypassed = u.bypassed : a.bypassed = u, n[a.name] = a) : f ? u.bypassed = a : n[a.name] = a, d(), !0; +}; +at.cleanElements = function(t, e) { + for (var r = 0; r < t.length; r++) { + var a = t[r]; + if (this.clearStyleHints(a), a.dirtyCompoundBoundsCache(), a.dirtyBoundingBoxCache(), !e) + a._private.style = {}; + else + for (var n = a._private.style, i = Object.keys(n), s = 0; s < i.length; s++) { + var o = i[s], l = n[o]; + l != null && (l.bypass ? l.bypassed = null : n[o] = null); + } + } +}; +at.update = function() { + var t = this._private.cy, e = t.mutableElements(); + e.updateStyle(); +}; +at.updateTransitions = function(t, e) { + var r = this, a = t._private, n = t.pstyle("transition-property").value, i = t.pstyle("transition-duration").pfValue, s = t.pstyle("transition-delay").pfValue; + if (n.length > 0 && i > 0) { + for (var o = {}, l = !1, u = 0; u < n.length; u++) { + var f = n[u], h = t.pstyle(f), c = e[f]; + if (c) { + var v = c.prev, d = v, g = c.next != null ? c.next : h, p = !1, y = void 0, E = 1e-6; + d && (ae(d.pfValue) && ae(g.pfValue) ? (p = g.pfValue - d.pfValue, y = d.pfValue + E * p) : ae(d.value) && ae(g.value) ? (p = g.value - d.value, y = d.value + E * p) : Me(d.value) && Me(g.value) && (p = d.value[0] !== g.value[0] || d.value[1] !== g.value[1] || d.value[2] !== g.value[2], y = d.strValue), p && (o[f] = g.strValue, this.applyBypass(t, f, y), l = !0)); + } + } + if (!l) + return; + a.transitioning = !0, new Rr(function(m) { + s > 0 ? t.delayAnimation(s).play().promise().then(m) : m(); + }).then(function() { + return t.animation({ + style: o, + duration: i, + easing: t.pstyle("transition-timing-function").value, + queue: !1 + }).play().promise(); + }).then(function() { + r.removeBypasses(t, n), t.emitAndNotify("style"), a.transitioning = !1; + }); + } else + a.transitioning && (this.removeBypasses(t, n), t.emitAndNotify("style"), a.transitioning = !1); +}; +at.checkTrigger = function(t, e, r, a, n, i) { + var s = this.properties[e], o = n(s); + o != null && o(r, a) && i(s); +}; +at.checkZOrderTrigger = function(t, e, r, a) { + var n = this; + this.checkTrigger(t, e, r, a, function(i) { + return i.triggersZOrder; + }, function() { + n._private.cy.notify("zorder", t); + }); +}; +at.checkBoundsTrigger = function(t, e, r, a) { + this.checkTrigger(t, e, r, a, function(n) { + return n.triggersBounds; + }, function(n) { + t.dirtyCompoundBoundsCache(), t.dirtyBoundingBoxCache(), // only for beziers -- so performance of other edges isn't affected + n.triggersBoundsOfParallelBeziers && e === "curve-style" && (r === "bezier" || a === "bezier") && t.parallelEdges().forEach(function(i) { + i.isBundledBezier() && i.dirtyBoundingBoxCache(); + }), n.triggersBoundsOfConnectedEdges && e === "display" && (r === "none" || a === "none") && t.connectedEdges().forEach(function(i) { + i.dirtyBoundingBoxCache(); + }); + }); +}; +at.checkTriggers = function(t, e, r, a) { + t.dirtyStyleCache(), this.checkZOrderTrigger(t, e, r, a), this.checkBoundsTrigger(t, e, r, a); +}; +var pa = {}; +pa.applyBypass = function(t, e, r, a) { + var n = this, i = [], s = !0; + if (e === "*" || e === "**") { + if (r !== void 0) + for (var o = 0; o < n.properties.length; o++) { + var l = n.properties[o], u = l.name, f = this.parse(u, r, !0); + f && i.push(f); + } + } else if (ve(e)) { + var h = this.parse(e, r, !0); + h && i.push(h); + } else if (De(e)) { + var c = e; + a = r; + for (var v = Object.keys(c), d = 0; d < v.length; d++) { + var g = v[d], p = c[g]; + if (p === void 0 && (p = c[ln(g)]), p !== void 0) { + var y = this.parse(g, p, !0); + y && i.push(y); + } + } + } else + return !1; + if (i.length === 0) + return !1; + for (var E = !1, m = 0; m < t.length; m++) { + for (var T = t[m], C = {}, S = void 0, b = 0; b < i.length; b++) { + var x = i[b]; + if (a) { + var w = T.pstyle(x.name); + S = C[x.name] = { + prev: w + }; + } + E = this.applyParsedProperty(T, St(x)) || E, a && (S.next = T.pstyle(x.name)); + } + E && this.updateStyleHints(T), a && this.updateTransitions(T, C, s); + } + return E; +}; +pa.overrideBypass = function(t, e, r) { + e = ii(e); + for (var a = 0; a < t.length; a++) { + var n = t[a], i = n._private.style[e], s = this.properties[e].type, o = s.color, l = s.mutiple, u = i ? i.pfValue != null ? i.pfValue : i.value : null; + !i || !i.bypass ? this.applyBypass(n, e, r) : (i.value = r, i.pfValue != null && (i.pfValue = r), o ? i.strValue = "rgb(" + r.join(",") + ")" : l ? i.strValue = r.join(" ") : i.strValue = "" + r, this.updateStyleHints(n)), this.checkTriggers(n, e, u, r); + } +}; +pa.removeAllBypasses = function(t, e) { + return this.removeBypasses(t, this.propertyNames, e); +}; +pa.removeBypasses = function(t, e, r) { + for (var a = !0, n = 0; n < t.length; n++) { + for (var i = t[n], s = {}, o = 0; o < e.length; o++) { + var l = e[o], u = this.properties[l], f = i.pstyle(u.name); + if (!(!f || !f.bypass)) { + var h = "", c = this.parse(l, h, !0), v = s[u.name] = { + prev: f + }; + this.applyParsedProperty(i, c), v.next = i.pstyle(u.name); + } + } + this.updateStyleHints(i), r && this.updateTransitions(i, s, a); + } +}; +var pi = {}; +pi.getEmSizeInPixels = function() { + var t = this.containerCss("font-size"); + return t != null ? parseFloat(t) : 1; +}; +pi.containerCss = function(t) { + var e = this._private.cy, r = e.container(), a = e.window(); + if (a && r && a.getComputedStyle) + return a.getComputedStyle(r).getPropertyValue(t); +}; +var At = {}; +At.getRenderedStyle = function(t, e) { + return e ? this.getStylePropertyValue(t, e, !0) : this.getRawStyle(t, !0); +}; +At.getRawStyle = function(t, e) { + var r = this; + if (t = t[0], t) { + for (var a = {}, n = 0; n < r.properties.length; n++) { + var i = r.properties[n], s = r.getStylePropertyValue(t, i.name, e); + s != null && (a[i.name] = s, a[ln(i.name)] = s); + } + return a; + } +}; +At.getIndexedStyle = function(t, e, r, a) { + var n = t.pstyle(e)[r][a]; + return n != null ? n : t.cy().style().getDefaultProperty(e)[r][0]; +}; +At.getStylePropertyValue = function(t, e, r) { + var a = this; + if (t = t[0], t) { + var n = a.properties[e]; + n.alias && (n = n.pointsTo); + var i = n.type, s = t.pstyle(n.name); + if (s) { + var o = s.value, l = s.units, u = s.strValue; + if (r && i.number && o != null && ae(o)) { + var f = t.cy().zoom(), h = function(p) { + return p * f; + }, c = function(p, y) { + return h(p) + y; + }, v = Me(o), d = v ? l.every(function(g) { + return g != null; + }) : l != null; + return d ? v ? o.map(function(g, p) { + return c(g, l[p]); + }).join(" ") : c(o, l) : v ? o.map(function(g) { + return ve(g) ? g : "" + h(g); + }).join(" ") : "" + h(o); + } else if (u != null) + return u; + } + return null; + } +}; +At.getAnimationStartStyle = function(t, e) { + for (var r = {}, a = 0; a < e.length; a++) { + var n = e[a], i = n.name, s = t.pstyle(i); + s !== void 0 && (De(s) ? s = this.parse(i, s.strValue) : s = this.parse(i, s)), s && (r[i] = s); + } + return r; +}; +At.getPropsList = function(t) { + var e = this, r = [], a = t, n = e.properties; + if (a) + for (var i = Object.keys(a), s = 0; s < i.length; s++) { + var o = i[s], l = a[o], u = n[o] || n[ii(o)], f = this.parse(u.name, l); + f && r.push(f); + } + return r; +}; +At.getNonDefaultPropertiesHash = function(t, e, r) { + var a = r.slice(), n, i, s, o, l, u; + for (l = 0; l < e.length; l++) + if (n = e[l], i = t.pstyle(n, !1), i != null) + if (i.pfValue != null) + a[0] = jr(o, a[0]), a[1] = ea(o, a[1]); + else + for (s = i.strValue, u = 0; u < s.length; u++) + o = s.charCodeAt(u), a[0] = jr(o, a[0]), a[1] = ea(o, a[1]); + return a; +}; +At.getPropertiesHash = At.getNonDefaultPropertiesHash; +var pn = {}; +pn.appendFromJson = function(t) { + for (var e = this, r = 0; r < t.length; r++) { + var a = t[r], n = a.selector, i = a.style || a.css, s = Object.keys(i); + e.selector(n); + for (var o = 0; o < s.length; o++) { + var l = s[o], u = i[l]; + e.css(l, u); + } + } + return e; +}; +pn.fromJson = function(t) { + var e = this; + return e.resetToDefault(), e.appendFromJson(t), e; +}; +pn.json = function() { + for (var t = [], e = this.defaultLength; e < this.length; e++) { + for (var r = this[e], a = r.selector, n = r.properties, i = {}, s = 0; s < n.length; s++) { + var o = n[s]; + i[o.name] = o.strValue; + } + t.push({ + selector: a ? a.toString() : "core", + style: i + }); + } + return t; +}; +var yi = {}; +yi.appendFromString = function(t) { + var e = this, r = this, a = "" + t, n, i, s; + a = a.replace(/[/][*](\s|.)+?[*][/]/g, ""); + function o() { + a.length > n.length ? a = a.substr(n.length) : a = ""; + } + function l() { + i.length > s.length ? i = i.substr(s.length) : i = ""; + } + for (; ; ) { + var u = a.match(/^\s*$/); + if (u) + break; + var f = a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); + if (!f) { + Ne("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: " + a); + break; + } + n = f[0]; + var h = f[1]; + if (h !== "core") { + var c = new Wt(h); + if (c.invalid) { + Ne("Skipping parsing of block: Invalid selector found in string stylesheet: " + h), o(); + continue; + } + } + var v = f[2], d = !1; + i = v; + for (var g = []; ; ) { + var p = i.match(/^\s*$/); + if (p) + break; + var y = i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/); + if (!y) { + Ne("Skipping parsing of block: Invalid formatting of style property and value definitions found in:" + v), d = !0; + break; + } + s = y[0]; + var E = y[1], m = y[2], T = e.properties[E]; + if (!T) { + Ne("Skipping property: Invalid property name in: " + s), l(); + continue; + } + var C = r.parse(E, m); + if (!C) { + Ne("Skipping property: Invalid property definition in: " + s), l(); + continue; + } + g.push({ + name: E, + val: m + }), l(); + } + if (d) { + o(); + break; + } + r.selector(h); + for (var S = 0; S < g.length; S++) { + var b = g[S]; + r.css(b.name, b.val); + } + o(); + } + return r; +}; +yi.fromString = function(t) { + var e = this; + return e.resetToDefault(), e.appendFromString(t), e; +}; +var qe = {}; +(function() { + var t = _e, e = Zc, r = Jc, a = jc, n = ed, i = function(j) { + return "^" + j + "\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"; + }, s = function(j) { + var Q = t + "|\\w+|" + e + "|" + r + "|" + a + "|" + n; + return "^" + j + "\\s*\\(([\\w\\.]+)\\s*\\,\\s*(" + t + ")\\s*\\,\\s*(" + t + ")\\s*,\\s*(" + Q + ")\\s*\\,\\s*(" + Q + ")\\)$"; + }, o = [`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`, "^(none)$", "^(.+)$"]; + qe.types = { + time: { + number: !0, + min: 0, + units: "s|ms", + implicitUnits: "ms" + }, + percent: { + number: !0, + min: 0, + max: 100, + units: "%", + implicitUnits: "%" + }, + percentages: { + number: !0, + min: 0, + max: 100, + units: "%", + implicitUnits: "%", + multiple: !0 + }, + zeroOneNumber: { + number: !0, + min: 0, + max: 1, + unitless: !0 + }, + zeroOneNumbers: { + number: !0, + min: 0, + max: 1, + unitless: !0, + multiple: !0 + }, + nOneOneNumber: { + number: !0, + min: -1, + max: 1, + unitless: !0 + }, + nonNegativeInt: { + number: !0, + min: 0, + integer: !0, + unitless: !0 + }, + nonNegativeNumber: { + number: !0, + min: 0, + unitless: !0 + }, + position: { + enums: ["parent", "origin"] + }, + nodeSize: { + number: !0, + min: 0, + enums: ["label"] + }, + number: { + number: !0, + unitless: !0 + }, + numbers: { + number: !0, + unitless: !0, + multiple: !0 + }, + positiveNumber: { + number: !0, + unitless: !0, + min: 0, + strictMin: !0 + }, + size: { + number: !0, + min: 0 + }, + bidirectionalSize: { + number: !0 + }, + // allows negative + bidirectionalSizeMaybePercent: { + number: !0, + allowPercent: !0 + }, + // allows negative + bidirectionalSizes: { + number: !0, + multiple: !0 + }, + // allows negative + sizeMaybePercent: { + number: !0, + min: 0, + allowPercent: !0 + }, + axisDirection: { + enums: ["horizontal", "leftward", "rightward", "vertical", "upward", "downward", "auto"] + }, + paddingRelativeTo: { + enums: ["width", "height", "average", "min", "max"] + }, + bgWH: { + number: !0, + min: 0, + allowPercent: !0, + enums: ["auto"], + multiple: !0 + }, + bgPos: { + number: !0, + allowPercent: !0, + multiple: !0 + }, + bgRelativeTo: { + enums: ["inner", "include-padding"], + multiple: !0 + }, + bgRepeat: { + enums: ["repeat", "repeat-x", "repeat-y", "no-repeat"], + multiple: !0 + }, + bgFit: { + enums: ["none", "contain", "cover"], + multiple: !0 + }, + bgCrossOrigin: { + enums: ["anonymous", "use-credentials", "null"], + multiple: !0 + }, + bgClip: { + enums: ["none", "node"], + multiple: !0 + }, + bgContainment: { + enums: ["inside", "over"], + multiple: !0 + }, + color: { + color: !0 + }, + colors: { + color: !0, + multiple: !0 + }, + fill: { + enums: ["solid", "linear-gradient", "radial-gradient"] + }, + bool: { + enums: ["yes", "no"] + }, + bools: { + enums: ["yes", "no"], + multiple: !0 + }, + lineStyle: { + enums: ["solid", "dotted", "dashed"] + }, + lineCap: { + enums: ["butt", "round", "square"] + }, + borderStyle: { + enums: ["solid", "dotted", "dashed", "double"] + }, + curveStyle: { + enums: ["bezier", "unbundled-bezier", "haystack", "segments", "straight", "straight-triangle", "taxi"] + }, + fontFamily: { + regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' + }, + fontStyle: { + enums: ["italic", "normal", "oblique"] + }, + fontWeight: { + enums: ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "800", "900", 100, 200, 300, 400, 500, 600, 700, 800, 900] + }, + textDecoration: { + enums: ["none", "underline", "overline", "line-through"] + }, + textTransform: { + enums: ["none", "uppercase", "lowercase"] + }, + textWrap: { + enums: ["none", "wrap", "ellipsis"] + }, + textOverflowWrap: { + enums: ["whitespace", "anywhere"] + }, + textBackgroundShape: { + enums: ["rectangle", "roundrectangle", "round-rectangle"] + }, + nodeShape: { + enums: ["rectangle", "roundrectangle", "round-rectangle", "cutrectangle", "cut-rectangle", "bottomroundrectangle", "bottom-round-rectangle", "barrel", "ellipse", "triangle", "round-triangle", "square", "pentagon", "round-pentagon", "hexagon", "round-hexagon", "concavehexagon", "concave-hexagon", "heptagon", "round-heptagon", "octagon", "round-octagon", "tag", "round-tag", "star", "diamond", "round-diamond", "vee", "rhomboid", "right-rhomboid", "polygon"] + }, + overlayShape: { + enums: ["roundrectangle", "round-rectangle", "ellipse"] + }, + compoundIncludeLabels: { + enums: ["include", "exclude"] + }, + arrowShape: { + enums: ["tee", "triangle", "triangle-tee", "circle-triangle", "triangle-cross", "triangle-backcurve", "vee", "square", "circle", "diamond", "chevron", "none"] + }, + arrowFill: { + enums: ["filled", "hollow"] + }, + arrowWidth: { + number: !0, + units: "%|px|em", + implicitUnits: "px", + enums: ["match-line"] + }, + display: { + enums: ["element", "none"] + }, + visibility: { + enums: ["hidden", "visible"] + }, + zCompoundDepth: { + enums: ["bottom", "orphan", "auto", "top"] + }, + zIndexCompare: { + enums: ["auto", "manual"] + }, + valign: { + enums: ["top", "center", "bottom"] + }, + halign: { + enums: ["left", "center", "right"] + }, + justification: { + enums: ["left", "center", "right", "auto"] + }, + text: { + string: !0 + }, + data: { + mapping: !0, + regex: i("data") + }, + layoutData: { + mapping: !0, + regex: i("layoutData") + }, + scratch: { + mapping: !0, + regex: i("scratch") + }, + mapData: { + mapping: !0, + regex: s("mapData") + }, + mapLayoutData: { + mapping: !0, + regex: s("mapLayoutData") + }, + mapScratch: { + mapping: !0, + regex: s("mapScratch") + }, + fn: { + mapping: !0, + fn: !0 + }, + url: { + regexes: o, + singleRegexMatchValue: !0 + }, + urls: { + regexes: o, + singleRegexMatchValue: !0, + multiple: !0 + }, + propList: { + propList: !0 + }, + angle: { + number: !0, + units: "deg|rad", + implicitUnits: "rad" + }, + textRotation: { + number: !0, + units: "deg|rad", + implicitUnits: "rad", + enums: ["none", "autorotate"] + }, + polygonPointList: { + number: !0, + multiple: !0, + evenMultiple: !0, + min: -1, + max: 1, + unitless: !0 + }, + edgeDistances: { + enums: ["intersection", "node-position", "endpoints"] + }, + edgeEndpoint: { + number: !0, + multiple: !0, + units: "%|px|em|deg|rad", + implicitUnits: "px", + enums: ["inside-to-node", "outside-to-node", "outside-to-node-or-label", "outside-to-line", "outside-to-line-or-label"], + singleEnum: !0, + validate: function(j, Q) { + switch (j.length) { + case 2: + return Q[0] !== "deg" && Q[0] !== "rad" && Q[1] !== "deg" && Q[1] !== "rad"; + case 1: + return ve(j[0]) || Q[0] === "deg" || Q[0] === "rad"; + default: + return !1; + } + } + }, + easing: { + regexes: ["^(spring)\\s*\\(\\s*(" + t + ")\\s*,\\s*(" + t + ")\\s*\\)$", "^(cubic-bezier)\\s*\\(\\s*(" + t + ")\\s*,\\s*(" + t + ")\\s*,\\s*(" + t + ")\\s*,\\s*(" + t + ")\\s*\\)$"], + enums: ["linear", "ease", "ease-in", "ease-out", "ease-in-out", "ease-in-sine", "ease-out-sine", "ease-in-out-sine", "ease-in-quad", "ease-out-quad", "ease-in-out-quad", "ease-in-cubic", "ease-out-cubic", "ease-in-out-cubic", "ease-in-quart", "ease-out-quart", "ease-in-out-quart", "ease-in-quint", "ease-out-quint", "ease-in-out-quint", "ease-in-expo", "ease-out-expo", "ease-in-out-expo", "ease-in-circ", "ease-out-circ", "ease-in-out-circ"] + }, + gradientDirection: { + enums: [ + "to-bottom", + "to-top", + "to-left", + "to-right", + "to-bottom-right", + "to-bottom-left", + "to-top-right", + "to-top-left", + "to-right-bottom", + "to-left-bottom", + "to-right-top", + "to-left-top" + // different order + ] + }, + boundsExpansion: { + number: !0, + multiple: !0, + min: 0, + validate: function(j) { + var Q = j.length; + return Q === 1 || Q === 2 || Q === 4; + } + } + }; + var l = { + zeroNonZero: function(j, Q) { + return (j == null || Q == null) && j !== Q || j == 0 && Q != 0 ? !0 : j != 0 && Q == 0; + }, + any: function(j, Q) { + return j != Q; + }, + emptyNonEmpty: function(j, Q) { + var ee = Yt(j), ne = Yt(Q); + return ee && !ne || !ee && ne; + } + }, u = qe.types, f = [{ + name: "label", + type: u.text, + triggersBounds: l.any, + triggersZOrder: l.emptyNonEmpty + }, { + name: "text-rotation", + type: u.textRotation, + triggersBounds: l.any + }, { + name: "text-margin-x", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "text-margin-y", + type: u.bidirectionalSize, + triggersBounds: l.any + }], h = [{ + name: "source-label", + type: u.text, + triggersBounds: l.any + }, { + name: "source-text-rotation", + type: u.textRotation, + triggersBounds: l.any + }, { + name: "source-text-margin-x", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "source-text-margin-y", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "source-text-offset", + type: u.size, + triggersBounds: l.any + }], c = [{ + name: "target-label", + type: u.text, + triggersBounds: l.any + }, { + name: "target-text-rotation", + type: u.textRotation, + triggersBounds: l.any + }, { + name: "target-text-margin-x", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "target-text-margin-y", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "target-text-offset", + type: u.size, + triggersBounds: l.any + }], v = [{ + name: "font-family", + type: u.fontFamily, + triggersBounds: l.any + }, { + name: "font-style", + type: u.fontStyle, + triggersBounds: l.any + }, { + name: "font-weight", + type: u.fontWeight, + triggersBounds: l.any + }, { + name: "font-size", + type: u.size, + triggersBounds: l.any + }, { + name: "text-transform", + type: u.textTransform, + triggersBounds: l.any + }, { + name: "text-wrap", + type: u.textWrap, + triggersBounds: l.any + }, { + name: "text-overflow-wrap", + type: u.textOverflowWrap, + triggersBounds: l.any + }, { + name: "text-max-width", + type: u.size, + triggersBounds: l.any + }, { + name: "text-outline-width", + type: u.size, + triggersBounds: l.any + }, { + name: "line-height", + type: u.positiveNumber, + triggersBounds: l.any + }], d = [{ + name: "text-valign", + type: u.valign, + triggersBounds: l.any + }, { + name: "text-halign", + type: u.halign, + triggersBounds: l.any + }, { + name: "color", + type: u.color + }, { + name: "text-outline-color", + type: u.color + }, { + name: "text-outline-opacity", + type: u.zeroOneNumber + }, { + name: "text-background-color", + type: u.color + }, { + name: "text-background-opacity", + type: u.zeroOneNumber + }, { + name: "text-background-padding", + type: u.size, + triggersBounds: l.any + }, { + name: "text-border-opacity", + type: u.zeroOneNumber + }, { + name: "text-border-color", + type: u.color + }, { + name: "text-border-width", + type: u.size, + triggersBounds: l.any + }, { + name: "text-border-style", + type: u.borderStyle, + triggersBounds: l.any + }, { + name: "text-background-shape", + type: u.textBackgroundShape, + triggersBounds: l.any + }, { + name: "text-justification", + type: u.justification + }], g = [{ + name: "events", + type: u.bool, + triggersZOrder: l.any + }, { + name: "text-events", + type: u.bool, + triggersZOrder: l.any + }], p = [{ + name: "display", + type: u.display, + triggersZOrder: l.any, + triggersBounds: l.any, + triggersBoundsOfConnectedEdges: !0 + }, { + name: "visibility", + type: u.visibility, + triggersZOrder: l.any + }, { + name: "opacity", + type: u.zeroOneNumber, + triggersZOrder: l.zeroNonZero + }, { + name: "text-opacity", + type: u.zeroOneNumber + }, { + name: "min-zoomed-font-size", + type: u.size + }, { + name: "z-compound-depth", + type: u.zCompoundDepth, + triggersZOrder: l.any + }, { + name: "z-index-compare", + type: u.zIndexCompare, + triggersZOrder: l.any + }, { + name: "z-index", + type: u.number, + triggersZOrder: l.any + }], y = [{ + name: "overlay-padding", + type: u.size, + triggersBounds: l.any + }, { + name: "overlay-color", + type: u.color + }, { + name: "overlay-opacity", + type: u.zeroOneNumber, + triggersBounds: l.zeroNonZero + }, { + name: "overlay-shape", + type: u.overlayShape, + triggersBounds: l.any + }], E = [{ + name: "underlay-padding", + type: u.size, + triggersBounds: l.any + }, { + name: "underlay-color", + type: u.color + }, { + name: "underlay-opacity", + type: u.zeroOneNumber, + triggersBounds: l.zeroNonZero + }, { + name: "underlay-shape", + type: u.overlayShape, + triggersBounds: l.any + }], m = [{ + name: "transition-property", + type: u.propList + }, { + name: "transition-duration", + type: u.time + }, { + name: "transition-delay", + type: u.time + }, { + name: "transition-timing-function", + type: u.easing + }], T = function(j, Q) { + return Q.value === "label" ? -j.poolIndex() : Q.pfValue; + }, C = [{ + name: "height", + type: u.nodeSize, + triggersBounds: l.any, + hashOverride: T + }, { + name: "width", + type: u.nodeSize, + triggersBounds: l.any, + hashOverride: T + }, { + name: "shape", + type: u.nodeShape, + triggersBounds: l.any + }, { + name: "shape-polygon-points", + type: u.polygonPointList, + triggersBounds: l.any + }, { + name: "background-color", + type: u.color + }, { + name: "background-fill", + type: u.fill + }, { + name: "background-opacity", + type: u.zeroOneNumber + }, { + name: "background-blacken", + type: u.nOneOneNumber + }, { + name: "background-gradient-stop-colors", + type: u.colors + }, { + name: "background-gradient-stop-positions", + type: u.percentages + }, { + name: "background-gradient-direction", + type: u.gradientDirection + }, { + name: "padding", + type: u.sizeMaybePercent, + triggersBounds: l.any + }, { + name: "padding-relative-to", + type: u.paddingRelativeTo, + triggersBounds: l.any + }, { + name: "bounds-expansion", + type: u.boundsExpansion, + triggersBounds: l.any + }], S = [{ + name: "border-color", + type: u.color + }, { + name: "border-opacity", + type: u.zeroOneNumber + }, { + name: "border-width", + type: u.size, + triggersBounds: l.any + }, { + name: "border-style", + type: u.borderStyle + }], b = [{ + name: "outline-color", + type: u.color + }, { + name: "outline-opacity", + type: u.zeroOneNumber + }, { + name: "outline-width", + type: u.size, + triggersBounds: l.any + }, { + name: "outline-style", + type: u.borderStyle + }, { + name: "outline-offset", + type: u.size, + triggersBounds: l.any + }], x = [{ + name: "background-image", + type: u.urls + }, { + name: "background-image-crossorigin", + type: u.bgCrossOrigin + }, { + name: "background-image-opacity", + type: u.zeroOneNumbers + }, { + name: "background-image-containment", + type: u.bgContainment + }, { + name: "background-image-smoothing", + type: u.bools + }, { + name: "background-position-x", + type: u.bgPos + }, { + name: "background-position-y", + type: u.bgPos + }, { + name: "background-width-relative-to", + type: u.bgRelativeTo + }, { + name: "background-height-relative-to", + type: u.bgRelativeTo + }, { + name: "background-repeat", + type: u.bgRepeat + }, { + name: "background-fit", + type: u.bgFit + }, { + name: "background-clip", + type: u.bgClip + }, { + name: "background-width", + type: u.bgWH + }, { + name: "background-height", + type: u.bgWH + }, { + name: "background-offset-x", + type: u.bgPos + }, { + name: "background-offset-y", + type: u.bgPos + }], w = [{ + name: "position", + type: u.position, + triggersBounds: l.any + }, { + name: "compound-sizing-wrt-labels", + type: u.compoundIncludeLabels, + triggersBounds: l.any + }, { + name: "min-width", + type: u.size, + triggersBounds: l.any + }, { + name: "min-width-bias-left", + type: u.sizeMaybePercent, + triggersBounds: l.any + }, { + name: "min-width-bias-right", + type: u.sizeMaybePercent, + triggersBounds: l.any + }, { + name: "min-height", + type: u.size, + triggersBounds: l.any + }, { + name: "min-height-bias-top", + type: u.sizeMaybePercent, + triggersBounds: l.any + }, { + name: "min-height-bias-bottom", + type: u.sizeMaybePercent, + triggersBounds: l.any + }], D = [{ + name: "line-style", + type: u.lineStyle + }, { + name: "line-color", + type: u.color + }, { + name: "line-fill", + type: u.fill + }, { + name: "line-cap", + type: u.lineCap + }, { + name: "line-opacity", + type: u.zeroOneNumber + }, { + name: "line-dash-pattern", + type: u.numbers + }, { + name: "line-dash-offset", + type: u.number + }, { + name: "line-gradient-stop-colors", + type: u.colors + }, { + name: "line-gradient-stop-positions", + type: u.percentages + }, { + name: "curve-style", + type: u.curveStyle, + triggersBounds: l.any, + triggersBoundsOfParallelBeziers: !0 + }, { + name: "haystack-radius", + type: u.zeroOneNumber, + triggersBounds: l.any + }, { + name: "source-endpoint", + type: u.edgeEndpoint, + triggersBounds: l.any + }, { + name: "target-endpoint", + type: u.edgeEndpoint, + triggersBounds: l.any + }, { + name: "control-point-step-size", + type: u.size, + triggersBounds: l.any + }, { + name: "control-point-distances", + type: u.bidirectionalSizes, + triggersBounds: l.any + }, { + name: "control-point-weights", + type: u.numbers, + triggersBounds: l.any + }, { + name: "segment-distances", + type: u.bidirectionalSizes, + triggersBounds: l.any + }, { + name: "segment-weights", + type: u.numbers, + triggersBounds: l.any + }, { + name: "taxi-turn", + type: u.bidirectionalSizeMaybePercent, + triggersBounds: l.any + }, { + name: "taxi-turn-min-distance", + type: u.size, + triggersBounds: l.any + }, { + name: "taxi-direction", + type: u.axisDirection, + triggersBounds: l.any + }, { + name: "edge-distances", + type: u.edgeDistances, + triggersBounds: l.any + }, { + name: "arrow-scale", + type: u.positiveNumber, + triggersBounds: l.any + }, { + name: "loop-direction", + type: u.angle, + triggersBounds: l.any + }, { + name: "loop-sweep", + type: u.angle, + triggersBounds: l.any + }, { + name: "source-distance-from-node", + type: u.size, + triggersBounds: l.any + }, { + name: "target-distance-from-node", + type: u.size, + triggersBounds: l.any + }], A = [{ + name: "ghost", + type: u.bool, + triggersBounds: l.any + }, { + name: "ghost-offset-x", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "ghost-offset-y", + type: u.bidirectionalSize, + triggersBounds: l.any + }, { + name: "ghost-opacity", + type: u.zeroOneNumber + }], L = [{ + name: "selection-box-color", + type: u.color + }, { + name: "selection-box-opacity", + type: u.zeroOneNumber + }, { + name: "selection-box-border-color", + type: u.color + }, { + name: "selection-box-border-width", + type: u.size + }, { + name: "active-bg-color", + type: u.color + }, { + name: "active-bg-opacity", + type: u.zeroOneNumber + }, { + name: "active-bg-size", + type: u.size + }, { + name: "outside-texture-bg-color", + type: u.color + }, { + name: "outside-texture-bg-opacity", + type: u.zeroOneNumber + }], I = []; + qe.pieBackgroundN = 16, I.push({ + name: "pie-size", + type: u.sizeMaybePercent + }); + for (var O = 1; O <= qe.pieBackgroundN; O++) + I.push({ + name: "pie-" + O + "-background-color", + type: u.color + }), I.push({ + name: "pie-" + O + "-background-size", + type: u.percent + }), I.push({ + name: "pie-" + O + "-background-opacity", + type: u.zeroOneNumber + }); + var P = [], R = qe.arrowPrefixes = ["source", "mid-source", "target", "mid-target"]; + [{ + name: "arrow-shape", + type: u.arrowShape, + triggersBounds: l.any + }, { + name: "arrow-color", + type: u.color + }, { + name: "arrow-fill", + type: u.arrowFill + }, { + name: "arrow-width", + type: u.arrowWidth + }].forEach(function(K) { + R.forEach(function(j) { + var Q = j + "-" + K.name, ee = K.type, ne = K.triggersBounds; + P.push({ + name: Q, + type: ee, + triggersBounds: ne + }); + }); + }, {}); + var M = qe.properties = [].concat(g, m, p, y, E, A, d, v, f, h, c, C, S, b, x, I, w, D, P, L), k = qe.propertyGroups = { + // common to all eles + behavior: g, + transition: m, + visibility: p, + overlay: y, + underlay: E, + ghost: A, + // labels + commonLabel: d, + labelDimensions: v, + mainLabel: f, + sourceLabel: h, + targetLabel: c, + // node props + nodeBody: C, + nodeBorder: S, + nodeOutline: b, + backgroundImage: x, + pie: I, + compound: w, + // edge props + edgeLine: D, + edgeArrow: P, + core: L + }, B = qe.propertyGroupNames = {}, G = qe.propertyGroupKeys = Object.keys(k); + G.forEach(function(K) { + B[K] = k[K].map(function(j) { + return j.name; + }), k[K].forEach(function(j) { + return j.groupKey = K; + }); + }); + var F = qe.aliases = [{ + name: "content", + pointsTo: "label" + }, { + name: "control-point-distance", + pointsTo: "control-point-distances" + }, { + name: "control-point-weight", + pointsTo: "control-point-weights" + }, { + name: "edge-text-rotation", + pointsTo: "text-rotation" + }, { + name: "padding-left", + pointsTo: "padding" + }, { + name: "padding-right", + pointsTo: "padding" + }, { + name: "padding-top", + pointsTo: "padding" + }, { + name: "padding-bottom", + pointsTo: "padding" + }]; + qe.propertyNames = M.map(function(K) { + return K.name; + }); + for (var $ = 0; $ < M.length; $++) { + var U = M[$]; + M[U.name] = U; + } + for (var _ = 0; _ < F.length; _++) { + var Y = F[_], W = M[Y.pointsTo], z = { + name: Y.name, + alias: !0, + pointsTo: W + }; + M.push(z), M[Y.name] = z; + } +})(); +qe.getDefaultProperty = function(t) { + return this.getDefaultProperties()[t]; +}; +qe.getDefaultProperties = function() { + var t = this._private; + if (t.defaultProperties != null) + return t.defaultProperties; + for (var e = de({ + // core props + "selection-box-color": "#ddd", + "selection-box-opacity": 0.65, + "selection-box-border-color": "#aaa", + "selection-box-border-width": 1, + "active-bg-color": "black", + "active-bg-opacity": 0.15, + "active-bg-size": 30, + "outside-texture-bg-color": "#000", + "outside-texture-bg-opacity": 0.125, + // common node/edge props + events: "yes", + "text-events": "no", + "text-valign": "top", + "text-halign": "center", + "text-justification": "auto", + "line-height": 1, + color: "#000", + "text-outline-color": "#000", + "text-outline-width": 0, + "text-outline-opacity": 1, + "text-opacity": 1, + "text-decoration": "none", + "text-transform": "none", + "text-wrap": "none", + "text-overflow-wrap": "whitespace", + "text-max-width": 9999, + "text-background-color": "#000", + "text-background-opacity": 0, + "text-background-shape": "rectangle", + "text-background-padding": 0, + "text-border-opacity": 0, + "text-border-width": 0, + "text-border-style": "solid", + "text-border-color": "#000", + "font-family": "Helvetica Neue, Helvetica, sans-serif", + "font-style": "normal", + "font-weight": "normal", + "font-size": 16, + "min-zoomed-font-size": 0, + "text-rotation": "none", + "source-text-rotation": "none", + "target-text-rotation": "none", + visibility: "visible", + display: "element", + opacity: 1, + "z-compound-depth": "auto", + "z-index-compare": "auto", + "z-index": 0, + label: "", + "text-margin-x": 0, + "text-margin-y": 0, + "source-label": "", + "source-text-offset": 0, + "source-text-margin-x": 0, + "source-text-margin-y": 0, + "target-label": "", + "target-text-offset": 0, + "target-text-margin-x": 0, + "target-text-margin-y": 0, + "overlay-opacity": 0, + "overlay-color": "#000", + "overlay-padding": 10, + "overlay-shape": "round-rectangle", + "underlay-opacity": 0, + "underlay-color": "#000", + "underlay-padding": 10, + "underlay-shape": "round-rectangle", + "transition-property": "none", + "transition-duration": 0, + "transition-delay": 0, + "transition-timing-function": "linear", + // node props + "background-blacken": 0, + "background-color": "#999", + "background-fill": "solid", + "background-opacity": 1, + "background-image": "none", + "background-image-crossorigin": "anonymous", + "background-image-opacity": 1, + "background-image-containment": "inside", + "background-image-smoothing": "yes", + "background-position-x": "50%", + "background-position-y": "50%", + "background-offset-x": 0, + "background-offset-y": 0, + "background-width-relative-to": "include-padding", + "background-height-relative-to": "include-padding", + "background-repeat": "no-repeat", + "background-fit": "none", + "background-clip": "node", + "background-width": "auto", + "background-height": "auto", + "border-color": "#000", + "border-opacity": 1, + "border-width": 0, + "border-style": "solid", + "outline-color": "#999", + "outline-opacity": 1, + "outline-width": 0, + "outline-offset": 0, + "outline-style": "solid", + height: 30, + width: 30, + shape: "ellipse", + "shape-polygon-points": "-1, -1, 1, -1, 1, 1, -1, 1", + "bounds-expansion": 0, + // node gradient + "background-gradient-direction": "to-bottom", + "background-gradient-stop-colors": "#999", + "background-gradient-stop-positions": "0%", + // ghost props + ghost: "no", + "ghost-offset-y": 0, + "ghost-offset-x": 0, + "ghost-opacity": 0, + // compound props + padding: 0, + "padding-relative-to": "width", + position: "origin", + "compound-sizing-wrt-labels": "include", + "min-width": 0, + "min-width-bias-left": 0, + "min-width-bias-right": 0, + "min-height": 0, + "min-height-bias-top": 0, + "min-height-bias-bottom": 0 + }, { + // node pie bg + "pie-size": "100%" + }, [{ + name: "pie-{{i}}-background-color", + value: "black" + }, { + name: "pie-{{i}}-background-size", + value: "0%" + }, { + name: "pie-{{i}}-background-opacity", + value: 1 + }].reduce(function(l, u) { + for (var f = 1; f <= qe.pieBackgroundN; f++) { + var h = u.name.replace("{{i}}", f), c = u.value; + l[h] = c; + } + return l; + }, {}), { + // edge props + "line-style": "solid", + "line-color": "#999", + "line-fill": "solid", + "line-cap": "butt", + "line-opacity": 1, + "line-gradient-stop-colors": "#999", + "line-gradient-stop-positions": "0%", + "control-point-step-size": 40, + "control-point-weights": 0.5, + "segment-weights": 0.5, + "segment-distances": 20, + "taxi-turn": "50%", + "taxi-turn-min-distance": 10, + "taxi-direction": "auto", + "edge-distances": "intersection", + "curve-style": "haystack", + "haystack-radius": 0, + "arrow-scale": 1, + "loop-direction": "-45deg", + "loop-sweep": "-90deg", + "source-distance-from-node": 0, + "target-distance-from-node": 0, + "source-endpoint": "outside-to-node", + "target-endpoint": "outside-to-node", + "line-dash-pattern": [6, 3], + "line-dash-offset": 0 + }, [{ + name: "arrow-shape", + value: "none" + }, { + name: "arrow-color", + value: "#999" + }, { + name: "arrow-fill", + value: "filled" + }, { + name: "arrow-width", + value: 1 + }].reduce(function(l, u) { + return qe.arrowPrefixes.forEach(function(f) { + var h = f + "-" + u.name, c = u.value; + l[h] = c; + }), l; + }, {})), r = {}, a = 0; a < this.properties.length; a++) { + var n = this.properties[a]; + if (!n.pointsTo) { + var i = n.name, s = e[i], o = this.parse(i, s); + r[i] = o; + } + } + return t.defaultProperties = r, t.defaultProperties; +}; +qe.addDefaultStylesheet = function() { + this.selector(":parent").css({ + shape: "rectangle", + padding: 10, + "background-color": "#eee", + "border-color": "#ccc", + "border-width": 1 + }).selector("edge").css({ + width: 3 + }).selector(":loop").css({ + "curve-style": "bezier" + }).selector("edge:compound").css({ + "curve-style": "bezier", + "source-endpoint": "outside-to-line", + "target-endpoint": "outside-to-line" + }).selector(":selected").css({ + "background-color": "#0169D9", + "line-color": "#0169D9", + "source-arrow-color": "#0169D9", + "target-arrow-color": "#0169D9", + "mid-source-arrow-color": "#0169D9", + "mid-target-arrow-color": "#0169D9" + }).selector(":parent:selected").css({ + "background-color": "#CCE1F9", + "border-color": "#aec8e5" + }).selector(":active").css({ + "overlay-color": "black", + "overlay-padding": 10, + "overlay-opacity": 0.25 + }), this.defaultLength = this.length; +}; +var yn = {}; +yn.parse = function(t, e, r, a) { + var n = this; + if (Be(e)) + return n.parseImplWarn(t, e, r, a); + var i = a === "mapping" || a === !0 || a === !1 || a == null ? "dontcare" : a, s = r ? "t" : "f", o = "" + e, l = go(t, o, s, i), u = n.propCache = n.propCache || [], f; + return (f = u[l]) || (f = u[l] = n.parseImplWarn(t, e, r, a)), (r || a === "mapping") && (f = St(f), f && (f.value = St(f.value))), f; +}; +yn.parseImplWarn = function(t, e, r, a) { + var n = this.parseImpl(t, e, r, a); + return !n && e != null && Ne("The style property `".concat(t, ": ").concat(e, "` is invalid")), n && (n.name === "width" || n.name === "height") && e === "label" && Ne("The style value of `label` is deprecated for `" + n.name + "`"), n; +}; +yn.parseImpl = function(t, e, r, a) { + var n = this; + t = ii(t); + var i = n.properties[t], s = e, o = n.types; + if (!i || e === void 0) + return null; + i.alias && (i = i.pointsTo, t = i.name); + var l = ve(e); + l && (e = e.trim()); + var u = i.type; + if (!u) + return null; + if (r && (e === "" || e === null)) + return { + name: t, + value: e, + bypass: !0, + deleteBypass: !0 + }; + if (Be(e)) + return { + name: t, + value: e, + strValue: "fn", + mapped: o.fn, + bypass: r + }; + var f, h; + if (!(!l || a || e.length < 7 || e[1] !== "a")) { + if (e.length >= 7 && e[0] === "d" && (f = new RegExp(o.data.regex).exec(e))) { + if (r) + return !1; + var c = o.data; + return { + name: t, + value: f, + strValue: "" + e, + mapped: c, + field: f[1], + bypass: r + }; + } else if (e.length >= 10 && e[0] === "m" && (h = new RegExp(o.mapData.regex).exec(e))) { + if (r || u.multiple) + return !1; + var v = o.mapData; + if (!(u.color || u.number)) + return !1; + var d = this.parse(t, h[4]); + if (!d || d.mapped) + return !1; + var g = this.parse(t, h[5]); + if (!g || g.mapped) + return !1; + if (d.pfValue === g.pfValue || d.strValue === g.strValue) + return Ne("`" + t + ": " + e + "` is not a valid mapper because the output range is zero; converting to `" + t + ": " + d.strValue + "`"), this.parse(t, d.strValue); + if (u.color) { + var p = d.value, y = g.value, E = p[0] === y[0] && p[1] === y[1] && p[2] === y[2] && // optional alpha + (p[3] === y[3] || (p[3] == null || p[3] === 1) && (y[3] == null || y[3] === 1)); + if (E) + return !1; + } + return { + name: t, + value: h, + strValue: "" + e, + mapped: v, + field: h[1], + fieldMin: parseFloat(h[2]), + // min & max are numeric + fieldMax: parseFloat(h[3]), + valueMin: d.value, + valueMax: g.value, + bypass: r + }; + } + } + if (u.multiple && a !== "multiple") { + var m; + if (l ? m = e.split(/\s+/) : Me(e) ? m = e : m = [e], u.evenMultiple && m.length % 2 !== 0) + return null; + for (var T = [], C = [], S = [], b = "", x = !1, w = 0; w < m.length; w++) { + var D = n.parse(t, m[w], r, "multiple"); + x = x || ve(D.value), T.push(D.value), S.push(D.pfValue != null ? D.pfValue : D.value), C.push(D.units), b += (w > 0 ? " " : "") + D.strValue; + } + return u.validate && !u.validate(T, C) ? null : u.singleEnum && x ? T.length === 1 && ve(T[0]) ? { + name: t, + value: T[0], + strValue: T[0], + bypass: r + } : null : { + name: t, + value: T, + pfValue: S, + strValue: b, + bypass: r, + units: C + }; + } + var A = function() { + for (var j = 0; j < u.enums.length; j++) { + var Q = u.enums[j]; + if (Q === e) + return { + name: t, + value: e, + strValue: "" + e, + bypass: r + }; + } + return null; + }; + if (u.number) { + var L, I = "px"; + if (u.units && (L = u.units), u.implicitUnits && (I = u.implicitUnits), !u.unitless) + if (l) { + var O = "px|em" + (u.allowPercent ? "|\\%" : ""); + L && (O = L); + var P = e.match("^(" + _e + ")(" + O + ")?$"); + P && (e = P[1], L = P[2] || I); + } else + (!L || u.implicitUnits) && (L = I); + if (e = parseFloat(e), isNaN(e) && u.enums === void 0) + return null; + if (isNaN(e) && u.enums !== void 0) + return e = s, A(); + if (u.integer && !Uc(e) || u.min !== void 0 && (e < u.min || u.strictMin && e === u.min) || u.max !== void 0 && (e > u.max || u.strictMax && e === u.max)) + return null; + var R = { + name: t, + value: e, + strValue: "" + e + (L || ""), + units: L, + bypass: r + }; + return u.unitless || L !== "px" && L !== "em" ? R.pfValue = e : R.pfValue = L === "px" || !L ? e : this.getEmSizeInPixels() * e, (L === "ms" || L === "s") && (R.pfValue = L === "ms" ? e : 1e3 * e), (L === "deg" || L === "rad") && (R.pfValue = L === "rad" ? e : Gd(e)), L === "%" && (R.pfValue = e / 100), R; + } else if (u.propList) { + var M = [], k = "" + e; + if (k !== "none") { + for (var B = k.split(/\s*,\s*|\s+/), G = 0; G < B.length; G++) { + var F = B[G].trim(); + n.properties[F] ? M.push(F) : Ne("`" + F + "` is not a valid property name"); + } + if (M.length === 0) + return null; + } + return { + name: t, + value: M, + strValue: M.length === 0 ? "none" : M.join(" "), + bypass: r + }; + } else if (u.color) { + var $ = sd(e); + return $ ? { + name: t, + value: $, + pfValue: $, + strValue: "rgb(" + $[0] + "," + $[1] + "," + $[2] + ")", + // n.b. no spaces b/c of multiple support + bypass: r + } : null; + } else if (u.regex || u.regexes) { + if (u.enums) { + var U = A(); + if (U) + return U; + } + for (var _ = u.regexes ? u.regexes : [u.regex], Y = 0; Y < _.length; Y++) { + var W = new RegExp(_[Y]), z = W.exec(e); + if (z) + return { + name: t, + value: u.singleRegexMatchValue ? z[1] : z, + strValue: "" + e, + bypass: r + }; + } + return null; + } else + return u.string ? { + name: t, + value: "" + e, + strValue: "" + e, + bypass: r + } : u.enums ? A() : null; +}; +var et = function t(e) { + if (!(this instanceof t)) + return new t(e); + if (!ni(e)) { + Ge("A style must have a core reference"); + return; + } + this._private = { + cy: e, + coreStyle: {} + }, this.length = 0, this.resetToDefault(); +}, rt = et.prototype; +rt.instanceString = function() { + return "style"; +}; +rt.clear = function() { + for (var t = this._private, e = t.cy, r = e.elements(), a = 0; a < this.length; a++) + this[a] = void 0; + return this.length = 0, t.contextStyles = {}, t.propDiffs = {}, this.cleanElements(r, !0), r.forEach(function(n) { + var i = n[0]._private; + i.styleDirty = !0, i.appliedInitStyle = !1; + }), this; +}; +rt.resetToDefault = function() { + return this.clear(), this.addDefaultStylesheet(), this; +}; +rt.core = function(t) { + return this._private.coreStyle[t] || this.getDefaultProperty(t); +}; +rt.selector = function(t) { + var e = t === "core" ? null : new Wt(t), r = this.length++; + return this[r] = { + selector: e, + properties: [], + mappedProperties: [], + index: r + }, this; +}; +rt.css = function() { + var t = this, e = arguments; + if (e.length === 1) + for (var r = e[0], a = 0; a < t.properties.length; a++) { + var n = t.properties[a], i = r[n.name]; + i === void 0 && (i = r[ln(n.name)]), i !== void 0 && this.cssRule(n.name, i); + } + else + e.length === 2 && this.cssRule(e[0], e[1]); + return this; +}; +rt.style = rt.css; +rt.cssRule = function(t, e) { + var r = this.parse(t, e); + if (r) { + var a = this.length - 1; + this[a].properties.push(r), this[a].properties[r.name] = r, r.name.match(/pie-(\d+)-background-size/) && r.value && (this._private.hasPie = !0), r.mapped && this[a].mappedProperties.push(r); + var n = !this[a].selector; + n && (this._private.coreStyle[r.name] = r); + } + return this; +}; +rt.append = function(t) { + return so(t) ? t.appendToStyle(this) : Me(t) ? this.appendFromJson(t) : ve(t) && this.appendFromString(t), this; +}; +et.fromJson = function(t, e) { + var r = new et(t); + return r.fromJson(e), r; +}; +et.fromString = function(t, e) { + return new et(t).fromString(e); +}; +[at, pa, pi, At, pn, yi, qe, yn].forEach(function(t) { + de(rt, t); +}); +et.types = rt.types; +et.properties = rt.properties; +et.propertyGroups = rt.propertyGroups; +et.propertyGroupNames = rt.propertyGroupNames; +et.propertyGroupKeys = rt.propertyGroupKeys; +var Qp = { + style: function(e) { + if (e) { + var r = this.setStyle(e); + r.update(); + } + return this._private.style; + }, + setStyle: function(e) { + var r = this._private; + return so(e) ? r.style = e.generateStyle(this) : Me(e) ? r.style = et.fromJson(this, e) : ve(e) ? r.style = et.fromString(this, e) : r.style = et(this), r.style; + }, + // e.g. cy.data() changed => recalc ele mappers + updateStyle: function() { + this.mutableElements().updateStyle(); + } +}, Jp = "single", sr = { + autolock: function(e) { + if (e !== void 0) + this._private.autolock = !!e; + else + return this._private.autolock; + return this; + }, + autoungrabify: function(e) { + if (e !== void 0) + this._private.autoungrabify = !!e; + else + return this._private.autoungrabify; + return this; + }, + autounselectify: function(e) { + if (e !== void 0) + this._private.autounselectify = !!e; + else + return this._private.autounselectify; + return this; + }, + selectionType: function(e) { + var r = this._private; + if (r.selectionType == null && (r.selectionType = Jp), e !== void 0) + (e === "additive" || e === "single") && (r.selectionType = e); + else + return r.selectionType; + return this; + }, + panningEnabled: function(e) { + if (e !== void 0) + this._private.panningEnabled = !!e; + else + return this._private.panningEnabled; + return this; + }, + userPanningEnabled: function(e) { + if (e !== void 0) + this._private.userPanningEnabled = !!e; + else + return this._private.userPanningEnabled; + return this; + }, + zoomingEnabled: function(e) { + if (e !== void 0) + this._private.zoomingEnabled = !!e; + else + return this._private.zoomingEnabled; + return this; + }, + userZoomingEnabled: function(e) { + if (e !== void 0) + this._private.userZoomingEnabled = !!e; + else + return this._private.userZoomingEnabled; + return this; + }, + boxSelectionEnabled: function(e) { + if (e !== void 0) + this._private.boxSelectionEnabled = !!e; + else + return this._private.boxSelectionEnabled; + return this; + }, + pan: function() { + var e = arguments, r = this._private.pan, a, n, i, s, o; + switch (e.length) { + case 0: + return r; + case 1: + if (ve(e[0])) + return a = e[0], r[a]; + if (De(e[0])) { + if (!this._private.panningEnabled) + return this; + i = e[0], s = i.x, o = i.y, ae(s) && (r.x = s), ae(o) && (r.y = o), this.emit("pan viewport"); + } + break; + case 2: + if (!this._private.panningEnabled) + return this; + a = e[0], n = e[1], (a === "x" || a === "y") && ae(n) && (r[a] = n), this.emit("pan viewport"); + break; + } + return this.notify("viewport"), this; + }, + panBy: function(e, r) { + var a = arguments, n = this._private.pan, i, s, o, l, u; + if (!this._private.panningEnabled) + return this; + switch (a.length) { + case 1: + De(e) && (o = a[0], l = o.x, u = o.y, ae(l) && (n.x += l), ae(u) && (n.y += u), this.emit("pan viewport")); + break; + case 2: + i = e, s = r, (i === "x" || i === "y") && ae(s) && (n[i] += s), this.emit("pan viewport"); + break; + } + return this.notify("viewport"), this; + }, + fit: function(e, r) { + var a = this.getFitViewport(e, r); + if (a) { + var n = this._private; + n.zoom = a.zoom, n.pan = a.pan, this.emit("pan zoom viewport"), this.notify("viewport"); + } + return this; + }, + getFitViewport: function(e, r) { + if (ae(e) && r === void 0 && (r = e, e = void 0), !(!this._private.panningEnabled || !this._private.zoomingEnabled)) { + var a; + if (ve(e)) { + var n = e; + e = this.$(n); + } else if (Xc(e)) { + var i = e; + a = { + x1: i.x1, + y1: i.y1, + x2: i.x2, + y2: i.y2 + }, a.w = a.x2 - a.x1, a.h = a.y2 - a.y1; + } else + ht(e) || (e = this.mutableElements()); + if (!(ht(e) && e.empty())) { + a = a || e.boundingBox(); + var s = this.width(), o = this.height(), l; + if (r = ae(r) ? r : 0, !isNaN(s) && !isNaN(o) && s > 0 && o > 0 && !isNaN(a.w) && !isNaN(a.h) && a.w > 0 && a.h > 0) { + l = Math.min((s - 2 * r) / a.w, (o - 2 * r) / a.h), l = l > this._private.maxZoom ? this._private.maxZoom : l, l = l < this._private.minZoom ? this._private.minZoom : l; + var u = { + // now pan to middle + x: (s - l * (a.x1 + a.x2)) / 2, + y: (o - l * (a.y1 + a.y2)) / 2 + }; + return { + zoom: l, + pan: u + }; + } + } + } + }, + zoomRange: function(e, r) { + var a = this._private; + if (r == null) { + var n = e; + e = n.min, r = n.max; + } + return ae(e) && ae(r) && e <= r ? (a.minZoom = e, a.maxZoom = r) : ae(e) && r === void 0 && e <= a.maxZoom ? a.minZoom = e : ae(r) && e === void 0 && r >= a.minZoom && (a.maxZoom = r), this; + }, + minZoom: function(e) { + return e === void 0 ? this._private.minZoom : this.zoomRange({ + min: e + }); + }, + maxZoom: function(e) { + return e === void 0 ? this._private.maxZoom : this.zoomRange({ + max: e + }); + }, + getZoomedViewport: function(e) { + var r = this._private, a = r.pan, n = r.zoom, i, s, o = !1; + if (r.zoomingEnabled || (o = !0), ae(e) ? s = e : De(e) && (s = e.level, e.position != null ? i = fn(e.position, n, a) : e.renderedPosition != null && (i = e.renderedPosition), i != null && !r.panningEnabled && (o = !0)), s = s > r.maxZoom ? r.maxZoom : s, s = s < r.minZoom ? r.minZoom : s, o || !ae(s) || s === n || i != null && (!ae(i.x) || !ae(i.y))) + return null; + if (i != null) { + var l = a, u = n, f = s, h = { + x: -f / u * (i.x - l.x) + i.x, + y: -f / u * (i.y - l.y) + i.y + }; + return { + zoomed: !0, + panned: !0, + zoom: f, + pan: h + }; + } else + return { + zoomed: !0, + panned: !1, + zoom: s, + pan: a + }; + }, + zoom: function(e) { + if (e === void 0) + return this._private.zoom; + var r = this.getZoomedViewport(e), a = this._private; + return r == null || !r.zoomed ? this : (a.zoom = r.zoom, r.panned && (a.pan.x = r.pan.x, a.pan.y = r.pan.y), this.emit("zoom" + (r.panned ? " pan" : "") + " viewport"), this.notify("viewport"), this); + }, + viewport: function(e) { + var r = this._private, a = !0, n = !0, i = [], s = !1, o = !1; + if (!e) + return this; + if (ae(e.zoom) || (a = !1), De(e.pan) || (n = !1), !a && !n) + return this; + if (a) { + var l = e.zoom; + l < r.minZoom || l > r.maxZoom || !r.zoomingEnabled ? s = !0 : (r.zoom = l, i.push("zoom")); + } + if (n && (!s || !e.cancelOnFailedZoom) && r.panningEnabled) { + var u = e.pan; + ae(u.x) && (r.pan.x = u.x, o = !1), ae(u.y) && (r.pan.y = u.y, o = !1), o || i.push("pan"); + } + return i.length > 0 && (i.push("viewport"), this.emit(i.join(" ")), this.notify("viewport")), this; + }, + center: function(e) { + var r = this.getCenterPan(e); + return r && (this._private.pan = r, this.emit("pan viewport"), this.notify("viewport")), this; + }, + getCenterPan: function(e, r) { + if (this._private.panningEnabled) { + if (ve(e)) { + var a = e; + e = this.mutableElements().filter(a); + } else + ht(e) || (e = this.mutableElements()); + if (e.length !== 0) { + var n = e.boundingBox(), i = this.width(), s = this.height(); + r = r === void 0 ? this._private.zoom : r; + var o = { + // middle + x: (i - r * (n.x1 + n.x2)) / 2, + y: (s - r * (n.y1 + n.y2)) / 2 + }; + return o; + } + } + }, + reset: function() { + return !this._private.panningEnabled || !this._private.zoomingEnabled ? this : (this.viewport({ + pan: { + x: 0, + y: 0 + }, + zoom: 1 + }), this); + }, + invalidateSize: function() { + this._private.sizeCache = null; + }, + size: function() { + var e = this._private, r = e.container, a = this; + return e.sizeCache = e.sizeCache || (r ? function() { + var n = a.window().getComputedStyle(r), i = function(o) { + return parseFloat(n.getPropertyValue(o)); + }; + return { + width: r.clientWidth - i("padding-left") - i("padding-right"), + height: r.clientHeight - i("padding-top") - i("padding-bottom") + }; + }() : { + // fallback if no container (not 0 b/c can be used for dividing etc) + width: 1, + height: 1 + }); + }, + width: function() { + return this.size().width; + }, + height: function() { + return this.size().height; + }, + extent: function() { + var e = this._private.pan, r = this._private.zoom, a = this.renderedExtent(), n = { + x1: (a.x1 - e.x) / r, + x2: (a.x2 - e.x) / r, + y1: (a.y1 - e.y) / r, + y2: (a.y2 - e.y) / r + }; + return n.w = n.x2 - n.x1, n.h = n.y2 - n.y1, n; + }, + renderedExtent: function() { + var e = this.width(), r = this.height(); + return { + x1: 0, + y1: 0, + x2: e, + y2: r, + w: e, + h: r + }; + }, + multiClickDebounceTime: function(e) { + if (e) + this._private.multiClickDebounceTime = e; + else + return this._private.multiClickDebounceTime; + return this; + } +}; +sr.centre = sr.center; +sr.autolockNodes = sr.autolock; +sr.autoungrabifyNodes = sr.autoungrabify; +var sa = { + data: Oe.data({ + field: "data", + bindingEvent: "data", + allowBinding: !0, + allowSetting: !0, + settingEvent: "data", + settingTriggersEvent: !0, + triggerFnName: "trigger", + allowGetting: !0, + updateStyle: !0 + }), + removeData: Oe.removeData({ + field: "data", + event: "data", + triggerFnName: "trigger", + triggerEvent: !0, + updateStyle: !0 + }), + scratch: Oe.data({ + field: "scratch", + bindingEvent: "scratch", + allowBinding: !0, + allowSetting: !0, + settingEvent: "scratch", + settingTriggersEvent: !0, + triggerFnName: "trigger", + allowGetting: !0, + updateStyle: !0 + }), + removeScratch: Oe.removeData({ + field: "scratch", + event: "scratch", + triggerFnName: "trigger", + triggerEvent: !0, + updateStyle: !0 + }) +}; +sa.attr = sa.data; +sa.removeAttr = sa.removeData; +var oa = function(e) { + var r = this; + e = de({}, e); + var a = e.container; + a && !Ha(a) && Ha(a[0]) && (a = a[0]); + var n = a ? a._cyreg : null; + n = n || {}, n && n.cy && (n.cy.destroy(), n = {}); + var i = n.readies = n.readies || []; + a && (a._cyreg = n), n.cy = r; + var s = $e !== void 0 && a !== void 0 && !e.headless, o = e; + o.layout = de({ + name: s ? "grid" : "null" + }, o.layout), o.renderer = de({ + name: s ? "canvas" : "null" + }, o.renderer); + var l = function(d, g, p) { + return g !== void 0 ? g : p !== void 0 ? p : d; + }, u = this._private = { + container: a, + // html dom ele container + ready: !1, + // whether ready has been triggered + options: o, + // cached options + elements: new Ze(this), + // elements in the graph + listeners: [], + // list of listeners + aniEles: new Ze(this), + // elements being animated + data: o.data || {}, + // data for the core + scratch: {}, + // scratch object for core + layout: null, + renderer: null, + destroyed: !1, + // whether destroy was called + notificationsEnabled: !0, + // whether notifications are sent to the renderer + minZoom: 1e-50, + maxZoom: 1e50, + zoomingEnabled: l(!0, o.zoomingEnabled), + userZoomingEnabled: l(!0, o.userZoomingEnabled), + panningEnabled: l(!0, o.panningEnabled), + userPanningEnabled: l(!0, o.userPanningEnabled), + boxSelectionEnabled: l(!0, o.boxSelectionEnabled), + autolock: l(!1, o.autolock, o.autolockNodes), + autoungrabify: l(!1, o.autoungrabify, o.autoungrabifyNodes), + autounselectify: l(!1, o.autounselectify), + styleEnabled: o.styleEnabled === void 0 ? s : o.styleEnabled, + zoom: ae(o.zoom) ? o.zoom : 1, + pan: { + x: De(o.pan) && ae(o.pan.x) ? o.pan.x : 0, + y: De(o.pan) && ae(o.pan.y) ? o.pan.y : 0 + }, + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + hasCompoundNodes: !1, + multiClickDebounceTime: l(250, o.multiClickDebounceTime) + }; + this.createEmitter(), this.selectionType(o.selectionType), this.zoomRange({ + min: o.minZoom, + max: o.maxZoom + }); + var f = function(d, g) { + var p = d.some(Wc); + if (p) + return Rr.all(d).then(g); + g(d); + }; + u.styleEnabled && r.setStyle([]); + var h = de({}, o, o.renderer); + r.initRenderer(h); + var c = function(d, g, p) { + r.notifications(!1); + var y = r.mutableElements(); + y.length > 0 && y.remove(), d != null && (De(d) || Me(d)) && r.add(d), r.one("layoutready", function(m) { + r.notifications(!0), r.emit(m), r.one("load", g), r.emitAndNotify("load"); + }).one("layoutstop", function() { + r.one("done", p), r.emit("done"); + }); + var E = de({}, r._private.options.layout); + E.eles = r.elements(), r.layout(E).run(); + }; + f([o.style, o.elements], function(v) { + var d = v[0], g = v[1]; + u.styleEnabled && r.style().append(d), c(g, function() { + r.startAnimationLoop(), u.ready = !0, Be(o.ready) && r.on("ready", o.ready); + for (var p = 0; p < i.length; p++) { + var y = i[p]; + r.on("ready", y); + } + n && (n.readies = []), r.emit("ready"); + }, o.done); + }); +}, Qa = oa.prototype; +de(Qa, { + instanceString: function() { + return "core"; + }, + isReady: function() { + return this._private.ready; + }, + destroyed: function() { + return this._private.destroyed; + }, + ready: function(e) { + return this.isReady() ? this.emitter().emit("ready", [], e) : this.on("ready", e), this; + }, + destroy: function() { + var e = this; + if (!e.destroyed()) + return e.stopAnimationLoop(), e.destroyRenderer(), this.emit("destroy"), e._private.destroyed = !0, e; + }, + hasElementWithId: function(e) { + return this._private.elements.hasElementWithId(e); + }, + getElementById: function(e) { + return this._private.elements.getElementById(e); + }, + hasCompoundNodes: function() { + return this._private.hasCompoundNodes; + }, + headless: function() { + return this._private.renderer.isHeadless(); + }, + styleEnabled: function() { + return this._private.styleEnabled; + }, + addToPool: function(e) { + return this._private.elements.merge(e), this; + }, + removeFromPool: function(e) { + return this._private.elements.unmerge(e), this; + }, + container: function() { + return this._private.container || null; + }, + window: function() { + var e = this._private.container; + if (e == null) + return $e; + var r = this._private.container.ownerDocument; + return r === void 0 || r == null ? $e : r.defaultView || $e; + }, + mount: function(e) { + if (e != null) { + var r = this, a = r._private, n = a.options; + return !Ha(e) && Ha(e[0]) && (e = e[0]), r.stopAnimationLoop(), r.destroyRenderer(), a.container = e, a.styleEnabled = !0, r.invalidateSize(), r.initRenderer(de({}, n, n.renderer, { + // allow custom renderer name to be re-used, otherwise use canvas + name: n.renderer.name === "null" ? "canvas" : n.renderer.name + })), r.startAnimationLoop(), r.style(n.style), r.emit("mount"), r; + } + }, + unmount: function() { + var e = this; + return e.stopAnimationLoop(), e.destroyRenderer(), e.initRenderer({ + name: "null" + }), e.emit("unmount"), e; + }, + options: function() { + return St(this._private.options); + }, + json: function(e) { + var r = this, a = r._private, n = r.mutableElements(), i = function(T) { + return r.getElementById(T.id()); + }; + if (De(e)) { + if (r.startBatch(), e.elements) { + var s = {}, o = function(T, C) { + for (var S = [], b = [], x = 0; x < T.length; x++) { + var w = T[x]; + if (!w.data.id) { + Ne("cy.json() cannot handle elements without an ID attribute"); + continue; + } + var D = "" + w.data.id, A = r.getElementById(D); + s[D] = !0, A.length !== 0 ? b.push({ + ele: A, + json: w + }) : (C && (w.group = C), S.push(w)); + } + r.add(S); + for (var L = 0; L < b.length; L++) { + var I = b[L], O = I.ele, P = I.json; + O.json(P); + } + }; + if (Me(e.elements)) + o(e.elements); + else + for (var l = ["nodes", "edges"], u = 0; u < l.length; u++) { + var f = l[u], h = e.elements[f]; + Me(h) && o(h, f); + } + var c = r.collection(); + n.filter(function(m) { + return !s[m.id()]; + }).forEach(function(m) { + m.isParent() ? c.merge(m) : m.remove(); + }), c.forEach(function(m) { + return m.children().move({ + parent: null + }); + }), c.forEach(function(m) { + return i(m).remove(); + }); + } + e.style && r.style(e.style), e.zoom != null && e.zoom !== a.zoom && r.zoom(e.zoom), e.pan && (e.pan.x !== a.pan.x || e.pan.y !== a.pan.y) && r.pan(e.pan), e.data && r.data(e.data); + for (var v = ["minZoom", "maxZoom", "zoomingEnabled", "userZoomingEnabled", "panningEnabled", "userPanningEnabled", "boxSelectionEnabled", "autolock", "autoungrabify", "autounselectify", "multiClickDebounceTime"], d = 0; d < v.length; d++) { + var g = v[d]; + e[g] != null && r[g](e[g]); + } + return r.endBatch(), this; + } else { + var p = !!e, y = {}; + p ? y.elements = this.elements().map(function(m) { + return m.json(); + }) : (y.elements = {}, n.forEach(function(m) { + var T = m.group(); + y.elements[T] || (y.elements[T] = []), y.elements[T].push(m.json()); + })), this._private.styleEnabled && (y.style = r.style().json()), y.data = St(r.data()); + var E = a.options; + return y.zoomingEnabled = a.zoomingEnabled, y.userZoomingEnabled = a.userZoomingEnabled, y.zoom = a.zoom, y.minZoom = a.minZoom, y.maxZoom = a.maxZoom, y.panningEnabled = a.panningEnabled, y.userPanningEnabled = a.userPanningEnabled, y.pan = St(a.pan), y.boxSelectionEnabled = a.boxSelectionEnabled, y.renderer = St(E.renderer), y.hideEdgesOnViewport = E.hideEdgesOnViewport, y.textureOnViewport = E.textureOnViewport, y.wheelSensitivity = E.wheelSensitivity, y.motionBlur = E.motionBlur, y.multiClickDebounceTime = E.multiClickDebounceTime, y; + } + } +}); +Qa.$id = Qa.getElementById; +[Vp, Xp, jo, Hn, za, qp, Yn, $a, Qp, sr, sa].forEach(function(t) { + de(Qa, t); +}); +var jp = { + fit: !0, + // whether to fit the viewport to the graph + directed: !1, + // whether the tree is directed downwards (or edges can point in any direction if false) + padding: 30, + // padding on fit + circle: !1, + // put depths in concentric circles if true, put depths top down if false + grid: !1, + // whether to create an even grid into which the DAG is placed (circle:false only) + spacingFactor: 1.75, + // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: !0, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: !1, + // Excludes the label when calculating node bounding boxes for the layout algorithm + roots: void 0, + // the roots of the trees + depthSort: void 0, + // a sorting function to order nodes at equal depth. e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: !1, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled, + animateFilter: function(e, r) { + return !0; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: function(e, r) { + return r; + } + // transform a given node position. Useful for changing flow direction in discrete layouts +}, ey = { + maximal: !1, + // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only); setting acyclic to true sets maximal to true also + acyclic: !1 + // whether the tree is acyclic and thus a node could be shifted (due to the maximal option) multiple times without causing an infinite loop; setting to true sets maximal to true also; if you are uncertain whether a tree is acyclic, set to false to avoid potential infinite loops +}, yr = function(e) { + return e.scratch("breadthfirst"); +}, As = function(e, r) { + return e.scratch("breadthfirst", r); +}; +function el(t) { + this.options = de({}, jp, ey, t); +} +el.prototype.run = function() { + var t = this.options, e = t, r = t.cy, a = e.eles, n = a.nodes().filter(function(te) { + return !te.isParent(); + }), i = a, s = e.directed, o = e.acyclic || e.maximal || e.maximalAdjustments > 0, l = ft(e.boundingBox ? e.boundingBox : { + x1: 0, + y1: 0, + w: r.width(), + h: r.height() + }), u; + if (ht(e.roots)) + u = e.roots; + else if (Me(e.roots)) { + for (var f = [], h = 0; h < e.roots.length; h++) { + var c = e.roots[h], v = r.getElementById(c); + f.push(v); + } + u = r.collection(f); + } else if (ve(e.roots)) + u = r.$(e.roots); + else if (s) + u = n.roots(); + else { + var d = a.components(); + u = r.collection(); + for (var g = function(re) { + var ue = d[re], le = ue.maxDegree(!1), se = ue.filter(function(fe) { + return fe.degree(!1) === le; + }); + u = u.add(se); + }, p = 0; p < d.length; p++) + g(p); + } + var y = [], E = {}, m = function(re, ue) { + y[ue] == null && (y[ue] = []); + var le = y[ue].length; + y[ue].push(re), As(re, { + index: le, + depth: ue + }); + }, T = function(re, ue) { + var le = yr(re), se = le.depth, fe = le.index; + y[se][fe] = null, m(re, ue); + }; + i.bfs({ + roots: u, + directed: e.directed, + visit: function(re, ue, le, se, fe) { + var xe = re[0], Ee = xe.id(); + m(xe, fe), E[Ee] = !0; + } + }); + for (var C = [], S = 0; S < n.length; S++) { + var b = n[S]; + E[b.id()] || C.push(b); + } + var x = function(re) { + for (var ue = y[re], le = 0; le < ue.length; le++) { + var se = ue[le]; + if (se == null) { + ue.splice(le, 1), le--; + continue; + } + As(se, { + depth: re, + index: le + }); + } + }, w = function() { + for (var re = 0; re < y.length; re++) + x(re); + }, D = function(re, ue) { + for (var le = yr(re), se = re.incomers().filter(function(N) { + return N.isNode() && a.has(N); + }), fe = -1, xe = re.id(), Ee = 0; Ee < se.length; Ee++) { + var ge = se[Ee], we = yr(ge); + fe = Math.max(fe, we.depth); + } + if (le.depth <= fe) { + if (!e.acyclic && ue[xe]) + return null; + var H = fe + 1; + return T(re, H), ue[xe] = H, !0; + } + return !1; + }; + if (s && o) { + var A = [], L = {}, I = function(re) { + return A.push(re); + }, O = function() { + return A.shift(); + }; + for (n.forEach(function(te) { + return A.push(te); + }); A.length > 0; ) { + var P = O(), R = D(P, L); + if (R) + P.outgoers().filter(function(te) { + return te.isNode() && a.has(te); + }).forEach(I); + else if (R === null) { + Ne("Detected double maximal shift for node `" + P.id() + "`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs."); + break; + } + } + } + w(); + var M = 0; + if (e.avoidOverlap) + for (var k = 0; k < n.length; k++) { + var B = n[k], G = B.layoutDimensions(e), F = G.w, $ = G.h; + M = Math.max(M, F, $); + } + var U = {}, _ = function(re) { + if (U[re.id()]) + return U[re.id()]; + for (var ue = yr(re).depth, le = re.neighborhood(), se = 0, fe = 0, xe = 0; xe < le.length; xe++) { + var Ee = le[xe]; + if (!(Ee.isEdge() || Ee.isParent() || !n.has(Ee))) { + var ge = yr(Ee); + if (ge != null) { + var we = ge.index, H = ge.depth; + if (!(we == null || H == null)) { + var N = y[H].length; + H < ue && (se += we / N, fe++); + } + } + } + } + return fe = Math.max(1, fe), se = se / fe, fe === 0 && (se = 0), U[re.id()] = se, se; + }, Y = function(re, ue) { + var le = _(re), se = _(ue), fe = le - se; + return fe === 0 ? lo(re.id(), ue.id()) : fe; + }; + e.depthSort !== void 0 && (Y = e.depthSort); + for (var W = 0; W < y.length; W++) + y[W].sort(Y), x(W); + for (var z = [], K = 0; K < C.length; K++) + z.push(C[K]); + y.unshift(z), w(); + for (var j = 0, Q = 0; Q < y.length; Q++) + j = Math.max(y[Q].length, j); + var ee = { + x: l.x1 + l.w / 2, + y: l.x1 + l.h / 2 + }, ne = y.reduce(function(te, re) { + return Math.max(te, re.length); + }, 0), ce = function(re) { + var ue = yr(re), le = ue.depth, se = ue.index, fe = y[le].length, xe = Math.max(l.w / ((e.grid ? ne : fe) + 1), M), Ee = Math.max(l.h / (y.length + 1), M), ge = Math.min(l.w / 2 / y.length, l.h / 2 / y.length); + if (ge = Math.max(ge, M), e.circle) { + var H = ge * le + ge - (y.length > 0 && y[0].length <= 3 ? ge / 2 : 0), N = 2 * Math.PI / y[le].length * se; + return le === 0 && y[0].length === 1 && (H = 1), { + x: ee.x + H * Math.cos(N), + y: ee.y + H * Math.sin(N) + }; + } else { + var we = { + x: ee.x + (se + 1 - (fe + 1) / 2) * xe, + y: (le + 1) * Ee + }; + return we; + } + }; + return a.nodes().layoutPositions(this, e, ce), this; +}; +var ty = { + fit: !0, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: !0, + // prevents node overlap, may overflow boundingBox and radius if not enough space + nodeDimensionsIncludeLabels: !1, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + radius: void 0, + // the radius of the circle + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: void 0, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: !0, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + sort: void 0, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: !1, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: function(e, r) { + return !0; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: function(e, r) { + return r; + } + // transform a given node position. Useful for changing flow direction in discrete layouts +}; +function tl(t) { + this.options = de({}, ty, t); +} +tl.prototype.run = function() { + var t = this.options, e = t, r = t.cy, a = e.eles, n = e.counterclockwise !== void 0 ? !e.counterclockwise : e.clockwise, i = a.nodes().not(":parent"); + e.sort && (i = i.sort(e.sort)); + for (var s = ft(e.boundingBox ? e.boundingBox : { + x1: 0, + y1: 0, + w: r.width(), + h: r.height() + }), o = { + x: s.x1 + s.w / 2, + y: s.y1 + s.h / 2 + }, l = e.sweep === void 0 ? 2 * Math.PI - 2 * Math.PI / i.length : e.sweep, u = l / Math.max(1, i.length - 1), f, h = 0, c = 0; c < i.length; c++) { + var v = i[c], d = v.layoutDimensions(e), g = d.w, p = d.h; + h = Math.max(h, g, p); + } + if (ae(e.radius) ? f = e.radius : i.length <= 1 ? f = 0 : f = Math.min(s.h, s.w) / 2 - h, i.length > 1 && e.avoidOverlap) { + h *= 1.75; + var y = Math.cos(u) - Math.cos(0), E = Math.sin(u) - Math.sin(0), m = Math.sqrt(h * h / (y * y + E * E)); + f = Math.max(m, f); + } + var T = function(S, b) { + var x = e.startAngle + b * u * (n ? 1 : -1), w = f * Math.cos(x), D = f * Math.sin(x), A = { + x: o.x + w, + y: o.y + D + }; + return A; + }; + return a.nodes().layoutPositions(this, e, T), this; +}; +var ry = { + fit: !0, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: void 0, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: !0, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + equidistant: !1, + // whether levels have an equal radial distance betwen them, may cause bounding box overflow + minNodeSpacing: 10, + // min spacing between outside of nodes (used for radius adjustment) + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: !0, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: !1, + // Excludes the label when calculating node bounding boxes for the layout algorithm + height: void 0, + // height of layout area (overrides container height) + width: void 0, + // width of layout area (overrides container width) + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + concentric: function(e) { + return e.degree(); + }, + levelWidth: function(e) { + return e.maxDegree() / 4; + }, + animate: !1, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: function(e, r) { + return !0; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: function(e, r) { + return r; + } + // transform a given node position. Useful for changing flow direction in discrete layouts +}; +function rl(t) { + this.options = de({}, ry, t); +} +rl.prototype.run = function() { + for (var t = this.options, e = t, r = e.counterclockwise !== void 0 ? !e.counterclockwise : e.clockwise, a = t.cy, n = e.eles, i = n.nodes().not(":parent"), s = ft(e.boundingBox ? e.boundingBox : { + x1: 0, + y1: 0, + w: a.width(), + h: a.height() + }), o = { + x: s.x1 + s.w / 2, + y: s.y1 + s.h / 2 + }, l = [], u = 0, f = 0; f < i.length; f++) { + var h = i[f], c = void 0; + c = e.concentric(h), l.push({ + value: c, + node: h + }), h._private.scratch.concentric = c; + } + i.updateStyle(); + for (var v = 0; v < i.length; v++) { + var d = i[v], g = d.layoutDimensions(e); + u = Math.max(u, g.w, g.h); + } + l.sort(function(te, re) { + return re.value - te.value; + }); + for (var p = e.levelWidth(i), y = [[]], E = y[0], m = 0; m < l.length; m++) { + var T = l[m]; + if (E.length > 0) { + var C = Math.abs(E[0].value - T.value); + C >= p && (E = [], y.push(E)); + } + E.push(T); + } + var S = u + e.minNodeSpacing; + if (!e.avoidOverlap) { + var b = y.length > 0 && y[0].length > 1, x = Math.min(s.w, s.h) / 2 - S, w = x / (y.length + b ? 1 : 0); + S = Math.min(S, w); + } + for (var D = 0, A = 0; A < y.length; A++) { + var L = y[A], I = e.sweep === void 0 ? 2 * Math.PI - 2 * Math.PI / L.length : e.sweep, O = L.dTheta = I / Math.max(1, L.length - 1); + if (L.length > 1 && e.avoidOverlap) { + var P = Math.cos(O) - Math.cos(0), R = Math.sin(O) - Math.sin(0), M = Math.sqrt(S * S / (P * P + R * R)); + D = Math.max(M, D); + } + L.r = D, D += S; + } + if (e.equidistant) { + for (var k = 0, B = 0, G = 0; G < y.length; G++) { + var F = y[G], $ = F.r - B; + k = Math.max(k, $); + } + B = 0; + for (var U = 0; U < y.length; U++) { + var _ = y[U]; + U === 0 && (B = _.r), _.r = B, B += k; + } + } + for (var Y = {}, W = 0; W < y.length; W++) + for (var z = y[W], K = z.dTheta, j = z.r, Q = 0; Q < z.length; Q++) { + var ee = z[Q], ne = e.startAngle + (r ? 1 : -1) * K * Q, ce = { + x: o.x + j * Math.cos(ne), + y: o.y + j * Math.sin(ne) + }; + Y[ee.node.id()] = ce; + } + return n.nodes().layoutPositions(this, e, function(te) { + var re = te.id(); + return Y[re]; + }), this; +}; +var Mn, ay = { + // Called on `layoutready` + ready: function() { + }, + // Called on `layoutstop` + stop: function() { + }, + // Whether to animate while running the layout + // true : Animate continuously as the layout is running + // false : Just show the end result + // 'end' : Animate with the end result, from the initial positions to the end positions + animate: !0, + // Easing of the animation for animate:'end' + animationEasing: void 0, + // The duration of the animation for animate:'end' + animationDuration: void 0, + // A function that determines whether the node should be animated + // All nodes animated by default on animate enabled + // Non-animated nodes are positioned immediately when the layout starts + animateFilter: function(e, r) { + return !0; + }, + // The layout animates only after this many milliseconds for animate:true + // (prevents flashing on fast runs) + animationThreshold: 250, + // Number of iterations between consecutive screen positions update + refresh: 20, + // Whether to fit the network view after when done + fit: !0, + // Padding on fit + padding: 30, + // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + boundingBox: void 0, + // Excludes the label when calculating node bounding boxes for the layout algorithm + nodeDimensionsIncludeLabels: !1, + // Randomize the initial positions of the nodes (true) or use existing positions (false) + randomize: !1, + // Extra spacing between components in non-compound graphs + componentSpacing: 40, + // Node repulsion (non overlapping) multiplier + nodeRepulsion: function(e) { + return 2048; + }, + // Node repulsion (overlapping) multiplier + nodeOverlap: 4, + // Ideal edge (non nested) length + idealEdgeLength: function(e) { + return 32; + }, + // Divisor to compute edge forces + edgeElasticity: function(e) { + return 32; + }, + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 1.2, + // Gravity force (constant) + gravity: 1, + // Maximum number of iterations to perform + numIter: 1e3, + // Initial temperature (maximum node displacement) + initialTemp: 1e3, + // Cooling factor (how the temperature is reduced between consecutive iterations + coolingFactor: 0.99, + // Lower temperature threshold (below this point the layout will end) + minTemp: 1 +}; +function mn(t) { + this.options = de({}, ay, t), this.options.layout = this; + var e = this.options.eles.nodes(), r = this.options.eles.edges(), a = r.filter(function(n) { + var i = n.source().data("id"), s = n.target().data("id"), o = e.some(function(u) { + return u.data("id") === i; + }), l = e.some(function(u) { + return u.data("id") === s; + }); + return !o || !l; + }); + this.options.eles = this.options.eles.not(a); +} +mn.prototype.run = function() { + var t = this.options, e = t.cy, r = this; + r.stopped = !1, (t.animate === !0 || t.animate === !1) && r.emit({ + type: "layoutstart", + layout: r + }), t.debug === !0 ? Mn = !0 : Mn = !1; + var a = ny(e, r, t); + Mn && oy(a), t.randomize && ly(a); + var n = Mt(), i = function() { + uy(a, e, t), t.fit === !0 && e.fit(t.padding); + }, s = function(c) { + return !(r.stopped || c >= t.numIter || (fy(a, t), a.temperature = a.temperature * t.coolingFactor, a.temperature < t.minTemp)); + }, o = function() { + if (t.animate === !0 || t.animate === !1) + i(), r.one("layoutstop", t.stop), r.emit({ + type: "layoutstop", + layout: r + }); + else { + var c = t.eles.nodes(), v = al(a, t, c); + c.layoutPositions(r, t, v); + } + }, l = 0, u = !0; + if (t.animate === !0) { + var f = function h() { + for (var c = 0; u && c < t.refresh; ) + u = s(l), l++, c++; + if (!u) + Ns(a, t), o(); + else { + var v = Mt(); + v - n >= t.animationThreshold && i(), Ya(h); + } + }; + f(); + } else { + for (; u; ) + u = s(l), l++; + Ns(a, t), o(); + } + return this; +}; +mn.prototype.stop = function() { + return this.stopped = !0, this.thread && this.thread.stop(), this.emit("layoutstop"), this; +}; +mn.prototype.destroy = function() { + return this.thread && this.thread.stop(), this; +}; +var ny = function(e, r, a) { + for (var n = a.eles.edges(), i = a.eles.nodes(), s = ft(a.boundingBox ? a.boundingBox : { + x1: 0, + y1: 0, + w: e.width(), + h: e.height() + }), o = { + isCompound: e.hasCompoundNodes(), + layoutNodes: [], + idToIndex: {}, + nodeSize: i.size(), + graphSet: [], + indexToGraph: [], + layoutEdges: [], + edgeSize: n.size(), + temperature: a.initialTemp, + clientWidth: s.w, + clientHeight: s.h, + boundingBox: s + }, l = a.eles.components(), u = {}, f = 0; f < l.length; f++) + for (var h = l[f], c = 0; c < h.length; c++) { + var v = h[c]; + u[v.id()] = f; + } + for (var f = 0; f < o.nodeSize; f++) { + var d = i[f], g = d.layoutDimensions(a), p = {}; + p.isLocked = d.locked(), p.id = d.data("id"), p.parentId = d.data("parent"), p.cmptId = u[d.id()], p.children = [], p.positionX = d.position("x"), p.positionY = d.position("y"), p.offsetX = 0, p.offsetY = 0, p.height = g.w, p.width = g.h, p.maxX = p.positionX + p.width / 2, p.minX = p.positionX - p.width / 2, p.maxY = p.positionY + p.height / 2, p.minY = p.positionY - p.height / 2, p.padLeft = parseFloat(d.style("padding")), p.padRight = parseFloat(d.style("padding")), p.padTop = parseFloat(d.style("padding")), p.padBottom = parseFloat(d.style("padding")), p.nodeRepulsion = Be(a.nodeRepulsion) ? a.nodeRepulsion(d) : a.nodeRepulsion, o.layoutNodes.push(p), o.idToIndex[p.id] = f; + } + for (var y = [], E = 0, m = -1, T = [], f = 0; f < o.nodeSize; f++) { + var d = o.layoutNodes[f], C = d.parentId; + C != null ? o.layoutNodes[o.idToIndex[C]].children.push(d.id) : (y[++m] = d.id, T.push(d.id)); + } + for (o.graphSet.push(T); E <= m; ) { + var S = y[E++], b = o.idToIndex[S], v = o.layoutNodes[b], x = v.children; + if (x.length > 0) { + o.graphSet.push(x); + for (var f = 0; f < x.length; f++) + y[++m] = x[f]; + } + } + for (var f = 0; f < o.graphSet.length; f++) + for (var w = o.graphSet[f], c = 0; c < w.length; c++) { + var D = o.idToIndex[w[c]]; + o.indexToGraph[D] = f; + } + for (var f = 0; f < o.edgeSize; f++) { + var A = n[f], L = {}; + L.id = A.data("id"), L.sourceId = A.data("source"), L.targetId = A.data("target"); + var I = Be(a.idealEdgeLength) ? a.idealEdgeLength(A) : a.idealEdgeLength, O = Be(a.edgeElasticity) ? a.edgeElasticity(A) : a.edgeElasticity, P = o.idToIndex[L.sourceId], R = o.idToIndex[L.targetId], M = o.indexToGraph[P], k = o.indexToGraph[R]; + if (M != k) { + for (var B = iy(L.sourceId, L.targetId, o), G = o.graphSet[B], F = 0, p = o.layoutNodes[P]; G.indexOf(p.id) === -1; ) + p = o.layoutNodes[o.idToIndex[p.parentId]], F++; + for (p = o.layoutNodes[R]; G.indexOf(p.id) === -1; ) + p = o.layoutNodes[o.idToIndex[p.parentId]], F++; + I *= F * a.nestingFactor; + } + L.idealLength = I, L.elasticity = O, o.layoutEdges.push(L); + } + return o; +}, iy = function(e, r, a) { + var n = sy(e, r, 0, a); + return 2 > n.count ? 0 : n.graph; +}, sy = function t(e, r, a, n) { + var i = n.graphSet[a]; + if (-1 < i.indexOf(e) && -1 < i.indexOf(r)) + return { + count: 2, + graph: a + }; + for (var s = 0, o = 0; o < i.length; o++) { + var l = i[o], u = n.idToIndex[l], f = n.layoutNodes[u].children; + if (f.length !== 0) { + var h = n.indexToGraph[n.idToIndex[f[0]]], c = t(e, r, h, n); + if (c.count !== 0) + if (c.count === 1) { + if (s++, s === 2) + break; + } else + return c; + } + } + return { + count: s, + graph: a + }; +}, oy, ly = function(e, r) { + for (var a = e.clientWidth, n = e.clientHeight, i = 0; i < e.nodeSize; i++) { + var s = e.layoutNodes[i]; + s.children.length === 0 && !s.isLocked && (s.positionX = Math.random() * a, s.positionY = Math.random() * n); + } +}, al = function(e, r, a) { + var n = e.boundingBox, i = { + x1: 1 / 0, + x2: -1 / 0, + y1: 1 / 0, + y2: -1 / 0 + }; + return r.boundingBox && (a.forEach(function(s) { + var o = e.layoutNodes[e.idToIndex[s.data("id")]]; + i.x1 = Math.min(i.x1, o.positionX), i.x2 = Math.max(i.x2, o.positionX), i.y1 = Math.min(i.y1, o.positionY), i.y2 = Math.max(i.y2, o.positionY); + }), i.w = i.x2 - i.x1, i.h = i.y2 - i.y1), function(s, o) { + var l = e.layoutNodes[e.idToIndex[s.data("id")]]; + if (r.boundingBox) { + var u = (l.positionX - i.x1) / i.w, f = (l.positionY - i.y1) / i.h; + return { + x: n.x1 + u * n.w, + y: n.y1 + f * n.h + }; + } else + return { + x: l.positionX, + y: l.positionY + }; + }; +}, uy = function(e, r, a) { + var n = a.layout, i = a.eles.nodes(), s = al(e, a, i); + i.positions(s), e.ready !== !0 && (e.ready = !0, n.one("layoutready", a.ready), n.emit({ + type: "layoutready", + layout: this + })); +}, fy = function(e, r, a) { + hy(e, r), dy(e), gy(e, r), py(e), yy(e); +}, hy = function(e, r) { + for (var a = 0; a < e.graphSet.length; a++) + for (var n = e.graphSet[a], i = n.length, s = 0; s < i; s++) + for (var o = e.layoutNodes[e.idToIndex[n[s]]], l = s + 1; l < i; l++) { + var u = e.layoutNodes[e.idToIndex[n[l]]]; + vy(o, u, e, r); + } +}, Os = function(e) { + return -e + 2 * e * Math.random(); +}, vy = function(e, r, a, n) { + var i = e.cmptId, s = r.cmptId; + if (!(i !== s && !a.isCompound)) { + var o = r.positionX - e.positionX, l = r.positionY - e.positionY, u = 1; + o === 0 && l === 0 && (o = Os(u), l = Os(u)); + var f = cy(e, r, o, l); + if (f > 0) + var h = n.nodeOverlap * f, c = Math.sqrt(o * o + l * l), v = h * o / c, d = h * l / c; + else + var g = Ja(e, o, l), p = Ja(r, -1 * o, -1 * l), y = p.x - g.x, E = p.y - g.y, m = y * y + E * E, c = Math.sqrt(m), h = (e.nodeRepulsion + r.nodeRepulsion) / m, v = h * y / c, d = h * E / c; + e.isLocked || (e.offsetX -= v, e.offsetY -= d), r.isLocked || (r.offsetX += v, r.offsetY += d); + } +}, cy = function(e, r, a, n) { + if (a > 0) + var i = e.maxX - r.minX; + else + var i = r.maxX - e.minX; + if (n > 0) + var s = e.maxY - r.minY; + else + var s = r.maxY - e.minY; + return i >= 0 && s >= 0 ? Math.sqrt(i * i + s * s) : 0; +}, Ja = function(e, r, a) { + var n = e.positionX, i = e.positionY, s = e.height || 1, o = e.width || 1, l = a / r, u = s / o, f = {}; + return r === 0 && 0 < a || r === 0 && 0 > a ? (f.x = n, f.y = i + s / 2, f) : 0 < r && -1 * u <= l && l <= u ? (f.x = n + o / 2, f.y = i + o * a / 2 / r, f) : 0 > r && -1 * u <= l && l <= u ? (f.x = n - o / 2, f.y = i - o * a / 2 / r, f) : 0 < a && (l <= -1 * u || l >= u) ? (f.x = n + s * r / 2 / a, f.y = i + s / 2, f) : (0 > a && (l <= -1 * u || l >= u) && (f.x = n - s * r / 2 / a, f.y = i - s / 2), f); +}, dy = function(e, r) { + for (var a = 0; a < e.edgeSize; a++) { + var n = e.layoutEdges[a], i = e.idToIndex[n.sourceId], s = e.layoutNodes[i], o = e.idToIndex[n.targetId], l = e.layoutNodes[o], u = l.positionX - s.positionX, f = l.positionY - s.positionY; + if (!(u === 0 && f === 0)) { + var h = Ja(s, u, f), c = Ja(l, -1 * u, -1 * f), v = c.x - h.x, d = c.y - h.y, g = Math.sqrt(v * v + d * d), p = Math.pow(n.idealLength - g, 2) / n.elasticity; + if (g !== 0) + var y = p * v / g, E = p * d / g; + else + var y = 0, E = 0; + s.isLocked || (s.offsetX += y, s.offsetY += E), l.isLocked || (l.offsetX -= y, l.offsetY -= E); + } + } +}, gy = function(e, r) { + if (r.gravity !== 0) + for (var a = 1, n = 0; n < e.graphSet.length; n++) { + var i = e.graphSet[n], s = i.length; + if (n === 0) + var o = e.clientHeight / 2, l = e.clientWidth / 2; + else + var u = e.layoutNodes[e.idToIndex[i[0]]], f = e.layoutNodes[e.idToIndex[u.parentId]], o = f.positionX, l = f.positionY; + for (var h = 0; h < s; h++) { + var c = e.layoutNodes[e.idToIndex[i[h]]]; + if (!c.isLocked) { + var v = o - c.positionX, d = l - c.positionY, g = Math.sqrt(v * v + d * d); + if (g > a) { + var p = r.gravity * v / g, y = r.gravity * d / g; + c.offsetX += p, c.offsetY += y; + } + } + } + } +}, py = function(e, r) { + var a = [], n = 0, i = -1; + for (a.push.apply(a, e.graphSet[0]), i += e.graphSet[0].length; n <= i; ) { + var s = a[n++], o = e.idToIndex[s], l = e.layoutNodes[o], u = l.children; + if (0 < u.length && !l.isLocked) { + for (var f = l.offsetX, h = l.offsetY, c = 0; c < u.length; c++) { + var v = e.layoutNodes[e.idToIndex[u[c]]]; + v.offsetX += f, v.offsetY += h, a[++i] = u[c]; + } + l.offsetX = 0, l.offsetY = 0; + } + } +}, yy = function(e, r) { + for (var a = 0; a < e.nodeSize; a++) { + var n = e.layoutNodes[a]; + 0 < n.children.length && (n.maxX = void 0, n.minX = void 0, n.maxY = void 0, n.minY = void 0); + } + for (var a = 0; a < e.nodeSize; a++) { + var n = e.layoutNodes[a]; + if (!(0 < n.children.length || n.isLocked)) { + var i = my(n.offsetX, n.offsetY, e.temperature); + n.positionX += i.x, n.positionY += i.y, n.offsetX = 0, n.offsetY = 0, n.minX = n.positionX - n.width, n.maxX = n.positionX + n.width, n.minY = n.positionY - n.height, n.maxY = n.positionY + n.height, by(n, e); + } + } + for (var a = 0; a < e.nodeSize; a++) { + var n = e.layoutNodes[a]; + 0 < n.children.length && !n.isLocked && (n.positionX = (n.maxX + n.minX) / 2, n.positionY = (n.maxY + n.minY) / 2, n.width = n.maxX - n.minX, n.height = n.maxY - n.minY); + } +}, my = function(e, r, a) { + var n = Math.sqrt(e * e + r * r); + if (n > a) + var i = { + x: a * e / n, + y: a * r / n + }; + else + var i = { + x: e, + y: r + }; + return i; +}, by = function t(e, r) { + var a = e.parentId; + if (a != null) { + var n = r.layoutNodes[r.idToIndex[a]], i = !1; + if ((n.maxX == null || e.maxX + n.padRight > n.maxX) && (n.maxX = e.maxX + n.padRight, i = !0), (n.minX == null || e.minX - n.padLeft < n.minX) && (n.minX = e.minX - n.padLeft, i = !0), (n.maxY == null || e.maxY + n.padBottom > n.maxY) && (n.maxY = e.maxY + n.padBottom, i = !0), (n.minY == null || e.minY - n.padTop < n.minY) && (n.minY = e.minY - n.padTop, i = !0), i) + return t(n, r); + } +}, Ns = function(e, r) { + for (var a = e.layoutNodes, n = [], i = 0; i < a.length; i++) { + var s = a[i], o = s.cmptId, l = n[o] = n[o] || []; + l.push(s); + } + for (var u = 0, i = 0; i < n.length; i++) { + var f = n[i]; + if (f) { + f.x1 = 1 / 0, f.x2 = -1 / 0, f.y1 = 1 / 0, f.y2 = -1 / 0; + for (var h = 0; h < f.length; h++) { + var c = f[h]; + f.x1 = Math.min(f.x1, c.positionX - c.width / 2), f.x2 = Math.max(f.x2, c.positionX + c.width / 2), f.y1 = Math.min(f.y1, c.positionY - c.height / 2), f.y2 = Math.max(f.y2, c.positionY + c.height / 2); + } + f.w = f.x2 - f.x1, f.h = f.y2 - f.y1, u += f.w * f.h; + } + } + n.sort(function(E, m) { + return m.w * m.h - E.w * E.h; + }); + for (var v = 0, d = 0, g = 0, p = 0, y = Math.sqrt(u) * e.clientWidth / e.clientHeight, i = 0; i < n.length; i++) { + var f = n[i]; + if (f) { + for (var h = 0; h < f.length; h++) { + var c = f[h]; + c.isLocked || (c.positionX += v - f.x1, c.positionY += d - f.y1); + } + v += f.w + r.componentSpacing, g += f.w + r.componentSpacing, p = Math.max(p, f.h), g > y && (d += p + r.componentSpacing, v = 0, g = 0, p = 0); + } + } +}, Ey = { + fit: !0, + // whether to fit the viewport to the graph + padding: 30, + // padding used on fit + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: !0, + // prevents node overlap, may overflow boundingBox if not enough space + avoidOverlapPadding: 10, + // extra spacing around nodes when avoidOverlap: true + nodeDimensionsIncludeLabels: !1, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + condense: !1, + // uses all available space on false, uses minimal space on true + rows: void 0, + // force num of rows in the grid + cols: void 0, + // force num of columns in the grid + position: function(e) { + }, + // returns { row, col } for element + sort: void 0, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: !1, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: function(e, r) { + return !0; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: function(e, r) { + return r; + } + // transform a given node position. Useful for changing flow direction in discrete layouts +}; +function nl(t) { + this.options = de({}, Ey, t); +} +nl.prototype.run = function() { + var t = this.options, e = t, r = t.cy, a = e.eles, n = a.nodes().not(":parent"); + e.sort && (n = n.sort(e.sort)); + var i = ft(e.boundingBox ? e.boundingBox : { + x1: 0, + y1: 0, + w: r.width(), + h: r.height() + }); + if (i.h === 0 || i.w === 0) + a.nodes().layoutPositions(this, e, function(U) { + return { + x: i.x1, + y: i.y1 + }; + }); + else { + var s = n.size(), o = Math.sqrt(s * i.h / i.w), l = Math.round(o), u = Math.round(i.w / i.h * o), f = function(_) { + if (_ == null) + return Math.min(l, u); + var Y = Math.min(l, u); + Y == l ? l = _ : u = _; + }, h = function(_) { + if (_ == null) + return Math.max(l, u); + var Y = Math.max(l, u); + Y == l ? l = _ : u = _; + }, c = e.rows, v = e.cols != null ? e.cols : e.columns; + if (c != null && v != null) + l = c, u = v; + else if (c != null && v == null) + l = c, u = Math.ceil(s / l); + else if (c == null && v != null) + u = v, l = Math.ceil(s / u); + else if (u * l > s) { + var d = f(), g = h(); + (d - 1) * g >= s ? f(d - 1) : (g - 1) * d >= s && h(g - 1); + } else + for (; u * l < s; ) { + var p = f(), y = h(); + (y + 1) * p >= s ? h(y + 1) : f(p + 1); + } + var E = i.w / u, m = i.h / l; + if (e.condense && (E = 0, m = 0), e.avoidOverlap) + for (var T = 0; T < n.length; T++) { + var C = n[T], S = C._private.position; + (S.x == null || S.y == null) && (S.x = 0, S.y = 0); + var b = C.layoutDimensions(e), x = e.avoidOverlapPadding, w = b.w + x, D = b.h + x; + E = Math.max(E, w), m = Math.max(m, D); + } + for (var A = {}, L = function(_, Y) { + return !!A["c-" + _ + "-" + Y]; + }, I = function(_, Y) { + A["c-" + _ + "-" + Y] = !0; + }, O = 0, P = 0, R = function() { + P++, P >= u && (P = 0, O++); + }, M = {}, k = 0; k < n.length; k++) { + var B = n[k], G = e.position(B); + if (G && (G.row !== void 0 || G.col !== void 0)) { + var F = { + row: G.row, + col: G.col + }; + if (F.col === void 0) + for (F.col = 0; L(F.row, F.col); ) + F.col++; + else if (F.row === void 0) + for (F.row = 0; L(F.row, F.col); ) + F.row++; + M[B.id()] = F, I(F.row, F.col); + } + } + var $ = function(_, Y) { + var W, z; + if (_.locked() || _.isParent()) + return !1; + var K = M[_.id()]; + if (K) + W = K.col * E + E / 2 + i.x1, z = K.row * m + m / 2 + i.y1; + else { + for (; L(O, P); ) + R(); + W = P * E + E / 2 + i.x1, z = O * m + m / 2 + i.y1, I(O, P), R(); + } + return { + x: W, + y: z + }; + }; + n.layoutPositions(this, e, $); + } + return this; +}; +var wy = { + ready: function() { + }, + // on layoutready + stop: function() { + } + // on layoutstop +}; +function mi(t) { + this.options = de({}, wy, t); +} +mi.prototype.run = function() { + var t = this.options, e = t.eles, r = this; + return t.cy, r.emit("layoutstart"), e.nodes().positions(function() { + return { + x: 0, + y: 0 + }; + }), r.one("layoutready", t.ready), r.emit("layoutready"), r.one("layoutstop", t.stop), r.emit("layoutstop"), this; +}; +mi.prototype.stop = function() { + return this; +}; +var xy = { + positions: void 0, + // map of (node id) => (position obj); or function(node){ return somPos; } + zoom: void 0, + // the zoom level to set (prob want fit = false if set) + pan: void 0, + // the pan level to set (prob want fit = false if set) + fit: !0, + // whether to fit to viewport + padding: 30, + // padding on fit + spacingFactor: void 0, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + animate: !1, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: function(e, r) { + return !0; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: function(e, r) { + return r; + } + // transform a given node position. Useful for changing flow direction in discrete layouts +}; +function il(t) { + this.options = de({}, xy, t); +} +il.prototype.run = function() { + var t = this.options, e = t.eles, r = e.nodes(), a = Be(t.positions); + function n(i) { + if (t.positions == null) + return Rd(i.position()); + if (a) + return t.positions(i); + var s = t.positions[i._private.data.id]; + return s == null ? null : s; + } + return r.layoutPositions(this, t, function(i, s) { + var o = n(i); + return i.locked() || o == null ? !1 : o; + }), this; +}; +var Ty = { + fit: !0, + // whether to fit to viewport + padding: 30, + // fit padding + boundingBox: void 0, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + animate: !1, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: void 0, + // easing of animation if enabled + animateFilter: function(e, r) { + return !0; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: void 0, + // callback on layoutready + stop: void 0, + // callback on layoutstop + transform: function(e, r) { + return r; + } + // transform a given node position. Useful for changing flow direction in discrete layouts +}; +function sl(t) { + this.options = de({}, Ty, t); +} +sl.prototype.run = function() { + var t = this.options, e = t.cy, r = t.eles, a = ft(t.boundingBox ? t.boundingBox : { + x1: 0, + y1: 0, + w: e.width(), + h: e.height() + }), n = function(s, o) { + return { + x: a.x1 + Math.round(Math.random() * a.w), + y: a.y1 + Math.round(Math.random() * a.h) + }; + }; + return r.nodes().layoutPositions(this, t, n), this; +}; +var Cy = [{ + name: "breadthfirst", + impl: el +}, { + name: "circle", + impl: tl +}, { + name: "concentric", + impl: rl +}, { + name: "cose", + impl: mn +}, { + name: "grid", + impl: nl +}, { + name: "null", + impl: mi +}, { + name: "preset", + impl: il +}, { + name: "random", + impl: sl +}]; +function ol(t) { + this.options = t, this.notifications = 0; +} +var Is = function() { +}, Ms = function() { + throw new Error("A headless instance can not render images"); +}; +ol.prototype = { + recalculateRenderedStyle: Is, + notify: function() { + this.notifications++; + }, + init: Is, + isHeadless: function() { + return !0; + }, + png: Ms, + jpg: Ms +}; +var bi = {}; +bi.arrowShapeWidth = 0.3; +bi.registerArrowShapes = function() { + var t = this.arrowShapes = {}, e = this, r = function(u, f, h, c, v, d, g) { + var p = v.x - h / 2 - g, y = v.x + h / 2 + g, E = v.y - h / 2 - g, m = v.y + h / 2 + g, T = p <= u && u <= y && E <= f && f <= m; + return T; + }, a = function(u, f, h, c, v) { + var d = u * Math.cos(c) - f * Math.sin(c), g = u * Math.sin(c) + f * Math.cos(c), p = d * h, y = g * h, E = p + v.x, m = y + v.y; + return { + x: E, + y: m + }; + }, n = function(u, f, h, c) { + for (var v = [], d = 0; d < u.length; d += 2) { + var g = u[d], p = u[d + 1]; + v.push(a(g, p, f, h, c)); + } + return v; + }, i = function(u) { + for (var f = [], h = 0; h < u.length; h++) { + var c = u[h]; + f.push(c.x, c.y); + } + return f; + }, s = function(u) { + return u.pstyle("width").pfValue * u.pstyle("arrow-scale").pfValue * 2; + }, o = function(u, f) { + ve(f) && (f = t[f]), t[u] = de({ + name: u, + points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], + collide: function(c, v, d, g, p, y) { + var E = i(n(this.points, d + 2 * y, g, p)), m = ut(c, v, E); + return m; + }, + roughCollide: r, + draw: function(c, v, d, g) { + var p = n(this.points, v, d, g); + e.arrowShapeImpl("polygon")(c, p); + }, + spacing: function(c) { + return 0; + }, + gap: s + }, f); + }; + o("none", { + collide: Xa, + roughCollide: Xa, + draw: oi, + spacing: Wi, + gap: Wi + }), o("triangle", { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3] + }), o("arrow", "triangle"), o("triangle-backcurve", { + points: t.triangle.points, + controlPoint: [0, -0.15], + roughCollide: r, + draw: function(u, f, h, c, v) { + var d = n(this.points, f, h, c), g = this.controlPoint, p = a(g[0], g[1], f, h, c); + e.arrowShapeImpl(this.name)(u, d, p); + }, + gap: function(u) { + return s(u) * 0.8; + } + }), o("triangle-tee", { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], + collide: function(u, f, h, c, v, d, g) { + var p = i(n(this.points, h + 2 * g, c, v)), y = i(n(this.pointsTee, h + 2 * g, c, v)), E = ut(u, f, p) || ut(u, f, y); + return E; + }, + draw: function(u, f, h, c, v) { + var d = n(this.points, f, h, c), g = n(this.pointsTee, f, h, c); + e.arrowShapeImpl(this.name)(u, d, g); + } + }), o("circle-triangle", { + radius: 0.15, + pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], + collide: function(u, f, h, c, v, d, g) { + var p = v, y = Math.pow(p.x - u, 2) + Math.pow(p.y - f, 2) <= Math.pow((h + 2 * g) * this.radius, 2), E = i(n(this.points, h + 2 * g, c, v)); + return ut(u, f, E) || y; + }, + draw: function(u, f, h, c, v) { + var d = n(this.pointsTr, f, h, c); + e.arrowShapeImpl(this.name)(u, d, c.x, c.y, this.radius * f); + }, + spacing: function(u) { + return e.getArrowWidth(u.pstyle("width").pfValue, u.pstyle("arrow-scale").value) * this.radius; + } + }), o("triangle-cross", { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + baseCrossLinePts: [ + -0.15, + -0.4, + // first half of the rectangle + -0.15, + -0.4, + 0.15, + -0.4, + // second half of the rectangle + 0.15, + -0.4 + ], + crossLinePts: function(u, f) { + var h = this.baseCrossLinePts.slice(), c = f / u, v = 3, d = 5; + return h[v] = h[v] - c, h[d] = h[d] - c, h; + }, + collide: function(u, f, h, c, v, d, g) { + var p = i(n(this.points, h + 2 * g, c, v)), y = i(n(this.crossLinePts(h, d), h + 2 * g, c, v)), E = ut(u, f, p) || ut(u, f, y); + return E; + }, + draw: function(u, f, h, c, v) { + var d = n(this.points, f, h, c), g = n(this.crossLinePts(f, v), f, h, c); + e.arrowShapeImpl(this.name)(u, d, g); + } + }), o("vee", { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], + gap: function(u) { + return s(u) * 0.525; + } + }), o("circle", { + radius: 0.15, + collide: function(u, f, h, c, v, d, g) { + var p = v, y = Math.pow(p.x - u, 2) + Math.pow(p.y - f, 2) <= Math.pow((h + 2 * g) * this.radius, 2); + return y; + }, + draw: function(u, f, h, c, v) { + e.arrowShapeImpl(this.name)(u, c.x, c.y, this.radius * f); + }, + spacing: function(u) { + return e.getArrowWidth(u.pstyle("width").pfValue, u.pstyle("arrow-scale").value) * this.radius; + } + }), o("tee", { + points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], + spacing: function(u) { + return 1; + }, + gap: function(u) { + return 1; + } + }), o("square", { + points: [-0.15, 0, 0.15, 0, 0.15, -0.3, -0.15, -0.3] + }), o("diamond", { + points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], + gap: function(u) { + return u.pstyle("width").pfValue * u.pstyle("arrow-scale").value; + } + }), o("chevron", { + points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], + gap: function(u) { + return 0.95 * u.pstyle("width").pfValue * u.pstyle("arrow-scale").value; + } + }); +}; +var fr = {}; +fr.projectIntoViewport = function(t, e) { + var r = this.cy, a = this.findContainerClientCoords(), n = a[0], i = a[1], s = a[4], o = r.pan(), l = r.zoom(), u = ((t - n) / s - o.x) / l, f = ((e - i) / s - o.y) / l; + return [u, f]; +}; +fr.findContainerClientCoords = function() { + if (this.containerBB) + return this.containerBB; + var t = this.container, e = t.getBoundingClientRect(), r = this.cy.window().getComputedStyle(t), a = function(y) { + return parseFloat(r.getPropertyValue(y)); + }, n = { + left: a("padding-left"), + right: a("padding-right"), + top: a("padding-top"), + bottom: a("padding-bottom") + }, i = { + left: a("border-left-width"), + right: a("border-right-width"), + top: a("border-top-width"), + bottom: a("border-bottom-width") + }, s = t.clientWidth, o = t.clientHeight, l = n.left + n.right, u = n.top + n.bottom, f = i.left + i.right, h = e.width / (s + f), c = s - l, v = o - u, d = e.left + n.left + i.left, g = e.top + n.top + i.top; + return this.containerBB = [d, g, c, v, h]; +}; +fr.invalidateContainerClientCoordsCache = function() { + this.containerBB = null; +}; +fr.findNearestElement = function(t, e, r, a) { + return this.findNearestElements(t, e, r, a)[0]; +}; +fr.findNearestElements = function(t, e, r, a) { + var n = this, i = this, s = i.getCachedZSortedEles(), o = [], l = i.cy.zoom(), u = i.cy.hasCompoundNodes(), f = (a ? 24 : 8) / l, h = (a ? 8 : 2) / l, c = (a ? 8 : 2) / l, v = 1 / 0, d, g; + r && (s = s.interactive); + function p(b, x) { + if (b.isNode()) { + if (g) + return; + g = b, o.push(b); + } + if (b.isEdge() && (x == null || x < v)) + if (d) { + if (d.pstyle("z-compound-depth").value === b.pstyle("z-compound-depth").value && d.pstyle("z-compound-depth").value === b.pstyle("z-compound-depth").value) { + for (var w = 0; w < o.length; w++) + if (o[w].isEdge()) { + o[w] = b, d = b, v = x != null ? x : v; + break; + } + } + } else + o.push(b), d = b, v = x != null ? x : v; + } + function y(b) { + var x = b.outerWidth() + 2 * h, w = b.outerHeight() + 2 * h, D = x / 2, A = w / 2, L = b.position(); + if (L.x - D <= t && t <= L.x + D && L.y - A <= e && e <= L.y + A) { + var I = i.nodeShapes[n.getNodeShape(b)]; + if (I.checkPoint(t, e, 0, x, w, L.x, L.y)) + return p(b, 0), !0; + } + } + function E(b) { + var x = b._private, w = x.rscratch, D = b.pstyle("width").pfValue, A = b.pstyle("arrow-scale").value, L = D / 2 + f, I = L * L, O = L * 2, k = x.source, B = x.target, P; + if (w.edgeType === "segments" || w.edgeType === "straight" || w.edgeType === "haystack") { + for (var R = w.allpts, M = 0; M + 3 < R.length; M += 2) + if (Xd(t, e, R[M], R[M + 1], R[M + 2], R[M + 3], O) && I > (P = Qd(t, e, R[M], R[M + 1], R[M + 2], R[M + 3]))) + return p(b, P), !0; + } else if (w.edgeType === "bezier" || w.edgeType === "multibezier" || w.edgeType === "self" || w.edgeType === "compound") { + for (var R = w.allpts, M = 0; M + 5 < w.allpts.length; M += 4) + if (Wd(t, e, R[M], R[M + 1], R[M + 2], R[M + 3], R[M + 4], R[M + 5], O) && I > (P = Zd(t, e, R[M], R[M + 1], R[M + 2], R[M + 3], R[M + 4], R[M + 5]))) + return p(b, P), !0; + } + for (var k = k || x.source, B = B || x.target, G = n.getArrowWidth(D, A), F = [{ + name: "source", + x: w.arrowStartX, + y: w.arrowStartY, + angle: w.srcArrowAngle + }, { + name: "target", + x: w.arrowEndX, + y: w.arrowEndY, + angle: w.tgtArrowAngle + }, { + name: "mid-source", + x: w.midX, + y: w.midY, + angle: w.midsrcArrowAngle + }, { + name: "mid-target", + x: w.midX, + y: w.midY, + angle: w.midtgtArrowAngle + }], M = 0; M < F.length; M++) { + var $ = F[M], U = i.arrowShapes[b.pstyle($.name + "-arrow-shape").value], _ = b.pstyle("width").pfValue; + if (U.roughCollide(t, e, G, $.angle, { + x: $.x, + y: $.y + }, _, f) && U.collide(t, e, G, $.angle, { + x: $.x, + y: $.y + }, _, f)) + return p(b), !0; + } + u && o.length > 0 && (y(k), y(B)); + } + function m(b, x, w) { + return xt(b, x, w); + } + function T(b, x) { + var w = b._private, D = c, A; + x ? A = x + "-" : A = "", b.boundingBox(); + var L = w.labelBounds[x || "main"], I = b.pstyle(A + "label").value, O = b.pstyle("text-events").strValue === "yes"; + if (!(!O || !I)) { + var P = m(w.rscratch, "labelX", x), R = m(w.rscratch, "labelY", x), M = m(w.rscratch, "labelAngle", x), k = b.pstyle(A + "text-margin-x").pfValue, B = b.pstyle(A + "text-margin-y").pfValue, G = L.x1 - D - k, F = L.x2 + D - k, $ = L.y1 - D - B, U = L.y2 + D - B; + if (M) { + var _ = Math.cos(M), Y = Math.sin(M), W = function(ce, te) { + return ce = ce - P, te = te - R, { + x: ce * _ - te * Y + P, + y: ce * Y + te * _ + R + }; + }, z = W(G, $), K = W(G, U), j = W(F, $), Q = W(F, U), ee = [ + // with the margin added after the rotation is applied + z.x + k, + z.y + B, + j.x + k, + j.y + B, + Q.x + k, + Q.y + B, + K.x + k, + K.y + B + ]; + if (ut(t, e, ee)) + return p(b), !0; + } else if (Sr(L, t, e)) + return p(b), !0; + } + } + for (var C = s.length - 1; C >= 0; C--) { + var S = s[C]; + S.isNode() ? y(S) || T(S) : E(S) || T(S) || T(S, "source") || T(S, "target"); + } + return o; +}; +fr.getAllInBox = function(t, e, r, a) { + var n = this.getCachedZSortedEles().interactive, i = [], s = Math.min(t, r), o = Math.max(t, r), l = Math.min(e, a), u = Math.max(e, a); + t = s, r = o, e = l, a = u; + for (var f = ft({ + x1: t, + y1: e, + x2: r, + y2: a + }), h = 0; h < n.length; h++) { + var c = n[h]; + if (c.isNode()) { + var v = c, d = v.boundingBox({ + includeNodes: !0, + includeEdges: !1, + includeLabels: !1 + }); + fi(f, d) && !To(d, f) && i.push(v); + } else { + var g = c, p = g._private, y = p.rscratch; + if (y.startX != null && y.startY != null && !Sr(f, y.startX, y.startY) || y.endX != null && y.endY != null && !Sr(f, y.endX, y.endY)) + continue; + if (y.edgeType === "bezier" || y.edgeType === "multibezier" || y.edgeType === "self" || y.edgeType === "compound" || y.edgeType === "segments" || y.edgeType === "haystack") { + for (var E = p.rstyle.bezierPts || p.rstyle.linePts || p.rstyle.haystackPts, m = !0, T = 0; T < E.length; T++) + if (!Yd(f, E[T])) { + m = !1; + break; + } + m && i.push(g); + } else + (y.edgeType === "haystack" || y.edgeType === "straight") && i.push(g); + } + } + return i; +}; +var ja = {}; +ja.calculateArrowAngles = function(t) { + var e = t._private.rscratch, r = e.edgeType === "haystack", a = e.edgeType === "bezier", n = e.edgeType === "multibezier", i = e.edgeType === "segments", s = e.edgeType === "compound", o = e.edgeType === "self", l, u, f, h, c, v, y, E; + if (r ? (f = e.haystackPts[0], h = e.haystackPts[1], c = e.haystackPts[2], v = e.haystackPts[3]) : (f = e.arrowStartX, h = e.arrowStartY, c = e.arrowEndX, v = e.arrowEndY), y = e.midX, E = e.midY, i) + l = f - e.segpts[0], u = h - e.segpts[1]; + else if (n || s || o || a) { + var d = e.allpts, g = Ye(d[0], d[2], d[4], 0.1), p = Ye(d[1], d[3], d[5], 0.1); + l = f - g, u = h - p; + } else + l = f - y, u = h - E; + e.srcArrowAngle = Ca(l, u); + var y = e.midX, E = e.midY; + if (r && (y = (f + c) / 2, E = (h + v) / 2), l = c - f, u = v - h, i) { + var d = e.allpts; + if (d.length / 2 % 2 === 0) { + var m = d.length / 2, T = m - 2; + l = d[m] - d[T], u = d[m + 1] - d[T + 1]; + } else { + var m = d.length / 2 - 1, T = m - 2, C = m + 2; + l = d[m] - d[T], u = d[m + 1] - d[T + 1]; + } + } else if (n || s || o) { + var d = e.allpts, S = e.ctrlpts, b, x, w, D; + if (S.length / 2 % 2 === 0) { + var A = d.length / 2 - 1, L = A + 2, I = L + 2; + b = Ye(d[A], d[L], d[I], 0), x = Ye(d[A + 1], d[L + 1], d[I + 1], 0), w = Ye(d[A], d[L], d[I], 1e-4), D = Ye(d[A + 1], d[L + 1], d[I + 1], 1e-4); + } else { + var L = d.length / 2 - 1, A = L - 2, I = L + 2; + b = Ye(d[A], d[L], d[I], 0.4999), x = Ye(d[A + 1], d[L + 1], d[I + 1], 0.4999), w = Ye(d[A], d[L], d[I], 0.5), D = Ye(d[A + 1], d[L + 1], d[I + 1], 0.5); + } + l = w - b, u = D - x; + } + if (e.midtgtArrowAngle = Ca(l, u), e.midDispX = l, e.midDispY = u, l *= -1, u *= -1, i) { + var d = e.allpts; + if (d.length / 2 % 2 !== 0) { + var m = d.length / 2 - 1, C = m + 2; + l = -(d[C] - d[m]), u = -(d[C + 1] - d[m + 1]); + } + } + if (e.midsrcArrowAngle = Ca(l, u), i) + l = c - e.segpts[e.segpts.length - 2], u = v - e.segpts[e.segpts.length - 1]; + else if (n || s || o || a) { + var d = e.allpts, O = d.length, g = Ye(d[O - 6], d[O - 4], d[O - 2], 0.9), p = Ye(d[O - 5], d[O - 3], d[O - 1], 0.9); + l = c - g, u = v - p; + } else + l = c - y, u = v - E; + e.tgtArrowAngle = Ca(l, u); +}; +ja.getArrowWidth = ja.getArrowHeight = function(t, e) { + var r = this.arrowWidthCache = this.arrowWidthCache || {}, a = r[t + ", " + e]; + return a || (a = Math.max(Math.pow(t * 13.37, 0.9), 29) * e, r[t + ", " + e] = a, a); +}; +var nt = {}; +nt.findMidptPtsEtc = function(t, e) { + var r = e.posPts, a = e.intersectionPts, n = e.vectorNormInverse, i, s = t.pstyle("source-endpoint"), o = t.pstyle("target-endpoint"), l = s.units != null && o.units != null, u = function(C, S, b, x) { + var w = x - S, D = b - C, A = Math.sqrt(D * D + w * w); + return { + x: -w / A, + y: D / A + }; + }, f = t.pstyle("edge-distances").value; + switch (f) { + case "node-position": + i = r; + break; + case "intersection": + i = a; + break; + case "endpoints": { + if (l) { + var h = this.manualEndptToPx(t.source()[0], s), c = Et(h, 2), v = c[0], d = c[1], g = this.manualEndptToPx(t.target()[0], o), p = Et(g, 2), y = p[0], E = p[1], m = { + x1: v, + y1: d, + x2: y, + y2: E + }; + n = u(v, d, y, E), i = m; + } else + Ne("Edge ".concat(t.id(), " has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")), i = a; + break; + } + } + return { + midptPts: i, + vectorNormInverse: n + }; +}; +nt.findHaystackPoints = function(t) { + for (var e = 0; e < t.length; e++) { + var r = t[e], a = r._private, n = a.rscratch; + if (!n.haystack) { + var i = Math.random() * 2 * Math.PI; + n.source = { + x: Math.cos(i), + y: Math.sin(i) + }, i = Math.random() * 2 * Math.PI, n.target = { + x: Math.cos(i), + y: Math.sin(i) + }; + } + var s = a.source, o = a.target, l = s.position(), u = o.position(), f = s.width(), h = o.width(), c = s.height(), v = o.height(), d = r.pstyle("haystack-radius").value, g = d / 2; + n.haystackPts = n.allpts = [n.source.x * f * g + l.x, n.source.y * c * g + l.y, n.target.x * h * g + u.x, n.target.y * v * g + u.y], n.midX = (n.allpts[0] + n.allpts[2]) / 2, n.midY = (n.allpts[1] + n.allpts[3]) / 2, n.edgeType = "haystack", n.haystack = !0, this.storeEdgeProjections(r), this.calculateArrowAngles(r), this.recalculateEdgeLabelProjections(r), this.calculateLabelAngles(r); + } +}; +nt.findSegmentsPoints = function(t, e) { + var r = t._private.rscratch, a = t.pstyle("segment-weights"), n = t.pstyle("segment-distances"), i = Math.min(a.pfValue.length, n.pfValue.length); + r.edgeType = "segments", r.segpts = []; + for (var s = 0; s < i; s++) { + var o = a.pfValue[s], l = n.pfValue[s], u = 1 - o, f = o, h = this.findMidptPtsEtc(t, e), c = h.midptPts, v = h.vectorNormInverse, d = { + x: c.x1 * u + c.x2 * f, + y: c.y1 * u + c.y2 * f + }; + r.segpts.push(d.x + v.x * l, d.y + v.y * l); + } +}; +nt.findLoopPoints = function(t, e, r, a) { + var n = t._private.rscratch, i = e.dirCounts, s = e.srcPos, o = t.pstyle("control-point-distances"), l = o ? o.pfValue[0] : void 0, u = t.pstyle("loop-direction").pfValue, f = t.pstyle("loop-sweep").pfValue, h = t.pstyle("control-point-step-size").pfValue; + n.edgeType = "self"; + var c = r, v = h; + a && (c = 0, v = l); + var d = u - Math.PI / 2, g = d - f / 2, p = d + f / 2, y = u + "_" + f; + c = i[y] === void 0 ? i[y] = 0 : ++i[y], n.ctrlpts = [s.x + Math.cos(g) * 1.4 * v * (c / 3 + 1), s.y + Math.sin(g) * 1.4 * v * (c / 3 + 1), s.x + Math.cos(p) * 1.4 * v * (c / 3 + 1), s.y + Math.sin(p) * 1.4 * v * (c / 3 + 1)]; +}; +nt.findCompoundLoopPoints = function(t, e, r, a) { + var n = t._private.rscratch; + n.edgeType = "compound"; + var i = e.srcPos, s = e.tgtPos, o = e.srcW, l = e.srcH, u = e.tgtW, f = e.tgtH, h = t.pstyle("control-point-step-size").pfValue, c = t.pstyle("control-point-distances"), v = c ? c.pfValue[0] : void 0, d = r, g = h; + a && (d = 0, g = v); + var p = 50, y = { + x: i.x - o / 2, + y: i.y - l / 2 + }, E = { + x: s.x - u / 2, + y: s.y - f / 2 + }, m = { + x: Math.min(y.x, E.x), + y: Math.min(y.y, E.y) + }, T = 0.5, C = Math.max(T, Math.log(o * 0.01)), S = Math.max(T, Math.log(u * 0.01)); + n.ctrlpts = [m.x, m.y - (1 + Math.pow(p, 1.12) / 100) * g * (d / 3 + 1) * C, m.x - (1 + Math.pow(p, 1.12) / 100) * g * (d / 3 + 1) * S, m.y]; +}; +nt.findStraightEdgePoints = function(t) { + t._private.rscratch.edgeType = "straight"; +}; +nt.findBezierPoints = function(t, e, r, a, n) { + var i = t._private.rscratch, s = t.pstyle("control-point-step-size").pfValue, o = t.pstyle("control-point-distances"), l = t.pstyle("control-point-weights"), u = o && l ? Math.min(o.value.length, l.value.length) : 1, f = o ? o.pfValue[0] : void 0, h = l.value[0], c = a; + i.edgeType = c ? "multibezier" : "bezier", i.ctrlpts = []; + for (var v = 0; v < u; v++) { + var d = (0.5 - e.eles.length / 2 + r) * s * (n ? -1 : 1), g = void 0, p = wo(d); + c && (f = o ? o.pfValue[v] : s, h = l.value[v]), a ? g = f : g = f !== void 0 ? p * f : void 0; + var y = g !== void 0 ? g : d, E = 1 - h, m = h, T = this.findMidptPtsEtc(t, e), C = T.midptPts, S = T.vectorNormInverse, b = { + x: C.x1 * E + C.x2 * m, + y: C.y1 * E + C.y2 * m + }; + i.ctrlpts.push(b.x + S.x * y, b.y + S.y * y); + } +}; +nt.findTaxiPoints = function(t, e) { + var r = t._private.rscratch; + r.edgeType = "segments"; + var a = "vertical", n = "horizontal", i = "leftward", s = "rightward", o = "downward", l = "upward", u = "auto", f = e.posPts, h = e.srcW, c = e.srcH, v = e.tgtW, d = e.tgtH, g = t.pstyle("edge-distances").value, p = g !== "node-position", y = t.pstyle("taxi-direction").value, E = y, m = t.pstyle("taxi-turn"), T = m.units === "%", C = m.pfValue, S = C < 0, b = t.pstyle("taxi-turn-min-distance").pfValue, x = p ? (h + v) / 2 : 0, w = p ? (c + d) / 2 : 0, D = f.x2 - f.x1, A = f.y2 - f.y1, L = function(Z, oe) { + return Z > 0 ? Math.max(Z - oe, 0) : Math.min(Z + oe, 0); + }, I = L(D, x), O = L(A, w), P = !1; + E === u ? y = Math.abs(I) > Math.abs(O) ? n : a : E === l || E === o ? (y = a, P = !0) : (E === i || E === s) && (y = n, P = !0); + var R = y === a, M = R ? O : I, k = R ? A : D, B = wo(k), G = !1; + !(P && (T || S)) && (E === o && k < 0 || E === l && k > 0 || E === i && k > 0 || E === s && k < 0) && (B *= -1, M = B * Math.abs(M), G = !0); + var F; + if (T) { + var $ = C < 0 ? 1 + C : C; + F = $ * M; + } else { + var U = C < 0 ? M : 0; + F = U + C * B; + } + var _ = function(Z) { + return Math.abs(Z) < b || Math.abs(Z) >= Math.abs(M); + }, Y = _(F), W = _(Math.abs(M) - Math.abs(F)), z = Y || W; + if (z && !G) + if (R) { + var K = Math.abs(k) <= c / 2, j = Math.abs(D) <= v / 2; + if (K) { + var Q = (f.x1 + f.x2) / 2, ee = f.y1, ne = f.y2; + r.segpts = [Q, ee, Q, ne]; + } else if (j) { + var ce = (f.y1 + f.y2) / 2, te = f.x1, re = f.x2; + r.segpts = [te, ce, re, ce]; + } else + r.segpts = [f.x1, f.y2]; + } else { + var ue = Math.abs(k) <= h / 2, le = Math.abs(A) <= d / 2; + if (ue) { + var se = (f.y1 + f.y2) / 2, fe = f.x1, xe = f.x2; + r.segpts = [fe, se, xe, se]; + } else if (le) { + var Ee = (f.x1 + f.x2) / 2, ge = f.y1, we = f.y2; + r.segpts = [Ee, ge, Ee, we]; + } else + r.segpts = [f.x2, f.y1]; + } + else if (R) { + var H = f.y1 + F + (p ? c / 2 * B : 0), N = f.x1, V = f.x2; + r.segpts = [N, H, V, H]; + } else { + var J = f.x1 + F + (p ? h / 2 * B : 0), X = f.y1, q = f.y2; + r.segpts = [J, X, J, q]; + } +}; +nt.tryToCorrectInvalidPoints = function(t, e) { + var r = t._private.rscratch; + if (r.edgeType === "bezier") { + var a = e.srcPos, n = e.tgtPos, i = e.srcW, s = e.srcH, o = e.tgtW, l = e.tgtH, u = e.srcShape, f = e.tgtShape, h = !ae(r.startX) || !ae(r.startY), c = !ae(r.arrowStartX) || !ae(r.arrowStartY), v = !ae(r.endX) || !ae(r.endY), d = !ae(r.arrowEndX) || !ae(r.arrowEndY), g = 3, p = this.getArrowWidth(t.pstyle("width").pfValue, t.pstyle("arrow-scale").value) * this.arrowShapeWidth, y = g * p, E = nr({ + x: r.ctrlpts[0], + y: r.ctrlpts[1] + }, { + x: r.startX, + y: r.startY + }), m = E < y, T = nr({ + x: r.ctrlpts[0], + y: r.ctrlpts[1] + }, { + x: r.endX, + y: r.endY + }), C = T < y, S = !1; + if (h || c || m) { + S = !0; + var b = { + // delta + x: r.ctrlpts[0] - a.x, + y: r.ctrlpts[1] - a.y + }, x = Math.sqrt(b.x * b.x + b.y * b.y), w = { + // normalised delta + x: b.x / x, + y: b.y / x + }, D = Math.max(i, s), A = { + // *2 radius guarantees outside shape + x: r.ctrlpts[0] + w.x * 2 * D, + y: r.ctrlpts[1] + w.y * 2 * D + }, L = u.intersectLine(a.x, a.y, i, s, A.x, A.y, 0); + m ? (r.ctrlpts[0] = r.ctrlpts[0] + w.x * (y - E), r.ctrlpts[1] = r.ctrlpts[1] + w.y * (y - E)) : (r.ctrlpts[0] = L[0] + w.x * y, r.ctrlpts[1] = L[1] + w.y * y); + } + if (v || d || C) { + S = !0; + var I = { + // delta + x: r.ctrlpts[0] - n.x, + y: r.ctrlpts[1] - n.y + }, O = Math.sqrt(I.x * I.x + I.y * I.y), P = { + // normalised delta + x: I.x / O, + y: I.y / O + }, R = Math.max(i, s), M = { + // *2 radius guarantees outside shape + x: r.ctrlpts[0] + P.x * 2 * R, + y: r.ctrlpts[1] + P.y * 2 * R + }, k = f.intersectLine(n.x, n.y, o, l, M.x, M.y, 0); + C ? (r.ctrlpts[0] = r.ctrlpts[0] + P.x * (y - T), r.ctrlpts[1] = r.ctrlpts[1] + P.y * (y - T)) : (r.ctrlpts[0] = k[0] + P.x * y, r.ctrlpts[1] = k[1] + P.y * y); + } + S && this.findEndpoints(t); + } +}; +nt.storeAllpts = function(t) { + var e = t._private.rscratch; + if (e.edgeType === "multibezier" || e.edgeType === "bezier" || e.edgeType === "self" || e.edgeType === "compound") { + e.allpts = [], e.allpts.push(e.startX, e.startY); + for (var r = 0; r + 1 < e.ctrlpts.length; r += 2) + e.allpts.push(e.ctrlpts[r], e.ctrlpts[r + 1]), r + 3 < e.ctrlpts.length && e.allpts.push((e.ctrlpts[r] + e.ctrlpts[r + 2]) / 2, (e.ctrlpts[r + 1] + e.ctrlpts[r + 3]) / 2); + e.allpts.push(e.endX, e.endY); + var a, n; + e.ctrlpts.length / 2 % 2 === 0 ? (a = e.allpts.length / 2 - 1, e.midX = e.allpts[a], e.midY = e.allpts[a + 1]) : (a = e.allpts.length / 2 - 3, n = 0.5, e.midX = Ye(e.allpts[a], e.allpts[a + 2], e.allpts[a + 4], n), e.midY = Ye(e.allpts[a + 1], e.allpts[a + 3], e.allpts[a + 5], n)); + } else if (e.edgeType === "straight") + e.allpts = [e.startX, e.startY, e.endX, e.endY], e.midX = (e.startX + e.endX + e.arrowStartX + e.arrowEndX) / 4, e.midY = (e.startY + e.endY + e.arrowStartY + e.arrowEndY) / 4; + else if (e.edgeType === "segments") + if (e.allpts = [], e.allpts.push(e.startX, e.startY), e.allpts.push.apply(e.allpts, e.segpts), e.allpts.push(e.endX, e.endY), e.segpts.length % 4 === 0) { + var i = e.segpts.length / 2, s = i - 2; + e.midX = (e.segpts[s] + e.segpts[i]) / 2, e.midY = (e.segpts[s + 1] + e.segpts[i + 1]) / 2; + } else { + var o = e.segpts.length / 2 - 1; + e.midX = e.segpts[o], e.midY = e.segpts[o + 1]; + } +}; +nt.checkForInvalidEdgeWarning = function(t) { + var e = t[0]._private.rscratch; + e.nodesOverlap || ae(e.startX) && ae(e.startY) && ae(e.endX) && ae(e.endY) ? e.loggedErr = !1 : e.loggedErr || (e.loggedErr = !0, Ne("Edge `" + t.id() + "` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.")); +}; +nt.findEdgeControlPoints = function(t) { + var e = this; + if (!(!t || t.length === 0)) { + for (var r = this, a = r.cy, n = a.hasCompoundNodes(), i = { + map: new Lt(), + get: function(b) { + var x = this.map.get(b[0]); + return x != null ? x.get(b[1]) : null; + }, + set: function(b, x) { + var w = this.map.get(b[0]); + w == null && (w = new Lt(), this.map.set(b[0], w)), w.set(b[1], x); + } + }, s = [], o = [], l = 0; l < t.length; l++) { + var u = t[l], f = u._private, h = u.pstyle("curve-style").value; + if (!(u.removed() || !u.takesUpSpace())) { + if (h === "haystack") { + o.push(u); + continue; + } + var c = h === "unbundled-bezier" || h === "segments" || h === "straight" || h === "straight-triangle" || h === "taxi", v = h === "unbundled-bezier" || h === "bezier", d = f.source, g = f.target, p = d.poolIndex(), y = g.poolIndex(), E = [p, y].sort(), m = i.get(E); + m == null && (m = { + eles: [] + }, i.set(E, m), s.push(E)), m.eles.push(u), c && (m.hasUnbundled = !0), v && (m.hasBezier = !0); + } + } + for (var T = function(b) { + var x = s[b], w = i.get(x), D = void 0; + if (!w.hasUnbundled) { + var A = w.eles[0].parallelEdges().filter(function(we) { + return we.isBundledBezier(); + }); + li(w.eles), A.forEach(function(we) { + return w.eles.push(we); + }), w.eles.sort(function(we, H) { + return we.poolIndex() - H.poolIndex(); + }); + } + var L = w.eles[0], I = L.source(), O = L.target(); + if (I.poolIndex() > O.poolIndex()) { + var P = I; + I = O, O = P; + } + var R = w.srcPos = I.position(), M = w.tgtPos = O.position(), k = w.srcW = I.outerWidth(), B = w.srcH = I.outerHeight(), G = w.tgtW = O.outerWidth(), F = w.tgtH = O.outerHeight(), $ = w.srcShape = r.nodeShapes[e.getNodeShape(I)], U = w.tgtShape = r.nodeShapes[e.getNodeShape(O)]; + w.dirCounts = { + north: 0, + west: 0, + south: 0, + east: 0, + northwest: 0, + southwest: 0, + northeast: 0, + southeast: 0 + }; + for (var _ = 0; _ < w.eles.length; _++) { + var Y = w.eles[_], W = Y[0]._private.rscratch, z = Y.pstyle("curve-style").value, K = z === "unbundled-bezier" || z === "segments" || z === "taxi", j = !I.same(Y.source()); + if (!w.calculatedIntersection && I !== O && (w.hasBezier || w.hasUnbundled)) { + w.calculatedIntersection = !0; + var Q = $.intersectLine(R.x, R.y, k, B, M.x, M.y, 0), ee = w.srcIntn = Q, ne = U.intersectLine(M.x, M.y, G, F, R.x, R.y, 0), ce = w.tgtIntn = ne, te = w.intersectionPts = { + x1: Q[0], + x2: ne[0], + y1: Q[1], + y2: ne[1] + }, re = w.posPts = { + x1: R.x, + x2: M.x, + y1: R.y, + y2: M.y + }, ue = ne[1] - Q[1], le = ne[0] - Q[0], se = Math.sqrt(le * le + ue * ue), fe = w.vector = { + x: le, + y: ue + }, xe = w.vectorNorm = { + x: fe.x / se, + y: fe.y / se + }, Ee = { + x: -xe.y, + y: xe.x + }; + w.nodesOverlap = !ae(se) || U.checkPoint(Q[0], Q[1], 0, G, F, M.x, M.y) || $.checkPoint(ne[0], ne[1], 0, k, B, R.x, R.y), w.vectorNormInverse = Ee, D = { + nodesOverlap: w.nodesOverlap, + dirCounts: w.dirCounts, + calculatedIntersection: !0, + hasBezier: w.hasBezier, + hasUnbundled: w.hasUnbundled, + eles: w.eles, + srcPos: M, + tgtPos: R, + srcW: G, + srcH: F, + tgtW: k, + tgtH: B, + srcIntn: ce, + tgtIntn: ee, + srcShape: U, + tgtShape: $, + posPts: { + x1: re.x2, + y1: re.y2, + x2: re.x1, + y2: re.y1 + }, + intersectionPts: { + x1: te.x2, + y1: te.y2, + x2: te.x1, + y2: te.y1 + }, + vector: { + x: -fe.x, + y: -fe.y + }, + vectorNorm: { + x: -xe.x, + y: -xe.y + }, + vectorNormInverse: { + x: -Ee.x, + y: -Ee.y + } + }; + } + var ge = j ? D : w; + W.nodesOverlap = ge.nodesOverlap, W.srcIntn = ge.srcIntn, W.tgtIntn = ge.tgtIntn, n && (I.isParent() || I.isChild() || O.isParent() || O.isChild()) && (I.parents().anySame(O) || O.parents().anySame(I) || I.same(O) && I.isParent()) ? e.findCompoundLoopPoints(Y, ge, _, K) : I === O ? e.findLoopPoints(Y, ge, _, K) : z === "segments" ? e.findSegmentsPoints(Y, ge) : z === "taxi" ? e.findTaxiPoints(Y, ge) : z === "straight" || !K && w.eles.length % 2 === 1 && _ === Math.floor(w.eles.length / 2) ? e.findStraightEdgePoints(Y) : e.findBezierPoints(Y, ge, _, K, j), e.findEndpoints(Y), e.tryToCorrectInvalidPoints(Y, ge), e.checkForInvalidEdgeWarning(Y), e.storeAllpts(Y), e.storeEdgeProjections(Y), e.calculateArrowAngles(Y), e.recalculateEdgeLabelProjections(Y), e.calculateLabelAngles(Y); + } + }, C = 0; C < s.length; C++) + T(C); + this.findHaystackPoints(o); + } +}; +function ll(t) { + var e = []; + if (t != null) { + for (var r = 0; r < t.length; r += 2) { + var a = t[r], n = t[r + 1]; + e.push({ + x: a, + y: n + }); + } + return e; + } +} +nt.getSegmentPoints = function(t) { + var e = t[0]._private.rscratch, r = e.edgeType; + if (r === "segments") + return this.recalculateRenderedStyle(t), ll(e.segpts); +}; +nt.getControlPoints = function(t) { + var e = t[0]._private.rscratch, r = e.edgeType; + if (r === "bezier" || r === "multibezier" || r === "self" || r === "compound") + return this.recalculateRenderedStyle(t), ll(e.ctrlpts); +}; +nt.getEdgeMidpoint = function(t) { + var e = t[0]._private.rscratch; + return this.recalculateRenderedStyle(t), { + x: e.midX, + y: e.midY + }; +}; +var ya = {}; +ya.manualEndptToPx = function(t, e) { + var r = this, a = t.position(), n = t.outerWidth(), i = t.outerHeight(); + if (e.value.length === 2) { + var s = [e.pfValue[0], e.pfValue[1]]; + return e.units[0] === "%" && (s[0] = s[0] * n), e.units[1] === "%" && (s[1] = s[1] * i), s[0] += a.x, s[1] += a.y, s; + } else { + var o = e.pfValue[0]; + o = -Math.PI / 2 + o; + var l = 2 * Math.max(n, i), u = [a.x + Math.cos(o) * l, a.y + Math.sin(o) * l]; + return r.nodeShapes[this.getNodeShape(t)].intersectLine(a.x, a.y, n, i, u[0], u[1], 0); + } +}; +ya.findEndpoints = function(t) { + var e = this, r, a = t.source()[0], n = t.target()[0], i = a.position(), s = n.position(), o = t.pstyle("target-arrow-shape").value, l = t.pstyle("source-arrow-shape").value, u = t.pstyle("target-distance-from-node").pfValue, f = t.pstyle("source-distance-from-node").pfValue, h = t.pstyle("curve-style").value, c = t._private.rscratch, v = c.edgeType, d = h === "taxi", g = v === "self" || v === "compound", p = v === "bezier" || v === "multibezier" || g, y = v !== "bezier", E = v === "straight" || v === "segments", m = v === "segments", T = p || y || E, C = g || d, S = t.pstyle("source-endpoint"), b = C ? "outside-to-node" : S.value, x = t.pstyle("target-endpoint"), w = C ? "outside-to-node" : x.value; + c.srcManEndpt = S, c.tgtManEndpt = x; + var D, A, L, I; + if (p) { + var O = [c.ctrlpts[0], c.ctrlpts[1]], P = y ? [c.ctrlpts[c.ctrlpts.length - 2], c.ctrlpts[c.ctrlpts.length - 1]] : O; + D = P, A = O; + } else if (E) { + var R = m ? c.segpts.slice(0, 2) : [s.x, s.y], M = m ? c.segpts.slice(c.segpts.length - 2) : [i.x, i.y]; + D = M, A = R; + } + if (w === "inside-to-node") + r = [s.x, s.y]; + else if (x.units) + r = this.manualEndptToPx(n, x); + else if (w === "outside-to-line") + r = c.tgtIntn; + else if (w === "outside-to-node" || w === "outside-to-node-or-label" ? L = D : (w === "outside-to-line" || w === "outside-to-line-or-label") && (L = [i.x, i.y]), r = e.nodeShapes[this.getNodeShape(n)].intersectLine(s.x, s.y, n.outerWidth(), n.outerHeight(), L[0], L[1], 0), w === "outside-to-node-or-label" || w === "outside-to-line-or-label") { + var k = n._private.rscratch, B = k.labelWidth, G = k.labelHeight, F = k.labelX, $ = k.labelY, U = B / 2, _ = G / 2, Y = n.pstyle("text-valign").value; + Y === "top" ? $ -= _ : Y === "bottom" && ($ += _); + var W = n.pstyle("text-halign").value; + W === "left" ? F -= U : W === "right" && (F += U); + var z = aa(L[0], L[1], [F - U, $ - _, F + U, $ - _, F + U, $ + _, F - U, $ + _], s.x, s.y); + if (z.length > 0) { + var K = i, j = er(K, Er(r)), Q = er(K, Er(z)), ee = j; + if (Q < j && (r = z, ee = Q), z.length > 2) { + var ne = er(K, { + x: z[2], + y: z[3] + }); + ne < ee && (r = [z[2], z[3]]); + } + } + } + var ce = Da(r, D, e.arrowShapes[o].spacing(t) + u), te = Da(r, D, e.arrowShapes[o].gap(t) + u); + if (c.endX = te[0], c.endY = te[1], c.arrowEndX = ce[0], c.arrowEndY = ce[1], b === "inside-to-node") + r = [i.x, i.y]; + else if (S.units) + r = this.manualEndptToPx(a, S); + else if (b === "outside-to-line") + r = c.srcIntn; + else if (b === "outside-to-node" || b === "outside-to-node-or-label" ? I = A : (b === "outside-to-line" || b === "outside-to-line-or-label") && (I = [s.x, s.y]), r = e.nodeShapes[this.getNodeShape(a)].intersectLine(i.x, i.y, a.outerWidth(), a.outerHeight(), I[0], I[1], 0), b === "outside-to-node-or-label" || b === "outside-to-line-or-label") { + var re = a._private.rscratch, ue = re.labelWidth, le = re.labelHeight, se = re.labelX, fe = re.labelY, xe = ue / 2, Ee = le / 2, ge = a.pstyle("text-valign").value; + ge === "top" ? fe -= Ee : ge === "bottom" && (fe += Ee); + var we = a.pstyle("text-halign").value; + we === "left" ? se -= xe : we === "right" && (se += xe); + var H = aa(I[0], I[1], [se - xe, fe - Ee, se + xe, fe - Ee, se + xe, fe + Ee, se - xe, fe + Ee], i.x, i.y); + if (H.length > 0) { + var N = s, V = er(N, Er(r)), J = er(N, Er(H)), X = V; + if (J < V && (r = [H[0], H[1]], X = J), H.length > 2) { + var q = er(N, { + x: H[2], + y: H[3] + }); + q < X && (r = [H[2], H[3]]); + } + } + } + var he = Da(r, A, e.arrowShapes[l].spacing(t) + f), Z = Da(r, A, e.arrowShapes[l].gap(t) + f); + c.startX = Z[0], c.startY = Z[1], c.arrowStartX = he[0], c.arrowStartY = he[1], T && (!ae(c.startX) || !ae(c.startY) || !ae(c.endX) || !ae(c.endY) ? c.badLine = !0 : c.badLine = !1); +}; +ya.getSourceEndpoint = function(t) { + var e = t[0]._private.rscratch; + switch (this.recalculateRenderedStyle(t), e.edgeType) { + case "haystack": + return { + x: e.haystackPts[0], + y: e.haystackPts[1] + }; + default: + return { + x: e.arrowStartX, + y: e.arrowStartY + }; + } +}; +ya.getTargetEndpoint = function(t) { + var e = t[0]._private.rscratch; + switch (this.recalculateRenderedStyle(t), e.edgeType) { + case "haystack": + return { + x: e.haystackPts[2], + y: e.haystackPts[3] + }; + default: + return { + x: e.arrowEndX, + y: e.arrowEndY + }; + } +}; +var Ei = {}; +function Dy(t, e, r) { + for (var a = function(u, f, h, c) { + return Ye(u, f, h, c); + }, n = e._private, i = n.rstyle.bezierPts, s = 0; s < t.bezierProjPcts.length; s++) { + var o = t.bezierProjPcts[s]; + i.push({ + x: a(r[0], r[2], r[4], o), + y: a(r[1], r[3], r[5], o) + }); + } +} +Ei.storeEdgeProjections = function(t) { + var e = t._private, r = e.rscratch, a = r.edgeType; + if (e.rstyle.bezierPts = null, e.rstyle.linePts = null, e.rstyle.haystackPts = null, a === "multibezier" || a === "bezier" || a === "self" || a === "compound") { + e.rstyle.bezierPts = []; + for (var n = 0; n + 5 < r.allpts.length; n += 4) + Dy(this, t, r.allpts.slice(n, n + 6)); + } else if (a === "segments") + for (var i = e.rstyle.linePts = [], n = 0; n + 1 < r.allpts.length; n += 2) + i.push({ + x: r.allpts[n], + y: r.allpts[n + 1] + }); + else if (a === "haystack") { + var s = r.haystackPts; + e.rstyle.haystackPts = [{ + x: s[0], + y: s[1] + }, { + x: s[2], + y: s[3] + }]; + } + e.rstyle.arrowWidth = this.getArrowWidth(t.pstyle("width").pfValue, t.pstyle("arrow-scale").value) * this.arrowShapeWidth; +}; +Ei.recalculateEdgeProjections = function(t) { + this.findEdgeControlPoints(t); +}; +var Ot = {}; +Ot.recalculateNodeLabelProjection = function(t) { + var e = t.pstyle("label").strValue; + if (!Yt(e)) { + var r, a, n = t._private, i = t.width(), s = t.height(), o = t.padding(), l = t.position(), u = t.pstyle("text-halign").strValue, f = t.pstyle("text-valign").strValue, h = n.rscratch, c = n.rstyle; + switch (u) { + case "left": + r = l.x - i / 2 - o; + break; + case "right": + r = l.x + i / 2 + o; + break; + default: + r = l.x; + } + switch (f) { + case "top": + a = l.y - s / 2 - o; + break; + case "bottom": + a = l.y + s / 2 + o; + break; + default: + a = l.y; + } + h.labelX = r, h.labelY = a, c.labelX = r, c.labelY = a, this.calculateLabelAngles(t), this.applyLabelDimensions(t); + } +}; +var ul = function(e, r) { + var a = Math.atan(r / e); + return e === 0 && a < 0 && (a = a * -1), a; +}, fl = function(e, r) { + var a = r.x - e.x, n = r.y - e.y; + return ul(a, n); +}, Sy = function(e, r, a, n) { + var i = ra(0, n - 1e-3, 1), s = ra(0, n + 1e-3, 1), o = xr(e, r, a, i), l = xr(e, r, a, s); + return fl(o, l); +}; +Ot.recalculateEdgeLabelProjections = function(t) { + var e, r = t._private, a = r.rscratch, n = this, i = { + mid: t.pstyle("label").strValue, + source: t.pstyle("source-label").strValue, + target: t.pstyle("target-label").strValue + }; + if (i.mid || i.source || i.target) { + e = { + x: a.midX, + y: a.midY + }; + var s = function(h, c, v) { + $t(r.rscratch, h, c, v), $t(r.rstyle, h, c, v); + }; + s("labelX", null, e.x), s("labelY", null, e.y); + var o = ul(a.midDispX, a.midDispY); + s("labelAutoAngle", null, o); + var l = function f() { + if (f.cache) + return f.cache; + for (var h = [], c = 0; c + 5 < a.allpts.length; c += 4) { + var v = { + x: a.allpts[c], + y: a.allpts[c + 1] + }, d = { + x: a.allpts[c + 2], + y: a.allpts[c + 3] + }, g = { + x: a.allpts[c + 4], + y: a.allpts[c + 5] + }; + h.push({ + p0: v, + p1: d, + p2: g, + startDist: 0, + length: 0, + segments: [] + }); + } + var p = r.rstyle.bezierPts, y = n.bezierProjPcts.length; + function E(b, x, w, D, A) { + var L = nr(x, w), I = b.segments[b.segments.length - 1], O = { + p0: x, + p1: w, + t0: D, + t1: A, + startDist: I ? I.startDist + I.length : 0, + length: L + }; + b.segments.push(O), b.length += L; + } + for (var m = 0; m < h.length; m++) { + var T = h[m], C = h[m - 1]; + C && (T.startDist = C.startDist + C.length), E(T, T.p0, p[m * y], 0, n.bezierProjPcts[0]); + for (var S = 0; S < y - 1; S++) + E(T, p[m * y + S], p[m * y + S + 1], n.bezierProjPcts[S], n.bezierProjPcts[S + 1]); + E(T, p[m * y + y - 1], T.p2, n.bezierProjPcts[y - 1], 1); + } + return f.cache = h; + }, u = function(h) { + var c, v = h === "source"; + if (i[h]) { + var d = t.pstyle(h + "-text-offset").pfValue; + switch (a.edgeType) { + case "self": + case "compound": + case "bezier": + case "multibezier": { + for (var g = l(), p, y = 0, E = 0, m = 0; m < g.length; m++) { + for (var T = g[v ? m : g.length - 1 - m], C = 0; C < T.segments.length; C++) { + var S = T.segments[v ? C : T.segments.length - 1 - C], b = m === g.length - 1 && C === T.segments.length - 1; + if (y = E, E += S.length, E >= d || b) { + p = { + cp: T, + segment: S + }; + break; + } + } + if (p) + break; + } + var x = p.cp, w = p.segment, D = (d - y) / w.length, A = w.t1 - w.t0, L = v ? w.t0 + A * D : w.t1 - A * D; + L = ra(0, L, 1), e = xr(x.p0, x.p1, x.p2, L), c = Sy(x.p0, x.p1, x.p2, L); + break; + } + case "straight": + case "segments": + case "haystack": { + for (var I = 0, O, P, R, M, k = a.allpts.length, B = 0; B + 3 < k && (v ? (R = { + x: a.allpts[B], + y: a.allpts[B + 1] + }, M = { + x: a.allpts[B + 2], + y: a.allpts[B + 3] + }) : (R = { + x: a.allpts[k - 2 - B], + y: a.allpts[k - 1 - B] + }, M = { + x: a.allpts[k - 4 - B], + y: a.allpts[k - 3 - B] + }), O = nr(R, M), P = I, I += O, !(I >= d)); B += 2) + ; + var G = d - P, F = G / O; + F = ra(0, F, 1), e = $d(R, M, F), c = fl(R, M); + break; + } + } + s("labelX", h, e.x), s("labelY", h, e.y), s("labelAutoAngle", h, c); + } + }; + u("source"), u("target"), this.applyLabelDimensions(t); + } +}; +Ot.applyLabelDimensions = function(t) { + this.applyPrefixedLabelDimensions(t), t.isEdge() && (this.applyPrefixedLabelDimensions(t, "source"), this.applyPrefixedLabelDimensions(t, "target")); +}; +Ot.applyPrefixedLabelDimensions = function(t, e) { + var r = t._private, a = this.getLabelText(t, e), n = this.calculateLabelDimensions(t, a), i = t.pstyle("line-height").pfValue, s = t.pstyle("text-wrap").strValue, o = xt(r.rscratch, "labelWrapCachedLines", e) || [], l = s !== "wrap" ? 1 : Math.max(o.length, 1), u = n.height / l, f = u * i, h = n.width, c = n.height + (l - 1) * (i - 1) * u; + $t(r.rstyle, "labelWidth", e, h), $t(r.rscratch, "labelWidth", e, h), $t(r.rstyle, "labelHeight", e, c), $t(r.rscratch, "labelHeight", e, c), $t(r.rscratch, "labelLineHeight", e, f); +}; +Ot.getLabelText = function(t, e) { + var r = t._private, a = e ? e + "-" : "", n = t.pstyle(a + "label").strValue, i = t.pstyle("text-transform").value, s = function(G, F) { + return F ? ($t(r.rscratch, G, e, F), F) : xt(r.rscratch, G, e); + }; + if (!n) + return ""; + i == "none" || (i == "uppercase" ? n = n.toUpperCase() : i == "lowercase" && (n = n.toLowerCase())); + var o = t.pstyle("text-wrap").value; + if (o === "wrap") { + var l = s("labelKey"); + if (l != null && s("labelWrapKey") === l) + return s("labelWrapCachedText"); + for (var u = "​", f = n.split(` +`), h = t.pstyle("text-max-width").pfValue, c = t.pstyle("text-overflow-wrap").value, v = c === "anywhere", d = [], g = /[\s\u200b]+/, p = v ? "" : " ", y = 0; y < f.length; y++) { + var E = f[y], m = this.calculateLabelDimensions(t, E), T = m.width; + if (v) { + var C = E.split("").join(u); + E = C; + } + if (T > h) { + for (var S = E.split(g), b = "", x = 0; x < S.length; x++) { + var w = S[x], D = b.length === 0 ? w : b + p + w, A = this.calculateLabelDimensions(t, D), L = A.width; + L <= h ? b += w + p : (b && d.push(b), b = w + p); + } + b.match(/^[\s\u200b]+$/) || d.push(b); + } else + d.push(E); + } + s("labelWrapCachedLines", d), n = s("labelWrapCachedText", d.join(` +`)), s("labelWrapKey", l); + } else if (o === "ellipsis") { + var I = t.pstyle("text-max-width").pfValue, O = "", P = "…", R = !1; + if (this.calculateLabelDimensions(t, n).width < I) + return n; + for (var M = 0; M < n.length; M++) { + var k = this.calculateLabelDimensions(t, O + n[M] + P).width; + if (k > I) + break; + O += n[M], M === n.length - 1 && (R = !0); + } + return R || (O += P), O; + } + return n; +}; +Ot.getLabelJustification = function(t) { + var e = t.pstyle("text-justification").strValue, r = t.pstyle("text-halign").strValue; + if (e === "auto") + if (t.isNode()) + switch (r) { + case "left": + return "right"; + case "right": + return "left"; + default: + return "center"; + } + else + return "center"; + else + return e; +}; +Ot.calculateLabelDimensions = function(t, e) { + var r = this, a = ar(e, t._private.labelDimsKey), n = r.labelDimCache || (r.labelDimCache = []), i = n[a]; + if (i != null) + return i; + var s = 0, o = t.pstyle("font-style").strValue, l = t.pstyle("font-size").pfValue, u = t.pstyle("font-family").strValue, f = t.pstyle("font-weight").strValue, h = this.labelCalcCanvas, c = this.labelCalcCanvasContext; + if (!h) { + h = this.labelCalcCanvas = document.createElement("canvas"), c = this.labelCalcCanvasContext = h.getContext("2d"); + var v = h.style; + v.position = "absolute", v.left = "-9999px", v.top = "-9999px", v.zIndex = "-1", v.visibility = "hidden", v.pointerEvents = "none"; + } + c.font = "".concat(o, " ").concat(f, " ").concat(l, "px ").concat(u); + for (var d = 0, g = 0, p = e.split(` +`), y = 0; y < p.length; y++) { + var E = p[y], m = c.measureText(E), T = Math.ceil(m.width), C = l; + d = Math.max(T, d), g += C; + } + return d += s, g += s, n[a] = { + width: d, + height: g + }; +}; +Ot.calculateLabelAngle = function(t, e) { + var r = t._private, a = r.rscratch, n = t.isEdge(), i = e ? e + "-" : "", s = t.pstyle(i + "text-rotation"), o = s.strValue; + return o === "none" ? 0 : n && o === "autorotate" ? a.labelAutoAngle : o === "autorotate" ? 0 : s.pfValue; +}; +Ot.calculateLabelAngles = function(t) { + var e = this, r = t.isEdge(), a = t._private, n = a.rscratch; + n.labelAngle = e.calculateLabelAngle(t), r && (n.sourceLabelAngle = e.calculateLabelAngle(t, "source"), n.targetLabelAngle = e.calculateLabelAngle(t, "target")); +}; +var hl = {}, Rs = 28, ks = !1; +hl.getNodeShape = function(t) { + var e = this, r = t.pstyle("shape").value; + if (r === "cutrectangle" && (t.width() < Rs || t.height() < Rs)) + return ks || (Ne("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"), ks = !0), "rectangle"; + if (t.isParent()) + return r === "rectangle" || r === "roundrectangle" || r === "round-rectangle" || r === "cutrectangle" || r === "cut-rectangle" || r === "barrel" ? r : "rectangle"; + if (r === "polygon") { + var a = t.pstyle("shape-polygon-points").value; + return e.nodeShapes.makePolygon(a).name; + } + return r; +}; +var bn = {}; +bn.registerCalculationListeners = function() { + var t = this.cy, e = t.collection(), r = this, a = function(s) { + var o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + if (e.merge(s), o) + for (var l = 0; l < s.length; l++) { + var u = s[l], f = u._private, h = f.rstyle; + h.clean = !1, h.cleanConnected = !1; + } + }; + r.binder(t).on("bounds.* dirty.*", function(s) { + var o = s.target; + a(o); + }).on("style.* background.*", function(s) { + var o = s.target; + a(o, !1); + }); + var n = function(s) { + if (s) { + var o = r.onUpdateEleCalcsFns; + e.cleanStyle(); + for (var l = 0; l < e.length; l++) { + var u = e[l], f = u._private.rstyle; + u.isNode() && !f.cleanConnected && (a(u.connectedEdges()), f.cleanConnected = !0); + } + if (o) + for (var h = 0; h < o.length; h++) { + var c = o[h]; + c(s, e); + } + r.recalculateRenderedStyle(e), e = t.collection(); + } + }; + r.flushRenderedStyleQueue = function() { + n(!0); + }, r.beforeRender(n, r.beforeRenderPriorities.eleCalcs); +}; +bn.onUpdateEleCalcs = function(t) { + var e = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; + e.push(t); +}; +bn.recalculateRenderedStyle = function(t, e) { + var r = function(T) { + return T._private.rstyle.cleanConnected; + }, a = [], n = []; + if (!this.destroyed) { + e === void 0 && (e = !0); + for (var i = 0; i < t.length; i++) { + var s = t[i], o = s._private, l = o.rstyle; + s.isEdge() && (!r(s.source()) || !r(s.target())) && (l.clean = !1), !(e && l.clean || s.removed()) && s.pstyle("display").value !== "none" && (o.group === "nodes" ? n.push(s) : a.push(s), l.clean = !0); + } + for (var u = 0; u < n.length; u++) { + var f = n[u], h = f._private, c = h.rstyle, v = f.position(); + this.recalculateNodeLabelProjection(f), c.nodeX = v.x, c.nodeY = v.y, c.nodeW = f.pstyle("width").pfValue, c.nodeH = f.pstyle("height").pfValue; + } + this.recalculateEdgeProjections(a); + for (var d = 0; d < a.length; d++) { + var g = a[d], p = g._private, y = p.rstyle, E = p.rscratch; + y.srcX = E.arrowStartX, y.srcY = E.arrowStartY, y.tgtX = E.arrowEndX, y.tgtY = E.arrowEndY, y.midX = E.midX, y.midY = E.midY, y.labelAngle = E.labelAngle, y.sourceLabelAngle = E.sourceLabelAngle, y.targetLabelAngle = E.targetLabelAngle; + } + } +}; +var En = {}; +En.updateCachedGrabbedEles = function() { + var t = this.cachedZSortedEles; + if (t) { + t.drag = [], t.nondrag = []; + for (var e = [], r = 0; r < t.length; r++) { + var a = t[r], n = a._private.rscratch; + a.grabbed() && !a.isParent() ? e.push(a) : n.inDragLayer ? t.drag.push(a) : t.nondrag.push(a); + } + for (var r = 0; r < e.length; r++) { + var a = e[r]; + t.drag.push(a); + } + } +}; +En.invalidateCachedZSortedEles = function() { + this.cachedZSortedEles = null; +}; +En.getCachedZSortedEles = function(t) { + if (t || !this.cachedZSortedEles) { + var e = this.cy.mutableElements().toArray(); + e.sort(Qo), e.interactive = e.filter(function(r) { + return r.interactive(); + }), this.cachedZSortedEles = e, this.updateCachedGrabbedEles(); + } else + e = this.cachedZSortedEles; + return e; +}; +var vl = {}; +[fr, ja, nt, ya, Ei, Ot, hl, bn, En].forEach(function(t) { + de(vl, t); +}); +var cl = {}; +cl.getCachedImage = function(t, e, r) { + var a = this, n = a.imageCache = a.imageCache || {}, i = n[t]; + if (i) + return i.image.complete || i.image.addEventListener("load", r), i.image; + i = n[t] = n[t] || {}; + var s = i.image = new Image(); + s.addEventListener("load", r), s.addEventListener("error", function() { + s.error = !0; + }); + var o = "data:", l = t.substring(0, o.length).toLowerCase() === o; + return l || (e = e === "null" ? null : e, s.crossOrigin = e), s.src = t, s; +}; +var Br = {}; +Br.registerBinding = function(t, e, r, a) { + var n = Array.prototype.slice.apply(arguments, [1]), i = this.binder(t); + return i.on.apply(i, n); +}; +Br.binder = function(t) { + var e = this, r = e.cy.window(), a = t === r || t === r.document || t === r.document.body || Yc(t); + if (e.supportsPassiveEvents == null) { + var n = !1; + try { + var i = Object.defineProperty({}, "passive", { + get: function() { + return n = !0, !0; + } + }); + r.addEventListener("test", null, i); + } catch (o) { + } + e.supportsPassiveEvents = n; + } + var s = function(l, u, f) { + var h = Array.prototype.slice.call(arguments); + return a && e.supportsPassiveEvents && (h[2] = { + capture: f != null ? f : !1, + passive: !1, + once: !1 + }), e.bindings.push({ + target: t, + args: h + }), (t.addEventListener || t.on).apply(t, h), this; + }; + return { + on: s, + addEventListener: s, + addListener: s, + bind: s + }; +}; +Br.nodeIsDraggable = function(t) { + return t && t.isNode() && !t.locked() && t.grabbable(); +}; +Br.nodeIsGrabbable = function(t) { + return this.nodeIsDraggable(t) && t.interactive(); +}; +Br.load = function() { + var t = this, e = t.cy.window(), r = function(N) { + return N.selected(); + }, a = function(N, V, J, X) { + N == null && (N = t.cy); + for (var q = 0; q < V.length; q++) { + var he = V[q]; + N.emit({ + originalEvent: J, + type: he, + position: X + }); + } + }, n = function(N) { + return N.shiftKey || N.metaKey || N.ctrlKey; + }, i = function(N, V) { + var J = !0; + if (t.cy.hasCompoundNodes() && N && N.pannable()) + for (var X = 0; V && X < V.length; X++) { + var N = V[X]; + if (N.isNode() && N.isParent() && !N.pannable()) { + J = !1; + break; + } + } + else + J = !0; + return J; + }, s = function(N) { + N[0]._private.grabbed = !0; + }, o = function(N) { + N[0]._private.grabbed = !1; + }, l = function(N) { + N[0]._private.rscratch.inDragLayer = !0; + }, u = function(N) { + N[0]._private.rscratch.inDragLayer = !1; + }, f = function(N) { + N[0]._private.rscratch.isGrabTarget = !0; + }, h = function(N) { + N[0]._private.rscratch.isGrabTarget = !1; + }, c = function(N, V) { + var J = V.addToList, X = J.has(N); + !X && N.grabbable() && !N.locked() && (J.merge(N), s(N)); + }, v = function(N, V) { + if (N.cy().hasCompoundNodes() && !(V.inDragLayer == null && V.addToList == null)) { + var J = N.descendants(); + V.inDragLayer && (J.forEach(l), J.connectedEdges().forEach(l)), V.addToList && c(J, V); + } + }, d = function(N, V) { + V = V || {}; + var J = N.cy().hasCompoundNodes(); + V.inDragLayer && (N.forEach(l), N.neighborhood().stdFilter(function(X) { + return !J || X.isEdge(); + }).forEach(l)), V.addToList && N.forEach(function(X) { + c(X, V); + }), v(N, V), y(N, { + inDragLayer: V.inDragLayer + }), t.updateCachedGrabbedEles(); + }, g = d, p = function(N) { + N && (t.getCachedZSortedEles().forEach(function(V) { + o(V), u(V), h(V); + }), t.updateCachedGrabbedEles()); + }, y = function(N, V) { + if (!(V.inDragLayer == null && V.addToList == null) && N.cy().hasCompoundNodes()) { + var J = N.ancestors().orphans(); + if (!J.same(N)) { + var X = J.descendants().spawnSelf().merge(J).unmerge(N).unmerge(N.descendants()), q = X.connectedEdges(); + V.inDragLayer && (q.forEach(l), X.forEach(l)), V.addToList && X.forEach(function(he) { + c(he, V); + }); + } + } + }, E = function() { + document.activeElement != null && document.activeElement.blur != null && document.activeElement.blur(); + }, m = typeof MutationObserver != "undefined", T = typeof ResizeObserver != "undefined"; + m ? (t.removeObserver = new MutationObserver(function(H) { + for (var N = 0; N < H.length; N++) { + var V = H[N], J = V.removedNodes; + if (J) + for (var X = 0; X < J.length; X++) { + var q = J[X]; + if (q === t.container) { + t.destroy(); + break; + } + } + } + }), t.container.parentNode && t.removeObserver.observe(t.container.parentNode, { + childList: !0 + })) : t.registerBinding(t.container, "DOMNodeRemoved", function(H) { + t.destroy(); + }); + var C = on.default(function() { + t.cy.resize(); + }, 100); + m && (t.styleObserver = new MutationObserver(C), t.styleObserver.observe(t.container, { + attributes: !0 + })), t.registerBinding(e, "resize", C), T && (t.resizeObserver = new ResizeObserver(C), t.resizeObserver.observe(t.container)); + var S = function(N, V) { + for (; N != null; ) + V(N), N = N.parentNode; + }, b = function() { + t.invalidateContainerClientCoordsCache(); + }; + S(t.container, function(H) { + t.registerBinding(H, "transitionend", b), t.registerBinding(H, "animationend", b), t.registerBinding(H, "scroll", b); + }), t.registerBinding(t.container, "contextmenu", function(H) { + H.preventDefault(); + }); + var x = function() { + return t.selection[4] !== 0; + }, w = function(N) { + for (var V = t.findContainerClientCoords(), J = V[0], X = V[1], q = V[2], he = V[3], Z = N.touches ? N.touches : [N], oe = !1, me = 0; me < Z.length; me++) { + var Se = Z[me]; + if (J <= Se.clientX && Se.clientX <= J + q && X <= Se.clientY && Se.clientY <= X + he) { + oe = !0; + break; + } + } + if (!oe) + return !1; + for (var pe = t.container, Te = N.target, ye = Te.parentNode, be = !1; ye; ) { + if (ye === pe) { + be = !0; + break; + } + ye = ye.parentNode; + } + return !!be; + }; + t.registerBinding(t.container, "mousedown", function(N) { + if (w(N)) { + N.preventDefault(), E(), t.hoverData.capture = !0, t.hoverData.which = N.which; + var V = t.cy, J = [N.clientX, N.clientY], X = t.projectIntoViewport(J[0], J[1]), q = t.selection, he = t.findNearestElements(X[0], X[1], !0, !1), Z = he[0], oe = t.dragData.possibleDragElements; + t.hoverData.mdownPos = X, t.hoverData.mdownGPos = J; + var me = function() { + t.hoverData.tapholdCancelled = !1, clearTimeout(t.hoverData.tapholdTimeout), t.hoverData.tapholdTimeout = setTimeout(function() { + if (!t.hoverData.tapholdCancelled) { + var Fe = t.hoverData.down; + Fe ? Fe.emit({ + originalEvent: N, + type: "taphold", + position: { + x: X[0], + y: X[1] + } + }) : V.emit({ + originalEvent: N, + type: "taphold", + position: { + x: X[0], + y: X[1] + } + }); + } + }, t.tapholdDuration); + }; + if (N.which == 3) { + t.hoverData.cxtStarted = !0; + var Se = { + originalEvent: N, + type: "cxttapstart", + position: { + x: X[0], + y: X[1] + } + }; + Z ? (Z.activate(), Z.emit(Se), t.hoverData.down = Z) : V.emit(Se), t.hoverData.downTime = (/* @__PURE__ */ new Date()).getTime(), t.hoverData.cxtDragged = !1; + } else if (N.which == 1) { + Z && Z.activate(); + { + if (Z != null && t.nodeIsGrabbable(Z)) { + var pe = function(Fe) { + return { + originalEvent: N, + type: Fe, + position: { + x: X[0], + y: X[1] + } + }; + }, Te = function(Fe) { + Fe.emit(pe("grab")); + }; + if (f(Z), !Z.selected()) + oe = t.dragData.possibleDragElements = V.collection(), g(Z, { + addToList: oe + }), Z.emit(pe("grabon")).emit(pe("grab")); + else { + oe = t.dragData.possibleDragElements = V.collection(); + var ye = V.$(function(be) { + return be.isNode() && be.selected() && t.nodeIsGrabbable(be); + }); + d(ye, { + addToList: oe + }), Z.emit(pe("grabon")), ye.forEach(Te); + } + t.redrawHint("eles", !0), t.redrawHint("drag", !0); + } + t.hoverData.down = Z, t.hoverData.downs = he, t.hoverData.downTime = (/* @__PURE__ */ new Date()).getTime(); + } + a(Z, ["mousedown", "tapstart", "vmousedown"], N, { + x: X[0], + y: X[1] + }), Z == null ? (q[4] = 1, t.data.bgActivePosistion = { + x: X[0], + y: X[1] + }, t.redrawHint("select", !0), t.redraw()) : Z.pannable() && (q[4] = 1), me(); + } + q[0] = q[2] = X[0], q[1] = q[3] = X[1]; + } + }, !1), t.registerBinding(e, "mousemove", function(N) { + var V = t.hoverData.capture; + if (!(!V && !w(N))) { + var J = !1, X = t.cy, q = X.zoom(), he = [N.clientX, N.clientY], Z = t.projectIntoViewport(he[0], he[1]), oe = t.hoverData.mdownPos, me = t.hoverData.mdownGPos, Se = t.selection, pe = null; + !t.hoverData.draggingEles && !t.hoverData.dragging && !t.hoverData.selecting && (pe = t.findNearestElement(Z[0], Z[1], !0, !1)); + var Te = t.hoverData.last, ye = t.hoverData.down, be = [Z[0] - Se[2], Z[1] - Se[3]], Fe = t.dragData.possibleDragElements, Xe; + if (me) { + var pt = he[0] - me[0], yt = pt * pt, We = he[1] - me[1], ct = We * We, it = yt + ct; + t.hoverData.isOverThresholdDrag = Xe = it >= t.desktopTapThreshold2; + } + var It = n(N); + Xe && (t.hoverData.tapholdCancelled = !0); + var Ft = function() { + var Dt = t.hoverData.dragDelta = t.hoverData.dragDelta || []; + Dt.length === 0 ? (Dt.push(be[0]), Dt.push(be[1])) : (Dt[0] += be[0], Dt[1] += be[1]); + }; + J = !0, a(pe, ["mousemove", "vmousemove", "tapdrag"], N, { + x: Z[0], + y: Z[1] + }); + var vr = function() { + t.data.bgActivePosistion = void 0, t.hoverData.selecting || X.emit({ + originalEvent: N, + type: "boxstart", + position: { + x: Z[0], + y: Z[1] + } + }), Se[4] = 1, t.hoverData.selecting = !0, t.redrawHint("select", !0), t.redraw(); + }; + if (t.hoverData.which === 3) { + if (Xe) { + var Jt = { + originalEvent: N, + type: "cxtdrag", + position: { + x: Z[0], + y: Z[1] + } + }; + ye ? ye.emit(Jt) : X.emit(Jt), t.hoverData.cxtDragged = !0, (!t.hoverData.cxtOver || pe !== t.hoverData.cxtOver) && (t.hoverData.cxtOver && t.hoverData.cxtOver.emit({ + originalEvent: N, + type: "cxtdragout", + position: { + x: Z[0], + y: Z[1] + } + }), t.hoverData.cxtOver = pe, pe && pe.emit({ + originalEvent: N, + type: "cxtdragover", + position: { + x: Z[0], + y: Z[1] + } + })); + } + } else if (t.hoverData.dragging) { + if (J = !0, X.panningEnabled() && X.userPanningEnabled()) { + var cr; + if (t.hoverData.justStartedPan) { + var Ea = t.hoverData.mdownPos; + cr = { + x: (Z[0] - Ea[0]) * q, + y: (Z[1] - Ea[1]) * q + }, t.hoverData.justStartedPan = !1; + } else + cr = { + x: be[0] * q, + y: be[1] * q + }; + X.panBy(cr), X.emit("dragpan"), t.hoverData.dragged = !0; + } + Z = t.projectIntoViewport(N.clientX, N.clientY); + } else if (Se[4] == 1 && (ye == null || ye.pannable())) { + if (Xe) { + if (!t.hoverData.dragging && X.boxSelectionEnabled() && (It || !X.panningEnabled() || !X.userPanningEnabled())) + vr(); + else if (!t.hoverData.selecting && X.panningEnabled() && X.userPanningEnabled()) { + var jt = i(ye, t.hoverData.downs); + jt && (t.hoverData.dragging = !0, t.hoverData.justStartedPan = !0, Se[4] = 0, t.data.bgActivePosistion = Er(oe), t.redrawHint("select", !0), t.redraw()); + } + ye && ye.pannable() && ye.active() && ye.unactivate(); + } + } else { + if (ye && ye.pannable() && ye.active() && ye.unactivate(), (!ye || !ye.grabbed()) && pe != Te && (Te && a(Te, ["mouseout", "tapdragout"], N, { + x: Z[0], + y: Z[1] + }), pe && a(pe, ["mouseover", "tapdragover"], N, { + x: Z[0], + y: Z[1] + }), t.hoverData.last = pe), ye) + if (Xe) { + if (X.boxSelectionEnabled() && It) + ye && ye.grabbed() && (p(Fe), ye.emit("freeon"), Fe.emit("free"), t.dragData.didDrag && (ye.emit("dragfreeon"), Fe.emit("dragfree"))), vr(); + else if (ye && ye.grabbed() && t.nodeIsDraggable(ye)) { + var ot = !t.dragData.didDrag; + ot && t.redrawHint("eles", !0), t.dragData.didDrag = !0, t.hoverData.draggingEles || d(Fe, { + inDragLayer: !0 + }); + var je = { + x: 0, + y: 0 + }; + if (ae(be[0]) && ae(be[1]) && (je.x += be[0], je.y += be[1], ot)) { + var lt = t.hoverData.dragDelta; + lt && ae(lt[0]) && ae(lt[1]) && (je.x += lt[0], je.y += lt[1]); + } + t.hoverData.draggingEles = !0, Fe.silentShift(je).emit("position drag"), t.redrawHint("drag", !0), t.redraw(); + } + } else + Ft(); + J = !0; + } + if (Se[2] = Z[0], Se[3] = Z[1], J) + return N.stopPropagation && N.stopPropagation(), N.preventDefault && N.preventDefault(), !1; + } + }, !1); + var D, A, L; + t.registerBinding(e, "mouseup", function(N) { + var V = t.hoverData.capture; + if (V) { + t.hoverData.capture = !1; + var J = t.cy, X = t.projectIntoViewport(N.clientX, N.clientY), q = t.selection, he = t.findNearestElement(X[0], X[1], !0, !1), Z = t.dragData.possibleDragElements, oe = t.hoverData.down, me = n(N); + if (t.data.bgActivePosistion && (t.redrawHint("select", !0), t.redraw()), t.hoverData.tapholdCancelled = !0, t.data.bgActivePosistion = void 0, oe && oe.unactivate(), t.hoverData.which === 3) { + var Se = { + originalEvent: N, + type: "cxttapend", + position: { + x: X[0], + y: X[1] + } + }; + if (oe ? oe.emit(Se) : J.emit(Se), !t.hoverData.cxtDragged) { + var pe = { + originalEvent: N, + type: "cxttap", + position: { + x: X[0], + y: X[1] + } + }; + oe ? oe.emit(pe) : J.emit(pe); + } + t.hoverData.cxtDragged = !1, t.hoverData.which = null; + } else if (t.hoverData.which === 1) { + if (a(he, ["mouseup", "tapend", "vmouseup"], N, { + x: X[0], + y: X[1] + }), !t.dragData.didDrag && // didn't move a node around + !t.hoverData.dragged && // didn't pan + !t.hoverData.selecting && // not box selection + !t.hoverData.isOverThresholdDrag && (a(oe, ["click", "tap", "vclick"], N, { + x: X[0], + y: X[1] + }), A = !1, N.timeStamp - L <= J.multiClickDebounceTime() ? (D && clearTimeout(D), A = !0, L = null, a(oe, ["dblclick", "dbltap", "vdblclick"], N, { + x: X[0], + y: X[1] + })) : (D = setTimeout(function() { + A || a(oe, ["oneclick", "onetap", "voneclick"], N, { + x: X[0], + y: X[1] + }); + }, J.multiClickDebounceTime()), L = N.timeStamp)), oe == null && !t.dragData.didDrag && !t.hoverData.selecting && !t.hoverData.dragged && !n(N) && (J.$(r).unselect(["tapunselect"]), Z.length > 0 && t.redrawHint("eles", !0), t.dragData.possibleDragElements = Z = J.collection()), he == oe && !t.dragData.didDrag && !t.hoverData.selecting && he != null && he._private.selectable && (t.hoverData.dragging || (J.selectionType() === "additive" || me ? he.selected() ? he.unselect(["tapunselect"]) : he.select(["tapselect"]) : me || (J.$(r).unmerge(he).unselect(["tapunselect"]), he.select(["tapselect"]))), t.redrawHint("eles", !0)), t.hoverData.selecting) { + var Te = J.collection(t.getAllInBox(q[0], q[1], q[2], q[3])); + t.redrawHint("select", !0), Te.length > 0 && t.redrawHint("eles", !0), J.emit({ + type: "boxend", + originalEvent: N, + position: { + x: X[0], + y: X[1] + } + }); + var ye = function(Xe) { + return Xe.selectable() && !Xe.selected(); + }; + J.selectionType() === "additive" || me || J.$(r).unmerge(Te).unselect(), Te.emit("box").stdFilter(ye).select().emit("boxselect"), t.redraw(); + } + if (t.hoverData.dragging && (t.hoverData.dragging = !1, t.redrawHint("select", !0), t.redrawHint("eles", !0), t.redraw()), !q[4]) { + t.redrawHint("drag", !0), t.redrawHint("eles", !0); + var be = oe && oe.grabbed(); + p(Z), be && (oe.emit("freeon"), Z.emit("free"), t.dragData.didDrag && (oe.emit("dragfreeon"), Z.emit("dragfree"))); + } + } + q[4] = 0, t.hoverData.down = null, t.hoverData.cxtStarted = !1, t.hoverData.draggingEles = !1, t.hoverData.selecting = !1, t.hoverData.isOverThresholdDrag = !1, t.dragData.didDrag = !1, t.hoverData.dragged = !1, t.hoverData.dragDelta = [], t.hoverData.mdownPos = null, t.hoverData.mdownGPos = null; + } + }, !1); + var I = function(N) { + if (!t.scrollingPage) { + var V = t.cy, J = V.zoom(), X = V.pan(), q = t.projectIntoViewport(N.clientX, N.clientY), he = [q[0] * J + X.x, q[1] * J + X.y]; + if (t.hoverData.draggingEles || t.hoverData.dragging || t.hoverData.cxtStarted || x()) { + N.preventDefault(); + return; + } + if (V.panningEnabled() && V.userPanningEnabled() && V.zoomingEnabled() && V.userZoomingEnabled()) { + N.preventDefault(), t.data.wheelZooming = !0, clearTimeout(t.data.wheelTimeout), t.data.wheelTimeout = setTimeout(function() { + t.data.wheelZooming = !1, t.redrawHint("eles", !0), t.redraw(); + }, 150); + var Z; + N.deltaY != null ? Z = N.deltaY / -250 : N.wheelDeltaY != null ? Z = N.wheelDeltaY / 1e3 : Z = N.wheelDelta / 1e3, Z = Z * t.wheelSensitivity; + var oe = N.deltaMode === 1; + oe && (Z *= 33); + var me = V.zoom() * Math.pow(10, Z); + N.type === "gesturechange" && (me = t.gestureStartZoom * N.scale), V.zoom({ + level: me, + renderedPosition: { + x: he[0], + y: he[1] + } + }), V.emit(N.type === "gesturechange" ? "pinchzoom" : "scrollzoom"); + } + } + }; + t.registerBinding(t.container, "wheel", I, !0), t.registerBinding(e, "scroll", function(N) { + t.scrollingPage = !0, clearTimeout(t.scrollingPageTimeout), t.scrollingPageTimeout = setTimeout(function() { + t.scrollingPage = !1; + }, 250); + }, !0), t.registerBinding(t.container, "gesturestart", function(N) { + t.gestureStartZoom = t.cy.zoom(), t.hasTouchStarted || N.preventDefault(); + }, !0), t.registerBinding(t.container, "gesturechange", function(H) { + t.hasTouchStarted || I(H); + }, !0), t.registerBinding(t.container, "mouseout", function(N) { + var V = t.projectIntoViewport(N.clientX, N.clientY); + t.cy.emit({ + originalEvent: N, + type: "mouseout", + position: { + x: V[0], + y: V[1] + } + }); + }, !1), t.registerBinding(t.container, "mouseover", function(N) { + var V = t.projectIntoViewport(N.clientX, N.clientY); + t.cy.emit({ + originalEvent: N, + type: "mouseover", + position: { + x: V[0], + y: V[1] + } + }); + }, !1); + var O, P, R, M, k, B, G, F, $, U, _, Y, W, z = function(N, V, J, X) { + return Math.sqrt((J - N) * (J - N) + (X - V) * (X - V)); + }, K = function(N, V, J, X) { + return (J - N) * (J - N) + (X - V) * (X - V); + }, j; + t.registerBinding(t.container, "touchstart", j = function(N) { + if (t.hasTouchStarted = !0, !!w(N)) { + E(), t.touchData.capture = !0, t.data.bgActivePosistion = void 0; + var V = t.cy, J = t.touchData.now, X = t.touchData.earlier; + if (N.touches[0]) { + var q = t.projectIntoViewport(N.touches[0].clientX, N.touches[0].clientY); + J[0] = q[0], J[1] = q[1]; + } + if (N.touches[1]) { + var q = t.projectIntoViewport(N.touches[1].clientX, N.touches[1].clientY); + J[2] = q[0], J[3] = q[1]; + } + if (N.touches[2]) { + var q = t.projectIntoViewport(N.touches[2].clientX, N.touches[2].clientY); + J[4] = q[0], J[5] = q[1]; + } + if (N.touches[1]) { + t.touchData.singleTouchMoved = !0, p(t.dragData.touchDragEles); + var he = t.findContainerClientCoords(); + $ = he[0], U = he[1], _ = he[2], Y = he[3], O = N.touches[0].clientX - $, P = N.touches[0].clientY - U, R = N.touches[1].clientX - $, M = N.touches[1].clientY - U, W = 0 <= O && O <= _ && 0 <= R && R <= _ && 0 <= P && P <= Y && 0 <= M && M <= Y; + var Z = V.pan(), oe = V.zoom(); + k = z(O, P, R, M), B = K(O, P, R, M), G = [(O + R) / 2, (P + M) / 2], F = [(G[0] - Z.x) / oe, (G[1] - Z.y) / oe]; + var me = 200, Se = me * me; + if (B < Se && !N.touches[2]) { + var pe = t.findNearestElement(J[0], J[1], !0, !0), Te = t.findNearestElement(J[2], J[3], !0, !0); + pe && pe.isNode() ? (pe.activate().emit({ + originalEvent: N, + type: "cxttapstart", + position: { + x: J[0], + y: J[1] + } + }), t.touchData.start = pe) : Te && Te.isNode() ? (Te.activate().emit({ + originalEvent: N, + type: "cxttapstart", + position: { + x: J[0], + y: J[1] + } + }), t.touchData.start = Te) : V.emit({ + originalEvent: N, + type: "cxttapstart", + position: { + x: J[0], + y: J[1] + } + }), t.touchData.start && (t.touchData.start._private.grabbed = !1), t.touchData.cxt = !0, t.touchData.cxtDragged = !1, t.data.bgActivePosistion = void 0, t.redraw(); + return; + } + } + if (N.touches[2]) + V.boxSelectionEnabled() && N.preventDefault(); + else if (!N.touches[1]) { + if (N.touches[0]) { + var ye = t.findNearestElements(J[0], J[1], !0, !0), be = ye[0]; + if (be != null && (be.activate(), t.touchData.start = be, t.touchData.starts = ye, t.nodeIsGrabbable(be))) { + var Fe = t.dragData.touchDragEles = V.collection(), Xe = null; + t.redrawHint("eles", !0), t.redrawHint("drag", !0), be.selected() ? (Xe = V.$(function(it) { + return it.selected() && t.nodeIsGrabbable(it); + }), d(Xe, { + addToList: Fe + })) : g(be, { + addToList: Fe + }), f(be); + var pt = function(It) { + return { + originalEvent: N, + type: It, + position: { + x: J[0], + y: J[1] + } + }; + }; + be.emit(pt("grabon")), Xe ? Xe.forEach(function(it) { + it.emit(pt("grab")); + }) : be.emit(pt("grab")); + } + a(be, ["touchstart", "tapstart", "vmousedown"], N, { + x: J[0], + y: J[1] + }), be == null && (t.data.bgActivePosistion = { + x: q[0], + y: q[1] + }, t.redrawHint("select", !0), t.redraw()), t.touchData.singleTouchMoved = !1, t.touchData.singleTouchStartTime = +/* @__PURE__ */ new Date(), clearTimeout(t.touchData.tapholdTimeout), t.touchData.tapholdTimeout = setTimeout(function() { + t.touchData.singleTouchMoved === !1 && !t.pinching && !t.touchData.selecting && a(t.touchData.start, ["taphold"], N, { + x: J[0], + y: J[1] + }); + }, t.tapholdDuration); + } + } + if (N.touches.length >= 1) { + for (var yt = t.touchData.startPosition = [null, null, null, null, null, null], We = 0; We < J.length; We++) + yt[We] = X[We] = J[We]; + var ct = N.touches[0]; + t.touchData.startGPosition = [ct.clientX, ct.clientY]; + } + } + }, !1); + var Q; + t.registerBinding(window, "touchmove", Q = function(N) { + var V = t.touchData.capture; + if (!(!V && !w(N))) { + var J = t.selection, X = t.cy, q = t.touchData.now, he = t.touchData.earlier, Z = X.zoom(); + if (N.touches[0]) { + var oe = t.projectIntoViewport(N.touches[0].clientX, N.touches[0].clientY); + q[0] = oe[0], q[1] = oe[1]; + } + if (N.touches[1]) { + var oe = t.projectIntoViewport(N.touches[1].clientX, N.touches[1].clientY); + q[2] = oe[0], q[3] = oe[1]; + } + if (N.touches[2]) { + var oe = t.projectIntoViewport(N.touches[2].clientX, N.touches[2].clientY); + q[4] = oe[0], q[5] = oe[1]; + } + var me = t.touchData.startGPosition, Se; + if (V && N.touches[0] && me) { + for (var pe = [], Te = 0; Te < q.length; Te++) + pe[Te] = q[Te] - he[Te]; + var ye = N.touches[0].clientX - me[0], be = ye * ye, Fe = N.touches[0].clientY - me[1], Xe = Fe * Fe, pt = be + Xe; + Se = pt >= t.touchTapThreshold2; + } + if (V && t.touchData.cxt) { + N.preventDefault(); + var yt = N.touches[0].clientX - $, We = N.touches[0].clientY - U, ct = N.touches[1].clientX - $, it = N.touches[1].clientY - U, It = K(yt, We, ct, it), Ft = It / B, vr = 150, Jt = vr * vr, cr = 1.5, Ea = cr * cr; + if (Ft >= Ea || It >= Jt) { + t.touchData.cxt = !1, t.data.bgActivePosistion = void 0, t.redrawHint("select", !0); + var jt = { + originalEvent: N, + type: "cxttapend", + position: { + x: q[0], + y: q[1] + } + }; + t.touchData.start ? (t.touchData.start.unactivate().emit(jt), t.touchData.start = null) : X.emit(jt); + } + } + if (V && t.touchData.cxt) { + var jt = { + originalEvent: N, + type: "cxtdrag", + position: { + x: q[0], + y: q[1] + } + }; + t.data.bgActivePosistion = void 0, t.redrawHint("select", !0), t.touchData.start ? t.touchData.start.emit(jt) : X.emit(jt), t.touchData.start && (t.touchData.start._private.grabbed = !1), t.touchData.cxtDragged = !0; + var ot = t.findNearestElement(q[0], q[1], !0, !0); + (!t.touchData.cxtOver || ot !== t.touchData.cxtOver) && (t.touchData.cxtOver && t.touchData.cxtOver.emit({ + originalEvent: N, + type: "cxtdragout", + position: { + x: q[0], + y: q[1] + } + }), t.touchData.cxtOver = ot, ot && ot.emit({ + originalEvent: N, + type: "cxtdragover", + position: { + x: q[0], + y: q[1] + } + })); + } else if (V && N.touches[2] && X.boxSelectionEnabled()) + N.preventDefault(), t.data.bgActivePosistion = void 0, this.lastThreeTouch = +/* @__PURE__ */ new Date(), t.touchData.selecting || X.emit({ + originalEvent: N, + type: "boxstart", + position: { + x: q[0], + y: q[1] + } + }), t.touchData.selecting = !0, t.touchData.didSelect = !0, J[4] = 1, !J || J.length === 0 || J[0] === void 0 ? (J[0] = (q[0] + q[2] + q[4]) / 3, J[1] = (q[1] + q[3] + q[5]) / 3, J[2] = (q[0] + q[2] + q[4]) / 3 + 1, J[3] = (q[1] + q[3] + q[5]) / 3 + 1) : (J[2] = (q[0] + q[2] + q[4]) / 3, J[3] = (q[1] + q[3] + q[5]) / 3), t.redrawHint("select", !0), t.redraw(); + else if (V && N.touches[1] && !t.touchData.didSelect && X.zoomingEnabled() && X.panningEnabled() && X.userZoomingEnabled() && X.userPanningEnabled()) { + N.preventDefault(), t.data.bgActivePosistion = void 0, t.redrawHint("select", !0); + var je = t.dragData.touchDragEles; + if (je) { + t.redrawHint("drag", !0); + for (var lt = 0; lt < je.length; lt++) { + var wa = je[lt]._private; + wa.grabbed = !1, wa.rscratch.inDragLayer = !1; + } + } + var Dt = t.touchData.start, yt = N.touches[0].clientX - $, We = N.touches[0].clientY - U, ct = N.touches[1].clientX - $, it = N.touches[1].clientY - U, Ti = z(yt, We, ct, it), kl = Ti / k; + if (W) { + var Pl = yt - O, Bl = We - P, Fl = ct - R, Gl = it - M, zl = (Pl + Fl) / 2, $l = (Bl + Gl) / 2, zr = X.zoom(), wn = zr * kl, xa = X.pan(), Ci = F[0] * zr + xa.x, Di = F[1] * zr + xa.y, Vl = { + x: -wn / zr * (Ci - xa.x - zl) + Ci, + y: -wn / zr * (Di - xa.y - $l) + Di + }; + if (Dt && Dt.active()) { + var je = t.dragData.touchDragEles; + p(je), t.redrawHint("drag", !0), t.redrawHint("eles", !0), Dt.unactivate().emit("freeon"), je.emit("free"), t.dragData.didDrag && (Dt.emit("dragfreeon"), je.emit("dragfree")); + } + X.viewport({ + zoom: wn, + pan: Vl, + cancelOnFailedZoom: !0 + }), X.emit("pinchzoom"), k = Ti, O = yt, P = We, R = ct, M = it, t.pinching = !0; + } + if (N.touches[0]) { + var oe = t.projectIntoViewport(N.touches[0].clientX, N.touches[0].clientY); + q[0] = oe[0], q[1] = oe[1]; + } + if (N.touches[1]) { + var oe = t.projectIntoViewport(N.touches[1].clientX, N.touches[1].clientY); + q[2] = oe[0], q[3] = oe[1]; + } + if (N.touches[2]) { + var oe = t.projectIntoViewport(N.touches[2].clientX, N.touches[2].clientY); + q[4] = oe[0], q[5] = oe[1]; + } + } else if (N.touches[0] && !t.touchData.didSelect) { + var mt = t.touchData.start, xn = t.touchData.last, ot; + if (!t.hoverData.draggingEles && !t.swipePanning && (ot = t.findNearestElement(q[0], q[1], !0, !0)), V && mt != null && N.preventDefault(), V && mt != null && t.nodeIsDraggable(mt)) + if (Se) { + var je = t.dragData.touchDragEles, Si = !t.dragData.didDrag; + Si && d(je, { + inDragLayer: !0 + }), t.dragData.didDrag = !0; + var $r = { + x: 0, + y: 0 + }; + if (ae(pe[0]) && ae(pe[1]) && ($r.x += pe[0], $r.y += pe[1], Si)) { + t.redrawHint("eles", !0); + var bt = t.touchData.dragDelta; + bt && ae(bt[0]) && ae(bt[1]) && ($r.x += bt[0], $r.y += bt[1]); + } + t.hoverData.draggingEles = !0, je.silentShift($r).emit("position drag"), t.redrawHint("drag", !0), t.touchData.startPosition[0] == he[0] && t.touchData.startPosition[1] == he[1] && t.redrawHint("eles", !0), t.redraw(); + } else { + var bt = t.touchData.dragDelta = t.touchData.dragDelta || []; + bt.length === 0 ? (bt.push(pe[0]), bt.push(pe[1])) : (bt[0] += pe[0], bt[1] += pe[1]); + } + if (a(mt || ot, ["touchmove", "tapdrag", "vmousemove"], N, { + x: q[0], + y: q[1] + }), (!mt || !mt.grabbed()) && ot != xn && (xn && xn.emit({ + originalEvent: N, + type: "tapdragout", + position: { + x: q[0], + y: q[1] + } + }), ot && ot.emit({ + originalEvent: N, + type: "tapdragover", + position: { + x: q[0], + y: q[1] + } + })), t.touchData.last = ot, V) + for (var lt = 0; lt < q.length; lt++) + q[lt] && t.touchData.startPosition[lt] && Se && (t.touchData.singleTouchMoved = !0); + if (V && (mt == null || mt.pannable()) && X.panningEnabled() && X.userPanningEnabled()) { + var _l = i(mt, t.touchData.starts); + _l && (N.preventDefault(), t.data.bgActivePosistion || (t.data.bgActivePosistion = Er(t.touchData.startPosition)), t.swipePanning ? (X.panBy({ + x: pe[0] * Z, + y: pe[1] * Z + }), X.emit("dragpan")) : Se && (t.swipePanning = !0, X.panBy({ + x: ye * Z, + y: Fe * Z + }), X.emit("dragpan"), mt && (mt.unactivate(), t.redrawHint("select", !0), t.touchData.start = null))); + var oe = t.projectIntoViewport(N.touches[0].clientX, N.touches[0].clientY); + q[0] = oe[0], q[1] = oe[1]; + } + } + for (var Te = 0; Te < q.length; Te++) + he[Te] = q[Te]; + V && N.touches.length > 0 && !t.hoverData.draggingEles && !t.swipePanning && t.data.bgActivePosistion != null && (t.data.bgActivePosistion = void 0, t.redrawHint("select", !0), t.redraw()); + } + }, !1); + var ee; + t.registerBinding(e, "touchcancel", ee = function(N) { + var V = t.touchData.start; + t.touchData.capture = !1, V && V.unactivate(); + }); + var ne, ce, te, re; + if (t.registerBinding(e, "touchend", ne = function(N) { + var V = t.touchData.start, J = t.touchData.capture; + if (J) + N.touches.length === 0 && (t.touchData.capture = !1), N.preventDefault(); + else + return; + var X = t.selection; + t.swipePanning = !1, t.hoverData.draggingEles = !1; + var q = t.cy, he = q.zoom(), Z = t.touchData.now, oe = t.touchData.earlier; + if (N.touches[0]) { + var me = t.projectIntoViewport(N.touches[0].clientX, N.touches[0].clientY); + Z[0] = me[0], Z[1] = me[1]; + } + if (N.touches[1]) { + var me = t.projectIntoViewport(N.touches[1].clientX, N.touches[1].clientY); + Z[2] = me[0], Z[3] = me[1]; + } + if (N.touches[2]) { + var me = t.projectIntoViewport(N.touches[2].clientX, N.touches[2].clientY); + Z[4] = me[0], Z[5] = me[1]; + } + V && V.unactivate(); + var Se; + if (t.touchData.cxt) { + if (Se = { + originalEvent: N, + type: "cxttapend", + position: { + x: Z[0], + y: Z[1] + } + }, V ? V.emit(Se) : q.emit(Se), !t.touchData.cxtDragged) { + var pe = { + originalEvent: N, + type: "cxttap", + position: { + x: Z[0], + y: Z[1] + } + }; + V ? V.emit(pe) : q.emit(pe); + } + t.touchData.start && (t.touchData.start._private.grabbed = !1), t.touchData.cxt = !1, t.touchData.start = null, t.redraw(); + return; + } + if (!N.touches[2] && q.boxSelectionEnabled() && t.touchData.selecting) { + t.touchData.selecting = !1; + var Te = q.collection(t.getAllInBox(X[0], X[1], X[2], X[3])); + X[0] = void 0, X[1] = void 0, X[2] = void 0, X[3] = void 0, X[4] = 0, t.redrawHint("select", !0), q.emit({ + type: "boxend", + originalEvent: N, + position: { + x: Z[0], + y: Z[1] + } + }); + var ye = function(Jt) { + return Jt.selectable() && !Jt.selected(); + }; + Te.emit("box").stdFilter(ye).select().emit("boxselect"), Te.nonempty() && t.redrawHint("eles", !0), t.redraw(); + } + if (V != null && V.unactivate(), N.touches[2]) + t.data.bgActivePosistion = void 0, t.redrawHint("select", !0); + else if (!N.touches[1]) { + if (!N.touches[0]) { + if (!N.touches[0]) { + t.data.bgActivePosistion = void 0, t.redrawHint("select", !0); + var be = t.dragData.touchDragEles; + if (V != null) { + var Fe = V._private.grabbed; + p(be), t.redrawHint("drag", !0), t.redrawHint("eles", !0), Fe && (V.emit("freeon"), be.emit("free"), t.dragData.didDrag && (V.emit("dragfreeon"), be.emit("dragfree"))), a(V, ["touchend", "tapend", "vmouseup", "tapdragout"], N, { + x: Z[0], + y: Z[1] + }), V.unactivate(), t.touchData.start = null; + } else { + var Xe = t.findNearestElement(Z[0], Z[1], !0, !0); + a(Xe, ["touchend", "tapend", "vmouseup", "tapdragout"], N, { + x: Z[0], + y: Z[1] + }); + } + var pt = t.touchData.startPosition[0] - Z[0], yt = pt * pt, We = t.touchData.startPosition[1] - Z[1], ct = We * We, it = yt + ct, It = it * he * he; + t.touchData.singleTouchMoved || (V || q.$(":selected").unselect(["tapunselect"]), a(V, ["tap", "vclick"], N, { + x: Z[0], + y: Z[1] + }), ce = !1, N.timeStamp - re <= q.multiClickDebounceTime() ? (te && clearTimeout(te), ce = !0, re = null, a(V, ["dbltap", "vdblclick"], N, { + x: Z[0], + y: Z[1] + })) : (te = setTimeout(function() { + ce || a(V, ["onetap", "voneclick"], N, { + x: Z[0], + y: Z[1] + }); + }, q.multiClickDebounceTime()), re = N.timeStamp)), V != null && !t.dragData.didDrag && V._private.selectable && It < t.touchTapThreshold2 && !t.pinching && (q.selectionType() === "single" ? (q.$(r).unmerge(V).unselect(["tapunselect"]), V.select(["tapselect"])) : V.selected() ? V.unselect(["tapunselect"]) : V.select(["tapselect"]), t.redrawHint("eles", !0)), t.touchData.singleTouchMoved = !0; + } + } + } + for (var Ft = 0; Ft < Z.length; Ft++) + oe[Ft] = Z[Ft]; + t.dragData.didDrag = !1, N.touches.length === 0 && (t.touchData.dragDelta = [], t.touchData.startPosition = [null, null, null, null, null, null], t.touchData.startGPosition = null, t.touchData.didSelect = !1), N.touches.length < 2 && (N.touches.length === 1 && (t.touchData.startGPosition = [N.touches[0].clientX, N.touches[0].clientY]), t.pinching = !1, t.redrawHint("eles", !0), t.redraw()); + }, !1), typeof TouchEvent == "undefined") { + var ue = [], le = function(N) { + return { + clientX: N.clientX, + clientY: N.clientY, + force: 1, + identifier: N.pointerId, + pageX: N.pageX, + pageY: N.pageY, + radiusX: N.width / 2, + radiusY: N.height / 2, + screenX: N.screenX, + screenY: N.screenY, + target: N.target + }; + }, se = function(N) { + return { + event: N, + touch: le(N) + }; + }, fe = function(N) { + ue.push(se(N)); + }, xe = function(N) { + for (var V = 0; V < ue.length; V++) { + var J = ue[V]; + if (J.event.pointerId === N.pointerId) { + ue.splice(V, 1); + return; + } + } + }, Ee = function(N) { + var V = ue.filter(function(J) { + return J.event.pointerId === N.pointerId; + })[0]; + V.event = N, V.touch = le(N); + }, ge = function(N) { + N.touches = ue.map(function(V) { + return V.touch; + }); + }, we = function(N) { + return N.pointerType === "mouse" || N.pointerType === 4; + }; + t.registerBinding(t.container, "pointerdown", function(H) { + we(H) || (H.preventDefault(), fe(H), ge(H), j(H)); + }), t.registerBinding(t.container, "pointerup", function(H) { + we(H) || (xe(H), ge(H), ne(H)); + }), t.registerBinding(t.container, "pointercancel", function(H) { + we(H) || (xe(H), ge(H), ee(H)); + }), t.registerBinding(t.container, "pointermove", function(H) { + we(H) || (H.preventDefault(), Ee(H), ge(H), Q(H)); + }); + } +}; +var Pt = {}; +Pt.generatePolygon = function(t, e) { + return this.nodeShapes[t] = { + renderer: this, + name: t, + points: e, + draw: function(a, n, i, s, o) { + this.renderer.nodeShapeImpl("polygon", a, n, i, s, o, this.points); + }, + intersectLine: function(a, n, i, s, o, l, u) { + return aa(o, l, this.points, a, n, i / 2, s / 2, u); + }, + checkPoint: function(a, n, i, s, o, l, u) { + return Rt(a, n, this.points, l, u, s, o, [0, -1], i); + } + }; +}; +Pt.generateEllipse = function() { + return this.nodeShapes.ellipse = { + renderer: this, + name: "ellipse", + draw: function(e, r, a, n, i) { + this.renderer.nodeShapeImpl(this.name, e, r, a, n, i); + }, + intersectLine: function(e, r, a, n, i, s, o) { + return jd(i, s, e, r, a / 2 + o, n / 2 + o); + }, + checkPoint: function(e, r, a, n, i, s, o) { + return rr(e, r, n, i, s, o, a); + } + }; +}; +Pt.generateRoundPolygon = function(t, e) { + for (var r = new Array(e.length * 2), a = 0; a < e.length / 2; a++) { + var n = a * 2, i = void 0; + a < e.length / 2 - 1 ? i = (a + 1) * 2 : i = 0, r[a * 4] = e[n], r[a * 4 + 1] = e[n + 1]; + var s = e[i] - e[n], o = e[i + 1] - e[n + 1], l = Math.sqrt(s * s + o * o); + r[a * 4 + 2] = s / l, r[a * 4 + 3] = o / l; + } + return this.nodeShapes[t] = { + renderer: this, + name: t, + points: r, + draw: function(f, h, c, v, d) { + this.renderer.nodeShapeImpl("round-polygon", f, h, c, v, d, this.points); + }, + intersectLine: function(f, h, c, v, d, g, p) { + return eg(d, g, this.points, f, h, c, v); + }, + checkPoint: function(f, h, c, v, d, g, p) { + return Jd(f, h, this.points, g, p, v, d); + } + }; +}; +Pt.generateRoundRectangle = function() { + return this.nodeShapes["round-rectangle"] = this.nodeShapes.roundrectangle = { + renderer: this, + name: "round-rectangle", + points: st(4, 0), + draw: function(e, r, a, n, i) { + this.renderer.nodeShapeImpl(this.name, e, r, a, n, i); + }, + intersectLine: function(e, r, a, n, i, s, o) { + return Co(i, s, e, r, a, n, o); + }, + checkPoint: function(e, r, a, n, i, s, o) { + var l = da(n, i), u = l * 2; + return !!(Rt(e, r, this.points, s, o, n, i - u, [0, -1], a) || Rt(e, r, this.points, s, o, n - u, i, [0, -1], a) || rr(e, r, u, u, s - n / 2 + l, o - i / 2 + l, a) || rr(e, r, u, u, s + n / 2 - l, o - i / 2 + l, a) || rr(e, r, u, u, s + n / 2 - l, o + i / 2 - l, a) || rr(e, r, u, u, s - n / 2 + l, o + i / 2 - l, a)); + } + }; +}; +Pt.generateCutRectangle = function() { + return this.nodeShapes["cut-rectangle"] = this.nodeShapes.cutrectangle = { + renderer: this, + name: "cut-rectangle", + cornerLength: So(), + points: st(4, 0), + draw: function(e, r, a, n, i) { + this.renderer.nodeShapeImpl(this.name, e, r, a, n, i); + }, + generateCutTrianglePts: function(e, r, a, n) { + var i = this.cornerLength, s = r / 2, o = e / 2, l = a - o, u = a + o, f = n - s, h = n + s; + return { + topLeft: [l, f + i, l + i, f, l + i, f + i], + topRight: [u - i, f, u, f + i, u - i, f + i], + bottomRight: [u, h - i, u - i, h, u - i, h - i], + bottomLeft: [l + i, h, l, h - i, l + i, h - i] + }; + }, + intersectLine: function(e, r, a, n, i, s, o) { + var l = this.generateCutTrianglePts(a + 2 * o, n + 2 * o, e, r), u = [].concat.apply([], [l.topLeft.splice(0, 4), l.topRight.splice(0, 4), l.bottomRight.splice(0, 4), l.bottomLeft.splice(0, 4)]); + return aa(i, s, u, e, r); + }, + checkPoint: function(e, r, a, n, i, s, o) { + if (Rt(e, r, this.points, s, o, n, i - 2 * this.cornerLength, [0, -1], a) || Rt(e, r, this.points, s, o, n - 2 * this.cornerLength, i, [0, -1], a)) + return !0; + var l = this.generateCutTrianglePts(n, i, s, o); + return ut(e, r, l.topLeft) || ut(e, r, l.topRight) || ut(e, r, l.bottomRight) || ut(e, r, l.bottomLeft); + } + }; +}; +Pt.generateBarrel = function() { + return this.nodeShapes.barrel = { + renderer: this, + name: "barrel", + points: st(4, 0), + draw: function(e, r, a, n, i) { + this.renderer.nodeShapeImpl(this.name, e, r, a, n, i); + }, + intersectLine: function(e, r, a, n, i, s, o) { + var l = 0.15, u = 0.5, f = 0.85, h = this.generateBarrelBezierPts(a + 2 * o, n + 2 * o, e, r), c = function(g) { + var p = xr({ + x: g[0], + y: g[1] + }, { + x: g[2], + y: g[3] + }, { + x: g[4], + y: g[5] + }, l), y = xr({ + x: g[0], + y: g[1] + }, { + x: g[2], + y: g[3] + }, { + x: g[4], + y: g[5] + }, u), E = xr({ + x: g[0], + y: g[1] + }, { + x: g[2], + y: g[3] + }, { + x: g[4], + y: g[5] + }, f); + return [g[0], g[1], p.x, p.y, y.x, y.y, E.x, E.y, g[4], g[5]]; + }, v = [].concat(c(h.topLeft), c(h.topRight), c(h.bottomRight), c(h.bottomLeft)); + return aa(i, s, v, e, r); + }, + generateBarrelBezierPts: function(e, r, a, n) { + var i = r / 2, s = e / 2, o = a - s, l = a + s, u = n - i, f = n + i, h = zn(e, r), c = h.heightOffset, v = h.widthOffset, d = h.ctrlPtOffsetPct * e, g = { + topLeft: [o, u + c, o + d, u, o + v, u], + topRight: [l - v, u, l - d, u, l, u + c], + bottomRight: [l, f - c, l - d, f, l - v, f], + bottomLeft: [o + v, f, o + d, f, o, f - c] + }; + return g.topLeft.isTop = !0, g.topRight.isTop = !0, g.bottomLeft.isBottom = !0, g.bottomRight.isBottom = !0, g; + }, + checkPoint: function(e, r, a, n, i, s, o) { + var l = zn(n, i), u = l.heightOffset, f = l.widthOffset; + if (Rt(e, r, this.points, s, o, n, i - 2 * u, [0, -1], a) || Rt(e, r, this.points, s, o, n - 2 * f, i, [0, -1], a)) + return !0; + for (var h = this.generateBarrelBezierPts(n, i, s, o), c = function(b, x, w) { + var D = w[4], A = w[2], L = w[0], I = w[5], O = w[1], P = Math.min(D, L), R = Math.max(D, L), M = Math.min(I, O), k = Math.max(I, O); + if (P <= b && b <= R && M <= x && x <= k) { + var B = tg(D, A, L), G = qd(B[0], B[1], B[2], b), F = G.filter(function($) { + return 0 <= $ && $ <= 1; + }); + if (F.length > 0) + return F[0]; + } + return null; + }, v = Object.keys(h), d = 0; d < v.length; d++) { + var g = v[d], p = h[g], y = c(e, r, p); + if (y != null) { + var E = p[5], m = p[3], T = p[1], C = Ye(E, m, T, y); + if (p.isTop && C <= r || p.isBottom && r <= C) + return !0; + } + } + return !1; + } + }; +}; +Pt.generateBottomRoundrectangle = function() { + return this.nodeShapes["bottom-round-rectangle"] = this.nodeShapes.bottomroundrectangle = { + renderer: this, + name: "bottom-round-rectangle", + points: st(4, 0), + draw: function(e, r, a, n, i) { + this.renderer.nodeShapeImpl(this.name, e, r, a, n, i); + }, + intersectLine: function(e, r, a, n, i, s, o) { + var l = e - (a / 2 + o), u = r - (n / 2 + o), f = u, h = e + (a / 2 + o), c = _t(i, s, e, r, l, u, h, f, !1); + return c.length > 0 ? c : Co(i, s, e, r, a, n, o); + }, + checkPoint: function(e, r, a, n, i, s, o) { + var l = da(n, i), u = 2 * l; + if (Rt(e, r, this.points, s, o, n, i - u, [0, -1], a) || Rt(e, r, this.points, s, o, n - u, i, [0, -1], a)) + return !0; + var f = n / 2 + 2 * a, h = i / 2 + 2 * a, c = [s - f, o - h, s - f, o, s + f, o, s + f, o - h]; + return !!(ut(e, r, c) || rr(e, r, u, u, s + n / 2 - l, o + i / 2 - l, a) || rr(e, r, u, u, s - n / 2 + l, o + i / 2 - l, a)); + } + }; +}; +Pt.registerNodeShapes = function() { + var t = this.nodeShapes = {}, e = this; + this.generateEllipse(), this.generatePolygon("triangle", st(3, 0)), this.generateRoundPolygon("round-triangle", st(3, 0)), this.generatePolygon("rectangle", st(4, 0)), t.square = t.rectangle, this.generateRoundRectangle(), this.generateCutRectangle(), this.generateBarrel(), this.generateBottomRoundrectangle(); + { + var r = [0, 1, 1, 0, 0, -1, -1, 0]; + this.generatePolygon("diamond", r), this.generateRoundPolygon("round-diamond", r); + } + this.generatePolygon("pentagon", st(5, 0)), this.generateRoundPolygon("round-pentagon", st(5, 0)), this.generatePolygon("hexagon", st(6, 0)), this.generateRoundPolygon("round-hexagon", st(6, 0)), this.generatePolygon("heptagon", st(7, 0)), this.generateRoundPolygon("round-heptagon", st(7, 0)), this.generatePolygon("octagon", st(8, 0)), this.generateRoundPolygon("round-octagon", st(8, 0)); + var a = new Array(20); + { + var n = Gn(5, 0), i = Gn(5, Math.PI / 5), s = 0.5 * (3 - Math.sqrt(5)); + s *= 1.57; + for (var o = 0; o < i.length / 2; o++) + i[o * 2] *= s, i[o * 2 + 1] *= s; + for (var o = 0; o < 20 / 4; o++) + a[o * 4] = n[o * 2], a[o * 4 + 1] = n[o * 2 + 1], a[o * 4 + 2] = i[o * 2], a[o * 4 + 3] = i[o * 2 + 1]; + } + a = Do(a), this.generatePolygon("star", a), this.generatePolygon("vee", [-1, -1, 0, -0.333, 1, -1, 0, 1]), this.generatePolygon("rhomboid", [-1, -1, 0.333, -1, 1, 1, -0.333, 1]), this.generatePolygon("right-rhomboid", [-0.333, -1, 1, -1, 0.333, 1, -1, 1]), this.nodeShapes.concavehexagon = this.generatePolygon("concave-hexagon", [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); + { + var l = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; + this.generatePolygon("tag", l), this.generateRoundPolygon("round-tag", l); + } + t.makePolygon = function(u) { + var f = u.join("$"), h = "polygon-" + f, c; + return (c = this[h]) ? c : e.generatePolygon(h, u); + }; +}; +var ma = {}; +ma.timeToRender = function() { + return this.redrawTotalTime / this.redrawCount; +}; +ma.redraw = function(t) { + t = t || bo(); + var e = this; + e.averageRedrawTime === void 0 && (e.averageRedrawTime = 0), e.lastRedrawTime === void 0 && (e.lastRedrawTime = 0), e.lastDrawTime === void 0 && (e.lastDrawTime = 0), e.requestedFrame = !0, e.renderOptions = t; +}; +ma.beforeRender = function(t, e) { + if (!this.destroyed) { + e == null && Ge("Priority is not optional for beforeRender"); + var r = this.beforeRenderCallbacks; + r.push({ + fn: t, + priority: e + }), r.sort(function(a, n) { + return n.priority - a.priority; + }); + } +}; +var Ps = function(e, r, a) { + for (var n = e.beforeRenderCallbacks, i = 0; i < n.length; i++) + n[i].fn(r, a); +}; +ma.startRenderLoop = function() { + var t = this, e = t.cy; + if (!t.renderLoopStarted) { + t.renderLoopStarted = !0; + var r = function a(n) { + if (!t.destroyed) { + if (!e.batching()) + if (t.requestedFrame && !t.skipFrame) { + Ps(t, !0, n); + var i = Mt(); + t.render(t.renderOptions); + var s = t.lastDrawTime = Mt(); + t.averageRedrawTime === void 0 && (t.averageRedrawTime = s - i), t.redrawCount === void 0 && (t.redrawCount = 0), t.redrawCount++, t.redrawTotalTime === void 0 && (t.redrawTotalTime = 0); + var o = s - i; + t.redrawTotalTime += o, t.lastRedrawTime = o, t.averageRedrawTime = t.averageRedrawTime / 2 + o / 2, t.requestedFrame = !1; + } else + Ps(t, !1, n); + t.skipFrame = !1, Ya(a); + } + }; + Ya(r); + } +}; +var Ly = function(e) { + this.init(e); +}, dl = Ly, Fr = dl.prototype; +Fr.clientFunctions = ["redrawHint", "render", "renderTo", "matchCanvasSize", "nodeShapeImpl", "arrowShapeImpl"]; +Fr.init = function(t) { + var e = this; + e.options = t, e.cy = t.cy; + var r = e.container = t.cy.container(), a = e.cy.window(); + if (a) { + var n = a.document, i = n.head, s = "__________cytoscape_stylesheet", o = "__________cytoscape_container", l = n.getElementById(s) != null; + if (r.className.indexOf(o) < 0 && (r.className = (r.className || "") + " " + o), !l) { + var u = n.createElement("style"); + u.id = s, u.textContent = "." + o + " { position: relative; }", i.insertBefore(u, i.children[0]); + } + var f = a.getComputedStyle(r), h = f.getPropertyValue("position"); + h === "static" && Ne("A Cytoscape container has style position:static and so can not use UI extensions properly"); + } + e.selection = [void 0, void 0, void 0, void 0, 0], e.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95], e.hoverData = { + down: null, + last: null, + downTime: null, + triggerMode: null, + dragging: !1, + initialPan: [null, null], + capture: !1 + }, e.dragData = { + possibleDragElements: [] + }, e.touchData = { + start: null, + capture: !1, + // These 3 fields related to tap, taphold events + startPosition: [null, null, null, null, null, null], + singleTouchStartTime: null, + singleTouchMoved: !0, + now: [null, null, null, null, null, null], + earlier: [null, null, null, null, null, null] + }, e.redraws = 0, e.showFps = t.showFps, e.debug = t.debug, e.hideEdgesOnViewport = t.hideEdgesOnViewport, e.textureOnViewport = t.textureOnViewport, e.wheelSensitivity = t.wheelSensitivity, e.motionBlurEnabled = t.motionBlur, e.forcedPixelRatio = ae(t.pixelRatio) ? t.pixelRatio : null, e.motionBlur = t.motionBlur, e.motionBlurOpacity = t.motionBlurOpacity, e.motionBlurTransparency = 1 - e.motionBlurOpacity, e.motionBlurPxRatio = 1, e.mbPxRBlurry = 1, e.minMbLowQualFrames = 4, e.fullQualityMb = !1, e.clearedForMotionBlur = [], e.desktopTapThreshold = t.desktopTapThreshold, e.desktopTapThreshold2 = t.desktopTapThreshold * t.desktopTapThreshold, e.touchTapThreshold = t.touchTapThreshold, e.touchTapThreshold2 = t.touchTapThreshold * t.touchTapThreshold, e.tapholdDuration = 500, e.bindings = [], e.beforeRenderCallbacks = [], e.beforeRenderPriorities = { + // higher priority execs before lower one + animations: 400, + eleCalcs: 300, + eleTxrDeq: 200, + lyrTxrDeq: 150, + lyrTxrSkip: 100 + }, e.registerNodeShapes(), e.registerArrowShapes(), e.registerCalculationListeners(); +}; +Fr.notify = function(t, e) { + var r = this, a = r.cy; + if (!this.destroyed) { + if (t === "init") { + r.load(); + return; + } + if (t === "destroy") { + r.destroy(); + return; + } + (t === "add" || t === "remove" || t === "move" && a.hasCompoundNodes() || t === "load" || t === "zorder" || t === "mount") && r.invalidateCachedZSortedEles(), t === "viewport" && r.redrawHint("select", !0), (t === "load" || t === "resize" || t === "mount") && (r.invalidateContainerClientCoordsCache(), r.matchCanvasSize(r.container)), r.redrawHint("eles", !0), r.redrawHint("drag", !0), this.startRenderLoop(), this.redraw(); + } +}; +Fr.destroy = function() { + var t = this; + t.destroyed = !0, t.cy.stopAnimationLoop(); + for (var e = 0; e < t.bindings.length; e++) { + var r = t.bindings[e], a = r, n = a.target; + (n.off || n.removeEventListener).apply(n, a.args); + } + if (t.bindings = [], t.beforeRenderCallbacks = [], t.onUpdateEleCalcsFns = [], t.removeObserver && t.removeObserver.disconnect(), t.styleObserver && t.styleObserver.disconnect(), t.resizeObserver && t.resizeObserver.disconnect(), t.labelCalcDiv) + try { + document.body.removeChild(t.labelCalcDiv); + } catch (i) { + } +}; +Fr.isHeadless = function() { + return !1; +}; +[bi, vl, cl, Br, Pt, ma].forEach(function(t) { + de(Fr, t); +}); +var Rn = 1e3 / 60, gl = { + setupDequeueing: function(e) { + return function() { + var a = this, n = this.renderer; + if (!a.dequeueingSetup) { + a.dequeueingSetup = !0; + var i = on.default(function() { + n.redrawHint("eles", !0), n.redrawHint("drag", !0), n.redraw(); + }, e.deqRedrawThreshold), s = function(u, f) { + var h = Mt(), c = n.averageRedrawTime, v = n.lastRedrawTime, d = [], g = n.cy.extent(), p = n.getPixelRatio(); + for (u || n.flushRenderedStyleQueue(); ; ) { + var y = Mt(), E = y - h, m = y - f; + if (v < Rn) { + var T = Rn - (u ? c : 0); + if (m >= e.deqFastCost * T) + break; + } else if (u) { + if (E >= e.deqCost * v || E >= e.deqAvgCost * c) + break; + } else if (m >= e.deqNoDrawCost * Rn) + break; + var C = e.deq(a, p, g); + if (C.length > 0) + for (var S = 0; S < C.length; S++) + d.push(C[S]); + else + break; + } + d.length > 0 && (e.onDeqd(a, d), !u && e.shouldRedraw(a, d, p, g) && i()); + }, o = e.priority || oi; + n.beforeRender(s, o(a)); + } + }; + } +}, Ay = /* @__PURE__ */ function() { + function t(e) { + var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Xa; + ri(this, t), this.idsByKey = new Lt(), this.keyForId = new Lt(), this.cachesByLvl = new Lt(), this.lvls = [], this.getKey = e, this.doesEleInvalidateKey = r; + } + return ai(t, [{ + key: "getIdsFor", + value: function(r) { + r == null && Ge("Can not get id list for null key"); + var a = this.idsByKey, n = this.idsByKey.get(r); + return n || (n = new Mr(), a.set(r, n)), n; + } + }, { + key: "addIdForKey", + value: function(r, a) { + r != null && this.getIdsFor(r).add(a); + } + }, { + key: "deleteIdForKey", + value: function(r, a) { + r != null && this.getIdsFor(r).delete(a); + } + }, { + key: "getNumberOfIdsForKey", + value: function(r) { + return r == null ? 0 : this.getIdsFor(r).size; + } + }, { + key: "updateKeyMappingFor", + value: function(r) { + var a = r.id(), n = this.keyForId.get(a), i = this.getKey(r); + this.deleteIdForKey(n, a), this.addIdForKey(i, a), this.keyForId.set(a, i); + } + }, { + key: "deleteKeyMappingFor", + value: function(r) { + var a = r.id(), n = this.keyForId.get(a); + this.deleteIdForKey(n, a), this.keyForId.delete(a); + } + }, { + key: "keyHasChangedFor", + value: function(r) { + var a = r.id(), n = this.keyForId.get(a), i = this.getKey(r); + return n !== i; + } + }, { + key: "isInvalid", + value: function(r) { + return this.keyHasChangedFor(r) || this.doesEleInvalidateKey(r); + } + }, { + key: "getCachesAt", + value: function(r) { + var a = this.cachesByLvl, n = this.lvls, i = a.get(r); + return i || (i = new Lt(), a.set(r, i), n.push(r)), i; + } + }, { + key: "getCache", + value: function(r, a) { + return this.getCachesAt(a).get(r); + } + }, { + key: "get", + value: function(r, a) { + var n = this.getKey(r), i = this.getCache(n, a); + return i != null && this.updateKeyMappingFor(r), i; + } + }, { + key: "getForCachedKey", + value: function(r, a) { + var n = this.keyForId.get(r.id()), i = this.getCache(n, a); + return i; + } + }, { + key: "hasCache", + value: function(r, a) { + return this.getCachesAt(a).has(r); + } + }, { + key: "has", + value: function(r, a) { + var n = this.getKey(r); + return this.hasCache(n, a); + } + }, { + key: "setCache", + value: function(r, a, n) { + n.key = r, this.getCachesAt(a).set(r, n); + } + }, { + key: "set", + value: function(r, a, n) { + var i = this.getKey(r); + this.setCache(i, a, n), this.updateKeyMappingFor(r); + } + }, { + key: "deleteCache", + value: function(r, a) { + this.getCachesAt(a).delete(r); + } + }, { + key: "delete", + value: function(r, a) { + var n = this.getKey(r); + this.deleteCache(n, a); + } + }, { + key: "invalidateKey", + value: function(r) { + var a = this; + this.lvls.forEach(function(n) { + return a.deleteCache(r, n); + }); + } + // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) + }, { + key: "invalidate", + value: function(r) { + var a = r.id(), n = this.keyForId.get(a); + this.deleteKeyMappingFor(r); + var i = this.doesEleInvalidateKey(r); + return i && this.invalidateKey(n), i || this.getNumberOfIdsForKey(n) === 0; + } + }]), t; +}(), Bs = 25, Ra = 50, Va = -4, Xn = 3, Oy = 7.99, Ny = 8, Iy = 1024, My = 1024, Ry = 1024, ky = 0.2, Py = 0.8, By = 10, Fy = 0.15, Gy = 0.1, zy = 0.9, $y = 0.9, Vy = 100, _y = 1, wr = { + dequeue: "dequeue", + downscale: "downscale", + highQuality: "highQuality" +}, Uy = Qe({ + getKey: null, + doesEleInvalidateKey: Xa, + drawElement: null, + getBoundingBox: null, + getRotationPoint: null, + getRotationOffset: null, + isVisible: po, + allowEdgeTxrCaching: !0, + allowParentTxrCaching: !0 +}), Kr = function(e, r) { + var a = this; + a.renderer = e, a.onDequeues = []; + var n = Uy(r); + de(a, n), a.lookup = new Ay(n.getKey, n.doesEleInvalidateKey), a.setupDequeueing(); +}, He = Kr.prototype; +He.reasons = wr; +He.getTextureQueue = function(t) { + var e = this; + return e.eleImgCaches = e.eleImgCaches || {}, e.eleImgCaches[t] = e.eleImgCaches[t] || []; +}; +He.getRetiredTextureQueue = function(t) { + var e = this, r = e.eleImgCaches.retired = e.eleImgCaches.retired || {}, a = r[t] = r[t] || []; + return a; +}; +He.getElementQueue = function() { + var t = this, e = t.eleCacheQueue = t.eleCacheQueue || new ha.default(function(r, a) { + return a.reqs - r.reqs; + }); + return e; +}; +He.getElementKeyToQueue = function() { + var t = this, e = t.eleKeyToCacheQueue = t.eleKeyToCacheQueue || {}; + return e; +}; +He.getElement = function(t, e, r, a, n) { + var i = this, s = this.renderer, o = s.cy.zoom(), l = this.lookup; + if (!e || e.w === 0 || e.h === 0 || isNaN(e.w) || isNaN(e.h) || !t.visible() || t.removed() || !i.allowEdgeTxrCaching && t.isEdge() || !i.allowParentTxrCaching && t.isParent()) + return null; + if (a == null && (a = Math.ceil(ui(o * r))), a < Va) + a = Va; + else if (o >= Oy || a > Xn) + return null; + var u = Math.pow(2, a), f = e.h * u, h = e.w * u, c = s.eleTextBiggerThanMin(t, u); + if (!this.isVisible(t, c)) + return null; + var v = l.get(t, a); + if (v && v.invalidated && (v.invalidated = !1, v.texture.invalidatedWidth -= v.width), v) + return v; + var d; + if (f <= Bs ? d = Bs : f <= Ra ? d = Ra : d = Math.ceil(f / Ra) * Ra, f > Ry || h > My) + return null; + var g = i.getTextureQueue(d), p = g[g.length - 2], y = function() { + return i.recycleTexture(d, h) || i.addTexture(d, h); + }; + p || (p = g[g.length - 1]), p || (p = y()), p.width - p.usedWidth < h && (p = y()); + for (var E = function(R) { + return R && R.scaledLabelShown === c; + }, m = n && n === wr.dequeue, T = n && n === wr.highQuality, C = n && n === wr.downscale, S, b = a + 1; b <= Xn; b++) { + var x = l.get(t, b); + if (x) { + S = x; + break; + } + } + var w = S && S.level === a + 1 ? S : null, D = function() { + p.context.drawImage(w.texture.canvas, w.x, 0, w.width, w.height, p.usedWidth, 0, h, f); + }; + if (p.context.setTransform(1, 0, 0, 1, 0, 0), p.context.clearRect(p.usedWidth, 0, h, d), E(w)) + D(); + else if (E(S)) + if (T) { + for (var A = S.level; A > a; A--) + w = i.getElement(t, e, r, A, wr.downscale); + D(); + } else + return i.queueElement(t, S.level - 1), S; + else { + var L; + if (!m && !T && !C) + for (var I = a - 1; I >= Va; I--) { + var O = l.get(t, I); + if (O) { + L = O; + break; + } + } + if (E(L)) + return i.queueElement(t, a), L; + p.context.translate(p.usedWidth, 0), p.context.scale(u, u), this.drawElement(p.context, t, e, c, !1), p.context.scale(1 / u, 1 / u), p.context.translate(-p.usedWidth, 0); + } + return v = { + x: p.usedWidth, + texture: p, + level: a, + scale: u, + width: h, + height: f, + scaledLabelShown: c + }, p.usedWidth += Math.ceil(h + Ny), p.eleCaches.push(v), l.set(t, a, v), i.checkTextureFullness(p), v; +}; +He.invalidateElements = function(t) { + for (var e = 0; e < t.length; e++) + this.invalidateElement(t[e]); +}; +He.invalidateElement = function(t) { + var e = this, r = e.lookup, a = [], n = r.isInvalid(t); + if (n) { + for (var i = Va; i <= Xn; i++) { + var s = r.getForCachedKey(t, i); + s && a.push(s); + } + var o = r.invalidate(t); + if (o) + for (var l = 0; l < a.length; l++) { + var u = a[l], f = u.texture; + f.invalidatedWidth += u.width, u.invalidated = !0, e.checkTextureUtility(f); + } + e.removeFromQueue(t); + } +}; +He.checkTextureUtility = function(t) { + t.invalidatedWidth >= ky * t.width && this.retireTexture(t); +}; +He.checkTextureFullness = function(t) { + var e = this, r = e.getTextureQueue(t.height); + t.usedWidth / t.width > Py && t.fullnessChecks >= By ? Xt(r, t) : t.fullnessChecks++; +}; +He.retireTexture = function(t) { + var e = this, r = t.height, a = e.getTextureQueue(r), n = this.lookup; + Xt(a, t), t.retired = !0; + for (var i = t.eleCaches, s = 0; s < i.length; s++) { + var o = i[s]; + n.deleteCache(o.key, o.level); + } + li(i); + var l = e.getRetiredTextureQueue(r); + l.push(t); +}; +He.addTexture = function(t, e) { + var r = this, a = r.getTextureQueue(t), n = {}; + return a.push(n), n.eleCaches = [], n.height = t, n.width = Math.max(Iy, e), n.usedWidth = 0, n.invalidatedWidth = 0, n.fullnessChecks = 0, n.canvas = r.renderer.makeOffscreenCanvas(n.width, n.height), n.context = n.canvas.getContext("2d"), n; +}; +He.recycleTexture = function(t, e) { + for (var r = this, a = r.getTextureQueue(t), n = r.getRetiredTextureQueue(t), i = 0; i < n.length; i++) { + var s = n[i]; + if (s.width >= e) + return s.retired = !1, s.usedWidth = 0, s.invalidatedWidth = 0, s.fullnessChecks = 0, li(s.eleCaches), s.context.setTransform(1, 0, 0, 1, 0, 0), s.context.clearRect(0, 0, s.width, s.height), Xt(n, s), a.push(s), s; + } +}; +He.queueElement = function(t, e) { + var r = this, a = r.getElementQueue(), n = r.getElementKeyToQueue(), i = this.getKey(t), s = n[i]; + if (s) + s.level = Math.max(s.level, e), s.eles.merge(t), s.reqs++, a.updateItem(s); + else { + var o = { + eles: t.spawn().merge(t), + level: e, + reqs: 1, + key: i + }; + a.push(o), n[i] = o; + } +}; +He.dequeue = function(t) { + for (var e = this, r = e.getElementQueue(), a = e.getElementKeyToQueue(), n = [], i = e.lookup, s = 0; s < _y && r.size() > 0; s++) { + var o = r.pop(), l = o.key, u = o.eles[0], f = i.hasCache(u, o.level); + if (a[l] = null, f) + continue; + n.push(o); + var h = e.getBoundingBox(u); + e.getElement(u, h, t, o.level, wr.dequeue); + } + return n; +}; +He.removeFromQueue = function(t) { + var e = this, r = e.getElementQueue(), a = e.getElementKeyToQueue(), n = this.getKey(t), i = a[n]; + i != null && (i.eles.length === 1 ? (i.reqs = si, r.updateItem(i), r.pop(), a[n] = null) : i.eles.unmerge(t)); +}; +He.onDequeue = function(t) { + this.onDequeues.push(t); +}; +He.offDequeue = function(t) { + Xt(this.onDequeues, t); +}; +He.setupDequeueing = gl.setupDequeueing({ + deqRedrawThreshold: Vy, + deqCost: Fy, + deqAvgCost: Gy, + deqNoDrawCost: zy, + deqFastCost: $y, + deq: function(e, r, a) { + return e.dequeue(r, a); + }, + onDeqd: function(e, r) { + for (var a = 0; a < e.onDequeues.length; a++) { + var n = e.onDequeues[a]; + n(r); + } + }, + shouldRedraw: function(e, r, a, n) { + for (var i = 0; i < r.length; i++) + for (var s = r[i].eles, o = 0; o < s.length; o++) { + var l = s[o].boundingBox(); + if (fi(l, n)) + return !0; + } + return !1; + }, + priority: function(e) { + return e.renderer.beforeRenderPriorities.eleTxrDeq; + } +}); +var Hy = 1, Qr = -4, en = 2, Yy = 3.99, Xy = 50, Wy = 50, qy = 0.15, Ky = 0.1, Zy = 0.9, Qy = 0.9, Jy = 1, Fs = 250, jy = 4e3 * 4e3, em = !0, pl = function(e) { + var r = this, a = r.renderer = e, n = a.cy; + r.layersByLevel = {}, r.firstGet = !0, r.lastInvalidationTime = Mt() - 2 * Fs, r.skipping = !1, r.eleTxrDeqs = n.collection(), r.scheduleElementRefinement = on.default(function() { + r.refineElementTextures(r.eleTxrDeqs), r.eleTxrDeqs.unmerge(r.eleTxrDeqs); + }, Wy), a.beforeRender(function(s, o) { + o - r.lastInvalidationTime <= Fs ? r.skipping = !0 : r.skipping = !1; + }, a.beforeRenderPriorities.lyrTxrSkip); + var i = function(o, l) { + return l.reqs - o.reqs; + }; + r.layersQueue = new ha.default(i), r.setupDequeueing(); +}, Je = pl.prototype, Gs = 0, tm = Math.pow(2, 53) - 1; +Je.makeLayer = function(t, e) { + var r = Math.pow(2, e), a = Math.ceil(t.w * r), n = Math.ceil(t.h * r), i = this.renderer.makeOffscreenCanvas(a, n), s = { + id: Gs = ++Gs % tm, + bb: t, + level: e, + width: a, + height: n, + canvas: i, + context: i.getContext("2d"), + eles: [], + elesQueue: [], + reqs: 0 + }, o = s.context, l = -s.bb.x1, u = -s.bb.y1; + return o.scale(r, r), o.translate(l, u), s; +}; +Je.getLayers = function(t, e, r) { + var a = this, n = a.renderer, i = n.cy, s = i.zoom(), o = a.firstGet; + if (a.firstGet = !1, r == null) { + if (r = Math.ceil(ui(s * e)), r < Qr) + r = Qr; + else if (s >= Yy || r > en) + return null; + } + a.validateLayersElesOrdering(r, t); + var l = a.layersByLevel, u = Math.pow(2, r), f = l[r] = l[r] || [], h, c = a.levelIsComplete(r, t), v, d = function() { + var D = function(P) { + if (a.validateLayersElesOrdering(P, t), a.levelIsComplete(P, t)) + return v = l[P], !0; + }, A = function(P) { + if (!v) + for (var R = r + P; Qr <= R && R <= en && !D(R); R += P) + ; + }; + A(1), A(-1); + for (var L = f.length - 1; L >= 0; L--) { + var I = f[L]; + I.invalid && Xt(f, I); + } + }; + if (!c) + d(); + else + return f; + var g = function() { + if (!h) { + h = ft(); + for (var D = 0; D < t.length; D++) + xo(h, t[D].boundingBox()); + } + return h; + }, p = function(D) { + D = D || {}; + var A = D.after; + g(); + var L = h.w * u * (h.h * u); + if (L > jy) + return null; + var I = a.makeLayer(h, r); + if (A != null) { + var O = f.indexOf(A) + 1; + f.splice(O, 0, I); + } else + (D.insert === void 0 || D.insert) && f.unshift(I); + return I; + }; + if (a.skipping && !o) + return null; + for (var y = null, E = t.length / Hy, m = !o, T = 0; T < t.length; T++) { + var C = t[T], S = C._private.rscratch, b = S.imgLayerCaches = S.imgLayerCaches || {}, x = b[r]; + if (x) { + y = x; + continue; + } + if ((!y || y.eles.length >= E || !To(y.bb, C.boundingBox())) && (y = p({ + insert: !0, + after: y + }), !y)) + return null; + v || m ? a.queueLayer(y, C) : a.drawEleInLayer(y, C, r, e), y.eles.push(C), b[r] = y; + } + return v || (m ? null : f); +}; +Je.getEleLevelForLayerLevel = function(t, e) { + return t; +}; +Je.drawEleInLayer = function(t, e, r, a) { + var n = this, i = this.renderer, s = t.context, o = e.boundingBox(); + o.w === 0 || o.h === 0 || !e.visible() || (r = n.getEleLevelForLayerLevel(r, a), i.setImgSmoothing(s, !1), i.drawCachedElement(s, e, null, null, r, em), i.setImgSmoothing(s, !0)); +}; +Je.levelIsComplete = function(t, e) { + var r = this, a = r.layersByLevel[t]; + if (!a || a.length === 0) + return !1; + for (var n = 0, i = 0; i < a.length; i++) { + var s = a[i]; + if (s.reqs > 0 || s.invalid) + return !1; + n += s.eles.length; + } + return n === e.length; +}; +Je.validateLayersElesOrdering = function(t, e) { + var r = this.layersByLevel[t]; + if (r) + for (var a = 0; a < r.length; a++) { + for (var n = r[a], i = -1, s = 0; s < e.length; s++) + if (n.eles[0] === e[s]) { + i = s; + break; + } + if (i < 0) { + this.invalidateLayer(n); + continue; + } + for (var o = i, s = 0; s < n.eles.length; s++) + if (n.eles[s] !== e[o + s]) { + this.invalidateLayer(n); + break; + } + } +}; +Je.updateElementsInLayers = function(t, e) { + for (var r = this, a = ca(t[0]), n = 0; n < t.length; n++) + for (var i = a ? null : t[n], s = a ? t[n] : t[n].ele, o = s._private.rscratch, l = o.imgLayerCaches = o.imgLayerCaches || {}, u = Qr; u <= en; u++) { + var f = l[u]; + f && (i && r.getEleLevelForLayerLevel(f.level) !== i.level || e(f, s, i)); + } +}; +Je.haveLayers = function() { + for (var t = this, e = !1, r = Qr; r <= en; r++) { + var a = t.layersByLevel[r]; + if (a && a.length > 0) { + e = !0; + break; + } + } + return e; +}; +Je.invalidateElements = function(t) { + var e = this; + t.length !== 0 && (e.lastInvalidationTime = Mt(), !(t.length === 0 || !e.haveLayers()) && e.updateElementsInLayers(t, function(a, n, i) { + e.invalidateLayer(a); + })); +}; +Je.invalidateLayer = function(t) { + if (this.lastInvalidationTime = Mt(), !t.invalid) { + var e = t.level, r = t.eles, a = this.layersByLevel[e]; + Xt(a, t), t.elesQueue = [], t.invalid = !0, t.replacement && (t.replacement.invalid = !0); + for (var n = 0; n < r.length; n++) { + var i = r[n]._private.rscratch.imgLayerCaches; + i && (i[e] = null); + } + } +}; +Je.refineElementTextures = function(t) { + var e = this; + e.updateElementsInLayers(t, function(a, n, i) { + var s = a.replacement; + if (s || (s = a.replacement = e.makeLayer(a.bb, a.level), s.replaces = a, s.eles = a.eles), !s.reqs) + for (var o = 0; o < s.eles.length; o++) + e.queueLayer(s, s.eles[o]); + }); +}; +Je.enqueueElementRefinement = function(t) { + this.eleTxrDeqs.merge(t), this.scheduleElementRefinement(); +}; +Je.queueLayer = function(t, e) { + var r = this, a = r.layersQueue, n = t.elesQueue, i = n.hasId = n.hasId || {}; + if (!t.replacement) { + if (e) { + if (i[e.id()]) + return; + n.push(e), i[e.id()] = !0; + } + t.reqs ? (t.reqs++, a.updateItem(t)) : (t.reqs = 1, a.push(t)); + } +}; +Je.dequeue = function(t) { + for (var e = this, r = e.layersQueue, a = [], n = 0; n < Jy && r.size() !== 0; ) { + var i = r.peek(); + if (i.replacement) { + r.pop(); + continue; + } + if (i.replaces && i !== i.replaces.replacement) { + r.pop(); + continue; + } + if (i.invalid) { + r.pop(); + continue; + } + var s = i.elesQueue.shift(); + s && (e.drawEleInLayer(i, s, i.level, t), n++), a.length === 0 && a.push(!0), i.elesQueue.length === 0 && (r.pop(), i.reqs = 0, i.replaces && e.applyLayerReplacement(i), e.requestRedraw()); + } + return a; +}; +Je.applyLayerReplacement = function(t) { + var e = this, r = e.layersByLevel[t.level], a = t.replaces, n = r.indexOf(a); + if (!(n < 0 || a.invalid)) { + r[n] = t; + for (var i = 0; i < t.eles.length; i++) { + var s = t.eles[i]._private, o = s.imgLayerCaches = s.imgLayerCaches || {}; + o && (o[t.level] = t); + } + e.requestRedraw(); + } +}; +Je.requestRedraw = on.default(function() { + var t = this.renderer; + t.redrawHint("eles", !0), t.redrawHint("drag", !0), t.redraw(); +}, 100); +Je.setupDequeueing = gl.setupDequeueing({ + deqRedrawThreshold: Xy, + deqCost: qy, + deqAvgCost: Ky, + deqNoDrawCost: Zy, + deqFastCost: Qy, + deq: function(e, r) { + return e.dequeue(r); + }, + onDeqd: oi, + shouldRedraw: po, + priority: function(e) { + return e.renderer.beforeRenderPriorities.lyrTxrDeq; + } +}); +var yl = {}, zs; +function rm(t, e) { + for (var r = 0; r < e.length; r++) { + var a = e[r]; + t.lineTo(a.x, a.y); + } +} +function am(t, e, r) { + for (var a, n = 0; n < e.length; n++) { + var i = e[n]; + n === 0 && (a = i), t.lineTo(i.x, i.y); + } + t.quadraticCurveTo(r.x, r.y, a.x, a.y); +} +function $s(t, e, r) { + t.beginPath && t.beginPath(); + for (var a = e, n = 0; n < a.length; n++) { + var i = a[n]; + t.lineTo(i.x, i.y); + } + var s = r, o = r[0]; + t.moveTo(o.x, o.y); + for (var n = 1; n < s.length; n++) { + var i = s[n]; + t.lineTo(i.x, i.y); + } + t.closePath && t.closePath(); +} +function nm(t, e, r, a, n) { + t.beginPath && t.beginPath(), t.arc(r, a, n, 0, Math.PI * 2, !1); + var i = e, s = i[0]; + t.moveTo(s.x, s.y); + for (var o = 0; o < i.length; o++) { + var l = i[o]; + t.lineTo(l.x, l.y); + } + t.closePath && t.closePath(); +} +function im(t, e, r, a) { + t.arc(e, r, a, 0, Math.PI * 2, !1); +} +yl.arrowShapeImpl = function(t) { + return (zs || (zs = { + polygon: rm, + "triangle-backcurve": am, + "triangle-tee": $s, + "circle-triangle": nm, + "triangle-cross": $s, + circle: im + }))[t]; +}; +var Nt = {}; +Nt.drawElement = function(t, e, r, a, n, i) { + var s = this; + e.isNode() ? s.drawNode(t, e, r, a, n, i) : s.drawEdge(t, e, r, a, n, i); +}; +Nt.drawElementOverlay = function(t, e) { + var r = this; + e.isNode() ? r.drawNodeOverlay(t, e) : r.drawEdgeOverlay(t, e); +}; +Nt.drawElementUnderlay = function(t, e) { + var r = this; + e.isNode() ? r.drawNodeUnderlay(t, e) : r.drawEdgeUnderlay(t, e); +}; +Nt.drawCachedElementPortion = function(t, e, r, a, n, i, s, o) { + var l = this, u = r.getBoundingBox(e); + if (!(u.w === 0 || u.h === 0)) { + var f = r.getElement(e, u, a, n, i); + if (f != null) { + var h = o(l, e); + if (h === 0) + return; + var c = s(l, e), v = u.x1, d = u.y1, g = u.w, p = u.h, y, E, m, T, C; + if (c !== 0) { + var S = r.getRotationPoint(e); + m = S.x, T = S.y, t.translate(m, T), t.rotate(c), C = l.getImgSmoothing(t), C || l.setImgSmoothing(t, !0); + var b = r.getRotationOffset(e); + y = b.x, E = b.y; + } else + y = v, E = d; + var x; + h !== 1 && (x = t.globalAlpha, t.globalAlpha = x * h), t.drawImage(f.texture.canvas, f.x, 0, f.width, f.height, y, E, g, p), h !== 1 && (t.globalAlpha = x), c !== 0 && (t.rotate(-c), t.translate(-m, -T), C || l.setImgSmoothing(t, !1)); + } else + r.drawElement(t, e); + } +}; +var sm = function() { + return 0; +}, om = function(e, r) { + return e.getTextAngle(r, null); +}, lm = function(e, r) { + return e.getTextAngle(r, "source"); +}, um = function(e, r) { + return e.getTextAngle(r, "target"); +}, fm = function(e, r) { + return r.effectiveOpacity(); +}, kn = function(e, r) { + return r.pstyle("text-opacity").pfValue * r.effectiveOpacity(); +}; +Nt.drawCachedElement = function(t, e, r, a, n, i) { + var s = this, o = s.data, l = o.eleTxrCache, u = o.lblTxrCache, f = o.slbTxrCache, h = o.tlbTxrCache, c = e.boundingBox(), v = i === !0 ? l.reasons.highQuality : null; + if (!(c.w === 0 || c.h === 0 || !e.visible()) && (!a || fi(c, a))) { + var d = e.isEdge(), g = e.element()._private.rscratch.badLine; + s.drawElementUnderlay(t, e), s.drawCachedElementPortion(t, e, l, r, n, v, sm, fm), (!d || !g) && s.drawCachedElementPortion(t, e, u, r, n, v, om, kn), d && !g && (s.drawCachedElementPortion(t, e, f, r, n, v, lm, kn), s.drawCachedElementPortion(t, e, h, r, n, v, um, kn)), s.drawElementOverlay(t, e); + } +}; +Nt.drawElements = function(t, e) { + for (var r = this, a = 0; a < e.length; a++) { + var n = e[a]; + r.drawElement(t, n); + } +}; +Nt.drawCachedElements = function(t, e, r, a) { + for (var n = this, i = 0; i < e.length; i++) { + var s = e[i]; + n.drawCachedElement(t, s, r, a); + } +}; +Nt.drawCachedNodes = function(t, e, r, a) { + for (var n = this, i = 0; i < e.length; i++) { + var s = e[i]; + s.isNode() && n.drawCachedElement(t, s, r, a); + } +}; +Nt.drawLayeredElements = function(t, e, r, a) { + var n = this, i = n.data.lyrTxrCache.getLayers(e, r); + if (i) + for (var s = 0; s < i.length; s++) { + var o = i[s], l = o.bb; + l.w === 0 || l.h === 0 || t.drawImage(o.canvas, l.x1, l.y1, l.w, l.h); + } + else + n.drawCachedElements(t, e, r, a); +}; +var Bt = {}; +Bt.drawEdge = function(t, e, r) { + var a = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0, n = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0, i = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0, s = this, o = e._private.rscratch; + if (!(i && !e.visible()) && !(o.badLine || o.allpts == null || isNaN(o.allpts[0]))) { + var l; + r && (l = r, t.translate(-l.x1, -l.y1)); + var u = i ? e.pstyle("opacity").value : 1, f = i ? e.pstyle("line-opacity").value : 1, h = e.pstyle("curve-style").value, c = e.pstyle("line-style").value, v = e.pstyle("width").pfValue, d = e.pstyle("line-cap").value, g = u * f, p = u * f, y = function() { + var L = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : g; + h === "straight-triangle" ? (s.eleStrokeStyle(t, e, L), s.drawEdgeTrianglePath(e, t, o.allpts)) : (t.lineWidth = v, t.lineCap = d, s.eleStrokeStyle(t, e, L), s.drawEdgePath(e, t, o.allpts, c), t.lineCap = "butt"); + }, E = function() { + n && s.drawEdgeOverlay(t, e); + }, m = function() { + n && s.drawEdgeUnderlay(t, e); + }, T = function() { + var L = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : p; + s.drawArrowheads(t, e, L); + }, C = function() { + s.drawElementText(t, e, null, a); + }; + t.lineJoin = "round"; + var S = e.pstyle("ghost").value === "yes"; + if (S) { + var b = e.pstyle("ghost-offset-x").pfValue, x = e.pstyle("ghost-offset-y").pfValue, w = e.pstyle("ghost-opacity").value, D = g * w; + t.translate(b, x), y(D), T(D), t.translate(-b, -x); + } + m(), y(), T(), E(), C(), r && t.translate(l.x1, l.y1); + } +}; +var ml = function(e) { + if (!["overlay", "underlay"].includes(e)) + throw new Error("Invalid state"); + return function(r, a) { + if (a.visible()) { + var n = a.pstyle("".concat(e, "-opacity")).value; + if (n !== 0) { + var i = this, s = i.usePaths(), o = a._private.rscratch, l = a.pstyle("".concat(e, "-padding")).pfValue, u = 2 * l, f = a.pstyle("".concat(e, "-color")).value; + r.lineWidth = u, o.edgeType === "self" && !s ? r.lineCap = "butt" : r.lineCap = "round", i.colorStrokeStyle(r, f[0], f[1], f[2], n), i.drawEdgePath(a, r, o.allpts, "solid"); + } + } + }; +}; +Bt.drawEdgeOverlay = ml("overlay"); +Bt.drawEdgeUnderlay = ml("underlay"); +Bt.drawEdgePath = function(t, e, r, a) { + var n = t._private.rscratch, i = e, s, o = !1, l = this.usePaths(), u = t.pstyle("line-dash-pattern").pfValue, f = t.pstyle("line-dash-offset").pfValue; + if (l) { + var h = r.join("$"), c = n.pathCacheKey && n.pathCacheKey === h; + c ? (s = e = n.pathCache, o = !0) : (s = e = new Path2D(), n.pathCacheKey = h, n.pathCache = s); + } + if (i.setLineDash) + switch (a) { + case "dotted": + i.setLineDash([1, 1]); + break; + case "dashed": + i.setLineDash(u), i.lineDashOffset = f; + break; + case "solid": + i.setLineDash([]); + break; + } + if (!o && !n.badLine) + switch (e.beginPath && e.beginPath(), e.moveTo(r[0], r[1]), n.edgeType) { + case "bezier": + case "self": + case "compound": + case "multibezier": + for (var v = 2; v + 3 < r.length; v += 4) + e.quadraticCurveTo(r[v], r[v + 1], r[v + 2], r[v + 3]); + break; + case "straight": + case "segments": + case "haystack": + for (var d = 2; d + 1 < r.length; d += 2) + e.lineTo(r[d], r[d + 1]); + break; + } + e = i, l ? e.stroke(s) : e.stroke(), e.setLineDash && e.setLineDash([]); +}; +Bt.drawEdgeTrianglePath = function(t, e, r) { + e.fillStyle = e.strokeStyle; + for (var a = t.pstyle("width").pfValue, n = 0; n + 1 < r.length; n += 2) { + var i = [r[n + 2] - r[n], r[n + 3] - r[n + 1]], s = Math.sqrt(i[0] * i[0] + i[1] * i[1]), o = [i[1] / s, -i[0] / s], l = [o[0] * a / 2, o[1] * a / 2]; + e.beginPath(), e.moveTo(r[n] - l[0], r[n + 1] - l[1]), e.lineTo(r[n] + l[0], r[n + 1] + l[1]), e.lineTo(r[n + 2], r[n + 3]), e.closePath(), e.fill(); + } +}; +Bt.drawArrowheads = function(t, e, r) { + var a = e._private.rscratch, n = a.edgeType === "haystack"; + n || this.drawArrowhead(t, e, "source", a.arrowStartX, a.arrowStartY, a.srcArrowAngle, r), this.drawArrowhead(t, e, "mid-target", a.midX, a.midY, a.midtgtArrowAngle, r), this.drawArrowhead(t, e, "mid-source", a.midX, a.midY, a.midsrcArrowAngle, r), n || this.drawArrowhead(t, e, "target", a.arrowEndX, a.arrowEndY, a.tgtArrowAngle, r); +}; +Bt.drawArrowhead = function(t, e, r, a, n, i, s) { + if (!(isNaN(a) || a == null || isNaN(n) || n == null || isNaN(i) || i == null)) { + var o = this, l = e.pstyle(r + "-arrow-shape").value; + if (l !== "none") { + var u = e.pstyle(r + "-arrow-fill").value === "hollow" ? "both" : "filled", f = e.pstyle(r + "-arrow-fill").value, h = e.pstyle("width").pfValue, c = e.pstyle(r + "-arrow-width"), v = c.value === "match-line" ? h : c.pfValue; + c.units === "%" && (v *= h); + var d = e.pstyle("opacity").value; + s === void 0 && (s = d); + var g = t.globalCompositeOperation; + (s !== 1 || f === "hollow") && (t.globalCompositeOperation = "destination-out", o.colorFillStyle(t, 255, 255, 255, 1), o.colorStrokeStyle(t, 255, 255, 255, 1), o.drawArrowShape(e, t, u, h, l, v, a, n, i), t.globalCompositeOperation = g); + var p = e.pstyle(r + "-arrow-color").value; + o.colorFillStyle(t, p[0], p[1], p[2], s), o.colorStrokeStyle(t, p[0], p[1], p[2], s), o.drawArrowShape(e, t, f, h, l, v, a, n, i); + } + } +}; +Bt.drawArrowShape = function(t, e, r, a, n, i, s, o, l) { + var u = this, f = this.usePaths() && n !== "triangle-cross", h = !1, c, v = e, d = { + x: s, + y: o + }, g = t.pstyle("arrow-scale").value, p = this.getArrowWidth(a, g), y = u.arrowShapes[n]; + if (f) { + var E = u.arrowPathCache = u.arrowPathCache || [], m = ar(n), T = E[m]; + T != null ? (c = e = T, h = !0) : (c = e = new Path2D(), E[m] = c); + } + h || (e.beginPath && e.beginPath(), f ? y.draw(e, 1, 0, { + x: 0, + y: 0 + }, 1) : y.draw(e, p, l, d, a), e.closePath && e.closePath()), e = v, f && (e.translate(s, o), e.rotate(l), e.scale(p, p)), (r === "filled" || r === "both") && (f ? e.fill(c) : e.fill()), (r === "hollow" || r === "both") && (e.lineWidth = i / (f ? p : 1), e.lineJoin = "miter", f ? e.stroke(c) : e.stroke()), f && (e.scale(1 / p, 1 / p), e.rotate(-l), e.translate(-s, -o)); +}; +var wi = {}; +wi.safeDrawImage = function(t, e, r, a, n, i, s, o, l, u) { + if (!(n <= 0 || i <= 0 || l <= 0 || u <= 0)) + try { + t.drawImage(e, r, a, n, i, s, o, l, u); + } catch (f) { + Ne(f); + } +}; +wi.drawInscribedImage = function(t, e, r, a, n) { + var i = this, s = r.position(), o = s.x, l = s.y, u = r.cy().style(), f = u.getIndexedStyle.bind(u), h = f(r, "background-fit", "value", a), c = f(r, "background-repeat", "value", a), v = r.width(), d = r.height(), g = r.padding() * 2, p = v + (f(r, "background-width-relative-to", "value", a) === "inner" ? 0 : g), y = d + (f(r, "background-height-relative-to", "value", a) === "inner" ? 0 : g), E = r._private.rscratch, m = f(r, "background-clip", "value", a), T = m === "node", C = f(r, "background-image-opacity", "value", a) * n, S = f(r, "background-image-smoothing", "value", a), b = e.width || e.cachedW, x = e.height || e.cachedH; + (b == null || x == null) && (document.body.appendChild(e), b = e.cachedW = e.width || e.offsetWidth, x = e.cachedH = e.height || e.offsetHeight, document.body.removeChild(e)); + var w = b, D = x; + if (f(r, "background-width", "value", a) !== "auto" && (f(r, "background-width", "units", a) === "%" ? w = f(r, "background-width", "pfValue", a) * p : w = f(r, "background-width", "pfValue", a)), f(r, "background-height", "value", a) !== "auto" && (f(r, "background-height", "units", a) === "%" ? D = f(r, "background-height", "pfValue", a) * y : D = f(r, "background-height", "pfValue", a)), !(w === 0 || D === 0)) { + if (h === "contain") { + var A = Math.min(p / w, y / D); + w *= A, D *= A; + } else if (h === "cover") { + var A = Math.max(p / w, y / D); + w *= A, D *= A; + } + var L = o - p / 2, I = f(r, "background-position-x", "units", a), O = f(r, "background-position-x", "pfValue", a); + I === "%" ? L += (p - w) * O : L += O; + var P = f(r, "background-offset-x", "units", a), R = f(r, "background-offset-x", "pfValue", a); + P === "%" ? L += (p - w) * R : L += R; + var M = l - y / 2, k = f(r, "background-position-y", "units", a), B = f(r, "background-position-y", "pfValue", a); + k === "%" ? M += (y - D) * B : M += B; + var G = f(r, "background-offset-y", "units", a), F = f(r, "background-offset-y", "pfValue", a); + G === "%" ? M += (y - D) * F : M += F, E.pathCache && (L -= o, M -= l, o = 0, l = 0); + var $ = t.globalAlpha; + t.globalAlpha = C; + var U = i.getImgSmoothing(t), _ = !1; + if (S === "no" && U ? (i.setImgSmoothing(t, !1), _ = !0) : S === "yes" && !U && (i.setImgSmoothing(t, !0), _ = !0), c === "no-repeat") + T && (t.save(), E.pathCache ? t.clip(E.pathCache) : (i.nodeShapes[i.getNodeShape(r)].draw(t, o, l, p, y), t.clip())), i.safeDrawImage(t, e, 0, 0, b, x, L, M, w, D), T && t.restore(); + else { + var Y = t.createPattern(e, c); + t.fillStyle = Y, i.nodeShapes[i.getNodeShape(r)].draw(t, o, l, p, y), t.translate(L, M), t.fill(), t.translate(-L, -M); + } + t.globalAlpha = $, _ && i.setImgSmoothing(t, U); + } +}; +var hr = {}; +hr.eleTextBiggerThanMin = function(t, e) { + if (!e) { + var r = t.cy().zoom(), a = this.getPixelRatio(), n = Math.ceil(ui(r * a)); + e = Math.pow(2, n); + } + var i = t.pstyle("font-size").pfValue * e, s = t.pstyle("min-zoomed-font-size").pfValue; + return !(i < s); +}; +hr.drawElementText = function(t, e, r, a, n) { + var i = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0, s = this; + if (a == null) { + if (i && !s.eleTextBiggerThanMin(e)) + return; + } else if (a === !1) + return; + if (e.isNode()) { + var o = e.pstyle("label"); + if (!o || !o.value) + return; + var l = s.getLabelJustification(e); + t.textAlign = l, t.textBaseline = "bottom"; + } else { + var u = e.element()._private.rscratch.badLine, f = e.pstyle("label"), h = e.pstyle("source-label"), c = e.pstyle("target-label"); + if (u || (!f || !f.value) && (!h || !h.value) && (!c || !c.value)) + return; + t.textAlign = "center", t.textBaseline = "bottom"; + } + var v = !r, d; + r && (d = r, t.translate(-d.x1, -d.y1)), n == null ? (s.drawText(t, e, null, v, i), e.isEdge() && (s.drawText(t, e, "source", v, i), s.drawText(t, e, "target", v, i))) : s.drawText(t, e, n, v, i), r && t.translate(d.x1, d.y1); +}; +hr.getFontCache = function(t) { + var e; + this.fontCaches = this.fontCaches || []; + for (var r = 0; r < this.fontCaches.length; r++) + if (e = this.fontCaches[r], e.context === t) + return e; + return e = { + context: t + }, this.fontCaches.push(e), e; +}; +hr.setupTextStyle = function(t, e) { + var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0, a = e.pstyle("font-style").strValue, n = e.pstyle("font-size").pfValue + "px", i = e.pstyle("font-family").strValue, s = e.pstyle("font-weight").strValue, o = r ? e.effectiveOpacity() * e.pstyle("text-opacity").value : 1, l = e.pstyle("text-outline-opacity").value * o, u = e.pstyle("color").value, f = e.pstyle("text-outline-color").value; + t.font = a + " " + s + " " + n + " " + i, t.lineJoin = "round", this.colorFillStyle(t, u[0], u[1], u[2], o), this.colorStrokeStyle(t, f[0], f[1], f[2], l); +}; +function Pn(t, e, r, a, n) { + var i = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 5, s = arguments.length > 6 ? arguments[6] : void 0; + t.beginPath(), t.moveTo(e + i, r), t.lineTo(e + a - i, r), t.quadraticCurveTo(e + a, r, e + a, r + i), t.lineTo(e + a, r + n - i), t.quadraticCurveTo(e + a, r + n, e + a - i, r + n), t.lineTo(e + i, r + n), t.quadraticCurveTo(e, r + n, e, r + n - i), t.lineTo(e, r + i), t.quadraticCurveTo(e, r, e + i, r), t.closePath(), s ? t.stroke() : t.fill(); +} +hr.getTextAngle = function(t, e) { + var r, a = t._private, n = a.rscratch, i = e ? e + "-" : "", s = t.pstyle(i + "text-rotation"), o = xt(n, "labelAngle", e); + return s.strValue === "autorotate" ? r = t.isEdge() ? o : 0 : s.strValue === "none" ? r = 0 : r = s.pfValue, r; +}; +hr.drawText = function(t, e, r) { + var a = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0, n = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0, i = e._private, s = i.rscratch, o = n ? e.effectiveOpacity() : 1; + if (!(n && (o === 0 || e.pstyle("text-opacity").value === 0))) { + r === "main" && (r = null); + var l = xt(s, "labelX", r), u = xt(s, "labelY", r), f, h, c = this.getLabelText(e, r); + if (c != null && c !== "" && !isNaN(l) && !isNaN(u)) { + this.setupTextStyle(t, e, n); + var v = r ? r + "-" : "", d = xt(s, "labelWidth", r), g = xt(s, "labelHeight", r), p = e.pstyle(v + "text-margin-x").pfValue, y = e.pstyle(v + "text-margin-y").pfValue, E = e.isEdge(), m = e.pstyle("text-halign").value, T = e.pstyle("text-valign").value; + E && (m = "center", T = "center"), l += p, u += y; + var C; + switch (a ? C = this.getTextAngle(e, r) : C = 0, C !== 0 && (f = l, h = u, t.translate(f, h), t.rotate(C), l = 0, u = 0), T) { + case "top": + break; + case "center": + u += g / 2; + break; + case "bottom": + u += g; + break; + } + var S = e.pstyle("text-background-opacity").value, b = e.pstyle("text-border-opacity").value, x = e.pstyle("text-border-width").pfValue, w = e.pstyle("text-background-padding").pfValue, D = e.pstyle("text-background-shape").strValue, A = D.indexOf("round") === 0, L = 2; + if (S > 0 || x > 0 && b > 0) { + var I = l - w; + switch (m) { + case "left": + I -= d; + break; + case "center": + I -= d / 2; + break; + } + var O = u - g - w, P = d + 2 * w, R = g + 2 * w; + if (S > 0) { + var M = t.fillStyle, k = e.pstyle("text-background-color").value; + t.fillStyle = "rgba(" + k[0] + "," + k[1] + "," + k[2] + "," + S * o + ")", A ? Pn(t, I, O, P, R, L) : t.fillRect(I, O, P, R), t.fillStyle = M; + } + if (x > 0 && b > 0) { + var B = t.strokeStyle, G = t.lineWidth, F = e.pstyle("text-border-color").value, $ = e.pstyle("text-border-style").value; + if (t.strokeStyle = "rgba(" + F[0] + "," + F[1] + "," + F[2] + "," + b * o + ")", t.lineWidth = x, t.setLineDash) + switch ($) { + case "dotted": + t.setLineDash([1, 1]); + break; + case "dashed": + t.setLineDash([4, 2]); + break; + case "double": + t.lineWidth = x / 4, t.setLineDash([]); + break; + case "solid": + t.setLineDash([]); + break; + } + if (A ? Pn(t, I, O, P, R, L, "stroke") : t.strokeRect(I, O, P, R), $ === "double") { + var U = x / 2; + A ? Pn(t, I + U, O + U, P - U * 2, R - U * 2, L, "stroke") : t.strokeRect(I + U, O + U, P - U * 2, R - U * 2); + } + t.setLineDash && t.setLineDash([]), t.lineWidth = G, t.strokeStyle = B; + } + } + var _ = 2 * e.pstyle("text-outline-width").pfValue; + if (_ > 0 && (t.lineWidth = _), e.pstyle("text-wrap").value === "wrap") { + var Y = xt(s, "labelWrapCachedLines", r), W = xt(s, "labelLineHeight", r), z = d / 2, K = this.getLabelJustification(e); + switch (K === "auto" || (m === "left" ? K === "left" ? l += -d : K === "center" && (l += -z) : m === "center" ? K === "left" ? l += -z : K === "right" && (l += z) : m === "right" && (K === "center" ? l += z : K === "right" && (l += d))), T) { + case "top": + u -= (Y.length - 1) * W; + break; + case "center": + case "bottom": + u -= (Y.length - 1) * W; + break; + } + for (var j = 0; j < Y.length; j++) + _ > 0 && t.strokeText(Y[j], l, u), t.fillText(Y[j], l, u), u += W; + } else + _ > 0 && t.strokeText(c, l, u), t.fillText(c, l, u); + C !== 0 && (t.rotate(-C), t.translate(-f, -h)); + } + } +}; +var Gr = {}; +Gr.drawNode = function(t, e, r) { + var a = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0, n = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0, i = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0, s = this, o, l, u = e._private, f = u.rscratch, h = e.position(); + if (!(!ae(h.x) || !ae(h.y)) && !(i && !e.visible())) { + var c = i ? e.effectiveOpacity() : 1, v = s.usePaths(), d, g = !1, p = e.padding(); + o = e.width() + 2 * p, l = e.height() + 2 * p; + var y; + r && (y = r, t.translate(-y.x1, -y.y1)); + for (var E = e.pstyle("background-image"), m = E.value, T = new Array(m.length), C = new Array(m.length), S = 0, b = 0; b < m.length; b++) { + var x = m[b], w = T[b] = x != null && x !== "none"; + if (w) { + var D = e.cy().style().getIndexedStyle(e, "background-image-crossorigin", "value", b); + S++, C[b] = s.getCachedImage(x, D, function() { + u.backgroundTimestamp = Date.now(), e.emitAndNotify("background"); + }); + } + } + var A = e.pstyle("background-blacken").value, L = e.pstyle("border-width").pfValue, I = e.pstyle("background-opacity").value * c, O = e.pstyle("border-color").value, P = e.pstyle("border-style").value, R = e.pstyle("border-opacity").value * c, M = e.pstyle("outline-width").pfValue, k = e.pstyle("outline-color").value, B = e.pstyle("outline-style").value, G = e.pstyle("outline-opacity").value * c, F = e.pstyle("outline-offset").value; + t.lineJoin = "miter"; + var $ = function() { + var H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : I; + s.eleFillStyle(t, e, H); + }, U = function() { + var H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : R; + s.colorStrokeStyle(t, O[0], O[1], O[2], H); + }, _ = function() { + var H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : G; + s.colorStrokeStyle(t, k[0], k[1], k[2], H); + }, Y = function(H, N, V, J) { + var X = s.nodePathCache = s.nodePathCache || [], q = go(V === "polygon" ? V + "," + J.join(",") : V, "" + N, "" + H), he = X[q], Z, oe = !1; + return he != null ? (Z = he, oe = !0, f.pathCache = Z) : (Z = new Path2D(), X[q] = f.pathCache = Z), { + path: Z, + cacheHit: oe + }; + }, W = e.pstyle("shape").strValue, z = e.pstyle("shape-polygon-points").pfValue; + if (v) { + t.translate(h.x, h.y); + var K = Y(o, l, W, z); + d = K.path, g = K.cacheHit; + } + var j = function() { + if (!g) { + var H = h; + v && (H = { + x: 0, + y: 0 + }), s.nodeShapes[s.getNodeShape(e)].draw(d || t, H.x, H.y, o, l); + } + v ? t.fill(d) : t.fill(); + }, Q = function() { + for (var H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : c, N = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0, V = u.backgrounding, J = 0, X = 0; X < C.length; X++) { + var q = e.cy().style().getIndexedStyle(e, "background-image-containment", "value", X); + if (N && q === "over" || !N && q === "inside") { + J++; + continue; + } + T[X] && C[X].complete && !C[X].error && (J++, s.drawInscribedImage(t, C[X], e, X, H)); + } + u.backgrounding = J !== S, V !== u.backgrounding && e.updateStyle(!1); + }, ee = function() { + var H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, N = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : c; + s.hasPie(e) && (s.drawPie(t, e, N), H && (v || s.nodeShapes[s.getNodeShape(e)].draw(t, h.x, h.y, o, l))); + }, ne = function() { + var H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : c, N = (A > 0 ? A : -A) * H, V = A > 0 ? 0 : 255; + A !== 0 && (s.colorFillStyle(t, V, V, V, N), v ? t.fill(d) : t.fill()); + }, ce = function() { + if (L > 0) { + if (t.lineWidth = L, t.lineCap = "butt", t.setLineDash) + switch (P) { + case "dotted": + t.setLineDash([1, 1]); + break; + case "dashed": + t.setLineDash([4, 2]); + break; + case "solid": + case "double": + t.setLineDash([]); + break; + } + if (v ? t.stroke(d) : t.stroke(), P === "double") { + t.lineWidth = L / 3; + var H = t.globalCompositeOperation; + t.globalCompositeOperation = "destination-out", v ? t.stroke(d) : t.stroke(), t.globalCompositeOperation = H; + } + t.setLineDash && t.setLineDash([]); + } + }, te = function() { + if (M > 0) { + if (t.lineWidth = M, t.lineCap = "butt", t.setLineDash) + switch (B) { + case "dotted": + t.setLineDash([1, 1]); + break; + case "dashed": + t.setLineDash([4, 2]); + break; + case "solid": + case "double": + t.setLineDash([]); + break; + } + var H = h; + v && (H = { + x: 0, + y: 0 + }); + var N = s.getNodeShape(e), V = (o + L + (M + F)) / o, J = (l + L + (M + F)) / l, X = o * V, q = l * J, he = s.nodeShapes[N].points, Z; + if (v) { + var oe = Y(X, q, N, he); + Z = oe.path; + } + if (N === "ellipse") + s.drawEllipsePath(Z || t, H.x, H.y, X, q); + else if (["round-diamond", "round-heptagon", "round-hexagon", "round-octagon", "round-pentagon", "round-polygon", "round-triangle", "round-tag"].includes(N)) { + var me = 0, Se = 0, pe = 0; + N === "round-diamond" ? me = (L + F + M) * 1.4 : N === "round-heptagon" ? (me = (L + F + M) * 1.075, pe = -(L / 2 + F + M) / 35) : N === "round-hexagon" ? me = (L + F + M) * 1.12 : N === "round-pentagon" ? (me = (L + F + M) * 1.13, pe = -(L / 2 + F + M) / 15) : N === "round-tag" ? (me = (L + F + M) * 1.12, Se = (L / 2 + M + F) * 0.07) : N === "round-triangle" && (me = (L + F + M) * (Math.PI / 2), pe = -(L + F / 2 + M) / Math.PI), me !== 0 && (V = (o + me) / o, J = (l + me) / l), s.drawRoundPolygonPath(Z || t, H.x + Se, H.y + pe, o * V, l * J, he); + } else if (["roundrectangle", "round-rectangle"].includes(N)) + s.drawRoundRectanglePath(Z || t, H.x, H.y, X, q); + else if (["cutrectangle", "cut-rectangle"].includes(N)) + s.drawCutRectanglePath(Z || t, H.x, H.y, X, q); + else if (["bottomroundrectangle", "bottom-round-rectangle"].includes(N)) + s.drawBottomRoundRectanglePath(Z || t, H.x, H.y, X, q); + else if (N === "barrel") + s.drawBarrelPath(Z || t, H.x, H.y, X, q); + else if (N.startsWith("polygon") || ["rhomboid", "right-rhomboid", "round-tag", "tag", "vee"].includes(N)) { + var Te = (L + M + F) / o; + he = Wa(qa(he, Te)), s.drawPolygonPath(Z || t, H.x, H.y, o, l, he); + } else { + var ye = (L + M + F) / o; + he = Wa(qa(he, -ye)), s.drawPolygonPath(Z || t, H.x, H.y, o, l, he); + } + if (v ? t.stroke(Z) : t.stroke(), B === "double") { + t.lineWidth = L / 3; + var be = t.globalCompositeOperation; + t.globalCompositeOperation = "destination-out", v ? t.stroke(Z) : t.stroke(), t.globalCompositeOperation = be; + } + t.setLineDash && t.setLineDash([]); + } + }, re = function() { + n && s.drawNodeOverlay(t, e, h, o, l); + }, ue = function() { + n && s.drawNodeUnderlay(t, e, h, o, l); + }, le = function() { + s.drawElementText(t, e, null, a); + }, se = e.pstyle("ghost").value === "yes"; + if (se) { + var fe = e.pstyle("ghost-offset-x").pfValue, xe = e.pstyle("ghost-offset-y").pfValue, Ee = e.pstyle("ghost-opacity").value, ge = Ee * c; + t.translate(fe, xe), _(), te(), $(Ee * I), j(), Q(ge, !0), U(Ee * R), ce(), ee(A !== 0 || L !== 0), Q(ge, !1), ne(ge), t.translate(-fe, -xe); + } + v && t.translate(-h.x, -h.y), ue(), v && t.translate(h.x, h.y), _(), te(), $(), j(), Q(c, !0), U(), ce(), ee(A !== 0 || L !== 0), Q(c, !1), ne(), v && t.translate(-h.x, -h.y), le(), re(), r && t.translate(y.x1, y.y1); + } +}; +var bl = function(e) { + if (!["overlay", "underlay"].includes(e)) + throw new Error("Invalid state"); + return function(r, a, n, i, s) { + var o = this; + if (a.visible()) { + var l = a.pstyle("".concat(e, "-padding")).pfValue, u = a.pstyle("".concat(e, "-opacity")).value, f = a.pstyle("".concat(e, "-color")).value, h = a.pstyle("".concat(e, "-shape")).value; + if (u > 0) { + if (n = n || a.position(), i == null || s == null) { + var c = a.padding(); + i = a.width() + 2 * c, s = a.height() + 2 * c; + } + o.colorFillStyle(r, f[0], f[1], f[2], u), o.nodeShapes[h].draw(r, n.x, n.y, i + l * 2, s + l * 2), r.fill(); + } + } + }; +}; +Gr.drawNodeOverlay = bl("overlay"); +Gr.drawNodeUnderlay = bl("underlay"); +Gr.hasPie = function(t) { + return t = t[0], t._private.hasPie; +}; +Gr.drawPie = function(t, e, r, a) { + e = e[0], a = a || e.position(); + var n = e.cy().style(), i = e.pstyle("pie-size"), s = a.x, o = a.y, l = e.width(), u = e.height(), f = Math.min(l, u) / 2, h = 0, c = this.usePaths(); + c && (s = 0, o = 0), i.units === "%" ? f = f * i.pfValue : i.pfValue !== void 0 && (f = i.pfValue / 2); + for (var v = 1; v <= n.pieBackgroundN; v++) { + var d = e.pstyle("pie-" + v + "-background-size").value, g = e.pstyle("pie-" + v + "-background-color").value, p = e.pstyle("pie-" + v + "-background-opacity").value * r, y = d / 100; + y + h > 1 && (y = 1 - h); + var E = 1.5 * Math.PI + 2 * Math.PI * h, m = 2 * Math.PI * y, T = E + m; + d === 0 || h >= 1 || h + y > 1 || (t.beginPath(), t.moveTo(s, o), t.arc(s, o, f, E, T), t.closePath(), this.colorFillStyle(t, g[0], g[1], g[2], p), t.fill(), h += y); + } +}; +var vt = {}, hm = 100; +vt.getPixelRatio = function() { + var t = this.data.contexts[0]; + if (this.forcedPixelRatio != null) + return this.forcedPixelRatio; + var e = t.backingStorePixelRatio || t.webkitBackingStorePixelRatio || t.mozBackingStorePixelRatio || t.msBackingStorePixelRatio || t.oBackingStorePixelRatio || t.backingStorePixelRatio || 1; + return (window.devicePixelRatio || 1) / e; +}; +vt.paintCache = function(t) { + for (var e = this.paintCaches = this.paintCaches || [], r = !0, a, n = 0; n < e.length; n++) + if (a = e[n], a.context === t) { + r = !1; + break; + } + return r && (a = { + context: t + }, e.push(a)), a; +}; +vt.createGradientStyleFor = function(t, e, r, a, n) { + var i, s = this.usePaths(), o = r.pstyle(e + "-gradient-stop-colors").value, l = r.pstyle(e + "-gradient-stop-positions").pfValue; + if (a === "radial-gradient") + if (r.isEdge()) { + var u = r.sourceEndpoint(), f = r.targetEndpoint(), h = r.midpoint(), c = nr(u, h), v = nr(f, h); + i = t.createRadialGradient(h.x, h.y, 0, h.x, h.y, Math.max(c, v)); + } else { + var d = s ? { + x: 0, + y: 0 + } : r.position(), g = r.paddedWidth(), p = r.paddedHeight(); + i = t.createRadialGradient(d.x, d.y, 0, d.x, d.y, Math.max(g, p)); + } + else if (r.isEdge()) { + var y = r.sourceEndpoint(), E = r.targetEndpoint(); + i = t.createLinearGradient(y.x, y.y, E.x, E.y); + } else { + var m = s ? { + x: 0, + y: 0 + } : r.position(), T = r.paddedWidth(), C = r.paddedHeight(), S = T / 2, b = C / 2, x = r.pstyle("background-gradient-direction").value; + switch (x) { + case "to-bottom": + i = t.createLinearGradient(m.x, m.y - b, m.x, m.y + b); + break; + case "to-top": + i = t.createLinearGradient(m.x, m.y + b, m.x, m.y - b); + break; + case "to-left": + i = t.createLinearGradient(m.x + S, m.y, m.x - S, m.y); + break; + case "to-right": + i = t.createLinearGradient(m.x - S, m.y, m.x + S, m.y); + break; + case "to-bottom-right": + case "to-right-bottom": + i = t.createLinearGradient(m.x - S, m.y - b, m.x + S, m.y + b); + break; + case "to-top-right": + case "to-right-top": + i = t.createLinearGradient(m.x - S, m.y + b, m.x + S, m.y - b); + break; + case "to-bottom-left": + case "to-left-bottom": + i = t.createLinearGradient(m.x + S, m.y - b, m.x - S, m.y + b); + break; + case "to-top-left": + case "to-left-top": + i = t.createLinearGradient(m.x + S, m.y + b, m.x - S, m.y - b); + break; + } + } + if (!i) + return null; + for (var w = l.length === o.length, D = o.length, A = 0; A < D; A++) + i.addColorStop(w ? l[A] : A / (D - 1), "rgba(" + o[A][0] + "," + o[A][1] + "," + o[A][2] + "," + n + ")"); + return i; +}; +vt.gradientFillStyle = function(t, e, r, a) { + var n = this.createGradientStyleFor(t, "background", e, r, a); + if (!n) + return null; + t.fillStyle = n; +}; +vt.colorFillStyle = function(t, e, r, a, n) { + t.fillStyle = "rgba(" + e + "," + r + "," + a + "," + n + ")"; +}; +vt.eleFillStyle = function(t, e, r) { + var a = e.pstyle("background-fill").value; + if (a === "linear-gradient" || a === "radial-gradient") + this.gradientFillStyle(t, e, a, r); + else { + var n = e.pstyle("background-color").value; + this.colorFillStyle(t, n[0], n[1], n[2], r); + } +}; +vt.gradientStrokeStyle = function(t, e, r, a) { + var n = this.createGradientStyleFor(t, "line", e, r, a); + if (!n) + return null; + t.strokeStyle = n; +}; +vt.colorStrokeStyle = function(t, e, r, a, n) { + t.strokeStyle = "rgba(" + e + "," + r + "," + a + "," + n + ")"; +}; +vt.eleStrokeStyle = function(t, e, r) { + var a = e.pstyle("line-fill").value; + if (a === "linear-gradient" || a === "radial-gradient") + this.gradientStrokeStyle(t, e, a, r); + else { + var n = e.pstyle("line-color").value; + this.colorStrokeStyle(t, n[0], n[1], n[2], r); + } +}; +vt.matchCanvasSize = function(t) { + var e = this, r = e.data, a = e.findContainerClientCoords(), n = a[2], i = a[3], s = e.getPixelRatio(), o = e.motionBlurPxRatio; + (t === e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE] || t === e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG]) && (s = o); + var l = n * s, u = i * s, f; + if (!(l === e.canvasWidth && u === e.canvasHeight)) { + e.fontCaches = null; + var h = r.canvasContainer; + h.style.width = n + "px", h.style.height = i + "px"; + for (var c = 0; c < e.CANVAS_LAYERS; c++) + f = r.canvases[c], f.width = l, f.height = u, f.style.width = n + "px", f.style.height = i + "px"; + for (var c = 0; c < e.BUFFER_COUNT; c++) + f = r.bufferCanvases[c], f.width = l, f.height = u, f.style.width = n + "px", f.style.height = i + "px"; + e.textureMult = 1, s <= 1 && (f = r.bufferCanvases[e.TEXTURE_BUFFER], e.textureMult = 2, f.width = l * e.textureMult, f.height = u * e.textureMult), e.canvasWidth = l, e.canvasHeight = u; + } +}; +vt.renderTo = function(t, e, r, a) { + this.render({ + forcedContext: t, + forcedZoom: e, + forcedPan: r, + drawAllLayers: !0, + forcedPxRatio: a + }); +}; +vt.render = function(t) { + t = t || bo(); + var e = t.forcedContext, r = t.drawAllLayers, a = t.drawOnlyNodeLayer, n = t.forcedZoom, i = t.forcedPan, s = this, o = t.forcedPxRatio === void 0 ? this.getPixelRatio() : t.forcedPxRatio, l = s.cy, u = s.data, f = u.canvasNeedsRedraw, h = s.textureOnViewport && !e && (s.pinching || s.hoverData.dragging || s.swipePanning || s.data.wheelZooming), c = t.motionBlur !== void 0 ? t.motionBlur : s.motionBlur, v = s.motionBlurPxRatio, d = l.hasCompoundNodes(), g = s.hoverData.draggingEles, p = !!(s.hoverData.selecting || s.touchData.selecting); + c = c && !e && s.motionBlurEnabled && !p; + var y = c; + e || (s.prevPxRatio !== o && (s.invalidateContainerClientCoordsCache(), s.matchCanvasSize(s.container), s.redrawHint("eles", !0), s.redrawHint("drag", !0)), s.prevPxRatio = o), !e && s.motionBlurTimeout && clearTimeout(s.motionBlurTimeout), c && (s.mbFrames == null && (s.mbFrames = 0), s.mbFrames++, s.mbFrames < 3 && (y = !1), s.mbFrames > s.minMbLowQualFrames && (s.motionBlurPxRatio = s.mbPxRBlurry)), s.clearingMotionBlur && (s.motionBlurPxRatio = 1), s.textureDrawLastFrame && !h && (f[s.NODE] = !0, f[s.SELECT_BOX] = !0); + var E = l.style(), m = l.zoom(), T = n !== void 0 ? n : m, C = l.pan(), S = { + x: C.x, + y: C.y + }, b = { + zoom: m, + pan: { + x: C.x, + y: C.y + } + }, x = s.prevViewport, w = x === void 0 || b.zoom !== x.zoom || b.pan.x !== x.pan.x || b.pan.y !== x.pan.y; + !w && !(g && !d) && (s.motionBlurPxRatio = 1), i && (S = i), T *= o, S.x *= o, S.y *= o; + var D = s.getCachedZSortedEles(); + function A(te, re, ue, le, se) { + var fe = te.globalCompositeOperation; + te.globalCompositeOperation = "destination-out", s.colorFillStyle(te, 255, 255, 255, s.motionBlurTransparency), te.fillRect(re, ue, le, se), te.globalCompositeOperation = fe; + } + function L(te, re) { + var ue, le, se, fe; + !s.clearingMotionBlur && (te === u.bufferContexts[s.MOTIONBLUR_BUFFER_NODE] || te === u.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]) ? (ue = { + x: C.x * v, + y: C.y * v + }, le = m * v, se = s.canvasWidth * v, fe = s.canvasHeight * v) : (ue = S, le = T, se = s.canvasWidth, fe = s.canvasHeight), te.setTransform(1, 0, 0, 1, 0, 0), re === "motionBlur" ? A(te, 0, 0, se, fe) : !e && (re === void 0 || re) && te.clearRect(0, 0, se, fe), r || (te.translate(ue.x, ue.y), te.scale(le, le)), i && te.translate(i.x, i.y), n && te.scale(n, n); + } + if (h || (s.textureDrawLastFrame = !1), h) { + if (s.textureDrawLastFrame = !0, !s.textureCache) { + s.textureCache = {}, s.textureCache.bb = l.mutableElements().boundingBox(), s.textureCache.texture = s.data.bufferCanvases[s.TEXTURE_BUFFER]; + var I = s.data.bufferContexts[s.TEXTURE_BUFFER]; + I.setTransform(1, 0, 0, 1, 0, 0), I.clearRect(0, 0, s.canvasWidth * s.textureMult, s.canvasHeight * s.textureMult), s.render({ + forcedContext: I, + drawOnlyNodeLayer: !0, + forcedPxRatio: o * s.textureMult + }); + var b = s.textureCache.viewport = { + zoom: l.zoom(), + pan: l.pan(), + width: s.canvasWidth, + height: s.canvasHeight + }; + b.mpan = { + x: (0 - b.pan.x) / b.zoom, + y: (0 - b.pan.y) / b.zoom + }; + } + f[s.DRAG] = !1, f[s.NODE] = !1; + var O = u.contexts[s.NODE], P = s.textureCache.texture, b = s.textureCache.viewport; + O.setTransform(1, 0, 0, 1, 0, 0), c ? A(O, 0, 0, b.width, b.height) : O.clearRect(0, 0, b.width, b.height); + var R = E.core("outside-texture-bg-color").value, M = E.core("outside-texture-bg-opacity").value; + s.colorFillStyle(O, R[0], R[1], R[2], M), O.fillRect(0, 0, b.width, b.height); + var m = l.zoom(); + L(O, !1), O.clearRect(b.mpan.x, b.mpan.y, b.width / b.zoom / o, b.height / b.zoom / o), O.drawImage(P, b.mpan.x, b.mpan.y, b.width / b.zoom / o, b.height / b.zoom / o); + } else + s.textureOnViewport && !e && (s.textureCache = null); + var k = l.extent(), B = s.pinching || s.hoverData.dragging || s.swipePanning || s.data.wheelZooming || s.hoverData.draggingEles || s.cy.animated(), G = s.hideEdgesOnViewport && B, F = []; + if (F[s.NODE] = !f[s.NODE] && c && !s.clearedForMotionBlur[s.NODE] || s.clearingMotionBlur, F[s.NODE] && (s.clearedForMotionBlur[s.NODE] = !0), F[s.DRAG] = !f[s.DRAG] && c && !s.clearedForMotionBlur[s.DRAG] || s.clearingMotionBlur, F[s.DRAG] && (s.clearedForMotionBlur[s.DRAG] = !0), f[s.NODE] || r || a || F[s.NODE]) { + var $ = c && !F[s.NODE] && v !== 1, O = e || ($ ? s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE] : u.contexts[s.NODE]), U = c && !$ ? "motionBlur" : void 0; + L(O, U), G ? s.drawCachedNodes(O, D.nondrag, o, k) : s.drawLayeredElements(O, D.nondrag, o, k), s.debug && s.drawDebugPoints(O, D.nondrag), !r && !c && (f[s.NODE] = !1); + } + if (!a && (f[s.DRAG] || r || F[s.DRAG])) { + var $ = c && !F[s.DRAG] && v !== 1, O = e || ($ ? s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG] : u.contexts[s.DRAG]); + L(O, c && !$ ? "motionBlur" : void 0), G ? s.drawCachedNodes(O, D.drag, o, k) : s.drawCachedElements(O, D.drag, o, k), s.debug && s.drawDebugPoints(O, D.drag), !r && !c && (f[s.DRAG] = !1); + } + if (s.showFps || !a && f[s.SELECT_BOX] && !r) { + var O = e || u.contexts[s.SELECT_BOX]; + if (L(O), s.selection[4] == 1 && (s.hoverData.selecting || s.touchData.selecting)) { + var m = s.cy.zoom(), _ = E.core("selection-box-border-width").value / m; + O.lineWidth = _, O.fillStyle = "rgba(" + E.core("selection-box-color").value[0] + "," + E.core("selection-box-color").value[1] + "," + E.core("selection-box-color").value[2] + "," + E.core("selection-box-opacity").value + ")", O.fillRect(s.selection[0], s.selection[1], s.selection[2] - s.selection[0], s.selection[3] - s.selection[1]), _ > 0 && (O.strokeStyle = "rgba(" + E.core("selection-box-border-color").value[0] + "," + E.core("selection-box-border-color").value[1] + "," + E.core("selection-box-border-color").value[2] + "," + E.core("selection-box-opacity").value + ")", O.strokeRect(s.selection[0], s.selection[1], s.selection[2] - s.selection[0], s.selection[3] - s.selection[1])); + } + if (u.bgActivePosistion && !s.hoverData.selecting) { + var m = s.cy.zoom(), Y = u.bgActivePosistion; + O.fillStyle = "rgba(" + E.core("active-bg-color").value[0] + "," + E.core("active-bg-color").value[1] + "," + E.core("active-bg-color").value[2] + "," + E.core("active-bg-opacity").value + ")", O.beginPath(), O.arc(Y.x, Y.y, E.core("active-bg-size").pfValue / m, 0, 2 * Math.PI), O.fill(); + } + var W = s.lastRedrawTime; + if (s.showFps && W) { + W = Math.round(W); + var z = Math.round(1e3 / W); + O.setTransform(1, 0, 0, 1, 0, 0), O.fillStyle = "rgba(255, 0, 0, 0.75)", O.strokeStyle = "rgba(255, 0, 0, 0.75)", O.lineWidth = 1, O.fillText("1 frame = " + W + " ms = " + z + " fps", 0, 20); + var K = 60; + O.strokeRect(0, 30, 250, 20), O.fillRect(0, 30, 250 * Math.min(z / K, 1), 20); + } + r || (f[s.SELECT_BOX] = !1); + } + if (c && v !== 1) { + var j = u.contexts[s.NODE], Q = s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE], ee = u.contexts[s.DRAG], ne = s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG], ce = function(re, ue, le) { + re.setTransform(1, 0, 0, 1, 0, 0), le || !y ? re.clearRect(0, 0, s.canvasWidth, s.canvasHeight) : A(re, 0, 0, s.canvasWidth, s.canvasHeight); + var se = v; + re.drawImage( + ue, + // img + 0, + 0, + // sx, sy + s.canvasWidth * se, + s.canvasHeight * se, + // sw, sh + 0, + 0, + // x, y + s.canvasWidth, + s.canvasHeight + // w, h + ); + }; + (f[s.NODE] || F[s.NODE]) && (ce(j, Q, F[s.NODE]), f[s.NODE] = !1), (f[s.DRAG] || F[s.DRAG]) && (ce(ee, ne, F[s.DRAG]), f[s.DRAG] = !1); + } + s.prevViewport = b, s.clearingMotionBlur && (s.clearingMotionBlur = !1, s.motionBlurCleared = !0, s.motionBlur = !0), c && (s.motionBlurTimeout = setTimeout(function() { + s.motionBlurTimeout = null, s.clearedForMotionBlur[s.NODE] = !1, s.clearedForMotionBlur[s.DRAG] = !1, s.motionBlur = !1, s.clearingMotionBlur = !h, s.mbFrames = 0, f[s.NODE] = !0, f[s.DRAG] = !0, s.redraw(); + }, hm)), e || l.emit("render"); +}; +var Qt = {}; +Qt.drawPolygonPath = function(t, e, r, a, n, i) { + var s = a / 2, o = n / 2; + t.beginPath && t.beginPath(), t.moveTo(e + s * i[0], r + o * i[1]); + for (var l = 1; l < i.length / 2; l++) + t.lineTo(e + s * i[l * 2], r + o * i[l * 2 + 1]); + t.closePath(); +}; +Qt.drawRoundPolygonPath = function(t, e, r, a, n, i) { + var s = a / 2, o = n / 2, l = hi(a, n); + t.beginPath && t.beginPath(); + for (var u = 0; u < i.length / 4; u++) { + var f = void 0, h = void 0; + u === 0 ? f = i.length - 2 : f = u * 4 - 2, h = u * 4 + 2; + var c = e + s * i[u * 4], v = r + o * i[u * 4 + 1], d = -i[f] * i[h] - i[f + 1] * i[h + 1], g = l / Math.tan(Math.acos(d) / 2), p = c - g * i[f], y = v - g * i[f + 1], E = c + g * i[h], m = v + g * i[h + 1]; + u === 0 ? t.moveTo(p, y) : t.lineTo(p, y), t.arcTo(c, v, E, m, l); + } + t.closePath(); +}; +Qt.drawRoundRectanglePath = function(t, e, r, a, n) { + var i = a / 2, s = n / 2, o = da(a, n); + t.beginPath && t.beginPath(), t.moveTo(e, r - s), t.arcTo(e + i, r - s, e + i, r, o), t.arcTo(e + i, r + s, e, r + s, o), t.arcTo(e - i, r + s, e - i, r, o), t.arcTo(e - i, r - s, e, r - s, o), t.lineTo(e, r - s), t.closePath(); +}; +Qt.drawBottomRoundRectanglePath = function(t, e, r, a, n) { + var i = a / 2, s = n / 2, o = da(a, n); + t.beginPath && t.beginPath(), t.moveTo(e, r - s), t.lineTo(e + i, r - s), t.lineTo(e + i, r), t.arcTo(e + i, r + s, e, r + s, o), t.arcTo(e - i, r + s, e - i, r, o), t.lineTo(e - i, r - s), t.lineTo(e, r - s), t.closePath(); +}; +Qt.drawCutRectanglePath = function(t, e, r, a, n) { + var i = a / 2, s = n / 2, o = So(); + t.beginPath && t.beginPath(), t.moveTo(e - i + o, r - s), t.lineTo(e + i - o, r - s), t.lineTo(e + i, r - s + o), t.lineTo(e + i, r + s - o), t.lineTo(e + i - o, r + s), t.lineTo(e - i + o, r + s), t.lineTo(e - i, r + s - o), t.lineTo(e - i, r - s + o), t.closePath(); +}; +Qt.drawBarrelPath = function(t, e, r, a, n) { + var i = a / 2, s = n / 2, o = e - i, l = e + i, u = r - s, f = r + s, h = zn(a, n), c = h.widthOffset, v = h.heightOffset, d = h.ctrlPtOffsetPct * c; + t.beginPath && t.beginPath(), t.moveTo(o, u + v), t.lineTo(o, f - v), t.quadraticCurveTo(o + d, f, o + c, f), t.lineTo(l - c, f), t.quadraticCurveTo(l - d, f, l, f - v), t.lineTo(l, u + v), t.quadraticCurveTo(l - d, u, l - c, u), t.lineTo(o + c, u), t.quadraticCurveTo(o + d, u, o, u + v), t.closePath(); +}; +var Vs = Math.sin(0), _s = Math.cos(0), Wn = {}, qn = {}, El = Math.PI / 40; +for (var mr = 0 * Math.PI; mr < 2 * Math.PI; mr += El) + Wn[mr] = Math.sin(mr), qn[mr] = Math.cos(mr); +Qt.drawEllipsePath = function(t, e, r, a, n) { + if (t.beginPath && t.beginPath(), t.ellipse) + t.ellipse(e, r, a / 2, n / 2, 0, 0, 2 * Math.PI); + else + for (var i, s, o = a / 2, l = n / 2, u = 0 * Math.PI; u < 2 * Math.PI; u += El) + i = e - o * Wn[u] * Vs + o * qn[u] * _s, s = r + l * qn[u] * Vs + l * Wn[u] * _s, u === 0 ? t.moveTo(i, s) : t.lineTo(i, s); + t.closePath(); +}; +var ba = {}; +ba.createBuffer = function(t, e) { + var r = document.createElement("canvas"); + return r.width = t, r.height = e, [r, r.getContext("2d")]; +}; +ba.bufferCanvasImage = function(t) { + var e = this.cy, r = e.mutableElements(), a = r.boundingBox(), n = this.findContainerClientCoords(), i = t.full ? Math.ceil(a.w) : n[2], s = t.full ? Math.ceil(a.h) : n[3], o = ae(t.maxWidth) || ae(t.maxHeight), l = this.getPixelRatio(), u = 1; + if (t.scale !== void 0) + i *= t.scale, s *= t.scale, u = t.scale; + else if (o) { + var f = 1 / 0, h = 1 / 0; + ae(t.maxWidth) && (f = u * t.maxWidth / i), ae(t.maxHeight) && (h = u * t.maxHeight / s), u = Math.min(f, h), i *= u, s *= u; + } + o || (i *= l, s *= l, u *= l); + var c = document.createElement("canvas"); + c.width = i, c.height = s, c.style.width = i + "px", c.style.height = s + "px"; + var v = c.getContext("2d"); + if (i > 0 && s > 0) { + v.clearRect(0, 0, i, s), v.globalCompositeOperation = "source-over"; + var d = this.getCachedZSortedEles(); + if (t.full) + v.translate(-a.x1 * u, -a.y1 * u), v.scale(u, u), this.drawElements(v, d), v.scale(1 / u, 1 / u), v.translate(a.x1 * u, a.y1 * u); + else { + var g = e.pan(), p = { + x: g.x * u, + y: g.y * u + }; + u *= e.zoom(), v.translate(p.x, p.y), v.scale(u, u), this.drawElements(v, d), v.scale(1 / u, 1 / u), v.translate(-p.x, -p.y); + } + t.bg && (v.globalCompositeOperation = "destination-over", v.fillStyle = t.bg, v.rect(0, 0, i, s), v.fill()); + } + return c; +}; +function vm(t, e) { + for (var r = atob(t), a = new ArrayBuffer(r.length), n = new Uint8Array(a), i = 0; i < r.length; i++) + n[i] = r.charCodeAt(i); + return new Blob([a], { + type: e + }); +} +function Us(t) { + var e = t.indexOf(","); + return t.substr(e + 1); +} +function wl(t, e, r) { + var a = function() { + return e.toDataURL(r, t.quality); + }; + switch (t.output) { + case "blob-promise": + return new Rr(function(n, i) { + try { + e.toBlob(function(s) { + s != null ? n(s) : i(new Error("`canvas.toBlob()` sent a null value in its callback")); + }, r, t.quality); + } catch (s) { + i(s); + } + }); + case "blob": + return vm(Us(a()), r); + case "base64": + return Us(a()); + case "base64uri": + default: + return a(); + } +} +ba.png = function(t) { + return wl(t, this.bufferCanvasImage(t), "image/png"); +}; +ba.jpg = function(t) { + return wl(t, this.bufferCanvasImage(t), "image/jpeg"); +}; +var xl = {}; +xl.nodeShapeImpl = function(t, e, r, a, n, i, s) { + switch (t) { + case "ellipse": + return this.drawEllipsePath(e, r, a, n, i); + case "polygon": + return this.drawPolygonPath(e, r, a, n, i, s); + case "round-polygon": + return this.drawRoundPolygonPath(e, r, a, n, i, s); + case "roundrectangle": + case "round-rectangle": + return this.drawRoundRectanglePath(e, r, a, n, i); + case "cutrectangle": + case "cut-rectangle": + return this.drawCutRectanglePath(e, r, a, n, i); + case "bottomroundrectangle": + case "bottom-round-rectangle": + return this.drawBottomRoundRectanglePath(e, r, a, n, i); + case "barrel": + return this.drawBarrelPath(e, r, a, n, i); + } +}; +var cm = Tl, Le = Tl.prototype; +Le.CANVAS_LAYERS = 3; +Le.SELECT_BOX = 0; +Le.DRAG = 1; +Le.NODE = 2; +Le.BUFFER_COUNT = 3; +Le.TEXTURE_BUFFER = 0; +Le.MOTIONBLUR_BUFFER_NODE = 1; +Le.MOTIONBLUR_BUFFER_DRAG = 2; +function Tl(t) { + var e = this; + e.data = { + canvases: new Array(Le.CANVAS_LAYERS), + contexts: new Array(Le.CANVAS_LAYERS), + canvasNeedsRedraw: new Array(Le.CANVAS_LAYERS), + bufferCanvases: new Array(Le.BUFFER_COUNT), + bufferContexts: new Array(Le.CANVAS_LAYERS) + }; + var r = "-webkit-tap-highlight-color", a = "rgba(0,0,0,0)"; + e.data.canvasContainer = document.createElement("div"); + var n = e.data.canvasContainer.style; + e.data.canvasContainer.style[r] = a, n.position = "relative", n.zIndex = "0", n.overflow = "hidden"; + var i = t.cy.container(); + i.appendChild(e.data.canvasContainer), i.style[r] = a; + var s = { + "-webkit-user-select": "none", + "-moz-user-select": "-moz-none", + "user-select": "none", + "-webkit-tap-highlight-color": "rgba(0,0,0,0)", + "outline-style": "none" + }; + qc() && (s["-ms-touch-action"] = "none", s["touch-action"] = "none"); + for (var o = 0; o < Le.CANVAS_LAYERS; o++) { + var l = e.data.canvases[o] = document.createElement("canvas"); + e.data.contexts[o] = l.getContext("2d"), Object.keys(s).forEach(function(W) { + l.style[W] = s[W]; + }), l.style.position = "absolute", l.setAttribute("data-id", "layer" + o), l.style.zIndex = String(Le.CANVAS_LAYERS - o), e.data.canvasContainer.appendChild(l), e.data.canvasNeedsRedraw[o] = !1; + } + e.data.topCanvas = e.data.canvases[0], e.data.canvases[Le.NODE].setAttribute("data-id", "layer" + Le.NODE + "-node"), e.data.canvases[Le.SELECT_BOX].setAttribute("data-id", "layer" + Le.SELECT_BOX + "-selectbox"), e.data.canvases[Le.DRAG].setAttribute("data-id", "layer" + Le.DRAG + "-drag"); + for (var o = 0; o < Le.BUFFER_COUNT; o++) + e.data.bufferCanvases[o] = document.createElement("canvas"), e.data.bufferContexts[o] = e.data.bufferCanvases[o].getContext("2d"), e.data.bufferCanvases[o].style.position = "absolute", e.data.bufferCanvases[o].setAttribute("data-id", "buffer" + o), e.data.bufferCanvases[o].style.zIndex = String(-o - 1), e.data.bufferCanvases[o].style.visibility = "hidden"; + e.pathsEnabled = !0; + var u = ft(), f = function(z) { + return { + x: (z.x1 + z.x2) / 2, + y: (z.y1 + z.y2) / 2 + }; + }, h = function(z) { + return { + x: -z.w / 2, + y: -z.h / 2 + }; + }, c = function(z) { + var K = z[0]._private, j = K.oldBackgroundTimestamp === K.backgroundTimestamp; + return !j; + }, v = function(z) { + return z[0]._private.nodeKey; + }, d = function(z) { + return z[0]._private.labelStyleKey; + }, g = function(z) { + return z[0]._private.sourceLabelStyleKey; + }, p = function(z) { + return z[0]._private.targetLabelStyleKey; + }, y = function(z, K, j, Q, ee) { + return e.drawElement(z, K, j, !1, !1, ee); + }, E = function(z, K, j, Q, ee) { + return e.drawElementText(z, K, j, Q, "main", ee); + }, m = function(z, K, j, Q, ee) { + return e.drawElementText(z, K, j, Q, "source", ee); + }, T = function(z, K, j, Q, ee) { + return e.drawElementText(z, K, j, Q, "target", ee); + }, C = function(z) { + return z.boundingBox(), z[0]._private.bodyBounds; + }, S = function(z) { + return z.boundingBox(), z[0]._private.labelBounds.main || u; + }, b = function(z) { + return z.boundingBox(), z[0]._private.labelBounds.source || u; + }, x = function(z) { + return z.boundingBox(), z[0]._private.labelBounds.target || u; + }, w = function(z, K) { + return K; + }, D = function(z) { + return f(C(z)); + }, A = function(z, K, j) { + var Q = z ? z + "-" : ""; + return { + x: K.x + j.pstyle(Q + "text-margin-x").pfValue, + y: K.y + j.pstyle(Q + "text-margin-y").pfValue + }; + }, L = function(z, K, j) { + var Q = z[0]._private.rscratch; + return { + x: Q[K], + y: Q[j] + }; + }, I = function(z) { + return A("", L(z, "labelX", "labelY"), z); + }, O = function(z) { + return A("source", L(z, "sourceLabelX", "sourceLabelY"), z); + }, P = function(z) { + return A("target", L(z, "targetLabelX", "targetLabelY"), z); + }, R = function(z) { + return h(C(z)); + }, M = function(z) { + return h(b(z)); + }, k = function(z) { + return h(x(z)); + }, B = function(z) { + var K = S(z), j = h(S(z)); + if (z.isNode()) { + switch (z.pstyle("text-halign").value) { + case "left": + j.x = -K.w; + break; + case "right": + j.x = 0; + break; + } + switch (z.pstyle("text-valign").value) { + case "top": + j.y = -K.h; + break; + case "bottom": + j.y = 0; + break; + } + } + return j; + }, G = e.data.eleTxrCache = new Kr(e, { + getKey: v, + doesEleInvalidateKey: c, + drawElement: y, + getBoundingBox: C, + getRotationPoint: D, + getRotationOffset: R, + allowEdgeTxrCaching: !1, + allowParentTxrCaching: !1 + }), F = e.data.lblTxrCache = new Kr(e, { + getKey: d, + drawElement: E, + getBoundingBox: S, + getRotationPoint: I, + getRotationOffset: B, + isVisible: w + }), $ = e.data.slbTxrCache = new Kr(e, { + getKey: g, + drawElement: m, + getBoundingBox: b, + getRotationPoint: O, + getRotationOffset: M, + isVisible: w + }), U = e.data.tlbTxrCache = new Kr(e, { + getKey: p, + drawElement: T, + getBoundingBox: x, + getRotationPoint: P, + getRotationOffset: k, + isVisible: w + }), _ = e.data.lyrTxrCache = new pl(e); + e.onUpdateEleCalcs(function(z, K) { + G.invalidateElements(K), F.invalidateElements(K), $.invalidateElements(K), U.invalidateElements(K), _.invalidateElements(K); + for (var j = 0; j < K.length; j++) { + var Q = K[j]._private; + Q.oldBackgroundTimestamp = Q.backgroundTimestamp; + } + }); + var Y = function(z) { + for (var K = 0; K < z.length; K++) + _.enqueueElementRefinement(z[K].ele); + }; + G.onDequeue(Y), F.onDequeue(Y), $.onDequeue(Y), U.onDequeue(Y); +} +Le.redrawHint = function(t, e) { + var r = this; + switch (t) { + case "eles": + r.data.canvasNeedsRedraw[Le.NODE] = e; + break; + case "drag": + r.data.canvasNeedsRedraw[Le.DRAG] = e; + break; + case "select": + r.data.canvasNeedsRedraw[Le.SELECT_BOX] = e; + break; + } +}; +var dm = typeof Path2D != "undefined"; +Le.path2dEnabled = function(t) { + if (t === void 0) + return this.pathsEnabled; + this.pathsEnabled = !!t; +}; +Le.usePaths = function() { + return dm && this.pathsEnabled; +}; +Le.setImgSmoothing = function(t, e) { + t.imageSmoothingEnabled != null ? t.imageSmoothingEnabled = e : (t.webkitImageSmoothingEnabled = e, t.mozImageSmoothingEnabled = e, t.msImageSmoothingEnabled = e); +}; +Le.getImgSmoothing = function(t) { + return t.imageSmoothingEnabled != null ? t.imageSmoothingEnabled : t.webkitImageSmoothingEnabled || t.mozImageSmoothingEnabled || t.msImageSmoothingEnabled; +}; +Le.makeOffscreenCanvas = function(t, e) { + var r; + return (typeof OffscreenCanvas == "undefined" ? "undefined" : Ue(OffscreenCanvas)) !== "undefined" ? r = new OffscreenCanvas(t, e) : (r = document.createElement("canvas"), r.width = t, r.height = e), r; +}; +[yl, Nt, Bt, wi, hr, Gr, vt, Qt, ba, xl].forEach(function(t) { + de(Le, t); +}); +var gm = [{ + name: "null", + impl: ol +}, { + name: "base", + impl: dl +}, { + name: "canvas", + impl: cm +}], pm = [{ + type: "layout", + extensions: Cy +}, { + type: "renderer", + extensions: gm +}], Cl = {}, Dl = {}; +function Sl(t, e, r) { + var a = r, n = function(x) { + Ne("Can not register `" + e + "` for `" + t + "` since `" + x + "` already exists in the prototype and can not be overridden"); + }; + if (t === "core") { + if (oa.prototype[e]) + return n(e); + oa.prototype[e] = r; + } else if (t === "collection") { + if (Ze.prototype[e]) + return n(e); + Ze.prototype[e] = r; + } else if (t === "layout") { + for (var i = function(x) { + this.options = x, r.call(this, x), De(this._private) || (this._private = {}), this._private.cy = x.cy, this._private.listeners = [], this.createEmitter(); + }, s = i.prototype = Object.create(r.prototype), o = [], l = 0; l < o.length; l++) { + var u = o[l]; + s[u] = s[u] || function() { + return this; + }; + } + s.start && !s.run ? s.run = function() { + return this.start(), this; + } : !s.start && s.run && (s.start = function() { + return this.run(), this; + }); + var f = r.prototype.stop; + s.stop = function() { + var b = this.options; + if (b && b.animate) { + var x = this.animations; + if (x) + for (var w = 0; w < x.length; w++) + x[w].stop(); + } + return f ? f.call(this) : this.emit("layoutstop"), this; + }, s.destroy || (s.destroy = function() { + return this; + }), s.cy = function() { + return this._private.cy; + }; + var h = function(x) { + return x._private.cy; + }, c = { + addEventFields: function(x, w) { + w.layout = x, w.cy = h(x), w.target = x; + }, + bubble: function() { + return !0; + }, + parent: function(x) { + return h(x); + } + }; + de(s, { + createEmitter: function() { + return this._private.emitter = new cn(c, this), this; + }, + emitter: function() { + return this._private.emitter; + }, + on: function(x, w) { + return this.emitter().on(x, w), this; + }, + one: function(x, w) { + return this.emitter().one(x, w), this; + }, + once: function(x, w) { + return this.emitter().one(x, w), this; + }, + removeListener: function(x, w) { + return this.emitter().removeListener(x, w), this; + }, + removeAllListeners: function() { + return this.emitter().removeAllListeners(), this; + }, + emit: function(x, w) { + return this.emitter().emit(x, w), this; + } + }), Oe.eventAliasesOn(s), a = i; + } else if (t === "renderer" && e !== "null" && e !== "base") { + var v = Ll("renderer", "base"), d = v.prototype, g = r, p = r.prototype, y = function() { + v.apply(this, arguments), g.apply(this, arguments); + }, E = y.prototype; + for (var m in d) { + var T = d[m], C = p[m] != null; + if (C) + return n(m); + E[m] = T; + } + for (var S in p) + E[S] = p[S]; + d.clientFunctions.forEach(function(b) { + E[b] = E[b] || function() { + Ge("Renderer does not implement `renderer." + b + "()` on its prototype"); + }; + }), a = y; + } else if (t === "__proto__" || t === "constructor" || t === "prototype") + return Ge(t + " is an illegal type to be registered, possibly lead to prototype pollutions"); + return uo({ + map: Cl, + keys: [t, e], + value: a + }); +} +function Ll(t, e) { + return fo({ + map: Cl, + keys: [t, e] + }); +} +function ym(t, e, r, a, n) { + return uo({ + map: Dl, + keys: [t, e, r, a], + value: n + }); +} +function mm(t, e, r, a) { + return fo({ + map: Dl, + keys: [t, e, r, a] + }); +} +var Kn = function() { + if (arguments.length === 2) + return Ll.apply(null, arguments); + if (arguments.length === 3) + return Sl.apply(null, arguments); + if (arguments.length === 4) + return mm.apply(null, arguments); + if (arguments.length === 5) + return ym.apply(null, arguments); + Ge("Invalid extension access syntax"); +}; +oa.prototype.extension = Kn; +pm.forEach(function(t) { + t.extensions.forEach(function(e) { + Sl(t.type, e.name, e.impl); + }); +}); +var Al = function t() { + if (!(this instanceof t)) + return new t(); + this.length = 0; +}, or = Al.prototype; +or.instanceString = function() { + return "stylesheet"; +}; +or.selector = function(t) { + var e = this.length++; + return this[e] = { + selector: t, + properties: [] + }, this; +}; +or.css = function(t, e) { + var r = this.length - 1; + if (ve(t)) + this[r].properties.push({ + name: t, + value: e + }); + else if (De(t)) + for (var a = t, n = Object.keys(a), i = 0; i < n.length; i++) { + var s = n[i], o = a[s]; + if (o != null) { + var l = et.properties[s] || et.properties[ln(s)]; + if (l != null) { + var u = l.name, f = o; + this[r].properties.push({ + name: u, + value: f + }); + } + } + } + return this; +}; +or.style = or.css; +or.generateStyle = function(t) { + var e = new et(t); + return this.appendToStyle(e); +}; +or.appendToStyle = function(t) { + for (var e = 0; e < this.length; e++) { + var r = this[e], a = r.selector, n = r.properties; + t.selector(a); + for (var i = 0; i < n.length; i++) { + var s = n[i]; + t.css(s.name, s.value); + } + } + return t; +}; +var bm = "3.28.1", lr = function(e) { + if (e === void 0 && (e = {}), De(e)) + return new oa(e); + if (ve(e)) + return Kn.apply(Kn, arguments); +}; +lr.use = function(t) { + var e = Array.prototype.slice.call(arguments, 1); + return e.unshift(lr), t.apply(null, e), this; +}; +lr.warnings = function(t) { + return yo(t); +}; +lr.version = bm; +lr.stylesheet = lr.Stylesheet = Al; +var Em = lr; +const Ol = /* @__PURE__ */ Xs(Em); +var Nl = { exports: {} }, Bn = { exports: {} }, Fn = { exports: {} }, Hs; +function wm() { + return Hs || (Hs = 1, function(t, e) { + (function(a, n) { + t.exports = n(); + })(Vt, function() { + return ( + /******/ + function(r) { + var a = {}; + function n(i) { + if (a[i]) + return a[i].exports; + var s = a[i] = { + /******/ + i, + /******/ + l: !1, + /******/ + exports: {} + /******/ + }; + return r[i].call(s.exports, s, s.exports, n), s.l = !0, s.exports; + } + return n.m = r, n.c = a, n.i = function(i) { + return i; + }, n.d = function(i, s, o) { + n.o(i, s) || Object.defineProperty(i, s, { + /******/ + configurable: !1, + /******/ + enumerable: !0, + /******/ + get: o + /******/ + }); + }, n.n = function(i) { + var s = i && i.__esModule ? ( + /******/ + function() { + return i.default; + } + ) : ( + /******/ + function() { + return i; + } + ); + return n.d(s, "a", s), s; + }, n.o = function(i, s) { + return Object.prototype.hasOwnProperty.call(i, s); + }, n.p = "", n(n.s = 26); + }([ + /* 0 */ + /***/ + function(r, a, n) { + function i() { + } + i.QUALITY = 1, i.DEFAULT_CREATE_BENDS_AS_NEEDED = !1, i.DEFAULT_INCREMENTAL = !1, i.DEFAULT_ANIMATION_ON_LAYOUT = !0, i.DEFAULT_ANIMATION_DURING_LAYOUT = !1, i.DEFAULT_ANIMATION_PERIOD = 50, i.DEFAULT_UNIFORM_LEAF_NODE_SIZES = !1, i.DEFAULT_GRAPH_MARGIN = 15, i.NODE_DIMENSIONS_INCLUDE_LABELS = !1, i.SIMPLE_NODE_SIZE = 40, i.SIMPLE_NODE_HALF_SIZE = i.SIMPLE_NODE_SIZE / 2, i.EMPTY_COMPOUND_NODE_SIZE = 40, i.MIN_EDGE_LENGTH = 1, i.WORLD_BOUNDARY = 1e6, i.INITIAL_WORLD_BOUNDARY = i.WORLD_BOUNDARY / 1e3, i.WORLD_CENTER_X = 1200, i.WORLD_CENTER_Y = 900, r.exports = i; + }, + /* 1 */ + /***/ + function(r, a, n) { + var i = n(2), s = n(8), o = n(9); + function l(f, h, c) { + i.call(this, c), this.isOverlapingSourceAndTarget = !1, this.vGraphObject = c, this.bendpoints = [], this.source = f, this.target = h; + } + l.prototype = Object.create(i.prototype); + for (var u in i) + l[u] = i[u]; + l.prototype.getSource = function() { + return this.source; + }, l.prototype.getTarget = function() { + return this.target; + }, l.prototype.isInterGraph = function() { + return this.isInterGraph; + }, l.prototype.getLength = function() { + return this.length; + }, l.prototype.isOverlapingSourceAndTarget = function() { + return this.isOverlapingSourceAndTarget; + }, l.prototype.getBendpoints = function() { + return this.bendpoints; + }, l.prototype.getLca = function() { + return this.lca; + }, l.prototype.getSourceInLca = function() { + return this.sourceInLca; + }, l.prototype.getTargetInLca = function() { + return this.targetInLca; + }, l.prototype.getOtherEnd = function(f) { + if (this.source === f) + return this.target; + if (this.target === f) + return this.source; + throw "Node is not incident with this edge"; + }, l.prototype.getOtherEndInGraph = function(f, h) { + for (var c = this.getOtherEnd(f), v = h.getGraphManager().getRoot(); ; ) { + if (c.getOwner() == h) + return c; + if (c.getOwner() == v) + break; + c = c.getOwner().getParent(); + } + return null; + }, l.prototype.updateLength = function() { + var f = new Array(4); + this.isOverlapingSourceAndTarget = s.getIntersection(this.target.getRect(), this.source.getRect(), f), this.isOverlapingSourceAndTarget || (this.lengthX = f[0] - f[2], this.lengthY = f[1] - f[3], Math.abs(this.lengthX) < 1 && (this.lengthX = o.sign(this.lengthX)), Math.abs(this.lengthY) < 1 && (this.lengthY = o.sign(this.lengthY)), this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY)); + }, l.prototype.updateLengthSimple = function() { + this.lengthX = this.target.getCenterX() - this.source.getCenterX(), this.lengthY = this.target.getCenterY() - this.source.getCenterY(), Math.abs(this.lengthX) < 1 && (this.lengthX = o.sign(this.lengthX)), Math.abs(this.lengthY) < 1 && (this.lengthY = o.sign(this.lengthY)), this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY); + }, r.exports = l; + }, + /* 2 */ + /***/ + function(r, a, n) { + function i(s) { + this.vGraphObject = s; + } + r.exports = i; + }, + /* 3 */ + /***/ + function(r, a, n) { + var i = n(2), s = n(10), o = n(13), l = n(0), u = n(16), f = n(4); + function h(v, d, g, p) { + g == null && p == null && (p = d), i.call(this, p), v.graphManager != null && (v = v.graphManager), this.estimatedSize = s.MIN_VALUE, this.inclusionTreeDepth = s.MAX_VALUE, this.vGraphObject = p, this.edges = [], this.graphManager = v, g != null && d != null ? this.rect = new o(d.x, d.y, g.width, g.height) : this.rect = new o(); + } + h.prototype = Object.create(i.prototype); + for (var c in i) + h[c] = i[c]; + h.prototype.getEdges = function() { + return this.edges; + }, h.prototype.getChild = function() { + return this.child; + }, h.prototype.getOwner = function() { + return this.owner; + }, h.prototype.getWidth = function() { + return this.rect.width; + }, h.prototype.setWidth = function(v) { + this.rect.width = v; + }, h.prototype.getHeight = function() { + return this.rect.height; + }, h.prototype.setHeight = function(v) { + this.rect.height = v; + }, h.prototype.getCenterX = function() { + return this.rect.x + this.rect.width / 2; + }, h.prototype.getCenterY = function() { + return this.rect.y + this.rect.height / 2; + }, h.prototype.getCenter = function() { + return new f(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2); + }, h.prototype.getLocation = function() { + return new f(this.rect.x, this.rect.y); + }, h.prototype.getRect = function() { + return this.rect; + }, h.prototype.getDiagonal = function() { + return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height); + }, h.prototype.getHalfTheDiagonal = function() { + return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2; + }, h.prototype.setRect = function(v, d) { + this.rect.x = v.x, this.rect.y = v.y, this.rect.width = d.width, this.rect.height = d.height; + }, h.prototype.setCenter = function(v, d) { + this.rect.x = v - this.rect.width / 2, this.rect.y = d - this.rect.height / 2; + }, h.prototype.setLocation = function(v, d) { + this.rect.x = v, this.rect.y = d; + }, h.prototype.moveBy = function(v, d) { + this.rect.x += v, this.rect.y += d; + }, h.prototype.getEdgeListToNode = function(v) { + var d = [], g = this; + return g.edges.forEach(function(p) { + if (p.target == v) { + if (p.source != g) + throw "Incorrect edge source!"; + d.push(p); + } + }), d; + }, h.prototype.getEdgesBetween = function(v) { + var d = [], g = this; + return g.edges.forEach(function(p) { + if (!(p.source == g || p.target == g)) + throw "Incorrect edge source and/or target"; + (p.target == v || p.source == v) && d.push(p); + }), d; + }, h.prototype.getNeighborsList = function() { + var v = /* @__PURE__ */ new Set(), d = this; + return d.edges.forEach(function(g) { + if (g.source == d) + v.add(g.target); + else { + if (g.target != d) + throw "Incorrect incidency!"; + v.add(g.source); + } + }), v; + }, h.prototype.withChildren = function() { + var v = /* @__PURE__ */ new Set(), d, g; + if (v.add(this), this.child != null) + for (var p = this.child.getNodes(), y = 0; y < p.length; y++) + d = p[y], g = d.withChildren(), g.forEach(function(E) { + v.add(E); + }); + return v; + }, h.prototype.getNoOfChildren = function() { + var v = 0, d; + if (this.child == null) + v = 1; + else + for (var g = this.child.getNodes(), p = 0; p < g.length; p++) + d = g[p], v += d.getNoOfChildren(); + return v == 0 && (v = 1), v; + }, h.prototype.getEstimatedSize = function() { + if (this.estimatedSize == s.MIN_VALUE) + throw "assert failed"; + return this.estimatedSize; + }, h.prototype.calcEstimatedSize = function() { + return this.child == null ? this.estimatedSize = (this.rect.width + this.rect.height) / 2 : (this.estimatedSize = this.child.calcEstimatedSize(), this.rect.width = this.estimatedSize, this.rect.height = this.estimatedSize, this.estimatedSize); + }, h.prototype.scatter = function() { + var v, d, g = -l.INITIAL_WORLD_BOUNDARY, p = l.INITIAL_WORLD_BOUNDARY; + v = l.WORLD_CENTER_X + u.nextDouble() * (p - g) + g; + var y = -l.INITIAL_WORLD_BOUNDARY, E = l.INITIAL_WORLD_BOUNDARY; + d = l.WORLD_CENTER_Y + u.nextDouble() * (E - y) + y, this.rect.x = v, this.rect.y = d; + }, h.prototype.updateBounds = function() { + if (this.getChild() == null) + throw "assert failed"; + if (this.getChild().getNodes().length != 0) { + var v = this.getChild(); + if (v.updateBounds(!0), this.rect.x = v.getLeft(), this.rect.y = v.getTop(), this.setWidth(v.getRight() - v.getLeft()), this.setHeight(v.getBottom() - v.getTop()), l.NODE_DIMENSIONS_INCLUDE_LABELS) { + var d = v.getRight() - v.getLeft(), g = v.getBottom() - v.getTop(); + this.labelWidth > d && (this.rect.x -= (this.labelWidth - d) / 2, this.setWidth(this.labelWidth)), this.labelHeight > g && (this.labelPos == "center" ? this.rect.y -= (this.labelHeight - g) / 2 : this.labelPos == "top" && (this.rect.y -= this.labelHeight - g), this.setHeight(this.labelHeight)); + } + } + }, h.prototype.getInclusionTreeDepth = function() { + if (this.inclusionTreeDepth == s.MAX_VALUE) + throw "assert failed"; + return this.inclusionTreeDepth; + }, h.prototype.transform = function(v) { + var d = this.rect.x; + d > l.WORLD_BOUNDARY ? d = l.WORLD_BOUNDARY : d < -l.WORLD_BOUNDARY && (d = -l.WORLD_BOUNDARY); + var g = this.rect.y; + g > l.WORLD_BOUNDARY ? g = l.WORLD_BOUNDARY : g < -l.WORLD_BOUNDARY && (g = -l.WORLD_BOUNDARY); + var p = new f(d, g), y = v.inverseTransformPoint(p); + this.setLocation(y.x, y.y); + }, h.prototype.getLeft = function() { + return this.rect.x; + }, h.prototype.getRight = function() { + return this.rect.x + this.rect.width; + }, h.prototype.getTop = function() { + return this.rect.y; + }, h.prototype.getBottom = function() { + return this.rect.y + this.rect.height; + }, h.prototype.getParent = function() { + return this.owner == null ? null : this.owner.getParent(); + }, r.exports = h; + }, + /* 4 */ + /***/ + function(r, a, n) { + function i(s, o) { + s == null && o == null ? (this.x = 0, this.y = 0) : (this.x = s, this.y = o); + } + i.prototype.getX = function() { + return this.x; + }, i.prototype.getY = function() { + return this.y; + }, i.prototype.setX = function(s) { + this.x = s; + }, i.prototype.setY = function(s) { + this.y = s; + }, i.prototype.getDifference = function(s) { + return new DimensionD(this.x - s.x, this.y - s.y); + }, i.prototype.getCopy = function() { + return new i(this.x, this.y); + }, i.prototype.translate = function(s) { + return this.x += s.width, this.y += s.height, this; + }, r.exports = i; + }, + /* 5 */ + /***/ + function(r, a, n) { + var i = n(2), s = n(10), o = n(0), l = n(6), u = n(3), f = n(1), h = n(13), c = n(12), v = n(11); + function d(p, y, E) { + i.call(this, E), this.estimatedSize = s.MIN_VALUE, this.margin = o.DEFAULT_GRAPH_MARGIN, this.edges = [], this.nodes = [], this.isConnected = !1, this.parent = p, y != null && y instanceof l ? this.graphManager = y : y != null && y instanceof Layout && (this.graphManager = y.graphManager); + } + d.prototype = Object.create(i.prototype); + for (var g in i) + d[g] = i[g]; + d.prototype.getNodes = function() { + return this.nodes; + }, d.prototype.getEdges = function() { + return this.edges; + }, d.prototype.getGraphManager = function() { + return this.graphManager; + }, d.prototype.getParent = function() { + return this.parent; + }, d.prototype.getLeft = function() { + return this.left; + }, d.prototype.getRight = function() { + return this.right; + }, d.prototype.getTop = function() { + return this.top; + }, d.prototype.getBottom = function() { + return this.bottom; + }, d.prototype.isConnected = function() { + return this.isConnected; + }, d.prototype.add = function(p, y, E) { + if (y == null && E == null) { + var m = p; + if (this.graphManager == null) + throw "Graph has no graph mgr!"; + if (this.getNodes().indexOf(m) > -1) + throw "Node already in graph!"; + return m.owner = this, this.getNodes().push(m), m; + } else { + var T = p; + if (!(this.getNodes().indexOf(y) > -1 && this.getNodes().indexOf(E) > -1)) + throw "Source or target not in graph!"; + if (!(y.owner == E.owner && y.owner == this)) + throw "Both owners must be this graph!"; + return y.owner != E.owner ? null : (T.source = y, T.target = E, T.isInterGraph = !1, this.getEdges().push(T), y.edges.push(T), E != y && E.edges.push(T), T); + } + }, d.prototype.remove = function(p) { + var y = p; + if (p instanceof u) { + if (y == null) + throw "Node is null!"; + if (!(y.owner != null && y.owner == this)) + throw "Owner graph is invalid!"; + if (this.graphManager == null) + throw "Owner graph manager is invalid!"; + for (var E = y.edges.slice(), m, T = E.length, C = 0; C < T; C++) + m = E[C], m.isInterGraph ? this.graphManager.remove(m) : m.source.owner.remove(m); + var S = this.nodes.indexOf(y); + if (S == -1) + throw "Node not in owner node list!"; + this.nodes.splice(S, 1); + } else if (p instanceof f) { + var m = p; + if (m == null) + throw "Edge is null!"; + if (!(m.source != null && m.target != null)) + throw "Source and/or target is null!"; + if (!(m.source.owner != null && m.target.owner != null && m.source.owner == this && m.target.owner == this)) + throw "Source and/or target owner is invalid!"; + var b = m.source.edges.indexOf(m), x = m.target.edges.indexOf(m); + if (!(b > -1 && x > -1)) + throw "Source and/or target doesn't know this edge!"; + m.source.edges.splice(b, 1), m.target != m.source && m.target.edges.splice(x, 1); + var S = m.source.owner.getEdges().indexOf(m); + if (S == -1) + throw "Not in owner's edge list!"; + m.source.owner.getEdges().splice(S, 1); + } + }, d.prototype.updateLeftTop = function() { + for (var p = s.MAX_VALUE, y = s.MAX_VALUE, E, m, T, C = this.getNodes(), S = C.length, b = 0; b < S; b++) { + var x = C[b]; + E = x.getTop(), m = x.getLeft(), p > E && (p = E), y > m && (y = m); + } + return p == s.MAX_VALUE ? null : (C[0].getParent().paddingLeft != null ? T = C[0].getParent().paddingLeft : T = this.margin, this.left = y - T, this.top = p - T, new c(this.left, this.top)); + }, d.prototype.updateBounds = function(p) { + for (var y = s.MAX_VALUE, E = -s.MAX_VALUE, m = s.MAX_VALUE, T = -s.MAX_VALUE, C, S, b, x, w, D = this.nodes, A = D.length, L = 0; L < A; L++) { + var I = D[L]; + p && I.child != null && I.updateBounds(), C = I.getLeft(), S = I.getRight(), b = I.getTop(), x = I.getBottom(), y > C && (y = C), E < S && (E = S), m > b && (m = b), T < x && (T = x); + } + var O = new h(y, m, E - y, T - m); + y == s.MAX_VALUE && (this.left = this.parent.getLeft(), this.right = this.parent.getRight(), this.top = this.parent.getTop(), this.bottom = this.parent.getBottom()), D[0].getParent().paddingLeft != null ? w = D[0].getParent().paddingLeft : w = this.margin, this.left = O.x - w, this.right = O.x + O.width + w, this.top = O.y - w, this.bottom = O.y + O.height + w; + }, d.calculateBounds = function(p) { + for (var y = s.MAX_VALUE, E = -s.MAX_VALUE, m = s.MAX_VALUE, T = -s.MAX_VALUE, C, S, b, x, w = p.length, D = 0; D < w; D++) { + var A = p[D]; + C = A.getLeft(), S = A.getRight(), b = A.getTop(), x = A.getBottom(), y > C && (y = C), E < S && (E = S), m > b && (m = b), T < x && (T = x); + } + var L = new h(y, m, E - y, T - m); + return L; + }, d.prototype.getInclusionTreeDepth = function() { + return this == this.graphManager.getRoot() ? 1 : this.parent.getInclusionTreeDepth(); + }, d.prototype.getEstimatedSize = function() { + if (this.estimatedSize == s.MIN_VALUE) + throw "assert failed"; + return this.estimatedSize; + }, d.prototype.calcEstimatedSize = function() { + for (var p = 0, y = this.nodes, E = y.length, m = 0; m < E; m++) { + var T = y[m]; + p += T.calcEstimatedSize(); + } + return p == 0 ? this.estimatedSize = o.EMPTY_COMPOUND_NODE_SIZE : this.estimatedSize = p / Math.sqrt(this.nodes.length), this.estimatedSize; + }, d.prototype.updateConnected = function() { + var p = this; + if (this.nodes.length == 0) { + this.isConnected = !0; + return; + } + var y = new v(), E = /* @__PURE__ */ new Set(), m = this.nodes[0], T, C, S = m.withChildren(); + for (S.forEach(function(L) { + y.push(L), E.add(L); + }); y.length !== 0; ) { + m = y.shift(), T = m.getEdges(); + for (var b = T.length, x = 0; x < b; x++) { + var w = T[x]; + if (C = w.getOtherEndInGraph(m, this), C != null && !E.has(C)) { + var D = C.withChildren(); + D.forEach(function(L) { + y.push(L), E.add(L); + }); + } + } + } + if (this.isConnected = !1, E.size >= this.nodes.length) { + var A = 0; + E.forEach(function(L) { + L.owner == p && A++; + }), A == this.nodes.length && (this.isConnected = !0); + } + }, r.exports = d; + }, + /* 6 */ + /***/ + function(r, a, n) { + var i, s = n(1); + function o(l) { + i = n(5), this.layout = l, this.graphs = [], this.edges = []; + } + o.prototype.addRoot = function() { + var l = this.layout.newGraph(), u = this.layout.newNode(null), f = this.add(l, u); + return this.setRootGraph(f), this.rootGraph; + }, o.prototype.add = function(l, u, f, h, c) { + if (f == null && h == null && c == null) { + if (l == null) + throw "Graph is null!"; + if (u == null) + throw "Parent node is null!"; + if (this.graphs.indexOf(l) > -1) + throw "Graph already in this graph mgr!"; + if (this.graphs.push(l), l.parent != null) + throw "Already has a parent!"; + if (u.child != null) + throw "Already has a child!"; + return l.parent = u, u.child = l, l; + } else { + c = f, h = u, f = l; + var v = h.getOwner(), d = c.getOwner(); + if (!(v != null && v.getGraphManager() == this)) + throw "Source not in this graph mgr!"; + if (!(d != null && d.getGraphManager() == this)) + throw "Target not in this graph mgr!"; + if (v == d) + return f.isInterGraph = !1, v.add(f, h, c); + if (f.isInterGraph = !0, f.source = h, f.target = c, this.edges.indexOf(f) > -1) + throw "Edge already in inter-graph edge list!"; + if (this.edges.push(f), !(f.source != null && f.target != null)) + throw "Edge source and/or target is null!"; + if (!(f.source.edges.indexOf(f) == -1 && f.target.edges.indexOf(f) == -1)) + throw "Edge already in source and/or target incidency list!"; + return f.source.edges.push(f), f.target.edges.push(f), f; + } + }, o.prototype.remove = function(l) { + if (l instanceof i) { + var u = l; + if (u.getGraphManager() != this) + throw "Graph not in this graph mgr"; + if (!(u == this.rootGraph || u.parent != null && u.parent.graphManager == this)) + throw "Invalid parent node!"; + var f = []; + f = f.concat(u.getEdges()); + for (var h, c = f.length, v = 0; v < c; v++) + h = f[v], u.remove(h); + var d = []; + d = d.concat(u.getNodes()); + var g; + c = d.length; + for (var v = 0; v < c; v++) + g = d[v], u.remove(g); + u == this.rootGraph && this.setRootGraph(null); + var p = this.graphs.indexOf(u); + this.graphs.splice(p, 1), u.parent = null; + } else if (l instanceof s) { + if (h = l, h == null) + throw "Edge is null!"; + if (!h.isInterGraph) + throw "Not an inter-graph edge!"; + if (!(h.source != null && h.target != null)) + throw "Source and/or target is null!"; + if (!(h.source.edges.indexOf(h) != -1 && h.target.edges.indexOf(h) != -1)) + throw "Source and/or target doesn't know this edge!"; + var p = h.source.edges.indexOf(h); + if (h.source.edges.splice(p, 1), p = h.target.edges.indexOf(h), h.target.edges.splice(p, 1), !(h.source.owner != null && h.source.owner.getGraphManager() != null)) + throw "Edge owner graph or owner graph manager is null!"; + if (h.source.owner.getGraphManager().edges.indexOf(h) == -1) + throw "Not in owner graph manager's edge list!"; + var p = h.source.owner.getGraphManager().edges.indexOf(h); + h.source.owner.getGraphManager().edges.splice(p, 1); + } + }, o.prototype.updateBounds = function() { + this.rootGraph.updateBounds(!0); + }, o.prototype.getGraphs = function() { + return this.graphs; + }, o.prototype.getAllNodes = function() { + if (this.allNodes == null) { + for (var l = [], u = this.getGraphs(), f = u.length, h = 0; h < f; h++) + l = l.concat(u[h].getNodes()); + this.allNodes = l; + } + return this.allNodes; + }, o.prototype.resetAllNodes = function() { + this.allNodes = null; + }, o.prototype.resetAllEdges = function() { + this.allEdges = null; + }, o.prototype.resetAllNodesToApplyGravitation = function() { + this.allNodesToApplyGravitation = null; + }, o.prototype.getAllEdges = function() { + if (this.allEdges == null) { + var l = [], u = this.getGraphs(); + u.length; + for (var f = 0; f < u.length; f++) + l = l.concat(u[f].getEdges()); + l = l.concat(this.edges), this.allEdges = l; + } + return this.allEdges; + }, o.prototype.getAllNodesToApplyGravitation = function() { + return this.allNodesToApplyGravitation; + }, o.prototype.setAllNodesToApplyGravitation = function(l) { + if (this.allNodesToApplyGravitation != null) + throw "assert failed"; + this.allNodesToApplyGravitation = l; + }, o.prototype.getRoot = function() { + return this.rootGraph; + }, o.prototype.setRootGraph = function(l) { + if (l.getGraphManager() != this) + throw "Root not in this graph mgr!"; + this.rootGraph = l, l.parent == null && (l.parent = this.layout.newNode("Root node")); + }, o.prototype.getLayout = function() { + return this.layout; + }, o.prototype.isOneAncestorOfOther = function(l, u) { + if (!(l != null && u != null)) + throw "assert failed"; + if (l == u) + return !0; + var f = l.getOwner(), h; + do { + if (h = f.getParent(), h == null) + break; + if (h == u) + return !0; + if (f = h.getOwner(), f == null) + break; + } while (!0); + f = u.getOwner(); + do { + if (h = f.getParent(), h == null) + break; + if (h == l) + return !0; + if (f = h.getOwner(), f == null) + break; + } while (!0); + return !1; + }, o.prototype.calcLowestCommonAncestors = function() { + for (var l, u, f, h, c, v = this.getAllEdges(), d = v.length, g = 0; g < d; g++) { + if (l = v[g], u = l.source, f = l.target, l.lca = null, l.sourceInLca = u, l.targetInLca = f, u == f) { + l.lca = u.getOwner(); + continue; + } + for (h = u.getOwner(); l.lca == null; ) { + for (l.targetInLca = f, c = f.getOwner(); l.lca == null; ) { + if (c == h) { + l.lca = c; + break; + } + if (c == this.rootGraph) + break; + if (l.lca != null) + throw "assert failed"; + l.targetInLca = c.getParent(), c = l.targetInLca.getOwner(); + } + if (h == this.rootGraph) + break; + l.lca == null && (l.sourceInLca = h.getParent(), h = l.sourceInLca.getOwner()); + } + if (l.lca == null) + throw "assert failed"; + } + }, o.prototype.calcLowestCommonAncestor = function(l, u) { + if (l == u) + return l.getOwner(); + var f = l.getOwner(); + do { + if (f == null) + break; + var h = u.getOwner(); + do { + if (h == null) + break; + if (h == f) + return h; + h = h.getParent().getOwner(); + } while (!0); + f = f.getParent().getOwner(); + } while (!0); + return f; + }, o.prototype.calcInclusionTreeDepths = function(l, u) { + l == null && u == null && (l = this.rootGraph, u = 1); + for (var f, h = l.getNodes(), c = h.length, v = 0; v < c; v++) + f = h[v], f.inclusionTreeDepth = u, f.child != null && this.calcInclusionTreeDepths(f.child, u + 1); + }, o.prototype.includesInvalidEdge = function() { + for (var l, u = this.edges.length, f = 0; f < u; f++) + if (l = this.edges[f], this.isOneAncestorOfOther(l.source, l.target)) + return !0; + return !1; + }, r.exports = o; + }, + /* 7 */ + /***/ + function(r, a, n) { + var i = n(0); + function s() { + } + for (var o in i) + s[o] = i[o]; + s.MAX_ITERATIONS = 2500, s.DEFAULT_EDGE_LENGTH = 50, s.DEFAULT_SPRING_STRENGTH = 0.45, s.DEFAULT_REPULSION_STRENGTH = 4500, s.DEFAULT_GRAVITY_STRENGTH = 0.4, s.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1, s.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8, s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5, s.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = !0, s.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = !0, s.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3, s.COOLING_ADAPTATION_FACTOR = 0.33, s.ADAPTATION_LOWER_NODE_LIMIT = 1e3, s.ADAPTATION_UPPER_NODE_LIMIT = 5e3, s.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100, s.MAX_NODE_DISPLACEMENT = s.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3, s.MIN_REPULSION_DIST = s.DEFAULT_EDGE_LENGTH / 10, s.CONVERGENCE_CHECK_PERIOD = 100, s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1, s.MIN_EDGE_LENGTH = 1, s.GRID_CALCULATION_CHECK_PERIOD = 10, r.exports = s; + }, + /* 8 */ + /***/ + function(r, a, n) { + var i = n(12); + function s() { + } + s.calcSeparationAmount = function(o, l, u, f) { + if (!o.intersects(l)) + throw "assert failed"; + var h = new Array(2); + this.decideDirectionsForOverlappingNodes(o, l, h), u[0] = Math.min(o.getRight(), l.getRight()) - Math.max(o.x, l.x), u[1] = Math.min(o.getBottom(), l.getBottom()) - Math.max(o.y, l.y), o.getX() <= l.getX() && o.getRight() >= l.getRight() ? u[0] += Math.min(l.getX() - o.getX(), o.getRight() - l.getRight()) : l.getX() <= o.getX() && l.getRight() >= o.getRight() && (u[0] += Math.min(o.getX() - l.getX(), l.getRight() - o.getRight())), o.getY() <= l.getY() && o.getBottom() >= l.getBottom() ? u[1] += Math.min(l.getY() - o.getY(), o.getBottom() - l.getBottom()) : l.getY() <= o.getY() && l.getBottom() >= o.getBottom() && (u[1] += Math.min(o.getY() - l.getY(), l.getBottom() - o.getBottom())); + var c = Math.abs((l.getCenterY() - o.getCenterY()) / (l.getCenterX() - o.getCenterX())); + l.getCenterY() === o.getCenterY() && l.getCenterX() === o.getCenterX() && (c = 1); + var v = c * u[0], d = u[1] / c; + u[0] < d ? d = u[0] : v = u[1], u[0] = -1 * h[0] * (d / 2 + f), u[1] = -1 * h[1] * (v / 2 + f); + }, s.decideDirectionsForOverlappingNodes = function(o, l, u) { + o.getCenterX() < l.getCenterX() ? u[0] = -1 : u[0] = 1, o.getCenterY() < l.getCenterY() ? u[1] = -1 : u[1] = 1; + }, s.getIntersection2 = function(o, l, u) { + var f = o.getCenterX(), h = o.getCenterY(), c = l.getCenterX(), v = l.getCenterY(); + if (o.intersects(l)) + return u[0] = f, u[1] = h, u[2] = c, u[3] = v, !0; + var d = o.getX(), g = o.getY(), p = o.getRight(), y = o.getX(), E = o.getBottom(), m = o.getRight(), T = o.getWidthHalf(), C = o.getHeightHalf(), S = l.getX(), b = l.getY(), x = l.getRight(), w = l.getX(), D = l.getBottom(), A = l.getRight(), L = l.getWidthHalf(), I = l.getHeightHalf(), O = !1, P = !1; + if (f === c) { + if (h > v) + return u[0] = f, u[1] = g, u[2] = c, u[3] = D, !1; + if (h < v) + return u[0] = f, u[1] = E, u[2] = c, u[3] = b, !1; + } else if (h === v) { + if (f > c) + return u[0] = d, u[1] = h, u[2] = x, u[3] = v, !1; + if (f < c) + return u[0] = p, u[1] = h, u[2] = S, u[3] = v, !1; + } else { + var R = o.height / o.width, M = l.height / l.width, k = (v - h) / (c - f), B = void 0, G = void 0, F = void 0, $ = void 0, U = void 0, _ = void 0; + if (-R === k ? f > c ? (u[0] = y, u[1] = E, O = !0) : (u[0] = p, u[1] = g, O = !0) : R === k && (f > c ? (u[0] = d, u[1] = g, O = !0) : (u[0] = m, u[1] = E, O = !0)), -M === k ? c > f ? (u[2] = w, u[3] = D, P = !0) : (u[2] = x, u[3] = b, P = !0) : M === k && (c > f ? (u[2] = S, u[3] = b, P = !0) : (u[2] = A, u[3] = D, P = !0)), O && P) + return !1; + if (f > c ? h > v ? (B = this.getCardinalDirection(R, k, 4), G = this.getCardinalDirection(M, k, 2)) : (B = this.getCardinalDirection(-R, k, 3), G = this.getCardinalDirection(-M, k, 1)) : h > v ? (B = this.getCardinalDirection(-R, k, 1), G = this.getCardinalDirection(-M, k, 3)) : (B = this.getCardinalDirection(R, k, 2), G = this.getCardinalDirection(M, k, 4)), !O) + switch (B) { + case 1: + $ = g, F = f + -C / k, u[0] = F, u[1] = $; + break; + case 2: + F = m, $ = h + T * k, u[0] = F, u[1] = $; + break; + case 3: + $ = E, F = f + C / k, u[0] = F, u[1] = $; + break; + case 4: + F = y, $ = h + -T * k, u[0] = F, u[1] = $; + break; + } + if (!P) + switch (G) { + case 1: + _ = b, U = c + -I / k, u[2] = U, u[3] = _; + break; + case 2: + U = A, _ = v + L * k, u[2] = U, u[3] = _; + break; + case 3: + _ = D, U = c + I / k, u[2] = U, u[3] = _; + break; + case 4: + U = w, _ = v + -L * k, u[2] = U, u[3] = _; + break; + } + } + return !1; + }, s.getCardinalDirection = function(o, l, u) { + return o > l ? u : 1 + u % 4; + }, s.getIntersection = function(o, l, u, f) { + if (f == null) + return this.getIntersection2(o, l, u); + var h = o.x, c = o.y, v = l.x, d = l.y, g = u.x, p = u.y, y = f.x, E = f.y, m = void 0, T = void 0, C = void 0, S = void 0, b = void 0, x = void 0, w = void 0, D = void 0, A = void 0; + return C = d - c, b = h - v, w = v * c - h * d, S = E - p, x = g - y, D = y * p - g * E, A = C * x - S * b, A === 0 ? null : (m = (b * D - x * w) / A, T = (S * w - C * D) / A, new i(m, T)); + }, s.angleOfVector = function(o, l, u, f) { + var h = void 0; + return o !== u ? (h = Math.atan((f - l) / (u - o)), u < o ? h += Math.PI : f < l && (h += this.TWO_PI)) : f < l ? h = this.ONE_AND_HALF_PI : h = this.HALF_PI, h; + }, s.doIntersect = function(o, l, u, f) { + var h = o.x, c = o.y, v = l.x, d = l.y, g = u.x, p = u.y, y = f.x, E = f.y, m = (v - h) * (E - p) - (y - g) * (d - c); + if (m === 0) + return !1; + var T = ((E - p) * (y - h) + (g - y) * (E - c)) / m, C = ((c - d) * (y - h) + (v - h) * (E - c)) / m; + return 0 < T && T < 1 && 0 < C && C < 1; + }, s.HALF_PI = 0.5 * Math.PI, s.ONE_AND_HALF_PI = 1.5 * Math.PI, s.TWO_PI = 2 * Math.PI, s.THREE_PI = 3 * Math.PI, r.exports = s; + }, + /* 9 */ + /***/ + function(r, a, n) { + function i() { + } + i.sign = function(s) { + return s > 0 ? 1 : s < 0 ? -1 : 0; + }, i.floor = function(s) { + return s < 0 ? Math.ceil(s) : Math.floor(s); + }, i.ceil = function(s) { + return s < 0 ? Math.floor(s) : Math.ceil(s); + }, r.exports = i; + }, + /* 10 */ + /***/ + function(r, a, n) { + function i() { + } + i.MAX_VALUE = 2147483647, i.MIN_VALUE = -2147483648, r.exports = i; + }, + /* 11 */ + /***/ + function(r, a, n) { + var i = function() { + function h(c, v) { + for (var d = 0; d < v.length; d++) { + var g = v[d]; + g.enumerable = g.enumerable || !1, g.configurable = !0, "value" in g && (g.writable = !0), Object.defineProperty(c, g.key, g); + } + } + return function(c, v, d) { + return v && h(c.prototype, v), d && h(c, d), c; + }; + }(); + function s(h, c) { + if (!(h instanceof c)) + throw new TypeError("Cannot call a class as a function"); + } + var o = function(c) { + return { value: c, next: null, prev: null }; + }, l = function(c, v, d, g) { + return c !== null ? c.next = v : g.head = v, d !== null ? d.prev = v : g.tail = v, v.prev = c, v.next = d, g.length++, v; + }, u = function(c, v) { + var d = c.prev, g = c.next; + return d !== null ? d.next = g : v.head = g, g !== null ? g.prev = d : v.tail = d, c.prev = c.next = null, v.length--, c; + }, f = function() { + function h(c) { + var v = this; + s(this, h), this.length = 0, this.head = null, this.tail = null, c != null && c.forEach(function(d) { + return v.push(d); + }); + } + return i(h, [{ + key: "size", + value: function() { + return this.length; + } + }, { + key: "insertBefore", + value: function(v, d) { + return l(d.prev, o(v), d, this); + } + }, { + key: "insertAfter", + value: function(v, d) { + return l(d, o(v), d.next, this); + } + }, { + key: "insertNodeBefore", + value: function(v, d) { + return l(d.prev, v, d, this); + } + }, { + key: "insertNodeAfter", + value: function(v, d) { + return l(d, v, d.next, this); + } + }, { + key: "push", + value: function(v) { + return l(this.tail, o(v), null, this); + } + }, { + key: "unshift", + value: function(v) { + return l(null, o(v), this.head, this); + } + }, { + key: "remove", + value: function(v) { + return u(v, this); + } + }, { + key: "pop", + value: function() { + return u(this.tail, this).value; + } + }, { + key: "popNode", + value: function() { + return u(this.tail, this); + } + }, { + key: "shift", + value: function() { + return u(this.head, this).value; + } + }, { + key: "shiftNode", + value: function() { + return u(this.head, this); + } + }, { + key: "get_object_at", + value: function(v) { + if (v <= this.length()) { + for (var d = 1, g = this.head; d < v; ) + g = g.next, d++; + return g.value; + } + } + }, { + key: "set_object_at", + value: function(v, d) { + if (v <= this.length()) { + for (var g = 1, p = this.head; g < v; ) + p = p.next, g++; + p.value = d; + } + } + }]), h; + }(); + r.exports = f; + }, + /* 12 */ + /***/ + function(r, a, n) { + function i(s, o, l) { + this.x = null, this.y = null, s == null && o == null && l == null ? (this.x = 0, this.y = 0) : typeof s == "number" && typeof o == "number" && l == null ? (this.x = s, this.y = o) : s.constructor.name == "Point" && o == null && l == null && (l = s, this.x = l.x, this.y = l.y); + } + i.prototype.getX = function() { + return this.x; + }, i.prototype.getY = function() { + return this.y; + }, i.prototype.getLocation = function() { + return new i(this.x, this.y); + }, i.prototype.setLocation = function(s, o, l) { + s.constructor.name == "Point" && o == null && l == null ? (l = s, this.setLocation(l.x, l.y)) : typeof s == "number" && typeof o == "number" && l == null && (parseInt(s) == s && parseInt(o) == o ? this.move(s, o) : (this.x = Math.floor(s + 0.5), this.y = Math.floor(o + 0.5))); + }, i.prototype.move = function(s, o) { + this.x = s, this.y = o; + }, i.prototype.translate = function(s, o) { + this.x += s, this.y += o; + }, i.prototype.equals = function(s) { + if (s.constructor.name == "Point") { + var o = s; + return this.x == o.x && this.y == o.y; + } + return this == s; + }, i.prototype.toString = function() { + return new i().constructor.name + "[x=" + this.x + ",y=" + this.y + "]"; + }, r.exports = i; + }, + /* 13 */ + /***/ + function(r, a, n) { + function i(s, o, l, u) { + this.x = 0, this.y = 0, this.width = 0, this.height = 0, s != null && o != null && l != null && u != null && (this.x = s, this.y = o, this.width = l, this.height = u); + } + i.prototype.getX = function() { + return this.x; + }, i.prototype.setX = function(s) { + this.x = s; + }, i.prototype.getY = function() { + return this.y; + }, i.prototype.setY = function(s) { + this.y = s; + }, i.prototype.getWidth = function() { + return this.width; + }, i.prototype.setWidth = function(s) { + this.width = s; + }, i.prototype.getHeight = function() { + return this.height; + }, i.prototype.setHeight = function(s) { + this.height = s; + }, i.prototype.getRight = function() { + return this.x + this.width; + }, i.prototype.getBottom = function() { + return this.y + this.height; + }, i.prototype.intersects = function(s) { + return !(this.getRight() < s.x || this.getBottom() < s.y || s.getRight() < this.x || s.getBottom() < this.y); + }, i.prototype.getCenterX = function() { + return this.x + this.width / 2; + }, i.prototype.getMinX = function() { + return this.getX(); + }, i.prototype.getMaxX = function() { + return this.getX() + this.width; + }, i.prototype.getCenterY = function() { + return this.y + this.height / 2; + }, i.prototype.getMinY = function() { + return this.getY(); + }, i.prototype.getMaxY = function() { + return this.getY() + this.height; + }, i.prototype.getWidthHalf = function() { + return this.width / 2; + }, i.prototype.getHeightHalf = function() { + return this.height / 2; + }, r.exports = i; + }, + /* 14 */ + /***/ + function(r, a, n) { + var i = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }; + function s() { + } + s.lastID = 0, s.createID = function(o) { + return s.isPrimitive(o) ? o : (o.uniqueID != null || (o.uniqueID = s.getString(), s.lastID++), o.uniqueID); + }, s.getString = function(o) { + return o == null && (o = s.lastID), "Object#" + o; + }, s.isPrimitive = function(o) { + var l = typeof o == "undefined" ? "undefined" : i(o); + return o == null || l != "object" && l != "function"; + }, r.exports = s; + }, + /* 15 */ + /***/ + function(r, a, n) { + function i(g) { + if (Array.isArray(g)) { + for (var p = 0, y = Array(g.length); p < g.length; p++) + y[p] = g[p]; + return y; + } else + return Array.from(g); + } + var s = n(0), o = n(6), l = n(3), u = n(1), f = n(5), h = n(4), c = n(17), v = n(27); + function d(g) { + v.call(this), this.layoutQuality = s.QUALITY, this.createBendsAsNeeded = s.DEFAULT_CREATE_BENDS_AS_NEEDED, this.incremental = s.DEFAULT_INCREMENTAL, this.animationOnLayout = s.DEFAULT_ANIMATION_ON_LAYOUT, this.animationDuringLayout = s.DEFAULT_ANIMATION_DURING_LAYOUT, this.animationPeriod = s.DEFAULT_ANIMATION_PERIOD, this.uniformLeafNodeSizes = s.DEFAULT_UNIFORM_LEAF_NODE_SIZES, this.edgeToDummyNodes = /* @__PURE__ */ new Map(), this.graphManager = new o(this), this.isLayoutFinished = !1, this.isSubLayout = !1, this.isRemoteUse = !1, g != null && (this.isRemoteUse = g); + } + d.RANDOM_SEED = 1, d.prototype = Object.create(v.prototype), d.prototype.getGraphManager = function() { + return this.graphManager; + }, d.prototype.getAllNodes = function() { + return this.graphManager.getAllNodes(); + }, d.prototype.getAllEdges = function() { + return this.graphManager.getAllEdges(); + }, d.prototype.getAllNodesToApplyGravitation = function() { + return this.graphManager.getAllNodesToApplyGravitation(); + }, d.prototype.newGraphManager = function() { + var g = new o(this); + return this.graphManager = g, g; + }, d.prototype.newGraph = function(g) { + return new f(null, this.graphManager, g); + }, d.prototype.newNode = function(g) { + return new l(this.graphManager, g); + }, d.prototype.newEdge = function(g) { + return new u(null, null, g); + }, d.prototype.checkLayoutSuccess = function() { + return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge(); + }, d.prototype.runLayout = function() { + this.isLayoutFinished = !1, this.tilingPreLayout && this.tilingPreLayout(), this.initParameters(); + var g; + return this.checkLayoutSuccess() ? g = !1 : g = this.layout(), s.ANIMATE === "during" ? !1 : (g && (this.isSubLayout || this.doPostLayout()), this.tilingPostLayout && this.tilingPostLayout(), this.isLayoutFinished = !0, g); + }, d.prototype.doPostLayout = function() { + this.incremental || this.transform(), this.update(); + }, d.prototype.update2 = function() { + if (this.createBendsAsNeeded && (this.createBendpointsFromDummyNodes(), this.graphManager.resetAllEdges()), !this.isRemoteUse) { + for (var g = this.graphManager.getAllEdges(), p = 0; p < g.length; p++) + g[p]; + for (var y = this.graphManager.getRoot().getNodes(), p = 0; p < y.length; p++) + y[p]; + this.update(this.graphManager.getRoot()); + } + }, d.prototype.update = function(g) { + if (g == null) + this.update2(); + else if (g instanceof l) { + var p = g; + if (p.getChild() != null) + for (var y = p.getChild().getNodes(), E = 0; E < y.length; E++) + update(y[E]); + if (p.vGraphObject != null) { + var m = p.vGraphObject; + m.update(p); + } + } else if (g instanceof u) { + var T = g; + if (T.vGraphObject != null) { + var C = T.vGraphObject; + C.update(T); + } + } else if (g instanceof f) { + var S = g; + if (S.vGraphObject != null) { + var b = S.vGraphObject; + b.update(S); + } + } + }, d.prototype.initParameters = function() { + this.isSubLayout || (this.layoutQuality = s.QUALITY, this.animationDuringLayout = s.DEFAULT_ANIMATION_DURING_LAYOUT, this.animationPeriod = s.DEFAULT_ANIMATION_PERIOD, this.animationOnLayout = s.DEFAULT_ANIMATION_ON_LAYOUT, this.incremental = s.DEFAULT_INCREMENTAL, this.createBendsAsNeeded = s.DEFAULT_CREATE_BENDS_AS_NEEDED, this.uniformLeafNodeSizes = s.DEFAULT_UNIFORM_LEAF_NODE_SIZES), this.animationDuringLayout && (this.animationOnLayout = !1); + }, d.prototype.transform = function(g) { + if (g == null) + this.transform(new h(0, 0)); + else { + var p = new c(), y = this.graphManager.getRoot().updateLeftTop(); + if (y != null) { + p.setWorldOrgX(g.x), p.setWorldOrgY(g.y), p.setDeviceOrgX(y.x), p.setDeviceOrgY(y.y); + for (var E = this.getAllNodes(), m, T = 0; T < E.length; T++) + m = E[T], m.transform(p); + } + } + }, d.prototype.positionNodesRandomly = function(g) { + if (g == null) + this.positionNodesRandomly(this.getGraphManager().getRoot()), this.getGraphManager().getRoot().updateBounds(!0); + else + for (var p, y, E = g.getNodes(), m = 0; m < E.length; m++) + p = E[m], y = p.getChild(), y == null || y.getNodes().length == 0 ? p.scatter() : (this.positionNodesRandomly(y), p.updateBounds()); + }, d.prototype.getFlatForest = function() { + for (var g = [], p = !0, y = this.graphManager.getRoot().getNodes(), E = !0, m = 0; m < y.length; m++) + y[m].getChild() != null && (E = !1); + if (!E) + return g; + var T = /* @__PURE__ */ new Set(), C = [], S = /* @__PURE__ */ new Map(), b = []; + for (b = b.concat(y); b.length > 0 && p; ) { + for (C.push(b[0]); C.length > 0 && p; ) { + var x = C[0]; + C.splice(0, 1), T.add(x); + for (var w = x.getEdges(), m = 0; m < w.length; m++) { + var D = w[m].getOtherEnd(x); + if (S.get(x) != D) + if (!T.has(D)) + C.push(D), S.set(D, x); + else { + p = !1; + break; + } + } + } + if (!p) + g = []; + else { + var A = [].concat(i(T)); + g.push(A); + for (var m = 0; m < A.length; m++) { + var L = A[m], I = b.indexOf(L); + I > -1 && b.splice(I, 1); + } + T = /* @__PURE__ */ new Set(), S = /* @__PURE__ */ new Map(); + } + } + return g; + }, d.prototype.createDummyNodesForBendpoints = function(g) { + for (var p = [], y = g.source, E = this.graphManager.calcLowestCommonAncestor(g.source, g.target), m = 0; m < g.bendpoints.length; m++) { + var T = this.newNode(null); + T.setRect(new Point(0, 0), new Dimension(1, 1)), E.add(T); + var C = this.newEdge(null); + this.graphManager.add(C, y, T), p.add(T), y = T; + } + var C = this.newEdge(null); + return this.graphManager.add(C, y, g.target), this.edgeToDummyNodes.set(g, p), g.isInterGraph() ? this.graphManager.remove(g) : E.remove(g), p; + }, d.prototype.createBendpointsFromDummyNodes = function() { + var g = []; + g = g.concat(this.graphManager.getAllEdges()), g = [].concat(i(this.edgeToDummyNodes.keys())).concat(g); + for (var p = 0; p < g.length; p++) { + var y = g[p]; + if (y.bendpoints.length > 0) { + for (var E = this.edgeToDummyNodes.get(y), m = 0; m < E.length; m++) { + var T = E[m], C = new h(T.getCenterX(), T.getCenterY()), S = y.bendpoints.get(m); + S.x = C.x, S.y = C.y, T.getOwner().remove(T); + } + this.graphManager.add(y, y.source, y.target); + } + } + }, d.transform = function(g, p, y, E) { + if (y != null && E != null) { + var m = p; + if (g <= 50) { + var T = p / y; + m -= (p - T) / 50 * (50 - g); + } else { + var C = p * E; + m += (C - p) / 50 * (g - 50); + } + return m; + } else { + var S, b; + return g <= 50 ? (S = 9 * p / 500, b = p / 10) : (S = 9 * p / 50, b = -8 * p), S * g + b; + } + }, d.findCenterOfTree = function(g) { + var p = []; + p = p.concat(g); + var y = [], E = /* @__PURE__ */ new Map(), m = !1, T = null; + (p.length == 1 || p.length == 2) && (m = !0, T = p[0]); + for (var C = 0; C < p.length; C++) { + var S = p[C], b = S.getNeighborsList().size; + E.set(S, S.getNeighborsList().size), b == 1 && y.push(S); + } + var x = []; + for (x = x.concat(y); !m; ) { + var w = []; + w = w.concat(x), x = []; + for (var C = 0; C < p.length; C++) { + var S = p[C], D = p.indexOf(S); + D >= 0 && p.splice(D, 1); + var A = S.getNeighborsList(); + A.forEach(function(O) { + if (y.indexOf(O) < 0) { + var P = E.get(O), R = P - 1; + R == 1 && x.push(O), E.set(O, R); + } + }); + } + y = y.concat(x), (p.length == 1 || p.length == 2) && (m = !0, T = p[0]); + } + return T; + }, d.prototype.setGraphManager = function(g) { + this.graphManager = g; + }, r.exports = d; + }, + /* 16 */ + /***/ + function(r, a, n) { + function i() { + } + i.seed = 1, i.x = 0, i.nextDouble = function() { + return i.x = Math.sin(i.seed++) * 1e4, i.x - Math.floor(i.x); + }, r.exports = i; + }, + /* 17 */ + /***/ + function(r, a, n) { + var i = n(4); + function s(o, l) { + this.lworldOrgX = 0, this.lworldOrgY = 0, this.ldeviceOrgX = 0, this.ldeviceOrgY = 0, this.lworldExtX = 1, this.lworldExtY = 1, this.ldeviceExtX = 1, this.ldeviceExtY = 1; + } + s.prototype.getWorldOrgX = function() { + return this.lworldOrgX; + }, s.prototype.setWorldOrgX = function(o) { + this.lworldOrgX = o; + }, s.prototype.getWorldOrgY = function() { + return this.lworldOrgY; + }, s.prototype.setWorldOrgY = function(o) { + this.lworldOrgY = o; + }, s.prototype.getWorldExtX = function() { + return this.lworldExtX; + }, s.prototype.setWorldExtX = function(o) { + this.lworldExtX = o; + }, s.prototype.getWorldExtY = function() { + return this.lworldExtY; + }, s.prototype.setWorldExtY = function(o) { + this.lworldExtY = o; + }, s.prototype.getDeviceOrgX = function() { + return this.ldeviceOrgX; + }, s.prototype.setDeviceOrgX = function(o) { + this.ldeviceOrgX = o; + }, s.prototype.getDeviceOrgY = function() { + return this.ldeviceOrgY; + }, s.prototype.setDeviceOrgY = function(o) { + this.ldeviceOrgY = o; + }, s.prototype.getDeviceExtX = function() { + return this.ldeviceExtX; + }, s.prototype.setDeviceExtX = function(o) { + this.ldeviceExtX = o; + }, s.prototype.getDeviceExtY = function() { + return this.ldeviceExtY; + }, s.prototype.setDeviceExtY = function(o) { + this.ldeviceExtY = o; + }, s.prototype.transformX = function(o) { + var l = 0, u = this.lworldExtX; + return u != 0 && (l = this.ldeviceOrgX + (o - this.lworldOrgX) * this.ldeviceExtX / u), l; + }, s.prototype.transformY = function(o) { + var l = 0, u = this.lworldExtY; + return u != 0 && (l = this.ldeviceOrgY + (o - this.lworldOrgY) * this.ldeviceExtY / u), l; + }, s.prototype.inverseTransformX = function(o) { + var l = 0, u = this.ldeviceExtX; + return u != 0 && (l = this.lworldOrgX + (o - this.ldeviceOrgX) * this.lworldExtX / u), l; + }, s.prototype.inverseTransformY = function(o) { + var l = 0, u = this.ldeviceExtY; + return u != 0 && (l = this.lworldOrgY + (o - this.ldeviceOrgY) * this.lworldExtY / u), l; + }, s.prototype.inverseTransformPoint = function(o) { + var l = new i(this.inverseTransformX(o.x), this.inverseTransformY(o.y)); + return l; + }, r.exports = s; + }, + /* 18 */ + /***/ + function(r, a, n) { + function i(v) { + if (Array.isArray(v)) { + for (var d = 0, g = Array(v.length); d < v.length; d++) + g[d] = v[d]; + return g; + } else + return Array.from(v); + } + var s = n(15), o = n(7), l = n(0), u = n(8), f = n(9); + function h() { + s.call(this), this.useSmartIdealEdgeLengthCalculation = o.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION, this.idealEdgeLength = o.DEFAULT_EDGE_LENGTH, this.springConstant = o.DEFAULT_SPRING_STRENGTH, this.repulsionConstant = o.DEFAULT_REPULSION_STRENGTH, this.gravityConstant = o.DEFAULT_GRAVITY_STRENGTH, this.compoundGravityConstant = o.DEFAULT_COMPOUND_GRAVITY_STRENGTH, this.gravityRangeFactor = o.DEFAULT_GRAVITY_RANGE_FACTOR, this.compoundGravityRangeFactor = o.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR, this.displacementThresholdPerNode = 3 * o.DEFAULT_EDGE_LENGTH / 100, this.coolingFactor = o.DEFAULT_COOLING_FACTOR_INCREMENTAL, this.initialCoolingFactor = o.DEFAULT_COOLING_FACTOR_INCREMENTAL, this.totalDisplacement = 0, this.oldTotalDisplacement = 0, this.maxIterations = o.MAX_ITERATIONS; + } + h.prototype = Object.create(s.prototype); + for (var c in s) + h[c] = s[c]; + h.prototype.initParameters = function() { + s.prototype.initParameters.call(this, arguments), this.totalIterations = 0, this.notAnimatedIterations = 0, this.useFRGridVariant = o.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION, this.grid = []; + }, h.prototype.calcIdealEdgeLengths = function() { + for (var v, d, g, p, y, E, m = this.getGraphManager().getAllEdges(), T = 0; T < m.length; T++) + v = m[T], v.idealLength = this.idealEdgeLength, v.isInterGraph && (g = v.getSource(), p = v.getTarget(), y = v.getSourceInLca().getEstimatedSize(), E = v.getTargetInLca().getEstimatedSize(), this.useSmartIdealEdgeLengthCalculation && (v.idealLength += y + E - 2 * l.SIMPLE_NODE_SIZE), d = v.getLca().getInclusionTreeDepth(), v.idealLength += o.DEFAULT_EDGE_LENGTH * o.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (g.getInclusionTreeDepth() + p.getInclusionTreeDepth() - 2 * d)); + }, h.prototype.initSpringEmbedder = function() { + var v = this.getAllNodes().length; + this.incremental ? (v > o.ADAPTATION_LOWER_NODE_LIMIT && (this.coolingFactor = Math.max(this.coolingFactor * o.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (v - o.ADAPTATION_LOWER_NODE_LIMIT) / (o.ADAPTATION_UPPER_NODE_LIMIT - o.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - o.COOLING_ADAPTATION_FACTOR))), this.maxNodeDisplacement = o.MAX_NODE_DISPLACEMENT_INCREMENTAL) : (v > o.ADAPTATION_LOWER_NODE_LIMIT ? this.coolingFactor = Math.max(o.COOLING_ADAPTATION_FACTOR, 1 - (v - o.ADAPTATION_LOWER_NODE_LIMIT) / (o.ADAPTATION_UPPER_NODE_LIMIT - o.ADAPTATION_LOWER_NODE_LIMIT) * (1 - o.COOLING_ADAPTATION_FACTOR)) : this.coolingFactor = 1, this.initialCoolingFactor = this.coolingFactor, this.maxNodeDisplacement = o.MAX_NODE_DISPLACEMENT), this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations), this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length, this.repulsionRange = this.calcRepulsionRange(); + }, h.prototype.calcSpringForces = function() { + for (var v = this.getAllEdges(), d, g = 0; g < v.length; g++) + d = v[g], this.calcSpringForce(d, d.idealLength); + }, h.prototype.calcRepulsionForces = function() { + var v = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0, d = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, g, p, y, E, m = this.getAllNodes(), T; + if (this.useFRGridVariant) + for (this.totalIterations % o.GRID_CALCULATION_CHECK_PERIOD == 1 && v && this.updateGrid(), T = /* @__PURE__ */ new Set(), g = 0; g < m.length; g++) + y = m[g], this.calculateRepulsionForceOfANode(y, T, v, d), T.add(y); + else + for (g = 0; g < m.length; g++) + for (y = m[g], p = g + 1; p < m.length; p++) + E = m[p], y.getOwner() == E.getOwner() && this.calcRepulsionForce(y, E); + }, h.prototype.calcGravitationalForces = function() { + for (var v, d = this.getAllNodesToApplyGravitation(), g = 0; g < d.length; g++) + v = d[g], this.calcGravitationalForce(v); + }, h.prototype.moveNodes = function() { + for (var v = this.getAllNodes(), d, g = 0; g < v.length; g++) + d = v[g], d.move(); + }, h.prototype.calcSpringForce = function(v, d) { + var g = v.getSource(), p = v.getTarget(), y, E, m, T; + if (this.uniformLeafNodeSizes && g.getChild() == null && p.getChild() == null) + v.updateLengthSimple(); + else if (v.updateLength(), v.isOverlapingSourceAndTarget) + return; + y = v.getLength(), y != 0 && (E = this.springConstant * (y - d), m = E * (v.lengthX / y), T = E * (v.lengthY / y), g.springForceX += m, g.springForceY += T, p.springForceX -= m, p.springForceY -= T); + }, h.prototype.calcRepulsionForce = function(v, d) { + var g = v.getRect(), p = d.getRect(), y = new Array(2), E = new Array(4), m, T, C, S, b, x, w; + if (g.intersects(p)) { + u.calcSeparationAmount(g, p, y, o.DEFAULT_EDGE_LENGTH / 2), x = 2 * y[0], w = 2 * y[1]; + var D = v.noOfChildren * d.noOfChildren / (v.noOfChildren + d.noOfChildren); + v.repulsionForceX -= D * x, v.repulsionForceY -= D * w, d.repulsionForceX += D * x, d.repulsionForceY += D * w; + } else + this.uniformLeafNodeSizes && v.getChild() == null && d.getChild() == null ? (m = p.getCenterX() - g.getCenterX(), T = p.getCenterY() - g.getCenterY()) : (u.getIntersection(g, p, E), m = E[2] - E[0], T = E[3] - E[1]), Math.abs(m) < o.MIN_REPULSION_DIST && (m = f.sign(m) * o.MIN_REPULSION_DIST), Math.abs(T) < o.MIN_REPULSION_DIST && (T = f.sign(T) * o.MIN_REPULSION_DIST), C = m * m + T * T, S = Math.sqrt(C), b = this.repulsionConstant * v.noOfChildren * d.noOfChildren / C, x = b * m / S, w = b * T / S, v.repulsionForceX -= x, v.repulsionForceY -= w, d.repulsionForceX += x, d.repulsionForceY += w; + }, h.prototype.calcGravitationalForce = function(v) { + var d, g, p, y, E, m, T, C; + d = v.getOwner(), g = (d.getRight() + d.getLeft()) / 2, p = (d.getTop() + d.getBottom()) / 2, y = v.getCenterX() - g, E = v.getCenterY() - p, m = Math.abs(y) + v.getWidth() / 2, T = Math.abs(E) + v.getHeight() / 2, v.getOwner() == this.graphManager.getRoot() ? (C = d.getEstimatedSize() * this.gravityRangeFactor, (m > C || T > C) && (v.gravitationForceX = -this.gravityConstant * y, v.gravitationForceY = -this.gravityConstant * E)) : (C = d.getEstimatedSize() * this.compoundGravityRangeFactor, (m > C || T > C) && (v.gravitationForceX = -this.gravityConstant * y * this.compoundGravityConstant, v.gravitationForceY = -this.gravityConstant * E * this.compoundGravityConstant)); + }, h.prototype.isConverged = function() { + var v, d = !1; + return this.totalIterations > this.maxIterations / 3 && (d = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2), v = this.totalDisplacement < this.totalDisplacementThreshold, this.oldTotalDisplacement = this.totalDisplacement, v || d; + }, h.prototype.animate = function() { + this.animationDuringLayout && !this.isSubLayout && (this.notAnimatedIterations == this.animationPeriod ? (this.update(), this.notAnimatedIterations = 0) : this.notAnimatedIterations++); + }, h.prototype.calcNoOfChildrenForAllNodes = function() { + for (var v, d = this.graphManager.getAllNodes(), g = 0; g < d.length; g++) + v = d[g], v.noOfChildren = v.getNoOfChildren(); + }, h.prototype.calcGrid = function(v) { + var d = 0, g = 0; + d = parseInt(Math.ceil((v.getRight() - v.getLeft()) / this.repulsionRange)), g = parseInt(Math.ceil((v.getBottom() - v.getTop()) / this.repulsionRange)); + for (var p = new Array(d), y = 0; y < d; y++) + p[y] = new Array(g); + for (var y = 0; y < d; y++) + for (var E = 0; E < g; E++) + p[y][E] = new Array(); + return p; + }, h.prototype.addNodeToGrid = function(v, d, g) { + var p = 0, y = 0, E = 0, m = 0; + p = parseInt(Math.floor((v.getRect().x - d) / this.repulsionRange)), y = parseInt(Math.floor((v.getRect().width + v.getRect().x - d) / this.repulsionRange)), E = parseInt(Math.floor((v.getRect().y - g) / this.repulsionRange)), m = parseInt(Math.floor((v.getRect().height + v.getRect().y - g) / this.repulsionRange)); + for (var T = p; T <= y; T++) + for (var C = E; C <= m; C++) + this.grid[T][C].push(v), v.setGridCoordinates(p, y, E, m); + }, h.prototype.updateGrid = function() { + var v, d, g = this.getAllNodes(); + for (this.grid = this.calcGrid(this.graphManager.getRoot()), v = 0; v < g.length; v++) + d = g[v], this.addNodeToGrid(d, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop()); + }, h.prototype.calculateRepulsionForceOfANode = function(v, d, g, p) { + if (this.totalIterations % o.GRID_CALCULATION_CHECK_PERIOD == 1 && g || p) { + var y = /* @__PURE__ */ new Set(); + v.surrounding = new Array(); + for (var E, m = this.grid, T = v.startX - 1; T < v.finishX + 2; T++) + for (var C = v.startY - 1; C < v.finishY + 2; C++) + if (!(T < 0 || C < 0 || T >= m.length || C >= m[0].length)) { + for (var S = 0; S < m[T][C].length; S++) + if (E = m[T][C][S], !(v.getOwner() != E.getOwner() || v == E) && !d.has(E) && !y.has(E)) { + var b = Math.abs(v.getCenterX() - E.getCenterX()) - (v.getWidth() / 2 + E.getWidth() / 2), x = Math.abs(v.getCenterY() - E.getCenterY()) - (v.getHeight() / 2 + E.getHeight() / 2); + b <= this.repulsionRange && x <= this.repulsionRange && y.add(E); + } + } + v.surrounding = [].concat(i(y)); + } + for (T = 0; T < v.surrounding.length; T++) + this.calcRepulsionForce(v, v.surrounding[T]); + }, h.prototype.calcRepulsionRange = function() { + return 0; + }, r.exports = h; + }, + /* 19 */ + /***/ + function(r, a, n) { + var i = n(1), s = n(7); + function o(u, f, h) { + i.call(this, u, f, h), this.idealLength = s.DEFAULT_EDGE_LENGTH; + } + o.prototype = Object.create(i.prototype); + for (var l in i) + o[l] = i[l]; + r.exports = o; + }, + /* 20 */ + /***/ + function(r, a, n) { + var i = n(3); + function s(l, u, f, h) { + i.call(this, l, u, f, h), this.springForceX = 0, this.springForceY = 0, this.repulsionForceX = 0, this.repulsionForceY = 0, this.gravitationForceX = 0, this.gravitationForceY = 0, this.displacementX = 0, this.displacementY = 0, this.startX = 0, this.finishX = 0, this.startY = 0, this.finishY = 0, this.surrounding = []; + } + s.prototype = Object.create(i.prototype); + for (var o in i) + s[o] = i[o]; + s.prototype.setGridCoordinates = function(l, u, f, h) { + this.startX = l, this.finishX = u, this.startY = f, this.finishY = h; + }, r.exports = s; + }, + /* 21 */ + /***/ + function(r, a, n) { + function i(s, o) { + this.width = 0, this.height = 0, s !== null && o !== null && (this.height = o, this.width = s); + } + i.prototype.getWidth = function() { + return this.width; + }, i.prototype.setWidth = function(s) { + this.width = s; + }, i.prototype.getHeight = function() { + return this.height; + }, i.prototype.setHeight = function(s) { + this.height = s; + }, r.exports = i; + }, + /* 22 */ + /***/ + function(r, a, n) { + var i = n(14); + function s() { + this.map = {}, this.keys = []; + } + s.prototype.put = function(o, l) { + var u = i.createID(o); + this.contains(u) || (this.map[u] = l, this.keys.push(o)); + }, s.prototype.contains = function(o) { + return i.createID(o), this.map[o] != null; + }, s.prototype.get = function(o) { + var l = i.createID(o); + return this.map[l]; + }, s.prototype.keySet = function() { + return this.keys; + }, r.exports = s; + }, + /* 23 */ + /***/ + function(r, a, n) { + var i = n(14); + function s() { + this.set = {}; + } + s.prototype.add = function(o) { + var l = i.createID(o); + this.contains(l) || (this.set[l] = o); + }, s.prototype.remove = function(o) { + delete this.set[i.createID(o)]; + }, s.prototype.clear = function() { + this.set = {}; + }, s.prototype.contains = function(o) { + return this.set[i.createID(o)] == o; + }, s.prototype.isEmpty = function() { + return this.size() === 0; + }, s.prototype.size = function() { + return Object.keys(this.set).length; + }, s.prototype.addAllTo = function(o) { + for (var l = Object.keys(this.set), u = l.length, f = 0; f < u; f++) + o.push(this.set[l[f]]); + }, s.prototype.size = function() { + return Object.keys(this.set).length; + }, s.prototype.addAll = function(o) { + for (var l = o.length, u = 0; u < l; u++) { + var f = o[u]; + this.add(f); + } + }, r.exports = s; + }, + /* 24 */ + /***/ + function(r, a, n) { + var i = function() { + function u(f, h) { + for (var c = 0; c < h.length; c++) { + var v = h[c]; + v.enumerable = v.enumerable || !1, v.configurable = !0, "value" in v && (v.writable = !0), Object.defineProperty(f, v.key, v); + } + } + return function(f, h, c) { + return h && u(f.prototype, h), c && u(f, c), f; + }; + }(); + function s(u, f) { + if (!(u instanceof f)) + throw new TypeError("Cannot call a class as a function"); + } + var o = n(11), l = function() { + function u(f, h) { + s(this, u), (h !== null || h !== void 0) && (this.compareFunction = this._defaultCompareFunction); + var c = void 0; + f instanceof o ? c = f.size() : c = f.length, this._quicksort(f, 0, c - 1); + } + return i(u, [{ + key: "_quicksort", + value: function(h, c, v) { + if (c < v) { + var d = this._partition(h, c, v); + this._quicksort(h, c, d), this._quicksort(h, d + 1, v); + } + } + }, { + key: "_partition", + value: function(h, c, v) { + for (var d = this._get(h, c), g = c, p = v; ; ) { + for (; this.compareFunction(d, this._get(h, p)); ) + p--; + for (; this.compareFunction(this._get(h, g), d); ) + g++; + if (g < p) + this._swap(h, g, p), g++, p--; + else + return p; + } + } + }, { + key: "_get", + value: function(h, c) { + return h instanceof o ? h.get_object_at(c) : h[c]; + } + }, { + key: "_set", + value: function(h, c, v) { + h instanceof o ? h.set_object_at(c, v) : h[c] = v; + } + }, { + key: "_swap", + value: function(h, c, v) { + var d = this._get(h, c); + this._set(h, c, this._get(h, v)), this._set(h, v, d); + } + }, { + key: "_defaultCompareFunction", + value: function(h, c) { + return c > h; + } + }]), u; + }(); + r.exports = l; + }, + /* 25 */ + /***/ + function(r, a, n) { + var i = function() { + function l(u, f) { + for (var h = 0; h < f.length; h++) { + var c = f[h]; + c.enumerable = c.enumerable || !1, c.configurable = !0, "value" in c && (c.writable = !0), Object.defineProperty(u, c.key, c); + } + } + return function(u, f, h) { + return f && l(u.prototype, f), h && l(u, h), u; + }; + }(); + function s(l, u) { + if (!(l instanceof u)) + throw new TypeError("Cannot call a class as a function"); + } + var o = function() { + function l(u, f) { + var h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1, c = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1, v = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; + s(this, l), this.sequence1 = u, this.sequence2 = f, this.match_score = h, this.mismatch_penalty = c, this.gap_penalty = v, this.iMax = u.length + 1, this.jMax = f.length + 1, this.grid = new Array(this.iMax); + for (var d = 0; d < this.iMax; d++) { + this.grid[d] = new Array(this.jMax); + for (var g = 0; g < this.jMax; g++) + this.grid[d][g] = 0; + } + this.tracebackGrid = new Array(this.iMax); + for (var p = 0; p < this.iMax; p++) { + this.tracebackGrid[p] = new Array(this.jMax); + for (var y = 0; y < this.jMax; y++) + this.tracebackGrid[p][y] = [null, null, null]; + } + this.alignments = [], this.score = -1, this.computeGrids(); + } + return i(l, [{ + key: "getScore", + value: function() { + return this.score; + } + }, { + key: "getAlignments", + value: function() { + return this.alignments; + } + // Main dynamic programming procedure + }, { + key: "computeGrids", + value: function() { + for (var f = 1; f < this.jMax; f++) + this.grid[0][f] = this.grid[0][f - 1] + this.gap_penalty, this.tracebackGrid[0][f] = [!1, !1, !0]; + for (var h = 1; h < this.iMax; h++) + this.grid[h][0] = this.grid[h - 1][0] + this.gap_penalty, this.tracebackGrid[h][0] = [!1, !0, !1]; + for (var c = 1; c < this.iMax; c++) + for (var v = 1; v < this.jMax; v++) { + var d = void 0; + this.sequence1[c - 1] === this.sequence2[v - 1] ? d = this.grid[c - 1][v - 1] + this.match_score : d = this.grid[c - 1][v - 1] + this.mismatch_penalty; + var g = this.grid[c - 1][v] + this.gap_penalty, p = this.grid[c][v - 1] + this.gap_penalty, y = [d, g, p], E = this.arrayAllMaxIndexes(y); + this.grid[c][v] = y[E[0]], this.tracebackGrid[c][v] = [E.includes(0), E.includes(1), E.includes(2)]; + } + this.score = this.grid[this.iMax - 1][this.jMax - 1]; + } + // Gets all possible valid sequence combinations + }, { + key: "alignmentTraceback", + value: function() { + var f = []; + for (f.push({ + pos: [this.sequence1.length, this.sequence2.length], + seq1: "", + seq2: "" + }); f[0]; ) { + var h = f[0], c = this.tracebackGrid[h.pos[0]][h.pos[1]]; + c[0] && f.push({ + pos: [h.pos[0] - 1, h.pos[1] - 1], + seq1: this.sequence1[h.pos[0] - 1] + h.seq1, + seq2: this.sequence2[h.pos[1] - 1] + h.seq2 + }), c[1] && f.push({ + pos: [h.pos[0] - 1, h.pos[1]], + seq1: this.sequence1[h.pos[0] - 1] + h.seq1, + seq2: "-" + h.seq2 + }), c[2] && f.push({ + pos: [h.pos[0], h.pos[1] - 1], + seq1: "-" + h.seq1, + seq2: this.sequence2[h.pos[1] - 1] + h.seq2 + }), h.pos[0] === 0 && h.pos[1] === 0 && this.alignments.push({ + sequence1: h.seq1, + sequence2: h.seq2 + }), f.shift(); + } + return this.alignments; + } + // Helper Functions + }, { + key: "getAllIndexes", + value: function(f, h) { + for (var c = [], v = -1; (v = f.indexOf(h, v + 1)) !== -1; ) + c.push(v); + return c; + } + }, { + key: "arrayAllMaxIndexes", + value: function(f) { + return this.getAllIndexes(f, Math.max.apply(null, f)); + } + }]), l; + }(); + r.exports = o; + }, + /* 26 */ + /***/ + function(r, a, n) { + var i = function() { + }; + i.FDLayout = n(18), i.FDLayoutConstants = n(7), i.FDLayoutEdge = n(19), i.FDLayoutNode = n(20), i.DimensionD = n(21), i.HashMap = n(22), i.HashSet = n(23), i.IGeometry = n(8), i.IMath = n(9), i.Integer = n(10), i.Point = n(12), i.PointD = n(4), i.RandomSeed = n(16), i.RectangleD = n(13), i.Transform = n(17), i.UniqueIDGeneretor = n(14), i.Quicksort = n(24), i.LinkedList = n(11), i.LGraphObject = n(2), i.LGraph = n(5), i.LEdge = n(1), i.LGraphManager = n(6), i.LNode = n(3), i.Layout = n(15), i.LayoutConstants = n(0), i.NeedlemanWunsch = n(25), r.exports = i; + }, + /* 27 */ + /***/ + function(r, a, n) { + function i() { + this.listeners = []; + } + var s = i.prototype; + s.addListener = function(o, l) { + this.listeners.push({ + event: o, + callback: l + }); + }, s.removeListener = function(o, l) { + for (var u = this.listeners.length; u >= 0; u--) { + var f = this.listeners[u]; + f.event === o && f.callback === l && this.listeners.splice(u, 1); + } + }, s.emit = function(o, l) { + for (var u = 0; u < this.listeners.length; u++) { + var f = this.listeners[u]; + o === f.event && f.callback(l); + } + }, r.exports = i; + } + /******/ + ]) + ); + }); + }(Fn)), Fn.exports; +} +var Ys; +function xm() { + return Ys || (Ys = 1, function(t, e) { + (function(a, n) { + t.exports = n(wm()); + })(Vt, function(r) { + return ( + /******/ + function(a) { + var n = {}; + function i(s) { + if (n[s]) + return n[s].exports; + var o = n[s] = { + /******/ + i: s, + /******/ + l: !1, + /******/ + exports: {} + /******/ + }; + return a[s].call(o.exports, o, o.exports, i), o.l = !0, o.exports; + } + return i.m = a, i.c = n, i.i = function(s) { + return s; + }, i.d = function(s, o, l) { + i.o(s, o) || Object.defineProperty(s, o, { + /******/ + configurable: !1, + /******/ + enumerable: !0, + /******/ + get: l + /******/ + }); + }, i.n = function(s) { + var o = s && s.__esModule ? ( + /******/ + function() { + return s.default; + } + ) : ( + /******/ + function() { + return s; + } + ); + return i.d(o, "a", o), o; + }, i.o = function(s, o) { + return Object.prototype.hasOwnProperty.call(s, o); + }, i.p = "", i(i.s = 7); + }([ + /* 0 */ + /***/ + function(a, n) { + a.exports = r; + }, + /* 1 */ + /***/ + function(a, n, i) { + var s = i(0).FDLayoutConstants; + function o() { + } + for (var l in s) + o[l] = s[l]; + o.DEFAULT_USE_MULTI_LEVEL_SCALING = !1, o.DEFAULT_RADIAL_SEPARATION = s.DEFAULT_EDGE_LENGTH, o.DEFAULT_COMPONENT_SEPERATION = 60, o.TILE = !0, o.TILING_PADDING_VERTICAL = 10, o.TILING_PADDING_HORIZONTAL = 10, o.TREE_REDUCTION_ON_INCREMENTAL = !1, a.exports = o; + }, + /* 2 */ + /***/ + function(a, n, i) { + var s = i(0).FDLayoutEdge; + function o(u, f, h) { + s.call(this, u, f, h); + } + o.prototype = Object.create(s.prototype); + for (var l in s) + o[l] = s[l]; + a.exports = o; + }, + /* 3 */ + /***/ + function(a, n, i) { + var s = i(0).LGraph; + function o(u, f, h) { + s.call(this, u, f, h); + } + o.prototype = Object.create(s.prototype); + for (var l in s) + o[l] = s[l]; + a.exports = o; + }, + /* 4 */ + /***/ + function(a, n, i) { + var s = i(0).LGraphManager; + function o(u) { + s.call(this, u); + } + o.prototype = Object.create(s.prototype); + for (var l in s) + o[l] = s[l]; + a.exports = o; + }, + /* 5 */ + /***/ + function(a, n, i) { + var s = i(0).FDLayoutNode, o = i(0).IMath; + function l(f, h, c, v) { + s.call(this, f, h, c, v); + } + l.prototype = Object.create(s.prototype); + for (var u in s) + l[u] = s[u]; + l.prototype.move = function() { + var f = this.graphManager.getLayout(); + this.displacementX = f.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren, this.displacementY = f.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren, Math.abs(this.displacementX) > f.coolingFactor * f.maxNodeDisplacement && (this.displacementX = f.coolingFactor * f.maxNodeDisplacement * o.sign(this.displacementX)), Math.abs(this.displacementY) > f.coolingFactor * f.maxNodeDisplacement && (this.displacementY = f.coolingFactor * f.maxNodeDisplacement * o.sign(this.displacementY)), this.child == null ? this.moveBy(this.displacementX, this.displacementY) : this.child.getNodes().length == 0 ? this.moveBy(this.displacementX, this.displacementY) : this.propogateDisplacementToChildren(this.displacementX, this.displacementY), f.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY), this.springForceX = 0, this.springForceY = 0, this.repulsionForceX = 0, this.repulsionForceY = 0, this.gravitationForceX = 0, this.gravitationForceY = 0, this.displacementX = 0, this.displacementY = 0; + }, l.prototype.propogateDisplacementToChildren = function(f, h) { + for (var c = this.getChild().getNodes(), v, d = 0; d < c.length; d++) + v = c[d], v.getChild() == null ? (v.moveBy(f, h), v.displacementX += f, v.displacementY += h) : v.propogateDisplacementToChildren(f, h); + }, l.prototype.setPred1 = function(f) { + this.pred1 = f; + }, l.prototype.getPred1 = function() { + return pred1; + }, l.prototype.getPred2 = function() { + return pred2; + }, l.prototype.setNext = function(f) { + this.next = f; + }, l.prototype.getNext = function() { + return next; + }, l.prototype.setProcessed = function(f) { + this.processed = f; + }, l.prototype.isProcessed = function() { + return processed; + }, a.exports = l; + }, + /* 6 */ + /***/ + function(a, n, i) { + var s = i(0).FDLayout, o = i(4), l = i(3), u = i(5), f = i(2), h = i(1), c = i(0).FDLayoutConstants, v = i(0).LayoutConstants, d = i(0).Point, g = i(0).PointD, p = i(0).Layout, y = i(0).Integer, E = i(0).IGeometry, m = i(0).LGraph, T = i(0).Transform; + function C() { + s.call(this), this.toBeTiled = {}; + } + C.prototype = Object.create(s.prototype); + for (var S in s) + C[S] = s[S]; + C.prototype.newGraphManager = function() { + var b = new o(this); + return this.graphManager = b, b; + }, C.prototype.newGraph = function(b) { + return new l(null, this.graphManager, b); + }, C.prototype.newNode = function(b) { + return new u(this.graphManager, b); + }, C.prototype.newEdge = function(b) { + return new f(null, null, b); + }, C.prototype.initParameters = function() { + s.prototype.initParameters.call(this, arguments), this.isSubLayout || (h.DEFAULT_EDGE_LENGTH < 10 ? this.idealEdgeLength = 10 : this.idealEdgeLength = h.DEFAULT_EDGE_LENGTH, this.useSmartIdealEdgeLengthCalculation = h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION, this.springConstant = c.DEFAULT_SPRING_STRENGTH, this.repulsionConstant = c.DEFAULT_REPULSION_STRENGTH, this.gravityConstant = c.DEFAULT_GRAVITY_STRENGTH, this.compoundGravityConstant = c.DEFAULT_COMPOUND_GRAVITY_STRENGTH, this.gravityRangeFactor = c.DEFAULT_GRAVITY_RANGE_FACTOR, this.compoundGravityRangeFactor = c.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR, this.prunedNodesAll = [], this.growTreeIterations = 0, this.afterGrowthIterations = 0, this.isTreeGrowing = !1, this.isGrowthFinished = !1, this.coolingCycle = 0, this.maxCoolingCycle = this.maxIterations / c.CONVERGENCE_CHECK_PERIOD, this.finalTemperature = c.CONVERGENCE_CHECK_PERIOD / this.maxIterations, this.coolingAdjuster = 1); + }, C.prototype.layout = function() { + var b = v.DEFAULT_CREATE_BENDS_AS_NEEDED; + return b && (this.createBendpoints(), this.graphManager.resetAllEdges()), this.level = 0, this.classicLayout(); + }, C.prototype.classicLayout = function() { + if (this.nodesWithGravity = this.calculateNodesToApplyGravitationTo(), this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity), this.calcNoOfChildrenForAllNodes(), this.graphManager.calcLowestCommonAncestors(), this.graphManager.calcInclusionTreeDepths(), this.graphManager.getRoot().calcEstimatedSize(), this.calcIdealEdgeLengths(), this.incremental) { + if (h.TREE_REDUCTION_ON_INCREMENTAL) { + this.reduceTrees(), this.graphManager.resetAllNodesToApplyGravitation(); + var x = new Set(this.getAllNodes()), w = this.nodesWithGravity.filter(function(L) { + return x.has(L); + }); + this.graphManager.setAllNodesToApplyGravitation(w); + } + } else { + var b = this.getFlatForest(); + if (b.length > 0) + this.positionNodesRadially(b); + else { + this.reduceTrees(), this.graphManager.resetAllNodesToApplyGravitation(); + var x = new Set(this.getAllNodes()), w = this.nodesWithGravity.filter(function(D) { + return x.has(D); + }); + this.graphManager.setAllNodesToApplyGravitation(w), this.positionNodesRandomly(); + } + } + return this.initSpringEmbedder(), this.runSpringEmbedder(), !0; + }, C.prototype.tick = function() { + if (this.totalIterations++, this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) + if (this.prunedNodesAll.length > 0) + this.isTreeGrowing = !0; + else + return !0; + if (this.totalIterations % c.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) { + if (this.isConverged()) + if (this.prunedNodesAll.length > 0) + this.isTreeGrowing = !0; + else + return !0; + this.coolingCycle++, this.layoutQuality == 0 ? this.coolingAdjuster = this.coolingCycle : this.layoutQuality == 1 && (this.coolingAdjuster = this.coolingCycle / 3), this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature), this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor)); + } + if (this.isTreeGrowing) { + if (this.growTreeIterations % 10 == 0) + if (this.prunedNodesAll.length > 0) { + this.graphManager.updateBounds(), this.updateGrid(), this.growTree(this.prunedNodesAll), this.graphManager.resetAllNodesToApplyGravitation(); + var b = new Set(this.getAllNodes()), x = this.nodesWithGravity.filter(function(A) { + return b.has(A); + }); + this.graphManager.setAllNodesToApplyGravitation(x), this.graphManager.updateBounds(), this.updateGrid(), this.coolingFactor = c.DEFAULT_COOLING_FACTOR_INCREMENTAL; + } else + this.isTreeGrowing = !1, this.isGrowthFinished = !0; + this.growTreeIterations++; + } + if (this.isGrowthFinished) { + if (this.isConverged()) + return !0; + this.afterGrowthIterations % 10 == 0 && (this.graphManager.updateBounds(), this.updateGrid()), this.coolingFactor = c.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100), this.afterGrowthIterations++; + } + var w = !this.isTreeGrowing && !this.isGrowthFinished, D = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished; + return this.totalDisplacement = 0, this.graphManager.updateBounds(), this.calcSpringForces(), this.calcRepulsionForces(w, D), this.calcGravitationalForces(), this.moveNodes(), this.animate(), !1; + }, C.prototype.getPositionsData = function() { + for (var b = this.graphManager.getAllNodes(), x = {}, w = 0; w < b.length; w++) { + var D = b[w].rect, A = b[w].id; + x[A] = { + id: A, + x: D.getCenterX(), + y: D.getCenterY(), + w: D.width, + h: D.height + }; + } + return x; + }, C.prototype.runSpringEmbedder = function() { + this.initialAnimationPeriod = 25, this.animationPeriod = this.initialAnimationPeriod; + var b = !1; + if (c.ANIMATE === "during") + this.emit("layoutstarted"); + else { + for (; !b; ) + b = this.tick(); + this.graphManager.updateBounds(); + } + }, C.prototype.calculateNodesToApplyGravitationTo = function() { + var b = [], x, w = this.graphManager.getGraphs(), D = w.length, A; + for (A = 0; A < D; A++) + x = w[A], x.updateConnected(), x.isConnected || (b = b.concat(x.getNodes())); + return b; + }, C.prototype.createBendpoints = function() { + var b = []; + b = b.concat(this.graphManager.getAllEdges()); + var x = /* @__PURE__ */ new Set(), w; + for (w = 0; w < b.length; w++) { + var D = b[w]; + if (!x.has(D)) { + var A = D.getSource(), L = D.getTarget(); + if (A == L) + D.getBendpoints().push(new g()), D.getBendpoints().push(new g()), this.createDummyNodesForBendpoints(D), x.add(D); + else { + var I = []; + if (I = I.concat(A.getEdgeListToNode(L)), I = I.concat(L.getEdgeListToNode(A)), !x.has(I[0])) { + if (I.length > 1) { + var O; + for (O = 0; O < I.length; O++) { + var P = I[O]; + P.getBendpoints().push(new g()), this.createDummyNodesForBendpoints(P); + } + } + I.forEach(function(R) { + x.add(R); + }); + } + } + } + if (x.size == b.length) + break; + } + }, C.prototype.positionNodesRadially = function(b) { + for (var x = new d(0, 0), w = Math.ceil(Math.sqrt(b.length)), D = 0, A = 0, L = 0, I = new g(0, 0), O = 0; O < b.length; O++) { + O % w == 0 && (L = 0, A = D, O != 0 && (A += h.DEFAULT_COMPONENT_SEPERATION), D = 0); + var P = b[O], R = p.findCenterOfTree(P); + x.x = L, x.y = A, I = C.radialLayout(P, R, x), I.y > D && (D = Math.floor(I.y)), L = Math.floor(I.x + h.DEFAULT_COMPONENT_SEPERATION); + } + this.transform(new g(v.WORLD_CENTER_X - I.x / 2, v.WORLD_CENTER_Y - I.y / 2)); + }, C.radialLayout = function(b, x, w) { + var D = Math.max(this.maxDiagonalInTree(b), h.DEFAULT_RADIAL_SEPARATION); + C.branchRadialLayout(x, null, 0, 359, 0, D); + var A = m.calculateBounds(b), L = new T(); + L.setDeviceOrgX(A.getMinX()), L.setDeviceOrgY(A.getMinY()), L.setWorldOrgX(w.x), L.setWorldOrgY(w.y); + for (var I = 0; I < b.length; I++) { + var O = b[I]; + O.transform(L); + } + var P = new g(A.getMaxX(), A.getMaxY()); + return L.inverseTransformPoint(P); + }, C.branchRadialLayout = function(b, x, w, D, A, L) { + var I = (D - w + 1) / 2; + I < 0 && (I += 180); + var O = (I + w) % 360, P = O * E.TWO_PI / 360, R = A * Math.cos(P), M = A * Math.sin(P); + b.setCenter(R, M); + var k = []; + k = k.concat(b.getEdges()); + var B = k.length; + x != null && B--; + for (var G = 0, F = k.length, $, U = b.getEdgesBetween(x); U.length > 1; ) { + var _ = U[0]; + U.splice(0, 1); + var Y = k.indexOf(_); + Y >= 0 && k.splice(Y, 1), F--, B--; + } + x != null ? $ = (k.indexOf(U[0]) + 1) % F : $ = 0; + for (var W = Math.abs(D - w) / B, z = $; G != B; z = ++z % F) { + var K = k[z].getOtherEnd(b); + if (K != x) { + var j = (w + G * W) % 360, Q = (j + W) % 360; + C.branchRadialLayout(K, b, j, Q, A + L, L), G++; + } + } + }, C.maxDiagonalInTree = function(b) { + for (var x = y.MIN_VALUE, w = 0; w < b.length; w++) { + var D = b[w], A = D.getDiagonal(); + A > x && (x = A); + } + return x; + }, C.prototype.calcRepulsionRange = function() { + return 2 * (this.level + 1) * this.idealEdgeLength; + }, C.prototype.groupZeroDegreeMembers = function() { + var b = this, x = {}; + this.memberGroups = {}, this.idToDummyNode = {}; + for (var w = [], D = this.graphManager.getAllNodes(), A = 0; A < D.length; A++) { + var L = D[A], I = L.getParent(); + this.getNodeDegreeWithChildren(L) === 0 && (I.id == null || !this.getToBeTiled(I)) && w.push(L); + } + for (var A = 0; A < w.length; A++) { + var L = w[A], O = L.getParent().id; + typeof x[O] == "undefined" && (x[O] = []), x[O] = x[O].concat(L); + } + Object.keys(x).forEach(function(P) { + if (x[P].length > 1) { + var R = "DummyCompound_" + P; + b.memberGroups[R] = x[P]; + var M = x[P][0].getParent(), k = new u(b.graphManager); + k.id = R, k.paddingLeft = M.paddingLeft || 0, k.paddingRight = M.paddingRight || 0, k.paddingBottom = M.paddingBottom || 0, k.paddingTop = M.paddingTop || 0, b.idToDummyNode[R] = k; + var B = b.getGraphManager().add(b.newGraph(), k), G = M.getChild(); + G.add(k); + for (var F = 0; F < x[P].length; F++) { + var $ = x[P][F]; + G.remove($), B.add($); + } + } + }); + }, C.prototype.clearCompounds = function() { + var b = {}, x = {}; + this.performDFSOnCompounds(); + for (var w = 0; w < this.compoundOrder.length; w++) + x[this.compoundOrder[w].id] = this.compoundOrder[w], b[this.compoundOrder[w].id] = [].concat(this.compoundOrder[w].getChild().getNodes()), this.graphManager.remove(this.compoundOrder[w].getChild()), this.compoundOrder[w].child = null; + this.graphManager.resetAllNodes(), this.tileCompoundMembers(b, x); + }, C.prototype.clearZeroDegreeMembers = function() { + var b = this, x = this.tiledZeroDegreePack = []; + Object.keys(this.memberGroups).forEach(function(w) { + var D = b.idToDummyNode[w]; + x[w] = b.tileNodes(b.memberGroups[w], D.paddingLeft + D.paddingRight), D.rect.width = x[w].width, D.rect.height = x[w].height; + }); + }, C.prototype.repopulateCompounds = function() { + for (var b = this.compoundOrder.length - 1; b >= 0; b--) { + var x = this.compoundOrder[b], w = x.id, D = x.paddingLeft, A = x.paddingTop; + this.adjustLocations(this.tiledMemberPack[w], x.rect.x, x.rect.y, D, A); + } + }, C.prototype.repopulateZeroDegreeMembers = function() { + var b = this, x = this.tiledZeroDegreePack; + Object.keys(x).forEach(function(w) { + var D = b.idToDummyNode[w], A = D.paddingLeft, L = D.paddingTop; + b.adjustLocations(x[w], D.rect.x, D.rect.y, A, L); + }); + }, C.prototype.getToBeTiled = function(b) { + var x = b.id; + if (this.toBeTiled[x] != null) + return this.toBeTiled[x]; + var w = b.getChild(); + if (w == null) + return this.toBeTiled[x] = !1, !1; + for (var D = w.getNodes(), A = 0; A < D.length; A++) { + var L = D[A]; + if (this.getNodeDegree(L) > 0) + return this.toBeTiled[x] = !1, !1; + if (L.getChild() == null) { + this.toBeTiled[L.id] = !1; + continue; + } + if (!this.getToBeTiled(L)) + return this.toBeTiled[x] = !1, !1; + } + return this.toBeTiled[x] = !0, !0; + }, C.prototype.getNodeDegree = function(b) { + b.id; + for (var x = b.getEdges(), w = 0, D = 0; D < x.length; D++) { + var A = x[D]; + A.getSource().id !== A.getTarget().id && (w = w + 1); + } + return w; + }, C.prototype.getNodeDegreeWithChildren = function(b) { + var x = this.getNodeDegree(b); + if (b.getChild() == null) + return x; + for (var w = b.getChild().getNodes(), D = 0; D < w.length; D++) { + var A = w[D]; + x += this.getNodeDegreeWithChildren(A); + } + return x; + }, C.prototype.performDFSOnCompounds = function() { + this.compoundOrder = [], this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes()); + }, C.prototype.fillCompexOrderByDFS = function(b) { + for (var x = 0; x < b.length; x++) { + var w = b[x]; + w.getChild() != null && this.fillCompexOrderByDFS(w.getChild().getNodes()), this.getToBeTiled(w) && this.compoundOrder.push(w); + } + }, C.prototype.adjustLocations = function(b, x, w, D, A) { + x += D, w += A; + for (var L = x, I = 0; I < b.rows.length; I++) { + var O = b.rows[I]; + x = L; + for (var P = 0, R = 0; R < O.length; R++) { + var M = O[R]; + M.rect.x = x, M.rect.y = w, x += M.rect.width + b.horizontalPadding, M.rect.height > P && (P = M.rect.height); + } + w += P + b.verticalPadding; + } + }, C.prototype.tileCompoundMembers = function(b, x) { + var w = this; + this.tiledMemberPack = [], Object.keys(b).forEach(function(D) { + var A = x[D]; + w.tiledMemberPack[D] = w.tileNodes(b[D], A.paddingLeft + A.paddingRight), A.rect.width = w.tiledMemberPack[D].width, A.rect.height = w.tiledMemberPack[D].height; + }); + }, C.prototype.tileNodes = function(b, x) { + var w = h.TILING_PADDING_VERTICAL, D = h.TILING_PADDING_HORIZONTAL, A = { + rows: [], + rowWidth: [], + rowHeight: [], + width: 0, + height: x, + // assume minHeight equals to minWidth + verticalPadding: w, + horizontalPadding: D + }; + b.sort(function(O, P) { + return O.rect.width * O.rect.height > P.rect.width * P.rect.height ? -1 : O.rect.width * O.rect.height < P.rect.width * P.rect.height ? 1 : 0; + }); + for (var L = 0; L < b.length; L++) { + var I = b[L]; + A.rows.length == 0 ? this.insertNodeToRow(A, I, 0, x) : this.canAddHorizontal(A, I.rect.width, I.rect.height) ? this.insertNodeToRow(A, I, this.getShortestRowIndex(A), x) : this.insertNodeToRow(A, I, A.rows.length, x), this.shiftToLastRow(A); + } + return A; + }, C.prototype.insertNodeToRow = function(b, x, w, D) { + var A = D; + if (w == b.rows.length) { + var L = []; + b.rows.push(L), b.rowWidth.push(A), b.rowHeight.push(0); + } + var I = b.rowWidth[w] + x.rect.width; + b.rows[w].length > 0 && (I += b.horizontalPadding), b.rowWidth[w] = I, b.width < I && (b.width = I); + var O = x.rect.height; + w > 0 && (O += b.verticalPadding); + var P = 0; + O > b.rowHeight[w] && (P = b.rowHeight[w], b.rowHeight[w] = O, P = b.rowHeight[w] - P), b.height += P, b.rows[w].push(x); + }, C.prototype.getShortestRowIndex = function(b) { + for (var x = -1, w = Number.MAX_VALUE, D = 0; D < b.rows.length; D++) + b.rowWidth[D] < w && (x = D, w = b.rowWidth[D]); + return x; + }, C.prototype.getLongestRowIndex = function(b) { + for (var x = -1, w = Number.MIN_VALUE, D = 0; D < b.rows.length; D++) + b.rowWidth[D] > w && (x = D, w = b.rowWidth[D]); + return x; + }, C.prototype.canAddHorizontal = function(b, x, w) { + var D = this.getShortestRowIndex(b); + if (D < 0) + return !0; + var A = b.rowWidth[D]; + if (A + b.horizontalPadding + x <= b.width) + return !0; + var L = 0; + b.rowHeight[D] < w && D > 0 && (L = w + b.verticalPadding - b.rowHeight[D]); + var I; + b.width - A >= x + b.horizontalPadding ? I = (b.height + L) / (A + x + b.horizontalPadding) : I = (b.height + L) / b.width, L = w + b.verticalPadding; + var O; + return b.width < x ? O = (b.height + L) / x : O = (b.height + L) / b.width, O < 1 && (O = 1 / O), I < 1 && (I = 1 / I), I < O; + }, C.prototype.shiftToLastRow = function(b) { + var x = this.getLongestRowIndex(b), w = b.rowWidth.length - 1, D = b.rows[x], A = D[D.length - 1], L = A.width + b.horizontalPadding; + if (b.width - b.rowWidth[w] > L && x != w) { + D.splice(-1, 1), b.rows[w].push(A), b.rowWidth[x] = b.rowWidth[x] - L, b.rowWidth[w] = b.rowWidth[w] + L, b.width = b.rowWidth[instance.getLongestRowIndex(b)]; + for (var I = Number.MIN_VALUE, O = 0; O < D.length; O++) + D[O].height > I && (I = D[O].height); + x > 0 && (I += b.verticalPadding); + var P = b.rowHeight[x] + b.rowHeight[w]; + b.rowHeight[x] = I, b.rowHeight[w] < A.height + b.verticalPadding && (b.rowHeight[w] = A.height + b.verticalPadding); + var R = b.rowHeight[x] + b.rowHeight[w]; + b.height += R - P, this.shiftToLastRow(b); + } + }, C.prototype.tilingPreLayout = function() { + h.TILE && (this.groupZeroDegreeMembers(), this.clearCompounds(), this.clearZeroDegreeMembers()); + }, C.prototype.tilingPostLayout = function() { + h.TILE && (this.repopulateZeroDegreeMembers(), this.repopulateCompounds()); + }, C.prototype.reduceTrees = function() { + for (var b = [], x = !0, w; x; ) { + var D = this.graphManager.getAllNodes(), A = []; + x = !1; + for (var L = 0; L < D.length; L++) + w = D[L], w.getEdges().length == 1 && !w.getEdges()[0].isInterGraph && w.getChild() == null && (A.push([w, w.getEdges()[0], w.getOwner()]), x = !0); + if (x == !0) { + for (var I = [], O = 0; O < A.length; O++) + A[O][0].getEdges().length == 1 && (I.push(A[O]), A[O][0].getOwner().remove(A[O][0])); + b.push(I), this.graphManager.resetAllNodes(), this.graphManager.resetAllEdges(); + } + } + this.prunedNodesAll = b; + }, C.prototype.growTree = function(b) { + for (var x = b.length, w = b[x - 1], D, A = 0; A < w.length; A++) + D = w[A], this.findPlaceforPrunedNode(D), D[2].add(D[0]), D[2].add(D[1], D[1].source, D[1].target); + b.splice(b.length - 1, 1), this.graphManager.resetAllNodes(), this.graphManager.resetAllEdges(); + }, C.prototype.findPlaceforPrunedNode = function(b) { + var x, w, D = b[0]; + D == b[1].source ? w = b[1].target : w = b[1].source; + var A = w.startX, L = w.finishX, I = w.startY, O = w.finishY, P = 0, R = 0, M = 0, k = 0, B = [P, M, R, k]; + if (I > 0) + for (var G = A; G <= L; G++) + B[0] += this.grid[G][I - 1].length + this.grid[G][I].length - 1; + if (L < this.grid.length - 1) + for (var G = I; G <= O; G++) + B[1] += this.grid[L + 1][G].length + this.grid[L][G].length - 1; + if (O < this.grid[0].length - 1) + for (var G = A; G <= L; G++) + B[2] += this.grid[G][O + 1].length + this.grid[G][O].length - 1; + if (A > 0) + for (var G = I; G <= O; G++) + B[3] += this.grid[A - 1][G].length + this.grid[A][G].length - 1; + for (var F = y.MAX_VALUE, $, U, _ = 0; _ < B.length; _++) + B[_] < F ? (F = B[_], $ = 1, U = _) : B[_] == F && $++; + if ($ == 3 && F == 0) + B[0] == 0 && B[1] == 0 && B[2] == 0 ? x = 1 : B[0] == 0 && B[1] == 0 && B[3] == 0 ? x = 0 : B[0] == 0 && B[2] == 0 && B[3] == 0 ? x = 3 : B[1] == 0 && B[2] == 0 && B[3] == 0 && (x = 2); + else if ($ == 2 && F == 0) { + var Y = Math.floor(Math.random() * 2); + B[0] == 0 && B[1] == 0 ? Y == 0 ? x = 0 : x = 1 : B[0] == 0 && B[2] == 0 ? Y == 0 ? x = 0 : x = 2 : B[0] == 0 && B[3] == 0 ? Y == 0 ? x = 0 : x = 3 : B[1] == 0 && B[2] == 0 ? Y == 0 ? x = 1 : x = 2 : B[1] == 0 && B[3] == 0 ? Y == 0 ? x = 1 : x = 3 : Y == 0 ? x = 2 : x = 3; + } else if ($ == 4 && F == 0) { + var Y = Math.floor(Math.random() * 4); + x = Y; + } else + x = U; + x == 0 ? D.setCenter(w.getCenterX(), w.getCenterY() - w.getHeight() / 2 - c.DEFAULT_EDGE_LENGTH - D.getHeight() / 2) : x == 1 ? D.setCenter(w.getCenterX() + w.getWidth() / 2 + c.DEFAULT_EDGE_LENGTH + D.getWidth() / 2, w.getCenterY()) : x == 2 ? D.setCenter(w.getCenterX(), w.getCenterY() + w.getHeight() / 2 + c.DEFAULT_EDGE_LENGTH + D.getHeight() / 2) : D.setCenter(w.getCenterX() - w.getWidth() / 2 - c.DEFAULT_EDGE_LENGTH - D.getWidth() / 2, w.getCenterY()); + }, a.exports = C; + }, + /* 7 */ + /***/ + function(a, n, i) { + var s = {}; + s.layoutBase = i(0), s.CoSEConstants = i(1), s.CoSEEdge = i(2), s.CoSEGraph = i(3), s.CoSEGraphManager = i(4), s.CoSELayout = i(6), s.CoSENode = i(5), a.exports = s; + } + /******/ + ]) + ); + }); + }(Bn)), Bn.exports; +} +(function(t, e) { + (function(a, n) { + t.exports = n(xm()); + })(Vt, function(r) { + return ( + /******/ + function(a) { + var n = {}; + function i(s) { + if (n[s]) + return n[s].exports; + var o = n[s] = { + /******/ + i: s, + /******/ + l: !1, + /******/ + exports: {} + /******/ + }; + return a[s].call(o.exports, o, o.exports, i), o.l = !0, o.exports; + } + return i.m = a, i.c = n, i.i = function(s) { + return s; + }, i.d = function(s, o, l) { + i.o(s, o) || Object.defineProperty(s, o, { + /******/ + configurable: !1, + /******/ + enumerable: !0, + /******/ + get: l + /******/ + }); + }, i.n = function(s) { + var o = s && s.__esModule ? ( + /******/ + function() { + return s.default; + } + ) : ( + /******/ + function() { + return s; + } + ); + return i.d(o, "a", o), o; + }, i.o = function(s, o) { + return Object.prototype.hasOwnProperty.call(s, o); + }, i.p = "", i(i.s = 1); + }([ + /* 0 */ + /***/ + function(a, n) { + a.exports = r; + }, + /* 1 */ + /***/ + function(a, n, i) { + var s = i(0).layoutBase.LayoutConstants, o = i(0).layoutBase.FDLayoutConstants, l = i(0).CoSEConstants, u = i(0).CoSELayout, f = i(0).CoSENode, h = i(0).layoutBase.PointD, c = i(0).layoutBase.DimensionD, v = { + // Called on `layoutready` + ready: function() { + }, + // Called on `layoutstop` + stop: function() { + }, + // 'draft', 'default' or 'proof" + // - 'draft' fast cooling rate + // - 'default' moderate cooling rate + // - "proof" slow cooling rate + quality: "default", + // include labels in node dimensions + nodeDimensionsIncludeLabels: !1, + // number of ticks per frame; higher is faster but more jerky + refresh: 30, + // Whether to fit the network view after when done + fit: !0, + // Padding on fit + padding: 10, + // Whether to enable incremental mode + randomize: !0, + // Node repulsion (non overlapping) multiplier + nodeRepulsion: 4500, + // Ideal edge (non nested) length + idealEdgeLength: 50, + // Divisor to compute edge forces + edgeElasticity: 0.45, + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 0.1, + // Gravity force (constant) + gravity: 0.25, + // Maximum number of iterations to perform + numIter: 2500, + // For enabling tiling + tile: !0, + // Type of layout animation. The option set is {'during', 'end', false} + animate: "end", + // Duration for animate:end + animationDuration: 500, + // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function) + tilingPaddingVertical: 10, + // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function) + tilingPaddingHorizontal: 10, + // Gravity range (constant) for compounds + gravityRangeCompound: 1.5, + // Gravity force (constant) for compounds + gravityCompound: 1, + // Gravity range (constant) + gravityRange: 3.8, + // Initial cooling factor for incremental layout + initialEnergyOnIncremental: 0.5 + }; + function d(E, m) { + var T = {}; + for (var C in E) + T[C] = E[C]; + for (var C in m) + T[C] = m[C]; + return T; + } + function g(E) { + this.options = d(v, E), p(this.options); + } + var p = function(m) { + m.nodeRepulsion != null && (l.DEFAULT_REPULSION_STRENGTH = o.DEFAULT_REPULSION_STRENGTH = m.nodeRepulsion), m.idealEdgeLength != null && (l.DEFAULT_EDGE_LENGTH = o.DEFAULT_EDGE_LENGTH = m.idealEdgeLength), m.edgeElasticity != null && (l.DEFAULT_SPRING_STRENGTH = o.DEFAULT_SPRING_STRENGTH = m.edgeElasticity), m.nestingFactor != null && (l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = o.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = m.nestingFactor), m.gravity != null && (l.DEFAULT_GRAVITY_STRENGTH = o.DEFAULT_GRAVITY_STRENGTH = m.gravity), m.numIter != null && (l.MAX_ITERATIONS = o.MAX_ITERATIONS = m.numIter), m.gravityRange != null && (l.DEFAULT_GRAVITY_RANGE_FACTOR = o.DEFAULT_GRAVITY_RANGE_FACTOR = m.gravityRange), m.gravityCompound != null && (l.DEFAULT_COMPOUND_GRAVITY_STRENGTH = o.DEFAULT_COMPOUND_GRAVITY_STRENGTH = m.gravityCompound), m.gravityRangeCompound != null && (l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = o.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = m.gravityRangeCompound), m.initialEnergyOnIncremental != null && (l.DEFAULT_COOLING_FACTOR_INCREMENTAL = o.DEFAULT_COOLING_FACTOR_INCREMENTAL = m.initialEnergyOnIncremental), m.quality == "draft" ? s.QUALITY = 0 : m.quality == "proof" ? s.QUALITY = 2 : s.QUALITY = 1, l.NODE_DIMENSIONS_INCLUDE_LABELS = o.NODE_DIMENSIONS_INCLUDE_LABELS = s.NODE_DIMENSIONS_INCLUDE_LABELS = m.nodeDimensionsIncludeLabels, l.DEFAULT_INCREMENTAL = o.DEFAULT_INCREMENTAL = s.DEFAULT_INCREMENTAL = !m.randomize, l.ANIMATE = o.ANIMATE = s.ANIMATE = m.animate, l.TILE = m.tile, l.TILING_PADDING_VERTICAL = typeof m.tilingPaddingVertical == "function" ? m.tilingPaddingVertical.call() : m.tilingPaddingVertical, l.TILING_PADDING_HORIZONTAL = typeof m.tilingPaddingHorizontal == "function" ? m.tilingPaddingHorizontal.call() : m.tilingPaddingHorizontal; + }; + g.prototype.run = function() { + var E, m, T = this.options; + this.idToLNode = {}; + var C = this.layout = new u(), S = this; + S.stopped = !1, this.cy = this.options.cy, this.cy.trigger({ type: "layoutstart", layout: this }); + var b = C.newGraphManager(); + this.gm = b; + var x = this.options.eles.nodes(), w = this.options.eles.edges(); + this.root = b.addRoot(), this.processChildrenList(this.root, this.getTopMostNodes(x), C); + for (var D = 0; D < w.length; D++) { + var A = w[D], L = this.idToLNode[A.data("source")], I = this.idToLNode[A.data("target")]; + if (L !== I && L.getEdgesBetween(I).length == 0) { + var O = b.add(C.newEdge(), L, I); + O.id = A.id(); + } + } + var P = function(k, B) { + typeof k == "number" && (k = B); + var G = k.data("id"), F = S.idToLNode[G]; + return { + x: F.getRect().getCenterX(), + y: F.getRect().getCenterY() + }; + }, R = function M() { + for (var k = function() { + T.fit && T.cy.fit(T.eles, T.padding), E || (E = !0, S.cy.one("layoutready", T.ready), S.cy.trigger({ type: "layoutready", layout: S })); + }, B = S.options.refresh, G, F = 0; F < B && !G; F++) + G = S.stopped || S.layout.tick(); + if (G) { + C.checkLayoutSuccess() && !C.isSubLayout && C.doPostLayout(), C.tilingPostLayout && C.tilingPostLayout(), C.isLayoutFinished = !0, S.options.eles.nodes().positions(P), k(), S.cy.one("layoutstop", S.options.stop), S.cy.trigger({ type: "layoutstop", layout: S }), m && cancelAnimationFrame(m), E = !1; + return; + } + var $ = S.layout.getPositionsData(); + T.eles.nodes().positions(function(U, _) { + if (typeof U == "number" && (U = _), !U.isParent()) { + for (var Y = U.id(), W = $[Y], z = U; W == null && (W = $[z.data("parent")] || $["DummyCompound_" + z.data("parent")], $[Y] = W, z = z.parent()[0], z != null); ) + ; + return W != null ? { + x: W.x, + y: W.y + } : { + x: U.position("x"), + y: U.position("y") + }; + } + }), k(), m = requestAnimationFrame(M); + }; + return C.addListener("layoutstarted", function() { + S.options.animate === "during" && (m = requestAnimationFrame(R)); + }), C.runLayout(), this.options.animate !== "during" && (S.options.eles.nodes().not(":parent").layoutPositions(S, S.options, P), E = !1), this; + }, g.prototype.getTopMostNodes = function(E) { + for (var m = {}, T = 0; T < E.length; T++) + m[E[T].id()] = !0; + var C = E.filter(function(S, b) { + typeof S == "number" && (S = b); + for (var x = S.parent()[0]; x != null; ) { + if (m[x.id()]) + return !1; + x = x.parent()[0]; + } + return !0; + }); + return C; + }, g.prototype.processChildrenList = function(E, m, T) { + for (var C = m.length, S = 0; S < C; S++) { + var b = m[S], x = b.children(), w, D = b.layoutDimensions({ + nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels + }); + if (b.outerWidth() != null && b.outerHeight() != null ? w = E.add(new f(T.graphManager, new h(b.position("x") - D.w / 2, b.position("y") - D.h / 2), new c(parseFloat(D.w), parseFloat(D.h)))) : w = E.add(new f(this.graphManager)), w.id = b.data("id"), w.paddingLeft = parseInt(b.css("padding")), w.paddingTop = parseInt(b.css("padding")), w.paddingRight = parseInt(b.css("padding")), w.paddingBottom = parseInt(b.css("padding")), this.options.nodeDimensionsIncludeLabels && b.isParent()) { + var A = b.boundingBox({ includeLabels: !0, includeNodes: !1 }).w, L = b.boundingBox({ includeLabels: !0, includeNodes: !1 }).h, I = b.css("text-halign"); + w.labelWidth = A, w.labelHeight = L, w.labelPos = I; + } + if (this.idToLNode[b.data("id")] = w, isNaN(w.rect.x) && (w.rect.x = 0), isNaN(w.rect.y) && (w.rect.y = 0), x != null && x.length > 0) { + var O; + O = T.getGraphManager().add(T.newGraph(), w), this.processChildrenList(O, x, T); + } + } + }, g.prototype.stop = function() { + return this.stopped = !0, this; + }; + var y = function(m) { + m("layout", "cose-bilkent", g); + }; + typeof cytoscape != "undefined" && y(cytoscape), a.exports = y; + } + /******/ + ]) + ); + }); +})(Nl); +var Tm = Nl.exports; +const Cm = /* @__PURE__ */ Xs(Tm); +var Zn = function() { + var t = function(T, C, S, b) { + for (S = S || {}, b = T.length; b--; S[T[b]] = C) + ; + return S; + }, e = [1, 4], r = [1, 13], a = [1, 12], n = [1, 15], i = [1, 16], s = [1, 20], o = [1, 19], l = [6, 7, 8], u = [1, 26], f = [1, 24], h = [1, 25], c = [6, 7, 11], v = [1, 6, 13, 15, 16, 19, 22], d = [1, 33], g = [1, 34], p = [1, 6, 7, 11, 13, 15, 16, 19, 22], y = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, mindMap: 4, spaceLines: 5, SPACELINE: 6, NL: 7, MINDMAP: 8, document: 9, stop: 10, EOF: 11, statement: 12, SPACELIST: 13, node: 14, ICON: 15, CLASS: 16, nodeWithId: 17, nodeWithoutId: 18, NODE_DSTART: 19, NODE_DESCR: 20, NODE_DEND: 21, NODE_ID: 22, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 6: "SPACELINE", 7: "NL", 8: "MINDMAP", 11: "EOF", 13: "SPACELIST", 15: "ICON", 16: "CLASS", 19: "NODE_DSTART", 20: "NODE_DESCR", 21: "NODE_DEND", 22: "NODE_ID" }, + productions_: [0, [3, 1], [3, 2], [5, 1], [5, 2], [5, 2], [4, 2], [4, 3], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [9, 3], [9, 2], [12, 2], [12, 2], [12, 2], [12, 1], [12, 1], [12, 1], [12, 1], [12, 1], [14, 1], [14, 1], [18, 3], [17, 1], [17, 4]], + performAction: function(C, S, b, x, w, D, A) { + var L = D.length - 1; + switch (w) { + case 6: + case 7: + return x; + case 8: + x.getLogger().trace("Stop NL "); + break; + case 9: + x.getLogger().trace("Stop EOF "); + break; + case 11: + x.getLogger().trace("Stop NL2 "); + break; + case 12: + x.getLogger().trace("Stop EOF2 "); + break; + case 15: + x.getLogger().info("Node: ", D[L].id), x.addNode(D[L - 1].length, D[L].id, D[L].descr, D[L].type); + break; + case 16: + x.getLogger().trace("Icon: ", D[L]), x.decorateNode({ icon: D[L] }); + break; + case 17: + case 21: + x.decorateNode({ class: D[L] }); + break; + case 18: + x.getLogger().trace("SPACELIST"); + break; + case 19: + x.getLogger().trace("Node: ", D[L].id), x.addNode(0, D[L].id, D[L].descr, D[L].type); + break; + case 20: + x.decorateNode({ icon: D[L] }); + break; + case 25: + x.getLogger().trace("node found ..", D[L - 2]), this.$ = { id: D[L - 1], descr: D[L - 1], type: x.getType(D[L - 2], D[L]) }; + break; + case 26: + this.$ = { id: D[L], descr: D[L], type: x.nodeType.DEFAULT }; + break; + case 27: + x.getLogger().trace("node found ..", D[L - 3]), this.$ = { id: D[L - 3], descr: D[L - 1], type: x.getType(D[L - 2], D[L]) }; + break; + } + }, + table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: e }, { 1: [3] }, { 1: [2, 1] }, { 4: 6, 6: [1, 7], 7: [1, 8], 8: e }, { 6: r, 7: [1, 10], 9: 9, 12: 11, 13: a, 14: 14, 15: n, 16: i, 17: 17, 18: 18, 19: s, 22: o }, t(l, [2, 3]), { 1: [2, 2] }, t(l, [2, 4]), t(l, [2, 5]), { 1: [2, 6], 6: r, 12: 21, 13: a, 14: 14, 15: n, 16: i, 17: 17, 18: 18, 19: s, 22: o }, { 6: r, 9: 22, 12: 11, 13: a, 14: 14, 15: n, 16: i, 17: 17, 18: 18, 19: s, 22: o }, { 6: u, 7: f, 10: 23, 11: h }, t(c, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: s, 22: o }), t(c, [2, 18]), t(c, [2, 19]), t(c, [2, 20]), t(c, [2, 21]), t(c, [2, 23]), t(c, [2, 24]), t(c, [2, 26], { 19: [1, 30] }), { 20: [1, 31] }, { 6: u, 7: f, 10: 32, 11: h }, { 1: [2, 7], 6: r, 12: 21, 13: a, 14: 14, 15: n, 16: i, 17: 17, 18: 18, 19: s, 22: o }, t(v, [2, 14], { 7: d, 11: g }), t(p, [2, 8]), t(p, [2, 9]), t(p, [2, 10]), t(c, [2, 15]), t(c, [2, 16]), t(c, [2, 17]), { 20: [1, 35] }, { 21: [1, 36] }, t(v, [2, 13], { 7: d, 11: g }), t(p, [2, 11]), t(p, [2, 12]), { 21: [1, 37] }, t(c, [2, 25]), t(c, [2, 27])], + defaultActions: { 2: [2, 1], 6: [2, 2] }, + parseError: function(C, S) { + if (S.recoverable) + this.trace(C); + else { + var b = new Error(C); + throw b.hash = S, b; + } + }, + parse: function(C) { + var S = this, b = [0], x = [], w = [null], D = [], A = this.table, L = "", I = 0, O = 0, P = 2, R = 1, M = D.slice.call(arguments, 1), k = Object.create(this.lexer), B = { yy: {} }; + for (var G in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, G) && (B.yy[G] = this.yy[G]); + k.setInput(C, B.yy), B.yy.lexer = k, B.yy.parser = this, typeof k.yylloc == "undefined" && (k.yylloc = {}); + var F = k.yylloc; + D.push(F); + var $ = k.options && k.options.ranges; + typeof B.yy.parseError == "function" ? this.parseError = B.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function U() { + var te; + return te = x.pop() || k.lex() || R, typeof te != "number" && (te instanceof Array && (x = te, te = x.pop()), te = S.symbols_[te] || te), te; + } + for (var _, Y, W, z, K = {}, j, Q, ee, ne; ; ) { + if (Y = b[b.length - 1], this.defaultActions[Y] ? W = this.defaultActions[Y] : ((_ === null || typeof _ == "undefined") && (_ = U()), W = A[Y] && A[Y][_]), typeof W == "undefined" || !W.length || !W[0]) { + var ce = ""; + ne = []; + for (j in A[Y]) + this.terminals_[j] && j > P && ne.push("'" + this.terminals_[j] + "'"); + k.showPosition ? ce = "Parse error on line " + (I + 1) + `: +` + k.showPosition() + ` +Expecting ` + ne.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : ce = "Parse error on line " + (I + 1) + ": Unexpected " + (_ == R ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(ce, { + text: k.match, + token: this.terminals_[_] || _, + line: k.yylineno, + loc: F, + expected: ne + }); + } + if (W[0] instanceof Array && W.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + Y + ", token: " + _); + switch (W[0]) { + case 1: + b.push(_), w.push(k.yytext), D.push(k.yylloc), b.push(W[1]), _ = null, O = k.yyleng, L = k.yytext, I = k.yylineno, F = k.yylloc; + break; + case 2: + if (Q = this.productions_[W[1]][1], K.$ = w[w.length - Q], K._$ = { + first_line: D[D.length - (Q || 1)].first_line, + last_line: D[D.length - 1].last_line, + first_column: D[D.length - (Q || 1)].first_column, + last_column: D[D.length - 1].last_column + }, $ && (K._$.range = [ + D[D.length - (Q || 1)].range[0], + D[D.length - 1].range[1] + ]), z = this.performAction.apply(K, [ + L, + O, + I, + B.yy, + W[1], + w, + D + ].concat(M)), typeof z != "undefined") + return z; + Q && (b = b.slice(0, -1 * Q * 2), w = w.slice(0, -1 * Q), D = D.slice(0, -1 * Q)), b.push(this.productions_[W[1]][0]), w.push(K.$), D.push(K._$), ee = A[b[b.length - 2]][b[b.length - 1]], b.push(ee); + break; + case 3: + return !0; + } + } + return !0; + } + }, E = function() { + var T = { + EOF: 1, + parseError: function(S, b) { + if (this.yy.parser) + this.yy.parser.parseError(S, b); + else + throw new Error(S); + }, + // resets the lexer, sets new input + setInput: function(C, S) { + return this.yy = S || this.yy || {}, this._input = C, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var C = this._input[0]; + this.yytext += C, this.yyleng++, this.offset++, this.match += C, this.matched += C; + var S = C.match(/(?:\r\n?|\n).*/g); + return S ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), C; + }, + // unshifts one char (or a string) into the input + unput: function(C) { + var S = C.length, b = C.split(/(?:\r\n?|\n)/g); + this._input = C + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - S), this.offset -= S; + var x = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), b.length - 1 && (this.yylineno -= b.length - 1); + var w = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: b ? (b.length === x.length ? this.yylloc.first_column : 0) + x[x.length - b.length].length - b[0].length : this.yylloc.first_column - S + }, this.options.ranges && (this.yylloc.range = [w[0], w[0] + this.yyleng - S]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(C) { + this.unput(this.match.slice(C)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var C = this.matched.substr(0, this.matched.length - this.match.length); + return (C.length > 20 ? "..." : "") + C.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var C = this.match; + return C.length < 20 && (C += this._input.substr(0, 20 - C.length)), (C.substr(0, 20) + (C.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var C = this.pastInput(), S = new Array(C.length + 1).join("-"); + return C + this.upcomingInput() + ` +` + S + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(C, S) { + var b, x, w; + if (this.options.backtrack_lexer && (w = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (w.yylloc.range = this.yylloc.range.slice(0))), x = C[0].match(/(?:\r\n?|\n).*/g), x && (this.yylineno += x.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: x ? x[x.length - 1].length - x[x.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + C[0].length + }, this.yytext += C[0], this.match += C[0], this.matches = C, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(C[0].length), this.matched += C[0], b = this.performAction.call(this, this.yy, this, S, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), b) + return b; + if (this._backtrack) { + for (var D in w) + this[D] = w[D]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var C, S, b, x; + this._more || (this.yytext = "", this.match = ""); + for (var w = this._currentRules(), D = 0; D < w.length; D++) + if (b = this._input.match(this.rules[w[D]]), b && (!S || b[0].length > S[0].length)) { + if (S = b, x = D, this.options.backtrack_lexer) { + if (C = this.test_match(b, w[D]), C !== !1) + return C; + if (this._backtrack) { + S = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return S ? (C = this.test_match(S, w[x]), C !== !1 ? C : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var S = this.next(); + return S || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(S) { + this.conditionStack.push(S); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var S = this.conditionStack.length - 1; + return S > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(S) { + return S = this.conditionStack.length - 1 - Math.abs(S || 0), S >= 0 ? this.conditionStack[S] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(S) { + this.begin(S); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(S, b, x, w) { + switch (x) { + case 0: + return S.getLogger().trace("Found comment", b.yytext), 6; + case 1: + return 8; + case 2: + this.begin("CLASS"); + break; + case 3: + return this.popState(), 16; + case 4: + this.popState(); + break; + case 5: + S.getLogger().trace("Begin icon"), this.begin("ICON"); + break; + case 6: + return S.getLogger().trace("SPACELINE"), 6; + case 7: + return 7; + case 8: + return 15; + case 9: + S.getLogger().trace("end icon"), this.popState(); + break; + case 10: + return S.getLogger().trace("Exploding node"), this.begin("NODE"), 19; + case 11: + return S.getLogger().trace("Cloud"), this.begin("NODE"), 19; + case 12: + return S.getLogger().trace("Explosion Bang"), this.begin("NODE"), 19; + case 13: + return S.getLogger().trace("Cloud Bang"), this.begin("NODE"), 19; + case 14: + return this.begin("NODE"), 19; + case 15: + return this.begin("NODE"), 19; + case 16: + return this.begin("NODE"), 19; + case 17: + return this.begin("NODE"), 19; + case 18: + return 13; + case 19: + return 22; + case 20: + return 11; + case 21: + this.begin("NSTR2"); + break; + case 22: + return "NODE_DESCR"; + case 23: + this.popState(); + break; + case 24: + S.getLogger().trace("Starting NSTR"), this.begin("NSTR"); + break; + case 25: + return S.getLogger().trace("description:", b.yytext), "NODE_DESCR"; + case 26: + this.popState(); + break; + case 27: + return this.popState(), S.getLogger().trace("node end ))"), "NODE_DEND"; + case 28: + return this.popState(), S.getLogger().trace("node end )"), "NODE_DEND"; + case 29: + return this.popState(), S.getLogger().trace("node end ...", b.yytext), "NODE_DEND"; + case 30: + return this.popState(), S.getLogger().trace("node end (("), "NODE_DEND"; + case 31: + return this.popState(), S.getLogger().trace("node end (-"), "NODE_DEND"; + case 32: + return this.popState(), S.getLogger().trace("node end (-"), "NODE_DEND"; + case 33: + return this.popState(), S.getLogger().trace("node end (("), "NODE_DEND"; + case 34: + return this.popState(), S.getLogger().trace("node end (("), "NODE_DEND"; + case 35: + return S.getLogger().trace("Long description:", b.yytext), 20; + case 36: + return S.getLogger().trace("Long description:", b.yytext), 20; + } + }, + rules: [/^(?:\s*%%.*)/i, /^(?:mindmap\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\n)/i, /^(?:::icon\()/i, /^(?:[\s]+[\n])/i, /^(?:[\n]+)/i, /^(?:[^\)]+)/i, /^(?:\))/i, /^(?:-\))/i, /^(?:\(-)/i, /^(?:\)\))/i, /^(?:\))/i, /^(?:\(\()/i, /^(?:\{\{)/i, /^(?:\()/i, /^(?:\[)/i, /^(?:[\s]+)/i, /^(?:[^\(\[\n\)\{\}]+)/i, /^(?:$)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:[^"]+)/i, /^(?:["])/i, /^(?:[\)]\))/i, /^(?:[\)])/i, /^(?:[\]])/i, /^(?:\}\})/i, /^(?:\(-)/i, /^(?:-\))/i, /^(?:\(\()/i, /^(?:\()/i, /^(?:[^\)\]\(\}]+)/i, /^(?:.+(?!\(\())/i], + conditions: { CLASS: { rules: [3, 4], inclusive: !1 }, ICON: { rules: [8, 9], inclusive: !1 }, NSTR2: { rules: [22, 23], inclusive: !1 }, NSTR: { rules: [25, 26], inclusive: !1 }, NODE: { rules: [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], inclusive: !0 } } + }; + return T; + }(); + y.lexer = E; + function m() { + this.yy = {}; + } + return m.prototype = y, y.Parser = m, new m(); +}(); +Zn.parser = Zn; +const Dm = Zn; +let Ct = [], Il = 0, xi = {}; +const Sm = () => { + Ct = [], Il = 0, xi = {}; +}, Lm = function(t) { + for (let e = Ct.length - 1; e >= 0; e--) + if (Ct[e].level < t) + return Ct[e]; + return null; +}, Am = () => Ct.length > 0 ? Ct[0] : null, Om = (t, e, r, a) => { + var f, h; + var n, i; + ur.info("addNode", t, e, r, a); + const s = Qn(); + let o = (f = (n = s.mindmap) == null ? void 0 : n.padding) != null ? f : _a.mindmap.padding; + switch (a) { + case Ve.ROUNDED_RECT: + case Ve.RECT: + case Ve.HEXAGON: + o *= 2; + } + const l = { + id: Il++, + nodeId: Ua(e, s), + level: t, + descr: Ua(r, s), + type: a, + children: [], + width: (h = (i = s.mindmap) == null ? void 0 : i.maxNodeWidth) != null ? h : _a.mindmap.maxNodeWidth, + padding: o + }, u = Lm(t); + if (u) + u.children.push(l), Ct.push(l); + else if (Ct.length === 0) + Ct.push(l); + else + throw new Error( + 'There can be only one root. No parent could be found for ("' + l.descr + '")' + ); +}, Ve = { + DEFAULT: 0, + NO_BORDER: 0, + ROUNDED_RECT: 1, + RECT: 2, + CIRCLE: 3, + CLOUD: 4, + BANG: 5, + HEXAGON: 6 +}, Nm = (t, e) => { + switch (ur.debug("In get type", t, e), t) { + case "[": + return Ve.RECT; + case "(": + return e === ")" ? Ve.ROUNDED_RECT : Ve.CLOUD; + case "((": + return Ve.CIRCLE; + case ")": + return Ve.CLOUD; + case "))": + return Ve.BANG; + case "{{": + return Ve.HEXAGON; + default: + return Ve.DEFAULT; + } +}, Im = (t, e) => { + xi[t] = e; +}, Mm = (t) => { + if (!t) + return; + const e = Qn(), r = Ct[Ct.length - 1]; + t.icon && (r.icon = Ua(t.icon, e)), t.class && (r.class = Ua(t.class, e)); +}, Rm = (t) => { + switch (t) { + case Ve.DEFAULT: + return "no-border"; + case Ve.RECT: + return "rect"; + case Ve.ROUNDED_RECT: + return "rounded-rect"; + case Ve.CIRCLE: + return "circle"; + case Ve.CLOUD: + return "cloud"; + case Ve.BANG: + return "bang"; + case Ve.HEXAGON: + return "hexgon"; + default: + return "no-border"; + } +}, km = () => ur, Pm = (t) => xi[t], Bm = { + clear: Sm, + addNode: Om, + getMindmap: Am, + nodeType: Ve, + getType: Nm, + setElementForId: Im, + decorateNode: Mm, + type2Str: Rm, + getLogger: km, + getElementById: Pm +}, Fm = Bm, Gm = 12, zm = function(t, e, r, a) { + e.append("path").attr("id", "node-" + r.id).attr("class", "node-bkg node-" + t.type2Str(r.type)).attr( + "d", + `M0 ${r.height - 5} v${-r.height + 2 * 5} q0,-5 5,-5 h${r.width - 2 * 5} q5,0 5,5 v${r.height - 5} H0 Z` + ), e.append("line").attr("class", "node-line-" + a).attr("x1", 0).attr("y1", r.height).attr("x2", r.width).attr("y2", r.height); +}, $m = function(t, e, r) { + e.append("rect").attr("id", "node-" + r.id).attr("class", "node-bkg node-" + t.type2Str(r.type)).attr("height", r.height).attr("width", r.width); +}, Vm = function(t, e, r) { + const a = r.width, n = r.height, i = 0.15 * a, s = 0.25 * a, o = 0.35 * a, l = 0.2 * a; + e.append("path").attr("id", "node-" + r.id).attr("class", "node-bkg node-" + t.type2Str(r.type)).attr( + "d", + `M0 0 a${i},${i} 0 0,1 ${a * 0.25},${-1 * a * 0.1} + a${o},${o} 1 0,1 ${a * 0.4},${-1 * a * 0.1} + a${s},${s} 1 0,1 ${a * 0.35},${1 * a * 0.2} + + a${i},${i} 1 0,1 ${a * 0.15},${1 * n * 0.35} + a${l},${l} 1 0,1 ${-1 * a * 0.15},${1 * n * 0.65} + + a${s},${i} 1 0,1 ${-1 * a * 0.25},${a * 0.15} + a${o},${o} 1 0,1 ${-1 * a * 0.5},0 + a${i},${i} 1 0,1 ${-1 * a * 0.25},${-1 * a * 0.15} + + a${i},${i} 1 0,1 ${-1 * a * 0.1},${-1 * n * 0.35} + a${l},${l} 1 0,1 ${a * 0.1},${-1 * n * 0.65} + + H0 V0 Z` + ); +}, _m = function(t, e, r) { + const a = r.width, n = r.height, i = 0.15 * a; + e.append("path").attr("id", "node-" + r.id).attr("class", "node-bkg node-" + t.type2Str(r.type)).attr( + "d", + `M0 0 a${i},${i} 1 0,0 ${a * 0.25},${-1 * n * 0.1} + a${i},${i} 1 0,0 ${a * 0.25},0 + a${i},${i} 1 0,0 ${a * 0.25},0 + a${i},${i} 1 0,0 ${a * 0.25},${1 * n * 0.1} + + a${i},${i} 1 0,0 ${a * 0.15},${1 * n * 0.33} + a${i * 0.8},${i * 0.8} 1 0,0 0,${1 * n * 0.34} + a${i},${i} 1 0,0 ${-1 * a * 0.15},${1 * n * 0.33} + + a${i},${i} 1 0,0 ${-1 * a * 0.25},${n * 0.15} + a${i},${i} 1 0,0 ${-1 * a * 0.25},0 + a${i},${i} 1 0,0 ${-1 * a * 0.25},0 + a${i},${i} 1 0,0 ${-1 * a * 0.25},${-1 * n * 0.15} + + a${i},${i} 1 0,0 ${-1 * a * 0.1},${-1 * n * 0.33} + a${i * 0.8},${i * 0.8} 1 0,0 0,${-1 * n * 0.34} + a${i},${i} 1 0,0 ${a * 0.1},${-1 * n * 0.33} + + H0 V0 Z` + ); +}, Um = function(t, e, r) { + e.append("circle").attr("id", "node-" + r.id).attr("class", "node-bkg node-" + t.type2Str(r.type)).attr("r", r.width / 2); +}; +function Hm(t, e, r, a, n) { + return t.insert("polygon", ":first-child").attr( + "points", + a.map(function(i) { + return i.x + "," + i.y; + }).join(" ") + ).attr("transform", "translate(" + (n.width - e) / 2 + ", " + r + ")"); +} +const Ym = function(t, e, r) { + const a = r.height, i = a / 4, s = r.width - r.padding + 2 * i, o = [ + { x: i, y: 0 }, + { x: s - i, y: 0 }, + { x: s, y: -a / 2 }, + { x: s - i, y: -a }, + { x: i, y: -a }, + { x: 0, y: -a / 2 } + ]; + Hm(e, s, a, o, r); +}, Xm = function(t, e, r) { + e.append("rect").attr("id", "node-" + r.id).attr("class", "node-bkg node-" + t.type2Str(r.type)).attr("height", r.height).attr("rx", r.padding).attr("ry", r.padding).attr("width", r.width); +}, Wm = function(t, e, r, a, n) { + const i = n.htmlLabels, s = a % (Gm - 1), o = e.append("g"); + r.section = s; + let l = "section-" + s; + s < 0 && (l += " section-root"), o.attr("class", (r.class ? r.class + " " : "") + "mindmap-node " + l); + const u = o.append("g"), f = o.append("g"), h = r.descr.replace(/()/g, ` +`); + Zl(f, h, { + useHtmlLabels: i, + width: r.width, + classes: "mindmap-node-label" + }), i || f.attr("dy", "1em").attr("alignment-baseline", "middle").attr("dominant-baseline", "middle").attr("text-anchor", "middle"); + const c = f.node().getBBox(), [v] = Kl(n.fontSize); + if (r.height = c.height + v * 1.1 * 0.5 + r.padding, r.width = c.width + 2 * r.padding, r.icon) + if (r.type === t.nodeType.CIRCLE) + r.height += 50, r.width += 50, o.append("foreignObject").attr("height", "50px").attr("width", r.width).attr("style", "text-align: center;").append("div").attr("class", "icon-container").append("i").attr("class", "node-icon-" + s + " " + r.icon), f.attr( + "transform", + "translate(" + r.width / 2 + ", " + (r.height / 2 - 1.5 * r.padding) + ")" + ); + else { + r.width += 50; + const d = r.height; + r.height = Math.max(d, 60); + const g = Math.abs(r.height - d); + o.append("foreignObject").attr("width", "60px").attr("height", r.height).attr("style", "text-align: center;margin-top:" + g / 2 + "px;").append("div").attr("class", "icon-container").append("i").attr("class", "node-icon-" + s + " " + r.icon), f.attr( + "transform", + "translate(" + (25 + r.width / 2) + ", " + (g / 2 + r.padding / 2) + ")" + ); + } + else if (i) { + const d = (r.width - c.width) / 2, g = (r.height - c.height) / 2; + f.attr("transform", "translate(" + d + ", " + g + ")"); + } else { + const d = r.width / 2, g = r.padding / 2; + f.attr("transform", "translate(" + d + ", " + g + ")"); + } + switch (r.type) { + case t.nodeType.DEFAULT: + zm(t, u, r, s); + break; + case t.nodeType.ROUNDED_RECT: + Xm(t, u, r); + break; + case t.nodeType.RECT: + $m(t, u, r); + break; + case t.nodeType.CIRCLE: + u.attr("transform", "translate(" + r.width / 2 + ", " + +r.height / 2 + ")"), Um(t, u, r); + break; + case t.nodeType.CLOUD: + Vm(t, u, r); + break; + case t.nodeType.BANG: + _m(t, u, r); + break; + case t.nodeType.HEXAGON: + Ym(t, u, r); + break; + } + return t.setElementForId(r.id, o), r.height; +}, qm = function(t, e) { + const r = t.getElementById(e.id), a = e.x || 0, n = e.y || 0; + r.attr("transform", "translate(" + a + "," + n + ")"); +}; +Ol.use(Cm); +function Ml(t, e, r, a, n) { + Wm(t, e, r, a, n), r.children && r.children.forEach((i, s) => { + Ml(t, e, i, a < 0 ? s : a, n); + }); +} +function Km(t, e) { + e.edges().map((r, a) => { + const n = r.data(); + if (r[0]._private.bodyBounds) { + const i = r[0]._private.rscratch; + ur.trace("Edge: ", a, n), t.insert("path").attr( + "d", + `M ${i.startX},${i.startY} L ${i.midX},${i.midY} L${i.endX},${i.endY} ` + ).attr("class", "edge section-edge-" + n.section + " edge-depth-" + n.depth); + } + }); +} +function Rl(t, e, r, a) { + e.add({ + group: "nodes", + data: { + id: t.id.toString(), + labelText: t.descr, + height: t.height, + width: t.width, + level: a, + nodeId: t.id, + padding: t.padding, + type: t.type + }, + position: { + x: t.x, + y: t.y + } + }), t.children && t.children.forEach((n) => { + Rl(n, e, r, a + 1), e.add({ + group: "edges", + data: { + id: `${t.id}_${n.id}`, + source: t.id, + target: n.id, + depth: a, + section: n.section + } + }); + }); +} +function Zm(t, e) { + return new Promise((r) => { + const a = Yl("body").append("div").attr("id", "cy").attr("style", "display:none"), n = Ol({ + container: document.getElementById("cy"), + // container to render in + style: [ + { + selector: "edge", + style: { + "curve-style": "bezier" + } + } + ] + }); + a.remove(), Rl(t, n, e, 0), n.nodes().forEach(function(i) { + i.layoutDimensions = () => { + const s = i.data(); + return { w: s.width, h: s.height }; + }; + }), n.layout({ + name: "cose-bilkent", + // @ts-ignore Types for cose-bilkent are not correct? + quality: "proof", + styleEnabled: !1, + animate: !1 + }).run(), n.ready((i) => { + ur.info("Ready", i), r(n); + }); + }); +} +function Qm(t, e) { + e.nodes().map((r, a) => { + const n = r.data(); + n.x = r.position().x, n.y = r.position().y, qm(t, n); + const i = t.getElementById(n.nodeId); + ur.info("Id:", a, "Position: (", r.position().x, ", ", r.position().y, ")", n), i.attr( + "transform", + `translate(${r.position().x - n.width / 2}, ${r.position().y - n.height / 2})` + ), i.attr("attr", `apa-${a})`); + }); +} +const Jm = (t, e, r, a) => Li(void 0, null, function* () { + var v, d; + var n, i; + ur.debug(`Rendering mindmap diagram +` + t); + const s = a.db, o = s.getMindmap(); + if (!o) + return; + const l = Qn(); + l.htmlLabels = !1; + const u = Ul(e), f = u.append("g"); + f.attr("class", "mindmap-edges"); + const h = u.append("g"); + h.attr("class", "mindmap-nodes"), Ml(s, h, o, -1, l); + const c = yield Zm(o, l); + Km(f, c), Qm(s, c), Hl( + void 0, + u, + (v = (n = l.mindmap) == null ? void 0 : n.padding) != null ? v : _a.mindmap.padding, + (d = (i = l.mindmap) == null ? void 0 : i.useMaxWidth) != null ? d : _a.mindmap.useMaxWidth + ); +}), jm = { + draw: Jm +}, e0 = (t) => { + let e = ""; + for (let r = 0; r < t.THEME_COLOR_LIMIT; r++) + t["lineColor" + r] = t["lineColor" + r] || t["cScaleInv" + r], Xl(t["lineColor" + r]) ? t["lineColor" + r] = Wl(t["lineColor" + r], 20) : t["lineColor" + r] = ql(t["lineColor" + r], 20); + for (let r = 0; r < t.THEME_COLOR_LIMIT; r++) { + const a = "" + (17 - 3 * r); + e += ` + .section-${r - 1} rect, .section-${r - 1} path, .section-${r - 1} circle, .section-${r - 1} polygon, .section-${r - 1} path { + fill: ${t["cScale" + r]}; + } + .section-${r - 1} text { + fill: ${t["cScaleLabel" + r]}; + } + .node-icon-${r - 1} { + font-size: 40px; + color: ${t["cScaleLabel" + r]}; + } + .section-edge-${r - 1}{ + stroke: ${t["cScale" + r]}; + } + .edge-depth-${r - 1}{ + stroke-width: ${a}; + } + .section-${r - 1} line { + stroke: ${t["cScaleInv" + r]} ; + stroke-width: 3; + } + + .disabled, .disabled circle, .disabled text { + fill: lightgray; + } + .disabled text { + fill: #efefef; + } + `; + } + return e; +}, t0 = (t) => ` + .edge { + stroke-width: 3; + } + ${e0(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`, r0 = t0, s0 = { + db: Fm, + renderer: jm, + parser: Dm, + styles: r0 +}; +export { + s0 as diagram +}; diff --git a/client/packages/lowcoder/public/package/4504d077.js b/client/packages/lowcoder/public/package/4504d077.js new file mode 100644 index 000000000..31d35f807 --- /dev/null +++ b/client/packages/lowcoder/public/package/4504d077.js @@ -0,0 +1,881 @@ +import { aK as I, aL as qe, aM as O, ah as y, ag as Te, aN as Xe, aO as Qe, aP as We, aQ as Ee, aR as G, ae as X, aS as Je, aT as Oe, aU as ze, aV as C, aW as R, an as $e, a8 as me, aX as Ve, aY as Z, aZ as ke, a_ as en, a$ as L, am as nn, b0 as rn, af as tn, b1 as re, b2 as sn, b3 as an, al as un, ak as we, ai as fn, b4 as B, ac as on, b5 as dn, ao as M, B as te, b6 as ie } from "./08856db2.js"; +var hn = "[object Symbol]"; +function Q(e) { + return typeof e == "symbol" || I(e) && qe(e) == hn; +} +function ve(e, n) { + for (var r = -1, t = e == null ? 0 : e.length, i = Array(t); ++r < t; ) + i[r] = n(e[r], r, e); + return i; +} +var ln = 1 / 0, se = O ? O.prototype : void 0, ae = se ? se.toString : void 0; +function Pe(e) { + if (typeof e == "string") + return e; + if (y(e)) + return ve(e, Pe) + ""; + if (Q(e)) + return ae ? ae.call(e) : ""; + var n = e + ""; + return n == "0" && 1 / e == -ln ? "-0" : n; +} +function gn() { +} +function Le(e, n) { + for (var r = -1, t = e == null ? 0 : e.length; ++r < t && n(e[r], r, e) !== !1; ) + ; + return e; +} +function cn(e, n, r, t) { + for (var i = e.length, s = r + (t ? 1 : -1); t ? s-- : ++s < i; ) + if (n(e[s], s, e)) + return s; + return -1; +} +function _n(e) { + return e !== e; +} +function pn(e, n, r) { + for (var t = r - 1, i = e.length; ++t < i; ) + if (e[t] === n) + return t; + return -1; +} +function bn(e, n, r) { + return n === n ? pn(e, n, r) : cn(e, _n, r); +} +function yn(e, n) { + var r = e == null ? 0 : e.length; + return !!r && bn(e, n, 0) > -1; +} +function T(e) { + return Te(e) ? Xe(e) : Qe(e); +} +var An = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Tn = /^\w*$/; +function W(e, n) { + if (y(e)) + return !1; + var r = typeof e; + return r == "number" || r == "symbol" || r == "boolean" || e == null || Q(e) ? !0 : Tn.test(e) || !An.test(e) || n != null && e in Object(n); +} +var En = 500; +function On(e) { + var n = We(e, function(t) { + return r.size === En && r.clear(), t; + }), r = n.cache; + return n; +} +var $n = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, mn = /\\(\\)?/g, wn = On(function(e) { + var n = []; + return e.charCodeAt(0) === 46 && n.push(""), e.replace($n, function(r, t, i, s) { + n.push(i ? s.replace(mn, "$1") : t || r); + }), n; +}); +const vn = wn; +function Pn(e) { + return e == null ? "" : Pe(e); +} +function Ie(e, n) { + return y(e) ? e : W(e, n) ? [e] : vn(Pn(e)); +} +var Ln = 1 / 0; +function U(e) { + if (typeof e == "string" || Q(e)) + return e; + var n = e + ""; + return n == "0" && 1 / e == -Ln ? "-0" : n; +} +function Ce(e, n) { + n = Ie(n, e); + for (var r = 0, t = n.length; e != null && r < t; ) + e = e[U(n[r++])]; + return r && r == t ? e : void 0; +} +function In(e, n, r) { + var t = e == null ? void 0 : Ce(e, n); + return t === void 0 ? r : t; +} +function J(e, n) { + for (var r = -1, t = n.length, i = e.length; ++r < t; ) + e[i + r] = n[r]; + return e; +} +var ue = O ? O.isConcatSpreadable : void 0; +function Cn(e) { + return y(e) || Ee(e) || !!(ue && e && e[ue]); +} +function Se(e, n, r, t, i) { + var s = -1, a = e.length; + for (r || (r = Cn), i || (i = []); ++s < a; ) { + var u = e[s]; + n > 0 && r(u) ? n > 1 ? Se(u, n - 1, r, t, i) : J(i, u) : t || (i[i.length] = u); + } + return i; +} +function Sn(e, n, r, t) { + var i = -1, s = e == null ? 0 : e.length; + for (t && s && (r = e[++i]); ++i < s; ) + r = n(r, e[i], i, e); + return r; +} +function Nn(e, n) { + return e && G(n, T(n), e); +} +function Fn(e, n) { + return e && G(n, X(n), e); +} +function Ne(e, n) { + for (var r = -1, t = e == null ? 0 : e.length, i = 0, s = []; ++r < t; ) { + var a = e[r]; + n(a, r, e) && (s[i++] = a); + } + return s; +} +function Fe() { + return []; +} +var Mn = Object.prototype, xn = Mn.propertyIsEnumerable, fe = Object.getOwnPropertySymbols, Dn = fe ? function(e) { + return e == null ? [] : (e = Object(e), Ne(fe(e), function(n) { + return xn.call(e, n); + })); +} : Fe; +const z = Dn; +function Rn(e, n) { + return G(e, z(e), n); +} +var Gn = Object.getOwnPropertySymbols, Un = Gn ? function(e) { + for (var n = []; e; ) + J(n, z(e)), e = Je(e); + return n; +} : Fe; +const Me = Un; +function Bn(e, n) { + return G(e, Me(e), n); +} +function xe(e, n, r) { + var t = n(e); + return y(e) ? t : J(t, r(e)); +} +function q(e) { + return xe(e, T, z); +} +function jn(e) { + return xe(e, X, Me); +} +var Kn = Object.prototype, Hn = Kn.hasOwnProperty; +function Yn(e) { + var n = e.length, r = new e.constructor(n); + return n && typeof e[0] == "string" && Hn.call(e, "index") && (r.index = e.index, r.input = e.input), r; +} +function Zn(e, n) { + var r = n ? Oe(e.buffer) : e.buffer; + return new e.constructor(r, e.byteOffset, e.byteLength); +} +var qn = /\w*$/; +function Xn(e) { + var n = new e.constructor(e.source, qn.exec(e)); + return n.lastIndex = e.lastIndex, n; +} +var oe = O ? O.prototype : void 0, de = oe ? oe.valueOf : void 0; +function Qn(e) { + return de ? Object(de.call(e)) : {}; +} +var Wn = "[object Boolean]", Jn = "[object Date]", zn = "[object Map]", Vn = "[object Number]", kn = "[object RegExp]", er = "[object Set]", nr = "[object String]", rr = "[object Symbol]", tr = "[object ArrayBuffer]", ir = "[object DataView]", sr = "[object Float32Array]", ar = "[object Float64Array]", ur = "[object Int8Array]", fr = "[object Int16Array]", or = "[object Int32Array]", dr = "[object Uint8Array]", hr = "[object Uint8ClampedArray]", lr = "[object Uint16Array]", gr = "[object Uint32Array]"; +function cr(e, n, r) { + var t = e.constructor; + switch (n) { + case tr: + return Oe(e); + case Wn: + case Jn: + return new t(+e); + case ir: + return Zn(e, r); + case sr: + case ar: + case ur: + case fr: + case or: + case dr: + case hr: + case lr: + case gr: + return ze(e, r); + case zn: + return new t(); + case Vn: + case nr: + return new t(e); + case kn: + return Xn(e); + case er: + return new t(); + case rr: + return Qn(e); + } +} +var _r = "[object Map]"; +function pr(e) { + return I(e) && C(e) == _r; +} +var he = R && R.isMap, br = he ? $e(he) : pr; +const yr = br; +var Ar = "[object Set]"; +function Tr(e) { + return I(e) && C(e) == Ar; +} +var le = R && R.isSet, Er = le ? $e(le) : Tr; +const Or = Er; +var $r = 1, mr = 2, wr = 4, De = "[object Arguments]", vr = "[object Array]", Pr = "[object Boolean]", Lr = "[object Date]", Ir = "[object Error]", Re = "[object Function]", Cr = "[object GeneratorFunction]", Sr = "[object Map]", Nr = "[object Number]", Ge = "[object Object]", Fr = "[object RegExp]", Mr = "[object Set]", xr = "[object String]", Dr = "[object Symbol]", Rr = "[object WeakMap]", Gr = "[object ArrayBuffer]", Ur = "[object DataView]", Br = "[object Float32Array]", jr = "[object Float64Array]", Kr = "[object Int8Array]", Hr = "[object Int16Array]", Yr = "[object Int32Array]", Zr = "[object Uint8Array]", qr = "[object Uint8ClampedArray]", Xr = "[object Uint16Array]", Qr = "[object Uint32Array]", h = {}; +h[De] = h[vr] = h[Gr] = h[Ur] = h[Pr] = h[Lr] = h[Br] = h[jr] = h[Kr] = h[Hr] = h[Yr] = h[Sr] = h[Nr] = h[Ge] = h[Fr] = h[Mr] = h[xr] = h[Dr] = h[Zr] = h[qr] = h[Xr] = h[Qr] = !0; +h[Ir] = h[Re] = h[Rr] = !1; +function j(e, n, r, t, i, s) { + var a, u = n & $r, f = n & mr, g = n & wr; + if (r && (a = i ? r(e, t, i, s) : r(e)), a !== void 0) + return a; + if (!me(e)) + return e; + var l = y(e); + if (l) { + if (a = Yn(e), !u) + return Ve(e, a); + } else { + var o = C(e), d = o == Re || o == Cr; + if (Z(e)) + return ke(e, u); + if (o == Ge || o == De || d && !i) { + if (a = f || d ? {} : en(e), !u) + return f ? Bn(e, Fn(a, e)) : Rn(e, Nn(a, e)); + } else { + if (!h[o]) + return i ? e : {}; + a = cr(e, o, u); + } + } + s || (s = new L()); + var A = s.get(e); + if (A) + return A; + s.set(e, a), Or(e) ? e.forEach(function(c) { + a.add(j(c, n, r, c, e, s)); + }) : yr(e) && e.forEach(function(c, _) { + a.set(_, j(c, n, r, _, e, s)); + }); + var p = g ? f ? jn : q : f ? X : T, b = l ? void 0 : p(e); + return Le(b || e, function(c, _) { + b && (_ = c, c = e[_]), nn(a, _, j(c, n, r, _, e, s)); + }), a; +} +var Wr = "__lodash_hash_undefined__"; +function Jr(e) { + return this.__data__.set(e, Wr), this; +} +function zr(e) { + return this.__data__.has(e); +} +function S(e) { + var n = -1, r = e == null ? 0 : e.length; + for (this.__data__ = new rn(); ++n < r; ) + this.add(e[n]); +} +S.prototype.add = S.prototype.push = Jr; +S.prototype.has = zr; +function Vr(e, n) { + for (var r = -1, t = e == null ? 0 : e.length; ++r < t; ) + if (n(e[r], r, e)) + return !0; + return !1; +} +function Ue(e, n) { + return e.has(n); +} +var kr = 1, et = 2; +function Be(e, n, r, t, i, s) { + var a = r & kr, u = e.length, f = n.length; + if (u != f && !(a && f > u)) + return !1; + var g = s.get(e), l = s.get(n); + if (g && l) + return g == n && l == e; + var o = -1, d = !0, A = r & et ? new S() : void 0; + for (s.set(e, n), s.set(n, e); ++o < u; ) { + var p = e[o], b = n[o]; + if (t) + var c = a ? t(b, p, o, n, e, s) : t(p, b, o, e, n, s); + if (c !== void 0) { + if (c) + continue; + d = !1; + break; + } + if (A) { + if (!Vr(n, function(_, $) { + if (!Ue(A, $) && (p === _ || i(p, _, r, t, s))) + return A.push($); + })) { + d = !1; + break; + } + } else if (!(p === b || i(p, b, r, t, s))) { + d = !1; + break; + } + } + return s.delete(e), s.delete(n), d; +} +function nt(e) { + var n = -1, r = Array(e.size); + return e.forEach(function(t, i) { + r[++n] = [i, t]; + }), r; +} +function V(e) { + var n = -1, r = Array(e.size); + return e.forEach(function(t) { + r[++n] = t; + }), r; +} +var rt = 1, tt = 2, it = "[object Boolean]", st = "[object Date]", at = "[object Error]", ut = "[object Map]", ft = "[object Number]", ot = "[object RegExp]", dt = "[object Set]", ht = "[object String]", lt = "[object Symbol]", gt = "[object ArrayBuffer]", ct = "[object DataView]", ge = O ? O.prototype : void 0, K = ge ? ge.valueOf : void 0; +function _t(e, n, r, t, i, s, a) { + switch (r) { + case ct: + if (e.byteLength != n.byteLength || e.byteOffset != n.byteOffset) + return !1; + e = e.buffer, n = n.buffer; + case gt: + return !(e.byteLength != n.byteLength || !s(new re(e), new re(n))); + case it: + case st: + case ft: + return tn(+e, +n); + case at: + return e.name == n.name && e.message == n.message; + case ot: + case ht: + return e == n + ""; + case ut: + var u = nt; + case dt: + var f = t & rt; + if (u || (u = V), e.size != n.size && !f) + return !1; + var g = a.get(e); + if (g) + return g == n; + t |= tt, a.set(e, n); + var l = Be(u(e), u(n), t, i, s, a); + return a.delete(e), l; + case lt: + if (K) + return K.call(e) == K.call(n); + } + return !1; +} +var pt = 1, bt = Object.prototype, yt = bt.hasOwnProperty; +function At(e, n, r, t, i, s) { + var a = r & pt, u = q(e), f = u.length, g = q(n), l = g.length; + if (f != l && !a) + return !1; + for (var o = f; o--; ) { + var d = u[o]; + if (!(a ? d in n : yt.call(n, d))) + return !1; + } + var A = s.get(e), p = s.get(n); + if (A && p) + return A == n && p == e; + var b = !0; + s.set(e, n), s.set(n, e); + for (var c = a; ++o < f; ) { + d = u[o]; + var _ = e[d], $ = n[d]; + if (t) + var ne = a ? t($, _, d, n, e, s) : t(_, $, d, e, n, s); + if (!(ne === void 0 ? _ === $ || i(_, $, r, t, s) : ne)) { + b = !1; + break; + } + c || (c = d == "constructor"); + } + if (b && !c) { + var N = e.constructor, F = n.constructor; + N != F && "constructor" in e && "constructor" in n && !(typeof N == "function" && N instanceof N && typeof F == "function" && F instanceof F) && (b = !1); + } + return s.delete(e), s.delete(n), b; +} +var Tt = 1, ce = "[object Arguments]", _e = "[object Array]", x = "[object Object]", Et = Object.prototype, pe = Et.hasOwnProperty; +function Ot(e, n, r, t, i, s) { + var a = y(e), u = y(n), f = a ? _e : C(e), g = u ? _e : C(n); + f = f == ce ? x : f, g = g == ce ? x : g; + var l = f == x, o = g == x, d = f == g; + if (d && Z(e)) { + if (!Z(n)) + return !1; + a = !0, l = !1; + } + if (d && !l) + return s || (s = new L()), a || sn(e) ? Be(e, n, r, t, i, s) : _t(e, n, f, r, t, i, s); + if (!(r & Tt)) { + var A = l && pe.call(e, "__wrapped__"), p = o && pe.call(n, "__wrapped__"); + if (A || p) { + var b = A ? e.value() : e, c = p ? n.value() : n; + return s || (s = new L()), i(b, c, r, t, s); + } + } + return d ? (s || (s = new L()), At(e, n, r, t, i, s)) : !1; +} +function k(e, n, r, t, i) { + return e === n ? !0 : e == null || n == null || !I(e) && !I(n) ? e !== e && n !== n : Ot(e, n, r, t, k, i); +} +var $t = 1, mt = 2; +function wt(e, n, r, t) { + var i = r.length, s = i, a = !t; + if (e == null) + return !s; + for (e = Object(e); i--; ) { + var u = r[i]; + if (a && u[2] ? u[1] !== e[u[0]] : !(u[0] in e)) + return !1; + } + for (; ++i < s; ) { + u = r[i]; + var f = u[0], g = e[f], l = u[1]; + if (a && u[2]) { + if (g === void 0 && !(f in e)) + return !1; + } else { + var o = new L(); + if (t) + var d = t(g, l, f, e, n, o); + if (!(d === void 0 ? k(l, g, $t | mt, t, o) : d)) + return !1; + } + } + return !0; +} +function je(e) { + return e === e && !me(e); +} +function vt(e) { + for (var n = T(e), r = n.length; r--; ) { + var t = n[r], i = e[t]; + n[r] = [t, i, je(i)]; + } + return n; +} +function Ke(e, n) { + return function(r) { + return r == null ? !1 : r[e] === n && (n !== void 0 || e in Object(r)); + }; +} +function Pt(e) { + var n = vt(e); + return n.length == 1 && n[0][2] ? Ke(n[0][0], n[0][1]) : function(r) { + return r === e || wt(r, e, n); + }; +} +function Lt(e, n) { + return e != null && n in Object(e); +} +function He(e, n, r) { + n = Ie(n, e); + for (var t = -1, i = n.length, s = !1; ++t < i; ) { + var a = U(n[t]); + if (!(s = e != null && r(e, a))) + break; + e = e[a]; + } + return s || ++t != i ? s : (i = e == null ? 0 : e.length, !!i && an(i) && un(a, i) && (y(e) || Ee(e))); +} +function It(e, n) { + return e != null && He(e, n, Lt); +} +var Ct = 1, St = 2; +function Nt(e, n) { + return W(e) && je(n) ? Ke(U(e), n) : function(r) { + var t = In(r, e); + return t === void 0 && t === n ? It(r, e) : k(n, t, Ct | St); + }; +} +function Ft(e) { + return function(n) { + return n == null ? void 0 : n[e]; + }; +} +function Mt(e) { + return function(n) { + return Ce(n, e); + }; +} +function xt(e) { + return W(e) ? Ft(U(e)) : Mt(e); +} +function Ye(e) { + return typeof e == "function" ? e : e == null ? we : typeof e == "object" ? y(e) ? Nt(e[0], e[1]) : Pt(e) : xt(e); +} +function Dt(e, n) { + return e && fn(e, n, T); +} +function Rt(e, n) { + return function(r, t) { + if (r == null) + return r; + if (!Te(r)) + return e(r, t); + for (var i = r.length, s = n ? i : -1, a = Object(r); (n ? s-- : ++s < i) && t(a[s], s, a) !== !1; ) + ; + return r; + }; +} +var Gt = Rt(Dt); +const ee = Gt; +function Ut(e, n, r) { + for (var t = -1, i = e == null ? 0 : e.length; ++t < i; ) + if (r(n, e[t])) + return !0; + return !1; +} +function Bt(e) { + return typeof e == "function" ? e : we; +} +function m(e, n) { + var r = y(e) ? Le : ee; + return r(e, Bt(n)); +} +function jt(e, n) { + var r = []; + return ee(e, function(t, i, s) { + n(t, i, s) && r.push(t); + }), r; +} +function D(e, n) { + var r = y(e) ? Ne : jt; + return r(e, Ye(n)); +} +var Kt = Object.prototype, Ht = Kt.hasOwnProperty; +function Yt(e, n) { + return e != null && Ht.call(e, n); +} +function E(e, n) { + return e != null && He(e, n, Yt); +} +function Zt(e, n) { + return ve(n, function(r) { + return e[r]; + }); +} +function H(e) { + return e == null ? [] : Zt(e, T(e)); +} +function v(e) { + return e === void 0; +} +function qt(e, n, r, t, i) { + return i(e, function(s, a, u) { + r = t ? (t = !1, s) : n(r, s, a, u); + }), r; +} +function Xt(e, n, r) { + var t = y(e) ? Sn : qt, i = arguments.length < 3; + return t(e, Ye(n), r, i, ee); +} +var Qt = 1 / 0, Wt = B && 1 / V(new B([, -0]))[1] == Qt ? function(e) { + return new B(e); +} : gn; +const Jt = Wt; +var zt = 200; +function Vt(e, n, r) { + var t = -1, i = yn, s = e.length, a = !0, u = [], f = u; + if (r) + a = !1, i = Ut; + else if (s >= zt) { + var g = n ? null : Jt(e); + if (g) + return V(g); + a = !1, i = Ue, f = new S(); + } else + f = n ? [] : u; + e: + for (; ++t < s; ) { + var l = e[t], o = n ? n(l) : l; + if (l = r || l !== 0 ? l : 0, a && o === o) { + for (var d = f.length; d--; ) + if (f[d] === o) + continue e; + n && f.push(o), u.push(l); + } else + i(f, o, r) || (f !== u && f.push(o), u.push(l)); + } + return u; +} +var kt = on(function(e) { + return Vt(Se(e, 1, dn, !0)); +}); +const ei = kt; +var ni = "\0", w = "\0", be = ""; +class Ze { + constructor(n = {}) { + this._isDirected = E(n, "directed") ? n.directed : !0, this._isMultigraph = E(n, "multigraph") ? n.multigraph : !1, this._isCompound = E(n, "compound") ? n.compound : !1, this._label = void 0, this._defaultNodeLabelFn = M(void 0), this._defaultEdgeLabelFn = M(void 0), this._nodes = {}, this._isCompound && (this._parent = {}, this._children = {}, this._children[w] = {}), this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {}; + } + /* === Graph functions ========= */ + isDirected() { + return this._isDirected; + } + isMultigraph() { + return this._isMultigraph; + } + isCompound() { + return this._isCompound; + } + setGraph(n) { + return this._label = n, this; + } + graph() { + return this._label; + } + /* === Node functions ========== */ + setDefaultNodeLabel(n) { + return te(n) || (n = M(n)), this._defaultNodeLabelFn = n, this; + } + nodeCount() { + return this._nodeCount; + } + nodes() { + return T(this._nodes); + } + sources() { + var n = this; + return D(this.nodes(), function(r) { + return ie(n._in[r]); + }); + } + sinks() { + var n = this; + return D(this.nodes(), function(r) { + return ie(n._out[r]); + }); + } + setNodes(n, r) { + var t = arguments, i = this; + return m(n, function(s) { + t.length > 1 ? i.setNode(s, r) : i.setNode(s); + }), this; + } + setNode(n, r) { + return E(this._nodes, n) ? (arguments.length > 1 && (this._nodes[n] = r), this) : (this._nodes[n] = arguments.length > 1 ? r : this._defaultNodeLabelFn(n), this._isCompound && (this._parent[n] = w, this._children[n] = {}, this._children[w][n] = !0), this._in[n] = {}, this._preds[n] = {}, this._out[n] = {}, this._sucs[n] = {}, ++this._nodeCount, this); + } + node(n) { + return this._nodes[n]; + } + hasNode(n) { + return E(this._nodes, n); + } + removeNode(n) { + var r = this; + if (E(this._nodes, n)) { + var t = function(i) { + r.removeEdge(r._edgeObjs[i]); + }; + delete this._nodes[n], this._isCompound && (this._removeFromParentsChildList(n), delete this._parent[n], m(this.children(n), function(i) { + r.setParent(i); + }), delete this._children[n]), m(T(this._in[n]), t), delete this._in[n], delete this._preds[n], m(T(this._out[n]), t), delete this._out[n], delete this._sucs[n], --this._nodeCount; + } + return this; + } + setParent(n, r) { + if (!this._isCompound) + throw new Error("Cannot set parent in a non-compound graph"); + if (v(r)) + r = w; + else { + r += ""; + for (var t = r; !v(t); t = this.parent(t)) + if (t === n) + throw new Error("Setting " + r + " as parent of " + n + " would create a cycle"); + this.setNode(r); + } + return this.setNode(n), this._removeFromParentsChildList(n), this._parent[n] = r, this._children[r][n] = !0, this; + } + _removeFromParentsChildList(n) { + delete this._children[this._parent[n]][n]; + } + parent(n) { + if (this._isCompound) { + var r = this._parent[n]; + if (r !== w) + return r; + } + } + children(n) { + if (v(n) && (n = w), this._isCompound) { + var r = this._children[n]; + if (r) + return T(r); + } else { + if (n === w) + return this.nodes(); + if (this.hasNode(n)) + return []; + } + } + predecessors(n) { + var r = this._preds[n]; + if (r) + return T(r); + } + successors(n) { + var r = this._sucs[n]; + if (r) + return T(r); + } + neighbors(n) { + var r = this.predecessors(n); + if (r) + return ei(r, this.successors(n)); + } + isLeaf(n) { + var r; + return this.isDirected() ? r = this.successors(n) : r = this.neighbors(n), r.length === 0; + } + filterNodes(n) { + var r = new this.constructor({ + directed: this._isDirected, + multigraph: this._isMultigraph, + compound: this._isCompound + }); + r.setGraph(this.graph()); + var t = this; + m(this._nodes, function(a, u) { + n(u) && r.setNode(u, a); + }), m(this._edgeObjs, function(a) { + r.hasNode(a.v) && r.hasNode(a.w) && r.setEdge(a, t.edge(a)); + }); + var i = {}; + function s(a) { + var u = t.parent(a); + return u === void 0 || r.hasNode(u) ? (i[a] = u, u) : u in i ? i[u] : s(u); + } + return this._isCompound && m(r.nodes(), function(a) { + r.setParent(a, s(a)); + }), r; + } + /* === Edge functions ========== */ + setDefaultEdgeLabel(n) { + return te(n) || (n = M(n)), this._defaultEdgeLabelFn = n, this; + } + edgeCount() { + return this._edgeCount; + } + edges() { + return H(this._edgeObjs); + } + setPath(n, r) { + var t = this, i = arguments; + return Xt(n, function(s, a) { + return i.length > 1 ? t.setEdge(s, a, r) : t.setEdge(s, a), a; + }), this; + } + /* + * setEdge(v, w, [value, [name]]) + * setEdge({ v, w, [name] }, [value]) + */ + setEdge() { + var n, r, t, i, s = !1, a = arguments[0]; + typeof a == "object" && a !== null && "v" in a ? (n = a.v, r = a.w, t = a.name, arguments.length === 2 && (i = arguments[1], s = !0)) : (n = a, r = arguments[1], t = arguments[3], arguments.length > 2 && (i = arguments[2], s = !0)), n = "" + n, r = "" + r, v(t) || (t = "" + t); + var u = P(this._isDirected, n, r, t); + if (E(this._edgeLabels, u)) + return s && (this._edgeLabels[u] = i), this; + if (!v(t) && !this._isMultigraph) + throw new Error("Cannot set a named edge when isMultigraph = false"); + this.setNode(n), this.setNode(r), this._edgeLabels[u] = s ? i : this._defaultEdgeLabelFn(n, r, t); + var f = ri(this._isDirected, n, r, t); + return n = f.v, r = f.w, Object.freeze(f), this._edgeObjs[u] = f, ye(this._preds[r], n), ye(this._sucs[n], r), this._in[r][u] = f, this._out[n][u] = f, this._edgeCount++, this; + } + edge(n, r, t) { + var i = arguments.length === 1 ? Y(this._isDirected, arguments[0]) : P(this._isDirected, n, r, t); + return this._edgeLabels[i]; + } + hasEdge(n, r, t) { + var i = arguments.length === 1 ? Y(this._isDirected, arguments[0]) : P(this._isDirected, n, r, t); + return E(this._edgeLabels, i); + } + removeEdge(n, r, t) { + var i = arguments.length === 1 ? Y(this._isDirected, arguments[0]) : P(this._isDirected, n, r, t), s = this._edgeObjs[i]; + return s && (n = s.v, r = s.w, delete this._edgeLabels[i], delete this._edgeObjs[i], Ae(this._preds[r], n), Ae(this._sucs[n], r), delete this._in[r][i], delete this._out[n][i], this._edgeCount--), this; + } + inEdges(n, r) { + var t = this._in[n]; + if (t) { + var i = H(t); + return r ? D(i, function(s) { + return s.v === r; + }) : i; + } + } + outEdges(n, r) { + var t = this._out[n]; + if (t) { + var i = H(t); + return r ? D(i, function(s) { + return s.w === r; + }) : i; + } + } + nodeEdges(n, r) { + var t = this.inEdges(n, r); + if (t) + return t.concat(this.outEdges(n, r)); + } +} +Ze.prototype._nodeCount = 0; +Ze.prototype._edgeCount = 0; +function ye(e, n) { + e[n] ? e[n]++ : e[n] = 1; +} +function Ae(e, n) { + --e[n] || delete e[n]; +} +function P(e, n, r, t) { + var i = "" + n, s = "" + r; + if (!e && i > s) { + var a = i; + i = s, s = a; + } + return i + be + s + be + (v(t) ? ni : t); +} +function ri(e, n, r, t) { + var i = "" + n, s = "" + r; + if (!e && i > s) { + var a = i; + i = s, s = a; + } + var u = { v: i, w: s }; + return t && (u.name = t), u; +} +function Y(e, n) { + return P(e, n.v, n.w, n.name); +} +export { + Ze as G, + Q as a, + Se as b, + j as c, + Ye as d, + cn as e, + m as f, + ee as g, + E as h, + v as i, + ve as j, + T as k, + Bt as l, + Dt as m, + Ie as n, + Ce as o, + It as p, + Pn as q, + D as r, + Xt as s, + U as t, + H as v +}; diff --git a/client/packages/lowcoder/public/package/47848c42.js b/client/packages/lowcoder/public/package/47848c42.js new file mode 100644 index 000000000..f3b3df09f --- /dev/null +++ b/client/packages/lowcoder/public/package/47848c42.js @@ -0,0 +1,11636 @@ +class u0 { + // The + prefix indicates that these fields aren't writeable + // Lexer holding the input string. + // Start offset, zero-based inclusive. + // End offset, zero-based exclusive. + constructor(e, t, a) { + this.lexer = void 0, this.start = void 0, this.end = void 0, this.lexer = e, this.start = t, this.end = a; + } + /** + * Merges two `SourceLocation`s from location providers, given they are + * provided in order of appearance. + * - Returns the first one's location if only the first is provided. + * - Returns a merged range of the first and the last if both are provided + * and their lexers match. + * - Otherwise, returns null. + */ + static range(e, t) { + return t ? !e || !e.loc || !t.loc || e.loc.lexer !== t.loc.lexer ? null : new u0(e.loc.lexer, e.loc.start, t.loc.end) : e && e.loc; + } +} +class f0 { + // don't expand the token + // used in \noexpand + constructor(e, t) { + this.text = void 0, this.loc = void 0, this.noexpand = void 0, this.treatAsRelax = void 0, this.text = e, this.loc = t; + } + /** + * Given a pair of tokens (this and endToken), compute a `Token` encompassing + * the whole input range enclosed by these two. + */ + range(e, t) { + return new f0(t, u0.range(this, e)); + } +} +class M { + // Error start position based on passed-in Token or ParseNode. + // Length of affected text based on passed-in Token or ParseNode. + // The underlying error message without any context added. + constructor(e, t) { + this.name = void 0, this.position = void 0, this.length = void 0, this.rawMessage = void 0; + var a = "KaTeX parse error: " + e, n, s, o = t && t.loc; + if (o && o.start <= o.end) { + var h = o.lexer.input; + n = o.start, s = o.end, n === h.length ? a += " at end of input: " : a += " at position " + (n + 1) + ": "; + var c = h.slice(n, s).replace(/[^]/g, "$&̲"), p; + n > 15 ? p = "…" + h.slice(n - 15, n) : p = h.slice(0, n); + var g; + s + 15 < h.length ? g = h.slice(s, s + 15) + "…" : g = h.slice(s), a += p + c + g; + } + var y = new Error(a); + return y.name = "ParseError", y.__proto__ = M.prototype, y.position = n, n != null && s != null && (y.length = s - n), y.rawMessage = e, y; + } +} +M.prototype.__proto__ = Error.prototype; +var da = function(e, t) { + return e.indexOf(t) !== -1; +}, fa = function(e, t) { + return e === void 0 ? t : e; +}, pa = /([A-Z])/g, va = function(e) { + return e.replace(pa, "-$1").toLowerCase(); +}, ga = { + "&": "&", + ">": ">", + "<": "<", + '"': """, + "'": "'" +}, ba = /[&><"']/g; +function ya(r) { + return String(r).replace(ba, (e) => ga[e]); +} +var pr = function r(e) { + return e.type === "ordgroup" || e.type === "color" ? e.body.length === 1 ? r(e.body[0]) : e : e.type === "font" ? r(e.body) : e; +}, xa = function(e) { + var t = pr(e); + return t.type === "mathord" || t.type === "textord" || t.type === "atom"; +}, wa = function(e) { + if (!e) + throw new Error("Expected non-null, but got " + String(e)); + return e; +}, ka = function(e) { + var t = /^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e); + return t ? t[2] !== ":" || !/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1]) ? null : t[1].toLowerCase() : "_relative"; +}, q = { + contains: da, + deflt: fa, + escape: ya, + hyphenate: va, + getBaseElem: pr, + isCharacterBox: xa, + protocolFromUrl: ka +}, ze = { + displayMode: { + type: "boolean", + description: "Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.", + cli: "-d, --display-mode" + }, + output: { + type: { + enum: ["htmlAndMathml", "html", "mathml"] + }, + description: "Determines the markup language of the output.", + cli: "-F, --format " + }, + leqno: { + type: "boolean", + description: "Render display math in leqno style (left-justified tags)." + }, + fleqn: { + type: "boolean", + description: "Render display math flush left." + }, + throwOnError: { + type: "boolean", + default: !0, + cli: "-t, --no-throw-on-error", + cliDescription: "Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error." + }, + errorColor: { + type: "string", + default: "#cc0000", + cli: "-c, --error-color ", + cliDescription: "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.", + cliProcessor: (r) => "#" + r + }, + macros: { + type: "object", + cli: "-m, --macro ", + cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).", + cliDefault: [], + cliProcessor: (r, e) => (e.push(r), e) + }, + minRuleThickness: { + type: "number", + description: "Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.", + processor: (r) => Math.max(0, r), + cli: "--min-rule-thickness ", + cliProcessor: parseFloat + }, + colorIsTextColor: { + type: "boolean", + description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.", + cli: "-b, --color-is-text-color" + }, + strict: { + type: [{ + enum: ["warn", "ignore", "error"] + }, "boolean", "function"], + description: "Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.", + cli: "-S, --strict", + cliDefault: !1 + }, + trust: { + type: ["boolean", "function"], + description: "Trust the input, enabling all HTML features such as \\url.", + cli: "-T, --trust" + }, + maxSize: { + type: "number", + default: 1 / 0, + description: "If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large", + processor: (r) => Math.max(0, r), + cli: "-s, --max-size ", + cliProcessor: parseInt + }, + maxExpand: { + type: "number", + default: 1e3, + description: "Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.", + processor: (r) => Math.max(0, r), + cli: "-e, --max-expand ", + cliProcessor: (r) => r === "Infinity" ? 1 / 0 : parseInt(r) + }, + globalGroup: { + type: "boolean", + cli: !1 + } +}; +function Sa(r) { + if (r.default) + return r.default; + var e = r.type, t = Array.isArray(e) ? e[0] : e; + if (typeof t != "string") + return t.enum[0]; + switch (t) { + case "boolean": + return !1; + case "string": + return ""; + case "number": + return 0; + case "object": + return {}; + } +} +class ct { + constructor(e) { + this.displayMode = void 0, this.output = void 0, this.leqno = void 0, this.fleqn = void 0, this.throwOnError = void 0, this.errorColor = void 0, this.macros = void 0, this.minRuleThickness = void 0, this.colorIsTextColor = void 0, this.strict = void 0, this.trust = void 0, this.maxSize = void 0, this.maxExpand = void 0, this.globalGroup = void 0, e = e || {}; + for (var t in ze) + if (ze.hasOwnProperty(t)) { + var a = ze[t]; + this[t] = e[t] !== void 0 ? a.processor ? a.processor(e[t]) : e[t] : Sa(a); + } + } + /** + * Report nonstrict (non-LaTeX-compatible) input. + * Can safely not be called if `this.strict` is false in JavaScript. + */ + reportNonstrict(e, t, a) { + var n = this.strict; + if (typeof n == "function" && (n = n(e, t, a)), !(!n || n === "ignore")) { + if (n === !0 || n === "error") + throw new M("LaTeX-incompatible input and strict mode is set to 'error': " + (t + " [" + e + "]"), a); + n === "warn" ? typeof console != "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (t + " [" + e + "]")) : typeof console != "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + n + "': " + t + " [" + e + "]")); + } + } + /** + * Check whether to apply strict (LaTeX-adhering) behavior for unusual + * input (like `\\`). Unlike `nonstrict`, will not throw an error; + * instead, "error" translates to a return value of `true`, while "ignore" + * translates to a return value of `false`. May still print a warning: + * "warn" prints a warning and returns `false`. + * This is for the second category of `errorCode`s listed in the README. + */ + useStrictBehavior(e, t, a) { + var n = this.strict; + if (typeof n == "function") + try { + n = n(e, t, a); + } catch (s) { + n = "error"; + } + return !n || n === "ignore" ? !1 : n === !0 || n === "error" ? !0 : n === "warn" ? (typeof console != "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (t + " [" + e + "]")), !1) : (typeof console != "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + n + "': " + t + " [" + e + "]")), !1); + } + /** + * Check whether to test potentially dangerous input, and return + * `true` (trusted) or `false` (untrusted). The sole argument `context` + * should be an object with `command` field specifying the relevant LaTeX + * command (as a string starting with `\`), and any other arguments, etc. + * If `context` has a `url` field, a `protocol` field will automatically + * get added by this function (changing the specified object). + */ + isTrusted(e) { + if (e.url && !e.protocol) { + var t = q.protocolFromUrl(e.url); + if (t == null) + return !1; + e.protocol = t; + } + var a = typeof this.trust == "function" ? this.trust(e) : this.trust; + return !!a; + } +} +class O0 { + constructor(e, t, a) { + this.id = void 0, this.size = void 0, this.cramped = void 0, this.id = e, this.size = t, this.cramped = a; + } + /** + * Get the style of a superscript given a base in the current style. + */ + sup() { + return y0[Ma[this.id]]; + } + /** + * Get the style of a subscript given a base in the current style. + */ + sub() { + return y0[za[this.id]]; + } + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + fracNum() { + return y0[Aa[this.id]]; + } + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + fracDen() { + return y0[Ta[this.id]]; + } + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + cramp() { + return y0[Ba[this.id]]; + } + /** + * Get a text or display version of this style. + */ + text() { + return y0[Da[this.id]]; + } + /** + * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + isTight() { + return this.size >= 2; + } +} +var dt = 0, Te = 1, _0 = 2, T0 = 3, le = 4, d0 = 5, ee = 6, n0 = 7, y0 = [new O0(dt, 0, !1), new O0(Te, 0, !0), new O0(_0, 1, !1), new O0(T0, 1, !0), new O0(le, 2, !1), new O0(d0, 2, !0), new O0(ee, 3, !1), new O0(n0, 3, !0)], Ma = [le, d0, le, d0, ee, n0, ee, n0], za = [d0, d0, d0, d0, n0, n0, n0, n0], Aa = [_0, T0, le, d0, ee, n0, ee, n0], Ta = [T0, T0, d0, d0, n0, n0, n0, n0], Ba = [Te, Te, T0, T0, d0, d0, n0, n0], Da = [dt, Te, _0, T0, _0, T0, _0, T0], R = { + DISPLAY: y0[dt], + TEXT: y0[_0], + SCRIPT: y0[le], + SCRIPTSCRIPT: y0[ee] +}, at = [{ + // Latin characters beyond the Latin-1 characters we have metrics for. + // Needed for Czech, Hungarian and Turkish text, for example. + name: "latin", + blocks: [ + [256, 591], + // Latin Extended-A and Latin Extended-B + [768, 879] + // Combining Diacritical marks + ] +}, { + // The Cyrillic script used by Russian and related languages. + // A Cyrillic subset used to be supported as explicitly defined + // symbols in symbols.js + name: "cyrillic", + blocks: [[1024, 1279]] +}, { + // Armenian + name: "armenian", + blocks: [[1328, 1423]] +}, { + // The Brahmic scripts of South and Southeast Asia + // Devanagari (0900–097F) + // Bengali (0980–09FF) + // Gurmukhi (0A00–0A7F) + // Gujarati (0A80–0AFF) + // Oriya (0B00–0B7F) + // Tamil (0B80–0BFF) + // Telugu (0C00–0C7F) + // Kannada (0C80–0CFF) + // Malayalam (0D00–0D7F) + // Sinhala (0D80–0DFF) + // Thai (0E00–0E7F) + // Lao (0E80–0EFF) + // Tibetan (0F00–0FFF) + // Myanmar (1000–109F) + name: "brahmic", + blocks: [[2304, 4255]] +}, { + name: "georgian", + blocks: [[4256, 4351]] +}, { + // Chinese and Japanese. + // The "k" in cjk is for Korean, but we've separated Korean out + name: "cjk", + blocks: [ + [12288, 12543], + // CJK symbols and punctuation, Hiragana, Katakana + [19968, 40879], + // CJK ideograms + [65280, 65376] + // Fullwidth punctuation + // TODO: add halfwidth Katakana and Romanji glyphs + ] +}, { + // Korean + name: "hangul", + blocks: [[44032, 55215]] +}]; +function Ca(r) { + for (var e = 0; e < at.length; e++) + for (var t = at[e], a = 0; a < t.blocks.length; a++) { + var n = t.blocks[a]; + if (r >= n[0] && r <= n[1]) + return t.name; + } + return null; +} +var Ae = []; +at.forEach((r) => r.blocks.forEach((e) => Ae.push(...e))); +function vr(r) { + for (var e = 0; e < Ae.length; e += 2) + if (r >= Ae[e] && r <= Ae[e + 1]) + return !0; + return !1; +} +var Q0 = 80, Na = function(e, t) { + return "M95," + (622 + e + t) + ` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l` + e / 2.075 + " -" + e + ` +c5.3,-9.3,12,-14,20,-14 +H400000v` + (40 + e) + `H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M` + (834 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z"; +}, qa = function(e, t) { + return "M263," + (601 + e + t) + `c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l` + e / 2.084 + " -" + e + ` +c4.7,-7.3,11,-11,19,-11 +H40000v` + (40 + e) + `H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z"; +}, Ea = function(e, t) { + return "M983 " + (10 + e + t) + ` +l` + e / 3.13 + " -" + e + ` +c4,-6.7,10,-10,18,-10 H400000v` + (40 + e) + ` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z"; +}, Ra = function(e, t) { + return "M424," + (2398 + e + t) + ` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l` + e / 4.223 + " -" + e + `c4,-6.7,10,-10,18,-10 H400000 +v` + (40 + e) + `H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M` + (1001 + e) + " " + t + ` +h400000v` + (40 + e) + "h-400000z"; +}, Ia = function(e, t) { + return "M473," + (2713 + e + t) + ` +c339.3,-1799.3,509.3,-2700,510,-2702 l` + e / 5.298 + " -" + e + ` +c3.3,-7.3,9.3,-11,18,-11 H400000v` + (40 + e) + `H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "H1017.7z"; +}, Oa = function(e) { + var t = e / 2; + return "M400000 " + e + " H0 L" + t + " 0 l65 45 L145 " + (e - 80) + " H400000z"; +}, Ha = function(e, t, a) { + var n = a - 54 - t - e; + return "M702 " + (e + t) + "H400000" + (40 + e) + ` +H742v` + n + `l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 ` + t + "H400000v" + (40 + e) + "H742z"; +}, Fa = function(e, t, a) { + t = 1e3 * t; + var n = ""; + switch (e) { + case "sqrtMain": + n = Na(t, Q0); + break; + case "sqrtSize1": + n = qa(t, Q0); + break; + case "sqrtSize2": + n = Ea(t, Q0); + break; + case "sqrtSize3": + n = Ra(t, Q0); + break; + case "sqrtSize4": + n = Ia(t, Q0); + break; + case "sqrtTall": + n = Ha(t, Q0, a); + } + return n; +}, La = function(e, t) { + switch (e) { + case "⎜": + return "M291 0 H417 V" + t + " H291z M291 0 H417 V" + t + " H291z"; + case "∣": + return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z"; + case "∥": + return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z" + ("M367 0 H410 V" + t + " H367z M367 0 H410 V" + t + " H367z"); + case "⎟": + return "M457 0 H583 V" + t + " H457z M457 0 H583 V" + t + " H457z"; + case "⎢": + return "M319 0 H403 V" + t + " H319z M319 0 H403 V" + t + " H319z"; + case "⎥": + return "M263 0 H347 V" + t + " H263z M263 0 H347 V" + t + " H263z"; + case "⎪": + return "M384 0 H504 V" + t + " H384z M384 0 H504 V" + t + " H384z"; + case "⏐": + return "M312 0 H355 V" + t + " H312z M312 0 H355 V" + t + " H312z"; + case "‖": + return "M257 0 H300 V" + t + " H257z M257 0 H300 V" + t + " H257z" + ("M478 0 H521 V" + t + " H478z M478 0 H521 V" + t + " H478z"); + default: + return ""; + } +}, It = { + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + doubleleftarrow: `M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`, + // doublerightarrow is from glyph U+21D2 in font KaTeX Main + doublerightarrow: `M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`, + // leftarrow is from glyph U+2190 in font KaTeX Main + leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`, + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`, + leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`, + // overgroup is from the MnSymbol package (public domain) + leftgroup: `M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`, + leftgroupunder: `M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`, + // Harpoons are from glyph U+21BD in font KaTeX Main + leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`, + leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`, + leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`, + leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`, + // hook is from glyph U+21A9 in font KaTeX Main + lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`, + leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`, + leftmapsto: `M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`, + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`, + longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`, + midbrace: `M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`, + midbraceunder: `M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`, + oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`, + oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`, + oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`, + oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`, + rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`, + rightbrace: `M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`, + rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`, + rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`, + rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`, + rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`, + rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`, + rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`, + rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`, + righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`, + rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`, + rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`, + // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular + twoheadleftarrow: `M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`, + twoheadrightarrow: `M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`, + // tilde1 is a modified version of a glyph from the MnSymbol package + tilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`, + // ditto tilde2, tilde3, & tilde4 + tilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`, + tilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`, + tilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`, + // vec is from glyph U+20D7 in font KaTeX Main + vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`, + // widehat1 is a modified version of a glyph from the MnSymbol package + widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`, + // ditto widehat2, widehat3, & widehat4 + widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, + // widecheck paths are all inverted versions of widehat + widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`, + widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, + // The next ten paths support reaction arrows from the mhchem package. + // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX + // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main + baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`, + // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main + rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`, + // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end. + // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em + baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`, + rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`, + shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`, + shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z` +}, Pa = function(e, t) { + switch (e) { + case "lbrack": + return "M403 1759 V84 H666 V0 H319 V1759 v" + t + ` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v` + t + " v1759 h84z"; + case "rbrack": + return "M347 1759 V0 H0 V84 H263 V1759 v" + t + ` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v` + t + " v1759 h84z"; + case "vert": + return "M145 15 v585 v" + t + ` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` + t + " v585 h43z"; + case "doublevert": + return "M145 15 v585 v" + t + ` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` + t + ` v585 h43z +M367 15 v585 v` + t + ` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v` + t + " v585 h43z"; + case "lfloor": + return "M319 602 V0 H403 V602 v" + t + ` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v` + t + " v1715 H319z"; + case "rfloor": + return "M319 602 V0 H403 V602 v" + t + ` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v` + t + " v1715 H319z"; + case "lceil": + return "M403 1759 V84 H666 V0 H319 V1759 v" + t + ` v602 h84z +M403 1759 V0 H319 V1759 v` + t + " v602 h84z"; + case "rceil": + return "M347 1759 V0 H0 V84 H263 V1759 v" + t + ` v602 h84z +M347 1759 V0 h-84 V1759 v` + t + " v602 h84z"; + case "lparen": + return `M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,` + (t + 84) + `c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-` + (t + 92) + `c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`; + case "rparen": + return `M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,` + (t + 9) + ` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-` + (t + 144) + `c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`; + default: + throw new Error("Unknown stretchy delimiter."); + } +}; +class ue { + // HtmlDomNode + // Never used; needed for satisfying interface. + constructor(e) { + this.children = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.children = e, this.classes = [], this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = {}; + } + hasClass(e) { + return q.contains(this.classes, e); + } + /** Convert the fragment into a node. */ + toNode() { + for (var e = document.createDocumentFragment(), t = 0; t < this.children.length; t++) + e.appendChild(this.children[t].toNode()); + return e; + } + /** Convert the fragment into HTML markup. */ + toMarkup() { + for (var e = "", t = 0; t < this.children.length; t++) + e += this.children[t].toMarkup(); + return e; + } + /** + * Converts the math node into a string, similar to innerText. Applies to + * MathDomNode's only. + */ + toText() { + var e = (t) => t.toText(); + return this.children.map(e).join(""); + } +} +var x0 = { + "AMS-Regular": { + 32: [0, 0, 0, 0, 0.25], + 65: [0, 0.68889, 0, 0, 0.72222], + 66: [0, 0.68889, 0, 0, 0.66667], + 67: [0, 0.68889, 0, 0, 0.72222], + 68: [0, 0.68889, 0, 0, 0.72222], + 69: [0, 0.68889, 0, 0, 0.66667], + 70: [0, 0.68889, 0, 0, 0.61111], + 71: [0, 0.68889, 0, 0, 0.77778], + 72: [0, 0.68889, 0, 0, 0.77778], + 73: [0, 0.68889, 0, 0, 0.38889], + 74: [0.16667, 0.68889, 0, 0, 0.5], + 75: [0, 0.68889, 0, 0, 0.77778], + 76: [0, 0.68889, 0, 0, 0.66667], + 77: [0, 0.68889, 0, 0, 0.94445], + 78: [0, 0.68889, 0, 0, 0.72222], + 79: [0.16667, 0.68889, 0, 0, 0.77778], + 80: [0, 0.68889, 0, 0, 0.61111], + 81: [0.16667, 0.68889, 0, 0, 0.77778], + 82: [0, 0.68889, 0, 0, 0.72222], + 83: [0, 0.68889, 0, 0, 0.55556], + 84: [0, 0.68889, 0, 0, 0.66667], + 85: [0, 0.68889, 0, 0, 0.72222], + 86: [0, 0.68889, 0, 0, 0.72222], + 87: [0, 0.68889, 0, 0, 1], + 88: [0, 0.68889, 0, 0, 0.72222], + 89: [0, 0.68889, 0, 0, 0.72222], + 90: [0, 0.68889, 0, 0, 0.66667], + 107: [0, 0.68889, 0, 0, 0.55556], + 160: [0, 0, 0, 0, 0.25], + 165: [0, 0.675, 0.025, 0, 0.75], + 174: [0.15559, 0.69224, 0, 0, 0.94666], + 240: [0, 0.68889, 0, 0, 0.55556], + 295: [0, 0.68889, 0, 0, 0.54028], + 710: [0, 0.825, 0, 0, 2.33334], + 732: [0, 0.9, 0, 0, 2.33334], + 770: [0, 0.825, 0, 0, 2.33334], + 771: [0, 0.9, 0, 0, 2.33334], + 989: [0.08167, 0.58167, 0, 0, 0.77778], + 1008: [0, 0.43056, 0.04028, 0, 0.66667], + 8245: [0, 0.54986, 0, 0, 0.275], + 8463: [0, 0.68889, 0, 0, 0.54028], + 8487: [0, 0.68889, 0, 0, 0.72222], + 8498: [0, 0.68889, 0, 0, 0.55556], + 8502: [0, 0.68889, 0, 0, 0.66667], + 8503: [0, 0.68889, 0, 0, 0.44445], + 8504: [0, 0.68889, 0, 0, 0.66667], + 8513: [0, 0.68889, 0, 0, 0.63889], + 8592: [-0.03598, 0.46402, 0, 0, 0.5], + 8594: [-0.03598, 0.46402, 0, 0, 0.5], + 8602: [-0.13313, 0.36687, 0, 0, 1], + 8603: [-0.13313, 0.36687, 0, 0, 1], + 8606: [0.01354, 0.52239, 0, 0, 1], + 8608: [0.01354, 0.52239, 0, 0, 1], + 8610: [0.01354, 0.52239, 0, 0, 1.11111], + 8611: [0.01354, 0.52239, 0, 0, 1.11111], + 8619: [0, 0.54986, 0, 0, 1], + 8620: [0, 0.54986, 0, 0, 1], + 8621: [-0.13313, 0.37788, 0, 0, 1.38889], + 8622: [-0.13313, 0.36687, 0, 0, 1], + 8624: [0, 0.69224, 0, 0, 0.5], + 8625: [0, 0.69224, 0, 0, 0.5], + 8630: [0, 0.43056, 0, 0, 1], + 8631: [0, 0.43056, 0, 0, 1], + 8634: [0.08198, 0.58198, 0, 0, 0.77778], + 8635: [0.08198, 0.58198, 0, 0, 0.77778], + 8638: [0.19444, 0.69224, 0, 0, 0.41667], + 8639: [0.19444, 0.69224, 0, 0, 0.41667], + 8642: [0.19444, 0.69224, 0, 0, 0.41667], + 8643: [0.19444, 0.69224, 0, 0, 0.41667], + 8644: [0.1808, 0.675, 0, 0, 1], + 8646: [0.1808, 0.675, 0, 0, 1], + 8647: [0.1808, 0.675, 0, 0, 1], + 8648: [0.19444, 0.69224, 0, 0, 0.83334], + 8649: [0.1808, 0.675, 0, 0, 1], + 8650: [0.19444, 0.69224, 0, 0, 0.83334], + 8651: [0.01354, 0.52239, 0, 0, 1], + 8652: [0.01354, 0.52239, 0, 0, 1], + 8653: [-0.13313, 0.36687, 0, 0, 1], + 8654: [-0.13313, 0.36687, 0, 0, 1], + 8655: [-0.13313, 0.36687, 0, 0, 1], + 8666: [0.13667, 0.63667, 0, 0, 1], + 8667: [0.13667, 0.63667, 0, 0, 1], + 8669: [-0.13313, 0.37788, 0, 0, 1], + 8672: [-0.064, 0.437, 0, 0, 1.334], + 8674: [-0.064, 0.437, 0, 0, 1.334], + 8705: [0, 0.825, 0, 0, 0.5], + 8708: [0, 0.68889, 0, 0, 0.55556], + 8709: [0.08167, 0.58167, 0, 0, 0.77778], + 8717: [0, 0.43056, 0, 0, 0.42917], + 8722: [-0.03598, 0.46402, 0, 0, 0.5], + 8724: [0.08198, 0.69224, 0, 0, 0.77778], + 8726: [0.08167, 0.58167, 0, 0, 0.77778], + 8733: [0, 0.69224, 0, 0, 0.77778], + 8736: [0, 0.69224, 0, 0, 0.72222], + 8737: [0, 0.69224, 0, 0, 0.72222], + 8738: [0.03517, 0.52239, 0, 0, 0.72222], + 8739: [0.08167, 0.58167, 0, 0, 0.22222], + 8740: [0.25142, 0.74111, 0, 0, 0.27778], + 8741: [0.08167, 0.58167, 0, 0, 0.38889], + 8742: [0.25142, 0.74111, 0, 0, 0.5], + 8756: [0, 0.69224, 0, 0, 0.66667], + 8757: [0, 0.69224, 0, 0, 0.66667], + 8764: [-0.13313, 0.36687, 0, 0, 0.77778], + 8765: [-0.13313, 0.37788, 0, 0, 0.77778], + 8769: [-0.13313, 0.36687, 0, 0, 0.77778], + 8770: [-0.03625, 0.46375, 0, 0, 0.77778], + 8774: [0.30274, 0.79383, 0, 0, 0.77778], + 8776: [-0.01688, 0.48312, 0, 0, 0.77778], + 8778: [0.08167, 0.58167, 0, 0, 0.77778], + 8782: [0.06062, 0.54986, 0, 0, 0.77778], + 8783: [0.06062, 0.54986, 0, 0, 0.77778], + 8785: [0.08198, 0.58198, 0, 0, 0.77778], + 8786: [0.08198, 0.58198, 0, 0, 0.77778], + 8787: [0.08198, 0.58198, 0, 0, 0.77778], + 8790: [0, 0.69224, 0, 0, 0.77778], + 8791: [0.22958, 0.72958, 0, 0, 0.77778], + 8796: [0.08198, 0.91667, 0, 0, 0.77778], + 8806: [0.25583, 0.75583, 0, 0, 0.77778], + 8807: [0.25583, 0.75583, 0, 0, 0.77778], + 8808: [0.25142, 0.75726, 0, 0, 0.77778], + 8809: [0.25142, 0.75726, 0, 0, 0.77778], + 8812: [0.25583, 0.75583, 0, 0, 0.5], + 8814: [0.20576, 0.70576, 0, 0, 0.77778], + 8815: [0.20576, 0.70576, 0, 0, 0.77778], + 8816: [0.30274, 0.79383, 0, 0, 0.77778], + 8817: [0.30274, 0.79383, 0, 0, 0.77778], + 8818: [0.22958, 0.72958, 0, 0, 0.77778], + 8819: [0.22958, 0.72958, 0, 0, 0.77778], + 8822: [0.1808, 0.675, 0, 0, 0.77778], + 8823: [0.1808, 0.675, 0, 0, 0.77778], + 8828: [0.13667, 0.63667, 0, 0, 0.77778], + 8829: [0.13667, 0.63667, 0, 0, 0.77778], + 8830: [0.22958, 0.72958, 0, 0, 0.77778], + 8831: [0.22958, 0.72958, 0, 0, 0.77778], + 8832: [0.20576, 0.70576, 0, 0, 0.77778], + 8833: [0.20576, 0.70576, 0, 0, 0.77778], + 8840: [0.30274, 0.79383, 0, 0, 0.77778], + 8841: [0.30274, 0.79383, 0, 0, 0.77778], + 8842: [0.13597, 0.63597, 0, 0, 0.77778], + 8843: [0.13597, 0.63597, 0, 0, 0.77778], + 8847: [0.03517, 0.54986, 0, 0, 0.77778], + 8848: [0.03517, 0.54986, 0, 0, 0.77778], + 8858: [0.08198, 0.58198, 0, 0, 0.77778], + 8859: [0.08198, 0.58198, 0, 0, 0.77778], + 8861: [0.08198, 0.58198, 0, 0, 0.77778], + 8862: [0, 0.675, 0, 0, 0.77778], + 8863: [0, 0.675, 0, 0, 0.77778], + 8864: [0, 0.675, 0, 0, 0.77778], + 8865: [0, 0.675, 0, 0, 0.77778], + 8872: [0, 0.69224, 0, 0, 0.61111], + 8873: [0, 0.69224, 0, 0, 0.72222], + 8874: [0, 0.69224, 0, 0, 0.88889], + 8876: [0, 0.68889, 0, 0, 0.61111], + 8877: [0, 0.68889, 0, 0, 0.61111], + 8878: [0, 0.68889, 0, 0, 0.72222], + 8879: [0, 0.68889, 0, 0, 0.72222], + 8882: [0.03517, 0.54986, 0, 0, 0.77778], + 8883: [0.03517, 0.54986, 0, 0, 0.77778], + 8884: [0.13667, 0.63667, 0, 0, 0.77778], + 8885: [0.13667, 0.63667, 0, 0, 0.77778], + 8888: [0, 0.54986, 0, 0, 1.11111], + 8890: [0.19444, 0.43056, 0, 0, 0.55556], + 8891: [0.19444, 0.69224, 0, 0, 0.61111], + 8892: [0.19444, 0.69224, 0, 0, 0.61111], + 8901: [0, 0.54986, 0, 0, 0.27778], + 8903: [0.08167, 0.58167, 0, 0, 0.77778], + 8905: [0.08167, 0.58167, 0, 0, 0.77778], + 8906: [0.08167, 0.58167, 0, 0, 0.77778], + 8907: [0, 0.69224, 0, 0, 0.77778], + 8908: [0, 0.69224, 0, 0, 0.77778], + 8909: [-0.03598, 0.46402, 0, 0, 0.77778], + 8910: [0, 0.54986, 0, 0, 0.76042], + 8911: [0, 0.54986, 0, 0, 0.76042], + 8912: [0.03517, 0.54986, 0, 0, 0.77778], + 8913: [0.03517, 0.54986, 0, 0, 0.77778], + 8914: [0, 0.54986, 0, 0, 0.66667], + 8915: [0, 0.54986, 0, 0, 0.66667], + 8916: [0, 0.69224, 0, 0, 0.66667], + 8918: [0.0391, 0.5391, 0, 0, 0.77778], + 8919: [0.0391, 0.5391, 0, 0, 0.77778], + 8920: [0.03517, 0.54986, 0, 0, 1.33334], + 8921: [0.03517, 0.54986, 0, 0, 1.33334], + 8922: [0.38569, 0.88569, 0, 0, 0.77778], + 8923: [0.38569, 0.88569, 0, 0, 0.77778], + 8926: [0.13667, 0.63667, 0, 0, 0.77778], + 8927: [0.13667, 0.63667, 0, 0, 0.77778], + 8928: [0.30274, 0.79383, 0, 0, 0.77778], + 8929: [0.30274, 0.79383, 0, 0, 0.77778], + 8934: [0.23222, 0.74111, 0, 0, 0.77778], + 8935: [0.23222, 0.74111, 0, 0, 0.77778], + 8936: [0.23222, 0.74111, 0, 0, 0.77778], + 8937: [0.23222, 0.74111, 0, 0, 0.77778], + 8938: [0.20576, 0.70576, 0, 0, 0.77778], + 8939: [0.20576, 0.70576, 0, 0, 0.77778], + 8940: [0.30274, 0.79383, 0, 0, 0.77778], + 8941: [0.30274, 0.79383, 0, 0, 0.77778], + 8994: [0.19444, 0.69224, 0, 0, 0.77778], + 8995: [0.19444, 0.69224, 0, 0, 0.77778], + 9416: [0.15559, 0.69224, 0, 0, 0.90222], + 9484: [0, 0.69224, 0, 0, 0.5], + 9488: [0, 0.69224, 0, 0, 0.5], + 9492: [0, 0.37788, 0, 0, 0.5], + 9496: [0, 0.37788, 0, 0, 0.5], + 9585: [0.19444, 0.68889, 0, 0, 0.88889], + 9586: [0.19444, 0.74111, 0, 0, 0.88889], + 9632: [0, 0.675, 0, 0, 0.77778], + 9633: [0, 0.675, 0, 0, 0.77778], + 9650: [0, 0.54986, 0, 0, 0.72222], + 9651: [0, 0.54986, 0, 0, 0.72222], + 9654: [0.03517, 0.54986, 0, 0, 0.77778], + 9660: [0, 0.54986, 0, 0, 0.72222], + 9661: [0, 0.54986, 0, 0, 0.72222], + 9664: [0.03517, 0.54986, 0, 0, 0.77778], + 9674: [0.11111, 0.69224, 0, 0, 0.66667], + 9733: [0.19444, 0.69224, 0, 0, 0.94445], + 10003: [0, 0.69224, 0, 0, 0.83334], + 10016: [0, 0.69224, 0, 0, 0.83334], + 10731: [0.11111, 0.69224, 0, 0, 0.66667], + 10846: [0.19444, 0.75583, 0, 0, 0.61111], + 10877: [0.13667, 0.63667, 0, 0, 0.77778], + 10878: [0.13667, 0.63667, 0, 0, 0.77778], + 10885: [0.25583, 0.75583, 0, 0, 0.77778], + 10886: [0.25583, 0.75583, 0, 0, 0.77778], + 10887: [0.13597, 0.63597, 0, 0, 0.77778], + 10888: [0.13597, 0.63597, 0, 0, 0.77778], + 10889: [0.26167, 0.75726, 0, 0, 0.77778], + 10890: [0.26167, 0.75726, 0, 0, 0.77778], + 10891: [0.48256, 0.98256, 0, 0, 0.77778], + 10892: [0.48256, 0.98256, 0, 0, 0.77778], + 10901: [0.13667, 0.63667, 0, 0, 0.77778], + 10902: [0.13667, 0.63667, 0, 0, 0.77778], + 10933: [0.25142, 0.75726, 0, 0, 0.77778], + 10934: [0.25142, 0.75726, 0, 0, 0.77778], + 10935: [0.26167, 0.75726, 0, 0, 0.77778], + 10936: [0.26167, 0.75726, 0, 0, 0.77778], + 10937: [0.26167, 0.75726, 0, 0, 0.77778], + 10938: [0.26167, 0.75726, 0, 0, 0.77778], + 10949: [0.25583, 0.75583, 0, 0, 0.77778], + 10950: [0.25583, 0.75583, 0, 0, 0.77778], + 10955: [0.28481, 0.79383, 0, 0, 0.77778], + 10956: [0.28481, 0.79383, 0, 0, 0.77778], + 57350: [0.08167, 0.58167, 0, 0, 0.22222], + 57351: [0.08167, 0.58167, 0, 0, 0.38889], + 57352: [0.08167, 0.58167, 0, 0, 0.77778], + 57353: [0, 0.43056, 0.04028, 0, 0.66667], + 57356: [0.25142, 0.75726, 0, 0, 0.77778], + 57357: [0.25142, 0.75726, 0, 0, 0.77778], + 57358: [0.41951, 0.91951, 0, 0, 0.77778], + 57359: [0.30274, 0.79383, 0, 0, 0.77778], + 57360: [0.30274, 0.79383, 0, 0, 0.77778], + 57361: [0.41951, 0.91951, 0, 0, 0.77778], + 57366: [0.25142, 0.75726, 0, 0, 0.77778], + 57367: [0.25142, 0.75726, 0, 0, 0.77778], + 57368: [0.25142, 0.75726, 0, 0, 0.77778], + 57369: [0.25142, 0.75726, 0, 0, 0.77778], + 57370: [0.13597, 0.63597, 0, 0, 0.77778], + 57371: [0.13597, 0.63597, 0, 0, 0.77778] + }, + "Caligraphic-Regular": { + 32: [0, 0, 0, 0, 0.25], + 65: [0, 0.68333, 0, 0.19445, 0.79847], + 66: [0, 0.68333, 0.03041, 0.13889, 0.65681], + 67: [0, 0.68333, 0.05834, 0.13889, 0.52653], + 68: [0, 0.68333, 0.02778, 0.08334, 0.77139], + 69: [0, 0.68333, 0.08944, 0.11111, 0.52778], + 70: [0, 0.68333, 0.09931, 0.11111, 0.71875], + 71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487], + 72: [0, 0.68333, 965e-5, 0.11111, 0.84452], + 73: [0, 0.68333, 0.07382, 0, 0.54452], + 74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778], + 75: [0, 0.68333, 0.01445, 0.05556, 0.76195], + 76: [0, 0.68333, 0, 0.13889, 0.68972], + 77: [0, 0.68333, 0, 0.13889, 1.2009], + 78: [0, 0.68333, 0.14736, 0.08334, 0.82049], + 79: [0, 0.68333, 0.02778, 0.11111, 0.79611], + 80: [0, 0.68333, 0.08222, 0.08334, 0.69556], + 81: [0.09722, 0.68333, 0, 0.11111, 0.81667], + 82: [0, 0.68333, 0, 0.08334, 0.8475], + 83: [0, 0.68333, 0.075, 0.13889, 0.60556], + 84: [0, 0.68333, 0.25417, 0, 0.54464], + 85: [0, 0.68333, 0.09931, 0.08334, 0.62583], + 86: [0, 0.68333, 0.08222, 0, 0.61278], + 87: [0, 0.68333, 0.08222, 0.08334, 0.98778], + 88: [0, 0.68333, 0.14643, 0.13889, 0.7133], + 89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834], + 90: [0, 0.68333, 0.07944, 0.13889, 0.72473], + 160: [0, 0, 0, 0, 0.25] + }, + "Fraktur-Regular": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69141, 0, 0, 0.29574], + 34: [0, 0.69141, 0, 0, 0.21471], + 38: [0, 0.69141, 0, 0, 0.73786], + 39: [0, 0.69141, 0, 0, 0.21201], + 40: [0.24982, 0.74947, 0, 0, 0.38865], + 41: [0.24982, 0.74947, 0, 0, 0.38865], + 42: [0, 0.62119, 0, 0, 0.27764], + 43: [0.08319, 0.58283, 0, 0, 0.75623], + 44: [0, 0.10803, 0, 0, 0.27764], + 45: [0.08319, 0.58283, 0, 0, 0.75623], + 46: [0, 0.10803, 0, 0, 0.27764], + 47: [0.24982, 0.74947, 0, 0, 0.50181], + 48: [0, 0.47534, 0, 0, 0.50181], + 49: [0, 0.47534, 0, 0, 0.50181], + 50: [0, 0.47534, 0, 0, 0.50181], + 51: [0.18906, 0.47534, 0, 0, 0.50181], + 52: [0.18906, 0.47534, 0, 0, 0.50181], + 53: [0.18906, 0.47534, 0, 0, 0.50181], + 54: [0, 0.69141, 0, 0, 0.50181], + 55: [0.18906, 0.47534, 0, 0, 0.50181], + 56: [0, 0.69141, 0, 0, 0.50181], + 57: [0.18906, 0.47534, 0, 0, 0.50181], + 58: [0, 0.47534, 0, 0, 0.21606], + 59: [0.12604, 0.47534, 0, 0, 0.21606], + 61: [-0.13099, 0.36866, 0, 0, 0.75623], + 63: [0, 0.69141, 0, 0, 0.36245], + 65: [0, 0.69141, 0, 0, 0.7176], + 66: [0, 0.69141, 0, 0, 0.88397], + 67: [0, 0.69141, 0, 0, 0.61254], + 68: [0, 0.69141, 0, 0, 0.83158], + 69: [0, 0.69141, 0, 0, 0.66278], + 70: [0.12604, 0.69141, 0, 0, 0.61119], + 71: [0, 0.69141, 0, 0, 0.78539], + 72: [0.06302, 0.69141, 0, 0, 0.7203], + 73: [0, 0.69141, 0, 0, 0.55448], + 74: [0.12604, 0.69141, 0, 0, 0.55231], + 75: [0, 0.69141, 0, 0, 0.66845], + 76: [0, 0.69141, 0, 0, 0.66602], + 77: [0, 0.69141, 0, 0, 1.04953], + 78: [0, 0.69141, 0, 0, 0.83212], + 79: [0, 0.69141, 0, 0, 0.82699], + 80: [0.18906, 0.69141, 0, 0, 0.82753], + 81: [0.03781, 0.69141, 0, 0, 0.82699], + 82: [0, 0.69141, 0, 0, 0.82807], + 83: [0, 0.69141, 0, 0, 0.82861], + 84: [0, 0.69141, 0, 0, 0.66899], + 85: [0, 0.69141, 0, 0, 0.64576], + 86: [0, 0.69141, 0, 0, 0.83131], + 87: [0, 0.69141, 0, 0, 1.04602], + 88: [0, 0.69141, 0, 0, 0.71922], + 89: [0.18906, 0.69141, 0, 0, 0.83293], + 90: [0.12604, 0.69141, 0, 0, 0.60201], + 91: [0.24982, 0.74947, 0, 0, 0.27764], + 93: [0.24982, 0.74947, 0, 0, 0.27764], + 94: [0, 0.69141, 0, 0, 0.49965], + 97: [0, 0.47534, 0, 0, 0.50046], + 98: [0, 0.69141, 0, 0, 0.51315], + 99: [0, 0.47534, 0, 0, 0.38946], + 100: [0, 0.62119, 0, 0, 0.49857], + 101: [0, 0.47534, 0, 0, 0.40053], + 102: [0.18906, 0.69141, 0, 0, 0.32626], + 103: [0.18906, 0.47534, 0, 0, 0.5037], + 104: [0.18906, 0.69141, 0, 0, 0.52126], + 105: [0, 0.69141, 0, 0, 0.27899], + 106: [0, 0.69141, 0, 0, 0.28088], + 107: [0, 0.69141, 0, 0, 0.38946], + 108: [0, 0.69141, 0, 0, 0.27953], + 109: [0, 0.47534, 0, 0, 0.76676], + 110: [0, 0.47534, 0, 0, 0.52666], + 111: [0, 0.47534, 0, 0, 0.48885], + 112: [0.18906, 0.52396, 0, 0, 0.50046], + 113: [0.18906, 0.47534, 0, 0, 0.48912], + 114: [0, 0.47534, 0, 0, 0.38919], + 115: [0, 0.47534, 0, 0, 0.44266], + 116: [0, 0.62119, 0, 0, 0.33301], + 117: [0, 0.47534, 0, 0, 0.5172], + 118: [0, 0.52396, 0, 0, 0.5118], + 119: [0, 0.52396, 0, 0, 0.77351], + 120: [0.18906, 0.47534, 0, 0, 0.38865], + 121: [0.18906, 0.47534, 0, 0, 0.49884], + 122: [0.18906, 0.47534, 0, 0, 0.39054], + 160: [0, 0, 0, 0, 0.25], + 8216: [0, 0.69141, 0, 0, 0.21471], + 8217: [0, 0.69141, 0, 0, 0.21471], + 58112: [0, 0.62119, 0, 0, 0.49749], + 58113: [0, 0.62119, 0, 0, 0.4983], + 58114: [0.18906, 0.69141, 0, 0, 0.33328], + 58115: [0.18906, 0.69141, 0, 0, 0.32923], + 58116: [0.18906, 0.47534, 0, 0, 0.50343], + 58117: [0, 0.69141, 0, 0, 0.33301], + 58118: [0, 0.62119, 0, 0, 0.33409], + 58119: [0, 0.47534, 0, 0, 0.50073] + }, + "Main-Bold": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.35], + 34: [0, 0.69444, 0, 0, 0.60278], + 35: [0.19444, 0.69444, 0, 0, 0.95833], + 36: [0.05556, 0.75, 0, 0, 0.575], + 37: [0.05556, 0.75, 0, 0, 0.95833], + 38: [0, 0.69444, 0, 0, 0.89444], + 39: [0, 0.69444, 0, 0, 0.31944], + 40: [0.25, 0.75, 0, 0, 0.44722], + 41: [0.25, 0.75, 0, 0, 0.44722], + 42: [0, 0.75, 0, 0, 0.575], + 43: [0.13333, 0.63333, 0, 0, 0.89444], + 44: [0.19444, 0.15556, 0, 0, 0.31944], + 45: [0, 0.44444, 0, 0, 0.38333], + 46: [0, 0.15556, 0, 0, 0.31944], + 47: [0.25, 0.75, 0, 0, 0.575], + 48: [0, 0.64444, 0, 0, 0.575], + 49: [0, 0.64444, 0, 0, 0.575], + 50: [0, 0.64444, 0, 0, 0.575], + 51: [0, 0.64444, 0, 0, 0.575], + 52: [0, 0.64444, 0, 0, 0.575], + 53: [0, 0.64444, 0, 0, 0.575], + 54: [0, 0.64444, 0, 0, 0.575], + 55: [0, 0.64444, 0, 0, 0.575], + 56: [0, 0.64444, 0, 0, 0.575], + 57: [0, 0.64444, 0, 0, 0.575], + 58: [0, 0.44444, 0, 0, 0.31944], + 59: [0.19444, 0.44444, 0, 0, 0.31944], + 60: [0.08556, 0.58556, 0, 0, 0.89444], + 61: [-0.10889, 0.39111, 0, 0, 0.89444], + 62: [0.08556, 0.58556, 0, 0, 0.89444], + 63: [0, 0.69444, 0, 0, 0.54305], + 64: [0, 0.69444, 0, 0, 0.89444], + 65: [0, 0.68611, 0, 0, 0.86944], + 66: [0, 0.68611, 0, 0, 0.81805], + 67: [0, 0.68611, 0, 0, 0.83055], + 68: [0, 0.68611, 0, 0, 0.88194], + 69: [0, 0.68611, 0, 0, 0.75555], + 70: [0, 0.68611, 0, 0, 0.72361], + 71: [0, 0.68611, 0, 0, 0.90416], + 72: [0, 0.68611, 0, 0, 0.9], + 73: [0, 0.68611, 0, 0, 0.43611], + 74: [0, 0.68611, 0, 0, 0.59444], + 75: [0, 0.68611, 0, 0, 0.90138], + 76: [0, 0.68611, 0, 0, 0.69166], + 77: [0, 0.68611, 0, 0, 1.09166], + 78: [0, 0.68611, 0, 0, 0.9], + 79: [0, 0.68611, 0, 0, 0.86388], + 80: [0, 0.68611, 0, 0, 0.78611], + 81: [0.19444, 0.68611, 0, 0, 0.86388], + 82: [0, 0.68611, 0, 0, 0.8625], + 83: [0, 0.68611, 0, 0, 0.63889], + 84: [0, 0.68611, 0, 0, 0.8], + 85: [0, 0.68611, 0, 0, 0.88472], + 86: [0, 0.68611, 0.01597, 0, 0.86944], + 87: [0, 0.68611, 0.01597, 0, 1.18888], + 88: [0, 0.68611, 0, 0, 0.86944], + 89: [0, 0.68611, 0.02875, 0, 0.86944], + 90: [0, 0.68611, 0, 0, 0.70277], + 91: [0.25, 0.75, 0, 0, 0.31944], + 92: [0.25, 0.75, 0, 0, 0.575], + 93: [0.25, 0.75, 0, 0, 0.31944], + 94: [0, 0.69444, 0, 0, 0.575], + 95: [0.31, 0.13444, 0.03194, 0, 0.575], + 97: [0, 0.44444, 0, 0, 0.55902], + 98: [0, 0.69444, 0, 0, 0.63889], + 99: [0, 0.44444, 0, 0, 0.51111], + 100: [0, 0.69444, 0, 0, 0.63889], + 101: [0, 0.44444, 0, 0, 0.52708], + 102: [0, 0.69444, 0.10903, 0, 0.35139], + 103: [0.19444, 0.44444, 0.01597, 0, 0.575], + 104: [0, 0.69444, 0, 0, 0.63889], + 105: [0, 0.69444, 0, 0, 0.31944], + 106: [0.19444, 0.69444, 0, 0, 0.35139], + 107: [0, 0.69444, 0, 0, 0.60694], + 108: [0, 0.69444, 0, 0, 0.31944], + 109: [0, 0.44444, 0, 0, 0.95833], + 110: [0, 0.44444, 0, 0, 0.63889], + 111: [0, 0.44444, 0, 0, 0.575], + 112: [0.19444, 0.44444, 0, 0, 0.63889], + 113: [0.19444, 0.44444, 0, 0, 0.60694], + 114: [0, 0.44444, 0, 0, 0.47361], + 115: [0, 0.44444, 0, 0, 0.45361], + 116: [0, 0.63492, 0, 0, 0.44722], + 117: [0, 0.44444, 0, 0, 0.63889], + 118: [0, 0.44444, 0.01597, 0, 0.60694], + 119: [0, 0.44444, 0.01597, 0, 0.83055], + 120: [0, 0.44444, 0, 0, 0.60694], + 121: [0.19444, 0.44444, 0.01597, 0, 0.60694], + 122: [0, 0.44444, 0, 0, 0.51111], + 123: [0.25, 0.75, 0, 0, 0.575], + 124: [0.25, 0.75, 0, 0, 0.31944], + 125: [0.25, 0.75, 0, 0, 0.575], + 126: [0.35, 0.34444, 0, 0, 0.575], + 160: [0, 0, 0, 0, 0.25], + 163: [0, 0.69444, 0, 0, 0.86853], + 168: [0, 0.69444, 0, 0, 0.575], + 172: [0, 0.44444, 0, 0, 0.76666], + 176: [0, 0.69444, 0, 0, 0.86944], + 177: [0.13333, 0.63333, 0, 0, 0.89444], + 184: [0.17014, 0, 0, 0, 0.51111], + 198: [0, 0.68611, 0, 0, 1.04166], + 215: [0.13333, 0.63333, 0, 0, 0.89444], + 216: [0.04861, 0.73472, 0, 0, 0.89444], + 223: [0, 0.69444, 0, 0, 0.59722], + 230: [0, 0.44444, 0, 0, 0.83055], + 247: [0.13333, 0.63333, 0, 0, 0.89444], + 248: [0.09722, 0.54167, 0, 0, 0.575], + 305: [0, 0.44444, 0, 0, 0.31944], + 338: [0, 0.68611, 0, 0, 1.16944], + 339: [0, 0.44444, 0, 0, 0.89444], + 567: [0.19444, 0.44444, 0, 0, 0.35139], + 710: [0, 0.69444, 0, 0, 0.575], + 711: [0, 0.63194, 0, 0, 0.575], + 713: [0, 0.59611, 0, 0, 0.575], + 714: [0, 0.69444, 0, 0, 0.575], + 715: [0, 0.69444, 0, 0, 0.575], + 728: [0, 0.69444, 0, 0, 0.575], + 729: [0, 0.69444, 0, 0, 0.31944], + 730: [0, 0.69444, 0, 0, 0.86944], + 732: [0, 0.69444, 0, 0, 0.575], + 733: [0, 0.69444, 0, 0, 0.575], + 915: [0, 0.68611, 0, 0, 0.69166], + 916: [0, 0.68611, 0, 0, 0.95833], + 920: [0, 0.68611, 0, 0, 0.89444], + 923: [0, 0.68611, 0, 0, 0.80555], + 926: [0, 0.68611, 0, 0, 0.76666], + 928: [0, 0.68611, 0, 0, 0.9], + 931: [0, 0.68611, 0, 0, 0.83055], + 933: [0, 0.68611, 0, 0, 0.89444], + 934: [0, 0.68611, 0, 0, 0.83055], + 936: [0, 0.68611, 0, 0, 0.89444], + 937: [0, 0.68611, 0, 0, 0.83055], + 8211: [0, 0.44444, 0.03194, 0, 0.575], + 8212: [0, 0.44444, 0.03194, 0, 1.14999], + 8216: [0, 0.69444, 0, 0, 0.31944], + 8217: [0, 0.69444, 0, 0, 0.31944], + 8220: [0, 0.69444, 0, 0, 0.60278], + 8221: [0, 0.69444, 0, 0, 0.60278], + 8224: [0.19444, 0.69444, 0, 0, 0.51111], + 8225: [0.19444, 0.69444, 0, 0, 0.51111], + 8242: [0, 0.55556, 0, 0, 0.34444], + 8407: [0, 0.72444, 0.15486, 0, 0.575], + 8463: [0, 0.69444, 0, 0, 0.66759], + 8465: [0, 0.69444, 0, 0, 0.83055], + 8467: [0, 0.69444, 0, 0, 0.47361], + 8472: [0.19444, 0.44444, 0, 0, 0.74027], + 8476: [0, 0.69444, 0, 0, 0.83055], + 8501: [0, 0.69444, 0, 0, 0.70277], + 8592: [-0.10889, 0.39111, 0, 0, 1.14999], + 8593: [0.19444, 0.69444, 0, 0, 0.575], + 8594: [-0.10889, 0.39111, 0, 0, 1.14999], + 8595: [0.19444, 0.69444, 0, 0, 0.575], + 8596: [-0.10889, 0.39111, 0, 0, 1.14999], + 8597: [0.25, 0.75, 0, 0, 0.575], + 8598: [0.19444, 0.69444, 0, 0, 1.14999], + 8599: [0.19444, 0.69444, 0, 0, 1.14999], + 8600: [0.19444, 0.69444, 0, 0, 1.14999], + 8601: [0.19444, 0.69444, 0, 0, 1.14999], + 8636: [-0.10889, 0.39111, 0, 0, 1.14999], + 8637: [-0.10889, 0.39111, 0, 0, 1.14999], + 8640: [-0.10889, 0.39111, 0, 0, 1.14999], + 8641: [-0.10889, 0.39111, 0, 0, 1.14999], + 8656: [-0.10889, 0.39111, 0, 0, 1.14999], + 8657: [0.19444, 0.69444, 0, 0, 0.70277], + 8658: [-0.10889, 0.39111, 0, 0, 1.14999], + 8659: [0.19444, 0.69444, 0, 0, 0.70277], + 8660: [-0.10889, 0.39111, 0, 0, 1.14999], + 8661: [0.25, 0.75, 0, 0, 0.70277], + 8704: [0, 0.69444, 0, 0, 0.63889], + 8706: [0, 0.69444, 0.06389, 0, 0.62847], + 8707: [0, 0.69444, 0, 0, 0.63889], + 8709: [0.05556, 0.75, 0, 0, 0.575], + 8711: [0, 0.68611, 0, 0, 0.95833], + 8712: [0.08556, 0.58556, 0, 0, 0.76666], + 8715: [0.08556, 0.58556, 0, 0, 0.76666], + 8722: [0.13333, 0.63333, 0, 0, 0.89444], + 8723: [0.13333, 0.63333, 0, 0, 0.89444], + 8725: [0.25, 0.75, 0, 0, 0.575], + 8726: [0.25, 0.75, 0, 0, 0.575], + 8727: [-0.02778, 0.47222, 0, 0, 0.575], + 8728: [-0.02639, 0.47361, 0, 0, 0.575], + 8729: [-0.02639, 0.47361, 0, 0, 0.575], + 8730: [0.18, 0.82, 0, 0, 0.95833], + 8733: [0, 0.44444, 0, 0, 0.89444], + 8734: [0, 0.44444, 0, 0, 1.14999], + 8736: [0, 0.69224, 0, 0, 0.72222], + 8739: [0.25, 0.75, 0, 0, 0.31944], + 8741: [0.25, 0.75, 0, 0, 0.575], + 8743: [0, 0.55556, 0, 0, 0.76666], + 8744: [0, 0.55556, 0, 0, 0.76666], + 8745: [0, 0.55556, 0, 0, 0.76666], + 8746: [0, 0.55556, 0, 0, 0.76666], + 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875], + 8764: [-0.10889, 0.39111, 0, 0, 0.89444], + 8768: [0.19444, 0.69444, 0, 0, 0.31944], + 8771: [222e-5, 0.50222, 0, 0, 0.89444], + 8773: [0.027, 0.638, 0, 0, 0.894], + 8776: [0.02444, 0.52444, 0, 0, 0.89444], + 8781: [222e-5, 0.50222, 0, 0, 0.89444], + 8801: [222e-5, 0.50222, 0, 0, 0.89444], + 8804: [0.19667, 0.69667, 0, 0, 0.89444], + 8805: [0.19667, 0.69667, 0, 0, 0.89444], + 8810: [0.08556, 0.58556, 0, 0, 1.14999], + 8811: [0.08556, 0.58556, 0, 0, 1.14999], + 8826: [0.08556, 0.58556, 0, 0, 0.89444], + 8827: [0.08556, 0.58556, 0, 0, 0.89444], + 8834: [0.08556, 0.58556, 0, 0, 0.89444], + 8835: [0.08556, 0.58556, 0, 0, 0.89444], + 8838: [0.19667, 0.69667, 0, 0, 0.89444], + 8839: [0.19667, 0.69667, 0, 0, 0.89444], + 8846: [0, 0.55556, 0, 0, 0.76666], + 8849: [0.19667, 0.69667, 0, 0, 0.89444], + 8850: [0.19667, 0.69667, 0, 0, 0.89444], + 8851: [0, 0.55556, 0, 0, 0.76666], + 8852: [0, 0.55556, 0, 0, 0.76666], + 8853: [0.13333, 0.63333, 0, 0, 0.89444], + 8854: [0.13333, 0.63333, 0, 0, 0.89444], + 8855: [0.13333, 0.63333, 0, 0, 0.89444], + 8856: [0.13333, 0.63333, 0, 0, 0.89444], + 8857: [0.13333, 0.63333, 0, 0, 0.89444], + 8866: [0, 0.69444, 0, 0, 0.70277], + 8867: [0, 0.69444, 0, 0, 0.70277], + 8868: [0, 0.69444, 0, 0, 0.89444], + 8869: [0, 0.69444, 0, 0, 0.89444], + 8900: [-0.02639, 0.47361, 0, 0, 0.575], + 8901: [-0.02639, 0.47361, 0, 0, 0.31944], + 8902: [-0.02778, 0.47222, 0, 0, 0.575], + 8968: [0.25, 0.75, 0, 0, 0.51111], + 8969: [0.25, 0.75, 0, 0, 0.51111], + 8970: [0.25, 0.75, 0, 0, 0.51111], + 8971: [0.25, 0.75, 0, 0, 0.51111], + 8994: [-0.13889, 0.36111, 0, 0, 1.14999], + 8995: [-0.13889, 0.36111, 0, 0, 1.14999], + 9651: [0.19444, 0.69444, 0, 0, 1.02222], + 9657: [-0.02778, 0.47222, 0, 0, 0.575], + 9661: [0.19444, 0.69444, 0, 0, 1.02222], + 9667: [-0.02778, 0.47222, 0, 0, 0.575], + 9711: [0.19444, 0.69444, 0, 0, 1.14999], + 9824: [0.12963, 0.69444, 0, 0, 0.89444], + 9825: [0.12963, 0.69444, 0, 0, 0.89444], + 9826: [0.12963, 0.69444, 0, 0, 0.89444], + 9827: [0.12963, 0.69444, 0, 0, 0.89444], + 9837: [0, 0.75, 0, 0, 0.44722], + 9838: [0.19444, 0.69444, 0, 0, 0.44722], + 9839: [0.19444, 0.69444, 0, 0, 0.44722], + 10216: [0.25, 0.75, 0, 0, 0.44722], + 10217: [0.25, 0.75, 0, 0, 0.44722], + 10815: [0, 0.68611, 0, 0, 0.9], + 10927: [0.19667, 0.69667, 0, 0, 0.89444], + 10928: [0.19667, 0.69667, 0, 0, 0.89444], + 57376: [0.19444, 0.69444, 0, 0, 0] + }, + "Main-BoldItalic": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0.11417, 0, 0.38611], + 34: [0, 0.69444, 0.07939, 0, 0.62055], + 35: [0.19444, 0.69444, 0.06833, 0, 0.94444], + 37: [0.05556, 0.75, 0.12861, 0, 0.94444], + 38: [0, 0.69444, 0.08528, 0, 0.88555], + 39: [0, 0.69444, 0.12945, 0, 0.35555], + 40: [0.25, 0.75, 0.15806, 0, 0.47333], + 41: [0.25, 0.75, 0.03306, 0, 0.47333], + 42: [0, 0.75, 0.14333, 0, 0.59111], + 43: [0.10333, 0.60333, 0.03306, 0, 0.88555], + 44: [0.19444, 0.14722, 0, 0, 0.35555], + 45: [0, 0.44444, 0.02611, 0, 0.41444], + 46: [0, 0.14722, 0, 0, 0.35555], + 47: [0.25, 0.75, 0.15806, 0, 0.59111], + 48: [0, 0.64444, 0.13167, 0, 0.59111], + 49: [0, 0.64444, 0.13167, 0, 0.59111], + 50: [0, 0.64444, 0.13167, 0, 0.59111], + 51: [0, 0.64444, 0.13167, 0, 0.59111], + 52: [0.19444, 0.64444, 0.13167, 0, 0.59111], + 53: [0, 0.64444, 0.13167, 0, 0.59111], + 54: [0, 0.64444, 0.13167, 0, 0.59111], + 55: [0.19444, 0.64444, 0.13167, 0, 0.59111], + 56: [0, 0.64444, 0.13167, 0, 0.59111], + 57: [0, 0.64444, 0.13167, 0, 0.59111], + 58: [0, 0.44444, 0.06695, 0, 0.35555], + 59: [0.19444, 0.44444, 0.06695, 0, 0.35555], + 61: [-0.10889, 0.39111, 0.06833, 0, 0.88555], + 63: [0, 0.69444, 0.11472, 0, 0.59111], + 64: [0, 0.69444, 0.09208, 0, 0.88555], + 65: [0, 0.68611, 0, 0, 0.86555], + 66: [0, 0.68611, 0.0992, 0, 0.81666], + 67: [0, 0.68611, 0.14208, 0, 0.82666], + 68: [0, 0.68611, 0.09062, 0, 0.87555], + 69: [0, 0.68611, 0.11431, 0, 0.75666], + 70: [0, 0.68611, 0.12903, 0, 0.72722], + 71: [0, 0.68611, 0.07347, 0, 0.89527], + 72: [0, 0.68611, 0.17208, 0, 0.8961], + 73: [0, 0.68611, 0.15681, 0, 0.47166], + 74: [0, 0.68611, 0.145, 0, 0.61055], + 75: [0, 0.68611, 0.14208, 0, 0.89499], + 76: [0, 0.68611, 0, 0, 0.69777], + 77: [0, 0.68611, 0.17208, 0, 1.07277], + 78: [0, 0.68611, 0.17208, 0, 0.8961], + 79: [0, 0.68611, 0.09062, 0, 0.85499], + 80: [0, 0.68611, 0.0992, 0, 0.78721], + 81: [0.19444, 0.68611, 0.09062, 0, 0.85499], + 82: [0, 0.68611, 0.02559, 0, 0.85944], + 83: [0, 0.68611, 0.11264, 0, 0.64999], + 84: [0, 0.68611, 0.12903, 0, 0.7961], + 85: [0, 0.68611, 0.17208, 0, 0.88083], + 86: [0, 0.68611, 0.18625, 0, 0.86555], + 87: [0, 0.68611, 0.18625, 0, 1.15999], + 88: [0, 0.68611, 0.15681, 0, 0.86555], + 89: [0, 0.68611, 0.19803, 0, 0.86555], + 90: [0, 0.68611, 0.14208, 0, 0.70888], + 91: [0.25, 0.75, 0.1875, 0, 0.35611], + 93: [0.25, 0.75, 0.09972, 0, 0.35611], + 94: [0, 0.69444, 0.06709, 0, 0.59111], + 95: [0.31, 0.13444, 0.09811, 0, 0.59111], + 97: [0, 0.44444, 0.09426, 0, 0.59111], + 98: [0, 0.69444, 0.07861, 0, 0.53222], + 99: [0, 0.44444, 0.05222, 0, 0.53222], + 100: [0, 0.69444, 0.10861, 0, 0.59111], + 101: [0, 0.44444, 0.085, 0, 0.53222], + 102: [0.19444, 0.69444, 0.21778, 0, 0.4], + 103: [0.19444, 0.44444, 0.105, 0, 0.53222], + 104: [0, 0.69444, 0.09426, 0, 0.59111], + 105: [0, 0.69326, 0.11387, 0, 0.35555], + 106: [0.19444, 0.69326, 0.1672, 0, 0.35555], + 107: [0, 0.69444, 0.11111, 0, 0.53222], + 108: [0, 0.69444, 0.10861, 0, 0.29666], + 109: [0, 0.44444, 0.09426, 0, 0.94444], + 110: [0, 0.44444, 0.09426, 0, 0.64999], + 111: [0, 0.44444, 0.07861, 0, 0.59111], + 112: [0.19444, 0.44444, 0.07861, 0, 0.59111], + 113: [0.19444, 0.44444, 0.105, 0, 0.53222], + 114: [0, 0.44444, 0.11111, 0, 0.50167], + 115: [0, 0.44444, 0.08167, 0, 0.48694], + 116: [0, 0.63492, 0.09639, 0, 0.385], + 117: [0, 0.44444, 0.09426, 0, 0.62055], + 118: [0, 0.44444, 0.11111, 0, 0.53222], + 119: [0, 0.44444, 0.11111, 0, 0.76777], + 120: [0, 0.44444, 0.12583, 0, 0.56055], + 121: [0.19444, 0.44444, 0.105, 0, 0.56166], + 122: [0, 0.44444, 0.13889, 0, 0.49055], + 126: [0.35, 0.34444, 0.11472, 0, 0.59111], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.69444, 0.11473, 0, 0.59111], + 176: [0, 0.69444, 0, 0, 0.94888], + 184: [0.17014, 0, 0, 0, 0.53222], + 198: [0, 0.68611, 0.11431, 0, 1.02277], + 216: [0.04861, 0.73472, 0.09062, 0, 0.88555], + 223: [0.19444, 0.69444, 0.09736, 0, 0.665], + 230: [0, 0.44444, 0.085, 0, 0.82666], + 248: [0.09722, 0.54167, 0.09458, 0, 0.59111], + 305: [0, 0.44444, 0.09426, 0, 0.35555], + 338: [0, 0.68611, 0.11431, 0, 1.14054], + 339: [0, 0.44444, 0.085, 0, 0.82666], + 567: [0.19444, 0.44444, 0.04611, 0, 0.385], + 710: [0, 0.69444, 0.06709, 0, 0.59111], + 711: [0, 0.63194, 0.08271, 0, 0.59111], + 713: [0, 0.59444, 0.10444, 0, 0.59111], + 714: [0, 0.69444, 0.08528, 0, 0.59111], + 715: [0, 0.69444, 0, 0, 0.59111], + 728: [0, 0.69444, 0.10333, 0, 0.59111], + 729: [0, 0.69444, 0.12945, 0, 0.35555], + 730: [0, 0.69444, 0, 0, 0.94888], + 732: [0, 0.69444, 0.11472, 0, 0.59111], + 733: [0, 0.69444, 0.11472, 0, 0.59111], + 915: [0, 0.68611, 0.12903, 0, 0.69777], + 916: [0, 0.68611, 0, 0, 0.94444], + 920: [0, 0.68611, 0.09062, 0, 0.88555], + 923: [0, 0.68611, 0, 0, 0.80666], + 926: [0, 0.68611, 0.15092, 0, 0.76777], + 928: [0, 0.68611, 0.17208, 0, 0.8961], + 931: [0, 0.68611, 0.11431, 0, 0.82666], + 933: [0, 0.68611, 0.10778, 0, 0.88555], + 934: [0, 0.68611, 0.05632, 0, 0.82666], + 936: [0, 0.68611, 0.10778, 0, 0.88555], + 937: [0, 0.68611, 0.0992, 0, 0.82666], + 8211: [0, 0.44444, 0.09811, 0, 0.59111], + 8212: [0, 0.44444, 0.09811, 0, 1.18221], + 8216: [0, 0.69444, 0.12945, 0, 0.35555], + 8217: [0, 0.69444, 0.12945, 0, 0.35555], + 8220: [0, 0.69444, 0.16772, 0, 0.62055], + 8221: [0, 0.69444, 0.07939, 0, 0.62055] + }, + "Main-Italic": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0.12417, 0, 0.30667], + 34: [0, 0.69444, 0.06961, 0, 0.51444], + 35: [0.19444, 0.69444, 0.06616, 0, 0.81777], + 37: [0.05556, 0.75, 0.13639, 0, 0.81777], + 38: [0, 0.69444, 0.09694, 0, 0.76666], + 39: [0, 0.69444, 0.12417, 0, 0.30667], + 40: [0.25, 0.75, 0.16194, 0, 0.40889], + 41: [0.25, 0.75, 0.03694, 0, 0.40889], + 42: [0, 0.75, 0.14917, 0, 0.51111], + 43: [0.05667, 0.56167, 0.03694, 0, 0.76666], + 44: [0.19444, 0.10556, 0, 0, 0.30667], + 45: [0, 0.43056, 0.02826, 0, 0.35778], + 46: [0, 0.10556, 0, 0, 0.30667], + 47: [0.25, 0.75, 0.16194, 0, 0.51111], + 48: [0, 0.64444, 0.13556, 0, 0.51111], + 49: [0, 0.64444, 0.13556, 0, 0.51111], + 50: [0, 0.64444, 0.13556, 0, 0.51111], + 51: [0, 0.64444, 0.13556, 0, 0.51111], + 52: [0.19444, 0.64444, 0.13556, 0, 0.51111], + 53: [0, 0.64444, 0.13556, 0, 0.51111], + 54: [0, 0.64444, 0.13556, 0, 0.51111], + 55: [0.19444, 0.64444, 0.13556, 0, 0.51111], + 56: [0, 0.64444, 0.13556, 0, 0.51111], + 57: [0, 0.64444, 0.13556, 0, 0.51111], + 58: [0, 0.43056, 0.0582, 0, 0.30667], + 59: [0.19444, 0.43056, 0.0582, 0, 0.30667], + 61: [-0.13313, 0.36687, 0.06616, 0, 0.76666], + 63: [0, 0.69444, 0.1225, 0, 0.51111], + 64: [0, 0.69444, 0.09597, 0, 0.76666], + 65: [0, 0.68333, 0, 0, 0.74333], + 66: [0, 0.68333, 0.10257, 0, 0.70389], + 67: [0, 0.68333, 0.14528, 0, 0.71555], + 68: [0, 0.68333, 0.09403, 0, 0.755], + 69: [0, 0.68333, 0.12028, 0, 0.67833], + 70: [0, 0.68333, 0.13305, 0, 0.65277], + 71: [0, 0.68333, 0.08722, 0, 0.77361], + 72: [0, 0.68333, 0.16389, 0, 0.74333], + 73: [0, 0.68333, 0.15806, 0, 0.38555], + 74: [0, 0.68333, 0.14028, 0, 0.525], + 75: [0, 0.68333, 0.14528, 0, 0.76888], + 76: [0, 0.68333, 0, 0, 0.62722], + 77: [0, 0.68333, 0.16389, 0, 0.89666], + 78: [0, 0.68333, 0.16389, 0, 0.74333], + 79: [0, 0.68333, 0.09403, 0, 0.76666], + 80: [0, 0.68333, 0.10257, 0, 0.67833], + 81: [0.19444, 0.68333, 0.09403, 0, 0.76666], + 82: [0, 0.68333, 0.03868, 0, 0.72944], + 83: [0, 0.68333, 0.11972, 0, 0.56222], + 84: [0, 0.68333, 0.13305, 0, 0.71555], + 85: [0, 0.68333, 0.16389, 0, 0.74333], + 86: [0, 0.68333, 0.18361, 0, 0.74333], + 87: [0, 0.68333, 0.18361, 0, 0.99888], + 88: [0, 0.68333, 0.15806, 0, 0.74333], + 89: [0, 0.68333, 0.19383, 0, 0.74333], + 90: [0, 0.68333, 0.14528, 0, 0.61333], + 91: [0.25, 0.75, 0.1875, 0, 0.30667], + 93: [0.25, 0.75, 0.10528, 0, 0.30667], + 94: [0, 0.69444, 0.06646, 0, 0.51111], + 95: [0.31, 0.12056, 0.09208, 0, 0.51111], + 97: [0, 0.43056, 0.07671, 0, 0.51111], + 98: [0, 0.69444, 0.06312, 0, 0.46], + 99: [0, 0.43056, 0.05653, 0, 0.46], + 100: [0, 0.69444, 0.10333, 0, 0.51111], + 101: [0, 0.43056, 0.07514, 0, 0.46], + 102: [0.19444, 0.69444, 0.21194, 0, 0.30667], + 103: [0.19444, 0.43056, 0.08847, 0, 0.46], + 104: [0, 0.69444, 0.07671, 0, 0.51111], + 105: [0, 0.65536, 0.1019, 0, 0.30667], + 106: [0.19444, 0.65536, 0.14467, 0, 0.30667], + 107: [0, 0.69444, 0.10764, 0, 0.46], + 108: [0, 0.69444, 0.10333, 0, 0.25555], + 109: [0, 0.43056, 0.07671, 0, 0.81777], + 110: [0, 0.43056, 0.07671, 0, 0.56222], + 111: [0, 0.43056, 0.06312, 0, 0.51111], + 112: [0.19444, 0.43056, 0.06312, 0, 0.51111], + 113: [0.19444, 0.43056, 0.08847, 0, 0.46], + 114: [0, 0.43056, 0.10764, 0, 0.42166], + 115: [0, 0.43056, 0.08208, 0, 0.40889], + 116: [0, 0.61508, 0.09486, 0, 0.33222], + 117: [0, 0.43056, 0.07671, 0, 0.53666], + 118: [0, 0.43056, 0.10764, 0, 0.46], + 119: [0, 0.43056, 0.10764, 0, 0.66444], + 120: [0, 0.43056, 0.12042, 0, 0.46389], + 121: [0.19444, 0.43056, 0.08847, 0, 0.48555], + 122: [0, 0.43056, 0.12292, 0, 0.40889], + 126: [0.35, 0.31786, 0.11585, 0, 0.51111], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.66786, 0.10474, 0, 0.51111], + 176: [0, 0.69444, 0, 0, 0.83129], + 184: [0.17014, 0, 0, 0, 0.46], + 198: [0, 0.68333, 0.12028, 0, 0.88277], + 216: [0.04861, 0.73194, 0.09403, 0, 0.76666], + 223: [0.19444, 0.69444, 0.10514, 0, 0.53666], + 230: [0, 0.43056, 0.07514, 0, 0.71555], + 248: [0.09722, 0.52778, 0.09194, 0, 0.51111], + 338: [0, 0.68333, 0.12028, 0, 0.98499], + 339: [0, 0.43056, 0.07514, 0, 0.71555], + 710: [0, 0.69444, 0.06646, 0, 0.51111], + 711: [0, 0.62847, 0.08295, 0, 0.51111], + 713: [0, 0.56167, 0.10333, 0, 0.51111], + 714: [0, 0.69444, 0.09694, 0, 0.51111], + 715: [0, 0.69444, 0, 0, 0.51111], + 728: [0, 0.69444, 0.10806, 0, 0.51111], + 729: [0, 0.66786, 0.11752, 0, 0.30667], + 730: [0, 0.69444, 0, 0, 0.83129], + 732: [0, 0.66786, 0.11585, 0, 0.51111], + 733: [0, 0.69444, 0.1225, 0, 0.51111], + 915: [0, 0.68333, 0.13305, 0, 0.62722], + 916: [0, 0.68333, 0, 0, 0.81777], + 920: [0, 0.68333, 0.09403, 0, 0.76666], + 923: [0, 0.68333, 0, 0, 0.69222], + 926: [0, 0.68333, 0.15294, 0, 0.66444], + 928: [0, 0.68333, 0.16389, 0, 0.74333], + 931: [0, 0.68333, 0.12028, 0, 0.71555], + 933: [0, 0.68333, 0.11111, 0, 0.76666], + 934: [0, 0.68333, 0.05986, 0, 0.71555], + 936: [0, 0.68333, 0.11111, 0, 0.76666], + 937: [0, 0.68333, 0.10257, 0, 0.71555], + 8211: [0, 0.43056, 0.09208, 0, 0.51111], + 8212: [0, 0.43056, 0.09208, 0, 1.02222], + 8216: [0, 0.69444, 0.12417, 0, 0.30667], + 8217: [0, 0.69444, 0.12417, 0, 0.30667], + 8220: [0, 0.69444, 0.1685, 0, 0.51444], + 8221: [0, 0.69444, 0.06961, 0, 0.51444], + 8463: [0, 0.68889, 0, 0, 0.54028] + }, + "Main-Regular": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.27778], + 34: [0, 0.69444, 0, 0, 0.5], + 35: [0.19444, 0.69444, 0, 0, 0.83334], + 36: [0.05556, 0.75, 0, 0, 0.5], + 37: [0.05556, 0.75, 0, 0, 0.83334], + 38: [0, 0.69444, 0, 0, 0.77778], + 39: [0, 0.69444, 0, 0, 0.27778], + 40: [0.25, 0.75, 0, 0, 0.38889], + 41: [0.25, 0.75, 0, 0, 0.38889], + 42: [0, 0.75, 0, 0, 0.5], + 43: [0.08333, 0.58333, 0, 0, 0.77778], + 44: [0.19444, 0.10556, 0, 0, 0.27778], + 45: [0, 0.43056, 0, 0, 0.33333], + 46: [0, 0.10556, 0, 0, 0.27778], + 47: [0.25, 0.75, 0, 0, 0.5], + 48: [0, 0.64444, 0, 0, 0.5], + 49: [0, 0.64444, 0, 0, 0.5], + 50: [0, 0.64444, 0, 0, 0.5], + 51: [0, 0.64444, 0, 0, 0.5], + 52: [0, 0.64444, 0, 0, 0.5], + 53: [0, 0.64444, 0, 0, 0.5], + 54: [0, 0.64444, 0, 0, 0.5], + 55: [0, 0.64444, 0, 0, 0.5], + 56: [0, 0.64444, 0, 0, 0.5], + 57: [0, 0.64444, 0, 0, 0.5], + 58: [0, 0.43056, 0, 0, 0.27778], + 59: [0.19444, 0.43056, 0, 0, 0.27778], + 60: [0.0391, 0.5391, 0, 0, 0.77778], + 61: [-0.13313, 0.36687, 0, 0, 0.77778], + 62: [0.0391, 0.5391, 0, 0, 0.77778], + 63: [0, 0.69444, 0, 0, 0.47222], + 64: [0, 0.69444, 0, 0, 0.77778], + 65: [0, 0.68333, 0, 0, 0.75], + 66: [0, 0.68333, 0, 0, 0.70834], + 67: [0, 0.68333, 0, 0, 0.72222], + 68: [0, 0.68333, 0, 0, 0.76389], + 69: [0, 0.68333, 0, 0, 0.68056], + 70: [0, 0.68333, 0, 0, 0.65278], + 71: [0, 0.68333, 0, 0, 0.78472], + 72: [0, 0.68333, 0, 0, 0.75], + 73: [0, 0.68333, 0, 0, 0.36111], + 74: [0, 0.68333, 0, 0, 0.51389], + 75: [0, 0.68333, 0, 0, 0.77778], + 76: [0, 0.68333, 0, 0, 0.625], + 77: [0, 0.68333, 0, 0, 0.91667], + 78: [0, 0.68333, 0, 0, 0.75], + 79: [0, 0.68333, 0, 0, 0.77778], + 80: [0, 0.68333, 0, 0, 0.68056], + 81: [0.19444, 0.68333, 0, 0, 0.77778], + 82: [0, 0.68333, 0, 0, 0.73611], + 83: [0, 0.68333, 0, 0, 0.55556], + 84: [0, 0.68333, 0, 0, 0.72222], + 85: [0, 0.68333, 0, 0, 0.75], + 86: [0, 0.68333, 0.01389, 0, 0.75], + 87: [0, 0.68333, 0.01389, 0, 1.02778], + 88: [0, 0.68333, 0, 0, 0.75], + 89: [0, 0.68333, 0.025, 0, 0.75], + 90: [0, 0.68333, 0, 0, 0.61111], + 91: [0.25, 0.75, 0, 0, 0.27778], + 92: [0.25, 0.75, 0, 0, 0.5], + 93: [0.25, 0.75, 0, 0, 0.27778], + 94: [0, 0.69444, 0, 0, 0.5], + 95: [0.31, 0.12056, 0.02778, 0, 0.5], + 97: [0, 0.43056, 0, 0, 0.5], + 98: [0, 0.69444, 0, 0, 0.55556], + 99: [0, 0.43056, 0, 0, 0.44445], + 100: [0, 0.69444, 0, 0, 0.55556], + 101: [0, 0.43056, 0, 0, 0.44445], + 102: [0, 0.69444, 0.07778, 0, 0.30556], + 103: [0.19444, 0.43056, 0.01389, 0, 0.5], + 104: [0, 0.69444, 0, 0, 0.55556], + 105: [0, 0.66786, 0, 0, 0.27778], + 106: [0.19444, 0.66786, 0, 0, 0.30556], + 107: [0, 0.69444, 0, 0, 0.52778], + 108: [0, 0.69444, 0, 0, 0.27778], + 109: [0, 0.43056, 0, 0, 0.83334], + 110: [0, 0.43056, 0, 0, 0.55556], + 111: [0, 0.43056, 0, 0, 0.5], + 112: [0.19444, 0.43056, 0, 0, 0.55556], + 113: [0.19444, 0.43056, 0, 0, 0.52778], + 114: [0, 0.43056, 0, 0, 0.39167], + 115: [0, 0.43056, 0, 0, 0.39445], + 116: [0, 0.61508, 0, 0, 0.38889], + 117: [0, 0.43056, 0, 0, 0.55556], + 118: [0, 0.43056, 0.01389, 0, 0.52778], + 119: [0, 0.43056, 0.01389, 0, 0.72222], + 120: [0, 0.43056, 0, 0, 0.52778], + 121: [0.19444, 0.43056, 0.01389, 0, 0.52778], + 122: [0, 0.43056, 0, 0, 0.44445], + 123: [0.25, 0.75, 0, 0, 0.5], + 124: [0.25, 0.75, 0, 0, 0.27778], + 125: [0.25, 0.75, 0, 0, 0.5], + 126: [0.35, 0.31786, 0, 0, 0.5], + 160: [0, 0, 0, 0, 0.25], + 163: [0, 0.69444, 0, 0, 0.76909], + 167: [0.19444, 0.69444, 0, 0, 0.44445], + 168: [0, 0.66786, 0, 0, 0.5], + 172: [0, 0.43056, 0, 0, 0.66667], + 176: [0, 0.69444, 0, 0, 0.75], + 177: [0.08333, 0.58333, 0, 0, 0.77778], + 182: [0.19444, 0.69444, 0, 0, 0.61111], + 184: [0.17014, 0, 0, 0, 0.44445], + 198: [0, 0.68333, 0, 0, 0.90278], + 215: [0.08333, 0.58333, 0, 0, 0.77778], + 216: [0.04861, 0.73194, 0, 0, 0.77778], + 223: [0, 0.69444, 0, 0, 0.5], + 230: [0, 0.43056, 0, 0, 0.72222], + 247: [0.08333, 0.58333, 0, 0, 0.77778], + 248: [0.09722, 0.52778, 0, 0, 0.5], + 305: [0, 0.43056, 0, 0, 0.27778], + 338: [0, 0.68333, 0, 0, 1.01389], + 339: [0, 0.43056, 0, 0, 0.77778], + 567: [0.19444, 0.43056, 0, 0, 0.30556], + 710: [0, 0.69444, 0, 0, 0.5], + 711: [0, 0.62847, 0, 0, 0.5], + 713: [0, 0.56778, 0, 0, 0.5], + 714: [0, 0.69444, 0, 0, 0.5], + 715: [0, 0.69444, 0, 0, 0.5], + 728: [0, 0.69444, 0, 0, 0.5], + 729: [0, 0.66786, 0, 0, 0.27778], + 730: [0, 0.69444, 0, 0, 0.75], + 732: [0, 0.66786, 0, 0, 0.5], + 733: [0, 0.69444, 0, 0, 0.5], + 915: [0, 0.68333, 0, 0, 0.625], + 916: [0, 0.68333, 0, 0, 0.83334], + 920: [0, 0.68333, 0, 0, 0.77778], + 923: [0, 0.68333, 0, 0, 0.69445], + 926: [0, 0.68333, 0, 0, 0.66667], + 928: [0, 0.68333, 0, 0, 0.75], + 931: [0, 0.68333, 0, 0, 0.72222], + 933: [0, 0.68333, 0, 0, 0.77778], + 934: [0, 0.68333, 0, 0, 0.72222], + 936: [0, 0.68333, 0, 0, 0.77778], + 937: [0, 0.68333, 0, 0, 0.72222], + 8211: [0, 0.43056, 0.02778, 0, 0.5], + 8212: [0, 0.43056, 0.02778, 0, 1], + 8216: [0, 0.69444, 0, 0, 0.27778], + 8217: [0, 0.69444, 0, 0, 0.27778], + 8220: [0, 0.69444, 0, 0, 0.5], + 8221: [0, 0.69444, 0, 0, 0.5], + 8224: [0.19444, 0.69444, 0, 0, 0.44445], + 8225: [0.19444, 0.69444, 0, 0, 0.44445], + 8230: [0, 0.123, 0, 0, 1.172], + 8242: [0, 0.55556, 0, 0, 0.275], + 8407: [0, 0.71444, 0.15382, 0, 0.5], + 8463: [0, 0.68889, 0, 0, 0.54028], + 8465: [0, 0.69444, 0, 0, 0.72222], + 8467: [0, 0.69444, 0, 0.11111, 0.41667], + 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646], + 8476: [0, 0.69444, 0, 0, 0.72222], + 8501: [0, 0.69444, 0, 0, 0.61111], + 8592: [-0.13313, 0.36687, 0, 0, 1], + 8593: [0.19444, 0.69444, 0, 0, 0.5], + 8594: [-0.13313, 0.36687, 0, 0, 1], + 8595: [0.19444, 0.69444, 0, 0, 0.5], + 8596: [-0.13313, 0.36687, 0, 0, 1], + 8597: [0.25, 0.75, 0, 0, 0.5], + 8598: [0.19444, 0.69444, 0, 0, 1], + 8599: [0.19444, 0.69444, 0, 0, 1], + 8600: [0.19444, 0.69444, 0, 0, 1], + 8601: [0.19444, 0.69444, 0, 0, 1], + 8614: [0.011, 0.511, 0, 0, 1], + 8617: [0.011, 0.511, 0, 0, 1.126], + 8618: [0.011, 0.511, 0, 0, 1.126], + 8636: [-0.13313, 0.36687, 0, 0, 1], + 8637: [-0.13313, 0.36687, 0, 0, 1], + 8640: [-0.13313, 0.36687, 0, 0, 1], + 8641: [-0.13313, 0.36687, 0, 0, 1], + 8652: [0.011, 0.671, 0, 0, 1], + 8656: [-0.13313, 0.36687, 0, 0, 1], + 8657: [0.19444, 0.69444, 0, 0, 0.61111], + 8658: [-0.13313, 0.36687, 0, 0, 1], + 8659: [0.19444, 0.69444, 0, 0, 0.61111], + 8660: [-0.13313, 0.36687, 0, 0, 1], + 8661: [0.25, 0.75, 0, 0, 0.61111], + 8704: [0, 0.69444, 0, 0, 0.55556], + 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309], + 8707: [0, 0.69444, 0, 0, 0.55556], + 8709: [0.05556, 0.75, 0, 0, 0.5], + 8711: [0, 0.68333, 0, 0, 0.83334], + 8712: [0.0391, 0.5391, 0, 0, 0.66667], + 8715: [0.0391, 0.5391, 0, 0, 0.66667], + 8722: [0.08333, 0.58333, 0, 0, 0.77778], + 8723: [0.08333, 0.58333, 0, 0, 0.77778], + 8725: [0.25, 0.75, 0, 0, 0.5], + 8726: [0.25, 0.75, 0, 0, 0.5], + 8727: [-0.03472, 0.46528, 0, 0, 0.5], + 8728: [-0.05555, 0.44445, 0, 0, 0.5], + 8729: [-0.05555, 0.44445, 0, 0, 0.5], + 8730: [0.2, 0.8, 0, 0, 0.83334], + 8733: [0, 0.43056, 0, 0, 0.77778], + 8734: [0, 0.43056, 0, 0, 1], + 8736: [0, 0.69224, 0, 0, 0.72222], + 8739: [0.25, 0.75, 0, 0, 0.27778], + 8741: [0.25, 0.75, 0, 0, 0.5], + 8743: [0, 0.55556, 0, 0, 0.66667], + 8744: [0, 0.55556, 0, 0, 0.66667], + 8745: [0, 0.55556, 0, 0, 0.66667], + 8746: [0, 0.55556, 0, 0, 0.66667], + 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667], + 8764: [-0.13313, 0.36687, 0, 0, 0.77778], + 8768: [0.19444, 0.69444, 0, 0, 0.27778], + 8771: [-0.03625, 0.46375, 0, 0, 0.77778], + 8773: [-0.022, 0.589, 0, 0, 0.778], + 8776: [-0.01688, 0.48312, 0, 0, 0.77778], + 8781: [-0.03625, 0.46375, 0, 0, 0.77778], + 8784: [-0.133, 0.673, 0, 0, 0.778], + 8801: [-0.03625, 0.46375, 0, 0, 0.77778], + 8804: [0.13597, 0.63597, 0, 0, 0.77778], + 8805: [0.13597, 0.63597, 0, 0, 0.77778], + 8810: [0.0391, 0.5391, 0, 0, 1], + 8811: [0.0391, 0.5391, 0, 0, 1], + 8826: [0.0391, 0.5391, 0, 0, 0.77778], + 8827: [0.0391, 0.5391, 0, 0, 0.77778], + 8834: [0.0391, 0.5391, 0, 0, 0.77778], + 8835: [0.0391, 0.5391, 0, 0, 0.77778], + 8838: [0.13597, 0.63597, 0, 0, 0.77778], + 8839: [0.13597, 0.63597, 0, 0, 0.77778], + 8846: [0, 0.55556, 0, 0, 0.66667], + 8849: [0.13597, 0.63597, 0, 0, 0.77778], + 8850: [0.13597, 0.63597, 0, 0, 0.77778], + 8851: [0, 0.55556, 0, 0, 0.66667], + 8852: [0, 0.55556, 0, 0, 0.66667], + 8853: [0.08333, 0.58333, 0, 0, 0.77778], + 8854: [0.08333, 0.58333, 0, 0, 0.77778], + 8855: [0.08333, 0.58333, 0, 0, 0.77778], + 8856: [0.08333, 0.58333, 0, 0, 0.77778], + 8857: [0.08333, 0.58333, 0, 0, 0.77778], + 8866: [0, 0.69444, 0, 0, 0.61111], + 8867: [0, 0.69444, 0, 0, 0.61111], + 8868: [0, 0.69444, 0, 0, 0.77778], + 8869: [0, 0.69444, 0, 0, 0.77778], + 8872: [0.249, 0.75, 0, 0, 0.867], + 8900: [-0.05555, 0.44445, 0, 0, 0.5], + 8901: [-0.05555, 0.44445, 0, 0, 0.27778], + 8902: [-0.03472, 0.46528, 0, 0, 0.5], + 8904: [5e-3, 0.505, 0, 0, 0.9], + 8942: [0.03, 0.903, 0, 0, 0.278], + 8943: [-0.19, 0.313, 0, 0, 1.172], + 8945: [-0.1, 0.823, 0, 0, 1.282], + 8968: [0.25, 0.75, 0, 0, 0.44445], + 8969: [0.25, 0.75, 0, 0, 0.44445], + 8970: [0.25, 0.75, 0, 0, 0.44445], + 8971: [0.25, 0.75, 0, 0, 0.44445], + 8994: [-0.14236, 0.35764, 0, 0, 1], + 8995: [-0.14236, 0.35764, 0, 0, 1], + 9136: [0.244, 0.744, 0, 0, 0.412], + 9137: [0.244, 0.745, 0, 0, 0.412], + 9651: [0.19444, 0.69444, 0, 0, 0.88889], + 9657: [-0.03472, 0.46528, 0, 0, 0.5], + 9661: [0.19444, 0.69444, 0, 0, 0.88889], + 9667: [-0.03472, 0.46528, 0, 0, 0.5], + 9711: [0.19444, 0.69444, 0, 0, 1], + 9824: [0.12963, 0.69444, 0, 0, 0.77778], + 9825: [0.12963, 0.69444, 0, 0, 0.77778], + 9826: [0.12963, 0.69444, 0, 0, 0.77778], + 9827: [0.12963, 0.69444, 0, 0, 0.77778], + 9837: [0, 0.75, 0, 0, 0.38889], + 9838: [0.19444, 0.69444, 0, 0, 0.38889], + 9839: [0.19444, 0.69444, 0, 0, 0.38889], + 10216: [0.25, 0.75, 0, 0, 0.38889], + 10217: [0.25, 0.75, 0, 0, 0.38889], + 10222: [0.244, 0.744, 0, 0, 0.412], + 10223: [0.244, 0.745, 0, 0, 0.412], + 10229: [0.011, 0.511, 0, 0, 1.609], + 10230: [0.011, 0.511, 0, 0, 1.638], + 10231: [0.011, 0.511, 0, 0, 1.859], + 10232: [0.024, 0.525, 0, 0, 1.609], + 10233: [0.024, 0.525, 0, 0, 1.638], + 10234: [0.024, 0.525, 0, 0, 1.858], + 10236: [0.011, 0.511, 0, 0, 1.638], + 10815: [0, 0.68333, 0, 0, 0.75], + 10927: [0.13597, 0.63597, 0, 0, 0.77778], + 10928: [0.13597, 0.63597, 0, 0, 0.77778], + 57376: [0.19444, 0.69444, 0, 0, 0] + }, + "Math-BoldItalic": { + 32: [0, 0, 0, 0, 0.25], + 48: [0, 0.44444, 0, 0, 0.575], + 49: [0, 0.44444, 0, 0, 0.575], + 50: [0, 0.44444, 0, 0, 0.575], + 51: [0.19444, 0.44444, 0, 0, 0.575], + 52: [0.19444, 0.44444, 0, 0, 0.575], + 53: [0.19444, 0.44444, 0, 0, 0.575], + 54: [0, 0.64444, 0, 0, 0.575], + 55: [0.19444, 0.44444, 0, 0, 0.575], + 56: [0, 0.64444, 0, 0, 0.575], + 57: [0.19444, 0.44444, 0, 0, 0.575], + 65: [0, 0.68611, 0, 0, 0.86944], + 66: [0, 0.68611, 0.04835, 0, 0.8664], + 67: [0, 0.68611, 0.06979, 0, 0.81694], + 68: [0, 0.68611, 0.03194, 0, 0.93812], + 69: [0, 0.68611, 0.05451, 0, 0.81007], + 70: [0, 0.68611, 0.15972, 0, 0.68889], + 71: [0, 0.68611, 0, 0, 0.88673], + 72: [0, 0.68611, 0.08229, 0, 0.98229], + 73: [0, 0.68611, 0.07778, 0, 0.51111], + 74: [0, 0.68611, 0.10069, 0, 0.63125], + 75: [0, 0.68611, 0.06979, 0, 0.97118], + 76: [0, 0.68611, 0, 0, 0.75555], + 77: [0, 0.68611, 0.11424, 0, 1.14201], + 78: [0, 0.68611, 0.11424, 0, 0.95034], + 79: [0, 0.68611, 0.03194, 0, 0.83666], + 80: [0, 0.68611, 0.15972, 0, 0.72309], + 81: [0.19444, 0.68611, 0, 0, 0.86861], + 82: [0, 0.68611, 421e-5, 0, 0.87235], + 83: [0, 0.68611, 0.05382, 0, 0.69271], + 84: [0, 0.68611, 0.15972, 0, 0.63663], + 85: [0, 0.68611, 0.11424, 0, 0.80027], + 86: [0, 0.68611, 0.25555, 0, 0.67778], + 87: [0, 0.68611, 0.15972, 0, 1.09305], + 88: [0, 0.68611, 0.07778, 0, 0.94722], + 89: [0, 0.68611, 0.25555, 0, 0.67458], + 90: [0, 0.68611, 0.06979, 0, 0.77257], + 97: [0, 0.44444, 0, 0, 0.63287], + 98: [0, 0.69444, 0, 0, 0.52083], + 99: [0, 0.44444, 0, 0, 0.51342], + 100: [0, 0.69444, 0, 0, 0.60972], + 101: [0, 0.44444, 0, 0, 0.55361], + 102: [0.19444, 0.69444, 0.11042, 0, 0.56806], + 103: [0.19444, 0.44444, 0.03704, 0, 0.5449], + 104: [0, 0.69444, 0, 0, 0.66759], + 105: [0, 0.69326, 0, 0, 0.4048], + 106: [0.19444, 0.69326, 0.0622, 0, 0.47083], + 107: [0, 0.69444, 0.01852, 0, 0.6037], + 108: [0, 0.69444, 88e-4, 0, 0.34815], + 109: [0, 0.44444, 0, 0, 1.0324], + 110: [0, 0.44444, 0, 0, 0.71296], + 111: [0, 0.44444, 0, 0, 0.58472], + 112: [0.19444, 0.44444, 0, 0, 0.60092], + 113: [0.19444, 0.44444, 0.03704, 0, 0.54213], + 114: [0, 0.44444, 0.03194, 0, 0.5287], + 115: [0, 0.44444, 0, 0, 0.53125], + 116: [0, 0.63492, 0, 0, 0.41528], + 117: [0, 0.44444, 0, 0, 0.68102], + 118: [0, 0.44444, 0.03704, 0, 0.56666], + 119: [0, 0.44444, 0.02778, 0, 0.83148], + 120: [0, 0.44444, 0, 0, 0.65903], + 121: [0.19444, 0.44444, 0.03704, 0, 0.59028], + 122: [0, 0.44444, 0.04213, 0, 0.55509], + 160: [0, 0, 0, 0, 0.25], + 915: [0, 0.68611, 0.15972, 0, 0.65694], + 916: [0, 0.68611, 0, 0, 0.95833], + 920: [0, 0.68611, 0.03194, 0, 0.86722], + 923: [0, 0.68611, 0, 0, 0.80555], + 926: [0, 0.68611, 0.07458, 0, 0.84125], + 928: [0, 0.68611, 0.08229, 0, 0.98229], + 931: [0, 0.68611, 0.05451, 0, 0.88507], + 933: [0, 0.68611, 0.15972, 0, 0.67083], + 934: [0, 0.68611, 0, 0, 0.76666], + 936: [0, 0.68611, 0.11653, 0, 0.71402], + 937: [0, 0.68611, 0.04835, 0, 0.8789], + 945: [0, 0.44444, 0, 0, 0.76064], + 946: [0.19444, 0.69444, 0.03403, 0, 0.65972], + 947: [0.19444, 0.44444, 0.06389, 0, 0.59003], + 948: [0, 0.69444, 0.03819, 0, 0.52222], + 949: [0, 0.44444, 0, 0, 0.52882], + 950: [0.19444, 0.69444, 0.06215, 0, 0.50833], + 951: [0.19444, 0.44444, 0.03704, 0, 0.6], + 952: [0, 0.69444, 0.03194, 0, 0.5618], + 953: [0, 0.44444, 0, 0, 0.41204], + 954: [0, 0.44444, 0, 0, 0.66759], + 955: [0, 0.69444, 0, 0, 0.67083], + 956: [0.19444, 0.44444, 0, 0, 0.70787], + 957: [0, 0.44444, 0.06898, 0, 0.57685], + 958: [0.19444, 0.69444, 0.03021, 0, 0.50833], + 959: [0, 0.44444, 0, 0, 0.58472], + 960: [0, 0.44444, 0.03704, 0, 0.68241], + 961: [0.19444, 0.44444, 0, 0, 0.6118], + 962: [0.09722, 0.44444, 0.07917, 0, 0.42361], + 963: [0, 0.44444, 0.03704, 0, 0.68588], + 964: [0, 0.44444, 0.13472, 0, 0.52083], + 965: [0, 0.44444, 0.03704, 0, 0.63055], + 966: [0.19444, 0.44444, 0, 0, 0.74722], + 967: [0.19444, 0.44444, 0, 0, 0.71805], + 968: [0.19444, 0.69444, 0.03704, 0, 0.75833], + 969: [0, 0.44444, 0.03704, 0, 0.71782], + 977: [0, 0.69444, 0, 0, 0.69155], + 981: [0.19444, 0.69444, 0, 0, 0.7125], + 982: [0, 0.44444, 0.03194, 0, 0.975], + 1009: [0.19444, 0.44444, 0, 0, 0.6118], + 1013: [0, 0.44444, 0, 0, 0.48333], + 57649: [0, 0.44444, 0, 0, 0.39352], + 57911: [0.19444, 0.44444, 0, 0, 0.43889] + }, + "Math-Italic": { + 32: [0, 0, 0, 0, 0.25], + 48: [0, 0.43056, 0, 0, 0.5], + 49: [0, 0.43056, 0, 0, 0.5], + 50: [0, 0.43056, 0, 0, 0.5], + 51: [0.19444, 0.43056, 0, 0, 0.5], + 52: [0.19444, 0.43056, 0, 0, 0.5], + 53: [0.19444, 0.43056, 0, 0, 0.5], + 54: [0, 0.64444, 0, 0, 0.5], + 55: [0.19444, 0.43056, 0, 0, 0.5], + 56: [0, 0.64444, 0, 0, 0.5], + 57: [0.19444, 0.43056, 0, 0, 0.5], + 65: [0, 0.68333, 0, 0.13889, 0.75], + 66: [0, 0.68333, 0.05017, 0.08334, 0.75851], + 67: [0, 0.68333, 0.07153, 0.08334, 0.71472], + 68: [0, 0.68333, 0.02778, 0.05556, 0.82792], + 69: [0, 0.68333, 0.05764, 0.08334, 0.7382], + 70: [0, 0.68333, 0.13889, 0.08334, 0.64306], + 71: [0, 0.68333, 0, 0.08334, 0.78625], + 72: [0, 0.68333, 0.08125, 0.05556, 0.83125], + 73: [0, 0.68333, 0.07847, 0.11111, 0.43958], + 74: [0, 0.68333, 0.09618, 0.16667, 0.55451], + 75: [0, 0.68333, 0.07153, 0.05556, 0.84931], + 76: [0, 0.68333, 0, 0.02778, 0.68056], + 77: [0, 0.68333, 0.10903, 0.08334, 0.97014], + 78: [0, 0.68333, 0.10903, 0.08334, 0.80347], + 79: [0, 0.68333, 0.02778, 0.08334, 0.76278], + 80: [0, 0.68333, 0.13889, 0.08334, 0.64201], + 81: [0.19444, 0.68333, 0, 0.08334, 0.79056], + 82: [0, 0.68333, 773e-5, 0.08334, 0.75929], + 83: [0, 0.68333, 0.05764, 0.08334, 0.6132], + 84: [0, 0.68333, 0.13889, 0.08334, 0.58438], + 85: [0, 0.68333, 0.10903, 0.02778, 0.68278], + 86: [0, 0.68333, 0.22222, 0, 0.58333], + 87: [0, 0.68333, 0.13889, 0, 0.94445], + 88: [0, 0.68333, 0.07847, 0.08334, 0.82847], + 89: [0, 0.68333, 0.22222, 0, 0.58056], + 90: [0, 0.68333, 0.07153, 0.08334, 0.68264], + 97: [0, 0.43056, 0, 0, 0.52859], + 98: [0, 0.69444, 0, 0, 0.42917], + 99: [0, 0.43056, 0, 0.05556, 0.43276], + 100: [0, 0.69444, 0, 0.16667, 0.52049], + 101: [0, 0.43056, 0, 0.05556, 0.46563], + 102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], + 103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], + 104: [0, 0.69444, 0, 0, 0.57616], + 105: [0, 0.65952, 0, 0, 0.34451], + 106: [0.19444, 0.65952, 0.05724, 0, 0.41181], + 107: [0, 0.69444, 0.03148, 0, 0.5206], + 108: [0, 0.69444, 0.01968, 0.08334, 0.29838], + 109: [0, 0.43056, 0, 0, 0.87801], + 110: [0, 0.43056, 0, 0, 0.60023], + 111: [0, 0.43056, 0, 0.05556, 0.48472], + 112: [0.19444, 0.43056, 0, 0.08334, 0.50313], + 113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], + 114: [0, 0.43056, 0.02778, 0.05556, 0.45116], + 115: [0, 0.43056, 0, 0.05556, 0.46875], + 116: [0, 0.61508, 0, 0.08334, 0.36111], + 117: [0, 0.43056, 0, 0.02778, 0.57246], + 118: [0, 0.43056, 0.03588, 0.02778, 0.48472], + 119: [0, 0.43056, 0.02691, 0.08334, 0.71592], + 120: [0, 0.43056, 0, 0.02778, 0.57153], + 121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], + 122: [0, 0.43056, 0.04398, 0.05556, 0.46505], + 160: [0, 0, 0, 0, 0.25], + 915: [0, 0.68333, 0.13889, 0.08334, 0.61528], + 916: [0, 0.68333, 0, 0.16667, 0.83334], + 920: [0, 0.68333, 0.02778, 0.08334, 0.76278], + 923: [0, 0.68333, 0, 0.16667, 0.69445], + 926: [0, 0.68333, 0.07569, 0.08334, 0.74236], + 928: [0, 0.68333, 0.08125, 0.05556, 0.83125], + 931: [0, 0.68333, 0.05764, 0.08334, 0.77986], + 933: [0, 0.68333, 0.13889, 0.05556, 0.58333], + 934: [0, 0.68333, 0, 0.08334, 0.66667], + 936: [0, 0.68333, 0.11, 0.05556, 0.61222], + 937: [0, 0.68333, 0.05017, 0.08334, 0.7724], + 945: [0, 0.43056, 37e-4, 0.02778, 0.6397], + 946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], + 947: [0.19444, 0.43056, 0.05556, 0, 0.51773], + 948: [0, 0.69444, 0.03785, 0.05556, 0.44444], + 949: [0, 0.43056, 0, 0.08334, 0.46632], + 950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], + 951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], + 952: [0, 0.69444, 0.02778, 0.08334, 0.46944], + 953: [0, 0.43056, 0, 0.05556, 0.35394], + 954: [0, 0.43056, 0, 0, 0.57616], + 955: [0, 0.69444, 0, 0, 0.58334], + 956: [0.19444, 0.43056, 0, 0.02778, 0.60255], + 957: [0, 0.43056, 0.06366, 0.02778, 0.49398], + 958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], + 959: [0, 0.43056, 0, 0.05556, 0.48472], + 960: [0, 0.43056, 0.03588, 0, 0.57003], + 961: [0.19444, 0.43056, 0, 0.08334, 0.51702], + 962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], + 963: [0, 0.43056, 0.03588, 0, 0.57141], + 964: [0, 0.43056, 0.1132, 0.02778, 0.43715], + 965: [0, 0.43056, 0.03588, 0.02778, 0.54028], + 966: [0.19444, 0.43056, 0, 0.08334, 0.65417], + 967: [0.19444, 0.43056, 0, 0.05556, 0.62569], + 968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], + 969: [0, 0.43056, 0.03588, 0, 0.62245], + 977: [0, 0.69444, 0, 0.08334, 0.59144], + 981: [0.19444, 0.69444, 0, 0.08334, 0.59583], + 982: [0, 0.43056, 0.02778, 0, 0.82813], + 1009: [0.19444, 0.43056, 0, 0.08334, 0.51702], + 1013: [0, 0.43056, 0, 0.05556, 0.4059], + 57649: [0, 0.43056, 0, 0.02778, 0.32246], + 57911: [0.19444, 0.43056, 0, 0.08334, 0.38403] + }, + "SansSerif-Bold": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.36667], + 34: [0, 0.69444, 0, 0, 0.55834], + 35: [0.19444, 0.69444, 0, 0, 0.91667], + 36: [0.05556, 0.75, 0, 0, 0.55], + 37: [0.05556, 0.75, 0, 0, 1.02912], + 38: [0, 0.69444, 0, 0, 0.83056], + 39: [0, 0.69444, 0, 0, 0.30556], + 40: [0.25, 0.75, 0, 0, 0.42778], + 41: [0.25, 0.75, 0, 0, 0.42778], + 42: [0, 0.75, 0, 0, 0.55], + 43: [0.11667, 0.61667, 0, 0, 0.85556], + 44: [0.10556, 0.13056, 0, 0, 0.30556], + 45: [0, 0.45833, 0, 0, 0.36667], + 46: [0, 0.13056, 0, 0, 0.30556], + 47: [0.25, 0.75, 0, 0, 0.55], + 48: [0, 0.69444, 0, 0, 0.55], + 49: [0, 0.69444, 0, 0, 0.55], + 50: [0, 0.69444, 0, 0, 0.55], + 51: [0, 0.69444, 0, 0, 0.55], + 52: [0, 0.69444, 0, 0, 0.55], + 53: [0, 0.69444, 0, 0, 0.55], + 54: [0, 0.69444, 0, 0, 0.55], + 55: [0, 0.69444, 0, 0, 0.55], + 56: [0, 0.69444, 0, 0, 0.55], + 57: [0, 0.69444, 0, 0, 0.55], + 58: [0, 0.45833, 0, 0, 0.30556], + 59: [0.10556, 0.45833, 0, 0, 0.30556], + 61: [-0.09375, 0.40625, 0, 0, 0.85556], + 63: [0, 0.69444, 0, 0, 0.51945], + 64: [0, 0.69444, 0, 0, 0.73334], + 65: [0, 0.69444, 0, 0, 0.73334], + 66: [0, 0.69444, 0, 0, 0.73334], + 67: [0, 0.69444, 0, 0, 0.70278], + 68: [0, 0.69444, 0, 0, 0.79445], + 69: [0, 0.69444, 0, 0, 0.64167], + 70: [0, 0.69444, 0, 0, 0.61111], + 71: [0, 0.69444, 0, 0, 0.73334], + 72: [0, 0.69444, 0, 0, 0.79445], + 73: [0, 0.69444, 0, 0, 0.33056], + 74: [0, 0.69444, 0, 0, 0.51945], + 75: [0, 0.69444, 0, 0, 0.76389], + 76: [0, 0.69444, 0, 0, 0.58056], + 77: [0, 0.69444, 0, 0, 0.97778], + 78: [0, 0.69444, 0, 0, 0.79445], + 79: [0, 0.69444, 0, 0, 0.79445], + 80: [0, 0.69444, 0, 0, 0.70278], + 81: [0.10556, 0.69444, 0, 0, 0.79445], + 82: [0, 0.69444, 0, 0, 0.70278], + 83: [0, 0.69444, 0, 0, 0.61111], + 84: [0, 0.69444, 0, 0, 0.73334], + 85: [0, 0.69444, 0, 0, 0.76389], + 86: [0, 0.69444, 0.01528, 0, 0.73334], + 87: [0, 0.69444, 0.01528, 0, 1.03889], + 88: [0, 0.69444, 0, 0, 0.73334], + 89: [0, 0.69444, 0.0275, 0, 0.73334], + 90: [0, 0.69444, 0, 0, 0.67223], + 91: [0.25, 0.75, 0, 0, 0.34306], + 93: [0.25, 0.75, 0, 0, 0.34306], + 94: [0, 0.69444, 0, 0, 0.55], + 95: [0.35, 0.10833, 0.03056, 0, 0.55], + 97: [0, 0.45833, 0, 0, 0.525], + 98: [0, 0.69444, 0, 0, 0.56111], + 99: [0, 0.45833, 0, 0, 0.48889], + 100: [0, 0.69444, 0, 0, 0.56111], + 101: [0, 0.45833, 0, 0, 0.51111], + 102: [0, 0.69444, 0.07639, 0, 0.33611], + 103: [0.19444, 0.45833, 0.01528, 0, 0.55], + 104: [0, 0.69444, 0, 0, 0.56111], + 105: [0, 0.69444, 0, 0, 0.25556], + 106: [0.19444, 0.69444, 0, 0, 0.28611], + 107: [0, 0.69444, 0, 0, 0.53056], + 108: [0, 0.69444, 0, 0, 0.25556], + 109: [0, 0.45833, 0, 0, 0.86667], + 110: [0, 0.45833, 0, 0, 0.56111], + 111: [0, 0.45833, 0, 0, 0.55], + 112: [0.19444, 0.45833, 0, 0, 0.56111], + 113: [0.19444, 0.45833, 0, 0, 0.56111], + 114: [0, 0.45833, 0.01528, 0, 0.37222], + 115: [0, 0.45833, 0, 0, 0.42167], + 116: [0, 0.58929, 0, 0, 0.40417], + 117: [0, 0.45833, 0, 0, 0.56111], + 118: [0, 0.45833, 0.01528, 0, 0.5], + 119: [0, 0.45833, 0.01528, 0, 0.74445], + 120: [0, 0.45833, 0, 0, 0.5], + 121: [0.19444, 0.45833, 0.01528, 0, 0.5], + 122: [0, 0.45833, 0, 0, 0.47639], + 126: [0.35, 0.34444, 0, 0, 0.55], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.69444, 0, 0, 0.55], + 176: [0, 0.69444, 0, 0, 0.73334], + 180: [0, 0.69444, 0, 0, 0.55], + 184: [0.17014, 0, 0, 0, 0.48889], + 305: [0, 0.45833, 0, 0, 0.25556], + 567: [0.19444, 0.45833, 0, 0, 0.28611], + 710: [0, 0.69444, 0, 0, 0.55], + 711: [0, 0.63542, 0, 0, 0.55], + 713: [0, 0.63778, 0, 0, 0.55], + 728: [0, 0.69444, 0, 0, 0.55], + 729: [0, 0.69444, 0, 0, 0.30556], + 730: [0, 0.69444, 0, 0, 0.73334], + 732: [0, 0.69444, 0, 0, 0.55], + 733: [0, 0.69444, 0, 0, 0.55], + 915: [0, 0.69444, 0, 0, 0.58056], + 916: [0, 0.69444, 0, 0, 0.91667], + 920: [0, 0.69444, 0, 0, 0.85556], + 923: [0, 0.69444, 0, 0, 0.67223], + 926: [0, 0.69444, 0, 0, 0.73334], + 928: [0, 0.69444, 0, 0, 0.79445], + 931: [0, 0.69444, 0, 0, 0.79445], + 933: [0, 0.69444, 0, 0, 0.85556], + 934: [0, 0.69444, 0, 0, 0.79445], + 936: [0, 0.69444, 0, 0, 0.85556], + 937: [0, 0.69444, 0, 0, 0.79445], + 8211: [0, 0.45833, 0.03056, 0, 0.55], + 8212: [0, 0.45833, 0.03056, 0, 1.10001], + 8216: [0, 0.69444, 0, 0, 0.30556], + 8217: [0, 0.69444, 0, 0, 0.30556], + 8220: [0, 0.69444, 0, 0, 0.55834], + 8221: [0, 0.69444, 0, 0, 0.55834] + }, + "SansSerif-Italic": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0.05733, 0, 0.31945], + 34: [0, 0.69444, 316e-5, 0, 0.5], + 35: [0.19444, 0.69444, 0.05087, 0, 0.83334], + 36: [0.05556, 0.75, 0.11156, 0, 0.5], + 37: [0.05556, 0.75, 0.03126, 0, 0.83334], + 38: [0, 0.69444, 0.03058, 0, 0.75834], + 39: [0, 0.69444, 0.07816, 0, 0.27778], + 40: [0.25, 0.75, 0.13164, 0, 0.38889], + 41: [0.25, 0.75, 0.02536, 0, 0.38889], + 42: [0, 0.75, 0.11775, 0, 0.5], + 43: [0.08333, 0.58333, 0.02536, 0, 0.77778], + 44: [0.125, 0.08333, 0, 0, 0.27778], + 45: [0, 0.44444, 0.01946, 0, 0.33333], + 46: [0, 0.08333, 0, 0, 0.27778], + 47: [0.25, 0.75, 0.13164, 0, 0.5], + 48: [0, 0.65556, 0.11156, 0, 0.5], + 49: [0, 0.65556, 0.11156, 0, 0.5], + 50: [0, 0.65556, 0.11156, 0, 0.5], + 51: [0, 0.65556, 0.11156, 0, 0.5], + 52: [0, 0.65556, 0.11156, 0, 0.5], + 53: [0, 0.65556, 0.11156, 0, 0.5], + 54: [0, 0.65556, 0.11156, 0, 0.5], + 55: [0, 0.65556, 0.11156, 0, 0.5], + 56: [0, 0.65556, 0.11156, 0, 0.5], + 57: [0, 0.65556, 0.11156, 0, 0.5], + 58: [0, 0.44444, 0.02502, 0, 0.27778], + 59: [0.125, 0.44444, 0.02502, 0, 0.27778], + 61: [-0.13, 0.37, 0.05087, 0, 0.77778], + 63: [0, 0.69444, 0.11809, 0, 0.47222], + 64: [0, 0.69444, 0.07555, 0, 0.66667], + 65: [0, 0.69444, 0, 0, 0.66667], + 66: [0, 0.69444, 0.08293, 0, 0.66667], + 67: [0, 0.69444, 0.11983, 0, 0.63889], + 68: [0, 0.69444, 0.07555, 0, 0.72223], + 69: [0, 0.69444, 0.11983, 0, 0.59722], + 70: [0, 0.69444, 0.13372, 0, 0.56945], + 71: [0, 0.69444, 0.11983, 0, 0.66667], + 72: [0, 0.69444, 0.08094, 0, 0.70834], + 73: [0, 0.69444, 0.13372, 0, 0.27778], + 74: [0, 0.69444, 0.08094, 0, 0.47222], + 75: [0, 0.69444, 0.11983, 0, 0.69445], + 76: [0, 0.69444, 0, 0, 0.54167], + 77: [0, 0.69444, 0.08094, 0, 0.875], + 78: [0, 0.69444, 0.08094, 0, 0.70834], + 79: [0, 0.69444, 0.07555, 0, 0.73611], + 80: [0, 0.69444, 0.08293, 0, 0.63889], + 81: [0.125, 0.69444, 0.07555, 0, 0.73611], + 82: [0, 0.69444, 0.08293, 0, 0.64584], + 83: [0, 0.69444, 0.09205, 0, 0.55556], + 84: [0, 0.69444, 0.13372, 0, 0.68056], + 85: [0, 0.69444, 0.08094, 0, 0.6875], + 86: [0, 0.69444, 0.1615, 0, 0.66667], + 87: [0, 0.69444, 0.1615, 0, 0.94445], + 88: [0, 0.69444, 0.13372, 0, 0.66667], + 89: [0, 0.69444, 0.17261, 0, 0.66667], + 90: [0, 0.69444, 0.11983, 0, 0.61111], + 91: [0.25, 0.75, 0.15942, 0, 0.28889], + 93: [0.25, 0.75, 0.08719, 0, 0.28889], + 94: [0, 0.69444, 0.0799, 0, 0.5], + 95: [0.35, 0.09444, 0.08616, 0, 0.5], + 97: [0, 0.44444, 981e-5, 0, 0.48056], + 98: [0, 0.69444, 0.03057, 0, 0.51667], + 99: [0, 0.44444, 0.08336, 0, 0.44445], + 100: [0, 0.69444, 0.09483, 0, 0.51667], + 101: [0, 0.44444, 0.06778, 0, 0.44445], + 102: [0, 0.69444, 0.21705, 0, 0.30556], + 103: [0.19444, 0.44444, 0.10836, 0, 0.5], + 104: [0, 0.69444, 0.01778, 0, 0.51667], + 105: [0, 0.67937, 0.09718, 0, 0.23889], + 106: [0.19444, 0.67937, 0.09162, 0, 0.26667], + 107: [0, 0.69444, 0.08336, 0, 0.48889], + 108: [0, 0.69444, 0.09483, 0, 0.23889], + 109: [0, 0.44444, 0.01778, 0, 0.79445], + 110: [0, 0.44444, 0.01778, 0, 0.51667], + 111: [0, 0.44444, 0.06613, 0, 0.5], + 112: [0.19444, 0.44444, 0.0389, 0, 0.51667], + 113: [0.19444, 0.44444, 0.04169, 0, 0.51667], + 114: [0, 0.44444, 0.10836, 0, 0.34167], + 115: [0, 0.44444, 0.0778, 0, 0.38333], + 116: [0, 0.57143, 0.07225, 0, 0.36111], + 117: [0, 0.44444, 0.04169, 0, 0.51667], + 118: [0, 0.44444, 0.10836, 0, 0.46111], + 119: [0, 0.44444, 0.10836, 0, 0.68334], + 120: [0, 0.44444, 0.09169, 0, 0.46111], + 121: [0.19444, 0.44444, 0.10836, 0, 0.46111], + 122: [0, 0.44444, 0.08752, 0, 0.43472], + 126: [0.35, 0.32659, 0.08826, 0, 0.5], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.67937, 0.06385, 0, 0.5], + 176: [0, 0.69444, 0, 0, 0.73752], + 184: [0.17014, 0, 0, 0, 0.44445], + 305: [0, 0.44444, 0.04169, 0, 0.23889], + 567: [0.19444, 0.44444, 0.04169, 0, 0.26667], + 710: [0, 0.69444, 0.0799, 0, 0.5], + 711: [0, 0.63194, 0.08432, 0, 0.5], + 713: [0, 0.60889, 0.08776, 0, 0.5], + 714: [0, 0.69444, 0.09205, 0, 0.5], + 715: [0, 0.69444, 0, 0, 0.5], + 728: [0, 0.69444, 0.09483, 0, 0.5], + 729: [0, 0.67937, 0.07774, 0, 0.27778], + 730: [0, 0.69444, 0, 0, 0.73752], + 732: [0, 0.67659, 0.08826, 0, 0.5], + 733: [0, 0.69444, 0.09205, 0, 0.5], + 915: [0, 0.69444, 0.13372, 0, 0.54167], + 916: [0, 0.69444, 0, 0, 0.83334], + 920: [0, 0.69444, 0.07555, 0, 0.77778], + 923: [0, 0.69444, 0, 0, 0.61111], + 926: [0, 0.69444, 0.12816, 0, 0.66667], + 928: [0, 0.69444, 0.08094, 0, 0.70834], + 931: [0, 0.69444, 0.11983, 0, 0.72222], + 933: [0, 0.69444, 0.09031, 0, 0.77778], + 934: [0, 0.69444, 0.04603, 0, 0.72222], + 936: [0, 0.69444, 0.09031, 0, 0.77778], + 937: [0, 0.69444, 0.08293, 0, 0.72222], + 8211: [0, 0.44444, 0.08616, 0, 0.5], + 8212: [0, 0.44444, 0.08616, 0, 1], + 8216: [0, 0.69444, 0.07816, 0, 0.27778], + 8217: [0, 0.69444, 0.07816, 0, 0.27778], + 8220: [0, 0.69444, 0.14205, 0, 0.5], + 8221: [0, 0.69444, 316e-5, 0, 0.5] + }, + "SansSerif-Regular": { + 32: [0, 0, 0, 0, 0.25], + 33: [0, 0.69444, 0, 0, 0.31945], + 34: [0, 0.69444, 0, 0, 0.5], + 35: [0.19444, 0.69444, 0, 0, 0.83334], + 36: [0.05556, 0.75, 0, 0, 0.5], + 37: [0.05556, 0.75, 0, 0, 0.83334], + 38: [0, 0.69444, 0, 0, 0.75834], + 39: [0, 0.69444, 0, 0, 0.27778], + 40: [0.25, 0.75, 0, 0, 0.38889], + 41: [0.25, 0.75, 0, 0, 0.38889], + 42: [0, 0.75, 0, 0, 0.5], + 43: [0.08333, 0.58333, 0, 0, 0.77778], + 44: [0.125, 0.08333, 0, 0, 0.27778], + 45: [0, 0.44444, 0, 0, 0.33333], + 46: [0, 0.08333, 0, 0, 0.27778], + 47: [0.25, 0.75, 0, 0, 0.5], + 48: [0, 0.65556, 0, 0, 0.5], + 49: [0, 0.65556, 0, 0, 0.5], + 50: [0, 0.65556, 0, 0, 0.5], + 51: [0, 0.65556, 0, 0, 0.5], + 52: [0, 0.65556, 0, 0, 0.5], + 53: [0, 0.65556, 0, 0, 0.5], + 54: [0, 0.65556, 0, 0, 0.5], + 55: [0, 0.65556, 0, 0, 0.5], + 56: [0, 0.65556, 0, 0, 0.5], + 57: [0, 0.65556, 0, 0, 0.5], + 58: [0, 0.44444, 0, 0, 0.27778], + 59: [0.125, 0.44444, 0, 0, 0.27778], + 61: [-0.13, 0.37, 0, 0, 0.77778], + 63: [0, 0.69444, 0, 0, 0.47222], + 64: [0, 0.69444, 0, 0, 0.66667], + 65: [0, 0.69444, 0, 0, 0.66667], + 66: [0, 0.69444, 0, 0, 0.66667], + 67: [0, 0.69444, 0, 0, 0.63889], + 68: [0, 0.69444, 0, 0, 0.72223], + 69: [0, 0.69444, 0, 0, 0.59722], + 70: [0, 0.69444, 0, 0, 0.56945], + 71: [0, 0.69444, 0, 0, 0.66667], + 72: [0, 0.69444, 0, 0, 0.70834], + 73: [0, 0.69444, 0, 0, 0.27778], + 74: [0, 0.69444, 0, 0, 0.47222], + 75: [0, 0.69444, 0, 0, 0.69445], + 76: [0, 0.69444, 0, 0, 0.54167], + 77: [0, 0.69444, 0, 0, 0.875], + 78: [0, 0.69444, 0, 0, 0.70834], + 79: [0, 0.69444, 0, 0, 0.73611], + 80: [0, 0.69444, 0, 0, 0.63889], + 81: [0.125, 0.69444, 0, 0, 0.73611], + 82: [0, 0.69444, 0, 0, 0.64584], + 83: [0, 0.69444, 0, 0, 0.55556], + 84: [0, 0.69444, 0, 0, 0.68056], + 85: [0, 0.69444, 0, 0, 0.6875], + 86: [0, 0.69444, 0.01389, 0, 0.66667], + 87: [0, 0.69444, 0.01389, 0, 0.94445], + 88: [0, 0.69444, 0, 0, 0.66667], + 89: [0, 0.69444, 0.025, 0, 0.66667], + 90: [0, 0.69444, 0, 0, 0.61111], + 91: [0.25, 0.75, 0, 0, 0.28889], + 93: [0.25, 0.75, 0, 0, 0.28889], + 94: [0, 0.69444, 0, 0, 0.5], + 95: [0.35, 0.09444, 0.02778, 0, 0.5], + 97: [0, 0.44444, 0, 0, 0.48056], + 98: [0, 0.69444, 0, 0, 0.51667], + 99: [0, 0.44444, 0, 0, 0.44445], + 100: [0, 0.69444, 0, 0, 0.51667], + 101: [0, 0.44444, 0, 0, 0.44445], + 102: [0, 0.69444, 0.06944, 0, 0.30556], + 103: [0.19444, 0.44444, 0.01389, 0, 0.5], + 104: [0, 0.69444, 0, 0, 0.51667], + 105: [0, 0.67937, 0, 0, 0.23889], + 106: [0.19444, 0.67937, 0, 0, 0.26667], + 107: [0, 0.69444, 0, 0, 0.48889], + 108: [0, 0.69444, 0, 0, 0.23889], + 109: [0, 0.44444, 0, 0, 0.79445], + 110: [0, 0.44444, 0, 0, 0.51667], + 111: [0, 0.44444, 0, 0, 0.5], + 112: [0.19444, 0.44444, 0, 0, 0.51667], + 113: [0.19444, 0.44444, 0, 0, 0.51667], + 114: [0, 0.44444, 0.01389, 0, 0.34167], + 115: [0, 0.44444, 0, 0, 0.38333], + 116: [0, 0.57143, 0, 0, 0.36111], + 117: [0, 0.44444, 0, 0, 0.51667], + 118: [0, 0.44444, 0.01389, 0, 0.46111], + 119: [0, 0.44444, 0.01389, 0, 0.68334], + 120: [0, 0.44444, 0, 0, 0.46111], + 121: [0.19444, 0.44444, 0.01389, 0, 0.46111], + 122: [0, 0.44444, 0, 0, 0.43472], + 126: [0.35, 0.32659, 0, 0, 0.5], + 160: [0, 0, 0, 0, 0.25], + 168: [0, 0.67937, 0, 0, 0.5], + 176: [0, 0.69444, 0, 0, 0.66667], + 184: [0.17014, 0, 0, 0, 0.44445], + 305: [0, 0.44444, 0, 0, 0.23889], + 567: [0.19444, 0.44444, 0, 0, 0.26667], + 710: [0, 0.69444, 0, 0, 0.5], + 711: [0, 0.63194, 0, 0, 0.5], + 713: [0, 0.60889, 0, 0, 0.5], + 714: [0, 0.69444, 0, 0, 0.5], + 715: [0, 0.69444, 0, 0, 0.5], + 728: [0, 0.69444, 0, 0, 0.5], + 729: [0, 0.67937, 0, 0, 0.27778], + 730: [0, 0.69444, 0, 0, 0.66667], + 732: [0, 0.67659, 0, 0, 0.5], + 733: [0, 0.69444, 0, 0, 0.5], + 915: [0, 0.69444, 0, 0, 0.54167], + 916: [0, 0.69444, 0, 0, 0.83334], + 920: [0, 0.69444, 0, 0, 0.77778], + 923: [0, 0.69444, 0, 0, 0.61111], + 926: [0, 0.69444, 0, 0, 0.66667], + 928: [0, 0.69444, 0, 0, 0.70834], + 931: [0, 0.69444, 0, 0, 0.72222], + 933: [0, 0.69444, 0, 0, 0.77778], + 934: [0, 0.69444, 0, 0, 0.72222], + 936: [0, 0.69444, 0, 0, 0.77778], + 937: [0, 0.69444, 0, 0, 0.72222], + 8211: [0, 0.44444, 0.02778, 0, 0.5], + 8212: [0, 0.44444, 0.02778, 0, 1], + 8216: [0, 0.69444, 0, 0, 0.27778], + 8217: [0, 0.69444, 0, 0, 0.27778], + 8220: [0, 0.69444, 0, 0, 0.5], + 8221: [0, 0.69444, 0, 0, 0.5] + }, + "Script-Regular": { + 32: [0, 0, 0, 0, 0.25], + 65: [0, 0.7, 0.22925, 0, 0.80253], + 66: [0, 0.7, 0.04087, 0, 0.90757], + 67: [0, 0.7, 0.1689, 0, 0.66619], + 68: [0, 0.7, 0.09371, 0, 0.77443], + 69: [0, 0.7, 0.18583, 0, 0.56162], + 70: [0, 0.7, 0.13634, 0, 0.89544], + 71: [0, 0.7, 0.17322, 0, 0.60961], + 72: [0, 0.7, 0.29694, 0, 0.96919], + 73: [0, 0.7, 0.19189, 0, 0.80907], + 74: [0.27778, 0.7, 0.19189, 0, 1.05159], + 75: [0, 0.7, 0.31259, 0, 0.91364], + 76: [0, 0.7, 0.19189, 0, 0.87373], + 77: [0, 0.7, 0.15981, 0, 1.08031], + 78: [0, 0.7, 0.3525, 0, 0.9015], + 79: [0, 0.7, 0.08078, 0, 0.73787], + 80: [0, 0.7, 0.08078, 0, 1.01262], + 81: [0, 0.7, 0.03305, 0, 0.88282], + 82: [0, 0.7, 0.06259, 0, 0.85], + 83: [0, 0.7, 0.19189, 0, 0.86767], + 84: [0, 0.7, 0.29087, 0, 0.74697], + 85: [0, 0.7, 0.25815, 0, 0.79996], + 86: [0, 0.7, 0.27523, 0, 0.62204], + 87: [0, 0.7, 0.27523, 0, 0.80532], + 88: [0, 0.7, 0.26006, 0, 0.94445], + 89: [0, 0.7, 0.2939, 0, 0.70961], + 90: [0, 0.7, 0.24037, 0, 0.8212], + 160: [0, 0, 0, 0, 0.25] + }, + "Size1-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [0.35001, 0.85, 0, 0, 0.45834], + 41: [0.35001, 0.85, 0, 0, 0.45834], + 47: [0.35001, 0.85, 0, 0, 0.57778], + 91: [0.35001, 0.85, 0, 0, 0.41667], + 92: [0.35001, 0.85, 0, 0, 0.57778], + 93: [0.35001, 0.85, 0, 0, 0.41667], + 123: [0.35001, 0.85, 0, 0, 0.58334], + 125: [0.35001, 0.85, 0, 0, 0.58334], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.72222, 0, 0, 0.55556], + 732: [0, 0.72222, 0, 0, 0.55556], + 770: [0, 0.72222, 0, 0, 0.55556], + 771: [0, 0.72222, 0, 0, 0.55556], + 8214: [-99e-5, 0.601, 0, 0, 0.77778], + 8593: [1e-5, 0.6, 0, 0, 0.66667], + 8595: [1e-5, 0.6, 0, 0, 0.66667], + 8657: [1e-5, 0.6, 0, 0, 0.77778], + 8659: [1e-5, 0.6, 0, 0, 0.77778], + 8719: [0.25001, 0.75, 0, 0, 0.94445], + 8720: [0.25001, 0.75, 0, 0, 0.94445], + 8721: [0.25001, 0.75, 0, 0, 1.05556], + 8730: [0.35001, 0.85, 0, 0, 1], + 8739: [-599e-5, 0.606, 0, 0, 0.33333], + 8741: [-599e-5, 0.606, 0, 0, 0.55556], + 8747: [0.30612, 0.805, 0.19445, 0, 0.47222], + 8748: [0.306, 0.805, 0.19445, 0, 0.47222], + 8749: [0.306, 0.805, 0.19445, 0, 0.47222], + 8750: [0.30612, 0.805, 0.19445, 0, 0.47222], + 8896: [0.25001, 0.75, 0, 0, 0.83334], + 8897: [0.25001, 0.75, 0, 0, 0.83334], + 8898: [0.25001, 0.75, 0, 0, 0.83334], + 8899: [0.25001, 0.75, 0, 0, 0.83334], + 8968: [0.35001, 0.85, 0, 0, 0.47222], + 8969: [0.35001, 0.85, 0, 0, 0.47222], + 8970: [0.35001, 0.85, 0, 0, 0.47222], + 8971: [0.35001, 0.85, 0, 0, 0.47222], + 9168: [-99e-5, 0.601, 0, 0, 0.66667], + 10216: [0.35001, 0.85, 0, 0, 0.47222], + 10217: [0.35001, 0.85, 0, 0, 0.47222], + 10752: [0.25001, 0.75, 0, 0, 1.11111], + 10753: [0.25001, 0.75, 0, 0, 1.11111], + 10754: [0.25001, 0.75, 0, 0, 1.11111], + 10756: [0.25001, 0.75, 0, 0, 0.83334], + 10758: [0.25001, 0.75, 0, 0, 0.83334] + }, + "Size2-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [0.65002, 1.15, 0, 0, 0.59722], + 41: [0.65002, 1.15, 0, 0, 0.59722], + 47: [0.65002, 1.15, 0, 0, 0.81111], + 91: [0.65002, 1.15, 0, 0, 0.47222], + 92: [0.65002, 1.15, 0, 0, 0.81111], + 93: [0.65002, 1.15, 0, 0, 0.47222], + 123: [0.65002, 1.15, 0, 0, 0.66667], + 125: [0.65002, 1.15, 0, 0, 0.66667], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.75, 0, 0, 1], + 732: [0, 0.75, 0, 0, 1], + 770: [0, 0.75, 0, 0, 1], + 771: [0, 0.75, 0, 0, 1], + 8719: [0.55001, 1.05, 0, 0, 1.27778], + 8720: [0.55001, 1.05, 0, 0, 1.27778], + 8721: [0.55001, 1.05, 0, 0, 1.44445], + 8730: [0.65002, 1.15, 0, 0, 1], + 8747: [0.86225, 1.36, 0.44445, 0, 0.55556], + 8748: [0.862, 1.36, 0.44445, 0, 0.55556], + 8749: [0.862, 1.36, 0.44445, 0, 0.55556], + 8750: [0.86225, 1.36, 0.44445, 0, 0.55556], + 8896: [0.55001, 1.05, 0, 0, 1.11111], + 8897: [0.55001, 1.05, 0, 0, 1.11111], + 8898: [0.55001, 1.05, 0, 0, 1.11111], + 8899: [0.55001, 1.05, 0, 0, 1.11111], + 8968: [0.65002, 1.15, 0, 0, 0.52778], + 8969: [0.65002, 1.15, 0, 0, 0.52778], + 8970: [0.65002, 1.15, 0, 0, 0.52778], + 8971: [0.65002, 1.15, 0, 0, 0.52778], + 10216: [0.65002, 1.15, 0, 0, 0.61111], + 10217: [0.65002, 1.15, 0, 0, 0.61111], + 10752: [0.55001, 1.05, 0, 0, 1.51112], + 10753: [0.55001, 1.05, 0, 0, 1.51112], + 10754: [0.55001, 1.05, 0, 0, 1.51112], + 10756: [0.55001, 1.05, 0, 0, 1.11111], + 10758: [0.55001, 1.05, 0, 0, 1.11111] + }, + "Size3-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [0.95003, 1.45, 0, 0, 0.73611], + 41: [0.95003, 1.45, 0, 0, 0.73611], + 47: [0.95003, 1.45, 0, 0, 1.04445], + 91: [0.95003, 1.45, 0, 0, 0.52778], + 92: [0.95003, 1.45, 0, 0, 1.04445], + 93: [0.95003, 1.45, 0, 0, 0.52778], + 123: [0.95003, 1.45, 0, 0, 0.75], + 125: [0.95003, 1.45, 0, 0, 0.75], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.75, 0, 0, 1.44445], + 732: [0, 0.75, 0, 0, 1.44445], + 770: [0, 0.75, 0, 0, 1.44445], + 771: [0, 0.75, 0, 0, 1.44445], + 8730: [0.95003, 1.45, 0, 0, 1], + 8968: [0.95003, 1.45, 0, 0, 0.58334], + 8969: [0.95003, 1.45, 0, 0, 0.58334], + 8970: [0.95003, 1.45, 0, 0, 0.58334], + 8971: [0.95003, 1.45, 0, 0, 0.58334], + 10216: [0.95003, 1.45, 0, 0, 0.75], + 10217: [0.95003, 1.45, 0, 0, 0.75] + }, + "Size4-Regular": { + 32: [0, 0, 0, 0, 0.25], + 40: [1.25003, 1.75, 0, 0, 0.79167], + 41: [1.25003, 1.75, 0, 0, 0.79167], + 47: [1.25003, 1.75, 0, 0, 1.27778], + 91: [1.25003, 1.75, 0, 0, 0.58334], + 92: [1.25003, 1.75, 0, 0, 1.27778], + 93: [1.25003, 1.75, 0, 0, 0.58334], + 123: [1.25003, 1.75, 0, 0, 0.80556], + 125: [1.25003, 1.75, 0, 0, 0.80556], + 160: [0, 0, 0, 0, 0.25], + 710: [0, 0.825, 0, 0, 1.8889], + 732: [0, 0.825, 0, 0, 1.8889], + 770: [0, 0.825, 0, 0, 1.8889], + 771: [0, 0.825, 0, 0, 1.8889], + 8730: [1.25003, 1.75, 0, 0, 1], + 8968: [1.25003, 1.75, 0, 0, 0.63889], + 8969: [1.25003, 1.75, 0, 0, 0.63889], + 8970: [1.25003, 1.75, 0, 0, 0.63889], + 8971: [1.25003, 1.75, 0, 0, 0.63889], + 9115: [0.64502, 1.155, 0, 0, 0.875], + 9116: [1e-5, 0.6, 0, 0, 0.875], + 9117: [0.64502, 1.155, 0, 0, 0.875], + 9118: [0.64502, 1.155, 0, 0, 0.875], + 9119: [1e-5, 0.6, 0, 0, 0.875], + 9120: [0.64502, 1.155, 0, 0, 0.875], + 9121: [0.64502, 1.155, 0, 0, 0.66667], + 9122: [-99e-5, 0.601, 0, 0, 0.66667], + 9123: [0.64502, 1.155, 0, 0, 0.66667], + 9124: [0.64502, 1.155, 0, 0, 0.66667], + 9125: [-99e-5, 0.601, 0, 0, 0.66667], + 9126: [0.64502, 1.155, 0, 0, 0.66667], + 9127: [1e-5, 0.9, 0, 0, 0.88889], + 9128: [0.65002, 1.15, 0, 0, 0.88889], + 9129: [0.90001, 0, 0, 0, 0.88889], + 9130: [0, 0.3, 0, 0, 0.88889], + 9131: [1e-5, 0.9, 0, 0, 0.88889], + 9132: [0.65002, 1.15, 0, 0, 0.88889], + 9133: [0.90001, 0, 0, 0, 0.88889], + 9143: [0.88502, 0.915, 0, 0, 1.05556], + 10216: [1.25003, 1.75, 0, 0, 0.80556], + 10217: [1.25003, 1.75, 0, 0, 0.80556], + 57344: [-499e-5, 0.605, 0, 0, 1.05556], + 57345: [-499e-5, 0.605, 0, 0, 1.05556], + 57680: [0, 0.12, 0, 0, 0.45], + 57681: [0, 0.12, 0, 0, 0.45], + 57682: [0, 0.12, 0, 0, 0.45], + 57683: [0, 0.12, 0, 0, 0.45] + }, + "Typewriter-Regular": { + 32: [0, 0, 0, 0, 0.525], + 33: [0, 0.61111, 0, 0, 0.525], + 34: [0, 0.61111, 0, 0, 0.525], + 35: [0, 0.61111, 0, 0, 0.525], + 36: [0.08333, 0.69444, 0, 0, 0.525], + 37: [0.08333, 0.69444, 0, 0, 0.525], + 38: [0, 0.61111, 0, 0, 0.525], + 39: [0, 0.61111, 0, 0, 0.525], + 40: [0.08333, 0.69444, 0, 0, 0.525], + 41: [0.08333, 0.69444, 0, 0, 0.525], + 42: [0, 0.52083, 0, 0, 0.525], + 43: [-0.08056, 0.53055, 0, 0, 0.525], + 44: [0.13889, 0.125, 0, 0, 0.525], + 45: [-0.08056, 0.53055, 0, 0, 0.525], + 46: [0, 0.125, 0, 0, 0.525], + 47: [0.08333, 0.69444, 0, 0, 0.525], + 48: [0, 0.61111, 0, 0, 0.525], + 49: [0, 0.61111, 0, 0, 0.525], + 50: [0, 0.61111, 0, 0, 0.525], + 51: [0, 0.61111, 0, 0, 0.525], + 52: [0, 0.61111, 0, 0, 0.525], + 53: [0, 0.61111, 0, 0, 0.525], + 54: [0, 0.61111, 0, 0, 0.525], + 55: [0, 0.61111, 0, 0, 0.525], + 56: [0, 0.61111, 0, 0, 0.525], + 57: [0, 0.61111, 0, 0, 0.525], + 58: [0, 0.43056, 0, 0, 0.525], + 59: [0.13889, 0.43056, 0, 0, 0.525], + 60: [-0.05556, 0.55556, 0, 0, 0.525], + 61: [-0.19549, 0.41562, 0, 0, 0.525], + 62: [-0.05556, 0.55556, 0, 0, 0.525], + 63: [0, 0.61111, 0, 0, 0.525], + 64: [0, 0.61111, 0, 0, 0.525], + 65: [0, 0.61111, 0, 0, 0.525], + 66: [0, 0.61111, 0, 0, 0.525], + 67: [0, 0.61111, 0, 0, 0.525], + 68: [0, 0.61111, 0, 0, 0.525], + 69: [0, 0.61111, 0, 0, 0.525], + 70: [0, 0.61111, 0, 0, 0.525], + 71: [0, 0.61111, 0, 0, 0.525], + 72: [0, 0.61111, 0, 0, 0.525], + 73: [0, 0.61111, 0, 0, 0.525], + 74: [0, 0.61111, 0, 0, 0.525], + 75: [0, 0.61111, 0, 0, 0.525], + 76: [0, 0.61111, 0, 0, 0.525], + 77: [0, 0.61111, 0, 0, 0.525], + 78: [0, 0.61111, 0, 0, 0.525], + 79: [0, 0.61111, 0, 0, 0.525], + 80: [0, 0.61111, 0, 0, 0.525], + 81: [0.13889, 0.61111, 0, 0, 0.525], + 82: [0, 0.61111, 0, 0, 0.525], + 83: [0, 0.61111, 0, 0, 0.525], + 84: [0, 0.61111, 0, 0, 0.525], + 85: [0, 0.61111, 0, 0, 0.525], + 86: [0, 0.61111, 0, 0, 0.525], + 87: [0, 0.61111, 0, 0, 0.525], + 88: [0, 0.61111, 0, 0, 0.525], + 89: [0, 0.61111, 0, 0, 0.525], + 90: [0, 0.61111, 0, 0, 0.525], + 91: [0.08333, 0.69444, 0, 0, 0.525], + 92: [0.08333, 0.69444, 0, 0, 0.525], + 93: [0.08333, 0.69444, 0, 0, 0.525], + 94: [0, 0.61111, 0, 0, 0.525], + 95: [0.09514, 0, 0, 0, 0.525], + 96: [0, 0.61111, 0, 0, 0.525], + 97: [0, 0.43056, 0, 0, 0.525], + 98: [0, 0.61111, 0, 0, 0.525], + 99: [0, 0.43056, 0, 0, 0.525], + 100: [0, 0.61111, 0, 0, 0.525], + 101: [0, 0.43056, 0, 0, 0.525], + 102: [0, 0.61111, 0, 0, 0.525], + 103: [0.22222, 0.43056, 0, 0, 0.525], + 104: [0, 0.61111, 0, 0, 0.525], + 105: [0, 0.61111, 0, 0, 0.525], + 106: [0.22222, 0.61111, 0, 0, 0.525], + 107: [0, 0.61111, 0, 0, 0.525], + 108: [0, 0.61111, 0, 0, 0.525], + 109: [0, 0.43056, 0, 0, 0.525], + 110: [0, 0.43056, 0, 0, 0.525], + 111: [0, 0.43056, 0, 0, 0.525], + 112: [0.22222, 0.43056, 0, 0, 0.525], + 113: [0.22222, 0.43056, 0, 0, 0.525], + 114: [0, 0.43056, 0, 0, 0.525], + 115: [0, 0.43056, 0, 0, 0.525], + 116: [0, 0.55358, 0, 0, 0.525], + 117: [0, 0.43056, 0, 0, 0.525], + 118: [0, 0.43056, 0, 0, 0.525], + 119: [0, 0.43056, 0, 0, 0.525], + 120: [0, 0.43056, 0, 0, 0.525], + 121: [0.22222, 0.43056, 0, 0, 0.525], + 122: [0, 0.43056, 0, 0, 0.525], + 123: [0.08333, 0.69444, 0, 0, 0.525], + 124: [0.08333, 0.69444, 0, 0, 0.525], + 125: [0.08333, 0.69444, 0, 0, 0.525], + 126: [0, 0.61111, 0, 0, 0.525], + 127: [0, 0.61111, 0, 0, 0.525], + 160: [0, 0, 0, 0, 0.525], + 176: [0, 0.61111, 0, 0, 0.525], + 184: [0.19445, 0, 0, 0, 0.525], + 305: [0, 0.43056, 0, 0, 0.525], + 567: [0.22222, 0.43056, 0, 0, 0.525], + 711: [0, 0.56597, 0, 0, 0.525], + 713: [0, 0.56555, 0, 0, 0.525], + 714: [0, 0.61111, 0, 0, 0.525], + 715: [0, 0.61111, 0, 0, 0.525], + 728: [0, 0.61111, 0, 0, 0.525], + 730: [0, 0.61111, 0, 0, 0.525], + 770: [0, 0.61111, 0, 0, 0.525], + 771: [0, 0.61111, 0, 0, 0.525], + 776: [0, 0.61111, 0, 0, 0.525], + 915: [0, 0.61111, 0, 0, 0.525], + 916: [0, 0.61111, 0, 0, 0.525], + 920: [0, 0.61111, 0, 0, 0.525], + 923: [0, 0.61111, 0, 0, 0.525], + 926: [0, 0.61111, 0, 0, 0.525], + 928: [0, 0.61111, 0, 0, 0.525], + 931: [0, 0.61111, 0, 0, 0.525], + 933: [0, 0.61111, 0, 0, 0.525], + 934: [0, 0.61111, 0, 0, 0.525], + 936: [0, 0.61111, 0, 0, 0.525], + 937: [0, 0.61111, 0, 0, 0.525], + 8216: [0, 0.61111, 0, 0, 0.525], + 8217: [0, 0.61111, 0, 0, 0.525], + 8242: [0, 0.61111, 0, 0, 0.525], + 9251: [0.11111, 0.21944, 0, 0, 0.525] + } +}, ve = { + slant: [0.25, 0.25, 0.25], + // sigma1 + space: [0, 0, 0], + // sigma2 + stretch: [0, 0, 0], + // sigma3 + shrink: [0, 0, 0], + // sigma4 + xHeight: [0.431, 0.431, 0.431], + // sigma5 + quad: [1, 1.171, 1.472], + // sigma6 + extraSpace: [0, 0, 0], + // sigma7 + num1: [0.677, 0.732, 0.925], + // sigma8 + num2: [0.394, 0.384, 0.387], + // sigma9 + num3: [0.444, 0.471, 0.504], + // sigma10 + denom1: [0.686, 0.752, 1.025], + // sigma11 + denom2: [0.345, 0.344, 0.532], + // sigma12 + sup1: [0.413, 0.503, 0.504], + // sigma13 + sup2: [0.363, 0.431, 0.404], + // sigma14 + sup3: [0.289, 0.286, 0.294], + // sigma15 + sub1: [0.15, 0.143, 0.2], + // sigma16 + sub2: [0.247, 0.286, 0.4], + // sigma17 + supDrop: [0.386, 0.353, 0.494], + // sigma18 + subDrop: [0.05, 0.071, 0.1], + // sigma19 + delim1: [2.39, 1.7, 1.98], + // sigma20 + delim2: [1.01, 1.157, 1.42], + // sigma21 + axisHeight: [0.25, 0.25, 0.25], + // sigma22 + // These font metrics are extracted from TeX by using tftopl on cmex10.tfm; + // they correspond to the font parameters of the extension fonts (family 3). + // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to + // match cmex7, we'd use cmex7.tfm values for script and scriptscript + // values. + defaultRuleThickness: [0.04, 0.049, 0.049], + // xi8; cmex7: 0.049 + bigOpSpacing1: [0.111, 0.111, 0.111], + // xi9 + bigOpSpacing2: [0.166, 0.166, 0.166], + // xi10 + bigOpSpacing3: [0.2, 0.2, 0.2], + // xi11 + bigOpSpacing4: [0.6, 0.611, 0.611], + // xi12; cmex7: 0.611 + bigOpSpacing5: [0.1, 0.143, 0.143], + // xi13; cmex7: 0.143 + // The \sqrt rule width is taken from the height of the surd character. + // Since we use the same font at all sizes, this thickness doesn't scale. + sqrtRuleThickness: [0.04, 0.04, 0.04], + // This value determines how large a pt is, for metrics which are defined + // in terms of pts. + // This value is also used in katex.less; if you change it make sure the + // values match. + ptPerEm: [10, 10, 10], + // The space between adjacent `|` columns in an array definition. From + // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm. + doubleRuleSep: [0.2, 0.2, 0.2], + // The width of separator lines in {array} environments. From + // `\showthe\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm. + arrayRuleWidth: [0.04, 0.04, 0.04], + // Two values from LaTeX source2e: + fboxsep: [0.3, 0.3, 0.3], + // 3 pt / ptPerEm + fboxrule: [0.04, 0.04, 0.04] + // 0.4 pt / ptPerEm +}, Ot = { + // Latin-1 + Å: "A", + Ð: "D", + Þ: "o", + å: "a", + ð: "d", + þ: "o", + // Cyrillic + А: "A", + Б: "B", + В: "B", + Г: "F", + Д: "A", + Е: "E", + Ж: "K", + З: "3", + И: "N", + Й: "N", + К: "K", + Л: "N", + М: "M", + Н: "H", + О: "O", + П: "N", + Р: "P", + С: "C", + Т: "T", + У: "y", + Ф: "O", + Х: "X", + Ц: "U", + Ч: "h", + Ш: "W", + Щ: "W", + Ъ: "B", + Ы: "X", + Ь: "B", + Э: "3", + Ю: "X", + Я: "R", + а: "a", + б: "b", + в: "a", + г: "r", + д: "y", + е: "e", + ж: "m", + з: "e", + и: "n", + й: "n", + к: "n", + л: "n", + м: "m", + н: "n", + о: "o", + п: "n", + р: "p", + с: "c", + т: "o", + у: "y", + ф: "b", + х: "x", + ц: "n", + ч: "n", + ш: "w", + щ: "w", + ъ: "a", + ы: "m", + ь: "a", + э: "e", + ю: "m", + я: "r" +}; +function Ga(r, e) { + x0[r] = e; +} +function ft(r, e, t) { + if (!x0[e]) + throw new Error("Font metrics not found for font: " + e + "."); + var a = r.charCodeAt(0), n = x0[e][a]; + if (!n && r[0] in Ot && (a = Ot[r[0]].charCodeAt(0), n = x0[e][a]), !n && t === "text" && vr(a) && (n = x0[e][77]), n) + return { + depth: n[0], + height: n[1], + italic: n[2], + skew: n[3], + width: n[4] + }; +} +var Ue = {}; +function Va(r) { + var e; + if (r >= 5 ? e = 0 : r >= 3 ? e = 1 : e = 2, !Ue[e]) { + var t = Ue[e] = { + cssEmPerMu: ve.quad[e] / 18 + }; + for (var a in ve) + ve.hasOwnProperty(a) && (t[a] = ve[a][e]); + } + return Ue[e]; +} +var Ua = [ + // Each element contains [textsize, scriptsize, scriptscriptsize]. + // The size mappings are taken from TeX with \normalsize=10pt. + [1, 1, 1], + // size1: [5, 5, 5] \tiny + [2, 1, 1], + // size2: [6, 5, 5] + [3, 1, 1], + // size3: [7, 5, 5] \scriptsize + [4, 2, 1], + // size4: [8, 6, 5] \footnotesize + [5, 2, 1], + // size5: [9, 6, 5] \small + [6, 3, 1], + // size6: [10, 7, 5] \normalsize + [7, 4, 2], + // size7: [12, 8, 6] \large + [8, 6, 3], + // size8: [14.4, 10, 7] \Large + [9, 7, 6], + // size9: [17.28, 12, 10] \LARGE + [10, 8, 7], + // size10: [20.74, 14.4, 12] \huge + [11, 10, 9] + // size11: [24.88, 20.74, 17.28] \HUGE +], Ht = [ + // fontMetrics.js:getGlobalMetrics also uses size indexes, so if + // you change size indexes, change that function. + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1, + 1.2, + 1.44, + 1.728, + 2.074, + 2.488 +], Ft = function(e, t) { + return t.size < 2 ? e : Ua[e - 1][t.size - 1]; +}; +class A0 { + // A font family applies to a group of fonts (i.e. SansSerif), while a font + // represents a specific font (i.e. SansSerif Bold). + // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm + /** + * The base size index. + */ + constructor(e) { + this.style = void 0, this.color = void 0, this.size = void 0, this.textSize = void 0, this.phantom = void 0, this.font = void 0, this.fontFamily = void 0, this.fontWeight = void 0, this.fontShape = void 0, this.sizeMultiplier = void 0, this.maxSize = void 0, this.minRuleThickness = void 0, this._fontMetrics = void 0, this.style = e.style, this.color = e.color, this.size = e.size || A0.BASESIZE, this.textSize = e.textSize || this.size, this.phantom = !!e.phantom, this.font = e.font || "", this.fontFamily = e.fontFamily || "", this.fontWeight = e.fontWeight || "", this.fontShape = e.fontShape || "", this.sizeMultiplier = Ht[this.size - 1], this.maxSize = e.maxSize, this.minRuleThickness = e.minRuleThickness, this._fontMetrics = void 0; + } + /** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ + extend(e) { + var t = { + style: this.style, + size: this.size, + textSize: this.textSize, + color: this.color, + phantom: this.phantom, + font: this.font, + fontFamily: this.fontFamily, + fontWeight: this.fontWeight, + fontShape: this.fontShape, + maxSize: this.maxSize, + minRuleThickness: this.minRuleThickness + }; + for (var a in e) + e.hasOwnProperty(a) && (t[a] = e[a]); + return new A0(t); + } + /** + * Return an options object with the given style. If `this.style === style`, + * returns `this`. + */ + havingStyle(e) { + return this.style === e ? this : this.extend({ + style: e, + size: Ft(this.textSize, e) + }); + } + /** + * Return an options object with a cramped version of the current style. If + * the current style is cramped, returns `this`. + */ + havingCrampedStyle() { + return this.havingStyle(this.style.cramp()); + } + /** + * Return an options object with the given size and in at least `\textstyle`. + * Returns `this` if appropriate. + */ + havingSize(e) { + return this.size === e && this.textSize === e ? this : this.extend({ + style: this.style.text(), + size: e, + textSize: e, + sizeMultiplier: Ht[e - 1] + }); + } + /** + * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, + * changes to at least `\textstyle`. + */ + havingBaseStyle(e) { + e = e || this.style.text(); + var t = Ft(A0.BASESIZE, e); + return this.size === t && this.textSize === A0.BASESIZE && this.style === e ? this : this.extend({ + style: e, + size: t + }); + } + /** + * Remove the effect of sizing changes such as \Huge. + * Keep the effect of the current style, such as \scriptstyle. + */ + havingBaseSizing() { + var e; + switch (this.style.id) { + case 4: + case 5: + e = 3; + break; + case 6: + case 7: + e = 1; + break; + default: + e = 6; + } + return this.extend({ + style: this.style.text(), + size: e + }); + } + /** + * Create a new options object with the given color. + */ + withColor(e) { + return this.extend({ + color: e + }); + } + /** + * Create a new options object with "phantom" set to true. + */ + withPhantom() { + return this.extend({ + phantom: !0 + }); + } + /** + * Creates a new options object with the given math font or old text font. + * @type {[type]} + */ + withFont(e) { + return this.extend({ + font: e + }); + } + /** + * Create a new options objects with the given fontFamily. + */ + withTextFontFamily(e) { + return this.extend({ + fontFamily: e, + font: "" + }); + } + /** + * Creates a new options object with the given font weight + */ + withTextFontWeight(e) { + return this.extend({ + fontWeight: e, + font: "" + }); + } + /** + * Creates a new options object with the given font weight + */ + withTextFontShape(e) { + return this.extend({ + fontShape: e, + font: "" + }); + } + /** + * Return the CSS sizing classes required to switch from enclosing options + * `oldOptions` to `this`. Returns an array of classes. + */ + sizingClasses(e) { + return e.size !== this.size ? ["sizing", "reset-size" + e.size, "size" + this.size] : []; + } + /** + * Return the CSS sizing classes required to switch to the base size. Like + * `this.havingSize(BASESIZE).sizingClasses(this)`. + */ + baseSizingClasses() { + return this.size !== A0.BASESIZE ? ["sizing", "reset-size" + this.size, "size" + A0.BASESIZE] : []; + } + /** + * Return the font metrics for this size. + */ + fontMetrics() { + return this._fontMetrics || (this._fontMetrics = Va(this.size)), this._fontMetrics; + } + /** + * Gets the CSS color of the current options object + */ + getColor() { + return this.phantom ? "transparent" : this.color; + } +} +A0.BASESIZE = 6; +var nt = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + pt: 1, + // TeX point + mm: 7227 / 2540, + // millimeter + cm: 7227 / 254, + // centimeter + in: 72.27, + // inch + bp: 803 / 800, + // big (PostScript) points + pc: 12, + // pica + dd: 1238 / 1157, + // didot + cc: 14856 / 1157, + // cicero (12 didot) + nd: 685 / 642, + // new didot + nc: 1370 / 107, + // new cicero (12 new didot) + sp: 1 / 65536, + // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + px: 803 / 800 + // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX +}, Ya = { + ex: !0, + em: !0, + mu: !0 +}, gr = function(e) { + return typeof e != "string" && (e = e.unit), e in nt || e in Ya || e === "ex"; +}, K = function(e, t) { + var a; + if (e.unit in nt) + a = nt[e.unit] / t.fontMetrics().ptPerEm / t.sizeMultiplier; + else if (e.unit === "mu") + a = t.fontMetrics().cssEmPerMu; + else { + var n; + if (t.style.isTight() ? n = t.havingStyle(t.style.text()) : n = t, e.unit === "ex") + a = n.fontMetrics().xHeight; + else if (e.unit === "em") + a = n.fontMetrics().quad; + else + throw new M("Invalid unit: '" + e.unit + "'"); + n !== t && (a *= n.sizeMultiplier / t.sizeMultiplier); + } + return Math.min(e.number * a, t.maxSize); +}, A = function(e) { + return +e.toFixed(4) + "em"; +}, L0 = function(e) { + return e.filter((t) => t).join(" "); +}, br = function(e, t, a) { + if (this.classes = e || [], this.attributes = {}, this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = a || {}, t) { + t.style.isTight() && this.classes.push("mtight"); + var n = t.getColor(); + n && (this.style.color = n); + } +}, yr = function(e) { + var t = document.createElement(e); + t.className = L0(this.classes); + for (var a in this.style) + this.style.hasOwnProperty(a) && (t.style[a] = this.style[a]); + for (var n in this.attributes) + this.attributes.hasOwnProperty(n) && t.setAttribute(n, this.attributes[n]); + for (var s = 0; s < this.children.length; s++) + t.appendChild(this.children[s].toNode()); + return t; +}, xr = function(e) { + var t = "<" + e; + this.classes.length && (t += ' class="' + q.escape(L0(this.classes)) + '"'); + var a = ""; + for (var n in this.style) + this.style.hasOwnProperty(n) && (a += q.hyphenate(n) + ":" + this.style[n] + ";"); + a && (t += ' style="' + q.escape(a) + '"'); + for (var s in this.attributes) + this.attributes.hasOwnProperty(s) && (t += " " + s + '="' + q.escape(this.attributes[s]) + '"'); + t += ">"; + for (var o = 0; o < this.children.length; o++) + t += this.children[o].toMarkup(); + return t += "", t; +}; +class he { + constructor(e, t, a, n) { + this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.width = void 0, this.maxFontSize = void 0, this.style = void 0, br.call(this, e, a, n), this.children = t || []; + } + /** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not + * all browsers support attributes the same, and having too many custom + * attributes is probably bad. + */ + setAttribute(e, t) { + this.attributes[e] = t; + } + hasClass(e) { + return q.contains(this.classes, e); + } + toNode() { + return yr.call(this, "span"); + } + toMarkup() { + return xr.call(this, "span"); + } +} +class pt { + constructor(e, t, a, n) { + this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, br.call(this, t, n), this.children = a || [], this.setAttribute("href", e); + } + setAttribute(e, t) { + this.attributes[e] = t; + } + hasClass(e) { + return q.contains(this.classes, e); + } + toNode() { + return yr.call(this, "a"); + } + toMarkup() { + return xr.call(this, "a"); + } +} +class Xa { + constructor(e, t, a) { + this.src = void 0, this.alt = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.alt = t, this.src = e, this.classes = ["mord"], this.style = a; + } + hasClass(e) { + return q.contains(this.classes, e); + } + toNode() { + var e = document.createElement("img"); + e.src = this.src, e.alt = this.alt, e.className = "mord"; + for (var t in this.style) + this.style.hasOwnProperty(t) && (e.style[t] = this.style[t]); + return e; + } + toMarkup() { + var e = '' + q.escape(this.alt) + ' 0 && (t = document.createElement("span"), t.style.marginRight = A(this.italic)), this.classes.length > 0 && (t = t || document.createElement("span"), t.className = L0(this.classes)); + for (var a in this.style) + this.style.hasOwnProperty(a) && (t = t || document.createElement("span"), t.style[a] = this.style[a]); + return t ? (t.appendChild(e), t) : e; + } + /** + * Creates markup for a symbol node. + */ + toMarkup() { + var e = !1, t = " 0 && (a += "margin-right:" + this.italic + "em;"); + for (var n in this.style) + this.style.hasOwnProperty(n) && (a += q.hyphenate(n) + ":" + this.style[n] + ";"); + a && (e = !0, t += ' style="' + q.escape(a) + '"'); + var s = q.escape(this.text); + return e ? (t += ">", t += s, t += "", t) : s; + } +} +class D0 { + constructor(e, t) { + this.children = void 0, this.attributes = void 0, this.children = e || [], this.attributes = t || {}; + } + toNode() { + var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "svg"); + for (var a in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, a) && t.setAttribute(a, this.attributes[a]); + for (var n = 0; n < this.children.length; n++) + t.appendChild(this.children[n].toNode()); + return t; + } + toMarkup() { + var e = '' : ''; + } +} +class it { + constructor(e) { + this.attributes = void 0, this.attributes = e || {}; + } + toNode() { + var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "line"); + for (var a in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, a) && t.setAttribute(a, this.attributes[a]); + return t; + } + toMarkup() { + var e = " but got " + String(r) + "."); +} +var ja = { + bin: 1, + close: 1, + inner: 1, + open: 1, + punct: 1, + rel: 1 +}, Za = { + "accent-token": 1, + mathord: 1, + "op-token": 1, + spacing: 1, + textord: 1 +}, $ = { + math: {}, + text: {} +}; +function i(r, e, t, a, n, s) { + $[r][n] = { + font: e, + group: t, + replace: a + }, s && a && ($[r][a] = $[r][n]); +} +var l = "math", k = "text", u = "main", d = "ams", W = "accent-token", D = "bin", i0 = "close", te = "inner", E = "mathord", _ = "op-token", h0 = "open", qe = "punct", f = "rel", q0 = "spacing", v = "textord"; +i(l, u, f, "≡", "\\equiv", !0); +i(l, u, f, "≺", "\\prec", !0); +i(l, u, f, "≻", "\\succ", !0); +i(l, u, f, "∼", "\\sim", !0); +i(l, u, f, "⊥", "\\perp"); +i(l, u, f, "⪯", "\\preceq", !0); +i(l, u, f, "⪰", "\\succeq", !0); +i(l, u, f, "≃", "\\simeq", !0); +i(l, u, f, "∣", "\\mid", !0); +i(l, u, f, "≪", "\\ll", !0); +i(l, u, f, "≫", "\\gg", !0); +i(l, u, f, "≍", "\\asymp", !0); +i(l, u, f, "∥", "\\parallel"); +i(l, u, f, "⋈", "\\bowtie", !0); +i(l, u, f, "⌣", "\\smile", !0); +i(l, u, f, "⊑", "\\sqsubseteq", !0); +i(l, u, f, "⊒", "\\sqsupseteq", !0); +i(l, u, f, "≐", "\\doteq", !0); +i(l, u, f, "⌢", "\\frown", !0); +i(l, u, f, "∋", "\\ni", !0); +i(l, u, f, "∝", "\\propto", !0); +i(l, u, f, "⊢", "\\vdash", !0); +i(l, u, f, "⊣", "\\dashv", !0); +i(l, u, f, "∋", "\\owns"); +i(l, u, qe, ".", "\\ldotp"); +i(l, u, qe, "⋅", "\\cdotp"); +i(l, u, v, "#", "\\#"); +i(k, u, v, "#", "\\#"); +i(l, u, v, "&", "\\&"); +i(k, u, v, "&", "\\&"); +i(l, u, v, "ℵ", "\\aleph", !0); +i(l, u, v, "∀", "\\forall", !0); +i(l, u, v, "ℏ", "\\hbar", !0); +i(l, u, v, "∃", "\\exists", !0); +i(l, u, v, "∇", "\\nabla", !0); +i(l, u, v, "♭", "\\flat", !0); +i(l, u, v, "ℓ", "\\ell", !0); +i(l, u, v, "♮", "\\natural", !0); +i(l, u, v, "♣", "\\clubsuit", !0); +i(l, u, v, "℘", "\\wp", !0); +i(l, u, v, "♯", "\\sharp", !0); +i(l, u, v, "♢", "\\diamondsuit", !0); +i(l, u, v, "ℜ", "\\Re", !0); +i(l, u, v, "♡", "\\heartsuit", !0); +i(l, u, v, "ℑ", "\\Im", !0); +i(l, u, v, "♠", "\\spadesuit", !0); +i(l, u, v, "§", "\\S", !0); +i(k, u, v, "§", "\\S"); +i(l, u, v, "¶", "\\P", !0); +i(k, u, v, "¶", "\\P"); +i(l, u, v, "†", "\\dag"); +i(k, u, v, "†", "\\dag"); +i(k, u, v, "†", "\\textdagger"); +i(l, u, v, "‡", "\\ddag"); +i(k, u, v, "‡", "\\ddag"); +i(k, u, v, "‡", "\\textdaggerdbl"); +i(l, u, i0, "⎱", "\\rmoustache", !0); +i(l, u, h0, "⎰", "\\lmoustache", !0); +i(l, u, i0, "⟯", "\\rgroup", !0); +i(l, u, h0, "⟮", "\\lgroup", !0); +i(l, u, D, "∓", "\\mp", !0); +i(l, u, D, "⊖", "\\ominus", !0); +i(l, u, D, "⊎", "\\uplus", !0); +i(l, u, D, "⊓", "\\sqcap", !0); +i(l, u, D, "∗", "\\ast"); +i(l, u, D, "⊔", "\\sqcup", !0); +i(l, u, D, "◯", "\\bigcirc", !0); +i(l, u, D, "∙", "\\bullet", !0); +i(l, u, D, "‡", "\\ddagger"); +i(l, u, D, "≀", "\\wr", !0); +i(l, u, D, "⨿", "\\amalg"); +i(l, u, D, "&", "\\And"); +i(l, u, f, "⟵", "\\longleftarrow", !0); +i(l, u, f, "⇐", "\\Leftarrow", !0); +i(l, u, f, "⟸", "\\Longleftarrow", !0); +i(l, u, f, "⟶", "\\longrightarrow", !0); +i(l, u, f, "⇒", "\\Rightarrow", !0); +i(l, u, f, "⟹", "\\Longrightarrow", !0); +i(l, u, f, "↔", "\\leftrightarrow", !0); +i(l, u, f, "⟷", "\\longleftrightarrow", !0); +i(l, u, f, "⇔", "\\Leftrightarrow", !0); +i(l, u, f, "⟺", "\\Longleftrightarrow", !0); +i(l, u, f, "↦", "\\mapsto", !0); +i(l, u, f, "⟼", "\\longmapsto", !0); +i(l, u, f, "↗", "\\nearrow", !0); +i(l, u, f, "↩", "\\hookleftarrow", !0); +i(l, u, f, "↪", "\\hookrightarrow", !0); +i(l, u, f, "↘", "\\searrow", !0); +i(l, u, f, "↼", "\\leftharpoonup", !0); +i(l, u, f, "⇀", "\\rightharpoonup", !0); +i(l, u, f, "↙", "\\swarrow", !0); +i(l, u, f, "↽", "\\leftharpoondown", !0); +i(l, u, f, "⇁", "\\rightharpoondown", !0); +i(l, u, f, "↖", "\\nwarrow", !0); +i(l, u, f, "⇌", "\\rightleftharpoons", !0); +i(l, d, f, "≮", "\\nless", !0); +i(l, d, f, "", "\\@nleqslant"); +i(l, d, f, "", "\\@nleqq"); +i(l, d, f, "⪇", "\\lneq", !0); +i(l, d, f, "≨", "\\lneqq", !0); +i(l, d, f, "", "\\@lvertneqq"); +i(l, d, f, "⋦", "\\lnsim", !0); +i(l, d, f, "⪉", "\\lnapprox", !0); +i(l, d, f, "⊀", "\\nprec", !0); +i(l, d, f, "⋠", "\\npreceq", !0); +i(l, d, f, "⋨", "\\precnsim", !0); +i(l, d, f, "⪹", "\\precnapprox", !0); +i(l, d, f, "≁", "\\nsim", !0); +i(l, d, f, "", "\\@nshortmid"); +i(l, d, f, "∤", "\\nmid", !0); +i(l, d, f, "⊬", "\\nvdash", !0); +i(l, d, f, "⊭", "\\nvDash", !0); +i(l, d, f, "⋪", "\\ntriangleleft"); +i(l, d, f, "⋬", "\\ntrianglelefteq", !0); +i(l, d, f, "⊊", "\\subsetneq", !0); +i(l, d, f, "", "\\@varsubsetneq"); +i(l, d, f, "⫋", "\\subsetneqq", !0); +i(l, d, f, "", "\\@varsubsetneqq"); +i(l, d, f, "≯", "\\ngtr", !0); +i(l, d, f, "", "\\@ngeqslant"); +i(l, d, f, "", "\\@ngeqq"); +i(l, d, f, "⪈", "\\gneq", !0); +i(l, d, f, "≩", "\\gneqq", !0); +i(l, d, f, "", "\\@gvertneqq"); +i(l, d, f, "⋧", "\\gnsim", !0); +i(l, d, f, "⪊", "\\gnapprox", !0); +i(l, d, f, "⊁", "\\nsucc", !0); +i(l, d, f, "⋡", "\\nsucceq", !0); +i(l, d, f, "⋩", "\\succnsim", !0); +i(l, d, f, "⪺", "\\succnapprox", !0); +i(l, d, f, "≆", "\\ncong", !0); +i(l, d, f, "", "\\@nshortparallel"); +i(l, d, f, "∦", "\\nparallel", !0); +i(l, d, f, "⊯", "\\nVDash", !0); +i(l, d, f, "⋫", "\\ntriangleright"); +i(l, d, f, "⋭", "\\ntrianglerighteq", !0); +i(l, d, f, "", "\\@nsupseteqq"); +i(l, d, f, "⊋", "\\supsetneq", !0); +i(l, d, f, "", "\\@varsupsetneq"); +i(l, d, f, "⫌", "\\supsetneqq", !0); +i(l, d, f, "", "\\@varsupsetneqq"); +i(l, d, f, "⊮", "\\nVdash", !0); +i(l, d, f, "⪵", "\\precneqq", !0); +i(l, d, f, "⪶", "\\succneqq", !0); +i(l, d, f, "", "\\@nsubseteqq"); +i(l, d, D, "⊴", "\\unlhd"); +i(l, d, D, "⊵", "\\unrhd"); +i(l, d, f, "↚", "\\nleftarrow", !0); +i(l, d, f, "↛", "\\nrightarrow", !0); +i(l, d, f, "⇍", "\\nLeftarrow", !0); +i(l, d, f, "⇏", "\\nRightarrow", !0); +i(l, d, f, "↮", "\\nleftrightarrow", !0); +i(l, d, f, "⇎", "\\nLeftrightarrow", !0); +i(l, d, f, "△", "\\vartriangle"); +i(l, d, v, "ℏ", "\\hslash"); +i(l, d, v, "▽", "\\triangledown"); +i(l, d, v, "◊", "\\lozenge"); +i(l, d, v, "Ⓢ", "\\circledS"); +i(l, d, v, "®", "\\circledR"); +i(k, d, v, "®", "\\circledR"); +i(l, d, v, "∡", "\\measuredangle", !0); +i(l, d, v, "∄", "\\nexists"); +i(l, d, v, "℧", "\\mho"); +i(l, d, v, "Ⅎ", "\\Finv", !0); +i(l, d, v, "⅁", "\\Game", !0); +i(l, d, v, "‵", "\\backprime"); +i(l, d, v, "▲", "\\blacktriangle"); +i(l, d, v, "▼", "\\blacktriangledown"); +i(l, d, v, "■", "\\blacksquare"); +i(l, d, v, "⧫", "\\blacklozenge"); +i(l, d, v, "★", "\\bigstar"); +i(l, d, v, "∢", "\\sphericalangle", !0); +i(l, d, v, "∁", "\\complement", !0); +i(l, d, v, "ð", "\\eth", !0); +i(k, u, v, "ð", "ð"); +i(l, d, v, "╱", "\\diagup"); +i(l, d, v, "╲", "\\diagdown"); +i(l, d, v, "□", "\\square"); +i(l, d, v, "□", "\\Box"); +i(l, d, v, "◊", "\\Diamond"); +i(l, d, v, "¥", "\\yen", !0); +i(k, d, v, "¥", "\\yen", !0); +i(l, d, v, "✓", "\\checkmark", !0); +i(k, d, v, "✓", "\\checkmark"); +i(l, d, v, "ℶ", "\\beth", !0); +i(l, d, v, "ℸ", "\\daleth", !0); +i(l, d, v, "ℷ", "\\gimel", !0); +i(l, d, v, "ϝ", "\\digamma", !0); +i(l, d, v, "ϰ", "\\varkappa"); +i(l, d, h0, "┌", "\\@ulcorner", !0); +i(l, d, i0, "┐", "\\@urcorner", !0); +i(l, d, h0, "└", "\\@llcorner", !0); +i(l, d, i0, "┘", "\\@lrcorner", !0); +i(l, d, f, "≦", "\\leqq", !0); +i(l, d, f, "⩽", "\\leqslant", !0); +i(l, d, f, "⪕", "\\eqslantless", !0); +i(l, d, f, "≲", "\\lesssim", !0); +i(l, d, f, "⪅", "\\lessapprox", !0); +i(l, d, f, "≊", "\\approxeq", !0); +i(l, d, D, "⋖", "\\lessdot"); +i(l, d, f, "⋘", "\\lll", !0); +i(l, d, f, "≶", "\\lessgtr", !0); +i(l, d, f, "⋚", "\\lesseqgtr", !0); +i(l, d, f, "⪋", "\\lesseqqgtr", !0); +i(l, d, f, "≑", "\\doteqdot"); +i(l, d, f, "≓", "\\risingdotseq", !0); +i(l, d, f, "≒", "\\fallingdotseq", !0); +i(l, d, f, "∽", "\\backsim", !0); +i(l, d, f, "⋍", "\\backsimeq", !0); +i(l, d, f, "⫅", "\\subseteqq", !0); +i(l, d, f, "⋐", "\\Subset", !0); +i(l, d, f, "⊏", "\\sqsubset", !0); +i(l, d, f, "≼", "\\preccurlyeq", !0); +i(l, d, f, "⋞", "\\curlyeqprec", !0); +i(l, d, f, "≾", "\\precsim", !0); +i(l, d, f, "⪷", "\\precapprox", !0); +i(l, d, f, "⊲", "\\vartriangleleft"); +i(l, d, f, "⊴", "\\trianglelefteq"); +i(l, d, f, "⊨", "\\vDash", !0); +i(l, d, f, "⊪", "\\Vvdash", !0); +i(l, d, f, "⌣", "\\smallsmile"); +i(l, d, f, "⌢", "\\smallfrown"); +i(l, d, f, "≏", "\\bumpeq", !0); +i(l, d, f, "≎", "\\Bumpeq", !0); +i(l, d, f, "≧", "\\geqq", !0); +i(l, d, f, "⩾", "\\geqslant", !0); +i(l, d, f, "⪖", "\\eqslantgtr", !0); +i(l, d, f, "≳", "\\gtrsim", !0); +i(l, d, f, "⪆", "\\gtrapprox", !0); +i(l, d, D, "⋗", "\\gtrdot"); +i(l, d, f, "⋙", "\\ggg", !0); +i(l, d, f, "≷", "\\gtrless", !0); +i(l, d, f, "⋛", "\\gtreqless", !0); +i(l, d, f, "⪌", "\\gtreqqless", !0); +i(l, d, f, "≖", "\\eqcirc", !0); +i(l, d, f, "≗", "\\circeq", !0); +i(l, d, f, "≜", "\\triangleq", !0); +i(l, d, f, "∼", "\\thicksim"); +i(l, d, f, "≈", "\\thickapprox"); +i(l, d, f, "⫆", "\\supseteqq", !0); +i(l, d, f, "⋑", "\\Supset", !0); +i(l, d, f, "⊐", "\\sqsupset", !0); +i(l, d, f, "≽", "\\succcurlyeq", !0); +i(l, d, f, "⋟", "\\curlyeqsucc", !0); +i(l, d, f, "≿", "\\succsim", !0); +i(l, d, f, "⪸", "\\succapprox", !0); +i(l, d, f, "⊳", "\\vartriangleright"); +i(l, d, f, "⊵", "\\trianglerighteq"); +i(l, d, f, "⊩", "\\Vdash", !0); +i(l, d, f, "∣", "\\shortmid"); +i(l, d, f, "∥", "\\shortparallel"); +i(l, d, f, "≬", "\\between", !0); +i(l, d, f, "⋔", "\\pitchfork", !0); +i(l, d, f, "∝", "\\varpropto"); +i(l, d, f, "◀", "\\blacktriangleleft"); +i(l, d, f, "∴", "\\therefore", !0); +i(l, d, f, "∍", "\\backepsilon"); +i(l, d, f, "▶", "\\blacktriangleright"); +i(l, d, f, "∵", "\\because", !0); +i(l, d, f, "⋘", "\\llless"); +i(l, d, f, "⋙", "\\gggtr"); +i(l, d, D, "⊲", "\\lhd"); +i(l, d, D, "⊳", "\\rhd"); +i(l, d, f, "≂", "\\eqsim", !0); +i(l, u, f, "⋈", "\\Join"); +i(l, d, f, "≑", "\\Doteq", !0); +i(l, d, D, "∔", "\\dotplus", !0); +i(l, d, D, "∖", "\\smallsetminus"); +i(l, d, D, "⋒", "\\Cap", !0); +i(l, d, D, "⋓", "\\Cup", !0); +i(l, d, D, "⩞", "\\doublebarwedge", !0); +i(l, d, D, "⊟", "\\boxminus", !0); +i(l, d, D, "⊞", "\\boxplus", !0); +i(l, d, D, "⋇", "\\divideontimes", !0); +i(l, d, D, "⋉", "\\ltimes", !0); +i(l, d, D, "⋊", "\\rtimes", !0); +i(l, d, D, "⋋", "\\leftthreetimes", !0); +i(l, d, D, "⋌", "\\rightthreetimes", !0); +i(l, d, D, "⋏", "\\curlywedge", !0); +i(l, d, D, "⋎", "\\curlyvee", !0); +i(l, d, D, "⊝", "\\circleddash", !0); +i(l, d, D, "⊛", "\\circledast", !0); +i(l, d, D, "⋅", "\\centerdot"); +i(l, d, D, "⊺", "\\intercal", !0); +i(l, d, D, "⋒", "\\doublecap"); +i(l, d, D, "⋓", "\\doublecup"); +i(l, d, D, "⊠", "\\boxtimes", !0); +i(l, d, f, "⇢", "\\dashrightarrow", !0); +i(l, d, f, "⇠", "\\dashleftarrow", !0); +i(l, d, f, "⇇", "\\leftleftarrows", !0); +i(l, d, f, "⇆", "\\leftrightarrows", !0); +i(l, d, f, "⇚", "\\Lleftarrow", !0); +i(l, d, f, "↞", "\\twoheadleftarrow", !0); +i(l, d, f, "↢", "\\leftarrowtail", !0); +i(l, d, f, "↫", "\\looparrowleft", !0); +i(l, d, f, "⇋", "\\leftrightharpoons", !0); +i(l, d, f, "↶", "\\curvearrowleft", !0); +i(l, d, f, "↺", "\\circlearrowleft", !0); +i(l, d, f, "↰", "\\Lsh", !0); +i(l, d, f, "⇈", "\\upuparrows", !0); +i(l, d, f, "↿", "\\upharpoonleft", !0); +i(l, d, f, "⇃", "\\downharpoonleft", !0); +i(l, u, f, "⊶", "\\origof", !0); +i(l, u, f, "⊷", "\\imageof", !0); +i(l, d, f, "⊸", "\\multimap", !0); +i(l, d, f, "↭", "\\leftrightsquigarrow", !0); +i(l, d, f, "⇉", "\\rightrightarrows", !0); +i(l, d, f, "⇄", "\\rightleftarrows", !0); +i(l, d, f, "↠", "\\twoheadrightarrow", !0); +i(l, d, f, "↣", "\\rightarrowtail", !0); +i(l, d, f, "↬", "\\looparrowright", !0); +i(l, d, f, "↷", "\\curvearrowright", !0); +i(l, d, f, "↻", "\\circlearrowright", !0); +i(l, d, f, "↱", "\\Rsh", !0); +i(l, d, f, "⇊", "\\downdownarrows", !0); +i(l, d, f, "↾", "\\upharpoonright", !0); +i(l, d, f, "⇂", "\\downharpoonright", !0); +i(l, d, f, "⇝", "\\rightsquigarrow", !0); +i(l, d, f, "⇝", "\\leadsto"); +i(l, d, f, "⇛", "\\Rrightarrow", !0); +i(l, d, f, "↾", "\\restriction"); +i(l, u, v, "‘", "`"); +i(l, u, v, "$", "\\$"); +i(k, u, v, "$", "\\$"); +i(k, u, v, "$", "\\textdollar"); +i(l, u, v, "%", "\\%"); +i(k, u, v, "%", "\\%"); +i(l, u, v, "_", "\\_"); +i(k, u, v, "_", "\\_"); +i(k, u, v, "_", "\\textunderscore"); +i(l, u, v, "∠", "\\angle", !0); +i(l, u, v, "∞", "\\infty", !0); +i(l, u, v, "′", "\\prime"); +i(l, u, v, "△", "\\triangle"); +i(l, u, v, "Γ", "\\Gamma", !0); +i(l, u, v, "Δ", "\\Delta", !0); +i(l, u, v, "Θ", "\\Theta", !0); +i(l, u, v, "Λ", "\\Lambda", !0); +i(l, u, v, "Ξ", "\\Xi", !0); +i(l, u, v, "Π", "\\Pi", !0); +i(l, u, v, "Σ", "\\Sigma", !0); +i(l, u, v, "Υ", "\\Upsilon", !0); +i(l, u, v, "Φ", "\\Phi", !0); +i(l, u, v, "Ψ", "\\Psi", !0); +i(l, u, v, "Ω", "\\Omega", !0); +i(l, u, v, "A", "Α"); +i(l, u, v, "B", "Β"); +i(l, u, v, "E", "Ε"); +i(l, u, v, "Z", "Ζ"); +i(l, u, v, "H", "Η"); +i(l, u, v, "I", "Ι"); +i(l, u, v, "K", "Κ"); +i(l, u, v, "M", "Μ"); +i(l, u, v, "N", "Ν"); +i(l, u, v, "O", "Ο"); +i(l, u, v, "P", "Ρ"); +i(l, u, v, "T", "Τ"); +i(l, u, v, "X", "Χ"); +i(l, u, v, "¬", "\\neg", !0); +i(l, u, v, "¬", "\\lnot"); +i(l, u, v, "⊤", "\\top"); +i(l, u, v, "⊥", "\\bot"); +i(l, u, v, "∅", "\\emptyset"); +i(l, d, v, "∅", "\\varnothing"); +i(l, u, E, "α", "\\alpha", !0); +i(l, u, E, "β", "\\beta", !0); +i(l, u, E, "γ", "\\gamma", !0); +i(l, u, E, "δ", "\\delta", !0); +i(l, u, E, "ϵ", "\\epsilon", !0); +i(l, u, E, "ζ", "\\zeta", !0); +i(l, u, E, "η", "\\eta", !0); +i(l, u, E, "θ", "\\theta", !0); +i(l, u, E, "ι", "\\iota", !0); +i(l, u, E, "κ", "\\kappa", !0); +i(l, u, E, "λ", "\\lambda", !0); +i(l, u, E, "μ", "\\mu", !0); +i(l, u, E, "ν", "\\nu", !0); +i(l, u, E, "ξ", "\\xi", !0); +i(l, u, E, "ο", "\\omicron", !0); +i(l, u, E, "π", "\\pi", !0); +i(l, u, E, "ρ", "\\rho", !0); +i(l, u, E, "σ", "\\sigma", !0); +i(l, u, E, "τ", "\\tau", !0); +i(l, u, E, "υ", "\\upsilon", !0); +i(l, u, E, "ϕ", "\\phi", !0); +i(l, u, E, "χ", "\\chi", !0); +i(l, u, E, "ψ", "\\psi", !0); +i(l, u, E, "ω", "\\omega", !0); +i(l, u, E, "ε", "\\varepsilon", !0); +i(l, u, E, "ϑ", "\\vartheta", !0); +i(l, u, E, "ϖ", "\\varpi", !0); +i(l, u, E, "ϱ", "\\varrho", !0); +i(l, u, E, "ς", "\\varsigma", !0); +i(l, u, E, "φ", "\\varphi", !0); +i(l, u, D, "∗", "*", !0); +i(l, u, D, "+", "+"); +i(l, u, D, "−", "-", !0); +i(l, u, D, "⋅", "\\cdot", !0); +i(l, u, D, "∘", "\\circ", !0); +i(l, u, D, "÷", "\\div", !0); +i(l, u, D, "±", "\\pm", !0); +i(l, u, D, "×", "\\times", !0); +i(l, u, D, "∩", "\\cap", !0); +i(l, u, D, "∪", "\\cup", !0); +i(l, u, D, "∖", "\\setminus", !0); +i(l, u, D, "∧", "\\land"); +i(l, u, D, "∨", "\\lor"); +i(l, u, D, "∧", "\\wedge", !0); +i(l, u, D, "∨", "\\vee", !0); +i(l, u, v, "√", "\\surd"); +i(l, u, h0, "⟨", "\\langle", !0); +i(l, u, h0, "∣", "\\lvert"); +i(l, u, h0, "∥", "\\lVert"); +i(l, u, i0, "?", "?"); +i(l, u, i0, "!", "!"); +i(l, u, i0, "⟩", "\\rangle", !0); +i(l, u, i0, "∣", "\\rvert"); +i(l, u, i0, "∥", "\\rVert"); +i(l, u, f, "=", "="); +i(l, u, f, ":", ":"); +i(l, u, f, "≈", "\\approx", !0); +i(l, u, f, "≅", "\\cong", !0); +i(l, u, f, "≥", "\\ge"); +i(l, u, f, "≥", "\\geq", !0); +i(l, u, f, "←", "\\gets"); +i(l, u, f, ">", "\\gt", !0); +i(l, u, f, "∈", "\\in", !0); +i(l, u, f, "", "\\@not"); +i(l, u, f, "⊂", "\\subset", !0); +i(l, u, f, "⊃", "\\supset", !0); +i(l, u, f, "⊆", "\\subseteq", !0); +i(l, u, f, "⊇", "\\supseteq", !0); +i(l, d, f, "⊈", "\\nsubseteq", !0); +i(l, d, f, "⊉", "\\nsupseteq", !0); +i(l, u, f, "⊨", "\\models"); +i(l, u, f, "←", "\\leftarrow", !0); +i(l, u, f, "≤", "\\le"); +i(l, u, f, "≤", "\\leq", !0); +i(l, u, f, "<", "\\lt", !0); +i(l, u, f, "→", "\\rightarrow", !0); +i(l, u, f, "→", "\\to"); +i(l, d, f, "≱", "\\ngeq", !0); +i(l, d, f, "≰", "\\nleq", !0); +i(l, u, q0, " ", "\\ "); +i(l, u, q0, " ", "\\space"); +i(l, u, q0, " ", "\\nobreakspace"); +i(k, u, q0, " ", "\\ "); +i(k, u, q0, " ", " "); +i(k, u, q0, " ", "\\space"); +i(k, u, q0, " ", "\\nobreakspace"); +i(l, u, q0, null, "\\nobreak"); +i(l, u, q0, null, "\\allowbreak"); +i(l, u, qe, ",", ","); +i(l, u, qe, ";", ";"); +i(l, d, D, "⊼", "\\barwedge", !0); +i(l, d, D, "⊻", "\\veebar", !0); +i(l, u, D, "⊙", "\\odot", !0); +i(l, u, D, "⊕", "\\oplus", !0); +i(l, u, D, "⊗", "\\otimes", !0); +i(l, u, v, "∂", "\\partial", !0); +i(l, u, D, "⊘", "\\oslash", !0); +i(l, d, D, "⊚", "\\circledcirc", !0); +i(l, d, D, "⊡", "\\boxdot", !0); +i(l, u, D, "△", "\\bigtriangleup"); +i(l, u, D, "▽", "\\bigtriangledown"); +i(l, u, D, "†", "\\dagger"); +i(l, u, D, "⋄", "\\diamond"); +i(l, u, D, "⋆", "\\star"); +i(l, u, D, "◃", "\\triangleleft"); +i(l, u, D, "▹", "\\triangleright"); +i(l, u, h0, "{", "\\{"); +i(k, u, v, "{", "\\{"); +i(k, u, v, "{", "\\textbraceleft"); +i(l, u, i0, "}", "\\}"); +i(k, u, v, "}", "\\}"); +i(k, u, v, "}", "\\textbraceright"); +i(l, u, h0, "{", "\\lbrace"); +i(l, u, i0, "}", "\\rbrace"); +i(l, u, h0, "[", "\\lbrack", !0); +i(k, u, v, "[", "\\lbrack", !0); +i(l, u, i0, "]", "\\rbrack", !0); +i(k, u, v, "]", "\\rbrack", !0); +i(l, u, h0, "(", "\\lparen", !0); +i(l, u, i0, ")", "\\rparen", !0); +i(k, u, v, "<", "\\textless", !0); +i(k, u, v, ">", "\\textgreater", !0); +i(l, u, h0, "⌊", "\\lfloor", !0); +i(l, u, i0, "⌋", "\\rfloor", !0); +i(l, u, h0, "⌈", "\\lceil", !0); +i(l, u, i0, "⌉", "\\rceil", !0); +i(l, u, v, "\\", "\\backslash"); +i(l, u, v, "∣", "|"); +i(l, u, v, "∣", "\\vert"); +i(k, u, v, "|", "\\textbar", !0); +i(l, u, v, "∥", "\\|"); +i(l, u, v, "∥", "\\Vert"); +i(k, u, v, "∥", "\\textbardbl"); +i(k, u, v, "~", "\\textasciitilde"); +i(k, u, v, "\\", "\\textbackslash"); +i(k, u, v, "^", "\\textasciicircum"); +i(l, u, f, "↑", "\\uparrow", !0); +i(l, u, f, "⇑", "\\Uparrow", !0); +i(l, u, f, "↓", "\\downarrow", !0); +i(l, u, f, "⇓", "\\Downarrow", !0); +i(l, u, f, "↕", "\\updownarrow", !0); +i(l, u, f, "⇕", "\\Updownarrow", !0); +i(l, u, _, "∐", "\\coprod"); +i(l, u, _, "⋁", "\\bigvee"); +i(l, u, _, "⋀", "\\bigwedge"); +i(l, u, _, "⨄", "\\biguplus"); +i(l, u, _, "⋂", "\\bigcap"); +i(l, u, _, "⋃", "\\bigcup"); +i(l, u, _, "∫", "\\int"); +i(l, u, _, "∫", "\\intop"); +i(l, u, _, "∬", "\\iint"); +i(l, u, _, "∭", "\\iiint"); +i(l, u, _, "∏", "\\prod"); +i(l, u, _, "∑", "\\sum"); +i(l, u, _, "⨂", "\\bigotimes"); +i(l, u, _, "⨁", "\\bigoplus"); +i(l, u, _, "⨀", "\\bigodot"); +i(l, u, _, "∮", "\\oint"); +i(l, u, _, "∯", "\\oiint"); +i(l, u, _, "∰", "\\oiiint"); +i(l, u, _, "⨆", "\\bigsqcup"); +i(l, u, _, "∫", "\\smallint"); +i(k, u, te, "…", "\\textellipsis"); +i(l, u, te, "…", "\\mathellipsis"); +i(k, u, te, "…", "\\ldots", !0); +i(l, u, te, "…", "\\ldots", !0); +i(l, u, te, "⋯", "\\@cdots", !0); +i(l, u, te, "⋱", "\\ddots", !0); +i(l, u, v, "⋮", "\\varvdots"); +i(l, u, W, "ˊ", "\\acute"); +i(l, u, W, "ˋ", "\\grave"); +i(l, u, W, "¨", "\\ddot"); +i(l, u, W, "~", "\\tilde"); +i(l, u, W, "ˉ", "\\bar"); +i(l, u, W, "˘", "\\breve"); +i(l, u, W, "ˇ", "\\check"); +i(l, u, W, "^", "\\hat"); +i(l, u, W, "⃗", "\\vec"); +i(l, u, W, "˙", "\\dot"); +i(l, u, W, "˚", "\\mathring"); +i(l, u, E, "", "\\@imath"); +i(l, u, E, "", "\\@jmath"); +i(l, u, v, "ı", "ı"); +i(l, u, v, "ȷ", "ȷ"); +i(k, u, v, "ı", "\\i", !0); +i(k, u, v, "ȷ", "\\j", !0); +i(k, u, v, "ß", "\\ss", !0); +i(k, u, v, "æ", "\\ae", !0); +i(k, u, v, "œ", "\\oe", !0); +i(k, u, v, "ø", "\\o", !0); +i(k, u, v, "Æ", "\\AE", !0); +i(k, u, v, "Œ", "\\OE", !0); +i(k, u, v, "Ø", "\\O", !0); +i(k, u, W, "ˊ", "\\'"); +i(k, u, W, "ˋ", "\\`"); +i(k, u, W, "ˆ", "\\^"); +i(k, u, W, "˜", "\\~"); +i(k, u, W, "ˉ", "\\="); +i(k, u, W, "˘", "\\u"); +i(k, u, W, "˙", "\\."); +i(k, u, W, "¸", "\\c"); +i(k, u, W, "˚", "\\r"); +i(k, u, W, "ˇ", "\\v"); +i(k, u, W, "¨", '\\"'); +i(k, u, W, "˝", "\\H"); +i(k, u, W, "◯", "\\textcircled"); +var wr = { + "--": !0, + "---": !0, + "``": !0, + "''": !0 +}; +i(k, u, v, "–", "--", !0); +i(k, u, v, "–", "\\textendash"); +i(k, u, v, "—", "---", !0); +i(k, u, v, "—", "\\textemdash"); +i(k, u, v, "‘", "`", !0); +i(k, u, v, "‘", "\\textquoteleft"); +i(k, u, v, "’", "'", !0); +i(k, u, v, "’", "\\textquoteright"); +i(k, u, v, "“", "``", !0); +i(k, u, v, "“", "\\textquotedblleft"); +i(k, u, v, "”", "''", !0); +i(k, u, v, "”", "\\textquotedblright"); +i(l, u, v, "°", "\\degree", !0); +i(k, u, v, "°", "\\degree"); +i(k, u, v, "°", "\\textdegree", !0); +i(l, u, v, "£", "\\pounds"); +i(l, u, v, "£", "\\mathsterling", !0); +i(k, u, v, "£", "\\pounds"); +i(k, u, v, "£", "\\textsterling", !0); +i(l, d, v, "✠", "\\maltese"); +i(k, d, v, "✠", "\\maltese"); +var Pt = '0123456789/@."'; +for (var Ye = 0; Ye < Pt.length; Ye++) { + var Gt = Pt.charAt(Ye); + i(l, u, v, Gt, Gt); +} +var Vt = '0123456789!@*()-=+";:?/.,'; +for (var Xe = 0; Xe < Vt.length; Xe++) { + var Ut = Vt.charAt(Xe); + i(k, u, v, Ut, Ut); +} +var Be = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +for (var $e = 0; $e < Be.length; $e++) { + var ge = Be.charAt($e); + i(l, u, E, ge, ge), i(k, u, v, ge, ge); +} +i(l, d, v, "C", "ℂ"); +i(k, d, v, "C", "ℂ"); +i(l, d, v, "H", "ℍ"); +i(k, d, v, "H", "ℍ"); +i(l, d, v, "N", "ℕ"); +i(k, d, v, "N", "ℕ"); +i(l, d, v, "P", "ℙ"); +i(k, d, v, "P", "ℙ"); +i(l, d, v, "Q", "ℚ"); +i(k, d, v, "Q", "ℚ"); +i(l, d, v, "R", "ℝ"); +i(k, d, v, "R", "ℝ"); +i(l, d, v, "Z", "ℤ"); +i(k, d, v, "Z", "ℤ"); +i(l, u, E, "h", "ℎ"); +i(k, u, E, "h", "ℎ"); +var I = ""; +for (var a0 = 0; a0 < Be.length; a0++) { + var J = Be.charAt(a0); + I = String.fromCharCode(55349, 56320 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56372 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56424 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56580 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56684 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56736 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56788 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56840 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56944 + a0), i(l, u, E, J, I), i(k, u, v, J, I), a0 < 26 && (I = String.fromCharCode(55349, 56632 + a0), i(l, u, E, J, I), i(k, u, v, J, I), I = String.fromCharCode(55349, 56476 + a0), i(l, u, E, J, I), i(k, u, v, J, I)); +} +I = String.fromCharCode(55349, 56668); +i(l, u, E, "k", I); +i(k, u, v, "k", I); +for (var Y0 = 0; Y0 < 10; Y0++) { + var H0 = Y0.toString(); + I = String.fromCharCode(55349, 57294 + Y0), i(l, u, E, H0, I), i(k, u, v, H0, I), I = String.fromCharCode(55349, 57314 + Y0), i(l, u, E, H0, I), i(k, u, v, H0, I), I = String.fromCharCode(55349, 57324 + Y0), i(l, u, E, H0, I), i(k, u, v, H0, I), I = String.fromCharCode(55349, 57334 + Y0), i(l, u, E, H0, I), i(k, u, v, H0, I); +} +var st = "ÐÞþ"; +for (var We = 0; We < st.length; We++) { + var be = st.charAt(We); + i(l, u, E, be, be), i(k, u, v, be, be); +} +var ye = [ + ["mathbf", "textbf", "Main-Bold"], + // A-Z bold upright + ["mathbf", "textbf", "Main-Bold"], + // a-z bold upright + ["mathnormal", "textit", "Math-Italic"], + // A-Z italic + ["mathnormal", "textit", "Math-Italic"], + // a-z italic + ["boldsymbol", "boldsymbol", "Main-BoldItalic"], + // A-Z bold italic + ["boldsymbol", "boldsymbol", "Main-BoldItalic"], + // a-z bold italic + // Map fancy A-Z letters to script, not calligraphic. + // This aligns with unicode-math and math fonts (except Cambria Math). + ["mathscr", "textscr", "Script-Regular"], + // A-Z script + ["", "", ""], + // a-z script. No font + ["", "", ""], + // A-Z bold script. No font + ["", "", ""], + // a-z bold script. No font + ["mathfrak", "textfrak", "Fraktur-Regular"], + // A-Z Fraktur + ["mathfrak", "textfrak", "Fraktur-Regular"], + // a-z Fraktur + ["mathbb", "textbb", "AMS-Regular"], + // A-Z double-struck + ["mathbb", "textbb", "AMS-Regular"], + // k double-struck + // Note that we are using a bold font, but font metrics for regular Fraktur. + ["mathboldfrak", "textboldfrak", "Fraktur-Regular"], + // A-Z bold Fraktur + ["mathboldfrak", "textboldfrak", "Fraktur-Regular"], + // a-z bold Fraktur + ["mathsf", "textsf", "SansSerif-Regular"], + // A-Z sans-serif + ["mathsf", "textsf", "SansSerif-Regular"], + // a-z sans-serif + ["mathboldsf", "textboldsf", "SansSerif-Bold"], + // A-Z bold sans-serif + ["mathboldsf", "textboldsf", "SansSerif-Bold"], + // a-z bold sans-serif + ["mathitsf", "textitsf", "SansSerif-Italic"], + // A-Z italic sans-serif + ["mathitsf", "textitsf", "SansSerif-Italic"], + // a-z italic sans-serif + ["", "", ""], + // A-Z bold italic sans. No font + ["", "", ""], + // a-z bold italic sans. No font + ["mathtt", "texttt", "Typewriter-Regular"], + // A-Z monospace + ["mathtt", "texttt", "Typewriter-Regular"] + // a-z monospace +], Yt = [ + ["mathbf", "textbf", "Main-Bold"], + // 0-9 bold + ["", "", ""], + // 0-9 double-struck. No KaTeX font. + ["mathsf", "textsf", "SansSerif-Regular"], + // 0-9 sans-serif + ["mathboldsf", "textboldsf", "SansSerif-Bold"], + // 0-9 bold sans-serif + ["mathtt", "texttt", "Typewriter-Regular"] + // 0-9 monospace +], Ka = function(e, t) { + var a = e.charCodeAt(0), n = e.charCodeAt(1), s = (a - 55296) * 1024 + (n - 56320) + 65536, o = t === "math" ? 0 : 1; + if (119808 <= s && s < 120484) { + var h = Math.floor((s - 119808) / 26); + return [ye[h][2], ye[h][o]]; + } else if (120782 <= s && s <= 120831) { + var c = Math.floor((s - 120782) / 10); + return [Yt[c][2], Yt[c][o]]; + } else { + if (s === 120485 || s === 120486) + return [ye[0][2], ye[0][o]]; + if (120486 < s && s < 120782) + return ["", ""]; + throw new M("Unsupported character: " + e); + } +}, Ee = function(e, t, a) { + return $[a][e] && $[a][e].replace && (e = $[a][e].replace), { + value: e, + metrics: ft(e, t, a) + }; +}, b0 = function(e, t, a, n, s) { + var o = Ee(e, t, a), h = o.metrics; + e = o.value; + var c; + if (h) { + var p = h.italic; + (a === "text" || n && n.font === "mathit") && (p = 0), c = new p0(e, h.height, h.depth, p, h.skew, h.width, s); + } else + typeof console != "undefined" && console.warn("No character metrics " + ("for '" + e + "' in style '" + t + "' and mode '" + a + "'")), c = new p0(e, 0, 0, 0, 0, 0, s); + if (n) { + c.maxFontSize = n.sizeMultiplier, n.style.isTight() && c.classes.push("mtight"); + var g = n.getColor(); + g && (c.style.color = g); + } + return c; +}, Ja = function(e, t, a, n) { + return n === void 0 && (n = []), a.font === "boldsymbol" && Ee(e, "Main-Bold", t).metrics ? b0(e, "Main-Bold", t, a, n.concat(["mathbf"])) : e === "\\" || $[t][e].font === "main" ? b0(e, "Main-Regular", t, a, n) : b0(e, "AMS-Regular", t, a, n.concat(["amsrm"])); +}, Qa = function(e, t, a, n, s) { + return s !== "textord" && Ee(e, "Math-BoldItalic", t).metrics ? { + fontName: "Math-BoldItalic", + fontClass: "boldsymbol" + } : { + fontName: "Main-Bold", + fontClass: "mathbf" + }; +}, _a = function(e, t, a) { + var n = e.mode, s = e.text, o = ["mord"], h = n === "math" || n === "text" && t.font, c = h ? t.font : t.fontFamily, p = "", g = ""; + if (s.charCodeAt(0) === 55349 && ([p, g] = Ka(s, n)), p.length > 0) + return b0(s, p, n, t, o.concat(g)); + if (c) { + var y, w; + if (c === "boldsymbol") { + var x = Qa(s, n, t, o, a); + y = x.fontName, w = [x.fontClass]; + } else + h ? (y = Mr[c].fontName, w = [c]) : (y = xe(c, t.fontWeight, t.fontShape), w = [c, t.fontWeight, t.fontShape]); + if (Ee(s, y, n).metrics) + return b0(s, y, n, t, o.concat(w)); + if (wr.hasOwnProperty(s) && y.slice(0, 10) === "Typewriter") { + for (var z = [], T = 0; T < s.length; T++) + z.push(b0(s[T], y, n, t, o.concat(w))); + return Sr(z); + } + } + if (a === "mathord") + return b0(s, "Math-Italic", n, t, o.concat(["mathnormal"])); + if (a === "textord") { + var C = $[n][s] && $[n][s].font; + if (C === "ams") { + var N = xe("amsrm", t.fontWeight, t.fontShape); + return b0(s, N, n, t, o.concat("amsrm", t.fontWeight, t.fontShape)); + } else if (C === "main" || !C) { + var O = xe("textrm", t.fontWeight, t.fontShape); + return b0(s, O, n, t, o.concat(t.fontWeight, t.fontShape)); + } else { + var H = xe(C, t.fontWeight, t.fontShape); + return b0(s, H, n, t, o.concat(H, t.fontWeight, t.fontShape)); + } + } else + throw new Error("unexpected type: " + a + " in makeOrd"); +}, e1 = (r, e) => { + if (L0(r.classes) !== L0(e.classes) || r.skew !== e.skew || r.maxFontSize !== e.maxFontSize) + return !1; + if (r.classes.length === 1) { + var t = r.classes[0]; + if (t === "mbin" || t === "mord") + return !1; + } + for (var a in r.style) + if (r.style.hasOwnProperty(a) && r.style[a] !== e.style[a]) + return !1; + for (var n in e.style) + if (e.style.hasOwnProperty(n) && r.style[n] !== e.style[n]) + return !1; + return !0; +}, t1 = (r) => { + for (var e = 0; e < r.length - 1; e++) { + var t = r[e], a = r[e + 1]; + t instanceof p0 && a instanceof p0 && e1(t, a) && (t.text += a.text, t.height = Math.max(t.height, a.height), t.depth = Math.max(t.depth, a.depth), t.italic = a.italic, r.splice(e + 1, 1), e--); + } + return r; +}, vt = function(e) { + for (var t = 0, a = 0, n = 0, s = 0; s < e.children.length; s++) { + var o = e.children[s]; + o.height > t && (t = o.height), o.depth > a && (a = o.depth), o.maxFontSize > n && (n = o.maxFontSize); + } + e.height = t, e.depth = a, e.maxFontSize = n; +}, l0 = function(e, t, a, n) { + var s = new he(e, t, a, n); + return vt(s), s; +}, kr = (r, e, t, a) => new he(r, e, t, a), r1 = function(e, t, a) { + var n = l0([e], [], t); + return n.height = Math.max(a || t.fontMetrics().defaultRuleThickness, t.minRuleThickness), n.style.borderBottomWidth = A(n.height), n.maxFontSize = 1, n; +}, a1 = function(e, t, a, n) { + var s = new pt(e, t, a, n); + return vt(s), s; +}, Sr = function(e) { + var t = new ue(e); + return vt(t), t; +}, n1 = function(e, t) { + return e instanceof ue ? l0([], [e], t) : e; +}, i1 = function(e) { + if (e.positionType === "individualShift") { + for (var t = e.children, a = [t[0]], n = -t[0].shift - t[0].elem.depth, s = n, o = 1; o < t.length; o++) { + var h = -t[o].shift - s - t[o].elem.depth, c = h - (t[o - 1].elem.height + t[o - 1].elem.depth); + s = s + h, a.push({ + type: "kern", + size: c + }), a.push(t[o]); + } + return { + children: a, + depth: n + }; + } + var p; + if (e.positionType === "top") { + for (var g = e.positionData, y = 0; y < e.children.length; y++) { + var w = e.children[y]; + g -= w.type === "kern" ? w.size : w.elem.height + w.elem.depth; + } + p = g; + } else if (e.positionType === "bottom") + p = -e.positionData; + else { + var x = e.children[0]; + if (x.type !== "elem") + throw new Error('First child must have type "elem".'); + if (e.positionType === "shift") + p = -x.elem.depth - e.positionData; + else if (e.positionType === "firstBaseline") + p = -x.elem.depth; + else + throw new Error("Invalid positionType " + e.positionType + "."); + } + return { + children: e.children, + depth: p + }; +}, s1 = function(e, t) { + for (var { + children: a, + depth: n + } = i1(e), s = 0, o = 0; o < a.length; o++) { + var h = a[o]; + if (h.type === "elem") { + var c = h.elem; + s = Math.max(s, c.maxFontSize, c.height); + } + } + s += 2; + var p = l0(["pstrut"], []); + p.style.height = A(s); + for (var g = [], y = n, w = n, x = n, z = 0; z < a.length; z++) { + var T = a[z]; + if (T.type === "kern") + x += T.size; + else { + var C = T.elem, N = T.wrapperClasses || [], O = T.wrapperStyle || {}, H = l0(N, [p, C], void 0, O); + H.style.top = A(-s - x - C.depth), T.marginLeft && (H.style.marginLeft = T.marginLeft), T.marginRight && (H.style.marginRight = T.marginRight), g.push(H), x += C.height + C.depth; + } + y = Math.min(y, x), w = Math.max(w, x); + } + var V = l0(["vlist"], g); + V.style.height = A(w); + var L; + if (y < 0) { + var U = l0([], []), G = l0(["vlist"], [U]); + G.style.height = A(-y); + var j = l0(["vlist-s"], [new p0("​")]); + L = [l0(["vlist-r"], [V, j]), l0(["vlist-r"], [G])]; + } else + L = [l0(["vlist-r"], [V])]; + var Y = l0(["vlist-t"], L); + return L.length === 2 && Y.classes.push("vlist-t2"), Y.height = w, Y.depth = -y, Y; +}, l1 = (r, e) => { + var t = l0(["mspace"], [], e), a = K(r, e); + return t.style.marginRight = A(a), t; +}, xe = function(e, t, a) { + var n = ""; + switch (e) { + case "amsrm": + n = "AMS"; + break; + case "textrm": + n = "Main"; + break; + case "textsf": + n = "SansSerif"; + break; + case "texttt": + n = "Typewriter"; + break; + default: + n = e; + } + var s; + return t === "textbf" && a === "textit" ? s = "BoldItalic" : t === "textbf" ? s = "Bold" : t === "textit" ? s = "Italic" : s = "Regular", n + "-" + s; +}, Mr = { + // styles + mathbf: { + variant: "bold", + fontName: "Main-Bold" + }, + mathrm: { + variant: "normal", + fontName: "Main-Regular" + }, + textit: { + variant: "italic", + fontName: "Main-Italic" + }, + mathit: { + variant: "italic", + fontName: "Main-Italic" + }, + mathnormal: { + variant: "italic", + fontName: "Math-Italic" + }, + // "boldsymbol" is missing because they require the use of multiple fonts: + // Math-BoldItalic and Main-Bold. This is handled by a special case in + // makeOrd which ends up calling boldsymbol. + // families + mathbb: { + variant: "double-struck", + fontName: "AMS-Regular" + }, + mathcal: { + variant: "script", + fontName: "Caligraphic-Regular" + }, + mathfrak: { + variant: "fraktur", + fontName: "Fraktur-Regular" + }, + mathscr: { + variant: "script", + fontName: "Script-Regular" + }, + mathsf: { + variant: "sans-serif", + fontName: "SansSerif-Regular" + }, + mathtt: { + variant: "monospace", + fontName: "Typewriter-Regular" + } +}, zr = { + // path, width, height + vec: ["vec", 0.471, 0.714], + // values from the font glyph + oiintSize1: ["oiintSize1", 0.957, 0.499], + // oval to overlay the integrand + oiintSize2: ["oiintSize2", 1.472, 0.659], + oiiintSize1: ["oiiintSize1", 1.304, 0.499], + oiiintSize2: ["oiiintSize2", 1.98, 0.659] +}, o1 = function(e, t) { + var [a, n, s] = zr[e], o = new P0(a), h = new D0([o], { + width: A(n), + height: A(s), + // Override CSS rule `.katex svg { width: 100% }` + style: "width:" + A(n), + viewBox: "0 0 " + 1e3 * n + " " + 1e3 * s, + preserveAspectRatio: "xMinYMin" + }), c = kr(["overlay"], [h], t); + return c.height = s, c.style.height = A(s), c.style.width = A(n), c; +}, b = { + fontMap: Mr, + makeSymbol: b0, + mathsym: Ja, + makeSpan: l0, + makeSvgSpan: kr, + makeLineSpan: r1, + makeAnchor: a1, + makeFragment: Sr, + wrapFragment: n1, + makeVList: s1, + makeOrd: _a, + makeGlue: l1, + staticSvg: o1, + svgData: zr, + tryCombineChars: t1 +}, Z = { + number: 3, + unit: "mu" +}, X0 = { + number: 4, + unit: "mu" +}, z0 = { + number: 5, + unit: "mu" +}, u1 = { + mord: { + mop: Z, + mbin: X0, + mrel: z0, + minner: Z + }, + mop: { + mord: Z, + mop: Z, + mrel: z0, + minner: Z + }, + mbin: { + mord: X0, + mop: X0, + mopen: X0, + minner: X0 + }, + mrel: { + mord: z0, + mop: z0, + mopen: z0, + minner: z0 + }, + mopen: {}, + mclose: { + mop: Z, + mbin: X0, + mrel: z0, + minner: Z + }, + mpunct: { + mord: Z, + mop: Z, + mrel: z0, + mopen: Z, + mclose: Z, + mpunct: Z, + minner: Z + }, + minner: { + mord: Z, + mop: Z, + mbin: X0, + mrel: z0, + mopen: Z, + mpunct: Z, + minner: Z + } +}, h1 = { + mord: { + mop: Z + }, + mop: { + mord: Z, + mop: Z + }, + mbin: {}, + mrel: {}, + mopen: {}, + mclose: { + mop: Z + }, + mpunct: {}, + minner: { + mop: Z + } +}, Ar = {}, De = {}, Ce = {}; +function B(r) { + for (var { + type: e, + names: t, + props: a, + handler: n, + htmlBuilder: s, + mathmlBuilder: o + } = r, h = { + type: e, + numArgs: a.numArgs, + argTypes: a.argTypes, + allowedInArgument: !!a.allowedInArgument, + allowedInText: !!a.allowedInText, + allowedInMath: a.allowedInMath === void 0 ? !0 : a.allowedInMath, + numOptionalArgs: a.numOptionalArgs || 0, + infix: !!a.infix, + primitive: !!a.primitive, + handler: n + }, c = 0; c < t.length; ++c) + Ar[t[c]] = h; + e && (s && (De[e] = s), o && (Ce[e] = o)); +} +function $0(r) { + var { + type: e, + htmlBuilder: t, + mathmlBuilder: a + } = r; + B({ + type: e, + names: [], + props: { + numArgs: 0 + }, + handler() { + throw new Error("Should never be called."); + }, + htmlBuilder: t, + mathmlBuilder: a + }); +} +var Ne = function(e) { + return e.type === "ordgroup" && e.body.length === 1 ? e.body[0] : e; +}, Q = function(e) { + return e.type === "ordgroup" ? e.body : [e]; +}, C0 = b.makeSpan, m1 = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"], c1 = ["rightmost", "mrel", "mclose", "mpunct"], d1 = { + display: R.DISPLAY, + text: R.TEXT, + script: R.SCRIPT, + scriptscript: R.SCRIPTSCRIPT +}, f1 = { + mord: "mord", + mop: "mop", + mbin: "mbin", + mrel: "mrel", + mopen: "mopen", + mclose: "mclose", + mpunct: "mpunct", + minner: "minner" +}, t0 = function(e, t, a, n) { + n === void 0 && (n = [null, null]); + for (var s = [], o = 0; o < e.length; o++) { + var h = P(e[o], t); + if (h instanceof ue) { + var c = h.children; + s.push(...c); + } else + s.push(h); + } + if (b.tryCombineChars(s), !a) + return s; + var p = t; + if (e.length === 1) { + var g = e[0]; + g.type === "sizing" ? p = t.havingSize(g.size) : g.type === "styling" && (p = t.havingStyle(d1[g.style])); + } + var y = C0([n[0] || "leftmost"], [], t), w = C0([n[1] || "rightmost"], [], t), x = a === "root"; + return Xt(s, (z, T) => { + var C = T.classes[0], N = z.classes[0]; + C === "mbin" && q.contains(c1, N) ? T.classes[0] = "mord" : N === "mbin" && q.contains(m1, C) && (z.classes[0] = "mord"); + }, { + node: y + }, w, x), Xt(s, (z, T) => { + var C = lt(T), N = lt(z), O = C && N ? z.hasClass("mtight") ? h1[C][N] : u1[C][N] : null; + if (O) + return b.makeGlue(O, p); + }, { + node: y + }, w, x), s; +}, Xt = function r(e, t, a, n, s) { + n && e.push(n); + for (var o = 0; o < e.length; o++) { + var h = e[o], c = Tr(h); + if (c) { + r(c.children, t, a, null, s); + continue; + } + var p = !h.hasClass("mspace"); + if (p) { + var g = t(h, a.node); + g && (a.insertAfter ? a.insertAfter(g) : (e.unshift(g), o++)); + } + p ? a.node = h : s && h.hasClass("newline") && (a.node = C0(["leftmost"])), a.insertAfter = ((y) => (w) => { + e.splice(y + 1, 0, w), o++; + })(o); + } + n && e.pop(); +}, Tr = function(e) { + return e instanceof ue || e instanceof pt || e instanceof he && e.hasClass("enclosing") ? e : null; +}, p1 = function r(e, t) { + var a = Tr(e); + if (a) { + var n = a.children; + if (n.length) { + if (t === "right") + return r(n[n.length - 1], "right"); + if (t === "left") + return r(n[0], "left"); + } + } + return e; +}, lt = function(e, t) { + return e ? (t && (e = p1(e, t)), f1[e.classes[0]] || null) : null; +}, oe = function(e, t) { + var a = ["nulldelimiter"].concat(e.baseSizingClasses()); + return C0(t.concat(a)); +}, P = function(e, t, a) { + if (!e) + return C0(); + if (De[e.type]) { + var n = De[e.type](e, t); + if (a && t.size !== a.size) { + n = C0(t.sizingClasses(a), [n], t); + var s = t.sizeMultiplier / a.sizeMultiplier; + n.height *= s, n.depth *= s; + } + return n; + } else + throw new M("Got group of unknown type: '" + e.type + "'"); +}; +function we(r, e) { + var t = C0(["base"], r, e), a = C0(["strut"]); + return a.style.height = A(t.height + t.depth), t.depth && (a.style.verticalAlign = A(-t.depth)), t.children.unshift(a), t; +} +function ot(r, e) { + var t = null; + r.length === 1 && r[0].type === "tag" && (t = r[0].tag, r = r[0].body); + var a = t0(r, e, "root"), n; + a.length === 2 && a[1].hasClass("tag") && (n = a.pop()); + for (var s = [], o = [], h = 0; h < a.length; h++) + if (o.push(a[h]), a[h].hasClass("mbin") || a[h].hasClass("mrel") || a[h].hasClass("allowbreak")) { + for (var c = !1; h < a.length - 1 && a[h + 1].hasClass("mspace") && !a[h + 1].hasClass("newline"); ) + h++, o.push(a[h]), a[h].hasClass("nobreak") && (c = !0); + c || (s.push(we(o, e)), o = []); + } else + a[h].hasClass("newline") && (o.pop(), o.length > 0 && (s.push(we(o, e)), o = []), s.push(a[h])); + o.length > 0 && s.push(we(o, e)); + var p; + t ? (p = we(t0(t, e, !0)), p.classes = ["tag"], s.push(p)) : n && s.push(n); + var g = C0(["katex-html"], s); + if (g.setAttribute("aria-hidden", "true"), p) { + var y = p.children[0]; + y.style.height = A(g.height + g.depth), g.depth && (y.style.verticalAlign = A(-g.depth)); + } + return g; +} +function Br(r) { + return new ue(r); +} +class c0 { + constructor(e, t, a) { + this.type = void 0, this.attributes = void 0, this.children = void 0, this.classes = void 0, this.type = e, this.attributes = {}, this.children = t || [], this.classes = a || []; + } + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + setAttribute(e, t) { + this.attributes[e] = t; + } + /** + * Gets an attribute on a MathML node. + */ + getAttribute(e) { + return this.attributes[e]; + } + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + toNode() { + var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + for (var t in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]); + this.classes.length > 0 && (e.className = L0(this.classes)); + for (var a = 0; a < this.children.length; a++) + e.appendChild(this.children[a].toNode()); + return e; + } + /** + * Converts the math node into an HTML markup string. + */ + toMarkup() { + var e = "<" + this.type; + for (var t in this.attributes) + Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + '="', e += q.escape(this.attributes[t]), e += '"'); + this.classes.length > 0 && (e += ' class ="' + q.escape(L0(this.classes)) + '"'), e += ">"; + for (var a = 0; a < this.children.length; a++) + e += this.children[a].toMarkup(); + return e += "", e; + } + /** + * Converts the math node into a string, similar to innerText, but escaped. + */ + toText() { + return this.children.map((e) => e.toText()).join(""); + } +} +class ie { + constructor(e) { + this.text = void 0, this.text = e; + } + /** + * Converts the text node into a DOM text node. + */ + toNode() { + return document.createTextNode(this.text); + } + /** + * Converts the text node into escaped HTML markup + * (representing the text itself). + */ + toMarkup() { + return q.escape(this.toText()); + } + /** + * Converts the text node into a string + * (representing the text itself). + */ + toText() { + return this.text; + } +} +class v1 { + /** + * Create a Space node with width given in CSS ems. + */ + constructor(e) { + this.width = void 0, this.character = void 0, this.width = e, e >= 0.05555 && e <= 0.05556 ? this.character = " " : e >= 0.1666 && e <= 0.1667 ? this.character = " " : e >= 0.2222 && e <= 0.2223 ? this.character = " " : e >= 0.2777 && e <= 0.2778 ? this.character = "  " : e >= -0.05556 && e <= -0.05555 ? this.character = " ⁣" : e >= -0.1667 && e <= -0.1666 ? this.character = " ⁣" : e >= -0.2223 && e <= -0.2222 ? this.character = " ⁣" : e >= -0.2778 && e <= -0.2777 ? this.character = " ⁣" : this.character = null; + } + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + toNode() { + if (this.character) + return document.createTextNode(this.character); + var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace"); + return e.setAttribute("width", A(this.width)), e; + } + /** + * Converts the math node into an HTML markup string. + */ + toMarkup() { + return this.character ? "" + this.character + "" : ''; + } + /** + * Converts the math node into a string, similar to innerText. + */ + toText() { + return this.character ? this.character : " "; + } +} +var S = { + MathNode: c0, + TextNode: ie, + SpaceNode: v1, + newDocumentFragment: Br +}, v0 = function(e, t, a) { + return $[t][e] && $[t][e].replace && e.charCodeAt(0) !== 55349 && !(wr.hasOwnProperty(e) && a && (a.fontFamily && a.fontFamily.slice(4, 6) === "tt" || a.font && a.font.slice(4, 6) === "tt")) && (e = $[t][e].replace), new S.TextNode(e); +}, gt = function(e) { + return e.length === 1 ? e[0] : new S.MathNode("mrow", e); +}, bt = function(e, t) { + if (t.fontFamily === "texttt") + return "monospace"; + if (t.fontFamily === "textsf") + return t.fontShape === "textit" && t.fontWeight === "textbf" ? "sans-serif-bold-italic" : t.fontShape === "textit" ? "sans-serif-italic" : t.fontWeight === "textbf" ? "bold-sans-serif" : "sans-serif"; + if (t.fontShape === "textit" && t.fontWeight === "textbf") + return "bold-italic"; + if (t.fontShape === "textit") + return "italic"; + if (t.fontWeight === "textbf") + return "bold"; + var a = t.font; + if (!a || a === "mathnormal") + return null; + var n = e.mode; + if (a === "mathit") + return "italic"; + if (a === "boldsymbol") + return e.type === "textord" ? "bold" : "bold-italic"; + if (a === "mathbf") + return "bold"; + if (a === "mathbb") + return "double-struck"; + if (a === "mathfrak") + return "fraktur"; + if (a === "mathscr" || a === "mathcal") + return "script"; + if (a === "mathsf") + return "sans-serif"; + if (a === "mathtt") + return "monospace"; + var s = e.text; + if (q.contains(["\\imath", "\\jmath"], s)) + return null; + $[n][s] && $[n][s].replace && (s = $[n][s].replace); + var o = b.fontMap[a].fontName; + return ft(s, o, n) ? b.fontMap[a].variant : null; +}, o0 = function(e, t, a) { + if (e.length === 1) { + var n = X(e[0], t); + return a && n instanceof c0 && n.type === "mo" && (n.setAttribute("lspace", "0em"), n.setAttribute("rspace", "0em")), [n]; + } + for (var s = [], o, h = 0; h < e.length; h++) { + var c = X(e[h], t); + if (c instanceof c0 && o instanceof c0) { + if (c.type === "mtext" && o.type === "mtext" && c.getAttribute("mathvariant") === o.getAttribute("mathvariant")) { + o.children.push(...c.children); + continue; + } else if (c.type === "mn" && o.type === "mn") { + o.children.push(...c.children); + continue; + } else if (c.type === "mi" && c.children.length === 1 && o.type === "mn") { + var p = c.children[0]; + if (p instanceof ie && p.text === ".") { + o.children.push(...c.children); + continue; + } + } else if (o.type === "mi" && o.children.length === 1) { + var g = o.children[0]; + if (g instanceof ie && g.text === "̸" && (c.type === "mo" || c.type === "mi" || c.type === "mn")) { + var y = c.children[0]; + y instanceof ie && y.text.length > 0 && (y.text = y.text.slice(0, 1) + "̸" + y.text.slice(1), s.pop()); + } + } + } + s.push(c), o = c; + } + return s; +}, G0 = function(e, t, a) { + return gt(o0(e, t, a)); +}, X = function(e, t) { + if (!e) + return new S.MathNode("mrow"); + if (Ce[e.type]) { + var a = Ce[e.type](e, t); + return a; + } else + throw new M("Got group of unknown type: '" + e.type + "'"); +}; +function $t(r, e, t, a, n) { + var s = o0(r, t), o; + s.length === 1 && s[0] instanceof c0 && q.contains(["mrow", "mtable"], s[0].type) ? o = s[0] : o = new S.MathNode("mrow", s); + var h = new S.MathNode("annotation", [new S.TextNode(e)]); + h.setAttribute("encoding", "application/x-tex"); + var c = new S.MathNode("semantics", [o, h]), p = new S.MathNode("math", [c]); + p.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"), a && p.setAttribute("display", "block"); + var g = n ? "katex" : "katex-mathml"; + return b.makeSpan([g], [p]); +} +var Dr = function(e) { + return new A0({ + style: e.displayMode ? R.DISPLAY : R.TEXT, + maxSize: e.maxSize, + minRuleThickness: e.minRuleThickness + }); +}, Cr = function(e, t) { + if (t.displayMode) { + var a = ["katex-display"]; + t.leqno && a.push("leqno"), t.fleqn && a.push("fleqn"), e = b.makeSpan(a, [e]); + } + return e; +}, g1 = function(e, t, a) { + var n = Dr(a), s; + if (a.output === "mathml") + return $t(e, t, n, a.displayMode, !0); + if (a.output === "html") { + var o = ot(e, n); + s = b.makeSpan(["katex"], [o]); + } else { + var h = $t(e, t, n, a.displayMode, !1), c = ot(e, n); + s = b.makeSpan(["katex"], [h, c]); + } + return Cr(s, a); +}, b1 = function(e, t, a) { + var n = Dr(a), s = ot(e, n), o = b.makeSpan(["katex"], [s]); + return Cr(o, a); +}, y1 = { + widehat: "^", + widecheck: "ˇ", + widetilde: "~", + utilde: "~", + overleftarrow: "←", + underleftarrow: "←", + xleftarrow: "←", + overrightarrow: "→", + underrightarrow: "→", + xrightarrow: "→", + underbrace: "⏟", + overbrace: "⏞", + overgroup: "⏠", + undergroup: "⏡", + overleftrightarrow: "↔", + underleftrightarrow: "↔", + xleftrightarrow: "↔", + Overrightarrow: "⇒", + xRightarrow: "⇒", + overleftharpoon: "↼", + xleftharpoonup: "↼", + overrightharpoon: "⇀", + xrightharpoonup: "⇀", + xLeftarrow: "⇐", + xLeftrightarrow: "⇔", + xhookleftarrow: "↩", + xhookrightarrow: "↪", + xmapsto: "↦", + xrightharpoondown: "⇁", + xleftharpoondown: "↽", + xrightleftharpoons: "⇌", + xleftrightharpoons: "⇋", + xtwoheadleftarrow: "↞", + xtwoheadrightarrow: "↠", + xlongequal: "=", + xtofrom: "⇄", + xrightleftarrows: "⇄", + xrightequilibrium: "⇌", + // Not a perfect match. + xleftequilibrium: "⇋", + // None better available. + "\\cdrightarrow": "→", + "\\cdleftarrow": "←", + "\\cdlongequal": "=" +}, x1 = function(e) { + var t = new S.MathNode("mo", [new S.TextNode(y1[e.replace(/^\\/, "")])]); + return t.setAttribute("stretchy", "true"), t; +}, w1 = { + // path(s), minWidth, height, align + overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], + underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], + xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], + "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"], + // CD minwwidth2.5pc + xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], + "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"], + Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], + xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], + xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], + overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], + xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], + overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], + xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], + xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], + "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"], + xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], + xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], + overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], + underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], + underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], + xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], + xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], + xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], + xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], + xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522], + xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522], + overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], + overgroup: [["leftgroup", "rightgroup"], 0.888, 342], + undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], + xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], + xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], + // The next three arrows are from the mhchem package. + // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the + // document as \xrightarrow or \xrightleftharpoons. Those have + // min-length = 1.75em, so we set min-length on these next three to match. + xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], + xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], + xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] +}, k1 = function(e) { + return e.type === "ordgroup" ? e.body.length : 1; +}, S1 = function(e, t) { + function a() { + var h = 4e5, c = e.label.slice(1); + if (q.contains(["widehat", "widecheck", "widetilde", "utilde"], c)) { + var p = e, g = k1(p.base), y, w, x; + if (g > 5) + c === "widehat" || c === "widecheck" ? (y = 420, h = 2364, x = 0.42, w = c + "4") : (y = 312, h = 2340, x = 0.34, w = "tilde4"); + else { + var z = [1, 1, 2, 2, 3, 3][g]; + c === "widehat" || c === "widecheck" ? (h = [0, 1062, 2364, 2364, 2364][z], y = [0, 239, 300, 360, 420][z], x = [0, 0.24, 0.3, 0.3, 0.36, 0.42][z], w = c + z) : (h = [0, 600, 1033, 2339, 2340][z], y = [0, 260, 286, 306, 312][z], x = [0, 0.26, 0.286, 0.3, 0.306, 0.34][z], w = "tilde" + z); + } + var T = new P0(w), C = new D0([T], { + width: "100%", + height: A(x), + viewBox: "0 0 " + h + " " + y, + preserveAspectRatio: "none" + }); + return { + span: b.makeSvgSpan([], [C], t), + minWidth: 0, + height: x + }; + } else { + var N = [], O = w1[c], [H, V, L] = O, U = L / 1e3, G = H.length, j, Y; + if (G === 1) { + var M0 = O[3]; + j = ["hide-tail"], Y = [M0]; + } else if (G === 2) + j = ["halfarrow-left", "halfarrow-right"], Y = ["xMinYMin", "xMaxYMin"]; + else if (G === 3) + j = ["brace-left", "brace-center", "brace-right"], Y = ["xMinYMin", "xMidYMin", "xMaxYMin"]; + else + throw new Error(`Correct katexImagesData or update code here to support + ` + G + " children."); + for (var r0 = 0; r0 < G; r0++) { + var e0 = new P0(H[r0]), U0 = new D0([e0], { + width: "400em", + height: A(U), + viewBox: "0 0 " + h + " " + L, + preserveAspectRatio: Y[r0] + " slice" + }), s0 = b.makeSvgSpan([j[r0]], [U0], t); + if (G === 1) + return { + span: s0, + minWidth: V, + height: U + }; + s0.style.height = A(U), N.push(s0); + } + return { + span: b.makeSpan(["stretchy"], N, t), + minWidth: V, + height: U + }; + } + } + var { + span: n, + minWidth: s, + height: o + } = a(); + return n.height = o, n.style.height = A(o), s > 0 && (n.style.minWidth = A(s)), n; +}, M1 = function(e, t, a, n, s) { + var o, h = e.height + e.depth + a + n; + if (/fbox|color|angl/.test(t)) { + if (o = b.makeSpan(["stretchy", t], [], s), t === "fbox") { + var c = s.color && s.getColor(); + c && (o.style.borderColor = c); + } + } else { + var p = []; + /^[bx]cancel$/.test(t) && p.push(new it({ + x1: "0", + y1: "0", + x2: "100%", + y2: "100%", + "stroke-width": "0.046em" + })), /^x?cancel$/.test(t) && p.push(new it({ + x1: "0", + y1: "100%", + x2: "100%", + y2: "0", + "stroke-width": "0.046em" + })); + var g = new D0(p, { + width: "100%", + height: A(h) + }); + o = b.makeSvgSpan([], [g], s); + } + return o.height = h, o.style.height = A(h), o; +}, N0 = { + encloseSpan: M1, + mathMLnode: x1, + svgSpan: S1 +}; +function F(r, e) { + if (!r || r.type !== e) + throw new Error("Expected node of type " + e + ", but got " + (r ? "node of type " + r.type : String(r))); + return r; +} +function yt(r) { + var e = Re(r); + if (!e) + throw new Error("Expected node of symbol group type, but got " + (r ? "node of type " + r.type : String(r))); + return e; +} +function Re(r) { + return r && (r.type === "atom" || Za.hasOwnProperty(r.type)) ? r : null; +} +var xt = (r, e) => { + var t, a, n; + r && r.type === "supsub" ? (a = F(r.base, "accent"), t = a.base, r.base = t, n = Wa(P(r, e)), r.base = a) : (a = F(r, "accent"), t = a.base); + var s = P(t, e.havingCrampedStyle()), o = a.isShifty && q.isCharacterBox(t), h = 0; + if (o) { + var c = q.getBaseElem(t), p = P(c, e.havingCrampedStyle()); + h = Lt(p).skew; + } + var g = a.label === "\\c", y = g ? s.height + s.depth : Math.min(s.height, e.fontMetrics().xHeight), w; + if (a.isStretchy) + w = N0.svgSpan(a, e), w = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: s + }, { + type: "elem", + elem: w, + wrapperClasses: ["svg-align"], + wrapperStyle: h > 0 ? { + width: "calc(100% - " + A(2 * h) + ")", + marginLeft: A(2 * h) + } : void 0 + }] + }, e); + else { + var x, z; + a.label === "\\vec" ? (x = b.staticSvg("vec", e), z = b.svgData.vec[1]) : (x = b.makeOrd({ + mode: a.mode, + text: a.label + }, e, "textord"), x = Lt(x), x.italic = 0, z = x.width, g && (y += x.depth)), w = b.makeSpan(["accent-body"], [x]); + var T = a.label === "\\textcircled"; + T && (w.classes.push("accent-full"), y = s.height); + var C = h; + T || (C -= z / 2), w.style.left = A(C), a.label === "\\textcircled" && (w.style.top = ".2em"), w = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: s + }, { + type: "kern", + size: -y + }, { + type: "elem", + elem: w + }] + }, e); + } + var N = b.makeSpan(["mord", "accent"], [w], e); + return n ? (n.children[0] = N, n.height = Math.max(N.height, n.height), n.classes[0] = "mord", n) : N; +}, Nr = (r, e) => { + var t = r.isStretchy ? N0.mathMLnode(r.label) : new S.MathNode("mo", [v0(r.label, r.mode)]), a = new S.MathNode("mover", [X(r.base, e), t]); + return a.setAttribute("accent", "true"), a; +}, z1 = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map((r) => "\\" + r).join("|")); +B({ + type: "accent", + names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], + props: { + numArgs: 1 + }, + handler: (r, e) => { + var t = Ne(e[0]), a = !z1.test(r.funcName), n = !a || r.funcName === "\\widehat" || r.funcName === "\\widetilde" || r.funcName === "\\widecheck"; + return { + type: "accent", + mode: r.parser.mode, + label: r.funcName, + isStretchy: a, + isShifty: n, + base: t + }; + }, + htmlBuilder: xt, + mathmlBuilder: Nr +}); +B({ + type: "accent", + names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"], + props: { + numArgs: 1, + allowedInText: !0, + allowedInMath: !0, + // unless in strict mode + argTypes: ["primitive"] + }, + handler: (r, e) => { + var t = e[0], a = r.parser.mode; + return a === "math" && (r.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + r.funcName + " works only in text mode"), a = "text"), { + type: "accent", + mode: a, + label: r.funcName, + isStretchy: !1, + isShifty: !0, + base: t + }; + }, + htmlBuilder: xt, + mathmlBuilder: Nr +}); +B({ + type: "accentUnder", + names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"], + props: { + numArgs: 1 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = e[0]; + return { + type: "accentUnder", + mode: t.mode, + label: a, + base: n + }; + }, + htmlBuilder: (r, e) => { + var t = P(r.base, e), a = N0.svgSpan(r, e), n = r.label === "\\utilde" ? 0.12 : 0, s = b.makeVList({ + positionType: "top", + positionData: t.height, + children: [{ + type: "elem", + elem: a, + wrapperClasses: ["svg-align"] + }, { + type: "kern", + size: n + }, { + type: "elem", + elem: t + }] + }, e); + return b.makeSpan(["mord", "accentunder"], [s], e); + }, + mathmlBuilder: (r, e) => { + var t = N0.mathMLnode(r.label), a = new S.MathNode("munder", [X(r.base, e), t]); + return a.setAttribute("accentunder", "true"), a; + } +}); +var ke = (r) => { + var e = new S.MathNode("mpadded", r ? [r] : []); + return e.setAttribute("width", "+0.6em"), e.setAttribute("lspace", "0.3em"), e; +}; +B({ + type: "xArrow", + names: [ + "\\xleftarrow", + "\\xrightarrow", + "\\xLeftarrow", + "\\xRightarrow", + "\\xleftrightarrow", + "\\xLeftrightarrow", + "\\xhookleftarrow", + "\\xhookrightarrow", + "\\xmapsto", + "\\xrightharpoondown", + "\\xrightharpoonup", + "\\xleftharpoondown", + "\\xleftharpoonup", + "\\xrightleftharpoons", + "\\xleftrightharpoons", + "\\xlongequal", + "\\xtwoheadrightarrow", + "\\xtwoheadleftarrow", + "\\xtofrom", + // The next 3 functions are here to support the mhchem extension. + // Direct use of these functions is discouraged and may break someday. + "\\xrightleftarrows", + "\\xrightequilibrium", + "\\xleftequilibrium", + // The next 3 functions are here only to support the {CD} environment. + "\\\\cdrightarrow", + "\\\\cdleftarrow", + "\\\\cdlongequal" + ], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + handler(r, e, t) { + var { + parser: a, + funcName: n + } = r; + return { + type: "xArrow", + mode: a.mode, + label: n, + body: e[0], + below: t[0] + }; + }, + // Flow is unable to correctly infer the type of `group`, even though it's + // unambiguously determined from the passed-in `type` above. + htmlBuilder(r, e) { + var t = e.style, a = e.havingStyle(t.sup()), n = b.wrapFragment(P(r.body, a, e), e), s = r.label.slice(0, 2) === "\\x" ? "x" : "cd"; + n.classes.push(s + "-arrow-pad"); + var o; + r.below && (a = e.havingStyle(t.sub()), o = b.wrapFragment(P(r.below, a, e), e), o.classes.push(s + "-arrow-pad")); + var h = N0.svgSpan(r, e), c = -e.fontMetrics().axisHeight + 0.5 * h.height, p = -e.fontMetrics().axisHeight - 0.5 * h.height - 0.111; + (n.depth > 0.25 || r.label === "\\xleftequilibrium") && (p -= n.depth); + var g; + if (o) { + var y = -e.fontMetrics().axisHeight + o.height + 0.5 * h.height + 0.111; + g = b.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: n, + shift: p + }, { + type: "elem", + elem: h, + shift: c + }, { + type: "elem", + elem: o, + shift: y + }] + }, e); + } else + g = b.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: n, + shift: p + }, { + type: "elem", + elem: h, + shift: c + }] + }, e); + return g.children[0].children[0].children[1].classes.push("svg-align"), b.makeSpan(["mrel", "x-arrow"], [g], e); + }, + mathmlBuilder(r, e) { + var t = N0.mathMLnode(r.label); + t.setAttribute("minsize", r.label.charAt(0) === "x" ? "1.75em" : "3.0em"); + var a; + if (r.body) { + var n = ke(X(r.body, e)); + if (r.below) { + var s = ke(X(r.below, e)); + a = new S.MathNode("munderover", [t, s, n]); + } else + a = new S.MathNode("mover", [t, n]); + } else if (r.below) { + var o = ke(X(r.below, e)); + a = new S.MathNode("munder", [t, o]); + } else + a = ke(), a = new S.MathNode("mover", [t, a]); + return a; + } +}); +var A1 = b.makeSpan; +function qr(r, e) { + var t = t0(r.body, e, !0); + return A1([r.mclass], t, e); +} +function Er(r, e) { + var t, a = o0(r.body, e); + return r.mclass === "minner" ? t = new S.MathNode("mpadded", a) : r.mclass === "mord" ? r.isCharacterBox ? (t = a[0], t.type = "mi") : t = new S.MathNode("mi", a) : (r.isCharacterBox ? (t = a[0], t.type = "mo") : t = new S.MathNode("mo", a), r.mclass === "mbin" ? (t.attributes.lspace = "0.22em", t.attributes.rspace = "0.22em") : r.mclass === "mpunct" ? (t.attributes.lspace = "0em", t.attributes.rspace = "0.17em") : r.mclass === "mopen" || r.mclass === "mclose" ? (t.attributes.lspace = "0em", t.attributes.rspace = "0em") : r.mclass === "minner" && (t.attributes.lspace = "0.0556em", t.attributes.width = "+0.1111em")), t; +} +B({ + type: "mclass", + names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], + props: { + numArgs: 1, + primitive: !0 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r, n = e[0]; + return { + type: "mclass", + mode: t.mode, + mclass: "m" + a.slice(5), + // TODO(kevinb): don't prefix with 'm' + body: Q(n), + isCharacterBox: q.isCharacterBox(n) + }; + }, + htmlBuilder: qr, + mathmlBuilder: Er +}); +var Ie = (r) => { + var e = r.type === "ordgroup" && r.body.length ? r.body[0] : r; + return e.type === "atom" && (e.family === "bin" || e.family === "rel") ? "m" + e.family : "mord"; +}; +B({ + type: "mclass", + names: ["\\@binrel"], + props: { + numArgs: 2 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "mclass", + mode: t.mode, + mclass: Ie(e[0]), + body: Q(e[1]), + isCharacterBox: q.isCharacterBox(e[1]) + }; + } +}); +B({ + type: "mclass", + names: ["\\stackrel", "\\overset", "\\underset"], + props: { + numArgs: 2 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r, n = e[1], s = e[0], o; + a !== "\\stackrel" ? o = Ie(n) : o = "mrel"; + var h = { + type: "op", + mode: n.mode, + limits: !0, + alwaysHandleSupSub: !0, + parentIsSupSub: !1, + symbol: !1, + suppressBaseShift: a !== "\\stackrel", + body: Q(n) + }, c = { + type: "supsub", + mode: s.mode, + base: h, + sup: a === "\\underset" ? null : s, + sub: a === "\\underset" ? s : null + }; + return { + type: "mclass", + mode: t.mode, + mclass: o, + body: [c], + isCharacterBox: q.isCharacterBox(c) + }; + }, + htmlBuilder: qr, + mathmlBuilder: Er +}); +B({ + type: "pmb", + names: ["\\pmb"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "pmb", + mode: t.mode, + mclass: Ie(e[0]), + body: Q(e[0]) + }; + }, + htmlBuilder(r, e) { + var t = t0(r.body, e, !0), a = b.makeSpan([r.mclass], t, e); + return a.style.textShadow = "0.02em 0.01em 0.04px", a; + }, + mathmlBuilder(r, e) { + var t = o0(r.body, e), a = new S.MathNode("mstyle", t); + return a.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px"), a; + } +}); +var T1 = { + ">": "\\\\cdrightarrow", + "<": "\\\\cdleftarrow", + "=": "\\\\cdlongequal", + A: "\\uparrow", + V: "\\downarrow", + "|": "\\Vert", + ".": "no arrow" +}, Wt = () => ({ + type: "styling", + body: [], + mode: "math", + style: "display" +}), jt = (r) => r.type === "textord" && r.text === "@", B1 = (r, e) => (r.type === "mathord" || r.type === "atom") && r.text === e; +function D1(r, e, t) { + var a = T1[r]; + switch (a) { + case "\\\\cdrightarrow": + case "\\\\cdleftarrow": + return t.callFunction(a, [e[0]], [e[1]]); + case "\\uparrow": + case "\\downarrow": { + var n = t.callFunction("\\\\cdleft", [e[0]], []), s = { + type: "atom", + text: a, + mode: "math", + family: "rel" + }, o = t.callFunction("\\Big", [s], []), h = t.callFunction("\\\\cdright", [e[1]], []), c = { + type: "ordgroup", + mode: "math", + body: [n, o, h] + }; + return t.callFunction("\\\\cdparent", [c], []); + } + case "\\\\cdlongequal": + return t.callFunction("\\\\cdlongequal", [], []); + case "\\Vert": { + var p = { + type: "textord", + text: "\\Vert", + mode: "math" + }; + return t.callFunction("\\Big", [p], []); + } + default: + return { + type: "textord", + text: " ", + mode: "math" + }; + } +} +function C1(r) { + var e = []; + for (r.gullet.beginGroup(), r.gullet.macros.set("\\cr", "\\\\\\relax"), r.gullet.beginGroup(); ; ) { + e.push(r.parseExpression(!1, "\\\\")), r.gullet.endGroup(), r.gullet.beginGroup(); + var t = r.fetch().text; + if (t === "&" || t === "\\\\") + r.consume(); + else if (t === "\\end") { + e[e.length - 1].length === 0 && e.pop(); + break; + } else + throw new M("Expected \\\\ or \\cr or \\end", r.nextToken); + } + for (var a = [], n = [a], s = 0; s < e.length; s++) { + for (var o = e[s], h = Wt(), c = 0; c < o.length; c++) + if (!jt(o[c])) + h.body.push(o[c]); + else { + a.push(h), c += 1; + var p = yt(o[c]).text, g = new Array(2); + if (g[0] = { + type: "ordgroup", + mode: "math", + body: [] + }, g[1] = { + type: "ordgroup", + mode: "math", + body: [] + }, !("=|.".indexOf(p) > -1)) + if ("<>AV".indexOf(p) > -1) + for (var y = 0; y < 2; y++) { + for (var w = !0, x = c + 1; x < o.length; x++) { + if (B1(o[x], p)) { + w = !1, c = x; + break; + } + if (jt(o[x])) + throw new M("Missing a " + p + " character to complete a CD arrow.", o[x]); + g[y].body.push(o[x]); + } + if (w) + throw new M("Missing a " + p + " character to complete a CD arrow.", o[c]); + } + else + throw new M('Expected one of "<>AV=|." after @', o[c]); + var z = D1(p, g, r), T = { + type: "styling", + body: [z], + mode: "math", + style: "display" + // CD is always displaystyle. + }; + a.push(T), h = Wt(); + } + s % 2 === 0 ? a.push(h) : a.shift(), a = [], n.push(a); + } + r.gullet.endGroup(), r.gullet.endGroup(); + var C = new Array(n[0].length).fill({ + type: "align", + align: "c", + pregap: 0.25, + // CD package sets \enskip between columns. + postgap: 0.25 + // So pre and post each get half an \enskip, i.e. 0.25em. + }); + return { + type: "array", + mode: "math", + body: n, + arraystretch: 1, + addJot: !0, + rowGaps: [null], + cols: C, + colSeparationType: "CD", + hLinesBeforeRow: new Array(n.length + 1).fill([]) + }; +} +B({ + type: "cdlabel", + names: ["\\\\cdleft", "\\\\cdright"], + props: { + numArgs: 1 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r; + return { + type: "cdlabel", + mode: t.mode, + side: a.slice(4), + label: e[0] + }; + }, + htmlBuilder(r, e) { + var t = e.havingStyle(e.style.sup()), a = b.wrapFragment(P(r.label, t, e), e); + return a.classes.push("cd-label-" + r.side), a.style.bottom = A(0.8 - a.depth), a.height = 0, a.depth = 0, a; + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mrow", [X(r.label, e)]); + return t = new S.MathNode("mpadded", [t]), t.setAttribute("width", "0"), r.side === "left" && t.setAttribute("lspace", "-1width"), t.setAttribute("voffset", "0.7em"), t = new S.MathNode("mstyle", [t]), t.setAttribute("displaystyle", "false"), t.setAttribute("scriptlevel", "1"), t; + } +}); +B({ + type: "cdlabelparent", + names: ["\\\\cdparent"], + props: { + numArgs: 1 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "cdlabelparent", + mode: t.mode, + fragment: e[0] + }; + }, + htmlBuilder(r, e) { + var t = b.wrapFragment(P(r.fragment, e), e); + return t.classes.push("cd-vert-arrow"), t; + }, + mathmlBuilder(r, e) { + return new S.MathNode("mrow", [X(r.fragment, e)]); + } +}); +B({ + type: "textord", + names: ["\\@char"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler(r, e) { + for (var { + parser: t + } = r, a = F(e[0], "ordgroup"), n = a.body, s = "", o = 0; o < n.length; o++) { + var h = F(n[o], "textord"); + s += h.text; + } + var c = parseInt(s), p; + if (isNaN(c)) + throw new M("\\@char has non-numeric argument " + s); + if (c < 0 || c >= 1114111) + throw new M("\\@char with invalid code point " + s); + return c <= 65535 ? p = String.fromCharCode(c) : (c -= 65536, p = String.fromCharCode((c >> 10) + 55296, (c & 1023) + 56320)), { + type: "textord", + mode: t.mode, + text: p + }; + } +}); +var Rr = (r, e) => { + var t = t0(r.body, e.withColor(r.color), !1); + return b.makeFragment(t); +}, Ir = (r, e) => { + var t = o0(r.body, e.withColor(r.color)), a = new S.MathNode("mstyle", t); + return a.setAttribute("mathcolor", r.color), a; +}; +B({ + type: "color", + names: ["\\textcolor"], + props: { + numArgs: 2, + allowedInText: !0, + argTypes: ["color", "original"] + }, + handler(r, e) { + var { + parser: t + } = r, a = F(e[0], "color-token").color, n = e[1]; + return { + type: "color", + mode: t.mode, + color: a, + body: Q(n) + }; + }, + htmlBuilder: Rr, + mathmlBuilder: Ir +}); +B({ + type: "color", + names: ["\\color"], + props: { + numArgs: 1, + allowedInText: !0, + argTypes: ["color"] + }, + handler(r, e) { + var { + parser: t, + breakOnTokenText: a + } = r, n = F(e[0], "color-token").color; + t.gullet.macros.set("\\current@color", n); + var s = t.parseExpression(!0, a); + return { + type: "color", + mode: t.mode, + color: n, + body: s + }; + }, + htmlBuilder: Rr, + mathmlBuilder: Ir +}); +B({ + type: "cr", + names: ["\\\\"], + props: { + numArgs: 0, + numOptionalArgs: 0, + allowedInText: !0 + }, + handler(r, e, t) { + var { + parser: a + } = r, n = a.gullet.future().text === "[" ? a.parseSizeGroup(!0) : null, s = !a.settings.displayMode || !a.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode"); + return { + type: "cr", + mode: a.mode, + newLine: s, + size: n && F(n, "size").value + }; + }, + // The following builders are called only at the top level, + // not within tabular/array environments. + htmlBuilder(r, e) { + var t = b.makeSpan(["mspace"], [], e); + return r.newLine && (t.classes.push("newline"), r.size && (t.style.marginTop = A(K(r.size, e)))), t; + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mspace"); + return r.newLine && (t.setAttribute("linebreak", "newline"), r.size && t.setAttribute("height", A(K(r.size, e)))), t; + } +}); +var ut = { + "\\global": "\\global", + "\\long": "\\\\globallong", + "\\\\globallong": "\\\\globallong", + "\\def": "\\gdef", + "\\gdef": "\\gdef", + "\\edef": "\\xdef", + "\\xdef": "\\xdef", + "\\let": "\\\\globallet", + "\\futurelet": "\\\\globalfuture" +}, Or = (r) => { + var e = r.text; + if (/^(?:[\\{}$&#^_]|EOF)$/.test(e)) + throw new M("Expected a control sequence", r); + return e; +}, N1 = (r) => { + var e = r.gullet.popToken(); + return e.text === "=" && (e = r.gullet.popToken(), e.text === " " && (e = r.gullet.popToken())), e; +}, Hr = (r, e, t, a) => { + var n = r.gullet.macros.get(t.text); + n == null && (t.noexpand = !0, n = { + tokens: [t], + numArgs: 0, + // reproduce the same behavior in expansion + unexpandable: !r.gullet.isExpandable(t.text) + }), r.gullet.macros.set(e, n, a); +}; +B({ + type: "internal", + names: [ + "\\global", + "\\long", + "\\\\globallong" + // can’t be entered directly + ], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r; + e.consumeSpaces(); + var a = e.fetch(); + if (ut[a.text]) + return (t === "\\global" || t === "\\\\globallong") && (a.text = ut[a.text]), F(e.parseFunction(), "internal"); + throw new M("Invalid token after macro prefix", a); + } +}); +B({ + type: "internal", + names: ["\\def", "\\gdef", "\\edef", "\\xdef"], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r, a = e.gullet.popToken(), n = a.text; + if (/^(?:[\\{}$&#^_]|EOF)$/.test(n)) + throw new M("Expected a control sequence", a); + for (var s = 0, o, h = [[]]; e.gullet.future().text !== "{"; ) + if (a = e.gullet.popToken(), a.text === "#") { + if (e.gullet.future().text === "{") { + o = e.gullet.future(), h[s].push("{"); + break; + } + if (a = e.gullet.popToken(), !/^[1-9]$/.test(a.text)) + throw new M('Invalid argument number "' + a.text + '"'); + if (parseInt(a.text) !== s + 1) + throw new M('Argument number "' + a.text + '" out of order'); + s++, h.push([]); + } else { + if (a.text === "EOF") + throw new M("Expected a macro definition"); + h[s].push(a.text); + } + var { + tokens: c + } = e.gullet.consumeArg(); + return o && c.unshift(o), (t === "\\edef" || t === "\\xdef") && (c = e.gullet.expandTokens(c), c.reverse()), e.gullet.macros.set(n, { + tokens: c, + numArgs: s, + delimiters: h + }, t === ut[t]), { + type: "internal", + mode: e.mode + }; + } +}); +B({ + type: "internal", + names: [ + "\\let", + "\\\\globallet" + // can’t be entered directly + ], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r, a = Or(e.gullet.popToken()); + e.gullet.consumeSpaces(); + var n = N1(e); + return Hr(e, a, n, t === "\\\\globallet"), { + type: "internal", + mode: e.mode + }; + } +}); +B({ + type: "internal", + names: [ + "\\futurelet", + "\\\\globalfuture" + // can’t be entered directly + ], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r, a = Or(e.gullet.popToken()), n = e.gullet.popToken(), s = e.gullet.popToken(); + return Hr(e, a, s, t === "\\\\globalfuture"), e.gullet.pushToken(s), e.gullet.pushToken(n), { + type: "internal", + mode: e.mode + }; + } +}); +var ne = function(e, t, a) { + var n = $.math[e] && $.math[e].replace, s = ft(n || e, t, a); + if (!s) + throw new Error("Unsupported symbol " + e + " and font size " + t + "."); + return s; +}, wt = function(e, t, a, n) { + var s = a.havingBaseStyle(t), o = b.makeSpan(n.concat(s.sizingClasses(a)), [e], a), h = s.sizeMultiplier / a.sizeMultiplier; + return o.height *= h, o.depth *= h, o.maxFontSize = s.sizeMultiplier, o; +}, Fr = function(e, t, a) { + var n = t.havingBaseStyle(a), s = (1 - t.sizeMultiplier / n.sizeMultiplier) * t.fontMetrics().axisHeight; + e.classes.push("delimcenter"), e.style.top = A(s), e.height -= s, e.depth += s; +}, q1 = function(e, t, a, n, s, o) { + var h = b.makeSymbol(e, "Main-Regular", s, n), c = wt(h, t, n, o); + return a && Fr(c, n, t), c; +}, E1 = function(e, t, a, n) { + return b.makeSymbol(e, "Size" + t + "-Regular", a, n); +}, Lr = function(e, t, a, n, s, o) { + var h = E1(e, t, s, n), c = wt(b.makeSpan(["delimsizing", "size" + t], [h], n), R.TEXT, n, o); + return a && Fr(c, n, R.TEXT), c; +}, je = function(e, t, a) { + var n; + t === "Size1-Regular" ? n = "delim-size1" : n = "delim-size4"; + var s = b.makeSpan(["delimsizinginner", n], [b.makeSpan([], [b.makeSymbol(e, t, a)])]); + return { + type: "elem", + elem: s + }; +}, Ze = function(e, t, a) { + var n = x0["Size4-Regular"][e.charCodeAt(0)] ? x0["Size4-Regular"][e.charCodeAt(0)][4] : x0["Size1-Regular"][e.charCodeAt(0)][4], s = new P0("inner", La(e, Math.round(1e3 * t))), o = new D0([s], { + width: A(n), + height: A(t), + // Override CSS rule `.katex svg { width: 100% }` + style: "width:" + A(n), + viewBox: "0 0 " + 1e3 * n + " " + Math.round(1e3 * t), + preserveAspectRatio: "xMinYMin" + }), h = b.makeSvgSpan([], [o], a); + return h.height = t, h.style.height = A(t), h.style.width = A(n), { + type: "elem", + elem: h + }; +}, ht = 8e-3, Se = { + type: "kern", + size: -1 * ht +}, R1 = ["|", "\\lvert", "\\rvert", "\\vert"], I1 = ["\\|", "\\lVert", "\\rVert", "\\Vert"], Pr = function(e, t, a, n, s, o) { + var h, c, p, g, y = "", w = 0; + h = p = g = e, c = null; + var x = "Size1-Regular"; + e === "\\uparrow" ? p = g = "⏐" : e === "\\Uparrow" ? p = g = "‖" : e === "\\downarrow" ? h = p = "⏐" : e === "\\Downarrow" ? h = p = "‖" : e === "\\updownarrow" ? (h = "\\uparrow", p = "⏐", g = "\\downarrow") : e === "\\Updownarrow" ? (h = "\\Uparrow", p = "‖", g = "\\Downarrow") : q.contains(R1, e) ? (p = "∣", y = "vert", w = 333) : q.contains(I1, e) ? (p = "∥", y = "doublevert", w = 556) : e === "[" || e === "\\lbrack" ? (h = "⎡", p = "⎢", g = "⎣", x = "Size4-Regular", y = "lbrack", w = 667) : e === "]" || e === "\\rbrack" ? (h = "⎤", p = "⎥", g = "⎦", x = "Size4-Regular", y = "rbrack", w = 667) : e === "\\lfloor" || e === "⌊" ? (p = h = "⎢", g = "⎣", x = "Size4-Regular", y = "lfloor", w = 667) : e === "\\lceil" || e === "⌈" ? (h = "⎡", p = g = "⎢", x = "Size4-Regular", y = "lceil", w = 667) : e === "\\rfloor" || e === "⌋" ? (p = h = "⎥", g = "⎦", x = "Size4-Regular", y = "rfloor", w = 667) : e === "\\rceil" || e === "⌉" ? (h = "⎤", p = g = "⎥", x = "Size4-Regular", y = "rceil", w = 667) : e === "(" || e === "\\lparen" ? (h = "⎛", p = "⎜", g = "⎝", x = "Size4-Regular", y = "lparen", w = 875) : e === ")" || e === "\\rparen" ? (h = "⎞", p = "⎟", g = "⎠", x = "Size4-Regular", y = "rparen", w = 875) : e === "\\{" || e === "\\lbrace" ? (h = "⎧", c = "⎨", g = "⎩", p = "⎪", x = "Size4-Regular") : e === "\\}" || e === "\\rbrace" ? (h = "⎫", c = "⎬", g = "⎭", p = "⎪", x = "Size4-Regular") : e === "\\lgroup" || e === "⟮" ? (h = "⎧", g = "⎩", p = "⎪", x = "Size4-Regular") : e === "\\rgroup" || e === "⟯" ? (h = "⎫", g = "⎭", p = "⎪", x = "Size4-Regular") : e === "\\lmoustache" || e === "⎰" ? (h = "⎧", g = "⎭", p = "⎪", x = "Size4-Regular") : (e === "\\rmoustache" || e === "⎱") && (h = "⎫", g = "⎩", p = "⎪", x = "Size4-Regular"); + var z = ne(h, x, s), T = z.height + z.depth, C = ne(p, x, s), N = C.height + C.depth, O = ne(g, x, s), H = O.height + O.depth, V = 0, L = 1; + if (c !== null) { + var U = ne(c, x, s); + V = U.height + U.depth, L = 2; + } + var G = T + H + V, j = Math.max(0, Math.ceil((t - G) / (L * N))), Y = G + j * L * N, M0 = n.fontMetrics().axisHeight; + a && (M0 *= n.sizeMultiplier); + var r0 = Y / 2 - M0, e0 = []; + if (y.length > 0) { + var U0 = Y - T - H, s0 = Math.round(Y * 1e3), g0 = Pa(y, Math.round(U0 * 1e3)), E0 = new P0(y, g0), W0 = (w / 1e3).toFixed(3) + "em", j0 = (s0 / 1e3).toFixed(3) + "em", Le = new D0([E0], { + width: W0, + height: j0, + viewBox: "0 0 " + w + " " + s0 + }), R0 = b.makeSvgSpan([], [Le], n); + R0.height = s0 / 1e3, R0.style.width = W0, R0.style.height = j0, e0.push({ + type: "elem", + elem: R0 + }); + } else { + if (e0.push(je(g, x, s)), e0.push(Se), c === null) { + var I0 = Y - T - H + 2 * ht; + e0.push(Ze(p, I0, n)); + } else { + var m0 = (Y - T - H - V) / 2 + 2 * ht; + e0.push(Ze(p, m0, n)), e0.push(Se), e0.push(je(c, x, s)), e0.push(Se), e0.push(Ze(p, m0, n)); + } + e0.push(Se), e0.push(je(h, x, s)); + } + var ae = n.havingBaseStyle(R.TEXT), Pe = b.makeVList({ + positionType: "bottom", + positionData: r0, + children: e0 + }, ae); + return wt(b.makeSpan(["delimsizing", "mult"], [Pe], ae), R.TEXT, n, o); +}, Ke = 80, Je = 0.08, Qe = function(e, t, a, n, s) { + var o = Fa(e, n, a), h = new P0(e, o), c = new D0([h], { + // Note: 1000:1 ratio of viewBox to document em width. + width: "400em", + height: A(t), + viewBox: "0 0 400000 " + a, + preserveAspectRatio: "xMinYMin slice" + }); + return b.makeSvgSpan(["hide-tail"], [c], s); +}, O1 = function(e, t) { + var a = t.havingBaseSizing(), n = Yr("\\surd", e * a.sizeMultiplier, Ur, a), s = a.sizeMultiplier, o = Math.max(0, t.minRuleThickness - t.fontMetrics().sqrtRuleThickness), h, c = 0, p = 0, g = 0, y; + return n.type === "small" ? (g = 1e3 + 1e3 * o + Ke, e < 1 ? s = 1 : e < 1.4 && (s = 0.7), c = (1 + o + Je) / s, p = (1 + o) / s, h = Qe("sqrtMain", c, g, o, t), h.style.minWidth = "0.853em", y = 0.833 / s) : n.type === "large" ? (g = (1e3 + Ke) * se[n.size], p = (se[n.size] + o) / s, c = (se[n.size] + o + Je) / s, h = Qe("sqrtSize" + n.size, c, g, o, t), h.style.minWidth = "1.02em", y = 1 / s) : (c = e + o + Je, p = e + o, g = Math.floor(1e3 * e + o) + Ke, h = Qe("sqrtTall", c, g, o, t), h.style.minWidth = "0.742em", y = 1.056), h.height = p, h.style.height = A(c), { + span: h, + advanceWidth: y, + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + ruleWidth: (t.fontMetrics().sqrtRuleThickness + o) * s + }; +}, Gr = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "⌊", "⌋", "\\lceil", "\\rceil", "⌈", "⌉", "\\surd"], H1 = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "⟮", "⟯", "\\lmoustache", "\\rmoustache", "⎰", "⎱"], Vr = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"], se = [0, 1.2, 1.8, 2.4, 3], F1 = function(e, t, a, n, s) { + if (e === "<" || e === "\\lt" || e === "⟨" ? e = "\\langle" : (e === ">" || e === "\\gt" || e === "⟩") && (e = "\\rangle"), q.contains(Gr, e) || q.contains(Vr, e)) + return Lr(e, t, !1, a, n, s); + if (q.contains(H1, e)) + return Pr(e, se[t], !1, a, n, s); + throw new M("Illegal delimiter: '" + e + "'"); +}, L1 = [{ + type: "small", + style: R.SCRIPTSCRIPT +}, { + type: "small", + style: R.SCRIPT +}, { + type: "small", + style: R.TEXT +}, { + type: "large", + size: 1 +}, { + type: "large", + size: 2 +}, { + type: "large", + size: 3 +}, { + type: "large", + size: 4 +}], P1 = [{ + type: "small", + style: R.SCRIPTSCRIPT +}, { + type: "small", + style: R.SCRIPT +}, { + type: "small", + style: R.TEXT +}, { + type: "stack" +}], Ur = [{ + type: "small", + style: R.SCRIPTSCRIPT +}, { + type: "small", + style: R.SCRIPT +}, { + type: "small", + style: R.TEXT +}, { + type: "large", + size: 1 +}, { + type: "large", + size: 2 +}, { + type: "large", + size: 3 +}, { + type: "large", + size: 4 +}, { + type: "stack" +}], G1 = function(e) { + if (e.type === "small") + return "Main-Regular"; + if (e.type === "large") + return "Size" + e.size + "-Regular"; + if (e.type === "stack") + return "Size4-Regular"; + throw new Error("Add support for delim type '" + e.type + "' here."); +}, Yr = function(e, t, a, n) { + for (var s = Math.min(2, 3 - n.style.size), o = s; o < a.length && a[o].type !== "stack"; o++) { + var h = ne(e, G1(a[o]), "math"), c = h.height + h.depth; + if (a[o].type === "small") { + var p = n.havingBaseStyle(a[o].style); + c *= p.sizeMultiplier; + } + if (c > t) + return a[o]; + } + return a[a.length - 1]; +}, Xr = function(e, t, a, n, s, o) { + e === "<" || e === "\\lt" || e === "⟨" ? e = "\\langle" : (e === ">" || e === "\\gt" || e === "⟩") && (e = "\\rangle"); + var h; + q.contains(Vr, e) ? h = L1 : q.contains(Gr, e) ? h = Ur : h = P1; + var c = Yr(e, t, h, n); + return c.type === "small" ? q1(e, c.style, a, n, s, o) : c.type === "large" ? Lr(e, c.size, a, n, s, o) : Pr(e, t, a, n, s, o); +}, V1 = function(e, t, a, n, s, o) { + var h = n.fontMetrics().axisHeight * n.sizeMultiplier, c = 901, p = 5 / n.fontMetrics().ptPerEm, g = Math.max(t - h, a + h), y = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + g / 500 * c, + 2 * g - p + ); + return Xr(e, y, !0, n, s, o); +}, B0 = { + sqrtImage: O1, + sizedDelim: F1, + sizeToMaxHeight: se, + customSizedDelim: Xr, + leftRightDelim: V1 +}, Zt = { + "\\bigl": { + mclass: "mopen", + size: 1 + }, + "\\Bigl": { + mclass: "mopen", + size: 2 + }, + "\\biggl": { + mclass: "mopen", + size: 3 + }, + "\\Biggl": { + mclass: "mopen", + size: 4 + }, + "\\bigr": { + mclass: "mclose", + size: 1 + }, + "\\Bigr": { + mclass: "mclose", + size: 2 + }, + "\\biggr": { + mclass: "mclose", + size: 3 + }, + "\\Biggr": { + mclass: "mclose", + size: 4 + }, + "\\bigm": { + mclass: "mrel", + size: 1 + }, + "\\Bigm": { + mclass: "mrel", + size: 2 + }, + "\\biggm": { + mclass: "mrel", + size: 3 + }, + "\\Biggm": { + mclass: "mrel", + size: 4 + }, + "\\big": { + mclass: "mord", + size: 1 + }, + "\\Big": { + mclass: "mord", + size: 2 + }, + "\\bigg": { + mclass: "mord", + size: 3 + }, + "\\Bigg": { + mclass: "mord", + size: 4 + } +}, U1 = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "⌊", "⌋", "\\lceil", "\\rceil", "⌈", "⌉", "<", ">", "\\langle", "⟨", "\\rangle", "⟩", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "⟮", "⟯", "\\lmoustache", "\\rmoustache", "⎰", "⎱", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; +function Oe(r, e) { + var t = Re(r); + if (t && q.contains(U1, t.text)) + return t; + throw t ? new M("Invalid delimiter '" + t.text + "' after '" + e.funcName + "'", r) : new M("Invalid delimiter type '" + r.type + "'", r); +} +B({ + type: "delimsizing", + names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], + props: { + numArgs: 1, + argTypes: ["primitive"] + }, + handler: (r, e) => { + var t = Oe(e[0], r); + return { + type: "delimsizing", + mode: r.parser.mode, + size: Zt[r.funcName].size, + mclass: Zt[r.funcName].mclass, + delim: t.text + }; + }, + htmlBuilder: (r, e) => r.delim === "." ? b.makeSpan([r.mclass]) : B0.sizedDelim(r.delim, r.size, e, r.mode, [r.mclass]), + mathmlBuilder: (r) => { + var e = []; + r.delim !== "." && e.push(v0(r.delim, r.mode)); + var t = new S.MathNode("mo", e); + r.mclass === "mopen" || r.mclass === "mclose" ? t.setAttribute("fence", "true") : t.setAttribute("fence", "false"), t.setAttribute("stretchy", "true"); + var a = A(B0.sizeToMaxHeight[r.size]); + return t.setAttribute("minsize", a), t.setAttribute("maxsize", a), t; + } +}); +function Kt(r) { + if (!r.body) + throw new Error("Bug: The leftright ParseNode wasn't fully parsed."); +} +B({ + type: "leftright-right", + names: ["\\right"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (r, e) => { + var t = r.parser.gullet.macros.get("\\current@color"); + if (t && typeof t != "string") + throw new M("\\current@color set to non-string in \\right"); + return { + type: "leftright-right", + mode: r.parser.mode, + delim: Oe(e[0], r).text, + color: t + // undefined if not set via \color + }; + } +}); +B({ + type: "leftright", + names: ["\\left"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (r, e) => { + var t = Oe(e[0], r), a = r.parser; + ++a.leftrightDepth; + var n = a.parseExpression(!1); + --a.leftrightDepth, a.expect("\\right", !1); + var s = F(a.parseFunction(), "leftright-right"); + return { + type: "leftright", + mode: a.mode, + body: n, + left: t.text, + right: s.delim, + rightColor: s.color + }; + }, + htmlBuilder: (r, e) => { + Kt(r); + for (var t = t0(r.body, e, !0, ["mopen", "mclose"]), a = 0, n = 0, s = !1, o = 0; o < t.length; o++) + t[o].isMiddle ? s = !0 : (a = Math.max(t[o].height, a), n = Math.max(t[o].depth, n)); + a *= e.sizeMultiplier, n *= e.sizeMultiplier; + var h; + if (r.left === "." ? h = oe(e, ["mopen"]) : h = B0.leftRightDelim(r.left, a, n, e, r.mode, ["mopen"]), t.unshift(h), s) + for (var c = 1; c < t.length; c++) { + var p = t[c], g = p.isMiddle; + g && (t[c] = B0.leftRightDelim(g.delim, a, n, g.options, r.mode, [])); + } + var y; + if (r.right === ".") + y = oe(e, ["mclose"]); + else { + var w = r.rightColor ? e.withColor(r.rightColor) : e; + y = B0.leftRightDelim(r.right, a, n, w, r.mode, ["mclose"]); + } + return t.push(y), b.makeSpan(["minner"], t, e); + }, + mathmlBuilder: (r, e) => { + Kt(r); + var t = o0(r.body, e); + if (r.left !== ".") { + var a = new S.MathNode("mo", [v0(r.left, r.mode)]); + a.setAttribute("fence", "true"), t.unshift(a); + } + if (r.right !== ".") { + var n = new S.MathNode("mo", [v0(r.right, r.mode)]); + n.setAttribute("fence", "true"), r.rightColor && n.setAttribute("mathcolor", r.rightColor), t.push(n); + } + return gt(t); + } +}); +B({ + type: "middle", + names: ["\\middle"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (r, e) => { + var t = Oe(e[0], r); + if (!r.parser.leftrightDepth) + throw new M("\\middle without preceding \\left", t); + return { + type: "middle", + mode: r.parser.mode, + delim: t.text + }; + }, + htmlBuilder: (r, e) => { + var t; + if (r.delim === ".") + t = oe(e, []); + else { + t = B0.sizedDelim(r.delim, 1, e, r.mode, []); + var a = { + delim: r.delim, + options: e + }; + t.isMiddle = a; + } + return t; + }, + mathmlBuilder: (r, e) => { + var t = r.delim === "\\vert" || r.delim === "|" ? v0("|", "text") : v0(r.delim, r.mode), a = new S.MathNode("mo", [t]); + return a.setAttribute("fence", "true"), a.setAttribute("lspace", "0.05em"), a.setAttribute("rspace", "0.05em"), a; + } +}); +var kt = (r, e) => { + var t = b.wrapFragment(P(r.body, e), e), a = r.label.slice(1), n = e.sizeMultiplier, s, o = 0, h = q.isCharacterBox(r.body); + if (a === "sout") + s = b.makeSpan(["stretchy", "sout"]), s.height = e.fontMetrics().defaultRuleThickness / n, o = -0.5 * e.fontMetrics().xHeight; + else if (a === "phase") { + var c = K({ + number: 0.6, + unit: "pt" + }, e), p = K({ + number: 0.35, + unit: "ex" + }, e), g = e.havingBaseSizing(); + n = n / g.sizeMultiplier; + var y = t.height + t.depth + c + p; + t.style.paddingLeft = A(y / 2 + c); + var w = Math.floor(1e3 * y * n), x = Oa(w), z = new D0([new P0("phase", x)], { + width: "400em", + height: A(w / 1e3), + viewBox: "0 0 400000 " + w, + preserveAspectRatio: "xMinYMin slice" + }); + s = b.makeSvgSpan(["hide-tail"], [z], e), s.style.height = A(y), o = t.depth + c + p; + } else { + /cancel/.test(a) ? h || t.classes.push("cancel-pad") : a === "angl" ? t.classes.push("anglpad") : t.classes.push("boxpad"); + var T = 0, C = 0, N = 0; + /box/.test(a) ? (N = Math.max( + e.fontMetrics().fboxrule, + // default + e.minRuleThickness + // User override. + ), T = e.fontMetrics().fboxsep + (a === "colorbox" ? 0 : N), C = T) : a === "angl" ? (N = Math.max(e.fontMetrics().defaultRuleThickness, e.minRuleThickness), T = 4 * N, C = Math.max(0, 0.25 - t.depth)) : (T = h ? 0.2 : 0, C = T), s = N0.encloseSpan(t, a, T, C, e), /fbox|boxed|fcolorbox/.test(a) ? (s.style.borderStyle = "solid", s.style.borderWidth = A(N)) : a === "angl" && N !== 0.049 && (s.style.borderTopWidth = A(N), s.style.borderRightWidth = A(N)), o = t.depth + C, r.backgroundColor && (s.style.backgroundColor = r.backgroundColor, r.borderColor && (s.style.borderColor = r.borderColor)); + } + var O; + if (r.backgroundColor) + O = b.makeVList({ + positionType: "individualShift", + children: [ + // Put the color background behind inner; + { + type: "elem", + elem: s, + shift: o + }, + { + type: "elem", + elem: t, + shift: 0 + } + ] + }, e); + else { + var H = /cancel|phase/.test(a) ? ["svg-align"] : []; + O = b.makeVList({ + positionType: "individualShift", + children: [ + // Write the \cancel stroke on top of inner. + { + type: "elem", + elem: t, + shift: 0 + }, + { + type: "elem", + elem: s, + shift: o, + wrapperClasses: H + } + ] + }, e); + } + return /cancel/.test(a) && (O.height = t.height, O.depth = t.depth), /cancel/.test(a) && !h ? b.makeSpan(["mord", "cancel-lap"], [O], e) : b.makeSpan(["mord"], [O], e); +}, St = (r, e) => { + var t = 0, a = new S.MathNode(r.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [X(r.body, e)]); + switch (r.label) { + case "\\cancel": + a.setAttribute("notation", "updiagonalstrike"); + break; + case "\\bcancel": + a.setAttribute("notation", "downdiagonalstrike"); + break; + case "\\phase": + a.setAttribute("notation", "phasorangle"); + break; + case "\\sout": + a.setAttribute("notation", "horizontalstrike"); + break; + case "\\fbox": + a.setAttribute("notation", "box"); + break; + case "\\angl": + a.setAttribute("notation", "actuarial"); + break; + case "\\fcolorbox": + case "\\colorbox": + if (t = e.fontMetrics().fboxsep * e.fontMetrics().ptPerEm, a.setAttribute("width", "+" + 2 * t + "pt"), a.setAttribute("height", "+" + 2 * t + "pt"), a.setAttribute("lspace", t + "pt"), a.setAttribute("voffset", t + "pt"), r.label === "\\fcolorbox") { + var n = Math.max( + e.fontMetrics().fboxrule, + // default + e.minRuleThickness + // user override + ); + a.setAttribute("style", "border: " + n + "em solid " + String(r.borderColor)); + } + break; + case "\\xcancel": + a.setAttribute("notation", "updiagonalstrike downdiagonalstrike"); + break; + } + return r.backgroundColor && a.setAttribute("mathbackground", r.backgroundColor), a; +}; +B({ + type: "enclose", + names: ["\\colorbox"], + props: { + numArgs: 2, + allowedInText: !0, + argTypes: ["color", "text"] + }, + handler(r, e, t) { + var { + parser: a, + funcName: n + } = r, s = F(e[0], "color-token").color, o = e[1]; + return { + type: "enclose", + mode: a.mode, + label: n, + backgroundColor: s, + body: o + }; + }, + htmlBuilder: kt, + mathmlBuilder: St +}); +B({ + type: "enclose", + names: ["\\fcolorbox"], + props: { + numArgs: 3, + allowedInText: !0, + argTypes: ["color", "color", "text"] + }, + handler(r, e, t) { + var { + parser: a, + funcName: n + } = r, s = F(e[0], "color-token").color, o = F(e[1], "color-token").color, h = e[2]; + return { + type: "enclose", + mode: a.mode, + label: n, + backgroundColor: o, + borderColor: s, + body: h + }; + }, + htmlBuilder: kt, + mathmlBuilder: St +}); +B({ + type: "enclose", + names: ["\\fbox"], + props: { + numArgs: 1, + argTypes: ["hbox"], + allowedInText: !0 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "enclose", + mode: t.mode, + label: "\\fbox", + body: e[0] + }; + } +}); +B({ + type: "enclose", + names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"], + props: { + numArgs: 1 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r, n = e[0]; + return { + type: "enclose", + mode: t.mode, + label: a, + body: n + }; + }, + htmlBuilder: kt, + mathmlBuilder: St +}); +B({ + type: "enclose", + names: ["\\angl"], + props: { + numArgs: 1, + argTypes: ["hbox"], + allowedInText: !1 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "enclose", + mode: t.mode, + label: "\\angl", + body: e[0] + }; + } +}); +var $r = {}; +function w0(r) { + for (var { + type: e, + names: t, + props: a, + handler: n, + htmlBuilder: s, + mathmlBuilder: o + } = r, h = { + type: e, + numArgs: a.numArgs || 0, + allowedInText: !1, + numOptionalArgs: 0, + handler: n + }, c = 0; c < t.length; ++c) + $r[t[c]] = h; + s && (De[e] = s), o && (Ce[e] = o); +} +var Wr = {}; +function m(r, e) { + Wr[r] = e; +} +function Jt(r) { + var e = []; + r.consumeSpaces(); + var t = r.fetch().text; + for (t === "\\relax" && (r.consume(), r.consumeSpaces(), t = r.fetch().text); t === "\\hline" || t === "\\hdashline"; ) + r.consume(), e.push(t === "\\hdashline"), r.consumeSpaces(), t = r.fetch().text; + return e; +} +var He = (r) => { + var e = r.parser.settings; + if (!e.displayMode) + throw new M("{" + r.envName + "} can be used only in display mode."); +}; +function Mt(r) { + if (r.indexOf("ed") === -1) + return r.indexOf("*") === -1; +} +function V0(r, e, t) { + var { + hskipBeforeAndAfter: a, + addJot: n, + cols: s, + arraystretch: o, + colSeparationType: h, + autoTag: c, + singleRow: p, + emptySingleRow: g, + maxNumCols: y, + leqno: w + } = e; + if (r.gullet.beginGroup(), p || r.gullet.macros.set("\\cr", "\\\\\\relax"), !o) { + var x = r.gullet.expandMacroAsText("\\arraystretch"); + if (x == null) + o = 1; + else if (o = parseFloat(x), !o || o < 0) + throw new M("Invalid \\arraystretch: " + x); + } + r.gullet.beginGroup(); + var z = [], T = [z], C = [], N = [], O = c != null ? [] : void 0; + function H() { + c && r.gullet.macros.set("\\@eqnsw", "1", !0); + } + function V() { + O && (r.gullet.macros.get("\\df@tag") ? (O.push(r.subparse([new f0("\\df@tag")])), r.gullet.macros.set("\\df@tag", void 0, !0)) : O.push(!!c && r.gullet.macros.get("\\@eqnsw") === "1")); + } + for (H(), N.push(Jt(r)); ; ) { + var L = r.parseExpression(!1, p ? "\\end" : "\\\\"); + r.gullet.endGroup(), r.gullet.beginGroup(), L = { + type: "ordgroup", + mode: r.mode, + body: L + }, t && (L = { + type: "styling", + mode: r.mode, + style: t, + body: [L] + }), z.push(L); + var U = r.fetch().text; + if (U === "&") { + if (y && z.length === y) { + if (p || h) + throw new M("Too many tab characters: &", r.nextToken); + r.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument."); + } + r.consume(); + } else if (U === "\\end") { + V(), z.length === 1 && L.type === "styling" && L.body[0].body.length === 0 && (T.length > 1 || !g) && T.pop(), N.length < T.length + 1 && N.push([]); + break; + } else if (U === "\\\\") { + r.consume(); + var G = void 0; + r.gullet.future().text !== " " && (G = r.parseSizeGroup(!0)), C.push(G ? G.value : null), V(), N.push(Jt(r)), z = [], T.push(z), H(); + } else + throw new M("Expected & or \\\\ or \\cr or \\end", r.nextToken); + } + return r.gullet.endGroup(), r.gullet.endGroup(), { + type: "array", + mode: r.mode, + addJot: n, + arraystretch: o, + body: T, + cols: s, + rowGaps: C, + hskipBeforeAndAfter: a, + hLinesBeforeRow: N, + colSeparationType: h, + tags: O, + leqno: w + }; +} +function zt(r) { + return r.slice(0, 1) === "d" ? "display" : "text"; +} +var k0 = function(e, t) { + var a, n, s = e.body.length, o = e.hLinesBeforeRow, h = 0, c = new Array(s), p = [], g = Math.max( + // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em. + t.fontMetrics().arrayRuleWidth, + t.minRuleThickness + // User override. + ), y = 1 / t.fontMetrics().ptPerEm, w = 5 * y; + if (e.colSeparationType && e.colSeparationType === "small") { + var x = t.havingStyle(R.SCRIPT).sizeMultiplier; + w = 0.2778 * (x / t.sizeMultiplier); + } + var z = e.colSeparationType === "CD" ? K({ + number: 3, + unit: "ex" + }, t) : 12 * y, T = 3 * y, C = e.arraystretch * z, N = 0.7 * C, O = 0.3 * C, H = 0; + function V(fe) { + for (var pe = 0; pe < fe.length; ++pe) + pe > 0 && (H += 0.25), p.push({ + pos: H, + isDashed: fe[pe] + }); + } + for (V(o[0]), a = 0; a < e.body.length; ++a) { + var L = e.body[a], U = N, G = O; + h < L.length && (h = L.length); + var j = new Array(L.length); + for (n = 0; n < L.length; ++n) { + var Y = P(L[n], t); + G < Y.depth && (G = Y.depth), U < Y.height && (U = Y.height), j[n] = Y; + } + var M0 = e.rowGaps[a], r0 = 0; + M0 && (r0 = K(M0, t), r0 > 0 && (r0 += O, G < r0 && (G = r0), r0 = 0)), e.addJot && (G += T), j.height = U, j.depth = G, H += U, j.pos = H, H += G + r0, c[a] = j, V(o[a + 1]); + } + var e0 = H / 2 + t.fontMetrics().axisHeight, U0 = e.cols || [], s0 = [], g0, E0, W0 = []; + if (e.tags && e.tags.some((fe) => fe)) + for (a = 0; a < s; ++a) { + var j0 = c[a], Le = j0.pos - e0, R0 = e.tags[a], I0 = void 0; + R0 === !0 ? I0 = b.makeSpan(["eqn-num"], [], t) : R0 === !1 ? I0 = b.makeSpan([], [], t) : I0 = b.makeSpan([], t0(R0, t, !0), t), I0.depth = j0.depth, I0.height = j0.height, W0.push({ + type: "elem", + elem: I0, + shift: Le + }); + } + for ( + n = 0, E0 = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + n < h || E0 < U0.length; + ++n, ++E0 + ) { + for (var m0 = U0[E0] || {}, ae = !0; m0.type === "separator"; ) { + if (ae || (g0 = b.makeSpan(["arraycolsep"], []), g0.style.width = A(t.fontMetrics().doubleRuleSep), s0.push(g0)), m0.separator === "|" || m0.separator === ":") { + var Pe = m0.separator === "|" ? "solid" : "dashed", Z0 = b.makeSpan(["vertical-separator"], [], t); + Z0.style.height = A(H), Z0.style.borderRightWidth = A(g), Z0.style.borderRightStyle = Pe, Z0.style.margin = "0 " + A(-g / 2); + var qt = H - e0; + qt && (Z0.style.verticalAlign = A(-qt)), s0.push(Z0); + } else + throw new M("Invalid separator type: " + m0.separator); + E0++, m0 = U0[E0] || {}, ae = !1; + } + if (!(n >= h)) { + var K0 = void 0; + (n > 0 || e.hskipBeforeAndAfter) && (K0 = q.deflt(m0.pregap, w), K0 !== 0 && (g0 = b.makeSpan(["arraycolsep"], []), g0.style.width = A(K0), s0.push(g0))); + var J0 = []; + for (a = 0; a < s; ++a) { + var ce = c[a], de = ce[n]; + if (de) { + var ha = ce.pos - e0; + de.depth = ce.depth, de.height = ce.height, J0.push({ + type: "elem", + elem: de, + shift: ha + }); + } + } + J0 = b.makeVList({ + positionType: "individualShift", + children: J0 + }, t), J0 = b.makeSpan(["col-align-" + (m0.align || "c")], [J0]), s0.push(J0), (n < h - 1 || e.hskipBeforeAndAfter) && (K0 = q.deflt(m0.postgap, w), K0 !== 0 && (g0 = b.makeSpan(["arraycolsep"], []), g0.style.width = A(K0), s0.push(g0))); + } + } + if (c = b.makeSpan(["mtable"], s0), p.length > 0) { + for (var ma = b.makeLineSpan("hline", t, g), ca = b.makeLineSpan("hdashline", t, g), Ge = [{ + type: "elem", + elem: c, + shift: 0 + }]; p.length > 0; ) { + var Et = p.pop(), Rt = Et.pos - e0; + Et.isDashed ? Ge.push({ + type: "elem", + elem: ca, + shift: Rt + }) : Ge.push({ + type: "elem", + elem: ma, + shift: Rt + }); + } + c = b.makeVList({ + positionType: "individualShift", + children: Ge + }, t); + } + if (W0.length === 0) + return b.makeSpan(["mord"], [c], t); + var Ve = b.makeVList({ + positionType: "individualShift", + children: W0 + }, t); + return Ve = b.makeSpan(["tag"], [Ve], t), b.makeFragment([c, Ve]); +}, Y1 = { + c: "center ", + l: "left ", + r: "right " +}, S0 = function(e, t) { + for (var a = [], n = new S.MathNode("mtd", [], ["mtr-glue"]), s = new S.MathNode("mtd", [], ["mml-eqn-num"]), o = 0; o < e.body.length; o++) { + for (var h = e.body[o], c = [], p = 0; p < h.length; p++) + c.push(new S.MathNode("mtd", [X(h[p], t)])); + e.tags && e.tags[o] && (c.unshift(n), c.push(n), e.leqno ? c.unshift(s) : c.push(s)), a.push(new S.MathNode("mtr", c)); + } + var g = new S.MathNode("mtable", a), y = e.arraystretch === 0.5 ? 0.1 : 0.16 + e.arraystretch - 1 + (e.addJot ? 0.09 : 0); + g.setAttribute("rowspacing", A(y)); + var w = "", x = ""; + if (e.cols && e.cols.length > 0) { + var z = e.cols, T = "", C = !1, N = 0, O = z.length; + z[0].type === "separator" && (w += "top ", N = 1), z[z.length - 1].type === "separator" && (w += "bottom ", O -= 1); + for (var H = N; H < O; H++) + z[H].type === "align" ? (x += Y1[z[H].align], C && (T += "none "), C = !0) : z[H].type === "separator" && C && (T += z[H].separator === "|" ? "solid " : "dashed ", C = !1); + g.setAttribute("columnalign", x.trim()), /[sd]/.test(T) && g.setAttribute("columnlines", T.trim()); + } + if (e.colSeparationType === "align") { + for (var V = e.cols || [], L = "", U = 1; U < V.length; U++) + L += U % 2 ? "0em " : "1em "; + g.setAttribute("columnspacing", L.trim()); + } else + e.colSeparationType === "alignat" || e.colSeparationType === "gather" ? g.setAttribute("columnspacing", "0em") : e.colSeparationType === "small" ? g.setAttribute("columnspacing", "0.2778em") : e.colSeparationType === "CD" ? g.setAttribute("columnspacing", "0.5em") : g.setAttribute("columnspacing", "1em"); + var G = "", j = e.hLinesBeforeRow; + w += j[0].length > 0 ? "left " : "", w += j[j.length - 1].length > 0 ? "right " : ""; + for (var Y = 1; Y < j.length - 1; Y++) + G += j[Y].length === 0 ? "none " : j[Y][0] ? "dashed " : "solid "; + return /[sd]/.test(G) && g.setAttribute("rowlines", G.trim()), w !== "" && (g = new S.MathNode("menclose", [g]), g.setAttribute("notation", w.trim())), e.arraystretch && e.arraystretch < 1 && (g = new S.MathNode("mstyle", [g]), g.setAttribute("scriptlevel", "1")), g; +}, jr = function(e, t) { + e.envName.indexOf("ed") === -1 && He(e); + var a = [], n = e.envName.indexOf("at") > -1 ? "alignat" : "align", s = e.envName === "split", o = V0(e.parser, { + cols: a, + addJot: !0, + autoTag: s ? void 0 : Mt(e.envName), + emptySingleRow: !0, + colSeparationType: n, + maxNumCols: s ? 2 : void 0, + leqno: e.parser.settings.leqno + }, "display"), h, c = 0, p = { + type: "ordgroup", + mode: e.mode, + body: [] + }; + if (t[0] && t[0].type === "ordgroup") { + for (var g = "", y = 0; y < t[0].body.length; y++) { + var w = F(t[0].body[y], "textord"); + g += w.text; + } + h = Number(g), c = h * 2; + } + var x = !c; + o.body.forEach(function(N) { + for (var O = 1; O < N.length; O += 2) { + var H = F(N[O], "styling"), V = F(H.body[0], "ordgroup"); + V.body.unshift(p); + } + if (x) + c < N.length && (c = N.length); + else { + var L = N.length / 2; + if (h < L) + throw new M("Too many math in a row: " + ("expected " + h + ", but got " + L), N[0]); + } + }); + for (var z = 0; z < c; ++z) { + var T = "r", C = 0; + z % 2 === 1 ? T = "l" : z > 0 && x && (C = 1), a[z] = { + type: "align", + align: T, + pregap: C, + postgap: 0 + }; + } + return o.colSeparationType = x ? "align" : "alignat", o; +}; +w0({ + type: "array", + names: ["array", "darray"], + props: { + numArgs: 1 + }, + handler(r, e) { + var t = Re(e[0]), a = t ? [e[0]] : F(e[0], "ordgroup").body, n = a.map(function(o) { + var h = yt(o), c = h.text; + if ("lcr".indexOf(c) !== -1) + return { + type: "align", + align: c + }; + if (c === "|") + return { + type: "separator", + separator: "|" + }; + if (c === ":") + return { + type: "separator", + separator: ":" + }; + throw new M("Unknown column alignment: " + c, o); + }), s = { + cols: n, + hskipBeforeAndAfter: !0, + // \@preamble in lttab.dtx + maxNumCols: n.length + }; + return V0(r.parser, s, zt(r.envName)); + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"], + props: { + numArgs: 0 + }, + handler(r) { + var e = { + matrix: null, + pmatrix: ["(", ")"], + bmatrix: ["[", "]"], + Bmatrix: ["\\{", "\\}"], + vmatrix: ["|", "|"], + Vmatrix: ["\\Vert", "\\Vert"] + }[r.envName.replace("*", "")], t = "c", a = { + hskipBeforeAndAfter: !1, + cols: [{ + type: "align", + align: t + }] + }; + if (r.envName.charAt(r.envName.length - 1) === "*") { + var n = r.parser; + if (n.consumeSpaces(), n.fetch().text === "[") { + if (n.consume(), n.consumeSpaces(), t = n.fetch().text, "lcr".indexOf(t) === -1) + throw new M("Expected l or c or r", n.nextToken); + n.consume(), n.consumeSpaces(), n.expect("]"), n.consume(), a.cols = [{ + type: "align", + align: t + }]; + } + } + var s = V0(r.parser, a, zt(r.envName)), o = Math.max(0, ...s.body.map((h) => h.length)); + return s.cols = new Array(o).fill({ + type: "align", + align: t + }), e ? { + type: "leftright", + mode: r.mode, + body: [s], + left: e[0], + right: e[1], + rightColor: void 0 + // \right uninfluenced by \color in array + } : s; + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["smallmatrix"], + props: { + numArgs: 0 + }, + handler(r) { + var e = { + arraystretch: 0.5 + }, t = V0(r.parser, e, "script"); + return t.colSeparationType = "small", t; + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["subarray"], + props: { + numArgs: 1 + }, + handler(r, e) { + var t = Re(e[0]), a = t ? [e[0]] : F(e[0], "ordgroup").body, n = a.map(function(o) { + var h = yt(o), c = h.text; + if ("lc".indexOf(c) !== -1) + return { + type: "align", + align: c + }; + throw new M("Unknown column alignment: " + c, o); + }); + if (n.length > 1) + throw new M("{subarray} can contain only one column"); + var s = { + cols: n, + hskipBeforeAndAfter: !1, + arraystretch: 0.5 + }; + if (s = V0(r.parser, s, "script"), s.body.length > 0 && s.body[0].length > 1) + throw new M("{subarray} can contain only one column"); + return s; + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["cases", "dcases", "rcases", "drcases"], + props: { + numArgs: 0 + }, + handler(r) { + var e = { + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1 + /* 1em quad */ + }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }, t = V0(r.parser, e, zt(r.envName)); + return { + type: "leftright", + mode: r.mode, + body: [t], + left: r.envName.indexOf("r") > -1 ? "." : "\\{", + right: r.envName.indexOf("r") > -1 ? "\\}" : ".", + rightColor: void 0 + }; + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["align", "align*", "aligned", "split"], + props: { + numArgs: 0 + }, + handler: jr, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["gathered", "gather", "gather*"], + props: { + numArgs: 0 + }, + handler(r) { + q.contains(["gather", "gather*"], r.envName) && He(r); + var e = { + cols: [{ + type: "align", + align: "c" + }], + addJot: !0, + colSeparationType: "gather", + autoTag: Mt(r.envName), + emptySingleRow: !0, + leqno: r.parser.settings.leqno + }; + return V0(r.parser, e, "display"); + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["alignat", "alignat*", "alignedat"], + props: { + numArgs: 1 + }, + handler: jr, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["equation", "equation*"], + props: { + numArgs: 0 + }, + handler(r) { + He(r); + var e = { + autoTag: Mt(r.envName), + emptySingleRow: !0, + singleRow: !0, + maxNumCols: 1, + leqno: r.parser.settings.leqno + }; + return V0(r.parser, e, "display"); + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +w0({ + type: "array", + names: ["CD"], + props: { + numArgs: 0 + }, + handler(r) { + return He(r), C1(r.parser); + }, + htmlBuilder: k0, + mathmlBuilder: S0 +}); +m("\\nonumber", "\\gdef\\@eqnsw{0}"); +m("\\notag", "\\nonumber"); +B({ + type: "text", + // Doesn't matter what this is. + names: ["\\hline", "\\hdashline"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInMath: !0 + }, + handler(r, e) { + throw new M(r.funcName + " valid only within array environment"); + } +}); +var Qt = $r; +B({ + type: "environment", + names: ["\\begin", "\\end"], + props: { + numArgs: 1, + argTypes: ["text"] + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r, n = e[0]; + if (n.type !== "ordgroup") + throw new M("Invalid environment name", n); + for (var s = "", o = 0; o < n.body.length; ++o) + s += F(n.body[o], "textord").text; + if (a === "\\begin") { + if (!Qt.hasOwnProperty(s)) + throw new M("No such environment: " + s, n); + var h = Qt[s], { + args: c, + optArgs: p + } = t.parseArguments("\\begin{" + s + "}", h), g = { + mode: t.mode, + envName: s, + parser: t + }, y = h.handler(g, c, p); + t.expect("\\end", !1); + var w = t.nextToken, x = F(t.parseFunction(), "environment"); + if (x.name !== s) + throw new M("Mismatch: \\begin{" + s + "} matched by \\end{" + x.name + "}", w); + return y; + } + return { + type: "environment", + mode: t.mode, + name: s, + nameGroup: n + }; + } +}); +var Zr = (r, e) => { + var t = r.font, a = e.withFont(t); + return P(r.body, a); +}, Kr = (r, e) => { + var t = r.font, a = e.withFont(t); + return X(r.body, a); +}, _t = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak", + "\\bm": "\\boldsymbol" +}; +B({ + type: "font", + names: [ + // styles, except \boldsymbol defined below + "\\mathrm", + "\\mathit", + "\\mathbf", + "\\mathnormal", + // families + "\\mathbb", + "\\mathcal", + "\\mathfrak", + "\\mathscr", + "\\mathsf", + "\\mathtt", + // aliases, except \bm defined below + "\\Bbb", + "\\bold", + "\\frak" + ], + props: { + numArgs: 1, + allowedInArgument: !0 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = Ne(e[0]), s = a; + return s in _t && (s = _t[s]), { + type: "font", + mode: t.mode, + font: s.slice(1), + body: n + }; + }, + htmlBuilder: Zr, + mathmlBuilder: Kr +}); +B({ + type: "mclass", + names: ["\\boldsymbol", "\\bm"], + props: { + numArgs: 1 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = e[0], n = q.isCharacterBox(a); + return { + type: "mclass", + mode: t.mode, + mclass: Ie(a), + body: [{ + type: "font", + mode: t.mode, + font: "boldsymbol", + body: a + }], + isCharacterBox: n + }; + } +}); +B({ + type: "font", + names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a, + breakOnTokenText: n + } = r, { + mode: s + } = t, o = t.parseExpression(!0, n), h = "math" + a.slice(1); + return { + type: "font", + mode: s, + font: h, + body: { + type: "ordgroup", + mode: t.mode, + body: o + } + }; + }, + htmlBuilder: Zr, + mathmlBuilder: Kr +}); +var Jr = (r, e) => { + var t = e; + return r === "display" ? t = t.id >= R.SCRIPT.id ? t.text() : R.DISPLAY : r === "text" && t.size === R.DISPLAY.size ? t = R.TEXT : r === "script" ? t = R.SCRIPT : r === "scriptscript" && (t = R.SCRIPTSCRIPT), t; +}, At = (r, e) => { + var t = Jr(r.size, e.style), a = t.fracNum(), n = t.fracDen(), s; + s = e.havingStyle(a); + var o = P(r.numer, s, e); + if (r.continued) { + var h = 8.5 / e.fontMetrics().ptPerEm, c = 3.5 / e.fontMetrics().ptPerEm; + o.height = o.height < h ? h : o.height, o.depth = o.depth < c ? c : o.depth; + } + s = e.havingStyle(n); + var p = P(r.denom, s, e), g, y, w; + r.hasBarLine ? (r.barSize ? (y = K(r.barSize, e), g = b.makeLineSpan("frac-line", e, y)) : g = b.makeLineSpan("frac-line", e), y = g.height, w = g.height) : (g = null, y = 0, w = e.fontMetrics().defaultRuleThickness); + var x, z, T; + t.size === R.DISPLAY.size || r.size === "display" ? (x = e.fontMetrics().num1, y > 0 ? z = 3 * w : z = 7 * w, T = e.fontMetrics().denom1) : (y > 0 ? (x = e.fontMetrics().num2, z = w) : (x = e.fontMetrics().num3, z = 3 * w), T = e.fontMetrics().denom2); + var C; + if (g) { + var O = e.fontMetrics().axisHeight; + x - o.depth - (O + 0.5 * y) < z && (x += z - (x - o.depth - (O + 0.5 * y))), O - 0.5 * y - (p.height - T) < z && (T += z - (O - 0.5 * y - (p.height - T))); + var H = -(O - 0.5 * y); + C = b.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: p, + shift: T + }, { + type: "elem", + elem: g, + shift: H + }, { + type: "elem", + elem: o, + shift: -x + }] + }, e); + } else { + var N = x - o.depth - (p.height - T); + N < z && (x += 0.5 * (z - N), T += 0.5 * (z - N)), C = b.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: p, + shift: T + }, { + type: "elem", + elem: o, + shift: -x + }] + }, e); + } + s = e.havingStyle(t), C.height *= s.sizeMultiplier / e.sizeMultiplier, C.depth *= s.sizeMultiplier / e.sizeMultiplier; + var V; + t.size === R.DISPLAY.size ? V = e.fontMetrics().delim1 : t.size === R.SCRIPTSCRIPT.size ? V = e.havingStyle(R.SCRIPT).fontMetrics().delim2 : V = e.fontMetrics().delim2; + var L, U; + return r.leftDelim == null ? L = oe(e, ["mopen"]) : L = B0.customSizedDelim(r.leftDelim, V, !0, e.havingStyle(t), r.mode, ["mopen"]), r.continued ? U = b.makeSpan([]) : r.rightDelim == null ? U = oe(e, ["mclose"]) : U = B0.customSizedDelim(r.rightDelim, V, !0, e.havingStyle(t), r.mode, ["mclose"]), b.makeSpan(["mord"].concat(s.sizingClasses(e)), [L, b.makeSpan(["mfrac"], [C]), U], e); +}, Tt = (r, e) => { + var t = new S.MathNode("mfrac", [X(r.numer, e), X(r.denom, e)]); + if (!r.hasBarLine) + t.setAttribute("linethickness", "0px"); + else if (r.barSize) { + var a = K(r.barSize, e); + t.setAttribute("linethickness", A(a)); + } + var n = Jr(r.size, e.style); + if (n.size !== e.style.size) { + t = new S.MathNode("mstyle", [t]); + var s = n.size === R.DISPLAY.size ? "true" : "false"; + t.setAttribute("displaystyle", s), t.setAttribute("scriptlevel", "0"); + } + if (r.leftDelim != null || r.rightDelim != null) { + var o = []; + if (r.leftDelim != null) { + var h = new S.MathNode("mo", [new S.TextNode(r.leftDelim.replace("\\", ""))]); + h.setAttribute("fence", "true"), o.push(h); + } + if (o.push(t), r.rightDelim != null) { + var c = new S.MathNode("mo", [new S.TextNode(r.rightDelim.replace("\\", ""))]); + c.setAttribute("fence", "true"), o.push(c); + } + return gt(o); + } + return t; +}; +B({ + type: "genfrac", + names: [ + "\\dfrac", + "\\frac", + "\\tfrac", + "\\dbinom", + "\\binom", + "\\tbinom", + "\\\\atopfrac", + // can’t be entered directly + "\\\\bracefrac", + "\\\\brackfrac" + // ditto + ], + props: { + numArgs: 2, + allowedInArgument: !0 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = e[0], s = e[1], o, h = null, c = null, p = "auto"; + switch (a) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + o = !0; + break; + case "\\\\atopfrac": + o = !1; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + o = !1, h = "(", c = ")"; + break; + case "\\\\bracefrac": + o = !1, h = "\\{", c = "\\}"; + break; + case "\\\\brackfrac": + o = !1, h = "[", c = "]"; + break; + default: + throw new Error("Unrecognized genfrac command"); + } + switch (a) { + case "\\dfrac": + case "\\dbinom": + p = "display"; + break; + case "\\tfrac": + case "\\tbinom": + p = "text"; + break; + } + return { + type: "genfrac", + mode: t.mode, + continued: !1, + numer: n, + denom: s, + hasBarLine: o, + leftDelim: h, + rightDelim: c, + size: p, + barSize: null + }; + }, + htmlBuilder: At, + mathmlBuilder: Tt +}); +B({ + type: "genfrac", + names: ["\\cfrac"], + props: { + numArgs: 2 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = e[0], s = e[1]; + return { + type: "genfrac", + mode: t.mode, + continued: !0, + numer: n, + denom: s, + hasBarLine: !0, + leftDelim: null, + rightDelim: null, + size: "display", + barSize: null + }; + } +}); +B({ + type: "infix", + names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"], + props: { + numArgs: 0, + infix: !0 + }, + handler(r) { + var { + parser: e, + funcName: t, + token: a + } = r, n; + switch (t) { + case "\\over": + n = "\\frac"; + break; + case "\\choose": + n = "\\binom"; + break; + case "\\atop": + n = "\\\\atopfrac"; + break; + case "\\brace": + n = "\\\\bracefrac"; + break; + case "\\brack": + n = "\\\\brackfrac"; + break; + default: + throw new Error("Unrecognized infix genfrac command"); + } + return { + type: "infix", + mode: e.mode, + replaceWith: n, + token: a + }; + } +}); +var er = ["display", "text", "script", "scriptscript"], tr = function(e) { + var t = null; + return e.length > 0 && (t = e, t = t === "." ? null : t), t; +}; +B({ + type: "genfrac", + names: ["\\genfrac"], + props: { + numArgs: 6, + allowedInArgument: !0, + argTypes: ["math", "math", "size", "text", "math", "math"] + }, + handler(r, e) { + var { + parser: t + } = r, a = e[4], n = e[5], s = Ne(e[0]), o = s.type === "atom" && s.family === "open" ? tr(s.text) : null, h = Ne(e[1]), c = h.type === "atom" && h.family === "close" ? tr(h.text) : null, p = F(e[2], "size"), g, y = null; + p.isBlank ? g = !0 : (y = p.value, g = y.number > 0); + var w = "auto", x = e[3]; + if (x.type === "ordgroup") { + if (x.body.length > 0) { + var z = F(x.body[0], "textord"); + w = er[Number(z.text)]; + } + } else + x = F(x, "textord"), w = er[Number(x.text)]; + return { + type: "genfrac", + mode: t.mode, + numer: a, + denom: n, + continued: !1, + hasBarLine: g, + barSize: y, + leftDelim: o, + rightDelim: c, + size: w + }; + }, + htmlBuilder: At, + mathmlBuilder: Tt +}); +B({ + type: "infix", + names: ["\\above"], + props: { + numArgs: 1, + argTypes: ["size"], + infix: !0 + }, + handler(r, e) { + var { + parser: t, + funcName: a, + token: n + } = r; + return { + type: "infix", + mode: t.mode, + replaceWith: "\\\\abovefrac", + size: F(e[0], "size").value, + token: n + }; + } +}); +B({ + type: "genfrac", + names: ["\\\\abovefrac"], + props: { + numArgs: 3, + argTypes: ["math", "size", "math"] + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = e[0], s = wa(F(e[1], "infix").size), o = e[2], h = s.number > 0; + return { + type: "genfrac", + mode: t.mode, + numer: n, + denom: o, + continued: !1, + hasBarLine: h, + barSize: s, + leftDelim: null, + rightDelim: null, + size: "auto" + }; + }, + htmlBuilder: At, + mathmlBuilder: Tt +}); +var Qr = (r, e) => { + var t = e.style, a, n; + r.type === "supsub" ? (a = r.sup ? P(r.sup, e.havingStyle(t.sup()), e) : P(r.sub, e.havingStyle(t.sub()), e), n = F(r.base, "horizBrace")) : n = F(r, "horizBrace"); + var s = P(n.base, e.havingBaseStyle(R.DISPLAY)), o = N0.svgSpan(n, e), h; + if (n.isOver ? (h = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: s + }, { + type: "kern", + size: 0.1 + }, { + type: "elem", + elem: o + }] + }, e), h.children[0].children[0].children[1].classes.push("svg-align")) : (h = b.makeVList({ + positionType: "bottom", + positionData: s.depth + 0.1 + o.height, + children: [{ + type: "elem", + elem: o + }, { + type: "kern", + size: 0.1 + }, { + type: "elem", + elem: s + }] + }, e), h.children[0].children[0].children[0].classes.push("svg-align")), a) { + var c = b.makeSpan(["mord", n.isOver ? "mover" : "munder"], [h], e); + n.isOver ? h = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: c + }, { + type: "kern", + size: 0.2 + }, { + type: "elem", + elem: a + }] + }, e) : h = b.makeVList({ + positionType: "bottom", + positionData: c.depth + 0.2 + a.height + a.depth, + children: [{ + type: "elem", + elem: a + }, { + type: "kern", + size: 0.2 + }, { + type: "elem", + elem: c + }] + }, e); + } + return b.makeSpan(["mord", n.isOver ? "mover" : "munder"], [h], e); +}, X1 = (r, e) => { + var t = N0.mathMLnode(r.label); + return new S.MathNode(r.isOver ? "mover" : "munder", [X(r.base, e), t]); +}; +B({ + type: "horizBrace", + names: ["\\overbrace", "\\underbrace"], + props: { + numArgs: 1 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r; + return { + type: "horizBrace", + mode: t.mode, + label: a, + isOver: /^\\over/.test(a), + base: e[0] + }; + }, + htmlBuilder: Qr, + mathmlBuilder: X1 +}); +B({ + type: "href", + names: ["\\href"], + props: { + numArgs: 2, + argTypes: ["url", "original"], + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = e[1], n = F(e[0], "url").url; + return t.settings.isTrusted({ + command: "\\href", + url: n + }) ? { + type: "href", + mode: t.mode, + href: n, + body: Q(a) + } : t.formatUnsupportedCmd("\\href"); + }, + htmlBuilder: (r, e) => { + var t = t0(r.body, e, !1); + return b.makeAnchor(r.href, [], t, e); + }, + mathmlBuilder: (r, e) => { + var t = G0(r.body, e); + return t instanceof c0 || (t = new c0("mrow", [t])), t.setAttribute("href", r.href), t; + } +}); +B({ + type: "href", + names: ["\\url"], + props: { + numArgs: 1, + argTypes: ["url"], + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = F(e[0], "url").url; + if (!t.settings.isTrusted({ + command: "\\url", + url: a + })) + return t.formatUnsupportedCmd("\\url"); + for (var n = [], s = 0; s < a.length; s++) { + var o = a[s]; + o === "~" && (o = "\\textasciitilde"), n.push({ + type: "textord", + mode: "text", + text: o + }); + } + var h = { + type: "text", + mode: t.mode, + font: "\\texttt", + body: n + }; + return { + type: "href", + mode: t.mode, + href: a, + body: Q(h) + }; + } +}); +B({ + type: "hbox", + names: ["\\hbox"], + props: { + numArgs: 1, + argTypes: ["text"], + allowedInText: !0, + primitive: !0 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "hbox", + mode: t.mode, + body: Q(e[0]) + }; + }, + htmlBuilder(r, e) { + var t = t0(r.body, e, !1); + return b.makeFragment(t); + }, + mathmlBuilder(r, e) { + return new S.MathNode("mrow", o0(r.body, e)); + } +}); +B({ + type: "html", + names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"], + props: { + numArgs: 2, + argTypes: ["raw", "original"], + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a, + token: n + } = r, s = F(e[0], "raw").string, o = e[1]; + t.settings.strict && t.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode"); + var h, c = {}; + switch (a) { + case "\\htmlClass": + c.class = s, h = { + command: "\\htmlClass", + class: s + }; + break; + case "\\htmlId": + c.id = s, h = { + command: "\\htmlId", + id: s + }; + break; + case "\\htmlStyle": + c.style = s, h = { + command: "\\htmlStyle", + style: s + }; + break; + case "\\htmlData": { + for (var p = s.split(","), g = 0; g < p.length; g++) { + var y = p[g].split("="); + if (y.length !== 2) + throw new M("Error parsing key-value for \\htmlData"); + c["data-" + y[0].trim()] = y[1].trim(); + } + h = { + command: "\\htmlData", + attributes: c + }; + break; + } + default: + throw new Error("Unrecognized html command"); + } + return t.settings.isTrusted(h) ? { + type: "html", + mode: t.mode, + attributes: c, + body: Q(o) + } : t.formatUnsupportedCmd(a); + }, + htmlBuilder: (r, e) => { + var t = t0(r.body, e, !1), a = ["enclosing"]; + r.attributes.class && a.push(...r.attributes.class.trim().split(/\s+/)); + var n = b.makeSpan(a, t, e); + for (var s in r.attributes) + s !== "class" && r.attributes.hasOwnProperty(s) && n.setAttribute(s, r.attributes[s]); + return n; + }, + mathmlBuilder: (r, e) => G0(r.body, e) +}); +B({ + type: "htmlmathml", + names: ["\\html@mathml"], + props: { + numArgs: 2, + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r; + return { + type: "htmlmathml", + mode: t.mode, + html: Q(e[0]), + mathml: Q(e[1]) + }; + }, + htmlBuilder: (r, e) => { + var t = t0(r.html, e, !1); + return b.makeFragment(t); + }, + mathmlBuilder: (r, e) => G0(r.mathml, e) +}); +var _e = function(e) { + if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e)) + return { + number: +e, + unit: "bp" + }; + var t = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e); + if (!t) + throw new M("Invalid size: '" + e + "' in \\includegraphics"); + var a = { + number: +(t[1] + t[2]), + // sign + magnitude, cast to number + unit: t[3] + }; + if (!gr(a)) + throw new M("Invalid unit: '" + a.unit + "' in \\includegraphics."); + return a; +}; +B({ + type: "includegraphics", + names: ["\\includegraphics"], + props: { + numArgs: 1, + numOptionalArgs: 1, + argTypes: ["raw", "url"], + allowedInText: !1 + }, + handler: (r, e, t) => { + var { + parser: a + } = r, n = { + number: 0, + unit: "em" + }, s = { + number: 0.9, + unit: "em" + }, o = { + number: 0, + unit: "em" + }, h = ""; + if (t[0]) + for (var c = F(t[0], "raw").string, p = c.split(","), g = 0; g < p.length; g++) { + var y = p[g].split("="); + if (y.length === 2) { + var w = y[1].trim(); + switch (y[0].trim()) { + case "alt": + h = w; + break; + case "width": + n = _e(w); + break; + case "height": + s = _e(w); + break; + case "totalheight": + o = _e(w); + break; + default: + throw new M("Invalid key: '" + y[0] + "' in \\includegraphics."); + } + } + } + var x = F(e[0], "url").url; + return h === "" && (h = x, h = h.replace(/^.*[\\/]/, ""), h = h.substring(0, h.lastIndexOf("."))), a.settings.isTrusted({ + command: "\\includegraphics", + url: x + }) ? { + type: "includegraphics", + mode: a.mode, + alt: h, + width: n, + height: s, + totalheight: o, + src: x + } : a.formatUnsupportedCmd("\\includegraphics"); + }, + htmlBuilder: (r, e) => { + var t = K(r.height, e), a = 0; + r.totalheight.number > 0 && (a = K(r.totalheight, e) - t); + var n = 0; + r.width.number > 0 && (n = K(r.width, e)); + var s = { + height: A(t + a) + }; + n > 0 && (s.width = A(n)), a > 0 && (s.verticalAlign = A(-a)); + var o = new Xa(r.src, r.alt, s); + return o.height = t, o.depth = a, o; + }, + mathmlBuilder: (r, e) => { + var t = new S.MathNode("mglyph", []); + t.setAttribute("alt", r.alt); + var a = K(r.height, e), n = 0; + if (r.totalheight.number > 0 && (n = K(r.totalheight, e) - a, t.setAttribute("valign", A(-n))), t.setAttribute("height", A(a + n)), r.width.number > 0) { + var s = K(r.width, e); + t.setAttribute("width", A(s)); + } + return t.setAttribute("src", r.src), t; + } +}); +B({ + type: "kern", + names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"], + props: { + numArgs: 1, + argTypes: ["size"], + primitive: !0, + allowedInText: !0 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r, n = F(e[0], "size"); + if (t.settings.strict) { + var s = a[1] === "m", o = n.value.unit === "mu"; + s ? (o || t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + a + " supports only mu units, " + ("not " + n.value.unit + " units")), t.mode !== "math" && t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + a + " works only in math mode")) : o && t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + a + " doesn't support mu units"); + } + return { + type: "kern", + mode: t.mode, + dimension: n.value + }; + }, + htmlBuilder(r, e) { + return b.makeGlue(r.dimension, e); + }, + mathmlBuilder(r, e) { + var t = K(r.dimension, e); + return new S.SpaceNode(t); + } +}); +B({ + type: "lap", + names: ["\\mathllap", "\\mathrlap", "\\mathclap"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = e[0]; + return { + type: "lap", + mode: t.mode, + alignment: a.slice(5), + body: n + }; + }, + htmlBuilder: (r, e) => { + var t; + r.alignment === "clap" ? (t = b.makeSpan([], [P(r.body, e)]), t = b.makeSpan(["inner"], [t], e)) : t = b.makeSpan(["inner"], [P(r.body, e)]); + var a = b.makeSpan(["fix"], []), n = b.makeSpan([r.alignment], [t, a], e), s = b.makeSpan(["strut"]); + return s.style.height = A(n.height + n.depth), n.depth && (s.style.verticalAlign = A(-n.depth)), n.children.unshift(s), n = b.makeSpan(["thinbox"], [n], e), b.makeSpan(["mord", "vbox"], [n], e); + }, + mathmlBuilder: (r, e) => { + var t = new S.MathNode("mpadded", [X(r.body, e)]); + if (r.alignment !== "rlap") { + var a = r.alignment === "llap" ? "-1" : "-0.5"; + t.setAttribute("lspace", a + "width"); + } + return t.setAttribute("width", "0px"), t; + } +}); +B({ + type: "styling", + names: ["\\(", "$"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInMath: !1 + }, + handler(r, e) { + var { + funcName: t, + parser: a + } = r, n = a.mode; + a.switchMode("math"); + var s = t === "\\(" ? "\\)" : "$", o = a.parseExpression(!1, s); + return a.expect(s), a.switchMode(n), { + type: "styling", + mode: a.mode, + style: "text", + body: o + }; + } +}); +B({ + type: "text", + // Doesn't matter what this is. + names: ["\\)", "\\]"], + props: { + numArgs: 0, + allowedInText: !0, + allowedInMath: !1 + }, + handler(r, e) { + throw new M("Mismatched " + r.funcName); + } +}); +var rr = (r, e) => { + switch (e.style.size) { + case R.DISPLAY.size: + return r.display; + case R.TEXT.size: + return r.text; + case R.SCRIPT.size: + return r.script; + case R.SCRIPTSCRIPT.size: + return r.scriptscript; + default: + return r.text; + } +}; +B({ + type: "mathchoice", + names: ["\\mathchoice"], + props: { + numArgs: 4, + primitive: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r; + return { + type: "mathchoice", + mode: t.mode, + display: Q(e[0]), + text: Q(e[1]), + script: Q(e[2]), + scriptscript: Q(e[3]) + }; + }, + htmlBuilder: (r, e) => { + var t = rr(r, e), a = t0(t, e, !1); + return b.makeFragment(a); + }, + mathmlBuilder: (r, e) => { + var t = rr(r, e); + return G0(t, e); + } +}); +var _r = (r, e, t, a, n, s, o) => { + r = b.makeSpan([], [r]); + var h = t && q.isCharacterBox(t), c, p; + if (e) { + var g = P(e, a.havingStyle(n.sup()), a); + p = { + elem: g, + kern: Math.max(a.fontMetrics().bigOpSpacing1, a.fontMetrics().bigOpSpacing3 - g.depth) + }; + } + if (t) { + var y = P(t, a.havingStyle(n.sub()), a); + c = { + elem: y, + kern: Math.max(a.fontMetrics().bigOpSpacing2, a.fontMetrics().bigOpSpacing4 - y.height) + }; + } + var w; + if (p && c) { + var x = a.fontMetrics().bigOpSpacing5 + c.elem.height + c.elem.depth + c.kern + r.depth + o; + w = b.makeVList({ + positionType: "bottom", + positionData: x, + children: [{ + type: "kern", + size: a.fontMetrics().bigOpSpacing5 + }, { + type: "elem", + elem: c.elem, + marginLeft: A(-s) + }, { + type: "kern", + size: c.kern + }, { + type: "elem", + elem: r + }, { + type: "kern", + size: p.kern + }, { + type: "elem", + elem: p.elem, + marginLeft: A(s) + }, { + type: "kern", + size: a.fontMetrics().bigOpSpacing5 + }] + }, a); + } else if (c) { + var z = r.height - o; + w = b.makeVList({ + positionType: "top", + positionData: z, + children: [{ + type: "kern", + size: a.fontMetrics().bigOpSpacing5 + }, { + type: "elem", + elem: c.elem, + marginLeft: A(-s) + }, { + type: "kern", + size: c.kern + }, { + type: "elem", + elem: r + }] + }, a); + } else if (p) { + var T = r.depth + o; + w = b.makeVList({ + positionType: "bottom", + positionData: T, + children: [{ + type: "elem", + elem: r + }, { + type: "kern", + size: p.kern + }, { + type: "elem", + elem: p.elem, + marginLeft: A(s) + }, { + type: "kern", + size: a.fontMetrics().bigOpSpacing5 + }] + }, a); + } else + return r; + var C = [w]; + if (c && s !== 0 && !h) { + var N = b.makeSpan(["mspace"], [], a); + N.style.marginRight = A(s), C.unshift(N); + } + return b.makeSpan(["mop", "op-limits"], C, a); +}, ea = ["\\smallint"], re = (r, e) => { + var t, a, n = !1, s; + r.type === "supsub" ? (t = r.sup, a = r.sub, s = F(r.base, "op"), n = !0) : s = F(r, "op"); + var o = e.style, h = !1; + o.size === R.DISPLAY.size && s.symbol && !q.contains(ea, s.name) && (h = !0); + var c; + if (s.symbol) { + var p = h ? "Size2-Regular" : "Size1-Regular", g = ""; + if ((s.name === "\\oiint" || s.name === "\\oiiint") && (g = s.name.slice(1), s.name = g === "oiint" ? "\\iint" : "\\iiint"), c = b.makeSymbol(s.name, p, "math", e, ["mop", "op-symbol", h ? "large-op" : "small-op"]), g.length > 0) { + var y = c.italic, w = b.staticSvg(g + "Size" + (h ? "2" : "1"), e); + c = b.makeVList({ + positionType: "individualShift", + children: [{ + type: "elem", + elem: c, + shift: 0 + }, { + type: "elem", + elem: w, + shift: h ? 0.08 : 0 + }] + }, e), s.name = "\\" + g, c.classes.unshift("mop"), c.italic = y; + } + } else if (s.body) { + var x = t0(s.body, e, !0); + x.length === 1 && x[0] instanceof p0 ? (c = x[0], c.classes[0] = "mop") : c = b.makeSpan(["mop"], x, e); + } else { + for (var z = [], T = 1; T < s.name.length; T++) + z.push(b.mathsym(s.name[T], s.mode, e)); + c = b.makeSpan(["mop"], z, e); + } + var C = 0, N = 0; + return (c instanceof p0 || s.name === "\\oiint" || s.name === "\\oiiint") && !s.suppressBaseShift && (C = (c.height - c.depth) / 2 - e.fontMetrics().axisHeight, N = c.italic), n ? _r(c, t, a, e, o, N, C) : (C && (c.style.position = "relative", c.style.top = A(C)), c); +}, me = (r, e) => { + var t; + if (r.symbol) + t = new c0("mo", [v0(r.name, r.mode)]), q.contains(ea, r.name) && t.setAttribute("largeop", "false"); + else if (r.body) + t = new c0("mo", o0(r.body, e)); + else { + t = new c0("mi", [new ie(r.name.slice(1))]); + var a = new c0("mo", [v0("⁡", "text")]); + r.parentIsSupSub ? t = new c0("mrow", [t, a]) : t = Br([t, a]); + } + return t; +}, $1 = { + "∏": "\\prod", + "∐": "\\coprod", + "∑": "\\sum", + "⋀": "\\bigwedge", + "⋁": "\\bigvee", + "⋂": "\\bigcap", + "⋃": "\\bigcup", + "⨀": "\\bigodot", + "⨁": "\\bigoplus", + "⨂": "\\bigotimes", + "⨄": "\\biguplus", + "⨆": "\\bigsqcup" +}; +B({ + type: "op", + names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "∏", "∐", "∑", "⋀", "⋁", "⋂", "⋃", "⨀", "⨁", "⨂", "⨄", "⨆"], + props: { + numArgs: 0 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = a; + return n.length === 1 && (n = $1[n]), { + type: "op", + mode: t.mode, + limits: !0, + parentIsSupSub: !1, + symbol: !0, + name: n + }; + }, + htmlBuilder: re, + mathmlBuilder: me +}); +B({ + type: "op", + names: ["\\mathop"], + props: { + numArgs: 1, + primitive: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = e[0]; + return { + type: "op", + mode: t.mode, + limits: !1, + parentIsSupSub: !1, + symbol: !1, + body: Q(a) + }; + }, + htmlBuilder: re, + mathmlBuilder: me +}); +var W1 = { + "∫": "\\int", + "∬": "\\iint", + "∭": "\\iiint", + "∮": "\\oint", + "∯": "\\oiint", + "∰": "\\oiiint" +}; +B({ + type: "op", + names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], + props: { + numArgs: 0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r; + return { + type: "op", + mode: e.mode, + limits: !1, + parentIsSupSub: !1, + symbol: !1, + name: t + }; + }, + htmlBuilder: re, + mathmlBuilder: me +}); +B({ + type: "op", + names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"], + props: { + numArgs: 0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r; + return { + type: "op", + mode: e.mode, + limits: !0, + parentIsSupSub: !1, + symbol: !1, + name: t + }; + }, + htmlBuilder: re, + mathmlBuilder: me +}); +B({ + type: "op", + names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "∫", "∬", "∭", "∮", "∯", "∰"], + props: { + numArgs: 0 + }, + handler(r) { + var { + parser: e, + funcName: t + } = r, a = t; + return a.length === 1 && (a = W1[a]), { + type: "op", + mode: e.mode, + limits: !1, + parentIsSupSub: !1, + symbol: !0, + name: a + }; + }, + htmlBuilder: re, + mathmlBuilder: me +}); +var ta = (r, e) => { + var t, a, n = !1, s; + r.type === "supsub" ? (t = r.sup, a = r.sub, s = F(r.base, "operatorname"), n = !0) : s = F(r, "operatorname"); + var o; + if (s.body.length > 0) { + for (var h = s.body.map((y) => { + var w = y.text; + return typeof w == "string" ? { + type: "textord", + mode: y.mode, + text: w + } : y; + }), c = t0(h, e.withFont("mathrm"), !0), p = 0; p < c.length; p++) { + var g = c[p]; + g instanceof p0 && (g.text = g.text.replace(/\u2212/, "-").replace(/\u2217/, "*")); + } + o = b.makeSpan(["mop"], c, e); + } else + o = b.makeSpan(["mop"], [], e); + return n ? _r(o, t, a, e, e.style, 0, 0) : o; +}, j1 = (r, e) => { + for (var t = o0(r.body, e.withFont("mathrm")), a = !0, n = 0; n < t.length; n++) { + var s = t[n]; + if (!(s instanceof S.SpaceNode)) + if (s instanceof S.MathNode) + switch (s.type) { + case "mi": + case "mn": + case "ms": + case "mspace": + case "mtext": + break; + case "mo": { + var o = s.children[0]; + s.children.length === 1 && o instanceof S.TextNode ? o.text = o.text.replace(/\u2212/, "-").replace(/\u2217/, "*") : a = !1; + break; + } + default: + a = !1; + } + else + a = !1; + } + if (a) { + var h = t.map((g) => g.toText()).join(""); + t = [new S.TextNode(h)]; + } + var c = new S.MathNode("mi", t); + c.setAttribute("mathvariant", "normal"); + var p = new S.MathNode("mo", [v0("⁡", "text")]); + return r.parentIsSupSub ? new S.MathNode("mrow", [c, p]) : S.newDocumentFragment([c, p]); +}; +B({ + type: "operatorname", + names: ["\\operatorname@", "\\operatornamewithlimits"], + props: { + numArgs: 1 + }, + handler: (r, e) => { + var { + parser: t, + funcName: a + } = r, n = e[0]; + return { + type: "operatorname", + mode: t.mode, + body: Q(n), + alwaysHandleSupSub: a === "\\operatornamewithlimits", + limits: !1, + parentIsSupSub: !1 + }; + }, + htmlBuilder: ta, + mathmlBuilder: j1 +}); +m("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@"); +$0({ + type: "ordgroup", + htmlBuilder(r, e) { + return r.semisimple ? b.makeFragment(t0(r.body, e, !1)) : b.makeSpan(["mord"], t0(r.body, e, !0), e); + }, + mathmlBuilder(r, e) { + return G0(r.body, e, !0); + } +}); +B({ + type: "overline", + names: ["\\overline"], + props: { + numArgs: 1 + }, + handler(r, e) { + var { + parser: t + } = r, a = e[0]; + return { + type: "overline", + mode: t.mode, + body: a + }; + }, + htmlBuilder(r, e) { + var t = P(r.body, e.havingCrampedStyle()), a = b.makeLineSpan("overline-line", e), n = e.fontMetrics().defaultRuleThickness, s = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t + }, { + type: "kern", + size: 3 * n + }, { + type: "elem", + elem: a + }, { + type: "kern", + size: n + }] + }, e); + return b.makeSpan(["mord", "overline"], [s], e); + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mo", [new S.TextNode("‾")]); + t.setAttribute("stretchy", "true"); + var a = new S.MathNode("mover", [X(r.body, e), t]); + return a.setAttribute("accent", "true"), a; + } +}); +B({ + type: "phantom", + names: ["\\phantom"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = e[0]; + return { + type: "phantom", + mode: t.mode, + body: Q(a) + }; + }, + htmlBuilder: (r, e) => { + var t = t0(r.body, e.withPhantom(), !1); + return b.makeFragment(t); + }, + mathmlBuilder: (r, e) => { + var t = o0(r.body, e); + return new S.MathNode("mphantom", t); + } +}); +B({ + type: "hphantom", + names: ["\\hphantom"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = e[0]; + return { + type: "hphantom", + mode: t.mode, + body: a + }; + }, + htmlBuilder: (r, e) => { + var t = b.makeSpan([], [P(r.body, e.withPhantom())]); + if (t.height = 0, t.depth = 0, t.children) + for (var a = 0; a < t.children.length; a++) + t.children[a].height = 0, t.children[a].depth = 0; + return t = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t + }] + }, e), b.makeSpan(["mord"], [t], e); + }, + mathmlBuilder: (r, e) => { + var t = o0(Q(r.body), e), a = new S.MathNode("mphantom", t), n = new S.MathNode("mpadded", [a]); + return n.setAttribute("height", "0px"), n.setAttribute("depth", "0px"), n; + } +}); +B({ + type: "vphantom", + names: ["\\vphantom"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler: (r, e) => { + var { + parser: t + } = r, a = e[0]; + return { + type: "vphantom", + mode: t.mode, + body: a + }; + }, + htmlBuilder: (r, e) => { + var t = b.makeSpan(["inner"], [P(r.body, e.withPhantom())]), a = b.makeSpan(["fix"], []); + return b.makeSpan(["mord", "rlap"], [t, a], e); + }, + mathmlBuilder: (r, e) => { + var t = o0(Q(r.body), e), a = new S.MathNode("mphantom", t), n = new S.MathNode("mpadded", [a]); + return n.setAttribute("width", "0px"), n; + } +}); +B({ + type: "raisebox", + names: ["\\raisebox"], + props: { + numArgs: 2, + argTypes: ["size", "hbox"], + allowedInText: !0 + }, + handler(r, e) { + var { + parser: t + } = r, a = F(e[0], "size").value, n = e[1]; + return { + type: "raisebox", + mode: t.mode, + dy: a, + body: n + }; + }, + htmlBuilder(r, e) { + var t = P(r.body, e), a = K(r.dy, e); + return b.makeVList({ + positionType: "shift", + positionData: -a, + children: [{ + type: "elem", + elem: t + }] + }, e); + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mpadded", [X(r.body, e)]), a = r.dy.number + r.dy.unit; + return t.setAttribute("voffset", a), t; + } +}); +B({ + type: "internal", + names: ["\\relax"], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler(r) { + var { + parser: e + } = r; + return { + type: "internal", + mode: e.mode + }; + } +}); +B({ + type: "rule", + names: ["\\rule"], + props: { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] + }, + handler(r, e, t) { + var { + parser: a + } = r, n = t[0], s = F(e[0], "size"), o = F(e[1], "size"); + return { + type: "rule", + mode: a.mode, + shift: n && F(n, "size").value, + width: s.value, + height: o.value + }; + }, + htmlBuilder(r, e) { + var t = b.makeSpan(["mord", "rule"], [], e), a = K(r.width, e), n = K(r.height, e), s = r.shift ? K(r.shift, e) : 0; + return t.style.borderRightWidth = A(a), t.style.borderTopWidth = A(n), t.style.bottom = A(s), t.width = a, t.height = n + s, t.depth = -s, t.maxFontSize = n * 1.125 * e.sizeMultiplier, t; + }, + mathmlBuilder(r, e) { + var t = K(r.width, e), a = K(r.height, e), n = r.shift ? K(r.shift, e) : 0, s = e.color && e.getColor() || "black", o = new S.MathNode("mspace"); + o.setAttribute("mathbackground", s), o.setAttribute("width", A(t)), o.setAttribute("height", A(a)); + var h = new S.MathNode("mpadded", [o]); + return n >= 0 ? h.setAttribute("height", A(n)) : (h.setAttribute("height", A(n)), h.setAttribute("depth", A(-n))), h.setAttribute("voffset", A(n)), h; + } +}); +function ra(r, e, t) { + for (var a = t0(r, e, !1), n = e.sizeMultiplier / t.sizeMultiplier, s = 0; s < a.length; s++) { + var o = a[s].classes.indexOf("sizing"); + o < 0 ? Array.prototype.push.apply(a[s].classes, e.sizingClasses(t)) : a[s].classes[o + 1] === "reset-size" + e.size && (a[s].classes[o + 1] = "reset-size" + t.size), a[s].height *= n, a[s].depth *= n; + } + return b.makeFragment(a); +} +var ar = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], Z1 = (r, e) => { + var t = e.havingSize(r.size); + return ra(r.body, t, e); +}; +B({ + type: "sizing", + names: ar, + props: { + numArgs: 0, + allowedInText: !0 + }, + handler: (r, e) => { + var { + breakOnTokenText: t, + funcName: a, + parser: n + } = r, s = n.parseExpression(!1, t); + return { + type: "sizing", + mode: n.mode, + // Figure out what size to use based on the list of functions above + size: ar.indexOf(a) + 1, + body: s + }; + }, + htmlBuilder: Z1, + mathmlBuilder: (r, e) => { + var t = e.havingSize(r.size), a = o0(r.body, t), n = new S.MathNode("mstyle", a); + return n.setAttribute("mathsize", A(t.sizeMultiplier)), n; + } +}); +B({ + type: "smash", + names: ["\\smash"], + props: { + numArgs: 1, + numOptionalArgs: 1, + allowedInText: !0 + }, + handler: (r, e, t) => { + var { + parser: a + } = r, n = !1, s = !1, o = t[0] && F(t[0], "ordgroup"); + if (o) + for (var h = "", c = 0; c < o.body.length; ++c) { + var p = o.body[c]; + if (h = p.text, h === "t") + n = !0; + else if (h === "b") + s = !0; + else { + n = !1, s = !1; + break; + } + } + else + n = !0, s = !0; + var g = e[0]; + return { + type: "smash", + mode: a.mode, + body: g, + smashHeight: n, + smashDepth: s + }; + }, + htmlBuilder: (r, e) => { + var t = b.makeSpan([], [P(r.body, e)]); + if (!r.smashHeight && !r.smashDepth) + return t; + if (r.smashHeight && (t.height = 0, t.children)) + for (var a = 0; a < t.children.length; a++) + t.children[a].height = 0; + if (r.smashDepth && (t.depth = 0, t.children)) + for (var n = 0; n < t.children.length; n++) + t.children[n].depth = 0; + var s = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t + }] + }, e); + return b.makeSpan(["mord"], [s], e); + }, + mathmlBuilder: (r, e) => { + var t = new S.MathNode("mpadded", [X(r.body, e)]); + return r.smashHeight && t.setAttribute("height", "0px"), r.smashDepth && t.setAttribute("depth", "0px"), t; + } +}); +B({ + type: "sqrt", + names: ["\\sqrt"], + props: { + numArgs: 1, + numOptionalArgs: 1 + }, + handler(r, e, t) { + var { + parser: a + } = r, n = t[0], s = e[0]; + return { + type: "sqrt", + mode: a.mode, + body: s, + index: n + }; + }, + htmlBuilder(r, e) { + var t = P(r.body, e.havingCrampedStyle()); + t.height === 0 && (t.height = e.fontMetrics().xHeight), t = b.wrapFragment(t, e); + var a = e.fontMetrics(), n = a.defaultRuleThickness, s = n; + e.style.id < R.TEXT.id && (s = e.fontMetrics().xHeight); + var o = n + s / 4, h = t.height + t.depth + o + n, { + span: c, + ruleWidth: p, + advanceWidth: g + } = B0.sqrtImage(h, e), y = c.height - p; + y > t.height + t.depth + o && (o = (o + y - t.height - t.depth) / 2); + var w = c.height - t.height - o - p; + t.style.paddingLeft = A(g); + var x = b.makeVList({ + positionType: "firstBaseline", + children: [{ + type: "elem", + elem: t, + wrapperClasses: ["svg-align"] + }, { + type: "kern", + size: -(t.height + w) + }, { + type: "elem", + elem: c + }, { + type: "kern", + size: p + }] + }, e); + if (r.index) { + var z = e.havingStyle(R.SCRIPTSCRIPT), T = P(r.index, z, e), C = 0.6 * (x.height - x.depth), N = b.makeVList({ + positionType: "shift", + positionData: -C, + children: [{ + type: "elem", + elem: T + }] + }, e), O = b.makeSpan(["root"], [N]); + return b.makeSpan(["mord", "sqrt"], [O, x], e); + } else + return b.makeSpan(["mord", "sqrt"], [x], e); + }, + mathmlBuilder(r, e) { + var { + body: t, + index: a + } = r; + return a ? new S.MathNode("mroot", [X(t, e), X(a, e)]) : new S.MathNode("msqrt", [X(t, e)]); + } +}); +var nr = { + display: R.DISPLAY, + text: R.TEXT, + script: R.SCRIPT, + scriptscript: R.SCRIPTSCRIPT +}; +B({ + type: "styling", + names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], + props: { + numArgs: 0, + allowedInText: !0, + primitive: !0 + }, + handler(r, e) { + var { + breakOnTokenText: t, + funcName: a, + parser: n + } = r, s = n.parseExpression(!0, t), o = a.slice(1, a.length - 5); + return { + type: "styling", + mode: n.mode, + // Figure out what style to use by pulling out the style from + // the function name + style: o, + body: s + }; + }, + htmlBuilder(r, e) { + var t = nr[r.style], a = e.havingStyle(t).withFont(""); + return ra(r.body, a, e); + }, + mathmlBuilder(r, e) { + var t = nr[r.style], a = e.havingStyle(t), n = o0(r.body, a), s = new S.MathNode("mstyle", n), o = { + display: ["0", "true"], + text: ["0", "false"], + script: ["1", "false"], + scriptscript: ["2", "false"] + }, h = o[r.style]; + return s.setAttribute("scriptlevel", h[0]), s.setAttribute("displaystyle", h[1]), s; + } +}); +var K1 = function(e, t) { + var a = e.base; + if (a) + if (a.type === "op") { + var n = a.limits && (t.style.size === R.DISPLAY.size || a.alwaysHandleSupSub); + return n ? re : null; + } else if (a.type === "operatorname") { + var s = a.alwaysHandleSupSub && (t.style.size === R.DISPLAY.size || a.limits); + return s ? ta : null; + } else { + if (a.type === "accent") + return q.isCharacterBox(a.base) ? xt : null; + if (a.type === "horizBrace") { + var o = !e.sub; + return o === a.isOver ? Qr : null; + } else + return null; + } + else + return null; +}; +$0({ + type: "supsub", + htmlBuilder(r, e) { + var t = K1(r, e); + if (t) + return t(r, e); + var { + base: a, + sup: n, + sub: s + } = r, o = P(a, e), h, c, p = e.fontMetrics(), g = 0, y = 0, w = a && q.isCharacterBox(a); + if (n) { + var x = e.havingStyle(e.style.sup()); + h = P(n, x, e), w || (g = o.height - x.fontMetrics().supDrop * x.sizeMultiplier / e.sizeMultiplier); + } + if (s) { + var z = e.havingStyle(e.style.sub()); + c = P(s, z, e), w || (y = o.depth + z.fontMetrics().subDrop * z.sizeMultiplier / e.sizeMultiplier); + } + var T; + e.style === R.DISPLAY ? T = p.sup1 : e.style.cramped ? T = p.sup3 : T = p.sup2; + var C = e.sizeMultiplier, N = A(0.5 / p.ptPerEm / C), O = null; + if (c) { + var H = r.base && r.base.type === "op" && r.base.name && (r.base.name === "\\oiint" || r.base.name === "\\oiiint"); + (o instanceof p0 || H) && (O = A(-o.italic)); + } + var V; + if (h && c) { + g = Math.max(g, T, h.depth + 0.25 * p.xHeight), y = Math.max(y, p.sub2); + var L = p.defaultRuleThickness, U = 4 * L; + if (g - h.depth - (c.height - y) < U) { + y = U - (g - h.depth) + c.height; + var G = 0.8 * p.xHeight - (g - h.depth); + G > 0 && (g += G, y -= G); + } + var j = [{ + type: "elem", + elem: c, + shift: y, + marginRight: N, + marginLeft: O + }, { + type: "elem", + elem: h, + shift: -g, + marginRight: N + }]; + V = b.makeVList({ + positionType: "individualShift", + children: j + }, e); + } else if (c) { + y = Math.max(y, p.sub1, c.height - 0.8 * p.xHeight); + var Y = [{ + type: "elem", + elem: c, + marginLeft: O, + marginRight: N + }]; + V = b.makeVList({ + positionType: "shift", + positionData: y, + children: Y + }, e); + } else if (h) + g = Math.max(g, T, h.depth + 0.25 * p.xHeight), V = b.makeVList({ + positionType: "shift", + positionData: -g, + children: [{ + type: "elem", + elem: h, + marginRight: N + }] + }, e); + else + throw new Error("supsub must have either sup or sub."); + var M0 = lt(o, "right") || "mord"; + return b.makeSpan([M0], [o, b.makeSpan(["msupsub"], [V])], e); + }, + mathmlBuilder(r, e) { + var t = !1, a, n; + r.base && r.base.type === "horizBrace" && (n = !!r.sup, n === r.base.isOver && (t = !0, a = r.base.isOver)), r.base && (r.base.type === "op" || r.base.type === "operatorname") && (r.base.parentIsSupSub = !0); + var s = [X(r.base, e)]; + r.sub && s.push(X(r.sub, e)), r.sup && s.push(X(r.sup, e)); + var o; + if (t) + o = a ? "mover" : "munder"; + else if (r.sub) + if (r.sup) { + var p = r.base; + p && p.type === "op" && p.limits && e.style === R.DISPLAY || p && p.type === "operatorname" && p.alwaysHandleSupSub && (e.style === R.DISPLAY || p.limits) ? o = "munderover" : o = "msubsup"; + } else { + var c = r.base; + c && c.type === "op" && c.limits && (e.style === R.DISPLAY || c.alwaysHandleSupSub) || c && c.type === "operatorname" && c.alwaysHandleSupSub && (c.limits || e.style === R.DISPLAY) ? o = "munder" : o = "msub"; + } + else { + var h = r.base; + h && h.type === "op" && h.limits && (e.style === R.DISPLAY || h.alwaysHandleSupSub) || h && h.type === "operatorname" && h.alwaysHandleSupSub && (h.limits || e.style === R.DISPLAY) ? o = "mover" : o = "msup"; + } + return new S.MathNode(o, s); + } +}); +$0({ + type: "atom", + htmlBuilder(r, e) { + return b.mathsym(r.text, r.mode, e, ["m" + r.family]); + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mo", [v0(r.text, r.mode)]); + if (r.family === "bin") { + var a = bt(r, e); + a === "bold-italic" && t.setAttribute("mathvariant", a); + } else + r.family === "punct" ? t.setAttribute("separator", "true") : (r.family === "open" || r.family === "close") && t.setAttribute("stretchy", "false"); + return t; + } +}); +var aa = { + mi: "italic", + mn: "normal", + mtext: "normal" +}; +$0({ + type: "mathord", + htmlBuilder(r, e) { + return b.makeOrd(r, e, "mathord"); + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mi", [v0(r.text, r.mode, e)]), a = bt(r, e) || "italic"; + return a !== aa[t.type] && t.setAttribute("mathvariant", a), t; + } +}); +$0({ + type: "textord", + htmlBuilder(r, e) { + return b.makeOrd(r, e, "textord"); + }, + mathmlBuilder(r, e) { + var t = v0(r.text, r.mode, e), a = bt(r, e) || "normal", n; + return r.mode === "text" ? n = new S.MathNode("mtext", [t]) : /[0-9]/.test(r.text) ? n = new S.MathNode("mn", [t]) : r.text === "\\prime" ? n = new S.MathNode("mo", [t]) : n = new S.MathNode("mi", [t]), a !== aa[n.type] && n.setAttribute("mathvariant", a), n; + } +}); +var et = { + "\\nobreak": "nobreak", + "\\allowbreak": "allowbreak" +}, tt = { + " ": {}, + "\\ ": {}, + "~": { + className: "nobreak" + }, + "\\space": {}, + "\\nobreakspace": { + className: "nobreak" + } +}; +$0({ + type: "spacing", + htmlBuilder(r, e) { + if (tt.hasOwnProperty(r.text)) { + var t = tt[r.text].className || ""; + if (r.mode === "text") { + var a = b.makeOrd(r, e, "textord"); + return a.classes.push(t), a; + } else + return b.makeSpan(["mspace", t], [b.mathsym(r.text, r.mode, e)], e); + } else { + if (et.hasOwnProperty(r.text)) + return b.makeSpan(["mspace", et[r.text]], [], e); + throw new M('Unknown type of space "' + r.text + '"'); + } + }, + mathmlBuilder(r, e) { + var t; + if (tt.hasOwnProperty(r.text)) + t = new S.MathNode("mtext", [new S.TextNode(" ")]); + else { + if (et.hasOwnProperty(r.text)) + return new S.MathNode("mspace"); + throw new M('Unknown type of space "' + r.text + '"'); + } + return t; + } +}); +var ir = () => { + var r = new S.MathNode("mtd", []); + return r.setAttribute("width", "50%"), r; +}; +$0({ + type: "tag", + mathmlBuilder(r, e) { + var t = new S.MathNode("mtable", [new S.MathNode("mtr", [ir(), new S.MathNode("mtd", [G0(r.body, e)]), ir(), new S.MathNode("mtd", [G0(r.tag, e)])])]); + return t.setAttribute("width", "100%"), t; + } +}); +var sr = { + "\\text": void 0, + "\\textrm": "textrm", + "\\textsf": "textsf", + "\\texttt": "texttt", + "\\textnormal": "textrm" +}, lr = { + "\\textbf": "textbf", + "\\textmd": "textmd" +}, J1 = { + "\\textit": "textit", + "\\textup": "textup" +}, or = (r, e) => { + var t = r.font; + return t ? sr[t] ? e.withTextFontFamily(sr[t]) : lr[t] ? e.withTextFontWeight(lr[t]) : e.withTextFontShape(J1[t]) : e; +}; +B({ + type: "text", + names: [ + // Font families + "\\text", + "\\textrm", + "\\textsf", + "\\texttt", + "\\textnormal", + // Font weights + "\\textbf", + "\\textmd", + // Font Shapes + "\\textit", + "\\textup" + ], + props: { + numArgs: 1, + argTypes: ["text"], + allowedInArgument: !0, + allowedInText: !0 + }, + handler(r, e) { + var { + parser: t, + funcName: a + } = r, n = e[0]; + return { + type: "text", + mode: t.mode, + body: Q(n), + font: a + }; + }, + htmlBuilder(r, e) { + var t = or(r, e), a = t0(r.body, t, !0); + return b.makeSpan(["mord", "text"], a, t); + }, + mathmlBuilder(r, e) { + var t = or(r, e); + return G0(r.body, t); + } +}); +B({ + type: "underline", + names: ["\\underline"], + props: { + numArgs: 1, + allowedInText: !0 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "underline", + mode: t.mode, + body: e[0] + }; + }, + htmlBuilder(r, e) { + var t = P(r.body, e), a = b.makeLineSpan("underline-line", e), n = e.fontMetrics().defaultRuleThickness, s = b.makeVList({ + positionType: "top", + positionData: t.height, + children: [{ + type: "kern", + size: n + }, { + type: "elem", + elem: a + }, { + type: "kern", + size: 3 * n + }, { + type: "elem", + elem: t + }] + }, e); + return b.makeSpan(["mord", "underline"], [s], e); + }, + mathmlBuilder(r, e) { + var t = new S.MathNode("mo", [new S.TextNode("‾")]); + t.setAttribute("stretchy", "true"); + var a = new S.MathNode("munder", [X(r.body, e), t]); + return a.setAttribute("accentunder", "true"), a; + } +}); +B({ + type: "vcenter", + names: ["\\vcenter"], + props: { + numArgs: 1, + argTypes: ["original"], + // In LaTeX, \vcenter can act only on a box. + allowedInText: !1 + }, + handler(r, e) { + var { + parser: t + } = r; + return { + type: "vcenter", + mode: t.mode, + body: e[0] + }; + }, + htmlBuilder(r, e) { + var t = P(r.body, e), a = e.fontMetrics().axisHeight, n = 0.5 * (t.height - a - (t.depth + a)); + return b.makeVList({ + positionType: "shift", + positionData: n, + children: [{ + type: "elem", + elem: t + }] + }, e); + }, + mathmlBuilder(r, e) { + return new S.MathNode("mpadded", [X(r.body, e)], ["vcenter"]); + } +}); +B({ + type: "verb", + names: ["\\verb"], + props: { + numArgs: 0, + allowedInText: !0 + }, + handler(r, e, t) { + throw new M("\\verb ended by end of line instead of matching delimiter"); + }, + htmlBuilder(r, e) { + for (var t = ur(r), a = [], n = e.havingStyle(e.style.text()), s = 0; s < t.length; s++) { + var o = t[s]; + o === "~" && (o = "\\textasciitilde"), a.push(b.makeSymbol(o, "Typewriter-Regular", r.mode, n, ["mord", "texttt"])); + } + return b.makeSpan(["mord", "text"].concat(n.sizingClasses(e)), b.tryCombineChars(a), n); + }, + mathmlBuilder(r, e) { + var t = new S.TextNode(ur(r)), a = new S.MathNode("mtext", [t]); + return a.setAttribute("mathvariant", "monospace"), a; + } +}); +var ur = (r) => r.body.replace(/ /g, r.star ? "␣" : " "), F0 = Ar, na = `[ \r + ]`, Q1 = "\\\\[a-zA-Z@]+", _1 = "\\\\[^\uD800-\uDFFF]", e4 = "(" + Q1 + ")" + na + "*", t4 = `\\\\( +|[ \r ]+ +?)[ \r ]*`, mt = "[̀-ͯ]", r4 = new RegExp(mt + "+$"), a4 = "(" + na + "+)|" + // whitespace +(t4 + "|") + // \whitespace +"([!-\\[\\]-‧‪-퟿豈-￿]" + // single codepoint +(mt + "*") + // ...plus accents +"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair +(mt + "*") + // ...plus accents +"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5" + // \verb unstarred +("|" + e4) + // \macroName + spaces +("|" + _1 + ")"); +class hr { + // Category codes. The lexer only supports comment characters (14) for now. + // MacroExpander additionally distinguishes active (13). + constructor(e, t) { + this.input = void 0, this.settings = void 0, this.tokenRegex = void 0, this.catcodes = void 0, this.input = e, this.settings = t, this.tokenRegex = new RegExp(a4, "g"), this.catcodes = { + "%": 14, + // comment character + "~": 13 + // active character + }; + } + setCatcode(e, t) { + this.catcodes[e] = t; + } + /** + * This function lexes a single token. + */ + lex() { + var e = this.input, t = this.tokenRegex.lastIndex; + if (t === e.length) + return new f0("EOF", new u0(this, t, t)); + var a = this.tokenRegex.exec(e); + if (a === null || a.index !== t) + throw new M("Unexpected character: '" + e[t] + "'", new f0(e[t], new u0(this, t, t + 1))); + var n = a[6] || a[3] || (a[2] ? "\\ " : " "); + if (this.catcodes[n] === 14) { + var s = e.indexOf(` +`, this.tokenRegex.lastIndex); + return s === -1 ? (this.tokenRegex.lastIndex = e.length, this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")) : this.tokenRegex.lastIndex = s + 1, this.lex(); + } + return new f0(n, new u0(this, t, this.tokenRegex.lastIndex)); + } +} +class n4 { + /** + * Both arguments are optional. The first argument is an object of + * built-in mappings which never change. The second argument is an object + * of initial (global-level) mappings, which will constantly change + * according to any global/top-level `set`s done. + */ + constructor(e, t) { + e === void 0 && (e = {}), t === void 0 && (t = {}), this.current = void 0, this.builtins = void 0, this.undefStack = void 0, this.current = t, this.builtins = e, this.undefStack = []; + } + /** + * Start a new nested group, affecting future local `set`s. + */ + beginGroup() { + this.undefStack.push({}); + } + /** + * End current nested group, restoring values before the group began. + */ + endGroup() { + if (this.undefStack.length === 0) + throw new M("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug"); + var e = this.undefStack.pop(); + for (var t in e) + e.hasOwnProperty(t) && (e[t] == null ? delete this.current[t] : this.current[t] = e[t]); + } + /** + * Ends all currently nested groups (if any), restoring values before the + * groups began. Useful in case of an error in the middle of parsing. + */ + endGroups() { + for (; this.undefStack.length > 0; ) + this.endGroup(); + } + /** + * Detect whether `name` has a definition. Equivalent to + * `get(name) != null`. + */ + has(e) { + return this.current.hasOwnProperty(e) || this.builtins.hasOwnProperty(e); + } + /** + * Get the current value of a name, or `undefined` if there is no value. + * + * Note: Do not use `if (namespace.get(...))` to detect whether a macro + * is defined, as the definition may be the empty string which evaluates + * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or + * `if (namespace.has(...))`. + */ + get(e) { + return this.current.hasOwnProperty(e) ? this.current[e] : this.builtins[e]; + } + /** + * Set the current value of a name, and optionally set it globally too. + * Local set() sets the current value and (when appropriate) adds an undo + * operation to the undo stack. Global set() may change the undo + * operation at every level, so takes time linear in their number. + * A value of undefined means to delete existing definitions. + */ + set(e, t, a) { + if (a === void 0 && (a = !1), a) { + for (var n = 0; n < this.undefStack.length; n++) + delete this.undefStack[n][e]; + this.undefStack.length > 0 && (this.undefStack[this.undefStack.length - 1][e] = t); + } else { + var s = this.undefStack[this.undefStack.length - 1]; + s && !s.hasOwnProperty(e) && (s[e] = this.current[e]); + } + t == null ? delete this.current[e] : this.current[e] = t; + } +} +var i4 = Wr; +m("\\noexpand", function(r) { + var e = r.popToken(); + return r.isExpandable(e.text) && (e.noexpand = !0, e.treatAsRelax = !0), { + tokens: [e], + numArgs: 0 + }; +}); +m("\\expandafter", function(r) { + var e = r.popToken(); + return r.expandOnce(!0), { + tokens: [e], + numArgs: 0 + }; +}); +m("\\@firstoftwo", function(r) { + var e = r.consumeArgs(2); + return { + tokens: e[0], + numArgs: 0 + }; +}); +m("\\@secondoftwo", function(r) { + var e = r.consumeArgs(2); + return { + tokens: e[1], + numArgs: 0 + }; +}); +m("\\@ifnextchar", function(r) { + var e = r.consumeArgs(3); + r.consumeSpaces(); + var t = r.future(); + return e[0].length === 1 && e[0][0].text === t.text ? { + tokens: e[1], + numArgs: 0 + } : { + tokens: e[2], + numArgs: 0 + }; +}); +m("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"); +m("\\TextOrMath", function(r) { + var e = r.consumeArgs(2); + return r.mode === "text" ? { + tokens: e[0], + numArgs: 0 + } : { + tokens: e[1], + numArgs: 0 + }; +}); +var mr = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + a: 10, + A: 10, + b: 11, + B: 11, + c: 12, + C: 12, + d: 13, + D: 13, + e: 14, + E: 14, + f: 15, + F: 15 +}; +m("\\char", function(r) { + var e = r.popToken(), t, a = ""; + if (e.text === "'") + t = 8, e = r.popToken(); + else if (e.text === '"') + t = 16, e = r.popToken(); + else if (e.text === "`") + if (e = r.popToken(), e.text[0] === "\\") + a = e.text.charCodeAt(1); + else { + if (e.text === "EOF") + throw new M("\\char` missing argument"); + a = e.text.charCodeAt(0); + } + else + t = 10; + if (t) { + if (a = mr[e.text], a == null || a >= t) + throw new M("Invalid base-" + t + " digit " + e.text); + for (var n; (n = mr[r.future().text]) != null && n < t; ) + a *= t, a += n, r.popToken(); + } + return "\\@char{" + a + "}"; +}); +var Bt = (r, e, t) => { + var a = r.consumeArg().tokens; + if (a.length !== 1) + throw new M("\\newcommand's first argument must be a macro name"); + var n = a[0].text, s = r.isDefined(n); + if (s && !e) + throw new M("\\newcommand{" + n + "} attempting to redefine " + (n + "; use \\renewcommand")); + if (!s && !t) + throw new M("\\renewcommand{" + n + "} when command " + n + " does not yet exist; use \\newcommand"); + var o = 0; + if (a = r.consumeArg().tokens, a.length === 1 && a[0].text === "[") { + for (var h = "", c = r.expandNextToken(); c.text !== "]" && c.text !== "EOF"; ) + h += c.text, c = r.expandNextToken(); + if (!h.match(/^\s*[0-9]+\s*$/)) + throw new M("Invalid number of arguments: " + h); + o = parseInt(h), a = r.consumeArg().tokens; + } + return r.macros.set(n, { + tokens: a, + numArgs: o + }), ""; +}; +m("\\newcommand", (r) => Bt(r, !1, !0)); +m("\\renewcommand", (r) => Bt(r, !0, !1)); +m("\\providecommand", (r) => Bt(r, !0, !0)); +m("\\message", (r) => { + var e = r.consumeArgs(1)[0]; + return console.log(e.reverse().map((t) => t.text).join("")), ""; +}); +m("\\errmessage", (r) => { + var e = r.consumeArgs(1)[0]; + return console.error(e.reverse().map((t) => t.text).join("")), ""; +}); +m("\\show", (r) => { + var e = r.popToken(), t = e.text; + return console.log(e, r.macros.get(t), F0[t], $.math[t], $.text[t]), ""; +}); +m("\\bgroup", "{"); +m("\\egroup", "}"); +m("~", "\\nobreakspace"); +m("\\lq", "`"); +m("\\rq", "'"); +m("\\aa", "\\r a"); +m("\\AA", "\\r A"); +m("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}"); +m("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"); +m("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); +m("ℬ", "\\mathscr{B}"); +m("ℰ", "\\mathscr{E}"); +m("ℱ", "\\mathscr{F}"); +m("ℋ", "\\mathscr{H}"); +m("ℐ", "\\mathscr{I}"); +m("ℒ", "\\mathscr{L}"); +m("ℳ", "\\mathscr{M}"); +m("ℛ", "\\mathscr{R}"); +m("ℭ", "\\mathfrak{C}"); +m("ℌ", "\\mathfrak{H}"); +m("ℨ", "\\mathfrak{Z}"); +m("\\Bbbk", "\\Bbb{k}"); +m("·", "\\cdotp"); +m("\\llap", "\\mathllap{\\textrm{#1}}"); +m("\\rlap", "\\mathrlap{\\textrm{#1}}"); +m("\\clap", "\\mathclap{\\textrm{#1}}"); +m("\\mathstrut", "\\vphantom{(}"); +m("\\underbar", "\\underline{\\text{#1}}"); +m("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); +m("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}"); +m("\\ne", "\\neq"); +m("≠", "\\neq"); +m("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}"); +m("∉", "\\notin"); +m("≘", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}"); +m("≙", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}"); +m("≚", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}"); +m("≛", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}"); +m("≝", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}"); +m("≞", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}"); +m("≟", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}"); +m("⟂", "\\perp"); +m("‼", "\\mathclose{!\\mkern-0.8mu!}"); +m("∌", "\\notni"); +m("⌜", "\\ulcorner"); +m("⌝", "\\urcorner"); +m("⌞", "\\llcorner"); +m("⌟", "\\lrcorner"); +m("©", "\\copyright"); +m("®", "\\textregistered"); +m("️", "\\textregistered"); +m("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'); +m("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'); +m("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'); +m("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'); +m("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}"); +m("⋮", "\\vdots"); +m("\\varGamma", "\\mathit{\\Gamma}"); +m("\\varDelta", "\\mathit{\\Delta}"); +m("\\varTheta", "\\mathit{\\Theta}"); +m("\\varLambda", "\\mathit{\\Lambda}"); +m("\\varXi", "\\mathit{\\Xi}"); +m("\\varPi", "\\mathit{\\Pi}"); +m("\\varSigma", "\\mathit{\\Sigma}"); +m("\\varUpsilon", "\\mathit{\\Upsilon}"); +m("\\varPhi", "\\mathit{\\Phi}"); +m("\\varPsi", "\\mathit{\\Psi}"); +m("\\varOmega", "\\mathit{\\Omega}"); +m("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"); +m("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"); +m("\\boxed", "\\fbox{$\\displaystyle{#1}$}"); +m("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;"); +m("\\implies", "\\DOTSB\\;\\Longrightarrow\\;"); +m("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); +var cr = { + ",": "\\dotsc", + "\\not": "\\dotsb", + // \keybin@ checks for the following: + "+": "\\dotsb", + "=": "\\dotsb", + "<": "\\dotsb", + ">": "\\dotsb", + "-": "\\dotsb", + "*": "\\dotsb", + ":": "\\dotsb", + // Symbols whose definition starts with \DOTSB: + "\\DOTSB": "\\dotsb", + "\\coprod": "\\dotsb", + "\\bigvee": "\\dotsb", + "\\bigwedge": "\\dotsb", + "\\biguplus": "\\dotsb", + "\\bigcap": "\\dotsb", + "\\bigcup": "\\dotsb", + "\\prod": "\\dotsb", + "\\sum": "\\dotsb", + "\\bigotimes": "\\dotsb", + "\\bigoplus": "\\dotsb", + "\\bigodot": "\\dotsb", + "\\bigsqcup": "\\dotsb", + "\\And": "\\dotsb", + "\\longrightarrow": "\\dotsb", + "\\Longrightarrow": "\\dotsb", + "\\longleftarrow": "\\dotsb", + "\\Longleftarrow": "\\dotsb", + "\\longleftrightarrow": "\\dotsb", + "\\Longleftrightarrow": "\\dotsb", + "\\mapsto": "\\dotsb", + "\\longmapsto": "\\dotsb", + "\\hookrightarrow": "\\dotsb", + "\\doteq": "\\dotsb", + // Symbols whose definition starts with \mathbin: + "\\mathbin": "\\dotsb", + // Symbols whose definition starts with \mathrel: + "\\mathrel": "\\dotsb", + "\\relbar": "\\dotsb", + "\\Relbar": "\\dotsb", + "\\xrightarrow": "\\dotsb", + "\\xleftarrow": "\\dotsb", + // Symbols whose definition starts with \DOTSI: + "\\DOTSI": "\\dotsi", + "\\int": "\\dotsi", + "\\oint": "\\dotsi", + "\\iint": "\\dotsi", + "\\iiint": "\\dotsi", + "\\iiiint": "\\dotsi", + "\\idotsint": "\\dotsi", + // Symbols whose definition starts with \DOTSX: + "\\DOTSX": "\\dotsx" +}; +m("\\dots", function(r) { + var e = "\\dotso", t = r.expandAfterFuture().text; + return t in cr ? e = cr[t] : (t.slice(0, 4) === "\\not" || t in $.math && q.contains(["bin", "rel"], $.math[t].group)) && (e = "\\dotsb"), e; +}); +var Dt = { + // \rightdelim@ checks for the following: + ")": !0, + "]": !0, + "\\rbrack": !0, + "\\}": !0, + "\\rbrace": !0, + "\\rangle": !0, + "\\rceil": !0, + "\\rfloor": !0, + "\\rgroup": !0, + "\\rmoustache": !0, + "\\right": !0, + "\\bigr": !0, + "\\biggr": !0, + "\\Bigr": !0, + "\\Biggr": !0, + // \extra@ also tests for the following: + $: !0, + // \extrap@ checks for the following: + ";": !0, + ".": !0, + ",": !0 +}; +m("\\dotso", function(r) { + var e = r.future().text; + return e in Dt ? "\\ldots\\," : "\\ldots"; +}); +m("\\dotsc", function(r) { + var e = r.future().text; + return e in Dt && e !== "," ? "\\ldots\\," : "\\ldots"; +}); +m("\\cdots", function(r) { + var e = r.future().text; + return e in Dt ? "\\@cdots\\," : "\\@cdots"; +}); +m("\\dotsb", "\\cdots"); +m("\\dotsm", "\\cdots"); +m("\\dotsi", "\\!\\cdots"); +m("\\dotsx", "\\ldots\\,"); +m("\\DOTSI", "\\relax"); +m("\\DOTSB", "\\relax"); +m("\\DOTSX", "\\relax"); +m("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"); +m("\\,", "\\tmspace+{3mu}{.1667em}"); +m("\\thinspace", "\\,"); +m("\\>", "\\mskip{4mu}"); +m("\\:", "\\tmspace+{4mu}{.2222em}"); +m("\\medspace", "\\:"); +m("\\;", "\\tmspace+{5mu}{.2777em}"); +m("\\thickspace", "\\;"); +m("\\!", "\\tmspace-{3mu}{.1667em}"); +m("\\negthinspace", "\\!"); +m("\\negmedspace", "\\tmspace-{4mu}{.2222em}"); +m("\\negthickspace", "\\tmspace-{5mu}{.277em}"); +m("\\enspace", "\\kern.5em "); +m("\\enskip", "\\hskip.5em\\relax"); +m("\\quad", "\\hskip1em\\relax"); +m("\\qquad", "\\hskip2em\\relax"); +m("\\tag", "\\@ifstar\\tag@literal\\tag@paren"); +m("\\tag@paren", "\\tag@literal{({#1})}"); +m("\\tag@literal", (r) => { + if (r.macros.get("\\df@tag")) + throw new M("Multiple \\tag"); + return "\\gdef\\df@tag{\\text{#1}}"; +}); +m("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"); +m("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"); +m("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}"); +m("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"); +m("\\newline", "\\\\\\relax"); +m("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}"); +var ia = A(x0["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * x0["Main-Regular"]["A".charCodeAt(0)][1]); +m("\\LaTeX", "\\textrm{\\html@mathml{" + ("L\\kern-.36em\\raisebox{" + ia + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{LaTeX}}"); +m("\\KaTeX", "\\textrm{\\html@mathml{" + ("K\\kern-.17em\\raisebox{" + ia + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{KaTeX}}"); +m("\\hspace", "\\@ifstar\\@hspacer\\@hspace"); +m("\\@hspace", "\\hskip #1\\relax"); +m("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"); +m("\\ordinarycolon", ":"); +m("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); +m("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'); +m("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'); +m("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'); +m("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'); +m("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'); +m("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'); +m("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'); +m("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'); +m("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'); +m("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'); +m("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'); +m("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'); +m("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'); +m("∷", "\\dblcolon"); +m("∹", "\\eqcolon"); +m("≔", "\\coloneqq"); +m("≕", "\\eqqcolon"); +m("⩴", "\\Coloneqq"); +m("\\ratio", "\\vcentcolon"); +m("\\coloncolon", "\\dblcolon"); +m("\\colonequals", "\\coloneqq"); +m("\\coloncolonequals", "\\Coloneqq"); +m("\\equalscolon", "\\eqqcolon"); +m("\\equalscoloncolon", "\\Eqqcolon"); +m("\\colonminus", "\\coloneq"); +m("\\coloncolonminus", "\\Coloneq"); +m("\\minuscolon", "\\eqcolon"); +m("\\minuscoloncolon", "\\Eqcolon"); +m("\\coloncolonapprox", "\\Colonapprox"); +m("\\coloncolonsim", "\\Colonsim"); +m("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); +m("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"); +m("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); +m("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"); +m("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"); +m("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}"); +m("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"); +m("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}"); +m("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}"); +m("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}"); +m("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}"); +m("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}"); +m("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}"); +m("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{≩}"); +m("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{≨}"); +m("\\ngeqq", "\\html@mathml{\\@ngeqq}{≱}"); +m("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{≱}"); +m("\\nleqq", "\\html@mathml{\\@nleqq}{≰}"); +m("\\nleqslant", "\\html@mathml{\\@nleqslant}{≰}"); +m("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}"); +m("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}"); +m("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{⊈}"); +m("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{⊉}"); +m("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}"); +m("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}"); +m("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}"); +m("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); +m("\\imath", "\\html@mathml{\\@imath}{ı}"); +m("\\jmath", "\\html@mathml{\\@jmath}{ȷ}"); +m("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"); +m("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"); +m("⟦", "\\llbracket"); +m("⟧", "\\rrbracket"); +m("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"); +m("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"); +m("⦃", "\\lBrace"); +m("⦄", "\\rBrace"); +m("\\minuso", "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}"); +m("⦵", "\\minuso"); +m("\\darr", "\\downarrow"); +m("\\dArr", "\\Downarrow"); +m("\\Darr", "\\Downarrow"); +m("\\lang", "\\langle"); +m("\\rang", "\\rangle"); +m("\\uarr", "\\uparrow"); +m("\\uArr", "\\Uparrow"); +m("\\Uarr", "\\Uparrow"); +m("\\N", "\\mathbb{N}"); +m("\\R", "\\mathbb{R}"); +m("\\Z", "\\mathbb{Z}"); +m("\\alef", "\\aleph"); +m("\\alefsym", "\\aleph"); +m("\\Alpha", "\\mathrm{A}"); +m("\\Beta", "\\mathrm{B}"); +m("\\bull", "\\bullet"); +m("\\Chi", "\\mathrm{X}"); +m("\\clubs", "\\clubsuit"); +m("\\cnums", "\\mathbb{C}"); +m("\\Complex", "\\mathbb{C}"); +m("\\Dagger", "\\ddagger"); +m("\\diamonds", "\\diamondsuit"); +m("\\empty", "\\emptyset"); +m("\\Epsilon", "\\mathrm{E}"); +m("\\Eta", "\\mathrm{H}"); +m("\\exist", "\\exists"); +m("\\harr", "\\leftrightarrow"); +m("\\hArr", "\\Leftrightarrow"); +m("\\Harr", "\\Leftrightarrow"); +m("\\hearts", "\\heartsuit"); +m("\\image", "\\Im"); +m("\\infin", "\\infty"); +m("\\Iota", "\\mathrm{I}"); +m("\\isin", "\\in"); +m("\\Kappa", "\\mathrm{K}"); +m("\\larr", "\\leftarrow"); +m("\\lArr", "\\Leftarrow"); +m("\\Larr", "\\Leftarrow"); +m("\\lrarr", "\\leftrightarrow"); +m("\\lrArr", "\\Leftrightarrow"); +m("\\Lrarr", "\\Leftrightarrow"); +m("\\Mu", "\\mathrm{M}"); +m("\\natnums", "\\mathbb{N}"); +m("\\Nu", "\\mathrm{N}"); +m("\\Omicron", "\\mathrm{O}"); +m("\\plusmn", "\\pm"); +m("\\rarr", "\\rightarrow"); +m("\\rArr", "\\Rightarrow"); +m("\\Rarr", "\\Rightarrow"); +m("\\real", "\\Re"); +m("\\reals", "\\mathbb{R}"); +m("\\Reals", "\\mathbb{R}"); +m("\\Rho", "\\mathrm{P}"); +m("\\sdot", "\\cdot"); +m("\\sect", "\\S"); +m("\\spades", "\\spadesuit"); +m("\\sub", "\\subset"); +m("\\sube", "\\subseteq"); +m("\\supe", "\\supseteq"); +m("\\Tau", "\\mathrm{T}"); +m("\\thetasym", "\\vartheta"); +m("\\weierp", "\\wp"); +m("\\Zeta", "\\mathrm{Z}"); +m("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}"); +m("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}"); +m("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); +m("\\bra", "\\mathinner{\\langle{#1}|}"); +m("\\ket", "\\mathinner{|{#1}\\rangle}"); +m("\\braket", "\\mathinner{\\langle{#1}\\rangle}"); +m("\\Bra", "\\left\\langle#1\\right|"); +m("\\Ket", "\\left|#1\\right\\rangle"); +var sa = (r) => (e) => { + var t = e.consumeArg().tokens, a = e.consumeArg().tokens, n = e.consumeArg().tokens, s = e.consumeArg().tokens, o = e.macros.get("|"), h = e.macros.get("\\|"); + e.macros.beginGroup(); + var c = (y) => (w) => { + r && (w.macros.set("|", o), n.length && w.macros.set("\\|", h)); + var x = y; + if (!y && n.length) { + var z = w.future(); + z.text === "|" && (w.popToken(), x = !0); + } + return { + tokens: x ? n : a, + numArgs: 0 + }; + }; + e.macros.set("|", c(!1)), n.length && e.macros.set("\\|", c(!0)); + var p = e.consumeArg().tokens, g = e.expandTokens([ + ...s, + ...p, + ...t + // reversed + ]); + return e.macros.endGroup(), { + tokens: g.reverse(), + numArgs: 0 + }; +}; +m("\\bra@ket", sa(!1)); +m("\\bra@set", sa(!0)); +m("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"); +m("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"); +m("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"); +m("\\angln", "{\\angl n}"); +m("\\blue", "\\textcolor{##6495ed}{#1}"); +m("\\orange", "\\textcolor{##ffa500}{#1}"); +m("\\pink", "\\textcolor{##ff00af}{#1}"); +m("\\red", "\\textcolor{##df0030}{#1}"); +m("\\green", "\\textcolor{##28ae7b}{#1}"); +m("\\gray", "\\textcolor{gray}{#1}"); +m("\\purple", "\\textcolor{##9d38bd}{#1}"); +m("\\blueA", "\\textcolor{##ccfaff}{#1}"); +m("\\blueB", "\\textcolor{##80f6ff}{#1}"); +m("\\blueC", "\\textcolor{##63d9ea}{#1}"); +m("\\blueD", "\\textcolor{##11accd}{#1}"); +m("\\blueE", "\\textcolor{##0c7f99}{#1}"); +m("\\tealA", "\\textcolor{##94fff5}{#1}"); +m("\\tealB", "\\textcolor{##26edd5}{#1}"); +m("\\tealC", "\\textcolor{##01d1c1}{#1}"); +m("\\tealD", "\\textcolor{##01a995}{#1}"); +m("\\tealE", "\\textcolor{##208170}{#1}"); +m("\\greenA", "\\textcolor{##b6ffb0}{#1}"); +m("\\greenB", "\\textcolor{##8af281}{#1}"); +m("\\greenC", "\\textcolor{##74cf70}{#1}"); +m("\\greenD", "\\textcolor{##1fab54}{#1}"); +m("\\greenE", "\\textcolor{##0d923f}{#1}"); +m("\\goldA", "\\textcolor{##ffd0a9}{#1}"); +m("\\goldB", "\\textcolor{##ffbb71}{#1}"); +m("\\goldC", "\\textcolor{##ff9c39}{#1}"); +m("\\goldD", "\\textcolor{##e07d10}{#1}"); +m("\\goldE", "\\textcolor{##a75a05}{#1}"); +m("\\redA", "\\textcolor{##fca9a9}{#1}"); +m("\\redB", "\\textcolor{##ff8482}{#1}"); +m("\\redC", "\\textcolor{##f9685d}{#1}"); +m("\\redD", "\\textcolor{##e84d39}{#1}"); +m("\\redE", "\\textcolor{##bc2612}{#1}"); +m("\\maroonA", "\\textcolor{##ffbde0}{#1}"); +m("\\maroonB", "\\textcolor{##ff92c6}{#1}"); +m("\\maroonC", "\\textcolor{##ed5fa6}{#1}"); +m("\\maroonD", "\\textcolor{##ca337c}{#1}"); +m("\\maroonE", "\\textcolor{##9e034e}{#1}"); +m("\\purpleA", "\\textcolor{##ddd7ff}{#1}"); +m("\\purpleB", "\\textcolor{##c6b9fc}{#1}"); +m("\\purpleC", "\\textcolor{##aa87ff}{#1}"); +m("\\purpleD", "\\textcolor{##7854ab}{#1}"); +m("\\purpleE", "\\textcolor{##543b78}{#1}"); +m("\\mintA", "\\textcolor{##f5f9e8}{#1}"); +m("\\mintB", "\\textcolor{##edf2df}{#1}"); +m("\\mintC", "\\textcolor{##e0e5cc}{#1}"); +m("\\grayA", "\\textcolor{##f6f7f7}{#1}"); +m("\\grayB", "\\textcolor{##f0f1f2}{#1}"); +m("\\grayC", "\\textcolor{##e3e5e6}{#1}"); +m("\\grayD", "\\textcolor{##d6d8da}{#1}"); +m("\\grayE", "\\textcolor{##babec2}{#1}"); +m("\\grayF", "\\textcolor{##888d93}{#1}"); +m("\\grayG", "\\textcolor{##626569}{#1}"); +m("\\grayH", "\\textcolor{##3b3e40}{#1}"); +m("\\grayI", "\\textcolor{##21242c}{#1}"); +m("\\kaBlue", "\\textcolor{##314453}{#1}"); +m("\\kaGreen", "\\textcolor{##71B307}{#1}"); +var la = { + "^": !0, + // Parser.js + _: !0, + // Parser.js + "\\limits": !0, + // Parser.js + "\\nolimits": !0 + // Parser.js +}; +class s4 { + constructor(e, t, a) { + this.settings = void 0, this.expansionCount = void 0, this.lexer = void 0, this.macros = void 0, this.stack = void 0, this.mode = void 0, this.settings = t, this.expansionCount = 0, this.feed(e), this.macros = new n4(i4, t.macros), this.mode = a, this.stack = []; + } + /** + * Feed a new input string to the same MacroExpander + * (with existing macros etc.). + */ + feed(e) { + this.lexer = new hr(e, this.settings); + } + /** + * Switches between "text" and "math" modes. + */ + switchMode(e) { + this.mode = e; + } + /** + * Start a new group nesting within all namespaces. + */ + beginGroup() { + this.macros.beginGroup(); + } + /** + * End current group nesting within all namespaces. + */ + endGroup() { + this.macros.endGroup(); + } + /** + * Ends all currently nested groups (if any), restoring values before the + * groups began. Useful in case of an error in the middle of parsing. + */ + endGroups() { + this.macros.endGroups(); + } + /** + * Returns the topmost token on the stack, without expanding it. + * Similar in behavior to TeX's `\futurelet`. + */ + future() { + return this.stack.length === 0 && this.pushToken(this.lexer.lex()), this.stack[this.stack.length - 1]; + } + /** + * Remove and return the next unexpanded token. + */ + popToken() { + return this.future(), this.stack.pop(); + } + /** + * Add a given token to the token stack. In particular, this get be used + * to put back a token returned from one of the other methods. + */ + pushToken(e) { + this.stack.push(e); + } + /** + * Append an array of tokens to the token stack. + */ + pushTokens(e) { + this.stack.push(...e); + } + /** + * Find an macro argument without expanding tokens and append the array of + * tokens to the token stack. Uses Token as a container for the result. + */ + scanArgument(e) { + var t, a, n; + if (e) { + if (this.consumeSpaces(), this.future().text !== "[") + return null; + t = this.popToken(), { + tokens: n, + end: a + } = this.consumeArg(["]"]); + } else + ({ + tokens: n, + start: t, + end: a + } = this.consumeArg()); + return this.pushToken(new f0("EOF", a.loc)), this.pushTokens(n), t.range(a, ""); + } + /** + * Consume all following space tokens, without expansion. + */ + consumeSpaces() { + for (; ; ) { + var e = this.future(); + if (e.text === " ") + this.stack.pop(); + else + break; + } + } + /** + * Consume an argument from the token stream, and return the resulting array + * of tokens and start/end token. + */ + consumeArg(e) { + var t = [], a = e && e.length > 0; + a || this.consumeSpaces(); + var n = this.future(), s, o = 0, h = 0; + do { + if (s = this.popToken(), t.push(s), s.text === "{") + ++o; + else if (s.text === "}") { + if (--o, o === -1) + throw new M("Extra }", s); + } else if (s.text === "EOF") + throw new M("Unexpected end of input in a macro argument, expected '" + (e && a ? e[h] : "}") + "'", s); + if (e && a) + if ((o === 0 || o === 1 && e[h] === "{") && s.text === e[h]) { + if (++h, h === e.length) { + t.splice(-h, h); + break; + } + } else + h = 0; + } while (o !== 0 || a); + return n.text === "{" && t[t.length - 1].text === "}" && (t.pop(), t.shift()), t.reverse(), { + tokens: t, + start: n, + end: s + }; + } + /** + * Consume the specified number of (delimited) arguments from the token + * stream and return the resulting array of arguments. + */ + consumeArgs(e, t) { + if (t) { + if (t.length !== e + 1) + throw new M("The length of delimiters doesn't match the number of args!"); + for (var a = t[0], n = 0; n < a.length; n++) { + var s = this.popToken(); + if (a[n] !== s.text) + throw new M("Use of the macro doesn't match its definition", s); + } + } + for (var o = [], h = 0; h < e; h++) + o.push(this.consumeArg(t && t[h + 1]).tokens); + return o; + } + /** + * Increment `expansionCount` by the specified amount. + * Throw an error if it exceeds `maxExpand`. + */ + countExpansion(e) { + if (this.expansionCount += e, this.expansionCount > this.settings.maxExpand) + throw new M("Too many expansions: infinite loop or need to increase maxExpand setting"); + } + /** + * Expand the next token only once if possible. + * + * If the token is expanded, the resulting tokens will be pushed onto + * the stack in reverse order, and the number of such tokens will be + * returned. This number might be zero or positive. + * + * If not, the return value is `false`, and the next token remains at the + * top of the stack. + * + * In either case, the next token will be on the top of the stack, + * or the stack will be empty (in case of empty expansion + * and no other tokens). + * + * Used to implement `expandAfterFuture` and `expandNextToken`. + * + * If expandableOnly, only expandable tokens are expanded and + * an undefined control sequence results in an error. + */ + expandOnce(e) { + var t = this.popToken(), a = t.text, n = t.noexpand ? null : this._getExpansion(a); + if (n == null || e && n.unexpandable) { + if (e && n == null && a[0] === "\\" && !this.isDefined(a)) + throw new M("Undefined control sequence: " + a); + return this.pushToken(t), !1; + } + this.countExpansion(1); + var s = n.tokens, o = this.consumeArgs(n.numArgs, n.delimiters); + if (n.numArgs) { + s = s.slice(); + for (var h = s.length - 1; h >= 0; --h) { + var c = s[h]; + if (c.text === "#") { + if (h === 0) + throw new M("Incomplete placeholder at end of macro body", c); + if (c = s[--h], c.text === "#") + s.splice(h + 1, 1); + else if (/^[1-9]$/.test(c.text)) + s.splice(h, 2, ...o[+c.text - 1]); + else + throw new M("Not a valid argument number", c); + } + } + } + return this.pushTokens(s), s.length; + } + /** + * Expand the next token only once (if possible), and return the resulting + * top token on the stack (without removing anything from the stack). + * Similar in behavior to TeX's `\expandafter\futurelet`. + * Equivalent to expandOnce() followed by future(). + */ + expandAfterFuture() { + return this.expandOnce(), this.future(); + } + /** + * Recursively expand first token, then return first non-expandable token. + */ + expandNextToken() { + for (; ; ) + if (this.expandOnce() === !1) { + var e = this.stack.pop(); + return e.treatAsRelax && (e.text = "\\relax"), e; + } + throw new Error(); + } + /** + * Fully expand the given macro name and return the resulting list of + * tokens, or return `undefined` if no such macro is defined. + */ + expandMacro(e) { + return this.macros.has(e) ? this.expandTokens([new f0(e)]) : void 0; + } + /** + * Fully expand the given token stream and return the resulting list of + * tokens. Note that the input tokens are in reverse order, but the + * output tokens are in forward order. + */ + expandTokens(e) { + var t = [], a = this.stack.length; + for (this.pushTokens(e); this.stack.length > a; ) + if (this.expandOnce(!0) === !1) { + var n = this.stack.pop(); + n.treatAsRelax && (n.noexpand = !1, n.treatAsRelax = !1), t.push(n); + } + return this.countExpansion(t.length), t; + } + /** + * Fully expand the given macro name and return the result as a string, + * or return `undefined` if no such macro is defined. + */ + expandMacroAsText(e) { + var t = this.expandMacro(e); + return t && t.map((a) => a.text).join(""); + } + /** + * Returns the expanded macro as a reversed array of tokens and a macro + * argument count. Or returns `null` if no such macro. + */ + _getExpansion(e) { + var t = this.macros.get(e); + if (t == null) + return t; + if (e.length === 1) { + var a = this.lexer.catcodes[e]; + if (a != null && a !== 13) + return; + } + var n = typeof t == "function" ? t(this) : t; + if (typeof n == "string") { + var s = 0; + if (n.indexOf("#") !== -1) + for (var o = n.replace(/##/g, ""); o.indexOf("#" + (s + 1)) !== -1; ) + ++s; + for (var h = new hr(n, this.settings), c = [], p = h.lex(); p.text !== "EOF"; ) + c.push(p), p = h.lex(); + c.reverse(); + var g = { + tokens: c, + numArgs: s + }; + return g; + } + return n; + } + /** + * Determine whether a command is currently "defined" (has some + * functionality), meaning that it's a macro (in the current group), + * a function, a symbol, or one of the special commands listed in + * `implicitCommands`. + */ + isDefined(e) { + return this.macros.has(e) || F0.hasOwnProperty(e) || $.math.hasOwnProperty(e) || $.text.hasOwnProperty(e) || la.hasOwnProperty(e); + } + /** + * Determine whether a command is expandable. + */ + isExpandable(e) { + var t = this.macros.get(e); + return t != null ? typeof t == "string" || typeof t == "function" || !t.unexpandable : F0.hasOwnProperty(e) && !F0[e].primitive; + } +} +var dr = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/, Me = Object.freeze({ + "₊": "+", + "₋": "-", + "₌": "=", + "₍": "(", + "₎": ")", + "₀": "0", + "₁": "1", + "₂": "2", + "₃": "3", + "₄": "4", + "₅": "5", + "₆": "6", + "₇": "7", + "₈": "8", + "₉": "9", + "ₐ": "a", + "ₑ": "e", + "ₕ": "h", + "ᵢ": "i", + "ⱼ": "j", + "ₖ": "k", + "ₗ": "l", + "ₘ": "m", + "ₙ": "n", + "ₒ": "o", + "ₚ": "p", + "ᵣ": "r", + "ₛ": "s", + "ₜ": "t", + "ᵤ": "u", + "ᵥ": "v", + "ₓ": "x", + "ᵦ": "β", + "ᵧ": "γ", + "ᵨ": "ρ", + "ᵩ": "ϕ", + "ᵪ": "χ", + "⁺": "+", + "⁻": "-", + "⁼": "=", + "⁽": "(", + "⁾": ")", + "⁰": "0", + "¹": "1", + "²": "2", + "³": "3", + "⁴": "4", + "⁵": "5", + "⁶": "6", + "⁷": "7", + "⁸": "8", + "⁹": "9", + "ᴬ": "A", + "ᴮ": "B", + "ᴰ": "D", + "ᴱ": "E", + "ᴳ": "G", + "ᴴ": "H", + "ᴵ": "I", + "ᴶ": "J", + "ᴷ": "K", + "ᴸ": "L", + "ᴹ": "M", + "ᴺ": "N", + "ᴼ": "O", + "ᴾ": "P", + "ᴿ": "R", + "ᵀ": "T", + "ᵁ": "U", + "ⱽ": "V", + "ᵂ": "W", + "ᵃ": "a", + "ᵇ": "b", + "ᶜ": "c", + "ᵈ": "d", + "ᵉ": "e", + "ᶠ": "f", + "ᵍ": "g", + ʰ: "h", + "ⁱ": "i", + ʲ: "j", + "ᵏ": "k", + ˡ: "l", + "ᵐ": "m", + ⁿ: "n", + "ᵒ": "o", + "ᵖ": "p", + ʳ: "r", + ˢ: "s", + "ᵗ": "t", + "ᵘ": "u", + "ᵛ": "v", + ʷ: "w", + ˣ: "x", + ʸ: "y", + "ᶻ": "z", + "ᵝ": "β", + "ᵞ": "γ", + "ᵟ": "δ", + "ᵠ": "ϕ", + "ᵡ": "χ", + "ᶿ": "θ" +}), rt = { + "́": { + text: "\\'", + math: "\\acute" + }, + "̀": { + text: "\\`", + math: "\\grave" + }, + "̈": { + text: '\\"', + math: "\\ddot" + }, + "̃": { + text: "\\~", + math: "\\tilde" + }, + "̄": { + text: "\\=", + math: "\\bar" + }, + "̆": { + text: "\\u", + math: "\\breve" + }, + "̌": { + text: "\\v", + math: "\\check" + }, + "̂": { + text: "\\^", + math: "\\hat" + }, + "̇": { + text: "\\.", + math: "\\dot" + }, + "̊": { + text: "\\r", + math: "\\mathring" + }, + "̋": { + text: "\\H" + }, + "̧": { + text: "\\c" + } +}, fr = { + á: "á", + à: "à", + ä: "ä", + ǟ: "ǟ", + ã: "ã", + ā: "ā", + ă: "ă", + ắ: "ắ", + ằ: "ằ", + ẵ: "ẵ", + ǎ: "ǎ", + â: "â", + ấ: "ấ", + ầ: "ầ", + ẫ: "ẫ", + ȧ: "ȧ", + ǡ: "ǡ", + å: "å", + ǻ: "ǻ", + ḃ: "ḃ", + ć: "ć", + ḉ: "ḉ", + č: "č", + ĉ: "ĉ", + ċ: "ċ", + ç: "ç", + ď: "ď", + ḋ: "ḋ", + ḑ: "ḑ", + é: "é", + è: "è", + ë: "ë", + ẽ: "ẽ", + ē: "ē", + ḗ: "ḗ", + ḕ: "ḕ", + ĕ: "ĕ", + ḝ: "ḝ", + ě: "ě", + ê: "ê", + ế: "ế", + ề: "ề", + ễ: "ễ", + ė: "ė", + ȩ: "ȩ", + ḟ: "ḟ", + ǵ: "ǵ", + ḡ: "ḡ", + ğ: "ğ", + ǧ: "ǧ", + ĝ: "ĝ", + ġ: "ġ", + ģ: "ģ", + ḧ: "ḧ", + ȟ: "ȟ", + ĥ: "ĥ", + ḣ: "ḣ", + ḩ: "ḩ", + í: "í", + ì: "ì", + ï: "ï", + ḯ: "ḯ", + ĩ: "ĩ", + ī: "ī", + ĭ: "ĭ", + ǐ: "ǐ", + î: "î", + ǰ: "ǰ", + ĵ: "ĵ", + ḱ: "ḱ", + ǩ: "ǩ", + ķ: "ķ", + ĺ: "ĺ", + ľ: "ľ", + ļ: "ļ", + ḿ: "ḿ", + ṁ: "ṁ", + ń: "ń", + ǹ: "ǹ", + ñ: "ñ", + ň: "ň", + ṅ: "ṅ", + ņ: "ņ", + ó: "ó", + ò: "ò", + ö: "ö", + ȫ: "ȫ", + õ: "õ", + ṍ: "ṍ", + ṏ: "ṏ", + ȭ: "ȭ", + ō: "ō", + ṓ: "ṓ", + ṑ: "ṑ", + ŏ: "ŏ", + ǒ: "ǒ", + ô: "ô", + ố: "ố", + ồ: "ồ", + ỗ: "ỗ", + ȯ: "ȯ", + ȱ: "ȱ", + ő: "ő", + ṕ: "ṕ", + ṗ: "ṗ", + ŕ: "ŕ", + ř: "ř", + ṙ: "ṙ", + ŗ: "ŗ", + ś: "ś", + ṥ: "ṥ", + š: "š", + ṧ: "ṧ", + ŝ: "ŝ", + ṡ: "ṡ", + ş: "ş", + ẗ: "ẗ", + ť: "ť", + ṫ: "ṫ", + ţ: "ţ", + ú: "ú", + ù: "ù", + ü: "ü", + ǘ: "ǘ", + ǜ: "ǜ", + ǖ: "ǖ", + ǚ: "ǚ", + ũ: "ũ", + ṹ: "ṹ", + ū: "ū", + ṻ: "ṻ", + ŭ: "ŭ", + ǔ: "ǔ", + û: "û", + ů: "ů", + ű: "ű", + ṽ: "ṽ", + ẃ: "ẃ", + ẁ: "ẁ", + ẅ: "ẅ", + ŵ: "ŵ", + ẇ: "ẇ", + ẘ: "ẘ", + ẍ: "ẍ", + ẋ: "ẋ", + ý: "ý", + ỳ: "ỳ", + ÿ: "ÿ", + ỹ: "ỹ", + ȳ: "ȳ", + ŷ: "ŷ", + ẏ: "ẏ", + ẙ: "ẙ", + ź: "ź", + ž: "ž", + ẑ: "ẑ", + ż: "ż", + Á: "Á", + À: "À", + Ä: "Ä", + Ǟ: "Ǟ", + Ã: "Ã", + Ā: "Ā", + Ă: "Ă", + Ắ: "Ắ", + Ằ: "Ằ", + Ẵ: "Ẵ", + Ǎ: "Ǎ", + Â: "Â", + Ấ: "Ấ", + Ầ: "Ầ", + Ẫ: "Ẫ", + Ȧ: "Ȧ", + Ǡ: "Ǡ", + Å: "Å", + Ǻ: "Ǻ", + Ḃ: "Ḃ", + Ć: "Ć", + Ḉ: "Ḉ", + Č: "Č", + Ĉ: "Ĉ", + Ċ: "Ċ", + Ç: "Ç", + Ď: "Ď", + Ḋ: "Ḋ", + Ḑ: "Ḑ", + É: "É", + È: "È", + Ë: "Ë", + Ẽ: "Ẽ", + Ē: "Ē", + Ḗ: "Ḗ", + Ḕ: "Ḕ", + Ĕ: "Ĕ", + Ḝ: "Ḝ", + Ě: "Ě", + Ê: "Ê", + Ế: "Ế", + Ề: "Ề", + Ễ: "Ễ", + Ė: "Ė", + Ȩ: "Ȩ", + Ḟ: "Ḟ", + Ǵ: "Ǵ", + Ḡ: "Ḡ", + Ğ: "Ğ", + Ǧ: "Ǧ", + Ĝ: "Ĝ", + Ġ: "Ġ", + Ģ: "Ģ", + Ḧ: "Ḧ", + Ȟ: "Ȟ", + Ĥ: "Ĥ", + Ḣ: "Ḣ", + Ḩ: "Ḩ", + Í: "Í", + Ì: "Ì", + Ï: "Ï", + Ḯ: "Ḯ", + Ĩ: "Ĩ", + Ī: "Ī", + Ĭ: "Ĭ", + Ǐ: "Ǐ", + Î: "Î", + İ: "İ", + Ĵ: "Ĵ", + Ḱ: "Ḱ", + Ǩ: "Ǩ", + Ķ: "Ķ", + Ĺ: "Ĺ", + Ľ: "Ľ", + Ļ: "Ļ", + Ḿ: "Ḿ", + Ṁ: "Ṁ", + Ń: "Ń", + Ǹ: "Ǹ", + Ñ: "Ñ", + Ň: "Ň", + Ṅ: "Ṅ", + Ņ: "Ņ", + Ó: "Ó", + Ò: "Ò", + Ö: "Ö", + Ȫ: "Ȫ", + Õ: "Õ", + Ṍ: "Ṍ", + Ṏ: "Ṏ", + Ȭ: "Ȭ", + Ō: "Ō", + Ṓ: "Ṓ", + Ṑ: "Ṑ", + Ŏ: "Ŏ", + Ǒ: "Ǒ", + Ô: "Ô", + Ố: "Ố", + Ồ: "Ồ", + Ỗ: "Ỗ", + Ȯ: "Ȯ", + Ȱ: "Ȱ", + Ő: "Ő", + Ṕ: "Ṕ", + Ṗ: "Ṗ", + Ŕ: "Ŕ", + Ř: "Ř", + Ṙ: "Ṙ", + Ŗ: "Ŗ", + Ś: "Ś", + Ṥ: "Ṥ", + Š: "Š", + Ṧ: "Ṧ", + Ŝ: "Ŝ", + Ṡ: "Ṡ", + Ş: "Ş", + Ť: "Ť", + Ṫ: "Ṫ", + Ţ: "Ţ", + Ú: "Ú", + Ù: "Ù", + Ü: "Ü", + Ǘ: "Ǘ", + Ǜ: "Ǜ", + Ǖ: "Ǖ", + Ǚ: "Ǚ", + Ũ: "Ũ", + Ṹ: "Ṹ", + Ū: "Ū", + Ṻ: "Ṻ", + Ŭ: "Ŭ", + Ǔ: "Ǔ", + Û: "Û", + Ů: "Ů", + Ű: "Ű", + Ṽ: "Ṽ", + Ẃ: "Ẃ", + Ẁ: "Ẁ", + Ẅ: "Ẅ", + Ŵ: "Ŵ", + Ẇ: "Ẇ", + Ẍ: "Ẍ", + Ẋ: "Ẋ", + Ý: "Ý", + Ỳ: "Ỳ", + Ÿ: "Ÿ", + Ỹ: "Ỹ", + Ȳ: "Ȳ", + Ŷ: "Ŷ", + Ẏ: "Ẏ", + Ź: "Ź", + Ž: "Ž", + Ẑ: "Ẑ", + Ż: "Ż", + ά: "ά", + ὰ: "ὰ", + ᾱ: "ᾱ", + ᾰ: "ᾰ", + έ: "έ", + ὲ: "ὲ", + ή: "ή", + ὴ: "ὴ", + ί: "ί", + ὶ: "ὶ", + ϊ: "ϊ", + ΐ: "ΐ", + ῒ: "ῒ", + ῑ: "ῑ", + ῐ: "ῐ", + ό: "ό", + ὸ: "ὸ", + ύ: "ύ", + ὺ: "ὺ", + ϋ: "ϋ", + ΰ: "ΰ", + ῢ: "ῢ", + ῡ: "ῡ", + ῠ: "ῠ", + ώ: "ώ", + ὼ: "ὼ", + Ύ: "Ύ", + Ὺ: "Ὺ", + Ϋ: "Ϋ", + Ῡ: "Ῡ", + Ῠ: "Ῠ", + Ώ: "Ώ", + Ὼ: "Ὼ" +}; +class Fe { + constructor(e, t) { + this.mode = void 0, this.gullet = void 0, this.settings = void 0, this.leftrightDepth = void 0, this.nextToken = void 0, this.mode = "math", this.gullet = new s4(e, t, this.mode), this.settings = t, this.leftrightDepth = 0; + } + /** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + */ + expect(e, t) { + if (t === void 0 && (t = !0), this.fetch().text !== e) + throw new M("Expected '" + e + "', got '" + this.fetch().text + "'", this.fetch()); + t && this.consume(); + } + /** + * Discards the current lookahead token, considering it consumed. + */ + consume() { + this.nextToken = null; + } + /** + * Return the current lookahead token, or if there isn't one (at the + * beginning, or if the previous lookahead token was consume()d), + * fetch the next token as the new lookahead token and return it. + */ + fetch() { + return this.nextToken == null && (this.nextToken = this.gullet.expandNextToken()), this.nextToken; + } + /** + * Switches between "text" and "math" modes. + */ + switchMode(e) { + this.mode = e, this.gullet.switchMode(e); + } + /** + * Main parsing function, which parses an entire input. + */ + parse() { + this.settings.globalGroup || this.gullet.beginGroup(), this.settings.colorIsTextColor && this.gullet.macros.set("\\color", "\\textcolor"); + try { + var e = this.parseExpression(!1); + return this.expect("EOF"), this.settings.globalGroup || this.gullet.endGroup(), e; + } finally { + this.gullet.endGroups(); + } + } + /** + * Fully parse a separate sequence of tokens as a separate job. + * Tokens should be specified in reverse order, as in a MacroDefinition. + */ + subparse(e) { + var t = this.nextToken; + this.consume(), this.gullet.pushToken(new f0("}")), this.gullet.pushTokens(e); + var a = this.parseExpression(!1); + return this.expect("}"), this.nextToken = t, a; + } + /** + * Parses an "expression", which is a list of atoms. + * + * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This + * happens when functions have higher precedence han infix + * nodes in implicit parses. + * + * `breakOnTokenText`: The text of the token that the expression should end + * with, or `null` if something else should end the + * expression. + */ + parseExpression(e, t) { + for (var a = []; ; ) { + this.mode === "math" && this.consumeSpaces(); + var n = this.fetch(); + if (Fe.endOfExpression.indexOf(n.text) !== -1 || t && n.text === t || e && F0[n.text] && F0[n.text].infix) + break; + var s = this.parseAtom(t); + if (s) { + if (s.type === "internal") + continue; + } else + break; + a.push(s); + } + return this.mode === "text" && this.formLigatures(a), this.handleInfixNodes(a); + } + /** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + */ + handleInfixNodes(e) { + for (var t = -1, a, n = 0; n < e.length; n++) + if (e[n].type === "infix") { + if (t !== -1) + throw new M("only one infix operator per group", e[n].token); + t = n, a = e[n].replaceWith; + } + if (t !== -1 && a) { + var s, o, h = e.slice(0, t), c = e.slice(t + 1); + h.length === 1 && h[0].type === "ordgroup" ? s = h[0] : s = { + type: "ordgroup", + mode: this.mode, + body: h + }, c.length === 1 && c[0].type === "ordgroup" ? o = c[0] : o = { + type: "ordgroup", + mode: this.mode, + body: c + }; + var p; + return a === "\\\\abovefrac" ? p = this.callFunction(a, [s, e[t], o], []) : p = this.callFunction(a, [s, o], []), [p]; + } else + return e; + } + /** + * Handle a subscript or superscript with nice errors. + */ + handleSupSubscript(e) { + var t = this.fetch(), a = t.text; + this.consume(), this.consumeSpaces(); + var n = this.parseGroup(e); + if (!n) + throw new M("Expected group after '" + a + "'", t); + return n; + } + /** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + formatUnsupportedCmd(e) { + for (var t = [], a = 0; a < e.length; a++) + t.push({ + type: "textord", + mode: "text", + text: e[a] + }); + var n = { + type: "text", + mode: this.mode, + body: t + }, s = { + type: "color", + mode: this.mode, + color: this.settings.errorColor, + body: [n] + }; + return s; + } + /** + * Parses a group with optional super/subscripts. + */ + parseAtom(e) { + var t = this.parseGroup("atom", e); + if (this.mode === "text") + return t; + for (var a, n; ; ) { + this.consumeSpaces(); + var s = this.fetch(); + if (s.text === "\\limits" || s.text === "\\nolimits") { + if (t && t.type === "op") { + var o = s.text === "\\limits"; + t.limits = o, t.alwaysHandleSupSub = !0; + } else if (t && t.type === "operatorname") + t.alwaysHandleSupSub && (t.limits = s.text === "\\limits"); + else + throw new M("Limit controls must follow a math operator", s); + this.consume(); + } else if (s.text === "^") { + if (a) + throw new M("Double superscript", s); + a = this.handleSupSubscript("superscript"); + } else if (s.text === "_") { + if (n) + throw new M("Double subscript", s); + n = this.handleSupSubscript("subscript"); + } else if (s.text === "'") { + if (a) + throw new M("Double superscript", s); + var h = { + type: "textord", + mode: this.mode, + text: "\\prime" + }, c = [h]; + for (this.consume(); this.fetch().text === "'"; ) + c.push(h), this.consume(); + this.fetch().text === "^" && c.push(this.handleSupSubscript("superscript")), a = { + type: "ordgroup", + mode: this.mode, + body: c + }; + } else if (Me[s.text]) { + var p = dr.test(s.text), g = []; + for (g.push(new f0(Me[s.text])), this.consume(); ; ) { + var y = this.fetch().text; + if (!Me[y] || dr.test(y) !== p) + break; + g.unshift(new f0(Me[y])), this.consume(); + } + var w = this.subparse(g); + p ? n = { + type: "ordgroup", + mode: "math", + body: w + } : a = { + type: "ordgroup", + mode: "math", + body: w + }; + } else + break; + } + return a || n ? { + type: "supsub", + mode: this.mode, + base: t, + sup: a, + sub: n + } : t; + } + /** + * Parses an entire function, including its base and all of its arguments. + */ + parseFunction(e, t) { + var a = this.fetch(), n = a.text, s = F0[n]; + if (!s) + return null; + if (this.consume(), t && t !== "atom" && !s.allowedInArgument) + throw new M("Got function '" + n + "' with no arguments" + (t ? " as " + t : ""), a); + if (this.mode === "text" && !s.allowedInText) + throw new M("Can't use function '" + n + "' in text mode", a); + if (this.mode === "math" && s.allowedInMath === !1) + throw new M("Can't use function '" + n + "' in math mode", a); + var { + args: o, + optArgs: h + } = this.parseArguments(n, s); + return this.callFunction(n, o, h, a, e); + } + /** + * Call a function handler with a suitable context and arguments. + */ + callFunction(e, t, a, n, s) { + var o = { + funcName: e, + parser: this, + token: n, + breakOnTokenText: s + }, h = F0[e]; + if (h && h.handler) + return h.handler(o, t, a); + throw new M("No function handler for " + e); + } + /** + * Parses the arguments of a function or environment + */ + parseArguments(e, t) { + var a = t.numArgs + t.numOptionalArgs; + if (a === 0) + return { + args: [], + optArgs: [] + }; + for (var n = [], s = [], o = 0; o < a; o++) { + var h = t.argTypes && t.argTypes[o], c = o < t.numOptionalArgs; + (t.primitive && h == null || // \sqrt expands into primitive if optional argument doesn't exist + t.type === "sqrt" && o === 1 && s[0] == null) && (h = "primitive"); + var p = this.parseGroupOfType("argument to '" + e + "'", h, c); + if (c) + s.push(p); + else if (p != null) + n.push(p); + else + throw new M("Null argument, please report this as a bug"); + } + return { + args: n, + optArgs: s + }; + } + /** + * Parses a group when the mode is changing. + */ + parseGroupOfType(e, t, a) { + switch (t) { + case "color": + return this.parseColorGroup(a); + case "size": + return this.parseSizeGroup(a); + case "url": + return this.parseUrlGroup(a); + case "math": + case "text": + return this.parseArgumentGroup(a, t); + case "hbox": { + var n = this.parseArgumentGroup(a, "text"); + return n != null ? { + type: "styling", + mode: n.mode, + body: [n], + style: "text" + // simulate \textstyle + } : null; + } + case "raw": { + var s = this.parseStringGroup("raw", a); + return s != null ? { + type: "raw", + mode: "text", + string: s.text + } : null; + } + case "primitive": { + if (a) + throw new M("A primitive argument cannot be optional"); + var o = this.parseGroup(e); + if (o == null) + throw new M("Expected group as " + e, this.fetch()); + return o; + } + case "original": + case null: + case void 0: + return this.parseArgumentGroup(a); + default: + throw new M("Unknown group type as " + e, this.fetch()); + } + } + /** + * Discard any space tokens, fetching the next non-space token. + */ + consumeSpaces() { + for (; this.fetch().text === " "; ) + this.consume(); + } + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + */ + parseStringGroup(e, t) { + var a = this.gullet.scanArgument(t); + if (a == null) + return null; + for (var n = "", s; (s = this.fetch()).text !== "EOF"; ) + n += s.text, this.consume(); + return this.consume(), a.text = n, a; + } + /** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + */ + parseRegexGroup(e, t) { + for (var a = this.fetch(), n = a, s = "", o; (o = this.fetch()).text !== "EOF" && e.test(s + o.text); ) + n = o, s += n.text, this.consume(); + if (s === "") + throw new M("Invalid " + t + ": '" + a.text + "'", a); + return a.range(n, s); + } + /** + * Parses a color description. + */ + parseColorGroup(e) { + var t = this.parseStringGroup("color", e); + if (t == null) + return null; + var a = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text); + if (!a) + throw new M("Invalid color: '" + t.text + "'", t); + var n = a[0]; + return /^[0-9a-f]{6}$/i.test(n) && (n = "#" + n), { + type: "color-token", + mode: this.mode, + color: n + }; + } + /** + * Parses a size specification, consisting of magnitude and unit. + */ + parseSizeGroup(e) { + var t, a = !1; + if (this.gullet.consumeSpaces(), !e && this.gullet.future().text !== "{" ? t = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size") : t = this.parseStringGroup("size", e), !t) + return null; + !e && t.text.length === 0 && (t.text = "0pt", a = !0); + var n = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text); + if (!n) + throw new M("Invalid size: '" + t.text + "'", t); + var s = { + number: +(n[1] + n[2]), + // sign + magnitude, cast to number + unit: n[3] + }; + if (!gr(s)) + throw new M("Invalid unit: '" + s.unit + "'", t); + return { + type: "size", + mode: this.mode, + value: s, + isBlank: a + }; + } + /** + * Parses an URL, checking escaped letters and allowed protocols, + * and setting the catcode of % as an active character (as in \hyperref). + */ + parseUrlGroup(e) { + this.gullet.lexer.setCatcode("%", 13), this.gullet.lexer.setCatcode("~", 12); + var t = this.parseStringGroup("url", e); + if (this.gullet.lexer.setCatcode("%", 14), this.gullet.lexer.setCatcode("~", 13), t == null) + return null; + var a = t.text.replace(/\\([#$%&~_^{}])/g, "$1"); + return { + type: "url", + mode: this.mode, + url: a + }; + } + /** + * Parses an argument with the mode specified. + */ + parseArgumentGroup(e, t) { + var a = this.gullet.scanArgument(e); + if (a == null) + return null; + var n = this.mode; + t && this.switchMode(t), this.gullet.beginGroup(); + var s = this.parseExpression(!1, "EOF"); + this.expect("EOF"), this.gullet.endGroup(); + var o = { + type: "ordgroup", + mode: this.mode, + loc: a.loc, + body: s + }; + return t && this.switchMode(n), o; + } + /** + * Parses an ordinary group, which is either a single nucleus (like "x") + * or an expression in braces (like "{x+y}") or an implicit group, a group + * that starts at the current position, and ends right before a higher explicit + * group ends, or at EOF. + */ + parseGroup(e, t) { + var a = this.fetch(), n = a.text, s; + if (n === "{" || n === "\\begingroup") { + this.consume(); + var o = n === "{" ? "}" : "\\endgroup"; + this.gullet.beginGroup(); + var h = this.parseExpression(!1, o), c = this.fetch(); + this.expect(o), this.gullet.endGroup(), s = { + type: "ordgroup", + mode: this.mode, + loc: u0.range(a, c), + body: h, + // A group formed by \begingroup...\endgroup is a semi-simple group + // which doesn't affect spacing in math mode, i.e., is transparent. + // https://tex.stackexchange.com/questions/1930/when-should-one- + // use-begingroup-instead-of-bgroup + semisimple: n === "\\begingroup" || void 0 + }; + } else if (s = this.parseFunction(t, e) || this.parseSymbol(), s == null && n[0] === "\\" && !la.hasOwnProperty(n)) { + if (this.settings.throwOnError) + throw new M("Undefined control sequence: " + n, a); + s = this.formatUnsupportedCmd(n), this.consume(); + } + return s; + } + /** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * The group will be modified in place. + */ + formLigatures(e) { + for (var t = e.length - 1, a = 0; a < t; ++a) { + var n = e[a], s = n.text; + s === "-" && e[a + 1].text === "-" && (a + 1 < t && e[a + 2].text === "-" ? (e.splice(a, 3, { + type: "textord", + mode: "text", + loc: u0.range(n, e[a + 2]), + text: "---" + }), t -= 2) : (e.splice(a, 2, { + type: "textord", + mode: "text", + loc: u0.range(n, e[a + 1]), + text: "--" + }), t -= 1)), (s === "'" || s === "`") && e[a + 1].text === s && (e.splice(a, 2, { + type: "textord", + mode: "text", + loc: u0.range(n, e[a + 1]), + text: s + s + }), t -= 1); + } + } + /** + * Parse a single symbol out of the string. Here, we handle single character + * symbols and special functions like \verb. + */ + parseSymbol() { + var e = this.fetch(), t = e.text; + if (/^\\verb[^a-zA-Z]/.test(t)) { + this.consume(); + var a = t.slice(5), n = a.charAt(0) === "*"; + if (n && (a = a.slice(1)), a.length < 2 || a.charAt(0) !== a.slice(-1)) + throw new M(`\\verb assertion failed -- + please report what input caused this bug`); + return a = a.slice(1, -1), { + type: "verb", + mode: "text", + body: a, + star: n + }; + } + fr.hasOwnProperty(t[0]) && !$[this.mode][t[0]] && (this.settings.strict && this.mode === "math" && this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + t[0] + '" used in math mode', e), t = fr[t[0]] + t.slice(1)); + var s = r4.exec(t); + s && (t = t.substring(0, s.index), t === "i" ? t = "ı" : t === "j" && (t = "ȷ")); + var o; + if ($[this.mode][t]) { + this.settings.strict && this.mode === "math" && st.indexOf(t) >= 0 && this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + t[0] + '" used in math mode', e); + var h = $[this.mode][t].group, c = u0.range(e), p; + if (ja.hasOwnProperty(h)) { + var g = h; + p = { + type: "atom", + mode: this.mode, + family: g, + loc: c, + text: t + }; + } else + p = { + type: h, + mode: this.mode, + loc: c, + text: t + }; + o = p; + } else if (t.charCodeAt(0) >= 128) + this.settings.strict && (vr(t.charCodeAt(0)) ? this.mode === "math" && this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + t[0] + '" used in math mode', e) : this.settings.reportNonstrict("unknownSymbol", 'Unrecognized Unicode character "' + t[0] + '"' + (" (" + t.charCodeAt(0) + ")"), e)), o = { + type: "textord", + mode: "text", + loc: u0.range(e), + text: t + }; + else + return null; + if (this.consume(), s) + for (var y = 0; y < s[0].length; y++) { + var w = s[0][y]; + if (!rt[w]) + throw new M("Unknown accent ' " + w + "'", e); + var x = rt[w][this.mode] || rt[w].text; + if (!x) + throw new M("Accent " + w + " unsupported in " + this.mode + " mode", e); + o = { + type: "accent", + mode: this.mode, + loc: u0.range(e), + label: x, + isStretchy: !1, + isShifty: !0, + // $FlowFixMe + base: o + }; + } + return o; + } +} +Fe.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"]; +var Ct = function(e, t) { + if (!(typeof e == "string" || e instanceof String)) + throw new TypeError("KaTeX can only parse string typed expression"); + var a = new Fe(e, t); + delete a.gullet.macros.current["\\df@tag"]; + var n = a.parse(); + if (delete a.gullet.macros.current["\\current@color"], delete a.gullet.macros.current["\\color"], a.gullet.macros.get("\\df@tag")) { + if (!t.displayMode) + throw new M("\\tag works only in display equations"); + n = [{ + type: "tag", + mode: "text", + body: n, + tag: a.subparse([new f0("\\df@tag")]) + }]; + } + return n; +}, oa = function(e, t, a) { + t.textContent = ""; + var n = Nt(e, a).toNode(); + t.appendChild(n); +}; +typeof document != "undefined" && document.compatMode !== "CSS1Compat" && (typeof console != "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."), oa = function() { + throw new M("KaTeX doesn't work in quirks mode."); +}); +var l4 = function(e, t) { + var a = Nt(e, t).toMarkup(); + return a; +}, o4 = function(e, t) { + var a = new ct(t); + return Ct(e, a); +}, ua = function(e, t, a) { + if (a.throwOnError || !(e instanceof M)) + throw e; + var n = b.makeSpan(["katex-error"], [new p0(t)]); + return n.setAttribute("title", e.toString()), n.setAttribute("style", "color:" + a.errorColor), n; +}, Nt = function(e, t) { + var a = new ct(t); + try { + var n = Ct(e, a); + return g1(n, e, a); + } catch (s) { + return ua(s, e, a); + } +}, u4 = function(e, t) { + var a = new ct(t); + try { + var n = Ct(e, a); + return b1(n, e, a); + } catch (s) { + return ua(s, e, a); + } +}, h4 = { + /** + * Current KaTeX version + */ + version: "0.16.10", + /** + * Renders the given LaTeX into an HTML+MathML combination, and adds + * it as a child to the specified DOM node. + */ + render: oa, + /** + * Renders the given LaTeX into an HTML+MathML combination string, + * for sending to the client. + */ + renderToString: l4, + /** + * KaTeX error, usually during parsing. + */ + ParseError: M, + /** + * The shema of Settings + */ + SETTINGS_SCHEMA: ze, + /** + * Parses the given LaTeX into KaTeX's internal parse tree structure, + * without rendering to HTML or MathML. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __parse: o4, + /** + * Renders the given LaTeX into an HTML+MathML internal DOM tree + * representation, without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToDomTree: Nt, + /** + * Renders the given LaTeX into an HTML internal DOM tree representation, + * without MathML and without flattening that representation to a string. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __renderToHTMLTree: u4, + /** + * extends internal font metrics object with a new object + * each key in the new object represents a font name + */ + __setFontMetrics: Ga, + /** + * adds a new symbol to builtin symbols table + */ + __defineSymbol: i, + /** + * adds a new function to builtin function list, + * which directly produce parse tree elements + * and have their own html/mathml builders + */ + __defineFunction: B, + /** + * adds a new macro to builtin macro list + */ + __defineMacro: m, + /** + * Expose the dom tree node types, which can be useful for type checking nodes. + * + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __domTree: { + Span: he, + Anchor: pt, + SymbolNode: p0, + SvgNode: D0, + PathNode: P0, + LineNode: it + } +}; +export { + h4 as default +}; diff --git a/client/packages/lowcoder/public/package/519a1dac.js b/client/packages/lowcoder/public/package/519a1dac.js new file mode 100644 index 000000000..2cc71baa2 --- /dev/null +++ b/client/packages/lowcoder/public/package/519a1dac.js @@ -0,0 +1,1269 @@ +var ve = Object.defineProperty, Ne = Object.defineProperties; +var ke = Object.getOwnPropertyDescriptors; +var ue = Object.getOwnPropertySymbols; +var Ie = Object.prototype.hasOwnProperty, Oe = Object.prototype.propertyIsEnumerable; +var he = (e, a, l) => a in e ? ve(e, a, { enumerable: !0, configurable: !0, writable: !0, value: l }) : e[a] = l, V = (e, a) => { + for (var l in a || (a = {})) + Ie.call(a, l) && he(e, l, a[l]); + if (ue) + for (var l of ue(a)) + Oe.call(a, l) && he(e, l, a[l]); + return e; +}, U = (e, a) => Ne(e, ke(a)); +var K = (e, a, l) => new Promise((u, n) => { + var p = (f) => { + try { + b(l.next(f)); + } catch (g) { + n(g); + } + }, o = (f) => { + try { + b(l.throw(f)); + } catch (g) { + n(g); + } + }, b = (f) => f.done ? u(f.value) : Promise.resolve(f.value).then(p, o); + b((l = l.apply(e, a)).next()); +}); +import { e as Te, _ as ne, j as J, k as ze, l as S, H as Ce, D as Ae, q as Re } from "./08856db2.js"; +import { c as Be } from "./289514c9.js"; +import { i as Pe, c as Fe, b as Ke, d as Me, a as xe, p as Ye } from "./691304fa.js"; +import { G as We } from "./4504d077.js"; +import { o as je } from "./92e85b65.js"; +import { s as Ve } from "./2ff7471d.js"; +import { c as Ue } from "./85051678.js"; +import "./f69b998c.js"; +import "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +import "./f9637058.js"; +var de, ge, ie = function() { + var e = function(D, c, s, i) { + for (s = s || {}, i = D.length; i--; s[D[i]] = c) + ; + return s; + }, a = [1, 7], l = [1, 13], u = [1, 14], n = [1, 15], p = [1, 19], o = [1, 16], b = [1, 17], f = [1, 18], g = [8, 30], x = [8, 21, 28, 29, 30, 31, 32, 40, 44, 47], y = [1, 23], T = [1, 24], v = [8, 15, 16, 21, 28, 29, 30, 31, 32, 40, 44, 47], N = [8, 15, 16, 21, 27, 28, 29, 30, 31, 32, 40, 44, 47], E = [1, 49], L = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, spaceLines: 3, SPACELINE: 4, NL: 5, separator: 6, SPACE: 7, EOF: 8, start: 9, BLOCK_DIAGRAM_KEY: 10, document: 11, stop: 12, statement: 13, link: 14, LINK: 15, START_LINK: 16, LINK_LABEL: 17, STR: 18, nodeStatement: 19, columnsStatement: 20, SPACE_BLOCK: 21, blockStatement: 22, classDefStatement: 23, cssClassStatement: 24, styleStatement: 25, node: 26, SIZE: 27, COLUMNS: 28, "id-block": 29, end: 30, block: 31, NODE_ID: 32, nodeShapeNLabel: 33, dirList: 34, DIR: 35, NODE_DSTART: 36, NODE_DEND: 37, BLOCK_ARROW_START: 38, BLOCK_ARROW_END: 39, classDef: 40, CLASSDEF_ID: 41, CLASSDEF_STYLEOPTS: 42, DEFAULT: 43, class: 44, CLASSENTITY_IDS: 45, STYLECLASS: 46, style: 47, STYLE_ENTITY_IDS: 48, STYLE_DEFINITION_DATA: 49, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "SPACELINE", 5: "NL", 7: "SPACE", 8: "EOF", 10: "BLOCK_DIAGRAM_KEY", 15: "LINK", 16: "START_LINK", 17: "LINK_LABEL", 18: "STR", 21: "SPACE_BLOCK", 27: "SIZE", 28: "COLUMNS", 29: "id-block", 30: "end", 31: "block", 32: "NODE_ID", 35: "DIR", 36: "NODE_DSTART", 37: "NODE_DEND", 38: "BLOCK_ARROW_START", 39: "BLOCK_ARROW_END", 40: "classDef", 41: "CLASSDEF_ID", 42: "CLASSDEF_STYLEOPTS", 43: "DEFAULT", 44: "class", 45: "CLASSENTITY_IDS", 46: "STYLECLASS", 47: "style", 48: "STYLE_ENTITY_IDS", 49: "STYLE_DEFINITION_DATA" }, + productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [34, 1], [34, 2], [33, 3], [33, 4], [23, 3], [23, 3], [24, 3], [25, 3]], + performAction: function(c, s, i, h, d, t, m) { + var r = t.length - 1; + switch (d) { + case 4: + h.getLogger().debug("Rule: separator (NL) "); + break; + case 5: + h.getLogger().debug("Rule: separator (Space) "); + break; + case 6: + h.getLogger().debug("Rule: separator (EOF) "); + break; + case 7: + h.getLogger().debug("Rule: hierarchy: ", t[r - 1]), h.setHierarchy(t[r - 1]); + break; + case 8: + h.getLogger().debug("Stop NL "); + break; + case 9: + h.getLogger().debug("Stop EOF "); + break; + case 10: + h.getLogger().debug("Stop NL2 "); + break; + case 11: + h.getLogger().debug("Stop EOF2 "); + break; + case 12: + h.getLogger().debug("Rule: statement: ", t[r]), typeof t[r].length == "number" ? this.$ = t[r] : this.$ = [t[r]]; + break; + case 13: + h.getLogger().debug("Rule: statement #2: ", t[r - 1]), this.$ = [t[r - 1]].concat(t[r]); + break; + case 14: + h.getLogger().debug("Rule: link: ", t[r], c), this.$ = { edgeTypeStr: t[r], label: "" }; + break; + case 15: + h.getLogger().debug("Rule: LABEL link: ", t[r - 3], t[r - 1], t[r]), this.$ = { edgeTypeStr: t[r], label: t[r - 1] }; + break; + case 18: + const R = parseInt(t[r]), W = h.generateId(); + this.$ = { id: W, type: "space", label: "", width: R, children: [] }; + break; + case 23: + h.getLogger().debug("Rule: (nodeStatement link node) ", t[r - 2], t[r - 1], t[r], " typestr: ", t[r - 1].edgeTypeStr); + const F = h.edgeStrToEdgeData(t[r - 1].edgeTypeStr); + this.$ = [ + { id: t[r - 2].id, label: t[r - 2].label, type: t[r - 2].type, directions: t[r - 2].directions }, + { id: t[r - 2].id + "-" + t[r].id, start: t[r - 2].id, end: t[r].id, label: t[r - 1].label, type: "edge", directions: t[r].directions, arrowTypeEnd: F, arrowTypeStart: "arrow_open" }, + { id: t[r].id, label: t[r].label, type: h.typeStr2Type(t[r].typeStr), directions: t[r].directions } + ]; + break; + case 24: + h.getLogger().debug("Rule: nodeStatement (abc88 node size) ", t[r - 1], t[r]), this.$ = { id: t[r - 1].id, label: t[r - 1].label, type: h.typeStr2Type(t[r - 1].typeStr), directions: t[r - 1].directions, widthInColumns: parseInt(t[r], 10) }; + break; + case 25: + h.getLogger().debug("Rule: nodeStatement (node) ", t[r]), this.$ = { id: t[r].id, label: t[r].label, type: h.typeStr2Type(t[r].typeStr), directions: t[r].directions, widthInColumns: 1 }; + break; + case 26: + h.getLogger().debug("APA123", this ? this : "na"), h.getLogger().debug("COLUMNS: ", t[r]), this.$ = { type: "column-setting", columns: t[r] === "auto" ? -1 : parseInt(t[r]) }; + break; + case 27: + h.getLogger().debug("Rule: id-block statement : ", t[r - 2], t[r - 1]), h.generateId(), this.$ = U(V({}, t[r - 2]), { type: "composite", children: t[r - 1] }); + break; + case 28: + h.getLogger().debug("Rule: blockStatement : ", t[r - 2], t[r - 1], t[r]); + const C = h.generateId(); + this.$ = { id: C, type: "composite", label: "", children: t[r - 1] }; + break; + case 29: + h.getLogger().debug("Rule: node (NODE_ID separator): ", t[r]), this.$ = { id: t[r] }; + break; + case 30: + h.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ", t[r - 1], t[r]), this.$ = { id: t[r - 1], label: t[r].label, typeStr: t[r].typeStr, directions: t[r].directions }; + break; + case 31: + h.getLogger().debug("Rule: dirList: ", t[r]), this.$ = [t[r]]; + break; + case 32: + h.getLogger().debug("Rule: dirList: ", t[r - 1], t[r]), this.$ = [t[r - 1]].concat(t[r]); + break; + case 33: + h.getLogger().debug("Rule: nodeShapeNLabel: ", t[r - 2], t[r - 1], t[r]), this.$ = { typeStr: t[r - 2] + t[r], label: t[r - 1] }; + break; + case 34: + h.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ", t[r - 3], t[r - 2], " #3:", t[r - 1], t[r]), this.$ = { typeStr: t[r - 3] + t[r], label: t[r - 2], directions: t[r - 1] }; + break; + case 35: + case 36: + this.$ = { type: "classDef", id: t[r - 1].trim(), css: t[r].trim() }; + break; + case 37: + this.$ = { type: "applyClass", id: t[r - 1].trim(), styleClass: t[r].trim() }; + break; + case 38: + this.$ = { type: "applyStyles", id: t[r - 1].trim(), stylesStr: t[r].trim() }; + break; + } + }, + table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 11: 3, 13: 4, 19: 5, 20: 6, 21: a, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: l, 29: u, 31: n, 32: p, 40: o, 44: b, 47: f }, { 8: [1, 20] }, e(g, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 21: a, 28: l, 29: u, 31: n, 32: p, 40: o, 44: b, 47: f }), e(x, [2, 16], { 14: 22, 15: y, 16: T }), e(x, [2, 17]), e(x, [2, 18]), e(x, [2, 19]), e(x, [2, 20]), e(x, [2, 21]), e(x, [2, 22]), e(v, [2, 25], { 27: [1, 25] }), e(x, [2, 26]), { 19: 26, 26: 12, 32: p }, { 11: 27, 13: 4, 19: 5, 20: 6, 21: a, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: l, 29: u, 31: n, 32: p, 40: o, 44: b, 47: f }, { 41: [1, 28], 43: [1, 29] }, { 45: [1, 30] }, { 48: [1, 31] }, e(N, [2, 29], { 33: 32, 36: [1, 33], 38: [1, 34] }), { 1: [2, 7] }, e(g, [2, 13]), { 26: 35, 32: p }, { 32: [2, 14] }, { 17: [1, 36] }, e(v, [2, 24]), { 11: 37, 13: 4, 14: 22, 15: y, 16: T, 19: 5, 20: 6, 21: a, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: l, 29: u, 31: n, 32: p, 40: o, 44: b, 47: f }, { 30: [1, 38] }, { 42: [1, 39] }, { 42: [1, 40] }, { 46: [1, 41] }, { 49: [1, 42] }, e(N, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, e(v, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, e(x, [2, 28]), e(x, [2, 35]), e(x, [2, 36]), e(x, [2, 37]), e(x, [2, 38]), { 37: [1, 47] }, { 34: 48, 35: E }, { 15: [1, 50] }, e(x, [2, 27]), e(N, [2, 33]), { 39: [1, 51] }, { 34: 52, 35: E, 39: [2, 31] }, { 32: [2, 15] }, e(N, [2, 34]), { 39: [2, 32] }], + defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] }, + parseError: function(c, s) { + if (s.recoverable) + this.trace(c); + else { + var i = new Error(c); + throw i.hash = s, i; + } + }, + parse: function(c) { + var s = this, i = [0], h = [], d = [null], t = [], m = this.table, r = "", R = 0, W = 0, F = 2, C = 1, Ee = t.slice.call(arguments, 1), w = Object.create(this.lexer), M = { yy: {} }; + for (var $ in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, $) && (M.yy[$] = this.yy[$]); + w.setInput(c, M.yy), M.yy.lexer = w, M.yy.parser = this, typeof w.yylloc == "undefined" && (w.yylloc = {}); + var ee = w.yylloc; + t.push(ee); + var we = w.options && w.options.ranges; + typeof M.yy.parseError == "function" ? this.parseError = M.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function De() { + var P; + return P = h.pop() || w.lex() || C, typeof P != "number" && (P instanceof Array && (h = P, P = h.pop()), P = s.symbols_[P] || P), P; + } + for (var I, Y, z, te, j = {}, q, B, ce, Z; ; ) { + if (Y = i[i.length - 1], this.defaultActions[Y] ? z = this.defaultActions[Y] : ((I === null || typeof I == "undefined") && (I = De()), z = m[Y] && m[Y][I]), typeof z == "undefined" || !z.length || !z[0]) { + var se = ""; + Z = []; + for (q in m[Y]) + this.terminals_[q] && q > F && Z.push("'" + this.terminals_[q] + "'"); + w.showPosition ? se = "Parse error on line " + (R + 1) + `: +` + w.showPosition() + ` +Expecting ` + Z.join(", ") + ", got '" + (this.terminals_[I] || I) + "'" : se = "Parse error on line " + (R + 1) + ": Unexpected " + (I == C ? "end of input" : "'" + (this.terminals_[I] || I) + "'"), this.parseError(se, { + text: w.match, + token: this.terminals_[I] || I, + line: w.yylineno, + loc: ee, + expected: Z + }); + } + if (z[0] instanceof Array && z.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + Y + ", token: " + I); + switch (z[0]) { + case 1: + i.push(I), d.push(w.yytext), t.push(w.yylloc), i.push(z[1]), I = null, W = w.yyleng, r = w.yytext, R = w.yylineno, ee = w.yylloc; + break; + case 2: + if (B = this.productions_[z[1]][1], j.$ = d[d.length - B], j._$ = { + first_line: t[t.length - (B || 1)].first_line, + last_line: t[t.length - 1].last_line, + first_column: t[t.length - (B || 1)].first_column, + last_column: t[t.length - 1].last_column + }, we && (j._$.range = [ + t[t.length - (B || 1)].range[0], + t[t.length - 1].range[1] + ]), te = this.performAction.apply(j, [ + r, + W, + R, + M.yy, + z[1], + d, + t + ].concat(Ee)), typeof te != "undefined") + return te; + B && (i = i.slice(0, -1 * B * 2), d = d.slice(0, -1 * B), t = t.slice(0, -1 * B)), i.push(this.productions_[z[1]][0]), d.push(j.$), t.push(j._$), ce = m[i[i.length - 2]][i[i.length - 1]], i.push(ce); + break; + case 3: + return !0; + } + } + return !0; + } + }, A = function() { + var D = { + EOF: 1, + parseError: function(s, i) { + if (this.yy.parser) + this.yy.parser.parseError(s, i); + else + throw new Error(s); + }, + // resets the lexer, sets new input + setInput: function(c, s) { + return this.yy = s || this.yy || {}, this._input = c, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var c = this._input[0]; + this.yytext += c, this.yyleng++, this.offset++, this.match += c, this.matched += c; + var s = c.match(/(?:\r\n?|\n).*/g); + return s ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), c; + }, + // unshifts one char (or a string) into the input + unput: function(c) { + var s = c.length, i = c.split(/(?:\r\n?|\n)/g); + this._input = c + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - s), this.offset -= s; + var h = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), i.length - 1 && (this.yylineno -= i.length - 1); + var d = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: i ? (i.length === h.length ? this.yylloc.first_column : 0) + h[h.length - i.length].length - i[0].length : this.yylloc.first_column - s + }, this.options.ranges && (this.yylloc.range = [d[0], d[0] + this.yyleng - s]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(c) { + this.unput(this.match.slice(c)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var c = this.matched.substr(0, this.matched.length - this.match.length); + return (c.length > 20 ? "..." : "") + c.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var c = this.match; + return c.length < 20 && (c += this._input.substr(0, 20 - c.length)), (c.substr(0, 20) + (c.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var c = this.pastInput(), s = new Array(c.length + 1).join("-"); + return c + this.upcomingInput() + ` +` + s + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(c, s) { + var i, h, d; + if (this.options.backtrack_lexer && (d = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (d.yylloc.range = this.yylloc.range.slice(0))), h = c[0].match(/(?:\r\n?|\n).*/g), h && (this.yylineno += h.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: h ? h[h.length - 1].length - h[h.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + c[0].length + }, this.yytext += c[0], this.match += c[0], this.matches = c, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(c[0].length), this.matched += c[0], i = this.performAction.call(this, this.yy, this, s, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), i) + return i; + if (this._backtrack) { + for (var t in d) + this[t] = d[t]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var c, s, i, h; + this._more || (this.yytext = "", this.match = ""); + for (var d = this._currentRules(), t = 0; t < d.length; t++) + if (i = this._input.match(this.rules[d[t]]), i && (!s || i[0].length > s[0].length)) { + if (s = i, h = t, this.options.backtrack_lexer) { + if (c = this.test_match(i, d[t]), c !== !1) + return c; + if (this._backtrack) { + s = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return s ? (c = this.test_match(s, d[h]), c !== !1 ? c : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var s = this.next(); + return s || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(s) { + this.conditionStack.push(s); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var s = this.conditionStack.length - 1; + return s > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(s) { + return s = this.conditionStack.length - 1 - Math.abs(s || 0), s >= 0 ? this.conditionStack[s] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(s) { + this.begin(s); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: {}, + performAction: function(s, i, h, d) { + switch (h) { + case 0: + return 10; + case 1: + return s.getLogger().debug("Found space-block"), 31; + case 2: + return s.getLogger().debug("Found nl-block"), 31; + case 3: + return s.getLogger().debug("Found space-block"), 29; + case 4: + s.getLogger().debug(".", i.yytext); + break; + case 5: + s.getLogger().debug("_", i.yytext); + break; + case 6: + return 5; + case 7: + return i.yytext = -1, 28; + case 8: + return i.yytext = i.yytext.replace(/columns\s+/, ""), s.getLogger().debug("COLUMNS (LEX)", i.yytext), 28; + case 9: + this.pushState("md_string"); + break; + case 10: + return "MD_STR"; + case 11: + this.popState(); + break; + case 12: + this.pushState("string"); + break; + case 13: + s.getLogger().debug("LEX: POPPING STR:", i.yytext), this.popState(); + break; + case 14: + return s.getLogger().debug("LEX: STR end:", i.yytext), "STR"; + case 15: + return i.yytext = i.yytext.replace(/space\:/, ""), s.getLogger().debug("SPACE NUM (LEX)", i.yytext), 21; + case 16: + return i.yytext = "1", s.getLogger().debug("COLUMNS (LEX)", i.yytext), 21; + case 17: + return 43; + case 18: + return "LINKSTYLE"; + case 19: + return "INTERPOLATE"; + case 20: + return this.pushState("CLASSDEF"), 40; + case 21: + return this.popState(), this.pushState("CLASSDEFID"), "DEFAULT_CLASSDEF_ID"; + case 22: + return this.popState(), this.pushState("CLASSDEFID"), 41; + case 23: + return this.popState(), 42; + case 24: + return this.pushState("CLASS"), 44; + case 25: + return this.popState(), this.pushState("CLASS_STYLE"), 45; + case 26: + return this.popState(), 46; + case 27: + return this.pushState("STYLE_STMNT"), 47; + case 28: + return this.popState(), this.pushState("STYLE_DEFINITION"), 48; + case 29: + return this.popState(), 49; + case 30: + return this.pushState("acc_title"), "acc_title"; + case 31: + return this.popState(), "acc_title_value"; + case 32: + return this.pushState("acc_descr"), "acc_descr"; + case 33: + return this.popState(), "acc_descr_value"; + case 34: + this.pushState("acc_descr_multiline"); + break; + case 35: + this.popState(); + break; + case 36: + return "acc_descr_multiline_value"; + case 37: + return 30; + case 38: + return this.popState(), s.getLogger().debug("Lex: (("), "NODE_DEND"; + case 39: + return this.popState(), s.getLogger().debug("Lex: (("), "NODE_DEND"; + case 40: + return this.popState(), s.getLogger().debug("Lex: ))"), "NODE_DEND"; + case 41: + return this.popState(), s.getLogger().debug("Lex: (("), "NODE_DEND"; + case 42: + return this.popState(), s.getLogger().debug("Lex: (("), "NODE_DEND"; + case 43: + return this.popState(), s.getLogger().debug("Lex: (-"), "NODE_DEND"; + case 44: + return this.popState(), s.getLogger().debug("Lex: -)"), "NODE_DEND"; + case 45: + return this.popState(), s.getLogger().debug("Lex: (("), "NODE_DEND"; + case 46: + return this.popState(), s.getLogger().debug("Lex: ]]"), "NODE_DEND"; + case 47: + return this.popState(), s.getLogger().debug("Lex: ("), "NODE_DEND"; + case 48: + return this.popState(), s.getLogger().debug("Lex: ])"), "NODE_DEND"; + case 49: + return this.popState(), s.getLogger().debug("Lex: /]"), "NODE_DEND"; + case 50: + return this.popState(), s.getLogger().debug("Lex: /]"), "NODE_DEND"; + case 51: + return this.popState(), s.getLogger().debug("Lex: )]"), "NODE_DEND"; + case 52: + return this.popState(), s.getLogger().debug("Lex: )"), "NODE_DEND"; + case 53: + return this.popState(), s.getLogger().debug("Lex: ]>"), "NODE_DEND"; + case 54: + return this.popState(), s.getLogger().debug("Lex: ]"), "NODE_DEND"; + case 55: + return s.getLogger().debug("Lexa: -)"), this.pushState("NODE"), 36; + case 56: + return s.getLogger().debug("Lexa: (-"), this.pushState("NODE"), 36; + case 57: + return s.getLogger().debug("Lexa: ))"), this.pushState("NODE"), 36; + case 58: + return s.getLogger().debug("Lexa: )"), this.pushState("NODE"), 36; + case 59: + return s.getLogger().debug("Lex: ((("), this.pushState("NODE"), 36; + case 60: + return s.getLogger().debug("Lexa: )"), this.pushState("NODE"), 36; + case 61: + return s.getLogger().debug("Lexa: )"), this.pushState("NODE"), 36; + case 62: + return s.getLogger().debug("Lexa: )"), this.pushState("NODE"), 36; + case 63: + return s.getLogger().debug("Lexc: >"), this.pushState("NODE"), 36; + case 64: + return s.getLogger().debug("Lexa: (["), this.pushState("NODE"), 36; + case 65: + return s.getLogger().debug("Lexa: )"), this.pushState("NODE"), 36; + case 66: + return this.pushState("NODE"), 36; + case 67: + return this.pushState("NODE"), 36; + case 68: + return this.pushState("NODE"), 36; + case 69: + return this.pushState("NODE"), 36; + case 70: + return this.pushState("NODE"), 36; + case 71: + return this.pushState("NODE"), 36; + case 72: + return this.pushState("NODE"), 36; + case 73: + return s.getLogger().debug("Lexa: ["), this.pushState("NODE"), 36; + case 74: + return this.pushState("BLOCK_ARROW"), s.getLogger().debug("LEX ARR START"), 38; + case 75: + return s.getLogger().debug("Lex: NODE_ID", i.yytext), 32; + case 76: + return s.getLogger().debug("Lex: EOF", i.yytext), 8; + case 77: + this.pushState("md_string"); + break; + case 78: + this.pushState("md_string"); + break; + case 79: + return "NODE_DESCR"; + case 80: + this.popState(); + break; + case 81: + s.getLogger().debug("Lex: Starting string"), this.pushState("string"); + break; + case 82: + s.getLogger().debug("LEX ARR: Starting string"), this.pushState("string"); + break; + case 83: + return s.getLogger().debug("LEX: NODE_DESCR:", i.yytext), "NODE_DESCR"; + case 84: + s.getLogger().debug("LEX POPPING"), this.popState(); + break; + case 85: + s.getLogger().debug("Lex: =>BAE"), this.pushState("ARROW_DIR"); + break; + case 86: + return i.yytext = i.yytext.replace(/^,\s*/, ""), s.getLogger().debug("Lex (right): dir:", i.yytext), "DIR"; + case 87: + return i.yytext = i.yytext.replace(/^,\s*/, ""), s.getLogger().debug("Lex (left):", i.yytext), "DIR"; + case 88: + return i.yytext = i.yytext.replace(/^,\s*/, ""), s.getLogger().debug("Lex (x):", i.yytext), "DIR"; + case 89: + return i.yytext = i.yytext.replace(/^,\s*/, ""), s.getLogger().debug("Lex (y):", i.yytext), "DIR"; + case 90: + return i.yytext = i.yytext.replace(/^,\s*/, ""), s.getLogger().debug("Lex (up):", i.yytext), "DIR"; + case 91: + return i.yytext = i.yytext.replace(/^,\s*/, ""), s.getLogger().debug("Lex (down):", i.yytext), "DIR"; + case 92: + return i.yytext = "]>", s.getLogger().debug("Lex (ARROW_DIR end):", i.yytext), this.popState(), this.popState(), "BLOCK_ARROW_END"; + case 93: + return s.getLogger().debug("Lex: LINK", "#" + i.yytext + "#"), 15; + case 94: + return s.getLogger().debug("Lex: LINK", i.yytext), 15; + case 95: + return s.getLogger().debug("Lex: LINK", i.yytext), 15; + case 96: + return s.getLogger().debug("Lex: LINK", i.yytext), 15; + case 97: + return s.getLogger().debug("Lex: START_LINK", i.yytext), this.pushState("LLABEL"), 16; + case 98: + return s.getLogger().debug("Lex: START_LINK", i.yytext), this.pushState("LLABEL"), 16; + case 99: + return s.getLogger().debug("Lex: START_LINK", i.yytext), this.pushState("LLABEL"), 16; + case 100: + this.pushState("md_string"); + break; + case 101: + return s.getLogger().debug("Lex: Starting string"), this.pushState("string"), "LINK_LABEL"; + case 102: + return this.popState(), s.getLogger().debug("Lex: LINK", "#" + i.yytext + "#"), 15; + case 103: + return this.popState(), s.getLogger().debug("Lex: LINK", i.yytext), 15; + case 104: + return this.popState(), s.getLogger().debug("Lex: LINK", i.yytext), 15; + case 105: + return s.getLogger().debug("Lex: COLON", i.yytext), i.yytext = i.yytext.slice(1), 27; + } + }, + rules: [/^(?:block-beta\b)/, /^(?:block\s+)/, /^(?:block\n+)/, /^(?:block:)/, /^(?:[\s]+)/, /^(?:[\n]+)/, /^(?:((\u000D\u000A)|(\u000A)))/, /^(?:columns\s+auto\b)/, /^(?:columns\s+[\d]+)/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:space[:]\d+)/, /^(?:space\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\s+)/, /^(?:DEFAULT\s+)/, /^(?:\w+\s+)/, /^(?:[^\n]*)/, /^(?:class\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:style\s+)/, /^(?:(\w+)+((,\s*\w+)*))/, /^(?:[^\n]*)/, /^(?:accTitle\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*:\s*)/, /^(?:(?!\n||)*[^\n]*)/, /^(?:accDescr\s*\{\s*)/, /^(?:[\}])/, /^(?:[^\}]*)/, /^(?:end\b\s*)/, /^(?:\(\(\()/, /^(?:\)\)\))/, /^(?:[\)]\))/, /^(?:\}\})/, /^(?:\})/, /^(?:\(-)/, /^(?:-\))/, /^(?:\(\()/, /^(?:\]\])/, /^(?:\()/, /^(?:\]\))/, /^(?:\\\])/, /^(?:\/\])/, /^(?:\)\])/, /^(?:[\)])/, /^(?:\]>)/, /^(?:[\]])/, /^(?:-\))/, /^(?:\(-)/, /^(?:\)\))/, /^(?:\))/, /^(?:\(\(\()/, /^(?:\(\()/, /^(?:\{\{)/, /^(?:\{)/, /^(?:>)/, /^(?:\(\[)/, /^(?:\()/, /^(?:\[\[)/, /^(?:\[\|)/, /^(?:\[\()/, /^(?:\)\)\))/, /^(?:\[\\)/, /^(?:\[\/)/, /^(?:\[\\)/, /^(?:\[)/, /^(?:<\[)/, /^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/, /^(?:$)/, /^(?:["][`])/, /^(?:["][`])/, /^(?:[^`"]+)/, /^(?:[`]["])/, /^(?:["])/, /^(?:["])/, /^(?:[^"]+)/, /^(?:["])/, /^(?:\]>\s*\()/, /^(?:,?\s*right\s*)/, /^(?:,?\s*left\s*)/, /^(?:,?\s*x\s*)/, /^(?:,?\s*y\s*)/, /^(?:,?\s*up\s*)/, /^(?:,?\s*down\s*)/, /^(?:\)\s*)/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?:\s*~~[\~]+\s*)/, /^(?:\s*[xo<]?--\s*)/, /^(?:\s*[xo<]?==\s*)/, /^(?:\s*[xo<]?-\.\s*)/, /^(?:["][`])/, /^(?:["])/, /^(?:\s*[xo<]?--+[-xo>]\s*)/, /^(?:\s*[xo<]?==+[=xo>]\s*)/, /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/, /^(?::\d+)/], + conditions: { STYLE_DEFINITION: { rules: [29], inclusive: !1 }, STYLE_STMNT: { rules: [28], inclusive: !1 }, CLASSDEFID: { rules: [23], inclusive: !1 }, CLASSDEF: { rules: [21, 22], inclusive: !1 }, CLASS_STYLE: { rules: [26], inclusive: !1 }, CLASS: { rules: [25], inclusive: !1 }, LLABEL: { rules: [100, 101, 102, 103, 104], inclusive: !1 }, ARROW_DIR: { rules: [86, 87, 88, 89, 90, 91, 92], inclusive: !1 }, BLOCK_ARROW: { rules: [77, 82, 85], inclusive: !1 }, NODE: { rules: [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 78, 81], inclusive: !1 }, md_string: { rules: [10, 11, 79, 80], inclusive: !1 }, space: { rules: [], inclusive: !1 }, string: { rules: [13, 14, 83, 84], inclusive: !1 }, acc_descr_multiline: { rules: [35, 36], inclusive: !1 }, acc_descr: { rules: [33], inclusive: !1 }, acc_title: { rules: [31], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 24, 27, 30, 32, 34, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 93, 94, 95, 96, 97, 98, 99, 105], inclusive: !0 } } + }; + return D; + }(); + L.lexer = A; + function k() { + this.yy = {}; + } + return k.prototype = L, L.Parser = k, new k(); +}(); +ie.parser = ie; +const Xe = ie; +let O = {}, ae = [], X = {}; +const pe = "color", fe = "fill", Ge = "bgFill", Se = ","; +let G = {}; +const He = function(e, a = "") { + G[e] === void 0 && (G[e] = { id: e, styles: [], textStyles: [] }); + const l = G[e]; + a != null && a.split(Se).forEach((u) => { + const n = u.replace(/([^;]*);/, "$1").trim(); + if (u.match(pe)) { + const o = n.replace(fe, Ge).replace(pe, fe); + l.textStyles.push(o); + } + l.styles.push(n); + }); +}, qe = function(e, a = "") { + const l = O[e]; + a != null && (l.styles = a.split(Se)); +}, Ze = function(e, a) { + e.split(",").forEach(function(l) { + let u = O[l]; + if (u === void 0) { + const n = l.trim(); + O[n] = { id: n, type: "na", children: [] }, u = O[n]; + } + u.classes || (u.classes = []), u.classes.push(a); + }); +}, Le = (e, a) => { + const l = e.flat(), u = []; + for (const n of l) { + if (n.type === "classDef") { + He(n.id, n.css); + continue; + } + if (n.type === "applyClass") { + Ze(n.id, (n == null ? void 0 : n.styleClass) || ""); + continue; + } + if (n.type === "applyStyles") { + n != null && n.stylesStr && qe(n.id, n == null ? void 0 : n.stylesStr); + continue; + } + if (n.type === "column-setting") + a.columns = n.columns || -1; + else if (n.type === "edge") + X[n.id] ? X[n.id]++ : X[n.id] = 1, n.id = X[n.id] + "-" + n.id, ae.push(n); + else { + n.label || (n.type === "composite" ? n.label = "" : n.label = n.id); + const p = !O[n.id]; + if (p ? O[n.id] = n : (n.type !== "na" && (O[n.id].type = n.type), n.label !== n.id && (O[n.id].label = n.label)), n.children && Le(n.children, n), n.type === "space") { + const o = n.width || 1; + for (let b = 0; b < o; b++) { + const f = Be(n); + f.id = f.id + "-" + b, O[f.id] = f, u.push(f); + } + } else + p && u.push(n); + } + } + a.children = u; +}; +let le = [], H = { id: "root", type: "composite", children: [], columns: -1 }; +const Je = () => { + S.debug("Clear called"), Ce(), H = { id: "root", type: "composite", children: [], columns: -1 }, O = { root: H }, le = [], G = {}, ae = [], X = {}; +}; +function Qe(e) { + switch (S.debug("typeStr2Type", e), e) { + case "[]": + return "square"; + case "()": + return S.debug("we have a round"), "round"; + case "(())": + return "circle"; + case ">]": + return "rect_left_inv_arrow"; + case "{}": + return "diamond"; + case "{{}}": + return "hexagon"; + case "([])": + return "stadium"; + case "[[]]": + return "subroutine"; + case "[()]": + return "cylinder"; + case "((()))": + return "doublecircle"; + case "[//]": + return "lean_right"; + case "[\\\\]": + return "lean_left"; + case "[/\\]": + return "trapezoid"; + case "[\\/]": + return "inv_trapezoid"; + case "<[]>": + return "block_arrow"; + default: + return "na"; + } +} +function $e(e) { + switch (S.debug("typeStr2Type", e), e) { + case "==": + return "thick"; + default: + return "normal"; + } +} +function et(e) { + switch (e.trim()) { + case "--x": + return "arrow_cross"; + case "--o": + return "arrow_circle"; + default: + return "arrow_point"; + } +} +let be = 0; +const tt = () => (be++, "id-" + Math.random().toString(36).substr(2, 12) + "-" + be), st = (e) => { + H.children = e, Le(e, H), le = H.children; +}, it = (e) => { + const a = O[e]; + return a ? a.columns ? a.columns : a.children ? a.children.length : -1 : -1; +}, rt = () => [...Object.values(O)], nt = () => le || [], at = () => ae, lt = (e) => O[e], ot = (e) => { + O[e.id] = e; +}, ct = () => console, ut = function() { + return G; +}, ht = { + getConfig: () => ne().block, + typeStr2Type: Qe, + edgeTypeStr2Type: $e, + edgeStrToEdgeData: et, + getLogger: ct, + getBlocksFlat: rt, + getBlocks: nt, + getEdges: at, + setHierarchy: st, + getBlock: lt, + setBlock: ot, + getColumns: it, + getClasses: ut, + clear: Je, + generateId: tt +}, dt = ht, Q = (e, a) => { + const l = Ue, u = l(e, "r"), n = l(e, "g"), p = l(e, "b"); + return Ae(u, n, p, a); +}, gt = (e) => `.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor || e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + + + .label text,span,p { + fill: ${e.nodeTextColor || e.textColor}; + color: ${e.nodeTextColor || e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${Q(e.edgeLabelBackground, 0.5)}; + // background-color: + } + + .node .cluster { + // fill: ${Q(e.mainBkg, 0.5)}; + fill: ${Q(e.clusterBkg, 0.5)}; + stroke: ${Q(e.clusterBorder, 0.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`, pt = gt; +function me(e, a, l = !1) { + var u, n, p; + const o = e; + let b = "default"; + (((u = o == null ? void 0 : o.classes) == null ? void 0 : u.length) || 0) > 0 && (b = ((o == null ? void 0 : o.classes) || []).join(" ")), b = b + " flowchart-label"; + let f = 0, g = "", x; + switch (o.type) { + case "round": + f = 5, g = "rect"; + break; + case "composite": + f = 0, g = "composite", x = 0; + break; + case "square": + g = "rect"; + break; + case "diamond": + g = "question"; + break; + case "hexagon": + g = "hexagon"; + break; + case "block_arrow": + g = "block_arrow"; + break; + case "odd": + g = "rect_left_inv_arrow"; + break; + case "lean_right": + g = "lean_right"; + break; + case "lean_left": + g = "lean_left"; + break; + case "trapezoid": + g = "trapezoid"; + break; + case "inv_trapezoid": + g = "inv_trapezoid"; + break; + case "rect_left_inv_arrow": + g = "rect_left_inv_arrow"; + break; + case "circle": + g = "circle"; + break; + case "ellipse": + g = "ellipse"; + break; + case "stadium": + g = "stadium"; + break; + case "subroutine": + g = "subroutine"; + break; + case "cylinder": + g = "cylinder"; + break; + case "group": + g = "rect"; + break; + case "doublecircle": + g = "doublecircle"; + break; + default: + g = "rect"; + } + const y = Re((o == null ? void 0 : o.styles) || []), T = o.label, v = o.size || { width: 0, height: 0, x: 0, y: 0 }; + return { + labelStyle: y.labelStyle, + shape: g, + labelText: T, + rx: f, + ry: f, + class: b, + style: y.style, + id: o.id, + directions: o.directions, + width: v.width, + height: v.height, + x: v.x, + y: v.y, + positioned: l, + intersect: void 0, + type: o.type, + padding: x != null ? x : ((p = (n = ne()) == null ? void 0 : n.block) == null ? void 0 : p.padding) || 0 + }; +} +function ft(e, a, l) { + return K(this, null, function* () { + const u = me(a, l, !1); + if (u.type === "group") + return; + const n = yield xe(e, u), p = n.node().getBBox(), o = l.getBlock(u.id); + o.size = { width: p.width, height: p.height, x: 0, y: 0, node: n }, l.setBlock(o), n.remove(); + }); +} +function bt(e, a, l) { + return K(this, null, function* () { + const u = me(a, l, !0); + l.getBlock(u.id).type !== "space" && (yield xe(e, u), a.intersect = u == null ? void 0 : u.intersect, Ye(u)); + }); +} +function oe(e, a, l, u) { + return K(this, null, function* () { + for (const n of a) + yield u(e, n, l), n.children && (yield oe(e, n.children, l, u)); + }); +} +function xt(e, a, l) { + return K(this, null, function* () { + yield oe(e, a, l, ft); + }); +} +function St(e, a, l) { + return K(this, null, function* () { + yield oe(e, a, l, bt); + }); +} +function Lt(e, a, l, u, n) { + return K(this, null, function* () { + const p = new We({ + multigraph: !0, + compound: !0 + }); + p.setGraph({ + rankdir: "TB", + nodesep: 10, + ranksep: 10, + marginx: 8, + marginy: 8 + }); + for (const o of l) + o.size && p.setNode(o.id, { + width: o.size.width, + height: o.size.height, + intersect: o.intersect + }); + for (const o of a) + if (o.start && o.end) { + const b = u.getBlock(o.start), f = u.getBlock(o.end); + if (b != null && b.size && (f != null && f.size)) { + const g = b.size, x = f.size, y = [ + { x: g.x, y: g.y }, + { x: g.x + (x.x - g.x) / 2, y: g.y + (x.y - g.y) / 2 }, + { x: x.x, y: x.y } + ]; + yield Fe( + e, + { v: o.start, w: o.end, name: o.id }, + U(V({}, o), { + arrowTypeEnd: o.arrowTypeEnd, + arrowTypeStart: o.arrowTypeStart, + points: y, + classes: "edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1" + }), + void 0, + "block", + p, + n + ), o.label && (yield Ke(e, U(V({}, o), { + label: o.label, + labelStyle: "stroke: #333; stroke-width: 1.5px;fill:none;", + arrowTypeEnd: o.arrowTypeEnd, + arrowTypeStart: o.arrowTypeStart, + points: y, + classes: "edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1" + })), yield Me( + U(V({}, o), { x: y[1].x, y: y[1].y }), + { + originalPath: y + } + )); + } + } + }); +} +const _ = ((ge = (de = Te()) == null ? void 0 : de.block) == null ? void 0 : ge.padding) || 8; +function mt(e, a) { + if (e === 0 || !Number.isInteger(e)) + throw new Error("Columns must be an integer !== 0."); + if (a < 0 || !Number.isInteger(a)) + throw new Error("Position must be a non-negative integer." + a); + if (e < 0) + return { px: a, py: 0 }; + if (e === 1) + return { px: 0, py: a }; + const l = a % e, u = Math.floor(a / e); + return { px: l, py: u }; +} +const _t = (e) => { + let a = 0, l = 0; + for (const u of e.children) { + const { width: n, height: p, x: o, y: b } = u.size || { width: 0, height: 0, x: 0, y: 0 }; + S.debug( + "getMaxChildSize abc95 child:", + u.id, + "width:", + n, + "height:", + p, + "x:", + o, + "y:", + b, + u.type + ), u.type !== "space" && (n > a && (a = n / (e.widthInColumns || 1)), p > l && (l = p)); + } + return { width: a, height: l }; +}; +function re(e, a, l = 0, u = 0) { + var n, p, o, b, f, g, x, y, T, v, N; + S.debug( + "setBlockSizes abc95 (start)", + e.id, + (n = e == null ? void 0 : e.size) == null ? void 0 : n.x, + "block width =", + e == null ? void 0 : e.size, + "sieblingWidth", + l + ), (p = e == null ? void 0 : e.size) != null && p.width || (e.size = { + width: l, + height: u, + x: 0, + y: 0 + }); + let E = 0, L = 0; + if (((o = e.children) == null ? void 0 : o.length) > 0) { + for (const d of e.children) + re(d, a); + const A = _t(e); + E = A.width, L = A.height, S.debug("setBlockSizes abc95 maxWidth of", e.id, ":s children is ", E, L); + for (const d of e.children) + d.size && (S.debug( + `abc95 Setting size of children of ${e.id} id=${d.id} ${E} ${L} ${d.size}` + ), d.size.width = E * (d.widthInColumns || 1) + _ * ((d.widthInColumns || 1) - 1), d.size.height = L, d.size.x = 0, d.size.y = 0, S.debug( + `abc95 updating size of ${e.id} children child:${d.id} maxWidth:${E} maxHeight:${L}` + )); + for (const d of e.children) + re(d, a, E, L); + const k = e.columns || -1; + let D = 0; + for (const d of e.children) + D += d.widthInColumns || 1; + let c = e.children.length; + k > 0 && k < D && (c = k), e.widthInColumns; + const s = Math.ceil(D / c); + let i = c * (E + _) + _, h = s * (L + _) + _; + if (i < l) { + S.debug( + `Detected to small siebling: abc95 ${e.id} sieblingWidth ${l} sieblingHeight ${u} width ${i}` + ), i = l, h = u; + const d = (l - c * _ - _) / c, t = (u - s * _ - _) / s; + S.debug("Size indata abc88", e.id, "childWidth", d, "maxWidth", E), S.debug("Size indata abc88", e.id, "childHeight", t, "maxHeight", L), S.debug("Size indata abc88 xSize", c, "padding", _); + for (const m of e.children) + m.size && (m.size.width = d, m.size.height = t, m.size.x = 0, m.size.y = 0); + } + if (S.debug( + `abc95 (finale calc) ${e.id} xSize ${c} ySize ${s} columns ${k}${e.children.length} width=${Math.max(i, ((b = e.size) == null ? void 0 : b.width) || 0)}` + ), i < (((f = e == null ? void 0 : e.size) == null ? void 0 : f.width) || 0)) { + i = ((g = e == null ? void 0 : e.size) == null ? void 0 : g.width) || 0; + const d = k > 0 ? Math.min(e.children.length, k) : e.children.length; + if (d > 0) { + const t = (i - d * _ - _) / d; + S.debug("abc95 (growing to fit) width", e.id, i, (x = e.size) == null ? void 0 : x.width, t); + for (const m of e.children) + m.size && (m.size.width = t); + } + } + e.size = { + width: i, + height: h, + x: 0, + y: 0 + }; + } + S.debug( + "setBlockSizes abc94 (done)", + e.id, + (y = e == null ? void 0 : e.size) == null ? void 0 : y.x, + (T = e == null ? void 0 : e.size) == null ? void 0 : T.width, + (v = e == null ? void 0 : e.size) == null ? void 0 : v.y, + (N = e == null ? void 0 : e.size) == null ? void 0 : N.height + ); +} +function _e(e, a) { + var l, u, n, p, o, b, f, g, x, y, T, v, N, E, L, A, k; + S.debug( + `abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${(l = e == null ? void 0 : e.size) == null ? void 0 : l.x} y: ${(u = e == null ? void 0 : e.size) == null ? void 0 : u.y} width: ${(n = e == null ? void 0 : e.size) == null ? void 0 : n.width}` + ); + const D = e.columns || -1; + if (S.debug("layoutBlocks columns abc95", e.id, "=>", D, e), e.children && // find max width of children + e.children.length > 0) { + const c = ((o = (p = e == null ? void 0 : e.children[0]) == null ? void 0 : p.size) == null ? void 0 : o.width) || 0, s = e.children.length * c + (e.children.length - 1) * _; + S.debug("widthOfChildren 88", s, "posX"); + let i = 0; + S.debug("abc91 block?.size?.x", e.id, (b = e == null ? void 0 : e.size) == null ? void 0 : b.x); + let h = (f = e == null ? void 0 : e.size) != null && f.x ? ((g = e == null ? void 0 : e.size) == null ? void 0 : g.x) + (-((x = e == null ? void 0 : e.size) == null ? void 0 : x.width) / 2 || 0) : -_, d = 0; + for (const t of e.children) { + const m = e; + if (!t.size) + continue; + const { width: r, height: R } = t.size, { px: W, py: F } = mt(D, i); + if (F != d && (d = F, h = (y = e == null ? void 0 : e.size) != null && y.x ? ((T = e == null ? void 0 : e.size) == null ? void 0 : T.x) + (-((v = e == null ? void 0 : e.size) == null ? void 0 : v.width) / 2 || 0) : -_, S.debug("New row in layout for block", e.id, " and child ", t.id, d)), S.debug( + `abc89 layout blocks (child) id: ${t.id} Pos: ${i} (px, py) ${W},${F} (${(N = m == null ? void 0 : m.size) == null ? void 0 : N.x},${(E = m == null ? void 0 : m.size) == null ? void 0 : E.y}) parent: ${m.id} width: ${r}${_}` + ), m.size) { + const C = r / 2; + t.size.x = h + _ + C, S.debug( + `abc91 layout blocks (calc) px, pyid:${t.id} startingPos=X${h} new startingPosX${t.size.x} ${C} padding=${_} width=${r} halfWidth=${C} => x:${t.size.x} y:${t.size.y} ${t.widthInColumns} (width * (child?.w || 1)) / 2 ${r * ((t == null ? void 0 : t.widthInColumns) || 1) / 2}` + ), h = t.size.x + C, t.size.y = m.size.y - m.size.height / 2 + F * (R + _) + R / 2 + _, S.debug( + `abc88 layout blocks (calc) px, pyid:${t.id}startingPosX${h}${_}${C}=>x:${t.size.x}y:${t.size.y}${t.widthInColumns}(width * (child?.w || 1)) / 2${r * ((t == null ? void 0 : t.widthInColumns) || 1) / 2}` + ); + } + t.children && _e(t), i += (t == null ? void 0 : t.widthInColumns) || 1, S.debug("abc88 columnsPos", t, i); + } + } + S.debug( + `layout blocks (<==layoutBlocks) ${e.id} x: ${(L = e == null ? void 0 : e.size) == null ? void 0 : L.x} y: ${(A = e == null ? void 0 : e.size) == null ? void 0 : A.y} width: ${(k = e == null ? void 0 : e.size) == null ? void 0 : k.width}` + ); +} +function ye(e, { minX: a, minY: l, maxX: u, maxY: n } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) { + if (e.size && e.id !== "root") { + const { x: p, y: o, width: b, height: f } = e.size; + p - b / 2 < a && (a = p - b / 2), o - f / 2 < l && (l = o - f / 2), p + b / 2 > u && (u = p + b / 2), o + f / 2 > n && (n = o + f / 2); + } + if (e.children) + for (const p of e.children) + ({ minX: a, minY: l, maxX: u, maxY: n } = ye(p, { minX: a, minY: l, maxX: u, maxY: n })); + return { minX: a, minY: l, maxX: u, maxY: n }; +} +function yt(e) { + const a = e.getBlock("root"); + if (!a) + return; + re(a, e, 0, 0), _e(a), S.debug("getBlocks", JSON.stringify(a, null, 2)); + const { minX: l, minY: u, maxX: n, maxY: p } = ye(a), o = p - u, b = n - l; + return { x: l, y: u, width: b, height: o }; +} +const Et = function(e, a) { + return a.db.getClasses(); +}, wt = function(e, a, l, u) { + return K(this, null, function* () { + const { securityLevel: n, block: p } = ne(), o = u.db; + let b; + n === "sandbox" && (b = J("#i" + a)); + const f = n === "sandbox" ? J(b.nodes()[0].contentDocument.body) : J("body"), g = n === "sandbox" ? f.select(`[id="${a}"]`) : J(`[id="${a}"]`); + Pe(g, ["point", "circle", "cross"], u.type, a); + const y = o.getBlocks(), T = o.getBlocksFlat(), v = o.getEdges(), N = g.insert("g").attr("class", "block"); + yield xt(N, y, o); + const E = yt(o); + if (yield St(N, y, o), yield Lt(N, v, T, o, a), E) { + const L = E, A = Math.max(1, Math.round(0.125 * (L.width / L.height))), k = L.height + A + 10, D = L.width + 10, { useMaxWidth: c } = p; + ze(g, k, D, !!c), S.debug("Here Bounds", E, L), g.attr( + "viewBox", + `${L.x - 5} ${L.y - 5} ${L.width + 10} ${L.height + 10}` + ); + } + je(Ve); + }); +}, Dt = { + draw: wt, + getClasses: Et +}, Kt = { + parser: Xe, + db: dt, + renderer: Dt, + styles: pt +}; +export { + Kt as diagram +}; diff --git a/client/packages/lowcoder/public/package/56525b94.js b/client/packages/lowcoder/public/package/56525b94.js new file mode 100644 index 000000000..9b8bf9e77 --- /dev/null +++ b/client/packages/lowcoder/public/package/56525b94.js @@ -0,0 +1,915 @@ +var zt = Object.defineProperty; +var bt = Object.getOwnPropertySymbols; +var Et = Object.prototype.hasOwnProperty, Dt = Object.prototype.propertyIsEnumerable; +var At = (e, a, r) => a in e ? zt(e, a, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[a] = r, tt = (e, a) => { + for (var r in a || (a = {})) + Et.call(a, r) && At(e, r, a[r]); + if (bt) + for (var r of bt(a)) + Dt.call(a, r) && At(e, r, a[r]); + return e; +}; +import { Z as It, e as qt, W as D, l as ht, s as Bt, a as wt, F as Rt, G as kt, b as Vt, d as Wt, H as Nt, j as pt, k as Ut, f as Qt } from "./08856db2.js"; +import { l as St } from "./f9d0127a.js"; +import "./f9637058.js"; +var yt = function() { + var e = function(K, s, l, o) { + for (l = l || {}, o = K.length; o--; l[K[o]] = s) + ; + return l; + }, a = [1, 3], r = [1, 4], x = [1, 5], f = [1, 6], d = [1, 7], c = [1, 5, 13, 15, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], g = [1, 5, 6, 13, 15, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], i = [32, 33, 34], y = [2, 7], p = [1, 13], B = [1, 17], N = [1, 18], V = [1, 19], I = [1, 20], b = [1, 21], M = [1, 22], X = [1, 23], C = [1, 24], at = [1, 25], nt = [1, 26], st = [1, 27], U = [1, 30], Q = [1, 31], T = [1, 32], m = [1, 33], _ = [1, 34], t = [1, 35], A = [1, 36], S = [1, 37], k = [1, 38], F = [1, 39], P = [1, 40], v = [1, 41], L = [1, 42], O = [1, 57], Y = [1, 58], z = [5, 22, 26, 32, 33, 34, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51], ct = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, eol: 4, SPACE: 5, QUADRANT: 6, document: 7, line: 8, statement: 9, axisDetails: 10, quadrantDetails: 11, points: 12, title: 13, title_value: 14, acc_title: 15, acc_title_value: 16, acc_descr: 17, acc_descr_value: 18, acc_descr_multiline_value: 19, section: 20, text: 21, point_start: 22, point_x: 23, point_y: 24, "X-AXIS": 25, "AXIS-TEXT-DELIMITER": 26, "Y-AXIS": 27, QUADRANT_1: 28, QUADRANT_2: 29, QUADRANT_3: 30, QUADRANT_4: 31, NEWLINE: 32, SEMI: 33, EOF: 34, alphaNumToken: 35, textNoTagsToken: 36, STR: 37, MD_STR: 38, alphaNum: 39, PUNCTUATION: 40, AMP: 41, NUM: 42, ALPHA: 43, COMMA: 44, PLUS: 45, EQUALS: 46, MULT: 47, DOT: 48, BRKT: 49, UNDERSCORE: 50, MINUS: 51, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 5: "SPACE", 6: "QUADRANT", 13: "title", 14: "title_value", 15: "acc_title", 16: "acc_title_value", 17: "acc_descr", 18: "acc_descr_value", 19: "acc_descr_multiline_value", 20: "section", 22: "point_start", 23: "point_x", 24: "point_y", 25: "X-AXIS", 26: "AXIS-TEXT-DELIMITER", 27: "Y-AXIS", 28: "QUADRANT_1", 29: "QUADRANT_2", 30: "QUADRANT_3", 31: "QUADRANT_4", 32: "NEWLINE", 33: "SEMI", 34: "EOF", 37: "STR", 38: "MD_STR", 40: "PUNCTUATION", 41: "AMP", 42: "NUM", 43: "ALPHA", 44: "COMMA", 45: "PLUS", 46: "EQUALS", 47: "MULT", 48: "DOT", 49: "BRKT", 50: "UNDERSCORE", 51: "MINUS" }, + productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [9, 0], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [12, 4], [10, 4], [10, 3], [10, 2], [10, 4], [10, 3], [10, 2], [11, 2], [11, 2], [11, 2], [11, 2], [4, 1], [4, 1], [4, 1], [21, 1], [21, 2], [21, 1], [21, 1], [39, 1], [39, 2], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [36, 1], [36, 1], [36, 1]], + performAction: function(s, l, o, h, q, n, it) { + var u = n.length - 1; + switch (q) { + case 12: + this.$ = n[u].trim(), h.setDiagramTitle(this.$); + break; + case 13: + this.$ = n[u].trim(), h.setAccTitle(this.$); + break; + case 14: + case 15: + this.$ = n[u].trim(), h.setAccDescription(this.$); + break; + case 16: + h.addSection(n[u].substr(8)), this.$ = n[u].substr(8); + break; + case 17: + h.addPoint(n[u - 3], n[u - 1], n[u]); + break; + case 18: + h.setXAxisLeftText(n[u - 2]), h.setXAxisRightText(n[u]); + break; + case 19: + n[u - 1].text += " ⟶ ", h.setXAxisLeftText(n[u - 1]); + break; + case 20: + h.setXAxisLeftText(n[u]); + break; + case 21: + h.setYAxisBottomText(n[u - 2]), h.setYAxisTopText(n[u]); + break; + case 22: + n[u - 1].text += " ⟶ ", h.setYAxisBottomText(n[u - 1]); + break; + case 23: + h.setYAxisBottomText(n[u]); + break; + case 24: + h.setQuadrant1Text(n[u]); + break; + case 25: + h.setQuadrant2Text(n[u]); + break; + case 26: + h.setQuadrant3Text(n[u]); + break; + case 27: + h.setQuadrant4Text(n[u]); + break; + case 31: + this.$ = { text: n[u], type: "text" }; + break; + case 32: + this.$ = { text: n[u - 1].text + "" + n[u], type: n[u - 1].type }; + break; + case 33: + this.$ = { text: n[u], type: "text" }; + break; + case 34: + this.$ = { text: n[u], type: "markdown" }; + break; + case 35: + this.$ = n[u]; + break; + case 36: + this.$ = n[u - 1] + "" + n[u]; + break; + } + }, + table: [{ 3: 1, 4: 2, 5: a, 6: r, 32: x, 33: f, 34: d }, { 1: [3] }, { 3: 8, 4: 2, 5: a, 6: r, 32: x, 33: f, 34: d }, { 3: 9, 4: 2, 5: a, 6: r, 32: x, 33: f, 34: d }, e(c, [2, 4], { 7: 10 }), e(g, [2, 28]), e(g, [2, 29]), e(g, [2, 30]), { 1: [2, 1] }, { 1: [2, 2] }, e(i, y, { 8: 11, 9: 12, 10: 14, 11: 15, 12: 16, 21: 28, 35: 29, 1: [2, 3], 5: p, 13: B, 15: N, 17: V, 19: I, 20: b, 25: M, 27: X, 28: C, 29: at, 30: nt, 31: st, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }), e(c, [2, 5]), { 4: 43, 32: x, 33: f, 34: d }, e(i, y, { 10: 14, 11: 15, 12: 16, 21: 28, 35: 29, 9: 44, 5: p, 13: B, 15: N, 17: V, 19: I, 20: b, 25: M, 27: X, 28: C, 29: at, 30: nt, 31: st, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }), e(i, [2, 9]), e(i, [2, 10]), e(i, [2, 11]), { 14: [1, 45] }, { 16: [1, 46] }, { 18: [1, 47] }, e(i, [2, 15]), e(i, [2, 16]), { 21: 48, 35: 29, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }, { 21: 49, 35: 29, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }, { 21: 50, 35: 29, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }, { 21: 51, 35: 29, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }, { 21: 52, 35: 29, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }, { 21: 53, 35: 29, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }, { 5: O, 22: [1, 54], 35: 56, 36: 55, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }, e(z, [2, 31]), e(z, [2, 33]), e(z, [2, 34]), e(z, [2, 37]), e(z, [2, 38]), e(z, [2, 39]), e(z, [2, 40]), e(z, [2, 41]), e(z, [2, 42]), e(z, [2, 43]), e(z, [2, 44]), e(z, [2, 45]), e(z, [2, 46]), e(z, [2, 47]), e(c, [2, 6]), e(i, [2, 8]), e(i, [2, 12]), e(i, [2, 13]), e(i, [2, 14]), e(i, [2, 20], { 36: 55, 35: 56, 5: O, 26: [1, 59], 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 23], { 36: 55, 35: 56, 5: O, 26: [1, 60], 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 24], { 36: 55, 35: 56, 5: O, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 25], { 36: 55, 35: 56, 5: O, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 26], { 36: 55, 35: 56, 5: O, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 27], { 36: 55, 35: 56, 5: O, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), { 23: [1, 61] }, e(z, [2, 32]), e(z, [2, 48]), e(z, [2, 49]), e(z, [2, 50]), e(i, [2, 19], { 35: 29, 21: 62, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }), e(i, [2, 22], { 35: 29, 21: 63, 37: U, 38: Q, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L }), { 24: [1, 64] }, e(i, [2, 18], { 36: 55, 35: 56, 5: O, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 21], { 36: 55, 35: 56, 5: O, 40: T, 41: m, 42: _, 43: t, 44: A, 45: S, 46: k, 47: F, 48: P, 49: v, 50: L, 51: Y }), e(i, [2, 17])], + defaultActions: { 8: [2, 1], 9: [2, 2] }, + parseError: function(s, l) { + if (l.recoverable) + this.trace(s); + else { + var o = new Error(s); + throw o.hash = l, o; + } + }, + parse: function(s) { + var l = this, o = [0], h = [], q = [null], n = [], it = this.table, u = "", rt = 0, Tt = 0, Pt = 2, _t = 1, vt = n.slice.call(arguments, 1), E = Object.create(this.lexer), Z = { yy: {} }; + for (var ut in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, ut) && (Z.yy[ut] = this.yy[ut]); + E.setInput(s, Z.yy), Z.yy.lexer = E, Z.yy.parser = this, typeof E.yylloc == "undefined" && (E.yylloc = {}); + var xt = E.yylloc; + n.push(xt); + var Lt = E.options && E.options.ranges; + typeof Z.yy.parseError == "function" ? this.parseError = Z.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function Ct() { + var j; + return j = h.pop() || E.lex() || _t, typeof j != "number" && (j instanceof Array && (h = j, j = h.pop()), j = l.symbols_[j] || j), j; + } + for (var W, J, H, ft, et = {}, lt, $, mt, ot; ; ) { + if (J = o[o.length - 1], this.defaultActions[J] ? H = this.defaultActions[J] : ((W === null || typeof W == "undefined") && (W = Ct()), H = it[J] && it[J][W]), typeof H == "undefined" || !H.length || !H[0]) { + var gt = ""; + ot = []; + for (lt in it[J]) + this.terminals_[lt] && lt > Pt && ot.push("'" + this.terminals_[lt] + "'"); + E.showPosition ? gt = "Parse error on line " + (rt + 1) + `: +` + E.showPosition() + ` +Expecting ` + ot.join(", ") + ", got '" + (this.terminals_[W] || W) + "'" : gt = "Parse error on line " + (rt + 1) + ": Unexpected " + (W == _t ? "end of input" : "'" + (this.terminals_[W] || W) + "'"), this.parseError(gt, { + text: E.match, + token: this.terminals_[W] || W, + line: E.yylineno, + loc: xt, + expected: ot + }); + } + if (H[0] instanceof Array && H.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + J + ", token: " + W); + switch (H[0]) { + case 1: + o.push(W), q.push(E.yytext), n.push(E.yylloc), o.push(H[1]), W = null, Tt = E.yyleng, u = E.yytext, rt = E.yylineno, xt = E.yylloc; + break; + case 2: + if ($ = this.productions_[H[1]][1], et.$ = q[q.length - $], et._$ = { + first_line: n[n.length - ($ || 1)].first_line, + last_line: n[n.length - 1].last_line, + first_column: n[n.length - ($ || 1)].first_column, + last_column: n[n.length - 1].last_column + }, Lt && (et._$.range = [ + n[n.length - ($ || 1)].range[0], + n[n.length - 1].range[1] + ]), ft = this.performAction.apply(et, [ + u, + Tt, + rt, + Z.yy, + H[1], + q, + n + ].concat(vt)), typeof ft != "undefined") + return ft; + $ && (o = o.slice(0, -1 * $ * 2), q = q.slice(0, -1 * $), n = n.slice(0, -1 * $)), o.push(this.productions_[H[1]][0]), q.push(et.$), n.push(et._$), mt = it[o[o.length - 2]][o[o.length - 1]], o.push(mt); + break; + case 3: + return !0; + } + } + return !0; + } + }, Ft = function() { + var K = { + EOF: 1, + parseError: function(l, o) { + if (this.yy.parser) + this.yy.parser.parseError(l, o); + else + throw new Error(l); + }, + // resets the lexer, sets new input + setInput: function(s, l) { + return this.yy = l || this.yy || {}, this._input = s, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var s = this._input[0]; + this.yytext += s, this.yyleng++, this.offset++, this.match += s, this.matched += s; + var l = s.match(/(?:\r\n?|\n).*/g); + return l ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), s; + }, + // unshifts one char (or a string) into the input + unput: function(s) { + var l = s.length, o = s.split(/(?:\r\n?|\n)/g); + this._input = s + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - l), this.offset -= l; + var h = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), o.length - 1 && (this.yylineno -= o.length - 1); + var q = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: o ? (o.length === h.length ? this.yylloc.first_column : 0) + h[h.length - o.length].length - o[0].length : this.yylloc.first_column - l + }, this.options.ranges && (this.yylloc.range = [q[0], q[0] + this.yyleng - l]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(s) { + this.unput(this.match.slice(s)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var s = this.matched.substr(0, this.matched.length - this.match.length); + return (s.length > 20 ? "..." : "") + s.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var s = this.match; + return s.length < 20 && (s += this._input.substr(0, 20 - s.length)), (s.substr(0, 20) + (s.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var s = this.pastInput(), l = new Array(s.length + 1).join("-"); + return s + this.upcomingInput() + ` +` + l + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(s, l) { + var o, h, q; + if (this.options.backtrack_lexer && (q = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (q.yylloc.range = this.yylloc.range.slice(0))), h = s[0].match(/(?:\r\n?|\n).*/g), h && (this.yylineno += h.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: h ? h[h.length - 1].length - h[h.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + s[0].length + }, this.yytext += s[0], this.match += s[0], this.matches = s, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(s[0].length), this.matched += s[0], o = this.performAction.call(this, this.yy, this, l, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), o) + return o; + if (this._backtrack) { + for (var n in q) + this[n] = q[n]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var s, l, o, h; + this._more || (this.yytext = "", this.match = ""); + for (var q = this._currentRules(), n = 0; n < q.length; n++) + if (o = this._input.match(this.rules[q[n]]), o && (!l || o[0].length > l[0].length)) { + if (l = o, h = n, this.options.backtrack_lexer) { + if (s = this.test_match(o, q[n]), s !== !1) + return s; + if (this._backtrack) { + l = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return l ? (s = this.test_match(l, q[h]), s !== !1 ? s : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var l = this.next(); + return l || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(l) { + this.conditionStack.push(l); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var l = this.conditionStack.length - 1; + return l > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(l) { + return l = this.conditionStack.length - 1 - Math.abs(l || 0), l >= 0 ? this.conditionStack[l] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(l) { + this.begin(l); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(l, o, h, q) { + switch (h) { + case 0: + break; + case 1: + break; + case 2: + return 32; + case 3: + break; + case 4: + return this.begin("title"), 13; + case 5: + return this.popState(), "title_value"; + case 6: + return this.begin("acc_title"), 15; + case 7: + return this.popState(), "acc_title_value"; + case 8: + return this.begin("acc_descr"), 17; + case 9: + return this.popState(), "acc_descr_value"; + case 10: + this.begin("acc_descr_multiline"); + break; + case 11: + this.popState(); + break; + case 12: + return "acc_descr_multiline_value"; + case 13: + return 25; + case 14: + return 27; + case 15: + return 26; + case 16: + return 28; + case 17: + return 29; + case 18: + return 30; + case 19: + return 31; + case 20: + this.begin("md_string"); + break; + case 21: + return "MD_STR"; + case 22: + this.popState(); + break; + case 23: + this.begin("string"); + break; + case 24: + this.popState(); + break; + case 25: + return "STR"; + case 26: + return this.begin("point_start"), 22; + case 27: + return this.begin("point_x"), 23; + case 28: + this.popState(); + break; + case 29: + this.popState(), this.begin("point_y"); + break; + case 30: + return this.popState(), 24; + case 31: + return 6; + case 32: + return 43; + case 33: + return "COLON"; + case 34: + return 45; + case 35: + return 44; + case 36: + return 46; + case 37: + return 46; + case 38: + return 47; + case 39: + return 49; + case 40: + return 50; + case 41: + return 48; + case 42: + return 41; + case 43: + return 51; + case 44: + return 42; + case 45: + return 5; + case 46: + return 33; + case 47: + return 40; + case 48: + return 34; + } + }, + rules: [/^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n\r]+)/i, /^(?:%%[^\n]*)/i, /^(?:title\b)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?: *x-axis *)/i, /^(?: *y-axis *)/i, /^(?: *--+> *)/i, /^(?: *quadrant-1 *)/i, /^(?: *quadrant-2 *)/i, /^(?: *quadrant-3 *)/i, /^(?: *quadrant-4 *)/i, /^(?:["][`])/i, /^(?:[^`"]+)/i, /^(?:[`]["])/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:\s*:\s*\[\s*)/i, /^(?:(1)|(0(.\d+)?))/i, /^(?:\s*\] *)/i, /^(?:\s*,\s*)/i, /^(?:(1)|(0(.\d+)?))/i, /^(?: *quadrantChart *)/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:=)/i, /^(?:\*)/i, /^(?:#)/i, /^(?:[\_])/i, /^(?:\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\s)/i, /^(?:;)/i, /^(?:[!"#$%&'*+,-.`?\\_/])/i, /^(?:$)/i], + conditions: { point_y: { rules: [30], inclusive: !1 }, point_x: { rules: [29], inclusive: !1 }, point_start: { rules: [27, 28], inclusive: !1 }, acc_descr_multiline: { rules: [11, 12], inclusive: !1 }, acc_descr: { rules: [9], inclusive: !1 }, acc_title: { rules: [7], inclusive: !1 }, title: { rules: [5], inclusive: !1 }, md_string: { rules: [21, 22], inclusive: !1 }, string: { rules: [24, 25], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 23, 26, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], inclusive: !0 } } + }; + return K; + }(); + ct.lexer = Ft; + function dt() { + this.yy = {}; + } + return dt.prototype = ct, ct.Parser = dt, new dt(); +}(); +yt.parser = yt; +const Ht = yt, R = It(); +class Mt { + constructor() { + this.config = this.getDefaultConfig(), this.themeConfig = this.getDefaultThemeConfig(), this.data = this.getDefaultData(); + } + getDefaultData() { + return { + titleText: "", + quadrant1Text: "", + quadrant2Text: "", + quadrant3Text: "", + quadrant4Text: "", + xAxisLeftText: "", + xAxisRightText: "", + yAxisBottomText: "", + yAxisTopText: "", + points: [] + }; + } + getDefaultConfig() { + var a, r, x, f, d, c, g, i, y, p, B, N, V, I, b, M, X, C; + return { + showXAxis: !0, + showYAxis: !0, + showTitle: !0, + chartHeight: ((a = D.quadrantChart) == null ? void 0 : a.chartWidth) || 500, + chartWidth: ((r = D.quadrantChart) == null ? void 0 : r.chartHeight) || 500, + titlePadding: ((x = D.quadrantChart) == null ? void 0 : x.titlePadding) || 10, + titleFontSize: ((f = D.quadrantChart) == null ? void 0 : f.titleFontSize) || 20, + quadrantPadding: ((d = D.quadrantChart) == null ? void 0 : d.quadrantPadding) || 5, + xAxisLabelPadding: ((c = D.quadrantChart) == null ? void 0 : c.xAxisLabelPadding) || 5, + yAxisLabelPadding: ((g = D.quadrantChart) == null ? void 0 : g.yAxisLabelPadding) || 5, + xAxisLabelFontSize: ((i = D.quadrantChart) == null ? void 0 : i.xAxisLabelFontSize) || 16, + yAxisLabelFontSize: ((y = D.quadrantChart) == null ? void 0 : y.yAxisLabelFontSize) || 16, + quadrantLabelFontSize: ((p = D.quadrantChart) == null ? void 0 : p.quadrantLabelFontSize) || 16, + quadrantTextTopPadding: ((B = D.quadrantChart) == null ? void 0 : B.quadrantTextTopPadding) || 5, + pointTextPadding: ((N = D.quadrantChart) == null ? void 0 : N.pointTextPadding) || 5, + pointLabelFontSize: ((V = D.quadrantChart) == null ? void 0 : V.pointLabelFontSize) || 12, + pointRadius: ((I = D.quadrantChart) == null ? void 0 : I.pointRadius) || 5, + xAxisPosition: ((b = D.quadrantChart) == null ? void 0 : b.xAxisPosition) || "top", + yAxisPosition: ((M = D.quadrantChart) == null ? void 0 : M.yAxisPosition) || "left", + quadrantInternalBorderStrokeWidth: ((X = D.quadrantChart) == null ? void 0 : X.quadrantInternalBorderStrokeWidth) || 1, + quadrantExternalBorderStrokeWidth: ((C = D.quadrantChart) == null ? void 0 : C.quadrantExternalBorderStrokeWidth) || 2 + }; + } + getDefaultThemeConfig() { + return { + quadrant1Fill: R.quadrant1Fill, + quadrant2Fill: R.quadrant2Fill, + quadrant3Fill: R.quadrant3Fill, + quadrant4Fill: R.quadrant4Fill, + quadrant1TextFill: R.quadrant1TextFill, + quadrant2TextFill: R.quadrant2TextFill, + quadrant3TextFill: R.quadrant3TextFill, + quadrant4TextFill: R.quadrant4TextFill, + quadrantPointFill: R.quadrantPointFill, + quadrantPointTextFill: R.quadrantPointTextFill, + quadrantXAxisTextFill: R.quadrantXAxisTextFill, + quadrantYAxisTextFill: R.quadrantYAxisTextFill, + quadrantTitleFill: R.quadrantTitleFill, + quadrantInternalBorderStrokeFill: R.quadrantInternalBorderStrokeFill, + quadrantExternalBorderStrokeFill: R.quadrantExternalBorderStrokeFill + }; + } + clear() { + this.config = this.getDefaultConfig(), this.themeConfig = this.getDefaultThemeConfig(), this.data = this.getDefaultData(), ht.info("clear called"); + } + setData(a) { + this.data = tt(tt({}, this.data), a); + } + addPoints(a) { + this.data.points = [...a, ...this.data.points]; + } + setConfig(a) { + ht.trace("setConfig called with: ", a), this.config = tt(tt({}, this.config), a); + } + setThemeConfig(a) { + ht.trace("setThemeConfig called with: ", a), this.themeConfig = tt(tt({}, this.themeConfig), a); + } + calculateSpace(a, r, x, f) { + const d = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize, c = { + top: a === "top" && r ? d : 0, + bottom: a === "bottom" && r ? d : 0 + }, g = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize, i = { + left: this.config.yAxisPosition === "left" && x ? g : 0, + right: this.config.yAxisPosition === "right" && x ? g : 0 + }, y = this.config.titleFontSize + this.config.titlePadding * 2, p = { + top: f ? y : 0 + }, B = this.config.quadrantPadding + i.left, N = this.config.quadrantPadding + c.top + p.top, V = this.config.chartWidth - this.config.quadrantPadding * 2 - i.left - i.right, I = this.config.chartHeight - this.config.quadrantPadding * 2 - c.top - c.bottom - p.top, b = V / 2, M = I / 2; + return { + xAxisSpace: c, + yAxisSpace: i, + titleSpace: p, + quadrantSpace: { + quadrantLeft: B, + quadrantTop: N, + quadrantWidth: V, + quadrantHalfWidth: b, + quadrantHeight: I, + quadrantHalfHeight: M + } + }; + } + getAxisLabels(a, r, x, f) { + const { quadrantSpace: d, titleSpace: c } = f, { + quadrantHalfHeight: g, + quadrantHeight: i, + quadrantLeft: y, + quadrantHalfWidth: p, + quadrantTop: B, + quadrantWidth: N + } = d, V = !!this.data.xAxisRightText, I = !!this.data.yAxisTopText, b = []; + return this.data.xAxisLeftText && r && b.push({ + text: this.data.xAxisLeftText, + fill: this.themeConfig.quadrantXAxisTextFill, + x: y + (V ? p / 2 : 0), + y: a === "top" ? this.config.xAxisLabelPadding + c.top : this.config.xAxisLabelPadding + B + i + this.config.quadrantPadding, + fontSize: this.config.xAxisLabelFontSize, + verticalPos: V ? "center" : "left", + horizontalPos: "top", + rotation: 0 + }), this.data.xAxisRightText && r && b.push({ + text: this.data.xAxisRightText, + fill: this.themeConfig.quadrantXAxisTextFill, + x: y + p + (V ? p / 2 : 0), + y: a === "top" ? this.config.xAxisLabelPadding + c.top : this.config.xAxisLabelPadding + B + i + this.config.quadrantPadding, + fontSize: this.config.xAxisLabelFontSize, + verticalPos: V ? "center" : "left", + horizontalPos: "top", + rotation: 0 + }), this.data.yAxisBottomText && x && b.push({ + text: this.data.yAxisBottomText, + fill: this.themeConfig.quadrantYAxisTextFill, + x: this.config.yAxisPosition === "left" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + y + N + this.config.quadrantPadding, + y: B + i - (I ? g / 2 : 0), + fontSize: this.config.yAxisLabelFontSize, + verticalPos: I ? "center" : "left", + horizontalPos: "top", + rotation: -90 + }), this.data.yAxisTopText && x && b.push({ + text: this.data.yAxisTopText, + fill: this.themeConfig.quadrantYAxisTextFill, + x: this.config.yAxisPosition === "left" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + y + N + this.config.quadrantPadding, + y: B + g - (I ? g / 2 : 0), + fontSize: this.config.yAxisLabelFontSize, + verticalPos: I ? "center" : "left", + horizontalPos: "top", + rotation: -90 + }), b; + } + getQuadrants(a) { + const { quadrantSpace: r } = a, { quadrantHalfHeight: x, quadrantLeft: f, quadrantHalfWidth: d, quadrantTop: c } = r, g = [ + { + text: { + text: this.data.quadrant1Text, + fill: this.themeConfig.quadrant1TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: f + d, + y: c, + width: d, + height: x, + fill: this.themeConfig.quadrant1Fill + }, + { + text: { + text: this.data.quadrant2Text, + fill: this.themeConfig.quadrant2TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: f, + y: c, + width: d, + height: x, + fill: this.themeConfig.quadrant2Fill + }, + { + text: { + text: this.data.quadrant3Text, + fill: this.themeConfig.quadrant3TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: f, + y: c + x, + width: d, + height: x, + fill: this.themeConfig.quadrant3Fill + }, + { + text: { + text: this.data.quadrant4Text, + fill: this.themeConfig.quadrant4TextFill, + x: 0, + y: 0, + fontSize: this.config.quadrantLabelFontSize, + verticalPos: "center", + horizontalPos: "middle", + rotation: 0 + }, + x: f + d, + y: c + x, + width: d, + height: x, + fill: this.themeConfig.quadrant4Fill + } + ]; + for (const i of g) + i.text.x = i.x + i.width / 2, this.data.points.length === 0 ? (i.text.y = i.y + i.height / 2, i.text.horizontalPos = "middle") : (i.text.y = i.y + this.config.quadrantTextTopPadding, i.text.horizontalPos = "top"); + return g; + } + getQuadrantPoints(a) { + const { quadrantSpace: r } = a, { quadrantHeight: x, quadrantLeft: f, quadrantTop: d, quadrantWidth: c } = r, g = St().domain([0, 1]).range([f, c + f]), i = St().domain([0, 1]).range([x + d, d]); + return this.data.points.map((p) => ({ + x: g(p.x), + y: i(p.y), + fill: this.themeConfig.quadrantPointFill, + radius: this.config.pointRadius, + text: { + text: p.text, + fill: this.themeConfig.quadrantPointTextFill, + x: g(p.x), + y: i(p.y) + this.config.pointTextPadding, + verticalPos: "center", + horizontalPos: "top", + fontSize: this.config.pointLabelFontSize, + rotation: 0 + } + })); + } + getBorders(a) { + const r = this.config.quadrantExternalBorderStrokeWidth / 2, { quadrantSpace: x } = a, { + quadrantHalfHeight: f, + quadrantHeight: d, + quadrantLeft: c, + quadrantHalfWidth: g, + quadrantTop: i, + quadrantWidth: y + } = x; + return [ + // top border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: c - r, + y1: i, + x2: c + y + r, + y2: i + }, + // right border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: c + y, + y1: i + r, + x2: c + y, + y2: i + d - r + }, + // bottom border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: c - r, + y1: i + d, + x2: c + y + r, + y2: i + d + }, + // left border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: c, + y1: i + r, + x2: c, + y2: i + d - r + }, + // vertical inner border + { + strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, + strokeWidth: this.config.quadrantInternalBorderStrokeWidth, + x1: c + g, + y1: i + r, + x2: c + g, + y2: i + d - r + }, + // horizontal inner border + { + strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, + strokeWidth: this.config.quadrantInternalBorderStrokeWidth, + x1: c + r, + y1: i + f, + x2: c + y - r, + y2: i + f + } + ]; + } + getTitle(a) { + if (a) + return { + text: this.data.titleText, + fill: this.themeConfig.quadrantTitleFill, + fontSize: this.config.titleFontSize, + horizontalPos: "top", + verticalPos: "center", + rotation: 0, + y: this.config.titlePadding, + x: this.config.chartWidth / 2 + }; + } + build() { + const a = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText), r = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText), x = this.config.showTitle && !!this.data.titleText, f = this.data.points.length > 0 ? "bottom" : this.config.xAxisPosition, d = this.calculateSpace(f, a, r, x); + return { + points: this.getQuadrantPoints(d), + quadrants: this.getQuadrants(d), + axisLabels: this.getAxisLabels(f, a, r, d), + borderLines: this.getBorders(d), + title: this.getTitle(x) + }; + } +} +const Xt = qt(); +function G(e) { + return Qt(e.trim(), Xt); +} +const w = new Mt(); +function Ot(e) { + w.setData({ quadrant1Text: G(e.text) }); +} +function Yt(e) { + w.setData({ quadrant2Text: G(e.text) }); +} +function $t(e) { + w.setData({ quadrant3Text: G(e.text) }); +} +function jt(e) { + w.setData({ quadrant4Text: G(e.text) }); +} +function Gt(e) { + w.setData({ xAxisLeftText: G(e.text) }); +} +function Kt(e) { + w.setData({ xAxisRightText: G(e.text) }); +} +function Zt(e) { + w.setData({ yAxisTopText: G(e.text) }); +} +function Jt(e) { + w.setData({ yAxisBottomText: G(e.text) }); +} +function te(e, a, r) { + w.addPoints([{ x: a, y: r, text: G(e.text) }]); +} +function ee(e) { + w.setConfig({ chartWidth: e }); +} +function ie(e) { + w.setConfig({ chartHeight: e }); +} +function ae() { + const e = qt(), { themeVariables: a, quadrantChart: r } = e; + return r && w.setConfig(r), w.setThemeConfig({ + quadrant1Fill: a.quadrant1Fill, + quadrant2Fill: a.quadrant2Fill, + quadrant3Fill: a.quadrant3Fill, + quadrant4Fill: a.quadrant4Fill, + quadrant1TextFill: a.quadrant1TextFill, + quadrant2TextFill: a.quadrant2TextFill, + quadrant3TextFill: a.quadrant3TextFill, + quadrant4TextFill: a.quadrant4TextFill, + quadrantPointFill: a.quadrantPointFill, + quadrantPointTextFill: a.quadrantPointTextFill, + quadrantXAxisTextFill: a.quadrantXAxisTextFill, + quadrantYAxisTextFill: a.quadrantYAxisTextFill, + quadrantExternalBorderStrokeFill: a.quadrantExternalBorderStrokeFill, + quadrantInternalBorderStrokeFill: a.quadrantInternalBorderStrokeFill, + quadrantTitleFill: a.quadrantTitleFill + }), w.setData({ titleText: kt() }), w.build(); +} +const ne = function() { + w.clear(), Nt(); +}, se = { + setWidth: ee, + setHeight: ie, + setQuadrant1Text: Ot, + setQuadrant2Text: Yt, + setQuadrant3Text: $t, + setQuadrant4Text: jt, + setXAxisLeftText: Gt, + setXAxisRightText: Kt, + setYAxisTopText: Zt, + setYAxisBottomText: Jt, + addPoint: te, + getQuadrantData: ae, + clear: ne, + setAccTitle: Bt, + getAccTitle: wt, + setDiagramTitle: Rt, + getDiagramTitle: kt, + getAccDescription: Vt, + setAccDescription: Wt +}, re = (e, a, r, x) => { + var f, d, c; + function g(t) { + return t === "top" ? "hanging" : "middle"; + } + function i(t) { + return t === "left" ? "start" : "middle"; + } + function y(t) { + return `translate(${t.x}, ${t.y}) rotate(${t.rotation || 0})`; + } + const p = qt(); + ht.debug(`Rendering quadrant chart +` + e); + const B = p.securityLevel; + let N; + B === "sandbox" && (N = pt("#i" + a)); + const I = (B === "sandbox" ? pt(N.nodes()[0].contentDocument.body) : pt("body")).select(`[id="${a}"]`), b = I.append("g").attr("class", "main"), M = ((f = p.quadrantChart) == null ? void 0 : f.chartWidth) || 500, X = ((d = p.quadrantChart) == null ? void 0 : d.chartHeight) || 500; + Ut(I, X, M, ((c = p.quadrantChart) == null ? void 0 : c.useMaxWidth) || !0), I.attr("viewBox", "0 0 " + M + " " + X), x.db.setHeight(X), x.db.setWidth(M); + const C = x.db.getQuadrantData(), at = b.append("g").attr("class", "quadrants"), nt = b.append("g").attr("class", "border"), st = b.append("g").attr("class", "data-points"), U = b.append("g").attr("class", "labels"), Q = b.append("g").attr("class", "title"); + C.title && Q.append("text").attr("x", 0).attr("y", 0).attr("fill", C.title.fill).attr("font-size", C.title.fontSize).attr("dominant-baseline", g(C.title.horizontalPos)).attr("text-anchor", i(C.title.verticalPos)).attr("transform", y(C.title)).text(C.title.text), C.borderLines && nt.selectAll("line").data(C.borderLines).enter().append("line").attr("x1", (t) => t.x1).attr("y1", (t) => t.y1).attr("x2", (t) => t.x2).attr("y2", (t) => t.y2).style("stroke", (t) => t.strokeFill).style("stroke-width", (t) => t.strokeWidth); + const T = at.selectAll("g.quadrant").data(C.quadrants).enter().append("g").attr("class", "quadrant"); + T.append("rect").attr("x", (t) => t.x).attr("y", (t) => t.y).attr("width", (t) => t.width).attr("height", (t) => t.height).attr("fill", (t) => t.fill), T.append("text").attr("x", 0).attr("y", 0).attr("fill", (t) => t.text.fill).attr("font-size", (t) => t.text.fontSize).attr( + "dominant-baseline", + (t) => g(t.text.horizontalPos) + ).attr("text-anchor", (t) => i(t.text.verticalPos)).attr("transform", (t) => y(t.text)).text((t) => t.text.text), U.selectAll("g.label").data(C.axisLabels).enter().append("g").attr("class", "label").append("text").attr("x", 0).attr("y", 0).text((t) => t.text).attr("fill", (t) => t.fill).attr("font-size", (t) => t.fontSize).attr("dominant-baseline", (t) => g(t.horizontalPos)).attr("text-anchor", (t) => i(t.verticalPos)).attr("transform", (t) => y(t)); + const _ = st.selectAll("g.data-point").data(C.points).enter().append("g").attr("class", "data-point"); + _.append("circle").attr("cx", (t) => t.x).attr("cy", (t) => t.y).attr("r", (t) => t.radius).attr("fill", (t) => t.fill), _.append("text").attr("x", 0).attr("y", 0).text((t) => t.text.text).attr("fill", (t) => t.text.fill).attr("font-size", (t) => t.text.fontSize).attr( + "dominant-baseline", + (t) => g(t.text.horizontalPos) + ).attr("text-anchor", (t) => i(t.text.verticalPos)).attr("transform", (t) => y(t.text)); +}, le = { + draw: re +}, ue = { + parser: Ht, + db: se, + renderer: le, + styles: () => "" +}; +export { + ue as diagram +}; diff --git a/client/packages/lowcoder/public/package/5f94a727.js b/client/packages/lowcoder/public/package/5f94a727.js new file mode 100644 index 000000000..b29db394a --- /dev/null +++ b/client/packages/lowcoder/public/package/5f94a727.js @@ -0,0 +1,819 @@ +var U = (r, e, t) => new Promise((n, a) => { + var s = (l) => { + try { + o(t.next(l)); + } catch (d) { + a(d); + } + }, i = (l) => { + try { + o(t.throw(l)); + } catch (d) { + a(d); + } + }, o = (l) => l.done ? n(l.value) : Promise.resolve(l.value).then(s, i); + o((t = t.apply(r, e)).next()); +}); +import { p as _t, f as z } from "./18068d52.js"; +import { h as S, f as et, G as Et } from "./4504d077.js"; +import { j as x, p as $, q as H, r as rt, e as G, t as at, m as nt, l as R, u as Y, v as Tt } from "./08856db2.js"; +import { u as Nt, r as At, p as Ct, l as It, d as M } from "./666097a3.js"; +import { a as N, b as st, i as it, c as E, e as ot, d as lt, f as Bt, g as Mt, s as Dt } from "./0c155f84.js"; +import { l as Rt } from "./8e8be6e8.js"; +import "./7ca39633.js"; +import "./289514c9.js"; +import "./691304fa.js"; +import "./f69b998c.js"; +import "./85051678.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +function Gt(r) { + if (!r.ok) + throw new Error(r.status + " " + r.statusText); + return r.text(); +} +function Pt(r, e) { + return fetch(r, e).then(Gt); +} +function Ut(r) { + return (e, t) => Pt(e, t).then((n) => new DOMParser().parseFromString(n, r)); +} +var $t = Ut("image/svg+xml"), X = { + normal: Vt, + vee: zt, + undirected: Yt +}; +function Wt(r) { + X = r; +} +function Vt(r, e, t, n) { + var a = r.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto"), s = a.append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + N(s, t[n + "Style"]), t[n + "Class"] && s.attr("class", t[n + "Class"]); +} +function zt(r, e, t, n) { + var a = r.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto"), s = a.append("path").attr("d", "M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + N(s, t[n + "Style"]), t[n + "Class"] && s.attr("class", t[n + "Class"]); +} +function Yt(r, e, t, n) { + var a = r.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto"), s = a.append("path").attr("d", "M 0 5 L 10 5").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + N(s, t[n + "Style"]), t[n + "Class"] && s.attr("class", t[n + "Class"]); +} +function Ht(r, e) { + var t = r; + return t.node().appendChild(e.label), N(t, e.labelStyle), t; +} +function Xt(r, e) { + for (var t = r.append("text"), n = Ft(e.label).split(` +`), a = 0; a < n.length; a++) + t.append("tspan").attr("xml:space", "preserve").attr("dy", "1em").attr("x", "1").text(n[a]); + return N(t, e.labelStyle), t; +} +function Ft(r) { + for (var e = "", t = !1, n, a = 0; a < r.length; ++a) + if (n = r[a], t) { + switch (n) { + case "n": + e += ` +`; + break; + default: + e += n; + } + t = !1; + } else + n === "\\" ? t = !0 : e += n; + return e; +} +function Z(r, e, t) { + var n = e.label, a = r.append("g"); + e.labelType === "svg" ? Ht(a, e) : typeof n != "string" || e.labelType === "html" ? st(a, e) : Xt(a, e); + var s = a.node().getBBox(), i; + switch (t) { + case "top": + i = -e.height / 2; + break; + case "bottom": + i = e.height / 2 - s.height; + break; + default: + i = -s.height / 2; + } + return a.attr("transform", "translate(" + -s.width / 2 + "," + i + ")"), a; +} +var F = function(r, e) { + var t = e.nodes().filter(function(s) { + return it(e, s); + }), n = r.selectAll("g.cluster").data(t, function(s) { + return s; + }); + E(n.exit(), e).style("opacity", 0).remove(); + var a = n.enter().append("g").attr("class", "cluster").attr("id", function(s) { + var i = e.node(s); + return i.id; + }).style("opacity", 0).each(function(s) { + var i = e.node(s), o = x(this); + x(this).append("rect"); + var l = o.append("g").attr("class", "label"); + Z(l, i, i.clusterLabelPos); + }); + return n = n.merge(a), n = E(n, e).style("opacity", 1), n.selectAll("rect").each(function(s) { + var i = e.node(s), o = x(this); + N(o, i.style); + }), n; +}; +function qt(r) { + F = r; +} +let q = function(r, e) { + var t = r.selectAll("g.edgeLabel").data(e.edges(), function(a) { + return ot(a); + }).classed("update", !0); + t.exit().remove(), t.enter().append("g").classed("edgeLabel", !0).style("opacity", 0), t = r.selectAll("g.edgeLabel"), t.each(function(a) { + var s = x(this); + s.select(".label").remove(); + var i = e.edge(a), o = Z(s, e.edge(a), 0).classed("label", !0), l = o.node().getBBox(); + i.labelId && o.attr("id", i.labelId), S(i, "width") || (i.width = l.width), S(i, "height") || (i.height = l.height); + }); + var n; + return t.exit ? n = t.exit() : n = t.selectAll(null), E(n, e).style("opacity", 0).remove(), t; +}; +function Qt(r) { + q = r; +} +function j(r, e) { + return r.intersect(e); +} +var Q = function(r, e, t) { + var n = r.selectAll("g.edgePath").data(e.edges(), function(i) { + return ot(i); + }).classed("update", !0), a = jt(n, e); + te(n, e); + var s = n.merge !== void 0 ? n.merge(a) : n; + return E(s, e).style("opacity", 1), s.each(function(i) { + var o = x(this), l = e.edge(i); + l.elem = this, l.id && o.attr("id", l.id), lt( + o, + l.class, + (o.classed("update") ? "update " : "") + "edgePath" + ); + }), s.selectAll("path.path").each(function(i) { + var o = e.edge(i); + o.arrowheadId = Nt("arrowhead"); + var l = x(this).attr("marker-end", function() { + return "url(" + Jt(location.href, o.arrowheadId) + ")"; + }).style("fill", "none"); + E(l, e).attr("d", function(d) { + return Zt(e, d); + }), N(l, o.style); + }), s.selectAll("defs *").remove(), s.selectAll("defs").each(function(i) { + var o = e.edge(i), l = t[o.arrowhead]; + l(x(this), o.arrowheadId, o, "arrowhead"); + }), s; +}; +function Kt(r) { + Q = r; +} +function Jt(r, e) { + var t = r.split("#")[0]; + return t + "#" + e; +} +function Zt(r, e) { + var t = r.edge(e), n = r.node(e.v), a = r.node(e.w), s = t.points.slice(1, t.points.length - 1); + return s.unshift(j(n, s[0])), s.push(j(a, s[s.length - 1])), ct(t, s); +} +function ct(r, e) { + var t = (Rt || $t.line)().x(function(n) { + return n.x; + }).y(function(n) { + return n.y; + }); + return (t.curve || t.interpolate)(r.curve), t(e); +} +function Ot(r) { + var e = r.getBBox(), t = r.ownerSVGElement.getScreenCTM().inverse().multiply(r.getScreenCTM()).translate(e.width / 2, e.height / 2); + return { x: t.e, y: t.f }; +} +function jt(r, e) { + var t = r.enter().append("g").attr("class", "edgePath").style("opacity", 0); + return t.append("path").attr("class", "path").attr("d", function(n) { + var a = e.edge(n), s = e.node(n.v).elem, i = At(a.points.length).map(function() { + return Ot(s); + }); + return ct(a, i); + }), t.append("defs"), t; +} +function te(r, e) { + var t = r.exit(); + E(t, e).style("opacity", 0).remove(); +} +var K = function(r, e, t) { + var n = e.nodes().filter(function(i) { + return !it(e, i); + }), a = r.selectAll("g.node").data(n, function(i) { + return i; + }).classed("update", !0); + a.exit().remove(), a.enter().append("g").attr("class", "node").style("opacity", 0), a = r.selectAll("g.node"), a.each(function(i) { + var o = e.node(i), l = x(this); + lt( + l, + o.class, + (l.classed("update") ? "update " : "") + "node" + ), l.select("g.label").remove(); + var d = l.append("g").attr("class", "label"), c = Z(d, o), v = t[o.shape], h = Ct(c.node().getBBox(), "width", "height"); + o.elem = this, o.id && l.attr("id", o.id), o.labelId && d.attr("id", o.labelId), S(o, "width") && (h.width = o.width), S(o, "height") && (h.height = o.height), h.width += o.paddingLeft + o.paddingRight, h.height += o.paddingTop + o.paddingBottom, d.attr( + "transform", + "translate(" + (o.paddingLeft - o.paddingRight) / 2 + "," + (o.paddingTop - o.paddingBottom) / 2 + ")" + ); + var u = x(this); + u.select(".label-container").remove(); + var p = v(u, h, o).classed("label-container", !0); + N(p, o.style); + var y = p.node().getBBox(); + o.width = y.width, o.height = y.height; + }); + var s; + return a.exit ? s = a.exit() : s = a.selectAll(null), E(s, e).style("opacity", 0).remove(), a; +}; +function ee(r) { + K = r; +} +function re(r, e) { + var t = r.filter(function() { + return !x(this).classed("update"); + }); + function n(a) { + var s = e.node(a); + return "translate(" + s.x + "," + s.y + ")"; + } + t.attr("transform", n), E(r, e).style("opacity", 1).attr("transform", n), E(t.selectAll("rect"), e).attr("width", function(a) { + return e.node(a).width; + }).attr("height", function(a) { + return e.node(a).height; + }).attr("x", function(a) { + var s = e.node(a); + return -s.width / 2; + }).attr("y", function(a) { + var s = e.node(a); + return -s.height / 2; + }); +} +function ae(r, e) { + var t = r.filter(function() { + return !x(this).classed("update"); + }); + function n(a) { + var s = e.edge(a); + return S(s, "x") ? "translate(" + s.x + "," + s.y + ")" : ""; + } + t.attr("transform", n), E(r, e).style("opacity", 1).attr("transform", n); +} +function ne(r, e) { + var t = r.filter(function() { + return !x(this).classed("update"); + }); + function n(a) { + var s = e.node(a); + return "translate(" + s.x + "," + s.y + ")"; + } + t.attr("transform", n), E(r, e).style("opacity", 1).attr("transform", n); +} +function dt(r, e, t, n) { + var a = r.x, s = r.y, i = a - n.x, o = s - n.y, l = Math.sqrt(e * e * o * o + t * t * i * i), d = Math.abs(e * t * i / l); + n.x < a && (d = -d); + var c = Math.abs(e * t * o / l); + return n.y < s && (c = -c), { x: a + d, y: s + c }; +} +function se(r, e, t) { + return dt(r, e, e, t); +} +function ie(r, e, t, n) { + var a, s, i, o, l, d, c, v, h, u, p, y, f, g, k; + if (a = e.y - r.y, i = r.x - e.x, l = e.x * r.y - r.x * e.y, h = a * t.x + i * t.y + l, u = a * n.x + i * n.y + l, !(h !== 0 && u !== 0 && tt(h, u)) && (s = n.y - t.y, o = t.x - n.x, d = n.x * t.y - t.x * n.y, c = s * r.x + o * r.y + d, v = s * e.x + o * e.y + d, !(c !== 0 && v !== 0 && tt(c, v)) && (p = a * o - s * i, p !== 0))) + return y = Math.abs(p / 2), f = i * d - o * l, g = f < 0 ? (f - y) / p : (f + y) / p, f = s * l - a * d, k = f < 0 ? (f - y) / p : (f + y) / p, { x: g, y: k }; +} +function tt(r, e) { + return r * e > 0; +} +function T(r, e, t) { + var n = r.x, a = r.y, s = [], i = Number.POSITIVE_INFINITY, o = Number.POSITIVE_INFINITY; + e.forEach(function(p) { + i = Math.min(i, p.x), o = Math.min(o, p.y); + }); + for (var l = n - r.width / 2 - i, d = a - r.height / 2 - o, c = 0; c < e.length; c++) { + var v = e[c], h = e[c < e.length - 1 ? c + 1 : 0], u = ie( + r, + t, + { x: l + v.x, y: d + v.y }, + { x: l + h.x, y: d + h.y } + ); + u && s.push(u); + } + return s.length ? (s.length > 1 && s.sort(function(p, y) { + var f = p.x - t.x, g = p.y - t.y, k = Math.sqrt(f * f + g * g), I = y.x - t.x, _ = y.y - t.y, W = Math.sqrt(I * I + _ * _); + return k < W ? -1 : k === W ? 0 : 1; + }), s[0]) : (console.log("NO INTERSECTION FOUND, RETURN NODE CENTER", r), r); +} +function O(r, e) { + var t = r.x, n = r.y, a = e.x - t, s = e.y - n, i = r.width / 2, o = r.height / 2, l, d; + return Math.abs(s) * i > Math.abs(a) * o ? (s < 0 && (o = -o), l = s === 0 ? 0 : o * a / s, d = o) : (a < 0 && (i = -i), l = i, d = a === 0 ? 0 : i * s / a), { x: t + l, y: n + d }; +} +var J = { + rect: le, + ellipse: ce, + circle: de, + diamond: he +}; +function oe(r) { + J = r; +} +function le(r, e, t) { + var n = r.insert("rect", ":first-child").attr("rx", t.rx).attr("ry", t.ry).attr("x", -e.width / 2).attr("y", -e.height / 2).attr("width", e.width).attr("height", e.height); + return t.intersect = function(a) { + return O(t, a); + }, n; +} +function ce(r, e, t) { + var n = e.width / 2, a = e.height / 2, s = r.insert("ellipse", ":first-child").attr("x", -e.width / 2).attr("y", -e.height / 2).attr("rx", n).attr("ry", a); + return t.intersect = function(i) { + return dt(t, n, a, i); + }, s; +} +function de(r, e, t) { + var n = Math.max(e.width, e.height) / 2, a = r.insert("circle", ":first-child").attr("x", -e.width / 2).attr("y", -e.height / 2).attr("r", n); + return t.intersect = function(s) { + return se(t, n, s); + }, a; +} +function he(r, e, t) { + var n = e.width * Math.SQRT2 / 2, a = e.height * Math.SQRT2 / 2, s = [ + { x: 0, y: -a }, + { x: -n, y: 0 }, + { x: 0, y: a }, + { x: n, y: 0 } + ], i = r.insert("polygon", ":first-child").attr( + "points", + s.map(function(o) { + return o.x + "," + o.y; + }).join(" ") + ); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function ue() { + var r = function(e, t) { + ve(t); + var n = D(e, "output"), a = D(n, "clusters"), s = D(n, "edgePaths"), i = q(D(n, "edgeLabels"), t), o = K(D(n, "nodes"), t, J); + It(t), ne(o, t), ae(i, t), Q(s, t, X); + var l = F(a, t); + re(l, t), ge(t); + }; + return r.createNodes = function(e) { + return arguments.length ? (ee(e), r) : K; + }, r.createClusters = function(e) { + return arguments.length ? (qt(e), r) : F; + }, r.createEdgeLabels = function(e) { + return arguments.length ? (Qt(e), r) : q; + }, r.createEdgePaths = function(e) { + return arguments.length ? (Kt(e), r) : Q; + }, r.shapes = function(e) { + return arguments.length ? (oe(e), r) : J; + }, r.arrows = function(e) { + return arguments.length ? (Wt(e), r) : X; + }, r; +} +var fe = { + paddingLeft: 10, + paddingRight: 10, + paddingTop: 10, + paddingBottom: 10, + rx: 0, + ry: 0, + shape: "rect" +}, pe = { + arrowhead: "normal", + curve: $ +}; +function ve(r) { + r.nodes().forEach(function(e) { + var t = r.node(e); + !S(t, "label") && !r.children(e).length && (t.label = e), S(t, "paddingX") && M(t, { + paddingLeft: t.paddingX, + paddingRight: t.paddingX + }), S(t, "paddingY") && M(t, { + paddingTop: t.paddingY, + paddingBottom: t.paddingY + }), S(t, "padding") && M(t, { + paddingLeft: t.padding, + paddingRight: t.padding, + paddingTop: t.padding, + paddingBottom: t.padding + }), M(t, fe), et(["paddingLeft", "paddingRight", "paddingTop", "paddingBottom"], function(n) { + t[n] = Number(t[n]); + }), S(t, "width") && (t._prevWidth = t.width), S(t, "height") && (t._prevHeight = t.height); + }), r.edges().forEach(function(e) { + var t = r.edge(e); + S(t, "label") || (t.label = ""), M(t, pe); + }); +} +function ge(r) { + et(r.nodes(), function(e) { + var t = r.node(e); + S(t, "_prevWidth") ? t.width = t._prevWidth : delete t.width, S(t, "_prevHeight") ? t.height = t._prevHeight : delete t.height, delete t._prevWidth, delete t._prevHeight; + }); +} +function D(r, e) { + var t = r.select("g." + e); + return t.empty() && (t = r.append("g").attr("class", e)), t; +} +function ht(r, e, t) { + const n = e.width, a = e.height, s = (n + a) * 0.9, i = [ + { x: s / 2, y: 0 }, + { x: s, y: -s / 2 }, + { x: s / 2, y: -s }, + { x: 0, y: -s / 2 } + ], o = A(r, s, s, i); + return t.intersect = function(l) { + return T(t, i, l); + }, o; +} +function ut(r, e, t) { + const a = e.height, s = a / 4, i = e.width + 2 * s, o = [ + { x: s, y: 0 }, + { x: i - s, y: 0 }, + { x: i, y: -a / 2 }, + { x: i - s, y: -a }, + { x: s, y: -a }, + { x: 0, y: -a / 2 } + ], l = A(r, i, a, o); + return t.intersect = function(d) { + return T(t, o, d); + }, l; +} +function ft(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: -a / 2, y: 0 }, + { x: n, y: 0 }, + { x: n, y: -a }, + { x: -a / 2, y: -a }, + { x: 0, y: -a / 2 } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function pt(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: -2 * a / 6, y: 0 }, + { x: n - a / 6, y: 0 }, + { x: n + 2 * a / 6, y: -a }, + { x: a / 6, y: -a } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function vt(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: 2 * a / 6, y: 0 }, + { x: n + a / 6, y: 0 }, + { x: n - 2 * a / 6, y: -a }, + { x: -a / 6, y: -a } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function gt(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: -2 * a / 6, y: 0 }, + { x: n + 2 * a / 6, y: 0 }, + { x: n - a / 6, y: -a }, + { x: a / 6, y: -a } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function yt(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: a / 6, y: 0 }, + { x: n - a / 6, y: 0 }, + { x: n + 2 * a / 6, y: -a }, + { x: -2 * a / 6, y: -a } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function wt(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: 0, y: 0 }, + { x: n + a / 2, y: 0 }, + { x: n, y: -a / 2 }, + { x: n + a / 2, y: -a }, + { x: 0, y: -a } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function mt(r, e, t) { + const n = e.height, a = e.width + n / 4, s = r.insert("rect", ":first-child").attr("rx", n / 2).attr("ry", n / 2).attr("x", -a / 2).attr("y", -n / 2).attr("width", a).attr("height", n); + return t.intersect = function(i) { + return O(t, i); + }, s; +} +function xt(r, e, t) { + const n = e.width, a = e.height, s = [ + { x: 0, y: 0 }, + { x: n, y: 0 }, + { x: n, y: -a }, + { x: 0, y: -a }, + { x: 0, y: 0 }, + { x: -8, y: 0 }, + { x: n + 8, y: 0 }, + { x: n + 8, y: -a }, + { x: -8, y: -a }, + { x: -8, y: 0 } + ], i = A(r, n, a, s); + return t.intersect = function(o) { + return T(t, s, o); + }, i; +} +function bt(r, e, t) { + const n = e.width, a = n / 2, s = a / (2.5 + n / 50), i = e.height + s, o = "M 0," + s + " a " + a + "," + s + " 0,0,0 " + n + " 0 a " + a + "," + s + " 0,0,0 " + -n + " 0 l 0," + i + " a " + a + "," + s + " 0,0,0 " + n + " 0 l 0," + -i, l = r.attr("label-offset-y", s).insert("path", ":first-child").attr("d", o).attr("transform", "translate(" + -n / 2 + "," + -(i / 2 + s) + ")"); + return t.intersect = function(d) { + const c = O(t, d), v = c.x - t.x; + if (a != 0 && (Math.abs(v) < t.width / 2 || Math.abs(v) == t.width / 2 && Math.abs(c.y - t.y) > t.height / 2 - s)) { + let h = s * s * (1 - v * v / (a * a)); + h != 0 && (h = Math.sqrt(h)), h = s - h, d.y - t.y > 0 && (h = -h), c.y += h; + } + return c; + }, l; +} +function ye(r) { + r.shapes().question = ht, r.shapes().hexagon = ut, r.shapes().stadium = mt, r.shapes().subroutine = xt, r.shapes().cylinder = bt, r.shapes().rect_left_inv_arrow = ft, r.shapes().lean_right = pt, r.shapes().lean_left = vt, r.shapes().trapezoid = gt, r.shapes().inv_trapezoid = yt, r.shapes().rect_right_inv_arrow = wt; +} +function we(r) { + r({ question: ht }), r({ hexagon: ut }), r({ stadium: mt }), r({ subroutine: xt }), r({ cylinder: bt }), r({ rect_left_inv_arrow: ft }), r({ lean_right: pt }), r({ lean_left: vt }), r({ trapezoid: gt }), r({ inv_trapezoid: yt }), r({ rect_right_inv_arrow: wt }); +} +function A(r, e, t, n) { + return r.insert("polygon", ":first-child").attr( + "points", + n.map(function(a) { + return a.x + "," + a.y; + }).join(" ") + ).attr("transform", "translate(" + -e / 2 + "," + t / 2 + ")"); +} +const me = { + addToRender: ye, + addToRenderV2: we +}, kt = {}, xe = function(r) { + const e = Object.keys(r); + for (const t of e) + kt[t] = r[t]; +}, St = function(r, e, t, n, a, s) { + return U(this, null, function* () { + const i = n ? n.select(`[id="${t}"]`) : x(`[id="${t}"]`), o = a || document, l = Object.keys(r); + for (const d of l) { + const c = r[d]; + let v = "default"; + c.classes.length > 0 && (v = c.classes.join(" ")); + const h = H(c.styles); + let u = c.text !== void 0 ? c.text : c.id, p; + if (rt(G().flowchart.htmlLabels)) { + const g = { + label: yield at( + u.replace( + /fa[blrs]?:fa-[\w-]+/g, + // cspell:disable-line + (k) => `` + ), + G() + ) + }; + p = st(i, g).node(), p.parentNode.removeChild(p); + } else { + const g = o.createElementNS("http://www.w3.org/2000/svg", "text"); + g.setAttribute("style", h.labelStyle.replace("color:", "fill:")); + const k = u.split(nt.lineBreakRegex); + for (const I of k) { + const _ = o.createElementNS("http://www.w3.org/2000/svg", "tspan"); + _.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), _.setAttribute("dy", "1em"), _.setAttribute("x", "1"), _.textContent = I, g.appendChild(_); + } + p = g; + } + let y = 0, f = ""; + switch (c.type) { + case "round": + y = 5, f = "rect"; + break; + case "square": + f = "rect"; + break; + case "diamond": + f = "question"; + break; + case "hexagon": + f = "hexagon"; + break; + case "odd": + f = "rect_left_inv_arrow"; + break; + case "lean_right": + f = "lean_right"; + break; + case "lean_left": + f = "lean_left"; + break; + case "trapezoid": + f = "trapezoid"; + break; + case "inv_trapezoid": + f = "inv_trapezoid"; + break; + case "odd_right": + f = "rect_left_inv_arrow"; + break; + case "circle": + f = "circle"; + break; + case "ellipse": + f = "ellipse"; + break; + case "stadium": + f = "stadium"; + break; + case "subroutine": + f = "subroutine"; + break; + case "cylinder": + f = "cylinder"; + break; + case "group": + f = "rect"; + break; + default: + f = "rect"; + } + R.warn("Adding node", c.id, c.domId), e.setNode(s.db.lookUpDomId(c.id), { + labelType: "svg", + labelStyle: h.labelStyle, + shape: f, + label: p, + rx: y, + ry: y, + class: v, + style: h.style, + id: s.db.lookUpDomId(c.id) + }); + } + }); +}, Lt = function(r, e, t) { + return U(this, null, function* () { + let n = 0, a, s; + if (r.defaultStyle !== void 0) { + const i = H(r.defaultStyle); + a = i.style, s = i.labelStyle; + } + for (const i of r) { + n++; + const o = "L-" + i.start + "-" + i.end, l = "LS-" + i.start, d = "LE-" + i.end, c = {}; + i.type === "arrow_open" ? c.arrowhead = "none" : c.arrowhead = "normal"; + let v = "", h = ""; + if (i.style !== void 0) { + const u = H(i.style); + v = u.style, h = u.labelStyle; + } else + switch (i.stroke) { + case "normal": + v = "fill:none", a !== void 0 && (v = a), s !== void 0 && (h = s); + break; + case "dotted": + v = "fill:none;stroke-width:2px;stroke-dasharray:3;"; + break; + case "thick": + v = " stroke-width: 3.5px;fill:none"; + break; + } + c.style = v, c.labelStyle = h, i.interpolate !== void 0 ? c.curve = Y(i.interpolate, $) : r.defaultInterpolate !== void 0 ? c.curve = Y(r.defaultInterpolate, $) : c.curve = Y(kt.curve, $), i.text === void 0 ? i.style !== void 0 && (c.arrowheadStyle = "fill: #333") : (c.arrowheadStyle = "fill: #333", c.labelpos = "c", rt(G().flowchart.htmlLabels) ? (c.labelType = "html", c.label = `${yield at( + i.text.replace( + /fa[blrs]?:fa-[\w-]+/g, + // cspell:disable-line + (u) => `` + ), + G() + )}`) : (c.labelType = "text", c.label = i.text.replace(nt.lineBreakRegex, ` +`), i.style === void 0 && (c.style = c.style || "stroke: #333; stroke-width: 1.5px;fill:none"), c.labelStyle = c.labelStyle.replace("color:", "fill:"))), c.id = o, c.class = l + " " + d, c.minlen = i.length || 1, e.setEdge(t.db.lookUpDomId(i.start), t.db.lookUpDomId(i.end), c, n); + } + }); +}, be = function(r, e) { + return R.info("Extracting classes"), e.db.getClasses(); +}, ke = function(r, e, t, n) { + return U(this, null, function* () { + R.info("Drawing flowchart"); + const { securityLevel: a, flowchart: s } = G(); + let i; + a === "sandbox" && (i = x("#i" + e)); + const o = a === "sandbox" ? x(i.nodes()[0].contentDocument.body) : x("body"), l = a === "sandbox" ? i.nodes()[0].contentDocument : document; + let d = n.db.getDirection(); + d === void 0 && (d = "TD"); + const c = s.nodeSpacing || 50, v = s.rankSpacing || 50, h = new Et({ + multigraph: !0, + compound: !0 + }).setGraph({ + rankdir: d, + nodesep: c, + ranksep: v, + marginx: 8, + marginy: 8 + }).setDefaultEdgeLabel(function() { + return {}; + }); + let u; + const p = n.db.getSubGraphs(); + for (let w = p.length - 1; w >= 0; w--) + u = p[w], n.db.addVertex(u.id, u.title, "group", void 0, u.classes); + const y = n.db.getVertices(); + R.warn("Get vertices", y); + const f = n.db.getEdges(); + let g = 0; + for (g = p.length - 1; g >= 0; g--) { + u = p[g], Dt("cluster").append("text"); + for (let w = 0; w < u.nodes.length; w++) + R.warn( + "Setting subgraph", + u.nodes[w], + n.db.lookUpDomId(u.nodes[w]), + n.db.lookUpDomId(u.id) + ), h.setParent(n.db.lookUpDomId(u.nodes[w]), n.db.lookUpDomId(u.id)); + } + yield St(y, h, e, o, l, n), yield Lt(f, h, n); + const k = new ue(); + me.addToRender(k), k.arrows().none = function(b, L, m, B) { + const C = b.append("marker").attr("id", L).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 0 0 L 0 0 z"); + N(C, m[B + "Style"]); + }, k.arrows().normal = function(b, L) { + b.append("marker").attr("id", L).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowheadPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); + }; + const I = o.select(`[id="${e}"]`), _ = o.select("#" + e + " g"); + for (k(_, h), _.selectAll("g.node").attr("title", function() { + return n.db.getTooltip(this.id); + }), n.db.indexNodes("subGraph" + g), g = 0; g < p.length; g++) + if (u = p[g], u.title !== "undefined") { + const w = l.querySelectorAll( + "#" + e + ' [id="' + n.db.lookUpDomId(u.id) + '"] rect' + ), b = l.querySelectorAll( + "#" + e + ' [id="' + n.db.lookUpDomId(u.id) + '"]' + ), L = w[0].x.baseVal.value, m = w[0].y.baseVal.value, B = w[0].width.baseVal.value, C = x(b[0]).select(".label"); + C.attr("transform", `translate(${L + B / 2}, ${m + 14})`), C.attr("id", e + "Text"); + for (let V = 0; V < u.classes.length; V++) + b[0].classList.add(u.classes[V]); + } + if (!s.htmlLabels) { + const w = l.querySelectorAll('[id="' + e + '"] .edgeLabel .label'); + for (const b of w) { + const L = b.getBBox(), m = l.createElementNS("http://www.w3.org/2000/svg", "rect"); + m.setAttribute("rx", 0), m.setAttribute("ry", 0), m.setAttribute("width", L.width), m.setAttribute("height", L.height), b.insertBefore(m, b.firstChild); + } + } + Tt(h, I, s.diagramPadding, s.useMaxWidth), Object.keys(y).forEach(function(w) { + const b = y[w]; + if (b.link) { + const L = o.select("#" + e + ' [id="' + n.db.lookUpDomId(w) + '"]'); + if (L) { + const m = l.createElementNS("http://www.w3.org/2000/svg", "a"); + m.setAttributeNS("http://www.w3.org/2000/svg", "class", b.classes.join(" ")), m.setAttributeNS("http://www.w3.org/2000/svg", "href", b.link), m.setAttributeNS("http://www.w3.org/2000/svg", "rel", "noopener"), a === "sandbox" ? m.setAttributeNS("http://www.w3.org/2000/svg", "target", "_top") : b.linkTarget && m.setAttributeNS("http://www.w3.org/2000/svg", "target", b.linkTarget); + const B = L.insert(function() { + return m; + }, ":first-child"), P = L.select(".label-container"); + P && B.append(function() { + return P.node(); + }); + const C = L.select(".label"); + C && B.append(function() { + return C.node(); + }); + } + } + }); + }); +}, Se = { + setConf: xe, + addVertices: St, + addEdges: Lt, + getClasses: be, + draw: ke +}, Ue = { + parser: _t, + db: z, + renderer: Bt, + styles: Mt, + init: (r) => { + r.flowchart || (r.flowchart = {}), r.flowchart.arrowMarkerAbsolute = r.arrowMarkerAbsolute, Se.setConf(r.flowchart), z.clear(), z.setGen("gen-1"); + } +}; +export { + Ue as diagram +}; diff --git a/client/packages/lowcoder/public/package/60619617.js b/client/packages/lowcoder/public/package/60619617.js new file mode 100644 index 000000000..2e8a31d0a --- /dev/null +++ b/client/packages/lowcoder/public/package/60619617.js @@ -0,0 +1,804 @@ +import { e as I, F as yt, G as ft, s as dt, a as pt, d as gt, b as mt, H as xt, j as G, k as kt } from "./08856db2.js"; +import { d as _t, f as bt, a as vt, g as it } from "./0fddf2f2.js"; +import { a as Q } from "./eb460319.js"; +import "./256b619e.js"; +var W = function() { + var t = function(p, s, r, a) { + for (r = r || {}, a = p.length; a--; r[p[a]] = s) + ; + return r; + }, e = [6, 8, 10, 11, 12, 14, 16, 17, 18], i = [1, 9], l = [1, 10], n = [1, 11], h = [1, 12], c = [1, 13], f = [1, 14], y = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, journey: 4, document: 5, EOF: 6, line: 7, SPACE: 8, statement: 9, NEWLINE: 10, title: 11, acc_title: 12, acc_title_value: 13, acc_descr: 14, acc_descr_value: 15, acc_descr_multiline_value: 16, section: 17, taskName: 18, taskData: 19, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "journey", 6: "EOF", 8: "SPACE", 10: "NEWLINE", 11: "title", 12: "acc_title", 13: "acc_title_value", 14: "acc_descr", 15: "acc_descr_value", 16: "acc_descr_multiline_value", 17: "section", 18: "taskName", 19: "taskData" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2]], + performAction: function(s, r, a, u, d, o, w) { + var k = o.length - 1; + switch (d) { + case 1: + return o[k - 1]; + case 2: + this.$ = []; + break; + case 3: + o[k - 1].push(o[k]), this.$ = o[k - 1]; + break; + case 4: + case 5: + this.$ = o[k]; + break; + case 6: + case 7: + this.$ = []; + break; + case 8: + u.setDiagramTitle(o[k].substr(6)), this.$ = o[k].substr(6); + break; + case 9: + this.$ = o[k].trim(), u.setAccTitle(this.$); + break; + case 10: + case 11: + this.$ = o[k].trim(), u.setAccDescription(this.$); + break; + case 12: + u.addSection(o[k].substr(8)), this.$ = o[k].substr(8); + break; + case 13: + u.addTask(o[k - 1], o[k]), this.$ = "task"; + break; + } + }, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, t(e, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: i, 12: l, 14: n, 16: h, 17: c, 18: f }, t(e, [2, 7], { 1: [2, 1] }), t(e, [2, 3]), { 9: 15, 11: i, 12: l, 14: n, 16: h, 17: c, 18: f }, t(e, [2, 5]), t(e, [2, 6]), t(e, [2, 8]), { 13: [1, 16] }, { 15: [1, 17] }, t(e, [2, 11]), t(e, [2, 12]), { 19: [1, 18] }, t(e, [2, 4]), t(e, [2, 9]), t(e, [2, 10]), t(e, [2, 13])], + defaultActions: {}, + parseError: function(s, r) { + if (r.recoverable) + this.trace(s); + else { + var a = new Error(s); + throw a.hash = r, a; + } + }, + parse: function(s) { + var r = this, a = [0], u = [], d = [null], o = [], w = this.table, k = "", R = 0, Z = 0, lt = 2, J = 1, ct = o.slice.call(arguments, 1), x = Object.create(this.lexer), S = { yy: {} }; + for (var z in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, z) && (S.yy[z] = this.yy[z]); + x.setInput(s, S.yy), S.yy.lexer = x, S.yy.parser = this, typeof x.yylloc == "undefined" && (x.yylloc = {}); + var Y = x.yylloc; + o.push(Y); + var ht = x.options && x.options.ranges; + typeof S.yy.parseError == "function" ? this.parseError = S.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function ut() { + var T; + return T = u.pop() || x.lex() || J, typeof T != "number" && (T instanceof Array && (u = T, T = u.pop()), T = r.symbols_[T] || T), T; + } + for (var _, E, b, O, A = {}, N, $, K, B; ; ) { + if (E = a[a.length - 1], this.defaultActions[E] ? b = this.defaultActions[E] : ((_ === null || typeof _ == "undefined") && (_ = ut()), b = w[E] && w[E][_]), typeof b == "undefined" || !b.length || !b[0]) { + var q = ""; + B = []; + for (N in w[E]) + this.terminals_[N] && N > lt && B.push("'" + this.terminals_[N] + "'"); + x.showPosition ? q = "Parse error on line " + (R + 1) + `: +` + x.showPosition() + ` +Expecting ` + B.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : q = "Parse error on line " + (R + 1) + ": Unexpected " + (_ == J ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(q, { + text: x.match, + token: this.terminals_[_] || _, + line: x.yylineno, + loc: Y, + expected: B + }); + } + if (b[0] instanceof Array && b.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + E + ", token: " + _); + switch (b[0]) { + case 1: + a.push(_), d.push(x.yytext), o.push(x.yylloc), a.push(b[1]), _ = null, Z = x.yyleng, k = x.yytext, R = x.yylineno, Y = x.yylloc; + break; + case 2: + if ($ = this.productions_[b[1]][1], A.$ = d[d.length - $], A._$ = { + first_line: o[o.length - ($ || 1)].first_line, + last_line: o[o.length - 1].last_line, + first_column: o[o.length - ($ || 1)].first_column, + last_column: o[o.length - 1].last_column + }, ht && (A._$.range = [ + o[o.length - ($ || 1)].range[0], + o[o.length - 1].range[1] + ]), O = this.performAction.apply(A, [ + k, + Z, + R, + S.yy, + b[1], + d, + o + ].concat(ct)), typeof O != "undefined") + return O; + $ && (a = a.slice(0, -1 * $ * 2), d = d.slice(0, -1 * $), o = o.slice(0, -1 * $)), a.push(this.productions_[b[1]][0]), d.push(A.$), o.push(A._$), K = w[a[a.length - 2]][a[a.length - 1]], a.push(K); + break; + case 3: + return !0; + } + } + return !0; + } + }, m = function() { + var p = { + EOF: 1, + parseError: function(r, a) { + if (this.yy.parser) + this.yy.parser.parseError(r, a); + else + throw new Error(r); + }, + // resets the lexer, sets new input + setInput: function(s, r) { + return this.yy = r || this.yy || {}, this._input = s, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var s = this._input[0]; + this.yytext += s, this.yyleng++, this.offset++, this.match += s, this.matched += s; + var r = s.match(/(?:\r\n?|\n).*/g); + return r ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), s; + }, + // unshifts one char (or a string) into the input + unput: function(s) { + var r = s.length, a = s.split(/(?:\r\n?|\n)/g); + this._input = s + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - r), this.offset -= r; + var u = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), a.length - 1 && (this.yylineno -= a.length - 1); + var d = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: a ? (a.length === u.length ? this.yylloc.first_column : 0) + u[u.length - a.length].length - a[0].length : this.yylloc.first_column - r + }, this.options.ranges && (this.yylloc.range = [d[0], d[0] + this.yyleng - r]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(s) { + this.unput(this.match.slice(s)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var s = this.matched.substr(0, this.matched.length - this.match.length); + return (s.length > 20 ? "..." : "") + s.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var s = this.match; + return s.length < 20 && (s += this._input.substr(0, 20 - s.length)), (s.substr(0, 20) + (s.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var s = this.pastInput(), r = new Array(s.length + 1).join("-"); + return s + this.upcomingInput() + ` +` + r + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(s, r) { + var a, u, d; + if (this.options.backtrack_lexer && (d = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (d.yylloc.range = this.yylloc.range.slice(0))), u = s[0].match(/(?:\r\n?|\n).*/g), u && (this.yylineno += u.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: u ? u[u.length - 1].length - u[u.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + s[0].length + }, this.yytext += s[0], this.match += s[0], this.matches = s, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(s[0].length), this.matched += s[0], a = this.performAction.call(this, this.yy, this, r, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), a) + return a; + if (this._backtrack) { + for (var o in d) + this[o] = d[o]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var s, r, a, u; + this._more || (this.yytext = "", this.match = ""); + for (var d = this._currentRules(), o = 0; o < d.length; o++) + if (a = this._input.match(this.rules[d[o]]), a && (!r || a[0].length > r[0].length)) { + if (r = a, u = o, this.options.backtrack_lexer) { + if (s = this.test_match(a, d[o]), s !== !1) + return s; + if (this._backtrack) { + r = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return r ? (s = this.test_match(r, d[u]), s !== !1 ? s : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var r = this.next(); + return r || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(r) { + this.conditionStack.push(r); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var r = this.conditionStack.length - 1; + return r > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(r) { + return r = this.conditionStack.length - 1 - Math.abs(r || 0), r >= 0 ? this.conditionStack[r] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(r) { + this.begin(r); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(r, a, u, d) { + switch (u) { + case 0: + break; + case 1: + break; + case 2: + return 10; + case 3: + break; + case 4: + break; + case 5: + return 4; + case 6: + return 11; + case 7: + return this.begin("acc_title"), 12; + case 8: + return this.popState(), "acc_title_value"; + case 9: + return this.begin("acc_descr"), 14; + case 10: + return this.popState(), "acc_descr_value"; + case 11: + this.begin("acc_descr_multiline"); + break; + case 12: + this.popState(); + break; + case 13: + return "acc_descr_multiline_value"; + case 14: + return 17; + case 15: + return 18; + case 16: + return 19; + case 17: + return ":"; + case 18: + return 6; + case 19: + return "INVALID"; + } + }, + rules: [/^(?:%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:journey\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { acc_descr_multiline: { rules: [12, 13], inclusive: !1 }, acc_descr: { rules: [10], inclusive: !1 }, acc_title: { rules: [8], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19], inclusive: !0 } } + }; + return p; + }(); + y.lexer = m; + function g() { + this.yy = {}; + } + return g.prototype = y, y.Parser = g, new g(); +}(); +W.parser = W; +const wt = W; +let C = ""; +const X = [], V = [], F = [], $t = function() { + X.length = 0, V.length = 0, C = "", F.length = 0, xt(); +}, Tt = function(t) { + C = t, X.push(t); +}, Mt = function() { + return X; +}, St = function() { + let t = D(); + const e = 100; + let i = 0; + for (; !t && i < e; ) + t = D(), i++; + return V.push(...F), V; +}, Et = function() { + const t = []; + return V.forEach((i) => { + i.people && t.push(...i.people); + }), [...new Set(t)].sort(); +}, Pt = function(t, e) { + const i = e.substr(1).split(":"); + let l = 0, n = []; + i.length === 1 ? (l = Number(i[0]), n = []) : (l = Number(i[0]), n = i[1].split(",")); + const h = n.map((f) => f.trim()), c = { + section: C, + type: C, + people: h, + task: t, + score: l + }; + F.push(c); +}, It = function(t) { + const e = { + section: C, + type: C, + description: t, + task: t, + classes: [] + }; + V.push(e); +}, D = function() { + const t = function(i) { + return F[i].processed; + }; + let e = !0; + for (const [i, l] of F.entries()) + t(i), e = e && l.processed; + return e; +}, At = function() { + return Et(); +}, tt = { + getConfig: () => I().journey, + clear: $t, + setDiagramTitle: yt, + getDiagramTitle: ft, + setAccTitle: dt, + getAccTitle: pt, + setAccDescription: gt, + getAccDescription: mt, + addSection: Tt, + getSections: Mt, + getTasks: St, + addTask: Pt, + addTaskOrg: It, + getActors: At +}, Ct = (t) => `.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${t.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${t.textColor} + } + + .legend { + fill: ${t.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${t.textColor} + } + + .face { + ${t.faceColor ? `fill: ${t.faceColor}` : "fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${t.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${t.fillType0 ? `fill: ${t.fillType0}` : ""}; + } + .task-type-1, .section-type-1 { + ${t.fillType0 ? `fill: ${t.fillType1}` : ""}; + } + .task-type-2, .section-type-2 { + ${t.fillType0 ? `fill: ${t.fillType2}` : ""}; + } + .task-type-3, .section-type-3 { + ${t.fillType0 ? `fill: ${t.fillType3}` : ""}; + } + .task-type-4, .section-type-4 { + ${t.fillType0 ? `fill: ${t.fillType4}` : ""}; + } + .task-type-5, .section-type-5 { + ${t.fillType0 ? `fill: ${t.fillType5}` : ""}; + } + .task-type-6, .section-type-6 { + ${t.fillType0 ? `fill: ${t.fillType6}` : ""}; + } + .task-type-7, .section-type-7 { + ${t.fillType0 ? `fill: ${t.fillType7}` : ""}; + } + + .actor-0 { + ${t.actor0 ? `fill: ${t.actor0}` : ""}; + } + .actor-1 { + ${t.actor1 ? `fill: ${t.actor1}` : ""}; + } + .actor-2 { + ${t.actor2 ? `fill: ${t.actor2}` : ""}; + } + .actor-3 { + ${t.actor3 ? `fill: ${t.actor3}` : ""}; + } + .actor-4 { + ${t.actor4 ? `fill: ${t.actor4}` : ""}; + } + .actor-5 { + ${t.actor5 ? `fill: ${t.actor5}` : ""}; + } +`, Vt = Ct, U = function(t, e) { + return _t(t, e); +}, Ft = function(t, e) { + const l = t.append("circle").attr("cx", e.cx).attr("cy", e.cy).attr("class", "face").attr("r", 15).attr("stroke-width", 2).attr("overflow", "visible"), n = t.append("g"); + n.append("circle").attr("cx", e.cx - 15 / 3).attr("cy", e.cy - 15 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"), n.append("circle").attr("cx", e.cx + 15 / 3).attr("cy", e.cy - 15 / 3).attr("r", 1.5).attr("stroke-width", 2).attr("fill", "#666").attr("stroke", "#666"); + function h(y) { + const m = Q().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(7.5).outerRadius(6.8181818181818175); + y.append("path").attr("class", "mouth").attr("d", m).attr("transform", "translate(" + e.cx + "," + (e.cy + 2) + ")"); + } + function c(y) { + const m = Q().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(7.5).outerRadius(6.8181818181818175); + y.append("path").attr("class", "mouth").attr("d", m).attr("transform", "translate(" + e.cx + "," + (e.cy + 7) + ")"); + } + function f(y) { + y.append("line").attr("class", "mouth").attr("stroke", 2).attr("x1", e.cx - 5).attr("y1", e.cy + 7).attr("x2", e.cx + 5).attr("y2", e.cy + 7).attr("class", "mouth").attr("stroke-width", "1px").attr("stroke", "#666"); + } + return e.score > 3 ? h(n) : e.score < 3 ? c(n) : f(n), l; +}, rt = function(t, e) { + const i = t.append("circle"); + return i.attr("cx", e.cx), i.attr("cy", e.cy), i.attr("class", "actor-" + e.pos), i.attr("fill", e.fill), i.attr("stroke", e.stroke), i.attr("r", e.r), i.class !== void 0 && i.attr("class", i.class), e.title !== void 0 && i.append("title").text(e.title), i; +}, at = function(t, e) { + return bt(t, e); +}, Lt = function(t, e) { + function i(n, h, c, f, y) { + return n + "," + h + " " + (n + c) + "," + h + " " + (n + c) + "," + (h + f - y) + " " + (n + c - y * 1.2) + "," + (h + f) + " " + n + "," + (h + f); + } + const l = t.append("polygon"); + l.attr("points", i(e.x, e.y, 50, 20, 7)), l.attr("class", "labelBox"), e.y = e.y + e.labelMargin, e.x = e.x + 0.5 * e.labelMargin, at(t, e); +}, Rt = function(t, e, i) { + const l = t.append("g"), n = it(); + n.x = e.x, n.y = e.y, n.fill = e.fill, n.width = i.width * e.taskCount + // width of the tasks + i.diagramMarginX * (e.taskCount - 1), n.height = i.height, n.class = "journey-section section-type-" + e.num, n.rx = 3, n.ry = 3, U(l, n), ot(i)( + e.text, + l, + n.x, + n.y, + n.width, + n.height, + { class: "journey-section section-type-" + e.num }, + i, + e.colour + ); +}; +let et = -1; +const Nt = function(t, e, i) { + const l = e.x + i.width / 2, n = t.append("g"); + et++; + const h = 300 + 5 * 30; + n.append("line").attr("id", "task" + et).attr("x1", l).attr("y1", e.y).attr("x2", l).attr("y2", h).attr("class", "task-line").attr("stroke-width", "1px").attr("stroke-dasharray", "4 2").attr("stroke", "#666"), Ft(n, { + cx: l, + cy: 300 + (5 - e.score) * 30, + score: e.score + }); + const c = it(); + c.x = e.x, c.y = e.y, c.fill = e.fill, c.width = i.width, c.height = i.height, c.class = "task task-type-" + e.num, c.rx = 3, c.ry = 3, U(n, c); + let f = e.x + 14; + e.people.forEach((y) => { + const m = e.actors[y].color, g = { + cx: f, + cy: e.y, + r: 7, + fill: m, + stroke: "#000", + title: y, + pos: e.actors[y].position + }; + rt(n, g), f += 10; + }), ot(i)( + e.task, + n, + c.x, + c.y, + c.width, + c.height, + { class: "task" }, + i, + e.colour + ); +}, Bt = function(t, e) { + vt(t, e); +}, ot = function() { + function t(n, h, c, f, y, m, g, p) { + const s = h.append("text").attr("x", c + y / 2).attr("y", f + m / 2 + 5).style("font-color", p).style("text-anchor", "middle").text(n); + l(s, g); + } + function e(n, h, c, f, y, m, g, p, s) { + const { taskFontSize: r, taskFontFamily: a } = p, u = n.split(//gi); + for (let d = 0; d < u.length; d++) { + const o = d * r - r * (u.length - 1) / 2, w = h.append("text").attr("x", c + y / 2).attr("y", f).attr("fill", s).style("text-anchor", "middle").style("font-size", r).style("font-family", a); + w.append("tspan").attr("x", c + y / 2).attr("dy", o).text(u[d]), w.attr("y", f + m / 2).attr("dominant-baseline", "central").attr("alignment-baseline", "central"), l(w, g); + } + } + function i(n, h, c, f, y, m, g, p) { + const s = h.append("switch"), a = s.append("foreignObject").attr("x", c).attr("y", f).attr("width", y).attr("height", m).attr("position", "fixed").append("xhtml:div").style("display", "table").style("height", "100%").style("width", "100%"); + a.append("div").attr("class", "label").style("display", "table-cell").style("text-align", "center").style("vertical-align", "middle").text(n), e(n, s, c, f, y, m, g, p), l(a, g); + } + function l(n, h) { + for (const c in h) + c in h && n.attr(c, h[c]); + } + return function(n) { + return n.textPlacement === "fo" ? i : n.textPlacement === "old" ? t : e; + }; +}(), jt = function(t) { + t.append("defs").append("marker").attr("id", "arrowhead").attr("refX", 5).attr("refY", 2).attr("markerWidth", 6).attr("markerHeight", 4).attr("orient", "auto").append("path").attr("d", "M 0,0 V 4 L6,2 Z"); +}, L = { + drawRect: U, + drawCircle: rt, + drawSection: Rt, + drawText: at, + drawLabel: Lt, + drawTask: Nt, + drawBackgroundRect: Bt, + initGraphics: jt +}, zt = function(t) { + Object.keys(t).forEach(function(i) { + j[i] = t[i]; + }); +}, M = {}; +function Yt(t) { + const e = I().journey; + let i = 60; + Object.keys(M).forEach((l) => { + const n = M[l].color, h = { + cx: 20, + cy: i, + r: 7, + fill: n, + stroke: "#000", + pos: M[l].position + }; + L.drawCircle(t, h); + const c = { + x: 40, + y: i + 7, + fill: "#666", + text: l, + textMargin: e.boxTextMargin | 5 + }; + L.drawText(t, c), i += 20; + }); +} +const j = I().journey, P = j.leftMargin, Ot = function(t, e, i, l) { + const n = I().journey, h = I().securityLevel; + let c; + h === "sandbox" && (c = G("#i" + e)); + const f = h === "sandbox" ? G(c.nodes()[0].contentDocument.body) : G("body"); + v.init(); + const y = f.select("#" + e); + L.initGraphics(y); + const m = l.db.getTasks(), g = l.db.getDiagramTitle(), p = l.db.getActors(); + for (const o in M) + delete M[o]; + let s = 0; + p.forEach((o) => { + M[o] = { + color: n.actorColours[s % n.actorColours.length], + position: s + }, s++; + }), Yt(y), v.insert(0, 0, P, Object.keys(M).length * 50), qt(y, m, 0); + const r = v.getBounds(); + g && y.append("text").text(g).attr("x", P).attr("font-size", "4ex").attr("font-weight", "bold").attr("y", 25); + const a = r.stopy - r.starty + 2 * n.diagramMarginY, u = P + r.stopx + 2 * n.diagramMarginX; + kt(y, a, u, n.useMaxWidth), y.append("line").attr("x1", P).attr("y1", n.height * 4).attr("x2", u - P - 4).attr("y2", n.height * 4).attr("stroke-width", 4).attr("stroke", "black").attr("marker-end", "url(#arrowhead)"); + const d = g ? 70 : 0; + y.attr("viewBox", `${r.startx} -25 ${u} ${a + d}`), y.attr("preserveAspectRatio", "xMinYMin meet"), y.attr("height", a + d + 25); +}, v = { + data: { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0 + }, + verticalPos: 0, + sequenceItems: [], + init: function() { + this.sequenceItems = [], this.data = { + startx: void 0, + stopx: void 0, + starty: void 0, + stopy: void 0 + }, this.verticalPos = 0; + }, + updateVal: function(t, e, i, l) { + t[e] === void 0 ? t[e] = i : t[e] = l(i, t[e]); + }, + updateBounds: function(t, e, i, l) { + const n = I().journey, h = this; + let c = 0; + function f(y) { + return function(g) { + c++; + const p = h.sequenceItems.length - c + 1; + h.updateVal(g, "starty", e - p * n.boxMargin, Math.min), h.updateVal(g, "stopy", l + p * n.boxMargin, Math.max), h.updateVal(v.data, "startx", t - p * n.boxMargin, Math.min), h.updateVal(v.data, "stopx", i + p * n.boxMargin, Math.max), y !== "activation" && (h.updateVal(g, "startx", t - p * n.boxMargin, Math.min), h.updateVal(g, "stopx", i + p * n.boxMargin, Math.max), h.updateVal(v.data, "starty", e - p * n.boxMargin, Math.min), h.updateVal(v.data, "stopy", l + p * n.boxMargin, Math.max)); + }; + } + this.sequenceItems.forEach(f()); + }, + insert: function(t, e, i, l) { + const n = Math.min(t, i), h = Math.max(t, i), c = Math.min(e, l), f = Math.max(e, l); + this.updateVal(v.data, "startx", n, Math.min), this.updateVal(v.data, "starty", c, Math.min), this.updateVal(v.data, "stopx", h, Math.max), this.updateVal(v.data, "stopy", f, Math.max), this.updateBounds(n, c, h, f); + }, + bumpVerticalPos: function(t) { + this.verticalPos = this.verticalPos + t, this.data.stopy = this.verticalPos; + }, + getVerticalPos: function() { + return this.verticalPos; + }, + getBounds: function() { + return this.data; + } +}, H = j.sectionFills, st = j.sectionColours, qt = function(t, e, i) { + const l = I().journey; + let n = ""; + const h = l.height * 2 + l.diagramMarginY, c = i + h; + let f = 0, y = "#CCC", m = "black", g = 0; + for (const [p, s] of e.entries()) { + if (n !== s.section) { + y = H[f % H.length], g = f % H.length, m = st[f % st.length]; + let a = 0; + const u = s.section; + for (let o = p; o < e.length && e[o].section == u; o++) + a = a + 1; + const d = { + x: p * l.taskMargin + p * l.width + P, + y: 50, + text: s.section, + fill: y, + num: g, + colour: m, + taskCount: a + }; + L.drawSection(t, d, l), n = s.section, f++; + } + const r = s.people.reduce((a, u) => (M[u] && (a[u] = M[u]), a), {}); + s.x = p * l.taskMargin + p * l.width + P, s.y = c, s.width = l.diagramMarginX, s.height = l.diagramMarginY, s.colour = m, s.fill = y, s.num = g, s.actors = r, L.drawTask(t, s, l), v.insert(s.x, s.y, s.x + s.width + l.taskMargin, 300 + 5 * 30); + } +}, nt = { + setConf: zt, + draw: Ot +}, Ut = { + parser: wt, + db: tt, + renderer: nt, + styles: Vt, + init: (t) => { + nt.setConf(t.journey), tt.clear(); + } +}; +export { + Ut as diagram +}; diff --git a/client/packages/lowcoder/public/package/62954dbd.js b/client/packages/lowcoder/public/package/62954dbd.js new file mode 100644 index 000000000..045231c04 --- /dev/null +++ b/client/packages/lowcoder/public/package/62954dbd.js @@ -0,0 +1,769 @@ +import { e as Te, s as Ce, a as Fe, d as Me, b as De, l as Ne, H as Pe, j as oe, k as Ye, m as ke } from "./08856db2.js"; +import { G as Ue } from "./4504d077.js"; +import { l as Be } from "./666097a3.js"; +import { l as Qe } from "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +var ce = function() { + var e = function(V, i, r, a) { + for (r = r || {}, a = V.length; a--; r[V[a]] = i) + ; + return r; + }, t = [1, 3], l = [1, 4], c = [1, 5], u = [1, 6], d = [5, 6, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63], p = [1, 18], h = [2, 7], o = [1, 22], E = [1, 23], R = [1, 24], A = [1, 25], T = [1, 26], N = [1, 27], v = [1, 20], k = [1, 28], x = [1, 29], F = [62, 63], de = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 51, 53, 62, 63], pe = [1, 47], fe = [1, 48], ye = [1, 49], _e = [1, 50], Ee = [1, 51], ge = [1, 52], Re = [1, 53], O = [53, 54], M = [1, 64], D = [1, 60], P = [1, 61], Y = [1, 62], U = [1, 63], B = [1, 65], j = [1, 69], z = [1, 70], X = [1, 67], J = [1, 68], m = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63], ie = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, directive: 4, NEWLINE: 5, RD: 6, diagram: 7, EOF: 8, acc_title: 9, acc_title_value: 10, acc_descr: 11, acc_descr_value: 12, acc_descr_multiline_value: 13, requirementDef: 14, elementDef: 15, relationshipDef: 16, requirementType: 17, requirementName: 18, STRUCT_START: 19, requirementBody: 20, ID: 21, COLONSEP: 22, id: 23, TEXT: 24, text: 25, RISK: 26, riskLevel: 27, VERIFYMTHD: 28, verifyType: 29, STRUCT_STOP: 30, REQUIREMENT: 31, FUNCTIONAL_REQUIREMENT: 32, INTERFACE_REQUIREMENT: 33, PERFORMANCE_REQUIREMENT: 34, PHYSICAL_REQUIREMENT: 35, DESIGN_CONSTRAINT: 36, LOW_RISK: 37, MED_RISK: 38, HIGH_RISK: 39, VERIFY_ANALYSIS: 40, VERIFY_DEMONSTRATION: 41, VERIFY_INSPECTION: 42, VERIFY_TEST: 43, ELEMENT: 44, elementName: 45, elementBody: 46, TYPE: 47, type: 48, DOCREF: 49, ref: 50, END_ARROW_L: 51, relationship: 52, LINE: 53, END_ARROW_R: 54, CONTAINS: 55, COPIES: 56, DERIVES: 57, SATISFIES: 58, VERIFIES: 59, REFINES: 60, TRACES: 61, unqString: 62, qString: 63, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 5: "NEWLINE", 6: "RD", 8: "EOF", 9: "acc_title", 10: "acc_title_value", 11: "acc_descr", 12: "acc_descr_value", 13: "acc_descr_multiline_value", 19: "STRUCT_START", 21: "ID", 22: "COLONSEP", 24: "TEXT", 26: "RISK", 28: "VERIFYMTHD", 30: "STRUCT_STOP", 31: "REQUIREMENT", 32: "FUNCTIONAL_REQUIREMENT", 33: "INTERFACE_REQUIREMENT", 34: "PERFORMANCE_REQUIREMENT", 35: "PHYSICAL_REQUIREMENT", 36: "DESIGN_CONSTRAINT", 37: "LOW_RISK", 38: "MED_RISK", 39: "HIGH_RISK", 40: "VERIFY_ANALYSIS", 41: "VERIFY_DEMONSTRATION", 42: "VERIFY_INSPECTION", 43: "VERIFY_TEST", 44: "ELEMENT", 47: "TYPE", 49: "DOCREF", 51: "END_ARROW_L", 53: "LINE", 54: "END_ARROW_R", 55: "CONTAINS", 56: "COPIES", 57: "DERIVES", 58: "SATISFIES", 59: "VERIFIES", 60: "REFINES", 61: "TRACES", 62: "unqString", 63: "qString" }, + productions_: [0, [3, 3], [3, 2], [3, 4], [4, 2], [4, 2], [4, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [14, 5], [20, 5], [20, 5], [20, 5], [20, 5], [20, 2], [20, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [27, 1], [27, 1], [27, 1], [29, 1], [29, 1], [29, 1], [29, 1], [15, 5], [46, 5], [46, 5], [46, 2], [46, 1], [16, 5], [16, 5], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [18, 1], [18, 1], [23, 1], [23, 1], [25, 1], [25, 1], [45, 1], [45, 1], [48, 1], [48, 1], [50, 1], [50, 1]], + performAction: function(i, r, a, n, f, s, W) { + var _ = s.length - 1; + switch (f) { + case 4: + this.$ = s[_].trim(), n.setAccTitle(this.$); + break; + case 5: + case 6: + this.$ = s[_].trim(), n.setAccDescription(this.$); + break; + case 7: + this.$ = []; + break; + case 13: + n.addRequirement(s[_ - 3], s[_ - 4]); + break; + case 14: + n.setNewReqId(s[_ - 2]); + break; + case 15: + n.setNewReqText(s[_ - 2]); + break; + case 16: + n.setNewReqRisk(s[_ - 2]); + break; + case 17: + n.setNewReqVerifyMethod(s[_ - 2]); + break; + case 20: + this.$ = n.RequirementType.REQUIREMENT; + break; + case 21: + this.$ = n.RequirementType.FUNCTIONAL_REQUIREMENT; + break; + case 22: + this.$ = n.RequirementType.INTERFACE_REQUIREMENT; + break; + case 23: + this.$ = n.RequirementType.PERFORMANCE_REQUIREMENT; + break; + case 24: + this.$ = n.RequirementType.PHYSICAL_REQUIREMENT; + break; + case 25: + this.$ = n.RequirementType.DESIGN_CONSTRAINT; + break; + case 26: + this.$ = n.RiskLevel.LOW_RISK; + break; + case 27: + this.$ = n.RiskLevel.MED_RISK; + break; + case 28: + this.$ = n.RiskLevel.HIGH_RISK; + break; + case 29: + this.$ = n.VerifyType.VERIFY_ANALYSIS; + break; + case 30: + this.$ = n.VerifyType.VERIFY_DEMONSTRATION; + break; + case 31: + this.$ = n.VerifyType.VERIFY_INSPECTION; + break; + case 32: + this.$ = n.VerifyType.VERIFY_TEST; + break; + case 33: + n.addElement(s[_ - 3]); + break; + case 34: + n.setNewElementType(s[_ - 2]); + break; + case 35: + n.setNewElementDocRef(s[_ - 2]); + break; + case 38: + n.addRelationship(s[_ - 2], s[_], s[_ - 4]); + break; + case 39: + n.addRelationship(s[_ - 2], s[_ - 4], s[_]); + break; + case 40: + this.$ = n.Relationships.CONTAINS; + break; + case 41: + this.$ = n.Relationships.COPIES; + break; + case 42: + this.$ = n.Relationships.DERIVES; + break; + case 43: + this.$ = n.Relationships.SATISFIES; + break; + case 44: + this.$ = n.Relationships.VERIFIES; + break; + case 45: + this.$ = n.Relationships.REFINES; + break; + case 46: + this.$ = n.Relationships.TRACES; + break; + } + }, + table: [{ 3: 1, 4: 2, 6: t, 9: l, 11: c, 13: u }, { 1: [3] }, { 3: 8, 4: 2, 5: [1, 7], 6: t, 9: l, 11: c, 13: u }, { 5: [1, 9] }, { 10: [1, 10] }, { 12: [1, 11] }, e(d, [2, 6]), { 3: 12, 4: 2, 6: t, 9: l, 11: c, 13: u }, { 1: [2, 2] }, { 4: 17, 5: p, 7: 13, 8: h, 9: l, 11: c, 13: u, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: o, 32: E, 33: R, 34: A, 35: T, 36: N, 44: v, 62: k, 63: x }, e(d, [2, 4]), e(d, [2, 5]), { 1: [2, 1] }, { 8: [1, 30] }, { 4: 17, 5: p, 7: 31, 8: h, 9: l, 11: c, 13: u, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: o, 32: E, 33: R, 34: A, 35: T, 36: N, 44: v, 62: k, 63: x }, { 4: 17, 5: p, 7: 32, 8: h, 9: l, 11: c, 13: u, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: o, 32: E, 33: R, 34: A, 35: T, 36: N, 44: v, 62: k, 63: x }, { 4: 17, 5: p, 7: 33, 8: h, 9: l, 11: c, 13: u, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: o, 32: E, 33: R, 34: A, 35: T, 36: N, 44: v, 62: k, 63: x }, { 4: 17, 5: p, 7: 34, 8: h, 9: l, 11: c, 13: u, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: o, 32: E, 33: R, 34: A, 35: T, 36: N, 44: v, 62: k, 63: x }, { 4: 17, 5: p, 7: 35, 8: h, 9: l, 11: c, 13: u, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: o, 32: E, 33: R, 34: A, 35: T, 36: N, 44: v, 62: k, 63: x }, { 18: 36, 62: [1, 37], 63: [1, 38] }, { 45: 39, 62: [1, 40], 63: [1, 41] }, { 51: [1, 42], 53: [1, 43] }, e(F, [2, 20]), e(F, [2, 21]), e(F, [2, 22]), e(F, [2, 23]), e(F, [2, 24]), e(F, [2, 25]), e(de, [2, 49]), e(de, [2, 50]), { 1: [2, 3] }, { 8: [2, 8] }, { 8: [2, 9] }, { 8: [2, 10] }, { 8: [2, 11] }, { 8: [2, 12] }, { 19: [1, 44] }, { 19: [2, 47] }, { 19: [2, 48] }, { 19: [1, 45] }, { 19: [2, 53] }, { 19: [2, 54] }, { 52: 46, 55: pe, 56: fe, 57: ye, 58: _e, 59: Ee, 60: ge, 61: Re }, { 52: 54, 55: pe, 56: fe, 57: ye, 58: _e, 59: Ee, 60: ge, 61: Re }, { 5: [1, 55] }, { 5: [1, 56] }, { 53: [1, 57] }, e(O, [2, 40]), e(O, [2, 41]), e(O, [2, 42]), e(O, [2, 43]), e(O, [2, 44]), e(O, [2, 45]), e(O, [2, 46]), { 54: [1, 58] }, { 5: M, 20: 59, 21: D, 24: P, 26: Y, 28: U, 30: B }, { 5: j, 30: z, 46: 66, 47: X, 49: J }, { 23: 71, 62: k, 63: x }, { 23: 72, 62: k, 63: x }, e(m, [2, 13]), { 22: [1, 73] }, { 22: [1, 74] }, { 22: [1, 75] }, { 22: [1, 76] }, { 5: M, 20: 77, 21: D, 24: P, 26: Y, 28: U, 30: B }, e(m, [2, 19]), e(m, [2, 33]), { 22: [1, 78] }, { 22: [1, 79] }, { 5: j, 30: z, 46: 80, 47: X, 49: J }, e(m, [2, 37]), e(m, [2, 38]), e(m, [2, 39]), { 23: 81, 62: k, 63: x }, { 25: 82, 62: [1, 83], 63: [1, 84] }, { 27: 85, 37: [1, 86], 38: [1, 87], 39: [1, 88] }, { 29: 89, 40: [1, 90], 41: [1, 91], 42: [1, 92], 43: [1, 93] }, e(m, [2, 18]), { 48: 94, 62: [1, 95], 63: [1, 96] }, { 50: 97, 62: [1, 98], 63: [1, 99] }, e(m, [2, 36]), { 5: [1, 100] }, { 5: [1, 101] }, { 5: [2, 51] }, { 5: [2, 52] }, { 5: [1, 102] }, { 5: [2, 26] }, { 5: [2, 27] }, { 5: [2, 28] }, { 5: [1, 103] }, { 5: [2, 29] }, { 5: [2, 30] }, { 5: [2, 31] }, { 5: [2, 32] }, { 5: [1, 104] }, { 5: [2, 55] }, { 5: [2, 56] }, { 5: [1, 105] }, { 5: [2, 57] }, { 5: [2, 58] }, { 5: M, 20: 106, 21: D, 24: P, 26: Y, 28: U, 30: B }, { 5: M, 20: 107, 21: D, 24: P, 26: Y, 28: U, 30: B }, { 5: M, 20: 108, 21: D, 24: P, 26: Y, 28: U, 30: B }, { 5: M, 20: 109, 21: D, 24: P, 26: Y, 28: U, 30: B }, { 5: j, 30: z, 46: 110, 47: X, 49: J }, { 5: j, 30: z, 46: 111, 47: X, 49: J }, e(m, [2, 14]), e(m, [2, 15]), e(m, [2, 16]), e(m, [2, 17]), e(m, [2, 34]), e(m, [2, 35])], + defaultActions: { 8: [2, 2], 12: [2, 1], 30: [2, 3], 31: [2, 8], 32: [2, 9], 33: [2, 10], 34: [2, 11], 35: [2, 12], 37: [2, 47], 38: [2, 48], 40: [2, 53], 41: [2, 54], 83: [2, 51], 84: [2, 52], 86: [2, 26], 87: [2, 27], 88: [2, 28], 90: [2, 29], 91: [2, 30], 92: [2, 31], 93: [2, 32], 95: [2, 55], 96: [2, 56], 98: [2, 57], 99: [2, 58] }, + parseError: function(i, r) { + if (r.recoverable) + this.trace(i); + else { + var a = new Error(i); + throw a.hash = r, a; + } + }, + parse: function(i) { + var r = this, a = [0], n = [], f = [null], s = [], W = this.table, _ = "", Z = 0, me = 0, Ve = 2, Ie = 1, qe = s.slice.call(arguments, 1), g = Object.create(this.lexer), L = { yy: {} }; + for (var re in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, re) && (L.yy[re] = this.yy[re]); + g.setInput(i, L.yy), L.yy.lexer = g, L.yy.parser = this, typeof g.yylloc == "undefined" && (g.yylloc = {}); + var se = g.yylloc; + s.push(se); + var Oe = g.options && g.options.ranges; + typeof L.yy.parseError == "function" ? this.parseError = L.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function Le() { + var $; + return $ = n.pop() || g.lex() || Ie, typeof $ != "number" && ($ instanceof Array && (n = $, $ = n.pop()), $ = r.symbols_[$] || $), $; + } + for (var I, C, S, ae, Q = {}, ee, w, be, te; ; ) { + if (C = a[a.length - 1], this.defaultActions[C] ? S = this.defaultActions[C] : ((I === null || typeof I == "undefined") && (I = Le()), S = W[C] && W[C][I]), typeof S == "undefined" || !S.length || !S[0]) { + var le = ""; + te = []; + for (ee in W[C]) + this.terminals_[ee] && ee > Ve && te.push("'" + this.terminals_[ee] + "'"); + g.showPosition ? le = "Parse error on line " + (Z + 1) + `: +` + g.showPosition() + ` +Expecting ` + te.join(", ") + ", got '" + (this.terminals_[I] || I) + "'" : le = "Parse error on line " + (Z + 1) + ": Unexpected " + (I == Ie ? "end of input" : "'" + (this.terminals_[I] || I) + "'"), this.parseError(le, { + text: g.match, + token: this.terminals_[I] || I, + line: g.yylineno, + loc: se, + expected: te + }); + } + if (S[0] instanceof Array && S.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + C + ", token: " + I); + switch (S[0]) { + case 1: + a.push(I), f.push(g.yytext), s.push(g.yylloc), a.push(S[1]), I = null, me = g.yyleng, _ = g.yytext, Z = g.yylineno, se = g.yylloc; + break; + case 2: + if (w = this.productions_[S[1]][1], Q.$ = f[f.length - w], Q._$ = { + first_line: s[s.length - (w || 1)].first_line, + last_line: s[s.length - 1].last_line, + first_column: s[s.length - (w || 1)].first_column, + last_column: s[s.length - 1].last_column + }, Oe && (Q._$.range = [ + s[s.length - (w || 1)].range[0], + s[s.length - 1].range[1] + ]), ae = this.performAction.apply(Q, [ + _, + me, + Z, + L.yy, + S[1], + f, + s + ].concat(qe)), typeof ae != "undefined") + return ae; + w && (a = a.slice(0, -1 * w * 2), f = f.slice(0, -1 * w), s = s.slice(0, -1 * w)), a.push(this.productions_[S[1]][0]), f.push(Q.$), s.push(Q._$), be = W[a[a.length - 2]][a[a.length - 1]], a.push(be); + break; + case 3: + return !0; + } + } + return !0; + } + }, $e = function() { + var V = { + EOF: 1, + parseError: function(r, a) { + if (this.yy.parser) + this.yy.parser.parseError(r, a); + else + throw new Error(r); + }, + // resets the lexer, sets new input + setInput: function(i, r) { + return this.yy = r || this.yy || {}, this._input = i, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var i = this._input[0]; + this.yytext += i, this.yyleng++, this.offset++, this.match += i, this.matched += i; + var r = i.match(/(?:\r\n?|\n).*/g); + return r ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), i; + }, + // unshifts one char (or a string) into the input + unput: function(i) { + var r = i.length, a = i.split(/(?:\r\n?|\n)/g); + this._input = i + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - r), this.offset -= r; + var n = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), a.length - 1 && (this.yylineno -= a.length - 1); + var f = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: a ? (a.length === n.length ? this.yylloc.first_column : 0) + n[n.length - a.length].length - a[0].length : this.yylloc.first_column - r + }, this.options.ranges && (this.yylloc.range = [f[0], f[0] + this.yyleng - r]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(i) { + this.unput(this.match.slice(i)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var i = this.matched.substr(0, this.matched.length - this.match.length); + return (i.length > 20 ? "..." : "") + i.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var i = this.match; + return i.length < 20 && (i += this._input.substr(0, 20 - i.length)), (i.substr(0, 20) + (i.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var i = this.pastInput(), r = new Array(i.length + 1).join("-"); + return i + this.upcomingInput() + ` +` + r + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(i, r) { + var a, n, f; + if (this.options.backtrack_lexer && (f = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (f.yylloc.range = this.yylloc.range.slice(0))), n = i[0].match(/(?:\r\n?|\n).*/g), n && (this.yylineno += n.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: n ? n[n.length - 1].length - n[n.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + i[0].length + }, this.yytext += i[0], this.match += i[0], this.matches = i, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(i[0].length), this.matched += i[0], a = this.performAction.call(this, this.yy, this, r, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), a) + return a; + if (this._backtrack) { + for (var s in f) + this[s] = f[s]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var i, r, a, n; + this._more || (this.yytext = "", this.match = ""); + for (var f = this._currentRules(), s = 0; s < f.length; s++) + if (a = this._input.match(this.rules[f[s]]), a && (!r || a[0].length > r[0].length)) { + if (r = a, n = s, this.options.backtrack_lexer) { + if (i = this.test_match(a, f[s]), i !== !1) + return i; + if (this._backtrack) { + r = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return r ? (i = this.test_match(r, f[n]), i !== !1 ? i : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var r = this.next(); + return r || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(r) { + this.conditionStack.push(r); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var r = this.conditionStack.length - 1; + return r > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(r) { + return r = this.conditionStack.length - 1 - Math.abs(r || 0), r >= 0 ? this.conditionStack[r] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(r) { + this.begin(r); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(r, a, n, f) { + switch (n) { + case 0: + return "title"; + case 1: + return this.begin("acc_title"), 9; + case 2: + return this.popState(), "acc_title_value"; + case 3: + return this.begin("acc_descr"), 11; + case 4: + return this.popState(), "acc_descr_value"; + case 5: + this.begin("acc_descr_multiline"); + break; + case 6: + this.popState(); + break; + case 7: + return "acc_descr_multiline_value"; + case 8: + return 5; + case 9: + break; + case 10: + break; + case 11: + break; + case 12: + return 8; + case 13: + return 6; + case 14: + return 19; + case 15: + return 30; + case 16: + return 22; + case 17: + return 21; + case 18: + return 24; + case 19: + return 26; + case 20: + return 28; + case 21: + return 31; + case 22: + return 32; + case 23: + return 33; + case 24: + return 34; + case 25: + return 35; + case 26: + return 36; + case 27: + return 37; + case 28: + return 38; + case 29: + return 39; + case 30: + return 40; + case 31: + return 41; + case 32: + return 42; + case 33: + return 43; + case 34: + return 44; + case 35: + return 55; + case 36: + return 56; + case 37: + return 57; + case 38: + return 58; + case 39: + return 59; + case 40: + return 60; + case 41: + return 61; + case 42: + return 47; + case 43: + return 49; + case 44: + return 51; + case 45: + return 54; + case 46: + return 53; + case 47: + this.begin("string"); + break; + case 48: + this.popState(); + break; + case 49: + return "qString"; + case 50: + return a.yytext = a.yytext.trim(), 62; + } + }, + rules: [/^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\b)/i, /^(?:\{)/i, /^(?:\})/i, /^(?::)/i, /^(?:id\b)/i, /^(?:text\b)/i, /^(?:risk\b)/i, /^(?:verifyMethod\b)/i, /^(?:requirement\b)/i, /^(?:functionalRequirement\b)/i, /^(?:interfaceRequirement\b)/i, /^(?:performanceRequirement\b)/i, /^(?:physicalRequirement\b)/i, /^(?:designConstraint\b)/i, /^(?:low\b)/i, /^(?:medium\b)/i, /^(?:high\b)/i, /^(?:analysis\b)/i, /^(?:demonstration\b)/i, /^(?:inspection\b)/i, /^(?:test\b)/i, /^(?:element\b)/i, /^(?:contains\b)/i, /^(?:copies\b)/i, /^(?:derives\b)/i, /^(?:satisfies\b)/i, /^(?:verifies\b)/i, /^(?:refines\b)/i, /^(?:traces\b)/i, /^(?:type\b)/i, /^(?:docref\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[\w][^\r\n\{\<\>\-\=]*)/i], + conditions: { acc_descr_multiline: { rules: [6, 7], inclusive: !1 }, acc_descr: { rules: [4], inclusive: !1 }, acc_title: { rules: [2], inclusive: !1 }, unqString: { rules: [], inclusive: !1 }, token: { rules: [], inclusive: !1 }, string: { rules: [48, 49], inclusive: !1 }, INITIAL: { rules: [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], inclusive: !0 } } + }; + return V; + }(); + ie.lexer = $e; + function ne() { + this.yy = {}; + } + return ne.prototype = ie, ie.Parser = ne, new ne(); +}(); +ce.parser = ce; +const He = ce; +let ue = [], b = {}, K = {}, q = {}, G = {}; +const We = { + REQUIREMENT: "Requirement", + FUNCTIONAL_REQUIREMENT: "Functional Requirement", + INTERFACE_REQUIREMENT: "Interface Requirement", + PERFORMANCE_REQUIREMENT: "Performance Requirement", + PHYSICAL_REQUIREMENT: "Physical Requirement", + DESIGN_CONSTRAINT: "Design Constraint" +}, Ke = { + LOW_RISK: "Low", + MED_RISK: "Medium", + HIGH_RISK: "High" +}, Ge = { + VERIFY_ANALYSIS: "Analysis", + VERIFY_DEMONSTRATION: "Demonstration", + VERIFY_INSPECTION: "Inspection", + VERIFY_TEST: "Test" +}, je = { + CONTAINS: "contains", + COPIES: "copies", + DERIVES: "derives", + SATISFIES: "satisfies", + VERIFIES: "verifies", + REFINES: "refines", + TRACES: "traces" +}, ze = (e, t) => (K[e] === void 0 && (K[e] = { + name: e, + type: t, + id: b.id, + text: b.text, + risk: b.risk, + verifyMethod: b.verifyMethod +}), b = {}, K[e]), Xe = () => K, Je = (e) => { + b !== void 0 && (b.id = e); +}, Ze = (e) => { + b !== void 0 && (b.text = e); +}, et = (e) => { + b !== void 0 && (b.risk = e); +}, tt = (e) => { + b !== void 0 && (b.verifyMethod = e); +}, it = (e) => (G[e] === void 0 && (G[e] = { + name: e, + type: q.type, + docRef: q.docRef +}, Ne.info("Added new requirement: ", e)), q = {}, G[e]), nt = () => G, rt = (e) => { + q !== void 0 && (q.type = e); +}, st = (e) => { + q !== void 0 && (q.docRef = e); +}, at = (e, t, l) => { + ue.push({ + type: e, + src: t, + dst: l + }); +}, lt = () => ue, ot = () => { + ue = [], b = {}, K = {}, q = {}, G = {}, Pe(); +}, ct = { + RequirementType: We, + RiskLevel: Ke, + VerifyType: Ge, + Relationships: je, + getConfig: () => Te().req, + addRequirement: ze, + getRequirements: Xe, + setNewReqId: Je, + setNewReqText: Ze, + setNewReqRisk: et, + setNewReqVerifyMethod: tt, + setAccTitle: Ce, + getAccTitle: Fe, + setAccDescription: Me, + getAccDescription: De, + addElement: it, + getElements: nt, + setNewElementType: rt, + setNewElementDocRef: st, + addRelationship: at, + getRelationships: lt, + clear: ot +}, ht = (e) => ` + + marker { + fill: ${e.relationColor}; + stroke: ${e.relationColor}; + } + + marker.cross { + stroke: ${e.lineColor}; + } + + svg { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + } + + .reqBox { + fill: ${e.requirementBackground}; + fill-opacity: 1.0; + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${e.requirementTextColor}; + } + .reqLabelBox { + fill: ${e.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + .relationshipLine { + stroke: ${e.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${e.relationLabelColor}; + } + +`, ut = ht, he = { + CONTAINS: "contains", + ARROW: "arrow" +}, dt = (e, t) => { + let l = e.append("defs").append("marker").attr("id", he.CONTAINS + "_line_ending").attr("refX", 0).attr("refY", t.line_height / 2).attr("markerWidth", t.line_height).attr("markerHeight", t.line_height).attr("orient", "auto").append("g"); + l.append("circle").attr("cx", t.line_height / 2).attr("cy", t.line_height / 2).attr("r", t.line_height / 2).attr("fill", "none"), l.append("line").attr("x1", 0).attr("x2", t.line_height).attr("y1", t.line_height / 2).attr("y2", t.line_height / 2).attr("stroke-width", 1), l.append("line").attr("y1", 0).attr("y2", t.line_height).attr("x1", t.line_height / 2).attr("x2", t.line_height / 2).attr("stroke-width", 1), e.append("defs").append("marker").attr("id", he.ARROW + "_line_ending").attr("refX", t.line_height).attr("refY", 0.5 * t.line_height).attr("markerWidth", t.line_height).attr("markerHeight", t.line_height).attr("orient", "auto").append("path").attr( + "d", + `M0,0 + L${t.line_height},${t.line_height / 2} + M${t.line_height},${t.line_height / 2} + L0,${t.line_height}` + ).attr("stroke-width", 1); +}, xe = { + ReqMarkers: he, + insertLineEndings: dt +}; +let y = {}, Se = 0; +const Ae = (e, t) => e.insert("rect", "#" + t).attr("class", "req reqBox").attr("x", 0).attr("y", 0).attr("width", y.rect_min_width + "px").attr("height", y.rect_min_height + "px"), ve = (e, t, l) => { + let c = y.rect_min_width / 2, u = e.append("text").attr("class", "req reqLabel reqTitle").attr("id", t).attr("x", c).attr("y", y.rect_padding).attr("dominant-baseline", "hanging"), d = 0; + l.forEach((E) => { + d == 0 ? u.append("tspan").attr("text-anchor", "middle").attr("x", y.rect_min_width / 2).attr("dy", 0).text(E) : u.append("tspan").attr("text-anchor", "middle").attr("x", y.rect_min_width / 2).attr("dy", y.line_height * 0.75).text(E), d++; + }); + let p = 1.5 * y.rect_padding, h = d * y.line_height * 0.75, o = p + h; + return e.append("line").attr("class", "req-title-line").attr("x1", "0").attr("x2", y.rect_min_width).attr("y1", o).attr("y2", o), { + titleNode: u, + y: o + }; +}, we = (e, t, l, c) => { + let u = e.append("text").attr("class", "req reqLabel").attr("id", t).attr("x", y.rect_padding).attr("y", c).attr("dominant-baseline", "hanging"), d = 0; + const p = 30; + let h = []; + return l.forEach((o) => { + let E = o.length; + for (; E > p && d < 3; ) { + let R = o.substring(0, p); + o = o.substring(p, o.length), E = o.length, h[h.length] = R, d++; + } + if (d == 3) { + let R = h[h.length - 1]; + h[h.length - 1] = R.substring(0, R.length - 4) + "..."; + } else + h[h.length] = o; + d = 0; + }), h.forEach((o) => { + u.append("tspan").attr("x", y.rect_padding).attr("dy", y.line_height).text(o); + }), u; +}, pt = (e, t, l, c) => { + const u = t.node().getTotalLength(), d = t.node().getPointAtLength(u * 0.5), p = "rel" + Se; + Se++; + const o = e.append("text").attr("class", "req relationshipLabel").attr("id", p).attr("x", d.x).attr("y", d.y).attr("text-anchor", "middle").attr("dominant-baseline", "middle").text(c).node().getBBox(); + e.insert("rect", "#" + p).attr("class", "req reqLabelBox").attr("x", d.x - o.width / 2).attr("y", d.y - o.height / 2).attr("width", o.width).attr("height", o.height).attr("fill", "white").attr("fill-opacity", "85%"); +}, ft = function(e, t, l, c, u) { + const d = l.edge(H(t.src), H(t.dst)), p = Qe().x(function(o) { + return o.x; + }).y(function(o) { + return o.y; + }), h = e.insert("path", "#" + c).attr("class", "er relationshipLine").attr("d", p(d.points)).attr("fill", "none"); + t.type == u.db.Relationships.CONTAINS ? h.attr( + "marker-start", + "url(" + ke.getUrl(y.arrowMarkerAbsolute) + "#" + t.type + "_line_ending)" + ) : (h.attr("stroke-dasharray", "10,7"), h.attr( + "marker-end", + "url(" + ke.getUrl(y.arrowMarkerAbsolute) + "#" + xe.ReqMarkers.ARROW + "_line_ending)" + )), pt(e, h, y, `<<${t.type}>>`); +}, yt = (e, t, l) => { + Object.keys(e).forEach((c) => { + let u = e[c]; + c = H(c), Ne.info("Added new requirement: ", c); + const d = l.append("g").attr("id", c), p = "req-" + c, h = Ae(d, p); + let o = ve(d, c + "_title", [ + `<<${u.type}>>`, + `${u.name}` + ]); + we( + d, + c + "_body", + [ + `Id: ${u.id}`, + `Text: ${u.text}`, + `Risk: ${u.risk}`, + `Verification: ${u.verifyMethod}` + ], + o.y + ); + const E = h.node().getBBox(); + t.setNode(c, { + width: E.width, + height: E.height, + shape: "rect", + id: c + }); + }); +}, _t = (e, t, l) => { + Object.keys(e).forEach((c) => { + let u = e[c]; + const d = H(c), p = l.append("g").attr("id", d), h = "element-" + d, o = Ae(p, h); + let E = ve(p, h + "_title", ["<>", `${c}`]); + we( + p, + h + "_body", + [`Type: ${u.type || "Not Specified"}`, `Doc Ref: ${u.docRef || "None"}`], + E.y + ); + const R = o.node().getBBox(); + t.setNode(d, { + width: R.width, + height: R.height, + shape: "rect", + id: d + }); + }); +}, Et = (e, t) => (e.forEach(function(l) { + let c = H(l.src), u = H(l.dst); + t.setEdge(c, u, { relationship: l }); +}), e), gt = function(e, t) { + t.nodes().forEach(function(l) { + l !== void 0 && t.node(l) !== void 0 && (e.select("#" + l), e.select("#" + l).attr( + "transform", + "translate(" + (t.node(l).x - t.node(l).width / 2) + "," + (t.node(l).y - t.node(l).height / 2) + " )" + )); + }); +}, H = (e) => e.replace(/\s/g, "").replace(/\./g, "_"), Rt = (e, t, l, c) => { + y = Te().requirement; + const u = y.securityLevel; + let d; + u === "sandbox" && (d = oe("#i" + t)); + const h = (u === "sandbox" ? oe(d.nodes()[0].contentDocument.body) : oe("body")).select(`[id='${t}']`); + xe.insertLineEndings(h, y); + const o = new Ue({ + multigraph: !1, + compound: !1, + directed: !0 + }).setGraph({ + rankdir: y.layoutDirection, + marginx: 20, + marginy: 20, + nodesep: 100, + edgesep: 100, + ranksep: 100 + }).setDefaultEdgeLabel(function() { + return {}; + }); + let E = c.db.getRequirements(), R = c.db.getElements(), A = c.db.getRelationships(); + yt(E, o, h), _t(R, o, h), Et(A, o), Be(o), gt(h, o), A.forEach(function(x) { + ft(h, x, o, t, c); + }); + const T = y.rect_padding, N = h.node().getBBox(), v = N.width + T * 2, k = N.height + T * 2; + Ye(h, k, v, y.useMaxWidth), h.attr("viewBox", `${N.x - T} ${N.y - T} ${v} ${k}`); +}, mt = { + draw: Rt +}, xt = { + parser: He, + db: ct, + renderer: mt, + styles: ut +}; +export { + xt as diagram +}; diff --git a/client/packages/lowcoder/public/package/666097a3.js b/client/packages/lowcoder/public/package/666097a3.js new file mode 100644 index 000000000..b06c03998 --- /dev/null +++ b/client/packages/lowcoder/public/package/666097a3.js @@ -0,0 +1,1536 @@ +import { a as F, b as xn, c as zn, d as L, k as Un, e as Hn, g as jn, j as P, l as En, m as kn, n as yn, t as Jn, o as Nn, p as Kn, q as Zn, f as s, G as x, h as w, i as g, r as M, v as y, s as V } from "./4504d077.js"; +import { a8 as A, a9 as Qn, aa as ne, ab as ee, ac as Ln, ad as B, ae as _n, af as re, ag as Cn, ah as J, ai as te, aj as ie, ak as K, al as ae, am as In, an as oe, ao as ue, ap as H } from "./08856db2.js"; +var de = /\s/; +function fe(n) { + for (var e = n.length; e-- && de.test(n.charAt(e)); ) + ; + return e; +} +var se = /^\s+/; +function ce(n) { + return n && n.slice(0, fe(n) + 1).replace(se, ""); +} +var un = 0 / 0, he = /^[-+]0x[0-9a-f]+$/i, le = /^0b[01]+$/i, ve = /^0o[0-7]+$/i, pe = parseInt; +function we(n) { + if (typeof n == "number") + return n; + if (F(n)) + return un; + if (A(n)) { + var e = typeof n.valueOf == "function" ? n.valueOf() : n; + n = A(e) ? e + "" : e; + } + if (typeof n != "string") + return n === 0 ? n : +n; + n = ce(n); + var r = le.test(n); + return r || ve.test(n) ? pe(n.slice(2), r ? 2 : 8) : he.test(n) ? un : +n; +} +var dn = 1 / 0, me = 17976931348623157e292; +function S(n) { + if (!n) + return n === 0 ? n : 0; + if (n = we(n), n === dn || n === -dn) { + var e = n < 0 ? -1 : 1; + return e * me; + } + return n === n ? n : 0; +} +function be(n) { + var e = S(n), r = e % 1; + return e === e ? r ? e - r : e : 0; +} +function _(n) { + var e = n == null ? 0 : n.length; + return e ? xn(n, 1) : []; +} +function ge(n) { + return Qn(ne(n, void 0, _), n + ""); +} +var xe = 1, Ee = 4; +function ke(n) { + return zn(n, xe | Ee); +} +var ye = function() { + return ee.Date.now(); +}; +const fn = ye; +var Rn = Object.prototype, Ne = Rn.hasOwnProperty, Le = Ln(function(n, e) { + n = Object(n); + var r = -1, t = e.length, i = t > 2 ? e[2] : void 0; + for (i && B(e[0], e[1], i) && (t = 1); ++r < t; ) + for (var o = e[r], a = _n(o), u = -1, d = a.length; ++u < d; ) { + var f = a[u], c = n[f]; + (c === void 0 || re(c, Rn[f]) && !Ne.call(n, f)) && (n[f] = o[f]); + } + return n; +}); +const _e = Le; +function $(n) { + var e = n == null ? 0 : n.length; + return e ? n[e - 1] : void 0; +} +function Ce(n) { + return function(e, r, t) { + var i = Object(e); + if (!Cn(e)) { + var o = L(r); + e = Un(e), r = function(u) { + return o(i[u], u, i); + }; + } + var a = n(e, r, t); + return a > -1 ? i[o ? e[a] : a] : void 0; + }; +} +var Ie = Math.max; +function Re(n, e, r) { + var t = n == null ? 0 : n.length; + if (!t) + return -1; + var i = r == null ? 0 : be(r); + return i < 0 && (i = Ie(t + i, 0)), Hn(n, L(e), i); +} +var Te = Ce(Re); +const Z = Te; +function Tn(n, e) { + var r = -1, t = Cn(n) ? Array(n.length) : []; + return jn(n, function(i, o, a) { + t[++r] = e(i, o, a); + }), t; +} +function m(n, e) { + var r = J(n) ? P : Tn; + return r(n, L(e)); +} +function Me(n, e) { + return n == null ? n : te(n, En(e), _n); +} +function Oe(n, e) { + return n && kn(n, En(e)); +} +function Pe(n, e) { + return n > e; +} +function Mn(n, e) { + return n < e; +} +function Y(n, e) { + var r = {}; + return e = L(e), kn(n, function(t, i, o) { + ie(r, i, e(t, i, o)); + }), r; +} +function Q(n, e, r) { + for (var t = -1, i = n.length; ++t < i; ) { + var o = n[t], a = e(o); + if (a != null && (u === void 0 ? a === a && !F(a) : r(a, u))) + var u = a, d = o; + } + return d; +} +function E(n) { + return n && n.length ? Q(n, K, Pe) : void 0; +} +function R(n) { + return n && n.length ? Q(n, K, Mn) : void 0; +} +function nn(n, e) { + return n && n.length ? Q(n, L(e), Mn) : void 0; +} +function Se(n, e, r, t) { + if (!A(n)) + return n; + e = yn(e, n); + for (var i = -1, o = e.length, a = o - 1, u = n; u != null && ++i < o; ) { + var d = Jn(e[i]), f = r; + if (d === "__proto__" || d === "constructor" || d === "prototype") + return n; + if (i != a) { + var c = u[d]; + f = t ? t(c, d, u) : void 0, f === void 0 && (f = A(c) ? c : ae(e[i + 1]) ? [] : {}); + } + In(u, d, f), u = u[d]; + } + return n; +} +function Fe(n, e, r) { + for (var t = -1, i = e.length, o = {}; ++t < i; ) { + var a = e[t], u = Nn(n, a); + r(u, a) && Se(o, yn(a, n), u); + } + return o; +} +function Ae(n, e) { + var r = n.length; + for (n.sort(e); r--; ) + n[r] = n[r].value; + return n; +} +function Be(n, e) { + if (n !== e) { + var r = n !== void 0, t = n === null, i = n === n, o = F(n), a = e !== void 0, u = e === null, d = e === e, f = F(e); + if (!u && !f && !o && n > e || o && a && d && !u && !f || t && a && d || !r && d || !i) + return 1; + if (!t && !o && !f && n < e || f && r && i && !t && !o || u && r && i || !a && i || !d) + return -1; + } + return 0; +} +function $e(n, e, r) { + for (var t = -1, i = n.criteria, o = e.criteria, a = i.length, u = r.length; ++t < a; ) { + var d = Be(i[t], o[t]); + if (d) { + if (t >= u) + return d; + var f = r[t]; + return d * (f == "desc" ? -1 : 1); + } + } + return n.index - e.index; +} +function Ge(n, e, r) { + e.length ? e = P(e, function(o) { + return J(o) ? function(a) { + return Nn(a, o.length === 1 ? o[0] : o); + } : o; + }) : e = [K]; + var t = -1; + e = P(e, oe(L)); + var i = Tn(n, function(o, a, u) { + var d = P(e, function(f) { + return f(o); + }); + return { criteria: d, index: ++t, value: o }; + }); + return Ae(i, function(o, a) { + return $e(o, a, r); + }); +} +function Ve(n, e) { + return Fe(n, e, function(r, t) { + return Kn(n, t); + }); +} +var Ye = ge(function(n, e) { + return n == null ? {} : Ve(n, e); +}); +const G = Ye; +var De = Math.ceil, qe = Math.max; +function We(n, e, r, t) { + for (var i = -1, o = qe(De((e - n) / (r || 1)), 0), a = Array(o); o--; ) + a[t ? o : ++i] = n, n += r; + return a; +} +function Xe(n) { + return function(e, r, t) { + return t && typeof t != "number" && B(e, r, t) && (r = t = void 0), e = S(e), r === void 0 ? (r = e, e = 0) : r = S(r), t = t === void 0 ? e < r ? 1 : -1 : S(t), We(e, r, t, n); + }; +} +var ze = Xe(); +const N = ze; +var Ue = Ln(function(n, e) { + if (n == null) + return []; + var r = e.length; + return r > 1 && B(n, e[0], e[1]) ? e = [] : r > 2 && B(e[0], e[1], e[2]) && (e = [e[0]]), Ge(n, xn(e, 1), []); +}); +const O = Ue; +var He = 0; +function en(n) { + var e = ++He; + return Zn(n) + e; +} +function je(n, e, r) { + for (var t = -1, i = n.length, o = e.length, a = {}; ++t < i; ) { + var u = t < o ? e[t] : void 0; + r(a, n[t], u); + } + return a; +} +function Je(n, e) { + return je(n || [], e || [], In); +} +class Ke { + constructor() { + var e = {}; + e._next = e._prev = e, this._sentinel = e; + } + dequeue() { + var e = this._sentinel, r = e._prev; + if (r !== e) + return sn(r), r; + } + enqueue(e) { + var r = this._sentinel; + e._prev && e._next && sn(e), e._next = r._next, r._next._prev = e, r._next = e, e._prev = r; + } + toString() { + for (var e = [], r = this._sentinel, t = r._prev; t !== r; ) + e.push(JSON.stringify(t, Ze)), t = t._prev; + return "[" + e.join(", ") + "]"; + } +} +function sn(n) { + n._prev._next = n._next, n._next._prev = n._prev, delete n._next, delete n._prev; +} +function Ze(n, e) { + if (n !== "_next" && n !== "_prev") + return e; +} +var Qe = ue(1); +function nr(n, e) { + if (n.nodeCount() <= 1) + return []; + var r = rr(n, e || Qe), t = er(r.graph, r.buckets, r.zeroIdx); + return _( + m(t, function(i) { + return n.outEdges(i.v, i.w); + }) + ); +} +function er(n, e, r) { + for (var t = [], i = e[e.length - 1], o = e[0], a; n.nodeCount(); ) { + for (; a = o.dequeue(); ) + q(n, e, r, a); + for (; a = i.dequeue(); ) + q(n, e, r, a); + if (n.nodeCount()) { + for (var u = e.length - 2; u > 0; --u) + if (a = e[u].dequeue(), a) { + t = t.concat(q(n, e, r, a, !0)); + break; + } + } + } + return t; +} +function q(n, e, r, t, i) { + var o = i ? [] : void 0; + return s(n.inEdges(t.v), function(a) { + var u = n.edge(a), d = n.node(a.v); + i && o.push({ v: a.v, w: a.w }), d.out -= u, j(e, r, d); + }), s(n.outEdges(t.v), function(a) { + var u = n.edge(a), d = a.w, f = n.node(d); + f.in -= u, j(e, r, f); + }), n.removeNode(t.v), o; +} +function rr(n, e) { + var r = new x(), t = 0, i = 0; + s(n.nodes(), function(u) { + r.setNode(u, { v: u, in: 0, out: 0 }); + }), s(n.edges(), function(u) { + var d = r.edge(u.v, u.w) || 0, f = e(u), c = d + f; + r.setEdge(u.v, u.w, c), i = Math.max(i, r.node(u.v).out += f), t = Math.max(t, r.node(u.w).in += f); + }); + var o = N(i + t + 3).map(function() { + return new Ke(); + }), a = t + 1; + return s(r.nodes(), function(u) { + j(o, a, r.node(u)); + }), { graph: r, buckets: o, zeroIdx: a }; +} +function j(n, e, r) { + r.out ? r.in ? n[r.out - r.in + e].enqueue(r) : n[n.length - 1].enqueue(r) : n[0].enqueue(r); +} +function tr(n) { + var e = n.graph().acyclicer === "greedy" ? nr(n, r(n)) : ir(n); + s(e, function(t) { + var i = n.edge(t); + n.removeEdge(t), i.forwardName = t.name, i.reversed = !0, n.setEdge(t.w, t.v, i, en("rev")); + }); + function r(t) { + return function(i) { + return t.edge(i).weight; + }; + } +} +function ir(n) { + var e = [], r = {}, t = {}; + function i(o) { + w(t, o) || (t[o] = !0, r[o] = !0, s(n.outEdges(o), function(a) { + w(r, a.w) ? e.push(a) : i(a.w); + }), delete r[o]); + } + return s(n.nodes(), i), e; +} +function ar(n) { + s(n.edges(), function(e) { + var r = n.edge(e); + if (r.reversed) { + n.removeEdge(e); + var t = r.forwardName; + delete r.reversed, delete r.forwardName, n.setEdge(e.w, e.v, r, t); + } + }); +} +function C(n, e, r, t) { + var i; + do + i = en(t); + while (n.hasNode(i)); + return r.dummy = e, n.setNode(i, r), i; +} +function or(n) { + var e = new x().setGraph(n.graph()); + return s(n.nodes(), function(r) { + e.setNode(r, n.node(r)); + }), s(n.edges(), function(r) { + var t = e.edge(r.v, r.w) || { weight: 0, minlen: 1 }, i = n.edge(r); + e.setEdge(r.v, r.w, { + weight: t.weight + i.weight, + minlen: Math.max(t.minlen, i.minlen) + }); + }), e; +} +function On(n) { + var e = new x({ multigraph: n.isMultigraph() }).setGraph(n.graph()); + return s(n.nodes(), function(r) { + n.children(r).length || e.setNode(r, n.node(r)); + }), s(n.edges(), function(r) { + e.setEdge(r, n.edge(r)); + }), e; +} +function cn(n, e) { + var r = n.x, t = n.y, i = e.x - r, o = e.y - t, a = n.width / 2, u = n.height / 2; + if (!i && !o) + throw new Error("Not possible to find intersection inside of the rectangle"); + var d, f; + return Math.abs(o) * a > Math.abs(i) * u ? (o < 0 && (u = -u), d = u * i / o, f = u) : (i < 0 && (a = -a), d = a, f = a * o / i), { x: r + d, y: t + f }; +} +function D(n) { + var e = m(N(Pn(n) + 1), function() { + return []; + }); + return s(n.nodes(), function(r) { + var t = n.node(r), i = t.rank; + g(i) || (e[i][t.order] = r); + }), e; +} +function ur(n) { + var e = R( + m(n.nodes(), function(r) { + return n.node(r).rank; + }) + ); + s(n.nodes(), function(r) { + var t = n.node(r); + w(t, "rank") && (t.rank -= e); + }); +} +function dr(n) { + var e = R( + m(n.nodes(), function(o) { + return n.node(o).rank; + }) + ), r = []; + s(n.nodes(), function(o) { + var a = n.node(o).rank - e; + r[a] || (r[a] = []), r[a].push(o); + }); + var t = 0, i = n.graph().nodeRankFactor; + s(r, function(o, a) { + g(o) && a % i !== 0 ? --t : t && s(o, function(u) { + n.node(u).rank += t; + }); + }); +} +function hn(n, e, r, t) { + var i = { + width: 0, + height: 0 + }; + return arguments.length >= 4 && (i.rank = r, i.order = t), C(n, "border", i, e); +} +function Pn(n) { + return E( + m(n.nodes(), function(e) { + var r = n.node(e).rank; + if (!g(r)) + return r; + }) + ); +} +function fr(n, e) { + var r = { lhs: [], rhs: [] }; + return s(n, function(t) { + e(t) ? r.lhs.push(t) : r.rhs.push(t); + }), r; +} +function sr(n, e) { + var r = fn(); + try { + return e(); + } finally { + console.log(n + " time: " + (fn() - r) + "ms"); + } +} +function cr(n, e) { + return e(); +} +function hr(n) { + function e(r) { + var t = n.children(r), i = n.node(r); + if (t.length && s(t, e), w(i, "minRank")) { + i.borderLeft = [], i.borderRight = []; + for (var o = i.minRank, a = i.maxRank + 1; o < a; ++o) + ln(n, "borderLeft", "_bl", r, i, o), ln(n, "borderRight", "_br", r, i, o); + } + } + s(n.children(), e); +} +function ln(n, e, r, t, i, o) { + var a = { width: 0, height: 0, rank: o, borderType: e }, u = i[e][o - 1], d = C(n, "border", a, r); + i[e][o] = d, n.setParent(d, t), u && n.setEdge(u, d, { weight: 1 }); +} +function lr(n) { + var e = n.graph().rankdir.toLowerCase(); + (e === "lr" || e === "rl") && Sn(n); +} +function vr(n) { + var e = n.graph().rankdir.toLowerCase(); + (e === "bt" || e === "rl") && pr(n), (e === "lr" || e === "rl") && (wr(n), Sn(n)); +} +function Sn(n) { + s(n.nodes(), function(e) { + vn(n.node(e)); + }), s(n.edges(), function(e) { + vn(n.edge(e)); + }); +} +function vn(n) { + var e = n.width; + n.width = n.height, n.height = e; +} +function pr(n) { + s(n.nodes(), function(e) { + W(n.node(e)); + }), s(n.edges(), function(e) { + var r = n.edge(e); + s(r.points, W), w(r, "y") && W(r); + }); +} +function W(n) { + n.y = -n.y; +} +function wr(n) { + s(n.nodes(), function(e) { + X(n.node(e)); + }), s(n.edges(), function(e) { + var r = n.edge(e); + s(r.points, X), w(r, "x") && X(r); + }); +} +function X(n) { + var e = n.x; + n.x = n.y, n.y = e; +} +function mr(n) { + n.graph().dummyChains = [], s(n.edges(), function(e) { + br(n, e); + }); +} +function br(n, e) { + var r = e.v, t = n.node(r).rank, i = e.w, o = n.node(i).rank, a = e.name, u = n.edge(e), d = u.labelRank; + if (o !== t + 1) { + n.removeEdge(e); + var f, c, h; + for (h = 0, ++t; t < o; ++h, ++t) + u.points = [], c = { + width: 0, + height: 0, + edgeLabel: u, + edgeObj: e, + rank: t + }, f = C(n, "edge", c, "_d"), t === d && (c.width = u.width, c.height = u.height, c.dummy = "edge-label", c.labelpos = u.labelpos), n.setEdge(r, f, { weight: u.weight }, a), h === 0 && n.graph().dummyChains.push(f), r = f; + n.setEdge(r, i, { weight: u.weight }, a); + } +} +function gr(n) { + s(n.graph().dummyChains, function(e) { + var r = n.node(e), t = r.edgeLabel, i; + for (n.setEdge(r.edgeObj, t); r.dummy; ) + i = n.successors(e)[0], n.removeNode(e), t.points.push({ x: r.x, y: r.y }), r.dummy === "edge-label" && (t.x = r.x, t.y = r.y, t.width = r.width, t.height = r.height), e = i, r = n.node(e); + }); +} +function rn(n) { + var e = {}; + function r(t) { + var i = n.node(t); + if (w(e, t)) + return i.rank; + e[t] = !0; + var o = R( + m(n.outEdges(t), function(a) { + return r(a.w) - n.edge(a).minlen; + }) + ); + return (o === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 + o === void 0 || // return value of _.map([]) for Lodash 4 + o === null) && (o = 0), i.rank = o; + } + s(n.sources(), r); +} +function T(n, e) { + return n.node(e.w).rank - n.node(e.v).rank - n.edge(e).minlen; +} +function Fn(n) { + var e = new x({ directed: !1 }), r = n.nodes()[0], t = n.nodeCount(); + e.setNode(r, {}); + for (var i, o; xr(e, n) < t; ) + i = Er(e, n), o = e.hasNode(i.v) ? T(n, i) : -T(n, i), kr(e, n, o); + return e; +} +function xr(n, e) { + function r(t) { + s(e.nodeEdges(t), function(i) { + var o = i.v, a = t === o ? i.w : o; + !n.hasNode(a) && !T(e, i) && (n.setNode(a, {}), n.setEdge(t, a, {}), r(a)); + }); + } + return s(n.nodes(), r), n.nodeCount(); +} +function Er(n, e) { + return nn(e.edges(), function(r) { + if (n.hasNode(r.v) !== n.hasNode(r.w)) + return T(e, r); + }); +} +function kr(n, e, r) { + s(n.nodes(), function(t) { + e.node(t).rank += r; + }); +} +function yr() { +} +yr.prototype = new Error(); +function An(n, e, r) { + J(e) || (e = [e]); + var t = (n.isDirected() ? n.successors : n.neighbors).bind(n), i = [], o = {}; + return s(e, function(a) { + if (!n.hasNode(a)) + throw new Error("Graph does not have node: " + a); + Bn(n, a, r === "post", o, t, i); + }), i; +} +function Bn(n, e, r, t, i, o) { + w(t, e) || (t[e] = !0, r || o.push(e), s(i(e), function(a) { + Bn(n, a, r, t, i, o); + }), r && o.push(e)); +} +function Nr(n, e) { + return An(n, e, "post"); +} +function Lr(n, e) { + return An(n, e, "pre"); +} +k.initLowLimValues = an; +k.initCutValues = tn; +k.calcCutValue = $n; +k.leaveEdge = Vn; +k.enterEdge = Yn; +k.exchangeEdges = Dn; +function k(n) { + n = or(n), rn(n); + var e = Fn(n); + an(e), tn(e, n); + for (var r, t; r = Vn(e); ) + t = Yn(e, n, r), Dn(e, n, r, t); +} +function tn(n, e) { + var r = Nr(n, n.nodes()); + r = r.slice(0, r.length - 1), s(r, function(t) { + _r(n, e, t); + }); +} +function _r(n, e, r) { + var t = n.node(r), i = t.parent; + n.edge(r, i).cutvalue = $n(n, e, r); +} +function $n(n, e, r) { + var t = n.node(r), i = t.parent, o = !0, a = e.edge(r, i), u = 0; + return a || (o = !1, a = e.edge(i, r)), u = a.weight, s(e.nodeEdges(r), function(d) { + var f = d.v === r, c = f ? d.w : d.v; + if (c !== i) { + var h = f === o, l = e.edge(d).weight; + if (u += h ? l : -l, Ir(n, r, c)) { + var v = n.edge(r, c).cutvalue; + u += h ? -v : v; + } + } + }), u; +} +function an(n, e) { + arguments.length < 2 && (e = n.nodes()[0]), Gn(n, {}, 1, e); +} +function Gn(n, e, r, t, i) { + var o = r, a = n.node(t); + return e[t] = !0, s(n.neighbors(t), function(u) { + w(e, u) || (r = Gn(n, e, r, u, t)); + }), a.low = o, a.lim = r++, i ? a.parent = i : delete a.parent, r; +} +function Vn(n) { + return Z(n.edges(), function(e) { + return n.edge(e).cutvalue < 0; + }); +} +function Yn(n, e, r) { + var t = r.v, i = r.w; + e.hasEdge(t, i) || (t = r.w, i = r.v); + var o = n.node(t), a = n.node(i), u = o, d = !1; + o.lim > a.lim && (u = a, d = !0); + var f = M(e.edges(), function(c) { + return d === pn(n, n.node(c.v), u) && d !== pn(n, n.node(c.w), u); + }); + return nn(f, function(c) { + return T(e, c); + }); +} +function Dn(n, e, r, t) { + var i = r.v, o = r.w; + n.removeEdge(i, o), n.setEdge(t.v, t.w, {}), an(n), tn(n, e), Cr(n, e); +} +function Cr(n, e) { + var r = Z(n.nodes(), function(i) { + return !e.node(i).parent; + }), t = Lr(n, r); + t = t.slice(1), s(t, function(i) { + var o = n.node(i).parent, a = e.edge(i, o), u = !1; + a || (a = e.edge(o, i), u = !0), e.node(i).rank = e.node(o).rank + (u ? a.minlen : -a.minlen); + }); +} +function Ir(n, e, r) { + return n.hasEdge(e, r); +} +function pn(n, e, r) { + return r.low <= e.lim && e.lim <= r.lim; +} +function Rr(n) { + switch (n.graph().ranker) { + case "network-simplex": + wn(n); + break; + case "tight-tree": + Mr(n); + break; + case "longest-path": + Tr(n); + break; + default: + wn(n); + } +} +var Tr = rn; +function Mr(n) { + rn(n), Fn(n); +} +function wn(n) { + k(n); +} +function Or(n) { + var e = C(n, "root", {}, "_root"), r = Pr(n), t = E(y(r)) - 1, i = 2 * t + 1; + n.graph().nestingRoot = e, s(n.edges(), function(a) { + n.edge(a).minlen *= i; + }); + var o = Sr(n) + 1; + s(n.children(), function(a) { + qn(n, e, i, o, t, r, a); + }), n.graph().nodeRankFactor = i; +} +function qn(n, e, r, t, i, o, a) { + var u = n.children(a); + if (!u.length) { + a !== e && n.setEdge(e, a, { weight: 0, minlen: r }); + return; + } + var d = hn(n, "_bt"), f = hn(n, "_bb"), c = n.node(a); + n.setParent(d, a), c.borderTop = d, n.setParent(f, a), c.borderBottom = f, s(u, function(h) { + qn(n, e, r, t, i, o, h); + var l = n.node(h), v = l.borderTop ? l.borderTop : h, p = l.borderBottom ? l.borderBottom : h, b = l.borderTop ? t : 2 * t, I = v !== p ? 1 : i - o[a] + 1; + n.setEdge(d, v, { + weight: b, + minlen: I, + nestingEdge: !0 + }), n.setEdge(p, f, { + weight: b, + minlen: I, + nestingEdge: !0 + }); + }), n.parent(a) || n.setEdge(e, d, { weight: 0, minlen: i + o[a] }); +} +function Pr(n) { + var e = {}; + function r(t, i) { + var o = n.children(t); + o && o.length && s(o, function(a) { + r(a, i + 1); + }), e[t] = i; + } + return s(n.children(), function(t) { + r(t, 1); + }), e; +} +function Sr(n) { + return V( + n.edges(), + function(e, r) { + return e + n.edge(r).weight; + }, + 0 + ); +} +function Fr(n) { + var e = n.graph(); + n.removeNode(e.nestingRoot), delete e.nestingRoot, s(n.edges(), function(r) { + var t = n.edge(r); + t.nestingEdge && n.removeEdge(r); + }); +} +function Ar(n, e, r) { + var t = {}, i; + s(r, function(o) { + for (var a = n.parent(o), u, d; a; ) { + if (u = n.parent(a), u ? (d = t[u], t[u] = a) : (d = i, i = a), d && d !== a) { + e.setEdge(d, a); + return; + } + a = u; + } + }); +} +function Br(n, e, r) { + var t = $r(n), i = new x({ compound: !0 }).setGraph({ root: t }).setDefaultNodeLabel(function(o) { + return n.node(o); + }); + return s(n.nodes(), function(o) { + var a = n.node(o), u = n.parent(o); + (a.rank === e || a.minRank <= e && e <= a.maxRank) && (i.setNode(o), i.setParent(o, u || t), s(n[r](o), function(d) { + var f = d.v === o ? d.w : d.v, c = i.edge(f, o), h = g(c) ? 0 : c.weight; + i.setEdge(f, o, { weight: n.edge(d).weight + h }); + }), w(a, "minRank") && i.setNode(o, { + borderLeft: a.borderLeft[e], + borderRight: a.borderRight[e] + })); + }), i; +} +function $r(n) { + for (var e; n.hasNode(e = en("_root")); ) + ; + return e; +} +function Gr(n, e) { + for (var r = 0, t = 1; t < e.length; ++t) + r += Vr(n, e[t - 1], e[t]); + return r; +} +function Vr(n, e, r) { + for (var t = Je( + r, + m(r, function(f, c) { + return c; + }) + ), i = _( + m(e, function(f) { + return O( + m(n.outEdges(f), function(c) { + return { pos: t[c.w], weight: n.edge(c).weight }; + }), + "pos" + ); + }) + ), o = 1; o < r.length; ) + o <<= 1; + var a = 2 * o - 1; + o -= 1; + var u = m(new Array(a), function() { + return 0; + }), d = 0; + return s( + // @ts-expect-error + i.forEach(function(f) { + var c = f.pos + o; + u[c] += f.weight; + for (var h = 0; c > 0; ) + c % 2 && (h += u[c + 1]), c = c - 1 >> 1, u[c] += f.weight; + d += f.weight * h; + }) + ), d; +} +function Yr(n) { + var e = {}, r = M(n.nodes(), function(u) { + return !n.children(u).length; + }), t = E( + m(r, function(u) { + return n.node(u).rank; + }) + ), i = m(N(t + 1), function() { + return []; + }); + function o(u) { + if (!w(e, u)) { + e[u] = !0; + var d = n.node(u); + i[d.rank].push(u), s(n.successors(u), o); + } + } + var a = O(r, function(u) { + return n.node(u).rank; + }); + return s(a, o), i; +} +function Dr(n, e) { + return m(e, function(r) { + var t = n.inEdges(r); + if (t.length) { + var i = V( + t, + function(o, a) { + var u = n.edge(a), d = n.node(a.v); + return { + sum: o.sum + u.weight * d.order, + weight: o.weight + u.weight + }; + }, + { sum: 0, weight: 0 } + ); + return { + v: r, + barycenter: i.sum / i.weight, + weight: i.weight + }; + } else + return { v: r }; + }); +} +function qr(n, e) { + var r = {}; + s(n, function(i, o) { + var a = r[i.v] = { + indegree: 0, + in: [], + out: [], + vs: [i.v], + i: o + }; + g(i.barycenter) || (a.barycenter = i.barycenter, a.weight = i.weight); + }), s(e.edges(), function(i) { + var o = r[i.v], a = r[i.w]; + !g(o) && !g(a) && (a.indegree++, o.out.push(r[i.w])); + }); + var t = M(r, function(i) { + return !i.indegree; + }); + return Wr(t); +} +function Wr(n) { + var e = []; + function r(o) { + return function(a) { + a.merged || (g(a.barycenter) || g(o.barycenter) || a.barycenter >= o.barycenter) && Xr(o, a); + }; + } + function t(o) { + return function(a) { + a.in.push(o), --a.indegree === 0 && n.push(a); + }; + } + for (; n.length; ) { + var i = n.pop(); + e.push(i), s(i.in.reverse(), r(i)), s(i.out, t(i)); + } + return m( + M(e, function(o) { + return !o.merged; + }), + function(o) { + return G(o, ["vs", "i", "barycenter", "weight"]); + } + ); +} +function Xr(n, e) { + var r = 0, t = 0; + n.weight && (r += n.barycenter * n.weight, t += n.weight), e.weight && (r += e.barycenter * e.weight, t += e.weight), n.vs = e.vs.concat(n.vs), n.barycenter = r / t, n.weight = t, n.i = Math.min(e.i, n.i), e.merged = !0; +} +function zr(n, e) { + var r = fr(n, function(c) { + return w(c, "barycenter"); + }), t = r.lhs, i = O(r.rhs, function(c) { + return -c.i; + }), o = [], a = 0, u = 0, d = 0; + t.sort(Ur(!!e)), d = mn(o, i, d), s(t, function(c) { + d += c.vs.length, o.push(c.vs), a += c.barycenter * c.weight, u += c.weight, d = mn(o, i, d); + }); + var f = { vs: _(o) }; + return u && (f.barycenter = a / u, f.weight = u), f; +} +function mn(n, e, r) { + for (var t; e.length && (t = $(e)).i <= r; ) + e.pop(), n.push(t.vs), r++; + return r; +} +function Ur(n) { + return function(e, r) { + return e.barycenter < r.barycenter ? -1 : e.barycenter > r.barycenter ? 1 : n ? r.i - e.i : e.i - r.i; + }; +} +function Wn(n, e, r, t) { + var i = n.children(e), o = n.node(e), a = o ? o.borderLeft : void 0, u = o ? o.borderRight : void 0, d = {}; + a && (i = M(i, function(p) { + return p !== a && p !== u; + })); + var f = Dr(n, i); + s(f, function(p) { + if (n.children(p.v).length) { + var b = Wn(n, p.v, r, t); + d[p.v] = b, w(b, "barycenter") && jr(p, b); + } + }); + var c = qr(f, r); + Hr(c, d); + var h = zr(c, t); + if (a && (h.vs = _([a, h.vs, u]), n.predecessors(a).length)) { + var l = n.node(n.predecessors(a)[0]), v = n.node(n.predecessors(u)[0]); + w(h, "barycenter") || (h.barycenter = 0, h.weight = 0), h.barycenter = (h.barycenter * h.weight + l.order + v.order) / (h.weight + 2), h.weight += 2; + } + return h; +} +function Hr(n, e) { + s(n, function(r) { + r.vs = _( + r.vs.map(function(t) { + return e[t] ? e[t].vs : t; + }) + ); + }); +} +function jr(n, e) { + g(n.barycenter) ? (n.barycenter = e.barycenter, n.weight = e.weight) : (n.barycenter = (n.barycenter * n.weight + e.barycenter * e.weight) / (n.weight + e.weight), n.weight += e.weight); +} +function Jr(n) { + var e = Pn(n), r = bn(n, N(1, e + 1), "inEdges"), t = bn(n, N(e - 1, -1, -1), "outEdges"), i = Yr(n); + gn(n, i); + for (var o = Number.POSITIVE_INFINITY, a, u = 0, d = 0; d < 4; ++u, ++d) { + Kr(u % 2 ? r : t, u % 4 >= 2), i = D(n); + var f = Gr(n, i); + f < o && (d = 0, a = ke(i), o = f); + } + gn(n, a); +} +function bn(n, e, r) { + return m(e, function(t) { + return Br(n, t, r); + }); +} +function Kr(n, e) { + var r = new x(); + s(n, function(t) { + var i = t.graph().root, o = Wn(t, i, r, e); + s(o.vs, function(a, u) { + t.node(a).order = u; + }), Ar(t, r, o.vs); + }); +} +function gn(n, e) { + s(e, function(r) { + s(r, function(t, i) { + n.node(t).order = i; + }); + }); +} +function Zr(n) { + var e = nt(n); + s(n.graph().dummyChains, function(r) { + for (var t = n.node(r), i = t.edgeObj, o = Qr(n, e, i.v, i.w), a = o.path, u = o.lca, d = 0, f = a[d], c = !0; r !== i.w; ) { + if (t = n.node(r), c) { + for (; (f = a[d]) !== u && n.node(f).maxRank < t.rank; ) + d++; + f === u && (c = !1); + } + if (!c) { + for (; d < a.length - 1 && n.node(f = a[d + 1]).minRank <= t.rank; ) + d++; + f = a[d]; + } + n.setParent(r, f), r = n.successors(r)[0]; + } + }); +} +function Qr(n, e, r, t) { + var i = [], o = [], a = Math.min(e[r].low, e[t].low), u = Math.max(e[r].lim, e[t].lim), d, f; + d = r; + do + d = n.parent(d), i.push(d); + while (d && (e[d].low > a || u > e[d].lim)); + for (f = d, d = t; (d = n.parent(d)) !== f; ) + o.push(d); + return { path: i.concat(o.reverse()), lca: f }; +} +function nt(n) { + var e = {}, r = 0; + function t(i) { + var o = r; + s(n.children(i), t), e[i] = { low: o, lim: r++ }; + } + return s(n.children(), t), e; +} +function et(n, e) { + var r = {}; + function t(i, o) { + var a = 0, u = 0, d = i.length, f = $(o); + return s(o, function(c, h) { + var l = tt(n, c), v = l ? n.node(l).order : d; + (l || c === f) && (s(o.slice(u, h + 1), function(p) { + s(n.predecessors(p), function(b) { + var I = n.node(b), on = I.order; + (on < a || v < on) && !(I.dummy && n.node(p).dummy) && Xn(r, b, p); + }); + }), u = h + 1, a = v); + }), o; + } + return V(e, t), r; +} +function rt(n, e) { + var r = {}; + function t(o, a, u, d, f) { + var c; + s(N(a, u), function(h) { + c = o[h], n.node(c).dummy && s(n.predecessors(c), function(l) { + var v = n.node(l); + v.dummy && (v.order < d || v.order > f) && Xn(r, l, c); + }); + }); + } + function i(o, a) { + var u = -1, d, f = 0; + return s(a, function(c, h) { + if (n.node(c).dummy === "border") { + var l = n.predecessors(c); + l.length && (d = n.node(l[0]).order, t(a, f, h, u, d), f = h, u = d); + } + t(a, f, a.length, d, o.length); + }), a; + } + return V(e, i), r; +} +function tt(n, e) { + if (n.node(e).dummy) + return Z(n.predecessors(e), function(r) { + return n.node(r).dummy; + }); +} +function Xn(n, e, r) { + if (e > r) { + var t = e; + e = r, r = t; + } + var i = n[e]; + i || (n[e] = i = {}), i[r] = !0; +} +function it(n, e, r) { + if (e > r) { + var t = e; + e = r, r = t; + } + return w(n[e], r); +} +function at(n, e, r, t) { + var i = {}, o = {}, a = {}; + return s(e, function(u) { + s(u, function(d, f) { + i[d] = d, o[d] = d, a[d] = f; + }); + }), s(e, function(u) { + var d = -1; + s(u, function(f) { + var c = t(f); + if (c.length) { + c = O(c, function(b) { + return a[b]; + }); + for (var h = (c.length - 1) / 2, l = Math.floor(h), v = Math.ceil(h); l <= v; ++l) { + var p = c[l]; + o[f] === f && d < a[p] && !it(r, f, p) && (o[p] = f, o[f] = i[f] = i[p], d = a[p]); + } + } + }); + }), { root: i, align: o }; +} +function ot(n, e, r, t, i) { + var o = {}, a = ut(n, e, r, i), u = i ? "borderLeft" : "borderRight"; + function d(h, l) { + for (var v = a.nodes(), p = v.pop(), b = {}; p; ) + b[p] ? h(p) : (b[p] = !0, v.push(p), v = v.concat(l(p))), p = v.pop(); + } + function f(h) { + o[h] = a.inEdges(h).reduce(function(l, v) { + return Math.max(l, o[v.v] + a.edge(v)); + }, 0); + } + function c(h) { + var l = a.outEdges(h).reduce(function(p, b) { + return Math.min(p, o[b.w] - a.edge(b)); + }, Number.POSITIVE_INFINITY), v = n.node(h); + l !== Number.POSITIVE_INFINITY && v.borderType !== u && (o[h] = Math.max(o[h], l)); + } + return d(f, a.predecessors.bind(a)), d(c, a.successors.bind(a)), s(t, function(h) { + o[h] = o[r[h]]; + }), o; +} +function ut(n, e, r, t) { + var i = new x(), o = n.graph(), a = ht(o.nodesep, o.edgesep, t); + return s(e, function(u) { + var d; + s(u, function(f) { + var c = r[f]; + if (i.setNode(c), d) { + var h = r[d], l = i.edge(h, c); + i.setEdge(h, c, Math.max(a(n, f, d), l || 0)); + } + d = f; + }); + }), i; +} +function dt(n, e) { + return nn(y(e), function(r) { + var t = Number.NEGATIVE_INFINITY, i = Number.POSITIVE_INFINITY; + return Me(r, function(o, a) { + var u = lt(n, a) / 2; + t = Math.max(o + u, t), i = Math.min(o - u, i); + }), t - i; + }); +} +function ft(n, e) { + var r = y(e), t = R(r), i = E(r); + s(["u", "d"], function(o) { + s(["l", "r"], function(a) { + var u = o + a, d = n[u], f; + if (d !== e) { + var c = y(d); + f = a === "l" ? t - R(c) : i - E(c), f && (n[u] = Y(d, function(h) { + return h + f; + })); + } + }); + }); +} +function st(n, e) { + return Y(n.ul, function(r, t) { + if (e) + return n[e.toLowerCase()][t]; + var i = O(m(n, t)); + return (i[1] + i[2]) / 2; + }); +} +function ct(n) { + var e = D(n), r = H(et(n, e), rt(n, e)), t = {}, i; + s(["u", "d"], function(a) { + i = a === "u" ? e : y(e).reverse(), s(["l", "r"], function(u) { + u === "r" && (i = m(i, function(h) { + return y(h).reverse(); + })); + var d = (a === "u" ? n.predecessors : n.successors).bind(n), f = at(n, i, r, d), c = ot(n, i, f.root, f.align, u === "r"); + u === "r" && (c = Y(c, function(h) { + return -h; + })), t[a + u] = c; + }); + }); + var o = dt(n, t); + return ft(t, o), st(t, n.graph().align); +} +function ht(n, e, r) { + return function(t, i, o) { + var a = t.node(i), u = t.node(o), d = 0, f; + if (d += a.width / 2, w(a, "labelpos")) + switch (a.labelpos.toLowerCase()) { + case "l": + f = -a.width / 2; + break; + case "r": + f = a.width / 2; + break; + } + if (f && (d += r ? f : -f), f = 0, d += (a.dummy ? e : n) / 2, d += (u.dummy ? e : n) / 2, d += u.width / 2, w(u, "labelpos")) + switch (u.labelpos.toLowerCase()) { + case "l": + f = u.width / 2; + break; + case "r": + f = -u.width / 2; + break; + } + return f && (d += r ? f : -f), f = 0, d; + }; +} +function lt(n, e) { + return n.node(e).width; +} +function vt(n) { + n = On(n), pt(n), Oe(ct(n), function(e, r) { + n.node(r).x = e; + }); +} +function pt(n) { + var e = D(n), r = n.graph().ranksep, t = 0; + s(e, function(i) { + var o = E( + m(i, function(a) { + return n.node(a).height; + }) + ); + s(i, function(a) { + n.node(a).y = t + o / 2; + }), t += o + r; + }); +} +function Yt(n, e) { + var r = e && e.debugTiming ? sr : cr; + r("layout", function() { + var t = r(" buildLayoutGraph", function() { + return _t(n); + }); + r(" runLayout", function() { + wt(t, r); + }), r(" updateInputGraph", function() { + mt(n, t); + }); + }); +} +function wt(n, e) { + e(" makeSpaceForEdgeLabels", function() { + Ct(n); + }), e(" removeSelfEdges", function() { + At(n); + }), e(" acyclic", function() { + tr(n); + }), e(" nestingGraph.run", function() { + Or(n); + }), e(" rank", function() { + Rr(On(n)); + }), e(" injectEdgeLabelProxies", function() { + It(n); + }), e(" removeEmptyRanks", function() { + dr(n); + }), e(" nestingGraph.cleanup", function() { + Fr(n); + }), e(" normalizeRanks", function() { + ur(n); + }), e(" assignRankMinMax", function() { + Rt(n); + }), e(" removeEdgeLabelProxies", function() { + Tt(n); + }), e(" normalize.run", function() { + mr(n); + }), e(" parentDummyChains", function() { + Zr(n); + }), e(" addBorderSegments", function() { + hr(n); + }), e(" order", function() { + Jr(n); + }), e(" insertSelfEdges", function() { + Bt(n); + }), e(" adjustCoordinateSystem", function() { + lr(n); + }), e(" position", function() { + vt(n); + }), e(" positionSelfEdges", function() { + $t(n); + }), e(" removeBorderNodes", function() { + Ft(n); + }), e(" normalize.undo", function() { + gr(n); + }), e(" fixupEdgeLabelCoords", function() { + Pt(n); + }), e(" undoCoordinateSystem", function() { + vr(n); + }), e(" translateGraph", function() { + Mt(n); + }), e(" assignNodeIntersects", function() { + Ot(n); + }), e(" reversePoints", function() { + St(n); + }), e(" acyclic.undo", function() { + ar(n); + }); +} +function mt(n, e) { + s(n.nodes(), function(r) { + var t = n.node(r), i = e.node(r); + t && (t.x = i.x, t.y = i.y, e.children(r).length && (t.width = i.width, t.height = i.height)); + }), s(n.edges(), function(r) { + var t = n.edge(r), i = e.edge(r); + t.points = i.points, w(i, "x") && (t.x = i.x, t.y = i.y); + }), n.graph().width = e.graph().width, n.graph().height = e.graph().height; +} +var bt = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"], gt = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }, xt = ["acyclicer", "ranker", "rankdir", "align"], Et = ["width", "height"], kt = { width: 0, height: 0 }, yt = ["minlen", "weight", "width", "height", "labeloffset"], Nt = { + minlen: 1, + weight: 1, + width: 0, + height: 0, + labeloffset: 10, + labelpos: "r" +}, Lt = ["labelpos"]; +function _t(n) { + var e = new x({ multigraph: !0, compound: !0 }), r = U(n.graph()); + return e.setGraph( + H({}, gt, z(r, bt), G(r, xt)) + ), s(n.nodes(), function(t) { + var i = U(n.node(t)); + e.setNode(t, _e(z(i, Et), kt)), e.setParent(t, n.parent(t)); + }), s(n.edges(), function(t) { + var i = U(n.edge(t)); + e.setEdge( + t, + H({}, Nt, z(i, yt), G(i, Lt)) + ); + }), e; +} +function Ct(n) { + var e = n.graph(); + e.ranksep /= 2, s(n.edges(), function(r) { + var t = n.edge(r); + t.minlen *= 2, t.labelpos.toLowerCase() !== "c" && (e.rankdir === "TB" || e.rankdir === "BT" ? t.width += t.labeloffset : t.height += t.labeloffset); + }); +} +function It(n) { + s(n.edges(), function(e) { + var r = n.edge(e); + if (r.width && r.height) { + var t = n.node(e.v), i = n.node(e.w), o = { rank: (i.rank - t.rank) / 2 + t.rank, e }; + C(n, "edge-proxy", o, "_ep"); + } + }); +} +function Rt(n) { + var e = 0; + s(n.nodes(), function(r) { + var t = n.node(r); + t.borderTop && (t.minRank = n.node(t.borderTop).rank, t.maxRank = n.node(t.borderBottom).rank, e = E(e, t.maxRank)); + }), n.graph().maxRank = e; +} +function Tt(n) { + s(n.nodes(), function(e) { + var r = n.node(e); + r.dummy === "edge-proxy" && (n.edge(r.e).labelRank = r.rank, n.removeNode(e)); + }); +} +function Mt(n) { + var e = Number.POSITIVE_INFINITY, r = 0, t = Number.POSITIVE_INFINITY, i = 0, o = n.graph(), a = o.marginx || 0, u = o.marginy || 0; + function d(f) { + var c = f.x, h = f.y, l = f.width, v = f.height; + e = Math.min(e, c - l / 2), r = Math.max(r, c + l / 2), t = Math.min(t, h - v / 2), i = Math.max(i, h + v / 2); + } + s(n.nodes(), function(f) { + d(n.node(f)); + }), s(n.edges(), function(f) { + var c = n.edge(f); + w(c, "x") && d(c); + }), e -= a, t -= u, s(n.nodes(), function(f) { + var c = n.node(f); + c.x -= e, c.y -= t; + }), s(n.edges(), function(f) { + var c = n.edge(f); + s(c.points, function(h) { + h.x -= e, h.y -= t; + }), w(c, "x") && (c.x -= e), w(c, "y") && (c.y -= t); + }), o.width = r - e + a, o.height = i - t + u; +} +function Ot(n) { + s(n.edges(), function(e) { + var r = n.edge(e), t = n.node(e.v), i = n.node(e.w), o, a; + r.points ? (o = r.points[0], a = r.points[r.points.length - 1]) : (r.points = [], o = i, a = t), r.points.unshift(cn(t, o)), r.points.push(cn(i, a)); + }); +} +function Pt(n) { + s(n.edges(), function(e) { + var r = n.edge(e); + if (w(r, "x")) + switch ((r.labelpos === "l" || r.labelpos === "r") && (r.width -= r.labeloffset), r.labelpos) { + case "l": + r.x -= r.width / 2 + r.labeloffset; + break; + case "r": + r.x += r.width / 2 + r.labeloffset; + break; + } + }); +} +function St(n) { + s(n.edges(), function(e) { + var r = n.edge(e); + r.reversed && r.points.reverse(); + }); +} +function Ft(n) { + s(n.nodes(), function(e) { + if (n.children(e).length) { + var r = n.node(e), t = n.node(r.borderTop), i = n.node(r.borderBottom), o = n.node($(r.borderLeft)), a = n.node($(r.borderRight)); + r.width = Math.abs(a.x - o.x), r.height = Math.abs(i.y - t.y), r.x = o.x + r.width / 2, r.y = t.y + r.height / 2; + } + }), s(n.nodes(), function(e) { + n.node(e).dummy === "border" && n.removeNode(e); + }); +} +function At(n) { + s(n.edges(), function(e) { + if (e.v === e.w) { + var r = n.node(e.v); + r.selfEdges || (r.selfEdges = []), r.selfEdges.push({ e, label: n.edge(e) }), n.removeEdge(e); + } + }); +} +function Bt(n) { + var e = D(n); + s(e, function(r) { + var t = 0; + s(r, function(i, o) { + var a = n.node(i); + a.order = o + t, s(a.selfEdges, function(u) { + C( + n, + "selfedge", + { + width: u.label.width, + height: u.label.height, + rank: a.rank, + order: o + ++t, + e: u.e, + label: u.label + }, + "_se" + ); + }), delete a.selfEdges; + }); + }); +} +function $t(n) { + s(n.nodes(), function(e) { + var r = n.node(e); + if (r.dummy === "selfedge") { + var t = n.node(r.e.v), i = t.x + t.width / 2, o = t.y, a = r.x - i, u = t.height / 2; + n.setEdge(r.e, r.label), n.removeNode(e), r.label.points = [ + { x: i + 2 * a / 3, y: o - u }, + { x: i + 5 * a / 6, y: o - u }, + { x: i + a, y: o }, + { x: i + 5 * a / 6, y: o + u }, + { x: i + 2 * a / 3, y: o + u } + ], r.label.x = r.x, r.label.y = r.y; + } + }); +} +function z(n, e) { + return Y(G(n, e), Number); +} +function U(n) { + var e = {}; + return s(n, function(r, t) { + e[t.toLowerCase()] = r; + }), e; +} +export { + _e as d, + Yt as l, + m, + G as p, + N as r, + en as u +}; diff --git a/client/packages/lowcoder/public/package/691304fa.js b/client/packages/lowcoder/public/package/691304fa.js new file mode 100644 index 000000000..4e9991404 --- /dev/null +++ b/client/packages/lowcoder/public/package/691304fa.js @@ -0,0 +1,1102 @@ +var v = (e, t, r) => new Promise((i, l) => { + var a = (c) => { + try { + n(r.next(c)); + } catch (o) { + l(o); + } + }, s = (c) => { + try { + n(r.throw(c)); + } catch (o) { + l(o); + } + }, n = (c) => c.done ? i(c.value) : Promise.resolve(c.value).then(a, s); + n((r = r.apply(e, t)).next()); +}); +import { r as N, e as b, f as J, b7 as V, j as C, l as g, C as U, I as ct } from "./08856db2.js"; +import { a as it } from "./f69b998c.js"; +import { l as ht } from "./8e8be6e8.js"; +const ot = (e, t, r, i) => { + t.forEach((l) => { + mt[l](e, r, i); + }); +}, yt = (e, t, r) => { + g.trace("Making markers for ", r), e.append("defs").append("marker").attr("id", r + "_" + t + "-extensionStart").attr("class", "marker extension " + t).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z"), e.append("defs").append("marker").attr("id", r + "_" + t + "-extensionEnd").attr("class", "marker extension " + t).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z"); +}, pt = (e, t, r) => { + e.append("defs").append("marker").attr("id", r + "_" + t + "-compositionStart").attr("class", "marker composition " + t).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", r + "_" + t + "-compositionEnd").attr("class", "marker composition " + t).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); +}, ft = (e, t, r) => { + e.append("defs").append("marker").attr("id", r + "_" + t + "-aggregationStart").attr("class", "marker aggregation " + t).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", r + "_" + t + "-aggregationEnd").attr("class", "marker aggregation " + t).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z"); +}, xt = (e, t, r) => { + e.append("defs").append("marker").attr("id", r + "_" + t + "-dependencyStart").attr("class", "marker dependency " + t).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z"), e.append("defs").append("marker").attr("id", r + "_" + t + "-dependencyEnd").attr("class", "marker dependency " + t).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z"); +}, dt = (e, t, r) => { + e.append("defs").append("marker").attr("id", r + "_" + t + "-lollipopStart").attr("class", "marker lollipop " + t).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6), e.append("defs").append("marker").attr("id", r + "_" + t + "-lollipopEnd").attr("class", "marker lollipop " + t).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6); +}, gt = (e, t, r) => { + e.append("marker").attr("id", r + "_" + t + "-pointEnd").attr("class", "marker " + t).attr("viewBox", "0 0 10 10").attr("refX", 6).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"), e.append("marker").attr("id", r + "_" + t + "-pointStart").attr("class", "marker " + t).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 12).attr("markerHeight", 12).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); +}, ut = (e, t, r) => { + e.append("marker").attr("id", r + "_" + t + "-circleEnd").attr("class", "marker " + t).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"), e.append("marker").attr("id", r + "_" + t + "-circleStart").attr("class", "marker " + t).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0"); +}, bt = (e, t, r) => { + e.append("marker").attr("id", r + "_" + t + "-crossEnd").attr("class", "marker cross " + t).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"), e.append("marker").attr("id", r + "_" + t + "-crossStart").attr("class", "marker cross " + t).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0"); +}, wt = (e, t, r) => { + e.append("defs").append("marker").attr("id", r + "_" + t + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "strokeWidth").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); +}, mt = { + extension: yt, + composition: pt, + aggregation: ft, + dependency: xt, + lollipop: dt, + point: gt, + circle: ut, + cross: bt, + barb: wt +}, yr = ot; +function kt(e, t) { + t && e.attr("style", t); +} +function vt(e) { + const t = C(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject")), r = t.append("xhtml:div"), i = e.label, l = e.isNode ? "nodeLabel" : "edgeLabel"; + return r.html( + '" + i + "" + ), kt(r, e.labelStyle), r.style("display", "inline-block"), r.style("white-space", "nowrap"), r.attr("xmlns", "http://www.w3.org/1999/xhtml"), t.node(); +} +const Lt = (e, t, r, i) => { + let l = e || ""; + if (typeof l == "object" && (l = l[0]), N(b().flowchart.htmlLabels)) { + l = l.replace(/\\n|\n/g, "
        "), g.debug("vertexText" + l); + const a = { + isNode: i, + label: V(l).replace( + /fa[blrs]?:fa-[\w-]+/g, + // cspell: disable-line + (n) => `` + ), + labelStyle: t.replace("fill:", "color:") + }; + return vt(a); + } else { + const a = document.createElementNS("http://www.w3.org/2000/svg", "text"); + a.setAttribute("style", t.replace("color:", "fill:")); + let s = []; + typeof l == "string" ? s = l.split(/\\n|\n|/gi) : Array.isArray(l) ? s = l : s = []; + for (const n of s) { + const c = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + c.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), c.setAttribute("dy", "1em"), c.setAttribute("x", "0"), r ? c.setAttribute("class", "title-row") : c.setAttribute("class", "row"), c.textContent = n.trim(), a.appendChild(c); + } + return a; + } +}, H = Lt, T = (e, t, r, i) => v(void 0, null, function* () { + let l; + const a = t.useHtmlLabels || N(b().flowchart.htmlLabels); + r ? l = r : l = "node default"; + const s = e.insert("g").attr("class", l).attr("id", t.domId || t.id), n = s.insert("g").attr("class", "label").attr("style", t.labelStyle); + let c; + t.labelText === void 0 ? c = "" : c = typeof t.labelText == "string" ? t.labelText : t.labelText[0]; + const o = n.node(); + let h; + t.labelType === "markdown" ? h = it(n, J(V(c), b()), { + useHtmlLabels: a, + width: t.width || b().flowchart.wrappingWidth, + classes: "markdown-node-label" + }) : h = o.appendChild( + H( + J(V(c), b()), + t.labelStyle, + !1, + i + ) + ); + let y = h.getBBox(); + const f = t.padding / 2; + if (N(b().flowchart.htmlLabels)) { + const p = h.children[0], d = C(h), k = p.getElementsByTagName("img"); + if (k) { + const x = c.replace(/]*>/g, "").trim() === ""; + yield Promise.all( + [...k].map( + (u) => new Promise((M) => { + function E() { + if (u.style.display = "flex", u.style.flexDirection = "column", x) { + const $ = b().fontSize ? b().fontSize : window.getComputedStyle(document.body).fontSize, Y = 5, A = parseInt($, 10) * Y + "px"; + u.style.minWidth = A, u.style.maxWidth = A; + } else + u.style.width = "100%"; + M(u); + } + setTimeout(() => { + u.complete && E(); + }), u.addEventListener("error", E), u.addEventListener("load", E); + }) + ) + ); + } + y = p.getBoundingClientRect(), d.attr("width", y.width), d.attr("height", y.height); + } + return a ? n.attr("transform", "translate(" + -y.width / 2 + ", " + -y.height / 2 + ")") : n.attr("transform", "translate(0, " + -y.height / 2 + ")"), t.centerLabel && n.attr("transform", "translate(" + -y.width / 2 + ", " + -y.height / 2 + ")"), n.insert("rect", ":first-child"), { shapeSvg: s, bbox: y, halfPadding: f, label: n }; +}), m = (e, t) => { + const r = t.node().getBBox(); + e.width = r.width, e.height = r.height; +}; +function O(e, t, r, i) { + return e.insert("polygon", ":first-child").attr( + "points", + i.map(function(l) { + return l.x + "," + l.y; + }).join(" ") + ).attr("class", "label-container").attr("transform", "translate(" + -t / 2 + "," + r / 2 + ")"); +} +function St(e, t) { + return e.intersect(t); +} +function nt(e, t, r, i) { + var l = e.x, a = e.y, s = l - i.x, n = a - i.y, c = Math.sqrt(t * t * n * n + r * r * s * s), o = Math.abs(t * r * s / c); + i.x < l && (o = -o); + var h = Math.abs(t * r * n / c); + return i.y < a && (h = -h), { x: l + o, y: a + h }; +} +function Mt(e, t, r) { + return nt(e, t, t, r); +} +function Tt(e, t, r, i) { + var l, a, s, n, c, o, h, y, f, p, d, k, x, u, M; + if (l = t.y - e.y, s = e.x - t.x, c = t.x * e.y - e.x * t.y, f = l * r.x + s * r.y + c, p = l * i.x + s * i.y + c, !(f !== 0 && p !== 0 && K(f, p)) && (a = i.y - r.y, n = r.x - i.x, o = i.x * r.y - r.x * i.y, h = a * e.x + n * e.y + o, y = a * t.x + n * t.y + o, !(h !== 0 && y !== 0 && K(h, y)) && (d = l * n - a * s, d !== 0))) + return k = Math.abs(d / 2), x = s * o - n * c, u = x < 0 ? (x - k) / d : (x + k) / d, x = a * c - l * o, M = x < 0 ? (x - k) / d : (x + k) / d, { x: u, y: M }; +} +function K(e, t) { + return e * t > 0; +} +function Bt(e, t, r) { + var i = e.x, l = e.y, a = [], s = Number.POSITIVE_INFINITY, n = Number.POSITIVE_INFINITY; + typeof t.forEach == "function" ? t.forEach(function(d) { + s = Math.min(s, d.x), n = Math.min(n, d.y); + }) : (s = Math.min(s, t.x), n = Math.min(n, t.y)); + for (var c = i - e.width / 2 - s, o = l - e.height / 2 - n, h = 0; h < t.length; h++) { + var y = t[h], f = t[h < t.length - 1 ? h + 1 : 0], p = Tt( + e, + r, + { x: c + y.x, y: o + y.y }, + { x: c + f.x, y: o + f.y } + ); + p && a.push(p); + } + return a.length ? (a.length > 1 && a.sort(function(d, k) { + var x = d.x - r.x, u = d.y - r.y, M = Math.sqrt(x * x + u * u), E = k.x - r.x, $ = k.y - r.y, Y = Math.sqrt(E * E + $ * $); + return M < Y ? -1 : M === Y ? 0 : 1; + }), a[0]) : e; +} +const Et = (e, t) => { + var r = e.x, i = e.y, l = t.x - r, a = t.y - i, s = e.width / 2, n = e.height / 2, c, o; + return Math.abs(a) * s > Math.abs(l) * n ? (a < 0 && (n = -n), c = a === 0 ? 0 : n * l / a, o = n) : (l < 0 && (s = -s), c = s, o = l === 0 ? 0 : s * a / l), { x: r + c, y: i + o }; +}, Ct = Et, w = { + node: St, + circle: Mt, + ellipse: nt, + polygon: Bt, + rect: Ct +}, $t = (e, t) => v(void 0, null, function* () { + t.useHtmlLabels || b().flowchart.htmlLabels || (t.centerLabel = !0); + const { shapeSvg: i, bbox: l, halfPadding: a } = yield T( + e, + t, + "node " + t.classes, + !0 + ); + g.info("Classes = ", t.classes); + const s = i.insert("rect", ":first-child"); + return s.attr("rx", t.rx).attr("ry", t.ry).attr("x", -l.width / 2 - a).attr("y", -l.height / 2 - a).attr("width", l.width + t.padding).attr("height", l.height + t.padding), m(t, s), t.intersect = function(n) { + return w.rect(t, n); + }, i; +}), _t = $t, Rt = (e) => { + const t = /* @__PURE__ */ new Set(); + for (const r of e) + switch (r) { + case "x": + t.add("right"), t.add("left"); + break; + case "y": + t.add("up"), t.add("down"); + break; + default: + t.add(r); + break; + } + return t; +}, It = (e, t, r) => { + const i = Rt(e), l = 2, a = t.height + 2 * r.padding, s = a / l, n = t.width + 2 * s + r.padding, c = r.padding / 2; + return i.has("right") && i.has("left") && i.has("up") && i.has("down") ? [ + // Bottom + { x: 0, y: 0 }, + { x: s, y: 0 }, + { x: n / 2, y: 2 * c }, + { x: n - s, y: 0 }, + { x: n, y: 0 }, + // Right + { x: n, y: -a / 3 }, + { x: n + 2 * c, y: -a / 2 }, + { x: n, y: -2 * a / 3 }, + { x: n, y: -a }, + // Top + { x: n - s, y: -a }, + { x: n / 2, y: -a - 2 * c }, + { x: s, y: -a }, + // Left + { x: 0, y: -a }, + { x: 0, y: -2 * a / 3 }, + { x: -2 * c, y: -a / 2 }, + { x: 0, y: -a / 3 } + ] : i.has("right") && i.has("left") && i.has("up") ? [ + { x: s, y: 0 }, + { x: n - s, y: 0 }, + { x: n, y: -a / 2 }, + { x: n - s, y: -a }, + { x: s, y: -a }, + { x: 0, y: -a / 2 } + ] : i.has("right") && i.has("left") && i.has("down") ? [ + { x: 0, y: 0 }, + { x: s, y: -a }, + { x: n - s, y: -a }, + { x: n, y: 0 } + ] : i.has("right") && i.has("up") && i.has("down") ? [ + { x: 0, y: 0 }, + { x: n, y: -s }, + { x: n, y: -a + s }, + { x: 0, y: -a } + ] : i.has("left") && i.has("up") && i.has("down") ? [ + { x: n, y: 0 }, + { x: 0, y: -s }, + { x: 0, y: -a + s }, + { x: n, y: -a } + ] : i.has("right") && i.has("left") ? [ + { x: s, y: 0 }, + { x: s, y: -c }, + { x: n - s, y: -c }, + { x: n - s, y: 0 }, + { x: n, y: -a / 2 }, + { x: n - s, y: -a }, + { x: n - s, y: -a + c }, + { x: s, y: -a + c }, + { x: s, y: -a }, + { x: 0, y: -a / 2 } + ] : i.has("up") && i.has("down") ? [ + // Bottom center + { x: n / 2, y: 0 }, + // Left pont of bottom arrow + { x: 0, y: -c }, + { x: s, y: -c }, + // Left top over vertical section + { x: s, y: -a + c }, + { x: 0, y: -a + c }, + // Top of arrow + { x: n / 2, y: -a }, + { x: n, y: -a + c }, + // Top of right vertical bar + { x: n - s, y: -a + c }, + { x: n - s, y: -c }, + { x: n, y: -c } + ] : i.has("right") && i.has("up") ? [ + { x: 0, y: 0 }, + { x: n, y: -s }, + { x: 0, y: -a } + ] : i.has("right") && i.has("down") ? [ + { x: 0, y: 0 }, + { x: n, y: 0 }, + { x: 0, y: -a } + ] : i.has("left") && i.has("up") ? [ + { x: n, y: 0 }, + { x: 0, y: -s }, + { x: n, y: -a } + ] : i.has("left") && i.has("down") ? [ + { x: n, y: 0 }, + { x: 0, y: 0 }, + { x: n, y: -a } + ] : i.has("right") ? [ + { x: s, y: -c }, + { x: s, y: -c }, + { x: n - s, y: -c }, + { x: n - s, y: 0 }, + { x: n, y: -a / 2 }, + { x: n - s, y: -a }, + { x: n - s, y: -a + c }, + // top left corner of arrow + { x: s, y: -a + c }, + { x: s, y: -a + c } + ] : i.has("left") ? [ + { x: s, y: 0 }, + { x: s, y: -c }, + // Two points, the right corners + { x: n - s, y: -c }, + { x: n - s, y: -a + c }, + { x: s, y: -a + c }, + { x: s, y: -a }, + { x: 0, y: -a / 2 } + ] : i.has("up") ? [ + // Bottom center + { x: s, y: -c }, + // Left top over vertical section + { x: s, y: -a + c }, + { x: 0, y: -a + c }, + // Top of arrow + { x: n / 2, y: -a }, + { x: n, y: -a + c }, + // Top of right vertical bar + { x: n - s, y: -a + c }, + { x: n - s, y: -c } + ] : i.has("down") ? [ + // Bottom center + { x: n / 2, y: 0 }, + // Left pont of bottom arrow + { x: 0, y: -c }, + { x: s, y: -c }, + // Left top over vertical section + { x: s, y: -a + c }, + { x: n - s, y: -a + c }, + { x: n - s, y: -c }, + { x: n, y: -c } + ] : [{ x: 0, y: 0 }]; +}, P = (e) => e ? " " + e : "", I = (e, t) => `${t || "node default"}${P(e.classes)} ${P( + e.class +)}`, tt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = l + a, n = [ + { x: s / 2, y: 0 }, + { x: s, y: -s / 2 }, + { x: s / 2, y: -s }, + { x: 0, y: -s / 2 } + ]; + g.info("Question main (Circle)"); + const c = O(r, s, s, n); + return c.attr("style", t.style), m(t, c), t.intersect = function(o) { + return g.warn("Intersect called"), w.polygon(t, n, o); + }, r; +}), Ht = (e, t) => { + const r = e.insert("g").attr("class", "node default").attr("id", t.domId || t.id), i = 28, l = [ + { x: 0, y: i / 2 }, + { x: i / 2, y: 0 }, + { x: 0, y: -i / 2 }, + { x: -i / 2, y: 0 } + ]; + return r.insert("polygon", ":first-child").attr( + "points", + l.map(function(s) { + return s.x + "," + s.y; + }).join(" ") + ).attr("class", "state-start").attr("r", 7).attr("width", 28).attr("height", 28), t.width = 28, t.height = 28, t.intersect = function(s) { + return w.circle(t, 14, s); + }, r; +}, Nt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = 4, a = i.height + t.padding, s = a / l, n = i.width + 2 * s + t.padding, c = [ + { x: s, y: 0 }, + { x: n - s, y: 0 }, + { x: n, y: -a / 2 }, + { x: n - s, y: -a }, + { x: s, y: -a }, + { x: 0, y: -a / 2 } + ], o = O(r, n, a, c); + return o.attr("style", t.style), m(t, o), t.intersect = function(h) { + return w.polygon(t, c, h); + }, r; +}), Ot = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T(e, t, void 0, !0), l = 2, a = i.height + 2 * t.padding, s = a / l, n = i.width + 2 * s + t.padding, c = It(t.directions, i, t), o = O(r, n, a, c); + return o.attr("style", t.style), m(t, o), t.intersect = function(h) { + return w.polygon(t, c, h); + }, r; +}), Wt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: -a / 2, y: 0 }, + { x: l, y: 0 }, + { x: l, y: -a }, + { x: -a / 2, y: -a }, + { x: 0, y: -a / 2 } + ]; + return O(r, l, a, s).attr("style", t.style), t.width = l + a, t.height = a, t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), Xt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T(e, t, I(t), !0), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: -2 * a / 6, y: 0 }, + { x: l - a / 6, y: 0 }, + { x: l + 2 * a / 6, y: -a }, + { x: a / 6, y: -a } + ], n = O(r, l, a, s); + return n.attr("style", t.style), m(t, n), t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), Yt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: 2 * a / 6, y: 0 }, + { x: l + a / 6, y: 0 }, + { x: l - 2 * a / 6, y: -a }, + { x: -a / 6, y: -a } + ], n = O(r, l, a, s); + return n.attr("style", t.style), m(t, n), t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), Dt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: -2 * a / 6, y: 0 }, + { x: l + 2 * a / 6, y: 0 }, + { x: l - a / 6, y: -a }, + { x: a / 6, y: -a } + ], n = O(r, l, a, s); + return n.attr("style", t.style), m(t, n), t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), At = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: a / 6, y: 0 }, + { x: l - a / 6, y: 0 }, + { x: l + 2 * a / 6, y: -a }, + { x: -2 * a / 6, y: -a } + ], n = O(r, l, a, s); + return n.attr("style", t.style), m(t, n), t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), jt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: 0, y: 0 }, + { x: l + a / 2, y: 0 }, + { x: l, y: -a / 2 }, + { x: l + a / 2, y: -a }, + { x: 0, y: -a } + ], n = O(r, l, a, s); + return n.attr("style", t.style), m(t, n), t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), Ut = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = l / 2, s = a / (2.5 + l / 50), n = i.height + s + t.padding, c = "M 0," + s + " a " + a + "," + s + " 0,0,0 " + l + " 0 a " + a + "," + s + " 0,0,0 " + -l + " 0 l 0," + n + " a " + a + "," + s + " 0,0,0 " + l + " 0 l 0," + -n, o = r.attr("label-offset-y", s).insert("path", ":first-child").attr("style", t.style).attr("d", c).attr("transform", "translate(" + -l / 2 + "," + -(n / 2 + s) + ")"); + return m(t, o), t.intersect = function(h) { + const y = w.rect(t, h), f = y.x - t.x; + if (a != 0 && (Math.abs(f) < t.width / 2 || Math.abs(f) == t.width / 2 && Math.abs(y.y - t.y) > t.height / 2 - s)) { + let p = s * s * (1 - f * f / (a * a)); + p != 0 && (p = Math.sqrt(p)), p = s - p, h.y - t.y > 0 && (p = -p), y.y += p; + } + return y; + }, r; +}), zt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i, halfPadding: l } = yield T( + e, + t, + "node " + t.classes + " " + t.class, + !0 + ), a = r.insert("rect", ":first-child"), s = t.positioned ? t.width : i.width + t.padding, n = t.positioned ? t.height : i.height + t.padding, c = t.positioned ? -s / 2 : -i.width / 2 - l, o = t.positioned ? -n / 2 : -i.height / 2 - l; + if (a.attr("class", "basic label-container").attr("style", t.style).attr("rx", t.rx).attr("ry", t.ry).attr("x", c).attr("y", o).attr("width", s).attr("height", n), t.props) { + const h = new Set(Object.keys(t.props)); + t.props.borders && (q(a, t.props.borders, s, n), h.delete("borders")), h.forEach((y) => { + g.warn(`Unknown node property ${y}`); + }); + } + return m(t, a), t.intersect = function(h) { + return w.rect(t, h); + }, r; +}), Zt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i, halfPadding: l } = yield T( + e, + t, + "node " + t.classes, + !0 + ), a = r.insert("rect", ":first-child"), s = t.positioned ? t.width : i.width + t.padding, n = t.positioned ? t.height : i.height + t.padding, c = t.positioned ? -s / 2 : -i.width / 2 - l, o = t.positioned ? -n / 2 : -i.height / 2 - l; + if (a.attr("class", "basic cluster composite label-container").attr("style", t.style).attr("rx", t.rx).attr("ry", t.ry).attr("x", c).attr("y", o).attr("width", s).attr("height", n), t.props) { + const h = new Set(Object.keys(t.props)); + t.props.borders && (q(a, t.props.borders, s, n), h.delete("borders")), h.forEach((y) => { + g.warn(`Unknown node property ${y}`); + }); + } + return m(t, a), t.intersect = function(h) { + return w.rect(t, h); + }, r; +}), Gt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r } = yield T(e, t, "label", !0); + g.trace("Classes = ", t.class); + const i = r.insert("rect", ":first-child"), l = 0, a = 0; + if (i.attr("width", l).attr("height", a), r.attr("class", "label edgeLabel"), t.props) { + const s = new Set(Object.keys(t.props)); + t.props.borders && (q(i, t.props.borders, l, a), s.delete("borders")), s.forEach((n) => { + g.warn(`Unknown node property ${n}`); + }); + } + return m(t, i), t.intersect = function(s) { + return w.rect(t, s); + }, r; +}); +function q(e, t, r, i) { + const l = [], a = (n) => { + l.push(n, 0); + }, s = (n) => { + l.push(0, n); + }; + t.includes("t") ? (g.debug("add top border"), a(r)) : s(r), t.includes("r") ? (g.debug("add right border"), a(i)) : s(i), t.includes("b") ? (g.debug("add bottom border"), a(r)) : s(r), t.includes("l") ? (g.debug("add left border"), a(i)) : s(i), e.attr("stroke-dasharray", l.join(" ")); +} +const Ft = (e, t) => { + let r; + t.classes ? r = "node " + t.classes : r = "node default"; + const i = e.insert("g").attr("class", r).attr("id", t.domId || t.id), l = i.insert("rect", ":first-child"), a = i.insert("line"), s = i.insert("g").attr("class", "label"), n = t.labelText.flat ? t.labelText.flat() : t.labelText; + let c = ""; + typeof n == "object" ? c = n[0] : c = n, g.info("Label text abc79", c, n, typeof n == "object"); + const o = s.node().appendChild(H(c, t.labelStyle, !0, !0)); + let h = { width: 0, height: 0 }; + if (N(b().flowchart.htmlLabels)) { + const k = o.children[0], x = C(o); + h = k.getBoundingClientRect(), x.attr("width", h.width), x.attr("height", h.height); + } + g.info("Text 2", n); + const y = n.slice(1, n.length); + let f = o.getBBox(); + const p = s.node().appendChild( + H(y.join ? y.join("
        ") : y, t.labelStyle, !0, !0) + ); + if (N(b().flowchart.htmlLabels)) { + const k = p.children[0], x = C(p); + h = k.getBoundingClientRect(), x.attr("width", h.width), x.attr("height", h.height); + } + const d = t.padding / 2; + return C(p).attr( + "transform", + "translate( " + // (titleBox.width - bbox.width) / 2 + + (h.width > f.width ? 0 : (f.width - h.width) / 2) + ", " + (f.height + d + 5) + ")" + ), C(o).attr( + "transform", + "translate( " + // (titleBox.width - bbox.width) / 2 + + (h.width < f.width ? 0 : -(f.width - h.width) / 2) + ", 0)" + ), h = s.node().getBBox(), s.attr( + "transform", + "translate(" + -h.width / 2 + ", " + (-h.height / 2 - d + 3) + ")" + ), l.attr("class", "outer title-state").attr("x", -h.width / 2 - d).attr("y", -h.height / 2 - d).attr("width", h.width + t.padding).attr("height", h.height + t.padding), a.attr("class", "divider").attr("x1", -h.width / 2 - d).attr("x2", h.width / 2 + d).attr("y1", -h.height / 2 - d + f.height + d).attr("y2", -h.height / 2 - d + f.height + d), m(t, l), t.intersect = function(k) { + return w.rect(t, k); + }, i; +}, Qt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.height + t.padding, a = i.width + l / 4 + t.padding, s = r.insert("rect", ":first-child").attr("style", t.style).attr("rx", l / 2).attr("ry", l / 2).attr("x", -a / 2).attr("y", -l / 2).attr("width", a).attr("height", l); + return m(t, s), t.intersect = function(n) { + return w.rect(t, n); + }, r; +}), Vt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i, halfPadding: l } = yield T( + e, + t, + I(t, void 0), + !0 + ), a = r.insert("circle", ":first-child"); + return a.attr("style", t.style).attr("rx", t.rx).attr("ry", t.ry).attr("r", i.width / 2 + l).attr("width", i.width + t.padding).attr("height", i.height + t.padding), g.info("Circle main"), m(t, a), t.intersect = function(s) { + return g.info("Circle intersect", t, i.width / 2 + l, s), w.circle(t, i.width / 2 + l, s); + }, r; +}), qt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i, halfPadding: l } = yield T( + e, + t, + I(t, void 0), + !0 + ), a = 5, s = r.insert("g", ":first-child"), n = s.insert("circle"), c = s.insert("circle"); + return s.attr("class", t.class), n.attr("style", t.style).attr("rx", t.rx).attr("ry", t.ry).attr("r", i.width / 2 + l + a).attr("width", i.width + t.padding + a * 2).attr("height", i.height + t.padding + a * 2), c.attr("style", t.style).attr("rx", t.rx).attr("ry", t.ry).attr("r", i.width / 2 + l).attr("width", i.width + t.padding).attr("height", i.height + t.padding), g.info("DoubleCircle main"), m(t, n), t.intersect = function(o) { + return g.info("DoubleCircle intersect", t, i.width / 2 + l + a, o), w.circle(t, i.width / 2 + l + a, o); + }, r; +}), Jt = (e, t) => v(void 0, null, function* () { + const { shapeSvg: r, bbox: i } = yield T( + e, + t, + I(t, void 0), + !0 + ), l = i.width + t.padding, a = i.height + t.padding, s = [ + { x: 0, y: 0 }, + { x: l, y: 0 }, + { x: l, y: -a }, + { x: 0, y: -a }, + { x: 0, y: 0 }, + { x: -8, y: 0 }, + { x: l + 8, y: 0 }, + { x: l + 8, y: -a }, + { x: -8, y: -a }, + { x: -8, y: 0 } + ], n = O(r, l, a, s); + return n.attr("style", t.style), m(t, n), t.intersect = function(c) { + return w.polygon(t, s, c); + }, r; +}), Kt = (e, t) => { + const r = e.insert("g").attr("class", "node default").attr("id", t.domId || t.id), i = r.insert("circle", ":first-child"); + return i.attr("class", "state-start").attr("r", 7).attr("width", 14).attr("height", 14), m(t, i), t.intersect = function(l) { + return w.circle(t, 7, l); + }, r; +}, rt = (e, t, r) => { + const i = e.insert("g").attr("class", "node default").attr("id", t.domId || t.id); + let l = 70, a = 10; + r === "LR" && (l = 10, a = 70); + const s = i.append("rect").attr("x", -1 * l / 2).attr("y", -1 * a / 2).attr("width", l).attr("height", a).attr("class", "fork-join"); + return m(t, s), t.height = t.height + t.padding / 2, t.width = t.width + t.padding / 2, t.intersect = function(n) { + return w.rect(t, n); + }, i; +}, Pt = (e, t) => { + const r = e.insert("g").attr("class", "node default").attr("id", t.domId || t.id), i = r.insert("circle", ":first-child"), l = r.insert("circle", ":first-child"); + return l.attr("class", "state-start").attr("r", 7).attr("width", 14).attr("height", 14), i.attr("class", "state-end").attr("r", 5).attr("width", 10).attr("height", 10), m(t, l), t.intersect = function(a) { + return w.circle(t, 7, a); + }, r; +}, tr = (e, t) => { + const r = t.padding / 2, i = 4, l = 8; + let a; + t.classes ? a = "node " + t.classes : a = "node default"; + const s = e.insert("g").attr("class", a).attr("id", t.domId || t.id), n = s.insert("rect", ":first-child"), c = s.insert("line"), o = s.insert("line"); + let h = 0, y = i; + const f = s.insert("g").attr("class", "label"); + let p = 0; + const d = t.classData.annotations && t.classData.annotations[0], k = t.classData.annotations[0] ? "«" + t.classData.annotations[0] + "»" : "", x = f.node().appendChild(H(k, t.labelStyle, !0, !0)); + let u = x.getBBox(); + if (N(b().flowchart.htmlLabels)) { + const L = x.children[0], S = C(x); + u = L.getBoundingClientRect(), S.attr("width", u.width), S.attr("height", u.height); + } + t.classData.annotations[0] && (y += u.height + i, h += u.width); + let M = t.classData.label; + t.classData.type !== void 0 && t.classData.type !== "" && (b().flowchart.htmlLabels ? M += "<" + t.classData.type + ">" : M += "<" + t.classData.type + ">"); + const E = f.node().appendChild(H(M, t.labelStyle, !0, !0)); + C(E).attr("class", "classTitle"); + let $ = E.getBBox(); + if (N(b().flowchart.htmlLabels)) { + const L = E.children[0], S = C(E); + $ = L.getBoundingClientRect(), S.attr("width", $.width), S.attr("height", $.height); + } + y += $.height + i, $.width > h && (h = $.width); + const Y = []; + t.classData.members.forEach((L) => { + const S = L.getDisplayDetails(); + let _ = S.displayText; + b().flowchart.htmlLabels && (_ = _.replace(//g, ">")); + const W = f.node().appendChild( + H( + _, + S.cssStyle ? S.cssStyle : t.labelStyle, + !0, + !0 + ) + ); + let R = W.getBBox(); + if (N(b().flowchart.htmlLabels)) { + const Q = W.children[0], j = C(W); + R = Q.getBoundingClientRect(), j.attr("width", R.width), j.attr("height", R.height); + } + R.width > h && (h = R.width), y += R.height + i, Y.push(W); + }), y += l; + const A = []; + if (t.classData.methods.forEach((L) => { + const S = L.getDisplayDetails(); + let _ = S.displayText; + b().flowchart.htmlLabels && (_ = _.replace(//g, ">")); + const W = f.node().appendChild( + H( + _, + S.cssStyle ? S.cssStyle : t.labelStyle, + !0, + !0 + ) + ); + let R = W.getBBox(); + if (N(b().flowchart.htmlLabels)) { + const Q = W.children[0], j = C(W); + R = Q.getBoundingClientRect(), j.attr("width", R.width), j.attr("height", R.height); + } + R.width > h && (h = R.width), y += R.height + i, A.push(W); + }), y += l, d) { + let L = (h - u.width) / 2; + C(x).attr( + "transform", + "translate( " + (-1 * h / 2 + L) + ", " + -1 * y / 2 + ")" + ), p = u.height + i; + } + let lt = (h - $.width) / 2; + return C(E).attr( + "transform", + "translate( " + (-1 * h / 2 + lt) + ", " + (-1 * y / 2 + p) + ")" + ), p += $.height + i, c.attr("class", "divider").attr("x1", -h / 2 - r).attr("x2", h / 2 + r).attr("y1", -y / 2 - r + l + p).attr("y2", -y / 2 - r + l + p), p += l, Y.forEach((L) => { + var _; + C(L).attr( + "transform", + "translate( " + -h / 2 + ", " + (-1 * y / 2 + p + l / 2) + ")" + ); + const S = L == null ? void 0 : L.getBBox(); + p += ((_ = S == null ? void 0 : S.height) != null ? _ : 0) + i; + }), p += l, o.attr("class", "divider").attr("x1", -h / 2 - r).attr("x2", h / 2 + r).attr("y1", -y / 2 - r + l + p).attr("y2", -y / 2 - r + l + p), p += l, A.forEach((L) => { + var _; + C(L).attr( + "transform", + "translate( " + -h / 2 + ", " + (-1 * y / 2 + p) + ")" + ); + const S = L == null ? void 0 : L.getBBox(); + p += ((_ = S == null ? void 0 : S.height) != null ? _ : 0) + i; + }), n.attr("style", t.style).attr("class", "outer title-state").attr("x", -h / 2 - r).attr("y", -(y / 2) - r).attr("width", h + t.padding).attr("height", y + t.padding), m(t, n), t.intersect = function(L) { + return w.rect(t, L); + }, s; +}, at = { + rhombus: tt, + composite: Zt, + question: tt, + rect: zt, + labelRect: Gt, + rectWithTitle: Ft, + choice: Ht, + circle: Vt, + doublecircle: qt, + stadium: Qt, + hexagon: Nt, + block_arrow: Ot, + rect_left_inv_arrow: Wt, + lean_right: Xt, + lean_left: Yt, + trapezoid: Dt, + inv_trapezoid: At, + rect_right_inv_arrow: jt, + cylinder: Ut, + start: Kt, + end: Pt, + note: _t, + subroutine: Jt, + fork: rt, + join: rt, + class_box: tr +}; +let D = {}; +const pr = (e, t, r) => v(void 0, null, function* () { + let i, l; + if (t.link) { + let a; + b().securityLevel === "sandbox" ? a = "_top" : t.linkTarget && (a = t.linkTarget || "_blank"), i = e.insert("svg:a").attr("xlink:href", t.link).attr("target", a), l = yield at[t.shape](i, t, r); + } else + l = yield at[t.shape](e, t, r), i = l; + return t.tooltip && l.attr("title", t.tooltip), t.class && l.attr("class", "node default " + t.class), i.attr("data-node", "true"), i.attr("data-id", t.id), D[t.id] = i, t.haveCallback && D[t.id].attr("class", D[t.id].attr("class") + " clickable"), i; +}), fr = (e, t) => { + D[t.id] = e; +}, xr = () => { + D = {}; +}, dr = (e) => { + const t = D[e.id]; + g.trace( + "Transforming node", + e.diff, + e, + "translate(" + (e.x - e.width / 2 - 5) + ", " + e.width / 2 + ")" + ); + const r = 8, i = e.diff || 0; + return e.clusterNode ? t.attr( + "transform", + "translate(" + (e.x + i - e.width / 2) + ", " + (e.y - e.height / 2 - r) + ")" + ) : t.attr("transform", "translate(" + e.x + ", " + e.y + ")"), i; +}, rr = ({ + flowchart: e +}) => { + var s, n; + var t, r; + const i = (s = (t = e == null ? void 0 : e.subGraphTitleMargin) == null ? void 0 : t.top) != null ? s : 0, l = (n = (r = e == null ? void 0 : e.subGraphTitleMargin) == null ? void 0 : r.bottom) != null ? n : 0, a = i + l; + return { + subGraphTitleTopMargin: i, + subGraphTitleBottomMargin: l, + subGraphTitleTotalMargin: a + }; +}, X = { + aggregation: 18, + extension: 18, + composition: 18, + dependency: 6, + lollipop: 13.5, + arrow_point: 5.3 +}; +function z(e, t) { + if (e === void 0 || t === void 0) + return { angle: 0, deltaX: 0, deltaY: 0 }; + e = G(e), t = G(t); + const [r, i] = [e.x, e.y], [l, a] = [t.x, t.y], s = l - r, n = a - i; + return { angle: Math.atan(n / s), deltaX: s, deltaY: n }; +} +const G = (e) => Array.isArray(e) ? { x: e[0], y: e[1] } : e, ar = (e) => ({ + x: function(t, r, i) { + let l = 0; + if (r === 0 && Object.hasOwn(X, e.arrowTypeStart)) { + const { angle: a, deltaX: s } = z(i[0], i[1]); + l = X[e.arrowTypeStart] * Math.cos(a) * (s >= 0 ? 1 : -1); + } else if (r === i.length - 1 && Object.hasOwn(X, e.arrowTypeEnd)) { + const { angle: a, deltaX: s } = z( + i[i.length - 1], + i[i.length - 2] + ); + l = X[e.arrowTypeEnd] * Math.cos(a) * (s >= 0 ? 1 : -1); + } + return G(t).x + l; + }, + y: function(t, r, i) { + let l = 0; + if (r === 0 && Object.hasOwn(X, e.arrowTypeStart)) { + const { angle: a, deltaY: s } = z(i[0], i[1]); + l = X[e.arrowTypeStart] * Math.abs(Math.sin(a)) * (s >= 0 ? 1 : -1); + } else if (r === i.length - 1 && Object.hasOwn(X, e.arrowTypeEnd)) { + const { angle: a, deltaY: s } = z( + i[i.length - 1], + i[i.length - 2] + ); + l = X[e.arrowTypeEnd] * Math.abs(Math.sin(a)) * (s >= 0 ? 1 : -1); + } + return G(t).y + l; + } +}), er = (e, t, r, i, l) => { + t.arrowTypeStart && et(e, "start", t.arrowTypeStart, r, i, l), t.arrowTypeEnd && et(e, "end", t.arrowTypeEnd, r, i, l); +}, sr = { + arrow_cross: "cross", + arrow_point: "point", + arrow_barb: "barb", + arrow_circle: "circle", + aggregation: "aggregation", + extension: "extension", + composition: "composition", + dependency: "dependency", + lollipop: "lollipop" +}, et = (e, t, r, i, l, a) => { + const s = sr[r]; + if (!s) { + g.warn(`Unknown arrow type: ${r}`); + return; + } + const n = t === "start" ? "Start" : "End"; + e.attr(`marker-${t}`, `url(${i}#${l}_${a}-${s}${n})`); +}; +let F = {}, B = {}; +const gr = () => { + F = {}, B = {}; +}, ur = (e, t) => { + const r = N(b().flowchart.htmlLabels), i = t.labelType === "markdown" ? it(e, t.label, { + style: t.labelStyle, + useHtmlLabels: r, + addSvgBackground: !0 + }) : H(t.label, t.labelStyle), l = e.insert("g").attr("class", "edgeLabel"), a = l.insert("g").attr("class", "label"); + a.node().appendChild(i); + let s = i.getBBox(); + if (r) { + const c = i.children[0], o = C(i); + s = c.getBoundingClientRect(), o.attr("width", s.width), o.attr("height", s.height); + } + a.attr("transform", "translate(" + -s.width / 2 + ", " + -s.height / 2 + ")"), F[t.id] = l, t.width = s.width, t.height = s.height; + let n; + if (t.startLabelLeft) { + const c = H(t.startLabelLeft, t.labelStyle), o = e.insert("g").attr("class", "edgeTerminals"), h = o.insert("g").attr("class", "inner"); + n = h.node().appendChild(c); + const y = c.getBBox(); + h.attr("transform", "translate(" + -y.width / 2 + ", " + -y.height / 2 + ")"), B[t.id] || (B[t.id] = {}), B[t.id].startLeft = o, Z(n, t.startLabelLeft); + } + if (t.startLabelRight) { + const c = H(t.startLabelRight, t.labelStyle), o = e.insert("g").attr("class", "edgeTerminals"), h = o.insert("g").attr("class", "inner"); + n = o.node().appendChild(c), h.node().appendChild(c); + const y = c.getBBox(); + h.attr("transform", "translate(" + -y.width / 2 + ", " + -y.height / 2 + ")"), B[t.id] || (B[t.id] = {}), B[t.id].startRight = o, Z(n, t.startLabelRight); + } + if (t.endLabelLeft) { + const c = H(t.endLabelLeft, t.labelStyle), o = e.insert("g").attr("class", "edgeTerminals"), h = o.insert("g").attr("class", "inner"); + n = h.node().appendChild(c); + const y = c.getBBox(); + h.attr("transform", "translate(" + -y.width / 2 + ", " + -y.height / 2 + ")"), o.node().appendChild(c), B[t.id] || (B[t.id] = {}), B[t.id].endLeft = o, Z(n, t.endLabelLeft); + } + if (t.endLabelRight) { + const c = H(t.endLabelRight, t.labelStyle), o = e.insert("g").attr("class", "edgeTerminals"), h = o.insert("g").attr("class", "inner"); + n = h.node().appendChild(c); + const y = c.getBBox(); + h.attr("transform", "translate(" + -y.width / 2 + ", " + -y.height / 2 + ")"), o.node().appendChild(c), B[t.id] || (B[t.id] = {}), B[t.id].endRight = o, Z(n, t.endLabelRight); + } + return i; +}; +function Z(e, t) { + b().flowchart.htmlLabels && e && (e.style.width = t.length * 9 + "px", e.style.height = "12px"); +} +const br = (e, t) => { + g.debug("Moving label abc88 ", e.id, e.label, F[e.id], t); + let r = t.updatedPath ? t.updatedPath : t.originalPath; + const i = b(), { subGraphTitleTotalMargin: l } = rr(i); + if (e.label) { + const a = F[e.id]; + let s = e.x, n = e.y; + if (r) { + const c = U.calcLabelPosition(r); + g.debug( + "Moving label " + e.label + " from (", + s, + ",", + n, + ") to (", + c.x, + ",", + c.y, + ") abc88" + ), t.updatedPath && (s = c.x, n = c.y); + } + a.attr("transform", `translate(${s}, ${n + l / 2})`); + } + if (e.startLabelLeft) { + const a = B[e.id].startLeft; + let s = e.x, n = e.y; + if (r) { + const c = U.calcTerminalLabelPosition(e.arrowTypeStart ? 10 : 0, "start_left", r); + s = c.x, n = c.y; + } + a.attr("transform", `translate(${s}, ${n})`); + } + if (e.startLabelRight) { + const a = B[e.id].startRight; + let s = e.x, n = e.y; + if (r) { + const c = U.calcTerminalLabelPosition( + e.arrowTypeStart ? 10 : 0, + "start_right", + r + ); + s = c.x, n = c.y; + } + a.attr("transform", `translate(${s}, ${n})`); + } + if (e.endLabelLeft) { + const a = B[e.id].endLeft; + let s = e.x, n = e.y; + if (r) { + const c = U.calcTerminalLabelPosition(e.arrowTypeEnd ? 10 : 0, "end_left", r); + s = c.x, n = c.y; + } + a.attr("transform", `translate(${s}, ${n})`); + } + if (e.endLabelRight) { + const a = B[e.id].endRight; + let s = e.x, n = e.y; + if (r) { + const c = U.calcTerminalLabelPosition(e.arrowTypeEnd ? 10 : 0, "end_right", r); + s = c.x, n = c.y; + } + a.attr("transform", `translate(${s}, ${n})`); + } +}, ir = (e, t) => { + const r = e.x, i = e.y, l = Math.abs(t.x - r), a = Math.abs(t.y - i), s = e.width / 2, n = e.height / 2; + return l >= s || a >= n; +}, nr = (e, t, r) => { + g.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`); + const i = e.x, l = e.y, a = Math.abs(i - r.x), s = e.width / 2; + let n = r.x < t.x ? s - a : s + a; + const c = e.height / 2, o = Math.abs(t.y - r.y), h = Math.abs(t.x - r.x); + if (Math.abs(l - t.y) * s > Math.abs(i - t.x) * c) { + let y = r.y < t.y ? t.y - c - l : l - c - t.y; + n = h * y / o; + const f = { + x: r.x < t.x ? r.x + n : r.x - h + n, + y: r.y < t.y ? r.y + o - y : r.y - o + y + }; + return n === 0 && (f.x = t.x, f.y = t.y), h === 0 && (f.x = t.x), o === 0 && (f.y = t.y), g.debug(`abc89 topp/bott calc, Q ${o}, q ${y}, R ${h}, r ${n}`, f), f; + } else { + r.x < t.x ? n = t.x - s - i : n = i - s - t.x; + let y = o * n / h, f = r.x < t.x ? r.x + h - n : r.x - h + n, p = r.y < t.y ? r.y + y : r.y - y; + return g.debug(`sides calc abc89, Q ${o}, q ${y}, R ${h}, r ${n}`, { _x: f, _y: p }), n === 0 && (f = t.x, p = t.y), h === 0 && (f = t.x), o === 0 && (p = t.y), { x: f, y: p }; + } +}, st = (e, t) => { + g.debug("abc88 cutPathAtIntersect", e, t); + let r = [], i = e[0], l = !1; + return e.forEach((a) => { + if (!ir(t, a) && !l) { + const s = nr(t, i, a); + let n = !1; + r.forEach((c) => { + n = n || c.x === s.x && c.y === s.y; + }), r.some((c) => c.x === s.x && c.y === s.y) || r.push(s), l = !0; + } else + i = a, l || r.push(a); + }), r; +}, wr = function(e, t, r, i, l, a, s) { + let n = r.points; + g.debug("abc88 InsertEdge: edge=", r, "e=", t); + let c = !1; + const o = a.node(t.v); + var h = a.node(t.w); + h != null && h.intersect && (o != null && o.intersect) && (n = n.slice(1, r.points.length - 1), n.unshift(o.intersect(n[0])), n.push(h.intersect(n[n.length - 1]))), r.toCluster && (g.debug("to cluster abc88", i[r.toCluster]), n = st(r.points, i[r.toCluster].node), c = !0), r.fromCluster && (g.debug("from cluster abc88", i[r.fromCluster]), n = st(n.reverse(), i[r.fromCluster].node).reverse(), c = !0); + const y = n.filter(($) => !Number.isNaN($.y)); + let f = ct; + r.curve && (l === "graph" || l === "flowchart") && (f = r.curve); + const { x: p, y: d } = ar(r), k = ht().x(p).y(d).curve(f); + let x; + switch (r.thickness) { + case "normal": + x = "edge-thickness-normal"; + break; + case "thick": + x = "edge-thickness-thick"; + break; + case "invisible": + x = "edge-thickness-thick"; + break; + default: + x = ""; + } + switch (r.pattern) { + case "solid": + x += " edge-pattern-solid"; + break; + case "dotted": + x += " edge-pattern-dotted"; + break; + case "dashed": + x += " edge-pattern-dashed"; + break; + } + const u = e.append("path").attr("d", k(y)).attr("id", r.id).attr("class", " " + x + (r.classes ? " " + r.classes : "")).attr("style", r.style); + let M = ""; + (b().flowchart.arrowMarkerAbsolute || b().state.arrowMarkerAbsolute) && (M = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, M = M.replace(/\(/g, "\\("), M = M.replace(/\)/g, "\\)")), er(u, r, M, s, l); + let E = {}; + return c && (E.updatedPath = n), E.originalPath = r.points, E; +}; +export { + pr as a, + ur as b, + wr as c, + br as d, + xr as e, + gr as f, + rr as g, + H as h, + yr as i, + Ct as j, + ar as k, + T as l, + er as m, + dr as p, + fr as s, + m as u +}; diff --git a/client/packages/lowcoder/public/package/728928d2.js b/client/packages/lowcoder/public/package/728928d2.js new file mode 100644 index 000000000..474053c05 --- /dev/null +++ b/client/packages/lowcoder/public/package/728928d2.js @@ -0,0 +1,1284 @@ +import { Z as zt, _ as ot, X as wt, W as Ft, s as Nt, a as Xt, F as Yt, G as St, b as Ht, d as $t, H as Ut, l as _t, U as qt, k as jt, f as Gt } from "./08856db2.js"; +import { c as Qt } from "./f69b998c.js"; +import { i as Kt } from "./f9637058.js"; +import { o as Zt } from "./92e85b65.js"; +import { l as ft } from "./f9d0127a.js"; +import { l as pt } from "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +function Jt(e, t, i) { + e = +e, t = +t, i = (n = arguments.length) < 2 ? (t = e, e = 0, 1) : n < 3 ? 1 : +i; + for (var s = -1, n = Math.max(0, Math.ceil((t - e) / i)) | 0, o = new Array(n); ++s < n; ) + o[s] = e + s * i; + return o; +} +function st() { + var e = Zt().unknown(void 0), t = e.domain, i = e.range, s = 0, n = 1, o, c, f = !1, d = 0, R = 0, C = 0.5; + delete e.unknown; + function A() { + var m = t().length, T = n < s, S = T ? n : s, P = T ? s : n; + o = (P - S) / Math.max(1, m - d + R * 2), f && (o = Math.floor(o)), S += (P - S - o * (m - d)) * C, c = o * (1 - d), f && (S = Math.round(S), c = Math.round(c)); + var p = Jt(m).map(function(_) { + return S + o * _; + }); + return i(T ? p.reverse() : p); + } + return e.domain = function(m) { + return arguments.length ? (t(m), A()) : t(); + }, e.range = function(m) { + return arguments.length ? ([s, n] = m, s = +s, n = +n, A()) : [s, n]; + }, e.rangeRound = function(m) { + return [s, n] = m, s = +s, n = +n, f = !0, A(); + }, e.bandwidth = function() { + return c; + }, e.step = function() { + return o; + }, e.round = function(m) { + return arguments.length ? (f = !!m, A()) : f; + }, e.padding = function(m) { + return arguments.length ? (d = Math.min(1, R = +m), A()) : d; + }, e.paddingInner = function(m) { + return arguments.length ? (d = Math.min(1, m), A()) : d; + }, e.paddingOuter = function(m) { + return arguments.length ? (R = +m, A()) : R; + }, e.align = function(m) { + return arguments.length ? (C = Math.max(0, Math.min(1, m)), A()) : C; + }, e.copy = function() { + return st(t(), [s, n]).round(f).paddingInner(d).paddingOuter(R).align(C); + }, Kt.apply(A(), arguments); +} +var nt = function() { + var e = function(V, r, l, u) { + for (l = l || {}, u = V.length; u--; l[V[u]] = r) + ; + return l; + }, t = [1, 10, 12, 14, 16, 18, 19, 21, 23], i = [2, 6], s = [1, 3], n = [1, 5], o = [1, 6], c = [1, 7], f = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], d = [1, 25], R = [1, 26], C = [1, 28], A = [1, 29], m = [1, 30], T = [1, 31], S = [1, 32], P = [1, 33], p = [1, 34], _ = [1, 35], h = [1, 36], L = [1, 37], z = [1, 43], lt = [1, 42], ct = [1, 47], $ = [1, 50], w = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], Q = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], E = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], ut = [1, 64], K = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, eol: 4, XYCHART: 5, chartConfig: 6, document: 7, CHART_ORIENTATION: 8, statement: 9, title: 10, text: 11, X_AXIS: 12, parseXAxis: 13, Y_AXIS: 14, parseYAxis: 15, LINE: 16, plotData: 17, BAR: 18, acc_title: 19, acc_title_value: 20, acc_descr: 21, acc_descr_value: 22, acc_descr_multiline_value: 23, SQUARE_BRACES_START: 24, commaSeparatedNumbers: 25, SQUARE_BRACES_END: 26, NUMBER_WITH_DECIMAL: 27, COMMA: 28, xAxisData: 29, bandData: 30, ARROW_DELIMITER: 31, commaSeparatedTexts: 32, yAxisData: 33, NEWLINE: 34, SEMI: 35, EOF: 36, alphaNum: 37, STR: 38, MD_STR: 39, alphaNumToken: 40, AMP: 41, NUM: 42, ALPHA: 43, PLUS: 44, EQUALS: 45, MULT: 46, DOT: 47, BRKT: 48, MINUS: 49, UNDERSCORE: 50, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 5: "XYCHART", 8: "CHART_ORIENTATION", 10: "title", 12: "X_AXIS", 14: "Y_AXIS", 16: "LINE", 18: "BAR", 19: "acc_title", 20: "acc_title_value", 21: "acc_descr", 22: "acc_descr_value", 23: "acc_descr_multiline_value", 24: "SQUARE_BRACES_START", 26: "SQUARE_BRACES_END", 27: "NUMBER_WITH_DECIMAL", 28: "COMMA", 31: "ARROW_DELIMITER", 34: "NEWLINE", 35: "SEMI", 36: "EOF", 38: "STR", 39: "MD_STR", 41: "AMP", 42: "NUM", 43: "ALPHA", 44: "PLUS", 45: "EQUALS", 46: "MULT", 47: "DOT", 48: "BRKT", 49: "MINUS", 50: "UNDERSCORE" }, + productions_: [0, [3, 2], [3, 3], [3, 2], [3, 1], [6, 1], [7, 0], [7, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 3], [9, 2], [9, 3], [9, 2], [9, 2], [9, 1], [17, 3], [25, 3], [25, 1], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]], + performAction: function(r, l, u, g, b, a, F) { + var x = a.length - 1; + switch (b) { + case 5: + g.setOrientation(a[x]); + break; + case 9: + g.setDiagramTitle(a[x].text.trim()); + break; + case 12: + g.setLineData({ text: "", type: "text" }, a[x]); + break; + case 13: + g.setLineData(a[x - 1], a[x]); + break; + case 14: + g.setBarData({ text: "", type: "text" }, a[x]); + break; + case 15: + g.setBarData(a[x - 1], a[x]); + break; + case 16: + this.$ = a[x].trim(), g.setAccTitle(this.$); + break; + case 17: + case 18: + this.$ = a[x].trim(), g.setAccDescription(this.$); + break; + case 19: + this.$ = a[x - 1]; + break; + case 20: + this.$ = [Number(a[x - 2]), ...a[x]]; + break; + case 21: + this.$ = [Number(a[x])]; + break; + case 22: + g.setXAxisTitle(a[x]); + break; + case 23: + g.setXAxisTitle(a[x - 1]); + break; + case 24: + g.setXAxisTitle({ type: "text", text: "" }); + break; + case 25: + g.setXAxisBand(a[x]); + break; + case 26: + g.setXAxisRangeData(Number(a[x - 2]), Number(a[x])); + break; + case 27: + this.$ = a[x - 1]; + break; + case 28: + this.$ = [a[x - 2], ...a[x]]; + break; + case 29: + this.$ = [a[x]]; + break; + case 30: + g.setYAxisTitle(a[x]); + break; + case 31: + g.setYAxisTitle(a[x - 1]); + break; + case 32: + g.setYAxisTitle({ type: "text", text: "" }); + break; + case 33: + g.setYAxisRangeData(Number(a[x - 2]), Number(a[x])); + break; + case 37: + this.$ = { text: a[x], type: "text" }; + break; + case 38: + this.$ = { text: a[x], type: "text" }; + break; + case 39: + this.$ = { text: a[x], type: "markdown" }; + break; + case 40: + this.$ = a[x]; + break; + case 41: + this.$ = a[x - 1] + "" + a[x]; + break; + } + }, + table: [e(t, i, { 3: 1, 4: 2, 7: 4, 5: s, 34: n, 35: o, 36: c }), { 1: [3] }, e(t, i, { 4: 2, 7: 4, 3: 8, 5: s, 34: n, 35: o, 36: c }), e(t, i, { 4: 2, 7: 4, 6: 9, 3: 10, 5: s, 8: [1, 11], 34: n, 35: o, 36: c }), { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] }, e(f, [2, 34]), e(f, [2, 35]), e(f, [2, 36]), { 1: [2, 1] }, e(t, i, { 4: 2, 7: 4, 3: 21, 5: s, 34: n, 35: o, 36: c }), { 1: [2, 3] }, e(f, [2, 5]), e(t, [2, 7], { 4: 22, 34: n, 35: o, 36: c }), { 11: 23, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, { 11: 39, 13: 38, 24: z, 27: lt, 29: 40, 30: 41, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, { 11: 45, 15: 44, 27: ct, 33: 46, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, { 11: 49, 17: 48, 24: $, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, { 11: 52, 17: 51, 24: $, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, { 20: [1, 53] }, { 22: [1, 54] }, e(w, [2, 18]), { 1: [2, 2] }, e(w, [2, 8]), e(w, [2, 9]), e(Q, [2, 37], { 40: 55, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }), e(Q, [2, 38]), e(Q, [2, 39]), e(E, [2, 40]), e(E, [2, 42]), e(E, [2, 43]), e(E, [2, 44]), e(E, [2, 45]), e(E, [2, 46]), e(E, [2, 47]), e(E, [2, 48]), e(E, [2, 49]), e(E, [2, 50]), e(E, [2, 51]), e(w, [2, 10]), e(w, [2, 22], { 30: 41, 29: 56, 24: z, 27: lt }), e(w, [2, 24]), e(w, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, e(w, [2, 11]), e(w, [2, 30], { 33: 60, 27: ct }), e(w, [2, 32]), { 31: [1, 61] }, e(w, [2, 12]), { 17: 62, 24: $ }, { 25: 63, 27: ut }, e(w, [2, 14]), { 17: 65, 24: $ }, e(w, [2, 16]), e(w, [2, 17]), e(E, [2, 41]), e(w, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, e(w, [2, 31]), { 27: [1, 69] }, e(w, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, e(w, [2, 15]), e(w, [2, 26]), e(w, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: d, 39: R, 40: 27, 41: C, 42: A, 43: m, 44: T, 45: S, 46: P, 47: p, 48: _, 49: h, 50: L }, e(w, [2, 33]), e(w, [2, 19]), { 25: 73, 27: ut }, { 26: [2, 28] }, { 26: [2, 20] }], + defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] }, + parseError: function(r, l) { + if (l.recoverable) + this.trace(r); + else { + var u = new Error(r); + throw u.hash = l, u; + } + }, + parse: function(r) { + var l = this, u = [0], g = [], b = [null], a = [], F = this.table, x = "", U = 0, gt = 0, Vt = 2, xt = 1, Wt = a.slice.call(arguments, 1), k = Object.create(this.lexer), W = { yy: {} }; + for (var J in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, J) && (W.yy[J] = this.yy[J]); + k.setInput(r, W.yy), W.yy.lexer = k, W.yy.parser = this, typeof k.yylloc == "undefined" && (k.yylloc = {}); + var tt = k.yylloc; + a.push(tt); + var Bt = k.options && k.options.ranges; + typeof W.yy.parseError == "function" ? this.parseError = W.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function Ot() { + var I; + return I = g.pop() || k.lex() || xt, typeof I != "number" && (I instanceof Array && (g = I, I = g.pop()), I = l.symbols_[I] || I), I; + } + for (var D, B, v, it, O = {}, q, M, dt, j; ; ) { + if (B = u[u.length - 1], this.defaultActions[B] ? v = this.defaultActions[B] : ((D === null || typeof D == "undefined") && (D = Ot()), v = F[B] && F[B][D]), typeof v == "undefined" || !v.length || !v[0]) { + var et = ""; + j = []; + for (q in F[B]) + this.terminals_[q] && q > Vt && j.push("'" + this.terminals_[q] + "'"); + k.showPosition ? et = "Parse error on line " + (U + 1) + `: +` + k.showPosition() + ` +Expecting ` + j.join(", ") + ", got '" + (this.terminals_[D] || D) + "'" : et = "Parse error on line " + (U + 1) + ": Unexpected " + (D == xt ? "end of input" : "'" + (this.terminals_[D] || D) + "'"), this.parseError(et, { + text: k.match, + token: this.terminals_[D] || D, + line: k.yylineno, + loc: tt, + expected: j + }); + } + if (v[0] instanceof Array && v.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + B + ", token: " + D); + switch (v[0]) { + case 1: + u.push(D), b.push(k.yytext), a.push(k.yylloc), u.push(v[1]), D = null, gt = k.yyleng, x = k.yytext, U = k.yylineno, tt = k.yylloc; + break; + case 2: + if (M = this.productions_[v[1]][1], O.$ = b[b.length - M], O._$ = { + first_line: a[a.length - (M || 1)].first_line, + last_line: a[a.length - 1].last_line, + first_column: a[a.length - (M || 1)].first_column, + last_column: a[a.length - 1].last_column + }, Bt && (O._$.range = [ + a[a.length - (M || 1)].range[0], + a[a.length - 1].range[1] + ]), it = this.performAction.apply(O, [ + x, + gt, + U, + W.yy, + v[1], + b, + a + ].concat(Wt)), typeof it != "undefined") + return it; + M && (u = u.slice(0, -1 * M * 2), b = b.slice(0, -1 * M), a = a.slice(0, -1 * M)), u.push(this.productions_[v[1]][0]), b.push(O.$), a.push(O._$), dt = F[u[u.length - 2]][u[u.length - 1]], u.push(dt); + break; + case 3: + return !0; + } + } + return !0; + } + }, It = function() { + var V = { + EOF: 1, + parseError: function(l, u) { + if (this.yy.parser) + this.yy.parser.parseError(l, u); + else + throw new Error(l); + }, + // resets the lexer, sets new input + setInput: function(r, l) { + return this.yy = l || this.yy || {}, this._input = r, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var r = this._input[0]; + this.yytext += r, this.yyleng++, this.offset++, this.match += r, this.matched += r; + var l = r.match(/(?:\r\n?|\n).*/g); + return l ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), r; + }, + // unshifts one char (or a string) into the input + unput: function(r) { + var l = r.length, u = r.split(/(?:\r\n?|\n)/g); + this._input = r + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - l), this.offset -= l; + var g = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), u.length - 1 && (this.yylineno -= u.length - 1); + var b = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: u ? (u.length === g.length ? this.yylloc.first_column : 0) + g[g.length - u.length].length - u[0].length : this.yylloc.first_column - l + }, this.options.ranges && (this.yylloc.range = [b[0], b[0] + this.yyleng - l]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(r) { + this.unput(this.match.slice(r)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var r = this.matched.substr(0, this.matched.length - this.match.length); + return (r.length > 20 ? "..." : "") + r.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var r = this.match; + return r.length < 20 && (r += this._input.substr(0, 20 - r.length)), (r.substr(0, 20) + (r.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var r = this.pastInput(), l = new Array(r.length + 1).join("-"); + return r + this.upcomingInput() + ` +` + l + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(r, l) { + var u, g, b; + if (this.options.backtrack_lexer && (b = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (b.yylloc.range = this.yylloc.range.slice(0))), g = r[0].match(/(?:\r\n?|\n).*/g), g && (this.yylineno += g.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: g ? g[g.length - 1].length - g[g.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + r[0].length + }, this.yytext += r[0], this.match += r[0], this.matches = r, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(r[0].length), this.matched += r[0], u = this.performAction.call(this, this.yy, this, l, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), u) + return u; + if (this._backtrack) { + for (var a in b) + this[a] = b[a]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var r, l, u, g; + this._more || (this.yytext = "", this.match = ""); + for (var b = this._currentRules(), a = 0; a < b.length; a++) + if (u = this._input.match(this.rules[b[a]]), u && (!l || u[0].length > l[0].length)) { + if (l = u, g = a, this.options.backtrack_lexer) { + if (r = this.test_match(u, b[a]), r !== !1) + return r; + if (this._backtrack) { + l = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return l ? (r = this.test_match(l, b[g]), r !== !1 ? r : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var l = this.next(); + return l || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(l) { + this.conditionStack.push(l); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var l = this.conditionStack.length - 1; + return l > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(l) { + return l = this.conditionStack.length - 1 - Math.abs(l || 0), l >= 0 ? this.conditionStack[l] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(l) { + this.begin(l); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(l, u, g, b) { + switch (g) { + case 0: + break; + case 1: + break; + case 2: + return this.popState(), 34; + case 3: + return this.popState(), 34; + case 4: + return 34; + case 5: + break; + case 6: + return 10; + case 7: + return this.pushState("acc_title"), 19; + case 8: + return this.popState(), "acc_title_value"; + case 9: + return this.pushState("acc_descr"), 21; + case 10: + return this.popState(), "acc_descr_value"; + case 11: + this.pushState("acc_descr_multiline"); + break; + case 12: + this.popState(); + break; + case 13: + return "acc_descr_multiline_value"; + case 14: + return 5; + case 15: + return 8; + case 16: + return this.pushState("axis_data"), "X_AXIS"; + case 17: + return this.pushState("axis_data"), "Y_AXIS"; + case 18: + return this.pushState("axis_band_data"), 24; + case 19: + return 31; + case 20: + return this.pushState("data"), 16; + case 21: + return this.pushState("data"), 18; + case 22: + return this.pushState("data_inner"), 24; + case 23: + return 27; + case 24: + return this.popState(), 26; + case 25: + this.popState(); + break; + case 26: + this.pushState("string"); + break; + case 27: + this.popState(); + break; + case 28: + return "STR"; + case 29: + return 24; + case 30: + return 26; + case 31: + return 43; + case 32: + return "COLON"; + case 33: + return 44; + case 34: + return 28; + case 35: + return 45; + case 36: + return 46; + case 37: + return 48; + case 38: + return 50; + case 39: + return 47; + case 40: + return 41; + case 41: + return 49; + case 42: + return 42; + case 43: + break; + case 44: + return 35; + case 45: + return 36; + } + }, + rules: [/^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:(\r?\n))/i, /^(?:(\r?\n))/i, /^(?:[\n\r]+)/i, /^(?:%%[^\n]*)/i, /^(?:title\b)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:\{)/i, /^(?:[^\}]*)/i, /^(?:xychart-beta\b)/i, /^(?:(?:vertical|horizontal))/i, /^(?:x-axis\b)/i, /^(?:y-axis\b)/i, /^(?:\[)/i, /^(?:-->)/i, /^(?:line\b)/i, /^(?:bar\b)/i, /^(?:\[)/i, /^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i, /^(?:\])/i, /^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:\[)/i, /^(?:\])/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:\*)/i, /^(?:#)/i, /^(?:[\_])/i, /^(?:\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\s+)/i, /^(?:;)/i, /^(?:$)/i], + conditions: { data_inner: { rules: [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], inclusive: !0 }, data: { rules: [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], inclusive: !0 }, axis_band_data: { rules: [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], inclusive: !0 }, axis_data: { rules: [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], inclusive: !0 }, acc_descr_multiline: { rules: [12, 13], inclusive: !1 }, acc_descr: { rules: [10], inclusive: !1 }, acc_title: { rules: [8], inclusive: !1 }, title: { rules: [], inclusive: !1 }, md_string: { rules: [], inclusive: !1 }, string: { rules: [27, 28], inclusive: !1 }, INITIAL: { rules: [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], inclusive: !0 } } + }; + return V; + }(); + K.lexer = It; + function Z() { + this.yy = {}; + } + return Z.prototype = K, K.Parser = Z, new Z(); +}(); +nt.parser = nt; +const ti = nt; +function mt(e) { + return e.type === "bar"; +} +function Ct(e) { + return e.type === "band"; +} +function N(e) { + return e.type === "linear"; +} +class kt { + constructor(t) { + this.parentGroup = t; + } + getMaxDimension(t, i) { + if (!this.parentGroup) + return { + width: t.reduce((o, c) => Math.max(c.length, o), 0) * i, + height: i + }; + const s = { + width: 0, + height: 0 + }, n = this.parentGroup.append("g").attr("visibility", "hidden").attr("font-size", i); + for (const o of t) { + const c = Qt(n, 1, o), f = c ? c.width : o.length * i, d = c ? c.height : i; + s.width = Math.max(s.width, f), s.height = Math.max(s.height, d); + } + return n.remove(), s; + } +} +const yt = 0.7, bt = 0.2; +class Rt { + constructor(t, i, s, n) { + this.axisConfig = t, this.title = i, this.textDimensionCalculator = s, this.axisThemeConfig = n, this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }, this.axisPosition = "left", this.showTitle = !1, this.showLabel = !1, this.showTick = !1, this.showAxisLine = !1, this.outerPadding = 0, this.titleTextHeight = 0, this.labelTextHeight = 0, this.range = [0, 10], this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }, this.axisPosition = "left"; + } + setRange(t) { + this.range = t, this.axisPosition === "left" || this.axisPosition === "right" ? this.boundingRect.height = t[1] - t[0] : this.boundingRect.width = t[1] - t[0], this.recalculateScale(); + } + getRange() { + return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding]; + } + setAxisPosition(t) { + this.axisPosition = t, this.setRange(this.range); + } + getTickDistance() { + const t = this.getRange(); + return Math.abs(t[0] - t[1]) / this.getTickValues().length; + } + getAxisOuterPadding() { + return this.outerPadding; + } + getLabelDimension() { + return this.textDimensionCalculator.getMaxDimension( + this.getTickValues().map((t) => t.toString()), + this.axisConfig.labelFontSize + ); + } + recalculateOuterPaddingToDrawBar() { + yt * this.getTickDistance() > this.outerPadding * 2 && (this.outerPadding = Math.floor(yt * this.getTickDistance() / 2)), this.recalculateScale(); + } + calculateSpaceIfDrawnHorizontally(t) { + let i = t.height; + if (this.axisConfig.showAxisLine && i > this.axisConfig.axisLineWidth && (i -= this.axisConfig.axisLineWidth, this.showAxisLine = !0), this.axisConfig.showLabel) { + const s = this.getLabelDimension(), n = bt * t.width; + this.outerPadding = Math.min(s.width / 2, n); + const o = s.height + this.axisConfig.labelPadding * 2; + this.labelTextHeight = s.height, o <= i && (i -= o, this.showLabel = !0); + } + if (this.axisConfig.showTick && i >= this.axisConfig.tickLength && (this.showTick = !0, i -= this.axisConfig.tickLength), this.axisConfig.showTitle && this.title) { + const s = this.textDimensionCalculator.getMaxDimension( + [this.title], + this.axisConfig.titleFontSize + ), n = s.height + this.axisConfig.titlePadding * 2; + this.titleTextHeight = s.height, n <= i && (i -= n, this.showTitle = !0); + } + this.boundingRect.width = t.width, this.boundingRect.height = t.height - i; + } + calculateSpaceIfDrawnVertical(t) { + let i = t.width; + if (this.axisConfig.showAxisLine && i > this.axisConfig.axisLineWidth && (i -= this.axisConfig.axisLineWidth, this.showAxisLine = !0), this.axisConfig.showLabel) { + const s = this.getLabelDimension(), n = bt * t.height; + this.outerPadding = Math.min(s.height / 2, n); + const o = s.width + this.axisConfig.labelPadding * 2; + o <= i && (i -= o, this.showLabel = !0); + } + if (this.axisConfig.showTick && i >= this.axisConfig.tickLength && (this.showTick = !0, i -= this.axisConfig.tickLength), this.axisConfig.showTitle && this.title) { + const s = this.textDimensionCalculator.getMaxDimension( + [this.title], + this.axisConfig.titleFontSize + ), n = s.height + this.axisConfig.titlePadding * 2; + this.titleTextHeight = s.height, n <= i && (i -= n, this.showTitle = !0); + } + this.boundingRect.width = t.width - i, this.boundingRect.height = t.height; + } + calculateSpace(t) { + return this.axisPosition === "left" || this.axisPosition === "right" ? this.calculateSpaceIfDrawnVertical(t) : this.calculateSpaceIfDrawnHorizontally(t), this.recalculateScale(), { + width: this.boundingRect.width, + height: this.boundingRect.height + }; + } + setBoundingBoxXY(t) { + this.boundingRect.x = t.x, this.boundingRect.y = t.y; + } + getDrawableElementsForLeftAxis() { + const t = []; + if (this.showAxisLine) { + const i = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2; + t.push({ + type: "path", + groupTexts: ["left-axis", "axisl-line"], + data: [ + { + path: `M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y + this.boundingRect.height} `, + strokeFill: this.axisThemeConfig.axisLineColor, + strokeWidth: this.axisConfig.axisLineWidth + } + ] + }); + } + if (this.showLabel && t.push({ + type: "text", + groupTexts: ["left-axis", "label"], + data: this.getTickValues().map((i) => ({ + text: i.toString(), + x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0), + y: this.getScaleValue(i), + fill: this.axisThemeConfig.labelColor, + fontSize: this.axisConfig.labelFontSize, + rotation: 0, + verticalPos: "middle", + horizontalPos: "right" + })) + }), this.showTick) { + const i = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0); + t.push({ + type: "path", + groupTexts: ["left-axis", "ticks"], + data: this.getTickValues().map((s) => ({ + path: `M ${i},${this.getScaleValue(s)} L ${i - this.axisConfig.tickLength},${this.getScaleValue(s)}`, + strokeFill: this.axisThemeConfig.tickColor, + strokeWidth: this.axisConfig.tickWidth + })) + }); + } + return this.showTitle && t.push({ + type: "text", + groupTexts: ["left-axis", "title"], + data: [ + { + text: this.title, + x: this.boundingRect.x + this.axisConfig.titlePadding, + y: this.boundingRect.y + this.boundingRect.height / 2, + fill: this.axisThemeConfig.titleColor, + fontSize: this.axisConfig.titleFontSize, + rotation: 270, + verticalPos: "top", + horizontalPos: "center" + } + ] + }), t; + } + getDrawableElementsForBottomAxis() { + const t = []; + if (this.showAxisLine) { + const i = this.boundingRect.y + this.axisConfig.axisLineWidth / 2; + t.push({ + type: "path", + groupTexts: ["bottom-axis", "axis-line"], + data: [ + { + path: `M ${this.boundingRect.x},${i} L ${this.boundingRect.x + this.boundingRect.width},${i}`, + strokeFill: this.axisThemeConfig.axisLineColor, + strokeWidth: this.axisConfig.axisLineWidth + } + ] + }); + } + if (this.showLabel && t.push({ + type: "text", + groupTexts: ["bottom-axis", "label"], + data: this.getTickValues().map((i) => ({ + text: i.toString(), + x: this.getScaleValue(i), + y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0), + fill: this.axisThemeConfig.labelColor, + fontSize: this.axisConfig.labelFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + })) + }), this.showTick) { + const i = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0); + t.push({ + type: "path", + groupTexts: ["bottom-axis", "ticks"], + data: this.getTickValues().map((s) => ({ + path: `M ${this.getScaleValue(s)},${i} L ${this.getScaleValue(s)},${i + this.axisConfig.tickLength}`, + strokeFill: this.axisThemeConfig.tickColor, + strokeWidth: this.axisConfig.tickWidth + })) + }); + } + return this.showTitle && t.push({ + type: "text", + groupTexts: ["bottom-axis", "title"], + data: [ + { + text: this.title, + x: this.range[0] + (this.range[1] - this.range[0]) / 2, + y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight, + fill: this.axisThemeConfig.titleColor, + fontSize: this.axisConfig.titleFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + } + ] + }), t; + } + getDrawableElementsForTopAxis() { + const t = []; + if (this.showAxisLine) { + const i = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2; + t.push({ + type: "path", + groupTexts: ["top-axis", "axis-line"], + data: [ + { + path: `M ${this.boundingRect.x},${i} L ${this.boundingRect.x + this.boundingRect.width},${i}`, + strokeFill: this.axisThemeConfig.axisLineColor, + strokeWidth: this.axisConfig.axisLineWidth + } + ] + }); + } + if (this.showLabel && t.push({ + type: "text", + groupTexts: ["top-axis", "label"], + data: this.getTickValues().map((i) => ({ + text: i.toString(), + x: this.getScaleValue(i), + y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding, + fill: this.axisThemeConfig.labelColor, + fontSize: this.axisConfig.labelFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + })) + }), this.showTick) { + const i = this.boundingRect.y; + t.push({ + type: "path", + groupTexts: ["top-axis", "ticks"], + data: this.getTickValues().map((s) => ({ + path: `M ${this.getScaleValue(s)},${i + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(s)},${i + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`, + strokeFill: this.axisThemeConfig.tickColor, + strokeWidth: this.axisConfig.tickWidth + })) + }); + } + return this.showTitle && t.push({ + type: "text", + groupTexts: ["top-axis", "title"], + data: [ + { + text: this.title, + x: this.boundingRect.x + this.boundingRect.width / 2, + y: this.boundingRect.y + this.axisConfig.titlePadding, + fill: this.axisThemeConfig.titleColor, + fontSize: this.axisConfig.titleFontSize, + rotation: 0, + verticalPos: "top", + horizontalPos: "center" + } + ] + }), t; + } + getDrawableElements() { + if (this.axisPosition === "left") + return this.getDrawableElementsForLeftAxis(); + if (this.axisPosition === "right") + throw Error("Drawing of right axis is not implemented"); + return this.axisPosition === "bottom" ? this.getDrawableElementsForBottomAxis() : this.axisPosition === "top" ? this.getDrawableElementsForTopAxis() : []; + } +} +class ii extends Rt { + constructor(t, i, s, n, o) { + super(t, n, o, i), this.categories = s, this.scale = st().domain(this.categories).range(this.getRange()); + } + setRange(t) { + super.setRange(t); + } + recalculateScale() { + this.scale = st().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5), _t.trace("BandAxis axis final categories, range: ", this.categories, this.getRange()); + } + getTickValues() { + return this.categories; + } + getScaleValue(t) { + return this.scale(t) || this.getRange()[0]; + } +} +class ei extends Rt { + constructor(t, i, s, n, o) { + super(t, n, o, i), this.domain = s, this.scale = ft().domain(this.domain).range(this.getRange()); + } + getTickValues() { + return this.scale.ticks(); + } + recalculateScale() { + const t = [...this.domain]; + this.axisPosition === "left" && t.reverse(), this.scale = ft().domain(t).range(this.getRange()); + } + getScaleValue(t) { + return this.scale(t); + } +} +function At(e, t, i, s) { + const n = new kt(s); + return Ct(e) ? new ii( + t, + i, + e.categories, + e.title, + n + ) : new ei( + t, + i, + [e.min, e.max], + e.title, + n + ); +} +class si { + constructor(t, i, s, n) { + this.textDimensionCalculator = t, this.chartConfig = i, this.chartData = s, this.chartThemeConfig = n, this.boundingRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }, this.showChartTitle = !1; + } + setBoundingBoxXY(t) { + this.boundingRect.x = t.x, this.boundingRect.y = t.y; + } + calculateSpace(t) { + const i = this.textDimensionCalculator.getMaxDimension( + [this.chartData.title], + this.chartConfig.titleFontSize + ), s = Math.max(i.width, t.width), n = i.height + 2 * this.chartConfig.titlePadding; + return i.width <= s && i.height <= n && this.chartConfig.showTitle && this.chartData.title && (this.boundingRect.width = s, this.boundingRect.height = n, this.showChartTitle = !0), { + width: this.boundingRect.width, + height: this.boundingRect.height + }; + } + getDrawableElements() { + const t = []; + return this.showChartTitle && t.push({ + groupTexts: ["chart-title"], + type: "text", + data: [ + { + fontSize: this.chartConfig.titleFontSize, + text: this.chartData.title, + verticalPos: "middle", + horizontalPos: "center", + x: this.boundingRect.x + this.boundingRect.width / 2, + y: this.boundingRect.y + this.boundingRect.height / 2, + fill: this.chartThemeConfig.titleColor, + rotation: 0 + } + ] + }), t; + } +} +function ni(e, t, i, s) { + const n = new kt(s); + return new si(n, e, t, i); +} +class ai { + constructor(t, i, s, n, o) { + this.plotData = t, this.xAxis = i, this.yAxis = s, this.orientation = n, this.plotIndex = o; + } + getDrawableElement() { + const t = this.plotData.data.map((s) => [ + this.xAxis.getScaleValue(s[0]), + this.yAxis.getScaleValue(s[1]) + ]); + let i; + return this.orientation === "horizontal" ? i = pt().y((s) => s[0]).x((s) => s[1])(t) : i = pt().x((s) => s[0]).y((s) => s[1])(t), i ? [ + { + groupTexts: ["plot", `line-plot-${this.plotIndex}`], + type: "path", + data: [ + { + path: i, + strokeFill: this.plotData.strokeFill, + strokeWidth: this.plotData.strokeWidth + } + ] + } + ] : []; + } +} +class oi { + constructor(t, i, s, n, o, c) { + this.barData = t, this.boundingRect = i, this.xAxis = s, this.yAxis = n, this.orientation = o, this.plotIndex = c; + } + getDrawableElement() { + const t = this.barData.data.map((o) => [ + this.xAxis.getScaleValue(o[0]), + this.yAxis.getScaleValue(o[1]) + ]), i = 0.05, s = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - i), n = s / 2; + return this.orientation === "horizontal" ? [ + { + groupTexts: ["plot", `bar-plot-${this.plotIndex}`], + type: "rect", + data: t.map((o) => ({ + x: this.boundingRect.x, + y: o[0] - n, + height: s, + width: o[1] - this.boundingRect.x, + fill: this.barData.fill, + strokeWidth: 0, + strokeFill: this.barData.fill + })) + } + ] : [ + { + groupTexts: ["plot", `bar-plot-${this.plotIndex}`], + type: "rect", + data: t.map((o) => ({ + x: o[0] - n, + y: o[1], + width: s, + height: this.boundingRect.y + this.boundingRect.height - o[1], + fill: this.barData.fill, + strokeWidth: 0, + strokeFill: this.barData.fill + })) + } + ]; + } +} +class ri { + constructor(t, i, s) { + this.chartConfig = t, this.chartData = i, this.chartThemeConfig = s, this.boundingRect = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + setAxes(t, i) { + this.xAxis = t, this.yAxis = i; + } + setBoundingBoxXY(t) { + this.boundingRect.x = t.x, this.boundingRect.y = t.y; + } + calculateSpace(t) { + return this.boundingRect.width = t.width, this.boundingRect.height = t.height, { + width: this.boundingRect.width, + height: this.boundingRect.height + }; + } + getDrawableElements() { + if (!(this.xAxis && this.yAxis)) + throw Error("Axes must be passed to render Plots"); + const t = []; + for (const [i, s] of this.chartData.plots.entries()) + switch (s.type) { + case "line": + { + const n = new ai( + s, + this.xAxis, + this.yAxis, + this.chartConfig.chartOrientation, + i + ); + t.push(...n.getDrawableElement()); + } + break; + case "bar": + { + const n = new oi( + s, + this.boundingRect, + this.xAxis, + this.yAxis, + this.chartConfig.chartOrientation, + i + ); + t.push(...n.getDrawableElement()); + } + break; + } + return t; + } +} +function hi(e, t, i) { + return new ri(e, t, i); +} +class li { + constructor(t, i, s, n) { + this.chartConfig = t, this.chartData = i, this.componentStore = { + title: ni(t, i, s, n), + plot: hi(t, i, s), + xAxis: At( + i.xAxis, + t.xAxis, + { + titleColor: s.xAxisTitleColor, + labelColor: s.xAxisLabelColor, + tickColor: s.xAxisTickColor, + axisLineColor: s.xAxisLineColor + }, + n + ), + yAxis: At( + i.yAxis, + t.yAxis, + { + titleColor: s.yAxisTitleColor, + labelColor: s.yAxisLabelColor, + tickColor: s.yAxisTickColor, + axisLineColor: s.yAxisLineColor + }, + n + ) + }; + } + calculateVerticalSpace() { + let t = this.chartConfig.width, i = this.chartConfig.height, s = 0, n = 0, o = Math.floor(t * this.chartConfig.plotReservedSpacePercent / 100), c = Math.floor( + i * this.chartConfig.plotReservedSpacePercent / 100 + ), f = this.componentStore.plot.calculateSpace({ + width: o, + height: c + }); + t -= f.width, i -= f.height, f = this.componentStore.title.calculateSpace({ + width: this.chartConfig.width, + height: i + }), n = f.height, i -= f.height, this.componentStore.xAxis.setAxisPosition("bottom"), f = this.componentStore.xAxis.calculateSpace({ + width: t, + height: i + }), i -= f.height, this.componentStore.yAxis.setAxisPosition("left"), f = this.componentStore.yAxis.calculateSpace({ + width: t, + height: i + }), s = f.width, t -= f.width, t > 0 && (o += t, t = 0), i > 0 && (c += i, i = 0), this.componentStore.plot.calculateSpace({ + width: o, + height: c + }), this.componentStore.plot.setBoundingBoxXY({ x: s, y: n }), this.componentStore.xAxis.setRange([s, s + o]), this.componentStore.xAxis.setBoundingBoxXY({ x: s, y: n + c }), this.componentStore.yAxis.setRange([n, n + c]), this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: n }), this.chartData.plots.some((d) => mt(d)) && this.componentStore.xAxis.recalculateOuterPaddingToDrawBar(); + } + calculateHorizontalSpace() { + let t = this.chartConfig.width, i = this.chartConfig.height, s = 0, n = 0, o = 0, c = Math.floor(t * this.chartConfig.plotReservedSpacePercent / 100), f = Math.floor( + i * this.chartConfig.plotReservedSpacePercent / 100 + ), d = this.componentStore.plot.calculateSpace({ + width: c, + height: f + }); + t -= d.width, i -= d.height, d = this.componentStore.title.calculateSpace({ + width: this.chartConfig.width, + height: i + }), s = d.height, i -= d.height, this.componentStore.xAxis.setAxisPosition("left"), d = this.componentStore.xAxis.calculateSpace({ + width: t, + height: i + }), t -= d.width, n = d.width, this.componentStore.yAxis.setAxisPosition("top"), d = this.componentStore.yAxis.calculateSpace({ + width: t, + height: i + }), i -= d.height, o = s + d.height, t > 0 && (c += t, t = 0), i > 0 && (f += i, i = 0), this.componentStore.plot.calculateSpace({ + width: c, + height: f + }), this.componentStore.plot.setBoundingBoxXY({ x: n, y: o }), this.componentStore.yAxis.setRange([n, n + c]), this.componentStore.yAxis.setBoundingBoxXY({ x: n, y: s }), this.componentStore.xAxis.setRange([o, o + f]), this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: o }), this.chartData.plots.some((R) => mt(R)) && this.componentStore.xAxis.recalculateOuterPaddingToDrawBar(); + } + calculateSpace() { + this.chartConfig.chartOrientation === "horizontal" ? this.calculateHorizontalSpace() : this.calculateVerticalSpace(); + } + getDrawableElement() { + this.calculateSpace(); + const t = []; + this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis); + for (const i of Object.values(this.componentStore)) + t.push(...i.getDrawableElements()); + return t; + } +} +class ci { + static build(t, i, s, n) { + return new li(t, i, s, n).getDrawableElement(); + } +} +let X = 0, Tt, Y = Pt(), H = Dt(), y = Lt(), at = H.plotColorPalette.split(",").map((e) => e.trim()), G = !1, rt = !1; +function Dt() { + const e = zt(), t = ot(); + return wt(e.xyChart, t.themeVariables.xyChart); +} +function Pt() { + const e = ot(); + return wt( + Ft.xyChart, + e.xyChart + ); +} +function Lt() { + return { + yAxis: { + type: "linear", + title: "", + min: 1 / 0, + max: -1 / 0 + }, + xAxis: { + type: "band", + title: "", + categories: [] + }, + title: "", + plots: [] + }; +} +function ht(e) { + const t = ot(); + return Gt(e.trim(), t); +} +function ui(e) { + Tt = e; +} +function gi(e) { + e === "horizontal" ? Y.chartOrientation = "horizontal" : Y.chartOrientation = "vertical"; +} +function xi(e) { + y.xAxis.title = ht(e.text); +} +function Et(e, t) { + y.xAxis = { type: "linear", title: y.xAxis.title, min: e, max: t }, G = !0; +} +function di(e) { + y.xAxis = { + type: "band", + title: y.xAxis.title, + categories: e.map((t) => ht(t.text)) + }, G = !0; +} +function fi(e) { + y.yAxis.title = ht(e.text); +} +function pi(e, t) { + y.yAxis = { type: "linear", title: y.yAxis.title, min: e, max: t }, rt = !0; +} +function mi(e) { + const t = Math.min(...e), i = Math.max(...e), s = N(y.yAxis) ? y.yAxis.min : 1 / 0, n = N(y.yAxis) ? y.yAxis.max : -1 / 0; + y.yAxis = { + type: "linear", + title: y.yAxis.title, + min: Math.min(s, t), + max: Math.max(n, i) + }; +} +function vt(e) { + let t = []; + if (e.length === 0) + return t; + if (!G) { + const i = N(y.xAxis) ? y.xAxis.min : 1 / 0, s = N(y.xAxis) ? y.xAxis.max : -1 / 0; + Et(Math.min(i, 1), Math.max(s, e.length)); + } + if (rt || mi(e), Ct(y.xAxis) && (t = y.xAxis.categories.map((i, s) => [i, e[s]])), N(y.xAxis)) { + const i = y.xAxis.min, s = y.xAxis.max, n = (s - i + 1) / e.length, o = []; + for (let c = i; c <= s; c += n) + o.push(`${c}`); + t = o.map((c, f) => [c, e[f]]); + } + return t; +} +function Mt(e) { + return at[e === 0 ? 0 : e % at.length]; +} +function yi(e, t) { + const i = vt(t); + y.plots.push({ + type: "line", + strokeFill: Mt(X), + strokeWidth: 2, + data: i + }), X++; +} +function bi(e, t) { + const i = vt(t); + y.plots.push({ + type: "bar", + fill: Mt(X), + data: i + }), X++; +} +function Ai() { + if (y.plots.length === 0) + throw Error("No Plot to render, please provide a plot with some data"); + return y.title = St(), ci.build(Y, y, H, Tt); +} +function wi() { + return H; +} +function Si() { + return Y; +} +const _i = function() { + Ut(), X = 0, Y = Pt(), y = Lt(), H = Dt(), at = H.plotColorPalette.split(",").map((e) => e.trim()), G = !1, rt = !1; +}, Ci = { + getDrawableElem: Ai, + clear: _i, + setAccTitle: Nt, + getAccTitle: Xt, + setDiagramTitle: Yt, + getDiagramTitle: St, + getAccDescription: Ht, + setAccDescription: $t, + setOrientation: gi, + setXAxisTitle: xi, + setXAxisRangeData: Et, + setXAxisBand: di, + setYAxisTitle: fi, + setYAxisRangeData: pi, + setLineData: yi, + setBarData: bi, + setTmpSVGG: ui, + getChartThemeConfig: wi, + getChartConfig: Si +}, ki = (e, t, i, s) => { + const n = s.db, o = n.getChartThemeConfig(), c = n.getChartConfig(); + function f(p) { + return p === "top" ? "text-before-edge" : "middle"; + } + function d(p) { + return p === "left" ? "start" : p === "right" ? "end" : "middle"; + } + function R(p) { + return `translate(${p.x}, ${p.y}) rotate(${p.rotation || 0})`; + } + _t.debug(`Rendering xychart chart +` + e); + const C = qt(t), A = C.append("g").attr("class", "main"), m = A.append("rect").attr("width", c.width).attr("height", c.height).attr("class", "background"); + jt(C, c.height, c.width, !0), C.attr("viewBox", `0 0 ${c.width} ${c.height}`), m.attr("fill", o.backgroundColor), n.setTmpSVGG(C.append("g").attr("class", "mermaid-tmp-group")); + const T = n.getDrawableElem(), S = {}; + function P(p) { + let _ = A, h = ""; + for (const [L] of p.entries()) { + let z = A; + L > 0 && S[h] && (z = S[h]), h += p[L], _ = S[h], _ || (_ = S[h] = z.append("g").attr("class", p[L])); + } + return _; + } + for (const p of T) { + if (p.data.length === 0) + continue; + const _ = P(p.groupTexts); + switch (p.type) { + case "rect": + _.selectAll("rect").data(p.data).enter().append("rect").attr("x", (h) => h.x).attr("y", (h) => h.y).attr("width", (h) => h.width).attr("height", (h) => h.height).attr("fill", (h) => h.fill).attr("stroke", (h) => h.strokeFill).attr("stroke-width", (h) => h.strokeWidth); + break; + case "text": + _.selectAll("text").data(p.data).enter().append("text").attr("x", 0).attr("y", 0).attr("fill", (h) => h.fill).attr("font-size", (h) => h.fontSize).attr("dominant-baseline", (h) => f(h.verticalPos)).attr("text-anchor", (h) => d(h.horizontalPos)).attr("transform", (h) => R(h)).text((h) => h.text); + break; + case "path": + _.selectAll("path").data(p.data).enter().append("path").attr("d", (h) => h.path).attr("fill", (h) => h.fill ? h.fill : "none").attr("stroke", (h) => h.strokeFill).attr("stroke-width", (h) => h.strokeWidth); + break; + } + } +}, Ri = { + draw: ki +}, Vi = { + parser: ti, + db: Ci, + renderer: Ri +}; +export { + Vi as diagram +}; diff --git a/client/packages/lowcoder/public/package/79929275.js b/client/packages/lowcoder/public/package/79929275.js new file mode 100644 index 000000000..9ca59e7aa --- /dev/null +++ b/client/packages/lowcoder/public/package/79929275.js @@ -0,0 +1,25 @@ +import { p as e, f as o } from "./18068d52.js"; +import { f as t, g as a } from "./0c155f84.js"; +import { x as i } from "./08856db2.js"; +import "./4504d077.js"; +import "./666097a3.js"; +import "./7ca39633.js"; +import "./289514c9.js"; +import "./691304fa.js"; +import "./f69b998c.js"; +import "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +import "./85051678.js"; +const M = { + parser: e, + db: o, + renderer: t, + styles: a, + init: (r) => { + r.flowchart || (r.flowchart = {}), r.flowchart.arrowMarkerAbsolute = r.arrowMarkerAbsolute, i({ flowchart: { arrowMarkerAbsolute: r.arrowMarkerAbsolute } }), t.setConf(r.flowchart), o.clear(), o.setGen("gen-2"); + } +}; +export { + M as diagram +}; diff --git a/client/packages/lowcoder/public/package/7ca39633.js b/client/packages/lowcoder/public/package/7ca39633.js new file mode 100644 index 000000000..2f0a619f8 --- /dev/null +++ b/client/packages/lowcoder/public/package/7ca39633.js @@ -0,0 +1,391 @@ +var X = (n, t, e) => new Promise((r, i) => { + var a = (l) => { + try { + d(e.next(l)); + } catch (h) { + i(h); + } + }, u = (l) => { + try { + d(e.throw(l)); + } catch (h) { + i(h); + } + }, d = (l) => l.done ? r(l.value) : Promise.resolve(l.value).then(a, u); + d((e = e.apply(n, t)).next()); +}); +import { i as N, G as H } from "./4504d077.js"; +import { m as J, l as V } from "./666097a3.js"; +import { c as U } from "./289514c9.js"; +import { i as W, u as _, s as q, a as z, b as K, g as T, p as $, c as Q, d as Y, e as Z, f as I, h as L, j as D } from "./691304fa.js"; +import { l as s, e as O, r as B, j as R } from "./08856db2.js"; +import { a as tt } from "./f69b998c.js"; +function m(n) { + var t = { + options: { + directed: n.isDirected(), + multigraph: n.isMultigraph(), + compound: n.isCompound() + }, + nodes: et(n), + edges: nt(n) + }; + return N(n.graph()) || (t.value = U(n.graph())), t; +} +function et(n) { + return J(n.nodes(), function(t) { + var e = n.node(t), r = n.parent(t), i = { v: t }; + return N(e) || (i.value = e), N(r) || (i.parent = r), i; + }); +} +function nt(n) { + return J(n.edges(), function(t) { + var e = n.edge(t), r = { v: t.v, w: t.w }; + return N(t.name) || (r.name = t.name), N(e) || (r.value = e), r; + }); +} +let f = {}, g = {}, P = {}; +const it = () => { + g = {}, P = {}, f = {}; +}, p = (n, t) => (s.trace("In isDescendant", t, " ", n, " = ", g[t].includes(n)), !!g[t].includes(n)), st = (n, t) => (s.info("Descendants of ", t, " is ", g[t]), s.info("Edge is ", n), n.v === t || n.w === t ? !1 : g[t] ? g[t].includes(n.v) || p(n.v, t) || p(n.w, t) || g[t].includes(n.w) : (s.debug("Tilt, ", t, ",not in descendants"), !1)), k = (n, t, e, r) => { + s.warn( + "Copying children of ", + n, + "root", + r, + "data", + t.node(n), + r + ); + const i = t.children(n) || []; + n !== r && i.push(n), s.warn("Copying (nodes) clusterId", n, "nodes", i), i.forEach((a) => { + if (t.children(a).length > 0) + k(a, t, e, r); + else { + const u = t.node(a); + s.info("cp ", a, " to ", r, " with parent ", n), e.setNode(a, u), r !== t.parent(a) && (s.warn("Setting parent", a, t.parent(a)), e.setParent(a, t.parent(a))), n !== r && a !== n ? (s.debug("Setting parent", a, n), e.setParent(a, n)) : (s.info("In copy ", n, "root", r, "data", t.node(n), r), s.debug( + "Not Setting parent for node=", + a, + "cluster!==rootId", + n !== r, + "node!==clusterId", + a !== n + )); + const d = t.edges(a); + s.debug("Copying Edges", d), d.forEach((l) => { + s.info("Edge", l); + const h = t.edge(l.v, l.w, l.name); + s.info("Edge data", h, r); + try { + st(l, r) ? (s.info("Copying as ", l.v, l.w, h, l.name), e.setEdge(l.v, l.w, h, l.name), s.info("newGraph edges ", e.edges(), e.edge(e.edges()[0]))) : s.info( + "Skipping copy of edge ", + l.v, + "-->", + l.w, + " rootId: ", + r, + " clusterId:", + n + ); + } catch (w) { + s.error(w); + } + }); + } + s.debug("Removing node", a), t.removeNode(a); + }); +}, F = (n, t) => { + const e = t.children(n); + let r = [...e]; + for (const i of e) + P[i] = n, r = [...r, ...F(i, t)]; + return r; +}, C = (n, t) => { + s.trace("Searching", n); + const e = t.children(n); + if (s.trace("Searching children of id ", n, e), e.length < 1) + return s.trace("This is a valid node", n), n; + for (const r of e) { + const i = C(r, t); + if (i) + return s.trace("Found replacement for", n, " => ", i), i; + } +}, S = (n) => !f[n] || !f[n].externalConnections ? n : f[n] ? f[n].id : n, rt = (n, t) => { + if (!n || t > 10) { + s.debug("Opting out, no graph "); + return; + } else + s.debug("Opting in, graph "); + n.nodes().forEach(function(e) { + n.children(e).length > 0 && (s.warn( + "Cluster identified", + e, + " Replacement id in edges: ", + C(e, n) + ), g[e] = F(e, n), f[e] = { id: C(e, n), clusterData: n.node(e) }); + }), n.nodes().forEach(function(e) { + const r = n.children(e), i = n.edges(); + r.length > 0 ? (s.debug("Cluster identified", e, g), i.forEach((a) => { + if (a.v !== e && a.w !== e) { + const u = p(a.v, e), d = p(a.w, e); + u ^ d && (s.warn("Edge: ", a, " leaves cluster ", e), s.warn("Descendants of XXX ", e, ": ", g[e]), f[e].externalConnections = !0); + } + })) : s.debug("Not a cluster ", e, g); + }); + for (let e of Object.keys(f)) { + const r = f[e].id, i = n.parent(r); + i !== e && f[i] && !f[i].externalConnections && (f[e].id = i); + } + n.edges().forEach(function(e) { + const r = n.edge(e); + s.warn("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e)), s.warn("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(n.edge(e))); + let i = e.v, a = e.w; + if (s.warn( + "Fix XXX", + f, + "ids:", + e.v, + e.w, + "Translating: ", + f[e.v], + " --- ", + f[e.w] + ), f[e.v] && f[e.w] && f[e.v] === f[e.w]) { + s.warn("Fixing and trixing link to self - removing XXX", e.v, e.w, e.name), s.warn("Fixing and trixing - removing XXX", e.v, e.w, e.name), i = S(e.v), a = S(e.w), n.removeEdge(e.v, e.w, e.name); + const u = e.w + "---" + e.v; + n.setNode(u, { + domId: u, + id: u, + labelStyle: "", + labelText: r.label, + padding: 0, + shape: "labelRect", + style: "" + }); + const d = structuredClone(r), l = structuredClone(r); + d.label = "", d.arrowTypeEnd = "none", l.label = "", d.fromCluster = e.v, l.toCluster = e.v, n.setEdge(i, u, d, e.name + "-cyclic-special"), n.setEdge(u, a, l, e.name + "-cyclic-special"); + } else if (f[e.v] || f[e.w]) { + if (s.warn("Fixing and trixing - removing XXX", e.v, e.w, e.name), i = S(e.v), a = S(e.w), n.removeEdge(e.v, e.w, e.name), i !== e.v) { + const u = n.parent(i); + f[u].externalConnections = !0, r.fromCluster = e.v; + } + if (a !== e.w) { + const u = n.parent(a); + f[u].externalConnections = !0, r.toCluster = e.w; + } + s.warn("Fix Replacing with XXX", i, a, e.name), n.setEdge(i, a, r, e.name); + } + }), s.warn("Adjusted Graph", m(n)), G(n, 0), s.trace(f); +}, G = (n, t) => { + if (s.warn("extractor - ", t, m(n), n.children("D")), t > 10) { + s.error("Bailing out"); + return; + } + let e = n.nodes(), r = !1; + for (const i of e) { + const a = n.children(i); + r = r || a.length > 0; + } + if (!r) { + s.debug("Done, no node has children", n.nodes()); + return; + } + s.debug("Nodes = ", e, t); + for (const i of e) + if (s.debug( + "Extracting node", + i, + f, + f[i] && !f[i].externalConnections, + !n.parent(i), + n.node(i), + n.children("D"), + " Depth ", + t + ), !f[i]) + s.debug("Not a cluster", i, t); + else if (!f[i].externalConnections && // !graph.parent(node) && + n.children(i) && n.children(i).length > 0) { + s.warn( + "Cluster without external connections, without a parent and with children", + i, + t + ); + let u = n.graph().rankdir === "TB" ? "LR" : "TB"; + f[i] && f[i].clusterData && f[i].clusterData.dir && (u = f[i].clusterData.dir, s.warn("Fixing dir", f[i].clusterData.dir, u)); + const d = new H({ + multigraph: !0, + compound: !0 + }).setGraph({ + rankdir: u, + // Todo: set proper spacing + nodesep: 50, + ranksep: 50, + marginx: 8, + marginy: 8 + }).setDefaultEdgeLabel(function() { + return {}; + }); + s.warn("Old graph before copy", m(n)), k(i, n, d, i), n.setNode(i, { + clusterNode: !0, + id: i, + clusterData: f[i].clusterData, + labelText: f[i].labelText, + graph: d + }), s.warn("New graph after copy node: (", i, ")", m(d)), s.debug("Old graph after copy", m(n)); + } else + s.warn( + "Cluster ** ", + i, + " **not meeting the criteria !externalConnections:", + !f[i].externalConnections, + " no parent: ", + !n.parent(i), + " children ", + n.children(i) && n.children(i).length > 0, + n.children("D"), + t + ), s.debug(f); + e = n.nodes(), s.warn("New list of nodes", e); + for (const i of e) { + const a = n.node(i); + s.warn(" Now next level", i, a), a.clusterNode && G(a.graph, t + 1); + } +}, j = (n, t) => { + if (t.length === 0) + return []; + let e = Object.assign(t); + return t.forEach((r) => { + const i = n.children(r), a = j(n, i); + e = [...e, ...a]; + }), e; +}, at = (n) => j(n, n.children()), ct = (n, t) => { + s.info("Creating subgraph rect for ", t.id, t); + const e = O(), r = n.insert("g").attr("class", "cluster" + (t.class ? " " + t.class : "")).attr("id", t.id), i = r.insert("rect", ":first-child"), a = B(e.flowchart.htmlLabels), u = r.insert("g").attr("class", "cluster-label"), d = t.labelType === "markdown" ? tt(u, t.labelText, { style: t.labelStyle, useHtmlLabels: a }) : u.node().appendChild(L(t.labelText, t.labelStyle, void 0, !0)); + let l = d.getBBox(); + if (B(e.flowchart.htmlLabels)) { + const c = d.children[0], o = R(d); + l = c.getBoundingClientRect(), o.attr("width", l.width), o.attr("height", l.height); + } + const h = 0 * t.padding, w = h / 2, x = t.width <= l.width + h ? l.width + h : t.width; + t.width <= l.width + h ? t.diff = (l.width - t.width) / 2 - t.padding / 2 : t.diff = -t.padding / 2, s.trace("Data ", t, JSON.stringify(t)), i.attr("style", t.style).attr("rx", t.rx).attr("ry", t.ry).attr("x", t.x - x / 2).attr("y", t.y - t.height / 2 - w).attr("width", x).attr("height", t.height + h); + const { subGraphTitleTopMargin: v } = T(e); + a ? u.attr( + "transform", + // This puts the label on top of the box instead of inside it + `translate(${t.x - l.width / 2}, ${t.y - t.height / 2 + v})` + ) : u.attr( + "transform", + // This puts the label on top of the box instead of inside it + `translate(${t.x}, ${t.y - t.height / 2 + v})` + ); + const y = i.node().getBBox(); + return t.width = y.width, t.height = y.height, t.intersect = function(c) { + return D(t, c); + }, r; +}, ot = (n, t) => { + const e = n.insert("g").attr("class", "note-cluster").attr("id", t.id), r = e.insert("rect", ":first-child"), i = 0 * t.padding, a = i / 2; + r.attr("rx", t.rx).attr("ry", t.ry).attr("x", t.x - t.width / 2 - a).attr("y", t.y - t.height / 2 - a).attr("width", t.width + i).attr("height", t.height + i).attr("fill", "none"); + const u = r.node().getBBox(); + return t.width = u.width, t.height = u.height, t.intersect = function(d) { + return D(t, d); + }, e; +}, lt = (n, t) => { + const e = O(), r = n.insert("g").attr("class", t.classes).attr("id", t.id), i = r.insert("rect", ":first-child"), a = r.insert("g").attr("class", "cluster-label"), u = r.append("rect"), d = a.node().appendChild(L(t.labelText, t.labelStyle, void 0, !0)); + let l = d.getBBox(); + if (B(e.flowchart.htmlLabels)) { + const c = d.children[0], o = R(d); + l = c.getBoundingClientRect(), o.attr("width", l.width), o.attr("height", l.height); + } + l = d.getBBox(); + const h = 0 * t.padding, w = h / 2, x = t.width <= l.width + t.padding ? l.width + t.padding : t.width; + t.width <= l.width + t.padding ? t.diff = (l.width + t.padding * 0 - t.width) / 2 : t.diff = -t.padding / 2, i.attr("class", "outer").attr("x", t.x - x / 2 - w).attr("y", t.y - t.height / 2 - w).attr("width", x + h).attr("height", t.height + h), u.attr("class", "inner").attr("x", t.x - x / 2 - w).attr("y", t.y - t.height / 2 - w + l.height - 1).attr("width", x + h).attr("height", t.height + h - l.height - 3); + const { subGraphTitleTopMargin: v } = T(e); + a.attr( + "transform", + `translate(${t.x - l.width / 2}, ${t.y - t.height / 2 - t.padding / 3 + (B(e.flowchart.htmlLabels) ? 5 : 3) + v})` + ); + const y = i.node().getBBox(); + return t.height = y.height, t.intersect = function(c) { + return D(t, c); + }, r; +}, ft = (n, t) => { + const e = n.insert("g").attr("class", t.classes).attr("id", t.id), r = e.insert("rect", ":first-child"), i = 0 * t.padding, a = i / 2; + r.attr("class", "divider").attr("x", t.x - t.width / 2 - a).attr("y", t.y - t.height / 2).attr("width", t.width + i).attr("height", t.height + i); + const u = r.node().getBBox(); + return t.width = u.width, t.height = u.height, t.diff = -t.padding / 2, t.intersect = function(d) { + return D(t, d); + }, e; +}, dt = { rect: ct, roundedWithTitle: lt, noteGroup: ot, divider: ft }; +let M = {}; +const ut = (n, t) => { + s.trace("Inserting cluster"); + const e = t.shape || "rect"; + M[t.id] = dt[e](n, t); +}, ht = () => { + M = {}; +}, A = (n, t, e, r, i, a) => X(void 0, null, function* () { + s.info("Graph in recursive render: XXX", m(t), i); + const u = t.graph().rankdir; + s.trace("Dir in recursive render - dir:", u); + const d = n.insert("g").attr("class", "root"); + t.nodes() ? s.info("Recursive render XXX", t.nodes()) : s.info("No nodes found for", t), t.edges().length > 0 && s.trace("Recursive edges", t.edge(t.edges()[0])); + const l = d.insert("g").attr("class", "clusters"), h = d.insert("g").attr("class", "edgePaths"), w = d.insert("g").attr("class", "edgeLabels"), x = d.insert("g").attr("class", "nodes"); + yield Promise.all( + t.nodes().map(function(c) { + return X(this, null, function* () { + const o = t.node(c); + if (i !== void 0) { + const b = JSON.parse(JSON.stringify(i.clusterData)); + s.info("Setting data for cluster XXX (", c, ") ", b, i), t.setNode(i.id, b), t.parent(c) || (s.trace("Setting parent", c, i.id), t.setParent(c, i.id, b)); + } + if (s.info("(Insert) Node XXX" + c + ": " + JSON.stringify(t.node(c))), o && o.clusterNode) { + s.info("Cluster identified", c, o.width, t.node(c)); + const b = yield A( + x, + o.graph, + e, + r, + t.node(c), + a + ), E = b.elem; + _(o, E), o.diff = b.diff || 0, s.info("Node bounds (abc123)", c, o, o.width, o.x, o.y), q(E, o), s.warn("Recursive render complete ", E, o); + } else + t.children(c).length > 0 ? (s.info("Cluster - the non recursive path XXX", c, o.id, o, t), s.info(C(o.id, t)), f[o.id] = { id: C(o.id, t), node: o }) : (s.info("Node - the non recursive path", c, o.id, o), yield z(x, t.node(c), u)); + }); + }) + ), t.edges().forEach(function(c) { + const o = t.edge(c.v, c.w, c.name); + s.info("Edge " + c.v + " -> " + c.w + ": " + JSON.stringify(c)), s.info("Edge " + c.v + " -> " + c.w + ": ", c, " ", JSON.stringify(t.edge(c))), s.info("Fix", f, "ids:", c.v, c.w, "Translating: ", f[c.v], f[c.w]), K(w, o); + }), t.edges().forEach(function(c) { + s.info("Edge " + c.v + " -> " + c.w + ": " + JSON.stringify(c)); + }), s.info("#############################################"), s.info("### Layout ###"), s.info("#############################################"), s.info(t), V(t), s.info("Graph after layout:", m(t)); + let v = 0; + const { subGraphTitleTotalMargin: y } = T(a); + return at(t).forEach(function(c) { + const o = t.node(c); + s.info("Position " + c + ": " + JSON.stringify(t.node(c))), s.info( + "Position " + c + ": (" + o.x, + "," + o.y, + ") width: ", + o.width, + " height: ", + o.height + ), o && o.clusterNode ? (o.y += y, $(o)) : t.children(c).length > 0 ? (o.height += y, ut(l, o), f[o.id].node = o) : (o.y += y / 2, $(o)); + }), t.edges().forEach(function(c) { + const o = t.edge(c); + s.info("Edge " + c.v + " -> " + c.w + ": " + JSON.stringify(o), o), o.points.forEach((E) => E.y += y / 2); + const b = Q(h, c, o, f, e, t, r); + Y(o, b); + }), t.nodes().forEach(function(c) { + const o = t.node(c); + s.info(c, o.type, o.diff), o.type === "group" && (v = o.diff); + }), { elem: d, diff: v }; +}), Et = (n, t, e, r, i) => X(void 0, null, function* () { + W(n, e, r, i), Z(), I(), ht(), it(), s.warn("Graph at first:", JSON.stringify(m(t))), rt(t), s.warn("Graph after:", JSON.stringify(m(t))); + const a = O(); + yield A(n, t, r, i, void 0, a); +}); +export { + Et as r +}; diff --git a/client/packages/lowcoder/public/package/85051678.js b/client/packages/lowcoder/public/package/85051678.js new file mode 100644 index 000000000..2ae649643 --- /dev/null +++ b/client/packages/lowcoder/public/package/85051678.js @@ -0,0 +1,5 @@ +import { aI as o, aJ as r } from "./08856db2.js"; +const s = (a, n) => o.lang.round(r.parse(a)[n]), e = s; +export { + e as c +}; diff --git a/client/packages/lowcoder/public/package/888e22ae.js b/client/packages/lowcoder/public/package/888e22ae.js new file mode 100644 index 000000000..c729a1a29 --- /dev/null +++ b/client/packages/lowcoder/public/package/888e22ae.js @@ -0,0 +1,960 @@ +import { e as Y, a as Ut, s as zt, b as Mt, d as Ht, F as Xt, G as Kt, l as D, m as ot, H as Wt, a7 as Jt } from "./08856db2.js"; +var gt = function() { + var t = function(C, r, n, i) { + for (n = n || {}, i = C.length; i--; n[C[i]] = r) + ; + return n; + }, s = [1, 2], a = [1, 3], h = [1, 4], f = [2, 4], d = [1, 9], y = [1, 11], k = [1, 15], u = [1, 16], E = [1, 17], T = [1, 18], R = [1, 30], G = [1, 19], j = [1, 20], U = [1, 21], z = [1, 22], M = [1, 23], H = [1, 25], X = [1, 26], K = [1, 27], W = [1, 28], J = [1, 29], q = [1, 32], Q = [1, 33], Z = [1, 34], tt = [1, 35], w = [1, 31], c = [1, 4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], et = [1, 4, 5, 13, 14, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], Dt = [4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], ht = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, SPACE: 4, NL: 5, SD: 6, document: 7, line: 8, statement: 9, classDefStatement: 10, cssClassStatement: 11, idStatement: 12, DESCR: 13, "-->": 14, HIDE_EMPTY: 15, scale: 16, WIDTH: 17, COMPOSIT_STATE: 18, STRUCT_START: 19, STRUCT_STOP: 20, STATE_DESCR: 21, AS: 22, ID: 23, FORK: 24, JOIN: 25, CHOICE: 26, CONCURRENT: 27, note: 28, notePosition: 29, NOTE_TEXT: 30, direction: 31, acc_title: 32, acc_title_value: 33, acc_descr: 34, acc_descr_value: 35, acc_descr_multiline_value: 36, classDef: 37, CLASSDEF_ID: 38, CLASSDEF_STYLEOPTS: 39, DEFAULT: 40, class: 41, CLASSENTITY_IDS: 42, STYLECLASS: 43, direction_tb: 44, direction_bt: 45, direction_rl: 46, direction_lr: 47, eol: 48, ";": 49, EDGE_STATE: 50, STYLE_SEPARATOR: 51, left_of: 52, right_of: 53, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "SPACE", 5: "NL", 6: "SD", 13: "DESCR", 14: "-->", 15: "HIDE_EMPTY", 16: "scale", 17: "WIDTH", 18: "COMPOSIT_STATE", 19: "STRUCT_START", 20: "STRUCT_STOP", 21: "STATE_DESCR", 22: "AS", 23: "ID", 24: "FORK", 25: "JOIN", 26: "CHOICE", 27: "CONCURRENT", 28: "note", 30: "NOTE_TEXT", 32: "acc_title", 33: "acc_title_value", 34: "acc_descr", 35: "acc_descr_value", 36: "acc_descr_multiline_value", 37: "classDef", 38: "CLASSDEF_ID", 39: "CLASSDEF_STYLEOPTS", 40: "DEFAULT", 41: "class", 42: "CLASSENTITY_IDS", 43: "STYLECLASS", 44: "direction_tb", 45: "direction_bt", 46: "direction_rl", 47: "direction_lr", 49: ";", 50: "EDGE_STATE", 51: "STYLE_SEPARATOR", 52: "left_of", 53: "right_of" }, + productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 3], [9, 4], [9, 1], [9, 2], [9, 1], [9, 4], [9, 3], [9, 6], [9, 1], [9, 1], [9, 1], [9, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [10, 3], [10, 3], [11, 3], [31, 1], [31, 1], [31, 1], [31, 1], [48, 1], [48, 1], [12, 1], [12, 1], [12, 3], [12, 3], [29, 1], [29, 1]], + performAction: function(r, n, i, o, p, e, $) { + var l = e.length - 1; + switch (p) { + case 3: + return o.setRootDoc(e[l]), e[l]; + case 4: + this.$ = []; + break; + case 5: + e[l] != "nl" && (e[l - 1].push(e[l]), this.$ = e[l - 1]); + break; + case 6: + case 7: + this.$ = e[l]; + break; + case 8: + this.$ = "nl"; + break; + case 11: + this.$ = e[l]; + break; + case 12: + const B = e[l - 1]; + B.description = o.trimColon(e[l]), this.$ = B; + break; + case 13: + this.$ = { stmt: "relation", state1: e[l - 2], state2: e[l] }; + break; + case 14: + const ft = o.trimColon(e[l]); + this.$ = { stmt: "relation", state1: e[l - 3], state2: e[l - 1], description: ft }; + break; + case 18: + this.$ = { stmt: "state", id: e[l - 3], type: "default", description: "", doc: e[l - 1] }; + break; + case 19: + var v = e[l], O = e[l - 2].trim(); + if (e[l].match(":")) { + var st = e[l].split(":"); + v = st[0], O = [O, st[1]]; + } + this.$ = { stmt: "state", id: v, type: "default", description: O }; + break; + case 20: + this.$ = { stmt: "state", id: e[l - 3], type: "default", description: e[l - 5], doc: e[l - 1] }; + break; + case 21: + this.$ = { stmt: "state", id: e[l], type: "fork" }; + break; + case 22: + this.$ = { stmt: "state", id: e[l], type: "join" }; + break; + case 23: + this.$ = { stmt: "state", id: e[l], type: "choice" }; + break; + case 24: + this.$ = { stmt: "state", id: o.getDividerId(), type: "divider" }; + break; + case 25: + this.$ = { stmt: "state", id: e[l - 1].trim(), note: { position: e[l - 2].trim(), text: e[l].trim() } }; + break; + case 28: + this.$ = e[l].trim(), o.setAccTitle(this.$); + break; + case 29: + case 30: + this.$ = e[l].trim(), o.setAccDescription(this.$); + break; + case 31: + case 32: + this.$ = { stmt: "classDef", id: e[l - 1].trim(), classes: e[l].trim() }; + break; + case 33: + this.$ = { stmt: "applyClass", id: e[l - 1].trim(), styleClass: e[l].trim() }; + break; + case 34: + o.setDirection("TB"), this.$ = { stmt: "dir", value: "TB" }; + break; + case 35: + o.setDirection("BT"), this.$ = { stmt: "dir", value: "BT" }; + break; + case 36: + o.setDirection("RL"), this.$ = { stmt: "dir", value: "RL" }; + break; + case 37: + o.setDirection("LR"), this.$ = { stmt: "dir", value: "LR" }; + break; + case 40: + case 41: + this.$ = { stmt: "state", id: e[l].trim(), type: "default", description: "" }; + break; + case 42: + this.$ = { stmt: "state", id: e[l - 2].trim(), classes: [e[l].trim()], type: "default", description: "" }; + break; + case 43: + this.$ = { stmt: "state", id: e[l - 2].trim(), classes: [e[l].trim()], type: "default", description: "" }; + break; + } + }, + table: [{ 3: 1, 4: s, 5: a, 6: h }, { 1: [3] }, { 3: 5, 4: s, 5: a, 6: h }, { 3: 6, 4: s, 5: a, 6: h }, t([1, 4, 5, 15, 16, 18, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], f, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: d, 5: y, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: k, 16: u, 18: E, 21: T, 23: R, 24: G, 25: j, 26: U, 27: z, 28: M, 31: 24, 32: H, 34: X, 36: K, 37: W, 41: J, 44: q, 45: Q, 46: Z, 47: tt, 50: w }, t(c, [2, 5]), { 9: 36, 10: 12, 11: 13, 12: 14, 15: k, 16: u, 18: E, 21: T, 23: R, 24: G, 25: j, 26: U, 27: z, 28: M, 31: 24, 32: H, 34: X, 36: K, 37: W, 41: J, 44: q, 45: Q, 46: Z, 47: tt, 50: w }, t(c, [2, 7]), t(c, [2, 8]), t(c, [2, 9]), t(c, [2, 10]), t(c, [2, 11], { 13: [1, 37], 14: [1, 38] }), t(c, [2, 15]), { 17: [1, 39] }, t(c, [2, 17], { 19: [1, 40] }), { 22: [1, 41] }, t(c, [2, 21]), t(c, [2, 22]), t(c, [2, 23]), t(c, [2, 24]), { 29: 42, 30: [1, 43], 52: [1, 44], 53: [1, 45] }, t(c, [2, 27]), { 33: [1, 46] }, { 35: [1, 47] }, t(c, [2, 30]), { 38: [1, 48], 40: [1, 49] }, { 42: [1, 50] }, t(et, [2, 40], { 51: [1, 51] }), t(et, [2, 41], { 51: [1, 52] }), t(c, [2, 34]), t(c, [2, 35]), t(c, [2, 36]), t(c, [2, 37]), t(c, [2, 6]), t(c, [2, 12]), { 12: 53, 23: R, 50: w }, t(c, [2, 16]), t(Dt, f, { 7: 54 }), { 23: [1, 55] }, { 23: [1, 56] }, { 22: [1, 57] }, { 23: [2, 44] }, { 23: [2, 45] }, t(c, [2, 28]), t(c, [2, 29]), { 39: [1, 58] }, { 39: [1, 59] }, { 43: [1, 60] }, { 23: [1, 61] }, { 23: [1, 62] }, t(c, [2, 13], { 13: [1, 63] }), { 4: d, 5: y, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: k, 16: u, 18: E, 20: [1, 64], 21: T, 23: R, 24: G, 25: j, 26: U, 27: z, 28: M, 31: 24, 32: H, 34: X, 36: K, 37: W, 41: J, 44: q, 45: Q, 46: Z, 47: tt, 50: w }, t(c, [2, 19], { 19: [1, 65] }), { 30: [1, 66] }, { 23: [1, 67] }, t(c, [2, 31]), t(c, [2, 32]), t(c, [2, 33]), t(et, [2, 42]), t(et, [2, 43]), t(c, [2, 14]), t(c, [2, 18]), t(Dt, f, { 7: 68 }), t(c, [2, 25]), t(c, [2, 26]), { 4: d, 5: y, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: k, 16: u, 18: E, 20: [1, 69], 21: T, 23: R, 24: G, 25: j, 26: U, 27: z, 28: M, 31: 24, 32: H, 34: X, 36: K, 37: W, 41: J, 44: q, 45: Q, 46: Z, 47: tt, 50: w }, t(c, [2, 20])], + defaultActions: { 5: [2, 1], 6: [2, 2], 44: [2, 44], 45: [2, 45] }, + parseError: function(r, n) { + if (n.recoverable) + this.trace(r); + else { + var i = new Error(r); + throw i.hash = n, i; + } + }, + parse: function(r) { + var n = this, i = [0], o = [], p = [null], e = [], $ = this.table, l = "", v = 0, O = 0, st = 2, B = 1, ft = e.slice.call(arguments, 1), S = Object.create(this.lexer), A = { yy: {} }; + for (var dt in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, dt) && (A.yy[dt] = this.yy[dt]); + S.setInput(r, A.yy), A.yy.lexer = S, A.yy.parser = this, typeof S.yylloc == "undefined" && (S.yylloc = {}); + var yt = S.yylloc; + e.push(yt); + var Gt = S.options && S.options.ranges; + typeof A.yy.parseError == "function" ? this.parseError = A.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function jt() { + var x; + return x = o.pop() || S.lex() || B, typeof x != "number" && (x instanceof Array && (o = x, x = o.pop()), x = n.symbols_[x] || x), x; + } + for (var _, L, m, pt, N = {}, it, b, Ct, rt; ; ) { + if (L = i[i.length - 1], this.defaultActions[L] ? m = this.defaultActions[L] : ((_ === null || typeof _ == "undefined") && (_ = jt()), m = $[L] && $[L][_]), typeof m == "undefined" || !m.length || !m[0]) { + var St = ""; + rt = []; + for (it in $[L]) + this.terminals_[it] && it > st && rt.push("'" + this.terminals_[it] + "'"); + S.showPosition ? St = "Parse error on line " + (v + 1) + `: +` + S.showPosition() + ` +Expecting ` + rt.join(", ") + ", got '" + (this.terminals_[_] || _) + "'" : St = "Parse error on line " + (v + 1) + ": Unexpected " + (_ == B ? "end of input" : "'" + (this.terminals_[_] || _) + "'"), this.parseError(St, { + text: S.match, + token: this.terminals_[_] || _, + line: S.yylineno, + loc: yt, + expected: rt + }); + } + if (m[0] instanceof Array && m.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + L + ", token: " + _); + switch (m[0]) { + case 1: + i.push(_), p.push(S.yytext), e.push(S.yylloc), i.push(m[1]), _ = null, O = S.yyleng, l = S.yytext, v = S.yylineno, yt = S.yylloc; + break; + case 2: + if (b = this.productions_[m[1]][1], N.$ = p[p.length - b], N._$ = { + first_line: e[e.length - (b || 1)].first_line, + last_line: e[e.length - 1].last_line, + first_column: e[e.length - (b || 1)].first_column, + last_column: e[e.length - 1].last_column + }, Gt && (N._$.range = [ + e[e.length - (b || 1)].range[0], + e[e.length - 1].range[1] + ]), pt = this.performAction.apply(N, [ + l, + O, + v, + A.yy, + m[1], + p, + e + ].concat(ft)), typeof pt != "undefined") + return pt; + b && (i = i.slice(0, -1 * b * 2), p = p.slice(0, -1 * b), e = e.slice(0, -1 * b)), i.push(this.productions_[m[1]][0]), p.push(N.$), e.push(N._$), Ct = $[i[i.length - 2]][i[i.length - 1]], i.push(Ct); + break; + case 3: + return !0; + } + } + return !0; + } + }, Yt = function() { + var C = { + EOF: 1, + parseError: function(n, i) { + if (this.yy.parser) + this.yy.parser.parseError(n, i); + else + throw new Error(n); + }, + // resets the lexer, sets new input + setInput: function(r, n) { + return this.yy = n || this.yy || {}, this._input = r, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var r = this._input[0]; + this.yytext += r, this.yyleng++, this.offset++, this.match += r, this.matched += r; + var n = r.match(/(?:\r\n?|\n).*/g); + return n ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), r; + }, + // unshifts one char (or a string) into the input + unput: function(r) { + var n = r.length, i = r.split(/(?:\r\n?|\n)/g); + this._input = r + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - n), this.offset -= n; + var o = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), i.length - 1 && (this.yylineno -= i.length - 1); + var p = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: i ? (i.length === o.length ? this.yylloc.first_column : 0) + o[o.length - i.length].length - i[0].length : this.yylloc.first_column - n + }, this.options.ranges && (this.yylloc.range = [p[0], p[0] + this.yyleng - n]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(r) { + this.unput(this.match.slice(r)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var r = this.matched.substr(0, this.matched.length - this.match.length); + return (r.length > 20 ? "..." : "") + r.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var r = this.match; + return r.length < 20 && (r += this._input.substr(0, 20 - r.length)), (r.substr(0, 20) + (r.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var r = this.pastInput(), n = new Array(r.length + 1).join("-"); + return r + this.upcomingInput() + ` +` + n + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(r, n) { + var i, o, p; + if (this.options.backtrack_lexer && (p = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (p.yylloc.range = this.yylloc.range.slice(0))), o = r[0].match(/(?:\r\n?|\n).*/g), o && (this.yylineno += o.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: o ? o[o.length - 1].length - o[o.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + r[0].length + }, this.yytext += r[0], this.match += r[0], this.matches = r, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(r[0].length), this.matched += r[0], i = this.performAction.call(this, this.yy, this, n, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), i) + return i; + if (this._backtrack) { + for (var e in p) + this[e] = p[e]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var r, n, i, o; + this._more || (this.yytext = "", this.match = ""); + for (var p = this._currentRules(), e = 0; e < p.length; e++) + if (i = this._input.match(this.rules[p[e]]), i && (!n || i[0].length > n[0].length)) { + if (n = i, o = e, this.options.backtrack_lexer) { + if (r = this.test_match(i, p[e]), r !== !1) + return r; + if (this._backtrack) { + n = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return n ? (r = this.test_match(n, p[o]), r !== !1 ? r : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var n = this.next(); + return n || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(n) { + this.conditionStack.push(n); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var n = this.conditionStack.length - 1; + return n > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(n) { + return n = this.conditionStack.length - 1 - Math.abs(n || 0), n >= 0 ? this.conditionStack[n] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(n) { + this.begin(n); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(n, i, o, p) { + switch (o) { + case 0: + return 40; + case 1: + return 44; + case 2: + return 45; + case 3: + return 46; + case 4: + return 47; + case 5: + break; + case 6: + break; + case 7: + return 5; + case 8: + break; + case 9: + break; + case 10: + break; + case 11: + break; + case 12: + return this.pushState("SCALE"), 16; + case 13: + return 17; + case 14: + this.popState(); + break; + case 15: + return this.begin("acc_title"), 32; + case 16: + return this.popState(), "acc_title_value"; + case 17: + return this.begin("acc_descr"), 34; + case 18: + return this.popState(), "acc_descr_value"; + case 19: + this.begin("acc_descr_multiline"); + break; + case 20: + this.popState(); + break; + case 21: + return "acc_descr_multiline_value"; + case 22: + return this.pushState("CLASSDEF"), 37; + case 23: + return this.popState(), this.pushState("CLASSDEFID"), "DEFAULT_CLASSDEF_ID"; + case 24: + return this.popState(), this.pushState("CLASSDEFID"), 38; + case 25: + return this.popState(), 39; + case 26: + return this.pushState("CLASS"), 41; + case 27: + return this.popState(), this.pushState("CLASS_STYLE"), 42; + case 28: + return this.popState(), 43; + case 29: + return this.pushState("SCALE"), 16; + case 30: + return 17; + case 31: + this.popState(); + break; + case 32: + this.pushState("STATE"); + break; + case 33: + return this.popState(), i.yytext = i.yytext.slice(0, -8).trim(), 24; + case 34: + return this.popState(), i.yytext = i.yytext.slice(0, -8).trim(), 25; + case 35: + return this.popState(), i.yytext = i.yytext.slice(0, -10).trim(), 26; + case 36: + return this.popState(), i.yytext = i.yytext.slice(0, -8).trim(), 24; + case 37: + return this.popState(), i.yytext = i.yytext.slice(0, -8).trim(), 25; + case 38: + return this.popState(), i.yytext = i.yytext.slice(0, -10).trim(), 26; + case 39: + return 44; + case 40: + return 45; + case 41: + return 46; + case 42: + return 47; + case 43: + this.pushState("STATE_STRING"); + break; + case 44: + return this.pushState("STATE_ID"), "AS"; + case 45: + return this.popState(), "ID"; + case 46: + this.popState(); + break; + case 47: + return "STATE_DESCR"; + case 48: + return 18; + case 49: + this.popState(); + break; + case 50: + return this.popState(), this.pushState("struct"), 19; + case 51: + break; + case 52: + return this.popState(), 20; + case 53: + break; + case 54: + return this.begin("NOTE"), 28; + case 55: + return this.popState(), this.pushState("NOTE_ID"), 52; + case 56: + return this.popState(), this.pushState("NOTE_ID"), 53; + case 57: + this.popState(), this.pushState("FLOATING_NOTE"); + break; + case 58: + return this.popState(), this.pushState("FLOATING_NOTE_ID"), "AS"; + case 59: + break; + case 60: + return "NOTE_TEXT"; + case 61: + return this.popState(), "ID"; + case 62: + return this.popState(), this.pushState("NOTE_TEXT"), 23; + case 63: + return this.popState(), i.yytext = i.yytext.substr(2).trim(), 30; + case 64: + return this.popState(), i.yytext = i.yytext.slice(0, -8).trim(), 30; + case 65: + return 6; + case 66: + return 6; + case 67: + return 15; + case 68: + return 50; + case 69: + return 23; + case 70: + return i.yytext = i.yytext.trim(), 13; + case 71: + return 14; + case 72: + return 27; + case 73: + return 51; + case 74: + return 5; + case 75: + return "INVALID"; + } + }, + rules: [/^(?:default\b)/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:%%(?!\{)[^\n]*)/i, /^(?:[^\}]%%[^\n]*)/i, /^(?:[\n]+)/i, /^(?:[\s]+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:classDef\s+)/i, /^(?:DEFAULT\s+)/i, /^(?:\w+\s+)/i, /^(?:[^\n]*)/i, /^(?:class\s+)/i, /^(?:(\w+)+((,\s*\w+)*))/i, /^(?:[^\n]*)/i, /^(?:scale\s+)/i, /^(?:\d+)/i, /^(?:\s+width\b)/i, /^(?:state\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\[\[fork\]\])/i, /^(?:.*\[\[join\]\])/i, /^(?:.*\[\[choice\]\])/i, /^(?:.*direction\s+TB[^\n]*)/i, /^(?:.*direction\s+BT[^\n]*)/i, /^(?:.*direction\s+RL[^\n]*)/i, /^(?:.*direction\s+LR[^\n]*)/i, /^(?:["])/i, /^(?:\s*as\s+)/i, /^(?:[^\n\{]*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n\s\{]+)/i, /^(?:\n)/i, /^(?:\{)/i, /^(?:%%(?!\{)[^\n]*)/i, /^(?:\})/i, /^(?:[\n])/i, /^(?:note\s+)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:")/i, /^(?:\s*as\s*)/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[^\n]*)/i, /^(?:\s*[^:\n\s\-]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:[\s\S]*?end note\b)/i, /^(?:stateDiagram\s+)/i, /^(?:stateDiagram-v2\s+)/i, /^(?:hide empty description\b)/i, /^(?:\[\*\])/i, /^(?:[^:\n\s\-\{]+)/i, /^(?:\s*:[^:\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { LINE: { rules: [9, 10], inclusive: !1 }, struct: { rules: [9, 10, 22, 26, 32, 39, 40, 41, 42, 51, 52, 53, 54, 68, 69, 70, 71, 72], inclusive: !1 }, FLOATING_NOTE_ID: { rules: [61], inclusive: !1 }, FLOATING_NOTE: { rules: [58, 59, 60], inclusive: !1 }, NOTE_TEXT: { rules: [63, 64], inclusive: !1 }, NOTE_ID: { rules: [62], inclusive: !1 }, NOTE: { rules: [55, 56, 57], inclusive: !1 }, CLASS_STYLE: { rules: [28], inclusive: !1 }, CLASS: { rules: [27], inclusive: !1 }, CLASSDEFID: { rules: [25], inclusive: !1 }, CLASSDEF: { rules: [23, 24], inclusive: !1 }, acc_descr_multiline: { rules: [20, 21], inclusive: !1 }, acc_descr: { rules: [18], inclusive: !1 }, acc_title: { rules: [16], inclusive: !1 }, SCALE: { rules: [13, 14, 30, 31], inclusive: !1 }, ALIAS: { rules: [], inclusive: !1 }, STATE_ID: { rules: [45], inclusive: !1 }, STATE_STRING: { rules: [46, 47], inclusive: !1 }, FORK_STATE: { rules: [], inclusive: !1 }, STATE: { rules: [9, 10, 33, 34, 35, 36, 37, 38, 43, 44, 48, 49, 50], inclusive: !1 }, ID: { rules: [9, 10], inclusive: !1 }, INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 17, 19, 22, 26, 29, 32, 50, 54, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75], inclusive: !0 } } + }; + return C; + }(); + ht.lexer = Yt; + function ut() { + this.yy = {}; + } + return ut.prototype = ht, ht.Parser = ut, new ut(); +}(); +gt.parser = gt; +const De = gt, qt = "LR", Ce = "TB", _t = "state", It = "relation", Qt = "classDef", Zt = "applyClass", Et = "default", te = "divider", bt = "[*]", Ot = "start", Nt = bt, Rt = "end", vt = "color", At = "fill", ee = "bgFill", se = ","; +function wt() { + return {}; +} +let $t = qt, lt = [], P = wt(); +const Bt = () => ({ + relations: [], + states: {}, + documents: {} +}); +let ct = { + root: Bt() +}, g = ct.root, F = 0, Lt = 0; +const ie = { + LINE: 0, + DOTTED_LINE: 1 +}, re = { + AGGREGATION: 0, + EXTENSION: 1, + COMPOSITION: 2, + DEPENDENCY: 3 +}, nt = (t) => JSON.parse(JSON.stringify(t)), ne = (t) => { + D.info("Setting root doc", t), lt = t; +}, ae = () => lt, at = (t, s, a) => { + if (s.stmt === It) + at(t, s.state1, !0), at(t, s.state2, !1); + else if (s.stmt === _t && (s.id === "[*]" ? (s.id = a ? t.id + "_start" : t.id + "_end", s.start = a) : s.id = s.id.trim()), s.doc) { + const h = []; + let f = [], d; + for (d = 0; d < s.doc.length; d++) + if (s.doc[d].type === te) { + const y = nt(s.doc[d]); + y.doc = nt(f), h.push(y), f = []; + } else + f.push(s.doc[d]); + if (h.length > 0 && f.length > 0) { + const y = { + stmt: _t, + id: Jt(), + type: "divider", + doc: nt(f) + }; + h.push(nt(y)), s.doc = h; + } + s.doc.forEach((y) => at(s, y, !0)); + } +}, le = () => (at({ id: "root" }, { id: "root", doc: lt }, !0), { id: "root", doc: lt }), ce = (t) => { + let s; + t.doc ? s = t.doc : s = t, D.info(s), Pt(!0), D.info("Extract", s), s.forEach((a) => { + switch (a.stmt) { + case _t: + I( + a.id.trim(), + a.type, + a.doc, + a.description, + a.note, + a.classes, + a.styles, + a.textStyles + ); + break; + case It: + Ft(a.state1, a.state2, a.description); + break; + case Qt: + Vt(a.id.trim(), a.classes); + break; + case Zt: + xt(a.id.trim(), a.styleClass); + break; + } + }); +}, I = function(t, s = Et, a = null, h = null, f = null, d = null, y = null, k = null) { + const u = t == null ? void 0 : t.trim(); + g.states[u] === void 0 ? (D.info("Adding state ", u, h), g.states[u] = { + id: u, + descriptions: [], + type: s, + doc: a, + note: f, + classes: [], + styles: [], + textStyles: [] + }) : (g.states[u].doc || (g.states[u].doc = a), g.states[u].type || (g.states[u].type = s)), h && (D.info("Setting state description", u, h), typeof h == "string" && kt(u, h.trim()), typeof h == "object" && h.forEach((E) => kt(u, E.trim()))), f && (g.states[u].note = f, g.states[u].note.text = ot.sanitizeText( + g.states[u].note.text, + Y() + )), d && (D.info("Setting state classes", u, d), (typeof d == "string" ? [d] : d).forEach((T) => xt(u, T.trim()))), y && (D.info("Setting state styles", u, y), (typeof y == "string" ? [y] : y).forEach((T) => _e(u, T.trim()))), k && (D.info("Setting state styles", u, y), (typeof k == "string" ? [k] : k).forEach((T) => me(u, T.trim()))); +}, Pt = function(t) { + ct = { + root: Bt() + }, g = ct.root, F = 0, P = wt(), t || Wt(); +}, V = function(t) { + return g.states[t]; +}, oe = function() { + return g.states; +}, he = function() { + D.info("Documents = ", ct); +}, ue = function() { + return g.relations; +}; +function mt(t = "") { + let s = t; + return t === bt && (F++, s = `${Ot}${F}`), s; +} +function Tt(t = "", s = Et) { + return t === bt ? Ot : s; +} +function fe(t = "") { + let s = t; + return t === Nt && (F++, s = `${Rt}${F}`), s; +} +function de(t = "", s = Et) { + return t === Nt ? Rt : s; +} +function ye(t, s, a) { + let h = mt(t.id.trim()), f = Tt(t.id.trim(), t.type), d = mt(s.id.trim()), y = Tt(s.id.trim(), s.type); + I( + h, + f, + t.doc, + t.description, + t.note, + t.classes, + t.styles, + t.textStyles + ), I( + d, + y, + s.doc, + s.description, + s.note, + s.classes, + s.styles, + s.textStyles + ), g.relations.push({ + id1: h, + id2: d, + relationTitle: ot.sanitizeText(a, Y()) + }); +} +const Ft = function(t, s, a) { + if (typeof t == "object") + ye(t, s, a); + else { + const h = mt(t.trim()), f = Tt(t), d = fe(s.trim()), y = de(s); + I(h, f), I(d, y), g.relations.push({ + id1: h, + id2: d, + title: ot.sanitizeText(a, Y()) + }); + } +}, kt = function(t, s) { + const a = g.states[t], h = s.startsWith(":") ? s.replace(":", "").trim() : s; + a.descriptions.push(ot.sanitizeText(h, Y())); +}, pe = function(t) { + return t.substring(0, 1) === ":" ? t.substr(2).trim() : t.trim(); +}, Se = () => (Lt++, "divider-id-" + Lt), Vt = function(t, s = "") { + P[t] === void 0 && (P[t] = { id: t, styles: [], textStyles: [] }); + const a = P[t]; + s != null && s.split(se).forEach((h) => { + const f = h.replace(/([^;]*);/, "$1").trim(); + if (h.match(vt)) { + const y = f.replace(At, ee).replace(vt, At); + a.textStyles.push(y); + } + a.styles.push(f); + }); +}, ge = function() { + return P; +}, xt = function(t, s) { + t.split(",").forEach(function(a) { + let h = V(a); + if (h === void 0) { + const f = a.trim(); + I(f), h = V(f); + } + h.classes.push(s); + }); +}, _e = function(t, s) { + const a = V(t); + a !== void 0 && a.textStyles.push(s); +}, me = function(t, s) { + const a = V(t); + a !== void 0 && a.textStyles.push(s); +}, Te = () => $t, ke = (t) => { + $t = t; +}, Ee = (t) => t && t[0] === ":" ? t.substr(1).trim() : t.trim(), ve = { + getConfig: () => Y().state, + addState: I, + clear: Pt, + getState: V, + getStates: oe, + getRelations: ue, + getClasses: ge, + getDirection: Te, + addRelation: Ft, + getDividerId: Se, + setDirection: ke, + cleanupLabel: pe, + lineType: ie, + relationType: re, + logDocuments: he, + getRootDoc: ae, + setRootDoc: ne, + getRootDocV2: le, + extract: ce, + trimColon: Ee, + getAccTitle: Ut, + setAccTitle: zt, + getAccDescription: Mt, + setAccDescription: Ht, + addStyleClass: Vt, + setCssClass: xt, + addDescription: kt, + setDiagramTitle: Xt, + getDiagramTitle: Kt +}, be = (t) => ` +defs #statediagram-barbEnd { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor || t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor || t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground || t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg || t.mainBkg}; + stroke: ${t.stateBorder || t.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder || t.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder || t.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder || t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground || t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.altBackground ? t.altBackground : "#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${t.altBackground ? t.altBackground : "#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`, Ae = be; +export { + Et as D, + It as S, + te as a, + _t as b, + Ce as c, + ve as d, + De as p, + Ae as s +}; diff --git a/client/packages/lowcoder/public/package/8de27e61.js b/client/packages/lowcoder/public/package/8de27e61.js new file mode 100644 index 000000000..b57b9ebca --- /dev/null +++ b/client/packages/lowcoder/public/package/8de27e61.js @@ -0,0 +1,48428 @@ +var NU = (et, Ft, Nt) => new Promise((wt, dr) => { + var Ai = (mc) => { + try { + Bt(Nt.next(mc)); + } catch ($t) { + dr($t); + } + }, y = (mc) => { + try { + Bt(Nt.throw(mc)); + } catch ($t) { + dr($t); + } + }, Bt = (mc) => mc.done ? wt(mc.value) : Promise.resolve(mc.value).then(Ai, y); + Bt((Nt = Nt.apply(et, Ft)).next()); +}); +import { d as FNe, p as BNe } from "./18068d52.js"; +import { c as $se, g as RNe, l as Ra, j as IO, _ as FU, v as KNe, q as C0n, u as E0n, p as xU, m as _Ne } from "./08856db2.js"; +import { i as HNe, a as qNe, l as UNe, b as GNe, k as zNe, m as XNe } from "./691304fa.js"; +import { l as VNe } from "./8e8be6e8.js"; +import "./f69b998c.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +function $U(et) { + throw new Error('Could not dynamically require "' + et + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} +var Rse = { exports: {} }; +(function(et, Ft) { + (function(Nt) { + et.exports = Nt(); + })(function() { + return function() { + function Nt(wt, dr, Ai) { + function y($t, Jt) { + if (!dr[$t]) { + if (!wt[$t]) { + var Xe = typeof $U == "function" && $U; + if (!Jt && Xe) + return Xe($t, !0); + if (Bt) + return Bt($t, !0); + var Yi = new Error("Cannot find module '" + $t + "'"); + throw Yi.code = "MODULE_NOT_FOUND", Yi; + } + var Ri = dr[$t] = { exports: {} }; + wt[$t][0].call(Ri.exports, function(En) { + var lu = wt[$t][1][En]; + return y(lu || En); + }, Ri, Ri.exports, Nt, wt, dr, Ai); + } + return dr[$t].exports; + } + for (var Bt = typeof $U == "function" && $U, mc = 0; mc < Ai.length; mc++) + y(Ai[mc]); + return y; + } + return Nt; + }()({ 1: [function(Nt, wt, dr) { + Object.defineProperty(dr, "__esModule", { + value: !0 + }); + var Ai = function() { + function $t(Jt, Xe) { + for (var Yi = 0; Yi < Xe.length; Yi++) { + var Ri = Xe[Yi]; + Ri.enumerable = Ri.enumerable || !1, Ri.configurable = !0, "value" in Ri && (Ri.writable = !0), Object.defineProperty(Jt, Ri.key, Ri); + } + } + return function(Jt, Xe, Yi) { + return Xe && $t(Jt.prototype, Xe), Yi && $t(Jt, Yi), Jt; + }; + }(); + function y($t, Jt) { + if (!($t instanceof Jt)) + throw new TypeError("Cannot call a class as a function"); + } + var Bt = function() { + function $t() { + var Jt = this, Xe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, Yi = Xe.defaultLayoutOptions, Ri = Yi === void 0 ? {} : Yi, En = Xe.algorithms, lu = En === void 0 ? ["layered", "stress", "mrtree", "radial", "force", "disco", "sporeOverlap", "sporeCompaction", "rectpacking"] : En, Yc = Xe.workerFactory, Ru = Xe.workerUrl; + if (y(this, $t), this.defaultLayoutOptions = Ri, this.initialized = !1, typeof Ru == "undefined" && typeof Yc == "undefined") + throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'."); + var Pr = Yc; + typeof Ru != "undefined" && typeof Yc == "undefined" && (Pr = function(N1) { + return new Worker(N1); + }); + var Mf = Pr(Ru); + if (typeof Mf.postMessage != "function") + throw new TypeError("Created worker does not provide the required 'postMessage' function."); + this.worker = new mc(Mf), this.worker.postMessage({ + cmd: "register", + algorithms: lu + }).then(function(L1) { + return Jt.initialized = !0; + }).catch(console.err); + } + return Ai($t, [{ + key: "layout", + value: function(Xe) { + var Yi = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, Ri = Yi.layoutOptions, En = Ri === void 0 ? this.defaultLayoutOptions : Ri, lu = Yi.logging, Yc = lu === void 0 ? !1 : lu, Ru = Yi.measureExecutionTime, Pr = Ru === void 0 ? !1 : Ru; + return Xe ? this.worker.postMessage({ + cmd: "layout", + graph: Xe, + layoutOptions: En, + options: { + logging: Yc, + measureExecutionTime: Pr + } + }) : Promise.reject(new Error("Missing mandatory parameter 'graph'.")); + } + }, { + key: "knownLayoutAlgorithms", + value: function() { + return this.worker.postMessage({ cmd: "algorithms" }); + } + }, { + key: "knownLayoutOptions", + value: function() { + return this.worker.postMessage({ cmd: "options" }); + } + }, { + key: "knownLayoutCategories", + value: function() { + return this.worker.postMessage({ cmd: "categories" }); + } + }, { + key: "terminateWorker", + value: function() { + this.worker.terminate(); + } + }]), $t; + }(); + dr.default = Bt; + var mc = function() { + function $t(Jt) { + var Xe = this; + if (y(this, $t), Jt === void 0) + throw new Error("Missing mandatory parameter 'worker'."); + this.resolvers = {}, this.worker = Jt, this.worker.onmessage = function(Yi) { + setTimeout(function() { + Xe.receive(Xe, Yi); + }, 0); + }; + } + return Ai($t, [{ + key: "postMessage", + value: function(Xe) { + var Yi = this.id || 0; + this.id = Yi + 1, Xe.id = Yi; + var Ri = this; + return new Promise(function(En, lu) { + Ri.resolvers[Yi] = function(Yc, Ru) { + Yc ? (Ri.convertGwtStyleError(Yc), lu(Yc)) : En(Ru); + }, Ri.worker.postMessage(Xe); + }); + } + }, { + key: "receive", + value: function(Xe, Yi) { + var Ri = Yi.data, En = Xe.resolvers[Ri.id]; + En && (delete Xe.resolvers[Ri.id], Ri.error ? En(Ri.error) : En(null, Ri.data)); + } + }, { + key: "terminate", + value: function() { + this.worker.terminate && this.worker.terminate(); + } + }, { + key: "convertGwtStyleError", + value: function(Xe) { + if (Xe) { + var Yi = Xe.__java$exception; + Yi && (Yi.cause && Yi.cause.backingJsObject && (Xe.cause = Yi.cause.backingJsObject, this.convertGwtStyleError(Xe.cause)), delete Xe.__java$exception); + } + } + }]), $t; + }(); + }, {}], 2: [function(Nt, wt, dr) { + (function(Ai) { + (function() { + var y; + typeof window != "undefined" ? y = window : typeof Ai != "undefined" ? y = Ai : typeof self != "undefined" && (y = self); + var Bt; + function mc() { + } + function $t() { + } + function Jt() { + } + function Xe() { + } + function Yi() { + } + function Ri() { + } + function En() { + } + function lu() { + } + function Yc() { + } + function Ru() { + } + function Pr() { + } + function Mf() { + } + function L1() { + } + function N1() { + } + function og() { + } + function V3() { + } + function $1() { + } + function ul() { + } + function M0n() { + } + function T0n() { + } + function Q2() { + } + function F() { + } + function A0n() { + } + function mE() { + } + function S0n() { + } + function P0n() { + } + function I0n() { + } + function O0n() { + } + function D0n() { + } + function BU() { + } + function L0n() { + } + function N0n() { + } + function $0n() { + } + function OO() { + } + function x0n() { + } + function F0n() { + } + function B0n() { + } + function DO() { + } + function R0n() { + } + function K0n() { + } + function RU() { + } + function _0n() { + } + function H0n() { + } + function ju() { + } + function Eu() { + } + function Y2() { + } + function Z2() { + } + function q0n() { + } + function U0n() { + } + function G0n() { + } + function z0n() { + } + function KU() { + } + function Cu() { + } + function np() { + } + function ep() { + } + function X0n() { + } + function V0n() { + } + function LO() { + } + function W0n() { + } + function J0n() { + } + function Q0n() { + } + function Y0n() { + } + function Z0n() { + } + function nbn() { + } + function ebn() { + } + function tbn() { + } + function ibn() { + } + function rbn() { + } + function cbn() { + } + function ubn() { + } + function obn() { + } + function sbn() { + } + function fbn() { + } + function hbn() { + } + function lbn() { + } + function abn() { + } + function dbn() { + } + function bbn() { + } + function wbn() { + } + function gbn() { + } + function pbn() { + } + function mbn() { + } + function vbn() { + } + function kbn() { + } + function ybn() { + } + function jbn() { + } + function Ebn() { + } + function Cbn() { + } + function Mbn() { + } + function Tbn() { + } + function Abn() { + } + function _U() { + } + function Sbn() { + } + function Pbn() { + } + function Ibn() { + } + function Obn() { + } + function NO() { + } + function $O() { + } + function vE() { + } + function Dbn() { + } + function Lbn() { + } + function xO() { + } + function Nbn() { + } + function $bn() { + } + function xbn() { + } + function kE() { + } + function Fbn() { + } + function Bbn() { + } + function Rbn() { + } + function Kbn() { + } + function _bn() { + } + function Hbn() { + } + function qbn() { + } + function Ubn() { + } + function Gbn() { + } + function HU() { + } + function zbn() { + } + function Xbn() { + } + function qU() { + } + function Vbn() { + } + function Wbn() { + } + function Jbn() { + } + function Qbn() { + } + function Ybn() { + } + function Zbn() { + } + function nwn() { + } + function ewn() { + } + function twn() { + } + function iwn() { + } + function rwn() { + } + function cwn() { + } + function uwn() { + } + function FO() { + } + function own() { + } + function swn() { + } + function fwn() { + } + function hwn() { + } + function lwn() { + } + function awn() { + } + function dwn() { + } + function bwn() { + } + function wwn() { + } + function UU() { + } + function GU() { + } + function gwn() { + } + function pwn() { + } + function mwn() { + } + function vwn() { + } + function kwn() { + } + function ywn() { + } + function jwn() { + } + function Ewn() { + } + function Cwn() { + } + function Mwn() { + } + function Twn() { + } + function Awn() { + } + function Swn() { + } + function Pwn() { + } + function Iwn() { + } + function Own() { + } + function Dwn() { + } + function Lwn() { + } + function Nwn() { + } + function $wn() { + } + function xwn() { + } + function Fwn() { + } + function Bwn() { + } + function Rwn() { + } + function Kwn() { + } + function _wn() { + } + function Hwn() { + } + function qwn() { + } + function Uwn() { + } + function Gwn() { + } + function zwn() { + } + function Xwn() { + } + function Vwn() { + } + function Wwn() { + } + function Jwn() { + } + function Qwn() { + } + function Ywn() { + } + function Zwn() { + } + function ngn() { + } + function egn() { + } + function tgn() { + } + function ign() { + } + function rgn() { + } + function cgn() { + } + function ugn() { + } + function ogn() { + } + function sgn() { + } + function fgn() { + } + function hgn() { + } + function lgn() { + } + function agn() { + } + function dgn() { + } + function bgn() { + } + function wgn() { + } + function ggn() { + } + function pgn() { + } + function mgn() { + } + function vgn() { + } + function kgn() { + } + function ygn() { + } + function jgn() { + } + function Egn() { + } + function Cgn() { + } + function Mgn() { + } + function Tgn() { + } + function Agn() { + } + function Sgn() { + } + function Pgn() { + } + function Ign() { + } + function Ogn() { + } + function Dgn() { + } + function Lgn() { + } + function Ngn() { + } + function $gn() { + } + function xgn() { + } + function Fgn() { + } + function Bgn() { + } + function Rgn() { + } + function Kgn() { + } + function _gn() { + } + function Hgn() { + } + function qgn() { + } + function Ugn() { + } + function Ggn() { + } + function zgn() { + } + function Xgn() { + } + function Vgn() { + } + function Wgn() { + } + function Jgn() { + } + function Qgn() { + } + function Ygn() { + } + function Zgn() { + } + function n2n() { + } + function e2n() { + } + function t2n() { + } + function i2n() { + } + function r2n() { + } + function c2n() { + } + function u2n() { + } + function o2n() { + } + function zU() { + } + function s2n() { + } + function f2n() { + } + function h2n() { + } + function l2n() { + } + function a2n() { + } + function d2n() { + } + function b2n() { + } + function w2n() { + } + function g2n() { + } + function p2n() { + } + function m2n() { + } + function v2n() { + } + function k2n() { + } + function y2n() { + } + function j2n() { + } + function E2n() { + } + function C2n() { + } + function M2n() { + } + function T2n() { + } + function A2n() { + } + function S2n() { + } + function P2n() { + } + function I2n() { + } + function O2n() { + } + function D2n() { + } + function L2n() { + } + function N2n() { + } + function $2n() { + } + function x2n() { + } + function F2n() { + } + function B2n() { + } + function R2n() { + } + function K2n() { + } + function _2n() { + } + function H2n() { + } + function q2n() { + } + function U2n() { + } + function G2n() { + } + function z2n() { + } + function X2n() { + } + function V2n() { + } + function W2n() { + } + function J2n() { + } + function Q2n() { + } + function Y2n() { + } + function Z2n() { + } + function npn() { + } + function epn() { + } + function tpn() { + } + function ipn() { + } + function rpn() { + } + function cpn() { + } + function upn() { + } + function opn() { + } + function spn() { + } + function fpn() { + } + function hpn() { + } + function lpn() { + } + function apn() { + } + function dpn() { + } + function bpn() { + } + function wpn() { + } + function gpn() { + } + function ppn() { + } + function mpn() { + } + function vpn() { + } + function kpn() { + } + function ypn() { + } + function jpn() { + } + function Epn() { + } + function Cpn() { + } + function Mpn() { + } + function Tpn() { + } + function XU() { + } + function Apn() { + } + function Spn() { + } + function Ppn() { + } + function Ipn() { + } + function Opn() { + } + function Dpn() { + } + function Lpn() { + } + function Npn() { + } + function $pn() { + } + function xpn() { + } + function VU() { + } + function Fpn() { + } + function Bpn() { + } + function Rpn() { + } + function Kpn() { + } + function _pn() { + } + function Hpn() { + } + function WU() { + } + function JU() { + } + function qpn() { + } + function QU() { + } + function YU() { + } + function Upn() { + } + function Gpn() { + } + function zpn() { + } + function Xpn() { + } + function Vpn() { + } + function Wpn() { + } + function Jpn() { + } + function Qpn() { + } + function Ypn() { + } + function Zpn() { + } + function n3n() { + } + function ZU() { + } + function e3n() { + } + function t3n() { + } + function i3n() { + } + function r3n() { + } + function c3n() { + } + function u3n() { + } + function o3n() { + } + function s3n() { + } + function f3n() { + } + function h3n() { + } + function l3n() { + } + function a3n() { + } + function d3n() { + } + function b3n() { + } + function w3n() { + } + function g3n() { + } + function p3n() { + } + function m3n() { + } + function v3n() { + } + function k3n() { + } + function y3n() { + } + function j3n() { + } + function E3n() { + } + function C3n() { + } + function M3n() { + } + function T3n() { + } + function A3n() { + } + function S3n() { + } + function P3n() { + } + function I3n() { + } + function O3n() { + } + function D3n() { + } + function L3n() { + } + function N3n() { + } + function $3n() { + } + function x3n() { + } + function F3n() { + } + function B3n() { + } + function R3n() { + } + function K3n() { + } + function _3n() { + } + function H3n() { + } + function q3n() { + } + function U3n() { + } + function G3n() { + } + function z3n() { + } + function X3n() { + } + function V3n() { + } + function W3n() { + } + function J3n() { + } + function Q3n() { + } + function Y3n() { + } + function Z3n() { + } + function n4n() { + } + function e4n() { + } + function t4n() { + } + function i4n() { + } + function r4n() { + } + function c4n() { + } + function u4n() { + } + function o4n() { + } + function s4n() { + } + function f4n() { + } + function h4n() { + } + function l4n() { + } + function a4n() { + } + function d4n() { + } + function b4n() { + } + function w4n() { + } + function g4n() { + } + function p4n() { + } + function m4n() { + } + function v4n() { + } + function k4n() { + } + function y4n() { + } + function j4n() { + } + function E4n() { + } + function C4n() { + } + function M4n() { + } + function T4n() { + } + function A4n() { + } + function S4n() { + } + function P4n() { + } + function I4n() { + } + function O4n() { + } + function D4n() { + } + function Hse() { + } + function L4n() { + } + function N4n() { + } + function $4n() { + } + function x4n() { + } + function F4n() { + } + function B4n() { + } + function R4n() { + } + function K4n() { + } + function _4n() { + } + function H4n() { + } + function q4n() { + } + function U4n() { + } + function G4n() { + } + function z4n() { + } + function X4n() { + } + function V4n() { + } + function W4n() { + } + function J4n() { + } + function Q4n() { + } + function Y4n() { + } + function Z4n() { + } + function nmn() { + } + function emn() { + } + function tmn() { + } + function imn() { + } + function rmn() { + } + function cmn() { + } + function BO() { + } + function RO() { + } + function umn() { + } + function KO() { + } + function omn() { + } + function smn() { + } + function fmn() { + } + function hmn() { + } + function lmn() { + } + function amn() { + } + function dmn() { + } + function bmn() { + } + function wmn() { + } + function gmn() { + } + function nG() { + } + function pmn() { + } + function mmn() { + } + function vmn() { + } + function qse() { + } + function kmn() { + } + function ymn() { + } + function jmn() { + } + function Emn() { + } + function Cmn() { + } + function Mmn() { + } + function Tmn() { + } + function Ka() { + } + function Amn() { + } + function tp() { + } + function eG() { + } + function Smn() { + } + function Pmn() { + } + function Imn() { + } + function Omn() { + } + function Dmn() { + } + function Lmn() { + } + function Nmn() { + } + function $mn() { + } + function xmn() { + } + function Fmn() { + } + function Bmn() { + } + function Rmn() { + } + function Kmn() { + } + function _mn() { + } + function Hmn() { + } + function qmn() { + } + function Umn() { + } + function Gmn() { + } + function zmn() { + } + function hn() { + } + function Xmn() { + } + function Vmn() { + } + function Wmn() { + } + function Jmn() { + } + function Qmn() { + } + function Ymn() { + } + function Zmn() { + } + function nvn() { + } + function evn() { + } + function tvn() { + } + function ivn() { + } + function rvn() { + } + function cvn() { + } + function _O() { + } + function uvn() { + } + function ovn() { + } + function svn() { + } + function yE() { + } + function fvn() { + } + function HO() { + } + function jE() { + } + function hvn() { + } + function tG() { + } + function lvn() { + } + function avn() { + } + function dvn() { + } + function bvn() { + } + function wvn() { + } + function gvn() { + } + function EE() { + } + function pvn() { + } + function mvn() { + } + function CE() { + } + function vvn() { + } + function ME() { + } + function kvn() { + } + function iG() { + } + function yvn() { + } + function qO() { + } + function rG() { + } + function jvn() { + } + function Evn() { + } + function Cvn() { + } + function Mvn() { + } + function Use() { + } + function Tvn() { + } + function Avn() { + } + function Svn() { + } + function Pvn() { + } + function Ivn() { + } + function Ovn() { + } + function Dvn() { + } + function Lvn() { + } + function Nvn() { + } + function $vn() { + } + function W3() { + } + function UO() { + } + function xvn() { + } + function Fvn() { + } + function Bvn() { + } + function Rvn() { + } + function Kvn() { + } + function _vn() { + } + function Hvn() { + } + function qvn() { + } + function Uvn() { + } + function Gvn() { + } + function zvn() { + } + function Xvn() { + } + function Vvn() { + } + function Wvn() { + } + function Jvn() { + } + function Qvn() { + } + function Yvn() { + } + function Zvn() { + } + function n6n() { + } + function e6n() { + } + function t6n() { + } + function i6n() { + } + function r6n() { + } + function c6n() { + } + function u6n() { + } + function o6n() { + } + function s6n() { + } + function f6n() { + } + function h6n() { + } + function l6n() { + } + function a6n() { + } + function d6n() { + } + function b6n() { + } + function w6n() { + } + function g6n() { + } + function p6n() { + } + function m6n() { + } + function v6n() { + } + function k6n() { + } + function y6n() { + } + function j6n() { + } + function E6n() { + } + function C6n() { + } + function M6n() { + } + function T6n() { + } + function A6n() { + } + function S6n() { + } + function P6n() { + } + function I6n() { + } + function O6n() { + } + function D6n() { + } + function L6n() { + } + function N6n() { + } + function $6n() { + } + function x6n() { + } + function F6n() { + } + function B6n() { + } + function R6n() { + } + function K6n() { + } + function _6n() { + } + function H6n() { + } + function q6n() { + } + function U6n() { + } + function G6n() { + } + function z6n() { + } + function X6n() { + } + function V6n() { + } + function W6n() { + } + function J6n() { + } + function Q6n() { + } + function Y6n() { + } + function Z6n() { + } + function n5n() { + } + function e5n() { + } + function t5n() { + } + function i5n() { + } + function r5n() { + } + function c5n() { + } + function u5n() { + } + function o5n() { + } + function s5n() { + } + function f5n() { + } + function h5n() { + } + function l5n() { + } + function a5n() { + } + function d5n() { + } + function b5n() { + } + function w5n() { + } + function g5n() { + } + function p5n() { + } + function m5n() { + } + function v5n() { + } + function k5n() { + } + function y5n() { + } + function j5n() { + } + function E5n() { + } + function C5n() { + } + function M5n() { + } + function T5n() { + } + function A5n() { + } + function S5n() { + } + function cG() { + } + function P5n() { + } + function I5n() { + } + function GO() { + Zv(); + } + function O5n() { + r7(); + } + function D5n() { + aA(); + } + function L5n() { + Q$(); + } + function N5n() { + C5(); + } + function $5n() { + dnn(); + } + function x5n() { + Us(); + } + function F5n() { + EZ(); + } + function B5n() { + Uk(); + } + function R5n() { + c7(); + } + function K5n() { + L7(); + } + function _5n() { + dCn(); + } + function H5n() { + Hp(); + } + function q5n() { + _Ln(); + } + function U5n() { + jQ(); + } + function G5n() { + POn(); + } + function z5n() { + EQ(); + } + function X5n() { + mNn(); + } + function V5n() { + SOn(); + } + function W5n() { + cm(); + } + function J5n() { + exn(); + } + function Q5n() { + nxn(); + } + function Y5n() { + CDn(); + } + function Z5n() { + txn(); + } + function n8n() { + ua(); + } + function e8n() { + ZE(); + } + function t8n() { + atn(); + } + function i8n() { + cn(); + } + function r8n() { + ixn(); + } + function c8n() { + Ixn(); + } + function u8n() { + IOn(); + } + function o8n() { + eKn(); + } + function s8n() { + OOn(); + } + function f8n() { + wUn(); + } + function h8n() { + Unn(); + } + function l8n() { + kl(); + } + function a8n() { + gBn(); + } + function d8n() { + lc(); + } + function b8n() { + KOn(); + } + function w8n() { + _p(); + } + function g8n() { + Ten(); + } + function p8n() { + oa(); + } + function m8n() { + Aen(); + } + function v8n() { + Rf(); + } + function k8n() { + Wk(); + } + function y8n() { + EF(); + } + function j8n() { + Dx(); + } + function uf() { + gSn(); + } + function E8n() { + YM(); + } + function C8n() { + mA(); + } + function uG() { + He(); + } + function M8n() { + NT(); + } + function T8n() { + ZY(); + } + function oG() { + D$(); + } + function sG() { + KA(); + } + function A8n() { + Ben(); + } + function fG(n) { + Jn(n); + } + function S8n(n) { + this.a = n; + } + function TE(n) { + this.a = n; + } + function P8n(n) { + this.a = n; + } + function I8n(n) { + this.a = n; + } + function O8n(n) { + this.a = n; + } + function D8n(n) { + this.a = n; + } + function L8n(n) { + this.a = n; + } + function N8n(n) { + this.a = n; + } + function hG(n) { + this.a = n; + } + function lG(n) { + this.a = n; + } + function $8n(n) { + this.a = n; + } + function x8n(n) { + this.a = n; + } + function zO(n) { + this.a = n; + } + function F8n(n) { + this.a = n; + } + function B8n(n) { + this.a = n; + } + function XO(n) { + this.a = n; + } + function VO(n) { + this.a = n; + } + function R8n(n) { + this.a = n; + } + function WO(n) { + this.a = n; + } + function K8n(n) { + this.a = n; + } + function _8n(n) { + this.a = n; + } + function H8n(n) { + this.a = n; + } + function aG(n) { + this.b = n; + } + function q8n(n) { + this.c = n; + } + function U8n(n) { + this.a = n; + } + function G8n(n) { + this.a = n; + } + function z8n(n) { + this.a = n; + } + function X8n(n) { + this.a = n; + } + function V8n(n) { + this.a = n; + } + function W8n(n) { + this.a = n; + } + function J8n(n) { + this.a = n; + } + function Q8n(n) { + this.a = n; + } + function Y8n(n) { + this.a = n; + } + function Z8n(n) { + this.a = n; + } + function n9n(n) { + this.a = n; + } + function e9n(n) { + this.a = n; + } + function t9n(n) { + this.a = n; + } + function dG(n) { + this.a = n; + } + function bG(n) { + this.a = n; + } + function AE(n) { + this.a = n; + } + function U9(n) { + this.a = n; + } + function _a() { + this.a = []; + } + function i9n(n, e) { + n.a = e; + } + function Gse(n, e) { + n.a = e; + } + function zse(n, e) { + n.b = e; + } + function Xse(n, e) { + n.b = e; + } + function Vse(n, e) { + n.b = e; + } + function wG(n, e) { + n.j = e; + } + function Wse(n, e) { + n.g = e; + } + function Jse(n, e) { + n.i = e; + } + function Qse(n, e) { + n.c = e; + } + function Yse(n, e) { + n.c = e; + } + function Zse(n, e) { + n.d = e; + } + function nfe(n, e) { + n.d = e; + } + function Ha(n, e) { + n.k = e; + } + function efe(n, e) { + n.c = e; + } + function gG(n, e) { + n.c = e; + } + function pG(n, e) { + n.a = e; + } + function tfe(n, e) { + n.a = e; + } + function ife(n, e) { + n.f = e; + } + function rfe(n, e) { + n.a = e; + } + function cfe(n, e) { + n.b = e; + } + function JO(n, e) { + n.d = e; + } + function SE(n, e) { + n.i = e; + } + function mG(n, e) { + n.o = e; + } + function ufe(n, e) { + n.r = e; + } + function ofe(n, e) { + n.a = e; + } + function sfe(n, e) { + n.b = e; + } + function r9n(n, e) { + n.e = e; + } + function ffe(n, e) { + n.f = e; + } + function vG(n, e) { + n.g = e; + } + function hfe(n, e) { + n.e = e; + } + function lfe(n, e) { + n.f = e; + } + function afe(n, e) { + n.f = e; + } + function QO(n, e) { + n.a = e; + } + function YO(n, e) { + n.b = e; + } + function dfe(n, e) { + n.n = e; + } + function bfe(n, e) { + n.a = e; + } + function wfe(n, e) { + n.c = e; + } + function gfe(n, e) { + n.c = e; + } + function pfe(n, e) { + n.c = e; + } + function mfe(n, e) { + n.a = e; + } + function vfe(n, e) { + n.a = e; + } + function kfe(n, e) { + n.d = e; + } + function yfe(n, e) { + n.d = e; + } + function jfe(n, e) { + n.e = e; + } + function Efe(n, e) { + n.e = e; + } + function Cfe(n, e) { + n.g = e; + } + function Mfe(n, e) { + n.f = e; + } + function Tfe(n, e) { + n.j = e; + } + function Afe(n, e) { + n.a = e; + } + function Sfe(n, e) { + n.a = e; + } + function Pfe(n, e) { + n.b = e; + } + function c9n(n) { + n.b = n.a; + } + function u9n(n) { + n.c = n.d.d; + } + function kG(n) { + this.a = n; + } + function yG(n) { + this.a = n; + } + function jG(n) { + this.a = n; + } + function qa(n) { + this.a = n; + } + function Ua(n) { + this.a = n; + } + function G9(n) { + this.a = n; + } + function o9n(n) { + this.a = n; + } + function EG(n) { + this.a = n; + } + function z9(n) { + this.a = n; + } + function PE(n) { + this.a = n; + } + function ol(n) { + this.a = n; + } + function Sb(n) { + this.a = n; + } + function s9n(n) { + this.a = n; + } + function f9n(n) { + this.a = n; + } + function ZO(n) { + this.b = n; + } + function J3(n) { + this.b = n; + } + function Q3(n) { + this.b = n; + } + function nD(n) { + this.a = n; + } + function h9n(n) { + this.a = n; + } + function eD(n) { + this.c = n; + } + function C(n) { + this.c = n; + } + function l9n(n) { + this.c = n; + } + function zv(n) { + this.d = n; + } + function CG(n) { + this.a = n; + } + function Te(n) { + this.a = n; + } + function a9n(n) { + this.a = n; + } + function MG(n) { + this.a = n; + } + function TG(n) { + this.a = n; + } + function AG(n) { + this.a = n; + } + function SG(n) { + this.a = n; + } + function PG(n) { + this.a = n; + } + function IG(n) { + this.a = n; + } + function Y3(n) { + this.a = n; + } + function d9n(n) { + this.a = n; + } + function b9n(n) { + this.a = n; + } + function Z3(n) { + this.a = n; + } + function w9n(n) { + this.a = n; + } + function g9n(n) { + this.a = n; + } + function p9n(n) { + this.a = n; + } + function m9n(n) { + this.a = n; + } + function v9n(n) { + this.a = n; + } + function k9n(n) { + this.a = n; + } + function y9n(n) { + this.a = n; + } + function j9n(n) { + this.a = n; + } + function E9n(n) { + this.a = n; + } + function C9n(n) { + this.a = n; + } + function M9n(n) { + this.a = n; + } + function T9n(n) { + this.a = n; + } + function A9n(n) { + this.a = n; + } + function S9n(n) { + this.a = n; + } + function P9n(n) { + this.a = n; + } + function Xv(n) { + this.a = n; + } + function I9n(n) { + this.a = n; + } + function O9n(n) { + this.a = n; + } + function D9n(n) { + this.a = n; + } + function L9n(n) { + this.a = n; + } + function IE(n) { + this.a = n; + } + function N9n(n) { + this.a = n; + } + function $9n(n) { + this.a = n; + } + function n4(n) { + this.a = n; + } + function OG(n) { + this.a = n; + } + function x9n(n) { + this.a = n; + } + function F9n(n) { + this.a = n; + } + function B9n(n) { + this.a = n; + } + function R9n(n) { + this.a = n; + } + function K9n(n) { + this.a = n; + } + function _9n(n) { + this.a = n; + } + function DG(n) { + this.a = n; + } + function LG(n) { + this.a = n; + } + function NG(n) { + this.a = n; + } + function Vv(n) { + this.a = n; + } + function OE(n) { + this.e = n; + } + function e4(n) { + this.a = n; + } + function H9n(n) { + this.a = n; + } + function ip(n) { + this.a = n; + } + function $G(n) { + this.a = n; + } + function q9n(n) { + this.a = n; + } + function U9n(n) { + this.a = n; + } + function G9n(n) { + this.a = n; + } + function z9n(n) { + this.a = n; + } + function X9n(n) { + this.a = n; + } + function V9n(n) { + this.a = n; + } + function W9n(n) { + this.a = n; + } + function J9n(n) { + this.a = n; + } + function Q9n(n) { + this.a = n; + } + function Y9n(n) { + this.a = n; + } + function Z9n(n) { + this.a = n; + } + function xG(n) { + this.a = n; + } + function n7n(n) { + this.a = n; + } + function e7n(n) { + this.a = n; + } + function t7n(n) { + this.a = n; + } + function i7n(n) { + this.a = n; + } + function r7n(n) { + this.a = n; + } + function c7n(n) { + this.a = n; + } + function u7n(n) { + this.a = n; + } + function o7n(n) { + this.a = n; + } + function s7n(n) { + this.a = n; + } + function f7n(n) { + this.a = n; + } + function h7n(n) { + this.a = n; + } + function l7n(n) { + this.a = n; + } + function a7n(n) { + this.a = n; + } + function d7n(n) { + this.a = n; + } + function b7n(n) { + this.a = n; + } + function w7n(n) { + this.a = n; + } + function g7n(n) { + this.a = n; + } + function p7n(n) { + this.a = n; + } + function m7n(n) { + this.a = n; + } + function v7n(n) { + this.a = n; + } + function k7n(n) { + this.a = n; + } + function y7n(n) { + this.a = n; + } + function j7n(n) { + this.a = n; + } + function E7n(n) { + this.a = n; + } + function C7n(n) { + this.a = n; + } + function M7n(n) { + this.a = n; + } + function T7n(n) { + this.a = n; + } + function A7n(n) { + this.a = n; + } + function S7n(n) { + this.a = n; + } + function P7n(n) { + this.a = n; + } + function I7n(n) { + this.a = n; + } + function O7n(n) { + this.a = n; + } + function D7n(n) { + this.a = n; + } + function L7n(n) { + this.a = n; + } + function N7n(n) { + this.a = n; + } + function $7n(n) { + this.a = n; + } + function x7n(n) { + this.a = n; + } + function F7n(n) { + this.a = n; + } + function B7n(n) { + this.c = n; + } + function R7n(n) { + this.b = n; + } + function K7n(n) { + this.a = n; + } + function _7n(n) { + this.a = n; + } + function H7n(n) { + this.a = n; + } + function q7n(n) { + this.a = n; + } + function U7n(n) { + this.a = n; + } + function G7n(n) { + this.a = n; + } + function z7n(n) { + this.a = n; + } + function X7n(n) { + this.a = n; + } + function V7n(n) { + this.a = n; + } + function W7n(n) { + this.a = n; + } + function J7n(n) { + this.a = n; + } + function Q7n(n) { + this.a = n; + } + function Y7n(n) { + this.a = n; + } + function Z7n(n) { + this.a = n; + } + function nkn(n) { + this.a = n; + } + function ekn(n) { + this.a = n; + } + function tkn(n) { + this.a = n; + } + function ikn(n) { + this.a = n; + } + function rkn(n) { + this.a = n; + } + function ckn(n) { + this.a = n; + } + function ukn(n) { + this.a = n; + } + function okn(n) { + this.a = n; + } + function skn(n) { + this.a = n; + } + function fkn(n) { + this.a = n; + } + function hkn(n) { + this.a = n; + } + function lkn(n) { + this.a = n; + } + function akn(n) { + this.a = n; + } + function sl(n) { + this.a = n; + } + function sg(n) { + this.a = n; + } + function dkn(n) { + this.a = n; + } + function bkn(n) { + this.a = n; + } + function wkn(n) { + this.a = n; + } + function gkn(n) { + this.a = n; + } + function pkn(n) { + this.a = n; + } + function mkn(n) { + this.a = n; + } + function vkn(n) { + this.a = n; + } + function kkn(n) { + this.a = n; + } + function ykn(n) { + this.a = n; + } + function jkn(n) { + this.a = n; + } + function Ekn(n) { + this.a = n; + } + function Ckn(n) { + this.a = n; + } + function Mkn(n) { + this.a = n; + } + function Tkn(n) { + this.a = n; + } + function Akn(n) { + this.a = n; + } + function Skn(n) { + this.a = n; + } + function Pkn(n) { + this.a = n; + } + function Ikn(n) { + this.a = n; + } + function Okn(n) { + this.a = n; + } + function Dkn(n) { + this.a = n; + } + function Lkn(n) { + this.a = n; + } + function Nkn(n) { + this.a = n; + } + function $kn(n) { + this.a = n; + } + function xkn(n) { + this.a = n; + } + function Fkn(n) { + this.a = n; + } + function Bkn(n) { + this.a = n; + } + function DE(n) { + this.a = n; + } + function Rkn(n) { + this.f = n; + } + function Kkn(n) { + this.a = n; + } + function _kn(n) { + this.a = n; + } + function Hkn(n) { + this.a = n; + } + function qkn(n) { + this.a = n; + } + function Ukn(n) { + this.a = n; + } + function Gkn(n) { + this.a = n; + } + function zkn(n) { + this.a = n; + } + function Xkn(n) { + this.a = n; + } + function Vkn(n) { + this.a = n; + } + function Wkn(n) { + this.a = n; + } + function Jkn(n) { + this.a = n; + } + function Qkn(n) { + this.a = n; + } + function Ykn(n) { + this.a = n; + } + function Zkn(n) { + this.a = n; + } + function nyn(n) { + this.a = n; + } + function eyn(n) { + this.a = n; + } + function tyn(n) { + this.a = n; + } + function iyn(n) { + this.a = n; + } + function ryn(n) { + this.a = n; + } + function cyn(n) { + this.a = n; + } + function uyn(n) { + this.a = n; + } + function oyn(n) { + this.a = n; + } + function syn(n) { + this.a = n; + } + function fyn(n) { + this.a = n; + } + function hyn(n) { + this.a = n; + } + function lyn(n) { + this.a = n; + } + function ayn(n) { + this.a = n; + } + function dyn(n) { + this.a = n; + } + function tD(n) { + this.a = n; + } + function FG(n) { + this.a = n; + } + function lt(n) { + this.b = n; + } + function byn(n) { + this.a = n; + } + function wyn(n) { + this.a = n; + } + function gyn(n) { + this.a = n; + } + function pyn(n) { + this.a = n; + } + function myn(n) { + this.a = n; + } + function vyn(n) { + this.a = n; + } + function kyn(n) { + this.a = n; + } + function yyn(n) { + this.b = n; + } + function jyn(n) { + this.a = n; + } + function X9(n) { + this.a = n; + } + function Eyn(n) { + this.a = n; + } + function Cyn(n) { + this.a = n; + } + function BG(n) { + this.c = n; + } + function LE(n) { + this.e = n; + } + function NE(n) { + this.a = n; + } + function $E(n) { + this.a = n; + } + function iD(n) { + this.a = n; + } + function Myn(n) { + this.d = n; + } + function Tyn(n) { + this.a = n; + } + function RG(n) { + this.a = n; + } + function KG(n) { + this.a = n; + } + function Wd(n) { + this.e = n; + } + function Ife() { + this.a = 0; + } + function de() { + Hu(this); + } + function Z() { + pL(this); + } + function rD() { + fIn(this); + } + function Ayn() { + } + function Jd() { + this.c = zdn; + } + function Syn(n, e) { + n.b += e; + } + function Ofe(n, e) { + e.Wb(n); + } + function Dfe(n) { + return n.a; + } + function Lfe(n) { + return n.a; + } + function Nfe(n) { + return n.a; + } + function $fe(n) { + return n.a; + } + function xfe(n) { + return n.a; + } + function M(n) { + return n.e; + } + function Ffe() { + return null; + } + function Bfe() { + return null; + } + function Rfe() { + Mz(), mLe(); + } + function Kfe(n) { + n.b.Of(n.e); + } + function Pyn(n) { + n.b = new CD(); + } + function Wv(n, e) { + n.b = e - n.b; + } + function Jv(n, e) { + n.a = e - n.a; + } + function Kn(n, e) { + n.push(e); + } + function Iyn(n, e) { + n.sort(e); + } + function Oyn(n, e) { + e.jd(n.a); + } + function _fe(n, e) { + gi(e, n); + } + function Hfe(n, e, t) { + n.Yd(t, e); + } + function V9(n, e) { + n.e = e, e.b = n; + } + function _G(n) { + oh(), this.a = n; + } + function Dyn(n) { + oh(), this.a = n; + } + function Lyn(n) { + oh(), this.a = n; + } + function cD(n) { + m0(), this.a = n; + } + function Nyn(n) { + O4(), VK.le(n); + } + function HG() { + HG = F, new de(); + } + function Ga() { + ZTn.call(this); + } + function qG() { + ZTn.call(this); + } + function UG() { + Ga.call(this); + } + function uD() { + Ga.call(this); + } + function $yn() { + Ga.call(this); + } + function W9() { + Ga.call(this); + } + function Mu() { + Ga.call(this); + } + function rp() { + Ga.call(this); + } + function Pe() { + Ga.call(this); + } + function Bo() { + Ga.call(this); + } + function xyn() { + Ga.call(this); + } + function nc() { + Ga.call(this); + } + function Fyn() { + Ga.call(this); + } + function Byn() { + this.a = this; + } + function xE() { + this.Bb |= 256; + } + function Ryn() { + this.b = new zMn(); + } + function Pb(n, e) { + n.length = e; + } + function FE(n, e) { + nn(n.a, e); + } + function qfe(n, e) { + wnn(n.c, e); + } + function Ufe(n, e) { + fi(n.b, e); + } + function Gfe(n, e) { + uA(n.a, e); + } + function zfe(n, e) { + cx(n.a, e); + } + function t4(n, e) { + rt(n.e, e); + } + function cp(n) { + jA(n.c, n.b); + } + function Xfe(n, e) { + n.kc().Nb(e); + } + function GG(n) { + this.a = R5e(n); + } + function ni() { + this.a = new de(); + } + function Kyn() { + this.a = new de(); + } + function zG() { + this.a = new cCn(); + } + function BE() { + this.a = new Z(); + } + function oD() { + this.a = new Z(); + } + function XG() { + this.a = new Z(); + } + function hs() { + this.a = new ubn(); + } + function za() { + this.a = new $Ln(); + } + function VG() { + this.a = new HU(); + } + function WG() { + this.a = new AOn(); + } + function JG() { + this.a = new RAn(); + } + function _yn() { + this.a = new Z(); + } + function Hyn() { + this.a = new Z(); + } + function qyn() { + this.a = new Z(); + } + function QG() { + this.a = new Z(); + } + function Uyn() { + this.d = new Z(); + } + function Gyn() { + this.a = new XOn(); + } + function zyn() { + this.a = new ni(); + } + function Xyn() { + this.a = new de(); + } + function Vyn() { + this.b = new de(); + } + function Wyn() { + this.b = new Z(); + } + function YG() { + this.e = new Z(); + } + function Jyn() { + this.a = new n8n(); + } + function Qyn() { + this.d = new Z(); + } + function Yyn() { + YIn.call(this); + } + function Zyn() { + YIn.call(this); + } + function njn() { + Z.call(this); + } + function ZG() { + UG.call(this); + } + function nz() { + BE.call(this); + } + function ejn() { + qC.call(this); + } + function tjn() { + QG.call(this); + } + function Qv() { + Ayn.call(this); + } + function sD() { + Qv.call(this); + } + function up() { + Ayn.call(this); + } + function ez() { + up.call(this); + } + function ijn() { + cz.call(this); + } + function rjn() { + cz.call(this); + } + function cjn() { + cz.call(this); + } + function ujn() { + uz.call(this); + } + function Yv() { + fvn.call(this); + } + function tz() { + fvn.call(this); + } + function Tu() { + Ct.call(this); + } + function ojn() { + jjn.call(this); + } + function sjn() { + jjn.call(this); + } + function fjn() { + de.call(this); + } + function hjn() { + de.call(this); + } + function ljn() { + de.call(this); + } + function fD() { + uxn.call(this); + } + function ajn() { + ni.call(this); + } + function djn() { + xE.call(this); + } + function hD() { + RX.call(this); + } + function iz() { + de.call(this); + } + function lD() { + RX.call(this); + } + function aD() { + de.call(this); + } + function bjn() { + de.call(this); + } + function rz() { + ME.call(this); + } + function wjn() { + rz.call(this); + } + function gjn() { + ME.call(this); + } + function pjn() { + cG.call(this); + } + function cz() { + this.a = new ni(); + } + function mjn() { + this.a = new de(); + } + function vjn() { + this.a = new Z(); + } + function uz() { + this.a = new de(); + } + function op() { + this.a = new Ct(); + } + function kjn() { + this.j = new Z(); + } + function yjn() { + this.a = new vEn(); + } + function jjn() { + this.a = new vvn(); + } + function oz() { + this.a = new nmn(); + } + function Zv() { + Zv = F, KK = new $t(); + } + function dD() { + dD = F, _K = new Cjn(); + } + function bD() { + bD = F, HK = new Ejn(); + } + function Ejn() { + XO.call(this, ""); + } + function Cjn() { + XO.call(this, ""); + } + function Mjn(n) { + P$n.call(this, n); + } + function Tjn(n) { + P$n.call(this, n); + } + function sz(n) { + hG.call(this, n); + } + function fz(n) { + VEn.call(this, n); + } + function Vfe(n) { + VEn.call(this, n); + } + function Wfe(n) { + fz.call(this, n); + } + function Jfe(n) { + fz.call(this, n); + } + function Qfe(n) { + fz.call(this, n); + } + function Ajn(n) { + zN.call(this, n); + } + function Sjn(n) { + zN.call(this, n); + } + function Pjn(n) { + oSn.call(this, n); + } + function Ijn(n) { + Dz.call(this, n); + } + function n6(n) { + WE.call(this, n); + } + function hz(n) { + WE.call(this, n); + } + function Ojn(n) { + WE.call(this, n); + } + function lz(n) { + vje.call(this, n); + } + function az(n) { + lz.call(this, n); + } + function ec(n) { + SPn.call(this, n); + } + function Djn(n) { + ec.call(this, n); + } + function sp() { + U9.call(this, {}); + } + function Ljn() { + Ljn = F, bQn = new T0n(); + } + function RE() { + RE = F, GK = new PTn(); + } + function Njn() { + Njn = F, sun = new mc(); + } + function dz() { + dz = F, fun = new N1(); + } + function KE() { + KE = F, T8 = new $1(); + } + function wD(n) { + b4(), this.a = n; + } + function gD(n) { + KQ(), this.a = n; + } + function Qd(n) { + nN(), this.f = n; + } + function pD(n) { + nN(), this.f = n; + } + function $jn(n) { + wSn(), this.a = n; + } + function xjn(n) { + n.b = null, n.c = 0; + } + function Yfe(n, e) { + n.e = e, wqn(n, e); + } + function Zfe(n, e) { + n.a = e, uEe(n); + } + function mD(n, e, t) { + n.a[e.g] = t; + } + function nhe(n, e, t) { + yke(t, n, e); + } + function ehe(n, e) { + Jae(e.i, n.n); + } + function Fjn(n, e) { + k6e(n).Cd(e); + } + function the(n, e) { + n.a.ec().Mc(e); + } + function Bjn(n, e) { + return n.g - e.g; + } + function ihe(n, e) { + return n * n / e; + } + function on(n) { + return Jn(n), n; + } + function $(n) { + return Jn(n), n; + } + function J9(n) { + return Jn(n), n; + } + function rhe(n) { + return new AE(n); + } + function che(n) { + return new qb(n); + } + function bz(n) { + return Jn(n), n; + } + function uhe(n) { + return Jn(n), n; + } + function _E(n) { + ec.call(this, n); + } + function Ir(n) { + ec.call(this, n); + } + function Rjn(n) { + ec.call(this, n); + } + function vD(n) { + SPn.call(this, n); + } + function i4(n) { + ec.call(this, n); + } + function Gn(n) { + ec.call(this, n); + } + function Or(n) { + ec.call(this, n); + } + function Kjn(n) { + ec.call(this, n); + } + function fp(n) { + ec.call(this, n); + } + function Kl(n) { + ec.call(this, n); + } + function _l(n) { + ec.call(this, n); + } + function hp(n) { + ec.call(this, n); + } + function eh(n) { + ec.call(this, n); + } + function kD(n) { + ec.call(this, n); + } + function Le(n) { + ec.call(this, n); + } + function Ku(n) { + Jn(n), this.a = n; + } + function wz(n) { + return ld(n), n; + } + function e6(n) { + AW(n, n.length); + } + function t6(n) { + return n.b == n.c; + } + function Ib(n) { + return !!n && n.b; + } + function ohe(n) { + return !!n && n.k; + } + function she(n) { + return !!n && n.j; + } + function fhe(n, e, t) { + n.c.Ef(e, t); + } + function _jn(n, e) { + n.be(e), e.ae(n); + } + function lp(n) { + oh(), this.a = Se(n); + } + function yD() { + this.a = Oe(Se(ur)); + } + function Hjn() { + throw M(new Pe()); + } + function hhe() { + throw M(new Pe()); + } + function gz() { + throw M(new Pe()); + } + function qjn() { + throw M(new Pe()); + } + function lhe() { + throw M(new Pe()); + } + function ahe() { + throw M(new Pe()); + } + function HE() { + HE = F, O4(); + } + function Hl() { + G9.call(this, ""); + } + function i6() { + G9.call(this, ""); + } + function x1() { + G9.call(this, ""); + } + function fg() { + G9.call(this, ""); + } + function pz(n) { + Ir.call(this, n); + } + function mz(n) { + Ir.call(this, n); + } + function th(n) { + Gn.call(this, n); + } + function r4(n) { + Q3.call(this, n); + } + function Ujn(n) { + r4.call(this, n); + } + function jD(n) { + BC.call(this, n); + } + function ED(n) { + QX.call(this, n, 0); + } + function CD() { + fJ.call(this, 12, 3); + } + function T(n, e) { + return yOn(n, e); + } + function qE(n, e) { + return o$(n, e); + } + function dhe(n, e) { + return n.a - e.a; + } + function bhe(n, e) { + return n.a - e.a; + } + function whe(n, e) { + return n.a - e.a; + } + function ghe(n, e) { + return e in n.a; + } + function Gjn(n) { + return n.a ? n.b : 0; + } + function phe(n) { + return n.a ? n.b : 0; + } + function mhe(n, e, t) { + e.Cd(n.a[t]); + } + function vhe(n, e, t) { + e.Pe(n.a[t]); + } + function khe(n, e) { + n.b = new rr(e); + } + function yhe(n, e) { + return n.b = e, n; + } + function zjn(n, e) { + return n.c = e, n; + } + function Xjn(n, e) { + return n.f = e, n; + } + function jhe(n, e) { + return n.g = e, n; + } + function vz(n, e) { + return n.a = e, n; + } + function kz(n, e) { + return n.f = e, n; + } + function Ehe(n, e) { + return n.k = e, n; + } + function yz(n, e) { + return n.a = e, n; + } + function Che(n, e) { + return n.e = e, n; + } + function jz(n, e) { + return n.e = e, n; + } + function Mhe(n, e) { + return n.f = e, n; + } + function The(n, e) { + n.b = !0, n.d = e; + } + function Ahe(n, e) { + return n.b - e.b; + } + function She(n, e) { + return n.g - e.g; + } + function Phe(n, e) { + return n ? 0 : e - 1; + } + function Vjn(n, e) { + return n ? 0 : e - 1; + } + function Ihe(n, e) { + return n ? e - 1 : 0; + } + function Ohe(n, e) { + return n.s - e.s; + } + function Dhe(n, e) { + return e.rg(n); + } + function Yd(n, e) { + return n.b = e, n; + } + function UE(n, e) { + return n.a = e, n; + } + function Zd(n, e) { + return n.c = e, n; + } + function n0(n, e) { + return n.d = e, n; + } + function e0(n, e) { + return n.e = e, n; + } + function Ez(n, e) { + return n.f = e, n; + } + function r6(n, e) { + return n.a = e, n; + } + function c4(n, e) { + return n.b = e, n; + } + function u4(n, e) { + return n.c = e, n; + } + function an(n, e) { + return n.c = e, n; + } + function Sn(n, e) { + return n.b = e, n; + } + function dn(n, e) { + return n.d = e, n; + } + function bn(n, e) { + return n.e = e, n; + } + function Lhe(n, e) { + return n.f = e, n; + } + function wn(n, e) { + return n.g = e, n; + } + function gn(n, e) { + return n.a = e, n; + } + function pn(n, e) { + return n.i = e, n; + } + function mn(n, e) { + return n.j = e, n; + } + function Nhe(n, e) { + ua(), ic(e, n); + } + function $he(n, e, t) { + Qbe(n.a, e, t); + } + function GE(n) { + $L.call(this, n); + } + function Wjn(n) { + n8e.call(this, n); + } + function Jjn(n) { + PIn.call(this, n); + } + function Cz(n) { + PIn.call(this, n); + } + function F1(n) { + S0.call(this, n); + } + function Qjn(n) { + CN.call(this, n); + } + function Yjn(n) { + CN.call(this, n); + } + function Zjn() { + LX.call(this, ""); + } + function Li() { + this.a = 0, this.b = 0; + } + function nEn() { + this.b = 0, this.a = 0; + } + function eEn(n, e) { + n.b = 0, Zb(n, e); + } + function tEn(n, e) { + return n.k = e, n; + } + function xhe(n, e) { + return n.j = e, n; + } + function Fhe(n, e) { + n.c = e, n.b = !0; + } + function iEn() { + iEn = F, AQn = Vke(); + } + function B1() { + B1 = F, koe = cke(); + } + function rEn() { + rEn = F, Ti = pye(); + } + function Mz() { + Mz = F, Da = z4(); + } + function o4() { + o4 = F, Gdn = uke(); + } + function cEn() { + cEn = F, rse = oke(); + } + function Tz() { + Tz = F, jc = iEe(); + } + function of(n) { + return n.e && n.e(); + } + function uEn(n) { + return n.l | n.m << 22; + } + function oEn(n, e) { + return n.c._b(e); + } + function sEn(n, e) { + return cBn(n.b, e); + } + function MD(n) { + return n ? n.d : null; + } + function Bhe(n) { + return n ? n.g : null; + } + function Rhe(n) { + return n ? n.i : null; + } + function Xa(n) { + return ll(n), n.o; + } + function hg(n, e) { + return n.a += e, n; + } + function TD(n, e) { + return n.a += e, n; + } + function ql(n, e) { + return n.a += e, n; + } + function t0(n, e) { + return n.a += e, n; + } + function Az(n, e) { + for (; n.Bd(e); ) + ; + } + function zE(n) { + this.a = new ap(n); + } + function fEn() { + throw M(new Pe()); + } + function hEn() { + throw M(new Pe()); + } + function lEn() { + throw M(new Pe()); + } + function aEn() { + throw M(new Pe()); + } + function dEn() { + throw M(new Pe()); + } + function bEn() { + throw M(new Pe()); + } + function Ul(n) { + this.a = new iN(n); + } + function wEn() { + this.a = new F5(Kln); + } + function gEn() { + this.b = new F5(cln); + } + function pEn() { + this.a = new F5(h1n); + } + function mEn() { + this.b = new F5(Fq); + } + function vEn() { + this.b = new F5(Fq); + } + function XE(n) { + this.a = 0, this.b = n; + } + function Sz(n) { + XGn(), OLe(this, n); + } + function s4(n) { + return X1(n), n.a; + } + function Q9(n) { + return n.b != n.d.c; + } + function Pz(n, e) { + return n.d[e.p]; + } + function kEn(n, e) { + return VTe(n, e); + } + function Iz(n, e, t) { + n.splice(e, t); + } + function lg(n, e) { + for (; n.Re(e); ) + ; + } + function yEn(n) { + n.c ? Lqn(n) : Nqn(n); + } + function jEn() { + throw M(new Pe()); + } + function EEn() { + throw M(new Pe()); + } + function CEn() { + throw M(new Pe()); + } + function MEn() { + throw M(new Pe()); + } + function TEn() { + throw M(new Pe()); + } + function AEn() { + throw M(new Pe()); + } + function SEn() { + throw M(new Pe()); + } + function PEn() { + throw M(new Pe()); + } + function IEn() { + throw M(new Pe()); + } + function OEn() { + throw M(new Pe()); + } + function Khe() { + throw M(new nc()); + } + function _he() { + throw M(new nc()); + } + function Y9(n) { + this.a = new DEn(n); + } + function DEn(n) { + Gme(this, n, Eje()); + } + function Z9(n) { + return !n || sIn(n); + } + function n7(n) { + return nh[n] != -1; + } + function Hhe() { + cP != 0 && (cP = 0), uP = -1; + } + function LEn() { + RK == null && (RK = []); + } + function e7(n, e) { + Mg.call(this, n, e); + } + function f4(n, e) { + e7.call(this, n, e); + } + function NEn(n, e) { + this.a = n, this.b = e; + } + function $En(n, e) { + this.a = n, this.b = e; + } + function xEn(n, e) { + this.a = n, this.b = e; + } + function FEn(n, e) { + this.a = n, this.b = e; + } + function BEn(n, e) { + this.a = n, this.b = e; + } + function REn(n, e) { + this.a = n, this.b = e; + } + function KEn(n, e) { + this.a = n, this.b = e; + } + function h4(n, e) { + this.e = n, this.d = e; + } + function Oz(n, e) { + this.b = n, this.c = e; + } + function _En(n, e) { + this.b = n, this.a = e; + } + function HEn(n, e) { + this.b = n, this.a = e; + } + function qEn(n, e) { + this.b = n, this.a = e; + } + function UEn(n, e) { + this.b = n, this.a = e; + } + function GEn(n, e) { + this.a = n, this.b = e; + } + function AD(n, e) { + this.a = n, this.b = e; + } + function zEn(n, e) { + this.a = n, this.f = e; + } + function i0(n, e) { + this.g = n, this.i = e; + } + function je(n, e) { + this.f = n, this.g = e; + } + function XEn(n, e) { + this.b = n, this.c = e; + } + function VEn(n) { + _X(n.dc()), this.c = n; + } + function qhe(n, e) { + this.a = n, this.b = e; + } + function WEn(n, e) { + this.a = n, this.b = e; + } + function JEn(n) { + this.a = u(Se(n), 15); + } + function Dz(n) { + this.a = u(Se(n), 15); + } + function QEn(n) { + this.a = u(Se(n), 85); + } + function VE(n) { + this.b = u(Se(n), 85); + } + function WE(n) { + this.b = u(Se(n), 51); + } + function JE() { + this.q = new y.Date(); + } + function SD(n, e) { + this.a = n, this.b = e; + } + function YEn(n, e) { + return nu(n.b, e); + } + function t7(n, e) { + return n.b.Hc(e); + } + function ZEn(n, e) { + return n.b.Ic(e); + } + function nCn(n, e) { + return n.b.Qc(e); + } + function eCn(n, e) { + return n.b.Hc(e); + } + function tCn(n, e) { + return n.c.uc(e); + } + function iCn(n, e) { + return ct(n.c, e); + } + function sf(n, e) { + return n.a._b(e); + } + function rCn(n, e) { + return n > e && e < W5; + } + function c6(n) { + return n.f.c + n.i.c; + } + function Uhe(n) { + return XPn(), n ? dQn : aQn; + } + function ap(n) { + gFn.call(this, n, 0); + } + function cCn() { + iN.call(this, null); + } + function dp(n) { + this.c = n, r$n(this); + } + function Ct() { + ETn(this), vo(this); + } + function fl() { + fl = F, mQn = new A0n(); + } + function l4() { + l4 = F, fv = new P0n(); + } + function Ob() { + Ob = F, n_ = new UMn(); + } + function QE() { + QE = F, PQn = new GMn(); + } + function a4() { + a4 = F, xun = new K0n(); + } + function Lz() { + i$.call(this, null); + } + function Va() { + Va = F, v3 = new W0n(); + } + function Gt(n, e) { + X1(n), n.a.Nb(e); + } + function Ghe(n, e) { + return n.a.Xc(e); + } + function zhe(n, e) { + return n.a.Yc(e); + } + function PD(n, e) { + return n.a.$c(e); + } + function ID(n, e) { + return n.a._c(e); + } + function Xhe(n, e) { + return n.Gc(e), n; + } + function Vhe(n, e) { + return Bi(n, e), n; + } + function Whe(n, e) { + aF(H(n.a), e); + } + function Jhe(n, e) { + aF(H(n.a), e); + } + function uCn(n, e) { + return n.Gc(e), n; + } + function Qhe(n, e) { + return n.a.f = e, n; + } + function oCn(n, e) { + return n.a.d = e, n; + } + function sCn(n, e) { + return n.a.g = e, n; + } + function fCn(n, e) { + return n.a.j = e, n; + } + function Os(n, e) { + return n.a.a = e, n; + } + function Ds(n, e) { + return n.a.d = e, n; + } + function Ls(n, e) { + return n.a.e = e, n; + } + function Ns(n, e) { + return n.a.g = e, n; + } + function i7(n, e) { + return n.a.f = e, n; + } + function Yhe(n) { + return n.b = !1, n; + } + function hCn() { + hCn = F, RQn = new nbn(); + } + function YE() { + YE = F, b_ = new wAn(); + } + function Nz() { + Nz = F, EZn = new Xbn(); + } + function lCn() { + lCn = F, CZn = new nwn(); + } + function $z() { + $z = F, MZn = new gPn(); + } + function xz() { + xz = F, Don = new rwn(); + } + function aCn() { + aCn = F, NZn = new bwn(); + } + function u6() { + u6 = F, xZn = new wwn(); + } + function r7() { + r7 = F, KZn = new Hwn(); + } + function c7() { + c7 = F, RZn = new Li(); + } + function dCn() { + dCn = F, UZn = new Tgn(); + } + function o6() { + o6 = F, YZn = new opn(); + } + function ZE() { + ZE = F, w2 = new Opn(); + } + function nC() { + nC = F, Qte = new nvn(); + } + function eC() { + eC = F, Bq = new wCn(); + } + function tC() { + tC = F, Rq = new bAn(); + } + function s6() { + s6 = F, Hj = new wIn(); + } + function bCn() { + Z$n(), this.c = new CD(); + } + function wCn() { + je.call(this, WXn, 0); + } + function Zhe(n, e, t) { + Dr(n.d, e.f, t); + } + function nle(n, e, t, i) { + I9e(n, i, e, t); + } + function ele(n, e, t, i) { + eTe(i, n, e, t); + } + function tle(n, e, t, i) { + ODe(i, n, e, t); + } + function f6(n, e) { + s1(n.c.c, e.b, e); + } + function r0(n, e) { + s1(n.c.b, e.c, e); + } + function ile(n) { + return n.e.b + n.f.b; + } + function rle(n) { + return n.e.a + n.f.a; + } + function cle(n) { + return n.b ? n.b : n.a; + } + function ule(n) { + return (n.c + n.a) / 2; + } + function gCn(n, e) { + return K7e(n.a, e); + } + function h6(n, e) { + return n.a = e.g, n; + } + function Fz() { + Fz = F, Udn = new bjn(); + } + function pCn() { + pCn = F, Koe = new ljn(); + } + function c0() { + c0 = F, moe = new evn(); + } + function mCn() { + mCn = F, Toe = new avn(); + } + function vCn() { + vCn = F, Roe = new hjn(); + } + function R1() { + R1 = F, Ps = new iz(); + } + function iC() { + iC = F, yO = new de(); + } + function l6() { + l6 = F, MU = new ATn(); + } + function Gl() { + Gl = F, dE = new STn(); + } + function OD() { + OD = F, nse = new A6n(); + } + function br() { + br = F, tse = new S6n(); + } + function K1() { + K1 = F, xa = new I5n(); + } + function Bz() { + Bz = F, e0n = new Z(); + } + function rC(n) { + return u(n, 44).ld(); + } + function DD(n) { + return n.b < n.d.gc(); + } + function ole(n, e) { + return e.split(n); + } + function LD(n, e) { + return Cc(n, e) > 0; + } + function ND(n, e) { + return Cc(n, e) < 0; + } + function kCn(n, e) { + return JL(n.a, e); + } + function sle(n, e) { + jOn.call(this, n, e); + } + function Rz(n) { + wN(), oSn.call(this, n); + } + function Kz(n, e) { + wPn(n, n.length, e); + } + function u7(n, e) { + qPn(n, n.length, e); + } + function a6(n, e) { + return n.a.get(e); + } + function yCn(n, e) { + return nu(n.e, e); + } + function _z(n) { + return Jn(n), !1; + } + function Hz(n) { + this.a = u(Se(n), 229); + } + function cC(n) { + In.call(this, n, 21); + } + function uC(n, e) { + je.call(this, n, e); + } + function $D(n, e) { + je.call(this, n, e); + } + function jCn(n, e) { + this.b = n, this.a = e; + } + function oC(n, e) { + this.d = n, this.e = e; + } + function ECn(n, e) { + this.a = n, this.b = e; + } + function CCn(n, e) { + this.a = n, this.b = e; + } + function MCn(n, e) { + this.a = n, this.b = e; + } + function TCn(n, e) { + this.a = n, this.b = e; + } + function bp(n, e) { + this.a = n, this.b = e; + } + function ACn(n, e) { + this.b = n, this.a = e; + } + function qz(n, e) { + this.b = n, this.a = e; + } + function Uz(n, e) { + je.call(this, n, e); + } + function Gz(n, e) { + je.call(this, n, e); + } + function ag(n, e) { + je.call(this, n, e); + } + function xD(n, e) { + je.call(this, n, e); + } + function FD(n, e) { + je.call(this, n, e); + } + function BD(n, e) { + je.call(this, n, e); + } + function sC(n, e) { + je.call(this, n, e); + } + function zz(n, e) { + this.b = n, this.a = e; + } + function fC(n, e) { + je.call(this, n, e); + } + function Xz(n, e) { + this.b = n, this.a = e; + } + function hC(n, e) { + je.call(this, n, e); + } + function SCn(n, e) { + this.b = n, this.a = e; + } + function Vz(n, e) { + je.call(this, n, e); + } + function RD(n, e) { + je.call(this, n, e); + } + function o7(n, e) { + je.call(this, n, e); + } + function d6(n, e, t) { + n.splice(e, 0, t); + } + function fle(n, e, t) { + n.Mb(t) && e.Cd(t); + } + function hle(n, e, t) { + e.Pe(n.a.Ye(t)); + } + function lle(n, e, t) { + e.Dd(n.a.Ze(t)); + } + function ale(n, e, t) { + e.Cd(n.a.Kb(t)); + } + function dle(n, e) { + return Su(n.c, e); + } + function ble(n, e) { + return Su(n.e, e); + } + function lC(n, e) { + je.call(this, n, e); + } + function aC(n, e) { + je.call(this, n, e); + } + function b6(n, e) { + je.call(this, n, e); + } + function Wz(n, e) { + je.call(this, n, e); + } + function ei(n, e) { + je.call(this, n, e); + } + function dC(n, e) { + je.call(this, n, e); + } + function PCn(n, e) { + this.a = n, this.b = e; + } + function ICn(n, e) { + this.a = n, this.b = e; + } + function OCn(n, e) { + this.a = n, this.b = e; + } + function DCn(n, e) { + this.a = n, this.b = e; + } + function LCn(n, e) { + this.a = n, this.b = e; + } + function NCn(n, e) { + this.a = n, this.b = e; + } + function $Cn(n, e) { + this.b = n, this.a = e; + } + function xCn(n, e) { + this.b = n, this.a = e; + } + function Jz(n, e) { + this.b = n, this.a = e; + } + function d4(n, e) { + this.c = n, this.d = e; + } + function FCn(n, e) { + this.e = n, this.d = e; + } + function BCn(n, e) { + this.a = n, this.b = e; + } + function RCn(n, e) { + this.a = n, this.b = e; + } + function KCn(n, e) { + this.a = n, this.b = e; + } + function _Cn(n, e) { + this.b = n, this.a = e; + } + function HCn(n, e) { + this.b = e, this.c = n; + } + function bC(n, e) { + je.call(this, n, e); + } + function s7(n, e) { + je.call(this, n, e); + } + function KD(n, e) { + je.call(this, n, e); + } + function Qz(n, e) { + je.call(this, n, e); + } + function w6(n, e) { + je.call(this, n, e); + } + function _D(n, e) { + je.call(this, n, e); + } + function HD(n, e) { + je.call(this, n, e); + } + function f7(n, e) { + je.call(this, n, e); + } + function Yz(n, e) { + je.call(this, n, e); + } + function qD(n, e) { + je.call(this, n, e); + } + function g6(n, e) { + je.call(this, n, e); + } + function Zz(n, e) { + je.call(this, n, e); + } + function p6(n, e) { + je.call(this, n, e); + } + function m6(n, e) { + je.call(this, n, e); + } + function Db(n, e) { + je.call(this, n, e); + } + function UD(n, e) { + je.call(this, n, e); + } + function GD(n, e) { + je.call(this, n, e); + } + function nX(n, e) { + je.call(this, n, e); + } + function h7(n, e) { + je.call(this, n, e); + } + function dg(n, e) { + je.call(this, n, e); + } + function zD(n, e) { + je.call(this, n, e); + } + function wC(n, e) { + je.call(this, n, e); + } + function l7(n, e) { + je.call(this, n, e); + } + function Lb(n, e) { + je.call(this, n, e); + } + function gC(n, e) { + je.call(this, n, e); + } + function eX(n, e) { + je.call(this, n, e); + } + function XD(n, e) { + je.call(this, n, e); + } + function VD(n, e) { + je.call(this, n, e); + } + function WD(n, e) { + je.call(this, n, e); + } + function JD(n, e) { + je.call(this, n, e); + } + function QD(n, e) { + je.call(this, n, e); + } + function YD(n, e) { + je.call(this, n, e); + } + function ZD(n, e) { + je.call(this, n, e); + } + function qCn(n, e) { + this.b = n, this.a = e; + } + function tX(n, e) { + je.call(this, n, e); + } + function UCn(n, e) { + this.a = n, this.b = e; + } + function GCn(n, e) { + this.a = n, this.b = e; + } + function zCn(n, e) { + this.a = n, this.b = e; + } + function iX(n, e) { + je.call(this, n, e); + } + function rX(n, e) { + je.call(this, n, e); + } + function XCn(n, e) { + this.a = n, this.b = e; + } + function wle(n, e) { + return k4(), e != n; + } + function a7(n) { + return oe(n.a), n.b; + } + function nL(n) { + return jCe(n, n.c), n; + } + function VCn() { + return iEn(), new AQn(); + } + function WCn() { + VC(), this.a = new yV(); + } + function JCn() { + OA(), this.a = new ni(); + } + function QCn() { + NN(), this.b = new ni(); + } + function YCn(n, e) { + this.b = n, this.d = e; + } + function ZCn(n, e) { + this.a = n, this.b = e; + } + function nMn(n, e) { + this.a = n, this.b = e; + } + function eMn(n, e) { + this.a = n, this.b = e; + } + function tMn(n, e) { + this.b = n, this.a = e; + } + function cX(n, e) { + je.call(this, n, e); + } + function uX(n, e) { + je.call(this, n, e); + } + function pC(n, e) { + je.call(this, n, e); + } + function u0(n, e) { + je.call(this, n, e); + } + function eL(n, e) { + je.call(this, n, e); + } + function mC(n, e) { + je.call(this, n, e); + } + function oX(n, e) { + je.call(this, n, e); + } + function sX(n, e) { + je.call(this, n, e); + } + function d7(n, e) { + je.call(this, n, e); + } + function fX(n, e) { + je.call(this, n, e); + } + function tL(n, e) { + je.call(this, n, e); + } + function vC(n, e) { + je.call(this, n, e); + } + function iL(n, e) { + je.call(this, n, e); + } + function rL(n, e) { + je.call(this, n, e); + } + function cL(n, e) { + je.call(this, n, e); + } + function uL(n, e) { + je.call(this, n, e); + } + function hX(n, e) { + je.call(this, n, e); + } + function oL(n, e) { + je.call(this, n, e); + } + function lX(n, e) { + je.call(this, n, e); + } + function b7(n, e) { + je.call(this, n, e); + } + function sL(n, e) { + je.call(this, n, e); + } + function aX(n, e) { + je.call(this, n, e); + } + function w7(n, e) { + je.call(this, n, e); + } + function dX(n, e) { + je.call(this, n, e); + } + function iMn(n, e) { + this.b = n, this.a = e; + } + function rMn(n, e) { + this.b = n, this.a = e; + } + function cMn(n, e) { + this.b = n, this.a = e; + } + function uMn(n, e) { + this.b = n, this.a = e; + } + function bX(n, e) { + this.a = n, this.b = e; + } + function oMn(n, e) { + this.a = n, this.b = e; + } + function sMn(n, e) { + this.a = n, this.b = e; + } + function V(n, e) { + this.a = n, this.b = e; + } + function v6(n, e) { + je.call(this, n, e); + } + function g7(n, e) { + je.call(this, n, e); + } + function wp(n, e) { + je.call(this, n, e); + } + function k6(n, e) { + je.call(this, n, e); + } + function p7(n, e) { + je.call(this, n, e); + } + function fL(n, e) { + je.call(this, n, e); + } + function kC(n, e) { + je.call(this, n, e); + } + function y6(n, e) { + je.call(this, n, e); + } + function hL(n, e) { + je.call(this, n, e); + } + function yC(n, e) { + je.call(this, n, e); + } + function bg(n, e) { + je.call(this, n, e); + } + function m7(n, e) { + je.call(this, n, e); + } + function j6(n, e) { + je.call(this, n, e); + } + function E6(n, e) { + je.call(this, n, e); + } + function v7(n, e) { + je.call(this, n, e); + } + function jC(n, e) { + je.call(this, n, e); + } + function wg(n, e) { + je.call(this, n, e); + } + function lL(n, e) { + je.call(this, n, e); + } + function fMn(n, e) { + je.call(this, n, e); + } + function EC(n, e) { + je.call(this, n, e); + } + function hMn(n, e) { + this.a = n, this.b = e; + } + function lMn(n, e) { + this.a = n, this.b = e; + } + function aMn(n, e) { + this.a = n, this.b = e; + } + function dMn(n, e) { + this.a = n, this.b = e; + } + function bMn(n, e) { + this.a = n, this.b = e; + } + function wMn(n, e) { + this.a = n, this.b = e; + } + function bi(n, e) { + this.a = n, this.b = e; + } + function gMn(n, e) { + this.a = n, this.b = e; + } + function pMn(n, e) { + this.a = n, this.b = e; + } + function mMn(n, e) { + this.a = n, this.b = e; + } + function vMn(n, e) { + this.a = n, this.b = e; + } + function kMn(n, e) { + this.a = n, this.b = e; + } + function yMn(n, e) { + this.a = n, this.b = e; + } + function jMn(n, e) { + this.b = n, this.a = e; + } + function EMn(n, e) { + this.b = n, this.a = e; + } + function CMn(n, e) { + this.b = n, this.a = e; + } + function MMn(n, e) { + this.b = n, this.a = e; + } + function TMn(n, e) { + this.a = n, this.b = e; + } + function AMn(n, e) { + this.a = n, this.b = e; + } + function CC(n, e) { + je.call(this, n, e); + } + function SMn(n, e) { + this.a = n, this.b = e; + } + function PMn(n, e) { + this.a = n, this.b = e; + } + function gp(n, e) { + je.call(this, n, e); + } + function IMn(n, e) { + this.f = n, this.c = e; + } + function wX(n, e) { + return Su(n.g, e); + } + function gle(n, e) { + return Su(e.b, n); + } + function OMn(n, e) { + return wx(n.a, e); + } + function ple(n, e) { + return -n.b.af(e); + } + function mle(n, e) { + n && Ve(hE, n, e); + } + function gX(n, e) { + n.i = null, kT(n, e); + } + function vle(n, e, t) { + jKn(e, oF(n, t)); + } + function kle(n, e, t) { + jKn(e, oF(n, t)); + } + function yle(n, e) { + WMe(n.a, u(e, 58)); + } + function DMn(n, e) { + G4e(n.a, u(e, 12)); + } + function MC(n, e) { + this.a = n, this.b = e; + } + function LMn(n, e) { + this.a = n, this.b = e; + } + function NMn(n, e) { + this.a = n, this.b = e; + } + function $Mn(n, e) { + this.a = n, this.b = e; + } + function xMn(n, e) { + this.a = n, this.b = e; + } + function FMn(n, e) { + this.d = n, this.b = e; + } + function BMn(n, e) { + this.e = n, this.a = e; + } + function k7(n, e) { + this.b = n, this.c = e; + } + function pX(n, e) { + this.i = n, this.g = e; + } + function mX(n, e) { + this.d = n, this.e = e; + } + function jle(n, e) { + ume(new ne(n), e); + } + function TC(n) { + return Fk(n.c, n.b); + } + function Kr(n) { + return n ? n.md() : null; + } + function x(n) { + return n == null ? null : n; + } + function Si(n) { + return typeof n === nB; + } + function Nb(n) { + return typeof n === i3; + } + function $b(n) { + return typeof n === btn; + } + function o0(n, e) { + return Cc(n, e) == 0; + } + function AC(n, e) { + return Cc(n, e) >= 0; + } + function C6(n, e) { + return Cc(n, e) != 0; + } + function SC(n, e) { + return Eve(n.Kc(), e); + } + function _1(n, e) { + return n.Rd().Xb(e); + } + function RMn(n) { + return eo(n), n.d.gc(); + } + function PC(n) { + return x6(n == null), n; + } + function M6(n, e) { + return n.a += "" + e, n; + } + function Cr(n, e) { + return n.a += "" + e, n; + } + function T6(n, e) { + return n.a += "" + e, n; + } + function Lc(n, e) { + return n.a += "" + e, n; + } + function Re(n, e) { + return n.a += "" + e, n; + } + function vX(n, e) { + return n.a += "" + e, n; + } + function Ele(n) { + return "" + (Jn(n), n); + } + function KMn(n) { + Hu(this), s5(this, n); + } + function _Mn() { + sJ(), bW.call(this); + } + function HMn(n, e) { + vW.call(this, n, e); + } + function qMn(n, e) { + vW.call(this, n, e); + } + function IC(n, e) { + vW.call(this, n, e); + } + function ir(n, e) { + Kt(n, e, n.c.b, n.c); + } + function gg(n, e) { + Kt(n, e, n.a, n.a.a); + } + function kX(n) { + return Ln(n, 0), null; + } + function UMn() { + this.b = 0, this.a = !1; + } + function GMn() { + this.b = 0, this.a = !1; + } + function zMn() { + this.b = new ap(Qb(12)); + } + function XMn() { + XMn = F, yYn = Ce(jx()); + } + function VMn() { + VMn = F, qZn = Ce(rqn()); + } + function WMn() { + WMn = F, are = Ce(Fxn()); + } + function yX() { + yX = F, HG(), hun = new de(); + } + function ff(n) { + return n.a = 0, n.b = 0, n; + } + function JMn(n, e) { + return n.a = e.g + 1, n; + } + function aL(n, e) { + Kb.call(this, n, e); + } + function Mn(n, e) { + Dt.call(this, n, e); + } + function pg(n, e) { + pX.call(this, n, e); + } + function QMn(n, e) { + C7.call(this, n, e); + } + function dL(n, e) { + Y4.call(this, n, e); + } + function Ge(n, e) { + iC(), Ve(yO, n, e); + } + function YMn(n, e) { + n.q.setTime(id(e)); + } + function Cle(n) { + y.clearTimeout(n); + } + function Mle(n) { + return Se(n), new A6(n); + } + function ZMn(n, e) { + return x(n) === x(e); + } + function nTn(n, e) { + return n.a.a.a.cc(e); + } + function bL(n, e) { + return qo(n.a, 0, e); + } + function jX(n) { + return Swe(u(n, 74)); + } + function pp(n) { + return wi((Jn(n), n)); + } + function Tle(n) { + return wi((Jn(n), n)); + } + function eTn(n) { + return Zc(n.l, n.m, n.h); + } + function EX(n, e) { + return Ec(n.a, e.a); + } + function Ale(n, e) { + return _Pn(n.a, e.a); + } + function Sle(n, e) { + return bt(n.a, e.a); + } + function ih(n, e) { + return n.indexOf(e); + } + function Ple(n, e) { + return n.j[e.p] == 2; + } + function s0(n, e) { + return n == e ? 0 : n ? 1 : -1; + } + function OC(n) { + return n < 10 ? "0" + n : "" + n; + } + function Vr(n) { + return typeof n === btn; + } + function Ile(n) { + return n == rb || n == Iw; + } + function Ole(n) { + return n == rb || n == Pw; + } + function tTn(n, e) { + return Ec(n.g, e.g); + } + function CX(n) { + return qr(n.b.b, n, 0); + } + function iTn() { + rM.call(this, 0, 0, 0, 0); + } + function rh() { + MG.call(this, new Ql()); + } + function MX(n, e) { + F4(n, 0, n.length, e); + } + function Dle(n, e) { + return nn(n.a, e), e; + } + function Lle(n, e) { + return Fs(), e.a += n; + } + function Nle(n, e) { + return Fs(), e.a += n; + } + function $le(n, e) { + return Fs(), e.c += n; + } + function xle(n, e) { + return nn(n.c, e), n; + } + function TX(n, e) { + return Mo(n.a, e), n; + } + function rTn(n) { + this.a = VCn(), this.b = n; + } + function cTn(n) { + this.a = VCn(), this.b = n; + } + function rr(n) { + this.a = n.a, this.b = n.b; + } + function A6(n) { + this.a = n, GO.call(this); + } + function uTn(n) { + this.a = n, GO.call(this); + } + function mp() { + Ho.call(this, 0, 0, 0, 0); + } + function DC(n) { + return Mo(new ii(), n); + } + function oTn(n) { + return jM(u(n, 123)); + } + function fo(n) { + return n.vh() && n.wh(); + } + function mg(n) { + return n != Qf && n != Pa; + } + function hl(n) { + return n == Br || n == Xr; + } + function vg(n) { + return n == us || n == Wf; + } + function sTn(n) { + return n == P2 || n == S2; + } + function Fle(n, e) { + return Ec(n.g, e.g); + } + function fTn(n, e) { + return new Y4(e, n); + } + function Ble(n, e) { + return new Y4(e, n); + } + function AX(n) { + return cbe(n.b.Kc(), n.a); + } + function wL(n, e) { + um(n, e), G4(n, n.D); + } + function gL(n, e, t) { + aT(n, e), lT(n, t); + } + function kg(n, e, t) { + I0(n, e), P0(n, t); + } + function Ro(n, e, t) { + tu(n, e), iu(n, t); + } + function y7(n, e, t) { + _4(n, e), q4(n, t); + } + function j7(n, e, t) { + H4(n, e), U4(n, t); + } + function hTn(n, e, t) { + fV.call(this, n, e, t); + } + function SX(n) { + IMn.call(this, n, !0); + } + function lTn() { + uC.call(this, "Tail", 3); + } + function aTn() { + uC.call(this, "Head", 1); + } + function H1(n) { + dh(), vve.call(this, n); + } + function f0(n) { + rM.call(this, n, n, n, n); + } + function pL(n) { + n.c = K(ki, Bn, 1, 0, 5, 1); + } + function PX(n) { + return n.b && xF(n), n.a; + } + function IX(n) { + return n.b && xF(n), n.c; + } + function Rle(n, e) { + Uf || (n.b = e); + } + function Kle(n, e) { + return n[n.length] = e; + } + function _le(n, e) { + return n[n.length] = e; + } + function Hle(n, e) { + return Yb(e, Sf(n)); + } + function qle(n, e) { + return Yb(e, Sf(n)); + } + function Ule(n, e) { + return pT(dN(n.d), e); + } + function Gle(n, e) { + return pT(dN(n.g), e); + } + function zle(n, e) { + return pT(dN(n.j), e); + } + function Ni(n, e) { + Dt.call(this, n.b, e); + } + function Xle(n, e) { + ve(Pc(n.a), LOn(e)); + } + function Vle(n, e) { + ve(no(n.a), NOn(e)); + } + function Wle(n, e, t) { + Ro(t, t.i + n, t.j + e); + } + function dTn(n, e, t) { + Rt(n.c[e.g], e.g, t); + } + function Jle(n, e, t) { + u(n.c, 71).Gi(e, t); + } + function mL(n, e, t) { + return Rt(n, e, t), t; + } + function bTn(n) { + eu(n.Sf(), new L9n(n)); + } + function yg(n) { + return n != null ? mt(n) : 0; + } + function Qle(n) { + return n == null ? 0 : mt(n); + } + function S6(n) { + nt(), Wd.call(this, n); + } + function wTn(n) { + this.a = n, UV.call(this, n); + } + function Tf() { + Tf = F, y.Math.log(2); + } + function Ko() { + Ko = F, rl = (mCn(), Toe); + } + function gTn() { + gTn = F, YH = new y5(aU); + } + function Ie() { + Ie = F, new pTn(), new Z(); + } + function pTn() { + new de(), new de(), new de(); + } + function Yle() { + throw M(new Kl(YJn)); + } + function Zle() { + throw M(new Kl(YJn)); + } + function n1e() { + throw M(new Kl(ZJn)); + } + function e1e() { + throw M(new Kl(ZJn)); + } + function vL(n) { + this.a = n, VE.call(this, n); + } + function kL(n) { + this.a = n, VE.call(this, n); + } + function mTn(n, e) { + m0(), this.a = n, this.b = e; + } + function t1e(n, e) { + Se(e), Ag(n).Jc(new Ru()); + } + function Yt(n, e) { + QL(n.c, n.c.length, e); + } + function tc(n) { + return n.a < n.c.c.length; + } + function OX(n) { + return n.a < n.c.a.length; + } + function vTn(n, e) { + return n.a ? n.b : e.We(); + } + function Ec(n, e) { + return n < e ? -1 : n > e ? 1 : 0; + } + function DX(n, e) { + return Cc(n, e) > 0 ? n : e; + } + function Zc(n, e, t) { + return { l: n, m: e, h: t }; + } + function i1e(n, e) { + n.a != null && DMn(e, n.a); + } + function r1e(n) { + Zi(n, null), Oi(n, null); + } + function c1e(n, e, t) { + return Ve(n.g, t, e); + } + function jg(n, e, t) { + return eZ(e, t, n.c); + } + function u1e(n, e, t) { + return Ve(n.k, t, e); + } + function o1e(n, e, t) { + return zOe(n, e, t), t; + } + function s1e(n, e) { + return ko(), e.n.b += n; + } + function kTn(n) { + eJ.call(this), this.b = n; + } + function LX(n) { + kV.call(this), this.a = n; + } + function yTn() { + uC.call(this, "Range", 2); + } + function LC(n) { + this.b = n, this.a = new Z(); + } + function jTn(n) { + this.b = new xbn(), this.a = n; + } + function ETn(n) { + n.a = new OO(), n.c = new OO(); + } + function CTn(n) { + n.a = new de(), n.d = new de(); + } + function MTn(n) { + $N(n, null), xN(n, null); + } + function TTn(n, e) { + return VOe(n.a, e, null); + } + function f1e(n, e) { + return Ve(n.a, e.a, e); + } + function Ki(n) { + return new V(n.a, n.b); + } + function NX(n) { + return new V(n.c, n.d); + } + function h1e(n) { + return new V(n.c, n.d); + } + function P6(n, e) { + return uOe(n.c, n.b, e); + } + function D(n, e) { + return n != null && Tx(n, e); + } + function yL(n, e) { + return Zve(n.Kc(), e) != -1; + } + function NC(n) { + return n.Ob() ? n.Pb() : null; + } + function l1e(n) { + this.b = (Dn(), new eD(n)); + } + function $X(n) { + this.a = n, de.call(this); + } + function ATn() { + C7.call(this, null, null); + } + function STn() { + _C.call(this, null, null); + } + function PTn() { + je.call(this, "INSTANCE", 0); + } + function ITn() { + NZ(), this.a = new F5(Oon); + } + function OTn(n) { + return ws(n, 0, n.length); + } + function a1e(n, e) { + return new WTn(n.Kc(), e); + } + function xX(n, e) { + return n.a.Bc(e) != null; + } + function DTn(n, e) { + me(n), n.Gc(u(e, 15)); + } + function d1e(n, e, t) { + n.c.bd(e, u(t, 136)); + } + function b1e(n, e, t) { + n.c.Ui(e, u(t, 136)); + } + function LTn(n, e) { + n.c && (iW(e), cOn(e)); + } + function w1e(n, e) { + n.q.setHours(e), H5(n, e); + } + function g1e(n, e) { + a0(e, n.a.a.a, n.a.a.b); + } + function p1e(n, e, t, i) { + Rt(n.a[e.g], t.g, i); + } + function jL(n, e, t) { + return n.a[e.g][t.g]; + } + function m1e(n, e) { + return n.e[e.c.p][e.p]; + } + function v1e(n, e) { + return n.c[e.c.p][e.p]; + } + function Af(n, e) { + return n.a[e.c.p][e.p]; + } + function k1e(n, e) { + return n.j[e.p] = OMe(e); + } + function EL(n, e) { + return n.a.Bc(e) != null; + } + function y1e(n, e) { + return $(R(e.a)) <= n; + } + function j1e(n, e) { + return $(R(e.a)) >= n; + } + function E1e(n, e) { + return KJ(n.f, e.Pg()); + } + function vp(n, e) { + return n.a * e.a + n.b * e.b; + } + function C1e(n, e) { + return n.a < OV(e) ? -1 : 1; + } + function M1e(n, e) { + return KJ(n.b, e.Pg()); + } + function T1e(n, e, t) { + return t ? e != 0 : e != n - 1; + } + function NTn(n, e, t) { + n.a = e ^ 1502, n.b = t ^ LB; + } + function A1e(n, e, t) { + return n.a = e, n.b = t, n; + } + function ch(n, e) { + return n.a *= e, n.b *= e, n; + } + function nn(n, e) { + return Kn(n.c, e), !0; + } + function I6(n, e, t) { + return Rt(n.g, e, t), t; + } + function ti(n, e, t) { + F7.call(this, n, e, t); + } + function $C(n, e, t) { + ti.call(this, n, e, t); + } + function FX(n, e, t) { + QC.call(this, n, e, t); + } + function $Tn(n, e, t) { + QC.call(this, n, e, t); + } + function xTn(n, e, t) { + FX.call(this, n, e, t); + } + function Au(n, e, t) { + ti.call(this, n, e, t); + } + function FTn(n, e, t) { + $C.call(this, n, e, t); + } + function BX(n, e, t) { + F7.call(this, n, e, t); + } + function Eg(n, e, t) { + F7.call(this, n, e, t); + } + function BTn(n, e, t) { + BX.call(this, n, e, t); + } + function xC(n) { + n.j = K(Eun, J, 319, 0, 0, 1); + } + function Cg() { + this.a = K(ki, Bn, 1, 8, 5, 1); + } + function RX() { + this.Bb |= 256, this.Bb |= 512; + } + function ne(n) { + this.i = n, this.f = this.i.j; + } + function q1(n) { + this.c = n, this.a = this.c.a; + } + function Mg(n, e) { + this.a = n, VE.call(this, e); + } + function KX(n, e) { + return q5e(n, new x1(), e).a; + } + function _X(n) { + if (!n) + throw M(new W9()); + } + function HX(n) { + if (!n) + throw M(new Mu()); + } + function qX() { + qX = F, qX(), IQn = new B0n(); + } + function RTn() { + RTn = F, OD(), ese = new A8n(); + } + function b4() { + b4 = F, Lun = new wD(null); + } + function S1e(n) { + G7(n, TWn), AA(n, zDe(n)); + } + function KTn(n) { + n.a = u(Un(n.b.a, 4), 129); + } + function _Tn(n) { + n.a = u(Un(n.b.a, 4), 129); + } + function HTn(n) { + n.b.Qb(), --n.d.f.d, fM(n.d); + } + function UX(n) { + this.a = n, q8n.call(this, n.d); + } + function qTn(n, e) { + this.a = n, ED.call(this, e); + } + function UTn(n, e) { + this.a = n, ED.call(this, e); + } + function GTn(n, e) { + this.a = n, ED.call(this, e); + } + function GX(n, e) { + this.a = e, ED.call(this, n); + } + function zTn(n, e) { + this.a = e, zN.call(this, n); + } + function XTn(n, e) { + this.a = n, zN.call(this, e); + } + function VTn(n, e) { + this.a = e, WE.call(this, n); + } + function WTn(n, e) { + this.a = e, WE.call(this, n); + } + function ce(n, e) { + return Se(e), new VTn(n, e); + } + function JTn(n, e) { + return new y_n(n.a, n.b, e); + } + function zX(n, e, t) { + return n.indexOf(e, t); + } + function FC(n, e) { + return n.lastIndexOf(e); + } + function O6(n) { + return n == null ? pu : Jr(n); + } + function P1e(n) { + return n == null ? null : n.name; + } + function I1e(n) { + return n.l + n.m * o3 + n.h * vd; + } + function O1e(n) { + return Q9(n.a) ? $On(n) : null; + } + function ls(n) { + G9.call(this, (Jn(n), n)); + } + function mo(n) { + G9.call(this, (Jn(n), n)); + } + function QTn(n) { + XO.call(this, u(Se(n), 34)); + } + function YTn(n) { + XO.call(this, u(Se(n), 34)); + } + function CL(n) { + MG.call(this, new WJ(n)); + } + function BC(n) { + Q3.call(this, n), this.a = n; + } + function XX(n) { + J3.call(this, n), this.a = n; + } + function VX(n) { + r4.call(this, n), this.a = n; + } + function ZTn() { + xC(this), MM(this), this.je(); + } + function nAn(n) { + this.a = n, ZO.call(this, n); + } + function ho(n) { + return oe(n.a != null), n.a; + } + function eAn(n, e) { + return nn(e.a, n.a), n.a; + } + function tAn(n, e) { + return nn(e.b, n.a), n.a; + } + function h0(n, e) { + return nn(e.a, n.a), n.a; + } + function E7(n, e, t) { + return L$(n, e, e, t), n; + } + function RC(n, e) { + return ++n.b, nn(n.a, e); + } + function WX(n, e) { + return ++n.b, bu(n.a, e); + } + function D1e(n, e) { + return bt(n.c.d, e.c.d); + } + function L1e(n, e) { + return bt(n.c.c, e.c.c); + } + function N1e(n, e) { + return bt(n.n.a, e.n.a); + } + function au(n, e) { + return u(ot(n.b, e), 15); + } + function $1e(n, e) { + return n.n.b = (Jn(e), e); + } + function x1e(n, e) { + return n.n.b = (Jn(e), e); + } + function Su(n, e) { + return !!e && n.b[e.g] == e; + } + function D6(n) { + return tc(n.a) || tc(n.b); + } + function l0(n) { + return n.$H || (n.$H = ++wNe); + } + function F1e(n) { + return n.a != null ? n.a : null; + } + function B1e(n, e) { + return bt(n.e.b, e.e.b); + } + function R1e(n, e) { + return bt(n.e.a, e.e.a); + } + function K1e(n, e, t) { + return BDn(n, e, t, n.b); + } + function JX(n, e, t) { + return BDn(n, e, t, n.c); + } + function _1e(n) { + return Fs(), !!n && !n.dc(); + } + function iAn() { + o6(), this.b = new g7n(this); + } + function KC() { + KC = F, bP = new Dt(pXn, 0); + } + function _n() { + _n = F, ga = !1, ov = !0; + } + function zl(n) { + var e; + e = n.a, n.a = n.b, n.b = e; + } + function C7(n, e) { + l6(), this.a = n, this.b = e; + } + function _C(n, e) { + Gl(), this.b = n, this.c = e; + } + function ML(n, e) { + nN(), this.f = e, this.d = n; + } + function QX(n, e) { + RJ(e, n), this.d = n, this.c = e; + } + function YX(n, e) { + sZ.call(this, n, e, null); + } + function rAn(n, e, t, i) { + kW.call(this, n, e, t, i); + } + function kp(n) { + this.d = n, ne.call(this, n); + } + function yp(n) { + this.c = n, ne.call(this, n); + } + function M7(n) { + this.c = n, kp.call(this, n); + } + function H1e(n) { + return new Xb(3, n); + } + function Dh(n) { + return Co(n, mw), new zc(n); + } + function cAn(n) { + return O4(), parseInt(n) || -1; + } + function q1e(n) { + return RE(), Ee((aOn(), sQn), n); + } + function w4(n, e, t) { + return zX(n, gu(e), t); + } + function TL(n, e) { + return new rSn(n, n.gc(), e); + } + function U1e(n, e) { + return eN(n.c).Md().Xb(e); + } + function g4(n, e, t) { + var i; + i = n.fd(e), i.Rb(t); + } + function ZX(n, e, t) { + u(lk(n, e), 21).Fc(t); + } + function G1e(n, e, t) { + cx(n.a, t), uA(n.a, e); + } + function T7(n) { + D(n, 158) && u(n, 158).pi(); + } + function uAn(n) { + GV.call(this, n, null, null); + } + function AL(n) { + Ob(), this.b = n, this.a = !0; + } + function oAn(n) { + QE(), this.b = n, this.a = !0; + } + function p4(n) { + return oe(n.b != 0), n.a.a.c; + } + function $s(n) { + return oe(n.b != 0), n.c.b.c; + } + function z1e(n, e) { + return L$(n, e, e + 1, ""), n; + } + function kt(n, e) { + return !!n.q && nu(n.q, e); + } + function sAn(n) { + return n.b = u(WW(n.a), 44); + } + function X1e(n) { + return n.f != null ? n.f : "" + n.g; + } + function SL(n) { + return n.f != null ? n.f : "" + n.g; + } + function V1e(n, e) { + return n > 0 ? e / (n * n) : e * 100; + } + function W1e(n, e) { + return n > 0 ? e * e / n : e * e * 100; + } + function xb(n, e) { + return u(Nf(n.a, e), 34); + } + function J1e(n, e) { + return ua(), Pn(n, e.e, e); + } + function Q1e(n, e, t) { + return nC(), t.Mg(n, e); + } + function Y1e(n) { + return kl(), n.e.a + n.f.a / 2; + } + function Z1e(n, e, t) { + return kl(), t.e.a - n * e; + } + function nae(n) { + return kl(), n.e.b + n.f.b / 2; + } + function eae(n, e, t) { + return kl(), t.e.b - n * e; + } + function fAn(n) { + n.d = new uAn(n), n.e = new de(); + } + function hAn() { + this.a = new C0(), this.b = new C0(); + } + function lAn(n) { + this.c = n, this.a = 1, this.b = 1; + } + function aAn(n) { + YF(), Pyn(this), this.Ff(n); + } + function tae(n, e, t) { + YM(), n.pf(e) && t.Cd(n); + } + function iae(n, e, t) { + return nn(e, EBn(n, t)); + } + function a0(n, e, t) { + return n.a += e, n.b += t, n; + } + function rae(n, e, t) { + return n.a *= e, n.b *= t, n; + } + function nV(n, e) { + return n.a = e.a, n.b = e.b, n; + } + function HC(n) { + return n.a = -n.a, n.b = -n.b, n; + } + function L6(n, e, t) { + return n.a -= e, n.b -= t, n; + } + function dAn(n) { + Ct.call(this), r5(this, n); + } + function bAn() { + je.call(this, "GROW_TREE", 0); + } + function wAn() { + je.call(this, "POLYOMINO", 0); + } + function lo(n, e, t) { + Ou.call(this, n, e, t, 2); + } + function cae(n, e, t) { + v5(Pc(n.a), e, LOn(t)); + } + function gAn(n, e) { + l6(), C7.call(this, n, e); + } + function eV(n, e) { + Gl(), _C.call(this, n, e); + } + function pAn(n, e) { + Gl(), eV.call(this, n, e); + } + function mAn(n, e) { + Gl(), _C.call(this, n, e); + } + function uae(n, e) { + return n.c.Fc(u(e, 136)); + } + function oae(n, e, t) { + v5(no(n.a), e, NOn(t)); + } + function vAn(n) { + this.c = n, tu(n, 0), iu(n, 0); + } + function PL(n, e) { + Ko(), oM.call(this, n, e); + } + function kAn(n, e) { + Ko(), PL.call(this, n, e); + } + function tV(n, e) { + Ko(), PL.call(this, n, e); + } + function iV(n, e) { + Ko(), oM.call(this, n, e); + } + function yAn(n, e) { + Ko(), tV.call(this, n, e); + } + function jAn(n, e) { + Ko(), iV.call(this, n, e); + } + function EAn(n, e) { + Ko(), oM.call(this, n, e); + } + function sae(n, e, t) { + return e.zl(n.e, n.c, t); + } + function fae(n, e, t) { + return e.Al(n.e, n.c, t); + } + function rV(n, e, t) { + return qA(hk(n, e), t); + } + function IL(n, e) { + return ea(n.e, u(e, 54)); + } + function hae(n) { + return n == null ? null : $De(n); + } + function lae(n) { + return n == null ? null : Sje(n); + } + function aae(n) { + return n == null ? null : Jr(n); + } + function dae(n) { + return n == null ? null : Jr(n); + } + function un(n) { + return x6(n == null || Nb(n)), n; + } + function R(n) { + return x6(n == null || $b(n)), n; + } + function Oe(n) { + return x6(n == null || Si(n)), n; + } + function ll(n) { + n.o == null && uMe(n); + } + function cV(n) { + if (!n) + throw M(new W9()); + } + function bae(n) { + if (!n) + throw M(new uD()); + } + function oe(n) { + if (!n) + throw M(new nc()); + } + function Fb(n) { + if (!n) + throw M(new Mu()); + } + function CAn(n) { + if (!n) + throw M(new Bo()); + } + function m4() { + m4 = F, aE = new ojn(), new sjn(); + } + function Tg() { + Tg = F, D2 = new lt("root"); + } + function uV() { + uxn.call(this), this.Bb |= hr; + } + function wae(n, e) { + this.d = n, u9n(this), this.b = e; + } + function oV(n, e) { + i$.call(this, n), this.a = e; + } + function sV(n, e) { + i$.call(this, n), this.a = e; + } + function fV(n, e, t) { + VM.call(this, n, e, t, null); + } + function MAn(n, e, t) { + VM.call(this, n, e, t, null); + } + function A7(n, e) { + this.c = n, h4.call(this, n, e); + } + function N6(n, e) { + this.a = n, A7.call(this, n, e); + } + function hV(n) { + this.q = new y.Date(id(n)); + } + function TAn(n) { + return n > 8 ? 0 : n + 1; + } + function AAn(n, e) { + Uf || nn(n.a, e); + } + function gae(n, e) { + return c7(), Q4(e.d.i, n); + } + function pae(n, e) { + return Hp(), new iUn(e, n); + } + function mae(n, e, t) { + return n.Ne(e, t) <= 0 ? t : e; + } + function vae(n, e, t) { + return n.Ne(e, t) <= 0 ? e : t; + } + function kae(n, e) { + return u(Nf(n.b, e), 143); + } + function yae(n, e) { + return u(Nf(n.c, e), 233); + } + function OL(n) { + return u(sn(n.a, n.b), 294); + } + function SAn(n) { + return new V(n.c, n.d + n.a); + } + function PAn(n) { + return Jn(n), n ? 1231 : 1237; + } + function IAn(n) { + return ko(), sTn(u(n, 203)); + } + function Bb() { + Bb = F, con = jn((go(), Gd)); + } + function jae(n, e) { + e.a ? TCe(n, e) : EL(n.a, e.b); + } + function S7(n, e, t) { + ++n.j, n.tj(), t$(n, e, t); + } + function OAn(n, e, t) { + ++n.j, n.qj(e, n.Zi(e, t)); + } + function DAn(n, e, t) { + var i; + i = n.fd(e), i.Rb(t); + } + function lV(n, e, t) { + return t = So(n, e, 6, t), t; + } + function aV(n, e, t) { + return t = So(n, e, 3, t), t; + } + function dV(n, e, t) { + return t = So(n, e, 9, t), t; + } + function uh(n, e) { + return G7(e, Ftn), n.f = e, n; + } + function bV(n, e) { + return (e & tt) % n.d.length; + } + function LAn(n, e, t) { + return Xen(n.c, n.b, e, t); + } + function NAn(n, e) { + this.c = n, S0.call(this, e); + } + function $An(n, e) { + this.a = n, yyn.call(this, e); + } + function P7(n, e) { + this.a = n, yyn.call(this, e); + } + function Dt(n, e) { + lt.call(this, n), this.a = e; + } + function wV(n, e) { + BG.call(this, n), this.a = e; + } + function DL(n, e) { + BG.call(this, n), this.a = e; + } + function Eae(n) { + WY.call(this, 0, 0), this.f = n; + } + function xAn(n, e, t) { + return n.a += ws(e, 0, t), n; + } + function I7(n) { + return !n.a && (n.a = new M0n()), n.a; + } + function gV(n, e) { + var t; + return t = n.e, n.e = e, t; + } + function pV(n, e) { + var t; + return t = e, !!n.Fe(t); + } + function Cae(n, e) { + return _n(), n == e ? 0 : n ? 1 : -1; + } + function Rb(n, e) { + n.a.bd(n.b, e), ++n.b, n.c = -1; + } + function O7(n) { + n.b ? O7(n.b) : n.f.c.zc(n.e, n.d); + } + function FAn(n) { + Hu(n.e), n.d.b = n.d, n.d.a = n.d; + } + function Mae(n, e, t) { + Va(), i9n(n, e.Ve(n.a, t)); + } + function mV(n, e, t) { + return Pp(n, u(e, 22), t); + } + function xs(n, e) { + return qE(new Array(e), n); + } + function Tae(n) { + return Ae(U1(n, 32)) ^ Ae(n); + } + function LL(n) { + return String.fromCharCode(n); + } + function Aae(n) { + return n == null ? null : n.message; + } + function Sae(n, e, t) { + return n.apply(e, t); + } + function Pae(n, e) { + var t; + t = n[DB], t.call(n, e); + } + function Iae(n, e) { + var t; + t = n[DB], t.call(n, e); + } + function Oae(n, e) { + return c7(), !Q4(e.d.i, n); + } + function vV(n, e, t, i) { + rM.call(this, n, e, t, i); + } + function BAn() { + qC.call(this), this.a = new Li(); + } + function kV() { + this.n = new Li(), this.o = new Li(); + } + function RAn() { + this.b = new Li(), this.c = new Z(); + } + function KAn() { + this.a = new Z(), this.b = new Z(); + } + function _An() { + this.a = new HU(), this.b = new Ryn(); + } + function yV() { + this.b = new Ql(), this.a = new Ql(); + } + function HAn() { + this.b = new ni(), this.a = new ni(); + } + function qAn() { + this.b = new de(), this.a = new de(); + } + function UAn() { + this.b = new gEn(), this.a = new q3n(); + } + function GAn() { + this.a = new e8n(), this.b = new Npn(); + } + function zAn() { + this.a = new Z(), this.d = new Z(); + } + function qC() { + this.n = new up(), this.i = new mp(); + } + function XAn(n) { + this.a = (Co(n, mw), new zc(n)); + } + function VAn(n) { + this.a = (Co(n, mw), new zc(n)); + } + function Dae(n) { + return n < 100 ? null : new F1(n); + } + function Lae(n, e) { + return n.n.a = (Jn(e), e + 10); + } + function Nae(n, e) { + return n.n.a = (Jn(e), e + 10); + } + function $ae(n, e) { + return e == n || km(TA(e), n); + } + function WAn(n, e) { + return Ve(n.a, e, "") == null; + } + function xae(n, e) { + var t; + return t = e.qi(n.a), t; + } + function it(n, e) { + return n.a += e.a, n.b += e.b, n; + } + function mi(n, e) { + return n.a -= e.a, n.b -= e.b, n; + } + function Fae(n) { + return Pb(n.j.c, 0), n.a = -1, n; + } + function jV(n, e, t) { + return t = So(n, e, 11, t), t; + } + function Bae(n, e, t) { + t != null && mT(e, Fx(n, t)); + } + function Rae(n, e, t) { + t != null && vT(e, Fx(n, t)); + } + function jp(n, e, t, i) { + q.call(this, n, e, t, i); + } + function EV(n, e, t, i) { + q.call(this, n, e, t, i); + } + function JAn(n, e, t, i) { + EV.call(this, n, e, t, i); + } + function QAn(n, e, t, i) { + bM.call(this, n, e, t, i); + } + function NL(n, e, t, i) { + bM.call(this, n, e, t, i); + } + function CV(n, e, t, i) { + bM.call(this, n, e, t, i); + } + function YAn(n, e, t, i) { + NL.call(this, n, e, t, i); + } + function MV(n, e, t, i) { + NL.call(this, n, e, t, i); + } + function Nn(n, e, t, i) { + CV.call(this, n, e, t, i); + } + function ZAn(n, e, t, i) { + MV.call(this, n, e, t, i); + } + function nSn(n, e, t, i) { + EW.call(this, n, e, t, i); + } + function Kb(n, e) { + Ir.call(this, p8 + n + Td + e); + } + function TV(n, e) { + return n.jk().wi().ri(n, e); + } + function AV(n, e) { + return n.jk().wi().ti(n, e); + } + function eSn(n, e) { + return Jn(n), x(n) === x(e); + } + function An(n, e) { + return Jn(n), x(n) === x(e); + } + function Kae(n, e) { + return n.b.Bd(new CCn(n, e)); + } + function _ae(n, e) { + return n.b.Bd(new MCn(n, e)); + } + function tSn(n, e) { + return n.b.Bd(new TCn(n, e)); + } + function Hae(n, e) { + return n.e = u(n.d.Kb(e), 159); + } + function SV(n, e, t) { + return n.lastIndexOf(e, t); + } + function qae(n, e, t) { + return bt(n[e.a], n[t.a]); + } + function Uae(n, e) { + return U(e, (cn(), Cj), n); + } + function Gae(n, e) { + return Ec(e.a.d.p, n.a.d.p); + } + function zae(n, e) { + return Ec(n.a.d.p, e.a.d.p); + } + function Xae(n, e) { + return bt(n.c - n.s, e.c - e.s); + } + function Vae(n, e) { + return bt(n.b.e.a, e.b.e.a); + } + function Wae(n, e) { + return bt(n.c.e.a, e.c.e.a); + } + function iSn(n) { + return n.c ? qr(n.c.a, n, 0) : -1; + } + function Ep(n) { + return n == Ud || n == tl || n == Uc; + } + function PV(n, e) { + this.c = n, oN.call(this, n, e); + } + function rSn(n, e, t) { + this.a = n, QX.call(this, e, t); + } + function cSn(n) { + this.c = n, IC.call(this, Ey, 0); + } + function uSn(n, e, t) { + this.c = e, this.b = t, this.a = n; + } + function D7(n) { + k4(), this.d = n, this.a = new Cg(); + } + function oSn(n) { + oh(), this.a = (Dn(), new r4(n)); + } + function Jae(n, e) { + hl(n.f) ? YCe(n, e) : Pye(n, e); + } + function sSn(n, e) { + fbe.call(this, n, n.length, e); + } + function Qae(n, e) { + Uf || e && (n.d = e); + } + function fSn(n, e) { + return D(e, 15) && Fqn(n.c, e); + } + function Yae(n, e, t) { + return u(n.c, 71).Wk(e, t); + } + function UC(n, e, t) { + return u(n.c, 71).Xk(e, t); + } + function Zae(n, e, t) { + return sae(n, u(e, 343), t); + } + function IV(n, e, t) { + return fae(n, u(e, 343), t); + } + function nde(n, e, t) { + return IKn(n, u(e, 343), t); + } + function hSn(n, e, t) { + return Hye(n, u(e, 343), t); + } + function $6(n, e) { + return e == null ? null : tw(n.b, e); + } + function OV(n) { + return $b(n) ? (Jn(n), n) : n.ue(); + } + function GC(n) { + return !isNaN(n) && !isFinite(n); + } + function $L(n) { + ETn(this), vo(this), Bi(this, n); + } + function _u(n) { + pL(this), XV(this.c, 0, n.Pc()); + } + function _o(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function lSn(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function aSn(n, e, t) { + this.d = n, this.b = t, this.a = e; + } + function dSn(n) { + this.a = n, fl(), kc(Date.now()); + } + function bSn(n) { + bo(n.a), zJ(n.c, n.b), n.b = null; + } + function xL() { + xL = F, Dun = new x0n(), SQn = new F0n(); + } + function wSn() { + wSn = F, Ooe = K(ki, Bn, 1, 0, 5, 1); + } + function gSn() { + gSn = F, Woe = K(ki, Bn, 1, 0, 5, 1); + } + function DV() { + DV = F, Joe = K(ki, Bn, 1, 0, 5, 1); + } + function oh() { + oh = F, new _G((Dn(), Dn(), sr)); + } + function ede(n) { + return B4(), Ee((jNn(), OQn), n); + } + function tde(n) { + return Gu(), Ee((aNn(), FQn), n); + } + function ide(n) { + return YT(), Ee((QDn(), qQn), n); + } + function rde(n) { + return cT(), Ee((YDn(), UQn), n); + } + function cde(n) { + return NA(), Ee((Qxn(), GQn), n); + } + function ude(n) { + return wf(), Ee((hNn(), VQn), n); + } + function ode(n) { + return Uu(), Ee((fNn(), JQn), n); + } + function sde(n) { + return wu(), Ee((lNn(), YQn), n); + } + function fde(n) { + return VA(), Ee((XMn(), yYn), n); + } + function hde(n) { + return N0(), Ee((CNn(), EYn), n); + } + function lde(n) { + return Vp(), Ee((TNn(), MYn), n); + } + function ade(n) { + return T5(), Ee((MNn(), SYn), n); + } + function dde(n) { + return YE(), Ee((EDn(), PYn), n); + } + function bde(n) { + return uT(), Ee((ZDn(), zYn), n); + } + function wde(n) { + return t5(), Ee((dNn(), mZn), n); + } + function gde(n) { + return Vi(), Ee((o$n(), jZn), n); + } + function pde(n) { + return nm(), Ee((SNn(), AZn), n); + } + function mde(n) { + return dd(), Ee((ANn(), LZn), n); + } + function LV(n, e) { + if (!n) + throw M(new Gn(e)); + } + function v4(n) { + if (!n) + throw M(new Or(wtn)); + } + function FL(n, e) { + if (n != e) + throw M(new Bo()); + } + function pSn(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function NV(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function mSn(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function zC(n, e, t) { + this.b = n, this.a = e, this.c = t; + } + function $V(n, e, t) { + this.b = n, this.c = e, this.a = t; + } + function xV(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function XC(n, e, t) { + this.e = e, this.b = n, this.d = t; + } + function vSn(n, e, t) { + this.b = n, this.a = e, this.c = t; + } + function vde(n, e, t) { + return Va(), n.a.Yd(e, t), e; + } + function BL(n) { + var e; + return e = new obn(), e.e = n, e; + } + function FV(n) { + var e; + return e = new Uyn(), e.b = n, e; + } + function L7() { + L7 = F, CP = new fgn(), MP = new hgn(); + } + function VC() { + VC = F, VZn = new Fgn(), XZn = new Bgn(); + } + function Fs() { + Fs = F, ZZn = new z2n(), nne = new X2n(); + } + function kde(n) { + return D0(), Ee((ULn(), hne), n); + } + function yde(n) { + return tr(), Ee((VMn(), qZn), n); + } + function jde(n) { + return OT(), Ee((INn(), zZn), n); + } + function Ede(n) { + return xf(), Ee((PNn(), ine), n); + } + function Cde(n) { + return ow(), Ee((s$n(), cne), n); + } + function Mde(n) { + return DA(), Ee((xxn(), lne), n); + } + function Tde(n) { + return Yp(), Ee((L$n(), ane), n); + } + function Ade(n) { + return QM(), Ee((uLn(), dne), n); + } + function Sde(n) { + return c5(), Ee((HLn(), bne), n); + } + function Pde(n) { + return bT(), Ee((qLn(), wne), n); + } + function Ide(n) { + return o1(), Ee((f$n(), gne), n); + } + function Ode(n) { + return wk(), Ee((tLn(), pne), n); + } + function Dde(n) { + return jm(), Ee((x$n(), Ene), n); + } + function Lde(n) { + return mr(), Ee((dFn(), Cne), n); + } + function Nde(n) { + return Z4(), Ee((zLn(), Mne), n); + } + function $de(n) { + return vl(), Ee((XLn(), Ane), n); + } + function xde(n) { + return KM(), Ee((eLn(), Sne), n); + } + function Fde(n) { + return Vk(), Ee(($$n(), jne), n); + } + function Bde(n) { + return hd(), Ee((GLn(), vne), n); + } + function Rde(n) { + return vA(), Ee((N$n(), kne), n); + } + function Kde(n) { + return sk(), Ee((iLn(), yne), n); + } + function _de(n) { + return Yo(), Ee((l$n(), Pne), n); + } + function Hde(n) { + return a1(), Ee((Vxn(), Zte), n); + } + function qde(n) { + return w5(), Ee((VLn(), nie), n); + } + function Ude(n) { + return cw(), Ee((ONn(), eie), n); + } + function Gde(n) { + return M5(), Ee((h$n(), tie), n); + } + function zde(n) { + return ps(), Ee((bFn(), iie), n); + } + function Xde(n) { + return lh(), Ee((DNn(), rie), n); + } + function Vde(n) { + return dk(), Ee((rLn(), cie), n); + } + function Wde(n) { + return pr(), Ee((QLn(), oie), n); + } + function Jde(n) { + return ST(), Ee((WLn(), sie), n); + } + function Qde(n) { + return a5(), Ee((JLn(), fie), n); + } + function Yde(n) { + return om(), Ee((YLn(), hie), n); + } + function Zde(n) { + return dT(), Ee((ZLn(), lie), n); + } + function n0e(n) { + return DT(), Ee((nNn(), aie), n); + } + function e0e(n) { + return O0(), Ee((sNn(), Sie), n); + } + function t0e(n) { + return Z6(), Ee((cLn(), Lie), n); + } + function i0e(n) { + return fh(), Ee((fLn(), Kie), n); + } + function r0e(n) { + return Pf(), Ee((hLn(), Hie), n); + } + function c0e(n) { + return af(), Ee((lLn(), ire), n); + } + function u0e(n) { + return M0(), Ee((aLn(), hre), n); + } + function o0e(n) { + return Qp(), Ee((RNn(), lre), n); + } + function s0e(n) { + return K5(), Ee((WMn(), are), n); + } + function f0e(n) { + return d5(), Ee((eNn(), dre), n); + } + function h0e(n) { + return b5(), Ee((BNn(), xre), n); + } + function l0e(n) { + return FM(), Ee((oLn(), Fre), n); + } + function a0e(n) { + return yT(), Ee((sLn(), Hre), n); + } + function d0e(n) { + return wA(), Ee((a$n(), Ure), n); + } + function b0e(n) { + return Pk(), Ee((tNn(), zre), n); + } + function w0e(n) { + return ZM(), Ee((dLn(), Gre), n); + } + function g0e(n) { + return sA(), Ee((FNn(), ace), n); + } + function p0e(n) { + return AT(), Ee((iNn(), dce), n); + } + function m0e(n) { + return XT(), Ee((rNn(), bce), n); + } + function v0e(n) { + return rA(), Ee((cNn(), gce), n); + } + function k0e(n) { + return _T(), Ee((uNn(), vce), n); + } + function y0e(n) { + return GM(), Ee((bLn(), Kce), n); + } + function j0e(n) { + return V4(), Ee((nLn(), HZn), n); + } + function E0e(n) { + return Vn(), Ee((F$n(), FZn), n); + } + function C0e(n) { + return nT(), Ee((oNn(), _ce), n); + } + function M0e(n) { + return N$(), Ee((wLn(), Hce), n); + } + function T0e(n) { + return x5(), Ee((d$n(), Uce), n); + } + function A0e(n) { + return eC(), Ee((ODn(), zce), n); + } + function S0e(n) { + return $k(), Ee((wNn(), Gce), n); + } + function P0e(n) { + return tC(), Ee((DDn(), Vce), n); + } + function I0e(n) { + return ik(), Ee((gLn(), Wce), n); + } + function O0e(n) { + return Jk(), Ee((b$n(), Jce), n); + } + function D0e(n) { + return s6(), Ee((LDn(), aue), n); + } + function L0e(n) { + return Mk(), Ee((pLn(), due), n); + } + function N0e(n) { + return pf(), Ee((g$n(), vue), n); + } + function $0e(n) { + return l1(), Ee((Nxn(), yue), n); + } + function x0e(n) { + return Rh(), Ee((B$n(), jue), n); + } + function F0e(n) { + return wd(), Ee((R$n(), Sue), n); + } + function B0e(n) { + return ci(), Ee((w$n(), Xue), n); + } + function R0e(n) { + return $f(), Ee((gNn(), Vue), n); + } + function K0e(n) { + return El(), Ee((KNn(), Wue), n); + } + function _0e(n) { + return pA(), Ee((K$n(), Jue), n); + } + function H0e(n) { + return jl(), Ee((bNn(), Yue), n); + } + function q0e(n) { + return To(), Ee((_Nn(), noe), n); + } + function U0e(n) { + return lw(), Ee((Jxn(), eoe), n); + } + function G0e(n) { + return Bg(), Ee((p$n(), toe), n); + } + function z0e(n) { + return Di(), Ee((_$n(), ioe), n); + } + function X0e(n) { + return zu(), Ee((H$n(), roe), n); + } + function V0e(n) { + return en(), Ee((m$n(), coe), n); + } + function W0e(n) { + return go(), Ee((HNn(), hoe), n); + } + function J0e(n) { + return io(), Ee((Wxn(), loe), n); + } + function Q0e(n) { + return Gp(), Ee((pNn(), aoe), n); + } + function Y0e(n, e) { + return Jn(n), n + (Jn(e), e); + } + function Z0e(n) { + return RL(), Ee((mLn(), doe), n); + } + function nbe(n) { + return qT(), Ee((qNn(), boe), n); + } + function ebe(n) { + return LT(), Ee((UNn(), poe), n); + } + function k4() { + k4 = F, iln = (en(), Wn), II = Zn; + } + function RL() { + RL = F, kdn = new WSn(), ydn = new NPn(); + } + function tbe(n) { + return !n.e && (n.e = new Z()), n.e; + } + function KL(n, e) { + this.c = n, this.a = e, this.b = e - n; + } + function kSn(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function _L(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function BV(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function RV(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function ySn(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function jSn(n, e, t) { + this.a = n, this.b = e, this.c = t; + } + function Xl(n, e, t) { + this.e = n, this.a = e, this.c = t; + } + function ESn(n, e, t) { + Ko(), iJ.call(this, n, e, t); + } + function HL(n, e, t) { + Ko(), KW.call(this, n, e, t); + } + function KV(n, e, t) { + Ko(), KW.call(this, n, e, t); + } + function _V(n, e, t) { + Ko(), KW.call(this, n, e, t); + } + function CSn(n, e, t) { + Ko(), HL.call(this, n, e, t); + } + function HV(n, e, t) { + Ko(), HL.call(this, n, e, t); + } + function MSn(n, e, t) { + Ko(), HV.call(this, n, e, t); + } + function TSn(n, e, t) { + Ko(), KV.call(this, n, e, t); + } + function ASn(n, e, t) { + Ko(), _V.call(this, n, e, t); + } + function qL(n) { + rM.call(this, n.d, n.c, n.a, n.b); + } + function qV(n) { + rM.call(this, n.d, n.c, n.a, n.b); + } + function UV(n) { + this.d = n, u9n(this), this.b = ewe(n.d); + } + function ibe(n) { + return Cm(), Ee(($xn(), Ioe), n); + } + function N7(n, e) { + return Se(n), Se(e), new $En(n, e); + } + function Cp(n, e) { + return Se(n), Se(e), new KSn(n, e); + } + function rbe(n, e) { + return Se(n), Se(e), new _Sn(n, e); + } + function cbe(n, e) { + return Se(n), Se(e), new UEn(n, e); + } + function UL(n) { + return oe(n.b != 0), Xo(n, n.a.a); + } + function ube(n) { + return oe(n.b != 0), Xo(n, n.c.b); + } + function obe(n) { + return !n.c && (n.c = new W3()), n.c; + } + function y4(n) { + var e; + return e = new Z(), b$(e, n), e; + } + function sbe(n) { + var e; + return e = new ni(), b$(e, n), e; + } + function SSn(n) { + var e; + return e = new zG(), A$(e, n), e; + } + function $7(n) { + var e; + return e = new Ct(), A$(e, n), e; + } + function u(n, e) { + return x6(n == null || Tx(n, e)), n; + } + function fbe(n, e, t) { + APn.call(this, e, t), this.a = n; + } + function PSn(n, e) { + this.c = n, this.b = e, this.a = !1; + } + function ISn() { + this.a = ";,;", this.b = "", this.c = ""; + } + function OSn(n, e, t) { + this.b = n, HMn.call(this, e, t); + } + function GV(n, e, t) { + this.c = n, oC.call(this, e, t); + } + function zV(n, e, t) { + d4.call(this, n, e), this.b = t; + } + function XV(n, e, t) { + Rnn(t, 0, n, e, t.length, !1); + } + function Lh(n, e, t, i, r) { + n.b = e, n.c = t, n.d = i, n.a = r; + } + function VV(n, e, t, i, r) { + n.d = e, n.c = t, n.a = i, n.b = r; + } + function hbe(n, e) { + e && (n.b = e, n.a = (X1(e), e.a)); + } + function x7(n, e) { + if (!n) + throw M(new Gn(e)); + } + function Mp(n, e) { + if (!n) + throw M(new Or(e)); + } + function WV(n, e) { + if (!n) + throw M(new Rjn(e)); + } + function lbe(n, e) { + return ZE(), Ec(n.d.p, e.d.p); + } + function abe(n, e) { + return kl(), bt(n.e.b, e.e.b); + } + function dbe(n, e) { + return kl(), bt(n.e.a, e.e.a); + } + function bbe(n, e) { + return Ec(zSn(n.d), zSn(e.d)); + } + function WC(n, e) { + return e && vM(n, e.d) ? e : null; + } + function wbe(n, e) { + return e == (en(), Wn) ? n.c : n.d; + } + function JV(n) { + return Y1(bwe(Vr(n) ? ds(n) : n)); + } + function gbe(n) { + return new V(n.c + n.b, n.d + n.a); + } + function DSn(n) { + return n != null && !lx(n, D9, L9); + } + function pbe(n, e) { + return (hBn(n) << 4 | hBn(e)) & ui; + } + function LSn(n, e, t, i, r) { + n.c = e, n.d = t, n.b = i, n.a = r; + } + function QV(n) { + var e, t; + e = n.b, t = n.c, n.b = t, n.c = e; + } + function YV(n) { + var e, t; + t = n.d, e = n.a, n.d = e, n.a = t; + } + function mbe(n, e) { + var t; + return t = n.c, IQ(n, e), t; + } + function ZV(n, e) { + return e < 0 ? n.g = -1 : n.g = e, n; + } + function JC(n, e) { + return Tme(n), n.a *= e, n.b *= e, n; + } + function NSn(n, e, t) { + S$n.call(this, e, t), this.d = n; + } + function F7(n, e, t) { + mX.call(this, n, e), this.c = t; + } + function QC(n, e, t) { + mX.call(this, n, e), this.c = t; + } + function nW(n) { + DV(), ME.call(this), this.ci(n); + } + function $Sn() { + $4(), Rwe.call(this, (R1(), Ps)); + } + function xSn(n) { + return nt(), new Nh(0, n); + } + function FSn() { + FSn = F, AU = (Dn(), new nD(IK)); + } + function YC() { + YC = F, new lZ((bD(), HK), (dD(), _K)); + } + function BSn() { + BSn = F, mun = K(Gi, J, 17, 256, 0, 1); + } + function RSn() { + this.b = $(R(rn((Us(), y_)))); + } + function GL(n) { + this.b = n, this.a = Ja(this.b.a).Od(); + } + function KSn(n, e) { + this.b = n, this.a = e, GO.call(this); + } + function _Sn(n, e) { + this.a = n, this.b = e, GO.call(this); + } + function HSn(n, e, t) { + this.a = n, pg.call(this, e, t); + } + function qSn(n, e, t) { + this.a = n, pg.call(this, e, t); + } + function j4(n, e, t) { + var i; + i = new qb(t), bf(n, e, i); + } + function eW(n, e, t) { + var i; + return i = n[e], n[e] = t, i; + } + function ZC(n) { + var e; + return e = n.slice(), o$(e, n); + } + function nM(n) { + var e; + return e = n.n, n.a.b + e.d + e.a; + } + function USn(n) { + var e; + return e = n.n, n.e.b + e.d + e.a; + } + function tW(n) { + var e; + return e = n.n, n.e.a + e.b + e.c; + } + function iW(n) { + n.a.b = n.b, n.b.a = n.a, n.a = n.b = null; + } + function Fe(n, e) { + return Kt(n, e, n.c.b, n.c), !0; + } + function vbe(n) { + return n.a ? n.a : vN(n); + } + function kbe(n) { + return Lp(), Kh(n) == At(ra(n)); + } + function ybe(n) { + return Lp(), ra(n) == At(Kh(n)); + } + function d0(n, e) { + return I5(n, new d4(e.a, e.b)); + } + function jbe(n, e) { + return yM(), Nx(n, e), new aIn(n, e); + } + function Ebe(n, e) { + return n.c < e.c ? -1 : n.c == e.c ? 0 : 1; + } + function GSn(n) { + return n.b.c.length - n.e.c.length; + } + function zSn(n) { + return n.e.c.length - n.g.c.length; + } + function zL(n) { + return n.e.c.length + n.g.c.length; + } + function B7(n) { + return n == 0 || isNaN(n) ? n : n < 0 ? -1 : 1; + } + function Cbe(n) { + return !fr(n) && n.c.i.c == n.d.i.c; + } + function Mbe(n) { + return ko(), (en(), fu).Hc(n.j); + } + function Tbe(n, e, t) { + return kl(), t.e.a + t.f.a + n * e; + } + function Abe(n, e, t) { + return kl(), t.e.b + t.f.b + n * e; + } + function Sbe(n, e, t) { + return Ve(n.b, u(t.b, 18), e); + } + function Pbe(n, e, t) { + return Ve(n.b, u(t.b, 18), e); + } + function Ibe(n, e, t) { + gDe(n.a, n.b, n.c, u(e, 166), t); + } + function rW(n, e, t, i) { + rZ.call(this, n, e, t, i, 0, 0); + } + function XSn(n) { + DV(), nW.call(this, n), this.a = -1; + } + function VSn(n, e) { + APn.call(this, e, 1040), this.a = n; + } + function WSn() { + fMn.call(this, "COUNT_CHILDREN", 0); + } + function eM(n, e) { + k7.call(this, n, e), this.a = this; + } + function xt(n, e) { + var t; + return t = bN(n, e), t.i = 2, t; + } + function tM(n, e) { + var t; + return ++n.j, t = n.Cj(e), t; + } + function Ke(n, e, t) { + return n.a = -1, ZX(n, e.g, t), n; + } + function Obe(n, e) { + return nn(n, new V(e.a, e.b)); + } + function JSn(n) { + return _p(), K(NI, OS, 40, n, 0, 1); + } + function QSn(n) { + return n.e.Rd().gc() * n.c.Rd().gc(); + } + function XL(n, e, t) { + return new uSn(_we(n)._e(), t, e); + } + function Dbe(n, e) { + OQ(n, e == null ? null : (Jn(e), e)); + } + function Lbe(n, e) { + PQ(n, e == null ? null : (Jn(e), e)); + } + function Nbe(n, e) { + PQ(n, e == null ? null : (Jn(e), e)); + } + function x6(n) { + if (!n) + throw M(new i4(null)); + } + function cW(n) { + if (n.c.e != n.a) + throw M(new Bo()); + } + function uW(n) { + if (n.e.c != n.b) + throw M(new Bo()); + } + function iM(n) { + for (Se(n); n.Ob(); ) + n.Pb(), n.Qb(); + } + function VL(n) { + m0(), this.a = (Dn(), new nD(Se(n))); + } + function oW(n) { + this.c = n, this.b = this.c.d.vc().Kc(); + } + function $be(n) { + n.a.ld(), u(n.a.md(), 16).gc(), gz(); + } + function YSn(n, e) { + return n.a += ws(e, 0, e.length), n; + } + function sn(n, e) { + return Ln(e, n.c.length), n.c[e]; + } + function ZSn(n, e) { + return Ln(e, n.a.length), n.a[e]; + } + function xbe(n, e) { + return Jn(e), mk(e, (Jn(n), n)); + } + function Fbe(n, e) { + return Jn(n), mk(n, (Jn(e), e)); + } + function Wa(n, e, t, i, r, c) { + return EKn(n, e, t, i, r, 0, c); + } + function Bbe(n, e) { + return Rt(e, 0, sW(e[0], Ml(1))); + } + function Rbe(n, e) { + return Ml(nr(Ml(n.a).a, e.a)); + } + function sW(n, e) { + return Rbe(u(n, 168), u(e, 168)); + } + function nPn() { + nPn = F, vun = K(tb, J, 168, 256, 0, 1); + } + function ePn() { + ePn = F, jun = K(ib, J, 191, 256, 0, 1); + } + function tPn() { + tPn = F, wun = K(p3, J, 222, 256, 0, 1); + } + function iPn() { + iPn = F, pun = K(A8, J, 180, 128, 0, 1); + } + function fW() { + Lh(this, !1, !1, !1, !1); + } + function hW(n) { + MG.call(this, new Ql()), Bi(this, n); + } + function F6(n) { + this.a = new ap(n.gc()), Bi(this, n); + } + function rPn(n) { + this.c = n, this.a = new dp(this.c.a); + } + function cPn(n) { + this.a = n, this.c = new de(), s6e(this); + } + function uPn() { + this.d = new V(0, 0), this.e = new ni(); + } + function Tn(n, e) { + Va(), i$.call(this, n), this.a = e; + } + function rM(n, e, t, i) { + VV(this, n, e, t, i); + } + function Kbe(n, e, t) { + return Ec(e.d[n.g], t.d[n.g]); + } + function _be(n, e, t) { + return Ec(n.d[e.p], n.d[t.p]); + } + function Hbe(n, e, t) { + return Ec(n.d[e.p], n.d[t.p]); + } + function qbe(n, e, t) { + return Ec(n.d[e.p], n.d[t.p]); + } + function Ube(n, e, t) { + return Ec(n.d[e.p], n.d[t.p]); + } + function cM(n, e, t) { + return y.Math.min(t / n, 1 / e); + } + function oPn(n, e) { + return n ? 0 : y.Math.max(0, e - 1); + } + function WL(n, e) { + return n == null ? e == null : An(n, e); + } + function Gbe(n, e) { + return n == null ? e == null : JT(n, e); + } + function sPn(n) { + return n.q ? n.q : (Dn(), Dn(), Wh); + } + function fPn(n) { + return n.c - u(sn(n.a, n.b), 294).b; + } + function ao(n) { + return n.c ? n.c.f : n.e.b; + } + function Pu(n) { + return n.c ? n.c.g : n.e.a; + } + function zbe(n, e) { + return n.a == null && Uqn(n), n.a[e]; + } + function hPn(n) { + var e; + return e = MKn(n), e ? hPn(e) : n; + } + function uM(n, e) { + return nt(), new PW(n, e); + } + function Nh(n, e) { + nt(), Wd.call(this, n), this.a = e; + } + function oM(n, e) { + Ko(), LE.call(this, e), this.a = n; + } + function B6(n, e, t) { + this.a = n, ti.call(this, e, t, 2); + } + function lPn(n) { + this.b = new Ct(), this.a = n, this.c = -1; + } + function aPn(n) { + QX.call(this, 0, 0), this.a = n, this.b = 0; + } + function sM(n) { + S0.call(this, n.gc()), Ht(this, n); + } + function fM(n) { + n.b ? fM(n.b) : n.d.dc() && n.f.c.Bc(n.e); + } + function lW(n) { + return Array.isArray(n) && n.Tm === Q2; + } + function JL(n, e) { + return D(e, 22) && Su(n, u(e, 22)); + } + function dPn(n, e) { + return D(e, 22) && yme(n, u(e, 22)); + } + function gr(n, e) { + return RFn(n, e, Q3e(n, n.b.Ce(e))); + } + function Xbe(n, e) { + return n.a.get(e) !== void 0; + } + function aW(n) { + return to(n, 26) * J5 + to(n, 27) * Q5; + } + function bPn(n, e) { + return Kme(new G0n(), new w9n(n), e); + } + function QL(n, e, t) { + FFn(0, e, n.length), F4(n, 0, e, t); + } + function b0(n, e, t) { + zb(e, n.c.length), d6(n.c, e, t); + } + function hM(n, e, t) { + var i; + n && (i = n.i, i.c = e, i.b = t); + } + function lM(n, e, t) { + var i; + n && (i = n.i, i.d = e, i.a = t); + } + function wPn(n, e, t) { + var i; + for (i = 0; i < e; ++i) + n[i] = t; + } + function Vbe(n, e) { + var t; + for (t = 0; t < e; ++t) + n[t] = -1; + } + function yt(n, e) { + var t; + return t = jn(n), tY(t, e), t; + } + function Wbe(n, e) { + return !n && (n = []), n[n.length] = e, n; + } + function YL(n, e) { + it(n.c, e), n.b.c += e.a, n.b.d += e.b; + } + function Jbe(n, e) { + YL(n, mi(new V(e.a, e.b), n.c)); + } + function ZL(n, e) { + this.b = new Ct(), this.a = n, this.c = e; + } + function gPn() { + this.b = new iwn(), this.c = new JIn(this); + } + function dW() { + this.d = new rbn(), this.e = new WIn(this); + } + function bW() { + sJ(), this.f = new Ct(), this.e = new Ct(); + } + function pPn() { + ko(), this.k = new de(), this.d = new ni(); + } + function nN() { + nN = F, voe = new Ni((He(), oo), 0); + } + function mPn() { + mPn = F, uQn = new aPn(K(ki, Bn, 1, 0, 5, 1)); + } + function Qbe(n, e, t) { + return fi(n, new bp(e.a, t.a)); + } + function Ybe(n, e, t) { + return -Ec(n.f[e.p], n.f[t.p]); + } + function Zbe(n, e, t) { + LHn(t, n, 1), nn(e, new LCn(t, n)); + } + function nwe(n, e, t) { + P5(t, n, 1), nn(e, new xCn(t, n)); + } + function vPn(n, e, t) { + this.a = n, $C.call(this, e, t, 22); + } + function kPn(n, e, t) { + this.a = n, $C.call(this, e, t, 14); + } + function yPn(n, e, t, i) { + Ko(), cDn.call(this, n, e, t, i); + } + function jPn(n, e, t, i) { + Ko(), cDn.call(this, n, e, t, i); + } + function Iu(n, e, t) { + return n.a = -1, ZX(n, e.g + 1, t), n; + } + function wW(n, e, t) { + return t = So(n, u(e, 54), 7, t), t; + } + function gW(n, e, t) { + return t = So(n, u(e, 54), 3, t), t; + } + function Ae(n) { + return Vr(n) ? n | 0 : uEn(n); + } + function EPn(n) { + return nt(), new IN(10, n, 0); + } + function CPn(n) { + var e; + return e = n.f, e || (n.f = n.Dc()); + } + function Tp(n) { + var e; + return e = n.i, e || (n.i = n.bc()); + } + function aM(n) { + if (n.e.j != n.d) + throw M(new Bo()); + } + function Ja(n) { + return n.c ? n.c : n.c = n.Sd(); + } + function eN(n) { + return n.d ? n.d : n.d = n.Td(); + } + function R6(n, e) { + return U8e(hk(n, e)) ? e.zi() : null; + } + function ewe(n) { + return D(n, 15) ? u(n, 15).ed() : n.Kc(); + } + function pW(n) { + return n.Qc(K(ki, Bn, 1, n.gc(), 5, 1)); + } + function MPn(n) { + return n != null && uN(n) && n.Tm !== Q2; + } + function mW(n) { + return !Array.isArray(n) && n.Tm === Q2; + } + function TPn(n, e) { + return Se(e), n.a.Jd(e) && !n.b.Jd(e); + } + function twe(n, e) { + return Zc(n.l & e.l, n.m & e.m, n.h & e.h); + } + function iwe(n, e) { + return Zc(n.l | e.l, n.m | e.m, n.h | e.h); + } + function rwe(n, e) { + return Zc(n.l ^ e.l, n.m ^ e.m, n.h ^ e.h); + } + function Bs(n, e) { + return Y1(i_n(Vr(n) ? ds(n) : n, e)); + } + function w0(n, e) { + return Y1(Vnn(Vr(n) ? ds(n) : n, e)); + } + function U1(n, e) { + return Y1(Rje(Vr(n) ? ds(n) : n, e)); + } + function cwe(n, e) { + return Cae((Jn(n), n), (Jn(e), e)); + } + function tN(n, e) { + return bt((Jn(n), n), (Jn(e), e)); + } + function dM(n) { + this.b = new zc(11), this.a = (j0(), n); + } + function ie(n) { + this.a = (mPn(), uQn), this.d = u(Se(n), 51); + } + function APn(n, e) { + this.c = 0, this.d = n, this.b = e | 64 | wh; + } + function vW(n, e) { + this.e = n, this.d = e & 64 ? e | wh : e; + } + function iN(n) { + this.b = null, this.a = (j0(), n || Iun); + } + function SPn(n) { + xC(this), this.g = n, MM(this), this.je(); + } + function Qa(n) { + K1(), this.a = 0, this.b = n - 1, this.c = 1; + } + function kW(n, e, t, i) { + this.a = n, VM.call(this, n, e, t, i); + } + function uwe(n, e, t) { + n.a.Mb(t) && (n.b = !0, e.Cd(t)); + } + function yW(n) { + n.d || (n.d = n.b.Kc(), n.c = n.b.gc()); + } + function E4(n, e) { + if (n < 0 || n >= e) + throw M(new ZG()); + } + function _b(n, e) { + return Lk(n, (Jn(e), new d9n(e))); + } + function Ap(n, e) { + return Lk(n, (Jn(e), new b9n(e))); + } + function PPn(n, e, t) { + return WLe(n, u(e, 12), u(t, 12)); + } + function IPn(n) { + return Du(), u(n, 12).g.c.length != 0; + } + function OPn(n) { + return Du(), u(n, 12).e.c.length != 0; + } + function owe(n, e) { + return Hp(), bt(e.a.o.a, n.a.o.a); + } + function swe(n, e) { + e.Bb & yc && !n.a.o && (n.a.o = e); + } + function fwe(n, e) { + e.Ug("General 'Rotator", 1), EDe(n); + } + function hwe(n, e, t) { + e.qf(t, $(R(ee(n.b, t))) * n.a); + } + function DPn(n, e, t) { + return Vg(), W4(n, e) && W4(n, t); + } + function K6(n) { + return zu(), !n.Hc(Fl) && !n.Hc(Ia); + } + function lwe(n) { + return n.e ? UJ(n.e) : null; + } + function _6(n) { + return Vr(n) ? "" + n : xqn(n); + } + function jW(n) { + var e; + for (e = n; e.f; ) + e = e.f; + return e; + } + function awe(n, e, t) { + return Rt(e, 0, sW(e[0], t[0])), e; + } + function Vl(n, e, t, i) { + var r; + r = n.i, r.i = e, r.a = t, r.b = i; + } + function q(n, e, t, i) { + ti.call(this, n, e, t), this.b = i; + } + function Ci(n, e, t, i, r) { + c$.call(this, n, e, t, i, r, -1); + } + function H6(n, e, t, i, r) { + ck.call(this, n, e, t, i, r, -1); + } + function bM(n, e, t, i) { + F7.call(this, n, e, t), this.b = i; + } + function LPn(n) { + IMn.call(this, n, !1), this.a = !1; + } + function NPn() { + fMn.call(this, "LOOKAHEAD_LAYOUT", 1); + } + function $Pn(n) { + this.b = n, kp.call(this, n), KTn(this); + } + function xPn(n) { + this.b = n, M7.call(this, n), _Tn(this); + } + function Hb(n, e, t) { + this.a = n, jp.call(this, e, t, 5, 6); + } + function EW(n, e, t, i) { + this.b = n, ti.call(this, e, t, i); + } + function FPn(n, e) { + this.b = n, q8n.call(this, n.b), this.a = e; + } + function BPn(n) { + this.a = yRn(n.a), this.b = new _u(n.b); + } + function CW(n, e) { + m0(), qhe.call(this, n, FT(new Ku(e))); + } + function wM(n, e) { + return nt(), new RW(n, e, 0); + } + function rN(n, e) { + return nt(), new RW(6, n, e); + } + function _i(n, e) { + for (Jn(e); n.Ob(); ) + e.Cd(n.Pb()); + } + function nu(n, e) { + return Si(e) ? AN(n, e) : !!gr(n.f, e); + } + function cN(n, e) { + return e.Vh() ? ea(n.b, u(e, 54)) : e; + } + function dwe(n, e) { + return An(n.substr(0, e.length), e); + } + function $h(n) { + return new ie(new GX(n.a.length, n.a)); + } + function gM(n) { + return new V(n.c + n.b / 2, n.d + n.a / 2); + } + function bwe(n) { + return Zc(~n.l & ro, ~n.m & ro, ~n.h & Il); + } + function uN(n) { + return typeof n === vy || typeof n === eB; + } + function Hu(n) { + n.f = new rTn(n), n.i = new cTn(n), ++n.g; + } + function RPn(n) { + if (!n) + throw M(new nc()); + return n.d; + } + function Sp(n) { + var e; + return e = l5(n), oe(e != null), e; + } + function wwe(n) { + var e; + return e = O5e(n), oe(e != null), e; + } + function C4(n, e) { + var t; + return t = n.a.gc(), RJ(e, t), t - e; + } + function fi(n, e) { + var t; + return t = n.a.zc(e, n), t == null; + } + function R7(n, e) { + return n.a.zc(e, (_n(), ga)) == null; + } + function MW(n) { + return new Tn(null, kwe(n, n.length)); + } + function TW(n, e, t) { + return uGn(n, u(e, 42), u(t, 176)); + } + function Pp(n, e, t) { + return _s(n.a, e), eW(n.b, e.g, t); + } + function gwe(n, e, t) { + E4(t, n.a.c.length), Go(n.a, t, e); + } + function B(n, e, t, i) { + FFn(e, t, n.length), pwe(n, e, t, i); + } + function pwe(n, e, t, i) { + var r; + for (r = e; r < t; ++r) + n[r] = i; + } + function AW(n, e) { + var t; + for (t = 0; t < e; ++t) + n[t] = !1; + } + function Ya(n, e, t) { + dh(), this.e = n, this.d = e, this.a = t; + } + function SW(n, e, t) { + this.c = n, this.a = e, Dn(), this.b = t; + } + function oN(n, e) { + this.d = n, ne.call(this, n), this.e = e; + } + function hf(n, e, t) { + return x6e(n, e.g, t), _s(n.c, e), n; + } + function mwe(n) { + return Yg(n, (ci(), Br)), n.d = !0, n; + } + function sN(n) { + return !n.j && Tfe(n, jSe(n.g, n.b)), n.j; + } + function KPn(n) { + n.a = null, n.e = null, Hu(n.b), n.d = 0, ++n.c; + } + function q6(n) { + Fb(n.b != -1), Yl(n.c, n.a = n.b), n.b = -1; + } + function PW(n, e) { + Wd.call(this, 1), this.a = n, this.b = e; + } + function vwe(n, e) { + return n > 0 ? y.Math.log(n / e) : -100; + } + function _Pn(n, e) { + return Cc(n, e) < 0 ? -1 : Cc(n, e) > 0 ? 1 : 0; + } + function K7(n, e) { + DTn(n, D(e, 160) ? e : u(e, 2036).Rl()); + } + function IW(n, e) { + if (n == null) + throw M(new fp(e)); + } + function kwe(n, e) { + return jme(e, n.length), new VSn(n, e); + } + function OW(n, e) { + return e ? Bi(n, e) : !1; + } + function ywe() { + return RE(), A(T(oQn, 1), G, 549, 0, [GK]); + } + function U6(n) { + return n.e == 0 ? n : new Ya(-n.e, n.d, n.a); + } + function jwe(n, e) { + return bt(n.c.c + n.c.b, e.c.c + e.c.b); + } + function _7(n, e) { + Kt(n.d, e, n.b.b, n.b), ++n.a, n.c = null; + } + function HPn(n, e) { + return n.c ? HPn(n.c, e) : nn(n.b, e), n; + } + function Ewe(n, e, t) { + var i; + return i = Jb(n, e), qN(n, e, t), i; + } + function qPn(n, e, t) { + var i; + for (i = 0; i < e; ++i) + Rt(n, i, t); + } + function UPn(n, e, t, i, r) { + for (; e < t; ) + i[r++] = Xi(n, e++); + } + function M4(n, e, t, i, r) { + Qx(n, u(ot(e.k, t), 15), t, i, r); + } + function g0(n, e) { + Gt(_r(n.Oc(), new apn()), new M7n(e)); + } + function Cwe(n, e) { + return bt(n.e.a + n.f.a, e.e.a + e.f.a); + } + function Mwe(n, e) { + return bt(n.e.b + n.f.b, e.e.b + e.f.b); + } + function fN(n) { + return y.Math.abs(n.d.e - n.e.e) - n.a; + } + function Twe(n) { + return n == St ? nj : n == li ? "-INF" : "" + n; + } + function Awe(n) { + return n == St ? nj : n == li ? "-INF" : "" + n; + } + function Swe(n) { + return Lp(), At(Kh(n)) == At(ra(n)); + } + function Pwe(n, e, t) { + return u(n.c.hd(e, u(t, 136)), 44); + } + function Iwe(n, e) { + Ip(n, new qb(e.f != null ? e.f : "" + e.g)); + } + function Owe(n, e) { + Ip(n, new qb(e.f != null ? e.f : "" + e.g)); + } + function Ht(n, e) { + return n.Si() && (e = pOn(n, e)), n.Fi(e); + } + function hN(n, e) { + return e = n.Yk(null, e), RKn(n, null, e); + } + function Dwe(n, e) { + ++n.j, Jx(n, n.i, e), eCe(n, u(e, 343)); + } + function DW(n) { + n ? nnn(n, (fl(), mQn)) : xge((fl(), n)); + } + function p0(n) { + this.d = (Jn(n), n), this.a = 0, this.c = Ey; + } + function lN(n, e) { + this.d = E5e(n), this.c = e, this.a = 0.5 * e; + } + function GPn(n) { + eJ.call(this), this.a = n, nn(n.a, this); + } + function zPn() { + Ql.call(this), this.a = !0, this.b = !0; + } + function XPn() { + XPn = F, aQn = new bG(!1), dQn = new bG(!0); + } + function G6(n) { + var e; + return e = n.g, e || (n.g = new hG(n)); + } + function pM(n) { + var e; + return e = n.k, e || (n.k = new lG(n)); + } + function LW(n) { + var e; + return e = n.k, e || (n.k = new lG(n)); + } + function Lwe(n) { + var e; + return e = n.i, e || (n.i = new F8n(n)); + } + function VPn(n) { + var e; + return e = n.f, e || (n.f = new UX(n)); + } + function aN(n) { + var e; + return e = n.j, e || (n.j = new J8n(n)); + } + function dN(n) { + var e; + return e = n.d, e || (n.d = new VO(n)); + } + function WPn(n, e, t) { + return nt(), new UOn(n, e, t); + } + function JPn(n, e) { + return Z7(e, n.c.b.c.gc()), new NEn(n, e); + } + function NW(n, e) { + var t; + return t = n.a.gc(), Z7(e, t), t - 1 - e; + } + function w(n, e, t) { + var i; + return i = bN(n, e), z$n(t, i), i; + } + function bN(n, e) { + var t; + return t = new ZQ(), t.j = n, t.d = e, t; + } + function Se(n) { + if (n == null) + throw M(new rp()); + return n; + } + function qb(n) { + if (n == null) + throw M(new rp()); + this.a = n; + } + function QPn(n) { + HG(), this.b = new Z(), this.a = n, MOe(this, n); + } + function $W(n) { + this.b = n, this.a = u(as(this.b.a.e), 227); + } + function m0() { + m0 = F, oh(), qK = new PN((Dn(), Dn(), sr)); + } + function wN() { + wN = F, oh(), oun = new Rz((Dn(), Dn(), hP)); + } + function G1() { + G1 = F, Hn = nCe(), On(), tg && eke(); + } + function mM(n) { + n.s = NaN, n.c = NaN, yHn(n, n.e), yHn(n, n.j); + } + function se(n) { + return (n.i == null && bh(n), n.i).length; + } + function YPn(n, e) { + return u(Ja(n.a).Md().Xb(e), 44).ld(); + } + function ee(n, e) { + return Si(e) ? $c(n, e) : Kr(gr(n.f, e)); + } + function Nwe(n, e) { + return Lp(), n == Kh(e) ? ra(e) : Kh(e); + } + function $we(n, e, t, i) { + return t == 0 || (t - i) / t < n.e || e >= n.g; + } + function Rt(n, e, t) { + return bae(t == null || fPe(n, t)), n[e] = t; + } + function xW(n, e) { + return zn(e, n.length + 1), n.substr(e); + } + function gN(n, e) { + for (Jn(e); n.c < n.d; ) + n.Se(e, n.c++); + } + function FW(n) { + this.d = n, this.c = n.a.d.a, this.b = n.a.e.g; + } + function ZPn(n) { + this.c = n, this.a = new Ct(), this.b = new Ct(); + } + function Nc(n) { + this.c = new Li(), this.a = new Z(), this.b = n; + } + function nIn(n) { + this.b = new Z(), this.a = new Z(), this.c = n; + } + function xwe(n, e, t) { + u(e.b, 68), eu(e.a, new BV(n, t, e)); + } + function Fwe(n, e) { + return Hp(), u(Mr(n, e.d), 15).Fc(e); + } + function Ip(n, e) { + var t; + t = n.a.length, Jb(n, t), qN(n, t, e); + } + function eIn(n, e) { + var t; + t = console[n], t.call(console, e); + } + function tIn(n, e) { + var t; + ++n.j, t = n.Ej(), n.rj(n.Zi(t, e)); + } + function pN(n, e, t) { + var i; + return i = T$(n, e, t), jen(n, i); + } + function v0(n) { + return !n.d && (n.d = new ti(Er, n, 1)), n.d; + } + function Bwe(n) { + return !n.a && (n.a = new ti(Oa, n, 4)), n.a; + } + function T4(n, e) { + return n.a += String.fromCharCode(e), n; + } + function z1(n, e) { + return n.a += String.fromCharCode(e), n; + } + function BW(n, e, t) { + this.a = n, BG.call(this, e), this.b = t; + } + function iIn(n, e, t) { + this.a = n, kJ.call(this, 8, e, null, t); + } + function RW(n, e, t) { + Wd.call(this, n), this.a = e, this.b = t; + } + function KW(n, e, t) { + LE.call(this, e), this.a = n, this.b = t; + } + function rIn(n) { + this.c = n, this.b = this.c.a, this.a = this.c.e; + } + function Rwe(n) { + this.a = (Jn(Be), Be), this.b = n, new iz(); + } + function cIn(n) { + XW(n.a), n.b = K(ki, Bn, 1, n.b.length, 5, 1); + } + function bo(n) { + Fb(n.c != -1), n.d.gd(n.c), n.b = n.c, n.c = -1; + } + function z6(n) { + return y.Math.sqrt(n.a * n.a + n.b * n.b); + } + function vM(n, e) { + return qx(n.c, n.f, e, n.b, n.a, n.e, n.d); + } + function k0(n, e) { + return E4(e, n.a.c.length), sn(n.a, e); + } + function sh(n, e) { + return x(n) === x(e) || n != null && ct(n, e); + } + function uIn(n) { + return D(n, 102) && (u(n, 19).Bb & yc) != 0; + } + function oIn(n) { + return as(n), D(n, 484) ? u(n, 484) : Jr(n); + } + function sIn(n) { + return n ? n.dc() : !n.Kc().Ob(); + } + function Kwe(n) { + return rg ? AN(rg, n) : !1; + } + function _we(n) { + return 0 >= n ? new Lz() : zme(n - 1); + } + function Hi(n) { + return !n.a && n.c ? n.c.b : n.a; + } + function _W(n) { + return D(n, 616) ? n : new sOn(n); + } + function X1(n) { + n.c ? X1(n.c) : (ta(n), n.d = !0); + } + function X6(n) { + n.c ? n.c.$e() : (n.d = !0, hTe(n)); + } + function fIn(n) { + n.b = !1, n.c = !1, n.d = !1, n.a = !1; + } + function hIn(n) { + var e, t; + return e = n.c.i.c, t = n.d.i.c, e == t; + } + function Hwe(n, e) { + var t; + t = n.Ih(e), t >= 0 ? n.ki(t) : Inn(n, e); + } + function lIn(n, e) { + n.c < 0 || n.b.b < n.c ? ir(n.b, e) : n.a.tf(e); + } + function qwe(n, e) { + ve((!n.a && (n.a = new P7(n, n)), n.a), e); + } + function Uwe(n, e) { + YL(u(e.b, 68), n), eu(e.a, new OG(n)); + } + function Gwe(n, e) { + return Ec(e.j.c.length, n.j.c.length); + } + function zwe(n, e, t) { + return qp(), t.Lg(n, u(e.ld(), 149)); + } + function as(n) { + if (n == null) + throw M(new rp()); + return n; + } + function Jn(n) { + if (n == null) + throw M(new rp()); + return n; + } + function Xwe(n) { + if (n.p != 4) + throw M(new Mu()); + return n.e; + } + function Vwe(n) { + if (n.p != 3) + throw M(new Mu()); + return n.e; + } + function Wwe(n) { + if (n.p != 3) + throw M(new Mu()); + return n.j; + } + function Jwe(n) { + if (n.p != 4) + throw M(new Mu()); + return n.j; + } + function Qwe(n) { + if (n.p != 6) + throw M(new Mu()); + return n.f; + } + function Ywe(n) { + if (n.p != 6) + throw M(new Mu()); + return n.k; + } + function HW(n) { + return !n.b && (n.b = new NE(new aD())), n.b; + } + function y0(n) { + return n.c == -2 && pfe(n, Gye(n.g, n.b)), n.c; + } + function A4(n, e) { + var t; + return t = bN("", n), t.n = e, t.i = 1, t; + } + function kM(n, e, t, i) { + i0.call(this, n, t), this.a = e, this.f = i; + } + function qW(n, e, t, i) { + i0.call(this, n, e), this.d = t, this.a = i; + } + function aIn(n, e) { + l1e.call(this, Xme(Se(n), Se(e))), this.a = e; + } + function ii() { + kjn.call(this), Pb(this.j.c, 0), this.a = -1; + } + function dIn() { + onn.call(this, ks, (o4(), Gdn)), kIe(this); + } + function bIn() { + onn.call(this, Sd, (cEn(), rse)), lOe(this); + } + function wIn() { + je.call(this, "DELAUNAY_TRIANGULATION", 0); + } + function Zwe(n) { + return String.fromCharCode.apply(null, n); + } + function Ve(n, e, t) { + return Si(e) ? Dr(n, e, t) : Wc(n.f, e, t); + } + function UW(n) { + return Dn(), n ? n.Oe() : (j0(), j0(), Oun); + } + function nge(n) { + return Co(n, cB), oT(nr(nr(5, n), n / 10 | 0)); + } + function gIn(n, e) { + return YC(), new lZ(new YTn(n), new QTn(e)); + } + function yM() { + yM = F, cQn = new az(A(T(Pd, 1), WA, 44, 0, [])); + } + function pIn(n) { + return !n.d && (n.d = new Q3(n.c.Cc())), n.d; + } + function S4(n) { + return !n.a && (n.a = new Ujn(n.c.vc())), n.a; + } + function mIn(n) { + return !n.b && (n.b = new r4(n.c.ec())), n.b; + } + function xh(n, e) { + for (; e-- > 0; ) + n = n << 1 | (n < 0 ? 1 : 0); + return n; + } + function vIn(n, e) { + var t; + return t = new Nc(n), Kn(e.c, t), t; + } + function kIn(n, e) { + n.u.Hc((zu(), Fl)) && XEe(n, e), l4e(n, e); + } + function vc(n, e) { + return x(n) === x(e) || n != null && ct(n, e); + } + function Mr(n, e) { + return JL(n.a, e) ? n.b[u(e, 22).g] : null; + } + function ege() { + return YE(), A(T(son, 1), G, 489, 0, [b_]); + } + function tge() { + return eC(), A(T(x1n, 1), G, 490, 0, [Bq]); + } + function ige() { + return tC(), A(T(Xce, 1), G, 558, 0, [Rq]); + } + function rge() { + return s6(), A(T(ian, 1), G, 539, 0, [Hj]); + } + function jM(n) { + return !n.n && (n.n = new q(Sr, n, 1, 7)), n.n; + } + function mN(n) { + return !n.c && (n.c = new q(Qu, n, 9, 9)), n.c; + } + function GW(n) { + return !n.c && (n.c = new Nn(he, n, 5, 8)), n.c; + } + function cge(n) { + return !n.b && (n.b = new Nn(he, n, 4, 7)), n.b; + } + function H7(n) { + return n.j.c.length = 0, XW(n.c), Fae(n.a), n; + } + function P4(n) { + return n.e == rv && Efe(n, Z8e(n.g, n.b)), n.e; + } + function q7(n) { + return n.f == rv && Mfe(n, U7e(n.g, n.b)), n.f; + } + function We(n, e, t, i) { + return qxn(n, e, t, !1), BT(n, i), n; + } + function yIn(n, e) { + this.b = n, oN.call(this, n, e), KTn(this); + } + function jIn(n, e) { + this.b = n, PV.call(this, n, e), _Tn(this); + } + function V6(n) { + this.d = n, this.a = this.d.b, this.b = this.d.c; + } + function zW(n, e) { + this.b = n, this.c = e, this.a = new dp(this.b); + } + function Xi(n, e) { + return zn(e, n.length), n.charCodeAt(e); + } + function uge(n, e) { + LY(n, $(yl(e, "x")), $(yl(e, "y"))); + } + function oge(n, e) { + LY(n, $(yl(e, "x")), $(yl(e, "y"))); + } + function ut(n, e) { + return ta(n), new Tn(n, new iQ(e, n.a)); + } + function _r(n, e) { + return ta(n), new Tn(n, new HJ(e, n.a)); + } + function Ub(n, e) { + return ta(n), new oV(n, new OLn(e, n.a)); + } + function EM(n, e) { + return ta(n), new sV(n, new DLn(e, n.a)); + } + function sge(n, e) { + return new zIn(u(Se(n), 50), u(Se(e), 50)); + } + function fge(n, e) { + return bt(n.d.c + n.d.b / 2, e.d.c + e.d.b / 2); + } + function EIn(n, e, t) { + t.a ? iu(n, e.b - n.f / 2) : tu(n, e.a - n.g / 2); + } + function hge(n, e) { + return bt(n.g.c + n.g.b / 2, e.g.c + e.g.b / 2); + } + function lge(n, e) { + return xz(), bt((Jn(n), n), (Jn(e), e)); + } + function age(n) { + return n != null && t7(jO, n.toLowerCase()); + } + function XW(n) { + var e; + for (e = n.Kc(); e.Ob(); ) + e.Pb(), e.Qb(); + } + function Ag(n) { + var e; + return e = n.b, !e && (n.b = e = new $8n(n)), e; + } + function vN(n) { + var e; + return e = Jme(n), e || null; + } + function CIn(n, e) { + var t, i; + return t = n / e, i = wi(t), t > i && ++i, i; + } + function dge(n, e, t) { + var i; + i = u(n.d.Kb(t), 159), i && i.Nb(e); + } + function bge(n, e, t) { + gIe(n.a, t), Xve(t), FCe(n.b, t), FIe(e, t); + } + function CM(n, e, t, i) { + this.a = n, this.c = e, this.b = t, this.d = i; + } + function VW(n, e, t, i) { + this.c = n, this.b = e, this.a = t, this.d = i; + } + function MIn(n, e, t, i) { + this.c = n, this.b = e, this.d = t, this.a = i; + } + function Ho(n, e, t, i) { + this.c = n, this.d = e, this.b = t, this.a = i; + } + function TIn(n, e, t, i) { + this.a = n, this.d = e, this.c = t, this.b = i; + } + function kN(n, e, t, i) { + this.a = n, this.e = e, this.d = t, this.c = i; + } + function AIn(n, e, t, i) { + this.a = n, this.c = e, this.d = t, this.b = i; + } + function yN(n, e, t) { + this.a = ytn, this.d = n, this.b = e, this.c = t; + } + function Op(n, e, t, i) { + je.call(this, n, e), this.a = t, this.b = i; + } + function SIn(n, e) { + this.d = (Jn(n), n), this.a = 16449, this.c = e; + } + function PIn(n) { + this.a = new Z(), this.e = K(ye, J, 53, n, 0, 2); + } + function wge(n) { + n.Ug("No crossing minimization", 1), n.Vg(); + } + function IIn() { + ec.call(this, "There is no more element."); + } + function OIn(n, e, t, i) { + this.a = n, this.b = e, this.c = t, this.d = i; + } + function DIn(n, e, t, i) { + this.a = n, this.b = e, this.c = t, this.d = i; + } + function Za(n, e, t, i) { + this.e = n, this.a = e, this.c = t, this.d = i; + } + function LIn(n, e, t, i) { + this.a = n, this.c = e, this.d = t, this.b = i; + } + function NIn(n, e, t, i) { + Ko(), LLn.call(this, e, t, i), this.a = n; + } + function $In(n, e, t, i) { + Ko(), LLn.call(this, e, t, i), this.a = n; + } + function jN(n, e, t) { + var i, r; + return i = otn(n), r = e.ti(t, i), r; + } + function al(n) { + var e, t; + return t = (e = new Jd(), e), K4(t, n), t; + } + function EN(n) { + var e, t; + return t = (e = new Jd(), e), hnn(t, n), t; + } + function gge(n, e) { + var t; + return t = ee(n.f, e), qQ(e, t), null; + } + function xIn(n) { + return !n.b && (n.b = new q(Wt, n, 12, 3)), n.b; + } + function FIn(n) { + return x6(n == null || uN(n) && n.Tm !== Q2), n; + } + function MM(n) { + return n.n && (n.e !== Bzn && n.je(), n.j = null), n; + } + function I4(n) { + if (eo(n.d), n.d.d != n.c) + throw M(new Bo()); + } + function WW(n) { + return oe(n.b < n.d.gc()), n.d.Xb(n.c = n.b++); + } + function vo(n) { + n.a.a = n.c, n.c.b = n.a, n.a.b = n.c.a = null, n.b = 0; + } + function CN(n) { + this.f = n, this.c = this.f.e, n.f > 0 && wKn(this); + } + function BIn(n, e) { + this.a = n, wae.call(this, n, u(n.d, 15).fd(e)); + } + function pge(n, e) { + return bt(Pu(n) * ao(n), Pu(e) * ao(e)); + } + function mge(n, e) { + return bt(Pu(n) * ao(n), Pu(e) * ao(e)); + } + function vge(n) { + return _0(n) && on(un(z(n, (cn(), Nd)))); + } + function kge(n, e) { + return Pn(n, u(v(e, (cn(), Cv)), 17), e); + } + function yge(n, e) { + return u(v(n, (W(), T3)), 15).Fc(e), e; + } + function JW(n, e) { + return n.b = e.b, n.c = e.c, n.d = e.d, n.a = e.a, n; + } + function RIn(n, e, t, i) { + this.b = n, this.c = i, IC.call(this, e, t); + } + function jge(n, e, t) { + n.i = 0, n.e = 0, e != t && jFn(n, e, t); + } + function Ege(n, e, t) { + n.i = 0, n.e = 0, e != t && EFn(n, e, t); + } + function Cge(n, e, t) { + return o6(), Q5e(u(ee(n.e, e), 529), t); + } + function Dp(n) { + var e; + return e = n.f, e || (n.f = new h4(n, n.c)); + } + function KIn(n, e) { + return Fg(n.j, e.s, e.c) + Fg(e.e, n.s, n.c); + } + function _In(n, e) { + n.e && !n.e.a && (Syn(n.e, e), _In(n.e, e)); + } + function HIn(n, e) { + n.d && !n.d.a && (Syn(n.d, e), HIn(n.d, e)); + } + function Mge(n, e) { + return -bt(Pu(n) * ao(n), Pu(e) * ao(e)); + } + function Tge(n) { + return u(n.ld(), 149).Pg() + ":" + Jr(n.md()); + } + function qIn() { + tF(this, new sG()), this.wb = (G1(), Hn), o4(); + } + function UIn(n) { + this.b = new Z(), hi(this.b, this.b), this.a = n; + } + function QW(n, e) { + new Ct(), this.a = new Tu(), this.b = n, this.c = e; + } + function j0() { + j0 = F, Iun = new BU(), ZK = new BU(), Oun = new L0n(); + } + function Dn() { + Dn = F, sr = new S0n(), Wh = new I0n(), hP = new O0n(); + } + function YW() { + YW = F, KQn = new ebn(), HQn = new dW(), _Qn = new tbn(); + } + function Lp() { + Lp = F, mP = new Z(), m_ = new de(), p_ = new Z(); + } + function TM(n, e) { + if (n == null) + throw M(new fp(e)); + return n; + } + function AM(n) { + return !n.a && (n.a = new q(Ye, n, 10, 11)), n.a; + } + function ft(n) { + return !n.q && (n.q = new q(Ss, n, 11, 10)), n.q; + } + function H(n) { + return !n.s && (n.s = new q(yu, n, 21, 17)), n.s; + } + function Age(n) { + return Se(n), ORn(new ie(ce(n.a.Kc(), new En()))); + } + function Sge(n, e) { + return wo(n), wo(e), Bjn(u(n, 22), u(e, 22)); + } + function nd(n, e, t) { + var i, r; + i = OV(t), r = new AE(i), bf(n, e, r); + } + function MN(n, e, t, i, r, c) { + ck.call(this, n, e, t, i, r, c ? -2 : -1); + } + function GIn(n, e, t, i) { + mX.call(this, e, t), this.b = n, this.a = i; + } + function zIn(n, e) { + Wfe.call(this, new iN(n)), this.a = n, this.b = e; + } + function ZW(n) { + this.b = n, this.c = n, n.e = null, n.c = null, this.a = 1; + } + function Pge(n) { + Fs(); + var e; + e = u(n.g, 10), e.n.a = n.d.c + e.d.b; + } + function O4() { + O4 = F; + var n, e; + e = !x8e(), n = new V3(), VK = e ? new og() : n; + } + function TN(n) { + return Dn(), D(n, 59) ? new jD(n) : new BC(n); + } + function SM(n) { + return D(n, 16) ? new F6(u(n, 16)) : sbe(n.Kc()); + } + function Ige(n) { + return new qTn(n, n.e.Rd().gc() * n.c.Rd().gc()); + } + function Oge(n) { + return new UTn(n, n.e.Rd().gc() * n.c.Rd().gc()); + } + function nJ(n) { + return n && n.hashCode ? n.hashCode() : l0(n); + } + function AN(n, e) { + return e == null ? !!gr(n.f, null) : Xbe(n.i, e); + } + function Dge(n, e) { + var t; + return t = xX(n.a, e), t && (e.d = null), t; + } + function XIn(n, e, t) { + return n.f ? n.f.ef(e, t) : !1; + } + function U7(n, e, t, i) { + Rt(n.c[e.g], t.g, i), Rt(n.c[t.g], e.g, i); + } + function SN(n, e, t, i) { + Rt(n.c[e.g], e.g, t), Rt(n.b[e.g], e.g, i); + } + function Lge(n, e, t) { + return $(R(t.a)) <= n && $(R(t.b)) >= e; + } + function VIn(n, e) { + this.g = n, this.d = A(T(Qh, 1), b1, 10, 0, [e]); + } + function WIn(n) { + this.c = n, this.b = new Ul(u(Se(new ibn()), 50)); + } + function JIn(n) { + this.c = n, this.b = new Ul(u(Se(new twn()), 50)); + } + function QIn(n) { + this.b = n, this.a = new Ul(u(Se(new $bn()), 50)); + } + function YIn() { + this.b = new ni(), this.d = new Ct(), this.e = new nz(); + } + function eJ() { + this.c = new Li(), this.d = new Li(), this.e = new Li(); + } + function E0() { + this.a = new Tu(), this.b = (Co(3, mw), new zc(3)); + } + function Wl(n, e) { + this.e = n, this.a = ki, this.b = Yqn(e), this.c = e; + } + function PM(n) { + this.c = n.c, this.d = n.d, this.b = n.b, this.a = n.a; + } + function ZIn(n, e, t, i, r, c) { + this.a = n, k$.call(this, e, t, i, r, c); + } + function nOn(n, e, t, i, r, c) { + this.a = n, k$.call(this, e, t, i, r, c); + } + function V1(n, e, t, i, r, c, s) { + return new GN(n.e, e, t, i, r, c, s); + } + function Nge(n, e, t) { + return t >= 0 && An(n.substr(t, e.length), e); + } + function eOn(n, e) { + return D(e, 149) && An(n.b, u(e, 149).Pg()); + } + function $ge(n, e) { + return n.a ? e.Gh().Kc() : u(e.Gh(), 71).Ii(); + } + function tOn(n, e) { + var t; + return t = n.b.Qc(e), JDn(t, n.b.gc()), t; + } + function G7(n, e) { + if (n == null) + throw M(new fp(e)); + return n; + } + function Hr(n) { + return n.u || (Zu(n), n.u = new $An(n, n)), n.u; + } + function PN(n) { + this.a = (Dn(), D(n, 59) ? new jD(n) : new BC(n)); + } + function du(n) { + var e; + return e = u(Un(n, 16), 29), e || n.ii(); + } + function IM(n, e) { + var t; + return t = Xa(n.Rm), e == null ? t : t + ": " + e; + } + function qo(n, e, t) { + return Fi(e, t, n.length), n.substr(e, t - e); + } + function iOn(n, e) { + qC.call(this), aQ(this), this.a = n, this.c = e; + } + function xge(n) { + n && IM(n, n.ie()); + } + function Fge(n) { + HE(), y.setTimeout(function() { + throw n; + }, 0); + } + function Bge() { + return YT(), A(T(Run, 1), G, 436, 0, [o_, Bun]); + } + function Rge() { + return cT(), A(T(_un, 1), G, 435, 0, [Kun, s_]); + } + function Kge() { + return uT(), A(T(won, 1), G, 432, 0, [v_, vP]); + } + function _ge() { + return V4(), A(T(_Zn, 1), G, 517, 0, [dj, L_]); + } + function Hge() { + return KM(), A(T(Ysn, 1), G, 429, 0, [fH, Qsn]); + } + function qge() { + return wk(), A(T(xsn, 1), G, 428, 0, [WP, $sn]); + } + function Uge() { + return QM(), A(T(Ssn, 1), G, 431, 0, [Asn, V_]); + } + function Gge() { + return dk(), A(T(Uhn, 1), G, 430, 0, [UH, GH]); + } + function zge() { + return Z6(), A(T(Die, 1), G, 531, 0, [e9, n9]); + } + function Xge() { + return yT(), A(T(Kln, 1), G, 501, 0, [RI, L2]); + } + function Vge() { + return fh(), A(T(Rie, 1), G, 523, 0, [mb, y1]); + } + function Wge() { + return Pf(), A(T(_ie, 1), G, 522, 0, [Rd, Xf]); + } + function Jge() { + return af(), A(T(tre, 1), G, 528, 0, [zw, Ea]); + } + function Qge() { + return sk(), A(T(Rsn, 1), G, 488, 0, [Bsn, QP]); + } + function Yge() { + return GM(), A(T(P1n, 1), G, 491, 0, [$q, S1n]); + } + function Zge() { + return N$(), A(T($1n, 1), G, 492, 0, [L1n, N1n]); + } + function n2e() { + return FM(), A(T(Rln, 1), G, 433, 0, [dq, Bln]); + } + function e2e() { + return ZM(), A(T(Hln, 1), G, 434, 0, [_ln, vq]); + } + function t2e() { + return M0(), A(T(fre, 1), G, 465, 0, [Ca, I2]); + } + function i2e() { + return ik(), A(T(F1n, 1), G, 438, 0, [Kq, JI]); + } + function r2e() { + return Mk(), A(T(can, 1), G, 437, 0, [YI, ran]); + } + function c2e() { + return RL(), A(T(dO, 1), G, 347, 0, [kdn, ydn]); + } + function OM(n, e, t, i) { + return t >= 0 ? n.Uh(e, t, i) : n.Ch(null, t, i); + } + function z7(n) { + return n.b.b == 0 ? n.a.sf() : UL(n.b); + } + function u2e(n) { + if (n.p != 5) + throw M(new Mu()); + return Ae(n.f); + } + function o2e(n) { + if (n.p != 5) + throw M(new Mu()); + return Ae(n.k); + } + function tJ(n) { + return x(n.a) === x((D$(), CU)) && cOe(n), n.a; + } + function s2e(n, e) { + n.b = e, n.c > 0 && n.b > 0 && (n.g = cM(n.c, n.b, n.a)); + } + function f2e(n, e) { + n.c = e, n.c > 0 && n.b > 0 && (n.g = cM(n.c, n.b, n.a)); + } + function rOn(n, e) { + ofe(this, new V(n.a, n.b)), sfe(this, $7(e)); + } + function C0() { + Jfe.call(this, new ap(Qb(12))), _X(!0), this.a = 2; + } + function IN(n, e, t) { + nt(), Wd.call(this, n), this.b = e, this.a = t; + } + function iJ(n, e, t) { + Ko(), LE.call(this, e), this.a = n, this.b = t; + } + function cOn(n) { + var e; + e = n.c.d.b, n.b = e, n.a = n.c.d, e.a = n.c.d.b = n; + } + function h2e(n) { + return n.b == 0 ? null : (oe(n.b != 0), Xo(n, n.a.a)); + } + function $c(n, e) { + return e == null ? Kr(gr(n.f, null)) : a6(n.i, e); + } + function uOn(n, e, t, i, r) { + return new rF(n, (B4(), i_), e, t, i, r); + } + function DM(n, e) { + return XDn(e), Nme(n, K(ye, _e, 28, e, 15, 1), e); + } + function LM(n, e) { + return TM(n, "set1"), TM(e, "set2"), new WEn(n, e); + } + function l2e(n, e) { + var t = XK[n.charCodeAt(0)]; + return t == null ? n : t; + } + function oOn(n, e) { + var t, i; + return t = e, i = new DO(), NGn(n, t, i), i.d; + } + function ON(n, e, t, i) { + var r; + r = new BAn(), e.a[t.g] = r, Pp(n.b, i, r); + } + function a2e(n, e) { + var t; + return t = Ome(n.f, e), it(HC(t), n.f.d); + } + function X7(n) { + var e; + Hme(n.a), bTn(n.a), e = new IE(n.a), qY(e); + } + function d2e(n, e) { + Hqn(n, !0), eu(n.e.Rf(), new $V(n, !0, e)); + } + function b2e(n, e) { + return Lp(), n == At(Kh(e)) || n == At(ra(e)); + } + function w2e(n, e) { + return kl(), u(v(e, (lc(), Sh)), 17).a == n; + } + function wi(n) { + return Math.max(Math.min(n, tt), -2147483648) | 0; + } + function sOn(n) { + this.a = u(Se(n), 277), this.b = (Dn(), new VX(n)); + } + function fOn(n, e, t) { + this.i = new Z(), this.b = n, this.g = e, this.a = t; + } + function rJ(n, e, t) { + this.a = new Z(), this.e = n, this.f = e, this.c = t; + } + function NM(n, e, t) { + this.c = new Z(), this.e = n, this.f = e, this.b = t; + } + function hOn(n) { + qC.call(this), aQ(this), this.a = n, this.c = !0; + } + function g2e(n) { + function e() { + } + return e.prototype = n || {}, new e(); + } + function p2e(n) { + if (n.Ae()) + return null; + var e = n.n; + return rP[e]; + } + function V7(n) { + return n.Db >> 16 != 3 ? null : u(n.Cb, 27); + } + function Sf(n) { + return n.Db >> 16 != 9 ? null : u(n.Cb, 27); + } + function lOn(n) { + return n.Db >> 16 != 6 ? null : u(n.Cb, 74); + } + function M0() { + M0 = F, Ca = new uX(s3, 0), I2 = new uX(f3, 1); + } + function fh() { + fh = F, mb = new iX(f3, 0), y1 = new iX(s3, 1); + } + function Pf() { + Pf = F, Rd = new rX(_B, 0), Xf = new rX("UP", 1); + } + function aOn() { + aOn = F, sQn = Ce((RE(), A(T(oQn, 1), G, 549, 0, [GK]))); + } + function dOn(n) { + var e; + return e = new zE(Qb(n.length)), tY(e, n), e; + } + function bOn(n, e) { + return n.b += e.b, n.c += e.c, n.d += e.d, n.a += e.a, n; + } + function m2e(n, e) { + return nFn(n, e) ? (J$n(n), !0) : !1; + } + function dl(n, e) { + if (e == null) + throw M(new rp()); + return B8e(n, e); + } + function W7(n, e) { + var t; + t = n.q.getHours(), n.q.setDate(e), H5(n, t); + } + function cJ(n, e, t) { + var i; + i = n.Ih(e), i >= 0 ? n.bi(i, t) : ien(n, e, t); + } + function wOn(n, e) { + var t; + return t = n.Ih(e), t >= 0 ? n.Wh(t) : hF(n, e); + } + function gOn(n, e) { + var t; + for (Se(e), t = n.a; t; t = t.c) + e.Yd(t.g, t.i); + } + function DN(n, e, t) { + var i; + i = kFn(n, e, t), n.b = new ET(i.c.length); + } + function Sg(n, e, t) { + $M(), n && Ve(yU, n, e), n && Ve(hE, n, t); + } + function v2e(n, e) { + return VC(), _n(), u(e.a, 17).a < n; + } + function k2e(n, e) { + return VC(), _n(), u(e.b, 17).a < n; + } + function LN(n, e) { + return y.Math.abs(n) < y.Math.abs(e) ? n : e; + } + function y2e(n) { + return !n.a && (n.a = new q(Ye, n, 10, 11)), n.a.i > 0; + } + function uJ(n) { + var e; + return e = n.d, e = n.bj(n.f), ve(n, e), e.Ob(); + } + function pOn(n, e) { + var t; + return t = new hW(e), HKn(t, n), new _u(t); + } + function j2e(n) { + if (n.p != 0) + throw M(new Mu()); + return C6(n.f, 0); + } + function E2e(n) { + if (n.p != 0) + throw M(new Mu()); + return C6(n.k, 0); + } + function mOn(n) { + return n.Db >> 16 != 7 ? null : u(n.Cb, 241); + } + function D4(n) { + return n.Db >> 16 != 6 ? null : u(n.Cb, 241); + } + function vOn(n) { + return n.Db >> 16 != 7 ? null : u(n.Cb, 167); + } + function At(n) { + return n.Db >> 16 != 11 ? null : u(n.Cb, 27); + } + function Gb(n) { + return n.Db >> 16 != 17 ? null : u(n.Cb, 29); + } + function kOn(n) { + return n.Db >> 16 != 3 ? null : u(n.Cb, 155); + } + function oJ(n) { + var e; + return ta(n), e = new ni(), ut(n, new T9n(e)); + } + function yOn(n, e) { + var t = n.a = n.a || []; + return t[e] || (t[e] = n.ve(e)); + } + function C2e(n, e) { + var t; + t = n.q.getHours(), n.q.setMonth(e), H5(n, t); + } + function jOn(n, e) { + xC(this), this.f = e, this.g = n, MM(this), this.je(); + } + function EOn(n, e) { + this.a = n, this.c = Ki(this.a), this.b = new PM(e); + } + function COn(n, e, t) { + this.a = e, this.c = n, this.b = (Se(t), new _u(t)); + } + function MOn(n, e, t) { + this.a = e, this.c = n, this.b = (Se(t), new _u(t)); + } + function TOn(n) { + this.a = n, this.b = K(Pie, J, 2043, n.e.length, 0, 2); + } + function AOn() { + this.a = new rh(), this.e = new ni(), this.g = 0, this.i = 0; + } + function $M() { + $M = F, yU = new de(), hE = new de(), mle(TQn, new gvn()); + } + function SOn() { + SOn = F, die = Iu(new ii(), (Vi(), zr), (tr(), bj)); + } + function sJ() { + sJ = F, bie = Iu(new ii(), (Vi(), zr), (tr(), bj)); + } + function POn() { + POn = F, gie = Iu(new ii(), (Vi(), zr), (tr(), bj)); + } + function IOn() { + IOn = F, Nie = Ke(new ii(), (Vi(), zr), (tr(), L8)); + } + function ko() { + ko = F, Fie = Ke(new ii(), (Vi(), zr), (tr(), L8)); + } + function OOn() { + OOn = F, Bie = Ke(new ii(), (Vi(), zr), (tr(), L8)); + } + function NN() { + NN = F, qie = Ke(new ii(), (Vi(), zr), (tr(), L8)); + } + function W6(n, e, t, i, r, c) { + return new ml(n.e, e, n.Lj(), t, i, r, c); + } + function Dr(n, e, t) { + return e == null ? Wc(n.f, null, t) : $0(n.i, e, t); + } + function Zi(n, e) { + n.c && bu(n.c.g, n), n.c = e, n.c && nn(n.c.g, n); + } + function $i(n, e) { + n.c && bu(n.c.a, n), n.c = e, n.c && nn(n.c.a, n); + } + function ic(n, e) { + n.i && bu(n.i.j, n), n.i = e, n.i && nn(n.i.j, n); + } + function Oi(n, e) { + n.d && bu(n.d.e, n), n.d = e, n.d && nn(n.d.e, n); + } + function $N(n, e) { + n.a && bu(n.a.k, n), n.a = e, n.a && nn(n.a.k, n); + } + function xN(n, e) { + n.b && bu(n.b.f, n), n.b = e, n.b && nn(n.b.f, n); + } + function DOn(n, e) { + xwe(n, n.b, n.c), u(n.b.b, 68), e && u(e.b, 68).b; + } + function M2e(n, e) { + return bt(u(n.c, 65).c.e.b, u(e.c, 65).c.e.b); + } + function T2e(n, e) { + return bt(u(n.c, 65).c.e.a, u(e.c, 65).c.e.a); + } + function A2e(n) { + return Y$(), _n(), u(n.a, 86).d.e != 0; + } + function xM(n, e) { + D(n.Cb, 184) && (u(n.Cb, 184).tb = null), Xc(n, e); + } + function FN(n, e) { + D(n.Cb, 90) && hw(Zu(u(n.Cb, 90)), 4), Xc(n, e); + } + function S2e(n, e) { + NY(n, e), D(n.Cb, 90) && hw(Zu(u(n.Cb, 90)), 2); + } + function P2e(n, e) { + var t, i; + t = e.c, i = t != null, i && Ip(n, new qb(e.c)); + } + function LOn(n) { + var e, t; + return t = (o4(), e = new Jd(), e), K4(t, n), t; + } + function NOn(n) { + var e, t; + return t = (o4(), e = new Jd(), e), K4(t, n), t; + } + function $On(n) { + for (var e; ; ) + if (e = n.Pb(), !n.Ob()) + return e; + } + function I2e(n, e, t) { + return nn(n.a, (yM(), Nx(e, t), new i0(e, t))), n; + } + function xc(n, e) { + return br(), a$(e) ? new eM(e, n) : new k7(e, n); + } + function J7(n) { + return dh(), Cc(n, 0) >= 0 ? ia(n) : U6(ia(n1(n))); + } + function O2e(n) { + var e; + return e = u(ZC(n.b), 9), new _o(n.a, e, n.c); + } + function xOn(n, e) { + var t; + return t = u(tw(Dp(n.a), e), 16), t ? t.gc() : 0; + } + function FOn(n, e, t) { + var i; + sBn(e, t, n.c.length), i = t - e, Iz(n.c, e, i); + } + function Jl(n, e, t) { + sBn(e, t, n.gc()), this.c = n, this.a = e, this.b = t - e; + } + function Np(n) { + this.c = new Ct(), this.b = n.b, this.d = n.c, this.a = n.a; + } + function BN(n) { + this.a = y.Math.cos(n), this.b = y.Math.sin(n); + } + function ed(n, e, t, i) { + this.c = n, this.d = i, $N(this, e), xN(this, t); + } + function fJ(n, e) { + Vfe.call(this, new ap(Qb(n))), Co(e, Dzn), this.a = e; + } + function BOn(n, e, t) { + return new rF(n, (B4(), t_), null, !1, e, t); + } + function ROn(n, e, t) { + return new rF(n, (B4(), r_), e, t, null, !1); + } + function D2e() { + return Gu(), A(T(xr, 1), G, 108, 0, [Fun, Yr, Aw]); + } + function L2e() { + return wu(), A(T(QQn, 1), G, 472, 0, [kf, ma, Xs]); + } + function N2e() { + return Uu(), A(T(WQn, 1), G, 471, 0, [Mh, pa, zs]); + } + function $2e() { + return wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc]); + } + function x2e() { + return t5(), A(T(Ion, 1), G, 391, 0, [E_, j_, C_]); + } + function F2e() { + return D0(), A(T(R_, 1), G, 372, 0, [ub, va, cb]); + } + function B2e() { + return c5(), A(T(Isn, 1), G, 322, 0, [$8, pj, Psn]); + } + function R2e() { + return bT(), A(T(Dsn, 1), G, 351, 0, [Osn, VP, W_]); + } + function K2e() { + return hd(), A(T(mne, 1), G, 460, 0, [Y_, mv, m2]); + } + function _2e() { + return Z4(), A(T(sH, 1), G, 299, 0, [uH, oH, mj]); + } + function H2e() { + return vl(), A(T(Tne, 1), G, 311, 0, [vj, k2, E3]); + } + function q2e() { + return w5(), A(T(Nhn, 1), G, 390, 0, [FH, Lhn, MI]); + } + function U2e() { + return pr(), A(T(uie, 1), G, 463, 0, [Q8, Vu, Qc]); + } + function G2e() { + return ST(), A(T(Xhn, 1), G, 387, 0, [Ghn, zH, zhn]); + } + function z2e() { + return a5(), A(T(Vhn, 1), G, 349, 0, [VH, XH, Ij]); + } + function X2e() { + return om(), A(T(Jhn, 1), G, 350, 0, [WH, Whn, Y8]); + } + function V2e() { + return dT(), A(T(Zhn, 1), G, 352, 0, [Yhn, JH, Qhn]); + } + function W2e() { + return DT(), A(T(nln, 1), G, 388, 0, [QH, Ov, Gw]); + } + function J2e() { + return O0(), A(T(Aie, 1), G, 464, 0, [Oj, Z8, PI]); + } + function If(n) { + return cc(A(T(Ei, 1), J, 8, 0, [n.i.n, n.n, n.a])); + } + function Q2e() { + return d5(), A(T(pln, 1), G, 392, 0, [gln, nq, Lj]); + } + function KOn() { + KOn = F, Bre = Iu(new ii(), (Qp(), i9), (K5(), oln)); + } + function FM() { + FM = F, dq = new oX("DFS", 0), Bln = new oX("BFS", 1); + } + function _On(n, e, t) { + var i; + i = new C3n(), i.b = e, i.a = t, ++e.b, nn(n.d, i); + } + function Y2e(n, e, t) { + var i; + i = new rr(t.d), it(i, n), LY(e, i.a, i.b); + } + function Z2e(n, e) { + NTn(n, Ae(vi(w0(e, 24), YA)), Ae(vi(e, YA))); + } + function zb(n, e) { + if (n < 0 || n > e) + throw M(new Ir(Itn + n + Otn + e)); + } + function Ln(n, e) { + if (n < 0 || n >= e) + throw M(new Ir(Itn + n + Otn + e)); + } + function zn(n, e) { + if (n < 0 || n >= e) + throw M(new pz(Itn + n + Otn + e)); + } + function In(n, e) { + this.b = (Jn(n), n), this.a = e & vw ? e : e | 64 | wh; + } + function hJ(n) { + var e; + return ta(n), e = (j0(), j0(), ZK), fT(n, e); + } + function npe(n, e, t) { + var i; + return i = G5(n, e, !1), i.b <= e && i.a <= t; + } + function epe() { + return nT(), A(T(D1n, 1), G, 439, 0, [xq, O1n, I1n]); + } + function tpe() { + return _T(), A(T(d1n, 1), G, 394, 0, [a1n, Oq, l1n]); + } + function ipe() { + return XT(), A(T(h1n, 1), G, 445, 0, [Bj, qI, Mq]); + } + function rpe() { + return rA(), A(T(wce, 1), G, 456, 0, [Tq, Sq, Aq]); + } + function cpe() { + return Pk(), A(T(Gln, 1), G, 393, 0, [KI, qln, Uln]); + } + function upe() { + return AT(), A(T(f1n, 1), G, 300, 0, [Cq, s1n, o1n]); + } + function ope() { + return jl(), A(T(adn, 1), G, 346, 0, [uO, M1, E9]); + } + function spe() { + return $k(), A(T(Fq, 1), G, 444, 0, [XI, VI, WI]); + } + function fpe() { + return $f(), A(T(ndn, 1), G, 278, 0, [Fv, Jw, Bv]); + } + function hpe() { + return Gp(), A(T(vdn, 1), G, 280, 0, [mdn, Yw, aO]); + } + function T0(n) { + return Se(n), D(n, 16) ? new _u(u(n, 16)) : y4(n.Kc()); + } + function lJ(n, e) { + return n && n.equals ? n.equals(e) : x(n) === x(e); + } + function vi(n, e) { + return Y1(twe(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e)); + } + function lf(n, e) { + return Y1(iwe(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e)); + } + function RN(n, e) { + return Y1(rwe(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e)); + } + function lpe(n, e) { + var t; + return t = (Jn(n), n).g, cV(!!t), Jn(e), t(e); + } + function HOn(n, e) { + var t, i; + return i = C4(n, e), t = n.a.fd(i), new XEn(n, t); + } + function ape(n) { + return n.Db >> 16 != 6 ? null : u(dF(n), 241); + } + function dpe(n) { + if (n.p != 2) + throw M(new Mu()); + return Ae(n.f) & ui; + } + function bpe(n) { + if (n.p != 2) + throw M(new Mu()); + return Ae(n.k) & ui; + } + function E(n) { + return oe(n.a < n.c.c.length), n.b = n.a++, n.c.c[n.b]; + } + function wpe(n, e) { + n.b = n.b | e.b, n.c = n.c | e.c, n.d = n.d | e.d, n.a = n.a | e.a; + } + function gpe(n, e) { + var t; + t = $(R(n.a.of((He(), iO)))), izn(n, e, t); + } + function qOn(n, e) { + Ya.call(this, 1, 2, A(T(ye, 1), _e, 28, 15, [n, e])); + } + function UOn(n, e, t) { + Wd.call(this, 25), this.b = n, this.a = e, this.c = t; + } + function yo(n) { + nt(), Wd.call(this, n), this.c = !1, this.a = !1; + } + function ppe(n) { + return n.a == ($4(), TO) && vfe(n, OAe(n.g, n.b)), n.a; + } + function $p(n) { + return n.d == ($4(), TO) && yfe(n, IPe(n.g, n.b)), n.d; + } + function mpe(n, e) { + return i5(), n.c == e.c ? bt(e.d, n.d) : bt(e.c, n.c); + } + function vpe(n, e) { + return i5(), n.c == e.c ? bt(e.d, n.d) : bt(n.c, e.c); + } + function kpe(n, e) { + return i5(), n.c == e.c ? bt(n.d, e.d) : bt(n.c, e.c); + } + function ype(n, e) { + return i5(), n.c == e.c ? bt(n.d, e.d) : bt(e.c, n.c); + } + function aJ(n, e) { + return dPn(n.a, e) ? eW(n.b, u(e, 22).g, null) : null; + } + function jpe(n) { + return nr(Bs(kc(to(n, 32)), 32), kc(to(n, 32))); + } + function dJ(n) { + return n.b == null || n.b.length == 0 ? "n_" + n.a : "n_" + n.b; + } + function td(n) { + return n.c == null || n.c.length == 0 ? "n_" + n.g : "n_" + n.c; + } + function GOn(n, e) { + var t; + for (t = n + ""; t.length < e; ) + t = "0" + t; + return t; + } + function Epe(n, e) { + var t; + t = u(ee(n.g, e), 60), eu(e.d, new RCn(n, t)); + } + function Cpe(n, e) { + var t, i; + return t = VRn(n), i = VRn(e), t < i ? -1 : t > i ? 1 : 0; + } + function zOn(n, e) { + var t, i; + return t = s$(e), i = t, u(ee(n.c, i), 17).a; + } + function KN(n, e, t) { + var i; + i = n.d[e.p], n.d[e.p] = n.d[t.p], n.d[t.p] = i; + } + function Mpe(n, e, t) { + var i; + n.n && e && t && (i = new ovn(), nn(n.e, i)); + } + function _N(n, e) { + if (fi(n.a, e), e.d) + throw M(new ec(eXn)); + e.d = n; + } + function bJ(n, e) { + this.a = new Z(), this.d = new Z(), this.f = n, this.c = e; + } + function XOn() { + this.c = new ITn(), this.a = new xLn(), this.b = new Vyn(), aCn(); + } + function VOn() { + qp(), this.b = new de(), this.a = new de(), this.c = new Z(); + } + function WOn(n, e, t) { + this.d = n, this.j = e, this.e = t, this.o = -1, this.p = 3; + } + function JOn(n, e, t) { + this.d = n, this.k = e, this.f = t, this.o = -1, this.p = 5; + } + function QOn(n, e, t, i, r, c) { + bQ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function YOn(n, e, t, i, r, c) { + wQ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function ZOn(n, e, t, i, r, c) { + DJ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function nDn(n, e, t, i, r, c) { + mQ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function eDn(n, e, t, i, r, c) { + LJ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function tDn(n, e, t, i, r, c) { + gQ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function iDn(n, e, t, i, r, c) { + pQ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function rDn(n, e, t, i, r, c) { + NJ.call(this, n, e, t, i, r), c && (this.o = -2); + } + function cDn(n, e, t, i) { + LE.call(this, t), this.b = n, this.c = e, this.d = i; + } + function uDn(n, e) { + this.f = n, this.a = ($4(), MO), this.c = MO, this.b = e; + } + function oDn(n, e) { + this.g = n, this.d = ($4(), TO), this.a = TO, this.b = e; + } + function wJ(n, e) { + !n.c && (n.c = new qt(n, 0)), HA(n.c, (at(), $9), e); + } + function Tpe(n, e) { + return sMe(n, e, D(e, 102) && (u(e, 19).Bb & hr) != 0); + } + function Ape(n, e) { + return _Pn(kc(n.q.getTime()), kc(e.q.getTime())); + } + function sDn(n) { + return XL(n.e.Rd().gc() * n.c.Rd().gc(), 16, new D8n(n)); + } + function Spe(n) { + return !!n.u && Pc(n.u.a).i != 0 && !(n.n && Ix(n.n)); + } + function Ppe(n) { + return !!n.a && no(n.a.a).i != 0 && !(n.b && Ox(n.b)); + } + function gJ(n, e) { + return e == 0 ? !!n.o && n.o.f != 0 : Cx(n, e); + } + function Ipe(n, e, t) { + var i; + return i = u(n.Zb().xc(e), 16), !!i && i.Hc(t); + } + function fDn(n, e, t) { + var i; + return i = u(n.Zb().xc(e), 16), !!i && i.Mc(t); + } + function hDn(n, e) { + var t; + return t = 1 - e, n.a[t] = jT(n.a[t], t), jT(n, e); + } + function lDn(n, e) { + var t, i; + return i = vi(n, vr), t = Bs(e, 32), lf(t, i); + } + function aDn(n, e, t) { + var i; + i = (Se(n), new _u(n)), D7e(new COn(i, e, t)); + } + function Q7(n, e, t) { + var i; + i = (Se(n), new _u(n)), L7e(new MOn(i, e, t)); + } + function fc(n, e, t, i, r, c) { + return qxn(n, e, t, c), MY(n, i), TY(n, r), n; + } + function dDn(n, e, t, i) { + return n.a += "" + qo(e == null ? pu : Jr(e), t, i), n; + } + function xi(n, e) { + this.a = n, zv.call(this, n), zb(e, n.gc()), this.b = e; + } + function bDn(n) { + this.a = K(ki, Bn, 1, YQ(y.Math.max(8, n)) << 1, 5, 1); + } + function Y7(n) { + return u(Ff(n, K(Qh, b1, 10, n.c.length, 0, 1)), 199); + } + function hh(n) { + return u(Ff(n, K(O_, rR, 18, n.c.length, 0, 1)), 483); + } + function wDn(n) { + return n.a ? n.e.length == 0 ? n.a.a : n.a.a + ("" + n.e) : n.c; + } + function J6(n) { + for (; n.d > 0 && n.a[--n.d] == 0; ) + ; + n.a[n.d++] == 0 && (n.e = 0); + } + function gDn(n) { + return oe(n.b.b != n.d.a), n.c = n.b = n.b.b, --n.a, n.c.c; + } + function Ope(n, e, t) { + n.a = e, n.c = t, n.b.a.$b(), vo(n.d), Pb(n.e.a.c, 0); + } + function pDn(n, e) { + var t; + n.e = new oz(), t = aw(e), Yt(t, n.c), Oqn(n, t, 0); + } + function ri(n, e, t, i) { + var r; + r = new eG(), r.a = e, r.b = t, r.c = i, Fe(n.a, r); + } + function Q(n, e, t, i) { + var r; + r = new eG(), r.a = e, r.b = t, r.c = i, Fe(n.b, r); + } + function mDn(n, e, t) { + if (n < 0 || e < n || e > t) + throw M(new Ir(Uje(n, e, t))); + } + function Z7(n, e) { + if (n < 0 || n >= e) + throw M(new Ir(yEe(n, e))); + return n; + } + function Dpe(n) { + if (!("stack" in n)) + try { + throw n; + } catch (e) { + } + return n; + } + function Pg(n) { + return o6(), D(n.g, 10) ? u(n.g, 10) : null; + } + function Lpe(n) { + return Ag(n).dc() ? !1 : (t1e(n, new Pr()), !0); + } + function id(n) { + var e; + return Vr(n) ? (e = n, e == -0 ? 0 : e) : V4e(n); + } + function vDn(n, e) { + return D(e, 44) ? xx(n.a, u(e, 44)) : !1; + } + function kDn(n, e) { + return D(e, 44) ? xx(n.a, u(e, 44)) : !1; + } + function yDn(n, e) { + return D(e, 44) ? xx(n.a, u(e, 44)) : !1; + } + function pJ(n) { + var e; + return X1(n), e = new N0n(), lg(n.a, new E9n(e)), e; + } + function mJ() { + var n, e, t; + return e = (t = (n = new Jd(), n), t), nn(e0n, e), e; + } + function BM(n) { + var e; + return X1(n), e = new $0n(), lg(n.a, new C9n(e)), e; + } + function Npe(n, e) { + return n.a <= n.b ? (e.Dd(n.a++), !0) : !1; + } + function jDn(n) { + P$.call(this, n, (B4(), e_), null, !1, null, !1); + } + function EDn() { + EDn = F, PYn = Ce((YE(), A(T(son, 1), G, 489, 0, [b_]))); + } + function CDn() { + CDn = F, tln = gIn(Y(1), Y(4)), eln = gIn(Y(1), Y(2)); + } + function $pe(n, e) { + return new _L(e, L6(Ki(e.e), n, n), (_n(), !0)); + } + function RM(n) { + return new zc((Co(n, cB), oT(nr(nr(5, n), n / 10 | 0)))); + } + function xpe(n) { + return XL(n.e.Rd().gc() * n.c.Rd().gc(), 273, new O8n(n)); + } + function MDn(n) { + return u(Ff(n, K(BZn, LXn, 12, n.c.length, 0, 1)), 2042); + } + function Fpe(n) { + return ko(), !fr(n) && !(!fr(n) && n.c.i.c == n.d.i.c); + } + function Bpe(n, e) { + return _p(), u(v(e, (lc(), O2)), 17).a >= n.gc(); + } + function Q6(n, e) { + kLe(e, n), QV(n.d), QV(u(v(n, (cn(), mI)), 214)); + } + function HN(n, e) { + yLe(e, n), YV(n.d), YV(u(v(n, (cn(), mI)), 214)); + } + function Rpe(n, e, t) { + n.d && bu(n.d.e, n), n.d = e, n.d && b0(n.d.e, t, n); + } + function Kpe(n, e, t) { + return t.f.c.length > 0 ? TW(n.a, e, t) : TW(n.b, e, t); + } + function _pe(n, e, t) { + var i; + i = r9e(); + try { + return Sae(n, e, t); + } finally { + L3e(i); + } + } + function A0(n, e) { + var t, i; + return t = dl(n, e), i = null, t && (i = t.pe()), i; + } + function Y6(n, e) { + var t, i; + return t = dl(n, e), i = null, t && (i = t.se()), i; + } + function L4(n, e) { + var t, i; + return t = Jb(n, e), i = null, t && (i = t.se()), i; + } + function bl(n, e) { + var t, i; + return t = dl(n, e), i = null, t && (i = pnn(t)), i; + } + function Hpe(n, e, t) { + var i; + return i = wm(t), FA(n.g, i, e), FA(n.i, e, t), e; + } + function vJ(n, e, t) { + this.d = new x7n(this), this.e = n, this.i = e, this.f = t; + } + function TDn(n, e, t, i) { + this.e = null, this.c = n, this.d = e, this.a = t, this.b = i; + } + function ADn(n, e, t, i) { + CTn(this), this.c = n, this.e = e, this.f = t, this.b = i; + } + function kJ(n, e, t, i) { + this.d = n, this.n = e, this.g = t, this.o = i, this.p = -1; + } + function SDn(n, e, t, i) { + return D(t, 59) ? new rAn(n, e, t, i) : new kW(n, e, t, i); + } + function N4(n) { + return D(n, 16) ? u(n, 16).dc() : !n.Kc().Ob(); + } + function PDn(n) { + if (n.e.g != n.b) + throw M(new Bo()); + return !!n.c && n.d > 0; + } + function be(n) { + return oe(n.b != n.d.c), n.c = n.b, n.b = n.b.a, ++n.a, n.c.c; + } + function yJ(n, e) { + Jn(e), Rt(n.a, n.c, e), n.c = n.c + 1 & n.a.length - 1, QRn(n); + } + function W1(n, e) { + Jn(e), n.b = n.b - 1 & n.a.length - 1, Rt(n.a, n.b, e), QRn(n); + } + function IDn(n) { + var e; + e = n.Gh(), this.a = D(e, 71) ? u(e, 71).Ii() : e.Kc(); + } + function qpe(n) { + return new In(Sme(u(n.a.md(), 16).gc(), n.a.ld()), 16); + } + function ODn() { + ODn = F, zce = Ce((eC(), A(T(x1n, 1), G, 490, 0, [Bq]))); + } + function DDn() { + DDn = F, Vce = Ce((tC(), A(T(Xce, 1), G, 558, 0, [Rq]))); + } + function LDn() { + LDn = F, aue = Ce((s6(), A(T(ian, 1), G, 539, 0, [Hj]))); + } + function Upe() { + return dd(), A(T(Non, 1), G, 389, 0, [Ow, Lon, P_, I_]); + } + function Gpe() { + return B4(), A(T(lP, 1), G, 304, 0, [e_, t_, i_, r_]); + } + function zpe() { + return Vp(), A(T(CYn, 1), G, 332, 0, [uj, cj, oj, sj]); + } + function Xpe() { + return T5(), A(T(AYn, 1), G, 406, 0, [fj, wP, gP, hj]); + } + function Vpe() { + return N0(), A(T(jYn, 1), G, 417, 0, [rj, ij, a_, d_]); + } + function Wpe() { + return nm(), A(T(TZn, 1), G, 416, 0, [rb, Iw, Pw, d2]); + } + function Jpe() { + return xf(), A(T(tne, 1), G, 421, 0, [j3, lv, av, B_]); + } + function Qpe() { + return OT(), A(T(GZn, 1), G, 371, 0, [F_, HP, qP, wj]); + } + function Ype() { + return cw(), A(T(RH, 1), G, 203, 0, [TI, BH, P2, S2]); + } + function Zpe() { + return lh(), A(T(qhn, 1), G, 284, 0, [k1, Hhn, HH, qH]); + } + function n3e(n) { + var e; + return n.j == (en(), ae) && (e = vHn(n), Su(e, Zn)); + } + function e3e(n, e) { + var t; + t = e.a, Zi(t, e.c.d), Oi(t, e.d.d), nw(t.a, n.n); + } + function jJ(n, e) { + var t; + return t = u(Nf(n.b, e), 67), !t && (t = new Ct()), t; + } + function xp(n) { + return o6(), D(n.g, 154) ? u(n.g, 154) : null; + } + function t3e(n) { + n.a = null, n.e = null, Pb(n.b.c, 0), Pb(n.f.c, 0), n.c = null; + } + function KM() { + KM = F, fH = new nX(qm, 0), Qsn = new nX("TOP_LEFT", 1); + } + function Z6() { + Z6 = F, e9 = new tX("UPPER", 0), n9 = new tX("LOWER", 1); + } + function i3e(n, e) { + return vp(new V(e.e.a + e.f.a / 2, e.e.b + e.f.b / 2), n); + } + function NDn(n, e) { + return u(ho(_b(u(ot(n.k, e), 15).Oc(), w2)), 113); + } + function $Dn(n, e) { + return u(ho(Ap(u(ot(n.k, e), 15).Oc(), w2)), 113); + } + function r3e() { + return Qp(), A(T(cln, 1), G, 405, 0, [LI, t9, i9, r9]); + } + function c3e() { + return b5(), A(T(Fln, 1), G, 353, 0, [aq, BI, lq, hq]); + } + function u3e() { + return sA(), A(T(u1n, 1), G, 354, 0, [Eq, r1n, c1n, i1n]); + } + function o3e() { + return go(), A(T(S9, 1), G, 386, 0, [rE, Gd, iE, Qw]); + } + function s3e() { + return To(), A(T(Zue, 1), G, 291, 0, [nE, nl, Aa, Zj]); + } + function f3e() { + return El(), A(T(aU, 1), G, 223, 0, [lU, Yj, Rv, F3]); + } + function h3e() { + return qT(), A(T(Mdn, 1), G, 320, 0, [wU, jdn, Cdn, Edn]); + } + function l3e() { + return LT(), A(T(goe, 1), G, 415, 0, [gU, Adn, Tdn, Sdn]); + } + function a3e(n) { + return $M(), nu(yU, n) ? u(ee(yU, n), 341).Qg() : null; + } + function Uo(n, e, t) { + return e < 0 ? hF(n, t) : u(t, 69).wk().Bk(n, n.hi(), e); + } + function d3e(n, e, t) { + var i; + return i = wm(t), FA(n.j, i, e), Ve(n.k, e, t), e; + } + function b3e(n, e, t) { + var i; + return i = wm(t), FA(n.d, i, e), Ve(n.e, e, t), e; + } + function xDn(n) { + var e, t; + return e = (B1(), t = new HO(), t), n && AA(e, n), e; + } + function EJ(n) { + var e; + return e = n.aj(n.i), n.i > 0 && Oc(n.g, 0, e, 0, n.i), e; + } + function FDn(n, e) { + var t; + for (t = n.j.c.length; t < e; t++) + nn(n.j, n.Ng()); + } + function BDn(n, e, t, i) { + var r; + return r = i[e.g][t.g], $(R(v(n.a, r))); + } + function RDn(n, e) { + iC(); + var t; + return t = u(ee(yO, n), 57), !t || t.fk(e); + } + function w3e(n) { + if (n.p != 1) + throw M(new Mu()); + return Ae(n.f) << 24 >> 24; + } + function g3e(n) { + if (n.p != 1) + throw M(new Mu()); + return Ae(n.k) << 24 >> 24; + } + function p3e(n) { + if (n.p != 7) + throw M(new Mu()); + return Ae(n.k) << 16 >> 16; + } + function m3e(n) { + if (n.p != 7) + throw M(new Mu()); + return Ae(n.f) << 16 >> 16; + } + function Ig(n, e) { + return e.e == 0 || n.e == 0 ? S8 : (Am(), vF(n, e)); + } + function KDn(n, e) { + return x(e) === x(n) ? "(this Map)" : e == null ? pu : Jr(e); + } + function v3e(n, e, t) { + return tN(R(Kr(gr(n.f, e))), R(Kr(gr(n.f, t)))); + } + function k3e(n, e, t) { + var i; + i = u(ee(n.g, t), 60), nn(n.a.c, new bi(e, i)); + } + function _Dn(n, e, t) { + n.i = 0, n.e = 0, e != t && (EFn(n, e, t), jFn(n, e, t)); + } + function y3e(n, e, t, i, r) { + var c; + c = jMe(r, t, i), nn(e, bEe(r, c)), cje(n, r, e); + } + function CJ(n, e, t, i, r) { + this.i = n, this.a = e, this.e = t, this.j = i, this.f = r; + } + function HDn(n, e) { + eJ.call(this), this.a = n, this.b = e, nn(this.a.b, this); + } + function qDn(n) { + this.b = new de(), this.c = new de(), this.d = new de(), this.a = n; + } + function UDn(n, e) { + var t; + return t = new fg(), n.Gd(t), t.a += "..", e.Hd(t), t.a; + } + function GDn(n, e) { + var t; + for (t = e; t; ) + a0(n, t.i, t.j), t = At(t); + return n; + } + function zDn(n, e, t) { + var i; + return i = wm(t), Ve(n.b, i, e), Ve(n.c, e, t), e; + } + function wl(n) { + var e; + for (e = 0; n.Ob(); ) + n.Pb(), e = nr(e, 1); + return oT(e); + } + function Fh(n, e) { + br(); + var t; + return t = u(n, 69).vk(), yje(t, e), t.xl(e); + } + function j3e(n, e, t) { + if (t) { + var i = t.oe(); + n.a[e] = i(t); + } else + delete n.a[e]; + } + function MJ(n, e) { + var t; + t = n.q.getHours(), n.q.setFullYear(e + ha), H5(n, t); + } + function E3e(n, e) { + return u(e == null ? Kr(gr(n.f, null)) : a6(n.i, e), 288); + } + function TJ(n, e) { + return n == (Vn(), Vt) && e == Vt ? 4 : n == Vt || e == Vt ? 8 : 32; + } + function _M(n, e, t) { + return RA(n, e, t, D(e, 102) && (u(e, 19).Bb & hr) != 0); + } + function C3e(n, e, t) { + return Om(n, e, t, D(e, 102) && (u(e, 19).Bb & hr) != 0); + } + function M3e(n, e, t) { + return wMe(n, e, t, D(e, 102) && (u(e, 19).Bb & hr) != 0); + } + function AJ(n) { + n.b != n.c && (n.a = K(ki, Bn, 1, 8, 5, 1), n.b = 0, n.c = 0); + } + function n5(n) { + return oe(n.a < n.c.a.length), n.b = n.a, r$n(n), n.c.b[n.b]; + } + function Pc(n) { + return n.n || (Zu(n), n.n = new vPn(n, Er, n), Hr(n)), n.n; + } + function XDn(n) { + if (n < 0) + throw M(new Kjn("Negative array size: " + n)); + } + function qN(n, e, t) { + if (t) { + var i = t.oe(); + t = i(t); + } else + t = void 0; + n.a[e] = t; + } + function VDn(n, e) { + cm(); + var t; + return t = n.j.g - e.j.g, t != 0 ? t : 0; + } + function T3e(n, e) { + return fl(), ve(H(n.a), e); + } + function A3e(n, e) { + return fl(), ve(H(n.a), e); + } + function gl(n, e) { + dh(), Ya.call(this, n, 1, A(T(ye, 1), _e, 28, 15, [e])); + } + function Xb(n, e) { + nt(), Wd.call(this, n), this.a = e, this.c = -1, this.b = -1; + } + function Vb(n, e, t, i) { + WOn.call(this, 1, t, i), this.c = n, this.b = e; + } + function UN(n, e, t, i) { + JOn.call(this, 1, t, i), this.c = n, this.b = e; + } + function GN(n, e, t, i, r, c, s) { + k$.call(this, e, i, r, c, s), this.c = n, this.a = t; + } + function rd(n, e, t) { + this.e = n, this.a = ki, this.b = Yqn(e), this.c = e, this.d = t; + } + function zN(n) { + this.e = n, this.c = this.e.a, this.b = this.e.g, this.d = this.e.i; + } + function SJ(n) { + this.d = n, this.b = this.d.a.entries(), this.a = this.b.next(); + } + function WDn(n) { + this.c = n, this.a = u(gs(n), 156), this.b = this.a.jk().wi(); + } + function Ql() { + de.call(this), fAn(this), this.d.b = this.d, this.d.a = this.d; + } + function Kt(n, e, t, i) { + var r; + r = new OO(), r.c = e, r.b = t, r.a = i, i.b = t.a = r, ++n.b; + } + function S3e(n, e) { + var t; + return t = e != null ? $c(n, e) : Kr(gr(n.f, e)), PC(t); + } + function P3e(n, e) { + var t; + return t = e != null ? $c(n, e) : Kr(gr(n.f, e)), PC(t); + } + function Wr(n, e) { + var t; + return e.b.Kb(zNn(n, e.c.Xe(), (t = new S9n(e), t))); + } + function I3e(n, e) { + var t; + return XDn(e), t = n.slice(0, e), t.length = e, o$(t, n); + } + function JDn(n, e) { + var t; + for (t = 0; t < e; ++t) + Rt(n, t, new CG(u(n[t], 44))); + } + function O3e(n, e) { + var t; + for (t = n.d - 1; t >= 0 && n.a[t] === e[t]; t--) + ; + return t < 0; + } + function HM(n) { + var e; + return n ? new hW(n) : (e = new rh(), A$(e, n), e); + } + function D3e(n, e) { + var t, i; + i = !1; + do + t = aFn(n, e), i = i | t; + while (t); + return i; + } + function L3e(n) { + n && cme((dz(), fun)), --cP, n && uP != -1 && (Cle(uP), uP = -1); + } + function qM(n) { + enn(), NTn(this, Ae(vi(w0(n, 24), YA)), Ae(vi(n, YA))); + } + function QDn() { + QDn = F, qQn = Ce((YT(), A(T(Run, 1), G, 436, 0, [o_, Bun]))); + } + function YDn() { + YDn = F, UQn = Ce((cT(), A(T(_un, 1), G, 435, 0, [Kun, s_]))); + } + function ZDn() { + ZDn = F, zYn = Ce((uT(), A(T(won, 1), G, 432, 0, [v_, vP]))); + } + function nLn() { + nLn = F, HZn = Ce((V4(), A(T(_Zn, 1), G, 517, 0, [dj, L_]))); + } + function eLn() { + eLn = F, Sne = Ce((KM(), A(T(Ysn, 1), G, 429, 0, [fH, Qsn]))); + } + function tLn() { + tLn = F, pne = Ce((wk(), A(T(xsn, 1), G, 428, 0, [WP, $sn]))); + } + function iLn() { + iLn = F, yne = Ce((sk(), A(T(Rsn, 1), G, 488, 0, [Bsn, QP]))); + } + function rLn() { + rLn = F, cie = Ce((dk(), A(T(Uhn, 1), G, 430, 0, [UH, GH]))); + } + function cLn() { + cLn = F, Lie = Ce((Z6(), A(T(Die, 1), G, 531, 0, [e9, n9]))); + } + function uLn() { + uLn = F, dne = Ce((QM(), A(T(Ssn, 1), G, 431, 0, [Asn, V_]))); + } + function oLn() { + oLn = F, Fre = Ce((FM(), A(T(Rln, 1), G, 433, 0, [dq, Bln]))); + } + function sLn() { + sLn = F, Hre = Ce((yT(), A(T(Kln, 1), G, 501, 0, [RI, L2]))); + } + function fLn() { + fLn = F, Kie = Ce((fh(), A(T(Rie, 1), G, 523, 0, [mb, y1]))); + } + function hLn() { + hLn = F, Hie = Ce((Pf(), A(T(_ie, 1), G, 522, 0, [Rd, Xf]))); + } + function lLn() { + lLn = F, ire = Ce((af(), A(T(tre, 1), G, 528, 0, [zw, Ea]))); + } + function aLn() { + aLn = F, hre = Ce((M0(), A(T(fre, 1), G, 465, 0, [Ca, I2]))); + } + function dLn() { + dLn = F, Gre = Ce((ZM(), A(T(Hln, 1), G, 434, 0, [_ln, vq]))); + } + function bLn() { + bLn = F, Kce = Ce((GM(), A(T(P1n, 1), G, 491, 0, [$q, S1n]))); + } + function wLn() { + wLn = F, Hce = Ce((N$(), A(T($1n, 1), G, 492, 0, [L1n, N1n]))); + } + function gLn() { + gLn = F, Wce = Ce((ik(), A(T(F1n, 1), G, 438, 0, [Kq, JI]))); + } + function pLn() { + pLn = F, due = Ce((Mk(), A(T(can, 1), G, 437, 0, [YI, ran]))); + } + function mLn() { + mLn = F, doe = Ce((RL(), A(T(dO, 1), G, 347, 0, [kdn, ydn]))); + } + function N3e() { + return ci(), A(T(y9, 1), G, 88, 0, [Jf, Xr, Br, Wf, us]); + } + function $3e() { + return en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]); + } + function x3e(n, e, t) { + return u(e == null ? Wc(n.f, null, t) : $0(n.i, e, t), 288); + } + function F3e(n) { + return (n.k == (Vn(), Vt) || n.k == Zt) && kt(n, (W(), R8)); + } + function XN(n) { + return n.c && n.d ? dJ(n.c) + "->" + dJ(n.d) : "e_" + l0(n); + } + function qi(n, e) { + var t, i; + for (Jn(e), i = n.Kc(); i.Ob(); ) + t = i.Pb(), e.Cd(t); + } + function B3e(n, e) { + var t; + t = new sp(), nd(t, "x", e.a), nd(t, "y", e.b), Ip(n, t); + } + function R3e(n, e) { + var t; + t = new sp(), nd(t, "x", e.a), nd(t, "y", e.b), Ip(n, t); + } + function vLn(n, e) { + var t; + for (t = e; t; ) + a0(n, -t.i, -t.j), t = At(t); + return n; + } + function PJ(n, e) { + var t, i; + for (t = e, i = 0; t > 0; ) + i += n.a[t], t -= t & -t; + return i; + } + function Go(n, e, t) { + var i; + return i = (Ln(e, n.c.length), n.c[e]), n.c[e] = t, i; + } + function IJ(n, e, t) { + n.a.c.length = 0, hOe(n, e, t), n.a.c.length == 0 || BSe(n, e); + } + function nk(n) { + n.i = 0, u7(n.b, null), u7(n.c, null), n.a = null, n.e = null, ++n.g; + } + function UM() { + UM = F, Uf = !0, LQn = !1, NQn = !1, xQn = !1, $Qn = !1; + } + function VN(n) { + UM(), !Uf && (this.c = n, this.e = !0, this.a = new Z()); + } + function kLn(n, e) { + this.c = 0, this.b = e, qMn.call(this, n, 17493), this.a = this.c; + } + function yLn(n) { + Ezn(), Pyn(this), this.a = new Ct(), fY(this, n), Fe(this.a, n); + } + function jLn() { + pL(this), this.b = new V(St, St), this.a = new V(li, li); + } + function GM() { + GM = F, $q = new hX(uin, 0), S1n = new hX("TARGET_WIDTH", 1); + } + function Og(n, e) { + return (ta(n), s4(new Tn(n, new iQ(e, n.a)))).Bd(v3); + } + function K3e() { + return Vi(), A(T(Oon, 1), G, 367, 0, [Vs, Jh, Dc, _c, zr]); + } + function _3e() { + return ow(), A(T(rne, 1), G, 375, 0, [gj, zP, XP, GP, UP]); + } + function H3e() { + return o1(), A(T(Nsn, 1), G, 348, 0, [J_, Lsn, Q_, pv, gv]); + } + function q3e() { + return M5(), A(T(xhn, 1), G, 323, 0, [$hn, KH, _H, W8, J8]); + } + function U3e() { + return Yo(), A(T(lfn, 1), G, 171, 0, [Ej, _8, ya, H8, xw]); + } + function G3e() { + return wA(), A(T(qre, 1), G, 368, 0, [pq, bq, mq, wq, gq]); + } + function z3e() { + return x5(), A(T(qce, 1), G, 373, 0, [N2, D3, d9, a9, _j]); + } + function X3e() { + return Jk(), A(T(_1n, 1), G, 324, 0, [B1n, _q, K1n, Hq, R1n]); + } + function V3e() { + return pf(), A(T(Zh, 1), G, 170, 0, [xn, pi, Ph, Kd, E1]); + } + function W3e() { + return Bg(), A(T(M9, 1), G, 256, 0, [Sa, eE, ddn, C9, bdn]); + } + function J3e(n) { + return HE(), function() { + return _pe(n, this, arguments); + }; + } + function fr(n) { + return !n.c || !n.d ? !1 : !!n.c.i && n.c.i == n.d.i; + } + function OJ(n, e) { + return D(e, 143) ? An(n.c, u(e, 143).c) : !1; + } + function Zu(n) { + return n.t || (n.t = new vyn(n), v5(new $jn(n), 0, n.t)), n.t; + } + function ELn(n) { + this.b = n, ne.call(this, n), this.a = u(Un(this.b.a, 4), 129); + } + function CLn(n) { + this.b = n, yp.call(this, n), this.a = u(Un(this.b.a, 4), 129); + } + function Rs(n, e, t, i, r) { + NLn.call(this, e, i, r), this.c = n, this.b = t; + } + function DJ(n, e, t, i, r) { + WOn.call(this, e, i, r), this.c = n, this.a = t; + } + function LJ(n, e, t, i, r) { + JOn.call(this, e, i, r), this.c = n, this.a = t; + } + function NJ(n, e, t, i, r) { + NLn.call(this, e, i, r), this.c = n, this.a = t; + } + function WN(n, e) { + var t; + return t = u(Nf(n.d, e), 23), t || u(Nf(n.e, e), 23); + } + function MLn(n, e) { + var t, i; + return t = e.ld(), i = n.Fe(t), !!i && vc(i.e, e.md()); + } + function TLn(n, e) { + var t; + return t = e.ld(), new i0(t, n.e.pc(t, u(e.md(), 16))); + } + function Q3e(n, e) { + var t; + return t = n.a.get(e), t == null ? K(ki, Bn, 1, 0, 5, 1) : t; + } + function ALn(n) { + var e; + return e = n.length, An(Yn.substr(Yn.length - e, e), n); + } + function fe(n) { + if (pe(n)) + return n.c = n.a, n.a.Pb(); + throw M(new nc()); + } + function $J(n, e) { + return e == 0 || n.e == 0 ? n : e > 0 ? gqn(n, e) : KBn(n, -e); + } + function Fp(n, e) { + return e == 0 || n.e == 0 ? n : e > 0 ? KBn(n, e) : gqn(n, -e); + } + function xJ(n) { + sle.call(this, n == null ? pu : Jr(n), D(n, 82) ? u(n, 82) : null); + } + function SLn(n) { + var e; + return n.c || (e = n.r, D(e, 90) && (n.c = u(e, 29))), n.c; + } + function JN(n) { + var e; + return e = new E0(), Ur(e, n), U(e, (cn(), Fr), null), e; + } + function PLn(n) { + var e, t; + return e = n.c.i, t = n.d.i, e.k == (Vn(), Zt) && t.k == Zt; + } + function QN(n) { + var e, t, i; + return e = n & ro, t = n >> 22 & ro, i = n < 0 ? Il : 0, Zc(e, t, i); + } + function Y3e(n) { + var e, t, i, r; + for (t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], X6(e); + } + function Z3e(n, e) { + var t, i; + t = u(s5e(n.c, e), 16), t && (i = t.gc(), t.$b(), n.d -= i); + } + function YN(n, e, t) { + var i; + return i = n.Ih(e), i >= 0 ? n.Lh(i, t, !0) : H0(n, e, t); + } + function n4e(n, e, t) { + return bt(vp(pm(n), Ki(e.b)), vp(pm(n), Ki(t.b))); + } + function e4e(n, e, t) { + return bt(vp(pm(n), Ki(e.e)), vp(pm(n), Ki(t.e))); + } + function t4e(n, e) { + return y.Math.min(J1(e.a, n.d.d.c), J1(e.b, n.d.d.c)); + } + function ek(n, e) { + n._i(n.i + 1), I6(n, n.i, n.Zi(n.i, e)), n.Mi(n.i++, e), n.Ni(); + } + function e5(n) { + var e, t; + ++n.j, e = n.g, t = n.i, n.g = null, n.i = 0, n.Oi(t, e), n.Ni(); + } + function ILn(n, e, t) { + var i; + i = new $X(n.a), s5(i, n.a.a), Wc(i.f, e, t), n.a.a = i; + } + function FJ(n, e, t, i) { + var r; + for (r = 0; r < dP; r++) + hM(n.a[r][e.g], t, i[e.g]); + } + function BJ(n, e, t, i) { + var r; + for (r = 0; r < h_; r++) + lM(n.a[e.g][r], t, i[e.g]); + } + function ot(n, e) { + var t; + return t = u(n.c.xc(e), 16), !t && (t = n.ic(e)), n.pc(e, t); + } + function i4e(n) { + var e; + return e = (Se(n), n ? new _u(n) : y4(n.Kc())), Yk(e), FT(e); + } + function Of(n) { + var e, t; + return Se(n), e = nge(n.length), t = new zc(e), tY(t, n), t; + } + function ZN(n, e, t, i) { + var r; + return r = K(ye, _e, 28, e, 15, 1), Cye(r, n, e, t, i), r; + } + function RJ(n, e) { + if (n < 0 || n > e) + throw M(new Ir(Tnn(n, e, "index"))); + return n; + } + function Yl(n, e) { + var t; + return t = (Ln(e, n.c.length), n.c[e]), Iz(n.c, e, 1), t; + } + function KJ(n, e) { + var t, i; + return t = (Jn(n), n), i = (Jn(e), e), t == i ? 0 : t < i ? -1 : 1; + } + function _J(n) { + var e; + return e = n.e + n.f, isNaN(e) && GC(n.d) ? n.d : e; + } + function r4e(n) { + return n.e = 3, n.d = n.Yb(), n.e != 2 ? (n.e = 0, !0) : !1; + } + function pl(n, e) { + return n.a ? Re(n.a, n.b) : n.a = new mo(n.d), T6(n.a, e), n; + } + function Bp(n, e) { + return Si(e) ? e == null ? qnn(n.f, null) : zxn(n.i, e) : qnn(n.f, e); + } + function OLn(n, e) { + HMn.call(this, e.zd(), e.yd() & -6), Jn(n), this.a = n, this.b = e; + } + function DLn(n, e) { + qMn.call(this, e.zd(), e.yd() & -6), Jn(n), this.a = n, this.b = e; + } + function HJ(n, e) { + IC.call(this, e.zd(), e.yd() & -6), Jn(n), this.a = n, this.b = e; + } + function LLn(n, e, t) { + LE.call(this, t), this.b = n, this.c = e, this.d = (gx(), TU); + } + function NLn(n, e, t) { + this.d = n, this.k = e ? 1 : 0, this.f = t ? 1 : 0, this.o = -1, this.p = 0; + } + function Df(n) { + this.c = n, this.a = new C(this.c.a), this.b = new C(this.c.b); + } + function zM() { + this.e = new Z(), this.c = new Z(), this.d = new Z(), this.b = new Z(); + } + function $Ln() { + this.g = new XG(), this.b = new XG(), this.a = new Z(), this.k = new Z(); + } + function xLn() { + this.a = new QG(), this.b = new tjn(), this.d = new uwn(), this.e = new awn(); + } + function FLn(n, e, t) { + this.a = n, this.c = e, this.d = t, nn(e.e, this), nn(t.b, this); + } + function qJ(n, e, t) { + var i, r; + for (i = 0, r = 0; r < e.length; r++) + i += n.tg(e[r], i, t); + } + function c4e(n, e) { + var t; + return t = COe(n, e), n.b = new ET(t.c.length), qIe(n, t); + } + function u4e(n, e) { + var t; + t = n.q.getHours() + (e / 60 | 0), n.q.setMinutes(e), H5(n, t); + } + function n$(n) { + var e; + return e = n.b, e.b == 0 ? null : u(Zo(e, 0), 65).b; + } + function UJ(n) { + if (n.a) { + if (n.e) + return UJ(n.e); + } else + return n; + return null; + } + function o4e(n, e) { + return n.p < e.p ? 1 : n.p > e.p ? -1 : 0; + } + function BLn(n) { + var e; + return n.a || (e = n.r, D(e, 156) && (n.a = u(e, 156))), n.a; + } + function s4e(n, e, t) { + var i; + return ++n.e, --n.f, i = u(n.d[e].gd(t), 136), i.md(); + } + function f4e(n) { + var e, t; + return e = n.ld(), t = u(n.md(), 16), N7(t.Nc(), new N8n(e)); + } + function RLn(n, e) { + return nu(n.a, e) ? (Bp(n.a, e), !0) : !1; + } + function Rp(n, e, t) { + return Z7(e, n.e.Rd().gc()), Z7(t, n.c.Rd().gc()), n.a[e][t]; + } + function XM(n, e, t) { + this.a = n, this.b = e, this.c = t, nn(n.t, this), nn(e.i, this); + } + function VM(n, e, t, i) { + this.f = n, this.e = e, this.d = t, this.b = i, this.c = i ? i.d : null; + } + function tk() { + this.b = new Ct(), this.a = new Ct(), this.b = new Ct(), this.a = new Ct(); + } + function $4() { + $4 = F; + var n, e; + MO = (o4(), e = new xE(), e), TO = (n = new fD(), n); + } + function h4e(n) { + var e; + return ta(n), e = new OSn(n, n.a.e, n.a.d | 4), new oV(n, e); + } + function KLn(n) { + var e; + for (X1(n), e = 0; n.a.Bd(new J0n()); ) + e = nr(e, 1); + return e; + } + function WM(n, e) { + return Jn(e), n.c < n.d ? (n.Se(e, n.c++), !0) : !1; + } + function zc(n) { + pL(this), x7(n >= 0, "Initial capacity must not be negative"); + } + function JM() { + JM = F, b9 = new lt("org.eclipse.elk.labels.labelManager"); + } + function _Ln() { + _Ln = F, jsn = new Dt("separateLayerConnections", (OT(), F_)); + } + function af() { + af = F, zw = new cX("REGULAR", 0), Ea = new cX("CRITICAL", 1); + } + function ik() { + ik = F, Kq = new aX("FIXED", 0), JI = new aX("CENTER_NODE", 1); + } + function QM() { + QM = F, Asn = new Qz("QUADRATIC", 0), V_ = new Qz("SCANLINE", 1); + } + function HLn() { + HLn = F, bne = Ce((c5(), A(T(Isn, 1), G, 322, 0, [$8, pj, Psn]))); + } + function qLn() { + qLn = F, wne = Ce((bT(), A(T(Dsn, 1), G, 351, 0, [Osn, VP, W_]))); + } + function ULn() { + ULn = F, hne = Ce((D0(), A(T(R_, 1), G, 372, 0, [ub, va, cb]))); + } + function GLn() { + GLn = F, vne = Ce((hd(), A(T(mne, 1), G, 460, 0, [Y_, mv, m2]))); + } + function zLn() { + zLn = F, Mne = Ce((Z4(), A(T(sH, 1), G, 299, 0, [uH, oH, mj]))); + } + function XLn() { + XLn = F, Ane = Ce((vl(), A(T(Tne, 1), G, 311, 0, [vj, k2, E3]))); + } + function VLn() { + VLn = F, nie = Ce((w5(), A(T(Nhn, 1), G, 390, 0, [FH, Lhn, MI]))); + } + function WLn() { + WLn = F, sie = Ce((ST(), A(T(Xhn, 1), G, 387, 0, [Ghn, zH, zhn]))); + } + function JLn() { + JLn = F, fie = Ce((a5(), A(T(Vhn, 1), G, 349, 0, [VH, XH, Ij]))); + } + function QLn() { + QLn = F, oie = Ce((pr(), A(T(uie, 1), G, 463, 0, [Q8, Vu, Qc]))); + } + function YLn() { + YLn = F, hie = Ce((om(), A(T(Jhn, 1), G, 350, 0, [WH, Whn, Y8]))); + } + function ZLn() { + ZLn = F, lie = Ce((dT(), A(T(Zhn, 1), G, 352, 0, [Yhn, JH, Qhn]))); + } + function nNn() { + nNn = F, aie = Ce((DT(), A(T(nln, 1), G, 388, 0, [QH, Ov, Gw]))); + } + function eNn() { + eNn = F, dre = Ce((d5(), A(T(pln, 1), G, 392, 0, [gln, nq, Lj]))); + } + function tNn() { + tNn = F, zre = Ce((Pk(), A(T(Gln, 1), G, 393, 0, [KI, qln, Uln]))); + } + function iNn() { + iNn = F, dce = Ce((AT(), A(T(f1n, 1), G, 300, 0, [Cq, s1n, o1n]))); + } + function rNn() { + rNn = F, bce = Ce((XT(), A(T(h1n, 1), G, 445, 0, [Bj, qI, Mq]))); + } + function cNn() { + cNn = F, gce = Ce((rA(), A(T(wce, 1), G, 456, 0, [Tq, Sq, Aq]))); + } + function uNn() { + uNn = F, vce = Ce((_T(), A(T(d1n, 1), G, 394, 0, [a1n, Oq, l1n]))); + } + function oNn() { + oNn = F, _ce = Ce((nT(), A(T(D1n, 1), G, 439, 0, [xq, O1n, I1n]))); + } + function sNn() { + sNn = F, Sie = Ce((O0(), A(T(Aie, 1), G, 464, 0, [Oj, Z8, PI]))); + } + function fNn() { + fNn = F, JQn = Ce((Uu(), A(T(WQn, 1), G, 471, 0, [Mh, pa, zs]))); + } + function hNn() { + hNn = F, VQn = Ce((wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc]))); + } + function lNn() { + lNn = F, YQn = Ce((wu(), A(T(QQn, 1), G, 472, 0, [kf, ma, Xs]))); + } + function aNn() { + aNn = F, FQn = Ce((Gu(), A(T(xr, 1), G, 108, 0, [Fun, Yr, Aw]))); + } + function dNn() { + dNn = F, mZn = Ce((t5(), A(T(Ion, 1), G, 391, 0, [E_, j_, C_]))); + } + function bNn() { + bNn = F, Yue = Ce((jl(), A(T(adn, 1), G, 346, 0, [uO, M1, E9]))); + } + function wNn() { + wNn = F, Gce = Ce(($k(), A(T(Fq, 1), G, 444, 0, [XI, VI, WI]))); + } + function gNn() { + gNn = F, Vue = Ce(($f(), A(T(ndn, 1), G, 278, 0, [Fv, Jw, Bv]))); + } + function pNn() { + pNn = F, aoe = Ce((Gp(), A(T(vdn, 1), G, 280, 0, [mdn, Yw, aO]))); + } + function Lf(n, e) { + return !n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), wx(n.o, e); + } + function l4e(n, e) { + var t; + n.C && (t = u(Mr(n.b, e), 127).n, t.d = n.C.d, t.a = n.C.a); + } + function GJ(n) { + var e, t, i, r; + r = n.d, e = n.a, t = n.b, i = n.c, n.d = t, n.a = i, n.b = r, n.c = e; + } + function a4e(n) { + return !n.g && (n.g = new CE()), !n.g.b && (n.g.b = new wyn(n)), n.g.b; + } + function rk(n) { + return !n.g && (n.g = new CE()), !n.g.c && (n.g.c = new myn(n)), n.g.c; + } + function d4e(n) { + return !n.g && (n.g = new CE()), !n.g.d && (n.g.d = new gyn(n)), n.g.d; + } + function b4e(n) { + return !n.g && (n.g = new CE()), !n.g.a && (n.g.a = new pyn(n)), n.g.a; + } + function w4e(n, e, t, i) { + return t && (i = t.Rh(e, Ot(t.Dh(), n.c.uk()), null, i)), i; + } + function g4e(n, e, t, i) { + return t && (i = t.Th(e, Ot(t.Dh(), n.c.uk()), null, i)), i; + } + function e$(n, e, t, i) { + var r; + return r = K(ye, _e, 28, e + 1, 15, 1), kPe(r, n, e, t, i), r; + } + function K(n, e, t, i, r, c) { + var s; + return s = HRn(r, i), r != 10 && A(T(n, c), e, t, r, s), s; + } + function p4e(n, e, t) { + var i, r; + for (r = new Y4(e, n), i = 0; i < t; ++i) + iA(r); + return r; + } + function t$(n, e, t) { + var i, r; + if (t != null) + for (i = 0; i < e; ++i) + r = t[i], n.Qi(i, r); + } + function zJ(n, e) { + var t; + return t = new DO(), t.c = !0, t.d = e.md(), NGn(n, e.ld(), t); + } + function m4e(n, e) { + var t; + t = n.q.getHours() + (e / 3600 | 0), n.q.setSeconds(e), H5(n, t); + } + function XJ(n, e) { + var t, i; + return t = e, i = TN(y4(new f$(n, t))), iM(new f$(n, t)), i; + } + function v4e(n, e) { + e.Ug("Label management", 1), PC(v(n, (JM(), b9))), e.Vg(); + } + function k4e(n, e, t, i) { + NUn(n, e, t, Om(n, e, i, D(e, 102) && (u(e, 19).Bb & hr) != 0)); + } + function VJ(n, e, t) { + u(n.b, 68), u(n.b, 68), u(n.b, 68), eu(n.a, new pSn(t, e, n)); + } + function Fi(n, e, t) { + if (n < 0 || e > t || e < n) + throw M(new pz(ZA + n + Ptn + e + Ttn + t)); + } + function i$(n) { + n ? (this.c = n, this.b = null) : (this.c = null, this.b = new Z()); + } + function r$(n, e) { + oC.call(this, n, e), this.a = K(aNe, WA, 447, 2, 0, 1), this.b = !0; + } + function WJ(n) { + gFn.call(this, n, 0), fAn(this), this.d.b = this.d, this.d.a = this.d; + } + function JJ(n) { + this.e = n, this.b = this.e.a.entries(), this.a = K(ki, Bn, 1, 0, 5, 1); + } + function mNn() { + mNn = F, wie = Iu(Ke(new ii(), (Vi(), Vs), (tr(), N_)), zr, bj); + } + function y4e() { + return vA(), A(T(Fsn, 1), G, 283, 0, [nH, Z_, tH, eH, iH, JP]); + } + function j4e() { + return Vk(), A(T(Usn, 1), G, 281, 0, [YP, _sn, qsn, Ksn, Hsn, rH]); + } + function E4e() { + return jm(), A(T(Jsn, 1), G, 282, 0, [x8, zsn, Wsn, Vsn, Xsn, Gsn]); + } + function C4e() { + return Yp(), A(T(wv, 1), G, 232, 0, [bv, N8, dv, Nw, p2, g2]); + } + function M4e() { + return Vn(), A(T(D_, 1), G, 273, 0, [Vt, Mi, Zt, Hc, Sc, Gf]); + } + function T4e() { + return zu(), A(T(oO, 1), G, 279, 0, [Ia, Fl, tE, A9, T9, B3]); + } + function A4e() { + return Di(), A(T(wdn, 1), G, 101, 0, [Pa, Qf, Kv, Ud, tl, Uc]); + } + function S4e() { + return pA(), A(T(udn, 1), G, 321, 0, [dU, idn, cdn, edn, rdn, tdn]); + } + function P4e() { + return Rh(), A(T(han, 1), G, 255, 0, [Vq, qj, Uj, eO, ZI, nO]); + } + function I4e() { + return wd(), A(T(Yq, 1), G, 298, 0, [Qq, m9, p9, Jq, w9, g9]); + } + function QJ(n) { + var e; + return !n.a && n.b != -1 && (e = n.c.Dh(), n.a = $n(e, n.b)), n.a; + } + function ve(n, e) { + return n.Si() && n.Hc(e) ? !1 : (n.Hi(e), !0); + } + function df(n, e) { + return G7(e, "Horizontal alignment cannot be null"), n.b = e, n; + } + function vNn(n, e, t) { + nt(); + var i; + return i = sa(n, e), t && i && Kwe(n) && (i = null), i; + } + function YJ(n, e, t) { + var i; + i = n.b[t.c.p][t.p], i.b += e.b, i.c += e.c, i.a += e.a, ++i.a; + } + function ZJ(n, e, t) { + var i; + n.d[e.g] = t, i = n.g.c, i[e.g] = y.Math.max(i[e.g], t + 1); + } + function J1(n, e) { + var t, i; + return t = n.a - e.a, i = n.b - e.b, y.Math.sqrt(t * t + i * i); + } + function nQ(n, e) { + var t, i; + for (i = e.Kc(); i.Ob(); ) + t = u(i.Pb(), 36), fUn(n, t, 0, 0); + } + function Zl(n, e, t) { + var i, r; + for (r = n.Kc(); r.Ob(); ) + i = u(r.Pb(), 36), Sm(i, e, t); + } + function O4e(n) { + var e, t; + for (t = ge(n.a, 0); t.b != t.d.c; ) + e = u(be(t), 65), Lnn(e); + } + function kNn(n, e) { + return yCn(n.e, e) || s1(n.e, e, new hRn(e)), u(Nf(n.e, e), 113); + } + function qu(n, e, t, i) { + return Jn(n), Jn(e), Jn(t), Jn(i), new SW(n, e, new R0n()); + } + function Ou(n, e, t, i) { + this.ak(), this.a = e, this.b = n, this.c = new EW(this, e, t, i); + } + function c$(n, e, t, i, r, c) { + kJ.call(this, e, i, r, c), this.c = n, this.b = t; + } + function ck(n, e, t, i, r, c) { + kJ.call(this, e, i, r, c), this.c = n, this.a = t; + } + function uk(n, e) { + var t, i, r; + return r = n.r, i = n.d, t = G5(n, e, !0), t.b != r || t.a != i; + } + function ok(n, e, t) { + var i, r; + return r = (i = Mm(n.b, e), i), r ? qA(hk(n, r), t) : null; + } + function D4e(n, e, t) { + var i, r, c; + i = dl(n, t), r = null, i && (r = pnn(i)), c = r, oRn(e, t, c); + } + function L4e(n, e, t) { + var i, r, c; + i = dl(n, t), r = null, i && (r = pnn(i)), c = r, oRn(e, t, c); + } + function x4(n, e) { + var t; + return t = n.Ih(e), t >= 0 ? n.Lh(t, !0, !0) : H0(n, e, !0); + } + function N4e(n, e, t) { + var i; + return i = kFn(n, e, t), n.b = new ET(i.c.length), ben(n, i); + } + function $4e(n) { + if (n.b <= 0) + throw M(new nc()); + return --n.b, n.a -= n.c.c, Y(n.a); + } + function x4e(n) { + var e; + if (!n.a) + throw M(new IIn()); + return e = n.a, n.a = At(n.a), e; + } + function F4e(n) { + for (; !n.a; ) + if (!tSn(n.c, new M9n(n))) + return !1; + return !0; + } + function Kp(n) { + var e; + return Se(n), D(n, 204) ? (e = u(n, 204), e) : new H8n(n); + } + function B4e(n) { + YM(), u(n.of((He(), Ww)), 181).Fc((zu(), tE)), n.qf(sU, null); + } + function YM() { + YM = F, gue = new Cmn(), mue = new Mmn(), pue = T6e((He(), sU), gue, Ta, mue); + } + function ZM() { + ZM = F, _ln = new fX("LEAF_NUMBER", 0), vq = new fX("NODE_SIZE", 1); + } + function u$(n) { + n.a = K(ye, _e, 28, n.b + 1, 15, 1), n.c = K(ye, _e, 28, n.b, 15, 1), n.d = 0; + } + function R4e(n, e) { + n.a.Ne(e.d, n.b) > 0 && (nn(n.c, new zV(e.c, e.d, n.d)), n.b = e.d); + } + function eQ(n, e) { + if (n.g == null || e >= n.i) + throw M(new aL(e, n.i)); + return n.g[e]; + } + function yNn(n, e, t) { + if (rm(n, t), t != null && !n.fk(t)) + throw M(new uD()); + return t; + } + function o$(n, e) { + return bk(e) != 10 && A(wo(e), e.Sm, e.__elementTypeId$, bk(e), n), n; + } + function F4(n, e, t, i) { + var r; + i = (j0(), i || Iun), r = n.slice(e, t), Ann(r, n, e, t, -e, i); + } + function zo(n, e, t, i, r) { + return e < 0 ? H0(n, t, i) : u(t, 69).wk().yk(n, n.hi(), e, i, r); + } + function K4e(n, e) { + return bt($(R(v(n, (W(), fb)))), $(R(v(e, fb)))); + } + function jNn() { + jNn = F, OQn = Ce((B4(), A(T(lP, 1), G, 304, 0, [e_, t_, i_, r_]))); + } + function B4() { + B4 = F, e_ = new uC("All", 0), t_ = new aTn(), i_ = new yTn(), r_ = new lTn(); + } + function Uu() { + Uu = F, Mh = new FD(s3, 0), pa = new FD(qm, 1), zs = new FD(f3, 2); + } + function ENn() { + ENn = F, KA(), f0n = St, vse = li, h0n = new z9(St), kse = new z9(li); + } + function CNn() { + CNn = F, EYn = Ce((N0(), A(T(jYn, 1), G, 417, 0, [rj, ij, a_, d_]))); + } + function MNn() { + MNn = F, SYn = Ce((T5(), A(T(AYn, 1), G, 406, 0, [fj, wP, gP, hj]))); + } + function TNn() { + TNn = F, MYn = Ce((Vp(), A(T(CYn, 1), G, 332, 0, [uj, cj, oj, sj]))); + } + function ANn() { + ANn = F, LZn = Ce((dd(), A(T(Non, 1), G, 389, 0, [Ow, Lon, P_, I_]))); + } + function SNn() { + SNn = F, AZn = Ce((nm(), A(T(TZn, 1), G, 416, 0, [rb, Iw, Pw, d2]))); + } + function PNn() { + PNn = F, ine = Ce((xf(), A(T(tne, 1), G, 421, 0, [j3, lv, av, B_]))); + } + function INn() { + INn = F, zZn = Ce((OT(), A(T(GZn, 1), G, 371, 0, [F_, HP, qP, wj]))); + } + function ONn() { + ONn = F, eie = Ce((cw(), A(T(RH, 1), G, 203, 0, [TI, BH, P2, S2]))); + } + function DNn() { + DNn = F, rie = Ce((lh(), A(T(qhn, 1), G, 284, 0, [k1, Hhn, HH, qH]))); + } + function sk() { + sk = F, Bsn = new Zz(kh, 0), QP = new Zz("IMPROVE_STRAIGHTNESS", 1); + } + function LNn(n, e) { + var t, i; + return i = e / n.c.Rd().gc() | 0, t = e % n.c.Rd().gc(), Rp(n, i, t); + } + function NNn(n) { + var e; + if (n.nl()) + for (e = n.i - 1; e >= 0; --e) + L(n, e); + return EJ(n); + } + function tQ(n) { + var e, t; + if (!n.b) + return null; + for (t = n.b; e = t.a[0]; ) + t = e; + return t; + } + function $Nn(n) { + var e, t; + if (!n.b) + return null; + for (t = n.b; e = t.a[1]; ) + t = e; + return t; + } + function _4e(n) { + return D(n, 180) ? "" + u(n, 180).a : n == null ? null : Jr(n); + } + function H4e(n) { + return D(n, 180) ? "" + u(n, 180).a : n == null ? null : Jr(n); + } + function xNn(n, e) { + if (e.a) + throw M(new ec(eXn)); + fi(n.a, e), e.a = n, !n.j && (n.j = e); + } + function iQ(n, e) { + IC.call(this, e.zd(), e.yd() & -16449), Jn(n), this.a = n, this.c = e; + } + function q4e(n, e) { + return new _L(e, a0(Ki(e.e), e.f.a + n, e.f.b + n), (_n(), !1)); + } + function U4e(n, e) { + return k4(), nn(n, new bi(e, Y(e.e.c.length + e.g.c.length))); + } + function G4e(n, e) { + return k4(), nn(n, new bi(e, Y(e.e.c.length + e.g.c.length))); + } + function FNn() { + FNn = F, ace = Ce((sA(), A(T(u1n, 1), G, 354, 0, [Eq, r1n, c1n, i1n]))); + } + function BNn() { + BNn = F, xre = Ce((b5(), A(T(Fln, 1), G, 353, 0, [aq, BI, lq, hq]))); + } + function RNn() { + RNn = F, lre = Ce((Qp(), A(T(cln, 1), G, 405, 0, [LI, t9, i9, r9]))); + } + function KNn() { + KNn = F, Wue = Ce((El(), A(T(aU, 1), G, 223, 0, [lU, Yj, Rv, F3]))); + } + function _Nn() { + _Nn = F, noe = Ce((To(), A(T(Zue, 1), G, 291, 0, [nE, nl, Aa, Zj]))); + } + function HNn() { + HNn = F, hoe = Ce((go(), A(T(S9, 1), G, 386, 0, [rE, Gd, iE, Qw]))); + } + function qNn() { + qNn = F, boe = Ce((qT(), A(T(Mdn, 1), G, 320, 0, [wU, jdn, Cdn, Edn]))); + } + function UNn() { + UNn = F, poe = Ce((LT(), A(T(goe, 1), G, 415, 0, [gU, Adn, Tdn, Sdn]))); + } + function nT() { + nT = F, xq = new oL(vVn, 0), O1n = new oL(Mrn, 1), I1n = new oL(kh, 2); + } + function Wb(n, e, t, i, r) { + return Jn(n), Jn(e), Jn(t), Jn(i), Jn(r), new SW(n, e, i); + } + function GNn(n, e) { + var t; + return t = u(Bp(n.e, e), 400), t ? (iW(t), t.e) : null; + } + function bu(n, e) { + var t; + return t = qr(n, e, 0), t == -1 ? !1 : (Yl(n, t), !0); + } + function zNn(n, e, t) { + var i; + return X1(n), i = new LO(), i.a = e, n.a.Nb(new ACn(i, t)), i.a; + } + function z4e(n) { + var e; + return X1(n), e = K(Ii, Ar, 28, 0, 15, 1), lg(n.a, new j9n(e)), e; + } + function rQ(n) { + var e; + if (!E$(n)) + throw M(new nc()); + return n.e = 1, e = n.d, n.d = null, e; + } + function n1(n) { + var e; + return Vr(n) && (e = 0 - n, !isNaN(e)) ? e : Y1(tm(n)); + } + function qr(n, e, t) { + for (; t < n.c.length; ++t) + if (vc(e, n.c[t])) + return t; + return -1; + } + function s$(n) { + var e, t; + return t = u(sn(n.j, 0), 12), e = u(v(t, (W(), st)), 12), e; + } + function f$(n, e) { + var t; + this.f = n, this.b = e, t = u(ee(n.b, e), 260), this.c = t ? t.b : null; + } + function XNn() { + Fs(), this.b = new de(), this.f = new de(), this.g = new de(), this.e = new de(); + } + function eT(n) { + xC(this), this.g = n ? IM(n, n.ie()) : null, this.f = n, MM(this), this.je(); + } + function h$(n) { + var e; + e = n.jj(), e != null && n.d != -1 && u(e, 94).xh(n), n.i && n.i.oj(); + } + function fk(n) { + var e; + for (e = n.p + 1; e < n.c.a.c.length; ++e) + --u(sn(n.c.a, e), 10).p; + } + function VNn(n) { + Fb(!!n.c), FL(n.f.g, n.d), n.c.Qb(), n.c = null, n.b = zQ(n), n.d = n.f.g; + } + function no(n) { + return n.b || (n.b = new kPn(n, Er, n), !n.a && (n.a = new P7(n, n))), n.b; + } + function hk(n, e) { + var t, i; + return t = u(e, 690), i = t.xi(), !i && t.Ai(i = new BMn(n, e)), i; + } + function Lr(n, e) { + var t, i; + return t = u(e, 692), i = t.$k(), !i && t.cl(i = new oDn(n, e)), i; + } + function cQ(n, e) { + o6(); + var t, i; + return t = xp(n), i = xp(e), !!t && !!i && !mRn(t.k, i.k); + } + function tT(n, e) { + return vc(e, sn(n.f, 0)) || vc(e, sn(n.f, 1)) || vc(e, sn(n.f, 2)); + } + function lk(n, e) { + if (e < 0) + throw M(new Ir(LVn + e)); + return FDn(n, e + 1), sn(n.j, e); + } + function WNn(n, e, t, i) { + if (!n) + throw M(new Gn(R5(e, A(T(ki, 1), Bn, 1, 5, [t, i])))); + } + function ml(n, e, t, i, r, c, s) { + k$.call(this, e, i, r, c, s), this.c = n, this.b = t; + } + function Bh(n, e, t) { + var i, r; + for (i = 10, r = 0; r < t - 1; r++) + e < i && (n.a += "0"), i *= 10; + n.a += e; + } + function iT(n) { + var e, t; + return t = n.length, e = K(fs, gh, 28, t, 15, 1), UPn(n, 0, t, e, 0), e; + } + function ak(n) { + tPn(); + var e, t; + return e = n + 128, t = wun[e], !t && (t = wun[e] = new o9n(n)), t; + } + function JNn(n) { + return FL(n.d.a.e.g, n.b), oe(n.c != n.d.a.d), n.a = n.c, n.c = n.c.a, n.a; + } + function X4e(n) { + switch (n.g) { + case 0: + return tt; + case 1: + return -1; + default: + return 0; + } + } + function V4e(n) { + return LZ(n, (R4(), dun)) < 0 ? -I1e(tm(n)) : n.l + n.m * o3 + n.h * vd; + } + function QNn(n) { + (this.q ? this.q : (Dn(), Dn(), Wh)).Ac(n.q ? n.q : (Dn(), Dn(), Wh)); + } + function W4e(n, e) { + Ep(u(u(n.f, 27).of((He(), v9)), 101)) && t8e(mN(u(n.f, 27)), e); + } + function l$(n, e) { + var t; + return t = Ot(n.d, e), t >= 0 ? tA(n, t, !0, !0) : H0(n, e, !0); + } + function uQ(n) { + var e; + return e = cd(Un(n, 32)), e == null && (ru(n), e = cd(Un(n, 32))), e; + } + function oQ(n) { + var e; + return n.Oh() || (e = se(n.Dh()) - n.ji(), n.$h().Mk(e)), n.zh(); + } + function YNn(n, e) { + uon = new kE(), TYn = e, I8 = n, u(I8.b, 68), VJ(I8, uon, null), dGn(I8); + } + function t5() { + t5 = F, E_ = new RD("XY", 0), j_ = new RD("X", 1), C_ = new RD("Y", 2); + } + function wu() { + wu = F, kf = new BD("TOP", 0), ma = new BD(qm, 1), Xs = new BD(Btn, 2); + } + function vl() { + vl = F, vj = new GD(kh, 0), k2 = new GD("TOP", 1), E3 = new GD(Btn, 2); + } + function dk() { + dk = F, UH = new eX("INPUT_ORDER", 0), GH = new eX("PORT_DEGREE", 1); + } + function R4() { + R4 = F, lun = Zc(ro, ro, 524287), wQn = Zc(0, 0, Ty), aun = QN(1), QN(2), dun = QN(0); + } + function a$(n) { + var e; + return n.d != n.r && (e = gs(n), n.e = !!e && e.lk() == wJn, n.d = e), n.e; + } + function d$(n, e, t) { + var i; + return i = n.g[e], I6(n, e, n.Zi(e, t)), n.Ri(e, t, i), n.Ni(), i; + } + function rT(n, e) { + var t; + return t = n.dd(e), t >= 0 ? (n.gd(t), !0) : !1; + } + function b$(n, e) { + var t; + for (Se(n), Se(e), t = !1; e.Ob(); ) + t = t | n.Fc(e.Pb()); + return t; + } + function Nf(n, e) { + var t; + return t = u(ee(n.e, e), 400), t ? (LTn(n, t), t.e) : null; + } + function ZNn(n) { + var e, t; + return e = n / 60 | 0, t = n % 60, t == 0 ? "" + e : "" + e + ":" + ("" + t); + } + function Jb(n, e) { + var t = n.a[e], i = (K$(), WK)[typeof t]; + return i ? i(t) : gY(typeof t); + } + function rc(n, e) { + var t, i; + return ta(n), i = new HJ(e, n.a), t = new cSn(i), new Tn(n, t); + } + function w$(n) { + var e; + return e = n.b.c.length == 0 ? null : sn(n.b, 0), e != null && M$(n, 0), e; + } + function J4e(n, e) { + var t, i, r; + r = e.c.i, t = u(ee(n.f, r), 60), i = t.d.c - t.e.c, RQ(e.a, i, 0); + } + function sQ(n, e) { + var t; + for (++n.d, ++n.c[e], t = e + 1; t < n.a.length; ) + ++n.a[t], t += t & -t; + } + function n$n(n, e, t, i) { + nt(), Wd.call(this, 26), this.c = n, this.a = e, this.d = t, this.b = i; + } + function e$n(n, e) { + for (; e[0] < n.length && ih(` \r +`, gu(Xi(n, e[0]))) >= 0; ) + ++e[0]; + } + function Q4e(n, e) { + tu(n, e == null || GC((Jn(e), e)) || isNaN((Jn(e), e)) ? 0 : (Jn(e), e)); + } + function Y4e(n, e) { + iu(n, e == null || GC((Jn(e), e)) || isNaN((Jn(e), e)) ? 0 : (Jn(e), e)); + } + function Z4e(n, e) { + I0(n, e == null || GC((Jn(e), e)) || isNaN((Jn(e), e)) ? 0 : (Jn(e), e)); + } + function nme(n, e) { + P0(n, e == null || GC((Jn(e), e)) || isNaN((Jn(e), e)) ? 0 : (Jn(e), e)); + } + function eme(n, e, t) { + return vp(new V(t.e.a + t.f.a / 2, t.e.b + t.f.b / 2), n) == (Jn(e), e); + } + function tme(n, e) { + return D(e, 102) && u(e, 19).Bb & hr ? new dL(e, n) : new Y4(e, n); + } + function ime(n, e) { + return D(e, 102) && u(e, 19).Bb & hr ? new dL(e, n) : new Y4(e, n); + } + function bk(n) { + return n.__elementTypeCategory$ == null ? 10 : n.__elementTypeCategory$; + } + function t$n(n, e) { + return e == (xL(), xL(), SQn) ? n.toLocaleLowerCase() : n.toLowerCase(); + } + function i$n(n) { + if (!n.e) + throw M(new nc()); + return n.c = n.a = n.e, n.e = n.e.e, --n.d, n.a.f; + } + function fQ(n) { + if (!n.c) + throw M(new nc()); + return n.e = n.a = n.c, n.c = n.c.c, ++n.d, n.a.f; + } + function r$n(n) { + var e; + for (++n.a, e = n.c.a.length; n.a < e; ++n.a) + if (n.c.b[n.a]) + return; + } + function rme(n) { + var e, t; + if (n.a) { + t = null; + do + e = n.a, n.a = null, t = b_n(e, t); + while (n.a); + n.a = t; + } + } + function cme(n) { + var e, t; + if (n.b) { + t = null; + do + e = n.b, n.b = null, t = b_n(e, t); + while (n.b); + n.b = t; + } + } + function ume(n, e) { + var t; + for (t = 0; n.e != n.i.gc(); ) + Ibe(e, ue(n), Y(t)), t != tt && ++t; + } + function ome(n, e) { + var t; + return t = x0(n.e.c, e.e.c), t == 0 ? bt(n.e.d, e.e.d) : t; + } + function sme(n, e) { + var t, i; + for (i = e.c, t = i + 1; t <= e.f; t++) + n.a[t] > n.a[i] && (i = t); + return i; + } + function c$n(n) { + var e; + return e = u(v(n, (W(), ob)), 313), e ? e.a == n : !1; + } + function u$n(n) { + var e; + return e = u(v(n, (W(), ob)), 313), e ? e.i == n : !1; + } + function o$n() { + o$n = F, jZn = Ce((Vi(), A(T(Oon, 1), G, 367, 0, [Vs, Jh, Dc, _c, zr]))); + } + function s$n() { + s$n = F, cne = Ce((ow(), A(T(rne, 1), G, 375, 0, [gj, zP, XP, GP, UP]))); + } + function f$n() { + f$n = F, gne = Ce((o1(), A(T(Nsn, 1), G, 348, 0, [J_, Lsn, Q_, pv, gv]))); + } + function h$n() { + h$n = F, tie = Ce((M5(), A(T(xhn, 1), G, 323, 0, [$hn, KH, _H, W8, J8]))); + } + function l$n() { + l$n = F, Pne = Ce((Yo(), A(T(lfn, 1), G, 171, 0, [Ej, _8, ya, H8, xw]))); + } + function a$n() { + a$n = F, Ure = Ce((wA(), A(T(qre, 1), G, 368, 0, [pq, bq, mq, wq, gq]))); + } + function d$n() { + d$n = F, Uce = Ce((x5(), A(T(qce, 1), G, 373, 0, [N2, D3, d9, a9, _j]))); + } + function b$n() { + b$n = F, Jce = Ce((Jk(), A(T(_1n, 1), G, 324, 0, [B1n, _q, K1n, Hq, R1n]))); + } + function w$n() { + w$n = F, Xue = Ce((ci(), A(T(y9, 1), G, 88, 0, [Jf, Xr, Br, Wf, us]))); + } + function g$n() { + g$n = F, vue = Ce((pf(), A(T(Zh, 1), G, 170, 0, [xn, pi, Ph, Kd, E1]))); + } + function p$n() { + p$n = F, toe = Ce((Bg(), A(T(M9, 1), G, 256, 0, [Sa, eE, ddn, C9, bdn]))); + } + function m$n() { + m$n = F, coe = Ce((en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]))); + } + function cT() { + cT = F, Kun = new Gz("BY_SIZE", 0), s_ = new Gz("BY_SIZE_AND_SHAPE", 1); + } + function uT() { + uT = F, v_ = new Vz("EADES", 0), vP = new Vz("FRUCHTERMAN_REINGOLD", 1); + } + function wk() { + wk = F, WP = new Yz("READING_DIRECTION", 0), $sn = new Yz("ROTATION", 1); + } + function i5() { + i5 = F, IZn = new cwn(), OZn = new swn(), SZn = new fwn(), PZn = new own(), DZn = new hwn(); + } + function v$n(n) { + this.b = new Z(), this.a = new Z(), this.c = new Z(), this.d = new Z(), this.e = n; + } + function k$n(n) { + this.g = n, this.f = new Z(), this.a = y.Math.min(this.g.c.c, this.g.d.c); + } + function y$n(n, e, t) { + qC.call(this), aQ(this), this.a = n, this.c = t, this.b = e.d, this.f = e.e; + } + function fme(n, e, t) { + var i, r; + for (r = new C(t); r.a < r.c.c.length; ) + i = E(r), JZ(n, e, i); + } + function bf(n, e, t) { + var i; + if (e == null) + throw M(new rp()); + return i = dl(n, e), j3e(n, e, t), i; + } + function g$(n, e) { + var t; + return t = u(ee(n.a, e), 137), t || (t = new xO(), Ve(n.a, e, t)), t; + } + function $n(n, e) { + var t; + return t = (n.i == null && bh(n), n.i), e >= 0 && e < t.length ? t[e] : null; + } + function hme(n, e) { + var t; + return t = e > 0 ? e - 1 : e, tEn(xhe(G$n(ZV(new op(), t), n.n), n.j), n.k); + } + function Nr(n) { + var e, t; + t = (e = new hD(), e), ve((!n.q && (n.q = new q(Ss, n, 11, 10)), n.q), t); + } + function hQ(n) { + return (n.i & 2 ? "interface " : n.i & 1 ? "" : "class ") + (ll(n), n.o); + } + function oT(n) { + return Cc(n, tt) > 0 ? tt : Cc(n, Wi) < 0 ? Wi : Ae(n); + } + function Qb(n) { + return n < 3 ? (Co(n, xzn), n + 1) : n < W5 ? wi(n / 0.75 + 1) : tt; + } + function j$n(n, e) { + return Jn(e), yW(n), n.d.Ob() ? (e.Cd(n.d.Pb()), !0) : !1; + } + function lme(n, e) { + var t, i; + return t = u(tw(n.d, e), 16), t ? (i = e, n.e.pc(i, t)) : null; + } + function ame(n, e, t, i) { + var r; + n.j = -1, Knn(n, mnn(n, e, t), (br(), r = u(e, 69).vk(), r.xl(i))); + } + function dme(n, e) { + return _p(), -Ec(u(v(n, (lc(), O2)), 17).a, u(v(e, O2), 17).a); + } + function E$n(n, e) { + return !!o5(n, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15)))); + } + function bme() { + return Cm(), A(T(kO, 1), G, 245, 0, [kU, mO, vO, pO, vU, gO, wO, mU]); + } + function wme() { + return l1(), A(T(kue, 1), G, 285, 0, [oan, yi, Zr, $2, Qi, Pt, L3, Vf]); + } + function gme() { + return DA(), A(T(Tsn, 1), G, 276, 0, [__, U_, K_, X_, q_, H_, z_, G_]); + } + function pme(n) { + var e; + return e = $(R(v(n, (cn(), m1)))), e < 0 && (e = 0, U(n, m1, e)), e; + } + function sT(n, e) { + var t, i; + for (i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 72), U(t, (W(), A3), e); + } + function mme(n, e, t) { + var i; + i = y.Math.max(0, n.b / 2 - 0.5), P5(t, i, 1), nn(e, new ICn(t, i)); + } + function vme(n, e, t) { + var i; + return i = n.a.e[u(e.a, 10).p] - n.a.e[u(t.a, 10).p], wi(B7(i)); + } + function fT(n, e) { + var t; + return ta(n), t = new RIn(n, n.a.zd(), n.a.yd() | 4, e), new Tn(n, t); + } + function p$(n) { + var e; + Fb(!!n.c), e = n.c.a, Xo(n.d, n.c), n.b == n.c ? n.b = e : --n.a, n.c = null; + } + function C$n(n) { + return n.a >= -0.01 && n.a <= _f && (n.a = 0), n.b >= -0.01 && n.b <= _f && (n.b = 0), n; + } + function Dg(n) { + Vg(); + var e, t; + for (t = Srn, e = 0; e < n.length; e++) + n[e] > t && (t = n[e]); + return t; + } + function M$n(n, e) { + var t; + if (t = oy(n.Dh(), e), !t) + throw M(new Gn(ba + e + sK)); + return t; + } + function Yb(n, e) { + var t; + for (t = n; At(t); ) + if (t = At(t), t == e) + return !0; + return !1; + } + function kme(n, e) { + var t, i, r; + for (i = e.a.ld(), t = u(e.a.md(), 16).gc(), r = 0; r < t; r++) + n.Cd(i); + } + function eu(n, e) { + var t, i, r, c; + for (Jn(e), i = n.c, r = 0, c = i.length; r < c; ++r) + t = i[r], e.Cd(t); + } + function T$n(n, e, t, i, r, c) { + var s; + s = JN(i), Zi(s, r), Oi(s, c), Pn(n.a, i, new zC(s, e, t.f)); + } + function A$n(n, e) { + ht(n, (_h(), Iq), e.f), ht(n, mce, e.e), ht(n, Pq, e.d), ht(n, pce, e.c); + } + function S$n(n, e) { + this.a = new de(), this.e = new de(), this.b = (w5(), MI), this.c = n, this.b = e; + } + function P$n(n) { + this.d = n, this.c = n.c.vc().Kc(), this.b = null, this.a = null, this.e = (RE(), GK); + } + function Xo(n, e) { + var t; + return t = e.c, e.a.b = e.b, e.b.a = e.a, e.a = e.b = null, e.c = null, --n.b, t; + } + function yme(n, e) { + return e && n.b[e.g] == e ? (Rt(n.b, e.g, null), --n.c, !0) : !1; + } + function jme(n, e) { + if (0 > n || n > e) + throw M(new mz("fromIndex: 0, toIndex: " + n + Ttn + e)); + } + function S0(n) { + if (n < 0) + throw M(new Gn("Illegal Capacity: " + n)); + this.g = this.aj(n); + } + function lQ(n, e) { + return Tf(), Ks(fa), y.Math.abs(n - e) <= fa || n == e || isNaN(n) && isNaN(e); + } + function m$(n, e) { + var t, i, r, c; + for (i = n.d, r = 0, c = i.length; r < c; ++r) + t = i[r], Af(n.g, t).a = e; + } + function Eme(n, e, t) { + var i, r, c; + for (r = e[t], i = 0; i < r.length; i++) + c = r[i], n.e[c.c.p][c.p] = i; + } + function Cme(n) { + var e; + for (e = 0; e < n.c.length; e++) + (Ln(e, n.c.length), u(n.c[e], 12)).p = e; + } + function Mme(n) { + var e, t; + for (e = n.a.d.j, t = n.c.d.j; e != t; ) + _s(n.b, e), e = RT(e); + _s(n.b, e); + } + function Tme(n) { + var e; + return e = y.Math.sqrt(n.a * n.a + n.b * n.b), e > 0 && (n.a /= e, n.b /= e), n; + } + function jo(n) { + var e; + return n.w ? n.w : (e = ape(n), e && !e.Vh() && (n.w = e), e); + } + function K4(n, e) { + var t, i; + i = n.a, t = g5e(n, e, null), i != e && !n.e && (t = Nm(n, e, t)), t && t.oj(); + } + function I$n(n, e, t) { + var i, r; + i = e; + do + r = $(n.p[i.p]) + t, n.p[i.p] = r, i = n.a[i.p]; + while (i != e); + } + function O$n(n, e, t) { + var i = function() { + return n.apply(i, arguments); + }; + return e.apply(i, t), i; + } + function Ame(n) { + var e; + return n == null ? null : (e = u(n, 195), Rye(e, e.length)); + } + function L(n, e) { + if (n.g == null || e >= n.i) + throw M(new aL(e, n.i)); + return n.Wi(e, n.g[e]); + } + function Sme(n, e) { + Dn(); + var t, i; + for (i = new Z(), t = 0; t < n; ++t) + Kn(i.c, e); + return new jD(i); + } + function D$n(n) { + return ta(n), Mp(!0, "n may not be negative"), new Tn(n, new oxn(n.a)); + } + function aQ(n) { + n.b = (Uu(), pa), n.f = (wu(), ma), n.d = (Co(2, mw), new zc(2)), n.e = new Li(); + } + function hT(n) { + this.b = (Se(n), new _u(n)), this.a = new Z(), this.d = new Z(), this.e = new Li(); + } + function wf() { + wf = F, bc = new xD("BEGIN", 0), Jc = new xD(qm, 1), wc = new xD("END", 2); + } + function $f() { + $f = F, Fv = new fL(qm, 0), Jw = new fL("HEAD", 1), Bv = new fL("TAIL", 2); + } + function _p() { + _p = F, Rre = ah(ah(ah(h6(new ii(), (Qp(), t9)), (K5(), ZH)), fln), dln); + } + function kl() { + kl = F, _re = ah(ah(ah(h6(new ii(), (Qp(), r9)), (K5(), lln)), uln), hln); + } + function L$n() { + L$n = F, ane = Ce((Yp(), A(T(wv, 1), G, 232, 0, [bv, N8, dv, Nw, p2, g2]))); + } + function N$n() { + N$n = F, kne = Ce((vA(), A(T(Fsn, 1), G, 283, 0, [nH, Z_, tH, eH, iH, JP]))); + } + function $$n() { + $$n = F, jne = Ce((Vk(), A(T(Usn, 1), G, 281, 0, [YP, _sn, qsn, Ksn, Hsn, rH]))); + } + function x$n() { + x$n = F, Ene = Ce((jm(), A(T(Jsn, 1), G, 282, 0, [x8, zsn, Wsn, Vsn, Xsn, Gsn]))); + } + function F$n() { + F$n = F, FZn = Ce((Vn(), A(T(D_, 1), G, 273, 0, [Vt, Mi, Zt, Hc, Sc, Gf]))); + } + function B$n() { + B$n = F, jue = Ce((Rh(), A(T(han, 1), G, 255, 0, [Vq, qj, Uj, eO, ZI, nO]))); + } + function R$n() { + R$n = F, Sue = Ce((wd(), A(T(Yq, 1), G, 298, 0, [Qq, m9, p9, Jq, w9, g9]))); + } + function K$n() { + K$n = F, Jue = Ce((pA(), A(T(udn, 1), G, 321, 0, [dU, idn, cdn, edn, rdn, tdn]))); + } + function _$n() { + _$n = F, ioe = Ce((Di(), A(T(wdn, 1), G, 101, 0, [Pa, Qf, Kv, Ud, tl, Uc]))); + } + function H$n() { + H$n = F, roe = Ce((zu(), A(T(oO, 1), G, 279, 0, [Ia, Fl, tE, A9, T9, B3]))); + } + function q$n() { + q$n = F, dP = (wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc])).length, h_ = dP; + } + function Pme() { + return lw(), A(T(jr, 1), G, 95, 0, [Qs, xl, Ys, nf, el, Ms, Lo, Zs, Cs]); + } + function Ime(n, e) { + return ua(), Ec(n.b.c.length - n.e.c.length, e.b.c.length - e.e.c.length); + } + function Lg(n, e) { + return Rhe(u5(n, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))))); + } + function dQ(n, e) { + return Tf(), Ks(fa), y.Math.abs(n - e) <= fa || n == e || isNaN(n) && isNaN(e); + } + function lT(n, e) { + var t; + t = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 1, t, n.b)); + } + function _4(n, e) { + var t; + t = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 3, t, n.b)); + } + function P0(n, e) { + var t; + t = n.f, n.f = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 3, t, n.f)); + } + function I0(n, e) { + var t; + t = n.g, n.g = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 4, t, n.g)); + } + function tu(n, e) { + var t; + t = n.i, n.i = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 5, t, n.i)); + } + function iu(n, e) { + var t; + t = n.j, n.j = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 6, t, n.j)); + } + function H4(n, e) { + var t; + t = n.j, n.j = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 1, t, n.j)); + } + function q4(n, e) { + var t; + t = n.c, n.c = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 4, t, n.c)); + } + function U4(n, e) { + var t; + t = n.k, n.k = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 2, t, n.k)); + } + function aT(n, e) { + var t; + t = n.a, n.a = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Vb(n, 0, t, n.a)); + } + function e1(n, e) { + var t; + t = n.s, n.s = e, n.Db & 4 && !(n.Db & 1) && rt(n, new UN(n, 4, t, n.s)); + } + function Zb(n, e) { + var t; + t = n.t, n.t = e, n.Db & 4 && !(n.Db & 1) && rt(n, new UN(n, 5, t, n.t)); + } + function v$(n, e) { + var t; + t = n.d, n.d = e, n.Db & 4 && !(n.Db & 1) && rt(n, new UN(n, 2, t, n.d)); + } + function G4(n, e) { + var t; + t = n.F, n.F = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 5, t, e)); + } + function gk(n, e) { + var t; + return t = u(ee((iC(), yO), n), 57), t ? t.gk(e) : K(ki, Bn, 1, e, 5, 1); + } + function Ome(n, e) { + var t; + return t = mi(Ki(u(ee(n.g, e), 8)), NX(u(ee(n.f, e), 470).b)), t; + } + function Dme(n, e) { + var t, i, r; + return t = (i = (B1(), r = new tG(), r), e && sen(i, e), i), AQ(t, n), t; + } + function yl(n, e) { + var t, i; + return t = e in n.a, t && (i = dl(n, e).re(), i) ? i.a : null; + } + function U$n(n, e, t) { + if (rm(n, t), !n.kl() && t != null && !n.fk(t)) + throw M(new uD()); + return t; + } + function G$n(n, e) { + return n.n = e, n.n ? (n.f = new Z(), n.e = new Z()) : (n.f = null, n.e = null), n; + } + function z$n(n, e) { + if (n) { + e.n = n; + var t = p2e(e); + if (!t) { + rP[n] = [e]; + return; + } + t.Rm = e; + } + } + function cd(n) { + var e; + return x6(n == null || Array.isArray(n) && (e = bk(n), !(e >= 14 && e <= 16))), n; + } + function Ee(n, e) { + var t; + return Jn(e), t = n[":" + e], x7(!!t, "Enum constant undefined: " + e), t; + } + function we(n, e, t, i, r, c) { + var s; + return s = bN(n, e), z$n(t, s), s.i = r ? 8 : 0, s.f = i, s.e = r, s.g = c, s; + } + function bQ(n, e, t, i, r) { + this.d = e, this.k = i, this.f = r, this.o = -1, this.p = 1, this.c = n, this.a = t; + } + function wQ(n, e, t, i, r) { + this.d = e, this.k = i, this.f = r, this.o = -1, this.p = 2, this.c = n, this.a = t; + } + function gQ(n, e, t, i, r) { + this.d = e, this.k = i, this.f = r, this.o = -1, this.p = 6, this.c = n, this.a = t; + } + function pQ(n, e, t, i, r) { + this.d = e, this.k = i, this.f = r, this.o = -1, this.p = 7, this.c = n, this.a = t; + } + function mQ(n, e, t, i, r) { + this.d = e, this.j = i, this.e = r, this.o = -1, this.p = 4, this.c = n, this.a = t; + } + function X$n(n, e) { + var t, i, r, c; + for (i = e, r = 0, c = i.length; r < c; ++r) + t = i[r], xNn(n.a, t); + return n; + } + function Eo(n) { + var e, t, i, r; + for (t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], Se(e); + return new uTn(n); + } + function vQ(n) { + var e; + return e = mi(Ki(n.d.d), n.c.d), vm(e, n.c.e.a, n.c.e.b), it(e, n.c.d); + } + function kQ(n) { + var e; + return e = mi(Ki(n.c.d), n.d.d), vm(e, n.d.e.a, n.d.e.b), it(e, n.d.d); + } + function Lme(n) { + var e = /function(?:\s+([\w$]+))?\s*\(/, t = e.exec(n); + return t && t[1] || uB; + } + function Nme(n, e, t) { + var i, r; + return r = n.length, i = y.Math.min(t, r), Rnn(n, 0, e, 0, i, !0), e; + } + function V$n(n, e, t) { + var i, r; + for (r = e.Kc(); r.Ob(); ) + i = u(r.Pb(), 74), fi(n, u(t.Kb(i), 27)); + } + function $me(n, e) { + Ep(u(v(u(n.e, 10), (cn(), Ut)), 101)) && (Dn(), Yt(u(n.e, 10).j, e)); + } + function xme() { + return NA(), A(T(ion, 1), G, 257, 0, [ton, Yun, Zun, Qun, f_, eon, non, Jun, Wun]); + } + function Fme() { + return a1(), A(T(Dhn, 1), G, 265, 0, [xH, Phn, Ihn, $H, Shn, Ohn, CI, Pv, Iv]); + } + function O0() { + O0 = F, Oj = new ZD("BARYCENTER", 0), Z8 = new ZD(UXn, 1), PI = new ZD(GXn, 2); + } + function dT() { + dT = F, Yhn = new QD("NO", 0), JH = new QD(uin, 1), Qhn = new QD("LOOK_BACK", 2); + } + function bT() { + bT = F, Osn = new HD("ARD", 0), VP = new HD("MSD", 1), W_ = new HD("MANUAL", 2); + } + function pr() { + pr = F, Q8 = new XD(n8, 0), Vu = new XD("INPUT", 1), Qc = new XD("OUTPUT", 2); + } + function z4() { + return zq || (zq = new Qqn(), Ng(zq, A(T(a2, 1), Bn, 134, 0, [new uG()]))), zq; + } + function Ks(n) { + if (!(n >= 0)) + throw M(new Gn("tolerance (" + n + ") must be >= 0")); + return n; + } + function W$n(n, e) { + var t; + return D(e, 44) ? n.c.Mc(e) : (t = wx(n, e), VT(n, e), t); + } + function Tr(n, e, t) { + return ad(n, e), Xc(n, t), e1(n, 0), Zb(n, 1), u1(n, !0), c1(n, !0), n; + } + function pk(n, e) { + var t; + if (t = n.gc(), e < 0 || e > t) + throw M(new Kb(e, t)); + return new PV(n, e); + } + function wT(n, e) { + n.b = y.Math.max(n.b, e.d), n.e += e.r + (n.a.c.length == 0 ? 0 : n.c), nn(n.a, e); + } + function J$n(n) { + Fb(n.c >= 0), H8e(n.d, n.c) < 0 && (n.a = n.a - 1 & n.d.a.length - 1, n.b = n.d.c), n.c = -1; + } + function gT(n) { + var e, t; + for (t = n.c.Cc().Kc(); t.Ob(); ) + e = u(t.Pb(), 16), e.$b(); + n.c.$b(), n.d = 0; + } + function Bme(n) { + var e, t, i, r; + for (t = n.a, i = 0, r = t.length; i < r; ++i) + e = t[i], qPn(e, e.length, null); + } + function r5(n, e) { + var t, i, r, c; + for (i = e, r = 0, c = i.length; r < c; ++r) + t = i[r], Kt(n, t, n.c.b, n.c); + } + function Q$n(n, e) { + var t, i; + for (t = 0, i = n.gc(); t < i; ++t) + if (vc(e, n.Xb(t))) + return t; + return -1; + } + function yQ(n) { + var e, t; + if (n == 0) + return 32; + for (t = 0, e = 1; !(e & n); e <<= 1) + ++t; + return t; + } + function Co(n, e) { + if (n < 0) + throw M(new Gn(e + " cannot be negative but was: " + n)); + return n; + } + function Rme(n, e) { + typeof window === vy && typeof window.$gwt === vy && (window.$gwt[n] = e); + } + function pT(n, e) { + return Bhe(o5(n.a, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))))); + } + function Kme(n, e, t) { + return Wb(n, new v9n(e), new X0n(), new k9n(t), A(T(xr, 1), G, 108, 0, [])); + } + function _me() { + return io(), A(T(pdn, 1), G, 264, 0, [_v, uE, sO, P9, fO, lO, hO, bU, cE]); + } + function Y$n() { + Y$n = F, gQn = A(T(ye, 1), _e, 28, 15, [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]); + } + function c5() { + c5 = F, $8 = new _D("LAYER_SWEEP", 0), pj = new _D(sR, 1), Psn = new _D(kh, 2); + } + function jQ() { + jQ = F, pie = Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + } + function Z$n() { + Z$n = F, mie = Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + } + function EQ() { + EQ = F, vie = Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + } + function nxn() { + nxn = F, kie = Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + } + function exn() { + exn = F, yie = Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + } + function txn() { + txn = F, jie = Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + } + function ixn() { + ixn = F, Mie = Iu(Ke(Ke(new ii(), (Vi(), Dc), (tr(), NP)), _c, PP), zr, LP); + } + function Hme(n) { + var e, t; + for (t = new C(XRn(n)); t.a < t.c.c.length; ) + e = u(E(t), 695), e._f(); + } + function qme() { + LEn(); + for (var n = RK, e = 0; e < arguments.length; e++) + n.push(arguments[e]); + } + function rxn(n) { + Nz(), this.g = new de(), this.f = new de(), this.b = new de(), this.c = new C0(), this.i = n; + } + function CQ() { + this.f = new Li(), this.d = new ez(), this.c = new Li(), this.a = new Z(), this.b = new Z(); + } + function cxn(n, e, t, i) { + this.ak(), this.a = e, this.b = n, this.c = null, this.c = new nSn(this, e, t, i); + } + function k$(n, e, t, i, r) { + this.d = n, this.n = e, this.g = t, this.o = i, this.p = -1, r || (this.o = -2 - i - 1); + } + function uxn() { + RX.call(this), this.n = -1, this.g = null, this.i = null, this.j = null, this.Bb |= Gs; + } + function oxn(n) { + IC.call(this, n.Ad(64) ? DX(0, bs(n.zd(), 1)) : Ey, n.yd()), this.b = 1, this.a = n; + } + function Ume(n, e) { + return _p(), u(v(e, (lc(), O2)), 17).a < n.gc() && u(v(e, O2), 17).a >= 0; + } + function MQ(n, e) { + n.r > 0 && n.c < n.r && (n.c += e, n.i && n.i.d > 0 && n.g != 0 && MQ(n.i, e / n.r * n.i.d)); + } + function TQ(n, e) { + var t; + t = n.c, n.c = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 1, t, n.c)); + } + function y$(n, e) { + var t; + t = n.c, n.c = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 4, t, n.c)); + } + function X4(n, e) { + var t; + t = n.k, n.k = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 2, t, n.k)); + } + function j$(n, e) { + var t; + t = n.D, n.D = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 2, t, n.D)); + } + function mT(n, e) { + var t; + t = n.f, n.f = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 8, t, n.f)); + } + function vT(n, e) { + var t; + t = n.i, n.i = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 7, t, n.i)); + } + function AQ(n, e) { + var t; + t = n.a, n.a = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 8, t, n.a)); + } + function SQ(n, e) { + var t; + t = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 0, t, n.b)); + } + function PQ(n, e) { + var t; + t = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 0, t, n.b)); + } + function IQ(n, e) { + var t; + t = n.c, n.c = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 1, t, n.c)); + } + function OQ(n, e) { + var t; + t = n.d, n.d = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 1, t, n.d)); + } + function Gme(n, e, t) { + var i; + n.b = e, n.a = t, i = (n.a & 512) == 512 ? new pjn() : new cG(), n.c = cAe(i, n.b, n.a); + } + function sxn(n, e) { + return Sl(n.e, e) ? (br(), a$(e) ? new eM(e, n) : new k7(e, n)) : new xMn(e, n); + } + function zme(n) { + var e, t; + return 0 > n ? new Lz() : (e = n + 1, t = new kLn(e, n), new sV(null, t)); + } + function Xme(n, e) { + Dn(); + var t; + return t = new ap(1), Si(n) ? Dr(t, n, e) : Wc(t.f, n, e), new eD(t); + } + function Vme(n, e) { + var t, i; + return t = n.c, i = e.e[n.p], i > 0 ? u(sn(t.a, i - 1), 10) : null; + } + function Wme(n, e) { + var t, i; + return t = n.o + n.p, i = e.o + e.p, t < i ? -1 : t == i ? 0 : 1; + } + function Jme(n) { + var e; + return e = v(n, (W(), st)), D(e, 167) ? TBn(u(e, 167)) : null; + } + function fxn(n) { + var e; + return n = y.Math.max(n, 2), e = YQ(n), n > e ? (e <<= 1, e > 0 ? e : W5) : e; + } + function E$(n) { + switch (HX(n.e != 3), n.e) { + case 2: + return !1; + case 0: + return !0; + } + return r4e(n); + } + function hxn(n, e) { + var t; + return D(e, 8) ? (t = u(e, 8), n.a == t.a && n.b == t.b) : !1; + } + function Qme(n, e) { + var t; + t = new kE(), u(e.b, 68), u(e.b, 68), u(e.b, 68), eu(e.a, new RV(n, t, e)); + } + function lxn(n, e) { + var t, i; + for (i = e.vc().Kc(); i.Ob(); ) + t = u(i.Pb(), 44), zk(n, t.ld(), t.md()); + } + function DQ(n, e) { + var t; + t = n.d, n.d = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 11, t, n.d)); + } + function kT(n, e) { + var t; + t = n.j, n.j = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 13, t, n.j)); + } + function LQ(n, e) { + var t; + t = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 21, t, n.b)); + } + function Yme(n, e) { + (UM(), Uf ? null : e.c).length == 0 && AAn(e, new RU()), Dr(n.a, Uf ? null : e.c, e); + } + function Zme(n, e) { + e.Ug("Hierarchical port constraint processing", 1), p9e(n), FLe(n), e.Vg(); + } + function D0() { + D0 = F, ub = new KD("START", 0), va = new KD("MIDDLE", 1), cb = new KD("END", 2); + } + function yT() { + yT = F, RI = new sX("P1_NODE_PLACEMENT", 0), L2 = new sX("P2_EDGE_ROUTING", 1); + } + function Q1() { + Q1 = F, y3 = new lt(Qtn), jP = new lt(TXn), D8 = new lt(AXn), lj = new lt(SXn); + } + function L0(n) { + var e; + return FL(n.f.g, n.d), oe(n.b), n.c = n.a, e = u(n.a.Pb(), 44), n.b = zQ(n), e; + } + function NQ(n) { + var e; + return n.b == null ? (Gl(), Gl(), dE) : (e = n.ul() ? n.tl() : n.sl(), e); + } + function axn(n, e) { + var t; + return t = e == null ? -1 : qr(n.b, e, 0), t < 0 ? !1 : (M$(n, t), !0); + } + function _s(n, e) { + var t; + return Jn(e), t = e.g, n.b[t] ? !1 : (Rt(n.b, t, e), ++n.c, !0); + } + function jT(n, e) { + var t, i; + return t = 1 - e, i = n.a[t], n.a[t] = i.a[e], i.a[e] = n, n.b = !0, i.b = !1, i; + } + function nve(n, e) { + var t, i; + for (i = e.Kc(); i.Ob(); ) + t = u(i.Pb(), 272), n.b = !0, fi(n.e, t), t.b = n; + } + function eve(n, e) { + var t, i; + return t = u(v(n, (cn(), Hw)), 8), i = u(v(e, Hw), 8), bt(t.b, i.b); + } + function C$(n, e, t) { + var i, r, c; + return c = e >> 5, r = e & 31, i = vi(U1(n.n[t][c], Ae(Bs(r, 1))), 3), i; + } + function dxn(n, e, t) { + var i, r, c; + for (c = n.a.length - 1, r = n.b, i = 0; i < t; r = r + 1 & c, ++i) + Rt(e, i, n.a[r]); + } + function M$(n, e) { + var t; + t = Yl(n.b, n.b.c.length - 1), e < n.b.c.length && (Go(n.b, e, t), x_n(n, e)); + } + function bxn(n, e) { + var t; + return t = u(ee(n.c, e), 467), t || (t = new Qyn(), t.c = e, Ve(n.c, t.c, t)), t; + } + function tve(n, e) { + var t, i; + i = new Z(), t = e; + do + Kn(i.c, t), t = u(ee(n.k, t), 18); + while (t); + return i; + } + function T$(n, e, t) { + var i; + return i = new Z(), len(n, e, i, t, !0, !0), n.b = new ET(i.c.length), i; + } + function ud(n, e) { + var t, i; + for (t = n.Pc(), F4(t, 0, t.length, e), i = 0; i < t.length; i++) + n.hd(i, t[i]); + } + function $Q(n) { + var e, t; + for (t = new ne(n); t.e != t.i.gc(); ) + e = u(ue(t), 27), tu(e, 0), iu(e, 0); + } + function wxn(n) { + this.e = n, this.d = new zE(Qb(Tp(this.e).gc())), this.c = this.e.a, this.b = this.e.c; + } + function ET(n) { + this.b = n, this.a = K(ye, _e, 28, n + 1, 15, 1), this.c = K(ye, _e, 28, n, 15, 1), this.d = 0; + } + function gxn(n, e, t) { + S$n.call(this, e, t), this.d = K(Qh, b1, 10, n.a.c.length, 0, 1), Ff(n.a, this.d); + } + function pxn(n, e, t) { + vJ.call(this, n, e, t), this.a = new de(), this.b = new de(), this.d = new U7n(this); + } + function mxn(n) { + dW.call(this), this.b = $(R(v(n, (cn(), Ws)))), this.a = u(v(n, $l), 223); + } + function A$(n, e) { + var t; + return D(e, 16) ? (t = u(e, 16), n.Gc(t)) : b$(n, u(Se(e), 20).Kc()); + } + function ive(n, e) { + Gt(ut(new Tn(null, new In(new qa(n.b), 1)), new hMn(n, e)), new aMn(n, e)); + } + function rve(n, e) { + e.Ug(qXn, 1), Gt(rc(new Tn(null, new In(n.b, 16)), new Swn()), new Pwn()), e.Vg(); + } + function mt(n) { + return Si(n) ? t1(n) : $b(n) ? pp(n) : Nb(n) ? PAn(n) : mW(n) ? n.Hb() : lW(n) ? l0(n) : nJ(n); + } + function vxn(n) { + var e, t; + for (t = n.c.a.ec().Kc(); t.Ob(); ) + e = u(t.Pb(), 219), tfe(e, new BPn(e.f)); + } + function xQ(n) { + var e, t; + for (t = n.c.a.ec().Kc(); t.Ob(); ) + e = u(t.Pb(), 219), ife(e, new YKn(e.e)); + } + function Xc(n, e) { + var t; + t = n.zb, n.zb = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 1, t, n.zb)); + } + function CT(n, e) { + var t; + t = n.xb, n.xb = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 3, t, n.xb)); + } + function MT(n, e) { + var t; + t = n.yb, n.yb = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 2, t, n.yb)); + } + function _t(n, e) { + var t, i; + t = (i = new fD(), i), t.n = e, ve((!n.s && (n.s = new q(yu, n, 21, 17)), n.s), t); + } + function jt(n, e) { + var t, i; + i = (t = new uV(), t), i.n = e, ve((!n.s && (n.s = new q(yu, n, 21, 17)), n.s), i); + } + function Bi(n, e) { + var t, i, r; + for (Jn(e), t = !1, r = e.Kc(); r.Ob(); ) + i = r.Pb(), t = t | n.Fc(i); + return t; + } + function kxn(n) { + var e, t, i; + for (e = 0, i = n.Kc(); i.Ob(); ) + t = i.Pb(), e += t != null ? mt(t) : 0, e = ~~e; + return e; + } + function S$(n, e) { + var t = n.a, i = 0; + for (var r in t) + t.hasOwnProperty(r) && (e[i++] = r); + return e; + } + function yxn(n) { + var e; + return n == 0 ? "UTC" : (n < 0 ? (n = -n, e = "UTC+") : e = "UTC-", e + ZNn(n)); + } + function FQ(n) { + return n.a < 54 ? n.f < 0 ? -1 : n.f > 0 ? 1 : 0 : (!n.c && (n.c = J7(kc(n.f))), n.c).e; + } + function jxn(n, e) { + e ? n.B == null && (n.B = n.D, n.D = null) : n.B != null && (n.D = n.B, n.B = null); + } + function cve(n, e) { + return nm(), n == rb && e == Iw || n == Iw && e == rb || n == d2 && e == Pw || n == Pw && e == d2; + } + function uve(n, e) { + return nm(), n == rb && e == Pw || n == rb && e == d2 || n == Iw && e == d2 || n == Iw && e == Pw; + } + function Exn(n, e) { + return Tf(), Ks(_f), y.Math.abs(0 - e) <= _f || e == 0 || isNaN(0) && isNaN(e) ? 0 : n / e; + } + function Cxn(n, e) { + return $(R(ho(Lk(_r(new Tn(null, new In(n.c.b, 16)), new O7n(n)), e)))); + } + function BQ(n, e) { + return $(R(ho(Lk(_r(new Tn(null, new In(n.c.b, 16)), new I7n(n)), e)))); + } + function ove() { + return mr(), A(T(cH, 1), G, 259, 0, [ZP, cs, F8, nI, yv, v2, B8, vv, kv, eI]); + } + function sve() { + return ps(), A(T(_hn, 1), G, 243, 0, [AI, Sj, Pj, Bhn, Rhn, Fhn, Khn, SI, pb, Uw]); + } + function fve(n, e) { + var t; + e.Ug("General Compactor", 1), t = b8e(u(z(n, (oa(), yq)), 393)), t.Cg(n); + } + function hve(n, e) { + var t, i; + return t = u(z(n, (oa(), _I)), 17), i = u(z(e, _I), 17), Ec(t.a, i.a); + } + function RQ(n, e, t) { + var i, r; + for (r = ge(n, 0); r.b != r.d.c; ) + i = u(be(r), 8), i.a += e, i.b += t; + return n; + } + function u5(n, e, t) { + var i; + for (i = n.b[t & n.f]; i; i = i.b) + if (t == i.a && sh(e, i.g)) + return i; + return null; + } + function o5(n, e, t) { + var i; + for (i = n.c[t & n.f]; i; i = i.d) + if (t == i.f && sh(e, i.i)) + return i; + return null; + } + function lve(n, e, t) { + var i, r, c; + for (i = 0, r = 0; r < t; r++) + c = e[r], n[r] = c << 1 | i, i = c >>> 31; + i != 0 && (n[t] = i); + } + function P$(n, e, t, i, r, c) { + var s; + this.c = n, s = new Z(), mZ(n, s, e, n.b, t, i, r, c), this.a = new xi(s, 0); + } + function Mxn() { + this.c = new XE(0), this.b = new XE(Arn), this.d = new XE(aVn), this.a = new XE(QB); + } + function Vo(n, e, t, i, r, c, s) { + je.call(this, n, e), this.d = t, this.e = i, this.c = r, this.b = c, this.a = Of(s); + } + function zt(n, e, t, i, r, c, s, f, h, l, a, d, g) { + return I_n(n, e, t, i, r, c, s, f, h, l, a, d, g), sx(n, !1), n; + } + function ave(n) { + return n.b.c.i.k == (Vn(), Zt) ? u(v(n.b.c.i, (W(), st)), 12) : n.b.c; + } + function Txn(n) { + return n.b.d.i.k == (Vn(), Zt) ? u(v(n.b.d.i, (W(), st)), 12) : n.b.d; + } + function dve(n) { + var e; + return e = BM(n), o0(e.a, 0) ? (QE(), QE(), PQn) : (QE(), new oAn(e.b)); + } + function I$(n) { + var e; + return e = pJ(n), o0(e.a, 0) ? (Ob(), Ob(), n_) : (Ob(), new AL(e.b)); + } + function O$(n) { + var e; + return e = pJ(n), o0(e.a, 0) ? (Ob(), Ob(), n_) : (Ob(), new AL(e.c)); + } + function Axn(n) { + switch (n.g) { + case 2: + return en(), Wn; + case 4: + return en(), Zn; + default: + return n; + } + } + function Sxn(n) { + switch (n.g) { + case 1: + return en(), ae; + case 3: + return en(), Xn; + default: + return n; + } + } + function Pxn(n) { + switch (n.g) { + case 0: + return new lmn(); + case 1: + return new amn(); + default: + return null; + } + } + function Hp() { + Hp = F, x_ = new Dt("edgelabelcenterednessanalysis.includelabel", (_n(), ga)); + } + function KQ() { + KQ = F, Tie = ah(JMn(Ke(Ke(new ii(), (Vi(), Dc), (tr(), NP)), _c, PP), zr), LP); + } + function Ixn() { + Ixn = F, Iie = ah(JMn(Ke(Ke(new ii(), (Vi(), Dc), (tr(), NP)), _c, PP), zr), LP); + } + function D$() { + D$ = F, N9 = new ajn(), CU = A(T(yu, 1), f2, 179, 0, []), Qoe = A(T(Ss, 1), zcn, 62, 0, []); + } + function V4() { + V4 = F, dj = new Wz("TO_INTERNAL_LTR", 0), L_ = new Wz("TO_INPUT_DIRECTION", 1); + } + function Du() { + Du = F, Kon = new gwn(), Bon = new pwn(), Ron = new mwn(), Fon = new vwn(), _on = new kwn(), Hon = new ywn(); + } + function bve(n, e) { + e.Ug(qXn, 1), qY(Yhe(new IE((u6(), new kN(n, !1, !1, new UU()))))), e.Vg(); + } + function wve(n, e, t) { + t.Ug("DFS Treeifying phase", 1), D8e(n, e), ITe(n, e), n.a = null, n.b = null, t.Vg(); + } + function mk(n, e) { + return _n(), Si(n) ? KJ(n, Oe(e)) : $b(n) ? tN(n, R(e)) : Nb(n) ? cwe(n, un(e)) : n.Fd(e); + } + function s5(n, e) { + var t, i; + for (Jn(e), i = e.vc().Kc(); i.Ob(); ) + t = u(i.Pb(), 44), n.zc(t.ld(), t.md()); + } + function gve(n, e, t) { + var i; + for (i = t.Kc(); i.Ob(); ) + if (!_M(n, e, i.Pb())) + return !1; + return !0; + } + function pve(n, e, t, i, r) { + var c; + return t && (c = Ot(e.Dh(), n.c), r = t.Rh(e, -1 - (c == -1 ? i : c), null, r)), r; + } + function mve(n, e, t, i, r) { + var c; + return t && (c = Ot(e.Dh(), n.c), r = t.Th(e, -1 - (c == -1 ? i : c), null, r)), r; + } + function Oxn(n) { + var e; + if (n.b == -2) { + if (n.e == 0) + e = -1; + else + for (e = 0; n.a[e] == 0; e++) + ; + n.b = e; + } + return n.b; + } + function vve(n) { + if (Jn(n), n.length == 0) + throw M(new th("Zero length BigInteger")); + MSe(this, n); + } + function _Q(n) { + this.i = n.gc(), this.i > 0 && (this.g = this.aj(this.i + (this.i / 8 | 0) + 1), n.Qc(this.g)); + } + function Dxn(n, e, t) { + this.g = n, this.d = e, this.e = t, this.a = new Z(), OEe(this), Dn(), Yt(this.a, null); + } + function HQ(n, e) { + e.q = n, n.d = y.Math.max(n.d, e.r), n.b += e.d + (n.a.c.length == 0 ? 0 : n.c), nn(n.a, e); + } + function W4(n, e) { + var t, i, r, c; + return r = n.c, t = n.c + n.b, c = n.d, i = n.d + n.a, e.a > r && e.a < t && e.b > c && e.b < i; + } + function nw(n, e) { + var t, i; + for (i = ge(n, 0); i.b != i.d.c; ) + t = u(be(i), 8), t.a += e.a, t.b += e.b; + return n; + } + function kve(n) { + var e, t, i; + for (i = 0, t = new C(n.b); t.a < t.c.c.length; ) + e = u(E(t), 30), e.p = i, ++i; + } + function yve(n) { + var e, t, i; + return n.j == (en(), Xn) && (e = vHn(n), t = Su(e, Zn), i = Su(e, Wn), i || i && t); + } + function jve(n, e) { + var t; + return t = inn(n), Nnn(new V(t.c, t.d), new V(t.b, t.a), n.Mf(), e, n.ag()); + } + function qQ(n, e) { + var t; + t = u(e, 190), nd(t, "x", n.i), nd(t, "y", n.j), nd(t, dK, n.g), nd(t, aK, n.f); + } + function TT(n, e) { + var t; + D(e, 85) ? (u(n.c, 79).Gk(), t = u(e, 85), lxn(n, t)) : u(n.c, 79).Wb(e); + } + function f5(n, e) { + var t, i; + for (Jn(e), i = n.vc().Kc(); i.Ob(); ) + t = u(i.Pb(), 44), e.Yd(t.ld(), t.md()); + } + function Eve(n, e) { + var t; + for (Se(e); n.Ob(); ) + if (t = n.Pb(), !GQ(u(t, 10))) + return !1; + return !0; + } + function Cve() { + var n; + return c_ || (c_ = new Kyn(), n = new VN(""), Rle(n, (a4(), xun)), Yme(c_, n)), c_; + } + function Lxn(n, e) { + return Wb(new g9n(n), new p9n(e), new m9n(e), new z0n(), A(T(xr, 1), G, 108, 0, [])); + } + function AT() { + AT = F, Cq = new iL(kh, 0), s1n = new iL("POLAR_COORDINATE", 1), o1n = new iL("ID", 2); + } + function ST() { + ST = F, Ghn = new VD("EQUALLY", 0), zH = new VD(eS, 1), zhn = new VD("NORTH_SOUTH", 2); + } + function J4() { + J4 = F, O8 = new Dt("debugSVG", (_n(), !1)), oon = new Dt("overlapsExisted", !0); + } + function Nxn() { + Nxn = F, yue = Ce((l1(), A(T(kue, 1), G, 285, 0, [oan, yi, Zr, $2, Qi, Pt, L3, Vf]))); + } + function $xn() { + $xn = F, Ioe = Ce((Cm(), A(T(kO, 1), G, 245, 0, [kU, mO, vO, pO, vU, gO, wO, mU]))); + } + function xxn() { + xxn = F, lne = Ce((DA(), A(T(Tsn, 1), G, 276, 0, [__, U_, K_, X_, q_, H_, z_, G_]))); + } + function Fxn() { + return K5(), A(T(ANe, 1), G, 262, 0, [ZH, fln, dln, bln, aln, sln, wln, uln, lln, hln, oln]); + } + function od(n, e, t) { + var i, r; + return r = u($6(n.d, e), 17), i = u($6(n.b, t), 17), !r || !i ? null : Rp(n, r.a, i.a); + } + function Bxn(n, e) { + var t; + return t = TF(z4(), n), t ? (ht(e, (He(), q2), t), !0) : !1; + } + function Rxn(n) { + return Bb(), n.A.Hc((go(), Qw)) && !n.B.Hc((io(), uE)) ? $Bn(n) : null; + } + function Kxn() { + this.a = u(rn((Us(), kP)), 17).a, this.c = $(R(rn(yP))), this.b = $(R(rn(k_))); + } + function sd(n) { + this.f = n, this.e = new SJ(this.f.i), this.a = this.e, this.b = zQ(this), this.d = this.f.g; + } + function qt(n, e) { + QC.call(this, Yoe, n, e), this.b = this, this.a = cu(n.Dh(), $n(this.e.Dh(), this.c)); + } + function Mve(n, e) { + var t, i; + for (i = new C(e.b); i.a < i.c.c.length; ) + t = u(E(i), 30), n.a[t.p] = rje(t); + } + function Mo(n, e) { + var t; + for (t = 0; t < e.j.c.length; t++) + u(lk(n, t), 21).Gc(u(lk(e, t), 16)); + return n; + } + function L$(n, e, t, i) { + var r; + r = n.a.length, t > r ? t = r : zn(e, t + 1), n.a = qo(n.a, 0, e) + ("" + i) + xW(n.a, t); + } + function _xn(n, e) { + n.a = nr(n.a, 1), n.c = y.Math.min(n.c, e), n.b = y.Math.max(n.b, e), n.d = nr(n.d, e); + } + function Tve(n, e) { + return e < n.b.gc() ? u(n.b.Xb(e), 10) : e == n.b.gc() ? n.a : u(sn(n.e, e - n.b.gc() - 1), 10); + } + function Ave(n, e, t) { + return bt(vp(pm(n), new V(e.e.a, e.e.b)), vp(pm(n), new V(t.e.a, t.e.b))); + } + function Sve(n, e, t) { + return n == (O0(), PI) ? new Jpn() : to(e, 1) != 0 ? new Cz(t.length) : new Jjn(t.length); + } + function rt(n, e) { + var t, i, r; + if (t = n.th(), t != null && n.wh()) + for (i = 0, r = t.length; i < r; ++i) + t[i].dj(e); + } + function Pve(n, e) { + var t, i, r; + for (t = n.c.Xe(), r = e.Kc(); r.Ob(); ) + i = r.Pb(), n.a.Yd(t, i); + return n.b.Kb(t); + } + function Q4(n, e) { + var t, i; + for (t = n, i = Hi(t).e; i; ) { + if (t = i, t == e) + return !0; + i = Hi(t).e; + } + return !1; + } + function Y1(n) { + var e; + return e = n.h, e == 0 ? n.l + n.m * o3 : e == Il ? n.l + n.m * o3 - vd : n; + } + function Ive(n, e, t) { + var i, r; + return i = n.a.f[e.p], r = n.a.f[t.p], i < r ? -1 : i == r ? 0 : 1; + } + function Ove(n, e) { + var t, i; + for (i = new C(e); i.a < i.c.c.length; ) + t = u(E(i), 72), nn(n.d, t), Zye(n, t); + } + function Dve(n, e) { + var t; + e.Ug("Edge and layer constraint edge reversal", 1), t = _Ae(n), mDe(t), e.Vg(); + } + function Lve(n, e) { + var t, i; + for (i = new ne(n); i.e != i.i.gc(); ) + t = u(ue(i), 27), Ro(t, t.i + e.b, t.j + e.d); + } + function Hxn(n) { + var e; + n.d == null ? (++n.e, n.f = 0, nBn(null)) : (++n.e, e = n.d, n.d = null, n.f = 0, nBn(e)); + } + function Nve(n) { + var e; + if (n.a == n.b.a) + throw M(new nc()); + return e = n.a, n.c = e, n.a = u(as(n.a.e), 227), e; + } + function Un(n, e) { + var t; + return n.Db & e ? (t = Rx(n, e), t == -1 ? n.Eb : cd(n.Eb)[t]) : null; + } + function hc(n, e) { + var t, i; + return t = (i = new oG(), i), t.G = e, !n.rb && (n.rb = new Hb(n, Cf, n)), ve(n.rb, t), t; + } + function Je(n, e) { + var t, i; + return t = (i = new xE(), i), t.G = e, !n.rb && (n.rb = new Hb(n, Cf, n)), ve(n.rb, t), t; + } + function qxn(n, e, t, i) { + D(n.Cb, 184) && (u(n.Cb, 184).tb = null), Xc(n, t), e && QEe(n, e), i && n.gl(!0); + } + function Uxn(n, e) { + n.c && (uUn(n, e, !0), Gt(new Tn(null, new In(e, 16)), new F7n(n))), uUn(n, e, !1); + } + function $ve(n) { + gTn(); + var e; + return kCn(YH, n) || (e = new T3n(), e.a = n, mV(YH, n, e)), u(Mr(YH, n), 645); + } + function PT(n) { + var e; + if (n.g > 1 || n.Ob()) + return ++n.a, n.g = 0, e = n.i, n.Ob(), e; + throw M(new nc()); + } + function Gxn(n) { + switch (n.a.g) { + case 1: + return new JCn(); + case 3: + return new JRn(); + default: + return new f8n(); + } + } + function UQ(n, e) { + switch (e) { + case 1: + return !!n.n && n.n.i != 0; + case 2: + return n.k != null; + } + return gJ(n, e); + } + function kc(n) { + return Ay < n && n < vd ? n < 0 ? y.Math.ceil(n) : y.Math.floor(n) : Y1(fTe(n)); + } + function vk(n) { + var e; + return n < 128 ? (iPn(), e = pun[n], !e && (e = pun[n] = new EG(n)), e) : new EG(n); + } + function xve(n, e) { + var t; + try { + e.de(); + } catch (i) { + if (i = It(i), D(i, 82)) + t = i, Kn(n.c, t); + else + throw M(i); + } + } + function ds(n) { + var e, t, i, r; + return r = n, i = 0, r < 0 && (r += vd, i = Il), t = wi(r / o3), e = wi(r - t * o3), Zc(e, t, i); + } + function kk(n) { + var e, t, i; + for (i = 0, t = new dp(n.a); t.a < t.c.a.length; ) + e = n5(t), n.b.Hc(e) && ++i; + return i; + } + function Fve(n) { + var e, t, i; + for (e = 1, i = n.Kc(); i.Ob(); ) + t = i.Pb(), e = 31 * e + (t == null ? 0 : mt(t)), e = ~~e; + return e; + } + function Ur(n, e) { + var t; + return e && (t = e.nf(), t.dc() || (n.q ? s5(n.q, t) : n.q = new KMn(t))), n; + } + function zxn(n, e) { + var t; + return t = n.a.get(e), t === void 0 ? ++n.d : (Iae(n.a, e), --n.c, ++n.b.g), t; + } + function Bve(n, e) { + var t, i, r; + return t = e.p - n.p, t == 0 ? (i = n.f.a * n.f.b, r = e.f.a * e.f.b, bt(i, r)) : t; + } + function Rve(n, e) { + var t, i; + return t = n.j, i = e.j, t != i ? t.g - i.g : n.p == e.p ? 0 : t == (en(), Xn) ? n.p - e.p : e.p - n.p; + } + function h5(n, e, t, i, r) { + Rt(n.c[e.g], t.g, i), Rt(n.c[t.g], e.g, i), Rt(n.b[e.g], t.g, r), Rt(n.b[t.g], e.g, r); + } + function fd(n, e, t) { + this.b = (Jn(n), n), this.d = (Jn(e), e), this.e = (Jn(t), t), this.c = this.d + ("" + this.e); + } + function Y4(n, e) { + this.b = n, this.e = e, this.d = e.j, this.f = (br(), u(n, 69).xk()), this.k = cu(e.e.Dh(), n); + } + function yk(n) { + this.n = new Z(), this.e = new Ct(), this.j = new Ct(), this.k = new Z(), this.f = new Z(), this.p = n; + } + function Xxn(n) { + n.r = new ni(), n.w = new ni(), n.t = new Z(), n.i = new Z(), n.d = new ni(), n.a = new mp(), n.c = new de(); + } + function N0() { + N0 = F, rj = new sC("UP", 0), ij = new sC(_B, 1), a_ = new sC(s3, 2), d_ = new sC(f3, 3); + } + function Z4() { + Z4 = F, uH = new UD("ONE_SIDED", 0), oH = new UD("TWO_SIDED", 1), mj = new UD("OFF", 2); + } + function N$() { + N$ = F, L1n = new lX("EQUAL_BETWEEN_STRUCTURES", 0), N1n = new lX("TO_ASPECT_RATIO", 1); + } + function Vxn() { + Vxn = F, Zte = Ce((a1(), A(T(Dhn, 1), G, 265, 0, [xH, Phn, Ihn, $H, Shn, Ohn, CI, Pv, Iv]))); + } + function Wxn() { + Wxn = F, loe = Ce((io(), A(T(pdn, 1), G, 264, 0, [_v, uE, sO, P9, fO, lO, hO, bU, cE]))); + } + function Jxn() { + Jxn = F, eoe = Ce((lw(), A(T(jr, 1), G, 95, 0, [Qs, xl, Ys, nf, el, Ms, Lo, Zs, Cs]))); + } + function Qxn() { + Qxn = F, GQn = Ce((NA(), A(T(ion, 1), G, 257, 0, [ton, Yun, Zun, Qun, f_, eon, non, Jun, Wun]))); + } + function GQ(n) { + var e; + return e = u(v(n, (W(), gc)), 64), n.k == (Vn(), Zt) && (e == (en(), Wn) || e == Zn); + } + function Kve(n, e, t) { + var i, r; + r = u(v(n, (cn(), Fr)), 75), r && (i = new Tu(), J$(i, 0, r), nw(i, t), Bi(e, i)); + } + function IT(n, e, t) { + var i, r, c, s; + s = Hi(n), i = s.d, r = s.c, c = n.n, e && (c.a = c.a - i.b - r.a), t && (c.b = c.b - i.d - r.b); + } + function _ve(n, e) { + var t, i; + return t = n.f.c.length, i = e.f.c.length, t < i ? -1 : t == i ? 0 : 1; + } + function Hve(n) { + return n.b.c.length != 0 && u(sn(n.b, 0), 72).a ? u(sn(n.b, 0), 72).a : vN(n); + } + function qve(n) { + var e; + if (n) { + if (e = n, e.dc()) + throw M(new nc()); + return e.Xb(e.gc() - 1); + } + return $On(n.Kc()); + } + function Yxn(n) { + var e; + return Cc(n, 0) < 0 && (n = JV(n)), e = Ae(U1(n, 32)), 64 - (e != 0 ? iy(e) : iy(Ae(n)) + 32); + } + function Uve() { + return UM(), Uf ? new VN(null) : gHn(Cve(), "com.google.common.base.Strings"); + } + function $$(n, e, t, i) { + return t == 1 ? (!n.n && (n.n = new q(Sr, n, 1, 7)), cr(n.n, e, i)) : lnn(n, e, t, i); + } + function jk(n, e) { + var t, i; + return i = (t = new UO(), t), Xc(i, e), ve((!n.A && (n.A = new Au(hu, n, 7)), n.A), i), i; + } + function Gve(n, e, t) { + var i, r, c, s; + return c = null, s = e, r = A0(s, gK), i = new gMn(n, t), c = (jke(i.a, i.b, r), r), c; + } + function x$(n) { + var e; + return (!n.a || !(n.Bb & 1) && n.a.Vh()) && (e = gs(n), D(e, 156) && (n.a = u(e, 156))), n.a; + } + function Ek(n, e) { + var t, i; + for (Jn(e), i = e.Kc(); i.Ob(); ) + if (t = i.Pb(), !n.Hc(t)) + return !1; + return !0; + } + function zve(n, e) { + var t, i, r; + return t = n.l + e.l, i = n.m + e.m + (t >> 22), r = n.h + e.h + (i >> 22), Zc(t & ro, i & ro, r & Il); + } + function Zxn(n, e) { + var t, i, r; + return t = n.l - e.l, i = n.m - e.m + (t >> 22), r = n.h - e.h + (i >> 22), Zc(t & ro, i & ro, r & Il); + } + function Xve(n) { + var e, t; + for (KDe(n), t = new C(n.d); t.a < t.c.c.length; ) + e = u(E(t), 105), e.i && $je(e); + } + function It(n) { + var e; + return D(n, 82) ? n : (e = n && n.__java$exception, e || (e = new zFn(n), Nyn(e)), e); + } + function Ck(n) { + if (D(n, 193)) + return u(n, 123); + if (n) + return null; + throw M(new fp(MWn)); + } + function zQ(n) { + return n.a.Ob() ? !0 : n.a != n.e ? !1 : (n.a = new JJ(n.f.f), n.a.Ob()); + } + function nFn(n, e) { + if (e == null) + return !1; + for (; n.a != n.b; ) + if (ct(e, xT(n))) + return !0; + return !1; + } + function eFn(n, e) { + return !n || !e || n == e ? !1 : _Bn(n.d.c, e.d.c + e.d.b) && _Bn(e.d.c, n.d.c + n.d.b); + } + function hi(n, e) { + var t, i; + return t = e.Pc(), i = t.length, i == 0 ? !1 : (XV(n.c, n.c.length, t), !0); + } + function Vve(n, e, t) { + var i, r; + for (r = e.vc().Kc(); r.Ob(); ) + i = u(r.Pb(), 44), n.yc(i.ld(), i.md(), t); + return n; + } + function F$(n) { + var e, t, i; + for (e = new Ct(), i = ge(n.d, 0); i.b != i.d.c; ) + t = u(be(i), 65), Fe(e, t.c); + return e; + } + function tFn(n, e) { + var t, i; + for (i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 72), U(t, (W(), A3), e); + } + function Wve(n, e, t) { + var i, r; + for (r = new C(n.b); r.a < r.c.c.length; ) + i = u(E(r), 27), Ro(i, i.i + e, i.j + t); + } + function iFn(n, e) { + if (!n) + throw M(new Gn(R5("value already present: %s", A(T(ki, 1), Bn, 1, 5, [e])))); + } + function Jve(n, e, t, i, r) { + return Vg(), y.Math.min(OGn(n, e, t, i, r), OGn(t, i, n, e, HC(new V(r.a, r.b)))); + } + function Qve(n, e, t, i) { + u(t.b, 68), u(t.b, 68), u(i.b, 68), u(i.b, 68), u(i.b, 68), eu(i.a, new BV(n, e, i)); + } + function Yve(n, e) { + n.d == (ci(), Br) || n.d == us ? u(e.a, 60).c.Fc(u(e.b, 60)) : u(e.b, 60).c.Fc(u(e.a, 60)); + } + function rFn(n, e) { + var t; + return t = Dh(e.a.gc()), Gt(fT(new Tn(null, new In(e, 1)), n.i), new sMn(n, t)), t; + } + function cFn(n) { + var e, t; + return t = (e = new UO(), e), Xc(t, "T"), ve((!n.d && (n.d = new Au(hu, n, 11)), n.d), t), t; + } + function XQ(n) { + var e, t, i, r; + for (e = 1, t = 0, r = n.gc(); t < r; ++t) + i = n.Vi(t), e = 31 * e + (i == null ? 0 : mt(i)); + return e; + } + function uFn(n, e, t, i) { + var r; + return Z7(e, n.e.Rd().gc()), Z7(t, n.c.Rd().gc()), r = n.a[e][t], Rt(n.a[e], t, i), r; + } + function A(n, e, t, i, r) { + return r.Rm = n, r.Sm = e, r.Tm = Q2, r.__elementTypeId$ = t, r.__elementTypeCategory$ = i, r; + } + function OT() { + OT = F, F_ = new dC(kh, 0), HP = new dC(zXn, 1), qP = new dC(XXn, 2), wj = new dC("BOTH", 3); + } + function xf() { + xf = F, j3 = new bC(qm, 0), lv = new bC(s3, 1), av = new bC(f3, 2), B_ = new bC("TOP", 3); + } + function nm() { + nm = F, rb = new lC("Q1", 0), Iw = new lC("Q4", 1), Pw = new lC("Q2", 2), d2 = new lC("Q3", 3); + } + function DT() { + DT = F, QH = new YD("OFF", 0), Ov = new YD("SINGLE_EDGE", 1), Gw = new YD("MULTI_EDGE", 2); + } + function Mk() { + Mk = F, YI = new dX("MINIMUM_SPANNING_TREE", 0), ran = new dX("MAXIMUM_SPANNING_TREE", 1); + } + function qp() { + qp = F, wue = new vmn(), bue = new mmn(); + } + function VQ(n) { + var e, t; + return t = (B1(), e = new jE(), e), n && ve((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), t), t; + } + function B$(n) { + var e, t, i, r; + for (r = new Z(), i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 27), e = aw(t), hi(r, e); + return r; + } + function Zve(n, e) { + var t, i; + for (TM(e, "predicate"), i = 0; n.Ob(); i++) + if (t = n.Pb(), e.Lb(t)) + return i; + return -1; + } + function Up(n, e) { + var t, i; + if (i = 0, n < 64 && n <= e) + for (e = e < 64 ? e : 63, t = n; t <= e; t++) + i = lf(i, Bs(1, t)); + return i; + } + function n6e(n, e) { + var t, i; + return t = n.c, i = e.e[n.p], i < t.a.c.length - 1 ? u(sn(t.a, i + 1), 10) : null; + } + function WQ(n) { + Dn(); + var e, t, i; + for (i = 0, t = n.Kc(); t.Ob(); ) + e = t.Pb(), i = i + (e != null ? mt(e) : 0), i = i | 0; + return i; + } + function e6e(n) { + var e, t, i; + return e = u(n.e && n.e(), 9), i = (t = e.slice(), u(o$(t, e), 9)), new _o(e, i, e.length); + } + function oFn(n, e, t) { + var i; + Hu(n.a), eu(t.i, new Ikn(n)), i = new LC(u(ee(n.a, e.b), 68)), QBn(n, i, e), t.f = i; + } + function t6e(n) { + var e; + U0(n, !0), e = d1, kt(n, (cn(), Tv)) && (e += u(v(n, Tv), 17).a), U(n, Tv, Y(e)); + } + function i6e(n) { + var e; + return e = new ul(), e.a = n, e.b = d6e(n), e.c = K(fn, J, 2, 2, 6, 1), e.c[0] = yxn(n), e.c[1] = yxn(n), e; + } + function sFn(n) { + var e, t, i; + return t = n.n, i = n.o, e = n.d, new Ho(t.a - e.b, t.b - e.d, i.a + (e.b + e.c), i.b + (e.d + e.a)); + } + function r6e(n, e) { + return !n || !e || n == e ? !1 : x0(n.b.c, e.b.c + e.b.b) < 0 && x0(e.b.c, n.b.c + n.b.b) < 0; + } + function fFn(n) { + switch (n.g) { + case 1: + return Aa; + case 2: + return nl; + case 3: + return Zj; + default: + return nE; + } + } + function c6e(n) { + switch (u(v(n, (cn(), su)), 171).g) { + case 2: + case 4: + return !0; + default: + return !1; + } + } + function Tk(n, e, t) { + switch (t.g) { + case 2: + n.b = e; + break; + case 1: + n.c = e; + break; + case 4: + n.d = e; + break; + case 3: + n.a = e; + } + } + function JQ(n, e) { + switch (e) { + case 0: + !n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), n.o.c.$b(); + return; + } + cF(n, e); + } + function u6e(n, e) { + var t, i; + return t = u(u(ee(n.g, e.a), 42).a, 68), i = u(u(ee(n.g, e.b), 42).a, 68), FUn(t, i); + } + function QQ(n, e, t) { + var i; + if (i = n.gc(), e > i) + throw M(new Kb(e, i)); + return n.Si() && (t = pOn(n, t)), n.Ei(e, t); + } + function em(n, e, t, i, r) { + var c, s; + for (s = t; s <= r; s++) + for (c = e; c <= i; c++) + Kg(n, c, s) || xA(n, c, s, !0, !1); + } + function o6e(n) { + Vg(); + var e, t, i; + for (t = K(Ei, J, 8, 2, 0, 1), i = 0, e = 0; e < 2; e++) + i += 0.5, t[e] = n7e(i, n); + return t; + } + function tm(n) { + var e, t, i; + return e = ~n.l + 1 & ro, t = ~n.m + (e == 0 ? 1 : 0) & ro, i = ~n.h + (e == 0 && t == 0 ? 1 : 0) & Il, Zc(e, t, i); + } + function YQ(n) { + var e; + if (n < 0) + return Wi; + if (n == 0) + return 0; + for (e = W5; !(e & n); e >>= 1) + ; + return e; + } + function R$(n, e, t) { + return n >= 128 ? !1 : n < 64 ? C6(vi(Bs(1, n), t), 0) : C6(vi(Bs(1, n - 64), e), 0); + } + function Ak(n, e, t) { + return t == null ? (!n.q && (n.q = new de()), Bp(n.q, e)) : (!n.q && (n.q = new de()), Ve(n.q, e, t)), n; + } + function U(n, e, t) { + return t == null ? (!n.q && (n.q = new de()), Bp(n.q, e)) : (!n.q && (n.q = new de()), Ve(n.q, e, t)), n; + } + function hFn(n) { + var e, t; + return t = new zM(), Ur(t, n), U(t, (Q1(), y3), n), e = new de(), xPe(n, t, e), hDe(n, t, e), t; + } + function lFn(n) { + var e, t; + return e = n.t - n.k[n.o.p] * n.d + n.j[n.o.p] > n.f, t = n.u + n.e[n.o.p] * n.d > n.f * n.s * n.d, e || t; + } + function aFn(n, e) { + var t, i, r, c; + for (t = !1, i = n.a[e].length, c = 0; c < i - 1; c++) + r = c + 1, t = t | N8e(n, e, c, r); + return t; + } + function s6e(n) { + var e, t, i, r; + for (t = n.a, i = 0, r = t.length; i < r; ++i) + e = t[i], vFn(n, e, (en(), ae)), vFn(n, e, Xn); + } + function dFn() { + dFn = F, Cne = Ce((mr(), A(T(cH, 1), G, 259, 0, [ZP, cs, F8, nI, yv, v2, B8, vv, kv, eI]))); + } + function bFn() { + bFn = F, iie = Ce((ps(), A(T(_hn, 1), G, 243, 0, [AI, Sj, Pj, Bhn, Rhn, Fhn, Khn, SI, pb, Uw]))); + } + function hd() { + hd = F, Y_ = new qD(kh, 0), mv = new qD("INCOMING_ONLY", 1), m2 = new qD("OUTGOING_ONLY", 2); + } + function K$() { + K$ = F, WK = { boolean: Uhe, number: rhe, string: che, object: L_n, function: L_n, undefined: Bfe }; + } + function ZQ() { + this.o = null, this.k = null, this.j = null, this.d = null, this.b = null, this.n = null, this.a = null; + } + function nY(n, e) { + this.c = n, this.d = e, this.b = this.d / this.c.c.Rd().gc() | 0, this.a = this.d % this.c.c.Rd().gc(); + } + function wFn(n, e) { + this.b = n, pg.call(this, (u(L(H((G1(), Hn).o), 10), 19), e.i), e.g), this.a = (D$(), CU); + } + function eY(n, e, t) { + this.q = new y.Date(), this.q.setFullYear(n + ha, e, t), this.q.setHours(0, 0, 0, 0), H5(this, 0); + } + function gFn(n, e) { + x7(n >= 0, "Negative initial capacity"), x7(e >= 0, "Non-positive load factor"), Hu(this); + } + function f6e(n, e, t, i, r) { + var c, s; + if (s = n.length, c = t.length, e < 0 || i < 0 || r < 0 || e + r > s || i + r > c) + throw M(new UG()); + } + function tY(n, e) { + Dn(); + var t, i, r, c, s; + for (s = !1, i = e, r = 0, c = i.length; r < c; ++r) + t = i[r], s = s | n.Fc(t); + return s; + } + function pFn(n, e, t) { + var i, r; + return i = new r$(e, t), r = new DO(), n.b = jqn(n, n.b, i, r), r.b || ++n.c, n.b.b = !1, r.d; + } + function l5(n) { + var e; + return e = n.a[n.b], e == null ? null : (Rt(n.a, n.b, null), n.b = n.b + 1 & n.a.length - 1, e); + } + function mFn(n) { + var e, t; + return t = iy(n.h), t == 32 ? (e = iy(n.m), e == 32 ? iy(n.l) + 32 : e + 20 - 10) : t - 12; + } + function iY(n) { + var e; + return (!n.c || !(n.Bb & 1) && n.c.Db & 64) && (e = gs(n), D(e, 90) && (n.c = u(e, 29))), n.c; + } + function Z1(n) { + var e, t; + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 60), e.d.c = -e.d.c - e.d.b; + oen(n); + } + function na(n) { + var e, t; + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), e.g.c = -e.g.c - e.g.b; + PA(n); + } + function vFn(n, e, t) { + var i, r, c, s; + for (s = g5(e, t), c = 0, r = s.Kc(); r.Ob(); ) + i = u(r.Pb(), 12), Ve(n.c, i, Y(c++)); + } + function kFn(n, e, t) { + var i; + return i = new Z(), len(n, e, i, (en(), Zn), !0, !1), len(n, t, i, Wn, !1, !1), i; + } + function cc(n) { + var e, t, i, r, c; + for (e = new Li(), i = n, r = 0, c = i.length; r < c; ++r) + t = i[r], e.a += t.a, e.b += t.b; + return e; + } + function _$(n, e, t) { + var i, r, c, s; + return c = null, s = e, r = A0(s, "labels"), i = new TMn(n, t), c = (zCe(i.a, i.b, r), r), c; + } + function h6e(n, e, t, i) { + var r; + return r = Ynn(n, e, t, i), !r && (r = m5e(n, t, i), r && !Qg(n, e, r)) ? null : r; + } + function l6e(n, e, t, i) { + var r; + return r = Znn(n, e, t, i), !r && (r = rx(n, t, i), r && !Qg(n, e, r)) ? null : r; + } + function a6e(n, e, t) { + if (Se(e), t.Ob()) + for (vX(e, oIn(t.Pb())); t.Ob(); ) + vX(e, n.a), vX(e, oIn(t.Pb())); + return e; + } + function yFn(n, e) { + var t; + for (t = 0; t < n.a.a.length; t++) + if (!u(ZSn(n.a, t), 178).Lb(e)) + return !1; + return !0; + } + function d6e(n) { + var e; + return n == 0 ? "Etc/GMT" : (n < 0 ? (n = -n, e = "Etc/GMT-") : e = "Etc/GMT+", e + ZNn(n)); + } + function rY(n) { + var e; + return n.b <= 0 ? !1 : (e = ih("MLydhHmsSDkK", gu(Xi(n.c, 0))), e > 1 || e >= 0 && n.b < 3); + } + function H$(n) { + var e, t, i; + e = ~n.l + 1 & ro, t = ~n.m + (e == 0 ? 1 : 0) & ro, i = ~n.h + (e == 0 && t == 0 ? 1 : 0) & Il, n.l = e, n.m = t, n.h = i; + } + function cY(n) { + Dn(); + var e, t, i; + for (i = 1, t = n.Kc(); t.Ob(); ) + e = t.Pb(), i = 31 * i + (e != null ? mt(e) : 0), i = i | 0; + return i; + } + function b6e(n, e, t, i, r) { + var c; + return c = Vnn(n, e), t && H$(c), r && (n = o7e(n, e), i ? wa = tm(n) : wa = Zc(n.l, n.m, n.h)), c; + } + function jFn(n, e, t) { + n.g = uF(n, e, (en(), Zn), n.b), n.d = uF(n, t, Zn, n.b), !(n.g.c == 0 || n.d.c == 0) && ZKn(n); + } + function EFn(n, e, t) { + n.g = uF(n, e, (en(), Wn), n.j), n.d = uF(n, t, Wn, n.j), !(n.g.c == 0 || n.d.c == 0) && ZKn(n); + } + function uY(n, e) { + switch (e) { + case 7: + return !!n.e && n.e.i != 0; + case 8: + return !!n.d && n.d.i != 0; + } + return UY(n, e); + } + function w6e(n, e) { + switch (e.g) { + case 0: + D(n.b, 641) || (n.b = new Kxn()); + break; + case 1: + D(n.b, 642) || (n.b = new RSn()); + } + } + function CFn(n) { + switch (n.g) { + case 0: + return new pmn(); + default: + throw M(new Gn(xS + (n.f != null ? n.f : "" + n.g))); + } + } + function MFn(n) { + switch (n.g) { + case 0: + return new gmn(); + default: + throw M(new Gn(xS + (n.f != null ? n.f : "" + n.g))); + } + } + function g6e(n, e, t) { + return !s4(ut(new Tn(null, new In(n.c, 16)), new Z3(new lMn(e, t)))).Bd((Va(), v3)); + } + function TFn(n, e) { + return vp(pm(u(v(e, (lc(), vb)), 88)), new V(n.c.e.a - n.b.e.a, n.c.e.b - n.b.e.b)) <= 0; + } + function p6e(n, e) { + for (; n.g == null && !n.c ? uJ(n) : n.g == null || n.i != 0 && u(n.g[n.i - 1], 51).Ob(); ) + yle(e, CA(n)); + } + function ld(n) { + var e, t; + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), e.f.$b(); + Zfe(n.b, n), oqn(n); + } + function Sk(n) { + var e, t, i; + for (e = new Tu(), i = ge(n, 0); i.b != i.d.c; ) + t = u(be(i), 8), g4(e, 0, new rr(t)); + return e; + } + function im(n) { + var e; + return X1(n), e = new LO(), n.a.Bd(e) ? (b4(), new wD(Jn(e.a))) : (b4(), b4(), Lun); + } + function oY(n, e, t) { + switch (e) { + case 0: + !n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), TT(n.o, t); + return; + } + sF(n, e, t); + } + function q$(n, e, t) { + this.g = n, this.e = new Li(), this.f = new Li(), this.d = new Ct(), this.b = new Ct(), this.a = e, this.c = t; + } + function U$(n, e, t, i) { + this.b = new Z(), this.n = new Z(), this.i = i, this.j = t, this.s = n, this.t = e, this.r = 0, this.d = 0; + } + function rm(n, e) { + if (!n.Li() && e == null) + throw M(new Gn("The 'no null' constraint is violated")); + return e; + } + function t1(n) { + var e, t; + for (e = 0, t = 0; t < n.length; t++) + e = (e << 5) - e + (zn(t, n.length), n.charCodeAt(t)) | 0; + return e; + } + function AFn(n, e) { + var t, i, r; + for (r = n.b; r; ) { + if (t = n.a.Ne(e, r.d), t == 0) + return r; + i = t < 0 ? 0 : 1, r = r.a[i]; + } + return null; + } + function m6e(n, e, t) { + var i, r; + i = (_n(), !!jX(t)), r = u(e.xc(i), 15), r || (r = new Z(), e.zc(i, r)), r.Fc(t); + } + function v6e(n, e) { + var t, i; + return t = u(z(n, (Rf(), Rj)), 17).a, i = u(z(e, Rj), 17).a, t == i || t < i ? -1 : t > i ? 1 : 0; + } + function k6e(n) { + return nn(n.c, (qp(), wue)), lQ(n.a, $(R(rn((bx(), EI))))) ? new ivn() : new xkn(n); + } + function y6e(n) { + for (; !n.d || !n.d.Ob(); ) + if (n.b && !t6(n.b)) + n.d = u(Sp(n.b), 51); + else + return null; + return n.d; + } + function sY(n) { + switch (n.g) { + case 1: + return aVn; + default: + case 2: + return 0; + case 3: + return QB; + case 4: + return Arn; + } + } + function j6e() { + nt(); + var n; + return IU || (n = H1e(sa("M", !0)), n = uM(sa("M", !1), n), IU = n, IU); + } + function LT() { + LT = F, gU = new CC("ELK", 0), Adn = new CC("JSON", 1), Tdn = new CC("DOT", 2), Sdn = new CC("SVG", 3); + } + function a5() { + a5 = F, VH = new WD("STACKED", 0), XH = new WD("REVERSE_STACKED", 1), Ij = new WD("SEQUENCED", 2); + } + function d5() { + d5 = F, gln = new eL(kh, 0), nq = new eL("MIDDLE_TO_MIDDLE", 1), Lj = new eL("AVOID_OVERLAP", 2); + } + function cm() { + cm = F, Csn = new Zgn(), Msn = new n2n(), QZn = new Qgn(), JZn = new e2n(), WZn = new Ygn(), Esn = (Jn(WZn), new D0n()); + } + function NT() { + NT = F, ldn = new f0(15), Que = new Ni((He(), C1), ldn), j9 = N3, odn = Iue, sdn = Hd, hdn = _2, fdn = Vw; + } + function Ng(n, e) { + var t, i, r, c, s; + for (i = e, r = 0, c = i.length; r < c; ++r) + t = i[r], s = new ZPn(n), t.hf(s), WPe(s); + Hu(n.f); + } + function G$(n, e) { + var t; + return e === n ? !0 : D(e, 229) ? (t = u(e, 229), ct(n.Zb(), t.Zb())) : !1; + } + function fY(n, e) { + return iqn(n, e) ? (Pn(n.b, u(v(e, (W(), Nl)), 21), e), Fe(n.a, e), !0) : !1; + } + function E6e(n) { + var e, t; + e = u(v(n, (W(), Xu)), 10), e && (t = e.c, bu(t.a, e), t.a.c.length == 0 && bu(Hi(e).b, t)); + } + function C6e(n, e) { + return kt(n, (W(), dt)) && kt(e, dt) ? u(v(e, dt), 17).a - u(v(n, dt), 17).a : 0; + } + function M6e(n, e) { + return kt(n, (W(), dt)) && kt(e, dt) ? u(v(n, dt), 17).a - u(v(e, dt), 17).a : 0; + } + function SFn(n) { + return Uf ? K(DQn, Qzn, 581, 0, 0, 1) : u(Ff(n.a, K(DQn, Qzn, 581, n.a.c.length, 0, 1)), 856); + } + function T6e(n, e, t, i) { + return yM(), new az(A(T(Pd, 1), WA, 44, 0, [(Nx(n, e), new i0(n, e)), (Nx(t, i), new i0(t, i))])); + } + function $g(n, e, t) { + var i, r; + return r = (i = new hD(), i), Tr(r, e, t), ve((!n.q && (n.q = new q(Ss, n, 11, 10)), n.q), r), r; + } + function z$(n) { + var e, t, i, r; + for (r = ole(Aoe, n), t = r.length, i = K(fn, J, 2, t, 6, 1), e = 0; e < t; ++e) + i[e] = r[e]; + return i; + } + function hY(n, e) { + var t; + e * 2 + 1 >= n.b.c.length || (hY(n, 2 * e + 1), t = 2 * e + 2, t < n.b.c.length && hY(n, t), x_n(n, e)); + } + function A6e(n, e) { + var t, i; + for (i = ge(n, 0); i.b != i.d.c; ) + t = u(be(i), 219), t.e.length > 0 && (e.Cd(t), t.i && C5e(t)); + } + function lY(n, e, t) { + var i; + for (i = t - 1; i >= 0 && n[i] === e[i]; i--) + ; + return i < 0 ? 0 : ND(vi(n[i], vr), vi(e[i], vr)) ? -1 : 1; + } + function PFn(n, e, t) { + var i, r; + this.g = n, this.c = e, this.a = this, this.d = this, r = fxn(t), i = K(fQn, Cy, 227, r, 0, 1), this.b = i; + } + function X$(n, e, t, i, r) { + var c, s; + for (s = t; s <= r; s++) + for (c = e; c <= i; c++) + if (Kg(n, c, s)) + return !0; + return !1; + } + function S6e(n, e) { + var t, i; + for (i = n.Zb().Cc().Kc(); i.Ob(); ) + if (t = u(i.Pb(), 16), t.Hc(e)) + return !0; + return !1; + } + function IFn(n, e, t) { + var i, r, c, s; + for (Jn(t), s = !1, c = n.fd(e), r = t.Kc(); r.Ob(); ) + i = r.Pb(), c.Rb(i), s = !0; + return s; + } + function V$(n, e) { + var t, i; + return i = u(Un(n.a, 4), 129), t = K(jU, MK, 424, e, 0, 1), i != null && Oc(i, 0, t, 0, i.length), t; + } + function OFn(n, e) { + var t; + return t = new jF((n.f & 256) != 0, n.i, n.a, n.d, (n.f & 16) != 0, n.j, n.g, e), n.e != null || (t.c = n), t; + } + function P6e(n, e) { + var t; + return n === e ? !0 : D(e, 85) ? (t = u(e, 85), bnn(Ja(n), t.vc())) : !1; + } + function DFn(n, e, t) { + var i, r; + for (r = t.Kc(); r.Ob(); ) + if (i = u(r.Pb(), 44), n.Be(e, i.md())) + return !0; + return !1; + } + function LFn(n, e, t) { + return n.d[e.p][t.p] || (D9e(n, e, t), n.d[e.p][t.p] = !0, n.d[t.p][e.p] = !0), n.a[e.p][t.p]; + } + function I6e(n, e) { + var t; + return !n || n == e || !kt(e, (W(), sb)) ? !1 : (t = u(v(e, (W(), sb)), 10), t != n); + } + function W$(n) { + switch (n.i) { + case 2: + return !0; + case 1: + return !1; + case -1: + ++n.c; + default: + return n.$l(); + } + } + function NFn(n) { + switch (n.i) { + case -2: + return !0; + case -1: + return !1; + case 1: + --n.c; + default: + return n._l(); + } + } + function $Fn(n) { + jOn.call(this, "The given string does not match the expected format for individual spacings.", n); + } + function O6e(n, e) { + var t; + e.Ug("Min Size Preprocessing", 1), t = Enn(n), ht(n, (_h(), f9), t.a), ht(n, UI, t.b), e.Vg(); + } + function D6e(n) { + var e, t, i; + for (e = 0, i = K(Ei, J, 8, n.b, 0, 1), t = ge(n, 0); t.b != t.d.c; ) + i[e++] = u(be(t), 8); + return i; + } + function J$(n, e, t) { + var i, r, c; + for (i = new Ct(), c = ge(t, 0); c.b != c.d.c; ) + r = u(be(c), 8), Fe(i, new rr(r)); + IFn(n, e, i); + } + function L6e(n, e) { + var t; + return t = nr(n, e), ND(RN(n, e), 0) | AC(RN(n, t), 0) ? t : nr(Ey, RN(U1(t, 63), 1)); + } + function N6e(n, e) { + var t, i; + return t = u(n.d.Bc(e), 16), t ? (i = n.e.hc(), i.Gc(t), n.e.d -= t.gc(), t.$b(), i) : null; + } + function xFn(n) { + var e; + if (e = n.a.c.length, e > 0) + return E4(e - 1, n.a.c.length), Yl(n.a, e - 1); + throw M(new xyn()); + } + function FFn(n, e, t) { + if (n > e) + throw M(new Gn(ZA + n + Yzn + e)); + if (n < 0 || e > t) + throw M(new mz(ZA + n + Ptn + e + Ttn + t)); + } + function um(n, e) { + n.D == null && n.B != null && (n.D = n.B, n.B = null), j$(n, e == null ? null : (Jn(e), e)), n.C && n.hl(null); + } + function $6e(n, e) { + var t; + t = rn((bx(), EI)) != null && e.Sg() != null ? $(R(e.Sg())) / $(R(rn(EI))) : 1, Ve(n.b, e, t); + } + function aY(n, e) { + var t, i; + if (i = n.c[e], i != 0) + for (n.c[e] = 0, n.d -= i, t = e + 1; t < n.a.length; ) + n.a[t] -= i, t += t & -t; + } + function ew(n) { + var e; + ++n.j, n.i == 0 ? n.g = null : n.i < n.g.length && (e = n.g, n.g = n.aj(n.i), Oc(e, 0, n.g, 0, n.i)); + } + function x6e(n, e, t) { + if (e < 0) + throw M(new Ir(LVn + e)); + e < n.j.c.length ? Go(n.j, e, t) : (FDn(n, e), nn(n.j, t)); + } + function BFn(n) { + if (!n.a || !(n.a.i & 8)) + throw M(new Or("Enumeration class expected for layout option " + n.f)); + } + function dY(n) { + var e; + return e = (!n.a && (n.a = new q(Bl, n, 9, 5)), n.a), e.i != 0 ? cle(u(L(e, 0), 694)) : null; + } + function F6e(n) { + var e; + for (Se(n), LV(!0, "numberToAdvance must be nonnegative"), e = 0; e < 0 && pe(n); e++) + fe(n); + return e; + } + function Q$() { + Q$ = F, hon = (YE(), b_), fon = new Mn(Htn, hon), IYn = new lt(qtn), OYn = new lt(Utn), DYn = new lt(Gtn); + } + function b5() { + b5 = F, aq = new mC(iin, 0), BI = new mC(wVn, 1), lq = new mC("FAN", 2), hq = new mC("CONSTRAINT", 3); + } + function Pk() { + Pk = F, KI = new tL(kh, 0), qln = new tL("RADIAL_COMPACTION", 1), Uln = new tL("WEDGE_COMPACTION", 2); + } + function om() { + om = F, WH = new JD("CONSERVATIVE", 0), Whn = new JD("CONSERVATIVE_SOFT", 1), Y8 = new JD("SLOPPY", 2); + } + function Gu() { + Gu = F, Fun = new $D("CONCURRENT", 0), Yr = new $D("IDENTITY_FINISH", 1), Aw = new $D("UNORDERED", 2); + } + function Y$() { + Y$ = F, T_ = dOn(A(T(y9, 1), G, 88, 0, [(ci(), Br), Xr])), A_ = dOn(A(T(y9, 1), G, 88, 0, [us, Wf])); + } + function wo(n) { + return Si(n) ? fn : $b(n) ? si : Nb(n) ? Xt : mW(n) || lW(n) ? n.Rm : n.Rm || Array.isArray(n) && T(hQn, 1) || hQn; + } + function B6e(n) { + return n ? n.i & 1 ? n == so ? Xt : n == ye ? Gi : n == cg ? sv : n == Ii ? si : n == Fa ? tb : n == V2 ? ib : n == Bu ? p3 : A8 : n : null; + } + function xg(n) { + return (n.c != n.b.b || n.i != n.g.b) && (Pb(n.a.c, 0), hi(n.a, n.b), hi(n.a, n.g), n.c = n.b.b, n.i = n.g.b), n.a; + } + function R6e(n, e) { + var t, i; + for (t = n.a.length - 1; e != n.b; ) + i = e - 1 & t, Rt(n.a, e, n.a[i]), e = i; + Rt(n.a, n.b, null), n.b = n.b + 1 & t; + } + function K6e(n, e) { + var t, i; + for (t = n.a.length - 1, n.c = n.c - 1 & t; e != n.c; ) + i = e + 1 & t, Rt(n.a, e, n.a[i]), e = i; + Rt(n.a, n.c, null); + } + function bY(n, e, t) { + var i, r; + return zb(e, n.c.length), i = t.Pc(), r = i.length, r == 0 ? !1 : (XV(n.c, e, i), !0); + } + function RFn(n, e, t) { + var i, r, c, s; + for (r = t, c = 0, s = r.length; c < s; ++c) + if (i = r[c], n.b.Be(e, i.ld())) + return i; + return null; + } + function Ik(n) { + var e, t, i, r, c; + for (c = 1, t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], c = 31 * c + (e != null ? mt(e) : 0), c = c | 0; + return c; + } + function Ce(n) { + var e, t, i, r, c; + for (e = {}, i = n, r = 0, c = i.length; r < c; ++r) + t = i[r], e[":" + (t.f != null ? t.f : "" + t.g)] = t; + return e; + } + function _6e(n) { + var e, t; + if (n == null) + return null; + for (e = 0, t = n.length; e < t; e++) + if (!DSn(n[e])) + return n[e]; + return null; + } + function Z$(n, e) { + return !n || e && !n.j || D(n, 127) && u(n, 127).a.b == 0 ? 0 : n.jf(); + } + function $T(n, e) { + return !n || e && !n.k || D(n, 127) && u(n, 127).a.a == 0 ? 0 : n.kf(); + } + function KFn(n, e) { + return kt(n, (W(), dt)) && kt(e, dt) ? Ec(u(v(n, dt), 17).a, u(v(e, dt), 17).a) : 0; + } + function _Fn(n) { + var e, t, i; + for (i = 0, t = new ie(ce(n.a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), e.c.i == e.d.i || ++i; + return i; + } + function HFn(n, e) { + var t, i, r; + for (r = e - n.f, i = new C(n.d); i.a < i.c.c.length; ) + t = u(E(i), 315), FBn(t, t.e, t.f + r); + n.f = e; + } + function ad(n, e) { + var t, i, r; + i = n.Yk(e, null), r = null, e && (r = (o4(), t = new Jd(), t), K4(r, n.r)), i = Bf(n, r, i), i && i.oj(); + } + function qFn(n, e) { + var t, i, r; + t = n, r = 0; + do { + if (t == e) + return r; + if (i = t.e, !i) + throw M(new W9()); + t = Hi(i), ++r; + } while (!0); + } + function H6e(n) { + var e, t, i, r; + for (i = n.b.a, t = i.a.ec().Kc(); t.Ob(); ) + e = u(t.Pb(), 567), r = new XHn(e, n.e, n.f), nn(n.g, r); + } + function q6e(n) { + var e; + return e = new k$n(n), Q7(n.a, DZn, new Ku(A(T(aj, 1), Bn, 382, 0, [e]))), e.d && nn(e.f, e.d), e.f; + } + function UFn(n, e) { + var t; + for (t = 0; t < e.length; t++) + if (n == (zn(t, e.length), e.charCodeAt(t))) + return !0; + return !1; + } + function U6e(n, e) { + return e < n.length && (zn(e, n.length), n.charCodeAt(e) != 63) && (zn(e, n.length), n.charCodeAt(e) != 35); + } + function GFn(n, e, t, i) { + CTn(this), this.c = K(Qh, b1, 10, n.a.c.length, 0, 1), this.e = e, Ff(n.a, this.c), this.f = t, this.b = i; + } + function zFn(n) { + Njn(), xC(this), MM(this), this.e = n, wqn(this, n), this.g = n == null ? pu : Jr(n), this.a = "", this.b = n, this.a = ""; + } + function wY() { + this.a = new dmn(), this.f = new Ekn(this), this.b = new Ckn(this), this.i = new Mkn(this), this.e = new Tkn(this); + } + function XFn() { + Qfe.call(this, new WJ(Qb(16))), Co(2, Dzn), this.b = 2, this.a = new qW(null, null, 0, null), V9(this.a, this.a); + } + function gY(n) { + throw K$(), M(new Djn("Unexpected typeof result '" + n + "'; please report this bug to the GWT team")); + } + function nx(n, e, t) { + return y.Math.abs(e - n) < PS || y.Math.abs(t - n) < PS ? !0 : e - n > PS ? n - t > PS : t - n > PS; + } + function VFn(n, e) { + var t; + for (t = 0; t < e.length; t++) + if (n == (zn(t, e.length), e.charCodeAt(t))) + return !0; + return !1; + } + function G6e(n) { + var e, t; + if (n == null) + return !1; + for (e = 0, t = n.length; e < t; e++) + if (!DSn(n[e])) + return !1; + return !0; + } + function pY(n, e) { + var t, i, r; + return i = !1, t = e.q.d, e.d < n.b && (r = uen(e.q, n.b), e.q.d > r && (CKn(e.q, r), i = t != e.q.d)), i; + } + function WFn(n, e) { + var t, i, r, c, s, f, h, l; + return h = e.i, l = e.j, i = n.f, r = i.i, c = i.j, s = h - r, f = l - c, t = y.Math.sqrt(s * s + f * f), t; + } + function mY(n, e) { + var t, i; + return i = WT(n), i || (t = (UF(), xHn(e)), i = new Myn(t), ve(i.El(), n)), i; + } + function Ok(n, e) { + var t, i; + return t = u(n.c.Bc(e), 16), t ? (i = n.hc(), i.Gc(t), n.d -= t.gc(), t.$b(), n.mc(i)) : n.jc(); + } + function z6e(n, e) { + var t, i; + for (i = to(n.d, 1) != 0, t = !0; t; ) + t = !1, t = e.c.mg(e.e, i), t = t | sy(n, e, i, !1), i = !i; + xQ(n); + } + function JFn(n, e, t, i) { + var r, c; + n.a = e, c = i ? 0 : 1, n.f = (r = new f_n(n.c, n.a, t, c), new _qn(t, n.a, r, n.e, n.b, n.c == (O0(), Z8))); + } + function xT(n) { + var e; + return oe(n.a != n.b), e = n.d.a[n.a], CAn(n.b == n.d.c && e != null), n.c = n.a, n.a = n.a + 1 & n.d.a.length - 1, e; + } + function QFn(n) { + var e; + if (n.c != 0) + return n.c; + for (e = 0; e < n.a.length; e++) + n.c = n.c * 33 + (n.a[e] & -1); + return n.c = n.c * n.e, n.c; + } + function X6e(n) { + var e; + if (!(n.c.c < 0 ? n.a >= n.c.b : n.a <= n.c.b)) + throw M(new nc()); + return e = n.a, n.a += n.c.c, ++n.b, Y(e); + } + function ex(n) { + var e; + return e = new LX(n.a), Ur(e, n), U(e, (W(), st), n), e.o.a = n.g, e.o.b = n.f, e.n.a = n.i, e.n.b = n.j, e; + } + function tx(n) { + return (en(), vu).Hc(n.j) ? $(R(v(n, (W(), jv)))) : cc(A(T(Ei, 1), J, 8, 0, [n.i.n, n.n, n.a])).b; + } + function V6e(n) { + var e; + return e = DC(Mie), u(v(n, (W(), qc)), 21).Hc((mr(), yv)) && Ke(e, (Vi(), Dc), (tr(), FP)), e; + } + function W6e(n) { + var e, t, i, r; + for (r = new ni(), i = new C(n); i.a < i.c.c.length; ) + t = u(E(i), 27), e = gAe(t), Bi(r, e); + return r; + } + function J6e(n) { + var e, t; + for (t = new C(n.r); t.a < t.c.c.length; ) + if (e = u(E(t), 10), n.n[e.p] <= 0) + return e; + return null; + } + function Q6e(n, e, t) { + var i, r; + for (r = e.a.a.ec().Kc(); r.Ob(); ) + if (i = u(r.Pb(), 60), XIn(n, i, t)) + return !0; + return !1; + } + function Y6e(n, e, t, i) { + var r, c; + for (c = n.Kc(); c.Ob(); ) + r = u(c.Pb(), 72), r.n.a = e.a + (i.a - r.o.a) / 2, r.n.b = e.b, e.b += r.o.b + t; + } + function Z6e(n, e, t) { + var i; + i = new fHn(n, e), Pn(n.r, e.ag(), i), t && !K6(n.u) && (i.c = new hOn(n.d), eu(e.Rf(), new N9n(i))); + } + function Cc(n, e) { + var t; + return Vr(n) && Vr(e) && (t = n - e, !isNaN(t)) ? t : LZ(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e); + } + function vY(n, e) { + var t, i, r; + for (r = 1, t = n, i = e >= 0 ? e : -e; i > 0; ) + i % 2 == 0 ? (t *= t, i = i / 2 | 0) : (r *= t, i -= 1); + return e < 0 ? 1 / r : r; + } + function n5e(n, e) { + var t, i, r; + for (r = 1, t = n, i = e >= 0 ? e : -e; i > 0; ) + i % 2 == 0 ? (t *= t, i = i / 2 | 0) : (r *= t, i -= 1); + return e < 0 ? 1 / r : r; + } + function ea(n, e) { + var t, i, r, c; + return c = (r = n ? WT(n) : null, D_n((i = e, r && r.Gl(), i))), c == e && (t = WT(n), t && t.Gl()), c; + } + function YFn(n, e, t) { + var i, r; + return r = n.f, n.f = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 0, r, e), t ? t.nj(i) : t = i), t; + } + function ZFn(n, e, t) { + var i, r; + return r = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 3, r, e), t ? t.nj(i) : t = i), t; + } + function kY(n, e, t) { + var i, r; + return r = n.a, n.a = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 1, r, e), t ? t.nj(i) : t = i), t; + } + function nBn(n) { + var e, t; + if (n != null) + for (t = 0; t < n.length; ++t) + e = n[t], e && (u(e.g, 379), e.i); + } + function e5e(n, e, t, i, r, c, s, f) { + var h; + for (h = t; c < s; ) + h >= i || e < t && f.Ne(n[e], n[h]) <= 0 ? Rt(r, c++, n[e++]) : Rt(r, c++, n[h++]); + } + function t5e(n, e, t, i, r) { + e == 0 || i == 0 || (e == 1 ? r[i] = aZ(r, t, i, n[0]) : i == 1 ? r[e] = aZ(r, n, e, t[0]) : CCe(n, t, r, e, i)); + } + function i5e(n, e, t) { + var i, r, c, s; + for (i = t / n.gc(), r = 0, s = n.Kc(); s.Ob(); ) + c = u(s.Pb(), 186), HFn(c, c.f + i * r), pke(c, e, i), ++r; + } + function r5e(n) { + var e, t, i; + for (i = 0, t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 172), i = y.Math.max(i, e.g); + return i; + } + function c5e(n) { + var e, t, i; + for (i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 219), e = t.c.kg() ? t.f : t.a, e && OIe(e, t.j); + } + function w5() { + w5 = F, FH = new zD("DUMMY_NODE_OVER", 0), Lhn = new zD("DUMMY_NODE_UNDER", 1), MI = new zD("EQUAL", 2); + } + function Gp() { + Gp = F, mdn = new lL("PARALLEL_NODE", 0), Yw = new lL("HIERARCHICAL_NODE", 1), aO = new lL("ROOT_NODE", 2); + } + function jl() { + jl = F, uO = new hL("INHERIT", 0), M1 = new hL("INCLUDE_CHILDREN", 1), E9 = new hL("SEPARATE_CHILDREN", 2); + } + function yY(n, e) { + switch (e) { + case 1: + !n.n && (n.n = new q(Sr, n, 1, 7)), me(n.n); + return; + case 2: + X4(n, null); + return; + } + JQ(n, e); + } + function eBn(n) { + switch (n.g) { + case 0: + return new smn(); + case 1: + return new hmn(); + case 2: + return new fmn(); + default: + return null; + } + } + function i1(n) { + switch (oh(), n.c) { + case 0: + return wN(), oun; + case 1: + return new lp(R_n(new dp(n))); + default: + return new Pjn(n); + } + } + function tBn(n) { + switch (oh(), n.gc()) { + case 0: + return wN(), oun; + case 1: + return new lp(n.Kc().Pb()); + default: + return new Rz(n); + } + } + function FT(n) { + var e; + switch (n.gc()) { + case 0: + return qK; + case 1: + return new VL(Se(n.Xb(0))); + default: + return e = n, new PN(e); + } + } + function Y(n) { + var e, t; + return n > -129 && n < 128 ? (BSn(), e = n + 128, t = mun[e], !t && (t = mun[e] = new kG(n)), t) : new kG(n); + } + function sm(n) { + var e, t; + return n > -129 && n < 128 ? (ePn(), e = n + 128, t = jun[e], !t && (t = jun[e] = new jG(n)), t) : new jG(n); + } + function iBn(n, e) { + var t; + n.a.c.length > 0 && (t = u(sn(n.a, n.a.c.length - 1), 579), fY(t, e)) || nn(n.a, new yLn(e)); + } + function u5e(n) { + Fs(); + var e, t; + e = n.d.c - n.e.c, t = u(n.g, 154), eu(t.b, new m7n(e)), eu(t.c, new v7n(e)), qi(t.i, new k7n(e)); + } + function rBn(n) { + var e; + return e = new x1(), e.a += "VerticalSegment ", Lc(e, n.e), e.a += " ", Re(e, KX(new yD(), new C(n.k))), e.a; + } + function ix(n, e) { + var t, i, r; + for (t = 0, r = uc(n, e).Kc(); r.Ob(); ) + i = u(r.Pb(), 12), t += v(i, (W(), Xu)) != null ? 1 : 0; + return t; + } + function Fg(n, e, t) { + var i, r, c; + for (i = 0, c = ge(n, 0); c.b != c.d.c && (r = $(R(be(c))), !(r > t)); ) + r >= e && ++i; + return i; + } + function cBn(n, e) { + Se(n); + try { + return n._b(e); + } catch (t) { + if (t = It(t), D(t, 212) || D(t, 169)) + return !1; + throw M(t); + } + } + function jY(n, e) { + Se(n); + try { + return n.Hc(e); + } catch (t) { + if (t = It(t), D(t, 212) || D(t, 169)) + return !1; + throw M(t); + } + } + function o5e(n, e) { + Se(n); + try { + return n.Mc(e); + } catch (t) { + if (t = It(t), D(t, 212) || D(t, 169)) + return !1; + throw M(t); + } + } + function tw(n, e) { + Se(n); + try { + return n.xc(e); + } catch (t) { + if (t = It(t), D(t, 212) || D(t, 169)) + return null; + throw M(t); + } + } + function s5e(n, e) { + Se(n); + try { + return n.Bc(e); + } catch (t) { + if (t = It(t), D(t, 212) || D(t, 169)) + return null; + throw M(t); + } + } + function g5(n, e) { + switch (e.g) { + case 2: + case 1: + return uc(n, e); + case 3: + case 4: + return Qo(uc(n, e)); + } + return Dn(), Dn(), sr; + } + function p5(n) { + var e; + return n.Db & 64 ? Hs(n) : (e = new ls(Hs(n)), e.a += " (name: ", Cr(e, n.zb), e.a += ")", e.a); + } + function f5e(n) { + var e; + return e = u(Nf(n.c.c, ""), 233), e || (e = new Np(u4(c4(new tp(), ""), "Other")), s1(n.c.c, "", e)), e; + } + function EY(n, e, t) { + var i, r; + return r = n.sb, n.sb = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 4, r, e), t ? t.nj(i) : t = i), t; + } + function CY(n, e, t) { + var i, r; + return r = n.r, n.r = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 8, r, n.r), t ? t.nj(i) : t = i), t; + } + function h5e(n, e, t) { + var i, r; + return i = new ml(n.e, 4, 13, (r = e.c, r || (On(), Zf)), null, f1(n, e), !1), t ? t.nj(i) : t = i, t; + } + function l5e(n, e, t) { + var i, r; + return i = new ml(n.e, 3, 13, null, (r = e.c, r || (On(), Zf)), f1(n, e), !1), t ? t.nj(i) : t = i, t; + } + function r1(n, e) { + var t, i; + return t = u(e, 691), i = t.el(), !i && t.fl(i = D(e, 90) ? new FMn(n, u(e, 29)) : new uDn(n, u(e, 156))), i; + } + function Dk(n, e, t) { + var i; + n._i(n.i + 1), i = n.Zi(e, t), e != n.i && Oc(n.g, e, n.g, e + 1, n.i - e), Rt(n.g, e, i), ++n.i, n.Mi(e, t), n.Ni(); + } + function a5e(n, e) { + var t; + return e.a && (t = e.a.a.length, n.a ? Re(n.a, n.b) : n.a = new mo(n.d), dDn(n.a, e.a, e.d.length, t)), n; + } + function d5e(n, e) { + var t; + n.c = e, n.a = m8e(e), n.a < 54 && (n.f = (t = e.d > 1 ? lDn(e.a[0], e.a[1]) : lDn(e.a[0], 0), id(e.e > 0 ? t : n1(t)))); + } + function Lk(n, e) { + var t; + return t = new LO(), n.a.Bd(t) ? (b4(), new wD(Jn(zNn(n, t.a, e)))) : (X1(n), b4(), b4(), Lun); + } + function uBn(n, e) { + var t; + n.c.length != 0 && (t = u(Ff(n, K(Qh, b1, 10, n.c.length, 0, 1)), 199), MX(t, new cgn()), Z_n(t, e)); + } + function oBn(n, e) { + var t; + n.c.length != 0 && (t = u(Ff(n, K(Qh, b1, 10, n.c.length, 0, 1)), 199), MX(t, new ugn()), Z_n(t, e)); + } + function ct(n, e) { + return Si(n) ? An(n, e) : $b(n) ? eSn(n, e) : Nb(n) ? (Jn(n), x(n) === x(e)) : mW(n) ? n.Fb(e) : lW(n) ? ZMn(n, e) : lJ(n, e); + } + function Wo(n, e, t) { + if (e < 0) + Inn(n, t); + else { + if (!t.rk()) + throw M(new Gn(ba + t.xe() + b8)); + u(t, 69).wk().Ek(n, n.hi(), e); + } + } + function sBn(n, e, t) { + if (n < 0 || e > t) + throw M(new Ir(ZA + n + Ptn + e + ", size: " + t)); + if (n > e) + throw M(new Gn(ZA + n + Yzn + e)); + } + function fBn(n) { + var e; + return n.Db & 64 ? Hs(n) : (e = new ls(Hs(n)), e.a += " (source: ", Cr(e, n.d), e.a += ")", e.a); + } + function hBn(n) { + return n >= 65 && n <= 70 ? n - 65 + 10 : n >= 97 && n <= 102 ? n - 97 + 10 : n >= 48 && n <= 57 ? n - 48 : 0; + } + function b5e(n) { + VA(); + var e, t, i, r; + for (t = jx(), i = 0, r = t.length; i < r; ++i) + if (e = t[i], qr(e.a, n, 0) != -1) + return e; + return l_; + } + function w5e(n, e) { + var t, i, r, c; + if (e.ej(n.a), c = u(Un(n.a, 8), 2035), c != null) + for (t = c, i = 0, r = t.length; i < r; ++i) + null.Um(); + } + function c1(n, e) { + var t; + t = (n.Bb & 256) != 0, e ? n.Bb |= 256 : n.Bb &= -257, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 2, t, e)); + } + function MY(n, e) { + var t; + t = (n.Bb & 256) != 0, e ? n.Bb |= 256 : n.Bb &= -257, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 8, t, e)); + } + function BT(n, e) { + var t; + t = (n.Bb & 256) != 0, e ? n.Bb |= 256 : n.Bb &= -257, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 8, t, e)); + } + function u1(n, e) { + var t; + t = (n.Bb & 512) != 0, e ? n.Bb |= 512 : n.Bb &= -513, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 3, t, e)); + } + function TY(n, e) { + var t; + t = (n.Bb & 512) != 0, e ? n.Bb |= 512 : n.Bb &= -513, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 9, t, e)); + } + function g5e(n, e, t) { + var i, r; + return r = n.a, n.a = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 5, r, n.a), t ? XZ(t, i) : t = i), t; + } + function m5(n, e) { + var t; + return n.b == -1 && n.a && (t = n.a.pk(), n.b = t ? n.c.Hh(n.a.Lj(), t) : Ot(n.c.Dh(), n.a)), n.c.yh(n.b, e); + } + function lBn(n, e) { + var t, i; + for (i = new ne(n); i.e != i.i.gc(); ) + if (t = u(ue(i), 29), x(e) === x(t)) + return !0; + return !1; + } + function AY(n) { + var e, t; + return e = n.k, e == (Vn(), Zt) ? (t = u(v(n, (W(), gc)), 64), t == (en(), Xn) || t == ae) : !1; + } + function aBn(n) { + var e; + return e = pJ(n), o0(e.a, 0) ? (Ob(), Ob(), n_) : (Ob(), new AL(LD(e.a, 0) ? _J(e) / id(e.a) : 0)); + } + function Nk(n, e) { + this.e = e, this.a = Yxn(n), this.a < 54 ? this.f = id(n) : this.c = (dh(), Cc(n, 0) >= 0 ? ia(n) : U6(ia(n1(n)))); + } + function dBn(n, e, t, i, r, c) { + this.e = new Z(), this.f = (pr(), Q8), nn(this.e, n), this.d = e, this.a = t, this.b = i, this.f = r, this.c = c; + } + function p5e(n, e, t) { + n.n = Wa(Fa, [J, SB], [376, 28], 14, [t, wi(y.Math.ceil(e / 32))], 2), n.o = e, n.p = t, n.j = e - 1 >> 1, n.k = t - 1 >> 1; + } + function bBn(n) { + return n -= n >> 1 & 1431655765, n = (n >> 2 & 858993459) + (n & 858993459), n = (n >> 4) + n & 252645135, n += n >> 8, n += n >> 16, n & 63; + } + function wBn(n, e) { + var t, i; + for (i = new ne(n); i.e != i.i.gc(); ) + if (t = u(ue(i), 142), x(e) === x(t)) + return !0; + return !1; + } + function m5e(n, e, t) { + var i, r, c; + return c = (r = Mm(n.b, e), r), c && (i = u(qA(hk(n, c), ""), 29), i) ? Ynn(n, i, e, t) : null; + } + function rx(n, e, t) { + var i, r, c; + return c = (r = Mm(n.b, e), r), c && (i = u(qA(hk(n, c), ""), 29), i) ? Znn(n, i, e, t) : null; + } + function v5e(n, e) { + var t; + if (t = Lg(n.i, e), t == null) + throw M(new eh("Node did not exist in input.")); + return qQ(e, t), null; + } + function k5e(n, e) { + var t; + if (t = oy(n, e), D(t, 331)) + return u(t, 35); + throw M(new Gn(ba + e + "' is not a valid attribute")); + } + function v5(n, e, t) { + var i; + if (i = n.gc(), e > i) + throw M(new Kb(e, i)); + if (n.Si() && n.Hc(t)) + throw M(new Gn(Vy)); + n.Gi(e, t); + } + function y5e(n, e) { + e.Ug("Sort end labels", 1), Gt(ut(rc(new Tn(null, new In(n.b, 16)), new qwn()), new Uwn()), new Gwn()), e.Vg(); + } + function ci() { + ci = F, Jf = new p7(n8, 0), Xr = new p7(f3, 1), Br = new p7(s3, 2), Wf = new p7(_B, 3), us = new p7("UP", 4); + } + function $k() { + $k = F, XI = new sL("P1_STRUCTURE", 0), VI = new sL("P2_PROCESSING_ORDER", 1), WI = new sL("P3_EXECUTION", 2); + } + function gBn() { + gBn = F, Kre = ah(ah(h6(ah(ah(h6(Ke(new ii(), (Qp(), t9), (K5(), ZH)), i9), aln), bln), r9), sln), wln); + } + function j5e(n) { + switch (u(v(n, (W(), Od)), 311).g) { + case 1: + U(n, Od, (vl(), E3)); + break; + case 2: + U(n, Od, (vl(), k2)); + } + } + function E5e(n) { + switch (n) { + case 0: + return new cjn(); + case 1: + return new ijn(); + case 2: + return new rjn(); + default: + throw M(new W9()); + } + } + function pBn(n) { + switch (n.g) { + case 2: + return Xr; + case 1: + return Br; + case 4: + return Wf; + case 3: + return us; + default: + return Jf; + } + } + function SY(n, e) { + switch (n.b.g) { + case 0: + case 1: + return e; + case 2: + case 3: + return new Ho(e.d, 0, e.a, e.b); + default: + return null; + } + } + function PY(n) { + switch (n.g) { + case 1: + return Wn; + case 2: + return Xn; + case 3: + return Zn; + case 4: + return ae; + default: + return sc; + } + } + function xk(n) { + switch (n.g) { + case 1: + return ae; + case 2: + return Wn; + case 3: + return Xn; + case 4: + return Zn; + default: + return sc; + } + } + function RT(n) { + switch (n.g) { + case 1: + return Zn; + case 2: + return ae; + case 3: + return Wn; + case 4: + return Xn; + default: + return sc; + } + } + function IY(n, e, t, i) { + switch (e) { + case 1: + return !n.n && (n.n = new q(Sr, n, 1, 7)), n.n; + case 2: + return n.k; + } + return jZ(n, e, t, i); + } + function k5(n, e, t) { + var i, r; + return n.Pj() ? (r = n.Qj(), i = lF(n, e, t), n.Jj(n.Ij(7, Y(t), i, e, r)), i) : lF(n, e, t); + } + function cx(n, e) { + var t, i, r; + n.d == null ? (++n.e, --n.f) : (r = e.ld(), t = e.Bi(), i = (t & tt) % n.d.length, s4e(n, i, KHn(n, i, t, r))); + } + function fm(n, e) { + var t; + t = (n.Bb & Gs) != 0, e ? n.Bb |= Gs : n.Bb &= -1025, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 10, t, e)); + } + function hm(n, e) { + var t; + t = (n.Bb & vw) != 0, e ? n.Bb |= vw : n.Bb &= -4097, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 12, t, e)); + } + function lm(n, e) { + var t; + t = (n.Bb & xu) != 0, e ? n.Bb |= xu : n.Bb &= -8193, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 15, t, e)); + } + function am(n, e) { + var t; + t = (n.Bb & Tw) != 0, e ? n.Bb |= Tw : n.Bb &= -2049, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 11, t, e)); + } + function C5e(n) { + var e; + n.g && (e = n.c.kg() ? n.f : n.a, aen(e.a, n.o, !0), aen(e.a, n.o, !1), U(n.o, (cn(), Ut), (Di(), Ud))); + } + function M5e(n) { + var e; + if (!n.a) + throw M(new Or("Cannot offset an unassigned cut.")); + e = n.c - n.b, n.b += e, HIn(n, e), _In(n, e); + } + function T5e(n, e) { + var t; + if (t = ee(n.k, e), t == null) + throw M(new eh("Port did not exist in input.")); + return qQ(e, t), null; + } + function A5e(n) { + var e, t; + for (t = FHn(jo(n)).Kc(); t.Ob(); ) + if (e = Oe(t.Pb()), _5(n, e)) + return S3e((vCn(), Roe), e); + return null; + } + function mBn(n) { + var e, t; + for (t = n.p.a.ec().Kc(); t.Ob(); ) + if (e = u(t.Pb(), 218), e.f && n.b[e.c] < -1e-10) + return e; + return null; + } + function S5e(n) { + var e, t; + for (t = z1(new x1(), 91), e = !0; n.Ob(); ) + e || (t.a += ur), e = !1, Lc(t, n.Pb()); + return (t.a += "]", t).a; + } + function P5e(n) { + var e, t, i; + for (e = new Z(), i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 602), hi(e, u(t.Cf(), 16)); + return e; + } + function ux(n, e) { + var t, i; + for (i = new C(e); i.a < i.c.c.length; ) + t = u(E(i), 42), bu(n.b.b, t.b), Dge(u(t.a, 194), u(t.b, 86)); + } + function I5e(n, e) { + var t; + return t = bt(n.b.c, e.b.c), t != 0 || (t = bt(n.a.a, e.a.a), t != 0) ? t : bt(n.a.b, e.a.b); + } + function bt(n, e) { + return n < e ? -1 : n > e ? 1 : n == e ? n == 0 ? bt(1 / n, 1 / e) : 0 : isNaN(n) ? isNaN(e) ? 0 : 1 : -1; + } + function O5e(n) { + var e; + return e = n.a[n.c - 1 & n.a.length - 1], e == null ? null : (n.c = n.c - 1 & n.a.length - 1, Rt(n.a, n.c, null), e); + } + function D5e(n) { + var e, t, i; + for (i = 0, t = n.length, e = 0; e < t; e++) + n[e] == 32 || n[e] == 13 || n[e] == 10 || n[e] == 9 || (n[i++] = n[e]); + return i; + } + function L5e(n, e) { + var t, i, r, c, s; + for (s = cu(n.e.Dh(), e), c = 0, t = u(n.g, 124), r = 0; r < n.i; ++r) + i = t[r], s.am(i.Lk()) && ++c; + return c; + } + function N5e(n, e, t) { + var i, r; + for (r = D(e, 102) && u(e, 19).Bb & hr ? new dL(e, n) : new Y4(e, n), i = 0; i < t; ++i) + iA(r); + return r; + } + function vBn(n, e, t) { + var i, r; + if (n.c) + unn(n.c, e, t); + else + for (r = new C(n.b); r.a < r.c.c.length; ) + i = u(E(r), 163), vBn(i, e, t); + } + function $5e(n, e, t) { + var i, r; + return i = u(e.of(n.a), 34), r = u(t.of(n.a), 34), i != null && r != null ? mk(i, r) : i != null ? -1 : r != null ? 1 : 0; + } + function OY(n, e) { + var t, i, r; + for (Jn(e), t = !1, i = new C(n); i.a < i.c.c.length; ) + r = E(i), e.Hc(r) && (q6(i), t = !0); + return t; + } + function jn(n) { + var e, t, i, r; + return t = (e = u(of((i = n.Rm, r = i.f, r == ke ? i : r)), 9), new _o(e, u(xs(e, e.length), 9), 0)), _s(t, n), t; + } + function KT(n) { + var e, t; + return t = u(v(n, (cn(), Do)), 88), t == (ci(), Jf) ? (e = $(R(v(n, oI))), e >= 1 ? Xr : Wf) : t; + } + function x5e(n) { + switch (u(v(n, (cn(), $l)), 223).g) { + case 1: + return new Ipn(); + case 3: + return new $pn(); + default: + return new Ppn(); + } + } + function ta(n) { + if (n.c) + ta(n.c); + else if (n.d) + throw M(new Or("Stream already terminated, can't be modified or used")); + } + function $0(n, e, t) { + var i; + return i = n.a.get(e), n.a.set(e, t === void 0 ? null : t), i === void 0 ? (++n.c, ++n.b.g) : ++n.d, i; + } + function F5e(n, e, t) { + var i, r; + for (r = n.a.ec().Kc(); r.Ob(); ) + if (i = u(r.Pb(), 10), Ek(t, u(sn(e, i.p), 16))) + return i; + return null; + } + function DY(n, e, t) { + var i; + return i = 0, e && (vg(n.a) ? i += e.f.a / 2 : i += e.f.b / 2), t && (vg(n.a) ? i += t.f.a / 2 : i += t.f.b / 2), i; + } + function B5e(n, e, t) { + var i; + i = t, !i && (i = ZV(new op(), 0)), i.Ug(IXn, 2), ERn(n.b, e, i.eh(1)), ZIe(n, e, i.eh(1)), tLe(e, i.eh(1)), i.Vg(); + } + function LY(n, e, t) { + var i, r; + return i = (B1(), r = new yE(), r), aT(i, e), lT(i, t), n && ve((!n.a && (n.a = new ti(xo, n, 5)), n.a), i), i; + } + function ox(n) { + var e; + return n.Db & 64 ? Hs(n) : (e = new ls(Hs(n)), e.a += " (identifier: ", Cr(e, n.k), e.a += ")", e.a); + } + function sx(n, e) { + var t; + t = (n.Bb & yc) != 0, e ? n.Bb |= yc : n.Bb &= -32769, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 18, t, e)); + } + function NY(n, e) { + var t; + t = (n.Bb & yc) != 0, e ? n.Bb |= yc : n.Bb &= -32769, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 18, t, e)); + } + function dm(n, e) { + var t; + t = (n.Bb & wh) != 0, e ? n.Bb |= wh : n.Bb &= -16385, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 16, t, e)); + } + function $Y(n, e) { + var t; + t = (n.Bb & hr) != 0, e ? n.Bb |= hr : n.Bb &= -65537, n.Db & 4 && !(n.Db & 1) && rt(n, new Rs(n, 1, 20, t, e)); + } + function xY(n) { + var e; + return e = K(fs, gh, 28, 2, 15, 1), n -= hr, e[0] = (n >> 10) + Sy & ui, e[1] = (n & 1023) + 56320 & ui, ws(e, 0, e.length); + } + function R5e(n) { + var e; + return e = sw(n), e > 34028234663852886e22 ? St : e < -34028234663852886e22 ? li : e; + } + function nr(n, e) { + var t; + return Vr(n) && Vr(e) && (t = n + e, Ay < t && t < vd) ? t : Y1(zve(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e)); + } + function er(n, e) { + var t; + return Vr(n) && Vr(e) && (t = n * e, Ay < t && t < vd) ? t : Y1(_Ie(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e)); + } + function bs(n, e) { + var t; + return Vr(n) && Vr(e) && (t = n - e, Ay < t && t < vd) ? t : Y1(Zxn(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e)); + } + function uc(n, e) { + var t; + return n.i || Pnn(n), t = u(Mr(n.g, e), 42), t ? new Jl(n.j, u(t.a, 17).a, u(t.b, 17).a) : (Dn(), Dn(), sr); + } + function K5e(n) { + return Y$(), _n(), !!(jBn(u(n.a, 86).j, u(n.b, 88)) || u(n.a, 86).d.e != 0 && jBn(u(n.a, 86).j, u(n.b, 88))); + } + function _5e(n, e) { + return An(e.b && e.c ? td(e.b) + "->" + td(e.c) : "e_" + mt(e), n.b && n.c ? td(n.b) + "->" + td(n.c) : "e_" + mt(n)); + } + function H5e(n, e) { + return An(e.b && e.c ? td(e.b) + "->" + td(e.c) : "e_" + mt(e), n.b && n.c ? td(n.b) + "->" + td(n.c) : "e_" + mt(n)); + } + function x0(n, e) { + return Tf(), Ks(fa), y.Math.abs(n - e) <= fa || n == e || isNaN(n) && isNaN(e) ? 0 : n < e ? -1 : n > e ? 1 : s0(isNaN(n), isNaN(e)); + } + function El() { + El = F, lU = new kC(n8, 0), Yj = new kC("POLYLINE", 1), Rv = new kC("ORTHOGONAL", 2), F3 = new kC("SPLINES", 3); + } + function _T() { + _T = F, a1n = new uL("ASPECT_RATIO_DRIVEN", 0), Oq = new uL("MAX_SCALE_DRIVEN", 1), l1n = new uL("AREA_DRIVEN", 2); + } + function q5e(n, e, t) { + var i; + try { + a6e(n, e, t); + } catch (r) { + throw r = It(r), D(r, 606) ? (i = r, M(new xJ(i))) : M(r); + } + return e; + } + function U5e(n) { + var e, t, i; + for (t = 0, i = n.length; t < i; t++) + if (n[t] == null) + throw M(new fp("at index " + t)); + return e = n, new Ku(e); + } + function Cl(n) { + var e, t, i; + for (e = new Z(), i = new C(n.j); i.a < i.c.c.length; ) + t = u(E(i), 12), nn(e, t.b); + return Se(e), new A6(e); + } + function ji(n) { + var e, t, i; + for (e = new Z(), i = new C(n.j); i.a < i.c.c.length; ) + t = u(E(i), 12), nn(e, t.e); + return Se(e), new A6(e); + } + function Qt(n) { + var e, t, i; + for (e = new Z(), i = new C(n.j); i.a < i.c.c.length; ) + t = u(E(i), 12), nn(e, t.g); + return Se(e), new A6(e); + } + function G5e(n, e) { + var t, i, r; + for (r = new de(), i = e.vc().Kc(); i.Ob(); ) + t = u(i.Pb(), 44), Ve(r, t.ld(), Pve(n, u(t.md(), 15))); + return r; + } + function z5e(n) { + var e, t; + for (t = $Ce(jo(Gb(n))).Kc(); t.Ob(); ) + if (e = Oe(t.Pb()), _5(n, e)) + return P3e((pCn(), Koe), e); + return null; + } + function fx(n, e) { + var t, i, r; + for (r = 0, i = u(e.Kb(n), 20).Kc(); i.Ob(); ) + t = u(i.Pb(), 18), on(un(v(t, (W(), zf)))) || ++r; + return r; + } + function kBn(n) { + var e, t, i, r; + for (e = new VAn(n.Rd().gc()), r = 0, i = Kp(n.Rd().Kc()); i.Ob(); ) + t = i.Pb(), I2e(e, t, Y(r++)); + return Pje(e.a); + } + function hx(n, e, t, i) { + var r, c; + return Jn(i), Jn(t), r = n.xc(e), c = r == null ? t : uCn(u(r, 15), u(t, 16)), c == null ? n.Bc(e) : n.zc(e, c), c; + } + function X5e(n, e, t, i) { + var r, c, s; + for (r = e + 1; r < t; ++r) + for (c = r; c > e && i.Ne(n[c - 1], n[c]) > 0; --c) + s = n[c], Rt(n, c, n[c - 1]), Rt(n, c - 1, s); + } + function vn(n, e) { + var t, i, r, c, s; + if (t = e.f, s1(n.c.d, t, e), e.g != null) + for (r = e.g, c = 0, s = r.length; c < s; ++c) + i = r[c], s1(n.c.e, i, e); + } + function yBn(n, e) { + var t, i; + for (t = ge(n, 0); t.b != t.d.c; ) { + if (i = J9(R(be(t))), i == e) + return; + if (i > e) { + gDn(t); + break; + } + } + _7(t, e); + } + function V5e(n, e) { + var t, i, r; + i = Pg(e), r = $(R(rw(i, (cn(), Ws)))), t = y.Math.max(0, r / 2 - 0.5), P5(e, t, 1), nn(n, new $Cn(e, t)); + } + function W5e(n, e, t) { + var i; + t.Ug("Straight Line Edge Routing", 1), t.dh(e, Frn), i = u(z(e, (Tg(), D2)), 27), rGn(n, i), t.dh(e, DS); + } + function FY(n, e) { + n.n.c.length == 0 && nn(n.n, new NM(n.s, n.t, n.i)), nn(n.b, e), pZ(u(sn(n.n, n.n.c.length - 1), 209), e), KUn(n, e); + } + function y5(n) { + var e; + this.a = (e = u(n.e && n.e(), 9), new _o(e, u(xs(e, e.length), 9), 0)), this.b = K(ki, Bn, 1, this.a.a.length, 5, 1); + } + function Jr(n) { + var e; + return Array.isArray(n) && n.Tm === Q2 ? Xa(wo(n)) + "@" + (e = mt(n) >>> 0, e.toString(16)) : n.toString(); + } + function J5e(n, e) { + return n.h == Ty && n.m == 0 && n.l == 0 ? (e && (wa = Zc(0, 0, 0)), eTn((R4(), aun))) : (e && (wa = Zc(n.l, n.m, n.h)), Zc(0, 0, 0)); + } + function Q5e(n, e) { + switch (e.g) { + case 2: + return n.b; + case 1: + return n.c; + case 4: + return n.d; + case 3: + return n.a; + default: + return !1; + } + } + function jBn(n, e) { + switch (e.g) { + case 2: + return n.b; + case 1: + return n.c; + case 4: + return n.d; + case 3: + return n.a; + default: + return !1; + } + } + function BY(n, e, t, i) { + switch (e) { + case 3: + return n.f; + case 4: + return n.g; + case 5: + return n.i; + case 6: + return n.j; + } + return IY(n, e, t, i); + } + function HT(n, e) { + if (e == n.d) + return n.e; + if (e == n.e) + return n.d; + throw M(new Gn("Node " + e + " not part of edge " + n)); + } + function Y5e(n, e) { + var t; + if (t = oy(n.Dh(), e), D(t, 102)) + return u(t, 19); + throw M(new Gn(ba + e + "' is not a valid reference")); + } + function Jo(n, e, t, i) { + if (e < 0) + ien(n, t, i); + else { + if (!t.rk()) + throw M(new Gn(ba + t.xe() + b8)); + u(t, 69).wk().Ck(n, n.hi(), e, i); + } + } + function eo(n) { + var e; + if (n.b) { + if (eo(n.b), n.b.d != n.c) + throw M(new Bo()); + } else + n.d.dc() && (e = u(n.f.c.xc(n.e), 16), e && (n.d = e)); + } + function Z5e(n) { + Bb(); + var e, t, i, r; + for (e = n.o.b, i = u(u(ot(n.r, (en(), ae)), 21), 87).Kc(); i.Ob(); ) + t = u(i.Pb(), 117), r = t.e, r.b += e; + } + function n8e(n) { + var e, t, i; + for (this.a = new rh(), i = new C(n); i.a < i.c.c.length; ) + t = u(E(i), 16), e = new uPn(), nve(e, t), fi(this.a, e); + } + function e8e(n, e) { + var t, i, r; + for (i = tSe(n, e), r = i[i.length - 1] / 2, t = 0; t < i.length; t++) + if (i[t] >= r) + return e.c + t; + return e.c + e.b.gc(); + } + function t8e(n, e) { + m4(); + var t, i, r, c; + for (i = NNn(n), r = e, F4(i, 0, i.length, r), t = 0; t < i.length; t++) + c = q7e(n, i[t], t), t != c && k5(n, t, c); + } + function lx(n, e, t) { + var i, r; + for (i = 0, r = n.length; i < r; i++) + if (R$((zn(i, n.length), n.charCodeAt(i)), e, t)) + return !0; + return !1; + } + function i8e(n, e) { + var t, i; + for (i = n.e.a.ec().Kc(); i.Ob(); ) + if (t = u(i.Pb(), 272), hje(e, t.d) || vEe(e, t.d)) + return !0; + return !1; + } + function RY(n, e, t, i, r) { + var c, s, f; + for (s = r; e.b != e.c; ) + c = u(Sp(e), 10), f = u(uc(c, i).Xb(0), 12), n.d[f.p] = s++, Kn(t.c, f); + return s; + } + function KY(n, e) { + var t, i, r, c, s, f; + for (i = 0, t = 0, c = e, s = 0, f = c.length; s < f; ++s) + r = c[s], r > 0 && (i += r, ++t); + return t > 1 && (i += n.d * (t - 1)), i; + } + function r8e(n) { + var e, t, i, r, c; + return c = tnn(n), t = Z9(n.c), i = !t, i && (r = new _a(), bf(c, "knownLayouters", r), e = new ayn(r), qi(n.c, e)), c; + } + function _Y(n) { + var e, t, i; + for (i = new Hl(), i.a += "[", e = 0, t = n.gc(); e < t; ) + Cr(i, O6(n.Vi(e))), ++e < t && (i.a += ur); + return i.a += "]", i.a; + } + function c8e(n) { + return n.e == null ? n : (!n.c && (n.c = new jF((n.f & 256) != 0, n.i, n.a, n.d, (n.f & 16) != 0, n.j, n.g, null)), n.c); + } + function u8e(n) { + return n.k != (Vn(), Vt) ? !1 : Og(new Tn(null, new p0(new ie(ce(Qt(n).a.Kc(), new En())))), new vpn()); + } + function Qo(n) { + var e, t; + return D(n, 307) ? (t = i4e(u(n, 307)), e = t, e) : D(n, 441) ? u(n, 441).a : D(n, 59) ? new Ijn(n) : new Dz(n); + } + function o8e(n) { + var e; + return n == null ? !0 : (e = n.length, e > 0 && (zn(e - 1, n.length), n.charCodeAt(e - 1) == 58) && !lx(n, D9, L9)); + } + function HY(n, e) { + var t; + return x(n) === x(e) ? !0 : D(e, 92) ? (t = u(e, 92), n.e == t.e && n.d == t.d && O3e(n, t.a)) : !1; + } + function zp(n) { + switch (en(), n.g) { + case 4: + return Xn; + case 1: + return Zn; + case 3: + return ae; + case 2: + return Wn; + default: + return sc; + } + } + function s8e(n) { + var e, t; + if (n.b) + return n.b; + for (t = Uf ? null : n.d; t; ) { + if (e = Uf ? null : t.b, e) + return e; + t = Uf ? null : t.d; + } + return a4(), xun; + } + function qY(n) { + var e, t, i; + for (i = $(R(n.a.of((He(), iO)))), t = new C(n.a.Sf()); t.a < t.c.c.length; ) + e = u(E(t), 695), izn(n, e, i); + } + function f8e(n) { + var e, t, i, r; + for (e = (n.j == null && (n.j = (O4(), r = VK.me(n), Ake(r))), n.j), t = 0, i = e.length; t < i; ++t) + ; + } + function ax(n, e) { + var t, i; + for (i = new C(e); i.a < i.c.c.length; ) + t = u(E(i), 42), nn(n.b.b, u(t.b, 86)), _N(u(t.a, 194), u(t.b, 86)); + } + function h8e(n, e, t) { + var i, r; + for (r = n.a.b, i = r.c.length; i < t; i++) + b0(r, 0, new Nc(n.a)); + $i(e, u(sn(r, r.c.length - t), 30)), n.b[e.p] = t; + } + function l8e(n, e, t, i, r) { + ko(), qs(Ls(Ds(Os(Ns(new hs(), 0), r.d.e - n), e), r.d)), qs(Ls(Ds(Os(Ns(new hs(), 0), t - r.a.e), r.a), i)); + } + function EBn(n, e) { + var t; + return n.d ? nu(n.b, e) ? u(ee(n.b, e), 47) : (t = e.dg(), Ve(n.b, e, t), t) : e.dg(); + } + function a8e(n) { + var e = n.e; + function t(i) { + return !i || i.length == 0 ? "" : " " + i.join(` + `); + } + return e && (e.stack || t(n[oB])); + } + function UY(n, e) { + switch (e) { + case 3: + return n.f != 0; + case 4: + return n.g != 0; + case 5: + return n.i != 0; + case 6: + return n.j != 0; + } + return UQ(n, e); + } + function CBn(n) { + switch (n.g) { + case 0: + return new J4n(); + case 1: + return new Z4n(); + default: + throw M(new Gn(cR + (n.f != null ? n.f : "" + n.g))); + } + } + function d8e(n) { + switch (n.g) { + case 0: + return new Q4n(); + case 1: + return new Y4n(); + default: + throw M(new Gn(GR + (n.f != null ? n.f : "" + n.g))); + } + } + function b8e(n) { + switch (n.g) { + case 1: + return new q4n(); + case 2: + return new hAn(); + default: + throw M(new Gn(GR + (n.f != null ? n.f : "" + n.g))); + } + } + function MBn(n) { + switch (n.g) { + case 0: + return new uz(); + case 1: + return new ujn(); + default: + throw M(new Gn(xS + (n.f != null ? n.f : "" + n.g))); + } + } + function dx() { + enn(); + var n, e, t; + t = lNe++ + Date.now(), n = wi(y.Math.floor(t * Iy)) & YA, e = wi(t - n * Mtn), this.a = n ^ 1502, this.b = e ^ LB; + } + function Yo() { + Yo = F, Ej = new h7(kh, 0), _8 = new h7("FIRST", 1), ya = new h7(zXn, 2), H8 = new h7("LAST", 3), xw = new h7(XXn, 4); + } + function qT() { + qT = F, wU = new EC(Mrn, 0), jdn = new EC("GROUP_DEC", 1), Cdn = new EC("GROUP_MIXED", 2), Edn = new EC("GROUP_INC", 3); + } + function w8e(n, e) { + var t, i, r, c; + e && (r = yl(e, "x"), t = new iyn(n), H4(t.a, (Jn(r), r)), c = yl(e, "y"), i = new cyn(n), U4(i.a, (Jn(c), c))); + } + function g8e(n, e) { + var t, i, r, c; + e && (r = yl(e, "x"), t = new oyn(n), _4(t.a, (Jn(r), r)), c = yl(e, "y"), i = new syn(n), q4(i.a, (Jn(c), c))); + } + function p8e(n, e) { + var t, i, r, c; + for (r = new zc(e.gc()), i = e.Kc(); i.Ob(); ) + t = i.Pb(), c = IF(n, u(t, 58)), c && Kn(r.c, c); + return r; + } + function iw(n, e, t) { + var i, r; + for (r = n.Kc(); r.Ob(); ) + if (i = r.Pb(), x(e) === x(i) || e != null && ct(e, i)) + return t && r.Qb(), !0; + return !1; + } + function TBn(n) { + var e, t, i; + return t = n.jh(), t ? (e = n.Eh(), D(e, 167) && (i = TBn(u(e, 167)), i != null) ? i + "." + t : t) : null; + } + function m8e(n) { + var e, t, i; + return n.e == 0 ? 0 : (e = n.d << 5, t = n.a[n.d - 1], n.e < 0 && (i = Oxn(n), i == n.d - 1 && (--t, t = t | 0)), e -= iy(t), e); + } + function v8e(n) { + var e, t, i; + return n < fP.length ? fP[n] : (t = n >> 5, e = n & 31, i = K(ye, _e, 28, t + 1, 15, 1), i[t] = 1 << e, new Ya(1, t + 1, i)); + } + function ABn(n, e) { + var t, i; + if (e) { + for (t = 0; t < n.i; ++t) + if (i = u(n.g[t], 378), i.mj(e)) + return !1; + return ve(n, e); + } else + return !1; + } + function GY(n, e, t) { + var i, r; + if (++n.j, t.dc()) + return !1; + for (r = t.Kc(); r.Ob(); ) + i = r.Pb(), n.qj(e, n.Zi(e, i)), ++e; + return !0; + } + function k8e(n, e, t, i) { + var r, c; + if (c = t - e, c < 3) + for (; c < 3; ) + n *= 10, ++c; + else { + for (r = 1; c > 3; ) + r *= 10, --c; + n = (n + (r >> 1)) / r | 0; + } + return i.i = n, !0; + } + function Ot(n, e) { + var t, i, r; + if (t = (n.i == null && bh(n), n.i), i = e.Lj(), i != -1) { + for (r = t.length; i < r; ++i) + if (t[i] == e) + return i; + } + return -1; + } + function y8e(n) { + var e, t, i, r, c; + for (t = u(n.g, 689), i = n.i - 1; i >= 0; --i) + for (e = t[i], r = 0; r < i; ++r) + if (c = t[r], LUn(n, e, c)) { + Jp(n, i); + break; + } + } + function zY(n) { + var e, t, i, r; + for (e = new _a(), r = new J3(n.b.Kc()); r.b.Ob(); ) + i = u(r.b.Pb(), 701), t = Fje(i), Ewe(e, e.a.length, t); + return e.a; + } + function XY(n) { + var e; + return !n.c && (n.c = new mbn()), Yt(n.d, new kbn()), kAe(n), e = lAe(n), Gt(new Tn(null, new In(n.d, 16)), new $9n(n)), e; + } + function j8e(n, e) { + e.Ug("End label post-processing", 1), Gt(ut(rc(new Tn(null, new In(n.b, 16)), new $wn()), new xwn()), new Fwn()), e.Vg(); + } + function VY(n) { + bx(), this.c = Of(A(T(INe, 1), Bn, 845, 0, [Qte])), this.b = new de(), this.a = n, Ve(this.b, EI, 1), eu(Yte, new $kn(this)); + } + function SBn(n, e, t) { + q$n(), ejn.call(this), this.a = Wa(XQn, [J, xtn], [603, 217], 0, [dP, h_], 2), this.c = new mp(), this.g = n, this.f = e, this.d = t; + } + function WY(n, e) { + this.n = Wa(Fa, [J, SB], [376, 28], 14, [e, wi(y.Math.ceil(n / 32))], 2), this.o = n, this.p = e, this.j = n - 1 >> 1, this.k = e - 1 >> 1; + } + function E8e(n) { + YM(), u(n.of((He(), Ta)), 181).Hc((io(), hO)) && (u(n.of(Ww), 181).Fc((zu(), B3)), u(n.of(Ta), 181).Mc(hO)); + } + function PBn(n) { + var e, t; + e = n.d == (Yp(), dv), t = zZ(n), e && !t || !e && t ? U(n.a, (cn(), Th), (Rh(), Uj)) : U(n.a, (cn(), Th), (Rh(), qj)); + } + function bx() { + bx = F, nC(), EI = (cn(), gb), Yte = Of(A(T(Xq, 1), Crn, 149, 0, [Tj, Ws, T2, wb, qw, IH, Av, Sv, OH, X8, M2, Bd, A2])); + } + function C8e(n, e) { + var t; + return t = u(Wr(n, qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), t.Qc(JSn(t.gc())); + } + function IBn(n, e) { + var t, i; + if (i = new Y3(n.a.ad(e, !0)), i.a.gc() <= 1) + throw M(new rp()); + return t = i.a.ec().Kc(), t.Pb(), u(t.Pb(), 40); + } + function M8e(n, e, t) { + var i, r; + return i = $(n.p[e.i.p]) + $(n.d[e.i.p]) + e.n.b + e.a.b, r = $(n.p[t.i.p]) + $(n.d[t.i.p]) + t.n.b + t.a.b, r - i; + } + function JY(n, e) { + var t; + return n.i > 0 && (e.length < n.i && (t = gk(wo(e).c, n.i), e = t), Oc(n.g, 0, e, 0, n.i)), e.length > n.i && Rt(e, n.i, null), e; + } + function UT(n) { + var e; + return n.Db & 64 ? p5(n) : (e = new ls(p5(n)), e.a += " (instanceClassName: ", Cr(e, n.D), e.a += ")", e.a); + } + function GT(n) { + var e, t, i, r; + for (r = 0, t = 0, i = n.length; t < i; t++) + e = (zn(t, n.length), n.charCodeAt(t)), e < 64 && (r = lf(r, Bs(1, e))); + return r; + } + function T8e(n, e, t) { + var i, r; + for (i = vi(t, vr), r = 0; Cc(i, 0) != 0 && r < e; r++) + i = nr(i, vi(n[r], vr)), n[r] = Ae(i), i = w0(i, 32); + return Ae(i); + } + function Fk(n, e) { + var t, i, r, c; + for (c = cu(n.e.Dh(), e), t = u(n.g, 124), r = 0; r < n.i; ++r) + if (i = t[r], c.am(i.Lk())) + return !1; + return !0; + } + function wx(n, e) { + var t, i, r; + return n.f > 0 ? (n._j(), i = e == null ? 0 : mt(e), r = (i & tt) % n.d.length, t = KHn(n, r, i, e), t != -1) : !1; + } + function OBn(n, e) { + var t, i; + n.a = nr(n.a, 1), n.c = y.Math.min(n.c, e), n.b = y.Math.max(n.b, e), n.d += e, t = e - n.f, i = n.e + t, n.f = i - n.e - t, n.e = i; + } + function QY(n, e) { + switch (e) { + case 3: + P0(n, 0); + return; + case 4: + I0(n, 0); + return; + case 5: + tu(n, 0); + return; + case 6: + iu(n, 0); + return; + } + yY(n, e); + } + function F0(n, e) { + switch (e.g) { + case 1: + return Cp(n.j, (Du(), Bon)); + case 2: + return Cp(n.j, (Du(), Kon)); + default: + return Dn(), Dn(), sr; + } + } + function YY(n) { + m0(); + var e; + switch (e = n.Pc(), e.length) { + case 0: + return qK; + case 1: + return new VL(Se(e[0])); + default: + return new PN(U5e(e)); + } + } + function DBn(n, e) { + n.Xj(); + try { + n.d.bd(n.e++, e), n.f = n.d.j, n.g = -1; + } catch (t) { + throw t = It(t), D(t, 77) ? M(new Bo()) : M(t); + } + } + function gx() { + gx = F, TU = new Avn(), Xdn = new Svn(), Vdn = new Pvn(), Wdn = new Ivn(), Jdn = new Ovn(), Qdn = new Dvn(), Ydn = new Lvn(), Zdn = new Nvn(), n0n = new $vn(); + } + function zT(n, e) { + yX(); + var t, i; + return t = I7((KE(), KE(), T8)), i = null, e == t && (i = u($c(hun, n), 624)), i || (i = new QPn(n), e == t && Dr(hun, n, i)), i; + } + function LBn(n) { + cw(); + var e; + return (n.q ? n.q : (Dn(), Dn(), Wh))._b((cn(), db)) ? e = u(v(n, db), 203) : e = u(v(Hi(n), z8), 203), e; + } + function rw(n, e) { + var t, i; + return i = null, kt(n, (cn(), yI)) && (t = u(v(n, yI), 96), t.pf(e) && (i = t.of(e))), i == null && (i = v(Hi(n), e)), i; + } + function NBn(n, e) { + var t, i, r; + return D(e, 44) ? (t = u(e, 44), i = t.ld(), r = tw(n.Rc(), i), sh(r, t.md()) && (r != null || n.Rc()._b(i))) : !1; + } + function gf(n, e) { + var t, i, r; + return n.f > 0 && (n._j(), i = e == null ? 0 : mt(e), r = (i & tt) % n.d.length, t = Fnn(n, r, i, e), t) ? t.md() : null; + } + function Vc(n, e, t) { + var i, r, c; + return n.Pj() ? (i = n.i, c = n.Qj(), Dk(n, i, e), r = n.Ij(3, null, e, i, c), t ? t.nj(r) : t = r) : Dk(n, n.i, e), t; + } + function A8e(n, e, t) { + var i, r; + return i = new ml(n.e, 4, 10, (r = e.c, D(r, 90) ? u(r, 29) : (On(), Is)), null, f1(n, e), !1), t ? t.nj(i) : t = i, t; + } + function S8e(n, e, t) { + var i, r; + return i = new ml(n.e, 3, 10, null, (r = e.c, D(r, 90) ? u(r, 29) : (On(), Is)), f1(n, e), !1), t ? t.nj(i) : t = i, t; + } + function $Bn(n) { + Bb(); + var e; + return e = new rr(u(n.e.of((He(), _2)), 8)), n.B.Hc((io(), _v)) && (e.a <= 0 && (e.a = 20), e.b <= 0 && (e.b = 20)), e; + } + function ia(n) { + dh(); + var e, t; + return t = Ae(n), e = Ae(U1(n, 32)), e != 0 ? new qOn(t, e) : t > 10 || t < 0 ? new gl(1, t) : yQn[t]; + } + function Bk(n, e) { + var t; + return Vr(n) && Vr(e) && (t = n % e, Ay < t && t < vd) ? t : Y1((Qen(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e, !0), wa)); + } + function j5(n, e) { + var t; + wDe(e), t = u(v(n, (cn(), bI)), 283), t && U(n, bI, O7e(t)), zl(n.c), zl(n.f), GJ(n.d), GJ(u(v(n, mI), 214)); + } + function P8e(n) { + var e, t, i, r; + for (i = oEe(n), Yt(i, KZn), r = n.d, r.c.length = 0, t = new C(i); t.a < t.c.c.length; ) + e = u(E(t), 466), hi(r, e.b); + } + function px(n) { + var e; + n.c != 0 && (e = u(sn(n.a, n.b), 294), e.b == 1 ? (++n.b, n.b < n.a.c.length && c9n(u(sn(n.a, n.b), 294))) : --e.b, --n.c); + } + function I8e(n) { + var e; + e = n.a; + do + e = u(fe(new ie(ce(Qt(e).a.Kc(), new En()))), 18).d.i, e.k == (Vn(), Mi) && nn(n.e, e); + while (e.k == (Vn(), Mi)); + } + function xBn(n) { + this.e = K(ye, _e, 28, n.length, 15, 1), this.c = K(so, Xh, 28, n.length, 16, 1), this.b = K(so, Xh, 28, n.length, 16, 1), this.f = 0; + } + function O8e(n) { + var e, t; + for (n.j = K(Ii, Ar, 28, n.p.c.length, 15, 1), t = new C(n.p); t.a < t.c.c.length; ) + e = u(E(t), 10), n.j[e.p] = e.o.b / n.i; + } + function D8e(n, e) { + var t, i, r, c; + for (c = e.b.b, n.a = new Ct(), n.b = K(ye, _e, 28, c, 15, 1), t = 0, r = ge(e.b, 0); r.b != r.d.c; ) + i = u(be(r), 40), i.g = t++; + } + function FBn(n, e, t) { + var i, r, c, s; + for (c = e - n.e, s = t - n.f, r = new C(n.a); r.a < r.c.c.length; ) + i = u(E(r), 172), Hk(i, i.s + c, i.t + s); + n.e = e, n.f = t; + } + function Rk(n, e) { + var t, i; + for (i = e.length, t = 0; t < i; t += 2) + Fc(n, (zn(t, e.length), e.charCodeAt(t)), (zn(t + 1, e.length), e.charCodeAt(t + 1))); + } + function L8e(n, e) { + e.Ug("Min Size Postprocessing", 1), ht(n, (_h(), Xw), y.Math.max($(R(z(n, Xw))), $(R(z(n, f9))))), e.Vg(); + } + function ZY() { + ZY = F, gdn = new f0(15), ooe = new Ni((He(), C1), gdn), foe = new Ni(qd, 15), soe = new Ni(fU, Y(0)), uoe = new Ni(x2, Gm); + } + function go() { + go = F, rE = new jC("PORTS", 0), Gd = new jC("PORT_LABELS", 1), iE = new jC("NODE_LABELS", 2), Qw = new jC("MINIMUM_SIZE", 3); + } + function XT() { + XT = F, Bj = new rL("P1_WIDTH_APPROXIMATION", 0), qI = new rL("P2_PACKING", 1), Mq = new rL("P3_WHITESPACE_ELIMINATION", 2); + } + function BBn(n) { + if (n.b == null) { + for (; n.a.Ob(); ) + if (n.b = n.a.Pb(), !u(n.b, 54).Jh()) + return !0; + return n.b = null, !1; + } else + return !0; + } + function bm(n, e, t) { + var i, r, c; + for (r = null, c = n.b; c; ) { + if (i = n.a.Ne(e, c.d), t && i == 0) + return c; + i >= 0 ? c = c.a[1] : (r = c, c = c.a[0]); + } + return r; + } + function Kk(n, e, t) { + var i, r, c; + for (r = null, c = n.b; c; ) { + if (i = n.a.Ne(e, c.d), t && i == 0) + return c; + i <= 0 ? c = c.a[0] : (r = c, c = c.a[1]); + } + return r; + } + function N8e(n, e, t, i) { + var r, c, s; + return r = !1, FOe(n.f, t, i) && (t9e(n.f, n.a[e][t], n.a[e][i]), c = n.a[e], s = c[i], c[i] = c[t], c[t] = s, r = !0), r; + } + function RBn(n, e, t) { + var i, r, c, s; + for (r = u(ee(n.b, t), 183), i = 0, s = new C(e.j); s.a < s.c.c.length; ) + c = u(E(s), 113), r[c.d.p] && ++i; + return i; + } + function nZ(n, e, t) { + var i, r; + i = u($c(Uv, e), 122), r = u($c(R9, e), 122), t ? (Dr(Uv, n, i), Dr(R9, n, r)) : (Dr(R9, n, i), Dr(Uv, n, r)); + } + function KBn(n, e) { + var t, i, r, c; + return t = e >> 5, e &= 31, r = n.d + t + (e == 0 ? 0 : 1), i = K(ye, _e, 28, r, 15, 1), Dye(i, n.a, t, e), c = new Ya(n.e, r, i), J6(c), c; + } + function $8e(n, e) { + var t, i, r; + for (i = new ie(ce(Qt(n).a.Kc(), new En())); pe(i); ) + if (t = u(fe(i), 18), r = t.d.i, r.c == e) + return !1; + return !0; + } + function eZ(n, e, t) { + var i, r, c, s, f; + return s = n.k, f = e.k, i = t[s.g][f.g], r = R(rw(n, i)), c = R(rw(e, i)), y.Math.max((Jn(r), r), (Jn(c), c)); + } + function x8e() { + return Error.stackTraceLimit > 0 ? (y.Error.stackTraceLimit = Error.stackTraceLimit = 64, !0) : "stack" in new Error(); + } + function F8e(n, e) { + return Tf(), Tf(), Ks(fa), (y.Math.abs(n - e) <= fa || n == e || isNaN(n) && isNaN(e) ? 0 : n < e ? -1 : n > e ? 1 : s0(isNaN(n), isNaN(e))) > 0; + } + function tZ(n, e) { + return Tf(), Tf(), Ks(fa), (y.Math.abs(n - e) <= fa || n == e || isNaN(n) && isNaN(e) ? 0 : n < e ? -1 : n > e ? 1 : s0(isNaN(n), isNaN(e))) < 0; + } + function _Bn(n, e) { + return Tf(), Tf(), Ks(fa), (y.Math.abs(n - e) <= fa || n == e || isNaN(n) && isNaN(e) ? 0 : n < e ? -1 : n > e ? 1 : s0(isNaN(n), isNaN(e))) <= 0; + } + function mx(n, e) { + for (var t = 0; !e[t] || e[t] == ""; ) + t++; + for (var i = e[t++]; t < e.length; t++) + !e[t] || e[t] == "" || (i += n + e[t]); + return i; + } + function HBn(n) { + var e, t; + return e = u(Un(n.a, 4), 129), e != null ? (t = K(jU, MK, 424, e.length, 0, 1), Oc(e, 0, t, 0, e.length), t) : Ooe; + } + function qBn(n) { + var e, t, i, r, c; + if (n == null) + return null; + for (c = new Z(), t = z$(n), i = 0, r = t.length; i < r; ++i) + e = t[i], nn(c, Bc(e, !0)); + return c; + } + function UBn(n) { + var e, t, i, r, c; + if (n == null) + return null; + for (c = new Z(), t = z$(n), i = 0, r = t.length; i < r; ++i) + e = t[i], nn(c, Bc(e, !0)); + return c; + } + function GBn(n) { + var e, t, i, r, c; + if (n == null) + return null; + for (c = new Z(), t = z$(n), i = 0, r = t.length; i < r; ++i) + e = t[i], nn(c, Bc(e, !0)); + return c; + } + function zBn(n, e) { + var t, i, r; + if (n.c) + P0(n.c, e); + else + for (t = e - ao(n), r = new C(n.a); r.a < r.c.c.length; ) + i = u(E(r), 163), zBn(i, ao(i) + t); + } + function XBn(n, e) { + var t, i, r; + if (n.c) + I0(n.c, e); + else + for (t = e - Pu(n), r = new C(n.d); r.a < r.c.c.length; ) + i = u(E(r), 163), XBn(i, Pu(i) + t); + } + function ws(n, e, t) { + var i, r, c, s; + for (c = e + t, Fi(e, c, n.length), s = "", r = e; r < c; ) + i = y.Math.min(r + 1e4, c), s += Zwe(n.slice(r, i)), r = i; + return s; + } + function iZ(n) { + switch (n.g) { + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + return !0; + default: + return !1; + } + } + function o1() { + o1 = F, J_ = new f7(uin, 0), Lsn = new f7(WXn, 1), Q_ = new f7(sR, 2), pv = new f7(iin, 3), gv = new f7("GREEDY_MODEL_ORDER", 4); + } + function lh() { + lh = F, k1 = new gC(kh, 0), Hhn = new gC("NODES_AND_EDGES", 1), HH = new gC("PREFER_EDGES", 2), qH = new gC("PREFER_NODES", 3); + } + function rZ(n, e, t, i, r, c) { + this.a = n, this.c = e, this.b = t, this.f = i, this.d = r, this.e = c, this.c > 0 && this.b > 0 && (this.g = cM(this.c, this.b, this.a)); + } + function B8e(n, e) { + var t = n.a, i; + e = String(e), t.hasOwnProperty(e) && (i = t[e]); + var r = (K$(), WK)[typeof i], c = r ? r(i) : gY(typeof i); + return c; + } + function wm(n) { + var e, t, i; + if (i = null, e = Eh in n.a, t = !e, t) + throw M(new eh("Every element must have an id.")); + return i = Zp(dl(n, Eh)), i; + } + function B0(n) { + var e, t; + for (t = d_n(n), e = null; n.c == 2; ) + Ze(n), e || (e = (nt(), nt(), new S6(2)), pd(e, t), t = e), t.Jm(d_n(n)); + return t; + } + function VT(n, e) { + var t, i, r; + return n._j(), i = e == null ? 0 : mt(e), r = (i & tt) % n.d.length, t = Fnn(n, r, i, e), t ? (W$n(n, t), t.md()) : null; + } + function VBn(n, e) { + return n.e > e.e ? 1 : n.e < e.e ? -1 : n.d > e.d ? n.e : n.d < e.d ? -e.e : n.e * lY(n.a, e.a, n.d); + } + function WBn(n) { + return n >= 48 && n < 48 + y.Math.min(10, 10) ? n - 48 : n >= 97 && n < 97 ? n - 97 + 10 : n >= 65 && n < 65 ? n - 65 + 10 : -1; + } + function R8e(n, e) { + if (e.c == n) + return e.d; + if (e.d == n) + return e.c; + throw M(new Gn("Input edge is not connected to the input port.")); + } + function K8e(n) { + if (JT(nv, n)) + return _n(), ov; + if (JT(cK, n)) + return _n(), ga; + throw M(new Gn("Expecting true or false")); + } + function cZ(n) { + switch (typeof n) { + case nB: + return t1(n); + case btn: + return pp(n); + case i3: + return PAn(n); + default: + return n == null ? 0 : l0(n); + } + } + function ah(n, e) { + if (n.a < 0) + throw M(new Or("Did not call before(...) or after(...) before calling add(...).")); + return ZX(n, n.a, e), n; + } + function uZ(n) { + return $M(), D(n, 162) ? u(ee(hE, TQn), 295).Rg(n) : nu(hE, wo(n)) ? u(ee(hE, wo(n)), 295).Rg(n) : null; + } + function ru(n) { + var e, t; + return n.Db & 32 || (t = (e = u(Un(n, 16), 29), se(e || n.ii()) - se(n.ii())), t != 0 && Xp(n, 32, K(ki, Bn, 1, t, 5, 1))), n; + } + function Xp(n, e, t) { + var i; + n.Db & e ? t == null ? ECe(n, e) : (i = Rx(n, e), i == -1 ? n.Eb = t : Rt(cd(n.Eb), i, t)) : t != null && zTe(n, e, t); + } + function _8e(n, e, t, i) { + var r, c; + e.c.length != 0 && (r = xMe(t, i), c = FEe(e), Gt(fT(new Tn(null, new In(c, 1)), new N3n()), new TIn(n, t, r, i))); + } + function H8e(n, e) { + var t, i, r, c; + return i = n.a.length - 1, t = e - n.b & i, c = n.c - e & i, r = n.c - n.b & i, CAn(t < r), t >= c ? (K6e(n, e), -1) : (R6e(n, e), 1); + } + function WT(n) { + var e, t, i; + if (i = n.Jh(), !i) + for (e = 0, t = n.Ph(); t; t = t.Ph()) { + if (++e > PB) + return t.Qh(); + if (i = t.Jh(), i || t == n) + break; + } + return i; + } + function JBn(n, e) { + var t; + return x(e) === x(n) ? !0 : !D(e, 21) || (t = u(e, 21), t.gc() != n.gc()) ? !1 : n.Ic(t); + } + function q8e(n, e) { + return n.e < e.e ? -1 : n.e > e.e ? 1 : n.f < e.f ? -1 : n.f > e.f ? 1 : mt(n) - mt(e); + } + function JT(n, e) { + return Jn(n), e == null ? !1 : An(n, e) ? !0 : n.length == e.length && An(n.toLowerCase(), e.toLowerCase()); + } + function Ml(n) { + var e, t; + return Cc(n, -129) > 0 && Cc(n, 128) < 0 ? (nPn(), e = Ae(n) + 128, t = vun[e], !t && (t = vun[e] = new yG(n)), t) : new yG(n); + } + function dd() { + dd = F, Ow = new aC(kh, 0), Lon = new aC("INSIDE_PORT_SIDE_GROUPS", 1), P_ = new aC("GROUP_MODEL_ORDER", 2), I_ = new aC(iin, 3); + } + function U8e(n) { + var e; + return n.b || Fhe(n, (e = xae(n.e, n.a), !e || !An(cK, gf((!e.b && (e.b = new lo((On(), ar), pc, e)), e.b), "qualified")))), n.c; + } + function G8e(n, e) { + var t, i; + for (t = (zn(e, n.length), n.charCodeAt(e)), i = e + 1; i < n.length && (zn(i, n.length), n.charCodeAt(i) == t); ) + ++i; + return i - e; + } + function z8e(n, e) { + (!e && console.groupCollapsed != null ? console.groupCollapsed : console.group != null ? console.group : console.log).call(console, n); + } + function X8e(n, e, t, i) { + i == n, u(t.b, 68), u(t.b, 68), u(i.b, 68), u(i.b, 68).c.b, VJ(i, e, n); + } + function V8e(n) { + var e, t; + for (e = new C(n.g); e.a < e.c.c.length; ) + u(E(e), 568); + t = new lqn(n.g, $(n.a), n.c), jDe(t), n.g = t.b, n.d = t.a; + } + function QBn(n, e, t) { + var i, r, c; + for (c = new C(t.a); c.a < c.c.c.length; ) + r = u(E(c), 225), i = new LC(u(ee(n.a, r.b), 68)), nn(e.a, i), QBn(n, i, r); + } + function W8e(n, e, t) { + var i, r, c; + return i = u(L(no(n.a), e), 89), c = (r = i.c, r || (On(), Zf)), (c.Vh() ? ea(n.b, u(c, 54)) : c) == t ? BA(i) : K4(i, t), c; + } + function oZ(n, e, t) { + e.b = y.Math.max(e.b, -t.a), e.c = y.Math.max(e.c, t.a - n.a), e.d = y.Math.max(e.d, -t.b), e.a = y.Math.max(e.a, t.b - n.b); + } + function sZ(n, e, t) { + this.c = n, this.f = new Z(), this.e = new Li(), this.j = new fW(), this.n = new fW(), this.b = e, this.g = new Ho(e.c, e.d, e.b, e.a), this.a = t; + } + function vx(n) { + var e, t, i, r; + for (this.a = new rh(), this.d = new ni(), this.e = 0, t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], !this.f && (this.f = e), _N(this, e); + } + function YBn(n) { + dh(), n.length == 0 ? (this.e = 0, this.d = 1, this.a = A(T(ye, 1), _e, 28, 15, [0])) : (this.e = 1, this.d = n.length, this.a = n, J6(this)); + } + function E5(n, e, t) { + ejn.call(this), this.a = K(XQn, xtn, 217, (wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc])).length, 0, 1), this.b = n, this.d = e, this.c = t; + } + function J8e(n) { + var e, t, i, r, c, s; + for (s = u(v(n, (W(), st)), 12), U(s, jv, n.i.n.b), e = hh(n.e), i = e, r = 0, c = i.length; r < c; ++r) + t = i[r], Oi(t, s); + } + function Q8e(n) { + var e, t, i, r, c, s; + for (t = u(v(n, (W(), st)), 12), U(t, jv, n.i.n.b), e = hh(n.g), r = e, c = 0, s = r.length; c < s; ++c) + i = r[c], Zi(i, t); + } + function Y8e(n, e) { + NN(); + var t, i; + for (i = new ie(ce(Cl(n).a.Kc(), new En())); pe(i); ) + if (t = u(fe(i), 18), t.d.i == e || t.c.i == e) + return t; + return null; + } + function ZBn(n, e) { + var t, i; + return t = e.qi(n.a), t && (i = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), Qe)), i != null) ? i : e.xe(); + } + function Z8e(n, e) { + var t, i; + return t = e.qi(n.a), t && (i = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), Qe)), i != null) ? i : e.xe(); + } + function n9e(n, e) { + var t, i; + return t = Ec(n.a.c.p, e.a.c.p), t != 0 ? t : (i = Ec(n.a.d.i.p, e.a.d.i.p), i != 0 ? i : Ec(e.a.d.p, n.a.d.p)); + } + function e9e(n, e) { + var t, i, r, c; + for (i = 0, r = e.gc(); i < r; ++i) + t = e.Tl(i), D(t, 102) && u(t, 19).Bb & yc && (c = e.Ul(i), c != null && IF(n, u(c, 58))); + } + function nRn(n, e) { + var t, i, r; + if (nn(mP, n), e.Fc(n), t = u(ee(m_, n), 21), t) + for (r = t.Kc(); r.Ob(); ) + i = u(r.Pb(), 27), qr(mP, i, 0) != -1 || nRn(i, e); + } + function t9e(n, e, t) { + var i, r; + eF(n.e, e, t, (en(), Wn)), eF(n.i, e, t, Zn), n.a && (r = u(v(e, (W(), st)), 12), i = u(v(t, st), 12), KN(n.g, r, i)); + } + function eRn(n, e, t) { + var i, r, c; + i = e.c.p, c = e.p, n.b[i][c] = new VIn(n, e), t && (n.a[i][c] = new B7n(e), r = u(v(e, (W(), sb)), 10), r && Pn(n.d, r, e)); + } + function i9e(n, e, t) { + var i, r, c, s; + return c = e.j, s = t.j, c != s ? c.g - s.g : (i = n.f[e.p], r = n.f[t.p], i == 0 && r == 0 ? 0 : i == 0 ? -1 : r == 0 ? 1 : bt(i, r)); + } + function r9e() { + var n; + return cP != 0 && (n = Date.now(), n - lQn > 2e3 && (lQn = n, uP = y.setTimeout(Hhe, 10))), cP++ == 0 ? (rme((dz(), fun)), !0) : !1; + } + function c9e(n, e, t) { + var i; + (LQn ? (s8e(n), !0) : NQn || xQn ? (a4(), !0) : $Qn && (a4(), !1)) && (i = new dSn(e), i.b = t, dje(n, i)); + } + function kx(n, e) { + var t; + t = !n.A.Hc((go(), Gd)) || n.q == (Di(), Uc), n.u.Hc((zu(), Fl)) ? t ? VDe(n, e) : GGn(n, e) : n.u.Hc(Ia) && (t ? bDe(n, e) : uzn(n, e)); + } + function tRn(n) { + var e; + x(z(n, (He(), R2))) === x((jl(), uO)) && (At(n) ? (e = u(z(At(n), R2), 346), ht(n, R2, e)) : ht(n, R2, E9)); + } + function u9e(n) { + var e, t; + return kt(n.d.i, (cn(), Cv)) ? (e = u(v(n.c.i, Cv), 17), t = u(v(n.d.i, Cv), 17), Ec(e.a, t.a) > 0) : !1; + } + function iRn(n, e, t) { + return new Ho(y.Math.min(n.a, e.a) - t / 2, y.Math.min(n.b, e.b) - t / 2, y.Math.abs(n.a - e.a) + t, y.Math.abs(n.b - e.b) + t); + } + function rRn(n) { + var e; + this.d = new Z(), this.j = new Li(), this.g = new Li(), e = n.g.b, this.f = u(v(Hi(e), (cn(), Do)), 88), this.e = $(R(nA(e, qw))); + } + function cRn(n) { + this.d = new Z(), this.e = new Ql(), this.c = K(ye, _e, 28, (en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn])).length, 15, 1), this.b = n; + } + function fZ(n, e, t) { + var i; + switch (i = t[n.g][e], n.g) { + case 1: + case 3: + return new V(0, i); + case 2: + case 4: + return new V(i, 0); + default: + return null; + } + } + function uRn(n, e, t) { + var i, r; + r = u(z7(e.f), 205); + try { + r.rf(n, t), lIn(e.f, r); + } catch (c) { + throw c = It(c), D(c, 103) ? (i = c, M(i)) : M(c); + } + } + function oRn(n, e, t) { + var i, r, c, s, f, h; + return i = null, f = ntn(z4(), e), c = null, f && (r = null, h = Yen(f, t), s = null, h != null && (s = n.qf(f, h)), r = s, c = r), i = c, i; + } + function yx(n, e, t, i) { + var r; + if (r = n.length, e >= r) + return r; + for (e = e > 0 ? e : 0; e < r && !R$((zn(e, n.length), n.charCodeAt(e)), t, i); e++) + ; + return e; + } + function Ff(n, e) { + var t, i; + for (i = n.c.length, e.length < i && (e = qE(new Array(i), e)), t = 0; t < i; ++t) + Rt(e, t, n.c[t]); + return e.length > i && Rt(e, i, null), e; + } + function sRn(n, e) { + var t, i; + for (i = n.a.length, e.length < i && (e = qE(new Array(i), e)), t = 0; t < i; ++t) + Rt(e, t, n.a[t]); + return e.length > i && Rt(e, i, null), e; + } + function gm(n, e) { + var t, i; + if (++n.j, e != null && (t = (i = n.a.Cb, D(i, 99) ? u(i, 99).th() : null), lCe(e, t))) { + Xp(n.a, 4, t); + return; + } + Xp(n.a, 4, u(e, 129)); + } + function o9e(n) { + var e; + if (n == null) + return null; + if (e = aMe(Bc(n, !0)), e == null) + throw M(new kD("Invalid hexBinary value: '" + n + "'")); + return e; + } + function QT(n, e, t) { + var i; + e.a.length > 0 && (nn(n.b, new PSn(e.a, t)), i = e.a.length, 0 < i ? e.a = qo(e.a, 0, 0) : 0 > i && (e.a += OTn(K(fs, gh, 28, -i, 15, 1)))); + } + function fRn(n, e, t) { + var i, r, c; + if (!t[e.d]) + for (t[e.d] = !0, r = new C(xg(e)); r.a < r.c.c.length; ) + i = u(E(r), 218), c = HT(i, e), fRn(n, c, t); + } + function s1(n, e, t) { + var i, r, c; + return r = u(ee(n.e, e), 400), r ? (c = gV(r, t), LTn(n, r), c) : (i = new GV(n, e, t), Ve(n.e, e, i), cOn(i), null); + } + function s9e(n, e, t, i) { + var r, c, s; + return r = new ml(n.e, 1, 13, (s = e.c, s || (On(), Zf)), (c = t.c, c || (On(), Zf)), f1(n, e), !1), i ? i.nj(r) : i = r, i; + } + function jx() { + return VA(), A(T(kYn, 1), G, 164, 0, [mYn, pYn, vYn, fYn, sYn, hYn, dYn, aYn, lYn, gYn, wYn, bYn, uYn, cYn, oYn, iYn, tYn, rYn, nYn, ZQn, eYn, l_]); + } + function pm(n) { + switch (n.g) { + case 4: + return new V(0, -1); + case 1: + return new V(1, 0); + case 2: + return new V(-1, 0); + default: + return new V(0, 1); + } + } + function Ex(n) { + switch (n.g) { + case 1: + return ci(), us; + case 4: + return ci(), Br; + case 2: + return ci(), Xr; + case 3: + return ci(), Wf; + } + return ci(), Jf; + } + function f9e(n) { + var e; + switch (e = n.hj(null), e) { + case 10: + return 0; + case 15: + return 1; + case 14: + return 2; + case 11: + return 3; + case 21: + return 4; + } + return -1; + } + function pf() { + pf = F, xn = new g7("PARENTS", 0), pi = new g7("NODES", 1), Ph = new g7("EDGES", 2), Kd = new g7("PORTS", 3), E1 = new g7("LABELS", 4); + } + function h9e(n, e, t) { + var i; + switch (i = t.q.getFullYear() - ha + ha, i < 0 && (i = -i), e) { + case 1: + n.a += i; + break; + case 2: + Bh(n, i % 100, 2); + break; + default: + Bh(n, i, e); + } + } + function ge(n, e) { + var t, i; + if (zb(e, n.b), e >= n.b >> 1) + for (i = n.c, t = n.b; t > e; --t) + i = i.b; + else + for (i = n.a.a, t = 0; t < e; ++t) + i = i.a; + return new aSn(n, e, i); + } + function YT() { + YT = F, o_ = new Uz("NUM_OF_EXTERNAL_SIDES_THAN_NUM_OF_EXTENSIONS_LAST", 0), Bun = new Uz("CORNER_CASES_THAN_SINGLE_SIDE_LAST", 1); + } + function hRn(n) { + this.b = new Z(), this.e = new Z(), this.d = n, this.a = !s4(ut(new Tn(null, new p0(new Df(n.b))), new Z3(new kpn()))).Bd((Va(), v3)); + } + function lRn(n, e) { + var t, i, r, c; + for (t = 0, r = new C(e.a); r.a < r.c.c.length; ) + i = u(E(r), 10), c = i.o.a + i.d.c + i.d.b + n.j, t = y.Math.max(t, c); + return t; + } + function aRn(n, e) { + var t, i, r; + r = e.d.i, i = r.k, !(i == (Vn(), Vt) || i == Gf) && (t = new ie(ce(Qt(r).a.Kc(), new En())), pe(t) && Ve(n.k, e, u(fe(t), 18))); + } + function l9e(n, e) { + return kl(), bt((n.a.b == 0 ? new V(n.c.e.a, n.c.e.b) : u(p4(n.a), 8)).b, (e.a.b == 0 ? new V(e.c.e.a, e.c.e.b) : u(p4(e.a), 8)).b); + } + function a9e(n, e) { + return kl(), bt((n.a.b == 0 ? new V(n.c.e.a, n.c.e.b) : u(p4(n.a), 8)).a, (e.a.b == 0 ? new V(e.c.e.a, e.c.e.b) : u(p4(e.a), 8)).a); + } + function d9e(n, e) { + return kl(), bt((n.a.b == 0 ? new V(n.b.e.a, n.b.e.b) : u($s(n.a), 8)).a, (e.a.b == 0 ? new V(e.b.e.a, e.b.e.b) : u($s(e.a), 8)).a); + } + function b9e(n, e) { + return kl(), bt((n.a.b == 0 ? new V(n.b.e.a, n.b.e.b) : u($s(n.a), 8)).b, (e.a.b == 0 ? new V(e.b.e.a, e.b.e.b) : u($s(e.a), 8)).b); + } + function Bg() { + Bg = F, Sa = new m7("DISTRIBUTED", 0), eE = new m7("JUSTIFIED", 1), ddn = new m7("BEGIN", 2), C9 = new m7(qm, 3), bdn = new m7("END", 4); + } + function Cx(n, e) { + var t, i, r; + return i = $n(n.Dh(), e), t = e - n.ji(), t < 0 ? (r = n.Ih(i), r >= 0 ? n.Wh(r) : hF(n, i)) : t < 0 ? hF(n, i) : u(i, 69).wk().Bk(n, n.hi(), t); + } + function dRn(n) { + var e, t, i; + for (i = (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), n.o), t = i.c.Kc(); t.e != t.i.gc(); ) + e = u(t.Yj(), 44), e.md(); + return rk(i); + } + function rn(n) { + var e; + if (D(n.a, 4)) { + if (e = uZ(n.a), e == null) + throw M(new Or($Vn + n.b + "'. " + NVn + (ll(lE), lE.k) + wcn)); + return e; + } else + return n.a; + } + function w9e(n, e) { + var t, i; + if (n.j.length != e.j.length) + return !1; + for (t = 0, i = n.j.length; t < i; t++) + if (!An(n.j[t], e.j[t])) + return !1; + return !0; + } + function ue(n) { + var e; + try { + return e = n.i.Xb(n.e), n.Xj(), n.g = n.e++, e; + } catch (t) { + throw t = It(t), D(t, 77) ? (n.Xj(), M(new nc())) : M(t); + } + } + function Mx(n) { + var e; + try { + return e = n.c.Vi(n.e), n.Xj(), n.g = n.e++, e; + } catch (t) { + throw t = It(t), D(t, 77) ? (n.Xj(), M(new nc())) : M(t); + } + } + function ZT(n) { + var e, t, i, r; + for (r = 0, t = 0, i = n.length; t < i; t++) + e = (zn(t, n.length), n.charCodeAt(t)), e >= 64 && e < 128 && (r = lf(r, Bs(1, e - 64))); + return r; + } + function nA(n, e) { + var t, i; + return i = null, kt(n, (He(), $3)) && (t = u(v(n, $3), 96), t.pf(e) && (i = t.of(e))), i == null && Hi(n) && (i = v(Hi(n), e)), i; + } + function g9e(n, e) { + var t; + return t = u(v(n, (cn(), Fr)), 75), yL(e, NZn) ? t ? vo(t) : (t = new Tu(), U(n, Fr, t)) : t && U(n, Fr, null), t; + } + function C5() { + C5 = F, don = (He(), Uan), g_ = Can, LYn = x2, aon = C1, FYn = (aA(), Gun), xYn = qun, BYn = Xun, $Yn = Hun, NYn = (Q$(), fon), w_ = IYn, lon = OYn, pP = DYn; + } + function eA(n) { + switch (xz(), this.c = new Z(), this.d = n, n.g) { + case 0: + case 2: + this.a = UW(Don), this.b = St; + break; + case 3: + case 1: + this.a = Don, this.b = li; + } + } + function p9e(n) { + var e; + Ep(u(v(n, (cn(), Ut)), 101)) && (e = n.b, eHn((Ln(0, e.c.length), u(e.c[0], 30))), eHn(u(sn(e, e.c.length - 1), 30))); + } + function m9e(n, e) { + e.Ug("Self-Loop post-processing", 1), Gt(ut(ut(rc(new Tn(null, new In(n.b, 16)), new f2n()), new h2n()), new l2n()), new a2n()), e.Vg(); + } + function bRn(n, e, t) { + var i, r; + if (n.c) + tu(n.c, n.c.i + e), iu(n.c, n.c.j + t); + else + for (r = new C(n.b); r.a < r.c.c.length; ) + i = u(E(r), 163), bRn(i, e, t); + } + function v9e(n) { + var e; + if (n == null) + return null; + if (e = rLe(Bc(n, !0)), e == null) + throw M(new kD("Invalid base64Binary value: '" + n + "'")); + return e; + } + function Zo(n, e) { + var t; + t = n.fd(e); + try { + return t.Pb(); + } catch (i) { + throw i = It(i), D(i, 112) ? M(new Ir("Can't get element " + e)) : M(i); + } + } + function wRn(n, e) { + var t, i, r; + for (t = n.o, r = u(u(ot(n.r, e), 21), 87).Kc(); r.Ob(); ) + i = u(r.Pb(), 117), i.e.a = j7e(i, t.a), i.e.b = t.b * $(R(i.b.of(bP))); + } + function k9e(n, e) { + var t, i, r; + for (r = new zc(e.gc()), i = e.Kc(); i.Ob(); ) + t = u(i.Pb(), 293), t.c == t.f ? Em(n, t, t.c) : qje(n, t) || Kn(r.c, t); + return r; + } + function gRn(n) { + var e; + return e = new x1(), e.a += "n", n.k != (Vn(), Vt) && Re(Re((e.a += "(", e), SL(n.k).toLowerCase()), ")"), Re((e.a += "_", e), qk(n)), e.a; + } + function y9e(n, e) { + var t, i, r, c; + return r = n.k, t = $(R(v(n, (W(), fb)))), c = e.k, i = $(R(v(e, fb))), c != (Vn(), Zt) ? -1 : r != Zt ? 1 : t == i ? 0 : t < i ? -1 : 1; + } + function j9e(n, e) { + var t, i; + return t = u(u(ee(n.g, e.a), 42).a, 68), i = u(u(ee(n.g, e.b), 42).a, 68), J1(e.a, e.b) - J1(e.a, NX(t.b)) - J1(e.b, NX(i.b)); + } + function pRn(n, e) { + var t; + switch (t = u(Mr(n.b, e), 127).n, e.g) { + case 1: + n.t >= 0 && (t.d = n.t); + break; + case 3: + n.t >= 0 && (t.a = n.t); + } + n.C && (t.b = n.C.b, t.c = n.C.c); + } + function M5() { + M5 = F, $hn = new l7(Mrn, 0), KH = new l7(sR, 1), _H = new l7("LINEAR_SEGMENTS", 2), W8 = new l7("BRANDES_KOEPF", 3), J8 = new l7(fVn, 4); + } + function T5() { + T5 = F, fj = new hC(eS, 0), wP = new hC(HB, 1), gP = new hC(qB, 2), hj = new hC(UB, 3), fj.a = !1, wP.a = !0, gP.a = !1, hj.a = !0; + } + function Vp() { + Vp = F, uj = new fC(eS, 0), cj = new fC(HB, 1), oj = new fC(qB, 2), sj = new fC(UB, 3), uj.a = !1, cj.a = !0, oj.a = !1, sj.a = !0; + } + function Wp(n, e, t, i) { + var r; + return t >= 0 ? n.Sh(e, t, i) : (n.Ph() && (i = (r = n.Fh(), r >= 0 ? n.Ah(i) : n.Ph().Th(n, -1 - r, null, i))), n.Ch(e, t, i)); + } + function hZ(n, e) { + switch (e) { + case 7: + !n.e && (n.e = new Nn(Wt, n, 7, 4)), me(n.e); + return; + case 8: + !n.d && (n.d = new Nn(Wt, n, 8, 5)), me(n.d); + return; + } + QY(n, e); + } + function ht(n, e, t) { + return t == null ? (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), VT(n.o, e)) : (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), zk(n.o, e, t)), n; + } + function mRn(n, e) { + Dn(); + var t, i, r, c; + for (t = n, c = e, D(n, 21) && !D(e, 21) && (t = e, c = n), r = t.Kc(); r.Ob(); ) + if (i = r.Pb(), c.Hc(i)) + return !1; + return !0; + } + function E9e(n, e, t, i) { + if (e.a < i.a) + return !0; + if (e.a == i.a) { + if (e.b < i.b) + return !0; + if (e.b == i.b && n.b > t.b) + return !0; + } + return !1; + } + function Tx(n, e) { + return Si(n) ? !!rQn[e] : n.Sm ? !!n.Sm[e] : $b(n) ? !!iQn[e] : Nb(n) ? !!tQn[e] : !1; + } + function C9e(n) { + var e; + e = n.a; + do + e = u(fe(new ie(ce(ji(e).a.Kc(), new En()))), 18).c.i, e.k == (Vn(), Mi) && n.b.Fc(e); + while (e.k == (Vn(), Mi)); + n.b = Qo(n.b); + } + function vRn(n, e) { + var t, i, r; + for (r = n, i = new ie(ce(ji(e).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), t.c.i.c && (r = y.Math.max(r, t.c.i.c.p)); + return r; + } + function M9e(n, e) { + var t, i, r; + for (r = 0, i = u(u(ot(n.r, e), 21), 87).Kc(); i.Ob(); ) + t = u(i.Pb(), 117), r += t.d.d + t.b.Mf().b + t.d.a, i.Ob() && (r += n.w); + return r; + } + function T9e(n, e) { + var t, i, r; + for (r = 0, i = u(u(ot(n.r, e), 21), 87).Kc(); i.Ob(); ) + t = u(i.Pb(), 117), r += t.d.b + t.b.Mf().a + t.d.c, i.Ob() && (r += n.w); + return r; + } + function kRn(n) { + var e, t, i, r; + if (i = 0, r = aw(n), r.c.length == 0) + return 1; + for (t = new C(r); t.a < t.c.c.length; ) + e = u(E(t), 27), i += kRn(e); + return i; + } + function A9e(n) { + var e, t, i; + for (i = n.c.a, n.p = (Se(i), new _u(i)), t = new C(i); t.a < t.c.c.length; ) + e = u(E(t), 10), e.p = hEe(e).a; + Dn(), Yt(n.p, new Wpn()); + } + function S9e(n, e, t) { + var i, r, c, s; + return i = n.dd(e), i != -1 && (n.Pj() ? (c = n.Qj(), s = tM(n, i), r = n.Ij(4, s, null, i, c), t ? t.nj(r) : t = r) : tM(n, i)), t; + } + function cr(n, e, t) { + var i, r, c, s; + return i = n.dd(e), i != -1 && (n.Pj() ? (c = n.Qj(), s = Jp(n, i), r = n.Ij(4, s, null, i, c), t ? t.nj(r) : t = r) : Jp(n, i)), t; + } + function P9e(n, e, t, i) { + var r, c, s; + t.Xh(e) && (br(), a$(e) ? (r = u(t.Mh(e), 160), e9e(n, r)) : (c = (s = e, s ? u(i, 54).gi(s) : null), c && Ofe(t.Mh(e), c))); + } + function tA(n, e, t, i) { + var r, c, s; + return c = $n(n.Dh(), e), r = e - n.ji(), r < 0 ? (s = n.Ih(c), s >= 0 ? n.Lh(s, t, !0) : H0(n, c, t)) : u(c, 69).wk().yk(n, n.hi(), r, t, i); + } + function I9e(n, e, t, i) { + var r, c; + c = e.pf((He(), K2)) ? u(e.of(K2), 21) : n.j, r = b5e(c), r != (VA(), l_) && (t && !iZ(r) || wnn(dMe(n, r, i), e)); + } + function O9e(n) { + switch (n.g) { + case 1: + return N0(), rj; + case 3: + return N0(), ij; + case 2: + return N0(), d_; + case 4: + return N0(), a_; + default: + return null; + } + } + function D9e(n, e, t) { + if (n.e) + switch (n.b) { + case 1: + jge(n.c, e, t); + break; + case 0: + Ege(n.c, e, t); + } + else + _Dn(n.c, e, t); + n.a[e.p][t.p] = n.c.i, n.a[t.p][e.p] = n.c.e; + } + function yRn(n) { + var e, t; + if (n == null) + return null; + for (t = K(Qh, J, 199, n.length, 0, 2), e = 0; e < t.length; e++) + t[e] = u(I3e(n[e], n[e].length), 199); + return t; + } + function iA(n) { + var e; + if (W$(n)) + return aM(n), n.ul() && (e = L5(n.e, n.b, n.c, n.a, n.j), n.j = e), n.g = n.a, ++n.a, ++n.c, n.i = 0, n.j; + throw M(new nc()); + } + function L9e(n, e) { + var t, i, r, c; + return c = n.o, t = n.p, c < t ? c *= c : t *= t, i = c + t, c = e.o, t = e.p, c < t ? c *= c : t *= t, r = c + t, i < r ? -1 : i == r ? 0 : 1; + } + function f1(n, e) { + var t, i, r; + if (r = tKn(n, e), r >= 0) + return r; + if (n.ol()) { + for (i = 0; i < n.i; ++i) + if (t = n.pl(u(n.g[i], 58)), x(t) === x(e)) + return i; + } + return -1; + } + function Rg(n, e, t) { + var i, r; + if (r = n.gc(), e >= r) + throw M(new Kb(e, r)); + if (n.Si() && (i = n.dd(t), i >= 0 && i != e)) + throw M(new Gn(Vy)); + return n.Xi(e, t); + } + function lZ(n, e) { + if (this.a = u(Se(n), 253), this.b = u(Se(e), 253), n.Ed(e) > 0 || n == (dD(), _K) || e == (bD(), HK)) + throw M(new Gn("Invalid range: " + UDn(n, e))); + } + function jRn(n) { + var e, t; + for (this.b = new Z(), this.c = n, this.a = !1, t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 10), this.a = this.a | e.k == (Vn(), Vt); + } + function N9e(n, e) { + var t, i, r; + for (t = h0(new za(), n), r = new C(e); r.a < r.c.c.length; ) + i = u(E(r), 125), qs(Ls(Ds(Ns(Os(new hs(), 0), 0), t), i)); + return t; + } + function ERn(n, e, t) { + t.Ug("Compound graph preprocessor", 1), n.a = new C0(), _Gn(n, e, null), SIe(n, e), YMe(n), U(e, (W(), tfn), n.a), n.a = null, Hu(n.b), t.Vg(); + } + function CRn(n, e, t) { + var i, r, c; + for (r = new ie(ce((e ? ji(n) : Qt(n)).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), c = e ? i.c.i : i.d.i, c.k == (Vn(), Sc) && $i(c, t); + } + function $9e(n, e) { + var t, i, r; + for (e.Ug("Untreeify", 1), t = u(v(n, (pt(), jln)), 15), r = t.Kc(); r.Ob(); ) + i = u(r.Pb(), 65), Fe(i.b.d, i), Fe(i.c.b, i); + e.Vg(); + } + function x9e(n) { + var e, t, i; + for (i = u(ot(n.a, (ow(), zP)), 15).Kc(); i.Ob(); ) + t = u(i.Pb(), 105), e = CZ(t), M4(n, t, e[0], (D0(), cb), 0), M4(n, t, e[1], ub, 1); + } + function F9e(n) { + var e, t, i; + for (i = u(ot(n.a, (ow(), XP)), 15).Kc(); i.Ob(); ) + t = u(i.Pb(), 105), e = CZ(t), M4(n, t, e[0], (D0(), cb), 0), M4(n, t, e[1], ub, 1); + } + function cw() { + cw = F, TI = new wC(kh, 0), BH = new wC("PORT_POSITION", 1), P2 = new wC("NODE_SIZE_WHERE_SPACE_PERMITS", 2), S2 = new wC("NODE_SIZE", 3); + } + function rA() { + rA = F, Tq = new cL("INTERACTIVE_NODE_REORDERER", 0), Sq = new cL("MIN_SIZE_PRE_PROCESSOR", 1), Aq = new cL("MIN_SIZE_POST_PROCESSOR", 2); + } + function Rh() { + Rh = F, Vq = new v6("AUTOMATIC", 0), qj = new v6(s3, 1), Uj = new v6(f3, 2), eO = new v6("TOP", 3), ZI = new v6(Btn, 4), nO = new v6(qm, 5); + } + function aZ(n, e, t, i) { + Am(); + var r, c; + for (r = 0, c = 0; c < t; c++) + r = nr(er(vi(e[c], vr), vi(i, vr)), vi(Ae(r), vr)), n[c] = Ae(r), r = U1(r, 32); + return Ae(r); + } + function dZ(n, e, t) { + var i, r; + for (r = 0, i = 0; i < h_; i++) + r = y.Math.max(r, Z$(n.a[e.g][i], t)); + return e == (wf(), Jc) && n.b && (r = y.Math.max(r, n.b.b)), r; + } + function cA(n, e) { + var t, i; + if (cV(e > 0), (e & -e) == e) + return wi(e * to(n, 31) * 4656612873077393e-25); + do + t = to(n, 31), i = t % e; + while (t - i + (e - 1) < 0); + return wi(i); + } + function B9e(n, e, t) { + switch (t.g) { + case 1: + n.a = e.a / 2, n.b = 0; + break; + case 2: + n.a = e.a, n.b = e.b / 2; + break; + case 3: + n.a = e.a / 2, n.b = e.b; + break; + case 4: + n.a = 0, n.b = e.b / 2; + } + } + function _k(n, e, t, i) { + var r, c; + for (r = e; r < n.c.length; r++) + if (c = (Ln(r, n.c.length), u(n.c[r], 12)), t.Mb(c)) + Kn(i.c, c); + else + return r; + return n.c.length; + } + function Ax(n) { + switch (n.g) { + case 0: + return null; + case 1: + return new Mxn(); + case 2: + return new oz(); + default: + throw M(new Gn(GR + (n.f != null ? n.f : "" + n.g))); + } + } + function Hk(n, e, t) { + var i, r; + for (Wve(n, e - n.s, t - n.t), r = new C(n.n); r.a < r.c.c.length; ) + i = u(E(r), 209), hfe(i, i.e + e - n.s), lfe(i, i.f + t - n.t); + n.s = e, n.t = t; + } + function R9e(n) { + var e, t, i, r, c; + for (t = 0, r = new C(n.a); r.a < r.c.c.length; ) + i = u(E(r), 125), i.d = t++; + return e = Vye(n), c = null, e.c.length > 1 && (c = N9e(n, e)), c; + } + function MRn(n) { + var e; + return e = $(R(z(n, (He(), Qj)))) * y.Math.sqrt((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a).i), new V(e, e / $(R(z(n, rO)))); + } + function Sx(n) { + var e; + return n.f && n.f.Vh() && (e = u(n.f, 54), n.f = u(ea(n, e), 84), n.f != e && n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 9, 8, e, n.f))), n.f; + } + function Px(n) { + var e; + return n.i && n.i.Vh() && (e = u(n.i, 54), n.i = u(ea(n, e), 84), n.i != e && n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 9, 7, e, n.i))), n.i; + } + function wr(n) { + var e; + return n.b && n.b.Db & 64 && (e = n.b, n.b = u(ea(n, e), 19), n.b != e && n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 9, 21, e, n.b))), n.b; + } + function uA(n, e) { + var t, i, r; + n.d == null ? (++n.e, ++n.f) : (i = e.Bi(), oTe(n, n.f + 1), r = (i & tt) % n.d.length, t = n.d[r], !t && (t = n.d[r] = n.dk()), t.Fc(e), ++n.f); + } + function bZ(n, e, t) { + var i; + return e.tk() ? !1 : e.Ik() != -2 ? (i = e.ik(), i == null ? t == null : ct(i, t)) : e.qk() == n.e.Dh() && t == null; + } + function oA() { + var n; + Co(16, xzn), n = fxn(16), this.b = K(UK, Cy, 303, n, 0, 1), this.c = K(UK, Cy, 303, n, 0, 1), this.a = null, this.e = null, this.i = 0, this.f = n - 1, this.g = 0; + } + function Tl(n) { + kV.call(this), this.k = (Vn(), Vt), this.j = (Co(6, mw), new zc(6)), this.b = (Co(2, mw), new zc(2)), this.d = new sD(), this.f = new ez(), this.a = n; + } + function K9e(n) { + var e, t; + n.c.length <= 1 || (e = Pqn(n, (en(), ae)), g_n(n, u(e.a, 17).a, u(e.b, 17).a), t = Pqn(n, Wn), g_n(n, u(t.a, 17).a, u(t.b, 17).a)); + } + function _9e(n, e, t) { + var i, r; + for (r = n.a.b, i = r.c.length; i < t; i++) + b0(r, r.c.length, new Nc(n.a)); + $i(e, (Ln(t - 1, r.c.length), u(r.c[t - 1], 30))), n.b[e.p] = t; + } + function TRn(n, e) { + var t, i, r; + for (n.b[e.g] = 1, i = ge(e.d, 0); i.b != i.d.c; ) + t = u(be(i), 65), r = t.c, n.b[r.g] == 1 ? Fe(n.a, t) : n.b[r.g] == 2 ? n.b[r.g] = 1 : TRn(n, r); + } + function ARn(n, e, t, i) { + var r, c, s; + for (r = u(ot(i ? n.a : n.b, e), 21), s = r.Kc(); s.Ob(); ) + if (c = u(s.Pb(), 27), LA(n, t, c)) + return !0; + return !1; + } + function Ix(n) { + var e, t; + for (t = new ne(n); t.e != t.i.gc(); ) + if (e = u(ue(t), 89), e.e || (!e.d && (e.d = new ti(Er, e, 1)), e.d).i != 0) + return !0; + return !1; + } + function Ox(n) { + var e, t; + for (t = new ne(n); t.e != t.i.gc(); ) + if (e = u(ue(t), 89), e.e || (!e.d && (e.d = new ti(Er, e, 1)), e.d).i != 0) + return !0; + return !1; + } + function H9e(n) { + var e, t, i; + for (e = 0, i = new C(n.c.a); i.a < i.c.c.length; ) + t = u(E(i), 10), e += wl(new ie(ce(Qt(t).a.Kc(), new En()))); + return e / n.c.a.c.length; + } + function Dx() { + Dx = F, tan = (EF(), Y1n), ean = new f0(8), new Ni((He(), C1), ean), new Ni(qd, 8), lue = J1n, Z1n = iue, nan = rue, hue = new Ni(zj, (_n(), !1)); + } + function q9e(n, e, t) { + var i; + t.Ug("Shrinking tree compaction", 1), on(un(v(e, (J4(), O8)))) ? (Qme(n, e.f), YNn(e.f, (i = e.c, i))) : YNn(e.f, e.c), t.Vg(); + } + function wZ(n, e, t, i) { + switch (e) { + case 7: + return !n.e && (n.e = new Nn(Wt, n, 7, 4)), n.e; + case 8: + return !n.d && (n.d = new Nn(Wt, n, 8, 5)), n.d; + } + return BY(n, e, t, i); + } + function Lx(n) { + var e; + return n.a && n.a.Vh() && (e = u(n.a, 54), n.a = u(ea(n, e), 142), n.a != e && n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 9, 5, e, n.a))), n.a; + } + function bd(n) { + return n < 48 || n > 102 ? -1 : n <= 57 ? n - 48 : n < 65 ? -1 : n <= 70 ? n - 65 + 10 : n < 97 ? -1 : n - 97 + 10; + } + function Nx(n, e) { + if (n == null) + throw M(new fp("null key in entry: null=" + e)); + if (e == null) + throw M(new fp("null value in entry: " + n + "=null")); + } + function U9e(n, e) { + for (var t, i; n.Ob(); ) + if (!e.Ob() || (t = n.Pb(), i = e.Pb(), !(x(t) === x(i) || t != null && ct(t, i)))) + return !1; + return !e.Ob(); + } + function SRn(n, e) { + var t; + return t = A(T(Ii, 1), Ar, 28, 15, [Z$(n.a[0], e), Z$(n.a[1], e), Z$(n.a[2], e)]), n.d && (t[0] = y.Math.max(t[0], t[2]), t[2] = t[0]), t; + } + function PRn(n, e) { + var t; + return t = A(T(Ii, 1), Ar, 28, 15, [$T(n.a[0], e), $T(n.a[1], e), $T(n.a[2], e)]), n.d && (t[0] = y.Math.max(t[0], t[2]), t[2] = t[0]), t; + } + function gZ(n, e, t) { + Ep(u(v(e, (cn(), Ut)), 101)) || (IJ(n, e, h1(e, t)), IJ(n, e, h1(e, (en(), ae))), IJ(n, e, h1(e, Xn)), Dn(), Yt(e.j, new $7n(n))); + } + function IRn(n) { + var e, t; + for (n.c || fOe(n), t = new Tu(), e = new C(n.a), E(e); e.a < e.c.c.length; ) + Fe(t, u(E(e), 418).a); + return oe(t.b != 0), Xo(t, t.c.b), t; + } + function G9e(n, e, t) { + var i, r, c, s, f; + for (f = n.r + e, n.r += e, n.d += t, i = t / n.n.c.length, r = 0, s = new C(n.n); s.a < s.c.c.length; ) + c = u(E(s), 209), rMe(c, f, i, r), ++r; + } + function z9e(n) { + var e, t, i; + for (n.b.a.$b(), n.a = K(aP, Bn, 60, n.c.c.a.b.c.length, 0, 1), e = 0, i = new C(n.c.c.a.b); i.a < i.c.c.length; ) + t = u(E(i), 60), t.f = e++; + } + function X9e(n) { + var e, t, i; + for (n.b.a.$b(), n.a = K(M_, Bn, 86, n.c.a.a.b.c.length, 0, 1), e = 0, i = new C(n.c.a.a.b); i.a < i.c.c.length; ) + t = u(E(i), 86), t.i = e++; + } + function ORn(n) { + var e; + if (e = F6e(n), !pe(n)) + throw M(new Ir("position (0) must be less than the number of elements that remained (" + e + ")")); + return fe(n); + } + function V9e(n, e) { + var t; + return n.a || (t = K(Ii, Ar, 28, 0, 15, 1), lg(n.b.a, new y9n(t)), Iyn(t, O$n(mE.prototype.Me, mE, [])), n.a = new sSn(t, n.d)), WM(n.a, e); + } + function DRn(n, e, t) { + var i; + try { + return Kg(n, e + n.j, t + n.k); + } catch (r) { + throw r = It(r), D(r, 77) ? (i = r, M(new Ir(i.g + iS + e + ur + t + ")."))) : M(r); + } + } + function W9e(n, e, t) { + var i; + try { + return $Rn(n, e + n.j, t + n.k); + } catch (r) { + throw r = It(r), D(r, 77) ? (i = r, M(new Ir(i.g + iS + e + ur + t + ")."))) : M(r); + } + } + function J9e(n, e, t) { + var i; + try { + return xRn(n, e + n.j, t + n.k); + } catch (r) { + throw r = It(r), D(r, 77) ? (i = r, M(new Ir(i.g + iS + e + ur + t + ")."))) : M(r); + } + } + function LRn(n) { + switch (n.g) { + case 1: + return en(), Wn; + case 4: + return en(), Xn; + case 3: + return en(), Zn; + case 2: + return en(), ae; + default: + return en(), sc; + } + } + function Q9e(n, e, t) { + e.k == (Vn(), Vt) && t.k == Mi && (n.d = ix(e, (en(), ae)), n.b = ix(e, Xn)), t.k == Vt && e.k == Mi && (n.d = ix(t, (en(), Xn)), n.b = ix(t, ae)); + } + function $x(n, e) { + var t, i, r; + for (r = uc(n, e), i = r.Kc(); i.Ob(); ) + if (t = u(i.Pb(), 12), v(t, (W(), Xu)) != null || D6(new Df(t.b))) + return !0; + return !1; + } + function Y9e(n, e, t) { + t.Ug("Linear segments node placement", 1), n.b = u(v(e, (W(), E2)), 312), BLe(n, e), bIe(n, e), DIe(n, e), wLe(n), n.a = null, n.b = null, t.Vg(); + } + function pZ(n, e) { + return tu(e, n.e + n.d + (n.c.c.length == 0 ? 0 : n.b)), iu(e, n.f), n.a = y.Math.max(n.a, e.f), n.d += e.g + (n.c.c.length == 0 ? 0 : n.b), nn(n.c, e), !0; + } + function Z9e(n, e, t) { + var i, r, c, s; + for (s = 0, i = t / n.a.c.length, c = new C(n.a); c.a < c.c.c.length; ) + r = u(E(c), 172), Hk(r, r.s, r.t + s * i), G9e(r, n.d - r.r + e, i), ++s; + } + function n7e(n, e) { + var t, i, r, c, s, f; + for (r = e.length - 1, s = 0, f = 0, i = 0; i <= r; i++) + c = e[i], t = mje(r, i) * vY(1 - n, r - i) * vY(n, i), s += c.a * t, f += c.b * t; + return new V(s, f); + } + function NRn(n, e) { + var t, i, r, c, s; + for (t = e.gc(), n._i(n.i + t), c = e.Kc(), s = n.i, n.i += t, i = s; i < n.i; ++i) + r = c.Pb(), I6(n, i, n.Zi(i, r)), n.Mi(i, r), n.Ni(); + return t != 0; + } + function e7e(n, e, t) { + var i, r, c; + return n.Pj() ? (i = n.Ej(), c = n.Qj(), ++n.j, n.qj(i, n.Zi(i, e)), r = n.Ij(3, null, e, i, c), t ? t.nj(r) : t = r) : OAn(n, n.Ej(), e), t; + } + function t7e(n, e, t) { + var i, r, c; + return i = u(L(Pc(n.a), e), 89), c = (r = i.c, D(r, 90) ? u(r, 29) : (On(), Is)), (c.Db & 64 ? ea(n.b, c) : c) == t ? BA(i) : K4(i, t), c; + } + function i7e(n) { + var e; + return n == null ? null : new H1((e = Bc(n, !0), e.length > 0 && (zn(0, e.length), e.charCodeAt(0) == 43) ? (zn(1, e.length + 1), e.substr(1)) : e)); + } + function r7e(n) { + var e; + return n == null ? null : new H1((e = Bc(n, !0), e.length > 0 && (zn(0, e.length), e.charCodeAt(0) == 43) ? (zn(1, e.length + 1), e.substr(1)) : e)); + } + function mZ(n, e, t, i, r, c, s, f) { + var h, l; + i && (h = i.a[0], h && mZ(n, e, t, h, r, c, s, f), qx(n, t, i.d, r, c, s, f) && e.Fc(i), l = i.a[1], l && mZ(n, e, t, l, r, c, s, f)); + } + function Kg(n, e, t) { + try { + return o0(C$(n, e, t), 1); + } catch (i) { + throw i = It(i), D(i, 333) ? M(new Ir(GB + n.o + "*" + n.p + zB + e + ur + t + XB)) : M(i); + } + } + function $Rn(n, e, t) { + try { + return o0(C$(n, e, t), 0); + } catch (i) { + throw i = It(i), D(i, 333) ? M(new Ir(GB + n.o + "*" + n.p + zB + e + ur + t + XB)) : M(i); + } + } + function xRn(n, e, t) { + try { + return o0(C$(n, e, t), 2); + } catch (i) { + throw i = It(i), D(i, 333) ? M(new Ir(GB + n.o + "*" + n.p + zB + e + ur + t + XB)) : M(i); + } + } + function FRn(n, e) { + if (n.g == -1) + throw M(new Mu()); + n.Xj(); + try { + n.d.hd(n.g, e), n.f = n.d.j; + } catch (t) { + throw t = It(t), D(t, 77) ? M(new Bo()) : M(t); + } + } + function c7e(n) { + var e, t, i, r, c; + for (i = new C(n.b); i.a < i.c.c.length; ) + for (t = u(E(i), 30), e = 0, c = new C(t.a); c.a < c.c.c.length; ) + r = u(E(c), 10), r.p = e++; + } + function A5(n, e) { + var t, i, r, c; + for (c = n.gc(), e.length < c && (e = qE(new Array(c), e)), r = e, i = n.Kc(), t = 0; t < c; ++t) + Rt(r, t, i.Pb()); + return e.length > c && Rt(e, c, null), e; + } + function u7e(n, e) { + var t, i; + if (i = n.gc(), e == null) { + for (t = 0; t < i; t++) + if (n.Xb(t) == null) + return t; + } else + for (t = 0; t < i; t++) + if (ct(e, n.Xb(t))) + return t; + return -1; + } + function xx(n, e) { + var t, i, r; + return t = e.ld(), r = e.md(), i = n.xc(t), !(!(x(r) === x(i) || r != null && ct(r, i)) || i == null && !n._b(t)); + } + function o7e(n, e) { + var t, i, r; + return e <= 22 ? (t = n.l & (1 << e) - 1, i = r = 0) : e <= 44 ? (t = n.l, i = n.m & (1 << e - 22) - 1, r = 0) : (t = n.l, i = n.m, r = n.h & (1 << e - 44) - 1), Zc(t, i, r); + } + function s7e(n, e) { + switch (e.g) { + case 1: + return n.f.n.d + n.t; + case 3: + return n.f.n.a + n.t; + case 2: + return n.f.n.c + n.s; + case 4: + return n.f.n.b + n.s; + default: + return 0; + } + } + function f7e(n, e) { + var t, i; + switch (i = e.c, t = e.a, n.b.g) { + case 0: + t.d = n.e - i.a - i.d; + break; + case 1: + t.d += n.e; + break; + case 2: + t.c = n.e - i.a - i.d; + break; + case 3: + t.c = n.e + i.d; + } + } + function vZ(n, e, t, i) { + var r, c; + this.a = e, this.c = i, r = n.a, Xse(this, new V(-r.c, -r.d)), it(this.b, t), c = i / 2, e.a ? L6(this.b, 0, c) : L6(this.b, c, 0), nn(n.c, this); + } + function BRn(n, e, t, i) { + var r; + this.c = n, this.d = e, r = new Ct(), Kt(r, t, r.c.b, r.c), this.a = r, this.b = u(v(i, (lc(), vb)), 88), this.e = $(R(v(i, Nln))), Czn(this); + } + function sA() { + sA = F, Eq = new vC(kh, 0), r1n = new vC(JXn, 1), c1n = new vC("EDGE_LENGTH_BY_POSITION", 2), i1n = new vC("CROSSING_MINIMIZATION_BY_POSITION", 3); + } + function Fx(n, e) { + var t, i; + if (t = u(Lg(n.g, e), 27), t) + return t; + if (i = u(Lg(n.j, e), 123), i) + return i; + throw M(new eh("Referenced shape does not exist: " + e)); + } + function kZ(n, e) { + var t, i; + if (D(e, 253)) { + i = u(e, 253); + try { + return t = n.Ed(i), t == 0; + } catch (r) { + if (r = It(r), D(r, 212)) + return !1; + throw M(r); + } + } + return !1; + } + function h7e(n, e) { + if (n.c == e) + return n.d; + if (n.d == e) + return n.c; + throw M(new Gn("Node 'one' must be either source or target of edge 'edge'.")); + } + function l7e(n, e) { + if (n.c.i == e) + return n.d.i; + if (n.d.i == e) + return n.c.i; + throw M(new Gn("Node " + e + " is neither source nor target of edge " + n)); + } + function a7e(n, e, t) { + t.Ug("Self-Loop ordering", 1), Gt(_r(ut(ut(rc(new Tn(null, new In(e.b, 16)), new r2n()), new c2n()), new u2n()), new o2n()), new o7n(n)), t.Vg(); + } + function d7e(n, e) { + var t; + switch (e.g) { + case 2: + case 4: + t = n.a, n.c.d.n.b < t.d.n.b && (t = n.c), Vl(n, e, (xf(), B_), t); + break; + case 1: + case 3: + Vl(n, e, (xf(), j3), null); + } + } + function Bx(n, e, t, i, r, c) { + var s, f, h, l, a; + for (s = dke(e, t, c), f = t == (en(), Xn) || t == Wn ? -1 : 1, l = n[t.g], a = 0; a < l.length; a++) + h = l[a], h > 0 && (h += r), l[a] = s, s += f * (h + i); + } + function RRn(n) { + var e, t, i; + for (i = n.f, n.n = K(Ii, Ar, 28, i, 15, 1), n.d = K(Ii, Ar, 28, i, 15, 1), e = 0; e < i; e++) + t = u(sn(n.c.b, e), 30), n.n[e] = lRn(n, t), n.d[e] = tqn(n, t); + } + function Rx(n, e) { + var t, i, r; + for (r = 0, i = 2; i < e; i <<= 1) + n.Db & i && ++r; + if (r == 0) { + for (t = e <<= 1; t <= 128; t <<= 1) + if (n.Db & t) + return 0; + return -1; + } else + return r; + } + function KRn(n, e) { + var t, i, r, c, s; + for (s = cu(n.e.Dh(), e), c = null, t = u(n.g, 124), r = 0; r < n.i; ++r) + i = t[r], s.am(i.Lk()) && (!c && (c = new EE()), ve(c, i)); + c && ozn(n, c); + } + function _Rn(n) { + var e, t, i; + if (!n) + return null; + if (n.dc()) + return ""; + for (i = new Hl(), t = n.Kc(); t.Ob(); ) + e = t.Pb(), Cr(i, Oe(e)), i.a += " "; + return bL(i, i.a.length - 1); + } + function HRn(n, e) { + var t = new Array(e), i; + switch (n) { + case 14: + case 15: + i = 0; + break; + case 16: + i = !1; + break; + default: + return t; + } + for (var r = 0; r < e; ++r) + t[r] = i; + return t; + } + function R0(n) { + var e, t, i; + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 60), e.c.$b(); + hl(n.d) ? i = n.a.c : i = n.a.d, eu(i, new D9n(n)), n.c.df(n), kqn(n); + } + function qRn(n) { + var e, t, i, r; + for (t = new C(n.e.c); t.a < t.c.c.length; ) { + for (e = u(E(t), 290), r = new C(e.b); r.a < r.c.c.length; ) + i = u(E(r), 454), Gen(i); + J_n(e); + } + } + function fA(n) { + var e, t, i, r, c; + for (i = 0, c = 0, r = 0, t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 172), c = y.Math.max(c, e.r), i += e.d + (r > 0 ? n.c : 0), ++r; + n.b = i, n.d = c; + } + function URn(n, e) { + var t; + return t = A(T(Ii, 1), Ar, 28, 15, [dZ(n, (wf(), bc), e), dZ(n, Jc, e), dZ(n, wc, e)]), n.f && (t[0] = y.Math.max(t[0], t[2]), t[2] = t[0]), t; + } + function b7e(n, e, t) { + var i; + try { + xA(n, e + n.j, t + n.k, !1, !0); + } catch (r) { + throw r = It(r), D(r, 77) ? (i = r, M(new Ir(i.g + iS + e + ur + t + ")."))) : M(r); + } + } + function w7e(n, e, t) { + var i; + try { + xA(n, e + n.j, t + n.k, !0, !1); + } catch (r) { + throw r = It(r), D(r, 77) ? (i = r, M(new Ir(i.g + iS + e + ur + t + ")."))) : M(r); + } + } + function GRn(n) { + var e; + kt(n, (cn(), ab)) && (e = u(v(n, ab), 21), e.Hc((lw(), Qs)) ? (e.Mc(Qs), e.Fc(Ys)) : e.Hc(Ys) && (e.Mc(Ys), e.Fc(Qs))); + } + function zRn(n) { + var e; + kt(n, (cn(), ab)) && (e = u(v(n, ab), 21), e.Hc((lw(), nf)) ? (e.Mc(nf), e.Fc(Ms)) : e.Hc(Ms) && (e.Mc(Ms), e.Fc(nf))); + } + function Kx(n, e, t, i) { + var r, c, s, f; + return n.a == null && pje(n, e), s = e.b.j.c.length, c = t.d.p, f = i.d.p, r = f - 1, r < 0 && (r = s - 1), c <= r ? n.a[r] - n.a[c] : n.a[s - 1] - n.a[c] + n.a[r]; + } + function g7e(n) { + var e, t; + if (!n.b) + for (n.b = RM(u(n.f, 27).kh().i), t = new ne(u(n.f, 27).kh()); t.e != t.i.gc(); ) + e = u(ue(t), 135), nn(n.b, new pD(e)); + return n.b; + } + function p7e(n) { + var e, t; + if (!n.e) + for (n.e = RM(mN(u(n.f, 27)).i), t = new ne(mN(u(n.f, 27))); t.e != t.i.gc(); ) + e = u(ue(t), 123), nn(n.e, new Rkn(e)); + return n.e; + } + function XRn(n) { + var e, t; + if (!n.a) + for (n.a = RM(AM(u(n.f, 27)).i), t = new ne(AM(u(n.f, 27))); t.e != t.i.gc(); ) + e = u(ue(t), 27), nn(n.a, new ML(n, e)); + return n.a; + } + function K0(n) { + var e; + if (!n.C && (n.D != null || n.B != null)) + if (e = rDe(n), e) + n.hl(e); + else + try { + n.hl(null); + } catch (t) { + if (t = It(t), !D(t, 63)) + throw M(t); + } + return n.C; + } + function m7e(n) { + switch (n.q.g) { + case 5: + pKn(n, (en(), Xn)), pKn(n, ae); + break; + case 4: + vGn(n, (en(), Xn)), vGn(n, ae); + break; + default: + j_n(n, (en(), Xn)), j_n(n, ae); + } + } + function v7e(n) { + switch (n.q.g) { + case 5: + mKn(n, (en(), Zn)), mKn(n, Wn); + break; + case 4: + kGn(n, (en(), Zn)), kGn(n, Wn); + break; + default: + E_n(n, (en(), Zn)), E_n(n, Wn); + } + } + function _g(n, e) { + var t, i, r; + for (r = new Li(), i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 36), Sm(t, r.a, 0), r.a += t.f.a + e, r.b = y.Math.max(r.b, t.f.b); + return r.b > 0 && (r.b += e), r; + } + function hA(n, e) { + var t, i, r; + for (r = new Li(), i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 36), Sm(t, 0, r.b), r.b += t.f.b + e, r.a = y.Math.max(r.a, t.f.a); + return r.a > 0 && (r.a += e), r; + } + function VRn(n) { + var e, t, i; + for (i = tt, t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 10), kt(e, (W(), dt)) && (i = y.Math.min(i, u(v(e, dt), 17).a)); + return i; + } + function WRn(n, e) { + var t, i; + if (e.length == 0) + return 0; + for (t = pN(n.a, e[0], (en(), Wn)), t += pN(n.a, e[e.length - 1], Zn), i = 0; i < e.length; i++) + t += tje(n, i, e); + return t; + } + function JRn() { + B5(), this.c = new Z(), this.i = new Z(), this.e = new rh(), this.f = new rh(), this.g = new rh(), this.j = new Z(), this.a = new Z(), this.b = new de(), this.k = new de(); + } + function _x(n, e) { + var t, i; + return n.Db >> 16 == 6 ? n.Cb.Th(n, 5, Ef, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || n.ii()), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function k7e(n) { + O4(); + var e = n.e; + if (e && e.stack) { + var t = e.stack, i = e + ` +`; + return t.substring(0, i.length) == i && (t = t.substring(i.length)), t.split(` +`); + } + return []; + } + function y7e(n) { + var e; + return e = (Y$n(), gQn), e[n >>> 28] | e[n >> 24 & 15] << 4 | e[n >> 20 & 15] << 8 | e[n >> 16 & 15] << 12 | e[n >> 12 & 15] << 16 | e[n >> 8 & 15] << 20 | e[n >> 4 & 15] << 24 | e[n & 15] << 28; + } + function QRn(n) { + var e, t, i; + n.b == n.c && (i = n.a.length, t = YQ(y.Math.max(8, i)) << 1, n.b != 0 ? (e = xs(n.a, t), dxn(n, e, i), n.a = e, n.b = 0) : Pb(n.a, t), n.c = i); + } + function j7e(n, e) { + var t; + return t = n.b, t.pf((He(), oo)) ? t.ag() == (en(), Wn) ? -t.Mf().a - $(R(t.of(oo))) : e + $(R(t.of(oo))) : t.ag() == (en(), Wn) ? -t.Mf().a : e; + } + function qk(n) { + var e; + return n.b.c.length != 0 && u(sn(n.b, 0), 72).a ? u(sn(n.b, 0), 72).a : (e = vN(n), e != null ? e : "" + (n.c ? qr(n.c.a, n, 0) : -1)); + } + function lA(n) { + var e; + return n.f.c.length != 0 && u(sn(n.f, 0), 72).a ? u(sn(n.f, 0), 72).a : (e = vN(n), e != null ? e : "" + (n.i ? qr(n.i.j, n, 0) : -1)); + } + function E7e(n, e) { + var t, i; + if (e < 0 || e >= n.gc()) + return null; + for (t = e; t < n.gc(); ++t) + if (i = u(n.Xb(t), 131), t == n.gc() - 1 || !i.o) + return new bi(Y(t), i); + return null; + } + function C7e(n, e, t) { + var i, r, c, s, f; + for (c = n.c, f = t ? e : n, i = t ? n : e, r = f.p + 1; r < i.p; ++r) + if (s = u(sn(c.a, r), 10), !(s.k == (Vn(), Gf) || Y7e(s))) + return !1; + return !0; + } + function yZ(n) { + var e, t, i, r, c; + for (c = 0, r = li, i = 0, t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 172), c += e.r + (i > 0 ? n.c : 0), r = y.Math.max(r, e.d), ++i; + n.e = c, n.b = r; + } + function M7e(n) { + var e, t; + if (!n.b) + for (n.b = RM(u(n.f, 123).kh().i), t = new ne(u(n.f, 123).kh()); t.e != t.i.gc(); ) + e = u(ue(t), 135), nn(n.b, new pD(e)); + return n.b; + } + function T7e(n, e) { + var t, i, r; + if (e.dc()) + return m4(), m4(), aE; + for (t = new NAn(n, e.gc()), r = new ne(n); r.e != r.i.gc(); ) + i = ue(r), e.Hc(i) && ve(t, i); + return t; + } + function jZ(n, e, t, i) { + return e == 0 ? i ? (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), n.o) : (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), rk(n.o)) : tA(n, e, t, i); + } + function Hx(n) { + var e, t; + if (n.rb) + for (e = 0, t = n.rb.i; e < t; ++e) + T7(L(n.rb, e)); + if (n.vb) + for (e = 0, t = n.vb.i; e < t; ++e) + T7(L(n.vb, e)); + R6((Lu(), zi), n), n.Bb |= 1; + } + function Et(n, e, t, i, r, c, s, f, h, l, a, d, g, p) { + return I_n(n, e, i, null, r, c, s, f, h, l, g, !0, p), NY(n, a), D(n.Cb, 90) && hw(Zu(u(n.Cb, 90)), 2), t && LQ(n, t), $Y(n, d), n; + } + function A7e(n) { + var e, t; + if (n == null) + return null; + t = 0; + try { + t = Ao(n, Wi, tt) & ui; + } catch (i) { + if (i = It(i), D(i, 130)) + e = iT(n), t = e[0]; + else + throw M(i); + } + return vk(t); + } + function S7e(n) { + var e, t; + if (n == null) + return null; + t = 0; + try { + t = Ao(n, Wi, tt) & ui; + } catch (i) { + if (i = It(i), D(i, 130)) + e = iT(n), t = e[0]; + else + throw M(i); + } + return vk(t); + } + function P7e(n, e) { + var t, i, r; + return r = n.h - e.h, r < 0 || (t = n.l - e.l, i = n.m - e.m + (t >> 22), r += i >> 22, r < 0) ? !1 : (n.l = t & ro, n.m = i & ro, n.h = r & Il, !0); + } + function qx(n, e, t, i, r, c, s) { + var f, h; + return !(e.Te() && (h = n.a.Ne(t, i), h < 0 || !r && h == 0) || e.Ue() && (f = n.a.Ne(t, c), f > 0 || !s && f == 0)); + } + function I7e(n, e) { + cm(); + var t; + if (t = n.j.g - e.j.g, t != 0) + return 0; + switch (n.j.g) { + case 2: + return fx(e, Msn) - fx(n, Msn); + case 4: + return fx(n, Csn) - fx(e, Csn); + } + return 0; + } + function O7e(n) { + switch (n.g) { + case 0: + return Z_; + case 1: + return nH; + case 2: + return eH; + case 3: + return tH; + case 4: + return JP; + case 5: + return iH; + default: + return null; + } + } + function $r(n, e, t) { + var i, r; + return i = (r = new lD(), ad(r, e), Xc(r, t), ve((!n.c && (n.c = new q(yb, n, 12, 10)), n.c), r), r), e1(i, 0), Zb(i, 1), u1(i, !0), c1(i, !0), i; + } + function Jp(n, e) { + var t, i; + if (e >= n.i) + throw M(new aL(e, n.i)); + return ++n.j, t = n.g[e], i = n.i - e - 1, i > 0 && Oc(n.g, e + 1, n.g, e, i), Rt(n.g, --n.i, null), n.Qi(e, t), n.Ni(), t; + } + function YRn(n, e) { + var t, i; + return n.Db >> 16 == 17 ? n.Cb.Th(n, 21, As, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || n.ii()), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function D7e(n) { + var e, t, i, r; + for (Dn(), Yt(n.c, n.a), r = new C(n.c); r.a < r.c.c.length; ) + for (i = E(r), t = new C(n.b); t.a < t.c.c.length; ) + e = u(E(t), 693), e.bf(i); + } + function L7e(n) { + var e, t, i, r; + for (Dn(), Yt(n.c, n.a), r = new C(n.c); r.a < r.c.c.length; ) + for (i = E(r), t = new C(n.b); t.a < t.c.c.length; ) + e = u(E(t), 382), e.bf(i); + } + function N7e(n) { + var e, t, i, r, c; + for (r = tt, c = null, i = new C(n.d); i.a < i.c.c.length; ) + t = u(E(i), 218), t.d.j ^ t.e.j && (e = t.e.e - t.d.e - t.a, e < r && (r = e, c = t)); + return c; + } + function EZ() { + EZ = F, lZn = new Mn(Ytn, (_n(), !1)), sZn = new Mn(Ztn, 100), Eon = (t5(), E_), fZn = new Mn(nin, Eon), hZn = new Mn(ein, vh), aZn = new Mn(tin, Y(tt)); + } + function ZRn(n, e, t) { + var i, r, c, s, f, h, l, a; + for (l = 0, r = n.a[e], c = 0, s = r.length; c < s; ++c) + for (i = r[c], a = g5(i, t), h = a.Kc(); h.Ob(); ) + f = u(h.Pb(), 12), Ve(n.f, f, Y(l++)); + } + function $7e(n, e, t) { + var i, r, c, s; + if (t) + for (r = t.a.length, i = new Qa(r), s = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); s.Ob(); ) + c = u(s.Pb(), 17), Pn(n, e, Zp(Jb(t, c.a))); + } + function x7e(n, e, t) { + var i, r, c, s; + if (t) + for (r = t.a.length, i = new Qa(r), s = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); s.Ob(); ) + c = u(s.Pb(), 17), Pn(n, e, Zp(Jb(t, c.a))); + } + function CZ(n) { + ua(); + var e; + return e = u(A5(Tp(n.k), K(lr, Tc, 64, 2, 0, 1)), 126), F4(e, 0, e.length, null), e[0] == (en(), Xn) && e[1] == Wn && (Rt(e, 0, Wn), Rt(e, 1, Xn)), e; + } + function nKn(n, e, t) { + var i, r, c; + return r = CTe(n, e, t), c = ben(n, r), u$(n.b), KN(n, e, t), Dn(), Yt(r, new G7n(n)), i = ben(n, r), u$(n.b), KN(n, t, e), new bi(Y(c), Y(i)); + } + function eKn() { + eKn = F, $ie = Ke(new ii(), (Vi(), zr), (tr(), L8)), OI = new Dt("linearSegments.inputPrio", Y(0)), DI = new Dt("linearSegments.outputPrio", Y(0)); + } + function Qp() { + Qp = F, LI = new pC("P1_TREEIFICATION", 0), t9 = new pC("P2_NODE_ORDERING", 1), i9 = new pC("P3_NODE_PLACEMENT", 2), r9 = new pC("P4_EDGE_ROUTING", 3); + } + function F7e(n) { + var e, t, i, r; + for (t = 0, e = 0, r = new ne(n); r.e != r.i.gc(); ) + i = u(ue(r), 27), t = y.Math.max(i.g + i.i, t), e = y.Math.max(i.f + i.j, e); + return new V(t, e); + } + function B7e(n, e) { + var t, i, r, c; + for (c = 0, i = new C(n); i.a < i.c.c.length; ) + t = u(E(i), 27), c += y.Math.pow(t.g * t.f - e, 2); + return r = y.Math.sqrt(c / (n.c.length - 1)), r; + } + function To() { + To = F, nE = new yC("UNKNOWN", 0), nl = new yC("ABOVE", 1), Aa = new yC("BELOW", 2), Zj = new yC("INLINE", 3), new Dt("org.eclipse.elk.labelSide", nE); + } + function tKn(n, e) { + var t; + if (n.Yi() && e != null) { + for (t = 0; t < n.i; ++t) + if (ct(e, n.g[t])) + return t; + } else + for (t = 0; t < n.i; ++t) + if (x(n.g[t]) === x(e)) + return t; + return -1; + } + function R7e(n, e, t) { + var i, r; + return e.c == (pr(), Qc) && t.c == Vu ? -1 : e.c == Vu && t.c == Qc ? 1 : (i = qFn(e.a, n.a), r = qFn(t.a, n.a), e.c == Qc ? r - i : i - r); + } + function uw(n, e, t) { + if (t && (e < 0 || e > t.a.c.length)) + throw M(new Gn("index must be >= 0 and <= layer node count")); + n.c && bu(n.c.a, n), n.c = t, t && b0(t.a, e, n); + } + function iKn(n, e) { + var t, i, r; + for (i = new ie(ce(Cl(n).a.Kc(), new En())); pe(i); ) + return t = u(fe(i), 18), r = u(e.Kb(t), 10), new TE(Se(r.n.b + r.o.b / 2)); + return Zv(), Zv(), KK; + } + function rKn(n, e) { + this.c = new de(), this.a = n, this.b = e, this.d = u(v(n, (W(), E2)), 312), x(v(n, (cn(), fhn))) === x((sk(), QP)) ? this.e = new Zyn() : this.e = new Yyn(); + } + function S5(n, e) { + var t, i; + return i = null, n.pf((He(), $3)) && (t = u(n.of($3), 96), t.pf(e) && (i = t.of(e))), i == null && n.Tf() && (i = n.Tf().of(e)), i == null && (i = rn(e)), i; + } + function Ux(n, e) { + var t, i; + t = n.fd(e); + try { + return i = t.Pb(), t.Qb(), i; + } catch (r) { + throw r = It(r), D(r, 112) ? M(new Ir("Can't remove element " + e)) : M(r); + } + } + function K7e(n, e) { + var t, i, r; + if (i = new JE(), r = new eY(i.q.getFullYear() - ha, i.q.getMonth(), i.q.getDate()), t = QPe(n, e, r), t == 0 || t < e.length) + throw M(new Gn(e)); + return r; + } + function MZ(n, e) { + var t, i, r; + for (Jn(e), cV(e != n), r = n.b.c.length, i = e.Kc(); i.Ob(); ) + t = i.Pb(), nn(n.b, Jn(t)); + return r != n.b.c.length ? (hY(n, 0), !0) : !1; + } + function Uk() { + Uk = F, Aon = (He(), Vj), new Ni(Zq, (_n(), !0)), bZn = Hd, wZn = _2, gZn = Ta, dZn = K2, Pon = Wj, pZn = Ww, Ton = (EZ(), lZn), Con = fZn, Mon = hZn, Son = aZn, EP = sZn; + } + function _7e(n, e) { + if (e == n.c) + return n.d; + if (e == n.d) + return n.c; + throw M(new Gn("'port' must be either the source port or target port of the edge.")); + } + function H7e(n, e, t) { + var i, r; + switch (r = n.o, i = n.d, e.g) { + case 1: + return -i.d - t; + case 3: + return r.b + i.a + t; + case 2: + return r.a + i.c + t; + case 4: + return -i.b - t; + default: + return 0; + } + } + function TZ(n, e, t, i) { + var r, c, s, f; + for ($i(e, u(i.Xb(0), 30)), f = i.kd(1, i.gc()), c = u(t.Kb(e), 20).Kc(); c.Ob(); ) + r = u(c.Pb(), 18), s = r.c.i == e ? r.d.i : r.c.i, TZ(n, s, t, f); + } + function cKn(n) { + var e; + return e = new de(), kt(n, (W(), gH)) ? u(v(n, gH), 85) : (Gt(ut(new Tn(null, new In(n.j, 16)), new P2n()), new a7n(e)), U(n, gH, e), e); + } + function uKn(n, e) { + var t, i, r, c, s; + for (i = 0, r = 0, t = 0, s = new C(n); s.a < s.c.c.length; ) + c = u(E(s), 186), i = y.Math.max(i, c.e), r += c.b + (t > 0 ? e : 0), ++t; + return new V(i, r); + } + function AZ(n, e) { + var t, i; + return n.Db >> 16 == 6 ? n.Cb.Th(n, 6, Wt, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (Mc(), bO)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function SZ(n, e) { + var t, i; + return n.Db >> 16 == 7 ? n.Cb.Th(n, 1, oE, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (Mc(), Idn)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function PZ(n, e) { + var t, i; + return n.Db >> 16 == 9 ? n.Cb.Th(n, 9, Ye, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (Mc(), Ddn)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function oKn(n, e) { + var t, i; + return n.Db >> 16 == 5 ? n.Cb.Th(n, 9, EO, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (On(), S1)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function sKn(n, e) { + var t, i; + return n.Db >> 16 == 7 ? n.Cb.Th(n, 6, Ef, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (On(), I1)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function IZ(n, e) { + var t, i; + return n.Db >> 16 == 3 ? n.Cb.Th(n, 0, fE, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (On(), A1)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function fKn() { + this.a = new bvn(), this.g = new oA(), this.j = new oA(), this.b = new de(), this.d = new oA(), this.i = new oA(), this.k = new de(), this.c = new de(), this.e = new de(), this.f = new de(); + } + function q7e(n, e, t) { + var i, r, c; + for (t < 0 && (t = 0), c = n.i, r = t; r < c; r++) + if (i = L(n, r), e == null) { + if (i == null) + return r; + } else if (x(e) === x(i) || ct(e, i)) + return r; + return -1; + } + function U7e(n, e) { + var t, i; + return t = e.qi(n.a), t ? (i = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), nP)), An(Yy, i) ? R6(n, jo(e.qk())) : i) : null; + } + function mm(n, e) { + var t, i; + if (e) { + if (e == n) + return !0; + for (t = 0, i = u(e, 54).Ph(); i && i != e; i = i.Ph()) { + if (++t > PB) + return mm(n, i); + if (i == n) + return !0; + } + } + return !1; + } + function G7e(n) { + switch (KC(), n.q.g) { + case 5: + G_n(n, (en(), Xn)), G_n(n, ae); + break; + case 4: + zHn(n, (en(), Xn)), zHn(n, ae); + break; + default: + WGn(n, (en(), Xn)), WGn(n, ae); + } + } + function z7e(n) { + switch (KC(), n.q.g) { + case 5: + hHn(n, (en(), Zn)), hHn(n, Wn); + break; + case 4: + wRn(n, (en(), Zn)), wRn(n, Wn); + break; + default: + JGn(n, (en(), Zn)), JGn(n, Wn); + } + } + function X7e(n) { + var e, t; + e = u(v(n, (Us(), eZn)), 17), e ? (t = e.a, t == 0 ? U(n, (Q1(), jP), new dx()) : U(n, (Q1(), jP), new qM(t))) : U(n, (Q1(), jP), new qM(1)); + } + function V7e(n, e) { + var t; + switch (t = n.i, e.g) { + case 1: + return -(n.n.b + n.o.b); + case 2: + return n.n.a - t.o.a; + case 3: + return n.n.b - t.o.b; + case 4: + return -(n.n.a + n.o.a); + } + return 0; + } + function W7e(n, e) { + switch (n.g) { + case 0: + return e == (Yo(), ya) ? HP : qP; + case 1: + return e == (Yo(), ya) ? HP : wj; + case 2: + return e == (Yo(), ya) ? wj : qP; + default: + return wj; + } + } + function Gk(n, e) { + var t, i, r; + for (bu(n.a, e), n.e -= e.r + (n.a.c.length == 0 ? 0 : n.c), r = Brn, i = new C(n.a); i.a < i.c.c.length; ) + t = u(E(i), 172), r = y.Math.max(r, t.d); + n.b = r; + } + function OZ(n, e) { + var t, i; + return n.Db >> 16 == 3 ? n.Cb.Th(n, 12, Ye, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (Mc(), Pdn)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function DZ(n, e) { + var t, i; + return n.Db >> 16 == 11 ? n.Cb.Th(n, 10, Ye, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (Mc(), Odn)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function hKn(n, e) { + var t, i; + return n.Db >> 16 == 10 ? n.Cb.Th(n, 11, As, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (On(), P1)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function lKn(n, e) { + var t, i; + return n.Db >> 16 == 10 ? n.Cb.Th(n, 12, Ss, e) : (i = wr(u($n((t = u(Un(n, 16), 29), t || (On(), ig)), n.Db >> 16), 19)), n.Cb.Th(n, i.n, i.f, e)); + } + function gs(n) { + var e; + return !(n.Bb & 1) && n.r && n.r.Vh() && (e = u(n.r, 54), n.r = u(ea(n, e), 142), n.r != e && n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 9, 8, e, n.r))), n.r; + } + function Gx(n, e, t) { + var i; + return i = A(T(Ii, 1), Ar, 28, 15, [rnn(n, (wf(), bc), e, t), rnn(n, Jc, e, t), rnn(n, wc, e, t)]), n.f && (i[0] = y.Math.max(i[0], i[2]), i[2] = i[0]), i; + } + function J7e(n, e) { + var t, i, r; + if (r = k9e(n, e), r.c.length != 0) + for (Yt(r, new Ign()), t = r.c.length, i = 0; i < t; i++) + Em(n, (Ln(i, r.c.length), u(r.c[i], 293)), vAe(n, r, i)); + } + function Q7e(n) { + var e, t, i, r; + for (r = u(ot(n.a, (ow(), UP)), 15).Kc(); r.Ob(); ) + for (i = u(r.Pb(), 105), t = Tp(i.k).Kc(); t.Ob(); ) + e = u(t.Pb(), 64), M4(n, i, e, (D0(), va), 1); + } + function Y7e(n) { + var e, t; + if (n.k == (Vn(), Mi)) { + for (t = new ie(ce(Cl(n).a.Kc(), new En())); pe(t); ) + if (e = u(fe(t), 18), !fr(e) && n.c == RZ(e, n).c) + return !0; + } + return !1; + } + function Z7e(n) { + var e, t; + if (n.k == (Vn(), Mi)) { + for (t = new ie(ce(Cl(n).a.Kc(), new En())); pe(t); ) + if (e = u(fe(t), 18), !fr(e) && e.c.i.c == e.d.i.c) + return !0; + } + return !1; + } + function nke(n, e) { + var t, i, r, c, s; + if (e) + for (r = e.a.length, t = new Qa(r), s = (t.b - t.a) * t.c < 0 ? (K1(), xa) : new q1(t); s.Ob(); ) + c = u(s.Pb(), 17), i = L4(e, c.a), i && RHn(n, i); + } + function eke() { + Bz(); + var n, e; + for (HLe((G1(), Hn)), DLe(Hn), Hx(Hn), zdn = (On(), Zf), e = new C(e0n); e.a < e.c.c.length; ) + n = u(E(e), 248), Nm(n, Zf, null); + return !0; + } + function LZ(n, e) { + var t, i, r, c, s, f, h, l; + return h = n.h >> 19, l = e.h >> 19, h != l ? l - h : (r = n.h, f = e.h, r != f ? r - f : (i = n.m, s = e.m, i != s ? i - s : (t = n.l, c = e.l, t - c))); + } + function aA() { + aA = F, Vun = (NA(), f_), Xun = new Mn(Dtn, Vun), zun = (cT(), s_), Gun = new Mn(Ltn, zun), Uun = (YT(), o_), qun = new Mn(Ntn, Uun), Hun = new Mn($tn, (_n(), !0)); + } + function P5(n, e, t) { + var i, r; + i = e * t, D(n.g, 154) ? (r = xp(n), r.f.d ? r.f.a || (n.d.a += i + _f) : (n.d.d -= i + _f, n.d.a += i + _f)) : D(n.g, 10) && (n.d.d -= i, n.d.a += 2 * i); + } + function aKn(n, e, t) { + var i, r, c, s, f; + for (r = n[t.g], f = new C(e.d); f.a < f.c.c.length; ) + s = u(E(f), 105), c = s.i, c && c.i == t && (i = s.d[t.g], r[i] = y.Math.max(r[i], c.j.b)); + } + function tke(n, e) { + var t, i, r, c, s; + for (i = 0, r = 0, t = 0, s = new C(e.d); s.a < s.c.c.length; ) + c = u(E(s), 315), fA(c), i = y.Math.max(i, c.b), r += c.d + (t > 0 ? n.b : 0), ++t; + e.b = i, e.e = r; + } + function dKn(n) { + var e, t, i; + if (i = n.b, rCn(n.i, i.length)) { + for (t = i.length * 2, n.b = K(UK, Cy, 303, t, 0, 1), n.c = K(UK, Cy, 303, t, 0, 1), n.f = t - 1, n.i = 0, e = n.a; e; e = e.c) + ny(n, e, e); + ++n.g; + } + } + function ike(n, e, t, i) { + var r, c, s, f; + for (r = 0; r < e.o; r++) + for (c = r - e.j + t, s = 0; s < e.p; s++) + f = s - e.k + i, Kg(e, r, s) ? J9e(n, c, f) || b7e(n, c, f) : xRn(e, r, s) && (DRn(n, c, f) || w7e(n, c, f)); + } + function I5(n, e) { + return n.b.a = y.Math.min(n.b.a, e.c), n.b.b = y.Math.min(n.b.b, e.d), n.a.a = y.Math.max(n.a.a, e.c), n.a.b = y.Math.max(n.a.b, e.d), Kn(n.c, e), !0; + } + function rke(n, e, t) { + var i; + i = e.c.i, i.k == (Vn(), Mi) ? (U(n, (W(), yf), u(v(i, yf), 12)), U(n, Es, u(v(i, Es), 12))) : (U(n, (W(), yf), e.c), U(n, Es, t.d)); + } + function vm(n, e, t) { + Vg(); + var i, r, c, s, f, h; + return s = e / 2, c = t / 2, i = y.Math.abs(n.a), r = y.Math.abs(n.b), f = 1, h = 1, i > s && (f = s / i), r > c && (h = c / r), ch(n, y.Math.min(f, h)), n; + } + function cke() { + KA(); + var n, e; + try { + if (e = u(qZ((R1(), Ps), tv), 2113), e) + return e; + } catch (t) { + if (t = It(t), D(t, 103)) + n = t, DW((Ie(), n)); + else + throw M(t); + } + return new hvn(); + } + function uke() { + KA(); + var n, e; + try { + if (e = u(qZ((R1(), Ps), ks), 2040), e) + return e; + } catch (t) { + if (t = It(t), D(t, 103)) + n = t, DW((Ie(), n)); + else + throw M(t); + } + return new xvn(); + } + function oke() { + ENn(); + var n, e; + try { + if (e = u(qZ((R1(), Ps), Sd), 2122), e) + return e; + } catch (t) { + if (t = It(t), D(t, 103)) + n = t, DW((Ie(), n)); + else + throw M(t); + } + return new P6n(); + } + function ske(n, e, t) { + var i, r; + return r = n.e, n.e = e, n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 4, r, e), t ? t.nj(i) : t = i), r != e && (e ? t = Nm(n, MA(n, e), t) : t = Nm(n, n.a, t)), t; + } + function bKn() { + JE.call(this), this.e = -1, this.a = !1, this.p = Wi, this.k = -1, this.c = -1, this.b = -1, this.g = !1, this.f = -1, this.j = -1, this.n = -1, this.i = -1, this.d = -1, this.o = Wi; + } + function fke(n, e) { + var t, i, r; + if (i = n.b.d.d, n.a || (i += n.b.d.a), r = e.b.d.d, e.a || (r += e.b.d.a), t = bt(i, r), t == 0) { + if (!n.a && e.a) + return -1; + if (!e.a && n.a) + return 1; + } + return t; + } + function hke(n, e) { + var t, i, r; + if (i = n.b.b.d, n.a || (i += n.b.b.a), r = e.b.b.d, e.a || (r += e.b.b.a), t = bt(i, r), t == 0) { + if (!n.a && e.a) + return -1; + if (!e.a && n.a) + return 1; + } + return t; + } + function lke(n, e) { + var t, i, r; + if (i = n.b.g.d, n.a || (i += n.b.g.a), r = e.b.g.d, e.a || (r += e.b.g.a), t = bt(i, r), t == 0) { + if (!n.a && e.a) + return -1; + if (!e.a && n.a) + return 1; + } + return t; + } + function NZ() { + NZ = F, vZn = Iu(Ke(Ke(Ke(new ii(), (Vi(), _c), (tr(), hsn)), _c, lsn), zr, asn), zr, Zon), yZn = Ke(Ke(new ii(), _c, zon), _c, nsn), kZn = Iu(new ii(), zr, tsn); + } + function ake(n) { + var e, t, i, r, c; + for (e = u(v(n, (W(), R8)), 85), c = n.n, i = e.Cc().Kc(); i.Ob(); ) + t = u(i.Pb(), 314), r = t.i, r.c += c.a, r.d += c.b, t.c ? Lqn(t) : Nqn(t); + U(n, R8, null); + } + function dke(n, e, t) { + var i, r; + switch (r = n.b, i = r.d, e.g) { + case 1: + return -i.d - t; + case 2: + return r.o.a + i.c + t; + case 3: + return r.o.b + i.a + t; + case 4: + return -i.b - t; + default: + return -1; + } + } + function bke(n, e, t) { + var i, r; + for (t.Ug("Interactive node placement", 1), n.a = u(v(e, (W(), E2)), 312), r = new C(e.b); r.a < r.c.c.length; ) + i = u(E(r), 30), uAe(n, i); + t.Vg(); + } + function wke(n) { + var e, t, i, r, c; + if (i = 0, r = i2, n.b) + for (e = 0; e < 360; e++) + t = e * 0.017453292519943295, Oen(n, n.d, 0, 0, Cd, t), c = n.b.Dg(n.d), c < r && (i = t, r = c); + Oen(n, n.d, 0, 0, Cd, i); + } + function gke(n, e) { + var t, i, r, c; + for (c = new de(), e.e = null, e.f = null, i = new C(e.i); i.a < i.c.c.length; ) + t = u(E(i), 68), r = u(ee(n.g, t.a), 42), t.a = gM(t.b), Ve(c, t.a, r); + n.g = c; + } + function pke(n, e, t) { + var i, r, c, s, f, h; + for (r = e - n.e, c = r / n.d.c.length, s = 0, h = new C(n.d); h.a < h.c.c.length; ) + f = u(E(h), 315), i = n.b - f.b + t, FBn(f, f.e + s * c, f.f), Z9e(f, c, i), ++s; + } + function wKn(n) { + var e; + if (n.f._j(), n.b != -1) { + if (++n.b, e = n.f.d[n.a], n.b < e.i) + return; + ++n.a; + } + for (; n.a < n.f.d.length; ++n.a) + if (e = n.f.d[n.a], e && e.i != 0) { + n.b = 0; + return; + } + n.b = -1; + } + function mke(n, e) { + var t, i, r; + for (r = e.c.length, t = kEe(n, r == 0 ? "" : (Ln(0, e.c.length), Oe(e.c[0]))), i = 1; i < r && t; ++i) + t = u(t, 54).Zh((Ln(i, e.c.length), Oe(e.c[i]))); + return t; + } + function gKn(n, e) { + var t, i; + for (i = new C(e); i.a < i.c.c.length; ) + t = u(E(i), 10), n.c[t.c.p][t.p].a = aW(n.i), n.c[t.c.p][t.p].d = $(n.c[t.c.p][t.p].a), n.c[t.c.p][t.p].b = 1; + } + function vke(n, e) { + var t, i, r, c; + for (c = 0, i = new C(n); i.a < i.c.c.length; ) + t = u(E(i), 163), c += y.Math.pow(Pu(t) * ao(t) - e, 2); + return r = y.Math.sqrt(c / (n.c.length - 1)), r; + } + function pKn(n, e) { + var t, i, r, c; + for (c = 0, r = u(u(ot(n.r, e), 21), 87).Kc(); r.Ob(); ) + i = u(r.Pb(), 117), c = y.Math.max(c, i.e.a + i.b.Mf().a); + t = u(Mr(n.b, e), 127), t.n.b = 0, t.a.a = c; + } + function mKn(n, e) { + var t, i, r, c; + for (t = 0, c = u(u(ot(n.r, e), 21), 87).Kc(); c.Ob(); ) + r = u(c.Pb(), 117), t = y.Math.max(t, r.e.b + r.b.Mf().b); + i = u(Mr(n.b, e), 127), i.n.d = 0, i.a.b = t; + } + function vKn(n, e, t, i) { + var r, c, s; + return c = eSe(n, e, t, i), s = jen(n, c), eF(n, e, t, i), u$(n.b), Dn(), Yt(c, new z7n(n)), r = jen(n, c), eF(n, t, e, i), u$(n.b), new bi(Y(s), Y(r)); + } + function kke(n, e) { + var t; + e.Ug("Delaunay triangulation", 1), t = new Z(), eu(n.i, new Skn(t)), on(un(v(n, (J4(), O8)))), n.e ? Bi(n.e, dzn(t)) : n.e = dzn(t), e.Vg(); + } + function yke(n, e, t) { + var i, r; + for (j7(n, n.j + e, n.k + t), r = new ne((!n.a && (n.a = new ti(xo, n, 5)), n.a)); r.e != r.i.gc(); ) + i = u(ue(r), 377), gL(i, i.a + e, i.b + t); + y7(n, n.b + e, n.c + t); + } + function $Z(n, e, t, i) { + switch (t) { + case 7: + return !n.e && (n.e = new Nn(Wt, n, 7, 4)), Vc(n.e, e, i); + case 8: + return !n.d && (n.d = new Nn(Wt, n, 8, 5)), Vc(n.d, e, i); + } + return Yx(n, e, t, i); + } + function xZ(n, e, t, i) { + switch (t) { + case 7: + return !n.e && (n.e = new Nn(Wt, n, 7, 4)), cr(n.e, e, i); + case 8: + return !n.d && (n.d = new Nn(Wt, n, 8, 5)), cr(n.d, e, i); + } + return $$(n, e, t, i); + } + function jke(n, e, t) { + var i, r, c, s, f; + if (t) + for (c = t.a.length, i = new Qa(c), f = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); f.Ob(); ) + s = u(f.Pb(), 17), r = L4(t, s.a), r && U_n(n, r, e); + } + function zk(n, e, t) { + var i, r, c, s, f; + return n._j(), c = e == null ? 0 : mt(e), n.f > 0 && (s = (c & tt) % n.d.length, r = Fnn(n, s, c, e), r) ? (f = r.nd(t), f) : (i = n.ck(c, e, t), n.c.Fc(i), null); + } + function FZ(n, e) { + var t, i, r, c; + switch (r1(n, e).Kl()) { + case 3: + case 2: { + for (t = Jg(e), r = 0, c = t.i; r < c; ++r) + if (i = u(L(t, r), 35), y0(Lr(n, i)) == 5) + return i; + break; + } + } + return null; + } + function Eke(n) { + var e, t, i, r, c; + if (rCn(n.f, n.b.length)) + for (i = K(fQn, Cy, 227, n.b.length * 2, 0, 1), n.b = i, r = i.length - 1, t = n.a; t != n; t = t._d()) + c = u(t, 227), e = c.d & r, c.a = i[e], i[e] = c; + } + function Cke(n) { + var e, t; + return t = u(v(n, (W(), qc)), 21), e = DC(Qie), t.Hc((mr(), v2)) && Mo(e, nre), t.Hc(B8) && Mo(e, ere), t.Hc(vv) && Mo(e, Yie), t.Hc(kv) && Mo(e, Zie), e; + } + function BZ(n) { + if (n < 0) + throw M(new Gn("The input must be positive")); + return n < san.length ? id(san[n]) : y.Math.sqrt(Cd * n) * (n5e(n, n) / vY(2.718281828459045, n)); + } + function km(n, e) { + var t; + if (n.Yi() && e != null) { + for (t = 0; t < n.i; ++t) + if (ct(e, n.g[t])) + return !0; + } else + for (t = 0; t < n.i; ++t) + if (x(n.g[t]) === x(e)) + return !0; + return !1; + } + function Mke(n, e) { + if (e == null) { + for (; n.a.Ob(); ) + if (u(n.a.Pb(), 44).md() == null) + return !0; + } else + for (; n.a.Ob(); ) + if (ct(e, u(n.a.Pb(), 44).md())) + return !0; + return !1; + } + function Tke(n, e) { + var t, i, r; + return e === n ? !0 : D(e, 678) ? (r = u(e, 2046), JBn((i = n.g, i || (n.g = new zO(n))), (t = r.g, t || (r.g = new zO(r))))) : !1; + } + function Ake(n) { + var e, t, i, r; + for (e = "gA", t = "vz", r = y.Math.min(n.length, 5), i = r - 1; i >= 0; i--) + if (An(n[i].d, e) || An(n[i].d, t)) { + n.length >= i + 1 && n.splice(0, i + 1); + break; + } + return n; + } + function Xk(n, e) { + var t; + return Vr(n) && Vr(e) && (t = n / e, Ay < t && t < vd) ? t < 0 ? y.Math.ceil(t) : y.Math.floor(t) : Y1(Qen(Vr(n) ? ds(n) : n, Vr(e) ? ds(e) : e, !1)); + } + function RZ(n, e) { + if (e == n.c.i) + return n.d.i; + if (e == n.d.i) + return n.c.i; + throw M(new Gn("'node' must either be the source node or target node of the edge.")); + } + function Ske(n) { + var e, t, i, r; + if (r = u(v(n, (W(), efn)), 36), r) { + for (i = new Li(), e = Hi(n.c.i); e != r; ) + t = e.e, e = Hi(t), a0(it(it(i, t.n), e.c), e.d.b, e.d.d); + return i; + } + return RZn; + } + function Pke(n) { + var e; + e = u(v(n, (W(), hb)), 337), Gt(rc(new Tn(null, new In(e.d, 16)), new d2n()), new u7n(n)), Gt(ut(new Tn(null, new In(e.d, 16)), new b2n()), new s7n(n)); + } + function zx(n, e) { + var t, i, r, c; + for (r = e ? Qt(n) : ji(n), i = new ie(ce(r.a.Kc(), new En())); pe(i); ) + if (t = u(fe(i), 18), c = RZ(t, n), c.k == (Vn(), Mi) && c.c != n.c) + return c; + return null; + } + function Ike(n) { + var e, t, i; + for (t = new C(n.p); t.a < t.c.c.length; ) + e = u(E(t), 10), e.k == (Vn(), Vt) && (i = e.o.b, n.i = y.Math.min(n.i, i), n.g = y.Math.max(n.g, i)); + } + function kKn(n, e, t) { + var i, r, c; + for (c = new C(e); c.a < c.c.c.length; ) + i = u(E(c), 10), n.c[i.c.p][i.p].e = !1; + for (r = new C(e); r.a < r.c.c.length; ) + i = u(E(r), 10), itn(n, i, t); + } + function Xx(n, e, t) { + var i, r; + i = Fg(e.j, t.s, t.c) + Fg(t.e, e.s, e.c), r = Fg(t.j, e.s, e.c) + Fg(e.e, t.s, t.c), i == r ? i > 0 && (n.b += 2, n.a += i) : (n.b += 1, n.a += y.Math.min(i, r)); + } + function yKn(n) { + var e; + e = u(v(u(Zo(n.b, 0), 40), (lc(), Oln)), 107), U(n, (pt(), Dv), new V(0, 0)), aUn(new tk(), n, e.b + e.c - $(R(v(n, rq))), e.d + e.a - $(R(v(n, cq)))); + } + function jKn(n, e) { + var t, i; + if (i = !1, Si(e) && (i = !0, Ip(n, new qb(Oe(e)))), i || D(e, 242) && (i = !0, Ip(n, (t = OV(u(e, 242)), new AE(t)))), !i) + throw M(new vD(Ncn)); + } + function Oke(n, e, t, i) { + var r, c, s; + return r = new ml(n.e, 1, 10, (s = e.c, D(s, 90) ? u(s, 29) : (On(), Is)), (c = t.c, D(c, 90) ? u(c, 29) : (On(), Is)), f1(n, e), !1), i ? i.nj(r) : i = r, i; + } + function KZ(n) { + var e, t; + switch (u(v(Hi(n), (cn(), thn)), 429).g) { + case 0: + return e = n.n, t = n.o, new V(e.a + t.a / 2, e.b + t.b / 2); + case 1: + return new rr(n.n); + default: + return null; + } + } + function Vk() { + Vk = F, YP = new p6(kh, 0), _sn = new p6("LEFTUP", 1), qsn = new p6("RIGHTUP", 2), Ksn = new p6("LEFTDOWN", 3), Hsn = new p6("RIGHTDOWN", 4), rH = new p6("BALANCED", 5); + } + function Dke(n, e, t) { + var i, r, c; + if (i = bt(n.a[e.p], n.a[t.p]), i == 0) { + if (r = u(v(e, (W(), T3)), 15), c = u(v(t, T3), 15), r.Hc(t)) + return -1; + if (c.Hc(e)) + return 1; + } + return i; + } + function Lke(n) { + switch (n.g) { + case 1: + return new G4n(); + case 2: + return new z4n(); + case 3: + return new U4n(); + case 0: + return null; + default: + throw M(new Gn(GR + (n.f != null ? n.f : "" + n.g))); + } + } + function _Z(n, e, t) { + switch (e) { + case 1: + !n.n && (n.n = new q(Sr, n, 1, 7)), me(n.n), !n.n && (n.n = new q(Sr, n, 1, 7)), Ht(n.n, u(t, 16)); + return; + case 2: + X4(n, Oe(t)); + return; + } + oY(n, e, t); + } + function HZ(n, e, t) { + switch (e) { + case 3: + P0(n, $(R(t))); + return; + case 4: + I0(n, $(R(t))); + return; + case 5: + tu(n, $(R(t))); + return; + case 6: + iu(n, $(R(t))); + return; + } + _Z(n, e, t); + } + function dA(n, e, t) { + var i, r, c; + c = (i = new lD(), i), r = Bf(c, e, null), r && r.oj(), Xc(c, t), ve((!n.c && (n.c = new q(yb, n, 12, 10)), n.c), c), e1(c, 0), Zb(c, 1), u1(c, !0), c1(c, !0); + } + function qZ(n, e) { + var t, i, r; + return t = a6(n.i, e), D(t, 241) ? (r = u(t, 241), r.zi() == null, r.wi()) : D(t, 507) ? (i = u(t, 2037), r = i.b, r) : null; + } + function Nke(n, e, t, i) { + var r, c; + return Se(e), Se(t), c = u($6(n.d, e), 17), WNn(!!c, "Row %s not in %s", e, n.e), r = u($6(n.b, t), 17), WNn(!!r, "Column %s not in %s", t, n.c), uFn(n, c.a, r.a, i); + } + function EKn(n, e, t, i, r, c, s) { + var f, h, l, a, d; + if (a = r[c], l = c == s - 1, f = l ? i : 0, d = HRn(f, a), i != 10 && A(T(n, s - c), e[c], t[c], f, d), !l) + for (++c, h = 0; h < a; ++h) + d[h] = EKn(n, e, t, i, r, c, s); + return d; + } + function O5(n) { + if (n.g == -1) + throw M(new Mu()); + n.Xj(); + try { + n.i.gd(n.g), n.f = n.i.j, n.g < n.e && --n.e, n.g = -1; + } catch (e) { + throw e = It(e), D(e, 77) ? M(new Bo()) : M(e); + } + } + function $ke(n) { + var e, t, i, r; + for (r = -1, i = 0, t = new C(n); t.a < t.c.c.length; ) { + if (e = u(E(t), 249), e.c == (pr(), Vu)) { + r = i == 0 ? 0 : i - 1; + break; + } else + i == n.c.length - 1 && (r = i); + i += 1; + } + return r; + } + function xke(n) { + var e, t, i, r; + for (r = 0, e = 0, i = new C(n.c); i.a < i.c.c.length; ) + t = u(E(i), 27), tu(t, n.e + r), iu(t, n.f), r += t.g + n.b, e = y.Math.max(e, t.f + n.b); + n.d = r - n.b, n.a = e - n.b; + } + function Hg(n) { + var e, t, i; + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 60), i = e.d.c, e.d.c = e.d.d, e.d.d = i, i = e.d.b, e.d.b = e.d.a, e.d.a = i, i = e.b.a, e.b.a = e.b.b, e.b.b = i; + oen(n); + } + function qg(n) { + var e, t, i; + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), i = e.g.c, e.g.c = e.g.d, e.g.d = i, i = e.g.b, e.g.b = e.g.a, e.g.a = i, i = e.e.a, e.e.a = e.e.b, e.e.b = i; + PA(n); + } + function Fke(n) { + var e, t, i, r, c; + for (c = Tp(n.k), t = (en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn])), i = 0, r = t.length; i < r; ++i) + if (e = t[i], e != sc && !c.Hc(e)) + return e; + return null; + } + function Vx(n, e) { + var t, i; + return i = u(F1e(im(ut(new Tn(null, new In(e.j, 16)), new xpn()))), 12), i && (t = u(sn(i.e, 0), 18), t) ? u(v(t, (W(), dt)), 17).a : X4e(n.b); + } + function Bke(n, e) { + var t, i, r, c; + for (c = new C(e.a); c.a < c.c.c.length; ) + for (r = u(E(c), 10), e6(n.d), i = new ie(ce(Qt(r).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), kHn(n, r, t.d.i); + } + function Rke(n, e) { + var t, i; + for (bu(n.b, e), i = new C(n.n); i.a < i.c.c.length; ) + if (t = u(E(i), 209), qr(t.c, e, 0) != -1) { + bu(t.c, e), xke(t), t.c.c.length == 0 && bu(n.n, t); + break; + } + nGn(n); + } + function CKn(n, e) { + var t, i, r, c, s; + for (s = n.f, r = 0, c = 0, i = new C(n.a); i.a < i.c.c.length; ) + t = u(E(i), 172), Hk(t, n.e, s), uk(t, e), c = y.Math.max(c, t.r), s += t.d + n.c, r = s; + n.d = c, n.b = r; + } + function MKn(n) { + var e, t; + return t = cy(n), N4(t) ? null : (e = (Se(t), u(ORn(new ie(ce(t.a.Kc(), new En()))), 74)), Gr(u(L((!e.b && (e.b = new Nn(he, e, 4, 7)), e.b), 0), 84))); + } + function bA(n) { + var e; + return n.o || (e = n.uk(), e ? n.o = new BW(n, n, null) : n.al() ? n.o = new wV(n, null) : y0(Lr((Lu(), zi), n)) == 1 ? n.o = new WDn(n) : n.o = new DL(n, null)), n.o; + } + function Kke(n, e, t, i) { + var r, c, s, f, h; + t.Xh(e) && (r = (s = e, s ? u(i, 54).gi(s) : null), r && (h = t.Mh(e), f = e.t, f > 1 || f == -1 ? (c = u(h, 15), r.Wb(p8e(n, c))) : r.Wb(IF(n, u(h, 58))))); + } + function _ke(n, e, t, i) { + LEn(); + var r = RK; + function c() { + for (var s = 0; s < r.length; s++) + r[s](); + } + if (n) + try { + Ose(c)(); + } catch (s) { + n(e, s); + } + else + Ose(c)(); + } + function Hke(n, e) { + var t, i, r, c; + for (r = (c = new qa(n.b).a.vc().Kc(), new PE(c)); r.a.Ob(); ) + if (i = (t = u(r.a.Pb(), 44), u(t.ld(), 34)), EX(e, u(i, 17)) < 0) + return !1; + return !0; + } + function qke(n, e) { + var t, i, r, c; + for (r = (c = new qa(n.b).a.vc().Kc(), new PE(c)); r.a.Ob(); ) + if (i = (t = u(r.a.Pb(), 44), u(t.ld(), 34)), EX(e, u(i, 17)) > 0) + return !1; + return !0; + } + function Uke(n) { + var e, t, i, r, c; + for (i = new sd(new Ua(n.b).a); i.b; ) + t = L0(i), e = u(t.ld(), 10), c = u(u(t.md(), 42).a, 10), r = u(u(t.md(), 42).b, 8), it(ff(e.n), it(Ki(c.n), r)); + } + function Gke(n) { + switch (u(v(n.b, (cn(), Wfn)), 387).g) { + case 1: + Gt(_r(rc(new Tn(null, new In(n.d, 16)), new jpn()), new Epn()), new Cpn()); + break; + case 2: + KAe(n); + break; + case 0: + mEe(n); + } + } + function zke(n, e, t) { + var i, r, c; + for (i = t, !i && (i = new op()), i.Ug("Layout", n.a.c.length), c = new C(n.a); c.a < c.c.c.length; ) { + if (r = u(E(c), 47), i.$g()) + return; + r.Kf(e, i.eh(1)); + } + i.Vg(); + } + function wd() { + wd = F, Qq = new k6("V_TOP", 0), m9 = new k6("V_CENTER", 1), p9 = new k6("V_BOTTOM", 2), Jq = new k6("H_LEFT", 3), w9 = new k6("H_CENTER", 4), g9 = new k6("H_RIGHT", 5); + } + function UZ(n) { + var e; + return n.Db & 64 ? UT(n) : (e = new ls(UT(n)), e.a += " (abstract: ", ql(e, (n.Bb & 256) != 0), e.a += ", interface: ", ql(e, (n.Bb & 512) != 0), e.a += ")", e.a); + } + function Xke(n) { + var e; + n.c == null && (e = x(n.b) === x(sun) ? null : n.b, n.d = e == null ? pu : MPn(e) ? P1e(FIn(e)) : Si(e) ? vtn : Xa(wo(e)), n.a = n.a + ": " + (MPn(e) ? Aae(FIn(e)) : e + ""), n.c = "(" + n.d + ") " + n.a); + } + function Vke() { + function n() { + try { + return (/* @__PURE__ */ new Map()).entries().next().done; + } catch (e) { + return !1; + } + } + return typeof Map === eB && Map.prototype.entries && n() ? Map : NDe(); + } + function Wke(n, e) { + var t, i, r, c; + for (c = new xi(n.e, 0), t = 0; c.b < c.d.gc(); ) { + if (i = $((oe(c.b < c.d.gc()), R(c.d.Xb(c.c = c.b++)))), r = i - e, r > _R) + return t; + r > -1e-6 && ++t; + } + return t; + } + function GZ(n, e) { + var t; + e != n.b ? (t = null, n.b && (t = OM(n.b, n, -4, t)), e && (t = Wp(e, n, -4, t)), t = ZFn(n, e, t), t && t.oj()) : n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 3, e, e)); + } + function TKn(n, e) { + var t; + e != n.f ? (t = null, n.f && (t = OM(n.f, n, -1, t)), e && (t = Wp(e, n, -1, t)), t = YFn(n, e, t), t && t.oj()) : n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 0, e, e)); + } + function Jke(n, e, t, i) { + var r, c, s, f; + return fo(n.e) && (r = e.Lk(), f = e.md(), c = t.md(), s = V1(n, 1, r, f, c, r.Jk() ? Om(n, r, c, D(r, 102) && (u(r, 19).Bb & hr) != 0) : -1, !0), i ? i.nj(s) : i = s), i; + } + function AKn(n) { + var e, t, i; + if (n == null) + return null; + if (t = u(n, 15), t.dc()) + return ""; + for (i = new Hl(), e = t.Kc(); e.Ob(); ) + Cr(i, (at(), Oe(e.Pb()))), i.a += " "; + return bL(i, i.a.length - 1); + } + function SKn(n) { + var e, t, i; + if (n == null) + return null; + if (t = u(n, 15), t.dc()) + return ""; + for (i = new Hl(), e = t.Kc(); e.Ob(); ) + Cr(i, (at(), Oe(e.Pb()))), i.a += " "; + return bL(i, i.a.length - 1); + } + function Qke(n, e, t) { + var i, r; + return i = n.c[e.c.p][e.p], r = n.c[t.c.p][t.p], i.a != null && r.a != null ? tN(i.a, r.a) : i.a != null ? -1 : r.a != null ? 1 : 0; + } + function Yke(n, e, t) { + return t.Ug("Tree layout", 1), H7(n.b), hf(n.b, (Qp(), LI), LI), hf(n.b, t9, t9), hf(n.b, i9, i9), hf(n.b, r9, r9), n.a = gy(n.b, e), zke(n, e, t.eh(1)), t.Vg(), e; + } + function Zke(n, e) { + var t, i, r, c, s, f; + if (e) + for (c = e.a.length, t = new Qa(c), f = (t.b - t.a) * t.c < 0 ? (K1(), xa) : new q1(t); f.Ob(); ) + s = u(f.Pb(), 17), r = L4(e, s.a), i = new Wkn(n), oge(i.a, r); + } + function nye(n, e) { + var t, i, r, c, s, f; + if (e) + for (c = e.a.length, t = new Qa(c), f = (t.b - t.a) * t.c < 0 ? (K1(), xa) : new q1(t); f.Ob(); ) + s = u(f.Pb(), 17), r = L4(e, s.a), i = new Kkn(n), uge(i.a, r); + } + function eye(n) { + var e; + if (n != null && n.length > 0 && Xi(n, n.length - 1) == 33) + try { + return e = xHn(qo(n, 0, n.length - 1)), e.e == null; + } catch (t) { + if (t = It(t), !D(t, 33)) + throw M(t); + } + return !1; + } + function tye(n, e, t) { + var i, r, c; + switch (i = Hi(e), r = KT(i), c = new Ic(), ic(c, e), t.g) { + case 1: + gi(c, xk(zp(r))); + break; + case 2: + gi(c, zp(r)); + } + return U(c, (cn(), Kw), R(v(n, Kw))), c; + } + function zZ(n) { + var e, t; + return e = u(fe(new ie(ce(ji(n.a).a.Kc(), new En()))), 18), t = u(fe(new ie(ce(Qt(n.a).a.Kc(), new En()))), 18), on(un(v(e, (W(), zf)))) || on(un(v(t, zf))); + } + function ow() { + ow = F, gj = new s7("ONE_SIDE", 0), zP = new s7("TWO_SIDES_CORNER", 1), XP = new s7("TWO_SIDES_OPPOSING", 2), GP = new s7("THREE_SIDES", 3), UP = new s7("FOUR_SIDES", 4); + } + function PKn(n, e) { + var t, i, r, c; + for (c = new Z(), r = 0, i = e.Kc(); i.Ob(); ) { + for (t = Y(u(i.Pb(), 17).a + r); t.a < n.f && !zbe(n, t.a); ) + t = Y(t.a + 1), ++r; + if (t.a >= n.f) + break; + Kn(c.c, t); + } + return c; + } + function iye(n, e) { + var t, i, r, c, s; + for (c = new C(e.a); c.a < c.c.c.length; ) + for (r = u(E(c), 10), i = new ie(ce(ji(r).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), s = t.c.i.p, n.n[s] = n.n[s] - 1; + } + function rye(n) { + var e, t; + for (t = new C(n.e.b); t.a < t.c.c.length; ) + e = u(E(t), 30), ZOe(n, e); + Gt(ut(rc(rc(new Tn(null, new In(n.e.b, 16)), new a3n()), new m3n()), new v3n()), new ukn(n)); + } + function XZ(n, e) { + return e ? n.mj(e) ? !1 : n.i ? n.i.nj(e) : D(e, 152) ? (n.i = u(e, 152), !0) : (n.i = new pvn(), n.i.nj(e)) : !1; + } + function IKn(n, e, t) { + var i, r, c; + return i = e.Lk(), c = e.md(), r = i.Jk() ? V1(n, 3, i, null, c, Om(n, i, c, D(i, 102) && (u(i, 19).Bb & hr) != 0), !0) : V1(n, 1, i, i.ik(), c, -1, !0), t ? t.nj(r) : t = r, t; + } + function cye(n) { + if (n = Bc(n, !0), An(nv, n) || An("1", n)) + return _n(), ov; + if (An(cK, n) || An("0", n)) + return _n(), ga; + throw M(new kD("Invalid boolean value: '" + n + "'")); + } + function VZ(n, e, t) { + var i, r, c; + for (r = n.vc().Kc(); r.Ob(); ) + if (i = u(r.Pb(), 44), c = i.ld(), x(e) === x(c) || e != null && ct(e, c)) + return t && (i = new oC(i.ld(), i.md()), r.Qb()), i; + return null; + } + function uye(n) { + Bb(); + var e, t, i; + n.B.Hc((io(), sO)) && (i = n.f.i, e = new PM(n.a.c), t = new up(), t.b = e.c - i.c, t.d = e.d - i.d, t.c = i.c + i.b - (e.c + e.b), t.a = i.d + i.a - (e.d + e.a), n.e.$f(t)); + } + function OKn(n, e, t, i) { + var r, c, s; + for (s = y.Math.min(t, HUn(u(n.b, 68), e, t, i)), c = new C(n.a); c.a < c.c.c.length; ) + r = u(E(c), 225), r != e && (s = y.Math.min(s, OKn(r, e, s, i))); + return s; + } + function WZ(n) { + var e, t, i, r; + for (r = K(Qh, J, 199, n.b.c.length, 0, 2), i = new xi(n.b, 0); i.b < i.d.gc(); ) + e = (oe(i.b < i.d.gc()), u(i.d.Xb(i.c = i.b++), 30)), t = i.b - 1, r[t] = Y7(e.a); + return r; + } + function JZ(n, e, t) { + var i, r, c; + i = u(Nf(n.a, t), 34), i != null && (c = u(Nf(n.b, i), 67), iw(c, t, !0)), r = u(Nf(n.b, e), 67), r || (r = new Ct(), s1(n.b, e, r)), Kt(r, t, r.c.b, r.c), s1(n.a, t, e); + } + function Wx(n, e, t, i, r) { + var c, s, f, h; + for (s = Che(yz(FV(O9e(t)), i), H7e(n, t, r)), h = h1(n, t).Kc(); h.Ob(); ) + f = u(h.Pb(), 12), e[f.p] && (c = e[f.p].i, nn(s.d, new ZL(c, SY(s, c)))); + XY(s); + } + function QZ(n, e) { + this.f = new de(), this.b = new de(), this.j = new de(), this.a = n, this.c = e, this.c > 0 && ZRn(this, this.c - 1, (en(), Zn)), this.c < this.a.length - 1 && ZRn(this, this.c + 1, (en(), Wn)); + } + function oye(n, e) { + var t, i, r, c, s; + for (c = new C(e.d); c.a < c.c.c.length; ) + for (r = u(E(c), 105), s = u(ee(n.c, r), 118).o, i = new dp(r.b); i.a < i.c.a.length; ) + t = u(n5(i), 64), ZJ(r, t, s); + } + function YZ(n) { + n.length > 0 && n[0].length > 0 && (this.c = on(un(v(Hi(n[0][0]), (W(), rfn))))), this.a = K(Eie, J, 2117, n.length, 0, 2), this.b = K(Cie, J, 2118, n.length, 0, 2), this.d = new XFn(); + } + function sye(n) { + return n.c.length == 0 ? !1 : (Ln(0, n.c.length), u(n.c[0], 18)).c.i.k == (Vn(), Mi) ? !0 : Og(_r(new Tn(null, new In(n, 16)), new i3n()), new r3n()); + } + function DKn(n, e) { + var t, i, r, c, s, f, h; + for (f = aw(e), c = e.f, h = e.g, s = y.Math.sqrt(c * c + h * h), r = 0, i = new C(f); i.a < i.c.c.length; ) + t = u(E(i), 27), r += DKn(n, t); + return y.Math.max(r, s); + } + function Di() { + Di = F, Pa = new j6(n8, 0), Qf = new j6("FREE", 1), Kv = new j6("FIXED_SIDE", 2), Ud = new j6("FIXED_ORDER", 3), tl = new j6("FIXED_RATIO", 4), Uc = new j6("FIXED_POS", 5); + } + function fye(n, e) { + var t, i, r; + if (t = e.qi(n.a), t) { + for (r = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), ys)), i = 1; i < (Lu(), c0n).length; ++i) + if (An(c0n[i], r)) + return i; + } + return 0; + } + function hye(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], pl(c, "" + e); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function lye(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], pl(c, "" + e); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function LKn(n) { + var e, t, i; + for (i = new fd(ur, "{", "}"), t = n.vc().Kc(); t.Ob(); ) + e = u(t.Pb(), 44), pl(i, KDn(n, e.ld()) + "=" + KDn(n, e.md())); + return i.a ? i.e.length == 0 ? i.a.a : i.a.a + ("" + i.e) : i.c; + } + function aye(n) { + for (var e, t, i, r; !t6(n.o); ) + t = u(Sp(n.o), 42), i = u(t.a, 125), e = u(t.b, 218), r = HT(e, i), e.e == i ? (RC(r.g, e), i.e = r.e + e.a) : (RC(r.b, e), i.e = r.e - e.a), nn(n.e.a, i); + } + function ZZ(n, e) { + var t, i, r; + for (t = null, r = u(e.Kb(n), 20).Kc(); r.Ob(); ) + if (i = u(r.Pb(), 18), !t) + t = i.c.i == n ? i.d.i : i.c.i; + else if ((i.c.i == n ? i.d.i : i.c.i) != t) + return !1; + return !0; + } + function NKn(n, e) { + var t, i, r, c, s; + for (t = QHn(n, !1, e), r = new C(t); r.a < r.c.c.length; ) + i = u(E(r), 132), i.d == 0 ? ($N(i, null), xN(i, null)) : (c = i.a, s = i.b, $N(i, s), xN(i, c)); + } + function dye(n) { + var e, t; + return e = new ii(), Mo(e, rre), t = u(v(n, (W(), qc)), 21), t.Hc((mr(), B8)) && Mo(e, sre), t.Hc(vv) && Mo(e, cre), t.Hc(v2) && Mo(e, ore), t.Hc(kv) && Mo(e, ure), e; + } + function nnn(n, e, t) { + var i, r, c, s, f; + for (f8e(n), r = (n.k == null && (n.k = K(zK, J, 82, 0, 0, 1)), n.k), c = 0, s = r.length; c < s; ++c) + i = r[c], nnn(i); + f = n.f, f && nnn(f); + } + function bye(n) { + var e, t, i, r; + for (eOe(n), t = new ie(ce(Cl(n).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), i = e.c.i == n, r = i ? e.d : e.c, i ? Oi(e, null) : Zi(e, null), U(e, (W(), sfn), r), SCe(n, r.i); + } + function wye(n, e, t, i) { + var r, c; + switch (c = e.i, r = t[c.g][n.d[c.g]], c.g) { + case 1: + r -= i + e.j.b, e.g.b = r; + break; + case 3: + r += i, e.g.b = r; + break; + case 4: + r -= i + e.j.a, e.g.a = r; + break; + case 2: + r += i, e.g.a = r; + } + } + function gye(n) { + var e, t, i; + for (t = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); t.e != t.i.gc(); ) + if (e = u(ue(t), 27), i = cy(e), !pe(new ie(ce(i.a.Kc(), new En())))) + return e; + return null; + } + function wA() { + wA = F, pq = new d7("OVERLAP_REMOVAL", 0), bq = new d7(vVn, 1), mq = new d7("ROTATION", 2), wq = new d7("GRAPH_SIZE_CALCULATION", 3), gq = new d7("OUTGOING_EDGE_ANGLES", 4); + } + function pye() { + var n; + return Soe ? u(Mm((R1(), Ps), tv), 2115) : (n = u(D($c((R1(), Ps), tv), 569) ? $c(Ps, tv) : new EHn(), 569), Soe = !0, ROe(n), tNe(n), Hx(n), Dr(Ps, tv, n), n); + } + function Jx(n, e, t) { + var i, r; + if (n.j == 0) + return t; + if (r = u(U$n(n, e, t), 76), i = t.Lk(), !i.rk() || !n.a.am(i)) + throw M(new ec("Invalid entry feature '" + i.qk().zb + "." + i.xe() + "'")); + return r; + } + function mye(n, e) { + var t, i, r, c, s, f, h, l; + for (f = n.a, h = 0, l = f.length; h < l; ++h) + for (s = f[h], i = s, r = 0, c = i.length; r < c; ++r) + if (t = i[r], x(e) === x(t) || e != null && ct(e, t)) + return !0; + return !1; + } + function vye(n) { + var e, t, i; + return Cc(n, 0) >= 0 ? (t = Xk(n, QA), i = Bk(n, QA)) : (e = U1(n, 1), t = Xk(e, 5e8), i = Bk(e, 5e8), i = nr(Bs(i, 1), vi(n, 1))), lf(Bs(i, 32), vi(t, vr)); + } + function $Kn(n, e, t) { + var i, r; + switch (i = (oe(e.b != 0), u(Xo(e, e.a.a), 8)), t.g) { + case 0: + i.b = 0; + break; + case 2: + i.b = n.f; + break; + case 3: + i.a = 0; + break; + default: + i.a = n.g; + } + return r = ge(e, 0), _7(r, i), e; + } + function xKn(n, e, t, i) { + var r, c, s, f, h; + switch (h = n.b, c = e.d, s = c.j, f = fZ(s, h.d[s.g], t), r = it(Ki(c.n), c.a), c.j.g) { + case 1: + case 3: + f.a += r.a; + break; + case 2: + case 4: + f.b += r.b; + } + Kt(i, f, i.c.b, i.c); + } + function kye(n, e, t) { + var i, r, c, s; + for (s = qr(n.e, e, 0), c = new YG(), c.b = t, i = new xi(n.e, s); i.b < i.d.gc(); ) + r = (oe(i.b < i.d.gc()), u(i.d.Xb(i.c = i.b++), 10)), r.p = t, nn(c.e, r), bo(i); + return c; + } + function yye(n, e, t, i) { + var r, c, s, f, h; + for (r = null, c = 0, f = new C(e); f.a < f.c.c.length; ) + s = u(E(f), 27), h = s.i + s.g, n < s.j + s.f + i && (r ? t.i - h < t.i - c && (r = s) : r = s, c = r.i + r.g); + return r ? c + i : 0; + } + function jye(n, e, t, i) { + var r, c, s, f, h; + for (c = null, r = 0, f = new C(e); f.a < f.c.c.length; ) + s = u(E(f), 27), h = s.j + s.f, n < s.i + s.g + i && (c ? t.j - h < t.j - r && (c = s) : c = s, r = c.j + c.f); + return c ? r + i : 0; + } + function Eye(n) { + var e, t, i; + for (e = !1, i = n.b.c.length, t = 0; t < i; t++) + rY(u(sn(n.b, t), 443)) ? !e && t + 1 < i && rY(u(sn(n.b, t + 1), 443)) && (e = !0, u(sn(n.b, t), 443).a = !0) : e = !1; + } + function Cye(n, e, t, i, r) { + var c, s; + for (c = 0, s = 0; s < r; s++) + c = nr(c, bs(vi(e[s], vr), vi(i[s], vr))), n[s] = Ae(c), c = w0(c, 32); + for (; s < t; s++) + c = nr(c, vi(e[s], vr)), n[s] = Ae(c), c = w0(c, 32); + } + function Mye(n, e) { + Am(); + var t, i; + for (i = (dh(), sP), t = n; e > 1; e >>= 1) + e & 1 && (i = Ig(i, t)), t.d == 1 ? t = Ig(t, t) : t = new YBn(mUn(t.a, t.d, K(ye, _e, 28, t.d << 1, 15, 1))); + return i = Ig(i, t), i; + } + function enn() { + enn = F; + var n, e, t, i; + for (Nun = K(Ii, Ar, 28, 25, 15, 1), $un = K(Ii, Ar, 28, 33, 15, 1), i = 152587890625e-16, e = 32; e >= 0; e--) + $un[e] = i, i *= 0.5; + for (t = 1, n = 24; n >= 0; n--) + Nun[n] = t, t *= 0.5; + } + function Tye(n) { + var e, t; + if (on(un(z(n, (cn(), Rw))))) { + for (t = new ie(ce(Al(n).a.Kc(), new En())); pe(t); ) + if (e = u(fe(t), 74), _0(e) && on(un(z(e, Nd)))) + return !0; + } + return !1; + } + function FKn(n, e) { + var t, i, r; + fi(n.f, e) && (e.b = n, i = e.c, qr(n.j, i, 0) != -1 || nn(n.j, i), r = e.d, qr(n.j, r, 0) != -1 || nn(n.j, r), t = e.a.b, t.c.length != 0 && (!n.i && (n.i = new rRn(n)), Ove(n.i, t))); + } + function Aye(n) { + var e, t, i, r, c; + return t = n.c.d, i = t.j, r = n.d.d, c = r.j, i == c ? t.p < r.p ? 0 : 1 : RT(i) == c ? 0 : PY(i) == c ? 1 : (e = n.b, Su(e.b, RT(i)) ? 0 : 1); + } + function gd(n) { + var e; + this.d = new de(), this.c = n.c, this.e = n.d, this.b = n.b, this.f = new lPn(n.e), this.a = n.a, n.f ? this.g = n.f : this.g = (e = u(of(kO), 9), new _o(e, u(xs(e, e.length), 9), 0)); + } + function gA(n, e) { + var t, i, r, c, s, f; + r = n, s = Y6(r, "layoutOptions"), !s && (s = Y6(r, gWn)), s && (f = s, i = null, f && (i = (c = S$(f, K(fn, J, 2, 0, 6, 1)), new SD(f, c))), i && (t = new CMn(f, e), qi(i, t))); + } + function Gr(n) { + if (D(n, 207)) + return u(n, 27); + if (D(n, 193)) + return Sf(u(n, 123)); + throw M(n ? new Kl("Only support nodes and ports.") : new fp(MWn)); + } + function Sye(n, e, t, i) { + return (e >= 0 && An(n.substr(e, 3), "GMT") || e >= 0 && An(n.substr(e, 3), "UTC")) && (t[0] = e + 3), Nen(n, t, i); + } + function Pye(n, e) { + var t, i, r, c, s; + for (c = n.g.a, s = n.g.b, i = new C(n.d); i.a < i.c.c.length; ) + t = u(E(i), 72), r = t.n, r.a = c, n.i == (en(), Xn) ? r.b = s + n.j.b - t.o.b : r.b = s, it(r, e), c += t.o.a + n.e; + } + function BKn(n, e, t) { + if (n.b) + throw M(new Or("The task is already done.")); + return n.p != null ? !1 : (n.p = e, n.r = t, n.k && (n.o = (fl(), er(kc(Date.now()), d1))), !0); + } + function tnn(n) { + var e, t, i, r, c, s, f; + return f = new sp(), t = n.Pg(), r = t != null, r && j4(f, Eh, n.Pg()), i = n.xe(), c = i != null, c && j4(f, Qe, n.xe()), e = n.Og(), s = e != null, s && j4(f, "description", n.Og()), f; + } + function RKn(n, e, t) { + var i, r, c; + return c = n.q, n.q = e, n.Db & 4 && !(n.Db & 1) && (r = new Ci(n, 1, 9, c, e), t ? t.nj(r) : t = r), e ? (i = e.c, i != n.r && (t = n.Yk(i, t))) : n.r && (t = n.Yk(null, t)), t; + } + function Iye(n, e, t) { + var i, r, c, s, f; + for (t = (f = e, Wp(f, n.e, -1 - n.c, t)), s = HW(n.a), c = (i = new sd(new Ua(s.a).a), new $E(i)); c.a.b; ) + r = u(L0(c.a).ld(), 89), t = Nm(r, MA(r, n.a), t); + return t; + } + function Oye(n, e, t) { + var i, r, c, s, f; + for (t = (f = e, OM(f, n.e, -1 - n.c, t)), s = HW(n.a), c = (i = new sd(new Ua(s.a).a), new $E(i)); c.a.b; ) + r = u(L0(c.a).ld(), 89), t = Nm(r, MA(r, n.a), t); + return t; + } + function Dye(n, e, t, i) { + var r, c, s; + if (i == 0) + Oc(e, 0, n, t, n.length - t); + else + for (s = 32 - i, n[n.length - 1] = 0, c = n.length - 1; c > t; c--) + n[c] |= e[c - t - 1] >>> s, n[c - 1] = e[c - t - 1] << i; + for (r = 0; r < t; r++) + n[r] = 0; + } + function Lye(n) { + var e, t, i, r, c; + for (e = 0, t = 0, c = n.Kc(); c.Ob(); ) + i = u(c.Pb(), 117), e = y.Math.max(e, i.d.b), t = y.Math.max(t, i.d.c); + for (r = n.Kc(); r.Ob(); ) + i = u(r.Pb(), 117), i.d.b = e, i.d.c = t; + } + function Nye(n) { + var e, t, i, r, c; + for (t = 0, e = 0, c = n.Kc(); c.Ob(); ) + i = u(c.Pb(), 117), t = y.Math.max(t, i.d.d), e = y.Math.max(e, i.d.a); + for (r = n.Kc(); r.Ob(); ) + i = u(r.Pb(), 117), i.d.d = t, i.d.a = e; + } + function Qx(n, e, t, i, r) { + var c, s; + c = u(Wr(ut(e.Oc(), new bpn()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), Yk(c), s = u(od(n.b, t, i), 15), r == 0 ? s.cd(0, c) : s.Gc(c); + } + function $ye(n, e, t) { + t.Ug("Grow Tree", 1), n.b = e.f, on(un(v(e, (J4(), O8)))) ? (n.c = new kE(), DOn(n, null)) : n.c = new kE(), n.a = !1, uqn(n, e.f), U(e, oon, (_n(), !!n.a)), t.Vg(); + } + function inn(n) { + var e, t, i, r; + for (e = null, r = new C(n.Rf()); r.a < r.c.c.length; ) + i = u(E(r), 187), t = new Ho(i.Lf().a, i.Lf().b, i.Mf().a, i.Mf().b), e ? D5(e, t) : e = t; + return !e && (e = new mp()), e; + } + function Yx(n, e, t, i) { + var r, c; + return t == 1 ? (!n.n && (n.n = new q(Sr, n, 1, 7)), Vc(n.n, e, i)) : (c = u($n((r = u(Un(n, 16), 29), r || n.ii()), t), 69), c.wk().zk(n, ru(n), t - se(n.ii()), e, i)); + } + function Zx(n, e, t) { + var i, r, c, s, f; + for (i = t.gc(), n._i(n.i + i), f = n.i - e, f > 0 && Oc(n.g, e, n.g, e + i, f), s = t.Kc(), n.i += i, r = 0; r < i; ++r) + c = s.Pb(), I6(n, e, n.Zi(e, c)), n.Mi(e, c), n.Ni(), ++e; + return i != 0; + } + function Bf(n, e, t) { + var i; + return e != n.q ? (n.q && (t = OM(n.q, n, -10, t)), e && (t = Wp(e, n, -10, t)), t = RKn(n, e, t)) : n.Db & 4 && !(n.Db & 1) && (i = new Ci(n, 1, 9, e, e), t ? t.nj(i) : t = i), t; + } + function nF(n, e, t, i) { + return LV((t & wh) == 0, "flatMap does not support SUBSIZED characteristic"), LV((t & 4) == 0, "flatMap does not support SORTED characteristic"), Se(n), Se(e), new TDn(n, e, t, i); + } + function xye(n, e) { + IW(e, "Cannot suppress a null exception."), x7(e != n, "Exception can not suppress itself."), !n.i && (n.k == null ? n.k = A(T(zK, 1), J, 82, 0, [e]) : n.k[n.k.length] = e); + } + function Fye(n, e) { + var t; + if (t = tTn(n.b.ag(), e.b.ag()), t != 0) + return t; + switch (n.b.ag().g) { + case 1: + case 2: + return Ec(n.b.Nf(), e.b.Nf()); + case 3: + case 4: + return Ec(e.b.Nf(), n.b.Nf()); + } + return 0; + } + function Bye(n) { + var e, t, i; + for (i = n.e.c.length, n.a = Wa(ye, [J, _e], [53, 28], 15, [i, i], 2), t = new C(n.c); t.a < t.c.c.length; ) + e = u(E(t), 290), n.a[e.c.a][e.d.a] += u(v(e, (Us(), k3)), 17).a; + } + function Rye(n, e) { + var t, i, r, c, s; + if (n == null) + return null; + for (s = K(fs, gh, 28, 2 * e, 15, 1), i = 0, r = 0; i < e; ++i) + t = n[i] >> 4 & 15, c = n[i] & 15, s[r++] = Ldn[t], s[r++] = Ldn[c]; + return ws(s, 0, s.length); + } + function gu(n) { + var e, t; + return n >= hr ? (e = Sy + (n - hr >> 10 & 1023) & ui, t = 56320 + (n - hr & 1023) & ui, String.fromCharCode(e) + ("" + String.fromCharCode(t))) : String.fromCharCode(n & ui); + } + function Kye(n, e) { + Bb(); + var t, i, r, c; + return r = u(u(ot(n.r, e), 21), 87), r.gc() >= 2 ? (i = u(r.Kc().Pb(), 117), t = n.u.Hc((zu(), A9)), c = n.u.Hc(B3), !i.a && !t && (r.gc() == 2 || c)) : !1; + } + function KKn(n, e, t, i, r) { + var c, s, f; + for (c = Mqn(n, e, t, i, r), f = !1; !c; ) + EA(n, r, !0), f = !0, c = Mqn(n, e, t, i, r); + f && EA(n, r, !1), s = B$(r), s.c.length != 0 && (n.d && n.d.Gg(s), KKn(n, r, t, i, s)); + } + function pA() { + pA = F, dU = new y6(kh, 0), idn = new y6("DIRECTED", 1), cdn = new y6("UNDIRECTED", 2), edn = new y6("ASSOCIATION", 3), rdn = new y6("GENERALIZATION", 4), tdn = new y6("DEPENDENCY", 5); + } + function _ye(n, e) { + var t; + if (!Sf(n)) + throw M(new Or(tWn)); + switch (t = Sf(n), e.g) { + case 1: + return -(n.j + n.f); + case 2: + return n.i - t.g; + case 3: + return n.j - t.f; + case 4: + return -(n.i + n.g); + } + return 0; + } + function Hye(n, e, t) { + var i, r, c; + return i = e.Lk(), c = e.md(), r = i.Jk() ? V1(n, 4, i, c, null, Om(n, i, c, D(i, 102) && (u(i, 19).Bb & hr) != 0), !0) : V1(n, i.tk() ? 2 : 1, i, c, i.ik(), -1, !0), t ? t.nj(r) : t = r, t; + } + function ym(n, e) { + var t, i; + for (Jn(e), i = n.b.c.length, nn(n.b, e); i > 0; ) { + if (t = i, i = (i - 1) / 2 | 0, n.a.Ne(sn(n.b, i), e) <= 0) + return Go(n.b, t, e), !0; + Go(n.b, t, sn(n.b, i)); + } + return Go(n.b, i, e), !0; + } + function rnn(n, e, t, i) { + var r, c; + if (r = 0, t) + r = $T(n.a[t.g][e.g], i); + else + for (c = 0; c < dP; c++) + r = y.Math.max(r, $T(n.a[c][e.g], i)); + return e == (wf(), Jc) && n.b && (r = y.Math.max(r, n.b.a)), r; + } + function qye(n, e) { + var t, i, r, c, s, f; + return r = n.i, c = e.i, !r || !c || r.i != c.i || r.i == (en(), Zn) || r.i == (en(), Wn) ? !1 : (s = r.g.a, t = s + r.j.a, f = c.g.a, i = f + c.j.a, s <= i && t >= f); + } + function _Kn(n) { + switch (n.g) { + case 0: + return new umn(); + case 1: + return new omn(); + default: + throw M(new Gn("No implementation is available for the width approximator " + (n.f != null ? n.f : "" + n.g))); + } + } + function cnn(n, e, t, i) { + var r; + if (r = !1, Si(i) && (r = !0, j4(e, t, Oe(i))), r || Nb(i) && (r = !0, cnn(n, e, t, i)), r || D(i, 242) && (r = !0, nd(e, t, u(i, 242))), !r) + throw M(new vD(Ncn)); + } + function Uye(n, e) { + var t, i, r; + if (t = e.qi(n.a), t && (r = gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), vs), r != null)) { + for (i = 1; i < (Lu(), i0n).length; ++i) + if (An(i0n[i], r)) + return i; + } + return 0; + } + function Gye(n, e) { + var t, i, r; + if (t = e.qi(n.a), t && (r = gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), vs), r != null)) { + for (i = 1; i < (Lu(), r0n).length; ++i) + if (An(r0n[i], r)) + return i; + } + return 0; + } + function HKn(n, e) { + var t, i, r, c; + if (Jn(e), c = n.a.gc(), c < e.gc()) + for (t = n.a.ec().Kc(); t.Ob(); ) + i = t.Pb(), e.Hc(i) && t.Qb(); + else + for (r = e.Kc(); r.Ob(); ) + i = r.Pb(), n.a.Bc(i) != null; + return c != n.a.gc(); + } + function qKn(n) { + var e, t; + switch (t = Ki(cc(A(T(Ei, 1), J, 8, 0, [n.i.n, n.n, n.a]))), e = n.i.d, n.j.g) { + case 1: + t.b -= e.d; + break; + case 2: + t.a += e.c; + break; + case 3: + t.b += e.a; + break; + case 4: + t.a -= e.b; + } + return t; + } + function zye(n) { + var e; + for (e = (Hp(), u(fe(new ie(ce(ji(n).a.Kc(), new En()))), 18).c.i); e.k == (Vn(), Mi); ) + U(e, (W(), jj), (_n(), !0)), e = u(fe(new ie(ce(ji(e).a.Kc(), new En()))), 18).c.i; + } + function eF(n, e, t, i) { + var r, c, s, f; + for (f = g5(e, i), s = f.Kc(); s.Ob(); ) + r = u(s.Pb(), 12), n.d[r.p] = n.d[r.p] + n.c[t.p]; + for (f = g5(t, i), c = f.Kc(); c.Ob(); ) + r = u(c.Pb(), 12), n.d[r.p] = n.d[r.p] - n.c[e.p]; + } + function unn(n, e, t) { + var i, r; + for (r = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); r.e != r.i.gc(); ) + i = u(ue(r), 27), Ro(i, i.i + e, i.j + t); + qi((!n.b && (n.b = new q(Wt, n, 12, 3)), n.b), new dMn(e, t)); + } + function Xye(n, e, t, i) { + var r, c; + for (c = e, r = c.d == null || n.a.Ne(t.d, c.d) > 0 ? 1 : 0; c.a[r] != t; ) + c = c.a[r], r = n.a.Ne(t.d, c.d) > 0 ? 1 : 0; + c.a[r] = i, i.b = t.b, i.a[0] = t.a[0], i.a[1] = t.a[1], t.a[0] = null, t.a[1] = null; + } + function Vye(n) { + var e, t, i, r; + for (e = new Z(), t = K(so, Xh, 28, n.a.c.length, 16, 1), AW(t, t.length), r = new C(n.a); r.a < r.c.c.length; ) + i = u(E(r), 125), t[i.d] || (Kn(e.c, i), fRn(n, i, t)); + return e; + } + function UKn(n, e) { + var t, i, r, c, s; + for (r = e == 1 ? A_ : T_, i = r.a.ec().Kc(); i.Ob(); ) + for (t = u(i.Pb(), 88), s = u(ot(n.f.c, t), 21).Kc(); s.Ob(); ) + c = u(s.Pb(), 42), bu(n.b.b, c.b), bu(n.b.a, u(c.b, 86).d); + } + function Wye(n, e) { + var t; + e.Ug("Hierarchical port position processing", 1), t = n.b, t.c.length > 0 && bUn((Ln(0, t.c.length), u(t.c[0], 30)), n), t.c.length > 1 && bUn(u(sn(t, t.c.length - 1), 30), n), e.Vg(); + } + function Jye(n) { + zu(); + var e, t; + return e = yt(Fl, A(T(oO, 1), G, 279, 0, [Ia])), !(kk(LM(e, n)) > 1 || (t = yt(A9, A(T(oO, 1), G, 279, 0, [T9, B3])), kk(LM(t, n)) > 1)); + } + function onn(n, e) { + var t; + t = $c((R1(), Ps), n), D(t, 507) ? Dr(Ps, n, new NMn(this, e)) : Dr(Ps, n, this), tF(this, e), e == (o4(), Gdn) ? (this.wb = u(this, 2038), u(e, 2040)) : this.wb = (G1(), Hn); + } + function Qye(n) { + var e, t, i; + if (n == null) + return null; + for (e = null, t = 0; t < O9.length; ++t) + try { + return gCn(O9[t], n); + } catch (r) { + if (r = It(r), D(r, 33)) + i = r, e = i; + else + throw M(r); + } + throw M(new eT(e)); + } + function GKn() { + GKn = F, CQn = A(T(fn, 1), J, 2, 6, ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]), MQn = A(T(fn, 1), J, 2, 6, ["Jan", "Feb", "Mar", "Apr", c3, "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]); + } + function zKn(n) { + var e, t, i; + e = An(typeof e, xB) ? null : new Q0n(), e && (a4(), t = (i = 900, i >= d1 ? "error" : i >= 900 ? "warn" : i >= 800 ? "info" : "log"), eIn(t, n.a), n.b && fen(e, t, n.b, "Exception: ", !0)); + } + function v(n, e) { + var t, i; + return i = (!n.q && (n.q = new de()), ee(n.q, e)), i != null ? i : (t = e.Sg(), D(t, 4) && (t == null ? (!n.q && (n.q = new de()), Bp(n.q, e)) : (!n.q && (n.q = new de()), Ve(n.q, e, t))), t); + } + function Vi() { + Vi = F, Vs = new o7("P1_CYCLE_BREAKING", 0), Jh = new o7("P2_LAYERING", 1), Dc = new o7("P3_NODE_ORDERING", 2), _c = new o7("P4_NODE_PLACEMENT", 3), zr = new o7("P5_EDGE_ROUTING", 4); + } + function Yye(n, e) { + i5(); + var t; + if (n.c == e.c) { + if (n.b == e.b || cve(n.b, e.b)) { + if (t = Ile(n.b) ? 1 : -1, n.a && !e.a) + return t; + if (!n.a && e.a) + return -t; + } + return Ec(n.b.g, e.b.g); + } else + return bt(n.c, e.c); + } + function XKn(n, e) { + var t, i, r; + if (fnn(n, e)) + return !0; + for (i = new C(e); i.a < i.c.c.length; ) + if (t = u(E(i), 27), r = MKn(t), LA(n, t, r) || WFn(n, t) - n.g <= n.a) + return !0; + return !1; + } + function Wk() { + Wk = F, QI = (EF(), Y1n), Gq = fue, Uq = sue, G1n = cue, qq = oue, U1n = new f0(8), Yce = new Ni((He(), C1), U1n), Zce = new Ni(qd, 8), nue = J1n, H1n = eue, q1n = tue, Qce = new Ni(zj, (_n(), !1)); + } + function mA() { + mA = F, wan = new f0(15), Tue = new Ni((He(), C1), wan), Aue = new Ni(qd, 15), gan = new Ni(Jj, Y(0)), aan = Lue, Cue = Hd, Mue = Ta, lan = new Ni(x2, xVn), dan = Vj, ban = _2, Wq = Oue, Eue = Gj; + } + function Kh(n) { + if ((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i != 1 || (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i != 1) + throw M(new Gn(mK)); + return Gr(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84)); + } + function VKn(n) { + if ((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i != 1 || (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i != 1) + throw M(new Gn(mK)); + return Ck(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84)); + } + function WKn(n) { + if ((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i != 1 || (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i != 1) + throw M(new Gn(mK)); + return Ck(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84)); + } + function ra(n) { + if ((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i != 1 || (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i != 1) + throw M(new Gn(mK)); + return Gr(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84)); + } + function snn(n, e, t) { + var i, r, c; + if (++n.j, r = n.Ej(), e >= r || e < 0) + throw M(new Ir(vK + e + Td + r)); + if (t >= r || t < 0) + throw M(new Ir(kK + t + Td + r)); + return e != t ? i = (c = n.Cj(t), n.qj(e, c), c) : i = n.xj(t), i; + } + function JKn(n) { + var e, t, i; + if (i = n, n) + for (e = 0, t = n.Eh(); t; t = t.Eh()) { + if (++e > PB) + return JKn(t); + if (i = t, t == n) + throw M(new Or("There is a cycle in the containment hierarchy of " + n)); + } + return i; + } + function ca(n) { + var e, t, i; + for (i = new fd(ur, "[", "]"), t = n.Kc(); t.Ob(); ) + e = t.Pb(), pl(i, x(e) === x(n) ? "(this Collection)" : e == null ? pu : Jr(e)); + return i.a ? i.e.length == 0 ? i.a.a : i.a.a + ("" + i.e) : i.c; + } + function fnn(n, e) { + var t, i; + if (i = !1, e.gc() < 2) + return !1; + for (t = 0; t < e.gc(); t++) + t < e.gc() - 1 ? i = i | LA(n, u(e.Xb(t), 27), u(e.Xb(t + 1), 27)) : i = i | LA(n, u(e.Xb(t), 27), u(e.Xb(0), 27)); + return i; + } + function QKn(n, e) { + var t; + e != n.a ? (t = null, n.a && (t = u(n.a, 54).Th(n, 4, Ef, t)), e && (t = u(e, 54).Rh(n, 4, Ef, t)), t = kY(n, e, t), t && t.oj()) : n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 1, e, e)); + } + function hnn(n, e) { + var t; + e != n.e ? (n.e && RLn(HW(n.e), n), e && (!e.b && (e.b = new NE(new aD())), WAn(e.b, n)), t = ske(n, e, null), t && t.oj()) : n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 4, e, e)); + } + function Zye(n, e) { + var t; + t = e.o, hl(n.f) ? (n.j.a = y.Math.max(n.j.a, t.a), n.j.b += t.b, n.d.c.length > 1 && (n.j.b += n.e)) : (n.j.a += t.a, n.j.b = y.Math.max(n.j.b, t.b), n.d.c.length > 1 && (n.j.a += n.e)); + } + function ua() { + ua = F, one = A(T(lr, 1), Tc, 64, 0, [(en(), Xn), Zn, ae]), une = A(T(lr, 1), Tc, 64, 0, [Zn, ae, Wn]), sne = A(T(lr, 1), Tc, 64, 0, [ae, Wn, Xn]), fne = A(T(lr, 1), Tc, 64, 0, [Wn, Xn, Zn]); + } + function nje(n, e, t, i) { + var r, c, s, f, h, l, a; + if (s = n.c.d, f = n.d.d, s.j != f.j) + for (a = n.b, r = s.j, h = null; r != f.j; ) + h = e == 0 ? RT(r) : PY(r), c = fZ(r, a.d[r.g], t), l = fZ(h, a.d[h.g], t), Fe(i, it(c, l)), r = h; + } + function eje(n, e, t, i) { + var r, c, s, f, h; + return s = nKn(n.a, e, t), f = u(s.a, 17).a, c = u(s.b, 17).a, i && (h = u(v(e, (W(), Xu)), 10), r = u(v(t, Xu), 10), h && r && (_Dn(n.b, h, r), f += n.b.i, c += n.b.e)), f > c; + } + function YKn(n) { + var e, t, i, r, c, s, f, h, l; + for (this.a = yRn(n), this.b = new Z(), t = n, i = 0, r = t.length; i < r; ++i) + for (e = t[i], c = new Z(), nn(this.b, c), f = e, h = 0, l = f.length; h < l; ++h) + s = f[h], nn(c, new _u(s.j)); + } + function tje(n, e, t) { + var i, r, c; + return c = 0, i = t[e], e < t.length - 1 && (r = t[e + 1], n.b[e] ? (c = ZLe(n.d, i, r), c += pN(n.a, i, (en(), Zn)), c += pN(n.a, r, Wn)) : c = N4e(n.a, i, r)), n.c[e] && (c += c4e(n.a, i)), c; + } + function ije(n, e, t, i, r) { + var c, s, f, h; + for (h = null, f = new C(i); f.a < f.c.c.length; ) + if (s = u(E(f), 453), s != t && qr(s.e, r, 0) != -1) { + h = s; + break; + } + c = JN(r), Zi(c, t.b), Oi(c, h.b), Pn(n.a, r, new zC(c, e, t.f)); + } + function rje(n) { + var e, t, i, r; + if (vg(u(v(n.b, (cn(), Do)), 88))) + return 0; + for (e = 0, i = new C(n.a); i.a < i.c.c.length; ) + t = u(E(i), 10), t.k == (Vn(), Vt) && (r = t.o.a, e = y.Math.max(e, r)); + return e; + } + function ZKn(n) { + for (; n.g.c != 0 && n.d.c != 0; ) + OL(n.g).c > OL(n.d).c ? (n.i += n.g.c, px(n.d)) : OL(n.d).c > OL(n.g).c ? (n.e += n.d.c, px(n.g)) : (n.i += fPn(n.g), n.e += fPn(n.d), px(n.g), px(n.d)); + } + function cje(n, e, t) { + var i, r, c, s; + for (c = e.q, s = e.r, new ed((af(), Ea), e, c, 1), new ed(Ea, c, s, 1), r = new C(t); r.a < r.c.c.length; ) + i = u(E(r), 118), i != c && i != e && i != s && (Ven(n.a, i, e), Ven(n.a, i, s)); + } + function n_n(n, e, t, i) { + n.a.d = y.Math.min(e, t), n.a.a = y.Math.max(e, i) - n.a.d, e < t ? (n.b = 0.5 * (e + t), n.g = HR * n.b + 0.9 * e, n.f = HR * n.b + 0.9 * t) : (n.b = 0.5 * (e + i), n.g = HR * n.b + 0.9 * i, n.f = HR * n.b + 0.9 * e); + } + function uje(n) { + var e, t, i, r; + if (n.b != 0) { + for (e = new Ct(), r = ge(n, 0); r.b != r.d.c; ) + i = u(be(r), 40), Bi(e, F$(i)), t = i.e, t.a = u(v(i, (pt(), $j)), 17).a, t.b = u(v(i, xj), 17).a; + return e; + } + return new Ct(); + } + function oje(n) { + switch (u(v(n, (cn(), su)), 171).g) { + case 1: + U(n, su, (Yo(), H8)); + break; + case 2: + U(n, su, (Yo(), xw)); + break; + case 3: + U(n, su, (Yo(), _8)); + break; + case 4: + U(n, su, (Yo(), ya)); + } + } + function sje(n, e, t) { + var i; + t.Ug("Self-Loop routing", 1), i = x5e(e), PC(v(e, (JM(), b9))), Gt(_r(ut(ut(rc(new Tn(null, new In(e.b, 16)), new v2n()), new k2n()), new y2n()), new j2n()), new PCn(n, i)), t.Vg(); + } + function jm() { + jm = F, x8 = new m6(kh, 0), zsn = new m6(s3, 1), Wsn = new m6(f3, 2), Vsn = new m6("LEFT_RIGHT_CONSTRAINT_LOCKING", 3), Xsn = new m6("LEFT_RIGHT_CONNECTION_LOCKING", 4), Gsn = new m6(JXn, 5); + } + function e_n(n, e, t) { + var i, r, c, s, f, h, l; + f = t.a / 2, c = t.b / 2, i = y.Math.abs(e.a - n.a), r = y.Math.abs(e.b - n.b), h = 1, l = 1, i > f && (h = f / i), r > c && (l = c / r), s = y.Math.min(h, l), n.a += s * (e.a - n.a), n.b += s * (e.b - n.b); + } + function fje(n, e, t, i, r) { + var c, s; + for (s = !1, c = u(sn(t.b, 0), 27); BPe(n, e, c, i, r) && (s = !0, Rke(t, c), t.b.c.length != 0); ) + c = u(sn(t.b, 0), 27); + return t.b.c.length == 0 && Gk(t.j, t), s && fA(e.q), s; + } + function hje(n, e) { + Vg(); + var t, i, r, c; + if (e.b < 2) + return !1; + for (c = ge(e, 0), t = u(be(c), 8), i = t; c.b != c.d.c; ) { + if (r = u(be(c), 8), mF(n, i, r)) + return !0; + i = r; + } + return !!mF(n, i, t); + } + function lnn(n, e, t, i) { + var r, c; + return t == 0 ? (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), UC(n.o, e, i)) : (c = u($n((r = u(Un(n, 16), 29), r || n.ii()), t), 69), c.wk().Ak(n, ru(n), t - se(n.ii()), e, i)); + } + function tF(n, e) { + var t; + e != n.sb ? (t = null, n.sb && (t = u(n.sb, 54).Th(n, 1, I9, t)), e && (t = u(e, 54).Rh(n, 1, I9, t)), t = EY(n, e, t), t && t.oj()) : n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 4, e, e)); + } + function lje(n, e) { + var t, i, r, c; + if (e) + r = yl(e, "x"), t = new zkn(n), _4(t.a, (Jn(r), r)), c = yl(e, "y"), i = new Xkn(n), q4(i.a, (Jn(c), c)); + else + throw M(new eh("All edge sections need an end point.")); + } + function aje(n, e) { + var t, i, r, c; + if (e) + r = yl(e, "x"), t = new qkn(n), H4(t.a, (Jn(r), r)), c = yl(e, "y"), i = new Ukn(n), U4(i.a, (Jn(c), c)); + else + throw M(new eh("All edge sections need a start point.")); + } + function dje(n, e) { + var t, i, r, c, s, f, h; + for (i = SFn(n), c = 0, f = i.length; c < f; ++c) + zKn(e); + for (h = !Uf && n.e ? Uf ? null : n.d : null; h; ) { + for (t = SFn(h), r = 0, s = t.length; r < s; ++r) + zKn(e); + h = !Uf && h.e ? Uf ? null : h.d : null; + } + } + function t_n(n, e) { + var t, i; + i = u(v(e, (cn(), Ut)), 101), U(e, (W(), ffn), i), t = e.e, t && (Gt(new Tn(null, new In(t.a, 16)), new DG(n)), Gt(rc(new Tn(null, new In(t.b, 16)), new qU()), new LG(n))); + } + function Vn() { + Vn = F, Vt = new b6("NORMAL", 0), Mi = new b6("LONG_EDGE", 1), Zt = new b6("EXTERNAL_PORT", 2), Hc = new b6("NORTH_SOUTH_PORT", 3), Sc = new b6("LABEL", 4), Gf = new b6("BREAKING_POINT", 5); + } + function bje(n) { + var e, t, i, r; + if (e = !1, kt(n, (W(), R8))) + for (t = u(v(n, R8), 85), r = new C(n.j); r.a < r.c.c.length; ) + i = u(E(r), 12), EMe(i) && (e || (xEe(Hi(n)), e = !0), P8e(u(t.xc(i), 314))); + } + function wje(n) { + var e, t, i, r, c, s, f, h, l; + return l = tnn(n), t = n.e, c = t != null, c && j4(l, KS, n.e), f = n.k, s = !!f, s && j4(l, "type", SL(n.k)), i = Z9(n.j), r = !i, r && (h = new _a(), bf(l, pK, h), e = new dyn(h), qi(n.j, e)), l; + } + function gje(n) { + var e, t, i, r; + for (r = z1((Co(n.gc(), "size"), new fg()), 123), i = !0, t = Ja(n).Kc(); t.Ob(); ) + e = u(t.Pb(), 44), i || (r.a += ur), i = !1, Lc(z1(Lc(r, e.ld()), 61), e.md()); + return (r.a += "}", r).a; + } + function i_n(n, e) { + var t, i, r; + return e &= 63, e < 22 ? (t = n.l << e, i = n.m << e | n.l >> 22 - e, r = n.h << e | n.m >> 22 - e) : e < 44 ? (t = 0, i = n.l << e - 22, r = n.m << e - 22 | n.l >> 44 - e) : (t = 0, i = 0, r = n.l << e - 44), Zc(t & ro, i & ro, r & Il); + } + function sw(n) { + if (bun == null && (bun = new RegExp("^\\s*[+-]?(NaN|Infinity|((\\d+\\.?\\d*)|(\\.\\d+))([eE][+-]?\\d+)?[dDfF]?)\\s*$")), !bun.test(n)) + throw M(new th(V0 + n + '"')); + return parseFloat(n); + } + function r_n(n, e) { + var t, i, r, c, s; + for (r = e == 1 ? A_ : T_, i = r.a.ec().Kc(); i.Ob(); ) + for (t = u(i.Pb(), 88), s = u(ot(n.f.c, t), 21).Kc(); s.Ob(); ) + c = u(s.Pb(), 42), nn(n.b.b, u(c.b, 86)), nn(n.b.a, u(c.b, 86).d); + } + function pje(n, e) { + var t, i, r, c; + for (c = e.b.j, n.a = K(ye, _e, 28, c.c.length, 15, 1), r = 0, i = 0; i < c.c.length; i++) + t = (Ln(i, c.c.length), u(c.c[i], 12)), t.e.c.length == 0 && t.g.c.length == 0 ? r += 1 : r += 3, n.a[i] = r; + } + function vA() { + vA = F, nH = new g6("ALWAYS_UP", 0), Z_ = new g6("ALWAYS_DOWN", 1), tH = new g6("DIRECTION_UP", 2), eH = new g6("DIRECTION_DOWN", 3), iH = new g6("SMART_UP", 4), JP = new g6("SMART_DOWN", 5); + } + function mje(n, e) { + if (n < 0 || e < 0) + throw M(new Gn("k and n must be positive")); + if (e > n) + throw M(new Gn("k must be smaller than n")); + return e == 0 || e == n ? 1 : n == 0 ? 0 : BZ(n) / (BZ(e) * BZ(n - e)); + } + function ann(n, e) { + var t, i, r, c; + for (t = new SX(n); t.g == null && !t.c ? uJ(t) : t.g == null || t.i != 0 && u(t.g[t.i - 1], 51).Ob(); ) + if (c = u(CA(t), 58), D(c, 167)) + for (i = u(c, 167), r = 0; r < e.length; r++) + e[r].Kg(i); + } + function iF(n) { + var e; + return n.Db & 64 ? ox(n) : (e = new ls(ox(n)), e.a += " (height: ", hg(e, n.f), e.a += ", width: ", hg(e, n.g), e.a += ", x: ", hg(e, n.i), e.a += ", y: ", hg(e, n.j), e.a += ")", e.a); + } + function vje(n) { + var e, t, i, r, c, s, f; + for (e = new Ql(), i = n, r = 0, c = i.length; r < c; ++r) + if (t = i[r], s = Se(t.ld()), f = s1(e, s, Se(t.md())), f != null) + throw M(new Gn("duplicate key: " + s)); + this.b = (Dn(), new eD(e)); + } + function kje(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], pl(c, String.fromCharCode(e)); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function dnn() { + dnn = F, bon = (uT(), vP), KYn = new Mn(cS, bon), Y(1), RYn = new Mn(Wtn, Y(300)), Y(0), qYn = new Mn(Jtn, Y(0)), UYn = new Mn(ZB, vh), _Yn = new Mn(nR, 5), GYn = vP, HYn = v_; + } + function yje(n, e) { + var t; + if (e != null && !n.c.Hk().fk(e)) + throw t = D(e, 58) ? u(e, 58).Dh().zb : Xa(wo(e)), M(new i4(ba + n.c.xe() + "'s type '" + n.c.Hk().xe() + "' does not permit a value of type '" + t + "'")); + } + function jje(n, e, t) { + var i, r; + for (r = new xi(n.b, 0); r.b < r.d.gc(); ) + i = (oe(r.b < r.d.gc()), u(r.d.Xb(r.c = r.b++), 72)), x(v(i, (W(), ofn))) === x(e) && (vnn(i.n, Hi(n.c.i), t), bo(r), nn(e.b, i)); + } + function c_n(n) { + var e, t; + return t = y.Math.sqrt((n.k == null && (n.k = BQ(n, new qpn())), $(n.k) / (n.b * (n.g == null && (n.g = Cxn(n, new JU())), $(n.g))))), e = Ae(kc(y.Math.round(t))), e = y.Math.min(e, n.f), e; + } + function Eje() { + var n, e, t; + for (e = 0, n = 0; n < 1; n++) { + if (t = Hnn((zn(n, 1), "X".charCodeAt(n))), t == 0) + throw M(new Le((zn(n, 1 + 1), "Unknown Option: " + "X".substr(n)))); + e |= t; + } + return e; + } + function Ic() { + Du(), kV.call(this), this.j = (en(), sc), this.a = new Li(), new sD(), this.f = (Co(2, mw), new zc(2)), this.e = (Co(4, mw), new zc(4)), this.g = (Co(4, mw), new zc(4)), this.b = new OCn(this.e, this.g); + } + function Cje(n, e) { + var t, i; + return !(on(un(v(e, (W(), zf)))) || (i = e.c.i, n == (Yo(), _8) && i.k == (Vn(), Sc)) || (t = u(v(i, (cn(), su)), 171), t == ya)); + } + function Mje(n, e) { + var t, i; + return !(on(un(v(e, (W(), zf)))) || (i = e.d.i, n == (Yo(), H8) && i.k == (Vn(), Sc)) || (t = u(v(i, (cn(), su)), 171), t == xw)); + } + function Tje(n, e) { + var t, i, r, c, s, f, h; + for (s = n.d, h = n.o, f = new Ho(-s.b, -s.d, s.b + h.a + s.c, s.d + h.b + s.a), i = e, r = 0, c = i.length; r < c; ++r) + t = i[r], t && D5(f, t.i); + s.b = -f.c, s.d = -f.d, s.c = f.b - s.b - h.a, s.a = f.a - s.d - h.b; + } + function Aje(n, e) { + if (e.a) + switch (u(v(e.b, (W(), ffn)), 101).g) { + case 0: + case 1: + Gke(e); + case 2: + Gt(new Tn(null, new In(e.d, 16)), new zU()), PCe(n.a, e); + } + else + Gt(new Tn(null, new In(e.d, 16)), new zU()); + } + function Jk() { + Jk = F, B1n = new w7("CENTER_DISTANCE", 0), _q = new w7("CIRCLE_UNDERLAP", 1), K1n = new w7("RECTANGLE_UNDERLAP", 2), Hq = new w7("INVERTED_OVERLAP", 3), R1n = new w7("MINIMUM_ROOT_DISTANCE", 4); + } + function Sje(n) { + gen(); + var e, t, i, r, c; + if (n == null) + return null; + for (i = n.length, r = i * 2, e = K(fs, gh, 28, r, 15, 1), t = 0; t < i; t++) + c = n[t], c < 0 && (c += 256), e[t * 2] = SO[c >> 4], e[t * 2 + 1] = SO[c & 15]; + return ws(e, 0, e.length); + } + function Pje(n) { + yM(); + var e, t, i; + switch (i = n.c.length, i) { + case 0: + return cQn; + case 1: + return e = u(R_n(new C(n)), 44), jbe(e.ld(), e.md()); + default: + return t = u(Ff(n, K(Pd, WA, 44, n.c.length, 0, 1)), 173), new lz(t); + } + } + function Ije(n) { + var e, t, i, r, c, s; + for (e = new Cg(), t = new Cg(), W1(e, n), W1(t, n); t.b != t.c; ) + for (r = u(Sp(t), 36), s = new C(r.a); s.a < s.c.c.length; ) + c = u(E(s), 10), c.e && (i = c.e, W1(e, i), W1(t, i)); + return e; + } + function h1(n, e) { + switch (e.g) { + case 1: + return Cp(n.j, (Du(), Ron)); + case 2: + return Cp(n.j, (Du(), Fon)); + case 3: + return Cp(n.j, (Du(), _on)); + case 4: + return Cp(n.j, (Du(), Hon)); + default: + return Dn(), Dn(), sr; + } + } + function Oje(n, e) { + var t, i, r; + t = wbe(e, n.e), i = u(ee(n.g.f, t), 17).a, r = n.a.c.length - 1, n.a.c.length != 0 && u(sn(n.a, r), 294).c == i ? (++u(sn(n.a, r), 294).a, ++u(sn(n.a, r), 294).b) : nn(n.a, new lAn(i)); + } + function Dje(n, e, t) { + var i, r; + return i = VAe(n, e, t), i != 0 ? i : kt(e, (W(), dt)) && kt(t, dt) ? (r = Ec(u(v(e, dt), 17).a, u(v(t, dt), 17).a), r < 0 ? hy(n, e, t) : r > 0 && hy(n, t, e), r) : mCe(n, e, t); + } + function oa() { + oa = F, hce = (He(), N3), lce = qd, uce = Hd, oce = _2, sce = Ta, cce = K2, Qln = Wj, fce = Ww, kq = (Ten(), Vre), yq = Wre, Zln = Zre, jq = tce, n1n = nce, e1n = ece, Yln = Jre, _I = Qre, HI = Yre, Fj = ice, t1n = rce, Jln = Xre; + } + function u_n(n, e) { + var t, i, r, c, s; + if (n.e <= e || npe(n, n.g, e)) + return n.g; + for (c = n.r, i = n.g, s = n.r, r = (c - i) / 2 + i; i + 1 < c; ) + t = G5(n, r, !1), t.b <= r && t.a <= e ? (s = r, c = r) : i = r, r = (c - i) / 2 + i; + return s; + } + function Lje(n, e, t) { + var i; + i = Aqn(n, e, !0), BKn(t, "Recursive Graph Layout", i), ann(e, A(T(uan, 1), Bn, 536, 0, [new E8n()])), Lf(e, (He(), q2)) || ann(e, A(T(uan, 1), Bn, 536, 0, [new Amn()])), dtn(n, e, null, t), o_n(t); + } + function o_n(n) { + var e; + if (n.p == null) + throw M(new Or("The task has not begun yet.")); + n.b || (n.k && (e = (fl(), er(kc(Date.now()), d1)), n.q = id(bs(e, n.o)) * 1e-9), n.c < n.r && MQ(n, n.r - n.c), n.b = !0); + } + function Qk(n) { + var e, t, i; + for (i = new Tu(), Fe(i, new V(n.j, n.k)), t = new ne((!n.a && (n.a = new ti(xo, n, 5)), n.a)); t.e != t.i.gc(); ) + e = u(ue(t), 377), Fe(i, new V(e.a, e.b)); + return Fe(i, new V(n.b, n.c)), i; + } + function Nje(n, e, t, i, r) { + var c, s, f, h, l, a; + if (r) + for (h = r.a.length, c = new Qa(h), a = (c.b - c.a) * c.c < 0 ? (K1(), xa) : new q1(c); a.Ob(); ) + l = u(a.Pb(), 17), f = L4(r, l.a), s = new DIn(n, e, t, i), tPe(s.a, s.b, s.c, s.d, f); + } + function bnn(n, e) { + var t; + if (x(n) === x(e)) + return !0; + if (D(e, 21)) { + t = u(e, 21); + try { + return n.gc() == t.gc() && n.Ic(t); + } catch (i) { + if (i = It(i), D(i, 169) || D(i, 212)) + return !1; + throw M(i); + } + } + return !1; + } + function rF(n, e, t, i, r, c) { + switch (this.c = n, e.g) { + case 2: + if (n.a.Ne(r, t) < 0) + throw M(new Gn(Atn + r + Jzn + t)); + break; + case 1: + n.a.Ne(r, r); + break; + case 3: + n.a.Ne(t, t); + } + this.f = e, this.b = t, this.a = i, this.e = r, this.d = c; + } + function wnn(n, e) { + var t; + nn(n.d, e), t = e.Mf(), n.c ? (n.e.a = y.Math.max(n.e.a, t.a), n.e.b += t.b, n.d.c.length > 1 && (n.e.b += n.a)) : (n.e.a += t.a, n.e.b = y.Math.max(n.e.b, t.b), n.d.c.length > 1 && (n.e.a += n.a)); + } + function $je(n) { + var e, t, i, r; + switch (r = n.i, e = r.b, i = r.j, t = r.g, r.a.g) { + case 0: + t.a = (n.g.b.o.a - i.a) / 2; + break; + case 1: + t.a = e.d.n.a + e.d.a.a; + break; + case 2: + t.a = e.d.n.a + e.d.a.a - i.a; + break; + case 3: + t.b = e.d.n.b + e.d.a.b; + } + } + function xje(n, e, t) { + var i, r, c; + for (r = new ie(ce(Cl(t).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), !fr(i) && !(!fr(i) && i.c.i.c == i.d.i.c) && (c = JHn(n, i, t, new njn()), c.c.length > 1 && Kn(e.c, c)); + } + function s_n(n, e, t, i, r) { + if (i < e || r < t) + throw M(new Gn("The highx must be bigger then lowx and the highy must be bigger then lowy")); + return n.a < e ? n.a = e : n.a > i && (n.a = i), n.b < t ? n.b = t : n.b > r && (n.b = r), n; + } + function Fje(n) { + if (D(n, 143)) + return bTe(u(n, 143)); + if (D(n, 233)) + return r8e(u(n, 233)); + if (D(n, 23)) + return wje(u(n, 23)); + throw M(new Gn($cn + ca(new Ku(A(T(ki, 1), Bn, 1, 5, [n]))))); + } + function Bje(n, e, t, i, r) { + var c, s, f; + for (c = !0, s = 0; s < i; s++) + c = c & t[s] == 0; + if (r == 0) + Oc(t, i, n, 0, e), s = e; + else { + for (f = 32 - r, c = c & t[s] << f == 0, s = 0; s < e - 1; s++) + n[s] = t[s + i] >>> r | t[s + i + 1] << f; + n[s] = t[s + i] >>> r, ++s; + } + return c; + } + function gnn(n, e, t, i) { + var r, c, s; + if (e.k == (Vn(), Mi)) { + for (c = new ie(ce(ji(e).a.Kc(), new En())); pe(c); ) + if (r = u(fe(c), 18), s = r.c.i.k, s == Mi && n.c.a[r.c.i.c.p] == i && n.c.a[e.c.p] == t) + return !0; + } + return !1; + } + function Rje(n, e) { + var t, i, r, c; + return e &= 63, t = n.h & Il, e < 22 ? (c = t >>> e, r = n.m >> e | t << 22 - e, i = n.l >> e | n.m << 22 - e) : e < 44 ? (c = 0, r = t >>> e - 22, i = n.m >> e - 22 | n.h << 44 - e) : (c = 0, r = 0, i = t >>> e - 44), Zc(i & ro, r & ro, c & Il); + } + function f_n(n, e, t, i) { + var r; + this.b = i, this.e = n == (O0(), Z8), r = e[t], this.d = Wa(so, [J, Xh], [183, 28], 16, [r.length, r.length], 2), this.a = Wa(ye, [J, _e], [53, 28], 15, [r.length, r.length], 2), this.c = new QZ(e, t); + } + function Kje(n) { + var e, t, i; + for (n.k = new fJ((en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn])).length, n.j.c.length), i = new C(n.j); i.a < i.c.c.length; ) + t = u(E(i), 113), e = t.d.j, Pn(n.k, e, t); + n.e = nTe(Tp(n.k)); + } + function h_n(n, e) { + var t, i, r; + fi(n.d, e), t = new H3n(), Ve(n.c, e, t), t.f = tx(e.c), t.a = tx(e.d), t.d = (B5(), r = e.c.i.k, r == (Vn(), Vt) || r == Gf), t.e = (i = e.d.i.k, i == Vt || i == Gf), t.b = e.c.j == (en(), Wn), t.c = e.d.j == Zn; + } + function _je(n) { + var e, t, i, r, c; + for (c = tt, r = tt, i = new C(xg(n)); i.a < i.c.c.length; ) + t = u(E(i), 218), e = t.e.e - t.d.e, t.e == n && e < r ? r = e : e < c && (c = e); + return r == tt && (r = -1), c == tt && (c = -1), new bi(Y(r), Y(c)); + } + function Hje(n, e) { + var t, i, r; + return r = i2, i = (T5(), fj), r = y.Math.abs(n.b), t = y.Math.abs(e.f - n.b), t < r && (r = t, i = gP), t = y.Math.abs(n.a), t < r && (r = t, i = hj), t = y.Math.abs(e.g - n.a), t < r && (r = t, i = wP), i; + } + function qje(n, e) { + var t, i, r, c; + for (t = e.a.o.a, c = new Jl(Hi(e.a).b, e.c, e.f + 1), r = new zv(c); r.b < r.d.gc(); ) + if (i = (oe(r.b < r.d.gc()), u(r.d.Xb(r.c = r.b++), 30)), i.c.a >= t) + return Em(n, e, i.p), !0; + return !1; + } + function Ug(n, e, t, i) { + var r, c, s, f, h, l; + for (s = t.length, c = 0, r = -1, l = t$n((zn(e, n.length + 1), n.substr(e)), (xL(), Dun)), f = 0; f < s; ++f) + h = t[f].length, h > c && dwe(l, t$n(t[f], Dun)) && (r = f, c = h); + return r >= 0 && (i[0] = e + c), r; + } + function l_n(n) { + var e; + return n.Db & 64 ? iF(n) : (e = new mo(Ccn), !n.a || Re(Re((e.a += ' "', e), n.a), '"'), Re(t0(Re(t0(Re(t0(Re(t0((e.a += " (", e), n.i), ","), n.j), " | "), n.g), ","), n.f), ")"), e.a); + } + function a_n(n, e, t) { + var i, r, c, s, f; + for (f = cu(n.e.Dh(), e), r = u(n.g, 124), i = 0, s = 0; s < n.i; ++s) + if (c = r[s], f.am(c.Lk())) { + if (i == t) + return dw(n, s), br(), u(e, 69).xk() ? c : c.md(); + ++i; + } + throw M(new Ir(p8 + t + Td + i)); + } + function d_n(n) { + var e, t, i; + if (e = n.c, e == 2 || e == 7 || e == 1) + return nt(), nt(), K9; + for (i = ftn(n), t = null; (e = n.c) != 2 && e != 7 && e != 1; ) + t || (t = (nt(), nt(), new S6(1)), pd(t, i), i = t), pd(t, ftn(n)); + return i; + } + function Uje(n, e, t) { + return n < 0 || n > t ? Tnn(n, t, "start index") : e < 0 || e > t ? Tnn(e, t, "end index") : R5("end index (%s) must not be less than start index (%s)", A(T(ki, 1), Bn, 1, 5, [Y(e), Y(n)])); + } + function b_n(n, e) { + var t, i, r, c; + for (i = 0, r = n.length; i < r; i++) { + c = n[i]; + try { + c[1] ? c[0].Um() && (e = Wbe(e, c)) : c[0].Um(); + } catch (s) { + if (s = It(s), D(s, 82)) + t = s, HE(), Fge(D(t, 486) ? u(t, 486).ke() : t); + else + throw M(s); + } + } + return e; + } + function Em(n, e, t) { + var i, r, c; + for (t != e.c + e.b.gc() && hIe(e.a, Tve(e, t - e.c)), c = e.a.c.p, n.a[c] = y.Math.max(n.a[c], e.a.o.a), r = u(v(e.a, (W(), K8)), 15).Kc(); r.Ob(); ) + i = u(r.Pb(), 72), U(i, x_, (_n(), !0)); + } + function Gje(n, e) { + var t, i, r; + r = jTe(e), U(e, (W(), dH), r), r && (i = tt, gr(n.f, r) && (i = u(Kr(gr(n.f, r)), 17).a), t = u(sn(e.g, 0), 18), on(un(v(t, zf))) || Ve(n, r, Y(y.Math.min(u(v(t, dt), 17).a, i)))); + } + function w_n(n, e, t) { + var i, r, c, s, f; + for (e.p = -1, f = F0(e, (pr(), Qc)).Kc(); f.Ob(); ) + for (s = u(f.Pb(), 12), r = new C(s.g); r.a < r.c.c.length; ) + i = u(E(r), 18), c = i.d.i, e != c && (c.p < 0 ? t.Fc(i) : c.p > 0 && w_n(n, c, t)); + e.p = 0; + } + function ln(n) { + var e; + this.c = new Ct(), this.f = n.e, this.e = n.d, this.i = n.g, this.d = n.c, this.b = n.b, this.k = n.j, this.a = n.a, n.i ? this.j = n.i : this.j = (e = u(of(Zh), 9), new _o(e, u(xs(e, e.length), 9), 0)), this.g = n.f; + } + function zje(n) { + var e, t, i, r; + for (e = z1(Re(new mo("Predicates."), "and"), 40), t = !0, r = new zv(n); r.b < r.d.gc(); ) + i = (oe(r.b < r.d.gc()), r.d.Xb(r.c = r.b++)), t || (e.a += ","), e.a += "" + i, t = !1; + return (e.a += ")", e).a; + } + function g_n(n, e, t) { + var i, r, c; + if (!(t <= e + 2)) + for (r = (t - e) / 2 | 0, i = 0; i < r; ++i) + c = (Ln(e + i, n.c.length), u(n.c[e + i], 12)), Go(n, e + i, (Ln(t - i - 1, n.c.length), u(n.c[t - i - 1], 12))), Ln(t - i - 1, n.c.length), n.c[t - i - 1] = c; + } + function Xje(n, e, t) { + var i, r, c, s, f, h, l, a; + c = n.d.p, f = c.e, h = c.r, n.g = new D7(h), s = n.d.o.c.p, i = s > 0 ? f[s - 1] : K(Qh, b1, 10, 0, 0, 1), r = f[s], l = s < f.length - 1 ? f[s + 1] : K(Qh, b1, 10, 0, 0, 1), a = e == t - 1, a ? DN(n.g, r, l) : DN(n.g, i, r); + } + function p_n(n) { + var e; + this.j = new Z(), this.f = new ni(), this.b = (e = u(of(lr), 9), new _o(e, u(xs(e, e.length), 9), 0)), this.d = K(ye, _e, 28, (en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn])).length, 15, 1), this.g = n; + } + function m_n(n, e) { + var t, i, r; + if (e.c.length != 0) { + for (t = XKn(n, e), r = !1; !t; ) + EA(n, e, !0), r = !0, t = XKn(n, e); + r && EA(n, e, !1), i = B$(e), n.b && n.b.Gg(i), n.a = WFn(n, (Ln(0, e.c.length), u(e.c[0], 27))), m_n(n, i); + } + } + function cF(n, e) { + var t, i, r; + if (i = $n(n.Dh(), e), t = e - n.ji(), t < 0) + if (i) + if (i.rk()) + r = n.Ih(i), r >= 0 ? n.ki(r) : Inn(n, i); + else + throw M(new Gn(ba + i.xe() + b8)); + else + throw M(new Gn(dWn + e + bWn)); + else + Wo(n, t, i); + } + function pnn(n) { + var e, t; + if (t = null, e = !1, D(n, 211) && (e = !0, t = u(n, 211).a), e || D(n, 263) && (e = !0, t = "" + u(n, 263).a), e || D(n, 493) && (e = !0, t = "" + u(n, 493).a), !e) + throw M(new vD(Ncn)); + return t; + } + function mnn(n, e, t) { + var i, r, c, s, f, h; + for (h = cu(n.e.Dh(), e), i = 0, f = n.i, r = u(n.g, 124), s = 0; s < n.i; ++s) + if (c = r[s], h.am(c.Lk())) { + if (t == i) + return s; + ++i, f = s + 1; + } + if (t == i) + return f; + throw M(new Ir(p8 + t + Td + i)); + } + function Vje(n, e) { + var t, i, r, c; + if (n.f.c.length == 0) + return null; + for (c = new mp(), i = new C(n.f); i.a < i.c.c.length; ) + t = u(E(i), 72), r = t.o, c.b = y.Math.max(c.b, r.a), c.a += r.b; + return c.a += (n.f.c.length - 1) * e, c; + } + function Wje(n) { + var e, t, i, r; + for (t = new Ct(), Bi(t, n.o), i = new nz(); t.b != 0; ) + e = u(t.b == 0 ? null : (oe(t.b != 0), Xo(t, t.a.a)), 515), r = tzn(n, e, !0), r && nn(i.a, e); + for (; i.a.c.length != 0; ) + e = u(xFn(i), 515), tzn(n, e, !1); + } + function l1() { + l1 = F, oan = new wp(n8, 0), yi = new wp("BOOLEAN", 1), Zr = new wp("INT", 2), $2 = new wp("STRING", 3), Qi = new wp("DOUBLE", 4), Pt = new wp("ENUM", 5), L3 = new wp("ENUMSET", 6), Vf = new wp("OBJECT", 7); + } + function D5(n, e) { + var t, i, r, c, s; + i = y.Math.min(n.c, e.c), c = y.Math.min(n.d, e.d), r = y.Math.max(n.c + n.b, e.c + e.b), s = y.Math.max(n.d + n.a, e.d + e.a), r < i && (t = i, i = r, r = t), s < c && (t = c, c = s, s = t), LSn(n, i, c, r - i, s - c); + } + function v_n(n, e) { + var t, i; + if (n.f) { + for (; e.Ob(); ) + if (t = u(e.Pb(), 76), i = t.Lk(), D(i, 102) && u(i, 19).Bb & yc && (!n.e || i.pk() != Hv || i.Lj() != 0) && t.md() != null) + return e.Ub(), !0; + return !1; + } else + return e.Ob(); + } + function k_n(n, e) { + var t, i; + if (n.f) { + for (; e.Sb(); ) + if (t = u(e.Ub(), 76), i = t.Lk(), D(i, 102) && u(i, 19).Bb & yc && (!n.e || i.pk() != Hv || i.Lj() != 0) && t.md() != null) + return e.Pb(), !0; + return !1; + } else + return e.Sb(); + } + function Lu() { + Lu = F, r0n = A(T(fn, 1), J, 2, 6, [Wcn, Qy, YS, IJn, ZS, SK, KS]), i0n = A(T(fn, 1), J, 2, 6, [Wcn, "empty", Qy, Jy, "elementOnly"]), c0n = A(T(fn, 1), J, 2, 6, [Wcn, "preserve", "replace", vf]), zi = new $Sn(); + } + function vnn(n, e, t) { + var i, r, c; + if (e != t) { + i = e; + do + it(n, i.c), r = i.e, r && (c = i.d, a0(n, c.b, c.d), it(n, r.n), i = Hi(r)); + while (r); + i = t; + do + mi(n, i.c), r = i.e, r && (c = i.d, L6(n, c.b, c.d), mi(n, r.n), i = Hi(r)); + while (r); + } + } + function uF(n, e, t, i) { + var r, c, s, f, h; + if (i.f.c + i.i.c == 0) + for (s = n.a[n.c], f = 0, h = s.length; f < h; ++f) + c = s[f], Ve(i, c, new Dxn(n, c, t)); + return r = u(Kr(gr(i.f, e)), 677), r.b = 0, r.c = r.f, r.c == 0 || c9n(u(sn(r.a, r.b), 294)), r; + } + function Yp() { + Yp = F, bv = new w6("MEDIAN_LAYER", 0), N8 = new w6("TAIL_LAYER", 1), dv = new w6("HEAD_LAYER", 2), Nw = new w6("SPACE_EFFICIENT_LAYER", 3), p2 = new w6("WIDEST_LAYER", 4), g2 = new w6("CENTER_LAYER", 5); + } + function knn(n) { + var e, t, i, r; + for (n.e = 0, r = ge(n.f, 0); r.b != r.d.c; ) + i = u(be(r), 10), i.p >= n.d.b.c.length && (e = new Nc(n.d), e.p = i.p - 1, nn(n.d.b, e), t = new Nc(n.d), t.p = i.p, nn(n.d.b, t)), $i(i, u(sn(n.d.b, i.p), 30)); + } + function ynn(n, e, t) { + var i, r, c; + if (!n.b[e.g]) { + for (n.b[e.g] = !0, i = t, !i && (i = new tk()), Fe(i.b, e), c = n.a[e.g].Kc(); c.Ob(); ) + r = u(c.Pb(), 65), r.b != e && ynn(n, r.b, i), r.c != e && ynn(n, r.c, i), Fe(i.a, r); + return i; + } + return null; + } + function Jje(n) { + switch (n.g) { + case 0: + case 1: + case 2: + return en(), Xn; + case 3: + case 4: + case 5: + return en(), ae; + case 6: + case 7: + case 8: + return en(), Wn; + case 9: + case 10: + case 11: + return en(), Zn; + default: + return en(), sc; + } + } + function Qje(n, e) { + var t; + return n.c.length == 0 ? !1 : (t = LBn((Ln(0, n.c.length), u(n.c[0], 18)).c.i), ko(), t == (cw(), P2) || t == S2 ? !0 : Og(_r(new Tn(null, new In(n, 16)), new c3n()), new Z7n(e))); + } + function oF(n, e) { + if (D(e, 207)) + return Gle(n, u(e, 27)); + if (D(e, 193)) + return zle(n, u(e, 123)); + if (D(e, 452)) + return Ule(n, u(e, 166)); + throw M(new Gn($cn + ca(new Ku(A(T(ki, 1), Bn, 1, 5, [e]))))); + } + function y_n(n, e, t) { + var i, r; + if (this.f = n, i = u(ee(n.b, e), 260), r = i ? i.a : 0, RJ(t, r), t >= (r / 2 | 0)) + for (this.e = i ? i.c : null, this.d = r; t++ < r; ) + i$n(this); + else + for (this.c = i ? i.b : null; t-- > 0; ) + fQ(this); + this.b = e, this.a = null; + } + function Yje(n, e) { + var t, i; + e.a ? DTe(n, e) : (t = u(ID(n.b, e.b), 60), t && t == n.a[e.b.f] && t.a && t.a != e.b.a && t.c.Fc(e.b), i = u(PD(n.b, e.b), 60), i && n.a[i.f] == e.b && i.a && i.a != e.b.a && e.b.c.Fc(i), EL(n.b, e.b)); + } + function j_n(n, e) { + var t, i; + if (t = u(Mr(n.b, e), 127), u(u(ot(n.r, e), 21), 87).dc()) { + t.n.b = 0, t.n.c = 0; + return; + } + t.n.b = n.C.b, t.n.c = n.C.c, n.A.Hc((go(), Gd)) && Vqn(n, e), i = T9e(n, e), kF(n, e) == (Bg(), Sa) && (i += 2 * n.w), t.a.a = i; + } + function E_n(n, e) { + var t, i; + if (t = u(Mr(n.b, e), 127), u(u(ot(n.r, e), 21), 87).dc()) { + t.n.d = 0, t.n.a = 0; + return; + } + t.n.d = n.C.d, t.n.a = n.C.a, n.A.Hc((go(), Gd)) && Wqn(n, e), i = M9e(n, e), kF(n, e) == (Bg(), Sa) && (i += 2 * n.w), t.a.b = i; + } + function Zje(n, e) { + var t, i, r, c; + for (c = new Z(), i = new C(e); i.a < i.c.c.length; ) + t = u(E(i), 68), nn(c, new Xz(t, !0)), nn(c, new Xz(t, !1)); + r = new QIn(n), r.a.a.$b(), aDn(c, n.b, new Ku(A(T(BQn, 1), Bn, 693, 0, [r]))); + } + function C_n(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j; + return h = n.a, p = n.b, l = e.a, m = e.b, a = t.a, k = t.b, d = i.a, j = i.b, c = h * m - p * l, s = a * j - k * d, r = (h - l) * (k - j) - (p - m) * (a - d), f = (c * (a - d) - s * (h - l)) / r, g = (c * (k - j) - s * (p - m)) / r, new V(f, g); + } + function nEe(n, e) { + var t, i, r; + e.Ug("End label pre-processing", 1), t = $(R(v(n, (cn(), T2)))), i = $(R(v(n, qw))), r = vg(u(v(n, Do), 88)), Gt(rc(new Tn(null, new In(n.b, 16)), new Rwn()), new mSn(t, i, r)), e.Vg(); + } + function jnn(n, e) { + var t, i, r; + if (!n.d[e.p]) { + for (n.d[e.p] = !0, n.a[e.p] = !0, i = new ie(ce(Qt(e).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), !fr(t) && (r = t.d.i, n.a[r.p] ? nn(n.b, t) : jnn(n, r)); + n.a[e.p] = !1; + } + } + function M_n(n, e, t) { + var i; + switch (i = 0, u(v(e, (cn(), su)), 171).g) { + case 2: + i = 2 * -t + n.a, ++n.a; + break; + case 1: + i = -t; + break; + case 3: + i = t; + break; + case 4: + i = 2 * t + n.b, ++n.b; + } + return kt(e, (W(), dt)) && (i += u(v(e, dt), 17).a), i; + } + function T_n(n, e, t) { + var i, r, c; + for (t.zc(e, n), nn(n.n, e), c = n.p.zg(e), e.j == n.p.Ag() ? yBn(n.e, c) : yBn(n.j, c), mM(n), r = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [new e4(e), new ip(e)]))); pe(r); ) + i = u(fe(r), 12), t._b(i) || T_n(n, i, t); + } + function eEe(n, e, t) { + var i, r, c; + for (t.Ug("Processor set neighbors", 1), n.a = e.b.b == 0 ? 1 : e.b.b, r = null, i = ge(e.b, 0); !r && i.b != i.d.c; ) + c = u(be(i), 40), on(un(v(c, (pt(), Ma)))) && (r = c); + r && Iqn(n, new sl(r), t), t.Vg(); + } + function Enn(n) { + var e, t, i; + return t = u(z(n, (He(), Hd)), 21), t.Hc((go(), Qw)) ? (i = u(z(n, Ta), 21), e = new rr(u(z(n, _2), 8)), i.Hc((io(), _v)) && (e.a <= 0 && (e.a = 20), e.b <= 0 && (e.b = 20)), e) : new Li(); + } + function Cnn(n) { + var e, t, i; + if (!n.b) { + for (i = new Cvn(), t = new yp(U5(n)); t.e != t.i.gc(); ) + e = u(Mx(t), 19), e.Bb & yc && ve(i, e); + ew(i), n.b = new pg((u(L(H((G1(), Hn).o), 8), 19), i.i), i.g), Zu(n).b &= -9; + } + return n.b; + } + function fw(n) { + var e, t, i; + for (t = n.length, i = 0; i < t && (zn(i, n.length), n.charCodeAt(i) <= 32); ) + ++i; + for (e = t; e > i && (zn(e - 1, n.length), n.charCodeAt(e - 1) <= 32); ) + --e; + return i > 0 || e < t ? (Fi(i, e, n.length), n.substr(i, e - i)) : n; + } + function tEe(n, e) { + var t, i, r, c, s, f, h, l; + h = u(A5(Tp(e.k), K(lr, Tc, 64, 2, 0, 1)), 126), l = e.g, t = $Dn(e, h[0]), r = NDn(e, h[1]), i = Kx(n, l, t, r), c = $Dn(e, h[1]), f = NDn(e, h[0]), s = Kx(n, l, c, f), i <= s ? (e.a = t, e.c = r) : (e.a = c, e.c = f); + } + function Yk(n) { + var e; + Dn(); + var t, i, r, c, s, f; + if (D(n, 59)) + for (c = 0, r = n.gc() - 1; c < r; ++c, --r) + e = n.Xb(c), n.hd(c, n.Xb(r)), n.hd(r, e); + else + for (t = n.ed(), s = n.fd(n.gc()); t.Tb() < s.Vb(); ) + i = t.Pb(), f = s.Ub(), t.Wb(f), s.Wb(i); + } + function kA(n, e) { + var t, i, r, c, s, f; + for (f = 0, c = new Cg(), W1(c, e); c.b != c.c; ) + for (s = u(Sp(c), 219), f += WRn(s.d, s.e), r = new C(s.b); r.a < r.c.c.length; ) + i = u(E(r), 36), t = u(sn(n.b, i.p), 219), t.s || (f += kA(n, t)); + return f; + } + function A_n(n, e, t, i, r) { + var c, s, f, h, l; + if (e) + for (f = e.Kc(); f.Ob(); ) + for (s = u(f.Pb(), 10), l = ken(s, (pr(), Qc), t).Kc(); l.Ob(); ) + h = u(l.Pb(), 12), c = u(Kr(gr(r.f, h)), 118), c || (c = new yk(n.d), Kn(i.c, c), T_n(c, h, r)); + } + function S_n(n, e, t) { + var i, r; + Xxn(this), e == (M0(), Ca) ? fi(this.r, n.c) : fi(this.w, n.c), t == Ca ? fi(this.r, n.d) : fi(this.w, n.d), h_n(this, n), i = tx(n.c), r = tx(n.d), n_n(this, i, r, r), this.o = (B5(), y.Math.abs(i - r) < 0.2); + } + function P_n(n, e, t) { + var i, r, c, s, f, h; + if (f = u(Un(n.a, 8), 2035), f != null) + for (r = f, c = 0, s = r.length; c < s; ++c) + null.Um(); + i = t, n.a.Db & 1 || (h = new iIn(n, t, e), i.dj(h)), D(i, 686) ? u(i, 686).fj(n.a) : i.cj() == n.a && i.ej(null); + } + function iEe() { + var n; + return yse ? u(Mm((R1(), Ps), Sd), 2044) : (LDe(), n = u(D($c((R1(), Ps), Sd), 594) ? $c(Ps, Sd) : new bIn(), 594), yse = !0, vLe(n), nNe(n), Ve((Fz(), Udn), n, new I6n()), Hx(n), Dr(Ps, Sd, n), n); + } + function rEe(n, e, t, i) { + var r; + return r = Ug(n, t, A(T(fn, 1), J, 2, 6, [vB, kB, yB, jB, EB, CB, MB]), e), r < 0 && (r = Ug(n, t, A(T(fn, 1), J, 2, 6, ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]), e)), r < 0 ? !1 : (i.d = r, !0); + } + function cEe(n, e, t, i) { + var r; + return r = Ug(n, t, A(T(fn, 1), J, 2, 6, [vB, kB, yB, jB, EB, CB, MB]), e), r < 0 && (r = Ug(n, t, A(T(fn, 1), J, 2, 6, ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]), e)), r < 0 ? !1 : (i.d = r, !0); + } + function Wc(n, e, t) { + var i, r, c, s; + if (s = n.b.Ce(e), r = (i = n.a.get(s), i == null ? K(ki, Bn, 1, 0, 5, 1) : i), r.length == 0) + n.a.set(s, r); + else if (c = RFn(n, e, r), c) + return c.nd(t); + return Rt(r, r.length, new oC(e, t)), ++n.c, ++n.b.g, null; + } + function uEe(n) { + var e, t, i; + for (mMe(n), i = new Z(), t = new C(n.a.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), nn(i, new Jz(e, !0)), nn(i, new Jz(e, !1)); + X9e(n.c), Q7(i, n.b, new Ku(A(T(aj, 1), Bn, 382, 0, [n.c]))), OCe(n); + } + function Zk(n, e) { + var t, i, r; + for (r = new Z(), i = new C(n.c.a.b); i.a < i.c.c.length; ) + t = u(E(i), 60), e.Lb(t) && (nn(r, new qz(t, !0)), nn(r, new qz(t, !1))); + z9e(n.e), aDn(r, n.d, new Ku(A(T(BQn, 1), Bn, 693, 0, [n.e]))); + } + function oEe(n) { + var e, t, i, r; + for (t = new de(), r = new C(n.d); r.a < r.c.c.length; ) + i = u(E(r), 187), e = u(i.of((W(), M3)), 18), gr(t.f, e) || Ve(t, e, new UIn(e)), nn(u(Kr(gr(t.f, e)), 466).b, i); + return new _u(new ol(t)); + } + function sEe(n, e) { + var t, i, r, c, s; + for (i = new bDn(n.j.c.length), t = null, c = new C(n.j); c.a < c.c.c.length; ) + r = u(E(c), 12), r.j != t && (i.b == i.c || UHn(i, t, e), AJ(i), t = r.j), s = THn(r), s && yJ(i, s); + i.b == i.c || UHn(i, t, e); + } + function fEe(n, e) { + var t, i, r; + for (i = new xi(n.b, 0); i.b < i.d.gc(); ) + t = (oe(i.b < i.d.gc()), u(i.d.Xb(i.c = i.b++), 72)), r = u(v(t, (cn(), Ah)), 278), r == ($f(), Jw) && (bo(i), nn(e.b, t), kt(t, (W(), M3)) || U(t, M3, n)); + } + function hEe(n) { + var e, t, i, r, c; + for (e = wl(new ie(ce(Qt(n).a.Kc(), new En()))), r = new ie(ce(ji(n).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), t = i.c.i, c = wl(new ie(ce(Qt(t).a.Kc(), new En()))), e = y.Math.max(e, c); + return Y(e); + } + function Mnn(n, e, t) { + var i, r, c; + i = u(z(n, (He(), Gj)), 21), r = 0, c = 0, e.a > t.a && (i.Hc((wd(), w9)) ? r = (e.a - t.a) / 2 : i.Hc(g9) && (r = e.a - t.a)), e.b > t.b && (i.Hc((wd(), m9)) ? c = (e.b - t.b) / 2 : i.Hc(p9) && (c = e.b - t.b)), unn(n, r, c); + } + function I_n(n, e, t, i, r, c, s, f, h, l, a, d, g) { + D(n.Cb, 90) && hw(Zu(u(n.Cb, 90)), 4), Xc(n, t), n.f = s, hm(n, f), am(n, h), fm(n, l), lm(n, a), u1(n, d), dm(n, g), c1(n, !0), e1(n, r), n.Zk(c), ad(n, e), i != null && (n.i = null, kT(n, i)); + } + function Tnn(n, e, t) { + if (n < 0) + return R5(Azn, A(T(ki, 1), Bn, 1, 5, [t, Y(n)])); + if (e < 0) + throw M(new Gn(Szn + e)); + return R5("%s (%s) must not be greater than size (%s)", A(T(ki, 1), Bn, 1, 5, [t, Y(n), Y(e)])); + } + function Ann(n, e, t, i, r, c) { + var s, f, h, l; + if (s = i - t, s < 7) { + X5e(e, t, i, c); + return; + } + if (h = t + r, f = i + r, l = h + (f - h >> 1), Ann(e, n, h, l, -r, c), Ann(e, n, l, f, -r, c), c.Ne(n[l - 1], n[l]) <= 0) { + for (; t < i; ) + Rt(e, t++, n[h++]); + return; + } + e5e(n, h, l, f, e, t, i, c); + } + function lEe(n, e) { + var t, i, r, c, s, f, h; + for (h = e.d, r = e.b.j, f = new C(h); f.a < f.c.c.length; ) + for (s = u(E(f), 105), c = K(so, Xh, 28, r.c.length, 16, 1), Ve(n.b, s, c), t = s.a.d.p - 1, i = s.c.d.p; t != i; ) + t = (t + 1) % r.c.length, c[t] = !0; + } + function aEe(n, e) { + if (jQ(), kt(n, (W(), dt)) && kt(e, dt)) + return Ec(u(v(n, dt), 17).a, u(v(e, dt), 17).a); + throw M(new hp("The BF model order layer assigner requires all real nodes to have a model order.")); + } + function dEe(n, e) { + if (EQ(), kt(n, (W(), dt)) && kt(e, dt)) + return Ec(u(v(n, dt), 17).a, u(v(e, dt), 17).a); + throw M(new hp("The DF model order layer assigner requires all real nodes to have a model order.")); + } + function bEe(n, e) { + for (n.r = new yk(n.p), ufe(n.r, n), Bi(n.r.j, n.j), vo(n.j), Fe(n.j, e), Fe(n.r.e, e), mM(n), mM(n.r); n.f.c.length != 0; ) + MTn(u(sn(n.f, 0), 132)); + for (; n.k.c.length != 0; ) + MTn(u(sn(n.k, 0), 132)); + return n.r; + } + function sF(n, e, t) { + var i, r, c; + if (r = $n(n.Dh(), e), i = e - n.ji(), i < 0) + if (r) + if (r.rk()) + c = n.Ih(r), c >= 0 ? n.bi(c, t) : ien(n, r, t); + else + throw M(new Gn(ba + r.xe() + b8)); + else + throw M(new Gn(dWn + e + bWn)); + else + Jo(n, i, r, t); + } + function O_n(n) { + var e, t; + if (n.f) { + for (; n.n > 0; ) { + if (e = u(n.k.Xb(n.n - 1), 76), t = e.Lk(), D(t, 102) && u(t, 19).Bb & yc && (!n.e || t.pk() != Hv || t.Lj() != 0) && e.md() != null) + return !0; + --n.n; + } + return !1; + } else + return n.n > 0; + } + function D_n(n) { + var e, t, i, r; + if (t = u(n, 54)._h(), t) + try { + if (i = null, e = Mm((R1(), Ps), pUn(c8e(t))), e && (r = e.ai(), r && (i = r.Fl(uhe(t.e)))), i && i != n) + return D_n(i); + } catch (c) { + if (c = It(c), !D(c, 63)) + throw M(c); + } + return n; + } + function wEe(n, e, t) { + var i, r, c; + t.Ug("Remove overlaps", 1), t.dh(e, Frn), i = u(z(e, (Tg(), D2)), 27), n.f = i, n.a = Ax(u(z(e, (oa(), Fj)), 300)), r = R(z(e, (He(), qd))), vG(n, (Jn(r), r)), c = aw(i), RGn(n, e, c, t), t.dh(e, DS); + } + function gEe(n) { + var e, t, i; + if (on(un(z(n, (He(), Xj))))) { + for (i = new Z(), t = new ie(ce(Al(n).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 74), _0(e) && on(un(z(e, eU))) && Kn(i.c, e); + return i; + } else + return Dn(), Dn(), sr; + } + function L_n(n) { + if (!n) + return Ljn(), bQn; + var e = n.valueOf ? n.valueOf() : n; + if (e !== n) { + var t = WK[typeof e]; + return t ? t(e) : gY(typeof e); + } else + return n instanceof Array || n instanceof y.Array ? new dG(n) : new U9(n); + } + function N_n(n, e, t) { + var i, r, c; + switch (c = n.o, i = u(Mr(n.p, t), 252), r = i.i, r.b = ty(i), r.a = ey(i), r.b = y.Math.max(r.b, c.a), r.b > c.a && !e && (r.b = c.a), r.c = -(r.b - c.a) / 2, t.g) { + case 1: + r.d = -r.a; + break; + case 3: + r.d = c.b; + } + LF(i), NF(i); + } + function $_n(n, e, t) { + var i, r, c; + switch (c = n.o, i = u(Mr(n.p, t), 252), r = i.i, r.b = ty(i), r.a = ey(i), r.a = y.Math.max(r.a, c.b), r.a > c.b && !e && (r.a = c.b), r.d = -(r.a - c.b) / 2, t.g) { + case 4: + r.c = -r.b; + break; + case 2: + r.c = c.a; + } + LF(i), NF(i); + } + function pEe(n, e) { + var t, i, r, c, s; + if (!e.dc()) { + if (r = u(e.Xb(0), 131), e.gc() == 1) { + aqn(n, r, r, 1, 0, e); + return; + } + for (t = 1; t < e.gc(); ) + (r.j || !r.o) && (c = E7e(e, t), c && (i = u(c.a, 17).a, s = u(c.b, 131), aqn(n, r, s, t, i, e), t = i + 1, r = s)); + } + } + function mEe(n) { + var e, t, i, r, c, s; + for (s = new _u(n.d), Yt(s, new ypn()), e = (DA(), A(T(Tsn, 1), G, 276, 0, [__, U_, K_, X_, q_, H_, z_, G_])), t = 0, c = new C(s); c.a < c.c.c.length; ) + r = u(E(c), 105), i = e[t % e.length], pCe(r, i), ++t; + } + function vEe(n, e) { + Vg(); + var t, i, r, c; + if (e.b < 2) + return !1; + for (c = ge(e, 0), t = u(be(c), 8), i = t; c.b != c.d.c; ) { + if (r = u(be(c), 8), !(W4(n, i) && W4(n, r))) + return !1; + i = r; + } + return !!(W4(n, i) && W4(n, t)); + } + function Snn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + return a = null, d = n, s = yl(d, "x"), t = new Qkn(e), Q4e(t.a, s), f = yl(d, "y"), i = new Ykn(e), Y4e(i.a, f), h = yl(d, dK), r = new Zkn(e), Z4e(r.a, h), l = yl(d, aK), c = new nyn(e), a = (nme(c.a, l), l), a; + } + function hw(n, e) { + Gqn(n, e), n.b & 1 && (n.a.a = null), n.b & 2 && (n.a.f = null), n.b & 4 && (n.a.g = null, n.a.i = null), n.b & 16 && (n.a.d = null, n.a.e = null), n.b & 8 && (n.a.b = null), n.b & 32 && (n.a.j = null, n.a.c = null); + } + function kEe(n, e) { + var t, i, r; + if (r = 0, e.length > 0) + try { + r = Ao(e, Wi, tt); + } catch (c) { + throw c = It(c), D(c, 130) ? (i = c, M(new eT(i))) : M(c); + } + return t = (!n.a && (n.a = new iD(n)), n.a), r < t.i && r >= 0 ? u(L(t, r), 58) : null; + } + function yEe(n, e) { + if (n < 0) + return R5(Azn, A(T(ki, 1), Bn, 1, 5, ["index", Y(n)])); + if (e < 0) + throw M(new Gn(Szn + e)); + return R5("%s (%s) must be less than size (%s)", A(T(ki, 1), Bn, 1, 5, ["index", Y(n), Y(e)])); + } + function jEe(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], c.a ? Re(c.a, c.b) : c.a = new mo(c.d), T6(c.a, "" + e); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function EEe(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], c.a ? Re(c.a, c.b) : c.a = new mo(c.d), T6(c.a, "" + e); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function CEe(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], c.a ? Re(c.a, c.b) : c.a = new mo(c.d), T6(c.a, "" + e); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function MEe(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], c.a ? Re(c.a, c.b) : c.a = new mo(c.d), T6(c.a, "" + e); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function x_n(n, e) { + var t, i, r, c, s, f; + for (t = n.b.c.length, r = sn(n.b, e); e * 2 + 1 < t && (i = (c = 2 * e + 1, s = c + 1, f = c, s < t && n.a.Ne(sn(n.b, s), sn(n.b, c)) < 0 && (f = s), f), !(n.a.Ne(r, sn(n.b, i)) < 0)); ) + Go(n.b, e, sn(n.b, i)), e = i; + Go(n.b, e, r); + } + function fF(n, e, t) { + var i, r; + return i = t.d, r = t.e, n.g[i.d] <= n.i[e.d] && n.i[e.d] <= n.i[i.d] && n.g[r.d] <= n.i[e.d] && n.i[e.d] <= n.i[r.d] ? !(n.i[i.d] < n.i[r.d]) : n.i[i.d] < n.i[r.d]; + } + function TEe(n, e) { + var t; + if (t = u(v(e, (cn(), U8)), 322), t != n) + throw M(new hp("The hierarchy aware processor " + t + " in child node " + e + " is only allowed if the root node specifies the same hierarchical processor.")); + } + function AEe(n, e) { + var t, i, r, c, s; + for (i = (!e.s && (e.s = new q(yu, e, 21, 17)), e.s), c = null, r = 0, s = i.i; r < s; ++r) + switch (t = u(L(i, r), 179), y0(Lr(n, t))) { + case 2: + case 3: + !c && (c = new Z()), Kn(c.c, t); + } + return c || (Dn(), Dn(), sr); + } + function F_n(n, e, t) { + var i, r, c, s, f, h; + for (h = St, c = new C(eqn(n.b)); c.a < c.c.c.length; ) + for (r = u(E(c), 177), f = new C(eqn(e.b)); f.a < f.c.c.length; ) + s = u(E(f), 177), i = Jve(r.a, r.b, s.a, s.b, t), h = y.Math.min(h, i); + return h; + } + function gi(n, e) { + if (!e) + throw M(new rp()); + if (n.j = e, !n.d) + switch (n.j.g) { + case 1: + n.a.a = n.o.a / 2, n.a.b = 0; + break; + case 2: + n.a.a = n.o.a, n.a.b = n.o.b / 2; + break; + case 3: + n.a.a = n.o.a / 2, n.a.b = n.o.b; + break; + case 4: + n.a.a = 0, n.a.b = n.o.b / 2; + } + } + function SEe(n, e) { + var t, i, r; + return D(e.g, 10) && u(e.g, 10).k == (Vn(), Zt) ? St : (r = xp(e), r ? y.Math.max(0, n.b / 2 - 0.5) : (t = Pg(e), t ? (i = $(R(rw(t, (cn(), gb)))), y.Math.max(0, i / 2 - 0.5)) : St)); + } + function PEe(n, e) { + var t, i, r; + return D(e.g, 10) && u(e.g, 10).k == (Vn(), Zt) ? St : (r = xp(e), r ? y.Math.max(0, n.b / 2 - 0.5) : (t = Pg(e), t ? (i = $(R(rw(t, (cn(), gb)))), y.Math.max(0, i / 2 - 0.5)) : St)); + } + function IEe(n, e) { + Fs(); + var t, i, r, c, s, f; + for (t = null, s = e.Kc(); s.Ob(); ) + c = u(s.Pb(), 131), !c.o && (i = h1e(c.a), r = gbe(c.a), f = new q5(i, r, null, u(c.d.a.ec().Kc().Pb(), 18)), nn(f.c, c.a), Kn(n.c, f), t && nn(t.d, f), t = f); + } + function OEe(n) { + var e, t, i, r, c, s; + for (s = g5(n.d, n.e), c = s.Kc(); c.Ob(); ) + for (r = u(c.Pb(), 12), i = n.e == (en(), Wn) ? r.e : r.g, t = new C(i); t.a < t.c.c.length; ) + e = u(E(t), 18), !fr(e) && e.c.i.c != e.d.i.c && (Oje(n, e), ++n.f, ++n.c); + } + function B_n(n, e) { + var t, i; + if (e.dc()) + return Dn(), Dn(), sr; + for (i = new Z(), nn(i, Y(Wi)), t = 1; t < n.f; ++t) + n.a == null && Uqn(n), n.a[t] && nn(i, Y(t)); + return i.c.length == 1 ? (Dn(), Dn(), sr) : (nn(i, Y(tt)), _Pe(e, i)); + } + function DEe(n, e) { + var t, i, r, c, s, f, h; + s = e.c.i.k != (Vn(), Vt), h = s ? e.d : e.c, t = _7e(e, h).i, r = u(ee(n.k, h), 125), i = n.i[t.p].a, iSn(h.i) < (t.c ? qr(t.c.a, t, 0) : -1) ? (c = r, f = i) : (c = i, f = r), qs(Ls(Ds(Ns(Os(new hs(), 0), 4), c), f)); + } + function LEe(n, e, t) { + var i, r, c, s, f, h; + if (t) + for (r = t.a.length, i = new Qa(r), f = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); f.Ob(); ) + s = u(f.Pb(), 17), h = Fx(n, Zp(Jb(t, s.a))), h && (c = (!e.b && (e.b = new Nn(he, e, 4, 7)), e.b), ve(c, h)); + } + function NEe(n, e, t) { + var i, r, c, s, f, h; + if (t) + for (r = t.a.length, i = new Qa(r), f = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); f.Ob(); ) + s = u(f.Pb(), 17), h = Fx(n, Zp(Jb(t, s.a))), h && (c = (!e.c && (e.c = new Nn(he, e, 5, 8)), e.c), ve(c, h)); + } + function ny(n, e, t) { + var i, r; + i = e.a & n.f, e.b = n.b[i], n.b[i] = e, r = e.f & n.f, e.d = n.c[r], n.c[r] = e, t ? (e.e = t.e, e.e ? e.e.c = e : n.a = e, e.c = t.c, e.c ? e.c.e = e : n.e = e) : (e.e = n.e, e.c = null, n.e ? n.e.c = e : n.a = e, n.e = e), ++n.i, ++n.g; + } + function R_n(n) { + var e, t, i; + if (e = n.Pb(), !n.Ob()) + return e; + for (i = Lc(Re(new x1(), "expected one element but was: <"), e), t = 0; t < 4 && n.Ob(); t++) + Lc((i.a += ur, i), n.Pb()); + throw n.Ob() && (i.a += ", ..."), i.a += ">", M(new Gn(i.a)); + } + function $Ee(n) { + var e, t; + return t = -n.a, e = A(T(fs, 1), gh, 28, 15, [43, 48, 48, 48, 48]), t < 0 && (e[0] = 45, t = -t), e[1] = e[1] + ((t / 60 | 0) / 10 | 0) & ui, e[2] = e[2] + (t / 60 | 0) % 10 & ui, e[3] = e[3] + (t % 60 / 10 | 0) & ui, e[4] = e[4] + t % 10 & ui, ws(e, 0, e.length); + } + function Pnn(n) { + var e, t, i, r; + for (n.g = new y5(u(Se(lr), 297)), i = 0, t = (en(), Xn), e = 0; e < n.j.c.length; e++) + r = u(sn(n.j, e), 12), r.j != t && (i != e && Pp(n.g, t, new bi(Y(i), Y(e))), t = r.j, i = e); + Pp(n.g, t, new bi(Y(i), Y(e))); + } + function xEe(n) { + var e, t, i, r, c, s, f; + for (i = 0, t = new C(n.b); t.a < t.c.c.length; ) + for (e = u(E(t), 30), c = new C(e.a); c.a < c.c.c.length; ) + for (r = u(E(c), 10), r.p = i++, f = new C(r.j); f.a < f.c.c.length; ) + s = u(E(f), 12), s.p = i++; + } + function Inn(n, e) { + var t, i, r; + if (r = Qg((Lu(), zi), n.Dh(), e), r) + br(), u(r, 69).xk() || (r = $p(Lr(zi, r))), i = (t = n.Ih(r), u(t >= 0 ? n.Lh(t, !0, !0) : H0(n, r, !0), 160)), u(i, 220).Zl(e); + else + throw M(new Gn(ba + e.xe() + b8)); + } + function Onn(n) { + var e, t; + return n > -140737488355328 && n < 140737488355328 ? n == 0 ? 0 : (e = n < 0, e && (n = -n), t = wi(y.Math.floor(y.Math.log(n) / 0.6931471805599453)), (!e || n != y.Math.pow(2, t)) && ++t, t) : Yxn(kc(n)); + } + function FEe(n) { + var e, t, i, r, c, s, f; + for (c = new rh(), t = new C(n); t.a < t.c.c.length; ) + e = u(E(t), 132), s = e.a, f = e.b, !(c.a._b(s) || c.a._b(f)) && (r = s, i = f, s.e.b + s.j.b > 2 && f.e.b + f.j.b <= 2 && (r = f, i = s), c.a.zc(r, c), r.q = i); + return c; + } + function BEe(n, e, t) { + t.Ug("Eades radial", 1), t.dh(e, DS), n.d = u(z(e, (Tg(), D2)), 27), n.c = $(R(z(e, (oa(), HI)))), n.e = Ax(u(z(e, Fj), 300)), n.a = d8e(u(z(e, t1n), 434)), n.b = Lke(u(z(e, Yln), 354)), wke(n), t.dh(e, DS); + } + function REe(n, e) { + if (e.Ug("Target Width Setter", 1), Lf(n, (Rf(), Nq))) + ht(n, (_h(), Xw), R(z(n, Nq))); + else + throw M(new _l("A target width has to be set if the TargetWidthWidthApproximator should be used.")); + e.Vg(); + } + function K_n(n, e) { + var t, i, r; + return i = new Tl(n), Ur(i, e), U(i, (W(), cI), e), U(i, (cn(), Ut), (Di(), Uc)), U(i, Th, (Rh(), nO)), Ha(i, (Vn(), Zt)), t = new Ic(), ic(t, i), gi(t, (en(), Wn)), r = new Ic(), ic(r, i), gi(r, Zn), i; + } + function __n(n) { + switch (n.g) { + case 0: + return new gD((O0(), Oj)); + case 1: + return new r8n(); + case 2: + return new c8n(); + default: + throw M(new Gn("No implementation is available for the crossing minimizer " + (n.f != null ? n.f : "" + n.g))); + } + } + function H_n(n, e) { + var t, i, r, c, s; + for (n.c[e.p] = !0, nn(n.a, e), s = new C(e.j); s.a < s.c.c.length; ) + for (c = u(E(s), 12), i = new Df(c.b); tc(i.a) || tc(i.b); ) + t = u(tc(i.a) ? E(i.a) : E(i.b), 18), r = R8e(c, t).i, n.c[r.p] || H_n(n, r); + } + function q_n(n) { + var e, t, i, r, c, s, f; + for (s = 0, t = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); t.e != t.i.gc(); ) + e = u(ue(t), 27), f = e.g, r = e.f, i = y.Math.sqrt(f * f + r * r), s = y.Math.max(i, s), c = q_n(e), s = y.Math.max(c, s); + return s; + } + function zu() { + zu = F, Ia = new E6("OUTSIDE", 0), Fl = new E6("INSIDE", 1), tE = new E6("NEXT_TO_PORT_IF_POSSIBLE", 2), A9 = new E6("ALWAYS_SAME_SIDE", 3), T9 = new E6("ALWAYS_OTHER_SAME_SIDE", 4), B3 = new E6("SPACE_EFFICIENT", 5); + } + function U_n(n, e, t) { + var i, r, c, s, f, h; + return i = Hpe(n, (r = (B1(), c = new Yv(), c), t && SA(r, t), r), e), X4(i, bl(e, Eh)), gA(e, i), ZCe(e, i), Snn(e, i), s = e, f = A0(s, "ports"), h = new AMn(n, i), FMe(h.a, h.b, f), _$(n, e, i), Gve(n, e, i), i; + } + function KEe(n) { + var e, t; + return t = -n.a, e = A(T(fs, 1), gh, 28, 15, [43, 48, 48, 58, 48, 48]), t < 0 && (e[0] = 45, t = -t), e[1] = e[1] + ((t / 60 | 0) / 10 | 0) & ui, e[2] = e[2] + (t / 60 | 0) % 10 & ui, e[4] = e[4] + (t % 60 / 10 | 0) & ui, e[5] = e[5] + t % 10 & ui, ws(e, 0, e.length); + } + function _Ee(n) { + var e; + return e = A(T(fs, 1), gh, 28, 15, [71, 77, 84, 45, 48, 48, 58, 48, 48]), n <= 0 && (e[3] = 43, n = -n), e[4] = e[4] + ((n / 60 | 0) / 10 | 0) & ui, e[5] = e[5] + (n / 60 | 0) % 10 & ui, e[7] = e[7] + (n % 60 / 10 | 0) & ui, e[8] = e[8] + n % 10 & ui, ws(e, 0, e.length); + } + function HEe(n) { + var e, t, i, r, c; + if (n == null) + return pu; + for (c = new fd(ur, "[", "]"), t = n, i = 0, r = t.length; i < r; ++i) + e = t[i], c.a ? Re(c.a, c.b) : c.a = new mo(c.d), T6(c.a, "" + _6(e)); + return c.a ? c.e.length == 0 ? c.a.a : c.a.a + ("" + c.e) : c.c; + } + function Dnn(n, e) { + var t, i, r; + for (r = tt, i = new C(xg(e)); i.a < i.c.c.length; ) + t = u(E(i), 218), t.f && !n.c[t.c] && (n.c[t.c] = !0, r = y.Math.min(r, Dnn(n, HT(t, e)))); + return n.i[e.d] = n.j, n.g[e.d] = y.Math.min(r, n.j++), n.g[e.d]; + } + function G_n(n, e) { + var t, i, r; + for (r = u(u(ot(n.r, e), 21), 87).Kc(); r.Ob(); ) + i = u(r.Pb(), 117), i.e.b = (t = i.b, t.pf((He(), oo)) ? t.ag() == (en(), Xn) ? -t.Mf().b - $(R(t.of(oo))) : $(R(t.of(oo))) : t.ag() == (en(), Xn) ? -t.Mf().b : 0); + } + function qEe(n) { + var e, t, i, r, c, s, f; + for (t = IX(n.e), c = ch(L6(Ki(PX(n.e)), n.d * n.a, n.c * n.b), -0.5), e = t.a - c.a, r = t.b - c.b, f = 0; f < n.c; f++) { + for (i = e, s = 0; s < n.d; s++) + i8e(n.e, new Ho(i, r, n.a, n.b)) && xA(n, s, f, !1, !0), i += n.a; + r += n.b; + } + } + function Lnn(n) { + var e, t, i, r, c; + e = n.a, t = n.b, r = n.c, i = new V(t.e.a + t.f.a / 2, t.e.b + t.f.b / 2), c = new V(r.e.a + r.f.a / 2, r.e.b + r.f.b / 2), Kt(e, i, e.a, e.a.a), Kt(e, c, e.c.b, e.c), e_n(i, u(Zo(e, 1), 8), n.b.f), e_n(c, u(Zo(e, e.b - 2), 8), n.c.f); + } + function Zp(n) { + var e, t; + if (t = !1, D(n, 211)) + return t = !0, u(n, 211).a; + if (!t && D(n, 263) && (e = u(n, 263).a % 1 == 0, e)) + return t = !0, Y(Tle(u(n, 263).a)); + throw M(new eh("Id must be a string or an integer: '" + n + "'.")); + } + function UEe(n, e) { + var t, i, r, c, s, f; + for (c = null, r = new LPn((!n.a && (n.a = new iD(n)), n.a)); Bnn(r); ) + if (t = u(CA(r), 58), i = (s = t.Dh(), f = (Jg(s), s.o), !f || !t.Xh(f) ? null : TV(x$(f), t.Mh(f))), i != null && An(i, e)) { + c = t; + break; + } + return c; + } + function z_n(n, e, t) { + var i, r, c, s, f; + if (Co(t, "occurrences"), t == 0) + return f = u(tw(Dp(n.a), e), 16), f ? f.gc() : 0; + if (s = u(tw(Dp(n.a), e), 16), !s) + return 0; + if (c = s.gc(), t >= c) + s.$b(); + else + for (r = s.Kc(), i = 0; i < t; i++) + r.Pb(), r.Qb(); + return c; + } + function GEe(n, e, t) { + var i, r, c, s; + return Co(t, "oldCount"), Co(0, "newCount"), i = u(tw(Dp(n.a), e), 16), (i ? i.gc() : 0) == t ? (Co(0, "count"), r = (c = u(tw(Dp(n.a), e), 16), c ? c.gc() : 0), s = -r, s > 0 ? gz() : s < 0 && z_n(n, e, -s), !0) : !1; + } + function ey(n) { + var e, t, i, r, c, s, f; + if (f = 0, n.b == 0) { + for (s = SRn(n, !0), e = 0, i = s, r = 0, c = i.length; r < c; ++r) + t = i[r], t > 0 && (f += t, ++e); + e > 1 && (f += n.c * (e - 1)); + } else + f = Gjn(I$(Ub(ut(MW(n.a), new hbn()), new lbn()))); + return f > 0 ? f + n.n.d + n.n.a : 0; + } + function ty(n) { + var e, t, i, r, c, s, f; + if (f = 0, n.b == 0) + f = Gjn(I$(Ub(ut(MW(n.a), new sbn()), new fbn()))); + else { + for (s = PRn(n, !0), e = 0, i = s, r = 0, c = i.length; r < c; ++r) + t = i[r], t > 0 && (f += t, ++e); + e > 1 && (f += n.c * (e - 1)); + } + return f > 0 ? f + n.n.b + n.n.c : 0; + } + function zEe(n) { + var e, t; + if (n.c.length != 2) + throw M(new Or("Order only allowed for two paths.")); + e = (Ln(0, n.c.length), u(n.c[0], 18)), t = (Ln(1, n.c.length), u(n.c[1], 18)), e.d.i != t.c.i && (n.c.length = 0, Kn(n.c, t), Kn(n.c, e)); + } + function X_n(n, e, t) { + var i; + for (kg(t, e.g, e.f), Ro(t, e.i, e.j), i = 0; i < (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i; i++) + X_n(n, u(L((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a), i), 27), u(L((!t.a && (t.a = new q(Ye, t, 10, 11)), t.a), i), 27)); + } + function XEe(n, e) { + var t, i, r, c; + for (c = u(Mr(n.b, e), 127), t = c.a, r = u(u(ot(n.r, e), 21), 87).Kc(); r.Ob(); ) + i = u(r.Pb(), 117), i.c && (t.a = y.Math.max(t.a, tW(i.c))); + if (t.a > 0) + switch (e.g) { + case 2: + c.n.c = n.s; + break; + case 4: + c.n.b = n.s; + } + } + function VEe(n, e) { + var t, i, r; + return t = u(v(e, (Us(), k3)), 17).a - u(v(n, k3), 17).a, t == 0 ? (i = mi(Ki(u(v(n, (Q1(), lj)), 8)), u(v(n, D8), 8)), r = mi(Ki(u(v(e, lj), 8)), u(v(e, D8), 8)), bt(i.a * i.b, r.a * r.b)) : t; + } + function WEe(n, e) { + var t, i, r; + return t = u(v(e, (lc(), FI)), 17).a - u(v(n, FI), 17).a, t == 0 ? (i = mi(Ki(u(v(n, (pt(), Nj)), 8)), u(v(n, Dv), 8)), r = mi(Ki(u(v(e, Nj), 8)), u(v(e, Dv), 8)), bt(i.a * i.b, r.a * r.b)) : t; + } + function V_n(n) { + var e, t; + return t = new x1(), t.a += "e_", e = Hve(n), e != null && (t.a += "" + e), n.c && n.d && (Re((t.a += " ", t), lA(n.c)), Re(Lc((t.a += "[", t), n.c.i), "]"), Re((t.a += iR, t), lA(n.d)), Re(Lc((t.a += "[", t), n.d.i), "]")), t.a; + } + function W_n(n) { + switch (n.g) { + case 0: + return new b8n(); + case 1: + return new w8n(); + case 2: + return new a8n(); + case 3: + return new l8n(); + default: + throw M(new Gn("No implementation is available for the layout phase " + (n.f != null ? n.f : "" + n.g))); + } + } + function Nnn(n, e, t, i, r) { + var c; + switch (c = 0, r.g) { + case 1: + c = y.Math.max(0, e.b + n.b - (t.b + i)); + break; + case 3: + c = y.Math.max(0, -n.b - i); + break; + case 2: + c = y.Math.max(0, -n.a - i); + break; + case 4: + c = y.Math.max(0, e.a + n.a - (t.a + i)); + } + return c; + } + function JEe(n, e, t) { + var i, r, c, s, f; + if (t) + for (r = t.a.length, i = new Qa(r), f = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); f.Ob(); ) + s = u(f.Pb(), 17), c = L4(t, s.a), Scn in c.a || pK in c.a ? hSe(n, c, e) : PLe(n, c, e), S1e(u(ee(n.b, wm(c)), 74)); + } + function $nn(n) { + var e, t; + switch (n.b) { + case -1: + return !0; + case 0: + return t = n.t, t > 1 || t == -1 ? (n.b = -1, !0) : (e = gs(n), e && (br(), e.lk() == wJn) ? (n.b = -1, !0) : (n.b = 1, !1)); + default: + case 1: + return !1; + } + } + function xnn(n, e) { + var t, i, r, c; + if (Ze(n), n.c != 0 || n.a != 123) + throw M(new Le($e((Ie(), FWn)))); + if (c = e == 112, i = n.d, t = w4(n.i, 125, i), t < 0) + throw M(new Le($e((Ie(), BWn)))); + return r = qo(n.i, i, t), n.d = t + 1, vNn(r, c, (n.e & 512) == 512); + } + function J_n(n) { + var e, t, i, r, c, s, f; + if (i = n.a.c.length, i > 0) + for (s = n.c.d, f = n.d.d, r = ch(mi(new V(f.a, f.b), s), 1 / (i + 1)), c = new V(s.a, s.b), t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 250), e.d.a = c.a + r.a, e.d.b = c.b + r.b, it(c, r); + } + function QEe(n, e) { + var t, i, r; + if (!e) + j$(n, null), G4(n, null); + else if (e.i & 4) + for (i = "[]", t = e.c; ; t = t.c) { + if (!(t.i & 4)) { + r = bz((ll(t), t.o + i)), j$(n, r), G4(n, r); + break; + } + i += "[]"; + } + else + r = bz((ll(e), e.o)), j$(n, r), G4(n, r); + n.hl(e); + } + function L5(n, e, t, i, r) { + var c, s, f, h; + return h = IL(n, u(r, 58)), x(h) !== x(r) ? (f = u(n.g[t], 76), c = Fh(e, h), I6(n, t, Jx(n, t, c)), fo(n.e) && (s = V1(n, 9, c.Lk(), r, h, i, !1), XZ(s, new ml(n.e, 9, n.c, f, c, i, !1)), h$(s)), h) : r; + } + function YEe(n, e, t) { + var i, r, c, s, f, h; + for (i = u(ot(n.c, e), 15), r = u(ot(n.c, t), 15), c = i.fd(i.gc()), s = r.fd(r.gc()); c.Sb() && s.Sb(); ) + if (f = u(c.Ub(), 17), h = u(s.Ub(), 17), f != h) + return Ec(f.a, h.a); + return !c.Ob() && !s.Ob() ? 0 : c.Ob() ? 1 : -1; + } + function ZEe(n) { + var e, t, i, r, c, s, f; + for (f = Dh(n.c.length), r = new C(n); r.a < r.c.c.length; ) { + for (i = u(E(r), 10), s = new ni(), c = Qt(i), t = new ie(ce(c.a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), e.c.i == e.d.i || fi(s, e.d.i); + Kn(f.c, s); + } + return f; + } + function Q_n(n, e) { + var t, i, r; + try { + return r = lpe(n.a, e), r; + } catch (c) { + if (c = It(c), D(c, 33)) { + try { + if (i = Ao(e, Wi, tt), t = of(n.a), i >= 0 && i < t.length) + return t[i]; + } catch (s) { + if (s = It(s), !D(s, 130)) + throw M(s); + } + return null; + } else + throw M(c); + } + } + function hF(n, e) { + var t, i, r; + if (r = Qg((Lu(), zi), n.Dh(), e), r) + return br(), u(r, 69).xk() || (r = $p(Lr(zi, r))), i = (t = n.Ih(r), u(t >= 0 ? n.Lh(t, !0, !0) : H0(n, r, !0), 160)), u(i, 220).Wl(e); + throw M(new Gn(ba + e.xe() + sK)); + } + function nCe() { + Bz(); + var n; + return Zoe ? u(Mm((R1(), Ps), ks), 2038) : (Ge(Pd, new y6n()), WOe(), n = u(D($c((R1(), Ps), ks), 560) ? $c(Ps, ks) : new dIn(), 560), Zoe = !0, JLe(n), iNe(n), Ve((Fz(), Udn), n, new Fvn()), Dr(Ps, ks, n), n); + } + function eCe(n, e) { + var t, i, r, c; + n.j = -1, fo(n.e) ? (t = n.i, c = n.i != 0, ek(n, e), i = new ml(n.e, 3, n.c, null, e, t, c), r = e.zl(n.e, n.c, null), r = IKn(n, e, r), r ? (r.nj(i), r.oj()) : rt(n.e, i)) : (ek(n, e), r = e.zl(n.e, n.c, null), r && r.oj()); + } + function yA(n, e) { + var t, i, r; + if (r = 0, i = e[0], i >= n.length) + return -1; + for (t = (zn(i, n.length), n.charCodeAt(i)); t >= 48 && t <= 57 && (r = r * 10 + (t - 48), ++i, !(i >= n.length)); ) + t = (zn(i, n.length), n.charCodeAt(i)); + return i > e[0] ? e[0] = i : r = -1, r; + } + function tCe(n) { + var e, t, i, r, c; + return r = u(n.a, 17).a, c = u(n.b, 17).a, t = r, i = c, e = y.Math.max(y.Math.abs(r), y.Math.abs(c)), r <= 0 && r == c ? (t = 0, i = c - 1) : r == -e && c != e ? (t = c, i = r, c >= 0 && ++t) : (t = -c, i = r), new bi(Y(t), Y(i)); + } + function iCe(n, e, t, i) { + var r, c, s, f, h, l; + for (r = 0; r < e.o; r++) + for (c = r - e.j + t, s = 0; s < e.p; s++) + if (f = s - e.k + i, h = c, l = f, h += n.j, l += n.k, h >= 0 && l >= 0 && h < n.o && l < n.p && (!$Rn(e, r, s) && DRn(n, c, f) || Kg(e, r, s) && !W9e(n, c, f))) + return !0; + return !1; + } + function rCe(n, e, t) { + var i, r, c, s, f; + s = n.c, f = n.d, c = cc(A(T(Ei, 1), J, 8, 0, [s.i.n, s.n, s.a])).b, r = (c + cc(A(T(Ei, 1), J, 8, 0, [f.i.n, f.n, f.a])).b) / 2, i = null, s.j == (en(), Zn) ? i = new V(e + s.i.c.c.a + t, r) : i = new V(e - t, r), g4(n.a, 0, i); + } + function _0(n) { + var e, t, i, r; + for (e = null, i = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c)]))); pe(i); ) + if (t = u(fe(i), 84), r = Gr(t), !e) + e = r; + else if (e != r) + return !1; + return !0; + } + function lF(n, e, t) { + var i; + if (++n.j, e >= n.i) + throw M(new Ir(vK + e + Td + n.i)); + if (t >= n.i) + throw M(new Ir(kK + t + Td + n.i)); + return i = n.g[t], e != t && (e < t ? Oc(n.g, e, n.g, e + 1, t - e) : Oc(n.g, t + 1, n.g, t, e - t), Rt(n.g, e, i), n.Pi(e, i, t), n.Ni()), i; + } + function Pn(n, e, t) { + var i; + if (i = u(n.c.xc(e), 16), i) + return i.Fc(t) ? (++n.d, !0) : !1; + if (i = n.ic(e), i.Fc(t)) + return ++n.d, n.c.zc(e, i), !0; + throw M(new xJ("New Collection violated the Collection spec")); + } + function iy(n) { + var e, t, i; + return n < 0 ? 0 : n == 0 ? 32 : (i = -(n >> 16), e = i >> 16 & 16, t = 16 - e, n = n >> e, i = n - 256, e = i >> 16 & 8, t += e, n <<= e, i = n - vw, e = i >> 16 & 4, t += e, n <<= e, i = n - wh, e = i >> 16 & 2, t += e, n <<= e, i = n >> 14, e = i & ~(i >> 1), t + 2 - e); + } + function cCe(n) { + Lp(); + var e, t, i, r; + for (mP = new Z(), m_ = new de(), p_ = new Z(), e = (!n.a && (n.a = new q(Ye, n, 10, 11)), n.a), WDe(e), r = new ne(e); r.e != r.i.gc(); ) + i = u(ue(r), 27), qr(mP, i, 0) == -1 && (t = new Z(), nn(p_, t), nRn(i, t)); + return p_; + } + function uCe(n, e, t) { + var i, r, c, s; + n.a = t.b.d, D(e, 326) ? (r = Xg(u(e, 74), !1, !1), c = Qk(r), i = new B9n(n), qi(c, i), dy(c, r), e.of((He(), kb)) != null && qi(u(e.of(kb), 75), i)) : (s = u(e, 422), s.rh(s.nh() + n.a.a), s.sh(s.oh() + n.a.b)); + } + function oCe(n, e) { + var t, i, r; + for (r = new Z(), i = ge(e.a, 0); i.b != i.d.c; ) + t = u(be(i), 65), t.c.g == n.g && x(v(t.b, (lc(), Sh))) !== x(v(t.c, Sh)) && !Og(new Tn(null, new In(r, 16)), new lkn(t)) && Kn(r.c, t); + return Yt(r, new G3n()), r; + } + function Y_n(n, e, t) { + var i, r, c, s; + return D(e, 153) && D(t, 153) ? (c = u(e, 153), s = u(t, 153), n.a[c.a][s.a] + n.a[s.a][c.a]) : D(e, 250) && D(t, 250) && (i = u(e, 250), r = u(t, 250), i.a == r.a) ? u(v(r.a, (Us(), k3)), 17).a : 0; + } + function Z_n(n, e) { + var t, i, r, c, s, f, h, l; + for (l = $(R(v(e, (cn(), X8)))), h = n[0].n.a + n[0].o.a + n[0].d.c + l, f = 1; f < n.length; f++) + i = n[f].n, r = n[f].o, t = n[f].d, c = i.a - t.b - h, c < 0 && (i.a -= c), s = e.f, s.a = y.Math.max(s.a, i.a + r.a), h = i.a + r.a + t.c + l; + } + function sCe(n, e) { + var t, i, r, c, s, f; + return i = u(u(ee(n.g, e.a), 42).a, 68), r = u(u(ee(n.g, e.b), 42).a, 68), c = i.b, s = r.b, t = NIe(c, s), t >= 0 ? t : (f = z6(mi(new V(s.c + s.b / 2, s.d + s.a / 2), new V(c.c + c.b / 2, c.d + c.a / 2))), -(MUn(c, s) - 1) * f); + } + function fCe(n, e, t) { + var i; + Gt(new Tn(null, (!t.a && (t.a = new q(Mt, t, 6, 6)), new In(t.a, 16))), new bMn(n, e)), Gt(new Tn(null, (!t.n && (t.n = new q(Sr, t, 1, 7)), new In(t.n, 16))), new wMn(n, e)), i = u(z(t, (He(), kb)), 75), i && RQ(i, n, e); + } + function H0(n, e, t) { + var i, r, c; + if (c = Qg((Lu(), zi), n.Dh(), e), c) + return br(), u(c, 69).xk() || (c = $p(Lr(zi, c))), r = (i = n.Ih(c), u(i >= 0 ? n.Lh(i, !0, !0) : H0(n, c, !0), 160)), u(r, 220).Sl(e, t); + throw M(new Gn(ba + e.xe() + sK)); + } + function Fnn(n, e, t, i) { + var r, c, s, f, h; + if (r = n.d[e], r) { + if (c = r.g, h = r.i, i != null) { + for (f = 0; f < h; ++f) + if (s = u(c[f], 136), s.Bi() == t && ct(i, s.ld())) + return s; + } else + for (f = 0; f < h; ++f) + if (s = u(c[f], 136), x(s.ld()) === x(i)) + return s; + } + return null; + } + function hCe(n, e) { + var t, i, r, c, s; + for (i = (!e.s && (e.s = new q(yu, e, 21, 17)), e.s), c = null, r = 0, s = i.i; r < s; ++r) + switch (t = u(L(i, r), 179), y0(Lr(n, t))) { + case 4: + case 5: + case 6: { + !c && (c = new Z()), Kn(c.c, t); + break; + } + } + return c || (Dn(), Dn(), sr); + } + function ry(n, e) { + var t; + if (e < 0) + throw M(new _E("Negative exponent")); + if (e == 0) + return sP; + if (e == 1 || HY(n, sP) || HY(n, S8)) + return n; + if (!MHn(n, 0)) { + for (t = 1; !MHn(n, t); ) + ++t; + return Ig(v8e(t * e), ry($J(n, t), e)); + } + return Mye(n, e); + } + function lCe(n, e) { + var t, i, r; + if (x(n) === x(e)) + return !0; + if (n == null || e == null || n.length != e.length) + return !1; + for (t = 0; t < n.length; ++t) + if (i = n[t], r = e[t], !(x(i) === x(r) || i != null && ct(i, r))) + return !1; + return !0; + } + function nHn(n) { + $z(); + var e, t, i; + for (this.b = MZn, this.c = (ci(), Jf), this.f = (lCn(), CZn), this.a = n, jz(this, new ewn()), PA(this), i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 86), t.d || (e = new vx(A(T(M_, 1), Bn, 86, 0, [t])), nn(n.a, e)); + } + function aCe(n, e, t) { + var i, r, c, s, f, h; + if (!n || n.c.length == 0) + return null; + for (c = new iOn(e, !t), r = new C(n); r.a < r.c.c.length; ) + i = u(E(r), 72), wnn(c, (u6(), new OE(i))); + return s = c.i, s.a = (h = c.n, c.e.b + h.d + h.a), s.b = (f = c.n, c.e.a + f.b + f.c), c; + } + function eHn(n) { + var e, t, i, r, c, s, f; + for (f = Y7(n.a), MX(f, new tgn()), t = null, r = f, c = 0, s = r.length; c < s && (i = r[c], i.k == (Vn(), Zt)); ++c) + e = u(v(i, (W(), gc)), 64), !(e != (en(), Wn) && e != Zn) && (t && u(v(t, T3), 15).Fc(i), t = i); + } + function dCe(n, e, t) { + var i, r, c, s, f, h, l; + h = (Ln(e, n.c.length), u(n.c[e], 339)), Yl(n, e), h.b / 2 >= t && (i = e, l = (h.c + h.a) / 2, s = l - t, h.c <= l - t && (r = new KL(h.c, s), b0(n, i++, r)), f = l + t, f <= h.a && (c = new KL(f, h.a), zb(i, n.c.length), d6(n.c, i, c))); + } + function tHn(n, e, t) { + var i, r, c, s, f, h; + if (!e.dc()) { + for (r = new Ct(), h = e.Kc(); h.Ob(); ) + for (f = u(h.Pb(), 40), Ve(n.a, Y(f.g), Y(t)), s = (i = ge(new sl(f).a.d, 0), new sg(i)); Q9(s.a); ) + c = u(be(s.a), 65).c, Kt(r, c, r.c.b, r.c); + tHn(n, r, t + 1); + } + } + function Bnn(n) { + var e; + if (!n.c && n.g == null) + n.d = n.bj(n.f), ve(n, n.d), e = n.d; + else { + if (n.g == null) + return !0; + if (n.i == 0) + return !1; + e = u(n.g[n.i - 1], 51); + } + return e == n.b && null.Vm >= null.Um() ? (CA(n), Bnn(n)) : e.Ob(); + } + function iHn(n) { + if (this.a = n, n.c.i.k == (Vn(), Zt)) + this.c = n.c, this.d = u(v(n.c.i, (W(), gc)), 64); + else if (n.d.i.k == Zt) + this.c = n.d, this.d = u(v(n.d.i, (W(), gc)), 64); + else + throw M(new Gn("Edge " + n + " is not an external edge.")); + } + function rHn(n, e) { + var t, i, r; + r = n.b, n.b = e, n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 3, r, n.b)), e ? e != n && (Xc(n, e.zb), v$(n, e.d), t = (i = e.c, i == null ? e.zb : i), y$(n, t == null || An(t, e.zb) ? null : t)) : (Xc(n, null), v$(n, 0), y$(n, null)); + } + function cHn(n, e) { + var t; + this.e = (m0(), Se(n), m0(), YY(n)), this.c = (Se(e), YY(e)), _X(this.e.Rd().dc() == this.c.Rd().dc()), this.d = kBn(this.e), this.b = kBn(this.c), t = Wa(ki, [J, Bn], [5, 1], 5, [this.e.Rd().gc(), this.c.Rd().gc()], 2), this.a = t, Bme(this); + } + function uHn(n) { + !XK && (XK = oLe()); + var e = n.replace(/[\x00-\x1f\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200b-\u200f\u2028-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb"\\]/g, function(t) { + return l2e(t); + }); + return '"' + e + '"'; + } + function Rnn(n, e, t, i, r, c) { + var s, f, h, l, a; + if (r != 0) + for (x(n) === x(t) && (n = n.slice(e, e + r), e = 0), h = t, f = e, l = e + r; f < l; ) + s = y.Math.min(f + 1e4, l), r = s - f, a = n.slice(f, s), a.splice(0, 0, i, c ? r : 0), Array.prototype.splice.apply(h, a), f = s, i += r; + } + function oHn(n) { + YW(); + var e, t; + for (this.b = KQn, this.c = HQn, this.g = (hCn(), RQn), this.d = (ci(), Jf), this.a = n, oen(this), t = new C(n.b); t.a < t.c.c.length; ) + e = u(E(t), 60), !e.a && eAn(X$n(new WG(), A(T(aP, 1), Bn, 60, 0, [e])), n), e.e = new PM(e.d); + } + function bCe(n) { + var e, t, i, r, c, s; + for (r = n.e.c.length, i = K(rs, kw, 15, r, 0, 1), s = new C(n.e); s.a < s.c.c.length; ) + c = u(E(s), 153), i[c.a] = new Ct(); + for (t = new C(n.c); t.a < t.c.c.length; ) + e = u(E(t), 290), i[e.c.a].Fc(e), i[e.d.a].Fc(e); + return i; + } + function wCe(n, e) { + var t, i, r, c, s; + if (t = u(Un(n.a, 4), 129), s = t == null ? 0 : t.length, e >= s) + throw M(new Kb(e, s)); + return r = t[e], s == 1 ? i = null : (i = K(jU, MK, 424, s - 1, 0, 1), Oc(t, 0, i, 0, e), c = s - e - 1, c > 0 && Oc(t, e + 1, i, e, c)), gm(n, i), P_n(n, e, r), r; + } + function sHn(n) { + var e, t; + if (n.f) { + for (; n.n < n.o; ) { + if (e = u(n.j ? n.j.$i(n.n) : n.k.Xb(n.n), 76), t = e.Lk(), D(t, 102) && u(t, 19).Bb & yc && (!n.e || t.pk() != Hv || t.Lj() != 0) && e.md() != null) + return !0; + ++n.n; + } + return !1; + } else + return n.n < n.o; + } + function n3() { + n3 = F, _3 = u(L(H((Tz(), jc).qb), 6), 35), K3 = u(L(H(jc.qb), 3), 35), SU = u(L(H(jc.qb), 4), 35), PU = u(L(H(jc.qb), 5), 19), bA(_3), bA(K3), bA(SU), bA(PU), ise = new Ku(A(T(yu, 1), f2, 179, 0, [_3, K3])); + } + function fHn(n, e) { + var t; + this.d = new Qv(), this.b = e, this.e = new rr(e.Lf()), t = n.u.Hc((zu(), tE)), n.u.Hc(Fl) ? n.D ? this.a = t && !e.bg() : this.a = !0 : n.u.Hc(Ia) ? t ? this.a = !(e.Uf().Kc().Ob() || e.Wf().Kc().Ob()) : this.a = !1 : this.a = !1; + } + function hHn(n, e) { + var t, i, r, c; + for (t = n.o.a, c = u(u(ot(n.r, e), 21), 87).Kc(); c.Ob(); ) + r = u(c.Pb(), 117), r.e.a = (i = r.b, i.pf((He(), oo)) ? i.ag() == (en(), Wn) ? -i.Mf().a - $(R(i.of(oo))) : t + $(R(i.of(oo))) : i.ag() == (en(), Wn) ? -i.Mf().a : t); + } + function lHn(n, e) { + var t, i, r, c; + t = u(v(n, (cn(), Do)), 88), c = u(z(e, Mv), 64), r = u(v(n, Ut), 101), r != (Di(), Qf) && r != Pa ? c == (en(), sc) && (c = Ken(e, t), c == sc && (c = zp(t))) : (i = lGn(e), i > 0 ? c = zp(t) : c = xk(zp(t))), ht(e, Mv, c); + } + function gCe(n, e) { + var t; + e.Ug("Partition preprocessing", 1), t = u(Wr(ut(rc(ut(new Tn(null, new In(n.a, 16)), new Xgn()), new Vgn()), new Wgn()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), Gt(t.Oc(), new Jgn()), e.Vg(); + } + function pCe(n, e) { + var t, i, r, c, s; + for (s = n.j, e.a != e.b && Yt(s, new Tpn()), r = s.c.length / 2 | 0, i = 0; i < r; i++) + c = (Ln(i, s.c.length), u(s.c[i], 113)), c.c && gi(c.d, e.a); + for (t = r; t < s.c.length; t++) + c = (Ln(t, s.c.length), u(s.c[t], 113)), c.c && gi(c.d, e.b); + } + function mCe(n, e, t) { + var i, r, c; + return i = n.c[e.c.p][e.p], r = n.c[t.c.p][t.p], i.a != null && r.a != null ? (c = tN(i.a, r.a), c < 0 ? hy(n, e, t) : c > 0 && hy(n, t, e), c) : i.a != null ? (hy(n, e, t), -1) : r.a != null ? (hy(n, t, e), 1) : 0; + } + function vCe(n, e) { + var t, i, r, c, s; + for (r = e.b.b, n.a = K(rs, kw, 15, r, 0, 1), n.b = K(so, Xh, 28, r, 16, 1), s = ge(e.b, 0); s.b != s.d.c; ) + c = u(be(s), 40), n.a[c.g] = new Ct(); + for (i = ge(e.a, 0); i.b != i.d.c; ) + t = u(be(i), 65), n.a[t.b.g].Fc(t), n.a[t.c.g].Fc(t); + } + function aHn(n, e) { + var t, i, r, c; + n.Pj() ? (t = n.Ej(), c = n.Qj(), ++n.j, n.qj(t, n.Zi(t, e)), i = n.Ij(3, null, e, t, c), n.Mj() ? (r = n.Nj(e, null), r ? (r.nj(i), r.oj()) : n.Jj(i)) : n.Jj(i)) : (tIn(n, e), n.Mj() && (r = n.Nj(e, null), r && r.oj())); + } + function Knn(n, e, t) { + var i, r, c; + n.Pj() ? (c = n.Qj(), Dk(n, e, t), i = n.Ij(3, null, t, e, c), n.Mj() ? (r = n.Nj(t, null), n.Tj() && (r = n.Uj(t, r)), r ? (r.nj(i), r.oj()) : n.Jj(i)) : n.Jj(i)) : (Dk(n, e, t), n.Mj() && (r = n.Nj(t, null), r && r.oj())); + } + function jA(n, e) { + var t, i, r, c, s; + for (s = cu(n.e.Dh(), e), r = new EE(), t = u(n.g, 124), c = n.i; --c >= 0; ) + i = t[c], s.am(i.Lk()) && ve(r, i); + !ozn(n, r) && fo(n.e) && t4(n, e.Jk() ? V1(n, 6, e, (Dn(), sr), null, -1, !1) : V1(n, e.tk() ? 2 : 1, e, null, null, -1, !1)); + } + function kCe(n, e) { + var t, i, r, c, s; + return n.a == (jm(), x8) ? !0 : (c = e.a.c, t = e.a.c + e.a.b, !(e.j && (i = e.A, s = i.c.c.a - i.o.a / 2, r = c - (i.n.a + i.o.a), r > s) || e.q && (i = e.C, s = i.c.c.a - i.o.a / 2, r = i.n.a - t, r > s))); + } + function dHn(n) { + NN(); + var e, t, i, r, c, s, f; + for (t = new Ql(), r = new C(n.e.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), s = new C(i.a); s.a < s.c.c.length; ) + c = u(E(s), 10), f = n.g[c.p], e = u(Nf(t, f), 15), e || (e = new Z(), s1(t, f, e)), e.Fc(c); + return t; + } + function bHn(n) { + var e; + return n.Db & 64 ? Hs(n) : (e = new ls(Hs(n)), e.a += " (startX: ", hg(e, n.j), e.a += ", startY: ", hg(e, n.k), e.a += ", endX: ", hg(e, n.b), e.a += ", endY: ", hg(e, n.c), e.a += ", identifier: ", Cr(e, n.d), e.a += ")", e.a); + } + function _nn(n) { + var e; + return n.Db & 64 ? p5(n) : (e = new ls(p5(n)), e.a += " (ordered: ", ql(e, (n.Bb & 256) != 0), e.a += ", unique: ", ql(e, (n.Bb & 512) != 0), e.a += ", lowerBound: ", TD(e, n.s), e.a += ", upperBound: ", TD(e, n.t), e.a += ")", e.a); + } + function wHn(n, e, t, i, r, c, s, f) { + var h; + return D(n.Cb, 90) && hw(Zu(u(n.Cb, 90)), 4), Xc(n, t), n.f = i, hm(n, r), am(n, c), fm(n, s), lm(n, !1), u1(n, !0), dm(n, f), c1(n, !0), e1(n, 0), n.b = 0, Zb(n, 1), h = Bf(n, e, null), h && h.oj(), sx(n, !1), n; + } + function gHn(n, e) { + var t, i, r, c; + return t = u($c(n.a, e), 525), t || (i = new VN(e), r = (UM(), Uf ? null : i.c), c = qo(r, 0, y.Math.max(0, FC(r, gu(46)))), Qae(i, gHn(n, c)), (Uf ? null : i.c).length == 0 && AAn(i, new RU()), Dr(n.a, Uf ? null : i.c, i), i); + } + function yCe(n, e) { + var t; + n.b = e, n.g = new Z(), t = MCe(n.b), n.e = t, n.f = t, n.c = on(un(v(n.b, (aA(), Hun)))), n.a = R(v(n.b, (He(), x2))), n.a == null && (n.a = 1), $(n.a) > 1 ? n.e *= $(n.a) : n.f /= $(n.a), H6e(n), V8e(n), GAe(n), U(n.b, (C5(), pP), n.g); + } + function pHn(n, e, t) { + var i, r, c, s, f, h; + for (i = 0, h = t, e || (i = t * (n.c.length - 1), h *= -1), c = new C(n); c.a < c.c.c.length; ) { + for (r = u(E(c), 10), U(r, (cn(), Th), (Rh(), nO)), r.o.a = i, f = h1(r, (en(), Zn)).Kc(); f.Ob(); ) + s = u(f.Pb(), 12), s.n.a = i; + i += h; + } + } + function e3(n, e, t) { + var i, r, c, s, f, h; + return f = n.pl(t), f != t ? (s = n.g[e], h = f, I6(n, e, n.Zi(e, h)), c = s, n.Ri(e, h, c), n.al() && (i = t, r = n.Oj(i, null), !u(f, 54).Ph() && (r = n.Nj(h, r)), r && r.oj()), fo(n.e) && t4(n, n.Ij(9, t, f, e, !1)), f) : t; + } + function jCe(n, e) { + var t, i, r, c; + for (i = new C(n.a.a); i.a < i.c.c.length; ) + t = u(E(i), 194), t.g = !0; + for (c = new C(n.a.b); c.a < c.c.c.length; ) + r = u(E(c), 86), r.k = on(un(n.e.Kb(new bi(r, e)))), r.d.g = r.d.g & on(un(n.e.Kb(new bi(r, e)))); + return n; + } + function mHn(n, e) { + var t, i; + if (n.c.length != 0) { + if (n.c.length == 2) + t3((Ln(0, n.c.length), u(n.c[0], 10)), (To(), nl)), t3((Ln(1, n.c.length), u(n.c[1], 10)), Aa); + else + for (i = new C(n); i.a < i.c.c.length; ) + t = u(E(i), 10), t3(t, e); + n.c.length = 0; + } + } + function vHn(n) { + var e, t, i, r, c; + if (t = (e = u(of(lr), 9), new _o(e, u(xs(e, e.length), 9), 0)), c = u(v(n, (W(), Xu)), 10), c) + for (r = new C(c.j); r.a < r.c.c.length; ) + i = u(E(r), 12), x(v(i, st)) === x(n) && D6(new Df(i.b)) && _s(t, i.j); + return t; + } + function kHn(n, e, t) { + var i, r, c, s, f; + if (!n.d[t.p]) { + for (r = new ie(ce(Qt(t).a.Kc(), new En())); pe(r); ) { + for (i = u(fe(r), 18), f = i.d.i, s = new ie(ce(ji(f).a.Kc(), new En())); pe(s); ) + c = u(fe(s), 18), c.c.i == e && (n.a[c.p] = !0); + kHn(n, e, f); + } + n.d[t.p] = !0; + } + } + function ECe(n, e) { + var t, i, r, c, s, f, h; + if (i = bBn(n.Db & 254), i == 1) + n.Eb = null; + else if (c = cd(n.Eb), i == 2) + r = Rx(n, e), n.Eb = c[r == 0 ? 1 : 0]; + else { + for (s = K(ki, Bn, 1, i - 1, 5, 1), t = 2, f = 0, h = 0; t <= 128; t <<= 1) + t == e ? ++f : n.Db & t && (s[h++] = c[f++]); + n.Eb = s; + } + n.Db &= ~e; + } + function Hnn(n) { + var e; + switch (e = 0, n) { + case 105: + e = 2; + break; + case 109: + e = 8; + break; + case 115: + e = 4; + break; + case 120: + e = 16; + break; + case 117: + e = 32; + break; + case 119: + e = 64; + break; + case 70: + e = 256; + break; + case 72: + e = 128; + break; + case 88: + e = 512; + break; + case 44: + e = Gs; + } + return e; + } + function CCe(n, e, t, i, r) { + var c, s, f, h; + if (x(n) === x(e) && i == r) { + mUn(n, i, t); + return; + } + for (f = 0; f < i; f++) { + for (s = 0, c = n[f], h = 0; h < r; h++) + s = nr(nr(er(vi(c, vr), vi(e[h], vr)), vi(t[f + h], vr)), vi(Ae(s), vr)), t[f + h] = Ae(s), s = U1(s, 32); + t[f + r] = Ae(s); + } + } + function MCe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (a = 0, l = 0, r = n.a, f = r.a.gc(), i = r.a.ec().Kc(); i.Ob(); ) + t = u(i.Pb(), 567), e = (t.b && xF(t), t.a), d = e.a, s = e.b, a += d + s, l += d * s; + return h = y.Math.sqrt(400 * f * l - 4 * l + a * a) + a, c = 2 * (100 * f - 1), c == 0 ? h : h / c; + } + function yHn(n, e) { + e.b != 0 && (isNaN(n.s) ? n.s = $((oe(e.b != 0), R(e.a.a.c))) : n.s = y.Math.min(n.s, $((oe(e.b != 0), R(e.a.a.c)))), isNaN(n.c) ? n.c = $((oe(e.b != 0), R(e.c.b.c))) : n.c = y.Math.max(n.c, $((oe(e.b != 0), R(e.c.b.c))))); + } + function N5(n) { + var e, t, i, r; + for (e = null, i = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c)]))); pe(i); ) + if (t = u(fe(i), 84), r = Gr(t), !e) + e = At(r); + else if (e != At(r)) + return !0; + return !1; + } + function aF(n, e) { + var t, i, r, c; + n.Pj() ? (t = n.i, c = n.Qj(), ek(n, e), i = n.Ij(3, null, e, t, c), n.Mj() ? (r = n.Nj(e, null), n.Tj() && (r = n.Uj(e, r)), r ? (r.nj(i), r.oj()) : n.Jj(i)) : n.Jj(i)) : (ek(n, e), n.Mj() && (r = n.Nj(e, null), r && r.oj())); + } + function TCe(n, e) { + var t, i, r, c; + if (c = R7(n.a, e.b), !c) + throw M(new Or("Invalid hitboxes for scanline overlap calculation.")); + for (r = !1, i = n.a.a.ec().Kc(); i.Ob(); ) + if (t = u(i.Pb(), 68), r6e(e.b, t)) + $he(n.b.a, e.b, t), r = !0; + else if (r) + break; + } + function ACe(n) { + var e; + if (!n.a) + throw M(new Or("IDataType class expected for layout option " + n.f)); + if (e = a3e(n.a), e == null) + throw M(new Or("Couldn't create new instance of property '" + n.f + "'. " + NVn + (ll(lE), lE.k) + wcn)); + return u(e, 423); + } + function dF(n) { + var e, t, i, r, c; + return c = n.Ph(), c && c.Vh() && (r = ea(n, c), r != c) ? (t = n.Fh(), i = (e = n.Fh(), e >= 0 ? n.Ah(null) : n.Ph().Th(n, -1 - e, null, null)), n.Bh(u(r, 54), t), i && i.oj(), n.vh() && n.wh() && t > -1 && rt(n, new Ci(n, 9, t, c, r)), r) : c; + } + function qnn(n, e) { + var t, i, r, c, s; + for (c = n.b.Ce(e), i = (t = n.a.get(c), t == null ? K(ki, Bn, 1, 0, 5, 1) : t), s = 0; s < i.length; s++) + if (r = i[s], n.b.Be(e, r.ld())) + return i.length == 1 ? (i.length = 0, Pae(n.a, c)) : i.splice(s, 1), --n.c, ++n.b.g, r.md(); + return null; + } + function jHn(n) { + var e, t, i, r, c, s, f, h; + for (s = 0, c = n.f.e, i = 0; i < c.c.length; ++i) + for (f = (Ln(i, c.c.length), u(c.c[i], 153)), r = i + 1; r < c.c.length; ++r) + h = (Ln(r, c.c.length), u(c.c[r], 153)), t = J1(f.d, h.d), e = t - n.a[f.a][h.a], s += n.i[f.a][h.a] * e * e; + return s; + } + function SCe(n, e) { + var t; + if (!kt(e, (cn(), su)) && (t = W7e(u(v(e, jsn), 371), u(v(n, su), 171)), U(e, jsn, t), !pe(new ie(ce(Cl(e).a.Kc(), new En()))))) + switch (t.g) { + case 1: + U(e, su, (Yo(), _8)); + break; + case 2: + U(e, su, (Yo(), H8)); + } + } + function PCe(n, e) { + var t; + HAe(n), n.a = (t = new CD(), Gt(new Tn(null, new In(e.d, 16)), new T7n(t)), t), rSe(n, u(v(e.b, (cn(), CH)), 349)), x9e(n), xCe(n), Q7e(n), F9e(n), JIe(n, e), Gt(rc(new Tn(null, sDn(Lwe(n.b).a)), new fpn()), new hpn()), e.a = !1, n.a = null; + } + function Unn() { + Unn = F, wre = new Mn(Prn, (_n(), !1)), gre = new Mn(Irn, 7), Y(0), kre = new Mn(Orn, Y(0)), mre = new Mn(Drn, Y(-1)), Mln = (b5(), aq), yre = new Mn(Lrn, Mln), Eln = (d5(), Lj), pre = new Mn(Nrn, Eln), Cln = (FM(), dq), vre = new Mn($rn, Cln); + } + function EHn() { + onn.call(this, tv, (B1(), koe)), this.p = null, this.a = null, this.f = null, this.n = null, this.g = null, this.c = null, this.i = null, this.j = null, this.d = null, this.b = null, this.e = null, this.k = null, this.o = null, this.s = null, this.q = !1, this.r = !1; + } + function Cm() { + Cm = F, kU = new gp(QXn, 0), mO = new gp("INSIDE_SELF_LOOPS", 1), vO = new gp("MULTI_EDGES", 2), pO = new gp("EDGE_LABELS", 3), vU = new gp("PORTS", 4), gO = new gp("COMPOUND", 5), wO = new gp("CLUSTERS", 6), mU = new gp("DISCONNECTED", 7); + } + function CHn(n, e, t) { + var i, r, c; + n.Pj() ? (c = n.Qj(), ++n.j, n.qj(e, n.Zi(e, t)), i = n.Ij(3, null, t, e, c), n.Mj() ? (r = n.Nj(t, null), r ? (r.nj(i), r.oj()) : n.Jj(i)) : n.Jj(i)) : (++n.j, n.qj(e, n.Zi(e, t)), n.Mj() && (r = n.Nj(t, null), r && r.oj())); + } + function MHn(n, e) { + var t, i, r; + if (e == 0) + return (n.a[0] & 1) != 0; + if (e < 0) + throw M(new _E("Negative bit address")); + if (r = e >> 5, r >= n.d) + return n.e < 0; + if (t = n.a[r], e = 1 << (e & 31), n.e < 0) { + if (i = Oxn(n), r < i) + return !1; + i == r ? t = -t : t = ~t; + } + return (t & e) != 0; + } + function ICe(n, e, t, i) { + var r; + u(t.b, 68), u(t.b, 68), u(i.b, 68), u(i.b, 68), r = mi(Ki(u(t.b, 68).c), u(i.b, 68).c), JC(r, F_n(u(t.b, 68), u(i.b, 68), r)), u(i.b, 68), u(i.b, 68), u(i.b, 68).c.a + r.a, u(i.b, 68).c.b + r.b, u(i.b, 68), eu(i.a, new RV(n, e, i)); + } + function Gnn(n, e) { + var t, i, r, c, s, f, h; + if (c = e.e, c) { + for (t = dF(c), i = u(n.g, 689), s = 0; s < n.i; ++s) + if (h = i[s], Lx(h) == t && (r = (!h.d && (h.d = new ti(Er, h, 1)), h.d), f = u(t.Mh(AF(c, c.Cb, c.Db >> 16)), 15).dd(c), f < r.i)) + return Gnn(n, u(L(r, f), 89)); + } + return e; + } + function b(n, e, t) { + var i = rP, r, c = i[n], s = c instanceof Array ? c[0] : null; + c && !s ? o = c : (o = (r = e && e.prototype, !r && (r = rP[e]), g2e(r)), o.Sm = t, !e && (o.Tm = Q2), i[n] = o); + for (var f = 3; f < arguments.length; ++f) + arguments[f].prototype = o; + s && (o.Rm = s); + } + function pe(n) { + for (var e; !u(Se(n.a), 51).Ob(); ) { + if (n.d = y6e(n), !n.d) + return !1; + if (n.a = u(n.d.Pb(), 51), D(n.a, 38)) { + if (e = u(n.a, 38), n.a = e.a, !n.b && (n.b = new Cg()), W1(n.b, n.d), e.b) + for (; !t6(e.b); ) + W1(n.b, u(wwe(e.b), 51)); + n.d = e.d; + } + } + return !0; + } + function znn(n, e) { + var t, i, r, c; + for (r = 1, e.j = !0, c = null, i = new C(xg(e)); i.a < i.c.c.length; ) + t = u(E(i), 218), n.c[t.c] || (n.c[t.c] = !0, c = HT(t, e), t.f ? r += znn(n, c) : !c.j && t.a == t.e.e - t.d.e && (t.f = !0, fi(n.p, t), r += znn(n, c))); + return r; + } + function OCe(n) { + var e, t, i; + for (t = new C(n.a.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), i = (Jn(0), 0), i > 0 && (!(hl(n.a.c) && e.n.d) && !(vg(n.a.c) && e.n.b) && (e.g.d += y.Math.max(0, i / 2 - 0.5)), !(hl(n.a.c) && e.n.a) && !(vg(n.a.c) && e.n.c) && (e.g.a -= i - 1)); + } + function THn(n) { + var e, t, i, r, c; + if (r = new Z(), c = yUn(n, r), e = u(v(n, (W(), Xu)), 10), e) + for (i = new C(e.j); i.a < i.c.c.length; ) + t = u(E(i), 12), x(v(t, st)) === x(n) && (c = y.Math.max(c, yUn(t, r))); + return r.c.length == 0 || U(n, y2, c), c != -1 ? r : null; + } + function AHn(n, e, t) { + var i, r, c, s, f, h; + c = u(sn(e.e, 0), 18).c, i = c.i, r = i.k, h = u(sn(t.g, 0), 18).d, s = h.i, f = s.k, r == (Vn(), Mi) ? U(n, (W(), yf), u(v(i, yf), 12)) : U(n, (W(), yf), c), f == Mi ? U(n, (W(), Es), u(v(s, Es), 12)) : U(n, (W(), Es), h); + } + function Xnn(n) { + var e, t, i; + this.c = n, i = u(v(n, (cn(), Do)), 88), e = $(R(v(n, oI))), t = $(R(v(n, yhn))), i == (ci(), Br) || i == Xr || i == Jf ? this.b = e * t : this.b = 1 / (e * t), this.j = $(R(v(n, A2))), this.e = $(R(v(n, gb))), this.f = n.b.c.length; + } + function Vnn(n, e) { + var t, i, r, c, s; + return e &= 63, t = n.h, i = (t & Ty) != 0, i && (t |= -1048576), e < 22 ? (s = t >> e, c = n.m >> e | t << 22 - e, r = n.l >> e | n.m << 22 - e) : e < 44 ? (s = i ? Il : 0, c = t >> e - 22, r = n.m >> e - 22 | t << 44 - e) : (s = i ? Il : 0, c = i ? ro : 0, r = t >> e - 44), Zc(r & ro, c & ro, s & Il); + } + function bF(n) { + var e, t, i, r, c, s; + for (this.c = new Z(), this.d = n, i = St, r = St, e = li, t = li, s = ge(n, 0); s.b != s.d.c; ) + c = u(be(s), 8), i = y.Math.min(i, c.a), r = y.Math.min(r, c.b), e = y.Math.max(e, c.a), t = y.Math.max(t, c.b); + this.a = new Ho(i, r, e - i, t - r); + } + function SHn(n, e) { + var t, i, r, c, s, f; + for (c = new C(n.b); c.a < c.c.c.length; ) + for (r = u(E(c), 30), f = new C(r.a); f.a < f.c.c.length; ) + for (s = u(E(f), 10), s.k == (Vn(), Sc) && t3(s, e), i = new ie(ce(Qt(s).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), tFn(t, e); + } + function DCe(n, e) { + var t, i, r; + for (e.Ug("Layer constraint preprocessing", 1), t = new Z(), r = new xi(n.a, 0); r.b < r.d.gc(); ) + i = (oe(r.b < r.d.gc()), u(r.d.Xb(r.c = r.b++), 10)), c6e(i) && (bye(i), Kn(t.c, i), bo(r)); + t.c.length == 0 || U(n, (W(), lH), t), e.Vg(); + } + function LCe(n) { + var e, t; + for (n.e = K(ye, _e, 28, n.p.c.length, 15, 1), n.k = K(ye, _e, 28, n.p.c.length, 15, 1), t = new C(n.p); t.a < t.c.c.length; ) + e = u(E(t), 10), n.e[e.p] = wl(new ie(ce(ji(e).a.Kc(), new En()))), n.k[e.p] = wl(new ie(ce(Qt(e).a.Kc(), new En()))); + } + function NCe(n) { + var e, t, i, r, c, s; + for (r = 0, n.q = new Z(), e = new ni(), s = new C(n.p); s.a < s.c.c.length; ) { + for (c = u(E(s), 10), c.p = r, i = new ie(ce(Qt(c).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), fi(e, t.d.i); + e.a.Bc(c) != null, nn(n.q, new F6(e)), e.a.$b(), ++r; + } + } + function PHn(n, e) { + var t, i, r, c, s, f, h, l, a; + if (n.a.f > 0 && D(e, 44) && (n.a._j(), l = u(e, 44), h = l.ld(), c = h == null ? 0 : mt(h), s = bV(n.a, c), t = n.a.d[s], t)) { + for (i = u(t.g, 379), a = t.i, f = 0; f < a; ++f) + if (r = i[f], r.Bi() == c && r.Fb(l)) + return PHn(n, l), !0; + } + return !1; + } + function $Ce(n) { + var e, t, i, r, c, s, f; + if (e = n.qi(ks), e && (f = Oe(gf((!e.b && (e.b = new lo((On(), ar), pc, e)), e.b), "settingDelegates")), f != null)) { + for (t = new Z(), r = ww(f, "\\w+"), c = 0, s = r.length; c < s; ++c) + i = r[c], Kn(t.c, i); + return t; + } + return Dn(), Dn(), sr; + } + function xCe(n) { + var e, t, i, r; + for (r = u(ot(n.a, (ow(), GP)), 15).Kc(); r.Ob(); ) + i = u(r.Pb(), 105), t = (e = Tp(i.k), e.Hc((en(), Xn)) ? e.Hc(Zn) ? e.Hc(ae) ? e.Hc(Wn) ? null : one : fne : sne : une), M4(n, i, t[0], (D0(), cb), 0), M4(n, i, t[1], va, 1), M4(n, i, t[2], ub, 1); + } + function FCe(n, e) { + var t, i; + t = pSe(e), rAe(n, e, t), NKn(n.a, u(v(Hi(e.b), (W(), S3)), 234)), RSe(n), oye(n, e), i = K(ye, _e, 28, e.b.j.c.length, 15, 1), VF(n, e, (en(), Xn), i, t), VF(n, e, Zn, i, t), VF(n, e, ae, i, t), VF(n, e, Wn, i, t), n.a = null, n.c = null, n.b = null; + } + function Wnn(n, e, t) { + switch (e) { + case 7: + !n.e && (n.e = new Nn(Wt, n, 7, 4)), me(n.e), !n.e && (n.e = new Nn(Wt, n, 7, 4)), Ht(n.e, u(t, 16)); + return; + case 8: + !n.d && (n.d = new Nn(Wt, n, 8, 5)), me(n.d), !n.d && (n.d = new Nn(Wt, n, 8, 5)), Ht(n.d, u(t, 16)); + return; + } + HZ(n, e, t); + } + function Jnn(n, e) { + var t, i, r, c, s; + if (x(e) === x(n)) + return !0; + if (!D(e, 15) || (s = u(e, 15), n.gc() != s.gc())) + return !1; + for (c = s.Kc(), i = n.Kc(); i.Ob(); ) + if (t = i.Pb(), r = c.Pb(), !(x(t) === x(r) || t != null && ct(t, r))) + return !1; + return !0; + } + function BCe(n, e) { + var t, i, r, c; + for (c = u(Wr(rc(rc(new Tn(null, new In(e.b, 16)), new agn()), new dgn()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), c.Jc(new bgn()), t = 0, r = c.Kc(); r.Ob(); ) + i = u(r.Pb(), 12), i.p == -1 && Qnn(n, i, t++); + } + function IHn(n) { + switch (n.g) { + case 0: + return new s8n(); + case 1: + return new u8n(); + case 2: + return new o8n(); + case 3: + return new QCn(); + case 4: + return new pPn(); + default: + throw M(new Gn("No implementation is available for the node placer " + (n.f != null ? n.f : "" + n.g))); + } + } + function OHn(n) { + switch (n.g) { + case 0: + return new bW(); + case 1: + return new V5n(); + case 2: + return new X5n(); + case 3: + return new G5n(); + case 4: + return new _Mn(); + default: + throw M(new Gn("No implementation is available for the cycle breaker " + (n.f != null ? n.f : "" + n.g))); + } + } + function RCe(n, e) { + var t, i, r, c, s; + i = new Ct(), Kt(i, e, i.c.b, i.c); + do + for (t = (oe(i.b != 0), u(Xo(i, i.a.a), 40)), n.b[t.g] = 1, c = ge(t.d, 0); c.b != c.d.c; ) + r = u(be(c), 65), s = r.c, n.b[s.g] == 1 ? Fe(n.a, r) : n.b[s.g] == 2 ? n.b[s.g] = 1 : Kt(i, s, i.c.b, i.c); + while (i.b != 0); + } + function KCe(n, e, t) { + var i; + i = null, e && (i = e.d), I5(n, new d4(e.n.a - i.b + t.a, e.n.b - i.d + t.b)), I5(n, new d4(e.n.a - i.b + t.a, e.n.b + e.o.b + i.a + t.b)), I5(n, new d4(e.n.a + e.o.a + i.c + t.a, e.n.b - i.d + t.b)), I5(n, new d4(e.n.a + e.o.a + i.c + t.a, e.n.b + e.o.b + i.a + t.b)); + } + function Qnn(n, e, t) { + var i, r, c; + for (e.p = t, c = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [new e4(e), new ip(e)]))); pe(c); ) + i = u(fe(c), 12), i.p == -1 && Qnn(n, i, t); + if (e.i.k == (Vn(), Mi)) + for (r = new C(e.i.j); r.a < r.c.c.length; ) + i = u(E(r), 12), i != e && i.p == -1 && Qnn(n, i, t); + } + function _Ce(n, e) { + var t, i, r, c, s, f; + for (i = new Ql(), s = HM(new Ku(n.g)), c = s.a.ec().Kc(); c.Ob(); ) { + if (r = u(c.Pb(), 10), !r) { + e.bh("There are no classes in a balanced layout."); + break; + } + f = n.j[r.p], t = u(Nf(i, f), 15), t || (t = new Z(), s1(i, f, t)), t.Fc(r); + } + return i; + } + function DHn(n) { + var e, t, i, r, c; + if (r = u(Wr(oJ(hJ(n)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), i = i2, r.gc() >= 2) + for (t = r.Kc(), e = R(t.Pb()); t.Ob(); ) + c = e, e = R(t.Pb()), i = y.Math.min(i, (Jn(e), e - (Jn(c), c))); + return i; + } + function HCe(n, e) { + var t, i, r; + for (r = new Z(), i = ge(e.a, 0); i.b != i.d.c; ) + t = u(be(i), 65), t.b.g == n.g && !An(t.b.c, IS) && x(v(t.b, (lc(), Sh))) !== x(v(t.c, Sh)) && !Og(new Tn(null, new In(r, 16)), new akn(t)) && Kn(r.c, t); + return Yt(r, new W3n()), r; + } + function qCe(n, e) { + var t, i, r; + if (x(e) === x(Se(n))) + return !0; + if (!D(e, 15) || (i = u(e, 15), r = n.gc(), r != i.gc())) + return !1; + if (D(i, 59)) { + for (t = 0; t < r; t++) + if (!sh(n.Xb(t), i.Xb(t))) + return !1; + return !0; + } else + return U9e(n.Kc(), i.Kc()); + } + function UCe(n, e, t, i, r, c) { + var s, f, h, l; + for (f = !s4(ut(n.Oc(), new Z3(new Agn()))).Bd((Va(), v3)), s = n, c == (ci(), us) && (s = Qo(s)), l = s.Kc(); l.Ob(); ) + h = u(l.Pb(), 72), h.n.a = e.a, f ? h.n.b = e.b + (i.b - h.o.b) / 2 : r ? h.n.b = e.b : h.n.b = e.b + i.b - h.o.b, e.a += h.o.a + t; + } + function GCe(n, e) { + var t, i, r, c, s; + for (e.Ug("Port side processing", 1), s = new C(n.a); s.a < s.c.c.length; ) + r = u(E(s), 10), zUn(r); + for (i = new C(n.b); i.a < i.c.c.length; ) + for (t = u(E(i), 30), c = new C(t.a); c.a < c.c.c.length; ) + r = u(E(c), 10), zUn(r); + e.Vg(); + } + function zCe(n, e, t) { + var i, r, c, s, f, h, l; + if (t) + for (c = t.a.length, i = new Qa(c), f = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); f.Ob(); ) + s = u(f.Pb(), 17), h = L4(t, s.a), h && (l = Dme(bl(h, wK), e), Ve(n.f, l, h), r = Eh in h.a, r && X4(l, bl(h, Eh)), gA(h, l), Snn(h, l)); + } + function XCe(n, e, t) { + var i, r, c, s, f; + if (f = t, !f && (f = ZV(new op(), 0)), f.Ug(IXn, 1), SGn(n.c, e), s = QOe(n.a, e), s.gc() == 1) + fGn(u(s.Xb(0), 36), f); + else + for (c = 1 / s.gc(), r = s.Kc(); r.Ob(); ) { + if (i = u(r.Pb(), 36), t.$g()) + return; + fGn(i, f.eh(c)); + } + fhe(n.a, s, e), MAe(e), f.Vg(); + } + function LHn(n, e, t) { + var i, r, c, s, f; + if (r = n.f, !r && (r = u(n.a.a.ec().Kc().Pb(), 60)), P5(r, e, t), n.a.a.gc() != 1) + for (i = e * t, s = n.a.a.ec().Kc(); s.Ob(); ) + c = u(s.Pb(), 60), c != r && (f = xp(c), f.f.d ? (c.d.d += i + _f, c.d.a -= i + _f) : f.f.a && (c.d.a -= i + _f)); + } + function wF(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p; + return s = t - n, f = i - e, c = y.Math.atan2(s, f), h = c + QB, l = c - QB, a = r * y.Math.sin(h) + n, g = r * y.Math.cos(h) + e, d = r * y.Math.sin(l) + n, p = r * y.Math.cos(l) + e, Of(A(T(Ei, 1), J, 8, 0, [new V(a, g), new V(d, p)])); + } + function VCe(n, e, t, i) { + var r, c, s, f, h, l, a, d; + r = t, a = e, c = a; + do + c = n.a[c.p], f = (d = n.g[c.p], $(n.p[d.p]) + $(n.d[c.p]) - c.d.d), h = Vme(c, i), h && (s = (l = n.g[h.p], $(n.p[l.p]) + $(n.d[h.p]) + h.o.b + h.d.a), r = y.Math.min(r, f - (s + jg(n.k, c, h)))); + while (a != c); + return r; + } + function WCe(n, e, t, i) { + var r, c, s, f, h, l, a, d; + r = t, a = e, c = a; + do + c = n.a[c.p], s = (d = n.g[c.p], $(n.p[d.p]) + $(n.d[c.p]) + c.o.b + c.d.a), h = n6e(c, i), h && (f = (l = n.g[h.p], $(n.p[l.p]) + $(n.d[h.p]) - h.d.d), r = y.Math.min(r, f - (s + jg(n.k, c, h)))); + while (a != c); + return r; + } + function NHn(n, e) { + var t; + if (e.Ug("Equal Whitespace Eliminator", 1), Lf(n, (_h(), GI))) + i5e(u(z(n, GI), 15), $(R(z(n, O3))), (t = $(R(z(n, s9))), $(R(z(n, (Rf(), l9)))), t)); + else + throw M(new _l("The graph does not contain rows.")); + e.Vg(); + } + function z(n, e) { + var t, i; + return i = (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), gf(n.o, e)), i != null ? i : (t = e.Sg(), D(t, 4) && (t == null ? (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), VT(n.o, e)) : (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), zk(n.o, e, t))), t); + } + function lw() { + lw = F, Qs = new bg("H_LEFT", 0), xl = new bg("H_CENTER", 1), Ys = new bg("H_RIGHT", 2), nf = new bg("V_TOP", 3), el = new bg("V_CENTER", 4), Ms = new bg("V_BOTTOM", 5), Lo = new bg("INSIDE", 6), Zs = new bg("OUTSIDE", 7), Cs = new bg("H_PRIORITY", 8); + } + function JCe(n, e) { + var t, i, r, c, s, f, h; + if (!e.f) + throw M(new Gn("The input edge is not a tree edge.")); + for (c = null, r = tt, i = new C(n.d); i.a < i.c.c.length; ) + t = u(E(i), 218), f = t.d, h = t.e, fF(n, f, e) && !fF(n, h, e) && (s = h.e - f.e - t.a, s < r && (r = s, c = t)); + return c; + } + function QCe(n) { + var e, t, i, r, c, s; + if (!(n.f.e.c.length <= 1)) { + e = 0, r = jHn(n), t = St; + do { + for (e > 0 && (r = t), s = new C(n.f.e); s.a < s.c.c.length; ) + c = u(E(s), 153), !on(un(v(c, (Uk(), Ton)))) && (i = hPe(n, c), it(ff(c.d), i)); + t = jHn(n); + } while (!$we(n, e++, r, t)); + } + } + function YCe(n, e) { + var t, i, r, c, s; + for (c = n.g.a, s = n.g.b, i = new C(n.d); i.a < i.c.c.length; ) + t = u(E(i), 72), r = t.n, n.a == (xf(), lv) || n.i == (en(), Zn) ? r.a = c : n.a == av || n.i == (en(), Wn) ? r.a = c + n.j.a - t.o.a : r.a = c + (n.j.a - t.o.a) / 2, r.b = s, it(r, e), s += t.o.b + n.e; + } + function ZCe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + l = n, h = Y6(l, "individualSpacings"), h && (i = Lf(e, (He(), $3)), s = !i, s && (r = new _O(), ht(e, $3, r)), f = u(z(e, $3), 385), d = h, c = null, d && (c = (a = S$(d, K(fn, J, 2, 0, 6, 1)), new SD(d, a))), c && (t = new MMn(d, f), qi(c, t))); + } + function nMe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + return h = null, d = n, a = null, (EWn in d.a || CWn in d.a || RS in d.a) && (l = null, g = VQ(e), s = Y6(d, EWn), t = new Jkn(g), w8e(t.a, s), f = Y6(d, CWn), i = new uyn(g), g8e(i.a, f), c = A0(d, RS), r = new fyn(g), l = (nye(r.a, c), c), a = l), h = a, h; + } + function eMe(n, e) { + var t, i, r; + if (e === n) + return !0; + if (D(e, 552)) { + if (r = u(e, 849), n.a.d != r.a.d || Ag(n).gc() != Ag(r).gc()) + return !1; + for (i = Ag(r).Kc(); i.Ob(); ) + if (t = u(i.Pb(), 425), xOn(n, t.a.ld()) != u(t.a.md(), 16).gc()) + return !1; + return !0; + } + return !1; + } + function tMe(n) { + var e, t, i, r; + return i = u(n.a, 17).a, r = u(n.b, 17).a, e = i, t = r, i == 0 && r == 0 ? t -= 1 : i == -1 && r <= 0 ? (e = 0, t -= 2) : i <= 0 && r > 0 ? (e -= 1, t -= 1) : i >= 0 && r < 0 ? (e += 1, t += 1) : i > 0 && r >= 0 ? (e -= 1, t += 1) : (e += 1, t -= 1), new bi(Y(e), Y(t)); + } + function iMe(n, e) { + return n.c < e.c ? -1 : n.c > e.c ? 1 : n.b < e.b ? -1 : n.b > e.b ? 1 : n.a != e.a ? mt(n.a) - mt(e.a) : n.d == (Z6(), e9) && e.d == n9 ? -1 : n.d == n9 && e.d == e9 ? 1 : 0; + } + function $Hn(n, e) { + var t, i, r, c, s; + return c = e.a, c.c.i == e.b ? s = c.d : s = c.c, c.c.i == e.b ? i = c.c : i = c.d, r = M8e(n.a, s, i), r > 0 && r < i2 ? (t = VCe(n.a, i.i, r, n.c), I$n(n.a, i.i, -t), t > 0) : r < 0 && -r < i2 ? (t = WCe(n.a, i.i, -r, n.c), I$n(n.a, i.i, t), t > 0) : !1; + } + function rMe(n, e, t, i) { + var r, c, s, f, h, l, a, d; + for (r = (e - n.d) / n.c.c.length, c = 0, n.a += t, n.d = e, d = new C(n.c); d.a < d.c.c.length; ) + a = u(E(d), 27), l = a.g, h = a.f, tu(a, a.i + c * r), iu(a, a.j + i * t), I0(a, a.g + r), P0(a, n.a), ++c, f = a.g, s = a.f, Mnn(a, new V(f, s), new V(l, h)); + } + function cMe(n) { + var e, t, i, r, c, s, f; + if (n == null) + return null; + for (f = n.length, r = (f + 1) / 2 | 0, s = K(Bu, s2, 28, r, 15, 1), f % 2 != 0 && (s[--r] = ven((zn(f - 1, n.length), n.charCodeAt(f - 1)))), t = 0, i = 0; t < r; ++t) + e = ven(Xi(n, i++)), c = ven(Xi(n, i++)), s[t] = (e << 4 | c) << 24 >> 24; + return s; + } + function uMe(n) { + if (n.ze()) { + var e = n.c; + e.Ae() ? n.o = "[" + e.n : e.ze() ? n.o = "[" + e.xe() : n.o = "[L" + e.xe() + ";", n.b = e.we() + "[]", n.k = e.ye() + "[]"; + return; + } + var t = n.j, i = n.d; + i = i.split("/"), n.o = mx(".", [t, mx("$", i)]), n.b = mx(".", [t, mx(".", i)]), n.k = i[i.length - 1]; + } + function oMe(n, e) { + var t, i, r, c, s; + for (s = null, c = new C(n.e.a); c.a < c.c.c.length; ) + if (r = u(E(c), 125), r.b.a.c.length == r.g.a.c.length) { + for (i = r.e, s = _je(r), t = r.e - u(s.a, 17).a + 1; t < r.e + u(s.b, 17).a; t++) + e[t] < e[i] && (i = t); + e[i] < e[r.e] && (--e[r.e], ++e[i], r.e = i); + } + } + function gF(n) { + var e, t, i, r, c, s, f, h; + for (r = St, i = li, t = new C(n.e.b); t.a < t.c.c.length; ) + for (e = u(E(t), 30), s = new C(e.a); s.a < s.c.c.length; ) + c = u(E(s), 10), h = $(n.p[c.p]), f = h + $(n.b[n.g[c.p].p]), r = y.Math.min(r, h), i = y.Math.max(i, f); + return i - r; + } + function xHn(n) { + UF(); + var e, t, i, r; + return i = ih(n, gu(35)), e = i == -1 ? n : (Fi(0, i, n.length), n.substr(0, i)), t = i == -1 ? null : (zn(i + 1, n.length + 1), n.substr(i + 1)), r = E3e(qdn, e), r ? t != null && (r = OFn(r, (Jn(t), t))) : (r = ULe(e), x3e(qdn, e, r), t != null && (r = OFn(r, t))), r; + } + function Ynn(n, e, t, i) { + var r, c, s, f, h; + for (r = Sen(n, e), f = 0, h = r.gc(); f < h; ++f) + if (c = u(r.Xb(f), 179), An(i, P4(Lr(n, c)))) { + if (s = q7(Lr(n, c)), t == null) { + if (s == null) + return c; + } else if (An(t, s)) + return c; + } + return null; + } + function Znn(n, e, t, i) { + var r, c, s, f, h; + for (r = SF(n, e), f = 0, h = r.gc(); f < h; ++f) + if (c = u(r.Xb(f), 179), An(i, P4(Lr(n, c)))) { + if (s = q7(Lr(n, c)), t == null) { + if (s == null) + return c; + } else if (An(t, s)) + return c; + } + return null; + } + function sMe(n, e, t) { + var i, r, c, s, f, h; + if (s = new EE(), f = cu(n.e.Dh(), e), i = u(n.g, 124), br(), u(e, 69).xk()) + for (c = 0; c < n.i; ++c) + r = i[c], f.am(r.Lk()) && ve(s, r); + else + for (c = 0; c < n.i; ++c) + r = i[c], f.am(r.Lk()) && (h = r.md(), ve(s, t ? L5(n, e, c, s.i, h) : h)); + return EJ(s); + } + function FHn(n) { + var e, t, i, r, c, s, f; + if (n && (e = n.qi(ks), e && (s = Oe(gf((!e.b && (e.b = new lo((On(), ar), pc, e)), e.b), "conversionDelegates")), s != null))) { + for (f = new Z(), i = ww(s, "\\w+"), r = 0, c = i.length; r < c; ++r) + t = i[r], Kn(f.c, t); + return f; + } + return Dn(), Dn(), sr; + } + function BHn(n, e) { + var t, i, r, c, s, f, h, l; + for (s = e == 1 ? A_ : T_, c = s.a.ec().Kc(); c.Ob(); ) + for (r = u(c.Pb(), 88), h = u(ot(n.f.c, r), 21).Kc(); h.Ob(); ) + switch (f = u(h.Pb(), 42), i = u(f.b, 86), l = u(f.a, 194), t = l.c, r.g) { + case 2: + case 1: + i.g.d += t; + break; + case 4: + case 3: + i.g.c += t; + } + } + function fMe(n, e) { + var t, i, r, c, s; + for (t = new y5(wv), r = (Yp(), A(T(wv, 1), G, 232, 0, [bv, N8, dv, Nw, p2, g2])), c = 0, s = r.length; c < s; ++c) + i = r[c], mV(t, i, new Z()); + return Gt(_r(ut(rc(new Tn(null, new In(n.b, 16)), new Sgn()), new Pgn()), new r7n(e)), new c7n(t)), t; + } + function EA(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (c = e.Kc(); c.Ob(); ) + r = u(c.Pb(), 27), a = r.i + r.g / 2, g = r.j + r.f / 2, h = n.f, s = h.i + h.g / 2, f = h.j + h.f / 2, l = a - s, d = g - f, i = y.Math.sqrt(l * l + d * d), l *= n.e / i, d *= n.e / i, t ? (a -= l, g -= d) : (a += l, g += d), tu(r, a - r.g / 2), iu(r, g - r.f / 2); + } + function Gg(n) { + var e, t, i; + if (!n.c && n.b != null) { + for (e = n.b.length - 4; e >= 0; e -= 2) + for (t = 0; t <= e; t += 2) + (n.b[t] > n.b[t + 2] || n.b[t] === n.b[t + 2] && n.b[t + 1] > n.b[t + 3]) && (i = n.b[t + 2], n.b[t + 2] = n.b[t], n.b[t] = i, i = n.b[t + 3], n.b[t + 3] = n.b[t + 1], n.b[t + 1] = i); + n.c = !0; + } + } + function hMe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (l = -1, a = 0, s = n, f = 0, h = s.length; f < h; ++f) { + for (c = s[f], t = new NSn(l == -1 ? n[0] : n[l], e, (w5(), MI)), i = 0; i < c.length; i++) + for (r = i + 1; r < c.length; r++) + kt(c[i], (W(), dt)) && kt(c[r], dt) && bzn(t, c[i], c[r]) > 0 && ++a; + ++l; + } + return a; + } + function Hs(n) { + var e, t; + return t = new mo(Xa(n.Rm)), t.a += "@", Re(t, (e = mt(n) >>> 0, e.toString(16))), n.Vh() ? (t.a += " (eProxyURI: ", Lc(t, n._h()), n.Kh() && (t.a += " eClass: ", Lc(t, n.Kh())), t.a += ")") : n.Kh() && (t.a += " (eClass: ", Lc(t, n.Kh()), t.a += ")"), t.a; + } + function $5(n) { + var e, t, i, r; + if (n.e) + throw M(new Or((ll(u_), FB + u_.k + BB))); + for (n.d == (ci(), Jf) && UA(n, Br), t = new C(n.a.a); t.a < t.c.c.length; ) + e = u(E(t), 316), e.g = e.i; + for (r = new C(n.a.b); r.a < r.c.c.length; ) + i = u(E(r), 60), i.i = li; + return n.b.cf(n), n; + } + function lMe(n, e) { + var t, i, r, c, s; + if (e < 2 * n.b) + throw M(new Gn("The knot vector must have at least two time the dimension elements.")); + for (n.f = 1, r = 0; r < n.b; r++) + nn(n.e, 0); + for (s = e + 1 - 2 * n.b, t = s, c = 1; c < s; c++) + nn(n.e, c / t); + if (n.d) + for (i = 0; i < n.b; i++) + nn(n.e, 1); + } + function RHn(n, e) { + var t, i, r, c, s, f, h, l, a; + if (l = e, a = u(pT(dN(n.i), l), 27), !a) + throw r = bl(l, Eh), f = "Unable to find elk node for json object '" + r, h = f + "' Panic!", M(new eh(h)); + c = A0(l, "edges"), t = new pMn(n, a), JEe(t.a, t.b, c), s = A0(l, gK), i = new Hkn(n), nke(i.a, s); + } + function KHn(n, e, t, i) { + var r, c, s, f, h; + if (i != null) { + if (r = n.d[e], r) { + for (c = r.g, h = r.i, f = 0; f < h; ++f) + if (s = u(c[f], 136), s.Bi() == t && ct(i, s.ld())) + return f; + } + } else if (r = n.d[e], r) { + for (c = r.g, h = r.i, f = 0; f < h; ++f) + if (s = u(c[f], 136), x(s.ld()) === x(i)) + return f; + } + return -1; + } + function Mm(n, e) { + var t, i, r; + return t = e == null ? Kr(gr(n.f, null)) : a6(n.i, e), D(t, 241) ? (r = u(t, 241), r.zi() == null, r) : D(t, 507) ? (i = u(t, 2037), r = i.a, r && (r.yb == null || (e == null ? Wc(n.f, null, r) : $0(n.i, e, r))), r) : null; + } + function aMe(n) { + gen(); + var e, t, i, r, c, s, f; + if (n == null || (r = n.length, r % 2 != 0)) + return null; + for (e = iT(n), c = r / 2 | 0, t = K(Bu, s2, 28, c, 15, 1), i = 0; i < c; i++) { + if (s = B9[e[i * 2]], s == -1 || (f = B9[e[i * 2 + 1]], f == -1)) + return null; + t[i] = (s << 4 | f) << 24 >> 24; + } + return t; + } + function dMe(n, e, t) { + var i, r, c; + if (r = u(Mr(n.i, e), 314), !r) + if (r = new y$n(n.d, e, t), Pp(n.i, e, r), iZ(e)) + p1e(n.a, e.c, e.b, r); + else + switch (c = Jje(e), i = u(Mr(n.p, c), 252), c.g) { + case 1: + case 3: + r.j = !0, mD(i, e.b, r); + break; + case 4: + case 2: + r.k = !0, mD(i, e.c, r); + } + return r; + } + function bMe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (h = Dh(n.c - n.b & n.a.length - 1), l = null, a = null, c = new V6(n); c.a != c.b; ) + r = u(xT(c), 10), t = (f = u(v(r, (W(), yf)), 12), f ? f.i : null), i = (s = u(v(r, Es), 12), s ? s.i : null), (l != t || a != i) && (mHn(h, e), l = t, a = i), Kn(h.c, r); + mHn(h, e); + } + function wMe(n, e, t, i) { + var r, c, s, f, h, l; + if (f = new EE(), h = cu(n.e.Dh(), e), r = u(n.g, 124), br(), u(e, 69).xk()) + for (s = 0; s < n.i; ++s) + c = r[s], h.am(c.Lk()) && ve(f, c); + else + for (s = 0; s < n.i; ++s) + c = r[s], h.am(c.Lk()) && (l = c.md(), ve(f, i ? L5(n, e, s, f.i, l) : l)); + return JY(f, t); + } + function _Hn(n, e) { + var t, i, r, c, s, f, h, l; + if (r = n.b[e.p], r >= 0) + return r; + for (c = 1, f = new C(e.j); f.a < f.c.c.length; ) + for (s = u(E(f), 12), i = new C(s.g); i.a < i.c.c.length; ) + t = u(E(i), 18), l = t.d.i, e != l && (h = _Hn(n, l), c = y.Math.max(c, h + 1)); + return h8e(n, e, c), c; + } + function HHn(n, e) { + var t, i, r, c, s, f, h, l; + if (r = n.b[e.p], r >= 0) + return r; + for (c = 1, f = new C(e.j); f.a < f.c.c.length; ) + for (s = u(E(f), 12), i = new C(s.e); i.a < i.c.c.length; ) + t = u(E(i), 18), l = t.c.i, e != l && (h = HHn(n, l), c = y.Math.max(c, h + 1)); + return _9e(n, e, c), c; + } + function qHn(n, e, t) { + var i, r, c; + for (i = 1; i < n.c.length; i++) { + for (c = (Ln(i, n.c.length), u(n.c[i], 10)), r = i; r > 0 && e.Ne((Ln(r - 1, n.c.length), u(n.c[r - 1], 10)), c) > 0; ) + Go(n, r, (Ln(r - 1, n.c.length), u(n.c[r - 1], 10))), --r; + Ln(r, n.c.length), n.c[r] = c; + } + t.a = new de(), t.b = new de(); + } + function gMe(n, e, t) { + var i, r, c, s, f, h, l, a; + for (a = (i = u(e.e && e.e(), 9), new _o(i, u(xs(i, i.length), 9), 0)), h = ww(t, "[\\[\\]\\s,]+"), c = h, s = 0, f = c.length; s < f; ++s) + if (r = c[s], fw(r).length != 0) { + if (l = Q_n(n, r), l == null) + return null; + _s(a, u(l, 22)); + } + return a; + } + function pMe(n) { + var e, t, i, r; + for (r = n.length, e = null, i = 0; i < r; i++) + t = (zn(i, n.length), n.charCodeAt(i)), ih(".*+?{[()|\\^$", gu(t)) >= 0 ? (e || (e = new i6(), i > 0 && Cr(e, (Fi(0, i, n.length), n.substr(0, i)))), e.a += "\\", T4(e, t & ui)) : e && T4(e, t & ui); + return e ? e.a : n; + } + function mMe(n) { + var e, t, i; + for (t = new C(n.a.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), i = (Jn(0), 0), i > 0 && (!(hl(n.a.c) && e.n.d) && !(vg(n.a.c) && e.n.b) && (e.g.d -= y.Math.max(0, i / 2 - 0.5)), !(hl(n.a.c) && e.n.a) && !(vg(n.a.c) && e.n.c) && (e.g.a += y.Math.max(0, i - 1))); + } + function UHn(n, e, t) { + var i, r; + if ((n.c - n.b & n.a.length - 1) == 2) + e == (en(), Xn) || e == Zn ? (sT(u(l5(n), 15), (To(), nl)), sT(u(l5(n), 15), Aa)) : (sT(u(l5(n), 15), (To(), Aa)), sT(u(l5(n), 15), nl)); + else + for (r = new V6(n); r.a != r.b; ) + i = u(xT(r), 15), sT(i, t); + } + function vMe(n, e) { + var t, i, r, c, s, f, h; + for (r = y4(new FG(n)), f = new xi(r, r.c.length), c = y4(new FG(e)), h = new xi(c, c.c.length), s = null; f.b > 0 && h.b > 0 && (t = (oe(f.b > 0), u(f.a.Xb(f.c = --f.b), 27)), i = (oe(h.b > 0), u(h.a.Xb(h.c = --h.b), 27)), t == i); ) + s = t; + return s; + } + function GHn(n, e, t) { + var i, r, c, s; + zOn(n, e) > zOn(n, t) ? (i = uc(t, (en(), Zn)), n.d = i.dc() ? 0 : zL(u(i.Xb(0), 12)), s = uc(e, Wn), n.b = s.dc() ? 0 : zL(u(s.Xb(0), 12))) : (r = uc(t, (en(), Wn)), n.d = r.dc() ? 0 : zL(u(r.Xb(0), 12)), c = uc(e, Zn), n.b = c.dc() ? 0 : zL(u(c.Xb(0), 12))); + } + function zHn(n, e) { + var t, i, r, c; + for (t = n.o.a, c = u(u(ot(n.r, e), 21), 87).Kc(); c.Ob(); ) + r = u(c.Pb(), 117), r.e.a = t * $(R(r.b.of(bP))), r.e.b = (i = r.b, i.pf((He(), oo)) ? i.ag() == (en(), Xn) ? -i.Mf().b - $(R(i.of(oo))) : $(R(i.of(oo))) : i.ag() == (en(), Xn) ? -i.Mf().b : 0); + } + function kMe(n, e) { + var t, i, r, c; + for (e.Ug("Self-Loop pre-processing", 1), i = new C(n.a); i.a < i.c.c.length; ) + t = u(E(i), 10), u8e(t) && (r = (c = new cRn(t), U(t, (W(), hb), c), USe(c), c), Gt(_r(rc(new Tn(null, new In(r.d, 16)), new g2n()), new p2n()), new m2n()), FTe(r)); + e.Vg(); + } + function yMe(n) { + var e, t, i, r, c, s, f, h; + e = !0, r = null, c = null; + n: + for (h = new C(n.a); h.a < h.c.c.length; ) + for (f = u(E(h), 10), i = new ie(ce(ji(f).a.Kc(), new En())); pe(i); ) { + if (t = u(fe(i), 18), r && r != f) { + e = !1; + break n; + } + if (r = f, s = t.c.i, c && c != s) { + e = !1; + break n; + } + c = s; + } + return e; + } + function jMe(n, e, t) { + var i, r, c, s, f, h; + for (c = -1, f = -1, s = 0; s < e.c.length && (r = (Ln(s, e.c.length), u(e.c[s], 339)), !(r.c > n.c)); s++) + r.a >= n.s && (c < 0 && (c = s), f = s); + return h = (n.s + n.c) / 2, c >= 0 && (i = sSe(n, e, c, f), h = ule((Ln(i, e.c.length), u(e.c[i], 339))), dCe(e, i, t)), h; + } + function Me(n, e, t) { + var i, r, c, s, f, h, l; + for (s = (c = new iG(), c), OQ(s, (Jn(e), e)), l = (!s.b && (s.b = new lo((On(), ar), pc, s)), s.b), h = 1; h < t.length; h += 2) + zk(l, t[h - 1], t[h]); + for (i = (!n.Ab && (n.Ab = new q(Ue, n, 0, 3)), n.Ab), f = 0; f < 0; ++f) + r = Bwe(u(L(i, i.i - 1), 598)), i = r; + ve(i, s); + } + function XHn(n, e, t) { + var i, r, c; + for (Eae.call(this, new Z()), this.a = e, this.b = t, this.e = n, i = (n.b && xF(n), n.a), this.d = CIn(i.a, this.a), this.c = CIn(i.b, this.b), p5e(this, this.d, this.c), qEe(this), c = this.e.e.a.ec().Kc(); c.Ob(); ) + r = u(c.Pb(), 272), r.c.c.length > 0 && rOe(this, r); + } + function nen(n, e, t, i, r, c) { + var s, f, h; + if (!r[e.a]) { + for (r[e.a] = !0, s = i, !s && (s = new zM()), nn(s.e, e), h = c[e.a].Kc(); h.Ob(); ) + f = u(h.Pb(), 290), !(f.d == t || f.c == t) && (f.c != e && nen(n, f.c, e, s, r, c), f.d != e && nen(n, f.d, e, s, r, c), nn(s.c, f), hi(s.d, f.b)); + return s; + } + return null; + } + function EMe(n) { + var e, t, i, r, c, s, f; + for (e = 0, r = new C(n.e); r.a < r.c.c.length; ) + i = u(E(r), 18), t = Og(new Tn(null, new In(i.b, 16)), new zwn()), t && ++e; + for (s = new C(n.g); s.a < s.c.c.length; ) + c = u(E(s), 18), f = Og(new Tn(null, new In(c.b, 16)), new Xwn()), f && ++e; + return e >= 2; + } + function CMe(n, e, t, i, r) { + var c, s, f, h, l, a; + for (c = n.c.d.j, s = u(Zo(t, 0), 8), a = 1; a < t.b; a++) + l = u(Zo(t, a), 8), Kt(i, s, i.c.b, i.c), f = ch(it(new rr(s), l), 0.5), h = ch(new BN(sY(c)), r), it(f, h), Kt(i, f, i.c.b, i.c), s = l, c = e == 0 ? RT(c) : PY(c); + Fe(i, (oe(t.b != 0), u(t.c.b.c, 8))); + } + function MMe(n) { + lw(); + var e, t, i; + return t = yt(Lo, A(T(jr, 1), G, 95, 0, [Zs])), !(kk(LM(t, n)) > 1 || (e = yt(Qs, A(T(jr, 1), G, 95, 0, [xl, Ys])), kk(LM(e, n)) > 1) || (i = yt(nf, A(T(jr, 1), G, 95, 0, [el, Ms])), kk(LM(i, n)) > 1)); + } + function een(n, e, t) { + var i, r, c; + for (c = new C(n.t); c.a < c.c.c.length; ) + i = u(E(c), 274), i.b.s < 0 && i.c > 0 && (i.b.n -= i.c, i.b.n <= 0 && i.b.u > 0 && Fe(e, i.b)); + for (r = new C(n.i); r.a < r.c.c.length; ) + i = u(E(r), 274), i.a.s < 0 && i.c > 0 && (i.a.u -= i.c, i.a.u <= 0 && i.a.n > 0 && Fe(t, i.a)); + } + function CA(n) { + var e, t, i, r, c; + if (n.g == null && (n.d = n.bj(n.f), ve(n, n.d), n.c)) + return c = n.f, c; + if (e = u(n.g[n.i - 1], 51), r = e.Pb(), n.e = e, t = n.bj(r), t.Ob()) + n.d = t, ve(n, t); + else + for (n.d = null; !e.Ob() && (Rt(n.g, --n.i, null), n.i != 0); ) + i = u(n.g[n.i - 1], 51), e = i; + return r; + } + function TMe(n, e) { + var t, i, r, c, s, f; + if (i = e, r = i.Lk(), Sl(n.e, r)) { + if (r.Si() && _M(n, r, i.md())) + return !1; + } else + for (f = cu(n.e.Dh(), r), t = u(n.g, 124), c = 0; c < n.i; ++c) + if (s = t[c], f.am(s.Lk())) + return ct(s, i) ? !1 : (u(Rg(n, c, e), 76), !0); + return ve(n, e); + } + function AMe(n, e, t, i) { + var r, c, s, f; + for (r = new Tl(n), Ha(r, (Vn(), Sc)), U(r, (W(), st), e), U(r, K8, i), U(r, (cn(), Ut), (Di(), Uc)), U(r, yf, e.c), U(r, Es, e.d), yqn(e, r), f = y.Math.floor(t / 2), s = new C(r.j); s.a < s.c.c.length; ) + c = u(E(s), 12), c.n.b = f; + return r; + } + function VHn(n) { + var e, t, i, r, c, s, f; + for (e = 0, i = new C(n.a); i.a < i.c.c.length; ) + for (t = u(E(i), 10), c = new ie(ce(Qt(t).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), n == r.d.i.c && r.c.j == (en(), Wn) && (s = If(r.c).b, f = If(r.d).b, e = y.Math.max(e, y.Math.abs(f - s))); + return e; + } + function WHn(n, e, t) { + var i, r, c, s, f; + for (t.Ug("ELK Force", 1), on(un(z(e, (Us(), mon)))) || X7((i = new Xv((c0(), new Qd(e))), i)), f = hFn(e), X7e(f), w6e(n, u(v(f, pon), 432)), s = _Un(n.a, f), c = s.Kc(); c.Ob(); ) + r = u(c.Pb(), 235), mPe(n.b, r, t.eh(1 / s.gc())); + f = ezn(s), lzn(f), t.Vg(); + } + function ten(n, e, t) { + switch (t.g) { + case 1: + return new V(e.a, y.Math.min(n.d.b, e.b)); + case 2: + return new V(y.Math.max(n.c.a, e.a), e.b); + case 3: + return new V(e.a, y.Math.max(n.c.b, e.b)); + case 4: + return new V(y.Math.min(e.a, n.d.a), e.b); + } + return new V(e.a, e.b); + } + function cy(n) { + var e, t, i; + for (e = Dh(1 + (!n.c && (n.c = new q(Qu, n, 9, 9)), n.c).i), nn(e, (!n.d && (n.d = new Nn(Wt, n, 8, 5)), n.d)), i = new ne((!n.c && (n.c = new q(Qu, n, 9, 9)), n.c)); i.e != i.i.gc(); ) + t = u(ue(i), 123), nn(e, (!t.d && (t.d = new Nn(Wt, t, 8, 5)), t.d)); + return Se(e), new A6(e); + } + function Al(n) { + var e, t, i; + for (e = Dh(1 + (!n.c && (n.c = new q(Qu, n, 9, 9)), n.c).i), nn(e, (!n.e && (n.e = new Nn(Wt, n, 7, 4)), n.e)), i = new ne((!n.c && (n.c = new q(Qu, n, 9, 9)), n.c)); i.e != i.i.gc(); ) + t = u(ue(i), 123), nn(e, (!t.e && (t.e = new Nn(Wt, t, 7, 4)), t.e)); + return Se(e), new A6(e); + } + function SMe(n) { + var e, t, i, r; + if (n == null) + return null; + if (i = Bc(n, !0), r = nj.length, An(i.substr(i.length - r, r), nj)) { + if (t = i.length, t == 4) { + if (e = (zn(0, i.length), i.charCodeAt(0)), e == 43) + return f0n; + if (e == 45) + return vse; + } else if (t == 3) + return f0n; + } + return sw(i); + } + function PMe(n, e) { + var t, i, r, c, s; + if (e.Ug("Breaking Point Processor", 1), aDe(n), on(un(v(n, (cn(), Thn))))) { + for (r = new C(n.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), t = 0, s = new C(i.a); s.a < s.c.c.length; ) + c = u(E(s), 10), c.p = t++; + oIe(n), dqn(n, !0), dqn(n, !1); + } + e.Vg(); + } + function IMe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g; + for (d = i ? (en(), Wn) : (en(), Zn), r = !1, h = e[t], l = 0, a = h.length; l < a; ++l) + f = h[l], !Ep(u(v(f, (cn(), Ut)), 101)) && (s = f.e, g = !uc(f, d).dc() && !!s, g && (c = WZ(s), n.b = new QZ(c, i ? 0 : c.length - 1)), r = r | pAe(n, f, d, g)); + return r; + } + function JHn(n, e, t, i) { + var r, c, s; + if (s = RZ(e, t), Kn(i.c, e), n.j[s.p] == -1 || n.j[s.p] == 2 || n.a[e.p]) + return i; + for (n.j[s.p] = -1, c = new ie(ce(Cl(s).a.Kc(), new En())); pe(c); ) + if (r = u(fe(c), 18), !(!(!fr(r) && !(!fr(r) && r.c.i.c == r.d.i.c)) || r == e)) + return JHn(n, r, s, i); + return i; + } + function OMe(n) { + var e, t, i, r; + for (e = 0, t = 0, r = new C(n.j); r.a < r.c.c.length; ) + if (i = u(E(r), 12), e = Ae(nr(e, KLn(ut(new Tn(null, new In(i.e, 16)), new g3n())))), t = Ae(nr(t, KLn(ut(new Tn(null, new In(i.g, 16)), new p3n())))), e > 1 || t > 1) + return 2; + return e + t == 1 ? 2 : 0; + } + function to(n, e) { + var t, i, r, c, s, f; + return c = n.a * LB + n.b * 1502, f = n.b * LB + 11, t = y.Math.floor(f * Iy), c += t, f -= t * Mtn, c %= Mtn, n.a = c, n.b = f, e <= 24 ? y.Math.floor(n.a * Nun[e]) : (r = n.a * (1 << e - 24), s = y.Math.floor(n.b * $un[e]), i = r + s, i >= 2147483648 && (i -= 4294967296), i); + } + function QHn(n, e, t) { + var i, r, c, s, f, h, l; + for (c = new Z(), l = new Ct(), s = new Ct(), VPe(n, l, s, e), TOe(n, l, s, e, t), h = new C(n); h.a < h.c.c.length; ) + for (f = u(E(h), 118), r = new C(f.k); r.a < r.c.c.length; ) + i = u(E(r), 132), (!e || i.c == (af(), Ea)) && f.g > i.b.g && Kn(c.c, i); + return c; + } + function DMe(n, e, t) { + var i, r, c, s, f, h; + for (f = n.c, s = (t.q ? t.q : (Dn(), Dn(), Wh)).vc().Kc(); s.Ob(); ) + c = u(s.Pb(), 44), i = !s4(ut(new Tn(null, new In(f, 16)), new Z3(new oMn(e, c)))).Bd((Va(), v3)), i && (h = c.md(), D(h, 4) && (r = uZ(h), r != null && (h = r)), e.qf(u(c.ld(), 149), h)); + } + function LMe(n, e, t) { + var i, r; + if (H7(n.b), hf(n.b, ($k(), XI), (s6(), Hj)), hf(n.b, VI, e.g), hf(n.b, WI, e.a), n.a = gy(n.b, e), t.Ug("Compaction by shrinking a tree", n.a.c.length), e.i.c.length > 1) + for (r = new C(n.a); r.a < r.c.c.length; ) + i = u(E(r), 47), i.Kf(e, t.eh(1)); + t.Vg(); + } + function ien(n, e, t) { + var i, r, c; + if (c = Qg((Lu(), zi), n.Dh(), e), c) { + if (br(), !u(c, 69).xk() && (c = $p(Lr(zi, c)), !c)) + throw M(new Gn(ba + e.xe() + b8)); + r = (i = n.Ih(c), u(i >= 0 ? n.Lh(i, !0, !0) : H0(n, c, !0), 160)), u(r, 220).Xl(e, t); + } else + throw M(new Gn(ba + e.xe() + b8)); + } + function MA(n, e) { + var t, i, r, c, s; + if (e) { + for (c = D(n.Cb, 90) || D(n.Cb, 102), s = !c && D(n.Cb, 331), i = new ne((!e.a && (e.a = new B6(e, Er, e)), e.a)); i.e != i.i.gc(); ) + if (t = u(ue(i), 89), r = BA(t), c ? D(r, 90) : s ? D(r, 156) : r) + return r; + return c ? (On(), Is) : (On(), Zf); + } else + return null; + } + function NMe(n, e) { + var t, i, r, c; + for (e.Ug("Resize child graph to fit parent.", 1), i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 30), hi(n.a, t.a), t.a.c.length = 0; + for (c = new C(n.a); c.a < c.c.c.length; ) + r = u(E(c), 10), $i(r, null); + n.b.c.length = 0, nAe(n), n.e && QSe(n.e, n), e.Vg(); + } + function $Me(n, e) { + var t, i, r, c, s; + for (e.Ug("Edge joining", 1), t = on(un(v(n, (cn(), DH)))), r = new C(n.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), s = new xi(i.a, 0); s.b < s.d.gc(); ) + c = (oe(s.b < s.d.gc()), u(s.d.Xb(s.c = s.b++), 10)), c.k == (Vn(), Mi) && (XF(c, t), bo(s)); + e.Vg(); + } + function xMe(n, e) { + var t, i, r, c, s; + for (t = new Z(), r = rc(new Tn(null, new In(n, 16)), new $3n()), c = rc(new Tn(null, new In(n, 16)), new x3n()), s = z4e(h4e(Ub(wTe(A(T(bNe, 1), Bn, 848, 0, [r, c])), new F3n()))), i = 1; i < s.length; i++) + s[i] - s[i - 1] >= 2 * e && nn(t, new KL(s[i - 1] + e, s[i] - e)); + return t; + } + function FMe(n, e, t) { + var i, r, c, s, f, h, l, a; + if (t) + for (c = t.a.length, i = new Qa(c), f = (i.b - i.a) * i.c < 0 ? (K1(), xa) : new q1(i); f.Ob(); ) + s = u(f.Pb(), 17), r = L4(t, s.a), r && (h = d3e(n, (l = (B1(), a = new tz(), a), e && ren(l, e), l), r), X4(h, bl(r, Eh)), gA(r, h), Snn(r, h), _$(n, r, h)); + } + function TA(n) { + var e, t, i, r, c, s; + if (!n.j) { + if (s = new Mvn(), e = N9, c = e.a.zc(n, e), c == null) { + for (i = new ne(Hr(n)); i.e != i.i.gc(); ) + t = u(ue(i), 29), r = TA(t), Ht(s, r), ve(s, t); + e.a.Bc(n) != null; + } + ew(s), n.j = new pg((u(L(H((G1(), Hn).o), 11), 19), s.i), s.g), Zu(n).b &= -33; + } + return n.j; + } + function BMe(n) { + var e, t, i, r; + if (n == null) + return null; + if (i = Bc(n, !0), r = nj.length, An(i.substr(i.length - r, r), nj)) { + if (t = i.length, t == 4) { + if (e = (zn(0, i.length), i.charCodeAt(0)), e == 43) + return h0n; + if (e == 45) + return kse; + } else if (t == 3) + return h0n; + } + return new GG(i); + } + function RMe(n) { + var e, t, i; + return t = n.l, t & t - 1 || (i = n.m, i & i - 1) || (e = n.h, e & e - 1) || e == 0 && i == 0 && t == 0 ? -1 : e == 0 && i == 0 && t != 0 ? yQ(t) : e == 0 && i != 0 && t == 0 ? yQ(i) + 22 : e != 0 && i == 0 && t == 0 ? yQ(e) + 44 : -1; + } + function zg(n, e) { + var t, i, r, c, s; + for (r = e.a & n.f, c = null, i = n.b[r]; ; i = i.b) { + if (i == e) { + c ? c.b = e.b : n.b[r] = e.b; + break; + } + c = i; + } + for (s = e.f & n.f, c = null, t = n.c[s]; ; t = t.d) { + if (t == e) { + c ? c.d = e.d : n.c[s] = e.d; + break; + } + c = t; + } + e.e ? e.e.c = e.c : n.a = e.c, e.c ? e.c.e = e.e : n.e = e.e, --n.i, ++n.g; + } + function KMe(n, e) { + var t; + e.d ? e.d.b = e.b : n.a = e.b, e.b ? e.b.d = e.d : n.e = e.d, !e.e && !e.c ? (t = u(as(u(Bp(n.b, e.a), 260)), 260), t.a = 0, ++n.c) : (t = u(as(u(ee(n.b, e.a), 260)), 260), --t.a, e.e ? e.e.c = e.c : t.b = u(as(e.c), 511), e.c ? e.c.e = e.e : t.c = u(as(e.e), 511)), --n.d; + } + function _Me(n) { + var e, t, i, r, c, s, f, h, l, a; + for (t = n.o, e = n.p, s = tt, r = Wi, f = tt, c = Wi, l = 0; l < t; ++l) + for (a = 0; a < e; ++a) + Kg(n, l, a) && (s = y.Math.min(s, l), r = y.Math.max(r, l), f = y.Math.min(f, a), c = y.Math.max(c, a)); + return h = r - s + 1, i = c - f + 1, new AIn(Y(s), Y(f), Y(h), Y(i)); + } + function pF(n, e) { + var t, i, r, c; + for (c = new xi(n, 0), t = (oe(c.b < c.d.gc()), u(c.d.Xb(c.c = c.b++), 148)); c.b < c.d.gc(); ) + i = (oe(c.b < c.d.gc()), u(c.d.Xb(c.c = c.b++), 148)), r = new zV(i.c, t.d, e), oe(c.b > 0), c.a.Xb(c.c = --c.b), Rb(c, r), oe(c.b < c.d.gc()), c.d.Xb(c.c = c.b++), r.a = !1, t = i; + } + function YHn(n) { + var e, t, i, r, c, s; + for (r = u(v(n, (W(), tI)), 12), s = new C(n.j); s.a < s.c.c.length; ) { + for (c = u(E(s), 12), i = new C(c.g); i.a < i.c.c.length; ) + return e = u(E(i), 18), Oi(e, r), c; + for (t = new C(c.e); t.a < t.c.c.length; ) + return e = u(E(t), 18), Zi(e, r), c; + } + return null; + } + function ZHn(n, e, t) { + var i, r, c, s, f, h; + for (h = u(xb(n.a, e), 17).a, t ? JZ(n.a, Y(h + 1), e) : JZ(n.a, Y(h - 1), e), s = new rh(), r = new ie(ce((t ? Qt(e) : ji(e)).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), t ? c = i.d.i : c = i.c.i, x(xb(n.a, c)) === x(xb(n.a, e)) && (f = s.a.zc(c, s), f == null); + return s; + } + function HMe(n, e, t) { + var i, r; + i = kc(t.q.getTime()), Cc(i, 0) < 0 ? (r = d1 - Ae(Bk(n1(i), d1)), r == d1 && (r = 0)) : r = Ae(Bk(i, d1)), e == 1 ? (r = y.Math.min((r + 50) / 100 | 0, 9), z1(n, 48 + r & ui)) : e == 2 ? (r = y.Math.min((r + 5) / 10 | 0, 99), Bh(n, r, 2)) : (Bh(n, r, 3), e > 3 && Bh(n, 0, e - 3)); + } + function qMe(n) { + var e, t, i, r; + return x(v(n, (cn(), Bw))) === x((jl(), M1)) ? !n.e && x(v(n, Cj)) !== x((Z4(), mj)) : (i = u(v(n, yH), 299), r = on(un(v(n, jH))) || x(v(n, U8)) === x((c5(), pj)), e = u(v(n, qfn), 17).a, t = n.a.c.length, !r && i != (Z4(), mj) && (e == 0 || e > t)); + } + function UMe(n) { + var e, t; + for (t = 0; t < n.c.length && !(GSn((Ln(t, n.c.length), u(n.c[t], 113))) > 0); t++) + ; + if (t > 0 && t < n.c.length - 1) + return t; + for (e = 0; e < n.c.length && !(GSn((Ln(e, n.c.length), u(n.c[e], 113))) > 0); e++) + ; + return e > 0 && t < n.c.length - 1 ? e : n.c.length / 2 | 0; + } + function nqn(n, e) { + var t, i; + if (e != n.Cb || n.Db >> 16 != 6 && e) { + if (mm(n, e)) + throw M(new Gn(w8 + bHn(n))); + i = null, n.Cb && (i = (t = n.Db >> 16, t >= 0 ? AZ(n, i) : n.Cb.Th(n, -1 - t, null, i))), e && (i = Wp(e, n, 6, i)), i = lV(n, e, i), i && i.oj(); + } else + n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 6, e, e)); + } + function AA(n, e) { + var t, i; + if (e != n.Cb || n.Db >> 16 != 3 && e) { + if (mm(n, e)) + throw M(new Gn(w8 + eGn(n))); + i = null, n.Cb && (i = (t = n.Db >> 16, t >= 0 ? OZ(n, i) : n.Cb.Th(n, -1 - t, null, i))), e && (i = Wp(e, n, 12, i)), i = aV(n, e, i), i && i.oj(); + } else + n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 3, e, e)); + } + function ren(n, e) { + var t, i; + if (e != n.Cb || n.Db >> 16 != 9 && e) { + if (mm(n, e)) + throw M(new Gn(w8 + Zqn(n))); + i = null, n.Cb && (i = (t = n.Db >> 16, t >= 0 ? PZ(n, i) : n.Cb.Th(n, -1 - t, null, i))), e && (i = Wp(e, n, 9, i)), i = dV(n, e, i), i && i.oj(); + } else + n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 9, e, e)); + } + function Tm(n) { + var e, t, i, r, c; + if (i = gs(n), c = n.j, c == null && i) + return n.Jk() ? null : i.ik(); + if (D(i, 156)) { + if (t = i.jk(), t && (r = t.wi(), r != n.i)) { + if (e = u(i, 156), e.nk()) + try { + n.g = r.ti(e, c); + } catch (s) { + if (s = It(s), D(s, 82)) + n.g = null; + else + throw M(s); + } + n.i = r; + } + return n.g; + } + return null; + } + function eqn(n) { + var e; + return e = new Z(), nn(e, new bp(new V(n.c, n.d), new V(n.c + n.b, n.d))), nn(e, new bp(new V(n.c, n.d), new V(n.c, n.d + n.a))), nn(e, new bp(new V(n.c + n.b, n.d + n.a), new V(n.c + n.b, n.d))), nn(e, new bp(new V(n.c + n.b, n.d + n.a), new V(n.c, n.d + n.a))), e; + } + function GMe(n) { + var e, t, i; + if (n == null) + return pu; + try { + return Jr(n); + } catch (r) { + if (r = It(r), D(r, 103)) + return e = r, i = Xa(wo(n)) + "@" + (t = (fl(), cZ(n) >>> 0), t.toString(16)), c9e(Uve(), (a4(), "Exception during lenientFormat for " + i), e), "<" + i + " threw " + Xa(e.Rm) + ">"; + throw M(r); + } + } + function zMe(n, e, t) { + var i, r, c; + for (c = e.a.ec().Kc(); c.Ob(); ) + r = u(c.Pb(), 74), i = u(ee(n.b, r), 272), !i && (At(Kh(r)) == At(ra(r)) ? LTe(n, r, t) : Kh(r) == At(ra(r)) ? ee(n.c, r) == null && ee(n.b, ra(r)) != null && LGn(n, r, t, !1) : ee(n.d, r) == null && ee(n.b, Kh(r)) != null && LGn(n, r, t, !0)); + } + function XMe(n, e) { + var t, i, r, c, s, f, h; + for (r = n.Kc(); r.Ob(); ) + for (i = u(r.Pb(), 10), f = new Ic(), ic(f, i), gi(f, (en(), Zn)), U(f, (W(), uI), (_n(), !0)), s = e.Kc(); s.Ob(); ) + c = u(s.Pb(), 10), h = new Ic(), ic(h, c), gi(h, Wn), U(h, uI, !0), t = new E0(), U(t, uI, !0), Zi(t, f), Oi(t, h); + } + function VMe(n, e, t, i) { + var r, c, s, f; + r = RBn(n, e, t), c = RBn(n, t, e), s = u(ee(n.c, e), 118), f = u(ee(n.c, t), 118), r < c ? new ed((af(), zw), s, f, c - r) : c < r ? new ed((af(), zw), f, s, r - c) : (r != 0 || !(!e.i || !t.i) && i[e.i.c][t.i.c]) && (new ed((af(), zw), s, f, 0), new ed(zw, f, s, 0)); + } + function tqn(n, e) { + var t, i, r, c, s, f, h; + for (r = 0, s = new C(e.a); s.a < s.c.c.length; ) + for (c = u(E(s), 10), r += c.o.b + c.d.a + c.d.d + n.e, i = new ie(ce(ji(c).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), t.c.i.k == (Vn(), Hc) && (h = t.c.i, f = u(v(h, (W(), st)), 10), r += f.o.b + f.d.a + f.d.d); + return r; + } + function x5() { + x5 = F, N2 = new b7("CANDIDATE_POSITION_LAST_PLACED_RIGHT", 0), D3 = new b7("CANDIDATE_POSITION_LAST_PLACED_BELOW", 1), d9 = new b7("CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT", 2), a9 = new b7("CANDIDATE_POSITION_WHOLE_DRAWING_BELOW", 3), _j = new b7("WHOLE_DRAWING", 4); + } + function WMe(n, e) { + if (D(e, 207)) + return v5e(n, u(e, 27)); + if (D(e, 193)) + return T5e(n, u(e, 123)); + if (D(e, 366)) + return gge(n, u(e, 135)); + if (D(e, 326)) + return LPe(n, u(e, 74)); + if (e) + return null; + throw M(new Gn($cn + ca(new Ku(A(T(ki, 1), Bn, 1, 5, [e]))))); + } + function JMe(n) { + var e, t, i, r, c, s, f; + for (c = new Ct(), r = new C(n.d.a); r.a < r.c.c.length; ) + i = u(E(r), 125), i.b.a.c.length == 0 && Kt(c, i, c.c.b, c.c); + if (c.b > 1) + for (e = h0((t = new za(), ++n.b, t), n.d), f = ge(c, 0); f.b != f.d.c; ) + s = u(be(f), 125), qs(Ls(Ds(Ns(Os(new hs(), 1), 0), e), s)); + } + function QMe(n, e, t) { + var i, r, c, s, f; + for (t.Ug("Breaking Point Removing", 1), n.a = u(v(e, (cn(), $l)), 223), c = new C(e.b); c.a < c.c.c.length; ) + for (r = u(E(c), 30), f = new C(T0(r.a)); f.a < f.c.c.length; ) + s = u(E(f), 10), c$n(s) && (i = u(v(s, (W(), ob)), 313), !i.d && zGn(n, i)); + t.Vg(); + } + function SA(n, e) { + var t, i; + if (e != n.Cb || n.Db >> 16 != 11 && e) { + if (mm(n, e)) + throw M(new Gn(w8 + Cen(n))); + i = null, n.Cb && (i = (t = n.Db >> 16, t >= 0 ? DZ(n, i) : n.Cb.Th(n, -1 - t, null, i))), e && (i = Wp(e, n, 10, i)), i = jV(n, e, i), i && i.oj(); + } else + n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 11, e, e)); + } + function YMe(n) { + var e, t, i, r; + for (i = new sd(new Ua(n.b).a); i.b; ) + t = L0(i), r = u(t.ld(), 12), e = u(t.md(), 10), U(e, (W(), st), r), U(r, Xu, e), U(r, yj, (_n(), !0)), gi(r, u(v(e, gc), 64)), v(e, gc), U(r.i, (cn(), Ut), (Di(), Kv)), u(v(Hi(r.i), qc), 21).Fc((mr(), yv)); + } + function ZMe(n, e, t) { + var i, r, c, s, f, h; + if (c = 0, s = 0, n.c) + for (h = new C(n.d.i.j); h.a < h.c.c.length; ) + f = u(E(h), 12), c += f.e.c.length; + else + c = 1; + if (n.d) + for (h = new C(n.c.i.j); h.a < h.c.c.length; ) + f = u(E(h), 12), s += f.g.c.length; + else + s = 1; + return r = wi(B7(s - c)), i = (t + e) / 2 + (t - e) * (0.4 * r), i; + } + function nTe(n) { + ow(); + var e, t; + if (n.Hc((en(), sc))) + throw M(new Gn("Port sides must not contain UNDEFINED")); + switch (n.gc()) { + case 1: + return gj; + case 2: + return e = n.Hc(Zn) && n.Hc(Wn), t = n.Hc(Xn) && n.Hc(ae), e || t ? XP : zP; + case 3: + return GP; + case 4: + return UP; + default: + return null; + } + } + function mF(n, e, t) { + return Vg(), W4(n, e) && W4(n, t) ? !1 : WF(new V(n.c, n.d), new V(n.c + n.b, n.d), e, t) || WF(new V(n.c + n.b, n.d), new V(n.c + n.b, n.d + n.a), e, t) || WF(new V(n.c + n.b, n.d + n.a), new V(n.c, n.d + n.a), e, t) || WF(new V(n.c, n.d + n.a), new V(n.c, n.d), e, t); + } + function cen(n, e) { + var t, i, r, c; + if (!n.dc()) { + for (t = 0, i = n.gc(); t < i; ++t) + if (c = Oe(n.Xb(t)), c == null ? e == null : An(c.substr(0, 3), "!##") ? e != null && (r = e.length, !An(c.substr(c.length - r, r), e) || c.length != e.length + 3) && !An(Sd, e) : An(c, IK) && !An(Sd, e) || An(c, e)) + return !0; + } + return !1; + } + function eTe(n, e, t, i) { + var r, c, s, f, h, l; + for (s = n.j.c.length, h = K(pNe, xtn, 314, s, 0, 1), f = 0; f < s; f++) + c = u(sn(n.j, f), 12), c.p = f, h[f] = aCe(THn(c), t, i); + for (TTe(n, h, t, e, i), l = new de(), r = 0; r < h.length; r++) + h[r] && Ve(l, u(sn(n.j, r), 12), h[r]); + l.f.c + l.i.c != 0 && (U(n, (W(), R8), l), Tje(n, h)); + } + function tTe(n, e) { + var t, i, r, c, s, f; + for (e.Ug("Partition postprocessing", 1), i = new C(n.b); i.a < i.c.c.length; ) + for (t = u(E(i), 30), c = new C(t.a); c.a < c.c.c.length; ) + for (r = u(E(c), 10), f = new C(r.j); f.a < f.c.c.length; ) + s = u(E(f), 12), on(un(v(s, (W(), uI)))) && q6(f); + e.Vg(); + } + function iTe(n, e, t) { + var i, r, c; + for (r = new C(n.a.b); r.a < r.c.c.length; ) + if (i = u(E(r), 60), c = Pg(i), c && c.k == (Vn(), Zt)) + switch (u(v(c, (W(), gc)), 64).g) { + case 4: + c.n.a = e.a; + break; + case 2: + c.n.a = t.a - (c.o.a + c.d.c); + break; + case 1: + c.n.b = e.b; + break; + case 3: + c.n.b = t.b - (c.o.b + c.d.a); + } + } + function rTe(n, e, t) { + var i, r, c; + for (t.Ug("Processor determine the height for each level", 1), n.a = e.b.b == 0 ? 1 : e.b.b, r = null, i = ge(e.b, 0); !r && i.b != i.d.c; ) + c = u(be(i), 40), on(un(v(c, (pt(), Ma)))) && (r = c); + r && GUn(n, Of(A(T(NI, 1), OS, 40, 0, [r])), t, u(v(e, (lc(), vb)), 88)), t.Vg(); + } + function cTe(n) { + var e, t, i, r, c, s; + for (i = (B1(), c = new Yv(), c), uy(i, n), t = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); t.e != t.i.gc(); ) + e = u(ue(t), 27), s = (r = new Yv(), r), SA(s, i), kg(s, e.g, e.f), X4(s, e.k), Ro(s, e.i, e.j), ve((!i.a && (i.a = new q(Ye, i, 10, 11)), i.a), s), uy(s, e); + return i; + } + function uTe(n, e, t) { + var i, r, c, s, f; + return r = u(z(e, (mA(), gan)), 17), !r && (r = Y(0)), c = u(z(t, gan), 17), !c && (c = Y(0)), r.a > c.a ? -1 : r.a < c.a ? 1 : n.a && (i = bt(e.j, t.j), i != 0 || (i = bt(e.i, t.i), i != 0)) ? i : (s = e.g * e.f, f = t.g * t.f, bt(s, f)); + } + function oTe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (++n.e, h = n.d == null ? 0 : n.d.length, e > h) { + for (a = n.d, n.d = K($dn, Ucn, 66, 2 * h + 4, 0, 1), c = 0; c < h; ++c) + if (l = a[c], l) + for (i = l.g, d = l.i, f = 0; f < d; ++f) + r = u(i[f], 136), s = bV(n, r.Bi()), t = n.d[s], !t && (t = n.d[s] = n.dk()), t.Fc(r); + return !0; + } else + return !1; + } + function sTe(n, e, t) { + var i, r, c, s, f, h; + if (r = t, c = r.Lk(), Sl(n.e, c)) { + if (c.Si()) { + for (i = u(n.g, 124), s = 0; s < n.i; ++s) + if (f = i[s], ct(f, r) && s != e) + throw M(new Gn(Vy)); + } + } else + for (h = cu(n.e.Dh(), c), i = u(n.g, 124), s = 0; s < n.i; ++s) + if (f = i[s], h.am(f.Lk())) + throw M(new Gn(Zy)); + v5(n, e, t); + } + function iqn(n, e) { + var t, i, r, c, s, f; + for (t = u(v(e, (W(), Nl)), 21), s = u(ot((YF(), gt), t), 21), f = u(ot(qe, t), 21), c = s.Kc(); c.Ob(); ) + if (i = u(c.Pb(), 21), !u(ot(n.b, i), 15).dc()) + return !1; + for (r = f.Kc(); r.Ob(); ) + if (i = u(r.Pb(), 21), !u(ot(n.b, i), 15).dc()) + return !1; + return !0; + } + function uen(n, e) { + var t, i, r, c, s, f, h, l, a; + if (n.a.c.length == 1) + return u_n(u(sn(n.a, 0), 172), e); + for (s = r5e(n), h = 0, l = n.d, c = s, a = n.d, f = (l - c) / 2 + c; c + 1 < l; ) { + for (h = 0, i = new C(n.a); i.a < i.c.c.length; ) + t = u(E(i), 172), h += (r = G5(t, f, !1), r.a); + h < e ? (a = f, l = f) : c = f, f = (l - c) / 2 + c; + } + return a; + } + function uy(n, e) { + var t, i, r, c, s; + if (!e) + return n; + if (D(e, 342)) + for (r = u(e, 342), c = (!n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), n.o), i = r.gh().c.Kc(); i.e != i.i.gc(); ) + t = u(i.Yj(), 44), s = t.md(), zk(c, u(t.ld(), 149), s); + else + !n.o && (n.o = new Ou((Mc(), il), T1, n, 0)), lxn(n.o, e.nf()); + return n; + } + function fTe(n) { + var e, t, i, r, c; + return isNaN(n) ? (R4(), dun) : n < -9223372036854776e3 ? (R4(), wQn) : n >= 9223372036854776e3 ? (R4(), lun) : (r = !1, n < 0 && (r = !0, n = -n), i = 0, n >= vd && (i = wi(n / vd), n -= i * vd), t = 0, n >= o3 && (t = wi(n / o3), n -= t * o3), e = wi(n), c = Zc(e, t, i), r && H$(c), c); + } + function hTe(n) { + var e, t, i, r, c; + if (c = new Z(), eu(n.b, new P9n(c)), n.b.c.length = 0, c.c.length != 0) { + for (e = (Ln(0, c.c.length), u(c.c[0], 82)), t = 1, i = c.c.length; t < i; ++t) + r = (Ln(t, c.c.length), u(c.c[t], 82)), r != e && xye(e, r); + if (D(e, 63)) + throw M(u(e, 63)); + if (D(e, 296)) + throw M(u(e, 296)); + } + } + function lTe(n, e) { + var t, i, r, c; + for (t = !e || !n.u.Hc((zu(), Fl)), c = 0, r = new C(n.e.Xf()); r.a < r.c.c.length; ) { + if (i = u(E(r), 852), i.ag() == (en(), sc)) + throw M(new Gn("Label and node size calculator can only be used with ports that have port sides assigned.")); + i.Qf(c++), Z6e(n, i, t); + } + } + function oen(n) { + var e, t, i, r, c; + for (t = new C(n.a.a); t.a < t.c.c.length; ) { + for (e = u(E(t), 316), e.j = null, c = e.a.a.ec().Kc(); c.Ob(); ) + i = u(c.Pb(), 60), ff(i.b), (!e.j || i.d.c < e.j.d.c) && (e.j = i); + for (r = e.a.a.ec().Kc(); r.Ob(); ) + i = u(r.Pb(), 60), i.b.a = i.d.c - e.j.d.c, i.b.b = i.d.d - e.j.d.d; + } + return n; + } + function PA(n) { + var e, t, i, r, c; + for (t = new C(n.a.a); t.a < t.c.c.length; ) { + for (e = u(E(t), 194), e.f = null, c = e.a.a.ec().Kc(); c.Ob(); ) + i = u(c.Pb(), 86), ff(i.e), (!e.f || i.g.c < e.f.g.c) && (e.f = i); + for (r = e.a.a.ec().Kc(); r.Ob(); ) + i = u(r.Pb(), 86), i.e.a = i.g.c - e.f.g.c, i.e.b = i.g.d - e.f.g.d; + } + return n; + } + function aTe(n) { + var e, t, i; + return t = u(n.a, 17).a, i = u(n.b, 17).a, e = y.Math.max(y.Math.abs(t), y.Math.abs(i)), t < e && i == -e ? new bi(Y(t + 1), Y(i)) : t == e && i < e ? new bi(Y(t), Y(i + 1)) : t >= -e && i == e ? new bi(Y(t - 1), Y(i)) : new bi(Y(t), Y(i - 1)); + } + function rqn() { + return tr(), A(T(jNe, 1), G, 81, 0, [Yon, Won, b2, N_, psn, IP, KP, Lw, wsn, usn, dsn, Dw, gsn, isn, msn, qon, NP, $_, SP, FP, ksn, xP, Uon, bsn, ysn, BP, vsn, PP, nsn, lsn, hsn, _P, Xon, AP, DP, zon, hv, ssn, rsn, asn, L8, Jon, Von, fsn, csn, LP, RP, Gon, $P, osn, OP, esn, Zon, bj, TP, tsn, Qon]); + } + function dTe(n, e, t) { + n.d = 0, n.b = 0, e.k == (Vn(), Hc) && t.k == Hc && u(v(e, (W(), st)), 10) == u(v(t, st), 10) && (s$(e).j == (en(), Xn) ? GHn(n, e, t) : GHn(n, t, e)), e.k == Hc && t.k == Mi ? s$(e).j == (en(), Xn) ? n.d = 1 : n.b = 1 : t.k == Hc && e.k == Mi && (s$(t).j == (en(), Xn) ? n.b = 1 : n.d = 1), Q9e(n, e, t); + } + function bTe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + return d = tnn(n), e = n.a, h = e != null, h && j4(d, "category", n.a), r = Z9(new qa(n.d)), s = !r, s && (l = new _a(), bf(d, "knownOptions", l), t = new hyn(l), qi(new qa(n.d), t)), c = Z9(n.g), f = !c, f && (a = new _a(), bf(d, "supportedFeatures", a), i = new lyn(a), qi(n.g, i)), d; + } + function wTe(n) { + var e, t, i, r, c, s, f, h, l; + for (i = !1, e = 336, t = 0, c = new XAn(n.length), f = n, h = 0, l = f.length; h < l; ++h) + s = f[h], i = i | (ta(s), !1), r = (X1(s), s.a), nn(c.a, Se(r)), e &= r.yd(), t = L6e(t, r.zd()); + return u(u(HPn(new Tn(null, nF(new In((m0(), YY(c.a)), 16), new L1(), e, t)), new t9n(n)), 687), 848); + } + function gTe(n, e) { + var t; + n.d && (e.c != n.e.c || uve(n.e.b, e.b)) && (nn(n.f, n.d), n.a = n.d.c + n.d.b, n.d = null, n.e = null), Ole(e.b) ? n.c = e : n.b = e, (e.b == (nm(), rb) && !e.a || e.b == Pw && e.a || e.b == d2 && e.a || e.b == Iw && !e.a) && n.c && n.b && (t = new Ho(n.a, n.c.d, e.c - n.a, n.b.d - n.c.d), n.d = t, n.e = e); + } + function F5(n) { + var e; + if (kjn.call(this), this.i = new Emn(), this.g = n, this.f = u(n.e && n.e(), 9).length, this.f == 0) + throw M(new Gn("There must be at least one phase in the phase enumeration.")); + this.c = (e = u(of(this.g), 9), new _o(e, u(xs(e, e.length), 9), 0)), this.a = new ii(), this.b = new de(); + } + function sen(n, e) { + var t, i; + if (e != n.Cb || n.Db >> 16 != 7 && e) { + if (mm(n, e)) + throw M(new Gn(w8 + l_n(n))); + i = null, n.Cb && (i = (t = n.Db >> 16, t >= 0 ? SZ(n, i) : n.Cb.Th(n, -1 - t, null, i))), e && (i = u(e, 54).Rh(n, 1, oE, i)), i = wW(n, e, i), i && i.oj(); + } else + n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 7, e, e)); + } + function cqn(n, e) { + var t, i; + if (e != n.Cb || n.Db >> 16 != 3 && e) { + if (mm(n, e)) + throw M(new Gn(w8 + fBn(n))); + i = null, n.Cb && (i = (t = n.Db >> 16, t >= 0 ? IZ(n, i) : n.Cb.Th(n, -1 - t, null, i))), e && (i = u(e, 54).Rh(n, 0, fE, i)), i = gW(n, e, i), i && i.oj(); + } else + n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 3, e, e)); + } + function vF(n, e) { + Am(); + var t, i, r, c, s, f, h, l, a; + return e.d > n.d && (f = n, n = e, e = f), e.d < 63 ? iAe(n, e) : (s = (n.d & -2) << 4, l = $J(n, s), a = $J(e, s), i = RF(n, Fp(l, s)), r = RF(e, Fp(a, s)), h = vF(l, a), t = vF(i, r), c = vF(RF(l, i), RF(r, a)), c = zF(zF(c, h), t), c = Fp(c, s), h = Fp(h, s << 1), zF(zF(h, c), t)); + } + function a1() { + a1 = F, xH = new dg(fVn, 0), Phn = new dg("LONGEST_PATH", 1), Ihn = new dg("LONGEST_PATH_SOURCE", 2), $H = new dg("COFFMAN_GRAHAM", 3), Shn = new dg(sR, 4), Ohn = new dg("STRETCH_WIDTH", 5), CI = new dg("MIN_WIDTH", 6), Pv = new dg("BF_MODEL_ORDER", 7), Iv = new dg("DF_MODEL_ORDER", 8); + } + function pTe(n, e, t) { + var i, r, c, s, f; + for (s = g5(n, t), f = K(Qh, b1, 10, e.length, 0, 1), i = 0, c = s.Kc(); c.Ob(); ) + r = u(c.Pb(), 12), on(un(v(r, (W(), yj)))) && (f[i++] = u(v(r, Xu), 10)); + if (i < e.length) + throw M(new Or("Expected " + e.length + " hierarchical ports, but found only " + i + ".")); + return f; + } + function mTe(n, e) { + var t, i, r, c, s, f; + if (!n.tb) { + for (c = (!n.rb && (n.rb = new Hb(n, Cf, n)), n.rb), f = new ap(c.i), r = new ne(c); r.e != r.i.gc(); ) + i = u(ue(r), 142), s = i.xe(), t = u(s == null ? Wc(f.f, null, i) : $0(f.i, s, i), 142), t && (s == null ? Wc(f.f, null, t) : $0(f.i, s, t)); + n.tb = f; + } + return u($c(n.tb, e), 142); + } + function oy(n, e) { + var t, i, r, c, s; + if ((n.i == null && bh(n), n.i).length, !n.p) { + for (s = new ap((3 * n.g.i / 2 | 0) + 1), r = new yp(n.g); r.e != r.i.gc(); ) + i = u(Mx(r), 179), c = i.xe(), t = u(c == null ? Wc(s.f, null, i) : $0(s.i, c, i), 179), t && (c == null ? Wc(s.f, null, t) : $0(s.i, c, t)); + n.p = s; + } + return u($c(n.p, e), 179); + } + function fen(n, e, t, i, r) { + var c, s, f, h, l; + for (z8e(i + IM(t, t.ie()), r), eIn(e, a8e(t)), c = t.f, c && fen(n, e, c, "Caused by: ", !1), f = (t.k == null && (t.k = K(zK, J, 82, 0, 0, 1)), t.k), h = 0, l = f.length; h < l; ++h) + s = f[h], fen(n, e, s, "Suppressed: ", !1); + console.groupEnd != null && console.groupEnd.call(console); + } + function sy(n, e, t, i) { + var r, c, s, f, h; + for (h = e.e, f = h.length, s = e.q.ug(h, t ? 0 : f - 1, t), r = h[t ? 0 : f - 1], s = s | zqn(n, r, t, i), c = t ? 1 : f - 2; t ? c < f : c >= 0; c += t ? 1 : -1) + s = s | e.c.lg(h, c, t, i && !on(un(v(e.j, (W(), ka)))) && !on(un(v(e.j, (W(), j2))))), s = s | e.q.ug(h, c, t), s = s | zqn(n, h[c], t, i); + return fi(n.c, e), s; + } + function IA(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (a = MDn(n.j), d = 0, g = a.length; d < g; ++d) { + if (l = a[d], t == (pr(), Vu) || t == Q8) + for (h = hh(l.g), r = h, c = 0, s = r.length; c < s; ++c) + i = r[c], Mje(e, i) && U0(i, !0); + if (t == Qc || t == Q8) + for (f = hh(l.e), r = f, c = 0, s = r.length; c < s; ++c) + i = r[c], Cje(e, i) && U0(i, !0); + } + } + function vTe(n) { + var e, t; + switch (e = null, t = null, Fke(n).g) { + case 1: + e = (en(), Zn), t = Wn; + break; + case 2: + e = (en(), ae), t = Xn; + break; + case 3: + e = (en(), Wn), t = Zn; + break; + case 4: + e = (en(), Xn), t = ae; + } + pG(n, u(ho(Ap(u(ot(n.k, e), 15).Oc(), w2)), 113)), gG(n, u(ho(_b(u(ot(n.k, t), 15).Oc(), w2)), 113)); + } + function kTe(n) { + var e, t, i, r, c, s; + if (r = u(sn(n.j, 0), 12), r.e.c.length + r.g.c.length == 0) + n.n.a = 0; + else { + for (s = 0, i = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [new e4(r), new ip(r)]))); pe(i); ) + t = u(fe(i), 12), s += t.i.n.a + t.n.a + t.a.a; + e = u(v(n, (cn(), bb)), 8), c = e ? e.a : 0, n.n.a = s / (r.e.c.length + r.g.c.length) - c; + } + } + function uqn(n, e) { + var t, i, r; + for (i = new C(e.a); i.a < i.c.c.length; ) + t = u(E(i), 225), YL(u(t.b, 68), mi(Ki(u(e.b, 68).c), u(e.b, 68).a)), r = MUn(u(e.b, 68).b, u(t.b, 68).b), r > 1 && (n.a = !0), Jbe(u(t.b, 68), it(Ki(u(e.b, 68).c), ch(mi(Ki(u(t.b, 68).a), u(e.b, 68).a), r))), DOn(n, e), uqn(n, t); + } + function oqn(n) { + var e, t, i, r, c, s, f; + for (c = new C(n.a.a); c.a < c.c.c.length; ) + i = u(E(c), 194), i.e = 0, i.d.a.$b(); + for (r = new C(n.a.a); r.a < r.c.c.length; ) + for (i = u(E(r), 194), t = i.a.a.ec().Kc(); t.Ob(); ) + for (e = u(t.Pb(), 86), f = e.f.Kc(); f.Ob(); ) + s = u(f.Pb(), 86), s.d != i && (fi(i.d, s), ++s.d.e); + } + function yTe(n) { + var e, t, i, r, c, s, f, h; + for (h = n.j.c.length, t = 0, e = h, r = 2 * h, f = new C(n.j); f.a < f.c.c.length; ) + switch (s = u(E(f), 12), s.j.g) { + case 2: + case 4: + s.p = -1; + break; + case 1: + case 3: + i = s.e.c.length, c = s.g.c.length, i > 0 && c > 0 ? s.p = e++ : i > 0 ? s.p = t++ : c > 0 ? s.p = r++ : s.p = t++; + } + Dn(), Yt(n.j, new Hgn()); + } + function jTe(n) { + var e, t; + t = null, e = u(sn(n.g, 0), 18); + do { + if (t = e.d.i, kt(t, (W(), Es))) + return u(v(t, Es), 12).i; + if (t.k != (Vn(), Vt) && pe(new ie(ce(Qt(t).a.Kc(), new En())))) + e = u(fe(new ie(ce(Qt(t).a.Kc(), new En()))), 18); + else if (t.k != Vt) + return null; + } while (t && t.k != (Vn(), Vt)); + return t; + } + function ETe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (f = e.j, s = e.g, h = u(sn(f, f.c.length - 1), 113), a = (Ln(0, f.c.length), u(f.c[0], 113)), l = Kx(n, s, h, a), c = 1; c < f.c.length; c++) + t = (Ln(c - 1, f.c.length), u(f.c[c - 1], 113)), r = (Ln(c, f.c.length), u(f.c[c], 113)), i = Kx(n, s, t, r), i > l && (h = t, a = r, l = i); + e.a = a, e.c = h; + } + function CTe(n, e, t) { + var i, r, c, s, f, h, l; + for (l = new Ul(new V7n(n)), s = A(T(BZn, 1), LXn, 12, 0, [e, t]), f = 0, h = s.length; f < h; ++f) + for (c = s[f], l.a.zc(c, (_n(), ga)) == null, r = new Df(c.b); tc(r.a) || tc(r.b); ) + i = u(tc(r.a) ? E(r.a) : E(r.b), 18), i.c == i.d || R7(l, c == i.c ? i.d : i.c); + return Se(l), new _u(l); + } + function qs(n) { + if (!n.a.d || !n.a.e) + throw M(new Or((ll(zQn), zQn.k + " must have a source and target " + (ll(ron), ron.k) + " specified."))); + if (n.a.d == n.a.e) + throw M(new Or("Network simplex does not support self-loops: " + n.a + " " + n.a.d + " " + n.a.e)); + return RC(n.a.d.g, n.a), RC(n.a.e.b, n.a), n.a; + } + function MTe(n, e) { + var t, i, r, c, s, f, h; + for (e.Ug("Constraints Postprocessor", 1), s = 0, c = new C(n.b); c.a < c.c.c.length; ) { + for (r = u(E(c), 30), h = 0, f = !1, i = new C(r.a); i.a < i.c.c.length; ) + t = u(E(i), 10), t.k == (Vn(), Vt) && (f = !0, U(t, (cn(), gI), Y(s)), U(t, aI, Y(h)), ++h); + f && ++s; + } + e.Vg(); + } + function sqn(n, e, t) { + var i, r, c, s, f, h; + if (i = 0, e.b != 0 && t.b != 0) { + c = ge(e, 0), s = ge(t, 0), f = $(R(be(c))), h = $(R(be(s))), r = !0; + do { + if (f > h - n.b && f < h + n.b) + return -1; + f > h - n.a && f < h + n.a && ++i, f <= h && c.b != c.d.c ? f = $(R(be(c))) : h <= f && s.b != s.d.c ? h = $(R(be(s))) : r = !1; + } while (r); + } + return i; + } + function fqn(n, e) { + var t, i; + return H7(n.a), hf(n.a, (yT(), RI), RI), hf(n.a, L2, L2), i = new ii(), Ke(i, L2, (wA(), pq)), x(z(e, (oa(), yq))) !== x((Pk(), KI)) && Ke(i, L2, bq), on(un(z(e, Zln))) && Ke(i, L2, mq), Ke(i, L2, wq), on(un(z(e, e1n))) && Iu(i, L2, gq), TX(n.a, i), t = gy(n.a, e), t; + } + function TTe(n, e, t, i, r) { + var c, s, f, h; + for (h = (c = u(of(lr), 9), new _o(c, u(xs(c, c.length), 9), 0)), f = new C(n.j); f.a < f.c.c.length; ) + s = u(E(f), 12), e[s.p] && (YDe(s, e[s.p], i), _s(h, s.j)); + r ? (Wx(n, e, (en(), Zn), 2 * t, i), Wx(n, e, Wn, 2 * t, i)) : (Wx(n, e, (en(), Xn), 2 * t, i), Wx(n, e, ae, 2 * t, i)); + } + function ATe(n) { + var e, t; + for (t = new ie(ce(Qt(n).a.Kc(), new En())); pe(t); ) + if (e = u(fe(t), 18), e.d.i.k != (Vn(), Sc)) + throw M(new _l(oR + qk(n) + "' has its layer constraint set to LAST, but has at least one outgoing edge that does not go to a LAST_SEPARATE node. That must not happen.")); + } + function STe(n, e, t) { + var i, r, c, s, f; + for (t.Ug("Longest path layering", 1), n.a = e, f = n.a.a, n.b = K(ye, _e, 28, f.c.length, 15, 1), i = 0, s = new C(f); s.a < s.c.c.length; ) + r = u(E(s), 10), r.p = i, n.b[i] = -1, ++i; + for (c = new C(f); c.a < c.c.c.length; ) + r = u(E(c), 10), _Hn(n, r); + f.c.length = 0, n.a = null, n.b = null, t.Vg(); + } + function PTe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g; + for (h = 0, a = new C(n.a); a.a < a.c.c.length; ) { + for (l = u(E(a), 10), f = 0, c = new ie(ce(ji(l).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), d = If(r.c).b, g = If(r.d).b, f = y.Math.max(f, y.Math.abs(g - d)); + h = y.Math.max(h, f); + } + return s = i * y.Math.min(1, e / t) * h, s; + } + function ITe(n, e) { + var t, i, r, c, s; + for (s = u(v(e, (lc(), Lln)), 433), c = ge(e.b, 0); c.b != c.d.c; ) + if (r = u(be(c), 40), n.b[r.g] == 0) { + switch (s.g) { + case 0: + TRn(n, r); + break; + case 1: + RCe(n, r); + } + n.b[r.g] = 2; + } + for (i = ge(n.a, 0); i.b != i.d.c; ) + t = u(be(i), 65), iw(t.b.d, t, !0), iw(t.c.b, t, !0); + U(e, (pt(), jln), n.a); + } + function hen(n) { + var e; + return e = new i6(), n & 256 && (e.a += "F"), n & 128 && (e.a += "H"), n & 512 && (e.a += "X"), n & 2 && (e.a += "i"), n & 8 && (e.a += "m"), n & 4 && (e.a += "s"), n & 32 && (e.a += "u"), n & 64 && (e.a += "w"), n & 16 && (e.a += "x"), n & Gs && (e.a += ","), bz(e.a); + } + function OTe(n, e) { + var t, i, r, c, s, f; + e.Ug(PVn, 1), r = u(z(n, (Rf(), h9)), 107), c = (!n.a && (n.a = new q(Ye, n, 10, 11)), n.a), s = F7e(c), f = y.Math.max(s.a, $(R(z(n, (_h(), f9)))) - (r.b + r.c)), i = y.Math.max(s.b, $(R(z(n, UI))) - (r.d + r.a)), t = i - s.b, ht(n, s9, t), ht(n, O3, f), ht(n, Nv, i + t), e.Vg(); + } + function cu(n, e) { + br(); + var t, i, r, c; + return e ? e == (at(), mse) || (e == use || e == zd || e == cse) && n != s0n ? new ctn(n, e) : (i = u(e, 692), t = i.$k(), t || (P4(Lr((Lu(), zi), e)), t = i.$k()), c = (!t.i && (t.i = new de()), t.i), r = u(Kr(gr(c.f, n)), 2041), !r && Ve(c, n, r = new ctn(n, e)), r) : tse; + } + function DTe(n, e) { + var t, i; + if (i = R7(n.b, e.b), !i) + throw M(new Or("Invalid hitboxes for scanline constraint calculation.")); + (eFn(e.b, u(zhe(n.b, e.b), 60)) || eFn(e.b, u(Ghe(n.b, e.b), 60))) && (fl(), String.fromCharCode(10)), n.a[e.b.f] = u(ID(n.b, e.b), 60), t = u(PD(n.b, e.b), 60), t && (n.a[t.f] = e.b); + } + function LTe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (c = Xg(e, !1, !1), l = Qk(c), d = $(R(z(e, (C5(), g_)))), r = vzn(l, d + n.a), a = new bF(r), Ur(a, e), Ve(n.b, e, a), Kn(t.c, a), h = (!e.n && (e.n = new q(Sr, e, 1, 7)), e.n), f = new ne(h); f.e != f.i.gc(); ) + s = u(ue(f), 135), i = fy(n, s, !0, 0, 0), Kn(t.c, i); + return a; + } + function NTe(n, e) { + var t, i, r, c, s, f, h; + for (r = new Z(), t = 0; t <= n.j; t++) + i = new Nc(e), i.p = n.j - t, Kn(r.c, i); + for (f = new C(n.p); f.a < f.c.c.length; ) + s = u(E(f), 10), $i(s, u(sn(r, n.j - n.g[s.p]), 30)); + for (c = new C(r); c.a < c.c.c.length; ) + h = u(E(c), 30), h.a.c.length == 0 && q6(c); + e.b.c.length = 0, hi(e.b, r); + } + function $Te(n, e) { + var t, i, r, c, s, f, h, l, a; + for (h = u(v(n, (W(), st)), 12), l = cc(A(T(Ei, 1), J, 8, 0, [h.i.n, h.n, h.a])).a, a = n.i.n.b, t = hh(n.e), r = t, c = 0, s = r.length; c < s; ++c) + i = r[c], Oi(i, h), ir(i.a, new V(l, a)), e && (f = u(v(i, (cn(), Fr)), 75), f || (f = new Tu(), U(i, Fr, f)), Fe(f, new V(l, a))); + } + function xTe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (r = u(v(n, (W(), st)), 12), l = cc(A(T(Ei, 1), J, 8, 0, [r.i.n, r.n, r.a])).a, a = n.i.n.b, t = hh(n.g), s = t, f = 0, h = s.length; f < h; ++f) + c = s[f], Zi(c, r), gg(c.a, new V(l, a)), e && (i = u(v(c, (cn(), Fr)), 75), i || (i = new Tu(), U(c, Fr, i)), Fe(i, new V(l, a))); + } + function FTe(n) { + var e, t, i, r, c, s, f, h, l; + if (i = n.b, c = i.e, s = Ep(u(v(i, (cn(), Ut)), 101)), t = !!c && u(v(c, (W(), qc)), 21).Hc((mr(), cs)), !(s || t)) + for (l = (f = new ol(n.e).a.vc().Kc(), new Sb(f)); l.a.Ob(); ) + h = (e = u(l.a.Pb(), 44), u(e.md(), 113)), h.a && (r = h.d, ic(r, null), h.c = !0, n.a = !0); + } + function BTe(n, e) { + var t, i, r, c; + for (e.Ug("Semi-Interactive Crossing Minimization Processor", 1), t = !1, r = new C(n.b); r.a < r.c.c.length; ) + i = u(E(r), 30), c = Lk(fT(ut(ut(new Tn(null, new In(i.a, 16)), new C2n()), new M2n()), new T2n()), new A2n()), t = t | c.a != null; + t && U(n, (W(), rfn), (_n(), !0)), e.Vg(); + } + function RTe(n, e) { + var t, i, r, c, s, f; + for (n.b = new Z(), n.d = u(v(e, (W(), S3)), 234), n.e = jpe(n.d), c = new Ct(), r = Of(A(T($Zn, 1), OXn, 36, 0, [e])), s = 0; s < r.c.length; ) + i = (Ln(s, r.c.length), u(r.c[s], 36)), i.p = s++, t = new CGn(i, n.a, n.b), hi(r, t.b), nn(n.b, t), t.s && (f = ge(c, 0), _7(f, t)); + return n.c = new ni(), c; + } + function KTe(n, e) { + var t, i, r, c, s, f; + for (s = u(u(ot(n.r, e), 21), 87).Kc(); s.Ob(); ) + c = u(s.Pb(), 117), t = c.c ? tW(c.c) : 0, t > 0 ? c.a ? (f = c.b.Mf().a, t > f && (r = (t - f) / 2, c.d.b = r, c.d.c = r)) : c.d.c = n.s + t : K6(n.u) && (i = inn(c.b), i.c < 0 && (c.d.b = -i.c), i.c + i.b > c.b.Mf().a && (c.d.c = i.c + i.b - c.b.Mf().a)); + } + function _Te(n, e) { + var t, i, r, c, s; + s = new Z(), t = e; + do + c = u(ee(n.b, t), 131), c.B = t.c, c.D = t.d, Kn(s.c, c), t = u(ee(n.k, t), 18); + while (t); + return i = (Ln(0, s.c.length), u(s.c[0], 131)), i.j = !0, i.A = u(i.d.a.ec().Kc().Pb(), 18).c.i, r = u(sn(s, s.c.length - 1), 131), r.q = !0, r.C = u(r.d.a.ec().Kc().Pb(), 18).d.i, s; + } + function HTe(n) { + var e, t; + if (e = u(n.a, 17).a, t = u(n.b, 17).a, e >= 0) { + if (e == t) + return new bi(Y(-e - 1), Y(-e - 1)); + if (e == -t) + return new bi(Y(-e), Y(t + 1)); + } + return y.Math.abs(e) > y.Math.abs(t) ? e < 0 ? new bi(Y(-e), Y(t)) : new bi(Y(-e), Y(t + 1)) : new bi(Y(e + 1), Y(t)); + } + function qTe(n) { + var e, t; + t = u(v(n, (cn(), su)), 171), e = u(v(n, (W(), Od)), 311), t == (Yo(), ya) ? (U(n, su, Ej), U(n, Od, (vl(), k2))) : t == xw ? (U(n, su, Ej), U(n, Od, (vl(), E3))) : e == (vl(), k2) ? (U(n, su, ya), U(n, Od, vj)) : e == E3 && (U(n, su, xw), U(n, Od, vj)); + } + function OA() { + OA = F, Dj = new S3n(), Qie = Ke(new ii(), (Vi(), Dc), (tr(), SP)), nre = Iu(Ke(new ii(), Dc, xP), zr, $P), ere = ah(ah(h6(Iu(Ke(new ii(), Vs, KP), zr, RP), _c), BP), _P), Yie = Iu(Ke(Ke(Ke(new ii(), Jh, IP), _c, DP), _c, hv), zr, OP), Zie = Iu(Ke(Ke(new ii(), _c, hv), _c, AP), zr, TP); + } + function B5() { + B5 = F, rre = Ke(Iu(new ii(), (Vi(), zr), (tr(), esn)), Dc, SP), sre = ah(ah(h6(Iu(Ke(new ii(), Vs, KP), zr, RP), _c), BP), _P), cre = Iu(Ke(Ke(Ke(new ii(), Jh, IP), _c, DP), _c, hv), zr, OP), ore = Ke(Ke(new ii(), Dc, xP), zr, $P), ure = Iu(Ke(Ke(new ii(), _c, hv), _c, AP), zr, TP); + } + function UTe(n, e, t, i, r) { + var c, s; + (!fr(e) && e.c.i.c == e.d.i.c || !hxn(cc(A(T(Ei, 1), J, 8, 0, [r.i.n, r.n, r.a])), t)) && !fr(e) && (e.c == r ? g4(e.a, 0, new rr(t)) : Fe(e.a, new rr(t)), i && !sf(n.a, t) && (s = u(v(e, (cn(), Fr)), 75), s || (s = new Tu(), U(e, Fr, s)), c = new rr(t), Kt(s, c, s.c.b, s.c), fi(n.a, c))); + } + function hqn(n, e) { + var t, i, r, c; + for (c = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), t = c & n.b.length - 1, r = null, i = n.b[t]; i; r = i, i = i.a) + if (i.d == c && sh(i.i, e)) + return r ? r.a = i.a : n.b[t] = i.a, _jn(u(as(i.c), 604), u(as(i.f), 604)), V9(u(as(i.b), 227), u(as(i.e), 227)), --n.f, ++n.e, !0; + return !1; + } + function GTe(n) { + var e, t; + for (t = new ie(ce(ji(n).a.Kc(), new En())); pe(t); ) + if (e = u(fe(t), 18), e.c.i.k != (Vn(), Sc)) + throw M(new _l(oR + qk(n) + "' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen.")); + } + function zTe(n, e, t) { + var i, r, c, s, f, h, l; + if (r = bBn(n.Db & 254), r == 0) + n.Eb = t; + else { + if (r == 1) + f = K(ki, Bn, 1, 2, 5, 1), c = Rx(n, e), c == 0 ? (f[0] = t, f[1] = n.Eb) : (f[0] = n.Eb, f[1] = t); + else + for (f = K(ki, Bn, 1, r + 1, 5, 1), s = cd(n.Eb), i = 2, h = 0, l = 0; i <= 128; i <<= 1) + i == e ? f[l++] = t : n.Db & i && (f[l++] = s[h++]); + n.Eb = f; + } + n.Db |= e; + } + function lqn(n, e, t) { + var i, r, c, s; + for (this.b = new Z(), r = 0, i = 0, s = new C(n); s.a < s.c.c.length; ) + c = u(E(s), 176), t && ZPe(c), nn(this.b, c), r += c.o, i += c.p; + this.b.c.length > 0 && (c = u(sn(this.b, 0), 176), r += c.o, i += c.p), r *= 2, i *= 2, e > 1 ? r = wi(y.Math.ceil(r * e)) : i = wi(y.Math.ceil(i / e)), this.a = new WY(r, i); + } + function aqn(n, e, t, i, r, c) { + var s, f, h, l, a, d, g, p, m, k, j, S; + for (a = i, e.j && e.o ? (p = u(ee(n.f, e.A), 60), k = p.d.c + p.d.b, --a) : k = e.a.c + e.a.b, d = r, t.q && t.o ? (p = u(ee(n.f, t.C), 60), l = p.d.c, ++d) : l = t.a.c, j = l - k, h = y.Math.max(2, d - a), f = j / h, m = k + f, g = a; g < d; ++g) + s = u(c.Xb(g), 131), S = s.a.b, s.a.c = m - S / 2, m += f; + } + function dqn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + r = e ? new Rpn() : new Kpn(), c = !1; + do + for (c = !1, l = e ? Qo(n.b) : n.b, h = l.Kc(); h.Ob(); ) + for (f = u(h.Pb(), 30), g = T0(f.a), e || Qo(g), d = new C(g); d.a < d.c.c.length; ) + a = u(E(d), 10), r.Mb(a) && (i = a, t = u(v(a, (W(), ob)), 313), s = e ? t.b : t.k, c = Rqn(i, s, e, !1)); + while (c); + } + function len(n, e, t, i, r, c) { + var s, f, h, l, a, d; + for (l = t.c.length, c && (n.c = K(ye, _e, 28, e.length, 15, 1)), s = r ? 0 : e.length - 1; r ? s < e.length : s >= 0; s += r ? 1 : -1) { + for (f = e[s], h = i == (en(), Zn) ? r ? uc(f, i) : Qo(uc(f, i)) : r ? Qo(uc(f, i)) : uc(f, i), c && (n.c[f.p] = h.gc()), d = h.Kc(); d.Ob(); ) + a = u(d.Pb(), 12), n.d[a.p] = l++; + hi(t, h); + } + } + function bqn(n, e, t) { + var i, r, c, s, f, h, l, a; + for (c = $(R(n.b.Kc().Pb())), l = $(R(qve(e.b))), i = ch(Ki(n.a), l - t), r = ch(Ki(e.a), t - c), a = it(i, r), ch(a, 1 / (l - c)), this.a = a, this.b = new Z(), f = !0, s = n.b.Kc(), s.Pb(); s.Ob(); ) + h = $(R(s.Pb())), f && h - t > _R && (this.b.Fc(t), f = !1), this.b.Fc(h); + f && this.b.Fc(t); + } + function XTe(n) { + var e, t, i, r; + if (lSe(n, n.n), n.d.c.length > 0) { + for (e6(n.c); znn(n, u(E(new C(n.e.a)), 125)) < n.e.a.c.length; ) { + for (e = N7e(n), r = e.e.e - e.d.e - e.a, e.e.j && (r = -r), i = new C(n.e.a); i.a < i.c.c.length; ) + t = u(E(i), 125), t.j && (t.e += r); + e6(n.c); + } + e6(n.c), Dnn(n, u(E(new C(n.e.a)), 125)), mGn(n); + } + } + function VTe(n, e) { + qp(); + var t, i; + if (t = WN(z4(), e.Pg()), t) { + if (i = t.j, D(n, 207)) + return y2e(u(n, 27)) ? Su(i, (pf(), pi)) || Su(i, xn) : Su(i, (pf(), pi)); + if (D(n, 326)) + return Su(i, (pf(), Ph)); + if (D(n, 193)) + return Su(i, (pf(), Kd)); + if (D(n, 366)) + return Su(i, (pf(), E1)); + } + return !0; + } + function WTe(n, e, t) { + var i, r, c, s, f, h; + if (r = t, c = r.Lk(), Sl(n.e, c)) { + if (c.Si()) { + for (i = u(n.g, 124), s = 0; s < n.i; ++s) + if (f = i[s], ct(f, r) && s != e) + throw M(new Gn(Vy)); + } + } else + for (h = cu(n.e.Dh(), c), i = u(n.g, 124), s = 0; s < n.i; ++s) + if (f = i[s], h.am(f.Lk()) && s != e) + throw M(new Gn(Zy)); + return u(Rg(n, e, t), 76); + } + function wqn(n, e) { + if (e instanceof Object) + try { + if (e.__java$exception = n, navigator.userAgent.toLowerCase().indexOf("msie") != -1 && $doc.documentMode < 9) + return; + var t = n; + Object.defineProperties(e, { cause: { get: function() { + var i = t.he(); + return i && i.fe(); + } }, suppressed: { get: function() { + return t.ge(); + } } }); + } catch (i) { + } + } + function gqn(n, e) { + var t, i, r, c, s; + if (i = e >> 5, e &= 31, i >= n.d) + return n.e < 0 ? (dh(), kQn) : (dh(), S8); + if (c = n.d - i, r = K(ye, _e, 28, c + 1, 15, 1), Bje(r, c, n.a, i, e), n.e < 0) { + for (t = 0; t < i && n.a[t] == 0; t++) + ; + if (t < i || e > 0 && n.a[t] << 32 - e) { + for (t = 0; t < c && r[t] == -1; t++) + r[t] = 0; + t == c && ++c, ++r[t]; + } + } + return s = new Ya(n.e, c, r), J6(s), s; + } + function pqn(n) { + var e, t, i, r; + return r = Sf(n), t = new x9n(r), i = new F9n(r), e = new Z(), hi(e, (!n.d && (n.d = new Nn(Wt, n, 8, 5)), n.d)), hi(e, (!n.e && (n.e = new Nn(Wt, n, 7, 4)), n.e)), u(Wr(_r(ut(new Tn(null, new In(e, 16)), t), i), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [(Gu(), Aw), Yr]))), 21); + } + function JTe(n, e) { + var t; + switch (t = u(v(n, (cn(), bI)), 283), e.Ug("Label side selection (" + t + ")", 1), t.g) { + case 0: + SHn(n, (To(), nl)); + break; + case 1: + SHn(n, (To(), Aa)); + break; + case 2: + XUn(n, (To(), nl)); + break; + case 3: + XUn(n, (To(), Aa)); + break; + case 4: + Tqn(n, (To(), nl)); + break; + case 5: + Tqn(n, (To(), Aa)); + } + e.Vg(); + } + function Sl(n, e) { + br(); + var t, i, r; + return e.Jk() ? !0 : e.Ik() == -2 ? e == (n3(), _3) || e == K3 || e == SU || e == PU ? !0 : (r = n.Dh(), Ot(r, e) >= 0 ? !1 : (t = Qg((Lu(), zi), r, e), t ? (i = t.Ik(), (i > 1 || i == -1) && y0(Lr(zi, t)) != 3) : !0)) : !1; + } + function QTe(n, e, t, i) { + var r, c, s, f, h; + return f = Gr(u(L((!e.b && (e.b = new Nn(he, e, 4, 7)), e.b), 0), 84)), h = Gr(u(L((!e.c && (e.c = new Nn(he, e, 5, 8)), e.c), 0), 84)), At(f) == At(h) || Yb(h, f) ? null : (s = V7(e), s == t ? i : (c = u(ee(n.a, s), 10), c && (r = c.e, r) ? r : null)); + } + function YTe(n, e, t) { + var i, r, c, s, f; + for (t.Ug("Longest path to source layering", 1), n.a = e, f = n.a.a, n.b = K(ye, _e, 28, f.c.length, 15, 1), i = 0, s = new C(f); s.a < s.c.c.length; ) + r = u(E(s), 10), r.p = i, n.b[i] = -1, ++i; + for (c = new C(f); c.a < c.c.c.length; ) + r = u(E(c), 10), HHn(n, r); + f.c.length = 0, n.a = null, n.b = null, t.Vg(); + } + function aen(n, e, t) { + var i, r, c, s, f, h; + if (i = Ihe(t, n.length), s = n[i], c = Vjn(t, s.length), s[c].k == (Vn(), Zt)) + for (h = e.j, r = 0; r < h.c.length; r++) + f = (Ln(r, h.c.length), u(h.c[r], 12)), (t ? f.j == (en(), Zn) : f.j == (en(), Wn)) && on(un(v(f, (W(), yj)))) && (Go(h, r, u(v(s[c], (W(), st)), 12)), c += t ? 1 : -1); + } + function ZTe(n, e) { + var t, i, r, c, s, f, h, l; + e.Ug("Greedy Width Approximator", 1), t = $(R(z(n, (Rf(), zI)))), h = u(z(n, h9), 107), c = u(z(n, M1n), 394), s = on(un(z(n, C1n))), f = $(R(z(n, l9))), l = (!n.a && (n.a = new q(Ye, n, 10, 11)), n.a), $Q(l), r = new kSn(t, c, s), i = fSe(r, l, f, h), ht(n, (_h(), Xw), i.c), e.Vg(); + } + function mqn(n) { + if (n.g == null) + switch (n.p) { + case 0: + n.g = j2e(n) ? (_n(), ov) : (_n(), ga); + break; + case 1: + n.g = ak(w3e(n)); + break; + case 2: + n.g = vk(dpe(n)); + break; + case 3: + n.g = Vwe(n); + break; + case 4: + n.g = new z9(Xwe(n)); + break; + case 6: + n.g = Ml(Qwe(n)); + break; + case 5: + n.g = Y(u2e(n)); + break; + case 7: + n.g = sm(m3e(n)); + } + return n.g; + } + function den(n) { + if (n.n == null) + switch (n.p) { + case 0: + n.n = E2e(n) ? (_n(), ov) : (_n(), ga); + break; + case 1: + n.n = ak(g3e(n)); + break; + case 2: + n.n = vk(bpe(n)); + break; + case 3: + n.n = Wwe(n); + break; + case 4: + n.n = new z9(Jwe(n)); + break; + case 6: + n.n = Ml(Ywe(n)); + break; + case 5: + n.n = Y(o2e(n)); + break; + case 7: + n.n = sm(p3e(n)); + } + return n.n; + } + function vqn(n, e, t, i) { + var r, c, s, f, h; + if (f = (br(), u(e, 69).xk()), Sl(n.e, e)) { + if (e.Si() && RA(n, e, i, D(e, 102) && (u(e, 19).Bb & hr) != 0)) + throw M(new Gn(Vy)); + } else + for (h = cu(n.e.Dh(), e), r = u(n.g, 124), s = 0; s < n.i; ++s) + if (c = r[s], h.am(c.Lk())) + throw M(new Gn(Zy)); + v5(n, mnn(n, e, t), f ? u(i, 76) : Fh(e, i)); + } + function kqn(n) { + var e, t, i, r, c, s, f; + for (c = new C(n.a.a); c.a < c.c.c.length; ) + i = u(E(c), 316), i.g = 0, i.i = 0, i.e.a.$b(); + for (r = new C(n.a.a); r.a < r.c.c.length; ) + for (i = u(E(r), 316), t = i.a.a.ec().Kc(); t.Ob(); ) + for (e = u(t.Pb(), 60), f = e.c.Kc(); f.Ob(); ) + s = u(f.Pb(), 60), s.a != i && (fi(i.e, s), ++s.a.g, ++s.a.i); + } + function nAe(n) { + var e, t, i, r, c; + r = u(v(n, (cn(), xd)), 21), c = u(v(n, kI), 21), t = new V(n.f.a + n.d.b + n.d.c, n.f.b + n.d.d + n.d.a), e = new rr(t), r.Hc((go(), Qw)) && (i = u(v(n, Ev), 8), c.Hc((io(), _v)) && (i.a <= 0 && (i.a = 20), i.b <= 0 && (i.b = 20)), e.a = y.Math.max(t.a, i.a), e.b = y.Math.max(t.b, i.b)), tIe(n, t, e); + } + function eAe(n, e) { + var t, i, r; + e.a ? (R7(n.b, e.b), n.a[e.b.i] = u(ID(n.b, e.b), 86), t = u(PD(n.b, e.b), 86), t && (n.a[t.i] = e.b)) : (i = u(ID(n.b, e.b), 86), i && i == n.a[e.b.i] && i.d && i.d != e.b.d && i.f.Fc(e.b), r = u(PD(n.b, e.b), 86), r && n.a[r.i] == e.b && r.d && r.d != e.b.d && e.b.f.Fc(r), EL(n.b, e.b)); + } + function yqn(n, e) { + var t, i, r, c, s, f; + return c = n.d, f = $(R(v(n, (cn(), m1)))), f < 0 && (f = 0, U(n, m1, f)), e.o.b = f, s = y.Math.floor(f / 2), i = new Ic(), gi(i, (en(), Wn)), ic(i, e), i.n.b = s, r = new Ic(), gi(r, Zn), ic(r, e), r.n.b = s, Oi(n, i), t = new E0(), Ur(t, n), U(t, Fr, null), Zi(t, r), Oi(t, c), wPe(e, n, t), fEe(n, t), t; + } + function tAe(n) { + var e, t; + return t = u(v(n, (W(), qc)), 21), e = new ii(), t.Hc((mr(), F8)) && (Mo(e, Xie), Mo(e, rln)), (t.Hc(yv) || on(un(v(n, (cn(), TH))))) && (Mo(e, rln), t.Hc(v2) && Mo(e, Wie)), t.Hc(cs) && Mo(e, zie), t.Hc(B8) && Mo(e, Jie), t.Hc(nI) && Mo(e, Vie), t.Hc(vv) && Mo(e, Uie), t.Hc(kv) && Mo(e, Gie), e; + } + function iAe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + return i = n.d, c = e.d, f = i + c, h = n.e != e.e ? -1 : 1, f == 2 ? (a = er(vi(n.a[0], vr), vi(e.a[0], vr)), g = Ae(a), d = Ae(U1(a, 32)), d == 0 ? new gl(h, g) : new Ya(h, 2, A(T(ye, 1), _e, 28, 15, [g, d]))) : (t = n.a, r = e.a, s = K(ye, _e, 28, f, 15, 1), t5e(t, i, r, c, s), l = new Ya(h, f, s), J6(l), l); + } + function jqn(n, e, t, i) { + var r, c; + if (e) { + if (r = n.a.Ne(t.d, e.d), r == 0) + return i.d = gV(e, t.e), i.b = !0, e; + c = r < 0 ? 0 : 1, e.a[c] = jqn(n, e.a[c], t, i), Ib(e.a[c]) && (Ib(e.a[1 - c]) ? (e.b = !0, e.a[0].b = !1, e.a[1].b = !1) : Ib(e.a[c].a[c]) ? e = jT(e, 1 - c) : Ib(e.a[c].a[1 - c]) && (e = hDn(e, 1 - c))); + } else + return t; + return e; + } + function Eqn(n, e, t) { + var i, r, c, s; + r = n.i, i = n.n, FJ(n, (wf(), bc), r.c + i.b, t), FJ(n, wc, r.c + r.b - i.c - t[2], t), s = r.b - i.b - i.c, t[0] > 0 && (t[0] += n.d, s -= t[0]), t[2] > 0 && (t[2] += n.d, s -= t[2]), c = y.Math.max(0, s), t[1] = y.Math.max(t[1], s), FJ(n, Jc, r.c + i.b + t[0] - (t[1] - s) / 2, t), e == Jc && (n.c.b = c, n.c.c = r.c + i.b + (c - s) / 2); + } + function Cqn() { + this.c = K(Ii, Ar, 28, (en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn])).length, 15, 1), this.b = K(Ii, Ar, 28, A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]).length, 15, 1), this.a = K(Ii, Ar, 28, A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]).length, 15, 1), Kz(this.c, St), Kz(this.b, li), Kz(this.a, li); + } + function Fc(n, e, t) { + var i, r, c, s; + if (e <= t ? (r = e, c = t) : (r = t, c = e), i = 0, n.b == null) + n.b = K(ye, _e, 28, 2, 15, 1), n.b[0] = r, n.b[1] = c, n.c = !0; + else { + if (i = n.b.length, n.b[i - 1] + 1 == r) { + n.b[i - 1] = c; + return; + } + s = K(ye, _e, 28, i + 2, 15, 1), Oc(n.b, 0, s, 0, i), n.b = s, n.b[i - 1] >= r && (n.c = !1, n.a = !1), n.b[i++] = r, n.b[i] = c, n.c || Gg(n); + } + } + function rAe(n, e, t) { + var i, r, c, s, f, h, l; + for (l = e.d, n.a = new zc(l.c.length), n.c = new de(), f = new C(l); f.a < f.c.c.length; ) + s = u(E(f), 105), c = new yk(null), nn(n.a, c), Ve(n.c, s, c); + for (n.b = new de(), lEe(n, e), i = 0; i < l.c.length - 1; i++) + for (h = u(sn(e.d, i), 105), r = i + 1; r < l.c.length; r++) + VMe(n, h, u(sn(e.d, r), 105), t); + } + function aw(n) { + var e, t, i, r, c; + for (r = new Z(), e = new F6((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)), i = new ie(ce(Al(n).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 74), D(L((!t.b && (t.b = new Nn(he, t, 4, 7)), t.b), 0), 193) || (c = Gr(u(L((!t.c && (t.c = new Nn(he, t, 5, 8)), t.c), 0), 84)), e.a._b(c) || Kn(r.c, c)); + return r; + } + function cAe(n, e, t) { + var i, r, c; + if (n.e = t, n.d = 0, n.b = 0, n.f = 1, n.i = e, (n.e & 16) == 16 && (n.i = wSe(n.i)), n.j = n.i.length, Ze(n), c = B0(n), n.d != n.j) + throw M(new Le($e((Ie(), SWn)))); + if (n.g) { + for (i = 0; i < n.g.a.c.length; i++) + if (r = u(k0(n.g, i), 592), n.f <= r.a) + throw M(new Le($e((Ie(), PWn)))); + n.g.a.c.length = 0; + } + return c; + } + function uAe(n, e) { + var t, i, r, c, s, f, h; + for (t = li, f = (Vn(), Vt), r = new C(e.a); r.a < r.c.c.length; ) + i = u(E(r), 10), c = i.k, c != Vt && (s = R(v(i, (W(), ufn))), s == null ? (t = y.Math.max(t, 0), i.n.b = t + JX(n.a, c, f)) : i.n.b = (Jn(s), s)), h = JX(n.a, c, f), i.n.b < t + h + i.d.d && (i.n.b = t + h + i.d.d), t = i.n.b + i.o.b + i.d.a, f = c; + } + function Mqn(n, e, t, i, r) { + var c, s, f, h, l, a; + if (n.d && n.d.Gg(r), c = u(r.Xb(0), 27), ARn(n, t, c, !1) || (s = u(r.Xb(r.gc() - 1), 27), ARn(n, i, s, !0)) || fnn(n, r)) + return !0; + for (a = r.Kc(); a.Ob(); ) + for (l = u(a.Pb(), 27), h = e.Kc(); h.Ob(); ) + if (f = u(h.Pb(), 27), LA(n, l, f)) + return !0; + return !1; + } + function oAe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + g = e.c.length, d = (l = n.Ih(t), u(l >= 0 ? n.Lh(l, !1, !0) : H0(n, t, !1), 61)); + n: + for (c = d.Kc(); c.Ob(); ) { + for (r = u(c.Pb(), 58), a = 0; a < g; ++a) + if (s = (Ln(a, e.c.length), u(e.c[a], 76)), h = s.md(), f = s.Lk(), i = r.Nh(f, !1), h == null ? i != null : !ct(h, i)) + continue n; + return r; + } + return null; + } + function sAe(n, e) { + var t, i, r, c, s, f, h; + for (e.Ug("Comment post-processing", 1), c = new C(n.b); c.a < c.c.c.length; ) { + for (r = u(E(c), 30), i = new Z(), f = new C(r.a); f.a < f.c.c.length; ) + s = u(E(f), 10), h = u(v(s, (W(), P3)), 15), t = u(v(s, C3), 15), (h || t) && (MDe(s, h, t), h && hi(i, h), t && hi(i, t)); + hi(r.a, i); + } + e.Vg(); + } + function fAe(n, e, t, i) { + var r, c, s, f; + for (r = u(h1(e, (en(), Wn)).Kc().Pb(), 12), c = u(h1(e, Zn).Kc().Pb(), 12), f = new C(n.j); f.a < f.c.c.length; ) { + for (s = u(E(f), 12); s.e.c.length != 0; ) + Oi(u(sn(s.e, 0), 18), r); + for (; s.g.c.length != 0; ) + Zi(u(sn(s.g, 0), 18), c); + } + t || U(e, (W(), yf), null), i || U(e, (W(), Es), null); + } + function Xg(n, e, t) { + var i, r; + if ((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i == 0) + return VQ(n); + if (i = u(L((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), 0), 166), e && (me((!i.a && (i.a = new ti(xo, i, 5)), i.a)), H4(i, 0), U4(i, 0), _4(i, 0), q4(i, 0)), t) + for (r = (!n.a && (n.a = new q(Mt, n, 6, 6)), n.a); r.i > 1; ) + dw(r, r.i - 1); + return i; + } + function Tqn(n, e) { + var t, i, r, c, s, f, h; + for (t = new Cg(), c = new C(n.b); c.a < c.c.c.length; ) { + for (r = u(E(c), 30), h = !0, i = 0, f = new C(r.a); f.a < f.c.c.length; ) + switch (s = u(E(f), 10), s.k.g) { + case 4: + ++i; + case 1: + yJ(t, s); + break; + case 0: + sEe(s, e); + default: + t.b == t.c || gUn(t, i, h, !1, e), h = !1, i = 0; + } + t.b == t.c || gUn(t, i, h, !0, e); + } + } + function ben(n, e) { + var t, i, r, c, s, f; + for (t = 0, f = new C(e); f.a < f.c.c.length; ) { + for (s = u(E(f), 12), aY(n.b, n.d[s.p]), r = new Df(s.b); tc(r.a) || tc(r.b); ) + i = u(tc(r.a) ? E(r.a) : E(r.b), 18), c = Pz(n, s == i.c ? i.d : i.c), c > n.d[s.p] && (t += PJ(n.b, c), W1(n.a, Y(c))); + for (; !t6(n.a); ) + sQ(n.b, u(Sp(n.a), 17).a); + } + return t; + } + function hAe(n) { + var e, t, i, r, c, s, f, h, l; + for (n.a = new yV(), l = 0, r = 0, i = new C(n.i.b); i.a < i.c.c.length; ) { + for (e = u(E(i), 30), e.p = r, h = new C(e.a); h.a < h.c.c.length; ) + f = u(E(h), 10), f.p = l, ++l; + ++r; + } + for (c = n.r == (ps(), pb), s = c ? VZn : XZn, t = new C(n.i.b); t.a < t.c.c.length; ) + e = u(E(t), 30), Yt(e.a, s), fme(n.a, Y(e.p), e.a); + } + function Aqn(n, e, t) { + var i, r, c, s; + for (c = (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i, r = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); r.e != r.i.gc(); ) + i = u(ue(r), 27), (!i.a && (i.a = new q(Ye, i, 10, 11)), i.a).i == 0 || (c += Aqn(n, i, !1)); + if (t) + for (s = At(e); s; ) + c += (!s.a && (s.a = new q(Ye, s, 10, 11)), s.a).i, s = At(s); + return c; + } + function dw(n, e) { + var t, i, r, c; + return n.Pj() ? (i = null, r = n.Qj(), n.Tj() && (i = n.Vj(n.$i(e), null)), t = n.Ij(4, c = Jp(n, e), null, e, r), n.Mj() && c != null && (i = n.Oj(c, i)), i ? (i.nj(t), i.oj()) : n.Jj(t), c) : (c = Jp(n, e), n.Mj() && c != null && (i = n.Oj(c, null), i && i.oj()), c); + } + function lAe(n) { + var e, t, i, r, c, s, f, h, l, a; + for (l = n.a, e = new ni(), h = 0, i = new C(n.d); i.a < i.c.c.length; ) { + for (t = u(E(i), 226), a = 0, ud(t.b, new vbn()), s = ge(t.b, 0); s.b != s.d.c; ) + c = u(be(s), 226), e.a._b(c) && (r = t.c, f = c.c, a < f.d + f.a + l && a + r.a + l > f.d && (a = f.d + f.a + l)); + t.c.d = a, e.a.zc(t, e), h = y.Math.max(h, t.c.d + t.c.a); + } + return h; + } + function mr() { + mr = F, ZP = new Db("COMMENTS", 0), cs = new Db("EXTERNAL_PORTS", 1), F8 = new Db("HYPEREDGES", 2), nI = new Db("HYPERNODES", 3), yv = new Db("NON_FREE_PORTS", 4), v2 = new Db("NORTH_SOUTH_PORTS", 5), B8 = new Db(QXn, 6), vv = new Db("CENTER_LABELS", 7), kv = new Db("END_LABELS", 8), eI = new Db("PARTITIONS", 9); + } + function aAe(n, e, t, i, r) { + return i < 0 ? (i = Ug(n, r, A(T(fn, 1), J, 2, 6, [sB, fB, hB, lB, c3, aB, dB, bB, wB, gB, pB, mB]), e), i < 0 && (i = Ug(n, r, A(T(fn, 1), J, 2, 6, ["Jan", "Feb", "Mar", "Apr", c3, "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]), e)), i < 0 ? !1 : (t.k = i, !0)) : i > 0 ? (t.k = i - 1, !0) : !1; + } + function dAe(n, e, t, i, r) { + return i < 0 ? (i = Ug(n, r, A(T(fn, 1), J, 2, 6, [sB, fB, hB, lB, c3, aB, dB, bB, wB, gB, pB, mB]), e), i < 0 && (i = Ug(n, r, A(T(fn, 1), J, 2, 6, ["Jan", "Feb", "Mar", "Apr", c3, "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]), e)), i < 0 ? !1 : (t.k = i, !0)) : i > 0 ? (t.k = i - 1, !0) : !1; + } + function bAe(n, e, t, i, r, c) { + var s, f, h, l; + if (f = 32, i < 0) { + if (e[0] >= n.length || (f = Xi(n, e[0]), f != 43 && f != 45) || (++e[0], i = yA(n, e), i < 0)) + return !1; + f == 45 && (i = -i); + } + return f == 32 && e[0] - t == 2 && r.b == 2 && (h = new JE(), l = h.q.getFullYear() - ha + ha - 80, s = l % 100, c.a = i == s, i += (l / 100 | 0) * 100 + (i < s ? 100 : 0)), c.p = i, !0; + } + function Sqn(n, e) { + var t, i, r, c, s; + At(n) && (s = u(v(e, (cn(), xd)), 181), x(z(n, Ut)) === x((Di(), Pa)) && ht(n, Ut, Qf), i = (c0(), new Qd(At(n))), c = new ML(At(n) ? new Qd(At(n)) : null, n), r = qGn(i, c, !1, !0), _s(s, (go(), Qw)), t = u(v(e, Ev), 8), t.a = y.Math.max(r.a, t.a), t.b = y.Math.max(r.b, t.b)); + } + function wAe(n, e, t) { + var i, r, c, s, f, h; + for (s = u(v(n, (W(), lH)), 15).Kc(); s.Ob(); ) { + switch (c = u(s.Pb(), 10), u(v(c, (cn(), su)), 171).g) { + case 2: + $i(c, e); + break; + case 4: + $i(c, t); + } + for (r = new ie(ce(Cl(c).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), !(i.c && i.d) && (f = !i.d, h = u(v(i, sfn), 12), f ? Oi(i, h) : Zi(i, h)); + } + } + function DA() { + DA = F, __ = new Op(eS, 0, (en(), Xn), Xn), U_ = new Op(qB, 1, ae, ae), K_ = new Op(HB, 2, Zn, Zn), X_ = new Op(UB, 3, Wn, Wn), q_ = new Op("NORTH_WEST_CORNER", 4, Wn, Xn), H_ = new Op("NORTH_EAST_CORNER", 5, Xn, Zn), z_ = new Op("SOUTH_WEST_CORNER", 6, ae, Wn), G_ = new Op("SOUTH_EAST_CORNER", 7, Zn, ae); + } + function gAe(n) { + var e, t, i, r, c, s; + for (c = new ni(), e = new F6((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)), r = new ie(ce(Al(n).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 74), D(L((!i.b && (i.b = new Nn(he, i, 4, 7)), i.b), 0), 193) || (s = Gr(u(L((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c), 0), 84)), e.a._b(s) || (t = c.a.zc(s, c), t == null)); + return c; + } + function Vg() { + Vg = F, san = A(T(Fa, 1), SB, 28, 14, [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368e3, { l: 3506176, m: 794077, h: 1 }, { l: 884736, m: 916411, h: 20 }, { l: 3342336, m: 3912489, h: 363 }, { l: 589824, m: 3034138, h: 6914 }, { l: 3407872, m: 1962506, h: 138294 }]), y.Math.pow(2, -65); + } + function Am() { + Am = F; + var n, e; + for (m3 = K(l2, J, 92, 32, 0, 1), P8 = K(l2, J, 92, 32, 0, 1), n = 1, e = 0; e <= 18; e++) + m3[e] = (dh(), Cc(n, 0) >= 0 ? ia(n) : U6(ia(n1(n)))), P8[e] = AC(Bs(n, e), 0) ? ia(Bs(n, e)) : U6(ia(n1(Bs(n, e)))), n = er(n, 5); + for (; e < P8.length; e++) + m3[e] = Ig(m3[e - 1], m3[1]), P8[e] = Ig(P8[e - 1], (dh(), YK)); + } + function Pqn(n, e) { + var t, i, r, c, s; + if (n.c.length == 0) + return new bi(Y(0), Y(0)); + for (t = (Ln(0, n.c.length), u(n.c[0], 12)).j, s = 0, c = e.g, i = e.g + 1; s < n.c.length - 1 && t.g < c; ) + ++s, t = (Ln(s, n.c.length), u(n.c[s], 12)).j; + for (r = s; r < n.c.length - 1 && t.g < i; ) + ++r, t = (Ln(s, n.c.length), u(n.c[s], 12)).j; + return new bi(Y(s), Y(r)); + } + function pAe(n, e, t, i) { + var r, c, s, f, h, l, a; + h = uc(e, t), (t == (en(), ae) || t == Wn) && (h = Qo(h)), s = !1; + do + for (r = !1, c = 0; c < h.gc() - 1; c++) + l = u(h.Xb(c), 12), f = u(h.Xb(c + 1), 12), eje(n, l, f, i) && (s = !0, KN(n.a, u(h.Xb(c), 12), u(h.Xb(c + 1), 12)), a = u(h.Xb(c + 1), 12), h.hd(c + 1, u(h.Xb(c), 12)), h.hd(c, a), r = !0); + while (r); + return s; + } + function mAe(n, e, t) { + var i, r, c, s; + for (t.Ug(dVn, 1), r = u(Wr(ut(new Tn(null, new In(e.b, 16)), new a4n()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), tHn(n, r, 0), s = ge(e.b, 0); s.b != s.d.c; ) + c = u(be(s), 40), i = ee(n.a, Y(c.g)) != null ? u(ee(n.a, Y(c.g)), 17).a : 0, U(c, (lc(), Sh), Y(i)); + t.Vg(); + } + function LA(n, e, t) { + var i, r, c, s, f, h, l, a; + return f = e.i - n.g / 2, h = t.i - n.g / 2, l = e.j - n.g / 2, a = t.j - n.g / 2, c = e.g + n.g, s = t.g + n.g, i = e.f + n.g, r = t.f + n.g, f < h + s && h < f && l < a + r && a < l || h < f + c && f < h && a < l + i && l < a || f < h + s && h < f && l < a && a < l + i ? !0 : h < f + c && f < h && l < a + r && a < l; + } + function vAe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (c = e.c.length, s = (Ln(t, e.c.length), u(e.c[t], 293)), f = s.a.o.a, d = s.c, g = 0, l = s.c; l <= s.f; l++) { + if (f <= n.a[l]) + return l; + for (a = n.a[l], h = null, r = t + 1; r < c; r++) + i = (Ln(r, e.c.length), u(e.c[r], 293)), i.c <= l && i.f >= l && (h = i); + h && (a = y.Math.max(a, h.a.o.a)), a > g && (d = l, g = a); + } + return d; + } + function kAe(n) { + var e, t, i, r, c, s, f; + for (c = new Ul(u(Se(new ybn()), 50)), f = li, t = new C(n.d); t.a < t.c.c.length; ) { + for (e = u(E(t), 226), f = e.c.c; c.a.gc() != 0 && (s = u(c.a.Tc(), 226), s.c.c + s.c.b < f); ) + c.a.Bc(s) != null; + for (r = c.a.ec().Kc(); r.Ob(); ) + i = u(r.Pb(), 226), Fe(i.b, e), Fe(e.b, i); + c.a.zc(e, (_n(), ga)) == null; + } + } + function Iqn(n, e, t) { + var i, r, c, s, f; + if (!N4(e)) { + for (f = t.eh((D(e, 16) ? u(e, 16).gc() : wl(e.Kc())) / n.a | 0), f.Ug(bVn, 1), s = new b4n(), c = null, r = e.Kc(); r.Ob(); ) + i = u(r.Pb(), 40), s = Eo(A(T(Oo, 1), Bn, 20, 0, [s, new sl(i)])), c && (U(c, (pt(), bre), i), U(i, uq, c), n$(i) == n$(c) && (U(c, oq, i), U(i, $I, c))), c = i; + f.Vg(), Iqn(n, s, t); + } + } + function yAe(n, e) { + var t, i, r; + if (e == null) { + for (i = (!n.a && (n.a = new q(Bl, n, 9, 5)), new ne(n.a)); i.e != i.i.gc(); ) + if (t = u(ue(i), 694), r = t.c, (r == null ? t.zb : r) == null) + return t; + } else + for (i = (!n.a && (n.a = new q(Bl, n, 9, 5)), new ne(n.a)); i.e != i.i.gc(); ) + if (t = u(ue(i), 694), An(e, (r = t.c, r == null ? t.zb : r))) + return t; + return null; + } + function kF(n, e) { + var t; + switch (t = null, e.g) { + case 1: + n.e.pf((He(), rU)) && (t = u(n.e.of(rU), 256)); + break; + case 3: + n.e.pf((He(), cU)) && (t = u(n.e.of(cU), 256)); + break; + case 2: + n.e.pf((He(), iU)) && (t = u(n.e.of(iU), 256)); + break; + case 4: + n.e.pf((He(), uU)) && (t = u(n.e.of(uU), 256)); + } + return !t && (t = u(n.e.of((He(), Fan)), 256)), t; + } + function Oqn(n, e, t) { + var i, r, c, s, f, h; + for (r = t, c = 0, f = new C(e); f.a < f.c.c.length; ) + s = u(E(f), 27), ht(s, (oa(), _I), Y(r++)), h = aw(s), i = y.Math.atan2(s.j + s.f / 2, s.i + s.g / 2), i += i < 0 ? Cd : 0, i < 0.7853981633974483 || i > EVn ? Yt(h, n.b) : i <= EVn && i > CVn ? Yt(h, n.d) : i <= CVn && i > MVn ? Yt(h, n.c) : i <= MVn && Yt(h, n.a), c = Oqn(n, h, c); + return r; + } + function Dqn(n, e, t, i) { + var r, c, s, f, h, l; + for (r = (i.c + i.a) / 2, vo(e.j), Fe(e.j, r), vo(t.e), Fe(t.e, r), l = new nEn(), f = new C(n.f); f.a < f.c.c.length; ) + c = u(E(f), 132), h = c.a, Xx(l, e, h), Xx(l, t, h); + for (s = new C(n.k); s.a < s.c.c.length; ) + c = u(E(s), 132), h = c.b, Xx(l, e, h), Xx(l, t, h); + return l.b += 2, l.a += KIn(e, n.q), l.a += KIn(n.q, t), l; + } + function jAe(n, e, t) { + var i; + t.Ug("Processor arrange node", 1), on(un(v(e, (lc(), Aln)))), i = u(ho(im(ut(new Tn(null, new In(e.b, 16)), new L4n()))), 40), n.a = u(v(e, xln), 353), n.a == (b5(), lq) || n.a == BI ? UGn(n, new Ku(A(T(NI, 1), OS, 40, 0, [i])), t.eh(1)) : n.a == hq && mzn(n, new Ku(A(T(NI, 1), OS, 40, 0, [i])), t.eh(1)), t.Vg(); + } + function Rf() { + Rf = F, zI = new Ni((He(), x2), 1.3), xce = new Ni(Vw, (_n(), !1)), y1n = new f0(15), h9 = new Ni(C1, y1n), l9 = new Ni(qd, 15), Dce = Gj, $ce = Hd, Fce = _2, Bce = Ta, Nce = K2, Dq = Wj, Rce = Ww, M1n = (Aen(), Pce), C1n = Sce, Nq = Oce, T1n = Ice, k1n = Mce, Lq = Cce, v1n = Ece, E1n = Ace, m1n = Vj, Lce = tU, Rj = yce, p1n = kce, Kj = jce, j1n = Tce; + } + function Lqn(n) { + var e, t, i, r, c, s, f; + for (t = n.i, e = n.n, f = t.d, n.f == (wu(), ma) ? f += (t.a - n.e.b) / 2 : n.f == Xs && (f += t.a - n.e.b), r = new C(n.d); r.a < r.c.c.length; ) { + switch (i = u(E(r), 187), s = i.Mf(), c = new Li(), c.b = f, f += s.b + n.a, n.b.g) { + case 0: + c.a = t.c + e.b; + break; + case 1: + c.a = t.c + e.b + (t.b - s.a) / 2; + break; + case 2: + c.a = t.c + t.b - e.c - s.a; + } + i.Of(c); + } + } + function Nqn(n) { + var e, t, i, r, c, s, f; + for (t = n.i, e = n.n, f = t.c, n.b == (Uu(), pa) ? f += (t.b - n.e.a) / 2 : n.b == zs && (f += t.b - n.e.a), r = new C(n.d); r.a < r.c.c.length; ) { + switch (i = u(E(r), 187), s = i.Mf(), c = new Li(), c.a = f, f += s.a + n.a, n.f.g) { + case 0: + c.b = t.d + e.d; + break; + case 1: + c.b = t.d + e.d + (t.a - s.b) / 2; + break; + case 2: + c.b = t.d + t.a - e.a - s.b; + } + i.Of(c); + } + } + function EAe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + a = t.a.c, s = t.a.c + t.a.b, c = u(ee(t.c, e), 468), p = c.f, m = c.a, h = new V(a, p), d = new V(s, m), r = a, t.p || (r += n.c), r += t.F + t.v * n.b, l = new V(r, p), g = new V(r, m), r5(e.a, A(T(Ei, 1), J, 8, 0, [h, l])), f = t.d.a.gc() > 1, f && (i = new V(r, t.b), Fe(e.a, i)), r5(e.a, A(T(Ei, 1), J, 8, 0, [g, d])); + } + function wen(n, e, t) { + var i, r; + for (e < n.d.b.c.length ? (n.b = u(sn(n.d.b, e), 30), n.a = u(sn(n.d.b, e - 1), 30), n.c = e) : (n.a = new Nc(n.d), n.a.p = e - 1, nn(n.d.b, n.a), n.b = new Nc(n.d), n.b.p = e, nn(n.d.b, n.b), n.c = e), $i(t, n.b), r = new ie(ce(ji(t).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), !i.c.i.c && i.c.i.k == (Vn(), Sc) && $i(i.c.i, n.a); + } + function $qn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), BS), "ELK Randomizer"), 'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'), new Wmn()))), Q(n, BS, W0, gdn), Q(n, BS, yw, 15), Q(n, BS, uS, Y(0)), Q(n, BS, l3, Gm); + } + function gen() { + gen = F; + var n, e, t, i, r, c; + for (B9 = K(Bu, s2, 28, 255, 15, 1), SO = K(fs, gh, 28, 16, 15, 1), e = 0; e < 255; e++) + B9[e] = -1; + for (t = 57; t >= 48; t--) + B9[t] = t - 48 << 24 >> 24; + for (i = 70; i >= 65; i--) + B9[i] = i - 65 + 10 << 24 >> 24; + for (r = 102; r >= 97; r--) + B9[r] = r - 97 + 10 << 24 >> 24; + for (c = 0; c < 10; c++) + SO[c] = 48 + c & ui; + for (n = 10; n <= 15; n++) + SO[n] = 65 + n - 10 & ui; + } + function CAe(n, e) { + e.Ug("Process graph bounds", 1), U(n, (pt(), rq), a7(O$(Ub(new Tn(null, new In(n.b, 16)), new c4n())))), U(n, cq, a7(O$(Ub(new Tn(null, new In(n.b, 16)), new u4n())))), U(n, kln, a7(I$(Ub(new Tn(null, new In(n.b, 16)), new o4n())))), U(n, yln, a7(I$(Ub(new Tn(null, new In(n.b, 16)), new s4n())))), e.Vg(); + } + function MAe(n) { + var e, t, i, r, c; + r = u(v(n, (cn(), xd)), 21), c = u(v(n, kI), 21), t = new V(n.f.a + n.d.b + n.d.c, n.f.b + n.d.d + n.d.a), e = new rr(t), r.Hc((go(), Qw)) && (i = u(v(n, Ev), 8), c.Hc((io(), _v)) && (i.a <= 0 && (i.a = 20), i.b <= 0 && (i.b = 20)), e.a = y.Math.max(t.a, i.a), e.b = y.Math.max(t.b, i.b)), on(un(v(n, SH))) || eIe(n, t, e); + } + function TAe(n, e) { + var t, i, r, c; + for (c = uc(e, (en(), ae)).Kc(); c.Ob(); ) + i = u(c.Pb(), 12), t = u(v(i, (W(), Xu)), 10), t && qs(Ls(Ds(Ns(Os(new hs(), 0), 0.1), n.i[e.p].d), n.i[t.p].a)); + for (r = uc(e, Xn).Kc(); r.Ob(); ) + i = u(r.Pb(), 12), t = u(v(i, (W(), Xu)), 10), t && qs(Ls(Ds(Ns(Os(new hs(), 0), 0.1), n.i[t.p].d), n.i[e.p].a)); + } + function yF(n) { + var e, t, i, r, c, s; + if (!n.c) { + if (s = new yvn(), e = N9, c = e.a.zc(n, e), c == null) { + for (i = new ne(Pc(n)); i.e != i.i.gc(); ) + t = u(ue(i), 89), r = BA(t), D(r, 90) && Ht(s, yF(u(r, 29))), ve(s, t); + e.a.Bc(n) != null, e.a.gc() == 0; + } + y8e(s), ew(s), n.c = new pg((u(L(H((G1(), Hn).o), 15), 19), s.i), s.g), Zu(n).b &= -33; + } + return n.c; + } + function pen(n) { + var e; + if (n.c != 10) + throw M(new Le($e((Ie(), qS)))); + switch (e = n.a, e) { + case 110: + e = 10; + break; + case 114: + e = 13; + break; + case 116: + e = 9; + break; + case 92: + case 124: + case 46: + case 94: + case 45: + case 63: + case 42: + case 43: + case 123: + case 125: + case 40: + case 41: + case 91: + case 93: + break; + default: + throw M(new Le($e((Ie(), is)))); + } + return e; + } + function xqn(n) { + var e, t, i, r, c; + if (n.l == 0 && n.m == 0 && n.h == 0) + return "0"; + if (n.h == Ty && n.m == 0 && n.l == 0) + return "-9223372036854775808"; + if (n.h >> 19) + return "-" + xqn(tm(n)); + for (t = n, i = ""; !(t.l == 0 && t.m == 0 && t.h == 0); ) { + if (r = QN(QA), t = Qen(t, r, !0), e = "" + uEn(wa), !(t.l == 0 && t.m == 0 && t.h == 0)) + for (c = 9 - e.length; c > 0; c--) + e = "0" + e; + i = e + i; + } + return i; + } + function AAe(n) { + var e, t, i, r, c, s, f; + for (e = !1, t = 0, r = new C(n.d.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), i.p = t++, s = new C(i.a); s.a < s.c.c.length; ) + c = u(E(s), 10), !e && !N4(Cl(c)) && (e = !0); + f = yt((ci(), Jf), A(T(y9, 1), G, 88, 0, [Br, Xr])), e || (_s(f, us), _s(f, Wf)), n.a = new v$n(f), Hu(n.f), Hu(n.b), Hu(n.e), Hu(n.g); + } + function SAe() { + if (!Object.create || !Object.getOwnPropertyNames) + return !1; + var n = "__proto__", e = /* @__PURE__ */ Object.create(null); + if (e[n] !== void 0) + return !1; + var t = Object.getOwnPropertyNames(e); + return !(t.length != 0 || (e[n] = 42, e[n] !== 42) || Object.getOwnPropertyNames(e).length == 0); + } + function PAe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (i = t.c, r = t.d, f = If(e.c), h = If(e.d), i == e.c ? (f = ten(n, f, r), h = qKn(e.d)) : (f = qKn(e.c), h = ten(n, h, r)), l = new GE(e.a), Kt(l, f, l.a, l.a.a), Kt(l, h, l.c.b, l.c), s = e.c == i, d = new Hyn(), c = 0; c < l.b - 1; ++c) + a = new bi(u(Zo(l, c), 8), u(Zo(l, c + 1), 8)), s && c == 0 || !s && c == l.b - 2 ? d.b = a : nn(d.a, a); + return d; + } + function IAe(n, e) { + var t, i, r, c; + if (c = n.j.g - e.j.g, c != 0) + return c; + if (t = u(v(n, (cn(), v1)), 17), i = u(v(e, v1), 17), t && i && (r = t.a - i.a, r != 0)) + return r; + switch (n.j.g) { + case 1: + return bt(n.n.a, e.n.a); + case 2: + return bt(n.n.b, e.n.b); + case 3: + return bt(e.n.a, n.n.a); + case 4: + return bt(e.n.b, n.n.b); + default: + throw M(new Or(rin)); + } + } + function men(n, e, t, i) { + var r, c, s, f, h; + if (wl((L7(), new ie(ce(Cl(e).a.Kc(), new En())))) >= n.a || !ZZ(e, t)) + return -1; + if (N4(u(i.Kb(e), 20))) + return 1; + for (r = 0, s = u(i.Kb(e), 20).Kc(); s.Ob(); ) + if (c = u(s.Pb(), 18), h = c.c.i == e ? c.d.i : c.c.i, f = men(n, h, t, i), f == -1 || (r = y.Math.max(r, f), r > n.c - 1)) + return -1; + return r + 1; + } + function Fqn(n, e) { + var t, i, r, c, s, f; + if (x(e) === x(n)) + return !0; + if (!D(e, 15) || (i = u(e, 15), f = n.gc(), i.gc() != f)) + return !1; + if (s = i.Kc(), n.Yi()) { + for (t = 0; t < f; ++t) + if (r = n.Vi(t), c = s.Pb(), r == null ? c != null : !ct(r, c)) + return !1; + } else + for (t = 0; t < f; ++t) + if (r = n.Vi(t), c = s.Pb(), x(r) !== x(c)) + return !1; + return !0; + } + function Bqn(n, e) { + var t, i, r, c, s, f; + if (n.f > 0) { + if (n._j(), e != null) { + for (c = 0; c < n.d.length; ++c) + if (t = n.d[c], t) { + for (i = u(t.g, 379), f = t.i, s = 0; s < f; ++s) + if (r = i[s], ct(e, r.md())) + return !0; + } + } else + for (c = 0; c < n.d.length; ++c) + if (t = n.d[c], t) { + for (i = u(t.g, 379), f = t.i, s = 0; s < f; ++s) + if (r = i[s], x(e) === x(r.md())) + return !0; + } + } + return !1; + } + function OAe(n, e) { + var t, i, r; + return t = e.qi(n.a), t && (r = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), "affiliation")), r != null) ? (i = FC(r, gu(35)), i == -1 ? rx(n, R6(n, jo(e.qk())), r) : i == 0 ? rx(n, null, (zn(1, r.length + 1), r.substr(1))) : rx(n, (Fi(0, i, r.length), r.substr(0, i)), (zn(i + 1, r.length + 1), r.substr(i + 1)))) : null; + } + function DAe(n, e, t) { + var i, r, c, s; + t.Ug("Orthogonally routing hierarchical port edges", 1), n.a = 0, i = AIe(e), DOe(e, i), gOe(n, e, i), DDe(e), r = u(v(e, (cn(), Ut)), 101), c = e.b, KGn((Ln(0, c.c.length), u(c.c[0], 30)), r, e), KGn(u(sn(c, c.c.length - 1), 30), r, e), s = e.b, JUn((Ln(0, s.c.length), u(s.c[0], 30))), JUn(u(sn(s, s.c.length - 1), 30)), t.Vg(); + } + function ven(n) { + switch (n) { + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return n - 48 << 24 >> 24; + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + return n - 97 + 10 << 24 >> 24; + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + return n - 65 + 10 << 24 >> 24; + default: + throw M(new th("Invalid hexadecimal")); + } + } + function NA() { + NA = F, ton = new ag("SPIRAL", 0), Yun = new ag("LINE_BY_LINE", 1), Zun = new ag("MANHATTAN", 2), Qun = new ag("JITTER", 3), f_ = new ag("QUADRANTS_LINE_BY_LINE", 4), eon = new ag("QUADRANTS_MANHATTAN", 5), non = new ag("QUADRANTS_JITTER", 6), Jun = new ag("COMBINE_LINE_BY_LINE_MANHATTAN", 7), Wun = new ag("COMBINE_JITTER_MANHATTAN", 8); + } + function Rqn(n, e, t, i) { + var r, c, s, f, h, l; + for (h = zx(n, t), l = zx(e, t), r = !1; h && l && (i || C7e(h, l, t)); ) + s = zx(h, t), f = zx(l, t), fk(e), fk(n), c = h.c, XF(h, !1), XF(l, !1), t ? (uw(e, l.p, c), e.p = l.p, uw(n, h.p + 1, c), n.p = h.p) : (uw(n, h.p, c), n.p = h.p, uw(e, l.p + 1, c), e.p = l.p), $i(h, null), $i(l, null), h = s, l = f, r = !0; + return r; + } + function Kqn(n) { + switch (n.g) { + case 0: + return new Z5n(); + case 1: + return new Q5n(); + case 3: + return new bCn(); + case 4: + return new Vpn(); + case 5: + return new HAn(); + case 6: + return new Y5n(); + case 2: + return new J5n(); + case 7: + return new U5n(); + case 8: + return new z5n(); + default: + throw M(new Gn("No implementation is available for the layerer " + (n.f != null ? n.f : "" + n.g))); + } + } + function LAe(n, e, t, i) { + var r, c, s, f, h; + for (r = !1, c = !1, f = new C(i.j); f.a < f.c.c.length; ) + s = u(E(f), 12), x(v(s, (W(), st))) === x(t) && (s.g.c.length == 0 ? s.e.c.length == 0 || (r = !0) : c = !0); + return h = 0, r && r ^ c ? h = t.j == (en(), Xn) ? -n.e[i.c.p][i.p] : e - n.e[i.c.p][i.p] : c && r ^ c ? h = n.e[i.c.p][i.p] + 1 : r && c && (h = t.j == (en(), Xn) ? 0 : e / 2), h; + } + function jF(n, e, t, i, r, c, s, f) { + var h, l, a; + for (h = 0, e != null && (h ^= t1(e.toLowerCase())), t != null && (h ^= t1(t)), i != null && (h ^= t1(i)), s != null && (h ^= t1(s)), f != null && (h ^= t1(f)), l = 0, a = c.length; l < a; l++) + h ^= t1(c[l]); + n ? h |= 256 : h &= -257, r ? h |= 16 : h &= -17, this.f = h, this.i = e == null ? null : (Jn(e), e), this.a = t, this.d = i, this.j = c, this.g = s, this.e = f; + } + function ken(n, e, t) { + var i, r; + switch (r = null, e.g) { + case 1: + r = (Du(), Bon); + break; + case 2: + r = (Du(), Kon); + } + switch (i = null, t.g) { + case 1: + i = (Du(), Ron); + break; + case 2: + i = (Du(), Fon); + break; + case 3: + i = (Du(), _on); + break; + case 4: + i = (Du(), Hon); + } + return r && i ? Cp(n.j, new S8n(new Ku(A(T(uNe, 1), Bn, 178, 0, [u(Se(r), 178), u(Se(i), 178)])))) : (Dn(), Dn(), sr); + } + function NAe(n) { + var e, t, i; + switch (e = u(v(n, (cn(), Ev)), 8), U(n, Ev, new V(e.b, e.a)), u(v(n, Th), 255).g) { + case 1: + U(n, Th, (Rh(), eO)); + break; + case 2: + U(n, Th, (Rh(), ZI)); + break; + case 3: + U(n, Th, (Rh(), qj)); + break; + case 4: + U(n, Th, (Rh(), Uj)); + } + (n.q ? n.q : (Dn(), Dn(), Wh))._b(Hw) && (t = u(v(n, Hw), 8), i = t.a, t.a = t.b, t.b = i); + } + function _qn(n, e, t, i, r, c) { + if (this.b = t, this.d = r, n >= e.length) + throw M(new Ir("Greedy SwitchDecider: Free layer not in graph.")); + this.c = e[n], this.e = new D7(i), T$(this.e, this.c, (en(), Wn)), this.i = new D7(i), T$(this.i, this.c, Zn), this.f = new cPn(this.c), this.a = !c && r.i && !r.s && this.c[0].k == (Vn(), Zt), this.a && Xje(this, n, e.length); + } + function Hqn(n, e) { + var t, i, r, c, s, f; + c = !n.B.Hc((io(), cE)), s = n.B.Hc(bU), n.a = new SBn(s, c, n.c), n.n && JW(n.a.n, n.n), mD(n.g, (wf(), Jc), n.a), e || (i = new E5(1, c, n.c), i.n.a = n.k, Pp(n.p, (en(), Xn), i), r = new E5(1, c, n.c), r.n.d = n.k, Pp(n.p, ae, r), f = new E5(0, c, n.c), f.n.c = n.k, Pp(n.p, Wn, f), t = new E5(0, c, n.c), t.n.b = n.k, Pp(n.p, Zn, t)); + } + function $Ae(n) { + var e, t, i; + switch (e = u(v(n.d, (cn(), $l)), 223), e.g) { + case 2: + t = ELe(n); + break; + case 3: + t = (i = new Z(), Gt(ut(_r(rc(rc(new Tn(null, new In(n.d.b, 16)), new rpn()), new cpn()), new upn()), new G2n()), new C7n(i)), i); + break; + default: + throw M(new Or("Compaction not supported for " + e + " edges.")); + } + GIe(n, t), qi(new qa(n.g), new j7n(n)); + } + function xAe(n, e) { + var t, i, r, c, s, f, h; + if (e.Ug("Process directions", 1), t = u(v(n, (lc(), vb)), 88), t != (ci(), Wf)) + for (r = ge(n.b, 0); r.b != r.d.c; ) { + switch (i = u(be(r), 40), f = u(v(i, (pt(), $j)), 17).a, h = u(v(i, xj), 17).a, t.g) { + case 4: + h *= -1; + break; + case 1: + c = f, f = h, h = c; + break; + case 2: + s = f, f = -h, h = s; + } + U(i, $j, Y(f)), U(i, xj, Y(h)); + } + e.Vg(); + } + function FAe(n, e) { + var t; + return t = new xO(), e && Ur(t, u(ee(n.a, oE), 96)), D(e, 422) && Ur(t, u(ee(n.a, sE), 96)), D(e, 366) ? (Ur(t, u(ee(n.a, Sr), 96)), t) : (D(e, 84) && Ur(t, u(ee(n.a, he), 96)), D(e, 207) ? (Ur(t, u(ee(n.a, Ye), 96)), t) : D(e, 193) ? (Ur(t, u(ee(n.a, Qu), 96)), t) : (D(e, 326) && Ur(t, u(ee(n.a, Wt), 96)), t)); + } + function BAe(n) { + var e, t, i, r, c, s, f, h; + for (h = new jLn(), f = new C(n.a); f.a < f.c.c.length; ) + if (s = u(E(f), 10), s.k != (Vn(), Zt)) { + for (KCe(h, s, new Li()), c = new ie(ce(Qt(s).a.Kc(), new En())); pe(c); ) + if (r = u(fe(c), 18), !(r.c.i.k == Zt || r.d.i.k == Zt)) + for (i = ge(r.a, 0); i.b != i.d.c; ) + t = u(be(i), 8), e = t, I5(h, new d4(e.a, e.b)); + } + return h; + } + function EF() { + EF = F, Y1n = new lt(YR), Q1n = (s6(), Hj), J1n = new Mn(eK, Q1n), W1n = (Mk(), YI), fue = new Mn(fcn, W1n), V1n = (Jk(), _q), sue = new Mn(hcn, V1n), cue = new Mn(ZR, null), X1n = (ik(), JI), oue = new Mn(nK, X1n), z1n = (eC(), Bq), eue = new Mn(lcn, z1n), tue = new Mn(acn, (_n(), !1)), iue = new Mn(dcn, Y(64)), rue = new Mn(bcn, !0), uue = Kq; + } + function qqn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (n.p = 1, r = n.c, d = new rh(), a = F0(n, (pr(), Qc)).Kc(); a.Ob(); ) + for (l = u(a.Pb(), 12), i = new C(l.g); i.a < i.c.c.length; ) + t = u(E(i), 18), h = t.d.i, n != h && (c = h.c, c.p <= r.p && (s = r.p + 1, s == e.b.c.length ? (f = new Nc(e), f.p = s, nn(e.b, f), $i(h, f)) : (f = u(sn(e.b, s), 30), $i(h, f)), d.a.zc(h, d))); + return d; + } + function RAe(n, e) { + var t, i; + if (t = u(v(n, (pt(), eq)), 15), !t || t.gc() < 1) + return null; + if (t.gc() == 1) + return u(t.Xb(0), 40); + switch (i = null, e.g) { + case 2: + i = u(ho(Ap(t.Oc(), new t4n())), 40); + break; + case 1: + i = u(ho(_b(t.Oc(), new Y3n())), 40); + break; + case 4: + i = u(ho(Ap(t.Oc(), new Z3n())), 40); + break; + case 3: + i = u(ho(_b(t.Oc(), new n4n())), 40); + } + return i; + } + function Uqn(n) { + var e, t, i, r, c, s; + if (n.a == null) + if (n.a = K(so, Xh, 28, n.c.b.c.length, 16, 1), n.a[0] = !1, kt(n.c, (cn(), NH))) + for (i = u(v(n.c, NH), 15), t = i.Kc(); t.Ob(); ) + e = u(t.Pb(), 17).a, e > 0 && e < n.a.length && (n.a[e] = !1); + else + for (s = new C(n.c.b), s.a < s.c.c.length && E(s), r = 1; s.a < s.c.c.length; ) + c = u(E(s), 30), n.a[r++] = yMe(c); + } + function _h() { + _h = F, s9 = new lt("additionalHeight"), Nv = new lt("drawingHeight"), O3 = new lt("drawingWidth"), UI = new lt("minHeight"), f9 = new lt("minWidth"), GI = new lt("rows"), Xw = new lt("targetWidth"), Iq = new Dt("minRowIncrease", 0), mce = new Dt("maxRowIncrease", 0), Pq = new Dt("minRowDecrease", 0), pce = new Dt("maxRowDecrease", 0); + } + function Gqn(n, e) { + var t, i, r, c; + switch (r = n.b, e) { + case 1: { + n.b |= 1, n.b |= 4, n.b |= 8; + break; + } + case 2: { + n.b |= 2, n.b |= 4, n.b |= 8; + break; + } + case 4: { + n.b |= 1, n.b |= 2, n.b |= 4, n.b |= 8; + break; + } + case 3: { + n.b |= 16, n.b |= 8; + break; + } + case 0: { + n.b |= 32, n.b |= 16, n.b |= 8, n.b |= 1, n.b |= 2, n.b |= 4; + break; + } + } + if (n.b != r && n.c) + for (i = new ne(n.c); i.e != i.i.gc(); ) + c = u(ue(i), 482), t = Zu(c), hw(t, e); + } + function zqn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + for (r = !1, s = e, f = 0, h = s.length; f < h; ++f) + c = s[f], on((_n(), !!c.e)) && !u(sn(n.b, c.e.p), 219).s && (r = r | (l = c.e, a = u(sn(n.b, l.p), 219), d = a.e, g = Vjn(t, d.length), p = d[g][0], p.k == (Vn(), Zt) ? d[g] = pTe(c, d[g], t ? (en(), Wn) : (en(), Zn)) : a.c.mg(d, t), m = sy(n, a, t, i), aen(a.e, a.o, t), m)); + return r; + } + function Xqn(n, e) { + var t, i, r, c, s; + for (c = (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i, r = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); r.e != r.i.gc(); ) + i = u(ue(r), 27), x(z(i, (He(), R2))) !== x((jl(), E9)) && (s = u(z(e, q2), 143), t = u(z(i, q2), 143), (s == t || s && OJ(s, t)) && (!i.a && (i.a = new q(Ye, i, 10, 11)), i.a).i != 0 && (c += Xqn(n, i))); + return c; + } + function KAe(n) { + var e, t, i, r, c, s, f; + for (i = 0, f = 0, s = new C(n.d); s.a < s.c.c.length; ) + c = u(E(s), 105), r = u(Wr(ut(new Tn(null, new In(c.j, 16)), new XU()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), t = null, i <= f ? (t = (en(), Xn), i += r.gc()) : f < i && (t = (en(), ae), f += r.gc()), e = t, Gt(_r(r.Oc(), new Mpn()), new A7n(e)); + } + function _Ae(n) { + var e, t, i, r, c; + for (c = new zc(n.a.c.length), r = new C(n.a); r.a < r.c.c.length; ) { + switch (i = u(E(r), 10), t = u(v(i, (cn(), su)), 171), e = null, t.g) { + case 1: + case 2: + e = (hd(), m2); + break; + case 3: + case 4: + e = (hd(), mv); + } + e ? (U(i, (W(), rI), (hd(), m2)), e == mv ? IA(i, t, (pr(), Vu)) : e == m2 && IA(i, t, (pr(), Qc))) : Kn(c.c, i); + } + return c; + } + function HAe(n) { + var e, t, i, r, c, s, f, h; + for (n.b = new cHn(new Ku((en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]))), new Ku((D0(), A(T(R_, 1), G, 372, 0, [ub, va, cb])))), s = A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]), f = 0, h = s.length; f < h; ++f) + for (c = s[f], t = A(T(R_, 1), G, 372, 0, [ub, va, cb]), i = 0, r = t.length; i < r; ++i) + e = t[i], Nke(n.b, c, e, new Z()); + } + function Vqn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (s = u(u(ot(n.r, e), 21), 87), f = n.u.Hc((zu(), Ia)), t = n.u.Hc(A9), i = n.u.Hc(T9), l = n.u.Hc(B3), d = n.B.Hc((io(), lO)), a = !t && !i && (l || s.gc() == 2), KTe(n, e), r = null, h = null, f) { + for (c = s.Kc(), r = u(c.Pb(), 117), h = r; c.Ob(); ) + h = u(c.Pb(), 117); + r.d.b = 0, h.d.c = 0, a && !r.a && (r.d.c = 0); + } + d && (Lye(s), f && (r.d.b = 0, h.d.c = 0)); + } + function Wqn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (s = u(u(ot(n.r, e), 21), 87), f = n.u.Hc((zu(), Ia)), t = n.u.Hc(A9), i = n.u.Hc(T9), h = n.u.Hc(B3), d = n.B.Hc((io(), lO)), l = !t && !i && (h || s.gc() == 2), sPe(n, e), a = null, r = null, f) { + for (c = s.Kc(), a = u(c.Pb(), 117), r = a; c.Ob(); ) + r = u(c.Pb(), 117); + a.d.d = 0, r.d.a = 0, l && !a.a && (a.d.a = 0); + } + d && (Nye(s), f && (a.d.d = 0, r.d.a = 0)); + } + function Jqn(n, e, t) { + var i, r, c, s, f, h, l, a; + if (r = e.k, e.p >= 0) + return !1; + if (e.p = t.b, nn(t.e, e), r == (Vn(), Mi) || r == Hc) { + for (s = new C(e.j); s.a < s.c.c.length; ) + for (c = u(E(s), 12), a = (i = new C(new ip(c).a.g), new $G(i)); tc(a.a); ) + if (l = u(E(a.a), 18).d, f = l.i, h = f.k, e.c != f.c && (h == Mi || h == Hc) && Jqn(n, f, t)) + return !0; + } + return !0; + } + function $A(n) { + var e; + return n.Db & 64 ? _nn(n) : (e = new ls(_nn(n)), e.a += " (changeable: ", ql(e, (n.Bb & Gs) != 0), e.a += ", volatile: ", ql(e, (n.Bb & Tw) != 0), e.a += ", transient: ", ql(e, (n.Bb & vw) != 0), e.a += ", defaultValueLiteral: ", Cr(e, n.j), e.a += ", unsettable: ", ql(e, (n.Bb & xu) != 0), e.a += ", derived: ", ql(e, (n.Bb & wh) != 0), e.a += ")", e.a); + } + function qAe(n, e) { + var t, i, r, c, s; + return r = e.qi(n.a), r && (i = (!r.b && (r.b = new lo((On(), ar), pc, r)), r.b), t = Oe(gf(i, Ji)), t != null && (c = t.lastIndexOf("#"), s = c == -1 ? rV(n, e.jk(), t) : c == 0 ? ok(n, null, (zn(1, t.length + 1), t.substr(1))) : ok(n, (Fi(0, c, t.length), t.substr(0, c)), (zn(c + 1, t.length + 1), t.substr(c + 1))), D(s, 156))) ? u(s, 156) : null; + } + function UAe(n, e) { + var t, i, r, c, s; + return i = e.qi(n.a), i && (t = (!i.b && (i.b = new lo((On(), ar), pc, i)), i.b), c = Oe(gf(t, PK)), c != null && (r = c.lastIndexOf("#"), s = r == -1 ? rV(n, e.jk(), c) : r == 0 ? ok(n, null, (zn(1, c.length + 1), c.substr(1))) : ok(n, (Fi(0, r, c.length), c.substr(0, r)), (zn(r + 1, c.length + 1), c.substr(r + 1))), D(s, 156))) ? u(s, 156) : null; + } + function GAe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (r = _Me(n.d), s = u(v(n.b, (C5(), aon)), 107), f = s.b + s.c, h = s.d + s.a, a = r.d.a * n.e + f, l = r.b.a * n.f + h, Vse(n.b, new V(a, l)), g = new C(n.g); g.a < g.c.c.length; ) + d = u(E(g), 568), e = d.g - r.a.a, t = d.i - r.c.a, i = it(rae(new V(e, t), d.a, d.b), ch(L6(Ki(PX(d.e)), d.d * d.a, d.c * d.b), -0.5)), c = IX(d.e), The(d.e, mi(i, c)); + } + function zAe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (e.Ug("Restoring reversed edges", 1), h = new C(n.b); h.a < h.c.c.length; ) + for (f = u(E(h), 30), a = new C(f.a); a.a < a.c.c.length; ) + for (l = u(E(a), 10), g = new C(l.j); g.a < g.c.c.length; ) + for (d = u(E(g), 12), s = hh(d.g), i = s, r = 0, c = i.length; r < c; ++r) + t = i[r], on(un(v(t, (W(), zf)))) && U0(t, !1); + e.Vg(); + } + function XAe(n, e, t, i) { + var r, c, s, f, h; + for (h = K(Ii, J, 109, (en(), A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn])).length, 0, 2), c = A(T(lr, 1), Tc, 64, 0, [sc, Xn, Zn, ae, Wn]), s = 0, f = c.length; s < f; ++s) + r = c[s], h[r.g] = K(Ii, Ar, 28, n.c[r.g], 15, 1); + return aKn(h, n, Xn), aKn(h, n, ae), Bx(h, n, Xn, e, t, i), Bx(h, n, Zn, e, t, i), Bx(h, n, ae, e, t, i), Bx(h, n, Wn, e, t, i), h; + } + function VAe(n, e, t) { + if (nu(n.a, e)) { + if (sf(u(ee(n.a, e), 49), t)) + return 1; + } else + Ve(n.a, e, new ni()); + if (nu(n.a, t)) { + if (sf(u(ee(n.a, t), 49), e)) + return -1; + } else + Ve(n.a, t, new ni()); + if (nu(n.b, e)) { + if (sf(u(ee(n.b, e), 49), t)) + return -1; + } else + Ve(n.b, e, new ni()); + if (nu(n.b, t)) { + if (sf(u(ee(n.b, t), 49), e)) + return 1; + } else + Ve(n.b, t, new ni()); + return 0; + } + function WAe(n) { + var e, t, i, r, c, s; + n.q == (Di(), tl) || n.q == Uc || (r = n.f.n.d + nM(u(Mr(n.b, (en(), Xn)), 127)) + n.c, e = n.f.n.a + nM(u(Mr(n.b, ae), 127)) + n.c, i = u(Mr(n.b, Zn), 127), s = u(Mr(n.b, Wn), 127), c = y.Math.max(0, i.n.d - r), c = y.Math.max(c, s.n.d - r), t = y.Math.max(0, i.n.a - e), t = y.Math.max(t, s.n.a - e), i.n.d = c, s.n.d = c, i.n.a = t, s.n.a = t); + } + function yen(n, e, t, i) { + var r, c, s, f, h, l; + if (t == null) { + for (r = u(n.g, 124), f = 0; f < n.i; ++f) + if (s = r[f], s.Lk() == e) + return cr(n, s, i); + } + return c = (br(), u(e, 69).xk() ? u(t, 76) : Fh(e, t)), fo(n.e) ? (l = !Fk(n, e), i = Vc(n, c, i), h = e.Jk() ? V1(n, 3, e, null, t, Om(n, e, t, D(e, 102) && (u(e, 19).Bb & hr) != 0), l) : V1(n, 1, e, e.ik(), t, -1, l), i ? i.nj(h) : i = h) : i = Vc(n, c, i), i; + } + function Qqn() { + this.b = new Ql(), this.d = new Ql(), this.e = new Ql(), this.c = new Ql(), this.a = new de(), this.f = new de(), Sg(Ei, new Tmn(), new Smn()), Sg(fan, new Rmn(), new Kmn()), Sg($on, new _mn(), new Hmn()), Sg(xon, new qmn(), new Umn()), Sg(woe, new Gmn(), new zmn()), Sg(oNe, new Pmn(), new Imn()), Sg(hNe, new Omn(), new Dmn()), Sg(sNe, new Lmn(), new Nmn()), Sg(fNe, new $mn(), new xmn()), Sg(dNe, new Fmn(), new Bmn()); + } + function R5(n, e) { + var t, i, r, c, s; + for (n = n == null ? pu : (Jn(n), n), r = 0; r < e.length; r++) + e[r] = GMe(e[r]); + for (t = new fg(), s = 0, i = 0; i < e.length && (c = n.indexOf("%s", s), c != -1); ) + t.a += "" + qo(n == null ? pu : (Jn(n), n), s, c), Lc(t, e[i++]), s = c + 2; + if (dDn(t, n, s, n.length), i < e.length) { + for (t.a += " [", Lc(t, e[i++]); i < e.length; ) + t.a += ur, Lc(t, e[i++]); + t.a += "]"; + } + return t.a; + } + function jen(n, e) { + var t, i, r, c, s, f, h; + for (t = 0, h = new C(e); h.a < h.c.c.length; ) { + for (f = u(E(h), 12), aY(n.b, n.d[f.p]), s = 0, r = new Df(f.b); tc(r.a) || tc(r.b); ) + i = u(tc(r.a) ? E(r.a) : E(r.b), 18), hIn(i) ? (c = Pz(n, f == i.c ? i.d : i.c), c > n.d[f.p] && (t += PJ(n.b, c), W1(n.a, Y(c)))) : ++s; + for (t += n.b.d * s; !t6(n.a); ) + sQ(n.b, u(Sp(n.a), 17).a); + } + return t; + } + function Yqn(n) { + var e, t, i, r, c, s; + return c = 0, e = gs(n), e.kk() && (c |= 4), n.Bb & xu && (c |= 2), D(n, 102) ? (t = u(n, 19), r = wr(t), t.Bb & yc && (c |= 32), r && (se(Gb(r)), c |= 8, s = r.t, (s > 1 || s == -1) && (c |= 16), r.Bb & yc && (c |= 64)), t.Bb & hr && (c |= Tw), c |= Gs) : D(e, 469) ? c |= 512 : (i = e.kk(), i && i.i & 1 && (c |= 256)), n.Bb & 512 && (c |= 128), c; + } + function JAe(n, e) { + var t; + return n.f == AU ? (t = y0(Lr((Lu(), zi), e)), n.e ? t == 4 && e != (n3(), _3) && e != (n3(), K3) && e != (n3(), SU) && e != (n3(), PU) : t == 2) : n.d && (n.d.Hc(e) || n.d.Hc($p(Lr((Lu(), zi), e))) || n.d.Hc(Qg((Lu(), zi), n.b, e))) ? !0 : n.f && cen((Lu(), n.f), q7(Lr(zi, e))) ? (t = y0(Lr(zi, e)), n.e ? t == 4 : t == 2) : !1; + } + function QAe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + for (g = -1, p = 0, l = n, a = 0, d = l.length; a < d; ++a) { + for (h = l[a], c = h, s = 0, f = c.length; s < f; ++s) + for (r = c[s], e = new ADn(g == -1 ? n[0] : n[g], u(v(Hi(r), (cn(), Yh)), 284), cKn(r), on(un(v(Hi(r), vH)))), t = 0; t < r.j.c.length; t++) + for (i = t + 1; i < r.j.c.length; i++) + PPn(e, u(sn(r.j, t), 12), u(sn(r.j, i), 12)) > 0 && ++p; + ++g; + } + return p; + } + function YAe(n, e, t, i) { + var r, c, s, f, h, l, a, d; + return s = u(z(t, (He(), N3)), 8), h = s.a, a = s.b + n, r = y.Math.atan2(a, h), r < 0 && (r += Cd), r += e, r > Cd && (r -= Cd), f = u(z(i, N3), 8), l = f.a, d = f.b + n, c = y.Math.atan2(d, l), c < 0 && (c += Cd), c += e, c > Cd && (c -= Cd), Tf(), Ks(1e-10), y.Math.abs(r - c) <= 1e-10 || r == c || isNaN(r) && isNaN(c) ? 0 : r < c ? -1 : r > c ? 1 : s0(isNaN(r), isNaN(c)); + } + function CF(n) { + var e, t, i, r, c, s, f; + for (f = new de(), i = new C(n.a.b); i.a < i.c.c.length; ) + e = u(E(i), 60), Ve(f, e, new Z()); + for (r = new C(n.a.b); r.a < r.c.c.length; ) + for (e = u(E(r), 60), e.i = li, s = e.c.Kc(); s.Ob(); ) + c = u(s.Pb(), 60), u(Kr(gr(f.f, c)), 15).Fc(e); + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 60), e.c.$b(), e.c = u(Kr(gr(f.f, e)), 15); + kqn(n); + } + function MF(n) { + var e, t, i, r, c, s, f; + for (f = new de(), i = new C(n.a.b); i.a < i.c.c.length; ) + e = u(E(i), 86), Ve(f, e, new Z()); + for (r = new C(n.a.b); r.a < r.c.c.length; ) + for (e = u(E(r), 86), e.o = li, s = e.f.Kc(); s.Ob(); ) + c = u(s.Pb(), 86), u(Kr(gr(f.f, c)), 15).Fc(e); + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), e.f.$b(), e.f = u(Kr(gr(f.f, e)), 15); + oqn(n); + } + function ZAe(n, e, t, i) { + var r, c; + for (ike(n, e, t, i), Wse(e, n.j - e.j + t), Jse(e, n.k - e.k + i), c = new C(e.f); c.a < c.c.c.length; ) + switch (r = u(E(c), 334), r.a.g) { + case 0: + em(n, e.g + r.b.a, 0, e.g + r.c.a, e.i - 1); + break; + case 1: + em(n, e.g + e.o, e.i + r.b.a, n.o - 1, e.i + r.c.a); + break; + case 2: + em(n, e.g + r.b.a, e.i + e.p, e.g + r.c.a, n.p - 1); + break; + default: + em(n, 0, e.i + r.b.a, e.g - 1, e.i + r.c.a); + } + } + function nSe(n, e) { + var t, i, r, c, s, f, h, l; + for (c = new Z(), e.b.c.length = 0, t = u(Wr(hJ(new Tn(null, new In(new qa(n.a.b), 1))), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), r = t.Kc(); r.Ob(); ) + if (i = u(r.Pb(), 17), s = jJ(n.a, i), s.b != 0) + for (f = new Nc(e), Kn(c.c, f), f.p = i.a, l = ge(s, 0); l.b != l.d.c; ) + h = u(be(l), 10), $i(h, f); + hi(e.b, c); + } + function xA(n, e, t, i, r) { + var c, s, f; + try { + if (e >= n.o) + throw M(new ZG()); + f = e >> 5, s = e & 31, c = Bs(1, Ae(Bs(s, 1))), r ? n.n[t][f] = lf(n.n[t][f], c) : n.n[t][f] = vi(n.n[t][f], JV(c)), c = Bs(c, 1), i ? n.n[t][f] = lf(n.n[t][f], c) : n.n[t][f] = vi(n.n[t][f], JV(c)); + } catch (h) { + throw h = It(h), D(h, 333) ? M(new Ir(GB + n.o + "*" + n.p + zB + e + ur + t + XB)) : M(h); + } + } + function eSe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g; + for (g = new Ul(new X7n(n)), f = A(T(Qh, 1), b1, 10, 0, [e, t]), h = 0, l = f.length; h < l; ++h) + for (s = f[h], d = g5(s, i).Kc(); d.Ob(); ) + for (a = u(d.Pb(), 12), c = new Df(a.b); tc(c.a) || tc(c.b); ) + r = u(tc(c.a) ? E(c.a) : E(c.b), 18), fr(r) || (g.a.zc(a, (_n(), ga)) == null, hIn(r) && R7(g, a == r.c ? r.d : r.c)); + return Se(g), new _u(g); + } + function Een(n, e, t, i) { + var r, c, s; + e && (c = $(R(v(e, (pt(), j1)))) + i, s = t + $(R(v(e, xI))) / 2, U(e, $j, Y(Ae(kc(y.Math.round(c))))), U(e, xj, Y(Ae(kc(y.Math.round(s))))), e.d.b == 0 || Een(n, u(NC((r = ge(new sl(e).a.d, 0), new sg(r))), 40), t + $(R(v(e, xI))) + n.b, i + $(R(v(e, Lv)))), v(e, oq) != null && Een(n, u(v(e, oq), 40), t, i)); + } + function tSe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (h = Hi(e.a), r = $(R(v(h, (cn(), Bd)))) * 2, a = $(R(v(h, A2))), l = y.Math.max(r, a), c = K(Ii, Ar, 28, e.f - e.c + 1, 15, 1), i = -l, t = 0, f = e.b.Kc(); f.Ob(); ) + s = u(f.Pb(), 10), i += n.a[s.c.p] + l, c[t++] = i; + for (i += n.a[e.a.c.p] + l, c[t++] = i, g = new C(e.e); g.a < g.c.c.length; ) + d = u(E(g), 10), i += n.a[d.c.p] + l, c[t++] = i; + return c; + } + function iSe(n, e) { + var t, i, r, c; + if (c = u(z(n, (He(), H2)), 64).g - u(z(e, H2), 64).g, c != 0) + return c; + if (t = u(z(n, oU), 17), i = u(z(e, oU), 17), t && i && (r = t.a - i.a, r != 0)) + return r; + switch (u(z(n, H2), 64).g) { + case 1: + return bt(n.i, e.i); + case 2: + return bt(n.j, e.j); + case 3: + return bt(e.i, n.i); + case 4: + return bt(e.j, n.j); + default: + throw M(new Or(rin)); + } + } + function Cen(n) { + var e, t, i; + return n.Db & 64 ? iF(n) : (e = new mo(Mcn), t = n.k, t ? Re(Re((e.a += ' "', e), t), '"') : (!n.n && (n.n = new q(Sr, n, 1, 7)), n.n.i > 0 && (i = (!n.n && (n.n = new q(Sr, n, 1, 7)), u(L(n.n, 0), 135)).a, !i || Re(Re((e.a += ' "', e), i), '"'))), Re(t0(Re(t0(Re(t0(Re(t0((e.a += " (", e), n.i), ","), n.j), " | "), n.g), ","), n.f), ")"), e.a); + } + function Zqn(n) { + var e, t, i; + return n.Db & 64 ? iF(n) : (e = new mo(Tcn), t = n.k, t ? Re(Re((e.a += ' "', e), t), '"') : (!n.n && (n.n = new q(Sr, n, 1, 7)), n.n.i > 0 && (i = (!n.n && (n.n = new q(Sr, n, 1, 7)), u(L(n.n, 0), 135)).a, !i || Re(Re((e.a += ' "', e), i), '"'))), Re(t0(Re(t0(Re(t0(Re(t0((e.a += " (", e), n.i), ","), n.j), " | "), n.g), ","), n.f), ")"), e.a); + } + function rSe(n, e) { + var t, i, r, c, s; + for (e == (a5(), XH) && Yk(u(ot(n.a, (ow(), gj)), 15)), r = u(ot(n.a, (ow(), gj)), 15).Kc(); r.Ob(); ) + switch (i = u(r.Pb(), 105), t = u(sn(i.j, 0), 113).d.j, c = new _u(i.j), Yt(c, new dpn()), e.g) { + case 2: + Qx(n, c, t, (D0(), va), 1); + break; + case 1: + case 0: + s = UMe(c), Qx(n, new Jl(c, 0, s), t, (D0(), va), 0), Qx(n, new Jl(c, s, c.c.length), t, va, 1); + } + } + function TF(n, e) { + var t, i, r, c, s, f, h; + if (e == null || e.length == 0) + return null; + if (r = u($c(n.a, e), 143), !r) { + for (i = (f = new ol(n.b).a.vc().Kc(), new Sb(f)); i.a.Ob(); ) + if (t = (c = u(i.a.Pb(), 44), u(c.md(), 143)), s = t.c, h = e.length, An(s.substr(s.length - h, h), e) && (e.length == s.length || Xi(s, s.length - e.length - 1) == 46)) { + if (r) + return null; + r = t; + } + r && Dr(n.a, e, r); + } + return r; + } + function cSe(n, e) { + var t, i, r, c; + return t = new Abn(), i = u(Wr(_r(new Tn(null, new In(n.f, 16)), t), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [(Gu(), Aw), Yr]))), 21), r = i.gc(), i = u(Wr(_r(new Tn(null, new In(e.f, 16)), t), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [Aw, Yr]))), 21), c = i.gc(), r < c ? -1 : r == c ? 0 : 1; + } + function nUn(n) { + var e, t, i; + kt(n, (cn(), ab)) && (i = u(v(n, ab), 21), !i.dc() && (t = (e = u(of(jr), 9), new _o(e, u(xs(e, e.length), 9), 0)), i.Hc((lw(), Lo)) ? _s(t, Lo) : _s(t, Zs), i.Hc(Cs) || _s(t, Cs), i.Hc(Qs) ? _s(t, nf) : i.Hc(xl) ? _s(t, el) : i.Hc(Ys) && _s(t, Ms), i.Hc(nf) ? _s(t, Qs) : i.Hc(el) ? _s(t, xl) : i.Hc(Ms) && _s(t, Ys), U(n, ab, t))); + } + function uSe(n) { + var e, t, i, r, c, s, f; + for (r = u(v(n, (W(), sb)), 10), i = n.j, t = (Ln(0, i.c.length), u(i.c[0], 12)), s = new C(r.j); s.a < s.c.c.length; ) + if (c = u(E(s), 12), x(c) === x(v(t, st))) { + c.j == (en(), Xn) && n.p > r.p ? (gi(c, ae), c.d && (f = c.o.b, e = c.a.b, c.a.b = f - e)) : c.j == ae && r.p > n.p && (gi(c, Xn), c.d && (f = c.o.b, e = c.a.b, c.a.b = -(f - e))); + break; + } + return r; + } + function fy(n, e, t, i, r) { + var c, s, f, h, l, a, d; + if (!(D(e, 207) || D(e, 366) || D(e, 193))) + throw M(new Gn("Method only works for ElkNode-, ElkLabel and ElkPort-objects.")); + return s = n.a / 2, h = e.i + i - s, a = e.j + r - s, l = h + e.g + n.a, d = a + e.f + n.a, c = new Tu(), Fe(c, new V(h, a)), Fe(c, new V(h, d)), Fe(c, new V(l, d)), Fe(c, new V(l, a)), f = new bF(c), Ur(f, e), t && Ve(n.b, e, f), f; + } + function Sm(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (c = new V(e, t), a = new C(n.a); a.a < a.c.c.length; ) + for (l = u(E(a), 10), it(l.n, c), g = new C(l.j); g.a < g.c.c.length; ) + for (d = u(E(g), 12), r = new C(d.g); r.a < r.c.c.length; ) + for (i = u(E(r), 18), nw(i.a, c), s = u(v(i, (cn(), Fr)), 75), s && nw(s, c), h = new C(i.b); h.a < h.c.c.length; ) + f = u(E(h), 72), it(f.n, c); + } + function oSe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (c = new V(e, t), a = new C(n.a); a.a < a.c.c.length; ) + for (l = u(E(a), 10), it(l.n, c), g = new C(l.j); g.a < g.c.c.length; ) + for (d = u(E(g), 12), r = new C(d.g); r.a < r.c.c.length; ) + for (i = u(E(r), 18), nw(i.a, c), s = u(v(i, (cn(), Fr)), 75), s && nw(s, c), h = new C(i.b); h.a < h.c.c.length; ) + f = u(E(h), 72), it(f.n, c); + } + function eUn(n) { + if ((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i == 0) + throw M(new hp("Edges must have a source.")); + if ((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i == 0) + throw M(new hp("Edges must have a target.")); + if (!n.b && (n.b = new Nn(he, n, 4, 7)), !(n.b.i <= 1 && (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c.i <= 1))) + throw M(new hp("Hyperedges are not supported.")); + } + function Men(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (d = 0, c = new Cg(), W1(c, e); c.b != c.c; ) + for (h = u(Sp(c), 219), l = 0, a = u(v(e.j, (cn(), Yh)), 284), s = $(R(v(e.j, hI))), f = $(R(v(e.j, _fn))), a != (lh(), k1) && (l += s * hMe(h.e, a), l += f * QAe(h.e)), d += WRn(h.d, h.e) + l, r = new C(h.b); r.a < r.c.c.length; ) + i = u(E(r), 36), t = u(sn(n.b, i.p), 219), t.s || (d += kA(n, t)); + return d; + } + function dh() { + dh = F; + var n; + for (sP = new gl(1, 1), YK = new gl(1, 10), S8 = new gl(0, 0), kQn = new gl(-1, 1), yQn = A(T(l2, 1), J, 92, 0, [S8, sP, new gl(1, 2), new gl(1, 3), new gl(1, 4), new gl(1, 5), new gl(1, 6), new gl(1, 7), new gl(1, 8), new gl(1, 9), YK]), fP = K(l2, J, 92, 32, 0, 1), n = 0; n < fP.length; n++) + fP[n] = AC(Bs(1, n), 0) ? ia(Bs(1, n)) : U6(ia(n1(Bs(1, n)))); + } + function tUn(n, e, t, i, r, c, s) { + if (n.c = i.Lf().a, n.d = i.Lf().b, r && (n.c += r.Lf().a, n.d += r.Lf().b), n.b = e.Mf().a, n.a = e.Mf().b, !r) + t ? n.c -= s + e.Mf().a : n.c += i.Mf().a + s; + else + switch (r.ag().g) { + case 0: + case 2: + n.c += r.Mf().a + s + c.a + s; + break; + case 4: + n.c -= s + c.a + s + e.Mf().a; + break; + case 1: + n.c += r.Mf().a + s, n.d -= s + c.b + s + e.Mf().b; + break; + case 3: + n.c += r.Mf().a + s, n.d += r.Mf().b + s + c.b + s; + } + } + function iUn(n, e) { + var t, i; + for (this.b = new Z(), this.e = new Z(), this.a = n, this.d = e, C9e(this), I8e(this), this.b.dc() ? this.c = n.c.p : this.c = u(this.b.Xb(0), 10).c.p, this.e.c.length == 0 ? this.f = n.c.p : this.f = u(sn(this.e, this.e.c.length - 1), 10).c.p, i = u(v(n, (W(), K8)), 15).Kc(); i.Ob(); ) + if (t = u(i.Pb(), 72), kt(t, (cn(), dI))) { + this.d = u(v(t, dI), 232); + break; + } + } + function Pm(n, e, t) { + var i, r, c, s, f, h, l, a; + for (i = u(ee(n.a, e), 49), c = u(ee(n.a, t), 49), r = u(ee(n.e, e), 49), s = u(ee(n.e, t), 49), i.a.zc(t, i), s.a.zc(e, s), a = c.a.ec().Kc(); a.Ob(); ) + l = u(a.Pb(), 10), i.a.zc(l, i), fi(u(ee(n.e, l), 49), e), Bi(u(ee(n.e, l), 49), r); + for (h = r.a.ec().Kc(); h.Ob(); ) + f = u(h.Pb(), 10), s.a.zc(f, s), fi(u(ee(n.a, f), 49), t), Bi(u(ee(n.a, f), 49), c); + } + function hy(n, e, t) { + var i, r, c, s, f, h, l, a; + for (i = u(ee(n.a, e), 49), c = u(ee(n.a, t), 49), r = u(ee(n.b, e), 49), s = u(ee(n.b, t), 49), i.a.zc(t, i), s.a.zc(e, s), a = c.a.ec().Kc(); a.Ob(); ) + l = u(a.Pb(), 10), i.a.zc(l, i), fi(u(ee(n.b, l), 49), e), Bi(u(ee(n.b, l), 49), r); + for (h = r.a.ec().Kc(); h.Ob(); ) + f = u(h.Pb(), 10), s.a.zc(f, s), fi(u(ee(n.a, f), 49), t), Bi(u(ee(n.a, f), 49), c); + } + function ns(n, e, t) { + var i, r, c, s, f, h, l, a; + for (i = u(ee(n.a, e), 49), c = u(ee(n.a, t), 49), r = u(ee(n.d, e), 49), s = u(ee(n.d, t), 49), i.a.zc(t, i), s.a.zc(e, s), a = c.a.ec().Kc(); a.Ob(); ) + l = u(a.Pb(), 12), i.a.zc(l, i), fi(u(ee(n.d, l), 49), e), Bi(u(ee(n.d, l), 49), r); + for (h = r.a.ec().Kc(); h.Ob(); ) + f = u(h.Pb(), 12), s.a.zc(f, s), fi(u(ee(n.a, f), 49), t), Bi(u(ee(n.a, f), 49), c); + } + function sSe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + if (c = t, t < i) + for (g = (p = new yk(n.p), m = new yk(n.p), Bi(p.e, n.e), p.q = n.q, p.r = m, mM(p), Bi(m.j, n.j), m.r = p, mM(m), new bi(p, m)), d = u(g.a, 118), a = u(g.b, 118), r = (Ln(c, e.c.length), u(e.c[c], 339)), s = Dqn(n, d, a, r), l = t + 1; l <= i; l++) + f = (Ln(l, e.c.length), u(e.c[l], 339)), h = Dqn(n, d, a, f), E9e(f, h, r, s) && (r = f, s = h, c = l); + return c; + } + function fSe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + for (s = u(L(e, 0), 27), tu(s, 0), iu(s, 0), g = new Z(), Kn(g.c, s), f = s, c = new rW(n.a, s.g, s.f, (x5(), _j)), p = 1; p < e.i; p++) + m = u(L(e, p), 27), h = FF(n, N2, m, f, c, g, t), l = FF(n, D3, m, f, c, g, t), a = FF(n, d9, m, f, c, g, t), d = FF(n, a9, m, f, c, g, t), r = BIe(n, h, l, a, d, m, f, i), tu(m, r.d), iu(m, r.e), afe(r, _j), c = r, f = m, Kn(g.c, m); + return c; + } + function hSe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + if (a = null, g = e, d = zDn(n, xDn(t), g), X4(d, bl(g, Eh)), s = A0(g, Scn), i = new mMn(n, d), LEe(i.a, i.b, s), f = A0(g, pK), r = new vMn(n, d), NEe(r.a, r.b, f), (!d.b && (d.b = new Nn(he, d, 4, 7)), d.b).i == 0 || (!d.c && (d.c = new Nn(he, d, 5, 8)), d.c).i == 0) + throw c = bl(g, Eh), h = kWn + c, l = h + iv, M(new eh(l)); + return gA(g, d), bLe(n, g, d), a = _$(n, g, d), a; + } + function lSe(n, e) { + var t, i, r, c, s, f, h; + for (r = K(ye, _e, 28, n.e.a.c.length, 15, 1), s = new C(n.e.a); s.a < s.c.c.length; ) + c = u(E(s), 125), r[c.d] += c.b.a.c.length; + for (f = $7(e); f.b != 0; ) + for (c = u(f.b == 0 ? null : (oe(f.b != 0), Xo(f, f.a.a)), 125), i = Kp(new C(c.g.a)); i.Ob(); ) + t = u(i.Pb(), 218), h = t.e, h.e = y.Math.max(h.e, c.e + t.a), --r[h.d], r[h.d] == 0 && Kt(f, h, f.c.b, f.c); + } + function rUn(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (t = Wi, r = tt, f = new C(n.e.a); f.a < f.c.c.length; ) + c = u(E(f), 125), r = y.Math.min(r, c.e), t = y.Math.max(t, c.e); + for (e = K(ye, _e, 28, t - r + 1, 15, 1), s = new C(n.e.a); s.a < s.c.c.length; ) + c = u(E(s), 125), c.e -= r, ++e[c.e]; + if (i = 0, n.k != null) + for (l = n.k, a = 0, d = l.length; a < d && (h = l[a], e[i++] += h, e.length != i); ++a) + ; + return e; + } + function aSe(n, e) { + var t, i, r, c, s, f; + if (e.Ug("Edge routing", 1), r = u(v(n, (lc(), sq)), 392), r == (d5(), nq)) + O4e(n); + else if (r == Lj) + for (u(ho(im(ut(new Tn(null, new In(n.b, 16)), new V3n()))), 40), c = $(R(v(n, Nln))), s = $(R(v(n, Pln))), f = u(v(n, vb), 88), pLe(n, f, c), VLe(n, f, c, s), YLe(n, f, c, s), i = ge(n.a, 0); i.b != i.d.c; ) + t = u(be(i), 65), t.a.b < 2 && Lnn(t); + e.Vg(); + } + function cUn(n) { + switch (n.d) { + case 9: + case 8: + return !0; + case 3: + case 5: + case 4: + case 6: + return !1; + case 7: + return u(den(n), 17).a == n.o; + case 1: + case 2: { + if (n.o == -2) + return !1; + switch (n.p) { + case 0: + case 1: + case 2: + case 6: + case 5: + case 7: + return o0(n.k, n.f); + case 3: + case 4: + return n.j == n.e; + default: + return n.n == null ? n.g == null : ct(n.n, n.g); + } + } + default: + return !1; + } + } + function dSe(n, e) { + var t, i, r; + switch (e.Ug("Breaking Point Insertion", 1), i = new Xnn(n), u(v(n, (cn(), LH)), 351).g) { + case 2: + r = new QU(); + break; + case 0: + r = new VU(); + break; + default: + r = new YU(); + } + if (t = r.og(n, i), on(un(v(n, Mhn))) && (t = tOe(n, t)), !r.pg() && kt(n, jI)) + switch (u(v(n, jI), 352).g) { + case 2: + t = B_n(i, t); + break; + case 1: + t = PKn(i, t); + } + if (t.dc()) { + e.Vg(); + return; + } + jLe(n, t), e.Vg(); + } + function uUn(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (c = new zc(e.c.length), l = new C(e); l.a < l.c.c.length; ) + s = u(E(l), 10), nn(c, n.b[s.c.p][s.p]); + for (QIe(n, c, t), d = null; d = HOe(c); ) + OPe(n, u(d.a, 239), u(d.b, 239), c); + for (e.c.length = 0, r = new C(c); r.a < r.c.c.length; ) + for (i = u(E(r), 239), f = i.d, h = 0, a = f.length; h < a; ++h) + s = f[h], Kn(e.c, s), n.a[s.c.p][s.p].a = Af(i.g, i.d[0]).a; + } + function oUn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), a8), "ELK Fixed"), "Keeps the current layout as it is, without any automatic modification. Optional coordinates can be given for nodes and edge bend points."), new Vmn()))), Q(n, a8, W0, ldn), Q(n, a8, TS, rn(j9)), Q(n, a8, mcn, rn(odn)), Q(n, a8, r2, rn(sdn)), Q(n, a8, d3, rn(hdn)), Q(n, a8, zm, rn(fdn)); + } + function FA(n, e, t) { + var i, r, c, s, f; + if (i = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), f = Ae(er(Uh, xh(Ae(er(t == null ? 0 : mt(t), Gh)), 15))), c = u5(n, e, i), c && f == c.f && sh(t, c.i)) + return t; + if (s = o5(n, t, f), s) + throw M(new Gn("value already present: " + t)); + return r = new kM(e, i, t, f), c ? (zg(n, c), ny(n, r, c), c.e = null, c.c = null, c.i) : (ny(n, r, null), dKn(n), null); + } + function bSe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + a = t.a.c, s = t.a.c + t.a.b, c = u(ee(t.c, e), 468), p = c.f, m = c.a, c.b ? h = new V(s, p) : h = new V(a, p), c.c ? d = new V(a, m) : d = new V(s, m), r = a, t.p || (r += n.c), r += t.F + t.v * n.b, l = new V(r, p), g = new V(r, m), r5(e.a, A(T(Ei, 1), J, 8, 0, [h, l])), f = t.d.a.gc() > 1, f && (i = new V(r, t.b), Fe(e.a, i)), r5(e.a, A(T(Ei, 1), J, 8, 0, [g, d])); + } + function ps() { + ps = F, AI = new Lb(kh, 0), Sj = new Lb("NIKOLOV", 1), Pj = new Lb("NIKOLOV_PIXEL", 2), Bhn = new Lb("NIKOLOV_IMPROVED", 3), Rhn = new Lb("NIKOLOV_IMPROVED_PIXEL", 4), Fhn = new Lb("DUMMYNODE_PERCENTAGE", 5), Khn = new Lb("NODECOUNT_PERCENTAGE", 6), SI = new Lb("NO_BOUNDARY", 7), pb = new Lb("MODEL_ORDER_LEFT_TO_RIGHT", 8), Uw = new Lb("MODEL_ORDER_RIGHT_TO_LEFT", 9); + } + function wSe(n) { + var e, t, i, r, c; + for (i = n.length, e = new i6(), c = 0; c < i; ) + if (t = Xi(n, c++), !(t == 9 || t == 10 || t == 12 || t == 13 || t == 32)) { + if (t == 35) { + for (; c < i && (t = Xi(n, c++), !(t == 13 || t == 10)); ) + ; + continue; + } + t == 92 && c < i ? (r = (zn(c, n.length), n.charCodeAt(c))) == 35 || r == 9 || r == 10 || r == 12 || r == 13 || r == 32 ? (T4(e, r & ui), ++c) : (e.a += "\\", T4(e, r & ui), ++c) : T4(e, t & ui); + } + return e.a; + } + function Ten() { + Ten = F, Xre = new Mn(_rn, (_n(), !1)), Qre = new Mn(Hrn, Y(0)), Yre = new Mn(qrn, 0), Zre = new Mn(LS, !1), zln = (Pk(), KI), Wre = new Mn(zR, zln), Y(0), Vre = new Mn(XR, Y(1)), Vln = (AT(), Cq), ice = new Mn(Urn, Vln), Wln = (ZM(), vq), rce = new Mn(Grn, Wln), Xln = (sA(), Eq), Jre = new Mn(zrn, Xln), tce = new Mn(VR, 0), nce = new Mn(WR, !1), ece = new Mn(Xrn, !1); + } + function gSe(n, e) { + var t, i, r; + for (i = new C(e); i.a < i.c.c.length; ) + if (t = u(E(i), 27), Pn(n.a, t, t), Pn(n.b, t, t), r = aw(t), r.c.length != 0) + for (n.d && n.d.Gg(r), Pn(n.a, t, (Ln(0, r.c.length), u(r.c[0], 27))), Pn(n.b, t, u(sn(r, r.c.length - 1), 27)); B$(r).c.length != 0; ) + r = B$(r), n.d && n.d.Gg(r), Pn(n.a, t, (Ln(0, r.c.length), u(r.c[0], 27))), Pn(n.b, t, u(sn(r, r.c.length - 1), 27)); + } + function AF(n, e, t) { + var i, r, c, s, f, h; + if (e) + if (t <= -1) { + if (i = $n(e.Dh(), -1 - t), D(i, 102)) + return u(i, 19); + for (s = u(e.Mh(i), 160), f = 0, h = s.gc(); f < h; ++f) + if (x(s.Ul(f)) === x(n) && (r = s.Tl(f), D(r, 102) && (c = u(r, 19), c.Bb & yc))) + return c; + throw M(new Or("The containment feature could not be located")); + } else + return wr(u($n(n.Dh(), t), 19)); + else + return null; + } + function pSe(n) { + var e, t, i, r, c, s, f, h, l, a; + for (t = 0, f = new C(n.d); f.a < f.c.c.length; ) + s = u(E(f), 105), s.i && (s.i.c = t++); + for (e = Wa(so, [J, Xh], [183, 28], 16, [t, t], 2), a = n.d, r = 0; r < a.c.length; r++) + if (h = (Ln(r, a.c.length), u(a.c[r], 105)), h.i) + for (c = r + 1; c < a.c.length; c++) + l = (Ln(c, a.c.length), u(a.c[c], 105)), l.i && (i = qye(h, l), e[h.i.c][l.i.c] = i, e[l.i.c][h.i.c] = i); + return e; + } + function Aen() { + Aen = F, Tce = new Mn(Jrn, (_n(), !1)), Y(-1), kce = new Mn(Qrn, Y(-1)), Y(-1), yce = new Mn(Yrn, Y(-1)), jce = new Mn(Zrn, !1), g1n = (GM(), $q), Ice = new Mn(ncn, g1n), Oce = new Mn(ecn, -1), w1n = (_T(), Oq), Pce = new Mn(tcn, w1n), Sce = new Mn(icn, !0), b1n = (nT(), xq), Mce = new Mn(rcn, b1n), Cce = new Mn(ccn, !1), Y(1), Ece = new Mn(ucn, Y(1)), Ace = new lt(ocn); + } + function K5() { + K5 = F, ZH = new u0("ROOT_PROC", 0), fln = new u0("FAN_PROC", 1), dln = new u0("LEVEL_PROC", 2), bln = new u0("NEIGHBORS_PROC", 3), aln = new u0("LEVEL_HEIGHT", 4), sln = new u0("DIRECTION_PROC", 5), wln = new u0("NODE_POSITION_PROC", 6), uln = new u0("COMPACTION_PROC", 7), lln = new u0("LEVEL_COORDS", 8), hln = new u0("GRAPH_BOUNDS_PROC", 9), oln = new u0("DETREEIFYING_PROC", 10); + } + function Sen(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (d = Hr(e), l = null, r = !1, f = 0, a = Pc(d.a).i; f < a; ++f) + s = u(py(d, f, (c = u(L(Pc(d.a), f), 89), h = c.c, D(h, 90) ? u(h, 29) : (On(), Is))), 29), t = Sen(n, s), t.dc() || (l ? (r || (r = !0, l = new sM(l)), l.Gc(t)) : l = t); + return i = AEe(n, e), i.dc() ? l || (Dn(), Dn(), sr) : l ? (r || (l = new sM(l)), l.Gc(i), l) : i; + } + function SF(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (d = Hr(e), l = null, i = !1, f = 0, a = Pc(d.a).i; f < a; ++f) + c = u(py(d, f, (r = u(L(Pc(d.a), f), 89), h = r.c, D(h, 90) ? u(h, 29) : (On(), Is))), 29), t = SF(n, c), t.dc() || (l ? (i || (i = !0, l = new sM(l)), l.Gc(t)) : l = t); + return s = hCe(n, e), s.dc() ? l || (Dn(), Dn(), sr) : l ? (i || (l = new sM(l)), l.Gc(s), l) : s; + } + function mSe(n) { + var e, t, i, r; + i = n.o, Bb(), n.A.dc() || ct(n.A, con) ? r = i.a : (r = ty(n.f), n.A.Hc((go(), iE)) && !n.B.Hc((io(), P9)) && (r = y.Math.max(r, ty(u(Mr(n.p, (en(), Xn)), 252))), r = y.Math.max(r, ty(u(Mr(n.p, ae), 252)))), e = Rxn(n), e && (r = y.Math.max(r, e.a))), on(un(n.e.Tf().of((He(), Vw)))) ? i.a = y.Math.max(i.a, r) : i.a = r, t = n.f.i, t.c = 0, t.b = r, LF(n.f); + } + function ly(n, e, t) { + var i, r, c, s, f, h; + if (D(e, 76)) + return cr(n, e, t); + for (f = null, c = null, i = u(n.g, 124), s = 0; s < n.i; ++s) + if (r = i[s], ct(e, r.md()) && (c = r.Lk(), D(c, 102) && u(c, 19).Bb & yc)) { + f = r; + break; + } + return f && (fo(n.e) && (h = c.Jk() ? V1(n, 4, c, e, null, Om(n, c, e, D(c, 102) && (u(c, 19).Bb & hr) != 0), !0) : V1(n, c.tk() ? 2 : 1, c, e, c.ik(), -1, !0), t ? t.nj(h) : t = h), t = ly(n, f, t)), t; + } + function vSe(n, e, t) { + var i, r, c, s; + if (s = cu(n.e.Dh(), e), i = u(n.g, 124), br(), u(e, 69).xk()) { + for (c = 0; c < n.i; ++c) + if (r = i[c], s.am(r.Lk()) && ct(r, t)) + return dw(n, c), !0; + } else if (t != null) { + for (c = 0; c < n.i; ++c) + if (r = i[c], s.am(r.Lk()) && ct(t, r.md())) + return dw(n, c), !0; + } else + for (c = 0; c < n.i; ++c) + if (r = i[c], s.am(r.Lk()) && r.md() == null) + return dw(n, c), !0; + return !1; + } + function kSe(n, e) { + var t, i, r, c, s; + if (e.Ug("Node and Port Label Placement and Node Sizing", 1), bTn((u6(), new kN(n, !0, !0, new Cgn()))), u(v(n, (W(), qc)), 21).Hc((mr(), cs))) + for (c = u(v(n, (cn(), _w)), 21), r = c.Hc((zu(), tE)), s = on(un(v(n, whn))), i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 30), Gt(ut(new Tn(null, new In(t.a, 16)), new Mgn()), new vSn(c, r, s)); + e.Vg(); + } + function ySe(n, e) { + var t, i, r, c, s; + for (n.c == null || n.c.length < e.c.length ? n.c = K(so, Xh, 28, e.c.length, 16, 1) : e6(n.c), n.a = new Z(), i = 0, s = new C(e); s.a < s.c.c.length; ) + r = u(E(s), 10), r.p = i++; + for (t = new Ct(), c = new C(e); c.a < c.c.c.length; ) + r = u(E(c), 10), n.c[r.p] || (H_n(n, r), t.b == 0 || (oe(t.b != 0), u(t.a.a.c, 15)).gc() < n.a.c.length ? gg(t, n.a) : ir(t, n.a), n.a = new Z()); + return t; + } + function sUn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), Ym), "ELK SPOrE Overlap Removal"), 'A node overlap removal algorithm proposed by Nachmanson et al. in "Node overlap removal by growing a tree".'), new wmn()))), Q(n, Ym, YR, rn(tan)), Q(n, Ym, W0, ean), Q(n, Ym, yw, 8), Q(n, Ym, eK, rn(lue)), Q(n, Ym, dcn, rn(Z1n)), Q(n, Ym, bcn, rn(nan)), Q(n, Ym, Uy, (_n(), !1)); + } + function jSe(n, e) { + var t, i, r, c, s, f, h; + if (t = e.qi(n.a), t && (h = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), Jcn)), h != null)) { + for (i = new Z(), c = ww(h, "\\w"), s = 0, f = c.length; s < f; ++s) + r = c[s], An(r, "##other") ? nn(i, "!##" + R6(n, jo(e.qk()))) : An(r, "##local") ? i.c.push(null) : An(r, Yy) ? nn(i, R6(n, jo(e.qk()))) : Kn(i.c, r); + return i; + } + return Dn(), Dn(), sr; + } + function fUn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p; + for (s = a0(e.c, t, i), d = new C(e.a); d.a < d.c.c.length; ) { + for (a = u(E(d), 10), it(a.n, s), p = new C(a.j); p.a < p.c.c.length; ) + for (g = u(E(p), 12), c = new C(g.g); c.a < c.c.c.length; ) + for (r = u(E(c), 18), nw(r.a, s), f = u(v(r, (cn(), Fr)), 75), f && nw(f, s), l = new C(r.b); l.a < l.c.c.length; ) + h = u(E(l), 72), it(h.n, s); + nn(n.a, a), a.a = n; + } + } + function ay(n) { + var e, t, i, r, c, s, f, h; + if (n.d) + throw M(new Or((ll(S_), FB + S_.k + BB))); + for (n.c == (ci(), Jf) && Yg(n, Br), t = new C(n.a.a); t.a < t.c.c.length; ) + e = u(E(t), 194), e.e = 0; + for (s = new C(n.a.b); s.a < s.c.c.length; ) + for (c = u(E(s), 86), c.o = li, r = c.f.Kc(); r.Ob(); ) + i = u(r.Pb(), 86), ++i.d.e; + for (yDe(n), h = new C(n.a.b); h.a < h.c.c.length; ) + f = u(E(h), 86), f.k = !0; + return n; + } + function ESe(n, e) { + var t, i, r, c, s, f, h, l; + for (f = new p_n(n), t = new Ct(), Kt(t, e, t.c.b, t.c); t.b != 0; ) { + for (i = u(t.b == 0 ? null : (oe(t.b != 0), Xo(t, t.a.a)), 113), i.d.p = 1, s = new C(i.e); s.a < s.c.c.length; ) + r = u(E(s), 340), FKn(f, r), l = r.d, l.d.p == 0 && Kt(t, l, t.c.b, t.c); + for (c = new C(i.b); c.a < c.c.c.length; ) + r = u(E(c), 340), FKn(f, r), h = r.c, h.d.p == 0 && Kt(t, h, t.c.b, t.c); + } + return f; + } + function hUn(n) { + var e, t, i, r, c; + if (i = $(R(z(n, (He(), Bue)))), i != 1) + for (kg(n, i * n.g, i * n.f), t = Mle(rbe((!n.c && (n.c = new q(Qu, n, 9, 9)), n.c), new rvn())), c = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!n.n && (n.n = new q(Sr, n, 1, 7)), n.n), (!n.c && (n.c = new q(Qu, n, 9, 9)), n.c), t]))); pe(c); ) + r = u(fe(c), 422), r.qh(i * r.nh(), i * r.oh()), r.ph(i * r.mh(), i * r.lh()), e = u(r.of(Ran), 8), e && (e.a *= i, e.b *= i); + } + function Pen(n, e, t) { + var i, r, c, s, f; + if (s = (br(), u(e, 69).xk()), Sl(n.e, e)) { + if (e.Si() && RA(n, e, t, D(e, 102) && (u(e, 19).Bb & hr) != 0)) + return !1; + } else + for (f = cu(n.e.Dh(), e), i = u(n.g, 124), c = 0; c < n.i; ++c) + if (r = i[c], f.am(r.Lk())) + return (s ? ct(r, t) : t == null ? r.md() == null : ct(t, r.md())) ? !1 : (u(Rg(n, c, s ? u(t, 76) : Fh(e, t)), 76), !0); + return ve(n, s ? u(t, 76) : Fh(e, t)); + } + function CSe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g; + for (s = new C(n.b); s.a < s.c.c.length; ) + for (c = u(E(s), 30), g = Y7(c.a), l = g, a = 0, d = l.length; a < d; ++a) + switch (h = l[a], u(v(h, (cn(), su)), 171).g) { + case 1: + GTe(h), $i(h, e), CRn(h, !0, i); + break; + case 3: + ATe(h), $i(h, t), CRn(h, !1, r); + } + for (f = new xi(n.b, 0); f.b < f.d.gc(); ) + (oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 30)).a.c.length == 0 && bo(f); + } + function MSe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (p = e.length, h = p, zn(0, e.length), e.charCodeAt(0) == 45 ? (d = -1, g = 1, --p) : (d = 1, g = 0), c = (BF(), EQn)[10], r = p / c | 0, j = p % c, j != 0 && ++r, f = K(ye, _e, 28, r, 15, 1), t = jQn[8], s = 0, m = g + (j == 0 ? c : j), k = g; k < h; k = m, m = k + c) + i = Ao((Fi(k, m, e.length), e.substr(k, m - k)), Wi, tt), l = (Am(), aZ(f, f, s, t)), l += T8e(f, s, i), f[s++] = l; + a = s, n.e = d, n.d = a, n.a = f, J6(n); + } + function TSe(n, e) { + var t, i, r, c; + return t = new Obn(), i = u(Wr(_r(new Tn(null, new In(n.f, 16)), t), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [(Gu(), Aw), Yr]))), 21), r = i.gc(), i = u(Wr(_r(new Tn(null, new In(e.f, 16)), t), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [Aw, Yr]))), 21), c = i.gc(), r = r == 1 ? 1 : 0, c = c == 1 ? 1 : 0, r < c ? -1 : r == c ? 0 : 1; + } + function ASe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (f = n.i, r = on(un(v(f, (cn(), Rw)))), a = 0, i = 0, l = new C(n.g); l.a < l.c.c.length; ) + h = u(E(l), 18), s = fr(h), c = s && r && on(un(v(h, Nd))), g = h.d.i, s && c ? ++i : s && !c ? ++a : Hi(g).e == f ? ++i : ++a; + for (t = new C(n.e); t.a < t.c.c.length; ) + e = u(E(t), 18), s = fr(e), c = s && r && on(un(v(e, Nd))), d = e.c.i, s && c ? ++a : s && !c ? ++i : Hi(d).e == f ? ++a : ++i; + return a - i; + } + function Wg(n, e, t, i) { + this.e = n, this.k = u(v(n, (W(), E2)), 312), this.g = K(Qh, b1, 10, e, 0, 1), this.b = K(si, J, 345, e, 7, 1), this.a = K(Qh, b1, 10, e, 0, 1), this.d = K(si, J, 345, e, 7, 1), this.j = K(Qh, b1, 10, e, 0, 1), this.i = K(si, J, 345, e, 7, 1), this.p = K(si, J, 345, e, 7, 1), this.n = K(Xt, J, 485, e, 8, 1), u7(this.n, (_n(), !1)), this.f = K(Xt, J, 485, e, 8, 1), u7(this.f, !0), this.o = t, this.c = i; + } + function lUn(n, e) { + var t, i, r, c, s, f; + if (!e.dc()) + if (u(e.Xb(0), 293).d == (Yp(), Nw)) + J7e(n, e); + else + for (i = e.Kc(); i.Ob(); ) { + switch (t = u(i.Pb(), 293), t.d.g) { + case 5: + Em(n, t, e8e(n, t)); + break; + case 0: + Em(n, t, (s = t.f - t.c + 1, f = (s - 1) / 2 | 0, t.c + f)); + break; + case 4: + Em(n, t, sme(n, t)); + break; + case 2: + PBn(t), Em(n, t, (c = zZ(t), c ? t.c : t.f)); + break; + case 1: + PBn(t), Em(n, t, (r = zZ(t), r ? t.f : t.c)); + } + zye(t.a); + } + } + function Ien(n, e, t, i) { + var r, c, s; + return s = new zEn(e, t), n.a ? i ? (r = u(as(u(ee(n.b, e), 260)), 260), ++r.a, s.d = i.d, s.e = i.e, s.b = i, s.c = i, i.e ? i.e.c = s : r.b = s, i.d ? i.d.b = s : n.a = s, i.d = s, i.e = s) : (u(as(n.e), 511).b = s, s.d = n.e, n.e = s, r = u(ee(n.b, e), 260), r ? (++r.a, c = r.c, c.c = s, s.e = c, r.c = s) : (Ve(n.b, e, r = new ZW(s)), ++n.c)) : (n.a = n.e = s, Ve(n.b, e, new ZW(s)), ++n.c), ++n.d, s; + } + function PF(n, e) { + var t, i, r, c, s; + if (e.Ug("Network simplex", 1), n.e.a.c.length < 1) { + e.Vg(); + return; + } + for (c = new C(n.e.a); c.a < c.c.c.length; ) + r = u(E(c), 125), r.e = 0; + for (s = n.e.a.c.length >= 40, s && gPe(n), MIe(n), XTe(n), t = mBn(n), i = 0; t && i < n.f; ) + DSe(n, t, JCe(n, t)), t = mBn(n), ++i; + s && aye(n), n.a ? oMe(n, rUn(n)) : rUn(n), n.b = null, n.d = null, n.p = null, n.c = null, n.g = null, n.i = null, n.n = null, n.o = null, e.Vg(); + } + function SSe(n, e) { + var t, i, r, c, s, f, h; + if (!e.e) { + for (e.e = !0, i = e.d.a.ec().Kc(); i.Ob(); ) { + if (t = u(i.Pb(), 18), e.o && e.d.a.gc() <= 1) { + s = e.a.c, f = e.a.c + e.a.b, h = new V(s + (f - s) / 2, e.b), Fe(u(e.d.a.ec().Kc().Pb(), 18).a, h); + continue; + } + if (r = u(ee(e.c, t), 468), r.b || r.c) { + bSe(n, t, e); + continue; + } + c = n.d == (om(), Y8) && (r.d || r.e) && kCe(n, e) && e.d.a.gc() <= 1, c ? eDe(t, e) : EAe(n, t, e); + } + e.k && qi(e.d, new Zwn()); + } + } + function Oen(n, e, t, i, r, c) { + var s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (g = c, f = (i + r) / 2 + g, j = t * y.Math.cos(f), S = t * y.Math.sin(f), I = j - e.g / 2, O = S - e.f / 2, tu(e, I), iu(e, O), d = n.a.Eg(e), k = 2 * y.Math.acos(t / t + n.c), k < r - i ? (p = k / d, s = (i + r - k) / 2) : (p = (r - i) / d, s = i), m = aw(e), n.e && (n.e.Fg(n.d), n.e.Gg(m)), l = new C(m); l.a < l.c.c.length; ) + h = u(E(l), 27), a = n.a.Eg(h), Oen(n, h, t + n.c, s, s + p * a, c), s += p * a; + } + function PSe(n, e, t) { + var i; + switch (i = t.q.getMonth(), e) { + case 5: + Re(n, A(T(fn, 1), J, 2, 6, ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"])[i]); + break; + case 4: + Re(n, A(T(fn, 1), J, 2, 6, [sB, fB, hB, lB, c3, aB, dB, bB, wB, gB, pB, mB])[i]); + break; + case 3: + Re(n, A(T(fn, 1), J, 2, 6, ["Jan", "Feb", "Mar", "Apr", c3, "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"])[i]); + break; + default: + Bh(n, i + 1, e); + } + } + function ISe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g; + for (h = new V(t, i), mi(h, u(v(e, (Q1(), D8)), 8)), g = new C(e.e); g.a < g.c.c.length; ) + d = u(E(g), 153), it(d.d, h), nn(n.e, d); + for (f = new C(e.c); f.a < f.c.c.length; ) { + for (s = u(E(f), 290), c = new C(s.a); c.a < c.c.c.length; ) + r = u(E(c), 250), it(r.d, h); + nn(n.c, s); + } + for (a = new C(e.d); a.a < a.c.c.length; ) + l = u(E(a), 454), it(l.d, h), nn(n.d, l); + } + function Den(n, e) { + var t, i, r, c, s, f, h, l; + for (h = new C(e.j); h.a < h.c.c.length; ) + for (f = u(E(h), 12), r = new Df(f.b); tc(r.a) || tc(r.b); ) + i = u(tc(r.a) ? E(r.a) : E(r.b), 18), t = i.c == f ? i.d : i.c, c = t.i, e != c && (l = u(v(i, (cn(), Tv)), 17).a, l < 0 && (l = 0), s = c.p, n.b[s] == 0 && (i.d == t ? (n.a[s] -= l + 1, n.a[s] <= 0 && n.c[s] > 0 && Fe(n.f, c)) : (n.c[s] -= l + 1, n.c[s] <= 0 && n.a[s] > 0 && Fe(n.e, c)))); + } + function aUn(n, e, t, i) { + var r, c, s, f, h, l, a; + for (h = new V(t, i), mi(h, u(v(e, (pt(), Dv)), 8)), a = ge(e.b, 0); a.b != a.d.c; ) + l = u(be(a), 40), it(l.e, h), Fe(n.b, l); + for (f = u(Wr(oJ(new Tn(null, new In(e.a, 16))), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15).Kc(); f.Ob(); ) { + for (s = u(f.Pb(), 65), c = ge(s.a, 0); c.b != c.d.c; ) + r = u(be(c), 8), r.a += h.a, r.b += h.b; + Fe(n.a, s); + } + } + function Len(n, e) { + var t, i, r, c; + if (0 < (D(n, 16) ? u(n, 16).gc() : wl(n.Kc()))) { + if (r = e, 1 < r) { + for (--r, c = new z3n(), i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 40), c = Eo(A(T(Oo, 1), Bn, 20, 0, [c, new sl(t)])); + return Len(c, r); + } + if (r < 0) { + for (c = new X3n(), i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 40), c = Eo(A(T(Oo, 1), Bn, 20, 0, [c, new sl(t)])); + if (0 < (D(c, 16) ? u(c, 16).gc() : wl(c.Kc()))) + return Len(c, r); + } + } + return u(NC(n.Kc()), 40); + } + function OSe(n, e, t) { + var i, r, c, s; + for (t.Ug("Processor order nodes", 2), n.b = $(R(v(e, (lc(), fq)))), n.a = u(v(e, vb), 88), n.a == (ci(), Jf) && (n.a = Wf, U(e, vb, n.a)), r = new Ct(), s = ge(e.b, 0); s.b != s.d.c; ) + c = u(be(s), 40), on(un(v(c, (pt(), Ma)))) && Kt(r, c, r.c.b, r.c); + i = (oe(r.b != 0), u(r.a.a.c, 40)), sGn(n, i), t.fh(1), Een(n, i, 0 - $(R(v(i, (pt(), xI)))) / 2, 0), t.fh(1), t.Vg(); + } + function io() { + io = F, _v = new wg("DEFAULT_MINIMUM_SIZE", 0), uE = new wg("MINIMUM_SIZE_ACCOUNTS_FOR_PADDING", 1), sO = new wg("COMPUTE_PADDING", 2), P9 = new wg("OUTSIDE_NODE_LABELS_OVERHANG", 3), fO = new wg("PORTS_OVERHANG", 4), lO = new wg("UNIFORM_PORT_SPACING", 5), hO = new wg("SPACE_EFFICIENT_PORT_LABELS", 6), bU = new wg("FORCE_TABULAR_NODE_LABELS", 7), cE = new wg("ASYMMETRICAL", 8); + } + function IF(n, e) { + var t, i, r, c, s, f, h, l; + if (e) { + if (t = (c = e.Dh(), c ? jo(c).wi().si(c) : null), t) { + for (s1(n, e, t), r = e.Dh(), h = 0, l = (r.i == null && bh(r), r.i).length; h < l; ++h) + f = (i = (r.i == null && bh(r), r.i), h >= 0 && h < i.length ? i[h] : null), f.rk() && !f.sk() && (D(f, 331) ? P9e(n, u(f, 35), e, t) : (s = u(f, 19), s.Bb & yc && Kke(n, s, e, t))); + e.Vh() && u(t, 54).ei(u(e, 54)._h()); + } + return t; + } else + return null; + } + function DSe(n, e, t) { + var i, r, c; + if (!e.f) + throw M(new Gn("Given leave edge is no tree edge.")); + if (t.f) + throw M(new Gn("Given enter edge is a tree edge already.")); + for (e.f = !1, xX(n.p, e), t.f = !0, fi(n.p, t), i = t.e.e - t.d.e - t.a, fF(n, t.e, e) || (i = -i), c = new C(n.e.a); c.a < c.c.c.length; ) + r = u(E(c), 125), fF(n, r, e) || (r.e += i); + n.j = 1, e6(n.c), Dnn(n, u(E(new C(n.e.a)), 125)), mGn(n); + } + function dUn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p; + if (Eme(n, e, t), c = e[t], p = i ? (en(), Wn) : (en(), Zn), T1e(e.length, t, i)) { + for (r = e[i ? t - 1 : t + 1], qJ(n, r, i ? (pr(), Qc) : (pr(), Vu)), h = c, a = 0, g = h.length; a < g; ++a) + s = h[a], gZ(n, s, p); + for (qJ(n, c, i ? (pr(), Vu) : (pr(), Qc)), f = r, l = 0, d = f.length; l < d; ++l) + s = f[l], s.e || gZ(n, s, xk(p)); + } else + for (f = c, l = 0, d = f.length; l < d; ++l) + s = f[l], gZ(n, s, p); + return !1; + } + function LSe(n, e, t, i, r) { + var c, s, f, h, l, a, d; + for (Dn(), Yt(n, new Zmn()), f = new xi(n, 0), d = new Z(), c = 0; f.b < f.d.gc(); ) + s = (oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 163)), d.c.length != 0 && Pu(s) * ao(s) > c * 2 ? (a = new hT(d), l = Pu(s) / ao(s), h = QF(a, e, new up(), t, i, r, l), it(ff(a.e), h), d.c.length = 0, c = 0, Kn(d.c, a), Kn(d.c, s), c = Pu(a) * ao(a) + Pu(s) * ao(s)) : (Kn(d.c, s), c += Pu(s) * ao(s)); + return d; + } + function bUn(n, e) { + var t, i, r, c, s, f; + if (f = u(v(e, (cn(), Ut)), 101), f == (Di(), tl) || f == Uc) + for (r = new V(e.f.a + e.d.b + e.d.c, e.f.b + e.d.d + e.d.a).b, s = new C(n.a); s.a < s.c.c.length; ) + c = u(E(s), 10), c.k == (Vn(), Zt) && (t = u(v(c, (W(), gc)), 64), !(t != (en(), Zn) && t != Wn) && (i = $(R(v(c, fb))), f == tl && (i *= r), c.n.b = i - u(v(c, bb), 8).b, IT(c, !1, !0))); + } + function NSe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + if (fo(n.e)) { + if (e != t && (r = u(n.g, 124), p = r[t], s = p.Lk(), Sl(n.e, s))) { + for (m = cu(n.e.Dh(), s), h = -1, f = -1, i = 0, l = 0, d = e > t ? e : t; l <= d; ++l) + l == t ? f = i++ : (c = r[l], a = m.am(c.Lk()), l == e && (h = l == d && !a ? i - 1 : i), a && ++i); + return g = u(k5(n, e, t), 76), f != h && t4(n, new ck(n.e, 7, s, Y(f), p.md(), h)), g; + } + } else + return u(lF(n, e, t), 76); + return u(k5(n, e, t), 76); + } + function $Se(n, e) { + var t, i, r, c, s, f, h; + for (e.Ug("Port order processing", 1), h = u(v(n, (cn(), ghn)), 430), i = new C(n.b); i.a < i.c.c.length; ) + for (t = u(E(i), 30), c = new C(t.a); c.a < c.c.c.length; ) + r = u(E(c), 10), s = u(v(r, Ut), 101), f = r.j, s == (Di(), Ud) || s == tl || s == Uc ? (Dn(), Yt(f, Esn)) : s != Qf && s != Pa && (Dn(), Yt(f, QZn), K9e(f), h == (dk(), GH) && Yt(f, JZn)), r.i = !0, Pnn(r); + e.Vg(); + } + function xSe(n) { + var e, t, i, r, c, s, f, h; + for (h = new de(), e = new oD(), s = n.Kc(); s.Ob(); ) + r = u(s.Pb(), 10), f = h0(i7(new za(), r), e), Wc(h.f, r, f); + for (c = n.Kc(); c.Ob(); ) + for (r = u(c.Pb(), 10), i = new ie(ce(Qt(r).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), !fr(t) && qs(Ls(Ds(Os(Ns(new hs(), y.Math.max(1, u(v(t, (cn(), phn)), 17).a)), 1), u(ee(h, t.c.i), 125)), u(ee(h, t.d.i), 125))); + return e; + } + function wUn() { + wUn = F, Xie = Ke(new ii(), (Vi(), _c), (tr(), ssn)), rln = Ke(new ii(), Dc, SP), Wie = Iu(Ke(new ii(), Dc, xP), zr, $P), zie = Iu(Ke(Ke(new ii(), Dc, isn), _c, rsn), zr, csn), Jie = ah(ah(h6(Iu(Ke(new ii(), Vs, KP), zr, RP), _c), BP), _P), Vie = Iu(new ii(), zr, fsn), Uie = Iu(Ke(Ke(Ke(new ii(), Jh, IP), _c, DP), _c, hv), zr, OP), Gie = Iu(Ke(Ke(new ii(), _c, hv), _c, AP), zr, TP); + } + function FSe(n, e, t, i, r, c) { + var s, f, h, l, a, d, g; + for (l = mFn(e) - mFn(n), s = i_n(e, l), h = Zc(0, 0, 0); l >= 0 && (f = P7e(n, s), !(f && (l < 22 ? h.l |= 1 << l : l < 44 ? h.m |= 1 << l - 22 : h.h |= 1 << l - 44, n.l == 0 && n.m == 0 && n.h == 0))); ) + a = s.m, d = s.h, g = s.l, s.h = d >>> 1, s.m = a >>> 1 | (d & 1) << 21, s.l = g >>> 1 | (a & 1) << 21, --l; + return t && H$(h), c && (i ? (wa = tm(n), r && (wa = Zxn(wa, (R4(), aun)))) : wa = Zc(n.l, n.m, n.h)), h; + } + function BSe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (l = n.e[e.c.p][e.p] + 1, h = e.c.a.c.length + 1, f = new C(n.a); f.a < f.c.c.length; ) { + for (s = u(E(f), 12), d = 0, c = 0, r = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [new e4(s), new ip(s)]))); pe(r); ) + i = u(fe(r), 12), i.i.c == e.c && (d += m1e(n, i.i) + 1, ++c); + t = d / c, a = s.j, a == (en(), Zn) ? t < l ? n.f[s.p] = n.c - t : n.f[s.p] = n.b + (h - t) : a == Wn && (t < l ? n.f[s.p] = n.b + t : n.f[s.p] = n.c - (h - t)); + } + } + function Ao(n, e, t) { + var i, r, c, s, f; + if (n == null) + throw M(new th(pu)); + for (c = n.length, s = c > 0 && (zn(0, n.length), n.charCodeAt(0) == 45 || (zn(0, n.length), n.charCodeAt(0) == 43)) ? 1 : 0, i = s; i < c; i++) + if (WBn((zn(i, n.length), n.charCodeAt(i))) == -1) + throw M(new th(V0 + n + '"')); + if (f = parseInt(n, 10), r = f < e, isNaN(f)) + throw M(new th(V0 + n + '"')); + if (r || f > t) + throw M(new th(V0 + n + '"')); + return f; + } + function RSe(n) { + var e, t, i, r, c, s, f; + for (s = new Ct(), c = new C(n.a); c.a < c.c.c.length; ) + r = u(E(c), 118), JO(r, r.f.c.length), SE(r, r.k.c.length), r.i == 0 && (r.o = 0, Kt(s, r, s.c.b, s.c)); + for (; s.b != 0; ) + for (r = u(s.b == 0 ? null : (oe(s.b != 0), Xo(s, s.a.a)), 118), i = r.o + 1, t = new C(r.f); t.a < t.c.c.length; ) + e = u(E(t), 132), f = e.a, mG(f, y.Math.max(f.o, i)), SE(f, f.i - 1), f.i == 0 && Kt(s, f, s.c.b, s.c); + } + function KSe(n) { + var e, t, i, r, c, s, f, h; + for (s = new C(n); s.a < s.c.c.length; ) { + for (c = u(E(s), 74), i = Gr(u(L((!c.b && (c.b = new Nn(he, c, 4, 7)), c.b), 0), 84)), f = i.i, h = i.j, r = u(L((!c.a && (c.a = new q(Mt, c, 6, 6)), c.a), 0), 166), j7(r, r.j + f, r.k + h), y7(r, r.b + f, r.c + h), t = new ne((!r.a && (r.a = new ti(xo, r, 5)), r.a)); t.e != t.i.gc(); ) + e = u(ue(t), 377), gL(e, e.a + f, e.b + h); + RQ(u(z(c, (He(), kb)), 75), f, h); + } + } + function Im(n) { + var e; + switch (n) { + case 100: + return Zg(M8, !0); + case 68: + return Zg(M8, !1); + case 119: + return Zg(LK, !0); + case 87: + return Zg(LK, !1); + case 115: + return Zg(NK, !0); + case 83: + return Zg(NK, !1); + case 99: + return Zg($K, !0); + case 67: + return Zg($K, !1); + case 105: + return Zg(xK, !0); + case 73: + return Zg(xK, !1); + default: + throw M(new ec((e = n, XJn + e.toString(16)))); + } + } + function _Se(n) { + var e, t, i, r, c; + switch (r = u(sn(n.a, 0), 10), e = new Tl(n), nn(n.a, e), e.o.a = y.Math.max(1, r.o.a), e.o.b = y.Math.max(1, r.o.b), e.n.a = r.n.a, e.n.b = r.n.b, u(v(r, (W(), gc)), 64).g) { + case 4: + e.n.a += 2; + break; + case 1: + e.n.b += 2; + break; + case 2: + e.n.a -= 2; + break; + case 3: + e.n.b -= 2; + } + return i = new Ic(), ic(i, e), t = new E0(), c = u(sn(r.j, 0), 12), Zi(t, c), Oi(t, i), it(ff(i.n), c.n), it(ff(i.a), c.a), e; + } + function gUn(n, e, t, i, r) { + t && (!i || (n.c - n.b & n.a.length - 1) > 1) && e == 1 && u(n.a[n.b], 10).k == (Vn(), Sc) ? t3(u(n.a[n.b], 10), (To(), nl)) : i && (!t || (n.c - n.b & n.a.length - 1) > 1) && e == 1 && u(n.a[n.c - 1 & n.a.length - 1], 10).k == (Vn(), Sc) ? t3(u(n.a[n.c - 1 & n.a.length - 1], 10), (To(), Aa)) : (n.c - n.b & n.a.length - 1) == 2 ? (t3(u(l5(n), 10), (To(), nl)), t3(u(l5(n), 10), Aa)) : bMe(n, r), AJ(n); + } + function HSe(n, e, t) { + var i, r, c, s, f; + for (c = 0, r = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); r.e != r.i.gc(); ) + i = u(ue(r), 27), s = "", (!i.n && (i.n = new q(Sr, i, 1, 7)), i.n).i == 0 || (s = u(L((!i.n && (i.n = new q(Sr, i, 1, 7)), i.n), 0), 135).a), f = new q$(c++, e, s), Ur(f, i), U(f, (pt(), u9), i), f.e.b = i.j + i.f / 2, f.f.a = y.Math.max(i.g, 1), f.e.a = i.i + i.g / 2, f.f.b = y.Math.max(i.f, 1), Fe(e.b, f), Wc(t.f, i, f); + } + function qSe(n) { + var e, t, i, r, c; + i = u(v(n, (W(), st)), 27), c = u(z(i, (cn(), xd)), 181).Hc((go(), Gd)), n.e || (r = u(v(n, qc), 21), e = new V(n.f.a + n.d.b + n.d.c, n.f.b + n.d.d + n.d.a), r.Hc((mr(), cs)) ? (ht(i, Ut, (Di(), Uc)), G0(i, e.a, e.b, !1, !0)) : on(un(z(i, SH))) || G0(i, e.a, e.b, !0, !0)), c ? ht(i, xd, jn(Gd)) : ht(i, xd, (t = u(of(S9), 9), new _o(t, u(xs(t, t.length), 9), 0))); + } + function Nen(n, e, t) { + var i, r, c, s; + if (e[0] >= n.length) + return t.o = 0, !0; + switch (Xi(n, e[0])) { + case 43: + r = 1; + break; + case 45: + r = -1; + break; + default: + return t.o = 0, !0; + } + if (++e[0], c = e[0], s = yA(n, e), s == 0 && e[0] == c) + return !1; + if (e[0] < n.length && Xi(n, e[0]) == 58) { + if (i = s * 60, ++e[0], c = e[0], s = yA(n, e), s == 0 && e[0] == c) + return !1; + i += s; + } else + i = s, i < 24 && e[0] - c <= 2 ? i *= 60 : i = i % 100 + (i / 100 | 0) * 60; + return i *= r, t.o = -i, !0; + } + function USe(n) { + var e, t, i, r, c, s, f, h, l; + for (s = new Z(), i = new ie(ce(Qt(n.b).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), fr(t) && nn(s, new FLn(t, kNn(n, t.c), kNn(n, t.d))); + for (l = (c = new ol(n.e).a.vc().Kc(), new Sb(c)); l.a.Ob(); ) + f = (e = u(l.a.Pb(), 44), u(e.md(), 113)), f.d.p = 0; + for (h = (r = new ol(n.e).a.vc().Kc(), new Sb(r)); h.a.Ob(); ) + f = (e = u(h.a.Pb(), 44), u(e.md(), 113)), f.d.p == 0 && nn(n.d, ESe(n, f)); + } + function GSe(n) { + var e, t, i, r, c, s, f; + for (c = Sf(n), r = new ne((!n.e && (n.e = new Nn(Wt, n, 7, 4)), n.e)); r.e != r.i.gc(); ) + if (i = u(ue(r), 74), f = Gr(u(L((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c), 0), 84)), !Yb(f, c)) + return !0; + for (t = new ne((!n.d && (n.d = new Nn(Wt, n, 8, 5)), n.d)); t.e != t.i.gc(); ) + if (e = u(ue(t), 74), s = Gr(u(L((!e.b && (e.b = new Nn(he, e, 4, 7)), e.b), 0), 84)), !Yb(s, c)) + return !0; + return !1; + } + function zSe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (s = new C(e.b); s.a < s.c.c.length; ) + for (c = u(E(s), 30), l = new C(c.a); l.a < l.c.c.length; ) { + for (h = u(E(l), 10), a = new Z(), f = 0, i = new ie(ce(ji(h).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), !(fr(t) || !fr(t) && t.c.i.c == t.d.i.c) && (r = u(v(t, (cn(), I3)), 17).a, r > f && (f = r, a.c.length = 0), r == f && nn(a, new bi(t.c.i, t))); + Dn(), Yt(a, n.c), b0(n.b, h.p, a); + } + } + function XSe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (s = new C(e.b); s.a < s.c.c.length; ) + for (c = u(E(s), 30), l = new C(c.a); l.a < l.c.c.length; ) { + for (h = u(E(l), 10), a = new Z(), f = 0, i = new ie(ce(Qt(h).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), !(fr(t) || !fr(t) && t.c.i.c == t.d.i.c) && (r = u(v(t, (cn(), I3)), 17).a, r > f && (f = r, a.c.length = 0), r == f && nn(a, new bi(t.d.i, t))); + Dn(), Yt(a, n.c), b0(n.f, h.p, a); + } + } + function VSe(n, e) { + var t, i, r, c, s, f, h, l; + if (l = un(v(e, (lc(), Ore))), l == null || (Jn(l), l)) { + for (vCe(n, e), r = new Z(), h = ge(e.b, 0); h.b != h.d.c; ) + s = u(be(h), 40), t = ynn(n, s, null), t && (Ur(t, e), Kn(r.c, t)); + if (n.a = null, n.b = null, r.c.length > 1) + for (i = new C(r); i.a < i.c.c.length; ) + for (t = u(E(i), 121), c = 0, f = ge(t.b, 0); f.b != f.d.c; ) + s = u(be(f), 40), s.g = c++; + return r; + } + return Of(A(T(TNe, 1), EXn, 121, 0, [e])); + } + function WSe(n) { + var e, t, i, r, c, s, f, h; + for (h = new Tu(), e = ge(n, 0), f = null, t = u(be(e), 8), r = u(be(e), 8); e.b != e.d.c; ) + f = t, t = r, r = u(be(e), 8), c = C$n(mi(new V(f.a, f.b), t)), s = C$n(mi(new V(r.a, r.b), t)), i = 10, i = y.Math.min(i, y.Math.abs(c.a + c.b) / 2), i = y.Math.min(i, y.Math.abs(s.a + s.b) / 2), c.a = B7(c.a) * i, c.b = B7(c.b) * i, s.a = B7(s.a) * i, s.b = B7(s.b) * i, Fe(h, it(c, t)), Fe(h, it(s, t)); + return h; + } + function JSe(n, e, t) { + var i, r, c, s, f, h; + if (t.Ug("Minimize Crossings " + n.a, 1), i = e.b.c.length == 0 || !s4(ut(new Tn(null, new In(e.b, 16)), new Z3(new Qpn()))).Bd((Va(), v3)), h = e.b.c.length == 1 && u(sn(e.b, 0), 30).a.c.length == 1, c = x(v(e, (cn(), Bw))) === x((jl(), M1)), i || h && !c) { + t.Vg(); + return; + } + r = RTe(n, e), s = (f = u(Zo(r, 0), 219), f.c.kg() ? f.c.eg() ? new H7n(n) : new q7n(n) : new _7n(n)), A6e(r, s), c5e(n), t.Vg(); + } + function So(n, e, t, i) { + var r, c, s, f, h; + return s = n.Ph(), h = n.Jh(), r = null, h ? e && !(AF(n, e, t).Bb & hr) ? (i = cr(h.El(), n, i), n.di(null), r = e.Qh()) : h = null : (s && (h = s.Qh()), e && (r = e.Qh())), h != r && h && h.Il(n), f = n.Fh(), n.Bh(e, t), h != r && r && r.Hl(n), n.vh() && n.wh() && (s && f >= 0 && f != t && (c = new Ci(n, 1, f, s, null), i ? i.nj(c) : i = c), t >= 0 && (c = new Ci(n, 1, t, f == t ? s : null, e), i ? i.nj(c) : i = c)), i; + } + function pUn(n) { + var e, t, i; + if (n.b == null) { + if (i = new Hl(), n.i != null && (Cr(i, n.i), i.a += ":"), n.f & 256) { + for (n.f & 256 && n.a != null && (age(n.i) || (i.a += "//"), Cr(i, n.a)), n.d != null && (i.a += "/", Cr(i, n.d)), n.f & 16 && (i.a += "/"), e = 0, t = n.j.length; e < t; e++) + e != 0 && (i.a += "/"), Cr(i, n.j[e]); + n.g != null && (i.a += "?", Cr(i, n.g)); + } else + Cr(i, n.a); + n.e != null && (i.a += "#", Cr(i, n.e)), n.b = i.a; + } + return n.b; + } + function QSe(n, e) { + var t, i, r, c, s, f; + for (r = new C(e.a); r.a < r.c.c.length; ) + i = u(E(r), 10), c = v(i, (W(), st)), D(c, 12) && (s = u(c, 12), f = $Un(e, i, s.o.a, s.o.b), s.n.a = f.a, s.n.b = f.b, gi(s, u(v(i, gc), 64))); + t = new V(e.f.a + e.d.b + e.d.c, e.f.b + e.d.d + e.d.a), u(v(e, (W(), qc)), 21).Hc((mr(), cs)) ? (U(n, (cn(), Ut), (Di(), Uc)), u(v(Hi(n), qc), 21).Fc(yv), EGn(n, t, !1)) : EGn(n, t, !0); + } + function YSe(n, e, t, i, r) { + var c, s, f, h; + c = new Tl(n), Ha(c, (Vn(), Hc)), U(c, (cn(), Ut), (Di(), Uc)), U(c, (W(), st), e.c.i), s = new Ic(), U(s, st, e.c), gi(s, r), ic(s, c), U(e.c, Xu, c), f = new Tl(n), Ha(f, Hc), U(f, Ut, Uc), U(f, st, e.d.i), h = new Ic(), U(h, st, e.d), gi(h, r), ic(h, f), U(e.d, Xu, f), Zi(e, s), Oi(e, h), zb(0, t.c.length), d6(t.c, 0, c), Kn(i.c, f), U(c, iI, Y(1)), U(f, iI, Y(1)); + } + function ZSe(n, e, t, i) { + var r, c, s, f, h; + if (h = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), r = Ae(er(Uh, xh(Ae(er(t == null ? 0 : mt(t), Gh)), 15))), f = o5(n, e, h), s = u5(n, t, r), f && r == f.a && sh(t, f.g)) + return t; + if (s && !i) + throw M(new Gn("key already present: " + t)); + return f && zg(n, f), s && zg(n, s), c = new kM(t, r, e, h), ny(n, c, s), s && (s.e = null, s.c = null), f && (f.e = null, f.c = null), dKn(n), f ? f.g : null; + } + function mUn(n, e, t) { + var i, r, c, s, f; + for (c = 0; c < e; c++) { + for (i = 0, f = c + 1; f < e; f++) + i = nr(nr(er(vi(n[c], vr), vi(n[f], vr)), vi(t[c + f], vr)), vi(Ae(i), vr)), t[c + f] = Ae(i), i = U1(i, 32); + t[c + e] = Ae(i); + } + for (lve(t, t, e << 1), i = 0, r = 0, s = 0; r < e; ++r, s++) + i = nr(nr(er(vi(n[r], vr), vi(n[r], vr)), vi(t[s], vr)), vi(Ae(i), vr)), t[s] = Ae(i), i = U1(i, 32), ++s, i = nr(i, vi(t[s], vr)), t[s] = Ae(i), i = U1(i, 32); + return t; + } + function vUn(n, e, t) { + var i, r, c, s, f, h, l, a; + if (!N4(e)) { + for (h = $(R(rw(t.c, (cn(), X8)))), l = u(rw(t.c, Aj), 140), !l && (l = new Qv()), i = t.a, r = null, f = e.Kc(); f.Ob(); ) + s = u(f.Pb(), 12), a = 0, r ? (a = h, a += r.o.b) : a = l.d, c = h0(i7(new za(), s), n.f), Ve(n.k, s, c), qs(Ls(Ds(Os(Ns(new hs(), 0), wi(y.Math.ceil(a))), i), c)), r = s, i = c; + qs(Ls(Ds(Os(Ns(new hs(), 0), wi(y.Math.ceil(l.a + r.o.b))), i), t.d)); + } + } + function nPe(n, e, t, i, r, c, s, f) { + var h, l, a, d, g, p; + return p = !1, g = c - t.s, a = t.t - e.f + (l = G5(t, g, !1), l.a), i.g + f > g ? !1 : (d = (h = G5(i, g, !1), h.a), a + f + d <= e.b && (uk(t, c - t.s), t.c = !0, uk(i, c - t.s), Hk(i, t.s, t.t + t.d + f), i.k = !0, HQ(t.q, i), p = !0, r && (wT(e, i), i.j = e, n.c.length > s && (Gk((Ln(s, n.c.length), u(n.c[s], 186)), i), (Ln(s, n.c.length), u(n.c[s], 186)).a.c.length == 0 && Yl(n, s)))), p); + } + function ePe(n, e) { + var t, i, r, c, s, f; + if (e.Ug("Partition midprocessing", 1), r = new C0(), Gt(ut(new Tn(null, new In(n.a, 16)), new Ugn()), new l7n(r)), r.d != 0) { + for (f = u(Wr(hJ((c = r.i, new Tn(null, (c || (r.i = new Mg(r, r.c))).Nc()))), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), i = f.Kc(), t = u(i.Pb(), 17); i.Ob(); ) + s = u(i.Pb(), 17), XMe(u(ot(r, t), 21), u(ot(r, s), 21)), t = s; + e.Vg(); + } + } + function kUn(n, e, t) { + var i, r, c, s, f, h, l, a; + if (e.p == 0) { + for (e.p = 1, s = t, s || (r = new Z(), c = (i = u(of(lr), 9), new _o(i, u(xs(i, i.length), 9), 0)), s = new bi(r, c)), u(s.a, 15).Fc(e), e.k == (Vn(), Zt) && u(s.b, 21).Fc(u(v(e, (W(), gc)), 64)), h = new C(e.j); h.a < h.c.c.length; ) + for (f = u(E(h), 12), a = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [new e4(f), new ip(f)]))); pe(a); ) + l = u(fe(a), 12), kUn(n, l.i, s); + return s; + } + return null; + } + function _5(n, e) { + var t, i, r, c, s; + if (n.Ab) { + if (n.Ab) { + if (s = n.Ab.i, s > 0) { + if (r = u(n.Ab.g, 2033), e == null) { + for (c = 0; c < s; ++c) + if (t = r[c], t.d == null) + return t; + } else + for (c = 0; c < s; ++c) + if (t = r[c], An(e, t.d)) + return t; + } + } else if (e == null) { + for (i = new ne(n.Ab); i.e != i.i.gc(); ) + if (t = u(ue(i), 598), t.d == null) + return t; + } else + for (i = new ne(n.Ab); i.e != i.i.gc(); ) + if (t = u(ue(i), 598), An(e, t.d)) + return t; + } + return null; + } + function tPe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + p = b3e(n, VQ(e), r), DQ(p, bl(r, Eh)), Bt = null, m = r, k = Y6(m, vWn), j = new _kn(p), aje(j.a, k), S = Y6(m, "endPoint"), I = new Gkn(p), lje(I.a, S), O = A0(m, RS), N = new Vkn(p), Zke(N.a, O), d = bl(r, Ocn), c = new kMn(n, p), Bae(c.a, c.b, d), g = bl(r, Icn), s = new yMn(n, p), Rae(s.a, s.b, g), l = A0(r, Lcn), f = new jMn(t, p), $7e(f.b, f.a, l), a = A0(r, Dcn), h = new EMn(i, p), x7e(h.b, h.a, a); + } + function $en(n, e, t) { + var i, r, c, s, f; + switch (f = null, e.g) { + case 1: + for (r = new C(n.j); r.a < r.c.c.length; ) + if (i = u(E(r), 12), on(un(v(i, (W(), aH))))) + return i; + f = new Ic(), U(f, (W(), aH), (_n(), !0)); + break; + case 2: + for (s = new C(n.j); s.a < s.c.c.length; ) + if (c = u(E(s), 12), on(un(v(c, (W(), bH))))) + return c; + f = new Ic(), U(f, (W(), bH), (_n(), !0)); + } + return f && (ic(f, n), gi(f, t), B9e(f.n, n.o, t)), f; + } + function yUn(n, e) { + var t, i, r, c, s, f; + for (f = -1, s = new Ct(), i = new Df(n.b); tc(i.a) || tc(i.b); ) { + for (t = u(tc(i.a) ? E(i.a) : E(i.b), 18), f = y.Math.max(f, $(R(v(t, (cn(), m1))))), t.c == n ? Gt(ut(new Tn(null, new In(t.b, 16)), new Kwn()), new Q9n(s)) : Gt(ut(new Tn(null, new In(t.b, 16)), new _wn()), new Y9n(s)), c = ge(s, 0); c.b != c.d.c; ) + r = u(be(c), 72), kt(r, (W(), M3)) || U(r, M3, t); + hi(e, s), vo(s); + } + return f; + } + function q0(n, e, t, i, r) { + var c, s, f, h, l; + f = r ? i.b : i.a, !sf(n.a, i) && (l = f > t.s && f < t.c, h = !1, t.e.b != 0 && t.j.b != 0 && (h = h | (y.Math.abs(f - $(R(p4(t.e)))) < vh && y.Math.abs(f - $(R(p4(t.j)))) < vh), h = h | (y.Math.abs(f - $(R($s(t.e)))) < vh && y.Math.abs(f - $(R($s(t.j)))) < vh)), (l || h) && (s = u(v(e, (cn(), Fr)), 75), s || (s = new Tu(), U(e, Fr, s)), c = new rr(i), Kt(s, c, s.c.b, s.c), fi(n.a, c))); + } + function iPe(n, e, t, i) { + var r, c, s, f, h, l, a; + if (iCe(n, e, t, i)) + return !0; + for (s = new C(e.f); s.a < s.c.c.length; ) { + switch (c = u(E(s), 334), f = !1, h = n.j - e.j + t, l = h + e.o, a = n.k - e.k + i, r = a + e.p, c.a.g) { + case 0: + f = X$(n, h + c.b.a, 0, h + c.c.a, a - 1); + break; + case 1: + f = X$(n, l, a + c.b.a, n.o - 1, a + c.c.a); + break; + case 2: + f = X$(n, h + c.b.a, r, h + c.c.a, n.p - 1); + break; + default: + f = X$(n, 0, a + c.b.a, h - 1, a + c.c.a); + } + if (f) + return !0; + } + return !1; + } + function rPe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (t.Ug("Processor set coordinates", 1), n.a = e.b.b == 0 ? 1 : e.b.b, l = null, i = ge(e.b, 0); !l && i.b != i.d.c; ) + d = u(be(i), 40), on(un(v(d, (pt(), Ma)))) && (l = d, h = d.e, h.a = u(v(d, $j), 17).a, h.b = u(v(d, xj), 17).a); + f = F$(l), a = 1; + do + f = uje((r = f, t.eh(a), r)), a = f.b / n.a | 0; + while (f.b != 0); + for (s = ge(e.b, 0); s.b != s.d.c; ) + c = u(be(s), 40), mi(c.e, new V(c.f.a / 2, c.f.b / 2)); + t.Vg(); + } + function cPe(n, e, t) { + var i, r, c, s, f, h, l, a; + for (t.Ug(dVn, 1), Hu(n.b), Hu(n.a), f = null, c = ge(e.b, 0); !f && c.b != c.d.c; ) + l = u(be(c), 40), on(un(v(l, (pt(), Ma)))) && (f = l); + for (h = new Ct(), Kt(h, f, h.c.b, h.c), QGn(n, h), a = ge(e.b, 0); a.b != a.d.c; ) + l = u(be(a), 40), s = Oe(v(l, (pt(), c9))), r = $c(n.b, s) != null ? u($c(n.b, s), 17).a : 0, U(l, iq, Y(r)), i = 1 + ($c(n.a, s) != null ? u($c(n.a, s), 17).a : 0), U(l, vln, Y(i)); + t.Vg(); + } + function jUn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), Z0), "ELK Box"), "Algorithm for packing of unconnected boxes, i.e. graphs without edges."), new Xmn()))), Q(n, Z0, W0, wan), Q(n, Z0, yw, 15), Q(n, Z0, Ny, Y(0)), Q(n, Z0, gcn, rn(aan)), Q(n, Z0, r2, rn(Cue)), Q(n, Z0, a3, rn(Mue)), Q(n, Z0, l3, xVn), Q(n, Z0, i8, rn(dan)), Q(n, Z0, d3, rn(ban)), Q(n, Z0, pcn, rn(Wq)), Q(n, Z0, MS, rn(Eue)); + } + function EUn(n, e) { + var t, i, r, c, s, f, h, l, a; + if (r = n.i, s = r.o.a, c = r.o.b, s <= 0 && c <= 0) + return en(), sc; + switch (l = n.n.a, a = n.n.b, f = n.o.a, t = n.o.b, e.g) { + case 2: + case 1: + if (l < 0) + return en(), Wn; + if (l + f > s) + return en(), Zn; + break; + case 4: + case 3: + if (a < 0) + return en(), Xn; + if (a + t > c) + return en(), ae; + } + return h = (l + f / 2) / s, i = (a + t / 2) / c, h + i <= 1 && h - i <= 0 ? (en(), Wn) : h + i >= 1 && h - i >= 0 ? (en(), Zn) : i < 0.5 ? (en(), Xn) : (en(), ae); + } + function uPe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (t = !1, a = $(R(v(e, (cn(), gb)))), m = fa * a, r = new C(e.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), l = new C(i.a), c = u(E(l), 10), d = jW(n.a[c.p]); l.a < l.c.c.length; ) + f = u(E(l), 10), g = jW(n.a[f.p]), d != g && (p = jg(n.b, c, f), s = c.n.b + c.o.b + c.d.a + d.a + p, h = f.n.b - f.d.d + g.a, s > h + m && (k = d.g + g.g, g.a = (g.g * g.a + d.g * d.a) / k, g.g = k, d.f = g, t = !0)), c = f, d = g; + return t; + } + function CUn(n, e, t, i, r, c, s) { + var f, h, l, a, d, g; + for (g = new mp(), l = e.Kc(); l.Ob(); ) + for (f = u(l.Pb(), 853), d = new C(f.Rf()); d.a < d.c.c.length; ) + a = u(E(d), 187), x(a.of((He(), nU))) === x(($f(), Bv)) && (tUn(g, a, !1, i, r, c, s), D5(n, g)); + for (h = t.Kc(); h.Ob(); ) + for (f = u(h.Pb(), 853), d = new C(f.Rf()); d.a < d.c.c.length; ) + a = u(E(d), 187), x(a.of((He(), nU))) === x(($f(), Jw)) && (tUn(g, a, !0, i, r, c, s), D5(n, g)); + } + function oPe(n, e, t) { + var i, r, c, s, f, h, l; + for (s = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); s.e != s.i.gc(); ) + for (c = u(ue(s), 27), r = new ie(ce(Al(c).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 74), !N5(i) && !N5(i) && !_0(i) && (h = u(Kr(gr(t.f, c)), 40), l = u(ee(t, Gr(u(L((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c), 0), 84))), 40), h && l && (f = new QW(h, l), U(f, (pt(), u9), i), Ur(f, i), Fe(h.d, f), Fe(l.b, f), Fe(e.a, f))); + } + function sPe(n, e) { + var t, i, r, c, s, f, h, l; + for (h = u(u(ot(n.r, e), 21), 87).Kc(); h.Ob(); ) + f = u(h.Pb(), 117), r = f.c ? USn(f.c) : 0, r > 0 ? f.a ? (l = f.b.Mf().b, r > l && (n.v || f.c.d.c.length == 1 ? (s = (r - l) / 2, f.d.d = s, f.d.a = s) : (t = u(sn(f.c.d, 0), 187).Mf().b, i = (t - l) / 2, f.d.d = y.Math.max(0, i), f.d.a = r - i - l))) : f.d.a = n.t + r : K6(n.u) && (c = inn(f.b), c.d < 0 && (f.d.d = -c.d), c.d + c.a > f.b.Mf().b && (f.d.a = c.d + c.a - f.b.Mf().b)); + } + function Us() { + Us = F, k3 = new Ni((He(), Jj), Y(1)), yP = new Ni(qd, 80), iZn = new Ni(Gan, 5), XYn = new Ni(x2, Gm), eZn = new Ni(fU, Y(1)), tZn = new Ni(hU, (_n(), !0)), von = new f0(50), ZYn = new Ni(C1, von), gon = Vj, kon = v9, VYn = new Ni(Zq, !1), mon = Wj, QYn = Vw, YYn = Ta, JYn = Hd, WYn = K2, nZn = Ww, pon = (dnn(), KYn), y_ = UYn, kP = RYn, k_ = _Yn, yon = qYn, uZn = k9, oZn = cO, cZn = Qj, rZn = rO, jon = (Gp(), Yw), new Ni(x3, jon); + } + function fPe(n, e) { + var t; + switch (bk(n)) { + case 6: + return Si(e); + case 7: + return $b(e); + case 8: + return Nb(e); + case 3: + return Array.isArray(e) && (t = bk(e), !(t >= 14 && t <= 16)); + case 11: + return e != null && typeof e === eB; + case 12: + return e != null && (typeof e === vy || typeof e == eB); + case 0: + return Tx(e, n.__elementTypeId$); + case 2: + return uN(e) && e.Tm !== Q2; + case 1: + return uN(e) && e.Tm !== Q2 || Tx(e, n.__elementTypeId$); + default: + return !0; + } + } + function MUn(n, e) { + var t, i, r, c; + return i = y.Math.min(y.Math.abs(n.c - (e.c + e.b)), y.Math.abs(n.c + n.b - e.c)), c = y.Math.min(y.Math.abs(n.d - (e.d + e.a)), y.Math.abs(n.d + n.a - e.d)), t = y.Math.abs(n.c + n.b / 2 - (e.c + e.b / 2)), t > n.b / 2 + e.b / 2 || (r = y.Math.abs(n.d + n.a / 2 - (e.d + e.a / 2)), r > n.a / 2 + e.a / 2) ? 1 : t == 0 && r == 0 ? 0 : t == 0 ? c / r + 1 : r == 0 ? i / t + 1 : y.Math.min(i / t, c / r) + 1; + } + function hPe(n, e) { + var t, i, r, c, s, f, h; + for (c = 0, f = 0, h = 0, r = new C(n.f.e); r.a < r.c.c.length; ) + i = u(E(r), 153), e != i && (s = n.i[e.a][i.a], c += s, t = J1(e.d, i.d), t > 0 && n.d != (t5(), C_) && (f += s * (i.d.a + n.a[e.a][i.a] * (e.d.a - i.d.a) / t)), t > 0 && n.d != (t5(), j_) && (h += s * (i.d.b + n.a[e.a][i.a] * (e.d.b - i.d.b) / t))); + switch (n.d.g) { + case 1: + return new V(f / c, e.d.b); + case 2: + return new V(e.d.a, h / c); + default: + return new V(f / c, h / c); + } + } + function TUn(n) { + var e, t, i, r, c, s; + for (t = (!n.a && (n.a = new ti(xo, n, 5)), n.a).i + 2, s = new zc(t), nn(s, new V(n.j, n.k)), Gt(new Tn(null, (!n.a && (n.a = new ti(xo, n, 5)), new In(n.a, 16))), new Fkn(s)), nn(s, new V(n.b, n.c)), e = 1; e < s.c.length - 1; ) + i = (Ln(e - 1, s.c.length), u(s.c[e - 1], 8)), r = (Ln(e, s.c.length), u(s.c[e], 8)), c = (Ln(e + 1, s.c.length), u(s.c[e + 1], 8)), i.a == r.a && r.a == c.a || i.b == r.b && r.b == c.b ? Yl(s, e) : ++e; + return s; + } + function AUn(n, e) { + cm(); + var t, i, r, c, s; + if (s = u(v(n.i, (cn(), Ut)), 101), c = n.j.g - e.j.g, c != 0 || !(s == (Di(), Ud) || s == tl || s == Uc)) + return 0; + if (s == (Di(), Ud) && (t = u(v(n, v1), 17), i = u(v(e, v1), 17), t && i && (r = t.a - i.a, r != 0))) + return r; + switch (n.j.g) { + case 1: + return bt(n.n.a, e.n.a); + case 2: + return bt(n.n.b, e.n.b); + case 3: + return bt(e.n.a, n.n.a); + case 4: + return bt(e.n.b, n.n.b); + default: + throw M(new Or(rin)); + } + } + function SUn(n, e) { + var t, i, r, c, s, f, h; + for (t = tAn(fCn(oCn(sCn(new JG(), e), new PM(e.e)), nne), n.a), e.j.c.length == 0 || xNn(u(sn(e.j, 0), 60).a, t), h = new rD(), Ve(n.e, t, h), s = new ni(), f = new ni(), c = new C(e.k); c.a < c.c.c.length; ) + r = u(E(c), 18), fi(s, r.c), fi(f, r.d); + i = s.a.gc() - f.a.gc(), i < 0 ? (Tk(h, !0, (ci(), Br)), Tk(h, !1, Xr)) : i > 0 && (Tk(h, !1, (ci(), Br)), Tk(h, !0, Xr)), eu(e.g, new KCn(n, t)), Ve(n.g, e, t); + } + function PUn() { + PUn = F; + var n; + for (kun = A(T(ye, 1), _e, 28, 15, [-1, -1, 30, 19, 15, 13, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5]), JK = K(ye, _e, 28, 37, 15, 1), pQn = A(T(ye, 1), _e, 28, 15, [-1, -1, 63, 40, 32, 28, 25, 23, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13]), yun = K(Fa, SB, 28, 37, 14, 1), n = 2; n <= 36; n++) + JK[n] = wi(y.Math.pow(n, kun[n])), yun[n] = Xk(Ey, JK[n]); + } + function lPe(n) { + var e; + if ((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i != 1) + throw M(new Gn(iWn + (!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i)); + return e = new Tu(), Ck(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84)) && Bi(e, pzn(n, Ck(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84)), !1)), Ck(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84)) && Bi(e, pzn(n, Ck(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84)), !0)), e; + } + function IUn(n, e) { + var t, i, r, c, s; + for (e.d ? r = n.a.c == (fh(), mb) ? ji(e.b) : Qt(e.b) : r = n.a.c == (fh(), y1) ? ji(e.b) : Qt(e.b), c = !1, i = new ie(ce(r.a.Kc(), new En())); pe(i); ) + if (t = u(fe(i), 18), s = on(n.a.f[n.a.g[e.b.p].p]), !(!s && !fr(t) && t.c.i.c == t.d.i.c) && !(on(n.a.n[n.a.g[e.b.p].p]) || on(n.a.n[n.a.g[e.b.p].p])) && (c = !0, sf(n.b, n.a.g[l7e(t, e.b).p]))) + return e.c = !0, e.a = t, e; + return e.c = c, e.a = null, e; + } + function xen(n, e, t) { + var i, r, c, s, f, h, l; + if (i = t.gc(), i == 0) + return !1; + if (n.Pj()) + if (h = n.Qj(), GY(n, e, t), s = i == 1 ? n.Ij(3, null, t.Kc().Pb(), e, h) : n.Ij(5, null, t, e, h), n.Mj()) { + for (f = i < 100 ? null : new F1(i), c = e + i, r = e; r < c; ++r) + l = n.xj(r), f = n.Nj(l, f), f = f; + f ? (f.nj(s), f.oj()) : n.Jj(s); + } else + n.Jj(s); + else if (GY(n, e, t), n.Mj()) { + for (f = i < 100 ? null : new F1(i), c = e + i, r = e; r < c; ++r) + f = n.Nj(n.xj(r), f); + f && f.oj(); + } + return !0; + } + function OUn(n, e, t) { + var i, r, c, s, f; + return n.Pj() ? (r = null, c = n.Qj(), i = n.Ij(1, f = (s = n.Dj(e, n.Zi(e, t)), s), t, e, c), n.Mj() && !(n.Yi() && f ? ct(f, t) : x(f) === x(t)) && (f && (r = n.Oj(f, r)), r = n.Nj(t, r)), r ? (r.nj(i), r.oj()) : n.Jj(i), f) : (f = (s = n.Dj(e, n.Zi(e, t)), s), n.Mj() && !(n.Yi() && f ? ct(f, t) : x(f) === x(t)) && (r = null, f && (r = n.Oj(f, null)), r = n.Nj(t, r), r && r.oj()), f); + } + function Fen(n, e) { + var t, i, r, c, s, f, h, l, a; + if (n.e = e, n.f = u(v(e, (Q1(), jP)), 234), Bye(e), n.d = y.Math.max(e.e.c.length * 16 + e.c.c.length, 256), !on(un(v(e, (Us(), gon))))) + for (a = n.e.e.c.length, h = new C(e.e); h.a < h.c.c.length; ) + f = u(E(h), 153), l = f.d, l.a = aW(n.f) * a, l.b = aW(n.f) * a; + for (t = e.b, c = new C(e.c); c.a < c.c.c.length; ) + if (r = u(E(c), 290), i = u(v(r, yon), 17).a, i > 0) { + for (s = 0; s < i; s++) + nn(t, new GPn(r)); + J_n(r); + } + } + function DUn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + if (g = new qb(n.Zg()), bf(e, Qe, g), t && !n.Xg().a.dc()) + for (a = new _a(), bf(e, "logs", a), f = 0, m = new J3(n.Xg().b.Kc()); m.b.Ob(); ) + p = Oe(m.b.Pb()), d = new qb(p), Jb(a, f), qN(a, f, d), ++f; + if (i && (l = new AE(n.Wg()), bf(e, "executionTime", l)), !n.Yg().a.dc()) + for (s = new _a(), bf(e, gK, s), f = 0, c = new J3(n.Yg().b.Kc()); c.b.Ob(); ) + r = u(c.b.Pb(), 871), h = new sp(), Jb(s, f), qN(s, f, h), DUn(r, h, t, i), ++f; + } + function Ben() { + Ben = F, OD(), Ise = new P5n(), A(T(R3, 2), J, 381, 0, [A(T(R3, 1), iP, 600, 0, [new Y9(FJn)])]), A(T(R3, 2), J, 381, 0, [A(T(R3, 1), iP, 600, 0, [new Y9(nun)])]), A(T(R3, 2), J, 381, 0, [A(T(R3, 1), iP, 600, 0, [new Y9(BJn)]), A(T(R3, 1), iP, 600, 0, [new Y9(nun)])]), new H1("-1"), A(T(R3, 2), J, 381, 0, [A(T(R3, 1), iP, 600, 0, [new Y9("\\c+")])]), new H1("0"), new H1("0"), new H1("1"), new H1("0"), new H1(UJn); + } + function aPe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (e.Ug("Hypernodes processing", 1), r = new C(n.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), f = new C(i.a); f.a < f.c.c.length; ) + if (s = u(E(f), 10), on(un(v(s, (cn(), wI)))) && s.j.c.length <= 2) { + for (d = 0, a = 0, t = 0, c = 0, l = new C(s.j); l.a < l.c.c.length; ) + switch (h = u(E(l), 12), h.j.g) { + case 1: + ++d; + break; + case 2: + ++a; + break; + case 3: + ++t; + break; + case 4: + ++c; + } + d == 0 && t == 0 && gLe(n, s, c <= a); + } + e.Vg(); + } + function dPe(n, e, t, i, r) { + var c, s, f, h, l, a, d; + for (s = new C(e); s.a < s.c.c.length; ) { + if (c = u(E(s), 18), h = c.c, t.a._b(h)) + l = (M0(), Ca); + else if (i.a._b(h)) + l = (M0(), I2); + else + throw M(new Gn("Source port must be in one of the port sets.")); + if (a = c.d, t.a._b(a)) + d = (M0(), Ca); + else if (i.a._b(a)) + d = (M0(), I2); + else + throw M(new Gn("Target port must be in one of the port sets.")); + f = new S_n(c, l, d), Ve(n.b, c, f), Kn(r.c, f); + } + } + function BA(n) { + var e, t; + return n.c && n.c.Vh() && (t = u(n.c, 54), n.c = u(ea(n, t), 142), n.c != t && (n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 9, 2, t, n.c)), D(n.Cb, 411) ? n.Db >> 16 == -15 && n.Cb.Yh() && h$(new c$(n.Cb, 9, 13, t, n.c, f1(no(u(n.Cb, 62)), n))) : D(n.Cb, 90) && n.Db >> 16 == -23 && n.Cb.Yh() && (e = n.c, D(e, 90) || (e = (On(), Is)), D(t, 90) || (t = (On(), Is)), h$(new c$(n.Cb, 9, 10, t, e, f1(Pc(u(n.Cb, 29)), n)))))), n.c; + } + function bPe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (t.Ug("Hyperedge merging", 1), BCe(n, e), h = new xi(e.b, 0); h.b < h.d.gc(); ) + if (f = (oe(h.b < h.d.gc()), u(h.d.Xb(h.c = h.b++), 30)), a = f.a, a.c.length != 0) + for (i = null, r = null, c = null, s = null, l = 0; l < a.c.length; l++) + i = (Ln(l, a.c.length), u(a.c[l], 10)), r = i.k, r == (Vn(), Mi) && s == Mi && (d = fIe(i, c), d.a && (fAe(i, c, d.b, d.c), Ln(l, a.c.length), Iz(a.c, l, 1), --l, i = c, r = s)), c = i, s = r; + t.Vg(); + } + function LUn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + if (e == t) + return !0; + if (e = Gnn(n, e), t = Gnn(n, t), i = Lx(e), i) { + if (a = Lx(t), a != i) + return a ? (h = i.mk(), m = a.mk(), h == m && h != null) : !1; + if (s = (!e.d && (e.d = new ti(Er, e, 1)), e.d), c = s.i, g = (!t.d && (t.d = new ti(Er, t, 1)), t.d), c == g.i) { + for (l = 0; l < c; ++l) + if (r = u(L(s, l), 89), d = u(L(g, l), 89), !LUn(n, r, d)) + return !1; + } + return !0; + } else + return f = e.e, p = t.e, f == p; + } + function NUn(n, e, t, i) { + var r, c, s, f, h, l, a, d; + if (Sl(n.e, e)) { + for (d = cu(n.e.Dh(), e), c = u(n.g, 124), a = null, h = -1, f = -1, r = 0, l = 0; l < n.i; ++l) + s = c[l], d.am(s.Lk()) && (r == t && (h = l), r == i && (f = l, a = s.md()), ++r); + if (h == -1) + throw M(new Ir(vK + t + Td + r)); + if (f == -1) + throw M(new Ir(kK + i + Td + r)); + return k5(n, h, f), fo(n.e) && t4(n, V1(n, 7, e, Y(i), a, t, !0)), a; + } else + throw M(new Gn("The feature must be many-valued to support move")); + } + function $Un(n, e, t, i) { + var r, c, s, f, h; + switch (h = new rr(e.n), h.a += e.o.a / 2, h.b += e.o.b / 2, f = $(R(v(e, (cn(), Kw)))), c = n.f, s = n.d, r = n.c, u(v(e, (W(), gc)), 64).g) { + case 1: + h.a += s.b + r.a - t / 2, h.b = -i - f, e.n.b = -(s.d + f + r.b); + break; + case 2: + h.a = c.a + s.b + s.c + f, h.b += s.d + r.b - i / 2, e.n.a = c.a + s.c + f - r.a; + break; + case 3: + h.a += s.b + r.a - t / 2, h.b = c.b + s.d + s.a + f, e.n.b = c.b + s.a + f - r.b; + break; + case 4: + h.a = -t - f, h.b += s.d + r.b - i / 2, e.n.a = -(s.b + f + r.a); + } + return h; + } + function xUn(n) { + var e, t, i, r, c, s; + return i = new CQ(), Ur(i, n), x(v(i, (cn(), Do))) === x((ci(), Jf)) && U(i, Do, KT(i)), v(i, (JM(), b9)) == null && (s = u(JKn(n), 167), U(i, b9, PC(s.of(b9)))), U(i, (W(), st), n), U(i, qc, (e = u(of(cH), 9), new _o(e, u(xs(e, e.length), 9), 0))), r = dDe((At(n) && (c0(), new Qd(At(n))), c0(), new ML(At(n) ? new Qd(At(n)) : null, n)), Xr), c = u(v(i, lhn), 107), t = i.d, bOn(t, c), bOn(t, r), i; + } + function wPe(n, e, t) { + var i, r; + i = e.c.i, r = t.d.i, i.k == (Vn(), Mi) ? (U(n, (W(), yf), u(v(i, yf), 12)), U(n, Es, u(v(i, Es), 12)), U(n, $w, un(v(i, $w)))) : i.k == Sc ? (U(n, (W(), yf), u(v(i, yf), 12)), U(n, Es, u(v(i, Es), 12)), U(n, $w, (_n(), !0))) : r.k == Sc ? (U(n, (W(), yf), u(v(r, yf), 12)), U(n, Es, u(v(r, Es), 12)), U(n, $w, (_n(), !0))) : (U(n, (W(), yf), e.c), U(n, Es, t.d)); + } + function gPe(n) { + var e, t, i, r, c, s, f; + for (n.o = new Cg(), i = new Ct(), s = new C(n.e.a); s.a < s.c.c.length; ) + c = u(E(s), 125), xg(c).c.length == 1 && Kt(i, c, i.c.b, i.c); + for (; i.b != 0; ) + c = u(i.b == 0 ? null : (oe(i.b != 0), Xo(i, i.a.a)), 125), xg(c).c.length != 0 && (e = u(sn(xg(c), 0), 218), t = c.g.a.c.length > 0, f = HT(e, c), WX(t ? f.b : f.g, e), xg(f).c.length == 1 && Kt(i, f, i.c.b, i.c), r = new bi(c, e), W1(n.o, r), bu(n.e.a, c)); + } + function FUn(n, e) { + var t, i, r, c, s, f, h; + return i = y.Math.abs(gM(n.b).a - gM(e.b).a), f = y.Math.abs(gM(n.b).b - gM(e.b).b), r = 0, h = 0, t = 1, s = 1, i > n.b.b / 2 + e.b.b / 2 && (r = y.Math.min(y.Math.abs(n.b.c - (e.b.c + e.b.b)), y.Math.abs(n.b.c + n.b.b - e.b.c)), t = 1 - r / i), f > n.b.a / 2 + e.b.a / 2 && (h = y.Math.min(y.Math.abs(n.b.d - (e.b.d + e.b.a)), y.Math.abs(n.b.d + n.b.a - e.b.d)), s = 1 - h / f), c = y.Math.min(t, s), (1 - c) * y.Math.sqrt(i * i + f * f); + } + function pPe(n) { + var e, t, i, r; + for (JF(n, n.e, n.f, (M0(), Ca), !0, n.c, n.i), JF(n, n.e, n.f, Ca, !1, n.c, n.i), JF(n, n.e, n.f, I2, !0, n.c, n.i), JF(n, n.e, n.f, I2, !1, n.c, n.i), dPe(n, n.c, n.e, n.f, n.i), i = new xi(n.i, 0); i.b < i.d.gc(); ) + for (e = (oe(i.b < i.d.gc()), u(i.d.Xb(i.c = i.b++), 131)), r = new xi(n.i, i.b); r.b < r.d.gc(); ) + t = (oe(r.b < r.d.gc()), u(r.d.Xb(r.c = r.b++), 131)), iOe(e, t); + TLe(n.i, u(v(n.d, (W(), S3)), 234)), KOe(n.i); + } + function OF(n, e) { + var t, i; + if (e != null) { + if (i = K0(n), i) + if (i.i & 1) { + if (i == so) + return Nb(e); + if (i == ye) + return D(e, 17); + if (i == cg) + return D(e, 161); + if (i == Bu) + return D(e, 222); + if (i == fs) + return D(e, 180); + if (i == Ii) + return $b(e); + if (i == V2) + return D(e, 191); + if (i == Fa) + return D(e, 168); + } else + return iC(), t = u(ee(yO, i), 57), !t || t.fk(e); + else if (D(e, 58)) + return n.dl(u(e, 58)); + } + return !1; + } + function Ren() { + Ren = F; + var n, e, t, i, r, c, s, f, h; + for (nh = K(Bu, s2, 28, 255, 15, 1), O1 = K(fs, gh, 28, 64, 15, 1), e = 0; e < 255; e++) + nh[e] = -1; + for (t = 90; t >= 65; t--) + nh[t] = t - 65 << 24 >> 24; + for (i = 122; i >= 97; i--) + nh[i] = i - 97 + 26 << 24 >> 24; + for (r = 57; r >= 48; r--) + nh[r] = r - 48 + 52 << 24 >> 24; + for (nh[43] = 62, nh[47] = 63, c = 0; c <= 25; c++) + O1[c] = 65 + c & ui; + for (s = 26, h = 0; s <= 51; ++s, h++) + O1[s] = 97 + h & ui; + for (n = 52, f = 0; n <= 61; ++n, f++) + O1[n] = 48 + f & ui; + O1[62] = 43, O1[63] = 47; + } + function BUn(n, e) { + var t, i, r, c, s, f; + return r = FQ(n), f = FQ(e), r == f ? n.e == e.e && n.a < 54 && e.a < 54 ? n.f < e.f ? -1 : n.f > e.f ? 1 : 0 : (i = n.e - e.e, t = (n.d > 0 ? n.d : y.Math.floor((n.a - 1) * Gzn) + 1) - (e.d > 0 ? e.d : y.Math.floor((e.a - 1) * Gzn) + 1), t > i + 1 ? r : t < i - 1 ? -r : (c = (!n.c && (n.c = J7(kc(n.f))), n.c), s = (!e.c && (e.c = J7(kc(e.f))), e.c), i < 0 ? c = Ig(c, WUn(-i)) : i > 0 && (s = Ig(s, WUn(i))), VBn(c, s))) : r < f ? -1 : 1; + } + function mPe(n, e, t) { + var i, r, c, s, f, h, l, a; + for (t.Ug(MXn, 1), n.vf(e), c = 0; n.xf(c) && !t.$g(); ) { + for (n.wf(), a = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [e.e, e.d, e.b]))); pe(a); ) + for (h = u(fe(a), 309), f = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [e.e, e.d, e.b]))); pe(f); ) + s = u(fe(f), 309), s != h && (r = n.uf(s, h), r && it(h.c, r)); + for (l = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [e.e, e.d, e.b]))); pe(l); ) + h = u(fe(l), 309), i = h.c, s_n(i, -n.d, -n.d, n.d, n.d), it(h.d, i), i.a = 0, i.b = 0; + ++c; + } + t.Vg(); + } + function vPe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (n.dc()) + return new Li(); + for (l = 0, d = 0, r = n.Kc(); r.Ob(); ) + i = u(r.Pb(), 36), c = i.f, l = y.Math.max(l, c.a), d += c.a * c.b; + for (l = y.Math.max(l, y.Math.sqrt(d) * $(R(v(u(n.Kc().Pb(), 36), (cn(), oI))))), g = 0, p = 0, h = 0, t = e, f = n.Kc(); f.Ob(); ) + s = u(f.Pb(), 36), a = s.f, g + a.a > l && (g = 0, p += h + e, h = 0), Sm(s, g, p), t = y.Math.max(t, g + a.a), h = y.Math.max(h, a.b), g += a.a + e; + return new V(t + e, p + h + e); + } + function Ken(n, e) { + var t, i, r, c, s, f, h; + if (!Sf(n)) + throw M(new Or(tWn)); + if (i = Sf(n), c = i.g, r = i.f, c <= 0 && r <= 0) + return en(), sc; + switch (f = n.i, h = n.j, e.g) { + case 2: + case 1: + if (f < 0) + return en(), Wn; + if (f + n.g > c) + return en(), Zn; + break; + case 4: + case 3: + if (h < 0) + return en(), Xn; + if (h + n.f > r) + return en(), ae; + } + return s = (f + n.g / 2) / c, t = (h + n.f / 2) / r, s + t <= 1 && s - t <= 0 ? (en(), Wn) : s + t >= 1 && s - t >= 0 ? (en(), Zn) : t < 0.5 ? (en(), Xn) : (en(), ae); + } + function kPe(n, e, t, i, r) { + var c, s; + if (c = nr(vi(e[0], vr), vi(i[0], vr)), n[0] = Ae(c), c = w0(c, 32), t >= r) { + for (s = 1; s < r; s++) + c = nr(c, nr(vi(e[s], vr), vi(i[s], vr))), n[s] = Ae(c), c = w0(c, 32); + for (; s < t; s++) + c = nr(c, vi(e[s], vr)), n[s] = Ae(c), c = w0(c, 32); + } else { + for (s = 1; s < t; s++) + c = nr(c, nr(vi(e[s], vr), vi(i[s], vr))), n[s] = Ae(c), c = w0(c, 32); + for (; s < r; s++) + c = nr(c, vi(i[s], vr)), n[s] = Ae(c), c = w0(c, 32); + } + Cc(c, 0) != 0 && (n[s] = Ae(c)); + } + function bw(n) { + nt(); + var e, t, i, r, c, s; + if (n.e != 4 && n.e != 5) + throw M(new Gn("Token#complementRanges(): must be RANGE: " + n.e)); + for (c = n, Gg(c), z5(c), i = c.b.length + 2, c.b[0] == 0 && (i -= 2), t = c.b[c.b.length - 1], t == cv && (i -= 2), r = new yo(4), r.b = K(ye, _e, 28, i, 15, 1), s = 0, c.b[0] > 0 && (r.b[s++] = 0, r.b[s++] = c.b[0] - 1), e = 1; e < c.b.length - 2; e += 2) + r.b[s++] = c.b[e] + 1, r.b[s++] = c.b[e + 1] - 1; + return t != cv && (r.b[s++] = t + 1, r.b[s] = cv), r.a = !0, r; + } + function yPe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (e.Ug("Layer constraint edge reversal", 1), s = new C(n.b); s.a < s.c.c.length; ) { + for (c = u(E(s), 30), a = -1, t = new Z(), l = Y7(c.a), r = 0; r < l.length; r++) + i = u(v(l[r], (W(), Od)), 311), a == -1 ? i != (vl(), k2) && (a = r) : i == (vl(), k2) && ($i(l[r], null), uw(l[r], a++, c)), i == (vl(), E3) && Kn(t.c, l[r]); + for (h = new C(t); h.a < h.c.c.length; ) + f = u(E(h), 10), $i(f, null), $i(f, c); + } + e.Vg(); + } + function DF(n, e, t) { + var i, r, c, s, f, h, l, a; + if (i = t.gc(), i == 0) + return !1; + if (n.Pj()) + if (l = n.Qj(), Zx(n, e, t), s = i == 1 ? n.Ij(3, null, t.Kc().Pb(), e, l) : n.Ij(5, null, t, e, l), n.Mj()) { + for (f = i < 100 ? null : new F1(i), c = e + i, r = e; r < c; ++r) + a = n.g[r], f = n.Nj(a, f), f = n.Uj(a, f); + f ? (f.nj(s), f.oj()) : n.Jj(s); + } else + n.Jj(s); + else if (Zx(n, e, t), n.Mj()) { + for (f = i < 100 ? null : new F1(i), c = e + i, r = e; r < c; ++r) + h = n.g[r], f = n.Nj(h, f); + f && f.oj(); + } + return !0; + } + function jPe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (e.Ug("Hierarchical port dummy size processing", 1), h = new Z(), a = new Z(), i = $(R(v(n, (cn(), M2)))), t = i * 2, c = new C(n.b); c.a < c.c.c.length; ) { + for (r = u(E(c), 30), h.c.length = 0, a.c.length = 0, f = new C(r.a); f.a < f.c.c.length; ) + s = u(E(f), 10), s.k == (Vn(), Zt) && (l = u(v(s, (W(), gc)), 64), l == (en(), Xn) ? Kn(h.c, s) : l == ae && Kn(a.c, s)); + pHn(h, !0, t), pHn(a, !1, t); + } + e.Vg(); + } + function _en(n, e, t, i) { + var r, c, s, f, h; + for (s = new C(n.k); s.a < s.c.c.length; ) + r = u(E(s), 132), (!i || r.c == (af(), Ea)) && (h = r.b, h.g < 0 && r.d > 0 && (JO(h, h.d - r.d), r.c == (af(), Ea) && rfe(h, h.a - r.d), h.d <= 0 && h.i > 0 && Kt(e, h, e.c.b, e.c))); + for (c = new C(n.f); c.a < c.c.c.length; ) + r = u(E(c), 132), (!i || r.c == (af(), Ea)) && (f = r.a, f.g < 0 && r.d > 0 && (SE(f, f.i - r.d), r.c == (af(), Ea) && cfe(f, f.b - r.d), f.i <= 0 && f.d > 0 && Kt(t, f, t.c.b, t.c))); + } + function EPe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p; + for (Dn(), Yt(n, new Qmn()), s = $7(n), p = new Z(), g = new Z(), f = null, h = 0; s.b != 0; ) + c = u(s.b == 0 ? null : (oe(s.b != 0), Xo(s, s.a.a)), 163), !f || Pu(f) * ao(f) / 2 < Pu(c) * ao(c) ? (f = c, Kn(p.c, c)) : (h += Pu(c) * ao(c), Kn(g.c, c), g.c.length > 1 && (h > Pu(f) * ao(f) / 2 || s.b == 0) && (d = new hT(g), a = Pu(f) / ao(f), l = QF(d, e, new up(), t, i, r, a), it(ff(d.e), l), f = d, Kn(p.c, d), h = 0, g.c.length = 0)); + return hi(p, g), p; + } + function Oc(n, e, t, i, r) { + fl(); + var c, s, f, h, l, a, d; + if (IW(n, "src"), IW(t, "dest"), d = wo(n), h = wo(t), WV((d.i & 4) != 0, "srcType is not an array"), WV((h.i & 4) != 0, "destType is not an array"), a = d.c, s = h.c, WV(a.i & 1 ? a == s : (s.i & 1) == 0, "Array types don't match"), f6e(n, e, t, i, r), !(a.i & 1) && d != h) + if (l = cd(n), c = cd(t), x(n) === x(t) && e < i) + for (e += r, f = i + r; f-- > i; ) + Rt(c, f, l[--e]); + else + for (f = i + r; i < f; ) + Rt(c, i++, l[e++]); + else + Rnn(n, e, t, i, r, !0); + } + function RUn(n, e) { + var t, i, r, c, s, f, h, l, a; + switch (e.Ug("Box layout", 2), r = J9(R(z(n, (mA(), Aue)))), c = u(z(n, Tue), 107), t = on(un(z(n, aan))), i = on(un(z(n, dan))), u(z(n, Wq), 320).g) { + case 0: + s = (a = new _u((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)), Dn(), Yt(a, new Nkn(i)), a), f = Enn(n), h = R(z(n, lan)), (h == null || (Jn(h), h <= 0)) && (h = 1.3), l = eLe(s, r, c, f.a, f.b, t, (Jn(h), h)), G0(n, l.a, l.b, !1, !0); + break; + default: + XIe(n, r, c, t); + } + e.Vg(); + } + function CPe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m; + for (g = Wke(n, t), h = 0; h < e; h++) { + for (Rb(r, t), p = new Z(), m = (oe(i.b < i.d.gc()), u(i.d.Xb(i.c = i.b++), 418)), a = g + h; a < n.b; a++) + f = m, m = (oe(i.b < i.d.gc()), u(i.d.Xb(i.c = i.b++), 418)), nn(p, new bqn(f, m, t)); + for (d = g + h; d < n.b; d++) + oe(i.b > 0), i.a.Xb(i.c = --i.b), d > g + h && bo(i); + for (s = new C(p); s.a < s.c.c.length; ) + c = u(E(s), 418), Rb(i, c); + if (h < e - 1) + for (l = g + h; l < n.b; l++) + oe(i.b > 0), i.a.Xb(i.c = --i.b); + } + } + function MPe() { + nt(); + var n, e, t, i, r, c; + if (OU) + return OU; + for (n = new yo(4), gw(n, sa(FK, !0)), V5(n, sa("M", !0)), V5(n, sa("C", !0)), c = new yo(4), i = 0; i < 11; i++) + Fc(c, i, i); + return e = new yo(4), gw(e, sa("M", !0)), Fc(e, 4448, 4607), Fc(e, 65438, 65439), r = new S6(2), pd(r, n), pd(r, K9), t = new S6(2), t.Jm(uM(c, sa("L", !0))), t.Jm(e), t = new Xb(3, t), t = new PW(r, t), OU = t, OU; + } + function ww(n, e) { + var t, i, r, c, s, f, h, l; + for (t = new RegExp(e, "g"), h = K(fn, J, 2, 0, 6, 1), i = 0, l = n, c = null; ; ) + if (f = t.exec(l), f == null || l == "") { + h[i] = l; + break; + } else + s = f.index, h[i] = (Fi(0, s, l.length), l.substr(0, s)), l = qo(l, s + f[0].length, l.length), t.lastIndex = 0, c == l && (h[i] = (Fi(0, 1, l.length), l.substr(0, 1)), l = (zn(1, l.length + 1), l.substr(1))), c = l, ++i; + if (n.length > 0) { + for (r = h.length; r > 0 && h[r - 1] == ""; ) + --r; + r < h.length && (h.length = r); + } + return h; + } + function lc() { + lc = F, Dln = new f0(20), Oln = new Ni((He(), C1), Dln), fq = new Ni(qd, 20), Nln = new Ni(zan, 3), jre = new Ni(x2, Gm), FI = new Ni(Jj, Y(1)), Ore = new Ni(hU, (_n(), !0)), Aln = zj, Sln = (ci(), Jf), vb = new Ni(_d, Sln), Ere = Vj, Cre = tU, Tre = Hd, Are = Vw, Sre = _2, Pre = Ta, Mre = K2, Iln = Wj, Ire = Ww, xln = (Unn(), yre), Lln = vre, Nre = k9, $re = cO, Lre = Qj, Dre = rO, $ln = (Gp(), Yw), new Ni(x3, $ln), O2 = mre, sq = pre, Sh = kre, Tln = wre, Pln = gre; + } + function TPe(n) { + var e, t; + if (e = Oe(z(n, (He(), $v))), !Bxn(e, n) && !Lf(n, q2) && ((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a).i != 0 || on(un(z(n, Xj))))) + if (e == null || fw(e).length == 0) { + if (!Bxn(Yn, n)) + throw t = Re(Re(new mo("Unable to load default layout algorithm "), Yn), " for unconfigured node "), GA(n, t), M(new _l(t.a)); + } else + throw t = Re(Re(new mo("Layout algorithm '"), e), "' not found for "), GA(n, t), M(new _l(t.a)); + } + function LF(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + if (t = n.i, e = n.n, n.b == 0) + for (p = t.c + e.b, g = t.b - e.b - e.c, s = n.a, h = 0, a = s.length; h < a; ++h) + r = s[h], hM(r, p, g); + else + i = PRn(n, !1), hM(n.a[0], t.c + e.b, i[0]), hM(n.a[2], t.c + t.b - e.c - i[2], i[2]), d = t.b - e.b - e.c, i[0] > 0 && (d -= i[0] + n.c, i[0] += n.c), i[2] > 0 && (d -= i[2] + n.c), i[1] = y.Math.max(i[1], d), hM(n.a[1], t.c + e.b + i[0] - (i[1] - d) / 2, i[1]); + for (c = n.a, f = 0, l = c.length; f < l; ++f) + r = c[f], D(r, 336) && u(r, 336).lf(); + } + function APe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (d = new M3n(), d.d = 0, s = new C(n.b); s.a < s.c.c.length; ) + c = u(E(s), 30), d.d += c.a.c.length; + for (i = 0, r = 0, d.a = K(ye, _e, 28, n.b.c.length, 15, 1), l = 0, a = 0, d.e = K(ye, _e, 28, d.d, 15, 1), t = new C(n.b); t.a < t.c.c.length; ) + for (e = u(E(t), 30), e.p = i++, d.a[e.p] = r++, a = 0, h = new C(e.a); h.a < h.c.c.length; ) + f = u(E(h), 10), f.p = l++, d.e[f.p] = a++; + return d.c = new okn(d), d.b = Dh(d.d), zSe(d, n), d.f = Dh(d.d), XSe(d, n), d; + } + function KUn(n, e) { + var t, i, r, c; + for (c = u(sn(n.n, n.n.c.length - 1), 209).d, n.p = y.Math.min(n.p, e.g), n.r = y.Math.max(n.r, c), n.g = y.Math.max(n.g, e.g + (n.b.c.length == 1 ? 0 : n.i)), n.o = y.Math.min(n.o, e.f), n.e += e.f + (n.b.c.length == 1 ? 0 : n.i), n.f = y.Math.max(n.f, e.f), r = n.n.c.length > 0 ? (n.n.c.length - 1) * n.i : 0, i = new C(n.n); i.a < i.c.c.length; ) + t = u(E(i), 209), r += t.a; + n.d = r, n.a = n.e / n.b.c.length - n.i * ((n.b.c.length - 1) / n.b.c.length), yZ(n.j); + } + function _Un(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (a = un(v(e, (Us(), tZn))), a == null || (Jn(a), a)) { + for (d = K(so, Xh, 28, e.e.c.length, 16, 1), s = bCe(e), r = new Ct(), l = new C(e.e); l.a < l.c.c.length; ) + f = u(E(l), 153), t = nen(n, f, null, null, d, s), t && (Ur(t, e), Kt(r, t, r.c.b, r.c)); + if (r.b > 1) + for (i = ge(r, 0); i.b != i.d.c; ) + for (t = u(be(i), 235), c = 0, h = new C(t.e); h.a < h.c.c.length; ) + f = u(E(h), 153), f.a = c++; + return r; + } + return Of(A(T(vNe, 1), EXn, 235, 0, [e])); + } + function bh(n) { + var e, t, i, r, c, s, f; + if (!n.g) { + if (f = new qO(), e = N9, s = e.a.zc(n, e), s == null) { + for (i = new ne(Hr(n)); i.e != i.i.gc(); ) + t = u(ue(i), 29), Ht(f, bh(t)); + e.a.Bc(n) != null, e.a.gc() == 0; + } + for (r = f.i, c = (!n.s && (n.s = new q(yu, n, 21, 17)), new ne(n.s)); c.e != c.i.gc(); ++r) + dfe(u(ue(c), 462), r); + Ht(f, (!n.s && (n.s = new q(yu, n, 21, 17)), n.s)), ew(f), n.g = new wFn(n, f), n.i = u(f.g, 254), n.i == null && (n.i = CU), n.p = null, Zu(n).b &= -5; + } + return n.g; + } + function SPe(n, e) { + var t, i, r, c, s, f, h, l, a; + if (t = e.qi(n.a), t && (h = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), "memberTypes")), h != null)) { + for (l = new Z(), c = ww(h, "\\w"), s = 0, f = c.length; s < f; ++s) + r = c[s], i = r.lastIndexOf("#"), a = i == -1 ? rV(n, e.jk(), r) : i == 0 ? ok(n, null, (zn(1, r.length + 1), r.substr(1))) : ok(n, (Fi(0, i, r.length), r.substr(0, i)), (zn(i + 1, r.length + 1), r.substr(i + 1))), D(a, 156) && nn(l, u(a, 156)); + return l; + } + return Dn(), Dn(), sr; + } + function NF(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m; + if (i = n.i, t = n.n, n.b == 0) + e = SRn(n, !1), lM(n.a[0], i.d + t.d, e[0]), lM(n.a[2], i.d + i.a - t.a - e[2], e[2]), g = i.a - t.d - t.a, d = g, e[0] > 0 && (e[0] += n.c, d -= e[0]), e[2] > 0 && (d -= e[2] + n.c), e[1] = y.Math.max(e[1], d), lM(n.a[1], i.d + t.d + e[0] - (e[1] - d) / 2, e[1]); + else + for (m = i.d + t.d, p = i.a - t.d - t.a, s = n.a, h = 0, a = s.length; h < a; ++h) + r = s[h], lM(r, m, p); + for (c = n.a, f = 0, l = c.length; f < l; ++f) + r = c[f], D(r, 336) && u(r, 336).mf(); + } + function PPe(n) { + var e, t, i, r, c, s, f, h, l, a; + for (a = K(ye, _e, 28, n.b.c.length + 1, 15, 1), l = new ni(), i = 0, c = new C(n.b); c.a < c.c.c.length; ) { + for (r = u(E(c), 30), a[i++] = l.a.gc(), h = new C(r.a); h.a < h.c.c.length; ) + for (s = u(E(h), 10), t = new ie(ce(Qt(s).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), l.a.zc(e, l); + for (f = new C(r.a); f.a < f.c.c.length; ) + for (s = u(E(f), 10), t = new ie(ce(ji(s).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), l.a.Bc(e) != null; + } + return a; + } + function RA(n, e, t, i) { + var r, c, s, f, h; + if (h = cu(n.e.Dh(), e), r = u(n.g, 124), br(), u(e, 69).xk()) { + for (s = 0; s < n.i; ++s) + if (c = r[s], h.am(c.Lk()) && ct(c, t)) + return !0; + } else if (t != null) { + for (f = 0; f < n.i; ++f) + if (c = r[f], h.am(c.Lk()) && ct(t, c.md())) + return !0; + if (i) { + for (s = 0; s < n.i; ++s) + if (c = r[s], h.am(c.Lk()) && x(t) === x(IL(n, u(c.md(), 58)))) + return !0; + } + } else + for (s = 0; s < n.i; ++s) + if (c = r[s], h.am(c.Lk()) && c.md() == null) + return !1; + return !1; + } + function IPe(n, e) { + var t, i, r, c, s, f; + if (t = e.qi(n.a), t && (f = Oe(gf((!t.b && (t.b = new lo((On(), ar), pc, t)), t.b), KS)), f != null)) + switch (r = FC(f, gu(35)), i = e.qk(), r == -1 ? (s = R6(n, jo(i)), c = f) : r == 0 ? (s = null, c = (zn(1, f.length + 1), f.substr(1))) : (s = (Fi(0, r, f.length), f.substr(0, r)), c = (zn(r + 1, f.length + 1), f.substr(r + 1))), y0(Lr(n, e))) { + case 2: + case 3: + return h6e(n, i, s, c); + case 0: + case 4: + case 5: + case 6: + return l6e(n, i, s, c); + } + return null; + } + function HUn(n, e, t, i) { + var r, c, s, f; + for (f = t, s = new C(e.a); s.a < s.c.c.length; ) { + if (c = u(E(s), 225), r = u(c.b, 68), x0(n.b.c, r.b.c + r.b.b) <= 0 && x0(r.b.c, n.b.c + n.b.b) <= 0 && x0(n.b.d, r.b.d + r.b.a) <= 0 && x0(r.b.d, n.b.d + n.b.a) <= 0) { + if (x0(r.b.c, n.b.c + n.b.b) == 0 && i.a < 0 || x0(r.b.c + r.b.b, n.b.c) == 0 && i.a > 0 || x0(r.b.d, n.b.d + n.b.a) == 0 && i.b < 0 || x0(r.b.d + r.b.a, n.b.d) == 0 && i.b > 0) { + f = 0; + break; + } + } else + f = y.Math.min(f, F_n(n, r, i)); + f = y.Math.min(f, HUn(n, c, f, i)); + } + return f; + } + function dy(n, e) { + var t, i, r, c, s, f, h; + if (n.b < 2) + throw M(new Gn("The vector chain must contain at least a source and a target point.")); + for (r = (oe(n.b != 0), u(n.a.a.c, 8)), j7(e, r.a, r.b), h = new kp((!e.a && (e.a = new ti(xo, e, 5)), e.a)), s = ge(n, 1); s.a < n.b - 1; ) + f = u(be(s), 8), h.e != h.i.gc() ? t = u(ue(h), 377) : (t = (B1(), i = new yE(), i), DBn(h, t)), gL(t, f.a, f.b); + for (; h.e != h.i.gc(); ) + ue(h), O5(h); + c = (oe(n.b != 0), u(n.c.b.c, 8)), y7(e, c.a, c.b); + } + function qUn(n, e, t, i) { + var r, c, s, f, h, l; + if (l = cu(n.e.Dh(), e), s = u(n.g, 124), Sl(n.e, e)) { + if (e.Si() && (c = Om(n, e, i, D(e, 102) && (u(e, 19).Bb & hr) != 0), c >= 0 && c != t)) + throw M(new Gn(Vy)); + for (r = 0, h = 0; h < n.i; ++h) + if (f = s[h], l.am(f.Lk())) { + if (r == t) + return u(Rg(n, h, (br(), u(e, 69).xk() ? u(i, 76) : Fh(e, i))), 76); + ++r; + } + throw M(new Ir(p8 + t + Td + r)); + } else { + for (h = 0; h < n.i; ++h) + if (f = s[h], l.am(f.Lk())) + return br(), u(e, 69).xk() ? f : f.md(); + return null; + } + } + function UUn(n, e) { + var t, i, r, c, s, f, h, l, a; + for (t = 0, r = new C((Ln(0, n.c.length), u(n.c[0], 105)).g.b.j); r.a < r.c.c.length; ) + i = u(E(r), 12), i.p = t++; + for (e == (en(), Xn) ? Yt(n, new Apn()) : Yt(n, new Spn()), f = 0, a = n.c.length - 1; f < a; ) + s = (Ln(f, n.c.length), u(n.c[f], 105)), l = (Ln(a, n.c.length), u(n.c[a], 105)), c = e == Xn ? s.c : s.a, h = e == Xn ? l.a : l.c, Vl(s, e, (xf(), av), c), Vl(l, e, lv, h), ++f, --a; + f == a && Vl((Ln(f, n.c.length), u(n.c[f], 105)), e, (xf(), j3), null); + } + function OPe(n, e, t, i) { + var r, c, s, f, h, l; + for (s = new yGn(n, e, t), h = new xi(i, 0), r = !1; h.b < h.d.gc(); ) + f = (oe(h.b < h.d.gc()), u(h.d.Xb(h.c = h.b++), 239)), f == e || f == t ? bo(h) : !r && $(Af(f.g, f.d[0]).a) > $(Af(s.g, s.d[0]).a) ? (oe(h.b > 0), h.a.Xb(h.c = --h.b), Rb(h, s), r = !0) : f.e && f.e.gc() > 0 && (c = (!f.e && (f.e = new Z()), f.e).Mc(e), l = (!f.e && (f.e = new Z()), f.e).Mc(t), (c || l) && ((!f.e && (f.e = new Z()), f.e).Fc(s), ++s.c)); + r || Kn(i.c, s); + } + function DPe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + return d = n.a.i + n.a.g / 2, g = n.a.i + n.a.g / 2, m = e.i + e.g / 2, j = e.j + e.f / 2, f = new V(m, j), l = u(z(e, (He(), N3)), 8), l.a = l.a + d, l.b = l.b + g, c = (f.b - l.b) / (f.a - l.a), i = f.b - c * f.a, k = t.i + t.g / 2, S = t.j + t.f / 2, h = new V(k, S), a = u(z(t, N3), 8), a.a = a.a + d, a.b = a.b + g, s = (h.b - a.b) / (h.a - a.a), r = h.b - s * h.a, p = (i - r) / (s - c), l.a < p && f.a < p || p < l.a && p < f.a ? !1 : !(a.a < p && h.a < p || p < a.a && p < h.a); + } + function LPe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (g = u(ee(n.c, e), 190), !g) + throw M(new eh("Edge did not exist in input.")); + return l = wm(g), c = Z9((!e.a && (e.a = new q(Mt, e, 6, 6)), e.a)), f = !c, f && (p = new _a(), t = new ySn(n, l, p), jle((!e.a && (e.a = new q(Mt, e, 6, 6)), e.a), t), bf(g, Pcn, p)), r = Lf(e, (He(), kb)), r && (a = u(z(e, kb), 75), s = !a || sIn(a), h = !s, h && (d = new _a(), i = new ryn(d), qi(a, i), bf(g, "junctionPoints", d))), j4(g, "container", V7(e).k), null; + } + function GUn(n, e, t, i) { + var r, c, s, f, h, l; + if (!N4(e)) { + if (l = t.eh((D(e, 16) ? u(e, 16).gc() : wl(e.Kc())) / n.a | 0), l.Ug(bVn, 1), h = new l4n(), f = 0, i == (ci(), Br) || i == Xr) + for (s = e.Kc(); s.Ob(); ) + r = u(s.Pb(), 40), h = Eo(A(T(Oo, 1), Bn, 20, 0, [h, new sl(r)])), f < r.f.a && (f = r.f.a); + else + for (s = e.Kc(); s.Ob(); ) + r = u(s.Pb(), 40), h = Eo(A(T(Oo, 1), Bn, 20, 0, [h, new sl(r)])), f < r.f.b && (f = r.f.b); + for (c = e.Kc(); c.Ob(); ) + r = u(c.Pb(), 40), U(r, (pt(), xI), f); + l.Vg(), GUn(n, h, t, i); + } + } + function Hen(n, e, t) { + var i, r, c, s, f, h, l, a; + this.a = n, this.b = e, this.c = t, this.e = Of(A(T(gNe, 1), Bn, 177, 0, [new bp(n, e), new bp(e, t), new bp(t, n)])), this.f = Of(A(T(Ei, 1), J, 8, 0, [n, e, t])), this.d = (i = mi(Ki(this.b), this.a), r = mi(Ki(this.c), this.a), c = mi(Ki(this.c), this.b), s = i.a * (this.a.a + this.b.a) + i.b * (this.a.b + this.b.b), f = r.a * (this.a.a + this.c.a) + r.b * (this.a.b + this.c.b), h = 2 * (i.a * c.b - i.b * c.a), l = (r.b * s - i.b * f) / h, a = (i.a * f - r.a * s) / h, new V(l, a)); + } + function U0(n, e) { + var t, i, r, c, s, f; + for (c = n.c, s = n.d, Zi(n, null), Oi(n, null), e && on(un(v(s, (W(), aH)))) ? Zi(n, $en(s.i, (pr(), Qc), (en(), Zn))) : Zi(n, s), e && on(un(v(c, (W(), bH)))) ? Oi(n, $en(c.i, (pr(), Vu), (en(), Wn))) : Oi(n, c), i = new C(n.b); i.a < i.c.c.length; ) + t = u(E(i), 72), r = u(v(t, (cn(), Ah)), 278), r == ($f(), Bv) ? U(t, Ah, Jw) : r == Jw && U(t, Ah, Bv); + f = on(un(v(n, (W(), zf)))), U(n, zf, (_n(), !f)), n.a = Sk(n.a); + } + function NPe(n, e) { + var t, i, r, c, s; + return t = pm(u(v(e, (lc(), vb)), 88)), n.b.b == 0 ? null : (s = u(Wr(_r(new Tn(null, new In(n.b, 16)), new J3n()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), c = u(Wr(ut(new Tn(null, new In(e.b, 16)), new fkn(s)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), r = R(ho(_b(_r(c.Oc(), new hkn(t)), (j0(), j0(), ZK)))), i = u(ho(im(ut(c.Oc(), new eMn(t, r)))), 40), i); + } + function $Pe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + t = h0(new za(), n.f), l = n.i[e.c.i.p], p = n.i[e.d.i.p], h = e.c, g = e.d, f = h.a.b, d = g.a.b, l.b || (f += h.n.b), p.b || (d += g.n.b), a = wi(y.Math.max(0, f - d)), s = wi(y.Math.max(0, d - f)), m = (k = y.Math.max(1, u(v(e, (cn(), I3)), 17).a), j = TJ(e.c.i.k, e.d.i.k), k * j), r = qs(Ls(Ds(Os(Ns(new hs(), m), s), t), u(ee(n.k, e.c), 125))), c = qs(Ls(Ds(Os(Ns(new hs(), m), a), t), u(ee(n.k, e.d), 125))), i = new UCn(r, c), n.c[e.p] = i; + } + function xPe(n, e, t) { + var i, r, c, s, f, h; + for (i = 0, c = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); c.e != c.i.gc(); ) + r = u(ue(c), 27), s = "", (!r.n && (r.n = new q(Sr, r, 1, 7)), r.n).i == 0 || (s = u(L((!r.n && (r.n = new q(Sr, r, 1, 7)), r.n), 0), 135).a), f = new kTn(s), Ur(f, r), U(f, (Q1(), y3), r), f.a = i++, f.d.a = r.i + r.g / 2, f.d.b = r.j + r.f / 2, f.e.a = y.Math.max(r.g, 1), f.e.b = y.Math.max(r.f, 1), nn(e.e, f), Wc(t.f, r, f), h = u(z(r, (Us(), kon)), 101), h == (Di(), Pa) && (h = Qf); + } + function FPe(n, e) { + var t, i, r, c, s, f, h; + e.Ug("Layer constraint postprocessing", 1), h = n.b, h.c.length != 0 && (i = (Ln(0, h.c.length), u(h.c[0], 30)), s = u(sn(h, h.c.length - 1), 30), t = new Nc(n), c = new Nc(n), CSe(n, i, s, t, c), t.a.c.length == 0 || (zb(0, h.c.length), d6(h.c, 0, t)), c.a.c.length == 0 || Kn(h.c, c)), kt(n, (W(), lH)) && (r = new Nc(n), f = new Nc(n), wAe(n, r, f), r.a.c.length == 0 || (zb(0, h.c.length), d6(h.c, 0, r)), f.a.c.length == 0 || Kn(h.c, f)), e.Vg(); + } + function by(n) { + var e, t, i; + switch (n) { + case 91: + case 93: + case 45: + case 94: + case 44: + case 92: + i = "\\" + String.fromCharCode(n & ui); + break; + case 12: + i = "\\f"; + break; + case 10: + i = "\\n"; + break; + case 13: + i = "\\r"; + break; + case 9: + i = "\\t"; + break; + case 27: + i = "\\e"; + break; + default: + n < 32 ? (t = (e = n >>> 0, "0" + e.toString(16)), i = "\\x" + qo(t, t.length - 2, t.length)) : n >= hr ? (t = (e = n >>> 0, "0" + e.toString(16)), i = "\\v" + qo(t, t.length - 6, t.length)) : i = "" + String.fromCharCode(n & ui); + } + return i; + } + function zUn(n) { + var e, t, i; + if (mg(u(v(n, (cn(), Ut)), 101))) + for (t = new C(n.j); t.a < t.c.c.length; ) + e = u(E(t), 12), e.j == (en(), sc) && (i = u(v(e, (W(), Xu)), 10), i ? gi(e, u(v(i, gc), 64)) : e.e.c.length - e.g.c.length < 0 ? gi(e, Zn) : gi(e, Wn)); + else { + for (t = new C(n.j); t.a < t.c.c.length; ) + e = u(E(t), 12), i = u(v(e, (W(), Xu)), 10), i ? gi(e, u(v(i, gc), 64)) : e.e.c.length - e.g.c.length < 0 ? gi(e, (en(), Zn)) : gi(e, (en(), Wn)); + U(n, Ut, (Di(), Kv)); + } + } + function qen(n) { + var e, t, i, r, c, s; + for (this.e = new Z(), this.a = new Z(), t = n.b - 1; t < 3; t++) + g4(n, 0, u(Zo(n, 0), 8)); + if (n.b < 4) + throw M(new Gn("At (least dimension + 1) control points are necessary!")); + for (this.b = 3, this.d = !0, this.c = !1, lMe(this, n.b + this.b - 1), s = new Z(), c = new C(this.e), e = 0; e < this.b - 1; e++) + nn(s, R(E(c))); + for (r = ge(n, 0); r.b != r.d.c; ) + i = u(be(r), 8), nn(s, R(E(c))), nn(this.a, new rOn(i, s)), Ln(0, s.c.length), s.c.splice(0, 1); + } + function XUn(n, e) { + var t, i, r, c, s, f, h, l, a; + for (c = new C(n.b); c.a < c.c.c.length; ) + for (r = u(E(c), 30), f = new C(r.a); f.a < f.c.c.length; ) + for (s = u(E(f), 10), s.k == (Vn(), Sc) && (h = (l = u(fe(new ie(ce(ji(s).a.Kc(), new En()))), 18), a = u(fe(new ie(ce(Qt(s).a.Kc(), new En()))), 18), !on(un(v(l, (W(), zf)))) || !on(un(v(a, zf))) ? e : fFn(e)), t3(s, h)), i = new ie(ce(Qt(s).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), h = on(un(v(t, (W(), zf)))) ? fFn(e) : e, tFn(t, h); + } + function BPe(n, e, t, i, r) { + var c, s, f; + if (t.f >= e.o && t.f <= e.f || e.a * 0.5 <= t.f && e.a * 1.5 >= t.f) { + if (s = u(sn(e.n, e.n.c.length - 1), 209), s.e + s.d + t.g + r <= i && (c = u(sn(e.n, e.n.c.length - 1), 209), c.f - n.f + t.f <= n.b || n.a.c.length == 1)) + return FY(e, t), !0; + if (e.s + t.g <= i && (e.t + e.d + t.f + r <= n.b || n.a.c.length == 1)) + return nn(e.b, t), f = u(sn(e.n, e.n.c.length - 1), 209), nn(e.n, new NM(e.s, f.f + f.a + e.i, e.i)), pZ(u(sn(e.n, e.n.c.length - 1), 209), t), KUn(e, t), !0; + } + return !1; + } + function VUn(n, e, t) { + var i, r, c, s; + return n.Pj() ? (r = null, c = n.Qj(), i = n.Ij(1, s = d$(n, e, t), t, e, c), n.Mj() && !(n.Yi() && s != null ? ct(s, t) : x(s) === x(t)) ? (s != null && (r = n.Oj(s, r)), r = n.Nj(t, r), n.Tj() && (r = n.Wj(s, t, r)), r ? (r.nj(i), r.oj()) : n.Jj(i)) : (n.Tj() && (r = n.Wj(s, t, r)), r ? (r.nj(i), r.oj()) : n.Jj(i)), s) : (s = d$(n, e, t), n.Mj() && !(n.Yi() && s != null ? ct(s, t) : x(s) === x(t)) && (r = null, s != null && (r = n.Oj(s, null)), r = n.Nj(t, r), r && r.oj()), s); + } + function RPe(n, e) { + var t, i, r, c, s; + if (e.Ug("Path-Like Graph Wrapping", 1), n.b.c.length == 0) { + e.Vg(); + return; + } + if (r = new Xnn(n), s = (r.i == null && (r.i = BQ(r, new WU())), $(r.i) * r.f), t = s / (r.i == null && (r.i = BQ(r, new WU())), $(r.i)), r.b > t) { + e.Vg(); + return; + } + switch (u(v(n, (cn(), LH)), 351).g) { + case 2: + c = new QU(); + break; + case 0: + c = new VU(); + break; + default: + c = new YU(); + } + if (i = c.og(n, r), !c.pg()) + switch (u(v(n, jI), 352).g) { + case 2: + i = B_n(r, i); + break; + case 1: + i = PKn(r, i); + } + $Ie(n, r, i), e.Vg(); + } + function H5(n, e) { + var t, i, r, c, s, f, h, l; + e %= 24, n.q.getHours() != e && (i = new y.Date(n.q.getTime()), i.setDate(i.getDate() + 1), f = n.q.getTimezoneOffset() - i.getTimezoneOffset(), f > 0 && (h = f / 60 | 0, l = f % 60, r = n.q.getDate(), t = n.q.getHours(), t + h >= 24 && ++r, c = new y.Date(n.q.getFullYear(), n.q.getMonth(), r, e + h, n.q.getMinutes() + l, n.q.getSeconds(), n.q.getMilliseconds()), n.q.setTime(c.getTime()))), s = n.q.getTime(), n.q.setTime(s + 36e5), n.q.getHours() != e && n.q.setTime(s); + } + function KPe(n, e) { + var t, i, r, c; + if (Z2e(n.d, n.e), n.c.a.$b(), $(R(v(e.j, (cn(), hI)))) != 0 || $(R(v(e.j, hI))) != 0) + for (t = i2, x(v(e.j, Yh)) !== x((lh(), k1)) && U(e.j, (W(), ka), (_n(), !0)), c = u(v(e.j, V8), 17).a, r = 0; r < c && (i = nIe(n, e), !(i < t && (t = i, vxn(n), t == 0))); r++) + ; + else + for (t = tt, x(v(e.j, Yh)) !== x((lh(), k1)) && U(e.j, (W(), ka), (_n(), !0)), c = u(v(e.j, V8), 17).a, r = 0; r < c && (i = ZUn(n, e), !(i < t && (t = i, vxn(n), t == 0))); r++) + ; + } + function _Pe(n, e) { + var t, i, r, c, s, f, h, l; + for (s = new Z(), f = 0, t = 0, h = 0; f < e.c.length - 1 && t < n.gc(); ) { + for (i = u(n.Xb(t), 17).a + h; (Ln(f + 1, e.c.length), u(e.c[f + 1], 17)).a < i; ) + ++f; + for (l = 0, c = i - (Ln(f, e.c.length), u(e.c[f], 17)).a, r = (Ln(f + 1, e.c.length), u(e.c[f + 1], 17)).a - i, c > r && ++l, nn(s, (Ln(f + l, e.c.length), u(e.c[f + l], 17))), h += (Ln(f + l, e.c.length), u(e.c[f + l], 17)).a - i, ++t; t < n.gc() && u(n.Xb(t), 17).a + h <= (Ln(f + l, e.c.length), u(e.c[f + l], 17)).a; ) + ++t; + f += 1 + l; + } + return s; + } + function HPe(n, e) { + var t, i, r, c, s; + for (s = new ie(ce(ji(e).a.Kc(), new En())); pe(s); ) + if (c = u(fe(s), 18), n.f.b == 0 ? (r = c.c.i.k == (Vn(), Vt) && !!c.c.i.c && c.c.i.c.p == n.c, pe(new ie(ce(ji(c.c.i).a.Kc(), new En()))) ? (t = u(fe(new ie(ce(ji(c.c.i).a.Kc(), new En()))), 18).c.i.c, i = c.c.i.k == Sc && !!t && t.p == n.c) : i = !1) : (r = c.c.i.k == (Vn(), Vt) && c.c.i.p == n.c, i = c.c.i.k == Sc && u(fe(new ie(ce(ji(c.c.i).a.Kc(), new En()))), 18).c.i.p == n.c), r || i) + return !0; + return !1; + } + function qPe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (g = new Z(), S = HM(i), j = e * n.a, d = 0, m = 0, c = new ni(), s = new ni(), f = new Z(), I = 0, O = 0, p = 0, k = 0, l = 0, a = 0; S.a.gc() != 0; ) + h = F5e(S, r, s), h && (S.a.Bc(h) != null, Kn(f.c, h), c.a.zc(h, c), m = n.f[h.p], I += n.e[h.p] - m * n.b, d = n.c[h.p], O += d * n.b, a += m * n.b, k += n.e[h.p]), (!h || S.a.gc() == 0 || I >= j && n.e[h.p] > m * n.b || O >= t * j) && (Kn(g.c, f), f = new Z(), Bi(s, c), c.a.$b(), l -= a, p = y.Math.max(p, l * n.b + k), l += O, I = O, O = 0, a = 0, k = 0); + return new bi(p, g); + } + function $F(n) { + var e, t, i, r, c, s, f; + if (!n.d) { + if (f = new Evn(), e = N9, c = e.a.zc(n, e), c == null) { + for (i = new ne(Hr(n)); i.e != i.i.gc(); ) + t = u(ue(i), 29), Ht(f, $F(t)); + e.a.Bc(n) != null, e.a.gc() == 0; + } + for (s = f.i, r = (!n.q && (n.q = new q(Ss, n, 11, 10)), new ne(n.q)); r.e != r.i.gc(); ++s) + u(ue(r), 411); + Ht(f, (!n.q && (n.q = new q(Ss, n, 11, 10)), n.q)), ew(f), n.d = new pg((u(L(H((G1(), Hn).o), 9), 19), f.i), f.g), n.e = u(f.g, 688), n.e == null && (n.e = Qoe), Zu(n).b &= -17; + } + return n.d; + } + function Om(n, e, t, i) { + var r, c, s, f, h, l; + if (l = cu(n.e.Dh(), e), h = 0, r = u(n.g, 124), br(), u(e, 69).xk()) { + for (s = 0; s < n.i; ++s) + if (c = r[s], l.am(c.Lk())) { + if (ct(c, t)) + return h; + ++h; + } + } else if (t != null) { + for (f = 0; f < n.i; ++f) + if (c = r[f], l.am(c.Lk())) { + if (ct(t, c.md())) + return h; + ++h; + } + if (i) { + for (h = 0, s = 0; s < n.i; ++s) + if (c = r[s], l.am(c.Lk())) { + if (x(t) === x(IL(n, u(c.md(), 58)))) + return h; + ++h; + } + } + } else + for (s = 0; s < n.i; ++s) + if (c = r[s], l.am(c.Lk())) { + if (c.md() == null) + return h; + ++h; + } + return -1; + } + function UPe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k; + if (t.Xh(e) && (a = (p = e, p ? u(i, 54).gi(p) : null), a)) + if (k = t.Nh(e, n.a), m = e.t, m > 1 || m == -1) + if (d = u(k, 71), g = u(a, 71), d.dc()) + g.$b(); + else + for (s = !!wr(e), c = 0, f = n.a ? d.Kc() : d.Ii(); f.Ob(); ) + l = u(f.Pb(), 58), r = u(Nf(n, l), 58), r ? (s ? (h = g.dd(r), h == -1 ? g.Gi(c, r) : c != h && g.Ui(c, r)) : g.Gi(c, r), ++c) : n.b && !s && (g.Gi(c, l), ++c); + else + k == null ? a.Wb(null) : (r = Nf(n, k), r == null ? n.b && !wr(e) && a.Wb(k) : a.Wb(r)); + } + function GPe(n, e) { + var t, i, r, c, s, f, h, l; + for (t = new sgn(), r = new ie(ce(ji(e).a.Kc(), new En())); pe(r); ) + if (i = u(fe(r), 18), !fr(i) && (f = i.c.i, ZZ(f, MP))) { + if (l = men(n, f, MP, CP), l == -1) + continue; + t.b = y.Math.max(t.b, l), !t.a && (t.a = new Z()), nn(t.a, f); + } + for (s = new ie(ce(Qt(e).a.Kc(), new En())); pe(s); ) + if (c = u(fe(s), 18), !fr(c) && (h = c.d.i, ZZ(h, CP))) { + if (l = men(n, h, CP, MP), l == -1) + continue; + t.d = y.Math.max(t.d, l), !t.c && (t.c = new Z()), nn(t.c, h); + } + return t; + } + function zPe(n, e, t, i) { + var r, c, s, f, h, l, a; + if (t.d.i != e.i) { + for (r = new Tl(n), Ha(r, (Vn(), Mi)), U(r, (W(), st), t), U(r, (cn(), Ut), (Di(), Uc)), Kn(i.c, r), s = new Ic(), ic(s, r), gi(s, (en(), Wn)), f = new Ic(), ic(f, r), gi(f, Zn), a = t.d, Oi(t, s), c = new E0(), Ur(c, t), U(c, Fr, null), Zi(c, f), Oi(c, a), l = new xi(t.b, 0); l.b < l.d.gc(); ) + h = (oe(l.b < l.d.gc()), u(l.d.Xb(l.c = l.b++), 72)), x(v(h, Ah)) === x(($f(), Jw)) && (U(h, M3, t), bo(l), nn(c.b, h)); + AHn(r, s, f); + } + } + function XPe(n, e, t, i) { + var r, c, s, f, h, l, a; + if (t.c.i != e.i) + for (r = new Tl(n), Ha(r, (Vn(), Mi)), U(r, (W(), st), t), U(r, (cn(), Ut), (Di(), Uc)), Kn(i.c, r), s = new Ic(), ic(s, r), gi(s, (en(), Wn)), f = new Ic(), ic(f, r), gi(f, Zn), Oi(t, s), c = new E0(), Ur(c, t), U(c, Fr, null), Zi(c, f), Oi(c, e), AHn(r, s, f), l = new xi(t.b, 0); l.b < l.d.gc(); ) + h = (oe(l.b < l.d.gc()), u(l.d.Xb(l.c = l.b++), 72)), a = u(v(h, Ah), 278), a == ($f(), Jw) && (kt(h, M3) || U(h, M3, t), bo(l), nn(c.b, h)); + } + function WUn(n) { + Am(); + var e, t, i, r; + if (e = wi(n), n < P8.length) + return P8[e]; + if (n <= 50) + return ry((dh(), YK), e); + if (n <= d1) + return Fp(ry(m3[1], e), e); + if (n > 1e6) + throw M(new _E("power of ten too big")); + if (n <= tt) + return Fp(ry(m3[1], e), e); + for (i = ry(m3[1], tt), r = i, t = kc(n - tt), e = wi(n % tt); Cc(t, tt) > 0; ) + r = Ig(r, i), t = bs(t, tt); + for (r = Ig(r, ry(m3[1], e)), r = Fp(r, tt), t = kc(n - tt); Cc(t, tt) > 0; ) + r = Fp(r, tt), t = bs(t, tt); + return r = Fp(r, e), r; + } + function JUn(n) { + var e, t, i, r, c, s, f, h, l, a; + for (h = new C(n.a); h.a < h.c.c.length; ) + if (f = u(E(h), 10), f.k == (Vn(), Zt) && (r = u(v(f, (W(), gc)), 64), r == (en(), Zn) || r == Wn)) + for (i = new ie(ce(Cl(f).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), e = t.a, e.b != 0 && (l = t.c, l.i == f && (c = (oe(e.b != 0), u(e.a.a.c, 8)), c.b = cc(A(T(Ei, 1), J, 8, 0, [l.i.n, l.n, l.a])).b), a = t.d, a.i == f && (s = (oe(e.b != 0), u(e.c.b.c, 8)), s.b = cc(A(T(Ei, 1), J, 8, 0, [a.i.n, a.n, a.a])).b)); + } + function q5(n, e, t, i) { + var r, c, s; + if (this.j = new Z(), this.k = new Z(), this.b = new Z(), this.c = new Z(), this.e = new mp(), this.i = new Tu(), this.f = new rD(), this.d = new Z(), this.g = new Z(), nn(this.b, n), nn(this.b, e), this.e.c = y.Math.min(n.a, e.a), this.e.d = y.Math.min(n.b, e.b), this.e.b = y.Math.abs(n.a - e.a), this.e.a = y.Math.abs(n.b - e.b), r = u(v(i, (cn(), Fr)), 75), r) + for (s = ge(r, 0); s.b != s.d.c; ) + c = u(be(s), 8), dQ(c.a, n.a) && Fe(this.i, c); + t && nn(this.j, t), nn(this.k, i); + } + function VPe(n, e, t, i) { + var r, c, s, f, h, l, a; + for (f = -1, a = new C(n); a.a < a.c.c.length; ) + l = u(E(a), 118), l.g = f--, r = Ae(BM(EM(ut(new Tn(null, new In(l.f, 16)), new P3n()), new I3n())).d), c = Ae(BM(EM(ut(new Tn(null, new In(l.k, 16)), new O3n()), new D3n())).d), s = r, h = c, i || (s = Ae(BM(EM(new Tn(null, new In(l.f, 16)), new L3n())).d), h = Ae(BM(EM(new Tn(null, new In(l.k, 16)), new A3n())).d)), l.d = s, l.a = r, l.i = h, l.b = c, h == 0 ? Kt(t, l, t.c.b, t.c) : s == 0 && Kt(e, l, e.c.b, e.c); + } + function t3(n, e) { + var t, i, r, c, s, f; + if (n.k == (Vn(), Sc) && (t = n.k == Sc && !s4(ut(u(v(n, (W(), K8)), 15).Oc(), new Z3(new GU()))).Bd((Va(), v3)) ? (To(), Zj) : e, U(n, (W(), A3), t), t != (To(), Aa))) + for (i = u(v(n, st), 18), f = $(R(v(i, (cn(), m1)))), s = 0, t == nl ? s = n.o.b - y.Math.ceil(f / 2) : t == Zj && (s = y.Math.ceil(n.o.b - $(R(v(Hi(n), T2))) - f) / 2, n.o.b -= $(R(v(Hi(n), T2))), n.o.b -= f), c = new C(n.j); c.a < c.c.c.length; ) + r = u(E(c), 12), r.n.b = s; + } + function QUn(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (r = !0, s = new C(n.b); s.a < s.c.c.length; ) { + for (c = u(E(s), 30), l = li, a = null, h = new C(c.a); h.a < h.c.c.length; ) + if (f = u(E(h), 10), d = $(e.p[f.p]) + $(e.d[f.p]) - f.d.d, i = $(e.p[f.p]) + $(e.d[f.p]) + f.o.b + f.d.a, d > l && i > l) + a = f, l = $(e.p[f.p]) + $(e.d[f.p]) + f.o.b + f.d.a; + else { + r = !1, t._g() && t.bh("bk node placement breaks on " + f + " which should have been after " + a); + break; + } + if (!r) + break; + } + return t._g() && t.bh(e + " is feasible: " + r), r; + } + function Uen(n, e, t, i) { + var r, c, s, f, h, l, a, d, g; + if (c = new Tl(n), Ha(c, (Vn(), Hc)), U(c, (cn(), Ut), (Di(), Uc)), r = 0, e) { + for (s = new Ic(), U(s, (W(), st), e), U(c, st, e.i), gi(s, (en(), Wn)), ic(s, c), g = hh(e.e), l = g, a = 0, d = l.length; a < d; ++a) + h = l[a], Oi(h, s); + U(e, Xu, c), ++r; + } + if (t) { + for (f = new Ic(), U(c, (W(), st), t.i), U(f, st, t), gi(f, (en(), Zn)), ic(f, c), g = hh(t.g), l = g, a = 0, d = l.length; a < d; ++a) + h = l[a], Zi(h, f); + U(t, Xu, c), ++r; + } + return U(c, (W(), iI), Y(r)), Kn(i.c, c), c; + } + function WPe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + for (t = (l = new ol(n.c.b).a.vc().Kc(), new Sb(l)); t.a.Ob(); ) + e = (f = u(t.a.Pb(), 44), u(f.md(), 143)), r = e.a, r == null && (r = ""), i = yae(n.c, r), !i && r.length == 0 && (i = f5e(n)), i && !iw(i.c, e, !1) && Fe(i.c, e); + for (s = ge(n.a, 0); s.b != s.d.c; ) + c = u(be(s), 487), a = WN(n.c, c.a), p = WN(n.c, c.b), a && p && Fe(a.c, new bi(p, c.c)); + for (vo(n.a), g = ge(n.b, 0); g.b != g.d.c; ) + d = u(be(g), 487), e = kae(n.c, d.a), h = WN(n.c, d.b), e && h && Zhe(e, h, d.c); + vo(n.b); + } + function JPe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + c = new U9(n), s = new fKn(), r = (nk(s.g), nk(s.j), Hu(s.b), nk(s.d), nk(s.i), Hu(s.k), Hu(s.c), Hu(s.e), p = U_n(s, c, null), RHn(s, c), p), e && (l = new U9(e), f = cIe(l), ann(r, A(T(uan, 1), Bn, 536, 0, [f]))), g = !1, d = !1, t && (l = new U9(t), HS in l.a && (g = dl(l, HS).qe().a), AWn in l.a && (d = dl(l, AWn).qe().a)), a = tEn(G$n(new op(), g), d), Lje(new kmn(), r, a), HS in c.a && bf(c, HS, null), (g || d) && (h = new sp(), DUn(a, h, g, d), bf(c, HS, h)), i = new eyn(s), p6e(new SX(r), i); + } + function QPe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (s = new bKn(), l = A(T(ye, 1), _e, 28, 15, [0]), r = -1, c = 0, i = 0, h = 0; h < n.b.c.length; ++h) + if (a = u(sn(n.b, h), 443), a.b > 0) { + if (r < 0 && a.a && (r = h, c = l[0], i = 0), r >= 0) { + if (f = a.b, h == r && (f -= i++, f == 0)) + return 0; + if (!nzn(e, l, a, f, s)) { + h = r - 1, l[0] = c; + continue; + } + } else if (r = -1, !nzn(e, l, a, 0, s)) + return 0; + } else { + if (r = -1, Xi(a.c, 0) == 32) { + if (d = l[0], e$n(e, l), l[0] > d) + continue; + } else if (Nge(e, a.c, l[0])) { + l[0] += a.c.length; + continue; + } + return 0; + } + return xDe(s, t) ? l[0] : 0; + } + function YPe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (a = new dM(new R9n(t)), f = K(so, Xh, 28, n.f.e.c.length, 16, 1), AW(f, f.length), t[e.a] = 0, l = new C(n.f.e); l.a < l.c.c.length; ) + h = u(E(l), 153), h.a != e.a && (t[h.a] = tt), Mp(ym(a, h), _m); + for (; a.b.c.length != 0; ) + for (d = u(w$(a), 153), f[d.a] = !0, c = JTn(new AD(n.b, d), 0); c.c; ) + r = u(fQ(c), 290), g = h7e(r, d), !f[g.a] && (kt(r, (Uk(), EP)) ? s = $(R(v(r, EP))) : s = n.c, i = t[d.a] + s, i < t[g.a] && (t[g.a] = i, axn(a, g), Mp(ym(a, g), _m))); + } + function ZPe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m; + for (s = n.o, i = K(ye, _e, 28, s, 15, 1), r = K(ye, _e, 28, s, 15, 1), t = n.p, e = K(ye, _e, 28, t, 15, 1), c = K(ye, _e, 28, t, 15, 1), l = 0; l < s; l++) { + for (d = 0; d < t && !Kg(n, l, d); ) + ++d; + i[l] = d; + } + for (a = 0; a < s; a++) { + for (d = t - 1; d >= 0 && !Kg(n, a, d); ) + --d; + r[a] = d; + } + for (p = 0; p < t; p++) { + for (f = 0; f < s && !Kg(n, f, p); ) + ++f; + e[p] = f; + } + for (m = 0; m < t; m++) { + for (f = s - 1; f >= 0 && !Kg(n, f, m); ) + --f; + c[m] = f; + } + for (h = 0; h < s; h++) + for (g = 0; g < t; g++) + h < c[g] && h > e[g] && g < r[h] && g > i[h] && xA(n, h, g, !1, !0); + } + function Gen(n) { + var e, t, i, r, c, s, f, h; + t = on(un(v(n, (Us(), VYn)))), c = n.a.c.d, f = n.a.d.d, t ? (s = ch(mi(new V(f.a, f.b), c), 0.5), h = ch(Ki(n.e), 0.5), e = mi(it(new V(c.a, c.b), s), h), nV(n.d, e)) : (r = $(R(v(n.a, iZn))), i = n.d, c.a >= f.a ? c.b >= f.b ? (i.a = f.a + (c.a - f.a) / 2 + r, i.b = f.b + (c.b - f.b) / 2 - r - n.e.b) : (i.a = f.a + (c.a - f.a) / 2 + r, i.b = c.b + (f.b - c.b) / 2 + r) : c.b >= f.b ? (i.a = c.a + (f.a - c.a) / 2 + r, i.b = f.b + (c.b - f.b) / 2 + r) : (i.a = c.a + (f.a - c.a) / 2 + r, i.b = c.b + (f.b - c.b) / 2 - r - n.e.b)); + } + function U5(n) { + var e, t, i, r, c, s, f, h; + if (!n.f) { + if (h = new rG(), f = new rG(), e = N9, s = e.a.zc(n, e), s == null) { + for (c = new ne(Hr(n)); c.e != c.i.gc(); ) + r = u(ue(c), 29), Ht(h, U5(r)); + e.a.Bc(n) != null, e.a.gc() == 0; + } + for (i = (!n.s && (n.s = new q(yu, n, 21, 17)), new ne(n.s)); i.e != i.i.gc(); ) + t = u(ue(i), 179), D(t, 102) && ve(f, u(t, 19)); + ew(f), n.r = new HSn(n, (u(L(H((G1(), Hn).o), 6), 19), f.i), f.g), Ht(h, n.r), ew(h), n.f = new pg((u(L(H(Hn.o), 5), 19), h.i), h.g), Zu(n).b &= -3; + } + return n.f; + } + function YUn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), jd), "ELK DisCo"), "Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."), new Rbn()))), Q(n, jd, WB, rn(don)), Q(n, jd, JB, rn(g_)), Q(n, jd, l3, rn(LYn)), Q(n, jd, W0, rn(aon)), Q(n, jd, Ltn, rn(FYn)), Q(n, jd, Ntn, rn(xYn)), Q(n, jd, Dtn, rn(BYn)), Q(n, jd, $tn, rn($Yn)), Q(n, jd, Htn, rn(NYn)), Q(n, jd, qtn, rn(w_)), Q(n, jd, Utn, rn(lon)), Q(n, jd, Gtn, rn(pP)); + } + function KA() { + KA = F, Ldn = A(T(fs, 1), gh, 28, 15, [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70]), Aoe = new RegExp(`[ +\r\f]+`); + try { + O9 = A(T(NNe, 1), Bn, 2114, 0, [new X9((yX(), zT("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ", I7((KE(), KE(), T8))))), new X9(zT("yyyy-MM-dd'T'HH:mm:ss'.'SSS", I7(T8))), new X9(zT("yyyy-MM-dd'T'HH:mm:ss", I7(T8))), new X9(zT("yyyy-MM-dd'T'HH:mm", I7(T8))), new X9(zT("yyyy-MM-dd", I7(T8)))]); + } catch (n) { + if (n = It(n), !D(n, 82)) + throw M(n); + } + } + function nIe(n, e) { + var t, i, r, c; + if (r = to(n.d, 1) != 0, i = Men(n, e), i == 0 && on(un(v(e.j, (W(), ka))))) + return 0; + !on(un(v(e.j, (W(), ka)))) && !on(un(v(e.j, j2))) || x(v(e.j, (cn(), Yh))) === x((lh(), k1)) ? e.c.mg(e.e, r) : r = on(un(v(e.j, ka))), sy(n, e, r, !0), on(un(v(e.j, j2))) && U(e.j, j2, (_n(), !1)), on(un(v(e.j, ka))) && (U(e.j, ka, (_n(), !1)), U(e.j, j2, !0)), t = Men(n, e); + do { + if (xQ(n), t == 0) + return 0; + r = !r, c = t, sy(n, e, r, !1), t = Men(n, e); + } while (c > t); + return c; + } + function ZUn(n, e) { + var t, i, r, c; + if (r = to(n.d, 1) != 0, i = kA(n, e), i == 0 && on(un(v(e.j, (W(), ka))))) + return 0; + !on(un(v(e.j, (W(), ka)))) && !on(un(v(e.j, j2))) || x(v(e.j, (cn(), Yh))) === x((lh(), k1)) ? e.c.mg(e.e, r) : r = on(un(v(e.j, ka))), sy(n, e, r, !0), on(un(v(e.j, j2))) && U(e.j, j2, (_n(), !1)), on(un(v(e.j, ka))) && (U(e.j, ka, (_n(), !1)), U(e.j, j2, !0)), t = kA(n, e); + do { + if (xQ(n), t == 0) + return 0; + r = !r, c = t, sy(n, e, r, !1), t = kA(n, e); + } while (c > t); + return c; + } + function zen(n, e, t, i) { + var r, c, s, f, h, l, a, d, g; + return h = mi(new V(t.a, t.b), n), l = h.a * e.b - h.b * e.a, a = e.a * i.b - e.b * i.a, d = (h.a * i.b - h.b * i.a) / a, g = l / a, a == 0 ? l == 0 ? (r = it(new V(t.a, t.b), ch(new V(i.a, i.b), 0.5)), c = J1(n, r), s = J1(it(new V(n.a, n.b), e), r), f = y.Math.sqrt(i.a * i.a + i.b * i.b) * 0.5, c < s && c <= f ? new V(n.a, n.b) : s <= f ? it(new V(n.a, n.b), e) : null) : null : d >= 0 && d <= 1 && g >= 0 && g <= 1 ? it(new V(n.a, n.b), ch(new V(e.a, e.b), d)) : null; + } + function eIe(n, e, t) { + var i, r, c, s, f; + if (i = u(v(n, (cn(), kH)), 21), t.a > e.a && (i.Hc((wd(), w9)) ? n.c.a += (t.a - e.a) / 2 : i.Hc(g9) && (n.c.a += t.a - e.a)), t.b > e.b && (i.Hc((wd(), m9)) ? n.c.b += (t.b - e.b) / 2 : i.Hc(p9) && (n.c.b += t.b - e.b)), u(v(n, (W(), qc)), 21).Hc((mr(), cs)) && (t.a > e.a || t.b > e.b)) + for (f = new C(n.a); f.a < f.c.c.length; ) + s = u(E(f), 10), s.k == (Vn(), Zt) && (r = u(v(s, gc), 64), r == (en(), Zn) ? s.n.a += t.a - e.a : r == ae && (s.n.b += t.b - e.b)); + c = n.d, n.f.a = t.a - c.b - c.c, n.f.b = t.b - c.d - c.a; + } + function tIe(n, e, t) { + var i, r, c, s, f; + if (i = u(v(n, (cn(), kH)), 21), t.a > e.a && (i.Hc((wd(), w9)) ? n.c.a += (t.a - e.a) / 2 : i.Hc(g9) && (n.c.a += t.a - e.a)), t.b > e.b && (i.Hc((wd(), m9)) ? n.c.b += (t.b - e.b) / 2 : i.Hc(p9) && (n.c.b += t.b - e.b)), u(v(n, (W(), qc)), 21).Hc((mr(), cs)) && (t.a > e.a || t.b > e.b)) + for (s = new C(n.a); s.a < s.c.c.length; ) + c = u(E(s), 10), c.k == (Vn(), Zt) && (r = u(v(c, gc), 64), r == (en(), Zn) ? c.n.a += t.a - e.a : r == ae && (c.n.b += t.b - e.b)); + f = n.d, n.f.a = t.a - f.b - f.c, n.f.b = t.b - f.d - f.a; + } + function iIe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (e = dHn(n), a = (f = new qa(e).a.vc().Kc(), new PE(f)); a.a.Ob(); ) { + for (l = (r = u(a.a.Pb(), 44), u(r.ld(), 10)), d = 0, g = 0, d = l.d.d, g = l.o.b + l.d.a, n.d[l.p] = 0, t = l; (c = n.a[t.p]) != l; ) + i = Y8e(t, c), h = 0, n.c == (fh(), y1) ? h = i.d.n.b + i.d.a.b - i.c.n.b - i.c.a.b : h = i.c.n.b + i.c.a.b - i.d.n.b - i.d.a.b, s = $(n.d[t.p]) + h, n.d[c.p] = s, d = y.Math.max(d, c.d.d - s), g = y.Math.max(g, s + c.o.b + c.d.a), t = c; + t = l; + do + n.d[t.p] = $(n.d[t.p]) + d, t = n.a[t.p]; + while (t != l); + n.b[l.p] = d + g; + } + } + function G5(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (c = 0, s = n.t, r = 0, i = 0, h = 0, g = 0, d = 0, t && (n.n.c.length = 0, nn(n.n, new NM(n.s, n.t, n.i))), f = 0, a = new C(n.b); a.a < a.c.c.length; ) + l = u(E(a), 27), c + l.g + (f > 0 ? n.i : 0) > e && h > 0 && (c = 0, s += h + n.i, r = y.Math.max(r, g), i += h + n.i, h = 0, g = 0, t && (++d, nn(n.n, new NM(n.s, s, n.i))), f = 0), g += l.g + (f > 0 ? n.i : 0), h = y.Math.max(h, l.f), t && pZ(u(sn(n.n, d), 209), l), c += l.g + (f > 0 ? n.i : 0), ++f; + return r = y.Math.max(r, g), i += h, t && (n.r = r, n.d = i, yZ(n.j)), new Ho(n.s, n.t, r, i); + } + function xF(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (n.b = !1, d = St, h = li, g = St, l = li, i = n.e.a.ec().Kc(); i.Ob(); ) + for (t = u(i.Pb(), 272), r = t.a, d = y.Math.min(d, r.c), h = y.Math.max(h, r.c + r.b), g = y.Math.min(g, r.d), l = y.Math.max(l, r.d + r.a), s = new C(t.c); s.a < s.c.c.length; ) + c = u(E(s), 407), e = c.a, e.a ? (a = r.d + c.b.b, f = a + c.c, g = y.Math.min(g, a), l = y.Math.max(l, f)) : (a = r.c + c.b.a, f = a + c.c, d = y.Math.min(d, a), h = y.Math.max(h, f)); + n.a = new V(h - d, l - g), n.c = new V(d + n.d.a, g + n.d.b); + } + function Jg(n) { + var e, t, i, r, c, s, f, h; + if (!n.a) { + if (n.o = null, h = new kyn(n), e = new jvn(), t = N9, f = t.a.zc(n, t), f == null) { + for (s = new ne(Hr(n)); s.e != s.i.gc(); ) + c = u(ue(s), 29), Ht(h, Jg(c)); + t.a.Bc(n) != null, t.a.gc() == 0; + } + for (r = (!n.s && (n.s = new q(yu, n, 21, 17)), new ne(n.s)); r.e != r.i.gc(); ) + i = u(ue(r), 179), D(i, 331) && ve(e, u(i, 35)); + ew(e), n.k = new qSn(n, (u(L(H((G1(), Hn).o), 7), 19), e.i), e.g), Ht(h, n.k), ew(h), n.a = new pg((u(L(H(Hn.o), 4), 19), h.i), h.g), Zu(n).b &= -2; + } + return n.a; + } + function Xen(n, e, t, i) { + var r, c, s, f, h, l, a; + if (a = cu(n.e.Dh(), e), r = 0, c = u(n.g, 124), h = null, br(), u(e, 69).xk()) { + for (f = 0; f < n.i; ++f) + if (s = c[f], a.am(s.Lk())) { + if (ct(s, t)) { + h = s; + break; + } + ++r; + } + } else if (t != null) { + for (f = 0; f < n.i; ++f) + if (s = c[f], a.am(s.Lk())) { + if (ct(t, s.md())) { + h = s; + break; + } + ++r; + } + } else + for (f = 0; f < n.i; ++f) + if (s = c[f], a.am(s.Lk())) { + if (s.md() == null) { + h = s; + break; + } + ++r; + } + return h && (fo(n.e) && (l = e.Jk() ? new GN(n.e, 4, e, t, null, r, !0) : V1(n, e.tk() ? 2 : 1, e, t, e.ik(), -1, !0), i ? i.nj(l) : i = l), i = ly(n, h, i)), i; + } + function FF(n, e, t, i, r, c, s) { + var f, h, l, a, d, g, p, m, k; + switch (m = 0, k = 0, h = r.c, f = r.b, a = t.f, p = t.g, e.g) { + case 0: + m = i.i + i.g + s, n.c ? k = jye(m, c, i, s) : k = i.j, g = y.Math.max(h, m + p), l = y.Math.max(f, k + a); + break; + case 1: + k = i.j + i.f + s, n.c ? m = yye(k, c, i, s) : m = i.i, g = y.Math.max(h, m + p), l = y.Math.max(f, k + a); + break; + case 2: + m = h + s, k = 0, g = h + s + p, l = y.Math.max(f, a); + break; + case 3: + m = 0, k = f + s, g = y.Math.max(h, p), l = f + s + a; + break; + default: + throw M(new Gn("IllegalPlacementOption.")); + } + return d = new rZ(n.a, g, l, e, m, k), d; + } + function rIe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + if (f = n.d, d = u(v(n, (W(), P3)), 15), e = u(v(n, C3), 15), !(!d && !e)) { + if (c = $(R(rw(n, (cn(), PH)))), s = $(R(rw(n, mhn))), g = 0, d) { + for (l = 0, r = d.Kc(); r.Ob(); ) + i = u(r.Pb(), 10), l = y.Math.max(l, i.o.b), g += i.o.a; + g += c * (d.gc() - 1), f.d += l + s; + } + if (t = 0, e) { + for (l = 0, r = e.Kc(); r.Ob(); ) + i = u(r.Pb(), 10), l = y.Math.max(l, i.o.b), t += i.o.a; + t += c * (e.gc() - 1), f.a += l + s; + } + h = y.Math.max(g, t), h > n.o.a && (a = (h - n.o.a) / 2, f.b = y.Math.max(f.b, a), f.c = y.Math.max(f.c, a)); + } + } + function cIe(n) { + var e, t, i, r, c, s, f, h; + for (c = new VOn(), xle(c, (qp(), bue)), i = (r = S$(n, K(fn, J, 2, 0, 6, 1)), new zv(new Ku(new SD(n, r).b))); i.b < i.d.gc(); ) + t = (oe(i.b < i.d.gc()), Oe(i.d.Xb(i.c = i.b++))), s = ntn(Da, t), s && (e = dl(n, t), e.te() ? f = e.te().a : e.qe() ? f = "" + e.qe().a : e.re() ? f = "" + e.re().a : f = e.Ib(), h = Yen(s, f), h != null && ((Su(s.j, (pf(), pi)) || Su(s.j, xn)) && Ak(g$(c, Ye), s, h), Su(s.j, Ph) && Ak(g$(c, Wt), s, h), Su(s.j, Kd) && Ak(g$(c, Qu), s, h), Su(s.j, E1) && Ak(g$(c, Sr), s, h))); + return c; + } + function wy(n, e, t) { + var i, r, c, s, f, h, l, a; + if (r = u(n.g, 124), Sl(n.e, e)) + return br(), u(e, 69).xk() ? new eM(e, n) : new k7(e, n); + for (l = cu(n.e.Dh(), e), i = 0, f = 0; f < n.i; ++f) { + if (c = r[f], s = c.Lk(), l.am(s)) { + if (br(), u(e, 69).xk()) + return c; + if (s == (n3(), _3) || s == K3) { + for (h = new mo(Jr(c.md())); ++f < n.i; ) + c = r[f], s = c.Lk(), (s == _3 || s == K3) && Re(h, Jr(c.md())); + return AV(u(e.Hk(), 156), h.a); + } else + return a = c.md(), a != null && t && D(e, 102) && u(e, 19).Bb & hr && (a = L5(n, e, f, i, a)), a; + } + ++i; + } + return e.ik(); + } + function _A(n, e, t, i) { + var r, c, s, f, h, l; + if (h = cu(n.e.Dh(), e), c = u(n.g, 124), Sl(n.e, e)) { + for (r = 0, f = 0; f < n.i; ++f) + if (s = c[f], h.am(s.Lk())) { + if (r == t) + return br(), u(e, 69).xk() ? s : (l = s.md(), l != null && i && D(e, 102) && u(e, 19).Bb & hr && (l = L5(n, e, f, r, l)), l); + ++r; + } + throw M(new Ir(p8 + t + Td + r)); + } else { + for (r = 0, f = 0; f < n.i; ++f) { + if (s = c[f], h.am(s.Lk())) + return br(), u(e, 69).xk() ? s : (l = s.md(), l != null && i && D(e, 102) && u(e, 19).Bb & hr && (l = L5(n, e, f, r, l)), l); + ++r; + } + return e.ik(); + } + } + function BF() { + BF = F, jQn = A(T(ye, 1), _e, 28, 15, [Wi, 1162261467, W5, 1220703125, 362797056, 1977326743, W5, 387420489, QA, 214358881, 429981696, 815730721, 1475789056, 170859375, 268435456, 410338673, 612220032, 893871739, 128e7, 1801088541, 113379904, 148035889, 191102976, 244140625, 308915776, 387420489, 481890304, 594823321, 729e6, 887503681, W5, 1291467969, 1544804416, 1838265625, 60466176]), EQn = A(T(ye, 1), _e, 28, 15, [-1, -1, 31, 19, 15, 13, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5]); + } + function RF(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (s = n.e, h = e.e, h == 0) + return n; + if (s == 0) + return e.e == 0 ? e : new Ya(-e.e, e.d, e.a); + if (c = n.d, f = e.d, c + f == 2) + return t = vi(n.a[0], vr), i = vi(e.a[0], vr), s < 0 && (t = n1(t)), h < 0 && (i = n1(i)), dh(), AC(bs(t, i), 0) ? ia(bs(t, i)) : U6(ia(n1(bs(t, i)))); + if (r = c != f ? c > f ? 1 : -1 : lY(n.a, e.a, c), r == -1) + d = -h, a = s == h ? ZN(e.a, f, n.a, c) : e$(e.a, f, n.a, c); + else if (d = s, s == h) { + if (r == 0) + return dh(), S8; + a = ZN(n.a, c, e.a, f); + } else + a = e$(n.a, c, e.a, f); + return l = new Ya(d, a.length, a), J6(l), l; + } + function uIe(n, e) { + var t, i, r, c; + if (c = xUn(e), !e.c && (e.c = new q(Qu, e, 9, 9)), Gt(new Tn(null, (!e.c && (e.c = new q(Qu, e, 9, 9)), new In(e.c, 16))), new q9n(c)), r = u(v(c, (W(), qc)), 21), YOe(e, r), r.Hc((mr(), cs))) + for (i = new ne((!e.c && (e.c = new q(Qu, e, 9, 9)), e.c)); i.e != i.i.gc(); ) + t = u(ue(i), 123), ADe(n, e, c, t); + return u(z(e, (cn(), xd)), 181).gc() != 0 && Sqn(e, c), on(un(v(c, dhn))) && r.Fc(eI), kt(c, Mj) && Fjn(new VY($(R(v(c, Mj)))), c), x(z(e, Bw)) === x((jl(), M1)) ? QLe(n, e, c) : $Le(n, e, c), c; + } + function oIe(n) { + var e, t, i, r, c, s, f, h; + for (r = new C(n.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), s = new C(T0(i.a)); s.a < s.c.c.length; ) + if (c = u(E(s), 10), u$n(c) && (t = u(v(c, (W(), ob)), 313), !t.g && t.d)) + for (e = t, h = t.d; h; ) + Rqn(h.i, h.k, !1, !0), fk(e.a), fk(h.i), fk(h.k), fk(h.b), Oi(h.c, e.c.d), Oi(e.c, null), $i(e.a, null), $i(h.i, null), $i(h.k, null), $i(h.b, null), f = new CJ(e.i, h.a, e.e, h.j, h.f), f.k = e.k, f.n = e.n, f.b = e.b, f.c = h.c, f.g = e.g, f.d = h.d, U(e.i, ob, f), U(h.a, ob, f), h = h.d, e = f; + } + function Bc(n, e) { + var t, i, r, c, s, f, h; + if (n == null) + return null; + if (c = n.length, c == 0) + return ""; + for (h = K(fs, gh, 28, c, 15, 1), Fi(0, c, n.length), Fi(0, c, h.length), UPn(n, 0, c, h, 0), t = null, f = e, r = 0, s = 0; r < c; r++) + i = h[r], Tzn(), i <= 32 && P[i] & 2 ? f ? (!t && (t = new ls(n)), z1e(t, r - s++)) : (f = e, i != 32 && (!t && (t = new ls(n)), L$(t, r - s, r - s + 1, String.fromCharCode(32)))) : f = !1; + return f ? t ? (c = t.a.length, c > 0 ? qo(t.a, 0, c - 1) : "") : (Fi(0, c - 1, n.length), n.substr(0, c - 1)) : t ? t.a : n; + } + function sIe(n, e) { + var t, i, r, c, s, f, h; + for (e.Ug("Sort By Input Model " + v(n, (cn(), Yh)), 1), r = 0, i = new C(n.b); i.a < i.c.c.length; ) { + for (t = u(E(i), 30), h = r == 0 ? 0 : r - 1, f = u(sn(n.b, h), 30), s = new C(t.a); s.a < s.c.c.length; ) + c = u(E(s), 10), x(v(c, Ut)) !== x((Di(), Ud)) && x(v(c, Ut)) !== x(Uc) && (Dn(), Yt(c.j, new GFn(f, u(v(n, Yh), 284), cKn(c), on(un(v(n, vH))))), e.bh("Node " + c + " ports: " + c.j)); + Dn(), Yt(t.a, new gxn(f, u(v(n, Yh), 284), u(v(n, Hfn), 390))), e.bh("Layer " + r + ": " + t), ++r; + } + e.Vg(); + } + function gw(n, e) { + var t, i, r, c, s; + if (s = u(e, 138), Gg(n), Gg(s), s.b != null) { + if (n.c = !0, n.b == null) { + n.b = K(ye, _e, 28, s.b.length, 15, 1), Oc(s.b, 0, n.b, 0, s.b.length); + return; + } + for (c = K(ye, _e, 28, n.b.length + s.b.length, 15, 1), t = 0, i = 0, r = 0; t < n.b.length || i < s.b.length; ) + t >= n.b.length ? (c[r++] = s.b[i++], c[r++] = s.b[i++]) : i >= s.b.length ? (c[r++] = n.b[t++], c[r++] = n.b[t++]) : s.b[i] < n.b[t] || s.b[i] === n.b[t] && s.b[i + 1] < n.b[t + 1] ? (c[r++] = s.b[i++], c[r++] = s.b[i++]) : (c[r++] = n.b[t++], c[r++] = n.b[t++]); + n.b = c; + } + } + function fIe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + return t = on(un(v(n, (W(), $w)))), f = on(un(v(e, $w))), i = u(v(n, yf), 12), h = u(v(e, yf), 12), r = u(v(n, Es), 12), l = u(v(e, Es), 12), a = !!i && i == h, d = !!r && r == l, !t && !f ? new xV(u(E(new C(n.j)), 12).p == u(E(new C(e.j)), 12).p, a, d) : (c = (!on(un(v(n, $w))) || on(un(v(n, jj)))) && (!on(un(v(e, $w))) || on(un(v(e, jj)))), s = (!on(un(v(n, $w))) || !on(un(v(n, jj)))) && (!on(un(v(e, $w))) || !on(un(v(e, jj)))), new xV(a && c || d && s, a, d)); + } + function nGn(n) { + var e, t, i, r, c, s, f, h; + for (i = 0, t = 0, h = new Ct(), e = 0, f = new C(n.n); f.a < f.c.c.length; ) + s = u(E(f), 209), s.c.c.length == 0 ? Kt(h, s, h.c.b, h.c) : (i = y.Math.max(i, s.d), t += s.a + (e > 0 ? n.i : 0)), ++e; + for (OY(n.n, h), n.d = t, n.r = i, n.g = 0, n.f = 0, n.e = 0, n.o = St, n.p = St, c = new C(n.b); c.a < c.c.c.length; ) + r = u(E(c), 27), n.p = y.Math.min(n.p, r.g), n.g = y.Math.max(n.g, r.g), n.f = y.Math.max(n.f, r.f), n.o = y.Math.min(n.o, r.f), n.e += r.f + n.i; + n.a = n.e / n.b.c.length - n.i * ((n.b.c.length - 1) / n.b.c.length), yZ(n.j); + } + function eGn(n) { + var e, t, i, r; + return n.Db & 64 ? ox(n) : (e = new mo(Ecn), i = n.k, i ? Re(Re((e.a += ' "', e), i), '"') : (!n.n && (n.n = new q(Sr, n, 1, 7)), n.n.i > 0 && (r = (!n.n && (n.n = new q(Sr, n, 1, 7)), u(L(n.n, 0), 135)).a, !r || Re(Re((e.a += ' "', e), r), '"'))), t = (!n.b && (n.b = new Nn(he, n, 4, 7)), !(n.b.i <= 1 && (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c.i <= 1))), t ? e.a += " [" : e.a += " ", Re(e, KX(new yD(), new ne(n.b))), t && (e.a += "]"), e.a += iR, t && (e.a += "["), Re(e, KX(new yD(), new ne(n.c))), t && (e.a += "]"), e.a); + } + function hIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (_ = n.c, X = e.c, t = qr(_.a, n, 0), i = qr(X.a, e, 0), O = u(F0(n, (pr(), Vu)).Kc().Pb(), 12), kn = u(F0(n, Qc).Kc().Pb(), 12), N = u(F0(e, Vu).Kc().Pb(), 12), Fn = u(F0(e, Qc).Kc().Pb(), 12), S = hh(O.e), tn = hh(kn.g), I = hh(N.e), yn = hh(Fn.g), uw(n, i, X), s = I, a = 0, m = s.length; a < m; ++a) + r = s[a], Oi(r, O); + for (f = yn, d = 0, k = f.length; d < k; ++d) + r = f[d], Zi(r, kn); + for (uw(e, t, _), h = S, g = 0, j = h.length; g < j; ++g) + r = h[g], Oi(r, N); + for (c = tn, l = 0, p = c.length; l < p; ++l) + r = c[l], Zi(r, Fn); + } + function lIe(n) { + var e, t, i, r, c, s, f; + for (s = u(z(n, (Tg(), D2)), 27), i = new ne((!s.e && (s.e = new Nn(Wt, s, 7, 4)), s.e)); i.e != i.i.gc(); ) + t = u(ue(i), 74), f = new V(u(L((!t.a && (t.a = new q(Mt, t, 6, 6)), t.a), 0), 166).j, u(L((!t.a && (t.a = new q(Mt, t, 6, 6)), t.a), 0), 166).k), c = new V(u(L((!t.a && (t.a = new q(Mt, t, 6, 6)), t.a), 0), 166).b, u(L((!t.a && (t.a = new q(Mt, t, 6, 6)), t.a), 0), 166).c), r = new V(c.a - f.a, c.b - f.b), e = y.Math.atan2(r.b, r.a), u(L((!t.c && (t.c = new Nn(he, t, 5, 8)), t.c), 0), 84).qf((oa(), jq), e); + } + function aIe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (e.Ug("Interactive Node Reorderer", 1), a = (!n.a && (n.a = new q(Ye, n, 10, 11)), n.a), f = new Z(), r = new ne(a); r.e != r.i.gc(); ) + t = u(ue(r), 27), Lf(t, (Rf(), Rj)) && Kn(f.c, t); + for (c = new C(f); c.a < c.c.c.length; ) + t = u(E(c), 27), rT(a, t); + for (Dn(), Yt(f, new tmn()), s = new C(f); s.a < s.c.c.length; ) + t = u(E(s), 27), l = u(z(t, (Rf(), Rj)), 17).a, l = y.Math.min(l, a.i), v5(a, l, t); + for (h = 0, i = new ne(a); i.e != i.i.gc(); ) + t = u(ue(i), 27), ht(t, (Rf(), p1n), Y(h)), ++h; + e.Vg(); + } + function Ven(n, e, t) { + var i, r, c, s, f, h, l, a; + return y.Math.abs(e.s - e.c) < vh || y.Math.abs(t.s - t.c) < vh ? 0 : (i = sqn(n, e.j, t.e), r = sqn(n, t.j, e.e), c = i == -1 || r == -1, s = 0, c ? (i == -1 && (new ed((af(), Ea), t, e, 1), ++s), r == -1 && (new ed((af(), Ea), e, t, 1), ++s)) : (f = Fg(e.j, t.s, t.c), f += Fg(t.e, e.s, e.c), h = Fg(t.j, e.s, e.c), h += Fg(e.e, t.s, t.c), l = i + 16 * f, a = r + 16 * h, l < a ? new ed((af(), zw), e, t, a - l) : l > a ? new ed((af(), zw), t, e, l - a) : l > 0 && a > 0 && (new ed((af(), zw), e, t, 0), new ed(zw, t, e, 0))), s); + } + function dIe(n, e, t) { + var i, r, c; + for (n.a = new Z(), c = ge(e.b, 0); c.b != c.d.c; ) { + for (r = u(be(c), 40); u(v(r, (lc(), Sh)), 17).a > n.a.c.length - 1; ) + nn(n.a, new bi(i2, Srn)); + i = u(v(r, Sh), 17).a, t == (ci(), Br) || t == Xr ? (r.e.a < $(R(u(sn(n.a, i), 42).a)) && QO(u(sn(n.a, i), 42), r.e.a), r.e.a + r.f.a > $(R(u(sn(n.a, i), 42).b)) && YO(u(sn(n.a, i), 42), r.e.a + r.f.a)) : (r.e.b < $(R(u(sn(n.a, i), 42).a)) && QO(u(sn(n.a, i), 42), r.e.b), r.e.b + r.f.b > $(R(u(sn(n.a, i), 42).b)) && YO(u(sn(n.a, i), 42), r.e.b + r.f.b)); + } + } + function tGn(n, e, t, i) { + var r, c, s, f, h, l, a; + if (c = KT(i), f = on(un(v(i, (cn(), ohn)))), (f || on(un(v(n, wI)))) && !mg(u(v(n, Ut), 101))) + r = zp(c), h = $en(n, t, t == (pr(), Qc) ? r : xk(r)); + else + switch (h = new Ic(), ic(h, n), e ? (a = h.n, a.a = e.a - n.n.a, a.b = e.b - n.n.b, s_n(a, 0, 0, n.o.a, n.o.b), gi(h, EUn(h, c))) : (r = zp(c), gi(h, t == (pr(), Qc) ? r : xk(r))), s = u(v(i, (W(), qc)), 21), l = h.j, c.g) { + case 2: + case 1: + (l == (en(), Xn) || l == ae) && s.Fc((mr(), v2)); + break; + case 4: + case 3: + (l == (en(), Zn) || l == Wn) && s.Fc((mr(), v2)); + } + return h; + } + function iGn(n, e) { + var t, i, r, c, s, f; + for (s = new sd(new Ua(n.f.b).a); s.b; ) { + if (c = L0(s), r = u(c.ld(), 602), e == 1) { + if (r.Af() != (ci(), us) && r.Af() != Wf) + continue; + } else if (r.Af() != (ci(), Br) && r.Af() != Xr) + continue; + switch (i = u(u(c.md(), 42).b, 86), f = u(u(c.md(), 42).a, 194), t = f.c, r.Af().g) { + case 2: + i.g.c = n.e.a, i.g.b = y.Math.max(1, i.g.b + t); + break; + case 1: + i.g.c = i.g.c + t, i.g.b = y.Math.max(1, i.g.b - t); + break; + case 4: + i.g.d = n.e.b, i.g.a = y.Math.max(1, i.g.a + t); + break; + case 3: + i.g.d = i.g.d + t, i.g.a = y.Math.max(1, i.g.a - t); + } + } + } + function bIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (f = K(ye, _e, 28, e.b.c.length, 15, 1), l = K(D_, G, 273, e.b.c.length, 0, 1), h = K(Qh, b1, 10, e.b.c.length, 0, 1), d = n.a, g = 0, p = d.length; g < p; ++g) { + for (a = d[g], k = 0, s = new C(a.e); s.a < s.c.c.length; ) + r = u(E(s), 10), i = CX(r.c), ++f[i], m = $(R(v(e, (cn(), Ws)))), f[i] > 0 && h[i] && (m = jg(n.b, h[i], r)), k = y.Math.max(k, r.c.c.b + m); + for (c = new C(a.e); c.a < c.c.c.length; ) + r = u(E(c), 10), r.n.b = k + r.d.d, t = r.c, t.c.b = k + r.d.d + r.o.b + r.d.a, l[qr(t.b.b, t, 0)] = r.k, h[qr(t.b.b, t, 0)] = r; + } + } + function rGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (i = new ie(ce(Al(e).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 74), D(L((!t.b && (t.b = new Nn(he, t, 4, 7)), t.b), 0), 193) || (h = Gr(u(L((!t.c && (t.c = new Nn(he, t, 5, 8)), t.c), 0), 84)), N5(t) || (s = e.i + e.g / 2, f = e.j + e.f / 2, a = h.i + h.g / 2, d = h.j + h.f / 2, g = new Li(), g.a = a - s, g.b = d - f, c = new V(g.a, g.b), vm(c, e.g, e.f), g.a -= c.a, g.b -= c.b, s = a - g.a, f = d - g.b, l = new V(g.a, g.b), vm(l, h.g, h.f), g.a -= l.a, g.b -= l.b, a = s + g.a, d = f + g.b, r = Xg(t, !0, !0), H4(r, s), U4(r, f), _4(r, a), q4(r, d), rGn(n, h))); + } + function cGn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), Q0), "ELK SPOrE Compaction"), "ShrinkTree is a compaction algorithm that maintains the topology of a layout. The relocation of diagram elements is based on contracting a spanning tree."), new bmn()))), Q(n, Q0, YR, rn(QI)), Q(n, Q0, fcn, rn(Gq)), Q(n, Q0, hcn, rn(Uq)), Q(n, Q0, ZR, rn(G1n)), Q(n, Q0, nK, rn(qq)), Q(n, Q0, W0, U1n), Q(n, Q0, yw, 8), Q(n, Q0, eK, rn(nue)), Q(n, Q0, lcn, rn(H1n)), Q(n, Q0, acn, rn(q1n)), Q(n, Q0, Uy, (_n(), !1)); + } + function wIe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (e.Ug("Simple node placement", 1), d = u(v(n, (W(), E2)), 312), f = 0, c = new C(n.b); c.a < c.c.c.length; ) { + for (i = u(E(c), 30), s = i.c, s.b = 0, t = null, l = new C(i.a); l.a < l.c.c.length; ) + h = u(E(l), 10), t && (s.b += eZ(h, t, d.c)), s.b += h.d.d + h.o.b + h.d.a, t = h; + f = y.Math.max(f, s.b); + } + for (r = new C(n.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), s = i.c, a = (f - s.b) / 2, t = null, l = new C(i.a); l.a < l.c.c.length; ) + h = u(E(l), 10), t && (a += eZ(h, t, d.c)), a += h.d.d, h.n.b = a, a += h.o.b + h.d.a, t = h; + e.Vg(); + } + function gIe(n, e) { + var t, i, r, c; + for (Cme(e.b.j), Gt(_r(new Tn(null, new In(e.d, 16)), new Dpn()), new Lpn()), c = new C(e.d); c.a < c.c.c.length; ) { + switch (r = u(E(c), 105), r.e.g) { + case 0: + t = u(sn(r.j, 0), 113).d.j, pG(r, u(ho(Ap(u(ot(r.k, t), 15).Oc(), w2)), 113)), gG(r, u(ho(_b(u(ot(r.k, t), 15).Oc(), w2)), 113)); + break; + case 1: + i = CZ(r), pG(r, u(ho(Ap(u(ot(r.k, i[0]), 15).Oc(), w2)), 113)), gG(r, u(ho(_b(u(ot(r.k, i[1]), 15).Oc(), w2)), 113)); + break; + case 2: + tEe(n, r); + break; + case 3: + vTe(r); + break; + case 4: + ETe(n, r); + } + Mme(r); + } + n.a = null; + } + function KF(n, e, t) { + var i, r, c, s, f, h, l, a; + return i = n.a.o == (Pf(), Xf) ? St : li, f = IUn(n, new YCn(e, t)), !f.a && f.c ? (Fe(n.d, f), i) : f.a ? (r = f.a.c, h = f.a.d, t ? (l = n.a.c == (fh(), mb) ? h : r, c = n.a.c == mb ? r : h, s = n.a.g[c.i.p], a = $(n.a.p[s.p]) + $(n.a.d[c.i.p]) + c.n.b + c.a.b - $(n.a.d[l.i.p]) - l.n.b - l.a.b) : (l = n.a.c == (fh(), y1) ? h : r, c = n.a.c == y1 ? r : h, a = $(n.a.p[n.a.g[c.i.p].p]) + $(n.a.d[c.i.p]) + c.n.b + c.a.b - $(n.a.d[l.i.p]) - l.n.b - l.a.b), n.a.n[n.a.g[r.i.p].p] = (_n(), !0), n.a.n[n.a.g[h.i.p].p] = !0, a) : i; + } + function pIe(n, e, t, i) { + var r, c, s, f, h, l, a, d; + if (i.gc() == 0) + return !1; + if (h = (br(), u(e, 69).xk()), s = h ? i : new S0(i.gc()), Sl(n.e, e)) { + if (e.Si()) + for (a = i.Kc(); a.Ob(); ) + l = a.Pb(), RA(n, e, l, D(e, 102) && (u(e, 19).Bb & hr) != 0) || (c = Fh(e, l), s.Fc(c)); + else if (!h) + for (a = i.Kc(); a.Ob(); ) + l = a.Pb(), c = Fh(e, l), s.Fc(c); + } else { + for (d = cu(n.e.Dh(), e), r = u(n.g, 124), f = 0; f < n.i; ++f) + if (c = r[f], d.am(c.Lk())) + throw M(new Gn(Zy)); + if (i.gc() > 1) + throw M(new Gn(Zy)); + h || (c = Fh(e, i.Kc().Pb()), s.Fc(c)); + } + return QQ(n, mnn(n, e, t), s); + } + function HA(n, e, t) { + var i, r, c, s, f, h, l, a; + if (Sl(n.e, e)) + h = (br(), u(e, 69).xk() ? new eM(e, n) : new k7(e, n)), jA(h.c, h.b), P6(h, u(t, 16)); + else { + for (a = cu(n.e.Dh(), e), i = u(n.g, 124), s = 0; s < n.i; ++s) + if (r = i[s], c = r.Lk(), a.am(c)) { + if (c == (n3(), _3) || c == K3) { + for (l = bZ(n, e, t), f = s, l ? dw(n, s) : ++s; s < n.i; ) + r = i[s], c = r.Lk(), c == _3 || c == K3 ? dw(n, s) : ++s; + l || u(Rg(n, f, Fh(e, t)), 76); + } else + bZ(n, e, t) ? dw(n, s) : u(Rg(n, s, (br(), u(e, 69).xk() ? u(t, 76) : Fh(e, t))), 76); + return; + } + bZ(n, e, t) || ve(n, (br(), u(e, 69).xk() ? u(t, 76) : Fh(e, t))); + } + } + function uGn(n, e, t) { + var i, r, c, s, f, h, l, a; + return ct(t, n.b) || (n.b = t, c = new Lbn(), s = u(Wr(_r(new Tn(null, new In(t.f, 16)), c), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [(Gu(), Aw), Yr]))), 21), n.e = !0, n.f = !0, n.c = !0, n.d = !0, r = s.Hc((Vp(), uj)), i = s.Hc(oj), r && !i && (n.f = !1), !r && i && (n.d = !1), r = s.Hc(cj), i = s.Hc(sj), r && !i && (n.c = !1), !r && i && (n.e = !1)), a = u(n.a.Ve(e, t), 42), h = u(a.a, 17).a, l = u(a.b, 17).a, f = !1, h < 0 ? n.c || (f = !0) : n.e || (f = !0), l < 0 ? n.d || (f = !0) : n.f || (f = !0), f ? uGn(n, a, t) : a; + } + function mIe(n) { + var e, t, i, r; + r = n.o, Bb(), n.A.dc() || ct(n.A, con) ? e = r.b : (e = ey(n.f), n.A.Hc((go(), iE)) && !n.B.Hc((io(), P9)) && (e = y.Math.max(e, ey(u(Mr(n.p, (en(), Zn)), 252))), e = y.Math.max(e, ey(u(Mr(n.p, Wn), 252)))), t = Rxn(n), t && (e = y.Math.max(e, t.b)), n.A.Hc(rE) && (n.q == (Di(), tl) || n.q == Uc) && (e = y.Math.max(e, nM(u(Mr(n.b, (en(), Zn)), 127))), e = y.Math.max(e, nM(u(Mr(n.b, Wn), 127))))), on(un(n.e.Tf().of((He(), Vw)))) ? r.b = y.Math.max(r.b, e) : r.b = e, i = n.f.i, i.d = 0, i.a = e, NF(n.f); + } + function oGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (d = 0; d < e.length; d++) { + for (f = n.Kc(); f.Ob(); ) + c = u(f.Pb(), 230), c.hg(d, e); + for (g = 0; g < e[d].length; g++) { + for (h = n.Kc(); h.Ob(); ) + c = u(h.Pb(), 230), c.ig(d, g, e); + for (k = e[d][g].j, p = 0; p < k.c.length; p++) { + for (l = n.Kc(); l.Ob(); ) + c = u(l.Pb(), 230), c.jg(d, g, p, e); + for (m = (Ln(p, k.c.length), u(k.c[p], 12)), t = 0, r = new Df(m.b); tc(r.a) || tc(r.b); ) + for (i = u(tc(r.a) ? E(r.a) : E(r.b), 18), a = n.Kc(); a.Ob(); ) + c = u(a.Pb(), 230), c.gg(d, g, p, t++, i, e); + } + } + } + for (s = n.Kc(); s.Ob(); ) + c = u(s.Pb(), 230), c.fg(); + } + function vIe(n, e) { + var t, i, r, c, s, f, h; + for (n.b = $(R(v(e, (cn(), M2)))), n.c = $(R(v(e, Bd))), n.d = u(v(e, MH), 350), n.a = u(v(e, fI), 282), c7e(e), f = u(Wr(ut(ut(rc(rc(new Tn(null, new In(e.b, 16)), new Wwn()), new Jwn()), new Qwn()), new Ywn()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), r = f.Kc(); r.Ob(); ) + t = u(r.Pb(), 18), s = u(v(t, (W(), Dd)), 15), s.Jc(new Z9n(n)), U(t, Dd, null); + for (i = f.Kc(); i.Ob(); ) + t = u(i.Pb(), 18), h = u(v(t, (W(), hfn)), 18), c = u(v(t, C2), 15), LLe(n, c, h), U(t, C2, null); + } + function _F(n, e) { + var t, i, r, c, s, f, h; + if (n.a) { + if (f = n.a.xe(), h = null, f != null ? e.a += "" + f : (s = n.a.mk(), s != null && (c = ih(s, gu(91)), c != -1 ? (h = (zn(c, s.length + 1), s.substr(c)), e.a += "" + qo(s == null ? pu : (Jn(s), s), 0, c)) : e.a += "" + s)), n.d && n.d.i != 0) { + for (r = !0, e.a += "<", i = new ne(n.d); i.e != i.i.gc(); ) + t = u(ue(i), 89), r ? r = !1 : e.a += ur, _F(t, e); + e.a += ">"; + } + h != null && (e.a += "" + h); + } else + n.e ? (f = n.e.zb, f != null && (e.a += "" + f)) : (e.a += "?", n.b ? (e.a += " super ", _F(n.b, e)) : n.f && (e.a += " extends ", _F(n.f, e))); + } + function kIe(n) { + n.b = null, n.a = null, n.o = null, n.q = null, n.v = null, n.w = null, n.B = null, n.p = null, n.Q = null, n.R = null, n.S = null, n.T = null, n.U = null, n.V = null, n.W = null, n.bb = null, n.eb = null, n.ab = null, n.H = null, n.db = null, n.c = null, n.d = null, n.f = null, n.n = null, n.r = null, n.s = null, n.u = null, n.G = null, n.J = null, n.e = null, n.j = null, n.i = null, n.g = null, n.k = null, n.t = null, n.F = null, n.I = null, n.L = null, n.M = null, n.O = null, n.P = null, n.$ = null, n.N = null, n.Z = null, n.cb = null, n.K = null, n.D = null, n.A = null, n.C = null, n._ = null, n.fb = null, n.X = null, n.Y = null, n.gb = !1, n.hb = !1; + } + function yIe(n) { + var e, t, i, r; + if (i = ZF((!n.c && (n.c = J7(kc(n.f))), n.c), 0), n.e == 0 || n.a == 0 && n.f != -1 && n.e < 0) + return i; + if (e = FQ(n) < 0 ? 1 : 0, t = n.e, r = (i.length + 1 + y.Math.abs(wi(n.e)), new fg()), e == 1 && (r.a += "-"), n.e > 0) + if (t -= i.length - e, t >= 0) { + for (r.a += "0."; t > Id.length; t -= Id.length) + YSn(r, Id); + xAn(r, Id, wi(t)), Re(r, (zn(e, i.length + 1), i.substr(e))); + } else + t = e - t, Re(r, qo(i, e, wi(t))), r.a += ".", Re(r, xW(i, wi(t))); + else { + for (Re(r, (zn(e, i.length + 1), i.substr(e))); t < -Id.length; t += Id.length) + YSn(r, Id); + xAn(r, Id, wi(-t)); + } + return r.a; + } + function HF(n) { + var e, t, i, r, c, s, f, h, l; + return !(n.k != (Vn(), Vt) || n.j.c.length <= 1 || (c = u(v(n, (cn(), Ut)), 101), c == (Di(), Uc)) || (r = (cw(), (n.q ? n.q : (Dn(), Dn(), Wh))._b(db) ? i = u(v(n, db), 203) : i = u(v(Hi(n), z8), 203), i), r == TI) || !(r == P2 || r == S2) && (s = $(R(rw(n, X8))), e = u(v(n, Aj), 140), !e && (e = new vV(s, s, s, s)), l = uc(n, (en(), Wn)), h = e.d + e.a + (l.gc() - 1) * s, h > n.o.b || (t = uc(n, Zn), f = e.d + e.a + (t.gc() - 1) * s, f > n.o.b))); + } + function jIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + e.Ug("Orthogonal edge routing", 1), l = $(R(v(n, (cn(), A2)))), t = $(R(v(n, M2))), i = $(R(v(n, Bd))), g = new lN(0, t), j = 0, s = new xi(n.b, 0), f = null, a = null, h = null, d = null; + do + a = s.b < s.d.gc() ? (oe(s.b < s.d.gc()), u(s.d.Xb(s.c = s.b++), 30)) : null, d = a ? a.a : null, f && (Jen(f, j), j += f.c.a), k = f ? j + i : j, m = etn(g, n, h, d, k), r = !f || SC(h, (OA(), Dj)), c = !a || SC(d, (OA(), Dj)), m > 0 ? (p = (m - 1) * t, f && (p += i), a && (p += i), p < l && !r && !c && (p = l), j += p) : !r && !c && (j += l), f = a, h = d; + while (a); + n.f.a = j, e.Vg(); + } + function qA(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (a = null, n.d && (a = u($c(n.d, e), 142)), !a) { + if (c = n.a.vi(), d = c.i, !n.d || c6(n.d) != d) { + for (h = new de(), n.d && s5(h, n.d), l = h.f.c + h.i.c, f = l; f < d; ++f) + i = u(L(c, f), 142), r = r1(n.e, i).xe(), t = u(r == null ? Wc(h.f, null, i) : $0(h.i, r, i), 142), t && t != i && (r == null ? Wc(h.f, null, t) : $0(h.i, r, t)); + if (h.f.c + h.i.c != d) + for (s = 0; s < l; ++s) + i = u(L(c, s), 142), r = r1(n.e, i).xe(), t = u(r == null ? Wc(h.f, null, i) : $0(h.i, r, i), 142), t && t != i && (r == null ? Wc(h.f, null, t) : $0(h.i, r, t)); + n.d = h; + } + a = u($c(n.d, e), 142); + } + return a; + } + function qF(n, e, t, i, r, c, s) { + var f, h, l, a, d, g, p; + return d = on(un(v(e, (cn(), shn)))), g = null, c == (pr(), Vu) && i.c.i == t ? g = i.c : c == Qc && i.d.i == t && (g = i.d), l = s, !l || !d || g ? (a = (en(), sc), g ? a = g.j : mg(u(v(t, Ut), 101)) && (a = c == Vu ? Wn : Zn), h = EIe(n, e, t, c, a, i), f = JN((Hi(t), i)), c == Vu ? (Zi(f, u(sn(h.j, 0), 12)), Oi(f, r)) : (Zi(f, r), Oi(f, u(sn(h.j, 0), 12))), l = new dBn(i, f, h, u(v(h, (W(), st)), 12), c, !g)) : (nn(l.e, i), p = y.Math.max($(R(v(l.d, m1))), $(R(v(i, m1)))), U(l.d, m1, p)), Pn(n.a, i, new zC(l.d, e, c)), l; + } + function UF() { + UF = F; + var n; + qdn = new fjn(), xoe = K(fn, J, 2, 0, 6, 1), Noe = lf(Up(33, 58), Up(1, 26)), $oe = lf(Up(97, 122), Up(65, 90)), Bdn = Up(48, 57), Doe = lf(Noe, 0), Loe = lf($oe, Bdn), Rdn = lf(lf(0, Up(1, 6)), Up(33, 38)), Kdn = lf(lf(Bdn, Up(65, 70)), Up(97, 102)), Foe = lf(Doe, ZT("-_.!~*'()")), Boe = lf(Loe, GT("-_.!~*'()")), ZT(tJn), GT(tJn), lf(Foe, ZT(";:@&=+$,")), lf(Boe, GT(";:@&=+$,")), _dn = ZT(":/?#"), Hdn = GT(":/?#"), D9 = ZT("/?#"), L9 = GT("/?#"), n = new ni(), n.a.zc("jar", n), n.a.zc("zip", n), n.a.zc("archive", n), jO = (Dn(), new r4(n)); + } + function EIe(n, e, t, i, r, c) { + var s, f, h, l, a, d; + return s = null, l = i == (pr(), Vu) ? c.c : c.d, h = KT(e), l.i == t ? (s = u(ee(n.b, l), 10), s || (s = my(l, u(v(t, (cn(), Ut)), 101), r, ASe(l), null, l.n, l.o, h, e), U(s, (W(), st), l), Ve(n.b, l, s))) : (s = my((a = new xO(), d = $(R(v(e, (cn(), Ws)))) / 2, Ak(a, Kw, d), a), u(v(t, Ut), 101), r, i == Vu ? -1 : 1, null, new Li(), new V(0, 0), h, e), f = tye(s, t, i), U(s, (W(), st), f), Ve(n.b, f, s)), u(v(e, (W(), qc)), 21).Fc((mr(), cs)), mg(u(v(e, (cn(), Ut)), 101)) ? U(e, Ut, (Di(), Kv)) : U(e, Ut, (Di(), Qf)), s; + } + function Dm(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + f = 0, m = 0, h = DM(n.g, n.g.length), c = n.e, s = n.j, i = n.b, r = n.c; + do { + for (p = 0, a = new C(n.q); a.a < a.c.c.length; ) + l = u(E(a), 10), g = AGn(n, l), t = !0, (n.r == (ps(), Sj) || n.r == Pj) && (t = on(un(g.b))), u(g.a, 17).a < 0 && t ? (++p, h = DM(n.g, n.g.length), n.e = n.e + u(g.a, 17).a, m += c - n.e, c = n.e + u(g.a, 17).a, s = n.j, i = T0(n.b), r = T0(n.c)) : (n.g = DM(h, h.length), n.e = c, n.b = (Se(i), i ? new _u(i) : y4(new C(i))), n.c = (Se(r), r ? new _u(r) : y4(new C(r))), n.j = s); + ++f, d = p != 0 && on(un(e.Kb(new bi(Y(m), Y(f))))); + } while (d); + } + function CIe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn; + return s = n.f, g = e.f, f = s == (x5(), D3) || s == a9, p = g == D3 || g == a9, h = s == N2 || s == d9, m = g == N2 || g == d9, l = s == N2 || s == D3, k = g == N2 || g == D3, f && p ? n.f == a9 ? n : e : h && m ? n.f == d9 ? n : e : l && k ? (s == N2 ? (d = n, a = e) : (d = e, a = n), c = (j = t.j + t.f, S = d.e + i.f, I = y.Math.max(j, S), O = I - y.Math.min(t.j, d.e), N = d.d + i.g - t.i, N * O), r = (_ = t.i + t.g, X = a.d + i.g, tn = y.Math.max(_, X), yn = tn - y.Math.min(t.i, a.d), kn = a.e + i.f - t.j, yn * kn), c <= r ? n.f == N2 ? n : e : n.f == D3 ? n : e) : n; + } + function sGn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (U(e, (pt(), Lv), 0), h = u(v(e, $I), 40), e.d.b == 0) + h ? (a = $(R(v(h, j1))) + n.b + DY(n, h, e), U(e, j1, a)) : U(e, j1, 0); + else { + for (i = (c = ge(new sl(e).a.d, 0), new sg(c)); Q9(i.a); ) + t = u(be(i.a), 65).c, sGn(n, t); + f = u(NC((s = ge(new sl(e).a.d, 0), new sg(s))), 40), d = u(O1e((r = ge(new sl(e).a.d, 0), new sg(r))), 40), l = ($(R(v(d, j1))) + $(R(v(f, j1)))) / 2, h ? (a = $(R(v(h, j1))) + n.b + DY(n, h, e), U(e, j1, a), U(e, Lv, $(R(v(e, j1))) - l), xOe(n, e)) : U(e, j1, l); + } + } + function MIe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (a = n.e.a.c.length, s = new C(n.e.a); s.a < s.c.c.length; ) + c = u(E(s), 125), c.j = !1; + for (n.i = K(ye, _e, 28, a, 15, 1), n.g = K(ye, _e, 28, a, 15, 1), n.n = new Z(), r = 0, d = new Z(), h = new C(n.e.a); h.a < h.c.c.length; ) + f = u(E(h), 125), f.d = r++, f.b.a.c.length == 0 && nn(n.n, f), hi(d, f.g); + for (e = 0, i = new C(d); i.a < i.c.c.length; ) + t = u(E(i), 218), t.c = e++, t.f = !1; + l = d.c.length, n.b == null || n.b.length < l ? (n.b = K(Ii, Ar, 28, l, 15, 1), n.c = K(so, Xh, 28, l, 16, 1)) : e6(n.c), n.d = d, n.p = new CL(Qb(n.d.c.length)), n.j = 1; + } + function TIe(n, e) { + var t, i, r, c, s, f, h, l, a; + if (!(e.e.c.length <= 1)) { + for (n.f = e, n.d = u(v(n.f, (Uk(), Con)), 391), n.g = u(v(n.f, Son), 17).a, n.e = $(R(v(n.f, Mon))), n.c = $(R(v(n.f, EP))), KPn(n.b), r = new C(n.f.c); r.a < r.c.c.length; ) + i = u(E(r), 290), Ien(n.b, i.c, i, null), Ien(n.b, i.d, i, null); + for (f = n.f.e.c.length, n.a = Wa(Ii, [J, Ar], [109, 28], 15, [f, f], 2), l = new C(n.f.e); l.a < l.c.c.length; ) + h = u(E(l), 153), YPe(n, h, n.a[h.a]); + for (n.i = Wa(Ii, [J, Ar], [109, 28], 15, [f, f], 2), c = 0; c < f; ++c) + for (s = 0; s < f; ++s) + t = n.a[c][s], a = 1 / (t * t), n.i[c][s] = a; + } + } + function fGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (f = e.ah(), f || e.Ug(MXn, 1), t = u(v(n, (W(), wH)), 15), s = 1 / t.gc(), e._g()) + for (e.bh("ELK Layered uses the following " + t.gc() + " modules:"), p = 0, g = t.Kc(); g.Ob(); ) + a = u(g.Pb(), 47), i = (p < 10 ? "0" : "") + p++, e.bh(" Slot " + i + ": " + Xa(wo(a))); + for (d = t.Kc(); d.Ob(); ) { + if (a = u(d.Pb(), 47), e.$g()) + return; + a.Kf(n, e.eh(s)); + } + for (c = new C(n.b); c.a < c.c.c.length; ) + r = u(E(c), 30), hi(n.a, r.a), r.a.c.length = 0; + for (l = new C(n.a); l.a < l.c.c.length; ) + h = u(E(l), 10), $i(h, null); + n.b.c.length = 0, f || e.Vg(); + } + function AIe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + if (l = new Z(), !kt(n, (W(), hH))) + return l; + for (i = u(v(n, hH), 15).Kc(); i.Ob(); ) + e = u(i.Pb(), 10), UIe(e, n), Kn(l.c, e); + for (c = new C(n.b); c.a < c.c.c.length; ) + for (r = u(E(c), 30), f = new C(r.a); f.a < f.c.c.length; ) + s = u(E(f), 10), s.k == (Vn(), Zt) && (h = u(v(s, cI), 10), h && (a = new Ic(), ic(a, s), d = u(v(s, gc), 64), gi(a, d), g = u(sn(h.j, 0), 12), p = new E0(), Zi(p, a), Oi(p, g))); + for (t = new C(l); t.a < t.c.c.length; ) + e = u(E(t), 10), $i(e, u(sn(n.b, n.b.c.length - 1), 30)); + return l; + } + function hGn(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (d = new Z(), a = new bJ(0, t), c = 0, wT(a, new U$(0, 0, a, t)), r = 0, l = new ne(n); l.e != l.i.gc(); ) + h = u(ue(l), 27), i = u(sn(a.a, a.a.c.length - 1), 172), f = r + h.g + (u(sn(a.a, 0), 172).b.c.length == 0 ? 0 : t), (f > e || on(un(z(h, (Rf(), Kj))))) && (r = 0, c += a.b + t, Kn(d.c, a), a = new bJ(c, t), i = new U$(0, a.f, a, t), wT(a, i), r = 0), i.b.c.length == 0 || !on(un(z(At(h), (Rf(), Lq)))) && (h.f >= i.o && h.f <= i.f || i.a * 0.5 <= h.f && i.a * 1.5 >= h.f) ? FY(i, h) : (s = new U$(i.s + i.r + t, a.f, a, t), wT(a, s), FY(s, h)), r = h.i + h.g; + return Kn(d.c, a), d; + } + function z5(n) { + var e, t, i, r; + if (!(n.b == null || n.b.length <= 2) && !n.a) { + for (e = 0, r = 0; r < n.b.length; ) { + for (e != r ? (n.b[e] = n.b[r++], n.b[e + 1] = n.b[r++]) : r += 2, t = n.b[e + 1]; r < n.b.length && !(t + 1 < n.b[r]); ) + if (t + 1 == n.b[r]) + n.b[e + 1] = n.b[r + 1], t = n.b[e + 1], r += 2; + else if (t >= n.b[r + 1]) + r += 2; + else if (t < n.b[r + 1]) + n.b[e + 1] = n.b[r + 1], t = n.b[e + 1], r += 2; + else + throw M(new ec("Token#compactRanges(): Internel Error: [" + n.b[e] + "," + n.b[e + 1] + "] [" + n.b[r] + "," + n.b[r + 1] + "]")); + e += 2; + } + e != n.b.length && (i = K(ye, _e, 28, e, 15, 1), Oc(n.b, 0, i, 0, e), n.b = i), n.a = !0; + } + } + function SIe(n, e) { + var t, i, r, c, s, f, h; + for (s = Tp(n.a).Kc(); s.Ob(); ) { + if (c = u(s.Pb(), 18), c.b.c.length > 0) + for (i = new _u(u(ot(n.a, c), 21)), Dn(), Yt(i, new NG(e)), r = new xi(c.b, 0); r.b < r.d.gc(); ) { + switch (t = (oe(r.b < r.d.gc()), u(r.d.Xb(r.c = r.b++), 72)), f = -1, u(v(t, (cn(), Ah)), 278).g) { + case 1: + f = i.c.length - 1; + break; + case 0: + f = $ke(i); + break; + case 2: + f = 0; + } + f != -1 && (h = (Ln(f, i.c.length), u(i.c[f], 249)), nn(h.b.b, t), u(v(Hi(h.b.c.i), (W(), qc)), 21).Fc((mr(), kv)), u(v(Hi(h.b.c.i), qc), 21).Fc(vv), bo(r), U(t, ofn, c)); + } + Zi(c, null), Oi(c, null); + } + } + function PIe(n, e) { + var t, i, r, c; + return t = new Ebn(), i = u(Wr(_r(new Tn(null, new In(n.f, 16)), t), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [(Gu(), Aw), Yr]))), 21), r = i.gc(), r = r == 2 ? 1 : 0, r == 1 && o0(Bk(u(Wr(ut(i.Lc(), new Cbn()), Lxn(Ml(0), new KU())), 168).a, 2), 0) && (r = 0), i = u(Wr(_r(new Tn(null, new In(e.f, 16)), t), Wb(new Y2(), new Z2(), new np(), new ep(), A(T(xr, 1), G, 108, 0, [Aw, Yr]))), 21), c = i.gc(), c = c == 2 ? 1 : 0, c == 1 && o0(Bk(u(Wr(ut(i.Lc(), new Mbn()), Lxn(Ml(0), new KU())), 168).a, 2), 0) && (c = 0), r < c ? -1 : r == c ? 0 : 1; + } + function lGn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (e = Sf(n), c = on(un(z(e, (cn(), Rw)))), a = 0, r = 0, l = new ne((!n.e && (n.e = new Nn(Wt, n, 7, 4)), n.e)); l.e != l.i.gc(); ) + h = u(ue(l), 74), f = _0(h), s = f && c && on(un(z(h, Nd))), g = Gr(u(L((!h.c && (h.c = new Nn(he, h, 5, 8)), h.c), 0), 84)), f && s ? ++r : f && !s ? ++a : At(g) == e || g == e ? ++r : ++a; + for (i = new ne((!n.d && (n.d = new Nn(Wt, n, 8, 5)), n.d)); i.e != i.i.gc(); ) + t = u(ue(i), 74), f = _0(t), s = f && c && on(un(z(t, Nd))), d = Gr(u(L((!t.b && (t.b = new Nn(he, t, 4, 7)), t.b), 0), 84)), f && s ? ++a : f && !s ? ++r : At(d) == e || d == e ? ++a : ++r; + return a - r; + } + function IIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (e.Ug("Edge splitting", 1), n.b.c.length <= 2) { + e.Vg(); + return; + } + for (c = new xi(n.b, 0), s = (oe(c.b < c.d.gc()), u(c.d.Xb(c.c = c.b++), 30)); c.b < c.d.gc(); ) + for (r = s, s = (oe(c.b < c.d.gc()), u(c.d.Xb(c.c = c.b++), 30)), h = new C(r.a); h.a < h.c.c.length; ) + for (f = u(E(h), 10), a = new C(f.j); a.a < a.c.c.length; ) + for (l = u(E(a), 12), i = new C(l.g); i.a < i.c.c.length; ) + t = u(E(i), 18), g = t.d, d = g.i.c, d != r && d != s && yqn(t, (p = new Tl(n), Ha(p, (Vn(), Mi)), U(p, (W(), st), t), U(p, (cn(), Ut), (Di(), Uc)), $i(p, s), p)); + e.Vg(); + } + function OIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (a = new Z(), g = new ni(), s = e.b, r = 0; r < s.c.length; r++) { + for (l = (Ln(r, s.c.length), u(s.c[r], 30)).a, a.c.length = 0, c = 0; c < l.c.length; c++) + f = n.a[r][c], f.p = c, f.k == (Vn(), Hc) && Kn(a.c, f), Go(u(sn(e.b, r), 30).a, c, f), f.j.c.length = 0, hi(f.j, u(u(sn(n.b, r), 15).Xb(c), 16)), Ep(u(v(f, (cn(), Ut)), 101)) || U(f, Ut, (Di(), Ud)); + for (i = new C(a); i.a < i.c.c.length; ) + t = u(E(i), 10), d = uSe(t), g.a.zc(d, g), g.a.zc(t, g); + } + for (h = g.a.ec().Kc(); h.Ob(); ) + f = u(h.Pb(), 10), Dn(), Yt(f.j, (cm(), Esn)), f.i = !0, Pnn(f); + } + function aGn(n) { + var e, t, i, r, c; + return n.g != null ? n.g : n.a < 32 ? (n.g = JDe(kc(n.f), wi(n.e)), n.g) : (r = ZF((!n.c && (n.c = J7(kc(n.f))), n.c), 0), n.e == 0 ? r : (e = (!n.c && (n.c = J7(kc(n.f))), n.c).e < 0 ? 2 : 1, t = r.length, i = -n.e + t - e, c = new x1(), c.a += "" + r, n.e > 0 && i >= -6 ? i >= 0 ? E7(c, t - wi(n.e), String.fromCharCode(46)) : (L$(c, e - 1, e - 1, "0."), E7(c, e + 1, ws(Id, 0, -wi(i) - 1))) : (t - e >= 1 && (E7(c, e, String.fromCharCode(46)), ++t), E7(c, t, String.fromCharCode(69)), i > 0 && E7(c, ++t, String.fromCharCode(43)), E7(c, ++t, "" + _6(kc(i)))), n.g = c.a, n.g)); + } + function DIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn; + i = $(R(v(e, (cn(), hhn)))), _ = u(v(e, V8), 17).a, g = 4, r = 3, X = 20 / _, p = !1, h = 0, s = tt; + do { + for (c = h != 1, d = h != 0, tn = 0, j = n.a, I = 0, N = j.length; I < N; ++I) + m = j[I], m.f = null, vDe(n, m, c, d, i), tn += y.Math.abs(m.a); + do + f = uPe(n, e); + while (f); + for (k = n.a, S = 0, O = k.length; S < O; ++S) + if (m = k[S], t = jW(m).a, t != 0) + for (a = new C(m.e); a.a < a.c.c.length; ) + l = u(E(a), 10), l.n.b += t; + h == 0 || h == 1 ? (--g, g <= 0 && (tn < s || -g > _) ? (h = 2, s = tt) : h == 0 ? (h = 1, s = tn) : (h = 0, s = tn)) : (p = tn >= s || s - tn < X, s = tn, p && --r); + } while (!(p && r <= 0)); + } + function GF(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + for (m = new de(), c = n.a.ec().Kc(); c.Ob(); ) + i = u(c.Pb(), 177), Ve(m, i, t.af(i)); + for (s = (Se(n), n ? new _u(n) : y4(n.a.ec().Kc())), Yt(s, new O9n(m)), f = HM(s), h = new LC(e), p = new de(), Wc(p.f, e, h); f.a.gc() != 0; ) { + for (l = null, a = null, d = null, r = f.a.ec().Kc(); r.Ob(); ) + if (i = u(r.Pb(), 177), $(R(Kr(gr(m.f, i)))) <= St) { + if (nu(p, i.a) && !nu(p, i.b)) { + a = i.b, d = i.a, l = i; + break; + } + if (nu(p, i.b) && !nu(p, i.a)) { + a = i.a, d = i.b, l = i; + break; + } + } + if (!l) + break; + g = new LC(a), nn(u(Kr(gr(p.f, d)), 225).a, g), Wc(p.f, a, g), f.a.Bc(l) != null; + } + return h; + } + function LIe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + for (t.Ug("Depth-first cycle removal", 1), d = e.a, a = d.c.length, n.c = new Z(), n.d = K(so, Xh, 28, a, 16, 1), n.a = K(so, Xh, 28, a, 16, 1), n.b = new Z(), s = 0, l = new C(d); l.a < l.c.c.length; ) + h = u(E(l), 10), h.p = s, N4(ji(h)) && nn(n.c, h), ++s; + for (p = new C(n.c); p.a < p.c.c.length; ) + g = u(E(p), 10), jnn(n, g); + for (c = 0; c < a; c++) + n.d[c] || (f = (Ln(c, d.c.length), u(d.c[c], 10)), jnn(n, f)); + for (r = new C(n.b); r.a < r.c.c.length; ) + i = u(E(r), 18), U0(i, !0), U(e, (W(), kj), (_n(), !0)); + n.c = null, n.d = null, n.a = null, n.b = null, t.Vg(); + } + function NIe(n, e) { + Vg(); + var t, i, r, c, s, f; + return c = e.c - (n.c + n.b), r = n.c - (e.c + e.b), s = n.d - (e.d + e.a), t = e.d - (n.d + n.a), i = y.Math.max(r, c), f = y.Math.max(s, t), Tf(), Ks(jh), (y.Math.abs(i) <= jh || i == 0 || isNaN(i) && isNaN(0) ? 0 : i < 0 ? -1 : i > 0 ? 1 : s0(isNaN(i), isNaN(0))) >= 0 ^ (Ks(jh), (y.Math.abs(f) <= jh || f == 0 || isNaN(f) && isNaN(0) ? 0 : f < 0 ? -1 : f > 0 ? 1 : s0(isNaN(f), isNaN(0))) >= 0) ? y.Math.max(f, i) : (Ks(jh), (y.Math.abs(i) <= jh || i == 0 || isNaN(i) && isNaN(0) ? 0 : i < 0 ? -1 : i > 0 ? 1 : s0(isNaN(i), isNaN(0))) > 0 ? y.Math.sqrt(f * f + i * i) : -y.Math.sqrt(f * f + i * i)); + } + function pd(n, e) { + var t, i, r, c, s, f; + if (e) { + if (!n.a && (n.a = new BE()), n.e == 2) { + FE(n.a, e); + return; + } + if (e.e == 1) { + for (r = 0; r < e.Pm(); r++) + pd(n, e.Lm(r)); + return; + } + if (f = n.a.a.c.length, f == 0) { + FE(n.a, e); + return; + } + if (s = u(k0(n.a, f - 1), 122), !((s.e == 0 || s.e == 10) && (e.e == 0 || e.e == 10))) { + FE(n.a, e); + return; + } + c = e.e == 0 ? 2 : e.Mm().length, s.e == 0 ? (t = new i6(), i = s.Km(), i >= hr ? Cr(t, xY(i)) : T4(t, i & ui), s = new IN(10, null, 0), gwe(n.a, s, f - 1)) : (t = (s.Mm().length + c, new i6()), Cr(t, s.Mm())), e.e == 0 ? (i = e.Km(), i >= hr ? Cr(t, xY(i)) : T4(t, i & ui)) : Cr(t, e.Mm()), u(s, 530).b = t.a; + } + } + function $Ie(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (!t.dc()) { + for (f = 0, g = 0, i = t.Kc(), m = u(i.Pb(), 17).a; f < e.f; ) { + if (f == m && (g = 0, i.Ob() ? m = u(i.Pb(), 17).a : m = e.f + 1), f != g) { + for (j = u(sn(n.b, f), 30), p = u(sn(n.b, g), 30), k = T0(j.a), d = new C(k); d.a < d.c.c.length; ) + if (a = u(E(d), 10), uw(a, p.a.c.length, p), g == 0) + for (s = T0(ji(a)), c = new C(s); c.a < c.c.c.length; ) + r = u(E(c), 18), U0(r, !0), U(n, (W(), kj), (_n(), !0)), pGn(n, r, 1); + } + ++g, ++f; + } + for (h = new xi(n.b, 0); h.b < h.d.gc(); ) + l = (oe(h.b < h.d.gc()), u(h.d.Xb(h.c = h.b++), 30)), l.a.c.length == 0 && bo(h); + } + } + function xIe(n, e, t) { + var i, r, c; + if (r = u(v(e, (cn(), fI)), 282), r != (jm(), x8)) { + switch (t.Ug("Horizontal Compaction", 1), n.a = e, c = new XNn(), i = new oHn((c.d = e, c.c = u(v(c.d, $l), 223), AAe(c), NOe(c), $Ae(c), c.a)), jhe(i, n.b), u(v(e, Kfn), 431).g) { + case 1: + zjn(i, new mxn(n.a)); + break; + default: + zjn(i, (YW(), _Qn)); + } + switch (r.g) { + case 1: + $5(i); + break; + case 2: + $5(UA(i, (ci(), Xr))); + break; + case 3: + $5(Xjn(UA($5(i), (ci(), Xr)), new U2n())); + break; + case 4: + $5(Xjn(UA($5(i), (ci(), Xr)), new p7n(c))); + break; + case 5: + $5(yhe(i, YZn)); + } + UA(i, (ci(), Br)), i.e = !0, fDe(c), t.Vg(); + } + } + function FIe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (s = e.b, a = s.o, h = s.d, i = $(R(nA(s, (cn(), Ws)))), r = $(R(nA(s, T2))), l = $(R(nA(s, OH))), f = new sD(), VV(f, h.d, h.c, h.a, h.b), g = XAe(e, i, r, l), S = new C(e.d); S.a < S.c.c.length; ) { + for (j = u(E(S), 105), m = j.f.a.ec().Kc(); m.Ob(); ) + p = u(m.Pb(), 340), c = p.a, d = Aye(p), t = (I = new Tu(), xKn(p, p.c, g, I), nje(p, d, g, I), xKn(p, p.d, g, I), I), t = n.ng(p, d, t), vo(c.a), Bi(c.a, t), Gt(new Tn(null, new In(t, 16)), new _Cn(a, f)); + k = j.i, k && (wye(j, k, g, r), O = new rr(k.g), oZ(a, f, O), it(O, k.j), oZ(a, f, O)); + } + VV(h, f.d, f.c, f.a, f.b); + } + function BIe(n, e, t, i, r, c, s, f) { + var h, l, a, d; + switch (h = Of(A(T(PNe, 1), Bn, 238, 0, [e, t, i, r])), d = null, n.b.g) { + case 1: + d = Of(A(T(A1n, 1), Bn, 535, 0, [new KO(), new BO(), new RO()])); + break; + case 0: + d = Of(A(T(A1n, 1), Bn, 535, 0, [new RO(), new BO(), new KO()])); + break; + case 2: + d = Of(A(T(A1n, 1), Bn, 535, 0, [new BO(), new KO(), new RO()])); + } + for (a = new C(d); a.a < a.c.c.length; ) + l = u(E(a), 535), h.c.length > 1 && (h = l.Hg(h, n.a, f)); + return h.c.length == 1 ? u(sn(h, h.c.length - 1), 238) : h.c.length == 2 ? CIe((Ln(0, h.c.length), u(h.c[0], 238)), (Ln(1, h.c.length), u(h.c[1], 238)), s, c) : null; + } + function RIe(n, e, t) { + var i, r, c, s, f, h, l; + for (t.Ug("Find roots", 1), n.a.c.length = 0, r = ge(e.b, 0); r.b != r.d.c; ) + i = u(be(r), 40), i.b.b == 0 && (U(i, (pt(), Ma), (_n(), !0)), nn(n.a, i)); + switch (n.a.c.length) { + case 0: + c = new q$(0, e, "DUMMY_ROOT"), U(c, (pt(), Ma), (_n(), !0)), U(c, tq, !0), Fe(e.b, c); + break; + case 1: + break; + default: + for (s = new q$(0, e, IS), h = new C(n.a); h.a < h.c.c.length; ) + f = u(E(h), 40), l = new QW(s, f), U(l, (pt(), tq), (_n(), !0)), Fe(s.a.a, l), Fe(s.d, l), Fe(f.b, l), U(f, Ma, !1); + U(s, (pt(), Ma), (_n(), !0)), U(s, tq, !0), Fe(e.b, s); + } + t.Vg(); + } + function dGn(n) { + var e, t, i, r, c, s; + for (eu(n.a, new Nbn()), t = new C(n.a); t.a < t.c.c.length; ) + e = u(E(t), 225), i = mi(Ki(u(n.b, 68).c), u(e.b, 68).c), TYn ? (s = u(n.b, 68).b, c = u(e.b, 68).b, y.Math.abs(i.a) >= y.Math.abs(i.b) ? (i.b = 0, c.d + c.a > s.d && c.d < s.d + s.a && JC(i, y.Math.max(s.c - (c.c + c.b), c.c - (s.c + s.b)))) : (i.a = 0, c.c + c.b > s.c && c.c < s.c + s.b && JC(i, y.Math.max(s.d - (c.d + c.a), c.d - (s.d + s.a))))) : JC(i, FUn(u(n.b, 68), u(e.b, 68))), r = y.Math.sqrt(i.a * i.a + i.b * i.b), r = OKn(I8, e, r, i), JC(i, r), YL(u(e.b, 68), i), eu(e.a, new OG(i)), u(I8.b, 68), VJ(I8, uon, e); + } + function KIe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m; + for (n.f = new oD(), l = 0, r = 0, s = new C(n.e.b); s.a < s.c.c.length; ) + for (c = u(E(s), 30), h = new C(c.a); h.a < h.c.c.length; ) { + for (f = u(E(h), 10), f.p = l++, i = new ie(ce(Qt(f).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 18), t.p = r++; + for (e = HF(f), g = new C(f.j); g.a < g.c.c.length; ) + d = u(E(g), 12), e && (m = d.a.b, m != y.Math.floor(m) && (a = m - id(kc(y.Math.round(m))), d.a.b -= a)), p = d.n.b + d.a.b, p != y.Math.floor(p) && (a = p - id(kc(y.Math.round(p))), d.n.b -= a); + } + n.g = l, n.b = r, n.i = K(MNe, Bn, 412, l, 0, 1), n.c = K(CNe, Bn, 655, r, 0, 1), n.d.a.$b(); + } + function me(n) { + var e, t, i, r, c, s, f, h, l; + if (n.Pj()) + if (h = n.Qj(), n.i > 0) { + if (e = new pX(n.i, n.g), t = n.i, c = t < 100 ? null : new F1(t), n.Tj()) + for (i = 0; i < n.i; ++i) + s = n.g[i], c = n.Vj(s, c); + if (e5(n), r = t == 1 ? n.Ij(4, L(e, 0), null, 0, h) : n.Ij(6, e, null, -1, h), n.Mj()) { + for (i = new yp(e); i.e != i.i.gc(); ) + c = n.Oj(Mx(i), c); + c ? (c.nj(r), c.oj()) : n.Jj(r); + } else + c ? (c.nj(r), c.oj()) : n.Jj(r); + } else + e5(n), n.Jj(n.Ij(6, (Dn(), sr), null, -1, h)); + else if (n.Mj()) + if (n.i > 0) { + for (f = n.g, l = n.i, e5(n), c = l < 100 ? null : new F1(l), i = 0; i < l; ++i) + s = f[i], c = n.Oj(s, c); + c && c.oj(); + } else + e5(n); + else + e5(n); + } + function Wen(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (Xxn(this), t == (M0(), Ca) ? fi(this.r, n) : fi(this.w, n), a = St, l = li, s = e.a.ec().Kc(); s.Ob(); ) + r = u(s.Pb(), 42), f = u(r.a, 465), i = u(r.b, 18), h = i.c, h == n && (h = i.d), f == Ca ? fi(this.r, h) : fi(this.w, h), g = (en(), vu).Hc(h.j) ? $(R(v(h, (W(), jv)))) : cc(A(T(Ei, 1), J, 8, 0, [h.i.n, h.n, h.a])).b, a = y.Math.min(a, g), l = y.Math.max(l, g); + for (d = (en(), vu).Hc(n.j) ? $(R(v(n, (W(), jv)))) : cc(A(T(Ei, 1), J, 8, 0, [n.i.n, n.n, n.a])).b, n_n(this, d, a, l), c = e.a.ec().Kc(); c.Ob(); ) + r = u(c.Pb(), 42), h_n(this, u(r.b, 18)); + this.o = !1; + } + function _Ie(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + return t = n.l & 8191, i = n.l >> 13 | (n.m & 15) << 9, r = n.m >> 4 & 8191, c = n.m >> 17 | (n.h & 255) << 5, s = (n.h & 1048320) >> 8, f = e.l & 8191, h = e.l >> 13 | (e.m & 15) << 9, l = e.m >> 4 & 8191, a = e.m >> 17 | (e.h & 255) << 5, d = (e.h & 1048320) >> 8, yn = t * f, kn = i * f, Fn = r * f, Rn = c * f, te = s * f, h != 0 && (kn += t * h, Fn += i * h, Rn += r * h, te += c * h), l != 0 && (Fn += t * l, Rn += i * l, te += r * l), a != 0 && (Rn += t * a, te += i * a), d != 0 && (te += t * d), p = yn & ro, m = (kn & 511) << 13, g = p + m, j = yn >> 22, S = kn >> 9, I = (Fn & 262143) << 4, O = (Rn & 31) << 17, k = j + S + I + O, _ = Fn >> 18, X = Rn >> 5, tn = (te & 4095) << 8, N = _ + X + tn, k += g >> 22, g &= ro, N += k >> 22, k &= ro, N &= Il, Zc(g, k, N); + } + function bGn(n) { + var e, t, i, r, c, s, f; + if (f = u(sn(n.j, 0), 12), f.g.c.length != 0 && f.e.c.length != 0) + throw M(new Or("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges.")); + if (f.g.c.length != 0) { + for (c = St, t = new C(f.g); t.a < t.c.c.length; ) + e = u(E(t), 18), s = e.d.i, i = u(v(s, (cn(), pI)), 140), c = y.Math.min(c, s.n.a - i.b); + return new TE(Se(c)); + } + if (f.e.c.length != 0) { + for (r = li, t = new C(f.e); t.a < t.c.c.length; ) + e = u(E(t), 18), s = e.c.i, i = u(v(s, (cn(), pI)), 140), r = y.Math.max(r, s.n.a + s.o.a + i.c); + return new TE(Se(r)); + } + return Zv(), Zv(), KK; + } + function wGn(n, e) { + var t, i, r, c, s, f, h; + if (n.ol()) { + if (n.i > 4) + if (n.fk(e)) { + if (n.al()) { + if (r = u(e, 54), i = r.Eh(), h = i == n.e && (n.ml() ? r.yh(r.Fh(), n.il()) == n.jl() : -1 - r.Fh() == n.Lj()), n.nl() && !h && !i && r.Jh()) { + for (c = 0; c < n.i; ++c) + if (t = n.pl(u(n.g[c], 58)), x(t) === x(e)) + return !0; + } + return h; + } else if (n.ml() && !n.ll()) { + if (s = u(e, 58).Mh(wr(u(n.Lk(), 19))), x(s) === x(n.e)) + return !0; + if (s == null || !u(s, 58).Vh()) + return !1; + } + } else + return !1; + if (f = km(n, e), n.nl() && !f) { + for (c = 0; c < n.i; ++c) + if (r = n.pl(u(n.g[c], 58)), x(r) === x(e)) + return !0; + } + return f; + } else + return km(n, e); + } + function HIe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (t.Ug("Interactive cycle breaking", 1), d = new Z(), p = new C(e.a); p.a < p.c.c.length; ) + for (g = u(E(p), 10), g.p = 1, m = KZ(g).a, a = F0(g, (pr(), Qc)).Kc(); a.Ob(); ) + for (l = u(a.Pb(), 12), c = new C(l.g); c.a < c.c.c.length; ) + i = u(E(c), 18), k = i.d.i, k != g && (j = KZ(k).a, j < m && Kn(d.c, i)); + for (s = new C(d); s.a < s.c.c.length; ) + i = u(E(s), 18), U0(i, !0); + for (d.c.length = 0, h = new C(e.a); h.a < h.c.c.length; ) + f = u(E(h), 10), f.p > 0 && w_n(n, f, d); + for (r = new C(d); r.a < r.c.c.length; ) + i = u(E(r), 18), U0(i, !0); + d.c.length = 0, t.Vg(); + } + function qIe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (t = 0, a = new Z(), f = new C(e); f.a < f.c.c.length; ) { + switch (s = u(E(f), 12), aY(n.b, n.d[s.p]), a.c.length = 0, s.i.k.g) { + case 0: + i = u(v(s, (W(), Xu)), 10), eu(i.j, new W7n(a)); + break; + case 1: + i1e(im(ut(new Tn(null, new In(s.i.j, 16)), new J7n(s))), new Q7n(a)); + break; + case 3: + r = u(v(s, (W(), st)), 12), nn(a, new bi(r, Y(s.e.c.length + s.g.c.length))); + } + for (l = new C(a); l.a < l.c.c.length; ) + h = u(E(l), 42), c = Pz(n, u(h.a, 12)), c > n.d[s.p] && (t += PJ(n.b, c) * u(h.b, 17).a, W1(n.a, Y(c))); + for (; !t6(n.a); ) + sQ(n.b, u(Sp(n.a), 17).a); + } + return t; + } + function UIe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (a = u(v(n, (W(), gc)), 64), i = u(sn(n.j, 0), 12), a == (en(), Xn) ? gi(i, ae) : a == ae && gi(i, Xn), u(v(e, (cn(), xd)), 181).Hc((go(), Gd))) { + if (h = $(R(v(n, Av))), l = $(R(v(n, Sv))), s = $(R(v(n, qw))), f = u(v(e, _w), 21), f.Hc((zu(), Fl))) + for (t = l, d = n.o.a / 2 - i.n.a, c = new C(i.f); c.a < c.c.c.length; ) + r = u(E(c), 72), r.n.b = t, r.n.a = d - r.o.a / 2, t += r.o.b + s; + else if (f.Hc(Ia)) + for (c = new C(i.f); c.a < c.c.c.length; ) + r = u(E(c), 72), r.n.a = h + n.o.a - i.n.a; + gpe(new IE((u6(), new kN(e, !1, !1, new UU()))), new XC(null, n, !1)); + } + } + function GIe(n, e) { + var t, i, r, c, s, f, h, l, a; + if (e.c.length != 0) { + for (Dn(), QL(e.c, e.c.length, null), r = new C(e), i = u(E(r), 154); r.a < r.c.c.length; ) + t = u(E(r), 154), dQ(i.e.c, t.e.c) && !(tZ(SAn(i.e).b, t.e.d) || tZ(SAn(t.e).b, i.e.d)) ? i = (hi(i.k, t.k), hi(i.b, t.b), hi(i.c, t.c), Bi(i.i, t.i), hi(i.d, t.d), hi(i.j, t.j), c = y.Math.min(i.e.c, t.e.c), s = y.Math.min(i.e.d, t.e.d), f = y.Math.max(i.e.c + i.e.b, t.e.c + t.e.b), h = f - c, l = y.Math.max(i.e.d + i.e.a, t.e.d + t.e.a), a = l - s, LSn(i.e, c, s, h, a), wpe(i.f, t.f), !i.a && (i.a = t.a), hi(i.g, t.g), nn(i.g, t), i) : (SUn(n, i), i = t); + SUn(n, i); + } + } + function zIe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _; + for (h = new Z(), c = new C(e.a); c.a < c.c.c.length; ) + for (r = u(E(c), 10), f = new C(r.j); f.a < f.c.c.length; ) { + for (s = u(E(f), 12), a = null, O = hh(s.g), N = 0, _ = O.length; N < _; ++N) + I = O[N], Q4(I.d.i, t) || (S = qF(n, e, t, I, I.c, (pr(), Qc), a), S != a && Kn(h.c, S), S.c && (a = S)); + for (l = null, m = hh(s.e), k = 0, j = m.length; k < j; ++k) + p = m[k], Q4(p.c.i, t) || (S = qF(n, e, t, p, p.d, (pr(), Vu), l), S != l && Kn(h.c, S), S.c && (l = S)); + } + for (g = new C(h); g.a < g.c.c.length; ) + d = u(E(g), 453), qr(e.a, d.a, 0) != -1 || nn(e.a, d.a), d.c && Kn(i.c, d); + } + function XIe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j; + for (d = new rr(u(z(n, (mA(), ban)), 8)), d.a = y.Math.max(d.a - t.b - t.c, 0), d.b = y.Math.max(d.b - t.d - t.a, 0), r = R(z(n, lan)), (r == null || (Jn(r), r <= 0)) && (r = 1.3), f = new Z(), m = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); m.e != m.i.gc(); ) + p = u(ue(m), 27), s = new vAn(p), Kn(f.c, s); + switch (g = u(z(n, Wq), 320), g.g) { + case 3: + j = LSe(f, e, d.a, d.b, (l = i, Jn(r), l)); + break; + case 1: + j = EPe(f, e, d.a, d.b, (a = i, Jn(r), a)); + break; + default: + j = WIe(f, e, d.a, d.b, (h = i, Jn(r), h)); + } + c = new hT(j), k = QF(c, e, t, d.a, d.b, i, (Jn(r), r)), G0(n, k.a, k.b, !1, !0); + } + function VIe(n, e, t, i) { + var r, c, s, f, h, l; + if (f = n.j, f == (en(), sc) && e != (Di(), Qf) && e != (Di(), Pa) && (f = EUn(n, t), gi(n, f), !(n.q ? n.q : (Dn(), Dn(), Wh))._b((cn(), Kw)) && f != sc && (n.n.a != 0 || n.n.b != 0) && U(n, Kw, V7e(n, f))), e == (Di(), tl)) { + switch (l = 0, f.g) { + case 1: + case 3: + c = n.i.o.a, c > 0 && (l = n.n.a / c); + break; + case 2: + case 4: + r = n.i.o.b, r > 0 && (l = n.n.b / r); + } + U(n, (W(), fb), l); + } + if (h = n.o, s = n.a, i) + s.a = i.a, s.b = i.b, n.d = !0; + else if (e != Qf && e != Pa && f != sc) + switch (f.g) { + case 1: + s.a = h.a / 2; + break; + case 2: + s.a = h.a, s.b = h.b / 2; + break; + case 3: + s.a = h.a / 2, s.b = h.b; + break; + case 4: + s.b = h.b / 2; + } + else + s.a = h.a / 2, s.b = h.b / 2; + } + function X5(n) { + var e, t, i, r, c, s, f, h, l, a; + if (n.Pj()) + if (a = n.Ej(), h = n.Qj(), a > 0) + if (e = new _Q(n.pj()), t = a, c = t < 100 ? null : new F1(t), S7(n, t, e.g), r = t == 1 ? n.Ij(4, L(e, 0), null, 0, h) : n.Ij(6, e, null, -1, h), n.Mj()) { + for (i = new ne(e); i.e != i.i.gc(); ) + c = n.Oj(ue(i), c); + c ? (c.nj(r), c.oj()) : n.Jj(r); + } else + c ? (c.nj(r), c.oj()) : n.Jj(r); + else + S7(n, n.Ej(), n.Fj()), n.Jj(n.Ij(6, (Dn(), sr), null, -1, h)); + else if (n.Mj()) + if (a = n.Ej(), a > 0) { + for (f = n.Fj(), l = a, S7(n, a, f), c = l < 100 ? null : new F1(l), i = 0; i < l; ++i) + s = f[i], c = n.Oj(s, c); + c && c.oj(); + } else + S7(n, n.Ej(), n.Fj()); + else + S7(n, n.Ej(), n.Fj()); + } + function WIe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j; + for (f = K(Ii, Ar, 28, n.c.length, 15, 1), g = new dM(new Ymn()), MZ(g, n), l = 0, k = new Z(); g.b.c.length != 0; ) + if (s = u(g.b.c.length == 0 ? null : sn(g.b, 0), 163), l > 1 && Pu(s) * ao(s) / 2 > f[0]) { + for (c = 0; c < k.c.length - 1 && Pu(s) * ao(s) / 2 > f[c]; ) + ++c; + m = new Jl(k, 0, c + 1), d = new hT(m), a = Pu(s) / ao(s), h = QF(d, e, new up(), t, i, r, a), it(ff(d.e), h), Mp(ym(g, d), _m), p = new Jl(k, c + 1, k.c.length), MZ(g, p), k.c.length = 0, l = 0, wPn(f, f.length, 0); + } else + j = g.b.c.length == 0 ? null : sn(g.b, 0), j != null && M$(g, 0), l > 0 && (f[l] = f[l - 1]), f[l] += Pu(s) * ao(s), ++l, Kn(k.c, s); + return k; + } + function JIe(n, e) { + var t, i, r, c; + t = e.b, c = new _u(t.j), r = 0, i = t.j, i.c.length = 0, g0(u(od(n.b, (en(), Xn), (D0(), ub)), 15), t), r = _k(c, r, new wpn(), i), g0(u(od(n.b, Xn, va), 15), t), r = _k(c, r, new spn(), i), g0(u(od(n.b, Xn, cb), 15), t), g0(u(od(n.b, Zn, ub), 15), t), g0(u(od(n.b, Zn, va), 15), t), r = _k(c, r, new gpn(), i), g0(u(od(n.b, Zn, cb), 15), t), g0(u(od(n.b, ae, ub), 15), t), r = _k(c, r, new ppn(), i), g0(u(od(n.b, ae, va), 15), t), r = _k(c, r, new mpn(), i), g0(u(od(n.b, ae, cb), 15), t), g0(u(od(n.b, Wn, ub), 15), t), r = _k(c, r, new lpn(), i), g0(u(od(n.b, Wn, va), 15), t), g0(u(od(n.b, Wn, cb), 15), t); + } + function QIe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + for (f = new C(e); f.a < f.c.c.length; ) + c = u(E(f), 239), c.e = null, c.c = 0; + for (h = null, s = new C(e); s.a < s.c.c.length; ) + if (c = u(E(s), 239), d = c.d[0], !(t && d.k != (Vn(), Vt))) { + for (p = u(v(d, (W(), T3)), 15).Kc(); p.Ob(); ) + g = u(p.Pb(), 10), (!t || g.k == (Vn(), Vt)) && ((!c.e && (c.e = new Z()), c.e).Fc(n.b[g.c.p][g.p]), ++n.b[g.c.p][g.p].c); + if (!t && d.k == (Vn(), Vt)) { + if (h) + for (a = u(ot(n.d, h), 21).Kc(); a.Ob(); ) + for (l = u(a.Pb(), 10), r = u(ot(n.d, d), 21).Kc(); r.Ob(); ) + i = u(r.Pb(), 10), tbe(n.b[l.c.p][l.p]).Fc(n.b[i.c.p][i.p]), ++n.b[i.c.p][i.p].c; + h = d; + } + } + } + function YIe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (t.Ug("Model order cycle breaking", 1), n.a = 0, n.b = 0, p = new Z(), a = e.a.c.length, l = new C(e.a); l.a < l.c.c.length; ) + h = u(E(l), 10), kt(h, (W(), dt)) && (a = y.Math.max(a, u(v(h, dt), 17).a + 1)); + for (k = new C(e.a); k.a < k.c.c.length; ) + for (m = u(E(k), 10), s = M_n(n, m, a), g = F0(m, (pr(), Qc)).Kc(); g.Ob(); ) + for (d = u(g.Pb(), 12), c = new C(d.g); c.a < c.c.c.length; ) + i = u(E(c), 18), j = i.d.i, f = M_n(n, j, a), f < s && Kn(p.c, i); + for (r = new C(p); r.a < r.c.c.length; ) + i = u(E(r), 18), U0(i, !0), U(e, (W(), kj), (_n(), !0)); + p.c.length = 0, t.Vg(); + } + function gGn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (s = e.d, f = t.d; s.a - f.a == 0 && s.b - f.b == 0; ) + h = !1, D(e, 250) && D(t, 250) && !h ? (l = u(e, 250).a, a = mi(new rr(kQ(l)), vQ(l)), i = 2, r = new V(a.a / y.Math.sqrt(a.a * a.a + a.b * a.b) * i, -a.b / y.Math.sqrt(a.a * a.a + a.b * a.b) * i), it(s, r), d = u(t, 250).a, g = mi(new rr(kQ(d)), vQ(d)), i = a == g ? -2 : 2, c = new V(g.a / y.Math.sqrt(g.a * g.a + g.b * g.b) * i, -(g.b / y.Math.sqrt(g.a * g.a + g.b * g.b)) * i), it(s, c), h = !0) : (s.a += to(n, 26) * J5 + to(n, 27) * Q5 - 0.5, s.b += to(n, 26) * J5 + to(n, 27) * Q5 - 0.5, f.a += to(n, 26) * J5 + to(n, 27) * Q5 - 0.5, f.b += to(n, 26) * J5 + to(n, 27) * Q5 - 0.5); + } + function ZIe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (l = Ije(e), k = u(v(e, (cn(), U8)), 322), qi(l, new K9n(k)), j = u(v(e, Cj), 299), qi(l, new _9n(j)), m = 0, a = new Z(), c = new V6(l); c.a != c.b; ) + r = u(xT(c), 36), SGn(n.c, r), g = u(v(r, (W(), wH)), 15), m += g.gc(), i = g.Kc(), nn(a, new bi(r, i)); + for (t.Ug("Recursive hierarchical layout", m), p = u(u(sn(a, a.c.length - 1), 42).b, 51); p.Ob(); ) + for (h = new C(a); h.a < h.c.c.length; ) + for (f = u(E(h), 42), g = u(f.b, 51), s = u(f.a, 36); g.Ob(); ) + if (d = u(g.Pb(), 47), D(d, 514)) { + if (s.e) + break; + d.Kf(s, t.eh(1)); + break; + } else + d.Kf(s, t.eh(1)); + t.Vg(); + } + function nOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (e.Ug("Layer size calculation", 1), a = St, l = li, r = !1, f = new C(n.b); f.a < f.c.c.length; ) + if (s = u(E(f), 30), h = s.c, h.a = 0, h.b = 0, s.a.c.length != 0) { + for (r = !0, g = new C(s.a); g.a < g.c.c.length; ) + d = u(E(g), 10), m = d.o, p = d.d, h.a = y.Math.max(h.a, m.a + p.b + p.c); + i = u(sn(s.a, 0), 10), k = i.n.b - i.d.d, i.k == (Vn(), Zt) && (k -= u(v(n, (cn(), Aj)), 140).d), c = u(sn(s.a, s.a.c.length - 1), 10), t = c.n.b + c.o.b + c.d.a, c.k == Zt && (t += u(v(n, (cn(), Aj)), 140).a), h.b = t - k, a = y.Math.min(a, k), l = y.Math.max(l, t); + } + r || (a = 0, l = 0), n.f.b = l - a, n.c.b -= a, e.Vg(); + } + function Jen(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + for (c = 0, s = 0, l = new C(n.a); l.a < l.c.c.length; ) + f = u(E(l), 10), c = y.Math.max(c, f.d.b), s = y.Math.max(s, f.d.c); + for (h = new C(n.a); h.a < h.c.c.length; ) { + switch (f = u(E(h), 10), t = u(v(f, (cn(), Th)), 255), t.g) { + case 1: + m = 0; + break; + case 2: + m = 1; + break; + case 5: + m = 0.5; + break; + default: + for (i = 0, d = 0, p = new C(f.j); p.a < p.c.c.length; ) + g = u(E(p), 12), g.e.c.length == 0 || ++i, g.g.c.length == 0 || ++d; + i + d == 0 ? m = 0.5 : m = d / (i + d); + } + j = n.c, a = f.o.a, S = (j.a - a) * m, m > 0.5 ? S -= s * 2 * (m - 0.5) : m < 0.5 && (S += c * 2 * (0.5 - m)), r = f.d.b, S < r && (S = r), k = f.d.c, S > j.a - k - a && (S = j.a - k - a), f.n.a = e + S; + } + } + function eOe(n) { + var e, t, i, r, c; + if (i = u(v(n, (cn(), su)), 171), i == (Yo(), ya)) { + for (t = new ie(ce(ji(n).a.Kc(), new En())); pe(t); ) + if (e = u(fe(t), 18), !PLn(e)) + throw M(new _l(oR + qk(n) + "' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges.")); + } else if (i == xw) { + for (c = new ie(ce(Qt(n).a.Kc(), new En())); pe(c); ) + if (r = u(fe(c), 18), !PLn(r)) + throw M(new _l(oR + qk(n) + "' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges.")); + } + } + function gy(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + if (n.e && n.c.c < n.f) + throw M(new Or("Expected " + n.f + " phases to be configured; only found " + n.c.c)); + for (a = u(of(n.g), 9), p = Dh(n.f), c = a, f = 0, l = c.length; f < l; ++f) + i = c[f], d = u(lk(n, i.g), 188), d ? nn(p, u(EBn(n, d), 106)) : p.c.push(null); + for (m = new ii(), Gt(ut(_r(ut(new Tn(null, new In(p, 16)), new ymn()), new Okn(e)), new jmn()), new Dkn(m)), Mo(m, n.a), t = new Z(), r = a, s = 0, h = r.length; s < h; ++s) + i = r[s], hi(t, rFn(n, SM(u(lk(m, i.g), 20)))), g = u(sn(p, i.g), 106), g && Kn(t.c, g); + return hi(t, rFn(n, SM(u(lk(m, a[a.length - 1].g + 1), 20)))), t; + } + function tOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (g = new Z(), r = new Z(), k = null, f = e.Kc(); f.Ob(); ) + s = u(f.Pb(), 17), c = new R7n(s.a), Kn(r.c, c), k && (c.d = k, k.e = c), k = c; + for (O = PPe(n), a = 0; a < r.c.length; ++a) { + for (p = null, j = UJ((Ln(0, r.c.length), u(r.c[0], 661))), t = null, i = St, d = 1; d < n.b.c.length; ++d) + S = j ? y.Math.abs(j.b - d) : y.Math.abs(d - p.b) + 1, m = p ? y.Math.abs(d - p.b) : S + 1, m < S ? (l = p, h = m) : (l = j, h = S), I = (N = $(R(v(n, (cn(), Chn)))), O[d] + y.Math.pow(h, N)), I < i && (i = I, t = l, t.c = d), j && d == j.b && (p = j, j = lwe(j)); + t && (nn(g, Y(t.c)), t.a = !0, M5e(t)); + } + return Dn(), QL(g.c, g.c.length, null), g; + } + function Qen(n, e, t) { + var i, r, c, s, f, h; + if (e.l == 0 && e.m == 0 && e.h == 0) + throw M(new _E("divide by zero")); + if (n.l == 0 && n.m == 0 && n.h == 0) + return t && (wa = Zc(0, 0, 0)), Zc(0, 0, 0); + if (e.h == Ty && e.m == 0 && e.l == 0) + return J5e(n, t); + if (h = !1, e.h >> 19 && (e = tm(e), h = !h), s = RMe(e), c = !1, r = !1, i = !1, n.h == Ty && n.m == 0 && n.l == 0) + if (r = !0, c = !0, s == -1) + n = eTn((R4(), lun)), i = !0, h = !h; + else + return f = Vnn(n, s), h && H$(f), t && (wa = Zc(0, 0, 0)), f; + else + n.h >> 19 && (c = !0, n = tm(n), i = !0, h = !h); + return s != -1 ? b6e(n, s, h, c, t) : LZ(n, e) < 0 ? (t && (c ? wa = tm(n) : wa = Zc(n.l, n.m, n.h)), Zc(0, 0, 0)) : FSe(i ? n : Zc(n.l, n.m, n.h), e, h, c, r, t); + } + function zF(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + if (s = n.e, h = e.e, s == 0) + return e; + if (h == 0) + return n; + if (c = n.d, f = e.d, c + f == 2) + return t = vi(n.a[0], vr), i = vi(e.a[0], vr), s == h ? (a = nr(t, i), m = Ae(a), p = Ae(U1(a, 32)), p == 0 ? new gl(s, m) : new Ya(s, 2, A(T(ye, 1), _e, 28, 15, [m, p]))) : (dh(), AC(s < 0 ? bs(i, t) : bs(t, i), 0) ? ia(s < 0 ? bs(i, t) : bs(t, i)) : U6(ia(n1(s < 0 ? bs(i, t) : bs(t, i))))); + if (s == h) + g = s, d = c >= f ? e$(n.a, c, e.a, f) : e$(e.a, f, n.a, c); + else { + if (r = c != f ? c > f ? 1 : -1 : lY(n.a, e.a, c), r == 0) + return dh(), S8; + r == 1 ? (g = s, d = ZN(n.a, c, e.a, f)) : (g = h, d = ZN(e.a, f, n.a, c)); + } + return l = new Ya(g, d.length, d), J6(l), l; + } + function iOe(n, e) { + var t, i, r, c, s, f, h; + if (!(n.g > e.f || e.g > n.f)) { + for (t = 0, i = 0, s = n.w.a.ec().Kc(); s.Ob(); ) + r = u(s.Pb(), 12), nx(cc(A(T(Ei, 1), J, 8, 0, [r.i.n, r.n, r.a])).b, e.g, e.f) && ++t; + for (f = n.r.a.ec().Kc(); f.Ob(); ) + r = u(f.Pb(), 12), nx(cc(A(T(Ei, 1), J, 8, 0, [r.i.n, r.n, r.a])).b, e.g, e.f) && --t; + for (h = e.w.a.ec().Kc(); h.Ob(); ) + r = u(h.Pb(), 12), nx(cc(A(T(Ei, 1), J, 8, 0, [r.i.n, r.n, r.a])).b, n.g, n.f) && ++i; + for (c = e.r.a.ec().Kc(); c.Ob(); ) + r = u(c.Pb(), 12), nx(cc(A(T(Ei, 1), J, 8, 0, [r.i.n, r.n, r.a])).b, n.g, n.f) && --i; + t < i ? new XM(n, e, i - t) : i < t ? new XM(e, n, t - i) : (new XM(e, n, 0), new XM(n, e, 0)); + } + } + function rOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + for (l = e.c, r = IX(n.e), d = ch(L6(Ki(PX(n.e)), n.d * n.a, n.c * n.b), -0.5), t = r.a - d.a, i = r.b - d.b, s = e.a, t = s.c - t, i = s.d - i, h = new C(l); h.a < h.c.c.length; ) { + switch (f = u(E(h), 407), g = f.b, p = t + g.a, j = i + g.b, m = wi(p / n.a), S = wi(j / n.b), c = f.a, c.g) { + case 0: + a = (Vp(), uj); + break; + case 1: + a = (Vp(), cj); + break; + case 2: + a = (Vp(), oj); + break; + default: + a = (Vp(), sj); + } + c.a ? (I = wi((j + f.c) / n.b), nn(n.f, new NV(a, Y(S), Y(I))), c == (T5(), hj) ? em(n, 0, S, m, I) : em(n, m, S, n.d - 1, I)) : (k = wi((p + f.c) / n.a), nn(n.f, new NV(a, Y(m), Y(k))), c == (T5(), fj) ? em(n, m, 0, k, S) : em(n, m, S, k, n.c - 1)); + } + } + function cOe(n) { + var e, t, i, r, c, s, f, h, l, a; + for (e = new qO(), t = new qO(), l = An(Jy, (r = _5(n.b, Be), r ? Oe(gf((!r.b && (r.b = new lo((On(), ar), pc, r)), r.b), vs)) : null)), h = 0; h < n.i; ++h) + f = u(n.g[h], 179), D(f, 102) ? (s = u(f, 19), s.Bb & yc ? (!(s.Bb & wh) || !l && (c = _5(s, Be), (c ? Oe(gf((!c.b && (c.b = new lo((On(), ar), pc, c)), c.b), KS)) : null) == null)) && ve(e, s) : (a = wr(s), a && a.Bb & yc || (!(s.Bb & wh) || !l && (i = _5(s, Be), (i ? Oe(gf((!i.b && (i.b = new lo((On(), ar), pc, i)), i.b), KS)) : null) == null)) && ve(t, s))) : (br(), u(f, 69).xk() && (f.sk() || (ve(e, f), ve(t, f)))); + ew(e), ew(t), n.a = u(e.g, 254), u(t.g, 254); + } + function Qg(n, e, t) { + var i, r, c, s, f, h, l, a, d; + if (Ot(e, t) >= 0) + return t; + switch (y0(Lr(n, t))) { + case 2: { + if (An("", r1(n, t.qk()).xe())) { + if (h = q7(Lr(n, t)), f = P4(Lr(n, t)), a = Ynn(n, e, h, f), a) + return a; + for (r = Sen(n, e), s = 0, d = r.gc(); s < d; ++s) + if (a = u(r.Xb(s), 179), cen(sN(Lr(n, a)), h)) + return a; + } + return null; + } + case 4: { + if (An("", r1(n, t.qk()).xe())) { + for (i = t; i; i = ppe(Lr(n, i))) + if (l = q7(Lr(n, i)), f = P4(Lr(n, i)), a = Znn(n, e, l, f), a) + return a; + if (h = q7(Lr(n, t)), An(Sd, h)) + return FZ(n, e); + for (c = SF(n, e), s = 0, d = c.gc(); s < d; ++s) + if (a = u(c.Xb(s), 179), cen(sN(Lr(n, a)), h)) + return a; + } + return null; + } + default: + return null; + } + } + function uOe(n, e, t) { + var i, r, c, s, f, h, l, a; + if (t.gc() == 0) + return !1; + if (f = (br(), u(e, 69).xk()), c = f ? t : new S0(t.gc()), Sl(n.e, e)) { + if (e.Si()) + for (l = t.Kc(); l.Ob(); ) + h = l.Pb(), RA(n, e, h, D(e, 102) && (u(e, 19).Bb & hr) != 0) || (r = Fh(e, h), c.Hc(r) || c.Fc(r)); + else if (!f) + for (l = t.Kc(); l.Ob(); ) + h = l.Pb(), r = Fh(e, h), c.Fc(r); + } else { + if (t.gc() > 1) + throw M(new Gn(Zy)); + for (a = cu(n.e.Dh(), e), i = u(n.g, 124), s = 0; s < n.i; ++s) + if (r = i[s], a.am(r.Lk())) { + if (t.Hc(f ? r : r.md())) + return !1; + for (l = t.Kc(); l.Ob(); ) + h = l.Pb(), u(Rg(n, s, f ? u(h, 76) : Fh(e, h)), 76); + return !0; + } + f || (r = Fh(e, t.Kc().Pb()), c.Fc(r)); + } + return Ht(n, c); + } + function oOe(n, e) { + var t, i, r, c, s, f, h, l, a; + for (a = new Ct(), f = (l = new ol(n.c).a.vc().Kc(), new Sb(l)); f.a.Ob(); ) + c = (r = u(f.a.Pb(), 44), u(r.md(), 467)), c.b == 0 && Kt(a, c, a.c.b, a.c); + for (; a.b != 0; ) + for (c = u(a.b == 0 ? null : (oe(a.b != 0), Xo(a, a.a.a)), 467), c.a == null && (c.a = 0), i = new C(c.d); i.a < i.c.c.length; ) + t = u(E(i), 663), t.b.a == null ? t.b.a = $(c.a) + t.a : e.o == (Pf(), Rd) ? t.b.a = y.Math.min($(t.b.a), $(c.a) + t.a) : t.b.a = y.Math.max($(t.b.a), $(c.a) + t.a), --t.b.b, t.b.b == 0 && Fe(a, t.b); + for (s = (h = new ol(n.c).a.vc().Kc(), new Sb(h)); s.a.Ob(); ) + c = (r = u(s.a.Pb(), 44), u(r.md(), 467)), e.i[c.c.p] = c.a; + } + function sOe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + for (a = t + e.c.c.a, p = new C(e.j); p.a < p.c.c.length; ) { + if (g = u(E(p), 12), r = cc(A(T(Ei, 1), J, 8, 0, [g.i.n, g.n, g.a])), e.k == (Vn(), Hc) && (f = u(v(g, (W(), st)), 12), r.a = cc(A(T(Ei, 1), J, 8, 0, [f.i.n, f.n, f.a])).a, e.n.a = r.a), s = new V(0, r.b), g.j == (en(), Zn)) + s.a = a; + else if (g.j == Wn) + s.a = t; + else + continue; + if (m = y.Math.abs(r.a - s.a), !(m <= i && !Z7e(e))) + for (c = g.g.c.length + g.e.c.length > 1, l = new Df(g.b); tc(l.a) || tc(l.b); ) + h = u(tc(l.a) ? E(l.a) : E(l.b), 18), d = h.c == g ? h.d : h.c, y.Math.abs(cc(A(T(Ei, 1), J, 8, 0, [d.i.n, d.n, d.a])).b - s.b) > 1 && UTe(n, h, s, c, g); + } + } + function fOe(n) { + var e, t, i, r, c, s; + if (r = new xi(n.e, 0), i = new xi(n.a, 0), n.d) + for (t = 0; t < n.b; t++) + oe(r.b < r.d.gc()), r.d.Xb(r.c = r.b++); + else + for (t = 0; t < n.b - 1; t++) + oe(r.b < r.d.gc()), r.d.Xb(r.c = r.b++), bo(r); + for (e = $((oe(r.b < r.d.gc()), R(r.d.Xb(r.c = r.b++)))); n.f - e > _R; ) { + for (c = e, s = 0; y.Math.abs(e - c) < _R; ) + ++s, e = $((oe(r.b < r.d.gc()), R(r.d.Xb(r.c = r.b++)))), oe(i.b < i.d.gc()), i.d.Xb(i.c = i.b++); + s < n.b && (oe(r.b > 0), r.a.Xb(r.c = --r.b), CPe(n, n.b - s, c, i, r), oe(r.b < r.d.gc()), r.d.Xb(r.c = r.b++)), oe(i.b > 0), i.a.Xb(i.c = --i.b); + } + if (!n.d) + for (t = 0; t < n.b - 1; t++) + oe(r.b < r.d.gc()), r.d.Xb(r.c = r.b++), bo(r); + n.d = !0, n.c = !0; + } + function at() { + at = F, s0n = (Tz(), jc).b, use = u(L(H(jc.b), 0), 35), zd = u(L(H(jc.b), 1), 35), cse = u(L(H(jc.b), 2), 35), G2 = jc.bb, u(L(H(jc.bb), 0), 35), u(L(H(jc.bb), 1), 35), z2 = jc.fb, $9 = u(L(H(jc.fb), 0), 35), u(L(H(jc.fb), 1), 35), u(L(H(jc.fb), 2), 19), Cb = jc.qb, mse = u(L(H(jc.qb), 0), 35), u(L(H(jc.qb), 1), 19), u(L(H(jc.qb), 2), 19), gE = u(L(H(jc.qb), 3), 35), pE = u(L(H(jc.qb), 4), 35), F9 = u(L(H(jc.qb), 6), 35), x9 = u(L(H(jc.qb), 5), 19), ose = jc.j, sse = jc.k, fse = jc.q, hse = jc.w, lse = jc.B, ase = jc.A, dse = jc.C, bse = jc.D, wse = jc._, gse = jc.cb, pse = jc.hb; + } + function hOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + n.c = 0, n.b = 0, i = 2 * e.c.a.c.length + 1; + n: + for (d = t.Kc(); d.Ob(); ) { + if (a = u(d.Pb(), 12), f = a.j == (en(), Xn) || a.j == ae, p = 0, f) { + if (g = u(v(a, (W(), Xu)), 10), !g) + continue; + p += LAe(n, i, a, g); + } else { + for (l = new C(a.g); l.a < l.c.c.length; ) + if (h = u(E(l), 18), r = h.d, r.i.c == e.c) { + nn(n.a, a); + continue n; + } else + p += n.g[r.p]; + for (s = new C(a.e); s.a < s.c.c.length; ) + if (c = u(E(s), 18), r = c.c, r.i.c == e.c) { + nn(n.a, a); + continue n; + } else + p -= n.g[r.p]; + } + a.e.c.length + a.g.c.length > 0 ? (n.f[a.p] = p / (a.e.c.length + a.g.c.length), n.c = y.Math.min(n.c, n.f[a.p]), n.b = y.Math.max(n.b, n.f[a.p])) : f && (n.f[a.p] = p); + } + } + function lOe(n) { + n.b = null, n.bb = null, n.fb = null, n.qb = null, n.a = null, n.c = null, n.d = null, n.e = null, n.f = null, n.n = null, n.M = null, n.L = null, n.Q = null, n.R = null, n.K = null, n.db = null, n.eb = null, n.g = null, n.i = null, n.j = null, n.k = null, n.gb = null, n.o = null, n.p = null, n.q = null, n.r = null, n.$ = null, n.ib = null, n.S = null, n.T = null, n.t = null, n.s = null, n.u = null, n.v = null, n.w = null, n.B = null, n.A = null, n.C = null, n.D = null, n.F = null, n.G = null, n.H = null, n.I = null, n.J = null, n.P = null, n.Z = null, n.U = null, n.V = null, n.W = null, n.X = null, n.Y = null, n._ = null, n.ab = null, n.cb = null, n.hb = null, n.nb = null, n.lb = null, n.mb = null, n.ob = null, n.pb = null, n.jb = null, n.kb = null, n.N = !1, n.O = !1; + } + function aOe(n, e, t) { + var i, r, c, s; + for (t.Ug("Graph transformation (" + n.a + ")", 1), s = T0(e.a), c = new C(e.b); c.a < c.c.c.length; ) + r = u(E(c), 30), hi(s, r.a); + if (i = u(v(e, (cn(), Gfn)), 428), i == (wk(), WP)) + switch (u(v(e, Do), 88).g) { + case 2: + Q6(e, s); + break; + case 3: + j5(e, s); + break; + case 4: + n.a == (V4(), dj) ? (j5(e, s), HN(e, s)) : (HN(e, s), j5(e, s)); + } + else if (n.a == (V4(), dj)) + switch (u(v(e, Do), 88).g) { + case 2: + Q6(e, s), HN(e, s); + break; + case 3: + j5(e, s), Q6(e, s); + break; + case 4: + Q6(e, s), j5(e, s); + } + else + switch (u(v(e, Do), 88).g) { + case 2: + Q6(e, s), HN(e, s); + break; + case 3: + Q6(e, s), j5(e, s); + break; + case 4: + j5(e, s), Q6(e, s); + } + t.Vg(); + } + function dOe(n) { + var e, t, i, r, c, s, f, h; + for (c = new C(n.a.b); c.a < c.c.c.length; ) + r = u(E(c), 86), r.b.c = r.g.c, r.b.d = r.g.d; + for (h = new V(St, St), e = new V(li, li), i = new C(n.a.b); i.a < i.c.c.length; ) + t = u(E(i), 86), h.a = y.Math.min(h.a, t.g.c), h.b = y.Math.min(h.b, t.g.d), e.a = y.Math.max(e.a, t.g.c + t.g.b), e.b = y.Math.max(e.b, t.g.d + t.g.a); + for (f = pM(n.c).a.nc(); f.Ob(); ) + s = u(f.Pb(), 42), t = u(s.b, 86), h.a = y.Math.min(h.a, t.g.c), h.b = y.Math.min(h.b, t.g.d), e.a = y.Math.max(e.a, t.g.c + t.g.b), e.b = y.Math.max(e.b, t.g.d + t.g.a); + n.d = HC(new V(h.a, h.b)), n.e = mi(new V(e.a, e.b), h), n.a.a.c.length = 0, n.a.b.c.length = 0; + } + function bOe(n) { + i5(); + var e, t, i, r, c, s, f; + for (f = new qyn(), t = new C(n); t.a < t.c.c.length; ) + e = u(E(t), 148), (!f.b || e.c >= f.b.c) && (f.b = e), (!f.c || e.c <= f.c.c) && (f.d = f.c, f.c = e), (!f.e || e.d >= f.e.d) && (f.e = e), (!f.f || e.d <= f.f.d) && (f.f = e); + return i = new eA((nm(), rb)), Q7(n, OZn, new Ku(A(T(aj, 1), Bn, 382, 0, [i]))), s = new eA(Iw), Q7(n, IZn, new Ku(A(T(aj, 1), Bn, 382, 0, [s]))), r = new eA(Pw), Q7(n, PZn, new Ku(A(T(aj, 1), Bn, 382, 0, [r]))), c = new eA(d2), Q7(n, SZn, new Ku(A(T(aj, 1), Bn, 382, 0, [c]))), pF(i.c, rb), pF(r.c, Pw), pF(c.c, d2), pF(s.c, Iw), f.a.c.length = 0, hi(f.a, i.c), hi(f.a, Qo(r.c)), hi(f.a, c.c), hi(f.a, Qo(s.c)), f; + } + function wOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + for (e.Ug(PVn, 1), p = $(R(z(n, (_h(), Xw)))), s = $(R(z(n, (Rf(), l9)))), f = u(z(n, h9), 107), $Q((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)), a = hGn((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a), p, s), !n.a && (n.a = new q(Ye, n, 10, 11)), l = new C(a); l.a < l.c.c.length; ) + for (h = u(E(l), 186), r = new C(h.a); r.a < r.c.c.length; ) + i = u(E(r), 172), g = new rJ(i.s, i.t, $(R(z(n, l9)))), HQ(g, i), nn(h.d, g); + d = uKn(a, s), m = y.Math.max(d.a, $(R(z(n, f9))) - (f.b + f.c)), c = y.Math.max(d.b, $(R(z(n, UI))) - (f.d + f.a)), t = c - d.b, ht(n, s9, t), ht(n, O3, m), ht(n, Nv, c + t), ht(n, GI, a), e.Vg(); + } + function gOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k; + for (l = new rh(), a = new rh(), m = new rh(), k = new rh(), h = $(R(v(e, (cn(), gb)))), c = $(R(v(e, Ws))), f = new C(t); f.a < f.c.c.length; ) + if (s = u(E(f), 10), d = u(v(s, (W(), gc)), 64), d == (en(), Xn)) + for (a.a.zc(s, a), r = new ie(ce(ji(s).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), fi(l, i.c.i); + else if (d == ae) + for (k.a.zc(s, k), r = new ie(ce(ji(s).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), fi(m, i.c.i); + l.a.gc() != 0 && (g = new lN(2, c), p = etn(g, e, l, a, -h - e.c.b), p > 0 && (n.a = h + (p - 1) * c, e.c.b += n.a, e.f.b += n.a)), m.a.gc() != 0 && (g = new lN(1, c), p = etn(g, e, m, k, e.f.b + h - e.c.b), p > 0 && (e.f.b += h + (p - 1) * c)); + } + function pGn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (a = $(R(v(n, (cn(), wb)))), i = $(R(v(n, khn))), g = new _O(), U(g, wb, a + i), l = e, S = l.d, k = l.c.i, I = l.d.i, j = CX(k.c), O = CX(I.c), r = new Z(), d = j; d <= O; d++) + f = new Tl(n), Ha(f, (Vn(), Mi)), U(f, (W(), st), l), U(f, Ut, (Di(), Uc)), U(f, yI, g), p = u(sn(n.b, d), 30), d == j ? uw(f, p.a.c.length - t, p) : $i(f, p), N = $(R(v(l, m1))), N < 0 && (N = 0, U(l, m1, N)), f.o.b = N, m = y.Math.floor(N / 2), s = new Ic(), gi(s, (en(), Wn)), ic(s, f), s.n.b = m, h = new Ic(), gi(h, Zn), ic(h, f), h.n.b = m, Oi(l, s), c = new E0(), Ur(c, l), U(c, Fr, null), Zi(c, h), Oi(c, S), rke(f, l, c), Kn(r.c, c), l = c; + return r; + } + function XF(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (h = u(h1(n, (en(), Wn)).Kc().Pb(), 12).e, p = u(h1(n, Zn).Kc().Pb(), 12).g, f = h.c.length, O = If(u(sn(n.j, 0), 12)); f-- > 0; ) { + for (k = (Ln(0, h.c.length), u(h.c[0], 18)), r = (Ln(0, p.c.length), u(p.c[0], 18)), I = r.d.e, c = qr(I, r, 0), Rpe(k, r.d, c), Zi(r, null), Oi(r, null), m = k.a, e && Fe(m, new rr(O)), i = ge(r.a, 0); i.b != i.d.c; ) + t = u(be(i), 8), Fe(m, new rr(t)); + for (S = k.b, g = new C(r.b); g.a < g.c.c.length; ) + d = u(E(g), 72), Kn(S.c, d); + if (j = u(v(k, (cn(), Fr)), 75), s = u(v(r, Fr), 75), s) + for (j || (j = new Tu(), U(k, Fr, j)), a = ge(s, 0); a.b != a.d.c; ) + l = u(be(a), 8), Fe(j, new rr(l)); + } + } + function pOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + if (k = e.b.c.length, !(k < 3)) { + for (p = K(ye, _e, 28, k, 15, 1), d = 0, a = new C(e.b); a.a < a.c.c.length; ) + l = u(E(a), 30), p[d++] = l.a.c.length; + for (g = new xi(e.b, 2), i = 1; i < k - 1; i++) + for (t = (oe(g.b < g.d.gc()), u(g.d.Xb(g.c = g.b++), 30)), m = new C(t.a), c = 0, f = 0, h = 0; h < p[i + 1]; h++) + if (O = u(E(m), 10), h == p[i + 1] - 1 || gnn(n, O, i + 1, i)) { + for (s = p[i] - 1, gnn(n, O, i + 1, i) && (s = n.c.e[u(u(u(sn(n.c.b, O.p), 15).Xb(0), 42).a, 10).p]); f <= h; ) { + if (I = u(sn(t.a, f), 10), !gnn(n, I, i + 1, i)) + for (S = u(sn(n.c.b, I.p), 15).Kc(); S.Ob(); ) + j = u(S.Pb(), 42), r = n.c.e[u(j.a, 10).p], (r < c || r > s) && fi(n.b, u(j.b, 18)); + ++f; + } + c = s; + } + } + } + function Yen(n, e) { + var t; + if (e == null || An(e, pu) || e.length == 0 && n.k != (l1(), L3)) + return null; + switch (n.k.g) { + case 1: + return JT(e, nv) ? (_n(), ov) : JT(e, cK) ? (_n(), ga) : null; + case 2: + try { + return Y(Ao(e, Wi, tt)); + } catch (i) { + if (i = It(i), D(i, 130)) + return null; + throw M(i); + } + case 4: + try { + return sw(e); + } catch (i) { + if (i = It(i), D(i, 130)) + return null; + throw M(i); + } + case 3: + return e; + case 5: + return BFn(n), Q_n(n, e); + case 6: + return BFn(n), gMe(n, n.a, e); + case 7: + try { + return t = ACe(n), t.cg(e), t; + } catch (i) { + if (i = It(i), D(i, 33)) + return null; + throw M(i); + } + default: + throw M(new Or("Invalid type set for this layout option.")); + } + } + function Zen(n) { + var e; + switch (n.d) { + case 1: { + if (n.Sj()) + return n.o != -2; + break; + } + case 2: { + if (n.Sj()) + return n.o == -2; + break; + } + case 3: + case 5: + case 4: + case 6: + case 7: + return n.o > -2; + default: + return !1; + } + switch (e = n.Rj(), n.p) { + case 0: + return e != null && on(un(e)) != C6(n.k, 0); + case 1: + return e != null && u(e, 222).a != Ae(n.k) << 24 >> 24; + case 2: + return e != null && u(e, 180).a != (Ae(n.k) & ui); + case 6: + return e != null && C6(u(e, 168).a, n.k); + case 5: + return e != null && u(e, 17).a != Ae(n.k); + case 7: + return e != null && u(e, 191).a != Ae(n.k) << 16 >> 16; + case 3: + return e != null && $(R(e)) != n.j; + case 4: + return e != null && u(e, 161).a != n.j; + default: + return e == null ? n.n != null : !ct(e, n.n); + } + } + function py(n, e, t) { + var i, r, c, s; + return n.ol() && n.nl() && (s = cN(n, u(t, 58)), x(s) !== x(t)) ? (n.xj(e), n.Dj(e, yNn(n, e, s)), n.al() && (c = (r = u(t, 54), n.ml() ? n.kl() ? r.Th(n.b, wr(u($n(du(n.b), n.Lj()), 19)).n, u($n(du(n.b), n.Lj()).Hk(), 29).kk(), null) : r.Th(n.b, Ot(r.Dh(), wr(u($n(du(n.b), n.Lj()), 19))), null, null) : r.Th(n.b, -1 - n.Lj(), null, null)), !u(s, 54).Ph() && (c = (i = u(s, 54), n.ml() ? n.kl() ? i.Rh(n.b, wr(u($n(du(n.b), n.Lj()), 19)).n, u($n(du(n.b), n.Lj()).Hk(), 29).kk(), c) : i.Rh(n.b, Ot(i.Dh(), wr(u($n(du(n.b), n.Lj()), 19))), null, c) : i.Rh(n.b, -1 - n.Lj(), null, c))), c && c.oj()), fo(n.b) && n.Jj(n.Ij(9, t, s, e, !1)), s) : t; + } + function mGn(n) { + var e, t, i, r, c, s, f, h, l, a; + for (i = new Z(), s = new C(n.e.a); s.a < s.c.c.length; ) { + for (r = u(E(s), 125), a = 0, r.k.c.length = 0, t = new C(xg(r)); t.a < t.c.c.length; ) + e = u(E(t), 218), e.f && (nn(r.k, e), ++a); + a == 1 && Kn(i.c, r); + } + for (c = new C(i); c.a < c.c.c.length; ) + for (r = u(E(c), 125); r.k.c.length == 1; ) { + for (l = u(E(new C(r.k)), 218), n.b[l.c] = l.g, f = l.d, h = l.e, t = new C(xg(r)); t.a < t.c.c.length; ) + e = u(E(t), 218), ct(e, l) || (e.f ? f == e.d || h == e.e ? n.b[l.c] -= n.b[e.c] - e.g : n.b[l.c] += n.b[e.c] - e.g : r == f ? e.d == r ? n.b[l.c] += e.g : n.b[l.c] -= e.g : e.d == r ? n.b[l.c] -= e.g : n.b[l.c] += e.g); + bu(f.k, l), bu(h.k, l), f == r ? r = l.e : r = l.d; + } + } + function vGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (t = u(Mr(n.b, e), 127), h = u(u(ot(n.r, e), 21), 87), h.dc()) { + t.n.b = 0, t.n.c = 0; + return; + } + for (l = n.u.Hc((zu(), Fl)), s = 0, f = h.Kc(), a = null, d = 0, g = 0; f.Ob(); ) + i = u(f.Pb(), 117), r = $(R(i.b.of((KC(), bP)))), c = i.b.Mf().a, n.A.Hc((go(), Gd)) && Vqn(n, e), a ? (p = g + a.d.c + n.w + i.d.b, s = y.Math.max(s, (Tf(), Ks(_f), y.Math.abs(d - r) <= _f || d == r || isNaN(d) && isNaN(r) ? 0 : p / (r - d)))) : n.C && n.C.b > 0 && (s = y.Math.max(s, Exn(n.C.b + i.d.b, r))), a = i, d = r, g = c; + n.C && n.C.c > 0 && (p = g + n.C.c, l && (p += a.d.c), s = y.Math.max(s, (Tf(), Ks(_f), y.Math.abs(d - 1) <= _f || d == 1 || isNaN(d) && isNaN(1) ? 0 : p / (1 - d)))), t.n.b = 0, t.a.a = s; + } + function kGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (t = u(Mr(n.b, e), 127), h = u(u(ot(n.r, e), 21), 87), h.dc()) { + t.n.d = 0, t.n.a = 0; + return; + } + for (l = n.u.Hc((zu(), Fl)), s = 0, n.A.Hc((go(), Gd)) && Wqn(n, e), f = h.Kc(), a = null, g = 0, d = 0; f.Ob(); ) + i = u(f.Pb(), 117), c = $(R(i.b.of((KC(), bP)))), r = i.b.Mf().b, a ? (p = d + a.d.a + n.w + i.d.d, s = y.Math.max(s, (Tf(), Ks(_f), y.Math.abs(g - c) <= _f || g == c || isNaN(g) && isNaN(c) ? 0 : p / (c - g)))) : n.C && n.C.d > 0 && (s = y.Math.max(s, Exn(n.C.d + i.d.d, c))), a = i, g = c, d = r; + n.C && n.C.a > 0 && (p = d + n.C.a, l && (p += a.d.a), s = y.Math.max(s, (Tf(), Ks(_f), y.Math.abs(g - 1) <= _f || g == 1 || isNaN(g) && isNaN(1) ? 0 : p / (1 - g)))), t.n.d = 0, t.a.b = s; + } + function mOe(n, e, t, i, r, c, s, f) { + var h, l, a, d, g, p, m, k, j, S; + if (m = !1, l = uen(t.q, e.f + e.b - t.q.f), p = i.f > e.b && f, S = r - (t.q.e + l - s), d = (h = G5(i, S, !1), h.a), p && d > i.f) + return !1; + if (p) { + for (g = 0, j = new C(e.d); j.a < j.c.c.length; ) + k = u(E(j), 315), g += uen(k, i.f) + s; + S = r - g; + } + return S < i.g || (a = c == n.c.length - 1 && S >= (Ln(c, n.c.length), u(n.c[c], 186)).e, !p && d > e.b && !a) ? !1 : ((a || p || d <= e.b) && (a && d > e.b ? (t.d = d, uk(t, u_n(t, d))) : (CKn(t.q, l), t.c = !0), uk(i, r - (t.s + t.r)), Hk(i, t.q.e + t.q.d, e.f), wT(e, i), n.c.length > c && (Gk((Ln(c, n.c.length), u(n.c[c], 186)), i), (Ln(c, n.c.length), u(n.c[c], 186)).a.c.length == 0 && Yl(n, c)), m = !0), m); + } + function yGn(n, e, t) { + var i, r, c, s, f, h; + for (this.g = n, f = e.d.length, h = t.d.length, this.d = K(Qh, b1, 10, f + h, 0, 1), s = 0; s < f; s++) + this.d[s] = e.d[s]; + for (c = 0; c < h; c++) + this.d[f + c] = t.d[c]; + if (e.e) { + if (this.e = $7(e.e), this.e.Mc(t), t.e) + for (r = t.e.Kc(); r.Ob(); ) + i = u(r.Pb(), 239), i != e && (this.e.Hc(i) ? --i.c : this.e.Fc(i)); + } else + t.e && (this.e = $7(t.e), this.e.Mc(e)); + this.f = e.f + t.f, this.a = e.a + t.a, this.a > 0 ? m$(this, this.f / this.a) : Af(e.g, e.d[0]).a != null && Af(t.g, t.d[0]).a != null ? m$(this, ($(Af(e.g, e.d[0]).a) + $(Af(t.g, t.d[0]).a)) / 2) : Af(e.g, e.d[0]).a != null ? m$(this, Af(e.g, e.d[0]).a) : Af(t.g, t.d[0]).a != null && m$(this, Af(t.g, t.d[0]).a); + } + function vOe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (n.a = new nIn(e6e(y9)), i = new C(e.a); i.a < i.c.c.length; ) { + for (t = u(E(i), 855), f = new vx(A(T(M_, 1), Bn, 86, 0, [])), nn(n.a.a, f), l = new C(t.d); l.a < l.c.c.length; ) + h = u(E(l), 116), a = new YX(n, h), ttn(a, u(v(t.c, (W(), Nl)), 21)), nu(n.g, t) || (Ve(n.g, t, new V(h.c, h.d)), Ve(n.f, t, a)), nn(n.a.b, a), _N(f, a); + for (s = new C(t.b); s.a < s.c.c.length; ) + c = u(E(s), 602), a = new YX(n, c.Df()), Ve(n.b, c, new bi(f, a)), ttn(a, u(v(t.c, (W(), Nl)), 21)), c.Bf() && (d = new sZ(n, c.Bf(), 1), ttn(d, u(v(t.c, Nl), 21)), r = new vx(A(T(M_, 1), Bn, 86, 0, [])), _N(r, d), Pn(n.c, c.Af(), new bi(f, d))); + } + return n.a; + } + function jGn(n) { + var e; + this.a = n, e = (Vn(), A(T(D_, 1), G, 273, 0, [Vt, Mi, Zt, Hc, Sc, Gf])).length, this.b = Wa(Xq, [J, Crn], [601, 149], 0, [e, e], 2), this.c = Wa(Xq, [J, Crn], [601, 149], 0, [e, e], 2), SN(this, Vt, (cn(), gb), A2), h5(this, Vt, Mi, wb, Bd), U7(this, Vt, Hc, wb), U7(this, Vt, Zt, wb), h5(this, Vt, Sc, gb, A2), SN(this, Mi, Ws, M2), U7(this, Mi, Hc, Ws), U7(this, Mi, Zt, Ws), h5(this, Mi, Sc, wb, Bd), dTn(this, Hc, Ws), U7(this, Hc, Zt, Ws), U7(this, Hc, Sc, IH), dTn(this, Zt, X8), h5(this, Zt, Sc, Sv, Av), SN(this, Sc, Ws, Ws), SN(this, Gf, Ws, M2), h5(this, Gf, Vt, wb, Bd), h5(this, Gf, Sc, wb, Bd), h5(this, Gf, Mi, wb, Bd); + } + function kOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (s = t.Lk(), D(s, 102) && u(s, 19).Bb & hr && (g = u(t.md(), 54), k = ea(n.e, g), k != g)) { + if (a = Fh(s, k), I6(n, e, Jx(n, e, a)), d = null, fo(n.e) && (i = Qg((Lu(), zi), n.e.Dh(), s), i != $n(n.e.Dh(), n.c))) { + for (j = cu(n.e.Dh(), s), f = 0, c = u(n.g, 124), h = 0; h < e; ++h) + r = c[h], j.am(r.Lk()) && ++f; + d = new GN(n.e, 9, i, g, k, f, !1), d.nj(new ml(n.e, 9, n.c, t, a, e, !1)); + } + return m = u(s, 19), p = wr(m), p ? (d = g.Th(n.e, Ot(g.Dh(), p), null, d), d = u(k, 54).Rh(n.e, Ot(k.Dh(), p), null, d)) : m.Bb & yc && (l = -1 - Ot(n.e.Dh(), m), d = g.Th(n.e, l, null, null), !u(k, 54).Ph() && (d = u(k, 54).Rh(n.e, l, null, d))), d && d.oj(), a; + } + return t; + } + function yOe(n) { + var e, t, i; + for (Ng(Da, A(T(a2, 1), Bn, 134, 0, [new uG()])), t = new dG(n), i = 0; i < t.a.length; ++i) + e = Jb(t, i).te().a, An(e, "layered") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new t8n()])) : An(e, "force") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new $5n()])) : An(e, "stress") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new F5n()])) : An(e, "mrtree") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new h8n()])) : An(e, "radial") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new g8n()])) : An(e, "disco") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new D5n(), new L5n()])) : An(e, "sporeOverlap") || An(e, "sporeCompaction") ? Ng(Da, A(T(a2, 1), Bn, 134, 0, [new y8n()])) : An(e, "rectpacking") && Ng(Da, A(T(a2, 1), Bn, 134, 0, [new m8n()])); + } + function EGn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + if (g = new rr(n.o), S = e.a / g.a, f = e.b / g.b, k = e.a - g.a, c = e.b - g.b, t) + for (r = x(v(n, (cn(), Ut))) === x((Di(), Uc)), m = new C(n.j); m.a < m.c.c.length; ) + switch (p = u(E(m), 12), p.j.g) { + case 1: + r || (p.n.a *= S); + break; + case 2: + p.n.a += k, r || (p.n.b *= f); + break; + case 3: + r || (p.n.a *= S), p.n.b += c; + break; + case 4: + r || (p.n.b *= f); + } + for (l = new C(n.b); l.a < l.c.c.length; ) + h = u(E(l), 72), a = h.n.a + h.o.a / 2, d = h.n.b + h.o.b / 2, j = a / g.a, s = d / g.b, j + s >= 1 && (j - s > 0 && d >= 0 ? (h.n.a += k, h.n.b += c * s) : j - s < 0 && a >= 0 && (h.n.a += k * j, h.n.b += c)); + n.o.a = e.a, n.o.b = e.b, U(n, (cn(), xd), (go(), i = u(of(S9), 9), new _o(i, u(xs(i, i.length), 9), 0))); + } + function jOe(n, e, t, i, r, c) { + var s; + if (!(e == null || !lx(e, _dn, Hdn))) + throw M(new Gn("invalid scheme: " + e)); + if (!n && !(t != null && ih(t, gu(35)) == -1 && t.length > 0 && (zn(0, t.length), t.charCodeAt(0) != 47))) + throw M(new Gn("invalid opaquePart: " + t)); + if (n && !(e != null && t7(jO, e.toLowerCase())) && !(t == null || !lx(t, D9, L9))) + throw M(new Gn(iJn + t)); + if (n && e != null && t7(jO, e.toLowerCase()) && !eye(t)) + throw M(new Gn(iJn + t)); + if (!o8e(i)) + throw M(new Gn("invalid device: " + i)); + if (!G6e(r)) + throw s = r == null ? "invalid segments: null" : "invalid segment: " + _6e(r), M(new Gn(s)); + if (!(c == null || ih(c, gu(35)) == -1)) + throw M(new Gn("invalid query: " + c)); + } + function EOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + if (t.Ug("Network simplex layering", 1), n.b = e, S = u(v(e, (cn(), V8)), 17).a * 4, j = n.b.a, j.c.length < 1) { + t.Vg(); + return; + } + for (c = ySe(n, j), k = null, r = ge(c, 0); r.b != r.d.c; ) { + for (i = u(be(r), 15), f = S * wi(y.Math.sqrt(i.gc())), s = xSe(i), PF(vz(Ehe(kz(BL(s), f), k), !0), t.eh(1)), g = n.b.b, m = new C(s.a); m.a < m.c.c.length; ) { + for (p = u(E(m), 125); g.c.length <= p.e; ) + b0(g, g.c.length, new Nc(n.b)); + a = u(p.f, 10), $i(a, u(sn(g, p.e), 30)); + } + if (c.b > 1) + for (k = K(ye, _e, 28, n.b.b.c.length, 15, 1), d = 0, l = new C(n.b.b); l.a < l.c.c.length; ) + h = u(E(l), 30), k[d++] = h.a.c.length; + } + j.c.length = 0, n.a = null, n.b = null, n.c = null, t.Vg(); + } + function COe(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (a = new Z(), d = new Cg(), c = null, r = 0, i = 0; i < e.length; ++i) + switch (t = e[i], I6e(c, t) && (r = RY(n, d, a, II, r)), kt(t, (W(), sb)) && (c = u(v(t, sb), 10)), t.k.g) { + case 0: + for (h = AX(Cp(uc(t, (en(), Xn)), new ZU())); E$(h); ) + s = u(rQ(h), 12), n.d[s.p] = r++, Kn(a.c, s); + for (r = RY(n, d, a, II, r), l = AX(Cp(uc(t, ae), new ZU())); E$(l); ) + s = u(rQ(l), 12), n.d[s.p] = r++, Kn(a.c, s); + break; + case 3: + uc(t, iln).dc() || (s = u(uc(t, iln).Xb(0), 12), n.d[s.p] = r++, Kn(a.c, s)), uc(t, II).dc() || W1(d, t); + break; + case 1: + for (f = uc(t, (en(), Wn)).Kc(); f.Ob(); ) + s = u(f.Pb(), 12), n.d[s.p] = r++, Kn(a.c, s); + uc(t, Zn).Jc(new qCn(d, t)); + } + return RY(n, d, a, II, r), a; + } + function ntn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + if (e == null || e.length == 0) + return null; + if (c = u($c(n.f, e), 23), !c) { + for (r = (p = new ol(n.d).a.vc().Kc(), new Sb(p)); r.a.Ob(); ) + if (t = (s = u(r.a.Pb(), 44), u(s.md(), 23)), f = t.f, m = e.length, An(f.substr(f.length - m, m), e) && (e.length == f.length || Xi(f, f.length - e.length - 1) == 46)) { + if (c) + return null; + c = t; + } + if (!c) { + for (i = (g = new ol(n.d).a.vc().Kc(), new Sb(g)); i.a.Ob(); ) + if (t = (s = u(i.a.Pb(), 44), u(s.md(), 23)), d = t.g, d != null) { + for (h = d, l = 0, a = h.length; l < a; ++l) + if (f = h[l], m = e.length, An(f.substr(f.length - m, m), e) && (e.length == f.length || Xi(f, f.length - e.length - 1) == 46)) { + if (c) + return null; + c = t; + } + } + } + c && Dr(n.f, e, c); + } + return c; + } + function MOe(n, e) { + var t, i, r, c, s; + for (t = new fg(), s = !1, c = 0; c < e.length; c++) { + if (i = (zn(c, e.length), e.charCodeAt(c)), i == 32) { + for (QT(n, t, 0), t.a += " ", QT(n, t, 0); c + 1 < e.length && (zn(c + 1, e.length), e.charCodeAt(c + 1) == 32); ) + ++c; + continue; + } + if (s) { + i == 39 ? c + 1 < e.length && (zn(c + 1, e.length), e.charCodeAt(c + 1) == 39) ? (t.a += String.fromCharCode(i), ++c) : s = !1 : t.a += String.fromCharCode(i); + continue; + } + if (ih("GyMLdkHmsSEcDahKzZv", gu(i)) > 0) { + QT(n, t, 0), t.a += String.fromCharCode(i), r = G8e(e, c), QT(n, t, r), c += r - 1; + continue; + } + i == 39 ? c + 1 < e.length && (zn(c + 1, e.length), e.charCodeAt(c + 1) == 39) ? (t.a += "'", ++c) : s = !0 : t.a += String.fromCharCode(i); + } + QT(n, t, 0), Eye(n); + } + function TOe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (O = SSn(n), h = new Z(), c = n.c.length, l = c - 1, a = c + 1; O.a.gc() != 0; ) { + for (; t.b != 0; ) + S = (oe(t.b != 0), u(Xo(t, t.a.a), 118)), O.a.Bc(S) != null, S.g = l--, _en(S, e, t, i); + for (; e.b != 0; ) + I = (oe(e.b != 0), u(Xo(e, e.a.a), 118)), O.a.Bc(I) != null, I.g = a++, _en(I, e, t, i); + for (f = Wi, k = O.a.ec().Kc(); k.Ob(); ) { + if (m = u(k.Pb(), 118), !i && m.b > 0 && m.a <= 0) { + h.c.length = 0, Kn(h.c, m); + break; + } + p = m.i - m.d, p >= f && (p > f && (h.c.length = 0, f = p), Kn(h.c, m)); + } + h.c.length != 0 && (s = u(sn(h, cA(r, h.c.length)), 118), O.a.Bc(s) != null, s.g = a++, _en(s, e, t, i), h.c.length = 0); + } + for (j = n.c.length + 1, g = new C(n); g.a < g.c.c.length; ) + d = u(E(g), 118), d.g < c && (d.g = d.g + j); + } + function CGn(n, e, t) { + var i, r, c, s; + this.j = n, this.e = WZ(n), this.o = this.j.e, this.i = !!this.o, this.p = this.i ? u(sn(t, Hi(this.o).p), 219) : null, r = u(v(n, (W(), qc)), 21), this.g = r.Hc((mr(), cs)), this.b = new Z(), this.d = new xBn(this.e), s = u(v(this.j, S3), 234), this.q = Sve(e, s, this.e), this.k = new TOn(this), c = Of(A(T(ene, 1), Bn, 230, 0, [this, this.d, this.k, this.q])), e == (O0(), Oj) && !on(un(v(n, (cn(), lb)))) ? (i = new YZ(this.e), Kn(c.c, i), this.c = new vJ(i, s, u(this.q, 413))) : e == Oj && on(un(v(n, (cn(), lb)))) ? (i = new YZ(this.e), Kn(c.c, i), this.c = new pxn(i, s, u(this.q, 413))) : this.c = new HCn(e, this), nn(c, this.c), oGn(c, this.e), this.s = dLe(this.k); + } + function AOe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j; + for (c = new Z(), l = new C(i); l.a < l.c.c.length; ) + if (f = u(E(l), 453), s = null, f.f == (pr(), Qc)) + for (m = new C(f.e); m.a < m.c.c.length; ) + p = u(E(m), 18), j = p.d.i, Hi(j) == e ? T$n(n, e, f, p, f.b, p.d) : !t || Q4(j, t) ? ije(n, e, f, i, p) : (g = qF(n, e, t, p, f.b, Qc, s), g != s && Kn(c.c, g), g.c && (s = g)); + else + for (d = new C(f.e); d.a < d.c.c.length; ) + if (a = u(E(d), 18), k = a.c.i, Hi(k) == e) + T$n(n, e, f, a, a.c, f.b); + else { + if (!t || Q4(k, t)) + continue; + g = qF(n, e, t, a, f.b, Vu, s), g != s && Kn(c.c, g), g.c && (s = g); + } + for (h = new C(c); h.a < h.c.c.length; ) + f = u(E(h), 453), qr(e.a, f.a, 0) != -1 || nn(e.a, f.a), f.c && Kn(r.c, f); + } + function MGn(n) { + var e, t, i, r, c, s, f; + for (e = 0, c = new C(n.b.a); c.a < c.c.c.length; ) + i = u(E(c), 194), i.b = 0, i.c = 0; + for (r_n(n, 0), ax(n, n.g), PA(n.c), wz(n.c), t = (ci(), Br), ay(nL(Yg(ay(nL(Yg(ay(Yg(n.c, t)), pBn(t)))), t))), Yg(n.c, Br), ux(n, n.g), UKn(n, 0), iGn(n, 0), BHn(n, 1), r_n(n, 1), ax(n, n.d), PA(n.c), s = new C(n.b.a); s.a < s.c.c.length; ) + i = u(E(s), 194), e += y.Math.abs(i.c); + for (f = new C(n.b.a); f.a < f.c.c.length; ) + i = u(E(f), 194), i.b = 0, i.c = 0; + for (t = us, ay(nL(Yg(ay(nL(Yg(ay(wz(Yg(n.c, t))), pBn(t)))), t))), Yg(n.c, Br), ux(n, n.d), UKn(n, 1), iGn(n, 1), BHn(n, 0), wz(n.c), r = new C(n.b.a); r.a < r.c.c.length; ) + i = u(E(r), 194), e += y.Math.abs(i.c); + return e; + } + function SOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (on(un(v(t, (cn(), Rw))))) + for (f = new C(t.j); f.a < f.c.c.length; ) + for (s = u(E(f), 12), g = hh(s.g), l = g, a = 0, d = l.length; a < d; ++a) + h = l[a], c = h.d.i == t, r = c && on(un(v(h, Nd))), r && (m = h.c, p = u(ee(n.b, m), 10), p || (p = my(m, (Di(), Qf), m.j, -1, null, null, m.o, u(v(e, Do), 88), e), U(p, (W(), st), m), Ve(n.b, m, p), nn(e.a, p)), j = h.d, k = u(ee(n.b, j), 10), k || (k = my(j, (Di(), Qf), j.j, 1, null, null, j.o, u(v(e, Do), 88), e), U(k, (W(), st), j), Ve(n.b, j, k), nn(e.a, k)), i = JN(h), Zi(i, u(sn(p.j, 0), 12)), Oi(i, u(sn(k.j, 0), 12)), Pn(n.a, h, new zC(i, e, (pr(), Qc))), u(v(e, (W(), qc)), 21).Fc((mr(), cs))); + } + function POe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (r = new C(n.a.b); r.a < r.c.c.length; ) + for (t = u(E(r), 30), h = new C(t.a); h.a < h.c.c.length; ) + f = u(E(h), 10), e.j[f.p] = f, e.i[f.p] = e.o == (Pf(), Xf) ? li : St; + for (Hu(n.c), s = n.a.b, e.c == (fh(), y1) && (s = Qo(s)), Ope(n.e, e, n.b), u7(e.p, null), c = s.Kc(); c.Ob(); ) + for (t = u(c.Pb(), 30), l = t.a, e.o == (Pf(), Xf) && (l = Qo(l)), g = l.Kc(); g.Ob(); ) + d = u(g.Pb(), 10), e.g[d.p] == d && szn(n, d, e); + for (oOe(n, e), i = s.Kc(); i.Ob(); ) + for (t = u(i.Pb(), 30), g = new C(t.a); g.a < g.c.c.length; ) + d = u(E(g), 10), e.p[d.p] = e.p[e.g[d.p].p], d == e.g[d.p] && (a = $(e.i[e.j[d.p].p]), (e.o == (Pf(), Xf) && a > li || e.o == Rd && a < St) && (e.p[d.p] = $(e.p[d.p]) + a)); + n.e.xg(); + } + function IOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + for (t.Ug("Label dummy switching", 1), i = u(v(e, (cn(), dI)), 232), kve(e), r = fMe(e, i), n.a = K(Ii, Ar, 28, e.b.c.length, 15, 1), f = (Yp(), A(T(wv, 1), G, 232, 0, [bv, N8, dv, Nw, p2, g2])), a = 0, p = f.length; a < p; ++a) + if (c = f[a], (c == p2 || c == g2 || c == Nw) && !u(Su(r.a, c) ? r.b[c.g] : null, 15).dc()) { + Mve(n, e); + break; + } + for (h = A(T(wv, 1), G, 232, 0, [bv, N8, dv, Nw, p2, g2]), d = 0, m = h.length; d < m; ++d) + c = h[d], c == p2 || c == g2 || c == Nw || lUn(n, u(Su(r.a, c) ? r.b[c.g] : null, 15)); + for (s = A(T(wv, 1), G, 232, 0, [bv, N8, dv, Nw, p2, g2]), l = 0, g = s.length; l < g; ++l) + c = s[l], (c == p2 || c == g2 || c == Nw) && lUn(n, u(Su(r.a, c) ? r.b[c.g] : null, 15)); + n.a = null, t.Vg(); + } + function TGn(n, e) { + var t, i, r, c, s, f, h, l, a; + if (l = e, !(l.b == null || n.b == null)) { + for (Gg(n), z5(n), Gg(l), z5(l), t = K(ye, _e, 28, n.b.length + l.b.length, 15, 1), a = 0, i = 0, s = 0; i < n.b.length && s < l.b.length; ) + if (r = n.b[i], c = n.b[i + 1], f = l.b[s], h = l.b[s + 1], c < f) + i += 2; + else if (c >= f && r <= h) + f <= r && c <= h ? (t[a++] = r, t[a++] = c, i += 2) : f <= r ? (t[a++] = r, t[a++] = h, n.b[i] = h + 1, s += 2) : c <= h ? (t[a++] = f, t[a++] = c, i += 2) : (t[a++] = f, t[a++] = h, n.b[i] = h + 1); + else if (h < r) + s += 2; + else + throw M(new ec("Token#intersectRanges(): Internal Error: [" + n.b[i] + "," + n.b[i + 1] + "] & [" + l.b[s] + "," + l.b[s + 1] + "]")); + for (; i < n.b.length; ) + t[a++] = n.b[i++], t[a++] = n.b[i++]; + n.b = K(ye, _e, 28, a, 15, 1), Oc(t, 0, n.b, 0, a); + } + } + function OOe(n) { + var e, t, i, r, c, s, f; + for (e = new Z(), n.g = new Z(), n.d = new Z(), s = new sd(new Ua(n.f.b).a); s.b; ) + c = L0(s), nn(e, u(u(c.md(), 42).b, 86)), hl(u(c.ld(), 602).Af()) ? nn(n.d, u(c.md(), 42)) : nn(n.g, u(c.md(), 42)); + for (ax(n, n.d), ax(n, n.g), n.c = new nHn(n.b), Mhe(n.c, (Nz(), EZn)), ux(n, n.d), ux(n, n.g), hi(e, n.c.a.b), n.e = new V(St, St), n.a = new V(li, li), i = new C(e); i.a < i.c.c.length; ) + t = u(E(i), 86), n.e.a = y.Math.min(n.e.a, t.g.c), n.e.b = y.Math.min(n.e.b, t.g.d), n.a.a = y.Math.max(n.a.a, t.g.c + t.g.b), n.a.b = y.Math.max(n.a.b, t.g.d + t.g.a); + jz(n.c, new Ybn()), f = 0; + do + r = MGn(n), ++f; + while ((f < 2 || r > fa) && f < 10); + jz(n.c, new Zbn()), MGn(n), mwe(n.c), dOe(n.f); + } + function DOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (t = u(v(n, (cn(), Ut)), 101), s = n.f, c = n.d, f = s.a + c.b + c.c, h = 0 - c.d - n.c.b, a = s.b + c.d + c.a - n.c.b, l = new Z(), d = new Z(), r = new C(e); r.a < r.c.c.length; ) { + switch (i = u(E(r), 10), t.g) { + case 1: + case 2: + case 3: + kTe(i); + break; + case 4: + g = u(v(i, bb), 8), p = g ? g.a : 0, i.n.a = f * $(R(v(i, (W(), fb)))) - p, IT(i, !0, !1); + break; + case 5: + m = u(v(i, bb), 8), k = m ? m.a : 0, i.n.a = $(R(v(i, (W(), fb)))) - k, IT(i, !0, !1), s.a = y.Math.max(s.a, i.n.a + i.o.a / 2); + } + switch (u(v(i, (W(), gc)), 64).g) { + case 1: + i.n.b = h, Kn(l.c, i); + break; + case 3: + i.n.b = a, Kn(d.c, i); + } + } + switch (t.g) { + case 1: + case 2: + uBn(l, n), uBn(d, n); + break; + case 3: + oBn(l, n), oBn(d, n); + } + } + function LOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + switch (n.k.g) { + case 1: + if (i = u(v(n, (W(), st)), 18), t = u(v(i, cfn), 75), t ? on(un(v(i, zf))) && (t = Sk(t)) : t = new Tu(), l = u(v(n, yf), 12), l) { + if (a = cc(A(T(Ei, 1), J, 8, 0, [l.i.n, l.n, l.a])), e <= a.a) + return a.b; + Kt(t, a, t.a, t.a.a); + } + if (d = u(v(n, Es), 12), d) { + if (g = cc(A(T(Ei, 1), J, 8, 0, [d.i.n, d.n, d.a])), g.a <= e) + return g.b; + Kt(t, g, t.c.b, t.c); + } + if (t.b >= 2) { + for (h = ge(t, 0), s = u(be(h), 8), f = u(be(h), 8); f.a < e && h.b != h.d.c; ) + s = f, f = u(be(h), 8); + return s.b + (e - s.a) / (f.a - s.a) * (f.b - s.b); + } + break; + case 3: + switch (c = u(v(u(sn(n.j, 0), 12), (W(), st)), 12), r = c.i, c.j.g) { + case 1: + return r.n.b; + case 3: + return r.n.b + r.o.b; + } + } + return KZ(n).b; + } + function NOe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (s = new C(n.d.b); s.a < s.c.c.length; ) + for (c = u(E(s), 30), h = new C(c.a); h.a < h.c.c.length; ) { + if (f = u(E(h), 10), on(un(v(f, (cn(), q8)))) && !N4(Cl(f))) { + i = u(Age(Cl(f)), 18), a = i.c.i, a == f && (a = i.d.i), d = new bi(a, mi(Ki(f.n), a.n)), Ve(n.b, f, d); + continue; + } + r = new Ho(f.n.a - f.d.b, f.n.b - f.d.d, f.o.a + f.d.b + f.d.c, f.o.b + f.d.d + f.d.a), e = tAn(fCn(oCn(sCn(new JG(), f), r), ZZn), n.a), eAn(Qhe(X$n(new WG(), A(T(aP, 1), Bn, 60, 0, [e])), e), n.a), l = new rD(), Ve(n.e, e, l), t = wl(new ie(ce(ji(f).a.Kc(), new En()))) - wl(new ie(ce(Qt(f).a.Kc(), new En()))), t < 0 ? Tk(l, !0, (ci(), Br)) : t > 0 && Tk(l, !0, (ci(), Xr)), f.k == (Vn(), Zt) && fIn(l), Ve(n.f, f, e); + } + } + function $Oe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (r = u(v(n, (pt(), u9)), 27), l = tt, a = tt, f = Wi, h = Wi, O = ge(n.b, 0); O.b != O.d.c; ) + S = u(be(O), 40), p = S.e, m = S.f, l = y.Math.min(l, p.a - m.a / 2), a = y.Math.min(a, p.b - m.b / 2), f = y.Math.max(f, p.a + m.a / 2), h = y.Math.max(h, p.b + m.b / 2); + for (g = u(z(r, (lc(), Oln)), 107), I = ge(n.b, 0); I.b != I.d.c; ) + S = u(be(I), 40), d = v(S, u9), D(d, 207) && (c = u(d, 27), Ro(c, S.e.a, S.e.b), uy(c, S)); + for (j = ge(n.a, 0); j.b != j.d.c; ) + k = u(be(j), 65), i = u(v(k, u9), 74), i && (e = k.a, t = Xg(i, !0, !0), dy(e, t)); + N = f - l + (g.b + g.c), s = h - a + (g.d + g.a), on(un(z(r, (He(), Vw)))) || G0(r, N, s, !1, !1), ht(r, B2, N - (g.b + g.c)), ht(r, F2, s - (g.d + g.a)); + } + function AGn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + for (h = !0, r = 0, l = n.g[e.p], a = e.o.b + n.o, t = n.d[e.p][2], Go(n.b, l, Y(u(sn(n.b, l), 17).a - 1 + t)), Go(n.c, l, $(R(sn(n.c, l))) - a + t * n.f), ++l, l >= n.j ? (++n.j, nn(n.b, Y(1)), nn(n.c, a)) : (i = n.d[e.p][1], Go(n.b, l, Y(u(sn(n.b, l), 17).a + 1 - i)), Go(n.c, l, $(R(sn(n.c, l))) + a - i * n.f)), (n.r == (ps(), Sj) && (u(sn(n.b, l), 17).a > n.k || u(sn(n.b, l - 1), 17).a > n.k) || n.r == Pj && ($(R(sn(n.c, l))) > n.n || $(R(sn(n.c, l - 1))) > n.n)) && (h = !1), s = new ie(ce(ji(e).a.Kc(), new En())); pe(s); ) + c = u(fe(s), 18), f = c.c.i, n.g[f.p] == l && (d = AGn(n, f), r = r + u(d.a, 17).a, h = h && on(un(d.b))); + return n.g[e.p] = l, r = r + n.d[e.p][0], new bi(Y(r), (_n(), !!h)); + } + function SGn(n, e) { + var t, i, r, c, s; + t = $(R(v(e, (cn(), Ws)))), t < 2 && U(e, Ws, 2), i = u(v(e, Do), 88), i == (ci(), Jf) && U(e, Do, KT(e)), r = u(v(e, Gte), 17), r.a == 0 ? U(e, (W(), S3), new dx()) : U(e, (W(), S3), new qM(r.a)), c = un(v(e, G8)), c == null && U(e, G8, (_n(), x(v(e, $l)) === x((El(), Rv)))), Gt(new Tn(null, new In(e.a, 16)), new DG(n)), Gt(rc(new Tn(null, new In(e.b, 16)), new qU()), new LG(n)), s = new jGn(e), U(e, (W(), E2), s), H7(n.a), hf(n.a, (Vi(), Vs), u(v(e, Ld), 188)), hf(n.a, Jh, u(v(e, $d), 188)), hf(n.a, Dc, u(v(e, U8), 188)), hf(n.a, _c, u(v(e, vI), 188)), hf(n.a, zr, $ve(u(v(e, $l), 223))), TX(n.a, ILe(e)), U(e, wH, gy(n.a, e)); + } + function etn(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S; + for (d = new de(), s = new Z(), A_n(n, t, n.d.Ag(), s, d), A_n(n, i, n.d.Bg(), s, d), n.b = 0.2 * (k = DHn(rc(new Tn(null, new In(s, 16)), new B3n())), j = DHn(rc(new Tn(null, new In(s, 16)), new R3n())), y.Math.min(k, j)), c = 0, f = 0; f < s.c.length - 1; f++) + for (h = (Ln(f, s.c.length), u(s.c[f], 118)), m = f + 1; m < s.c.length; m++) + c += Ven(n, h, (Ln(m, s.c.length), u(s.c[m], 118))); + for (g = u(v(e, (W(), S3)), 234), c >= 2 && (S = QHn(s, !0, g), !n.e && (n.e = new skn(n)), _8e(n.e, S, s, n.b)), NKn(s, g), _Oe(s), p = -1, a = new C(s); a.a < a.c.c.length; ) + l = u(E(a), 118), !(y.Math.abs(l.s - l.c) < vh) && (p = y.Math.max(p, l.o), n.d.yg(l, r, n.c)); + return n.d.a.a.$b(), p + 1; + } + function xOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (d = u(NC((s = ge(new sl(e).a.d, 0), new sg(s))), 40), m = d ? u(v(d, (pt(), uq)), 40) : null, r = 1; d && m; ) { + for (h = 0, N = 0, t = d, i = m, f = 0; f < r; f++) + t = n$(t), i = n$(i), N += $(R(v(t, (pt(), Lv)))), h += $(R(v(i, Lv))); + if (O = $(R(v(m, (pt(), j1)))), I = $(R(v(d, j1))), g = DY(n, d, m), p = O + h + n.b + g - I - N, 0 < p) { + for (l = e, a = 0; l && l != i; ) + ++a, l = u(v(l, $I), 40); + if (l) + for (S = p / a, l = e; l != i; ) + j = $(R(v(l, j1))) + p, U(l, j1, j), k = $(R(v(l, Lv))) + p, U(l, Lv, k), p -= S, l = u(v(l, $I), 40); + else + return; + } + ++r, d.d.b == 0 ? d = Len(new sl(e), r) : d = u(NC((c = ge(new sl(d).a.d, 0), new sg(c))), 40), m = d ? u(v(d, uq), 40) : null; + } + } + function FOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + return g = n.c[e], p = n.c[t], m = u(v(g, (W(), T3)), 15), !!m && m.gc() != 0 && m.Hc(p) || (k = g.k != (Vn(), Mi) && p.k != Mi, j = u(v(g, sb), 10), S = u(v(p, sb), 10), I = j != S, O = !!j && j != g || !!S && S != p, N = $x(g, (en(), Xn)), _ = $x(p, ae), O = O | ($x(g, ae) || $x(p, Xn)), X = O && I || N || _, k && X) || g.k == (Vn(), Hc) && p.k == Vt || p.k == (Vn(), Hc) && g.k == Vt ? !1 : (a = n.c[e], c = n.c[t], r = vKn(n.e, a, c, (en(), Wn)), h = vKn(n.i, a, c, Zn), dTe(n.f, a, c), l = LFn(n.b, a, c) + u(r.a, 17).a + u(h.a, 17).a + n.f.d, f = LFn(n.b, c, a) + u(r.b, 17).a + u(h.b, 17).a + n.f.b, n.a && (d = u(v(a, st), 12), s = u(v(c, st), 12), i = nKn(n.g, d, s), l += u(i.a, 17).a, f += u(i.b, 17).a), l > f); + } + function PGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + for (l = St, a = St, f = li, h = li, g = new C(e.i); g.a < g.c.c.length; ) + d = u(E(g), 68), r = u(u(ee(n.g, d.a), 42).b, 27), Ro(r, d.b.c, d.b.d), l = y.Math.min(l, r.i), a = y.Math.min(a, r.j), f = y.Math.max(f, r.i + r.g), h = y.Math.max(h, r.j + r.f); + for (p = u(z(n.c, (Wk(), Yce)), 107), G0(n.c, f - l + (p.b + p.c), h - a + (p.d + p.a), !0, !0), unn(n.c, -l + p.b, -a + p.d), i = new ne(xIn(n.c)); i.e != i.i.gc(); ) + t = u(ue(i), 74), s = Xg(t, !0, !0), m = Kh(t), j = ra(t), k = new V(m.i + m.g / 2, m.j + m.f / 2), c = new V(j.i + j.g / 2, j.j + j.f / 2), S = mi(new V(c.a, c.b), k), vm(S, m.g, m.f), it(k, S), I = mi(new V(k.a, k.b), c), vm(I, j.g, j.f), it(c, I), j7(s, k.a, k.b), y7(s, c.a, c.b); + } + function BOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + for (e.Ug("Label dummy removal", 1), i = $(R(v(n, (cn(), T2)))), r = $(R(v(n, qw))), l = u(v(n, Do), 88), h = new C(n.b); h.a < h.c.c.length; ) + for (f = u(E(h), 30), d = new xi(f.a, 0); d.b < d.d.gc(); ) + a = (oe(d.b < d.d.gc()), u(d.d.Xb(d.c = d.b++), 10)), a.k == (Vn(), Sc) && (g = u(v(a, (W(), st)), 18), m = $(R(v(g, m1))), s = x(v(a, A3)) === x((To(), Aa)), t = new rr(a.n), s && (t.b += m + i), c = new V(a.o.a, a.o.b + (a.k == Sc && !s4(ut(u(v(a, K8), 15).Oc(), new Z3(new GU()))).Bd((Va(), v3)) ? 0 : -m - i)), p = u(v(a, K8), 15), l == (ci(), us) || l == Wf ? UCe(p, t, r, c, s, l) : Y6e(p, t, r, c), hi(g.b, p), XF(a, x(v(n, $l)) === x((El(), Yj))), bo(d)); + e.Vg(); + } + function ROe(n) { + n.q || (n.q = !0, n.p = hc(n, 0), n.a = hc(n, 1), jt(n.a, 0), n.f = hc(n, 2), jt(n.f, 1), _t(n.f, 2), n.n = hc(n, 3), _t(n.n, 3), _t(n.n, 4), _t(n.n, 5), _t(n.n, 6), n.g = hc(n, 4), jt(n.g, 7), _t(n.g, 8), n.c = hc(n, 5), jt(n.c, 7), jt(n.c, 8), n.i = hc(n, 6), jt(n.i, 9), jt(n.i, 10), jt(n.i, 11), jt(n.i, 12), _t(n.i, 13), n.j = hc(n, 7), jt(n.j, 9), n.d = hc(n, 8), jt(n.d, 3), jt(n.d, 4), jt(n.d, 5), jt(n.d, 6), _t(n.d, 7), _t(n.d, 8), _t(n.d, 9), _t(n.d, 10), n.b = hc(n, 9), _t(n.b, 0), _t(n.b, 1), n.e = hc(n, 10), _t(n.e, 1), _t(n.e, 2), _t(n.e, 3), _t(n.e, 4), jt(n.e, 5), jt(n.e, 6), jt(n.e, 7), jt(n.e, 8), jt(n.e, 9), jt(n.e, 10), _t(n.e, 11), n.k = hc(n, 11), _t(n.k, 0), _t(n.k, 1), n.o = Je(n, 12), n.s = Je(n, 13)); + } + function ttn(n, e) { + e.dc() && Lh(n.j, !0, !0, !0, !0), ct(e, (en(), ef)) && Lh(n.j, !0, !0, !0, !1), ct(e, os) && Lh(n.j, !1, !0, !0, !0), ct(e, No) && Lh(n.j, !0, !0, !1, !0), ct(e, Ts) && Lh(n.j, !0, !1, !0, !0), ct(e, Wu) && Lh(n.j, !1, !0, !0, !1), ct(e, ss) && Lh(n.j, !1, !0, !1, !0), ct(e, $o) && Lh(n.j, !0, !1, !1, !0), ct(e, tf) && Lh(n.j, !0, !1, !0, !1), ct(e, vu) && Lh(n.j, !0, !0, !0, !0), ct(e, fu) && Lh(n.j, !0, !0, !0, !0), ct(e, vu) && Lh(n.j, !0, !0, !0, !0), ct(e, mu) && Lh(n.j, !0, !0, !0, !0), ct(e, ku) && Lh(n.j, !0, !0, !0, !0), ct(e, Ju) && Lh(n.j, !0, !0, !0, !0), ct(e, Gc) && Lh(n.j, !0, !0, !0, !0); + } + function IGn(n, e, t) { + var i, r, c, s, f, h, l, a, d; + if (n.a != e.jk()) + throw M(new Gn(ev + e.xe() + nb)); + if (i = r1((Lu(), zi), e).Jl(), i) + return i.jk().wi().ri(i, t); + if (s = r1(zi, e).Ll(), s) { + if (t == null) + return null; + if (f = u(t, 15), f.dc()) + return ""; + for (d = new Hl(), c = f.Kc(); c.Ob(); ) + r = c.Pb(), Cr(d, s.jk().wi().ri(s, r)), d.a += " "; + return bL(d, d.a.length - 1); + } + if (a = r1(zi, e).Ml(), !a.dc()) { + for (l = a.Kc(); l.Ob(); ) + if (h = u(l.Pb(), 156), h.fk(t)) + try { + if (d = h.jk().wi().ri(h, t), d != null) + return d; + } catch (g) { + if (g = It(g), !D(g, 103)) + throw M(g); + } + throw M(new Gn("Invalid value: '" + t + "' for datatype :" + e.xe())); + } + return u(e, 847).ok(), t == null ? null : D(t, 180) ? "" + u(t, 180).a : wo(t) == oP ? TTn(O9[0], u(t, 206)) : Jr(t); + } + function KOe(n) { + var e, t, i, r, c, s, f, h, l, a; + for (l = new Ct(), f = new Ct(), c = new C(n); c.a < c.c.c.length; ) + i = u(E(c), 131), i.v = 0, i.n = i.i.c.length, i.u = i.t.c.length, i.n == 0 && Kt(l, i, l.c.b, l.c), i.u == 0 && i.r.a.gc() == 0 && Kt(f, i, f.c.b, f.c); + for (s = -1; l.b != 0; ) + for (i = u(Ux(l, 0), 131), t = new C(i.t); t.a < t.c.c.length; ) + e = u(E(t), 274), a = e.b, a.v = y.Math.max(a.v, i.v + 1), s = y.Math.max(s, a.v), --a.n, a.n == 0 && Kt(l, a, l.c.b, l.c); + if (s > -1) { + for (r = ge(f, 0); r.b != r.d.c; ) + i = u(be(r), 131), i.v = s; + for (; f.b != 0; ) + for (i = u(Ux(f, 0), 131), t = new C(i.i); t.a < t.c.c.length; ) + e = u(E(t), 274), h = e.a, h.r.a.gc() == 0 && (h.v = y.Math.min(h.v, i.v - 1), --h.u, h.u == 0 && Kt(f, h, f.c.b, f.c)); + } + } + function _Oe(n) { + var e, t, i, r, c, s, f, h, l, a; + for (l = new Z(), f = new Z(), s = new C(n); s.a < s.c.c.length; ) + r = u(E(s), 118), JO(r, r.f.c.length), SE(r, r.k.c.length), r.d == 0 && Kn(l.c, r), r.i == 0 && r.e.b == 0 && Kn(f.c, r); + for (i = -1; l.c.length != 0; ) + for (r = u(Yl(l, 0), 118), t = new C(r.k); t.a < t.c.c.length; ) + e = u(E(t), 132), a = e.b, mG(a, y.Math.max(a.o, r.o + 1)), i = y.Math.max(i, a.o), JO(a, a.d - 1), a.d == 0 && Kn(l.c, a); + if (i > -1) { + for (c = new C(f); c.a < c.c.c.length; ) + r = u(E(c), 118), r.o = i; + for (; f.c.length != 0; ) + for (r = u(Yl(f, 0), 118), t = new C(r.f); t.a < t.c.c.length; ) + e = u(E(t), 132), h = e.a, !(h.e.b > 0) && (mG(h, y.Math.min(h.o, r.o - 1)), SE(h, h.i - 1), h.i == 0 && Kn(f.c, h)); + } + } + function OGn(n, e, t, i, r) { + var c, s, f, h; + return h = St, s = !1, f = zen(n, mi(new V(e.a, e.b), n), it(new V(t.a, t.b), r), mi(new V(i.a, i.b), t)), c = !!f && !(y.Math.abs(f.a - n.a) <= Y0 && y.Math.abs(f.b - n.b) <= Y0 || y.Math.abs(f.a - e.a) <= Y0 && y.Math.abs(f.b - e.b) <= Y0), f = zen(n, mi(new V(e.a, e.b), n), t, r), f && ((y.Math.abs(f.a - n.a) <= Y0 && y.Math.abs(f.b - n.b) <= Y0) == (y.Math.abs(f.a - e.a) <= Y0 && y.Math.abs(f.b - e.b) <= Y0) || c ? h = y.Math.min(h, z6(mi(f, t))) : s = !0), f = zen(n, mi(new V(e.a, e.b), n), i, r), f && (s || (y.Math.abs(f.a - n.a) <= Y0 && y.Math.abs(f.b - n.b) <= Y0) == (y.Math.abs(f.a - e.a) <= Y0 && y.Math.abs(f.b - e.b) <= Y0) || c) && (h = y.Math.min(h, z6(mi(f, i)))), h; + } + function DGn(n) { + r0(n, new gd(UE(e0(Yd(n0(Zd(new Ka(), la), PXn), "Minimizes the stress within a layout using stress majorization. Stress exists if the euclidean distance between a pair of nodes doesn't match their graph theoretic distance, that is, the shortest path between the two nodes. The method allows to specify individual edge lengths."), new Vbn()), uu))), Q(n, la, i8, rn(Aon)), Q(n, la, oS, (_n(), !0)), Q(n, la, r2, rn(bZn)), Q(n, la, d3, rn(wZn)), Q(n, la, a3, rn(gZn)), Q(n, la, Xm, rn(dZn)), Q(n, la, r8, rn(Pon)), Q(n, la, Vm, rn(pZn)), Q(n, la, Ytn, rn(Ton)), Q(n, la, nin, rn(Con)), Q(n, la, ein, rn(Mon)), Q(n, la, tin, rn(Son)), Q(n, la, Ztn, rn(EP)); + } + function HOe(n) { + var e, t, i, r, c, s, f, h; + for (e = null, i = new C(n); i.a < i.c.c.length; ) + t = u(E(i), 239), $(Af(t.g, t.d[0]).a), t.b = null, t.e && t.e.gc() > 0 && t.c == 0 && (!e && (e = new Z()), Kn(e.c, t)); + if (e) + for (; e.c.length != 0; ) { + if (t = u(Yl(e, 0), 239), t.b && t.b.c.length > 0) { + for (c = (!t.b && (t.b = new Z()), new C(t.b)); c.a < c.c.c.length; ) + if (r = u(E(c), 239), J9(Af(r.g, r.d[0]).a) == J9(Af(t.g, t.d[0]).a)) { + if (qr(n, r, 0) > qr(n, t, 0)) + return new bi(r, t); + } else if ($(Af(r.g, r.d[0]).a) > $(Af(t.g, t.d[0]).a)) + return new bi(r, t); + } + for (f = (!t.e && (t.e = new Z()), t.e).Kc(); f.Ob(); ) + s = u(f.Pb(), 239), h = (!s.b && (s.b = new Z()), s.b), zb(0, h.c.length), d6(h.c, 0, t), s.c == h.c.length && Kn(e.c, s); + } + return null; + } + function qOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + for (e.Ug("Interactive crossing minimization", 1), s = 0, c = new C(n.b); c.a < c.c.c.length; ) + i = u(E(c), 30), i.p = s++; + for (g = WZ(n), j = new Cz(g.length), oGn(new Ku(A(T(ene, 1), Bn, 230, 0, [j])), g), k = 0, s = 0, r = new C(n.b); r.a < r.c.c.length; ) { + for (i = u(E(r), 30), t = 0, d = 0, a = new C(i.a); a.a < a.c.c.length; ) + for (h = u(E(a), 10), h.n.a > 0 && (t += h.n.a + h.o.a / 2, ++d), m = new C(h.j); m.a < m.c.c.length; ) + p = u(E(m), 12), p.p = k++; + for (d > 0 && (t /= d), S = K(Ii, Ar, 28, i.a.c.length, 15, 1), f = 0, l = new C(i.a); l.a < l.c.c.length; ) + h = u(E(l), 10), h.p = f++, S[h.p] = LOe(h, t), h.k == (Vn(), Mi) && U(h, (W(), ufn), S[h.p]); + Dn(), Yt(i.a, new K7n(S)), dUn(j, g, s, !0), ++s; + } + e.Vg(); + } + function V5(n, e) { + var t, i, r, c, s, f, h, l, a; + if (e.e == 5) { + TGn(n, e); + return; + } + if (l = e, !(l.b == null || n.b == null)) { + for (Gg(n), z5(n), Gg(l), z5(l), t = K(ye, _e, 28, n.b.length + l.b.length, 15, 1), a = 0, i = 0, s = 0; i < n.b.length && s < l.b.length; ) + if (r = n.b[i], c = n.b[i + 1], f = l.b[s], h = l.b[s + 1], c < f) + t[a++] = n.b[i++], t[a++] = n.b[i++]; + else if (c >= f && r <= h) + f <= r && c <= h ? i += 2 : f <= r ? (n.b[i] = h + 1, s += 2) : c <= h ? (t[a++] = r, t[a++] = f - 1, i += 2) : (t[a++] = r, t[a++] = f - 1, n.b[i] = h + 1, s += 2); + else if (h < r) + s += 2; + else + throw M(new ec("Token#subtractRanges(): Internal Error: [" + n.b[i] + "," + n.b[i + 1] + "] - [" + l.b[s] + "," + l.b[s + 1] + "]")); + for (; i < n.b.length; ) + t[a++] = n.b[i++], t[a++] = n.b[i++]; + n.b = K(ye, _e, 28, a, 15, 1), Oc(t, 0, n.b, 0, a); + } + } + function LGn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (f = Xg(e, !1, !1), S = Qk(f), i && (S = Sk(S)), O = $(R(z(e, (C5(), g_)))), j = (oe(S.b != 0), u(S.a.a.c, 8)), d = u(Zo(S, 1), 8), S.b > 2 ? (a = new Z(), hi(a, new Jl(S, 1, S.b)), c = vzn(a, O + n.a), I = new bF(c), Ur(I, e), Kn(t.c, I)) : i ? I = u(ee(n.b, Kh(e)), 272) : I = u(ee(n.b, ra(e)), 272), h = Kh(e), i && (h = ra(e)), s = Hje(j, h), l = O + n.a, s.a ? (l += y.Math.abs(j.b - d.b), k = new V(d.a, (d.b + j.b) / 2)) : (l += y.Math.abs(j.a - d.a), k = new V((d.a + j.a) / 2, d.b)), i ? Ve(n.d, e, new vZ(I, s, k, l)) : Ve(n.c, e, new vZ(I, s, k, l)), Ve(n.b, e, I), m = (!e.n && (e.n = new q(Sr, e, 1, 7)), e.n), p = new ne(m); p.e != p.i.gc(); ) + g = u(ue(p), 135), r = fy(n, g, !0, 0, 0), Kn(t.c, r); + } + function UOe(n) { + var e, t, i, r, c, s, f; + if (!n.A.dc()) { + if (n.A.Hc((go(), rE)) && (u(Mr(n.b, (en(), Xn)), 127).k = !0, u(Mr(n.b, ae), 127).k = !0, e = n.q != (Di(), tl) && n.q != Uc, wG(u(Mr(n.b, Zn), 127), e), wG(u(Mr(n.b, Wn), 127), e), wG(n.g, e), n.A.Hc(Gd) && (u(Mr(n.b, Xn), 127).j = !0, u(Mr(n.b, ae), 127).j = !0, u(Mr(n.b, Zn), 127).k = !0, u(Mr(n.b, Wn), 127).k = !0, n.g.k = !0)), n.A.Hc(iE)) + for (n.a.j = !0, n.a.k = !0, n.g.j = !0, n.g.k = !0, f = n.B.Hc((io(), P9)), r = jx(), c = 0, s = r.length; c < s; ++c) + i = r[c], t = u(Mr(n.i, i), 314), t && (iZ(i) ? (t.j = !0, t.k = !0) : (t.j = !f, t.k = !f)); + n.A.Hc(Qw) && n.B.Hc((io(), uE)) && (n.g.j = !0, n.g.j = !0, n.a.j || (n.a.j = !0, n.a.k = !0, n.a.e = !0)); + } + } + function GOe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + for (i = new C(n.e.b); i.a < i.c.c.length; ) + for (t = u(E(i), 30), c = new C(t.a); c.a < c.c.c.length; ) + if (r = u(E(c), 10), p = n.i[r.p], l = p.a.e, h = p.d.e, r.n.b = l, S = h - l - r.o.b, e = HF(r), g = (cw(), (r.q ? r.q : (Dn(), Dn(), Wh))._b((cn(), db)) ? d = u(v(r, db), 203) : d = u(v(Hi(r), z8), 203), d), e && (g == P2 || g == S2) && (r.o.b += S), e && (g == BH || g == P2 || g == S2)) { + for (k = new C(r.j); k.a < k.c.c.length; ) + m = u(E(k), 12), (en(), fu).Hc(m.j) && (a = u(ee(n.k, m), 125), m.n.b = a.e - l); + for (f = new C(r.b); f.a < f.c.c.length; ) + s = u(E(f), 72), j = u(v(r, ab), 21), j.Hc((lw(), Ms)) ? s.n.b += S : j.Hc(el) && (s.n.b += S / 2); + (g == P2 || g == S2) && uc(r, (en(), ae)).Jc(new tkn(S)); + } + } + function zOe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (l = new Z(), h = new C(e.a); h.a < h.c.c.length; ) + for (s = u(E(h), 10), g = uc(s, (en(), Zn)).Kc(); g.Ob(); ) + for (d = u(g.Pb(), 12), r = new C(d.g); r.a < r.c.c.length; ) + i = u(E(r), 18), !(!fr(i) && i.c.i.c == i.d.i.c || fr(i) || i.d.i.c != t) && Kn(l.c, i); + for (f = Qo(t.a).Kc(); f.Ob(); ) + for (s = u(f.Pb(), 10), g = uc(s, (en(), Wn)).Kc(); g.Ob(); ) + for (d = u(g.Pb(), 12), r = new C(d.e); r.a < r.c.c.length; ) + if (i = u(E(r), 18), !(!fr(i) && i.c.i.c == i.d.i.c || fr(i) || i.c.i.c != e) && l.c.length != 0) { + for (a = new xi(l, l.c.length), c = (oe(a.b > 0), u(a.a.Xb(a.c = --a.b), 18)); c != i && a.b > 0; ) + n.a[c.p] = !0, n.a[i.p] = !0, c = (oe(a.b > 0), u(a.a.Xb(a.c = --a.b), 18)); + a.b > 0 && bo(a); + } + } + function NGn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + if (!n.b) + return !1; + for (s = null, g = null, h = new r$(null, null), r = 1, h.a[1] = n.b, d = h; d.a[r]; ) + l = r, f = g, g = d, d = d.a[r], i = n.a.Ne(e, d.d), r = i < 0 ? 0 : 1, i == 0 && (!t.c || vc(d.e, t.d)) && (s = d), !(d && d.b) && !Ib(d.a[r]) && (Ib(d.a[1 - r]) ? g = g.a[l] = jT(d, r) : Ib(d.a[1 - r]) || (p = g.a[1 - l], p && (!Ib(p.a[1 - l]) && !Ib(p.a[l]) ? (g.b = !1, p.b = !0, d.b = !0) : (c = f.a[1] == g ? 1 : 0, Ib(p.a[l]) ? f.a[c] = hDn(g, l) : Ib(p.a[1 - l]) && (f.a[c] = jT(g, l)), d.b = f.a[c].b = !0, f.a[c].a[0].b = !1, f.a[c].a[1].b = !1)))); + return s && (t.b = !0, t.d = s.e, d != s && (a = new r$(d.d, d.e), Xye(n, h, s, a), g == s && (g = a)), g.a[g.a[1] == d ? 1 : 0] = d.a[d.a[0] ? 0 : 1], --n.c), n.b = h.a[1], n.b && (n.b.b = !1), t.b; + } + function XOe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (r = new C(n.a.a.b); r.a < r.c.c.length; ) + for (i = u(E(r), 60), h = i.c.Kc(); h.Ob(); ) + f = u(h.Pb(), 60), i.a != f.a && (hl(n.a.d) ? d = n.a.g.ff(i, f) : d = n.a.g.gf(i, f), c = i.b.a + i.d.b + d - f.b.a, c = y.Math.ceil(c), c = y.Math.max(0, c), cQ(i, f) ? (s = h0(new za(), n.d), l = wi(y.Math.ceil(f.b.a - i.b.a)), e = l - (f.b.a - i.b.a), a = xp(i).a, t = i, a || (a = xp(f).a, e = -e, t = f), a && (t.b.a -= e, a.n.a -= e), qs(Ls(Ds(Ns(Os(new hs(), y.Math.max(0, l)), 1), s), n.c[i.a.d])), qs(Ls(Ds(Ns(Os(new hs(), y.Math.max(0, -l)), 1), s), n.c[f.a.d]))) : (g = 1, (D(i.g, 154) && D(f.g, 10) || D(f.g, 154) && D(i.g, 10)) && (g = 2), qs(Ls(Ds(Ns(Os(new hs(), wi(c)), g), n.c[i.a.d]), n.c[f.a.d])))); + } + function $Gn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + if (t) + for (i = -1, a = new xi(e, 0); a.b < a.d.gc(); ) { + if (f = (oe(a.b < a.d.gc()), u(a.d.Xb(a.c = a.b++), 10)), d = n.c[f.c.p][f.p].a, d == null) { + for (s = i + 1, c = new xi(e, a.b); c.b < c.d.gc(); ) + if (g = v1e(n, (oe(c.b < c.d.gc()), u(c.d.Xb(c.c = c.b++), 10))).a, g != null) { + s = (Jn(g), g); + break; + } + d = (i + s) / 2, n.c[f.c.p][f.p].a = d, n.c[f.c.p][f.p].d = (Jn(d), d), n.c[f.c.p][f.p].b = 1; + } + i = (Jn(d), d); + } + else { + for (r = 0, l = new C(e); l.a < l.c.c.length; ) + f = u(E(l), 10), n.c[f.c.p][f.p].a != null && (r = y.Math.max(r, $(n.c[f.c.p][f.p].a))); + for (r += 2, h = new C(e); h.a < h.c.c.length; ) + f = u(E(h), 10), n.c[f.c.p][f.p].a == null && (d = to(n.i, 24) * Iy * r - 1, n.c[f.c.p][f.p].a = d, n.c[f.c.p][f.p].d = d, n.c[f.c.p][f.p].b = 1); + } + } + function VOe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + for (!t && (t = i6e(e.q.getTimezoneOffset())), r = (e.q.getTimezoneOffset() - t.a) * 6e4, f = new hV(nr(kc(e.q.getTime()), r)), h = f, f.q.getTimezoneOffset() != e.q.getTimezoneOffset() && (r > 0 ? r -= 864e5 : r += 864e5, h = new hV(nr(kc(e.q.getTime()), r))), a = new fg(), l = n.a.length, c = 0; c < l; ) + if (i = Xi(n.a, c), i >= 97 && i <= 122 || i >= 65 && i <= 90) { + for (s = c + 1; s < l && Xi(n.a, s) == i; ++s) + ; + XLe(a, i, s - c, f, h, t), c = s; + } else if (i == 39) { + if (++c, c < l && Xi(n.a, c) == 39) { + a.a += "'", ++c; + continue; + } + for (d = !1; !d; ) { + for (s = c; s < l && Xi(n.a, s) != 39; ) + ++s; + if (s >= l) + throw M(new Gn("Missing trailing '")); + s + 1 < l && Xi(n.a, s + 1) == 39 ? ++s : d = !0, Re(a, qo(n.a, c, s)), c = s + 1; + } + } else + a.a += String.fromCharCode(i), ++c; + return a.a; + } + function WOe() { + Ge(ng, new Vvn()), Ge(Ue, new c6n()), Ge(As, new g6n()), Ge(Cf, new j6n()), Ge(EU, new E6n()), Ge(EO, new C6n()), Ge(Bl, new M6n()), Ge(I9, new T6n()), Ge(fE, new Bvn()), Ge(pU, new Rvn()), Ge(Oa, new Kvn()), Ge(Ss, new _vn()), Ge(Ef, new Hvn()), Ge(yb, new qvn()), Ge(eg, new Uvn()), Ge(yu, new Gvn()), Ge(Zw, new zvn()), Ge(pc, new Xvn()), Ge(Er, new Wvn()), Ge(hu, new Jvn()), Ge(Xt, new Qvn()), Ge(T(Bu, 1), new Yvn()), Ge(p3, new Zvn()), Ge(A8, new n6n()), Ge(oP, new e6n()), Ge(v0n, new t6n()), Ge(si, new i6n()), Ge(Ndn, new r6n()), Ge(Fdn, new u6n()), Ge(u0n, new o6n()), Ge(CO, new s6n()), Ge(sv, new f6n()), Ge(Gi, new h6n()), Ge(cun, new l6n()), Ge(tb, new a6n()), Ge(uun, new d6n()), Ge(t0n, new b6n()), Ge(k0n, new w6n()), Ge(ib, new p6n()), Ge(fn, new m6n()), Ge(xdn, new v6n()), Ge(y0n, new k6n()); + } + function xGn(n, e) { + var t, i, r, c, s, f, h, l, a; + if (n == null) + return pu; + if (h = e.a.zc(n, e), h != null) + return "[...]"; + for (t = new fd(ur, "[", "]"), r = n, c = 0, s = r.length; c < s; ++c) + i = r[c], i != null && wo(i).i & 4 ? Array.isArray(i) && (a = bk(i), !(a >= 14 && a <= 16)) ? e.a._b(i) ? (t.a ? Re(t.a, t.b) : t.a = new mo(t.d), T6(t.a, "[...]")) : (f = cd(i), l = new F6(e), pl(t, xGn(f, l))) : D(i, 183) ? pl(t, MEe(u(i, 183))) : D(i, 195) ? pl(t, hye(u(i, 195))) : D(i, 201) ? pl(t, kje(u(i, 201))) : D(i, 2111) ? pl(t, lye(u(i, 2111))) : D(i, 53) ? pl(t, CEe(u(i, 53))) : D(i, 376) ? pl(t, HEe(u(i, 376))) : D(i, 846) ? pl(t, EEe(u(i, 846))) : D(i, 109) && pl(t, jEe(u(i, 109))) : pl(t, i == null ? pu : Jr(i)); + return t.a ? t.e.length == 0 ? t.a.a : t.a.a + ("" + t.e) : t.c; + } + function Lm(n, e) { + var t, i, r, c; + c = n.F, e == null ? (n.F = null, um(n, null)) : (n.F = (Jn(e), e), i = ih(e, gu(60)), i != -1 ? (r = (Fi(0, i, e.length), e.substr(0, i)), ih(e, gu(46)) == -1 && !An(r, i3) && !An(r, m8) && !An(r, GS) && !An(r, v8) && !An(r, k8) && !An(r, y8) && !An(r, j8) && !An(r, E8) && (r = gJn), t = FC(e, gu(62)), t != -1 && (r += "" + (zn(t + 1, e.length + 1), e.substr(t + 1))), um(n, r)) : (r = e, ih(e, gu(46)) == -1 && (i = ih(e, gu(91)), i != -1 && (r = (Fi(0, i, e.length), e.substr(0, i))), !An(r, i3) && !An(r, m8) && !An(r, GS) && !An(r, v8) && !An(r, k8) && !An(r, y8) && !An(r, j8) && !An(r, E8) ? (r = gJn, i != -1 && (r += "" + (zn(i, e.length + 1), e.substr(i)))) : r = e), um(n, r), r == e && (n.F = n.D))), n.Db & 4 && !(n.Db & 1) && rt(n, new Ci(n, 1, 5, c, e)); + } + function FGn(n, e) { + var t, i, r, c, s, f, h, l, a, d; + if (h = e.length - 1, f = (zn(h, e.length), e.charCodeAt(h)), f == 93) { + if (s = ih(e, gu(91)), s >= 0) + return r = Y5e(n, (Fi(1, s, e.length), e.substr(1, s - 1))), a = (Fi(s + 1, h, e.length), e.substr(s + 1, h - (s + 1))), CLe(n, a, r); + } else { + if (t = -1, gun == null && (gun = new RegExp("\\d")), gun.test(String.fromCharCode(f)) && (t = SV(e, gu(46), h - 1), t >= 0)) { + i = u(YN(n, M$n(n, (Fi(1, t, e.length), e.substr(1, t - 1))), !1), 61), l = 0; + try { + l = Ao((zn(t + 1, e.length + 1), e.substr(t + 1)), Wi, tt); + } catch (g) { + throw g = It(g), D(g, 130) ? (c = g, M(new eT(c))) : M(g); + } + if (l < i.gc()) + return d = i.Xb(l), D(d, 76) && (d = u(d, 76).md()), u(d, 58); + } + if (t < 0) + return u(YN(n, M$n(n, (zn(1, e.length + 1), e.substr(1))), !1), 58); + } + return null; + } + function JOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (e.Ug("Label dummy insertions", 1), d = new Z(), s = $(R(v(n, (cn(), T2)))), l = $(R(v(n, qw))), a = u(v(n, Do), 88), p = new C(n.a); p.a < p.c.c.length; ) + for (g = u(E(p), 10), c = new ie(ce(Qt(g).a.Kc(), new En())); pe(c); ) + if (r = u(fe(c), 18), r.c.i != r.d.i && yL(r.b, UZn)) { + for (k = pme(r), m = Dh(r.b.c.length), t = AMe(n, r, k, m), Kn(d.c, t), i = t.o, f = new xi(r.b, 0); f.b < f.d.gc(); ) + h = (oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 72)), x(v(h, Ah)) === x(($f(), Fv)) && (a == (ci(), us) || a == Wf ? (i.a += h.o.a + l, i.b = y.Math.max(i.b, h.o.b)) : (i.a = y.Math.max(i.a, h.o.a), i.b += h.o.b + l), Kn(m.c, h), bo(f)); + a == (ci(), us) || a == Wf ? (i.a -= l, i.b += s + k) : i.b += s - l + k; + } + hi(n.a, d), e.Vg(); + } + function QOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + if (n.c = n.e, m = un(v(e, (cn(), zte))), p = m == null || (Jn(m), m), c = u(v(e, (W(), qc)), 21).Hc((mr(), cs)), r = u(v(e, Ut), 101), t = !(r == (Di(), Ud) || r == tl || r == Uc), p && (t || !c)) { + for (d = new C(e.a); d.a < d.c.c.length; ) + l = u(E(d), 10), l.p = 0; + for (g = new Z(), a = new C(e.a); a.a < a.c.c.length; ) + if (l = u(E(a), 10), i = kUn(n, l, null), i) { + for (h = new CQ(), Ur(h, e), U(h, Nl, u(i.b, 21)), JW(h.d, e.d), U(h, Ev, null), f = u(i.a, 15).Kc(); f.Ob(); ) + s = u(f.Pb(), 10), nn(h.a, s), s.a = h; + g.Fc(h); + } + c && (x(v(e, Fw)) === x((dd(), P_)) ? n.c = n.b : x(v(e, Fw)) === x(I_) ? n.c = n.d : n.c = n.a); + } else + g = new Ku(A(T($Zn, 1), OXn, 36, 0, [e])); + return x(v(e, Fw)) !== x((dd(), Ow)) && (Dn(), g.jd(new lwn())), g; + } + function Nm(n, e, t) { + var i, r, c, s, f, h, l; + if (l = n.c, !e && (e = zdn), n.c = e, n.Db & 4 && !(n.Db & 1) && (h = new Ci(n, 1, 2, l, n.c), t ? t.nj(h) : t = h), l != e) { + if (D(n.Cb, 292)) + n.Db >> 16 == -10 ? t = u(n.Cb, 292).Yk(e, t) : n.Db >> 16 == -15 && (!e && (e = (On(), Zf)), !l && (l = (On(), Zf)), n.Cb.Yh() && (h = new ml(n.Cb, 1, 13, l, e, f1(no(u(n.Cb, 62)), n), !1), t ? t.nj(h) : t = h)); + else if (D(n.Cb, 90)) + n.Db >> 16 == -23 && (D(e, 90) || (e = (On(), Is)), D(l, 90) || (l = (On(), Is)), n.Cb.Yh() && (h = new ml(n.Cb, 1, 10, l, e, f1(Pc(u(n.Cb, 29)), n), !1), t ? t.nj(h) : t = h)); + else if (D(n.Cb, 457)) + for (f = u(n.Cb, 850), s = (!f.b && (f.b = new NE(new aD())), f.b), c = (i = new sd(new Ua(s.a).a), new $E(i)); c.a.b; ) + r = u(L0(c.a).ld(), 89), t = Nm(r, MA(r, f), t); + } + return t; + } + function YOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (s = on(un(z(n, (cn(), Rw)))), g = u(z(n, _w), 21), h = !1, l = !1, d = new ne((!n.c && (n.c = new q(Qu, n, 9, 9)), n.c)); d.e != d.i.gc() && (!h || !l); ) { + for (c = u(ue(d), 123), f = 0, r = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!c.d && (c.d = new Nn(Wt, c, 8, 5)), c.d), (!c.e && (c.e = new Nn(Wt, c, 7, 4)), c.e)]))); pe(r) && (i = u(fe(r), 74), a = s && _0(i) && on(un(z(i, Nd))), t = wGn((!i.b && (i.b = new Nn(he, i, 4, 7)), i.b), c) ? n == At(Gr(u(L((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c), 0), 84))) : n == At(Gr(u(L((!i.b && (i.b = new Nn(he, i, 4, 7)), i.b), 0), 84))), !((a || t) && (++f, f > 1))); ) + ; + (f > 0 || g.Hc((zu(), Fl)) && (!c.n && (c.n = new q(Sr, c, 1, 7)), c.n).i > 0) && (h = !0), f > 1 && (l = !0); + } + h && e.Fc((mr(), cs)), l && e.Fc((mr(), F8)); + } + function BGn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + if (g = u(z(n, (He(), Hd)), 21), g.dc()) + return null; + if (f = 0, s = 0, g.Hc((go(), rE))) { + for (a = u(z(n, v9), 101), i = 2, t = 2, r = 2, c = 2, e = At(n) ? u(z(At(n), _d), 88) : u(z(n, _d), 88), l = new ne((!n.c && (n.c = new q(Qu, n, 9, 9)), n.c)); l.e != l.i.gc(); ) + if (h = u(ue(l), 123), d = u(z(h, H2), 64), d == (en(), sc) && (d = Ken(h, e), ht(h, H2, d)), a == (Di(), Uc)) + switch (d.g) { + case 1: + i = y.Math.max(i, h.i + h.g); + break; + case 2: + t = y.Math.max(t, h.j + h.f); + break; + case 3: + r = y.Math.max(r, h.i + h.g); + break; + case 4: + c = y.Math.max(c, h.j + h.f); + } + else + switch (d.g) { + case 1: + i += h.g + 2; + break; + case 2: + t += h.f + 2; + break; + case 3: + r += h.g + 2; + break; + case 4: + c += h.f + 2; + } + f = y.Math.max(i, r), s = y.Math.max(t, c); + } + return G0(n, f, s, !0, !0); + } + function VF(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (I = u(Wr(fT(ut(new Tn(null, new In(e.d, 16)), new S7n(t)), new P7n(t)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), d = tt, a = Wi, h = new C(e.b.j); h.a < h.c.c.length; ) + f = u(E(h), 12), f.j == t && (d = y.Math.min(d, f.p), a = y.Math.max(a, f.p)); + if (d == tt) + for (s = 0; s < I.gc(); s++) + ZJ(u(I.Xb(s), 105), t, s); + else + for (O = K(ye, _e, 28, r.length, 15, 1), Vbe(O, O.length), S = I.Kc(); S.Ob(); ) { + for (j = u(S.Pb(), 105), c = u(ee(n.b, j), 183), l = 0, k = d; k <= a; k++) + c[k] && (l = y.Math.max(l, i[k])); + if (j.i) { + for (p = j.i.c, N = new ni(), g = 0; g < r.length; g++) + r[p][g] && fi(N, Y(O[g])); + for (; sf(N, Y(l)); ) + ++l; + } + for (ZJ(j, t, l), m = d; m <= a; m++) + c[m] && (i[m] = l + 1); + j.i && (O[j.i.c] = l); + } + } + function ZOe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (r = null, i = new C(e.a); i.a < i.c.c.length; ) + t = u(E(i), 10), HF(t) ? c = (f = h0(i7(new za(), t), n.f), h = h0(i7(new za(), t), n.f), l = new VW(t, !0, f, h), a = t.o.b, d = (cw(), (t.q ? t.q : (Dn(), Dn(), Wh))._b((cn(), db)) ? g = u(v(t, db), 203) : g = u(v(Hi(t), z8), 203), g), p = 1e4, d == S2 && (p = 1), m = qs(Ls(Ds(Os(Ns(new hs(), p), wi(y.Math.ceil(a))), f), h)), d == P2 && fi(n.d, m), vUn(n, Qo(uc(t, (en(), Wn))), l), vUn(n, uc(t, Zn), l), l) : c = (k = h0(i7(new za(), t), n.f), Gt(ut(new Tn(null, new In(t.j, 16)), new u3n()), new GCn(n, k)), new VW(t, !1, k, k)), n.i[t.p] = c, r && (s = r.c.d.a + jg(n.n, r.c, t) + t.d.d, r.b || (s += r.c.o.b), qs(Ls(Ds(Ns(Os(new hs(), wi(y.Math.ceil(s))), 0), r.d), c.a))), r = c; + } + function nDe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p; + for (c = new iHn(e), d = PAe(n, e, c), p = y.Math.max($(R(v(e, (cn(), m1)))), 1), a = new C(d.a); a.a < a.c.c.length; ) + l = u(E(a), 42), h = iRn(u(l.a, 8), u(l.b, 8), p), Bt = !0, Bt = Bt & d0(t, new V(h.c, h.d)), Bt = Bt & d0(t, a0(new V(h.c, h.d), h.b, 0)), Bt = Bt & d0(t, a0(new V(h.c, h.d), 0, h.a)), Bt & d0(t, a0(new V(h.c, h.d), h.b, h.a)); + switch (g = c.d, f = iRn(u(d.b.a, 8), u(d.b.b, 8), p), g == (en(), Wn) || g == Zn ? (i.c[g.g] = y.Math.min(i.c[g.g], f.d), i.b[g.g] = y.Math.max(i.b[g.g], f.d + f.a)) : (i.c[g.g] = y.Math.min(i.c[g.g], f.c), i.b[g.g] = y.Math.max(i.b[g.g], f.c + f.b)), r = li, s = c.c.i.d, g.g) { + case 4: + r = s.c; + break; + case 2: + r = s.b; + break; + case 1: + r = s.a; + break; + case 3: + r = s.d; + } + return i.a[g.g] = y.Math.max(i.a[g.g], r), c; + } + function eDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + f = u(ee(e.c, n), 468), I = e.a.c, h = e.a.c + e.a.b, kn = f.f, Fn = f.a, s = kn < Fn, k = new V(I, kn), O = new V(h, Fn), r = (I + h) / 2, j = new V(r, kn), N = new V(r, Fn), c = ZMe(n, kn, Fn), X = If(e.B), tn = new V(r, c), yn = If(e.D), t = o6e(A(T(Ei, 1), J, 8, 0, [X, tn, yn])), p = !1, S = e.B.i, S && S.c && f.d && (l = s && S.p < S.c.a.c.length - 1 || !s && S.p > 0, l ? l && (g = S.p, s ? ++g : --g, d = u(sn(S.c.a, g), 10), i = sFn(d), p = !(mF(i, X, t[0]) || DPn(i, X, t[0]))) : p = !0), m = !1, _ = e.D.i, _ && _.c && f.e && (a = s && _.p > 0 || !s && _.p < _.c.a.c.length - 1, a ? (g = _.p, s ? --g : ++g, d = u(sn(_.c.a, g), 10), i = sFn(d), m = !(mF(i, t[0], yn) || DPn(i, t[0], yn))) : m = !0), p && m && Fe(n.a, tn), p || r5(n.a, A(T(Ei, 1), J, 8, 0, [k, j])), m || r5(n.a, A(T(Ei, 1), J, 8, 0, [N, O])); + } + function tDe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + for (p = e.c.length, g = 0, d = new C(n.b); d.a < d.c.c.length; ) + if (a = u(E(d), 30), S = a.a, S.c.length != 0) { + for (j = new C(S), l = 0, I = null, r = u(E(j), 10), c = null; r; ) { + if (c = u(sn(e, r.p), 261), c.c >= 0) { + for (h = null, f = new xi(a.a, l + 1); f.b < f.d.gc() && (s = (oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 10)), h = u(sn(e, s.p), 261), !(h.d == c.d && h.c < c.c)); ) + h = null; + h && (I && (Go(i, r.p, Y(u(sn(i, r.p), 17).a - 1)), u(sn(t, I.p), 15).Mc(c)), c = kye(c, r, p++), Kn(e.c, c), nn(t, new Z()), I ? (u(sn(t, I.p), 15).Fc(c), nn(i, Y(1))) : nn(i, Y(0))); + } + m = null, j.a < j.c.c.length && (m = u(E(j), 10), k = u(sn(e, m.p), 261), u(sn(t, r.p), 15).Fc(k), Go(i, m.p, Y(u(sn(i, m.p), 17).a + 1))), c.d = g, c.c = l++, I = r, r = m; + } + ++g; + } + } + function iDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + if (c = u(v(n, (W(), st)), 74), !!c) { + for (i = n.a, r = new rr(t), it(r, Ske(n)), Q4(n.d.i, n.c.i) ? (g = n.c, d = cc(A(T(Ei, 1), J, 8, 0, [g.n, g.a])), mi(d, t)) : d = If(n.c), Kt(i, d, i.a, i.a.a), p = If(n.d), v(n, pH) != null && it(p, u(v(n, pH), 8)), Kt(i, p, i.c.b, i.c), nw(i, r), s = Xg(c, !0, !0), mT(s, u(L((!c.b && (c.b = new Nn(he, c, 4, 7)), c.b), 0), 84)), vT(s, u(L((!c.c && (c.c = new Nn(he, c, 5, 8)), c.c), 0), 84)), dy(i, s), a = new C(n.b); a.a < a.c.c.length; ) + l = u(E(a), 72), f = u(v(l, st), 135), I0(f, l.o.a), P0(f, l.o.b), Ro(f, l.n.a + r.a, l.n.b + r.b), ht(f, (Hp(), x_), un(v(l, x_))); + h = u(v(n, (cn(), Fr)), 75), h ? (nw(h, r), ht(c, Fr, h)) : ht(c, Fr, null), e == (El(), F3) ? ht(c, $l, F3) : ht(c, $l, null); + } + } + function RGn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn; + if (t.c.length != 0) { + for (m = new Z(), p = new C(t); p.a < p.c.c.length; ) + g = u(E(p), 27), nn(m, new V(g.i, g.j)); + for (i.dh(e, "Before removing overlaps"); fnn(n, t); ) + EA(n, t, !1); + if (i.dh(e, "After removing overlaps"), f = 0, h = 0, r = null, t.c.length != 0 && (r = (Ln(0, t.c.length), u(t.c[0], 27)), f = r.i - (Ln(0, m.c.length), u(m.c[0], 8)).a, h = r.j - (Ln(0, m.c.length), u(m.c[0], 8)).b), s = y.Math.sqrt(f * f + h * h), d = W6e(t), c = 1, d.a.gc() != 0) { + for (a = d.a.ec().Kc(); a.Ob(); ) + l = u(a.Pb(), 27), k = n.f, j = k.i + k.g / 2, S = k.j + k.f / 2, I = l.i + l.g / 2, O = l.j + l.f / 2, N = I - j, _ = O - S, X = y.Math.sqrt(N * N + _ * _), tn = N / X, yn = _ / X, tu(l, l.i + tn * s), iu(l, l.j + yn * s); + i.dh(e, "Child movement " + c), ++c; + } + n.a && n.a.Gg(new _u(d)), RGn(n, e, new _u(d), i); + } + } + function WF(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + return h = n, a = mi(new V(e.a, e.b), n), l = t, d = mi(new V(i.a, i.b), t), g = h.a, j = h.b, m = l.a, I = l.b, p = a.a, S = a.b, k = d.a, O = d.b, r = k * S - p * O, Tf(), Ks(jh), y.Math.abs(0 - r) <= jh || r == 0 || isNaN(0) && isNaN(r) ? !1 : (s = 1 / r * ((g - m) * S - (j - I) * p), f = 1 / r * -(-(g - m) * O + (j - I) * k), c = (Ks(jh), (y.Math.abs(0 - s) <= jh || s == 0 || isNaN(0) && isNaN(s) ? 0 : 0 < s ? -1 : 0 > s ? 1 : s0(isNaN(0), isNaN(s))) < 0 && (Ks(jh), (y.Math.abs(s - 1) <= jh || s == 1 || isNaN(s) && isNaN(1) ? 0 : s < 1 ? -1 : s > 1 ? 1 : s0(isNaN(s), isNaN(1))) < 0) && (Ks(jh), (y.Math.abs(0 - f) <= jh || f == 0 || isNaN(0) && isNaN(f) ? 0 : 0 < f ? -1 : 0 > f ? 1 : s0(isNaN(0), isNaN(f))) < 0) && (Ks(jh), (y.Math.abs(f - 1) <= jh || f == 1 || isNaN(f) && isNaN(1) ? 0 : f < 1 ? -1 : f > 1 ? 1 : s0(isNaN(f), isNaN(1))) < 0)), c); + } + function rDe(n) { + var e, t, i, r; + if (t = n.D != null ? n.D : n.B, e = ih(t, gu(91)), e != -1) { + i = (Fi(0, e, t.length), t.substr(0, e)), r = new Hl(); + do + r.a += "["; + while ((e = w4(t, 91, ++e)) != -1); + An(i, i3) ? r.a += "Z" : An(i, m8) ? r.a += "B" : An(i, GS) ? r.a += "C" : An(i, v8) ? r.a += "D" : An(i, k8) ? r.a += "F" : An(i, y8) ? r.a += "I" : An(i, j8) ? r.a += "J" : An(i, E8) ? r.a += "S" : (r.a += "L", r.a += "" + i, r.a += ";"); + try { + return null; + } catch (c) { + if (c = It(c), !D(c, 63)) + throw M(c); + } + } else if (ih(t, gu(46)) == -1) { + if (An(t, i3)) + return so; + if (An(t, m8)) + return Bu; + if (An(t, GS)) + return fs; + if (An(t, v8)) + return Ii; + if (An(t, k8)) + return cg; + if (An(t, y8)) + return ye; + if (An(t, j8)) + return Fa; + if (An(t, E8)) + return V2; + } + return null; + } + function cDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn; + for (n.e = e, f = cCe(e), X = new Z(), i = new C(f); i.a < i.c.c.length; ) { + for (t = u(E(i), 15), tn = new Z(), Kn(X.c, tn), h = new ni(), m = t.Kc(); m.Ob(); ) { + for (p = u(m.Pb(), 27), c = fy(n, p, !0, 0, 0), Kn(tn.c, c), k = p.i, j = p.j, g = (!p.n && (p.n = new q(Sr, p, 1, 7)), p.n), d = new ne(g); d.e != d.i.gc(); ) + l = u(ue(d), 135), r = fy(n, l, !1, k, j), Kn(tn.c, r); + for (_ = (!p.c && (p.c = new q(Qu, p, 9, 9)), p.c), I = new ne(_); I.e != I.i.gc(); ) + for (S = u(ue(I), 123), s = fy(n, S, !1, k, j), Kn(tn.c, s), O = S.i + k, N = S.j + j, g = (!S.n && (S.n = new q(Sr, S, 1, 7)), S.n), a = new ne(g); a.e != a.i.gc(); ) + l = u(ue(a), 135), r = fy(n, l, !1, O, N), Kn(tn.c, r); + Bi(h, SM(Eo(A(T(Oo, 1), Bn, 20, 0, [Al(p), cy(p)])))); + } + zMe(n, h, tn); + } + return n.f = new Wjn(X), Ur(n.f, e), n.f; + } + function uDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + for (d = new FW(new IG(n)); d.c != d.d.a.d; ) + for (a = JNn(d), f = u(a.d, 58), e = u(a.e, 58), s = f.Dh(), k = 0, N = (s.i == null && bh(s), s.i).length; k < N; ++k) + if (l = (c = (s.i == null && bh(s), s.i), k >= 0 && k < c.length ? c[k] : null), l.rk() && !l.sk()) { + if (D(l, 102)) + h = u(l, 19), !(h.Bb & yc) && (X = wr(h), !(X && X.Bb & yc)) && UPe(n, h, f, e); + else if (br(), u(l, 69).xk() && (t = (_ = l, u(_ ? u(e, 54).gi(_) : null, 160)), t)) + for (p = u(f.Mh(l), 160), i = t.gc(), j = 0, m = p.gc(); j < m; ++j) + if (g = p.Tl(j), D(g, 102)) { + if (O = p.Ul(j), r = Nf(n, O), r == null && O != null) { + if (I = u(g, 19), !n.b || I.Bb & yc || wr(I)) + continue; + r = O; + } + if (!t.Ol(g, r)) { + for (S = 0; S < i; ++S) + if (t.Tl(S) == g && x(t.Ul(S)) === x(r)) { + t.Ti(t.gc() - 1, S), --i; + break; + } + } + } else + t.Ol(p.Tl(j), p.Ul(j)); + } + } + function oDe(n, e, t) { + var i; + if (t.Ug("StretchWidth layering", 1), e.a.c.length == 0) { + t.Vg(); + return; + } + for (n.c = e, n.t = 0, n.u = 0, n.i = St, n.g = li, n.d = $(R(v(e, (cn(), Ws)))), A9e(n), NCe(n), LCe(n), Ike(n), O8e(n), n.i = y.Math.max(1, n.i), n.g = y.Math.max(1, n.g), n.d = n.d / n.i, n.f = n.g / n.i, n.s = H9e(n), i = new Nc(n.c), nn(n.c.b, i), n.r = T0(n.p), n.n = DM(n.k, n.k.length); n.r.c.length != 0; ) + n.o = J6e(n), !n.o || lFn(n) && n.b.a.gc() != 0 ? (iye(n, i), i = new Nc(n.c), nn(n.c.b, i), Bi(n.a, n.b), n.b.a.$b(), n.t = n.u, n.u = 0) : lFn(n) ? (n.c.b.c.length = 0, i = new Nc(n.c), nn(n.c.b, i), n.t = 0, n.u = 0, n.b.a.$b(), n.a.a.$b(), ++n.f, n.r = T0(n.p), n.n = DM(n.k, n.k.length)) : ($i(n.o, i), bu(n.r, n.o), fi(n.b, n.o), n.t = n.t - n.k[n.o.p] * n.d + n.j[n.o.p], n.u += n.e[n.o.p] * n.d); + e.a.c.length = 0, Yk(e.b), t.Vg(); + } + function sDe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (n.j = K(ye, _e, 28, n.g, 15, 1), n.o = new Z(), Gt(rc(new Tn(null, new In(n.e.b, 16)), new d3n()), new ikn(n)), n.a = K(so, Xh, 28, n.b, 16, 1), Lk(new Tn(null, new In(n.e.b, 16)), new ckn(n)), i = (d = new Z(), Gt(ut(rc(new Tn(null, new In(n.e.b, 16)), new w3n()), new rkn(n)), new zCn(n, d)), d), h = new C(i); h.a < h.c.c.length; ) + if (f = u(E(h), 515), !(f.c.length <= 1)) { + if (f.c.length == 2) { + zEe(f), HF((Ln(0, f.c.length), u(f.c[0], 18)).d.i) || nn(n.o, f); + continue; + } + if (!(sye(f) || Qje(f, new b3n()))) + for (l = new C(f), r = null; l.a < l.c.c.length; ) + e = u(E(l), 18), t = n.c[e.p], !r || l.a >= l.c.c.length ? a = TJ((Vn(), Vt), Mi) : a = TJ((Vn(), Mi), Mi), a *= 2, c = t.a.g, t.a.g = y.Math.max(c, c + (a - c)), s = t.b.g, t.b.g = y.Math.max(s, s + (a - s)), r = e; + } + } + function fDe(n) { + var e, t, i, r; + for (Gt(ut(new Tn(null, new In(n.a.b, 16)), new V2n()), new W2n()), Uke(n), Gt(ut(new Tn(null, new In(n.a.b, 16)), new J2n()), new Q2n()), n.c == (El(), F3) && (Gt(ut(rc(new Tn(null, new In(new qa(n.f), 1)), new Y2n()), new Z2n()), new y7n(n)), Gt(ut(_r(rc(rc(new Tn(null, new In(n.d.b, 16)), new npn()), new epn()), new tpn()), new ipn()), new E7n(n))), r = new V(St, St), e = new V(li, li), i = new C(n.a.b); i.a < i.c.c.length; ) + t = u(E(i), 60), r.a = y.Math.min(r.a, t.d.c), r.b = y.Math.min(r.b, t.d.d), e.a = y.Math.max(e.a, t.d.c + t.d.b), e.b = y.Math.max(e.b, t.d.d + t.d.a); + it(ff(n.d.c), HC(new V(r.a, r.b))), it(ff(n.d.f), mi(new V(e.a, e.b), r)), iTe(n, r, e), Hu(n.f), Hu(n.b), Hu(n.g), Hu(n.e), n.a.a.c.length = 0, n.a.b.c.length = 0, n.a = null, n.d = null; + } + function UA(n, e) { + var t; + if (n.e) + throw M(new Or((ll(u_), FB + u_.k + BB))); + if (!ble(n.a, e)) + throw M(new ec(iXn + e + rXn)); + if (e == n.d) + return n; + switch (t = n.d, n.d = e, t.g) { + case 0: + switch (e.g) { + case 2: + R0(n); + break; + case 1: + Z1(n), R0(n); + break; + case 4: + Hg(n), R0(n); + break; + case 3: + Hg(n), Z1(n), R0(n); + } + break; + case 2: + switch (e.g) { + case 1: + Z1(n), CF(n); + break; + case 4: + Hg(n), R0(n); + break; + case 3: + Hg(n), Z1(n), R0(n); + } + break; + case 1: + switch (e.g) { + case 2: + Z1(n), CF(n); + break; + case 4: + Z1(n), Hg(n), R0(n); + break; + case 3: + Z1(n), Hg(n), Z1(n), R0(n); + } + break; + case 4: + switch (e.g) { + case 2: + Hg(n), R0(n); + break; + case 1: + Hg(n), Z1(n), R0(n); + break; + case 3: + Z1(n), CF(n); + } + break; + case 3: + switch (e.g) { + case 2: + Z1(n), Hg(n), R0(n); + break; + case 1: + Z1(n), Hg(n), Z1(n), R0(n); + break; + case 4: + Z1(n), CF(n); + } + } + return n; + } + function Yg(n, e) { + var t; + if (n.d) + throw M(new Or((ll(S_), FB + S_.k + BB))); + if (!dle(n.a, e)) + throw M(new ec(iXn + e + rXn)); + if (e == n.c) + return n; + switch (t = n.c, n.c = e, t.g) { + case 0: + switch (e.g) { + case 2: + ld(n); + break; + case 1: + na(n), ld(n); + break; + case 4: + qg(n), ld(n); + break; + case 3: + qg(n), na(n), ld(n); + } + break; + case 2: + switch (e.g) { + case 1: + na(n), MF(n); + break; + case 4: + qg(n), ld(n); + break; + case 3: + qg(n), na(n), ld(n); + } + break; + case 1: + switch (e.g) { + case 2: + na(n), MF(n); + break; + case 4: + na(n), qg(n), ld(n); + break; + case 3: + na(n), qg(n), na(n), ld(n); + } + break; + case 4: + switch (e.g) { + case 2: + qg(n), ld(n); + break; + case 1: + qg(n), na(n), ld(n); + break; + case 3: + na(n), MF(n); + } + break; + case 3: + switch (e.g) { + case 2: + na(n), qg(n), ld(n); + break; + case 1: + na(n), qg(n), na(n), ld(n); + break; + case 4: + na(n), MF(n); + } + } + return n; + } + function GA(n, e) { + var t, i, r, c, s, f, h, l; + if (D(n.Eh(), 167) ? (GA(u(n.Eh(), 167), e), e.a += " > ") : e.a += "Root ", t = n.Dh().zb, An(t.substr(0, 3), "Elk") ? Re(e, (zn(3, t.length + 1), t.substr(3))) : e.a += "" + t, r = n.jh(), r) { + Re((e.a += " ", e), r); + return; + } + if (D(n, 366) && (l = u(n, 135).a, l)) { + Re((e.a += " ", e), l); + return; + } + for (s = new ne(n.kh()); s.e != s.i.gc(); ) + if (c = u(ue(s), 135), l = c.a, l) { + Re((e.a += " ", e), l); + return; + } + if (D(n, 326) && (i = u(n, 74), !i.b && (i.b = new Nn(he, i, 4, 7)), i.b.i != 0 && (!i.c && (i.c = new Nn(he, i, 5, 8)), i.c.i != 0))) { + for (e.a += " (", f = new kp((!i.b && (i.b = new Nn(he, i, 4, 7)), i.b)); f.e != f.i.gc(); ) + f.e > 0 && (e.a += ur), GA(u(ue(f), 167), e); + for (e.a += iR, h = new kp((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c)); h.e != h.i.gc(); ) + h.e > 0 && (e.a += ur), GA(u(ue(h), 167), e); + e.a += ")"; + } + } + function hDe(n, e, t) { + var i, r, c, s, f, h, l, a; + for (h = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); h.e != h.i.gc(); ) + for (f = u(ue(h), 27), r = new ie(ce(Al(f).a.Kc(), new En())); pe(r); ) { + if (i = u(fe(r), 74), !i.b && (i.b = new Nn(he, i, 4, 7)), !(i.b.i <= 1 && (!i.c && (i.c = new Nn(he, i, 5, 8)), i.c.i <= 1))) + throw M(new hp("Graph must not contain hyperedges.")); + if (!N5(i) && f != Gr(u(L((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c), 0), 84))) + for (l = new KAn(), Ur(l, i), U(l, (Q1(), y3), i), Qse(l, u(Kr(gr(t.f, f)), 153)), nfe(l, u(ee(t, Gr(u(L((!i.c && (i.c = new Nn(he, i, 5, 8)), i.c), 0), 84))), 153)), nn(e.c, l), s = new ne((!i.n && (i.n = new q(Sr, i, 1, 7)), i.n)); s.e != s.i.gc(); ) + c = u(ue(s), 135), a = new HDn(l, c.a), Ur(a, c), U(a, y3, c), a.e.a = y.Math.max(c.g, 1), a.e.b = y.Math.max(c.f, 1), Gen(a), nn(e.d, a); + } + } + function lDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + switch (t.Ug("Node promotion heuristic", 1), n.i = e, n.r = u(v(e, (cn(), ja)), 243), n.r != (ps(), pb) && n.r != Uw ? BDe(n) : hAe(n), a = u(v(n.i, uhn), 17).a, c = new Rgn(), n.r.g) { + case 2: + case 1: + Dm(n, c); + break; + case 3: + for (n.r = SI, Dm(n, c), h = 0, f = new C(n.b); f.a < f.c.c.length; ) + s = u(E(f), 17), h = y.Math.max(h, s.a); + h > n.k && (n.r = Sj, Dm(n, c)); + break; + case 4: + for (n.r = SI, Dm(n, c), l = 0, r = new C(n.c); r.a < r.c.c.length; ) + i = R(E(r)), l = y.Math.max(l, (Jn(i), i)); + l > n.n && (n.r = Pj, Dm(n, c)); + break; + case 6: + g = wi(y.Math.ceil(n.g.length * a / 100)), Dm(n, new f7n(g)); + break; + case 5: + d = wi(y.Math.ceil(n.e * a / 100)), Dm(n, new h7n(d)); + break; + case 8: + jzn(n, !0); + break; + case 9: + jzn(n, !1); + break; + default: + Dm(n, c); + } + n.r != pb && n.r != Uw ? NTe(n, e) : nSe(n, e), t.Vg(); + } + function aDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (d = n.b, a = new xi(d, 0), Rb(a, new Nc(n)), I = !1, s = 1; a.b < a.d.gc(); ) { + for (l = (oe(a.b < a.d.gc()), u(a.d.Xb(a.c = a.b++), 30)), k = (Ln(s, d.c.length), u(d.c[s], 30)), j = T0(l.a), S = j.c.length, m = new C(j); m.a < m.c.c.length; ) + g = u(E(m), 10), $i(g, k); + if (I) { + for (p = Qo(j).Kc(); p.Ob(); ) + for (g = u(p.Pb(), 10), c = new C(T0(ji(g))); c.a < c.c.c.length; ) + r = u(E(c), 18), U0(r, !0), U(n, (W(), kj), (_n(), !0)), i = pGn(n, r, S), t = u(v(g, ob), 313), O = u(sn(i, i.c.length - 1), 18), t.k = O.c.i, t.n = O, t.b = r.d.i, t.c = r; + I = !1; + } else + j.c.length != 0 && (e = (Ln(0, j.c.length), u(j.c[0], 10)), e.k == (Vn(), Gf) && (I = !0, s = -1)); + ++s; + } + for (f = new xi(n.b, 0); f.b < f.d.gc(); ) + h = (oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 30)), h.a.c.length == 0 && bo(f); + } + function dDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (d = new rtn(n), d2e(d, !(e == (ci(), us) || e == Wf)), a = d.a, g = new up(), r = (wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc])), s = 0, h = r.length; s < h; ++s) + t = r[s], l = jL(a, bc, t), l && (g.d = y.Math.max(g.d, l.jf())); + for (i = A(T(Sw, 1), G, 237, 0, [bc, Jc, wc]), c = 0, f = i.length; c < f; ++c) + t = i[c], l = jL(a, wc, t), l && (g.a = y.Math.max(g.a, l.jf())); + for (k = A(T(Sw, 1), G, 237, 0, [bc, Jc, wc]), S = 0, O = k.length; S < O; ++S) + p = k[S], l = jL(a, p, bc), l && (g.b = y.Math.max(g.b, l.kf())); + for (m = A(T(Sw, 1), G, 237, 0, [bc, Jc, wc]), j = 0, I = m.length; j < I; ++j) + p = m[j], l = jL(a, p, wc), l && (g.c = y.Math.max(g.c, l.kf())); + return g.d > 0 && (g.d += a.n.d, g.d += a.d), g.a > 0 && (g.a += a.n.a, g.a += a.d), g.b > 0 && (g.b += a.n.b, g.b += a.d), g.c > 0 && (g.c += a.n.c, g.c += a.d), g; + } + function KGn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + for (g = t.d, d = t.c, c = new V(t.f.a + t.d.b + t.d.c, t.f.b + t.d.d + t.d.a), s = c.b, l = new C(n.a); l.a < l.c.c.length; ) + if (f = u(E(l), 10), f.k == (Vn(), Zt)) { + switch (i = u(v(f, (W(), gc)), 64), r = u(v(f, ifn), 8), a = f.n, i.g) { + case 2: + a.a = t.f.a + g.c - d.a; + break; + case 4: + a.a = -d.a - g.b; + } + switch (m = 0, i.g) { + case 2: + case 4: + e == (Di(), tl) ? (p = $(R(v(f, fb))), a.b = c.b * p - u(v(f, (cn(), bb)), 8).b, m = a.b + r.b, IT(f, !1, !0)) : e == Uc && (a.b = $(R(v(f, fb))) - u(v(f, (cn(), bb)), 8).b, m = a.b + r.b, IT(f, !1, !0)); + } + s = y.Math.max(s, m); + } + for (t.f.b += s - c.b, h = new C(n.a); h.a < h.c.c.length; ) + if (f = u(E(h), 10), f.k == (Vn(), Zt)) + switch (i = u(v(f, (W(), gc)), 64), a = f.n, i.g) { + case 1: + a.b = -d.b - g.d; + break; + case 3: + a.b = t.f.b + g.a - d.b; + } + } + function bDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + if (a = u(u(ot(n.r, e), 21), 87), a.gc() <= 2 || e == (en(), Zn) || e == (en(), Wn)) { + uzn(n, e); + return; + } + for (k = n.u.Hc((zu(), B3)), t = e == (en(), Xn) ? (N0(), rj) : (N0(), ij), S = e == Xn ? (wu(), Xs) : (wu(), kf), i = yz(FV(t), n.s), j = e == Xn ? St : li, l = a.Kc(); l.Ob(); ) + f = u(l.Pb(), 117), !(!f.c || f.c.d.c.length <= 0) && (m = f.b.Mf(), p = f.e, d = f.c, g = d.i, g.b = (c = d.n, d.e.a + c.b + c.c), g.a = (s = d.n, d.e.b + s.d + s.a), k ? (g.c = p.a - (r = d.n, d.e.a + r.b + r.c) - n.s, k = !1) : g.c = p.a + m.a + n.s, G7(S, Ftn), d.f = S, df(d, (Uu(), zs)), nn(i.d, new ZL(g, SY(i, g))), j = e == Xn ? y.Math.min(j, p.b) : y.Math.max(j, p.b + f.b.Mf().b)); + for (j += e == Xn ? -n.t : n.t, XY((i.e = j, i)), h = a.Kc(); h.Ob(); ) + f = u(h.Pb(), 117), !(!f.c || f.c.d.c.length <= 0) && (g = f.c.i, g.c -= f.e.a, g.d -= f.e.b); + } + function _Gn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (r = new Z(), k = new C(e.a); k.a < k.c.c.length; ) + if (m = u(E(k), 10), p = m.e, p && (i = _Gn(n, p, m), hi(r, i), SOe(n, p, m), u(v(p, (W(), qc)), 21).Hc((mr(), cs)))) + for (I = u(v(m, (cn(), Ut)), 101), g = u(v(m, _w), 181).Hc((zu(), Fl)), S = new C(m.j); S.a < S.c.c.length; ) + for (j = u(E(S), 12), c = u(ee(n.b, j), 10), c || (c = my(j, I, j.j, -(j.e.c.length - j.g.c.length), null, new Li(), j.o, u(v(p, Do), 88), p), U(c, st, j), Ve(n.b, j, c), nn(p.a, c)), s = u(sn(c.j, 0), 12), a = new C(j.f); a.a < a.c.c.length; ) + l = u(E(a), 72), f = new Zjn(), f.o.a = l.o.a, f.o.b = l.o.b, nn(s.f, f), g || (O = j.j, d = 0, K6(u(v(m, _w), 21)) && (d = Nnn(l.n, l.o, j.o, 0, O)), I == (Di(), Qf) || (en(), fu).Hc(O) ? f.o.a = d : f.o.b = d); + return h = new Z(), AOe(n, e, t, r, h), t && zIe(n, e, t, h), h; + } + function itn(n, e, t) { + var i, r, c, s, f, h, l, a, d; + if (!n.c[e.c.p][e.p].e) { + for (n.c[e.c.p][e.p].e = !0, n.c[e.c.p][e.p].b = 0, n.c[e.c.p][e.p].d = 0, n.c[e.c.p][e.p].a = null, a = new C(e.j); a.a < a.c.c.length; ) + for (l = u(E(a), 12), d = t ? new e4(l) : new ip(l), h = d.Kc(); h.Ob(); ) + f = u(h.Pb(), 12), s = f.i, s.c == e.c ? s != e && (itn(n, s, t), n.c[e.c.p][e.p].b += n.c[s.c.p][s.p].b, n.c[e.c.p][e.p].d += n.c[s.c.p][s.p].d) : (n.c[e.c.p][e.p].d += n.g[f.p], ++n.c[e.c.p][e.p].b); + if (c = u(v(e, (W(), Zsn)), 15), c) + for (r = c.Kc(); r.Ob(); ) + i = u(r.Pb(), 10), e.c == i.c && (itn(n, i, t), n.c[e.c.p][e.p].b += n.c[i.c.p][i.p].b, n.c[e.c.p][e.p].d += n.c[i.c.p][i.p].d); + n.c[e.c.p][e.p].b > 0 && (n.c[e.c.p][e.p].d += to(n.i, 24) * Iy * 0.07000000029802322 - 0.03500000014901161, n.c[e.c.p][e.p].a = n.c[e.c.p][e.p].d / n.c[e.c.p][e.p].b); + } + } + function wDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (m = new C(n); m.a < m.c.c.length; ) { + for (p = u(E(m), 10), zl(p.n), zl(p.o), GJ(p.f), nUn(p), NAe(p), j = new C(p.j); j.a < j.c.c.length; ) { + for (k = u(E(j), 12), zl(k.n), zl(k.a), zl(k.o), gi(k, LRn(k.j)), c = u(v(k, (cn(), v1)), 17), c && U(k, v1, Y(-c.a)), r = new C(k.g); r.a < r.c.c.length; ) { + for (i = u(E(r), 18), t = ge(i.a, 0); t.b != t.d.c; ) + e = u(be(t), 8), zl(e); + if (h = u(v(i, Fr), 75), h) + for (f = ge(h, 0); f.b != f.d.c; ) + s = u(be(f), 8), zl(s); + for (d = new C(i.b); d.a < d.c.c.length; ) + l = u(E(d), 72), zl(l.n), zl(l.o); + } + for (g = new C(k.f); g.a < g.c.c.length; ) + l = u(E(g), 72), zl(l.n), zl(l.o); + } + for (p.k == (Vn(), Zt) && (U(p, (W(), gc), LRn(u(v(p, gc), 64))), qTe(p)), a = new C(p.b); a.a < a.c.c.length; ) + l = u(E(a), 72), nUn(l), zl(l.o), zl(l.n); + } + } + function gDe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + Fn = ee(n.e, i), Fn == null && (Fn = new sp(), p = u(Fn, 190), I = e + "_s", O = I + r, g = new qb(O), bf(p, Eh, g)), kn = u(Fn, 190), Ip(t, kn), te = new sp(), nd(te, "x", i.j), nd(te, "y", i.k), bf(kn, vWn, te), tn = new sp(), nd(tn, "x", i.b), nd(tn, "y", i.c), bf(kn, "endPoint", tn), d = Z9((!i.a && (i.a = new ti(xo, i, 5)), i.a)), m = !d, m && (X = new _a(), c = new tyn(X), qi((!i.a && (i.a = new ti(xo, i, 5)), i.a), c), bf(kn, RS, X)), h = Sx(i), N = !!h, N && cnn(n.a, kn, Ocn, oF(n, Sx(i))), S = Px(i), _ = !!S, _ && cnn(n.a, kn, Icn, oF(n, Px(i))), l = (!i.e && (i.e = new Nn(Mt, i, 10, 9)), i.e).i == 0, k = !l, k && (yn = new _a(), s = new SMn(n, yn), qi((!i.e && (i.e = new Nn(Mt, i, 10, 9)), i.e), s), bf(kn, Lcn, yn)), a = (!i.g && (i.g = new Nn(Mt, i, 9, 10)), i.g).i == 0, j = !a, j && (Rn = new _a(), f = new PMn(n, Rn), qi((!i.g && (i.g = new Nn(Mt, i, 9, 10)), i.g), f), bf(kn, Dcn, Rn)); + } + function pDe(n) { + Bb(); + var e, t, i, r, c, s, f; + for (i = n.f.n, s = LW(n.r).a.nc(); s.Ob(); ) { + if (c = u(s.Pb(), 117), r = 0, c.b.pf((He(), oo)) && (r = $(R(c.b.of(oo))), r < 0)) + switch (c.b.ag().g) { + case 1: + i.d = y.Math.max(i.d, -r); + break; + case 3: + i.a = y.Math.max(i.a, -r); + break; + case 2: + i.c = y.Math.max(i.c, -r); + break; + case 4: + i.b = y.Math.max(i.b, -r); + } + if (K6(n.u)) + switch (e = jve(c.b, r), f = !u(n.e.of(Ta), 181).Hc((io(), cE)), t = !1, c.b.ag().g) { + case 1: + t = e > i.d, i.d = y.Math.max(i.d, e), f && t && (i.d = y.Math.max(i.d, i.a), i.a = i.d + r); + break; + case 3: + t = e > i.a, i.a = y.Math.max(i.a, e), f && t && (i.a = y.Math.max(i.a, i.d), i.d = i.a + r); + break; + case 2: + t = e > i.c, i.c = y.Math.max(i.c, e), f && t && (i.c = y.Math.max(i.b, i.c), i.b = i.c + r); + break; + case 4: + t = e > i.b, i.b = y.Math.max(i.b, e), f && t && (i.b = y.Math.max(i.b, i.c), i.c = i.b + r); + } + } + } + function HGn(n, e) { + var t, i, r, c, s, f, h, l, a; + return l = "", e.length == 0 ? n.ne(ytn, uB, -1, -1) : (a = fw(e), An(a.substr(0, 3), "at ") && (a = (zn(3, a.length + 1), a.substr(3))), a = a.replace(/\[.*?\]/g, ""), s = a.indexOf("("), s == -1 ? (s = a.indexOf("@"), s == -1 ? (l = a, a = "") : (l = fw((zn(s + 1, a.length + 1), a.substr(s + 1))), a = fw((Fi(0, s, a.length), a.substr(0, s))))) : (t = a.indexOf(")", s), l = (Fi(s + 1, t, a.length), a.substr(s + 1, t - (s + 1))), a = fw((Fi(0, s, a.length), a.substr(0, s)))), s = ih(a, gu(46)), s != -1 && (a = (zn(s + 1, a.length + 1), a.substr(s + 1))), (a.length == 0 || An(a, "Anonymous function")) && (a = uB), f = FC(l, gu(58)), r = SV(l, gu(58), f - 1), h = -1, i = -1, c = ytn, f != -1 && r != -1 && (c = (Fi(0, r, l.length), l.substr(0, r)), h = cAn((Fi(r + 1, f, l.length), l.substr(r + 1, f - (r + 1)))), i = cAn((zn(f + 1, l.length + 1), l.substr(f + 1)))), n.ne(c, a, h, i)); + } + function mDe(n) { + var e, t, i, r, c, s, f, h, l, a, d; + for (l = new C(n); l.a < l.c.c.length; ) { + switch (h = u(E(l), 10), s = u(v(h, (cn(), su)), 171), c = null, s.g) { + case 1: + case 2: + c = (hd(), m2); + break; + case 3: + case 4: + c = (hd(), mv); + } + if (c) + U(h, (W(), rI), (hd(), m2)), c == mv ? IA(h, s, (pr(), Vu)) : c == m2 && IA(h, s, (pr(), Qc)); + else if (mg(u(v(h, Ut), 101)) && h.j.c.length != 0) { + for (e = !0, d = new C(h.j); d.a < d.c.c.length; ) { + if (a = u(E(d), 12), !(a.j == (en(), Zn) && a.e.c.length - a.g.c.length > 0 || a.j == Wn && a.e.c.length - a.g.c.length < 0)) { + e = !1; + break; + } + for (r = new C(a.g); r.a < r.c.c.length; ) + if (t = u(E(r), 18), f = u(v(t.d.i, su), 171), f == (Yo(), H8) || f == xw) { + e = !1; + break; + } + for (i = new C(a.e); i.a < i.c.c.length; ) + if (t = u(E(i), 18), f = u(v(t.c.i, su), 171), f == (Yo(), _8) || f == ya) { + e = !1; + break; + } + } + e && IA(h, s, (pr(), Q8)); + } + } + } + function vDe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + for (X = 0, p = 0, d = new C(e.e); d.a < d.c.c.length; ) { + for (a = u(E(d), 10), g = 0, f = 0, h = t ? u(v(a, OI), 17).a : Wi, S = i ? u(v(a, DI), 17).a : Wi, l = y.Math.max(h, S), O = new C(a.j); O.a < O.c.c.length; ) { + if (I = u(E(O), 12), N = a.n.b + I.n.b + I.a.b, i) + for (s = new C(I.g); s.a < s.c.c.length; ) + c = u(E(s), 18), k = c.d, m = k.i, e != n.a[m.p] && (j = y.Math.max(u(v(m, OI), 17).a, u(v(m, DI), 17).a), _ = u(v(c, (cn(), I3)), 17).a, _ >= l && _ >= j && (g += m.n.b + k.n.b + k.a.b - N, ++f)); + if (t) + for (s = new C(I.e); s.a < s.c.c.length; ) + c = u(E(s), 18), k = c.c, m = k.i, e != n.a[m.p] && (j = y.Math.max(u(v(m, OI), 17).a, u(v(m, DI), 17).a), _ = u(v(c, (cn(), I3)), 17).a, _ >= l && _ >= j && (g += m.n.b + k.n.b + k.a.b - N, ++f)); + } + f > 0 && (X += g / f, ++p); + } + p > 0 ? (e.a = r * X / p, e.g = p) : (e.a = 0, e.g = 0); + } + function kDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn; + for (c = n.f.b, g = c.a, a = c.b, m = n.e.g, p = n.e.f, kg(n.e, c.a, c.b), X = g / m, tn = a / p, l = new ne(jM(n.e)); l.e != l.i.gc(); ) + h = u(ue(l), 135), tu(h, h.i * X), iu(h, h.j * tn); + for (I = new ne(mN(n.e)); I.e != I.i.gc(); ) + S = u(ue(I), 123), N = S.i, _ = S.j, N > 0 && tu(S, N * X), _ > 0 && iu(S, _ * tn); + for (f5(n.b, new Gbn()), e = new Z(), f = new sd(new Ua(n.c).a); f.b; ) + s = L0(f), i = u(s.ld(), 74), t = u(s.md(), 407).a, r = Xg(i, !1, !1), d = $Kn(Kh(i), Qk(r), t), dy(d, r), O = VKn(i), O && qr(e, O, 0) == -1 && (Kn(e.c, O), EIn(O, (oe(d.b != 0), u(d.a.a.c, 8)), t)); + for (j = new sd(new Ua(n.d).a); j.b; ) + k = L0(j), i = u(k.ld(), 74), t = u(k.md(), 407).a, r = Xg(i, !1, !1), d = $Kn(ra(i), Sk(Qk(r)), t), d = Sk(d), dy(d, r), O = WKn(i), O && qr(e, O, 0) == -1 && (Kn(e.c, O), EIn(O, (oe(d.b != 0), u(d.c.b.c, 8)), t)); + } + function qGn(n, e, t, i) { + var r, c, s, f, h; + return f = new rtn(e), lTe(f, i), r = !0, n && n.pf((He(), _d)) && (c = u(n.of((He(), _d)), 88), r = c == (ci(), Jf) || c == Br || c == Xr), Hqn(f, !1), eu(f.e.Rf(), new $V(f, !1, r)), ON(f, f.f, (wf(), bc), (en(), Xn)), ON(f, f.f, wc, ae), ON(f, f.g, bc, Wn), ON(f, f.g, wc, Zn), pRn(f, Xn), pRn(f, ae), kIn(f, Zn), kIn(f, Wn), Bb(), s = f.A.Hc((go(), Qw)) && f.B.Hc((io(), uE)) ? $Bn(f) : null, s && khe(f.a, s), pDe(f), m7e(f), v7e(f), UOe(f), mSe(f), G7e(f), kx(f, Xn), kx(f, ae), WAe(f), mIe(f), t && (Z5e(f), z7e(f), kx(f, Zn), kx(f, Wn), h = f.B.Hc((io(), P9)), N_n(f, h, Xn), N_n(f, h, ae), $_n(f, h, Zn), $_n(f, h, Wn), Gt(new Tn(null, new In(new ol(f.i), 0)), new bbn()), Gt(ut(new Tn(null, LW(f.r).a.oc()), new wbn()), new gbn()), uye(f), f.e.Pf(f.o), Gt(new Tn(null, LW(f.r).a.oc()), new pbn())), f.o; + } + function yDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (l = St, i = new C(n.a.b); i.a < i.c.c.length; ) + e = u(E(i), 86), l = y.Math.min(l, e.d.f.g.c + e.e.a); + for (p = new Ct(), s = new C(n.a.a); s.a < s.c.c.length; ) + c = u(E(s), 194), c.i = l, c.e == 0 && Kt(p, c, p.c.b, p.c); + for (; p.b != 0; ) { + for (c = u(p.b == 0 ? null : (oe(p.b != 0), Xo(p, p.a.a)), 194), r = c.f.g.c, g = c.a.a.ec().Kc(); g.Ob(); ) + a = u(g.Pb(), 86), k = c.i + a.e.a, a.d.g || a.g.c < k ? a.o = k : a.o = a.g.c; + for (r -= c.f.o, c.b += r, n.c == (ci(), Xr) || n.c == Wf ? c.c += r : c.c -= r, d = c.a.a.ec().Kc(); d.Ob(); ) + for (a = u(d.Pb(), 86), h = a.f.Kc(); h.Ob(); ) + f = u(h.Pb(), 86), hl(n.c) ? m = n.f.yf(a, f) : m = n.f.zf(a, f), f.d.i = y.Math.max(f.d.i, a.o + a.g.b + m - f.e.a), f.k || (f.d.i = y.Math.max(f.d.i, f.g.c - f.e.a)), --f.d.e, f.d.e == 0 && Fe(p, f.d); + } + for (t = new C(n.a.b); t.a < t.c.c.length; ) + e = u(E(t), 86), e.g.c = e.o; + } + function jDe(n) { + var e, t, i, r, c, s, f, h; + switch (f = n.b, e = n.a, u(v(n, (aA(), Gun)), 435).g) { + case 0: + Yt(f, new Te(new Sbn())); + break; + case 1: + default: + Yt(f, new Te(new Pbn())); + } + switch (u(v(n, qun), 436).g) { + case 1: + Yt(f, new _U()), Yt(f, new Ibn()), Yt(f, new jbn()); + break; + case 0: + default: + Yt(f, new _U()), Yt(f, new Tbn()); + } + switch (u(v(n, Xun), 257).g) { + case 0: + h = new Dbn(); + break; + case 1: + h = new $O(); + break; + case 2: + h = new vE(); + break; + case 3: + h = new NO(); + break; + case 5: + h = new n4(new vE()); + break; + case 4: + h = new n4(new $O()); + break; + case 7: + h = new zz(new n4(new $O()), new n4(new vE())); + break; + case 8: + h = new zz(new n4(new NO()), new n4(new vE())); + break; + case 6: + default: + h = new n4(new NO()); + } + for (s = new C(f); s.a < s.c.c.length; ) { + for (c = u(E(s), 176), i = 0, r = 0, t = new bi(Y(i), Y(r)); iPe(e, c, i, r); ) + t = u(h.Ve(t, c), 42), i = u(t.a, 17).a, r = u(t.b, 17).a; + ZAe(e, c, i, r); + } + } + function UGn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + for (t.Ug(mVn, 1), g = (pt(), iq), n.a == (b5(), BI) && (g = vln), a = 0, Dn(), e.jd(new tD(g)), c = e.gc(), f = e.fd(e.gc()), l = !0; l && f.Sb(); ) + I = u(f.Ub(), 40), u(v(I, g), 17).a == 0 ? --c : l = !1; + if (X = e.kd(0, c), s = new $L(X), X = e.kd(c, e.gc()), h = new $L(X), s.b == 0) + for (k = ge(h, 0); k.b != k.d.c; ) + m = u(be(k), 40), U(m, o9, Y(a++)); + else + for (d = s.b, _ = ge(s, 0); _.b != _.d.c; ) { + for (N = u(be(_), 40), U(N, o9, Y(a++)), i = F$(N), UGn(n, i, t.eh(1 / d | 0)), ud(i, UW(new tD(o9))), p = new Ct(), O = ge(i, 0); O.b != O.d.c; ) + for (I = u(be(O), 40), S = ge(N.d, 0); S.b != S.d.c; ) + j = u(be(S), 65), j.c == I && Kt(p, j, p.c.b, p.c); + for (vo(N.d), Bi(N.d, p), f = ge(h, h.b), r = N.d.b, l = !0; 0 < r && l && f.Sb(); ) + I = u(f.Ub(), 40), u(v(I, g), 17).a == 0 ? (U(I, o9, Y(a++)), --r, f.Qb()) : l = !1; + } + t.Vg(); + } + function EDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + for (d = $(R(z(n, (oa(), jq)))), on(un(z(n, n1n))) && (a = u(z(n, (Tg(), D2)), 27), c = u(L(GW(u(L((!a.e && (a.e = new Nn(Wt, a, 7, 4)), a.e), (!a.e && (a.e = new Nn(Wt, a, 7, 4)), a.e).i - 1), 74)), 0), 27), i = u(L(GW(u(L((!a.e && (a.e = new Nn(Wt, a, 7, 4)), a.e), 0), 74)), 0), 27), s = new V(c.i + c.g / 2, c.j + c.f / 2), r = new V(i.i + i.g / 2, i.j + i.f / 2), t = d, t <= 0 && (t += Cd), g = y.Math.acos((s.a * r.a + s.b * r.b) / (y.Math.sqrt(s.a * s.a + s.b * s.b) * y.Math.sqrt(r.a * r.a + r.b * r.b))), g <= 0 && (g += Cd), e = y.Math.atan2(s.b, s.a), e <= 0 && (e += Cd), d = Arn - (e - t + g / 2)), h = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); h.e != h.i.gc(); ) + f = u(ue(h), 27), l = new V(f.i + f.g / 2, f.j + f.f / 2), p = l.a * y.Math.cos(d) - l.b * y.Math.sin(d), l.b = l.a * y.Math.sin(d) + l.b * y.Math.cos(d), l.a = p, Ro(f, l.a - f.g / 2, l.b - f.f / 2); + } + function CDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (e.Ug("Inverted port preprocessing", 1), a = n.b, l = new xi(a, 0), t = null, O = new Z(); l.b < l.d.gc(); ) { + for (I = t, t = (oe(l.b < l.d.gc()), u(l.d.Xb(l.c = l.b++), 30)), p = new C(O); p.a < p.c.c.length; ) + d = u(E(p), 10), $i(d, I); + for (O.c.length = 0, m = new C(t.a); m.a < m.c.c.length; ) + if (d = u(E(m), 10), d.k == (Vn(), Vt) && mg(u(v(d, (cn(), Ut)), 101))) { + for (S = ken(d, (pr(), Vu), (en(), Zn)).Kc(); S.Ob(); ) + for (k = u(S.Pb(), 12), h = k.e, f = u(Ff(h, K(O_, rR, 18, h.c.length, 0, 1)), 483), r = f, c = 0, s = r.length; c < s; ++c) + i = r[c], XPe(n, k, i, O); + for (j = ken(d, Qc, Wn).Kc(); j.Ob(); ) + for (k = u(j.Pb(), 12), h = k.g, f = u(Ff(h, K(O_, rR, 18, h.c.length, 0, 1)), 483), r = f, c = 0, s = r.length; c < s; ++c) + i = r[c], zPe(n, k, i, O); + } + } + for (g = new C(O); g.a < g.c.c.length; ) + d = u(E(g), 10), $i(d, t); + e.Vg(); + } + function JF(n, e, t, i, r, c, s) { + var f, h, l, a, d, g, p, m, k, j, S, I, O; + for (g = null, i == (M0(), Ca) ? g = e : i == I2 && (g = t), k = g.a.ec().Kc(); k.Ob(); ) { + for (m = u(k.Pb(), 12), j = cc(A(T(Ei, 1), J, 8, 0, [m.i.n, m.n, m.a])).b, O = new ni(), f = new ni(), l = new Df(m.b); tc(l.a) || tc(l.b); ) + if (h = u(tc(l.a) ? E(l.a) : E(l.b), 18), on(un(v(h, (W(), zf)))) == r && qr(c, h, 0) != -1) { + if (h.d == m ? S = h.c : S = h.d, I = cc(A(T(Ei, 1), J, 8, 0, [S.i.n, S.n, S.a])).b, y.Math.abs(I - j) < 0.2) + continue; + I < j ? e.a._b(S) ? fi(O, new bi(Ca, h)) : fi(O, new bi(I2, h)) : e.a._b(S) ? fi(f, new bi(Ca, h)) : fi(f, new bi(I2, h)); + } + if (O.a.gc() > 1) + for (p = new Wen(m, O, i), qi(O, new ZCn(n, p)), Kn(s.c, p), d = O.a.ec().Kc(); d.Ob(); ) + a = u(d.Pb(), 42), bu(c, a.b); + if (f.a.gc() > 1) + for (p = new Wen(m, f, i), qi(f, new nMn(n, p)), Kn(s.c, p), d = f.a.ec().Kc(); d.Ob(); ) + a = u(d.Pb(), 42), bu(c, a.b); + } + } + function MDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + if (k = n.n, j = n.o, g = n.d, d = $(R(rw(n, (cn(), PH)))), e) { + for (a = d * (e.gc() - 1), p = 0, h = e.Kc(); h.Ob(); ) + s = u(h.Pb(), 10), a += s.o.a, p = y.Math.max(p, s.o.b); + for (S = k.a - (a - j.a) / 2, c = k.b - g.d + p, i = j.a / (e.gc() + 1), r = i, f = e.Kc(); f.Ob(); ) + s = u(f.Pb(), 10), s.n.a = S, s.n.b = c - s.o.b, S += s.o.a + d, l = YHn(s), l.n.a = s.o.a / 2 - l.a.a, l.n.b = s.o.b, m = u(v(s, (W(), tI)), 12), m.e.c.length + m.g.c.length == 1 && (m.n.a = r - m.a.a, m.n.b = 0, ic(m, n)), r += i; + } + if (t) { + for (a = d * (t.gc() - 1), p = 0, h = t.Kc(); h.Ob(); ) + s = u(h.Pb(), 10), a += s.o.a, p = y.Math.max(p, s.o.b); + for (S = k.a - (a - j.a) / 2, c = k.b + j.b + g.a - p, i = j.a / (t.gc() + 1), r = i, f = t.Kc(); f.Ob(); ) + s = u(f.Pb(), 10), s.n.a = S, s.n.b = c, S += s.o.a + d, l = YHn(s), l.n.a = s.o.a / 2 - l.a.a, l.n.b = 0, m = u(v(s, (W(), tI)), 12), m.e.c.length + m.g.c.length == 1 && (m.n.a = r - m.a.a, m.n.b = j.b, ic(m, n)), r += i; + } + } + function TDe(n, e) { + var t, i, r, c, s, f; + if (u(v(e, (W(), qc)), 21).Hc((mr(), cs))) { + for (f = new C(e.a); f.a < f.c.c.length; ) + c = u(E(f), 10), c.k == (Vn(), Vt) && (r = u(v(c, (cn(), pI)), 140), n.c = y.Math.min(n.c, c.n.a - r.b), n.a = y.Math.max(n.a, c.n.a + c.o.a + r.c), n.d = y.Math.min(n.d, c.n.b - r.d), n.b = y.Math.max(n.b, c.n.b + c.o.b + r.a)); + for (s = new C(e.a); s.a < s.c.c.length; ) + if (c = u(E(s), 10), c.k != (Vn(), Vt)) + switch (c.k.g) { + case 2: + if (i = u(v(c, (cn(), su)), 171), i == (Yo(), ya)) { + c.n.a = n.c - 10, iKn(c, new vgn()).Jb(new n7n(c)); + break; + } + if (i == xw) { + c.n.a = n.a + 10, iKn(c, new kgn()).Jb(new e7n(c)); + break; + } + if (t = u(v(c, Od), 311), t == (vl(), k2)) { + bGn(c).Jb(new t7n(c)), c.n.b = n.d - 10; + break; + } + if (t == E3) { + bGn(c).Jb(new i7n(c)), c.n.b = n.b + 10; + break; + } + break; + default: + throw M(new Gn("The node type " + c.k + " is not supported by the " + yNe)); + } + } + } + function ADe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j; + for (h = new V(i.i + i.g / 2, i.j + i.f / 2), p = lGn(i), m = u(z(e, (cn(), Ut)), 101), j = u(z(i, Mv), 64), OMn(dRn(i), Kw) || (i.i == 0 && i.j == 0 ? k = 0 : k = _ye(i, j), ht(i, Kw, k)), l = new V(e.g, e.f), r = my(i, m, j, p, l, h, new V(i.g, i.f), u(v(t, Do), 88), t), U(r, (W(), st), i), c = u(sn(r.j, 0), 12), efe(c, GSe(i)), U(r, _w, (zu(), jn(Ia))), d = u(z(e, _w), 181).Hc(Fl), f = new ne((!i.n && (i.n = new q(Sr, i, 1, 7)), i.n)); f.e != f.i.gc(); ) + if (s = u(ue(f), 135), !on(un(z(s, Fd))) && s.a && (g = ex(s), nn(c.f, g), !d)) + switch (a = 0, K6(u(z(e, _w), 21)) && (a = Nnn(new V(s.i, s.j), new V(s.g, s.f), new V(i.g, i.f), 0, j)), j.g) { + case 2: + case 4: + g.o.a = a; + break; + case 1: + case 3: + g.o.b = a; + } + U(r, Av, R(z(At(e), Av))), U(r, Sv, R(z(At(e), Sv))), U(r, qw, R(z(At(e), qw))), nn(t.a, r), Ve(n.a, i, r); + } + function SDe(n, e, t, i, r, c) { + var s, f, h, l, a, d; + for (l = new Ic(), Ur(l, e), gi(l, u(z(e, (cn(), Mv)), 64)), U(l, (W(), st), e), ic(l, t), d = l.o, d.a = e.g, d.b = e.f, a = l.n, a.a = e.i, a.b = e.j, Ve(n.a, e, l), s = Og(_r(rc(new Tn(null, (!e.e && (e.e = new Nn(Wt, e, 7, 4)), new In(e.e, 16))), new Cwn()), new jwn()), new G9n(e)), s || (s = Og(_r(rc(new Tn(null, (!e.d && (e.d = new Nn(Wt, e, 8, 5)), new In(e.d, 16))), new Mwn()), new Ewn()), new z9n(e))), s || (s = Og(new Tn(null, (!e.e && (e.e = new Nn(Wt, e, 7, 4)), new In(e.e, 16))), new Twn())), U(l, yj, (_n(), !!s)), VIe(l, c, r, u(z(e, bb), 8)), h = new ne((!e.n && (e.n = new q(Sr, e, 1, 7)), e.n)); h.e != h.i.gc(); ) + f = u(ue(h), 135), !on(un(z(f, Fd))) && f.a && nn(l.f, ex(f)); + switch (r.g) { + case 2: + case 1: + (l.j == (en(), Xn) || l.j == ae) && i.Fc((mr(), v2)); + break; + case 4: + case 3: + (l.j == (en(), Zn) || l.j == Wn) && i.Fc((mr(), v2)); + } + return l; + } + function PDe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (O = 0, m = 0, p = 0, g = 1, I = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); I.e != I.i.gc(); ) + j = u(ue(I), 27), g += wl(new ie(ce(Al(j).a.Kc(), new En()))), yn = j.g, m = y.Math.max(m, yn), d = j.f, p = y.Math.max(p, d), O += yn * d; + for (k = (!n.a && (n.a = new q(Ye, n, 10, 11)), n.a).i, s = O + 2 * i * i * g * k, c = y.Math.sqrt(s), h = y.Math.max(c * t, m), f = y.Math.max(c / t, p), S = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); S.e != S.i.gc(); ) + j = u(ue(S), 27), kn = r.b + (to(e, 26) * J5 + to(e, 27) * Q5) * (h - j.g), Fn = r.b + (to(e, 26) * J5 + to(e, 27) * Q5) * (f - j.f), tu(j, kn), iu(j, Fn); + for (tn = h + (r.b + r.c), X = f + (r.d + r.a), _ = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); _.e != _.i.gc(); ) + for (N = u(ue(_), 27), a = new ie(ce(Al(N).a.Kc(), new En())); pe(a); ) + l = u(fe(a), 74), N5(l) || NLe(l, e, tn, X); + tn += r.b + r.c, X += r.d + r.a, G0(n, tn, X, !1, !0); + } + function rtn(n) { + var e; + if (this.r = sge(new abn(), new dbn()), this.b = new y5(u(Se(lr), 297)), this.p = new y5(u(Se(lr), 297)), this.i = new y5(u(Se(kYn), 297)), this.e = n, this.o = new rr(n.Mf()), this.D = n.Yf() || on(un(n.of((He(), Xj)))), this.A = u(n.of((He(), Hd)), 21), this.B = u(n.of(Ta), 21), this.q = u(n.of(v9), 101), this.u = u(n.of(Ww), 21), !Jye(this.u)) + throw M(new _l("Invalid port label placement: " + this.u)); + if (this.v = on(un(n.of(Han))), this.j = u(n.of(K2), 21), !MMe(this.j)) + throw M(new _l("Invalid node label placement: " + this.j)); + this.n = u(S5(n, Pan), 107), this.k = $(R(S5(n, iO))), this.d = $(R(S5(n, Xan))), this.w = $(R(S5(n, Yan))), this.s = $(R(S5(n, Van))), this.t = $(R(S5(n, Wan))), this.C = u(S5(n, Jan), 140), this.c = 2 * this.d, e = !this.B.Hc((io(), cE)), this.f = new E5(0, e, 0), this.g = new E5(1, e, 0), mD(this.f, (wf(), Jc), this.g); + } + function IDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + for (e.Ug("Comment pre-processing", 1), t = 0, h = new C(n.a); h.a < h.c.c.length; ) + if (f = u(E(h), 10), on(un(v(f, (cn(), q8))))) { + for (++t, r = 0, i = null, l = null, m = new C(f.j); m.a < m.c.c.length; ) + g = u(E(m), 12), r += g.e.c.length + g.g.c.length, g.e.c.length == 1 && (i = u(sn(g.e, 0), 18), l = i.c), g.g.c.length == 1 && (i = u(sn(g.g, 0), 18), l = i.d); + if (r == 1 && l.e.c.length + l.g.c.length == 1 && !on(un(v(l.i, q8)))) + sLe(f, i, l, l.i), q6(h); + else { + for (S = new Z(), p = new C(f.j); p.a < p.c.c.length; ) { + for (g = u(E(p), 12), d = new C(g.g); d.a < d.c.c.length; ) + a = u(E(d), 18), a.d.g.c.length == 0 || Kn(S.c, a); + for (s = new C(g.e); s.a < s.c.c.length; ) + c = u(E(s), 18), c.c.e.c.length == 0 || Kn(S.c, c); + } + for (j = new C(S); j.a < j.c.c.length; ) + k = u(E(j), 18), U0(k, !0); + } + } + e._g() && e.bh("Found " + t + " comment boxes"), e.Vg(); + } + function ctn(n, e) { + FSn(); + var t, i, r, c, s, f, h; + if (this.a = new $X(this), this.b = n, this.c = e, this.f = sN(Lr((Lu(), zi), e)), this.f.dc()) + if ((f = FZ(zi, n)) == e) + for (this.e = !0, this.d = new Z(), this.f = new dvn(), this.f.Fc(Sd), u(qA(hk(zi, jo(n)), ""), 29) == n && this.f.Fc(R6(zi, jo(n))), r = SF(zi, n).Kc(); r.Ob(); ) + switch (i = u(r.Pb(), 179), y0(Lr(zi, i))) { + case 4: { + this.d.Fc(i); + break; + } + case 5: { + this.f.Gc(sN(Lr(zi, i))); + break; + } + } + else if (br(), u(e, 69).xk()) + for (this.e = !0, this.f = null, this.d = new Z(), s = 0, h = (n.i == null && bh(n), n.i).length; s < h; ++s) + for (i = (t = (n.i == null && bh(n), n.i), s >= 0 && s < t.length ? t[s] : null), c = $p(Lr(zi, i)); c; c = $p(Lr(zi, c))) + c == e && this.d.Fc(i); + else + y0(Lr(zi, e)) == 1 && f ? (this.f = null, this.d = (n3(), ise)) : (this.f = null, this.e = !0, this.d = (Dn(), new nD(e))); + else + this.e = y0(Lr(zi, e)) == 5, this.f.Fb(AU) && (this.f = AU); + } + function GGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + for (t = 0, i = s7e(n, e), g = n.s, p = n.t, l = u(u(ot(n.r, e), 21), 87).Kc(); l.Ob(); ) + if (h = u(l.Pb(), 117), !(!h.c || h.c.d.c.length <= 0)) { + switch (m = h.b.Mf(), f = h.b.pf((He(), oo)) ? $(R(h.b.of(oo))) : 0, a = h.c, d = a.i, d.b = (s = a.n, a.e.a + s.b + s.c), d.a = (c = a.n, a.e.b + c.d + c.a), e.g) { + case 1: + d.c = h.a ? (m.a - d.b) / 2 : m.a + g, d.d = m.b + f + i, df(a, (Uu(), pa)), uh(a, (wu(), kf)); + break; + case 3: + d.c = h.a ? (m.a - d.b) / 2 : m.a + g, d.d = -f - i - d.a, df(a, (Uu(), pa)), uh(a, (wu(), Xs)); + break; + case 2: + d.c = -f - i - d.b, h.a ? (r = n.v ? d.a : u(sn(a.d, 0), 187).Mf().b, d.d = (m.b - r) / 2) : d.d = m.b + p, df(a, (Uu(), zs)), uh(a, (wu(), ma)); + break; + case 4: + d.c = m.a + f + i, h.a ? (r = n.v ? d.a : u(sn(a.d, 0), 187).Mf().b, d.d = (m.b - r) / 2) : d.d = m.b + p, df(a, (Uu(), Mh)), uh(a, (wu(), ma)); + } + (e == (en(), Xn) || e == ae) && (t = y.Math.max(t, d.a)); + } + t > 0 && (u(Mr(n.b, e), 127).a.b = t); + } + function ODe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k; + if (g = $(R(v(n, (cn(), Av)))), p = $(R(v(n, Sv))), d = $(R(v(n, qw))), f = n.o, c = u(sn(n.j, 0), 12), s = c.n, k = Vje(c, d), !!k) { + if (e.Hc((zu(), Fl))) + switch (u(v(n, (W(), gc)), 64).g) { + case 1: + k.c = (f.a - k.b) / 2 - s.a, k.d = p; + break; + case 3: + k.c = (f.a - k.b) / 2 - s.a, k.d = -p - k.a; + break; + case 2: + t && c.e.c.length == 0 && c.g.c.length == 0 ? (a = i ? k.a : u(sn(c.f, 0), 72).o.b, k.d = (f.b - a) / 2 - s.b) : k.d = f.b + p - s.b, k.c = -g - k.b; + break; + case 4: + t && c.e.c.length == 0 && c.g.c.length == 0 ? (a = i ? k.a : u(sn(c.f, 0), 72).o.b, k.d = (f.b - a) / 2 - s.b) : k.d = f.b + p - s.b, k.c = g; + } + else if (e.Hc(Ia)) + switch (u(v(n, (W(), gc)), 64).g) { + case 1: + case 3: + k.c = s.a + g; + break; + case 2: + case 4: + t && !c.c ? (a = i ? k.a : u(sn(c.f, 0), 72).o.b, k.d = (f.b - a) / 2 - s.b) : k.d = s.b + p; + } + for (r = k.d, l = new C(c.f); l.a < l.c.c.length; ) + h = u(E(l), 72), m = h.n, m.a = k.c, m.b = r, r += h.o.b + d; + } + } + function DDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn; + for (X = new Z(), m = new C(n.b); m.a < m.c.c.length; ) + for (p = u(E(m), 30), S = new C(p.a); S.a < S.c.c.length; ) + if (k = u(E(S), 10), k.k == (Vn(), Zt) && kt(k, (W(), cI))) { + for (I = null, N = null, O = null, kn = new C(k.j); kn.a < kn.c.c.length; ) + switch (yn = u(E(kn), 12), yn.j.g) { + case 4: + I = yn; + break; + case 2: + N = yn; + break; + default: + O = yn; + } + for (_ = u(sn(O.g, 0), 18), a = new GE(_.a), l = new rr(O.n), it(l, k.n), d = ge(a, 0), _7(d, l), tn = Sk(_.a), g = new rr(O.n), it(g, k.n), Kt(tn, g, tn.c.b, tn.c), Fn = u(v(k, cI), 10), Rn = u(sn(Fn.j, 0), 12), h = u(Ff(I.e, K(O_, rR, 18, 0, 0, 1)), 483), i = h, c = 0, f = i.length; c < f; ++c) + e = i[c], Oi(e, Rn), J$(e.a, e.a.b, a); + for (h = hh(N.g), t = h, r = 0, s = t.length; r < s; ++r) + e = t[r], Zi(e, Rn), J$(e.a, 0, tn); + Zi(_, null), Oi(_, null), Kn(X.c, k); + } + for (j = new C(X); j.a < j.c.c.length; ) + k = u(E(j), 10), $i(k, null); + } + function LDe() { + Ge(bE, new H6n()), Ge(AO, new Z6n()), Ge(wE, new h5n()), Ge(o0n, new y5n()), Ge(fn, new M5n()), Ge(T(Bu, 1), new T5n()), Ge(Xt, new A5n()), Ge(p3, new S5n()), Ge(fn, new O6n()), Ge(fn, new D6n()), Ge(fn, new L6n()), Ge(si, new N6n()), Ge(fn, new $6n()), Ge(rs, new x6n()), Ge(rs, new F6n()), Ge(fn, new B6n()), Ge(sv, new K6n()), Ge(fn, new _6n()), Ge(fn, new q6n()), Ge(fn, new U6n()), Ge(fn, new G6n()), Ge(fn, new z6n()), Ge(T(Bu, 1), new X6n()), Ge(fn, new V6n()), Ge(fn, new W6n()), Ge(rs, new J6n()), Ge(rs, new Q6n()), Ge(fn, new Y6n()), Ge(Gi, new n5n()), Ge(fn, new e5n()), Ge(tb, new t5n()), Ge(fn, new i5n()), Ge(fn, new r5n()), Ge(fn, new c5n()), Ge(fn, new u5n()), Ge(rs, new o5n()), Ge(rs, new s5n()), Ge(fn, new f5n()), Ge(fn, new l5n()), Ge(fn, new a5n()), Ge(fn, new d5n()), Ge(fn, new b5n()), Ge(fn, new w5n()), Ge(ib, new g5n()), Ge(fn, new p5n()), Ge(fn, new m5n()), Ge(fn, new v5n()), Ge(ib, new k5n()), Ge(tb, new j5n()), Ge(fn, new E5n()), Ge(Gi, new C5n()); + } + function zGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + switch (a = new Tu(), n.a.g) { + case 3: + g = u(v(e.e, (W(), Dd)), 15), p = u(v(e.j, Dd), 15), m = u(v(e.f, Dd), 15), t = u(v(e.e, C2), 15), i = u(v(e.j, C2), 15), r = u(v(e.f, C2), 15), s = new Z(), hi(s, g), p.Jc(new Hpn()), hi(s, Qo(p)), hi(s, m), c = new Z(), hi(c, t), hi(c, Qo(i)), hi(c, r), U(e.f, Dd, s), U(e.f, C2, c), U(e.f, hfn, e.f), U(e.e, Dd, null), U(e.e, C2, null), U(e.j, Dd, null), U(e.j, C2, null); + break; + case 1: + Bi(a, e.e.a), Fe(a, e.i.n), Bi(a, Qo(e.j.a)), Fe(a, e.a.n), Bi(a, e.f.a); + break; + default: + Bi(a, e.e.a), Bi(a, Qo(e.j.a)), Bi(a, e.f.a); + } + vo(e.f.a), Bi(e.f.a, a), Zi(e.f, e.e.c), f = u(v(e.e, (cn(), Fr)), 75), l = u(v(e.j, Fr), 75), h = u(v(e.f, Fr), 75), (f || l || h) && (d = new Tu(), OW(d, h), OW(d, l), OW(d, f), U(e.f, Fr, d)), Zi(e.j, null), Oi(e.j, null), Zi(e.e, null), Oi(e.e, null), $i(e.a, null), $i(e.i, null), e.g && zGn(n, e.g); + } + function XGn() { + XGn = F; + var n, e, t; + for (new Nk(1, 0), new Nk(10, 0), new Nk(0, 0), vQn = K(QK, J, 247, 11, 0, 1), Id = K(fs, gh, 28, 100, 15, 1), Cun = A(T(Ii, 1), Ar, 28, 15, [1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125, 6103515625, 30517578125, 152587890625, 762939453125, 3814697265625, 19073486328125, 95367431640625, 476837158203125, 2384185791015625]), Mun = K(ye, _e, 28, Cun.length, 15, 1), Tun = A(T(Ii, 1), Ar, 28, 15, [1, 10, 100, d1, 1e4, PB, 1e6, 1e7, 1e8, QA, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16]), Aun = K(ye, _e, 28, Tun.length, 15, 1), Sun = K(QK, J, 247, 11, 0, 1), n = 0; n < Sun.length; n++) + vQn[n] = new Nk(n, 0), Sun[n] = new Nk(0, n), Id[n] = 48; + for (; n < Id.length; n++) + Id[n] = 48; + for (t = 0; t < Mun.length; t++) + Mun[t] = Onn(Cun[t]); + for (e = 0; e < Aun.length; e++) + Aun[e] = Onn(Tun[e]); + Am(); + } + function NDe() { + function n() { + this.obj = this.createObject(); + } + return n.prototype.createObject = function(e) { + return /* @__PURE__ */ Object.create(null); + }, n.prototype.get = function(e) { + return this.obj[e]; + }, n.prototype.set = function(e, t) { + this.obj[e] = t; + }, n.prototype[DB] = function(e) { + delete this.obj[e]; + }, n.prototype.keys = function() { + return Object.getOwnPropertyNames(this.obj); + }, n.prototype.entries = function() { + var e = this.keys(), t = this, i = 0; + return { next: function() { + if (i >= e.length) + return { done: !0 }; + var r = e[i++]; + return { value: [r, t.get(r)], done: !1 }; + } }; + }, SAe() || (n.prototype.createObject = function() { + return {}; + }, n.prototype.get = function(e) { + return this.obj[":" + e]; + }, n.prototype.set = function(e, t) { + this.obj[":" + e] = t; + }, n.prototype[DB] = function(e) { + delete this.obj[":" + e]; + }, n.prototype.keys = function() { + var e = []; + for (var t in this.obj) + t.charCodeAt(0) == 58 && e.push(t.substring(1)); + return e; + }), n; + } + function pt() { + pt = F, u9 = new lt(Qtn), new Dt("DEPTH", Y(0)), iq = new Dt("FAN", Y(0)), vln = new Dt(wVn, Y(0)), Ma = new Dt("ROOT", (_n(), !1)), uq = new Dt("LEFTNEIGHBOR", null), bre = new Dt("RIGHTNEIGHBOR", null), $I = new Dt("LEFTSIBLING", null), oq = new Dt("RIGHTSIBLING", null), tq = new Dt("DUMMY", !1), new Dt("LEVEL", Y(0)), jln = new Dt("REMOVABLE_EDGES", new Ct()), $j = new Dt("XCOOR", Y(0)), xj = new Dt("YCOOR", Y(0)), xI = new Dt("LEVELHEIGHT", 0), jf = new Dt("LEVELMIN", 0), Js = new Dt("LEVELMAX", 0), rq = new Dt("GRAPH_XMIN", 0), cq = new Dt("GRAPH_YMIN", 0), kln = new Dt("GRAPH_XMAX", 0), yln = new Dt("GRAPH_YMAX", 0), mln = new Dt("COMPACT_LEVEL_ASCENSION", !1), eq = new Dt("COMPACT_CONSTRAINTS", new Z()), c9 = new Dt("ID", ""), o9 = new Dt("POSITION", Y(0)), j1 = new Dt("PRELIM", 0), Lv = new Dt("MODIFIER", 0), Dv = new lt(AXn), Nj = new lt(SXn); + } + function $De(n) { + Ren(); + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (n == null) + return null; + if (d = n.length * 8, d == 0) + return ""; + for (f = d % 24, p = d / 24 | 0, g = f != 0 ? p + 1 : p, c = null, c = K(fs, gh, 28, g * 4, 15, 1), l = 0, a = 0, e = 0, t = 0, i = 0, s = 0, r = 0, h = 0; h < p; h++) + e = n[r++], t = n[r++], i = n[r++], a = (t & 15) << 24 >> 24, l = (e & 3) << 24 >> 24, m = e & -128 ? (e >> 2 ^ 192) << 24 >> 24 : e >> 2 << 24 >> 24, k = t & -128 ? (t >> 4 ^ 240) << 24 >> 24 : t >> 4 << 24 >> 24, j = i & -128 ? (i >> 6 ^ 252) << 24 >> 24 : i >> 6 << 24 >> 24, c[s++] = O1[m], c[s++] = O1[k | l << 4], c[s++] = O1[a << 2 | j], c[s++] = O1[i & 63]; + return f == 8 ? (e = n[r], l = (e & 3) << 24 >> 24, m = e & -128 ? (e >> 2 ^ 192) << 24 >> 24 : e >> 2 << 24 >> 24, c[s++] = O1[m], c[s++] = O1[l << 4], c[s++] = 61, c[s++] = 61) : f == 16 && (e = n[r], t = n[r + 1], a = (t & 15) << 24 >> 24, l = (e & 3) << 24 >> 24, m = e & -128 ? (e >> 2 ^ 192) << 24 >> 24 : e >> 2 << 24 >> 24, k = t & -128 ? (t >> 4 ^ 240) << 24 >> 24 : t >> 4 << 24 >> 24, c[s++] = O1[m], c[s++] = O1[k | l << 4], c[s++] = O1[a << 2], c[s++] = 61), ws(c, 0, c.length); + } + function xDe(n, e) { + var t, i, r, c, s, f, h; + if (n.e == 0 && n.p > 0 && (n.p = -(n.p - 1)), n.p > Wi && MJ(e, n.p - ha), s = e.q.getDate(), W7(e, 1), n.k >= 0 && C2e(e, n.k), n.c >= 0 ? W7(e, n.c) : n.k >= 0 ? (h = new eY(e.q.getFullYear() - ha, e.q.getMonth(), 35), i = 35 - h.q.getDate(), W7(e, y.Math.min(i, s))) : W7(e, s), n.f < 0 && (n.f = e.q.getHours()), n.b > 0 && n.f < 12 && (n.f += 12), w1e(e, n.f == 24 && n.g ? 0 : n.f), n.j >= 0 && u4e(e, n.j), n.n >= 0 && m4e(e, n.n), n.i >= 0 && YMn(e, nr(er(Xk(kc(e.q.getTime()), d1), d1), n.i)), n.a && (r = new JE(), MJ(r, r.q.getFullYear() - ha - 80), ND(kc(e.q.getTime()), kc(r.q.getTime())) && MJ(e, r.q.getFullYear() - ha + 100)), n.d >= 0) { + if (n.c == -1) + t = (7 + n.d - e.q.getDay()) % 7, t > 3 && (t -= 7), f = e.q.getMonth(), W7(e, e.q.getDate() + t), e.q.getMonth() != f && W7(e, e.q.getDate() + (t > 0 ? -7 : 7)); + else if (e.q.getDay() != n.d) + return !1; + } + return n.o > Wi && (c = e.q.getTimezoneOffset(), YMn(e, nr(kc(e.q.getTime()), (n.o - c) * 60 * d1))), !0; + } + function VGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + if (r = v(e, (W(), st)), !!D(r, 207)) { + for (m = u(r, 27), k = e.e, g = new rr(e.c), c = e.d, g.a += c.b, g.b += c.d, N = u(z(m, (cn(), kI)), 181), Su(N, (io(), sO)) && (p = u(z(m, lhn), 107), Gse(p, c.a), Zse(p, c.d), zse(p, c.b), Yse(p, c.c)), t = new Z(), a = new C(e.a); a.a < a.c.c.length; ) + for (h = u(E(a), 10), D(v(h, st), 207) ? HDe(h, g) : D(v(h, st), 193) && !k && (i = u(v(h, st), 123), I = $Un(e, h, i.g, i.f), Ro(i, I.a, I.b)), S = new C(h.j); S.a < S.c.c.length; ) + j = u(E(S), 12), Gt(ut(new Tn(null, new In(j.g, 16)), new X9n(h)), new V9n(t)); + if (k) + for (S = new C(k.j); S.a < S.c.c.length; ) + j = u(E(S), 12), Gt(ut(new Tn(null, new In(j.g, 16)), new W9n(k)), new J9n(t)); + for (O = u(z(m, $l), 223), f = new C(t); f.a < f.c.c.length; ) + s = u(E(f), 18), iDe(s, O, g); + for (qSe(e), l = new C(e.a); l.a < l.c.c.length; ) + h = u(E(l), 10), d = h.e, d && VGn(n, d); + } + } + function WGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + if (!u(u(ot(n.r, e), 21), 87).dc()) { + if (s = u(Mr(n.b, e), 127), h = s.i, f = s.n, a = kF(n, e), i = h.b - f.b - f.c, r = s.a.a, c = h.c + f.b, p = n.w, (a == (Bg(), Sa) || a == eE) && u(u(ot(n.r, e), 21), 87).gc() == 1 && (r = a == Sa ? r - 2 * n.w : r, a = C9), i < r && !n.B.Hc((io(), fO))) + a == Sa ? (p += (i - r) / (u(u(ot(n.r, e), 21), 87).gc() + 1), c += p) : p += (i - r) / (u(u(ot(n.r, e), 21), 87).gc() - 1); + else + switch (i < r && (r = a == Sa ? r - 2 * n.w : r, a = C9), a.g) { + case 3: + c += (i - r) / 2; + break; + case 4: + c += i - r; + break; + case 0: + t = (i - r) / (u(u(ot(n.r, e), 21), 87).gc() + 1), p += y.Math.max(0, t), c += p; + break; + case 1: + t = (i - r) / (u(u(ot(n.r, e), 21), 87).gc() - 1), p += y.Math.max(0, t); + } + for (g = u(u(ot(n.r, e), 21), 87).Kc(); g.Ob(); ) + d = u(g.Pb(), 117), d.e.a = c + d.d.b, d.e.b = (l = d.b, l.pf((He(), oo)) ? l.ag() == (en(), Xn) ? -l.Mf().b - $(R(l.of(oo))) : $(R(l.of(oo))) : l.ag() == (en(), Xn) ? -l.Mf().b : 0), c += d.d.b + d.b.Mf().a + d.d.c + p; + } + } + function JGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + if (!u(u(ot(n.r, e), 21), 87).dc()) { + if (s = u(Mr(n.b, e), 127), h = s.i, f = s.n, d = kF(n, e), i = h.a - f.d - f.a, r = s.a.b, c = h.d + f.d, m = n.w, l = n.o.a, (d == (Bg(), Sa) || d == eE) && u(u(ot(n.r, e), 21), 87).gc() == 1 && (r = d == Sa ? r - 2 * n.w : r, d = C9), i < r && !n.B.Hc((io(), fO))) + d == Sa ? (m += (i - r) / (u(u(ot(n.r, e), 21), 87).gc() + 1), c += m) : m += (i - r) / (u(u(ot(n.r, e), 21), 87).gc() - 1); + else + switch (i < r && (r = d == Sa ? r - 2 * n.w : r, d = C9), d.g) { + case 3: + c += (i - r) / 2; + break; + case 4: + c += i - r; + break; + case 0: + t = (i - r) / (u(u(ot(n.r, e), 21), 87).gc() + 1), m += y.Math.max(0, t), c += m; + break; + case 1: + t = (i - r) / (u(u(ot(n.r, e), 21), 87).gc() - 1), m += y.Math.max(0, t); + } + for (p = u(u(ot(n.r, e), 21), 87).Kc(); p.Ob(); ) + g = u(p.Pb(), 117), g.e.a = (a = g.b, a.pf((He(), oo)) ? a.ag() == (en(), Wn) ? -a.Mf().a - $(R(a.of(oo))) : l + $(R(a.of(oo))) : a.ag() == (en(), Wn) ? -a.Mf().a : l), g.e.b = c + g.d.d, c += g.d.d + g.b.Mf().b + g.d.a + m; + } + } + function FDe(n, e) { + var t, i, r, c, s; + for (e.Ug("Processor determine the coords for each level", 1), i = new Z(), s = ge(n.b, 0); s.b != s.d.c; ) { + for (r = u(be(s), 40); u(v(r, (lc(), Sh)), 17).a > i.c.length - 1; ) + nn(i, new bi(i2, Srn)); + t = u(v(r, Sh), 17).a, hl(u(v(n, vb), 88)) ? (r.e.a < $(R((Ln(t, i.c.length), u(i.c[t], 42)).a)) && QO((Ln(t, i.c.length), u(i.c[t], 42)), r.e.a), r.e.a + r.f.a > $(R((Ln(t, i.c.length), u(i.c[t], 42)).b)) && YO((Ln(t, i.c.length), u(i.c[t], 42)), r.e.a + r.f.a)) : (r.e.b < $(R((Ln(t, i.c.length), u(i.c[t], 42)).a)) && QO((Ln(t, i.c.length), u(i.c[t], 42)), r.e.b), r.e.b + r.f.b > $(R((Ln(t, i.c.length), u(i.c[t], 42)).b)) && YO((Ln(t, i.c.length), u(i.c[t], 42)), r.e.b + r.f.b)); + } + for (c = ge(n.b, 0); c.b != c.d.c; ) + r = u(be(c), 40), t = u(v(r, (lc(), Sh)), 17).a, U(r, (pt(), jf), R((Ln(t, i.c.length), u(i.c[t], 42)).a)), U(r, Js, R((Ln(t, i.c.length), u(i.c[t], 42)).b)); + e.Vg(); + } + function BDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (n.o = $(R(v(n.i, (cn(), gb)))), n.f = $(R(v(n.i, Bd))), n.j = n.i.b.c.length, f = n.j - 1, g = 0, n.k = 0, n.n = 0, n.b = Of(K(Gi, J, 17, n.j, 0, 1)), n.c = Of(K(si, J, 345, n.j, 7, 1)), s = new C(n.i.b); s.a < s.c.c.length; ) { + for (r = u(E(s), 30), r.p = f, d = new C(r.a); d.a < d.c.c.length; ) + a = u(E(d), 10), a.p = g, ++g; + --f; + } + for (n.g = K(ye, _e, 28, g, 15, 1), n.d = Wa(ye, [J, _e], [53, 28], 15, [g, 3], 2), n.p = new Z(), n.q = new Z(), e = 0, n.e = 0, c = new C(n.i.b); c.a < c.c.c.length; ) { + for (r = u(E(c), 30), f = r.p, i = 0, k = 0, h = r.a.c.length, l = 0, d = new C(r.a); d.a < d.c.c.length; ) + a = u(E(d), 10), g = a.p, n.g[g] = a.c.p, l += a.o.b + n.o, t = wl(new ie(ce(ji(a).a.Kc(), new En()))), m = wl(new ie(ce(Qt(a).a.Kc(), new En()))), n.d[g][0] = m - t, n.d[g][1] = t, n.d[g][2] = m, i += t, k += m, t > 0 && nn(n.q, a), nn(n.p, a); + e -= i, p = h + e, l += e * n.f, Go(n.b, f, Y(p)), Go(n.c, f, l), n.k = y.Math.max(n.k, p), n.n = y.Math.max(n.n, l), n.e += e, e += k; + } + } + function en() { + en = F; + var n; + sc = new v7(n8, 0), Xn = new v7(eS, 1), Zn = new v7(HB, 2), ae = new v7(qB, 3), Wn = new v7(UB, 4), Yf = (Dn(), new r4((n = u(of(lr), 9), new _o(n, u(xs(n, n.length), 9), 0)))), ef = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, []))), os = i1(yt(Zn, A(T(lr, 1), Tc, 64, 0, []))), No = i1(yt(ae, A(T(lr, 1), Tc, 64, 0, []))), Ts = i1(yt(Wn, A(T(lr, 1), Tc, 64, 0, []))), vu = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [ae]))), fu = i1(yt(Zn, A(T(lr, 1), Tc, 64, 0, [Wn]))), tf = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [Wn]))), Wu = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [Zn]))), $o = i1(yt(ae, A(T(lr, 1), Tc, 64, 0, [Wn]))), ss = i1(yt(Zn, A(T(lr, 1), Tc, 64, 0, [ae]))), Ju = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [Zn, Wn]))), mu = i1(yt(Zn, A(T(lr, 1), Tc, 64, 0, [ae, Wn]))), ku = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [ae, Wn]))), Fu = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [Zn, ae]))), Gc = i1(yt(Xn, A(T(lr, 1), Tc, 64, 0, [Zn, ae, Wn]))); + } + function RDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn; + for (e.Ug(VXn, 1), k = new Z(), X = new Z(), l = new C(n.b); l.a < l.c.c.length; ) + for (h = u(E(l), 30), S = -1, m = Y7(h.a), d = m, g = 0, p = d.length; g < p; ++g) + if (a = d[g], ++S, !!(a.k == (Vn(), Vt) && mg(u(v(a, (cn(), Ut)), 101)))) { + for (Ep(u(v(a, (cn(), Ut)), 101)) || yTe(a), U(a, (W(), sb), a), k.c.length = 0, X.c.length = 0, t = new Z(), N = new Ct(), A$(N, h1(a, (en(), Xn))), hzn(n, N, k, X, t), f = S, tn = a, c = new C(k); c.a < c.c.c.length; ) + i = u(E(c), 10), uw(i, f, h), ++S, U(i, sb, a), s = u(sn(i.j, 0), 12), j = u(v(s, st), 12), on(un(v(j, mH))) || u(v(i, T3), 15).Fc(tn); + for (vo(N), O = h1(a, ae).Kc(); O.Ob(); ) + I = u(O.Pb(), 12), Kt(N, I, N.a, N.a.a); + for (hzn(n, N, X, null, t), _ = a, r = new C(X); r.a < r.c.c.length; ) + i = u(E(r), 10), uw(i, ++S, h), U(i, sb, a), s = u(sn(i.j, 0), 12), j = u(v(s, st), 12), on(un(v(j, mH))) || u(v(_, T3), 15).Fc(i); + t.c.length == 0 || U(a, Zsn, t); + } + e.Vg(); + } + function QGn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + if (e.b != 0) { + for (p = new Ct(), f = null, m = null, i = wi(y.Math.floor(y.Math.log(e.b) * y.Math.LOG10E) + 1), h = 0, O = ge(e, 0); O.b != O.d.c; ) + for (S = u(be(O), 40), x(m) !== x(v(S, (pt(), c9))) && (m = Oe(v(S, c9)), h = 0), m != null ? f = m + GOn(h++, i) : f = GOn(h++, i), U(S, c9, f), j = (r = ge(new sl(S).a.d, 0), new sg(r)); Q9(j.a); ) + k = u(be(j.a), 65).c, Kt(p, k, p.c.b, p.c), U(k, c9, f); + for (g = new de(), s = 0; s < f.length - i; s++) + for (I = ge(e, 0); I.b != I.d.c; ) + S = u(be(I), 40), l = qo(Oe(v(S, (pt(), c9))), 0, s + 1), t = (l == null ? Kr(gr(g.f, null)) : a6(g.i, l)) != null ? u(l == null ? Kr(gr(g.f, null)) : a6(g.i, l), 17).a + 1 : 1, Dr(g, l, Y(t)); + for (d = new sd(new Ua(g).a); d.b; ) + a = L0(d), c = Y(ee(n.a, a.ld()) != null ? u(ee(n.a, a.ld()), 17).a : 0), Dr(n.a, Oe(a.ld()), Y(u(a.md(), 17).a + c.a)), c = u(ee(n.b, a.ld()), 17), (!c || c.a < u(a.md(), 17).a) && Dr(n.b, Oe(a.ld()), u(a.md(), 17)); + QGn(n, p); + } + } + function KDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g; + for (t = null, h = null, r = u(v(n.b, (cn(), CH)), 349), r == (a5(), Ij) && (t = new Z(), h = new Z()), f = new C(n.d); f.a < f.c.c.length; ) + if (s = u(E(f), 105), c = s.i, !!c) + switch (s.e.g) { + case 0: + e = u(n5(new dp(s.b)), 64), r == Ij && e == (en(), Xn) ? Kn(t.c, s) : r == Ij && e == (en(), ae) ? Kn(h.c, s) : d7e(s, e); + break; + case 1: + l = s.a.d.j, a = s.c.d.j, l == (en(), Xn) ? Vl(s, Xn, (xf(), lv), s.a) : a == Xn ? Vl(s, Xn, (xf(), av), s.c) : l == ae ? Vl(s, ae, (xf(), av), s.a) : a == ae && Vl(s, ae, (xf(), lv), s.c); + break; + case 2: + case 3: + i = s.b, Su(i, (en(), Xn)) ? Su(i, ae) ? Su(i, Wn) ? Su(i, Zn) || Vl(s, Xn, (xf(), av), s.c) : Vl(s, Xn, (xf(), lv), s.a) : Vl(s, Xn, (xf(), j3), null) : Vl(s, ae, (xf(), j3), null); + break; + case 4: + d = s.a.d.j, g = s.a.d.j, d == (en(), Xn) || g == Xn ? Vl(s, ae, (xf(), j3), null) : Vl(s, Xn, (xf(), j3), null); + } + t && (t.c.length == 0 || UUn(t, (en(), Xn)), h.c.length == 0 || UUn(h, (en(), ae))); + } + function _De(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + for (t.Ug("Breadth first model order layering", 1), n.a = e, j = new Z(), k = new C(n.a.a); k.a < k.c.c.length; ) + p = u(E(k), 10), p.k == (Vn(), Vt) && Kn(j.c, p); + for (Dn(), Yt(j, new zpn()), h = !0, r = new Nc(n.a), i = null, nn(n.a.b, r), m = new C(j); m.a < m.c.c.length; ) + if (p = u(E(m), 10), h) + $i(p, r), h = !1; + else { + for (f = new ie(ce(ji(p).a.Kc(), new En())); pe(f); ) + c = u(fe(f), 18), (c.c.i.k == (Vn(), Vt) && c.c.i.c == r || c.c.i.k == Sc && u(fe(new ie(ce(ji(c.c.i).a.Kc(), new En()))), 18).c.i.c == r) && (i = new Nc(n.a), nn(n.a.b, i), r = new Nc(n.a), nn(n.a.b, r)); + for (s = new ie(ce(ji(p).a.Kc(), new En())); pe(s); ) + c = u(fe(s), 18), c.c.i.k == (Vn(), Sc) && !c.c.i.c && $i(c.c.i, i); + $i(p, r); + } + for (n.a.a.c.length = 0, S = new Z(), d = new C(n.a.b); d.a < d.c.c.length; ) + l = u(E(d), 30), l.a.c.length == 0 && Kn(S.c, l); + for (OY(n.a.b, S), g = 0, a = new C(n.a.b); a.a < a.c.c.length; ) + l = u(E(a), 30), l.p = g, ++g; + t.Vg(); + } + function HDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + for (i = u(v(n, (W(), st)), 27), m = u(v(n, (cn(), aI)), 17).a, c = u(v(n, gI), 17).a, ht(i, aI, Y(m)), ht(i, gI, Y(c)), tu(i, n.n.a + e.a), iu(i, n.n.b + e.b), (u(z(i, xd), 181).gc() != 0 || n.e || x(v(Hi(n), vI)) === x((M5(), J8)) && sTn((cw(), (n.q ? n.q : (Dn(), Dn(), Wh))._b(db) ? g = u(v(n, db), 203) : g = u(v(Hi(n), z8), 203), g))) && (I0(i, n.o.a), P0(i, n.o.b)), d = new C(n.j); d.a < d.c.c.length; ) + l = u(E(d), 12), k = v(l, st), D(k, 193) && (r = u(k, 123), Ro(r, l.n.a, l.n.b), ht(r, Mv, l.j)); + for (p = u(v(n, ab), 181).gc() != 0, h = new C(n.b); h.a < h.c.c.length; ) + s = u(E(h), 72), (p || u(v(s, ab), 181).gc() != 0) && (t = u(v(s, st), 135), kg(t, s.o.a, s.o.b), Ro(t, s.n.a, s.n.b)); + if (!K6(u(v(n, _w), 21))) + for (a = new C(n.j); a.a < a.c.c.length; ) + for (l = u(E(a), 12), f = new C(l.f); f.a < f.c.c.length; ) + s = u(E(f), 72), t = u(v(s, st), 135), I0(t, s.o.a), P0(t, s.o.b), Ro(t, s.n.a, s.n.b); + } + function qDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn; + for (e.Ug("Calculate Graph Size", 1), e.dh(n, Frn), d = i2, g = i2, l = Brn, a = Brn, k = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); k.e != k.i.gc(); ) + p = u(ue(k), 27), I = p.i, O = p.j, kn = p.g, f = p.f, h = u(z(p, (He(), xv)), 140), d = y.Math.min(d, I - h.b), g = y.Math.min(g, O - h.d), l = y.Math.max(l, I + kn + h.c), a = y.Math.max(a, O + f + h.a); + for (S = u(z(n, (He(), C1)), 107), j = new V(d - S.b, g - S.d), yn = l - d + (S.b + S.c), s = a - g + (S.d + S.a), on(un(z(n, (oa(), Jln)))) && (N = u(z(n, (Tg(), D2)), 27), _ = u(z(N, xv), 140), X = N.i + N.g / 2 + (_.b + _.c) / 2 - j.a, tn = N.j + N.f / 2 + (_.d + _.a) / 2 - j.b, r = yn - X, c = s - tn, r < yn / 2 ? (t = r - X, yn += t, j.a -= t) : (t = X - r, yn += t), c < s / 2 ? (i = c - tn, s += i, j.b -= i) : (i = tn - c, s += i)), m = new ne((!n.a && (n.a = new q(Ye, n, 10, 11)), n.a)); m.e != m.i.gc(); ) + p = u(ue(m), 27), tu(p, p.i - j.a), iu(p, p.j - j.b); + on(un(z(n, Vw))) || (I0(n, yn), P0(n, s)), ht(n, B2, yn - (S.b + S.c)), ht(n, F2, s - (S.d + S.a)), e.dh(n, DS); + } + function UDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + if (n.e.a.$b(), n.f.a.$b(), n.c.c.length = 0, n.i.c.length = 0, n.g.a.$b(), e) + for (s = new C(e.a); s.a < s.c.c.length; ) + for (c = u(E(s), 10), d = h1(c, (en(), Zn)).Kc(); d.Ob(); ) + for (a = u(d.Pb(), 12), fi(n.e, a), r = new C(a.g); r.a < r.c.c.length; ) + i = u(E(r), 18), !fr(i) && (nn(n.c, i), aRn(n, i), f = i.c.i.k, (f == (Vn(), Vt) || f == Hc || f == Zt || f == Gf) && nn(n.j, i), p = i.d, g = p.i.c, g == t ? fi(n.f, p) : g == e ? fi(n.e, p) : bu(n.c, i)); + if (t) + for (s = new C(t.a); s.a < s.c.c.length; ) { + for (c = u(E(s), 10), l = new C(c.j); l.a < l.c.c.length; ) + for (h = u(E(l), 12), r = new C(h.g); r.a < r.c.c.length; ) + i = u(E(r), 18), fr(i) && fi(n.g, i); + for (d = h1(c, (en(), Wn)).Kc(); d.Ob(); ) + for (a = u(d.Pb(), 12), fi(n.f, a), r = new C(a.g); r.a < r.c.c.length; ) + i = u(E(r), 18), !fr(i) && (nn(n.c, i), aRn(n, i), f = i.c.i.k, (f == (Vn(), Vt) || f == Hc || f == Zt || f == Gf) && nn(n.j, i), p = i.d, g = p.i.c, g == t ? fi(n.f, p) : g == e ? fi(n.e, p) : bu(n.c, i)); + } + } + function GDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (t.Ug("Polyline edge routing", 1), j = $(R(v(e, (cn(), Vfn)))), p = $(R(v(e, A2))), r = $(R(v(e, M2))), i = y.Math.min(1, r / p), O = 0, h = 0, e.b.c.length != 0 && (N = VHn(u(sn(e.b, 0), 30)), O = 0.4 * i * N), f = new xi(e.b, 0); f.b < f.d.gc(); ) { + for (s = (oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 30)), c = SC(s, Dj), c && O > 0 && (O -= p), Jen(s, O), a = 0, g = new C(s.a); g.a < g.c.c.length; ) { + for (d = u(E(g), 10), l = 0, k = new ie(ce(Qt(d).a.Kc(), new En())); pe(k); ) + m = u(fe(k), 18), S = If(m.c).b, I = If(m.d).b, s == m.d.i.c && !fr(m) && (rCe(m, O, 0.4 * i * y.Math.abs(S - I)), m.c.j == (en(), Wn) && (S = 0, I = 0)), l = y.Math.max(l, y.Math.abs(I - S)); + switch (d.k.g) { + case 0: + case 4: + case 1: + case 3: + case 5: + sOe(n, d, O, j); + } + a = y.Math.max(a, l); + } + f.b < f.d.gc() && (N = VHn((oe(f.b < f.d.gc()), u(f.d.Xb(f.c = f.b++), 30))), a = y.Math.max(a, N), oe(f.b > 0), f.a.Xb(f.c = --f.b)), h = 0.4 * i * a, !c && f.b < f.d.gc() && (h += p), O += s.c.a + h; + } + n.a.a.$b(), e.f.a = O, t.Vg(); + } + function zDe(n) { + var e, t, i, r, c; + switch (G7(n, TWn), (!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i + (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i) { + case 0: + throw M(new Gn("The edge must have at least one source or target.")); + case 1: + return (!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i == 0 ? At(Gr(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84))) : At(Gr(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84))); + } + if ((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b).i == 1 && (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c).i == 1) { + if (r = Gr(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84)), c = Gr(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84)), At(r) == At(c)) + return At(r); + if (r == At(c)) + return r; + if (c == At(r)) + return c; + } + for (i = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), (!n.c && (n.c = new Nn(he, n, 5, 8)), n.c)]))), e = Gr(u(fe(i), 84)); pe(i); ) + if (t = Gr(u(fe(i), 84)), t != e && !Yb(t, e)) { + if (At(t) == At(e)) + e = At(t); + else if (e = vMe(e, t), !e) + return null; + } + return e; + } + function utn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + if (g = e.length, g > 0 && (h = (zn(0, e.length), e.charCodeAt(0)), h != 64)) { + if (h == 37 && (d = e.lastIndexOf("%"), l = !1, d != 0 && (d == g - 1 || (l = (zn(d + 1, e.length), e.charCodeAt(d + 1) == 46))))) { + if (s = (Fi(1, d, e.length), e.substr(1, d - 1)), O = An("%", s) ? null : otn(s), i = 0, l) + try { + i = Ao((zn(d + 2, e.length + 1), e.substr(d + 2)), Wi, tt); + } catch (N) { + throw N = It(N), D(N, 130) ? (f = N, M(new eT(f))) : M(N); + } + for (j = NQ(n.Gh()); j.Ob(); ) + if (m = PT(j), D(m, 519) && (r = u(m, 598), I = r.d, (O == null ? I == null : An(O, I)) && i-- == 0)) + return r; + return null; + } + if (a = e.lastIndexOf("."), p = a == -1 ? e : (Fi(0, a, e.length), e.substr(0, a)), t = 0, a != -1) + try { + t = Ao((zn(a + 1, e.length + 1), e.substr(a + 1)), Wi, tt); + } catch (N) { + if (N = It(N), D(N, 130)) + p = e; + else + throw M(N); + } + for (p = An("%", p) ? null : otn(p), k = NQ(n.Gh()); k.Ob(); ) + if (m = PT(k), D(m, 197) && (c = u(m, 197), S = c.xe(), (p == null ? S == null : An(p, S)) && t-- == 0)) + return c; + return null; + } + return FGn(n, e); + } + function XDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + for (a = new de(), h = new C0(), i = new C(n.a.a.b); i.a < i.c.c.length; ) + if (e = u(E(i), 60), l = Pg(e), l) + Wc(a.f, l, e); + else if (I = xp(e), I) + for (c = new C(I.k); c.a < c.c.c.length; ) + r = u(E(c), 18), Pn(h, r, e); + for (t = new C(n.a.a.b); t.a < t.c.c.length; ) + if (e = u(E(t), 60), l = Pg(e), l) { + for (f = new ie(ce(Qt(l).a.Kc(), new En())); pe(f); ) + if (s = u(fe(f), 18), !fr(s) && (m = s.c, S = s.d, !((en(), vu).Hc(s.c.j) && vu.Hc(s.d.j)))) { + if (k = u(ee(a, s.d.i), 60), qs(Ls(Ds(Ns(Os(new hs(), 0), 100), n.c[e.a.d]), n.c[k.a.d])), m.j == Wn && IPn((Du(), m))) { + for (g = u(ot(h, s), 21).Kc(); g.Ob(); ) + if (d = u(g.Pb(), 60), d.d.c < e.d.c) { + if (p = n.c[d.a.d], j = n.c[e.a.d], p == j) + continue; + qs(Ls(Ds(Ns(Os(new hs(), 1), 100), p), j)); + } + } + if (S.j == Zn && OPn((Du(), S))) { + for (g = u(ot(h, s), 21).Kc(); g.Ob(); ) + if (d = u(g.Pb(), 60), d.d.c > e.d.c) { + if (p = n.c[e.a.d], j = n.c[d.a.d], p == j) + continue; + qs(Ls(Ds(Ns(Os(new hs(), 1), 100), p), j)); + } + } + } + } + } + function VDe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + if (g = u(u(ot(n.r, e), 21), 87), e == (en(), Zn) || e == Wn) { + GGn(n, e); + return; + } + for (c = e == Xn ? (N0(), ij) : (N0(), rj), N = e == Xn ? (wu(), kf) : (wu(), Xs), t = u(Mr(n.b, e), 127), i = t.i, r = i.c + Dg(A(T(Ii, 1), Ar, 28, 15, [t.n.b, n.C.b, n.k])), S = i.c + i.b - Dg(A(T(Ii, 1), Ar, 28, 15, [t.n.c, n.C.c, n.k])), s = yz(FV(c), n.t), I = e == Xn ? li : St, d = g.Kc(); d.Ob(); ) + l = u(d.Pb(), 117), !(!l.c || l.c.d.c.length <= 0) && (j = l.b.Mf(), k = l.e, p = l.c, m = p.i, m.b = (h = p.n, p.e.a + h.b + h.c), m.a = (f = p.n, p.e.b + f.d + f.a), G7(N, Ftn), p.f = N, df(p, (Uu(), zs)), m.c = k.a - (m.b - j.a) / 2, _ = y.Math.min(r, k.a), X = y.Math.max(S, k.a + j.a), m.c < _ ? m.c = _ : m.c + m.b > X && (m.c = X - m.b), nn(s.d, new ZL(m, SY(s, m))), I = e == Xn ? y.Math.max(I, k.b + l.b.Mf().b) : y.Math.min(I, k.b)); + for (I += e == Xn ? n.t : -n.t, O = XY((s.e = I, s)), O > 0 && (u(Mr(n.b, e), 127).a.b = O), a = g.Kc(); a.Ob(); ) + l = u(a.Pb(), 117), !(!l.c || l.c.d.c.length <= 0) && (m = l.c.i, m.c -= l.e.a, m.d -= l.e.b); + } + function WDe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + for (e = new de(), h = new ne(n); h.e != h.i.gc(); ) { + for (f = u(ue(h), 27), t = new ni(), Ve(m_, f, t), p = new Kbn(), r = u(Wr(new Tn(null, new p0(new ie(ce(cy(f).a.Kc(), new En())))), bPn(p, qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)])))), 85), V$n(t, u(r.xc((_n(), !0)), 16), new _bn()), i = u(Wr(ut(u(r.xc(!1), 15).Lc(), new Hbn()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), s = i.Kc(); s.Ob(); ) + c = u(s.Pb(), 74), g = VKn(c), g && (l = u(Kr(gr(e.f, g)), 21), l || (l = pqn(g), Wc(e.f, g, l)), Bi(t, l)); + for (r = u(Wr(new Tn(null, new p0(new ie(ce(Al(f).a.Kc(), new En())))), bPn(p, qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr])))), 85), V$n(t, u(r.xc(!0), 16), new qbn()), i = u(Wr(ut(u(r.xc(!1), 15).Lc(), new Ubn()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), d = i.Kc(); d.Ob(); ) + a = u(d.Pb(), 74), g = WKn(a), g && (l = u(Kr(gr(e.f, g)), 21), l || (l = pqn(g), Wc(e.f, g, l)), Bi(t, l)); + } + } + function JDe(n, e) { + BF(); + var t, i, r, c, s, f, h, l, a, d, g, p, m, k; + if (h = Cc(n, 0) < 0, h && (n = n1(n)), Cc(n, 0) == 0) + switch (e) { + case 0: + return "0"; + case 1: + return Km; + case 2: + return "0.00"; + case 3: + return "0.000"; + case 4: + return "0.0000"; + case 5: + return "0.00000"; + case 6: + return "0.000000"; + default: + return p = new x1(), e < 0 ? p.a += "0E+" : p.a += "0E", p.a += e == Wi ? "2147483648" : "" + -e, p.a; + } + a = 18, d = K(fs, gh, 28, a + 1, 15, 1), t = a, k = n; + do + l = k, k = Xk(k, 10), d[--t] = Ae(nr(48, bs(l, er(k, 10)))) & ui; + while (Cc(k, 0) != 0); + if (r = bs(bs(bs(a, t), e), 1), e == 0) + return h && (d[--t] = 45), ws(d, t, a - t); + if (e > 0 && Cc(r, -6) >= 0) { + if (Cc(r, 0) >= 0) { + for (c = t + Ae(r), f = a - 1; f >= c; f--) + d[f + 1] = d[f]; + return d[++c] = 46, h && (d[--t] = 45), ws(d, t, a - t + 1); + } + for (s = 2; ND(s, nr(n1(r), 1)); s++) + d[--t] = 48; + return d[--t] = 46, d[--t] = 48, h && (d[--t] = 45), ws(d, t, a - t); + } + return m = t + 1, i = a, g = new fg(), h && (g.a += "-"), i - m >= 1 ? (z1(g, d[t]), g.a += ".", g.a += ws(d, t + 1, a - t - 1)) : g.a += ws(d, t, a - t), g.a += "E", Cc(r, 0) > 0 && (g.a += "+"), g.a += "" + _6(r), g.a; + } + function G0(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + if (j = new V(n.g, n.f), k = Enn(n), k.a = y.Math.max(k.a, e), k.b = y.Math.max(k.b, t), X = k.a / j.a, a = k.b / j.b, N = k.a - j.a, h = k.b - j.b, i) + for (s = At(n) ? u(z(At(n), (He(), _d)), 88) : u(z(n, (He(), _d)), 88), f = x(z(n, (He(), v9))) === x((Di(), Uc)), I = new ne((!n.c && (n.c = new q(Qu, n, 9, 9)), n.c)); I.e != I.i.gc(); ) + switch (S = u(ue(I), 123), O = u(z(S, H2), 64), O == (en(), sc) && (O = Ken(S, s), ht(S, H2, O)), O.g) { + case 1: + f || tu(S, S.i * X); + break; + case 2: + tu(S, S.i + N), f || iu(S, S.j * a); + break; + case 3: + f || tu(S, S.i * X), iu(S, S.j + h); + break; + case 4: + f || iu(S, S.j * a); + } + if (kg(n, k.a, k.b), r) + for (g = new ne((!n.n && (n.n = new q(Sr, n, 1, 7)), n.n)); g.e != g.i.gc(); ) + d = u(ue(g), 135), p = d.i + d.g / 2, m = d.j + d.f / 2, _ = p / j.a, l = m / j.b, _ + l >= 1 && (_ - l > 0 && m >= 0 ? (tu(d, d.i + N), iu(d, d.j + h * l)) : _ - l < 0 && p >= 0 && (tu(d, d.i + N * _), iu(d, d.j + h))); + return ht(n, (He(), Hd), (go(), c = u(of(S9), 9), new _o(c, u(xs(c, c.length), 9), 0))), new V(X, a); + } + function YGn(n) { + r0(n, new gd(UE(e0(Yd(n0(Zd(new Ka(), es), "ELK Radial"), 'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'), new W4n()), es))), Q(n, es, TS, rn(hce)), Q(n, es, yw, rn(lce)), Q(n, es, r2, rn(uce)), Q(n, es, d3, rn(oce)), Q(n, es, a3, rn(sce)), Q(n, es, Xm, rn(cce)), Q(n, es, r8, rn(Qln)), Q(n, es, Vm, rn(fce)), Q(n, es, XR, rn(kq)), Q(n, es, zR, rn(yq)), Q(n, es, LS, rn(Zln)), Q(n, es, VR, rn(jq)), Q(n, es, WR, rn(n1n)), Q(n, es, Xrn, rn(e1n)), Q(n, es, zrn, rn(Yln)), Q(n, es, Hrn, rn(_I)), Q(n, es, qrn, rn(HI)), Q(n, es, Urn, rn(Fj)), Q(n, es, Grn, rn(t1n)), Q(n, es, _rn, rn(Jln)); + } + function zA(n) { + var e, t, i, r, c, s, f, h, l, a, d; + if (n == null) + throw M(new th(pu)); + if (l = n, c = n.length, h = !1, c > 0 && (e = (zn(0, n.length), n.charCodeAt(0)), (e == 45 || e == 43) && (n = (zn(1, n.length + 1), n.substr(1)), --c, h = e == 45)), c == 0) + throw M(new th(V0 + l + '"')); + for (; n.length > 0 && (zn(0, n.length), n.charCodeAt(0) == 48); ) + n = (zn(1, n.length + 1), n.substr(1)), --c; + if (c > (PUn(), pQn)[10]) + throw M(new th(V0 + l + '"')); + for (r = 0; r < c; r++) + if (WBn((zn(r, n.length), n.charCodeAt(r))) == -1) + throw M(new th(V0 + l + '"')); + for (d = 0, s = kun[10], a = JK[10], f = n1(yun[10]), t = !0, i = c % s, i > 0 && (d = -parseInt((Fi(0, i, n.length), n.substr(0, i)), 10), n = (zn(i, n.length + 1), n.substr(i)), c -= i, t = !1); c >= s; ) { + if (i = parseInt((Fi(0, s, n.length), n.substr(0, s)), 10), n = (zn(s, n.length + 1), n.substr(s)), c -= s, t) + t = !1; + else { + if (Cc(d, f) < 0) + throw M(new th(V0 + l + '"')); + d = er(d, a); + } + d = bs(d, i); + } + if (Cc(d, 0) > 0) + throw M(new th(V0 + l + '"')); + if (!h && (d = n1(d), Cc(d, 0) < 0)) + throw M(new th(V0 + l + '"')); + return d; + } + function otn(n) { + UF(); + var e, t, i, r, c, s, f, h; + if (n == null) + return null; + if (r = ih(n, gu(37)), r < 0) + return n; + for (h = new mo((Fi(0, r, n.length), n.substr(0, r))), e = K(Bu, s2, 28, 4, 15, 1), f = 0, i = 0, s = n.length; r < s; r++) + if (zn(r, n.length), n.charCodeAt(r) == 37 && n.length > r + 2 && R$((zn(r + 1, n.length), n.charCodeAt(r + 1)), Rdn, Kdn) && R$((zn(r + 2, n.length), n.charCodeAt(r + 2)), Rdn, Kdn)) + if (t = pbe((zn(r + 1, n.length), n.charCodeAt(r + 1)), (zn(r + 2, n.length), n.charCodeAt(r + 2))), r += 2, i > 0 ? (t & 192) == 128 ? e[f++] = t << 24 >> 24 : i = 0 : t >= 128 && ((t & 224) == 192 ? (e[f++] = t << 24 >> 24, i = 2) : (t & 240) == 224 ? (e[f++] = t << 24 >> 24, i = 3) : (t & 248) == 240 && (e[f++] = t << 24 >> 24, i = 4)), i > 0) { + if (f == i) { + switch (f) { + case 2: { + z1(h, ((e[0] & 31) << 6 | e[1] & 63) & ui); + break; + } + case 3: { + z1(h, ((e[0] & 15) << 12 | (e[1] & 63) << 6 | e[2] & 63) & ui); + break; + } + } + f = 0, i = 0; + } + } else { + for (c = 0; c < f; ++c) + z1(h, e[c] & ui); + f = 0, h.a += String.fromCharCode(t); + } + else { + for (c = 0; c < f; ++c) + z1(h, e[c] & ui); + f = 0, z1(h, (zn(r, n.length), n.charCodeAt(r))); + } + return h.a; + } + function ZGn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m; + if (p = At(Gr(u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84))), m = At(Gr(u(L((!n.c && (n.c = new Nn(he, n, 5, 8)), n.c), 0), 84))), d = p == m, f = new Li(), e = u(z(n, (NT(), odn)), 75), e && e.b >= 2) { + if ((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i == 0) + t = (B1(), r = new jE(), r), ve((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), t); + else if ((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i > 1) + for (g = new kp((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a)); g.e != g.i.gc(); ) + O5(g); + dy(e, u(L((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), 0), 166)); + } + if (d) + for (i = new ne((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a)); i.e != i.i.gc(); ) + for (t = u(ue(i), 166), l = new ne((!t.a && (t.a = new ti(xo, t, 5)), t.a)); l.e != l.i.gc(); ) + h = u(ue(l), 377), f.a = y.Math.max(f.a, h.a), f.b = y.Math.max(f.b, h.b); + for (s = new ne((!n.n && (n.n = new q(Sr, n, 1, 7)), n.n)); s.e != s.i.gc(); ) + c = u(ue(s), 135), a = u(z(c, j9), 8), a && Ro(c, a.a, a.b), d && (f.a = y.Math.max(f.a, c.i + c.g), f.b = y.Math.max(f.b, c.j + c.f)); + return f; + } + function nzn(n, e, t, i, r) { + var c, s, f; + if (e$n(n, e), s = e[0], c = Xi(t.c, 0), f = -1, rY(t)) + if (i > 0) { + if (s + i > n.length) + return !1; + f = yA((Fi(0, s + i, n.length), n.substr(0, s + i)), e); + } else + f = yA(n, e); + switch (c) { + case 71: + return f = Ug(n, s, A(T(fn, 1), J, 2, 6, [Rzn, Kzn]), e), r.e = f, !0; + case 77: + return aAe(n, e, r, f, s); + case 76: + return dAe(n, e, r, f, s); + case 69: + return rEe(n, e, s, r); + case 99: + return cEe(n, e, s, r); + case 97: + return f = Ug(n, s, A(T(fn, 1), J, 2, 6, ["AM", "PM"]), e), r.b = f, !0; + case 121: + return bAe(n, e, s, f, t, r); + case 100: + return f <= 0 ? !1 : (r.c = f, !0); + case 83: + return f < 0 ? !1 : k8e(f, s, e[0], r); + case 104: + f == 12 && (f = 0); + case 75: + case 72: + return f < 0 ? !1 : (r.f = f, r.g = !1, !0); + case 107: + return f < 0 ? !1 : (r.f = f, r.g = !0, !0); + case 109: + return f < 0 ? !1 : (r.j = f, !0); + case 115: + return f < 0 ? !1 : (r.n = f, !0); + case 90: + if (s < n.length && (zn(s, n.length), n.charCodeAt(s) == 90)) + return ++e[0], r.o = 0, !0; + case 122: + case 118: + return Sye(n, s, e, r); + default: + return !1; + } + } + function QDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn; + for (O = e.c.length, r = new Wg(n.a, t, null, null), yn = K(Ii, Ar, 28, O, 15, 1), k = K(Ii, Ar, 28, O, 15, 1), m = K(Ii, Ar, 28, O, 15, 1), j = 0, f = 0; f < O; f++) + k[f] = tt, m[f] = Wi; + for (h = 0; h < O; h++) + for (i = (Ln(h, e.c.length), u(e.c[h], 185)), yn[h] = gF(i), yn[j] > yn[h] && (j = h), d = new C(n.a.b); d.a < d.c.c.length; ) + for (a = u(E(d), 30), I = new C(a.a); I.a < I.c.c.length; ) + S = u(E(I), 10), X = $(i.p[S.p]) + $(i.d[S.p]), k[h] = y.Math.min(k[h], X), m[h] = y.Math.max(m[h], X + S.o.b); + for (tn = K(Ii, Ar, 28, O, 15, 1), l = 0; l < O; l++) + (Ln(l, e.c.length), u(e.c[l], 185)).o == (Pf(), Rd) ? tn[l] = k[j] - k[l] : tn[l] = m[j] - m[l]; + for (c = K(Ii, Ar, 28, O, 15, 1), p = new C(n.a.b); p.a < p.c.c.length; ) + for (g = u(E(p), 30), _ = new C(g.a); _.a < _.c.c.length; ) { + for (N = u(E(_), 10), s = 0; s < O; s++) + c[s] = $((Ln(s, e.c.length), u(e.c[s], 185)).p[N.p]) + $((Ln(s, e.c.length), u(e.c[s], 185)).d[N.p]) + tn[s]; + Iyn(c, O$n(mE.prototype.Me, mE, [])), r.p[N.p] = (c[1] + c[2]) / 2, r.d[N.p] = 0; + } + return r; + } + function YDe(n, e, t) { + var i, r, c, s, f; + switch (i = e.i, c = n.i.o, r = n.i.d, f = n.n, s = cc(A(T(Ei, 1), J, 8, 0, [f, n.a])), n.j.g) { + case 1: + uh(e, (wu(), Xs)), i.d = -r.d - t - i.a, u(u(sn(e.d, 0), 187).of((W(), A3)), 291) == (To(), nl) ? (df(e, (Uu(), zs)), i.c = s.a - $(R(v(n, y2))) - t - i.b) : (df(e, (Uu(), Mh)), i.c = s.a + $(R(v(n, y2))) + t); + break; + case 2: + df(e, (Uu(), Mh)), i.c = c.a + r.c + t, u(u(sn(e.d, 0), 187).of((W(), A3)), 291) == (To(), nl) ? (uh(e, (wu(), Xs)), i.d = s.b - $(R(v(n, y2))) - t - i.a) : (uh(e, (wu(), kf)), i.d = s.b + $(R(v(n, y2))) + t); + break; + case 3: + uh(e, (wu(), kf)), i.d = c.b + r.a + t, u(u(sn(e.d, 0), 187).of((W(), A3)), 291) == (To(), nl) ? (df(e, (Uu(), zs)), i.c = s.a - $(R(v(n, y2))) - t - i.b) : (df(e, (Uu(), Mh)), i.c = s.a + $(R(v(n, y2))) + t); + break; + case 4: + df(e, (Uu(), zs)), i.c = -r.b - t - i.b, u(u(sn(e.d, 0), 187).of((W(), A3)), 291) == (To(), nl) ? (uh(e, (wu(), Xs)), i.d = s.b - $(R(v(n, y2))) - t - i.a) : (uh(e, (wu(), kf)), i.d = s.b + $(R(v(n, y2))) + t); + } + } + function ZDe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k; + for (t.Ug(yVn, 1), !e.a && (e.a = new q(Ye, e, 10, 11)), i = $(R(z(e, (Rf(), zI)))), a = $(R(z(e, l9))), g = u(z(e, h9), 107), p = new bX(i, a), c = kzn(p, e, g), A$n(e, p), f = u(z(e, v1n), 17).a; f > 1; ) { + if (r = cTe(e), d = c.g, m = u(z(e, h9), 107), k = $(R(z(e, zI))), (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i > 1 && $(R(z(e, (_h(), Iq)))) != St && (c.c + (m.b + m.c)) / (c.b + (m.d + m.a)) < k ? ht(r, (_h(), Xw), $(R(z(e, Xw))) + $(R(z(e, Iq)))) : (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i > 1 && $(R(z(e, (_h(), Pq)))) != St && (c.c + (m.b + m.c)) / (c.b + (m.d + m.a)) > k && ht(r, (_h(), Xw), y.Math.max($(R(z(e, f9))), $(R(z(r, Xw))) - $(R(z(e, Pq))))), p = new bX(i, a), h = kzn(p, r, g), l = h.g, l >= d && l == l) { + for (s = 0; s < (!r.a && (r.a = new q(Ye, r, 10, 11)), r.a).i; s++) + X_n(n, u(L((!r.a && (r.a = new q(Ye, r, 10, 11)), r.a), s), 27), u(L((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a), s), 27)); + A$n(e, p), f2e(c, h.c), s2e(c, h.b); + } + --f; + } + ht(e, (_h(), Nv), c.b), ht(e, O3, c.c), t.Vg(); + } + function nLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + for (e.Ug("Interactive node layering", 1), t = new Z(), g = new C(n.a); g.a < g.c.c.length; ) { + for (a = u(E(g), 10), h = a.n.a, f = h + a.o.a, f = y.Math.max(h + 1, f), I = new xi(t, 0), i = null; I.b < I.d.gc(); ) + if (j = (oe(I.b < I.d.gc()), u(I.d.Xb(I.c = I.b++), 578)), j.c >= f) { + oe(I.b > 0), I.a.Xb(I.c = --I.b); + break; + } else + j.a > h && (i ? (hi(i.b, j.b), i.a = y.Math.max(i.a, j.a), bo(I)) : (nn(j.b, a), j.c = y.Math.min(j.c, h), j.a = y.Math.max(j.a, f), i = j)); + i || (i = new Wyn(), i.c = h, i.a = f, Rb(I, i), nn(i.b, a)); + } + for (s = n.b, l = 0, S = new C(t); S.a < S.c.c.length; ) + for (j = u(E(S), 578), r = new Nc(n), r.p = l++, Kn(s.c, r), p = new C(j.b); p.a < p.c.c.length; ) + a = u(E(p), 10), $i(a, r), a.p = 0; + for (d = new C(n.a); d.a < d.c.c.length; ) + if (a = u(E(d), 10), a.p == 0) + for (k = qqn(a, n); k.a.gc() != 0; ) + m = u(k.a.ec().Kc().Pb(), 10), k.a.Bc(m) != null, Bi(k, qqn(m, n)); + for (c = new xi(s, 0); c.b < c.d.gc(); ) + (oe(c.b < c.d.gc()), u(c.d.Xb(c.c = c.b++), 30)).a.c.length == 0 && bo(c); + n.a.c.length = 0, e.Vg(); + } + function eLe(n, e, t, i, r, c, s) { + var f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt; + for (p = 0, Fn = 0, h = new C(n); h.a < h.c.c.length; ) + f = u(E(h), 27), BGn(f), p = y.Math.max(p, f.g), Fn += f.g * f.f; + for (m = Fn / n.c.length, kn = B7e(n, m), Fn += n.c.length * kn, p = y.Math.max(p, y.Math.sqrt(Fn * s)) + t.b, xe = t.b, Lt = t.d, g = 0, a = t.b + t.c, yn = new Ct(), Fe(yn, Y(0)), X = new Ct(), l = new xi(n, 0); l.b < l.d.gc(); ) + f = (oe(l.b < l.d.gc()), u(l.d.Xb(l.c = l.b++), 27)), te = f.g, d = f.f, xe + te > p && (c && (ir(X, g), ir(yn, Y(l.b - 1))), xe = t.b, Lt += g + e, g = 0, a = y.Math.max(a, t.b + t.c + te)), tu(f, xe), iu(f, Lt), a = y.Math.max(a, xe + te + t.c), g = y.Math.max(g, d), xe += te + e; + if (a = y.Math.max(a, i), Rn = Lt + g + t.a, Rn < r && (g += r - Rn, Rn = r), c) + for (xe = t.b, l = new xi(n, 0), ir(yn, Y(n.c.length)), tn = ge(yn, 0), S = u(be(tn), 17).a, ir(X, g), _ = ge(X, 0), N = 0; l.b < l.d.gc(); ) + l.b == S && (xe = t.b, N = $(R(be(_))), S = u(be(tn), 17).a), f = (oe(l.b < l.d.gc()), u(l.d.Xb(l.c = l.b++), 27)), I = f.f, P0(f, N), k = N, l.b == S && (j = a - xe - t.c, O = f.g, I0(f, j), Mnn(f, new V(j, k), new V(O, I))), xe += f.g + e; + return new V(a, Rn); + } + function tLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn; + for (e.Ug("Compound graph postprocessor", 1), t = on(un(v(n, (cn(), DH)))), f = u(v(n, (W(), tfn)), 229), a = new ni(), S = f.ec().Kc(); S.Ob(); ) { + for (j = u(S.Pb(), 18), s = new _u(f.cc(j)), Dn(), Yt(s, new NG(n)), _ = ave((Ln(0, s.c.length), u(s.c[0], 249))), tn = Txn(u(sn(s, s.c.length - 1), 249)), O = _.i, Q4(tn.i, O) ? I = O.e : I = Hi(O), d = g9e(j, s), vo(j.a), g = null, c = new C(s); c.a < c.c.c.length; ) + r = u(E(c), 249), k = new Li(), vnn(k, r.a, I), p = r.b, i = new Tu(), J$(i, 0, p.a), nw(i, k), N = new rr(If(p.c)), X = new rr(If(p.d)), it(N, k), it(X, k), g && (i.b == 0 ? m = X : m = (oe(i.b != 0), u(i.a.a.c, 8)), yn = y.Math.abs(g.a - m.a) > vh, kn = y.Math.abs(g.b - m.b) > vh, (!t && yn && kn || t && (yn || kn)) && Fe(j.a, N)), Bi(j.a, i), i.b == 0 ? g = N : g = (oe(i.b != 0), u(i.c.b.c, 8)), Kve(p, d, k), Txn(r) == tn && (Hi(tn.i) != r.a && (k = new Li(), vnn(k, Hi(tn.i), I)), U(j, pH, k)), jje(p, j, I), a.a.zc(p, a); + Zi(j, _), Oi(j, tn); + } + for (l = a.a.ec().Kc(); l.Ob(); ) + h = u(l.Pb(), 18), Zi(h, null), Oi(h, null); + e.Vg(); + } + function iLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (r = u(v(n, (lc(), vb)), 88), a = r == (ci(), Br) || r == Xr ? Wf : Xr, t = u(Wr(ut(new Tn(null, new In(n.b, 16)), new e4n()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), h = u(Wr(_r(t.Oc(), new gkn(e)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), h.Gc(u(Wr(_r(t.Oc(), new pkn(e)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 16)), h.jd(new mkn(a)), g = new Ul(new vkn(r)), i = new de(), f = h.Kc(); f.Ob(); ) + s = u(f.Pb(), 240), l = u(s.a, 40), on(un(s.c)) ? (g.a.zc(l, (_n(), ga)) == null, new Y3(g.a.Zc(l, !1)).a.gc() > 0 && Ve(i, l, u(new Y3(g.a.Zc(l, !1)).a.Vc(), 40)), new Y3(g.a.ad(l, !0)).a.gc() > 1 && Ve(i, IBn(g, l), l)) : (new Y3(g.a.Zc(l, !1)).a.gc() > 0 && (c = u(new Y3(g.a.Zc(l, !1)).a.Vc(), 40), x(c) === x(Kr(gr(i.f, l))) && u(v(l, (pt(), eq)), 15).Fc(c)), new Y3(g.a.ad(l, !0)).a.gc() > 1 && (d = IBn(g, l), x(Kr(gr(i.f, d))) === x(l) && u(v(d, (pt(), eq)), 15).Fc(l)), g.a.Bc(l) != null); + } + function ezn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + if (n.gc() == 1) + return u(n.Xb(0), 235); + if (n.gc() <= 0) + return new zM(); + for (r = n.Kc(); r.Ob(); ) { + for (t = u(r.Pb(), 235), m = 0, a = tt, d = tt, h = Wi, l = Wi, p = new C(t.e); p.a < p.c.c.length; ) + g = u(E(p), 153), m += u(v(g, (Us(), k3)), 17).a, a = y.Math.min(a, g.d.a - g.e.a / 2), d = y.Math.min(d, g.d.b - g.e.b / 2), h = y.Math.max(h, g.d.a + g.e.a / 2), l = y.Math.max(l, g.d.b + g.e.b / 2); + U(t, (Us(), k3), Y(m)), U(t, (Q1(), D8), new V(a, d)), U(t, lj, new V(h, l)); + } + for (Dn(), n.jd(new zbn()), k = new zM(), Ur(k, u(n.Xb(0), 96)), f = 0, I = 0, c = n.Kc(); c.Ob(); ) + t = u(c.Pb(), 235), j = mi(Ki(u(v(t, (Q1(), lj)), 8)), u(v(t, D8), 8)), f = y.Math.max(f, j.a), I += j.a * j.b; + for (f = y.Math.max(f, y.Math.sqrt(I) * $(R(v(k, (Us(), XYn))))), S = $(R(v(k, yP))), O = 0, N = 0, s = 0, e = S, i = n.Kc(); i.Ob(); ) + t = u(i.Pb(), 235), j = mi(Ki(u(v(t, (Q1(), lj)), 8)), u(v(t, D8), 8)), O + j.a > f && (O = 0, N += s + S, s = 0), ISe(k, t, O, N), e = y.Math.max(e, O + j.a), s = y.Math.max(s, j.b), O += j.a + S; + return k; + } + function rLe(n) { + Ren(); + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (n == null || (c = iT(n), m = D5e(c), m % 4 != 0)) + return null; + if (k = m / 4 | 0, k == 0) + return K(Bu, s2, 28, 0, 15, 1); + for (d = null, e = 0, t = 0, i = 0, r = 0, s = 0, f = 0, h = 0, l = 0, p = 0, g = 0, a = 0, d = K(Bu, s2, 28, k * 3, 15, 1); p < k - 1; p++) { + if (!n7(s = c[a++]) || !n7(f = c[a++]) || !n7(h = c[a++]) || !n7(l = c[a++])) + return null; + e = nh[s], t = nh[f], i = nh[h], r = nh[l], d[g++] = (e << 2 | t >> 4) << 24 >> 24, d[g++] = ((t & 15) << 4 | i >> 2 & 15) << 24 >> 24, d[g++] = (i << 6 | r) << 24 >> 24; + } + return !n7(s = c[a++]) || !n7(f = c[a++]) ? null : (e = nh[s], t = nh[f], h = c[a++], l = c[a++], nh[h] == -1 || nh[l] == -1 ? h == 61 && l == 61 ? t & 15 ? null : (j = K(Bu, s2, 28, p * 3 + 1, 15, 1), Oc(d, 0, j, 0, p * 3), j[g] = (e << 2 | t >> 4) << 24 >> 24, j) : h != 61 && l == 61 ? (i = nh[h], i & 3 ? null : (j = K(Bu, s2, 28, p * 3 + 2, 15, 1), Oc(d, 0, j, 0, p * 3), j[g++] = (e << 2 | t >> 4) << 24 >> 24, j[g] = ((t & 15) << 4 | i >> 2 & 15) << 24 >> 24, j)) : null : (i = nh[h], r = nh[l], d[g++] = (e << 2 | t >> 4) << 24 >> 24, d[g++] = ((t & 15) << 4 | i >> 2 & 15) << 24 >> 24, d[g++] = (i << 6 | r) << 24 >> 24, d)); + } + function cLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _; + for (e.Ug(VXn, 1), m = u(v(n, (cn(), $l)), 223), r = new C(n.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), l = Y7(i.a), s = l, f = 0, h = s.length; f < h; ++f) + if (c = s[f], c.k == (Vn(), Hc)) { + if (m == (El(), F3)) + for (d = new C(c.j); d.a < d.c.c.length; ) + a = u(E(d), 12), a.e.c.length == 0 || J8e(a), a.g.c.length == 0 || Q8e(a); + else if (D(v(c, (W(), st)), 18)) + j = u(v(c, st), 18), S = u(h1(c, (en(), Wn)).Kc().Pb(), 12), I = u(h1(c, Zn).Kc().Pb(), 12), O = u(v(S, st), 12), N = u(v(I, st), 12), Zi(j, N), Oi(j, O), _ = new rr(I.i.n), _.a = cc(A(T(Ei, 1), J, 8, 0, [N.i.n, N.n, N.a])).a, Fe(j.a, _), _ = new rr(S.i.n), _.a = cc(A(T(Ei, 1), J, 8, 0, [O.i.n, O.n, O.a])).a, Fe(j.a, _); + else { + if (c.j.c.length >= 2) { + for (k = !0, g = new C(c.j), t = u(E(g), 12), p = null; g.a < g.c.c.length; ) + if (p = t, t = u(E(g), 12), !ct(v(p, st), v(t, st))) { + k = !1; + break; + } + } else + k = !1; + for (d = new C(c.j); d.a < d.c.c.length; ) + a = u(E(d), 12), a.e.c.length == 0 || $Te(a, k), a.g.c.length == 0 || xTe(a, k); + } + $i(c, null); + } + e.Vg(); + } + function uLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _; + for (f = new C(n.a.b); f.a < f.c.c.length; ) + for (c = u(E(f), 30), O = new C(c.a); O.a < O.c.c.length; ) + I = u(E(O), 10), e.g[I.p] = I, e.a[I.p] = I, e.d[I.p] = 0; + for (h = n.a.b, e.c == (fh(), y1) && (h = Qo(h)), s = h.Kc(); s.Ob(); ) + for (c = u(s.Pb(), 30), p = -1, g = c.a, e.o == (Pf(), Xf) && (p = tt, g = Qo(g)), _ = g.Kc(); _.Ob(); ) + if (N = u(_.Pb(), 10), d = null, e.c == y1 ? d = u(sn(n.b.f, N.p), 15) : d = u(sn(n.b.b, N.p), 15), d.gc() > 0) + if (i = d.gc(), l = wi(y.Math.floor((i + 1) / 2)) - 1, r = wi(y.Math.ceil((i + 1) / 2)) - 1, e.o == Xf) + for (a = r; a >= l; a--) + e.a[N.p] == N && (k = u(d.Xb(a), 42), m = u(k.a, 10), !sf(t, k.b) && p > n.b.e[m.p] && (e.a[m.p] = N, e.g[N.p] = e.g[m.p], e.a[N.p] = e.g[N.p], e.f[e.g[N.p].p] = (_n(), !!(on(e.f[e.g[N.p].p]) & N.k == (Vn(), Mi))), p = n.b.e[m.p])); + else + for (a = l; a <= r; a++) + e.a[N.p] == N && (S = u(d.Xb(a), 42), j = u(S.a, 10), !sf(t, S.b) && p < n.b.e[j.p] && (e.a[j.p] = N, e.g[N.p] = e.g[j.p], e.a[N.p] = e.g[N.p], e.f[e.g[N.p].p] = (_n(), !!(on(e.f[e.g[N.p].p]) & N.k == (Vn(), Mi))), p = n.b.e[j.p])); + } + function tzn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn; + return O = n.c[(Ln(0, e.c.length), u(e.c[0], 18)).p], tn = n.c[(Ln(1, e.c.length), u(e.c[1], 18)).p], O.a.e.e - O.a.a - (O.b.e.e - O.b.a) == 0 && tn.a.e.e - tn.a.a - (tn.b.e.e - tn.b.a) == 0 || (S = O.b.e.f, !D(S, 10)) ? !1 : (j = u(S, 10), _ = n.i[j.p], X = j.c ? qr(j.c.a, j, 0) : -1, c = St, X > 0 && (r = u(sn(j.c.a, X - 1), 10), s = n.i[r.p], yn = y.Math.ceil(jg(n.n, r, j)), c = _.a.e - j.d.d - (s.a.e + r.o.b + r.d.a) - yn), l = St, X < j.c.a.c.length - 1 && (h = u(sn(j.c.a, X + 1), 10), a = n.i[h.p], yn = y.Math.ceil(jg(n.n, h, j)), l = a.a.e - h.d.d - (_.a.e + j.o.b + j.d.a) - yn), t && (Tf(), Ks(jh), y.Math.abs(c - l) <= jh || c == l || isNaN(c) && isNaN(l)) ? !0 : (i = fN(O.a), f = -fN(O.b), d = -fN(tn.a), I = fN(tn.b), k = O.a.e.e - O.a.a - (O.b.e.e - O.b.a) > 0 && tn.a.e.e - tn.a.a - (tn.b.e.e - tn.b.a) < 0, m = O.a.e.e - O.a.a - (O.b.e.e - O.b.a) < 0 && tn.a.e.e - tn.a.a - (tn.b.e.e - tn.b.a) > 0, p = O.a.e.e + O.b.a < tn.b.e.e + tn.a.a, g = O.a.e.e + O.b.a > tn.b.e.e + tn.a.a, N = 0, !k && !m && (g ? c + d > 0 ? N = d : l - i > 0 && (N = i) : p && (c + f > 0 ? N = f : l - I > 0 && (N = I))), _.a.e += N, _.b && (_.d.e += N), !1)); + } + function izn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + if (i = new Ho(e.Lf().a, e.Lf().b, e.Mf().a, e.Mf().b), r = new mp(), n.c) + for (s = new C(e.Rf()); s.a < s.c.c.length; ) + c = u(E(s), 187), r.c = c.Lf().a + e.Lf().a, r.d = c.Lf().b + e.Lf().b, r.b = c.Mf().a, r.a = c.Mf().b, D5(i, r); + for (l = new C(e.Xf()); l.a < l.c.c.length; ) { + if (h = u(E(l), 852), a = h.Lf().a + e.Lf().a, d = h.Lf().b + e.Lf().b, n.e && (r.c = a, r.d = d, r.b = h.Mf().a, r.a = h.Mf().b, D5(i, r)), n.d) + for (s = new C(h.Rf()); s.a < s.c.c.length; ) + c = u(E(s), 187), r.c = c.Lf().a + a, r.d = c.Lf().b + d, r.b = c.Mf().a, r.a = c.Mf().b, D5(i, r); + if (n.b) { + if (g = new V(-t, -t), u(e.of((He(), Ww)), 181).Hc((zu(), Ia))) + for (s = new C(h.Rf()); s.a < s.c.c.length; ) + c = u(E(s), 187), g.a += c.Mf().a + t, g.b += c.Mf().b + t; + g.a = y.Math.max(g.a, 0), g.b = y.Math.max(g.b, 0), CUn(i, h.Wf(), h.Uf(), e, h, g, t); + } + } + n.b && CUn(i, e.Wf(), e.Uf(), e, null, null, t), f = new qL(e.Vf()), f.d = y.Math.max(0, e.Lf().b - i.d), f.a = y.Math.max(0, i.d + i.a - (e.Lf().b + e.Mf().b)), f.b = y.Math.max(0, e.Lf().a - i.c), f.c = y.Math.max(0, i.c + i.b - (e.Lf().a + e.Mf().a)), e.Zf(f); + } + function oLe() { + var n = ["\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006", "\\u0007", "\\b", "\\t", "\\n", "\\u000B", "\\f", "\\r", "\\u000E", "\\u000F", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001A", "\\u001B", "\\u001C", "\\u001D", "\\u001E", "\\u001F"]; + return n[34] = '\\"', n[92] = "\\\\", n[173] = "\\u00ad", n[1536] = "\\u0600", n[1537] = "\\u0601", n[1538] = "\\u0602", n[1539] = "\\u0603", n[1757] = "\\u06dd", n[1807] = "\\u070f", n[6068] = "\\u17b4", n[6069] = "\\u17b5", n[8203] = "\\u200b", n[8204] = "\\u200c", n[8205] = "\\u200d", n[8206] = "\\u200e", n[8207] = "\\u200f", n[8232] = "\\u2028", n[8233] = "\\u2029", n[8234] = "\\u202a", n[8235] = "\\u202b", n[8236] = "\\u202c", n[8237] = "\\u202d", n[8238] = "\\u202e", n[8288] = "\\u2060", n[8289] = "\\u2061", n[8290] = "\\u2062", n[8291] = "\\u2063", n[8292] = "\\u2064", n[8298] = "\\u206a", n[8299] = "\\u206b", n[8300] = "\\u206c", n[8301] = "\\u206d", n[8302] = "\\u206e", n[8303] = "\\u206f", n[65279] = "\\ufeff", n[65529] = "\\ufff9", n[65530] = "\\ufffa", n[65531] = "\\ufffb", n; + } + function rzn(n) { + r0(n, new gd(Ez(UE(e0(Yd(n0(Zd(new Ka(), uu), "ELK Force"), "Force-based algorithm provided by the Eclipse Layout Kernel. Implements methods that follow physical analogies by simulating forces that move the nodes into a balanced distribution. Currently the original Eades model and the Fruchterman - Reingold model are supported."), new Jbn()), uu), yt((Cm(), vO), A(T(kO, 1), G, 245, 0, [pO]))))), Q(n, uu, Ny, Y(1)), Q(n, uu, yw, 80), Q(n, uu, eR, 5), Q(n, uu, l3, Gm), Q(n, uu, uS, Y(1)), Q(n, uu, t8, (_n(), !0)), Q(n, uu, W0, von), Q(n, uu, i8, rn(gon)), Q(n, uu, tR, rn(kon)), Q(n, uu, oS, !1), Q(n, uu, r8, rn(mon)), Q(n, uu, zm, rn(QYn)), Q(n, uu, a3, rn(YYn)), Q(n, uu, r2, rn(JYn)), Q(n, uu, Xm, rn(WYn)), Q(n, uu, Vm, rn(nZn)), Q(n, uu, cS, rn(pon)), Q(n, uu, ZB, rn(y_)), Q(n, uu, Wtn, rn(kP)), Q(n, uu, nR, rn(k_)), Q(n, uu, Jtn, rn(yon)), Q(n, uu, $y, rn(uZn)), Q(n, uu, xy, rn(oZn)), Q(n, uu, Fy, rn(cZn)), Q(n, uu, By, rn(rZn)), Q(n, uu, J0, jon); + } + function sa(n, e) { + nt(); + var t, i, r, c, s, f, h, l, a, d, g, p, m; + if (c6(Uv) == 0) { + for (d = K($Ne, J, 122, jse.length, 0, 1), s = 0; s < d.length; s++) + d[s] = new yo(4); + for (i = new i6(), c = 0; c < l0n.length; c++) { + if (a = new yo(4), c < 84 ? (f = c * 2, p = (zn(f, BK.length), BK.charCodeAt(f)), g = (zn(f + 1, BK.length), BK.charCodeAt(f + 1)), Fc(a, p, g)) : (f = (c - 84) * 2, Fc(a, a0n[f], a0n[f + 1])), h = l0n[c], An(h, "Specials") && Fc(a, 65520, 65533), An(h, JJn) && (Fc(a, 983040, 1048573), Fc(a, 1048576, 1114109)), Dr(Uv, h, a), Dr(R9, h, bw(a)), l = i.a.length, 0 < l ? i.a = qo(i.a, 0, 0) : 0 > l && (i.a += OTn(K(fs, gh, 28, -l, 15, 1))), i.a += "Is", ih(h, gu(32)) >= 0) + for (r = 0; r < h.length; r++) + zn(r, h.length), h.charCodeAt(r) != 32 && T4(i, (zn(r, h.length), h.charCodeAt(r))); + else + i.a += "" + h; + nZ(i.a, h, !0); + } + nZ(FK, "Cn", !1), nZ(iun, "Cn", !0), t = new yo(4), Fc(t, 0, cv), Dr(Uv, "ALL", t), Dr(R9, "ALL", bw(t)), !rg && (rg = new de()), Dr(rg, FK, FK), !rg && (rg = new de()), Dr(rg, iun, iun), !rg && (rg = new de()), Dr(rg, "ALL", "ALL"); + } + return m = u($c(e ? Uv : R9, n), 138), m; + } + function czn(n) { + r0(n, new gd(Ez(UE(e0(Yd(n0(Zd(new Ka(), ou), "ELK Mr. Tree"), "Tree-based algorithm provided by the Eclipse Layout Kernel. Computes a spanning tree of the input graph and arranges all nodes according to the resulting parent-children hierarchy. I pity the fool who doesn't use Mr. Tree Layout."), new p4n()), pVn), jn((Cm(), mU))))), Q(n, ou, W0, Dln), Q(n, ou, yw, 20), Q(n, ou, $R, 3), Q(n, ou, l3, Gm), Q(n, ou, Ny, Y(1)), Q(n, ou, t8, (_n(), !0)), Q(n, ou, Uy, rn(Aln)), Q(n, ou, xR, Sln), Q(n, ou, i8, rn(Ere)), Q(n, ou, AS, rn(Cre)), Q(n, ou, r2, rn(Tre)), Q(n, ou, zm, rn(Are)), Q(n, ou, d3, rn(Sre)), Q(n, ou, a3, rn(Pre)), Q(n, ou, Xm, rn(Mre)), Q(n, ou, r8, rn(Iln)), Q(n, ou, Vm, rn(Ire)), Q(n, ou, Lrn, rn(xln)), Q(n, ou, $rn, rn(Lln)), Q(n, ou, $y, rn(Nre)), Q(n, ou, xy, rn($re)), Q(n, ou, Fy, rn(Lre)), Q(n, ou, By, rn(Dre)), Q(n, ou, J0, $ln), Q(n, ou, Drn, rn(O2)), Q(n, ou, Nrn, rn(sq)), Q(n, ou, Orn, rn(Sh)), Q(n, ou, Prn, rn(Tln)), Q(n, ou, Irn, rn(Pln)); + } + function uzn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (l = u(u(ot(n.r, e), 21), 87), s = Kye(n, e), t = n.u.Hc((zu(), T9)), h = l.Kc(); h.Ob(); ) + if (f = u(h.Pb(), 117), !(!f.c || f.c.d.c.length <= 0)) { + switch (g = f.b.Mf(), a = f.c, d = a.i, d.b = (c = a.n, a.e.a + c.b + c.c), d.a = (r = a.n, a.e.b + r.d + r.a), e.g) { + case 1: + f.a ? (d.c = (g.a - d.b) / 2, df(a, (Uu(), pa))) : s || t ? (d.c = -d.b - n.s, df(a, (Uu(), zs))) : (d.c = g.a + n.s, df(a, (Uu(), Mh))), d.d = -d.a - n.t, uh(a, (wu(), Xs)); + break; + case 3: + f.a ? (d.c = (g.a - d.b) / 2, df(a, (Uu(), pa))) : s || t ? (d.c = -d.b - n.s, df(a, (Uu(), zs))) : (d.c = g.a + n.s, df(a, (Uu(), Mh))), d.d = g.b + n.t, uh(a, (wu(), kf)); + break; + case 2: + f.a ? (i = n.v ? d.a : u(sn(a.d, 0), 187).Mf().b, d.d = (g.b - i) / 2, uh(a, (wu(), ma))) : s || t ? (d.d = -d.a - n.t, uh(a, (wu(), Xs))) : (d.d = g.b + n.t, uh(a, (wu(), kf))), d.c = g.a + n.s, df(a, (Uu(), Mh)); + break; + case 4: + f.a ? (i = n.v ? d.a : u(sn(a.d, 0), 187).Mf().b, d.d = (g.b - i) / 2, uh(a, (wu(), ma))) : s || t ? (d.d = -d.a - n.t, uh(a, (wu(), Xs))) : (d.d = g.b + n.t, uh(a, (wu(), kf))), d.c = -d.b - n.s, df(a, (Uu(), zs)); + } + s = !1; + } + } + function sLe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + if (g = !1, d = !1, mg(u(v(i, (cn(), Ut)), 101))) { + s = !1, f = !1; + n: + for (m = new C(i.j); m.a < m.c.c.length; ) + for (p = u(E(m), 12), j = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [new e4(p), new ip(p)]))); pe(j); ) + if (k = u(fe(j), 12), !on(un(v(k.i, q8)))) { + if (p.j == (en(), Xn)) { + s = !0; + break n; + } + if (p.j == ae) { + f = !0; + break n; + } + } + g = f && !s, d = s && !f; + } + if (!g && !d && i.b.c.length != 0) { + for (a = 0, l = new C(i.b); l.a < l.c.c.length; ) + h = u(E(l), 72), a += h.n.b + h.o.b / 2; + a /= i.b.c.length, I = a >= i.o.b / 2; + } else + I = !d; + I ? (S = u(v(i, (W(), P3)), 15), S ? g ? c = S : (r = u(v(i, C3), 15), r ? S.gc() <= r.gc() ? c = S : c = r : (c = new Z(), U(i, C3, c))) : (c = new Z(), U(i, P3, c))) : (r = u(v(i, (W(), C3)), 15), r ? d ? c = r : (S = u(v(i, P3), 15), S ? r.gc() <= S.gc() ? c = r : c = S : (c = new Z(), U(i, P3, c))) : (c = new Z(), U(i, C3, c))), c.Fc(n), U(n, (W(), tI), t), e.d == t ? (Oi(e, null), t.e.c.length + t.g.c.length == 0 && ic(t, null), E6e(t)) : (Zi(e, null), t.e.c.length + t.g.c.length == 0 && ic(t, null)), vo(e.a); + } + function fLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt; + for (t.Ug("MinWidth layering", 1), p = e.b, tn = e.a, Lt = u(v(e, (cn(), rhn)), 17).a, f = u(v(e, chn), 17).a, n.b = $(R(v(e, Ws))), n.d = St, N = new C(tn); N.a < N.c.c.length; ) + I = u(E(N), 10), I.k == (Vn(), Vt) && (Fn = I.o.b, n.d = y.Math.min(n.d, Fn)); + for (n.d = y.Math.max(1, n.d), yn = tn.c.length, n.c = K(ye, _e, 28, yn, 15, 1), n.f = K(ye, _e, 28, yn, 15, 1), n.e = K(Ii, Ar, 28, yn, 15, 1), l = 0, n.a = 0, _ = new C(tn); _.a < _.c.c.length; ) + I = u(E(_), 10), I.p = l++, n.c[I.p] = _Fn(ji(I)), n.f[I.p] = _Fn(Qt(I)), n.e[I.p] = I.o.b / n.d, n.a += n.e[I.p]; + for (n.b /= n.d, n.a /= yn, X = ZEe(tn), Yt(tn, UW(new N7n(n))), k = St, m = tt, s = null, xe = Lt, te = Lt, c = f, r = f, Lt < 0 && (xe = u(tln.a.Id(), 17).a, te = u(tln.b.Id(), 17).a), f < 0 && (c = u(eln.a.Id(), 17).a, r = u(eln.b.Id(), 17).a), Rn = xe; Rn <= te; Rn++) + for (i = c; i <= r; i++) + kn = qPe(n, Rn, i, tn, X), S = $(R(kn.a)), g = u(kn.b, 15), j = g.gc(), (S < k || S == k && j < m) && (k = S, m = j, s = g); + for (d = s.Kc(); d.Ob(); ) { + for (a = u(d.Pb(), 15), h = new Nc(e), O = a.Kc(); O.Ob(); ) + I = u(O.Pb(), 10), $i(I, h); + Kn(p.c, h); + } + Yk(p), tn.c.length = 0, t.Vg(); + } + function hLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + if (t.Ug("Spline edge routing", 1), e.b.c.length == 0) { + e.f.a = 0, t.Vg(); + return; + } + I = $(R(v(e, (cn(), A2)))), f = $(R(v(e, Bd))), s = $(R(v(e, M2))), S = u(v(e, MH), 350), yn = S == (om(), Y8), tn = $(R(v(e, Jfn))), n.d = e, n.j.c.length = 0, n.a.c.length = 0, Hu(n.k), h = u(sn(e.b, 0), 30), a = SC(h.a, (OA(), Dj)), m = u(sn(e.b, e.b.c.length - 1), 30), d = SC(m.a, Dj), k = new C(e.b), j = null, te = 0; + do { + for (O = k.a < k.c.c.length ? u(E(k), 30) : null, UDe(n, j, O), pPe(n), kn = phe(dve(EM(ut(new Tn(null, new In(n.i, 16)), new K3n()), new _3n()))), Rn = 0, N = te, g = !j || a && j == h, p = !O || d && O == m, kn > 0 ? (l = 0, j && (l += f), l += (kn - 1) * s, O && (l += f), yn && O && (l = y.Math.max(l, PTe(O, s, I, tn))), l < I && !g && !p && (Rn = (I - l) / 2, l = I), N += l) : !g && !p && (N += I), O && Jen(O, N), X = new C(n.i); X.a < X.c.c.length; ) + _ = u(E(X), 131), _.a.c = te, _.a.b = N - te, _.F = Rn, _.p = !j; + hi(n.a, n.i), te = N, O && (te += O.c.a), j = O, g = p; + } while (O); + for (r = new C(n.j); r.a < r.c.c.length; ) + i = u(E(r), 18), c = tve(n, i), U(i, (W(), C2), c), Fn = _Te(n, i), U(i, Dd, Fn); + e.f.a = te, n.d = null, t.Vg(); + } + function lLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (n.b = e, n.a = u(v(e, (cn(), Yfn)), 17).a, n.c = u(v(e, nhn), 17).a, n.c == 0 && (n.c = tt), j = new xi(e.b, 0); j.b < j.d.gc(); ) { + for (k = (oe(j.b < j.d.gc()), u(j.d.Xb(j.c = j.b++), 30)), f = new Z(), a = -1, N = -1, O = new C(k.a); O.a < O.c.c.length; ) + I = u(E(O), 10), wl((L7(), new ie(ce(Cl(I).a.Kc(), new En())))) >= n.a && (i = GPe(n, I), a = y.Math.max(a, i.b), N = y.Math.max(N, i.d), nn(f, new bi(I, i))); + for (yn = new Z(), l = 0; l < a; ++l) + b0(yn, 0, (oe(j.b > 0), j.a.Xb(j.c = --j.b), kn = new Nc(n.b), Rb(j, kn), oe(j.b < j.d.gc()), j.d.Xb(j.c = j.b++), kn)); + for (s = new C(f); s.a < s.c.c.length; ) + if (r = u(E(s), 42), p = u(r.b, 580).a, !!p) + for (g = new C(p); g.a < g.c.c.length; ) + d = u(E(g), 10), TZ(n, d, CP, yn); + for (t = new Z(), h = 0; h < N; ++h) + nn(t, (Fn = new Nc(n.b), Rb(j, Fn), Fn)); + for (c = new C(f); c.a < c.c.c.length; ) + if (r = u(E(c), 42), tn = u(r.b, 580).c, !!tn) + for (X = new C(tn); X.a < X.c.c.length; ) + _ = u(E(X), 10), TZ(n, _, MP, t); + } + for (S = new xi(e.b, 0); S.b < S.d.gc(); ) + m = (oe(S.b < S.d.gc()), u(S.d.Xb(S.c = S.b++), 30)), m.a.c.length == 0 && bo(S); + } + function ozn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + if (k = n.i != 0, O = !1, S = null, fo(n.e)) { + if (a = e.gc(), a > 0) { + for (g = a < 100 ? null : new F1(a), l = new _Q(e), m = l.g, S = K(ye, _e, 28, a, 15, 1), i = 0, N = new S0(a), r = 0; r < n.i; ++r) { + f = n.g[r], p = f; + n: + for (I = 0; I < 2; ++I) { + for (h = a; --h >= 0; ) + if (p != null ? ct(p, m[h]) : x(p) === x(m[h])) { + S.length <= i && (j = S, S = K(ye, _e, 28, 2 * S.length, 15, 1), Oc(j, 0, S, 0, i)), S[i++] = r, ve(N, m[h]); + break n; + } + if (p = p, x(p) === x(f)) + break; + } + } + if (l = N, m = N.g, a = i, i > S.length && (j = S, S = K(ye, _e, 28, i, 15, 1), Oc(j, 0, S, 0, i)), i > 0) { + for (O = !0, c = 0; c < i; ++c) + p = m[c], g = hSn(n, u(p, 76), g); + for (s = i; --s >= 0; ) + Jp(n, S[s]); + if (i != a) { + for (r = a; --r >= i; ) + Jp(l, r); + j = S, S = K(ye, _e, 28, i, 15, 1), Oc(j, 0, S, 0, i); + } + e = l; + } + } + } else + for (e = T7e(n, e), r = n.i; --r >= 0; ) + e.Hc(n.g[r]) && (Jp(n, r), O = !0); + if (O) { + if (S != null) { + for (t = e.gc(), d = t == 1 ? W6(n, 4, e.Kc().Pb(), null, S[0], k) : W6(n, 6, e, S, S[0], k), g = t < 100 ? null : new F1(t), r = e.Kc(); r.Ob(); ) + p = r.Pb(), g = IV(n, u(p, 76), g); + g ? (g.nj(d), g.oj()) : rt(n.e, d); + } else { + for (g = Dae(e.gc()), r = e.Kc(); r.Ob(); ) + p = r.Pb(), g = IV(n, u(p, 76), g); + g && g.oj(); + } + return !0; + } else + return !1; + } + function aLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (t = new jRn(e), t.a || _Se(e), l = BAe(e), h = new C0(), j = new Cqn(), k = new C(e.a); k.a < k.c.c.length; ) + for (m = u(E(k), 10), r = new ie(ce(Qt(m).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 18), (i.c.i.k == (Vn(), Zt) || i.d.i.k == Zt) && (a = nDe(n, i, l, j), Pn(h, Ex(a.d), a.a)); + for (s = new Z(), O = u(v(t.c, (W(), Nl)), 21).Kc(); O.Ob(); ) { + switch (I = u(O.Pb(), 64), p = j.c[I.g], g = j.b[I.g], f = j.a[I.g], c = null, S = null, I.g) { + case 4: + c = new Ho(n.d.a, p, l.b.a - n.d.a, g - p), S = new Ho(n.d.a, p, f, g - p), d0(l, new V(c.c + c.b, c.d)), d0(l, new V(c.c + c.b, c.d + c.a)); + break; + case 2: + c = new Ho(l.a.a, p, n.c.a - l.a.a, g - p), S = new Ho(n.c.a - f, p, f, g - p), d0(l, new V(c.c, c.d)), d0(l, new V(c.c, c.d + c.a)); + break; + case 1: + c = new Ho(p, n.d.b, g - p, l.b.b - n.d.b), S = new Ho(p, n.d.b, g - p, f), d0(l, new V(c.c, c.d + c.a)), d0(l, new V(c.c + c.b, c.d + c.a)); + break; + case 3: + c = new Ho(p, l.a.b, g - p, n.c.b - l.a.b), S = new Ho(p, n.c.b - f, g - p, f), d0(l, new V(c.c, c.d)), d0(l, new V(c.c + c.b, c.d)); + } + c && (d = new zyn(), d.d = I, d.b = c, d.c = S, d.a = SM(u(ot(h, Ex(I)), 21)), Kn(s.c, d)); + } + return hi(t.b, s), t.d = q6e(bOe(l)), t; + } + function szn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k; + if (t.p[e.p] == null) { + f = !0, t.p[e.p] = 0, s = e, k = t.o == (Pf(), Rd) ? li : St; + do + r = n.b.e[s.p], c = s.c.a.c.length, t.o == Rd && r > 0 || t.o == Xf && r < c - 1 ? (h = null, l = null, t.o == Xf ? h = u(sn(s.c.a, r + 1), 10) : h = u(sn(s.c.a, r - 1), 10), l = t.g[h.p], szn(n, l, t), k = n.e.wg(k, e, s), t.j[e.p] == e && (t.j[e.p] = t.j[l.p]), t.j[e.p] == t.j[l.p] ? (m = jg(n.d, s, h), t.o == Xf ? (i = $(t.p[e.p]), d = $(t.p[l.p]) + $(t.d[h.p]) - h.d.d - m - s.d.a - s.o.b - $(t.d[s.p]), f ? (f = !1, t.p[e.p] = y.Math.min(d, k)) : t.p[e.p] = y.Math.min(i, y.Math.min(d, k))) : (i = $(t.p[e.p]), d = $(t.p[l.p]) + $(t.d[h.p]) + h.o.b + h.d.a + m + s.d.d - $(t.d[s.p]), f ? (f = !1, t.p[e.p] = y.Math.max(d, k)) : t.p[e.p] = y.Math.max(i, y.Math.max(d, k)))) : (m = $(R(v(n.a, (cn(), gb)))), p = bxn(n, t.j[e.p]), a = bxn(n, t.j[l.p]), t.o == Xf ? (g = $(t.p[e.p]) + $(t.d[s.p]) + s.o.b + s.d.a + m - ($(t.p[l.p]) + $(t.d[h.p]) - h.d.d), _On(p, a, g)) : (g = $(t.p[e.p]) + $(t.d[s.p]) - s.d.d - $(t.p[l.p]) - $(t.d[h.p]) - h.o.b - h.d.a - m, _On(p, a, g)))) : k = n.e.wg(k, e, s), s = t.a[s.p]; + while (s != e); + Ufe(n.e, e); + } + } + function dLe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn; + if (t = $(R(v(n.a.j, (cn(), Ufn)))), t < -1 || !n.a.i || Ep(u(v(n.a.o, Ut), 101)) || uc(n.a.o, (en(), Zn)).gc() < 2 && uc(n.a.o, Wn).gc() < 2) + return !0; + if (n.a.c.kg()) + return !1; + for (_ = 0, N = 0, O = new Z(), h = n.a.e, l = 0, a = h.length; l < a; ++l) { + for (f = h[l], g = f, p = 0, k = g.length; p < k; ++p) { + if (d = g[p], d.k == (Vn(), Hc)) { + Kn(O.c, d); + continue; + } + for (i = n.b[d.c.p][d.p], d.k == Zt ? (i.b = 1, u(v(d, (W(), st)), 12).j == (en(), Zn) && (N += i.a)) : (kn = uc(d, (en(), Wn)), kn.dc() || !yL(kn, new n3n()) ? i.c = 1 : (r = uc(d, Zn), (r.dc() || !yL(r, new Zpn())) && (_ += i.a))), s = new ie(ce(Qt(d).a.Kc(), new En())); pe(s); ) + c = u(fe(s), 18), _ += i.c, N += i.b, yn = c.d.i, YJ(n, i, yn); + for (S = Eo(A(T(Oo, 1), Bn, 20, 0, [uc(d, (en(), Xn)), uc(d, ae)])), tn = new ie(new GX(S.a.length, S.a)); pe(tn); ) + X = u(fe(tn), 12), I = u(v(X, (W(), Xu)), 10), I && (_ += i.c, N += i.b, YJ(n, i, I)); + } + for (m = new C(O); m.a < m.c.c.length; ) + for (d = u(E(m), 10), i = n.b[d.c.p][d.p], s = new ie(ce(Qt(d).a.Kc(), new En())); pe(s); ) + c = u(fe(s), 18), _ += i.c, N += i.b, yn = c.d.i, YJ(n, i, yn); + O.c.length = 0; + } + return e = _ + N, j = e == 0 ? St : (_ - N) / e, j >= t; + } + function bLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + for (O = e, I = new C0(), N = new C0(), a = A0(O, Pcn), i = new OIn(n, t, I, N), Nje(i.a, i.b, i.c, i.d, a), h = (tn = I.i, tn || (I.i = new Mg(I, I.c))), kn = h.Kc(); kn.Ob(); ) + for (yn = u(kn.Pb(), 166), r = u(ot(I, yn), 21), k = r.Kc(); k.Ob(); ) + if (m = k.Pb(), _ = u(Lg(n.d, m), 166), _) + f = (!yn.e && (yn.e = new Nn(Mt, yn, 10, 9)), yn.e), ve(f, _); + else + throw s = bl(O, Eh), g = yWn + m + jWn + s, p = g + iv, M(new eh(p)); + for (l = (X = N.i, X || (N.i = new Mg(N, N.c))), Rn = l.Kc(); Rn.Ob(); ) + for (Fn = u(Rn.Pb(), 166), c = u(ot(N, Fn), 21), S = c.Kc(); S.Ob(); ) + if (j = S.Pb(), _ = u(Lg(n.d, j), 166), _) + d = (!Fn.g && (Fn.g = new Nn(Mt, Fn, 9, 10)), Fn.g), ve(d, _); + else + throw s = bl(O, Eh), g = yWn + j + jWn + s, p = g + iv, M(new eh(p)); + !t.b && (t.b = new Nn(he, t, 4, 7)), t.b.i != 0 && (!t.c && (t.c = new Nn(he, t, 5, 8)), t.c.i != 0) && (!t.b && (t.b = new Nn(he, t, 4, 7)), t.b.i <= 1 && (!t.c && (t.c = new Nn(he, t, 5, 8)), t.c.i <= 1)) && (!t.a && (t.a = new q(Mt, t, 6, 6)), t.a).i == 1 && (te = u(L((!t.a && (t.a = new q(Mt, t, 6, 6)), t.a), 0), 166), !Sx(te) && !Px(te) && (mT(te, u(L((!t.b && (t.b = new Nn(he, t, 4, 7)), t.b), 0), 84)), vT(te, u(L((!t.c && (t.c = new Nn(he, t, 5, 8)), t.c), 0), 84)))); + } + function wLe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (O = n.a, N = 0, _ = O.length; N < _; ++N) { + for (I = O[N], l = tt, a = tt, m = new C(I.e); m.a < m.c.c.length; ) + g = u(E(m), 10), s = g.c ? qr(g.c.a, g, 0) : -1, s > 0 ? (d = u(sn(g.c.a, s - 1), 10), yn = jg(n.b, g, d), j = g.n.b - g.d.d - (d.n.b + d.o.b + d.d.a + yn)) : j = g.n.b - g.d.d, l = y.Math.min(j, l), s < g.c.a.c.length - 1 ? (d = u(sn(g.c.a, s + 1), 10), yn = jg(n.b, g, d), S = d.n.b - d.d.d - (g.n.b + g.o.b + g.d.a + yn)) : S = 2 * g.n.b, a = y.Math.min(S, a); + for (h = tt, c = !1, r = u(sn(I.e, 0), 10), Fn = new C(r.j); Fn.a < Fn.c.c.length; ) + for (kn = u(E(Fn), 12), k = r.n.b + kn.n.b + kn.a.b, i = new C(kn.e); i.a < i.c.c.length; ) + t = u(E(i), 18), X = t.c, e = X.i.n.b + X.n.b + X.a.b - k, y.Math.abs(e) < y.Math.abs(h) && y.Math.abs(e) < (e < 0 ? l : a) && (h = e, c = !0); + for (f = u(sn(I.e, I.e.c.length - 1), 10), tn = new C(f.j); tn.a < tn.c.c.length; ) + for (X = u(E(tn), 12), k = f.n.b + X.n.b + X.a.b, i = new C(X.g); i.a < i.c.c.length; ) + t = u(E(i), 18), kn = t.d, e = kn.i.n.b + kn.n.b + kn.a.b - k, y.Math.abs(e) < y.Math.abs(h) && y.Math.abs(e) < (e < 0 ? l : a) && (h = e, c = !0); + if (c && h != 0) + for (p = new C(I.e); p.a < p.c.c.length; ) + g = u(E(p), 10), g.n.b += h; + } + } + function gLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + if (i = new Z(), r = tt, c = tt, s = tt, t) + for (r = n.f.a, k = new C(e.j); k.a < k.c.c.length; ) + for (m = u(E(k), 12), h = new C(m.g); h.a < h.c.c.length; ) + f = u(E(h), 18), f.a.b != 0 && (a = u(p4(f.a), 8), a.a < r && (c = r - a.a, s = tt, i.c.length = 0, r = a.a), a.a <= r && (Kn(i.c, f), f.a.b > 1 && (s = y.Math.min(s, y.Math.abs(u(Zo(f.a, 1), 8).b - a.b))))); + else + for (k = new C(e.j); k.a < k.c.c.length; ) + for (m = u(E(k), 12), h = new C(m.e); h.a < h.c.c.length; ) + f = u(E(h), 18), f.a.b != 0 && (g = u($s(f.a), 8), g.a > r && (c = g.a - r, s = tt, i.c.length = 0, r = g.a), g.a >= r && (Kn(i.c, f), f.a.b > 1 && (s = y.Math.min(s, y.Math.abs(u(Zo(f.a, f.a.b - 2), 8).b - g.b))))); + if (i.c.length != 0 && c > e.o.a / 2 && s > e.o.b / 2) { + for (p = new Ic(), ic(p, e), gi(p, (en(), Xn)), p.n.a = e.o.a / 2, S = new Ic(), ic(S, e), gi(S, ae), S.n.a = e.o.a / 2, S.n.b = e.o.b, h = new C(i); h.a < h.c.c.length; ) + f = u(E(h), 18), t ? (l = u(UL(f.a), 8), j = f.a.b == 0 ? If(f.d) : u(p4(f.a), 8), j.b >= l.b ? Zi(f, S) : Zi(f, p)) : (l = u(ube(f.a), 8), j = f.a.b == 0 ? If(f.c) : u($s(f.a), 8), j.b >= l.b ? Oi(f, S) : Oi(f, p)), d = u(v(f, (cn(), Fr)), 75), d && iw(d, l, !0); + e.n.a = r - e.o.a / 2; + } + } + function pLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (f = ge(n.b, 0); f.b != f.d.c; ) + if (s = u(be(f), 40), !An(s.c, IS)) + for (l = HCe(s, n), e == (ci(), Br) || e == Xr ? Yt(l, new T4n()) : Yt(l, new A4n()), h = l.c.length, i = 0; i < h; i++) + a = (Ln(i, l.c.length), u(l.c[i], 65)).c, An(a.c, "n11"), !(on(un(v(s, (pt(), mln)))) && !TFn((Ln(i, l.c.length), u(l.c[i], 65)), n)) && (r = h == 1 ? 0.5 : (i + 1) / (h + 1), e == Br ? (c = $(R(v(s, jf))), g = s.e.b + s.f.b * r, gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(y.Math.min(c, s.e.a - t), g)), gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(s.e.a, g))) : e == Xr ? (c = $(R(v(s, Js))) + t, g = s.e.b + s.f.b * r, gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(c, g)), gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(s.e.a + s.f.a, g))) : e == us ? (c = $(R(v(s, jf))), d = s.e.a + s.f.a * r, gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(d, y.Math.min(s.e.b - t, c))), gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(d, s.e.b))) : (c = $(R(v(s, Js))) + t, d = s.e.a + s.f.a * r, gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(d, c)), gg((Ln(i, l.c.length), u(l.c[i], 65)).a, new V(d, s.e.b + s.f.b)))); + } + function my(n, e, t, i, r, c, s, f, h) { + var l, a, d, g, p, m, k; + switch (p = t, a = new Tl(h), Ha(a, (Vn(), Zt)), U(a, (W(), ifn), s), U(a, (cn(), Ut), (Di(), Uc)), k = $(R(n.of(Kw))), U(a, Kw, k), d = new Ic(), ic(d, a), e != Qf && e != Pa || (i >= 0 ? p = zp(f) : p = xk(zp(f)), n.qf(Mv, p)), l = new Li(), g = !1, n.pf(bb) ? (nV(l, u(n.of(bb), 8)), g = !0) : A1e(l, s.a / 2, s.b / 2), p.g) { + case 4: + U(a, su, (Yo(), ya)), U(a, rI, (hd(), m2)), a.o.b = s.b, k < 0 && (a.o.a = -k), gi(d, (en(), Zn)), g || (l.a = s.a), l.a -= s.a; + break; + case 2: + U(a, su, (Yo(), xw)), U(a, rI, (hd(), mv)), a.o.b = s.b, k < 0 && (a.o.a = -k), gi(d, (en(), Wn)), g || (l.a = 0); + break; + case 1: + U(a, Od, (vl(), k2)), a.o.a = s.a, k < 0 && (a.o.b = -k), gi(d, (en(), ae)), g || (l.b = s.b), l.b -= s.b; + break; + case 3: + U(a, Od, (vl(), E3)), a.o.a = s.a, k < 0 && (a.o.b = -k), gi(d, (en(), Xn)), g || (l.b = 0); + } + if (nV(d.n, l), U(a, bb, l), e == Ud || e == tl || e == Uc) { + if (m = 0, e == Ud && n.pf(v1)) + switch (p.g) { + case 1: + case 2: + m = u(n.of(v1), 17).a; + break; + case 3: + case 4: + m = -u(n.of(v1), 17).a; + } + else + switch (p.g) { + case 4: + case 2: + m = c.b, e == tl && (m /= r.b); + break; + case 1: + case 3: + m = c.a, e == tl && (m /= r.a); + } + U(a, fb, m); + } + return U(a, gc, p), a; + } + function mLe() { + Mz(); + function n(i) { + var r = this; + this.dispatch = function(c) { + var s = c.data; + switch (s.cmd) { + case "algorithms": + var f = zY((Dn(), new Q3(new ol(Da.b)))); + i.postMessage({ id: s.id, data: f }); + break; + case "categories": + var h = zY((Dn(), new Q3(new ol(Da.c)))); + i.postMessage({ id: s.id, data: h }); + break; + case "options": + var l = zY((Dn(), new Q3(new ol(Da.d)))); + i.postMessage({ id: s.id, data: l }); + break; + case "register": + yOe(s.algorithms), i.postMessage({ id: s.id }); + break; + case "layout": + JPe(s.graph, s.layoutOptions || {}, s.options || {}), i.postMessage({ id: s.id, data: s.graph }); + break; + } + }, this.saveDispatch = function(c) { + try { + r.dispatch(c); + } catch (s) { + i.postMessage({ id: c.data.id, error: s }); + } + }; + } + function e(i) { + var r = this; + this.dispatcher = new n({ postMessage: function(c) { + r.onmessage({ data: c }); + } }), this.postMessage = function(c) { + setTimeout(function() { + r.dispatcher.saveDispatch({ data: c }); + }, 0); + }; + } + if (typeof document === xB && typeof self !== xB) { + var t = new n(self); + self.onmessage = t.saveDispatch; + } else + typeof wt !== xB && wt.exports && (Object.defineProperty(dr, "__esModule", { value: !0 }), wt.exports = { default: e, Worker: e }); + } + function fzn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (a = new Tl(t), Ur(a, e), U(a, (W(), st), e), a.o.a = e.g, a.o.b = e.f, a.n.a = e.i, a.n.b = e.j, nn(t.a, a), Ve(n.a, e, a), ((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i != 0 || on(un(z(e, (cn(), Rw))))) && U(a, nfn, (_n(), !0)), l = u(v(t, qc), 21), d = u(v(a, (cn(), Ut)), 101), d == (Di(), Pa) ? U(a, Ut, Qf) : d != Qf && l.Fc((mr(), yv)), g = 0, i = u(v(t, Do), 88), h = new ne((!e.c && (e.c = new q(Qu, e, 9, 9)), e.c)); h.e != h.i.gc(); ) + f = u(ue(h), 123), r = At(e), (x(z(r, Yh)) !== x((lh(), k1)) || x(z(r, Ld)) === x((o1(), pv)) || x(z(r, Ld)) === x((o1(), gv)) || on(un(z(r, lb))) || x(z(r, Fw)) !== x((dd(), Ow)) || x(z(r, ja)) === x((ps(), pb)) || x(z(r, ja)) === x((ps(), Uw)) || x(z(r, $d)) === x((a1(), Pv)) || x(z(r, $d)) === x((a1(), Iv))) && !on(un(z(e, lI))) && ht(f, dt, Y(g++)), on(un(z(f, Fd))) || SDe(n, f, a, l, i, d); + for (s = new ne((!e.n && (e.n = new q(Sr, e, 1, 7)), e.n)); s.e != s.i.gc(); ) + c = u(ue(s), 135), !on(un(z(c, Fd))) && c.a && nn(a.b, ex(c)); + return on(un(v(a, q8))) && l.Fc((mr(), ZP)), on(un(v(a, wI))) && (l.Fc((mr(), nI)), l.Fc(F8), U(a, Ut, Qf)), a; + } + function QF(n, e, t, i, r, c, s) { + var f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt; + for (k = 0, Fn = 0, l = new C(n.b); l.a < l.c.c.length; ) + h = u(E(l), 163), h.c && BGn(h.c), k = y.Math.max(k, Pu(h)), Fn += Pu(h) * ao(h); + for (j = Fn / n.b.c.length, kn = vke(n.b, j), Fn += n.b.c.length * kn, k = y.Math.max(k, y.Math.sqrt(Fn * s)) + t.b, xe = t.b, Lt = t.d, p = 0, d = t.b + t.c, yn = new Ct(), Fe(yn, Y(0)), X = new Ct(), a = new xi(n.b, 0), m = null, f = new Z(); a.b < a.d.gc(); ) + h = (oe(a.b < a.d.gc()), u(a.d.Xb(a.c = a.b++), 163)), te = Pu(h), g = ao(h), xe + te > k && (c && (ir(X, p), ir(yn, Y(a.b - 1)), nn(n.d, m), f.c.length = 0), xe = t.b, Lt += p + e, p = 0, d = y.Math.max(d, t.b + t.c + te)), Kn(f.c, h), bRn(h, xe, Lt), d = y.Math.max(d, xe + te + t.c), p = y.Math.max(p, g), xe += te + e, m = h; + if (hi(n.a, f), nn(n.d, u(sn(f, f.c.length - 1), 163)), d = y.Math.max(d, i), Rn = Lt + p + t.a, Rn < r && (p += r - Rn, Rn = r), c) + for (xe = t.b, a = new xi(n.b, 0), ir(yn, Y(n.b.c.length)), tn = ge(yn, 0), I = u(be(tn), 17).a, ir(X, p), _ = ge(X, 0), N = 0; a.b < a.d.gc(); ) + a.b == I && (xe = t.b, N = $(R(be(_))), I = u(be(tn), 17).a), h = (oe(a.b < a.d.gc()), u(a.d.Xb(a.c = a.b++), 163)), zBn(h, N), a.b == I && (S = d - xe - t.c, O = Pu(h), XBn(h, S), vBn(h, (S - O) / 2, 0)), xe += Pu(h) + e; + return new V(d, Rn); + } + function vLe(n) { + n.N || (n.N = !0, n.b = hc(n, 0), _t(n.b, 0), _t(n.b, 1), _t(n.b, 2), n.bb = hc(n, 1), _t(n.bb, 0), _t(n.bb, 1), n.fb = hc(n, 2), _t(n.fb, 3), _t(n.fb, 4), jt(n.fb, 5), n.qb = hc(n, 3), _t(n.qb, 0), jt(n.qb, 1), jt(n.qb, 2), _t(n.qb, 3), _t(n.qb, 4), jt(n.qb, 5), _t(n.qb, 6), n.a = Je(n, 4), n.c = Je(n, 5), n.d = Je(n, 6), n.e = Je(n, 7), n.f = Je(n, 8), n.g = Je(n, 9), n.i = Je(n, 10), n.j = Je(n, 11), n.k = Je(n, 12), n.n = Je(n, 13), n.o = Je(n, 14), n.p = Je(n, 15), n.q = Je(n, 16), n.s = Je(n, 17), n.r = Je(n, 18), n.t = Je(n, 19), n.u = Je(n, 20), n.v = Je(n, 21), n.w = Je(n, 22), n.B = Je(n, 23), n.A = Je(n, 24), n.C = Je(n, 25), n.D = Je(n, 26), n.F = Je(n, 27), n.G = Je(n, 28), n.H = Je(n, 29), n.J = Je(n, 30), n.I = Je(n, 31), n.K = Je(n, 32), n.M = Je(n, 33), n.L = Je(n, 34), n.P = Je(n, 35), n.Q = Je(n, 36), n.R = Je(n, 37), n.S = Je(n, 38), n.T = Je(n, 39), n.U = Je(n, 40), n.V = Je(n, 41), n.X = Je(n, 42), n.W = Je(n, 43), n.Y = Je(n, 44), n.Z = Je(n, 45), n.$ = Je(n, 46), n._ = Je(n, 47), n.ab = Je(n, 48), n.cb = Je(n, 49), n.db = Je(n, 50), n.eb = Je(n, 51), n.gb = Je(n, 52), n.hb = Je(n, 53), n.ib = Je(n, 54), n.jb = Je(n, 55), n.kb = Je(n, 56), n.lb = Je(n, 57), n.mb = Je(n, 58), n.nb = Je(n, 59), n.ob = Je(n, 60), n.pb = Je(n, 61)); + } + function kLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + if (I = 0, e.f.a == 0) + for (j = new C(n); j.a < j.c.c.length; ) + m = u(E(j), 10), I = y.Math.max(I, m.n.a + m.o.a + m.d.c); + else + I = e.f.a - e.c.a; + for (I -= e.c.a, k = new C(n); k.a < k.c.c.length; ) { + switch (m = u(E(k), 10), Jv(m.n, I - m.o.a), QV(m.f), GRn(m), (m.q ? m.q : (Dn(), Dn(), Wh))._b((cn(), Hw)) && Jv(u(v(m, Hw), 8), I - m.o.a), u(v(m, Th), 255).g) { + case 1: + U(m, Th, (Rh(), Uj)); + break; + case 2: + U(m, Th, (Rh(), qj)); + } + for (S = m.o, N = new C(m.j); N.a < N.c.c.length; ) { + for (O = u(E(N), 12), Jv(O.n, S.a - O.o.a), Jv(O.a, O.o.a), gi(O, Axn(O.j)), s = u(v(O, v1), 17), s && U(O, v1, Y(-s.a)), c = new C(O.g); c.a < c.c.c.length; ) { + for (r = u(E(c), 18), i = ge(r.a, 0); i.b != i.d.c; ) + t = u(be(i), 8), t.a = I - t.a; + if (l = u(v(r, Fr), 75), l) + for (h = ge(l, 0); h.b != h.d.c; ) + f = u(be(h), 8), f.a = I - f.a; + for (g = new C(r.b); g.a < g.c.c.length; ) + a = u(E(g), 72), Jv(a.n, I - a.o.a); + } + for (p = new C(O.f); p.a < p.c.c.length; ) + a = u(E(p), 72), Jv(a.n, O.o.a - a.o.a); + } + for (m.k == (Vn(), Zt) && (U(m, (W(), gc), Axn(u(v(m, gc), 64))), oje(m)), d = new C(m.b); d.a < d.c.c.length; ) + a = u(E(d), 72), GRn(a), Jv(a.n, S.a - a.o.a); + } + } + function yLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + if (I = 0, e.f.b == 0) + for (j = new C(n); j.a < j.c.c.length; ) + m = u(E(j), 10), I = y.Math.max(I, m.n.b + m.o.b + m.d.a); + else + I = e.f.b - e.c.b; + for (I -= e.c.b, k = new C(n); k.a < k.c.c.length; ) { + switch (m = u(E(k), 10), Wv(m.n, I - m.o.b), YV(m.f), zRn(m), (m.q ? m.q : (Dn(), Dn(), Wh))._b((cn(), Hw)) && Wv(u(v(m, Hw), 8), I - m.o.b), u(v(m, Th), 255).g) { + case 3: + U(m, Th, (Rh(), ZI)); + break; + case 4: + U(m, Th, (Rh(), eO)); + } + for (S = m.o, N = new C(m.j); N.a < N.c.c.length; ) { + for (O = u(E(N), 12), Wv(O.n, S.b - O.o.b), Wv(O.a, O.o.b), gi(O, Sxn(O.j)), s = u(v(O, v1), 17), s && U(O, v1, Y(-s.a)), c = new C(O.g); c.a < c.c.c.length; ) { + for (r = u(E(c), 18), i = ge(r.a, 0); i.b != i.d.c; ) + t = u(be(i), 8), t.b = I - t.b; + if (l = u(v(r, Fr), 75), l) + for (h = ge(l, 0); h.b != h.d.c; ) + f = u(be(h), 8), f.b = I - f.b; + for (g = new C(r.b); g.a < g.c.c.length; ) + a = u(E(g), 72), Wv(a.n, I - a.o.b); + } + for (p = new C(O.f); p.a < p.c.c.length; ) + a = u(E(p), 72), Wv(a.n, O.o.b - a.o.b); + } + for (m.k == (Vn(), Zt) && (U(m, (W(), gc), Sxn(u(v(m, gc), 64))), j5e(m)), d = new C(m.b); d.a < d.c.c.length; ) + a = u(E(d), 72), zRn(a), Wv(a.n, S.b - a.o.b); + } + } + function jLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe; + for (I = new xi(n.b, 0), a = e.Kc(), m = 0, l = u(a.Pb(), 17).a, _ = 0, t = new ni(), tn = new rh(); I.b < I.d.gc(); ) { + for (S = (oe(I.b < I.d.gc()), u(I.d.Xb(I.c = I.b++), 30)), N = new C(S.a); N.a < N.c.c.length; ) { + for (O = u(E(N), 10), p = new ie(ce(Qt(O).a.Kc(), new En())); pe(p); ) + d = u(fe(p), 18), tn.a.zc(d, tn); + for (g = new ie(ce(ji(O).a.Kc(), new En())); pe(g); ) + d = u(fe(g), 18), tn.a.Bc(d) != null; + } + if (m + 1 == l) { + for (r = new Nc(n), Rb(I, r), c = new Nc(n), Rb(I, c), kn = tn.a.ec().Kc(); kn.Ob(); ) + yn = u(kn.Pb(), 18), t.a._b(yn) || (++_, t.a.zc(yn, t)), s = new Tl(n), U(s, (cn(), Ut), (Di(), Kv)), $i(s, r), Ha(s, (Vn(), Gf)), k = new Ic(), ic(k, s), gi(k, (en(), Wn)), Fn = new Ic(), ic(Fn, s), gi(Fn, Zn), i = new Tl(n), U(i, Ut, Kv), $i(i, c), Ha(i, Gf), j = new Ic(), ic(j, i), gi(j, Wn), Rn = new Ic(), ic(Rn, i), gi(Rn, Zn), X = new E0(), Zi(X, yn.c), Oi(X, k), U(X, (W(), dt), u(v(yn, dt), 17)), xe = new E0(), Zi(xe, Fn), Oi(xe, j), U(xe, dt, u(v(yn, dt), 17)), Zi(yn, Rn), f = new CJ(s, i, X, xe, yn), U(s, ob, f), U(i, ob, f), te = X.c.i, te.k == Gf && (h = u(v(te, ob), 313), h.d = f, f.g = h); + if (a.Ob()) + l = u(a.Pb(), 17).a; + else + break; + } + ++m; + } + return Y(_); + } + function ELe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (k = new Z(), g = new C(n.d.b); g.a < g.c.c.length; ) + for (d = u(E(g), 30), m = new C(d.a); m.a < m.c.c.length; ) { + for (p = u(E(m), 10), r = u(ee(n.f, p), 60), h = new ie(ce(Qt(p).a.Kc(), new En())); pe(h); ) + if (s = u(fe(h), 18), i = ge(s.a, 0), l = !0, a = null, i.b != i.d.c) { + for (e = u(be(i), 8), t = null, s.c.j == (en(), Xn) && (j = new q5(e, new V(e.a, r.d.d), r, s), j.f.a = !0, j.a = s.c, Kn(k.c, j)), s.c.j == ae && (j = new q5(e, new V(e.a, r.d.d + r.d.a), r, s), j.f.d = !0, j.a = s.c, Kn(k.c, j)); i.b != i.d.c; ) + t = u(be(i), 8), dQ(e.b, t.b) || (a = new q5(e, t, null, s), Kn(k.c, a), l && (l = !1, t.b < r.d.d ? a.f.a = !0 : t.b > r.d.d + r.d.a ? a.f.d = !0 : (a.f.d = !0, a.f.a = !0))), i.b != i.d.c && (e = t); + a && (c = u(ee(n.f, s.d.i), 60), e.b < c.d.d ? a.f.a = !0 : e.b > c.d.d + c.d.a ? a.f.d = !0 : (a.f.d = !0, a.f.a = !0)); + } + for (f = new ie(ce(ji(p).a.Kc(), new En())); pe(f); ) + s = u(fe(f), 18), s.a.b != 0 && (e = u($s(s.a), 8), s.d.j == (en(), Xn) && (j = new q5(e, new V(e.a, r.d.d), r, s), j.f.a = !0, j.a = s.d, Kn(k.c, j)), s.d.j == ae && (j = new q5(e, new V(e.a, r.d.d + r.d.a), r, s), j.f.d = !0, j.a = s.d, Kn(k.c, j))); + } + return k; + } + function CLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g; + for (h = new Z(), d = e.length, s = iY(t), l = 0; l < d; ++l) { + switch (a = zX(e, gu(61), l), i = k5e(s, (Fi(l, a, e.length), e.substr(l, a - l))), r = x$(i), c = r.jk().wi(), Xi(e, ++a)) { + case 39: { + f = w4(e, 39, ++a), nn(h, new MC(i, jN((Fi(a, f, e.length), e.substr(a, f - a)), c, r))), l = f + 1; + break; + } + case 34: { + f = w4(e, 34, ++a), nn(h, new MC(i, jN((Fi(a, f, e.length), e.substr(a, f - a)), c, r))), l = f + 1; + break; + } + case 91: { + g = new Z(), nn(h, new MC(i, g)); + n: + for (; ; ) { + switch (Xi(e, ++a)) { + case 39: { + f = w4(e, 39, ++a), nn(g, jN((Fi(a, f, e.length), e.substr(a, f - a)), c, r)), a = f + 1; + break; + } + case 34: { + f = w4(e, 34, ++a), nn(g, jN((Fi(a, f, e.length), e.substr(a, f - a)), c, r)), a = f + 1; + break; + } + case 110: { + if (++a, e.indexOf("ull", a) == a) + g.c.push(null); + else + throw M(new ec(aWn)); + a += 3; + break; + } + } + if (a < d) + switch (zn(a, e.length), e.charCodeAt(a)) { + case 44: + break; + case 93: + break n; + default: + throw M(new ec("Expecting , or ]")); + } + else + break; + } + l = a + 1; + break; + } + case 110: { + if (++a, e.indexOf("ull", a) == a) + nn(h, new MC(i, null)); + else + throw M(new ec(aWn)); + l = a + 3; + break; + } + } + if (l < d) { + if (zn(l, e.length), e.charCodeAt(l) != 44) + throw M(new ec("Expecting ,")); + } else + break; + } + return oAe(n, h, t); + } + function MLe(n) { + var e, t, i, r, c; + switch (e = n.c, c = null, e) { + case 6: + return n.Em(); + case 13: + return n.Fm(); + case 23: + return n.wm(); + case 22: + return n.Bm(); + case 18: + return n.ym(); + case 8: + Ze(n), c = (nt(), d0n); + break; + case 9: + return n.em(!0); + case 19: + return n.fm(); + case 10: + switch (n.a) { + case 100: + case 68: + case 119: + case 87: + case 115: + case 83: + return c = n.dm(n.a), Ze(n), c; + case 101: + case 102: + case 110: + case 114: + case 116: + case 117: + case 118: + case 120: + t = n.cm(), t < hr ? c = (nt(), nt(), new Nh(0, t)) : c = EPn(xY(t)); + break; + case 99: + return n.om(); + case 67: + return n.jm(); + case 105: + return n.rm(); + case 73: + return n.km(); + case 103: + return n.pm(); + case 88: + return n.lm(); + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return n.gm(); + case 80: + case 112: + if (c = xnn(n, n.a), !c) + throw M(new Le($e((Ie(), EK)))); + break; + default: + c = xSn(n.a); + } + Ze(n); + break; + case 0: + if (n.a == 93 || n.a == 123 || n.a == 125) + throw M(new Le($e((Ie(), Bcn)))); + c = xSn(n.a), i = n.a, Ze(n), (i & 64512) == Sy && n.c == 0 && (n.a & 64512) == 56320 && (r = K(fs, gh, 28, 2, 15, 1), r[0] = i & ui, r[1] = n.a & ui, c = rN(EPn(ws(r, 0, r.length)), 0), Ze(n)); + break; + default: + throw M(new Le($e((Ie(), Bcn)))); + } + return c; + } + function TLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn; + for (kn = new Ct(), X = new Ct(), j = -1, h = new C(n); h.a < h.c.c.length; ) { + for (s = u(E(h), 131), s.s = j--, a = 0, O = 0, c = new C(s.t); c.a < c.c.c.length; ) + i = u(E(c), 274), O += i.c; + for (r = new C(s.i); r.a < r.c.c.length; ) + i = u(E(r), 274), a += i.c; + s.n = a, s.u = O, O == 0 ? Kt(X, s, X.c.b, X.c) : a == 0 && Kt(kn, s, kn.c.b, kn.c); + } + for (Rn = HM(n), d = n.c.length, k = d + 1, S = d - 1, p = new Z(); Rn.a.gc() != 0; ) { + for (; X.b != 0; ) + _ = (oe(X.b != 0), u(Xo(X, X.a.a), 131)), Rn.a.Bc(_) != null, _.s = S--, een(_, kn, X); + for (; kn.b != 0; ) + tn = (oe(kn.b != 0), u(Xo(kn, kn.a.a), 131)), Rn.a.Bc(tn) != null, tn.s = k++, een(tn, kn, X); + for (m = Wi, l = Rn.a.ec().Kc(); l.Ob(); ) + s = u(l.Pb(), 131), I = s.u - s.n, I >= m && (I > m && (p.c.length = 0, m = I), Kn(p.c, s)); + p.c.length != 0 && (g = u(sn(p, cA(e, p.c.length)), 131), Rn.a.Bc(g) != null, g.s = k++, een(g, kn, X), p.c.length = 0); + } + for (N = n.c.length + 1, f = new C(n); f.a < f.c.c.length; ) + s = u(E(f), 131), s.s < d && (s.s += N); + for (yn = new C(n); yn.a < yn.c.c.length; ) + for (tn = u(E(yn), 131), t = new xi(tn.t, 0); t.b < t.d.gc(); ) + i = (oe(t.b < t.d.gc()), u(t.d.Xb(t.c = t.b++), 274)), Fn = i.b, tn.s > Fn.s && (bo(t), bu(Fn.i, i), i.c > 0 && (i.a = Fn, nn(Fn.t, i), i.b = tn, nn(tn.i, i))); + } + function hzn(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn; + for (k = new zc(e.b), N = new zc(e.b), g = new zc(e.b), yn = new zc(e.b), j = new zc(e.b), tn = ge(e, 0); tn.b != tn.d.c; ) + for (_ = u(be(tn), 12), f = new C(_.g); f.a < f.c.c.length; ) + if (c = u(E(f), 18), c.c.i == c.d.i) { + if (_.j == c.d.j) { + Kn(yn.c, c); + continue; + } else if (_.j == (en(), Xn) && c.d.j == ae) { + Kn(j.c, c); + continue; + } + } + for (h = new C(j); h.a < h.c.c.length; ) + c = u(E(h), 18), YSe(n, c, t, i, (en(), Zn)); + for (s = new C(yn); s.a < s.c.c.length; ) + c = u(E(s), 18), kn = new Tl(n), Ha(kn, (Vn(), Hc)), U(kn, (cn(), Ut), (Di(), Uc)), U(kn, (W(), st), c), Fn = new Ic(), U(Fn, st, c.d), gi(Fn, (en(), Wn)), ic(Fn, kn), Rn = new Ic(), U(Rn, st, c.c), gi(Rn, Zn), ic(Rn, kn), U(c.c, Xu, kn), U(c.d, Xu, kn), Zi(c, null), Oi(c, null), Kn(t.c, kn), U(kn, iI, Y(2)); + for (X = ge(e, 0); X.b != X.d.c; ) + _ = u(be(X), 12), l = _.e.c.length > 0, S = _.g.c.length > 0, l && S ? Kn(g.c, _) : l ? Kn(k.c, _) : S && Kn(N.c, _); + for (m = new C(k); m.a < m.c.c.length; ) + p = u(E(m), 12), nn(r, Uen(n, p, null, t)); + for (O = new C(N); O.a < O.c.c.length; ) + I = u(E(O), 12), nn(r, Uen(n, null, I, t)); + for (d = new C(g); d.a < d.c.c.length; ) + a = u(E(d), 12), nn(r, Uen(n, a, a, t)); + } + function stn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (g = St, p = St, a = 0, d = 0, h = new Z(), f = new ne((!n.b && (n.b = new q(Wt, n, 12, 3)), n.b)); f.e != f.i.gc(); ) + c = u(ue(f), 74), h = Eo(A(T(Oo, 1), Bn, 20, 0, [h, (!c.n && (c.n = new q(Sr, c, 1, 7)), c.n)])); + for (O = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!n.n && (n.n = new q(Sr, n, 1, 7)), n.n), (!n.a && (n.a = new q(Ye, n, 10, 11)), n.a), h]))); pe(O); ) + I = u(fe(O), 422), l = u(I.of((He(), xv)), 140), g > I.nh() - l.b && (g = I.nh() - l.b), p > I.oh() - l.d && (p = I.oh() - l.d), a < I.nh() + I.mh() + l.c && (a = I.nh() + I.mh() + l.c), d < I.oh() + I.lh() + l.a && (d = I.oh() + I.lh() + l.a); + for (s = new ne((!n.b && (n.b = new q(Wt, n, 12, 3)), n.b)); s.e != s.i.gc(); ) + for (c = u(ue(s), 74), S = new ne((!c.a && (c.a = new q(Mt, c, 6, 6)), c.a)); S.e != S.i.gc(); ) + for (j = u(ue(S), 166), m = j.j, i = j.b, k = j.k, r = j.c, g = y.Math.min(g, m), g = y.Math.min(g, i), a = y.Math.max(a, m), a = y.Math.max(a, i), p = y.Math.min(p, k), p = y.Math.min(p, r), d = y.Math.max(d, k), d = y.Math.max(d, r), t = new ne((!j.a && (j.a = new ti(xo, j, 5)), j.a)); t.e != t.i.gc(); ) + e = u(ue(t), 377), g = y.Math.min(g, e.a), a = y.Math.max(a, e.a), p = y.Math.min(p, e.b), d = y.Math.max(d, e.b); + ht(n, (He(), B2), a - g), ht(n, F2, d - p); + } + function ALe(n, e, t) { + var i, r, c, s, f, h, l, a, d; + if (t.Ug("Network simplex node placement", 1), n.e = e, n.n = u(v(e, (W(), E2)), 312), KIe(n), rye(n), Gt(rc(new Tn(null, new In(n.e.b, 16)), new o3n()), new ekn(n)), Gt(ut(rc(ut(rc(new Tn(null, new In(n.e.b, 16)), new k3n()), new y3n()), new j3n()), new E3n()), new nkn(n)), on(un(v(n.e, (cn(), G8)))) && (s = t.eh(1), s.Ug("Straight Edges Pre-Processing", 1), sDe(n), s.Vg()), R9e(n.f), c = u(v(e, V8), 17).a * n.f.a.c.length, PF(vz(kz(BL(n.f), c), !1), t.eh(1)), n.d.a.gc() != 0) { + for (s = t.eh(1), s.Ug("Flexible Where Space Processing", 1), f = u(ho(Ap(_r(new Tn(null, new In(n.f.a, 16)), new s3n()), new e3n())), 17).a, h = u(ho(_b(_r(new Tn(null, new In(n.f.a, 16)), new f3n()), new t3n())), 17).a, l = h - f, a = h0(new za(), n.f), d = h0(new za(), n.f), qs(Ls(Ds(Os(Ns(new hs(), 2e4), l), a), d)), Gt(ut(ut(MW(n.i), new h3n()), new l3n()), new MIn(f, a, l, d)), r = n.d.a.ec().Kc(); r.Ob(); ) + i = u(r.Pb(), 218), i.g = 1; + PF(vz(kz(BL(n.f), c), !1), s.eh(1)), s.Vg(); + } + on(un(v(e, G8))) && (s = t.eh(1), s.Ug("Straight Edges Post-Processing", 1), Wje(n), s.Vg()), GOe(n), n.e = null, n.f = null, n.i = null, n.c = null, Hu(n.k), n.j = null, n.a = null, n.o = null, n.d.a.$b(), t.Vg(); + } + function SLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + for (t.Ug("Depth first model order layering", 1), n.d = e, j = new Z(), k = new C(n.d.a); k.a < k.c.c.length; ) + p = u(E(k), 10), p.k == (Vn(), Vt) && Kn(j.c, p); + for (Dn(), Yt(j, new Xpn()), s = !0, n.b = new Nc(n.d), n.a = null, nn(n.d.b, n.b), n.b.p = 0, n.c = 0, n.f = new Ct(), m = new C(j); m.a < m.c.c.length; ) + if (p = u(E(m), 10), s) + $i(p, n.b), s = !1; + else if (HPe(n, p)) + if (g = n.c, g = vRn(g, p), i = g + 2, a = g - n.c, n.f.b == 0) + wen(n, i, p); + else if (a > 0) { + for (O = ge(n.f, 0); O.b != O.d.c; ) + I = u(be(O), 10), I.p += g - n.e; + knn(n), vo(n.f), wen(n, i, p); + } else { + for (Fe(n.f, p), p.p = i, n.e = y.Math.max(n.e, i), c = new ie(ce(ji(p).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), !r.c.i.c && r.c.i.k == (Vn(), Sc) && (Fe(n.f, r.c.i), r.c.i.p = i - 1); + n.c = i; + } + else + knn(n), vo(n.f), i = 0, pe(new ie(ce(ji(p).a.Kc(), new En()))) ? (g = 0, g = vRn(g, p), i = g + 2, wen(n, i, p)) : (Fe(n.f, p), p.p = 0, n.e = y.Math.max(n.e, 0), n.b = u(sn(n.d.b, 0), 30), n.c = 0); + for (n.f.b == 0 || knn(n), n.d.a.c.length = 0, S = new Z(), l = new C(n.d.b); l.a < l.c.c.length; ) + f = u(E(l), 30), f.a.c.length == 0 && Kn(S.c, f); + for (OY(n.d.b, S), d = 0, h = new C(n.d.b); h.a < h.c.c.length; ) + f = u(E(h), 30), f.p = d, ++d; + t.Vg(); + } + function PLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt, Yu, Rr; + if (Fn = null, te = e, Rn = zDn(n, xDn(t), te), X4(Rn, bl(te, Eh)), xe = u(Lg(n.g, Zp(dl(te, lK))), 27), g = dl(te, "sourcePort"), i = null, g && (i = Zp(g)), Lt = u(Lg(n.j, i), 123), !xe) + throw f = wm(te), m = "An edge must have a source node (edge id: '" + f, k = m + iv, M(new eh(k)); + if (Lt && !sh(Sf(Lt), xe)) + throw h = bl(te, Eh), j = "The source port of an edge must be a port of the edge's source node (edge id: '" + h, S = j + iv, M(new eh(S)); + if (yn = (!Rn.b && (Rn.b = new Nn(he, Rn, 4, 7)), Rn.b), c = null, Lt ? c = Lt : c = xe, ve(yn, c), Yu = u(Lg(n.g, Zp(dl(te, xcn))), 27), p = dl(te, "targetPort"), r = null, p && (r = Zp(p)), Rr = u(Lg(n.j, r), 123), !Yu) + throw d = wm(te), I = "An edge must have a target node (edge id: '" + d, O = I + iv, M(new eh(O)); + if (Rr && !sh(Sf(Rr), Yu)) + throw l = bl(te, Eh), N = "The target port of an edge must be a port of the edge's target node (edge id: '" + l, _ = N + iv, M(new eh(_)); + if (kn = (!Rn.c && (Rn.c = new Nn(he, Rn, 5, 8)), Rn.c), s = null, Rr ? s = Rr : s = Yu, ve(kn, s), (!Rn.b && (Rn.b = new Nn(he, Rn, 4, 7)), Rn.b).i == 0 || (!Rn.c && (Rn.c = new Nn(he, Rn, 5, 8)), Rn.c).i == 0) + throw a = bl(te, Eh), X = kWn + a, tn = X + iv, M(new eh(tn)); + return gA(te, Rn), nMe(te, Rn), Fn = _$(n, te, Rn), Fn; + } + function lzn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt; + for (p = u(v(n, (Q1(), y3)), 27), O = tt, N = tt, S = Wi, I = Wi, X = new C(n.e); X.a < X.c.c.length; ) + _ = u(E(X), 153), Rn = _.d, te = _.e, O = y.Math.min(O, Rn.a - te.a / 2), N = y.Math.min(N, Rn.b - te.b / 2), S = y.Math.max(S, Rn.a + te.a / 2), I = y.Math.max(I, Rn.b + te.b / 2); + for (t = new C(n.b); t.a < t.c.c.length; ) + e = u(E(t), 250), Rn = e.d, te = e.e, O = y.Math.min(O, Rn.a - te.a / 2), N = y.Math.min(N, Rn.b - te.b / 2), S = y.Math.max(S, Rn.a + te.a / 2), I = y.Math.max(I, Rn.b + te.b / 2); + for (Fn = u(z(p, (Us(), ZYn)), 107), kn = new V(Fn.b - O, Fn.d - N), l = new C(n.e); l.a < l.c.c.length; ) + h = u(E(l), 153), yn = v(h, y3), D(yn, 207) && (k = u(yn, 27), tn = it(new rr(h.d), kn), Ro(k, tn.a - k.g / 2, tn.b - k.f / 2)); + for (c = new C(n.c); c.a < c.c.c.length; ) + r = u(E(c), 290), d = u(v(r, y3), 74), g = Xg(d, !0, !0), xe = new rr(vQ(r)), it(xe, kn), j7(g, xe.a, xe.b), eu(r.a, new SCn(kn, g)), i = new rr(kQ(r)), it(i, kn), y7(g, i.a, i.b); + for (f = new C(n.d); f.a < f.c.c.length; ) + s = u(E(f), 454), m = u(v(s, y3), 135), j = it(new rr(s.d), kn), Ro(m, j.a, j.b); + Lt = S - O + (Fn.b + Fn.c), a = I - N + (Fn.d + Fn.a), on(un(z(p, (He(), Vw)))) || G0(p, Lt, a, !1, !0), ht(p, B2, Lt - (Fn.b + Fn.c)), ht(p, F2, a - (Fn.d + Fn.a)); + } + function azn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + return d = vPe(au(n, (en(), Yf)), e), m = _g(au(n, ef), e), N = _g(au(n, No), e), yn = hA(au(n, Ts), e), g = hA(au(n, os), e), I = _g(au(n, tf), e), k = _g(au(n, Wu), e), X = _g(au(n, $o), e), _ = _g(au(n, ss), e), kn = hA(au(n, fu), e), S = _g(au(n, vu), e), O = _g(au(n, Ju), e), tn = _g(au(n, mu), e), Fn = hA(au(n, ku), e), p = hA(au(n, Fu), e), j = _g(au(n, Gc), e), t = Dg(A(T(Ii, 1), Ar, 28, 15, [I.a, yn.a, X.a, Fn.a])), i = Dg(A(T(Ii, 1), Ar, 28, 15, [m.a, d.a, N.a, j.a])), r = S.a, c = Dg(A(T(Ii, 1), Ar, 28, 15, [k.a, g.a, _.a, p.a])), l = Dg(A(T(Ii, 1), Ar, 28, 15, [I.b, m.b, k.b, O.b])), h = Dg(A(T(Ii, 1), Ar, 28, 15, [yn.b, d.b, g.b, j.b])), a = kn.b, f = Dg(A(T(Ii, 1), Ar, 28, 15, [X.b, N.b, _.b, tn.b])), Zl(au(n, Yf), t + r, l + a), Zl(au(n, Gc), t + r, l + a), Zl(au(n, ef), t + r, 0), Zl(au(n, No), t + r, l + a + h), Zl(au(n, Ts), 0, l + a), Zl(au(n, os), t + r + i, l + a), Zl(au(n, Wu), t + r + i, 0), Zl(au(n, $o), 0, l + a + h), Zl(au(n, ss), t + r + i, l + a + h), Zl(au(n, fu), 0, l), Zl(au(n, vu), t, 0), Zl(au(n, mu), 0, l + a + h), Zl(au(n, Fu), t + r + i, 0), s = new Li(), s.a = Dg(A(T(Ii, 1), Ar, 28, 15, [t + i + r + c, kn.a, O.a, tn.a])), s.b = Dg(A(T(Ii, 1), Ar, 28, 15, [l + h + a + f, S.b, Fn.b, p.b])), s; + } + function dzn(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (I = new V(St, St), e = new V(li, li), yn = new C(n); yn.a < yn.c.c.length; ) + tn = u(E(yn), 8), I.a = y.Math.min(I.a, tn.a), I.b = y.Math.min(I.b, tn.b), e.a = y.Math.max(e.a, tn.a), e.b = y.Math.max(e.b, tn.b); + for (g = new V(e.a - I.a, e.b - I.b), l = new V(I.a - 50, I.b - g.a - 50), a = new V(I.a - 50, e.b + g.a + 50), d = new V(e.a + g.b / 2 + 50, I.b + g.b / 2), p = new Hen(l, a, d), X = new ni(), c = new Z(), t = new Z(), X.a.zc(p, X), Fn = new C(n); Fn.a < Fn.c.c.length; ) { + for (kn = u(E(Fn), 8), c.c.length = 0, _ = X.a.ec().Kc(); _.Ob(); ) + O = u(_.Pb(), 317), i = O.d, J1(i, O.a), x0(J1(O.d, kn), J1(O.d, O.a)) < 0 && Kn(c.c, O); + for (t.c.length = 0, N = new C(c); N.a < N.c.c.length; ) + for (O = u(E(N), 317), j = new C(O.e); j.a < j.c.c.length; ) { + for (m = u(E(j), 177), s = !0, h = new C(c); h.a < h.c.c.length; ) + f = u(E(h), 317), f != O && (vc(m, sn(f.e, 0)) || vc(m, sn(f.e, 1)) || vc(m, sn(f.e, 2))) && (s = !1); + s && Kn(t.c, m); + } + for (HKn(X, c), qi(X, new Y0n()), k = new C(t); k.a < k.c.c.length; ) + m = u(E(k), 177), fi(X, new Hen(kn, m.a, m.b)); + } + for (S = new ni(), qi(X, new I9n(S)), r = S.a.ec().Kc(); r.Ob(); ) + m = u(r.Pb(), 177), (tT(p, m.a) || tT(p, m.b)) && r.Qb(); + return qi(S, new Z0n()), S; + } + function Mc() { + Mc = F, rEn(), Moe = Ti.a, u(L(H(Ti.a), 0), 19), Eoe = Ti.f, u(L(H(Ti.f), 0), 19), u(L(H(Ti.f), 1), 35), Coe = Ti.n, u(L(H(Ti.n), 0), 35), u(L(H(Ti.n), 1), 35), u(L(H(Ti.n), 2), 35), u(L(H(Ti.n), 3), 35), Idn = Ti.g, u(L(H(Ti.g), 0), 19), u(L(H(Ti.g), 1), 35), joe = Ti.c, u(L(H(Ti.c), 0), 19), u(L(H(Ti.c), 1), 19), Odn = Ti.i, u(L(H(Ti.i), 0), 19), u(L(H(Ti.i), 1), 19), u(L(H(Ti.i), 2), 19), u(L(H(Ti.i), 3), 19), u(L(H(Ti.i), 4), 35), Ddn = Ti.j, u(L(H(Ti.j), 0), 19), Pdn = Ti.d, u(L(H(Ti.d), 0), 19), u(L(H(Ti.d), 1), 19), u(L(H(Ti.d), 2), 19), u(L(H(Ti.d), 3), 19), u(L(H(Ti.d), 4), 35), u(L(H(Ti.d), 5), 35), u(L(H(Ti.d), 6), 35), u(L(H(Ti.d), 7), 35), yoe = Ti.b, u(L(H(Ti.b), 0), 35), u(L(H(Ti.b), 1), 35), bO = Ti.e, u(L(H(Ti.e), 0), 35), u(L(H(Ti.e), 1), 35), u(L(H(Ti.e), 2), 35), u(L(H(Ti.e), 3), 35), u(L(H(Ti.e), 4), 19), u(L(H(Ti.e), 5), 19), u(L(H(Ti.e), 6), 19), u(L(H(Ti.e), 7), 19), u(L(H(Ti.e), 8), 19), u(L(H(Ti.e), 9), 19), u(L(H(Ti.e), 10), 35), il = Ti.k, u(L(H(Ti.k), 0), 35), u(L(H(Ti.k), 1), 35); + } + function ftn(n) { + var e, t, i, r, c; + switch (e = n.c, e) { + case 11: + return n.vm(); + case 12: + return n.xm(); + case 14: + return n.zm(); + case 15: + return n.Cm(); + case 16: + return n.Am(); + case 17: + return n.Dm(); + case 21: + return Ze(n), nt(), nt(), K9; + case 10: + switch (n.a) { + case 65: + return n.hm(); + case 90: + return n.mm(); + case 122: + return n.tm(); + case 98: + return n.nm(); + case 66: + return n.im(); + case 60: + return n.sm(); + case 62: + return n.qm(); + } + } + switch (c = MLe(n), e = n.c, e) { + case 3: + return n.Im(c); + case 4: + return n.Gm(c); + case 5: + return n.Hm(c); + case 0: + if (n.a == 123 && n.d < n.j) { + if (r = n.d, i = 0, t = -1, (e = Xi(n.i, r++)) >= 48 && e <= 57) { + for (i = e - 48; r < n.j && (e = Xi(n.i, r++)) >= 48 && e <= 57; ) + if (i = i * 10 + e - 48, i < 0) + throw M(new Le($e((Ie(), Hcn)))); + } else + throw M(new Le($e((Ie(), VWn)))); + if (t = i, e == 44) { + if (r >= n.j) + throw M(new Le($e((Ie(), JWn)))); + if ((e = Xi(n.i, r++)) >= 48 && e <= 57) { + for (t = e - 48; r < n.j && (e = Xi(n.i, r++)) >= 48 && e <= 57; ) + if (t = t * 10 + e - 48, t < 0) + throw M(new Le($e((Ie(), Hcn)))); + if (i > t) + throw M(new Le($e((Ie(), QWn)))); + } else + t = -1; + } + if (e != 125) + throw M(new Le($e((Ie(), WWn)))); + n.bm(r) ? (c = (nt(), nt(), new Xb(9, c)), n.d = r + 1) : (c = (nt(), nt(), new Xb(3, c)), n.d = r), c.Om(i), c.Nm(t), Ze(n); + } + } + return c; + } + function ILe(n) { + var e, t, i, r, c; + switch (t = u(v(n, (W(), qc)), 21), e = DC(vZn), r = u(v(n, (cn(), Bw)), 346), r == (jl(), M1) && Mo(e, kZn), on(un(v(n, TH))) ? Ke(e, (Vi(), Vs), (tr(), $_)) : Ke(e, (Vi(), Dc), (tr(), $_)), v(n, (JM(), b9)) != null && Mo(e, yZn), (on(un(v(n, ehn))) || on(un(v(n, Qfn)))) && Iu(e, (Vi(), zr), (tr(), Jon)), u(v(n, Do), 88).g) { + case 2: + case 3: + case 4: + Iu(Ke(e, (Vi(), Vs), (tr(), Yon)), zr, Qon); + } + switch (t.Hc((mr(), ZP)) && Iu(Ke(Ke(e, (Vi(), Vs), (tr(), Won)), _c, Xon), zr, Von), x(v(n, ja)) !== x((ps(), AI)) && Ke(e, (Vi(), Dc), (tr(), dsn)), t.Hc(eI) && (Ke(e, (Vi(), Vs), (tr(), psn)), Ke(e, Jh, wsn), Ke(e, Dc, gsn)), x(v(n, fI)) !== x((jm(), x8)) && x(v(n, $l)) !== x((El(), Yj)) && Iu(e, (Vi(), zr), (tr(), osn)), on(un(v(n, Zfn))) && Ke(e, (Vi(), Dc), (tr(), usn)), on(un(v(n, jH))) && Ke(e, (Vi(), Dc), (tr(), msn)), qMe(n) && (x(v(n, Bw)) === x(M1) ? i = u(v(n, Cj), 299) : i = u(v(n, yH), 299), c = i == (Z4(), uH) ? (tr(), bsn) : (tr(), ysn), Ke(e, (Vi(), _c), c)), u(v(n, Ahn), 388).g) { + case 1: + Ke(e, (Vi(), _c), (tr(), vsn)); + break; + case 2: + Iu(Ke(Ke(e, (Vi(), Dc), (tr(), qon)), _c, Uon), zr, Gon); + } + return x(v(n, Yh)) !== x((lh(), k1)) && Ke(e, (Vi(), Dc), (tr(), ksn)), e; + } + function bzn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O; + if (nu(n.a, e)) { + if (sf(u(ee(n.a, e), 49), t)) + return 1; + } else + Ve(n.a, e, new ni()); + if (nu(n.a, t)) { + if (sf(u(ee(n.a, t), 49), e)) + return -1; + } else + Ve(n.a, t, new ni()); + if (nu(n.e, e)) { + if (sf(u(ee(n.e, e), 49), t)) + return -1; + } else + Ve(n.e, e, new ni()); + if (nu(n.e, t)) { + if (sf(u(ee(n.a, t), 49), e)) + return 1; + } else + Ve(n.e, t, new ni()); + if (n.c == (lh(), HH) || !kt(e, (W(), dt)) || !kt(t, (W(), dt))) { + for (d = null, l = new C(e.j); l.a < l.c.c.length; ) + f = u(E(l), 12), f.e.c.length == 0 || u(sn(f.e, 0), 18).c.i.c != e.c && (d = u(sn(f.e, 0), 18).c); + for (p = null, h = new C(t.j); h.a < h.c.c.length; ) + f = u(E(h), 12), f.e.c.length == 0 || u(sn(f.e, 0), 18).c.i.c != t.c && (p = u(sn(f.e, 0), 18).c); + if (d && p) { + if (a = d.i, g = p.i, a && a == g) { + for (k = new C(a.j); k.a < k.c.c.length; ) { + if (m = u(E(k), 12), m == d) + return Pm(n, t, e), -1; + if (m == p) + return Pm(n, e, t), 1; + } + return Ec(Vx(n, e), Vx(n, t)); + } + for (S = n.d, I = 0, O = S.length; I < O; ++I) { + if (j = S[I], j == a) + return Pm(n, t, e), -1; + if (j == g) + return Pm(n, e, t), 1; + } + } + if (!kt(e, (W(), dt)) || !kt(t, dt)) + return r = Vx(n, e), s = Vx(n, t), r > s ? Pm(n, e, t) : Pm(n, t, e), r < s ? -1 : r > s ? 1 : 0; + } + return i = u(v(e, (W(), dt)), 17).a, c = u(v(t, dt), 17).a, i > c ? Pm(n, e, t) : Pm(n, t, e), i < c ? -1 : i > c ? 1 : 0; + } + function z0(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (t == null) + return null; + if (n.a != e.jk()) + throw M(new Gn(ev + e.xe() + nb)); + if (D(e, 469)) { + if (j = yAe(u(e, 685), t), !j) + throw M(new Gn(fK + t + "' is not a valid enumerator of '" + e.xe() + "'")); + return j; + } + switch (r1((Lu(), zi), e).Nl()) { + case 2: { + t = Bc(t, !1); + break; + } + case 3: { + t = Bc(t, !0); + break; + } + } + if (i = r1(zi, e).Jl(), i) + return i.jk().wi().ti(i, t); + if (g = r1(zi, e).Ll(), g) { + for (j = new Z(), l = z$(t), a = 0, d = l.length; a < d; ++a) + h = l[a], nn(j, g.jk().wi().ti(g, h)); + return j; + } + if (k = r1(zi, e).Ml(), !k.dc()) { + for (m = k.Kc(); m.Ob(); ) { + p = u(m.Pb(), 156); + try { + if (j = p.jk().wi().ti(p, t), j != null) + return j; + } catch (S) { + if (S = It(S), !D(S, 63)) + throw M(S); + } + } + throw M(new Gn(fK + t + "' does not match any member types of the union datatype '" + e.xe() + "'")); + } + if (u(e, 847).ok(), r = B6e(e.kk()), !r) + return null; + if (r == A8) { + s = 0; + try { + s = Ao(t, Wi, tt) & ui; + } catch (S) { + if (S = It(S), D(S, 130)) + c = iT(t), s = c[0]; + else + throw M(S); + } + return vk(s); + } + if (r == oP) { + for (f = 0; f < O9.length; ++f) + try { + return gCn(O9[f], t); + } catch (S) { + if (S = It(S), !D(S, 33)) + throw M(S); + } + throw M(new Gn(fK + t + "' is not a date formatted string of the form yyyy-MM-dd'T'HH:mm:ss'.'SSSZ or a valid subset thereof")); + } + throw M(new Gn(fK + t + "' is invalid. ")); + } + function YF() { + YF = F, gt = new C0(), Pn(gt, (en(), Yf), Gc), Pn(gt, Ts, Gc), Pn(gt, Ts, ku), Pn(gt, os, Fu), Pn(gt, os, Gc), Pn(gt, ef, Gc), Pn(gt, ef, Ju), Pn(gt, No, mu), Pn(gt, No, Gc), Pn(gt, vu, fu), Pn(gt, vu, Gc), Pn(gt, vu, Ju), Pn(gt, vu, mu), Pn(gt, fu, vu), Pn(gt, fu, ku), Pn(gt, fu, Fu), Pn(gt, fu, Gc), Pn(gt, tf, tf), Pn(gt, tf, Ju), Pn(gt, tf, ku), Pn(gt, Wu, Wu), Pn(gt, Wu, Ju), Pn(gt, Wu, Fu), Pn(gt, $o, $o), Pn(gt, $o, mu), Pn(gt, $o, ku), Pn(gt, ss, ss), Pn(gt, ss, mu), Pn(gt, ss, Fu), Pn(gt, Ju, ef), Pn(gt, Ju, vu), Pn(gt, Ju, tf), Pn(gt, Ju, Wu), Pn(gt, Ju, Gc), Pn(gt, Ju, Ju), Pn(gt, Ju, ku), Pn(gt, Ju, Fu), Pn(gt, mu, No), Pn(gt, mu, vu), Pn(gt, mu, $o), Pn(gt, mu, ss), Pn(gt, mu, mu), Pn(gt, mu, ku), Pn(gt, mu, Fu), Pn(gt, mu, Gc), Pn(gt, ku, Ts), Pn(gt, ku, fu), Pn(gt, ku, tf), Pn(gt, ku, $o), Pn(gt, ku, Ju), Pn(gt, ku, mu), Pn(gt, ku, ku), Pn(gt, ku, Gc), Pn(gt, Fu, os), Pn(gt, Fu, fu), Pn(gt, Fu, Wu), Pn(gt, Fu, ss), Pn(gt, Fu, Ju), Pn(gt, Fu, mu), Pn(gt, Fu, Fu), Pn(gt, Fu, Gc), Pn(gt, Gc, Yf), Pn(gt, Gc, Ts), Pn(gt, Gc, os), Pn(gt, Gc, ef), Pn(gt, Gc, No), Pn(gt, Gc, vu), Pn(gt, Gc, fu), Pn(gt, Gc, Ju), Pn(gt, Gc, mu), Pn(gt, Gc, ku), Pn(gt, Gc, Fu), Pn(gt, Gc, Gc); + } + function htn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn; + for (n.d = new V(St, St), n.c = new V(li, li), g = e.Kc(); g.Ob(); ) + for (a = u(g.Pb(), 36), O = new C(a.a); O.a < O.c.c.length; ) + I = u(E(O), 10), n.d.a = y.Math.min(n.d.a, I.n.a - I.d.b), n.d.b = y.Math.min(n.d.b, I.n.b - I.d.d), n.c.a = y.Math.max(n.c.a, I.n.a + I.o.a + I.d.c), n.c.b = y.Math.max(n.c.b, I.n.b + I.o.b + I.d.a); + for (f = new _yn(), d = e.Kc(); d.Ob(); ) + a = u(d.Pb(), 36), i = aLe(n, a), nn(f.a, i), i.a = i.a | !u(v(i.c, (W(), Nl)), 21).dc(); + for (n.b = (Y$(), yn = new Qbn(), yn.f = new rxn(t), yn.b = vOe(yn.f, f), yn), OOe((m = n.b, new op(), m)), n.e = new Li(), n.a = n.b.f.e, s = new C(f.a); s.a < s.c.c.length; ) + for (r = u(E(s), 855), N = a2e(n.b, r), oSe(r.c, N.a, N.b), j = new C(r.c.a); j.a < j.c.c.length; ) + k = u(E(j), 10), k.k == (Vn(), Zt) && (S = ten(n, k.n, u(v(k, (W(), gc)), 64)), it(ff(k.n), S)); + for (c = new C(f.a); c.a < c.c.c.length; ) + for (r = u(E(c), 855), l = new C(P5e(r)); l.a < l.c.c.length; ) + for (h = u(E(l), 18), tn = new GE(h.a), g4(tn, 0, If(h.c)), Fe(tn, If(h.d)), p = null, X = ge(tn, 0); X.b != X.d.c; ) { + if (_ = u(be(X), 8), !p) { + p = _; + continue; + } + lQ(p.a, _.a) ? (n.e.a = y.Math.min(n.e.a, p.a), n.a.a = y.Math.max(n.a.a, p.a)) : lQ(p.b, _.b) && (n.e.b = y.Math.min(n.e.b, p.b), n.a.b = y.Math.max(n.a.b, p.b)), p = _; + } + HC(n.e), it(n.a, n.e); + } + function OLe(n, e) { + var t, i, r, c, s, f, h, l; + if (t = 0, s = 0, c = e.length, f = null, l = new fg(), s < c && (zn(s, e.length), e.charCodeAt(s) == 43) && (++s, ++t, s < c && (zn(s, e.length), e.charCodeAt(s) == 43 || (zn(s, e.length), e.charCodeAt(s) == 45)))) + throw M(new th(V0 + e + '"')); + for (; s < c && (zn(s, e.length), e.charCodeAt(s) != 46) && (zn(s, e.length), e.charCodeAt(s) != 101) && (zn(s, e.length), e.charCodeAt(s) != 69); ) + ++s; + if (l.a += "" + qo(e == null ? pu : (Jn(e), e), t, s), s < c && (zn(s, e.length), e.charCodeAt(s) == 46)) { + for (++s, t = s; s < c && (zn(s, e.length), e.charCodeAt(s) != 101) && (zn(s, e.length), e.charCodeAt(s) != 69); ) + ++s; + n.e = s - t, l.a += "" + qo(e == null ? pu : (Jn(e), e), t, s); + } else + n.e = 0; + if (s < c && (zn(s, e.length), e.charCodeAt(s) == 101 || (zn(s, e.length), e.charCodeAt(s) == 69)) && (++s, t = s, s < c && (zn(s, e.length), e.charCodeAt(s) == 43) && (++s, s < c && (zn(s, e.length), e.charCodeAt(s) != 45) && ++t), f = (Fi(t, c, e.length), e.substr(t, c - t)), n.e = n.e - Ao(f, Wi, tt), n.e != wi(n.e))) + throw M(new th("Scale out of range.")); + if (h = l.a, h.length < 16) { + if (n.f = (Pun == null && (Pun = new RegExp("^[+-]?\\d*$", "i")), Pun.test(h) ? parseInt(h, 10) : NaN), isNaN(n.f)) + throw M(new th(V0 + e + '"')); + n.a = Onn(n.f); + } else + d5e(n, new H1(h)); + for (n.d = l.a.length, r = 0; r < l.a.length && (i = Xi(l.a, r), !(i != 45 && i != 48)); ++r) + --n.d; + n.d == 0 && (n.d = 1); + } + function DLe(n) { + Me(n.b, ks, A(T(fn, 1), J, 2, 6, [eb, "ConsistentTransient"])), Me(n.a, ks, A(T(fn, 1), J, 2, 6, [eb, "WellFormedSourceURI"])), Me(n.o, ks, A(T(fn, 1), J, 2, 6, [eb, "InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes DisjointFeatureAndOperationSignatures"])), Me(n.p, ks, A(T(fn, 1), J, 2, 6, [eb, "WellFormedInstanceTypeName UniqueTypeParameterNames"])), Me(n.v, ks, A(T(fn, 1), J, 2, 6, [eb, "UniqueEnumeratorNames UniqueEnumeratorLiterals"])), Me(n.R, ks, A(T(fn, 1), J, 2, 6, [eb, "WellFormedName"])), Me(n.T, ks, A(T(fn, 1), J, 2, 6, [eb, "UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"])), Me(n.U, ks, A(T(fn, 1), J, 2, 6, [eb, "WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"])), Me(n.W, ks, A(T(fn, 1), J, 2, 6, [eb, "ConsistentOpposite SingleContainer ConsistentKeys ConsistentUnique ConsistentContainer"])), Me(n.bb, ks, A(T(fn, 1), J, 2, 6, [eb, "ValidDefaultValueLiteral"])), Me(n.eb, ks, A(T(fn, 1), J, 2, 6, [eb, "ValidLowerBound ValidUpperBound ConsistentBounds ValidType"])), Me(n.H, ks, A(T(fn, 1), J, 2, 6, [eb, "ConsistentType ConsistentBounds ConsistentArguments"])); + } + function LLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn; + if (!e.dc()) { + if (r = new Tu(), f = t || u(e.Xb(0), 18), m = f.c, B5(), g = m.i.k, !(g == (Vn(), Vt) || g == Hc || g == Zt || g == Gf)) + throw M(new Gn("The target node of the edge must be a normal node or a northSouthPort.")); + for (ir(r, cc(A(T(Ei, 1), J, 8, 0, [m.i.n, m.n, m.a]))), (en(), vu).Hc(m.j) && (j = $(R(v(m, (W(), jv)))), d = new V(cc(A(T(Ei, 1), J, 8, 0, [m.i.n, m.n, m.a])).a, j), Kt(r, d, r.c.b, r.c)), a = null, i = !1, h = e.Kc(); h.Ob(); ) + s = u(h.Pb(), 18), c = s.a, c.b != 0 && (i ? (l = ch(it(a, (oe(c.b != 0), u(c.a.a.c, 8))), 0.5), Kt(r, l, r.c.b, r.c), i = !1) : i = !0, a = Ki((oe(c.b != 0), u(c.c.b.c, 8))), Bi(r, c), vo(c)); + k = f.d, vu.Hc(k.j) && (j = $(R(v(k, (W(), jv)))), d = new V(cc(A(T(Ei, 1), J, 8, 0, [k.i.n, k.n, k.a])).a, j), Kt(r, d, r.c.b, r.c)), ir(r, cc(A(T(Ei, 1), J, 8, 0, [k.i.n, k.n, k.a]))), n.d == (om(), WH) && (S = (oe(r.b != 0), u(r.a.a.c, 8)), I = u(Zo(r, 1), 8), O = new BN(sY(m.j)), O.a *= 5, O.b *= 5, N = mi(new V(I.a, I.b), S), _ = new V(LN(O.a, N.a), LN(O.b, N.b)), it(_, S), X = ge(r, 1), _7(X, _), tn = (oe(r.b != 0), u(r.c.b.c, 8)), yn = u(Zo(r, r.b - 2), 8), O = new BN(sY(k.j)), O.a *= 5, O.b *= 5, N = mi(new V(yn.a, yn.b), tn), kn = new V(LN(O.a, N.a), LN(O.b, N.b)), it(kn, tn), g4(r, r.b - 1, kn)), p = new qen(r), Bi(f.a, IRn(p)); + } + } + function NLe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt, Yu, Rr, Fo, W2, D1, rf, cf; + if (O = u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84), _ = O.nh(), X = O.oh(), N = O.mh() / 2, k = O.lh() / 2, D(O, 193) && (I = u(O, 123), _ += Sf(I).i, _ += Sf(I).i), _ += N, X += k, Rn = u(L((!n.b && (n.b = new Nn(he, n, 4, 7)), n.b), 0), 84), xe = Rn.nh(), Lt = Rn.oh(), te = Rn.mh() / 2, tn = Rn.lh() / 2, D(Rn, 193) && (Fn = u(Rn, 123), xe += Sf(Fn).i, xe += Sf(Fn).i), xe += te, Lt += tn, (!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i == 0) + f = (B1(), l = new jE(), l), ve((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), f); + else if ((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i > 1) + for (m = new kp((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a)); m.e != m.i.gc(); ) + O5(m); + for (s = u(L((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), 0), 166), j = xe, xe > _ + N ? j = _ + N : xe < _ - N && (j = _ - N), S = Lt, Lt > X + k ? S = X + k : Lt < X - k && (S = X - k), j > _ - N && j < _ + N && S > X - k && S < X + k && (j = _ + N), H4(s, j), U4(s, S), yn = _, _ > xe + te ? yn = xe + te : _ < xe - te && (yn = xe - te), kn = X, X > Lt + tn ? kn = Lt + tn : X < Lt - tn && (kn = Lt - tn), yn > xe - te && yn < xe + te && kn > Lt - tn && kn < Lt + tn && (kn = Lt + tn), _4(s, yn), q4(s, kn), me((!s.a && (s.a = new ti(xo, s, 5)), s.a)), c = cA(e, 5), O == Rn && ++c, Fo = yn - j, rf = kn - S, Yu = y.Math.sqrt(Fo * Fo + rf * rf), d = Yu * 0.20000000298023224, W2 = Fo / (c + 1), cf = rf / (c + 1), Rr = j, D1 = S, a = 0; a < c; a++) + Rr += W2, D1 += cf, g = Rr + to(e, 24) * Iy * d - d / 2, g < 0 ? g = 1 : g > t && (g = t - 1), p = D1 + to(e, 24) * Iy * d - d / 2, p < 0 ? p = 1 : p > i && (p = i - 1), r = (B1(), h = new yE(), h), aT(r, g), lT(r, p), ve((!s.a && (s.a = new ti(xo, s, 5)), s.a), r); + } + function wzn(n) { + r0(n, new gd(e0(Yd(n0(Zd(new Ka(), co), "ELK Rectangle Packing"), "Algorithm for packing of unconnected boxes, i.e. graphs without edges. The given order of the boxes is always preserved and the main reading direction of the boxes is left to right. The algorithm is divided into two phases. One phase approximates the width in which the rectangles can be placed. The next phase places the rectangles in rows using the previously calculated width as bounding width and bundles rectangles with a similar height in blocks. A compaction step reduces the size of the drawing. Finally, the rectangles are expanded to fill their bounding box and eliminate empty unused spaces."), new cmn()))), Q(n, co, l3, 1.3), Q(n, co, zm, (_n(), !1)), Q(n, co, W0, y1n), Q(n, co, yw, 15), Q(n, co, MS, rn(Dce)), Q(n, co, r2, rn($ce)), Q(n, co, d3, rn(Fce)), Q(n, co, a3, rn(Bce)), Q(n, co, Xm, rn(Nce)), Q(n, co, r8, rn(Dq)), Q(n, co, Vm, rn(Rce)), Q(n, co, tcn, rn(M1n)), Q(n, co, icn, rn(C1n)), Q(n, co, ecn, rn(Nq)), Q(n, co, ncn, rn(T1n)), Q(n, co, rcn, rn(k1n)), Q(n, co, ccn, rn(Lq)), Q(n, co, ucn, rn(v1n)), Q(n, co, ocn, rn(E1n)), Q(n, co, i8, rn(m1n)), Q(n, co, AS, rn(Lce)), Q(n, co, Yrn, rn(Rj)), Q(n, co, Qrn, rn(p1n)), Q(n, co, Zrn, rn(Kj)), Q(n, co, Jrn, rn(j1n)); + } + function ZF(n, e) { + BF(); + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe; + if (yn = n.e, m = n.d, r = n.a, yn == 0) + switch (e) { + case 0: + return "0"; + case 1: + return Km; + case 2: + return "0.00"; + case 3: + return "0.000"; + case 4: + return "0.0000"; + case 5: + return "0.00000"; + case 6: + return "0.000000"; + default: + return X = new x1(), e < 0 ? X.a += "0E+" : X.a += "0E", X.a += -e, X.a; + } + if (O = m * 10 + 1 + 7, N = K(fs, gh, 28, O + 1, 15, 1), t = O, m == 1) + if (f = r[0], f < 0) { + xe = vi(f, vr); + do + k = xe, xe = Xk(xe, 10), N[--t] = 48 + Ae(bs(k, er(xe, 10))) & ui; + while (Cc(xe, 0) != 0); + } else { + xe = f; + do + k = xe, xe = xe / 10 | 0, N[--t] = 48 + (k - xe * 10) & ui; + while (xe != 0); + } + else { + Fn = K(ye, _e, 28, m, 15, 1), te = m, Oc(r, 0, Fn, 0, te); + n: + for (; ; ) { + for (tn = 0, l = te - 1; l >= 0; l--) + Rn = nr(Bs(tn, 32), vi(Fn[l], vr)), S = vye(Rn), Fn[l] = Ae(S), tn = Ae(w0(S, 32)); + I = Ae(tn), j = t; + do + N[--t] = 48 + I % 10 & ui; + while ((I = I / 10 | 0) != 0 && t != 0); + for (i = 9 - j + t, h = 0; h < i && t > 0; h++) + N[--t] = 48; + for (d = te - 1; Fn[d] == 0; d--) + if (d == 0) + break n; + te = d + 1; + } + for (; N[t] == 48; ) + ++t; + } + if (p = yn < 0, s = O - t - e - 1, e == 0) + return p && (N[--t] = 45), ws(N, t, O - t); + if (e > 0 && s >= -6) { + if (s >= 0) { + for (a = t + s, g = O - 1; g >= a; g--) + N[g + 1] = N[g]; + return N[++a] = 46, p && (N[--t] = 45), ws(N, t, O - t + 1); + } + for (d = 2; d < -s + 1; d++) + N[--t] = 48; + return N[--t] = 46, N[--t] = 48, p && (N[--t] = 45), ws(N, t, O - t); + } + return kn = t + 1, c = O, _ = new fg(), p && (_.a += "-"), c - kn >= 1 ? (z1(_, N[t]), _.a += ".", _.a += ws(N, t + 1, O - t - 1)) : _.a += ws(N, t, O - t), _.a += "E", s > 0 && (_.a += "+"), _.a += "" + s, _.a; + } + function gzn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + switch (n.c = e, n.g = new de(), t = (c0(), new Qd(n.c)), i = new IE(t), qY(i), O = Oe(z(n.c, (Wk(), G1n))), h = u(z(n.c, Uq), 324), _ = u(z(n.c, Gq), 437), s = u(z(n.c, H1n), 490), N = u(z(n.c, qq), 438), n.j = $(R(z(n.c, Zce))), f = n.a, h.g) { + case 0: + f = n.a; + break; + case 1: + f = n.b; + break; + case 2: + f = n.i; + break; + case 3: + f = n.e; + break; + case 4: + f = n.f; + break; + default: + throw M(new Gn(xS + (h.f != null ? h.f : "" + h.g))); + } + if (n.d = new fOn(f, _, s), U(n.d, (J4(), O8), un(z(n.c, Qce))), n.d.c = on(un(z(n.c, q1n))), AM(n.c).i == 0) + return n.d; + for (d = new ne(AM(n.c)); d.e != d.i.gc(); ) { + for (a = u(ue(d), 27), p = a.g / 2, g = a.f / 2, X = new V(a.i + p, a.j + g); nu(n.g, X); ) + a0(X, (y.Math.random() - 0.5) * vh, (y.Math.random() - 0.5) * vh); + k = u(z(a, (He(), xv)), 140), j = new EOn(X, new Ho(X.a - p - n.j / 2 - k.b, X.b - g - n.j / 2 - k.d, a.g + n.j + (k.b + k.c), a.f + n.j + (k.d + k.a))), nn(n.d.i, j), Ve(n.g, X, new bi(j, a)); + } + switch (N.g) { + case 0: + if (O == null) + n.d.d = u(sn(n.d.i, 0), 68); + else + for (I = new C(n.d.i); I.a < I.c.c.length; ) + j = u(E(I), 68), m = u(u(ee(n.g, j.a), 42).b, 27).jh(), m != null && An(m, O) && (n.d.d = j); + break; + case 1: + for (r = new V(n.c.g, n.c.f), r.a *= 0.5, r.b *= 0.5, a0(r, n.c.i, n.c.j), c = St, S = new C(n.d.i); S.a < S.c.c.length; ) + j = u(E(S), 68), l = J1(j.a, r), l < c && (c = l, n.d.d = j); + break; + default: + throw M(new Gn(xS + (N.f != null ? N.f : "" + N.g))); + } + return n.d; + } + function $Le(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (g = 0, r = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); r.e != r.i.gc(); ) + i = u(ue(r), 27), on(un(z(i, (cn(), Fd)))) || (a = At(i), (x(z(a, Yh)) !== x((lh(), k1)) || x(z(a, Ld)) === x((o1(), pv)) || x(z(a, Ld)) === x((o1(), gv)) || on(un(z(a, lb))) || x(z(a, Fw)) !== x((dd(), Ow)) || x(z(a, ja)) === x((ps(), pb)) || x(z(a, ja)) === x((ps(), Uw)) || x(z(a, $d)) === x((a1(), Pv)) || x(z(a, $d)) === x((a1(), Iv))) && !on(un(z(i, lI))) && (ht(i, (W(), dt), Y(g)), ++g), fzn(n, i, t)); + for (g = 0, l = new ne((!e.b && (e.b = new q(Wt, e, 12, 3)), e.b)); l.e != l.i.gc(); ) + f = u(ue(l), 74), (x(z(e, (cn(), Yh))) !== x((lh(), k1)) || x(z(e, Ld)) === x((o1(), pv)) || x(z(e, Ld)) === x((o1(), gv)) || on(un(z(e, lb))) || x(z(e, Fw)) !== x((dd(), Ow)) || x(z(e, ja)) === x((ps(), pb)) || x(z(e, ja)) === x((ps(), Uw)) || x(z(e, $d)) === x((a1(), Pv)) || x(z(e, $d)) === x((a1(), Iv))) && (ht(f, (W(), dt), Y(g)), ++g), k = Kh(f), j = ra(f), d = on(un(z(k, Rw))), m = !on(un(z(f, Fd))), p = d && _0(f) && on(un(z(f, Nd))), c = At(k) == e && At(k) == At(j), s = (At(k) == e && j == e) ^ (At(j) == e && k == e), m && !p && (s || c) && ltn(n, f, e, t); + if (At(e)) + for (h = new ne(xIn(At(e))); h.e != h.i.gc(); ) + f = u(ue(h), 74), k = Kh(f), k == e && _0(f) && (p = on(un(z(k, (cn(), Rw)))) && on(un(z(f, Nd))), p && ltn(n, f, e, t)); + } + function xLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt, Yu, Rr, Fo; + for (t.Ug("Greedy cycle removal", 1), O = e.a, Fo = O.c.length, n.a = K(ye, _e, 28, Fo, 15, 1), n.c = K(ye, _e, 28, Fo, 15, 1), n.b = K(ye, _e, 28, Fo, 15, 1), l = 0, S = new C(O); S.a < S.c.c.length; ) { + for (k = u(E(S), 10), k.p = l, kn = new C(k.j); kn.a < kn.c.c.length; ) { + for (X = u(E(kn), 12), f = new C(X.e); f.a < f.c.c.length; ) + i = u(E(f), 18), i.c.i != k && (te = u(v(i, (cn(), Tv)), 17).a, n.a[l] += te > 0 ? te + 1 : 1); + for (s = new C(X.g); s.a < s.c.c.length; ) + i = u(E(s), 18), i.d.i != k && (te = u(v(i, (cn(), Tv)), 17).a, n.c[l] += te > 0 ? te + 1 : 1); + } + n.c[l] == 0 ? Fe(n.e, k) : n.a[l] == 0 && Fe(n.f, k), ++l; + } + for (m = -1, p = 1, d = new Z(), n.d = u(v(e, (W(), S3)), 234); Fo > 0; ) { + for (; n.e.b != 0; ) + Lt = u(UL(n.e), 10), n.b[Lt.p] = m--, Den(n, Lt), --Fo; + for (; n.f.b != 0; ) + Yu = u(UL(n.f), 10), n.b[Yu.p] = p++, Den(n, Yu), --Fo; + if (Fo > 0) { + for (g = Wi, I = new C(O); I.a < I.c.c.length; ) + k = u(E(I), 10), n.b[k.p] == 0 && (N = n.c[k.p] - n.a[k.p], N >= g && (N > g && (d.c.length = 0, g = N), Kn(d.c, k))); + a = n.sg(d), n.b[a.p] = p++, Den(n, a), --Fo; + } + } + for (xe = O.c.length + 1, l = 0; l < O.c.length; l++) + n.b[l] < 0 && (n.b[l] += xe); + for (j = new C(O); j.a < j.c.c.length; ) + for (k = u(E(j), 10), Rn = MDn(k.j), tn = Rn, yn = 0, Fn = tn.length; yn < Fn; ++yn) + for (X = tn[yn], _ = hh(X.g), r = _, c = 0, h = r.length; c < h; ++c) + i = r[c], Rr = i.d.i.p, n.b[k.p] > n.b[Rr] && (U0(i, !0), U(e, kj, (_n(), !0))); + n.a = null, n.c = null, n.b = null, vo(n.f), vo(n.e), t.Vg(); + } + function pzn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + for (_ = u(L((!n.a && (n.a = new q(Mt, n, 6, 6)), n.a), 0), 166), a = new Tu(), N = new de(), X = TUn(_), Wc(N.f, _, X), g = new de(), i = new Ct(), m = $h(Eo(A(T(Oo, 1), Bn, 20, 0, [(!e.d && (e.d = new Nn(Wt, e, 8, 5)), e.d), (!e.e && (e.e = new Nn(Wt, e, 7, 4)), e.e)]))); pe(m); ) { + if (p = u(fe(m), 74), (!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i != 1) + throw M(new Gn(iWn + (!n.a && (n.a = new q(Mt, n, 6, 6)), n.a).i)); + p != n && (j = u(L((!p.a && (p.a = new q(Mt, p, 6, 6)), p.a), 0), 166), Kt(i, j, i.c.b, i.c), k = u(Kr(gr(N.f, j)), 13), k || (k = TUn(j), Wc(N.f, j, k)), d = t ? mi(new rr(u(sn(X, X.c.length - 1), 8)), u(sn(k, k.c.length - 1), 8)) : mi(new rr((Ln(0, X.c.length), u(X.c[0], 8))), (Ln(0, k.c.length), u(k.c[0], 8))), Wc(g.f, j, d)); + } + if (i.b != 0) + for (S = u(sn(X, t ? X.c.length - 1 : 0), 8), l = 1; l < X.c.length; l++) { + for (I = u(sn(X, t ? X.c.length - 1 - l : l), 8), r = ge(i, 0); r.b != r.d.c; ) + j = u(be(r), 166), k = u(Kr(gr(N.f, j)), 13), k.c.length <= l ? p$(r) : (O = it(new rr(u(sn(k, t ? k.c.length - 1 - l : l), 8)), u(Kr(gr(g.f, j)), 8)), (I.a != O.a || I.b != O.b) && (c = I.a - S.a, f = I.b - S.b, s = O.a - S.a, h = O.b - S.b, s * f == h * c && (c == 0 || isNaN(c) ? c : c < 0 ? -1 : 1) == (s == 0 || isNaN(s) ? s : s < 0 ? -1 : 1) && (f == 0 || isNaN(f) ? f : f < 0 ? -1 : 1) == (h == 0 || isNaN(h) ? h : h < 0 ? -1 : 1) ? (y.Math.abs(c) < y.Math.abs(s) || y.Math.abs(f) < y.Math.abs(h)) && Kt(a, I, a.c.b, a.c) : l > 1 && Kt(a, S, a.c.b, a.c), p$(r))); + S = I; + } + return a; + } + function mzn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (t.Ug(mVn, 1), Fn = u(Wr(ut(new Tn(null, new In(e, 16)), new N4n()), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), a = u(Wr(ut(new Tn(null, new In(e, 16)), new ykn(e)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), m = u(Wr(ut(new Tn(null, new In(e, 16)), new kkn(e)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), k = K(NI, OS, 40, e.gc(), 0, 1), s = 0; s < a.gc(); s++) + r = u(a.Xb(s), 40), kn = u(v(r, (lc(), O2)), 17).a, kn >= 0 && kn < a.gc() && !k[kn] && (k[kn] = r, a.gd(s), --s); + for (f = 0; f < a.gc(); f++) + for (r = u(a.Xb(f), 40), kn = u(v(r, (lc(), O2)), 17).a, g = 0; ; g++) { + if (p = kn + g, p < k.length && p >= 0 && !k[p]) { + k[p] = r, a.gd(f), --f; + break; + } + if (p = kn - g, p < k.length && p >= 0 && !k[p]) { + k[p] = r, a.gd(f), --f; + break; + } + } + for (m.jd(new $4n()), h = k.length - 1; h >= 0; h--) + !k[h] && !m.dc() && (k[h] = u(m.Xb(0), 40), m.gd(0)); + for (l = 0; l < k.length; l++) + !k[l] && !Fn.dc() && (k[l] = u(Fn.Xb(0), 40), Fn.gd(0)); + for (c = 0; c < k.length; c++) + U(k[c], (pt(), o9), Y(c)); + for (d = u(C8e(ut(new Tn(null, new In(e, 16)), new x4n())), 534), X = d, tn = 0, yn = X.length; tn < yn; ++tn) { + for (_ = X[tn], i = F$(_), mzn(n, i, t.eh(1 / d.length | 0)), Dn(), ud(i, new tD((pt(), o9))), j = new Ct(), N = ge(i, 0); N.b != N.d.c; ) + for (O = u(be(N), 40), I = ge(_.d, 0); I.b != I.d.c; ) + S = u(be(I), 65), S.c == O && Kt(j, S, j.c.b, j.c); + vo(_.d), Bi(_.d, j); + } + t.Vg(); + } + function vzn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + for (i = new Z(), f = new Z(), j = e / 2, p = n.gc(), r = u(n.Xb(0), 8), S = u(n.Xb(1), 8), m = wF(r.a, r.b, S.a, S.b, j), nn(i, (Ln(0, m.c.length), u(m.c[0], 8))), nn(f, (Ln(1, m.c.length), u(m.c[1], 8))), l = 2; l < p; l++) + k = r, r = S, S = u(n.Xb(l), 8), m = wF(r.a, r.b, k.a, k.b, j), nn(i, (Ln(1, m.c.length), u(m.c[1], 8))), nn(f, (Ln(0, m.c.length), u(m.c[0], 8))), m = wF(r.a, r.b, S.a, S.b, j), nn(i, (Ln(0, m.c.length), u(m.c[0], 8))), nn(f, (Ln(1, m.c.length), u(m.c[1], 8))); + for (m = wF(S.a, S.b, r.a, r.b, j), nn(i, (Ln(1, m.c.length), u(m.c[1], 8))), nn(f, (Ln(0, m.c.length), u(m.c[0], 8))), t = new Tu(), s = new Z(), Fe(t, (Ln(0, i.c.length), u(i.c[0], 8))), a = 1; a < i.c.length - 2; a += 2) + c = (Ln(a, i.c.length), u(i.c[a], 8)), g = C_n((Ln(a - 1, i.c.length), u(i.c[a - 1], 8)), c, (Ln(a + 1, i.c.length), u(i.c[a + 1], 8)), (Ln(a + 2, i.c.length), u(i.c[a + 2], 8))), !isFinite(g.a) || !isFinite(g.b) ? Kt(t, c, t.c.b, t.c) : Kt(t, g, t.c.b, t.c); + for (Fe(t, u(sn(i, i.c.length - 1), 8)), nn(s, (Ln(0, f.c.length), u(f.c[0], 8))), d = 1; d < f.c.length - 2; d += 2) + c = (Ln(d, f.c.length), u(f.c[d], 8)), g = C_n((Ln(d - 1, f.c.length), u(f.c[d - 1], 8)), c, (Ln(d + 1, f.c.length), u(f.c[d + 1], 8)), (Ln(d + 2, f.c.length), u(f.c[d + 2], 8))), !isFinite(g.a) || !isFinite(g.b) ? Kn(s.c, c) : Kn(s.c, g); + for (nn(s, u(sn(f, f.c.length - 1), 8)), h = s.c.length - 1; h >= 0; h--) + Fe(t, (Ln(h, s.c.length), u(s.c[h], 8))); + return t; + } + function kzn(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + for (O = $(R(z(e, (_h(), Xw)))), p = $(R(z(e, f9))), g = $(R(z(e, UI))), $Q((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)), S = hGn((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a), O, n.b), j = 0; j < S.c.length; j++) + if (h = (Ln(j, S.c.length), u(S.c[j], 186)), j != 0 && (m = (Ln(j - 1, S.c.length), u(S.c[j - 1], 186)), HFn(h, m.f + m.b + n.b)), k = RLe(j, S, O, n.b, on(un(z(e, (Rf(), Lq))))), on(un(k.b))) { + for (c = new C(h.a); c.a < c.c.c.length; ) + r = u(E(c), 172), r.c = !1, r.k = !1, nGn(r); + h.d = new Z(), h.e = O, --j; + } else if (tke(n, h), j + 1 < S.c.length && (n.e = y.Math.max(h.e + n.b + u(sn((Ln(j + 1, S.c.length), u(S.c[j + 1], 186)).a, 0), 172).r - O, n.c), n.f = y.Math.min(h.e + n.b + u(sn((Ln(j + 1, S.c.length), u(S.c[j + 1], 186)).a, 0), 172).r - O, n.d), h.d.c.length != 0 && (n.c = y.Math.max(n.c, u(sn(h.d, h.d.c.length - 1), 315).d + (h.d.c.length <= 1 ? 0 : n.b)), n.d = y.Math.min(n.c, u(sn(h.d, h.d.c.length - 1), 315).d + (h.d.c.length <= 1 ? 0 : n.b)))), S.c.length == 1) + for (d = u(sn(h.d, h.d.c.length - 1), 315), a = u(sn(d.a, d.a.c.length - 1), 172), f = new C(a.n); f.a < f.c.c.length; ) + s = u(E(f), 209), n.c = y.Math.max(n.c, a.r - s.d), n.d = y.Math.min(n.d, a.r - s.d), n.e = y.Math.max(n.e, s.d + n.b), n.f = y.Math.min(n.f, s.d + n.b); + return I = uKn(S, n.b), N = y.Math.max(I.a, p - (t.b + t.c)), l = y.Math.max(I.b, g - (t.d + t.a)), i = l - I.b, ht(e, s9, i), ht(e, GI, S), new rW(n.a, N, I.b + i, (x5(), _j)); + } + function FLe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + if (tn = u(v(n, (cn(), Ut)), 101), tn != (Di(), Qf) && tn != Pa) { + for (m = n.b, p = m.c.length, a = new zc((Co(p + 2, cB), oT(nr(nr(5, p + 2), (p + 2) / 10 | 0)))), k = new zc((Co(p + 2, cB), oT(nr(nr(5, p + 2), (p + 2) / 10 | 0)))), nn(a, new de()), nn(a, new de()), nn(k, new Z()), nn(k, new Z()), X = new Z(), e = 0; e < p; e++) + for (t = (Ln(e, m.c.length), u(m.c[e], 30)), yn = (Ln(e, a.c.length), u(a.c[e], 85)), j = new de(), Kn(a.c, j), Fn = (Ln(e, k.c.length), u(k.c[e], 15)), I = new Z(), Kn(k.c, I), r = new C(t.a); r.a < r.c.c.length; ) { + if (i = u(E(r), 10), AY(i)) { + Kn(X.c, i); + continue; + } + for (l = new ie(ce(ji(i).a.Kc(), new En())); pe(l); ) + f = u(fe(l), 18), Rn = f.c.i, AY(Rn) && (kn = u(yn.xc(v(Rn, (W(), st))), 10), kn || (kn = K_n(n, Rn), yn.zc(v(Rn, st), kn), Fn.Fc(kn)), Zi(f, u(sn(kn.j, 1), 12))); + for (h = new ie(ce(Qt(i).a.Kc(), new En())); pe(h); ) + f = u(fe(h), 18), te = f.d.i, AY(te) && (S = u(ee(j, v(te, (W(), st))), 10), S || (S = K_n(n, te), Ve(j, v(te, st), S), Kn(I.c, S)), Oi(f, u(sn(S.j, 0), 12))); + } + for (d = 0; d < k.c.length; d++) + if (O = (Ln(d, k.c.length), u(k.c[d], 15)), !O.dc()) + for (g = null, d == 0 ? (g = new Nc(n), zb(0, m.c.length), d6(m.c, 0, g)) : d == a.c.length - 1 ? (g = new Nc(n), Kn(m.c, g)) : g = (Ln(d - 1, m.c.length), u(m.c[d - 1], 30)), s = O.Kc(); s.Ob(); ) + c = u(s.Pb(), 10), $i(c, g); + for (_ = new C(X); _.a < _.c.c.length; ) + N = u(E(_), 10), $i(N, null); + U(n, (W(), hH), X); + } + } + function BLe(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt, Yu, Rr; + for (Lt = new Z(), m = new C(e.b); m.a < m.c.c.length; ) + for (g = u(E(m), 30), _ = new C(g.a); _.a < _.c.c.length; ) { + for (N = u(E(_), 10), N.p = -1, d = Wi, yn = Wi, Fn = new C(N.j); Fn.a < Fn.c.c.length; ) { + for (kn = u(E(Fn), 12), r = new C(kn.e); r.a < r.c.c.length; ) + t = u(E(r), 18), Rn = u(v(t, (cn(), I3)), 17).a, d = y.Math.max(d, Rn); + for (i = new C(kn.g); i.a < i.c.c.length; ) + t = u(E(i), 18), Rn = u(v(t, (cn(), I3)), 17).a, yn = y.Math.max(yn, Rn); + } + U(N, OI, Y(d)), U(N, DI, Y(yn)); + } + for (S = 0, p = new C(e.b); p.a < p.c.c.length; ) + for (g = u(E(p), 30), _ = new C(g.a); _.a < _.c.c.length; ) + N = u(E(_), 10), N.p < 0 && (xe = new YG(), xe.b = S++, Jqn(n, N, xe), Kn(Lt.c, xe)); + for (tn = Dh(Lt.c.length), a = Dh(Lt.c.length), s = 0; s < Lt.c.length; s++) + nn(tn, new Z()), nn(a, Y(0)); + for (tDe(e, Lt, tn, a), Yu = u(Ff(Lt, K(xie, lVn, 261, Lt.c.length, 0, 1)), 854), X = u(Ff(tn, K(rs, kw, 15, tn.c.length, 0, 1)), 198), l = K(ye, _e, 28, a.c.length, 15, 1), f = 0; f < l.length; f++) + l[f] = (Ln(f, a.c.length), u(a.c[f], 17)).a; + for (I = 0, O = new Z(), h = 0; h < Yu.length; h++) + l[h] == 0 && Kn(O.c, Yu[h]); + for (j = K(ye, _e, 28, Yu.length, 15, 1); O.c.length != 0; ) + for (xe = u(Yl(O, 0), 261), j[xe.b] = I++; !X[xe.b].dc(); ) + Rr = u(X[xe.b].gd(0), 261), --l[Rr.b], l[Rr.b] == 0 && Kn(O.c, Rr); + for (n.a = K(xie, lVn, 261, Yu.length, 0, 1), c = 0; c < Yu.length; c++) + for (k = Yu[c], te = j[c], n.a[te] = k, k.b = te, _ = new C(k.e); _.a < _.c.c.length; ) + N = u(E(_), 10), N.p = te; + return n.a; + } + function RLe(n, e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m, k, j, S; + for (k = !1, h = !1, g = n + 1, m = (Ln(n, e.c.length), u(e.c[n], 186)), f = m.a, l = null, s = 0; s < m.a.c.length; s++) + if (c = (Ln(s, f.c.length), u(f.c[s], 172)), !c.c) { + if (c.b.c.length == 0) { + fl(), Gk(m, c), --s, k = !0; + continue; + } + if (c.k || (l && fA(l), l = new rJ(l ? l.e + l.d + i : 0, m.f, i), Hk(c, l.e + l.d, m.f), nn(m.d, l), HQ(l, c), c.k = !0), a = null, a = (S = null, s < m.a.c.length - 1 ? S = u(sn(m.a, s + 1), 172) : g < e.c.length && (Ln(g, e.c.length), u(e.c[g], 186)).a.c.length != 0 && (S = u(sn((Ln(g, e.c.length), u(e.c[g], 186)).a, 0), 172)), S), j = !1, a && (j = !ct(a.j, m)), a) { + if (a.b.c.length != 0 && !on(un(u(sn(a.b, 0), 27).of((Rf(), Kj))))) + uk(c, t - c.s), fA(c.q), k = k | fje(m, c, a, t, i); + else { + Gk(m, a); + break; + } + if (a.b.c.length == 0) + for (e.c.length > g && Gk((Ln(g, e.c.length), u(e.c[g], 186)), a), a = null; e.c.length > g && (Ln(g, e.c.length), u(e.c[g], 186)).a.c.length == 0; ) + bu(e, (Ln(g, e.c.length), e.c[g])); + if (!a) { + --s; + continue; + } + if (!on(un(u(sn(a.b, 0), 27).of((Rf(), Kj)))) && nPe(e, m, c, a, j, t, g, i)) { + k = !0; + continue; + } + if (j) { + if (p = m.b, d = a.f, !on(un(u(sn(a.b, 0), 27).of(Kj))) && mOe(e, m, c, a, t, g, i, r)) { + if (k = !0, p < d) { + h = !0, a.j = m; + break; + } + continue; + } else if (pY(m, c)) { + c.c = !0, k = !0; + continue; + } + } else if (pY(m, c)) { + c.c = !0, k = !0; + continue; + } + if (k) + continue; + } + if (pY(m, c)) { + c.c = !0, k = !0, a && (a.k = !1); + continue; + } else + fA(c.q); + } + return new bi((_n(), !!k), !!h); + } + function cn() { + cn = F, PH = (He(), Rue), mhn = Kue, Tj = Uan, Ws = _ue, T2 = Gan, wb = zan, qw = Xan, Av = Van, Sv = Wan, IH = iO, gb = qd, OH = Hue, X8 = Yan, yI = $3, Mj = (atn(), tte), M2 = ite, Bd = rte, A2 = cte, Ute = new Ni(Jj, Y(0)), Tv = Zee, phn = nte, I3 = ete, Ahn = Ate, khn = ste, yhn = lte, LH = mte, jhn = bte, Ehn = gte, jI = Ote, NH = Ste, Mhn = Ete, Chn = yte, Thn = Mte, db = Xee, z8 = Vee, MH = lee, Jfn = dee, Wte = k9, Jte = cO, Vte = Qj, Xte = rO, vhn = (Gp(), Yw), new Ni(x3, vhn), ahn = new f0(12), lhn = new Ni(C1, ahn), Xfn = (El(), Rv), $l = new Ni(jan, Xfn), Kw = new Ni(oo, 0), Gte = new Ni(fU, Y(1)), oI = new Ni(x2, Gm), Fd = tO, Ut = v9, Mv = H2, Fte = zj, Th = Pue, Bw = R2, zte = new Ni(hU, (_n(), !0)), Rw = Xj, Nd = eU, xd = Hd, kI = Ta, SH = Vw, zfn = (ci(), Jf), Do = new Ni(_d, zfn), ab = K2, mI = Pan, _w = Ww, qte = sU, whn = Han, bhn = (Bg(), eE), new Ni(Fan, bhn), Kte = rU, _te = cU, Hte = uU, Rte = iU, DH = ote, $d = $ee, ja = Nee, V8 = ute, su = Aee, Ld = iee, U8 = tee, lb = _ne, qfn = Hne, yH = zne, Cj = qne, jH = nee, ohn = xee, shn = Fee, thn = yee, vI = Qee, AH = Kee, TH = gee, hhn = Gee, Wfn = fee, CH = hee, kH = Gj, fhn = Bee, fI = Lne, Kfn = Dne, sI = One, Zfn = vee, Yfn = mee, nhn = kee, Ev = _2, Fr = kb, m1 = Can, Ah = nU, EH = Zq, Ufn = Vne, v1 = oU, q8 = Due, wI = Nue, bb = Ran, dhn = $ue, Cv = xue, rhn = Pee, chn = Oee, Hw = N3, mH = Ine, uhn = Lee, bI = uee, dI = cee, pI = xv, ihn = Cee, G8 = Hee, Aj = Jan, Gfn = ree, ghn = Yee, Vfn = oee, Nte = Jne, $te = Qne, Bte = Tee, xte = Yne, ehn = tU, gI = See, aI = Zne, Yh = Kne, Hfn = Fne, hI = $ne, _fn = xne, lI = Bne, Fw = Nne, vH = Rne, Qfn = pee; + } + function Ze(n) { + var e, t, i; + if (n.d >= n.j) { + n.a = -1, n.c = 1; + return; + } + if (e = Xi(n.i, n.d++), n.a = e, n.b == 1) { + switch (e) { + case 92: + if (i = 10, n.d >= n.j) + throw M(new Le($e((Ie(), qS)))); + n.a = Xi(n.i, n.d++); + break; + case 45: + (n.e & 512) == 512 && n.d < n.j && Xi(n.i, n.d) == 91 ? (++n.d, i = 24) : i = 0; + break; + case 91: + if ((n.e & 512) != 512 && n.d < n.j && Xi(n.i, n.d) == 58) { + ++n.d, i = 20; + break; + } + default: + (e & 64512) == Sy && n.d < n.j && (t = Xi(n.i, n.d), (t & 64512) == 56320 && (n.a = hr + (e - Sy << 10) + t - 56320, ++n.d)), i = 0; + } + n.c = i; + return; + } + switch (e) { + case 124: + i = 2; + break; + case 42: + i = 3; + break; + case 43: + i = 4; + break; + case 63: + i = 5; + break; + case 41: + i = 7; + break; + case 46: + i = 8; + break; + case 91: + i = 9; + break; + case 94: + i = 11; + break; + case 36: + i = 12; + break; + case 40: + if (i = 6, n.d >= n.j || Xi(n.i, n.d) != 63) + break; + if (++n.d >= n.j) + throw M(new Le($e((Ie(), jK)))); + switch (e = Xi(n.i, n.d++), e) { + case 58: + i = 13; + break; + case 61: + i = 14; + break; + case 33: + i = 15; + break; + case 91: + i = 19; + break; + case 62: + i = 18; + break; + case 60: + if (n.d >= n.j) + throw M(new Le($e((Ie(), jK)))); + if (e = Xi(n.i, n.d++), e == 61) + i = 16; + else if (e == 33) + i = 17; + else + throw M(new Le($e((Ie(), IWn)))); + break; + case 35: + for (; n.d < n.j && (e = Xi(n.i, n.d++), e != 41); ) + ; + if (e != 41) + throw M(new Le($e((Ie(), OWn)))); + i = 21; + break; + default: + if (e == 45 || 97 <= e && e <= 122 || 65 <= e && e <= 90) { + --n.d, i = 22; + break; + } else if (e == 40) { + i = 23; + break; + } + throw M(new Le($e((Ie(), jK)))); + } + break; + case 92: + if (i = 10, n.d >= n.j) + throw M(new Le($e((Ie(), qS)))); + n.a = Xi(n.i, n.d++); + break; + default: + i = 0; + } + n.c = i; + } + function KLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j; + if (t.Ug("Process compaction", 1), !!on(un(v(e, (lc(), Tln))))) { + for (r = u(v(e, vb), 88), p = $(R(v(e, fq))), dIe(n, e, r), iLe(e, p / 2 / 2), m = e.b, ud(m, new dkn(r)), l = ge(m, 0); l.b != l.d.c; ) + if (h = u(be(l), 40), !on(un(v(h, (pt(), Ma))))) { + if (i = RAe(h, r), k = NPe(h, e), d = 0, g = 0, i) + switch (j = i.e, r.g) { + case 2: + d = j.a - p - h.f.a, k.e.a - p - h.f.a < d && (d = k.e.a - p - h.f.a), g = d + h.f.a; + break; + case 1: + d = j.a + i.f.a + p, k.e.a + p > d && (d = k.e.a + k.f.a + p), g = d + h.f.a; + break; + case 4: + d = j.b - p - h.f.b, k.e.b - p - h.f.b < d && (d = k.e.b - p - h.f.b), g = d + h.f.b; + break; + case 3: + d = j.b + i.f.b + p, k.e.b + p > d && (d = k.e.b + k.f.b + p), g = d + h.f.b; + } + else if (k) + switch (r.g) { + case 2: + d = k.e.a - p - h.f.a, g = d + h.f.a; + break; + case 1: + d = k.e.a + k.f.a + p, g = d + h.f.a; + break; + case 4: + d = k.e.b - p - h.f.b, g = d + h.f.b; + break; + case 3: + d = k.e.b + k.f.b + p, g = d + h.f.b; + } + x(v(e, sq)) === x((d5(), Lj)) ? (c = d, s = g, f = im(ut(new Tn(null, new In(n.a, 16)), new tMn(c, s))), f.a != null ? r == (ci(), Br) || r == Xr ? h.e.a = d : h.e.b = d : (r == (ci(), Br) || r == us ? f = im(ut(D$n(new Tn(null, new In(n.a, 16))), new bkn(c))) : f = im(ut(D$n(new Tn(null, new In(n.a, 16))), new wkn(c))), f.a != null && (r == Br || r == Xr ? h.e.a = $(R((oe(f.a != null), u(f.a, 42)).a)) : h.e.b = $(R((oe(f.a != null), u(f.a, 42)).a)))), f.a != null && (a = qr(n.a, (oe(f.a != null), f.a), 0), a > 0 && a != u(v(h, Sh), 17).a && (U(h, mln, (_n(), !0)), U(h, Sh, Y(a))))) : r == (ci(), Br) || r == Xr ? h.e.a = d : h.e.b = d; + } + t.Vg(); + } + } + function yzn(n) { + var e, t, i, r, c, s, f, h, l; + for (n.b = 1, Ze(n), e = null, n.c == 0 && n.a == 94 ? (Ze(n), e = (nt(), nt(), new yo(4)), Fc(e, 0, cv), f = new yo(4)) : f = (nt(), nt(), new yo(4)), r = !0; (l = n.c) != 1; ) { + if (l == 0 && n.a == 93 && !r) { + e && (V5(e, f), f = e); + break; + } + if (t = n.a, i = !1, l == 10) + switch (t) { + case 100: + case 68: + case 119: + case 87: + case 115: + case 83: + gw(f, Im(t)), i = !0; + break; + case 105: + case 73: + case 99: + case 67: + t = (gw(f, Im(t)), -1), t < 0 && (i = !0); + break; + case 112: + case 80: + if (h = xnn(n, t), !h) + throw M(new Le($e((Ie(), EK)))); + gw(f, h), i = !0; + break; + default: + t = pen(n); + } + else if (l == 24 && !r) { + if (e && (V5(e, f), f = e), c = yzn(n), V5(f, c), n.c != 0 || n.a != 93) + throw M(new Le($e((Ie(), KWn)))); + break; + } + if (Ze(n), !i) { + if (l == 0) { + if (t == 91) + throw M(new Le($e((Ie(), Kcn)))); + if (t == 93) + throw M(new Le($e((Ie(), _cn)))); + if (t == 45 && !r && n.a != 93) + throw M(new Le($e((Ie(), CK)))); + } + if (n.c != 0 || n.a != 45 || t == 45 && r) + Fc(f, t, t); + else { + if (Ze(n), (l = n.c) == 1) + throw M(new Le($e((Ie(), US)))); + if (l == 0 && n.a == 93) + Fc(f, t, t), Fc(f, 45, 45); + else { + if (l == 0 && n.a == 93 || l == 24) + throw M(new Le($e((Ie(), CK)))); + if (s = n.a, l == 0) { + if (s == 91) + throw M(new Le($e((Ie(), Kcn)))); + if (s == 93) + throw M(new Le($e((Ie(), _cn)))); + if (s == 45) + throw M(new Le($e((Ie(), CK)))); + } else + l == 10 && (s = pen(n)); + if (Ze(n), t > s) + throw M(new Le($e((Ie(), qWn)))); + Fc(f, t, s); + } + } + } + r = !1; + } + if (n.c == 1) + throw M(new Le($e((Ie(), US)))); + return Gg(f), z5(f), n.b = 0, Ze(n), f; + } + function _Le(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _; + if (t.Ug("Coffman-Graham Layering", 1), e.a.c.length == 0) { + t.Vg(); + return; + } + for (_ = u(v(e, (cn(), ihn)), 17).a, h = 0, s = 0, g = new C(e.a); g.a < g.c.c.length; ) + for (d = u(E(g), 10), d.p = h++, c = new ie(ce(Qt(d).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), r.p = s++; + for (n.d = K(so, Xh, 28, h, 16, 1), n.a = K(so, Xh, 28, s, 16, 1), n.b = K(ye, _e, 28, h, 15, 1), n.e = K(ye, _e, 28, h, 15, 1), n.f = K(ye, _e, 28, h, 15, 1), gT(n.c), Bke(n, e), m = new dM(new D7n(n)), N = new C(e.a); N.a < N.c.c.length; ) { + for (I = u(E(N), 10), c = new ie(ce(ji(I).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), n.a[r.p] || ++n.b[I.p]; + n.b[I.p] == 0 && Mp(ym(m, I), _m); + } + for (f = 0; m.b.c.length != 0; ) + for (I = u(w$(m), 10), n.f[I.p] = f++, c = new ie(ce(Qt(I).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), !n.a[r.p] && (j = r.d.i, --n.b[j.p], Pn(n.c, j, Y(n.f[I.p])), n.b[j.p] == 0 && Mp(ym(m, j), _m)); + for (p = new dM(new L7n(n)), O = new C(e.a); O.a < O.c.c.length; ) { + for (I = u(E(O), 10), c = new ie(ce(Qt(I).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), n.a[r.p] || ++n.e[I.p]; + n.e[I.p] == 0 && Mp(ym(p, I), _m); + } + for (a = new Z(), i = vIn(e, a); p.b.c.length != 0; ) + for (S = u(w$(p), 10), (i.a.c.length >= _ || !$8e(S, i)) && (i = vIn(e, a)), $i(S, i), c = new ie(ce(ji(S).a.Kc(), new En())); pe(c); ) + r = u(fe(c), 18), !n.a[r.p] && (k = r.c.i, --n.e[k.p], n.e[k.p] == 0 && Mp(ym(p, k), _m)); + for (l = a.c.length - 1; l >= 0; --l) + nn(e.b, (Ln(l, a.c.length), u(a.c[l], 30))); + e.a.c.length = 0, t.Vg(); + } + function jzn(n, e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + N = !1; + do + for (N = !1, c = e ? new qa(n.a.b).a.gc() - 2 : 1; e ? c >= 0 : c < new qa(n.a.b).a.gc(); c += e ? -1 : 1) + for (r = jJ(n.a, Y(c)), p = 0; p < r.b; p++) + if (d = u(Zo(r, p), 10), !!kt(d, (W(), dt)) && !(Hke(n.a, Y(c)) && n.r == (ps(), pb) || qke(n.a, Y(c)) && n.r == (ps(), Uw))) { + for (O = !0, S = 0; S < r.b; S++) + j = u(Zo(r, S), 10), kt(j, dt) && (e && u(v(d, dt), 17).a < u(v(j, dt), 17).a || !e && u(v(d, dt), 17).a > u(v(j, dt), 17).a) && (O = !1); + if (O) { + for (h = e ? c + 1 : c - 1, f = jJ(n.a, Y(h)), s = !1, I = !0, i = !1, a = ge(f, 0); a.b != a.d.c; ) + l = u(be(a), 10), kt(l, dt) ? l.p != d.p && (s = s | (e ? u(v(l, dt), 17).a < u(v(d, dt), 17).a : u(v(l, dt), 17).a > u(v(d, dt), 17).a), I = !1) : !s && I && l.k == (Vn(), Sc) && (i = !0, e ? g = u(fe(new ie(ce(ji(l).a.Kc(), new En()))), 18).c.i : g = u(fe(new ie(ce(Qt(l).a.Kc(), new En()))), 18).d.i, g == d && (e ? t = u(fe(new ie(ce(Qt(l).a.Kc(), new En()))), 18).d.i : t = u(fe(new ie(ce(ji(l).a.Kc(), new En()))), 18).c.i, (e ? u(xb(n.a, t), 17).a - u(xb(n.a, g), 17).a : u(xb(n.a, g), 17).a - u(xb(n.a, t), 17).a) <= 2 && (I = !1))); + if (i && I && (e ? t = u(fe(new ie(ce(Qt(d).a.Kc(), new En()))), 18).d.i : t = u(fe(new ie(ce(ji(d).a.Kc(), new En()))), 18).c.i, (e ? u(xb(n.a, t), 17).a - u(xb(n.a, d), 17).a : u(xb(n.a, d), 17).a - u(xb(n.a, t), 17).a) <= 2 && t.k == (Vn(), Vt) && (I = !1)), s || I) { + for (k = ZHn(n, d, e); k.a.gc() != 0; ) + m = u(k.a.ec().Kc().Pb(), 10), k.a.Bc(m) != null, Bi(k, ZHn(n, m, e)); + --p, N = !0; + } + } + } + while (N); + } + function HLe(n) { + Me(n.c, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#decimal"])), Me(n.d, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#integer"])), Me(n.e, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#boolean"])), Me(n.f, Be, A(T(fn, 1), J, 2, 6, [Ji, "EBoolean", Qe, "EBoolean:Object"])), Me(n.i, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#byte"])), Me(n.g, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#hexBinary"])), Me(n.j, Be, A(T(fn, 1), J, 2, 6, [Ji, "EByte", Qe, "EByte:Object"])), Me(n.n, Be, A(T(fn, 1), J, 2, 6, [Ji, "EChar", Qe, "EChar:Object"])), Me(n.t, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#double"])), Me(n.u, Be, A(T(fn, 1), J, 2, 6, [Ji, "EDouble", Qe, "EDouble:Object"])), Me(n.F, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#float"])), Me(n.G, Be, A(T(fn, 1), J, 2, 6, [Ji, "EFloat", Qe, "EFloat:Object"])), Me(n.I, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#int"])), Me(n.J, Be, A(T(fn, 1), J, 2, 6, [Ji, "EInt", Qe, "EInt:Object"])), Me(n.N, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#long"])), Me(n.O, Be, A(T(fn, 1), J, 2, 6, [Ji, "ELong", Qe, "ELong:Object"])), Me(n.Z, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#short"])), Me(n.$, Be, A(T(fn, 1), J, 2, 6, [Ji, "EShort", Qe, "EShort:Object"])), Me(n._, Be, A(T(fn, 1), J, 2, 6, [Ji, "http://www.w3.org/2001/XMLSchema#string"])); + } + function qLe(n, e, t, i, r, c, s) { + var f, h, l, a, d, g, p, m; + return g = u(i.a, 17).a, p = u(i.b, 17).a, d = n.b, m = n.c, f = 0, a = 0, e == (ci(), Br) || e == Xr ? (a = a7(aBn(Ub(_r(new Tn(null, new In(t.b, 16)), new F4n()), new v4n()))), d.e.b + d.f.b / 2 > a ? (l = ++p, f = $(R(ho(_b(_r(new Tn(null, new In(t.b, 16)), new cMn(r, l)), new k4n()))))) : (h = ++g, f = $(R(ho(Ap(_r(new Tn(null, new In(t.b, 16)), new uMn(r, h)), new y4n())))))) : (a = a7(aBn(Ub(_r(new Tn(null, new In(t.b, 16)), new M4n()), new m4n()))), d.e.a + d.f.a / 2 > a ? (l = ++p, f = $(R(ho(_b(_r(new Tn(null, new In(t.b, 16)), new iMn(r, l)), new j4n()))))) : (h = ++g, f = $(R(ho(Ap(_r(new Tn(null, new In(t.b, 16)), new rMn(r, h)), new E4n())))))), e == Br ? (ir(n.a, new V($(R(v(d, (pt(), jf)))) - r, f)), ir(n.a, new V(m.e.a + m.f.a + r + c, f)), ir(n.a, new V(m.e.a + m.f.a + r + c, m.e.b + m.f.b / 2)), ir(n.a, new V(m.e.a + m.f.a, m.e.b + m.f.b / 2))) : e == Xr ? (ir(n.a, new V($(R(v(d, (pt(), Js)))) + r, d.e.b + d.f.b / 2)), ir(n.a, new V(d.e.a + d.f.a + r, f)), ir(n.a, new V(m.e.a - r - c, f)), ir(n.a, new V(m.e.a - r - c, m.e.b + m.f.b / 2)), ir(n.a, new V(m.e.a, m.e.b + m.f.b / 2))) : e == us ? (ir(n.a, new V(f, $(R(v(d, (pt(), jf)))) - r)), ir(n.a, new V(f, m.e.b + m.f.b + r + c)), ir(n.a, new V(m.e.a + m.f.a / 2, m.e.b + m.f.b + r + c)), ir(n.a, new V(m.e.a + m.f.a / 2, m.e.b + m.f.b + r))) : (n.a.b == 0 || (u($s(n.a), 8).b = $(R(v(d, (pt(), Js)))) + r * u(s.b, 17).a), ir(n.a, new V(f, $(R(v(d, (pt(), Js)))) + r * u(s.b, 17).a)), ir(n.a, new V(f, m.e.b - r * u(s.a, 17).a - c))), new bi(Y(g), Y(p)); + } + function ULe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p; + if (s = !0, d = null, i = null, r = null, e = !1, p = xoe, l = null, c = null, f = 0, h = yx(n, f, _dn, Hdn), h < n.length && (zn(h, n.length), n.charCodeAt(h) == 58) && (d = (Fi(f, h, n.length), n.substr(f, h - f)), f = h + 1), t = d != null && t7(jO, d.toLowerCase()), t) { + if (h = n.lastIndexOf("!/"), h == -1) + throw M(new Gn("no archive separator")); + s = !0, i = qo(n, f, ++h), f = h; + } else + f >= 0 && An(n.substr(f, 2), "//") ? (f += 2, h = yx(n, f, D9, L9), i = (Fi(f, h, n.length), n.substr(f, h - f)), f = h) : d != null && (f == n.length || (zn(f, n.length), n.charCodeAt(f) != 47)) && (s = !1, h = zX(n, gu(35), f), h == -1 && (h = n.length), i = (Fi(f, h, n.length), n.substr(f, h - f)), f = h); + if (!t && f < n.length && (zn(f, n.length), n.charCodeAt(f) == 47) && (h = yx(n, f + 1, D9, L9), a = (Fi(f + 1, h, n.length), n.substr(f + 1, h - (f + 1))), a.length > 0 && Xi(a, a.length - 1) == 58 && (r = a, f = h)), f < n.length && (zn(f, n.length), n.charCodeAt(f) == 47) && (++f, e = !0), f < n.length && (zn(f, n.length), n.charCodeAt(f) != 63) && (zn(f, n.length), n.charCodeAt(f) != 35)) { + for (g = new Z(); f < n.length && (zn(f, n.length), n.charCodeAt(f) != 63) && (zn(f, n.length), n.charCodeAt(f) != 35); ) + h = yx(n, f, D9, L9), nn(g, (Fi(f, h, n.length), n.substr(f, h - f))), f = h, f < n.length && (zn(f, n.length), n.charCodeAt(f) == 47) && (U6e(n, ++f) || g.c.push("")); + p = K(fn, J, 2, g.c.length, 6, 1), Ff(g, p); + } + return f < n.length && (zn(f, n.length), n.charCodeAt(f) == 63) && (h = w4(n, 35, ++f), h == -1 && (h = n.length), l = (Fi(f, h, n.length), n.substr(f, h - f)), f = h), f < n.length && (c = xW(n, ++f)), jOe(s, d, i, r, p, l), new jF(s, d, i, r, e, p, l, c); + } + function Ezn() { + Ezn = F, YF(), qe = new C0(), Pn(qe, (en(), ef), Yf), Pn(qe, Ts, Yf), Pn(qe, Wu, Yf), Pn(qe, tf, Yf), Pn(qe, ku, Yf), Pn(qe, Ju, Yf), Pn(qe, tf, ef), Pn(qe, Yf, os), Pn(qe, ef, os), Pn(qe, Ts, os), Pn(qe, Wu, os), Pn(qe, vu, os), Pn(qe, tf, os), Pn(qe, ku, os), Pn(qe, Ju, os), Pn(qe, fu, os), Pn(qe, Yf, No), Pn(qe, ef, No), Pn(qe, os, No), Pn(qe, Ts, No), Pn(qe, Wu, No), Pn(qe, vu, No), Pn(qe, tf, No), Pn(qe, fu, No), Pn(qe, $o, No), Pn(qe, ku, No), Pn(qe, Fu, No), Pn(qe, Ju, No), Pn(qe, ef, Ts), Pn(qe, Wu, Ts), Pn(qe, tf, Ts), Pn(qe, Ju, Ts), Pn(qe, ef, Wu), Pn(qe, Ts, Wu), Pn(qe, tf, Wu), Pn(qe, Wu, Wu), Pn(qe, ku, Wu), Pn(qe, Yf, ss), Pn(qe, ef, ss), Pn(qe, os, ss), Pn(qe, No, ss), Pn(qe, Ts, ss), Pn(qe, Wu, ss), Pn(qe, vu, ss), Pn(qe, tf, ss), Pn(qe, $o, ss), Pn(qe, fu, ss), Pn(qe, Ju, ss), Pn(qe, ku, ss), Pn(qe, Gc, ss), Pn(qe, Yf, $o), Pn(qe, ef, $o), Pn(qe, os, $o), Pn(qe, Ts, $o), Pn(qe, Wu, $o), Pn(qe, vu, $o), Pn(qe, tf, $o), Pn(qe, fu, $o), Pn(qe, Ju, $o), Pn(qe, Fu, $o), Pn(qe, Gc, $o), Pn(qe, ef, fu), Pn(qe, Ts, fu), Pn(qe, Wu, fu), Pn(qe, tf, fu), Pn(qe, $o, fu), Pn(qe, Ju, fu), Pn(qe, ku, fu), Pn(qe, Yf, mu), Pn(qe, ef, mu), Pn(qe, os, mu), Pn(qe, Ts, mu), Pn(qe, Wu, mu), Pn(qe, vu, mu), Pn(qe, tf, mu), Pn(qe, fu, mu), Pn(qe, Ju, mu), Pn(qe, ef, ku), Pn(qe, os, ku), Pn(qe, No, ku), Pn(qe, Wu, ku), Pn(qe, Yf, Fu), Pn(qe, ef, Fu), Pn(qe, No, Fu), Pn(qe, Ts, Fu), Pn(qe, Wu, Fu), Pn(qe, vu, Fu), Pn(qe, tf, Fu), Pn(qe, tf, Gc), Pn(qe, Wu, Gc), Pn(qe, fu, Yf), Pn(qe, fu, Ts), Pn(qe, fu, os), Pn(qe, vu, Yf), Pn(qe, vu, ef), Pn(qe, vu, No); + } + function GLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X; + switch (t.Ug("Brandes & Koepf node placement", 1), n.a = e, n.c = APe(e), i = u(v(e, (cn(), AH)), 281), p = on(un(v(e, G8))), n.d = i == (Vk(), YP) && !p || i == rH, pOe(n, e), _ = null, X = null, S = null, I = null, j = (Co(4, mw), new zc(4)), u(v(e, AH), 281).g) { + case 3: + S = new Wg(e, n.c.d, (Pf(), Rd), (fh(), y1)), Kn(j.c, S); + break; + case 1: + I = new Wg(e, n.c.d, (Pf(), Xf), (fh(), y1)), Kn(j.c, I); + break; + case 4: + _ = new Wg(e, n.c.d, (Pf(), Rd), (fh(), mb)), Kn(j.c, _); + break; + case 2: + X = new Wg(e, n.c.d, (Pf(), Xf), (fh(), mb)), Kn(j.c, X); + break; + default: + S = new Wg(e, n.c.d, (Pf(), Rd), (fh(), y1)), I = new Wg(e, n.c.d, Xf, y1), _ = new Wg(e, n.c.d, Rd, mb), X = new Wg(e, n.c.d, Xf, mb), Kn(j.c, _), Kn(j.c, X), Kn(j.c, S), Kn(j.c, I); + } + for (r = new XCn(e, n.c), f = new C(j); f.a < f.c.c.length; ) + c = u(E(f), 185), uLe(r, c, n.b), iIe(c); + for (g = new rKn(e, n.c), h = new C(j); h.a < h.c.c.length; ) + c = u(E(h), 185), POe(g, c); + if (t._g()) + for (l = new C(j); l.a < l.c.c.length; ) + c = u(E(l), 185), t.bh(c + " size is " + gF(c)); + if (d = null, n.d && (a = QDe(n, j, n.c.d), QUn(e, a, t) && (d = a)), !d) + for (l = new C(j); l.a < l.c.c.length; ) + c = u(E(l), 185), QUn(e, c, t) && (!d || gF(d) > gF(c)) && (d = c); + for (!d && (d = (Ln(0, j.c.length), u(j.c[0], 185))), k = new C(e.b); k.a < k.c.c.length; ) + for (m = u(E(k), 30), N = new C(m.a); N.a < N.c.c.length; ) + O = u(E(N), 10), O.n.b = $(d.p[O.p]) + $(d.d[O.p]); + for (t._g() && (t.bh("Chosen node placement: " + d), t.bh("Blocks: " + dHn(d)), t.bh("Classes: " + _Ce(d, t)), t.bh("Marked edges: " + n.b)), s = new C(j); s.a < s.c.c.length; ) + c = u(E(s), 185), c.g = null, c.b = null, c.a = null, c.d = null, c.j = null, c.i = null, c.p = null; + t3e(n.c), n.b.a.$b(), t.Vg(); + } + function zLe(n) { + var e, t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + if (n.c.length == 1) + return yKn((Ln(0, n.c.length), u(n.c[0], 121))), Ln(0, n.c.length), u(n.c[0], 121); + if (n.c.length <= 0) + return new tk(); + for (h = new C(n); h.a < h.c.c.length; ) { + for (s = u(E(h), 121), I = 0, m = tt, k = tt, g = Wi, p = Wi, S = ge(s.b, 0); S.b != S.d.c; ) + j = u(be(S), 40), I += u(v(j, (lc(), FI)), 17).a, m = y.Math.min(m, j.e.a), k = y.Math.min(k, j.e.b), g = y.Math.max(g, j.e.a + j.f.a), p = y.Math.max(p, j.e.b + j.f.b); + U(s, (lc(), FI), Y(I)), U(s, (pt(), Dv), new V(m, k)), U(s, Nj, new V(g, p)); + } + for (Dn(), Yt(n, new U3n()), _ = new tk(), Ur(_, (Ln(0, n.c.length), u(n.c[0], 96))), d = 0, Fn = 0, l = new C(n); l.a < l.c.c.length; ) + s = u(E(l), 121), X = mi(Ki(u(v(s, (pt(), Nj)), 8)), u(v(s, Dv), 8)), d = y.Math.max(d, X.a), Fn += X.a * X.b; + for (d = y.Math.max(d, y.Math.sqrt(Fn) * $(R(v(_, (lc(), jre))))), tn = $(R(v(_, fq))), Rn = 0, te = 0, a = 0, e = tn, f = new C(n); f.a < f.c.c.length; ) + s = u(E(f), 121), X = mi(Ki(u(v(s, (pt(), Nj)), 8)), u(v(s, Dv), 8)), Rn + X.a > d && (Rn = 0, te += a + tn, a = 0), aUn(_, s, Rn, te), e = y.Math.max(e, Rn + X.a), a = y.Math.max(a, X.b), Rn += X.a + tn; + for (N = new de(), t = new de(), kn = new C(n); kn.a < kn.c.c.length; ) + for (yn = u(E(kn), 121), i = on(un(v(yn, (He(), zj)))), O = yn.q ? yn.q : Wh, c = O.vc().Kc(); c.Ob(); ) + r = u(c.Pb(), 44), nu(N, r.ld()) ? x(u(r.ld(), 149).Sg()) !== x(r.md()) && (i && nu(t, r.ld()) ? (fl(), "" + u(r.ld(), 149).Pg()) : (Ve(N, u(r.ld(), 149), r.md()), U(_, u(r.ld(), 149), r.md()), i && Ve(t, u(r.ld(), 149), r.md()))) : (Ve(N, u(r.ld(), 149), r.md()), U(_, u(r.ld(), 149), r.md())); + return yKn(_), _; + } + function XA(n, e) { + switch (n.e) { + case 0: + case 2: + case 4: + case 6: + case 42: + case 44: + case 46: + case 48: + case 8: + case 10: + case 12: + case 14: + case 16: + case 18: + case 20: + case 22: + case 24: + case 26: + case 28: + case 30: + case 32: + case 34: + case 36: + case 38: + return new GIn(n.b, n.a, e, n.c); + case 1: + return new $C(n.a, e, Ot(e.Dh(), n.c)); + case 43: + return new FTn(n.a, e, Ot(e.Dh(), n.c)); + case 3: + return new ti(n.a, e, Ot(e.Dh(), n.c)); + case 45: + return new Au(n.a, e, Ot(e.Dh(), n.c)); + case 41: + return new Ou(u(gs(n.c), 29), n.a, e, Ot(e.Dh(), n.c)); + case 50: + return new cxn(u(gs(n.c), 29), n.a, e, Ot(e.Dh(), n.c)); + case 5: + return new EV(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 47: + return new JAn(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 7: + return new q(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 49: + return new jp(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 9: + return new xTn(n.a, e, Ot(e.Dh(), n.c)); + case 11: + return new $Tn(n.a, e, Ot(e.Dh(), n.c)); + case 13: + return new FX(n.a, e, Ot(e.Dh(), n.c)); + case 15: + return new QC(n.a, e, Ot(e.Dh(), n.c)); + case 17: + return new BTn(n.a, e, Ot(e.Dh(), n.c)); + case 19: + return new Eg(n.a, e, Ot(e.Dh(), n.c)); + case 21: + return new BX(n.a, e, Ot(e.Dh(), n.c)); + case 23: + return new F7(n.a, e, Ot(e.Dh(), n.c)); + case 25: + return new ZAn(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 27: + return new Nn(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 29: + return new YAn(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 31: + return new QAn(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 33: + return new MV(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 35: + return new CV(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 37: + return new NL(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 39: + return new bM(n.a, e, Ot(e.Dh(), n.c), n.d.n); + case 40: + return new qt(e, Ot(e.Dh(), n.c)); + default: + throw M(new ec("Unknown feature style: " + n.e)); + } + } + function Czn(n) { + var e, t, i, r, c, s, f, h; + for (c = 0, r = n.a.b, h = ge(n.a, 0); h.b != h.d.c; ) { + if (f = u(be(h), 240), s = (c + 1) / (r + 1), !n.c && !n.d) + return; + n.c && !n.d ? (n.g = !0, n.b == (ci(), Br) ? (i = n.c.e.b + n.c.f.b + n.e * (c + 1), e = new V($(R(v(n.c, (pt(), Js)))) + n.e, i), t = new V($(R(v(n.c, jf))) - n.e, i)) : n.b == Xr ? (i = n.c.e.b + n.c.f.b + n.e * (c + 1), e = new V($(R(v(n.c, (pt(), jf)))) - n.e, i), t = new V($(R(v(n.c, Js))) + n.e, i)) : n.b == us ? (i = n.c.e.a + n.c.f.a + n.e * (c + 1), e = new V(i, $(R(v(n.c, (pt(), Js)))) + n.e), t = new V(i, $(R(v(n.c, jf))) - n.e)) : (i = n.c.e.a + n.c.f.a + n.e * (c + 1), e = new V(i, $(R(v(n.c, (pt(), jf)))) - n.e), t = new V(i, $(R(v(n.c, Js))) + n.e))) : n.c && n.d ? n.b == (ci(), Br) ? (i = n.d.e.b * s + (n.c.e.b + n.c.f.b) * (1 - s), e = new V($(R(v(n.c, (pt(), Js)))) + n.e, i), t = new V($(R(v(n.c, jf))) - n.e, i)) : n.b == Xr ? (i = n.d.e.b * s + (n.c.e.b + n.c.f.b) * (1 - s), e = new V($(R(v(n.c, (pt(), jf)))) - n.e, i), t = new V($(R(v(n.c, Js))) + n.e, i)) : n.b == us ? (i = n.d.e.a * s + (n.c.e.a + n.c.f.a) * (1 - s), e = new V(i, $(R(v(n.c, (pt(), Js)))) + n.e), t = new V(i, $(R(v(n.c, jf))) - n.e)) : (i = n.d.e.a * s + (n.c.e.a + n.c.f.a) * (1 - s), e = new V(i, $(R(v(n.c, (pt(), jf)))) - n.e), t = new V(i, $(R(v(n.c, Js))) + n.e)) : (n.f = !0, n.b == (ci(), Br) ? (i = n.d.e.b - n.e * (c + 1), e = new V($(R(v(n.d, (pt(), Js)))) + n.e, i), t = new V($(R(v(n.d, jf))) - n.e, i)) : n.b == Xr ? (i = n.d.e.b - n.e * (c + 1), e = new V($(R(v(n.d, (pt(), jf)))) - n.e, i), t = new V($(R(v(n.d, Js))) + n.e, i)) : n.b == us ? (i = n.d.e.a - n.e * (c + 1), e = new V(i, $(R(v(n.d, (pt(), Js)))) + n.e), t = new V(i, $(R(v(n.d, jf))) - n.e)) : (i = n.d.e.a - n.e * (c + 1), e = new V(i, $(R(v(n.d, (pt(), jf)))) - n.e), t = new V(i, $(R(v(n.d, Js))) + n.e))), u(f.a, 8).a = e.a, u(f.a, 8).b = e.b, f.b.a = t.a, f.b.b = t.b, ++c; + } + } + function XLe(n, e, t, i, r, c) { + var s, f, h, l, a, d, g, p, m, k, j, S; + switch (e) { + case 71: + f = i.q.getFullYear() - ha >= -1900 ? 1 : 0, t >= 4 ? Re(n, A(T(fn, 1), J, 2, 6, [Rzn, Kzn])[f]) : Re(n, A(T(fn, 1), J, 2, 6, ["BC", "AD"])[f]); + break; + case 121: + h9e(n, t, i); + break; + case 77: + PSe(n, t, i); + break; + case 107: + h = r.q.getHours(), h == 0 ? Bh(n, 24, t) : Bh(n, h, t); + break; + case 83: + HMe(n, t, r); + break; + case 69: + a = i.q.getDay(), t == 5 ? Re(n, A(T(fn, 1), J, 2, 6, ["S", "M", "T", "W", "T", "F", "S"])[a]) : t == 4 ? Re(n, A(T(fn, 1), J, 2, 6, [vB, kB, yB, jB, EB, CB, MB])[a]) : Re(n, A(T(fn, 1), J, 2, 6, ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"])[a]); + break; + case 97: + r.q.getHours() >= 12 && r.q.getHours() < 24 ? Re(n, A(T(fn, 1), J, 2, 6, ["AM", "PM"])[1]) : Re(n, A(T(fn, 1), J, 2, 6, ["AM", "PM"])[0]); + break; + case 104: + d = r.q.getHours() % 12, d == 0 ? Bh(n, 12, t) : Bh(n, d, t); + break; + case 75: + g = r.q.getHours() % 12, Bh(n, g, t); + break; + case 72: + p = r.q.getHours(), Bh(n, p, t); + break; + case 99: + m = i.q.getDay(), t == 5 ? Re(n, A(T(fn, 1), J, 2, 6, ["S", "M", "T", "W", "T", "F", "S"])[m]) : t == 4 ? Re(n, A(T(fn, 1), J, 2, 6, [vB, kB, yB, jB, EB, CB, MB])[m]) : t == 3 ? Re(n, A(T(fn, 1), J, 2, 6, ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"])[m]) : Bh(n, m, 1); + break; + case 76: + k = i.q.getMonth(), t == 5 ? Re(n, A(T(fn, 1), J, 2, 6, ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"])[k]) : t == 4 ? Re(n, A(T(fn, 1), J, 2, 6, [sB, fB, hB, lB, c3, aB, dB, bB, wB, gB, pB, mB])[k]) : t == 3 ? Re(n, A(T(fn, 1), J, 2, 6, ["Jan", "Feb", "Mar", "Apr", c3, "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"])[k]) : Bh(n, k + 1, t); + break; + case 81: + j = i.q.getMonth() / 3 | 0, t < 4 ? Re(n, A(T(fn, 1), J, 2, 6, ["Q1", "Q2", "Q3", "Q4"])[j]) : Re(n, A(T(fn, 1), J, 2, 6, ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"])[j]); + break; + case 100: + S = i.q.getDate(), Bh(n, S, t); + break; + case 109: + l = r.q.getMinutes(), Bh(n, l, t); + break; + case 115: + s = r.q.getSeconds(), Bh(n, s, t); + break; + case 122: + t < 4 ? Re(n, c.c[0]) : Re(n, c.c[1]); + break; + case 118: + Re(n, c.b); + break; + case 90: + t < 3 ? Re(n, $Ee(c)) : t == 3 ? Re(n, KEe(c)) : Re(n, _Ee(c.a)); + break; + default: + return !1; + } + return !0; + } + function ltn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe; + if (eUn(e), h = u(L((!e.b && (e.b = new Nn(he, e, 4, 7)), e.b), 0), 84), a = u(L((!e.c && (e.c = new Nn(he, e, 5, 8)), e.c), 0), 84), f = Gr(h), l = Gr(a), s = (!e.a && (e.a = new q(Mt, e, 6, 6)), e.a).i == 0 ? null : u(L((!e.a && (e.a = new q(Mt, e, 6, 6)), e.a), 0), 166), tn = u(ee(n.a, f), 10), Rn = u(ee(n.a, l), 10), yn = null, te = null, D(h, 193) && (X = u(ee(n.a, h), 305), D(X, 12) ? yn = u(X, 12) : D(X, 10) && (tn = u(X, 10), yn = u(sn(tn.j, 0), 12))), D(a, 193) && (Fn = u(ee(n.a, a), 305), D(Fn, 12) ? te = u(Fn, 12) : D(Fn, 10) && (Rn = u(Fn, 10), te = u(sn(Rn.j, 0), 12))), !tn || !Rn) + throw M(new hp("The source or the target of edge " + e + " could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN.")); + for (k = new E0(), Ur(k, e), U(k, (W(), st), e), U(k, (cn(), Fr), null), p = u(v(i, qc), 21), tn == Rn && p.Fc((mr(), B8)), yn || (_ = (pr(), Qc), kn = null, s && mg(u(v(tn, Ut), 101)) && (kn = new V(s.j, s.k), GDn(kn, V7(e)), vLn(kn, t), Yb(l, f) && (_ = Vu, it(kn, tn.n))), yn = tGn(tn, kn, _, i)), te || (_ = (pr(), Vu), xe = null, s && mg(u(v(Rn, Ut), 101)) && (xe = new V(s.b, s.c), GDn(xe, V7(e)), vLn(xe, t)), te = tGn(Rn, xe, _, Hi(Rn))), Zi(k, yn), Oi(k, te), (yn.e.c.length > 1 || yn.g.c.length > 1 || te.e.c.length > 1 || te.g.c.length > 1) && p.Fc((mr(), F8)), g = new ne((!e.n && (e.n = new q(Sr, e, 1, 7)), e.n)); g.e != g.i.gc(); ) + if (d = u(ue(g), 135), !on(un(z(d, Fd))) && d.a) + switch (j = ex(d), nn(k.b, j), u(v(j, Ah), 278).g) { + case 1: + case 2: + p.Fc((mr(), kv)); + break; + case 0: + p.Fc((mr(), vv)), U(j, Ah, ($f(), Fv)); + } + if (c = u(v(i, U8), 322), S = u(v(i, vI), 323), r = c == (c5(), pj) || S == (M5(), KH), s && (!s.a && (s.a = new ti(xo, s, 5)), s.a).i != 0 && r) { + for (I = Qk(s), m = new Tu(), N = ge(I, 0); N.b != N.d.c; ) + O = u(be(N), 8), Fe(m, new rr(O)); + U(k, cfn, m); + } + return k; + } + function VLe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt; + for (kn = 0, Fn = 0, tn = new de(), _ = u(ho(_b(_r(new Tn(null, new In(n.b, 16)), new C4n()), new D4n())), 17).a + 1, yn = K(ye, _e, 28, _, 15, 1), j = K(ye, _e, 28, _, 15, 1), k = 0; k < _; k++) + yn[k] = 0, j[k] = 0; + for (h = u(Wr(oJ(new Tn(null, new In(n.a, 16))), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), a = h.Kc(); a.Ob(); ) + if (l = u(a.Pb(), 65), te = u(v(l.b, (lc(), Sh)), 17).a, Lt = u(v(l.c, Sh), 17).a, N = Lt - te, N > 1) + for (f = te + 1; f < Lt; f++) { + if (d = f, X = u(Wr(ut(new Tn(null, new In(n.b, 16)), new jkn(d)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [Yr]))), 15), m = 0, e == (ci(), Br) || e == Xr) { + for (X.jd(new I4n()), m = 0; m < X.gc() && (S = (f - te) / (Lt - te), !(u(X.Xb(m), 40).e.b > l.b.e.b * (1 - S) + l.c.e.b * S)); m++) + ; + if (X.gc() > 0 && (xe = l.a.b == 0 ? Ki(l.b.e) : u($s(l.a), 8), O = it(Ki(u(X.Xb(X.gc() - 1), 40).e), u(X.Xb(X.gc() - 1), 40).f), g = it(Ki(u(X.Xb(0), 40).e), u(X.Xb(0), 40).f), m >= X.gc() - 1 && xe.b > O.b && l.c.e.b > O.b || m <= 0 && xe.b < g.a && l.c.e.b < g.b)) + continue; + } else { + for (X.jd(new O4n()), m = 0; m < X.gc() && (S = (f - te) / (Lt - te), !(u(X.Xb(m), 40).e.a > l.b.e.a * (1 - S) + l.c.e.a * S)); m++) + ; + if (X.gc() > 0 && (xe = l.a.b == 0 ? Ki(l.b.e) : u($s(l.a), 8), O = it(Ki(u(X.Xb(X.gc() - 1), 40).e), u(X.Xb(X.gc() - 1), 40).f), g = it(Ki(u(X.Xb(0), 40).e), u(X.Xb(0), 40).f), m >= X.gc() - 1 && xe.a > O.a && l.c.e.a > O.a || m <= 0 && xe.a < g.a && l.c.e.a < g.a)) + continue; + } + r = new Li(), c = new Li(), Fe(l.a, r), Fe(l.a, c), s = new _L(r, c, l), I = lf(Bs(f, 32), vi(m, vr)), nu(tn, Ml(I)) ? (p = u(ee(tn, Ml(I)), 675), Fe(p.a, s), hl(p.b) ? ud(p.a, new B4n()) : ud(p.a, new R4n()), Czn(p)) : (p = new BRn(m == 0 ? null : u(X.Xb(m - 1), 40), m == X.gc() ? null : u(X.Xb(m), 40), s, n), Ve(tn, Ml(I), p)), e == Br || e == Xr ? (p.f && p.d.e.b <= $(R(v(n, (pt(), cq)))) && ++kn, p.g && p.c.e.b + p.c.f.b >= $(R(v(n, (pt(), yln)))) && ++Fn) : (p.f && p.d.e.a <= $(R(v(n, (pt(), rq)))) && ++kn, p.g && p.c.e.a + p.c.f.a >= $(R(v(n, (pt(), kln)))) && ++Fn); + } + else + N == 0 ? Lnn(l) : N < 0 && (++yn[te], ++j[Lt], Rn = qLe(l, e, n, new bi(Y(kn), Y(Fn)), t, i, new bi(Y(j[Lt]), Y(yn[te]))), kn = u(Rn.a, 17).a, Fn = u(Rn.b, 17).a); + } + function WLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + if (i = e, h = t, n.b && i.j == (en(), Wn) && h.j == (en(), Wn) && (I = i, i = h, h = I), nu(n.a, i)) { + if (sf(u(ee(n.a, i), 49), h)) + return 1; + } else + Ve(n.a, i, new ni()); + if (nu(n.a, h)) { + if (sf(u(ee(n.a, h), 49), i)) + return -1; + } else + Ve(n.a, h, new ni()); + if (nu(n.d, i)) { + if (sf(u(ee(n.d, i), 49), h)) + return -1; + } else + Ve(n.d, i, new ni()); + if (nu(n.d, h)) { + if (sf(u(ee(n.a, h), 49), i)) + return 1; + } else + Ve(n.d, h, new ni()); + if (i.j != h.j) + return S = Fle(i.j, h.j), S == -1 ? ns(n, h, i) : ns(n, i, h), S; + if (i.e.c.length != 0 && h.e.c.length != 0) { + if (n.b && (S = KFn(i, h), S != 0)) + return S == -1 ? ns(n, h, i) : S == 1 && ns(n, i, h), S; + if (c = u(sn(i.e, 0), 18).c.i, a = u(sn(h.e, 0), 18).c.i, c == a) + return r = u(v(u(sn(i.e, 0), 18), (W(), dt)), 17).a, l = u(v(u(sn(h.e, 0), 18), dt), 17).a, r > l ? ns(n, i, h) : ns(n, h, i), r < l ? -1 : r > l ? 1 : 0; + for (m = n.c, k = 0, j = m.length; k < j; ++k) { + if (p = m[k], p == c) + return ns(n, i, h), 1; + if (p == a) + return ns(n, h, i), -1; + } + } + return i.g.c.length != 0 && h.g.c.length != 0 ? (f = u(v(i, (W(), dH)), 10), g = u(v(h, dH), 10), n.e == (lh(), qH) && f && g && kt(f, dt) && kt(g, dt) ? (r = u(v(f, dt), 17).a, l = u(v(g, dt), 17).a, r > l ? ns(n, i, h) : ns(n, h, i), r < l ? -1 : r > l ? 1 : 0) : n.b && (S = KFn(i, h), S != 0) ? (S == -1 ? ns(n, h, i) : S == 1 && ns(n, i, h), S) : (s = 0, d = 0, kt(u(sn(i.g, 0), 18), dt) && (s = u(v(u(sn(i.g, 0), 18), dt), 17).a), kt(u(sn(h.g, 0), 18), dt) && (d = u(v(u(sn(i.g, 0), 18), dt), 17).a), f && f == g ? on(un(v(u(sn(i.g, 0), 18), zf))) && !on(un(v(u(sn(h.g, 0), 18), zf))) ? (ns(n, i, h), 1) : !on(un(v(u(sn(i.g, 0), 18), zf))) && on(un(v(u(sn(h.g, 0), 18), zf))) ? (ns(n, h, i), -1) : (s > d ? ns(n, i, h) : ns(n, h, i), s < d ? -1 : s > d ? 1 : 0) : (n.f && (n.f._b(f) && (s = u(n.f.xc(f), 17).a), n.f._b(g) && (d = u(n.f.xc(g), 17).a)), s > d ? ns(n, i, h) : ns(n, h, i), s < d ? -1 : s > d ? 1 : 0))) : i.e.c.length != 0 && h.g.c.length != 0 ? (ns(n, i, h), 1) : i.g.c.length != 0 && h.e.c.length != 0 ? (ns(n, h, i), -1) : kt(i, (W(), dt)) && kt(h, dt) ? (r = u(v(i, dt), 17).a, l = u(v(h, dt), 17).a, r > l ? ns(n, i, h) : ns(n, h, i), r < l ? -1 : r > l ? 1 : 0) : (ns(n, h, i), -1); + } + function JLe(n) { + n.gb || (n.gb = !0, n.b = hc(n, 0), _t(n.b, 18), jt(n.b, 19), n.a = hc(n, 1), _t(n.a, 1), jt(n.a, 2), jt(n.a, 3), jt(n.a, 4), jt(n.a, 5), n.o = hc(n, 2), _t(n.o, 8), _t(n.o, 9), jt(n.o, 10), jt(n.o, 11), jt(n.o, 12), jt(n.o, 13), jt(n.o, 14), jt(n.o, 15), jt(n.o, 16), jt(n.o, 17), jt(n.o, 18), jt(n.o, 19), jt(n.o, 20), jt(n.o, 21), jt(n.o, 22), jt(n.o, 23), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), Nr(n.o), n.p = hc(n, 3), _t(n.p, 2), _t(n.p, 3), _t(n.p, 4), _t(n.p, 5), jt(n.p, 6), jt(n.p, 7), Nr(n.p), Nr(n.p), n.q = hc(n, 4), _t(n.q, 8), n.v = hc(n, 5), jt(n.v, 9), Nr(n.v), Nr(n.v), Nr(n.v), n.w = hc(n, 6), _t(n.w, 2), _t(n.w, 3), _t(n.w, 4), jt(n.w, 5), n.B = hc(n, 7), jt(n.B, 1), Nr(n.B), Nr(n.B), Nr(n.B), n.Q = hc(n, 8), jt(n.Q, 0), Nr(n.Q), n.R = hc(n, 9), _t(n.R, 1), n.S = hc(n, 10), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), Nr(n.S), n.T = hc(n, 11), jt(n.T, 10), jt(n.T, 11), jt(n.T, 12), jt(n.T, 13), jt(n.T, 14), Nr(n.T), Nr(n.T), n.U = hc(n, 12), _t(n.U, 2), _t(n.U, 3), jt(n.U, 4), jt(n.U, 5), jt(n.U, 6), jt(n.U, 7), Nr(n.U), n.V = hc(n, 13), jt(n.V, 10), n.W = hc(n, 14), _t(n.W, 18), _t(n.W, 19), _t(n.W, 20), jt(n.W, 21), jt(n.W, 22), jt(n.W, 23), n.bb = hc(n, 15), _t(n.bb, 10), _t(n.bb, 11), _t(n.bb, 12), _t(n.bb, 13), _t(n.bb, 14), _t(n.bb, 15), _t(n.bb, 16), jt(n.bb, 17), Nr(n.bb), Nr(n.bb), n.eb = hc(n, 16), _t(n.eb, 2), _t(n.eb, 3), _t(n.eb, 4), _t(n.eb, 5), _t(n.eb, 6), _t(n.eb, 7), jt(n.eb, 8), jt(n.eb, 9), n.ab = hc(n, 17), _t(n.ab, 0), _t(n.ab, 1), n.H = hc(n, 18), jt(n.H, 0), jt(n.H, 1), jt(n.H, 2), jt(n.H, 3), jt(n.H, 4), jt(n.H, 5), Nr(n.H), n.db = hc(n, 19), jt(n.db, 2), n.c = Je(n, 20), n.d = Je(n, 21), n.e = Je(n, 22), n.f = Je(n, 23), n.i = Je(n, 24), n.g = Je(n, 25), n.j = Je(n, 26), n.k = Je(n, 27), n.n = Je(n, 28), n.r = Je(n, 29), n.s = Je(n, 30), n.t = Je(n, 31), n.u = Je(n, 32), n.fb = Je(n, 33), n.A = Je(n, 34), n.C = Je(n, 35), n.D = Je(n, 36), n.F = Je(n, 37), n.G = Je(n, 38), n.I = Je(n, 39), n.J = Je(n, 40), n.L = Je(n, 41), n.M = Je(n, 42), n.N = Je(n, 43), n.O = Je(n, 44), n.P = Je(n, 45), n.X = Je(n, 46), n.Y = Je(n, 47), n.Z = Je(n, 48), n.$ = Je(n, 49), n._ = Je(n, 50), n.cb = Je(n, 51), n.K = Je(n, 52)); + } + function QLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te; + for (s = new Ct(), X = u(v(t, (cn(), Do)), 88), k = 0, Bi(s, (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); s.b != 0; ) + a = u(s.b == 0 ? null : (oe(s.b != 0), Xo(s, s.a.a)), 27), l = At(a), (x(z(l, Yh)) !== x((lh(), k1)) || x(z(l, Ld)) === x((o1(), pv)) || x(z(l, Ld)) === x((o1(), gv)) || on(un(z(l, lb))) || x(z(l, Fw)) !== x((dd(), Ow)) || x(z(l, ja)) === x((ps(), pb)) || x(z(l, ja)) === x((ps(), Uw)) || x(z(l, $d)) === x((a1(), Pv)) || x(z(l, $d)) === x((a1(), Iv))) && !on(un(z(a, lI))) && ht(a, (W(), dt), Y(k++)), S = !on(un(z(a, Fd))), S && (g = (!a.a && (a.a = new q(Ye, a, 10, 11)), a.a).i != 0, m = Tye(a), p = x(z(a, Bw)) === x((jl(), M1)), te = !Lf(a, (He(), $v)) || ALn(Oe(z(a, $v))), N = null, te && p && (g || m) && (N = xUn(a), U(N, Do, X), kt(N, Mj) && Fjn(new VY($(R(v(N, Mj)))), N), u(z(a, xd), 181).gc() != 0 && (d = N, Gt(new Tn(null, (!a.c && (a.c = new q(Qu, a, 9, 9)), new In(a.c, 16))), new U9n(d)), Sqn(a, N))), tn = t, yn = u(ee(n.a, At(a)), 10), yn && (tn = yn.e), O = fzn(n, a, tn), N && (O.e = N, N.e = O, Bi(s, (!a.a && (a.a = new q(Ye, a, 10, 11)), a.a)))); + for (k = 0, Kt(s, e, s.c.b, s.c); s.b != 0; ) { + for (c = u(s.b == 0 ? null : (oe(s.b != 0), Xo(s, s.a.a)), 27), h = new ne((!c.b && (c.b = new q(Wt, c, 12, 3)), c.b)); h.e != h.i.gc(); ) + f = u(ue(h), 74), eUn(f), (x(z(e, Yh)) !== x((lh(), k1)) || x(z(e, Ld)) === x((o1(), pv)) || x(z(e, Ld)) === x((o1(), gv)) || on(un(z(e, lb))) || x(z(e, Fw)) !== x((dd(), Ow)) || x(z(e, ja)) === x((ps(), pb)) || x(z(e, ja)) === x((ps(), Uw)) || x(z(e, $d)) === x((a1(), Pv)) || x(z(e, $d)) === x((a1(), Iv))) && ht(f, (W(), dt), Y(k++)), Fn = Gr(u(L((!f.b && (f.b = new Nn(he, f, 4, 7)), f.b), 0), 84)), Rn = Gr(u(L((!f.c && (f.c = new Nn(he, f, 5, 8)), f.c), 0), 84)), !(on(un(z(f, Fd))) || on(un(z(Fn, Fd))) || on(un(z(Rn, Fd)))) && (j = _0(f) && on(un(z(Fn, Rw))) && on(un(z(f, Nd))), _ = c, j || Yb(Rn, Fn) ? _ = Fn : Yb(Fn, Rn) && (_ = Rn), tn = t, yn = u(ee(n.a, _), 10), yn && (tn = yn.e), I = ltn(n, f, _, tn), U(I, (W(), efn), QTe(n, f, e, t))); + if (p = x(z(c, Bw)) === x((jl(), M1)), p) + for (r = new ne((!c.a && (c.a = new q(Ye, c, 10, 11)), c.a)); r.e != r.i.gc(); ) + i = u(ue(r), 27), te = !Lf(i, (He(), $v)) || ALn(Oe(z(i, $v))), kn = x(z(i, Bw)) === x(M1), te && kn && Kt(s, i, s.c.b, s.c); + } + } + function W() { + W = F; + var n, e; + st = new lt(Qtn), efn = new lt("coordinateOrigin"), wH = new lt("processors"), nfn = new Dt("compoundNode", (_n(), !1)), yj = new Dt("insideConnections", !1), cfn = new lt("originalBendpoints"), ufn = new lt("originalDummyNodePosition"), ofn = new lt("originalLabelEdge"), K8 = new lt("representedLabels"), R8 = new lt("endLabels"), M3 = new lt("endLabel.origin"), A3 = new Dt("labelSide", (To(), nE)), y2 = new Dt("maxEdgeThickness", 0), zf = new Dt("reversed", !1), S3 = new lt(TXn), yf = new Dt("longEdgeSource", null), Es = new Dt("longEdgeTarget", null), $w = new Dt("longEdgeHasLabelDummies", !1), jj = new Dt("longEdgeBeforeLabelDummy", !1), rI = new Dt("edgeConstraint", (hd(), Y_)), sb = new lt("inLayerLayoutUnit"), Od = new Dt("inLayerConstraint", (vl(), vj)), T3 = new Dt("inLayerSuccessorConstraint", new Z()), rfn = new Dt("inLayerSuccessorConstraintBetweenNonDummies", !1), Xu = new lt("portDummy"), iI = new Dt("crossingHint", Y(0)), qc = new Dt("graphProperties", (e = u(of(cH), 9), new _o(e, u(xs(e, e.length), 9), 0))), gc = new Dt("externalPortSide", (en(), sc)), ifn = new Dt("externalPortSize", new Li()), hH = new lt("externalPortReplacedDummies"), cI = new lt("externalPortReplacedDummy"), Nl = new Dt("externalPortConnections", (n = u(of(lr), 9), new _o(n, u(xs(n, n.length), 9), 0))), fb = new Dt(pXn, 0), Zsn = new lt("barycenterAssociates"), P3 = new lt("TopSideComments"), C3 = new lt("BottomSideComments"), tI = new lt("CommentConnectionPort"), aH = new Dt("inputCollect", !1), bH = new Dt("outputCollect", !1), kj = new Dt("cyclic", !1), tfn = new lt("crossHierarchyMap"), pH = new lt("targetOffset"), new Dt("splineLabelSize", new Li()), E2 = new lt("spacings"), uI = new Dt("partitionConstraint", !1), ob = new lt("breakingPoint.info"), hfn = new lt("splines.survivingEdge"), Dd = new lt("splines.route.start"), C2 = new lt("splines.edgeChain"), ffn = new lt("originalPortConstraints"), hb = new lt("selfLoopHolder"), jv = new lt("splines.nsPortY"), dt = new lt("modelOrder"), dH = new lt("longEdgeTargetNode"), ka = new Dt(YXn, !1), j2 = new Dt(YXn, !1), lH = new lt("layerConstraints.hiddenNodes"), sfn = new lt("layerConstraints.opposidePort"), gH = new lt("targetNode.modelOrder"); + } + function YLe(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + for (d = ge(n.b, 0); d.b != d.d.c; ) + if (a = u(be(d), 40), !An(a.c, IS)) + for (c = u(Wr(new Tn(null, new In(oCe(a, n), 16)), qu(new Eu(), new ju(), new Cu(), A(T(xr, 1), G, 108, 0, [(Gu(), Yr)]))), 15), e == (ci(), Br) || e == Xr ? c.jd(new S4n()) : c.jd(new P4n()), m = c.gc(), r = 0; r < m; r++) + s = m == 1 ? 0.5 : (1 + r) / (m + 1), e == Br ? (l = $(R(v(a, (pt(), Js)))), a.e.a + a.f.a + i < l ? ir(u(c.Xb(r), 65).a, new V(l + t, a.e.b + a.f.b * s)) : u(c.Xb(r), 65).a.b > 0 && (f = u($s(u(c.Xb(r), 65).a), 8).a, g = a.e.a + a.f.a / 2, h = u($s(u(c.Xb(r), 65).a), 8).b, p = a.e.b + a.f.b / 2, i > 0 && y.Math.abs(h - p) / (y.Math.abs(f - g) / 40) > 50 && (p > h ? ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a + i / 5.3, a.e.b + a.f.b * s - i / 2)) : ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a + i / 5.3, a.e.b + a.f.b * s + i / 2)))), ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a, a.e.b + a.f.b * s))) : e == Xr ? (l = $(R(v(a, (pt(), jf)))), a.e.a - i > l ? ir(u(c.Xb(r), 65).a, new V(l - t, a.e.b + a.f.b * s)) : u(c.Xb(r), 65).a.b > 0 && (f = u($s(u(c.Xb(r), 65).a), 8).a, g = a.e.a + a.f.a / 2, h = u($s(u(c.Xb(r), 65).a), 8).b, p = a.e.b + a.f.b / 2, i > 0 && y.Math.abs(h - p) / (y.Math.abs(f - g) / 40) > 50 && (p > h ? ir(u(c.Xb(r), 65).a, new V(a.e.a - i / 5.3, a.e.b + a.f.b * s - i / 2)) : ir(u(c.Xb(r), 65).a, new V(a.e.a - i / 5.3, a.e.b + a.f.b * s + i / 2)))), ir(u(c.Xb(r), 65).a, new V(a.e.a, a.e.b + a.f.b * s))) : e == us ? (l = $(R(v(a, (pt(), Js)))), a.e.b + a.f.b + i < l ? ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s, l + t)) : u(c.Xb(r), 65).a.b > 0 && (f = u($s(u(c.Xb(r), 65).a), 8).a, g = a.e.a + a.f.a / 2, h = u($s(u(c.Xb(r), 65).a), 8).b, p = a.e.b + a.f.b / 2, i > 0 && y.Math.abs(f - g) / (y.Math.abs(h - p) / 40) > 50 && (g > f ? ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s - i / 2, a.e.b + i / 5.3 + a.f.b)) : ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s + i / 2, a.e.b + i / 5.3 + a.f.b)))), ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s, a.e.b + a.f.b))) : (l = $(R(v(a, (pt(), jf)))), TFn(u(c.Xb(r), 65), n) ? ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s, u($s(u(c.Xb(r), 65).a), 8).b)) : a.e.b - i > l ? ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s, l - t)) : u(c.Xb(r), 65).a.b > 0 && (f = u($s(u(c.Xb(r), 65).a), 8).a, g = a.e.a + a.f.a / 2, h = u($s(u(c.Xb(r), 65).a), 8).b, p = a.e.b + a.f.b / 2, i > 0 && y.Math.abs(f - g) / (y.Math.abs(h - p) / 40) > 50 && (g > f ? ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s - i / 2, a.e.b - i / 5.3)) : ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s + i / 2, a.e.b - i / 5.3)))), ir(u(c.Xb(r), 65).a, new V(a.e.a + a.f.a * s, a.e.b))); + } + function He() { + He = F; + var n, e; + $v = new lt(FVn), q2 = new lt(BVn), pan = (Rh(), Vq), Pue = new Mn(crn, pan), x2 = new Mn(l3, null), Iue = new lt(mcn), van = (wd(), yt(Qq, A(T(Yq, 1), G, 298, 0, [Jq]))), Gj = new Mn(MS, van), zj = new Mn(Uy, (_n(), !1)), kan = (ci(), Jf), _d = new Mn(xR, kan), Ean = (El(), lU), jan = new Mn(qy, Ean), Lue = new Mn(gcn, !1), Tan = (jl(), uO), R2 = new Mn(CS, Tan), $an = new f0(12), C1 = new Mn(W0, $an), Vj = new Mn(i8, !1), tU = new Mn(AS, !1), Wj = new Mn(r8, !1), Kan = (Di(), Pa), v9 = new Mn(tR, Kan), N3 = new lt(TS), Jj = new lt(Ny), fU = new lt(uS), hU = new lt(t8), Aan = new Tu(), kb = new Mn(grn, Aan), Due = new Mn(vrn, !1), Nue = new Mn(krn, !1), San = new Qv(), xv = new Mn(jrn, San), tO = new Mn(irn, !1), Bue = new Mn(RVn, 1), B2 = new lt(KVn), F2 = new lt(_Vn), k9 = new Mn($y, !1), new Mn(HVn, !0), Y(0), new Mn(qVn, Y(100)), new Mn(UVn, !1), Y(0), new Mn(GVn, Y(4e3)), Y(0), new Mn(zVn, Y(400)), new Mn(XVn, !1), new Mn(VVn, !1), new Mn(WVn, !0), new Mn(JVn, !1), man = (qT(), wU), Oue = new Mn(pcn, man), Rue = new Mn(zin, 10), Kue = new Mn(Xin, 10), Uan = new Mn(WB, 20), _ue = new Mn(Vin, 10), Gan = new Mn(eR, 2), zan = new Mn($R, 10), Xan = new Mn(Win, 0), iO = new Mn(Yin, 5), Van = new Mn(Jin, 1), Wan = new Mn(Qin, 1), qd = new Mn(yw, 20), Hue = new Mn(Zin, 10), Yan = new Mn(nrn, 10), $3 = new lt(ern), Qan = new iTn(), Jan = new Mn(Ern, Qan), xue = new lt(BR), xan = !1, $ue = new Mn(FR, xan), Ian = new f0(5), Pan = new Mn(srn, Ian), Oan = (lw(), e = u(of(jr), 9), new _o(e, u(xs(e, e.length), 9), 0)), K2 = new Mn(Xm, Oan), Ban = (Bg(), Sa), Fan = new Mn(lrn, Ban), rU = new lt(arn), cU = new lt(drn), uU = new lt(brn), iU = new lt(wrn), Dan = (n = u(of(S9), 9), new _o(n, u(xs(n, n.length), 9), 0)), Hd = new Mn(r2, Dan), Nan = jn((io(), _v)), Ta = new Mn(a3, Nan), Lan = new V(0, 0), _2 = new Mn(d3, Lan), Vw = new Mn(zm, !1), yan = ($f(), Fv), nU = new Mn(prn, yan), Zq = new Mn(oS, !1), Y(1), new Mn(QVn, null), Ran = new lt(yrn), oU = new lt(mrn), qan = (en(), sc), H2 = new Mn(rrn, qan), oo = new lt(trn), _an = (zu(), jn(Ia)), Ww = new Mn(Vm, _an), sU = new Mn(frn, !1), Han = new Mn(hrn, !0), cO = new Mn(xy, 1), Zan = new Mn(vcn, null), Qj = new Mn(Fy, 150), rO = new Mn(By, 1.414), x3 = new Mn(J0, null), que = new Mn(kcn, 1), Xj = new Mn(urn, !1), eU = new Mn(orn, !1), Can = new Mn(JB, 1), Man = (pA(), dU), new Mn(YVn, Man), Fue = !0, Gue = (Gp(), Yw), zue = Yw, Uue = Yw; + } + function tr() { + tr = F, Yon = new ei("DIRECTION_PREPROCESSOR", 0), Won = new ei("COMMENT_PREPROCESSOR", 1), b2 = new ei("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER", 2), N_ = new ei("INTERACTIVE_EXTERNAL_PORT_POSITIONER", 3), psn = new ei("PARTITION_PREPROCESSOR", 4), IP = new ei("LABEL_DUMMY_INSERTER", 5), KP = new ei("SELF_LOOP_PREPROCESSOR", 6), Lw = new ei("LAYER_CONSTRAINT_PREPROCESSOR", 7), wsn = new ei("PARTITION_MIDPROCESSOR", 8), usn = new ei("HIGH_DEGREE_NODE_LAYER_PROCESSOR", 9), dsn = new ei("NODE_PROMOTION", 10), Dw = new ei("LAYER_CONSTRAINT_POSTPROCESSOR", 11), gsn = new ei("PARTITION_POSTPROCESSOR", 12), isn = new ei("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR", 13), msn = new ei("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR", 14), qon = new ei("BREAKING_POINT_INSERTER", 15), NP = new ei("LONG_EDGE_SPLITTER", 16), $_ = new ei("PORT_SIDE_PROCESSOR", 17), SP = new ei("INVERTED_PORT_PROCESSOR", 18), FP = new ei("PORT_LIST_SORTER", 19), ksn = new ei("SORT_BY_INPUT_ORDER_OF_MODEL", 20), xP = new ei("NORTH_SOUTH_PORT_PREPROCESSOR", 21), Uon = new ei("BREAKING_POINT_PROCESSOR", 22), bsn = new ei(UXn, 23), ysn = new ei(GXn, 24), BP = new ei("SELF_LOOP_PORT_RESTORER", 25), vsn = new ei("SINGLE_EDGE_GRAPH_WRAPPER", 26), PP = new ei("IN_LAYER_CONSTRAINT_PROCESSOR", 27), nsn = new ei("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR", 28), lsn = new ei("LABEL_AND_NODE_SIZE_PROCESSOR", 29), hsn = new ei("INNERMOST_NODE_MARGIN_CALCULATOR", 30), _P = new ei("SELF_LOOP_ROUTER", 31), Xon = new ei("COMMENT_NODE_MARGIN_CALCULATOR", 32), AP = new ei("END_LABEL_PREPROCESSOR", 33), DP = new ei("LABEL_DUMMY_SWITCHER", 34), zon = new ei("CENTER_LABEL_MANAGEMENT_PROCESSOR", 35), hv = new ei("LABEL_SIDE_SELECTOR", 36), ssn = new ei("HYPEREDGE_DUMMY_MERGER", 37), rsn = new ei("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR", 38), asn = new ei("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR", 39), L8 = new ei("HIERARCHICAL_PORT_POSITION_PROCESSOR", 40), Jon = new ei("CONSTRAINTS_POSTPROCESSOR", 41), Von = new ei("COMMENT_POSTPROCESSOR", 42), fsn = new ei("HYPERNODE_PROCESSOR", 43), csn = new ei("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER", 44), LP = new ei("LONG_EDGE_JOINER", 45), RP = new ei("SELF_LOOP_POSTPROCESSOR", 46), Gon = new ei("BREAKING_POINT_REMOVER", 47), $P = new ei("NORTH_SOUTH_PORT_POSTPROCESSOR", 48), osn = new ei("HORIZONTAL_COMPACTOR", 49), OP = new ei("LABEL_DUMMY_REMOVER", 50), esn = new ei("FINAL_SPLINE_BENDPOINTS_CALCULATOR", 51), Zon = new ei("END_LABEL_SORTER", 52), bj = new ei("REVERSED_EDGE_RESTORER", 53), TP = new ei("END_LABEL_POSTPROCESSOR", 54), tsn = new ei("HIERARCHICAL_NODE_RESIZER", 55), Qon = new ei("DIRECTION_POSTPROCESSOR", 56); + } + function atn() { + atn = F, yfn = (wk(), WP), ree = new Mn(oin, yfn), gee = new Mn(sin, (_n(), !1)), Afn = (KM(), fH), yee = new Mn(lS, Afn), xee = new Mn(fin, !1), Fee = new Mn(hin, !0), Ine = new Mn(lin, !1), $fn = (dk(), UH), Yee = new Mn(ain, $fn), Y(1), ute = new Mn(din, Y(7)), ote = new Mn(bin, !1), pee = new Mn(win, !1), kfn = (o1(), J_), iee = new Mn(fR, kfn), Ifn = (a1(), xH), $ee = new Mn(Hy, Ifn), Sfn = (Yo(), Ej), Aee = new Mn(gin, Sfn), Y(-1), Tee = new Mn(pin, null), Y(-1), See = new Mn(min, Y(-1)), Y(-1), Pee = new Mn(hR, Y(4)), Y(-1), Oee = new Mn(lR, Y(2)), Pfn = (ps(), AI), Nee = new Mn(aR, Pfn), Y(0), Lee = new Mn(dR, Y(0)), Cee = new Mn(bR, Y(tt)), vfn = (c5(), $8), tee = new Mn(o8, vfn), _ne = new Mn(vin, !1), Vne = new Mn(wR, 0.1), nee = new Mn(gR, !1), Jne = new Mn(kin, null), Qne = new Mn(yin, null), Y(-1), Yne = new Mn(jin, null), Y(-1), Zne = new Mn(Ein, Y(-1)), Y(0), Hne = new Mn(Cin, Y(40)), mfn = (Z4(), oH), zne = new Mn(pR, mfn), pfn = mj, qne = new Mn(aS, pfn), Nfn = (M5(), W8), Qee = new Mn(c2, Nfn), Hee = new lt(dS), Ofn = (sk(), QP), Bee = new Mn(mR, Ofn), Dfn = (Vk(), YP), Kee = new Mn(vR, Dfn), Gee = new Mn(kR, 0.3), Xee = new lt(yR), Lfn = (cw(), TI), Vee = new Mn(jR, Lfn), Cfn = (ST(), zH), fee = new Mn(Min, Cfn), Mfn = (a5(), VH), hee = new Mn(Tin, Mfn), Tfn = (om(), Y8), lee = new Mn(bS, Tfn), dee = new Mn(wS, 0.2), oee = new Mn(ER, 2), tte = new Mn(Ain, null), rte = new Mn(Sin, 10), ite = new Mn(Pin, 10), cte = new Mn(Iin, 20), Y(0), Zee = new Mn(Oin, Y(0)), Y(0), nte = new Mn(Din, Y(0)), Y(0), ete = new Mn(Lin, Y(0)), One = new Mn(CR, !1), dfn = (jm(), x8), Lne = new Mn(Nin, dfn), afn = (QM(), V_), Dne = new Mn($in, afn), vee = new Mn(gS, !1), Y(0), mee = new Mn(MR, Y(16)), Y(0), kee = new Mn(TR, Y(5)), Bfn = (DT(), QH), Ate = new Mn(Ol, Bfn), ste = new Mn(pS, 10), lte = new Mn(mS, 1), Ffn = (bT(), VP), mte = new Mn(s8, Ffn), bte = new lt(AR), xfn = Y(1), Y(0), gte = new Mn(SR, xfn), Rfn = (dT(), JH), Ote = new Mn(vS, Rfn), Ste = new lt(kS), Ete = new Mn(yS, !0), yte = new Mn(jS, 2), Mte = new Mn(PR, !0), Efn = (vA(), JP), uee = new Mn(xin, Efn), jfn = (Yp(), bv), cee = new Mn(Fin, jfn), gfn = (lh(), k1), Kne = new Mn(ES, gfn), Rne = new Mn(Bin, !1), Bne = new Mn(Rin, !1), bfn = (dd(), Ow), Nne = new Mn(IR, bfn), wfn = (w5(), FH), Fne = new Mn(Kin, wfn), $ne = new Mn(OR, 0), xne = new Mn(DR, 0), Eee = Q_, jee = pj, Iee = CI, Dee = CI, Mee = $H, Wne = (jl(), M1), eee = $8, Xne = $8, Une = $8, Gne = M1, qee = J8, Uee = W8, Ree = W8, _ee = W8, zee = _H, Jee = J8, Wee = J8, aee = (El(), F3), bee = F3, wee = Y8, see = Yj, fte = Ov, hte = Gw, ate = Ov, dte = Gw, vte = Ov, kte = Gw, wte = W_, pte = VP, Dte = Ov, Lte = Gw, Pte = Ov, Ite = Gw, Cte = Gw, jte = Gw, Tte = Gw; + } + function ZLe(n, e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt, Yu, Rr, Fo, W2, D1, rf, cf, Xd, q3, Ba, U3, Ih, cl, Mb, G3, J2, Oh, Vd, Rl, Lse, j0n, Tb, _9, DU, z3, H9, ug, q9, LU, Nse; + for (j0n = 0, xe = e, Rr = 0, D1 = xe.length; Rr < D1; ++Rr) + for (Rn = xe[Rr], cl = new C(Rn.j); cl.a < cl.c.c.length; ) { + for (Ih = u(E(cl), 12), G3 = 0, f = new C(Ih.g); f.a < f.c.c.length; ) + s = u(E(f), 18), Rn.c != s.d.i.c && ++G3; + G3 > 0 && (n.a[Ih.p] = j0n++); + } + for (H9 = 0, Lt = t, Fo = 0, rf = Lt.length; Fo < rf; ++Fo) { + for (Rn = Lt[Fo], cf = 0, cl = new C(Rn.j); cl.a < cl.c.c.length && (Ih = u(E(cl), 12), Ih.j == (en(), Xn)); ) + for (f = new C(Ih.e); f.a < f.c.c.length; ) + if (s = u(E(f), 18), Rn.c != s.c.i.c) { + ++cf; + break; + } + for (q3 = 0, J2 = new xi(Rn.j, Rn.j.c.length); J2.b > 0; ) { + for (Ih = (oe(J2.b > 0), u(J2.a.Xb(J2.c = --J2.b), 12)), G3 = 0, f = new C(Ih.e); f.a < f.c.c.length; ) + s = u(E(f), 18), Rn.c != s.c.i.c && ++G3; + G3 > 0 && (Ih.j == (en(), Xn) ? (n.a[Ih.p] = H9, ++H9) : (n.a[Ih.p] = H9 + cf + q3, ++q3)); + } + H9 += q3; + } + for (Mb = new de(), m = new rh(), te = e, Yu = 0, W2 = te.length; Yu < W2; ++Yu) + for (Rn = te[Yu], DU = new C(Rn.j); DU.a < DU.c.c.length; ) + for (_9 = u(E(DU), 12), f = new C(_9.g); f.a < f.c.c.length; ) + if (s = u(E(f), 18), q9 = s.d, Rn.c != q9.i.c) + if (Tb = u(Kr(gr(Mb.f, _9)), 478), ug = u(Kr(gr(Mb.f, q9)), 478), !Tb && !ug) + p = new zAn(), m.a.zc(p, m), nn(p.a, s), nn(p.d, _9), Wc(Mb.f, _9, p), nn(p.d, q9), Wc(Mb.f, q9, p); + else if (!Tb) + nn(ug.a, s), nn(ug.d, _9), Wc(Mb.f, _9, ug); + else if (!ug) + nn(Tb.a, s), nn(Tb.d, q9), Wc(Mb.f, q9, Tb); + else if (Tb == ug) + nn(Tb.a, s); + else { + for (nn(Tb.a, s), U3 = new C(ug.d); U3.a < U3.c.c.length; ) + Ba = u(E(U3), 12), Wc(Mb.f, Ba, Tb); + hi(Tb.a, ug.a), hi(Tb.d, ug.d), m.a.Bc(ug) != null; + } + for (k = u(A5(m, K(ENe, { 3: 1, 4: 1, 5: 1, 2045: 1 }, 478, m.a.gc(), 0, 1)), 2045), Fn = e[0].c, Lse = t[0].c, a = k, d = 0, g = a.length; d < g; ++d) + for (l = a[d], l.e = j0n, l.f = H9, cl = new C(l.d); cl.a < cl.c.c.length; ) + Ih = u(E(cl), 12), Oh = n.a[Ih.p], Ih.i.c == Fn ? (Oh < l.e && (l.e = Oh), Oh > l.b && (l.b = Oh)) : Ih.i.c == Lse && (Oh < l.f && (l.f = Oh), Oh > l.c && (l.c = Oh)); + for (F4(k, 0, k.length, null), z3 = K(ye, _e, 28, k.length, 15, 1), i = K(ye, _e, 28, H9 + 1, 15, 1), S = 0; S < k.length; S++) + z3[S] = k[S].f, i[z3[S]] = 1; + for (c = 0, I = 0; I < i.length; I++) + i[I] == 1 ? i[I] = c : --c; + for (Vd = 0, O = 0; O < z3.length; O++) + z3[O] += i[z3[O]], Vd = y.Math.max(Vd, z3[O] + 1); + for (h = 1; h < Vd; ) + h *= 2; + for (Nse = 2 * h - 1, h -= 1, LU = K(ye, _e, 28, Nse, 15, 1), r = 0, yn = 0; yn < z3.length; yn++) + for (tn = z3[yn] + h, ++LU[tn]; tn > 0; ) + tn % 2 > 0 && (r += LU[tn + 1]), tn = (tn - 1) / 2 | 0, ++LU[tn]; + for (kn = K(Oie, Bn, 374, k.length * 2, 0, 1), N = 0; N < k.length; N++) + kn[2 * N] = new CM(k[N], k[N].e, k[N].b, (Z6(), e9)), kn[2 * N + 1] = new CM(k[N], k[N].b, k[N].e, n9); + for (F4(kn, 0, kn.length, null), Xd = 0, _ = 0; _ < kn.length; _++) + switch (kn[_].d.g) { + case 0: + ++Xd; + break; + case 1: + --Xd, r += Xd; + } + for (Rl = K(Oie, Bn, 374, k.length * 2, 0, 1), X = 0; X < k.length; X++) + Rl[2 * X] = new CM(k[X], k[X].f, k[X].c, (Z6(), e9)), Rl[2 * X + 1] = new CM(k[X], k[X].c, k[X].f, n9); + for (F4(Rl, 0, Rl.length, null), Xd = 0, j = 0; j < Rl.length; j++) + switch (Rl[j].d.g) { + case 0: + ++Xd; + break; + case 1: + --Xd, r += Xd; + } + return r; + } + function nt() { + nt = F, K9 = new Wd(7), b0n = new Nh(8, 94), new Nh(8, 64), w0n = new Nh(8, 36), Cse = new Nh(8, 65), Mse = new Nh(8, 122), Tse = new Nh(8, 90), Sse = new Nh(8, 98), Ese = new Nh(8, 66), Ase = new Nh(8, 60), Pse = new Nh(8, 62), d0n = new Wd(11), PO = new yo(4), Fc(PO, 48, 57), Gv = new yo(4), Fc(Gv, 48, 57), Fc(Gv, 65, 90), Fc(Gv, 95, 95), Fc(Gv, 97, 122), H3 = new yo(4), Fc(H3, 9, 9), Fc(H3, 10, 10), Fc(H3, 12, 12), Fc(H3, 13, 13), Fc(H3, 32, 32), g0n = bw(PO), m0n = bw(Gv), p0n = bw(H3), Uv = new de(), R9 = new de(), jse = A(T(fn, 1), J, 2, 6, ["Cn", "Lu", "Ll", "Lt", "Lm", "Lo", "Mn", "Me", "Mc", "Nd", "Nl", "No", "Zs", "Zl", "Zp", "Cc", "Cf", null, "Co", "Cs", "Pd", "Ps", "Pe", "Pc", "Po", "Sm", "Sc", "Sk", "So", "Pi", "Pf", "L", "M", "N", "Z", "C", "P", "S"]), l0n = A(T(fn, 1), J, 2, 6, ["Basic Latin", "Latin-1 Supplement", "Latin Extended-A", "Latin Extended-B", "IPA Extensions", "Spacing Modifier Letters", "Combining Diacritical Marks", "Greek", "Cyrillic", "Armenian", "Hebrew", "Arabic", "Syriac", "Thaana", "Devanagari", "Bengali", "Gurmukhi", "Gujarati", "Oriya", "Tamil", "Telugu", "Kannada", "Malayalam", "Sinhala", "Thai", "Lao", "Tibetan", "Myanmar", "Georgian", "Hangul Jamo", "Ethiopic", "Cherokee", "Unified Canadian Aboriginal Syllabics", "Ogham", "Runic", "Khmer", "Mongolian", "Latin Extended Additional", "Greek Extended", "General Punctuation", "Superscripts and Subscripts", "Currency Symbols", "Combining Marks for Symbols", "Letterlike Symbols", "Number Forms", "Arrows", "Mathematical Operators", "Miscellaneous Technical", "Control Pictures", "Optical Character Recognition", "Enclosed Alphanumerics", "Box Drawing", "Block Elements", "Geometric Shapes", "Miscellaneous Symbols", "Dingbats", "Braille Patterns", "CJK Radicals Supplement", "Kangxi Radicals", "Ideographic Description Characters", "CJK Symbols and Punctuation", "Hiragana", "Katakana", "Bopomofo", "Hangul Compatibility Jamo", "Kanbun", "Bopomofo Extended", "Enclosed CJK Letters and Months", "CJK Compatibility", "CJK Unified Ideographs Extension A", "CJK Unified Ideographs", "Yi Syllables", "Yi Radicals", "Hangul Syllables", JJn, "CJK Compatibility Ideographs", "Alphabetic Presentation Forms", "Arabic Presentation Forms-A", "Combining Half Marks", "CJK Compatibility Forms", "Small Form Variants", "Arabic Presentation Forms-B", "Specials", "Halfwidth and Fullwidth Forms", "Old Italic", "Gothic", "Deseret", "Byzantine Musical Symbols", "Musical Symbols", "Mathematical Alphanumeric Symbols", "CJK Unified Ideographs Extension B", "CJK Compatibility Ideographs Supplement", "Tags"]), a0n = A(T(ye, 1), _e, 28, 15, [66304, 66351, 66352, 66383, 66560, 66639, 118784, 119039, 119040, 119295, 119808, 120831, 131072, 173782, 194560, 195103, 917504, 917631]); + } + function VA() { + VA = F, mYn = new Vo("OUT_T_L", 0, (Uu(), Mh), (wu(), Xs), (wf(), bc), bc, A(T(js, 1), Bn, 21, 0, [yt((lw(), Zs), A(T(jr, 1), G, 95, 0, [nf, Qs]))])), pYn = new Vo("OUT_T_C", 1, pa, Xs, bc, Jc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [nf, xl])), yt(Zs, A(T(jr, 1), G, 95, 0, [nf, xl, Cs]))])), vYn = new Vo("OUT_T_R", 2, zs, Xs, bc, wc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [nf, Ys]))])), fYn = new Vo("OUT_B_L", 3, Mh, kf, wc, bc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Ms, Qs]))])), sYn = new Vo("OUT_B_C", 4, pa, kf, wc, Jc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Ms, xl])), yt(Zs, A(T(jr, 1), G, 95, 0, [Ms, xl, Cs]))])), hYn = new Vo("OUT_B_R", 5, zs, kf, wc, wc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Ms, Ys]))])), dYn = new Vo("OUT_L_T", 6, zs, kf, bc, bc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Qs, nf, Cs]))])), aYn = new Vo("OUT_L_C", 7, zs, ma, Jc, bc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Qs, el])), yt(Zs, A(T(jr, 1), G, 95, 0, [Qs, el, Cs]))])), lYn = new Vo("OUT_L_B", 8, zs, Xs, wc, bc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Qs, Ms, Cs]))])), gYn = new Vo("OUT_R_T", 9, Mh, kf, bc, wc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Ys, nf, Cs]))])), wYn = new Vo("OUT_R_C", 10, Mh, ma, Jc, wc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Ys, el])), yt(Zs, A(T(jr, 1), G, 95, 0, [Ys, el, Cs]))])), bYn = new Vo("OUT_R_B", 11, Mh, Xs, wc, wc, A(T(js, 1), Bn, 21, 0, [yt(Zs, A(T(jr, 1), G, 95, 0, [Ys, Ms, Cs]))])), uYn = new Vo("IN_T_L", 12, Mh, kf, bc, bc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [nf, Qs])), yt(Lo, A(T(jr, 1), G, 95, 0, [nf, Qs, Cs]))])), cYn = new Vo("IN_T_C", 13, pa, kf, bc, Jc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [nf, xl])), yt(Lo, A(T(jr, 1), G, 95, 0, [nf, xl, Cs]))])), oYn = new Vo("IN_T_R", 14, zs, kf, bc, wc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [nf, Ys])), yt(Lo, A(T(jr, 1), G, 95, 0, [nf, Ys, Cs]))])), iYn = new Vo("IN_C_L", 15, Mh, ma, Jc, bc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [el, Qs])), yt(Lo, A(T(jr, 1), G, 95, 0, [el, Qs, Cs]))])), tYn = new Vo("IN_C_C", 16, pa, ma, Jc, Jc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [el, xl])), yt(Lo, A(T(jr, 1), G, 95, 0, [el, xl, Cs]))])), rYn = new Vo("IN_C_R", 17, zs, ma, Jc, wc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [el, Ys])), yt(Lo, A(T(jr, 1), G, 95, 0, [el, Ys, Cs]))])), nYn = new Vo("IN_B_L", 18, Mh, Xs, wc, bc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [Ms, Qs])), yt(Lo, A(T(jr, 1), G, 95, 0, [Ms, Qs, Cs]))])), ZQn = new Vo("IN_B_C", 19, pa, Xs, wc, Jc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [Ms, xl])), yt(Lo, A(T(jr, 1), G, 95, 0, [Ms, xl, Cs]))])), eYn = new Vo("IN_B_R", 20, zs, Xs, wc, wc, A(T(js, 1), Bn, 21, 0, [yt(Lo, A(T(jr, 1), G, 95, 0, [Ms, Ys])), yt(Lo, A(T(jr, 1), G, 95, 0, [Ms, Ys, Cs]))])), l_ = new Vo(n8, 21, null, null, null, null, A(T(js, 1), Bn, 21, 0, [])); + } + function On() { + On = F, tg = (G1(), Hn).b, u(L(H(Hn.b), 0), 35), u(L(H(Hn.b), 1), 19), A1 = Hn.a, u(L(H(Hn.a), 0), 35), u(L(H(Hn.a), 1), 19), u(L(H(Hn.a), 2), 19), u(L(H(Hn.a), 3), 19), u(L(H(Hn.a), 4), 19), La = Hn.o, u(L(H(Hn.o), 0), 35), u(L(H(Hn.o), 1), 35), Hoe = u(L(H(Hn.o), 2), 19), u(L(H(Hn.o), 3), 19), u(L(H(Hn.o), 4), 19), u(L(H(Hn.o), 5), 19), u(L(H(Hn.o), 6), 19), u(L(H(Hn.o), 7), 19), u(L(H(Hn.o), 8), 19), u(L(H(Hn.o), 9), 19), u(L(H(Hn.o), 10), 19), u(L(H(Hn.o), 11), 19), u(L(H(Hn.o), 12), 19), u(L(H(Hn.o), 13), 19), u(L(H(Hn.o), 14), 19), u(L(H(Hn.o), 15), 19), u(L(ft(Hn.o), 0), 62), u(L(ft(Hn.o), 1), 62), u(L(ft(Hn.o), 2), 62), u(L(ft(Hn.o), 3), 62), u(L(ft(Hn.o), 4), 62), u(L(ft(Hn.o), 5), 62), u(L(ft(Hn.o), 6), 62), u(L(ft(Hn.o), 7), 62), u(L(ft(Hn.o), 8), 62), u(L(ft(Hn.o), 9), 62), _oe = Hn.p, u(L(H(Hn.p), 0), 35), u(L(H(Hn.p), 1), 35), u(L(H(Hn.p), 2), 35), u(L(H(Hn.p), 3), 35), u(L(H(Hn.p), 4), 19), u(L(H(Hn.p), 5), 19), u(L(ft(Hn.p), 0), 62), u(L(ft(Hn.p), 1), 62), qoe = Hn.q, u(L(H(Hn.q), 0), 35), Na = Hn.v, u(L(H(Hn.v), 0), 19), u(L(ft(Hn.v), 0), 62), u(L(ft(Hn.v), 1), 62), u(L(ft(Hn.v), 2), 62), S1 = Hn.w, u(L(H(Hn.w), 0), 35), u(L(H(Hn.w), 1), 35), u(L(H(Hn.w), 2), 35), u(L(H(Hn.w), 3), 19), $a = Hn.B, u(L(H(Hn.B), 0), 19), u(L(ft(Hn.B), 0), 62), u(L(ft(Hn.B), 1), 62), u(L(ft(Hn.B), 2), 62), Uoe = Hn.Q, u(L(H(Hn.Q), 0), 19), u(L(ft(Hn.Q), 0), 62), Goe = Hn.R, u(L(H(Hn.R), 0), 35), Is = Hn.S, u(L(ft(Hn.S), 0), 62), u(L(ft(Hn.S), 1), 62), u(L(ft(Hn.S), 2), 62), u(L(ft(Hn.S), 3), 62), u(L(ft(Hn.S), 4), 62), u(L(ft(Hn.S), 5), 62), u(L(ft(Hn.S), 6), 62), u(L(ft(Hn.S), 7), 62), u(L(ft(Hn.S), 8), 62), u(L(ft(Hn.S), 9), 62), u(L(ft(Hn.S), 10), 62), u(L(ft(Hn.S), 11), 62), u(L(ft(Hn.S), 12), 62), u(L(ft(Hn.S), 13), 62), u(L(ft(Hn.S), 14), 62), P1 = Hn.T, u(L(H(Hn.T), 0), 19), u(L(H(Hn.T), 2), 19), zoe = u(L(H(Hn.T), 3), 19), u(L(H(Hn.T), 4), 19), u(L(ft(Hn.T), 0), 62), u(L(ft(Hn.T), 1), 62), u(L(H(Hn.T), 1), 19), I1 = Hn.U, u(L(H(Hn.U), 0), 35), u(L(H(Hn.U), 1), 35), u(L(H(Hn.U), 2), 19), u(L(H(Hn.U), 3), 19), u(L(H(Hn.U), 4), 19), u(L(H(Hn.U), 5), 19), u(L(ft(Hn.U), 0), 62), ig = Hn.V, u(L(H(Hn.V), 0), 19), U2 = Hn.W, u(L(H(Hn.W), 0), 35), u(L(H(Hn.W), 1), 35), u(L(H(Hn.W), 2), 35), u(L(H(Hn.W), 3), 19), u(L(H(Hn.W), 4), 19), u(L(H(Hn.W), 5), 19), Xoe = Hn.bb, u(L(H(Hn.bb), 0), 35), u(L(H(Hn.bb), 1), 35), u(L(H(Hn.bb), 2), 35), u(L(H(Hn.bb), 3), 35), u(L(H(Hn.bb), 4), 35), u(L(H(Hn.bb), 5), 35), u(L(H(Hn.bb), 6), 35), u(L(H(Hn.bb), 7), 19), u(L(ft(Hn.bb), 0), 62), u(L(ft(Hn.bb), 1), 62), Voe = Hn.eb, u(L(H(Hn.eb), 0), 35), u(L(H(Hn.eb), 1), 35), u(L(H(Hn.eb), 2), 35), u(L(H(Hn.eb), 3), 35), u(L(H(Hn.eb), 4), 35), u(L(H(Hn.eb), 5), 35), u(L(H(Hn.eb), 6), 19), u(L(H(Hn.eb), 7), 19), ar = Hn.ab, u(L(H(Hn.ab), 0), 35), u(L(H(Hn.ab), 1), 35), jb = Hn.H, u(L(H(Hn.H), 0), 19), u(L(H(Hn.H), 1), 19), u(L(H(Hn.H), 2), 19), u(L(H(Hn.H), 3), 19), u(L(H(Hn.H), 4), 19), u(L(H(Hn.H), 5), 19), u(L(ft(Hn.H), 0), 62), Eb = Hn.db, u(L(H(Hn.db), 0), 19), Zf = Hn.M; + } + function nNe(n) { + var e; + n.O || (n.O = !0, Xc(n, "type"), CT(n, "ecore.xml.type"), MT(n, Sd), e = u(Mm((R1(), Ps), Sd), 2044), ve(Hr(n.fb), n.b), fc(n.b, bE, "AnyType", !1, !1, !0), zt(u(L(H(n.b), 0), 35), n.wb.D, Jy, null, 0, -1, bE, !1, !1, !0, !1, !1, !1), zt(u(L(H(n.b), 1), 35), n.wb.D, "any", null, 0, -1, bE, !0, !0, !0, !1, !1, !0), zt(u(L(H(n.b), 2), 35), n.wb.D, "anyAttribute", null, 0, -1, bE, !1, !1, !0, !1, !1, !1), fc(n.bb, AO, OJn, !1, !1, !0), zt(u(L(H(n.bb), 0), 35), n.gb, "data", null, 0, 1, AO, !1, !1, !0, !1, !0, !1), zt(u(L(H(n.bb), 1), 35), n.gb, xcn, null, 1, 1, AO, !1, !1, !0, !1, !0, !1), fc(n.fb, wE, DJn, !1, !1, !0), zt(u(L(H(n.fb), 0), 35), e.gb, "rawValue", null, 0, 1, wE, !0, !0, !0, !1, !0, !0), zt(u(L(H(n.fb), 1), 35), e.a, g8, null, 0, 1, wE, !0, !0, !0, !1, !0, !0), Et(u(L(H(n.fb), 2), 19), n.wb.q, null, "instanceType", 1, 1, wE, !1, !1, !0, !1, !1, !1, !1), fc(n.qb, o0n, LJn, !1, !1, !0), zt(u(L(H(n.qb), 0), 35), n.wb.D, Jy, null, 0, -1, null, !1, !1, !0, !1, !1, !1), Et(u(L(H(n.qb), 1), 19), n.wb.ab, null, "xMLNSPrefixMap", 0, -1, null, !0, !1, !0, !0, !1, !1, !1), Et(u(L(H(n.qb), 2), 19), n.wb.ab, null, "xSISchemaLocation", 0, -1, null, !0, !1, !0, !0, !1, !1, !1), zt(u(L(H(n.qb), 3), 35), n.gb, "cDATA", null, 0, -2, null, !0, !0, !0, !1, !1, !0), zt(u(L(H(n.qb), 4), 35), n.gb, "comment", null, 0, -2, null, !0, !0, !0, !1, !1, !0), Et(u(L(H(n.qb), 5), 19), n.bb, null, zJn, 0, -2, null, !0, !0, !0, !0, !1, !1, !0), zt(u(L(H(n.qb), 6), 35), n.gb, wK, null, 0, -2, null, !0, !0, !0, !1, !1, !0), We(n.a, ki, "AnySimpleType", !0), We(n.c, fn, "AnyURI", !0), We(n.d, T(Bu, 1), "Base64Binary", !0), We(n.e, so, "Boolean", !0), We(n.f, Xt, "BooleanObject", !0), We(n.g, Bu, "Byte", !0), We(n.i, p3, "ByteObject", !0), We(n.j, fn, "Date", !0), We(n.k, fn, "DateTime", !0), We(n.n, QK, "Decimal", !0), We(n.o, Ii, "Double", !0), We(n.p, si, "DoubleObject", !0), We(n.q, fn, "Duration", !0), We(n.s, rs, "ENTITIES", !0), We(n.r, rs, "ENTITIESBase", !0), We(n.t, fn, Ycn, !0), We(n.u, cg, "Float", !0), We(n.v, sv, "FloatObject", !0), We(n.w, fn, "GDay", !0), We(n.B, fn, "GMonth", !0), We(n.A, fn, "GMonthDay", !0), We(n.C, fn, "GYear", !0), We(n.D, fn, "GYearMonth", !0), We(n.F, T(Bu, 1), "HexBinary", !0), We(n.G, fn, "ID", !0), We(n.H, fn, "IDREF", !0), We(n.J, rs, "IDREFS", !0), We(n.I, rs, "IDREFSBase", !0), We(n.K, ye, "Int", !0), We(n.M, l2, "Integer", !0), We(n.L, Gi, "IntObject", !0), We(n.P, fn, "Language", !0), We(n.Q, Fa, "Long", !0), We(n.R, tb, "LongObject", !0), We(n.S, fn, "Name", !0), We(n.T, fn, tP, !0), We(n.U, l2, "NegativeInteger", !0), We(n.V, fn, eun, !0), We(n.X, rs, "NMTOKENS", !0), We(n.W, rs, "NMTOKENSBase", !0), We(n.Y, l2, "NonNegativeInteger", !0), We(n.Z, l2, "NonPositiveInteger", !0), We(n.$, fn, "NormalizedString", !0), We(n._, fn, "NOTATION", !0), We(n.ab, fn, "PositiveInteger", !0), We(n.cb, fn, "QName", !0), We(n.db, V2, "Short", !0), We(n.eb, ib, "ShortObject", !0), We(n.gb, fn, vtn, !0), We(n.hb, fn, "Time", !0), We(n.ib, fn, "Token", !0), We(n.jb, V2, "UnsignedByte", !0), We(n.kb, ib, "UnsignedByteObject", !0), We(n.lb, Fa, "UnsignedInt", !0), We(n.mb, tb, "UnsignedIntObject", !0), We(n.nb, l2, "UnsignedLong", !0), We(n.ob, ye, "UnsignedShort", !0), We(n.pb, Gi, "UnsignedShortObject", !0), mY(n, Sd), eNe(n)); + } + function dtn(n, e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn, Rn, te, xe, Lt, Yu, Rr, Fo, W2, D1, rf, cf, Xd, q3, Ba, U3, Ih, cl, Mb, G3, J2, Oh, Vd, Rl; + if (i.$g() || on(un(z(e, (He(), tO))))) + return Dn(), Dn(), sr; + if (tn = (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i != 0, kn = gEe(e), yn = !kn.dc(), tn || yn) { + if (r = u(z(e, q2), 143), !r) + throw M(new _l("Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout.")); + if (J2 = wX(r, (Cm(), mO)), tRn(e), !tn && yn && !J2) + return Dn(), Dn(), sr; + if (O = new Z(), x(z(e, R2)) === x((jl(), M1)) && (wX(r, gO) || wX(r, wO))) { + if (on(un(z(e, k9)))) + throw M(new _l("Topdown layout cannot be used together with hierarchy handling.")); + for (W2 = Xqn(n, e), D1 = new Ct(), Bi(D1, (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); D1.b != 0; ) + Rr = u(D1.b == 0 ? null : (oe(D1.b != 0), Xo(D1, D1.a.a)), 27), tRn(Rr), G3 = x(z(Rr, R2)) === x(E9), G3 || Lf(Rr, $v) && !OJ(r, z(Rr, q2)) ? (j = dtn(n, Rr, t, i), hi(O, j), ht(Rr, R2, E9), hUn(Rr)) : Bi(D1, (!Rr.a && (Rr.a = new q(Ye, Rr, 10, 11)), Rr.a)); + } else { + if (W2 = (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i, on(un(z(e, k9)))) { + if (Oh = i.eh(1), Oh.Ug(DVn, 1), z(e, x3) == null) + throw M(new _l(e.k + " has not been assigned a top-down node type.")); + if (u(z(e, x3), 280) == (Gp(), Yw) || u(z(e, x3), 280) == aO) + for (I = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); I.e != I.i.gc(); ) + S = u(ue(I), 27), Yu = u(z(S, q2), 143), (!S.a && (S.a = new q(Ye, S, 10, 11)), S.a).i > 0 && z7(Yu.f), z(S, Zan) != null && (f = u(z(S, Zan), 347), Mb = f.Tg(S), kg(S, y.Math.max(S.g, Mb.a), y.Math.max(S.f, Mb.b))); + if (rf = u(z(e, C1), 107), p = e.g - (rf.b + rf.c), g = e.f - (rf.d + rf.a), Oh.bh("Available Child Area: (" + p + "|" + g + ")"), ht(e, x2, p / g), uRn(e, r, i.eh(W2)), u(z(e, x3), 280) == aO && (stn(e), kg(e, rf.b + $(R(z(e, B2))) + rf.c, rf.d + $(R(z(e, F2))) + rf.a)), Oh.bh("Executed layout algorithm: " + Oe(z(e, $v)) + " on node " + e.k), u(z(e, x3), 280) == Yw) { + if (p < 0 || g < 0) + throw M(new _l("The size defined by the parent parallel node is too small for the space provided by the paddings of the child hierarchical node. " + e.k)); + for (Lf(e, B2) || Lf(e, F2) || stn(e), k = $(R(z(e, B2))), m = $(R(z(e, F2))), Oh.bh("Desired Child Area: (" + k + "|" + m + ")"), Xd = p / k, q3 = g / m, cf = y.Math.min(Xd, y.Math.min(q3, $(R(z(e, que))))), ht(e, cO, cf), Oh.bh(e.k + " -- Local Scale Factor (X|Y): (" + Xd + "|" + q3 + ")"), N = u(z(e, Gj), 21), c = 0, s = 0, cf < Xd && (N.Hc((wd(), w9)) ? c = (p / 2 - k * cf / 2) / cf : N.Hc(g9) && (c = (p - k * cf) / cf)), cf < q3 && (N.Hc((wd(), m9)) ? s = (g / 2 - m * cf / 2) / cf : N.Hc(p9) && (s = (g - m * cf) / cf)), Vd = c + (rf.b / cf - rf.b), Rl = s + (rf.d / cf - rf.d), Oh.bh("Shift: (" + Vd + "|" + Rl + ")"), Fo = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); Fo.e != Fo.i.gc(); ) + Rr = u(ue(Fo), 27), tu(Rr, Rr.i + Vd), iu(Rr, Rr.j + Rl); + for (X = new ne((!e.b && (e.b = new q(Wt, e, 12, 3)), e.b)); X.e != X.i.gc(); ) { + for (_ = u(ue(X), 74), U3 = new ne((!_.a && (_.a = new q(Mt, _, 6, 6)), _.a)); U3.e != U3.i.gc(); ) + for (Ba = u(ue(U3), 166), j7(Ba, Ba.j + Vd, Ba.k + Rl), y7(Ba, Ba.b + Vd, Ba.c + Rl), l = new ne((!Ba.a && (Ba.a = new ti(xo, Ba, 5)), Ba.a)); l.e != l.i.gc(); ) + h = u(ue(l), 377), gL(h, h.a + Vd, h.b + Rl); + for (Lt = new ne((!_.n && (_.n = new q(Sr, _, 1, 7)), _.n)); Lt.e != Lt.i.gc(); ) + xe = u(ue(Lt), 135), Ro(xe, xe.i + Vd, xe.j + Rl); + for (te = u(z(_, kb), 75), Rn = ge(te, 0); Rn.b != Rn.d.c; ) + Fn = u(be(Rn), 8), Fn.a += Vd, Fn.b += Rl; + ht(_, kb, te); + } + } + Oh.Vg(); + } + for (d = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); d.e != d.i.gc(); ) + a = u(ue(d), 27), j = dtn(n, a, t, i), hi(O, j), hUn(a); + } + if (i.$g()) + return Dn(), Dn(), sr; + for (cl = new C(O); cl.a < cl.c.c.length; ) + Ih = u(E(cl), 74), ht(Ih, tO, (_n(), !0)); + return on(un(z(e, k9))) || uRn(e, r, i.eh(W2)), KSe(O), yn && J2 ? kn : (Dn(), Dn(), sr); + } else + return Dn(), Dn(), sr; + } + function Zg(n, e) { + var t, i; + return X2 || (X2 = new de(), qv = new de(), i = (nt(), nt(), new yo(4)), Rk(i, ` +\r\r `), Dr(X2, NK, i), Dr(qv, NK, bw(i)), i = new yo(4), Rk(i, VJn), Dr(X2, M8, i), Dr(qv, M8, bw(i)), i = new yo(4), Rk(i, VJn), Dr(X2, M8, i), Dr(qv, M8, bw(i)), i = new yo(4), Rk(i, WJn), gw(i, u($c(X2, M8), 122)), Dr(X2, LK, i), Dr(qv, LK, bw(i)), i = new yo(4), Rk(i, "-.0:AZ__az··ÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁːˑ̀͠͡ͅΆΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁ҃҆ҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆֹֻֽֿֿׁׂ֑֣֡ׄׄאתװײءغـْ٠٩ٰڷںھۀێېۓە۪ۭۨ۰۹ँःअह़्॑॔क़ॣ०९ঁঃঅঌএঐওনপরললশহ়়াৄেৈো্ৗৗড়ঢ়য়ৣ০ৱਂਂਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹ਼਼ਾੂੇੈੋ੍ਖ਼ੜਫ਼ਫ਼੦ੴઁઃઅઋઍઍએઑઓનપરલળવહ઼ૅેૉો્ૠૠ૦૯ଁଃଅଌଏଐଓନପରଲଳଶହ଼ୃେୈୋ୍ୖୗଡ଼ଢ଼ୟୡ୦୯ஂஃஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹாூெைொ்ௗௗ௧௯ఁఃఅఌఎఐఒనపళవహాౄెైొ్ౕౖౠౡ౦౯ಂಃಅಌಎಐಒನಪಳವಹಾೄೆೈೊ್ೕೖೞೞೠೡ೦೯ംഃഅഌഎഐഒനപഹാൃെൈൊ്ൗൗൠൡ൦൯กฮะฺเ๎๐๙ກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະູົຽເໄໆໆ່ໍ໐໙༘༙༠༩༹༹༵༵༷༷༾ཇཉཀྵ྄ཱ྆ྋྐྕྗྗྙྭྱྷྐྵྐྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼ⃐⃜⃡⃡ΩΩKÅ℮℮ↀↂ々々〇〇〡〯〱〵ぁゔ゙゚ゝゞァヺーヾㄅㄬ一龥가힣"), Dr(X2, $K, i), Dr(qv, $K, bw(i)), i = new yo(4), Rk(i, WJn), Fc(i, 95, 95), Fc(i, 58, 58), Dr(X2, xK, i), Dr(qv, xK, bw(i))), t = u($c(e ? X2 : qv, n), 138), t; + } + function Mzn(n) { + r0(n, new gd(Ez(UE(e0(Yd(n0(Zd(new Ka(), Yn), "ELK Layered"), "Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."), new Gpn()), Yn), yt((Cm(), kU), A(T(kO, 1), G, 245, 0, [mO, vO, pO, vU, gO, wO]))))), Q(n, Yn, zin, rn(PH)), Q(n, Yn, Xin, rn(mhn)), Q(n, Yn, WB, rn(Tj)), Q(n, Yn, Vin, rn(Ws)), Q(n, Yn, eR, rn(T2)), Q(n, Yn, $R, rn(wb)), Q(n, Yn, Win, rn(qw)), Q(n, Yn, Jin, rn(Av)), Q(n, Yn, Qin, rn(Sv)), Q(n, Yn, Yin, rn(IH)), Q(n, Yn, yw, rn(gb)), Q(n, Yn, Zin, rn(OH)), Q(n, Yn, nrn, rn(X8)), Q(n, Yn, ern, rn(yI)), Q(n, Yn, Ain, rn(Mj)), Q(n, Yn, Pin, rn(M2)), Q(n, Yn, Sin, rn(Bd)), Q(n, Yn, Iin, rn(A2)), Q(n, Yn, Ny, Y(0)), Q(n, Yn, Oin, rn(Tv)), Q(n, Yn, Din, rn(phn)), Q(n, Yn, Lin, rn(I3)), Q(n, Yn, Ol, rn(Ahn)), Q(n, Yn, pS, rn(khn)), Q(n, Yn, mS, rn(yhn)), Q(n, Yn, s8, rn(LH)), Q(n, Yn, AR, rn(jhn)), Q(n, Yn, SR, rn(Ehn)), Q(n, Yn, vS, rn(jI)), Q(n, Yn, kS, rn(NH)), Q(n, Yn, yS, rn(Mhn)), Q(n, Yn, jS, rn(Chn)), Q(n, Yn, PR, rn(Thn)), Q(n, Yn, yR, rn(db)), Q(n, Yn, jR, rn(z8)), Q(n, Yn, bS, rn(MH)), Q(n, Yn, wS, rn(Jfn)), Q(n, Yn, $y, rn(Wte)), Q(n, Yn, xy, rn(Jte)), Q(n, Yn, Fy, rn(Vte)), Q(n, Yn, By, rn(Xte)), Q(n, Yn, J0, vhn), Q(n, Yn, W0, ahn), Q(n, Yn, qy, Xfn), Q(n, Yn, trn, 0), Q(n, Yn, uS, Y(1)), Q(n, Yn, l3, Gm), Q(n, Yn, irn, rn(Fd)), Q(n, Yn, tR, rn(Ut)), Q(n, Yn, rrn, rn(Mv)), Q(n, Yn, Uy, rn(Fte)), Q(n, Yn, crn, rn(Th)), Q(n, Yn, CS, rn(Bw)), Q(n, Yn, t8, (_n(), !0)), Q(n, Yn, urn, rn(Rw)), Q(n, Yn, orn, rn(Nd)), Q(n, Yn, r2, rn(xd)), Q(n, Yn, a3, rn(kI)), Q(n, Yn, zm, rn(SH)), Q(n, Yn, xR, zfn), Q(n, Yn, Xm, rn(ab)), Q(n, Yn, srn, rn(mI)), Q(n, Yn, Vm, rn(_w)), Q(n, Yn, frn, rn(qte)), Q(n, Yn, hrn, rn(whn)), Q(n, Yn, lrn, bhn), Q(n, Yn, arn, rn(Kte)), Q(n, Yn, drn, rn(_te)), Q(n, Yn, brn, rn(Hte)), Q(n, Yn, wrn, rn(Rte)), Q(n, Yn, bin, rn(DH)), Q(n, Yn, Hy, rn($d)), Q(n, Yn, aR, rn(ja)), Q(n, Yn, din, rn(V8)), Q(n, Yn, gin, rn(su)), Q(n, Yn, fR, rn(Ld)), Q(n, Yn, o8, rn(U8)), Q(n, Yn, vin, rn(lb)), Q(n, Yn, Cin, rn(qfn)), Q(n, Yn, pR, rn(yH)), Q(n, Yn, aS, rn(Cj)), Q(n, Yn, gR, rn(jH)), Q(n, Yn, fin, rn(ohn)), Q(n, Yn, hin, rn(shn)), Q(n, Yn, lS, rn(thn)), Q(n, Yn, c2, rn(vI)), Q(n, Yn, vR, rn(AH)), Q(n, Yn, sin, rn(TH)), Q(n, Yn, kR, rn(hhn)), Q(n, Yn, Min, rn(Wfn)), Q(n, Yn, Tin, rn(CH)), Q(n, Yn, MS, rn(kH)), Q(n, Yn, mR, rn(fhn)), Q(n, Yn, Nin, rn(fI)), Q(n, Yn, $in, rn(Kfn)), Q(n, Yn, CR, rn(sI)), Q(n, Yn, gS, rn(Zfn)), Q(n, Yn, MR, rn(Yfn)), Q(n, Yn, TR, rn(nhn)), Q(n, Yn, d3, rn(Ev)), Q(n, Yn, grn, rn(Fr)), Q(n, Yn, JB, rn(m1)), Q(n, Yn, prn, rn(Ah)), Q(n, Yn, oS, rn(EH)), Q(n, Yn, wR, rn(Ufn)), Q(n, Yn, mrn, rn(v1)), Q(n, Yn, vrn, rn(q8)), Q(n, Yn, krn, rn(wI)), Q(n, Yn, yrn, rn(bb)), Q(n, Yn, FR, rn(dhn)), Q(n, Yn, BR, rn(Cv)), Q(n, Yn, hR, rn(rhn)), Q(n, Yn, lR, rn(chn)), Q(n, Yn, TS, rn(Hw)), Q(n, Yn, lin, rn(mH)), Q(n, Yn, dR, rn(uhn)), Q(n, Yn, xin, rn(bI)), Q(n, Yn, Fin, rn(dI)), Q(n, Yn, jrn, rn(pI)), Q(n, Yn, bR, rn(ihn)), Q(n, Yn, dS, rn(G8)), Q(n, Yn, Ern, rn(Aj)), Q(n, Yn, oin, rn(Gfn)), Q(n, Yn, ain, rn(ghn)), Q(n, Yn, ER, rn(Vfn)), Q(n, Yn, kin, rn(Nte)), Q(n, Yn, yin, rn($te)), Q(n, Yn, pin, rn(Bte)), Q(n, Yn, jin, rn(xte)), Q(n, Yn, AS, rn(ehn)), Q(n, Yn, min, rn(gI)), Q(n, Yn, Ein, rn(aI)), Q(n, Yn, ES, rn(Yh)), Q(n, Yn, Kin, rn(Hfn)), Q(n, Yn, OR, rn(hI)), Q(n, Yn, DR, rn(_fn)), Q(n, Yn, Rin, rn(lI)), Q(n, Yn, IR, rn(Fw)), Q(n, Yn, Bin, rn(vH)), Q(n, Yn, win, rn(Qfn)); + } + function eNe(n) { + Me(n.a, Be, A(T(fn, 1), J, 2, 6, [Qe, "anySimpleType"])), Me(n.b, Be, A(T(fn, 1), J, 2, 6, [Qe, "anyType", vs, Jy])), Me(u(L(H(n.b), 0), 35), Be, A(T(fn, 1), J, 2, 6, [vs, SK, Qe, ":mixed"])), Me(u(L(H(n.b), 1), 35), Be, A(T(fn, 1), J, 2, 6, [vs, SK, Jcn, IK, Qe, ":1", NJn, "lax"])), Me(u(L(H(n.b), 2), 35), Be, A(T(fn, 1), J, 2, 6, [vs, IJn, Jcn, IK, Qe, ":2", NJn, "lax"])), Me(n.c, Be, A(T(fn, 1), J, 2, 6, [Qe, "anyURI", ys, vf])), Me(n.d, Be, A(T(fn, 1), J, 2, 6, [Qe, "base64Binary", ys, vf])), Me(n.e, Be, A(T(fn, 1), J, 2, 6, [Qe, i3, ys, vf])), Me(n.f, Be, A(T(fn, 1), J, 2, 6, [Qe, "boolean:Object", Ji, i3])), Me(n.g, Be, A(T(fn, 1), J, 2, 6, [Qe, m8])), Me(n.i, Be, A(T(fn, 1), J, 2, 6, [Qe, "byte:Object", Ji, m8])), Me(n.j, Be, A(T(fn, 1), J, 2, 6, [Qe, "date", ys, vf])), Me(n.k, Be, A(T(fn, 1), J, 2, 6, [Qe, "dateTime", ys, vf])), Me(n.n, Be, A(T(fn, 1), J, 2, 6, [Qe, "decimal", ys, vf])), Me(n.o, Be, A(T(fn, 1), J, 2, 6, [Qe, v8, ys, vf])), Me(n.p, Be, A(T(fn, 1), J, 2, 6, [Qe, "double:Object", Ji, v8])), Me(n.q, Be, A(T(fn, 1), J, 2, 6, [Qe, "duration", ys, vf])), Me(n.s, Be, A(T(fn, 1), J, 2, 6, [Qe, "ENTITIES", Ji, $Jn, Qcn, "1"])), Me(n.r, Be, A(T(fn, 1), J, 2, 6, [Qe, $Jn, PK, Ycn])), Me(n.t, Be, A(T(fn, 1), J, 2, 6, [Qe, Ycn, Ji, tP])), Me(n.u, Be, A(T(fn, 1), J, 2, 6, [Qe, k8, ys, vf])), Me(n.v, Be, A(T(fn, 1), J, 2, 6, [Qe, "float:Object", Ji, k8])), Me(n.w, Be, A(T(fn, 1), J, 2, 6, [Qe, "gDay", ys, vf])), Me(n.B, Be, A(T(fn, 1), J, 2, 6, [Qe, "gMonth", ys, vf])), Me(n.A, Be, A(T(fn, 1), J, 2, 6, [Qe, "gMonthDay", ys, vf])), Me(n.C, Be, A(T(fn, 1), J, 2, 6, [Qe, "gYear", ys, vf])), Me(n.D, Be, A(T(fn, 1), J, 2, 6, [Qe, "gYearMonth", ys, vf])), Me(n.F, Be, A(T(fn, 1), J, 2, 6, [Qe, "hexBinary", ys, vf])), Me(n.G, Be, A(T(fn, 1), J, 2, 6, [Qe, "ID", Ji, tP])), Me(n.H, Be, A(T(fn, 1), J, 2, 6, [Qe, "IDREF", Ji, tP])), Me(n.J, Be, A(T(fn, 1), J, 2, 6, [Qe, "IDREFS", Ji, xJn, Qcn, "1"])), Me(n.I, Be, A(T(fn, 1), J, 2, 6, [Qe, xJn, PK, "IDREF"])), Me(n.K, Be, A(T(fn, 1), J, 2, 6, [Qe, y8])), Me(n.M, Be, A(T(fn, 1), J, 2, 6, [Qe, Zcn])), Me(n.L, Be, A(T(fn, 1), J, 2, 6, [Qe, "int:Object", Ji, y8])), Me(n.P, Be, A(T(fn, 1), J, 2, 6, [Qe, "language", Ji, OK, DK, FJn])), Me(n.Q, Be, A(T(fn, 1), J, 2, 6, [Qe, j8])), Me(n.R, Be, A(T(fn, 1), J, 2, 6, [Qe, "long:Object", Ji, j8])), Me(n.S, Be, A(T(fn, 1), J, 2, 6, [Qe, "Name", Ji, OK, DK, nun])), Me(n.T, Be, A(T(fn, 1), J, 2, 6, [Qe, tP, Ji, "Name", DK, BJn])), Me(n.U, Be, A(T(fn, 1), J, 2, 6, [Qe, "negativeInteger", Ji, RJn, ej, "-1"])), Me(n.V, Be, A(T(fn, 1), J, 2, 6, [Qe, eun, Ji, OK, DK, "\\c+"])), Me(n.X, Be, A(T(fn, 1), J, 2, 6, [Qe, "NMTOKENS", Ji, KJn, Qcn, "1"])), Me(n.W, Be, A(T(fn, 1), J, 2, 6, [Qe, KJn, PK, eun])), Me(n.Y, Be, A(T(fn, 1), J, 2, 6, [Qe, tun, Ji, Zcn, tj, "0"])), Me(n.Z, Be, A(T(fn, 1), J, 2, 6, [Qe, RJn, Ji, Zcn, ej, "0"])), Me(n.$, Be, A(T(fn, 1), J, 2, 6, [Qe, _Jn, Ji, nB, ys, "replace"])), Me(n._, Be, A(T(fn, 1), J, 2, 6, [Qe, "NOTATION", ys, vf])), Me(n.ab, Be, A(T(fn, 1), J, 2, 6, [Qe, "positiveInteger", Ji, tun, tj, "1"])), Me(n.bb, Be, A(T(fn, 1), J, 2, 6, [Qe, "processingInstruction_._type", vs, "empty"])), Me(u(L(H(n.bb), 0), 35), Be, A(T(fn, 1), J, 2, 6, [vs, YS, Qe, "data"])), Me(u(L(H(n.bb), 1), 35), Be, A(T(fn, 1), J, 2, 6, [vs, YS, Qe, xcn])), Me(n.cb, Be, A(T(fn, 1), J, 2, 6, [Qe, "QName", ys, vf])), Me(n.db, Be, A(T(fn, 1), J, 2, 6, [Qe, E8])), Me(n.eb, Be, A(T(fn, 1), J, 2, 6, [Qe, "short:Object", Ji, E8])), Me(n.fb, Be, A(T(fn, 1), J, 2, 6, [Qe, "simpleAnyType", vs, Qy])), Me(u(L(H(n.fb), 0), 35), Be, A(T(fn, 1), J, 2, 6, [Qe, ":3", vs, Qy])), Me(u(L(H(n.fb), 1), 35), Be, A(T(fn, 1), J, 2, 6, [Qe, ":4", vs, Qy])), Me(u(L(H(n.fb), 2), 19), Be, A(T(fn, 1), J, 2, 6, [Qe, ":5", vs, Qy])), Me(n.gb, Be, A(T(fn, 1), J, 2, 6, [Qe, nB, ys, "preserve"])), Me(n.hb, Be, A(T(fn, 1), J, 2, 6, [Qe, "time", ys, vf])), Me(n.ib, Be, A(T(fn, 1), J, 2, 6, [Qe, OK, Ji, _Jn, ys, vf])), Me(n.jb, Be, A(T(fn, 1), J, 2, 6, [Qe, HJn, ej, "255", tj, "0"])), Me(n.kb, Be, A(T(fn, 1), J, 2, 6, [Qe, "unsignedByte:Object", Ji, HJn])), Me(n.lb, Be, A(T(fn, 1), J, 2, 6, [Qe, qJn, ej, "4294967295", tj, "0"])), Me(n.mb, Be, A(T(fn, 1), J, 2, 6, [Qe, "unsignedInt:Object", Ji, qJn])), Me(n.nb, Be, A(T(fn, 1), J, 2, 6, [Qe, "unsignedLong", Ji, tun, ej, UJn, tj, "0"])), Me(n.ob, Be, A(T(fn, 1), J, 2, 6, [Qe, GJn, ej, "65535", tj, "0"])), Me(n.pb, Be, A(T(fn, 1), J, 2, 6, [Qe, "unsignedShort:Object", Ji, GJn])), Me(n.qb, Be, A(T(fn, 1), J, 2, 6, [Qe, "", vs, Jy])), Me(u(L(H(n.qb), 0), 35), Be, A(T(fn, 1), J, 2, 6, [vs, SK, Qe, ":mixed"])), Me(u(L(H(n.qb), 1), 19), Be, A(T(fn, 1), J, 2, 6, [vs, YS, Qe, "xmlns:prefix"])), Me(u(L(H(n.qb), 2), 19), Be, A(T(fn, 1), J, 2, 6, [vs, YS, Qe, "xsi:schemaLocation"])), Me(u(L(H(n.qb), 3), 35), Be, A(T(fn, 1), J, 2, 6, [vs, ZS, Qe, "cDATA", nP, Yy])), Me(u(L(H(n.qb), 4), 35), Be, A(T(fn, 1), J, 2, 6, [vs, ZS, Qe, "comment", nP, Yy])), Me(u(L(H(n.qb), 5), 19), Be, A(T(fn, 1), J, 2, 6, [vs, ZS, Qe, zJn, nP, Yy])), Me(u(L(H(n.qb), 6), 35), Be, A(T(fn, 1), J, 2, 6, [vs, ZS, Qe, wK, nP, Yy])); + } + function $e(n) { + return An("_UI_EMFDiagnostic_marker", n) ? "EMF Problem" : An("_UI_CircularContainment_diagnostic", n) ? "An object may not circularly contain itself" : An(SWn, n) ? "Wrong character." : An(PWn, n) ? "Invalid reference number." : An(qS, n) ? "A character is required after \\." : An(jK, n) ? "'?' is not expected. '(?:' or '(?=' or '(?!' or '(?<' or '(?#' or '(?>'?" : An(IWn, n) ? "'(?<' or '(? toIndex: ", Ptn = ", toIndex: ", Itn = "Index: ", Otn = ", Size: ", Hm = "org.eclipse.elk.alg.common", Ne = { 50: 1 }, Zzn = "org.eclipse.elk.alg.common.compaction", nXn = "Scanline/EventHandler", zh = "org.eclipse.elk.alg.common.compaction.oned", eXn = "CNode belongs to another CGroup.", tXn = "ISpacingsHandler/1", FB = "The ", BB = " instance has been finished already.", iXn = "The direction ", rXn = " is not supported by the CGraph instance.", cXn = "OneDimensionalCompactor", uXn = "OneDimensionalCompactor/lambda$0$Type", oXn = "Quadruplet", sXn = "ScanlineConstraintCalculator", fXn = "ScanlineConstraintCalculator/ConstraintsScanlineHandler", hXn = "ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type", lXn = "ScanlineConstraintCalculator/Timestamp", aXn = "ScanlineConstraintCalculator/lambda$0$Type", ph = { 178: 1, 46: 1 }, RB = "org.eclipse.elk.alg.common.compaction.options", oc = "org.eclipse.elk.core.data", Dtn = "org.eclipse.elk.polyomino.traversalStrategy", Ltn = "org.eclipse.elk.polyomino.lowLevelSort", Ntn = "org.eclipse.elk.polyomino.highLevelSort", $tn = "org.eclipse.elk.polyomino.fill", ms = { 134: 1 }, KB = "polyomino", Z5 = "org.eclipse.elk.alg.common.networksimplex", Xh = { 183: 1, 3: 1, 4: 1 }, dXn = "org.eclipse.elk.alg.common.nodespacing", kd = "org.eclipse.elk.alg.common.nodespacing.cellsystem", qm = "CENTER", bXn = { 217: 1, 336: 1 }, xtn = { 3: 1, 4: 1, 5: 1, 603: 1 }, s3 = "LEFT", f3 = "RIGHT", Ftn = "Vertical alignment cannot be null", Btn = "BOTTOM", nS = "org.eclipse.elk.alg.common.nodespacing.internal", n8 = "UNDEFINED", _f = 0.01, Oy = "org.eclipse.elk.alg.common.nodespacing.internal.algorithm", wXn = "LabelPlacer/lambda$0$Type", gXn = "LabelPlacer/lambda$1$Type", pXn = "portRatioOrPosition", Um = "org.eclipse.elk.alg.common.overlaps", _B = "DOWN", mh = "org.eclipse.elk.alg.common.polyomino", eS = "NORTH", HB = "EAST", qB = "SOUTH", UB = "WEST", tS = "org.eclipse.elk.alg.common.polyomino.structures", Rtn = "Direction", GB = "Grid is only of size ", zB = ". Requested point (", XB = ") is out of bounds.", iS = " Given center based coordinates were (", Dy = "org.eclipse.elk.graph.properties", mXn = "IPropertyHolder", Ktn = { 3: 1, 96: 1, 137: 1 }, h3 = "org.eclipse.elk.alg.common.spore", vXn = "org.eclipse.elk.alg.common.utils", yd = { 205: 1 }, e2 = "org.eclipse.elk.core", kXn = "Connected Components Compaction", yXn = "org.eclipse.elk.alg.disco", rS = "org.eclipse.elk.alg.disco.graph", VB = "org.eclipse.elk.alg.disco.options", _tn = "CompactionStrategy", Htn = "org.eclipse.elk.disco.componentCompaction.strategy", qtn = "org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm", Utn = "org.eclipse.elk.disco.debug.discoGraph", Gtn = "org.eclipse.elk.disco.debug.discoPolys", jXn = "componentCompaction", jd = "org.eclipse.elk.disco", WB = "org.eclipse.elk.spacing.componentComponent", JB = "org.eclipse.elk.edge.thickness", l3 = "org.eclipse.elk.aspectRatio", W0 = "org.eclipse.elk.padding", t2 = "org.eclipse.elk.alg.disco.transform", QB = 1.5707963267948966, i2 = 17976931348623157e292, kw = { 3: 1, 4: 1, 5: 1, 198: 1 }, EXn = { 3: 1, 6: 1, 4: 1, 5: 1, 100: 1, 115: 1 }, YB = "org.eclipse.elk.alg.force", ztn = "ComponentsProcessor", CXn = "ComponentsProcessor/1", Xtn = "ElkGraphImporter/lambda$0$Type", Ly = "org.eclipse.elk.alg.force.graph", MXn = "Component Layout", Vtn = "org.eclipse.elk.alg.force.model", cS = "org.eclipse.elk.force.model", Wtn = "org.eclipse.elk.force.iterations", Jtn = "org.eclipse.elk.force.repulsivePower", ZB = "org.eclipse.elk.force.temperature", vh = 1e-3, nR = "org.eclipse.elk.force.repulsion", e8 = "org.eclipse.elk.alg.force.options", Gm = 1.600000023841858, uu = "org.eclipse.elk.force", Ny = "org.eclipse.elk.priority", yw = "org.eclipse.elk.spacing.nodeNode", eR = "org.eclipse.elk.spacing.edgeLabel", uS = "org.eclipse.elk.randomSeed", t8 = "org.eclipse.elk.separateConnectedComponents", i8 = "org.eclipse.elk.interactive", tR = "org.eclipse.elk.portConstraints", oS = "org.eclipse.elk.edgeLabels.inline", r8 = "org.eclipse.elk.omitNodeMicroLayout", zm = "org.eclipse.elk.nodeSize.fixedGraphSize", a3 = "org.eclipse.elk.nodeSize.options", r2 = "org.eclipse.elk.nodeSize.constraints", Xm = "org.eclipse.elk.nodeLabels.placement", Vm = "org.eclipse.elk.portLabels.placement", $y = "org.eclipse.elk.topdownLayout", xy = "org.eclipse.elk.topdown.scaleFactor", Fy = "org.eclipse.elk.topdown.hierarchicalNodeWidth", By = "org.eclipse.elk.topdown.hierarchicalNodeAspectRatio", J0 = "org.eclipse.elk.topdown.nodeType", Qtn = "origin", TXn = "random", AXn = "boundingBox.upLeft", SXn = "boundingBox.lowRight", Ytn = "org.eclipse.elk.stress.fixed", Ztn = "org.eclipse.elk.stress.desiredEdgeLength", nin = "org.eclipse.elk.stress.dimension", ein = "org.eclipse.elk.stress.epsilon", tin = "org.eclipse.elk.stress.iterationLimit", la = "org.eclipse.elk.stress", PXn = "ELK Stress", d3 = "org.eclipse.elk.nodeSize.minimum", sS = "org.eclipse.elk.alg.force.stress", IXn = "Layered layout", b3 = "org.eclipse.elk.alg.layered", Ry = "org.eclipse.elk.alg.layered.compaction.components", c8 = "org.eclipse.elk.alg.layered.compaction.oned", fS = "org.eclipse.elk.alg.layered.compaction.oned.algs", Ed = "org.eclipse.elk.alg.layered.compaction.recthull", Hf = "org.eclipse.elk.alg.layered.components", kh = "NONE", iin = "MODEL_ORDER", Tc = { 3: 1, 6: 1, 4: 1, 9: 1, 5: 1, 126: 1 }, OXn = { 3: 1, 6: 1, 4: 1, 5: 1, 150: 1, 100: 1, 115: 1 }, hS = "org.eclipse.elk.alg.layered.compound", vt = { 47: 1 }, Rc = "org.eclipse.elk.alg.layered.graph", iR = " -> ", DXn = "Not supported by LGraph", rin = "Port side is undefined", rR = { 3: 1, 6: 1, 4: 1, 5: 1, 483: 1, 150: 1, 100: 1, 115: 1 }, b1 = { 3: 1, 6: 1, 4: 1, 5: 1, 150: 1, 199: 1, 210: 1, 100: 1, 115: 1 }, LXn = { 3: 1, 6: 1, 4: 1, 5: 1, 150: 1, 2042: 1, 210: 1, 100: 1, 115: 1 }, NXn = `([{"' \r +`, $Xn = `)]}"' \r +`, xXn = "The given string contains parts that cannot be parsed as numbers.", Ky = "org.eclipse.elk.core.math", FXn = { 3: 1, 4: 1, 140: 1, 214: 1, 423: 1 }, BXn = { 3: 1, 4: 1, 107: 1, 214: 1, 423: 1 }, w1 = "org.eclipse.elk.alg.layered.graph.transform", RXn = "ElkGraphImporter", KXn = "ElkGraphImporter/lambda$1$Type", _Xn = "ElkGraphImporter/lambda$2$Type", HXn = "ElkGraphImporter/lambda$4$Type", Qn = "org.eclipse.elk.alg.layered.intermediate", qXn = "Node margin calculation", UXn = "ONE_SIDED_GREEDY_SWITCH", GXn = "TWO_SIDED_GREEDY_SWITCH", cR = "No implementation is available for the layout processor ", uR = "IntermediateProcessorStrategy", oR = "Node '", zXn = "FIRST_SEPARATE", XXn = "LAST_SEPARATE", VXn = "Odd port side processing", di = "org.eclipse.elk.alg.layered.intermediate.compaction", u8 = "org.eclipse.elk.alg.layered.intermediate.greedyswitch", Vh = "org.eclipse.elk.alg.layered.p3order.counting", _y = { 230: 1 }, w3 = "org.eclipse.elk.alg.layered.intermediate.loops", Io = "org.eclipse.elk.alg.layered.intermediate.loops.ordering", aa = "org.eclipse.elk.alg.layered.intermediate.loops.routing", cin = "org.eclipse.elk.alg.layered.intermediate.preserveorder", yh = "org.eclipse.elk.alg.layered.intermediate.wrapping", Ac = "org.eclipse.elk.alg.layered.options", sR = "INTERACTIVE", uin = "GREEDY", WXn = "DEPTH_FIRST", JXn = "EDGE_LENGTH", QXn = "SELF_LOOPS", YXn = "firstTryWithInitialOrder", oin = "org.eclipse.elk.layered.directionCongruency", sin = "org.eclipse.elk.layered.feedbackEdges", lS = "org.eclipse.elk.layered.interactiveReferencePoint", fin = "org.eclipse.elk.layered.mergeEdges", hin = "org.eclipse.elk.layered.mergeHierarchyEdges", lin = "org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides", ain = "org.eclipse.elk.layered.portSortingStrategy", din = "org.eclipse.elk.layered.thoroughness", bin = "org.eclipse.elk.layered.unnecessaryBendpoints", win = "org.eclipse.elk.layered.generatePositionAndLayerIds", fR = "org.eclipse.elk.layered.cycleBreaking.strategy", Hy = "org.eclipse.elk.layered.layering.strategy", gin = "org.eclipse.elk.layered.layering.layerConstraint", pin = "org.eclipse.elk.layered.layering.layerChoiceConstraint", min = "org.eclipse.elk.layered.layering.layerId", hR = "org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth", lR = "org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor", aR = "org.eclipse.elk.layered.layering.nodePromotion.strategy", dR = "org.eclipse.elk.layered.layering.nodePromotion.maxIterations", bR = "org.eclipse.elk.layered.layering.coffmanGraham.layerBound", o8 = "org.eclipse.elk.layered.crossingMinimization.strategy", vin = "org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder", wR = "org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness", gR = "org.eclipse.elk.layered.crossingMinimization.semiInteractive", kin = "org.eclipse.elk.layered.crossingMinimization.inLayerPredOf", yin = "org.eclipse.elk.layered.crossingMinimization.inLayerSuccOf", jin = "org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint", Ein = "org.eclipse.elk.layered.crossingMinimization.positionId", Cin = "org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold", pR = "org.eclipse.elk.layered.crossingMinimization.greedySwitch.type", aS = "org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type", c2 = "org.eclipse.elk.layered.nodePlacement.strategy", dS = "org.eclipse.elk.layered.nodePlacement.favorStraightEdges", mR = "org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening", vR = "org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment", kR = "org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening", yR = "org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility", jR = "org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default", Min = "org.eclipse.elk.layered.edgeRouting.selfLoopDistribution", Tin = "org.eclipse.elk.layered.edgeRouting.selfLoopOrdering", bS = "org.eclipse.elk.layered.edgeRouting.splines.mode", wS = "org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor", ER = "org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth", Ain = "org.eclipse.elk.layered.spacing.baseValue", Sin = "org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers", Pin = "org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers", Iin = "org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers", Oin = "org.eclipse.elk.layered.priority.direction", Din = "org.eclipse.elk.layered.priority.shortness", Lin = "org.eclipse.elk.layered.priority.straightness", CR = "org.eclipse.elk.layered.compaction.connectedComponents", Nin = "org.eclipse.elk.layered.compaction.postCompaction.strategy", $in = "org.eclipse.elk.layered.compaction.postCompaction.constraints", gS = "org.eclipse.elk.layered.highDegreeNodes.treatment", MR = "org.eclipse.elk.layered.highDegreeNodes.threshold", TR = "org.eclipse.elk.layered.highDegreeNodes.treeHeight", Ol = "org.eclipse.elk.layered.wrapping.strategy", pS = "org.eclipse.elk.layered.wrapping.additionalEdgeSpacing", mS = "org.eclipse.elk.layered.wrapping.correctionFactor", s8 = "org.eclipse.elk.layered.wrapping.cutting.strategy", AR = "org.eclipse.elk.layered.wrapping.cutting.cuts", SR = "org.eclipse.elk.layered.wrapping.cutting.msd.freedom", vS = "org.eclipse.elk.layered.wrapping.validify.strategy", kS = "org.eclipse.elk.layered.wrapping.validify.forbiddenIndices", yS = "org.eclipse.elk.layered.wrapping.multiEdge.improveCuts", jS = "org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty", PR = "org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges", xin = "org.eclipse.elk.layered.edgeLabels.sideSelection", Fin = "org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy", ES = "org.eclipse.elk.layered.considerModelOrder.strategy", Bin = "org.eclipse.elk.layered.considerModelOrder.portModelOrder", Rin = "org.eclipse.elk.layered.considerModelOrder.noModelOrder", IR = "org.eclipse.elk.layered.considerModelOrder.components", Kin = "org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy", OR = "org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence", DR = "org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence", LR = "layering", ZXn = "layering.minWidth", nVn = "layering.nodePromotion", Wm = "crossingMinimization", CS = "org.eclipse.elk.hierarchyHandling", eVn = "crossingMinimization.greedySwitch", tVn = "nodePlacement", iVn = "nodePlacement.bk", rVn = "edgeRouting", qy = "org.eclipse.elk.edgeRouting", qf = "spacing", _in = "priority", Hin = "compaction", cVn = "compaction.postCompaction", uVn = "Specifies whether and how post-process compaction is applied.", qin = "highDegreeNodes", Uin = "wrapping", oVn = "wrapping.cutting", sVn = "wrapping.validify", Gin = "wrapping.multiEdge", NR = "edgeLabels", f8 = "considerModelOrder", zin = "org.eclipse.elk.spacing.commentComment", Xin = "org.eclipse.elk.spacing.commentNode", Vin = "org.eclipse.elk.spacing.edgeEdge", $R = "org.eclipse.elk.spacing.edgeNode", Win = "org.eclipse.elk.spacing.labelLabel", Jin = "org.eclipse.elk.spacing.labelPortHorizontal", Qin = "org.eclipse.elk.spacing.labelPortVertical", Yin = "org.eclipse.elk.spacing.labelNode", Zin = "org.eclipse.elk.spacing.nodeSelfLoop", nrn = "org.eclipse.elk.spacing.portPort", ern = "org.eclipse.elk.spacing.individual", trn = "org.eclipse.elk.port.borderOffset", irn = "org.eclipse.elk.noLayout", rrn = "org.eclipse.elk.port.side", Uy = "org.eclipse.elk.debugMode", crn = "org.eclipse.elk.alignment", urn = "org.eclipse.elk.insideSelfLoops.activate", orn = "org.eclipse.elk.insideSelfLoops.yo", xR = "org.eclipse.elk.direction", srn = "org.eclipse.elk.nodeLabels.padding", frn = "org.eclipse.elk.portLabels.nextToPortIfPossible", hrn = "org.eclipse.elk.portLabels.treatAsGroup", lrn = "org.eclipse.elk.portAlignment.default", arn = "org.eclipse.elk.portAlignment.north", drn = "org.eclipse.elk.portAlignment.south", brn = "org.eclipse.elk.portAlignment.west", wrn = "org.eclipse.elk.portAlignment.east", MS = "org.eclipse.elk.contentAlignment", grn = "org.eclipse.elk.junctionPoints", prn = "org.eclipse.elk.edgeLabels.placement", mrn = "org.eclipse.elk.port.index", vrn = "org.eclipse.elk.commentBox", krn = "org.eclipse.elk.hypernode", yrn = "org.eclipse.elk.port.anchor", FR = "org.eclipse.elk.partitioning.activate", BR = "org.eclipse.elk.partitioning.partition", TS = "org.eclipse.elk.position", jrn = "org.eclipse.elk.margins", Ern = "org.eclipse.elk.spacing.portsSurrounding", AS = "org.eclipse.elk.interactiveLayout", dc = "org.eclipse.elk.core.util", Crn = { 3: 1, 4: 1, 5: 1, 601: 1 }, fVn = "NETWORK_SIMPLEX", Mrn = "SIMPLE", kr = { 106: 1, 47: 1 }, SS = "org.eclipse.elk.alg.layered.p1cycles", Dl = "org.eclipse.elk.alg.layered.p2layers", Trn = { 413: 1, 230: 1 }, hVn = { 846: 1, 3: 1, 4: 1 }, $u = "org.eclipse.elk.alg.layered.p3order", yr = "org.eclipse.elk.alg.layered.p4nodes", lVn = { 3: 1, 4: 1, 5: 1, 854: 1 }, jh = 1e-5, da = "org.eclipse.elk.alg.layered.p4nodes.bk", RR = "org.eclipse.elk.alg.layered.p5edges", mf = "org.eclipse.elk.alg.layered.p5edges.orthogonal", KR = "org.eclipse.elk.alg.layered.p5edges.orthogonal.direction", _R = 1e-6, jw = "org.eclipse.elk.alg.layered.p5edges.splines", HR = 0.09999999999999998, PS = 1e-8, aVn = 4.71238898038469, Arn = 3.141592653589793, Ll = "org.eclipse.elk.alg.mrtree", qR = 0.10000000149011612, IS = "SUPER_ROOT", h8 = "org.eclipse.elk.alg.mrtree.graph", Srn = -17976931348623157e292, Kc = "org.eclipse.elk.alg.mrtree.intermediate", dVn = "Processor compute fanout", OS = { 3: 1, 6: 1, 4: 1, 5: 1, 534: 1, 100: 1, 115: 1 }, bVn = "Set neighbors in level", Gy = "org.eclipse.elk.alg.mrtree.options", wVn = "DESCENDANTS", Prn = "org.eclipse.elk.mrtree.compaction", Irn = "org.eclipse.elk.mrtree.edgeEndTextureLength", Orn = "org.eclipse.elk.mrtree.treeLevel", Drn = "org.eclipse.elk.mrtree.positionConstraint", Lrn = "org.eclipse.elk.mrtree.weighting", Nrn = "org.eclipse.elk.mrtree.edgeRoutingMode", $rn = "org.eclipse.elk.mrtree.searchOrder", gVn = "Position Constraint", ou = "org.eclipse.elk.mrtree", pVn = "org.eclipse.elk.tree", mVn = "Processor arrange level", Jm = "org.eclipse.elk.alg.mrtree.p2order", po = "org.eclipse.elk.alg.mrtree.p4route", xrn = "org.eclipse.elk.alg.radial", Cd = 6.283185307179586, Frn = "Before", Brn = 5e-324, DS = "After", Rrn = "org.eclipse.elk.alg.radial.intermediate", vVn = "COMPACTION", UR = "org.eclipse.elk.alg.radial.intermediate.compaction", kVn = { 3: 1, 4: 1, 5: 1, 100: 1 }, Krn = "org.eclipse.elk.alg.radial.intermediate.optimization", GR = "No implementation is available for the layout option ", l8 = "org.eclipse.elk.alg.radial.options", _rn = "org.eclipse.elk.radial.centerOnRoot", Hrn = "org.eclipse.elk.radial.orderId", qrn = "org.eclipse.elk.radial.radius", LS = "org.eclipse.elk.radial.rotate", zR = "org.eclipse.elk.radial.compactor", XR = "org.eclipse.elk.radial.compactionStepSize", Urn = "org.eclipse.elk.radial.sorter", Grn = "org.eclipse.elk.radial.wedgeCriteria", zrn = "org.eclipse.elk.radial.optimizationCriteria", VR = "org.eclipse.elk.radial.rotation.targetAngle", WR = "org.eclipse.elk.radial.rotation.computeAdditionalWedgeSpace", Xrn = "org.eclipse.elk.radial.rotation.outgoingEdgeAngles", yVn = "Compaction", Vrn = "rotation", es = "org.eclipse.elk.radial", jVn = "org.eclipse.elk.alg.radial.p1position.wedge", Wrn = "org.eclipse.elk.alg.radial.sorting", EVn = 5.497787143782138, CVn = 3.9269908169872414, MVn = 2.356194490192345, TVn = "org.eclipse.elk.alg.rectpacking", NS = "org.eclipse.elk.alg.rectpacking.intermediate", JR = "org.eclipse.elk.alg.rectpacking.options", Jrn = "org.eclipse.elk.rectpacking.trybox", Qrn = "org.eclipse.elk.rectpacking.currentPosition", Yrn = "org.eclipse.elk.rectpacking.desiredPosition", Zrn = "org.eclipse.elk.rectpacking.inNewRow", ncn = "org.eclipse.elk.rectpacking.widthApproximation.strategy", ecn = "org.eclipse.elk.rectpacking.widthApproximation.targetWidth", tcn = "org.eclipse.elk.rectpacking.widthApproximation.optimizationGoal", icn = "org.eclipse.elk.rectpacking.widthApproximation.lastPlaceShift", rcn = "org.eclipse.elk.rectpacking.packing.strategy", ccn = "org.eclipse.elk.rectpacking.packing.compaction.rowHeightReevaluation", ucn = "org.eclipse.elk.rectpacking.packing.compaction.iterations", ocn = "org.eclipse.elk.rectpacking.whiteSpaceElimination.strategy", QR = "widthApproximation", AVn = "Compaction Strategy", SVn = "packing.compaction", co = "org.eclipse.elk.rectpacking", Qm = "org.eclipse.elk.alg.rectpacking.p1widthapproximation", $S = "org.eclipse.elk.alg.rectpacking.p2packing", PVn = "No Compaction", scn = "org.eclipse.elk.alg.rectpacking.p3whitespaceelimination", zy = "org.eclipse.elk.alg.rectpacking.util", xS = "No implementation available for ", Ew = "org.eclipse.elk.alg.spore", Cw = "org.eclipse.elk.alg.spore.options", Q0 = "org.eclipse.elk.sporeCompaction", YR = "org.eclipse.elk.underlyingLayoutAlgorithm", fcn = "org.eclipse.elk.processingOrder.treeConstruction", hcn = "org.eclipse.elk.processingOrder.spanningTreeCostFunction", ZR = "org.eclipse.elk.processingOrder.preferredRoot", nK = "org.eclipse.elk.processingOrder.rootSelection", eK = "org.eclipse.elk.structure.structureExtractionStrategy", lcn = "org.eclipse.elk.compaction.compactionStrategy", acn = "org.eclipse.elk.compaction.orthogonal", dcn = "org.eclipse.elk.overlapRemoval.maxIterations", bcn = "org.eclipse.elk.overlapRemoval.runScanline", tK = "processingOrder", IVn = "overlapRemoval", Ym = "org.eclipse.elk.sporeOverlap", OVn = "org.eclipse.elk.alg.spore.p1structure", iK = "org.eclipse.elk.alg.spore.p2processingorder", rK = "org.eclipse.elk.alg.spore.p3execution", DVn = "Topdown Layout", LVn = "Invalid index: ", Zm = "org.eclipse.elk.core.alg", u2 = { 341: 1 }, Mw = { 295: 1 }, NVn = "Make sure its type is registered with the ", wcn = " utility class.", nv = "true", cK = "false", $Vn = "Couldn't clone property '", Y0 = 0.05, uo = "org.eclipse.elk.core.options", xVn = 1.2999999523162842, Z0 = "org.eclipse.elk.box", gcn = "org.eclipse.elk.expandNodes", pcn = "org.eclipse.elk.box.packingMode", FVn = "org.eclipse.elk.algorithm", BVn = "org.eclipse.elk.resolvedAlgorithm", mcn = "org.eclipse.elk.bendPoints", rNe = "org.eclipse.elk.labelManager", RVn = "org.eclipse.elk.scaleFactor", KVn = "org.eclipse.elk.childAreaWidth", _Vn = "org.eclipse.elk.childAreaHeight", HVn = "org.eclipse.elk.animate", qVn = "org.eclipse.elk.animTimeFactor", UVn = "org.eclipse.elk.layoutAncestors", GVn = "org.eclipse.elk.maxAnimTime", zVn = "org.eclipse.elk.minAnimTime", XVn = "org.eclipse.elk.progressBar", VVn = "org.eclipse.elk.validateGraph", WVn = "org.eclipse.elk.validateOptions", JVn = "org.eclipse.elk.zoomToFit", cNe = "org.eclipse.elk.font.name", QVn = "org.eclipse.elk.font.size", vcn = "org.eclipse.elk.topdown.sizeApproximator", kcn = "org.eclipse.elk.topdown.scaleCap", YVn = "org.eclipse.elk.edge.type", ZVn = "partitioning", nWn = "nodeLabels", FS = "portAlignment", uK = "nodeSize", oK = "port", ycn = "portLabels", Xy = "topdown", eWn = "insideSelfLoops", a8 = "org.eclipse.elk.fixed", BS = "org.eclipse.elk.random", jcn = { 3: 1, 34: 1, 22: 1, 347: 1 }, tWn = "port must have a parent node to calculate the port side", iWn = "The edge needs to have exactly one edge section. Found: ", d8 = "org.eclipse.elk.core.util.adapters", ts = "org.eclipse.emf.ecore", o2 = "org.eclipse.elk.graph", rWn = "EMapPropertyHolder", cWn = "ElkBendPoint", uWn = "ElkGraphElement", oWn = "ElkConnectableShape", Ecn = "ElkEdge", sWn = "ElkEdgeSection", fWn = "EModelElement", hWn = "ENamedElement", Ccn = "ElkLabel", Mcn = "ElkNode", Tcn = "ElkPort", lWn = { 94: 1, 93: 1 }, g3 = "org.eclipse.emf.common.notify.impl", ba = "The feature '", b8 = "' is not a valid changeable feature", aWn = "Expecting null", sK = "' is not a valid feature", dWn = "The feature ID", bWn = " is not a valid feature ID", yc = 32768, wWn = { 110: 1, 94: 1, 93: 1, 58: 1, 54: 1, 99: 1 }, qn = "org.eclipse.emf.ecore.impl", Md = "org.eclipse.elk.graph.impl", w8 = "Recursive containment not allowed for ", ev = "The datatype '", nb = "' is not a valid classifier", fK = "The value '", s2 = { 195: 1, 3: 1, 4: 1 }, hK = "The class '", tv = "http://www.eclipse.org/elk/ElkGraph", Acn = "property", g8 = "value", lK = "source", gWn = "properties", pWn = "identifier", aK = "height", dK = "width", bK = "parent", wK = "text", gK = "children", mWn = "hierarchical", Scn = "sources", pK = "targets", Pcn = "sections", RS = "bendPoints", Icn = "outgoingShape", Ocn = "incomingShape", Dcn = "outgoingSections", Lcn = "incomingSections", or = "org.eclipse.emf.common.util", Ncn = "Severe implementation error in the Json to ElkGraph importer.", Eh = "id", Ui = "org.eclipse.elk.graph.json", $cn = "Unhandled parameter types: ", vWn = "startPoint", kWn = "An edge must have at least one source and one target (edge id: '", iv = "').", yWn = "Referenced edge section does not exist: ", jWn = " (edge id: '", xcn = "target", EWn = "sourcePoint", CWn = "targetPoint", KS = "group", Qe = "name", MWn = "connectableShape cannot be null", TWn = "edge cannot be null", mK = "Passed edge is not 'simple'.", _S = "org.eclipse.elk.graph.util", Vy = "The 'no duplicates' constraint is violated", vK = "targetIndex=", Td = ", size=", kK = "sourceIndex=", Ch = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 59: 1, 70: 1, 66: 1, 61: 1 }, yK = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 51: 1, 15: 1, 59: 1, 70: 1, 66: 1, 61: 1, 596: 1 }, HS = "logging", AWn = "measureExecutionTime", SWn = "parser.parse.1", PWn = "parser.parse.2", qS = "parser.next.1", jK = "parser.next.2", IWn = "parser.next.3", OWn = "parser.next.4", Ad = "parser.factor.1", Fcn = "parser.factor.2", DWn = "parser.factor.3", LWn = "parser.factor.4", NWn = "parser.factor.5", $Wn = "parser.factor.6", xWn = "parser.atom.1", FWn = "parser.atom.2", BWn = "parser.atom.3", Bcn = "parser.atom.4", EK = "parser.atom.5", Rcn = "parser.cc.1", US = "parser.cc.2", RWn = "parser.cc.3", KWn = "parser.cc.5", Kcn = "parser.cc.6", _cn = "parser.cc.7", CK = "parser.cc.8", _Wn = "parser.ope.1", HWn = "parser.ope.2", qWn = "parser.ope.3", g1 = "parser.descape.1", UWn = "parser.descape.2", GWn = "parser.descape.3", zWn = "parser.descape.4", XWn = "parser.descape.5", is = "parser.process.1", VWn = "parser.quantifier.1", WWn = "parser.quantifier.2", JWn = "parser.quantifier.3", QWn = "parser.quantifier.4", Hcn = "parser.quantifier.5", YWn = "org.eclipse.emf.common.notify", qcn = { 424: 1, 686: 1 }, ZWn = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 70: 1, 61: 1 }, Wy = { 378: 1, 152: 1 }, p8 = "index=", MK = { 3: 1, 4: 1, 5: 1, 129: 1 }, nJn = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 59: 1, 70: 1, 61: 1 }, Ucn = { 3: 1, 6: 1, 4: 1, 5: 1, 198: 1 }, eJn = { 3: 1, 4: 1, 5: 1, 173: 1, 379: 1 }, tJn = ";/?:@&=+$,", iJn = "invalid authority: ", rJn = "EAnnotation", cJn = "ETypedElement", uJn = "EStructuralFeature", oJn = "EAttribute", sJn = "EClassifier", fJn = "EEnumLiteral", hJn = "EGenericType", lJn = "EOperation", aJn = "EParameter", dJn = "EReference", bJn = "ETypeParameter", Tt = "org.eclipse.emf.ecore.util", TK = { 79: 1 }, Gcn = { 3: 1, 20: 1, 16: 1, 15: 1, 61: 1, 597: 1, 79: 1, 71: 1, 97: 1 }, wJn = "org.eclipse.emf.ecore.util.FeatureMap$Entry", xu = 8192, Tw = 2048, m8 = "byte", GS = "char", v8 = "double", k8 = "float", y8 = "int", j8 = "long", E8 = "short", gJn = "java.lang.Object", f2 = { 3: 1, 4: 1, 5: 1, 254: 1 }, zcn = { 3: 1, 4: 1, 5: 1, 688: 1 }, pJn = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 59: 1, 70: 1, 66: 1, 61: 1, 71: 1 }, Qr = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 59: 1, 70: 1, 66: 1, 61: 1, 79: 1, 71: 1, 97: 1 }, Jy = "mixed", Be = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData", vs = "kind", mJn = { 3: 1, 4: 1, 5: 1, 689: 1 }, Xcn = { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 70: 1, 61: 1, 79: 1, 71: 1, 97: 1 }, zS = { 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 61: 1, 71: 1 }, XS = { 51: 1, 128: 1, 287: 1 }, VS = { 76: 1, 343: 1 }, WS = "The value of type '", JS = "' must be of type '", h2 = 1352, ks = "http://www.eclipse.org/emf/2002/Ecore", QS = -32768, eb = "constraints", Ji = "baseType", vJn = "getEStructuralFeature", kJn = "getFeatureID", C8 = "feature", yJn = "getOperationID", Vcn = "operation", jJn = "defaultValue", EJn = "eTypeParameters", CJn = "isInstance", MJn = "getEEnumLiteral", TJn = "eContainingClass", ze = { 57: 1 }, AJn = { 3: 1, 4: 1, 5: 1, 124: 1 }, SJn = "org.eclipse.emf.ecore.resource", PJn = { 94: 1, 93: 1, 599: 1, 2034: 1 }, AK = "org.eclipse.emf.ecore.resource.impl", Wcn = "unspecified", Qy = "simple", YS = "attribute", IJn = "attributeWildcard", ZS = "element", SK = "elementWildcard", vf = "collapse", PK = "itemType", nP = "namespace", Yy = "##targetNamespace", ys = "whiteSpace", Jcn = "wildcards", Sd = "http://www.eclipse.org/emf/2003/XMLType", IK = "##any", rv = "uninitialized", Zy = "The multiplicity constraint is violated", eP = "org.eclipse.emf.ecore.xml.type", OJn = "ProcessingInstruction", DJn = "SimpleAnyType", LJn = "XMLTypeDocumentRoot", oi = "org.eclipse.emf.ecore.xml.type.impl", nj = "INF", NJn = "processing", $Jn = "ENTITIES_._base", Qcn = "minLength", Ycn = "ENTITY", tP = "NCName", xJn = "IDREFS_._base", Zcn = "integer", OK = "token", DK = "pattern", FJn = "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*", nun = "\\i\\c*", BJn = "[\\i-[:]][\\c-[:]]*", RJn = "nonPositiveInteger", ej = "maxInclusive", eun = "NMTOKEN", KJn = "NMTOKENS_._base", tun = "nonNegativeInteger", tj = "minInclusive", _Jn = "normalizedString", HJn = "unsignedByte", qJn = "unsignedInt", UJn = "18446744073709551615", GJn = "unsignedShort", zJn = "processingInstruction", p1 = "org.eclipse.emf.ecore.xml.type.internal", cv = 1114111, XJn = "Internal Error: shorthands: \\u", M8 = "xml:isDigit", LK = "xml:isWord", NK = "xml:isSpace", $K = "xml:isNameChar", xK = "xml:isInitialNameChar", VJn = "09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩", WJn = "AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣", JJn = "Private Use", FK = "ASSIGNED", BK = "\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯", iun = "UNASSIGNED", uv = { 3: 1, 122: 1 }, QJn = "org.eclipse.emf.ecore.xml.type.util", iP = { 3: 1, 4: 1, 5: 1, 381: 1 }, run = "org.eclipse.xtext.xbase.lib", YJn = "Cannot add elements to a Range", ZJn = "Cannot set elements in a Range", nQn = "Cannot remove elements from a Range", eQn = "user.agent", o, rP, RK; + y.goog = y.goog || {}, y.goog.global = y.goog.global || y, rP = {}, b(1, null, {}, mc), o.Fb = function(e) { + return ZMn(this, e); + }, o.Gb = function() { + return this.Rm; + }, o.Hb = function() { + return l0(this); + }, o.Ib = function() { + var e; + return Xa(wo(this)) + "@" + (e = mt(this) >>> 0, e.toString(16)); + }, o.equals = function(n) { + return this.Fb(n); + }, o.hashCode = function() { + return this.Hb(); + }, o.toString = function() { + return this.Ib(); + }; + var tQn, iQn, rQn; + b(297, 1, { 297: 1, 2124: 1 }, ZQ), o.ve = function(e) { + var t; + return t = new ZQ(), t.i = 4, e > 1 ? t.c = yOn(this, e - 1) : t.c = this, t; + }, o.we = function() { + return ll(this), this.b; + }, o.xe = function() { + return Xa(this); + }, o.ye = function() { + return ll(this), this.k; + }, o.ze = function() { + return (this.i & 4) != 0; + }, o.Ae = function() { + return (this.i & 1) != 0; + }, o.Ib = function() { + return hQ(this); + }, o.i = 0; + var ki = w(ac, "Object", 1), cun = w(ac, "Class", 297); + b(2096, 1, ky), w(yy, "Optional", 2096), b(1191, 2096, ky, $t), o.Fb = function(e) { + return e === this; + }, o.Hb = function() { + return 2040732332; + }, o.Ib = function() { + return "Optional.absent()"; + }, o.Jb = function(e) { + return Se(e), Zv(), KK; + }; + var KK; + w(yy, "Absent", 1191), b(636, 1, {}, yD), w(yy, "Joiner", 636); + var uNe = xt(yy, "Predicate"); + b(589, 1, { 178: 1, 589: 1, 3: 1, 46: 1 }, S8n), o.Mb = function(e) { + return yFn(this, e); + }, o.Lb = function(e) { + return yFn(this, e); + }, o.Fb = function(e) { + var t; + return D(e, 589) ? (t = u(e, 589), Jnn(this.a, t.a)) : !1; + }, o.Hb = function() { + return cY(this.a) + 306654252; + }, o.Ib = function() { + return zje(this.a); + }, w(yy, "Predicates/AndPredicate", 589), b(419, 2096, { 419: 1, 3: 1 }, TE), o.Fb = function(e) { + var t; + return D(e, 419) ? (t = u(e, 419), ct(this.a, t.a)) : !1; + }, o.Hb = function() { + return 1502476572 + mt(this.a); + }, o.Ib = function() { + return Pzn + this.a + ")"; + }, o.Jb = function(e) { + return new TE(TM(e.Kb(this.a), "the Function passed to Optional.transform() must not return null.")); + }, w(yy, "Present", 419), b(204, 1, $m), o.Nb = function(e) { + _i(this, e); + }, o.Qb = function() { + Hjn(); + }, w(Cn, "UnmodifiableIterator", 204), b(2076, 204, xm), o.Qb = function() { + Hjn(); + }, o.Rb = function(e) { + throw M(new Pe()); + }, o.Wb = function(e) { + throw M(new Pe()); + }, w(Cn, "UnmodifiableListIterator", 2076), b(399, 2076, xm), o.Ob = function() { + return this.c < this.d; + }, o.Sb = function() { + return this.c > 0; + }, o.Pb = function() { + if (this.c >= this.d) + throw M(new nc()); + return this.Xb(this.c++); + }, o.Tb = function() { + return this.c; + }, o.Ub = function() { + if (this.c <= 0) + throw M(new nc()); + return this.Xb(--this.c); + }, o.Vb = function() { + return this.c - 1; + }, o.c = 0, o.d = 0, w(Cn, "AbstractIndexedListIterator", 399), b(713, 204, $m), o.Ob = function() { + return E$(this); + }, o.Pb = function() { + return rQ(this); + }, o.e = 1, w(Cn, "AbstractIterator", 713), b(2084, 1, { 229: 1 }), o.Zb = function() { + var e; + return e = this.f, e || (this.f = this.ac()); + }, o.Fb = function(e) { + return G$(this, e); + }, o.Hb = function() { + return mt(this.Zb()); + }, o.dc = function() { + return this.gc() == 0; + }, o.ec = function() { + return Tp(this); + }, o.Ib = function() { + return Jr(this.Zb()); + }, w(Cn, "AbstractMultimap", 2084), b(742, 2084, md), o.$b = function() { + gT(this); + }, o._b = function(e) { + return oEn(this, e); + }, o.ac = function() { + return new h4(this, this.c); + }, o.ic = function(e) { + return this.hc(); + }, o.bc = function() { + return new Mg(this, this.c); + }, o.jc = function() { + return this.mc(this.hc()); + }, o.kc = function() { + return new Tjn(this); + }, o.lc = function() { + return nF(this.c.vc().Nc(), new Xe(), 64, this.d); + }, o.cc = function(e) { + return ot(this, e); + }, o.fc = function(e) { + return Ok(this, e); + }, o.gc = function() { + return this.d; + }, o.mc = function(e) { + return Dn(), new Q3(e); + }, o.nc = function() { + return new Mjn(this); + }, o.oc = function() { + return nF(this.c.Cc().Nc(), new Jt(), 64, this.d); + }, o.pc = function(e, t) { + return new VM(this, e, t, null); + }, o.d = 0, w(Cn, "AbstractMapBasedMultimap", 742), b(1696, 742, md), o.hc = function() { + return new zc(this.a); + }, o.jc = function() { + return Dn(), Dn(), sr; + }, o.cc = function(e) { + return u(ot(this, e), 15); + }, o.fc = function(e) { + return u(Ok(this, e), 15); + }, o.Zb = function() { + return Dp(this); + }, o.Fb = function(e) { + return G$(this, e); + }, o.qc = function(e) { + return u(ot(this, e), 15); + }, o.rc = function(e) { + return u(Ok(this, e), 15); + }, o.mc = function(e) { + return TN(u(e, 15)); + }, o.pc = function(e, t) { + return SDn(this, e, u(t, 15), null); + }, w(Cn, "AbstractListMultimap", 1696), b(748, 1, Pi), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.c.Ob() || this.e.Ob(); + }, o.Pb = function() { + var e; + return this.e.Ob() || (e = u(this.c.Pb(), 44), this.b = e.ld(), this.a = u(e.md(), 16), this.e = this.a.Kc()), this.sc(this.b, this.e.Pb()); + }, o.Qb = function() { + this.e.Qb(), u(as(this.a), 16).dc() && this.c.Qb(), --this.d.d; + }, w(Cn, "AbstractMapBasedMultimap/Itr", 748), b(1129, 748, Pi, Mjn), o.sc = function(e, t) { + return t; + }, w(Cn, "AbstractMapBasedMultimap/1", 1129), b(1130, 1, {}, Jt), o.Kb = function(e) { + return u(e, 16).Nc(); + }, w(Cn, "AbstractMapBasedMultimap/1methodref$spliterator$Type", 1130), b(1131, 748, Pi, Tjn), o.sc = function(e, t) { + return new i0(e, t); + }, w(Cn, "AbstractMapBasedMultimap/2", 1131); + var uun = xt(le, "Map"); + b(2065, 1, X0), o.wc = function(e) { + f5(this, e); + }, o.yc = function(e, t, i) { + return hx(this, e, t, i); + }, o.$b = function() { + this.vc().$b(); + }, o.tc = function(e) { + return xx(this, e); + }, o._b = function(e) { + return !!VZ(this, e, !1); + }, o.uc = function(e) { + var t, i, r; + for (i = this.vc().Kc(); i.Ob(); ) + if (t = u(i.Pb(), 44), r = t.md(), x(e) === x(r) || e != null && ct(e, r)) + return !0; + return !1; + }, o.Fb = function(e) { + var t, i, r; + if (e === this) + return !0; + if (!D(e, 85) || (r = u(e, 85), this.gc() != r.gc())) + return !1; + for (i = r.vc().Kc(); i.Ob(); ) + if (t = u(i.Pb(), 44), !this.tc(t)) + return !1; + return !0; + }, o.xc = function(e) { + return Kr(VZ(this, e, !1)); + }, o.Hb = function() { + return WQ(this.vc()); + }, o.dc = function() { + return this.gc() == 0; + }, o.ec = function() { + return new qa(this); + }, o.zc = function(e, t) { + throw M(new Kl("Put not supported on this map")); + }, o.Ac = function(e) { + s5(this, e); + }, o.Bc = function(e) { + return Kr(VZ(this, e, !0)); + }, o.gc = function() { + return this.vc().gc(); + }, o.Ib = function() { + return LKn(this); + }, o.Cc = function() { + return new ol(this); + }, w(le, "AbstractMap", 2065), b(2085, 2065, X0), o.bc = function() { + return new VE(this); + }, o.vc = function() { + return CPn(this); + }, o.ec = function() { + var e; + return e = this.g, e || (this.g = this.bc()); + }, o.Cc = function() { + var e; + return e = this.i, e || (this.i = new QEn(this)); + }, w(Cn, "Maps/ViewCachingAbstractMap", 2085), b(402, 2085, X0, h4), o.xc = function(e) { + return lme(this, e); + }, o.Bc = function(e) { + return N6e(this, e); + }, o.$b = function() { + this.d == this.e.c ? this.e.$b() : iM(new oW(this)); + }, o._b = function(e) { + return cBn(this.d, e); + }, o.Ec = function() { + return new P8n(this); + }, o.Dc = function() { + return this.Ec(); + }, o.Fb = function(e) { + return this === e || ct(this.d, e); + }, o.Hb = function() { + return mt(this.d); + }, o.ec = function() { + return this.e.ec(); + }, o.gc = function() { + return this.d.gc(); + }, o.Ib = function() { + return Jr(this.d); + }, w(Cn, "AbstractMapBasedMultimap/AsMap", 402); + var Oo = xt(ac, "Iterable"); + b(31, 1, pw), o.Jc = function(e) { + qi(this, e); + }, o.Lc = function() { + return this.Oc(); + }, o.Nc = function() { + return new In(this, 0); + }, o.Oc = function() { + return new Tn(null, this.Nc()); + }, o.Fc = function(e) { + throw M(new Kl("Add not supported on this collection")); + }, o.Gc = function(e) { + return Bi(this, e); + }, o.$b = function() { + XW(this); + }, o.Hc = function(e) { + return iw(this, e, !1); + }, o.Ic = function(e) { + return Ek(this, e); + }, o.dc = function() { + return this.gc() == 0; + }, o.Mc = function(e) { + return iw(this, e, !0); + }, o.Pc = function() { + return pW(this); + }, o.Qc = function(e) { + return A5(this, e); + }, o.Ib = function() { + return ca(this); + }, w(le, "AbstractCollection", 31); + var js = xt(le, "Set"); + b(Kf, 31, Nu), o.Nc = function() { + return new In(this, 1); + }, o.Fb = function(e) { + return JBn(this, e); + }, o.Hb = function() { + return WQ(this); + }, w(le, "AbstractSet", Kf), b(2068, Kf, Nu), w(Cn, "Sets/ImprovedAbstractSet", 2068), b(2069, 2068, Nu), o.$b = function() { + this.Rc().$b(); + }, o.Hc = function(e) { + return NBn(this, e); + }, o.dc = function() { + return this.Rc().dc(); + }, o.Mc = function(e) { + var t; + return this.Hc(e) && D(e, 44) ? (t = u(e, 44), this.Rc().ec().Mc(t.ld())) : !1; + }, o.gc = function() { + return this.Rc().gc(); + }, w(Cn, "Maps/EntrySet", 2069), b(1127, 2069, Nu, P8n), o.Hc = function(e) { + return jY(this.a.d.vc(), e); + }, o.Kc = function() { + return new oW(this.a); + }, o.Rc = function() { + return this.a; + }, o.Mc = function(e) { + var t; + return jY(this.a.d.vc(), e) ? (t = u(as(u(e, 44)), 44), Z3e(this.a.e, t.ld()), !0) : !1; + }, o.Nc = function() { + return N7(this.a.d.vc().Nc(), new I8n(this.a)); + }, w(Cn, "AbstractMapBasedMultimap/AsMap/AsMapEntries", 1127), b(1128, 1, {}, I8n), o.Kb = function(e) { + return TLn(this.a, u(e, 44)); + }, w(Cn, "AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type", 1128), b(746, 1, Pi, oW), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + var e; + return e = u(this.b.Pb(), 44), this.a = u(e.md(), 16), TLn(this.c, e); + }, o.Ob = function() { + return this.b.Ob(); + }, o.Qb = function() { + v4(!!this.a), this.b.Qb(), this.c.e.d -= this.a.gc(), this.a.$b(), this.a = null; + }, w(Cn, "AbstractMapBasedMultimap/AsMap/AsMapIterator", 746), b(542, 2068, Nu, VE), o.$b = function() { + this.b.$b(); + }, o.Hc = function(e) { + return this.b._b(e); + }, o.Jc = function(e) { + Se(e), this.b.wc(new X8n(e)); + }, o.dc = function() { + return this.b.dc(); + }, o.Kc = function() { + return new n6(this.b.vc().Kc()); + }, o.Mc = function(e) { + return this.b._b(e) ? (this.b.Bc(e), !0) : !1; + }, o.gc = function() { + return this.b.gc(); + }, w(Cn, "Maps/KeySet", 542), b(327, 542, Nu, Mg), o.$b = function() { + var e; + iM((e = this.b.vc().Kc(), new Oz(this, e))); + }, o.Ic = function(e) { + return this.b.ec().Ic(e); + }, o.Fb = function(e) { + return this === e || ct(this.b.ec(), e); + }, o.Hb = function() { + return mt(this.b.ec()); + }, o.Kc = function() { + var e; + return e = this.b.vc().Kc(), new Oz(this, e); + }, o.Mc = function(e) { + var t, i; + return i = 0, t = u(this.b.Bc(e), 16), t && (i = t.gc(), t.$b(), this.a.d -= i), i > 0; + }, o.Nc = function() { + return this.b.ec().Nc(); + }, w(Cn, "AbstractMapBasedMultimap/KeySet", 327), b(747, 1, Pi, Oz), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.c.Ob(); + }, o.Pb = function() { + return this.a = u(this.c.Pb(), 44), this.a.ld(); + }, o.Qb = function() { + var e; + v4(!!this.a), e = u(this.a.md(), 16), this.c.Qb(), this.b.a.d -= e.gc(), e.$b(), this.a = null; + }, w(Cn, "AbstractMapBasedMultimap/KeySet/1", 747), b(503, 402, { 85: 1, 133: 1 }, A7), o.bc = function() { + return this.Sc(); + }, o.ec = function() { + return this.Uc(); + }, o.Sc = function() { + return new e7(this.c, this.Wc()); + }, o.Tc = function() { + return this.Wc().Tc(); + }, o.Uc = function() { + var e; + return e = this.b, e || (this.b = this.Sc()); + }, o.Vc = function() { + return this.Wc().Vc(); + }, o.Wc = function() { + return u(this.d, 133); + }, w(Cn, "AbstractMapBasedMultimap/SortedAsMap", 503), b(446, 503, gtn, N6), o.bc = function() { + return new f4(this.a, u(u(this.d, 133), 139)); + }, o.Sc = function() { + return new f4(this.a, u(u(this.d, 133), 139)); + }, o.ec = function() { + var e; + return e = this.b, u(e || (this.b = new f4(this.a, u(u(this.d, 133), 139))), 277); + }, o.Uc = function() { + var e; + return e = this.b, u(e || (this.b = new f4(this.a, u(u(this.d, 133), 139))), 277); + }, o.Wc = function() { + return u(u(this.d, 133), 139); + }, o.Xc = function(e) { + return u(u(this.d, 133), 139).Xc(e); + }, o.Yc = function(e) { + return u(u(this.d, 133), 139).Yc(e); + }, o.Zc = function(e, t) { + return new N6(this.a, u(u(this.d, 133), 139).Zc(e, t)); + }, o.$c = function(e) { + return u(u(this.d, 133), 139).$c(e); + }, o._c = function(e) { + return u(u(this.d, 133), 139)._c(e); + }, o.ad = function(e, t) { + return new N6(this.a, u(u(this.d, 133), 139).ad(e, t)); + }, w(Cn, "AbstractMapBasedMultimap/NavigableAsMap", 446), b(502, 327, Izn, e7), o.Nc = function() { + return this.b.ec().Nc(); + }, w(Cn, "AbstractMapBasedMultimap/SortedKeySet", 502), b(401, 502, ptn, f4), w(Cn, "AbstractMapBasedMultimap/NavigableKeySet", 401), b(551, 31, pw, VM), o.Fc = function(e) { + var t, i; + return eo(this), i = this.d.dc(), t = this.d.Fc(e), t && (++this.f.d, i && O7(this)), t; + }, o.Gc = function(e) { + var t, i, r; + return e.dc() ? !1 : (r = (eo(this), this.d.gc()), t = this.d.Gc(e), t && (i = this.d.gc(), this.f.d += i - r, r == 0 && O7(this)), t); + }, o.$b = function() { + var e; + e = (eo(this), this.d.gc()), e != 0 && (this.d.$b(), this.f.d -= e, fM(this)); + }, o.Hc = function(e) { + return eo(this), this.d.Hc(e); + }, o.Ic = function(e) { + return eo(this), this.d.Ic(e); + }, o.Fb = function(e) { + return e === this ? !0 : (eo(this), ct(this.d, e)); + }, o.Hb = function() { + return eo(this), mt(this.d); + }, o.Kc = function() { + return eo(this), new UV(this); + }, o.Mc = function(e) { + var t; + return eo(this), t = this.d.Mc(e), t && (--this.f.d, fM(this)), t; + }, o.gc = function() { + return RMn(this); + }, o.Nc = function() { + return eo(this), this.d.Nc(); + }, o.Ib = function() { + return eo(this), Jr(this.d); + }, w(Cn, "AbstractMapBasedMultimap/WrappedCollection", 551); + var rs = xt(le, "List"); + b(744, 551, { 20: 1, 31: 1, 16: 1, 15: 1 }, kW), o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return eo(this), this.d.Nc(); + }, o.bd = function(e, t) { + var i; + eo(this), i = this.d.dc(), u(this.d, 15).bd(e, t), ++this.a.d, i && O7(this); + }, o.cd = function(e, t) { + var i, r, c; + return t.dc() ? !1 : (c = (eo(this), this.d.gc()), i = u(this.d, 15).cd(e, t), i && (r = this.d.gc(), this.a.d += r - c, c == 0 && O7(this)), i); + }, o.Xb = function(e) { + return eo(this), u(this.d, 15).Xb(e); + }, o.dd = function(e) { + return eo(this), u(this.d, 15).dd(e); + }, o.ed = function() { + return eo(this), new wTn(this); + }, o.fd = function(e) { + return eo(this), new BIn(this, e); + }, o.gd = function(e) { + var t; + return eo(this), t = u(this.d, 15).gd(e), --this.a.d, fM(this), t; + }, o.hd = function(e, t) { + return eo(this), u(this.d, 15).hd(e, t); + }, o.kd = function(e, t) { + return eo(this), SDn(this.a, this.e, u(this.d, 15).kd(e, t), this.b ? this.b : this); + }, w(Cn, "AbstractMapBasedMultimap/WrappedList", 744), b(1126, 744, { 20: 1, 31: 1, 16: 1, 15: 1, 59: 1 }, rAn), w(Cn, "AbstractMapBasedMultimap/RandomAccessWrappedList", 1126), b(628, 1, Pi, UV), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return I4(this), this.b.Ob(); + }, o.Pb = function() { + return I4(this), this.b.Pb(); + }, o.Qb = function() { + HTn(this); + }, w(Cn, "AbstractMapBasedMultimap/WrappedCollection/WrappedIterator", 628), b(745, 628, Hh, wTn, BIn), o.Qb = function() { + HTn(this); + }, o.Rb = function(e) { + var t; + t = RMn(this.a) == 0, (I4(this), u(this.b, 128)).Rb(e), ++this.a.a.d, t && O7(this.a); + }, o.Sb = function() { + return (I4(this), u(this.b, 128)).Sb(); + }, o.Tb = function() { + return (I4(this), u(this.b, 128)).Tb(); + }, o.Ub = function() { + return (I4(this), u(this.b, 128)).Ub(); + }, o.Vb = function() { + return (I4(this), u(this.b, 128)).Vb(); + }, o.Wb = function(e) { + (I4(this), u(this.b, 128)).Wb(e); + }, w(Cn, "AbstractMapBasedMultimap/WrappedList/WrappedListIterator", 745), b(743, 551, Izn, fV), o.Nc = function() { + return eo(this), this.d.Nc(); + }, w(Cn, "AbstractMapBasedMultimap/WrappedSortedSet", 743), b(1125, 743, ptn, hTn), w(Cn, "AbstractMapBasedMultimap/WrappedNavigableSet", 1125), b(1124, 551, Nu, MAn), o.Nc = function() { + return eo(this), this.d.Nc(); + }, w(Cn, "AbstractMapBasedMultimap/WrappedSet", 1124), b(1133, 1, {}, Xe), o.Kb = function(e) { + return f4e(u(e, 44)); + }, w(Cn, "AbstractMapBasedMultimap/lambda$1$Type", 1133), b(1132, 1, {}, N8n), o.Kb = function(e) { + return new i0(this.a, e); + }, w(Cn, "AbstractMapBasedMultimap/lambda$2$Type", 1132); + var Pd = xt(le, "Map/Entry"); + b(358, 1, tB), o.Fb = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), sh(this.ld(), t.ld()) && sh(this.md(), t.md())) : !1; + }, o.Hb = function() { + var e, t; + return e = this.ld(), t = this.md(), (e == null ? 0 : mt(e)) ^ (t == null ? 0 : mt(t)); + }, o.nd = function(e) { + throw M(new Pe()); + }, o.Ib = function() { + return this.ld() + "=" + this.md(); + }, w(Cn, Ozn, 358), b(2086, 31, pw), o.$b = function() { + this.od().$b(); + }, o.Hc = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), Ipe(this.od(), t.ld(), t.md())) : !1; + }, o.Mc = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), fDn(this.od(), t.ld(), t.md())) : !1; + }, o.gc = function() { + return this.od().d; + }, w(Cn, "Multimaps/Entries", 2086), b(749, 2086, pw, hG), o.Kc = function() { + return this.a.kc(); + }, o.od = function() { + return this.a; + }, o.Nc = function() { + return this.a.lc(); + }, w(Cn, "AbstractMultimap/Entries", 749), b(750, 749, Nu, sz), o.Nc = function() { + return this.a.lc(); + }, o.Fb = function(e) { + return bnn(this, e); + }, o.Hb = function() { + return kxn(this); + }, w(Cn, "AbstractMultimap/EntrySet", 750), b(751, 31, pw, lG), o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return S6e(this.a, e); + }, o.Kc = function() { + return this.a.nc(); + }, o.gc = function() { + return this.a.d; + }, o.Nc = function() { + return this.a.oc(); + }, w(Cn, "AbstractMultimap/Values", 751), b(2087, 31, { 849: 1, 20: 1, 31: 1, 16: 1 }), o.Jc = function(e) { + Se(e), Ag(this).Jc(new Z8n(e)); + }, o.Nc = function() { + var e; + return e = Ag(this).Nc(), nF(e, new Mf(), 64 | e.yd() & 1296, this.a.d); + }, o.Fc = function(e) { + return gz(), !0; + }, o.Gc = function(e) { + return Se(this), Se(e), D(e, 552) ? Lpe(u(e, 849)) : !e.dc() && b$(this, e.Kc()); + }, o.Hc = function(e) { + var t; + return t = u(tw(Dp(this.a), e), 16), (t ? t.gc() : 0) > 0; + }, o.Fb = function(e) { + return eMe(this, e); + }, o.Hb = function() { + return mt(Ag(this)); + }, o.dc = function() { + return Ag(this).dc(); + }, o.Mc = function(e) { + return z_n(this, e, 1) > 0; + }, o.Ib = function() { + return Jr(Ag(this)); + }, w(Cn, "AbstractMultiset", 2087), b(2089, 2068, Nu), o.$b = function() { + gT(this.a.a); + }, o.Hc = function(e) { + var t, i; + return D(e, 504) ? (i = u(e, 425), u(i.a.md(), 16).gc() <= 0 ? !1 : (t = xOn(this.a, i.a.ld()), t == u(i.a.md(), 16).gc())) : !1; + }, o.Mc = function(e) { + var t, i, r, c; + return D(e, 504) && (i = u(e, 425), t = i.a.ld(), r = u(i.a.md(), 16).gc(), r != 0) ? (c = this.a, GEe(c, t, r)) : !1; + }, w(Cn, "Multisets/EntrySet", 2089), b(1139, 2089, Nu, $8n), o.Kc = function() { + return new Ojn(CPn(Dp(this.a.a)).Kc()); + }, o.gc = function() { + return Dp(this.a.a).gc(); + }, w(Cn, "AbstractMultiset/EntrySet", 1139), b(627, 742, md), o.hc = function() { + return this.pd(); + }, o.jc = function() { + return this.qd(); + }, o.cc = function(e) { + return this.rd(e); + }, o.fc = function(e) { + return this.sd(e); + }, o.Zb = function() { + var e; + return e = this.f, e || (this.f = this.ac()); + }, o.qd = function() { + return Dn(), Dn(), hP; + }, o.Fb = function(e) { + return G$(this, e); + }, o.rd = function(e) { + return u(ot(this, e), 21); + }, o.sd = function(e) { + return u(Ok(this, e), 21); + }, o.mc = function(e) { + return Dn(), new r4(u(e, 21)); + }, o.pc = function(e, t) { + return new MAn(this, e, u(t, 21)); + }, w(Cn, "AbstractSetMultimap", 627), b(1723, 627, md), o.hc = function() { + return new Ul(this.b); + }, o.pd = function() { + return new Ul(this.b); + }, o.jc = function() { + return _W(new Ul(this.b)); + }, o.qd = function() { + return _W(new Ul(this.b)); + }, o.cc = function(e) { + return u(u(ot(this, e), 21), 87); + }, o.rd = function(e) { + return u(u(ot(this, e), 21), 87); + }, o.fc = function(e) { + return u(u(Ok(this, e), 21), 87); + }, o.sd = function(e) { + return u(u(Ok(this, e), 21), 87); + }, o.mc = function(e) { + return D(e, 277) ? _W(u(e, 277)) : (Dn(), new VX(u(e, 87))); + }, o.Zb = function() { + var e; + return e = this.f, e || (this.f = D(this.c, 139) ? new N6(this, u(this.c, 139)) : D(this.c, 133) ? new A7(this, u(this.c, 133)) : new h4(this, this.c)); + }, o.pc = function(e, t) { + return D(t, 277) ? new hTn(this, e, u(t, 277)) : new fV(this, e, u(t, 87)); + }, w(Cn, "AbstractSortedSetMultimap", 1723), b(1724, 1723, md), o.Zb = function() { + var e; + return e = this.f, u(u(e || (this.f = D(this.c, 139) ? new N6(this, u(this.c, 139)) : D(this.c, 133) ? new A7(this, u(this.c, 133)) : new h4(this, this.c)), 133), 139); + }, o.ec = function() { + var e; + return e = this.i, u(u(e || (this.i = D(this.c, 139) ? new f4(this, u(this.c, 139)) : D(this.c, 133) ? new e7(this, u(this.c, 133)) : new Mg(this, this.c)), 87), 277); + }, o.bc = function() { + return D(this.c, 139) ? new f4(this, u(this.c, 139)) : D(this.c, 133) ? new e7(this, u(this.c, 133)) : new Mg(this, this.c); + }, w(Cn, "AbstractSortedKeySortedSetMultimap", 1724), b(2109, 1, { 2046: 1 }), o.Fb = function(e) { + return Tke(this, e); + }, o.Hb = function() { + var e; + return WQ((e = this.g, e || (this.g = new zO(this)))); + }, o.Ib = function() { + var e; + return LKn((e = this.f, e || (this.f = new UX(this)))); + }, w(Cn, "AbstractTable", 2109), b(679, Kf, Nu, zO), o.$b = function() { + qjn(); + }, o.Hc = function(e) { + var t, i; + return D(e, 479) ? (t = u(e, 697), i = u(tw(VPn(this.a), _1(t.c.e, t.b)), 85), !!i && jY(i.vc(), new i0(_1(t.c.c, t.a), Rp(t.c, t.b, t.a)))) : !1; + }, o.Kc = function() { + return Ige(this.a); + }, o.Mc = function(e) { + var t, i; + return D(e, 479) ? (t = u(e, 697), i = u(tw(VPn(this.a), _1(t.c.e, t.b)), 85), !!i && o5e(i.vc(), new i0(_1(t.c.c, t.a), Rp(t.c, t.b, t.a)))) : !1; + }, o.gc = function() { + return QSn(this.a); + }, o.Nc = function() { + return xpe(this.a); + }, w(Cn, "AbstractTable/CellSet", 679), b(2025, 31, pw, F8n), o.$b = function() { + qjn(); + }, o.Hc = function(e) { + return mye(this.a, e); + }, o.Kc = function() { + return Oge(this.a); + }, o.gc = function() { + return QSn(this.a); + }, o.Nc = function() { + return sDn(this.a); + }, w(Cn, "AbstractTable/Values", 2025), b(1697, 1696, md), w(Cn, "ArrayListMultimapGwtSerializationDependencies", 1697), b(520, 1697, md, CD, fJ), o.hc = function() { + return new zc(this.a); + }, o.a = 0, w(Cn, "ArrayListMultimap", 520), b(678, 2109, { 678: 1, 2046: 1, 3: 1 }, cHn), w(Cn, "ArrayTable", 678), b(2021, 399, xm, qTn), o.Xb = function(e) { + return new nY(this.a, e); + }, w(Cn, "ArrayTable/1", 2021), b(2022, 1, {}, O8n), o.td = function(e) { + return new nY(this.a, e); + }, w(Cn, "ArrayTable/1methodref$getCell$Type", 2022), b(2110, 1, { 697: 1 }), o.Fb = function(e) { + var t; + return e === this ? !0 : D(e, 479) ? (t = u(e, 697), sh(_1(this.c.e, this.b), _1(t.c.e, t.b)) && sh(_1(this.c.c, this.a), _1(t.c.c, t.a)) && sh(Rp(this.c, this.b, this.a), Rp(t.c, t.b, t.a))) : !1; + }, o.Hb = function() { + return Ik(A(T(ki, 1), Bn, 1, 5, [_1(this.c.e, this.b), _1(this.c.c, this.a), Rp(this.c, this.b, this.a)])); + }, o.Ib = function() { + return "(" + _1(this.c.e, this.b) + "," + _1(this.c.c, this.a) + ")=" + Rp(this.c, this.b, this.a); + }, w(Cn, "Tables/AbstractCell", 2110), b(479, 2110, { 479: 1, 697: 1 }, nY), o.a = 0, o.b = 0, o.d = 0, w(Cn, "ArrayTable/2", 479), b(2024, 1, {}, D8n), o.td = function(e) { + return LNn(this.a, e); + }, w(Cn, "ArrayTable/2methodref$getValue$Type", 2024), b(2023, 399, xm, UTn), o.Xb = function(e) { + return LNn(this.a, e); + }, w(Cn, "ArrayTable/3", 2023), b(2077, 2065, X0), o.$b = function() { + iM(this.kc()); + }, o.vc = function() { + return new z8n(this); + }, o.lc = function() { + return new SIn(this.kc(), this.gc()); + }, w(Cn, "Maps/IteratorBasedAbstractMap", 2077), b(842, 2077, X0), o.$b = function() { + throw M(new Pe()); + }, o._b = function(e) { + return sEn(this.c, e); + }, o.kc = function() { + return new GTn(this, this.c.b.c.gc()); + }, o.lc = function() { + return XL(this.c.b.c.gc(), 16, new L8n(this)); + }, o.xc = function(e) { + var t; + return t = u($6(this.c, e), 17), t ? this.vd(t.a) : null; + }, o.dc = function() { + return this.c.b.c.dc(); + }, o.ec = function() { + return eN(this.c); + }, o.zc = function(e, t) { + var i; + if (i = u($6(this.c, e), 17), !i) + throw M(new Gn(this.ud() + " " + e + " not in " + eN(this.c))); + return this.wd(i.a, t); + }, o.Bc = function(e) { + throw M(new Pe()); + }, o.gc = function() { + return this.c.b.c.gc(); + }, w(Cn, "ArrayTable/ArrayMap", 842), b(2020, 1, {}, L8n), o.td = function(e) { + return JPn(this.a, e); + }, w(Cn, "ArrayTable/ArrayMap/0methodref$getEntry$Type", 2020), b(2018, 358, tB, NEn), o.ld = function() { + return U1e(this.a, this.b); + }, o.md = function() { + return this.a.vd(this.b); + }, o.nd = function(e) { + return this.a.wd(this.b, e); + }, o.b = 0, w(Cn, "ArrayTable/ArrayMap/1", 2018), b(2019, 399, xm, GTn), o.Xb = function(e) { + return JPn(this.a, e); + }, w(Cn, "ArrayTable/ArrayMap/2", 2019), b(2017, 842, X0, FPn), o.ud = function() { + return "Column"; + }, o.vd = function(e) { + return Rp(this.b, this.a, e); + }, o.wd = function(e, t) { + return uFn(this.b, this.a, e, t); + }, o.a = 0, w(Cn, "ArrayTable/Row", 2017), b(843, 842, X0, UX), o.vd = function(e) { + return new FPn(this.a, e); + }, o.zc = function(e, t) { + return u(t, 85), lhe(); + }, o.wd = function(e, t) { + return u(t, 85), ahe(); + }, o.ud = function() { + return "Row"; + }, w(Cn, "ArrayTable/RowMap", 843), b(1157, 1, Po, $En), o.Ad = function(e) { + return (this.a.yd() & -262 & e) != 0; + }, o.yd = function() { + return this.a.yd() & -262; + }, o.zd = function() { + return this.a.zd(); + }, o.Nb = function(e) { + this.a.Nb(new FEn(e, this.b)); + }, o.Bd = function(e) { + return this.a.Bd(new xEn(e, this.b)); + }, w(Cn, "CollectSpliterators/1", 1157), b(1158, 1, re, xEn), o.Cd = function(e) { + this.a.Cd(this.b.Kb(e)); + }, w(Cn, "CollectSpliterators/1/lambda$0$Type", 1158), b(1159, 1, re, FEn), o.Cd = function(e) { + this.a.Cd(this.b.Kb(e)); + }, w(Cn, "CollectSpliterators/1/lambda$1$Type", 1159), b(1154, 1, Po, uSn), o.Ad = function(e) { + return ((16464 | this.b) & e) != 0; + }, o.yd = function() { + return 16464 | this.b; + }, o.zd = function() { + return this.a.zd(); + }, o.Nb = function(e) { + this.a.Qe(new REn(e, this.c)); + }, o.Bd = function(e) { + return this.a.Re(new BEn(e, this.c)); + }, o.b = 0, w(Cn, "CollectSpliterators/1WithCharacteristics", 1154), b(1155, 1, jy, BEn), o.Dd = function(e) { + this.a.Cd(this.b.td(e)); + }, w(Cn, "CollectSpliterators/1WithCharacteristics/lambda$0$Type", 1155), b(1156, 1, jy, REn), o.Dd = function(e) { + this.a.Cd(this.b.td(e)); + }, w(Cn, "CollectSpliterators/1WithCharacteristics/lambda$1$Type", 1156), b(1150, 1, Po), o.Ad = function(e) { + return (this.a & e) != 0; + }, o.yd = function() { + return this.a; + }, o.zd = function() { + return this.e && (this.b = DX(this.b, this.e.zd())), DX(this.b, 0); + }, o.Nb = function(e) { + this.e && (this.e.Nb(e), this.e = null), this.c.Nb(new KEn(this, e)), this.b = 0; + }, o.Bd = function(e) { + for (; ; ) { + if (this.e && this.e.Bd(e)) + return C6(this.b, Ey) && (this.b = bs(this.b, 1)), !0; + if (this.e = null, !this.c.Bd(new B8n(this))) + return !1; + } + }, o.a = 0, o.b = 0, w(Cn, "CollectSpliterators/FlatMapSpliterator", 1150), b(1152, 1, re, B8n), o.Cd = function(e) { + Hae(this.a, e); + }, w(Cn, "CollectSpliterators/FlatMapSpliterator/lambda$0$Type", 1152), b(1153, 1, re, KEn), o.Cd = function(e) { + dge(this.a, this.b, e); + }, w(Cn, "CollectSpliterators/FlatMapSpliterator/lambda$1$Type", 1153), b(1151, 1150, Po, TDn), w(Cn, "CollectSpliterators/FlatMapSpliteratorOfObject", 1151), b(253, 1, iB), o.Fd = function(e) { + return this.Ed(u(e, 253)); + }, o.Ed = function(e) { + var t; + return e == (bD(), HK) ? 1 : e == (dD(), _K) ? -1 : (t = (YC(), mk(this.a, e.a)), t != 0 ? t : D(this, 526) == D(e, 526) ? 0 : D(this, 526) ? 1 : -1); + }, o.Id = function() { + return this.a; + }, o.Fb = function(e) { + return kZ(this, e); + }, w(Cn, "Cut", 253), b(1823, 253, iB, Cjn), o.Ed = function(e) { + return e == this ? 0 : 1; + }, o.Gd = function(e) { + throw M(new qG()); + }, o.Hd = function(e) { + e.a += "+∞)"; + }, o.Id = function() { + throw M(new Or(Lzn)); + }, o.Hb = function() { + return fl(), cZ(this); + }, o.Jd = function(e) { + return !1; + }, o.Ib = function() { + return "+∞"; + }; + var _K; + w(Cn, "Cut/AboveAll", 1823), b(526, 253, { 253: 1, 526: 1, 3: 1, 34: 1 }, QTn), o.Gd = function(e) { + Lc((e.a += "(", e), this.a); + }, o.Hd = function(e) { + z1(Lc(e, this.a), 93); + }, o.Hb = function() { + return ~mt(this.a); + }, o.Jd = function(e) { + return YC(), mk(this.a, e) < 0; + }, o.Ib = function() { + return "/" + this.a + "\\"; + }, w(Cn, "Cut/AboveValue", 526), b(1822, 253, iB, Ejn), o.Ed = function(e) { + return e == this ? 0 : -1; + }, o.Gd = function(e) { + e.a += "(-∞"; + }, o.Hd = function(e) { + throw M(new qG()); + }, o.Id = function() { + throw M(new Or(Lzn)); + }, o.Hb = function() { + return fl(), cZ(this); + }, o.Jd = function(e) { + return !0; + }, o.Ib = function() { + return "-∞"; + }; + var HK; + w(Cn, "Cut/BelowAll", 1822), b(1824, 253, iB, YTn), o.Gd = function(e) { + Lc((e.a += "[", e), this.a); + }, o.Hd = function(e) { + z1(Lc(e, this.a), 41); + }, o.Hb = function() { + return mt(this.a); + }, o.Jd = function(e) { + return YC(), mk(this.a, e) <= 0; + }, o.Ib = function() { + return "\\" + this.a + "/"; + }, w(Cn, "Cut/BelowValue", 1824), b(547, 1, qh), o.Jc = function(e) { + qi(this, e); + }, o.Ib = function() { + return S5e(u(TM(this, "use Optional.orNull() instead of Optional.or(null)"), 20).Kc()); + }, w(Cn, "FluentIterable", 547), b(442, 547, qh, A6), o.Kc = function() { + return new ie(ce(this.a.Kc(), new En())); + }, w(Cn, "FluentIterable/2", 442), b(1059, 547, qh, uTn), o.Kc = function() { + return $h(this); + }, w(Cn, "FluentIterable/3", 1059), b(724, 399, xm, GX), o.Xb = function(e) { + return this.a[e].Kc(); + }, w(Cn, "FluentIterable/3/1", 724), b(2070, 1, {}), o.Ib = function() { + return Jr(this.Kd().b); + }, w(Cn, "ForwardingObject", 2070), b(2071, 2070, Nzn), o.Kd = function() { + return this.Ld(); + }, o.Jc = function(e) { + qi(this, e); + }, o.Lc = function() { + return this.Oc(); + }, o.Nc = function() { + return new In(this, 0); + }, o.Oc = function() { + return new Tn(null, this.Nc()); + }, o.Fc = function(e) { + return this.Ld(), hEn(); + }, o.Gc = function(e) { + return this.Ld(), lEn(); + }, o.$b = function() { + this.Ld(), aEn(); + }, o.Hc = function(e) { + return this.Ld().Hc(e); + }, o.Ic = function(e) { + return this.Ld().Ic(e); + }, o.dc = function() { + return this.Ld().b.dc(); + }, o.Kc = function() { + return this.Ld().Kc(); + }, o.Mc = function(e) { + return this.Ld(), dEn(); + }, o.gc = function() { + return this.Ld().b.gc(); + }, o.Pc = function() { + return this.Ld().Pc(); + }, o.Qc = function(e) { + return this.Ld().Qc(e); + }, w(Cn, "ForwardingCollection", 2071), b(2078, 31, mtn), o.Kc = function() { + return this.Od(); + }, o.Fc = function(e) { + throw M(new Pe()); + }, o.Gc = function(e) { + throw M(new Pe()); + }, o.Md = function() { + var e; + return e = this.c, e || (this.c = this.Nd()); + }, o.$b = function() { + throw M(new Pe()); + }, o.Hc = function(e) { + return e != null && iw(this, e, !1); + }, o.Nd = function() { + switch (this.gc()) { + case 0: + return m0(), m0(), qK; + case 1: + return m0(), new VL(Se(this.Od().Pb())); + default: + return new CW(this, this.Pc()); + } + }, o.Mc = function(e) { + throw M(new Pe()); + }, w(Cn, "ImmutableCollection", 2078), b(727, 2078, mtn, _G), o.Kc = function() { + return Kp(this.a.Kc()); + }, o.Hc = function(e) { + return e != null && this.a.Hc(e); + }, o.Ic = function(e) { + return this.a.Ic(e); + }, o.dc = function() { + return this.a.dc(); + }, o.Od = function() { + return Kp(this.a.Kc()); + }, o.gc = function() { + return this.a.gc(); + }, o.Pc = function() { + return this.a.Pc(); + }, o.Qc = function(e) { + return this.a.Qc(e); + }, o.Ib = function() { + return Jr(this.a); + }, w(Cn, "ForwardingImmutableCollection", 727), b(307, 2078, Fm), o.Kc = function() { + return this.Od(); + }, o.ed = function() { + return this.Pd(0); + }, o.fd = function(e) { + return this.Pd(e); + }, o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return new In(this, 16); + }, o.kd = function(e, t) { + return this.Qd(e, t); + }, o.bd = function(e, t) { + throw M(new Pe()); + }, o.cd = function(e, t) { + throw M(new Pe()); + }, o.Md = function() { + return this; + }, o.Fb = function(e) { + return qCe(this, e); + }, o.Hb = function() { + return Fve(this); + }, o.dd = function(e) { + return e == null ? -1 : u7e(this, e); + }, o.Od = function() { + return this.Pd(0); + }, o.Pd = function(e) { + return TL(this, e); + }, o.gd = function(e) { + throw M(new Pe()); + }, o.hd = function(e, t) { + throw M(new Pe()); + }, o.Qd = function(e, t) { + var i; + return FT((i = new JEn(this), new Jl(i, e, t))); + }; + var qK; + w(Cn, "ImmutableList", 307), b(2105, 307, Fm), o.Kc = function() { + return Kp(this.Rd().Kc()); + }, o.kd = function(e, t) { + return FT(this.Rd().kd(e, t)); + }, o.Hc = function(e) { + return e != null && this.Rd().Hc(e); + }, o.Ic = function(e) { + return this.Rd().Ic(e); + }, o.Fb = function(e) { + return ct(this.Rd(), e); + }, o.Xb = function(e) { + return _1(this, e); + }, o.Hb = function() { + return mt(this.Rd()); + }, o.dd = function(e) { + return this.Rd().dd(e); + }, o.dc = function() { + return this.Rd().dc(); + }, o.Od = function() { + return Kp(this.Rd().Kc()); + }, o.gc = function() { + return this.Rd().gc(); + }, o.Qd = function(e, t) { + return FT(this.Rd().kd(e, t)); + }, o.Pc = function() { + return this.Rd().Qc(K(ki, Bn, 1, this.Rd().gc(), 5, 1)); + }, o.Qc = function(e) { + return this.Rd().Qc(e); + }, o.Ib = function() { + return Jr(this.Rd()); + }, w(Cn, "ForwardingImmutableList", 2105), b(729, 1, Bm), o.vc = function() { + return Ja(this); + }, o.wc = function(e) { + f5(this, e); + }, o.ec = function() { + return eN(this); + }, o.yc = function(e, t, i) { + return hx(this, e, t, i); + }, o.Cc = function() { + return this.Vd(); + }, o.$b = function() { + throw M(new Pe()); + }, o._b = function(e) { + return this.xc(e) != null; + }, o.uc = function(e) { + return this.Vd().Hc(e); + }, o.Td = function() { + return new Dyn(this); + }, o.Ud = function() { + return new Lyn(this); + }, o.Fb = function(e) { + return P6e(this, e); + }, o.Hb = function() { + return Ja(this).Hb(); + }, o.dc = function() { + return this.gc() == 0; + }, o.zc = function(e, t) { + return hhe(); + }, o.Bc = function(e) { + throw M(new Pe()); + }, o.Ib = function() { + return gje(this); + }, o.Vd = function() { + return this.e ? this.e : this.e = this.Ud(); + }, o.c = null, o.d = null, o.e = null; + var cQn; + w(Cn, "ImmutableMap", 729), b(730, 729, Bm), o._b = function(e) { + return sEn(this, e); + }, o.uc = function(e) { + return tCn(this.b, e); + }, o.Sd = function() { + return tBn(new x8n(this)); + }, o.Td = function() { + return tBn(mIn(this.b)); + }, o.Ud = function() { + return oh(), new _G(pIn(this.b)); + }, o.Fb = function(e) { + return iCn(this.b, e); + }, o.xc = function(e) { + return $6(this, e); + }, o.Hb = function() { + return mt(this.b.c); + }, o.dc = function() { + return this.b.c.dc(); + }, o.gc = function() { + return this.b.c.gc(); + }, o.Ib = function() { + return Jr(this.b.c); + }, w(Cn, "ForwardingImmutableMap", 730), b(2072, 2071, rB), o.Kd = function() { + return this.Wd(); + }, o.Ld = function() { + return this.Wd(); + }, o.Nc = function() { + return new In(this, 1); + }, o.Fb = function(e) { + return e === this || this.Wd().Fb(e); + }, o.Hb = function() { + return this.Wd().Hb(); + }, w(Cn, "ForwardingSet", 2072), b(1085, 2072, rB, x8n), o.Kd = function() { + return S4(this.a.b); + }, o.Ld = function() { + return S4(this.a.b); + }, o.Hc = function(e) { + if (D(e, 44) && u(e, 44).ld() == null) + return !1; + try { + return eCn(S4(this.a.b), e); + } catch (t) { + if (t = It(t), D(t, 212)) + return !1; + throw M(t); + } + }, o.Wd = function() { + return S4(this.a.b); + }, o.Qc = function(e) { + var t; + return t = tOn(S4(this.a.b), e), S4(this.a.b).b.gc() < t.length && Rt(t, S4(this.a.b).b.gc(), null), t; + }, w(Cn, "ForwardingImmutableMap/1", 1085), b(2079, 2078, r3), o.Kc = function() { + return this.Od(); + }, o.Nc = function() { + return new In(this, 1); + }, o.Fb = function(e) { + return bnn(this, e); + }, o.Hb = function() { + return kxn(this); + }, w(Cn, "ImmutableSet", 2079), b(719, 2079, r3), o.Kc = function() { + return Kp(new J3(this.a.b.Kc())); + }, o.Hc = function(e) { + return e != null && t7(this.a, e); + }, o.Ic = function(e) { + return ZEn(this.a, e); + }, o.Hb = function() { + return mt(this.a.b); + }, o.dc = function() { + return this.a.b.dc(); + }, o.Od = function() { + return Kp(new J3(this.a.b.Kc())); + }, o.gc = function() { + return this.a.b.gc(); + }, o.Pc = function() { + return this.a.b.Pc(); + }, o.Qc = function(e) { + return nCn(this.a, e); + }, o.Ib = function() { + return Jr(this.a.b); + }, w(Cn, "ForwardingImmutableSet", 719), b(2073, 2072, $zn), o.Kd = function() { + return this.b; + }, o.Ld = function() { + return this.b; + }, o.Wd = function() { + return this.b; + }, o.Nc = function() { + return new cC(this); + }, w(Cn, "ForwardingSortedSet", 2073), b(543, 2077, Bm, oA), o.Ac = function(e) { + s5(this, e); + }, o.Cc = function() { + var e; + return e = this.d, new vL(e || (this.d = new VO(this))); + }, o.$b = function() { + nk(this); + }, o._b = function(e) { + return !!u5(this, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15)))); + }, o.uc = function(e) { + return E$n(this, e); + }, o.kc = function() { + return new zTn(this, this); + }, o.wc = function(e) { + gOn(this, e); + }, o.xc = function(e) { + return Lg(this, e); + }, o.ec = function() { + return new kL(this); + }, o.zc = function(e, t) { + return FA(this, e, t); + }, o.Bc = function(e) { + var t; + return t = u5(this, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15)))), t ? (zg(this, t), t.e = null, t.c = null, t.i) : null; + }, o.gc = function() { + return this.i; + }, o.xd = function() { + var e; + return e = this.d, new vL(e || (this.d = new VO(this))); + }, o.f = 0, o.g = 0, o.i = 0, w(Cn, "HashBiMap", 543), b(544, 1, Pi), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return PDn(this); + }, o.Pb = function() { + var e; + if (!PDn(this)) + throw M(new nc()); + return e = u(as(this.c), 303), this.c = e.c, this.f = e, --this.d, this.Xd(e); + }, o.Qb = function() { + if (this.e.g != this.b) + throw M(new Bo()); + if (!this.f) + throw M(new Or(wtn)); + zg(this.e, this.f), this.b = this.e.g, this.f = null; + }, o.b = 0, o.d = 0, o.f = null, w(Cn, "HashBiMap/Itr", 544), b(1023, 544, Pi, zTn), o.Xd = function(e) { + return new _En(this, e); + }, w(Cn, "HashBiMap/1", 1023), b(Gs, 358, tB, _En), o.ld = function() { + return this.a.g; + }, o.md = function() { + return this.a.i; + }, o.nd = function(e) { + var t, i, r; + return i = this.a.i, r = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), r == this.a.f && (x(e) === x(i) || e != null && ct(e, i)) ? e : (iFn(!o5(this.b.a, e, r), e), zg(this.b.a, this.a), t = new kM(this.a.g, this.a.a, e, r), ny(this.b.a, t, this.a), this.a.e = null, this.a.c = null, this.b.b = this.b.a.g, this.b.f == this.a && (this.b.f = t), this.a = t, i); + }, w(Cn, "HashBiMap/1/MapEntry", Gs), b(246, 358, { 358: 1, 246: 1, 3: 1, 44: 1 }, i0), o.ld = function() { + return this.g; + }, o.md = function() { + return this.i; + }, o.nd = function(e) { + throw M(new Pe()); + }, w(Cn, "ImmutableEntry", 246), b(303, 246, { 358: 1, 303: 1, 246: 1, 3: 1, 44: 1 }, kM), o.a = 0, o.f = 0; + var UK = w(Cn, "HashBiMap/BiEntry", 303); + b(619, 2077, Bm, VO), o.Ac = function(e) { + s5(this, e); + }, o.Cc = function() { + return new kL(this.a); + }, o.$b = function() { + nk(this.a); + }, o._b = function(e) { + return E$n(this.a, e); + }, o.kc = function() { + return new XTn(this, this.a); + }, o.wc = function(e) { + Se(e), gOn(this.a, new R8n(e)); + }, o.xc = function(e) { + return pT(this, e); + }, o.ec = function() { + return new vL(this); + }, o.zc = function(e, t) { + return ZSe(this.a, e, t, !1); + }, o.Bc = function(e) { + var t; + return t = o5(this.a, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15)))), t ? (zg(this.a, t), t.e = null, t.c = null, t.g) : null; + }, o.gc = function() { + return this.a.i; + }, o.xd = function() { + return new kL(this.a); + }, w(Cn, "HashBiMap/Inverse", 619), b(1020, 544, Pi, XTn), o.Xd = function(e) { + return new HEn(this, e); + }, w(Cn, "HashBiMap/Inverse/1", 1020), b(1021, 358, tB, HEn), o.ld = function() { + return this.a.i; + }, o.md = function() { + return this.a.g; + }, o.nd = function(e) { + var t, i, r; + return r = this.a.g, t = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), t == this.a.a && (x(e) === x(r) || e != null && ct(e, r)) ? e : (iFn(!u5(this.b.a.a, e, t), e), zg(this.b.a.a, this.a), i = new kM(e, t, this.a.i, this.a.f), this.a = i, ny(this.b.a.a, i, null), this.b.b = this.b.a.a.g, r); + }, w(Cn, "HashBiMap/Inverse/1/InverseEntry", 1021), b(620, 542, Nu, vL), o.Kc = function() { + return new Ajn(this.a.a); + }, o.Mc = function(e) { + var t; + return t = o5(this.a.a, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15)))), t ? (zg(this.a.a, t), !0) : !1; + }, w(Cn, "HashBiMap/Inverse/InverseKeySet", 620), b(1019, 544, Pi, Ajn), o.Xd = function(e) { + return e.i; + }, w(Cn, "HashBiMap/Inverse/InverseKeySet/1", 1019), b(1022, 1, {}, R8n), o.Yd = function(e, t) { + Hfe(this.a, e, t); + }, w(Cn, "HashBiMap/Inverse/lambda$0$Type", 1022), b(618, 542, Nu, kL), o.Kc = function() { + return new Sjn(this.a); + }, o.Mc = function(e) { + var t; + return t = u5(this.a, e, Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15)))), t ? (zg(this.a, t), t.e = null, t.c = null, !0) : !1; + }, w(Cn, "HashBiMap/KeySet", 618), b(1018, 544, Pi, Sjn), o.Xd = function(e) { + return e.g; + }, w(Cn, "HashBiMap/KeySet/1", 1018), b(1123, 627, md), w(Cn, "HashMultimapGwtSerializationDependencies", 1123), b(271, 1123, md, C0), o.hc = function() { + return new zE(Qb(this.a)); + }, o.pd = function() { + return new zE(Qb(this.a)); + }, o.a = 2, w(Cn, "HashMultimap", 271), b(2097, 307, Fm), o.Hc = function(e) { + return this.Zd().Hc(e); + }, o.dc = function() { + return this.Zd().dc(); + }, o.gc = function() { + return this.Zd().gc(); + }, w(Cn, "ImmutableAsList", 2097), b(2030, 730, Bm), o.Vd = function() { + return oh(), new lp(this.a); + }, o.Cc = function() { + return oh(), new lp(this.a); + }, o.xd = function() { + return oh(), new lp(this.a); + }, w(Cn, "ImmutableBiMap", 2030), b(2075, 1, {}), w(Cn, "ImmutableCollection/Builder", 2075), b(1035, 719, r3, Pjn), w(Cn, "ImmutableEnumSet", 1035), b(980, 399, xm, rSn), o.Xb = function(e) { + return this.a.Xb(e); + }, w(Cn, "ImmutableList/1", 980), b(979, 2075, {}, XAn), w(Cn, "ImmutableList/Builder", 979), b(623, 204, $m, WO), o.Ob = function() { + return this.a.Ob(); + }, o.Pb = function() { + return u(this.a.Pb(), 44).ld(); + }, w(Cn, "ImmutableMap/1", 623), b(1054, 1, {}, Yi), o.Kb = function(e) { + return u(e, 44).ld(); + }, w(Cn, "ImmutableMap/2methodref$getKey$Type", 1054), b(1053, 1, {}, VAn), w(Cn, "ImmutableMap/Builder", 1053), b(2098, 2079, r3), o.Md = function() { + var e; + return e = this.b, e || (this.b = new cD(this)); + }, o.Nd = function() { + return new CW(this, A5(this, K(ki, Bn, 1, this.gc(), 5, 1))); + }, w(Cn, "ImmutableSet/CachingAsList", 2098), b(2099, 2098, r3), o.Kc = function() { + var e; + return e = Ja(this.a).Od(), new WO(e); + }, o.Nd = function() { + return new cD(this); + }, o.Jc = function(e) { + var t, i; + for (Se(e), i = this.gc(), t = 0; t < i; t++) + e.Cd(u(Ja(this.a).Md().Xb(t), 44).ld()); + }, o.Od = function() { + var e; + return e = this.b, TL(e || (this.b = new cD(this)), 0); + }, o.Nc = function() { + return XL(this.gc(), 1296, new _8n(this)); + }, w(Cn, "IndexedImmutableSet", 2099), b(1230, 2099, r3, Dyn), o.Kc = function() { + var e; + return e = Ja(this.a).Od(), new WO(e); + }, o.Hc = function(e) { + return this.a._b(e); + }, o.Jc = function(e) { + Se(e), f5(this.a, new K8n(e)); + }, o.Od = function() { + var e; + return e = Ja(this.a).Od(), new WO(e); + }, o.gc = function() { + return this.a.gc(); + }, o.Nc = function() { + return N7(Ja(this.a).Nc(), new Yi()); + }, w(Cn, "ImmutableMapKeySet", 1230), b(1231, 1, {}, K8n), o.Yd = function(e, t) { + oh(), this.a.Cd(e); + }, w(Cn, "ImmutableMapKeySet/lambda$0$Type", 1231), b(1227, 2078, mtn, Lyn), o.Kc = function() { + return new GL(this); + }, o.Md = function() { + var e; + return e = Ja(this.a).Md(), new mTn(this, e); + }, o.Hc = function(e) { + return e != null && Mke(new GL(this), e); + }, o.Od = function() { + return new GL(this); + }, o.gc = function() { + return this.a.gc(); + }, o.Nc = function() { + return N7(Ja(this.a).Nc(), new Ri()); + }, w(Cn, "ImmutableMapValues", 1227), b(1228, 1, {}, Ri), o.Kb = function(e) { + return u(e, 44).md(); + }, w(Cn, "ImmutableMapValues/0methodref$getValue$Type", 1228), b(637, 204, $m, GL), o.Ob = function() { + return this.a.Ob(); + }, o.Pb = function() { + return u(this.a.Pb(), 44).md(); + }, w(Cn, "ImmutableMapValues/1", 637), b(1229, 2097, Fm, mTn), o.Zd = function() { + return this.a; + }, o.Xb = function(e) { + return u(this.b.Xb(e), 44).md(); + }, w(Cn, "ImmutableMapValues/2", 1229), b(1232, 1, {}, _8n), o.td = function(e) { + return YPn(this.a, e); + }, w(Cn, "IndexedImmutableSet/0methodref$get$Type", 1232), b(638, 2097, Fm, cD), o.Zd = function() { + return this.a; + }, o.Xb = function(e) { + return YPn(this.a, e); + }, o.gc = function() { + return this.a.a.gc(); + }, w(Cn, "IndexedImmutableSet/1", 638), b(43, 1, {}, En), o.Kb = function(e) { + return u(e, 20).Kc(); + }, o.Fb = function(e) { + return this === e; + }, w(Cn, "Iterables/10", 43), b(1055, 547, qh, KSn), o.Jc = function(e) { + Se(e), this.b.Jc(new qEn(this.a, e)); + }, o.Kc = function() { + return AX(this); + }, w(Cn, "Iterables/4", 1055), b(1056, 1, re, qEn), o.Cd = function(e) { + fle(this.b, this.a, e); + }, w(Cn, "Iterables/4/lambda$0$Type", 1056), b(1057, 547, qh, _Sn), o.Jc = function(e) { + Se(e), qi(this.a, new GEn(e, this.b)); + }, o.Kc = function() { + return ce(new ne(this.a), this.b); + }, w(Cn, "Iterables/5", 1057), b(1058, 1, re, GEn), o.Cd = function(e) { + this.a.Cd(oTn(e)); + }, w(Cn, "Iterables/5/lambda$0$Type", 1058), b(1087, 204, $m, H8n), o.Ob = function() { + return this.a.Ob(); + }, o.Pb = function() { + return this.a.Pb(); + }, w(Cn, "Iterators/1", 1087), b(1088, 713, $m, UEn), o.Yb = function() { + for (var e; this.b.Ob(); ) + if (e = this.b.Pb(), this.a.Lb(e)) + return e; + return this.e = 2, null; + }, w(Cn, "Iterators/5", 1088), b(497, 1, Pi), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.b.Ob(); + }, o.Pb = function() { + return this.$d(this.b.Pb()); + }, o.Qb = function() { + this.b.Qb(); + }, w(Cn, "TransformedIterator", 497), b(1089, 497, Pi, VTn), o.$d = function(e) { + return this.a.Kb(e); + }, w(Cn, "Iterators/6", 1089), b(732, 204, $m, aG), o.Ob = function() { + return !this.a; + }, o.Pb = function() { + if (this.a) + throw M(new nc()); + return this.a = !0, this.b; + }, o.a = !1, w(Cn, "Iterators/9", 732), b(1086, 399, xm, aPn), o.Xb = function(e) { + return this.a[this.b + e]; + }, o.b = 0; + var uQn; + w(Cn, "Iterators/ArrayItr", 1086), b(38, 1, { 38: 1, 51: 1 }, ie), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return pe(this); + }, o.Pb = function() { + return fe(this); + }, o.Qb = function() { + if (!this.c) + throw M(new Or(wtn)); + this.c.Qb(), this.c = null; + }, w(Cn, "Iterators/ConcatenatedIterator", 38), b(22, 1, { 3: 1, 34: 1, 22: 1 }), o.Fd = function(e) { + return Bjn(this, u(e, 22)); + }, o.Fb = function(e) { + return this === e; + }, o.Hb = function() { + return l0(this); + }, o.Ib = function() { + return SL(this); + }, o.g = 0; + var ke = w(ac, "Enum", 22); + b(549, 22, { 549: 1, 3: 1, 34: 1, 22: 1, 51: 1 }, PTn), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return !1; + }, o.Pb = function() { + throw M(new nc()); + }, o.Qb = function() { + v4(!1); + }; + var GK, oQn = we(Cn, "Iterators/EmptyModifiableIterator", 549, ke, ywe, q1e), sQn; + b(1907, 627, md), w(Cn, "LinkedHashMultimapGwtSerializationDependencies", 1907), b(1908, 1907, md, XFn), o.hc = function() { + return new CL(Qb(this.b)); + }, o.$b = function() { + gT(this), V9(this.a, this.a); + }, o.pd = function() { + return new CL(Qb(this.b)); + }, o.ic = function(e) { + return new PFn(this, e, this.b); + }, o.kc = function() { + return new $W(this); + }, o.lc = function() { + var e; + return new In((e = this.g, u(e || (this.g = new sz(this)), 21)), 17); + }, o.ec = function() { + var e; + return e = this.i, e || (this.i = new Mg(this, this.c)); + }, o.nc = function() { + return new hz(new $W(this)); + }, o.oc = function() { + var e; + return N7(new In((e = this.g, u(e || (this.g = new sz(this)), 21)), 17), new lu()); + }, o.b = 2, w(Cn, "LinkedHashMultimap", 1908), b(1911, 1, {}, lu), o.Kb = function(e) { + return u(e, 44).md(); + }, w(Cn, "LinkedHashMultimap/0methodref$getValue$Type", 1911), b(834, 1, Pi, $W), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return Nve(this); + }, o.Ob = function() { + return this.a != this.b.a; + }, o.Qb = function() { + v4(!!this.c), fDn(this.b, this.c.g, this.c.i), this.c = null; + }, w(Cn, "LinkedHashMultimap/1", 834), b(227, 246, { 358: 1, 246: 1, 227: 1, 604: 1, 3: 1, 44: 1 }, qW), o._d = function() { + return u(as(this.f), 604); + }, o.ae = function(e) { + this.c = e; + }, o.be = function(e) { + this.f = e; + }, o.d = 0; + var fQn = w(Cn, "LinkedHashMultimap/ValueEntry", 227); + b(1909, 2068, { 604: 1, 20: 1, 31: 1, 16: 1, 21: 1 }, PFn), o.Fc = function(e) { + var t, i, r, c, s; + for (s = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), t = s & this.b.length - 1, c = this.b[t], i = c; i; i = i.a) + if (i.d == s && sh(i.i, e)) + return !1; + return r = new qW(this.c, e, s, c), _jn(this.d, r), r.f = this, this.d = r, V9(u(as(this.g.a.b), 227), r), V9(r, this.g.a), this.b[t] = r, ++this.f, ++this.e, Eke(this), !0; + }, o.$b = function() { + var e, t; + for (u7(this.b, null), this.f = 0, e = this.a; e != this; e = e._d()) + t = u(e, 227), V9(u(as(t.b), 227), u(as(t.e), 227)); + this.a = this, this.d = this, ++this.e; + }, o.Hc = function(e) { + var t, i; + for (i = Ae(er(Uh, xh(Ae(er(e == null ? 0 : mt(e), Gh)), 15))), t = this.b[i & this.b.length - 1]; t; t = t.a) + if (t.d == i && sh(t.i, e)) + return !0; + return !1; + }, o.Jc = function(e) { + var t; + for (Se(e), t = this.a; t != this; t = t._d()) + e.Cd(u(t, 227).i); + }, o._d = function() { + return this.a; + }, o.Kc = function() { + return new rIn(this); + }, o.Mc = function(e) { + return hqn(this, e); + }, o.ae = function(e) { + this.d = e; + }, o.be = function(e) { + this.a = e; + }, o.gc = function() { + return this.f; + }, o.e = 0, o.f = 0, w(Cn, "LinkedHashMultimap/ValueSet", 1909), b(1910, 1, Pi, rIn), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return cW(this), this.b != this.c; + }, o.Pb = function() { + var e, t; + if (cW(this), this.b == this.c) + throw M(new nc()); + return e = u(this.b, 227), t = e.i, this.d = e, this.b = u(as(e.f), 604), t; + }, o.Qb = function() { + cW(this), v4(!!this.d), hqn(this.c, this.d.i), this.a = this.c.e, this.d = null; + }, o.a = 0, w(Cn, "LinkedHashMultimap/ValueSet/1", 1910), b(780, 2084, md, zMn), o.Zb = function() { + var e; + return e = this.f, e || (this.f = new Hz(this)); + }, o.Fb = function(e) { + return G$(this, e); + }, o.cc = function(e) { + return new AD(this, e); + }, o.fc = function(e) { + return XJ(this, e); + }, o.$b = function() { + KPn(this); + }, o._b = function(e) { + return YEn(this, e); + }, o.ac = function() { + return new Hz(this); + }, o.bc = function() { + return new U8n(this); + }, o.qc = function(e) { + return new AD(this, e); + }, o.dc = function() { + return !this.a; + }, o.rc = function(e) { + return XJ(this, e); + }, o.gc = function() { + return this.d; + }, o.c = 0, o.d = 0, w(Cn, "LinkedListMultimap", 780), b(56, 31, Rm), o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return new In(this, 16); + }, o.bd = function(e, t) { + throw M(new Kl("Add not supported on this list")); + }, o.Fc = function(e) { + return this.bd(this.gc(), e), !0; + }, o.cd = function(e, t) { + var i, r, c; + for (Jn(t), i = !1, c = t.Kc(); c.Ob(); ) + r = c.Pb(), this.bd(e++, r), i = !0; + return i; + }, o.$b = function() { + this.ce(0, this.gc()); + }, o.Fb = function(e) { + return Jnn(this, e); + }, o.Hb = function() { + return cY(this); + }, o.dd = function(e) { + return Q$n(this, e); + }, o.Kc = function() { + return new zv(this); + }, o.ed = function() { + return this.fd(0); + }, o.fd = function(e) { + return new xi(this, e); + }, o.gd = function(e) { + throw M(new Kl("Remove not supported on this list")); + }, o.ce = function(e, t) { + var i, r; + for (r = this.fd(e), i = e; i < t; ++i) + r.Pb(), r.Qb(); + }, o.hd = function(e, t) { + throw M(new Kl("Set not supported on this list")); + }, o.kd = function(e, t) { + return new Jl(this, e, t); + }, o.j = 0, w(le, "AbstractList", 56), b(2062, 56, Rm), o.bd = function(e, t) { + g4(this, e, t); + }, o.cd = function(e, t) { + return IFn(this, e, t); + }, o.Xb = function(e) { + return Zo(this, e); + }, o.Kc = function() { + return this.fd(0); + }, o.gd = function(e) { + return Ux(this, e); + }, o.hd = function(e, t) { + var i, r; + i = this.fd(e); + try { + return r = i.Pb(), i.Wb(t), r; + } catch (c) { + throw c = It(c), D(c, 112) ? M(new Ir("Can't set element " + e)) : M(c); + } + }, w(le, "AbstractSequentialList", 2062), b(646, 2062, Rm, AD), o.fd = function(e) { + return JTn(this, e); + }, o.gc = function() { + var e; + return e = u(ee(this.a.b, this.b), 260), e ? e.a : 0; + }, w(Cn, "LinkedListMultimap/1", 646), b(1316, 2068, Nu, U8n), o.Hc = function(e) { + return YEn(this.a, e); + }, o.Kc = function() { + return new wxn(this.a); + }, o.Mc = function(e) { + return !XJ(this.a, e).a.dc(); + }, o.gc = function() { + return c6(this.a.b); + }, w(Cn, "LinkedListMultimap/1KeySetImpl", 1316), b(1315, 1, Pi, wxn), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return uW(this), !!this.c; + }, o.Pb = function() { + if (uW(this), !this.c) + throw M(new nc()); + this.a = this.c, fi(this.d, this.a.a); + do + this.c = this.c.b; + while (this.c && !fi(this.d, this.c.a)); + return this.a.a; + }, o.Qb = function() { + uW(this), v4(!!this.a), iM(new f$(this.e, this.a.a)), this.a = null, this.b = this.e.c; + }, o.b = 0, w(Cn, "LinkedListMultimap/DistinctKeyIterator", 1315), b(260, 1, { 260: 1 }, ZW), o.a = 0, w(Cn, "LinkedListMultimap/KeyList", 260), b(511, 358, { 358: 1, 511: 1, 44: 1 }, zEn), o.ld = function() { + return this.a; + }, o.md = function() { + return this.f; + }, o.nd = function(e) { + var t; + return t = this.f, this.f = e, t; + }, w(Cn, "LinkedListMultimap/Node", 511), b(566, 1, Hh, f$, y_n), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + this.e = Ien(this.f, this.b, e, this.c), ++this.d, this.a = null; + }, o.Ob = function() { + return !!this.c; + }, o.Sb = function() { + return !!this.e; + }, o.Pb = function() { + return fQ(this); + }, o.Tb = function() { + return this.d; + }, o.Ub = function() { + return i$n(this); + }, o.Vb = function() { + return this.d - 1; + }, o.Qb = function() { + v4(!!this.a), this.a != this.c ? (this.e = this.a.e, --this.d) : this.c = this.a.c, KMe(this.f, this.a), this.a = null; + }, o.Wb = function(e) { + HX(!!this.a), this.a.f = e; + }, o.d = 0, w(Cn, "LinkedListMultimap/ValueForKeyIterator", 566), b(1031, 56, Rm), o.bd = function(e, t) { + this.a.bd(e, t); + }, o.cd = function(e, t) { + return this.a.cd(e, t); + }, o.Hc = function(e) { + return this.a.Hc(e); + }, o.Xb = function(e) { + return this.a.Xb(e); + }, o.gd = function(e) { + return this.a.gd(e); + }, o.hd = function(e, t) { + return this.a.hd(e, t); + }, o.gc = function() { + return this.a.gc(); + }, w(Cn, "Lists/AbstractListWrapper", 1031), b(1032, 1031, Fzn), w(Cn, "Lists/RandomAccessListWrapper", 1032), b(1034, 1032, Fzn, JEn), o.fd = function(e) { + return this.a.fd(e); + }, w(Cn, "Lists/1", 1034), b(441, 56, { 441: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1 }, Dz), o.bd = function(e, t) { + this.a.bd(C4(this, e), t); + }, o.$b = function() { + this.a.$b(); + }, o.Xb = function(e) { + return this.a.Xb(NW(this, e)); + }, o.Kc = function() { + return HOn(this, 0); + }, o.fd = function(e) { + return HOn(this, e); + }, o.gd = function(e) { + return this.a.gd(NW(this, e)); + }, o.ce = function(e, t) { + (mDn(e, t, this.a.gc()), Qo(this.a.kd(C4(this, t), C4(this, e)))).$b(); + }, o.hd = function(e, t) { + return this.a.hd(NW(this, e), t); + }, o.gc = function() { + return this.a.gc(); + }, o.kd = function(e, t) { + return mDn(e, t, this.a.gc()), Qo(this.a.kd(C4(this, t), C4(this, e))); + }, w(Cn, "Lists/ReverseList", 441), b(1030, 441, { 441: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 59: 1 }, Ijn), w(Cn, "Lists/RandomAccessReverseList", 1030), b(1033, 1, Hh, XEn), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + this.c.Rb(e), this.c.Ub(), this.a = !1; + }, o.Ob = function() { + return this.c.Sb(); + }, o.Sb = function() { + return this.c.Ob(); + }, o.Pb = function() { + if (!this.c.Sb()) + throw M(new nc()); + return this.a = !0, this.c.Ub(); + }, o.Tb = function() { + return C4(this.b, this.c.Tb()); + }, o.Ub = function() { + if (!this.c.Ob()) + throw M(new nc()); + return this.a = !0, this.c.Pb(); + }, o.Vb = function() { + return C4(this.b, this.c.Tb()) - 1; + }, o.Qb = function() { + v4(this.a), this.c.Qb(), this.a = !1; + }, o.Wb = function(e) { + HX(this.a), this.c.Wb(e); + }, o.a = !1, w(Cn, "Lists/ReverseList/1", 1033), b(440, 497, Pi, n6), o.$d = function(e) { + return rC(e); + }, w(Cn, "Maps/1", 440), b(712, 497, Pi, hz), o.$d = function(e) { + return u(e, 44).md(); + }, w(Cn, "Maps/2", 712), b(975, 497, Pi, WTn), o.$d = function(e) { + return new i0(e, nTn(this.a, e)); + }, w(Cn, "Maps/3", 975), b(972, 2069, Nu, z8n), o.Jc = function(e) { + Xfe(this.a, e); + }, o.Kc = function() { + return this.a.kc(); + }, o.Rc = function() { + return this.a; + }, o.Nc = function() { + return this.a.lc(); + }, w(Cn, "Maps/IteratorBasedAbstractMap/1", 972), b(973, 1, {}, X8n), o.Yd = function(e, t) { + this.a.Cd(e); + }, w(Cn, "Maps/KeySet/lambda$0$Type", 973), b(971, 31, pw, QEn), o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return this.a.uc(e); + }, o.Jc = function(e) { + Se(e), this.a.wc(new G8n(e)); + }, o.dc = function() { + return this.a.dc(); + }, o.Kc = function() { + return new hz(this.a.vc().Kc()); + }, o.Mc = function(e) { + var t, i; + try { + return iw(this, e, !0); + } catch (r) { + if (r = It(r), D(r, 48)) { + for (i = this.a.vc().Kc(); i.Ob(); ) + if (t = u(i.Pb(), 44), sh(e, t.md())) + return this.a.Bc(t.ld()), !0; + return !1; + } else + throw M(r); + } + }, o.gc = function() { + return this.a.gc(); + }, w(Cn, "Maps/Values", 971), b(974, 1, {}, G8n), o.Yd = function(e, t) { + this.a.Cd(t); + }, w(Cn, "Maps/Values/lambda$0$Type", 974), b(752, 2085, X0, Hz), o.xc = function(e) { + return this.a._b(e) ? this.a.cc(e) : null; + }, o.Bc = function(e) { + return this.a._b(e) ? this.a.fc(e) : null; + }, o.$b = function() { + this.a.$b(); + }, o._b = function(e) { + return this.a._b(e); + }, o.Ec = function() { + return new V8n(this); + }, o.Dc = function() { + return this.Ec(); + }, o.dc = function() { + return this.a.dc(); + }, o.ec = function() { + return this.a.ec(); + }, o.gc = function() { + return this.a.ec().gc(); + }, w(Cn, "Multimaps/AsMap", 752), b(1134, 2069, Nu, V8n), o.Kc = function() { + return a1e(this.a.a.ec(), new W8n(this)); + }, o.Rc = function() { + return this.a; + }, o.Mc = function(e) { + var t; + return NBn(this, e) ? (t = u(as(u(e, 44)), 44), the(this.a, t.ld()), !0) : !1; + }, w(Cn, "Multimaps/AsMap/EntrySet", 1134), b(1138, 1, {}, W8n), o.Kb = function(e) { + return nTn(this, e); + }, o.Fb = function(e) { + return this === e; + }, w(Cn, "Multimaps/AsMap/EntrySet/1", 1138), b(552, 2087, { 552: 1, 849: 1, 20: 1, 31: 1, 16: 1 }, J8n), o.$b = function() { + gT(this.a); + }, o.Hc = function(e) { + return oEn(this.a, e); + }, o.Jc = function(e) { + Se(e), qi(G6(this.a), new Y8n(e)); + }, o.Kc = function() { + return new n6(G6(this.a).a.kc()); + }, o.gc = function() { + return this.a.d; + }, o.Nc = function() { + return N7(G6(this.a).Nc(), new Yc()); + }, w(Cn, "Multimaps/Keys", 552), b(1136, 1, {}, Yc), o.Kb = function(e) { + return u(e, 44).ld(); + }, w(Cn, "Multimaps/Keys/0methodref$getKey$Type", 1136), b(1135, 497, Pi, Ojn), o.$d = function(e) { + return new Q8n(u(e, 44)); + }, w(Cn, "Multimaps/Keys/1", 1135), b(2088, 1, { 425: 1 }), o.Fb = function(e) { + var t; + return D(e, 504) ? (t = u(e, 425), u(this.a.md(), 16).gc() == u(t.a.md(), 16).gc() && sh(this.a.ld(), t.a.ld())) : !1; + }, o.Hb = function() { + var e; + return e = this.a.ld(), (e == null ? 0 : mt(e)) ^ u(this.a.md(), 16).gc(); + }, o.Ib = function() { + var e, t; + return t = O6(this.a.ld()), e = u(this.a.md(), 16).gc(), e == 1 ? t : t + " x " + e; + }, w(Cn, "Multisets/AbstractEntry", 2088), b(504, 2088, { 504: 1, 425: 1 }, Q8n), w(Cn, "Multimaps/Keys/1/1", 504), b(1137, 1, re, Y8n), o.Cd = function(e) { + this.a.Cd(u(e, 44).ld()); + }, w(Cn, "Multimaps/Keys/lambda$1$Type", 1137), b(1140, 1, re, Ru), o.Cd = function(e) { + $be(u(e, 425)); + }, w(Cn, "Multiset/lambda$0$Type", 1140), b(753, 1, re, Z8n), o.Cd = function(e) { + kme(this.a, u(e, 425)); + }, w(Cn, "Multiset/lambda$1$Type", 753), b(1141, 1, {}, Pr), w(Cn, "Multisets/0methodref$add$Type", 1141), b(754, 1, {}, Mf), o.Kb = function(e) { + return qpe(u(e, 425)); + }, w(Cn, "Multisets/lambda$1$Type", 754), b(2106, 1, ky), w(Cn, "RangeGwtSerializationDependencies", 2106), b(521, 2106, { 178: 1, 521: 1, 3: 1, 46: 1 }, lZ), o.Lb = function(e) { + return TPn(this, u(e, 34)); + }, o.Mb = function(e) { + return TPn(this, u(e, 34)); + }, o.Fb = function(e) { + var t; + return D(e, 521) ? (t = u(e, 521), kZ(this.a, t.a) && kZ(this.b, t.b)) : !1; + }, o.Hb = function() { + return this.a.Hb() * 31 + this.b.Hb(); + }, o.Ib = function() { + return UDn(this.a, this.b); + }, w(Cn, "Range", 521), b(654, 2097, Fm, CW), o.fd = function(e) { + return TL(this.b, e); + }, o.Zd = function() { + return this.a; + }, o.Xb = function(e) { + return _1(this.b, e); + }, o.Pd = function(e) { + return TL(this.b, e); + }, w(Cn, "RegularImmutableAsList", 654), b(656, 2105, Fm, PN), o.Rd = function() { + return this.a; + }, w(Cn, "RegularImmutableList", 656), b(548, 730, Bm, lz, az), w(Cn, "RegularImmutableMap", 548), b(731, 719, r3, Rz); + var oun; + w(Cn, "RegularImmutableSet", 731), b(2074, Kf, Nu), o.Kc = function() { + return new zW(this.a, this.b); + }, o.Fc = function(e) { + throw M(new Pe()); + }, o.Gc = function(e) { + throw M(new Pe()); + }, o.$b = function() { + throw M(new Pe()); + }, o.Mc = function(e) { + throw M(new Pe()); + }, w(Cn, "Sets/SetView", 2074), b(976, 2074, Nu, WEn), o.Kc = function() { + return new zW(this.a, this.b); + }, o.Hc = function(e) { + return JL(this.a, e) && this.b.Hc(e); + }, o.Ic = function(e) { + return Ek(this.a, e) && this.b.Ic(e); + }, o.dc = function() { + return mRn(this.b, this.a); + }, o.Lc = function() { + return ut(new Tn(null, new In(this.a, 1)), new e9n(this.b)); + }, o.gc = function() { + return kk(this); + }, o.Oc = function() { + return ut(new Tn(null, new In(this.a, 1)), new n9n(this.b)); + }, w(Cn, "Sets/2", 976), b(977, 1, De, n9n), o.Mb = function(e) { + return this.a.Hc(e); + }, w(Cn, "Sets/2/0methodref$contains$Type", 977), b(714, 713, $m, zW), o.Yb = function() { + for (var e; OX(this.a); ) + if (e = n5(this.a), this.c.Hc(e)) + return e; + return this.e = 2, null; + }, w(Cn, "Sets/2/1", 714), b(978, 1, De, e9n), o.Mb = function(e) { + return this.a.Hc(e); + }, w(Cn, "Sets/2/1methodref$contains$Type", 978), b(616, 2073, { 616: 1, 3: 1, 20: 1, 16: 1, 277: 1, 21: 1, 87: 1 }, sOn), o.Kd = function() { + return this.b; + }, o.Ld = function() { + return this.b; + }, o.Wd = function() { + return this.b; + }, o.Jc = function(e) { + this.a.Jc(e); + }, o.Lc = function() { + return this.a.Lc(); + }, o.Oc = function() { + return this.a.Oc(); + }, w(Cn, "Sets/UnmodifiableNavigableSet", 616), b(2031, 2030, Bm, aIn), o.Vd = function() { + return oh(), new lp(this.a); + }, o.Cc = function() { + return oh(), new lp(this.a); + }, o.xd = function() { + return oh(), new lp(this.a); + }, w(Cn, "SingletonImmutableBiMap", 2031), b(657, 2105, Fm, VL), o.Rd = function() { + return this.a; + }, w(Cn, "SingletonImmutableList", 657), b(363, 2079, r3, lp), o.Kc = function() { + return new aG(this.a); + }, o.Hc = function(e) { + return ct(this.a, e); + }, o.Od = function() { + return new aG(this.a); + }, o.gc = function() { + return 1; + }, w(Cn, "SingletonImmutableSet", 363), b(1148, 1, {}, L1), o.Kb = function(e) { + return u(e, 159); + }, w(Cn, "Streams/lambda$0$Type", 1148), b(1149, 1, JA, t9n), o.de = function() { + Y3e(this.a); + }, w(Cn, "Streams/lambda$1$Type", 1149), b(1725, 1724, md, zIn), o.Zb = function() { + var e; + return e = this.f, u(u(e || (this.f = D(this.c, 139) ? new N6(this, u(this.c, 139)) : D(this.c, 133) ? new A7(this, u(this.c, 133)) : new h4(this, this.c)), 133), 139); + }, o.hc = function() { + return new Ul(this.b); + }, o.pd = function() { + return new Ul(this.b); + }, o.ec = function() { + var e; + return e = this.i, u(u(e || (this.i = D(this.c, 139) ? new f4(this, u(this.c, 139)) : D(this.c, 133) ? new e7(this, u(this.c, 133)) : new Mg(this, this.c)), 87), 277); + }, o.ac = function() { + return D(this.c, 139) ? new N6(this, u(this.c, 139)) : D(this.c, 133) ? new A7(this, u(this.c, 133)) : new h4(this, this.c); + }, o.ic = function(e) { + return e == null && this.a.Ne(e, e), new Ul(this.b); + }, w(Cn, "TreeMultimap", 1725), b(82, 1, { 3: 1, 82: 1 }), o.ee = function(e) { + return new Error(e); + }, o.fe = function() { + return this.e; + }, o.ge = function() { + var e, t, i; + for (i = (this.k == null && (this.k = K(zK, J, 82, 0, 0, 1)), this.k), t = K(ki, Bn, 1, i.length, 5, 1), e = 0; e < i.length; e++) + t[e] = i[e].e; + return t; + }, o.he = function() { + return this.f; + }, o.ie = function() { + return this.g; + }, o.je = function() { + Yfe(this, Dpe(this.ee(IM(this, this.g)))), Nyn(this); + }, o.Ib = function() { + return IM(this, this.ie()); + }, o.e = Bzn, o.i = !1, o.n = !0; + var zK = w(ac, "Throwable", 82); + b(103, 82, { 3: 1, 103: 1, 82: 1 }), w(ac, "Exception", 103), b(63, 103, Pl, Ga, ec), w(ac, "RuntimeException", 63), b(607, 63, Pl), w(ac, "JsException", 607), b(875, 607, Pl), w(My, "JavaScriptExceptionBase", 875), b(486, 875, { 486: 1, 3: 1, 103: 1, 63: 1, 82: 1 }, zFn), o.ie = function() { + return Xke(this), this.c; + }, o.ke = function() { + return x(this.b) === x(sun) ? null : this.b; + }; + var sun; + w(ktn, "JavaScriptException", 486); + var hQn = w(ktn, "JavaScriptObject$", 0), XK; + b(2047, 1, {}), w(ktn, "Scheduler", 2047); + var cP = 0, lQn = 0, uP = -1; + b(902, 2047, {}, N1); + var fun; + w(My, "SchedulerImpl", 902); + var VK; + b(2058, 1, {}), w(My, "StackTraceCreator/Collector", 2058), b(876, 2058, {}, og), o.le = function(e) { + var t = {}, i = []; + e[oB] = i; + for (var r = arguments.callee.caller; r; ) { + var c = (O4(), r.name || (r.name = Lme(r.toString()))); + i.push(c); + var s = ":" + c, f = t[s]; + if (f) { + var h, l; + for (h = 0, l = f.length; h < l; h++) + if (f[h] === r) + return; + } + (f || (t[s] = [])).push(r), r = r.caller; + } + }, o.me = function(e) { + var t, i, r, c; + for (r = (O4(), e && e[oB] ? e[oB] : []), i = r.length, c = K(Eun, J, 319, i, 0, 1), t = 0; t < i; t++) + c[t] = new yN(r[t], null, -1); + return c; + }, w(My, "StackTraceCreator/CollectorLegacy", 876), b(2059, 2058, {}), o.le = function(e) { + }, o.ne = function(e, t, i, r) { + return new yN(t, e + "@" + r, i < 0 ? -1 : i); + }, o.me = function(e) { + var t, i, r, c, s, f; + if (c = k7e(e), s = K(Eun, J, 319, 0, 0, 1), t = 0, r = c.length, r == 0) + return s; + for (f = HGn(this, c[0]), An(f.d, uB) || (s[t++] = f), i = 1; i < r; i++) + s[t++] = HGn(this, c[i]); + return s; + }, w(My, "StackTraceCreator/CollectorModern", 2059), b(877, 2059, {}, V3), o.ne = function(e, t, i, r) { + return new yN(t, e, -1); + }, w(My, "StackTraceCreator/CollectorModernNoSourceMap", 877), b(1064, 1, {}), w(jtn, _zn, 1064), b(624, 1064, { 624: 1 }, QPn); + var hun; + w(TB, _zn, 624), b(2101, 1, {}), w(jtn, Hzn, 2101), b(2102, 2101, {}), w(TB, Hzn, 2102), b(1120, 1, {}, $1); + var T8; + w(TB, "LocaleInfo", 1120), b(2027, 1, {}, ul), o.a = 0, w(TB, "TimeZone", 2027), b(1293, 2102, {}, M0n), w("com.google.gwt.i18n.client.impl.cldr", "DateTimeFormatInfoImpl", 1293), b(443, 1, { 443: 1 }, PSn), o.a = !1, o.b = 0, w(jtn, "DateTimeFormat/PatternPart", 443), b(206, 1, qzn, JE, eY, hV), o.Fd = function(e) { + return Ape(this, u(e, 206)); + }, o.Fb = function(e) { + return D(e, 206) && o0(kc(this.q.getTime()), kc(u(e, 206).q.getTime())); + }, o.Hb = function() { + var e; + return e = kc(this.q.getTime()), Ae(RN(e, U1(e, 32))); + }, o.Ib = function() { + var e, t, i; + return i = -this.q.getTimezoneOffset(), e = (i >= 0 ? "+" : "") + (i / 60 | 0), t = OC(y.Math.abs(i) % 60), (GKn(), CQn)[this.q.getDay()] + " " + MQn[this.q.getMonth()] + " " + OC(this.q.getDate()) + " " + OC(this.q.getHours()) + ":" + OC(this.q.getMinutes()) + ":" + OC(this.q.getSeconds()) + " GMT" + e + t + " " + this.q.getFullYear(); + }; + var oP = w(le, "Date", 206); + b(2015, 206, qzn, bKn), o.a = !1, o.b = 0, o.c = 0, o.d = 0, o.e = 0, o.f = 0, o.g = !1, o.i = 0, o.j = 0, o.k = 0, o.n = 0, o.o = 0, o.p = 0, w("com.google.gwt.i18n.shared.impl", "DateRecord", 2015), b(2064, 1, {}), o.pe = function() { + return null; + }, o.qe = function() { + return null; + }, o.re = function() { + return null; + }, o.se = function() { + return null; + }, o.te = function() { + return null; + }, w(u3, "JSONValue", 2064), b(221, 2064, { 221: 1 }, _a, dG), o.Fb = function(e) { + return D(e, 221) ? lJ(this.a, u(e, 221).a) : !1; + }, o.oe = function() { + return $fe; + }, o.Hb = function() { + return nJ(this.a); + }, o.pe = function() { + return this; + }, o.Ib = function() { + var e, t, i; + for (i = new mo("["), t = 0, e = this.a.length; t < e; t++) + t > 0 && (i.a += ","), Lc(i, Jb(this, t)); + return i.a += "]", i.a; + }, w(u3, "JSONArray", 221), b(493, 2064, { 493: 1 }, bG), o.oe = function() { + return xfe; + }, o.qe = function() { + return this; + }, o.Ib = function() { + return _n(), "" + this.a; + }, o.a = !1; + var aQn, dQn; + w(u3, "JSONBoolean", 493), b(997, 63, Pl, Djn), w(u3, "JSONException", 997), b(1036, 2064, {}, T0n), o.oe = function() { + return Ffe; + }, o.Ib = function() { + return pu; + }; + var bQn; + w(u3, "JSONNull", 1036), b(263, 2064, { 263: 1 }, AE), o.Fb = function(e) { + return D(e, 263) ? this.a == u(e, 263).a : !1; + }, o.oe = function() { + return Lfe; + }, o.Hb = function() { + return pp(this.a); + }, o.re = function() { + return this; + }, o.Ib = function() { + return this.a + ""; + }, o.a = 0, w(u3, "JSONNumber", 263), b(190, 2064, { 190: 1 }, sp, U9), o.Fb = function(e) { + return D(e, 190) ? lJ(this.a, u(e, 190).a) : !1; + }, o.oe = function() { + return Nfe; + }, o.Hb = function() { + return nJ(this.a); + }, o.se = function() { + return this; + }, o.Ib = function() { + var e, t, i, r, c, s, f; + for (f = new mo("{"), e = !0, s = S$(this, K(fn, J, 2, 0, 6, 1)), i = s, r = 0, c = i.length; r < c; ++r) + t = i[r], e ? e = !1 : f.a += ur, Re(f, uHn(t)), f.a += ":", Lc(f, dl(this, t)); + return f.a += "}", f.a; + }, w(u3, "JSONObject", 190), b(605, Kf, Nu, SD), o.Hc = function(e) { + return Si(e) && ghe(this.a, Oe(e)); + }, o.Kc = function() { + return new zv(new Ku(this.b)); + }, o.gc = function() { + return this.b.length; + }, w(u3, "JSONObject/1", 605); + var WK; + b(211, 2064, { 211: 1 }, qb), o.Fb = function(e) { + return D(e, 211) ? An(this.a, u(e, 211).a) : !1; + }, o.oe = function() { + return Dfe; + }, o.Hb = function() { + return t1(this.a); + }, o.te = function() { + return this; + }, o.Ib = function() { + return uHn(this.a); + }, w(u3, "JSONString", 211); + var wa, lun, wQn, aun, dun; + b(2060, 1, { 533: 1 }), w(Etn, "OutputStream", 2060), b(2061, 2060, { 533: 1 }), w(Etn, "FilterOutputStream", 2061), b(878, 2061, { 533: 1 }, A0n), w(Etn, "PrintStream", 878), b(427, 1, { 484: 1 }), o.Ib = function() { + return this.a; + }, w(ac, "AbstractStringBuilder", 427), b(538, 63, Pl, _E), w(ac, "ArithmeticException", 538), b(77, 63, AB, UG, Ir), w(ac, "IndexOutOfBoundsException", 77), b(333, 77, { 3: 1, 333: 1, 103: 1, 77: 1, 63: 1, 82: 1 }, ZG, mz), w(ac, "ArrayIndexOutOfBoundsException", 333), b(537, 63, Pl, uD, Rjn), w(ac, "ArrayStoreException", 537), b(296, 82, Uzn, vD), w(ac, "Error", 296), b(200, 296, Uzn, qG, xJ), w(ac, "AssertionError", 200), tQn = { 3: 1, 485: 1, 34: 1 }; + var ga, ov, Xt = w(ac, "Boolean", 485); + b(242, 1, { 3: 1, 242: 1 }); + var bun; + w(ac, "Number", 242), b(222, 242, { 3: 1, 222: 1, 34: 1, 242: 1 }, o9n), o.Fd = function(e) { + return dhe(this, u(e, 222)); + }, o.ue = function() { + return this.a; + }, o.Fb = function(e) { + return D(e, 222) && u(e, 222).a == this.a; + }, o.Hb = function() { + return this.a; + }, o.Ib = function() { + return "" + this.a; + }, o.a = 0; + var p3 = w(ac, "Byte", 222), wun; + b(180, 1, { 3: 1, 180: 1, 34: 1 }, EG), o.Fd = function(e) { + return bhe(this, u(e, 180)); + }, o.Fb = function(e) { + return D(e, 180) && u(e, 180).a == this.a; + }, o.Hb = function() { + return this.a; + }, o.Ib = function() { + return String.fromCharCode(this.a); + }, o.a = 0; + var gun, A8 = w(ac, "Character", 180), pun; + b(212, 63, { 3: 1, 212: 1, 103: 1, 63: 1, 82: 1 }, $yn, i4), w(ac, "ClassCastException", 212), iQn = { 3: 1, 34: 1, 345: 1, 242: 1 }; + var si = w(ac, "Double", 345); + b(161, 242, { 3: 1, 34: 1, 161: 1, 242: 1 }, z9, GG), o.Fd = function(e) { + return Sle(this, u(e, 161)); + }, o.ue = function() { + return this.a; + }, o.Fb = function(e) { + return D(e, 161) && eSn(this.a, u(e, 161).a); + }, o.Hb = function() { + return wi(this.a); + }, o.Ib = function() { + return "" + this.a; + }, o.a = 0; + var sv = w(ac, "Float", 161); + b(33, 63, { 3: 1, 103: 1, 33: 1, 63: 1, 82: 1 }, W9, Gn, $Fn), w(ac, "IllegalArgumentException", 33), b(73, 63, Pl, Mu, Or), w(ac, "IllegalStateException", 73), b(17, 242, { 3: 1, 34: 1, 17: 1, 242: 1 }, kG), o.Fd = function(e) { + return EX(this, u(e, 17)); + }, o.ue = function() { + return this.a; + }, o.Fb = function(e) { + return D(e, 17) && u(e, 17).a == this.a; + }, o.Hb = function() { + return this.a; + }, o.Ib = function() { + return "" + this.a; + }, o.a = 0; + var Gi = w(ac, "Integer", 17), mun, gQn; + b(168, 242, { 3: 1, 34: 1, 168: 1, 242: 1 }, yG), o.Fd = function(e) { + return Ale(this, u(e, 168)); + }, o.ue = function() { + return id(this.a); + }, o.Fb = function(e) { + return D(e, 168) && o0(u(e, 168).a, this.a); + }, o.Hb = function() { + return Tae(this.a); + }, o.Ib = function() { + return "" + _6(this.a); + }, o.a = 0; + var tb = w(ac, "Long", 168), vun; + b(2140, 1, {}), b(1904, 63, Pl, Kjn), w(ac, "NegativeArraySizeException", 1904), b(169, 607, { 3: 1, 103: 1, 169: 1, 63: 1, 82: 1 }, rp, fp), o.ee = function(e) { + return new TypeError(e); + }, w(ac, "NullPointerException", 169); + var kun, JK, pQn, yun; + b(130, 33, { 3: 1, 103: 1, 33: 1, 130: 1, 63: 1, 82: 1 }, th), w(ac, "NumberFormatException", 130), b(191, 242, { 3: 1, 34: 1, 242: 1, 191: 1 }, jG), o.Fd = function(e) { + return whe(this, u(e, 191)); + }, o.ue = function() { + return this.a; + }, o.Fb = function(e) { + return D(e, 191) && u(e, 191).a == this.a; + }, o.Hb = function() { + return this.a; + }, o.Ib = function() { + return "" + this.a; + }, o.a = 0; + var ib = w(ac, "Short", 191), jun; + b(319, 1, { 3: 1, 319: 1 }, yN), o.Fb = function(e) { + var t; + return D(e, 319) ? (t = u(e, 319), this.c == t.c && this.d == t.d && this.a == t.a && this.b == t.b) : !1; + }, o.Hb = function() { + return Ik(A(T(ki, 1), Bn, 1, 5, [Y(this.c), this.a, this.d, this.b])); + }, o.Ib = function() { + return this.a + "." + this.d + "(" + (this.b != null ? this.b : "Unknown Source") + (this.c >= 0 ? ":" + this.c : "") + ")"; + }, o.c = 0; + var Eun = w(ac, "StackTraceElement", 319); + rQn = { 3: 1, 484: 1, 34: 1, 2: 1 }; + var fn = w(ac, vtn, 2); + b(111, 427, { 484: 1 }, Hl, i6, ls), w(ac, "StringBuffer", 111), b(104, 427, { 484: 1 }, x1, fg, mo), w(ac, "StringBuilder", 104), b(702, 77, AB, pz), w(ac, "StringIndexOutOfBoundsException", 702), b(2145, 1, {}); + var mQn; + b(48, 63, { 3: 1, 103: 1, 63: 1, 82: 1, 48: 1 }, Pe, Kl), w(ac, "UnsupportedOperationException", 48), b(247, 242, { 3: 1, 34: 1, 242: 1, 247: 1 }, Nk, Sz), o.Fd = function(e) { + return BUn(this, u(e, 247)); + }, o.ue = function() { + return sw(aGn(this)); + }, o.Fb = function(e) { + var t; + return this === e ? !0 : D(e, 247) ? (t = u(e, 247), this.e == t.e && BUn(this, t) == 0) : !1; + }, o.Hb = function() { + var e; + return this.b != 0 ? this.b : this.a < 54 ? (e = kc(this.f), this.b = Ae(vi(e, -1)), this.b = 33 * this.b + Ae(vi(w0(e, 32), -1)), this.b = 17 * this.b + wi(this.e), this.b) : (this.b = 17 * QFn(this.c) + wi(this.e), this.b); + }, o.Ib = function() { + return aGn(this); + }, o.a = 0, o.b = 0, o.d = 0, o.e = 0, o.f = 0; + var vQn, Id, Cun, Mun, Tun, Aun, Sun, Pun, QK = w("java.math", "BigDecimal", 247); + b(92, 242, { 3: 1, 34: 1, 242: 1, 92: 1 }, gl, qOn, Ya, YBn, H1), o.Fd = function(e) { + return VBn(this, u(e, 92)); + }, o.ue = function() { + return sw(ZF(this, 0)); + }, o.Fb = function(e) { + return HY(this, e); + }, o.Hb = function() { + return QFn(this); + }, o.Ib = function() { + return ZF(this, 0); + }, o.b = -2, o.c = 0, o.d = 0, o.e = 0; + var kQn, sP, yQn, YK, fP, S8, l2 = w("java.math", "BigInteger", 92), jQn, EQn, m3, P8; + b(498, 2065, X0), o.$b = function() { + Hu(this); + }, o._b = function(e) { + return nu(this, e); + }, o.uc = function(e) { + return DFn(this, e, this.i) || DFn(this, e, this.f); + }, o.vc = function() { + return new Ua(this); + }, o.xc = function(e) { + return ee(this, e); + }, o.zc = function(e, t) { + return Ve(this, e, t); + }, o.Bc = function(e) { + return Bp(this, e); + }, o.gc = function() { + return c6(this); + }, o.g = 0, w(le, "AbstractHashMap", 498), b(267, Kf, Nu, Ua), o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return vDn(this, e); + }, o.Kc = function() { + return new sd(this.a); + }, o.Mc = function(e) { + var t; + return vDn(this, e) ? (t = u(e, 44).ld(), this.a.Bc(t), !0) : !1; + }, o.gc = function() { + return this.a.gc(); + }, w(le, "AbstractHashMap/EntrySet", 267), b(268, 1, Pi, sd), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return L0(this); + }, o.Ob = function() { + return this.b; + }, o.Qb = function() { + VNn(this); + }, o.b = !1, o.d = 0, w(le, "AbstractHashMap/EntrySetIterator", 268), b(426, 1, Pi, zv), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return DD(this); + }, o.Pb = function() { + return WW(this); + }, o.Qb = function() { + bo(this); + }, o.b = 0, o.c = -1, w(le, "AbstractList/IteratorImpl", 426), b(98, 426, Hh, xi), o.Qb = function() { + bo(this); + }, o.Rb = function(e) { + Rb(this, e); + }, o.Sb = function() { + return this.b > 0; + }, o.Tb = function() { + return this.b; + }, o.Ub = function() { + return oe(this.b > 0), this.a.Xb(this.c = --this.b); + }, o.Vb = function() { + return this.b - 1; + }, o.Wb = function(e) { + Fb(this.c != -1), this.a.hd(this.c, e); + }, w(le, "AbstractList/ListIteratorImpl", 98), b(244, 56, Rm, Jl), o.bd = function(e, t) { + zb(e, this.b), this.c.bd(this.a + e, t), ++this.b; + }, o.Xb = function(e) { + return Ln(e, this.b), this.c.Xb(this.a + e); + }, o.gd = function(e) { + var t; + return Ln(e, this.b), t = this.c.gd(this.a + e), --this.b, t; + }, o.hd = function(e, t) { + return Ln(e, this.b), this.c.hd(this.a + e, t); + }, o.gc = function() { + return this.b; + }, o.a = 0, o.b = 0, w(le, "AbstractList/SubList", 244), b(266, Kf, Nu, qa), o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return this.a._b(e); + }, o.Kc = function() { + var e; + return e = this.a.vc().Kc(), new PE(e); + }, o.Mc = function(e) { + return this.a._b(e) ? (this.a.Bc(e), !0) : !1; + }, o.gc = function() { + return this.a.gc(); + }, w(le, "AbstractMap/1", 266), b(541, 1, Pi, PE), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.a.Ob(); + }, o.Pb = function() { + var e; + return e = u(this.a.Pb(), 44), e.ld(); + }, o.Qb = function() { + this.a.Qb(); + }, w(le, "AbstractMap/1/1", 541), b(231, 31, pw, ol), o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return this.a.uc(e); + }, o.Kc = function() { + var e; + return e = this.a.vc().Kc(), new Sb(e); + }, o.gc = function() { + return this.a.gc(); + }, w(le, "AbstractMap/2", 231), b(301, 1, Pi, Sb), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.a.Ob(); + }, o.Pb = function() { + var e; + return e = u(this.a.Pb(), 44), e.md(); + }, o.Qb = function() { + this.a.Qb(); + }, w(le, "AbstractMap/2/1", 301), b(494, 1, { 494: 1, 44: 1 }), o.Fb = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), vc(this.d, t.ld()) && vc(this.e, t.md())) : !1; + }, o.ld = function() { + return this.d; + }, o.md = function() { + return this.e; + }, o.Hb = function() { + return yg(this.d) ^ yg(this.e); + }, o.nd = function(e) { + return gV(this, e); + }, o.Ib = function() { + return this.d + "=" + this.e; + }, w(le, "AbstractMap/AbstractEntry", 494), b(397, 494, { 494: 1, 397: 1, 44: 1 }, oC), w(le, "AbstractMap/SimpleEntry", 397), b(2082, 1, IB), o.Fb = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), vc(this.ld(), t.ld()) && vc(this.md(), t.md())) : !1; + }, o.Hb = function() { + return yg(this.ld()) ^ yg(this.md()); + }, o.Ib = function() { + return this.ld() + "=" + this.md(); + }, w(le, Ozn, 2082), b(2090, 2065, gtn), o.Xc = function(e) { + return MD(this.Ee(e)); + }, o.tc = function(e) { + return MLn(this, e); + }, o._b = function(e) { + return pV(this, e); + }, o.vc = function() { + return new ZO(this); + }, o.Tc = function() { + return RPn(this.Ge()); + }, o.Yc = function(e) { + return MD(this.He(e)); + }, o.xc = function(e) { + var t; + return t = e, Kr(this.Fe(t)); + }, o.$c = function(e) { + return MD(this.Ie(e)); + }, o.ec = function() { + return new s9n(this); + }, o.Vc = function() { + return RPn(this.Je()); + }, o._c = function(e) { + return MD(this.Ke(e)); + }, w(le, "AbstractNavigableMap", 2090), b(629, Kf, Nu, ZO), o.Hc = function(e) { + return D(e, 44) && MLn(this.b, u(e, 44)); + }, o.Kc = function() { + return this.b.De(); + }, o.Mc = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), this.b.Le(t)) : !1; + }, o.gc = function() { + return this.b.gc(); + }, w(le, "AbstractNavigableMap/EntrySet", 629), b(1146, Kf, ptn, s9n), o.Nc = function() { + return new cC(this); + }, o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return pV(this.a, e); + }, o.Kc = function() { + var e; + return e = this.a.vc().b.De(), new f9n(e); + }, o.Mc = function(e) { + return pV(this.a, e) ? (this.a.Bc(e), !0) : !1; + }, o.gc = function() { + return this.a.gc(); + }, w(le, "AbstractNavigableMap/NavigableKeySet", 1146), b(1147, 1, Pi, f9n), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return DD(this.a.a); + }, o.Pb = function() { + var e; + return e = sAn(this.a), e.ld(); + }, o.Qb = function() { + bSn(this.a); + }, w(le, "AbstractNavigableMap/NavigableKeySet/1", 1147), b(2103, 31, pw), o.Fc = function(e) { + return Mp(ym(this, e), _m), !0; + }, o.Gc = function(e) { + return Jn(e), x7(e != this, "Can't add a queue to itself"), Bi(this, e); + }, o.$b = function() { + for (; w$(this) != null; ) + ; + }, w(le, "AbstractQueue", 2103), b(310, 31, { 4: 1, 20: 1, 31: 1, 16: 1 }, Cg, bDn), o.Fc = function(e) { + return yJ(this, e), !0; + }, o.$b = function() { + AJ(this); + }, o.Hc = function(e) { + return nFn(new V6(this), e); + }, o.dc = function() { + return t6(this); + }, o.Kc = function() { + return new V6(this); + }, o.Mc = function(e) { + return m2e(new V6(this), e); + }, o.gc = function() { + return this.c - this.b & this.a.length - 1; + }, o.Nc = function() { + return new In(this, 272); + }, o.Qc = function(e) { + var t; + return t = this.c - this.b & this.a.length - 1, e.length < t && (e = qE(new Array(t), e)), dxn(this, e, t), e.length > t && Rt(e, t, null), e; + }, o.b = 0, o.c = 0, w(le, "ArrayDeque", 310), b(459, 1, Pi, V6), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.a != this.b; + }, o.Pb = function() { + return xT(this); + }, o.Qb = function() { + J$n(this); + }, o.a = 0, o.b = 0, o.c = -1, w(le, "ArrayDeque/IteratorImpl", 459), b(13, 56, zzn, Z, zc, _u), o.bd = function(e, t) { + b0(this, e, t); + }, o.Fc = function(e) { + return nn(this, e); + }, o.cd = function(e, t) { + return bY(this, e, t); + }, o.Gc = function(e) { + return hi(this, e); + }, o.$b = function() { + Pb(this.c, 0); + }, o.Hc = function(e) { + return qr(this, e, 0) != -1; + }, o.Jc = function(e) { + eu(this, e); + }, o.Xb = function(e) { + return sn(this, e); + }, o.dd = function(e) { + return qr(this, e, 0); + }, o.dc = function() { + return this.c.length == 0; + }, o.Kc = function() { + return new C(this); + }, o.gd = function(e) { + return Yl(this, e); + }, o.Mc = function(e) { + return bu(this, e); + }, o.ce = function(e, t) { + FOn(this, e, t); + }, o.hd = function(e, t) { + return Go(this, e, t); + }, o.gc = function() { + return this.c.length; + }, o.jd = function(e) { + Yt(this, e); + }, o.Pc = function() { + return ZC(this.c); + }, o.Qc = function(e) { + return Ff(this, e); + }; + var oNe = w(le, "ArrayList", 13); + b(7, 1, Pi, C), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return tc(this); + }, o.Pb = function() { + return E(this); + }, o.Qb = function() { + q6(this); + }, o.a = 0, o.b = -1, w(le, "ArrayList/1", 7), b(2112, y.Function, {}, mE), o.Me = function(e, t) { + return bt(e, t); + }, b(151, 56, Xzn, Ku), o.Hc = function(e) { + return Q$n(this, e) != -1; + }, o.Jc = function(e) { + var t, i, r, c; + for (Jn(e), i = this.a, r = 0, c = i.length; r < c; ++r) + t = i[r], e.Cd(t); + }, o.Xb = function(e) { + return ZSn(this, e); + }, o.hd = function(e, t) { + var i; + return i = (Ln(e, this.a.length), this.a[e]), Rt(this.a, e, t), i; + }, o.gc = function() { + return this.a.length; + }, o.jd = function(e) { + QL(this.a, this.a.length, e); + }, o.Pc = function() { + return sRn(this, K(ki, Bn, 1, this.a.length, 5, 1)); + }, o.Qc = function(e) { + return sRn(this, e); + }, w(le, "Arrays/ArrayList", 151); + var sr, Wh, hP; + b(953, 56, Xzn, S0n), o.Hc = function(e) { + return !1; + }, o.Xb = function(e) { + return kX(e); + }, o.Kc = function() { + return Dn(), l4(), fv; + }, o.ed = function() { + return Dn(), l4(), fv; + }, o.gc = function() { + return 0; + }, w(le, "Collections/EmptyList", 953), b(954, 1, Hh, P0n), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + throw M(new Pe()); + }, o.Ob = function() { + return !1; + }, o.Sb = function() { + return !1; + }, o.Pb = function() { + throw M(new nc()); + }, o.Tb = function() { + return 0; + }, o.Ub = function() { + throw M(new nc()); + }, o.Vb = function() { + return -1; + }, o.Qb = function() { + throw M(new Mu()); + }, o.Wb = function(e) { + throw M(new Mu()); + }; + var fv; + w(le, "Collections/EmptyListIterator", 954), b(956, 2065, Bm, I0n), o._b = function(e) { + return !1; + }, o.uc = function(e) { + return !1; + }, o.vc = function() { + return Dn(), hP; + }, o.xc = function(e) { + return null; + }, o.ec = function() { + return Dn(), hP; + }, o.gc = function() { + return 0; + }, o.Cc = function() { + return Dn(), sr; + }, w(le, "Collections/EmptyMap", 956), b(955, Kf, r3, O0n), o.Hc = function(e) { + return !1; + }, o.Kc = function() { + return Dn(), l4(), fv; + }, o.gc = function() { + return 0; + }, w(le, "Collections/EmptySet", 955), b(608, 56, { 3: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1 }, nD), o.Hc = function(e) { + return vc(this.a, e); + }, o.Xb = function(e) { + return Ln(e, 1), this.a; + }, o.gc = function() { + return 1; + }, w(le, "Collections/SingletonList", 608), b(384, 1, Nzn, Q3), o.Jc = function(e) { + qi(this, e); + }, o.Lc = function() { + return new Tn(null, this.Nc()); + }, o.Nc = function() { + return new In(this, 0); + }, o.Oc = function() { + return new Tn(null, this.Nc()); + }, o.Fc = function(e) { + return hEn(); + }, o.Gc = function(e) { + return lEn(); + }, o.$b = function() { + aEn(); + }, o.Hc = function(e) { + return t7(this, e); + }, o.Ic = function(e) { + return ZEn(this, e); + }, o.dc = function() { + return this.b.dc(); + }, o.Kc = function() { + return new J3(this.b.Kc()); + }, o.Mc = function(e) { + return dEn(); + }, o.gc = function() { + return this.b.gc(); + }, o.Pc = function() { + return this.b.Pc(); + }, o.Qc = function(e) { + return nCn(this, e); + }, o.Ib = function() { + return Jr(this.b); + }, w(le, "Collections/UnmodifiableCollection", 384), b(383, 1, Pi, J3), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.b.Ob(); + }, o.Pb = function() { + return this.b.Pb(); + }, o.Qb = function() { + bEn(); + }, w(le, "Collections/UnmodifiableCollectionIterator", 383), b(540, 384, Vzn, BC), o.Nc = function() { + return new In(this, 16); + }, o.bd = function(e, t) { + throw M(new Pe()); + }, o.cd = function(e, t) { + throw M(new Pe()); + }, o.Fb = function(e) { + return ct(this.a, e); + }, o.Xb = function(e) { + return this.a.Xb(e); + }, o.Hb = function() { + return mt(this.a); + }, o.dd = function(e) { + return this.a.dd(e); + }, o.dc = function() { + return this.a.dc(); + }, o.ed = function() { + return new XX(this.a.fd(0)); + }, o.fd = function(e) { + return new XX(this.a.fd(e)); + }, o.gd = function(e) { + throw M(new Pe()); + }, o.hd = function(e, t) { + throw M(new Pe()); + }, o.jd = function(e) { + throw M(new Pe()); + }, o.kd = function(e, t) { + return new BC(this.a.kd(e, t)); + }, w(le, "Collections/UnmodifiableList", 540), b(705, 383, Hh, XX), o.Qb = function() { + bEn(); + }, o.Rb = function(e) { + throw M(new Pe()); + }, o.Sb = function() { + return this.a.Sb(); + }, o.Tb = function() { + return this.a.Tb(); + }, o.Ub = function() { + return this.a.Ub(); + }, o.Vb = function() { + return this.a.Vb(); + }, o.Wb = function(e) { + throw M(new Pe()); + }, w(le, "Collections/UnmodifiableListIterator", 705), b(609, 1, X0, eD), o.wc = function(e) { + f5(this, e); + }, o.yc = function(e, t, i) { + return hx(this, e, t, i); + }, o.$b = function() { + throw M(new Pe()); + }, o._b = function(e) { + return this.c._b(e); + }, o.uc = function(e) { + return tCn(this, e); + }, o.vc = function() { + return S4(this); + }, o.Fb = function(e) { + return iCn(this, e); + }, o.xc = function(e) { + return this.c.xc(e); + }, o.Hb = function() { + return mt(this.c); + }, o.dc = function() { + return this.c.dc(); + }, o.ec = function() { + return mIn(this); + }, o.zc = function(e, t) { + throw M(new Pe()); + }, o.Bc = function(e) { + throw M(new Pe()); + }, o.gc = function() { + return this.c.gc(); + }, o.Ib = function() { + return Jr(this.c); + }, o.Cc = function() { + return pIn(this); + }, w(le, "Collections/UnmodifiableMap", 609), b(396, 384, rB, r4), o.Nc = function() { + return new In(this, 1); + }, o.Fb = function(e) { + return ct(this.b, e); + }, o.Hb = function() { + return mt(this.b); + }, w(le, "Collections/UnmodifiableSet", 396), b(957, 396, rB, Ujn), o.Hc = function(e) { + return eCn(this, e); + }, o.Ic = function(e) { + return this.b.Ic(e); + }, o.Kc = function() { + var e; + return e = this.b.Kc(), new h9n(e); + }, o.Pc = function() { + var e; + return e = this.b.Pc(), JDn(e, e.length), e; + }, o.Qc = function(e) { + return tOn(this, e); + }, w(le, "Collections/UnmodifiableMap/UnmodifiableEntrySet", 957), b(958, 1, Pi, h9n), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return new CG(u(this.a.Pb(), 44)); + }, o.Ob = function() { + return this.a.Ob(); + }, o.Qb = function() { + throw M(new Pe()); + }, w(le, "Collections/UnmodifiableMap/UnmodifiableEntrySet/1", 958), b(703, 1, IB, CG), o.Fb = function(e) { + return this.a.Fb(e); + }, o.ld = function() { + return this.a.ld(); + }, o.md = function() { + return this.a.md(); + }, o.Hb = function() { + return this.a.Hb(); + }, o.nd = function(e) { + throw M(new Pe()); + }, o.Ib = function() { + return Jr(this.a); + }, w(le, "Collections/UnmodifiableMap/UnmodifiableEntrySet/UnmodifiableEntry", 703), b(610, 540, { 20: 1, 16: 1, 15: 1, 59: 1 }, jD), w(le, "Collections/UnmodifiableRandomAccessList", 610), b(704, 396, $zn, VX), o.Nc = function() { + return new cC(this); + }, o.Fb = function(e) { + return ct(this.a, e); + }, o.Hb = function() { + return mt(this.a); + }, w(le, "Collections/UnmodifiableSortedSet", 704), b(858, 1, OB, D0n), o.Ne = function(e, t) { + var i; + return i = VDn(u(e, 12), u(t, 12)), i != 0 ? i : AUn(u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(le, "Comparator/lambda$0$Type", 858); + var Iun, ZK, Oun; + b(769, 1, OB, BU), o.Ne = function(e, t) { + return Fbe(u(e, 34), u(t, 34)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return j0(), Oun; + }, w(le, "Comparators/NaturalOrderComparator", 769), b(1226, 1, OB, L0n), o.Ne = function(e, t) { + return xbe(u(e, 34), u(t, 34)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return j0(), ZK; + }, w(le, "Comparators/ReverseNaturalOrderComparator", 1226), b(52, 1, OB, Te), o.Fb = function(e) { + return this === e; + }, o.Ne = function(e, t) { + return this.a.Ne(t, e); + }, o.Oe = function() { + return this.a; + }, w(le, "Comparators/ReversedComparator", 52), b(175, 63, Pl, Bo), w(le, "ConcurrentModificationException", 175); + var CQn, MQn; + b(1948, 1, Py, N0n), o.Pe = function(e) { + OBn(this, e); + }, o.Ib = function() { + return "DoubleSummaryStatistics[count = " + _6(this.a) + ", avg = " + (LD(this.a, 0) ? _J(this) / id(this.a) : 0) + ", min = " + this.c + ", max = " + this.b + ", sum = " + _J(this) + "]"; + }, o.a = 0, o.b = li, o.c = St, o.d = 0, o.e = 0, o.f = 0, w(le, "DoubleSummaryStatistics", 1948), b(1868, 63, Pl, xyn), w(le, "EmptyStackException", 1868), b(461, 2065, X0, y5), o.zc = function(e, t) { + return mV(this, e, t); + }, o.$b = function() { + cIn(this); + }, o._b = function(e) { + return kCn(this, e); + }, o.uc = function(e) { + var t, i; + for (i = new dp(this.a); i.a < i.c.a.length; ) + if (t = n5(i), vc(e, this.b[t.g])) + return !0; + return !1; + }, o.vc = function() { + return new a9n(this); + }, o.xc = function(e) { + return Mr(this, e); + }, o.Bc = function(e) { + return aJ(this, e); + }, o.gc = function() { + return this.a.c; + }, w(le, "EnumMap", 461), b(1340, Kf, Nu, a9n), o.$b = function() { + cIn(this.a); + }, o.Hc = function(e) { + return kDn(this, e); + }, o.Kc = function() { + return new rPn(this.a); + }, o.Mc = function(e) { + var t; + return kDn(this, e) ? (t = u(e, 44).ld(), aJ(this.a, t), !0) : !1; + }, o.gc = function() { + return this.a.a.c; + }, w(le, "EnumMap/EntrySet", 1340), b(1341, 1, Pi, rPn), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return this.b = n5(this.a), new jCn(this.c, this.b); + }, o.Ob = function() { + return OX(this.a); + }, o.Qb = function() { + Fb(!!this.b), aJ(this.c, this.b), this.b = null; + }, w(le, "EnumMap/EntrySetIterator", 1341), b(1342, 2082, IB, jCn), o.ld = function() { + return this.a; + }, o.md = function() { + return this.b.b[this.a.g]; + }, o.nd = function(e) { + return eW(this.b.b, this.a.g, e); + }, w(le, "EnumMap/MapEntry", 1342), b(181, Kf, { 20: 1, 31: 1, 16: 1, 181: 1, 21: 1 }); + var TQn = w(le, "EnumSet", 181); + b(162, 181, { 20: 1, 31: 1, 16: 1, 181: 1, 162: 1, 21: 1 }, _o), o.Fc = function(e) { + return _s(this, u(e, 22)); + }, o.Hc = function(e) { + return JL(this, e); + }, o.Kc = function() { + return new dp(this); + }, o.Mc = function(e) { + return dPn(this, e); + }, o.gc = function() { + return this.c; + }, o.c = 0, w(le, "EnumSet/EnumSetImpl", 162), b(356, 1, Pi, dp), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return n5(this); + }, o.Ob = function() { + return OX(this); + }, o.Qb = function() { + Fb(this.b != -1), Rt(this.c.b, this.b, null), --this.c.c, this.b = -1; + }, o.a = -1, o.b = -1, w(le, "EnumSet/EnumSetImpl/IteratorImpl", 356), b(45, 498, n2, de, ap, KMn), o.Be = function(e, t) { + return x(e) === x(t) || e != null && ct(e, t); + }, o.Ce = function(e) { + var t; + return e == null ? 0 : (t = mt(e), t | 0); + }, w(le, "HashMap", 45), b(49, Kf, Ctn, ni, zE, F6), o.Fc = function(e) { + return fi(this, e); + }, o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return sf(this, e); + }, o.dc = function() { + return this.a.gc() == 0; + }, o.Kc = function() { + return this.a.ec().Kc(); + }, o.Mc = function(e) { + return xX(this, e); + }, o.gc = function() { + return this.a.gc(); + }; + var sNe = w(le, "HashSet", 49); + b(1897, 1, jy, $0n), o.Dd = function(e) { + _xn(this, e); + }, o.Ib = function() { + return "IntSummaryStatistics[count = " + _6(this.a) + ", avg = " + (LD(this.a, 0) ? id(this.d) / id(this.a) : 0) + ", min = " + this.c + ", max = " + this.b + ", sum = " + _6(this.d) + "]"; + }, o.a = 0, o.b = Wi, o.c = tt, o.d = 0, w(le, "IntSummaryStatistics", 1897), b(1062, 1, qh, rTn), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return new JJ(this); + }, o.c = 0, w(le, "InternalHashCodeMap", 1062), b(726, 1, Pi, JJ), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return this.d = this.a[this.c++], this.d; + }, o.Ob = function() { + var e; + return this.c < this.a.length ? !0 : (e = this.b.next(), e.done ? !1 : (this.a = e.value[1], this.c = 0, !0)); + }, o.Qb = function() { + qnn(this.e, this.d.ld()), this.c != 0 && --this.c; + }, o.c = 0, o.d = null, w(le, "InternalHashCodeMap/1", 726); + var AQn; + b(1060, 1, qh, cTn), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return new SJ(this); + }, o.c = 0, o.d = 0, w(le, "InternalStringMap", 1060), b(725, 1, Pi, SJ), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return this.c = this.a, this.a = this.b.next(), new lSn(this.d, this.c, this.d.d); + }, o.Ob = function() { + return !this.a.done; + }, o.Qb = function() { + zxn(this.d, this.c.value[0]); + }, w(le, "InternalStringMap/1", 725), b(1061, 2082, IB, lSn), o.ld = function() { + return this.b.value[0]; + }, o.md = function() { + return this.a.d != this.c ? a6(this.a, this.b.value[0]) : this.b.value[1]; + }, o.nd = function(e) { + return $0(this.a, this.b.value[0], e); + }, o.c = 0, w(le, "InternalStringMap/2", 1061), b(215, 45, n2, Ql, WJ), o.$b = function() { + FAn(this); + }, o._b = function(e) { + return yCn(this, e); + }, o.uc = function(e) { + var t; + for (t = this.d.a; t != this.d; ) { + if (vc(t.e, e)) + return !0; + t = t.a; + } + return !1; + }, o.vc = function() { + return new IG(this); + }, o.xc = function(e) { + return Nf(this, e); + }, o.zc = function(e, t) { + return s1(this, e, t); + }, o.Bc = function(e) { + return GNn(this, e); + }, o.gc = function() { + return c6(this.e); + }, o.c = !1, w(le, "LinkedHashMap", 215), b(400, 397, { 494: 1, 397: 1, 400: 1, 44: 1 }, uAn, GV), w(le, "LinkedHashMap/ChainEntry", 400), b(715, Kf, Nu, IG), o.$b = function() { + FAn(this.a); + }, o.Hc = function(e) { + return yDn(this, e); + }, o.Kc = function() { + return new FW(this); + }, o.Mc = function(e) { + var t; + return yDn(this, e) ? (t = u(e, 44).ld(), GNn(this.a, t), !0) : !1; + }, o.gc = function() { + return c6(this.a.e); + }, w(le, "LinkedHashMap/EntrySet", 715), b(716, 1, Pi, FW), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return JNn(this); + }, o.Ob = function() { + return this.c != this.d.a.d; + }, o.Qb = function() { + Fb(!!this.a), FL(this.d.a.e.g, this.b), iW(this.a), Bp(this.d.a.e, this.a.d), this.b = this.d.a.e.g, this.a = null; + }, o.b = 0, w(le, "LinkedHashMap/EntrySet/EntryIterator", 716), b(174, 49, Ctn, rh, CL, hW); + var fNe = w(le, "LinkedHashSet", 174); + b(67, 2062, { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 67: 1, 15: 1 }, Ct, $L), o.Fc = function(e) { + return Fe(this, e); + }, o.$b = function() { + vo(this); + }, o.fd = function(e) { + return ge(this, e); + }, o.gc = function() { + return this.b; + }, o.b = 0; + var hNe = w(le, "LinkedList", 67); + b(981, 1, Hh, aSn), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + _7(this, e); + }, o.Ob = function() { + return Q9(this); + }, o.Sb = function() { + return this.b.b != this.d.a; + }, o.Pb = function() { + return be(this); + }, o.Tb = function() { + return this.a; + }, o.Ub = function() { + return gDn(this); + }, o.Vb = function() { + return this.a - 1; + }, o.Qb = function() { + p$(this); + }, o.Wb = function(e) { + Fb(!!this.c), this.c.c = e; + }, o.a = 0, o.c = null, w(le, "LinkedList/ListIteratorImpl", 981), b(617, 1, {}, OO), w(le, "LinkedList/Node", 617), b(2057, 1, {}); + var Dun, SQn; + w(le, "Locale", 2057), b(873, 2057, {}, x0n), o.Ib = function() { + return ""; + }, w(le, "Locale/1", 873), b(874, 2057, {}, F0n), o.Ib = function() { + return "unknown"; + }, w(le, "Locale/4", 874), b(112, 63, { 3: 1, 103: 1, 63: 1, 82: 1, 112: 1 }, nc, IIn), w(le, "NoSuchElementException", 112), b(475, 1, { 475: 1 }, wD), o.Fb = function(e) { + var t; + return e === this ? !0 : D(e, 475) ? (t = u(e, 475), vc(this.a, t.a)) : !1; + }, o.Hb = function() { + return yg(this.a); + }, o.Ib = function() { + return this.a != null ? Pzn + O6(this.a) + ")" : "Optional.empty()"; + }; + var Lun; + w(le, "Optional", 475), b(414, 1, { 414: 1 }, UMn, AL), o.Fb = function(e) { + var t; + return e === this ? !0 : D(e, 414) ? (t = u(e, 414), this.a == t.a && bt(this.b, t.b) == 0) : !1; + }, o.Hb = function() { + return this.a ? wi(this.b) : 0; + }, o.Ib = function() { + return this.a ? "OptionalDouble.of(" + ("" + this.b) + ")" : "OptionalDouble.empty()"; + }, o.a = !1, o.b = 0; + var n_; + w(le, "OptionalDouble", 414), b(524, 1, { 524: 1 }, GMn, oAn), o.Fb = function(e) { + var t; + return e === this ? !0 : D(e, 524) ? (t = u(e, 524), this.a == t.a && Ec(this.b, t.b) == 0) : !1; + }, o.Hb = function() { + return this.a ? this.b : 0; + }, o.Ib = function() { + return this.a ? "OptionalInt.of(" + ("" + this.b) + ")" : "OptionalInt.empty()"; + }, o.a = !1, o.b = 0; + var PQn; + w(le, "OptionalInt", 524), b(510, 2103, pw, dM), o.Gc = function(e) { + return MZ(this, e); + }, o.$b = function() { + Pb(this.b.c, 0); + }, o.Hc = function(e) { + return (e == null ? -1 : qr(this.b, e, 0)) != -1; + }, o.Kc = function() { + return new l9n(this); + }, o.Mc = function(e) { + return axn(this, e); + }, o.gc = function() { + return this.b.c.length; + }, o.Nc = function() { + return new In(this, 256); + }, o.Pc = function() { + return ZC(this.b.c); + }, o.Qc = function(e) { + return Ff(this.b, e); + }, w(le, "PriorityQueue", 510), b(1296, 1, Pi, l9n), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.a < this.c.b.c.length; + }, o.Pb = function() { + return oe(this.a < this.c.b.c.length), this.b = this.a++, sn(this.c.b, this.b); + }, o.Qb = function() { + Fb(this.b != -1), M$(this.c, this.a = this.b), this.b = -1; + }, o.a = 0, o.b = -1, w(le, "PriorityQueue/1", 1296), b(234, 1, { 234: 1 }, dx, qM), o.a = 0, o.b = 0; + var Nun, $un, lNe = 0; + w(le, "Random", 234), b(25, 1, Po, In, p0, SIn), o.Ad = function(e) { + return (this.a & e) != 0; + }, o.yd = function() { + return this.a; + }, o.zd = function() { + return yW(this), this.c; + }, o.Nb = function(e) { + yW(this), this.d.Nb(e); + }, o.Bd = function(e) { + return j$n(this, e); + }, o.a = 0, o.c = 0, w(le, "Spliterators/IteratorSpliterator", 25), b(495, 25, Po, cC), w(le, "SortedSet/1", 495), b(611, 1, Py, AG), o.Pe = function(e) { + this.a.Cd(e); + }, w(le, "Spliterator/OfDouble/0methodref$accept$Type", 611), b(612, 1, Py, TG), o.Pe = function(e) { + this.a.Cd(e); + }, w(le, "Spliterator/OfDouble/1methodref$accept$Type", 612), b(613, 1, jy, SG), o.Dd = function(e) { + this.a.Cd(Y(e)); + }, w(le, "Spliterator/OfInt/2methodref$accept$Type", 613), b(614, 1, jy, PG), o.Dd = function(e) { + this.a.Cd(Y(e)); + }, w(le, "Spliterator/OfInt/3methodref$accept$Type", 614), b(625, 1, Po), o.Nb = function(e) { + Az(this, e); + }, o.Ad = function(e) { + return (this.d & e) != 0; + }, o.yd = function() { + return this.d; + }, o.zd = function() { + return this.e; + }, o.d = 0, o.e = 0, w(le, "Spliterators/BaseSpliterator", 625), b(736, 625, Po), o.Qe = function(e) { + lg(this, e); + }, o.Nb = function(e) { + D(e, 189) ? lg(this, u(e, 189)) : lg(this, new TG(e)); + }, o.Bd = function(e) { + return D(e, 189) ? this.Re(u(e, 189)) : this.Re(new AG(e)); + }, w(le, "Spliterators/AbstractDoubleSpliterator", 736), b(735, 625, Po), o.Qe = function(e) { + lg(this, e); + }, o.Nb = function(e) { + D(e, 202) ? lg(this, u(e, 202)) : lg(this, new PG(e)); + }, o.Bd = function(e) { + return D(e, 202) ? this.Re(u(e, 202)) : this.Re(new SG(e)); + }, w(le, "Spliterators/AbstractIntSpliterator", 735), b(500, 625, Po), w(le, "Spliterators/AbstractSpliterator", 500), b(706, 1, Po), o.Nb = function(e) { + Az(this, e); + }, o.Ad = function(e) { + return (this.b & e) != 0; + }, o.yd = function() { + return this.b; + }, o.zd = function() { + return this.d - this.c; + }, o.b = 0, o.c = 0, o.d = 0, w(le, "Spliterators/BaseArraySpliterator", 706), b(960, 706, Po, VSn), o.Se = function(e, t) { + mhe(this, u(e, 41), t); + }, o.Nb = function(e) { + gN(this, e); + }, o.Bd = function(e) { + return WM(this, e); + }, w(le, "Spliterators/ArraySpliterator", 960), b(707, 706, Po, sSn), o.Se = function(e, t) { + vhe(this, u(e, 189), t); + }, o.Qe = function(e) { + gN(this, e); + }, o.Nb = function(e) { + D(e, 189) ? gN(this, u(e, 189)) : gN(this, new TG(e)); + }, o.Re = function(e) { + return WM(this, e); + }, o.Bd = function(e) { + return D(e, 189) ? WM(this, u(e, 189)) : WM(this, new AG(e)); + }, w(le, "Spliterators/DoubleArraySpliterator", 707), b(2066, 1, Po), o.Nb = function(e) { + Az(this, e); + }, o.Ad = function(e) { + return (16448 & e) != 0; + }, o.yd = function() { + return 16448; + }, o.zd = function() { + return 0; + }; + var IQn; + w(le, "Spliterators/EmptySpliterator", 2066), b(959, 2066, Po, B0n), o.Qe = function(e) { + fG(e); + }, o.Nb = function(e) { + D(e, 202) ? fG(u(e, 202)) : fG(new PG(e)); + }, o.Re = function(e) { + return _z(e); + }, o.Bd = function(e) { + return D(e, 202) ? _z(u(e, 202)) : _z(new SG(e)); + }, w(le, "Spliterators/EmptySpliterator/OfInt", 959), b(588, 56, Wzn, BE), o.bd = function(e, t) { + E4(e, this.a.c.length + 1), b0(this.a, e, t); + }, o.Fc = function(e) { + return nn(this.a, e); + }, o.cd = function(e, t) { + return E4(e, this.a.c.length + 1), bY(this.a, e, t); + }, o.Gc = function(e) { + return hi(this.a, e); + }, o.$b = function() { + Pb(this.a.c, 0); + }, o.Hc = function(e) { + return qr(this.a, e, 0) != -1; + }, o.Ic = function(e) { + return Ek(this.a, e); + }, o.Jc = function(e) { + eu(this.a, e); + }, o.Xb = function(e) { + return E4(e, this.a.c.length), sn(this.a, e); + }, o.dd = function(e) { + return qr(this.a, e, 0); + }, o.dc = function() { + return this.a.c.length == 0; + }, o.Kc = function() { + return new C(this.a); + }, o.gd = function(e) { + return E4(e, this.a.c.length), Yl(this.a, e); + }, o.ce = function(e, t) { + FOn(this.a, e, t); + }, o.hd = function(e, t) { + return E4(e, this.a.c.length), Go(this.a, e, t); + }, o.gc = function() { + return this.a.c.length; + }, o.jd = function(e) { + Yt(this.a, e); + }, o.kd = function(e, t) { + return new Jl(this.a, e, t); + }, o.Pc = function() { + return ZC(this.a.c); + }, o.Qc = function(e) { + return Ff(this.a, e); + }, o.Ib = function() { + return ca(this.a); + }, w(le, "Vector", 588), b(824, 588, Wzn, nz), w(le, "Stack", 824), b(213, 1, { 213: 1 }, fd), o.Ib = function() { + return wDn(this); + }, w(le, "StringJoiner", 213), b(553, 2090, { 3: 1, 85: 1, 139: 1, 133: 1 }, cCn, iN), o.$b = function() { + xjn(this); + }, o.De = function() { + return new jDn(this); + }, o.vc = function() { + return new nAn(this); + }, o.Ee = function(e) { + return bm(this, e, !0); + }, o.Fe = function(e) { + return AFn(this, e); + }, o.Ge = function() { + return tQ(this); + }, o.He = function(e) { + return Kk(this, e, !0); + }, o.Ie = function(e) { + return bm(this, e, !1); + }, o.Je = function() { + return $Nn(this); + }, o.Ke = function(e) { + return Kk(this, e, !1); + }, o.Zc = function(e, t) { + return BOn(this, e, t); + }, o.zc = function(e, t) { + return pFn(this, e, t); + }, o.Bc = function(e) { + return oOn(this, e); + }, o.Le = function(e) { + return zJ(this, e); + }, o.gc = function() { + return this.c; + }, o.ad = function(e, t) { + return ROn(this, e, t); + }, o.c = 0, w(le, "TreeMap", 553), b(554, 1, Pi, jDn, P$), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return sAn(this); + }, o.Ob = function() { + return DD(this.a); + }, o.Qb = function() { + bSn(this); + }, w(le, "TreeMap/EntryIterator", 554), b(1142, 629, Nu, nAn), o.$b = function() { + xjn(this.a); + }, w(le, "TreeMap/EntrySet", 1142), b(447, 397, { 494: 1, 397: 1, 44: 1, 447: 1 }, r$), o.b = !1; + var aNe = w(le, "TreeMap/Node", 447); + b(630, 1, {}, DO), o.Ib = function() { + return "State: mv=" + this.c + " value=" + this.d + " done=" + this.a + " found=" + this.b; + }, o.a = !1, o.b = !1, o.c = !1, w(le, "TreeMap/State", 630), b(631, 2090, gtn, rF), o.De = function() { + return new P$(this.c, this.f, this.b, this.a, this.e, this.d); + }, o.vc = function() { + return new ZO(this); + }, o.Ee = function(e) { + return WC(this, bm(this.c, e, !0)); + }, o.Fe = function(e) { + return WC(this, AFn(this.c, e)); + }, o.Ge = function() { + var e; + return this.f.Te() ? this.a ? e = bm(this.c, this.b, !0) : e = bm(this.c, this.b, !1) : e = tQ(this.c), e && vM(this, e.d) ? e : null; + }, o.He = function(e) { + return WC(this, Kk(this.c, e, !0)); + }, o.Ie = function(e) { + return WC(this, bm(this.c, e, !1)); + }, o.Je = function() { + var e; + return this.f.Ue() ? this.d ? e = Kk(this.c, this.e, !0) : e = Kk(this.c, this.e, !1) : e = $Nn(this.c), e && vM(this, e.d) ? e : null; + }, o.Ke = function(e) { + return WC(this, Kk(this.c, e, !1)); + }, o.Zc = function(e, t) { + if (this.f.Ue() && this.c.a.Ne(e, this.e) > 0) + throw M(new Gn(Atn + e + " greater than " + this.e)); + return this.f.Te() ? uOn(this.c, this.b, this.a, e, t) : BOn(this.c, e, t); + }, o.zc = function(e, t) { + if (!qx(this.c, this.f, e, this.b, this.a, this.e, this.d)) + throw M(new Gn(e + " outside the range " + this.b + " to " + this.e)); + return pFn(this.c, e, t); + }, o.Bc = function(e) { + var t; + return t = e, qx(this.c, this.f, t, this.b, this.a, this.e, this.d) ? oOn(this.c, t) : null; + }, o.Le = function(e) { + return vM(this, e.ld()) && zJ(this.c, e); + }, o.gc = function() { + var e, t, i; + if (this.f.Te() ? this.a ? t = bm(this.c, this.b, !0) : t = bm(this.c, this.b, !1) : t = tQ(this.c), !(t && vM(this, t.d) && t)) + return 0; + for (e = 0, i = new P$(this.c, this.f, this.b, this.a, this.e, this.d); DD(i.a); i.b = u(WW(i.a), 44)) + ++e; + return e; + }, o.ad = function(e, t) { + if (this.f.Te() && this.c.a.Ne(e, this.b) < 0) + throw M(new Gn(Atn + e + Jzn + this.b)); + return this.f.Ue() ? uOn(this.c, e, t, this.e, this.d) : ROn(this.c, e, t); + }, o.a = !1, o.d = !1, w(le, "TreeMap/SubMap", 631), b(304, 22, NB, uC), o.Te = function() { + return !1; + }, o.Ue = function() { + return !1; + }; + var e_, t_, i_, r_, lP = we(le, "TreeMap/SubMapType", 304, ke, Gpe, ede); + b(1143, 304, NB, aTn), o.Ue = function() { + return !0; + }, we(le, "TreeMap/SubMapType/1", 1143, lP, null, null), b(1144, 304, NB, yTn), o.Te = function() { + return !0; + }, o.Ue = function() { + return !0; + }, we(le, "TreeMap/SubMapType/2", 1144, lP, null, null), b(1145, 304, NB, lTn), o.Te = function() { + return !0; + }, we(le, "TreeMap/SubMapType/3", 1145, lP, null, null); + var OQn; + b(157, Kf, { 3: 1, 20: 1, 31: 1, 16: 1, 277: 1, 21: 1, 87: 1, 157: 1 }, zG, Ul, Y3), o.Nc = function() { + return new cC(this); + }, o.Fc = function(e) { + return R7(this, e); + }, o.$b = function() { + this.a.$b(); + }, o.Hc = function(e) { + return this.a._b(e); + }, o.Kc = function() { + return this.a.ec().Kc(); + }, o.Mc = function(e) { + return EL(this, e); + }, o.gc = function() { + return this.a.gc(); + }; + var dNe = w(le, "TreeSet", 157); + b(1082, 1, {}, d9n), o.Ve = function(e, t) { + return mae(this.a, e, t); + }, w($B, "BinaryOperator/lambda$0$Type", 1082), b(1083, 1, {}, b9n), o.Ve = function(e, t) { + return vae(this.a, e, t); + }, w($B, "BinaryOperator/lambda$1$Type", 1083), b(952, 1, {}, R0n), o.Kb = function(e) { + return e; + }, w($B, "Function/lambda$0$Type", 952), b(395, 1, De, Z3), o.Mb = function(e) { + return !this.a.Mb(e); + }, w($B, "Predicate/lambda$2$Type", 395), b(581, 1, { 581: 1 }); + var DQn = w(Y5, "Handler", 581); + b(2107, 1, ky), o.xe = function() { + return "DUMMY"; + }, o.Ib = function() { + return this.xe(); + }; + var xun; + w(Y5, "Level", 2107), b(1706, 2107, ky, K0n), o.xe = function() { + return "INFO"; + }, w(Y5, "Level/LevelInfo", 1706), b(1843, 1, {}, Kyn); + var c_; + w(Y5, "LogManager", 1843), b(1896, 1, ky, dSn), o.b = null, w(Y5, "LogRecord", 1896), b(525, 1, { 525: 1 }, VN), o.e = !1; + var LQn = !1, NQn = !1, Uf = !1, $Qn = !1, xQn = !1; + w(Y5, "Logger", 525), b(835, 581, { 581: 1 }, RU), w(Y5, "SimpleConsoleLogHandler", 835), b(108, 22, { 3: 1, 34: 1, 22: 1, 108: 1 }, $D); + var Fun, Yr, Aw, xr = we(ai, "Collector/Characteristics", 108, ke, D2e, tde), FQn; + b(758, 1, {}, SW), w(ai, "CollectorImpl", 758), b(1074, 1, {}, _0n), o.Ve = function(e, t) { + return a5e(u(e, 213), u(t, 213)); + }, w(ai, "Collectors/10methodref$merge$Type", 1074), b(1075, 1, {}, H0n), o.Kb = function(e) { + return wDn(u(e, 213)); + }, w(ai, "Collectors/11methodref$toString$Type", 1075), b(1076, 1, {}, w9n), o.Kb = function(e) { + return _n(), !!jX(e); + }, w(ai, "Collectors/12methodref$test$Type", 1076), b(144, 1, {}, ju), o.Yd = function(e, t) { + u(e, 16).Fc(t); + }, w(ai, "Collectors/20methodref$add$Type", 144), b(146, 1, {}, Eu), o.Xe = function() { + return new Z(); + }, w(ai, "Collectors/21methodref$ctor$Type", 146), b(359, 1, {}, Y2), o.Xe = function() { + return new ni(); + }, w(ai, "Collectors/23methodref$ctor$Type", 359), b(360, 1, {}, Z2), o.Yd = function(e, t) { + fi(u(e, 49), t); + }, w(ai, "Collectors/24methodref$add$Type", 360), b(1069, 1, {}, q0n), o.Ve = function(e, t) { + return uCn(u(e, 15), u(t, 16)); + }, w(ai, "Collectors/4methodref$addAll$Type", 1069), b(1073, 1, {}, U0n), o.Yd = function(e, t) { + pl(u(e, 213), u(t, 484)); + }, w(ai, "Collectors/9methodref$add$Type", 1073), b(1072, 1, {}, ISn), o.Xe = function() { + return new fd(this.a, this.b, this.c); + }, w(ai, "Collectors/lambda$15$Type", 1072), b(1077, 1, {}, G0n), o.Xe = function() { + var e; + return e = new Ql(), s1(e, (_n(), !1), new Z()), s1(e, !0, new Z()), e; + }, w(ai, "Collectors/lambda$22$Type", 1077), b(1078, 1, {}, g9n), o.Xe = function() { + return A(T(ki, 1), Bn, 1, 5, [this.a]); + }, w(ai, "Collectors/lambda$25$Type", 1078), b(1079, 1, {}, p9n), o.Yd = function(e, t) { + Bbe(this.a, cd(e)); + }, w(ai, "Collectors/lambda$26$Type", 1079), b(1080, 1, {}, m9n), o.Ve = function(e, t) { + return awe(this.a, cd(e), cd(t)); + }, w(ai, "Collectors/lambda$27$Type", 1080), b(1081, 1, {}, z0n), o.Kb = function(e) { + return cd(e)[0]; + }, w(ai, "Collectors/lambda$28$Type", 1081), b(728, 1, {}, KU), o.Ve = function(e, t) { + return sW(e, t); + }, w(ai, "Collectors/lambda$4$Type", 728), b(145, 1, {}, Cu), o.Ve = function(e, t) { + return Xhe(u(e, 16), u(t, 16)); + }, w(ai, "Collectors/lambda$42$Type", 145), b(361, 1, {}, np), o.Ve = function(e, t) { + return Vhe(u(e, 49), u(t, 49)); + }, w(ai, "Collectors/lambda$50$Type", 361), b(362, 1, {}, ep), o.Kb = function(e) { + return u(e, 49); + }, w(ai, "Collectors/lambda$51$Type", 362), b(1068, 1, {}, v9n), o.Yd = function(e, t) { + m6e(this.a, u(e, 85), t); + }, w(ai, "Collectors/lambda$7$Type", 1068), b(1070, 1, {}, X0n), o.Ve = function(e, t) { + return Vve(u(e, 85), u(t, 85), new q0n()); + }, w(ai, "Collectors/lambda$8$Type", 1070), b(1071, 1, {}, k9n), o.Kb = function(e) { + return G5e(this.a, u(e, 85)); + }, w(ai, "Collectors/lambda$9$Type", 1071), b(550, 1, {}), o.$e = function() { + X6(this); + }, o.d = !1, w(ai, "TerminatableStream", 550), b(827, 550, Stn, oV), o.$e = function() { + X6(this); + }, w(ai, "DoubleStreamImpl", 827), b(1847, 736, Po, OSn), o.Re = function(e) { + return V9e(this, u(e, 189)); + }, o.a = null, w(ai, "DoubleStreamImpl/2", 1847), b(1848, 1, Py, y9n), o.Pe = function(e) { + _le(this.a, e); + }, w(ai, "DoubleStreamImpl/2/lambda$0$Type", 1848), b(1845, 1, Py, j9n), o.Pe = function(e) { + Kle(this.a, e); + }, w(ai, "DoubleStreamImpl/lambda$0$Type", 1845), b(1846, 1, Py, E9n), o.Pe = function(e) { + OBn(this.a, e); + }, w(ai, "DoubleStreamImpl/lambda$2$Type", 1846), b(1397, 735, Po, kLn), o.Re = function(e) { + return Npe(this, u(e, 202)); + }, o.a = 0, o.b = 0, o.c = 0, w(ai, "IntStream/5", 1397), b(806, 550, Stn, sV), o.$e = function() { + X6(this); + }, o._e = function() { + return X1(this), this.a; + }, w(ai, "IntStreamImpl", 806), b(807, 550, Stn, Lz), o.$e = function() { + X6(this); + }, o._e = function() { + return X1(this), qX(), IQn; + }, w(ai, "IntStreamImpl/Empty", 807), b(1687, 1, jy, C9n), o.Dd = function(e) { + _xn(this.a, e); + }, w(ai, "IntStreamImpl/lambda$4$Type", 1687); + var bNe = xt(ai, "Stream"); + b(26, 550, { 533: 1, 687: 1, 848: 1 }, Tn), o.$e = function() { + X6(this); + }; + var v3; + w(ai, "StreamImpl", 26), b(1102, 500, Po, cSn), o.Bd = function(e) { + for (; F4e(this); ) { + if (this.a.Bd(e)) + return !0; + X6(this.b), this.b = null, this.a = null; + } + return !1; + }, w(ai, "StreamImpl/1", 1102), b(1103, 1, re, M9n), o.Cd = function(e) { + hbe(this.a, u(e, 848)); + }, w(ai, "StreamImpl/1/lambda$0$Type", 1103), b(1104, 1, De, T9n), o.Mb = function(e) { + return fi(this.a, e); + }, w(ai, "StreamImpl/1methodref$add$Type", 1104), b(1105, 500, Po, RIn), o.Bd = function(e) { + var t; + return this.a || (t = new Z(), this.b.a.Nb(new A9n(t)), Dn(), Yt(t, this.c), this.a = new In(t, 16)), j$n(this.a, e); + }, o.a = null, w(ai, "StreamImpl/5", 1105), b(1106, 1, re, A9n), o.Cd = function(e) { + nn(this.a, e); + }, w(ai, "StreamImpl/5/2methodref$add$Type", 1106), b(737, 500, Po, iQ), o.Bd = function(e) { + for (this.b = !1; !this.b && this.c.Bd(new ECn(this, e)); ) + ; + return this.b; + }, o.b = !1, w(ai, "StreamImpl/FilterSpliterator", 737), b(1096, 1, re, ECn), o.Cd = function(e) { + uwe(this.a, this.b, e); + }, w(ai, "StreamImpl/FilterSpliterator/lambda$0$Type", 1096), b(1091, 736, Po, OLn), o.Re = function(e) { + return Kae(this, u(e, 189)); + }, w(ai, "StreamImpl/MapToDoubleSpliterator", 1091), b(1095, 1, re, CCn), o.Cd = function(e) { + hle(this.a, this.b, e); + }, w(ai, "StreamImpl/MapToDoubleSpliterator/lambda$0$Type", 1095), b(1090, 735, Po, DLn), o.Re = function(e) { + return _ae(this, u(e, 202)); + }, w(ai, "StreamImpl/MapToIntSpliterator", 1090), b(1094, 1, re, MCn), o.Cd = function(e) { + lle(this.a, this.b, e); + }, w(ai, "StreamImpl/MapToIntSpliterator/lambda$0$Type", 1094), b(734, 500, Po, HJ), o.Bd = function(e) { + return tSn(this, e); + }, w(ai, "StreamImpl/MapToObjSpliterator", 734), b(1093, 1, re, TCn), o.Cd = function(e) { + ale(this.a, this.b, e); + }, w(ai, "StreamImpl/MapToObjSpliterator/lambda$0$Type", 1093), b(1092, 500, Po, oxn), o.Bd = function(e) { + for (; LD(this.b, 0); ) { + if (!this.a.Bd(new V0n())) + return !1; + this.b = bs(this.b, 1); + } + return this.a.Bd(e); + }, o.b = 0, w(ai, "StreamImpl/SkipSpliterator", 1092), b(1097, 1, re, V0n), o.Cd = function(e) { + }, w(ai, "StreamImpl/SkipSpliterator/lambda$0$Type", 1097), b(626, 1, re, LO), o.Cd = function(e) { + i9n(this, e); + }, w(ai, "StreamImpl/ValueConsumer", 626), b(1098, 1, re, W0n), o.Cd = function(e) { + Va(); + }, w(ai, "StreamImpl/lambda$0$Type", 1098), b(1099, 1, re, J0n), o.Cd = function(e) { + Va(); + }, w(ai, "StreamImpl/lambda$1$Type", 1099), b(1100, 1, {}, S9n), o.Ve = function(e, t) { + return vde(this.a, e, t); + }, w(ai, "StreamImpl/lambda$4$Type", 1100), b(1101, 1, re, ACn), o.Cd = function(e) { + Mae(this.b, this.a, e); + }, w(ai, "StreamImpl/lambda$5$Type", 1101), b(1107, 1, re, P9n), o.Cd = function(e) { + xve(this.a, u(e, 380)); + }, w(ai, "TerminatableStream/lambda$0$Type", 1107), b(2142, 1, {}), b(2014, 1, {}, Q0n), w("javaemul.internal", "ConsoleLogger", 2014); + var wNe = 0; + b(2134, 1, {}), b(1830, 1, re, Y0n), o.Cd = function(e) { + u(e, 317); + }, w(Hm, "BowyerWatsonTriangulation/lambda$0$Type", 1830), b(1831, 1, re, I9n), o.Cd = function(e) { + Bi(this.a, u(e, 317).e); + }, w(Hm, "BowyerWatsonTriangulation/lambda$1$Type", 1831), b(1832, 1, re, Z0n), o.Cd = function(e) { + u(e, 177); + }, w(Hm, "BowyerWatsonTriangulation/lambda$2$Type", 1832), b(1827, 1, Ne, O9n), o.Ne = function(e, t) { + return v3e(this.a, u(e, 177), u(t, 177)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Hm, "NaiveMinST/lambda$0$Type", 1827), b(449, 1, {}, Xv), w(Hm, "NodeMicroLayout", 449), b(177, 1, { 177: 1 }, bp), o.Fb = function(e) { + var t; + return D(e, 177) ? (t = u(e, 177), vc(this.a, t.a) && vc(this.b, t.b) || vc(this.a, t.b) && vc(this.b, t.a)) : !1; + }, o.Hb = function() { + return yg(this.a) + yg(this.b); + }; + var gNe = w(Hm, "TEdge", 177); + b(317, 1, { 317: 1 }, Hen), o.Fb = function(e) { + var t; + return D(e, 317) ? (t = u(e, 317), tT(this, t.a) && tT(this, t.b) && tT(this, t.c)) : !1; + }, o.Hb = function() { + return yg(this.a) + yg(this.b) + yg(this.c); + }, w(Hm, "TTriangle", 317), b(225, 1, { 225: 1 }, LC), w(Hm, "Tree", 225), b(1218, 1, {}, COn), w(Zzn, "Scanline", 1218); + var BQn = xt(Zzn, nXn); + b(1758, 1, {}, v$n), w(zh, "CGraph", 1758), b(316, 1, { 316: 1 }, AOn), o.b = 0, o.c = 0, o.d = 0, o.g = 0, o.i = 0, o.k = li, w(zh, "CGroup", 316), b(830, 1, {}, WG), w(zh, "CGroup/CGroupBuilder", 830), b(60, 1, { 60: 1 }, RAn), o.Ib = function() { + var e; + return this.j ? Oe(this.j.Kb(this)) : (ll(aP), aP.o + "@" + (e = l0(this) >>> 0, e.toString(16))); + }, o.f = 0, o.i = li; + var aP = w(zh, "CNode", 60); + b(829, 1, {}, JG), w(zh, "CNode/CNodeBuilder", 829); + var RQn; + b(1590, 1, {}, nbn), o.ff = function(e, t) { + return 0; + }, o.gf = function(e, t) { + return 0; + }, w(zh, tXn, 1590), b(1853, 1, {}, ebn), o.cf = function(e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j; + for (a = St, r = new C(e.a.b); r.a < r.c.c.length; ) + t = u(E(r), 60), a = y.Math.min(a, t.a.j.d.c + t.b.a); + for (m = new Ct(), f = new C(e.a.a); f.a < f.c.c.length; ) + s = u(E(f), 316), s.k = a, s.g == 0 && Kt(m, s, m.c.b, m.c); + for (; m.b != 0; ) { + for (s = u(m.b == 0 ? null : (oe(m.b != 0), Xo(m, m.a.a)), 316), c = s.j.d.c, p = s.a.a.ec().Kc(); p.Ob(); ) + d = u(p.Pb(), 60), j = s.k + d.b.a, !Q6e(e, s, e.d) || d.d.c < j ? d.i = j : d.i = d.d.c; + for (c -= s.j.i, s.b += c, e.d == (ci(), Xr) || e.d == Wf ? s.c += c : s.c -= c, g = s.a.a.ec().Kc(); g.Ob(); ) + for (d = u(g.Pb(), 60), l = d.c.Kc(); l.Ob(); ) + h = u(l.Pb(), 60), hl(e.d) ? k = e.g.ff(d, h) : k = e.g.gf(d, h), h.a.k = y.Math.max(h.a.k, d.i + d.d.b + k - h.b.a), XIn(e, h, e.d) && (h.a.k = y.Math.max(h.a.k, h.d.c - h.b.a)), --h.a.g, h.a.g == 0 && Fe(m, h.a); + } + for (i = new C(e.a.b); i.a < i.c.c.length; ) + t = u(E(i), 60), t.d.c = t.i; + }, w(zh, "LongestPathCompaction", 1853), b(1756, 1, {}, oHn), o.e = !1; + var KQn, _Qn, HQn, u_ = w(zh, cXn, 1756); + b(1757, 1, re, D9n), o.Cd = function(e) { + Yve(this.a, u(e, 42)); + }, w(zh, uXn, 1757), b(1854, 1, {}, tbn), o.df = function(e) { + var t, i, r, c, s, f, h; + for (i = new C(e.a.b); i.a < i.c.c.length; ) + t = u(E(i), 60), t.c.$b(); + for (c = new C(e.a.b); c.a < c.c.c.length; ) + for (r = u(E(c), 60), f = new C(e.a.b); f.a < f.c.c.length; ) + s = u(E(f), 60), r != s && (r.a && r.a == s.a || (hl(e.d) ? h = e.g.gf(r, s) : h = e.g.ff(r, s), (s.d.c > r.d.c || r.d.c == s.d.c && r.d.b < s.d.b) && F8e(s.d.d + s.d.a + h, r.d.d) && tZ(s.d.d, r.d.d + r.d.a + h) && r.c.Fc(s))); + }, w(zh, "QuadraticConstraintCalculation", 1854), b(529, 1, { 529: 1 }, rD), o.a = !1, o.b = !1, o.c = !1, o.d = !1, w(zh, oXn, 529), b(817, 1, {}, dW), o.df = function(e) { + this.c = e, Zk(this, new cbn()); + }, w(zh, sXn, 817), b(1784, 1, { 693: 1 }, WIn), o.bf = function(e) { + Yje(this, u(e, 473)); + }, w(zh, fXn, 1784), b(1785, 1, Ne, ibn), o.Ne = function(e, t) { + return fge(u(e, 60), u(t, 60)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(zh, hXn, 1785), b(473, 1, { 473: 1 }, qz), o.a = !1, w(zh, lXn, 473), b(1786, 1, Ne, rbn), o.Ne = function(e, t) { + return fke(u(e, 473), u(t, 473)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(zh, aXn, 1786), b(1787, 1, ph, cbn), o.Lb = function(e) { + return u(e, 60), !0; + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return u(e, 60), !0; + }, w(zh, "ScanlineConstraintCalculator/lambda$1$Type", 1787), b(436, 22, { 3: 1, 34: 1, 22: 1, 436: 1 }, Uz); + var Bun, o_, Run = we(RB, "HighLevelSortingCriterion", 436, ke, Bge, ide), qQn; + b(435, 22, { 3: 1, 34: 1, 22: 1, 435: 1 }, Gz); + var Kun, s_, _un = we(RB, "LowLevelSortingCriterion", 435, ke, Rge, rde), UQn, a2 = xt(oc, "ILayoutMetaDataProvider"); + b(864, 1, ms, D5n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Dtn), KB), "Polyomino Traversal Strategy"), "Traversal strategy for trying different candidate positions for polyominoes."), Vun), (l1(), Pt)), ion), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ltn), KB), "Polyomino Secondary Sorting Criterion"), "Possible secondary sorting criteria for the processing order of polyominoes. They are used when polyominoes are equal according to the primary sorting criterion HighLevelSortingCriterion."), zun), Pt), _un), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ntn), KB), "Polyomino Primary Sorting Criterion"), "Possible primary sorting criteria for the processing order of polyominoes."), Uun), Pt), Run), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), $tn), KB), "Fill Polyominoes"), "Use the Profile Fill algorithm to fill polyominoes to prevent small polyominoes from being placed inside of big polyominoes with large holes. Might increase packing area."), (_n(), !0)), yi), Xt), jn(xn)))); + }; + var Hun, qun, Uun, Gun, zun, Xun, Vun; + w(RB, "PolyominoOptions", 864), b(257, 22, { 3: 1, 34: 1, 22: 1, 257: 1 }, ag); + var Wun, Jun, Qun, Yun, Zun, non, f_, eon, ton, ion = we(RB, "TraversalStrategy", 257, ke, xme, cde), GQn; + b(218, 1, { 218: 1 }, ubn), o.Ib = function() { + return "NEdge[id=" + this.b + " w=" + this.g + " d=" + this.a + "]"; + }, o.a = 1, o.b = 0, o.c = 0, o.f = !1, o.g = 0; + var zQn = w(Z5, "NEdge", 218); + b(182, 1, {}, hs), w(Z5, "NEdge/NEdgeBuilder", 182), b(662, 1, {}, oD), w(Z5, "NGraph", 662), b(125, 1, { 125: 1 }, $Ln), o.c = -1, o.d = 0, o.e = 0, o.i = -1, o.j = !1; + var ron = w(Z5, "NNode", 125); + b(808, 1, Vzn, XG), o.Jc = function(e) { + qi(this, e); + }, o.Lc = function() { + return new Tn(null, new In(this, 16)); + }, o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return new In(this, 16); + }, o.Oc = function() { + return new Tn(null, new In(this, 16)); + }, o.bd = function(e, t) { + ++this.b, b0(this.a, e, t); + }, o.Fc = function(e) { + return RC(this, e); + }, o.cd = function(e, t) { + return ++this.b, bY(this.a, e, t); + }, o.Gc = function(e) { + return ++this.b, hi(this.a, e); + }, o.$b = function() { + ++this.b, Pb(this.a.c, 0); + }, o.Hc = function(e) { + return qr(this.a, e, 0) != -1; + }, o.Ic = function(e) { + return Ek(this.a, e); + }, o.Xb = function(e) { + return sn(this.a, e); + }, o.dd = function(e) { + return qr(this.a, e, 0); + }, o.dc = function() { + return this.a.c.length == 0; + }, o.Kc = function() { + return Kp(new C(this.a)); + }, o.ed = function() { + throw M(new Pe()); + }, o.fd = function(e) { + throw M(new Pe()); + }, o.gd = function(e) { + return ++this.b, Yl(this.a, e); + }, o.Mc = function(e) { + return WX(this, e); + }, o.hd = function(e, t) { + return ++this.b, Go(this.a, e, t); + }, o.gc = function() { + return this.a.c.length; + }, o.kd = function(e, t) { + return new Jl(this.a, e, t); + }, o.Pc = function() { + return ZC(this.a.c); + }, o.Qc = function(e) { + return Ff(this.a, e); + }, o.b = 0, w(Z5, "NNode/ChangeAwareArrayList", 808), b(275, 1, {}, za), w(Z5, "NNode/NNodeBuilder", 275), b(1695, 1, {}, obn), o.a = !1, o.f = tt, o.j = 0, w(Z5, "NetworkSimplex", 1695), b(1314, 1, re, L9n), o.Cd = function(e) { + qGn(this.a, u(e, 695), !0, !1); + }, w(dXn, "NodeLabelAndSizeCalculator/lambda$0$Type", 1314), b(565, 1, {}, IE), o.b = !0, o.c = !0, o.d = !0, o.e = !0, w(dXn, "NodeMarginCalculator", 565), b(217, 1, { 217: 1 }), o.j = !1, o.k = !1; + var XQn = w(kd, "Cell", 217); + b(127, 217, { 127: 1, 217: 1 }, BAn), o.jf = function() { + return nM(this); + }, o.kf = function() { + var e; + return e = this.n, this.a.a + e.b + e.c; + }, w(kd, "AtomicCell", 127), b(237, 22, { 3: 1, 34: 1, 22: 1, 237: 1 }, xD); + var bc, Jc, wc, Sw = we(kd, "ContainerArea", 237, ke, $2e, ude), VQn; + b(336, 217, bXn), w(kd, "ContainerCell", 336), b(1538, 336, bXn, SBn), o.jf = function() { + var e; + return e = 0, this.e ? this.b ? e = this.b.b : this.a[1][1] && (e = this.a[1][1].jf()) : e = KY(this, URn(this, !0)), e > 0 ? e + this.n.d + this.n.a : 0; + }, o.kf = function() { + var e, t, i, r, c; + if (c = 0, this.e) + this.b ? c = this.b.a : this.a[1][1] && (c = this.a[1][1].kf()); + else if (this.g) + c = KY(this, Gx(this, null, !0)); + else + for (t = (wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc])), i = 0, r = t.length; i < r; ++i) + e = t[i], c = y.Math.max(c, KY(this, Gx(this, e, !0))); + return c > 0 ? c + this.n.b + this.n.c : 0; + }, o.lf = function() { + var e, t, i, r, c; + if (this.g) + for (e = Gx(this, null, !1), i = (wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc])), r = 0, c = i.length; r < c; ++r) + t = i[r], Eqn(this, t, e); + else + for (i = (wf(), A(T(Sw, 1), G, 237, 0, [bc, Jc, wc])), r = 0, c = i.length; r < c; ++r) + t = i[r], e = Gx(this, t, !1), Eqn(this, t, e); + }, o.mf = function() { + var e, t, i, r; + t = this.i, e = this.n, r = URn(this, !1), BJ(this, (wf(), bc), t.d + e.d, r), BJ(this, wc, t.d + t.a - e.a - r[2], r), i = t.a - e.d - e.a, r[0] > 0 && (r[0] += this.d, i -= r[0]), r[2] > 0 && (r[2] += this.d, i -= r[2]), this.c.a = y.Math.max(0, i), this.c.d = t.d + e.d + (this.c.a - i) / 2, r[1] = y.Math.max(r[1], i), BJ(this, Jc, t.d + e.d + r[0] - (r[1] - i) / 2, r); + }, o.b = null, o.d = 0, o.e = !1, o.f = !1, o.g = !1; + var h_ = 0, dP = 0; + w(kd, "GridContainerCell", 1538), b(471, 22, { 3: 1, 34: 1, 22: 1, 471: 1 }, FD); + var pa, Mh, zs, WQn = we(kd, "HorizontalLabelAlignment", 471, ke, N2e, ode), JQn; + b(314, 217, { 217: 1, 314: 1 }, hOn, y$n, iOn), o.jf = function() { + return USn(this); + }, o.kf = function() { + return tW(this); + }, o.a = 0, o.c = !1; + var pNe = w(kd, "LabelCell", 314); + b(252, 336, { 217: 1, 336: 1, 252: 1 }, E5), o.jf = function() { + return ey(this); + }, o.kf = function() { + return ty(this); + }, o.lf = function() { + LF(this); + }, o.mf = function() { + NF(this); + }, o.b = 0, o.c = 0, o.d = !1, w(kd, "StripContainerCell", 252), b(1691, 1, De, sbn), o.Mb = function(e) { + return ohe(u(e, 217)); + }, w(kd, "StripContainerCell/lambda$0$Type", 1691), b(1692, 1, {}, fbn), o.Ye = function(e) { + return u(e, 217).kf(); + }, w(kd, "StripContainerCell/lambda$1$Type", 1692), b(1693, 1, De, hbn), o.Mb = function(e) { + return she(u(e, 217)); + }, w(kd, "StripContainerCell/lambda$2$Type", 1693), b(1694, 1, {}, lbn), o.Ye = function(e) { + return u(e, 217).jf(); + }, w(kd, "StripContainerCell/lambda$3$Type", 1694), b(472, 22, { 3: 1, 34: 1, 22: 1, 472: 1 }, BD); + var Xs, ma, kf, QQn = we(kd, "VerticalLabelAlignment", 472, ke, L2e, sde), YQn; + b(800, 1, {}, rtn), o.c = 0, o.d = 0, o.k = 0, o.s = 0, o.t = 0, o.v = !1, o.w = 0, o.D = !1, w(nS, "NodeContext", 800), b(1536, 1, Ne, abn), o.Ne = function(e, t) { + return tTn(u(e, 64), u(t, 64)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(nS, "NodeContext/0methodref$comparePortSides$Type", 1536), b(1537, 1, Ne, dbn), o.Ne = function(e, t) { + return Fye(u(e, 117), u(t, 117)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(nS, "NodeContext/1methodref$comparePortContexts$Type", 1537), b(164, 22, { 3: 1, 34: 1, 22: 1, 164: 1 }, Vo); + var ZQn, nYn, eYn, tYn, iYn, rYn, cYn, uYn, oYn, sYn, fYn, hYn, lYn, aYn, dYn, bYn, wYn, gYn, pYn, mYn, vYn, l_, kYn = we(nS, "NodeLabelLocation", 164, ke, jx, fde), yYn; + b(117, 1, { 117: 1 }, fHn), o.a = !1, w(nS, "PortContext", 117), b(1541, 1, re, bbn), o.Cd = function(e) { + yEn(u(e, 314)); + }, w(Oy, wXn, 1541), b(1542, 1, De, wbn), o.Mb = function(e) { + return !!u(e, 117).c; + }, w(Oy, gXn, 1542), b(1543, 1, re, gbn), o.Cd = function(e) { + yEn(u(e, 117).c); + }, w(Oy, "LabelPlacer/lambda$2$Type", 1543); + var con; + b(1540, 1, re, pbn), o.Cd = function(e) { + Bb(), Kfe(u(e, 117)); + }, w(Oy, "NodeLabelAndSizeUtilities/lambda$0$Type", 1540), b(801, 1, re, $V), o.Cd = function(e) { + nle(this.b, this.c, this.a, u(e, 187)); + }, o.a = !1, o.c = !1, w(Oy, "NodeLabelCellCreator/lambda$0$Type", 801), b(1539, 1, re, N9n), o.Cd = function(e) { + qfe(this.a, u(e, 187)); + }, w(Oy, "PortContextCreator/lambda$0$Type", 1539); + var bP; + b(1902, 1, {}, mbn), w(Um, "GreedyRectangleStripOverlapRemover", 1902), b(1903, 1, Ne, vbn), o.Ne = function(e, t) { + return D1e(u(e, 226), u(t, 226)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Um, "GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type", 1903), b(1849, 1, {}, Uyn), o.a = 5, o.e = 0, w(Um, "RectangleStripOverlapRemover", 1849), b(1850, 1, Ne, kbn), o.Ne = function(e, t) { + return L1e(u(e, 226), u(t, 226)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Um, "RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type", 1850), b(1852, 1, Ne, ybn), o.Ne = function(e, t) { + return jwe(u(e, 226), u(t, 226)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Um, "RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type", 1852), b(417, 22, { 3: 1, 34: 1, 22: 1, 417: 1 }, sC); + var ij, a_, d_, rj, jYn = we(Um, "RectangleStripOverlapRemover/OverlapRemovalDirection", 417, ke, Vpe, hde), EYn; + b(226, 1, { 226: 1 }, ZL), w(Um, "RectangleStripOverlapRemover/RectangleNode", 226), b(1851, 1, re, $9n), o.Cd = function(e) { + f7e(this.a, u(e, 226)); + }, w(Um, "RectangleStripOverlapRemover/lambda$1$Type", 1851), b(1323, 1, Ne, jbn), o.Ne = function(e, t) { + return PIe(u(e, 176), u(t, 176)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mh, "PolyominoCompactor/CornerCasesGreaterThanRestComparator", 1323), b(1326, 1, {}, Ebn), o.Kb = function(e) { + return u(e, 334).a; + }, w(mh, "PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type", 1326), b(1327, 1, De, Cbn), o.Mb = function(e) { + return u(e, 332).a; + }, w(mh, "PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type", 1327), b(1328, 1, De, Mbn), o.Mb = function(e) { + return u(e, 332).a; + }, w(mh, "PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type", 1328), b(1321, 1, Ne, Tbn), o.Ne = function(e, t) { + return cSe(u(e, 176), u(t, 176)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mh, "PolyominoCompactor/MinNumOfExtensionDirectionsComparator", 1321), b(1324, 1, {}, Abn), o.Kb = function(e) { + return u(e, 334).a; + }, w(mh, "PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type", 1324), b(781, 1, Ne, _U), o.Ne = function(e, t) { + return _ve(u(e, 176), u(t, 176)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mh, "PolyominoCompactor/MinNumOfExtensionsComparator", 781), b(1319, 1, Ne, Sbn), o.Ne = function(e, t) { + return Wme(u(e, 330), u(t, 330)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mh, "PolyominoCompactor/MinPerimeterComparator", 1319), b(1320, 1, Ne, Pbn), o.Ne = function(e, t) { + return L9e(u(e, 330), u(t, 330)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mh, "PolyominoCompactor/MinPerimeterComparatorWithShape", 1320), b(1322, 1, Ne, Ibn), o.Ne = function(e, t) { + return TSe(u(e, 176), u(t, 176)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mh, "PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator", 1322), b(1325, 1, {}, Obn), o.Kb = function(e) { + return u(e, 334).a; + }, w(mh, "PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type", 1325), b(782, 1, {}, zz), o.Ve = function(e, t) { + return Kpe(this, u(e, 42), u(t, 176)); + }, w(mh, "SuccessorCombination", 782), b(649, 1, {}, NO), o.Ve = function(e, t) { + var i; + return tCe((i = u(e, 42), u(t, 176), i)); + }, w(mh, "SuccessorJitter", 649), b(648, 1, {}, $O), o.Ve = function(e, t) { + var i; + return HTe((i = u(e, 42), u(t, 176), i)); + }, w(mh, "SuccessorLineByLine", 648), b(573, 1, {}, vE), o.Ve = function(e, t) { + var i; + return tMe((i = u(e, 42), u(t, 176), i)); + }, w(mh, "SuccessorManhattan", 573), b(1344, 1, {}, Dbn), o.Ve = function(e, t) { + var i; + return aTe((i = u(e, 42), u(t, 176), i)); + }, w(mh, "SuccessorMaxNormWindingInMathPosSense", 1344), b(409, 1, {}, n4), o.Ve = function(e, t) { + return TW(this, e, t); + }, o.c = !1, o.d = !1, o.e = !1, o.f = !1, w(mh, "SuccessorQuadrantsGeneric", 409), b(1345, 1, {}, Lbn), o.Kb = function(e) { + return u(e, 334).a; + }, w(mh, "SuccessorQuadrantsGeneric/lambda$0$Type", 1345), b(332, 22, { 3: 1, 34: 1, 22: 1, 332: 1 }, fC), o.a = !1; + var cj, uj, oj, sj, CYn = we(tS, Rtn, 332, ke, zpe, lde), MYn; + b(1317, 1, {}), o.Ib = function() { + var e, t, i, r, c, s; + for (i = " ", e = Y(0), c = 0; c < this.o; c++) + i += "" + e.a, e = Y(TAn(e.a)); + for (i += ` +`, e = Y(0), s = 0; s < this.p; s++) { + for (i += "" + e.a, e = Y(TAn(e.a)), r = 0; r < this.o; r++) + t = C$(this, r, s), Cc(t, 0) == 0 ? i += "_" : Cc(t, 1) == 0 ? i += "X" : i += "0"; + i += ` +`; + } + return qo(i, 0, i.length - 1); + }, o.o = 0, o.p = 0, w(tS, "TwoBitGrid", 1317), b(330, 1317, { 330: 1 }, WY), o.j = 0, o.k = 0, w(tS, "PlanarGrid", 330), b(176, 330, { 330: 1, 176: 1 }), o.g = 0, o.i = 0, w(tS, "Polyomino", 176); + var mNe = xt(Dy, mXn); + b(137, 1, Ktn, xO), o.qf = function(e, t) { + return Ak(this, e, t); + }, o.nf = function() { + return sPn(this); + }, o.of = function(e) { + return v(this, e); + }, o.pf = function(e) { + return kt(this, e); + }, w(Dy, "MapPropertyHolder", 137), b(1318, 137, Ktn, lqn), w(tS, "Polyominoes", 1318); + var TYn = !1, I8, uon; + b(1828, 1, re, Nbn), o.Cd = function(e) { + dGn(u(e, 225)); + }, w(h3, "DepthFirstCompaction/0methodref$compactTree$Type", 1828), b(825, 1, re, OG), o.Cd = function(e) { + Uwe(this.a, u(e, 225)); + }, w(h3, "DepthFirstCompaction/lambda$1$Type", 825), b(1829, 1, re, pSn), o.Cd = function(e) { + X8e(this.a, this.b, this.c, u(e, 225)); + }, w(h3, "DepthFirstCompaction/lambda$2$Type", 1829); + var O8, oon; + b(68, 1, { 68: 1 }, EOn), w(h3, "Node", 68), b(1214, 1, {}, jTn), w(h3, "ScanlineOverlapCheck", 1214), b(1215, 1, { 693: 1 }, QIn), o.bf = function(e) { + jae(this, u(e, 451)); + }, w(h3, "ScanlineOverlapCheck/OverlapsScanlineHandler", 1215), b(1216, 1, Ne, $bn), o.Ne = function(e, t) { + return I5e(u(e, 68), u(t, 68)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(h3, "ScanlineOverlapCheck/OverlapsScanlineHandler/lambda$0$Type", 1216), b(451, 1, { 451: 1 }, Xz), o.a = !1, w(h3, "ScanlineOverlapCheck/Timestamp", 451), b(1217, 1, Ne, xbn), o.Ne = function(e, t) { + return hke(u(e, 451), u(t, 451)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(h3, "ScanlineOverlapCheck/lambda$0$Type", 1217), b(557, 1, {}, kE), w(vXn, "SVGImage", 557), b(334, 1, { 334: 1 }, NV), o.Ib = function() { + return "(" + this.a + ur + this.b + ur + this.c + ")"; + }, w(vXn, "UniqueTriple", 334), b(205, 1, yd), w(e2, "AbstractLayoutProvider", 205), b(1114, 205, yd, Fbn), o.rf = function(e, t) { + var i, r, c, s; + switch (t.Ug(kXn, 1), this.a = $(R(z(e, (C5(), don)))), Lf(e, w_) && (c = Oe(z(e, w_)), i = TF(z4(), c), i && (r = u(z7(i.f), 205), r.rf(e, t.eh(1)))), s = new qDn(this.a), this.b = cDe(s, e), u(z(e, (Q$(), fon)), 489).g) { + case 0: + yCe(new Bbn(), this.b), ht(e, pP, v(this.b, pP)); + break; + default: + fl(); + } + kDe(s), ht(e, lon, this.b), t.Vg(); + }, o.a = 0, w(yXn, "DisCoLayoutProvider", 1114), b(1208, 1, {}, Bbn), o.c = !1, o.e = 0, o.f = 0, w(yXn, "DisCoPolyominoCompactor", 1208), b(567, 1, { 567: 1 }, uPn), o.b = !0, w(rS, "DCComponent", 567), b(406, 22, { 3: 1, 34: 1, 22: 1, 406: 1 }, hC), o.a = !1; + var wP, fj, gP, hj, AYn = we(rS, "DCDirection", 406, ke, Xpe, ade), SYn; + b(272, 137, { 3: 1, 272: 1, 96: 1, 137: 1 }, bF), w(rS, "DCElement", 272), b(407, 1, { 407: 1 }, vZ), o.c = 0, w(rS, "DCExtension", 407), b(762, 137, Ktn, Wjn), w(rS, "DCGraph", 762), b(489, 22, { 3: 1, 34: 1, 22: 1, 489: 1 }, wAn); + var b_, son = we(VB, _tn, 489, ke, ege, dde), PYn; + b(865, 1, ms, L5n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Htn), jXn), "Connected Components Compaction Strategy"), "Strategy for packing different connected components in order to save space and enhance readability of a graph."), hon), (l1(), Pt)), son), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), qtn), jXn), "Connected Components Layout Algorithm"), "A layout algorithm that is to be applied to each connected component before the components themselves are compacted. If unspecified, the positions of the components' nodes are not altered."), $2), fn), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), Utn), "debug"), "DCGraph"), "Access to the DCGraph is intended for the debug view,"), Vf), ki), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), Gtn), "debug"), "List of Polyominoes"), "Access to the polyominoes is intended for the debug view,"), Vf), ki), jn(xn)))), YUn((new N5n(), e)); + }; + var IYn, fon, hon, OYn, DYn; + w(VB, "DisCoMetaDataProvider", 865), b(1010, 1, ms, N5n), o.hf = function(e) { + YUn(e); + }; + var LYn, w_, NYn, lon, pP, g_, aon, $Yn, xYn, FYn, BYn, don; + w(VB, "DisCoOptions", 1010), b(1011, 1, {}, Rbn), o.sf = function() { + var e; + return e = new Fbn(), e; + }, o.tf = function(e) { + }, w(VB, "DisCoOptions/DiscoFactory", 1011), b(568, 176, { 330: 1, 176: 1, 568: 1 }, XHn), o.a = 0, o.b = 0, o.c = 0, o.d = 0, w("org.eclipse.elk.alg.disco.structures", "DCPolyomino", 568); + var p_, m_, mP; + b(1286, 1, De, Kbn), o.Mb = function(e) { + return jX(e); + }, w(t2, "ElkGraphComponentsProcessor/lambda$0$Type", 1286), b(1287, 1, {}, _bn), o.Kb = function(e) { + return Lp(), Kh(u(e, 74)); + }, w(t2, "ElkGraphComponentsProcessor/lambda$1$Type", 1287), b(1288, 1, De, Hbn), o.Mb = function(e) { + return kbe(u(e, 74)); + }, w(t2, "ElkGraphComponentsProcessor/lambda$2$Type", 1288), b(1289, 1, {}, qbn), o.Kb = function(e) { + return Lp(), ra(u(e, 74)); + }, w(t2, "ElkGraphComponentsProcessor/lambda$3$Type", 1289), b(1290, 1, De, Ubn), o.Mb = function(e) { + return ybe(u(e, 74)); + }, w(t2, "ElkGraphComponentsProcessor/lambda$4$Type", 1290), b(1291, 1, De, x9n), o.Mb = function(e) { + return b2e(this.a, u(e, 74)); + }, w(t2, "ElkGraphComponentsProcessor/lambda$5$Type", 1291), b(1292, 1, {}, F9n), o.Kb = function(e) { + return Nwe(this.a, u(e, 74)); + }, w(t2, "ElkGraphComponentsProcessor/lambda$6$Type", 1292), b(1205, 1, {}, qDn), o.a = 0, w(t2, "ElkGraphTransformer", 1205), b(1206, 1, {}, Gbn), o.Yd = function(e, t) { + uCe(this, u(e, 167), u(t, 272)); + }, w(t2, "ElkGraphTransformer/OffsetApplier", 1206), b(1207, 1, re, B9n), o.Cd = function(e) { + g1e(this, u(e, 8)); + }, w(t2, "ElkGraphTransformer/OffsetApplier/OffSetToChainApplier", 1207), b(760, 1, {}, HU), w(YB, ztn, 760), b(1195, 1, Ne, zbn), o.Ne = function(e, t) { + return VEe(u(e, 235), u(t, 235)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(YB, CXn, 1195), b(1196, 1, re, SCn), o.Cd = function(e) { + Y2e(this.b, this.a, u(e, 250)); + }, w(YB, Xtn, 1196), b(738, 205, yd, VG), o.rf = function(e, t) { + WHn(this, e, t); + }, w(YB, "ForceLayoutProvider", 738), b(309, 137, { 3: 1, 309: 1, 96: 1, 137: 1 }), w(Ly, "FParticle", 309), b(250, 309, { 3: 1, 250: 1, 309: 1, 96: 1, 137: 1 }, GPn), o.Ib = function() { + var e; + return this.a ? (e = qr(this.a.a, this, 0), e >= 0 ? "b" + e + "[" + XN(this.a) + "]" : "b[" + XN(this.a) + "]") : "b_" + l0(this); + }, w(Ly, "FBendpoint", 250), b(290, 137, { 3: 1, 290: 1, 96: 1, 137: 1 }, KAn), o.Ib = function() { + return XN(this); + }, w(Ly, "FEdge", 290), b(235, 137, { 3: 1, 235: 1, 96: 1, 137: 1 }, zM); + var vNe = w(Ly, "FGraph", 235); + b(454, 309, { 3: 1, 454: 1, 309: 1, 96: 1, 137: 1 }, HDn), o.Ib = function() { + return this.b == null || this.b.length == 0 ? "l[" + XN(this.a) + "]" : "l_" + this.b; + }, w(Ly, "FLabel", 454), b(153, 309, { 3: 1, 153: 1, 309: 1, 96: 1, 137: 1 }, kTn), o.Ib = function() { + return dJ(this); + }, o.a = 0, w(Ly, "FNode", 153), b(2100, 1, {}), o.vf = function(e) { + Fen(this, e); + }, o.wf = function() { + qRn(this); + }, o.d = 0, w(Vtn, "AbstractForceModel", 2100), b(641, 2100, { 641: 1 }, Kxn), o.uf = function(e, t) { + var i, r, c, s, f; + return gGn(this.f, e, t), c = mi(Ki(t.d), e.d), f = y.Math.sqrt(c.a * c.a + c.b * c.b), r = y.Math.max(0, f - z6(e.e) / 2 - z6(t.e) / 2), i = Y_n(this.e, e, t), i > 0 ? s = -vwe(r, this.c) * i : s = V1e(r, this.b) * u(v(e, (Us(), k3)), 17).a, ch(c, s / f), c; + }, o.vf = function(e) { + Fen(this, e), this.a = u(v(e, (Us(), kP)), 17).a, this.c = $(R(v(e, yP))), this.b = $(R(v(e, k_))); + }, o.xf = function(e) { + return e < this.a; + }, o.a = 0, o.b = 0, o.c = 0, w(Vtn, "EadesModel", 641), b(642, 2100, { 642: 1 }, RSn), o.uf = function(e, t) { + var i, r, c, s, f; + return gGn(this.f, e, t), c = mi(Ki(t.d), e.d), f = y.Math.sqrt(c.a * c.a + c.b * c.b), r = y.Math.max(0, f - z6(e.e) / 2 - z6(t.e) / 2), s = W1e(r, this.a) * u(v(e, (Us(), k3)), 17).a, i = Y_n(this.e, e, t), i > 0 && (s -= ihe(r, this.a) * i), ch(c, s * this.b / f), c; + }, o.vf = function(e) { + var t, i, r, c, s, f, h; + for (Fen(this, e), this.b = $(R(v(e, (Us(), y_)))), this.c = this.b / u(v(e, kP), 17).a, r = e.e.c.length, s = 0, c = 0, h = new C(e.e); h.a < h.c.c.length; ) + f = u(E(h), 153), s += f.e.a, c += f.e.b; + t = s * c, i = $(R(v(e, yP))) * _f, this.a = y.Math.sqrt(t / (2 * r)) * i; + }, o.wf = function() { + qRn(this), this.b -= this.c; + }, o.xf = function(e) { + return this.b > 0; + }, o.a = 0, o.b = 0, o.c = 0, w(Vtn, "FruchtermanReingoldModel", 642), b(860, 1, ms, $5n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), cS), ""), "Force Model"), "Determines the model for force calculation."), bon), (l1(), Pt)), won), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Wtn), ""), "Iterations"), "The number of iterations on the force model."), Y(300)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Jtn), ""), "Repulsive Power"), "Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"), Y(0)), Zr), Gi), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ZB), ""), "FR Temperature"), "The temperature is used as a scaling factor for particle displacements."), vh), Qi), si), jn(xn)))), ri(e, ZB, cS, GYn), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), nR), ""), "Eades Repulsion"), "Factor for repulsive forces in Eades' model."), 5), Qi), si), jn(xn)))), ri(e, nR, cS, HYn), rzn((new x5n(), e)); + }; + var RYn, KYn, bon, _Yn, HYn, qYn, UYn, GYn; + w(e8, "ForceMetaDataProvider", 860), b(432, 22, { 3: 1, 34: 1, 22: 1, 432: 1 }, Vz); + var v_, vP, won = we(e8, "ForceModelStrategy", 432, ke, Kge, bde), zYn; + b(d1, 1, ms, x5n), o.hf = function(e) { + rzn(e); + }; + var XYn, VYn, gon, kP, pon, WYn, JYn, QYn, YYn, mon, ZYn, von, kon, nZn, k3, eZn, k_, yon, tZn, iZn, yP, y_, rZn, cZn, uZn, jon, oZn; + w(e8, "ForceOptions", d1), b(1001, 1, {}, Jbn), o.sf = function() { + var e; + return e = new VG(), e; + }, o.tf = function(e) { + }, w(e8, "ForceOptions/ForceFactory", 1001); + var lj, D8, y3, jP; + b(861, 1, ms, F5n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ytn), ""), "Fixed Position"), "Prevent that the node is moved by the layout algorithm."), (_n(), !1)), (l1(), yi)), Xt), jn((pf(), pi))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ztn), ""), "Desired Edge Length"), "Either specified for parent nodes or for individual edges, where the latter takes higher precedence."), 100), Qi), si), yt(xn, A(T(Zh, 1), G, 170, 0, [Ph]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), nin), ""), "Layout Dimension"), "Dimensions that are permitted to be altered during layout."), Eon), Pt), Ion), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ein), ""), "Stress Epsilon"), "Termination criterion for the iterative process."), vh), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), tin), ""), "Iteration Limit"), "Maximum number of performed iterations. Takes higher precedence than 'epsilon'."), Y(tt)), Zr), Gi), jn(xn)))), DGn((new B5n(), e)); + }; + var sZn, fZn, Eon, hZn, lZn, aZn; + w(e8, "StressMetaDataProvider", 861), b(1004, 1, ms, B5n), o.hf = function(e) { + DGn(e); + }; + var EP, Con, Mon, Ton, Aon, Son, dZn, bZn, wZn, gZn, Pon, pZn; + w(e8, "StressOptions", 1004), b(1005, 1, {}, Vbn), o.sf = function() { + var e; + return e = new _An(), e; + }, o.tf = function(e) { + }, w(e8, "StressOptions/StressFactory", 1005), b(1110, 205, yd, _An), o.rf = function(e, t) { + var i, r, c, s, f; + for (t.Ug(PXn, 1), on(un(z(e, (Uk(), Aon)))) ? on(un(z(e, Pon))) || X7((i = new Xv((c0(), new Qd(e))), i)) : WHn(new VG(), e, t.eh(1)), c = hFn(e), r = _Un(this.a, c), f = r.Kc(); f.Ob(); ) + s = u(f.Pb(), 235), !(s.e.c.length <= 1) && (TIe(this.b, s), QCe(this.b), eu(s.d, new Wbn())); + c = ezn(r), lzn(c), t.Vg(); + }, w(sS, "StressLayoutProvider", 1110), b(1111, 1, re, Wbn), o.Cd = function(e) { + Gen(u(e, 454)); + }, w(sS, "StressLayoutProvider/lambda$0$Type", 1111), b(1002, 1, {}, Ryn), o.c = 0, o.e = 0, o.g = 0, w(sS, "StressMajorization", 1002), b(391, 22, { 3: 1, 34: 1, 22: 1, 391: 1 }, RD); + var j_, E_, C_, Ion = we(sS, "StressMajorization/Dimension", 391, ke, x2e, wde), mZn; + b(1003, 1, Ne, R9n), o.Ne = function(e, t) { + return qae(this.a, u(e, 153), u(t, 153)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(sS, "StressMajorization/lambda$0$Type", 1003), b(1192, 1, {}, XOn), w(b3, "ElkLayered", 1192), b(1193, 1, re, K9n), o.Cd = function(e) { + TEe(this.a, u(e, 36)); + }, w(b3, "ElkLayered/lambda$0$Type", 1193), b(1194, 1, re, _9n), o.Cd = function(e) { + Uae(this.a, u(e, 36)); + }, w(b3, "ElkLayered/lambda$1$Type", 1194), b(1281, 1, {}, ITn); + var vZn, kZn, yZn; + w(b3, "GraphConfigurator", 1281), b(770, 1, re, DG), o.Cd = function(e) { + t_n(this.a, u(e, 10)); + }, w(b3, "GraphConfigurator/lambda$0$Type", 770), b(771, 1, {}, qU), o.Kb = function(e) { + return NZ(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(b3, "GraphConfigurator/lambda$1$Type", 771), b(772, 1, re, LG), o.Cd = function(e) { + t_n(this.a, u(e, 10)); + }, w(b3, "GraphConfigurator/lambda$2$Type", 772), b(1109, 205, yd, Gyn), o.rf = function(e, t) { + var i; + i = uIe(new Xyn(), e), x(z(e, (cn(), Bw))) === x((jl(), M1)) ? B5e(this.a, i, t) : XCe(this.a, i, t), t.$g() || VGn(new R5n(), i); + }, w(b3, "LayeredLayoutProvider", 1109), b(367, 22, { 3: 1, 34: 1, 22: 1, 367: 1 }, o7); + var Vs, Jh, Dc, _c, zr, Oon = we(b3, "LayeredPhases", 367, ke, K3e, gde), jZn; + b(1717, 1, {}, rxn), o.i = 0; + var EZn; + w(Ry, "ComponentsToCGraphTransformer", 1717); + var CZn; + b(1718, 1, {}, Xbn), o.yf = function(e, t) { + return y.Math.min(e.a != null ? $(e.a) : e.c.i, t.a != null ? $(t.a) : t.c.i); + }, o.zf = function(e, t) { + return y.Math.min(e.a != null ? $(e.a) : e.c.i, t.a != null ? $(t.a) : t.c.i); + }, w(Ry, "ComponentsToCGraphTransformer/1", 1718), b(86, 1, { 86: 1 }), o.i = 0, o.k = !0, o.o = li; + var M_ = w(c8, "CNode", 86); + b(470, 86, { 470: 1, 86: 1 }, YX, sZ), o.Ib = function() { + return ""; + }, w(Ry, "ComponentsToCGraphTransformer/CRectNode", 470), b(1688, 1, {}, Qbn); + var T_, A_; + w(Ry, "OneDimensionalComponentsCompaction", 1688), b(1689, 1, {}, Ybn), o.Kb = function(e) { + return A2e(u(e, 42)); + }, o.Fb = function(e) { + return this === e; + }, w(Ry, "OneDimensionalComponentsCompaction/lambda$0$Type", 1689), b(1690, 1, {}, Zbn), o.Kb = function(e) { + return K5e(u(e, 42)); + }, o.Fb = function(e) { + return this === e; + }, w(Ry, "OneDimensionalComponentsCompaction/lambda$1$Type", 1690), b(1720, 1, {}, nIn), w(c8, "CGraph", 1720), b(194, 1, { 194: 1 }, vx), o.b = 0, o.c = 0, o.e = 0, o.g = !0, o.i = li, w(c8, "CGroup", 194), b(1719, 1, {}, nwn), o.yf = function(e, t) { + return y.Math.max(e.a != null ? $(e.a) : e.c.i, t.a != null ? $(t.a) : t.c.i); + }, o.zf = function(e, t) { + return y.Math.max(e.a != null ? $(e.a) : e.c.i, t.a != null ? $(t.a) : t.c.i); + }, w(c8, tXn, 1719), b(1721, 1, {}, nHn), o.d = !1; + var MZn, S_ = w(c8, cXn, 1721); + b(1722, 1, {}, ewn), o.Kb = function(e) { + return $z(), _n(), u(u(e, 42).a, 86).d.e != 0; + }, o.Fb = function(e) { + return this === e; + }, w(c8, uXn, 1722), b(833, 1, {}, fW), o.a = !1, o.b = !1, o.c = !1, o.d = !1, w(c8, oXn, 833), b(1898, 1, {}, gPn), w(fS, sXn, 1898); + var aj = xt(Ed, nXn); + b(1899, 1, { 382: 1 }, JIn), o.bf = function(e) { + eAe(this, u(e, 476)); + }, w(fS, fXn, 1899), b(ha, 1, Ne, twn), o.Ne = function(e, t) { + return hge(u(e, 86), u(t, 86)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(fS, hXn, ha), b(476, 1, { 476: 1 }, Jz), o.a = !1, w(fS, lXn, 476), b(1901, 1, Ne, iwn), o.Ne = function(e, t) { + return lke(u(e, 476), u(t, 476)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(fS, aXn, 1901), b(148, 1, { 148: 1 }, d4, zV), o.Fb = function(e) { + var t; + return e == null || kNe != wo(e) ? !1 : (t = u(e, 148), vc(this.c, t.c) && vc(this.d, t.d)); + }, o.Hb = function() { + return Ik(A(T(ki, 1), Bn, 1, 5, [this.c, this.d])); + }, o.Ib = function() { + return "(" + this.c + ur + this.d + (this.a ? "cx" : "") + this.b + ")"; + }, o.a = !0, o.c = 0, o.d = 0; + var kNe = w(Ed, "Point", 148); + b(416, 22, { 3: 1, 34: 1, 22: 1, 416: 1 }, lC); + var rb, Pw, d2, Iw, TZn = we(Ed, "Point/Quadrant", 416, ke, Wpe, pde), AZn; + b(1708, 1, {}, qyn), o.b = null, o.c = null, o.d = null, o.e = null, o.f = null; + var SZn, PZn, IZn, OZn, DZn; + w(Ed, "RectilinearConvexHull", 1708), b(583, 1, { 382: 1 }, eA), o.bf = function(e) { + R4e(this, u(e, 148)); + }, o.b = 0; + var Don; + w(Ed, "RectilinearConvexHull/MaximalElementsEventHandler", 583), b(1710, 1, Ne, rwn), o.Ne = function(e, t) { + return lge(R(e), R(t)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ed, "RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type", 1710), b(1709, 1, { 382: 1 }, k$n), o.bf = function(e) { + gTe(this, u(e, 148)); + }, o.a = 0, o.b = null, o.c = null, o.d = null, o.e = null, w(Ed, "RectilinearConvexHull/RectangleEventHandler", 1709), b(1711, 1, Ne, cwn), o.Ne = function(e, t) { + return vpe(u(e, 148), u(t, 148)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ed, "RectilinearConvexHull/lambda$0$Type", 1711), b(1712, 1, Ne, swn), o.Ne = function(e, t) { + return kpe(u(e, 148), u(t, 148)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ed, "RectilinearConvexHull/lambda$1$Type", 1712), b(1713, 1, Ne, fwn), o.Ne = function(e, t) { + return mpe(u(e, 148), u(t, 148)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ed, "RectilinearConvexHull/lambda$2$Type", 1713), b(1714, 1, Ne, own), o.Ne = function(e, t) { + return ype(u(e, 148), u(t, 148)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ed, "RectilinearConvexHull/lambda$3$Type", 1714), b(1715, 1, Ne, hwn), o.Ne = function(e, t) { + return Yye(u(e, 148), u(t, 148)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ed, "RectilinearConvexHull/lambda$4$Type", 1715), b(1716, 1, {}, MOn), w(Ed, "Scanline", 1716), b(2104, 1, {}), w(Hf, "AbstractGraphPlacer", 2104), b(335, 1, { 335: 1 }, aAn), o.Ff = function(e) { + return this.Gf(e) ? (Pn(this.b, u(v(e, (W(), Nl)), 21), e), !0) : !1; + }, o.Gf = function(e) { + var t, i, r, c; + for (t = u(v(e, (W(), Nl)), 21), c = u(ot(gt, t), 21), r = c.Kc(); r.Ob(); ) + if (i = u(r.Pb(), 21), !u(ot(this.b, i), 15).dc()) + return !1; + return !0; + }; + var gt; + w(Hf, "ComponentGroup", 335), b(779, 2104, {}, QG), o.Hf = function(e) { + var t, i; + for (i = new C(this.a); i.a < i.c.c.length; ) + if (t = u(E(i), 335), t.Ff(e)) + return; + nn(this.a, new aAn(e)); + }, o.Ef = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k; + if (this.a.c.length = 0, t.a.c.length = 0, e.dc()) { + t.f.a = 0, t.f.b = 0; + return; + } + for (f = u(e.Xb(0), 36), Ur(t, f), c = e.Kc(); c.Ob(); ) + r = u(c.Pb(), 36), this.Hf(r); + for (k = new Li(), s = $(R(v(f, (cn(), Tj)))), a = new C(this.a); a.a < a.c.c.length; ) + h = u(E(a), 335), d = azn(h, s), Zl(pM(h.b), k.a, k.b), k.a += d.a, k.b += d.b; + if (t.f.a = k.a - s, t.f.b = k.b - s, on(un(v(f, sI))) && x(v(f, $l)) === x((El(), Rv))) { + for (m = e.Kc(); m.Ob(); ) + g = u(m.Pb(), 36), Sm(g, g.c.a, g.c.b); + for (i = new FO(), htn(i, e, s), p = e.Kc(); p.Ob(); ) + g = u(p.Pb(), 36), it(ff(g.c), i.e); + it(ff(t.f), i.a); + } + for (l = new C(this.a); l.a < l.c.c.length; ) + h = u(E(l), 335), nQ(t, pM(h.b)); + }, w(Hf, "ComponentGroupGraphPlacer", 779), b(1312, 779, {}, tjn), o.Hf = function(e) { + iBn(this, e); + }, o.Ef = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N; + if (this.a.c.length = 0, t.a.c.length = 0, e.dc()) { + t.f.a = 0, t.f.b = 0; + return; + } + for (f = u(e.Xb(0), 36), Ur(t, f), c = e.Kc(); c.Ob(); ) + r = u(c.Pb(), 36), iBn(this, r); + for (N = new Li(), O = new Li(), j = new Li(), k = new Li(), s = $(R(v(f, (cn(), Tj)))), a = new C(this.a); a.a < a.c.c.length; ) { + if (h = u(E(a), 335), hl(u(v(t, (He(), _d)), 88))) { + for (j.a = N.a, I = new n6(G6(aN(h.b).a).a.kc()); I.b.Ob(); ) + if (S = u(rC(I.b.Pb()), 21), S.Hc((en(), Xn))) { + j.a = O.a; + break; + } + } else if (vg(u(v(t, _d), 88))) { + for (j.b = N.b, I = new n6(G6(aN(h.b).a).a.kc()); I.b.Ob(); ) + if (S = u(rC(I.b.Pb()), 21), S.Hc((en(), Wn))) { + j.b = O.b; + break; + } + } + if (d = azn(u(h, 579), s), Zl(pM(h.b), j.a, j.b), hl(u(v(t, _d), 88))) { + for (O.a = j.a + d.a, k.a = y.Math.max(k.a, O.a), I = new n6(G6(aN(h.b).a).a.kc()); I.b.Ob(); ) + if (S = u(rC(I.b.Pb()), 21), S.Hc((en(), ae))) { + N.a = j.a + d.a; + break; + } + O.b = j.b + d.b, j.b = O.b, k.b = y.Math.max(k.b, j.b); + } else if (vg(u(v(t, _d), 88))) { + for (O.b = j.b + d.b, k.b = y.Math.max(k.b, O.b), I = new n6(G6(aN(h.b).a).a.kc()); I.b.Ob(); ) + if (S = u(rC(I.b.Pb()), 21), S.Hc((en(), Zn))) { + N.b = j.b + d.b; + break; + } + O.a = j.a + d.a, j.a = O.a, k.a = y.Math.max(k.a, j.a); + } + } + if (t.f.a = k.a - s, t.f.b = k.b - s, on(un(v(f, sI))) && x(v(f, $l)) === x((El(), Rv))) { + for (m = e.Kc(); m.Ob(); ) + g = u(m.Pb(), 36), Sm(g, g.c.a, g.c.b); + for (i = new FO(), htn(i, e, s), p = e.Kc(); p.Ob(); ) + g = u(p.Pb(), 36), it(ff(g.c), i.e); + it(ff(t.f), i.a); + } + for (l = new C(this.a); l.a < l.c.c.length; ) + h = u(E(l), 335), nQ(t, pM(h.b)); + }, w(Hf, "ComponentGroupModelOrderGraphPlacer", 1312), b(389, 22, { 3: 1, 34: 1, 22: 1, 389: 1 }, aC); + var P_, Lon, I_, Ow, Non = we(Hf, "ComponentOrderingStrategy", 389, ke, Upe, mde), LZn; + b(659, 1, {}, FO), w(Hf, "ComponentsCompactor", 659), b(1533, 13, zzn, jLn), o.Fc = function(e) { + return I5(this, u(e, 148)); + }, w(Hf, "ComponentsCompactor/Hullpoints", 1533), b(1530, 1, { 855: 1 }, jRn), o.a = !1, w(Hf, "ComponentsCompactor/InternalComponent", 1530), b(1529, 1, qh, _yn), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return new C(this.a); + }, w(Hf, "ComponentsCompactor/InternalConnectedComponents", 1529), b(1532, 1, { 602: 1 }, iHn), o.Bf = function() { + return null; + }, o.Cf = function() { + return this.a; + }, o.Af = function() { + return Ex(this.d); + }, o.Df = function() { + return this.b; + }, w(Hf, "ComponentsCompactor/InternalExternalExtension", 1532), b(1531, 1, { 602: 1 }, zyn), o.Cf = function() { + return this.a; + }, o.Af = function() { + return Ex(this.d); + }, o.Bf = function() { + return this.c; + }, o.Df = function() { + return this.b; + }, w(Hf, "ComponentsCompactor/InternalUnionExternalExtension", 1531), b(1535, 1, {}, Cqn), w(Hf, "ComponentsCompactor/OuterSegments", 1535), b(1534, 1, {}, Hyn), w(Hf, "ComponentsCompactor/Segments", 1534), b(1282, 1, {}, xLn), w(Hf, ztn, 1282), b(1283, 1, Ne, lwn), o.Ne = function(e, t) { + return Cpe(u(e, 36), u(t, 36)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Hf, "ComponentsProcessor/lambda$0$Type", 1283), b(579, 335, { 335: 1, 579: 1 }, yLn), o.Ff = function(e) { + return fY(this, e); + }, o.Gf = function(e) { + return iqn(this, e); + }; + var qe; + w(Hf, "ModelOrderComponentGroup", 579), b(1310, 2104, {}, awn), o.Ef = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + if (e.gc() == 1) { + g = u(e.Xb(0), 36), g != t && (t.a.c.length = 0, fUn(t, g, 0, 0), Ur(t, g), JW(t.d, g.d), t.f.a = g.f.a, t.f.b = g.f.b); + return; + } else if (e.dc()) { + t.a.c.length = 0, t.f.a = 0, t.f.b = 0; + return; + } + for (this.Jf(e, t), c = u(e.Xb(0), 36), t.a.c.length = 0, Ur(t, c), a = 0, p = 0, f = e.Kc(); f.Ob(); ) + s = u(f.Pb(), 36), d = s.f, a = y.Math.max(a, d.a), p += d.a * d.b; + if (a = y.Math.max(a, y.Math.sqrt(p) * $(R(v(t, (cn(), oI))))), r = $(R(v(t, Tj))), this.If(e, t, a, r), on(un(v(c, sI)))) { + for (i = new FO(), htn(i, e, r), l = e.Kc(); l.Ob(); ) + h = u(l.Pb(), 36), it(ff(h.c), i.e); + it(ff(t.f), i.a); + } + nQ(t, e); + }, o.If = function(e, t, i, r) { + var c, s, f, h, l, a, d, g; + for (d = 0, g = 0, h = 0, c = r, f = e.Kc(); f.Ob(); ) + s = u(f.Pb(), 36), a = s.f, d + a.a > i && (d = 0, g += h + r, h = 0), l = s.c, Sm(s, d + l.a, g + l.b), ff(l), c = y.Math.max(c, d + a.a), h = y.Math.max(h, a.b), d += a.a + r; + t.f.a = c, t.f.b = g + h; + }, o.Jf = function(e, t) { + var i, r, c, s, f; + if (x(v(t, (cn(), Fw))) === x((dd(), Ow))) { + for (r = e.Kc(); r.Ob(); ) { + for (i = u(r.Pb(), 36), f = 0, s = new C(i.a); s.a < s.c.c.length; ) + c = u(E(s), 10), f += u(v(c, Ute), 17).a; + i.p = f; + } + Dn(), e.jd(new dwn()); + } + }, w(Hf, "SimpleRowGraphPlacer", 1310), b(1313, 1310, {}, uwn), o.If = function(e, t, i, r) { + var c, s, f, h, l, a, d, g, p, m; + for (p = 0, m = 0, h = 0, c = r, l = null, g = 0, f = e.Kc(); f.Ob(); ) + s = u(f.Pb(), 36), d = s.f, (p + d.a > i && !u(v(s, (W(), Nl)), 21).Hc((en(), Xn)) || l && u(v(l, (W(), Nl)), 21).Hc((en(), Zn)) || u(v(s, (W(), Nl)), 21).Hc((en(), Wn))) && (p = g, m += h + r, h = 0), a = s.c, u(v(s, (W(), Nl)), 21).Hc((en(), Xn)) && (p = c + r), Sm(s, p + a.a, m + a.b), c = y.Math.max(c, p + d.a), u(v(s, Nl), 21).Hc(ae) && (g = y.Math.max(g, p + d.a + r)), ff(a), h = y.Math.max(h, d.b), p += d.a + r, l = s; + t.f.a = c, t.f.b = m + h; + }, o.Jf = function(e, t) { + }, w(Hf, "ModelOrderRowGraphPlacer", 1313), b(1311, 1, Ne, dwn), o.Ne = function(e, t) { + return Bve(u(e, 36), u(t, 36)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Hf, "SimpleRowGraphPlacer/1", 1311); + var NZn; + b(1280, 1, ph, bwn), o.Lb = function(e) { + var t; + return t = u(v(u(e, 249).b, (cn(), Fr)), 75), !!t && t.b != 0; + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + var t; + return t = u(v(u(e, 249).b, (cn(), Fr)), 75), !!t && t.b != 0; + }, w(hS, "CompoundGraphPostprocessor/1", 1280), b(1279, 1, vt, Vyn), o.Kf = function(e, t) { + ERn(this, u(e, 36), t); + }, w(hS, "CompoundGraphPreprocessor", 1279), b(453, 1, { 453: 1 }, dBn), o.c = !1, w(hS, "CompoundGraphPreprocessor/ExternalPort", 453), b(249, 1, { 249: 1 }, zC), o.Ib = function() { + return SL(this.c) + ":" + V_n(this.b); + }, w(hS, "CrossHierarchyEdge", 249), b(777, 1, Ne, NG), o.Ne = function(e, t) { + return R7e(this, u(e, 249), u(t, 249)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(hS, "CrossHierarchyEdgeComparator", 777), b(305, 137, { 3: 1, 305: 1, 96: 1, 137: 1 }), o.p = 0, w(Rc, "LGraphElement", 305), b(18, 305, { 3: 1, 18: 1, 305: 1, 96: 1, 137: 1 }, E0), o.Ib = function() { + return V_n(this); + }; + var O_ = w(Rc, "LEdge", 18); + b(36, 305, { 3: 1, 20: 1, 36: 1, 305: 1, 96: 1, 137: 1 }, CQ), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return new C(this.b); + }, o.Ib = function() { + return this.b.c.length == 0 ? "G-unlayered" + ca(this.a) : this.a.c.length == 0 ? "G-layered" + ca(this.b) : "G[layerless" + ca(this.a) + ", layers" + ca(this.b) + "]"; + }; + var $Zn = w(Rc, "LGraph", 36), xZn; + b(666, 1, {}), o.Lf = function() { + return this.e.n; + }, o.of = function(e) { + return v(this.e, e); + }, o.Mf = function() { + return this.e.o; + }, o.Nf = function() { + return this.e.p; + }, o.pf = function(e) { + return kt(this.e, e); + }, o.Of = function(e) { + this.e.n.a = e.a, this.e.n.b = e.b; + }, o.Pf = function(e) { + this.e.o.a = e.a, this.e.o.b = e.b; + }, o.Qf = function(e) { + this.e.p = e; + }, w(Rc, "LGraphAdapters/AbstractLShapeAdapter", 666), b(474, 1, { 853: 1 }, Vv), o.Rf = function() { + var e, t; + if (!this.b) + for (this.b = Dh(this.a.b.c.length), t = new C(this.a.b); t.a < t.c.c.length; ) + e = u(E(t), 72), nn(this.b, new OE(e)); + return this.b; + }, o.b = null, w(Rc, "LGraphAdapters/LEdgeAdapter", 474), b(665, 1, {}, kN), o.Sf = function() { + var e, t, i, r, c, s; + if (!this.b) { + for (this.b = new Z(), r = new C(this.a.b); r.a < r.c.c.length; ) + for (i = u(E(r), 30), s = new C(i.a); s.a < s.c.c.length; ) + if (c = u(E(s), 10), this.c.Mb(c) && (nn(this.b, new XC(this, c, this.e)), this.d)) { + if (kt(c, (W(), P3))) + for (t = u(v(c, P3), 15).Kc(); t.Ob(); ) + e = u(t.Pb(), 10), nn(this.b, new XC(this, e, !1)); + if (kt(c, C3)) + for (t = u(v(c, C3), 15).Kc(); t.Ob(); ) + e = u(t.Pb(), 10), nn(this.b, new XC(this, e, !1)); + } + } + return this.b; + }, o.Lf = function() { + throw M(new Kl(DXn)); + }, o.of = function(e) { + return v(this.a, e); + }, o.Mf = function() { + return this.a.f; + }, o.Nf = function() { + return this.a.p; + }, o.pf = function(e) { + return kt(this.a, e); + }, o.Of = function(e) { + throw M(new Kl(DXn)); + }, o.Pf = function(e) { + this.a.f.a = e.a, this.a.f.b = e.b; + }, o.Qf = function(e) { + this.a.p = e; + }, o.b = null, o.d = !1, o.e = !1, w(Rc, "LGraphAdapters/LGraphAdapter", 665), b(585, 666, { 187: 1 }, OE), w(Rc, "LGraphAdapters/LLabelAdapter", 585), b(584, 666, { 695: 1 }, XC), o.Tf = function() { + return this.b; + }, o.Uf = function() { + return Dn(), Dn(), sr; + }, o.Rf = function() { + var e, t; + if (!this.a) + for (this.a = Dh(u(this.e, 10).b.c.length), t = new C(u(this.e, 10).b); t.a < t.c.c.length; ) + e = u(E(t), 72), nn(this.a, new OE(e)); + return this.a; + }, o.Vf = function() { + var e; + return e = u(this.e, 10).d, new vV(e.d, e.c, e.a, e.b); + }, o.Wf = function() { + return Dn(), Dn(), sr; + }, o.Xf = function() { + var e, t; + if (!this.c) + for (this.c = Dh(u(this.e, 10).j.c.length), t = new C(u(this.e, 10).j); t.a < t.c.c.length; ) + e = u(E(t), 12), nn(this.c, new FCn(e, this.d)); + return this.c; + }, o.Yf = function() { + return on(un(v(u(this.e, 10), (W(), nfn)))); + }, o.Zf = function(e) { + u(this.e, 10).d.b = e.b, u(this.e, 10).d.d = e.d, u(this.e, 10).d.c = e.c, u(this.e, 10).d.a = e.a; + }, o.$f = function(e) { + u(this.e, 10).f.b = e.b, u(this.e, 10).f.d = e.d, u(this.e, 10).f.c = e.c, u(this.e, 10).f.a = e.a; + }, o._f = function() { + $me(this, (u6(), xZn)); + }, o.a = null, o.b = null, o.c = null, o.d = !1, w(Rc, "LGraphAdapters/LNodeAdapter", 584), b(1788, 666, { 852: 1 }, FCn), o.Uf = function() { + var e, t, i, r, c, s, f, h; + if (this.d && u(this.e, 12).i.k == (Vn(), Hc)) + return Dn(), Dn(), sr; + if (!this.a) { + for (this.a = new Z(), i = new C(u(this.e, 12).e); i.a < i.c.c.length; ) + e = u(E(i), 18), nn(this.a, new Vv(e)); + if (this.d && (r = u(v(u(this.e, 12), (W(), Xu)), 10), r)) + for (t = new ie(ce(ji(r).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), nn(this.a, new Vv(e)); + if (kt(u(this.e, 12).i, (W(), hb)) && (f = u(v(u(this.e, 12).i, hb), 337), h = u(Nf(f.e, this.e), 113), h)) + for (s = new C(h.b); s.a < s.c.c.length; ) + c = u(E(s), 340), nn(this.a, new Vv(c.a)); + } + return this.a; + }, o.Rf = function() { + var e, t; + if (!this.b) + for (this.b = Dh(u(this.e, 12).f.c.length), t = new C(u(this.e, 12).f); t.a < t.c.c.length; ) + e = u(E(t), 72), nn(this.b, new OE(e)); + return this.b; + }, o.Wf = function() { + var e, t, i, r, c, s, f, h; + if (this.d && u(this.e, 12).i.k == (Vn(), Hc)) + return Dn(), Dn(), sr; + if (!this.c) { + for (this.c = new Z(), i = new C(u(this.e, 12).g); i.a < i.c.c.length; ) + e = u(E(i), 18), nn(this.c, new Vv(e)); + if (this.d && (r = u(v(u(this.e, 12), (W(), Xu)), 10), r)) + for (t = new ie(ce(Qt(r).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 18), nn(this.c, new Vv(e)); + if (kt(u(this.e, 12).i, (W(), hb)) && (f = u(v(u(this.e, 12).i, hb), 337), h = u(Nf(f.e, this.e), 113), h)) + for (s = new C(h.e); s.a < s.c.c.length; ) + c = u(E(s), 340), nn(this.c, new Vv(c.a)); + } + return this.c; + }, o.ag = function() { + return u(this.e, 12).j; + }, o.bg = function() { + return on(un(v(u(this.e, 12), (W(), yj)))); + }, o.a = null, o.b = null, o.c = null, o.d = !1, w(Rc, "LGraphAdapters/LPortAdapter", 1788), b(1789, 1, Ne, wwn), o.Ne = function(e, t) { + return IAe(u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Rc, "LGraphAdapters/PortComparator", 1789), b(818, 1, De, UU), o.Mb = function(e) { + return u(e, 10), u6(), !0; + }, w(Rc, "LGraphAdapters/lambda$0$Type", 818), b(404, 305, { 3: 1, 305: 1, 404: 1, 96: 1, 137: 1 }), w(Rc, "LShape", 404), b(72, 404, { 3: 1, 305: 1, 72: 1, 404: 1, 96: 1, 137: 1 }, Zjn, LX), o.Ib = function() { + var e; + return e = vbe(this), e == null ? "label" : "l_" + e; + }, w(Rc, "LLabel", 72), b(214, 1, { 3: 1, 4: 1, 214: 1, 423: 1 }), o.Fb = function(e) { + var t; + return D(e, 214) ? (t = u(e, 214), this.d == t.d && this.a == t.a && this.b == t.b && this.c == t.c) : !1; + }, o.Hb = function() { + var e, t; + return e = pp(this.b) << 16, e |= pp(this.a) & ui, t = pp(this.c) << 16, t |= pp(this.d) & ui, e ^ t; + }, o.cg = function(e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (s = 0; s < e.length && UFn((zn(s, e.length), e.charCodeAt(s)), NXn); ) + ++s; + for (t = e.length; t > 0 && UFn((zn(t - 1, e.length), e.charCodeAt(t - 1)), $Xn); ) + --t; + if (s < t) { + d = ww((Fi(s, t, e.length), e.substr(s, t - s)), ",|;"); + try { + for (h = d, l = 0, a = h.length; l < a; ++l) { + if (f = h[l], c = ww(f, "="), c.length != 2) + throw M(new Gn("Expecting a list of key-value pairs.")); + r = fw(c[0]), g = sw(fw(c[1])), An(r, "top") ? this.d = g : An(r, "left") ? this.b = g : An(r, "bottom") ? this.a = g : An(r, "right") && (this.c = g); + } + } catch (p) { + throw p = It(p), D(p, 130) ? (i = p, M(new Gn(xXn + i))) : M(p); + } + } + }, o.Ib = function() { + return "[top=" + this.d + ",left=" + this.b + ",bottom=" + this.a + ",right=" + this.c + "]"; + }, o.a = 0, o.b = 0, o.c = 0, o.d = 0, w(Ky, "Spacing", 214), b(140, 214, FXn, Qv, iTn, vV, qL); + var $on = w(Ky, "ElkMargin", 140); + b(660, 140, FXn, sD), w(Rc, "LMargin", 660), b(10, 404, { 3: 1, 305: 1, 10: 1, 404: 1, 96: 1, 137: 1 }, Tl), o.Ib = function() { + return gRn(this); + }, o.i = !1; + var Qh = w(Rc, "LNode", 10); + b(273, 22, { 3: 1, 34: 1, 22: 1, 273: 1 }, b6); + var Gf, Zt, Sc, Mi, Vt, Hc, D_ = we(Rc, "LNode/NodeType", 273, ke, M4e, E0e), FZn; + b(775, 1, De, GU), o.Mb = function(e) { + return on(un(v(u(e, 72), (cn(), EH)))); + }, w(Rc, "LNode/lambda$0$Type", 775), b(107, 214, BXn, up, f0, qV); + var xon = w(Ky, "ElkPadding", 107); + b(778, 107, BXn, ez), w(Rc, "LPadding", 778), b(12, 404, { 3: 1, 305: 1, 12: 1, 404: 1, 96: 1, 137: 1 }, Ic), o.Ib = function() { + var e, t, i; + return e = new x1(), Re((e.a += "p_", e), lA(this)), this.i && Re(Lc((e.a += "[", e), this.i), "]"), this.e.c.length == 1 && this.g.c.length == 0 && u(sn(this.e, 0), 18).c != this && (t = u(sn(this.e, 0), 18).c, Re((e.a += " << ", e), lA(t)), Re(Lc((e.a += "[", e), t.i), "]")), this.e.c.length == 0 && this.g.c.length == 1 && u(sn(this.g, 0), 18).d != this && (i = u(sn(this.g, 0), 18).d, Re((e.a += " >> ", e), lA(i)), Re(Lc((e.a += "[", e), i.i), "]")), e.a; + }, o.c = !0, o.d = !1; + var Fon, Bon, Ron, Kon, _on, Hon, BZn = w(Rc, "LPort", 12); + b(408, 1, qh, e4), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + var e; + return e = new C(this.a.e), new H9n(e); + }, w(Rc, "LPort/1", 408), b(1309, 1, Pi, H9n), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return u(E(this.a), 18).c; + }, o.Ob = function() { + return tc(this.a); + }, o.Qb = function() { + q6(this.a); + }, w(Rc, "LPort/1/1", 1309), b(369, 1, qh, ip), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + var e; + return e = new C(this.a.g), new $G(e); + }, w(Rc, "LPort/2", 369), b(776, 1, Pi, $G), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return u(E(this.a), 18).d; + }, o.Ob = function() { + return tc(this.a); + }, o.Qb = function() { + q6(this.a); + }, w(Rc, "LPort/2/1", 776), b(1302, 1, qh, OCn), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return new Df(this); + }, w(Rc, "LPort/CombineIter", 1302), b(208, 1, Pi, Df), o.Nb = function(e) { + _i(this, e); + }, o.Qb = function() { + fEn(); + }, o.Ob = function() { + return D6(this); + }, o.Pb = function() { + return tc(this.a) ? E(this.a) : E(this.b); + }, w(Rc, "LPort/CombineIter/1", 208), b(1303, 1, ph, gwn), o.Lb = function(e) { + return IPn(e); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return Du(), u(e, 12).g.c.length != 0; + }, w(Rc, "LPort/lambda$0$Type", 1303), b(1304, 1, ph, pwn), o.Lb = function(e) { + return OPn(e); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return Du(), u(e, 12).e.c.length != 0; + }, w(Rc, "LPort/lambda$1$Type", 1304), b(1305, 1, ph, mwn), o.Lb = function(e) { + return Du(), u(e, 12).j == (en(), Xn); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return Du(), u(e, 12).j == (en(), Xn); + }, w(Rc, "LPort/lambda$2$Type", 1305), b(1306, 1, ph, vwn), o.Lb = function(e) { + return Du(), u(e, 12).j == (en(), Zn); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return Du(), u(e, 12).j == (en(), Zn); + }, w(Rc, "LPort/lambda$3$Type", 1306), b(1307, 1, ph, kwn), o.Lb = function(e) { + return Du(), u(e, 12).j == (en(), ae); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return Du(), u(e, 12).j == (en(), ae); + }, w(Rc, "LPort/lambda$4$Type", 1307), b(1308, 1, ph, ywn), o.Lb = function(e) { + return Du(), u(e, 12).j == (en(), Wn); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return Du(), u(e, 12).j == (en(), Wn); + }, w(Rc, "LPort/lambda$5$Type", 1308), b(30, 305, { 3: 1, 20: 1, 305: 1, 30: 1, 96: 1, 137: 1 }, Nc), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return new C(this.a); + }, o.Ib = function() { + return "L_" + qr(this.b.b, this, 0) + ca(this.a); + }, w(Rc, "Layer", 30), b(1330, 1, {}, Xyn), w(w1, RXn, 1330), b(1334, 1, {}, jwn), o.Kb = function(e) { + return Gr(u(e, 84)); + }, w(w1, "ElkGraphImporter/0methodref$connectableShapeToNode$Type", 1334), b(1337, 1, {}, Ewn), o.Kb = function(e) { + return Gr(u(e, 84)); + }, w(w1, "ElkGraphImporter/1methodref$connectableShapeToNode$Type", 1337), b(1331, 1, re, q9n), o.Cd = function(e) { + lHn(this.a, u(e, 123)); + }, w(w1, Xtn, 1331), b(1332, 1, re, U9n), o.Cd = function(e) { + lHn(this.a, u(e, 123)); + }, w(w1, KXn, 1332), b(1333, 1, {}, Cwn), o.Kb = function(e) { + return new Tn(null, new In(GW(u(e, 74)), 16)); + }, w(w1, _Xn, 1333), b(1335, 1, De, G9n), o.Mb = function(e) { + return Hle(this.a, u(e, 27)); + }, w(w1, HXn, 1335), b(1336, 1, {}, Mwn), o.Kb = function(e) { + return new Tn(null, new In(cge(u(e, 74)), 16)); + }, w(w1, "ElkGraphImporter/lambda$5$Type", 1336), b(1338, 1, De, z9n), o.Mb = function(e) { + return qle(this.a, u(e, 27)); + }, w(w1, "ElkGraphImporter/lambda$7$Type", 1338), b(1339, 1, De, Twn), o.Mb = function(e) { + return vge(u(e, 74)); + }, w(w1, "ElkGraphImporter/lambda$8$Type", 1339), b(1297, 1, {}, R5n); + var RZn; + w(w1, "ElkGraphLayoutTransferrer", 1297), b(1298, 1, De, X9n), o.Mb = function(e) { + return Oae(this.a, u(e, 18)); + }, w(w1, "ElkGraphLayoutTransferrer/lambda$0$Type", 1298), b(1299, 1, re, V9n), o.Cd = function(e) { + c7(), nn(this.a, u(e, 18)); + }, w(w1, "ElkGraphLayoutTransferrer/lambda$1$Type", 1299), b(1300, 1, De, W9n), o.Mb = function(e) { + return gae(this.a, u(e, 18)); + }, w(w1, "ElkGraphLayoutTransferrer/lambda$2$Type", 1300), b(1301, 1, re, J9n), o.Cd = function(e) { + c7(), nn(this.a, u(e, 18)); + }, w(w1, "ElkGraphLayoutTransferrer/lambda$3$Type", 1301), b(819, 1, {}, yV), w(Qn, "BiLinkedHashMultiMap", 819), b(1550, 1, vt, Awn), o.Kf = function(e, t) { + rve(u(e, 36), t); + }, w(Qn, "CommentNodeMarginCalculator", 1550), b(1551, 1, {}, Swn), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "CommentNodeMarginCalculator/lambda$0$Type", 1551), b(1552, 1, re, Pwn), o.Cd = function(e) { + rIe(u(e, 10)); + }, w(Qn, "CommentNodeMarginCalculator/lambda$1$Type", 1552), b(1553, 1, vt, Iwn), o.Kf = function(e, t) { + sAe(u(e, 36), t); + }, w(Qn, "CommentPostprocessor", 1553), b(1554, 1, vt, Own), o.Kf = function(e, t) { + IDe(u(e, 36), t); + }, w(Qn, "CommentPreprocessor", 1554), b(1555, 1, vt, Dwn), o.Kf = function(e, t) { + MTe(u(e, 36), t); + }, w(Qn, "ConstraintsPostprocessor", 1555), b(1556, 1, vt, Lwn), o.Kf = function(e, t) { + Dve(u(e, 36), t); + }, w(Qn, "EdgeAndLayerConstraintEdgeReverser", 1556), b(1557, 1, vt, Nwn), o.Kf = function(e, t) { + j8e(u(e, 36), t); + }, w(Qn, "EndLabelPostprocessor", 1557), b(1558, 1, {}, $wn), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "EndLabelPostprocessor/lambda$0$Type", 1558), b(1559, 1, De, xwn), o.Mb = function(e) { + return F3e(u(e, 10)); + }, w(Qn, "EndLabelPostprocessor/lambda$1$Type", 1559), b(1560, 1, re, Fwn), o.Cd = function(e) { + ake(u(e, 10)); + }, w(Qn, "EndLabelPostprocessor/lambda$2$Type", 1560), b(1561, 1, vt, Bwn), o.Kf = function(e, t) { + nEe(u(e, 36), t); + }, w(Qn, "EndLabelPreprocessor", 1561), b(1562, 1, {}, Rwn), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "EndLabelPreprocessor/lambda$0$Type", 1562), b(1563, 1, re, mSn), o.Cd = function(e) { + ele(this.a, this.b, this.c, u(e, 10)); + }, o.a = 0, o.b = 0, o.c = !1, w(Qn, "EndLabelPreprocessor/lambda$1$Type", 1563), b(1564, 1, De, Kwn), o.Mb = function(e) { + return x(v(u(e, 72), (cn(), Ah))) === x(($f(), Bv)); + }, w(Qn, "EndLabelPreprocessor/lambda$2$Type", 1564), b(1565, 1, re, Q9n), o.Cd = function(e) { + Fe(this.a, u(e, 72)); + }, w(Qn, "EndLabelPreprocessor/lambda$3$Type", 1565), b(1566, 1, De, _wn), o.Mb = function(e) { + return x(v(u(e, 72), (cn(), Ah))) === x(($f(), Jw)); + }, w(Qn, "EndLabelPreprocessor/lambda$4$Type", 1566), b(1567, 1, re, Y9n), o.Cd = function(e) { + Fe(this.a, u(e, 72)); + }, w(Qn, "EndLabelPreprocessor/lambda$5$Type", 1567), b(1615, 1, vt, O5n), o.Kf = function(e, t) { + y5e(u(e, 36), t); + }; + var KZn; + w(Qn, "EndLabelSorter", 1615), b(1616, 1, Ne, Hwn), o.Ne = function(e, t) { + return n9e(u(e, 466), u(t, 466)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "EndLabelSorter/1", 1616), b(466, 1, { 466: 1 }, UIn), w(Qn, "EndLabelSorter/LabelGroup", 466), b(1617, 1, {}, qwn), o.Kb = function(e) { + return r7(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "EndLabelSorter/lambda$0$Type", 1617), b(1618, 1, De, Uwn), o.Mb = function(e) { + return r7(), u(e, 10).k == (Vn(), Vt); + }, w(Qn, "EndLabelSorter/lambda$1$Type", 1618), b(1619, 1, re, Gwn), o.Cd = function(e) { + bje(u(e, 10)); + }, w(Qn, "EndLabelSorter/lambda$2$Type", 1619), b(1620, 1, De, zwn), o.Mb = function(e) { + return r7(), x(v(u(e, 72), (cn(), Ah))) === x(($f(), Jw)); + }, w(Qn, "EndLabelSorter/lambda$3$Type", 1620), b(1621, 1, De, Xwn), o.Mb = function(e) { + return r7(), x(v(u(e, 72), (cn(), Ah))) === x(($f(), Bv)); + }, w(Qn, "EndLabelSorter/lambda$4$Type", 1621), b(1568, 1, vt, Vwn), o.Kf = function(e, t) { + vIe(this, u(e, 36)); + }, o.b = 0, o.c = 0, w(Qn, "FinalSplineBendpointsCalculator", 1568), b(1569, 1, {}, Wwn), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "FinalSplineBendpointsCalculator/lambda$0$Type", 1569), b(1570, 1, {}, Jwn), o.Kb = function(e) { + return new Tn(null, new p0(new ie(ce(Qt(u(e, 10)).a.Kc(), new En())))); + }, w(Qn, "FinalSplineBendpointsCalculator/lambda$1$Type", 1570), b(1571, 1, De, Qwn), o.Mb = function(e) { + return !fr(u(e, 18)); + }, w(Qn, "FinalSplineBendpointsCalculator/lambda$2$Type", 1571), b(1572, 1, De, Ywn), o.Mb = function(e) { + return kt(u(e, 18), (W(), Dd)); + }, w(Qn, "FinalSplineBendpointsCalculator/lambda$3$Type", 1572), b(1573, 1, re, Z9n), o.Cd = function(e) { + SSe(this.a, u(e, 131)); + }, w(Qn, "FinalSplineBendpointsCalculator/lambda$4$Type", 1573), b(1574, 1, re, Zwn), o.Cd = function(e) { + Yk(u(e, 18).a); + }, w(Qn, "FinalSplineBendpointsCalculator/lambda$5$Type", 1574), b(803, 1, vt, xG), o.Kf = function(e, t) { + aOe(this, u(e, 36), t); + }, w(Qn, "GraphTransformer", 803), b(517, 22, { 3: 1, 34: 1, 22: 1, 517: 1 }, Wz); + var L_, dj, _Zn = we(Qn, "GraphTransformer/Mode", 517, ke, _ge, j0e), HZn; + b(1575, 1, vt, ngn), o.Kf = function(e, t) { + NMe(u(e, 36), t); + }, w(Qn, "HierarchicalNodeResizingProcessor", 1575), b(1576, 1, vt, egn), o.Kf = function(e, t) { + Zme(u(e, 36), t); + }, w(Qn, "HierarchicalPortConstraintProcessor", 1576), b(1577, 1, Ne, tgn), o.Ne = function(e, t) { + return y9e(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "HierarchicalPortConstraintProcessor/NodeComparator", 1577), b(1578, 1, vt, ign), o.Kf = function(e, t) { + jPe(u(e, 36), t); + }, w(Qn, "HierarchicalPortDummySizeProcessor", 1578), b(1579, 1, vt, rgn), o.Kf = function(e, t) { + DAe(this, u(e, 36), t); + }, o.a = 0, w(Qn, "HierarchicalPortOrthogonalEdgeRouter", 1579), b(1580, 1, Ne, cgn), o.Ne = function(e, t) { + return N1e(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "HierarchicalPortOrthogonalEdgeRouter/1", 1580), b(1581, 1, Ne, ugn), o.Ne = function(e, t) { + return K4e(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "HierarchicalPortOrthogonalEdgeRouter/2", 1581), b(1582, 1, vt, ogn), o.Kf = function(e, t) { + Wye(u(e, 36), t); + }, w(Qn, "HierarchicalPortPositionProcessor", 1582), b(1583, 1, vt, K5n), o.Kf = function(e, t) { + lLe(this, u(e, 36)); + }, o.a = 0, o.c = 0; + var CP, MP; + w(Qn, "HighDegreeNodeLayeringProcessor", 1583), b(580, 1, { 580: 1 }, sgn), o.b = -1, o.d = -1, w(Qn, "HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation", 580), b(1584, 1, {}, fgn), o.Kb = function(e) { + return L7(), ji(u(e, 10)); + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "HighDegreeNodeLayeringProcessor/lambda$0$Type", 1584), b(1585, 1, {}, hgn), o.Kb = function(e) { + return L7(), Qt(u(e, 10)); + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "HighDegreeNodeLayeringProcessor/lambda$1$Type", 1585), b(1591, 1, vt, lgn), o.Kf = function(e, t) { + bPe(this, u(e, 36), t); + }, w(Qn, "HyperedgeDummyMerger", 1591), b(804, 1, {}, xV), o.a = !1, o.b = !1, o.c = !1, w(Qn, "HyperedgeDummyMerger/MergeState", 804), b(1592, 1, {}, agn), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "HyperedgeDummyMerger/lambda$0$Type", 1592), b(1593, 1, {}, dgn), o.Kb = function(e) { + return new Tn(null, new In(u(e, 10).j, 16)); + }, w(Qn, "HyperedgeDummyMerger/lambda$1$Type", 1593), b(1594, 1, re, bgn), o.Cd = function(e) { + u(e, 12).p = -1; + }, w(Qn, "HyperedgeDummyMerger/lambda$2$Type", 1594), b(1595, 1, vt, wgn), o.Kf = function(e, t) { + aPe(u(e, 36), t); + }, w(Qn, "HypernodesProcessor", 1595), b(1596, 1, vt, ggn), o.Kf = function(e, t) { + yPe(u(e, 36), t); + }, w(Qn, "InLayerConstraintProcessor", 1596), b(1597, 1, vt, pgn), o.Kf = function(e, t) { + bve(u(e, 36), t); + }, w(Qn, "InnermostNodeMarginCalculator", 1597), b(1598, 1, vt, mgn), o.Kf = function(e, t) { + TDe(this, u(e, 36)); + }, o.a = li, o.b = li, o.c = St, o.d = St; + var yNe = w(Qn, "InteractiveExternalPortPositioner", 1598); + b(1599, 1, {}, vgn), o.Kb = function(e) { + return u(e, 18).d.i; + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "InteractiveExternalPortPositioner/lambda$0$Type", 1599), b(1600, 1, {}, n7n), o.Kb = function(e) { + return $1e(this.a, R(e)); + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "InteractiveExternalPortPositioner/lambda$1$Type", 1600), b(1601, 1, {}, kgn), o.Kb = function(e) { + return u(e, 18).c.i; + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "InteractiveExternalPortPositioner/lambda$2$Type", 1601), b(1602, 1, {}, e7n), o.Kb = function(e) { + return x1e(this.a, R(e)); + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "InteractiveExternalPortPositioner/lambda$3$Type", 1602), b(1603, 1, {}, t7n), o.Kb = function(e) { + return Lae(this.a, R(e)); + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "InteractiveExternalPortPositioner/lambda$4$Type", 1603), b(1604, 1, {}, i7n), o.Kb = function(e) { + return Nae(this.a, R(e)); + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "InteractiveExternalPortPositioner/lambda$5$Type", 1604), b(81, 22, { 3: 1, 34: 1, 22: 1, 81: 1, 196: 1 }, ei), o.dg = function() { + switch (this.g) { + case 15: + return new Fpn(); + case 22: + return new Bpn(); + case 47: + return new _pn(); + case 28: + case 35: + return new Ogn(); + case 32: + return new Awn(); + case 42: + return new Iwn(); + case 1: + return new Own(); + case 41: + return new Dwn(); + case 56: + return new xG((V4(), dj)); + case 0: + return new xG((V4(), L_)); + case 2: + return new Lwn(); + case 54: + return new Nwn(); + case 33: + return new Bwn(); + case 51: + return new Vwn(); + case 55: + return new ngn(); + case 13: + return new egn(); + case 38: + return new ign(); + case 44: + return new rgn(); + case 40: + return new ogn(); + case 9: + return new K5n(); + case 49: + return new iAn(); + case 37: + return new lgn(); + case 43: + return new wgn(); + case 27: + return new ggn(); + case 30: + return new pgn(); + case 3: + return new mgn(); + case 18: + return new jgn(); + case 29: + return new Egn(); + case 5: + return new _5n(); + case 50: + return new ygn(); + case 34: + return new H5n(); + case 36: + return new Dgn(); + case 52: + return new O5n(); + case 11: + return new Lgn(); + case 7: + return new q5n(); + case 39: + return new Ngn(); + case 45: + return new $gn(); + case 16: + return new xgn(); + case 10: + return new WCn(); + case 48: + return new Kgn(); + case 21: + return new _gn(); + case 23: + return new gD((O0(), Z8)); + case 8: + return new qgn(); + case 12: + return new Ggn(); + case 4: + return new zgn(); + case 19: + return new W5n(); + case 17: + return new t2n(); + case 53: + return new i2n(); + case 6: + return new w2n(); + case 25: + return new Jyn(); + case 46: + return new s2n(); + case 31: + return new GAn(); + case 14: + return new E2n(); + case 26: + return new Upn(); + case 20: + return new S2n(); + case 24: + return new gD((O0(), PI)); + default: + throw M(new Gn(cR + (this.f != null ? this.f : "" + this.g))); + } + }; + var qon, Uon, Gon, zon, Xon, Von, Won, Jon, Qon, Yon, b2, TP, AP, Zon, nsn, esn, tsn, isn, rsn, csn, L8, usn, osn, ssn, fsn, hsn, N_, SP, PP, lsn, IP, OP, DP, hv, Dw, Lw, asn, LP, NP, dsn, $P, xP, bsn, wsn, gsn, psn, FP, $_, bj, BP, RP, KP, _P, msn, vsn, ksn, ysn, jNe = we(Qn, uR, 81, ke, rqn, yde), qZn; + b(1605, 1, vt, jgn), o.Kf = function(e, t) { + CDe(u(e, 36), t); + }, w(Qn, "InvertedPortProcessor", 1605), b(1606, 1, vt, Egn), o.Kf = function(e, t) { + kSe(u(e, 36), t); + }, w(Qn, "LabelAndNodeSizeProcessor", 1606), b(1607, 1, De, Cgn), o.Mb = function(e) { + return u(e, 10).k == (Vn(), Vt); + }, w(Qn, "LabelAndNodeSizeProcessor/lambda$0$Type", 1607), b(1608, 1, De, Mgn), o.Mb = function(e) { + return u(e, 10).k == (Vn(), Zt); + }, w(Qn, "LabelAndNodeSizeProcessor/lambda$1$Type", 1608), b(1609, 1, re, vSn), o.Cd = function(e) { + tle(this.b, this.a, this.c, u(e, 10)); + }, o.a = !1, o.c = !1, w(Qn, "LabelAndNodeSizeProcessor/lambda$2$Type", 1609), b(1610, 1, vt, _5n), o.Kf = function(e, t) { + JOe(u(e, 36), t); + }; + var UZn; + w(Qn, "LabelDummyInserter", 1610), b(1611, 1, ph, Tgn), o.Lb = function(e) { + return x(v(u(e, 72), (cn(), Ah))) === x(($f(), Fv)); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return x(v(u(e, 72), (cn(), Ah))) === x(($f(), Fv)); + }, w(Qn, "LabelDummyInserter/1", 1611), b(1612, 1, vt, ygn), o.Kf = function(e, t) { + BOe(u(e, 36), t); + }, w(Qn, "LabelDummyRemover", 1612), b(1613, 1, De, Agn), o.Mb = function(e) { + return on(un(v(u(e, 72), (cn(), EH)))); + }, w(Qn, "LabelDummyRemover/lambda$0$Type", 1613), b(1378, 1, vt, H5n), o.Kf = function(e, t) { + IOe(this, u(e, 36), t); + }, o.a = null; + var x_; + w(Qn, "LabelDummySwitcher", 1378), b(293, 1, { 293: 1 }, iUn), o.c = 0, o.d = null, o.f = 0, w(Qn, "LabelDummySwitcher/LabelDummyInfo", 293), b(1379, 1, {}, Sgn), o.Kb = function(e) { + return Hp(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "LabelDummySwitcher/lambda$0$Type", 1379), b(1380, 1, De, Pgn), o.Mb = function(e) { + return Hp(), u(e, 10).k == (Vn(), Sc); + }, w(Qn, "LabelDummySwitcher/lambda$1$Type", 1380), b(1381, 1, {}, r7n), o.Kb = function(e) { + return pae(this.a, u(e, 10)); + }, w(Qn, "LabelDummySwitcher/lambda$2$Type", 1381), b(1382, 1, re, c7n), o.Cd = function(e) { + Fwe(this.a, u(e, 293)); + }, w(Qn, "LabelDummySwitcher/lambda$3$Type", 1382), b(1383, 1, Ne, Ign), o.Ne = function(e, t) { + return owe(u(e, 293), u(t, 293)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "LabelDummySwitcher/lambda$4$Type", 1383), b(802, 1, vt, Ogn), o.Kf = function(e, t) { + v4e(u(e, 36), t); + }, w(Qn, "LabelManagementProcessor", 802), b(1614, 1, vt, Dgn), o.Kf = function(e, t) { + JTe(u(e, 36), t); + }, w(Qn, "LabelSideSelector", 1614), b(1622, 1, vt, Lgn), o.Kf = function(e, t) { + FPe(u(e, 36), t); + }, w(Qn, "LayerConstraintPostprocessor", 1622), b(1623, 1, vt, q5n), o.Kf = function(e, t) { + DCe(u(e, 36), t); + }; + var jsn; + w(Qn, "LayerConstraintPreprocessor", 1623), b(371, 22, { 3: 1, 34: 1, 22: 1, 371: 1 }, dC); + var wj, HP, qP, F_, GZn = we(Qn, "LayerConstraintPreprocessor/HiddenNodeConnections", 371, ke, Qpe, jde), zZn; + b(1624, 1, vt, Ngn), o.Kf = function(e, t) { + nOe(u(e, 36), t); + }, w(Qn, "LayerSizeAndGraphHeightCalculator", 1624), b(1625, 1, vt, $gn), o.Kf = function(e, t) { + $Me(u(e, 36), t); + }, w(Qn, "LongEdgeJoiner", 1625), b(1626, 1, vt, xgn), o.Kf = function(e, t) { + IIe(u(e, 36), t); + }, w(Qn, "LongEdgeSplitter", 1626), b(1627, 1, vt, WCn), o.Kf = function(e, t) { + lDe(this, u(e, 36), t); + }, o.e = 0, o.f = 0, o.j = 0, o.k = 0, o.n = 0, o.o = 0; + var XZn, VZn; + w(Qn, "NodePromotion", 1627), b(1628, 1, Ne, Fgn), o.Ne = function(e, t) { + return C6e(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "NodePromotion/1", 1628), b(1629, 1, Ne, Bgn), o.Ne = function(e, t) { + return M6e(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "NodePromotion/2", 1629), b(1630, 1, {}, Rgn), o.Kb = function(e) { + return u(e, 42), VC(), _n(), !0; + }, o.Fb = function(e) { + return this === e; + }, w(Qn, "NodePromotion/lambda$0$Type", 1630), b(1631, 1, {}, f7n), o.Kb = function(e) { + return k2e(this.a, u(e, 42)); + }, o.Fb = function(e) { + return this === e; + }, o.a = 0, w(Qn, "NodePromotion/lambda$1$Type", 1631), b(1632, 1, {}, h7n), o.Kb = function(e) { + return v2e(this.a, u(e, 42)); + }, o.Fb = function(e) { + return this === e; + }, o.a = 0, w(Qn, "NodePromotion/lambda$2$Type", 1632), b(1633, 1, vt, Kgn), o.Kf = function(e, t) { + cLe(u(e, 36), t); + }, w(Qn, "NorthSouthPortPostprocessor", 1633), b(1634, 1, vt, _gn), o.Kf = function(e, t) { + RDe(u(e, 36), t); + }, w(Qn, "NorthSouthPortPreprocessor", 1634), b(1635, 1, Ne, Hgn), o.Ne = function(e, t) { + return Rve(u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "NorthSouthPortPreprocessor/lambda$0$Type", 1635), b(1636, 1, vt, qgn), o.Kf = function(e, t) { + ePe(u(e, 36), t); + }, w(Qn, "PartitionMidprocessor", 1636), b(1637, 1, De, Ugn), o.Mb = function(e) { + return kt(u(e, 10), (cn(), Cv)); + }, w(Qn, "PartitionMidprocessor/lambda$0$Type", 1637), b(1638, 1, re, l7n), o.Cd = function(e) { + kge(this.a, u(e, 10)); + }, w(Qn, "PartitionMidprocessor/lambda$1$Type", 1638), b(1639, 1, vt, Ggn), o.Kf = function(e, t) { + tTe(u(e, 36), t); + }, w(Qn, "PartitionPostprocessor", 1639), b(1640, 1, vt, zgn), o.Kf = function(e, t) { + gCe(u(e, 36), t); + }, w(Qn, "PartitionPreprocessor", 1640), b(1641, 1, De, Xgn), o.Mb = function(e) { + return kt(u(e, 10), (cn(), Cv)); + }, w(Qn, "PartitionPreprocessor/lambda$0$Type", 1641), b(1642, 1, {}, Vgn), o.Kb = function(e) { + return new Tn(null, new p0(new ie(ce(Qt(u(e, 10)).a.Kc(), new En())))); + }, w(Qn, "PartitionPreprocessor/lambda$1$Type", 1642), b(1643, 1, De, Wgn), o.Mb = function(e) { + return u9e(u(e, 18)); + }, w(Qn, "PartitionPreprocessor/lambda$2$Type", 1643), b(1644, 1, re, Jgn), o.Cd = function(e) { + t6e(u(e, 18)); + }, w(Qn, "PartitionPreprocessor/lambda$3$Type", 1644), b(1645, 1, vt, W5n), o.Kf = function(e, t) { + $Se(u(e, 36), t); + }; + var Esn, WZn, JZn, QZn, Csn, Msn; + w(Qn, "PortListSorter", 1645), b(1648, 1, Ne, Qgn), o.Ne = function(e, t) { + return VDn(u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "PortListSorter/lambda$0$Type", 1648), b(1650, 1, Ne, Ygn), o.Ne = function(e, t) { + return AUn(u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "PortListSorter/lambda$1$Type", 1650), b(1646, 1, {}, Zgn), o.Kb = function(e) { + return cm(), u(e, 12).e; + }, w(Qn, "PortListSorter/lambda$2$Type", 1646), b(1647, 1, {}, n2n), o.Kb = function(e) { + return cm(), u(e, 12).g; + }, w(Qn, "PortListSorter/lambda$3$Type", 1647), b(1649, 1, Ne, e2n), o.Ne = function(e, t) { + return I7e(u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "PortListSorter/lambda$4$Type", 1649), b(1651, 1, vt, t2n), o.Kf = function(e, t) { + GCe(u(e, 36), t); + }, w(Qn, "PortSideProcessor", 1651), b(1652, 1, vt, i2n), o.Kf = function(e, t) { + zAe(u(e, 36), t); + }, w(Qn, "ReversedEdgeRestorer", 1652), b(1657, 1, vt, Jyn), o.Kf = function(e, t) { + a7e(this, u(e, 36), t); + }, w(Qn, "SelfLoopPortRestorer", 1657), b(1658, 1, {}, r2n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "SelfLoopPortRestorer/lambda$0$Type", 1658), b(1659, 1, De, c2n), o.Mb = function(e) { + return u(e, 10).k == (Vn(), Vt); + }, w(Qn, "SelfLoopPortRestorer/lambda$1$Type", 1659), b(1660, 1, De, u2n), o.Mb = function(e) { + return kt(u(e, 10), (W(), hb)); + }, w(Qn, "SelfLoopPortRestorer/lambda$2$Type", 1660), b(1661, 1, {}, o2n), o.Kb = function(e) { + return u(v(u(e, 10), (W(), hb)), 337); + }, w(Qn, "SelfLoopPortRestorer/lambda$3$Type", 1661), b(1662, 1, re, o7n), o.Cd = function(e) { + Aje(this.a, u(e, 337)); + }, w(Qn, "SelfLoopPortRestorer/lambda$4$Type", 1662), b(805, 1, re, zU), o.Cd = function(e) { + Kje(u(e, 105)); + }, w(Qn, "SelfLoopPortRestorer/lambda$5$Type", 805), b(1663, 1, vt, s2n), o.Kf = function(e, t) { + m9e(u(e, 36), t); + }, w(Qn, "SelfLoopPostProcessor", 1663), b(1664, 1, {}, f2n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "SelfLoopPostProcessor/lambda$0$Type", 1664), b(1665, 1, De, h2n), o.Mb = function(e) { + return u(e, 10).k == (Vn(), Vt); + }, w(Qn, "SelfLoopPostProcessor/lambda$1$Type", 1665), b(1666, 1, De, l2n), o.Mb = function(e) { + return kt(u(e, 10), (W(), hb)); + }, w(Qn, "SelfLoopPostProcessor/lambda$2$Type", 1666), b(1667, 1, re, a2n), o.Cd = function(e) { + Pke(u(e, 10)); + }, w(Qn, "SelfLoopPostProcessor/lambda$3$Type", 1667), b(1668, 1, {}, d2n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 105).f, 1)); + }, w(Qn, "SelfLoopPostProcessor/lambda$4$Type", 1668), b(1669, 1, re, u7n), o.Cd = function(e) { + e3e(this.a, u(e, 340)); + }, w(Qn, "SelfLoopPostProcessor/lambda$5$Type", 1669), b(1670, 1, De, b2n), o.Mb = function(e) { + return !!u(e, 105).i; + }, w(Qn, "SelfLoopPostProcessor/lambda$6$Type", 1670), b(1671, 1, re, s7n), o.Cd = function(e) { + ehe(this.a, u(e, 105)); + }, w(Qn, "SelfLoopPostProcessor/lambda$7$Type", 1671), b(1653, 1, vt, w2n), o.Kf = function(e, t) { + kMe(u(e, 36), t); + }, w(Qn, "SelfLoopPreProcessor", 1653), b(1654, 1, {}, g2n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 105).f, 1)); + }, w(Qn, "SelfLoopPreProcessor/lambda$0$Type", 1654), b(1655, 1, {}, p2n), o.Kb = function(e) { + return u(e, 340).a; + }, w(Qn, "SelfLoopPreProcessor/lambda$1$Type", 1655), b(1656, 1, re, m2n), o.Cd = function(e) { + r1e(u(e, 18)); + }, w(Qn, "SelfLoopPreProcessor/lambda$2$Type", 1656), b(1672, 1, vt, GAn), o.Kf = function(e, t) { + sje(this, u(e, 36), t); + }, w(Qn, "SelfLoopRouter", 1672), b(1673, 1, {}, v2n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 30).a, 16)); + }, w(Qn, "SelfLoopRouter/lambda$0$Type", 1673), b(1674, 1, De, k2n), o.Mb = function(e) { + return u(e, 10).k == (Vn(), Vt); + }, w(Qn, "SelfLoopRouter/lambda$1$Type", 1674), b(1675, 1, De, y2n), o.Mb = function(e) { + return kt(u(e, 10), (W(), hb)); + }, w(Qn, "SelfLoopRouter/lambda$2$Type", 1675), b(1676, 1, {}, j2n), o.Kb = function(e) { + return u(v(u(e, 10), (W(), hb)), 337); + }, w(Qn, "SelfLoopRouter/lambda$3$Type", 1676), b(1677, 1, re, PCn), o.Cd = function(e) { + bge(this.a, this.b, u(e, 337)); + }, w(Qn, "SelfLoopRouter/lambda$4$Type", 1677), b(1678, 1, vt, E2n), o.Kf = function(e, t) { + BTe(u(e, 36), t); + }, w(Qn, "SemiInteractiveCrossMinProcessor", 1678), b(1679, 1, De, C2n), o.Mb = function(e) { + return u(e, 10).k == (Vn(), Vt); + }, w(Qn, "SemiInteractiveCrossMinProcessor/lambda$0$Type", 1679), b(1680, 1, De, M2n), o.Mb = function(e) { + return sPn(u(e, 10))._b((cn(), Hw)); + }, w(Qn, "SemiInteractiveCrossMinProcessor/lambda$1$Type", 1680), b(1681, 1, Ne, T2n), o.Ne = function(e, t) { + return eve(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Qn, "SemiInteractiveCrossMinProcessor/lambda$2$Type", 1681), b(1682, 1, {}, A2n), o.Ve = function(e, t) { + return yge(u(e, 10), u(t, 10)); + }, w(Qn, "SemiInteractiveCrossMinProcessor/lambda$3$Type", 1682), b(1684, 1, vt, S2n), o.Kf = function(e, t) { + sIe(u(e, 36), t); + }, w(Qn, "SortByInputModelProcessor", 1684), b(1685, 1, De, P2n), o.Mb = function(e) { + return u(e, 12).g.c.length != 0; + }, w(Qn, "SortByInputModelProcessor/lambda$0$Type", 1685), b(1686, 1, re, a7n), o.Cd = function(e) { + Gje(this.a, u(e, 12)); + }, w(Qn, "SortByInputModelProcessor/lambda$1$Type", 1686), b(1759, 817, {}, mxn), o.df = function(e) { + var t, i, r, c; + switch (this.c = e, this.a.g) { + case 2: + t = new Z(), Gt(ut(new Tn(null, new In(this.c.a.b, 16)), new q2n()), new BCn(this, t)), Zk(this, new O2n()), eu(t, new D2n()), t.c.length = 0, Gt(ut(new Tn(null, new In(this.c.a.b, 16)), new L2n()), new b7n(t)), Zk(this, new N2n()), eu(t, new $2n()), t.c.length = 0, i = vTn(O$(Ub(new Tn(null, new In(this.c.a.b, 16)), new w7n(this))), new x2n()), Gt(new Tn(null, new In(this.c.a.a, 16)), new DCn(i, t)), Zk(this, new B2n()), eu(t, new R2n()), t.c.length = 0; + break; + case 3: + r = new Z(), Zk(this, new I2n()), c = vTn(O$(Ub(new Tn(null, new In(this.c.a.b, 16)), new d7n(this))), new F2n()), Gt(ut(new Tn(null, new In(this.c.a.b, 16)), new K2n()), new NCn(c, r)), Zk(this, new _2n()), eu(r, new H2n()), r.c.length = 0; + break; + default: + throw M(new Fyn()); + } + }, o.b = 0, w(di, "EdgeAwareScanlineConstraintCalculation", 1759), b(1760, 1, ph, I2n), o.Lb = function(e) { + return D(u(e, 60).g, 154); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return D(u(e, 60).g, 154); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$0$Type", 1760), b(1761, 1, {}, d7n), o.Ye = function(e) { + return SEe(this.a, u(e, 60)); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$1$Type", 1761), b(1769, 1, JA, ICn), o.de = function() { + P5(this.a, this.b, -1); + }, o.b = 0, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$10$Type", 1769), b(1771, 1, ph, O2n), o.Lb = function(e) { + return D(u(e, 60).g, 154); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return D(u(e, 60).g, 154); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$11$Type", 1771), b(1772, 1, re, D2n), o.Cd = function(e) { + u(e, 380).de(); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$12$Type", 1772), b(1773, 1, De, L2n), o.Mb = function(e) { + return D(u(e, 60).g, 10); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$13$Type", 1773), b(1775, 1, re, b7n), o.Cd = function(e) { + V5e(this.a, u(e, 60)); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$14$Type", 1775), b(1774, 1, JA, $Cn), o.de = function() { + P5(this.b, this.a, -1); + }, o.a = 0, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$15$Type", 1774), b(1776, 1, ph, N2n), o.Lb = function(e) { + return D(u(e, 60).g, 10); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return D(u(e, 60).g, 10); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$16$Type", 1776), b(1777, 1, re, $2n), o.Cd = function(e) { + u(e, 380).de(); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$17$Type", 1777), b(1778, 1, {}, w7n), o.Ye = function(e) { + return PEe(this.a, u(e, 60)); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$18$Type", 1778), b(1779, 1, {}, x2n), o.We = function() { + return 0; + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$19$Type", 1779), b(1762, 1, {}, F2n), o.We = function() { + return 0; + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$2$Type", 1762), b(1781, 1, re, DCn), o.Cd = function(e) { + Zbe(this.a, this.b, u(e, 316)); + }, o.a = 0, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$20$Type", 1781), b(1780, 1, JA, LCn), o.de = function() { + LHn(this.a, this.b, -1); + }, o.b = 0, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$21$Type", 1780), b(1782, 1, ph, B2n), o.Lb = function(e) { + return u(e, 60), !0; + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return u(e, 60), !0; + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$22$Type", 1782), b(1783, 1, re, R2n), o.Cd = function(e) { + u(e, 380).de(); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$23$Type", 1783), b(1763, 1, De, K2n), o.Mb = function(e) { + return D(u(e, 60).g, 10); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$3$Type", 1763), b(1765, 1, re, NCn), o.Cd = function(e) { + nwe(this.a, this.b, u(e, 60)); + }, o.a = 0, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$4$Type", 1765), b(1764, 1, JA, xCn), o.de = function() { + P5(this.b, this.a, -1); + }, o.a = 0, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$5$Type", 1764), b(1766, 1, ph, _2n), o.Lb = function(e) { + return u(e, 60), !0; + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return u(e, 60), !0; + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$6$Type", 1766), b(1767, 1, re, H2n), o.Cd = function(e) { + u(e, 380).de(); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$7$Type", 1767), b(1768, 1, De, q2n), o.Mb = function(e) { + return D(u(e, 60).g, 154); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$8$Type", 1768), b(1770, 1, re, BCn), o.Cd = function(e) { + mme(this.a, this.b, u(e, 60)); + }, w(di, "EdgeAwareScanlineConstraintCalculation/lambda$9$Type", 1770), b(1586, 1, vt, iAn), o.Kf = function(e, t) { + xIe(this, u(e, 36), t); + }; + var YZn; + w(di, "HorizontalGraphCompactor", 1586), b(1587, 1, {}, g7n), o.ff = function(e, t) { + var i, r, c; + return cQ(e, t) || (i = Pg(e), r = Pg(t), i && i.k == (Vn(), Zt) || r && r.k == (Vn(), Zt)) ? 0 : (c = u(v(this.a.a, (W(), E2)), 312), K1e(c, i ? i.k : (Vn(), Mi), r ? r.k : (Vn(), Mi))); + }, o.gf = function(e, t) { + var i, r, c; + return cQ(e, t) ? 1 : (i = Pg(e), r = Pg(t), c = u(v(this.a.a, (W(), E2)), 312), JX(c, i ? i.k : (Vn(), Mi), r ? r.k : (Vn(), Mi))); + }, w(di, "HorizontalGraphCompactor/1", 1587), b(1588, 1, {}, U2n), o.ef = function(e, t) { + return o6(), e.a.i == 0; + }, w(di, "HorizontalGraphCompactor/lambda$0$Type", 1588), b(1589, 1, {}, p7n), o.ef = function(e, t) { + return Cge(this.a, e, t); + }, w(di, "HorizontalGraphCompactor/lambda$1$Type", 1589), b(1730, 1, {}, XNn); + var ZZn, nne; + w(di, "LGraphToCGraphTransformer", 1730), b(1738, 1, De, G2n), o.Mb = function(e) { + return e != null; + }, w(di, "LGraphToCGraphTransformer/0methodref$nonNull$Type", 1738), b(1731, 1, {}, z2n), o.Kb = function(e) { + return Fs(), Jr(v(u(u(e, 60).g, 10), (W(), st))); + }, w(di, "LGraphToCGraphTransformer/lambda$0$Type", 1731), b(1732, 1, {}, X2n), o.Kb = function(e) { + return Fs(), rBn(u(u(e, 60).g, 154)); + }, w(di, "LGraphToCGraphTransformer/lambda$1$Type", 1732), b(1741, 1, De, V2n), o.Mb = function(e) { + return Fs(), D(u(e, 60).g, 10); + }, w(di, "LGraphToCGraphTransformer/lambda$10$Type", 1741), b(1742, 1, re, W2n), o.Cd = function(e) { + Pge(u(e, 60)); + }, w(di, "LGraphToCGraphTransformer/lambda$11$Type", 1742), b(1743, 1, De, J2n), o.Mb = function(e) { + return Fs(), D(u(e, 60).g, 154); + }, w(di, "LGraphToCGraphTransformer/lambda$12$Type", 1743), b(1747, 1, re, Q2n), o.Cd = function(e) { + u5e(u(e, 60)); + }, w(di, "LGraphToCGraphTransformer/lambda$13$Type", 1747), b(1744, 1, re, m7n), o.Cd = function(e) { + Lle(this.a, u(e, 8)); + }, o.a = 0, w(di, "LGraphToCGraphTransformer/lambda$14$Type", 1744), b(1745, 1, re, v7n), o.Cd = function(e) { + $le(this.a, u(e, 116)); + }, o.a = 0, w(di, "LGraphToCGraphTransformer/lambda$15$Type", 1745), b(1746, 1, re, k7n), o.Cd = function(e) { + Nle(this.a, u(e, 8)); + }, o.a = 0, w(di, "LGraphToCGraphTransformer/lambda$16$Type", 1746), b(1748, 1, {}, Y2n), o.Kb = function(e) { + return Fs(), new Tn(null, new p0(new ie(ce(Qt(u(e, 10)).a.Kc(), new En())))); + }, w(di, "LGraphToCGraphTransformer/lambda$17$Type", 1748), b(1749, 1, De, Z2n), o.Mb = function(e) { + return Fs(), fr(u(e, 18)); + }, w(di, "LGraphToCGraphTransformer/lambda$18$Type", 1749), b(1750, 1, re, y7n), o.Cd = function(e) { + J4e(this.a, u(e, 18)); + }, w(di, "LGraphToCGraphTransformer/lambda$19$Type", 1750), b(1734, 1, re, j7n), o.Cd = function(e) { + Epe(this.a, u(e, 154)); + }, w(di, "LGraphToCGraphTransformer/lambda$2$Type", 1734), b(1751, 1, {}, npn), o.Kb = function(e) { + return Fs(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(di, "LGraphToCGraphTransformer/lambda$20$Type", 1751), b(1752, 1, {}, epn), o.Kb = function(e) { + return Fs(), new Tn(null, new p0(new ie(ce(Qt(u(e, 10)).a.Kc(), new En())))); + }, w(di, "LGraphToCGraphTransformer/lambda$21$Type", 1752), b(1753, 1, {}, tpn), o.Kb = function(e) { + return Fs(), u(v(u(e, 18), (W(), Dd)), 15); + }, w(di, "LGraphToCGraphTransformer/lambda$22$Type", 1753), b(1754, 1, De, ipn), o.Mb = function(e) { + return _1e(u(e, 15)); + }, w(di, "LGraphToCGraphTransformer/lambda$23$Type", 1754), b(1755, 1, re, E7n), o.Cd = function(e) { + pEe(this.a, u(e, 15)); + }, w(di, "LGraphToCGraphTransformer/lambda$24$Type", 1755), b(1733, 1, re, RCn), o.Cd = function(e) { + k3e(this.a, this.b, u(e, 154)); + }, w(di, "LGraphToCGraphTransformer/lambda$3$Type", 1733), b(1735, 1, {}, rpn), o.Kb = function(e) { + return Fs(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(di, "LGraphToCGraphTransformer/lambda$4$Type", 1735), b(1736, 1, {}, cpn), o.Kb = function(e) { + return Fs(), new Tn(null, new p0(new ie(ce(Qt(u(e, 10)).a.Kc(), new En())))); + }, w(di, "LGraphToCGraphTransformer/lambda$5$Type", 1736), b(1737, 1, {}, upn), o.Kb = function(e) { + return Fs(), u(v(u(e, 18), (W(), Dd)), 15); + }, w(di, "LGraphToCGraphTransformer/lambda$6$Type", 1737), b(1739, 1, re, C7n), o.Cd = function(e) { + IEe(this.a, u(e, 15)); + }, w(di, "LGraphToCGraphTransformer/lambda$8$Type", 1739), b(1740, 1, re, KCn), o.Cd = function(e) { + c1e(this.a, this.b, u(e, 154)); + }, w(di, "LGraphToCGraphTransformer/lambda$9$Type", 1740), b(1729, 1, {}, opn), o.cf = function(e) { + var t, i, r, c, s; + for (this.a = e, this.d = new oD(), this.c = K(ron, Bn, 125, this.a.a.a.c.length, 0, 1), this.b = 0, i = new C(this.a.a.a); i.a < i.c.c.length; ) + t = u(E(i), 316), t.d = this.b, s = h0(i7(new za(), t), this.d), this.c[this.b] = s, ++this.b; + for (XOe(this), XDe(this), JMe(this), PF(BL(this.d), new op()), c = new C(this.a.a.b); c.a < c.c.c.length; ) + r = u(E(c), 60), r.d.c = this.c[r.a.d].e + r.b.a; + }, o.b = 0, w(di, "NetworkSimplexCompaction", 1729), b(154, 1, { 34: 1, 154: 1 }, q5), o.Fd = function(e) { + return ome(this, u(e, 154)); + }, o.Ib = function() { + return rBn(this); + }, w(di, "VerticalSegment", 154), b(841, 1, {}, QZ), o.c = 0, o.e = 0, o.i = 0, w(u8, "BetweenLayerEdgeTwoNodeCrossingsCounter", 841), b(677, 1, { 677: 1 }, Dxn), o.Ib = function() { + return "AdjacencyList [node=" + this.d + ", adjacencies= " + this.a + "]"; + }, o.b = 0, o.c = 0, o.f = 0, w(u8, "BetweenLayerEdgeTwoNodeCrossingsCounter/AdjacencyList", 677), b(294, 1, { 34: 1, 294: 1 }, lAn), o.Fd = function(e) { + return Ebe(this, u(e, 294)); + }, o.Ib = function() { + return "Adjacency [position=" + this.c + ", cardinality=" + this.a + ", currentCardinality=" + this.b + "]"; + }, o.a = 0, o.b = 0, o.c = 0, w(u8, "BetweenLayerEdgeTwoNodeCrossingsCounter/AdjacencyList/Adjacency", 294), b(2026, 1, {}, f_n), o.b = 0, o.e = !1, w(u8, "CrossingMatrixFiller", 2026); + var ene = xt(Vh, "IInitializable"); + b(1867, 1, _y, HCn), o.gg = function(e, t, i, r, c, s) { + }, o.ig = function(e, t, i) { + }, o.eg = function() { + return this.c != (O0(), Z8); + }, o.fg = function() { + this.e = K(ye, _e, 28, this.d, 15, 1); + }, o.hg = function(e, t) { + t[e][0].c.p = e; + }, o.jg = function(e, t, i, r) { + ++this.d; + }, o.kg = function() { + return !0; + }, o.lg = function(e, t, i, r) { + return JFn(this, e, t, i), D3e(this, t); + }, o.mg = function(e, t) { + var i; + return i = Phe(t, e.length), JFn(this, e, i, t), aFn(this, i); + }, o.d = 0, w(u8, "GreedySwitchHeuristic", 1867), b(2029, 1, {}, cPn), o.b = 0, o.d = 0, w(u8, "NorthSouthEdgeNeighbouringNodeCrossingsCounter", 2029), b(2016, 1, {}, _qn), o.a = !1, w(u8, "SwitchDecider", 2016), b(105, 1, { 105: 1 }, p_n), o.a = null, o.c = null, o.i = null, w(w3, "SelfHyperLoop", 105), b(2013, 1, {}, rRn), o.c = 0, o.e = 0, w(w3, "SelfHyperLoopLabels", 2013), b(421, 22, { 3: 1, 34: 1, 22: 1, 421: 1 }, bC); + var j3, lv, av, B_, tne = we(w3, "SelfHyperLoopLabels/Alignment", 421, ke, Jpe, Ede), ine; + b(340, 1, { 340: 1 }, FLn), w(w3, "SelfLoopEdge", 340), b(337, 1, { 337: 1 }, cRn), o.a = !1, w(w3, "SelfLoopHolder", 337), b(1790, 1, De, vpn), o.Mb = function(e) { + return fr(u(e, 18)); + }, w(w3, "SelfLoopHolder/lambda$0$Type", 1790), b(113, 1, { 113: 1 }, hRn), o.a = !1, o.c = !1, w(w3, "SelfLoopPort", 113), b(1855, 1, De, kpn), o.Mb = function(e) { + return fr(u(e, 18)); + }, w(w3, "SelfLoopPort/lambda$0$Type", 1855), b(375, 22, { 3: 1, 34: 1, 22: 1, 375: 1 }, s7); + var UP, gj, GP, zP, XP, rne = we(w3, "SelfLoopType", 375, ke, _3e, Cde), cne; + b(1798, 1, {}, n8n); + var une, one, sne, fne; + w(Io, "PortRestorer", 1798), b(372, 22, { 3: 1, 34: 1, 22: 1, 372: 1 }, KD); + var cb, va, ub, R_ = we(Io, "PortRestorer/PortSideArea", 372, ke, F2e, kde), hne; + b(1799, 1, {}, fpn), o.Kb = function(e) { + return ua(), u(e, 15).Oc(); + }, w(Io, "PortRestorer/lambda$0$Type", 1799), b(1800, 1, re, hpn), o.Cd = function(e) { + ua(), u(e, 113).c = !1; + }, w(Io, "PortRestorer/lambda$1$Type", 1800), b(1809, 1, De, lpn), o.Mb = function(e) { + return ua(), u(e, 12).j == (en(), Wn); + }, w(Io, "PortRestorer/lambda$10$Type", 1809), b(1810, 1, {}, apn), o.Kb = function(e) { + return ua(), u(e, 113).d; + }, w(Io, "PortRestorer/lambda$11$Type", 1810), b(1811, 1, re, M7n), o.Cd = function(e) { + Nhe(this.a, u(e, 12)); + }, w(Io, "PortRestorer/lambda$12$Type", 1811), b(1801, 1, re, T7n), o.Cd = function(e) { + J1e(this.a, u(e, 105)); + }, w(Io, "PortRestorer/lambda$2$Type", 1801), b(1802, 1, Ne, dpn), o.Ne = function(e, t) { + return Ime(u(e, 113), u(t, 113)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Io, "PortRestorer/lambda$3$Type", 1802), b(1803, 1, De, bpn), o.Mb = function(e) { + return ua(), u(e, 113).c; + }, w(Io, "PortRestorer/lambda$4$Type", 1803), b(1804, 1, De, wpn), o.Mb = function(e) { + return yve(u(e, 12)); + }, w(Io, "PortRestorer/lambda$5$Type", 1804), b(1805, 1, De, spn), o.Mb = function(e) { + return ua(), u(e, 12).j == (en(), Xn); + }, w(Io, "PortRestorer/lambda$6$Type", 1805), b(1806, 1, De, gpn), o.Mb = function(e) { + return ua(), u(e, 12).j == (en(), Zn); + }, w(Io, "PortRestorer/lambda$7$Type", 1806), b(1807, 1, De, ppn), o.Mb = function(e) { + return n3e(u(e, 12)); + }, w(Io, "PortRestorer/lambda$8$Type", 1807), b(1808, 1, De, mpn), o.Mb = function(e) { + return ua(), u(e, 12).j == (en(), ae); + }, w(Io, "PortRestorer/lambda$9$Type", 1808), b(276, 22, { 3: 1, 34: 1, 22: 1, 276: 1 }, Op); + var K_, __, H_, q_, U_, G_, z_, X_, Tsn = we(Io, "PortSideAssigner/Target", 276, ke, gme, Mde), lne; + b(1791, 1, {}, jpn), o.Kb = function(e) { + return ut(new Tn(null, new In(u(e, 105).j, 16)), new XU()); + }, w(Io, "PortSideAssigner/lambda$1$Type", 1791), b(1792, 1, {}, Epn), o.Kb = function(e) { + return u(e, 113).d; + }, w(Io, "PortSideAssigner/lambda$2$Type", 1792), b(1793, 1, re, Cpn), o.Cd = function(e) { + gi(u(e, 12), (en(), Xn)); + }, w(Io, "PortSideAssigner/lambda$3$Type", 1793), b(1794, 1, {}, Mpn), o.Kb = function(e) { + return u(e, 113).d; + }, w(Io, "PortSideAssigner/lambda$4$Type", 1794), b(1795, 1, re, A7n), o.Cd = function(e) { + _fe(this.a, u(e, 12)); + }, w(Io, "PortSideAssigner/lambda$5$Type", 1795), b(1796, 1, Ne, ypn), o.Ne = function(e, t) { + return Gwe(u(e, 105), u(t, 105)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Io, "PortSideAssigner/lambda$6$Type", 1796), b(1797, 1, Ne, Tpn), o.Ne = function(e, t) { + return bbe(u(e, 113), u(t, 113)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Io, "PortSideAssigner/lambda$7$Type", 1797), b(820, 1, De, XU), o.Mb = function(e) { + return u(e, 113).c; + }, w(Io, "PortSideAssigner/lambda$8$Type", 820), b(2108, 1, {}), w(aa, "AbstractSelfLoopRouter", 2108), b(1816, 1, Ne, Apn), o.Ne = function(e, t) { + return zae(u(e, 105), u(t, 105)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(aa, wXn, 1816), b(1817, 1, Ne, Spn), o.Ne = function(e, t) { + return Gae(u(e, 105), u(t, 105)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(aa, gXn, 1817), b(1856, 2108, {}, Ppn), o.ng = function(e, t, i) { + return i; + }, w(aa, "OrthogonalSelfLoopRouter", 1856), b(1858, 1, re, _Cn), o.Cd = function(e) { + oZ(this.b, this.a, u(e, 8)); + }, w(aa, "OrthogonalSelfLoopRouter/lambda$0$Type", 1858), b(1857, 1856, {}, Ipn), o.ng = function(e, t, i) { + var r, c; + return r = e.c.d, g4(i, 0, it(Ki(r.n), r.a)), c = e.d.d, Fe(i, it(Ki(c.n), c.a)), WSe(i); + }, w(aa, "PolylineSelfLoopRouter", 1857), b(1812, 1, {}, e8n), o.a = null; + var w2; + w(aa, "RoutingDirector", 1812), b(1813, 1, Ne, Opn), o.Ne = function(e, t) { + return lbe(u(e, 113), u(t, 113)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(aa, "RoutingDirector/lambda$0$Type", 1813), b(1814, 1, {}, Dpn), o.Kb = function(e) { + return ZE(), u(e, 105).j; + }, w(aa, "RoutingDirector/lambda$1$Type", 1814), b(1815, 1, re, Lpn), o.Cd = function(e) { + ZE(), u(e, 15).jd(w2); + }, w(aa, "RoutingDirector/lambda$2$Type", 1815), b(1818, 1, {}, Npn), w(aa, "RoutingSlotAssigner", 1818), b(1819, 1, De, S7n), o.Mb = function(e) { + return gle(this.a, u(e, 105)); + }, w(aa, "RoutingSlotAssigner/lambda$0$Type", 1819), b(1820, 1, Ne, P7n), o.Ne = function(e, t) { + return Kbe(this.a, u(e, 105), u(t, 105)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(aa, "RoutingSlotAssigner/lambda$1$Type", 1820), b(1859, 1856, {}, $pn), o.ng = function(e, t, i) { + var r, c, s, f; + return r = $(R(nA(e.b.g.b, (cn(), T2)))), f = new dAn(A(T(Ei, 1), J, 8, 0, [(s = e.c.d, it(new rr(s.n), s.a))])), CMe(e, t, i, f, r), Fe(f, (c = e.d.d, it(new rr(c.n), c.a))), IRn(new qen(f)); + }, w(aa, "SplineSelfLoopRouter", 1859), b(586, 1, Ne, gxn, NSn), o.Ne = function(e, t) { + return bzn(this, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(cin, "ModelOrderNodeComparator", 586), b(1821, 1, De, xpn), o.Mb = function(e) { + return u(e, 12).e.c.length != 0; + }, w(cin, "ModelOrderNodeComparator/lambda$0$Type", 1821), b(821, 1, Ne, GFn, ADn), o.Ne = function(e, t) { + return PPn(this, e, t); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, o.b = !1, w(cin, "ModelOrderPortComparator", 821), b(815, 1, {}, VU), o.og = function(e, t) { + var i, r, c, s; + for (c = c_n(t), i = new Z(), s = t.f / c, r = 1; r < c; ++r) + nn(i, Y(Ae(kc(y.Math.round(r * s))))); + return i; + }, o.pg = function() { + return !1; + }, w(yh, "ARDCutIndexHeuristic", 815), b(1544, 1, vt, Fpn), o.Kf = function(e, t) { + dSe(u(e, 36), t); + }, w(yh, "BreakingPointInserter", 1544), b(313, 1, { 313: 1 }, CJ), o.Ib = function() { + var e; + return e = new x1(), e.a += "BPInfo[", e.a += ` + start=`, Lc(e, this.i), e.a += ` + end=`, Lc(e, this.a), e.a += ` + nodeStartEdge=`, Lc(e, this.e), e.a += ` + startEndEdge=`, Lc(e, this.j), e.a += ` + originalEdge=`, Lc(e, this.f), e.a += ` + startInLayerDummy=`, Lc(e, this.k), e.a += ` + startInLayerEdge=`, Lc(e, this.n), e.a += ` + endInLayerDummy=`, Lc(e, this.b), e.a += ` + endInLayerEdge=`, Lc(e, this.c), e.a; + }, w(yh, "BreakingPointInserter/BPInfo", 313), b(661, 1, { 661: 1 }, R7n), o.a = !1, o.b = 0, o.c = 0, w(yh, "BreakingPointInserter/Cut", 661), b(1545, 1, vt, Bpn), o.Kf = function(e, t) { + PMe(u(e, 36), t); + }, w(yh, "BreakingPointProcessor", 1545), b(1546, 1, De, Rpn), o.Mb = function(e) { + return c$n(u(e, 10)); + }, w(yh, "BreakingPointProcessor/0methodref$isEnd$Type", 1546), b(1547, 1, De, Kpn), o.Mb = function(e) { + return u$n(u(e, 10)); + }, w(yh, "BreakingPointProcessor/1methodref$isStart$Type", 1547), b(1548, 1, vt, _pn), o.Kf = function(e, t) { + QMe(this, u(e, 36), t); + }, w(yh, "BreakingPointRemover", 1548), b(1549, 1, re, Hpn), o.Cd = function(e) { + u(e, 131).k = !0; + }, w(yh, "BreakingPointRemover/lambda$0$Type", 1549), b(811, 1, {}, Xnn), o.b = 0, o.e = 0, o.f = 0, o.j = 0, w(yh, "GraphStats", 811), b(812, 1, {}, WU), o.Ve = function(e, t) { + return y.Math.max($(R(e)), $(R(t))); + }, w(yh, "GraphStats/0methodref$max$Type", 812), b(813, 1, {}, JU), o.Ve = function(e, t) { + return y.Math.max($(R(e)), $(R(t))); + }, w(yh, "GraphStats/2methodref$max$Type", 813), b(1726, 1, {}, qpn), o.Ve = function(e, t) { + return Y0e(R(e), R(t)); + }, w(yh, "GraphStats/lambda$1$Type", 1726), b(1727, 1, {}, I7n), o.Kb = function(e) { + return lRn(this.a, u(e, 30)); + }, w(yh, "GraphStats/lambda$2$Type", 1727), b(1728, 1, {}, O7n), o.Kb = function(e) { + return tqn(this.a, u(e, 30)); + }, w(yh, "GraphStats/lambda$6$Type", 1728), b(814, 1, {}, QU), o.og = function(e, t) { + var i; + return i = u(v(e, (cn(), jhn)), 15), i || (Dn(), Dn(), sr); + }, o.pg = function() { + return !1; + }, w(yh, "ICutIndexCalculator/ManualCutIndexCalculator", 814), b(816, 1, {}, YU), o.og = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _; + for (_ = (t.n == null && RRn(t), t.n), l = (t.d == null && RRn(t), t.d), N = K(Ii, Ar, 28, _.length, 15, 1), N[0] = _[0], I = _[0], a = 1; a < _.length; a++) + N[a] = N[a - 1] + _[a], I += _[a]; + for (c = c_n(t) - 1, f = u(v(e, (cn(), Ehn)), 17).a, r = li, i = new Z(), p = y.Math.max(0, c - f); p <= y.Math.min(t.f - 1, c + f); p++) { + if (j = I / (p + 1), S = 0, d = 1, s = new Z(), O = li, g = 0, h = 0, k = l[0], p == 0) + O = I, h = (t.g == null && (t.g = Cxn(t, new JU())), $(t.g)); + else { + for (; d < t.f; ) + N[d - 1] - S >= j && (nn(s, Y(d)), O = y.Math.max(O, N[d - 1] - g), h += k, S += N[d - 1] - S, g = N[d - 1], k = l[d]), k = y.Math.max(k, l[d]), ++d; + h += k; + } + m = y.Math.min(1 / O, 1 / t.b / h), m > r && (r = m, i = s); + } + return i; + }, o.pg = function() { + return !1; + }, w(yh, "MSDCutIndexHeuristic", 816), b(1683, 1, vt, Upn), o.Kf = function(e, t) { + RPe(u(e, 36), t); + }, w(yh, "SingleEdgeGraphWrapper", 1683), b(232, 22, { 3: 1, 34: 1, 22: 1, 232: 1 }, w6); + var g2, dv, bv, Nw, N8, p2, wv = we(Ac, "CenterEdgeLabelPlacementStrategy", 232, ke, C4e, Tde), ane; + b(431, 22, { 3: 1, 34: 1, 22: 1, 431: 1 }, Qz); + var Asn, V_, Ssn = we(Ac, "ConstraintCalculationStrategy", 431, ke, Uge, Ade), dne; + b(322, 22, { 3: 1, 34: 1, 22: 1, 322: 1, 188: 1, 196: 1 }, _D), o.dg = function() { + return __n(this); + }, o.qg = function() { + return __n(this); + }; + var pj, $8, Psn, Isn = we(Ac, "CrossingMinimizationStrategy", 322, ke, B2e, Sde), bne; + b(351, 22, { 3: 1, 34: 1, 22: 1, 351: 1 }, HD); + var Osn, W_, VP, Dsn = we(Ac, "CuttingStrategy", 351, ke, R2e, Pde), wne; + b(348, 22, { 3: 1, 34: 1, 22: 1, 348: 1, 188: 1, 196: 1 }, f7), o.dg = function() { + return OHn(this); + }, o.qg = function() { + return OHn(this); + }; + var Lsn, J_, gv, Q_, pv, Nsn = we(Ac, "CycleBreakingStrategy", 348, ke, H3e, Ide), gne; + b(428, 22, { 3: 1, 34: 1, 22: 1, 428: 1 }, Yz); + var WP, $sn, xsn = we(Ac, "DirectionCongruency", 428, ke, qge, Ode), pne; + b(460, 22, { 3: 1, 34: 1, 22: 1, 460: 1 }, qD); + var mv, Y_, m2, mne = we(Ac, "EdgeConstraint", 460, ke, K2e, Bde), vne; + b(283, 22, { 3: 1, 34: 1, 22: 1, 283: 1 }, g6); + var Z_, nH, eH, tH, JP, iH, Fsn = we(Ac, "EdgeLabelSideSelection", 283, ke, y4e, Rde), kne; + b(488, 22, { 3: 1, 34: 1, 22: 1, 488: 1 }, Zz); + var QP, Bsn, Rsn = we(Ac, "EdgeStraighteningStrategy", 488, ke, Qge, Kde), yne; + b(281, 22, { 3: 1, 34: 1, 22: 1, 281: 1 }, p6); + var rH, Ksn, _sn, YP, Hsn, qsn, Usn = we(Ac, "FixedAlignment", 281, ke, j4e, Fde), jne; + b(282, 22, { 3: 1, 34: 1, 22: 1, 282: 1 }, m6); + var Gsn, zsn, Xsn, Vsn, x8, Wsn, Jsn = we(Ac, "GraphCompactionStrategy", 282, ke, E4e, Dde), Ene; + b(259, 22, { 3: 1, 34: 1, 22: 1, 259: 1 }, Db); + var vv, ZP, kv, cs, F8, nI, yv, v2, eI, B8, cH = we(Ac, "GraphProperties", 259, ke, ove, Lde), Cne; + b(299, 22, { 3: 1, 34: 1, 22: 1, 299: 1 }, UD); + var mj, uH, oH, sH = we(Ac, "GreedySwitchType", 299, ke, _2e, Nde), Mne; + b(311, 22, { 3: 1, 34: 1, 22: 1, 311: 1 }, GD); + var E3, vj, k2, Tne = we(Ac, "InLayerConstraint", 311, ke, H2e, $de), Ane; + b(429, 22, { 3: 1, 34: 1, 22: 1, 429: 1 }, nX); + var fH, Qsn, Ysn = we(Ac, "InteractiveReferencePoint", 429, ke, Hge, xde), Sne, Zsn, C3, ob, tI, nfn, efn, iI, tfn, kj, rI, R8, M3, Nl, hH, cI, gc, ifn, ka, qc, lH, aH, yj, Od, sb, T3, rfn, A3, jj, $w, yf, Es, dH, y2, dt, st, cfn, ufn, ofn, sfn, ffn, bH, uI, Xu, fb, wH, S3, K8, zf, j2, hb, E2, C2, jv, Dd, hfn, gH, pH, P3; + b(171, 22, { 3: 1, 34: 1, 22: 1, 171: 1 }, h7); + var _8, ya, H8, xw, Ej, lfn = we(Ac, "LayerConstraint", 171, ke, U3e, _de), Pne; + b(859, 1, ms, t8n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), oin), ""), "Direction Congruency"), "Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."), yfn), (l1(), Pt)), xsn), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), sin), ""), "Feedback Edges"), "Whether feedback edges should be highlighted by routing around the nodes."), (_n(), !1)), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), lS), ""), "Interactive Reference Point"), "Determines which point of a node is considered by interactive layout phases."), Afn), Pt), Ysn), jn(xn)))), ri(e, lS, fR, Eee), ri(e, lS, o8, jee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), fin), ""), "Merge Edges"), "Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), hin), ""), "Merge Hierarchy-Crossing Edges"), "If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."), !0), yi), Xt), jn(xn)))), vn(e, new ln(Lhe(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), lin), ""), "Allow Non-Flow Ports To Switch Sides"), "Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."), !1), yi), Xt), jn(Kd)), A(T(fn, 1), J, 2, 6, ["org.eclipse.elk.layered.northOrSouthPort"])))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ain), ""), "Port Sorting Strategy"), "Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."), $fn), Pt), Uhn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), din), ""), "Thoroughness"), "How much effort should be spent to produce a nice layout."), Y(7)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), bin), ""), "Add Unnecessary Bendpoints"), "Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), win), ""), "Generate Position and Layer IDs"), "If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), fR), "cycleBreaking"), "Cycle Breaking Strategy"), "Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."), kfn), Pt), Nsn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Hy), LR), "Node Layering Strategy"), "Strategy for node layering."), Ifn), Pt), Dhn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), gin), LR), "Layer Constraint"), "Determines a constraint on the placement of the node regarding the layering."), Sfn), Pt), lfn), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), pin), LR), "Layer Choice Constraint"), "Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."), null), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), min), LR), "Layer ID"), "Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."), Y(-1)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), hR), ZXn), "Upper Bound On Width [MinWidth Layerer]"), "Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."), Y(4)), Zr), Gi), jn(xn)))), ri(e, hR, Hy, Iee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), lR), ZXn), "Upper Layer Estimation Scaling Factor [MinWidth Layerer]"), "Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."), Y(2)), Zr), Gi), jn(xn)))), ri(e, lR, Hy, Dee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), aR), nVn), "Node Promotion Strategy"), "Reduces number of dummy nodes after layering phase (if possible)."), Pfn), Pt), _hn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), dR), nVn), "Max Node Promotion Iterations"), "Limits the number of iterations for node promotion."), Y(0)), Zr), Gi), jn(xn)))), ri(e, dR, aR, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), bR), "layering.coffmanGraham"), "Layer Bound"), "The maximum number of nodes allowed per layer."), Y(tt)), Zr), Gi), jn(xn)))), ri(e, bR, Hy, Mee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), o8), Wm), "Crossing Minimization Strategy"), "Strategy for crossing minimization."), vfn), Pt), Isn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), vin), Wm), "Force Node Model Order"), "The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), wR), Wm), "Hierarchical Sweepiness"), "How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."), 0.1), Qi), si), jn(xn)))), ri(e, wR, CS, Wne), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), gR), Wm), "Semi-Interactive Crossing Minimization"), "Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."), !1), yi), Xt), jn(xn)))), ri(e, gR, o8, eee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), kin), Wm), "In Layer Predecessor of"), "Allows to set a constraint which specifies of which node the current node is the predecessor. If set to 's' then the node is the predecessor of 's' and is in the same layer"), null), $2), fn), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), yin), Wm), "In Layer Successor of"), "Allows to set a constraint which specifies of which node the current node is the successor. If set to 's' then the node is the successor of 's' and is in the same layer"), null), $2), fn), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), jin), Wm), "Position Choice Constraint"), "Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."), null), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ein), Wm), "Position ID"), "Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."), Y(-1)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Cin), eVn), "Greedy Switch Activation Threshold"), "By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."), Y(40)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), pR), eVn), "Greedy Switch Crossing Minimization"), "Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."), mfn), Pt), sH), jn(xn)))), ri(e, pR, o8, Xne), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), aS), "crossingMinimization.greedySwitchHierarchical"), "Greedy Switch Crossing Minimization (hierarchical)"), "Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."), pfn), Pt), sH), jn(xn)))), ri(e, aS, o8, Une), ri(e, aS, CS, Gne), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), c2), tVn), "Node Placement Strategy"), "Strategy for node placement."), Nfn), Pt), xhn), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), dS), tVn), "Favor Straight Edges Over Balancing"), "Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."), yi), Xt), jn(xn)))), ri(e, dS, c2, qee), ri(e, dS, c2, Uee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), mR), iVn), "BK Edge Straightening"), "Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."), Ofn), Pt), Rsn), jn(xn)))), ri(e, mR, c2, Ree), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), vR), iVn), "BK Fixed Alignment"), "Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."), Dfn), Pt), Usn), jn(xn)))), ri(e, vR, c2, _ee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), kR), "nodePlacement.linearSegments"), "Linear Segments Deflection Dampening"), "Dampens the movement of nodes to keep the diagram from getting too large."), 0.3), Qi), si), jn(xn)))), ri(e, kR, c2, zee), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), yR), "nodePlacement.networkSimplex"), "Node Flexibility"), "Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."), Pt), RH), jn(pi)))), ri(e, yR, c2, Jee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), jR), "nodePlacement.networkSimplex.nodeFlexibility"), "Node Flexibility Default"), "Default value of the 'nodeFlexibility' option for the children of a hierarchical node."), Lfn), Pt), RH), jn(xn)))), ri(e, jR, c2, Wee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Min), rVn), "Self-Loop Distribution"), "Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."), Cfn), Pt), Xhn), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Tin), rVn), "Self-Loop Ordering"), "Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."), Mfn), Pt), Vhn), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), bS), "edgeRouting.splines"), "Spline Routing Mode"), "Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."), Tfn), Pt), Jhn), jn(xn)))), ri(e, bS, qy, aee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), wS), "edgeRouting.splines.sloppy"), "Sloppy Spline Layer Spacing Factor"), "Spacing factor for routing area between layers when using sloppy spline routing."), 0.2), Qi), si), jn(xn)))), ri(e, wS, qy, bee), ri(e, wS, bS, wee), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ER), "edgeRouting.polyline"), "Sloped Edge Zone Width"), "Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."), 2), Qi), si), jn(xn)))), ri(e, ER, qy, see), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), Ain), qf), "Spacing Base Value"), "An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Sin), qf), "Edge Node Between Layers Spacing"), "The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Pin), qf), "Edge Edge Between Layer Spacing"), "Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Iin), qf), "Node Node Between Layers Spacing"), "The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."), 20), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Oin), _in), "Direction Priority"), "Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."), Y(0)), Zr), Gi), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Din), _in), "Shortness Priority"), "Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."), Y(0)), Zr), Gi), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Lin), _in), "Straightness Priority"), "Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."), Y(0)), Zr), Gi), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), CR), Hin), kXn), "Tries to further compact components (disconnected sub-graphs)."), !1), yi), Xt), jn(xn)))), ri(e, CR, t8, !0), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Nin), cVn), "Post Compaction Strategy"), uVn), dfn), Pt), Jsn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), $in), cVn), "Post Compaction Constraint Calculation"), uVn), afn), Pt), Ssn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), gS), qin), "High Degree Node Treatment"), "Makes room around high degree nodes to place leafs and trees."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), MR), qin), "High Degree Node Threshold"), "Whether a node is considered to have a high degree."), Y(16)), Zr), Gi), jn(xn)))), ri(e, MR, gS, !0), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), TR), qin), "High Degree Node Maximum Tree Height"), "Maximum height of a subtree connected to a high degree node to be moved to separate layers."), Y(5)), Zr), Gi), jn(xn)))), ri(e, TR, gS, !0), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ol), Uin), "Graph Wrapping Strategy"), "For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."), Bfn), Pt), nln), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), pS), Uin), "Additional Wrapped Edges Spacing"), "To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."), 10), Qi), si), jn(xn)))), ri(e, pS, Ol, fte), ri(e, pS, Ol, hte), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), mS), Uin), "Correction Factor for Wrapping"), "At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."), 1), Qi), si), jn(xn)))), ri(e, mS, Ol, ate), ri(e, mS, Ol, dte), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), s8), oVn), "Cutting Strategy"), "The strategy by which the layer indexes are determined at which the layering crumbles into chunks."), Ffn), Pt), Dsn), jn(xn)))), ri(e, s8, Ol, vte), ri(e, s8, Ol, kte), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), AR), oVn), "Manually Specified Cuts"), "Allows the user to specify her own cuts for a certain graph."), Vf), rs), jn(xn)))), ri(e, AR, s8, wte), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), SR), "wrapping.cutting.msd"), "MSD Freedom"), "The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."), xfn), Zr), Gi), jn(xn)))), ri(e, SR, s8, pte), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), vS), sVn), "Validification Strategy"), "When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."), Rfn), Pt), Zhn), jn(xn)))), ri(e, vS, Ol, Dte), ri(e, vS, Ol, Lte), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), kS), sVn), "Valid Indices for Wrapping"), null), Vf), rs), jn(xn)))), ri(e, kS, Ol, Pte), ri(e, kS, Ol, Ite), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), yS), Gin), "Improve Cuts"), "For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."), !0), yi), Xt), jn(xn)))), ri(e, yS, Ol, Cte), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), jS), Gin), "Distance Penalty When Improving Cuts"), null), 2), Qi), si), jn(xn)))), ri(e, jS, Ol, jte), ri(e, jS, yS, !0), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), PR), Gin), "Improve Wrapped Edges"), "The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."), !0), yi), Xt), jn(xn)))), ri(e, PR, Ol, Tte), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), xin), NR), "Edge Label Side Selection"), "Method to decide on edge label sides."), Efn), Pt), Fsn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Fin), NR), "Edge Center Label Placement Strategy"), "Determines in which layer center labels of long edges should be placed."), jfn), Pt), wv), yt(xn, A(T(Zh, 1), G, 170, 0, [E1]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ES), f8), "Consider Model Order"), "Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."), gfn), Pt), qhn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Bin), f8), "Consider Port Order"), "If disabled the port order of output ports is derived from the edge order and input ports are ordered by their incoming connections. If enabled all ports are ordered by the port model order."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Rin), f8), "No Model Order"), "Set on a node to not set a model order for this node even though it is a real node."), !1), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), IR), f8), "Consider Model Order for Components"), "If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."), bfn), Pt), Non), jn(xn)))), ri(e, IR, t8, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Kin), f8), "Long Edge Ordering Strategy"), "Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."), wfn), Pt), Nhn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), OR), f8), "Crossing Counter Node Order Influence"), "Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."), 0), Qi), si), jn(xn)))), ri(e, OR, ES, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), DR), f8), "Crossing Counter Port Order Influence"), "Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."), 0), Qi), si), jn(xn)))), ri(e, DR, ES, null), Mzn((new i8n(), e)); + }; + var Ine, One, Dne, afn, Lne, dfn, Nne, bfn, $ne, xne, Fne, wfn, Bne, Rne, Kne, gfn, _ne, Hne, qne, pfn, Une, Gne, zne, mfn, Xne, Vne, Wne, Jne, Qne, Yne, Zne, nee, eee, tee, vfn, iee, kfn, ree, yfn, cee, jfn, uee, Efn, oee, see, fee, Cfn, hee, Mfn, lee, Tfn, aee, dee, bee, wee, gee, pee, mee, vee, kee, yee, Afn, jee, Eee, Cee, Mee, Tee, Aee, Sfn, See, Pee, Iee, Oee, Dee, Lee, Nee, Pfn, $ee, Ifn, xee, Fee, Bee, Ofn, Ree, Kee, Dfn, _ee, Hee, qee, Uee, Gee, zee, Xee, Vee, Lfn, Wee, Jee, Qee, Nfn, Yee, $fn, Zee, nte, ete, tte, ite, rte, cte, ute, ote, ste, fte, hte, lte, ate, dte, bte, wte, gte, xfn, pte, mte, Ffn, vte, kte, yte, jte, Ete, Cte, Mte, Tte, Ate, Bfn, Ste, Pte, Ite, Ote, Rfn, Dte, Lte; + w(Ac, "LayeredMetaDataProvider", 859), b(998, 1, ms, i8n), o.hf = function(e) { + Mzn(e); + }; + var Th, mH, oI, q8, sI, Kfn, fI, Fw, hI, _fn, Hfn, lI, vH, Yh, kH, lb, qfn, Cj, yH, Ufn, Nte, $te, xte, aI, jH, U8, Ld, Fte, Do, Gfn, zfn, dI, EH, Ah, bI, $l, Xfn, Vfn, Wfn, CH, MH, Jfn, m1, TH, Qfn, Bw, Yfn, Zfn, nhn, wI, Rw, Nd, ehn, thn, Fr, ihn, Bte, su, gI, rhn, chn, uhn, ja, $d, pI, ohn, shn, mI, ab, fhn, AH, G8, hhn, db, z8, vI, xd, SH, Ev, kI, Fd, lhn, ahn, dhn, Cv, bhn, Rte, Kte, _te, Hte, bb, Kw, Ut, v1, qte, _w, whn, Mv, ghn, Hw, Ute, Tv, phn, I3, Gte, zte, Mj, PH, mhn, Tj, Ws, M2, T2, wb, Bd, yI, qw, IH, Av, Sv, gb, A2, OH, Aj, X8, V8, Xte, Vte, Wte, vhn, Jte, DH, khn, yhn, jhn, Ehn, LH, Chn, Mhn, Thn, Ahn, NH, jI; + w(Ac, "LayeredOptions", 998), b(999, 1, {}, Gpn), o.sf = function() { + var e; + return e = new Gyn(), e; + }, o.tf = function(e) { + }, w(Ac, "LayeredOptions/LayeredFactory", 999), b(1391, 1, {}), o.a = 0; + var Qte; + w(dc, "ElkSpacings/AbstractSpacingsBuilder", 1391), b(792, 1391, {}, VY); + var EI, Yte; + w(Ac, "LayeredSpacings/LayeredSpacingsBuilder", 792), b(265, 22, { 3: 1, 34: 1, 22: 1, 265: 1, 188: 1, 196: 1 }, dg), o.dg = function() { + return Kqn(this); + }, o.qg = function() { + return Kqn(this); + }; + var Pv, $H, Iv, Shn, Phn, Ihn, CI, xH, Ohn, Dhn = we(Ac, "LayeringStrategy", 265, ke, Fme, Hde), Zte; + b(390, 22, { 3: 1, 34: 1, 22: 1, 390: 1 }, zD); + var FH, Lhn, MI, Nhn = we(Ac, "LongEdgeOrderingStrategy", 390, ke, q2e, qde), nie; + b(203, 22, { 3: 1, 34: 1, 22: 1, 203: 1 }, wC); + var S2, P2, TI, BH, RH = we(Ac, "NodeFlexibility", 203, ke, Ype, Ude), eie; + b(323, 22, { 3: 1, 34: 1, 22: 1, 323: 1, 188: 1, 196: 1 }, l7), o.dg = function() { + return IHn(this); + }, o.qg = function() { + return IHn(this); + }; + var W8, KH, _H, J8, $hn, xhn = we(Ac, "NodePlacementStrategy", 323, ke, q3e, Gde), tie; + b(243, 22, { 3: 1, 34: 1, 22: 1, 243: 1 }, Lb); + var Fhn, pb, Uw, Sj, Bhn, Rhn, Pj, Khn, AI, SI, _hn = we(Ac, "NodePromotionStrategy", 243, ke, sve, zde), iie; + b(284, 22, { 3: 1, 34: 1, 22: 1, 284: 1 }, gC); + var Hhn, k1, HH, qH, qhn = we(Ac, "OrderingStrategy", 284, ke, Zpe, Xde), rie; + b(430, 22, { 3: 1, 34: 1, 22: 1, 430: 1 }, eX); + var UH, GH, Uhn = we(Ac, "PortSortingStrategy", 430, ke, Gge, Vde), cie; + b(463, 22, { 3: 1, 34: 1, 22: 1, 463: 1 }, XD); + var Vu, Qc, Q8, uie = we(Ac, "PortType", 463, ke, U2e, Wde), oie; + b(387, 22, { 3: 1, 34: 1, 22: 1, 387: 1 }, VD); + var Ghn, zH, zhn, Xhn = we(Ac, "SelfLoopDistributionStrategy", 387, ke, G2e, Jde), sie; + b(349, 22, { 3: 1, 34: 1, 22: 1, 349: 1 }, WD); + var XH, Ij, VH, Vhn = we(Ac, "SelfLoopOrderingStrategy", 349, ke, z2e, Qde), fie; + b(312, 1, { 312: 1 }, jGn), w(Ac, "Spacings", 312), b(350, 22, { 3: 1, 34: 1, 22: 1, 350: 1 }, JD); + var WH, Whn, Y8, Jhn = we(Ac, "SplineRoutingMode", 350, ke, X2e, Yde), hie; + b(352, 22, { 3: 1, 34: 1, 22: 1, 352: 1 }, QD); + var JH, Qhn, Yhn, Zhn = we(Ac, "ValidifyStrategy", 352, ke, V2e, Zde), lie; + b(388, 22, { 3: 1, 34: 1, 22: 1, 388: 1 }, YD); + var Gw, QH, Ov, nln = we(Ac, "WrappingStrategy", 388, ke, W2e, n0e), aie; + b(1398, 1, kr, V5n), o.rg = function(e) { + return u(e, 36), die; + }, o.Kf = function(e, t) { + LIe(this, u(e, 36), t); + }; + var die; + w(SS, "DepthFirstCycleBreaker", 1398), b(793, 1, kr, bW), o.rg = function(e) { + return u(e, 36), bie; + }, o.Kf = function(e, t) { + xLe(this, u(e, 36), t); + }, o.sg = function(e) { + return u(sn(e, cA(this.d, e.c.length)), 10); + }; + var bie; + w(SS, "GreedyCycleBreaker", 793), b(1401, 793, kr, _Mn), o.sg = function(e) { + var t, i, r, c; + for (c = null, t = tt, r = new C(e); r.a < r.c.c.length; ) + i = u(E(r), 10), kt(i, (W(), dt)) && u(v(i, dt), 17).a < t && (t = u(v(i, dt), 17).a, c = i); + return c || u(sn(e, cA(this.d, e.c.length)), 10); + }, w(SS, "GreedyModelOrderCycleBreaker", 1401), b(1399, 1, kr, X5n), o.rg = function(e) { + return u(e, 36), wie; + }, o.Kf = function(e, t) { + HIe(this, u(e, 36), t); + }; + var wie; + w(SS, "InteractiveCycleBreaker", 1399), b(1400, 1, kr, G5n), o.rg = function(e) { + return u(e, 36), gie; + }, o.Kf = function(e, t) { + YIe(this, u(e, 36), t); + }, o.a = 0, o.b = 0; + var gie; + w(SS, "ModelOrderCycleBreaker", 1400), b(1413, 1, kr, U5n), o.rg = function(e) { + return u(e, 36), pie; + }, o.Kf = function(e, t) { + _De(this, u(e, 36), t); + }; + var pie; + w(Dl, "BreadthFirstModelOrderLayerer", 1413), b(1414, 1, Ne, zpn), o.Ne = function(e, t) { + return aEe(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dl, "BreadthFirstModelOrderLayerer/lambda$0$Type", 1414), b(1404, 1, kr, bCn), o.rg = function(e) { + return u(e, 36), mie; + }, o.Kf = function(e, t) { + _Le(this, u(e, 36), t); + }; + var mie; + w(Dl, "CoffmanGrahamLayerer", 1404), b(1405, 1, Ne, D7n), o.Ne = function(e, t) { + return YEe(this.a, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dl, "CoffmanGrahamLayerer/0methodref$compareNodesInTopo$Type", 1405), b(1406, 1, Ne, L7n), o.Ne = function(e, t) { + return Ybe(this.a, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dl, "CoffmanGrahamLayerer/lambda$1$Type", 1406), b(1415, 1, kr, z5n), o.rg = function(e) { + return u(e, 36), vie; + }, o.Kf = function(e, t) { + SLe(this, u(e, 36), t); + }, o.c = 0, o.e = 0; + var vie; + w(Dl, "DepthFirstModelOrderLayerer", 1415), b(1416, 1, Ne, Xpn), o.Ne = function(e, t) { + return dEe(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dl, "DepthFirstModelOrderLayerer/lambda$0$Type", 1416), b(1407, 1, kr, Vpn), o.rg = function(e) { + return u(e, 36), Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), N_)), Jh, Lw), Dc, Dw); + }, o.Kf = function(e, t) { + nLe(u(e, 36), t); + }, w(Dl, "InteractiveLayerer", 1407), b(578, 1, { 578: 1 }, Wyn), o.a = 0, o.c = 0, w(Dl, "InteractiveLayerer/LayerSpan", 578), b(1403, 1, kr, Q5n), o.rg = function(e) { + return u(e, 36), kie; + }, o.Kf = function(e, t) { + STe(this, u(e, 36), t); + }; + var kie; + w(Dl, "LongestPathLayerer", 1403), b(1412, 1, kr, J5n), o.rg = function(e) { + return u(e, 36), yie; + }, o.Kf = function(e, t) { + YTe(this, u(e, 36), t); + }; + var yie; + w(Dl, "LongestPathSourceLayerer", 1412), b(1410, 1, kr, Y5n), o.rg = function(e) { + return u(e, 36), Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + }, o.Kf = function(e, t) { + fLe(this, u(e, 36), t); + }, o.a = 0, o.b = 0, o.d = 0; + var eln, tln; + w(Dl, "MinWidthLayerer", 1410), b(1411, 1, Ne, N7n), o.Ne = function(e, t) { + return Ive(this, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dl, "MinWidthLayerer/MinOutgoingEdgesComparator", 1411), b(1402, 1, kr, Z5n), o.rg = function(e) { + return u(e, 36), jie; + }, o.Kf = function(e, t) { + EOe(this, u(e, 36), t); + }; + var jie; + w(Dl, "NetworkSimplexLayerer", 1402), b(1408, 1, kr, HAn), o.rg = function(e) { + return u(e, 36), Ke(Ke(Ke(new ii(), (Vi(), Vs), (tr(), b2)), Jh, Lw), Dc, Dw); + }, o.Kf = function(e, t) { + oDe(this, u(e, 36), t); + }, o.d = 0, o.f = 0, o.g = 0, o.i = 0, o.s = 0, o.t = 0, o.u = 0, w(Dl, "StretchWidthLayerer", 1408), b(1409, 1, Ne, Wpn), o.Ne = function(e, t) { + return o4e(u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dl, "StretchWidthLayerer/1", 1409), b(413, 1, Trn), o.gg = function(e, t, i, r, c, s) { + }, o.ug = function(e, t, i) { + return dUn(this, e, t, i); + }, o.fg = function() { + this.g = K(cg, hVn, 28, this.d, 15, 1), this.f = K(cg, hVn, 28, this.d, 15, 1); + }, o.hg = function(e, t) { + this.e[e] = K(ye, _e, 28, t[e].length, 15, 1); + }, o.ig = function(e, t, i) { + var r; + r = i[e][t], r.p = t, this.e[e][t] = t; + }, o.jg = function(e, t, i, r) { + u(sn(r[e][t].j, i), 12).p = this.d++; + }, o.b = 0, o.c = 0, o.d = 0, w($u, "AbstractBarycenterPortDistributor", 413), b(1698, 1, Ne, $7n), o.Ne = function(e, t) { + return i9e(this.a, u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w($u, "AbstractBarycenterPortDistributor/lambda$0$Type", 1698), b(832, 1, _y, vJ), o.gg = function(e, t, i, r, c, s) { + }, o.ig = function(e, t, i) { + }, o.jg = function(e, t, i, r) { + }, o.eg = function() { + return !1; + }, o.fg = function() { + this.c = this.e.a, this.g = this.f.g; + }, o.hg = function(e, t) { + t[e][0].c.p = e; + }, o.kg = function() { + return !1; + }, o.vg = function(e, t, i, r) { + i ? gKn(this, e) : (kKn(this, e, r), $Gn(this, e, t)), e.c.length > 1 && (on(un(v(Hi((Ln(0, e.c.length), u(e.c[0], 10))), (cn(), lb)))) ? qHn(e, this.d, u(this, 669)) : (Dn(), Yt(e, this.d)), Uxn(this.e, e)); + }, o.lg = function(e, t, i, r) { + var c, s, f, h, l, a, d; + for (t != oPn(i, e.length) && (s = e[t - (i ? 1 : -1)], qJ(this.f, s, i ? (pr(), Qc) : (pr(), Vu))), c = e[t][0], d = !r || c.k == (Vn(), Zt), a = Of(e[t]), this.vg(a, d, !1, i), f = 0, l = new C(a); l.a < l.c.c.length; ) + h = u(E(l), 10), e[t][f++] = h; + return !1; + }, o.mg = function(e, t) { + var i, r, c, s, f; + for (f = oPn(t, e.length), s = Of(e[f]), this.vg(s, !1, !0, t), i = 0, c = new C(s); c.a < c.c.c.length; ) + r = u(E(c), 10), e[f][i++] = r; + return !1; + }, w($u, "BarycenterHeuristic", 832), b(667, 1, { 667: 1 }, B7n), o.Ib = function() { + return "BarycenterState [node=" + this.c + ", summedWeight=" + this.d + ", degree=" + this.b + ", barycenter=" + this.a + ", visited=" + this.e + "]"; + }, o.b = 0, o.d = 0, o.e = !1; + var Eie = w($u, "BarycenterHeuristic/BarycenterState", 667); + b(1865, 1, Ne, x7n), o.Ne = function(e, t) { + return Qke(this.a, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w($u, "BarycenterHeuristic/lambda$0$Type", 1865), b(831, 1, _y, YZ), o.fg = function() { + }, o.gg = function(e, t, i, r, c, s) { + }, o.jg = function(e, t, i, r) { + }, o.hg = function(e, t) { + this.a[e] = K(Eie, { 3: 1, 4: 1, 5: 1, 2117: 1 }, 667, t[e].length, 0, 1), this.b[e] = K(Cie, { 3: 1, 4: 1, 5: 1, 2118: 1 }, 239, t[e].length, 0, 1); + }, o.ig = function(e, t, i) { + eRn(this, i[e][t], !0); + }, o.c = !1, w($u, "ForsterConstraintResolver", 831), b(239, 1, { 239: 1 }, VIn, yGn), o.Ib = function() { + var e, t; + for (t = new x1(), t.a += "[", e = 0; e < this.d.length; e++) + Re(t, gRn(this.d[e])), Af(this.g, this.d[0]).a != null && Re(Re((t.a += "<", t), Ele(Af(this.g, this.d[0]).a)), ">"), e < this.d.length - 1 && (t.a += ur); + return (t.a += "]", t).a; + }, o.a = 0, o.c = 0, o.f = 0; + var Cie = w($u, "ForsterConstraintResolver/ConstraintGroup", 239); + b(1860, 1, re, F7n), o.Cd = function(e) { + eRn(this.a, u(e, 10), !1); + }, w($u, "ForsterConstraintResolver/lambda$0$Type", 1860), b(219, 1, { 219: 1, 230: 1 }, CGn), o.gg = function(e, t, i, r, c, s) { + }, o.hg = function(e, t) { + }, o.fg = function() { + this.r = K(ye, _e, 28, this.n, 15, 1); + }, o.ig = function(e, t, i) { + var r, c; + c = i[e][t], r = c.e, r && nn(this.b, r); + }, o.jg = function(e, t, i, r) { + ++this.n; + }, o.Ib = function() { + return xGn(this.e, new ni()); + }, o.g = !1, o.i = !1, o.n = 0, o.s = !1, w($u, "GraphInfoHolder", 219), b(1905, 1, _y, Jpn), o.gg = function(e, t, i, r, c, s) { + }, o.hg = function(e, t) { + }, o.jg = function(e, t, i, r) { + }, o.ug = function(e, t, i) { + return i && t > 0 ? DN(this.a, e[t - 1], e[t]) : !i && t < e.length - 1 ? DN(this.a, e[t], e[t + 1]) : T$(this.a, e[t], i ? (en(), Wn) : (en(), Zn)), IMe(this, e, t, i); + }, o.fg = function() { + this.d = K(ye, _e, 28, this.c, 15, 1), this.a = new D7(this.d); + }, o.ig = function(e, t, i) { + var r; + r = i[e][t], this.c += r.j.c.length; + }, o.c = 0, w($u, "GreedyPortDistributor", 1905), b(1421, 1, kr, r8n), o.rg = function(e) { + return V6e(u(e, 36)); + }, o.Kf = function(e, t) { + qOe(u(e, 36), t); + }; + var Mie; + w($u, "InteractiveCrossingMinimizer", 1421), b(1422, 1, Ne, K7n), o.Ne = function(e, t) { + return Dke(this, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w($u, "InteractiveCrossingMinimizer/1", 1422), b(514, 1, { 514: 1, 106: 1, 47: 1 }, gD), o.rg = function(e) { + var t; + return u(e, 36), t = DC(Tie), Ke(t, (Vi(), Dc), (tr(), FP)), t; + }, o.Kf = function(e, t) { + JSe(this, u(e, 36), t); + }, o.e = 0; + var Tie; + w($u, "LayerSweepCrossingMinimizer", 514), b(1418, 1, re, _7n), o.Cd = function(e) { + KPe(this.a, u(e, 219)); + }, w($u, "LayerSweepCrossingMinimizer/0methodref$compareDifferentRandomizedLayouts$Type", 1418), b(1419, 1, re, H7n), o.Cd = function(e) { + z6e(this.a, u(e, 219)); + }, w($u, "LayerSweepCrossingMinimizer/1methodref$minimizeCrossingsNoCounter$Type", 1419), b(1420, 1, re, q7n), o.Cd = function(e) { + ZUn(this.a, u(e, 219)); + }, w($u, "LayerSweepCrossingMinimizer/2methodref$minimizeCrossingsWithCounter$Type", 1420), b(464, 22, { 3: 1, 34: 1, 22: 1, 464: 1 }, ZD); + var Oj, Z8, PI, Aie = we($u, "LayerSweepCrossingMinimizer/CrossMinType", 464, ke, J2e, e0e), Sie; + b(1417, 1, De, Qpn), o.Mb = function(e) { + return KQ(), u(e, 30).a.c.length == 0; + }, w($u, "LayerSweepCrossingMinimizer/lambda$0$Type", 1417), b(1862, 1, _y, TOn), o.fg = function() { + }, o.gg = function(e, t, i, r, c, s) { + }, o.jg = function(e, t, i, r) { + }, o.hg = function(e, t) { + t[e][0].c.p = e, this.b[e] = K(Pie, { 3: 1, 4: 1, 5: 1, 2043: 1 }, 668, t[e].length, 0, 1); + }, o.ig = function(e, t, i) { + var r; + r = i[e][t], r.p = t, Rt(this.b[e], t, new Ypn()); + }, w($u, "LayerSweepTypeDecider", 1862), b(668, 1, { 668: 1 }, Ypn), o.Ib = function() { + return "NodeInfo [connectedEdges=" + this.a + ", hierarchicalInfluence=" + this.b + ", randomInfluence=" + this.c + "]"; + }, o.a = 0, o.b = 0, o.c = 0; + var Pie = w($u, "LayerSweepTypeDecider/NodeInfo", 668); + b(1863, 1, ph, Zpn), o.Lb = function(e) { + return D6(new Df(u(e, 12).b)); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return D6(new Df(u(e, 12).b)); + }, w($u, "LayerSweepTypeDecider/lambda$0$Type", 1863), b(1864, 1, ph, n3n), o.Lb = function(e) { + return D6(new Df(u(e, 12).b)); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return D6(new Df(u(e, 12).b)); + }, w($u, "LayerSweepTypeDecider/lambda$1$Type", 1864), b(1906, 413, Trn, Jjn), o.tg = function(e, t, i) { + var r, c, s, f, h, l, a, d, g; + switch (a = this.g, i.g) { + case 1: { + for (r = 0, c = 0, l = new C(e.j); l.a < l.c.c.length; ) + f = u(E(l), 12), f.e.c.length != 0 && (++r, f.j == (en(), Xn) && ++c); + for (s = t + c, g = t + r, h = F0(e, (pr(), Vu)).Kc(); h.Ob(); ) + f = u(h.Pb(), 12), f.j == (en(), Xn) ? (a[f.p] = s, --s) : (a[f.p] = g, --g); + return r; + } + case 2: { + for (d = 0, h = F0(e, (pr(), Qc)).Kc(); h.Ob(); ) + f = u(h.Pb(), 12), ++d, a[f.p] = t + d; + return d; + } + default: + throw M(new W9()); + } + }, w($u, "LayerTotalPortDistributor", 1906), b(669, 832, { 669: 1, 230: 1 }, pxn), o.vg = function(e, t, i, r) { + i ? gKn(this, e) : (kKn(this, e, r), $Gn(this, e, t)), e.c.length > 1 && (on(un(v(Hi((Ln(0, e.c.length), u(e.c[0], 10))), (cn(), lb)))) ? qHn(e, this.d, this) : (Dn(), Yt(e, this.d)), on(un(v(Hi((Ln(0, e.c.length), u(e.c[0], 10))), lb))) || Uxn(this.e, e)); + }, w($u, "ModelOrderBarycenterHeuristic", 669), b(1866, 1, Ne, U7n), o.Ne = function(e, t) { + return Dje(this.a, u(e, 10), u(t, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w($u, "ModelOrderBarycenterHeuristic/lambda$0$Type", 1866), b(1423, 1, kr, c8n), o.rg = function(e) { + var t; + return u(e, 36), t = DC(Iie), Ke(t, (Vi(), Dc), (tr(), FP)), t; + }, o.Kf = function(e, t) { + wge((u(e, 36), t)); + }; + var Iie; + w($u, "NoCrossingMinimizer", 1423), b(809, 413, Trn, Cz), o.tg = function(e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m; + switch (g = this.g, i.g) { + case 1: { + for (c = 0, s = 0, d = new C(e.j); d.a < d.c.c.length; ) + l = u(E(d), 12), l.e.c.length != 0 && (++c, l.j == (en(), Xn) && ++s); + for (r = 1 / (c + 1), f = t + s * r, m = t + 1 - r, a = F0(e, (pr(), Vu)).Kc(); a.Ob(); ) + l = u(a.Pb(), 12), l.j == (en(), Xn) ? (g[l.p] = f, f -= r) : (g[l.p] = m, m -= r); + break; + } + case 2: { + for (h = 0, d = new C(e.j); d.a < d.c.c.length; ) + l = u(E(d), 12), l.g.c.length == 0 || ++h; + for (r = 1 / (h + 1), p = t + r, a = F0(e, (pr(), Qc)).Kc(); a.Ob(); ) + l = u(a.Pb(), 12), g[l.p] = p, p += r; + break; + } + default: + throw M(new Gn("Port type is undefined")); + } + return 1; + }, w($u, "NodeRelativePortDistributor", 809), b(822, 1, {}, BPn, YKn), w($u, "SweepCopy", 822), b(1861, 1, _y, xBn), o.hg = function(e, t) { + }, o.fg = function() { + var e; + e = K(ye, _e, 28, this.f, 15, 1), this.d = new Y7n(e), this.a = new D7(e); + }, o.gg = function(e, t, i, r, c, s) { + var f; + f = u(sn(s[e][t].j, i), 12), c.c == f && c.c.i.c == c.d.i.c && ++this.e[e]; + }, o.ig = function(e, t, i) { + var r; + r = i[e][t], this.c[e] = this.c[e] | r.k == (Vn(), Hc); + }, o.jg = function(e, t, i, r) { + var c; + c = u(sn(r[e][t].j, i), 12), c.p = this.f++, c.g.c.length + c.e.c.length > 1 && (c.j == (en(), Zn) ? this.b[e] = !0 : c.j == Wn && e > 0 && (this.b[e - 1] = !0)); + }, o.f = 0, w(Vh, "AllCrossingsCounter", 1861), b(595, 1, {}, ET), o.b = 0, o.d = 0, w(Vh, "BinaryIndexedTree", 595), b(532, 1, {}, D7); + var iln, II; + w(Vh, "CrossingsCounter", 532), b(1950, 1, Ne, G7n), o.Ne = function(e, t) { + return _be(this.a, u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Vh, "CrossingsCounter/lambda$0$Type", 1950), b(1951, 1, Ne, z7n), o.Ne = function(e, t) { + return Hbe(this.a, u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Vh, "CrossingsCounter/lambda$1$Type", 1951), b(1952, 1, Ne, X7n), o.Ne = function(e, t) { + return qbe(this.a, u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Vh, "CrossingsCounter/lambda$2$Type", 1952), b(1953, 1, Ne, V7n), o.Ne = function(e, t) { + return Ube(this.a, u(e, 12), u(t, 12)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Vh, "CrossingsCounter/lambda$3$Type", 1953), b(1954, 1, re, W7n), o.Cd = function(e) { + U4e(this.a, u(e, 12)); + }, w(Vh, "CrossingsCounter/lambda$4$Type", 1954), b(1955, 1, De, J7n), o.Mb = function(e) { + return wle(this.a, u(e, 12)); + }, w(Vh, "CrossingsCounter/lambda$5$Type", 1955), b(1956, 1, re, Q7n), o.Cd = function(e) { + DMn(this, e); + }, w(Vh, "CrossingsCounter/lambda$6$Type", 1956), b(1957, 1, re, qCn), o.Cd = function(e) { + var t; + k4(), W1(this.b, (t = this.a, u(e, 12), t)); + }, w(Vh, "CrossingsCounter/lambda$7$Type", 1957), b(839, 1, ph, ZU), o.Lb = function(e) { + return k4(), kt(u(e, 12), (W(), Xu)); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return k4(), kt(u(e, 12), (W(), Xu)); + }, w(Vh, "CrossingsCounter/lambda$8$Type", 839), b(1949, 1, {}, Y7n), w(Vh, "HyperedgeCrossingsCounter", 1949), b(478, 1, { 34: 1, 478: 1 }, zAn), o.Fd = function(e) { + return q8e(this, u(e, 478)); + }, o.b = 0, o.c = 0, o.e = 0, o.f = 0; + var ENe = w(Vh, "HyperedgeCrossingsCounter/Hyperedge", 478); + b(374, 1, { 34: 1, 374: 1 }, CM), o.Fd = function(e) { + return iMe(this, u(e, 374)); + }, o.b = 0, o.c = 0; + var Oie = w(Vh, "HyperedgeCrossingsCounter/HyperedgeCorner", 374); + b(531, 22, { 3: 1, 34: 1, 22: 1, 531: 1 }, tX); + var n9, e9, Die = we(Vh, "HyperedgeCrossingsCounter/HyperedgeCorner/Type", 531, ke, zge, t0e), Lie; + b(1425, 1, kr, u8n), o.rg = function(e) { + return u(v(u(e, 36), (W(), qc)), 21).Hc((mr(), cs)) ? Nie : null; + }, o.Kf = function(e, t) { + bke(this, u(e, 36), t); + }; + var Nie; + w(yr, "InteractiveNodePlacer", 1425), b(1426, 1, kr, o8n), o.rg = function(e) { + return u(v(u(e, 36), (W(), qc)), 21).Hc((mr(), cs)) ? $ie : null; + }, o.Kf = function(e, t) { + Y9e(this, u(e, 36), t); + }; + var $ie, OI, DI; + w(yr, "LinearSegmentsNodePlacer", 1426), b(261, 1, { 34: 1, 261: 1 }, YG), o.Fd = function(e) { + return Ahe(this, u(e, 261)); + }, o.Fb = function(e) { + var t; + return D(e, 261) ? (t = u(e, 261), this.b == t.b) : !1; + }, o.Hb = function() { + return this.b; + }, o.Ib = function() { + return "ls" + ca(this.e); + }, o.a = 0, o.b = 0, o.c = -1, o.d = -1, o.g = 0; + var xie = w(yr, "LinearSegmentsNodePlacer/LinearSegment", 261); + b(1428, 1, kr, pPn), o.rg = function(e) { + return u(v(u(e, 36), (W(), qc)), 21).Hc((mr(), cs)) ? Fie : null; + }, o.Kf = function(e, t) { + ALe(this, u(e, 36), t); + }, o.b = 0, o.g = 0; + var Fie; + w(yr, "NetworkSimplexPlacer", 1428), b(1447, 1, Ne, e3n), o.Ne = function(e, t) { + return Ec(u(e, 17).a, u(t, 17).a); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(yr, "NetworkSimplexPlacer/0methodref$compare$Type", 1447), b(1449, 1, Ne, t3n), o.Ne = function(e, t) { + return Ec(u(e, 17).a, u(t, 17).a); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(yr, "NetworkSimplexPlacer/1methodref$compare$Type", 1449), b(655, 1, { 655: 1 }, UCn); + var CNe = w(yr, "NetworkSimplexPlacer/EdgeRep", 655); + b(412, 1, { 412: 1 }, VW), o.b = !1; + var MNe = w(yr, "NetworkSimplexPlacer/NodeRep", 412); + b(515, 13, { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 13: 1, 16: 1, 15: 1, 59: 1, 515: 1 }, njn), w(yr, "NetworkSimplexPlacer/Path", 515), b(1429, 1, {}, i3n), o.Kb = function(e) { + return u(e, 18).d.i.k; + }, w(yr, "NetworkSimplexPlacer/Path/lambda$0$Type", 1429), b(1430, 1, De, r3n), o.Mb = function(e) { + return u(e, 273) == (Vn(), Mi); + }, w(yr, "NetworkSimplexPlacer/Path/lambda$1$Type", 1430), b(1431, 1, {}, c3n), o.Kb = function(e) { + return u(e, 18).d.i; + }, w(yr, "NetworkSimplexPlacer/Path/lambda$2$Type", 1431), b(1432, 1, De, Z7n), o.Mb = function(e) { + return IAn(LBn(u(e, 10))); + }, w(yr, "NetworkSimplexPlacer/Path/lambda$3$Type", 1432), b(1433, 1, De, u3n), o.Mb = function(e) { + return Mbe(u(e, 12)); + }, w(yr, "NetworkSimplexPlacer/lambda$0$Type", 1433), b(1434, 1, re, GCn), o.Cd = function(e) { + u1e(this.a, this.b, u(e, 12)); + }, w(yr, "NetworkSimplexPlacer/lambda$1$Type", 1434), b(1443, 1, re, nkn), o.Cd = function(e) { + DEe(this.a, u(e, 18)); + }, w(yr, "NetworkSimplexPlacer/lambda$10$Type", 1443), b(1444, 1, {}, o3n), o.Kb = function(e) { + return ko(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(yr, "NetworkSimplexPlacer/lambda$11$Type", 1444), b(1445, 1, re, ekn), o.Cd = function(e) { + TAe(this.a, u(e, 10)); + }, w(yr, "NetworkSimplexPlacer/lambda$12$Type", 1445), b(1446, 1, {}, s3n), o.Kb = function(e) { + return ko(), Y(u(e, 125).e); + }, w(yr, "NetworkSimplexPlacer/lambda$13$Type", 1446), b(1448, 1, {}, f3n), o.Kb = function(e) { + return ko(), Y(u(e, 125).e); + }, w(yr, "NetworkSimplexPlacer/lambda$15$Type", 1448), b(1450, 1, De, h3n), o.Mb = function(e) { + return ko(), u(e, 412).c.k == (Vn(), Vt); + }, w(yr, "NetworkSimplexPlacer/lambda$17$Type", 1450), b(1451, 1, De, l3n), o.Mb = function(e) { + return ko(), u(e, 412).c.j.c.length > 1; + }, w(yr, "NetworkSimplexPlacer/lambda$18$Type", 1451), b(1452, 1, re, MIn), o.Cd = function(e) { + l8e(this.c, this.b, this.d, this.a, u(e, 412)); + }, o.c = 0, o.d = 0, w(yr, "NetworkSimplexPlacer/lambda$19$Type", 1452), b(1435, 1, {}, a3n), o.Kb = function(e) { + return ko(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(yr, "NetworkSimplexPlacer/lambda$2$Type", 1435), b(1453, 1, re, tkn), o.Cd = function(e) { + s1e(this.a, u(e, 12)); + }, o.a = 0, w(yr, "NetworkSimplexPlacer/lambda$20$Type", 1453), b(1454, 1, {}, d3n), o.Kb = function(e) { + return ko(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(yr, "NetworkSimplexPlacer/lambda$21$Type", 1454), b(1455, 1, re, ikn), o.Cd = function(e) { + k1e(this.a, u(e, 10)); + }, w(yr, "NetworkSimplexPlacer/lambda$22$Type", 1455), b(1456, 1, De, b3n), o.Mb = function(e) { + return IAn(e); + }, w(yr, "NetworkSimplexPlacer/lambda$23$Type", 1456), b(1457, 1, {}, w3n), o.Kb = function(e) { + return ko(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(yr, "NetworkSimplexPlacer/lambda$24$Type", 1457), b(1458, 1, De, rkn), o.Mb = function(e) { + return Ple(this.a, u(e, 10)); + }, w(yr, "NetworkSimplexPlacer/lambda$25$Type", 1458), b(1459, 1, re, zCn), o.Cd = function(e) { + xje(this.a, this.b, u(e, 10)); + }, w(yr, "NetworkSimplexPlacer/lambda$26$Type", 1459), b(1460, 1, De, g3n), o.Mb = function(e) { + return ko(), !fr(u(e, 18)); + }, w(yr, "NetworkSimplexPlacer/lambda$27$Type", 1460), b(1461, 1, De, p3n), o.Mb = function(e) { + return ko(), !fr(u(e, 18)); + }, w(yr, "NetworkSimplexPlacer/lambda$28$Type", 1461), b(1462, 1, {}, ckn), o.Ve = function(e, t) { + return o1e(this.a, u(e, 30), u(t, 30)); + }, w(yr, "NetworkSimplexPlacer/lambda$29$Type", 1462), b(1436, 1, {}, m3n), o.Kb = function(e) { + return ko(), new Tn(null, new p0(new ie(ce(Qt(u(e, 10)).a.Kc(), new En())))); + }, w(yr, "NetworkSimplexPlacer/lambda$3$Type", 1436), b(1437, 1, De, v3n), o.Mb = function(e) { + return ko(), Fpe(u(e, 18)); + }, w(yr, "NetworkSimplexPlacer/lambda$4$Type", 1437), b(1438, 1, re, ukn), o.Cd = function(e) { + $Pe(this.a, u(e, 18)); + }, w(yr, "NetworkSimplexPlacer/lambda$5$Type", 1438), b(1439, 1, {}, k3n), o.Kb = function(e) { + return ko(), new Tn(null, new In(u(e, 30).a, 16)); + }, w(yr, "NetworkSimplexPlacer/lambda$6$Type", 1439), b(1440, 1, De, y3n), o.Mb = function(e) { + return ko(), u(e, 10).k == (Vn(), Vt); + }, w(yr, "NetworkSimplexPlacer/lambda$7$Type", 1440), b(1441, 1, {}, j3n), o.Kb = function(e) { + return ko(), new Tn(null, new p0(new ie(ce(Cl(u(e, 10)).a.Kc(), new En())))); + }, w(yr, "NetworkSimplexPlacer/lambda$8$Type", 1441), b(1442, 1, De, E3n), o.Mb = function(e) { + return ko(), Cbe(u(e, 18)); + }, w(yr, "NetworkSimplexPlacer/lambda$9$Type", 1442), b(1424, 1, kr, s8n), o.rg = function(e) { + return u(v(u(e, 36), (W(), qc)), 21).Hc((mr(), cs)) ? Bie : null; + }, o.Kf = function(e, t) { + wIe(u(e, 36), t); + }; + var Bie; + w(yr, "SimpleNodePlacer", 1424), b(185, 1, { 185: 1 }, Wg), o.Ib = function() { + var e; + return e = "", this.c == (fh(), mb) ? e += f3 : this.c == y1 && (e += s3), this.o == (Pf(), Rd) ? e += _B : this.o == Xf ? e += "UP" : e += "BALANCED", e; + }, w(da, "BKAlignedLayout", 185), b(523, 22, { 3: 1, 34: 1, 22: 1, 523: 1 }, iX); + var y1, mb, Rie = we(da, "BKAlignedLayout/HDirection", 523, ke, Vge, i0e), Kie; + b(522, 22, { 3: 1, 34: 1, 22: 1, 522: 1 }, rX); + var Rd, Xf, _ie = we(da, "BKAlignedLayout/VDirection", 522, ke, Wge, r0e), Hie; + b(1699, 1, {}, XCn), w(da, "BKAligner", 1699), b(1702, 1, {}, rKn), w(da, "BKCompactor", 1702), b(663, 1, { 663: 1 }, C3n), o.a = 0, w(da, "BKCompactor/ClassEdge", 663), b(467, 1, { 467: 1 }, Qyn), o.a = null, o.b = 0, w(da, "BKCompactor/ClassNode", 467), b(1427, 1, kr, QCn), o.rg = function(e) { + return u(v(u(e, 36), (W(), qc)), 21).Hc((mr(), cs)) ? qie : null; + }, o.Kf = function(e, t) { + GLe(this, u(e, 36), t); + }, o.d = !1; + var qie; + w(da, "BKNodePlacer", 1427), b(1700, 1, {}, M3n), o.d = 0, w(da, "NeighborhoodInformation", 1700), b(1701, 1, Ne, okn), o.Ne = function(e, t) { + return vme(this, u(e, 42), u(t, 42)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(da, "NeighborhoodInformation/NeighborComparator", 1701), b(823, 1, {}), w(da, "ThresholdStrategy", 823), b(1825, 823, {}, Yyn), o.wg = function(e, t, i) { + return this.a.o == (Pf(), Xf) ? St : li; + }, o.xg = function() { + }, w(da, "ThresholdStrategy/NullThresholdStrategy", 1825), b(587, 1, { 587: 1 }, YCn), o.c = !1, o.d = !1, w(da, "ThresholdStrategy/Postprocessable", 587), b(1826, 823, {}, Zyn), o.wg = function(e, t, i) { + var r, c, s; + return c = t == i, r = this.a.a[i.p] == t, c || r ? (s = e, this.a.c == (fh(), mb) ? (c && (s = KF(this, t, !0)), !isNaN(s) && !isFinite(s) && r && (s = KF(this, i, !1))) : (c && (s = KF(this, t, !0)), !isNaN(s) && !isFinite(s) && r && (s = KF(this, i, !1))), s) : e; + }, o.xg = function() { + for (var e, t, i, r, c; this.d.b != 0; ) + c = u(h2e(this.d), 587), r = IUn(this, c), r.a && (e = r.a, i = on(this.a.f[this.a.g[c.b.p].p]), !(!i && !fr(e) && e.c.i.c == e.d.i.c) && (t = $Hn(this, c), t || Dle(this.e, c))); + for (; this.e.a.c.length != 0; ) + $Hn(this, u(xFn(this.e), 587)); + }, w(da, "ThresholdStrategy/SimpleThresholdStrategy", 1826), b(645, 1, { 645: 1, 188: 1, 196: 1 }, T3n), o.dg = function() { + return Gxn(this); + }, o.qg = function() { + return Gxn(this); + }; + var YH; + w(RR, "EdgeRouterFactory", 645), b(1485, 1, kr, f8n), o.rg = function(e) { + return tAe(u(e, 36)); + }, o.Kf = function(e, t) { + jIe(u(e, 36), t); + }; + var Uie, Gie, zie, Xie, Vie, rln, Wie, Jie; + w(RR, "OrthogonalEdgeRouter", 1485), b(1478, 1, kr, JCn), o.rg = function(e) { + return Cke(u(e, 36)); + }, o.Kf = function(e, t) { + GDe(this, u(e, 36), t); + }; + var Qie, Yie, Zie, nre, Dj, ere; + w(RR, "PolylineEdgeRouter", 1478), b(1479, 1, ph, S3n), o.Lb = function(e) { + return GQ(u(e, 10)); + }, o.Fb = function(e) { + return this === e; + }, o.Mb = function(e) { + return GQ(u(e, 10)); + }, w(RR, "PolylineEdgeRouter/1", 1479), b(1872, 1, De, P3n), o.Mb = function(e) { + return u(e, 132).c == (af(), Ea); + }, w(mf, "HyperEdgeCycleDetector/lambda$0$Type", 1872), b(1873, 1, {}, I3n), o.Ze = function(e) { + return u(e, 132).d; + }, w(mf, "HyperEdgeCycleDetector/lambda$1$Type", 1873), b(1874, 1, De, O3n), o.Mb = function(e) { + return u(e, 132).c == (af(), Ea); + }, w(mf, "HyperEdgeCycleDetector/lambda$2$Type", 1874), b(1875, 1, {}, D3n), o.Ze = function(e) { + return u(e, 132).d; + }, w(mf, "HyperEdgeCycleDetector/lambda$3$Type", 1875), b(1876, 1, {}, L3n), o.Ze = function(e) { + return u(e, 132).d; + }, w(mf, "HyperEdgeCycleDetector/lambda$4$Type", 1876), b(1877, 1, {}, A3n), o.Ze = function(e) { + return u(e, 132).d; + }, w(mf, "HyperEdgeCycleDetector/lambda$5$Type", 1877), b(118, 1, { 34: 1, 118: 1 }, yk), o.Fd = function(e) { + return She(this, u(e, 118)); + }, o.Fb = function(e) { + var t; + return D(e, 118) ? (t = u(e, 118), this.g == t.g) : !1; + }, o.Hb = function() { + return this.g; + }, o.Ib = function() { + var e, t, i, r; + for (e = new mo("{"), r = new C(this.n); r.a < r.c.c.length; ) + i = u(E(r), 12), t = qk(i.i), t == null && (t = "n" + iSn(i.i)), e.a += "" + t, r.a < r.c.c.length && (e.a += ","); + return e.a += "}", e.a; + }, o.a = 0, o.b = 0, o.c = NaN, o.d = 0, o.g = 0, o.i = 0, o.o = 0, o.s = NaN, w(mf, "HyperEdgeSegment", 118), b(132, 1, { 132: 1 }, ed), o.Ib = function() { + return this.a + "->" + this.b + " (" + X1e(this.c) + ")"; + }, o.d = 0, w(mf, "HyperEdgeSegmentDependency", 132), b(528, 22, { 3: 1, 34: 1, 22: 1, 528: 1 }, cX); + var Ea, zw, tre = we(mf, "HyperEdgeSegmentDependency/DependencyType", 528, ke, Jge, c0e), ire; + b(1878, 1, {}, skn), w(mf, "HyperEdgeSegmentSplitter", 1878), b(1879, 1, {}, nEn), o.a = 0, o.b = 0, w(mf, "HyperEdgeSegmentSplitter/AreaRating", 1879), b(339, 1, { 339: 1 }, KL), o.a = 0, o.b = 0, o.c = 0, w(mf, "HyperEdgeSegmentSplitter/FreeArea", 339), b(1880, 1, Ne, N3n), o.Ne = function(e, t) { + return Xae(u(e, 118), u(t, 118)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(mf, "HyperEdgeSegmentSplitter/lambda$0$Type", 1880), b(1881, 1, re, TIn), o.Cd = function(e) { + y3e(this.a, this.d, this.c, this.b, u(e, 118)); + }, o.b = 0, w(mf, "HyperEdgeSegmentSplitter/lambda$1$Type", 1881), b(1882, 1, {}, $3n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 118).e, 16)); + }, w(mf, "HyperEdgeSegmentSplitter/lambda$2$Type", 1882), b(1883, 1, {}, x3n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 118).j, 16)); + }, w(mf, "HyperEdgeSegmentSplitter/lambda$3$Type", 1883), b(1884, 1, {}, F3n), o.Ye = function(e) { + return $(R(e)); + }, w(mf, "HyperEdgeSegmentSplitter/lambda$4$Type", 1884), b(664, 1, {}, lN), o.a = 0, o.b = 0, o.c = 0, w(mf, "OrthogonalRoutingGenerator", 664), b(1703, 1, {}, B3n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 118).e, 16)); + }, w(mf, "OrthogonalRoutingGenerator/lambda$0$Type", 1703), b(1704, 1, {}, R3n), o.Kb = function(e) { + return new Tn(null, new In(u(e, 118).j, 16)); + }, w(mf, "OrthogonalRoutingGenerator/lambda$1$Type", 1704), b(670, 1, {}), w(KR, "BaseRoutingDirectionStrategy", 670), b(1870, 670, {}, ijn), o.yg = function(e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j; + if (!(e.r && !e.q)) + for (d = t + e.o * i, a = new C(e.n); a.a < a.c.c.length; ) + for (l = u(E(a), 12), g = cc(A(T(Ei, 1), J, 8, 0, [l.i.n, l.n, l.a])).a, h = new C(l.g); h.a < h.c.c.length; ) + f = u(E(h), 18), fr(f) || (k = f.d, j = cc(A(T(Ei, 1), J, 8, 0, [k.i.n, k.n, k.a])).a, y.Math.abs(g - j) > vh && (s = d, c = e, r = new V(g, s), Fe(f.a, r), q0(this, f, c, r, !1), p = e.r, p && (m = $(R(Zo(p.e, 0))), r = new V(m, s), Fe(f.a, r), q0(this, f, c, r, !1), s = t + p.o * i, c = p, r = new V(m, s), Fe(f.a, r), q0(this, f, c, r, !1)), r = new V(j, s), Fe(f.a, r), q0(this, f, c, r, !1))); + }, o.zg = function(e) { + return e.i.n.a + e.n.a + e.a.a; + }, o.Ag = function() { + return en(), ae; + }, o.Bg = function() { + return en(), Xn; + }, w(KR, "NorthToSouthRoutingStrategy", 1870), b(1871, 670, {}, rjn), o.yg = function(e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j; + if (!(e.r && !e.q)) + for (d = t - e.o * i, a = new C(e.n); a.a < a.c.c.length; ) + for (l = u(E(a), 12), g = cc(A(T(Ei, 1), J, 8, 0, [l.i.n, l.n, l.a])).a, h = new C(l.g); h.a < h.c.c.length; ) + f = u(E(h), 18), fr(f) || (k = f.d, j = cc(A(T(Ei, 1), J, 8, 0, [k.i.n, k.n, k.a])).a, y.Math.abs(g - j) > vh && (s = d, c = e, r = new V(g, s), Fe(f.a, r), q0(this, f, c, r, !1), p = e.r, p && (m = $(R(Zo(p.e, 0))), r = new V(m, s), Fe(f.a, r), q0(this, f, c, r, !1), s = t - p.o * i, c = p, r = new V(m, s), Fe(f.a, r), q0(this, f, c, r, !1)), r = new V(j, s), Fe(f.a, r), q0(this, f, c, r, !1))); + }, o.zg = function(e) { + return e.i.n.a + e.n.a + e.a.a; + }, o.Ag = function() { + return en(), Xn; + }, o.Bg = function() { + return en(), ae; + }, w(KR, "SouthToNorthRoutingStrategy", 1871), b(1869, 670, {}, cjn), o.yg = function(e, t, i) { + var r, c, s, f, h, l, a, d, g, p, m, k, j; + if (!(e.r && !e.q)) + for (d = t + e.o * i, a = new C(e.n); a.a < a.c.c.length; ) + for (l = u(E(a), 12), g = cc(A(T(Ei, 1), J, 8, 0, [l.i.n, l.n, l.a])).b, h = new C(l.g); h.a < h.c.c.length; ) + f = u(E(h), 18), fr(f) || (k = f.d, j = cc(A(T(Ei, 1), J, 8, 0, [k.i.n, k.n, k.a])).b, y.Math.abs(g - j) > vh && (s = d, c = e, r = new V(s, g), Fe(f.a, r), q0(this, f, c, r, !0), p = e.r, p && (m = $(R(Zo(p.e, 0))), r = new V(s, m), Fe(f.a, r), q0(this, f, c, r, !0), s = t + p.o * i, c = p, r = new V(s, m), Fe(f.a, r), q0(this, f, c, r, !0)), r = new V(s, j), Fe(f.a, r), q0(this, f, c, r, !0))); + }, o.zg = function(e) { + return e.i.n.b + e.n.b + e.a.b; + }, o.Ag = function() { + return en(), Zn; + }, o.Bg = function() { + return en(), Wn; + }, w(KR, "WestToEastRoutingStrategy", 1869), b(828, 1, {}, qen), o.Ib = function() { + return ca(this.a); + }, o.b = 0, o.c = !1, o.d = !1, o.f = 0, w(jw, "NubSpline", 828), b(418, 1, { 418: 1 }, bqn, rOn), w(jw, "NubSpline/PolarCP", 418), b(1480, 1, kr, JRn), o.rg = function(e) { + return dye(u(e, 36)); + }, o.Kf = function(e, t) { + hLe(this, u(e, 36), t); + }; + var rre, cre, ure, ore, sre; + w(jw, "SplineEdgeRouter", 1480), b(274, 1, { 274: 1 }, XM), o.Ib = function() { + return this.a + " ->(" + this.c + ") " + this.b; + }, o.c = 0, w(jw, "SplineEdgeRouter/Dependency", 274), b(465, 22, { 3: 1, 34: 1, 22: 1, 465: 1 }, uX); + var Ca, I2, fre = we(jw, "SplineEdgeRouter/SideToProcess", 465, ke, t2e, u0e), hre; + b(1481, 1, De, K3n), o.Mb = function(e) { + return B5(), !u(e, 131).o; + }, w(jw, "SplineEdgeRouter/lambda$0$Type", 1481), b(1482, 1, {}, _3n), o.Ze = function(e) { + return B5(), u(e, 131).v + 1; + }, w(jw, "SplineEdgeRouter/lambda$1$Type", 1482), b(1483, 1, re, ZCn), o.Cd = function(e) { + Sbe(this.a, this.b, u(e, 42)); + }, w(jw, "SplineEdgeRouter/lambda$2$Type", 1483), b(1484, 1, re, nMn), o.Cd = function(e) { + Pbe(this.a, this.b, u(e, 42)); + }, w(jw, "SplineEdgeRouter/lambda$3$Type", 1484), b(131, 1, { 34: 1, 131: 1 }, S_n, Wen), o.Fd = function(e) { + return Ohe(this, u(e, 131)); + }, o.b = 0, o.e = !1, o.f = 0, o.g = 0, o.j = !1, o.k = !1, o.n = 0, o.o = !1, o.p = !1, o.q = !1, o.s = 0, o.u = 0, o.v = 0, o.F = 0, w(jw, "SplineSegment", 131), b(468, 1, { 468: 1 }, H3n), o.a = 0, o.b = !1, o.c = !1, o.d = !1, o.e = !1, o.f = 0, w(jw, "SplineSegment/EdgeInformation", 468), b(1198, 1, {}, q3n), w(Ll, ztn, 1198), b(1199, 1, Ne, U3n), o.Ne = function(e, t) { + return WEe(u(e, 121), u(t, 121)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ll, CXn, 1199), b(1197, 1, {}, gEn), w(Ll, "MrTree", 1197), b(405, 22, { 3: 1, 34: 1, 22: 1, 405: 1, 188: 1, 196: 1 }, pC), o.dg = function() { + return W_n(this); + }, o.qg = function() { + return W_n(this); + }; + var LI, t9, i9, r9, cln = we(Ll, "TreeLayoutPhases", 405, ke, r3e, o0e), lre; + b(1112, 205, yd, UAn), o.rf = function(e, t) { + var i, r, c, s, f, h, l, a; + for (on(un(z(e, (lc(), Iln)))) || X7((i = new Xv((c0(), new Qd(e))), i)), f = t.eh(qR), f.Ug("build tGraph", 1), h = (l = new tk(), Ur(l, e), U(l, (pt(), u9), e), a = new de(), HSe(e, l, a), oPe(e, l, a), l), f.Vg(), f = t.eh(qR), f.Ug("Split graph", 1), s = VSe(this.a, h), f.Vg(), c = new C(s); c.a < c.c.c.length; ) + r = u(E(c), 121), Yke(this.b, r, t.eh(0.5999999940395355 / s.c.length)); + f = t.eh(qR), f.Ug("Pack components", 1), h = zLe(s), f.Vg(), f = t.eh(qR), f.Ug("Apply layout results", 1), $Oe(h), f.Vg(); + }, w(Ll, "TreeLayoutProvider", 1112), b(1894, 1, qh, z3n), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return Dn(), l4(), fv; + }, w(Ll, "TreeUtil/1", 1894), b(1895, 1, qh, X3n), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return Dn(), l4(), fv; + }, w(Ll, "TreeUtil/2", 1895), b(1885, 1, De, V3n), o.Mb = function(e) { + return on(un(v(u(e, 40), (pt(), Ma)))); + }, w(Ll, "TreeUtil/lambda$0$Type", 1885), b(1891, 1, De, fkn), o.Mb = function(e) { + return this.a.Hc(u(e, 40)); + }, w(Ll, "TreeUtil/lambda$10$Type", 1891), b(1892, 1, {}, hkn), o.Kb = function(e) { + return i3e(this.a, u(e, 40)); + }, w(Ll, "TreeUtil/lambda$11$Type", 1892), b(1893, 1, De, eMn), o.Mb = function(e) { + return eme(this.a, this.b, u(e, 40)); + }, w(Ll, "TreeUtil/lambda$12$Type", 1893), b(1886, 1, De, lkn), o.Mb = function(e) { + return _5e(this.a, u(e, 65)); + }, w(Ll, "TreeUtil/lambda$3$Type", 1886), b(1887, 1, Ne, G3n), o.Ne = function(e, t) { + return Vae(u(e, 65), u(t, 65)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ll, "TreeUtil/lambda$4$Type", 1887), b(1888, 1, De, akn), o.Mb = function(e) { + return H5e(this.a, u(e, 65)); + }, w(Ll, "TreeUtil/lambda$7$Type", 1888), b(1889, 1, Ne, W3n), o.Ne = function(e, t) { + return Wae(u(e, 65), u(t, 65)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Ll, "TreeUtil/lambda$8$Type", 1889), b(1890, 1, {}, J3n), o.Kb = function(e) { + return u(e, 65).b; + }, w(Ll, "TreeUtil/lambda$9$Type", 1890), b(508, 137, { 3: 1, 508: 1, 96: 1, 137: 1 }), o.g = 0, w(h8, "TGraphElement", 508), b(65, 508, { 3: 1, 65: 1, 508: 1, 96: 1, 137: 1 }, QW), o.Ib = function() { + return this.b && this.c ? td(this.b) + "->" + td(this.c) : "e_" + mt(this); + }, w(h8, "TEdge", 65), b(121, 137, { 3: 1, 121: 1, 96: 1, 137: 1 }, tk), o.Ib = function() { + var e, t, i, r, c; + for (c = null, r = ge(this.b, 0); r.b != r.d.c; ) + i = u(be(r), 40), c += (i.c == null || i.c.length == 0 ? "n_" + i.g : "n_" + i.c) + ` +`; + for (t = ge(this.a, 0); t.b != t.d.c; ) + e = u(be(t), 65), c += (e.b && e.c ? td(e.b) + "->" + td(e.c) : "e_" + mt(e)) + ` +`; + return c; + }; + var TNe = w(h8, "TGraph", 121); + b(643, 508, { 3: 1, 508: 1, 643: 1, 96: 1, 137: 1 }), w(h8, "TShape", 643), b(40, 643, { 3: 1, 508: 1, 40: 1, 643: 1, 96: 1, 137: 1 }, q$), o.Ib = function() { + return td(this); + }; + var NI = w(h8, "TNode", 40); + b(236, 1, qh, sl), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + var e; + return e = ge(this.a.d, 0), new sg(e); + }, w(h8, "TNode/2", 236), b(329, 1, Pi, sg), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return u(be(this.a), 65).c; + }, o.Ob = function() { + return Q9(this.a); + }, o.Qb = function() { + p$(this.a); + }, w(h8, "TNode/2/1", 329), b(1923, 1, vt, Q3n), o.Kf = function(e, t) { + KLe(this, u(e, 121), t); + }, w(Kc, "CompactionProcessor", 1923), b(1924, 1, Ne, dkn), o.Ne = function(e, t) { + return Ave(this.a, u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$0$Type", 1924), b(1925, 1, De, tMn), o.Mb = function(e) { + return Lge(this.b, this.a, u(e, 42)); + }, o.a = 0, o.b = 0, w(Kc, "CompactionProcessor/lambda$1$Type", 1925), b(1934, 1, Ne, Y3n), o.Ne = function(e, t) { + return Cwe(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$10$Type", 1934), b(1935, 1, Ne, Z3n), o.Ne = function(e, t) { + return B1e(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$11$Type", 1935), b(1936, 1, Ne, n4n), o.Ne = function(e, t) { + return Mwe(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$12$Type", 1936), b(1926, 1, De, bkn), o.Mb = function(e) { + return y1e(this.a, u(e, 42)); + }, o.a = 0, w(Kc, "CompactionProcessor/lambda$2$Type", 1926), b(1927, 1, De, wkn), o.Mb = function(e) { + return j1e(this.a, u(e, 42)); + }, o.a = 0, w(Kc, "CompactionProcessor/lambda$3$Type", 1927), b(1928, 1, De, e4n), o.Mb = function(e) { + return u(e, 40).c.indexOf(IS) == -1; + }, w(Kc, "CompactionProcessor/lambda$4$Type", 1928), b(1929, 1, {}, gkn), o.Kb = function(e) { + return $pe(this.a, u(e, 40)); + }, o.a = 0, w(Kc, "CompactionProcessor/lambda$5$Type", 1929), b(1930, 1, {}, pkn), o.Kb = function(e) { + return q4e(this.a, u(e, 40)); + }, o.a = 0, w(Kc, "CompactionProcessor/lambda$6$Type", 1930), b(1931, 1, Ne, mkn), o.Ne = function(e, t) { + return n4e(this.a, u(e, 240), u(t, 240)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$7$Type", 1931), b(1932, 1, Ne, vkn), o.Ne = function(e, t) { + return e4e(this.a, u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$8$Type", 1932), b(1933, 1, Ne, t4n), o.Ne = function(e, t) { + return R1e(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Kc, "CompactionProcessor/lambda$9$Type", 1933), b(1921, 1, vt, i4n), o.Kf = function(e, t) { + xAe(u(e, 121), t); + }, w(Kc, "DirectionProcessor", 1921), b(1913, 1, vt, qAn), o.Kf = function(e, t) { + cPe(this, u(e, 121), t); + }, w(Kc, "FanProcessor", 1913), b(1937, 1, vt, r4n), o.Kf = function(e, t) { + CAe(u(e, 121), t); + }, w(Kc, "GraphBoundsProcessor", 1937), b(1938, 1, {}, c4n), o.Ye = function(e) { + return u(e, 40).e.a; + }, w(Kc, "GraphBoundsProcessor/lambda$0$Type", 1938), b(1939, 1, {}, u4n), o.Ye = function(e) { + return u(e, 40).e.b; + }, w(Kc, "GraphBoundsProcessor/lambda$1$Type", 1939), b(1940, 1, {}, o4n), o.Ye = function(e) { + return rle(u(e, 40)); + }, w(Kc, "GraphBoundsProcessor/lambda$2$Type", 1940), b(1941, 1, {}, s4n), o.Ye = function(e) { + return ile(u(e, 40)); + }, w(Kc, "GraphBoundsProcessor/lambda$3$Type", 1941), b(262, 22, { 3: 1, 34: 1, 22: 1, 262: 1, 196: 1 }, u0), o.dg = function() { + switch (this.g) { + case 0: + return new vjn(); + case 1: + return new qAn(); + case 2: + return new mjn(); + case 3: + return new d4n(); + case 4: + return new h4n(); + case 8: + return new f4n(); + case 5: + return new i4n(); + case 6: + return new w4n(); + case 7: + return new Q3n(); + case 9: + return new r4n(); + case 10: + return new g4n(); + default: + throw M(new Gn(cR + (this.f != null ? this.f : "" + this.g))); + } + }; + var uln, oln, sln, fln, hln, lln, aln, dln, bln, wln, ZH, ANe = we(Kc, uR, 262, ke, Fxn, s0e), are; + b(1920, 1, vt, f4n), o.Kf = function(e, t) { + FDe(u(e, 121), t); + }, w(Kc, "LevelCoordinatesProcessor", 1920), b(1918, 1, vt, h4n), o.Kf = function(e, t) { + rTe(this, u(e, 121), t); + }, o.a = 0, w(Kc, "LevelHeightProcessor", 1918), b(1919, 1, qh, l4n), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return Dn(), l4(), fv; + }, w(Kc, "LevelHeightProcessor/1", 1919), b(1914, 1, vt, mjn), o.Kf = function(e, t) { + mAe(this, u(e, 121), t); + }, w(Kc, "LevelProcessor", 1914), b(1915, 1, De, a4n), o.Mb = function(e) { + return on(un(v(u(e, 40), (pt(), Ma)))); + }, w(Kc, "LevelProcessor/lambda$0$Type", 1915), b(1916, 1, vt, d4n), o.Kf = function(e, t) { + eEe(this, u(e, 121), t); + }, o.a = 0, w(Kc, "NeighborsProcessor", 1916), b(1917, 1, qh, b4n), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return Dn(), l4(), fv; + }, w(Kc, "NeighborsProcessor/1", 1917), b(1922, 1, vt, w4n), o.Kf = function(e, t) { + rPe(this, u(e, 121), t); + }, o.a = 0, w(Kc, "NodePositionProcessor", 1922), b(1912, 1, vt, vjn), o.Kf = function(e, t) { + RIe(this, u(e, 121), t); + }, w(Kc, "RootProcessor", 1912), b(1942, 1, vt, g4n), o.Kf = function(e, t) { + $9e(u(e, 121), t); + }, w(Kc, "Untreeifyer", 1942), b(392, 22, { 3: 1, 34: 1, 22: 1, 392: 1 }, eL); + var Lj, nq, gln, pln = we(Gy, "EdgeRoutingMode", 392, ke, Q2e, f0e), dre, Nj, Dv, eq, mln, vln, tq, iq, kln, rq, yln, cq, c9, uq, $I, xI, Js, jf, Lv, u9, o9, j1, jln, bre, oq, Ma, $j, xj; + b(862, 1, ms, h8n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Prn), ""), gVn), "Turns on Tree compaction which decreases the size of the whole tree by placing nodes of multiple levels in one large level"), (_n(), !1)), (l1(), yi)), Xt), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Irn), ""), "Edge End Texture Length"), "Should be set to the length of the texture at the end of an edge. This value can be used to improve the Edge Routing."), 7), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Orn), ""), "Tree Level"), "The index for the tree level the node is in"), Y(0)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Drn), ""), gVn), "When set to a positive number this option will force the algorithm to place the node to the specified position within the trees layer if weighting is set to constraint"), Y(-1)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Lrn), ""), "Weighting of Nodes"), "Which weighting to use when computing a node order."), Mln), Pt), Fln), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Nrn), ""), "Edge Routing Mode"), "Chooses an Edge Routing algorithm."), Eln), Pt), pln), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), $rn), ""), "Search Order"), "Which search order to use when computing a spanning tree."), Cln), Pt), Rln), jn(xn)))), czn((new d8n(), e)); + }; + var wre, gre, pre, Eln, mre, vre, Cln, kre, yre, Mln; + w(Gy, "MrTreeMetaDataProvider", 862), b(1006, 1, ms, d8n), o.hf = function(e) { + czn(e); + }; + var jre, Tln, Aln, vb, Sln, Pln, sq, Ere, Cre, Mre, Tre, Are, Sre, Pre, Iln, Oln, Dln, Ire, O2, FI, Lln, Ore, Nln, fq, Dre, Lre, Nre, $ln, $re, Sh, xln; + w(Gy, "MrTreeOptions", 1006), b(1007, 1, {}, p4n), o.sf = function() { + var e; + return e = new UAn(), e; + }, o.tf = function(e) { + }, w(Gy, "MrTreeOptions/MrtreeFactory", 1007), b(353, 22, { 3: 1, 34: 1, 22: 1, 353: 1 }, mC); + var hq, BI, lq, aq, Fln = we(Gy, "OrderWeighting", 353, ke, c3e, h0e), xre; + b(433, 22, { 3: 1, 34: 1, 22: 1, 433: 1 }, oX); + var Bln, dq, Rln = we(Gy, "TreeifyingOrder", 433, ke, n2e, l0e), Fre; + b(1486, 1, kr, b8n), o.rg = function(e) { + return u(e, 121), Bre; + }, o.Kf = function(e, t) { + wve(this, u(e, 121), t); + }; + var Bre; + w("org.eclipse.elk.alg.mrtree.p1treeify", "DFSTreeifyer", 1486), b(1487, 1, kr, w8n), o.rg = function(e) { + return u(e, 121), Rre; + }, o.Kf = function(e, t) { + jAe(this, u(e, 121), t); + }; + var Rre; + w(Jm, "NodeOrderer", 1487), b(1494, 1, {}, Hse), o.td = function(e) { + return JSn(e); + }, w(Jm, "NodeOrderer/0methodref$lambda$6$Type", 1494), b(1488, 1, De, L4n), o.Mb = function(e) { + return _p(), on(un(v(u(e, 40), (pt(), Ma)))); + }, w(Jm, "NodeOrderer/lambda$0$Type", 1488), b(1489, 1, De, N4n), o.Mb = function(e) { + return _p(), u(v(u(e, 40), (lc(), O2)), 17).a < 0; + }, w(Jm, "NodeOrderer/lambda$1$Type", 1489), b(1490, 1, De, ykn), o.Mb = function(e) { + return Ume(this.a, u(e, 40)); + }, w(Jm, "NodeOrderer/lambda$2$Type", 1490), b(1491, 1, De, kkn), o.Mb = function(e) { + return Bpe(this.a, u(e, 40)); + }, w(Jm, "NodeOrderer/lambda$3$Type", 1491), b(1492, 1, Ne, $4n), o.Ne = function(e, t) { + return dme(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Jm, "NodeOrderer/lambda$4$Type", 1492), b(1493, 1, De, x4n), o.Mb = function(e) { + return _p(), u(v(u(e, 40), (pt(), iq)), 17).a != 0; + }, w(Jm, "NodeOrderer/lambda$5$Type", 1493), b(1495, 1, kr, a8n), o.rg = function(e) { + return u(e, 121), Kre; + }, o.Kf = function(e, t) { + OSe(this, u(e, 121), t); + }, o.b = 0; + var Kre; + w("org.eclipse.elk.alg.mrtree.p3place", "NodePlacer", 1495), b(1496, 1, kr, l8n), o.rg = function(e) { + return u(e, 121), _re; + }, o.Kf = function(e, t) { + aSe(u(e, 121), t); + }; + var _re, SNe = w(po, "EdgeRouter", 1496); + b(1498, 1, Ne, D4n), o.Ne = function(e, t) { + return Ec(u(e, 17).a, u(t, 17).a); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/0methodref$compare$Type", 1498), b(1503, 1, {}, v4n), o.Ye = function(e) { + return $(R(e)); + }, w(po, "EdgeRouter/1methodref$doubleValue$Type", 1503), b(1505, 1, Ne, k4n), o.Ne = function(e, t) { + return bt($(R(e)), $(R(t))); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/2methodref$compare$Type", 1505), b(1507, 1, Ne, y4n), o.Ne = function(e, t) { + return bt($(R(e)), $(R(t))); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/3methodref$compare$Type", 1507), b(1509, 1, {}, m4n), o.Ye = function(e) { + return $(R(e)); + }, w(po, "EdgeRouter/4methodref$doubleValue$Type", 1509), b(1511, 1, Ne, j4n), o.Ne = function(e, t) { + return bt($(R(e)), $(R(t))); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/5methodref$compare$Type", 1511), b(1513, 1, Ne, E4n), o.Ne = function(e, t) { + return bt($(R(e)), $(R(t))); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/6methodref$compare$Type", 1513), b(1497, 1, {}, C4n), o.Kb = function(e) { + return kl(), u(v(u(e, 40), (lc(), Sh)), 17); + }, w(po, "EdgeRouter/lambda$0$Type", 1497), b(1508, 1, {}, M4n), o.Kb = function(e) { + return Y1e(u(e, 40)); + }, w(po, "EdgeRouter/lambda$11$Type", 1508), b(1510, 1, {}, iMn), o.Kb = function(e) { + return Tbe(this.b, this.a, u(e, 40)); + }, o.a = 0, o.b = 0, w(po, "EdgeRouter/lambda$13$Type", 1510), b(1512, 1, {}, rMn), o.Kb = function(e) { + return Z1e(this.b, this.a, u(e, 40)); + }, o.a = 0, o.b = 0, w(po, "EdgeRouter/lambda$15$Type", 1512), b(1514, 1, Ne, T4n), o.Ne = function(e, t) { + return l9e(u(e, 65), u(t, 65)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/lambda$17$Type", 1514), b(1515, 1, Ne, A4n), o.Ne = function(e, t) { + return a9e(u(e, 65), u(t, 65)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/lambda$18$Type", 1515), b(1516, 1, Ne, S4n), o.Ne = function(e, t) { + return b9e(u(e, 65), u(t, 65)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/lambda$19$Type", 1516), b(1499, 1, De, jkn), o.Mb = function(e) { + return w2e(this.a, u(e, 40)); + }, o.a = 0, w(po, "EdgeRouter/lambda$2$Type", 1499), b(1517, 1, Ne, P4n), o.Ne = function(e, t) { + return d9e(u(e, 65), u(t, 65)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/lambda$20$Type", 1517), b(1500, 1, Ne, I4n), o.Ne = function(e, t) { + return abe(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/lambda$3$Type", 1500), b(1501, 1, Ne, O4n), o.Ne = function(e, t) { + return dbe(u(e, 40), u(t, 40)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "EdgeRouter/lambda$4$Type", 1501), b(1502, 1, {}, F4n), o.Kb = function(e) { + return nae(u(e, 40)); + }, w(po, "EdgeRouter/lambda$5$Type", 1502), b(1504, 1, {}, cMn), o.Kb = function(e) { + return Abe(this.b, this.a, u(e, 40)); + }, o.a = 0, o.b = 0, w(po, "EdgeRouter/lambda$7$Type", 1504), b(1506, 1, {}, uMn), o.Kb = function(e) { + return eae(this.b, this.a, u(e, 40)); + }, o.a = 0, o.b = 0, w(po, "EdgeRouter/lambda$9$Type", 1506), b(675, 1, { 675: 1 }, BRn), o.e = 0, o.f = !1, o.g = !1, w(po, "MultiLevelEdgeNodeNodeGap", 675), b(1943, 1, Ne, B4n), o.Ne = function(e, t) { + return M2e(u(e, 240), u(t, 240)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "MultiLevelEdgeNodeNodeGap/lambda$0$Type", 1943), b(1944, 1, Ne, R4n), o.Ne = function(e, t) { + return T2e(u(e, 240), u(t, 240)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(po, "MultiLevelEdgeNodeNodeGap/lambda$1$Type", 1944); + var D2; + b(501, 22, { 3: 1, 34: 1, 22: 1, 501: 1, 188: 1, 196: 1 }, sX), o.dg = function() { + return CBn(this); + }, o.qg = function() { + return CBn(this); + }; + var RI, L2, Kln = we(xrn, "RadialLayoutPhases", 501, ke, Xge, a0e), Hre; + b(1113, 205, yd, wEn), o.rf = function(e, t) { + var i, r, c, s, f, h; + if (i = fqn(this, e), t.Ug("Radial layout", i.c.length), on(un(z(e, (oa(), Qln)))) || X7((r = new Xv((c0(), new Qd(e))), r)), h = gye(e), ht(e, (Tg(), D2), h), !h) + throw M(new Gn("The given graph is not a tree!")); + for (c = $(R(z(e, HI))), c == 0 && (c = q_n(e)), ht(e, HI, c), f = new C(fqn(this, e)); f.a < f.c.c.length; ) + s = u(E(f), 47), s.Kf(e, t.eh(1)); + t.Vg(); + }, w(xrn, "RadialLayoutProvider", 1113), b(556, 1, Ne, XE), o.Ne = function(e, t) { + return YAe(this.a, this.b, u(e, 27), u(t, 27)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, o.a = 0, o.b = 0, w(xrn, "RadialUtil/lambda$0$Type", 556), b(1395, 1, vt, K4n), o.Kf = function(e, t) { + qDe(u(e, 27), t); + }, w(Rrn, "CalculateGraphSize", 1395), b(1396, 1, vt, _4n), o.Kf = function(e, t) { + lIe(u(e, 27)); + }, w(Rrn, "EdgeAngleCalculator", 1396), b(368, 22, { 3: 1, 34: 1, 22: 1, 368: 1, 196: 1 }, d7), o.dg = function() { + switch (this.g) { + case 0: + return new X4n(); + case 1: + return new H4n(); + case 2: + return new V4n(); + case 3: + return new K4n(); + case 4: + return new _4n(); + default: + throw M(new Gn(cR + (this.f != null ? this.f : "" + this.g))); + } + }; + var bq, wq, gq, pq, mq, qre = we(Rrn, uR, 368, ke, G3e, d0e), Ure; + b(653, 1, {}), o.e = 1, o.g = 0, w(UR, "AbstractRadiusExtensionCompaction", 653), b(1834, 653, {}, hAn), o.Cg = function(e) { + var t, i, r, c, s, f, h, l, a; + for (this.c = u(z(e, (Tg(), D2)), 27), ffe(this, this.c), this.d = Ax(u(z(e, (oa(), Fj)), 300)), l = u(z(e, kq), 17), l && r9n(this, l.a), h = R(z(e, (He(), qd))), vG(this, (Jn(h), h)), a = aw(this.c), this.d && this.d.Gg(a), gSe(this, a), f = new Ku(A(T(Ye, 1), kVn, 27, 0, [this.c])), i = 0; i < 2; i++) + for (t = 0; t < a.c.length; t++) + c = new Ku(A(T(Ye, 1), kVn, 27, 0, [(Ln(t, a.c.length), u(a.c[t], 27))])), s = t < a.c.length - 1 ? (Ln(t + 1, a.c.length), u(a.c[t + 1], 27)) : (Ln(0, a.c.length), u(a.c[0], 27)), r = t == 0 ? u(sn(a, a.c.length - 1), 27) : (Ln(t - 1, a.c.length), u(a.c[t - 1], 27)), KKn(this, (Ln(t, a.c.length), u(a.c[t], 27), f), r, s, c); + }, w(UR, "AnnulusWedgeCompaction", 1834), b(1393, 1, vt, H4n), o.Kf = function(e, t) { + fve(u(e, 27), t); + }, w(UR, "GeneralCompactor", 1393), b(1833, 653, {}, q4n), o.Cg = function(e) { + var t, i, r, c; + i = u(z(e, (Tg(), D2)), 27), this.f = i, this.b = Ax(u(z(e, (oa(), Fj)), 300)), c = u(z(e, kq), 17), c && r9n(this, c.a), r = R(z(e, (He(), qd))), vG(this, (Jn(r), r)), t = aw(i), this.b && this.b.Gg(t), m_n(this, t); + }, o.a = 0, w(UR, "RadialCompaction", 1833), b(1842, 1, {}, U4n), o.Dg = function(e) { + var t, i, r, c, s, f; + for (this.a = e, t = 0, f = aw(e), r = 0, s = new C(f); s.a < s.c.c.length; ) + for (c = u(E(s), 27), ++r, i = r; i < f.c.length; i++) + DPe(this, c, (Ln(i, f.c.length), u(f.c[i], 27))) && (t += 1); + return t; + }, w(Krn, "CrossingMinimizationPosition", 1842), b(1840, 1, {}, G4n), o.Dg = function(e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m; + for (r = 0, i = new ie(ce(Al(e).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 74), h = Gr(u(L((!t.c && (t.c = new Nn(he, t, 5, 8)), t.c), 0), 84)), a = h.i + h.g / 2, d = h.j + h.f / 2, c = e.i + e.g / 2, s = e.j + e.f / 2, g = new Li(), g.a = a - c, g.b = d - s, f = new V(g.a, g.b), vm(f, e.g, e.f), g.a -= f.a, g.b -= f.b, c = a - g.a, s = d - g.b, l = new V(g.a, g.b), vm(l, h.g, h.f), g.a -= l.a, g.b -= l.b, a = c + g.a, d = s + g.b, p = a - c, m = d - s, r += y.Math.sqrt(p * p + m * m); + return r; + }, w(Krn, "EdgeLengthOptimization", 1840), b(1841, 1, {}, z4n), o.Dg = function(e) { + var t, i, r, c, s, f, h, l, a, d, g; + for (r = 0, i = new ie(ce(Al(e).a.Kc(), new En())); pe(i); ) + t = u(fe(i), 74), h = Gr(u(L((!t.c && (t.c = new Nn(he, t, 5, 8)), t.c), 0), 84)), l = h.i + h.g / 2, a = h.j + h.f / 2, c = u(z(h, (He(), N3)), 8), s = e.i + c.a + e.g / 2, f = e.j + c.b + e.f, d = l - s, g = a - f, r += y.Math.sqrt(d * d + g * g); + return r; + }, w(Krn, "EdgeLengthPositionOptimization", 1841), b(1392, 653, vt, X4n), o.Kf = function(e, t) { + wEe(this, u(e, 27), t); + }, w("org.eclipse.elk.alg.radial.intermediate.overlaps", "RadiusExtensionOverlapRemoval", 1392), b(1394, 1, vt, V4n), o.Kf = function(e, t) { + fwe(u(e, 27), t); + }, w("org.eclipse.elk.alg.radial.intermediate.rotation", "GeneralRotator", 1394), b(434, 22, { 3: 1, 34: 1, 22: 1, 434: 1 }, fX); + var _ln, vq, Hln = we(l8, "AnnulusWedgeCriteria", 434, ke, e2e, w0e), Gre; + b(393, 22, { 3: 1, 34: 1, 22: 1, 393: 1 }, tL); + var KI, qln, Uln, Gln = we(l8, _tn, 393, ke, cpe, b0e), zre; + b(863, 1, ms, g8n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), _rn), ""), "Center On Root"), "Centers the layout on the root of the tree i.e. so that the central node is also the center node of the final layout. This introduces additional whitespace."), (_n(), !1)), (l1(), yi)), Xt), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Hrn), ""), "Order ID"), "The id can be used to define an order for nodes of one radius. This can be used to sort them in the layer accordingly."), Y(0)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), qrn), ""), "Radius"), "The radius option can be used to set the initial radius for the radial layouter."), 0), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), LS), ""), "Rotate"), "The rotate option determines whether a rotation of the layout should be performed."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), zR), ""), yVn), "With the compacter option it can be determined how compaction on the graph is done. It can be chosen between none, the radial compaction or the compaction of wedges separately."), zln), Pt), Gln), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), XR), ""), "Compaction Step Size"), "Determine the size of steps with which the compaction is done. Step size 1 correlates to a compaction of 1 pixel per Iteration."), Y(1)), Zr), Gi), jn(xn)))), ri(e, XR, zR, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Urn), ""), "Sorter"), "Sort the nodes per radius according to the sorting algorithm. The strategies are none, by the given order id, or sorting them by polar coordinates."), Vln), Pt), f1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Grn), ""), "Annulus Wedge Criteria"), "Determine how the wedge for the node placement is calculated. It can be chosen between wedge determination by the number of leaves or by the maximum sum of diagonals."), Wln), Pt), Hln), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), zrn), ""), "Translation Optimization"), "Find the optimal translation of the nodes of the first radii according to this criteria. For example edge crossings can be minimized."), Xln), Pt), u1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), VR), Vrn), "Target Angle"), "The angle in radians that the layout should be rotated to after layout."), 0), Qi), si), jn(xn)))), ri(e, VR, LS, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), WR), Vrn), "Additional Wedge Space"), "If set to true, modifies the target angle by rotating further such that space is left for an edge to pass in between the nodes. This option should only be used in conjunction with top-down layout."), !1), yi), Xt), jn(xn)))), ri(e, WR, LS, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Xrn), Vrn), "Outgoing Edge Angles"), "Calculate the required angle of connected nodes to leave space for an incoming edge. This option should only be used in conjunction with top-down layout."), !1), yi), Xt), jn(xn)))), YGn((new p8n(), e)); + }; + var Xre, Vre, Wre, zln, Jre, Xln, Qre, Yre, Zre, nce, ece, tce, ice, Vln, rce, Wln; + w(l8, "RadialMetaDataProvider", 863), b(1008, 1, ms, p8n), o.hf = function(e) { + YGn(e); + }; + var Jln, kq, yq, cce, uce, oce, sce, Qln, Yln, _I, fce, hce, HI, Zln, n1n, e1n, jq, Fj, lce, t1n; + w(l8, "RadialOptions", 1008), b(1009, 1, {}, W4n), o.sf = function() { + var e; + return e = new wEn(), e; + }, o.tf = function(e) { + }, w(l8, "RadialOptions/RadialFactory", 1009), b(354, 22, { 3: 1, 34: 1, 22: 1, 354: 1 }, vC); + var i1n, r1n, c1n, Eq, u1n = we(l8, "RadialTranslationStrategy", 354, ke, u3e, g0e), ace; + b(300, 22, { 3: 1, 34: 1, 22: 1, 300: 1 }, iL); + var o1n, Cq, s1n, f1n = we(l8, "SortingStrategy", 300, ke, upe, p0e), dce; + b(1476, 1, kr, J4n), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + BEe(this, u(e, 27), t); + }, o.c = 0, w("org.eclipse.elk.alg.radial.p1position", "EadesRadial", 1476), b(1838, 1, {}, Q4n), o.Eg = function(e) { + return kRn(e); + }, w(jVn, "AnnulusWedgeByLeafs", 1838), b(1839, 1, {}, Y4n), o.Eg = function(e) { + return DKn(this, e); + }, w(jVn, "AnnulusWedgeByNodeSpace", 1839), b(1477, 1, kr, Z4n), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + W5e(this, u(e, 27), t); + }, w("org.eclipse.elk.alg.radial.p2routing", "StraightLineEdgeRouter", 1477), b(826, 1, {}, oz), o.Fg = function(e) { + }, o.Gg = function(e) { + Oyn(this, e); + }, w(Wrn, "IDSorter", 826), b(1837, 1, Ne, nmn), o.Ne = function(e, t) { + return hve(u(e, 27), u(t, 27)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Wrn, "IDSorter/lambda$0$Type", 1837), b(1836, 1, {}, Mxn), o.Fg = function(e) { + pDn(this, e); + }, o.Gg = function(e) { + var t; + e.dc() || (this.e || (t = hPn(u(e.Xb(0), 27)), pDn(this, t)), Oyn(this.e, e)); + }, w(Wrn, "PolarCoordinateSorter", 1836), b(445, 22, { 3: 1, 34: 1, 22: 1, 445: 1 }, rL); + var Bj, qI, Mq, h1n = we(TVn, "RectPackingLayoutPhases", 445, ke, ipe, m0e), bce; + b(1118, 205, yd, pEn), o.rf = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + if (t.Ug("Rectangle Packing", 1), g = u(z(e, (Rf(), h9)), 107), l = on(un(z(e, xce))), d = $(R(z(e, l9))), kn = on(un(z(e, j1n))), N = (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a), on(un(z(e, Dq))) || X7((c = new Xv((c0(), new Qd(e))), c)), yn = !1, kn && N.i >= 3) + for (X = u(L(N, 0), 27), tn = u(L(N, 1), 27), s = 0; s + 2 < N.i; ) + if (_ = X, X = tn, tn = u(L(N, s + 2), 27), _.f >= X.f + tn.f + d || tn.f >= _.f + X.f + d) { + yn = !0; + break; + } else + ++s; + else + yn = !0; + if (!yn) { + for (p = N.i, h = new ne(N); h.e != h.i.gc(); ) + f = u(ue(h), 27), ht(f, (He(), Jj), Y(p)), --p; + RUn(e, new op()), t.Vg(); + return; + } + for (i = (H7(this.a), hf(this.a, (XT(), Bj), u(z(e, T1n), 188)), hf(this.a, qI, u(z(e, k1n), 188)), hf(this.a, Mq, u(z(e, E1n), 188)), TX(this.a, (Fn = new ii(), Ke(Fn, Bj, (rA(), Sq)), Ke(Fn, qI, Aq), on(un(z(e, m1n))) && Ke(Fn, Bj, Tq), Fn)), gy(this.a, e)), a = 1 / i.c.length, k = new C(i); k.a < k.c.c.length; ) { + if (m = u(E(k), 47), t.$g()) + return; + m.Kf(e, t.eh(a)); + } + for (S = 0, j = 0, O = new ne(N); O.e != O.i.gc(); ) + I = u(ue(O), 27), S = y.Math.max(S, I.i + I.g), j = y.Math.max(j, I.j + I.f); + Mnn(e, new V($(R(z(e, (_h(), O3)))), $(R(z(e, Nv)))), new V(S, j)), Lve(N, g), l || G0(e, $(R(z(e, O3))) + (g.b + g.c), $(R(z(e, Nv))) + (g.d + g.a), !1, !0), on(un(z(e, Dq))) || X7((r = new Xv((c0(), new Qd(e))), r)), t.Vg(); + }, w(TVn, "RectPackingLayoutProvider", 1118), b(1518, 1, vt, emn), o.Kf = function(e, t) { + aIe(u(e, 27), t); + }, w(NS, "InteractiveNodeReorderer", 1518), b(1519, 1, Ne, tmn), o.Ne = function(e, t) { + return v6e(u(e, 27), u(t, 27)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(NS, "InteractiveNodeReorderer/lambda$0$Type", 1519), b(456, 22, { 3: 1, 34: 1, 22: 1, 456: 1, 196: 1 }, cL), o.dg = function() { + switch (this.g) { + case 0: + return new emn(); + case 1: + return new rmn(); + case 2: + return new imn(); + } + return null; + }; + var Tq, Aq, Sq, wce = we(NS, uR, 456, ke, rpe, v0e), gce; + b(1521, 1, vt, imn), o.Kf = function(e, t) { + L8e(u(e, 27), t); + }, w(NS, "MinSizePostProcessor", 1521), b(1520, 1, vt, rmn), o.Kf = function(e, t) { + O6e(u(e, 27), t); + }, w(NS, "MinSizePreProcessor", 1520); + var s9, Nv, O3, pce, mce, UI, Pq, Iq, f9, GI, Xw; + b(394, 22, { 3: 1, 34: 1, 22: 1, 394: 1 }, uL); + var l1n, a1n, Oq, d1n = we(JR, "OptimizationGoal", 394, ke, tpe, k0e), vce; + b(867, 1, ms, m8n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Jrn), ""), "Try box layout first"), "Whether one should check whether the regions are stackable to see whether box layout would do the job. For example, nodes with the same height are not stackable inside a row. Therefore, box layout will perform better and faster."), (_n(), !1)), (l1(), yi)), Xt), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Qrn), ""), "Current position of a node in the order of nodes"), "The rectangles are ordered. Normally according to their definition the the model. This option specifies the current position of a node."), Y(-1)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Yrn), ""), "Desired index of node"), "The rectangles are ordered. Normally according to their definition the the model. This option allows to specify a desired position that has preference over the original position."), Y(-1)), Zr), Gi), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Zrn), ""), "In new Row"), "If set to true this node begins in a new row. Consequently this node cannot be moved in a previous layer during compaction. Width approximation does does not take this into account."), !1), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ncn), QR), "Width Approximation Strategy"), "Strategy for finding an initial width of the drawing."), g1n), Pt), P1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ecn), QR), "Target Width"), "Option to place the rectangles in the given target width instead of approximating the width using the desired aspect ratio. The padding is not included in this. Meaning a drawing will have width of targetwidth + horizontal padding."), -1), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), tcn), QR), "Optimization Goal"), "Optimization goal for approximation of the bounding box given by the first iteration. Determines whether layout is sorted by the maximum scaling, aspect ratio, or area. Depending on the strategy the aspect ratio might be nearly ignored."), w1n), Pt), d1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), icn), QR), "Shift Last Placed."), "When placing a rectangle behind or below the last placed rectangle in the first iteration, it is sometimes possible to shift the rectangle further to the left or right, resulting in less whitespace. True (default) enables the shift and false disables it. Disabling the shift produces a greater approximated area by the first iteration and a layout, when using ONLY the first iteration (default not the case), where it is sometimes impossible to implement a size transformation of rectangles that will fill the bounding box and eliminate empty spaces."), !0), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), rcn), "packing"), AVn), "Strategy for finding an initial placement on nodes."), b1n), Pt), D1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ccn), SVn), "Row Height Reevaluation"), "During the compaction step the height of a row is normally not changed. If this options is set, the blocks of other rows might be added if they exceed the row height. If this is the case the whole row has to be packed again to be optimal regarding the new row height. This option should, therefore, be used with care since it might be computation heavy."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ucn), SVn), "Compaction iterations"), "Defines the number of compaction iterations. E.g. if set to 2 the width is initially approximated, then the drawing is compacted and based on the resulting drawing the target width is decreased or increased and a second compaction step is executed and the result compared to the first one. The best run is used based on the scale measure."), Y(1)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), ocn), "whiteSpaceElimination"), "White Space Approximation Strategy"), "Strategy for expanding nodes such that whitespace in the parent is eliminated."), Pt), $1n), jn(xn)))), wzn((new v8n(), e)); + }; + var kce, yce, jce, Ece, Cce, Mce, b1n, Tce, Ace, Sce, Pce, w1n, Ice, g1n, Oce; + w(JR, "RectPackingMetaDataProvider", 867), b(1016, 1, ms, v8n), o.hf = function(e) { + wzn(e); + }; + var zI, Dce, p1n, Rj, m1n, Lce, Kj, Nce, $ce, xce, Fce, Bce, Dq, v1n, Lq, k1n, h9, y1n, Rce, l9, j1n, E1n, C1n, M1n, T1n, Nq; + w(JR, "RectPackingOptions", 1016), b(1017, 1, {}, cmn), o.sf = function() { + var e; + return e = new pEn(), e; + }, o.tf = function(e) { + }, w(JR, "RectPackingOptions/RectpackingFactory", 1017), b(1705, 1, {}, kSn), o.a = 0, o.c = !1, w(Qm, "AreaApproximation", 1705); + var A1n = xt(Qm, "BestCandidateFilter"); + b(673, 1, { 535: 1 }, BO), o.Hg = function(e, t, i) { + var r, c, s, f, h, l; + for (l = new Z(), s = St, h = new C(e); h.a < h.c.c.length; ) + f = u(E(h), 238), s = y.Math.min(s, (f.c + (i.b + i.c)) * (f.b + (i.d + i.a))); + for (c = new C(e); c.a < c.c.c.length; ) + r = u(E(c), 238), (r.c + (i.b + i.c)) * (r.b + (i.d + i.a)) == s && Kn(l.c, r); + return l; + }, w(Qm, "AreaFilter", 673), b(674, 1, { 535: 1 }, RO), o.Hg = function(e, t, i) { + var r, c, s, f, h, l; + for (h = new Z(), l = St, f = new C(e); f.a < f.c.c.length; ) + s = u(E(f), 238), l = y.Math.min(l, y.Math.abs((s.c + (i.b + i.c)) / (s.b + (i.d + i.a)) - t)); + for (c = new C(e); c.a < c.c.c.length; ) + r = u(E(c), 238), y.Math.abs((r.c + (i.b + i.c)) / (r.b + (i.d + i.a)) - t) == l && Kn(h.c, r); + return h; + }, w(Qm, "AspectRatioFilter", 674), b(1469, 1, kr, umn), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + ZTe(u(e, 27), t); + }, w(Qm, "GreedyWidthApproximator", 1469), b(672, 1, { 535: 1 }, KO), o.Hg = function(e, t, i) { + var r, c, s, f, h, l; + for (l = new Z(), s = li, h = new C(e); h.a < h.c.c.length; ) + f = u(E(h), 238), s = y.Math.max(s, cM(f.c + (i.b + i.c), f.b + (i.d + i.a), f.a)); + for (c = new C(e); c.a < c.c.c.length; ) + r = u(E(c), 238), cM(r.c + (i.b + i.c), r.b + (i.d + i.a), r.a) == s && Kn(l.c, r); + return l; + }, w(Qm, "ScaleMeasureFilter", 672), b(1470, 1, kr, omn), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + REe(u(e, 27), t); + }, w(Qm, "TargetWidthWidthApproximator", 1470), b(491, 22, { 3: 1, 34: 1, 22: 1, 491: 1, 188: 1, 196: 1 }, hX), o.dg = function() { + return _Kn(this); + }, o.qg = function() { + return _Kn(this); + }; + var $q, S1n, P1n = we(Qm, "WidthApproximationStrategy", 491, ke, Yge, y0e), Kce; + b(1471, 1, kr, smn), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + ZDe(this, u(e, 27), t); + }, w($S, "Compactor", 1471), b(1473, 1, kr, fmn), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + OTe(u(e, 27), t); + }, w($S, "NoPlacement", 1473), b(439, 22, { 3: 1, 34: 1, 22: 1, 439: 1, 188: 1, 196: 1 }, oL), o.dg = function() { + return eBn(this); + }, o.qg = function() { + return eBn(this); + }; + var xq, I1n, O1n, D1n = we($S, "PackingStrategy", 439, ke, epe, C0e), _ce; + b(810, 1, {}, bX), o.a = 0, o.b = 0, o.c = 0, o.d = St, o.e = 0, o.f = St, w($S, "RowFillingAndCompaction", 810), b(1472, 1, kr, hmn), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + wOe(u(e, 27), t); + }, w($S, "SimplePlacement", 1472), b(1474, 1, kr, lmn), o.rg = function(e) { + return u(e, 27), null; + }, o.Kf = function(e, t) { + this.Ig(u(e, 27), t); + }, o.Ig = function(e, t) { + NHn(e, t); + }, w(scn, "EqualWhitespaceEliminator", 1474), b(1475, 1474, kr, amn), o.Ig = function(e, t) { + var i, r, c, s, f; + t.Ug("To Aspect Ratio Whitesapce Eliminator", 1), f = $(R(z(e, (_h(), O3)))), s = $(R(z(e, Nv))), c = $(R(z(e, (Rf(), zI)))), i = $(R(z(e, s9))), r = f / s, r < c ? (f = s * c, ht(e, O3, f)) : (i += f / c - s, ht(e, s9, i), ht(e, Nv, s + i)), NHn(e, t), t.Vg(); + }, w(scn, "ToAspectratioNodeExpander", 1475), b(492, 22, { 3: 1, 34: 1, 22: 1, 492: 1, 188: 1, 196: 1 }, lX), o.dg = function() { + return Pxn(this); + }, o.qg = function() { + return Pxn(this); + }; + var L1n, N1n, $1n = we(scn, "WhiteSpaceEliminationStrategy", 492, ke, Zge, M0e), Hce; + b(172, 1, { 172: 1 }, U$), o.a = 0, o.c = !1, o.d = 0, o.e = 0, o.f = 0, o.g = 0, o.i = 0, o.k = !1, o.o = St, o.p = St, o.r = 0, o.s = 0, o.t = 0, w(zy, "Block", 172), b(209, 1, { 209: 1 }, NM), o.a = 0, o.b = 0, o.d = 0, o.e = 0, o.f = 0, w(zy, "BlockRow", 209), b(315, 1, { 315: 1 }, rJ), o.b = 0, o.c = 0, o.d = 0, o.e = 0, o.f = 0, w(zy, "BlockStack", 315), b(238, 1, { 238: 1 }, rW, rZ), o.a = 0, o.b = 0, o.c = 0, o.d = 0, o.e = 0, o.g = 0; + var PNe = w(zy, "DrawingData", 238); + b(373, 22, { 3: 1, 34: 1, 22: 1, 373: 1 }, b7); + var D3, N2, a9, d9, _j, qce = we(zy, "DrawingDataDescriptor", 373, ke, z3e, T0e), Uce; + b(186, 1, { 186: 1 }, bJ), o.b = 0, o.c = 0, o.e = 0, o.f = 0, w(zy, "RectRow", 186), b(763, 1, {}, wY), o.j = 0, w(Ew, RXn, 763), b(1209, 1, {}, dmn), o.af = function(e) { + return J1(e.a, e.b); + }, w(Ew, Xtn, 1209), b(1210, 1, {}, Ekn), o.af = function(e) { + return t4e(this.a, e); + }, w(Ew, KXn, 1210), b(1211, 1, {}, Ckn), o.af = function(e) { + return j9e(this.a, e); + }, w(Ew, _Xn, 1211), b(1212, 1, {}, Mkn), o.af = function(e) { + return u6e(this.a, e); + }, w(Ew, "ElkGraphImporter/lambda$3$Type", 1212), b(1213, 1, {}, Tkn), o.af = function(e) { + return sCe(this.a, e); + }, w(Ew, HXn, 1213), b(1115, 205, yd, mEn), o.rf = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m; + for (Lf(e, (Wk(), QI)) && (m = Oe(z(e, (Dx(), tan))), s = TF(z4(), m), s && (f = u(z7(s.f), 205), f.rf(e, t.eh(1)))), ht(e, qq, (ik(), JI)), ht(e, Uq, (Jk(), Hq)), ht(e, Gq, (Mk(), YI)), h = u(z(e, (Dx(), Z1n)), 17).a, t.Ug("Overlap removal", 1), on(un(z(e, hue))), l = new ni(), a = new Akn(l), r = new wY(), i = gzn(r, e), d = !0, c = 0; c < h && d; ) { + if (on(un(z(e, nan)))) { + if (l.a.$b(), Zje(new jTn(a), i.i), l.a.gc() == 0) + break; + i.e = l; + } + for (H7(this.b), hf(this.b, ($k(), XI), (s6(), Hj)), hf(this.b, VI, i.g), hf(this.b, WI, (tC(), Rq)), this.a = gy(this.b, i), p = new C(this.a); p.a < p.c.c.length; ) + g = u(E(p), 47), g.Kf(i, t.eh(1)); + gke(r, i), d = on(un(v(i, (J4(), oon)))), ++c; + } + PGn(r, i), t.Vg(); + }, w(Ew, "OverlapRemovalLayoutProvider", 1115), b(1116, 1, {}, Akn), w(Ew, "OverlapRemovalLayoutProvider/lambda$0$Type", 1116), b(444, 22, { 3: 1, 34: 1, 22: 1, 444: 1 }, sL); + var XI, VI, WI, Fq = we(Ew, "SPOrEPhases", 444, ke, spe, S0e), Gce; + b(1219, 1, {}, vEn), w(Ew, "ShrinkTree", 1219), b(1117, 205, yd, yjn), o.rf = function(e, t) { + var i, r, c, s, f; + Lf(e, (Wk(), QI)) && (f = Oe(z(e, QI)), c = TF(z4(), f), c && (s = u(z7(c.f), 205), s.rf(e, t.eh(1)))), r = new wY(), i = gzn(r, e), LMe(this.a, i, t.eh(1)), PGn(r, i); + }, w(Ew, "ShrinkTreeLayoutProvider", 1117), b(306, 137, { 3: 1, 306: 1, 96: 1, 137: 1 }, fOn), o.c = !1, w("org.eclipse.elk.alg.spore.graph", "Graph", 306), b(490, 22, { 3: 1, 34: 1, 22: 1, 490: 1, 188: 1, 196: 1 }, wCn), o.dg = function() { + return CFn(this); + }, o.qg = function() { + return CFn(this); + }; + var Bq, x1n = we(Cw, _tn, 490, ke, tge, A0e), zce; + b(558, 22, { 3: 1, 34: 1, 22: 1, 558: 1, 188: 1, 196: 1 }, bAn), o.dg = function() { + return new nG(); + }, o.qg = function() { + return new nG(); + }; + var Rq, Xce = we(Cw, "OverlapRemovalStrategy", 558, ke, ige, P0e), Vce; + b(438, 22, { 3: 1, 34: 1, 22: 1, 438: 1 }, aX); + var JI, Kq, F1n = we(Cw, "RootSelection", 438, ke, i2e, I0e), Wce; + b(324, 22, { 3: 1, 34: 1, 22: 1, 324: 1 }, w7); + var B1n, _q, Hq, R1n, K1n, _1n = we(Cw, "SpanningTreeCostFunction", 324, ke, X3e, O0e), Jce; + b(1014, 1, ms, k8n), o.hf = function(e) { + cGn(e); + }; + var H1n, q1n, Qce, Yce, U1n, G1n, qq, Uq, Gq, Zce, nue, QI; + w(Cw, "SporeCompactionOptions", 1014), b(1015, 1, {}, bmn), o.sf = function() { + var e; + return e = new yjn(), e; + }, o.tf = function(e) { + }, w(Cw, "SporeCompactionOptions/SporeCompactionFactory", 1015), b(866, 1, ms, y8n), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), YR), ""), "Underlying Layout Algorithm"), "A layout algorithm that is applied to the graph before it is compacted. If this is null, nothing is applied before compaction."), (l1(), $2)), fn), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), eK), "structure"), "Structure Extraction Strategy"), "This option defines what kind of triangulation or other partitioning of the plane is applied to the vertices."), Q1n), Pt), ian), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), fcn), tK), "Tree Construction Strategy"), "Whether a minimum spanning tree or a maximum spanning tree should be constructed."), W1n), Pt), can), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), hcn), tK), "Cost Function for Spanning Tree"), "The cost function is used in the creation of the spanning tree."), V1n), Pt), _1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), ZR), tK), "Root node for spanning tree construction"), "The identifier of the node that is preferred as the root of the spanning tree. If this is null, the first node is chosen."), null), $2), fn), jn(xn)))), ri(e, ZR, nK, uue), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), nK), tK), "Root selection for spanning tree"), "This sets the method used to select a root node for the construction of a spanning tree"), X1n), Pt), F1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), lcn), Hin), AVn), "This option defines how the compaction is applied."), z1n), Pt), x1n), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), acn), Hin), "Orthogonal Compaction"), "Restricts the translation of nodes to orthogonal directions in the compaction phase."), (_n(), !1)), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), dcn), IVn), "Upper limit for iterations of overlap removal"), null), Y(64)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), bcn), IVn), "Whether to run a supplementary scanline overlap check."), null), !0), yi), Xt), jn(xn)))), sUn((new j8n(), e)), cGn((new k8n(), e)); + }; + var eue, z1n, tue, iue, rue, cue, uue, oue, X1n, sue, V1n, fue, W1n, J1n, Q1n, Y1n; + w(Cw, "SporeMetaDataProvider", 866), b(1012, 1, ms, j8n), o.hf = function(e) { + sUn(e); + }; + var hue, Z1n, nan, ean, lue, tan; + w(Cw, "SporeOverlapRemovalOptions", 1012), b(1013, 1, {}, wmn), o.sf = function() { + var e; + return e = new mEn(), e; + }, o.tf = function(e) { + }, w(Cw, "SporeOverlapRemovalOptions/SporeOverlapFactory", 1013), b(539, 22, { 3: 1, 34: 1, 22: 1, 539: 1, 188: 1, 196: 1 }, wIn), o.dg = function() { + return MFn(this); + }, o.qg = function() { + return MFn(this); + }; + var Hj, ian = we(Cw, "StructureExtractionStrategy", 539, ke, rge, D0e), aue; + b(437, 22, { 3: 1, 34: 1, 22: 1, 437: 1, 188: 1, 196: 1 }, dX), o.dg = function() { + return MBn(this); + }, o.qg = function() { + return MBn(this); + }; + var ran, YI, can = we(Cw, "TreeConstructionStrategy", 437, ke, r2e, L0e), due; + b(1463, 1, kr, gmn), o.rg = function(e) { + return u(e, 306), new ii(); + }, o.Kf = function(e, t) { + kke(u(e, 306), t); + }, w(OVn, "DelaunayTriangulationPhase", 1463), b(1464, 1, re, Skn), o.Cd = function(e) { + nn(this.a, u(e, 68).a); + }, w(OVn, "DelaunayTriangulationPhase/lambda$0$Type", 1464), b(794, 1, kr, uz), o.rg = function(e) { + return u(e, 306), new ii(); + }, o.Kf = function(e, t) { + this.Jg(u(e, 306), t); + }, o.Jg = function(e, t) { + var i, r, c; + t.Ug("Minimum spanning tree construction", 1), e.d ? r = e.d.a : r = u(sn(e.i, 0), 68).a, on(un(v(e, (J4(), O8)))) ? c = GF(e.e, r, (i = e.b, i)) : c = GF(e.e, r, e.b), oFn(this, c, e), t.Vg(); + }, w(iK, "MinSTPhase", 794), b(1466, 794, kr, ujn), o.Jg = function(e, t) { + var i, r, c, s; + t.Ug("Maximum spanning tree construction", 1), i = new Pkn(e), e.d ? c = e.d.c : c = u(sn(e.i, 0), 68).c, on(un(v(e, (J4(), O8)))) ? s = GF(e.e, c, (r = i, r)) : s = GF(e.e, c, i), oFn(this, s, e), t.Vg(); + }, w(iK, "MaxSTPhase", 1466), b(1467, 1, {}, Pkn), o.af = function(e) { + return ple(this.a, e); + }, w(iK, "MaxSTPhase/lambda$0$Type", 1467), b(1465, 1, re, Ikn), o.Cd = function(e) { + f1e(this.a, u(e, 68)); + }, w(iK, "MinSTPhase/lambda$0$Type", 1465), b(796, 1, kr, nG), o.rg = function(e) { + return u(e, 306), new ii(); + }, o.Kf = function(e, t) { + $ye(this, u(e, 306), t); + }, o.a = !1, w(rK, "GrowTreePhase", 796), b(797, 1, re, BV), o.Cd = function(e) { + Qve(this.a, this.b, this.c, u(e, 225)); + }, w(rK, "GrowTreePhase/lambda$0$Type", 797), b(1468, 1, kr, pmn), o.rg = function(e) { + return u(e, 306), new ii(); + }, o.Kf = function(e, t) { + q9e(this, u(e, 306), t); + }, w(rK, "ShrinkTreeCompactionPhase", 1468), b(795, 1, re, RV), o.Cd = function(e) { + ICe(this.a, this.b, this.c, u(e, 225)); + }, w(rK, "ShrinkTreeCompactionPhase/lambda$0$Type", 795); + var uan = xt(dc, "IGraphElementVisitor"); + b(872, 1, { 536: 1 }, VOn), o.Kg = function(e) { + var t; + t = FAe(this, e), Ur(t, u(ee(this.b, e), 96)), DMe(this, e, t); + }; + var bue, wue; + w(e2, "LayoutConfigurator", 872); + var INe = xt(e2, "LayoutConfigurator/IPropertyHolderOptionFilter"); + b(944, 1, { 2032: 1 }, mmn), o.Lg = function(e, t) { + return qp(), !e.pf(t); + }, w(e2, "LayoutConfigurator/lambda$0$Type", 944), b(943, 1, { 845: 1 }, vmn), o.Mg = function(e, t) { + return qp(), !e.pf(t); + }, w(e2, "LayoutConfigurator/lambda$1$Type", 943), b(945, 1, { 2032: 1 }, qse), o.Lg = function(e, t) { + return kEn(e, t); + }, w(e2, "LayoutConfigurator/lambda$2$Type", 945), b(946, 1, De, oMn), o.Mb = function(e) { + return zwe(this.a, this.b, u(e, 2032)); + }, w(e2, "LayoutConfigurator/lambda$3$Type", 946), b(869, 1, {}, kmn), w(e2, "RecursiveGraphLayoutEngine", 869), b(224, 63, Pl, Fyn, _l), w(e2, "UnsupportedConfigurationException", 224), b(370, 63, Pl, hp), w(e2, "UnsupportedGraphException", 370), b(761, 1, {}), w(dc, "AbstractRandomListAccessor", 761), b(450, 761, {}, F5), o.Ng = function() { + return null; + }, o.d = !0, o.e = !0, o.f = 0, w(Zm, "AlgorithmAssembler", 450), b(1200, 1, De, ymn), o.Mb = function(e) { + return !!u(e, 106); + }, w(Zm, "AlgorithmAssembler/lambda$0$Type", 1200), b(1201, 1, {}, Okn), o.Kb = function(e) { + return Dhe(this.a, u(e, 106)); + }, w(Zm, "AlgorithmAssembler/lambda$1$Type", 1201), b(1202, 1, De, jmn), o.Mb = function(e) { + return !!u(e, 80); + }, w(Zm, "AlgorithmAssembler/lambda$2$Type", 1202), b(1203, 1, re, Dkn), o.Cd = function(e) { + Mo(this.a, u(e, 80)); + }, w(Zm, "AlgorithmAssembler/lambda$3$Type", 1203), b(1204, 1, re, sMn), o.Cd = function(e) { + iae(this.a, this.b, u(e, 196)); + }, w(Zm, "AlgorithmAssembler/lambda$4$Type", 1204), b(1343, 1, Ne, Emn), o.Ne = function(e, t) { + return Sge(u(e, 196), u(t, 196)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Zm, "EnumBasedFactoryComparator", 1343), b(80, 761, { 80: 1 }, ii), o.Ng = function() { + return new ni(); + }, o.a = 0, w(Zm, "LayoutProcessorConfiguration", 80), b(1025, 1, { 536: 1 }, E8n), o.Kg = function(e) { + f5(pue, new Lkn(e)); + }; + var gue, pue, mue; + w(oc, "DeprecatedLayoutOptionReplacer", 1025), b(1026, 1, re, Cmn), o.Cd = function(e) { + B4e(u(e, 167)); + }, w(oc, "DeprecatedLayoutOptionReplacer/lambda$0$Type", 1026), b(1027, 1, re, Mmn), o.Cd = function(e) { + E8e(u(e, 167)); + }, w(oc, "DeprecatedLayoutOptionReplacer/lambda$1$Type", 1027), b(1028, 1, {}, Lkn), o.Yd = function(e, t) { + tae(this.a, u(e, 149), u(t, 41)); + }, w(oc, "DeprecatedLayoutOptionReplacer/lambda$2$Type", 1028), b(143, 1, { 701: 1, 143: 1 }, gd), o.Fb = function(e) { + return OJ(this, e); + }, o.Og = function() { + return this.b; + }, o.Pg = function() { + return this.c; + }, o.xe = function() { + return this.e; + }, o.Hb = function() { + return t1(this.c); + }, o.Ib = function() { + return "Layout Algorithm: " + this.c; + }; + var ONe = w(oc, "LayoutAlgorithmData", 143); + b(269, 1, {}, Ka), w(oc, "LayoutAlgorithmData/Builder", 269), b(1029, 1, { 536: 1 }, Amn), o.Kg = function(e) { + D(e, 207) && !on(un(e.of((He(), tO)))) && TPe(u(e, 27)); + }, w(oc, "LayoutAlgorithmResolver", 1029), b(233, 1, { 701: 1, 233: 1 }, Np), o.Fb = function(e) { + return D(e, 233) ? An(this.b, u(e, 233).b) : !1; + }, o.Og = function() { + return this.a; + }, o.Pg = function() { + return this.b; + }, o.xe = function() { + return this.d; + }, o.Hb = function() { + return t1(this.b); + }, o.Ib = function() { + return "Layout Type: " + this.b; + }, w(oc, "LayoutCategoryData", 233), b(357, 1, {}, tp), w(oc, "LayoutCategoryData/Builder", 357), b(879, 1, {}, Qqn); + var zq; + w(oc, "LayoutMetaDataService", 879), b(880, 1, {}, ZPn), w(oc, "LayoutMetaDataService/Registry", 880), b(487, 1, { 487: 1 }, eG), w(oc, "LayoutMetaDataService/Registry/Triple", 487), b(881, 1, u2, Tmn), o.Qg = function() { + return new Li(); + }, w(oc, "LayoutMetaDataService/lambda$0$Type", 881), b(882, 1, Mw, Smn), o.Rg = function(e) { + return Ki(u(e, 8)); + }, w(oc, "LayoutMetaDataService/lambda$1$Type", 882), b(891, 1, u2, Pmn), o.Qg = function() { + return new Z(); + }, w(oc, "LayoutMetaDataService/lambda$10$Type", 891), b(892, 1, Mw, Imn), o.Rg = function(e) { + return new _u(u(e, 13)); + }, w(oc, "LayoutMetaDataService/lambda$11$Type", 892), b(893, 1, u2, Omn), o.Qg = function() { + return new Ct(); + }, w(oc, "LayoutMetaDataService/lambda$12$Type", 893), b(894, 1, Mw, Dmn), o.Rg = function(e) { + return $7(u(e, 67)); + }, w(oc, "LayoutMetaDataService/lambda$13$Type", 894), b(895, 1, u2, Lmn), o.Qg = function() { + return new ni(); + }, w(oc, "LayoutMetaDataService/lambda$14$Type", 895), b(896, 1, Mw, Nmn), o.Rg = function(e) { + return SM(u(e, 49)); + }, w(oc, "LayoutMetaDataService/lambda$15$Type", 896), b(897, 1, u2, $mn), o.Qg = function() { + return new rh(); + }, w(oc, "LayoutMetaDataService/lambda$16$Type", 897), b(898, 1, Mw, xmn), o.Rg = function(e) { + return HM(u(e, 49)); + }, w(oc, "LayoutMetaDataService/lambda$17$Type", 898), b(899, 1, u2, Fmn), o.Qg = function() { + return new zG(); + }, w(oc, "LayoutMetaDataService/lambda$18$Type", 899), b(900, 1, Mw, Bmn), o.Rg = function(e) { + return SSn(u(e, 157)); + }, w(oc, "LayoutMetaDataService/lambda$19$Type", 900), b(883, 1, u2, Rmn), o.Qg = function() { + return new Tu(); + }, w(oc, "LayoutMetaDataService/lambda$2$Type", 883), b(884, 1, Mw, Kmn), o.Rg = function(e) { + return new GE(u(e, 75)); + }, w(oc, "LayoutMetaDataService/lambda$3$Type", 884), b(885, 1, u2, _mn), o.Qg = function() { + return new Qv(); + }, w(oc, "LayoutMetaDataService/lambda$4$Type", 885), b(886, 1, Mw, Hmn), o.Rg = function(e) { + return new qL(u(e, 140)); + }, w(oc, "LayoutMetaDataService/lambda$5$Type", 886), b(887, 1, u2, qmn), o.Qg = function() { + return new up(); + }, w(oc, "LayoutMetaDataService/lambda$6$Type", 887), b(888, 1, Mw, Umn), o.Rg = function(e) { + return new qV(u(e, 107)); + }, w(oc, "LayoutMetaDataService/lambda$7$Type", 888), b(889, 1, u2, Gmn), o.Qg = function() { + return new _O(); + }, w(oc, "LayoutMetaDataService/lambda$8$Type", 889), b(890, 1, Mw, zmn), o.Rg = function(e) { + return new QNn(u(e, 385)); + }, w(oc, "LayoutMetaDataService/lambda$9$Type", 890); + var Xq = xt(Dy, "IProperty"); + b(23, 1, { 34: 1, 701: 1, 23: 1, 149: 1 }, ln), o.Fd = function(e) { + return E1e(this, u(e, 149)); + }, o.Fb = function(e) { + return D(e, 23) ? An(this.f, u(e, 23).f) : D(e, 149) && An(this.f, u(e, 149).Pg()); + }, o.Sg = function() { + var e; + if (D(this.b, 4)) { + if (e = uZ(this.b), e == null) + throw M(new Or($Vn + this.f + "'. Make sure it's type is registered with the " + (ll(lE), lE.k) + wcn)); + return e; + } else + return this.b; + }, o.Og = function() { + return this.d; + }, o.Pg = function() { + return this.f; + }, o.xe = function() { + return this.i; + }, o.Hb = function() { + return t1(this.f); + }, o.Ib = function() { + return "Layout Option: " + this.f; + }, w(oc, "LayoutOptionData", 23), b(24, 1, {}, hn), w(oc, "LayoutOptionData/Builder", 24), b(170, 22, { 3: 1, 34: 1, 22: 1, 170: 1 }, g7); + var Ph, E1, pi, xn, Kd, Zh = we(oc, "LayoutOptionData/Target", 170, ke, V3e, N0e), vue; + b(285, 22, { 3: 1, 34: 1, 22: 1, 285: 1 }, wp); + var yi, Qi, Pt, L3, Zr, Vf, $2, oan, kue = we(oc, "LayoutOptionData/Type", 285, ke, wme, $0e), yue, b9, san; + b(116, 1, { 116: 1 }, mp, Ho, PM), o.Fb = function(e) { + var t; + return e == null || !D(e, 116) ? !1 : (t = u(e, 116), vc(this.c, t.c) && vc(this.d, t.d) && vc(this.b, t.b) && vc(this.a, t.a)); + }, o.Hb = function() { + return Ik(A(T(ki, 1), Bn, 1, 5, [this.c, this.d, this.b, this.a])); + }, o.Ib = function() { + return "Rect[x=" + this.c + ",y=" + this.d + ",w=" + this.b + ",h=" + this.a + "]"; + }, o.a = 0, o.b = 0, o.c = 0, o.d = 0, w(Ky, "ElkRectangle", 116), b(8, 1, { 3: 1, 4: 1, 8: 1, 423: 1 }, Li, BN, V, rr), o.Fb = function(e) { + return hxn(this, e); + }, o.Hb = function() { + return pp(this.a) + y7e(pp(this.b)); + }, o.cg = function(e) { + var t, i, r, c; + for (r = 0; r < e.length && VFn((zn(r, e.length), e.charCodeAt(r)), NXn); ) + ++r; + for (t = e.length; t > 0 && VFn((zn(t - 1, e.length), e.charCodeAt(t - 1)), $Xn); ) + --t; + if (r >= t) + throw M(new Gn("The given string does not contain any numbers.")); + if (c = ww((Fi(r, t, e.length), e.substr(r, t - r)), `,|;|\r| +`), c.length != 2) + throw M(new Gn("Exactly two numbers are expected, " + c.length + " were found.")); + try { + this.a = sw(fw(c[0])), this.b = sw(fw(c[1])); + } catch (s) { + throw s = It(s), D(s, 130) ? (i = s, M(new Gn(xXn + i))) : M(s); + } + }, o.Ib = function() { + return "(" + this.a + "," + this.b + ")"; + }, o.a = 0, o.b = 0; + var Ei = w(Ky, "KVector", 8); + b(75, 67, { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 67: 1, 15: 1, 75: 1, 423: 1 }, Tu, GE, dAn), o.Pc = function() { + return D6e(this); + }, o.cg = function(e) { + var t, i, r, c, s, f; + r = ww(e, `,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`), vo(this); + try { + for (i = 0, s = 0, c = 0, f = 0; i < r.length; ) + r[i] != null && fw(r[i]).length > 0 && (s % 2 == 0 ? c = sw(r[i]) : f = sw(r[i]), s > 0 && s % 2 != 0 && Fe(this, new V(c, f)), ++s), ++i; + } catch (h) { + throw h = It(h), D(h, 130) ? (t = h, M(new Gn("The given string does not match the expected format for vectors." + t))) : M(h); + } + }, o.Ib = function() { + var e, t, i; + for (e = new mo("("), t = ge(this, 0); t.b != t.d.c; ) + i = u(be(t), 8), Re(e, i.a + "," + i.b), t.b != t.d.c && (e.a += "; "); + return (e.a += ")", e).a; + }; + var fan = w(Ky, "KVectorChain", 75); + b(255, 22, { 3: 1, 34: 1, 22: 1, 255: 1 }, v6); + var Vq, ZI, nO, qj, Uj, eO, han = we(uo, "Alignment", 255, ke, P4e, x0e), jue; + b(991, 1, ms, C8n), o.hf = function(e) { + jUn(e); + }; + var lan, Wq, Eue, aan, dan, Cue, ban, Mue, Tue, wan, gan, Aue; + w(uo, "BoxLayouterOptions", 991), b(992, 1, {}, Xmn), o.sf = function() { + var e; + return e = new Jmn(), e; + }, o.tf = function(e) { + }, w(uo, "BoxLayouterOptions/BoxFactory", 992), b(298, 22, { 3: 1, 34: 1, 22: 1, 298: 1 }, k6); + var w9, Jq, g9, p9, m9, Qq, Yq = we(uo, "ContentAlignment", 298, ke, I4e, F0e), Sue; + b(699, 1, ms, uG), o.hf = function(e) { + vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), FVn), ""), "Layout Algorithm"), "Select a specific layout algorithm."), (l1(), $2)), fn), jn((pf(), xn))))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), BVn), ""), "Resolved Layout Algorithm"), "Meta data associated with the selected algorithm."), Vf), ONe), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), crn), ""), "Alignment"), "Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."), pan), Pt), han), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), l3), ""), "Aspect Ratio"), "The desired aspect ratio of the drawing, that is the quotient of width by height."), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), mcn), ""), "Bend Points"), "A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."), Vf), fan), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), MS), ""), "Content Alignment"), "Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."), van), L3), Yq), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Uy), ""), "Debug Mode"), "Whether additional debug information shall be generated."), (_n(), !1)), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), xR), ""), Rtn), "Overall direction of edges: horizontal (right / left) or vertical (down / up)."), kan), Pt), y9), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), qy), ""), "Edge Routing"), "What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."), Ean), Pt), aU), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), gcn), ""), "Expand Nodes"), "If active, nodes are expanded to fill the area of their parent."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), CS), ""), "Hierarchy Handling"), "Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."), Tan), Pt), adn), yt(xn, A(T(Zh, 1), G, 170, 0, [pi]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), W0), ""), "Padding"), "The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."), $an), Vf), xon), yt(xn, A(T(Zh, 1), G, 170, 0, [pi]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), i8), ""), "Interactive"), "Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), AS), ""), "interactive Layout"), "Whether the graph should be changeable interactively and by setting constraints"), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), r8), ""), "Omit Node Micro Layout"), "Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), tR), ""), "Port Constraints"), "Defines constraints of the position of the ports of a node."), Kan), Pt), wdn), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), TS), ""), "Position"), "The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."), Vf), Ei), yt(pi, A(T(Zh, 1), G, 170, 0, [Kd, E1]))))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), Ny), ""), "Priority"), "Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."), Zr), Gi), yt(pi, A(T(Zh, 1), G, 170, 0, [Ph]))))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), uS), ""), "Randomization Seed"), "Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), t8), ""), "Separate Connected Components"), "Whether each connected component should be processed separately."), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), grn), ""), "Junction Points"), "This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."), Aan), Vf), fan), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), vrn), ""), "Comment Box"), "Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."), !1), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), krn), ""), "Hypernode"), "Whether the node should be handled as a hypernode."), !1), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), rNe), ""), "Label Manager"), "Label managers can shorten labels upon a layout algorithm's request."), Vf), xNe), yt(xn, A(T(Zh, 1), G, 170, 0, [E1]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), jrn), ""), "Margins"), "Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."), San), Vf), $on), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), irn), ""), "No Layout"), "No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."), !1), yi), Xt), yt(pi, A(T(Zh, 1), G, 170, 0, [Ph, Kd, E1]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), RVn), ""), "Scale Factor"), "The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."), 1), Qi), si), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), KVn), ""), "Child Area Width"), "The width of the area occupied by the laid out children of a node."), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), _Vn), ""), "Child Area Height"), "The height of the area occupied by the laid out children of a node."), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), $y), ""), DVn), "Turns topdown layout on and off. If this option is enabled, hierarchical layout will be computed first for the root node and then for its children recursively. Layouts are then scaled down to fit the area provided by their parents. Graphs must follow a certain structure for topdown layout to work properly. {@link TopdownNodeTypes.PARALLEL_NODE} nodes must have children of type {@link TopdownNodeTypes.HIERARCHICAL_NODE} and must define {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} for their children. Furthermore they need to be laid out using an algorithm that is a {@link TopdownLayoutProvider}. Hierarchical nodes can also be parents of other hierarchical nodes and can optionally use a {@link TopdownSizeApproximator} to dynamically set sizes during topdown layout. In this case {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} should be set on the node itself rather than the parent. The values are then used by the size approximator as base values. Hierarchical nodes require the layout option {@link nodeSize.fixedGraphSize} to be true to prevent the algorithm used there from resizing the hierarchical node. This option is not supported if 'Hierarchy Handling' is set to 'INCLUDE_CHILDREN'"), !1), yi), Xt), jn(xn)))), ri(e, $y, J0, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), HVn), ""), "Animate"), "Whether the shift from the old layout to the new computed layout shall be animated."), !0), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), qVn), ""), "Animation Time Factor"), "Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."), Y(100)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), UVn), ""), "Layout Ancestors"), "Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), GVn), ""), "Maximal Animation Time"), "The maximal time for animations, in milliseconds."), Y(4e3)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), zVn), ""), "Minimal Animation Time"), "The minimal time for animations, in milliseconds."), Y(400)), Zr), Gi), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), XVn), ""), "Progress Bar"), "Whether a progress bar shall be displayed during layout computations."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), VVn), ""), "Validate Graph"), "Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), WVn), ""), "Validate Options"), "Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."), !0), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), JVn), ""), "Zoom to Fit"), "Whether the zoom level shall be set to view the whole diagram after layout."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), pcn), "box"), "Box Layout Mode"), "Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."), man), Pt), Mdn), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), zin), qf), "Comment Comment Spacing"), "Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Xin), qf), "Comment Node Spacing"), "Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), WB), qf), "Components Spacing"), "Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."), 20), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Vin), qf), "Edge Spacing"), "Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), eR), qf), "Edge Label Spacing"), "The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."), 2), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), $R), qf), "Edge Node Spacing"), "Spacing to be preserved between nodes and edges."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Win), qf), "Label Spacing"), "Determines the amount of space to be left between two labels of the same graph element."), 0), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Yin), qf), "Label Node Spacing"), "Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."), 5), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Jin), qf), "Horizontal spacing between Label and Port"), "Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."), 1), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Qin), qf), "Vertical spacing between Label and Port"), "Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."), 1), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), yw), qf), "Node Spacing"), "The minimal distance to be preserved between each two nodes."), 20), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Zin), qf), "Node Self Loop Spacing"), "Spacing to be preserved between a node and its self loops."), 10), Qi), si), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), nrn), qf), "Port Spacing"), "Spacing between pairs of ports of the same node."), 10), Qi), si), yt(xn, A(T(Zh, 1), G, 170, 0, [pi]))))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), ern), qf), "Individual Spacing"), "Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."), Vf), woe), yt(pi, A(T(Zh, 1), G, 170, 0, [Ph, Kd, E1]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Ern), qf), "Additional Port Space"), "Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."), Qan), Vf), $on), jn(xn)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), BR), ZVn), "Layout Partition"), "Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."), Zr), Gi), yt(xn, A(T(Zh, 1), G, 170, 0, [pi]))))), ri(e, BR, FR, Fue), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), FR), ZVn), "Layout Partitioning"), "Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."), xan), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), srn), nWn), "Node Label Padding"), "Define padding for node labels that are placed inside of a node."), Ian), Vf), xon), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Xm), nWn), "Node Label Placement"), "Hints for where node labels are to be placed; if empty, the node label's position is not modified."), Oan), L3), jr), yt(pi, A(T(Zh, 1), G, 170, 0, [E1]))))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), lrn), FS), "Port Alignment"), "Defines the default port distribution for a node. May be overridden for each side individually."), Ban), Pt), M9), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), arn), FS), "Port Alignment (North)"), "Defines how ports on the northern side are placed, overriding the node's general port alignment."), Pt), M9), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), drn), FS), "Port Alignment (South)"), "Defines how ports on the southern side are placed, overriding the node's general port alignment."), Pt), M9), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), brn), FS), "Port Alignment (West)"), "Defines how ports on the western side are placed, overriding the node's general port alignment."), Pt), M9), jn(pi)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), wrn), FS), "Port Alignment (East)"), "Defines how ports on the eastern side are placed, overriding the node's general port alignment."), Pt), M9), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), r2), uK), "Node Size Constraints"), "What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."), Dan), L3), S9), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), a3), uK), "Node Size Options"), "Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."), Nan), L3), pdn), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), d3), uK), "Node Size Minimum"), "The minimal size to which a node can be reduced."), Lan), Vf), Ei), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), zm), uK), "Fixed Graph Size"), "By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."), !1), yi), Xt), jn(xn)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), prn), NR), "Edge Label Placement"), "Gives a hint on where to put edge labels."), yan), Pt), ndn), jn(E1)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), oS), NR), "Inline Edge Labels"), "If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."), !1), yi), Xt), jn(E1)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), cNe), "font"), "Font Name"), "Font name used for a label."), $2), fn), jn(E1)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), QVn), "font"), "Font Size"), "Font size used for a label."), Zr), Gi), jn(E1)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), yrn), oK), "Port Anchor Offset"), "The offset to the port position where connections shall be attached."), Vf), Ei), jn(Kd)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), mrn), oK), "Port Index"), "The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."), Zr), Gi), jn(Kd)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), rrn), oK), "Port Side"), "The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."), qan), Pt), lr), jn(Kd)))), vn(e, new ln(pn(gn(mn(an(wn(dn(bn(new hn(), trn), oK), "Port Border Offset"), "The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."), Qi), si), jn(Kd)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Vm), ycn), "Port Label Placement"), "Decides on a placement method for port labels; if empty, the node label's position is not modified."), _an), L3), oO), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), frn), ycn), "Port Labels Next to Port"), "Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."), !1), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), hrn), ycn), "Treat Port Labels as Group"), "If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."), !0), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), xy), Xy), "Topdown Scale Factor"), "The scaling factor to be applied to the nodes laid out within the node in recursive topdown layout. The difference to 'Scale Factor' is that the node itself is not scaled. This value has to be set on hierarchical nodes."), 1), Qi), si), jn(xn)))), ri(e, xy, J0, Gue), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), vcn), Xy), "Topdown Size Approximator"), "The size approximator to be used to set sizes of hierarchical nodes during topdown layout. The default value is null, which results in nodes keeping whatever size is defined for them e.g. through parent parallel node or by manually setting the size."), null), Pt), dO), jn(pi)))), ri(e, vcn, J0, zue), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), Fy), Xy), "Topdown Hierarchical Node Width"), "The fixed size of a hierarchical node when using topdown layout. If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."), 150), Qi), si), yt(xn, A(T(Zh, 1), G, 170, 0, [pi]))))), ri(e, Fy, J0, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), By), Xy), "Topdown Hierarchical Node Aspect Ratio"), "The fixed aspect ratio of a hierarchical node when using topdown layout. Default is 1/sqrt(2). If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."), 1.414), Qi), si), yt(xn, A(T(Zh, 1), G, 170, 0, [pi]))))), ri(e, By, J0, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), J0), Xy), "Topdown Node Type"), "The different node types used for topdown layout. If the node type is set to {@link TopdownNodeTypes.PARALLEL_NODE} the algorithm must be set to a {@link TopdownLayoutProvider} such as {@link TopdownPacking}. The {@link nodeSize.fixedGraphSize} option is technically only required for hierarchical nodes."), null), Pt), vdn), jn(pi)))), ri(e, J0, zm, null), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), kcn), Xy), "Topdown Scale Cap"), "Determines the upper limit for the topdown scale factor. The default value is 1.0 which ensures that nested children never end up appearing larger than their parents in terms of unit sizes such as the font size. If the limit is larger, nodes will fully utilize the available space, but it is counteriniuitive for inner nodes to have a larger scale than outer nodes."), 1), Qi), si), jn(xn)))), ri(e, kcn, J0, Uue), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), urn), eWn), "Activate Inside Self Loops"), "Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."), !1), yi), Xt), jn(pi)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), orn), eWn), "Inside Self Loop"), "Whether a self loop should be routed inside a node instead of around that node."), !1), yi), Xt), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), JB), "edge"), "Edge Thickness"), "The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."), 1), Qi), si), jn(Ph)))), vn(e, new ln(pn(gn(mn(Sn(an(wn(dn(bn(new hn(), YVn), "edge"), "Edge Type"), "The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."), Man), Pt), udn), jn(Ph)))), f6(e, new Np(r6(u4(c4(new tp(), Yn), "Layered"), 'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))), f6(e, new Np(r6(u4(c4(new tp(), "org.eclipse.elk.orthogonal"), "Orthogonal"), `Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))), f6(e, new Np(r6(u4(c4(new tp(), uu), "Force"), "Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))), f6(e, new Np(r6(u4(c4(new tp(), "org.eclipse.elk.circle"), "Circle"), "Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))), f6(e, new Np(r6(u4(c4(new tp(), pVn), "Tree"), "Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))), f6(e, new Np(r6(u4(c4(new tp(), "org.eclipse.elk.planar"), "Planar"), "Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))), f6(e, new Np(r6(u4(c4(new tp(), es), "Radial"), "Radial layout algorithms usually position the nodes of the graph on concentric circles."))), oUn((new M8n(), e)), jUn((new C8n(), e)), $qn((new T8n(), e)); + }; + var $v, Pue, pan, x2, Iue, Oue, man, F2, B2, Due, Gj, van, zj, _d, kan, Zq, nU, yan, jan, Ean, Can, Man, Lue, R2, Tan, Nue, Xj, eU, Vj, tU, kb, Aan, xv, San, Pan, Ian, K2, Oan, Hd, Dan, Vw, _2, Lan, Ta, Nan, tO, Wj, C1, $an, $ue, xan, xue, Fue, Fan, Ban, iU, rU, cU, uU, Ran, oo, v9, Kan, oU, sU, Ww, _an, Han, H2, qan, N3, Jj, fU, q2, Bue, hU, Rue, Kue, Uan, _ue, Gan, zan, $3, Xan, iO, Van, Wan, qd, Hue, Jan, Qan, Yan, rO, Qj, k9, x3, que, Uue, cO, Gue, Zan, zue; + w(uo, "CoreOptions", 699), b(88, 22, { 3: 1, 34: 1, 22: 1, 88: 1 }, p7); + var Wf, Br, Xr, Jf, us, y9 = we(uo, Rtn, 88, ke, N3e, B0e), Xue; + b(278, 22, { 3: 1, 34: 1, 22: 1, 278: 1 }, fL); + var Fv, Jw, Bv, ndn = we(uo, "EdgeLabelPlacement", 278, ke, fpe, R0e), Vue; + b(223, 22, { 3: 1, 34: 1, 22: 1, 223: 1 }, kC); + var Rv, Yj, F3, lU, aU = we(uo, "EdgeRouting", 223, ke, f3e, K0e), Wue; + b(321, 22, { 3: 1, 34: 1, 22: 1, 321: 1 }, y6); + var edn, tdn, idn, rdn, dU, cdn, udn = we(uo, "EdgeType", 321, ke, S4e, _0e), Jue; + b(989, 1, ms, M8n), o.hf = function(e) { + oUn(e); + }; + var odn, sdn, fdn, hdn, Que, ldn, j9; + w(uo, "FixedLayouterOptions", 989), b(990, 1, {}, Vmn), o.sf = function() { + var e; + return e = new cvn(), e; + }, o.tf = function(e) { + }, w(uo, "FixedLayouterOptions/FixedFactory", 990), b(346, 22, { 3: 1, 34: 1, 22: 1, 346: 1 }, hL); + var M1, uO, E9, adn = we(uo, "HierarchyHandling", 346, ke, ope, H0e), Yue; + b(291, 22, { 3: 1, 34: 1, 22: 1, 291: 1 }, yC); + var nl, Aa, Zj, nE, Zue = we(uo, "LabelSide", 291, ke, s3e, q0e), noe; + b(95, 22, { 3: 1, 34: 1, 22: 1, 95: 1 }, bg); + var xl, Qs, Cs, Ys, Lo, Zs, Ms, el, nf, jr = we(uo, "NodeLabelPlacement", 95, ke, Pme, U0e), eoe; + b(256, 22, { 3: 1, 34: 1, 22: 1, 256: 1 }, m7); + var ddn, C9, Sa, bdn, eE, M9 = we(uo, "PortAlignment", 256, ke, W3e, G0e), toe; + b(101, 22, { 3: 1, 34: 1, 22: 1, 101: 1 }, j6); + var Ud, Uc, tl, Kv, Qf, Pa, wdn = we(uo, "PortConstraints", 101, ke, A4e, z0e), ioe; + b(279, 22, { 3: 1, 34: 1, 22: 1, 279: 1 }, E6); + var T9, A9, Fl, tE, Ia, B3, oO = we(uo, "PortLabelPlacement", 279, ke, T4e, X0e), roe; + b(64, 22, { 3: 1, 34: 1, 22: 1, 64: 1 }, v7); + var Zn, Xn, os, ss, mu, fu, Yf, ef, Wu, Fu, Gc, Ju, vu, ku, tf, No, $o, Ts, ae, sc, Wn, lr = we(uo, "PortSide", 64, ke, $3e, V0e), coe; + b(993, 1, ms, T8n), o.hf = function(e) { + $qn(e); + }; + var uoe, ooe, gdn, soe, foe; + w(uo, "RandomLayouterOptions", 993), b(994, 1, {}, Wmn), o.sf = function() { + var e; + return e = new tvn(), e; + }, o.tf = function(e) { + }, w(uo, "RandomLayouterOptions/RandomFactory", 994), b(386, 22, { 3: 1, 34: 1, 22: 1, 386: 1 }, jC); + var Qw, iE, rE, Gd, S9 = we(uo, "SizeConstraint", 386, ke, o3e, W0e), hoe; + b(264, 22, { 3: 1, 34: 1, 22: 1, 264: 1 }, wg); + var cE, sO, _v, bU, uE, P9, fO, hO, lO, pdn = we(uo, "SizeOptions", 264, ke, _me, J0e), loe; + b(280, 22, { 3: 1, 34: 1, 22: 1, 280: 1 }, lL); + var Yw, mdn, aO, vdn = we(uo, "TopdownNodeTypes", 280, ke, hpe, Q0e), aoe; + b(347, 22, jcn); + var kdn, ydn, dO = we(uo, "TopdownSizeApproximator", 347, ke, c2e, Z0e); + b(987, 347, jcn, WSn), o.Tg = function(e) { + return MRn(e); + }, we(uo, "TopdownSizeApproximator/1", 987, dO, null, null), b(988, 347, jcn, NPn), o.Tg = function(e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn, Fn; + for (t = u(z(e, (He(), q2)), 143), tn = (B1(), m = new Yv(), m), uy(tn, e), yn = new de(), s = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); s.e != s.i.gc(); ) + r = u(ue(s), 27), O = (p = new Yv(), p), SA(O, tn), uy(O, r), Fn = MRn(r), kg(O, y.Math.max(r.g, Fn.a), y.Math.max(r.f, Fn.b)), Wc(yn.f, r, O); + for (c = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); c.e != c.i.gc(); ) + for (r = u(ue(c), 27), d = new ne((!r.e && (r.e = new Nn(Wt, r, 7, 4)), r.e)); d.e != d.i.gc(); ) + a = u(ue(d), 74), _ = u(Kr(gr(yn.f, r)), 27), X = u(ee(yn, L((!a.c && (a.c = new Nn(he, a, 5, 8)), a.c), 0)), 27), N = (g = new HO(), g), ve((!N.b && (N.b = new Nn(he, N, 4, 7)), N.b), _), ve((!N.c && (N.c = new Nn(he, N, 5, 8)), N.c), X), AA(N, At(_)), uy(N, a); + j = u(z7(t.f), 205); + try { + j.rf(tn, new svn()), lIn(t.f, j); + } catch (Rn) { + throw Rn = It(Rn), D(Rn, 103) ? (k = Rn, M(k)) : M(Rn); + } + return Lf(tn, B2) || Lf(tn, F2) || stn(tn), l = $(R(z(tn, B2))), h = $(R(z(tn, F2))), f = l / h, i = $(R(z(tn, Qj))) * y.Math.sqrt((!tn.a && (tn.a = new q(Ye, tn, 10, 11)), tn.a).i), kn = u(z(tn, C1), 107), I = kn.b + kn.c + 1, S = kn.d + kn.a + 1, new V(y.Math.max(I, i), y.Math.max(S, i / f)); + }, we(uo, "TopdownSizeApproximator/2", 988, dO, null, null); + var doe; + b(344, 1, { 871: 1 }, op), o.Ug = function(e, t) { + return BKn(this, e, t); + }, o.Vg = function() { + o_n(this); + }, o.Wg = function() { + return this.q; + }, o.Xg = function() { + return this.f ? TN(this.f) : null; + }, o.Yg = function() { + return TN(this.a); + }, o.Zg = function() { + return this.p; + }, o.$g = function() { + return !1; + }, o._g = function() { + return this.n; + }, o.ah = function() { + return this.p != null && !this.b; + }, o.bh = function(e) { + var t; + this.n && (t = e, nn(this.f, t)); + }, o.dh = function(e, t) { + var i, r; + this.n && e && Mpe(this, (i = new zPn(), r = IF(i, e), uDe(i), r), (LT(), gU)); + }, o.eh = function(e) { + var t; + return this.b ? null : (t = hme(this, this.g), Fe(this.a, t), t.i = this, this.d = e, t); + }, o.fh = function(e) { + e > 0 && !this.b && MQ(this, e); + }, o.b = !1, o.c = 0, o.d = -1, o.e = null, o.f = null, o.g = -1, o.j = !1, o.k = !1, o.n = !1, o.o = 0, o.q = 0, o.r = 0, w(dc, "BasicProgressMonitor", 344), b(717, 205, yd, Jmn), o.rf = function(e, t) { + RUn(e, t); + }, w(dc, "BoxLayoutProvider", 717), b(983, 1, Ne, Nkn), o.Ne = function(e, t) { + return uTe(this, u(e, 27), u(t, 27)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, o.a = !1, w(dc, "BoxLayoutProvider/1", 983), b(163, 1, { 163: 1 }, hT, vAn), o.Ib = function() { + return this.c ? Cen(this.c) : ca(this.b); + }, w(dc, "BoxLayoutProvider/Group", 163), b(320, 22, { 3: 1, 34: 1, 22: 1, 320: 1 }, EC); + var jdn, Edn, Cdn, wU, Mdn = we(dc, "BoxLayoutProvider/PackingMode", 320, ke, h3e, nbe), boe; + b(984, 1, Ne, Qmn), o.Ne = function(e, t) { + return Mge(u(e, 163), u(t, 163)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(dc, "BoxLayoutProvider/lambda$0$Type", 984), b(985, 1, Ne, Ymn), o.Ne = function(e, t) { + return pge(u(e, 163), u(t, 163)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(dc, "BoxLayoutProvider/lambda$1$Type", 985), b(986, 1, Ne, Zmn), o.Ne = function(e, t) { + return mge(u(e, 163), u(t, 163)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(dc, "BoxLayoutProvider/lambda$2$Type", 986), b(1384, 1, { 845: 1 }, nvn), o.Mg = function(e, t) { + return nC(), !D(t, 167) || kEn((qp(), u(e, 167)), t); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type", 1384), b(1385, 1, re, $kn), o.Cd = function(e) { + $6e(this.a, u(e, 149)); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type", 1385), b(1386, 1, re, ivn), o.Cd = function(e) { + u(e, 96), nC(); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type", 1386), b(1390, 1, re, xkn), o.Cd = function(e) { + ive(this.a, u(e, 96)); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type", 1390), b(1388, 1, De, hMn), o.Mb = function(e) { + return g6e(this.a, this.b, u(e, 149)); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type", 1388), b(1387, 1, De, lMn), o.Mb = function(e) { + return Q1e(this.a, this.b, u(e, 845)); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type", 1387), b(1389, 1, re, aMn), o.Cd = function(e) { + hwe(this.a, this.b, u(e, 149)); + }, w(dc, "ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type", 1389), b(947, 1, {}, rvn), o.Kb = function(e) { + return oTn(e); + }, o.Fb = function(e) { + return this === e; + }, w(dc, "ElkUtil/lambda$0$Type", 947), b(948, 1, re, dMn), o.Cd = function(e) { + fCe(this.a, this.b, u(e, 74)); + }, o.a = 0, o.b = 0, w(dc, "ElkUtil/lambda$1$Type", 948), b(949, 1, re, bMn), o.Cd = function(e) { + nhe(this.a, this.b, u(e, 166)); + }, o.a = 0, o.b = 0, w(dc, "ElkUtil/lambda$2$Type", 949), b(950, 1, re, wMn), o.Cd = function(e) { + Wle(this.a, this.b, u(e, 135)); + }, o.a = 0, o.b = 0, w(dc, "ElkUtil/lambda$3$Type", 950), b(951, 1, re, Fkn), o.Cd = function(e) { + Obe(this.a, u(e, 377)); + }, w(dc, "ElkUtil/lambda$4$Type", 951), b(325, 1, { 34: 1, 325: 1 }, Ife), o.Fd = function(e) { + return C1e(this, u(e, 242)); + }, o.Fb = function(e) { + var t; + return D(e, 325) ? (t = u(e, 325), this.a == t.a) : !1; + }, o.Hb = function() { + return wi(this.a); + }, o.Ib = function() { + return this.a + " (exclusive)"; + }, o.a = 0, w(dc, "ExclusiveBounds/ExclusiveLowerBound", 325), b(1119, 205, yd, cvn), o.rf = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I, O, N, _, X, tn, yn, kn; + for (t.Ug("Fixed Layout", 1), s = u(z(e, (He(), jan)), 223), g = 0, p = 0, O = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); O.e != O.i.gc(); ) { + for (S = u(ue(O), 27), kn = u(z(S, (NT(), j9)), 8), kn && (Ro(S, kn.a, kn.b), u(z(S, sdn), 181).Hc((go(), Qw)) && (m = u(z(S, hdn), 8), m.a > 0 && m.b > 0 && G0(S, m.a, m.b, !0, !0))), g = y.Math.max(g, S.i + S.g), p = y.Math.max(p, S.j + S.f), a = new ne((!S.n && (S.n = new q(Sr, S, 1, 7)), S.n)); a.e != a.i.gc(); ) + h = u(ue(a), 135), kn = u(z(h, j9), 8), kn && Ro(h, kn.a, kn.b), g = y.Math.max(g, S.i + h.i + h.g), p = y.Math.max(p, S.j + h.j + h.f); + for (X = new ne((!S.c && (S.c = new q(Qu, S, 9, 9)), S.c)); X.e != X.i.gc(); ) + for (_ = u(ue(X), 123), kn = u(z(_, j9), 8), kn && Ro(_, kn.a, kn.b), tn = S.i + _.i, yn = S.j + _.j, g = y.Math.max(g, tn + _.g), p = y.Math.max(p, yn + _.f), l = new ne((!_.n && (_.n = new q(Sr, _, 1, 7)), _.n)); l.e != l.i.gc(); ) + h = u(ue(l), 135), kn = u(z(h, j9), 8), kn && Ro(h, kn.a, kn.b), g = y.Math.max(g, tn + h.i + h.g), p = y.Math.max(p, yn + h.j + h.f); + for (c = new ie(ce(Al(S).a.Kc(), new En())); pe(c); ) + i = u(fe(c), 74), d = ZGn(i), g = y.Math.max(g, d.a), p = y.Math.max(p, d.b); + for (r = new ie(ce(cy(S).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 74), At(Kh(i)) != e && (d = ZGn(i), g = y.Math.max(g, d.a), p = y.Math.max(p, d.b)); + } + if (s == (El(), Rv)) + for (I = new ne((!e.a && (e.a = new q(Ye, e, 10, 11)), e.a)); I.e != I.i.gc(); ) + for (S = u(ue(I), 27), r = new ie(ce(Al(S).a.Kc(), new En())); pe(r); ) + i = u(fe(r), 74), f = lPe(i), f.b == 0 ? ht(i, kb, null) : ht(i, kb, f); + on(un(z(e, (NT(), fdn)))) || (N = u(z(e, Que), 107), j = g + N.b + N.c, k = p + N.d + N.a, G0(e, j, k, !0, !0)), t.Vg(); + }, w(dc, "FixedLayoutProvider", 1119), b(385, 137, { 3: 1, 423: 1, 385: 1, 96: 1, 137: 1 }, _O, QNn), o.cg = function(e) { + var t, i, r, c, s, f, h, l, a; + if (e) + try { + for (l = ww(e, ";,;"), s = l, f = 0, h = s.length; f < h; ++f) { + if (c = s[f], i = ww(c, "\\:"), r = ntn(z4(), i[0]), !r) + throw M(new Gn("Invalid option id: " + i[0])); + if (a = Yen(r, i[1]), a == null) + throw M(new Gn("Invalid option value: " + i[1])); + a == null ? (!this.q && (this.q = new de()), Bp(this.q, r)) : (!this.q && (this.q = new de()), Ve(this.q, r, a)); + } + } catch (d) { + throw d = It(d), D(d, 103) ? (t = d, M(new $Fn(t))) : M(d); + } + }, o.Ib = function() { + var e; + return e = Oe(Wr(_r((this.q ? this.q : (Dn(), Dn(), Wh)).vc().Oc(), new uvn()), Wb(new ISn(), new U0n(), new _0n(), new H0n(), A(T(xr, 1), G, 108, 0, [])))), e; + }; + var woe = w(dc, "IndividualSpacings", 385); + b(982, 1, {}, uvn), o.Kb = function(e) { + return Tge(u(e, 44)); + }, w(dc, "IndividualSpacings/lambda$0$Type", 982), b(718, 1, {}, lPn), o.c = 0, w(dc, "InstancePool", 718), b(1835, 1, {}, ovn), w(dc, "LoggedGraph", 1835), b(415, 22, { 3: 1, 34: 1, 22: 1, 415: 1 }, CC); + var Tdn, gU, Adn, Sdn, goe = we(dc, "LoggedGraph/Type", 415, ke, l3e, ebe), poe; + b(1063, 1, { 871: 1 }, svn), o.Ug = function(e, t) { + return !1; + }, o.Vg = function() { + }, o.Wg = function() { + return 0; + }, o.Xg = function() { + return null; + }, o.Yg = function() { + return null; + }, o.Zg = function() { + return null; + }, o.$g = function() { + return !1; + }, o._g = function() { + return !1; + }, o.ah = function() { + return !1; + }, o.bh = function(e) { + }, o.dh = function(e, t) { + }, o.eh = function(e) { + return this; + }, o.fh = function(e) { + }, w(dc, "NullElkProgressMonitor", 1063), b(42, 1, { 20: 1, 42: 1 }, bi), o.Jc = function(e) { + qi(this, e); + }, o.Fb = function(e) { + var t, i, r; + return D(e, 42) ? (i = u(e, 42), t = this.a == null ? i.a == null : ct(this.a, i.a), r = this.b == null ? i.b == null : ct(this.b, i.b), t && r) : !1; + }, o.Hb = function() { + var e, t, i, r, c, s; + return i = this.a == null ? 0 : mt(this.a), e = i & ui, t = i & -65536, s = this.b == null ? 0 : mt(this.b), r = s & ui, c = s & -65536, e ^ c >> 16 & ui | t ^ r << 16; + }, o.Kc = function() { + return new Bkn(this); + }, o.Ib = function() { + return this.a == null && this.b == null ? "pair(null,null)" : this.a == null ? "pair(null," + Jr(this.b) + ")" : this.b == null ? "pair(" + Jr(this.a) + ",null)" : "pair(" + Jr(this.a) + "," + Jr(this.b) + ")"; + }, w(dc, "Pair", 42), b(995, 1, Pi, Bkn), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return !this.c && (!this.b && this.a.a != null || this.a.b != null); + }, o.Pb = function() { + if (!this.c && !this.b && this.a.a != null) + return this.b = !0, this.a.a; + if (!this.c && this.a.b != null) + return this.c = !0, this.a.b; + throw M(new nc()); + }, o.Qb = function() { + throw this.c && this.a.b != null ? this.a.b = null : this.b && this.a.a != null && (this.a.a = null), M(new Mu()); + }, o.b = !1, o.c = !1, w(dc, "Pair/1", 995), b(455, 1, { 455: 1 }, AIn), o.Fb = function(e) { + return vc(this.a, u(e, 455).a) && vc(this.c, u(e, 455).c) && vc(this.d, u(e, 455).d) && vc(this.b, u(e, 455).b); + }, o.Hb = function() { + return Ik(A(T(ki, 1), Bn, 1, 5, [this.a, this.c, this.d, this.b])); + }, o.Ib = function() { + return "(" + this.a + ur + this.c + ur + this.d + ur + this.b + ")"; + }, w(dc, "Quadruple", 455), b(1108, 205, yd, tvn), o.rf = function(e, t) { + var i, r, c, s, f; + if (t.Ug("Random Layout", 1), (!e.a && (e.a = new q(Ye, e, 10, 11)), e.a).i == 0) { + t.Vg(); + return; + } + s = u(z(e, (ZY(), soe)), 17), s && s.a != 0 ? c = new qM(s.a) : c = new dx(), i = J9(R(z(e, uoe))), f = J9(R(z(e, foe))), r = u(z(e, ooe), 107), PDe(e, c, i, f, r), t.Vg(); + }, w(dc, "RandomLayoutProvider", 1108), b(240, 1, { 240: 1 }, _L), o.Fb = function(e) { + return vc(this.a, u(e, 240).a) && vc(this.b, u(e, 240).b) && vc(this.c, u(e, 240).c); + }, o.Hb = function() { + return Ik(A(T(ki, 1), Bn, 1, 5, [this.a, this.b, this.c])); + }, o.Ib = function() { + return "(" + this.a + ur + this.b + ur + this.c + ")"; + }, w(dc, "Triple", 240); + var moe; + b(562, 1, {}), o.Lf = function() { + return new V(this.f.i, this.f.j); + }, o.of = function(e) { + return eOn(e, (He(), oo)) ? z(this.f, voe) : z(this.f, e); + }, o.Mf = function() { + return new V(this.f.g, this.f.f); + }, o.Nf = function() { + return this.g; + }, o.pf = function(e) { + return Lf(this.f, e); + }, o.Of = function(e) { + tu(this.f, e.a), iu(this.f, e.b); + }, o.Pf = function(e) { + I0(this.f, e.a), P0(this.f, e.b); + }, o.Qf = function(e) { + this.g = e; + }, o.g = 0; + var voe; + w(d8, "ElkGraphAdapters/AbstractElkGraphElementAdapter", 562), b(563, 1, { 853: 1 }, DE), o.Rf = function() { + var e, t; + if (!this.b) + for (this.b = RM(jM(this.a).i), t = new ne(jM(this.a)); t.e != t.i.gc(); ) + e = u(ue(t), 135), nn(this.b, new pD(e)); + return this.b; + }, o.b = null, w(d8, "ElkGraphAdapters/ElkEdgeAdapter", 563), b(289, 562, {}, Qd), o.Sf = function() { + return XRn(this); + }, o.a = null, w(d8, "ElkGraphAdapters/ElkGraphAdapter", 289), b(640, 562, { 187: 1 }, pD), w(d8, "ElkGraphAdapters/ElkLabelAdapter", 640), b(639, 562, { 695: 1 }, ML), o.Rf = function() { + return g7e(this); + }, o.Vf = function() { + var e; + return e = u(z(this.f, (He(), xv)), 140), !e && (e = new Qv()), e; + }, o.Xf = function() { + return p7e(this); + }, o.Zf = function(e) { + var t; + t = new qL(e), ht(this.f, (He(), xv), t); + }, o.$f = function(e) { + ht(this.f, (He(), C1), new qV(e)); + }, o.Tf = function() { + return this.d; + }, o.Uf = function() { + var e, t; + if (!this.a) + for (this.a = new Z(), t = new ie(ce(cy(u(this.f, 27)).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 74), nn(this.a, new DE(e)); + return this.a; + }, o.Wf = function() { + var e, t; + if (!this.c) + for (this.c = new Z(), t = new ie(ce(Al(u(this.f, 27)).a.Kc(), new En())); pe(t); ) + e = u(fe(t), 74), nn(this.c, new DE(e)); + return this.c; + }, o.Yf = function() { + return AM(u(this.f, 27)).i != 0 || on(un(u(this.f, 27).of((He(), Xj)))); + }, o._f = function() { + W4e(this, (c0(), moe)); + }, o.a = null, o.b = null, o.c = null, o.d = null, o.e = null, w(d8, "ElkGraphAdapters/ElkNodeAdapter", 639), b(1284, 562, { 852: 1 }, Rkn), o.Rf = function() { + return M7e(this); + }, o.Uf = function() { + var e, t; + if (!this.a) + for (this.a = Dh(u(this.f, 123).hh().i), t = new ne(u(this.f, 123).hh()); t.e != t.i.gc(); ) + e = u(ue(t), 74), nn(this.a, new DE(e)); + return this.a; + }, o.Wf = function() { + var e, t; + if (!this.c) + for (this.c = Dh(u(this.f, 123).ih().i), t = new ne(u(this.f, 123).ih()); t.e != t.i.gc(); ) + e = u(ue(t), 74), nn(this.c, new DE(e)); + return this.c; + }, o.ag = function() { + return u(u(this.f, 123).of((He(), H2)), 64); + }, o.bg = function() { + var e, t, i, r, c, s, f, h; + for (r = Sf(u(this.f, 123)), i = new ne(u(this.f, 123).ih()); i.e != i.i.gc(); ) + for (e = u(ue(i), 74), h = new ne((!e.c && (e.c = new Nn(he, e, 5, 8)), e.c)); h.e != h.i.gc(); ) { + if (f = u(ue(h), 84), Yb(Gr(f), r)) + return !0; + if (Gr(f) == r && on(un(z(e, (He(), eU))))) + return !0; + } + for (t = new ne(u(this.f, 123).hh()); t.e != t.i.gc(); ) + for (e = u(ue(t), 74), s = new ne((!e.b && (e.b = new Nn(he, e, 4, 7)), e.b)); s.e != s.i.gc(); ) + if (c = u(ue(s), 84), Yb(Gr(c), r)) + return !0; + return !1; + }, o.a = null, o.b = null, o.c = null, w(d8, "ElkGraphAdapters/ElkPortAdapter", 1284), b(1285, 1, Ne, evn), o.Ne = function(e, t) { + return iSe(u(e, 123), u(t, 123)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(d8, "ElkGraphAdapters/PortComparator", 1285); + var Oa = xt(ts, "EObject"), Hv = xt(o2, rWn), xo = xt(o2, cWn), oE = xt(o2, uWn), sE = xt(o2, "ElkShape"), he = xt(o2, oWn), Wt = xt(o2, Ecn), Mt = xt(o2, sWn), fE = xt(ts, fWn), I9 = xt(ts, "EFactory"), koe, pU = xt(ts, hWn), Ef = xt(ts, "EPackage"), Ti, yoe, joe, Pdn, bO, Eoe, Idn, Odn, Ddn, il, Coe, Moe, Sr = xt(o2, Ccn), Ye = xt(o2, Mcn), Qu = xt(o2, Tcn); + b(93, 1, lWn), o.th = function() { + return this.uh(), null; + }, o.uh = function() { + return null; + }, o.vh = function() { + return this.uh(), !1; + }, o.wh = function() { + return !1; + }, o.xh = function(e) { + rt(this, e); + }, w(g3, "BasicNotifierImpl", 93), b(99, 93, wWn), o.Yh = function() { + return fo(this); + }, o.yh = function(e, t) { + return e; + }, o.zh = function() { + throw M(new Pe()); + }, o.Ah = function(e) { + var t; + return t = wr(u($n(this.Dh(), this.Fh()), 19)), this.Ph().Th(this, t.n, t.f, e); + }, o.Bh = function(e, t) { + throw M(new Pe()); + }, o.Ch = function(e, t, i) { + return So(this, e, t, i); + }, o.Dh = function() { + var e; + return this.zh() && (e = this.zh().Nk(), e) ? e : this.ii(); + }, o.Eh = function() { + return dF(this); + }, o.Fh = function() { + throw M(new Pe()); + }, o.Gh = function() { + var e, t; + return t = this.$h().Ok(), !t && this.zh().Tk(t = (l6(), e = tJ(bh(this.Dh())), e == null ? MU : new C7(this, e))), t; + }, o.Hh = function(e, t) { + return e; + }, o.Ih = function(e) { + var t; + return t = e.pk(), t ? e.Lj() : Ot(this.Dh(), e); + }, o.Jh = function() { + var e; + return e = this.zh(), e ? e.Qk() : null; + }, o.Kh = function() { + return this.zh() ? this.zh().Nk() : null; + }, o.Lh = function(e, t, i) { + return tA(this, e, t, i); + }, o.Mh = function(e) { + return x4(this, e); + }, o.Nh = function(e, t) { + return YN(this, e, t); + }, o.Oh = function() { + var e; + return e = this.zh(), !!e && e.Rk(); + }, o.Ph = function() { + throw M(new Pe()); + }, o.Qh = function() { + return WT(this); + }, o.Rh = function(e, t, i, r) { + return Wp(this, e, t, r); + }, o.Sh = function(e, t, i) { + var r; + return r = u($n(this.Dh(), t), 69), r.wk().zk(this, this.hi(), t - this.ji(), e, i); + }, o.Th = function(e, t, i, r) { + return OM(this, e, t, r); + }, o.Uh = function(e, t, i) { + var r; + return r = u($n(this.Dh(), t), 69), r.wk().Ak(this, this.hi(), t - this.ji(), e, i); + }, o.Vh = function() { + return !!this.zh() && !!this.zh().Pk(); + }, o.Wh = function(e) { + return Cx(this, e); + }, o.Xh = function(e) { + return wOn(this, e); + }, o.Zh = function(e) { + return FGn(this, e); + }, o.$h = function() { + throw M(new Pe()); + }, o._h = function() { + return this.zh() ? this.zh().Pk() : null; + }, o.ai = function() { + return WT(this); + }, o.bi = function(e, t) { + sF(this, e, t); + }, o.ci = function(e) { + this.$h().Sk(e); + }, o.di = function(e) { + this.$h().Vk(e); + }, o.ei = function(e) { + this.$h().Uk(e); + }, o.fi = function(e, t) { + var i, r, c, s; + return s = this.Jh(), s && e && (t = cr(s.El(), this, t), s.Il(this)), r = this.Ph(), r && (AF(this, this.Ph(), this.Fh()).Bb & hr ? (c = r.Qh(), c && (e ? !s && c.Il(this) : c.Hl(this))) : (t = (i = this.Fh(), i >= 0 ? this.Ah(t) : this.Ph().Th(this, -1 - i, null, t)), t = this.Ch(null, -1, t))), this.di(e), t; + }, o.gi = function(e) { + var t, i, r, c, s, f, h, l; + if (i = this.Dh(), s = Ot(i, e), t = this.ji(), s >= t) + return u(e, 69).wk().Dk(this, this.hi(), s - t); + if (s <= -1) + if (f = Qg((Lu(), zi), i, e), f) { + if (br(), u(f, 69).xk() || (f = $p(Lr(zi, f))), c = (r = this.Ih(f), u(r >= 0 ? this.Lh(r, !0, !0) : H0(this, f, !0), 160)), l = f.Ik(), l > 1 || l == -1) + return u(u(c, 220).Sl(e, !1), 79); + } else + throw M(new Gn(ba + e.xe() + sK)); + else if (e.Jk()) + return r = this.Ih(e), u(r >= 0 ? this.Lh(r, !1, !0) : H0(this, e, !1), 79); + return h = new LMn(this, e), h; + }, o.hi = function() { + return oQ(this); + }, o.ii = function() { + return (G1(), Hn).S; + }, o.ji = function() { + return se(this.ii()); + }, o.ki = function(e) { + cF(this, e); + }, o.Ib = function() { + return Hs(this); + }, w(qn, "BasicEObjectImpl", 99); + var Toe; + b(119, 99, { 110: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1 }), o.li = function(e) { + var t; + return t = uQ(this), t[e]; + }, o.mi = function(e, t) { + var i; + i = uQ(this), Rt(i, e, t); + }, o.ni = function(e) { + var t; + t = uQ(this), Rt(t, e, null); + }, o.th = function() { + return u(Un(this, 4), 129); + }, o.uh = function() { + throw M(new Pe()); + }, o.vh = function() { + return (this.Db & 4) != 0; + }, o.zh = function() { + throw M(new Pe()); + }, o.oi = function(e) { + Xp(this, 2, e); + }, o.Bh = function(e, t) { + this.Db = t << 16 | this.Db & 255, this.oi(e); + }, o.Dh = function() { + return du(this); + }, o.Fh = function() { + return this.Db >> 16; + }, o.Gh = function() { + var e, t; + return l6(), t = tJ(bh((e = u(Un(this, 16), 29), e || this.ii()))), t == null ? MU : new C7(this, t); + }, o.wh = function() { + return (this.Db & 1) == 0; + }, o.Jh = function() { + return u(Un(this, 128), 2034); + }, o.Kh = function() { + return u(Un(this, 16), 29); + }, o.Oh = function() { + return (this.Db & 32) != 0; + }, o.Ph = function() { + return u(Un(this, 2), 54); + }, o.Vh = function() { + return (this.Db & 64) != 0; + }, o.$h = function() { + throw M(new Pe()); + }, o._h = function() { + return u(Un(this, 64), 288); + }, o.ci = function(e) { + Xp(this, 16, e); + }, o.di = function(e) { + Xp(this, 128, e); + }, o.ei = function(e) { + Xp(this, 64, e); + }, o.hi = function() { + return ru(this); + }, o.Db = 0, w(qn, "MinimalEObjectImpl", 119), b(120, 119, { 110: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }), o.oi = function(e) { + this.Cb = e; + }, o.Ph = function() { + return this.Cb; + }, w(qn, "MinimalEObjectImpl/Container", 120), b(2083, 120, { 110: 1, 342: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }), o.Lh = function(e, t, i) { + return jZ(this, e, t, i); + }, o.Uh = function(e, t, i) { + return lnn(this, e, t, i); + }, o.Wh = function(e) { + return gJ(this, e); + }, o.bi = function(e, t) { + oY(this, e, t); + }, o.ii = function() { + return Mc(), Moe; + }, o.ki = function(e) { + JQ(this, e); + }, o.nf = function() { + return dRn(this); + }, o.gh = function() { + return !this.o && (this.o = new Ou((Mc(), il), T1, this, 0)), this.o; + }, o.of = function(e) { + return z(this, e); + }, o.pf = function(e) { + return Lf(this, e); + }, o.qf = function(e, t) { + return ht(this, e, t); + }, w(Md, "EMapPropertyHolderImpl", 2083), b(572, 120, { 110: 1, 377: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, yE), o.Lh = function(e, t, i) { + switch (e) { + case 0: + return this.a; + case 1: + return this.b; + } + return tA(this, e, t, i); + }, o.Wh = function(e) { + switch (e) { + case 0: + return this.a != 0; + case 1: + return this.b != 0; + } + return Cx(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 0: + aT(this, $(R(t))); + return; + case 1: + lT(this, $(R(t))); + return; + } + sF(this, e, t); + }, o.ii = function() { + return Mc(), yoe; + }, o.ki = function(e) { + switch (e) { + case 0: + aT(this, 0); + return; + case 1: + lT(this, 0); + return; + } + cF(this, e); + }, o.Ib = function() { + var e; + return this.Db & 64 ? Hs(this) : (e = new ls(Hs(this)), e.a += " (x: ", hg(e, this.a), e.a += ", y: ", hg(e, this.b), e.a += ")", e.a); + }, o.a = 0, o.b = 0, w(Md, "ElkBendPointImpl", 572), b(739, 2083, { 110: 1, 342: 1, 167: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }), o.Lh = function(e, t, i) { + return IY(this, e, t, i); + }, o.Sh = function(e, t, i) { + return Yx(this, e, t, i); + }, o.Uh = function(e, t, i) { + return $$(this, e, t, i); + }, o.Wh = function(e) { + return UQ(this, e); + }, o.bi = function(e, t) { + _Z(this, e, t); + }, o.ii = function() { + return Mc(), Eoe; + }, o.ki = function(e) { + yY(this, e); + }, o.jh = function() { + return this.k; + }, o.kh = function() { + return jM(this); + }, o.Ib = function() { + return ox(this); + }, o.k = null, w(Md, "ElkGraphElementImpl", 739), b(740, 739, { 110: 1, 342: 1, 167: 1, 422: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }), o.Lh = function(e, t, i) { + return BY(this, e, t, i); + }, o.Wh = function(e) { + return UY(this, e); + }, o.bi = function(e, t) { + HZ(this, e, t); + }, o.ii = function() { + return Mc(), Coe; + }, o.ki = function(e) { + QY(this, e); + }, o.lh = function() { + return this.f; + }, o.mh = function() { + return this.g; + }, o.nh = function() { + return this.i; + }, o.oh = function() { + return this.j; + }, o.ph = function(e, t) { + kg(this, e, t); + }, o.qh = function(e, t) { + Ro(this, e, t); + }, o.rh = function(e) { + tu(this, e); + }, o.sh = function(e) { + iu(this, e); + }, o.Ib = function() { + return iF(this); + }, o.f = 0, o.g = 0, o.i = 0, o.j = 0, w(Md, "ElkShapeImpl", 740), b(741, 740, { 110: 1, 342: 1, 84: 1, 167: 1, 422: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }), o.Lh = function(e, t, i) { + return wZ(this, e, t, i); + }, o.Sh = function(e, t, i) { + return $Z(this, e, t, i); + }, o.Uh = function(e, t, i) { + return xZ(this, e, t, i); + }, o.Wh = function(e) { + return uY(this, e); + }, o.bi = function(e, t) { + Wnn(this, e, t); + }, o.ii = function() { + return Mc(), joe; + }, o.ki = function(e) { + hZ(this, e); + }, o.hh = function() { + return !this.d && (this.d = new Nn(Wt, this, 8, 5)), this.d; + }, o.ih = function() { + return !this.e && (this.e = new Nn(Wt, this, 7, 4)), this.e; + }, w(Md, "ElkConnectableShapeImpl", 741), b(326, 739, { 110: 1, 342: 1, 74: 1, 167: 1, 326: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, HO), o.Ah = function(e) { + return OZ(this, e); + }, o.Lh = function(e, t, i) { + switch (e) { + case 3: + return V7(this); + case 4: + return !this.b && (this.b = new Nn(he, this, 4, 7)), this.b; + case 5: + return !this.c && (this.c = new Nn(he, this, 5, 8)), this.c; + case 6: + return !this.a && (this.a = new q(Mt, this, 6, 6)), this.a; + case 7: + return _n(), !this.b && (this.b = new Nn(he, this, 4, 7)), !(this.b.i <= 1 && (!this.c && (this.c = new Nn(he, this, 5, 8)), this.c.i <= 1)); + case 8: + return _n(), !!N5(this); + case 9: + return _n(), !!_0(this); + case 10: + return _n(), !this.b && (this.b = new Nn(he, this, 4, 7)), this.b.i != 0 && (!this.c && (this.c = new Nn(he, this, 5, 8)), this.c.i != 0); + } + return IY(this, e, t, i); + }, o.Sh = function(e, t, i) { + var r; + switch (t) { + case 3: + return this.Cb && (i = (r = this.Db >> 16, r >= 0 ? OZ(this, i) : this.Cb.Th(this, -1 - r, null, i))), aV(this, u(e, 27), i); + case 4: + return !this.b && (this.b = new Nn(he, this, 4, 7)), Vc(this.b, e, i); + case 5: + return !this.c && (this.c = new Nn(he, this, 5, 8)), Vc(this.c, e, i); + case 6: + return !this.a && (this.a = new q(Mt, this, 6, 6)), Vc(this.a, e, i); + } + return Yx(this, e, t, i); + }, o.Uh = function(e, t, i) { + switch (t) { + case 3: + return aV(this, null, i); + case 4: + return !this.b && (this.b = new Nn(he, this, 4, 7)), cr(this.b, e, i); + case 5: + return !this.c && (this.c = new Nn(he, this, 5, 8)), cr(this.c, e, i); + case 6: + return !this.a && (this.a = new q(Mt, this, 6, 6)), cr(this.a, e, i); + } + return $$(this, e, t, i); + }, o.Wh = function(e) { + switch (e) { + case 3: + return !!V7(this); + case 4: + return !!this.b && this.b.i != 0; + case 5: + return !!this.c && this.c.i != 0; + case 6: + return !!this.a && this.a.i != 0; + case 7: + return !this.b && (this.b = new Nn(he, this, 4, 7)), !(this.b.i <= 1 && (!this.c && (this.c = new Nn(he, this, 5, 8)), this.c.i <= 1)); + case 8: + return N5(this); + case 9: + return _0(this); + case 10: + return !this.b && (this.b = new Nn(he, this, 4, 7)), this.b.i != 0 && (!this.c && (this.c = new Nn(he, this, 5, 8)), this.c.i != 0); + } + return UQ(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 3: + AA(this, u(t, 27)); + return; + case 4: + !this.b && (this.b = new Nn(he, this, 4, 7)), me(this.b), !this.b && (this.b = new Nn(he, this, 4, 7)), Ht(this.b, u(t, 16)); + return; + case 5: + !this.c && (this.c = new Nn(he, this, 5, 8)), me(this.c), !this.c && (this.c = new Nn(he, this, 5, 8)), Ht(this.c, u(t, 16)); + return; + case 6: + !this.a && (this.a = new q(Mt, this, 6, 6)), me(this.a), !this.a && (this.a = new q(Mt, this, 6, 6)), Ht(this.a, u(t, 16)); + return; + } + _Z(this, e, t); + }, o.ii = function() { + return Mc(), Pdn; + }, o.ki = function(e) { + switch (e) { + case 3: + AA(this, null); + return; + case 4: + !this.b && (this.b = new Nn(he, this, 4, 7)), me(this.b); + return; + case 5: + !this.c && (this.c = new Nn(he, this, 5, 8)), me(this.c); + return; + case 6: + !this.a && (this.a = new q(Mt, this, 6, 6)), me(this.a); + return; + } + yY(this, e); + }, o.Ib = function() { + return eGn(this); + }, w(Md, "ElkEdgeImpl", 326), b(452, 2083, { 110: 1, 342: 1, 166: 1, 452: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, jE), o.Ah = function(e) { + return AZ(this, e); + }, o.Lh = function(e, t, i) { + switch (e) { + case 1: + return this.j; + case 2: + return this.k; + case 3: + return this.b; + case 4: + return this.c; + case 5: + return !this.a && (this.a = new ti(xo, this, 5)), this.a; + case 6: + return lOn(this); + case 7: + return t ? Px(this) : this.i; + case 8: + return t ? Sx(this) : this.f; + case 9: + return !this.g && (this.g = new Nn(Mt, this, 9, 10)), this.g; + case 10: + return !this.e && (this.e = new Nn(Mt, this, 10, 9)), this.e; + case 11: + return this.d; + } + return jZ(this, e, t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 6: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? AZ(this, i) : this.Cb.Th(this, -1 - c, null, i))), lV(this, u(e, 74), i); + case 9: + return !this.g && (this.g = new Nn(Mt, this, 9, 10)), Vc(this.g, e, i); + case 10: + return !this.e && (this.e = new Nn(Mt, this, 10, 9)), Vc(this.e, e, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (Mc(), bO)), t), 69), s.wk().zk(this, ru(this), t - se((Mc(), bO)), e, i); + }, o.Uh = function(e, t, i) { + switch (t) { + case 5: + return !this.a && (this.a = new ti(xo, this, 5)), cr(this.a, e, i); + case 6: + return lV(this, null, i); + case 9: + return !this.g && (this.g = new Nn(Mt, this, 9, 10)), cr(this.g, e, i); + case 10: + return !this.e && (this.e = new Nn(Mt, this, 10, 9)), cr(this.e, e, i); + } + return lnn(this, e, t, i); + }, o.Wh = function(e) { + switch (e) { + case 1: + return this.j != 0; + case 2: + return this.k != 0; + case 3: + return this.b != 0; + case 4: + return this.c != 0; + case 5: + return !!this.a && this.a.i != 0; + case 6: + return !!lOn(this); + case 7: + return !!this.i; + case 8: + return !!this.f; + case 9: + return !!this.g && this.g.i != 0; + case 10: + return !!this.e && this.e.i != 0; + case 11: + return this.d != null; + } + return gJ(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 1: + H4(this, $(R(t))); + return; + case 2: + U4(this, $(R(t))); + return; + case 3: + _4(this, $(R(t))); + return; + case 4: + q4(this, $(R(t))); + return; + case 5: + !this.a && (this.a = new ti(xo, this, 5)), me(this.a), !this.a && (this.a = new ti(xo, this, 5)), Ht(this.a, u(t, 16)); + return; + case 6: + nqn(this, u(t, 74)); + return; + case 7: + vT(this, u(t, 84)); + return; + case 8: + mT(this, u(t, 84)); + return; + case 9: + !this.g && (this.g = new Nn(Mt, this, 9, 10)), me(this.g), !this.g && (this.g = new Nn(Mt, this, 9, 10)), Ht(this.g, u(t, 16)); + return; + case 10: + !this.e && (this.e = new Nn(Mt, this, 10, 9)), me(this.e), !this.e && (this.e = new Nn(Mt, this, 10, 9)), Ht(this.e, u(t, 16)); + return; + case 11: + DQ(this, Oe(t)); + return; + } + oY(this, e, t); + }, o.ii = function() { + return Mc(), bO; + }, o.ki = function(e) { + switch (e) { + case 1: + H4(this, 0); + return; + case 2: + U4(this, 0); + return; + case 3: + _4(this, 0); + return; + case 4: + q4(this, 0); + return; + case 5: + !this.a && (this.a = new ti(xo, this, 5)), me(this.a); + return; + case 6: + nqn(this, null); + return; + case 7: + vT(this, null); + return; + case 8: + mT(this, null); + return; + case 9: + !this.g && (this.g = new Nn(Mt, this, 9, 10)), me(this.g); + return; + case 10: + !this.e && (this.e = new Nn(Mt, this, 10, 9)), me(this.e); + return; + case 11: + DQ(this, null); + return; + } + JQ(this, e); + }, o.Ib = function() { + return bHn(this); + }, o.b = 0, o.c = 0, o.d = null, o.j = 0, o.k = 0, w(Md, "ElkEdgeSectionImpl", 452), b(158, 120, { 110: 1, 94: 1, 93: 1, 155: 1, 58: 1, 114: 1, 54: 1, 99: 1, 158: 1, 119: 1, 120: 1 }), o.Lh = function(e, t, i) { + var r; + return e == 0 ? (!this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab) : zo(this, e - se(this.ii()), $n((r = u(Un(this, 16), 29), r || this.ii()), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c; + return t == 0 ? (!this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i)) : (c = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), c.wk().zk(this, ru(this), t - se(this.ii()), e, i)); + }, o.Uh = function(e, t, i) { + var r, c; + return t == 0 ? (!this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i)) : (c = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), c.wk().Ak(this, ru(this), t - se(this.ii()), e, i)); + }, o.Wh = function(e) { + var t; + return e == 0 ? !!this.Ab && this.Ab.i != 0 : Uo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.Zh = function(e) { + return utn(this, e); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + } + Jo(this, e - se(this.ii()), $n((i = u(Un(this, 16), 29), i || this.ii()), e), t); + }, o.di = function(e) { + Xp(this, 128, e); + }, o.ii = function() { + return On(), Uoe; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + } + Wo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.pi = function() { + this.Bb |= 1; + }, o.qi = function(e) { + return _5(this, e); + }, o.Bb = 0, w(qn, "EModelElementImpl", 158), b(720, 158, { 110: 1, 94: 1, 93: 1, 480: 1, 155: 1, 58: 1, 114: 1, 54: 1, 99: 1, 158: 1, 119: 1, 120: 1 }, sG), o.ri = function(e, t) { + return IGn(this, e, t); + }, o.si = function(e) { + var t, i, r, c, s; + if (this.a != jo(e) || e.Bb & 256) + throw M(new Gn(hK + e.zb + nb)); + for (r = Hr(e); Pc(r.a).i != 0; ) { + if (i = u(py(r, 0, (t = u(L(Pc(r.a), 0), 89), s = t.c, D(s, 90) ? u(s, 29) : (On(), Is))), 29), K0(i)) + return c = jo(i).wi().si(i), u(c, 54).ci(e), c; + r = Hr(i); + } + return (e.D != null ? e.D : e.B) == "java.util.Map$Entry" ? new XSn(e) : new nW(e); + }, o.ti = function(e, t) { + return z0(this, e, t); + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.a; + } + return zo(this, e - se((On(), $a)), $n((r = u(Un(this, 16), 29), r || $a), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 1: + return this.a && (i = u(this.a, 54).Th(this, 4, Ef, i)), kY(this, u(e, 241), i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), $a)), t), 69), c.wk().zk(this, ru(this), t - se((On(), $a)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 1: + return kY(this, null, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), $a)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), $a)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return !!this.a; + } + return Uo(this, e - se((On(), $a)), $n((t = u(Un(this, 16), 29), t || $a), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + QKn(this, u(t, 241)); + return; + } + Jo(this, e - se((On(), $a)), $n((i = u(Un(this, 16), 29), i || $a), e), t); + }, o.ii = function() { + return On(), $a; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + QKn(this, null); + return; + } + Wo(this, e - se((On(), $a)), $n((t = u(Un(this, 16), 29), t || $a), e)); + }; + var O9, Ldn, Aoe; + w(qn, "EFactoryImpl", 720), b(1037, 720, { 110: 1, 2113: 1, 94: 1, 93: 1, 480: 1, 155: 1, 58: 1, 114: 1, 54: 1, 99: 1, 158: 1, 119: 1, 120: 1 }, hvn), o.ri = function(e, t) { + switch (e.hk()) { + case 12: + return u(t, 149).Pg(); + case 13: + return Jr(t); + default: + throw M(new Gn(ev + e.xe() + nb)); + } + }, o.si = function(e) { + var t, i, r, c, s, f, h, l; + switch (e.G == -1 && (e.G = (t = jo(e), t ? f1(t.vi(), e) : -1)), e.G) { + case 4: + return s = new tG(), s; + case 6: + return f = new Yv(), f; + case 7: + return h = new tz(), h; + case 8: + return r = new HO(), r; + case 9: + return i = new yE(), i; + case 10: + return c = new jE(), c; + case 11: + return l = new lvn(), l; + default: + throw M(new Gn(hK + e.zb + nb)); + } + }, o.ti = function(e, t) { + switch (e.hk()) { + case 13: + case 12: + return null; + default: + throw M(new Gn(ev + e.xe() + nb)); + } + }, w(Md, "ElkGraphFactoryImpl", 1037), b(448, 158, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 114: 1, 54: 1, 99: 1, 158: 1, 119: 1, 120: 1 }), o.Gh = function() { + var e, t; + return t = (e = u(Un(this, 16), 29), tJ(bh(e || this.ii()))), t == null ? (l6(), l6(), MU) : new gAn(this, t); + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.xe(); + } + return zo(this, e - se(this.ii()), $n((r = u(Un(this, 16), 29), r || this.ii()), e), t, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + } + return Uo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + this.ui(Oe(t)); + return; + } + Jo(this, e - se(this.ii()), $n((i = u(Un(this, 16), 29), i || this.ii()), e), t); + }, o.ii = function() { + return On(), Goe; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + this.ui(null); + return; + } + Wo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.xe = function() { + return this.zb; + }, o.ui = function(e) { + Xc(this, e); + }, o.Ib = function() { + return p5(this); + }, o.zb = null, w(qn, "ENamedElementImpl", 448), b(184, 448, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 241: 1, 114: 1, 54: 1, 99: 1, 158: 1, 184: 1, 119: 1, 120: 1, 690: 1 }, qIn), o.Ah = function(e) { + return sKn(this, e); + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return this.yb; + case 3: + return this.xb; + case 4: + return this.sb; + case 5: + return !this.rb && (this.rb = new Hb(this, Cf, this)), this.rb; + case 6: + return !this.vb && (this.vb = new jp(Ef, this, 6, 7)), this.vb; + case 7: + return t ? this.Db >> 16 == 7 ? u(this.Cb, 241) : null : mOn(this); + } + return zo(this, e - se((On(), I1)), $n((r = u(Un(this, 16), 29), r || I1), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 4: + return this.sb && (i = u(this.sb, 54).Th(this, 1, I9, i)), EY(this, u(e, 480), i); + case 5: + return !this.rb && (this.rb = new Hb(this, Cf, this)), Vc(this.rb, e, i); + case 6: + return !this.vb && (this.vb = new jp(Ef, this, 6, 7)), Vc(this.vb, e, i); + case 7: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? sKn(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 7, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), I1)), t), 69), s.wk().zk(this, ru(this), t - se((On(), I1)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 4: + return EY(this, null, i); + case 5: + return !this.rb && (this.rb = new Hb(this, Cf, this)), cr(this.rb, e, i); + case 6: + return !this.vb && (this.vb = new jp(Ef, this, 6, 7)), cr(this.vb, e, i); + case 7: + return So(this, null, 7, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), I1)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), I1)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return this.yb != null; + case 3: + return this.xb != null; + case 4: + return !!this.sb; + case 5: + return !!this.rb && this.rb.i != 0; + case 6: + return !!this.vb && this.vb.i != 0; + case 7: + return !!mOn(this); + } + return Uo(this, e - se((On(), I1)), $n((t = u(Un(this, 16), 29), t || I1), e)); + }, o.Zh = function(e) { + var t; + return t = mTe(this, e), t || utn(this, e); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + Xc(this, Oe(t)); + return; + case 2: + MT(this, Oe(t)); + return; + case 3: + CT(this, Oe(t)); + return; + case 4: + tF(this, u(t, 480)); + return; + case 5: + !this.rb && (this.rb = new Hb(this, Cf, this)), me(this.rb), !this.rb && (this.rb = new Hb(this, Cf, this)), Ht(this.rb, u(t, 16)); + return; + case 6: + !this.vb && (this.vb = new jp(Ef, this, 6, 7)), me(this.vb), !this.vb && (this.vb = new jp(Ef, this, 6, 7)), Ht(this.vb, u(t, 16)); + return; + } + Jo(this, e - se((On(), I1)), $n((i = u(Un(this, 16), 29), i || I1), e), t); + }, o.ei = function(e) { + var t, i; + if (e && this.rb) + for (i = new ne(this.rb); i.e != i.i.gc(); ) + t = ue(i), D(t, 364) && (u(t, 364).w = null); + Xp(this, 64, e); + }, o.ii = function() { + return On(), I1; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + Xc(this, null); + return; + case 2: + MT(this, null); + return; + case 3: + CT(this, null); + return; + case 4: + tF(this, null); + return; + case 5: + !this.rb && (this.rb = new Hb(this, Cf, this)), me(this.rb); + return; + case 6: + !this.vb && (this.vb = new jp(Ef, this, 6, 7)), me(this.vb); + return; + } + Wo(this, e - se((On(), I1)), $n((t = u(Un(this, 16), 29), t || I1), e)); + }, o.pi = function() { + Hx(this); + }, o.vi = function() { + return !this.rb && (this.rb = new Hb(this, Cf, this)), this.rb; + }, o.wi = function() { + return this.sb; + }, o.xi = function() { + return this.ub; + }, o.yi = function() { + return this.xb; + }, o.zi = function() { + return this.yb; + }, o.Ai = function(e) { + this.ub = e; + }, o.Ib = function() { + var e; + return this.Db & 64 ? p5(this) : (e = new ls(p5(this)), e.a += " (nsURI: ", Cr(e, this.yb), e.a += ", nsPrefix: ", Cr(e, this.xb), e.a += ")", e.a); + }, o.xb = null, o.yb = null, w(qn, "EPackageImpl", 184), b(569, 184, { 110: 1, 2115: 1, 569: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 241: 1, 114: 1, 54: 1, 99: 1, 158: 1, 184: 1, 119: 1, 120: 1, 690: 1 }, EHn), o.q = !1, o.r = !1; + var Soe = !1; + w(Md, "ElkGraphPackageImpl", 569), b(366, 740, { 110: 1, 342: 1, 167: 1, 135: 1, 422: 1, 366: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, tG), o.Ah = function(e) { + return SZ(this, e); + }, o.Lh = function(e, t, i) { + switch (e) { + case 7: + return vOn(this); + case 8: + return this.a; + } + return BY(this, e, t, i); + }, o.Sh = function(e, t, i) { + var r; + switch (t) { + case 7: + return this.Cb && (i = (r = this.Db >> 16, r >= 0 ? SZ(this, i) : this.Cb.Th(this, -1 - r, null, i))), wW(this, u(e, 167), i); + } + return Yx(this, e, t, i); + }, o.Uh = function(e, t, i) { + return t == 7 ? wW(this, null, i) : $$(this, e, t, i); + }, o.Wh = function(e) { + switch (e) { + case 7: + return !!vOn(this); + case 8: + return !An("", this.a); + } + return UY(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 7: + sen(this, u(t, 167)); + return; + case 8: + AQ(this, Oe(t)); + return; + } + HZ(this, e, t); + }, o.ii = function() { + return Mc(), Idn; + }, o.ki = function(e) { + switch (e) { + case 7: + sen(this, null); + return; + case 8: + AQ(this, ""); + return; + } + QY(this, e); + }, o.Ib = function() { + return l_n(this); + }, o.a = "", w(Md, "ElkLabelImpl", 366), b(207, 741, { 110: 1, 342: 1, 84: 1, 167: 1, 27: 1, 422: 1, 207: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, Yv), o.Ah = function(e) { + return DZ(this, e); + }, o.Lh = function(e, t, i) { + switch (e) { + case 9: + return !this.c && (this.c = new q(Qu, this, 9, 9)), this.c; + case 10: + return !this.a && (this.a = new q(Ye, this, 10, 11)), this.a; + case 11: + return At(this); + case 12: + return !this.b && (this.b = new q(Wt, this, 12, 3)), this.b; + case 13: + return _n(), !this.a && (this.a = new q(Ye, this, 10, 11)), this.a.i > 0; + } + return wZ(this, e, t, i); + }, o.Sh = function(e, t, i) { + var r; + switch (t) { + case 9: + return !this.c && (this.c = new q(Qu, this, 9, 9)), Vc(this.c, e, i); + case 10: + return !this.a && (this.a = new q(Ye, this, 10, 11)), Vc(this.a, e, i); + case 11: + return this.Cb && (i = (r = this.Db >> 16, r >= 0 ? DZ(this, i) : this.Cb.Th(this, -1 - r, null, i))), jV(this, u(e, 27), i); + case 12: + return !this.b && (this.b = new q(Wt, this, 12, 3)), Vc(this.b, e, i); + } + return $Z(this, e, t, i); + }, o.Uh = function(e, t, i) { + switch (t) { + case 9: + return !this.c && (this.c = new q(Qu, this, 9, 9)), cr(this.c, e, i); + case 10: + return !this.a && (this.a = new q(Ye, this, 10, 11)), cr(this.a, e, i); + case 11: + return jV(this, null, i); + case 12: + return !this.b && (this.b = new q(Wt, this, 12, 3)), cr(this.b, e, i); + } + return xZ(this, e, t, i); + }, o.Wh = function(e) { + switch (e) { + case 9: + return !!this.c && this.c.i != 0; + case 10: + return !!this.a && this.a.i != 0; + case 11: + return !!At(this); + case 12: + return !!this.b && this.b.i != 0; + case 13: + return !this.a && (this.a = new q(Ye, this, 10, 11)), this.a.i > 0; + } + return uY(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 9: + !this.c && (this.c = new q(Qu, this, 9, 9)), me(this.c), !this.c && (this.c = new q(Qu, this, 9, 9)), Ht(this.c, u(t, 16)); + return; + case 10: + !this.a && (this.a = new q(Ye, this, 10, 11)), me(this.a), !this.a && (this.a = new q(Ye, this, 10, 11)), Ht(this.a, u(t, 16)); + return; + case 11: + SA(this, u(t, 27)); + return; + case 12: + !this.b && (this.b = new q(Wt, this, 12, 3)), me(this.b), !this.b && (this.b = new q(Wt, this, 12, 3)), Ht(this.b, u(t, 16)); + return; + } + Wnn(this, e, t); + }, o.ii = function() { + return Mc(), Odn; + }, o.ki = function(e) { + switch (e) { + case 9: + !this.c && (this.c = new q(Qu, this, 9, 9)), me(this.c); + return; + case 10: + !this.a && (this.a = new q(Ye, this, 10, 11)), me(this.a); + return; + case 11: + SA(this, null); + return; + case 12: + !this.b && (this.b = new q(Wt, this, 12, 3)), me(this.b); + return; + } + hZ(this, e); + }, o.Ib = function() { + return Cen(this); + }, w(Md, "ElkNodeImpl", 207), b(193, 741, { 110: 1, 342: 1, 84: 1, 167: 1, 123: 1, 422: 1, 193: 1, 96: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, tz), o.Ah = function(e) { + return PZ(this, e); + }, o.Lh = function(e, t, i) { + return e == 9 ? Sf(this) : wZ(this, e, t, i); + }, o.Sh = function(e, t, i) { + var r; + switch (t) { + case 9: + return this.Cb && (i = (r = this.Db >> 16, r >= 0 ? PZ(this, i) : this.Cb.Th(this, -1 - r, null, i))), dV(this, u(e, 27), i); + } + return $Z(this, e, t, i); + }, o.Uh = function(e, t, i) { + return t == 9 ? dV(this, null, i) : xZ(this, e, t, i); + }, o.Wh = function(e) { + return e == 9 ? !!Sf(this) : uY(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 9: + ren(this, u(t, 27)); + return; + } + Wnn(this, e, t); + }, o.ii = function() { + return Mc(), Ddn; + }, o.ki = function(e) { + switch (e) { + case 9: + ren(this, null); + return; + } + hZ(this, e); + }, o.Ib = function() { + return Zqn(this); + }, w(Md, "ElkPortImpl", 193); + var Poe = xt(or, "BasicEMap/Entry"); + b(1122, 120, { 110: 1, 44: 1, 94: 1, 93: 1, 136: 1, 58: 1, 114: 1, 54: 1, 99: 1, 119: 1, 120: 1 }, lvn), o.Fb = function(e) { + return this === e; + }, o.ld = function() { + return this.b; + }, o.Hb = function() { + return l0(this); + }, o.Di = function(e) { + SQ(this, u(e, 149)); + }, o.Lh = function(e, t, i) { + switch (e) { + case 0: + return this.b; + case 1: + return this.c; + } + return tA(this, e, t, i); + }, o.Wh = function(e) { + switch (e) { + case 0: + return !!this.b; + case 1: + return this.c != null; + } + return Cx(this, e); + }, o.bi = function(e, t) { + switch (e) { + case 0: + SQ(this, u(t, 149)); + return; + case 1: + TQ(this, t); + return; + } + sF(this, e, t); + }, o.ii = function() { + return Mc(), il; + }, o.ki = function(e) { + switch (e) { + case 0: + SQ(this, null); + return; + case 1: + TQ(this, null); + return; + } + cF(this, e); + }, o.Bi = function() { + var e; + return this.a == -1 && (e = this.b, this.a = e ? mt(e) : 0), this.a; + }, o.md = function() { + return this.c; + }, o.Ci = function(e) { + this.a = e; + }, o.nd = function(e) { + var t; + return t = this.c, TQ(this, e), t; + }, o.Ib = function() { + var e; + return this.Db & 64 ? Hs(this) : (e = new x1(), Re(Re(Re(e, this.b ? this.b.Pg() : pu), iR), O6(this.c)), e.a); + }, o.a = -1, o.c = null; + var T1 = w(Md, "ElkPropertyToValueMapEntryImpl", 1122); + b(996, 1, {}, bvn), w(Ui, "JsonAdapter", 996), b(216, 63, Pl, eh), w(Ui, "JsonImportException", 216), b(868, 1, {}, fKn), w(Ui, "JsonImporter", 868), b(903, 1, {}, gMn), w(Ui, "JsonImporter/lambda$0$Type", 903), b(904, 1, {}, pMn), w(Ui, "JsonImporter/lambda$1$Type", 904), b(912, 1, {}, Kkn), w(Ui, "JsonImporter/lambda$10$Type", 912), b(914, 1, {}, mMn), w(Ui, "JsonImporter/lambda$11$Type", 914), b(915, 1, {}, vMn), w(Ui, "JsonImporter/lambda$12$Type", 915), b(921, 1, {}, OIn), w(Ui, "JsonImporter/lambda$13$Type", 921), b(920, 1, {}, DIn), w(Ui, "JsonImporter/lambda$14$Type", 920), b(916, 1, {}, kMn), w(Ui, "JsonImporter/lambda$15$Type", 916), b(917, 1, {}, yMn), w(Ui, "JsonImporter/lambda$16$Type", 917), b(918, 1, {}, jMn), w(Ui, "JsonImporter/lambda$17$Type", 918), b(919, 1, {}, EMn), w(Ui, "JsonImporter/lambda$18$Type", 919), b(924, 1, {}, _kn), w(Ui, "JsonImporter/lambda$19$Type", 924), b(905, 1, {}, Hkn), w(Ui, "JsonImporter/lambda$2$Type", 905), b(922, 1, {}, qkn), w(Ui, "JsonImporter/lambda$20$Type", 922), b(923, 1, {}, Ukn), w(Ui, "JsonImporter/lambda$21$Type", 923), b(927, 1, {}, Gkn), w(Ui, "JsonImporter/lambda$22$Type", 927), b(925, 1, {}, zkn), w(Ui, "JsonImporter/lambda$23$Type", 925), b(926, 1, {}, Xkn), w(Ui, "JsonImporter/lambda$24$Type", 926), b(929, 1, {}, Vkn), w(Ui, "JsonImporter/lambda$25$Type", 929), b(928, 1, {}, Wkn), w(Ui, "JsonImporter/lambda$26$Type", 928), b(930, 1, re, CMn), o.Cd = function(e) { + D4e(this.b, this.a, Oe(e)); + }, w(Ui, "JsonImporter/lambda$27$Type", 930), b(931, 1, re, MMn), o.Cd = function(e) { + L4e(this.b, this.a, Oe(e)); + }, w(Ui, "JsonImporter/lambda$28$Type", 931), b(932, 1, {}, TMn), w(Ui, "JsonImporter/lambda$29$Type", 932), b(908, 1, {}, Jkn), w(Ui, "JsonImporter/lambda$3$Type", 908), b(933, 1, {}, AMn), w(Ui, "JsonImporter/lambda$30$Type", 933), b(934, 1, {}, Qkn), w(Ui, "JsonImporter/lambda$31$Type", 934), b(935, 1, {}, Ykn), w(Ui, "JsonImporter/lambda$32$Type", 935), b(936, 1, {}, Zkn), w(Ui, "JsonImporter/lambda$33$Type", 936), b(937, 1, {}, nyn), w(Ui, "JsonImporter/lambda$34$Type", 937), b(870, 1, {}, eyn), w(Ui, "JsonImporter/lambda$35$Type", 870), b(941, 1, {}, ySn), w(Ui, "JsonImporter/lambda$36$Type", 941), b(938, 1, re, tyn), o.Cd = function(e) { + B3e(this.a, u(e, 377)); + }, w(Ui, "JsonImporter/lambda$37$Type", 938), b(939, 1, re, SMn), o.Cd = function(e) { + vle(this.a, this.b, u(e, 166)); + }, w(Ui, "JsonImporter/lambda$38$Type", 939), b(940, 1, re, PMn), o.Cd = function(e) { + kle(this.a, this.b, u(e, 166)); + }, w(Ui, "JsonImporter/lambda$39$Type", 940), b(906, 1, {}, iyn), w(Ui, "JsonImporter/lambda$4$Type", 906), b(942, 1, re, ryn), o.Cd = function(e) { + R3e(this.a, u(e, 8)); + }, w(Ui, "JsonImporter/lambda$40$Type", 942), b(907, 1, {}, cyn), w(Ui, "JsonImporter/lambda$5$Type", 907), b(911, 1, {}, uyn), w(Ui, "JsonImporter/lambda$6$Type", 911), b(909, 1, {}, oyn), w(Ui, "JsonImporter/lambda$7$Type", 909), b(910, 1, {}, syn), w(Ui, "JsonImporter/lambda$8$Type", 910), b(913, 1, {}, fyn), w(Ui, "JsonImporter/lambda$9$Type", 913), b(961, 1, re, hyn), o.Cd = function(e) { + Ip(this.a, new qb(Oe(e))); + }, w(Ui, "JsonMetaDataConverter/lambda$0$Type", 961), b(962, 1, re, lyn), o.Cd = function(e) { + Iwe(this.a, u(e, 245)); + }, w(Ui, "JsonMetaDataConverter/lambda$1$Type", 962), b(963, 1, re, ayn), o.Cd = function(e) { + P2e(this.a, u(e, 143)); + }, w(Ui, "JsonMetaDataConverter/lambda$2$Type", 963), b(964, 1, re, dyn), o.Cd = function(e) { + Owe(this.a, u(e, 170)); + }, w(Ui, "JsonMetaDataConverter/lambda$3$Type", 964), b(245, 22, { 3: 1, 34: 1, 22: 1, 245: 1 }, gp); + var wO, gO, mU, pO, mO, vO, vU, kU, kO = we(Dy, "GraphFeature", 245, ke, bme, ibe), Ioe; + b(11, 1, { 34: 1, 149: 1 }, lt, Dt, Mn, Ni), o.Fd = function(e) { + return M1e(this, u(e, 149)); + }, o.Fb = function(e) { + return eOn(this, e); + }, o.Sg = function() { + return rn(this); + }, o.Pg = function() { + return this.b; + }, o.Hb = function() { + return t1(this.b); + }, o.Ib = function() { + return this.b; + }, w(Dy, "Property", 11), b(671, 1, Ne, tD), o.Ne = function(e, t) { + return $5e(this, u(e, 96), u(t, 96)); + }, o.Fb = function(e) { + return this === e; + }, o.Oe = function() { + return new Te(this); + }, w(Dy, "PropertyHolderComparator", 671), b(709, 1, Pi, FG), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return x4e(this); + }, o.Qb = function() { + fEn(); + }, o.Ob = function() { + return !!this.a; + }, w(_S, "ElkGraphUtil/AncestorIterator", 709); + var Ndn = xt(or, "EList"); + b(70, 56, { 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 70: 1, 61: 1 }), o.bd = function(e, t) { + v5(this, e, t); + }, o.Fc = function(e) { + return ve(this, e); + }, o.cd = function(e, t) { + return QQ(this, e, t); + }, o.Gc = function(e) { + return Ht(this, e); + }, o.Ii = function() { + return new yp(this); + }, o.Ji = function() { + return new M7(this); + }, o.Ki = function(e) { + return pk(this, e); + }, o.Li = function() { + return !0; + }, o.Mi = function(e, t) { + }, o.Ni = function() { + }, o.Oi = function(e, t) { + t$(this, e, t); + }, o.Pi = function(e, t, i) { + }, o.Qi = function(e, t) { + }, o.Ri = function(e, t, i) { + }, o.Fb = function(e) { + return Fqn(this, e); + }, o.Hb = function() { + return XQ(this); + }, o.Si = function() { + return !1; + }, o.Kc = function() { + return new ne(this); + }, o.ed = function() { + return new kp(this); + }, o.fd = function(e) { + var t; + if (t = this.gc(), e < 0 || e > t) + throw M(new Kb(e, t)); + return new oN(this, e); + }, o.Ui = function(e, t) { + this.Ti(e, this.dd(t)); + }, o.Mc = function(e) { + return rT(this, e); + }, o.Wi = function(e, t) { + return t; + }, o.hd = function(e, t) { + return Rg(this, e, t); + }, o.Ib = function() { + return _Y(this); + }, o.Yi = function() { + return !0; + }, o.Zi = function(e, t) { + return rm(this, t); + }, w(or, "AbstractEList", 70), b(66, 70, Ch, EE, S0, _Q), o.Ei = function(e, t) { + return Zx(this, e, t); + }, o.Fi = function(e) { + return NRn(this, e); + }, o.Gi = function(e, t) { + Dk(this, e, t); + }, o.Hi = function(e) { + ek(this, e); + }, o.$i = function(e) { + return eQ(this, e); + }, o.$b = function() { + e5(this); + }, o.Hc = function(e) { + return km(this, e); + }, o.Xb = function(e) { + return L(this, e); + }, o._i = function(e) { + var t, i, r; + ++this.j, i = this.g == null ? 0 : this.g.length, e > i && (r = this.g, t = i + (i / 2 | 0) + 4, t < e && (t = e), this.g = this.aj(t), r != null && Oc(r, 0, this.g, 0, this.i)); + }, o.dd = function(e) { + return tKn(this, e); + }, o.dc = function() { + return this.i == 0; + }, o.Ti = function(e, t) { + return lF(this, e, t); + }, o.aj = function(e) { + return K(ki, Bn, 1, e, 5, 1); + }, o.Vi = function(e) { + return this.g[e]; + }, o.gd = function(e) { + return Jp(this, e); + }, o.Xi = function(e, t) { + return d$(this, e, t); + }, o.gc = function() { + return this.i; + }, o.Pc = function() { + return EJ(this); + }, o.Qc = function(e) { + return JY(this, e); + }, o.i = 0; + var $dn = w(or, "BasicEList", 66), xdn = xt(or, "TreeIterator"); + b(708, 66, yK), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.g == null && !this.c ? uJ(this) : this.g == null || this.i != 0 && u(this.g[this.i - 1], 51).Ob(); + }, o.Pb = function() { + return CA(this); + }, o.Qb = function() { + if (!this.e) + throw M(new Or("There is no valid object to remove.")); + this.e.Qb(); + }, o.c = !1, w(or, "AbstractTreeIterator", 708), b(700, 708, yK, SX), o.bj = function(e) { + var t; + return t = u(e, 58).Gh().Kc(), D(t, 287) && u(t, 287).wl(new wvn()), t; + }, w(_S, "ElkGraphUtil/PropertiesSkippingTreeIterator", 700), b(965, 1, {}, wvn), w(_S, "ElkGraphUtil/PropertiesSkippingTreeIterator/1", 965); + var hE, yU, lE = w(_S, "ElkReflect", null); + b(901, 1, Mw, gvn), o.Rg = function(e) { + return $M(), O2e(u(e, 181)); + }, w(_S, "ElkReflect/lambda$0$Type", 901); + var Da; + xt(or, "ResourceLocator"), b(1065, 1, {}), w(or, "DelegatingResourceLocator", 1065), b(1066, 1065, {}), w("org.eclipse.emf.common", "EMFPlugin", 1066); + var jU = xt(YWn, "Adapter"), DNe = xt(YWn, "Notification"); + b(1174, 1, qcn), o.cj = function() { + return this.d; + }, o.dj = function(e) { + }, o.ej = function(e) { + this.d = e; + }, o.fj = function(e) { + this.d == e && (this.d = null); + }, o.d = null, w(g3, "AdapterImpl", 1174), b(2093, 70, ZWn), o.Ei = function(e, t) { + return GY(this, e, t); + }, o.Fi = function(e) { + var t, i, r; + if (++this.j, e.dc()) + return !1; + for (t = this.Ej(), r = e.Kc(); r.Ob(); ) + i = r.Pb(), this.rj(this.Zi(t, i)), ++t; + return !0; + }, o.Gi = function(e, t) { + OAn(this, e, t); + }, o.Hi = function(e) { + tIn(this, e); + }, o.pj = function() { + return this.sj(); + }, o.$b = function() { + S7(this, this.Ej(), this.Fj()); + }, o.Hc = function(e) { + return this.uj(e); + }, o.Ic = function(e) { + return this.vj(e); + }, o.qj = function(e, t) { + this.Bj().Um(); + }, o.rj = function(e) { + this.Bj().Um(); + }, o.sj = function() { + return this.Bj(); + }, o.tj = function() { + this.Bj().Um(); + }, o.uj = function(e) { + return this.Bj().Um(); + }, o.vj = function(e) { + return this.Bj().Um(); + }, o.wj = function(e) { + return this.Bj().Um(); + }, o.xj = function(e) { + return this.Bj().Um(); + }, o.yj = function() { + return this.Bj().Um(); + }, o.zj = function(e) { + return this.Bj().Um(); + }, o.Aj = function() { + return this.Bj().Um(); + }, o.Cj = function(e) { + return this.Bj().Um(); + }, o.Dj = function(e, t) { + return this.Bj().Um(); + }, o.Ej = function() { + return this.Bj().Um(); + }, o.Fj = function() { + return this.Bj().Um(); + }, o.Gj = function(e) { + return this.Bj().Um(); + }, o.Hj = function() { + return this.Bj().Um(); + }, o.Fb = function(e) { + return this.wj(e); + }, o.Xb = function(e) { + return this.Wi(e, this.xj(e)); + }, o.Hb = function() { + return this.yj(); + }, o.dd = function(e) { + return this.zj(e); + }, o.dc = function() { + return this.Aj(); + }, o.Ti = function(e, t) { + return snn(this, e, t); + }, o.Vi = function(e) { + return this.xj(e); + }, o.gd = function(e) { + return tM(this, e); + }, o.Mc = function(e) { + var t; + return t = this.dd(e), t >= 0 ? (this.gd(t), !0) : !1; + }, o.Xi = function(e, t) { + return this.Dj(e, this.Zi(e, t)); + }, o.gc = function() { + return this.Ej(); + }, o.Pc = function() { + return this.Fj(); + }, o.Qc = function(e) { + return this.Gj(e); + }, o.Ib = function() { + return this.Hj(); + }, w(or, "DelegatingEList", 2093), b(2094, 2093, ZWn), o.Ei = function(e, t) { + return xen(this, e, t); + }, o.Fi = function(e) { + return this.Ei(this.Ej(), e); + }, o.Gi = function(e, t) { + CHn(this, e, t); + }, o.Hi = function(e) { + aHn(this, e); + }, o.Li = function() { + return !this.Mj(); + }, o.$b = function() { + X5(this); + }, o.Ij = function(e, t, i, r, c) { + return new nOn(this, e, t, i, r, c); + }, o.Jj = function(e) { + rt(this.jj(), e); + }, o.Kj = function() { + return null; + }, o.Lj = function() { + return -1; + }, o.jj = function() { + return null; + }, o.Mj = function() { + return !1; + }, o.Nj = function(e, t) { + return t; + }, o.Oj = function(e, t) { + return t; + }, o.Pj = function() { + return !1; + }, o.Qj = function() { + return !this.Aj(); + }, o.Ti = function(e, t) { + var i, r; + return this.Pj() ? (r = this.Qj(), i = snn(this, e, t), this.Jj(this.Ij(7, Y(t), i, e, r)), i) : snn(this, e, t); + }, o.gd = function(e) { + var t, i, r, c; + return this.Pj() ? (i = null, r = this.Qj(), t = this.Ij(4, c = tM(this, e), null, e, r), this.Mj() && c ? (i = this.Oj(c, i), i ? (i.nj(t), i.oj()) : this.Jj(t)) : i ? (i.nj(t), i.oj()) : this.Jj(t), c) : (c = tM(this, e), this.Mj() && c && (i = this.Oj(c, null), i && i.oj()), c); + }, o.Xi = function(e, t) { + return OUn(this, e, t); + }, w(g3, "DelegatingNotifyingListImpl", 2094), b(152, 1, Wy), o.nj = function(e) { + return XZ(this, e); + }, o.oj = function() { + h$(this); + }, o.gj = function() { + return this.d; + }, o.Kj = function() { + return null; + }, o.Rj = function() { + return null; + }, o.hj = function(e) { + return -1; + }, o.ij = function() { + return mqn(this); + }, o.jj = function() { + return null; + }, o.kj = function() { + return den(this); + }, o.lj = function() { + return this.o < 0 ? this.o < -2 ? -2 - this.o - 1 : -1 : this.o; + }, o.Sj = function() { + return !1; + }, o.mj = function(e) { + var t, i, r, c, s, f, h, l, a, d, g; + switch (this.d) { + case 1: + case 2: + switch (c = e.gj(), c) { + case 1: + case 2: + if (s = e.jj(), x(s) === x(this.jj()) && this.hj(null) == e.hj(null)) + return this.g = e.ij(), e.gj() == 1 && (this.d = 1), !0; + } + case 4: { + switch (c = e.gj(), c) { + case 4: { + if (s = e.jj(), x(s) === x(this.jj()) && this.hj(null) == e.hj(null)) + return a = Zen(this), l = this.o < 0 ? this.o < -2 ? -2 - this.o - 1 : -1 : this.o, f = e.lj(), this.d = 6, g = new S0(2), l <= f ? (ve(g, this.n), ve(g, e.kj()), this.g = A(T(ye, 1), _e, 28, 15, [this.o = l, f + 1])) : (ve(g, e.kj()), ve(g, this.n), this.g = A(T(ye, 1), _e, 28, 15, [this.o = f, l])), this.n = g, a || (this.o = -2 - this.o - 1), !0; + break; + } + } + break; + } + case 6: { + switch (c = e.gj(), c) { + case 4: { + if (s = e.jj(), x(s) === x(this.jj()) && this.hj(null) == e.hj(null)) { + for (a = Zen(this), f = e.lj(), d = u(this.g, 53), r = K(ye, _e, 28, d.length + 1, 15, 1), t = 0; t < d.length && (h = d[t], h <= f); ) + r[t++] = h, ++f; + for (i = u(this.n, 15), i.bd(t, e.kj()), r[t] = f; ++t < r.length; ) + r[t] = d[t - 1]; + return this.g = r, a || (this.o = -2 - r[0]), !0; + } + break; + } + } + break; + } + } + return !1; + }, o.Ib = function() { + var e, t, i, r; + switch (r = new ls(Xa(this.Rm) + "@" + (t = mt(this) >>> 0, t.toString(16))), r.a += " (eventType: ", this.d) { + case 1: { + r.a += "SET"; + break; + } + case 2: { + r.a += "UNSET"; + break; + } + case 3: { + r.a += "ADD"; + break; + } + case 5: { + r.a += "ADD_MANY"; + break; + } + case 4: { + r.a += "REMOVE"; + break; + } + case 6: { + r.a += "REMOVE_MANY"; + break; + } + case 7: { + r.a += "MOVE"; + break; + } + case 8: { + r.a += "REMOVING_ADAPTER"; + break; + } + case 9: { + r.a += "RESOLVE"; + break; + } + default: { + TD(r, this.d); + break; + } + } + if (cUn(this) && (r.a += ", touch: true"), r.a += ", position: ", TD(r, this.o < 0 ? this.o < -2 ? -2 - this.o - 1 : -1 : this.o), r.a += ", notifier: ", M6(r, this.jj()), r.a += ", feature: ", M6(r, this.Kj()), r.a += ", oldValue: ", M6(r, den(this)), r.a += ", newValue: ", this.d == 6 && D(this.g, 53)) { + for (i = u(this.g, 53), r.a += "[", e = 0; e < i.length; ) + r.a += i[e], ++e < i.length && (r.a += ur); + r.a += "]"; + } else + M6(r, mqn(this)); + return r.a += ", isTouch: ", ql(r, cUn(this)), r.a += ", wasSet: ", ql(r, Zen(this)), r.a += ")", r.a; + }, o.d = 0, o.e = 0, o.f = 0, o.j = 0, o.k = 0, o.o = 0, o.p = 0, w(g3, "NotificationImpl", 152), b(1188, 152, Wy, nOn), o.Kj = function() { + return this.a.Kj(); + }, o.hj = function(e) { + return this.a.Lj(); + }, o.jj = function() { + return this.a.jj(); + }, w(g3, "DelegatingNotifyingListImpl/1", 1188), b(251, 66, Ch, pvn, F1), o.Fc = function(e) { + return ABn(this, u(e, 378)); + }, o.nj = function(e) { + return ABn(this, e); + }, o.oj = function() { + var e, t, i; + for (e = 0; e < this.i; ++e) + t = u(this.g[e], 378), i = t.jj(), i != null && t.gj() != -1 && u(i, 94).xh(t); + }, o.aj = function(e) { + return K(DNe, Bn, 378, e, 0, 1); + }, w(g3, "NotificationChainImpl", 251), b(1524, 93, lWn), o.uh = function() { + return this.e; + }, o.wh = function() { + return (this.f & 1) != 0; + }, o.f = 1, w(g3, "NotifierImpl", 1524), b(2091, 66, Ch), o.Ei = function(e, t) { + return DF(this, e, t); + }, o.Fi = function(e) { + return this.Ei(this.i, e); + }, o.Gi = function(e, t) { + Knn(this, e, t); + }, o.Hi = function(e) { + aF(this, e); + }, o.Li = function() { + return !this.Mj(); + }, o.$b = function() { + me(this); + }, o.Ij = function(e, t, i, r, c) { + return new ZIn(this, e, t, i, r, c); + }, o.Jj = function(e) { + rt(this.jj(), e); + }, o.Kj = function() { + return null; + }, o.Lj = function() { + return -1; + }, o.jj = function() { + return null; + }, o.Mj = function() { + return !1; + }, o.Tj = function() { + return !1; + }, o.Nj = function(e, t) { + return t; + }, o.Oj = function(e, t) { + return t; + }, o.Pj = function() { + return !1; + }, o.Qj = function() { + return this.i != 0; + }, o.Ti = function(e, t) { + return k5(this, e, t); + }, o.gd = function(e) { + return dw(this, e); + }, o.Xi = function(e, t) { + return VUn(this, e, t); + }, o.Uj = function(e, t) { + return t; + }, o.Vj = function(e, t) { + return t; + }, o.Wj = function(e, t, i) { + return i; + }, w(g3, "NotifyingListImpl", 2091), b(1187, 152, Wy, ZIn), o.Kj = function() { + return this.a.Kj(); + }, o.hj = function(e) { + return this.a.Lj(); + }, o.jj = function() { + return this.a.jj(); + }, w(g3, "NotifyingListImpl/1", 1187), b(966, 66, Ch, NAn), o.Hc = function(e) { + return this.i > 10 ? ((!this.b || this.c.j != this.a) && (this.b = new F6(this), this.a = this.j), sf(this.b, e)) : km(this, e); + }, o.Yi = function() { + return !0; + }, o.a = 0, w(or, "AbstractEList/1", 966), b(302, 77, AB, Kb), w(or, "AbstractEList/BasicIndexOutOfBoundsException", 302), b(37, 1, Pi, ne), o.Nb = function(e) { + _i(this, e); + }, o.Xj = function() { + if (this.i.j != this.f) + throw M(new Bo()); + }, o.Yj = function() { + return ue(this); + }, o.Ob = function() { + return this.e != this.i.gc(); + }, o.Pb = function() { + return this.Yj(); + }, o.Qb = function() { + O5(this); + }, o.e = 0, o.f = 0, o.g = -1, w(or, "AbstractEList/EIterator", 37), b(286, 37, Hh, kp, oN), o.Qb = function() { + O5(this); + }, o.Rb = function(e) { + DBn(this, e); + }, o.Zj = function() { + var e; + try { + return e = this.d.Xb(--this.e), this.Xj(), this.g = this.e, e; + } catch (t) { + throw t = It(t), D(t, 77) ? (this.Xj(), M(new nc())) : M(t); + } + }, o.$j = function(e) { + FRn(this, e); + }, o.Sb = function() { + return this.e != 0; + }, o.Tb = function() { + return this.e; + }, o.Ub = function() { + return this.Zj(); + }, o.Vb = function() { + return this.e - 1; + }, o.Wb = function(e) { + this.$j(e); + }, w(or, "AbstractEList/EListIterator", 286), b(355, 37, Pi, yp), o.Yj = function() { + return Mx(this); + }, o.Qb = function() { + throw M(new Pe()); + }, w(or, "AbstractEList/NonResolvingEIterator", 355), b(398, 286, Hh, M7, PV), o.Rb = function(e) { + throw M(new Pe()); + }, o.Yj = function() { + var e; + try { + return e = this.c.Vi(this.e), this.Xj(), this.g = this.e++, e; + } catch (t) { + throw t = It(t), D(t, 77) ? (this.Xj(), M(new nc())) : M(t); + } + }, o.Zj = function() { + var e; + try { + return e = this.c.Vi(--this.e), this.Xj(), this.g = this.e, e; + } catch (t) { + throw t = It(t), D(t, 77) ? (this.Xj(), M(new nc())) : M(t); + } + }, o.Qb = function() { + throw M(new Pe()); + }, o.Wb = function(e) { + throw M(new Pe()); + }, w(or, "AbstractEList/NonResolvingEListIterator", 398), b(2080, 70, nJn), o.Ei = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p; + if (c = t.gc(), c != 0) { + for (a = u(Un(this.a, 4), 129), d = a == null ? 0 : a.length, p = d + c, r = V$(this, p), g = d - e, g > 0 && Oc(a, e, r, e + c, g), l = t.Kc(), f = 0; f < c; ++f) + h = l.Pb(), i = e + f, mL(r, i, rm(this, h)); + for (gm(this, r), s = 0; s < c; ++s) + h = r[e], this.Mi(e, h), ++e; + return !0; + } else + return ++this.j, !1; + }, o.Fi = function(e) { + var t, i, r, c, s, f, h, l, a; + if (r = e.gc(), r != 0) { + for (l = (i = u(Un(this.a, 4), 129), i == null ? 0 : i.length), a = l + r, t = V$(this, a), h = e.Kc(), s = l; s < a; ++s) + f = h.Pb(), mL(t, s, rm(this, f)); + for (gm(this, t), c = l; c < a; ++c) + f = t[c], this.Mi(c, f); + return !0; + } else + return ++this.j, !1; + }, o.Gi = function(e, t) { + var i, r, c, s; + r = u(Un(this.a, 4), 129), c = r == null ? 0 : r.length, i = V$(this, c + 1), s = rm(this, t), e != c && Oc(r, e, i, e + 1, c - e), Rt(i, e, s), gm(this, i), this.Mi(e, t); + }, o.Hi = function(e) { + var t, i, r; + r = (i = u(Un(this.a, 4), 129), i == null ? 0 : i.length), t = V$(this, r + 1), mL(t, r, rm(this, e)), gm(this, t), this.Mi(r, e); + }, o.Ii = function() { + return new CLn(this); + }, o.Ji = function() { + return new xPn(this); + }, o.Ki = function(e) { + var t, i; + if (i = (t = u(Un(this.a, 4), 129), t == null ? 0 : t.length), e < 0 || e > i) + throw M(new Kb(e, i)); + return new jIn(this, e); + }, o.$b = function() { + var e, t; + ++this.j, e = u(Un(this.a, 4), 129), t = e == null ? 0 : e.length, gm(this, null), t$(this, t, e); + }, o.Hc = function(e) { + var t, i, r, c, s; + if (t = u(Un(this.a, 4), 129), t != null) { + if (e != null) { + for (r = t, c = 0, s = r.length; c < s; ++c) + if (i = r[c], ct(e, i)) + return !0; + } else + for (r = t, c = 0, s = r.length; c < s; ++c) + if (i = r[c], x(i) === x(e)) + return !0; + } + return !1; + }, o.Xb = function(e) { + var t, i; + if (t = u(Un(this.a, 4), 129), i = t == null ? 0 : t.length, e >= i) + throw M(new Kb(e, i)); + return t[e]; + }, o.dd = function(e) { + var t, i, r; + if (t = u(Un(this.a, 4), 129), t != null) { + if (e != null) { + for (i = 0, r = t.length; i < r; ++i) + if (ct(e, t[i])) + return i; + } else + for (i = 0, r = t.length; i < r; ++i) + if (x(t[i]) === x(e)) + return i; + } + return -1; + }, o.dc = function() { + return u(Un(this.a, 4), 129) == null; + }, o.Kc = function() { + return new ELn(this); + }, o.ed = function() { + return new $Pn(this); + }, o.fd = function(e) { + var t, i; + if (i = (t = u(Un(this.a, 4), 129), t == null ? 0 : t.length), e < 0 || e > i) + throw M(new Kb(e, i)); + return new yIn(this, e); + }, o.Ti = function(e, t) { + var i, r, c; + if (i = HBn(this), c = i == null ? 0 : i.length, e >= c) + throw M(new Ir(vK + e + Td + c)); + if (t >= c) + throw M(new Ir(kK + t + Td + c)); + return r = i[t], e != t && (e < t ? Oc(i, e, i, e + 1, t - e) : Oc(i, t + 1, i, t, e - t), Rt(i, e, r), gm(this, i)), r; + }, o.Vi = function(e) { + return u(Un(this.a, 4), 129)[e]; + }, o.gd = function(e) { + return wCe(this, e); + }, o.Xi = function(e, t) { + var i, r; + return i = HBn(this), r = i[e], mL(i, e, rm(this, t)), gm(this, i), r; + }, o.gc = function() { + var e; + return e = u(Un(this.a, 4), 129), e == null ? 0 : e.length; + }, o.Pc = function() { + var e, t, i; + return e = u(Un(this.a, 4), 129), i = e == null ? 0 : e.length, t = K(jU, MK, 424, i, 0, 1), i > 0 && Oc(e, 0, t, 0, i), t; + }, o.Qc = function(e) { + var t, i, r; + return t = u(Un(this.a, 4), 129), r = t == null ? 0 : t.length, r > 0 && (e.length < r && (i = gk(wo(e).c, r), e = i), Oc(t, 0, e, 0, r)), e.length > r && Rt(e, r, null), e; + }; + var Ooe; + w(or, "ArrayDelegatingEList", 2080), b(1051, 37, Pi, ELn), o.Xj = function() { + if (this.b.j != this.f || x(u(Un(this.b.a, 4), 129)) !== x(this.a)) + throw M(new Bo()); + }, o.Qb = function() { + O5(this), this.a = u(Un(this.b.a, 4), 129); + }, w(or, "ArrayDelegatingEList/EIterator", 1051), b(722, 286, Hh, $Pn, yIn), o.Xj = function() { + if (this.b.j != this.f || x(u(Un(this.b.a, 4), 129)) !== x(this.a)) + throw M(new Bo()); + }, o.$j = function(e) { + FRn(this, e), this.a = u(Un(this.b.a, 4), 129); + }, o.Qb = function() { + O5(this), this.a = u(Un(this.b.a, 4), 129); + }, w(or, "ArrayDelegatingEList/EListIterator", 722), b(1052, 355, Pi, CLn), o.Xj = function() { + if (this.b.j != this.f || x(u(Un(this.b.a, 4), 129)) !== x(this.a)) + throw M(new Bo()); + }, w(or, "ArrayDelegatingEList/NonResolvingEIterator", 1052), b(723, 398, Hh, xPn, jIn), o.Xj = function() { + if (this.b.j != this.f || x(u(Un(this.b.a, 4), 129)) !== x(this.a)) + throw M(new Bo()); + }, w(or, "ArrayDelegatingEList/NonResolvingEListIterator", 723), b(615, 302, AB, aL), w(or, "BasicEList/BasicIndexOutOfBoundsException", 615), b(710, 66, Ch, pX), o.bd = function(e, t) { + throw M(new Pe()); + }, o.Fc = function(e) { + throw M(new Pe()); + }, o.cd = function(e, t) { + throw M(new Pe()); + }, o.Gc = function(e) { + throw M(new Pe()); + }, o.$b = function() { + throw M(new Pe()); + }, o._i = function(e) { + throw M(new Pe()); + }, o.Kc = function() { + return this.Ii(); + }, o.ed = function() { + return this.Ji(); + }, o.fd = function(e) { + return this.Ki(e); + }, o.Ti = function(e, t) { + throw M(new Pe()); + }, o.Ui = function(e, t) { + throw M(new Pe()); + }, o.gd = function(e) { + throw M(new Pe()); + }, o.Mc = function(e) { + throw M(new Pe()); + }, o.hd = function(e, t) { + throw M(new Pe()); + }, w(or, "BasicEList/UnmodifiableEList", 710), b(721, 1, { 3: 1, 20: 1, 16: 1, 15: 1, 61: 1, 597: 1 }), o.bd = function(e, t) { + d1e(this, e, u(t, 44)); + }, o.Fc = function(e) { + return uae(this, u(e, 44)); + }, o.Jc = function(e) { + qi(this, e); + }, o.Xb = function(e) { + return u(L(this.c, e), 136); + }, o.Ti = function(e, t) { + return u(this.c.Ti(e, t), 44); + }, o.Ui = function(e, t) { + b1e(this, e, u(t, 44)); + }, o.Lc = function() { + return new Tn(null, new In(this, 16)); + }, o.gd = function(e) { + return u(this.c.gd(e), 44); + }, o.hd = function(e, t) { + return Pwe(this, e, u(t, 44)); + }, o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return new In(this, 16); + }, o.Oc = function() { + return new Tn(null, new In(this, 16)); + }, o.cd = function(e, t) { + return this.c.cd(e, t); + }, o.Gc = function(e) { + return this.c.Gc(e); + }, o.$b = function() { + this.c.$b(); + }, o.Hc = function(e) { + return this.c.Hc(e); + }, o.Ic = function(e) { + return Ek(this.c, e); + }, o._j = function() { + var e, t, i; + if (this.d == null) { + for (this.d = K($dn, Ucn, 66, 2 * this.f + 1, 0, 1), i = this.e, this.f = 0, t = this.c.Kc(); t.e != t.i.gc(); ) + e = u(t.Yj(), 136), uA(this, e); + this.e = i; + } + }, o.Fb = function(e) { + return fSn(this, e); + }, o.Hb = function() { + return XQ(this.c); + }, o.dd = function(e) { + return this.c.dd(e); + }, o.ak = function() { + this.c = new byn(this); + }, o.dc = function() { + return this.f == 0; + }, o.Kc = function() { + return this.c.Kc(); + }, o.ed = function() { + return this.c.ed(); + }, o.fd = function(e) { + return this.c.fd(e); + }, o.bk = function() { + return rk(this); + }, o.ck = function(e, t, i) { + return new jSn(e, t, i); + }, o.dk = function() { + return new mvn(); + }, o.Mc = function(e) { + return W$n(this, e); + }, o.gc = function() { + return this.f; + }, o.kd = function(e, t) { + return new Jl(this.c, e, t); + }, o.Pc = function() { + return this.c.Pc(); + }, o.Qc = function(e) { + return this.c.Qc(e); + }, o.Ib = function() { + return _Y(this.c); + }, o.e = 0, o.f = 0, w(or, "BasicEMap", 721), b(1046, 66, Ch, byn), o.Mi = function(e, t) { + Gfe(this, u(t, 136)); + }, o.Pi = function(e, t, i) { + var r; + ++(r = this, u(t, 136), r).a.e; + }, o.Qi = function(e, t) { + zfe(this, u(t, 136)); + }, o.Ri = function(e, t, i) { + G1e(this, u(t, 136), u(i, 136)); + }, o.Oi = function(e, t) { + Hxn(this.a); + }, w(or, "BasicEMap/1", 1046), b(1047, 66, Ch, mvn), o.aj = function(e) { + return K(LNe, eJn, 621, e, 0, 1); + }, w(or, "BasicEMap/2", 1047), b(1048, Kf, Nu, wyn), o.$b = function() { + this.a.c.$b(); + }, o.Hc = function(e) { + return wx(this.a, e); + }, o.Kc = function() { + return this.a.f == 0 ? (m4(), aE.a) : new Qjn(this.a); + }, o.Mc = function(e) { + var t; + return t = this.a.f, VT(this.a, e), this.a.f != t; + }, o.gc = function() { + return this.a.f; + }, w(or, "BasicEMap/3", 1048), b(1049, 31, pw, gyn), o.$b = function() { + this.a.c.$b(); + }, o.Hc = function(e) { + return Bqn(this.a, e); + }, o.Kc = function() { + return this.a.f == 0 ? (m4(), aE.a) : new Yjn(this.a); + }, o.gc = function() { + return this.a.f; + }, w(or, "BasicEMap/4", 1049), b(1050, Kf, Nu, pyn), o.$b = function() { + this.a.c.$b(); + }, o.Hc = function(e) { + var t, i, r, c, s, f, h, l, a; + if (this.a.f > 0 && D(e, 44) && (this.a._j(), l = u(e, 44), h = l.ld(), c = h == null ? 0 : mt(h), s = bV(this.a, c), t = this.a.d[s], t)) { + for (i = u(t.g, 379), a = t.i, f = 0; f < a; ++f) + if (r = i[f], r.Bi() == c && r.Fb(l)) + return !0; + } + return !1; + }, o.Kc = function() { + return this.a.f == 0 ? (m4(), aE.a) : new CN(this.a); + }, o.Mc = function(e) { + return PHn(this, e); + }, o.gc = function() { + return this.a.f; + }, w(or, "BasicEMap/5", 1050), b(622, 1, Pi, CN), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return this.b != -1; + }, o.Pb = function() { + var e; + if (this.f.e != this.c) + throw M(new Bo()); + if (this.b == -1) + throw M(new nc()); + return this.d = this.a, this.e = this.b, wKn(this), e = u(this.f.d[this.d].g[this.e], 136), this.ek(e); + }, o.Qb = function() { + if (this.f.e != this.c) + throw M(new Bo()); + if (this.e == -1) + throw M(new Mu()); + this.f.c.Mc(L(this.f.d[this.d], this.e)), this.c = this.f.e, this.e = -1, this.a == this.d && this.b != -1 && --this.b; + }, o.ek = function(e) { + return e; + }, o.a = 0, o.b = -1, o.c = 0, o.d = 0, o.e = 0, w(or, "BasicEMap/BasicEMapIterator", 622), b(1044, 622, Pi, Qjn), o.ek = function(e) { + return e.ld(); + }, w(or, "BasicEMap/BasicEMapKeyIterator", 1044), b(1045, 622, Pi, Yjn), o.ek = function(e) { + return e.md(); + }, w(or, "BasicEMap/BasicEMapValueIterator", 1045), b(1043, 1, X0, myn), o.wc = function(e) { + f5(this, e); + }, o.yc = function(e, t, i) { + return hx(this, e, t, i); + }, o.$b = function() { + this.a.c.$b(); + }, o._b = function(e) { + return OMn(this, e); + }, o.uc = function(e) { + return Bqn(this.a, e); + }, o.vc = function() { + return b4e(this.a); + }, o.Fb = function(e) { + return fSn(this.a, e); + }, o.xc = function(e) { + return gf(this.a, e); + }, o.Hb = function() { + return XQ(this.a.c); + }, o.dc = function() { + return this.a.f == 0; + }, o.ec = function() { + return a4e(this.a); + }, o.zc = function(e, t) { + return zk(this.a, e, t); + }, o.Bc = function(e) { + return VT(this.a, e); + }, o.gc = function() { + return this.a.f; + }, o.Ib = function() { + return _Y(this.a.c); + }, o.Cc = function() { + return d4e(this.a); + }, w(or, "BasicEMap/DelegatingMap", 1043), b(621, 1, { 44: 1, 136: 1, 621: 1 }, jSn), o.Fb = function(e) { + var t; + return D(e, 44) ? (t = u(e, 44), (this.b != null ? ct(this.b, t.ld()) : x(this.b) === x(t.ld())) && (this.c != null ? ct(this.c, t.md()) : x(this.c) === x(t.md()))) : !1; + }, o.Bi = function() { + return this.a; + }, o.ld = function() { + return this.b; + }, o.md = function() { + return this.c; + }, o.Hb = function() { + return this.a ^ (this.c == null ? 0 : mt(this.c)); + }, o.Ci = function(e) { + this.a = e; + }, o.Di = function(e) { + throw M(new Ga()); + }, o.nd = function(e) { + var t; + return t = this.c, this.c = e, t; + }, o.Ib = function() { + return this.b + "->" + this.c; + }, o.a = 0; + var LNe = w(or, "BasicEMap/EntryImpl", 621); + b(546, 1, {}, CE), w(or, "BasicEMap/View", 546); + var aE; + b(783, 1, {}), o.Fb = function(e) { + return Jnn((Dn(), sr), e); + }, o.Hb = function() { + return cY((Dn(), sr)); + }, o.Ib = function() { + return ca((Dn(), sr)); + }, w(or, "ECollections/BasicEmptyUnmodifiableEList", 783), b(1348, 1, Hh, vvn), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + throw M(new Pe()); + }, o.Ob = function() { + return !1; + }, o.Sb = function() { + return !1; + }, o.Pb = function() { + throw M(new nc()); + }, o.Tb = function() { + return 0; + }, o.Ub = function() { + throw M(new nc()); + }, o.Vb = function() { + return -1; + }, o.Qb = function() { + throw M(new Pe()); + }, o.Wb = function(e) { + throw M(new Pe()); + }, w(or, "ECollections/BasicEmptyUnmodifiableEList/1", 1348), b(1346, 783, { 20: 1, 16: 1, 15: 1, 61: 1 }, ojn), o.bd = function(e, t) { + jEn(); + }, o.Fc = function(e) { + return EEn(); + }, o.cd = function(e, t) { + return CEn(); + }, o.Gc = function(e) { + return MEn(); + }, o.$b = function() { + TEn(); + }, o.Hc = function(e) { + return !1; + }, o.Ic = function(e) { + return !1; + }, o.Jc = function(e) { + qi(this, e); + }, o.Xb = function(e) { + return kX((Dn(), e)), null; + }, o.dd = function(e) { + return -1; + }, o.dc = function() { + return !0; + }, o.Kc = function() { + return this.a; + }, o.ed = function() { + return this.a; + }, o.fd = function(e) { + return this.a; + }, o.Ti = function(e, t) { + return AEn(); + }, o.Ui = function(e, t) { + SEn(); + }, o.Lc = function() { + return new Tn(null, new In(this, 16)); + }, o.gd = function(e) { + return PEn(); + }, o.Mc = function(e) { + return IEn(); + }, o.hd = function(e, t) { + return OEn(); + }, o.gc = function() { + return 0; + }, o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return new In(this, 16); + }, o.Oc = function() { + return new Tn(null, new In(this, 16)); + }, o.kd = function(e, t) { + return Dn(), new Jl(sr, e, t); + }, o.Pc = function() { + return pW((Dn(), sr)); + }, o.Qc = function(e) { + return Dn(), A5(sr, e); + }, w(or, "ECollections/EmptyUnmodifiableEList", 1346), b(1347, 783, { 20: 1, 16: 1, 15: 1, 61: 1, 597: 1 }, sjn), o.bd = function(e, t) { + jEn(); + }, o.Fc = function(e) { + return EEn(); + }, o.cd = function(e, t) { + return CEn(); + }, o.Gc = function(e) { + return MEn(); + }, o.$b = function() { + TEn(); + }, o.Hc = function(e) { + return !1; + }, o.Ic = function(e) { + return !1; + }, o.Jc = function(e) { + qi(this, e); + }, o.Xb = function(e) { + return kX((Dn(), e)), null; + }, o.dd = function(e) { + return -1; + }, o.dc = function() { + return !0; + }, o.Kc = function() { + return this.a; + }, o.ed = function() { + return this.a; + }, o.fd = function(e) { + return this.a; + }, o.Ti = function(e, t) { + return AEn(); + }, o.Ui = function(e, t) { + SEn(); + }, o.Lc = function() { + return new Tn(null, new In(this, 16)); + }, o.gd = function(e) { + return PEn(); + }, o.Mc = function(e) { + return IEn(); + }, o.hd = function(e, t) { + return OEn(); + }, o.gc = function() { + return 0; + }, o.jd = function(e) { + ud(this, e); + }, o.Nc = function() { + return new In(this, 16); + }, o.Oc = function() { + return new Tn(null, new In(this, 16)); + }, o.kd = function(e, t) { + return Dn(), new Jl(sr, e, t); + }, o.Pc = function() { + return pW((Dn(), sr)); + }, o.Qc = function(e) { + return Dn(), A5(sr, e); + }, o.bk = function() { + return Dn(), Dn(), Wh; + }, w(or, "ECollections/EmptyUnmodifiableEMap", 1347); + var Fdn = xt(or, "Enumerator"), yO; + b(288, 1, { 288: 1 }, jF), o.Fb = function(e) { + var t; + return this === e ? !0 : D(e, 288) ? (t = u(e, 288), this.f == t.f && Gbe(this.i, t.i) && WL(this.a, this.f & 256 ? t.f & 256 ? t.a : null : t.f & 256 ? null : t.a) && WL(this.d, t.d) && WL(this.g, t.g) && WL(this.e, t.e) && w9e(this, t)) : !1; + }, o.Hb = function() { + return this.f; + }, o.Ib = function() { + return pUn(this); + }, o.f = 0; + var Doe = 0, Loe = 0, Noe = 0, $oe = 0, Bdn = 0, Rdn = 0, Kdn = 0, _dn = 0, Hdn = 0, xoe, D9 = 0, L9 = 0, Foe = 0, Boe = 0, jO, qdn; + w(or, "URI", 288), b(1121, 45, n2, fjn), o.zc = function(e, t) { + return u(Dr(this, Oe(e), u(t, 288)), 288); + }, w(or, "URI/URICache", 1121), b(506, 66, Ch, dvn, sM), o.Si = function() { + return !0; + }, w(or, "UniqueEList", 506), b(590, 63, Pl, eT), w(or, "WrappedException", 590); + var Ue = xt(ts, rJn), Zw = xt(ts, cJn), yu = xt(ts, uJn), ng = xt(ts, oJn), Cf = xt(ts, sJn), As = xt(ts, "EClass"), EU = xt(ts, "EDataType"), Roe; + b(1233, 45, n2, hjn), o.xc = function(e) { + return Si(e) ? $c(this, e) : Kr(gr(this.f, e)); + }, w(ts, "EDataType/Internal/ConversionDelegate/Factory/Registry/Impl", 1233); + var EO = xt(ts, "EEnum"), Bl = xt(ts, fJn), Er = xt(ts, hJn), Ss = xt(ts, lJn), Ps, yb = xt(ts, aJn), eg = xt(ts, dJn); + b(1042, 1, {}, avn), o.Ib = function() { + return "NIL"; + }, w(ts, "EStructuralFeature/Internal/DynamicValueHolder/1", 1042); + var Koe; + b(1041, 45, n2, ljn), o.xc = function(e) { + return Si(e) ? $c(this, e) : Kr(gr(this.f, e)); + }, w(ts, "EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl", 1041); + var hu = xt(ts, bJn), R3 = xt(ts, "EValidator/PatternMatcher"), Udn, Gdn, Hn, A1, tg, La, _oe, Hoe, qoe, Na, S1, $a, jb, Zf, Uoe, Goe, Is, P1, zoe, I1, ig, U2, ar, Xoe, Voe, Eb, CO = xt(Tt, "FeatureMap/Entry"); + b(545, 1, { 76: 1 }, MC), o.Lk = function() { + return this.a; + }, o.md = function() { + return this.b; + }, w(qn, "BasicEObjectImpl/1", 545), b(1040, 1, TK, LMn), o.Fk = function(e) { + return YN(this.a, this.b, e); + }, o.Qj = function() { + return wOn(this.a, this.b); + }, o.Wb = function(e) { + cJ(this.a, this.b, e); + }, o.Gk = function() { + Hwe(this.a, this.b); + }, w(qn, "BasicEObjectImpl/4", 1040), b(2081, 1, { 114: 1 }), o.Mk = function(e) { + this.e = e == 0 ? Woe : K(ki, Bn, 1, e, 5, 1); + }, o.li = function(e) { + return this.e[e]; + }, o.mi = function(e, t) { + this.e[e] = t; + }, o.ni = function(e) { + this.e[e] = null; + }, o.Nk = function() { + return this.c; + }, o.Ok = function() { + throw M(new Pe()); + }, o.Pk = function() { + throw M(new Pe()); + }, o.Qk = function() { + return this.d; + }, o.Rk = function() { + return this.e != null; + }, o.Sk = function(e) { + this.c = e; + }, o.Tk = function(e) { + throw M(new Pe()); + }, o.Uk = function(e) { + throw M(new Pe()); + }, o.Vk = function(e) { + this.d = e; + }; + var Woe; + w(qn, "BasicEObjectImpl/EPropertiesHolderBaseImpl", 2081), b(192, 2081, { 114: 1 }, uf), o.Ok = function() { + return this.a; + }, o.Pk = function() { + return this.b; + }, o.Tk = function(e) { + this.a = e; + }, o.Uk = function(e) { + this.b = e; + }, w(qn, "BasicEObjectImpl/EPropertiesHolderImpl", 192), b(516, 99, wWn, ME), o.uh = function() { + return this.f; + }, o.zh = function() { + return this.k; + }, o.Bh = function(e, t) { + this.g = e, this.i = t; + }, o.Dh = function() { + return this.j & 2 ? this.$h().Nk() : this.ii(); + }, o.Fh = function() { + return this.i; + }, o.wh = function() { + return (this.j & 1) != 0; + }, o.Ph = function() { + return this.g; + }, o.Vh = function() { + return (this.j & 4) != 0; + }, o.$h = function() { + return !this.k && (this.k = new uf()), this.k; + }, o.ci = function(e) { + this.$h().Sk(e), e ? this.j |= 2 : this.j &= -3; + }, o.ei = function(e) { + this.$h().Uk(e), e ? this.j |= 4 : this.j &= -5; + }, o.ii = function() { + return (G1(), Hn).S; + }, o.i = 0, o.j = 1, w(qn, "EObjectImpl", 516), b(798, 516, { 110: 1, 94: 1, 93: 1, 58: 1, 114: 1, 54: 1, 99: 1 }, nW), o.li = function(e) { + return this.e[e]; + }, o.mi = function(e, t) { + this.e[e] = t; + }, o.ni = function(e) { + this.e[e] = null; + }, o.Dh = function() { + return this.d; + }, o.Ih = function(e) { + return Ot(this.d, e); + }, o.Kh = function() { + return this.d; + }, o.Oh = function() { + return this.e != null; + }, o.$h = function() { + return !this.k && (this.k = new kvn()), this.k; + }, o.ci = function(e) { + this.d = e; + }, o.hi = function() { + var e; + return this.e == null && (e = se(this.d), this.e = e == 0 ? Joe : K(ki, Bn, 1, e, 5, 1)), this; + }, o.ji = function() { + return 0; + }; + var Joe; + w(qn, "DynamicEObjectImpl", 798), b(1522, 798, { 110: 1, 44: 1, 94: 1, 93: 1, 136: 1, 58: 1, 114: 1, 54: 1, 99: 1 }, XSn), o.Fb = function(e) { + return this === e; + }, o.Hb = function() { + return l0(this); + }, o.ci = function(e) { + this.d = e, this.b = oy(e, "key"), this.c = oy(e, g8); + }, o.Bi = function() { + var e; + return this.a == -1 && (e = l$(this, this.b), this.a = e == null ? 0 : mt(e)), this.a; + }, o.ld = function() { + return l$(this, this.b); + }, o.md = function() { + return l$(this, this.c); + }, o.Ci = function(e) { + this.a = e; + }, o.Di = function(e) { + cJ(this, this.b, e); + }, o.nd = function(e) { + var t; + return t = l$(this, this.c), cJ(this, this.c, e), t; + }, o.a = 0, w(qn, "DynamicEObjectImpl/BasicEMapEntry", 1522), b(1523, 1, { 114: 1 }, kvn), o.Mk = function(e) { + throw M(new Pe()); + }, o.li = function(e) { + throw M(new Pe()); + }, o.mi = function(e, t) { + throw M(new Pe()); + }, o.ni = function(e) { + throw M(new Pe()); + }, o.Nk = function() { + throw M(new Pe()); + }, o.Ok = function() { + return this.a; + }, o.Pk = function() { + return this.b; + }, o.Qk = function() { + return this.c; + }, o.Rk = function() { + throw M(new Pe()); + }, o.Sk = function(e) { + throw M(new Pe()); + }, o.Tk = function(e) { + this.a = e; + }, o.Uk = function(e) { + this.b = e; + }, o.Vk = function(e) { + this.c = e; + }, w(qn, "DynamicEObjectImpl/DynamicEPropertiesHolderImpl", 1523), b(519, 158, { 110: 1, 94: 1, 93: 1, 598: 1, 155: 1, 58: 1, 114: 1, 54: 1, 99: 1, 519: 1, 158: 1, 119: 1, 120: 1 }, iG), o.Ah = function(e) { + return IZ(this, e); + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.d; + case 2: + return i ? (!this.b && (this.b = new lo((On(), ar), pc, this)), this.b) : (!this.b && (this.b = new lo((On(), ar), pc, this)), rk(this.b)); + case 3: + return kOn(this); + case 4: + return !this.a && (this.a = new ti(Oa, this, 4)), this.a; + case 5: + return !this.c && (this.c = new Eg(Oa, this, 5)), this.c; + } + return zo(this, e - se((On(), A1)), $n((r = u(Un(this, 16), 29), r || A1), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 3: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? IZ(this, i) : this.Cb.Th(this, -1 - c, null, i))), gW(this, u(e, 155), i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), A1)), t), 69), s.wk().zk(this, ru(this), t - se((On(), A1)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 2: + return !this.b && (this.b = new lo((On(), ar), pc, this)), UC(this.b, e, i); + case 3: + return gW(this, null, i); + case 4: + return !this.a && (this.a = new ti(Oa, this, 4)), cr(this.a, e, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), A1)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), A1)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.d != null; + case 2: + return !!this.b && this.b.f != 0; + case 3: + return !!kOn(this); + case 4: + return !!this.a && this.a.i != 0; + case 5: + return !!this.c && this.c.i != 0; + } + return Uo(this, e - se((On(), A1)), $n((t = u(Un(this, 16), 29), t || A1), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + Dbe(this, Oe(t)); + return; + case 2: + !this.b && (this.b = new lo((On(), ar), pc, this)), TT(this.b, t); + return; + case 3: + cqn(this, u(t, 155)); + return; + case 4: + !this.a && (this.a = new ti(Oa, this, 4)), me(this.a), !this.a && (this.a = new ti(Oa, this, 4)), Ht(this.a, u(t, 16)); + return; + case 5: + !this.c && (this.c = new Eg(Oa, this, 5)), me(this.c), !this.c && (this.c = new Eg(Oa, this, 5)), Ht(this.c, u(t, 16)); + return; + } + Jo(this, e - se((On(), A1)), $n((i = u(Un(this, 16), 29), i || A1), e), t); + }, o.ii = function() { + return On(), A1; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + OQ(this, null); + return; + case 2: + !this.b && (this.b = new lo((On(), ar), pc, this)), this.b.c.$b(); + return; + case 3: + cqn(this, null); + return; + case 4: + !this.a && (this.a = new ti(Oa, this, 4)), me(this.a); + return; + case 5: + !this.c && (this.c = new Eg(Oa, this, 5)), me(this.c); + return; + } + Wo(this, e - se((On(), A1)), $n((t = u(Un(this, 16), 29), t || A1), e)); + }, o.Ib = function() { + return fBn(this); + }, o.d = null, w(qn, "EAnnotationImpl", 519), b(141, 721, Gcn, Ou), o.Gi = function(e, t) { + Jle(this, e, u(t, 44)); + }, o.Wk = function(e, t) { + return Yae(this, u(e, 44), t); + }, o.$i = function(e) { + return u(u(this.c, 71).$i(e), 136); + }, o.Ii = function() { + return u(this.c, 71).Ii(); + }, o.Ji = function() { + return u(this.c, 71).Ji(); + }, o.Ki = function(e) { + return u(this.c, 71).Ki(e); + }, o.Xk = function(e, t) { + return UC(this, e, t); + }, o.Fk = function(e) { + return u(this.c, 79).Fk(e); + }, o.ak = function() { + }, o.Qj = function() { + return u(this.c, 79).Qj(); + }, o.ck = function(e, t, i) { + var r; + return r = u(jo(this.b).wi().si(this.b), 136), r.Ci(e), r.Di(t), r.nd(i), r; + }, o.dk = function() { + return new RG(this); + }, o.Wb = function(e) { + TT(this, e); + }, o.Gk = function() { + u(this.c, 79).Gk(); + }, w(Tt, "EcoreEMap", 141), b(165, 141, Gcn, lo), o._j = function() { + var e, t, i, r, c, s; + if (this.d == null) { + for (s = K($dn, Ucn, 66, 2 * this.f + 1, 0, 1), i = this.c.Kc(); i.e != i.i.gc(); ) + t = u(i.Yj(), 136), r = t.Bi(), c = (r & tt) % s.length, e = s[c], !e && (e = s[c] = new RG(this)), e.Fc(t); + this.d = s; + } + }, w(qn, "EAnnotationImpl/1", 165), b(292, 448, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 114: 1, 481: 1, 54: 1, 99: 1, 158: 1, 292: 1, 119: 1, 120: 1 }), o.Lh = function(e, t, i) { + var r, c; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return _n(), !!(this.Bb & 256); + case 3: + return _n(), !!(this.Bb & 512); + case 4: + return Y(this.s); + case 5: + return Y(this.t); + case 6: + return _n(), !!this.Jk(); + case 7: + return _n(), c = this.s, c >= 1; + case 8: + return t ? gs(this) : this.r; + case 9: + return this.q; + } + return zo(this, e - se(this.ii()), $n((r = u(Un(this, 16), 29), r || this.ii()), e), t, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 9: + return hN(this, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), c.wk().Ak(this, ru(this), t - se(this.ii()), e, i); + }, o.Wh = function(e) { + var t, i; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return (this.Bb & 256) == 0; + case 3: + return (this.Bb & 512) == 0; + case 4: + return this.s != 0; + case 5: + return this.t != 1; + case 6: + return this.Jk(); + case 7: + return i = this.s, i >= 1; + case 8: + return !!this.r && !this.q.e && v0(this.q).i == 0; + case 9: + return !!this.q && !(this.r && !this.q.e && v0(this.q).i == 0); + } + return Uo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.bi = function(e, t) { + var i, r; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + this.ui(Oe(t)); + return; + case 2: + c1(this, on(un(t))); + return; + case 3: + u1(this, on(un(t))); + return; + case 4: + e1(this, u(t, 17).a); + return; + case 5: + this.Zk(u(t, 17).a); + return; + case 8: + ad(this, u(t, 142)); + return; + case 9: + r = Bf(this, u(t, 89), null), r && r.oj(); + return; + } + Jo(this, e - se(this.ii()), $n((i = u(Un(this, 16), 29), i || this.ii()), e), t); + }, o.ii = function() { + return On(), Voe; + }, o.ki = function(e) { + var t, i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + this.ui(null); + return; + case 2: + c1(this, !0); + return; + case 3: + u1(this, !0); + return; + case 4: + e1(this, 0); + return; + case 5: + this.Zk(1); + return; + case 8: + ad(this, null); + return; + case 9: + i = Bf(this, null, null), i && i.oj(); + return; + } + Wo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.pi = function() { + gs(this), this.Bb |= 1; + }, o.Hk = function() { + return gs(this); + }, o.Ik = function() { + return this.t; + }, o.Jk = function() { + var e; + return e = this.t, e > 1 || e == -1; + }, o.Si = function() { + return (this.Bb & 512) != 0; + }, o.Yk = function(e, t) { + return CY(this, e, t); + }, o.Zk = function(e) { + Zb(this, e); + }, o.Ib = function() { + return _nn(this); + }, o.s = 0, o.t = 1, w(qn, "ETypedElementImpl", 292), b(462, 292, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 179: 1, 69: 1, 114: 1, 481: 1, 54: 1, 99: 1, 158: 1, 462: 1, 292: 1, 119: 1, 120: 1, 692: 1 }), o.Ah = function(e) { + return YRn(this, e); + }, o.Lh = function(e, t, i) { + var r, c; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return _n(), !!(this.Bb & 256); + case 3: + return _n(), !!(this.Bb & 512); + case 4: + return Y(this.s); + case 5: + return Y(this.t); + case 6: + return _n(), !!this.Jk(); + case 7: + return _n(), c = this.s, c >= 1; + case 8: + return t ? gs(this) : this.r; + case 9: + return this.q; + case 10: + return _n(), !!(this.Bb & Gs); + case 11: + return _n(), !!(this.Bb & Tw); + case 12: + return _n(), !!(this.Bb & vw); + case 13: + return this.j; + case 14: + return Tm(this); + case 15: + return _n(), !!(this.Bb & xu); + case 16: + return _n(), !!(this.Bb & wh); + case 17: + return Gb(this); + } + return zo(this, e - se(this.ii()), $n((r = u(Un(this, 16), 29), r || this.ii()), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 17: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? YRn(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 17, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), s.wk().zk(this, ru(this), t - se(this.ii()), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 9: + return hN(this, i); + case 17: + return So(this, null, 17, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), c.wk().Ak(this, ru(this), t - se(this.ii()), e, i); + }, o.Wh = function(e) { + var t, i; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return (this.Bb & 256) == 0; + case 3: + return (this.Bb & 512) == 0; + case 4: + return this.s != 0; + case 5: + return this.t != 1; + case 6: + return this.Jk(); + case 7: + return i = this.s, i >= 1; + case 8: + return !!this.r && !this.q.e && v0(this.q).i == 0; + case 9: + return !!this.q && !(this.r && !this.q.e && v0(this.q).i == 0); + case 10: + return (this.Bb & Gs) == 0; + case 11: + return (this.Bb & Tw) != 0; + case 12: + return (this.Bb & vw) != 0; + case 13: + return this.j != null; + case 14: + return Tm(this) != null; + case 15: + return (this.Bb & xu) != 0; + case 16: + return (this.Bb & wh) != 0; + case 17: + return !!Gb(this); + } + return Uo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.bi = function(e, t) { + var i, r; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + FN(this, Oe(t)); + return; + case 2: + c1(this, on(un(t))); + return; + case 3: + u1(this, on(un(t))); + return; + case 4: + e1(this, u(t, 17).a); + return; + case 5: + this.Zk(u(t, 17).a); + return; + case 8: + ad(this, u(t, 142)); + return; + case 9: + r = Bf(this, u(t, 89), null), r && r.oj(); + return; + case 10: + fm(this, on(un(t))); + return; + case 11: + am(this, on(un(t))); + return; + case 12: + hm(this, on(un(t))); + return; + case 13: + gX(this, Oe(t)); + return; + case 15: + lm(this, on(un(t))); + return; + case 16: + dm(this, on(un(t))); + return; + } + Jo(this, e - se(this.ii()), $n((i = u(Un(this, 16), 29), i || this.ii()), e), t); + }, o.ii = function() { + return On(), Xoe; + }, o.ki = function(e) { + var t, i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 90) && hw(Zu(u(this.Cb, 90)), 4), Xc(this, null); + return; + case 2: + c1(this, !0); + return; + case 3: + u1(this, !0); + return; + case 4: + e1(this, 0); + return; + case 5: + this.Zk(1); + return; + case 8: + ad(this, null); + return; + case 9: + i = Bf(this, null, null), i && i.oj(); + return; + case 10: + fm(this, !0); + return; + case 11: + am(this, !1); + return; + case 12: + hm(this, !1); + return; + case 13: + this.i = null, kT(this, null); + return; + case 15: + lm(this, !1); + return; + case 16: + dm(this, !1); + return; + } + Wo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.pi = function() { + P4(Lr((Lu(), zi), this)), gs(this), this.Bb |= 1; + }, o.pk = function() { + return this.f; + }, o.ik = function() { + return Tm(this); + }, o.qk = function() { + return Gb(this); + }, o.uk = function() { + return null; + }, o.$k = function() { + return this.k; + }, o.Lj = function() { + return this.n; + }, o.vk = function() { + return bA(this); + }, o.wk = function() { + var e, t, i, r, c, s, f, h, l; + return this.p || (i = Gb(this), (i.i == null && bh(i), i.i).length, r = this.uk(), r && se(Gb(r)), c = gs(this), f = c.kk(), e = f ? f.i & 1 ? f == so ? Xt : f == ye ? Gi : f == cg ? sv : f == Ii ? si : f == Fa ? tb : f == V2 ? ib : f == Bu ? p3 : A8 : f : null, t = Tm(this), h = c.ik(), z5e(this), this.Bb & wh && ((s = FZ((Lu(), zi), i)) && s != this || (s = $p(Lr(zi, this)))) ? this.p = new $Mn(this, s) : this.Jk() ? this.al() ? r ? this.Bb & xu ? e ? this.bl() ? this.p = new Za(47, e, this, r) : this.p = new Za(5, e, this, r) : this.bl() ? this.p = new rd(46, this, r) : this.p = new rd(4, this, r) : e ? this.bl() ? this.p = new Za(49, e, this, r) : this.p = new Za(7, e, this, r) : this.bl() ? this.p = new rd(48, this, r) : this.p = new rd(6, this, r) : this.Bb & xu ? e ? e == Pd ? this.p = new Xl(50, Poe, this) : this.bl() ? this.p = new Xl(43, e, this) : this.p = new Xl(1, e, this) : this.bl() ? this.p = new Wl(42, this) : this.p = new Wl(0, this) : e ? e == Pd ? this.p = new Xl(41, Poe, this) : this.bl() ? this.p = new Xl(45, e, this) : this.p = new Xl(3, e, this) : this.bl() ? this.p = new Wl(44, this) : this.p = new Wl(2, this) : D(c, 156) ? e == CO ? this.p = new Wl(40, this) : this.Bb & 512 ? this.Bb & xu ? e ? this.p = new Xl(9, e, this) : this.p = new Wl(8, this) : e ? this.p = new Xl(11, e, this) : this.p = new Wl(10, this) : this.Bb & xu ? e ? this.p = new Xl(13, e, this) : this.p = new Wl(12, this) : e ? this.p = new Xl(15, e, this) : this.p = new Wl(14, this) : r ? (l = r.t, l > 1 || l == -1 ? this.bl() ? this.Bb & xu ? e ? this.p = new Za(25, e, this, r) : this.p = new rd(24, this, r) : e ? this.p = new Za(27, e, this, r) : this.p = new rd(26, this, r) : this.Bb & xu ? e ? this.p = new Za(29, e, this, r) : this.p = new rd(28, this, r) : e ? this.p = new Za(31, e, this, r) : this.p = new rd(30, this, r) : this.bl() ? this.Bb & xu ? e ? this.p = new Za(33, e, this, r) : this.p = new rd(32, this, r) : e ? this.p = new Za(35, e, this, r) : this.p = new rd(34, this, r) : this.Bb & xu ? e ? this.p = new Za(37, e, this, r) : this.p = new rd(36, this, r) : e ? this.p = new Za(39, e, this, r) : this.p = new rd(38, this, r)) : this.bl() ? this.Bb & xu ? e ? this.p = new Xl(17, e, this) : this.p = new Wl(16, this) : e ? this.p = new Xl(19, e, this) : this.p = new Wl(18, this) : this.Bb & xu ? e ? this.p = new Xl(21, e, this) : this.p = new Wl(20, this) : e ? this.p = new Xl(23, e, this) : this.p = new Wl(22, this) : this._k() ? this.bl() ? this.p = new ESn(u(c, 29), this, r) : this.p = new iJ(u(c, 29), this, r) : D(c, 156) ? e == CO ? this.p = new Wl(40, this) : this.Bb & xu ? e ? this.p = new jPn(t, h, this, (gx(), f == ye ? Ydn : f == so ? Xdn : f == Fa ? Zdn : f == cg ? Qdn : f == Ii ? Jdn : f == V2 ? n0n : f == Bu ? Vdn : f == fs ? Wdn : TU)) : this.p = new $In(u(c, 156), t, h, this) : e ? this.p = new yPn(t, h, this, (gx(), f == ye ? Ydn : f == so ? Xdn : f == Fa ? Zdn : f == cg ? Qdn : f == Ii ? Jdn : f == V2 ? n0n : f == Bu ? Vdn : f == fs ? Wdn : TU)) : this.p = new NIn(u(c, 156), t, h, this) : this.al() ? r ? this.Bb & xu ? this.bl() ? this.p = new MSn(u(c, 29), this, r) : this.p = new HV(u(c, 29), this, r) : this.bl() ? this.p = new CSn(u(c, 29), this, r) : this.p = new HL(u(c, 29), this, r) : this.Bb & xu ? this.bl() ? this.p = new yAn(u(c, 29), this) : this.p = new tV(u(c, 29), this) : this.bl() ? this.p = new kAn(u(c, 29), this) : this.p = new PL(u(c, 29), this) : this.bl() ? r ? this.Bb & xu ? this.p = new TSn(u(c, 29), this, r) : this.p = new KV(u(c, 29), this, r) : this.Bb & xu ? this.p = new jAn(u(c, 29), this) : this.p = new iV(u(c, 29), this) : r ? this.Bb & xu ? this.p = new ASn(u(c, 29), this, r) : this.p = new _V(u(c, 29), this, r) : this.Bb & xu ? this.p = new EAn(u(c, 29), this) : this.p = new oM(u(c, 29), this)), this.p; + }, o.rk = function() { + return (this.Bb & Gs) != 0; + }, o._k = function() { + return !1; + }, o.al = function() { + return !1; + }, o.sk = function() { + return (this.Bb & wh) != 0; + }, o.xk = function() { + return a$(this); + }, o.bl = function() { + return !1; + }, o.tk = function() { + return (this.Bb & xu) != 0; + }, o.cl = function(e) { + this.k = e; + }, o.ui = function(e) { + FN(this, e); + }, o.Ib = function() { + return $A(this); + }, o.e = !1, o.n = 0, w(qn, "EStructuralFeatureImpl", 462), b(331, 462, { 110: 1, 94: 1, 93: 1, 35: 1, 155: 1, 197: 1, 58: 1, 179: 1, 69: 1, 114: 1, 481: 1, 54: 1, 99: 1, 331: 1, 158: 1, 462: 1, 292: 1, 119: 1, 120: 1, 692: 1 }, fD), o.Lh = function(e, t, i) { + var r, c; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return _n(), !!(this.Bb & 256); + case 3: + return _n(), !!(this.Bb & 512); + case 4: + return Y(this.s); + case 5: + return Y(this.t); + case 6: + return _n(), !!$nn(this); + case 7: + return _n(), c = this.s, c >= 1; + case 8: + return t ? gs(this) : this.r; + case 9: + return this.q; + case 10: + return _n(), !!(this.Bb & Gs); + case 11: + return _n(), !!(this.Bb & Tw); + case 12: + return _n(), !!(this.Bb & vw); + case 13: + return this.j; + case 14: + return Tm(this); + case 15: + return _n(), !!(this.Bb & xu); + case 16: + return _n(), !!(this.Bb & wh); + case 17: + return Gb(this); + case 18: + return _n(), !!(this.Bb & yc); + case 19: + return t ? x$(this) : BLn(this); + } + return zo(this, e - se((On(), tg)), $n((r = u(Un(this, 16), 29), r || tg), e), t, i); + }, o.Wh = function(e) { + var t, i; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return (this.Bb & 256) == 0; + case 3: + return (this.Bb & 512) == 0; + case 4: + return this.s != 0; + case 5: + return this.t != 1; + case 6: + return $nn(this); + case 7: + return i = this.s, i >= 1; + case 8: + return !!this.r && !this.q.e && v0(this.q).i == 0; + case 9: + return !!this.q && !(this.r && !this.q.e && v0(this.q).i == 0); + case 10: + return (this.Bb & Gs) == 0; + case 11: + return (this.Bb & Tw) != 0; + case 12: + return (this.Bb & vw) != 0; + case 13: + return this.j != null; + case 14: + return Tm(this) != null; + case 15: + return (this.Bb & xu) != 0; + case 16: + return (this.Bb & wh) != 0; + case 17: + return !!Gb(this); + case 18: + return (this.Bb & yc) != 0; + case 19: + return !!BLn(this); + } + return Uo(this, e - se((On(), tg)), $n((t = u(Un(this, 16), 29), t || tg), e)); + }, o.bi = function(e, t) { + var i, r; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + FN(this, Oe(t)); + return; + case 2: + c1(this, on(un(t))); + return; + case 3: + u1(this, on(un(t))); + return; + case 4: + e1(this, u(t, 17).a); + return; + case 5: + eEn(this, u(t, 17).a); + return; + case 8: + ad(this, u(t, 142)); + return; + case 9: + r = Bf(this, u(t, 89), null), r && r.oj(); + return; + case 10: + fm(this, on(un(t))); + return; + case 11: + am(this, on(un(t))); + return; + case 12: + hm(this, on(un(t))); + return; + case 13: + gX(this, Oe(t)); + return; + case 15: + lm(this, on(un(t))); + return; + case 16: + dm(this, on(un(t))); + return; + case 18: + sx(this, on(un(t))); + return; + } + Jo(this, e - se((On(), tg)), $n((i = u(Un(this, 16), 29), i || tg), e), t); + }, o.ii = function() { + return On(), tg; + }, o.ki = function(e) { + var t, i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 90) && hw(Zu(u(this.Cb, 90)), 4), Xc(this, null); + return; + case 2: + c1(this, !0); + return; + case 3: + u1(this, !0); + return; + case 4: + e1(this, 0); + return; + case 5: + this.b = 0, Zb(this, 1); + return; + case 8: + ad(this, null); + return; + case 9: + i = Bf(this, null, null), i && i.oj(); + return; + case 10: + fm(this, !0); + return; + case 11: + am(this, !1); + return; + case 12: + hm(this, !1); + return; + case 13: + this.i = null, kT(this, null); + return; + case 15: + lm(this, !1); + return; + case 16: + dm(this, !1); + return; + case 18: + sx(this, !1); + return; + } + Wo(this, e - se((On(), tg)), $n((t = u(Un(this, 16), 29), t || tg), e)); + }, o.pi = function() { + x$(this), P4(Lr((Lu(), zi), this)), gs(this), this.Bb |= 1; + }, o.Jk = function() { + return $nn(this); + }, o.Yk = function(e, t) { + return this.b = 0, this.a = null, CY(this, e, t); + }, o.Zk = function(e) { + eEn(this, e); + }, o.Ib = function() { + var e; + return this.Db & 64 ? $A(this) : (e = new ls($A(this)), e.a += " (iD: ", ql(e, (this.Bb & yc) != 0), e.a += ")", e.a); + }, o.b = 0, w(qn, "EAttributeImpl", 331), b(364, 448, { 110: 1, 94: 1, 93: 1, 142: 1, 155: 1, 197: 1, 58: 1, 114: 1, 54: 1, 99: 1, 364: 1, 158: 1, 119: 1, 120: 1, 691: 1 }), o.dl = function(e) { + return e.Dh() == this; + }, o.Ah = function(e) { + return _x(this, e); + }, o.Bh = function(e, t) { + this.w = null, this.Db = t << 16 | this.Db & 255, this.Cb = e; + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return this.D != null ? this.D : this.B; + case 3: + return K0(this); + case 4: + return this.ik(); + case 5: + return this.F; + case 6: + return t ? jo(this) : D4(this); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), this.A; + } + return zo(this, e - se(this.ii()), $n((r = u(Un(this, 16), 29), r || this.ii()), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 6: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? _x(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 6, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), s.wk().zk(this, ru(this), t - se(this.ii()), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 6: + return So(this, null, 6, i); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), cr(this.A, e, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || this.ii()), t), 69), c.wk().Ak(this, ru(this), t - se(this.ii()), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return this.D != null && this.D == this.F; + case 3: + return !!K0(this); + case 4: + return this.ik() != null; + case 5: + return this.F != null && this.F != this.D && this.F != this.B; + case 6: + return !!D4(this); + case 7: + return !!this.A && this.A.i != 0; + } + return Uo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + xM(this, Oe(t)); + return; + case 2: + wL(this, Oe(t)); + return; + case 5: + Lm(this, Oe(t)); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A), !this.A && (this.A = new Au(hu, this, 7)), Ht(this.A, u(t, 16)); + return; + } + Jo(this, e - se(this.ii()), $n((i = u(Un(this, 16), 29), i || this.ii()), e), t); + }, o.ii = function() { + return On(), _oe; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 184) && (u(this.Cb, 184).tb = null), Xc(this, null); + return; + case 2: + um(this, null), G4(this, this.D); + return; + case 5: + Lm(this, null); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A); + return; + } + Wo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.hk = function() { + var e; + return this.G == -1 && (this.G = (e = jo(this), e ? f1(e.vi(), this) : -1)), this.G; + }, o.ik = function() { + return null; + }, o.jk = function() { + return jo(this); + }, o.el = function() { + return this.v; + }, o.kk = function() { + return K0(this); + }, o.lk = function() { + return this.D != null ? this.D : this.B; + }, o.mk = function() { + return this.F; + }, o.fk = function(e) { + return OF(this, e); + }, o.fl = function(e) { + this.v = e; + }, o.gl = function(e) { + jxn(this, e); + }, o.hl = function(e) { + this.C = e; + }, o.ui = function(e) { + xM(this, e); + }, o.Ib = function() { + return UT(this); + }, o.C = null, o.D = null, o.G = -1, w(qn, "EClassifierImpl", 364), b(90, 364, { 110: 1, 94: 1, 93: 1, 29: 1, 142: 1, 155: 1, 197: 1, 58: 1, 114: 1, 54: 1, 99: 1, 90: 1, 364: 1, 158: 1, 482: 1, 119: 1, 120: 1, 691: 1 }, oG), o.dl = function(e) { + return $ae(this, e.Dh()); + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return this.D != null ? this.D : this.B; + case 3: + return K0(this); + case 4: + return null; + case 5: + return this.F; + case 6: + return t ? jo(this) : D4(this); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), this.A; + case 8: + return _n(), !!(this.Bb & 256); + case 9: + return _n(), !!(this.Bb & 512); + case 10: + return Hr(this); + case 11: + return !this.q && (this.q = new q(Ss, this, 11, 10)), this.q; + case 12: + return Jg(this); + case 13: + return U5(this); + case 14: + return U5(this), this.r; + case 15: + return Jg(this), this.k; + case 16: + return Cnn(this); + case 17: + return $F(this); + case 18: + return bh(this); + case 19: + return TA(this); + case 20: + return Jg(this), this.o; + case 21: + return !this.s && (this.s = new q(yu, this, 21, 17)), this.s; + case 22: + return Pc(this); + case 23: + return yF(this); + } + return zo(this, e - se((On(), La)), $n((r = u(Un(this, 16), 29), r || La), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 6: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? _x(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 6, i); + case 11: + return !this.q && (this.q = new q(Ss, this, 11, 10)), Vc(this.q, e, i); + case 21: + return !this.s && (this.s = new q(yu, this, 21, 17)), Vc(this.s, e, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), La)), t), 69), s.wk().zk(this, ru(this), t - se((On(), La)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 6: + return So(this, null, 6, i); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), cr(this.A, e, i); + case 11: + return !this.q && (this.q = new q(Ss, this, 11, 10)), cr(this.q, e, i); + case 21: + return !this.s && (this.s = new q(yu, this, 21, 17)), cr(this.s, e, i); + case 22: + return cr(Pc(this), e, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), La)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), La)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return this.D != null && this.D == this.F; + case 3: + return !!K0(this); + case 4: + return !1; + case 5: + return this.F != null && this.F != this.D && this.F != this.B; + case 6: + return !!D4(this); + case 7: + return !!this.A && this.A.i != 0; + case 8: + return (this.Bb & 256) != 0; + case 9: + return (this.Bb & 512) != 0; + case 10: + return !!this.u && Pc(this.u.a).i != 0 && !(this.n && Ix(this.n)); + case 11: + return !!this.q && this.q.i != 0; + case 12: + return Jg(this).i != 0; + case 13: + return U5(this).i != 0; + case 14: + return U5(this), this.r.i != 0; + case 15: + return Jg(this), this.k.i != 0; + case 16: + return Cnn(this).i != 0; + case 17: + return $F(this).i != 0; + case 18: + return bh(this).i != 0; + case 19: + return TA(this).i != 0; + case 20: + return Jg(this), !!this.o; + case 21: + return !!this.s && this.s.i != 0; + case 22: + return !!this.n && Ix(this.n); + case 23: + return yF(this).i != 0; + } + return Uo(this, e - se((On(), La)), $n((t = u(Un(this, 16), 29), t || La), e)); + }, o.Zh = function(e) { + var t; + return t = this.i == null || this.q && this.q.i != 0 ? null : oy(this, e), t || utn(this, e); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + xM(this, Oe(t)); + return; + case 2: + wL(this, Oe(t)); + return; + case 5: + Lm(this, Oe(t)); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A), !this.A && (this.A = new Au(hu, this, 7)), Ht(this.A, u(t, 16)); + return; + case 8: + MY(this, on(un(t))); + return; + case 9: + TY(this, on(un(t))); + return; + case 10: + X5(Hr(this)), Ht(Hr(this), u(t, 16)); + return; + case 11: + !this.q && (this.q = new q(Ss, this, 11, 10)), me(this.q), !this.q && (this.q = new q(Ss, this, 11, 10)), Ht(this.q, u(t, 16)); + return; + case 21: + !this.s && (this.s = new q(yu, this, 21, 17)), me(this.s), !this.s && (this.s = new q(yu, this, 21, 17)), Ht(this.s, u(t, 16)); + return; + case 22: + me(Pc(this)), Ht(Pc(this), u(t, 16)); + return; + } + Jo(this, e - se((On(), La)), $n((i = u(Un(this, 16), 29), i || La), e), t); + }, o.ii = function() { + return On(), La; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 184) && (u(this.Cb, 184).tb = null), Xc(this, null); + return; + case 2: + um(this, null), G4(this, this.D); + return; + case 5: + Lm(this, null); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A); + return; + case 8: + MY(this, !1); + return; + case 9: + TY(this, !1); + return; + case 10: + this.u && X5(this.u); + return; + case 11: + !this.q && (this.q = new q(Ss, this, 11, 10)), me(this.q); + return; + case 21: + !this.s && (this.s = new q(yu, this, 21, 17)), me(this.s); + return; + case 22: + this.n && me(this.n); + return; + } + Wo(this, e - se((On(), La)), $n((t = u(Un(this, 16), 29), t || La), e)); + }, o.pi = function() { + var e, t; + if (Jg(this), U5(this), Cnn(this), $F(this), bh(this), TA(this), yF(this), e5(obe(Zu(this))), this.s) + for (e = 0, t = this.s.i; e < t; ++e) + T7(L(this.s, e)); + if (this.q) + for (e = 0, t = this.q.i; e < t; ++e) + T7(L(this.q, e)); + r1((Lu(), zi), this).xe(), this.Bb |= 1; + }, o.Ib = function() { + return UZ(this); + }, o.k = null, o.r = null; + var N9, Qoe, CU; + w(qn, "EClassImpl", 90), b(2092, 2091, pJn), o.Ei = function(e, t) { + return DF(this, e, t); + }, o.Fi = function(e) { + return DF(this, this.i, e); + }, o.Gi = function(e, t) { + Knn(this, e, t); + }, o.Hi = function(e) { + aF(this, e); + }, o.Wk = function(e, t) { + return Vc(this, e, t); + }, o.$i = function(e) { + return eQ(this, e); + }, o.Xk = function(e, t) { + return cr(this, e, t); + }, o.Xi = function(e, t) { + return VUn(this, e, t); + }, o.Ii = function() { + return new yp(this); + }, o.Ji = function() { + return new M7(this); + }, o.Ki = function(e) { + return pk(this, e); + }, w(Tt, "NotifyingInternalEListImpl", 2092), b(632, 2092, Qr), o.Hc = function(e) { + return wGn(this, e); + }, o.Ij = function(e, t, i, r, c) { + return W6(this, e, t, i, r, c); + }, o.Jj = function(e) { + t4(this, e); + }, o.Fk = function(e) { + return this; + }, o.Lk = function() { + return $n(this.e.Dh(), this.Lj()); + }, o.Kj = function() { + return this.Lk(); + }, o.Lj = function() { + return Ot(this.e.Dh(), this.Lk()); + }, o.il = function() { + return u(this.Lk().Hk(), 29).kk(); + }, o.jl = function() { + return wr(u(this.Lk(), 19)).n; + }, o.jj = function() { + return this.e; + }, o.kl = function() { + return !0; + }, o.ll = function() { + return !1; + }, o.ml = function() { + return !1; + }, o.nl = function() { + return !1; + }, o.dd = function(e) { + return f1(this, e); + }, o.Nj = function(e, t) { + var i; + return i = u(e, 54), this.ml() ? this.kl() ? i.Rh(this.e, this.jl(), this.il(), t) : i.Rh(this.e, Ot(i.Dh(), wr(u(this.Lk(), 19))), null, t) : i.Rh(this.e, -1 - this.Lj(), null, t); + }, o.Oj = function(e, t) { + var i; + return i = u(e, 54), this.ml() ? this.kl() ? i.Th(this.e, this.jl(), this.il(), t) : i.Th(this.e, Ot(i.Dh(), wr(u(this.Lk(), 19))), null, t) : i.Th(this.e, -1 - this.Lj(), null, t); + }, o.al = function() { + return !1; + }, o.ol = function() { + return !0; + }, o.fk = function(e) { + return RDn(this.d, e); + }, o.Pj = function() { + return fo(this.e); + }, o.Qj = function() { + return this.i != 0; + }, o.aj = function(e) { + return gk(this.d, e); + }, o.Wi = function(e, t) { + return this.ol() && this.nl() ? e3(this, e, u(t, 58)) : t; + }, o.pl = function(e) { + return e.Vh() ? ea(this.e, u(e, 54)) : e; + }, o.Wb = function(e) { + DTn(this, e); + }, o.Pc = function() { + return NNn(this); + }, o.Qc = function(e) { + var t; + if (this.nl()) + for (t = this.i - 1; t >= 0; --t) + L(this, t); + return JY(this, e); + }, o.Gk = function() { + me(this); + }, o.Zi = function(e, t) { + return U$n(this, e, t); + }, w(Tt, "EcoreEList", 632), b(505, 632, Qr, F7), o.Li = function() { + return !1; + }, o.Lj = function() { + return this.c; + }, o.Mj = function() { + return !1; + }, o.ol = function() { + return !0; + }, o.Si = function() { + return !0; + }, o.Wi = function(e, t) { + return t; + }, o.Yi = function() { + return !1; + }, o.c = 0, w(Tt, "EObjectEList", 505), b(83, 505, Qr, ti), o.Mj = function() { + return !0; + }, o.ml = function() { + return !1; + }, o.al = function() { + return !0; + }, w(Tt, "EObjectContainmentEList", 83), b(555, 83, Qr, $C), o.Ni = function() { + this.b = !0; + }, o.Qj = function() { + return this.b; + }, o.Gk = function() { + var e; + me(this), fo(this.e) ? (e = this.b, this.b = !1, rt(this.e, new Rs(this.e, 2, this.c, e, !1))) : this.b = !1; + }, o.b = !1, w(Tt, "EObjectContainmentEList/Unsettable", 555), b(1161, 555, Qr, vPn), o.Ti = function(e, t) { + var i, r; + return i = u(k5(this, e, t), 89), fo(this.e) && t4(this, new ck(this.a, 7, (On(), Hoe), Y(t), (r = i.c, D(r, 90) ? u(r, 29) : Is), e)), i; + }, o.Uj = function(e, t) { + return S8e(this, u(e, 89), t); + }, o.Vj = function(e, t) { + return A8e(this, u(e, 89), t); + }, o.Wj = function(e, t, i) { + return Oke(this, u(e, 89), u(t, 89), i); + }, o.Ij = function(e, t, i, r, c) { + switch (e) { + case 3: + return W6(this, e, t, i, r, this.i > 1); + case 5: + return W6(this, e, t, i, r, this.i - u(i, 15).gc() > 0); + default: + return new ml(this.e, e, this.c, t, i, r, !0); + } + }, o.Tj = function() { + return !0; + }, o.Qj = function() { + return Ix(this); + }, o.Gk = function() { + me(this); + }, w(qn, "EClassImpl/1", 1161), b(1175, 1174, qcn), o.dj = function(e) { + var t, i, r, c, s, f, h; + if (i = e.gj(), i != 8) { + if (r = f9e(e), r == 0) + switch (i) { + case 1: + case 9: { + h = e.kj(), h != null && (t = Zu(u(h, 482)), !t.c && (t.c = new W3()), rT(t.c, e.jj())), f = e.ij(), f != null && (c = u(f, 482), c.Bb & 1 || (t = Zu(c), !t.c && (t.c = new W3()), ve(t.c, u(e.jj(), 29)))); + break; + } + case 3: { + f = e.ij(), f != null && (c = u(f, 482), c.Bb & 1 || (t = Zu(c), !t.c && (t.c = new W3()), ve(t.c, u(e.jj(), 29)))); + break; + } + case 5: { + if (f = e.ij(), f != null) + for (s = u(f, 16).Kc(); s.Ob(); ) + c = u(s.Pb(), 482), c.Bb & 1 || (t = Zu(c), !t.c && (t.c = new W3()), ve(t.c, u(e.jj(), 29))); + break; + } + case 4: { + h = e.kj(), h != null && (c = u(h, 482), c.Bb & 1 || (t = Zu(c), !t.c && (t.c = new W3()), rT(t.c, e.jj()))); + break; + } + case 6: { + if (h = e.kj(), h != null) + for (s = u(h, 16).Kc(); s.Ob(); ) + c = u(s.Pb(), 482), c.Bb & 1 || (t = Zu(c), !t.c && (t.c = new W3()), rT(t.c, e.jj())); + break; + } + } + this.ql(r); + } + }, o.ql = function(e) { + Gqn(this, e); + }, o.b = 63, w(qn, "ESuperAdapter", 1175), b(1176, 1175, qcn, vyn), o.ql = function(e) { + hw(this, e); + }, w(qn, "EClassImpl/10", 1176), b(1165, 710, Qr), o.Ei = function(e, t) { + return Zx(this, e, t); + }, o.Fi = function(e) { + return NRn(this, e); + }, o.Gi = function(e, t) { + Dk(this, e, t); + }, o.Hi = function(e) { + ek(this, e); + }, o.$i = function(e) { + return eQ(this, e); + }, o.Xi = function(e, t) { + return d$(this, e, t); + }, o.Wk = function(e, t) { + throw M(new Pe()); + }, o.Ii = function() { + return new yp(this); + }, o.Ji = function() { + return new M7(this); + }, o.Ki = function(e) { + return pk(this, e); + }, o.Xk = function(e, t) { + throw M(new Pe()); + }, o.Fk = function(e) { + return this; + }, o.Qj = function() { + return this.i != 0; + }, o.Wb = function(e) { + throw M(new Pe()); + }, o.Gk = function() { + throw M(new Pe()); + }, w(Tt, "EcoreEList/UnmodifiableEList", 1165), b(328, 1165, Qr, pg), o.Yi = function() { + return !1; + }, w(Tt, "EcoreEList/UnmodifiableEList/FastCompare", 328), b(1168, 328, Qr, wFn), o.dd = function(e) { + var t, i, r; + if (D(e, 179) && (t = u(e, 179), i = t.Lj(), i != -1)) { + for (r = this.i; i < r; ++i) + if (x(this.g[i]) === x(e)) + return i; + } + return -1; + }, w(qn, "EClassImpl/1EAllStructuralFeaturesList", 1168), b(1162, 506, Ch, yvn), o.aj = function(e) { + return K(Er, mJn, 89, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/1EGenericSuperTypeEList", 1162), b(633, 506, Ch, qO), o.aj = function(e) { + return K(yu, f2, 179, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/1EStructuralFeatureUniqueEList", 633), b(755, 506, Ch, rG), o.aj = function(e) { + return K(eg, f2, 19, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/1ReferenceList", 755), b(1163, 506, Ch, kyn), o.Mi = function(e, t) { + swe(this, u(t, 35)); + }, o.aj = function(e) { + return K(ng, f2, 35, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/2", 1163), b(1164, 506, Ch, jvn), o.aj = function(e) { + return K(ng, f2, 35, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/3", 1164), b(1166, 328, Qr, qSn), o.Fc = function(e) { + return T3e(this, u(e, 35)); + }, o.Hi = function(e) { + Whe(this, u(e, 35)); + }, w(qn, "EClassImpl/4", 1166), b(1167, 328, Qr, HSn), o.Fc = function(e) { + return A3e(this, u(e, 19)); + }, o.Hi = function(e) { + Jhe(this, u(e, 19)); + }, w(qn, "EClassImpl/5", 1167), b(1169, 506, Ch, Evn), o.aj = function(e) { + return K(Ss, zcn, 62, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/6", 1169), b(1170, 506, Ch, Cvn), o.aj = function(e) { + return K(eg, f2, 19, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/7", 1170), b(2095, 2094, { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 70: 1, 61: 1, 71: 1 }), o.Ei = function(e, t) { + return xen(this, e, t); + }, o.Fi = function(e) { + return xen(this, this.Ej(), e); + }, o.Gi = function(e, t) { + CHn(this, e, t); + }, o.Hi = function(e) { + aHn(this, e); + }, o.Wk = function(e, t) { + return e7e(this, e, t); + }, o.Xk = function(e, t) { + return S9e(this, e, t); + }, o.Xi = function(e, t) { + return OUn(this, e, t); + }, o.$i = function(e) { + return this.xj(e); + }, o.Ii = function() { + return new yp(this); + }, o.pj = function() { + return this.sj(); + }, o.Ji = function() { + return new M7(this); + }, o.Ki = function(e) { + return pk(this, e); + }, w(Tt, "DelegatingNotifyingInternalEListImpl", 2095), b(756, 2095, Xcn), o.Li = function() { + var e; + return e = $n(du(this.b), this.Lj()).Hk(), D(e, 156) && !D(e, 469) && (e.kk().i & 1) == 0; + }, o.Hc = function(e) { + var t, i, r, c, s, f, h, l; + if (this.ol()) { + if (l = this.Ej(), l > 4) + if (this.fk(e)) { + if (this.al()) { + if (r = u(e, 54), i = r.Eh(), h = i == this.b && (this.ml() ? r.yh(r.Fh(), u($n(du(this.b), this.Lj()).Hk(), 29).kk()) == wr(u($n(du(this.b), this.Lj()), 19)).n : -1 - r.Fh() == this.Lj()), this.nl() && !h && !i && r.Jh()) { + for (c = 0; c < l; ++c) + if (t = cN(this, this.xj(c)), x(t) === x(e)) + return !0; + } + return h; + } else if (this.ml() && !this.ll()) { + if (s = u(e, 58).Mh(wr(u($n(du(this.b), this.Lj()), 19))), x(s) === x(this.b)) + return !0; + if (s == null || !u(s, 58).Vh()) + return !1; + } + } else + return !1; + if (f = this.uj(e), this.nl() && !f) { + for (c = 0; c < l; ++c) + if (r = cN(this, this.xj(c)), x(r) === x(e)) + return !0; + } + return f; + } else + return this.uj(e); + }, o.Ij = function(e, t, i, r, c) { + return new ml(this.b, e, this.Lj(), t, i, r, c); + }, o.Jj = function(e) { + rt(this.b, e); + }, o.Fk = function(e) { + return this; + }, o.Kj = function() { + return $n(du(this.b), this.Lj()); + }, o.Lj = function() { + return Ot(du(this.b), $n(du(this.b), this.Lj())); + }, o.jj = function() { + return this.b; + }, o.kl = function() { + return !!$n(du(this.b), this.Lj()).Hk().kk(); + }, o.Mj = function() { + var e, t; + return t = $n(du(this.b), this.Lj()), D(t, 102) ? (e = u(t, 19), (e.Bb & yc) != 0 || !!wr(u(t, 19))) : !1; + }, o.ll = function() { + var e, t, i, r; + return t = $n(du(this.b), this.Lj()), D(t, 102) ? (e = u(t, 19), i = wr(e), !!i && (r = i.t, r > 1 || r == -1)) : !1; + }, o.ml = function() { + var e, t, i; + return t = $n(du(this.b), this.Lj()), D(t, 102) ? (e = u(t, 19), i = wr(e), !!i) : !1; + }, o.nl = function() { + var e, t; + return t = $n(du(this.b), this.Lj()), D(t, 102) ? (e = u(t, 19), (e.Bb & hr) != 0) : !1; + }, o.dd = function(e) { + var t, i, r, c; + if (r = this.zj(e), r >= 0) + return r; + if (this.ol()) { + for (i = 0, c = this.Ej(); i < c; ++i) + if (t = cN(this, this.xj(i)), x(t) === x(e)) + return i; + } + return -1; + }, o.Nj = function(e, t) { + var i; + return i = u(e, 54), this.ml() ? this.kl() ? i.Rh(this.b, wr(u($n(du(this.b), this.Lj()), 19)).n, u($n(du(this.b), this.Lj()).Hk(), 29).kk(), t) : i.Rh(this.b, Ot(i.Dh(), wr(u($n(du(this.b), this.Lj()), 19))), null, t) : i.Rh(this.b, -1 - this.Lj(), null, t); + }, o.Oj = function(e, t) { + var i; + return i = u(e, 54), this.ml() ? this.kl() ? i.Th(this.b, wr(u($n(du(this.b), this.Lj()), 19)).n, u($n(du(this.b), this.Lj()).Hk(), 29).kk(), t) : i.Th(this.b, Ot(i.Dh(), wr(u($n(du(this.b), this.Lj()), 19))), null, t) : i.Th(this.b, -1 - this.Lj(), null, t); + }, o.al = function() { + var e, t; + return t = $n(du(this.b), this.Lj()), D(t, 102) ? (e = u(t, 19), (e.Bb & yc) != 0) : !1; + }, o.ol = function() { + return D($n(du(this.b), this.Lj()).Hk(), 90); + }, o.fk = function(e) { + return $n(du(this.b), this.Lj()).Hk().fk(e); + }, o.Pj = function() { + return fo(this.b); + }, o.Qj = function() { + return !this.Aj(); + }, o.Si = function() { + return $n(du(this.b), this.Lj()).Si(); + }, o.Wi = function(e, t) { + return py(this, e, t); + }, o.Wb = function(e) { + X5(this), Ht(this, u(e, 15)); + }, o.Pc = function() { + var e; + if (this.nl()) + for (e = this.Ej() - 1; e >= 0; --e) + py(this, e, this.xj(e)); + return this.Fj(); + }, o.Qc = function(e) { + var t; + if (this.nl()) + for (t = this.Ej() - 1; t >= 0; --t) + py(this, t, this.xj(t)); + return this.Gj(e); + }, o.Gk = function() { + X5(this); + }, o.Zi = function(e, t) { + return yNn(this, e, t); + }, w(Tt, "DelegatingEcoreEList", 756), b(1171, 756, Xcn, $An), o.qj = function(e, t) { + cae(this, e, u(t, 29)); + }, o.rj = function(e) { + Xle(this, u(e, 29)); + }, o.xj = function(e) { + var t, i; + return t = u(L(Pc(this.a), e), 89), i = t.c, D(i, 90) ? u(i, 29) : (On(), Is); + }, o.Cj = function(e) { + var t, i; + return t = u(dw(Pc(this.a), e), 89), i = t.c, D(i, 90) ? u(i, 29) : (On(), Is); + }, o.Dj = function(e, t) { + return t7e(this, e, u(t, 29)); + }, o.Li = function() { + return !1; + }, o.Ij = function(e, t, i, r, c) { + return null; + }, o.sj = function() { + return new jyn(this); + }, o.tj = function() { + me(Pc(this.a)); + }, o.uj = function(e) { + return lBn(this, e); + }, o.vj = function(e) { + var t, i; + for (i = e.Kc(); i.Ob(); ) + if (t = i.Pb(), !lBn(this, t)) + return !1; + return !0; + }, o.wj = function(e) { + var t, i, r; + if (D(e, 15) && (r = u(e, 15), r.gc() == Pc(this.a).i)) { + for (t = r.Kc(), i = new ne(this); t.Ob(); ) + if (x(t.Pb()) !== x(ue(i))) + return !1; + return !0; + } + return !1; + }, o.yj = function() { + var e, t, i, r, c; + for (i = 1, t = new ne(Pc(this.a)); t.e != t.i.gc(); ) + e = u(ue(t), 89), r = (c = e.c, D(c, 90) ? u(c, 29) : (On(), Is)), i = 31 * i + (r ? l0(r) : 0); + return i; + }, o.zj = function(e) { + var t, i, r, c; + for (r = 0, i = new ne(Pc(this.a)); i.e != i.i.gc(); ) { + if (t = u(ue(i), 89), x(e) === x((c = t.c, D(c, 90) ? u(c, 29) : (On(), Is)))) + return r; + ++r; + } + return -1; + }, o.Aj = function() { + return Pc(this.a).i == 0; + }, o.Bj = function() { + return null; + }, o.Ej = function() { + return Pc(this.a).i; + }, o.Fj = function() { + var e, t, i, r, c, s; + for (s = Pc(this.a).i, c = K(ki, Bn, 1, s, 5, 1), i = 0, t = new ne(Pc(this.a)); t.e != t.i.gc(); ) + e = u(ue(t), 89), c[i++] = (r = e.c, D(r, 90) ? u(r, 29) : (On(), Is)); + return c; + }, o.Gj = function(e) { + var t, i, r, c, s, f, h; + for (h = Pc(this.a).i, e.length < h && (c = gk(wo(e).c, h), e = c), e.length > h && Rt(e, h, null), r = 0, i = new ne(Pc(this.a)); i.e != i.i.gc(); ) + t = u(ue(i), 89), s = (f = t.c, D(f, 90) ? u(f, 29) : (On(), Is)), Rt(e, r++, s); + return e; + }, o.Hj = function() { + var e, t, i, r, c; + for (c = new Hl(), c.a += "[", e = Pc(this.a), t = 0, r = Pc(this.a).i; t < r; ) + Cr(c, O6((i = u(L(e, t), 89).c, D(i, 90) ? u(i, 29) : (On(), Is)))), ++t < r && (c.a += ur); + return c.a += "]", c.a; + }, o.Jj = function(e) { + }, o.Lj = function() { + return 10; + }, o.kl = function() { + return !0; + }, o.Mj = function() { + return !1; + }, o.ll = function() { + return !1; + }, o.ml = function() { + return !1; + }, o.nl = function() { + return !0; + }, o.al = function() { + return !1; + }, o.ol = function() { + return !0; + }, o.fk = function(e) { + return D(e, 90); + }, o.Qj = function() { + return Spe(this.a); + }, o.Si = function() { + return !0; + }, o.Yi = function() { + return !0; + }, w(qn, "EClassImpl/8", 1171), b(1172, 2062, Rm, jyn), o.fd = function(e) { + return pk(this.a, e); + }, o.gc = function() { + return Pc(this.a.a).i; + }, w(qn, "EClassImpl/8/1", 1172), b(1173, 506, Ch, Mvn), o.aj = function(e) { + return K(Cf, Bn, 142, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "EClassImpl/9", 1173), b(1160, 49, Ctn, ajn), w(qn, "EClassImpl/MyHashSet", 1160), b(577, 364, { 110: 1, 94: 1, 93: 1, 142: 1, 156: 1, 847: 1, 155: 1, 197: 1, 58: 1, 114: 1, 54: 1, 99: 1, 364: 1, 158: 1, 119: 1, 120: 1, 691: 1 }, xE), o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return this.D != null ? this.D : this.B; + case 3: + return K0(this); + case 4: + return this.ik(); + case 5: + return this.F; + case 6: + return t ? jo(this) : D4(this); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), this.A; + case 8: + return _n(), !!(this.Bb & 256); + } + return zo(this, e - se(this.ii()), $n((r = u(Un(this, 16), 29), r || this.ii()), e), t, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return this.D != null && this.D == this.F; + case 3: + return !!K0(this); + case 4: + return this.ik() != null; + case 5: + return this.F != null && this.F != this.D && this.F != this.B; + case 6: + return !!D4(this); + case 7: + return !!this.A && this.A.i != 0; + case 8: + return (this.Bb & 256) == 0; + } + return Uo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + xM(this, Oe(t)); + return; + case 2: + wL(this, Oe(t)); + return; + case 5: + Lm(this, Oe(t)); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A), !this.A && (this.A = new Au(hu, this, 7)), Ht(this.A, u(t, 16)); + return; + case 8: + BT(this, on(un(t))); + return; + } + Jo(this, e - se(this.ii()), $n((i = u(Un(this, 16), 29), i || this.ii()), e), t); + }, o.ii = function() { + return On(), qoe; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 184) && (u(this.Cb, 184).tb = null), Xc(this, null); + return; + case 2: + um(this, null), G4(this, this.D); + return; + case 5: + Lm(this, null); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A); + return; + case 8: + BT(this, !0); + return; + } + Wo(this, e - se(this.ii()), $n((t = u(Un(this, 16), 29), t || this.ii()), e)); + }, o.pi = function() { + r1((Lu(), zi), this).xe(), this.Bb |= 1; + }, o.ok = function() { + var e, t, i; + if (!this.c && (e = FHn(jo(this)), !e.dc())) + for (i = e.Kc(); i.Ob(); ) + t = Oe(i.Pb()), _5(this, t) && A5e(this); + return this.b; + }, o.ik = function() { + var e; + if (!this.e) { + e = null; + try { + e = K0(this); + } catch (t) { + if (t = It(t), !D(t, 103)) + throw M(t); + } + this.d = null, e && e.i & 1 && (e == so ? this.d = (_n(), ga) : e == ye ? this.d = Y(0) : e == cg ? this.d = new z9(0) : e == Ii ? this.d = 0 : e == Fa ? this.d = Ml(0) : e == V2 ? this.d = sm(0) : e == Bu ? this.d = ak(0) : this.d = vk(0)), this.e = !0; + } + return this.d; + }, o.nk = function() { + return (this.Bb & 256) != 0; + }, o.rl = function(e) { + e && (this.D = "org.eclipse.emf.common.util.AbstractEnumerator"); + }, o.gl = function(e) { + jxn(this, e), this.rl(e); + }, o.hl = function(e) { + this.C = e, this.e = !1; + }, o.Ib = function() { + var e; + return this.Db & 64 ? UT(this) : (e = new ls(UT(this)), e.a += " (serializable: ", ql(e, (this.Bb & 256) != 0), e.a += ")", e.a); + }, o.c = !1, o.d = null, o.e = !1, w(qn, "EDataTypeImpl", 577), b(469, 577, { 110: 1, 94: 1, 93: 1, 142: 1, 156: 1, 847: 1, 685: 1, 155: 1, 197: 1, 58: 1, 114: 1, 54: 1, 99: 1, 364: 1, 469: 1, 158: 1, 119: 1, 120: 1, 691: 1 }, djn), o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return this.D != null ? this.D : this.B; + case 3: + return K0(this); + case 4: + return dY(this); + case 5: + return this.F; + case 6: + return t ? jo(this) : D4(this); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), this.A; + case 8: + return _n(), !!(this.Bb & 256); + case 9: + return !this.a && (this.a = new q(Bl, this, 9, 5)), this.a; + } + return zo(this, e - se((On(), Na)), $n((r = u(Un(this, 16), 29), r || Na), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 6: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? _x(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 6, i); + case 9: + return !this.a && (this.a = new q(Bl, this, 9, 5)), Vc(this.a, e, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), Na)), t), 69), s.wk().zk(this, ru(this), t - se((On(), Na)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 6: + return So(this, null, 6, i); + case 7: + return !this.A && (this.A = new Au(hu, this, 7)), cr(this.A, e, i); + case 9: + return !this.a && (this.a = new q(Bl, this, 9, 5)), cr(this.a, e, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), Na)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), Na)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return this.D != null && this.D == this.F; + case 3: + return !!K0(this); + case 4: + return !!dY(this); + case 5: + return this.F != null && this.F != this.D && this.F != this.B; + case 6: + return !!D4(this); + case 7: + return !!this.A && this.A.i != 0; + case 8: + return (this.Bb & 256) == 0; + case 9: + return !!this.a && this.a.i != 0; + } + return Uo(this, e - se((On(), Na)), $n((t = u(Un(this, 16), 29), t || Na), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + xM(this, Oe(t)); + return; + case 2: + wL(this, Oe(t)); + return; + case 5: + Lm(this, Oe(t)); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A), !this.A && (this.A = new Au(hu, this, 7)), Ht(this.A, u(t, 16)); + return; + case 8: + BT(this, on(un(t))); + return; + case 9: + !this.a && (this.a = new q(Bl, this, 9, 5)), me(this.a), !this.a && (this.a = new q(Bl, this, 9, 5)), Ht(this.a, u(t, 16)); + return; + } + Jo(this, e - se((On(), Na)), $n((i = u(Un(this, 16), 29), i || Na), e), t); + }, o.ii = function() { + return On(), Na; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 184) && (u(this.Cb, 184).tb = null), Xc(this, null); + return; + case 2: + um(this, null), G4(this, this.D); + return; + case 5: + Lm(this, null); + return; + case 7: + !this.A && (this.A = new Au(hu, this, 7)), me(this.A); + return; + case 8: + BT(this, !0); + return; + case 9: + !this.a && (this.a = new q(Bl, this, 9, 5)), me(this.a); + return; + } + Wo(this, e - se((On(), Na)), $n((t = u(Un(this, 16), 29), t || Na), e)); + }, o.pi = function() { + var e, t; + if (this.a) + for (e = 0, t = this.a.i; e < t; ++e) + T7(L(this.a, e)); + r1((Lu(), zi), this).xe(), this.Bb |= 1; + }, o.ik = function() { + return dY(this); + }, o.fk = function(e) { + return e != null; + }, o.rl = function(e) { + }, w(qn, "EEnumImpl", 469), b(582, 448, { 110: 1, 94: 1, 93: 1, 2039: 1, 694: 1, 155: 1, 197: 1, 58: 1, 114: 1, 54: 1, 99: 1, 582: 1, 158: 1, 119: 1, 120: 1 }, Byn), o.xe = function() { + return this.zb; + }, o.Ah = function(e) { + return oKn(this, e); + }, o.Lh = function(e, t, i) { + var r, c; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return Y(this.d); + case 3: + return this.b ? this.b : this.a; + case 4: + return c = this.c, c == null ? this.zb : c; + case 5: + return this.Db >> 16 == 5 ? u(this.Cb, 685) : null; + } + return zo(this, e - se((On(), S1)), $n((r = u(Un(this, 16), 29), r || S1), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 5: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? oKn(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 5, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), S1)), t), 69), s.wk().zk(this, ru(this), t - se((On(), S1)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 5: + return So(this, null, 5, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), S1)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), S1)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return this.d != 0; + case 3: + return !!this.b; + case 4: + return this.c != null; + case 5: + return !!(this.Db >> 16 == 5 && u(this.Cb, 685)); + } + return Uo(this, e - se((On(), S1)), $n((t = u(Un(this, 16), 29), t || S1), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + Xc(this, Oe(t)); + return; + case 2: + v$(this, u(t, 17).a); + return; + case 3: + rHn(this, u(t, 2039)); + return; + case 4: + y$(this, Oe(t)); + return; + } + Jo(this, e - se((On(), S1)), $n((i = u(Un(this, 16), 29), i || S1), e), t); + }, o.ii = function() { + return On(), S1; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + Xc(this, null); + return; + case 2: + v$(this, 0); + return; + case 3: + rHn(this, null); + return; + case 4: + y$(this, null); + return; + } + Wo(this, e - se((On(), S1)), $n((t = u(Un(this, 16), 29), t || S1), e)); + }, o.Ib = function() { + var e; + return e = this.c, e == null ? this.zb : e; + }, o.b = null, o.c = null, o.d = 0, w(qn, "EEnumLiteralImpl", 582); + var NNe = xt(qn, "EFactoryImpl/InternalEDateTimeFormat"); + b(499, 1, { 2114: 1 }, X9), w(qn, "EFactoryImpl/1ClientInternalEDateTimeFormat", 499), b(248, 120, { 110: 1, 94: 1, 93: 1, 89: 1, 58: 1, 114: 1, 54: 1, 99: 1, 248: 1, 119: 1, 120: 1 }, Jd), o.Ch = function(e, t, i) { + var r; + return i = So(this, e, t, i), this.e && D(e, 179) && (r = MA(this, this.e), r != this.c && (i = Nm(this, r, i))), i; + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return this.f; + case 1: + return !this.d && (this.d = new ti(Er, this, 1)), this.d; + case 2: + return t ? BA(this) : this.c; + case 3: + return this.b; + case 4: + return this.e; + case 5: + return t ? Lx(this) : this.a; + } + return zo(this, e - se((On(), jb)), $n((r = u(Un(this, 16), 29), r || jb), e), t, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return YFn(this, null, i); + case 1: + return !this.d && (this.d = new ti(Er, this, 1)), cr(this.d, e, i); + case 3: + return ZFn(this, null, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), jb)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), jb)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.f; + case 1: + return !!this.d && this.d.i != 0; + case 2: + return !!this.c; + case 3: + return !!this.b; + case 4: + return !!this.e; + case 5: + return !!this.a; + } + return Uo(this, e - se((On(), jb)), $n((t = u(Un(this, 16), 29), t || jb), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + TKn(this, u(t, 89)); + return; + case 1: + !this.d && (this.d = new ti(Er, this, 1)), me(this.d), !this.d && (this.d = new ti(Er, this, 1)), Ht(this.d, u(t, 16)); + return; + case 3: + GZ(this, u(t, 89)); + return; + case 4: + hnn(this, u(t, 850)); + return; + case 5: + K4(this, u(t, 142)); + return; + } + Jo(this, e - se((On(), jb)), $n((i = u(Un(this, 16), 29), i || jb), e), t); + }, o.ii = function() { + return On(), jb; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + TKn(this, null); + return; + case 1: + !this.d && (this.d = new ti(Er, this, 1)), me(this.d); + return; + case 3: + GZ(this, null); + return; + case 4: + hnn(this, null); + return; + case 5: + K4(this, null); + return; + } + Wo(this, e - se((On(), jb)), $n((t = u(Un(this, 16), 29), t || jb), e)); + }, o.Ib = function() { + var e; + return e = new mo(Hs(this)), e.a += " (expression: ", _F(this, e), e.a += ")", e.a; + }; + var zdn; + w(qn, "EGenericTypeImpl", 248), b(2067, 2062, zS), o.Gi = function(e, t) { + DAn(this, e, t); + }, o.Wk = function(e, t) { + return DAn(this, this.gc(), e), t; + }, o.$i = function(e) { + return Zo(this.pj(), e); + }, o.Ii = function() { + return this.Ji(); + }, o.pj = function() { + return new Tyn(this); + }, o.Ji = function() { + return this.Ki(0); + }, o.Ki = function(e) { + return this.pj().fd(e); + }, o.Xk = function(e, t) { + return iw(this, e, !0), t; + }, o.Ti = function(e, t) { + var i, r; + return r = Ux(this, t), i = this.fd(e), i.Rb(r), r; + }, o.Ui = function(e, t) { + var i; + iw(this, t, !0), i = this.fd(e), i.Rb(t); + }, w(Tt, "AbstractSequentialInternalEList", 2067), b(496, 2067, zS, C7), o.$i = function(e) { + return Zo(this.pj(), e); + }, o.Ii = function() { + return this.b == null ? (Gl(), Gl(), dE) : this.sl(); + }, o.pj = function() { + return new QMn(this.a, this.b); + }, o.Ji = function() { + return this.b == null ? (Gl(), Gl(), dE) : this.sl(); + }, o.Ki = function(e) { + var t, i; + if (this.b == null) { + if (e < 0 || e > 1) + throw M(new Ir(p8 + e + ", size=0")); + return Gl(), Gl(), dE; + } + for (i = this.sl(), t = 0; t < e; ++t) + PT(i); + return i; + }, o.dc = function() { + var e, t, i, r, c, s; + if (this.b != null) { + for (i = 0; i < this.b.length; ++i) + if (e = this.b[i], !this.vl() || this.a.Xh(e)) { + if (s = this.a.Nh(e, !1), br(), u(e, 69).xk()) { + for (t = u(s, 160), r = 0, c = t.gc(); r < c; ++r) + if (uIn(t.Tl(r)) && t.Ul(r) != null) + return !1; + } else if (e.Jk()) { + if (!u(s, 16).dc()) + return !1; + } else if (s != null) + return !1; + } + } + return !0; + }, o.Kc = function() { + return NQ(this); + }, o.fd = function(e) { + var t, i; + if (this.b == null) { + if (e != 0) + throw M(new Ir(p8 + e + ", size=0")); + return Gl(), Gl(), dE; + } + for (i = this.ul() ? this.tl() : this.sl(), t = 0; t < e; ++t) + PT(i); + return i; + }, o.Ti = function(e, t) { + throw M(new Pe()); + }, o.Ui = function(e, t) { + throw M(new Pe()); + }, o.sl = function() { + return new _C(this.a, this.b); + }, o.tl = function() { + return new eV(this.a, this.b); + }, o.ul = function() { + return !0; + }, o.gc = function() { + var e, t, i, r, c, s, f; + if (c = 0, this.b != null) { + for (i = 0; i < this.b.length; ++i) + if (e = this.b[i], !this.vl() || this.a.Xh(e)) + if (f = this.a.Nh(e, !1), br(), u(e, 69).xk()) + for (t = u(f, 160), r = 0, s = t.gc(); r < s; ++r) + uIn(t.Tl(r)) && t.Ul(r) != null && ++c; + else + e.Jk() ? c += u(f, 16).gc() : f != null && ++c; + } + return c; + }, o.vl = function() { + return !0; + }; + var MU; + w(Tt, "EContentsEList", 496), b(1177, 496, zS, gAn), o.sl = function() { + return new mAn(this.a, this.b); + }, o.tl = function() { + return new pAn(this.a, this.b); + }, o.vl = function() { + return !1; + }, w(qn, "ENamedElementImpl/1", 1177), b(287, 1, XS, _C), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + throw M(new Pe()); + }, o.wl = function(e) { + if (this.g != 0 || this.e) + throw M(new Or("Iterator already in use or already filtered")); + this.e = e; + }, o.Ob = function() { + var e, t, i, r, c, s; + switch (this.g) { + case 3: + case 2: + return !0; + case 1: + return !1; + case -3: + this.p ? this.p.Pb() : ++this.n; + default: + if (!this.k || (this.p ? !v_n(this, this.p) : !sHn(this))) { + for (; this.d < this.c.length; ) + if (t = this.c[this.d++], (!this.e || t.pk() != Hv || t.Lj() != 0) && (!this.vl() || this.b.Xh(t))) { + if (s = this.b.Nh(t, this.ul()), this.f = (br(), u(t, 69).xk()), this.f || t.Jk()) { + if (this.ul() ? (r = u(s, 15), this.k = r) : (r = u(s, 71), this.k = this.j = r), D(this.k, 59) ? (this.p = null, this.o = this.k.gc(), this.n = 0) : this.p = this.j ? this.j.Ji() : this.k.ed(), this.p ? v_n(this, this.p) : sHn(this)) + return c = this.p ? this.p.Pb() : this.j ? this.j.$i(this.n++) : this.k.Xb(this.n++), this.f ? (e = u(c, 76), e.Lk(), i = e.md(), this.i = i) : (i = c, this.i = i), this.g = 3, !0; + } else if (s != null) + return this.k = null, this.p = null, i = s, this.i = i, this.g = 2, !0; + } + return this.k = null, this.p = null, this.f = !1, this.g = 1, !1; + } else + return c = this.p ? this.p.Pb() : this.j ? this.j.$i(this.n++) : this.k.Xb(this.n++), this.f ? (e = u(c, 76), e.Lk(), i = e.md(), this.i = i) : (i = c, this.i = i), this.g = 3, !0; + } + }, o.Sb = function() { + var e, t, i, r, c, s; + switch (this.g) { + case -3: + case -2: + return !0; + case -1: + return !1; + case 3: + this.p ? this.p.Ub() : --this.n; + default: + if (!this.k || (this.p ? !k_n(this, this.p) : !O_n(this))) { + for (; this.d > 0; ) + if (t = this.c[--this.d], (!this.e || t.pk() != Hv || t.Lj() != 0) && (!this.vl() || this.b.Xh(t))) { + if (s = this.b.Nh(t, this.ul()), this.f = (br(), u(t, 69).xk()), this.f || t.Jk()) { + if (this.ul() ? (r = u(s, 15), this.k = r) : (r = u(s, 71), this.k = this.j = r), D(this.k, 59) ? (this.o = this.k.gc(), this.n = this.o) : this.p = this.j ? this.j.Ki(this.k.gc()) : this.k.fd(this.k.gc()), this.p ? k_n(this, this.p) : O_n(this)) + return c = this.p ? this.p.Ub() : this.j ? this.j.$i(--this.n) : this.k.Xb(--this.n), this.f ? (e = u(c, 76), e.Lk(), i = e.md(), this.i = i) : (i = c, this.i = i), this.g = -3, !0; + } else if (s != null) + return this.k = null, this.p = null, i = s, this.i = i, this.g = -2, !0; + } + return this.k = null, this.p = null, this.g = -1, !1; + } else + return c = this.p ? this.p.Ub() : this.j ? this.j.$i(--this.n) : this.k.Xb(--this.n), this.f ? (e = u(c, 76), e.Lk(), i = e.md(), this.i = i) : (i = c, this.i = i), this.g = -3, !0; + } + }, o.Pb = function() { + return PT(this); + }, o.Tb = function() { + return this.a; + }, o.Ub = function() { + var e; + if (this.g < -1 || this.Sb()) + return --this.a, this.g = 0, e = this.i, this.Sb(), e; + throw M(new nc()); + }, o.Vb = function() { + return this.a - 1; + }, o.Qb = function() { + throw M(new Pe()); + }, o.ul = function() { + return !1; + }, o.Wb = function(e) { + throw M(new Pe()); + }, o.vl = function() { + return !0; + }, o.a = 0, o.d = 0, o.f = !1, o.g = 0, o.n = 0, o.o = 0; + var dE; + w(Tt, "EContentsEList/FeatureIteratorImpl", 287), b(711, 287, XS, eV), o.ul = function() { + return !0; + }, w(Tt, "EContentsEList/ResolvingFeatureIteratorImpl", 711), b(1178, 711, XS, pAn), o.vl = function() { + return !1; + }, w(qn, "ENamedElementImpl/1/1", 1178), b(1179, 287, XS, mAn), o.vl = function() { + return !1; + }, w(qn, "ENamedElementImpl/1/2", 1179), b(39, 152, Wy, Vb, UN, Ci, c$, ml, Rs, bQ, QOn, wQ, YOn, DJ, ZOn, mQ, nDn, LJ, eDn, gQ, tDn, H6, ck, MN, pQ, iDn, NJ, rDn), o.Kj = function() { + return QJ(this); + }, o.Rj = function() { + var e; + return e = QJ(this), e ? e.ik() : null; + }, o.hj = function(e) { + return this.b == -1 && this.a && (this.b = this.c.Hh(this.a.Lj(), this.a.pk())), this.c.yh(this.b, e); + }, o.jj = function() { + return this.c; + }, o.Sj = function() { + var e; + return e = QJ(this), e ? e.tk() : !1; + }, o.b = -1, w(qn, "ENotificationImpl", 39), b(411, 292, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 62: 1, 114: 1, 481: 1, 54: 1, 99: 1, 158: 1, 411: 1, 292: 1, 119: 1, 120: 1 }, hD), o.Ah = function(e) { + return hKn(this, e); + }, o.Lh = function(e, t, i) { + var r, c, s; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return _n(), !!(this.Bb & 256); + case 3: + return _n(), !!(this.Bb & 512); + case 4: + return Y(this.s); + case 5: + return Y(this.t); + case 6: + return _n(), s = this.t, s > 1 || s == -1; + case 7: + return _n(), c = this.s, c >= 1; + case 8: + return t ? gs(this) : this.r; + case 9: + return this.q; + case 10: + return this.Db >> 16 == 10 ? u(this.Cb, 29) : null; + case 11: + return !this.d && (this.d = new Au(hu, this, 11)), this.d; + case 12: + return !this.c && (this.c = new q(yb, this, 12, 10)), this.c; + case 13: + return !this.a && (this.a = new P7(this, this)), this.a; + case 14: + return no(this); + } + return zo(this, e - se((On(), P1)), $n((r = u(Un(this, 16), 29), r || P1), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 10: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? hKn(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 10, i); + case 12: + return !this.c && (this.c = new q(yb, this, 12, 10)), Vc(this.c, e, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), P1)), t), 69), s.wk().zk(this, ru(this), t - se((On(), P1)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 9: + return hN(this, i); + case 10: + return So(this, null, 10, i); + case 11: + return !this.d && (this.d = new Au(hu, this, 11)), cr(this.d, e, i); + case 12: + return !this.c && (this.c = new q(yb, this, 12, 10)), cr(this.c, e, i); + case 14: + return cr(no(this), e, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), P1)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), P1)), e, i); + }, o.Wh = function(e) { + var t, i, r; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return (this.Bb & 256) == 0; + case 3: + return (this.Bb & 512) == 0; + case 4: + return this.s != 0; + case 5: + return this.t != 1; + case 6: + return r = this.t, r > 1 || r == -1; + case 7: + return i = this.s, i >= 1; + case 8: + return !!this.r && !this.q.e && v0(this.q).i == 0; + case 9: + return !!this.q && !(this.r && !this.q.e && v0(this.q).i == 0); + case 10: + return !!(this.Db >> 16 == 10 && u(this.Cb, 29)); + case 11: + return !!this.d && this.d.i != 0; + case 12: + return !!this.c && this.c.i != 0; + case 13: + return !!this.a && no(this.a.a).i != 0 && !(this.b && Ox(this.b)); + case 14: + return !!this.b && Ox(this.b); + } + return Uo(this, e - se((On(), P1)), $n((t = u(Un(this, 16), 29), t || P1), e)); + }, o.bi = function(e, t) { + var i, r; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + Xc(this, Oe(t)); + return; + case 2: + c1(this, on(un(t))); + return; + case 3: + u1(this, on(un(t))); + return; + case 4: + e1(this, u(t, 17).a); + return; + case 5: + Zb(this, u(t, 17).a); + return; + case 8: + ad(this, u(t, 142)); + return; + case 9: + r = Bf(this, u(t, 89), null), r && r.oj(); + return; + case 11: + !this.d && (this.d = new Au(hu, this, 11)), me(this.d), !this.d && (this.d = new Au(hu, this, 11)), Ht(this.d, u(t, 16)); + return; + case 12: + !this.c && (this.c = new q(yb, this, 12, 10)), me(this.c), !this.c && (this.c = new q(yb, this, 12, 10)), Ht(this.c, u(t, 16)); + return; + case 13: + !this.a && (this.a = new P7(this, this)), X5(this.a), !this.a && (this.a = new P7(this, this)), Ht(this.a, u(t, 16)); + return; + case 14: + me(no(this)), Ht(no(this), u(t, 16)); + return; + } + Jo(this, e - se((On(), P1)), $n((i = u(Un(this, 16), 29), i || P1), e), t); + }, o.ii = function() { + return On(), P1; + }, o.ki = function(e) { + var t, i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + Xc(this, null); + return; + case 2: + c1(this, !0); + return; + case 3: + u1(this, !0); + return; + case 4: + e1(this, 0); + return; + case 5: + Zb(this, 1); + return; + case 8: + ad(this, null); + return; + case 9: + i = Bf(this, null, null), i && i.oj(); + return; + case 11: + !this.d && (this.d = new Au(hu, this, 11)), me(this.d); + return; + case 12: + !this.c && (this.c = new q(yb, this, 12, 10)), me(this.c); + return; + case 13: + this.a && X5(this.a); + return; + case 14: + this.b && me(this.b); + return; + } + Wo(this, e - se((On(), P1)), $n((t = u(Un(this, 16), 29), t || P1), e)); + }, o.pi = function() { + var e, t; + if (this.c) + for (e = 0, t = this.c.i; e < t; ++e) + T7(L(this.c, e)); + gs(this), this.Bb |= 1; + }, w(qn, "EOperationImpl", 411), b(513, 756, Xcn, P7), o.qj = function(e, t) { + oae(this, e, u(t, 142)); + }, o.rj = function(e) { + Vle(this, u(e, 142)); + }, o.xj = function(e) { + var t, i; + return t = u(L(no(this.a), e), 89), i = t.c, i || (On(), Zf); + }, o.Cj = function(e) { + var t, i; + return t = u(dw(no(this.a), e), 89), i = t.c, i || (On(), Zf); + }, o.Dj = function(e, t) { + return W8e(this, e, u(t, 142)); + }, o.Li = function() { + return !1; + }, o.Ij = function(e, t, i, r, c) { + return null; + }, o.sj = function() { + return new Eyn(this); + }, o.tj = function() { + me(no(this.a)); + }, o.uj = function(e) { + return wBn(this, e); + }, o.vj = function(e) { + var t, i; + for (i = e.Kc(); i.Ob(); ) + if (t = i.Pb(), !wBn(this, t)) + return !1; + return !0; + }, o.wj = function(e) { + var t, i, r; + if (D(e, 15) && (r = u(e, 15), r.gc() == no(this.a).i)) { + for (t = r.Kc(), i = new ne(this); t.Ob(); ) + if (x(t.Pb()) !== x(ue(i))) + return !1; + return !0; + } + return !1; + }, o.yj = function() { + var e, t, i, r, c; + for (i = 1, t = new ne(no(this.a)); t.e != t.i.gc(); ) + e = u(ue(t), 89), r = (c = e.c, c || (On(), Zf)), i = 31 * i + (r ? mt(r) : 0); + return i; + }, o.zj = function(e) { + var t, i, r, c; + for (r = 0, i = new ne(no(this.a)); i.e != i.i.gc(); ) { + if (t = u(ue(i), 89), x(e) === x((c = t.c, c || (On(), Zf)))) + return r; + ++r; + } + return -1; + }, o.Aj = function() { + return no(this.a).i == 0; + }, o.Bj = function() { + return null; + }, o.Ej = function() { + return no(this.a).i; + }, o.Fj = function() { + var e, t, i, r, c, s; + for (s = no(this.a).i, c = K(ki, Bn, 1, s, 5, 1), i = 0, t = new ne(no(this.a)); t.e != t.i.gc(); ) + e = u(ue(t), 89), c[i++] = (r = e.c, r || (On(), Zf)); + return c; + }, o.Gj = function(e) { + var t, i, r, c, s, f, h; + for (h = no(this.a).i, e.length < h && (c = gk(wo(e).c, h), e = c), e.length > h && Rt(e, h, null), r = 0, i = new ne(no(this.a)); i.e != i.i.gc(); ) + t = u(ue(i), 89), s = (f = t.c, f || (On(), Zf)), Rt(e, r++, s); + return e; + }, o.Hj = function() { + var e, t, i, r, c; + for (c = new Hl(), c.a += "[", e = no(this.a), t = 0, r = no(this.a).i; t < r; ) + Cr(c, O6((i = u(L(e, t), 89).c, i || (On(), Zf)))), ++t < r && (c.a += ur); + return c.a += "]", c.a; + }, o.Jj = function(e) { + }, o.Lj = function() { + return 13; + }, o.kl = function() { + return !0; + }, o.Mj = function() { + return !1; + }, o.ll = function() { + return !1; + }, o.ml = function() { + return !1; + }, o.nl = function() { + return !0; + }, o.al = function() { + return !1; + }, o.ol = function() { + return !0; + }, o.fk = function(e) { + return D(e, 142); + }, o.Qj = function() { + return Ppe(this.a); + }, o.Si = function() { + return !0; + }, o.Yi = function() { + return !0; + }, w(qn, "EOperationImpl/1", 513), b(1376, 2062, Rm, Eyn), o.fd = function(e) { + return pk(this.a, e); + }, o.gc = function() { + return no(this.a.a).i; + }, w(qn, "EOperationImpl/1/1", 1376), b(1377, 555, Qr, kPn), o.Ti = function(e, t) { + var i, r; + return i = u(k5(this, e, t), 89), fo(this.e) && t4(this, new ck(this.a, 7, (On(), zoe), Y(t), (r = i.c, r || Zf), e)), i; + }, o.Uj = function(e, t) { + return l5e(this, u(e, 89), t); + }, o.Vj = function(e, t) { + return h5e(this, u(e, 89), t); + }, o.Wj = function(e, t, i) { + return s9e(this, u(e, 89), u(t, 89), i); + }, o.Ij = function(e, t, i, r, c) { + switch (e) { + case 3: + return W6(this, e, t, i, r, this.i > 1); + case 5: + return W6(this, e, t, i, r, this.i - u(i, 15).gc() > 0); + default: + return new ml(this.e, e, this.c, t, i, r, !0); + } + }, o.Tj = function() { + return !0; + }, o.Qj = function() { + return Ox(this); + }, o.Gk = function() { + me(this); + }, w(qn, "EOperationImpl/2", 1377), b(507, 1, { 2037: 1, 507: 1 }, NMn), w(qn, "EPackageImpl/1", 507), b(14, 83, Qr, q), o.il = function() { + return this.d; + }, o.jl = function() { + return this.b; + }, o.ml = function() { + return !0; + }, o.b = 0, w(Tt, "EObjectContainmentWithInverseEList", 14), b(365, 14, Qr, jp), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectContainmentWithInverseEList/Resolving", 365), b(308, 365, Qr, Hb), o.Ni = function() { + this.a.tb = null; + }, w(qn, "EPackageImpl/2", 308), b(1278, 1, {}, Use), w(qn, "EPackageImpl/3", 1278), b(733, 45, n2, iz), o._b = function(e) { + return Si(e) ? AN(this, e) : !!gr(this.f, e); + }, w(qn, "EPackageRegistryImpl", 733), b(518, 292, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 2116: 1, 114: 1, 481: 1, 54: 1, 99: 1, 158: 1, 518: 1, 292: 1, 119: 1, 120: 1 }, lD), o.Ah = function(e) { + return lKn(this, e); + }, o.Lh = function(e, t, i) { + var r, c, s; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return _n(), !!(this.Bb & 256); + case 3: + return _n(), !!(this.Bb & 512); + case 4: + return Y(this.s); + case 5: + return Y(this.t); + case 6: + return _n(), s = this.t, s > 1 || s == -1; + case 7: + return _n(), c = this.s, c >= 1; + case 8: + return t ? gs(this) : this.r; + case 9: + return this.q; + case 10: + return this.Db >> 16 == 10 ? u(this.Cb, 62) : null; + } + return zo(this, e - se((On(), ig)), $n((r = u(Un(this, 16), 29), r || ig), e), t, i); + }, o.Sh = function(e, t, i) { + var r, c, s; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Vc(this.Ab, e, i); + case 10: + return this.Cb && (i = (c = this.Db >> 16, c >= 0 ? lKn(this, i) : this.Cb.Th(this, -1 - c, null, i))), So(this, e, 10, i); + } + return s = u($n((r = u(Un(this, 16), 29), r || (On(), ig)), t), 69), s.wk().zk(this, ru(this), t - se((On(), ig)), e, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 9: + return hN(this, i); + case 10: + return So(this, null, 10, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), ig)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), ig)), e, i); + }, o.Wh = function(e) { + var t, i, r; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return (this.Bb & 256) == 0; + case 3: + return (this.Bb & 512) == 0; + case 4: + return this.s != 0; + case 5: + return this.t != 1; + case 6: + return r = this.t, r > 1 || r == -1; + case 7: + return i = this.s, i >= 1; + case 8: + return !!this.r && !this.q.e && v0(this.q).i == 0; + case 9: + return !!this.q && !(this.r && !this.q.e && v0(this.q).i == 0); + case 10: + return !!(this.Db >> 16 == 10 && u(this.Cb, 62)); + } + return Uo(this, e - se((On(), ig)), $n((t = u(Un(this, 16), 29), t || ig), e)); + }, o.ii = function() { + return On(), ig; + }, w(qn, "EParameterImpl", 518), b(102, 462, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 19: 1, 179: 1, 69: 1, 114: 1, 481: 1, 54: 1, 99: 1, 158: 1, 102: 1, 462: 1, 292: 1, 119: 1, 120: 1, 692: 1 }, uV), o.Lh = function(e, t, i) { + var r, c, s, f; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return _n(), !!(this.Bb & 256); + case 3: + return _n(), !!(this.Bb & 512); + case 4: + return Y(this.s); + case 5: + return Y(this.t); + case 6: + return _n(), f = this.t, f > 1 || f == -1; + case 7: + return _n(), c = this.s, c >= 1; + case 8: + return t ? gs(this) : this.r; + case 9: + return this.q; + case 10: + return _n(), !!(this.Bb & Gs); + case 11: + return _n(), !!(this.Bb & Tw); + case 12: + return _n(), !!(this.Bb & vw); + case 13: + return this.j; + case 14: + return Tm(this); + case 15: + return _n(), !!(this.Bb & xu); + case 16: + return _n(), !!(this.Bb & wh); + case 17: + return Gb(this); + case 18: + return _n(), !!(this.Bb & yc); + case 19: + return _n(), s = wr(this), !!(s && s.Bb & yc); + case 20: + return _n(), !!(this.Bb & hr); + case 21: + return t ? wr(this) : this.b; + case 22: + return t ? iY(this) : SLn(this); + case 23: + return !this.a && (this.a = new Eg(ng, this, 23)), this.a; + } + return zo(this, e - se((On(), U2)), $n((r = u(Un(this, 16), 29), r || U2), e), t, i); + }, o.Wh = function(e) { + var t, i, r, c; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return (this.Bb & 256) == 0; + case 3: + return (this.Bb & 512) == 0; + case 4: + return this.s != 0; + case 5: + return this.t != 1; + case 6: + return c = this.t, c > 1 || c == -1; + case 7: + return i = this.s, i >= 1; + case 8: + return !!this.r && !this.q.e && v0(this.q).i == 0; + case 9: + return !!this.q && !(this.r && !this.q.e && v0(this.q).i == 0); + case 10: + return (this.Bb & Gs) == 0; + case 11: + return (this.Bb & Tw) != 0; + case 12: + return (this.Bb & vw) != 0; + case 13: + return this.j != null; + case 14: + return Tm(this) != null; + case 15: + return (this.Bb & xu) != 0; + case 16: + return (this.Bb & wh) != 0; + case 17: + return !!Gb(this); + case 18: + return (this.Bb & yc) != 0; + case 19: + return r = wr(this), !!r && (r.Bb & yc) != 0; + case 20: + return (this.Bb & hr) == 0; + case 21: + return !!this.b; + case 22: + return !!SLn(this); + case 23: + return !!this.a && this.a.i != 0; + } + return Uo(this, e - se((On(), U2)), $n((t = u(Un(this, 16), 29), t || U2), e)); + }, o.bi = function(e, t) { + var i, r; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + FN(this, Oe(t)); + return; + case 2: + c1(this, on(un(t))); + return; + case 3: + u1(this, on(un(t))); + return; + case 4: + e1(this, u(t, 17).a); + return; + case 5: + Zb(this, u(t, 17).a); + return; + case 8: + ad(this, u(t, 142)); + return; + case 9: + r = Bf(this, u(t, 89), null), r && r.oj(); + return; + case 10: + fm(this, on(un(t))); + return; + case 11: + am(this, on(un(t))); + return; + case 12: + hm(this, on(un(t))); + return; + case 13: + gX(this, Oe(t)); + return; + case 15: + lm(this, on(un(t))); + return; + case 16: + dm(this, on(un(t))); + return; + case 18: + S2e(this, on(un(t))); + return; + case 20: + $Y(this, on(un(t))); + return; + case 21: + LQ(this, u(t, 19)); + return; + case 23: + !this.a && (this.a = new Eg(ng, this, 23)), me(this.a), !this.a && (this.a = new Eg(ng, this, 23)), Ht(this.a, u(t, 16)); + return; + } + Jo(this, e - se((On(), U2)), $n((i = u(Un(this, 16), 29), i || U2), e), t); + }, o.ii = function() { + return On(), U2; + }, o.ki = function(e) { + var t, i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + D(this.Cb, 90) && hw(Zu(u(this.Cb, 90)), 4), Xc(this, null); + return; + case 2: + c1(this, !0); + return; + case 3: + u1(this, !0); + return; + case 4: + e1(this, 0); + return; + case 5: + Zb(this, 1); + return; + case 8: + ad(this, null); + return; + case 9: + i = Bf(this, null, null), i && i.oj(); + return; + case 10: + fm(this, !0); + return; + case 11: + am(this, !1); + return; + case 12: + hm(this, !1); + return; + case 13: + this.i = null, kT(this, null); + return; + case 15: + lm(this, !1); + return; + case 16: + dm(this, !1); + return; + case 18: + NY(this, !1), D(this.Cb, 90) && hw(Zu(u(this.Cb, 90)), 2); + return; + case 20: + $Y(this, !0); + return; + case 21: + LQ(this, null); + return; + case 23: + !this.a && (this.a = new Eg(ng, this, 23)), me(this.a); + return; + } + Wo(this, e - se((On(), U2)), $n((t = u(Un(this, 16), 29), t || U2), e)); + }, o.pi = function() { + iY(this), P4(Lr((Lu(), zi), this)), gs(this), this.Bb |= 1; + }, o.uk = function() { + return wr(this); + }, o._k = function() { + var e; + return e = wr(this), !!e && (e.Bb & yc) != 0; + }, o.al = function() { + return (this.Bb & yc) != 0; + }, o.bl = function() { + return (this.Bb & hr) != 0; + }, o.Yk = function(e, t) { + return this.c = null, CY(this, e, t); + }, o.Ib = function() { + var e; + return this.Db & 64 ? $A(this) : (e = new ls($A(this)), e.a += " (containment: ", ql(e, (this.Bb & yc) != 0), e.a += ", resolveProxies: ", ql(e, (this.Bb & hr) != 0), e.a += ")", e.a); + }, w(qn, "EReferenceImpl", 102), b(561, 120, { 110: 1, 44: 1, 94: 1, 93: 1, 136: 1, 58: 1, 114: 1, 54: 1, 99: 1, 561: 1, 119: 1, 120: 1 }, Tvn), o.Fb = function(e) { + return this === e; + }, o.ld = function() { + return this.b; + }, o.md = function() { + return this.c; + }, o.Hb = function() { + return l0(this); + }, o.Di = function(e) { + Lbe(this, Oe(e)); + }, o.nd = function(e) { + return mbe(this, Oe(e)); + }, o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return this.b; + case 1: + return this.c; + } + return zo(this, e - se((On(), ar)), $n((r = u(Un(this, 16), 29), r || ar), e), t, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return this.b != null; + case 1: + return this.c != null; + } + return Uo(this, e - se((On(), ar)), $n((t = u(Un(this, 16), 29), t || ar), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + Nbe(this, Oe(t)); + return; + case 1: + IQ(this, Oe(t)); + return; + } + Jo(this, e - se((On(), ar)), $n((i = u(Un(this, 16), 29), i || ar), e), t); + }, o.ii = function() { + return On(), ar; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + PQ(this, null); + return; + case 1: + IQ(this, null); + return; + } + Wo(this, e - se((On(), ar)), $n((t = u(Un(this, 16), 29), t || ar), e)); + }, o.Bi = function() { + var e; + return this.a == -1 && (e = this.b, this.a = e == null ? 0 : t1(e)), this.a; + }, o.Ci = function(e) { + this.a = e; + }, o.Ib = function() { + var e; + return this.Db & 64 ? Hs(this) : (e = new ls(Hs(this)), e.a += " (key: ", Cr(e, this.b), e.a += ", value: ", Cr(e, this.c), e.a += ")", e.a); + }, o.a = -1, o.b = null, o.c = null; + var pc = w(qn, "EStringToStringMapEntryImpl", 561), Yoe = xt(Tt, "FeatureMap/Entry/Internal"); + b(576, 1, VS), o.xl = function(e) { + return this.yl(u(e, 54)); + }, o.yl = function(e) { + return this.xl(e); + }, o.Fb = function(e) { + var t, i; + return this === e ? !0 : D(e, 76) ? (t = u(e, 76), t.Lk() == this.c ? (i = this.md(), i == null ? t.md() == null : ct(i, t.md())) : !1) : !1; + }, o.Lk = function() { + return this.c; + }, o.Hb = function() { + var e; + return e = this.md(), mt(this.c) ^ (e == null ? 0 : mt(e)); + }, o.Ib = function() { + var e, t; + return e = this.c, t = jo(e.qk()).yi(), e.xe(), (t != null && t.length != 0 ? t + ":" + e.xe() : e.xe()) + "=" + this.md(); + }, w(qn, "EStructuralFeatureImpl/BasicFeatureMapEntry", 576), b(791, 576, VS, wV), o.yl = function(e) { + return new wV(this.c, e); + }, o.md = function() { + return this.a; + }, o.zl = function(e, t, i) { + return pve(this, e, this.a, t, i); + }, o.Al = function(e, t, i) { + return mve(this, e, this.a, t, i); + }, w(qn, "EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry", 791), b(1350, 1, {}, $Mn), o.yk = function(e, t, i, r, c) { + var s; + return s = u(x4(e, this.b), 220), s.Yl(this.a).Fk(r); + }, o.zk = function(e, t, i, r, c) { + var s; + return s = u(x4(e, this.b), 220), s.Pl(this.a, r, c); + }, o.Ak = function(e, t, i, r, c) { + var s; + return s = u(x4(e, this.b), 220), s.Ql(this.a, r, c); + }, o.Bk = function(e, t, i) { + var r; + return r = u(x4(e, this.b), 220), r.Yl(this.a).Qj(); + }, o.Ck = function(e, t, i, r) { + var c; + c = u(x4(e, this.b), 220), c.Yl(this.a).Wb(r); + }, o.Dk = function(e, t, i) { + return u(x4(e, this.b), 220).Yl(this.a); + }, o.Ek = function(e, t, i) { + var r; + r = u(x4(e, this.b), 220), r.Yl(this.a).Gk(); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator", 1350), b(91, 1, {}, Xl, Za, Wl, rd), o.yk = function(e, t, i, r, c) { + var s; + if (s = t.li(i), s == null && t.mi(i, s = XA(this, e)), !c) + switch (this.e) { + case 50: + case 41: + return u(s, 597).bk(); + case 40: + return u(s, 220).Vl(); + } + return s; + }, o.zk = function(e, t, i, r, c) { + var s, f; + return f = t.li(i), f == null && t.mi(i, f = XA(this, e)), s = u(f, 71).Wk(r, c), s; + }, o.Ak = function(e, t, i, r, c) { + var s; + return s = t.li(i), s != null && (c = u(s, 71).Xk(r, c)), c; + }, o.Bk = function(e, t, i) { + var r; + return r = t.li(i), r != null && u(r, 79).Qj(); + }, o.Ck = function(e, t, i, r) { + var c; + c = u(t.li(i), 79), !c && t.mi(i, c = XA(this, e)), c.Wb(r); + }, o.Dk = function(e, t, i) { + var r, c; + return c = t.li(i), c == null && t.mi(i, c = XA(this, e)), D(c, 79) ? u(c, 79) : (r = u(t.li(i), 15), new Cyn(r)); + }, o.Ek = function(e, t, i) { + var r; + r = u(t.li(i), 79), !r && t.mi(i, r = XA(this, e)), r.Gk(); + }, o.b = 0, o.e = 0, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateMany", 91), b(512, 1, {}), o.zk = function(e, t, i, r, c) { + throw M(new Pe()); + }, o.Ak = function(e, t, i, r, c) { + throw M(new Pe()); + }, o.Dk = function(e, t, i) { + return new LIn(this, e, t, i); + }; + var rl; + w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingle", 512), b(1367, 1, TK, LIn), o.Fk = function(e) { + return this.a.yk(this.c, this.d, this.b, e, !0); + }, o.Qj = function() { + return this.a.Bk(this.c, this.d, this.b); + }, o.Wb = function(e) { + this.a.Ck(this.c, this.d, this.b, e); + }, o.Gk = function() { + this.a.Ek(this.c, this.d, this.b); + }, o.b = 0, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingle/1", 1367), b(784, 512, {}, iJ), o.yk = function(e, t, i, r, c) { + return AF(e, e.Ph(), e.Fh()) == this.b ? this.bl() && r ? dF(e) : e.Ph() : null; + }, o.zk = function(e, t, i, r, c) { + var s, f; + return e.Ph() && (c = (s = e.Fh(), s >= 0 ? e.Ah(c) : e.Ph().Th(e, -1 - s, null, c))), f = Ot(e.Dh(), this.e), e.Ch(r, f, c); + }, o.Ak = function(e, t, i, r, c) { + var s; + return s = Ot(e.Dh(), this.e), e.Ch(null, s, c); + }, o.Bk = function(e, t, i) { + var r; + return r = Ot(e.Dh(), this.e), !!e.Ph() && e.Fh() == r; + }, o.Ck = function(e, t, i, r) { + var c, s, f, h, l; + if (r != null && !OF(this.a, r)) + throw M(new i4(WS + (D(r, 58) ? UZ(u(r, 58).Dh()) : hQ(wo(r))) + JS + this.a + "'")); + if (c = e.Ph(), f = Ot(e.Dh(), this.e), x(r) !== x(c) || e.Fh() != f && r != null) { + if (mm(e, u(r, 58))) + throw M(new Gn(w8 + e.Ib())); + l = null, c && (l = (s = e.Fh(), s >= 0 ? e.Ah(l) : e.Ph().Th(e, -1 - s, null, l))), h = u(r, 54), h && (l = h.Rh(e, Ot(h.Dh(), this.b), null, l)), l = e.Ch(h, f, l), l && l.oj(); + } else + e.vh() && e.wh() && rt(e, new Ci(e, 1, f, r, r)); + }, o.Ek = function(e, t, i) { + var r, c, s, f; + r = e.Ph(), r ? (f = (c = e.Fh(), c >= 0 ? e.Ah(null) : e.Ph().Th(e, -1 - c, null, null)), s = Ot(e.Dh(), this.e), f = e.Ch(null, s, f), f && f.oj()) : e.vh() && e.wh() && rt(e, new H6(e, 1, this.e, null, null)); + }, o.bl = function() { + return !1; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleContainer", 784), b(1351, 784, {}, ESn), o.bl = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving", 1351), b(574, 512, {}), o.yk = function(e, t, i, r, c) { + var s; + return s = t.li(i), s == null ? this.b : x(s) === x(rl) ? null : s; + }, o.Bk = function(e, t, i) { + var r; + return r = t.li(i), r != null && (x(r) === x(rl) || !ct(r, this.b)); + }, o.Ck = function(e, t, i, r) { + var c, s; + e.vh() && e.wh() ? (c = (s = t.li(i), s == null ? this.b : x(s) === x(rl) ? null : s), r == null ? this.c != null ? (t.mi(i, null), r = this.b) : this.b != null ? t.mi(i, rl) : t.mi(i, null) : (this.Bl(r), t.mi(i, r)), rt(e, this.d.Cl(e, 1, this.e, c, r))) : r == null ? this.c != null ? t.mi(i, null) : this.b != null ? t.mi(i, rl) : t.mi(i, null) : (this.Bl(r), t.mi(i, r)); + }, o.Ek = function(e, t, i) { + var r, c; + e.vh() && e.wh() ? (r = (c = t.li(i), c == null ? this.b : x(c) === x(rl) ? null : c), t.ni(i), rt(e, this.d.Cl(e, 1, this.e, r, this.b))) : t.ni(i); + }, o.Bl = function(e) { + throw M(new $yn()); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData", 574), b(h2, 1, {}, Avn), o.Cl = function(e, t, i, r, c) { + return new H6(e, t, i, r, c); + }, o.Dl = function(e, t, i, r, c, s) { + return new MN(e, t, i, r, c, s); + }; + var Xdn, Vdn, Wdn, Jdn, Qdn, Ydn, Zdn, TU, n0n; + w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator", h2), b(1368, h2, {}, Svn), o.Cl = function(e, t, i, r, c) { + return new NJ(e, t, i, on(un(r)), on(un(c))); + }, o.Dl = function(e, t, i, r, c, s) { + return new rDn(e, t, i, on(un(r)), on(un(c)), s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1", 1368), b(1369, h2, {}, Pvn), o.Cl = function(e, t, i, r, c) { + return new bQ(e, t, i, u(r, 222).a, u(c, 222).a); + }, o.Dl = function(e, t, i, r, c, s) { + return new QOn(e, t, i, u(r, 222).a, u(c, 222).a, s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2", 1369), b(1370, h2, {}, Ivn), o.Cl = function(e, t, i, r, c) { + return new wQ(e, t, i, u(r, 180).a, u(c, 180).a); + }, o.Dl = function(e, t, i, r, c, s) { + return new YOn(e, t, i, u(r, 180).a, u(c, 180).a, s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3", 1370), b(1371, h2, {}, Ovn), o.Cl = function(e, t, i, r, c) { + return new DJ(e, t, i, $(R(r)), $(R(c))); + }, o.Dl = function(e, t, i, r, c, s) { + return new ZOn(e, t, i, $(R(r)), $(R(c)), s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4", 1371), b(1372, h2, {}, Dvn), o.Cl = function(e, t, i, r, c) { + return new mQ(e, t, i, u(r, 161).a, u(c, 161).a); + }, o.Dl = function(e, t, i, r, c, s) { + return new nDn(e, t, i, u(r, 161).a, u(c, 161).a, s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5", 1372), b(1373, h2, {}, Lvn), o.Cl = function(e, t, i, r, c) { + return new LJ(e, t, i, u(r, 17).a, u(c, 17).a); + }, o.Dl = function(e, t, i, r, c, s) { + return new eDn(e, t, i, u(r, 17).a, u(c, 17).a, s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6", 1373), b(1374, h2, {}, Nvn), o.Cl = function(e, t, i, r, c) { + return new gQ(e, t, i, u(r, 168).a, u(c, 168).a); + }, o.Dl = function(e, t, i, r, c, s) { + return new tDn(e, t, i, u(r, 168).a, u(c, 168).a, s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7", 1374), b(1375, h2, {}, $vn), o.Cl = function(e, t, i, r, c) { + return new pQ(e, t, i, u(r, 191).a, u(c, 191).a); + }, o.Dl = function(e, t, i, r, c, s) { + return new iDn(e, t, i, u(r, 191).a, u(c, 191).a, s); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8", 1375), b(1353, 574, {}, NIn), o.Bl = function(e) { + if (!this.a.fk(e)) + throw M(new i4(WS + wo(e) + JS + this.a + "'")); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic", 1353), b(1354, 574, {}, yPn), o.Bl = function(e) { + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic", 1354), b(785, 574, {}), o.Bk = function(e, t, i) { + var r; + return r = t.li(i), r != null; + }, o.Ck = function(e, t, i, r) { + var c, s; + e.vh() && e.wh() ? (c = !0, s = t.li(i), s == null ? (c = !1, s = this.b) : x(s) === x(rl) && (s = null), r == null ? this.c != null ? (t.mi(i, null), r = this.b) : t.mi(i, rl) : (this.Bl(r), t.mi(i, r)), rt(e, this.d.Dl(e, 1, this.e, s, r, !c))) : r == null ? this.c != null ? t.mi(i, null) : t.mi(i, rl) : (this.Bl(r), t.mi(i, r)); + }, o.Ek = function(e, t, i) { + var r, c; + e.vh() && e.wh() ? (r = !0, c = t.li(i), c == null ? (r = !1, c = this.b) : x(c) === x(rl) && (c = null), t.ni(i), rt(e, this.d.Dl(e, 2, this.e, c, this.b, r))) : t.ni(i); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable", 785), b(1355, 785, {}, $In), o.Bl = function(e) { + if (!this.a.fk(e)) + throw M(new i4(WS + wo(e) + JS + this.a + "'")); + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic", 1355), b(1356, 785, {}, jPn), o.Bl = function(e) { + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic", 1356), b(410, 512, {}, oM), o.yk = function(e, t, i, r, c) { + var s, f, h, l, a; + if (a = t.li(i), this.tk() && x(a) === x(rl)) + return null; + if (this.bl() && r && a != null) { + if (h = u(a, 54), h.Vh() && (l = ea(e, h), h != l)) { + if (!OF(this.a, l)) + throw M(new i4(WS + wo(l) + JS + this.a + "'")); + t.mi(i, a = l), this.al() && (s = u(l, 54), f = h.Th(e, this.b ? Ot(h.Dh(), this.b) : -1 - Ot(e.Dh(), this.e), null, null), !s.Ph() && (f = s.Rh(e, this.b ? Ot(s.Dh(), this.b) : -1 - Ot(e.Dh(), this.e), null, f)), f && f.oj()), e.vh() && e.wh() && rt(e, new H6(e, 9, this.e, h, l)); + } + return a; + } else + return a; + }, o.zk = function(e, t, i, r, c) { + var s, f; + return f = t.li(i), x(f) === x(rl) && (f = null), t.mi(i, r), this.Mj() ? x(f) !== x(r) && f != null && (s = u(f, 54), c = s.Th(e, Ot(s.Dh(), this.b), null, c)) : this.al() && f != null && (c = u(f, 54).Th(e, -1 - Ot(e.Dh(), this.e), null, c)), e.vh() && e.wh() && (!c && (c = new F1(4)), c.nj(new H6(e, 1, this.e, f, r))), c; + }, o.Ak = function(e, t, i, r, c) { + var s; + return s = t.li(i), x(s) === x(rl) && (s = null), t.ni(i), e.vh() && e.wh() && (!c && (c = new F1(4)), this.tk() ? c.nj(new H6(e, 2, this.e, s, null)) : c.nj(new H6(e, 1, this.e, s, null))), c; + }, o.Bk = function(e, t, i) { + var r; + return r = t.li(i), r != null; + }, o.Ck = function(e, t, i, r) { + var c, s, f, h, l; + if (r != null && !OF(this.a, r)) + throw M(new i4(WS + (D(r, 58) ? UZ(u(r, 58).Dh()) : hQ(wo(r))) + JS + this.a + "'")); + l = t.li(i), h = l != null, this.tk() && x(l) === x(rl) && (l = null), f = null, this.Mj() ? x(l) !== x(r) && (l != null && (c = u(l, 54), f = c.Th(e, Ot(c.Dh(), this.b), null, f)), r != null && (c = u(r, 54), f = c.Rh(e, Ot(c.Dh(), this.b), null, f))) : this.al() && x(l) !== x(r) && (l != null && (f = u(l, 54).Th(e, -1 - Ot(e.Dh(), this.e), null, f)), r != null && (f = u(r, 54).Rh(e, -1 - Ot(e.Dh(), this.e), null, f))), r == null && this.tk() ? t.mi(i, rl) : t.mi(i, r), e.vh() && e.wh() ? (s = new MN(e, 1, this.e, l, r, this.tk() && !h), f ? (f.nj(s), f.oj()) : rt(e, s)) : f && f.oj(); + }, o.Ek = function(e, t, i) { + var r, c, s, f, h; + h = t.li(i), f = h != null, this.tk() && x(h) === x(rl) && (h = null), s = null, h != null && (this.Mj() ? (r = u(h, 54), s = r.Th(e, Ot(r.Dh(), this.b), null, s)) : this.al() && (s = u(h, 54).Th(e, -1 - Ot(e.Dh(), this.e), null, s))), t.ni(i), e.vh() && e.wh() ? (c = new MN(e, this.tk() ? 2 : 1, this.e, h, null, f), s ? (s.nj(c), s.oj()) : rt(e, c)) : s && s.oj(); + }, o.Mj = function() { + return !1; + }, o.al = function() { + return !1; + }, o.bl = function() { + return !1; + }, o.tk = function() { + return !1; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObject", 410), b(575, 410, {}, PL), o.al = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment", 575), b(1359, 575, {}, kAn), o.bl = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving", 1359), b(787, 575, {}, tV), o.tk = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable", 787), b(1361, 787, {}, yAn), o.bl = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving", 1361), b(650, 575, {}, HL), o.Mj = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse", 650), b(1360, 650, {}, CSn), o.bl = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving", 1360), b(788, 650, {}, HV), o.tk = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable", 788), b(1362, 788, {}, MSn), o.bl = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving", 1362), b(651, 410, {}, iV), o.bl = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving", 651), b(1363, 651, {}, jAn), o.tk = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable", 1363), b(789, 651, {}, KV), o.Mj = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse", 789), b(1364, 789, {}, TSn), o.tk = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable", 1364), b(1357, 410, {}, EAn), o.tk = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable", 1357), b(786, 410, {}, _V), o.Mj = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse", 786), b(1358, 786, {}, ASn), o.tk = function() { + return !0; + }, w(qn, "EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable", 1358), b(790, 576, VS, BW), o.yl = function(e) { + return new BW(this.a, this.c, e); + }, o.md = function() { + return this.b; + }, o.zl = function(e, t, i) { + return w4e(this, e, this.b, i); + }, o.Al = function(e, t, i) { + return g4e(this, e, this.b, i); + }, w(qn, "EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry", 790), b(1365, 1, TK, Cyn), o.Fk = function(e) { + return this.a; + }, o.Qj = function() { + return D(this.a, 97) ? u(this.a, 97).Qj() : !this.a.dc(); + }, o.Wb = function(e) { + this.a.$b(), this.a.Gc(u(e, 15)); + }, o.Gk = function() { + D(this.a, 97) ? u(this.a, 97).Gk() : this.a.$b(); + }, w(qn, "EStructuralFeatureImpl/SettingMany", 1365), b(1366, 576, VS, WDn), o.xl = function(e) { + return new DL((at(), F9), this.b.ri(this.a, e)); + }, o.md = function() { + return null; + }, o.zl = function(e, t, i) { + return i; + }, o.Al = function(e, t, i) { + return i; + }, w(qn, "EStructuralFeatureImpl/SimpleContentFeatureMapEntry", 1366), b(652, 576, VS, DL), o.xl = function(e) { + return new DL(this.c, e); + }, o.md = function() { + return this.a; + }, o.zl = function(e, t, i) { + return i; + }, o.Al = function(e, t, i) { + return i; + }, w(qn, "EStructuralFeatureImpl/SimpleFeatureMapEntry", 652), b(403, 506, Ch, W3), o.aj = function(e) { + return K(As, Bn, 29, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(qn, "ESuperAdapter/1", 403), b(457, 448, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 114: 1, 850: 1, 54: 1, 99: 1, 158: 1, 457: 1, 119: 1, 120: 1 }, UO), o.Lh = function(e, t, i) { + var r; + switch (e) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), this.Ab; + case 1: + return this.zb; + case 2: + return !this.a && (this.a = new B6(this, Er, this)), this.a; + } + return zo(this, e - se((On(), Eb)), $n((r = u(Un(this, 16), 29), r || Eb), e), t, i); + }, o.Uh = function(e, t, i) { + var r, c; + switch (t) { + case 0: + return !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), cr(this.Ab, e, i); + case 2: + return !this.a && (this.a = new B6(this, Er, this)), cr(this.a, e, i); + } + return c = u($n((r = u(Un(this, 16), 29), r || (On(), Eb)), t), 69), c.wk().Ak(this, ru(this), t - se((On(), Eb)), e, i); + }, o.Wh = function(e) { + var t; + switch (e) { + case 0: + return !!this.Ab && this.Ab.i != 0; + case 1: + return this.zb != null; + case 2: + return !!this.a && this.a.i != 0; + } + return Uo(this, e - se((On(), Eb)), $n((t = u(Un(this, 16), 29), t || Eb), e)); + }, o.bi = function(e, t) { + var i; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab), !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), Ht(this.Ab, u(t, 16)); + return; + case 1: + Xc(this, Oe(t)); + return; + case 2: + !this.a && (this.a = new B6(this, Er, this)), me(this.a), !this.a && (this.a = new B6(this, Er, this)), Ht(this.a, u(t, 16)); + return; + } + Jo(this, e - se((On(), Eb)), $n((i = u(Un(this, 16), 29), i || Eb), e), t); + }, o.ii = function() { + return On(), Eb; + }, o.ki = function(e) { + var t; + switch (e) { + case 0: + !this.Ab && (this.Ab = new q(Ue, this, 0, 3)), me(this.Ab); + return; + case 1: + Xc(this, null); + return; + case 2: + !this.a && (this.a = new B6(this, Er, this)), me(this.a); + return; + } + Wo(this, e - se((On(), Eb)), $n((t = u(Un(this, 16), 29), t || Eb), e)); + }, w(qn, "ETypeParameterImpl", 457), b(458, 83, Qr, B6), o.Nj = function(e, t) { + return Iye(this, u(e, 89), t); + }, o.Oj = function(e, t) { + return Oye(this, u(e, 89), t); + }, w(qn, "ETypeParameterImpl/1", 458), b(647, 45, n2, aD), o.ec = function() { + return new NE(this); + }, w(qn, "ETypeParameterImpl/2", 647), b(570, Kf, Nu, NE), o.Fc = function(e) { + return WAn(this, u(e, 89)); + }, o.Gc = function(e) { + var t, i, r; + for (r = !1, i = e.Kc(); i.Ob(); ) + t = u(i.Pb(), 89), Ve(this.a, t, "") == null && (r = !0); + return r; + }, o.$b = function() { + Hu(this.a); + }, o.Hc = function(e) { + return nu(this.a, e); + }, o.Kc = function() { + var e; + return e = new sd(new Ua(this.a).a), new $E(e); + }, o.Mc = function(e) { + return RLn(this, e); + }, o.gc = function() { + return c6(this.a); + }, w(qn, "ETypeParameterImpl/2/1", 570), b(571, 1, Pi, $E), o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return u(L0(this.a).ld(), 89); + }, o.Ob = function() { + return this.a.b; + }, o.Qb = function() { + VNn(this.a); + }, w(qn, "ETypeParameterImpl/2/1/1", 571), b(1329, 45, n2, bjn), o._b = function(e) { + return Si(e) ? AN(this, e) : !!gr(this.f, e); + }, o.xc = function(e) { + var t, i; + return t = Si(e) ? $c(this, e) : Kr(gr(this.f, e)), D(t, 851) ? (i = u(t, 851), t = i.Kk(), Ve(this, u(e, 241), t), t) : t != null ? t : e == null ? (OD(), nse) : null; + }, w(qn, "EValidatorRegistryImpl", 1329), b(1349, 720, { 110: 1, 94: 1, 93: 1, 480: 1, 155: 1, 58: 1, 114: 1, 2040: 1, 54: 1, 99: 1, 158: 1, 119: 1, 120: 1 }, xvn), o.ri = function(e, t) { + switch (e.hk()) { + case 21: + case 22: + case 23: + case 24: + case 26: + case 31: + case 32: + case 37: + case 38: + case 39: + case 40: + case 43: + case 44: + case 48: + case 49: + case 20: + return t == null ? null : Jr(t); + case 25: + return Ame(t); + case 27: + return _4e(t); + case 28: + return H4e(t); + case 29: + return t == null ? null : TTn(O9[0], u(t, 206)); + case 41: + return t == null ? "" : Xa(u(t, 297)); + case 42: + return Jr(t); + case 50: + return Oe(t); + default: + throw M(new Gn(ev + e.xe() + nb)); + } + }, o.si = function(e) { + var t, i, r, c, s, f, h, l, a, d, g, p, m, k, j, S; + switch (e.G == -1 && (e.G = (p = jo(e), p ? f1(p.vi(), e) : -1)), e.G) { + case 0: + return i = new fD(), i; + case 1: + return t = new iG(), t; + case 2: + return r = new oG(), r; + case 4: + return c = new xE(), c; + case 5: + return s = new djn(), s; + case 6: + return f = new Byn(), f; + case 7: + return h = new sG(), h; + case 10: + return a = new ME(), a; + case 11: + return d = new hD(), d; + case 12: + return g = new qIn(), g; + case 13: + return m = new lD(), m; + case 14: + return k = new uV(), k; + case 17: + return j = new Tvn(), j; + case 18: + return l = new Jd(), l; + case 19: + return S = new UO(), S; + default: + throw M(new Gn(hK + e.zb + nb)); + } + }, o.ti = function(e, t) { + switch (e.hk()) { + case 20: + return t == null ? null : new Sz(t); + case 21: + return t == null ? null : new H1(t); + case 23: + case 22: + return t == null ? null : K8e(t); + case 26: + case 24: + return t == null ? null : ak(Ao(t, -128, 127) << 24 >> 24); + case 25: + return cMe(t); + case 27: + return A7e(t); + case 28: + return S7e(t); + case 29: + return Qye(t); + case 32: + case 31: + return t == null ? null : sw(t); + case 38: + case 37: + return t == null ? null : new GG(t); + case 40: + case 39: + return t == null ? null : Y(Ao(t, Wi, tt)); + case 41: + return null; + case 42: + return t == null, null; + case 44: + case 43: + return t == null ? null : Ml(zA(t)); + case 49: + case 48: + return t == null ? null : sm(Ao(t, QS, 32767) << 16 >> 16); + case 50: + return t; + default: + throw M(new Gn(ev + e.xe() + nb)); + } + }, w(qn, "EcoreFactoryImpl", 1349), b(560, 184, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 241: 1, 114: 1, 2038: 1, 54: 1, 99: 1, 158: 1, 184: 1, 560: 1, 119: 1, 120: 1, 690: 1 }, dIn), o.gb = !1, o.hb = !1; + var e0n, Zoe = !1; + w(qn, "EcorePackageImpl", 560), b(1234, 1, { 851: 1 }, Fvn), o.Kk = function() { + return RTn(), ese; + }, w(qn, "EcorePackageImpl/1", 1234), b(1243, 1, ze, Bvn), o.fk = function(e) { + return D(e, 155); + }, o.gk = function(e) { + return K(fE, Bn, 155, e, 0, 1); + }, w(qn, "EcorePackageImpl/10", 1243), b(1244, 1, ze, Rvn), o.fk = function(e) { + return D(e, 197); + }, o.gk = function(e) { + return K(pU, Bn, 197, e, 0, 1); + }, w(qn, "EcorePackageImpl/11", 1244), b(1245, 1, ze, Kvn), o.fk = function(e) { + return D(e, 58); + }, o.gk = function(e) { + return K(Oa, Bn, 58, e, 0, 1); + }, w(qn, "EcorePackageImpl/12", 1245), b(1246, 1, ze, _vn), o.fk = function(e) { + return D(e, 411); + }, o.gk = function(e) { + return K(Ss, zcn, 62, e, 0, 1); + }, w(qn, "EcorePackageImpl/13", 1246), b(1247, 1, ze, Hvn), o.fk = function(e) { + return D(e, 241); + }, o.gk = function(e) { + return K(Ef, Bn, 241, e, 0, 1); + }, w(qn, "EcorePackageImpl/14", 1247), b(1248, 1, ze, qvn), o.fk = function(e) { + return D(e, 518); + }, o.gk = function(e) { + return K(yb, Bn, 2116, e, 0, 1); + }, w(qn, "EcorePackageImpl/15", 1248), b(1249, 1, ze, Uvn), o.fk = function(e) { + return D(e, 102); + }, o.gk = function(e) { + return K(eg, f2, 19, e, 0, 1); + }, w(qn, "EcorePackageImpl/16", 1249), b(1250, 1, ze, Gvn), o.fk = function(e) { + return D(e, 179); + }, o.gk = function(e) { + return K(yu, f2, 179, e, 0, 1); + }, w(qn, "EcorePackageImpl/17", 1250), b(1251, 1, ze, zvn), o.fk = function(e) { + return D(e, 481); + }, o.gk = function(e) { + return K(Zw, Bn, 481, e, 0, 1); + }, w(qn, "EcorePackageImpl/18", 1251), b(1252, 1, ze, Xvn), o.fk = function(e) { + return D(e, 561); + }, o.gk = function(e) { + return K(pc, eJn, 561, e, 0, 1); + }, w(qn, "EcorePackageImpl/19", 1252), b(1235, 1, ze, Vvn), o.fk = function(e) { + return D(e, 331); + }, o.gk = function(e) { + return K(ng, f2, 35, e, 0, 1); + }, w(qn, "EcorePackageImpl/2", 1235), b(1253, 1, ze, Wvn), o.fk = function(e) { + return D(e, 248); + }, o.gk = function(e) { + return K(Er, mJn, 89, e, 0, 1); + }, w(qn, "EcorePackageImpl/20", 1253), b(1254, 1, ze, Jvn), o.fk = function(e) { + return D(e, 457); + }, o.gk = function(e) { + return K(hu, Bn, 850, e, 0, 1); + }, w(qn, "EcorePackageImpl/21", 1254), b(1255, 1, ze, Qvn), o.fk = function(e) { + return Nb(e); + }, o.gk = function(e) { + return K(Xt, J, 485, e, 8, 1); + }, w(qn, "EcorePackageImpl/22", 1255), b(1256, 1, ze, Yvn), o.fk = function(e) { + return D(e, 195); + }, o.gk = function(e) { + return K(Bu, J, 195, e, 0, 2); + }, w(qn, "EcorePackageImpl/23", 1256), b(1257, 1, ze, Zvn), o.fk = function(e) { + return D(e, 222); + }, o.gk = function(e) { + return K(p3, J, 222, e, 0, 1); + }, w(qn, "EcorePackageImpl/24", 1257), b(1258, 1, ze, n6n), o.fk = function(e) { + return D(e, 180); + }, o.gk = function(e) { + return K(A8, J, 180, e, 0, 1); + }, w(qn, "EcorePackageImpl/25", 1258), b(1259, 1, ze, e6n), o.fk = function(e) { + return D(e, 206); + }, o.gk = function(e) { + return K(oP, J, 206, e, 0, 1); + }, w(qn, "EcorePackageImpl/26", 1259), b(1260, 1, ze, t6n), o.fk = function(e) { + return !1; + }, o.gk = function(e) { + return K(v0n, Bn, 2215, e, 0, 1); + }, w(qn, "EcorePackageImpl/27", 1260), b(1261, 1, ze, i6n), o.fk = function(e) { + return $b(e); + }, o.gk = function(e) { + return K(si, J, 345, e, 7, 1); + }, w(qn, "EcorePackageImpl/28", 1261), b(1262, 1, ze, r6n), o.fk = function(e) { + return D(e, 61); + }, o.gk = function(e) { + return K(Ndn, kw, 61, e, 0, 1); + }, w(qn, "EcorePackageImpl/29", 1262), b(1236, 1, ze, c6n), o.fk = function(e) { + return D(e, 519); + }, o.gk = function(e) { + return K(Ue, { 3: 1, 4: 1, 5: 1, 2033: 1 }, 598, e, 0, 1); + }, w(qn, "EcorePackageImpl/3", 1236), b(1263, 1, ze, u6n), o.fk = function(e) { + return D(e, 582); + }, o.gk = function(e) { + return K(Fdn, Bn, 2039, e, 0, 1); + }, w(qn, "EcorePackageImpl/30", 1263), b(1264, 1, ze, o6n), o.fk = function(e) { + return D(e, 160); + }, o.gk = function(e) { + return K(u0n, kw, 160, e, 0, 1); + }, w(qn, "EcorePackageImpl/31", 1264), b(1265, 1, ze, s6n), o.fk = function(e) { + return D(e, 76); + }, o.gk = function(e) { + return K(CO, AJn, 76, e, 0, 1); + }, w(qn, "EcorePackageImpl/32", 1265), b(1266, 1, ze, f6n), o.fk = function(e) { + return D(e, 161); + }, o.gk = function(e) { + return K(sv, J, 161, e, 0, 1); + }, w(qn, "EcorePackageImpl/33", 1266), b(1267, 1, ze, h6n), o.fk = function(e) { + return D(e, 17); + }, o.gk = function(e) { + return K(Gi, J, 17, e, 0, 1); + }, w(qn, "EcorePackageImpl/34", 1267), b(1268, 1, ze, l6n), o.fk = function(e) { + return D(e, 297); + }, o.gk = function(e) { + return K(cun, Bn, 297, e, 0, 1); + }, w(qn, "EcorePackageImpl/35", 1268), b(1269, 1, ze, a6n), o.fk = function(e) { + return D(e, 168); + }, o.gk = function(e) { + return K(tb, J, 168, e, 0, 1); + }, w(qn, "EcorePackageImpl/36", 1269), b(1270, 1, ze, d6n), o.fk = function(e) { + return D(e, 85); + }, o.gk = function(e) { + return K(uun, Bn, 85, e, 0, 1); + }, w(qn, "EcorePackageImpl/37", 1270), b(1271, 1, ze, b6n), o.fk = function(e) { + return D(e, 599); + }, o.gk = function(e) { + return K(t0n, Bn, 599, e, 0, 1); + }, w(qn, "EcorePackageImpl/38", 1271), b(1272, 1, ze, w6n), o.fk = function(e) { + return !1; + }, o.gk = function(e) { + return K(k0n, Bn, 2216, e, 0, 1); + }, w(qn, "EcorePackageImpl/39", 1272), b(1237, 1, ze, g6n), o.fk = function(e) { + return D(e, 90); + }, o.gk = function(e) { + return K(As, Bn, 29, e, 0, 1); + }, w(qn, "EcorePackageImpl/4", 1237), b(1273, 1, ze, p6n), o.fk = function(e) { + return D(e, 191); + }, o.gk = function(e) { + return K(ib, J, 191, e, 0, 1); + }, w(qn, "EcorePackageImpl/40", 1273), b(1274, 1, ze, m6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(qn, "EcorePackageImpl/41", 1274), b(1275, 1, ze, v6n), o.fk = function(e) { + return D(e, 596); + }, o.gk = function(e) { + return K(xdn, Bn, 596, e, 0, 1); + }, w(qn, "EcorePackageImpl/42", 1275), b(1276, 1, ze, k6n), o.fk = function(e) { + return !1; + }, o.gk = function(e) { + return K(y0n, J, 2217, e, 0, 1); + }, w(qn, "EcorePackageImpl/43", 1276), b(1277, 1, ze, y6n), o.fk = function(e) { + return D(e, 44); + }, o.gk = function(e) { + return K(Pd, WA, 44, e, 0, 1); + }, w(qn, "EcorePackageImpl/44", 1277), b(1238, 1, ze, j6n), o.fk = function(e) { + return D(e, 142); + }, o.gk = function(e) { + return K(Cf, Bn, 142, e, 0, 1); + }, w(qn, "EcorePackageImpl/5", 1238), b(1239, 1, ze, E6n), o.fk = function(e) { + return D(e, 156); + }, o.gk = function(e) { + return K(EU, Bn, 156, e, 0, 1); + }, w(qn, "EcorePackageImpl/6", 1239), b(1240, 1, ze, C6n), o.fk = function(e) { + return D(e, 469); + }, o.gk = function(e) { + return K(EO, Bn, 685, e, 0, 1); + }, w(qn, "EcorePackageImpl/7", 1240), b(1241, 1, ze, M6n), o.fk = function(e) { + return D(e, 582); + }, o.gk = function(e) { + return K(Bl, Bn, 694, e, 0, 1); + }, w(qn, "EcorePackageImpl/8", 1241), b(1242, 1, ze, T6n), o.fk = function(e) { + return D(e, 480); + }, o.gk = function(e) { + return K(I9, Bn, 480, e, 0, 1); + }, w(qn, "EcorePackageImpl/9", 1242), b(1038, 2080, nJn, $jn), o.Mi = function(e, t) { + w5e(this, u(t, 424)); + }, o.Qi = function(e, t) { + P_n(this, e, u(t, 424)); + }, w(qn, "MinimalEObjectImpl/1ArrayDelegatingAdapterList", 1038), b(1039, 152, Wy, iIn), o.jj = function() { + return this.a.a; + }, w(qn, "MinimalEObjectImpl/1ArrayDelegatingAdapterList/1", 1039), b(1067, 1066, {}, pTn), w("org.eclipse.emf.ecore.plugin", "EcorePlugin", 1067); + var t0n = xt(SJn, "Resource"); + b(799, 1524, PJn), o.Hl = function(e) { + }, o.Il = function(e) { + }, o.El = function() { + return !this.a && (this.a = new iD(this)), this.a; + }, o.Fl = function(e) { + var t, i, r, c, s; + if (r = e.length, r > 0) + if (zn(0, e.length), e.charCodeAt(0) == 47) { + for (s = new zc(4), c = 1, t = 1; t < r; ++t) + zn(t, e.length), e.charCodeAt(t) == 47 && (nn(s, c == t ? "" : (Fi(c, t, e.length), e.substr(c, t - c))), c = t + 1); + return nn(s, (zn(c, e.length + 1), e.substr(c))), mke(this, s); + } else + zn(r - 1, e.length), e.charCodeAt(r - 1) == 63 && (i = SV(e, gu(63), r - 2), i > 0 && (e = (Fi(0, i, e.length), e.substr(0, i)))); + return UEe(this, e); + }, o.Gl = function() { + return this.c; + }, o.Ib = function() { + var e; + return Xa(this.Rm) + "@" + (e = mt(this) >>> 0, e.toString(16)) + " uri='" + this.d + "'"; + }, o.b = !1, w(AK, "ResourceImpl", 799), b(1525, 799, PJn, Myn), w(AK, "BinaryResourceImpl", 1525), b(1190, 708, yK), o.bj = function(e) { + return D(e, 58) ? $ge(this, u(e, 58)) : D(e, 599) ? new ne(u(e, 599).El()) : x(e) === x(this.f) ? u(e, 16).Kc() : (m4(), aE.a); + }, o.Ob = function() { + return Bnn(this); + }, o.a = !1, w(Tt, "EcoreUtil/ContentTreeIterator", 1190), b(1526, 1190, yK, LPn), o.bj = function(e) { + return x(e) === x(this.f) ? u(e, 15).Kc() : new IDn(u(e, 58)); + }, w(AK, "ResourceImpl/5", 1526), b(658, 2092, pJn, iD), o.Hc = function(e) { + return this.i <= 4 ? km(this, e) : D(e, 54) && u(e, 54).Jh() == this.a; + }, o.Mi = function(e, t) { + e == this.i - 1 && (this.a.b || (this.a.b = !0)); + }, o.Oi = function(e, t) { + e == 0 ? this.a.b || (this.a.b = !0) : t$(this, e, t); + }, o.Qi = function(e, t) { + }, o.Ri = function(e, t, i) { + }, o.Lj = function() { + return 2; + }, o.jj = function() { + return this.a; + }, o.Mj = function() { + return !0; + }, o.Nj = function(e, t) { + var i; + return i = u(e, 54), t = i.fi(this.a, t), t; + }, o.Oj = function(e, t) { + var i; + return i = u(e, 54), i.fi(null, t); + }, o.Pj = function() { + return !1; + }, o.Si = function() { + return !0; + }, o.aj = function(e) { + return K(Oa, Bn, 58, e, 0, 1); + }, o.Yi = function() { + return !1; + }, w(AK, "ResourceImpl/ContentsEList", 658), b(970, 2062, Rm, Tyn), o.fd = function(e) { + return this.a.Ki(e); + }, o.gc = function() { + return this.a.gc(); + }, w(Tt, "AbstractSequentialInternalEList/1", 970); + var i0n, r0n, zi, c0n; + b(634, 1, {}, $Sn); + var MO, TO; + w(Tt, "BasicExtendedMetaData", 634), b(1181, 1, {}, FMn), o.Jl = function() { + return null; + }, o.Kl = function() { + return this.a == -2 && bfe(this, Uye(this.d, this.b)), this.a; + }, o.Ll = function() { + return null; + }, o.Ml = function() { + return Dn(), Dn(), sr; + }, o.xe = function() { + return this.c == rv && wfe(this, ZBn(this.d, this.b)), this.c; + }, o.Nl = function() { + return 0; + }, o.a = -2, o.c = rv, w(Tt, "BasicExtendedMetaData/EClassExtendedMetaDataImpl", 1181), b(1182, 1, {}, uDn), o.Jl = function() { + return this.a == ($4(), MO) && mfe(this, qAe(this.f, this.b)), this.a; + }, o.Kl = function() { + return 0; + }, o.Ll = function() { + return this.c == ($4(), MO) && gfe(this, UAe(this.f, this.b)), this.c; + }, o.Ml = function() { + return !this.d && kfe(this, SPe(this.f, this.b)), this.d; + }, o.xe = function() { + return this.e == rv && jfe(this, ZBn(this.f, this.b)), this.e; + }, o.Nl = function() { + return this.g == -2 && Cfe(this, fye(this.f, this.b)), this.g; + }, o.e = rv, o.g = -2, w(Tt, "BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl", 1182), b(1180, 1, {}, BMn), o.b = !1, o.c = !1, w(Tt, "BasicExtendedMetaData/EPackageExtendedMetaDataImpl", 1180), b(1183, 1, {}, oDn), o.c = -2, o.e = rv, o.f = rv, w(Tt, "BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl", 1183), b(593, 632, Qr, QC), o.Lj = function() { + return this.c; + }, o.ol = function() { + return !1; + }, o.Wi = function(e, t) { + return t; + }, o.c = 0, w(Tt, "EDataTypeEList", 593); + var u0n = xt(Tt, "FeatureMap"); + b(78, 593, { 3: 1, 4: 1, 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 59: 1, 70: 1, 66: 1, 61: 1, 79: 1, 160: 1, 220: 1, 2036: 1, 71: 1, 97: 1 }, qt), o.bd = function(e, t) { + sTe(this, e, u(t, 76)); + }, o.Fc = function(e) { + return TMe(this, u(e, 76)); + }, o.Hi = function(e) { + Dwe(this, u(e, 76)); + }, o.Nj = function(e, t) { + return Zae(this, u(e, 76), t); + }, o.Oj = function(e, t) { + return IV(this, u(e, 76), t); + }, o.Ti = function(e, t) { + return NSe(this, e, t); + }, o.Wi = function(e, t) { + return kOe(this, e, u(t, 76)); + }, o.hd = function(e, t) { + return WTe(this, e, u(t, 76)); + }, o.Uj = function(e, t) { + return nde(this, u(e, 76), t); + }, o.Vj = function(e, t) { + return hSn(this, u(e, 76), t); + }, o.Wj = function(e, t, i) { + return Jke(this, u(e, 76), u(t, 76), i); + }, o.Zi = function(e, t) { + return Jx(this, e, u(t, 76)); + }, o.Ol = function(e, t) { + return Pen(this, e, t); + }, o.cd = function(e, t) { + var i, r, c, s, f, h, l, a, d; + for (a = new S0(t.gc()), c = t.Kc(); c.Ob(); ) + if (r = u(c.Pb(), 76), s = r.Lk(), Sl(this.e, s)) + (!s.Si() || !_M(this, s, r.md()) && !km(a, r)) && ve(a, r); + else { + for (d = cu(this.e.Dh(), s), i = u(this.g, 124), f = !0, h = 0; h < this.i; ++h) + if (l = i[h], d.am(l.Lk())) { + u(Rg(this, h, r), 76), f = !1; + break; + } + f && ve(a, r); + } + return QQ(this, e, a); + }, o.Gc = function(e) { + var t, i, r, c, s, f, h, l, a; + for (l = new S0(e.gc()), r = e.Kc(); r.Ob(); ) + if (i = u(r.Pb(), 76), c = i.Lk(), Sl(this.e, c)) + (!c.Si() || !_M(this, c, i.md()) && !km(l, i)) && ve(l, i); + else { + for (a = cu(this.e.Dh(), c), t = u(this.g, 124), s = !0, f = 0; f < this.i; ++f) + if (h = t[f], a.am(h.Lk())) { + u(Rg(this, f, i), 76), s = !1; + break; + } + s && ve(l, i); + } + return Ht(this, l); + }, o.Fi = function(e) { + return this.j = -1, DF(this, this.i, e); + }, o.Pl = function(e, t, i) { + return yen(this, e, t, i); + }, o.Xk = function(e, t) { + return ly(this, e, t); + }, o.Ql = function(e, t, i) { + return Xen(this, e, t, i); + }, o.Rl = function() { + return this; + }, o.Sl = function(e, t) { + return wy(this, e, t); + }, o.Tl = function(e) { + return u(L(this, e), 76).Lk(); + }, o.Ul = function(e) { + return u(L(this, e), 76).md(); + }, o.Vl = function() { + return this.b; + }, o.Mj = function() { + return !0; + }, o.Tj = function() { + return !0; + }, o.Wl = function(e) { + return !Fk(this, e); + }, o.aj = function(e) { + return K(Yoe, AJn, 343, e, 0, 1); + }, o.pl = function(e) { + return IL(this, e); + }, o.Wb = function(e) { + K7(this, e); + }, o.Xl = function(e, t) { + HA(this, e, t); + }, o.Yl = function(e) { + return sxn(this, e); + }, o.Zl = function(e) { + KRn(this, e); + }, w(Tt, "BasicFeatureMap", 78), b(1960, 1, Hh), o.Nb = function(e) { + _i(this, e); + }, o.Rb = function(e) { + if (this.g == -1) + throw M(new Mu()); + aM(this); + try { + vqn(this.e, this.b, this.a, e), this.d = this.e.j, iA(this); + } catch (t) { + throw t = It(t), D(t, 77) ? M(new Bo()) : M(t); + } + }, o.Ob = function() { + return W$(this); + }, o.Sb = function() { + return NFn(this); + }, o.Pb = function() { + return iA(this); + }, o.Tb = function() { + return this.a; + }, o.Ub = function() { + var e; + if (NFn(this)) + return aM(this), this.g = --this.a, this.ul() && (e = L5(this.e, this.b, this.c, this.a, this.j), this.j = e), this.i = 0, this.j; + throw M(new nc()); + }, o.Vb = function() { + return this.a - 1; + }, o.Qb = function() { + if (this.g == -1) + throw M(new Mu()); + aM(this); + try { + a_n(this.e, this.b, this.g), this.d = this.e.j, this.g < this.a && (--this.a, --this.c), --this.g; + } catch (e) { + throw e = It(e), D(e, 77) ? M(new Bo()) : M(e); + } + }, o.ul = function() { + return !1; + }, o.Wb = function(e) { + if (this.g == -1) + throw M(new Mu()); + aM(this); + try { + qUn(this.e, this.b, this.g, e), this.d = this.e.j; + } catch (t) { + throw t = It(t), D(t, 77) ? M(new Bo()) : M(t); + } + }, o.a = 0, o.c = 0, o.d = 0, o.f = !1, o.g = 0, o.i = 0, w(Tt, "FeatureMapUtil/BasicFeatureEIterator", 1960), b(420, 1960, Hh, Y4), o.$l = function() { + var e, t, i; + for (i = this.e.i, e = u(this.e.g, 124); this.c < i; ) { + if (t = e[this.c], this.k.am(t.Lk())) + return this.j = this.f ? t : t.md(), this.i = 2, !0; + ++this.c; + } + return this.i = 1, this.g = -1, !1; + }, o._l = function() { + var e, t; + for (e = u(this.e.g, 124); --this.c >= 0; ) + if (t = e[this.c], this.k.am(t.Lk())) + return this.j = this.f ? t : t.md(), this.i = -2, !0; + return this.i = -1, this.g = -1, !1; + }, w(Tt, "BasicFeatureMap/FeatureEIterator", 420), b(676, 420, Hh, dL), o.ul = function() { + return !0; + }, w(Tt, "BasicFeatureMap/ResolvingFeatureEIterator", 676), b(968, 496, zS, ATn), o.pj = function() { + return this; + }, w(Tt, "EContentsEList/1", 968), b(969, 496, zS, QMn), o.ul = function() { + return !1; + }, w(Tt, "EContentsEList/2", 969), b(967, 287, XS, STn), o.wl = function(e) { + }, o.Ob = function() { + return !1; + }, o.Sb = function() { + return !1; + }, w(Tt, "EContentsEList/FeatureIteratorImpl/1", 967), b(840, 593, Qr, FX), o.Ni = function() { + this.a = !0; + }, o.Qj = function() { + return this.a; + }, o.Gk = function() { + var e; + me(this), fo(this.e) ? (e = this.a, this.a = !1, rt(this.e, new Rs(this.e, 2, this.c, e, !1))) : this.a = !1; + }, o.a = !1, w(Tt, "EDataTypeEList/Unsettable", 840), b(1958, 593, Qr, $Tn), o.Si = function() { + return !0; + }, w(Tt, "EDataTypeUniqueEList", 1958), b(1959, 840, Qr, xTn), o.Si = function() { + return !0; + }, w(Tt, "EDataTypeUniqueEList/Unsettable", 1959), b(147, 83, Qr, Au), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectContainmentEList/Resolving", 147), b(1184, 555, Qr, FTn), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectContainmentEList/Unsettable/Resolving", 1184), b(766, 14, Qr, EV), o.Ni = function() { + this.a = !0; + }, o.Qj = function() { + return this.a; + }, o.Gk = function() { + var e; + me(this), fo(this.e) ? (e = this.a, this.a = !1, rt(this.e, new Rs(this.e, 2, this.c, e, !1))) : this.a = !1; + }, o.a = !1, w(Tt, "EObjectContainmentWithInverseEList/Unsettable", 766), b(1222, 766, Qr, JAn), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectContainmentWithInverseEList/Unsettable/Resolving", 1222), b(757, 505, Qr, BX), o.Ni = function() { + this.a = !0; + }, o.Qj = function() { + return this.a; + }, o.Gk = function() { + var e; + me(this), fo(this.e) ? (e = this.a, this.a = !1, rt(this.e, new Rs(this.e, 2, this.c, e, !1))) : this.a = !1; + }, o.a = !1, w(Tt, "EObjectEList/Unsettable", 757), b(338, 505, Qr, Eg), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectResolvingEList", 338), b(1844, 757, Qr, BTn), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectResolvingEList/Unsettable", 1844), b(1527, 1, {}, A6n); + var nse; + w(Tt, "EObjectValidator", 1527), b(559, 505, Qr, bM), o.il = function() { + return this.d; + }, o.jl = function() { + return this.b; + }, o.Mj = function() { + return !0; + }, o.ml = function() { + return !0; + }, o.b = 0, w(Tt, "EObjectWithInverseEList", 559), b(1225, 559, Qr, QAn), o.ll = function() { + return !0; + }, w(Tt, "EObjectWithInverseEList/ManyInverse", 1225), b(635, 559, Qr, NL), o.Ni = function() { + this.a = !0; + }, o.Qj = function() { + return this.a; + }, o.Gk = function() { + var e; + me(this), fo(this.e) ? (e = this.a, this.a = !1, rt(this.e, new Rs(this.e, 2, this.c, e, !1))) : this.a = !1; + }, o.a = !1, w(Tt, "EObjectWithInverseEList/Unsettable", 635), b(1224, 635, Qr, YAn), o.ll = function() { + return !0; + }, w(Tt, "EObjectWithInverseEList/Unsettable/ManyInverse", 1224), b(767, 559, Qr, CV), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectWithInverseResolvingEList", 767), b(32, 767, Qr, Nn), o.ll = function() { + return !0; + }, w(Tt, "EObjectWithInverseResolvingEList/ManyInverse", 32), b(768, 635, Qr, MV), o.nl = function() { + return !0; + }, o.Wi = function(e, t) { + return e3(this, e, u(t, 58)); + }, w(Tt, "EObjectWithInverseResolvingEList/Unsettable", 768), b(1223, 768, Qr, ZAn), o.ll = function() { + return !0; + }, w(Tt, "EObjectWithInverseResolvingEList/Unsettable/ManyInverse", 1223), b(1185, 632, Qr), o.Li = function() { + return (this.b & 1792) == 0; + }, o.Ni = function() { + this.b |= 1; + }, o.kl = function() { + return (this.b & 4) != 0; + }, o.Mj = function() { + return (this.b & 40) != 0; + }, o.ll = function() { + return (this.b & 16) != 0; + }, o.ml = function() { + return (this.b & 8) != 0; + }, o.nl = function() { + return (this.b & Tw) != 0; + }, o.al = function() { + return (this.b & 32) != 0; + }, o.ol = function() { + return (this.b & Gs) != 0; + }, o.fk = function(e) { + return this.d ? RDn(this.d, e) : this.Lk().Hk().fk(e); + }, o.Qj = function() { + return this.b & 2 ? (this.b & 1) != 0 : this.i != 0; + }, o.Si = function() { + return (this.b & 128) != 0; + }, o.Gk = function() { + var e; + me(this), this.b & 2 && (fo(this.e) ? (e = (this.b & 1) != 0, this.b &= -2, t4(this, new Rs(this.e, 2, Ot(this.e.Dh(), this.Lk()), e, !1))) : this.b &= -2); + }, o.Yi = function() { + return (this.b & 1536) == 0; + }, o.b = 0, w(Tt, "EcoreEList/Generic", 1185), b(1186, 1185, Qr, GIn), o.Lk = function() { + return this.a; + }, w(Tt, "EcoreEList/Dynamic", 1186), b(765, 66, Ch, RG), o.aj = function(e) { + return gk(this.a.a, e); + }, w(Tt, "EcoreEMap/1", 765), b(764, 83, Qr, EW), o.Mi = function(e, t) { + uA(this.b, u(t, 136)); + }, o.Oi = function(e, t) { + Hxn(this.b); + }, o.Pi = function(e, t, i) { + var r; + ++(r = this.b, u(t, 136), r).e; + }, o.Qi = function(e, t) { + cx(this.b, u(t, 136)); + }, o.Ri = function(e, t, i) { + cx(this.b, u(i, 136)), x(i) === x(t) && u(i, 136).Ci(Qle(u(t, 136).ld())), uA(this.b, u(t, 136)); + }, w(Tt, "EcoreEMap/DelegateEObjectContainmentEList", 764), b(1220, 141, Gcn, cxn), w(Tt, "EcoreEMap/Unsettable", 1220), b(1221, 764, Qr, nSn), o.Ni = function() { + this.a = !0; + }, o.Qj = function() { + return this.a; + }, o.Gk = function() { + var e; + me(this), fo(this.e) ? (e = this.a, this.a = !1, rt(this.e, new Rs(this.e, 2, this.c, e, !1))) : this.a = !1; + }, o.a = !1, w(Tt, "EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList", 1221), b(1189, 215, n2, zPn), o.a = !1, o.b = !1, w(Tt, "EcoreUtil/Copier", 1189), b(759, 1, Pi, IDn), o.Nb = function(e) { + _i(this, e); + }, o.Ob = function() { + return BBn(this); + }, o.Pb = function() { + var e; + return BBn(this), e = this.b, this.b = null, e; + }, o.Qb = function() { + this.a.Qb(); + }, w(Tt, "EcoreUtil/ProperContentIterator", 759), b(1528, 1527, {}, A8n); + var ese; + w(Tt, "EcoreValidator", 1528); + var tse; + xt(Tt, "FeatureMapUtil/Validator"), b(1295, 1, { 2041: 1 }, S6n), o.am = function(e) { + return !0; + }, w(Tt, "FeatureMapUtil/1", 1295), b(773, 1, { 2041: 1 }, ctn), o.am = function(e) { + var t; + return this.c == e ? !0 : (t = un(ee(this.a, e)), t == null ? JAe(this, e) ? (ILn(this.a, e, (_n(), ov)), !0) : (ILn(this.a, e, (_n(), ga)), !1) : t == (_n(), ov)); + }, o.e = !1; + var AU; + w(Tt, "FeatureMapUtil/BasicValidator", 773), b(774, 45, n2, $X), w(Tt, "FeatureMapUtil/BasicValidator/Cache", 774), b(509, 56, { 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 61: 1, 79: 1, 71: 1, 97: 1 }, k7), o.bd = function(e, t) { + vqn(this.c, this.b, e, t); + }, o.Fc = function(e) { + return Pen(this.c, this.b, e); + }, o.cd = function(e, t) { + return pIe(this.c, this.b, e, t); + }, o.Gc = function(e) { + return P6(this, e); + }, o.Gi = function(e, t) { + ame(this.c, this.b, e, t); + }, o.Wk = function(e, t) { + return yen(this.c, this.b, e, t); + }, o.$i = function(e) { + return _A(this.c, this.b, e, !1); + }, o.Ii = function() { + return fTn(this.c, this.b); + }, o.Ji = function() { + return Ble(this.c, this.b); + }, o.Ki = function(e) { + return p4e(this.c, this.b, e); + }, o.Xk = function(e, t) { + return LAn(this, e, t); + }, o.$b = function() { + cp(this); + }, o.Hc = function(e) { + return _M(this.c, this.b, e); + }, o.Ic = function(e) { + return gve(this.c, this.b, e); + }, o.Xb = function(e) { + return _A(this.c, this.b, e, !0); + }, o.Fk = function(e) { + return this; + }, o.dd = function(e) { + return C3e(this.c, this.b, e); + }, o.dc = function() { + return TC(this); + }, o.Qj = function() { + return !Fk(this.c, this.b); + }, o.Kc = function() { + return tme(this.c, this.b); + }, o.ed = function() { + return ime(this.c, this.b); + }, o.fd = function(e) { + return N5e(this.c, this.b, e); + }, o.Ti = function(e, t) { + return NUn(this.c, this.b, e, t); + }, o.Ui = function(e, t) { + k4e(this.c, this.b, e, t); + }, o.gd = function(e) { + return a_n(this.c, this.b, e); + }, o.Mc = function(e) { + return vSe(this.c, this.b, e); + }, o.hd = function(e, t) { + return qUn(this.c, this.b, e, t); + }, o.Wb = function(e) { + jA(this.c, this.b), P6(this, u(e, 15)); + }, o.gc = function() { + return L5e(this.c, this.b); + }, o.Pc = function() { + return Tpe(this.c, this.b); + }, o.Qc = function(e) { + return M3e(this.c, this.b, e); + }, o.Ib = function() { + var e, t; + for (t = new Hl(), t.a += "[", e = fTn(this.c, this.b); W$(e); ) + Cr(t, O6(iA(e))), W$(e) && (t.a += ur); + return t.a += "]", t.a; + }, o.Gk = function() { + jA(this.c, this.b); + }, w(Tt, "FeatureMapUtil/FeatureEList", 509), b(644, 39, Wy, GN), o.hj = function(e) { + return m5(this, e); + }, o.mj = function(e) { + var t, i, r, c, s, f, h; + switch (this.d) { + case 1: + case 2: { + if (s = e.jj(), x(s) === x(this.c) && m5(this, null) == e.hj(null)) + return this.g = e.ij(), e.gj() == 1 && (this.d = 1), !0; + break; + } + case 3: { + switch (c = e.gj(), c) { + case 3: { + if (s = e.jj(), x(s) === x(this.c) && m5(this, null) == e.hj(null)) + return this.d = 5, t = new S0(2), ve(t, this.g), ve(t, e.ij()), this.g = t, !0; + break; + } + } + break; + } + case 5: { + switch (c = e.gj(), c) { + case 3: { + if (s = e.jj(), x(s) === x(this.c) && m5(this, null) == e.hj(null)) + return i = u(this.g, 16), i.Fc(e.ij()), !0; + break; + } + } + break; + } + case 4: { + switch (c = e.gj(), c) { + case 3: { + if (s = e.jj(), x(s) === x(this.c) && m5(this, null) == e.hj(null)) + return this.d = 1, this.g = e.ij(), !0; + break; + } + case 4: { + if (s = e.jj(), x(s) === x(this.c) && m5(this, null) == e.hj(null)) + return this.d = 6, h = new S0(2), ve(h, this.n), ve(h, e.kj()), this.n = h, f = A(T(ye, 1), _e, 28, 15, [this.o, e.lj()]), this.g = f, !0; + break; + } + } + break; + } + case 6: { + switch (c = e.gj(), c) { + case 4: { + if (s = e.jj(), x(s) === x(this.c) && m5(this, null) == e.hj(null)) + return i = u(this.n, 16), i.Fc(e.kj()), f = u(this.g, 53), r = K(ye, _e, 28, f.length + 1, 15, 1), Oc(f, 0, r, 0, f.length), r[f.length] = e.lj(), this.g = r, !0; + break; + } + } + break; + } + } + return !1; + }, w(Tt, "FeatureMapUtil/FeatureENotificationImpl", 644), b(564, 509, { 20: 1, 31: 1, 56: 1, 16: 1, 15: 1, 61: 1, 79: 1, 160: 1, 220: 1, 2036: 1, 71: 1, 97: 1 }, eM), o.Ol = function(e, t) { + return Pen(this.c, e, t); + }, o.Pl = function(e, t, i) { + return yen(this.c, e, t, i); + }, o.Ql = function(e, t, i) { + return Xen(this.c, e, t, i); + }, o.Rl = function() { + return this; + }, o.Sl = function(e, t) { + return wy(this.c, e, t); + }, o.Tl = function(e) { + return u(_A(this.c, this.b, e, !1), 76).Lk(); + }, o.Ul = function(e) { + return u(_A(this.c, this.b, e, !1), 76).md(); + }, o.Vl = function() { + return this.a; + }, o.Wl = function(e) { + return !Fk(this.c, e); + }, o.Xl = function(e, t) { + HA(this.c, e, t); + }, o.Yl = function(e) { + return sxn(this.c, e); + }, o.Zl = function(e) { + KRn(this.c, e); + }, w(Tt, "FeatureMapUtil/FeatureFeatureMap", 564), b(1294, 1, TK, xMn), o.Fk = function(e) { + return _A(this.b, this.a, -1, e); + }, o.Qj = function() { + return !Fk(this.b, this.a); + }, o.Wb = function(e) { + HA(this.b, this.a, e); + }, o.Gk = function() { + jA(this.b, this.a); + }, w(Tt, "FeatureMapUtil/FeatureValue", 1294); + var K3, SU, PU, _3, ise, bE = xt(eP, "AnyType"); + b(680, 63, Pl, kD), w(eP, "InvalidDatatypeValueException", 680); + var AO = xt(eP, OJn), wE = xt(eP, DJn), o0n = xt(eP, LJn), rse, jc, s0n, zd, cse, use, ose, sse, fse, hse, lse, ase, dse, bse, wse, G2, gse, z2, $9, pse, Cb, gE, pE, mse, x9, F9; + b(844, 516, { 110: 1, 94: 1, 93: 1, 58: 1, 54: 1, 99: 1, 857: 1 }, rz), o.Lh = function(e, t, i) { + switch (e) { + case 0: + return i ? (!this.c && (this.c = new qt(this, 0)), this.c) : (!this.c && (this.c = new qt(this, 0)), this.c.b); + case 1: + return i ? (!this.c && (this.c = new qt(this, 0)), u(xc(this.c, (at(), zd)), 160)) : (!this.c && (this.c = new qt(this, 0)), u(u(xc(this.c, (at(), zd)), 160), 220)).Vl(); + case 2: + return i ? (!this.b && (this.b = new qt(this, 2)), this.b) : (!this.b && (this.b = new qt(this, 2)), this.b.b); + } + return zo(this, e - se(this.ii()), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : this.ii(), e), t, i); + }, o.Uh = function(e, t, i) { + var r; + switch (t) { + case 0: + return !this.c && (this.c = new qt(this, 0)), ly(this.c, e, i); + case 1: + return (!this.c && (this.c = new qt(this, 0)), u(u(xc(this.c, (at(), zd)), 160), 71)).Xk(e, i); + case 2: + return !this.b && (this.b = new qt(this, 2)), ly(this.b, e, i); + } + return r = u($n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : this.ii(), t), 69), r.wk().Ak(this, oQ(this), t - se(this.ii()), e, i); + }, o.Wh = function(e) { + switch (e) { + case 0: + return !!this.c && this.c.i != 0; + case 1: + return !(!this.c && (this.c = new qt(this, 0)), u(xc(this.c, (at(), zd)), 160)).dc(); + case 2: + return !!this.b && this.b.i != 0; + } + return Uo(this, e - se(this.ii()), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : this.ii(), e)); + }, o.bi = function(e, t) { + switch (e) { + case 0: + !this.c && (this.c = new qt(this, 0)), K7(this.c, t); + return; + case 1: + (!this.c && (this.c = new qt(this, 0)), u(u(xc(this.c, (at(), zd)), 160), 220)).Wb(t); + return; + case 2: + !this.b && (this.b = new qt(this, 2)), K7(this.b, t); + return; + } + Jo(this, e - se(this.ii()), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : this.ii(), e), t); + }, o.ii = function() { + return at(), s0n; + }, o.ki = function(e) { + switch (e) { + case 0: + !this.c && (this.c = new qt(this, 0)), me(this.c); + return; + case 1: + (!this.c && (this.c = new qt(this, 0)), u(xc(this.c, (at(), zd)), 160)).$b(); + return; + case 2: + !this.b && (this.b = new qt(this, 2)), me(this.b); + return; + } + Wo(this, e - se(this.ii()), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : this.ii(), e)); + }, o.Ib = function() { + var e; + return this.j & 4 ? Hs(this) : (e = new ls(Hs(this)), e.a += " (mixed: ", M6(e, this.c), e.a += ", anyAttribute: ", M6(e, this.b), e.a += ")", e.a); + }, w(oi, "AnyTypeImpl", 844), b(681, 516, { 110: 1, 94: 1, 93: 1, 58: 1, 54: 1, 99: 1, 2119: 1, 681: 1 }, R6n), o.Lh = function(e, t, i) { + switch (e) { + case 0: + return this.a; + case 1: + return this.b; + } + return zo(this, e - se((at(), G2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : G2, e), t, i); + }, o.Wh = function(e) { + switch (e) { + case 0: + return this.a != null; + case 1: + return this.b != null; + } + return Uo(this, e - se((at(), G2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : G2, e)); + }, o.bi = function(e, t) { + switch (e) { + case 0: + Afe(this, Oe(t)); + return; + case 1: + Pfe(this, Oe(t)); + return; + } + Jo(this, e - se((at(), G2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : G2, e), t); + }, o.ii = function() { + return at(), G2; + }, o.ki = function(e) { + switch (e) { + case 0: + this.a = null; + return; + case 1: + this.b = null; + return; + } + Wo(this, e - se((at(), G2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : G2, e)); + }, o.Ib = function() { + var e; + return this.j & 4 ? Hs(this) : (e = new ls(Hs(this)), e.a += " (data: ", Cr(e, this.a), e.a += ", target: ", Cr(e, this.b), e.a += ")", e.a); + }, o.a = null, o.b = null, w(oi, "ProcessingInstructionImpl", 681), b(682, 844, { 110: 1, 94: 1, 93: 1, 58: 1, 54: 1, 99: 1, 857: 1, 2120: 1, 682: 1 }, wjn), o.Lh = function(e, t, i) { + switch (e) { + case 0: + return i ? (!this.c && (this.c = new qt(this, 0)), this.c) : (!this.c && (this.c = new qt(this, 0)), this.c.b); + case 1: + return i ? (!this.c && (this.c = new qt(this, 0)), u(xc(this.c, (at(), zd)), 160)) : (!this.c && (this.c = new qt(this, 0)), u(u(xc(this.c, (at(), zd)), 160), 220)).Vl(); + case 2: + return i ? (!this.b && (this.b = new qt(this, 2)), this.b) : (!this.b && (this.b = new qt(this, 2)), this.b.b); + case 3: + return !this.c && (this.c = new qt(this, 0)), Oe(wy(this.c, (at(), $9), !0)); + case 4: + return AV(this.a, (!this.c && (this.c = new qt(this, 0)), Oe(wy(this.c, (at(), $9), !0)))); + case 5: + return this.a; + } + return zo(this, e - se((at(), z2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : z2, e), t, i); + }, o.Wh = function(e) { + switch (e) { + case 0: + return !!this.c && this.c.i != 0; + case 1: + return !(!this.c && (this.c = new qt(this, 0)), u(xc(this.c, (at(), zd)), 160)).dc(); + case 2: + return !!this.b && this.b.i != 0; + case 3: + return !this.c && (this.c = new qt(this, 0)), Oe(wy(this.c, (at(), $9), !0)) != null; + case 4: + return AV(this.a, (!this.c && (this.c = new qt(this, 0)), Oe(wy(this.c, (at(), $9), !0)))) != null; + case 5: + return !!this.a; + } + return Uo(this, e - se((at(), z2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : z2, e)); + }, o.bi = function(e, t) { + switch (e) { + case 0: + !this.c && (this.c = new qt(this, 0)), K7(this.c, t); + return; + case 1: + (!this.c && (this.c = new qt(this, 0)), u(u(xc(this.c, (at(), zd)), 160), 220)).Wb(t); + return; + case 2: + !this.b && (this.b = new qt(this, 2)), K7(this.b, t); + return; + case 3: + wJ(this, Oe(t)); + return; + case 4: + wJ(this, TV(this.a, t)); + return; + case 5: + Sfe(this, u(t, 156)); + return; + } + Jo(this, e - se((at(), z2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : z2, e), t); + }, o.ii = function() { + return at(), z2; + }, o.ki = function(e) { + switch (e) { + case 0: + !this.c && (this.c = new qt(this, 0)), me(this.c); + return; + case 1: + (!this.c && (this.c = new qt(this, 0)), u(xc(this.c, (at(), zd)), 160)).$b(); + return; + case 2: + !this.b && (this.b = new qt(this, 2)), me(this.b); + return; + case 3: + !this.c && (this.c = new qt(this, 0)), HA(this.c, (at(), $9), null); + return; + case 4: + wJ(this, TV(this.a, null)); + return; + case 5: + this.a = null; + return; + } + Wo(this, e - se((at(), z2)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : z2, e)); + }, w(oi, "SimpleAnyTypeImpl", 682), b(683, 516, { 110: 1, 94: 1, 93: 1, 58: 1, 54: 1, 99: 1, 2121: 1, 683: 1 }, gjn), o.Lh = function(e, t, i) { + switch (e) { + case 0: + return i ? (!this.a && (this.a = new qt(this, 0)), this.a) : (!this.a && (this.a = new qt(this, 0)), this.a.b); + case 1: + return i ? (!this.b && (this.b = new Ou((On(), ar), pc, this, 1)), this.b) : (!this.b && (this.b = new Ou((On(), ar), pc, this, 1)), rk(this.b)); + case 2: + return i ? (!this.c && (this.c = new Ou((On(), ar), pc, this, 2)), this.c) : (!this.c && (this.c = new Ou((On(), ar), pc, this, 2)), rk(this.c)); + case 3: + return !this.a && (this.a = new qt(this, 0)), xc(this.a, (at(), gE)); + case 4: + return !this.a && (this.a = new qt(this, 0)), xc(this.a, (at(), pE)); + case 5: + return !this.a && (this.a = new qt(this, 0)), xc(this.a, (at(), x9)); + case 6: + return !this.a && (this.a = new qt(this, 0)), xc(this.a, (at(), F9)); + } + return zo(this, e - se((at(), Cb)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : Cb, e), t, i); + }, o.Uh = function(e, t, i) { + var r; + switch (t) { + case 0: + return !this.a && (this.a = new qt(this, 0)), ly(this.a, e, i); + case 1: + return !this.b && (this.b = new Ou((On(), ar), pc, this, 1)), UC(this.b, e, i); + case 2: + return !this.c && (this.c = new Ou((On(), ar), pc, this, 2)), UC(this.c, e, i); + case 5: + return !this.a && (this.a = new qt(this, 0)), LAn(xc(this.a, (at(), x9)), e, i); + } + return r = u($n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : (at(), Cb), t), 69), r.wk().Ak(this, oQ(this), t - se((at(), Cb)), e, i); + }, o.Wh = function(e) { + switch (e) { + case 0: + return !!this.a && this.a.i != 0; + case 1: + return !!this.b && this.b.f != 0; + case 2: + return !!this.c && this.c.f != 0; + case 3: + return !this.a && (this.a = new qt(this, 0)), !TC(xc(this.a, (at(), gE))); + case 4: + return !this.a && (this.a = new qt(this, 0)), !TC(xc(this.a, (at(), pE))); + case 5: + return !this.a && (this.a = new qt(this, 0)), !TC(xc(this.a, (at(), x9))); + case 6: + return !this.a && (this.a = new qt(this, 0)), !TC(xc(this.a, (at(), F9))); + } + return Uo(this, e - se((at(), Cb)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : Cb, e)); + }, o.bi = function(e, t) { + switch (e) { + case 0: + !this.a && (this.a = new qt(this, 0)), K7(this.a, t); + return; + case 1: + !this.b && (this.b = new Ou((On(), ar), pc, this, 1)), TT(this.b, t); + return; + case 2: + !this.c && (this.c = new Ou((On(), ar), pc, this, 2)), TT(this.c, t); + return; + case 3: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), gE))), !this.a && (this.a = new qt(this, 0)), P6(xc(this.a, gE), u(t, 16)); + return; + case 4: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), pE))), !this.a && (this.a = new qt(this, 0)), P6(xc(this.a, pE), u(t, 16)); + return; + case 5: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), x9))), !this.a && (this.a = new qt(this, 0)), P6(xc(this.a, x9), u(t, 16)); + return; + case 6: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), F9))), !this.a && (this.a = new qt(this, 0)), P6(xc(this.a, F9), u(t, 16)); + return; + } + Jo(this, e - se((at(), Cb)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : Cb, e), t); + }, o.ii = function() { + return at(), Cb; + }, o.ki = function(e) { + switch (e) { + case 0: + !this.a && (this.a = new qt(this, 0)), me(this.a); + return; + case 1: + !this.b && (this.b = new Ou((On(), ar), pc, this, 1)), this.b.c.$b(); + return; + case 2: + !this.c && (this.c = new Ou((On(), ar), pc, this, 2)), this.c.c.$b(); + return; + case 3: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), gE))); + return; + case 4: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), pE))); + return; + case 5: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), x9))); + return; + case 6: + !this.a && (this.a = new qt(this, 0)), cp(xc(this.a, (at(), F9))); + return; + } + Wo(this, e - se((at(), Cb)), $n(this.j & 2 ? (!this.k && (this.k = new uf()), this.k).Nk() : Cb, e)); + }, o.Ib = function() { + var e; + return this.j & 4 ? Hs(this) : (e = new ls(Hs(this)), e.a += " (mixed: ", M6(e, this.a), e.a += ")", e.a); + }, w(oi, "XMLTypeDocumentRootImpl", 683), b(2028, 720, { 110: 1, 94: 1, 93: 1, 480: 1, 155: 1, 58: 1, 114: 1, 54: 1, 99: 1, 158: 1, 119: 1, 120: 1, 2122: 1 }, P6n), o.ri = function(e, t) { + switch (e.hk()) { + case 7: + case 8: + case 9: + case 10: + case 16: + case 22: + case 23: + case 24: + case 25: + case 26: + case 32: + case 33: + case 34: + case 36: + case 37: + case 44: + case 45: + case 50: + case 51: + case 53: + case 55: + case 56: + case 57: + case 58: + case 60: + case 61: + case 4: + return t == null ? null : Jr(t); + case 19: + case 28: + case 29: + case 35: + case 38: + case 39: + case 41: + case 46: + case 52: + case 54: + case 5: + return Oe(t); + case 6: + return hae(u(t, 195)); + case 12: + case 47: + case 49: + case 11: + return IGn(this, e, t); + case 13: + return t == null ? null : yIe(u(t, 247)); + case 15: + case 14: + return t == null ? null : Twe($(R(t))); + case 17: + return AKn((at(), t)); + case 18: + return AKn(t); + case 21: + case 20: + return t == null ? null : Awe(u(t, 161).a); + case 27: + return lae(u(t, 195)); + case 30: + return _Rn((at(), u(t, 15))); + case 31: + return _Rn(u(t, 15)); + case 40: + return dae((at(), t)); + case 42: + return SKn((at(), t)); + case 43: + return SKn(t); + case 59: + case 48: + return aae((at(), t)); + default: + throw M(new Gn(ev + e.xe() + nb)); + } + }, o.si = function(e) { + var t, i, r, c, s; + switch (e.G == -1 && (e.G = (i = jo(e), i ? f1(i.vi(), e) : -1)), e.G) { + case 0: + return t = new rz(), t; + case 1: + return r = new R6n(), r; + case 2: + return c = new wjn(), c; + case 3: + return s = new gjn(), s; + default: + throw M(new Gn(hK + e.zb + nb)); + } + }, o.ti = function(e, t) { + var i, r, c, s, f, h, l, a, d, g, p, m, k, j, S, I; + switch (e.hk()) { + case 5: + case 52: + case 4: + return t; + case 6: + return v9e(t); + case 8: + case 7: + return t == null ? null : cye(t); + case 9: + return t == null ? null : ak(Ao((r = Bc(t, !0), r.length > 0 && (zn(0, r.length), r.charCodeAt(0) == 43) ? (zn(1, r.length + 1), r.substr(1)) : r), -128, 127) << 24 >> 24); + case 10: + return t == null ? null : ak(Ao((c = Bc(t, !0), c.length > 0 && (zn(0, c.length), c.charCodeAt(0) == 43) ? (zn(1, c.length + 1), c.substr(1)) : c), -128, 127) << 24 >> 24); + case 11: + return Oe(z0(this, (at(), ose), t)); + case 12: + return Oe(z0(this, (at(), sse), t)); + case 13: + return t == null ? null : new Sz(Bc(t, !0)); + case 15: + case 14: + return SMe(t); + case 16: + return Oe(z0(this, (at(), fse), t)); + case 17: + return qBn((at(), t)); + case 18: + return qBn(t); + case 28: + case 29: + case 35: + case 38: + case 39: + case 41: + case 54: + case 19: + return Bc(t, !0); + case 21: + case 20: + return BMe(t); + case 22: + return Oe(z0(this, (at(), hse), t)); + case 23: + return Oe(z0(this, (at(), lse), t)); + case 24: + return Oe(z0(this, (at(), ase), t)); + case 25: + return Oe(z0(this, (at(), dse), t)); + case 26: + return Oe(z0(this, (at(), bse), t)); + case 27: + return o9e(t); + case 30: + return UBn((at(), t)); + case 31: + return UBn(t); + case 32: + return t == null ? null : Y(Ao((d = Bc(t, !0), d.length > 0 && (zn(0, d.length), d.charCodeAt(0) == 43) ? (zn(1, d.length + 1), d.substr(1)) : d), Wi, tt)); + case 33: + return t == null ? null : new H1((g = Bc(t, !0), g.length > 0 && (zn(0, g.length), g.charCodeAt(0) == 43) ? (zn(1, g.length + 1), g.substr(1)) : g)); + case 34: + return t == null ? null : Y(Ao((p = Bc(t, !0), p.length > 0 && (zn(0, p.length), p.charCodeAt(0) == 43) ? (zn(1, p.length + 1), p.substr(1)) : p), Wi, tt)); + case 36: + return t == null ? null : Ml(zA((m = Bc(t, !0), m.length > 0 && (zn(0, m.length), m.charCodeAt(0) == 43) ? (zn(1, m.length + 1), m.substr(1)) : m))); + case 37: + return t == null ? null : Ml(zA((k = Bc(t, !0), k.length > 0 && (zn(0, k.length), k.charCodeAt(0) == 43) ? (zn(1, k.length + 1), k.substr(1)) : k))); + case 40: + return r7e((at(), t)); + case 42: + return GBn((at(), t)); + case 43: + return GBn(t); + case 44: + return t == null ? null : new H1((j = Bc(t, !0), j.length > 0 && (zn(0, j.length), j.charCodeAt(0) == 43) ? (zn(1, j.length + 1), j.substr(1)) : j)); + case 45: + return t == null ? null : new H1((S = Bc(t, !0), S.length > 0 && (zn(0, S.length), S.charCodeAt(0) == 43) ? (zn(1, S.length + 1), S.substr(1)) : S)); + case 46: + return Bc(t, !1); + case 47: + return Oe(z0(this, (at(), wse), t)); + case 59: + case 48: + return i7e((at(), t)); + case 49: + return Oe(z0(this, (at(), gse), t)); + case 50: + return t == null ? null : sm(Ao((I = Bc(t, !0), I.length > 0 && (zn(0, I.length), I.charCodeAt(0) == 43) ? (zn(1, I.length + 1), I.substr(1)) : I), QS, 32767) << 16 >> 16); + case 51: + return t == null ? null : sm(Ao((s = Bc(t, !0), s.length > 0 && (zn(0, s.length), s.charCodeAt(0) == 43) ? (zn(1, s.length + 1), s.substr(1)) : s), QS, 32767) << 16 >> 16); + case 53: + return Oe(z0(this, (at(), pse), t)); + case 55: + return t == null ? null : sm(Ao((f = Bc(t, !0), f.length > 0 && (zn(0, f.length), f.charCodeAt(0) == 43) ? (zn(1, f.length + 1), f.substr(1)) : f), QS, 32767) << 16 >> 16); + case 56: + return t == null ? null : sm(Ao((h = Bc(t, !0), h.length > 0 && (zn(0, h.length), h.charCodeAt(0) == 43) ? (zn(1, h.length + 1), h.substr(1)) : h), QS, 32767) << 16 >> 16); + case 57: + return t == null ? null : Ml(zA((l = Bc(t, !0), l.length > 0 && (zn(0, l.length), l.charCodeAt(0) == 43) ? (zn(1, l.length + 1), l.substr(1)) : l))); + case 58: + return t == null ? null : Ml(zA((a = Bc(t, !0), a.length > 0 && (zn(0, a.length), a.charCodeAt(0) == 43) ? (zn(1, a.length + 1), a.substr(1)) : a))); + case 60: + return t == null ? null : Y(Ao((i = Bc(t, !0), i.length > 0 && (zn(0, i.length), i.charCodeAt(0) == 43) ? (zn(1, i.length + 1), i.substr(1)) : i), Wi, tt)); + case 61: + return t == null ? null : Y(Ao(Bc(t, !0), Wi, tt)); + default: + throw M(new Gn(ev + e.xe() + nb)); + } + }; + var vse, f0n, kse, h0n; + w(oi, "XMLTypeFactoryImpl", 2028), b(594, 184, { 110: 1, 94: 1, 93: 1, 155: 1, 197: 1, 58: 1, 241: 1, 114: 1, 54: 1, 99: 1, 158: 1, 184: 1, 119: 1, 120: 1, 690: 1, 2044: 1, 594: 1 }, bIn), o.N = !1, o.O = !1; + var yse = !1; + w(oi, "XMLTypePackageImpl", 594), b(1961, 1, { 851: 1 }, I6n), o.Kk = function() { + return Ben(), Ise; + }, w(oi, "XMLTypePackageImpl/1", 1961), b(1970, 1, ze, O6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/10", 1970), b(1971, 1, ze, D6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/11", 1971), b(1972, 1, ze, L6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/12", 1972), b(1973, 1, ze, N6n), o.fk = function(e) { + return $b(e); + }, o.gk = function(e) { + return K(si, J, 345, e, 7, 1); + }, w(oi, "XMLTypePackageImpl/13", 1973), b(1974, 1, ze, $6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/14", 1974), b(1975, 1, ze, x6n), o.fk = function(e) { + return D(e, 15); + }, o.gk = function(e) { + return K(rs, kw, 15, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/15", 1975), b(1976, 1, ze, F6n), o.fk = function(e) { + return D(e, 15); + }, o.gk = function(e) { + return K(rs, kw, 15, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/16", 1976), b(1977, 1, ze, B6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/17", 1977), b(1978, 1, ze, K6n), o.fk = function(e) { + return D(e, 161); + }, o.gk = function(e) { + return K(sv, J, 161, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/18", 1978), b(1979, 1, ze, _6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/19", 1979), b(1962, 1, ze, H6n), o.fk = function(e) { + return D(e, 857); + }, o.gk = function(e) { + return K(bE, Bn, 857, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/2", 1962), b(1980, 1, ze, q6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/20", 1980), b(1981, 1, ze, U6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/21", 1981), b(1982, 1, ze, G6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/22", 1982), b(1983, 1, ze, z6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/23", 1983), b(1984, 1, ze, X6n), o.fk = function(e) { + return D(e, 195); + }, o.gk = function(e) { + return K(Bu, J, 195, e, 0, 2); + }, w(oi, "XMLTypePackageImpl/24", 1984), b(1985, 1, ze, V6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/25", 1985), b(1986, 1, ze, W6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/26", 1986), b(1987, 1, ze, J6n), o.fk = function(e) { + return D(e, 15); + }, o.gk = function(e) { + return K(rs, kw, 15, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/27", 1987), b(1988, 1, ze, Q6n), o.fk = function(e) { + return D(e, 15); + }, o.gk = function(e) { + return K(rs, kw, 15, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/28", 1988), b(1989, 1, ze, Y6n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/29", 1989), b(1963, 1, ze, Z6n), o.fk = function(e) { + return D(e, 681); + }, o.gk = function(e) { + return K(AO, Bn, 2119, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/3", 1963), b(1990, 1, ze, n5n), o.fk = function(e) { + return D(e, 17); + }, o.gk = function(e) { + return K(Gi, J, 17, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/30", 1990), b(1991, 1, ze, e5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/31", 1991), b(1992, 1, ze, t5n), o.fk = function(e) { + return D(e, 168); + }, o.gk = function(e) { + return K(tb, J, 168, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/32", 1992), b(1993, 1, ze, i5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/33", 1993), b(1994, 1, ze, r5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/34", 1994), b(1995, 1, ze, c5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/35", 1995), b(1996, 1, ze, u5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/36", 1996), b(1997, 1, ze, o5n), o.fk = function(e) { + return D(e, 15); + }, o.gk = function(e) { + return K(rs, kw, 15, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/37", 1997), b(1998, 1, ze, s5n), o.fk = function(e) { + return D(e, 15); + }, o.gk = function(e) { + return K(rs, kw, 15, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/38", 1998), b(1999, 1, ze, f5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/39", 1999), b(1964, 1, ze, h5n), o.fk = function(e) { + return D(e, 682); + }, o.gk = function(e) { + return K(wE, Bn, 2120, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/4", 1964), b(2e3, 1, ze, l5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/40", 2e3), b(2001, 1, ze, a5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/41", 2001), b(2002, 1, ze, d5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/42", 2002), b(2003, 1, ze, b5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/43", 2003), b(2004, 1, ze, w5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/44", 2004), b(2005, 1, ze, g5n), o.fk = function(e) { + return D(e, 191); + }, o.gk = function(e) { + return K(ib, J, 191, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/45", 2005), b(2006, 1, ze, p5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/46", 2006), b(2007, 1, ze, m5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/47", 2007), b(2008, 1, ze, v5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/48", 2008), b(2009, 1, ze, k5n), o.fk = function(e) { + return D(e, 191); + }, o.gk = function(e) { + return K(ib, J, 191, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/49", 2009), b(1965, 1, ze, y5n), o.fk = function(e) { + return D(e, 683); + }, o.gk = function(e) { + return K(o0n, Bn, 2121, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/5", 1965), b(2010, 1, ze, j5n), o.fk = function(e) { + return D(e, 168); + }, o.gk = function(e) { + return K(tb, J, 168, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/50", 2010), b(2011, 1, ze, E5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/51", 2011), b(2012, 1, ze, C5n), o.fk = function(e) { + return D(e, 17); + }, o.gk = function(e) { + return K(Gi, J, 17, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/52", 2012), b(1966, 1, ze, M5n), o.fk = function(e) { + return Si(e); + }, o.gk = function(e) { + return K(fn, J, 2, e, 6, 1); + }, w(oi, "XMLTypePackageImpl/6", 1966), b(1967, 1, ze, T5n), o.fk = function(e) { + return D(e, 195); + }, o.gk = function(e) { + return K(Bu, J, 195, e, 0, 2); + }, w(oi, "XMLTypePackageImpl/7", 1967), b(1968, 1, ze, A5n), o.fk = function(e) { + return Nb(e); + }, o.gk = function(e) { + return K(Xt, J, 485, e, 8, 1); + }, w(oi, "XMLTypePackageImpl/8", 1968), b(1969, 1, ze, S5n), o.fk = function(e) { + return D(e, 222); + }, o.gk = function(e) { + return K(p3, J, 222, e, 0, 1); + }, w(oi, "XMLTypePackageImpl/9", 1969); + var nh, O1, B9, SO, P; + b(55, 63, Pl, Le), w(p1, "RegEx/ParseException", 55), b(836, 1, {}, cG), o.bm = function(e) { + return e < this.j && Xi(this.i, e) == 63; + }, o.cm = function() { + var e, t, i, r, c; + if (this.c != 10) + throw M(new Le($e((Ie(), qS)))); + switch (e = this.a, e) { + case 101: + e = 27; + break; + case 102: + e = 12; + break; + case 110: + e = 10; + break; + case 114: + e = 13; + break; + case 116: + e = 9; + break; + case 120: + if (Ze(this), this.c != 0) + throw M(new Le($e((Ie(), g1)))); + if (this.a == 123) { + c = 0, i = 0; + do { + if (Ze(this), this.c != 0) + throw M(new Le($e((Ie(), g1)))); + if ((c = bd(this.a)) < 0) + break; + if (i > i * 16) + throw M(new Le($e((Ie(), UWn)))); + i = i * 16 + c; + } while (!0); + if (this.a != 125) + throw M(new Le($e((Ie(), GWn)))); + if (i > cv) + throw M(new Le($e((Ie(), zWn)))); + e = i; + } else { + if (c = 0, this.c != 0 || (c = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (i = c, Ze(this), this.c != 0 || (c = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + i = i * 16 + c, e = i; + } + break; + case 117: + if (r = 0, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + t = t * 16 + r, e = t; + break; + case 118: + if (Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, Ze(this), this.c != 0 || (r = bd(this.a)) < 0) + throw M(new Le($e((Ie(), g1)))); + if (t = t * 16 + r, t > cv) + throw M(new Le($e((Ie(), "parser.descappe.4")))); + e = t; + break; + case 65: + case 90: + case 122: + throw M(new Le($e((Ie(), XWn)))); + } + return e; + }, o.dm = function(e) { + var t, i; + switch (e) { + case 100: + i = (this.e & 32) == 32 ? sa("Nd", !0) : (nt(), PO); + break; + case 68: + i = (this.e & 32) == 32 ? sa("Nd", !1) : (nt(), g0n); + break; + case 119: + i = (this.e & 32) == 32 ? sa("IsWord", !0) : (nt(), Gv); + break; + case 87: + i = (this.e & 32) == 32 ? sa("IsWord", !1) : (nt(), m0n); + break; + case 115: + i = (this.e & 32) == 32 ? sa("IsSpace", !0) : (nt(), H3); + break; + case 83: + i = (this.e & 32) == 32 ? sa("IsSpace", !1) : (nt(), p0n); + break; + default: + throw M(new ec((t = e, XJn + t.toString(16)))); + } + return i; + }, o.em = function(e) { + var t, i, r, c, s, f, h, l, a, d, g, p; + for (this.b = 1, Ze(this), t = null, this.c == 0 && this.a == 94 ? (Ze(this), e ? d = (nt(), nt(), new yo(5)) : (t = (nt(), nt(), new yo(4)), Fc(t, 0, cv), d = new yo(4))) : d = (nt(), nt(), new yo(4)), c = !0; (p = this.c) != 1 && !(p == 0 && this.a == 93 && !c); ) { + if (c = !1, i = this.a, r = !1, p == 10) + switch (i) { + case 100: + case 68: + case 119: + case 87: + case 115: + case 83: + gw(d, this.dm(i)), r = !0; + break; + case 105: + case 73: + case 99: + case 67: + i = this.um(d, i), i < 0 && (r = !0); + break; + case 112: + case 80: + if (g = xnn(this, i), !g) + throw M(new Le($e((Ie(), EK)))); + gw(d, g), r = !0; + break; + default: + i = this.cm(); + } + else if (p == 20) { + if (f = w4(this.i, 58, this.d), f < 0) + throw M(new Le($e((Ie(), Rcn)))); + if (h = !0, Xi(this.i, this.d) == 94 && (++this.d, h = !1), s = qo(this.i, this.d, f), l = vNn(s, h, (this.e & 512) == 512), !l) + throw M(new Le($e((Ie(), RWn)))); + if (gw(d, l), r = !0, f + 1 >= this.j || Xi(this.i, f + 1) != 93) + throw M(new Le($e((Ie(), Rcn)))); + this.d = f + 2; + } + if (Ze(this), !r) + if (this.c != 0 || this.a != 45) + Fc(d, i, i); + else { + if (Ze(this), (p = this.c) == 1) + throw M(new Le($e((Ie(), US)))); + p == 0 && this.a == 93 ? (Fc(d, i, i), Fc(d, 45, 45)) : (a = this.a, p == 10 && (a = this.cm()), Ze(this), Fc(d, i, a)); + } + (this.e & Gs) == Gs && this.c == 0 && this.a == 44 && Ze(this); + } + if (this.c == 1) + throw M(new Le($e((Ie(), US)))); + return t && (V5(t, d), d = t), Gg(d), z5(d), this.b = 0, Ze(this), d; + }, o.fm = function() { + var e, t, i, r; + for (i = this.em(!1); (r = this.c) != 7; ) + if (e = this.a, r == 0 && (e == 45 || e == 38) || r == 4) { + if (Ze(this), this.c != 9) + throw M(new Le($e((Ie(), _Wn)))); + if (t = this.em(!1), r == 4) + gw(i, t); + else if (e == 45) + V5(i, t); + else if (e == 38) + TGn(i, t); + else + throw M(new ec("ASSERT")); + } else + throw M(new Le($e((Ie(), HWn)))); + return Ze(this), i; + }, o.gm = function() { + var e, t; + return e = this.a - 48, t = (nt(), nt(), new IN(12, null, e)), !this.g && (this.g = new BE()), FE(this.g, new KG(e)), Ze(this), t; + }, o.hm = function() { + return Ze(this), nt(), Cse; + }, o.im = function() { + return Ze(this), nt(), Ese; + }, o.jm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.km = function() { + throw M(new Le($e((Ie(), is)))); + }, o.lm = function() { + return Ze(this), j6e(); + }, o.mm = function() { + return Ze(this), nt(), Tse; + }, o.nm = function() { + return Ze(this), nt(), Sse; + }, o.om = function() { + var e; + if (this.d >= this.j || ((e = Xi(this.i, this.d++)) & 65504) != 64) + throw M(new Le($e((Ie(), xWn)))); + return Ze(this), nt(), nt(), new Nh(0, e - 64); + }, o.pm = function() { + return Ze(this), MPe(); + }, o.qm = function() { + return Ze(this), nt(), Pse; + }, o.rm = function() { + var e; + return e = (nt(), nt(), new Nh(0, 105)), Ze(this), e; + }, o.sm = function() { + return Ze(this), nt(), Ase; + }, o.tm = function() { + return Ze(this), nt(), Mse; + }, o.um = function(e, t) { + return this.cm(); + }, o.vm = function() { + return Ze(this), nt(), b0n; + }, o.wm = function() { + var e, t, i, r, c; + if (this.d + 1 >= this.j) + throw M(new Le($e((Ie(), LWn)))); + if (r = -1, t = null, e = Xi(this.i, this.d), 49 <= e && e <= 57) { + if (r = e - 48, !this.g && (this.g = new BE()), FE(this.g, new KG(r)), ++this.d, Xi(this.i, this.d) != 41) + throw M(new Le($e((Ie(), Ad)))); + ++this.d; + } else + switch (e == 63 && --this.d, Ze(this), t = ftn(this), t.e) { + case 20: + case 21: + case 22: + case 23: + break; + case 8: + if (this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + break; + default: + throw M(new Le($e((Ie(), NWn)))); + } + if (Ze(this), c = B0(this), i = null, c.e == 2) { + if (c.Pm() != 2) + throw M(new Le($e((Ie(), $Wn)))); + i = c.Lm(1), c = c.Lm(0); + } + if (this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), nt(), nt(), new n$n(r, t, c, i); + }, o.xm = function() { + return Ze(this), nt(), w0n; + }, o.ym = function() { + var e; + if (Ze(this), e = wM(24, B0(this)), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.zm = function() { + var e; + if (Ze(this), e = wM(20, B0(this)), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.Am = function() { + var e; + if (Ze(this), e = wM(22, B0(this)), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.Bm = function() { + var e, t, i, r, c; + for (e = 0, i = 0, t = -1; this.d < this.j && (t = Xi(this.i, this.d), c = Hnn(t), c != 0); ) + e |= c, ++this.d; + if (this.d >= this.j) + throw M(new Le($e((Ie(), Fcn)))); + if (t == 45) { + for (++this.d; this.d < this.j && (t = Xi(this.i, this.d), c = Hnn(t), c != 0); ) + i |= c, ++this.d; + if (this.d >= this.j) + throw M(new Le($e((Ie(), Fcn)))); + } + if (t == 58) { + if (++this.d, Ze(this), r = WPn(B0(this), e, i), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + Ze(this); + } else if (t == 41) + ++this.d, Ze(this), r = WPn(B0(this), e, i); + else + throw M(new Le($e((Ie(), DWn)))); + return r; + }, o.Cm = function() { + var e; + if (Ze(this), e = wM(21, B0(this)), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.Dm = function() { + var e; + if (Ze(this), e = wM(23, B0(this)), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.Em = function() { + var e, t; + if (Ze(this), e = this.f++, t = rN(B0(this), e), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), t; + }, o.Fm = function() { + var e; + if (Ze(this), e = rN(B0(this), 0), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.Gm = function(e) { + return Ze(this), this.c == 5 ? (Ze(this), uM(e, (nt(), nt(), new Xb(9, e)))) : uM(e, (nt(), nt(), new Xb(3, e))); + }, o.Hm = function(e) { + var t; + return Ze(this), t = (nt(), nt(), new S6(2)), this.c == 5 ? (Ze(this), pd(t, K9), pd(t, e)) : (pd(t, e), pd(t, K9)), t; + }, o.Im = function(e) { + return Ze(this), this.c == 5 ? (Ze(this), nt(), nt(), new Xb(9, e)) : (nt(), nt(), new Xb(3, e)); + }, o.a = 0, o.b = 0, o.c = 0, o.d = 0, o.e = 0, o.f = 1, o.g = null, o.j = 0, w(p1, "RegEx/RegexParser", 836), b(1947, 836, {}, pjn), o.bm = function(e) { + return !1; + }, o.cm = function() { + return pen(this); + }, o.dm = function(e) { + return Im(e); + }, o.em = function(e) { + return yzn(this); + }, o.fm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.gm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.hm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.im = function() { + throw M(new Le($e((Ie(), is)))); + }, o.jm = function() { + return Ze(this), Im(67); + }, o.km = function() { + return Ze(this), Im(73); + }, o.lm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.mm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.nm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.om = function() { + return Ze(this), Im(99); + }, o.pm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.qm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.rm = function() { + return Ze(this), Im(105); + }, o.sm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.tm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.um = function(e, t) { + return gw(e, Im(t)), -1; + }, o.vm = function() { + return Ze(this), nt(), nt(), new Nh(0, 94); + }, o.wm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.xm = function() { + return Ze(this), nt(), nt(), new Nh(0, 36); + }, o.ym = function() { + throw M(new Le($e((Ie(), is)))); + }, o.zm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.Am = function() { + throw M(new Le($e((Ie(), is)))); + }, o.Bm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.Cm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.Dm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.Em = function() { + var e; + if (Ze(this), e = rN(B0(this), 0), this.c != 7) + throw M(new Le($e((Ie(), Ad)))); + return Ze(this), e; + }, o.Fm = function() { + throw M(new Le($e((Ie(), is)))); + }, o.Gm = function(e) { + return Ze(this), uM(e, (nt(), nt(), new Xb(3, e))); + }, o.Hm = function(e) { + var t; + return Ze(this), t = (nt(), nt(), new S6(2)), pd(t, e), pd(t, K9), t; + }, o.Im = function(e) { + return Ze(this), nt(), nt(), new Xb(3, e); + }; + var X2 = null, qv = null; + w(p1, "RegEx/ParserForXMLSchema", 1947), b(122, 1, uv, Wd), o.Jm = function(e) { + throw M(new ec("Not supported.")); + }, o.Km = function() { + return -1; + }, o.Lm = function(e) { + return null; + }, o.Mm = function() { + return null; + }, o.Nm = function(e) { + }, o.Om = function(e) { + }, o.Pm = function() { + return 0; + }, o.Ib = function() { + return this.Qm(0); + }, o.Qm = function(e) { + return this.e == 11 ? "." : ""; + }, o.e = 0; + var l0n, Uv, R9, jse, a0n, rg = null, PO, IU = null, d0n, K9, OU = null, b0n, w0n, g0n, p0n, m0n, Ese, H3, Cse, Mse, Tse, Ase, Gv, Sse, Pse, $Ne = w(p1, "RegEx/Token", 122); + b(138, 122, { 3: 1, 138: 1, 122: 1 }, yo), o.Qm = function(e) { + var t, i, r; + if (this.e == 4) + if (this == d0n) + i = "."; + else if (this == PO) + i = "\\d"; + else if (this == Gv) + i = "\\w"; + else if (this == H3) + i = "\\s"; + else { + for (r = new Hl(), r.a += "[", t = 0; t < this.b.length; t += 2) + e & Gs && t > 0 && (r.a += ","), this.b[t] === this.b[t + 1] ? Cr(r, by(this.b[t])) : (Cr(r, by(this.b[t])), r.a += "-", Cr(r, by(this.b[t + 1]))); + r.a += "]", i = r.a; + } + else if (this == g0n) + i = "\\D"; + else if (this == m0n) + i = "\\W"; + else if (this == p0n) + i = "\\S"; + else { + for (r = new Hl(), r.a += "[^", t = 0; t < this.b.length; t += 2) + e & Gs && t > 0 && (r.a += ","), this.b[t] === this.b[t + 1] ? Cr(r, by(this.b[t])) : (Cr(r, by(this.b[t])), r.a += "-", Cr(r, by(this.b[t + 1]))); + r.a += "]", i = r.a; + } + return i; + }, o.a = !1, o.c = !1, w(p1, "RegEx/RangeToken", 138), b(592, 1, { 592: 1 }, KG), o.a = 0, w(p1, "RegEx/RegexParser/ReferencePosition", 592), b(591, 1, { 3: 1, 591: 1 }, DEn), o.Fb = function(e) { + var t; + return e == null || !D(e, 591) ? !1 : (t = u(e, 591), An(this.b, t.b) && this.a == t.a); + }, o.Hb = function() { + return t1(this.b + "/" + hen(this.a)); + }, o.Ib = function() { + return this.c.Qm(this.a); + }, o.a = 0, w(p1, "RegEx/RegularExpression", 591), b(228, 122, uv, Nh), o.Km = function() { + return this.a; + }, o.Qm = function(e) { + var t, i, r; + switch (this.e) { + case 0: + switch (this.a) { + case 124: + case 42: + case 43: + case 63: + case 40: + case 41: + case 46: + case 91: + case 123: + case 92: + r = "\\" + LL(this.a & ui); + break; + case 12: + r = "\\f"; + break; + case 10: + r = "\\n"; + break; + case 13: + r = "\\r"; + break; + case 9: + r = "\\t"; + break; + case 27: + r = "\\e"; + break; + default: + this.a >= hr ? (i = (t = this.a >>> 0, "0" + t.toString(16)), r = "\\v" + qo(i, i.length - 6, i.length)) : r = "" + LL(this.a & ui); + } + break; + case 8: + this == b0n || this == w0n ? r = "" + LL(this.a & ui) : r = "\\" + LL(this.a & ui); + break; + default: + r = null; + } + return r; + }, o.a = 0, w(p1, "RegEx/Token/CharToken", 228), b(318, 122, uv, Xb), o.Lm = function(e) { + return this.a; + }, o.Nm = function(e) { + this.b = e; + }, o.Om = function(e) { + this.c = e; + }, o.Pm = function() { + return 1; + }, o.Qm = function(e) { + var t; + if (this.e == 3) + if (this.c < 0 && this.b < 0) + t = this.a.Qm(e) + "*"; + else if (this.c == this.b) + t = this.a.Qm(e) + "{" + this.c + "}"; + else if (this.c >= 0 && this.b >= 0) + t = this.a.Qm(e) + "{" + this.c + "," + this.b + "}"; + else if (this.c >= 0 && this.b < 0) + t = this.a.Qm(e) + "{" + this.c + ",}"; + else + throw M(new ec("Token#toString(): CLOSURE " + this.c + ur + this.b)); + else if (this.c < 0 && this.b < 0) + t = this.a.Qm(e) + "*?"; + else if (this.c == this.b) + t = this.a.Qm(e) + "{" + this.c + "}?"; + else if (this.c >= 0 && this.b >= 0) + t = this.a.Qm(e) + "{" + this.c + "," + this.b + "}?"; + else if (this.c >= 0 && this.b < 0) + t = this.a.Qm(e) + "{" + this.c + ",}?"; + else + throw M(new ec("Token#toString(): NONGREEDYCLOSURE " + this.c + ur + this.b)); + return t; + }, o.b = 0, o.c = 0, w(p1, "RegEx/Token/ClosureToken", 318), b(837, 122, uv, PW), o.Lm = function(e) { + return e == 0 ? this.a : this.b; + }, o.Pm = function() { + return 2; + }, o.Qm = function(e) { + var t; + return this.b.e == 3 && this.b.Lm(0) == this.a ? t = this.a.Qm(e) + "+" : this.b.e == 9 && this.b.Lm(0) == this.a ? t = this.a.Qm(e) + "+?" : t = this.a.Qm(e) + ("" + this.b.Qm(e)), t; + }, w(p1, "RegEx/Token/ConcatToken", 837), b(1945, 122, uv, n$n), o.Lm = function(e) { + if (e == 0) + return this.d; + if (e == 1) + return this.b; + throw M(new ec("Internal Error: " + e)); + }, o.Pm = function() { + return this.b ? 2 : 1; + }, o.Qm = function(e) { + var t; + return this.c > 0 ? t = "(?(" + this.c + ")" : this.a.e == 8 ? t = "(?(" + this.a + ")" : t = "(?" + this.a, this.b ? t += this.d + "|" + this.b + ")" : t += this.d + ")", t; + }, o.c = 0, w(p1, "RegEx/Token/ConditionToken", 1945), b(1946, 122, uv, UOn), o.Lm = function(e) { + return this.b; + }, o.Pm = function() { + return 1; + }, o.Qm = function(e) { + return "(?" + (this.a == 0 ? "" : hen(this.a)) + (this.c == 0 ? "" : hen(this.c)) + ":" + this.b.Qm(e) + ")"; + }, o.a = 0, o.c = 0, w(p1, "RegEx/Token/ModifierToken", 1946), b(838, 122, uv, RW), o.Lm = function(e) { + return this.a; + }, o.Pm = function() { + return 1; + }, o.Qm = function(e) { + var t; + switch (t = null, this.e) { + case 6: + this.b == 0 ? t = "(?:" + this.a.Qm(e) + ")" : t = "(" + this.a.Qm(e) + ")"; + break; + case 20: + t = "(?=" + this.a.Qm(e) + ")"; + break; + case 21: + t = "(?!" + this.a.Qm(e) + ")"; + break; + case 22: + t = "(?<=" + this.a.Qm(e) + ")"; + break; + case 23: + t = "(?" + this.a.Qm(e) + ")"; + } + return t; + }, o.b = 0, w(p1, "RegEx/Token/ParenToken", 838), b(530, 122, { 3: 1, 122: 1, 530: 1 }, IN), o.Mm = function() { + return this.b; + }, o.Qm = function(e) { + return this.e == 12 ? "\\" + this.a : pMe(this.b); + }, o.a = 0, w(p1, "RegEx/Token/StringToken", 530), b(477, 122, uv, S6), o.Jm = function(e) { + pd(this, e); + }, o.Lm = function(e) { + return u(k0(this.a, e), 122); + }, o.Pm = function() { + return this.a ? this.a.a.c.length : 0; + }, o.Qm = function(e) { + var t, i, r, c, s; + if (this.e == 1) { + if (this.a.a.c.length == 2) + t = u(k0(this.a, 0), 122), i = u(k0(this.a, 1), 122), i.e == 3 && i.Lm(0) == t ? c = t.Qm(e) + "+" : i.e == 9 && i.Lm(0) == t ? c = t.Qm(e) + "+?" : c = t.Qm(e) + ("" + i.Qm(e)); + else { + for (s = new Hl(), r = 0; r < this.a.a.c.length; r++) + Cr(s, u(k0(this.a, r), 122).Qm(e)); + c = s.a; + } + return c; + } + if (this.a.a.c.length == 2 && u(k0(this.a, 1), 122).e == 7) + c = u(k0(this.a, 0), 122).Qm(e) + "?"; + else if (this.a.a.c.length == 2 && u(k0(this.a, 0), 122).e == 7) + c = u(k0(this.a, 1), 122).Qm(e) + "??"; + else { + for (s = new Hl(), Cr(s, u(k0(this.a, 0), 122).Qm(e)), r = 1; r < this.a.a.c.length; r++) + s.a += "|", Cr(s, u(k0(this.a, r), 122).Qm(e)); + c = s.a; + } + return c; + }, w(p1, "RegEx/Token/UnionToken", 477), b(527, 1, { 600: 1 }, Y9), o.Ib = function() { + return this.a.b; + }, w(QJn, "XMLTypeUtil/PatternMatcherImpl", 527), b(1707, 1527, {}, P5n); + var Ise; + w(QJn, "XMLTypeValidator", 1707), b(270, 1, qh, Qa), o.Jc = function(e) { + qi(this, e); + }, o.Kc = function() { + return (this.b - this.a) * this.c < 0 ? xa : new q1(this); + }, o.a = 0, o.b = 0, o.c = 0; + var xa; + w(run, "ExclusiveRange", 270), b(1084, 1, Hh, I5n), o.Rb = function(e) { + u(e, 17), Yle(); + }, o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return Khe(); + }, o.Ub = function() { + return _he(); + }, o.Wb = function(e) { + u(e, 17), n1e(); + }, o.Ob = function() { + return !1; + }, o.Sb = function() { + return !1; + }, o.Tb = function() { + return -1; + }, o.Vb = function() { + return -1; + }, o.Qb = function() { + throw M(new Kl(nQn)); + }, w(run, "ExclusiveRange/1", 1084), b(258, 1, Hh, q1), o.Rb = function(e) { + u(e, 17), Zle(); + }, o.Nb = function(e) { + _i(this, e); + }, o.Pb = function() { + return X6e(this); + }, o.Ub = function() { + return $4e(this); + }, o.Wb = function(e) { + u(e, 17), e1e(); + }, o.Ob = function() { + return this.c.c < 0 ? this.a >= this.c.b : this.a <= this.c.b; + }, o.Sb = function() { + return this.b > 0; + }, o.Tb = function() { + return this.b; + }, o.Vb = function() { + return this.b - 1; + }, o.Qb = function() { + throw M(new Kl(nQn)); + }, o.a = 0, o.b = 0, w(run, "ExclusiveRange/RangeIterator", 258); + var fs = A4(GS, "C"), ye = A4(y8, "I"), so = A4(i3, "Z"), Fa = A4(j8, "J"), Bu = A4(m8, "B"), Ii = A4(v8, "D"), cg = A4(k8, "F"), V2 = A4(E8, "S"), xNe = xt("org.eclipse.elk.core.labels", "ILabelManager"), v0n = xt(or, "DiagnosticChain"), k0n = xt(SJn, "ResourceSet"), y0n = w(or, "InvocationTargetException", null), Ose = (HE(), J3e), Dse = Dse = _ke; + qme(Rfe), Rme("permProps", [[["locale", "default"], [eQn, "gecko1_8"]], [["locale", "default"], [eQn, "safari"]]]), Dse(null, "elk", null); + }).call(this); + }).call(this, typeof $se != "undefined" ? $se : typeof self != "undefined" ? self : typeof window != "undefined" ? window : {}); + }, {}], 3: [function(Nt, wt, dr) { + function Ai(Jt, Xe) { + if (!(Jt instanceof Xe)) + throw new TypeError("Cannot call a class as a function"); + } + function y(Jt, Xe) { + if (!Jt) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return Xe && (typeof Xe == "object" || typeof Xe == "function") ? Xe : Jt; + } + function Bt(Jt, Xe) { + if (typeof Xe != "function" && Xe !== null) + throw new TypeError("Super expression must either be null or a function, not " + typeof Xe); + Jt.prototype = Object.create(Xe && Xe.prototype, { constructor: { value: Jt, enumerable: !1, writable: !0, configurable: !0 } }), Xe && (Object.setPrototypeOf ? Object.setPrototypeOf(Jt, Xe) : Jt.__proto__ = Xe); + } + var mc = Nt("./elk-api.js").default, $t = function(Jt) { + Bt(Xe, Jt); + function Xe() { + var Yi = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + Ai(this, Xe); + var Ri = Object.assign({}, Yi), En = !1; + try { + Nt.resolve("web-worker"), En = !0; + } catch (Pr) { + } + if (Yi.workerUrl) + if (En) { + var lu = Nt("web-worker"); + Ri.workerFactory = function(Pr) { + return new lu(Pr); + }; + } else + console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`); + if (!Ri.workerFactory) { + var Yc = Nt("./elk-worker.min.js"), Ru = Yc.Worker; + Ri.workerFactory = function(Pr) { + return new Ru(Pr); + }; + } + return y(this, (Xe.__proto__ || Object.getPrototypeOf(Xe)).call(this, Ri)); + } + return Xe; + }(mc); + Object.defineProperty(wt.exports, "__esModule", { + value: !0 + }), wt.exports = $t, $t.default = $t; + }, { "./elk-api.js": 1, "./elk-worker.min.js": 2, "web-worker": 4 }], 4: [function(Nt, wt, dr) { + wt.exports = Worker; + }, {}] }, {}, [3])(3); + }); +})(Rse); +var WNe = Rse.exports; +const JNe = /* @__PURE__ */ RNe(WNe), QNe = (et, Ft, Nt) => { + const { parentById: wt } = Nt, dr = /* @__PURE__ */ new Set(); + let Ai = et; + for (; Ai; ) { + if (dr.add(Ai), Ai === Ft) + return Ai; + Ai = wt[Ai]; + } + for (Ai = Ft; Ai; ) { + if (dr.has(Ai)) + return Ai; + Ai = wt[Ai]; + } + return "root"; +}, xse = new JNe(); +let Ab = {}; +const YNe = {}; +let X3 = {}; +const ZNe = function(et, Ft, Nt, wt, dr, Ai, y) { + return NU(this, null, function* () { + const mc = Nt.select(`[id="${Ft}"]`).insert("g").attr("class", "nodes"), $t = Object.keys(et); + return yield Promise.all( + $t.map(function(Jt) { + return NU(this, null, function* () { + const Xe = et[Jt]; + let Yi = "default"; + Xe.classes.length > 0 && (Yi = Xe.classes.join(" ")), Yi = Yi + " flowchart-label"; + const Ri = C0n(Xe.styles); + let En = Xe.text !== void 0 ? Xe.text : Xe.id; + const lu = { width: 0, height: 0 }, Yc = [ + { + id: Xe.id + "-west", + layoutOptions: { + "port.side": "WEST" + } + }, + { + id: Xe.id + "-east", + layoutOptions: { + "port.side": "EAST" + } + }, + { + id: Xe.id + "-south", + layoutOptions: { + "port.side": "SOUTH" + } + }, + { + id: Xe.id + "-north", + layoutOptions: { + "port.side": "NORTH" + } + } + ]; + let Ru = 0, Pr = "", Mf = {}; + switch (Xe.type) { + case "round": + Ru = 5, Pr = "rect"; + break; + case "square": + Pr = "rect"; + break; + case "diamond": + Pr = "question", Mf = { + portConstraints: "FIXED_SIDE" + }; + break; + case "hexagon": + Pr = "hexagon"; + break; + case "odd": + Pr = "rect_left_inv_arrow"; + break; + case "lean_right": + Pr = "lean_right"; + break; + case "lean_left": + Pr = "lean_left"; + break; + case "trapezoid": + Pr = "trapezoid"; + break; + case "inv_trapezoid": + Pr = "inv_trapezoid"; + break; + case "odd_right": + Pr = "rect_left_inv_arrow"; + break; + case "circle": + Pr = "circle"; + break; + case "ellipse": + Pr = "ellipse"; + break; + case "stadium": + Pr = "stadium"; + break; + case "subroutine": + Pr = "subroutine"; + break; + case "cylinder": + Pr = "cylinder"; + break; + case "group": + Pr = "rect"; + break; + case "doublecircle": + Pr = "doublecircle"; + break; + default: + Pr = "rect"; + } + const L1 = { + labelStyle: Ri.labelStyle, + shape: Pr, + labelText: En, + labelType: Xe.labelType, + rx: Ru, + ry: Ru, + class: Yi, + style: Ri.style, + id: Xe.id, + link: Xe.link, + linkTarget: Xe.linkTarget, + tooltip: dr.db.getTooltip(Xe.id) || "", + domId: dr.db.lookUpDomId(Xe.id), + haveCallback: Xe.haveCallback, + width: Xe.type === "group" ? 500 : void 0, + dir: Xe.dir, + type: Xe.type, + props: Xe.props, + padding: FU().flowchart.padding + }; + let N1, og; + if (L1.type !== "group") + og = yield qNe(mc, L1, Xe.dir), N1 = og.node().getBBox(); + else { + wt.createElementNS("http://www.w3.org/2000/svg", "text"); + const { shapeSvg: $1, bbox: ul } = yield UNe(mc, L1, void 0, !0); + lu.width = ul.width, lu.wrappingWidth = FU().flowchart.wrappingWidth, lu.height = ul.height, lu.labelNode = $1.node(), L1.labelData = lu; + } + const V3 = { + id: Xe.id, + ports: Xe.type === "diamond" ? Yc : [], + // labelStyle: styles.labelStyle, + // shape: _shape, + layoutOptions: Mf, + labelText: En, + labelData: lu, + // labels: [{ text: vertexText }], + // rx: radius, + // ry: radius, + // class: classStr, + // style: styles.style, + // link: vertex.link, + // linkTarget: vertex.linkTarget, + // tooltip: diagObj.db.getTooltip(vertex.id) || '', + domId: dr.db.lookUpDomId(Xe.id), + // haveCallback: vertex.haveCallback, + width: N1 == null ? void 0 : N1.width, + height: N1 == null ? void 0 : N1.height, + // dir: vertex.dir, + type: Xe.type, + // props: vertex.props, + // padding: getConfig().flowchart.padding, + // boundingBox, + el: og, + parent: Ai.parentById[Xe.id] + }; + X3[L1.id] = V3; + }); + }) + ), y; + }); +}, Fse = (et, Ft, Nt) => { + const wt = { + TB: { + in: { + north: "north" + }, + out: { + south: "west", + west: "east", + east: "south" + } + }, + LR: { + in: { + west: "west" + }, + out: { + east: "south", + south: "north", + north: "east" + } + }, + RL: { + in: { + east: "east" + }, + out: { + west: "north", + north: "south", + south: "west" + } + }, + BT: { + in: { + south: "south" + }, + out: { + north: "east", + east: "west", + west: "north" + } + } + }; + return wt.TD = wt.TB, wt[Nt][Ft][et]; +}, Bse = (et, Ft, Nt) => { + if (Ra.info("getNextPort", { node: et, edgeDirection: Ft, graphDirection: Nt }), !Ab[et]) + switch (Nt) { + case "TB": + case "TD": + Ab[et] = { + inPosition: "north", + outPosition: "south" + }; + break; + case "BT": + Ab[et] = { + inPosition: "south", + outPosition: "north" + }; + break; + case "RL": + Ab[et] = { + inPosition: "east", + outPosition: "west" + }; + break; + case "LR": + Ab[et] = { + inPosition: "west", + outPosition: "east" + }; + break; + } + const wt = Ft === "in" ? Ab[et].inPosition : Ab[et].outPosition; + return Ft === "in" ? Ab[et].inPosition = Fse( + Ab[et].inPosition, + Ft, + Nt + ) : Ab[et].outPosition = Fse( + Ab[et].outPosition, + Ft, + Nt + ), wt; +}, n$e = (et, Ft) => { + let Nt = et.start, wt = et.end; + const dr = Nt, Ai = wt, y = X3[Nt], Bt = X3[wt]; + return !y || !Bt ? { source: Nt, target: wt } : (y.type === "diamond" && (Nt = `${Nt}-${Bse(Nt, "out", Ft)}`), Bt.type === "diamond" && (wt = `${wt}-${Bse(wt, "in", Ft)}`), { source: Nt, target: wt, sourceId: dr, targetId: Ai }); +}, e$e = function(et, Ft, Nt, wt) { + Ra.info("abc78 edges = ", et); + const dr = wt.insert("g").attr("class", "edgeLabels"); + let Ai = {}, y = Ft.db.getDirection(), Bt, mc; + if (et.defaultStyle !== void 0) { + const $t = C0n(et.defaultStyle); + Bt = $t.style, mc = $t.labelStyle; + } + return et.forEach(function($t) { + const Jt = "L-" + $t.start + "-" + $t.end; + Ai[Jt] === void 0 ? (Ai[Jt] = 0, Ra.info("abc78 new entry", Jt, Ai[Jt])) : (Ai[Jt]++, Ra.info("abc78 new entry", Jt, Ai[Jt])); + let Xe = Jt + "-" + Ai[Jt]; + Ra.info("abc78 new link id to be used is", Jt, Xe, Ai[Jt]); + const Yi = "LS-" + $t.start, Ri = "LE-" + $t.end, En = { style: "", labelStyle: "" }; + switch (En.minlen = $t.length || 1, $t.type === "arrow_open" ? En.arrowhead = "none" : En.arrowhead = "normal", En.arrowTypeStart = "arrow_open", En.arrowTypeEnd = "arrow_open", $t.type) { + case "double_arrow_cross": + En.arrowTypeStart = "arrow_cross"; + case "arrow_cross": + En.arrowTypeEnd = "arrow_cross"; + break; + case "double_arrow_point": + En.arrowTypeStart = "arrow_point"; + case "arrow_point": + En.arrowTypeEnd = "arrow_point"; + break; + case "double_arrow_circle": + En.arrowTypeStart = "arrow_circle"; + case "arrow_circle": + En.arrowTypeEnd = "arrow_circle"; + break; + } + let lu = "", Yc = ""; + switch ($t.stroke) { + case "normal": + lu = "fill:none;", Bt !== void 0 && (lu = Bt), mc !== void 0 && (Yc = mc), En.thickness = "normal", En.pattern = "solid"; + break; + case "dotted": + En.thickness = "normal", En.pattern = "dotted", En.style = "fill:none;stroke-width:2px;stroke-dasharray:3;"; + break; + case "thick": + En.thickness = "thick", En.pattern = "solid", En.style = "stroke-width: 3.5px;fill:none;"; + break; + } + if ($t.style !== void 0) { + const og = C0n($t.style); + lu = og.style, Yc = og.labelStyle; + } + En.style = En.style += lu, En.labelStyle = En.labelStyle += Yc, $t.interpolate !== void 0 ? En.curve = E0n($t.interpolate, xU) : et.defaultInterpolate !== void 0 ? En.curve = E0n(et.defaultInterpolate, xU) : En.curve = E0n(YNe.curve, xU), $t.text === void 0 ? $t.style !== void 0 && (En.arrowheadStyle = "fill: #333") : (En.arrowheadStyle = "fill: #333", En.labelpos = "c"), En.labelType = $t.labelType, En.label = $t.text.replace(_Ne.lineBreakRegex, ` +`), $t.style === void 0 && (En.style = En.style || "stroke: #333; stroke-width: 1.5px;fill:none;"), En.labelStyle = En.labelStyle.replace("color:", "fill:"), En.id = Xe, En.classes = "flowchart-link " + Yi + " " + Ri; + const Ru = GNe(dr, En), { source: Pr, target: Mf, sourceId: L1, targetId: N1 } = n$e($t, y); + Ra.debug("abc78 source and target", Pr, Mf), Nt.edges.push({ + id: "e" + $t.start + $t.end, + sources: [Pr], + targets: [Mf], + sourceId: L1, + targetId: N1, + labelEl: Ru, + labels: [ + { + width: En.width, + height: En.height, + orgWidth: En.width, + orgHeight: En.height, + text: En.label, + layoutOptions: { + "edgeLabels.inline": "true", + "edgeLabels.placement": "CENTER" + } + } + ], + edgeData: En + }); + }), Nt; +}, t$e = function(et, Ft, Nt, wt, dr) { + let Ai = ""; + wt && (Ai = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, Ai = Ai.replace(/\(/g, "\\("), Ai = Ai.replace(/\)/g, "\\)")), XNe(et, Ft, Ai, dr, Nt); +}, i$e = function(et, Ft) { + return Ra.info("Extracting classes"), Ft.db.getClasses(); +}, r$e = function(et) { + const Ft = { parentById: {}, childrenById: {} }, Nt = et.getSubGraphs(); + return Ra.info("Subgraphs - ", Nt), Nt.forEach(function(wt) { + wt.nodes.forEach(function(dr) { + Ft.parentById[dr] = wt.id, Ft.childrenById[wt.id] === void 0 && (Ft.childrenById[wt.id] = []), Ft.childrenById[wt.id].push(dr); + }); + }), Nt.forEach(function(wt) { + wt.id, Ft.parentById[wt.id] !== void 0 && Ft.parentById[wt.id]; + }), Ft; +}, c$e = function(et, Ft, Nt) { + const wt = QNe(et, Ft, Nt); + if (wt === void 0 || wt === "root") + return { x: 0, y: 0 }; + const dr = X3[wt].offset; + return { x: dr.posX, y: dr.posY }; +}, u$e = function(et, Ft, Nt, wt, dr, Ai) { + const y = c$e(Ft.sourceId, Ft.targetId, dr), Bt = Ft.sections[0].startPoint, mc = Ft.sections[0].endPoint, Jt = (Ft.sections[0].bendPoints ? Ft.sections[0].bendPoints : []).map((Mf) => [Mf.x + y.x, Mf.y + y.y]), Xe = [ + [Bt.x + y.x, Bt.y + y.y], + ...Jt, + [mc.x + y.x, mc.y + y.y] + ], { x: Yi, y: Ri } = zNe(Ft.edgeData), En = VNe().x(Yi).y(Ri).curve(xU), lu = et.insert("path").attr("d", En(Xe)).attr("class", "path " + Nt.classes).attr("fill", "none"), Yc = et.insert("g").attr("class", "edgeLabel"), Ru = IO(Yc.node().appendChild(Ft.labelEl)), Pr = Ru.node().firstChild.getBoundingClientRect(); + Ru.attr("width", Pr.width), Ru.attr("height", Pr.height), Yc.attr( + "transform", + `translate(${Ft.labels[0].x + y.x}, ${Ft.labels[0].y + y.y})` + ), t$e(lu, Nt, wt.type, wt.arrowMarkerAbsolute, Ai); +}, Kse = (et, Ft) => { + et.forEach((Nt) => { + Nt.children || (Nt.children = []); + const wt = Ft.childrenById[Nt.id]; + wt && wt.forEach((dr) => { + Nt.children.push(X3[dr]); + }), Kse(Nt.children, Ft); + }); +}, o$e = function(et, Ft, Nt, wt) { + return NU(this, null, function* () { + var dr; + wt.db.clear(), X3 = {}, Ab = {}, wt.db.setGen("gen-2"), wt.parser.parse(et); + const Ai = IO("body").append("div").attr("style", "height:400px").attr("id", "cy"); + let y = { + id: "root", + layoutOptions: { + "elk.hierarchyHandling": "INCLUDE_CHILDREN", + "org.eclipse.elk.padding": "[top=100, left=100, bottom=110, right=110]", + "elk.layered.spacing.edgeNodeBetweenLayers": "30", + // 'elk.layered.mergeEdges': 'true', + "elk.direction": "DOWN" + // 'elk.ports.sameLayerEdges': true, + // 'nodePlacement.strategy': 'SIMPLE', + }, + children: [], + edges: [] + }; + switch (Ra.info("Drawing flowchart using v3 renderer", xse), wt.db.getDirection()) { + case "BT": + y.layoutOptions["elk.direction"] = "UP"; + break; + case "TB": + y.layoutOptions["elk.direction"] = "DOWN"; + break; + case "LR": + y.layoutOptions["elk.direction"] = "RIGHT"; + break; + case "RL": + y.layoutOptions["elk.direction"] = "LEFT"; + break; + } + const { securityLevel: mc, flowchart: $t } = FU(); + let Jt; + mc === "sandbox" && (Jt = IO("#i" + Ft)); + const Xe = mc === "sandbox" ? IO(Jt.nodes()[0].contentDocument.body) : IO("body"), Yi = mc === "sandbox" ? Jt.nodes()[0].contentDocument : document, Ri = Xe.select(`[id="${Ft}"]`); + HNe(Ri, ["point", "circle", "cross"], wt.type, Ft); + const lu = wt.db.getVertices(); + let Yc; + const Ru = wt.db.getSubGraphs(); + Ra.info("Subgraphs - ", Ru); + for (let $1 = Ru.length - 1; $1 >= 0; $1--) + Yc = Ru[$1], wt.db.addVertex( + Yc.id, + { text: Yc.title, type: Yc.labelType }, + "group", + void 0, + Yc.classes, + Yc.dir + ); + const Pr = Ri.insert("g").attr("class", "subgraphs"), Mf = r$e(wt.db); + y = yield ZNe(lu, Ft, Xe, Yi, wt, Mf, y); + const L1 = Ri.insert("g").attr("class", "edges edgePath"), N1 = wt.db.getEdges(); + y = e$e(N1, wt, y, Ri), Object.keys(X3).forEach(($1) => { + const ul = X3[$1]; + ul.parent || y.children.push(ul), Mf.childrenById[$1] !== void 0 && (ul.labels = [ + { + text: ul.labelText, + layoutOptions: { + "nodeLabels.placement": "[H_CENTER, V_TOP, INSIDE]" + }, + width: ul.labelData.width, + height: ul.labelData.height + // width: 100, + // height: 100, + } + ], delete ul.x, delete ul.y, delete ul.width, delete ul.height); + }), Kse(y.children, Mf), Ra.info("after layout", JSON.stringify(y, null, 2)); + const V3 = yield xse.layout(y); + _se(0, 0, V3.children, Ri, Pr, wt, 0), Ra.info("after layout", V3), (dr = V3.edges) == null || dr.map(($1) => { + u$e(L1, $1, $1.edgeData, wt, Mf, Ft); + }), KNe({}, Ri, $t.diagramPadding, $t.useMaxWidth), Ai.remove(); + }); +}, _se = (et, Ft, Nt, wt, dr, Ai, y) => { + Nt.forEach(function(Bt) { + if (Bt) + if (X3[Bt.id].offset = { + posX: Bt.x + et, + posY: Bt.y + Ft, + x: et, + y: Ft, + depth: y, + width: Bt.width, + height: Bt.height + }, Bt.type === "group") { + const mc = dr.insert("g").attr("class", "subgraph"); + mc.insert("rect").attr("class", "subgraph subgraph-lvl-" + y % 5 + " node").attr("x", Bt.x + et).attr("y", Bt.y + Ft).attr("width", Bt.width).attr("height", Bt.height); + const $t = mc.insert("g").attr("class", "label"), Jt = FU().flowchart.htmlLabels ? Bt.labelData.width / 2 : 0; + $t.attr( + "transform", + `translate(${Bt.labels[0].x + et + Bt.x + Jt}, ${Bt.labels[0].y + Ft + Bt.y + 3})` + ), $t.node().appendChild(Bt.labelData.labelNode), Ra.info("Id (UGH)= ", Bt.type, Bt.labels); + } else + Ra.info("Id (UGH)= ", Bt.id), Bt.el.attr( + "transform", + `translate(${Bt.x + et + Bt.width / 2}, ${Bt.y + Ft + Bt.height / 2})` + ); + }), Nt.forEach(function(Bt) { + Bt && Bt.type === "group" && _se(et + Bt.x, Ft + Bt.y, Bt.children, wt, dr, Ai, y + 1); + }); +}, s$e = { + getClasses: i$e, + draw: o$e +}, f$e = (et) => { + let Ft = ""; + for (let Nt = 0; Nt < 5; Nt++) + Ft += ` + .subgraph-lvl-${Nt} { + fill: ${et[`surface${Nt}`]}; + stroke: ${et[`surfacePeer${Nt}`]}; + } + `; + return Ft; +}, h$e = (et) => `.label { + font-family: ${et.fontFamily}; + color: ${et.nodeTextColor || et.textColor}; + } + .cluster-label text { + fill: ${et.titleColor}; + } + .cluster-label span { + color: ${et.titleColor}; + } + + .label text,span { + fill: ${et.nodeTextColor || et.textColor}; + color: ${et.nodeTextColor || et.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${et.mainBkg}; + stroke: ${et.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${et.arrowheadColor}; + } + + .edgePath .path { + stroke: ${et.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${et.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${et.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${et.edgeLabelBackground}; + fill: ${et.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${et.clusterBkg}; + stroke: ${et.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${et.titleColor}; + } + + .cluster span { + color: ${et.titleColor}; + } + /* .cluster div { + color: ${et.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${et.fontFamily}; + font-size: 12px; + background: ${et.tertiaryColor}; + border: 1px solid ${et.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${et.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${f$e(et)} +`, l$e = h$e, k$e = { + db: FNe, + renderer: s$e, + parser: BNe, + styles: l$e +}; +export { + k$e as diagram +}; diff --git a/client/packages/lowcoder/public/package/8e8be6e8.js b/client/packages/lowcoder/public/package/8e8be6e8.js new file mode 100644 index 000000000..6276cdbbd --- /dev/null +++ b/client/packages/lowcoder/public/package/8e8be6e8.js @@ -0,0 +1,34 @@ +import { a as h } from "./2ff2c7a6.js"; +import { w as d, c as o } from "./256b619e.js"; +import { p as v } from "./08856db2.js"; +function w(t) { + return t[0]; +} +function b(t) { + return t[1]; +} +function P(t, u) { + var p = o(!0), i = null, l = v, r = null, m = d(e); + t = typeof t == "function" ? t : t === void 0 ? w : o(t), u = typeof u == "function" ? u : u === void 0 ? b : o(u); + function e(n) { + var f, g = (n = h(n)).length, s, c = !1, a; + for (i == null && (r = l(a = m())), f = 0; f <= g; ++f) + !(f < g && p(s = n[f], f, n)) === c && ((c = !c) ? r.lineStart() : r.lineEnd()), c && r.point(+t(s, f, n), +u(s, f, n)); + if (a) + return r = null, a + "" || null; + } + return e.x = function(n) { + return arguments.length ? (t = typeof n == "function" ? n : o(+n), e) : t; + }, e.y = function(n) { + return arguments.length ? (u = typeof n == "function" ? n : o(+n), e) : u; + }, e.defined = function(n) { + return arguments.length ? (p = typeof n == "function" ? n : o(!!n), e) : p; + }, e.curve = function(n) { + return arguments.length ? (l = n, i != null && (r = l(i)), e) : l; + }, e.context = function(n) { + return arguments.length ? (n == null ? i = r = null : r = l(i = n), e) : i; + }, e; +} +export { + P as l +}; diff --git a/client/packages/lowcoder/public/package/92e85b65.js b/client/packages/lowcoder/public/package/92e85b65.js new file mode 100644 index 000000000..8d81ace98 --- /dev/null +++ b/client/packages/lowcoder/public/package/92e85b65.js @@ -0,0 +1,65 @@ +import { i as a } from "./f9637058.js"; +class o extends Map { + constructor(n, t = g) { + if (super(), Object.defineProperties(this, { _intern: { value: /* @__PURE__ */ new Map() }, _key: { value: t } }), n != null) + for (const [r, s] of n) + this.set(r, s); + } + get(n) { + return super.get(c(this, n)); + } + has(n) { + return super.has(c(this, n)); + } + set(n, t) { + return super.set(l(this, n), t); + } + delete(n) { + return super.delete(p(this, n)); + } +} +function c({ _intern: e, _key: n }, t) { + const r = n(t); + return e.has(r) ? e.get(r) : t; +} +function l({ _intern: e, _key: n }, t) { + const r = n(t); + return e.has(r) ? e.get(r) : (e.set(r, t), t); +} +function p({ _intern: e, _key: n }, t) { + const r = n(t); + return e.has(r) && (t = e.get(r), e.delete(r)), t; +} +function g(e) { + return e !== null && typeof e == "object" ? e.valueOf() : e; +} +const f = Symbol("implicit"); +function h() { + var e = new o(), n = [], t = [], r = f; + function s(u) { + let i = e.get(u); + if (i === void 0) { + if (r !== f) + return r; + e.set(u, i = n.push(u) - 1); + } + return t[i % t.length]; + } + return s.domain = function(u) { + if (!arguments.length) + return n.slice(); + n = [], e = new o(); + for (const i of u) + e.has(i) || e.set(i, n.push(i) - 1); + return s; + }, s.range = function(u) { + return arguments.length ? (t = Array.from(u), s) : t.slice(); + }, s.unknown = function(u) { + return arguments.length ? (r = u, s) : r; + }, s.copy = function() { + return h(n, t).unknown(r); + }, a.apply(s, arguments), s; +} +export { + h as o +}; diff --git a/client/packages/lowcoder/public/package/cb6c34e7.js b/client/packages/lowcoder/public/package/cb6c34e7.js new file mode 100644 index 000000000..7f1527982 --- /dev/null +++ b/client/packages/lowcoder/public/package/cb6c34e7.js @@ -0,0 +1,268 @@ +import { p as P, d as N, s as W } from "./888e22ae.js"; +import { e as t, j as H, l as b, k as R, m as T, I as v, C } from "./08856db2.js"; +import { G as U } from "./4504d077.js"; +import { l as F } from "./666097a3.js"; +import { l as $ } from "./8e8be6e8.js"; +import "./2ff2c7a6.js"; +import "./256b619e.js"; +const O = (e) => e.append("circle").attr("class", "start-state").attr("r", t().state.sizeUnit).attr("cx", t().state.padding + t().state.sizeUnit).attr("cy", t().state.padding + t().state.sizeUnit), X = (e) => e.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", t().state.textHeight).attr("class", "divider").attr("x2", t().state.textHeight * 2).attr("y1", 0).attr("y2", 0), I = (e, i) => { + const o = e.append("text").attr("x", 2 * t().state.padding).attr("y", t().state.textHeight + 2 * t().state.padding).attr("font-size", t().state.fontSize).attr("class", "state-title").text(i.id), c = o.node().getBBox(); + return e.insert("rect", ":first-child").attr("x", t().state.padding).attr("y", t().state.padding).attr("width", c.width + 2 * t().state.padding).attr("height", c.height + 2 * t().state.padding).attr("rx", t().state.radius), o; +}, J = (e, i) => { + const o = function(l, m, w) { + const E = l.append("tspan").attr("x", 2 * t().state.padding).text(m); + w || E.attr("dy", t().state.textHeight); + }, s = e.append("text").attr("x", 2 * t().state.padding).attr("y", t().state.textHeight + 1.3 * t().state.padding).attr("font-size", t().state.fontSize).attr("class", "state-title").text(i.descriptions[0]).node().getBBox(), g = s.height, p = e.append("text").attr("x", t().state.padding).attr( + "y", + g + t().state.padding * 0.4 + t().state.dividerMargin + t().state.textHeight + ).attr("class", "state-description"); + let a = !0, r = !0; + i.descriptions.forEach(function(l) { + a || (o(p, l, r), r = !1), a = !1; + }); + const y = e.append("line").attr("x1", t().state.padding).attr("y1", t().state.padding + g + t().state.dividerMargin / 2).attr("y2", t().state.padding + g + t().state.dividerMargin / 2).attr("class", "descr-divider"), x = p.node().getBBox(), d = Math.max(x.width, s.width); + return y.attr("x2", d + 3 * t().state.padding), e.insert("rect", ":first-child").attr("x", t().state.padding).attr("y", t().state.padding).attr("width", d + 2 * t().state.padding).attr("height", x.height + g + 2 * t().state.padding).attr("rx", t().state.radius), e; +}, Y = (e, i, o) => { + const c = t().state.padding, s = 2 * t().state.padding, g = e.node().getBBox(), p = g.width, a = g.x, r = e.append("text").attr("x", 0).attr("y", t().state.titleShift).attr("font-size", t().state.fontSize).attr("class", "state-title").text(i.id), x = r.node().getBBox().width + s; + let d = Math.max(x, p); + d === p && (d = d + s); + let l; + const m = e.node().getBBox(); + i.doc, l = a - c, x > p && (l = (p - d) / 2 + c), Math.abs(a - m.x) < c && x > p && (l = a - (x - p) / 2); + const w = 1 - t().state.textHeight; + return e.insert("rect", ":first-child").attr("x", l).attr("y", w).attr("class", o ? "alt-composit" : "composit").attr("width", d).attr( + "height", + m.height + t().state.textHeight + t().state.titleShift + 1 + ).attr("rx", "0"), r.attr("x", l + c), x <= p && r.attr("x", a + (d - s) / 2 - x / 2 + c), e.insert("rect", ":first-child").attr("x", l).attr( + "y", + t().state.titleShift - t().state.textHeight - t().state.padding + ).attr("width", d).attr("height", t().state.textHeight * 3).attr("rx", t().state.radius), e.insert("rect", ":first-child").attr("x", l).attr( + "y", + t().state.titleShift - t().state.textHeight - t().state.padding + ).attr("width", d).attr("height", m.height + 3 + 2 * t().state.textHeight).attr("rx", t().state.radius), e; +}, _ = (e) => (e.append("circle").attr("class", "end-state-outer").attr("r", t().state.sizeUnit + t().state.miniPadding).attr( + "cx", + t().state.padding + t().state.sizeUnit + t().state.miniPadding +).attr( + "cy", + t().state.padding + t().state.sizeUnit + t().state.miniPadding +), e.append("circle").attr("class", "end-state-inner").attr("r", t().state.sizeUnit).attr("cx", t().state.padding + t().state.sizeUnit + 2).attr("cy", t().state.padding + t().state.sizeUnit + 2)), q = (e, i) => { + let o = t().state.forkWidth, c = t().state.forkHeight; + if (i.parentId) { + let s = o; + o = c, c = s; + } + return e.append("rect").style("stroke", "black").style("fill", "black").attr("width", o).attr("height", c).attr("x", t().state.padding).attr("y", t().state.padding); +}, Z = (e, i, o, c) => { + let s = 0; + const g = c.append("text"); + g.style("text-anchor", "start"), g.attr("class", "noteText"); + let p = e.replace(/\r\n/g, "
        "); + p = p.replace(/\n/g, "
        "); + const a = p.split(T.lineBreakRegex); + let r = 1.25 * t().state.noteMargin; + for (const y of a) { + const x = y.trim(); + if (x.length > 0) { + const d = g.append("tspan"); + if (d.text(x), r === 0) { + const l = d.node().getBBox(); + r += l.height; + } + s += r, d.attr("x", i + t().state.noteMargin), d.attr("y", o + s + 1.25 * t().state.noteMargin); + } + } + return { textWidth: g.node().getBBox().width, textHeight: s }; +}, j = (e, i) => { + i.attr("class", "state-note"); + const o = i.append("rect").attr("x", 0).attr("y", t().state.padding), c = i.append("g"), { textWidth: s, textHeight: g } = Z(e, 0, 0, c); + return o.attr("height", g + 2 * t().state.noteMargin), o.attr("width", s + t().state.noteMargin * 2), o; +}, L = function(e, i) { + const o = i.id, c = { + id: o, + label: i.id, + width: 0, + height: 0 + }, s = e.append("g").attr("id", o).attr("class", "stateGroup"); + i.type === "start" && O(s), i.type === "end" && _(s), (i.type === "fork" || i.type === "join") && q(s, i), i.type === "note" && j(i.note.text, s), i.type === "divider" && X(s), i.type === "default" && i.descriptions.length === 0 && I(s, i), i.type === "default" && i.descriptions.length > 0 && J(s, i); + const g = s.node().getBBox(); + return c.width = g.width + 2 * t().state.padding, c.height = g.height + 2 * t().state.padding, c; +}; +let G = 0; +const K = function(e, i, o) { + const c = function(r) { + switch (r) { + case N.relationType.AGGREGATION: + return "aggregation"; + case N.relationType.EXTENSION: + return "extension"; + case N.relationType.COMPOSITION: + return "composition"; + case N.relationType.DEPENDENCY: + return "dependency"; + } + }; + i.points = i.points.filter((r) => !Number.isNaN(r.y)); + const s = i.points, g = $().x(function(r) { + return r.x; + }).y(function(r) { + return r.y; + }).curve(v), p = e.append("path").attr("d", g(s)).attr("id", "edge" + G).attr("class", "transition"); + let a = ""; + if (t().state.arrowMarkerAbsolute && (a = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, a = a.replace(/\(/g, "\\("), a = a.replace(/\)/g, "\\)")), p.attr( + "marker-end", + "url(" + a + "#" + c(N.relationType.DEPENDENCY) + "End)" + ), o.title !== void 0) { + const r = e.append("g").attr("class", "stateLabel"), { x: y, y: x } = C.calcLabelPosition(i.points), d = T.getRows(o.title); + let l = 0; + const m = []; + let w = 0, E = 0; + for (let u = 0; u <= d.length; u++) { + const h = r.append("text").attr("text-anchor", "middle").text(d[u]).attr("x", y).attr("y", x + l), f = h.node().getBBox(); + w = Math.max(w, f.width), E = Math.min(E, f.x), b.info(f.x, y, x + l), l === 0 && (l = h.node().getBBox().height, b.info("Title height", l, x)), m.push(h); + } + let k = l * d.length; + if (d.length > 1) { + const u = (d.length - 1) * l * 0.5; + m.forEach((h, f) => h.attr("y", x + f * l - u)), k = l * d.length; + } + const n = r.node().getBBox(); + r.insert("rect", ":first-child").attr("class", "box").attr("x", y - w / 2 - t().state.padding / 2).attr("y", x - k / 2 - t().state.padding / 2 - 3.5).attr("width", w + t().state.padding).attr("height", k + t().state.padding), b.info(n); + } + G++; +}; +let B; +const z = {}, Q = function() { +}, V = function(e) { + e.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z"); +}, D = function(e, i, o, c) { + B = t().state; + const s = t().securityLevel; + let g; + s === "sandbox" && (g = H("#i" + i)); + const p = s === "sandbox" ? H(g.nodes()[0].contentDocument.body) : H("body"), a = s === "sandbox" ? g.nodes()[0].contentDocument : document; + b.debug("Rendering diagram " + e); + const r = p.select(`[id='${i}']`); + V(r); + const y = c.db.getRootDoc(); + A(y, r, void 0, !1, p, a, c); + const x = B.padding, d = r.node().getBBox(), l = d.width + x * 2, m = d.height + x * 2, w = l * 1.75; + R(r, m, w, B.useMaxWidth), r.attr( + "viewBox", + `${d.x - B.padding} ${d.y - B.padding} ` + l + " " + m + ); +}, tt = (e) => e ? e.length * B.fontSizeFactor : 1, A = (e, i, o, c, s, g, p) => { + const a = new U({ + compound: !0, + multigraph: !0 + }); + let r, y = !0; + for (r = 0; r < e.length; r++) + if (e[r].stmt === "relation") { + y = !1; + break; + } + o ? a.setGraph({ + rankdir: "LR", + multigraph: !0, + compound: !0, + // acyclicer: 'greedy', + ranker: "tight-tree", + ranksep: y ? 1 : B.edgeLengthFactor, + nodeSep: y ? 1 : 50, + isMultiGraph: !0 + // ranksep: 5, + // nodesep: 1 + }) : a.setGraph({ + rankdir: "TB", + multigraph: !0, + compound: !0, + // isCompound: true, + // acyclicer: 'greedy', + // ranker: 'longest-path' + ranksep: y ? 1 : B.edgeLengthFactor, + nodeSep: y ? 1 : 50, + ranker: "tight-tree", + // ranker: 'network-simplex' + isMultiGraph: !0 + }), a.setDefaultEdgeLabel(function() { + return {}; + }), p.db.extract(e); + const x = p.db.getStates(), d = p.db.getRelations(), l = Object.keys(x); + for (const n of l) { + const u = x[n]; + o && (u.parentId = o); + let h; + if (u.doc) { + let f = i.append("g").attr("id", u.id).attr("class", "stateGroup"); + h = A(u.doc, f, u.id, !c, s, g, p); + { + f = Y(f, u, c); + let S = f.node().getBBox(); + h.width = S.width, h.height = S.height + B.padding / 2, z[u.id] = { y: B.compositTitleSize }; + } + } else + h = L(i, u); + if (u.note) { + const f = { + descriptions: [], + id: u.id + "-note", + note: u.note, + type: "note" + }, S = L(i, f); + u.note.position === "left of" ? (a.setNode(h.id + "-note", S), a.setNode(h.id, h)) : (a.setNode(h.id, h), a.setNode(h.id + "-note", S)), a.setParent(h.id, h.id + "-group"), a.setParent(h.id + "-note", h.id + "-group"); + } else + a.setNode(h.id, h); + } + b.debug("Count=", a.nodeCount(), a); + let m = 0; + d.forEach(function(n) { + m++, b.debug("Setting edge", n), a.setEdge( + n.id1, + n.id2, + { + relation: n, + width: tt(n.title), + height: B.labelHeight * T.getRows(n.title).length, + labelpos: "c" + }, + "id" + m + ); + }), F(a), b.debug("Graph after layout", a.nodes()); + const w = i.node(); + a.nodes().forEach(function(n) { + n !== void 0 && a.node(n) !== void 0 ? (b.warn("Node " + n + ": " + JSON.stringify(a.node(n))), s.select("#" + w.id + " #" + n).attr( + "transform", + "translate(" + (a.node(n).x - a.node(n).width / 2) + "," + (a.node(n).y + (z[n] ? z[n].y : 0) - a.node(n).height / 2) + " )" + ), s.select("#" + w.id + " #" + n).attr("data-x-shift", a.node(n).x - a.node(n).width / 2), g.querySelectorAll("#" + w.id + " #" + n + " .divider").forEach((h) => { + const f = h.parentElement; + let S = 0, M = 0; + f && (f.parentElement && (S = f.parentElement.getBBox().width), M = parseInt(f.getAttribute("data-x-shift"), 10), Number.isNaN(M) && (M = 0)), h.setAttribute("x1", 0 - M + 8), h.setAttribute("x2", S - M - 8); + })) : b.debug("No Node " + n + ": " + JSON.stringify(a.node(n))); + }); + let E = w.getBBox(); + a.edges().forEach(function(n) { + n !== void 0 && a.edge(n) !== void 0 && (b.debug("Edge " + n.v + " -> " + n.w + ": " + JSON.stringify(a.edge(n))), K(i, a.edge(n), a.edge(n).relation)); + }), E = w.getBBox(); + const k = { + id: o || "root", + label: o || "root", + width: 0, + height: 0 + }; + return k.width = E.width + 2 * B.padding, k.height = E.height + 2 * B.padding, b.debug("Doc rendered", k, a), k; +}, et = { + setConf: Q, + draw: D +}, ct = { + parser: P, + db: N, + renderer: et, + styles: W, + init: (e) => { + e.state || (e.state = {}), e.state.arrowMarkerAbsolute = e.arrowMarkerAbsolute, N.clear(); + } +}; +export { + ct as diagram +}; diff --git a/client/packages/lowcoder/public/package/dcbd4e73.js b/client/packages/lowcoder/public/package/dcbd4e73.js new file mode 100644 index 000000000..db4cd8ae3 --- /dev/null +++ b/client/packages/lowcoder/public/package/dcbd4e73.js @@ -0,0 +1,319 @@ +import { l as Y, U as D, k as M } from "./08856db2.js"; +var O = function() { + var a = function(u, t, e, n) { + for (e = e || {}, n = u.length; n--; e[u[n]] = t) + ; + return e; + }, f = [6, 9, 10], m = { + trace: function() { + }, + yy: {}, + symbols_: { error: 2, start: 3, info: 4, document: 5, EOF: 6, line: 7, statement: 8, NL: 9, showInfo: 10, $accept: 0, $end: 1 }, + terminals_: { 2: "error", 4: "info", 6: "EOF", 9: "NL", 10: "showInfo" }, + productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1]], + performAction: function(t, e, n, s, r, i, d) { + switch (i.length - 1, r) { + case 1: + return s; + case 4: + break; + case 6: + s.setInfo(!0); + break; + } + }, + table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, a(f, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: 6, 9: [1, 7], 10: [1, 8] }, { 1: [2, 1] }, a(f, [2, 3]), a(f, [2, 4]), a(f, [2, 5]), a(f, [2, 6])], + defaultActions: { 4: [2, 1] }, + parseError: function(t, e) { + if (e.recoverable) + this.trace(t); + else { + var n = new Error(t); + throw n.hash = e, n; + } + }, + parse: function(t) { + var e = this, n = [0], s = [], r = [null], i = [], d = this.table, P = "", v = 0, L = 0, N = 2, T = 1, R = i.slice.call(arguments, 1), o = Object.create(this.lexer), p = { yy: {} }; + for (var E in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, E) && (p.yy[E] = this.yy[E]); + o.setInput(t, p.yy), p.yy.lexer = o, p.yy.parser = this, typeof o.yylloc == "undefined" && (o.yylloc = {}); + var I = o.yylloc; + i.push(I); + var z = o.options && o.options.ranges; + typeof p.yy.parseError == "function" ? this.parseError = p.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; + function U() { + var y; + return y = s.pop() || o.lex() || T, typeof y != "number" && (y instanceof Array && (s = y, y = s.pop()), y = e.symbols_[y] || y), y; + } + for (var l, g, h, w, _ = {}, b, c, F, S; ; ) { + if (g = n[n.length - 1], this.defaultActions[g] ? h = this.defaultActions[g] : ((l === null || typeof l == "undefined") && (l = U()), h = d[g] && d[g][l]), typeof h == "undefined" || !h.length || !h[0]) { + var A = ""; + S = []; + for (b in d[g]) + this.terminals_[b] && b > N && S.push("'" + this.terminals_[b] + "'"); + o.showPosition ? A = "Parse error on line " + (v + 1) + `: +` + o.showPosition() + ` +Expecting ` + S.join(", ") + ", got '" + (this.terminals_[l] || l) + "'" : A = "Parse error on line " + (v + 1) + ": Unexpected " + (l == T ? "end of input" : "'" + (this.terminals_[l] || l) + "'"), this.parseError(A, { + text: o.match, + token: this.terminals_[l] || l, + line: o.yylineno, + loc: I, + expected: S + }); + } + if (h[0] instanceof Array && h.length > 1) + throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + l); + switch (h[0]) { + case 1: + n.push(l), r.push(o.yytext), i.push(o.yylloc), n.push(h[1]), l = null, L = o.yyleng, P = o.yytext, v = o.yylineno, I = o.yylloc; + break; + case 2: + if (c = this.productions_[h[1]][1], _.$ = r[r.length - c], _._$ = { + first_line: i[i.length - (c || 1)].first_line, + last_line: i[i.length - 1].last_line, + first_column: i[i.length - (c || 1)].first_column, + last_column: i[i.length - 1].last_column + }, z && (_._$.range = [ + i[i.length - (c || 1)].range[0], + i[i.length - 1].range[1] + ]), w = this.performAction.apply(_, [ + P, + L, + v, + p.yy, + h[1], + r, + i + ].concat(R)), typeof w != "undefined") + return w; + c && (n = n.slice(0, -1 * c * 2), r = r.slice(0, -1 * c), i = i.slice(0, -1 * c)), n.push(this.productions_[h[1]][0]), r.push(_.$), i.push(_._$), F = d[n[n.length - 2]][n[n.length - 1]], n.push(F); + break; + case 3: + return !0; + } + } + return !0; + } + }, k = function() { + var u = { + EOF: 1, + parseError: function(e, n) { + if (this.yy.parser) + this.yy.parser.parseError(e, n); + else + throw new Error(e); + }, + // resets the lexer, sets new input + setInput: function(t, e) { + return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this; + }, + // consumes and returns one char from the input + input: function() { + var t = this._input[0]; + this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t; + var e = t.match(/(?:\r\n?|\n).*/g); + return e ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t; + }, + // unshifts one char (or a string) into the input + unput: function(t) { + var e = t.length, n = t.split(/(?:\r\n?|\n)/g); + this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e; + var s = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1); + var r = this.yylloc.range; + return this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: n ? (n.length === s.length ? this.yylloc.first_column : 0) + s[s.length - n.length].length - n[0].length : this.yylloc.first_column - e + }, this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + return this._more = !0, this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) + this._backtrack = !0; + else + return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + return this; + }, + // retain first n characters of the match + less: function(t) { + this.unput(this.match.slice(t)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var t = this.matched.substr(0, this.matched.length - this.match.length); + return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var t = this.match; + return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var t = this.pastInput(), e = new Array(t.length + 1).join("-"); + return t + this.upcomingInput() + ` +` + e + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(t, e) { + var n, s, r; + if (this.options.backtrack_lexer && (r = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }, this.options.ranges && (r.yylloc.range = this.yylloc.range.slice(0))), s = t[0].match(/(?:\r\n?|\n).*/g), s && (this.yylineno += s.length), this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: s ? s[s.length - 1].length - s[s.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length + }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], n = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) + return n; + if (this._backtrack) { + for (var i in r) + this[i] = r[i]; + return !1; + } + return !1; + }, + // return next match in input + next: function() { + if (this.done) + return this.EOF; + this._input || (this.done = !0); + var t, e, n, s; + this._more || (this.yytext = "", this.match = ""); + for (var r = this._currentRules(), i = 0; i < r.length; i++) + if (n = this._input.match(this.rules[r[i]]), n && (!e || n[0].length > e[0].length)) { + if (e = n, s = i, this.options.backtrack_lexer) { + if (t = this.test_match(n, r[i]), t !== !1) + return t; + if (this._backtrack) { + e = !1; + continue; + } else + return !1; + } else if (!this.options.flex) + break; + } + return e ? (t = this.test_match(e, r[s]), t !== !1 ? t : !1) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text. +` + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + }, + // return next match that has a token + lex: function() { + var e = this.next(); + return e || this.lex(); + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function(e) { + this.conditionStack.push(e); + }, + // pop the previously active lexer condition state off the condition stack + popState: function() { + var e = this.conditionStack.length - 1; + return e > 0 ? this.conditionStack.pop() : this.conditionStack[0]; + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function() { + return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules; + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function(e) { + return e = this.conditionStack.length - 1 - Math.abs(e || 0), e >= 0 ? this.conditionStack[e] : "INITIAL"; + }, + // alias for begin(condition) + pushState: function(e) { + this.begin(e); + }, + // return the number of states currently on the stack + stateStackSize: function() { + return this.conditionStack.length; + }, + options: { "case-insensitive": !0 }, + performAction: function(e, n, s, r) { + switch (s) { + case 0: + return 4; + case 1: + return 9; + case 2: + return "space"; + case 3: + return 10; + case 4: + return 6; + case 5: + return "TXT"; + } + }, + rules: [/^(?:info\b)/i, /^(?:[\s\n\r]+)/i, /^(?:[\s]+)/i, /^(?:showInfo\b)/i, /^(?:$)/i, /^(?:.)/i], + conditions: { INITIAL: { rules: [0, 1, 2, 3, 4, 5], inclusive: !0 } } + }; + return u; + }(); + m.lexer = k; + function x() { + this.yy = {}; + } + return x.prototype = m, m.Parser = x, new x(); +}(); +O.parser = O; +const B = O, j = { + info: !1 +}; +let $ = j.info; +const V = (a) => { + $ = a; +}, X = () => $, q = () => { + $ = j.info; +}, C = { + clear: q, + setInfo: V, + getInfo: X +}, G = (a, f, m) => { + Y.debug(`rendering info diagram +` + a); + const k = D(f); + M(k, 100, 400, !0), k.append("g").append("text").attr("x", 100).attr("y", 40).attr("class", "version").attr("font-size", 32).style("text-anchor", "middle").text(`v${m}`); +}, H = { draw: G }, K = { + parser: B, + db: C, + renderer: H +}; +export { + K as diagram +}; diff --git a/client/packages/lowcoder/public/package/e158889d.js b/client/packages/lowcoder/public/package/e158889d.js new file mode 100644 index 000000000..455a761c0 --- /dev/null +++ b/client/packages/lowcoder/public/package/e158889d.js @@ -0,0 +1,16582 @@ +import { g as getDefaultExportFromCjs, c as commonjsGlobal } from "./08856db2.js"; +var agoraRtmSdk = { exports: {} }; +/* + @preserve + AgoraRTM Web SDK 1.5.1 - commit: v1.5.1-0-g5bbbcd72 + Copyright (C) 2018-2022 Agora Lab. + This file is licensed under the AGORA, INC. SDK LICENSE AGREEMENT + A copy of this license may be found at https://www.agora.io/en/sdk-license-agreement/ +*/ +agoraRtmSdk.exports; +(function(module, exports) { + (function(e, t) { + module.exports = t(); + })(commonjsGlobal, function() { + function Be(e, t) { + var n = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var r = Object.getOwnPropertySymbols(e); + t && (r = r.filter(function(o) { + return Object.getOwnPropertyDescriptor(e, o).enumerable; + })), n.push.apply(n, r); + } + return n; + } + function Wa(e) { + for (var t = 1; t < arguments.length; t++) { + var n = arguments[t] != null ? arguments[t] : {}; + t % 2 ? Be(Object(n), !0).forEach(function(r) { + x(e, r, n[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Be(Object(n)).forEach(function(r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(n, r)); + }); + } + return e; + } + function qa(e) { + return (qa = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(t) { + return typeof t; + } : function(t) { + return t && typeof Symbol == "function" && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t; + })(e); + } + function wm(e, t, n, r, o, i, s) { + try { + var u = e[i](s), a = u.value; + } catch (l) { + return void n(l); + } + u.done ? t(a) : Promise.resolve(a).then(r, o); + } + function ma(e) { + return function() { + var t = this, n = arguments; + return new Promise(function(r, o) { + function i(a) { + wm(u, r, o, i, s, "next", a); + } + function s(a) { + wm(u, r, o, i, s, "throw", a); + } + var u = e.apply(t, n); + i(void 0); + }); + }; + } + function va(e, t) { + if (!(e instanceof t)) + throw new TypeError("Cannot call a class as a function"); + } + function xm(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r); + } + } + function eb(e, t, n) { + return t && xm(e.prototype, t), n && xm(e, n), e; + } + function x(e, t, n) { + return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e; + } + function Ga(e, t) { + if (typeof t != "function" && t !== null) + throw new TypeError("Super expression must either be null or a function"); + e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } }), t && Jf(e, t); + } + function Td(e) { + return (Td = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) { + return t.__proto__ || Object.getPrototypeOf(t); + })(e); + } + function Jf(e, t) { + return (Jf = Object.setPrototypeOf || function(n, r) { + return n.__proto__ = r, n; + })(e, t); + } + function ym() { + if (typeof Reflect == "undefined" || !Reflect.construct || Reflect.construct.sham) + return !1; + if (typeof Proxy == "function") + return !0; + try { + return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })), !0; + } catch (e) { + return !1; + } + } + function Ji(e, t, n) { + return (Ji = ym() ? Reflect.construct : function(r, o, i) { + var s = [null]; + return s.push.apply(s, o), r = new (Function.bind.apply(r, s))(), i && Jf(r, i.prototype), r; + }).apply(null, arguments); + } + function Kf(e) { + var t = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0; + return (Kf = function(n) { + function r() { + return Ji(n, arguments, Td(this).constructor); + } + if (n === null || Function.toString.call(n).indexOf("[native code]") === -1) + return n; + if (typeof n != "function") + throw new TypeError("Super expression must either be null or a function"); + if (t !== void 0) { + if (t.has(n)) + return t.get(n); + t.set(n, r); + } + return r.prototype = Object.create(n.prototype, { constructor: { value: r, enumerable: !1, writable: !0, configurable: !0 } }), Jf(r, n); + })(e); + } + function Ki(e, t) { + if (e == null) + return {}; + if (e == null) + var n = {}; + else { + n = {}; + var r, o = Object.keys(e); + for (r = 0; r < o.length; r++) { + var i = o[r]; + 0 <= t.indexOf(i) || (n[i] = e[i]); + } + } + if (Object.getOwnPropertySymbols) + for (r = Object.getOwnPropertySymbols(e), i = 0; i < r.length; i++) + o = r[i], 0 <= t.indexOf(o) || Object.prototype.propertyIsEnumerable.call(e, o) && (n[o] = e[o]); + return n; + } + function z(e) { + if (e === void 0) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function Ha(e) { + var t = ym(); + return function() { + var n = Td(e); + if (t) { + var r = Td(this).constructor; + n = Reflect.construct(n, arguments, r); + } else + n = n.apply(this, arguments); + return n = !n || typeof n != "object" && typeof n != "function" ? z(this) : n; + }; + } + function Li(e, t, n) { + return (Li = typeof Reflect != "undefined" && Reflect.get ? Reflect.get : function(r, o, i) { + for (; !Object.prototype.hasOwnProperty.call(r, o) && (r = Td(r)) !== null; ) + ; + if (r) + return (o = Object.getOwnPropertyDescriptor(r, o)).get ? o.get.call(i) : o.value; + })(e, t, n || e); + } + function $a(e, t) { + var n = Array.isArray(e) ? e : void 0; + if (!n) + if ((n = e && (typeof Symbol != "undefined" && e[Symbol.iterator] || e["@@iterator"])) == null) + n = void 0; + else { + var r, o = [], i = !0, s = !1; + try { + for (n = n.call(e); !(i = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t); i = !0) + ; + } catch (a) { + s = !0; + var u = a; + } finally { + try { + i || n.return == null || n.return(); + } finally { + if (s) + throw u; + } + } + n = o; + } + if (!(e = n || zm(e, t))) + throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + return e; + } + function Z(e) { + var t = Array.isArray(e) ? Mi(e) : void 0; + if (t || (t = typeof Symbol != "undefined" && e[Symbol.iterator] != null || e["@@iterator"] != null ? Array.from(e) : void 0), !(e = t || zm(e))) + throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`); + return e; + } + function zm(e, t) { + if (e) { + if (typeof e == "string") + return Mi(e, t); + var n = Object.prototype.toString.call(e).slice(8, -1); + if (n === "Object" && e.constructor && (n = e.constructor.name), n === "Map" || n === "Set") + return Array.from(e); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) + return Mi(e, t); + } + } + function Mi(e, t) { + (t == null || t > e.length) && (t = e.length); + for (var n = 0, r = Array(t); n < t; n++) + r[n] = e[n]; + return r; + } + function Da(e, t, n, r, o) { + var i = {}; + return Object.keys(r).forEach(function(s) { + i[s] = r[s]; + }), i.enumerable = !!i.enumerable, i.configurable = !!i.configurable, ("value" in i || i.initializer) && (i.writable = !0), i = n.slice().reverse().reduce(function(s, u) { + return u(e, t, s) || s; + }, i), o && i.initializer !== void 0 && (i.value = i.initializer ? i.initializer.call(o) : void 0, i.initializer = void 0), i.initializer === void 0 && (Object.defineProperty(e, t, i), i = null), i; + } + function xb(e) { + var t = { exports: {} }; + return e(t, t.exports), t.exports; + } + function Ce(e) { + e || (e = {}); + var t = e.ua; + if (t || typeof navigator == "undefined" || (t = navigator.userAgent), t && t.headers && typeof t.headers["user-agent"] == "string" && (t = t.headers["user-agent"]), typeof t != "string") + return !1; + var n = Zt.test(t) && !$t.test(t) || !!e.tablet && au.test(t); + return !n && e.tablet && e.featureDetect && navigator && 1 < navigator.maxTouchPoints && t.indexOf("Macintosh") !== -1 && t.indexOf("Safari") !== -1 && (n = !0), n; + } + function Am(e, t) { + var n, r = 3 > arguments.length ? e : arguments[2]; + return Ia(e) === r ? e[t] : (n = dc.f(e, t)) ? ka(n, "value") ? n.value : n.get === void 0 ? void 0 : n.get.call(r) : xa(n = uc(e)) ? Am(n, t, r) : void 0; + } + function bu(e) { + var t = e.charCodeAt(0) << 24, n = 0 | cu(~t), r = 0, o = 0 | e.length, i = ""; + if (5 > n && o >= n) { + for (t = t << n >>> 24 + n, r = 1; r < n; r = r + 1 | 0) + t = t << 6 | 63 & e.charCodeAt(r); + 65535 >= t ? i += Ud(t) : 1114111 >= t ? i += Ud(55296 + ((t = t - 65536 | 0) >> 10) | 0, 56320 + (1023 & t) | 0) : r = 0; + } + for (; r < o; r = r + 1 | 0) + i += "�"; + return i; + } + function Bm() { + } + function du(e) { + var t = 0 | e.charCodeAt(0); + if (55296 <= t && 56319 >= t) { + var n = 0 | e.charCodeAt(1); + if (!(n == n && 56320 <= n && 57343 >= n)) + return Ud(239, 191, 189); + if (65535 < (t = (t - 55296 << 10) + n - 56320 + 65536 | 0)) + return Ud(240 | t >>> 18, 128 | t >>> 12 & 63, 128 | t >>> 6 & 63, 128 | 63 & t); + } + return 127 >= t ? e : 2047 >= t ? Ud(192 | t >>> 6, 128 | 63 & t) : Ud(224 | t >>> 12, 128 | t >>> 6 & 63, 128 | 63 & t); + } + function Cm() { + } + function Ba() { + Ba.init.call(this); + } + function Wg(e) { + if (typeof e != "function") + throw new TypeError('The "listener" argument must be of type Function. Received type ' + qa(e)); + } + function Dm(e, t, n, r) { + Wg(n); + var o = e._events; + if (o === void 0) + o = e._events = /* @__PURE__ */ Object.create(null), e._eventsCount = 0; + else { + o.newListener !== void 0 && (e.emit("newListener", t, n.listener ? n.listener : n), o = e._events); + var i = o[t]; + } + return i === void 0 ? (o[t] = n, ++e._eventsCount) : (typeof i == "function" ? i = o[t] = r ? [n, i] : [i, n] : r ? i.unshift(n) : i.push(n), 0 < (n = e._maxListeners === void 0 ? Ba.defaultMaxListeners : e._maxListeners) && i.length > n && !i.warned && (i.warned = !0, (n = Error("Possible EventEmitter memory leak detected. " + i.length + " " + String(t) + " listeners added. Use emitter.setMaxListeners() to increase limit")).name = "MaxListenersExceededWarning", n.emitter = e, n.type = t, n.count = i.length, console && console.warn && console.warn(n))), e; + } + function eu() { + if (!this.fired) + return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, arguments.length === 0 ? this.listener.call(this.target) : this.listener.apply(this.target, arguments); + } + function Em(e, t, n) { + return e = { fired: !1, wrapFn: void 0, target: e, type: t, listener: n }, (t = eu.bind(e)).listener = n, e.wrapFn = t; + } + function Fm(e, t, n) { + if ((e = e._events) === void 0) + return []; + if ((t = e[t]) === void 0) + return []; + if (typeof t == "function") + return n ? [t.listener || t] : [t]; + if (n) + for (n = Array(t.length), e = 0; e < n.length; ++e) + n[e] = t[e].listener || t[e]; + else + n = Gm(t, t.length); + return n; + } + function Hm(e) { + var t = this._events; + if (t !== void 0) { + if (typeof (e = t[e]) == "function") + return 1; + if (e !== void 0) + return e.length; + } + return 0; + } + function Gm(e, t) { + for (var n = Array(t), r = 0; r < t; ++r) + n[r] = e[r]; + return n; + } + function fu(e, t, n) { + typeof e.on == "function" && Im(e, "error", t, n); + } + function Im(e, t, n, r) { + if (typeof e.on == "function") + r.once ? e.once(t, n) : e.on(t, n); + else { + if (typeof e.addEventListener != "function") + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + qa(e)); + e.addEventListener(t, function o(i) { + r.once && e.removeEventListener(t, o), n(i); + }); + } + } + function gu(e) { + return e ? Z(e) : hu(function() { + return []; + }, function(t, n) { + return t.push(n), t; + }); + } + function Jm(e, t) { + var n, r, o, i; + return N.wrap(function(s) { + for (; ; ) + switch (s.prev = s.next) { + case 0: + n = Km(e)([Lm, Lm, function(u, a) { + return a; + }])[2], r = 0; + case 2: + if (!(r < t.length)) { + s.next = 17; + break; + } + if (o = t[r], !((i = n(Ni, o)) instanceof Xg)) { + s.next = 11; + break; + } + if ((i = Oi(i.deref())) === Ni) { + s.next = 10; + break; + } + return s.next = 10, i; + case 10: + return s.abrupt("return"); + case 11: + if (i === Ni) { + s.next = 14; + break; + } + return s.next = 14, i; + case 14: + r++, s.next = 2; + break; + case 17: + case "end": + return s.stop(); + } + }, iu); + } + function Yg(e, t) { + return t != null && typeof t[Symbol.iterator] == "function" ? Jm(Yg(e), t) : function(n) { + var r = n[2]; + return ju(n, function(o, i) { + return r(o, e(i)); + }); + }; + } + function $c(e) { + return Object.prototype.toString.call(e).slice(8, -1); + } + function De(e) { + return $c(e) === "Object" && e.constructor === Object && Object.getPrototypeOf(e) === Object.prototype; + } + function Mm(e) { + var t; + return (t = $c(e) === "Boolean" || $c(e) === "Null" || $c(e) === "Undefined") || (t = $c(e) === "Number" && !isNaN(e)), t || $c(e) === "String" || $c(e) === "Symbol"; + } + function Vd(e) { + var t = -1, n = e == null ? 0 : e.length; + for (this.clear(); ++t < n; ) { + var r = e[t]; + this.set(r[0], r[1]); + } + } + function Ee(e) { + var t = -1, n = e == null ? 0 : e.length; + for (this.clear(); ++t < n; ) { + var r = e[t]; + this.set(r[0], r[1]); + } + } + function Fe(e) { + var t = -1, n = e == null ? 0 : e.length; + for (this.clear(); ++t < n; ) { + var r = e[t]; + this.set(r[0], r[1]); + } + } + function Lf(e) { + var t = -1, n = e == null ? 0 : e.length; + for (this.__data__ = new Zg(); ++t < n; ) + this.add(e[t]); + } + function Ge(e) { + this.size = (this.__data__ = new $g(e)).size; + } + function He(e, t, n, r, o, i) { + var s, u = 1 & t, a = 2 & t, l = 4 & t; + if (n && (s = o ? n(e, r, o, i) : n(e)), s !== void 0) + return s; + if (!Gb(e)) + return e; + if (r = ub(e)) { + if (s = ku(e), !u) + return Pi(e, s); + } else { + var f = Mf(e), h = f == "[object Function]" || f == "[object GeneratorFunction]"; + if (Nf(e)) + return Nm(e, u); + if (f == "[object Object]" || f == "[object Arguments]" || h && !o) { + if (s = a || h ? {} : Om(e), !u) + return a ? lu(e, mu(s, e)) : nu(e, ou(s, e)); + } else { + if (!Oa[f]) + return o ? e : {}; + s = pu(e, f, u); + } + } + if (i || (i = new Ie()), o = i.get(e)) + return o; + i.set(e, s), qu(e) ? e.forEach(function(p) { + s.add(He(p, t, n, p, e, i)); + }) : ru(e) && e.forEach(function(p, v) { + s.set(v, He(p, t, n, v, e, i)); + }), a = l ? a ? Pm : Qi : a ? Of : Wd; + var d = r ? void 0 : a(e); + return su(d || e, function(p, v) { + d && (p = e[v = p]), Qm(s, v, He(p, t, n, v, e, i)); + }), s; + } + function Ri(e, t) { + if (typeof e != "function" || t != null && typeof t != "function") + throw new TypeError("Expected a function"); + var n = function r() { + var o = arguments, i = t ? t.apply(this, o) : o[0], s = r.cache; + return s.has(i) ? s.get(i) : (o = e.apply(this, o), r.cache = s.set(i, o) || s, o); + }; + return n.cache = new (Ri.Cache || Zg)(), n; + } + function Rm(e) { + if (typeof e == "string") + return e; + if (ub(e)) + return Je(e, Rm) + ""; + if (Ke(e)) + return Sm ? Sm.call(e) : ""; + var t = e + ""; + return t == "0" && 1 / e == -tu ? "-0" : t; + } + function Si(e, t, n, r, o) { + var i = -1, s = e.length; + for (n || (n = uu), o || (o = []); ++i < s; ) { + var u = e[i]; + 0 < t && n(u) ? 1 < t ? Si(u, t - 1, n, r, o) : Ti(o, u) : r || (o[o.length] = u); + } + return o; + } + function Le(e, t, n, r, o) { + if (e === t) + t = !0; + else if (e == null || t == null || !Hc(e) && !Hc(t)) + t = e != e && t != t; + else + t: { + var i = ub(e), s = ub(t), u = i ? "[object Array]" : Mf(e), a = s ? "[object Array]" : Mf(t), l = (u = u == "[object Arguments]" ? "[object Object]" : u) == "[object Object]"; + if (s = (a = a == "[object Arguments]" ? "[object Object]" : a) == "[object Object]", (a = u == a) && Nf(e)) { + if (!Nf(t)) { + t = !1; + break t; + } + i = !0, l = !1; + } + if (a && !l) + o || (o = new Ie()), t = i || Ui(e) ? Tm(e, t, n, r, Le, o) : vu(e, t, u, n, r, Le, o); + else { + if (!(1 & n) && (i = l && Um.call(e, "__wrapped__"), u = s && Um.call(t, "__wrapped__"), i || u)) { + e = i ? e.value() : e, t = u ? t.value() : t, o || (o = new Ie()), t = Le(e, t, n, r, o); + break t; + } + if (a) + e: + if (o || (o = new Ie()), i = 1 & n, u = Qi(e), s = u.length, a = Qi(t).length, s == a || i) { + for (a = s; a--; ) { + var f = u[a]; + if (!(i ? f in t : wu.call(t, f))) { + t = !1; + break e; + } + } + if (l = o.get(e), f = o.get(t), l && f) + t = l == t && f == e; + else { + l = !0, o.set(e, t), o.set(t, e); + for (var h = i; ++a < s; ) { + var d = e[f = u[a]], p = t[f]; + if (r) + var v = i ? r(p, d, f, t, e, o) : r(d, p, f, e, t, o); + if (v === void 0 ? d !== p && !Le(d, p, n, r, o) : !v) { + l = !1; + break; + } + h || (h = f == "constructor"); + } + l && !h && (n = e.constructor) != (r = t.constructor) && "constructor" in e && "constructor" in t && !(typeof n == "function" && n instanceof n && typeof r == "function" && r instanceof r) && (l = !1), o.delete(e), o.delete(t), t = l; + } + } else + t = !1; + else + t = !1; + } + } + return t; + } + function Pa(e, t, n) { + this.low = 0 | e, this.high = 0 | t, this.unsigned = !!n; + } + function Hb(e) { + return (e && e.__isLong__) === !0; + } + function Xd(e, t) { + var n; + if (t) { + if ((t = 0 <= (e >>>= 0) && 256 > e) && (n = Vm[e])) + return n; + n = Qa(e, 0 > (0 | e) ? -1 : 0, !0), t && (Vm[e] = n); + } else { + if ((t = -128 <= (e |= 0) && 128 > e) && (n = Wm[e])) + return n; + n = Qa(e, 0 > e ? -1 : 0, !1), t && (Wm[e] = n); + } + return n; + } + function ec(e, t) { + if (isNaN(e)) + return t ? Yd : fc; + if (t) { + if (0 > e) + return Yd; + if (e >= Xm) + return Ym; + } else { + if (e <= -Zm) + return Ib; + if (e + 1 >= Zm) + return $m; + } + return 0 > e ? ec(-e, t).neg() : Qa(e % Me | 0, e / Me | 0, t); + } + function Qa(e, t, n) { + return new Pa(e, t, n); + } + function Vi(e, t, n) { + if (e.length === 0) + throw Error("empty string"); + if (e === "NaN" || e === "Infinity" || e === "+Infinity" || e === "-Infinity") + return fc; + if (typeof t == "number" ? (n = t, t = !1) : t = !!t, 2 > (n = n || 10) || 36 < n) + throw RangeError("radix"); + var r; + if (0 < (r = e.indexOf("-"))) + throw Error("interior hyphen"); + if (r === 0) + return Vi(e.substring(1), t, n).neg(); + r = ec(ah(n, 8)); + for (var o = fc, i = 0; i < e.length; i += 8) { + var s = Math.min(8, e.length - i), u = parseInt(e.substring(i, i + s), n); + 8 > s ? (s = ec(ah(n, s)), o = o.mul(s).add(ec(u))) : o = (o = o.mul(r)).add(ec(u)); + } + return o.unsigned = t, o; + } + function vc(e, t) { + return typeof e == "number" ? ec(e, t) : typeof e == "string" ? Vi(e, t) : Qa(e.low, e.high, typeof t == "boolean" ? t : e.unsigned); + } + function ha(e, t) { + function n() { + this.constructor = e; + } + Wi(e, t), e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n()); + } + function Ne(e) { + return typeof e == "function"; + } + function Oe(e) { + setTimeout(function() { + throw e; + }, 0); + } + function Xi(e) { + return e !== null && qa(e) === "object"; + } + function an(e) { + return e.reduce(function(t, n) { + return t.concat(n instanceof Pf ? n.errors : n); + }, []); + } + function Yi(e) { + for (; e; ) { + var t = e.destination, n = e.isStopped; + if (e.closed || n) + return !1; + e = t && t instanceof za ? t : null; + } + return !0; + } + function wd(e) { + return e; + } + function Zi() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return bn(e); + } + function bn(e) { + return e.length === 0 ? wd : e.length === 1 ? e[0] : function(t) { + return e.reduce(function(n, r) { + return r(n); + }, t); + }; + } + function cn(e) { + if (e || (e = gc.Promise || Promise), !e) + throw Error("no Promise impl found"); + return e; + } + function dn() { + return function(e) { + return e.lift(new xu(e)); + }; + } + function Qf(e) { + return e ? yu(e) : Sb; + } + function yu(e) { + return new ua(function(t) { + return e.schedule(function() { + return t.complete(); + }); + }); + } + function ad(e) { + return e && typeof e.schedule == "function"; + } + function $i(e, t) { + return new ua(function(n) { + var r = new nb(), o = 0; + return r.add(t.schedule(function() { + o === e.length ? n.complete() : (n.next(e[o++]), n.closed || r.add(this.schedule())); + })), r; + }); + } + function Rf(e, t) { + return t ? $i(e, t) : new ua(en(e)); + } + function ob() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return ad(t = e[e.length - 1]) ? (e.pop(), $i(e, t)) : Rf(e); + } + function ra(e, t) { + return new ua(t ? function(n) { + return t.schedule(zu, 0, { error: e, subscriber: n }); + } : function(n) { + return n.error(e); + }); + } + function zu(e) { + e.subscriber.error(e.error); + } + function Au(e, t) { + return t === void 0 && (t = 0), function(n) { + return n.lift(new Bu(e, t)); + }; + } + function fn(e) { + return e in aj && (delete aj[e], !0); + } + function Ic() { + } + function Ea(e, t) { + return function(n) { + if (typeof e != "function") + throw new TypeError("argument is not a function. Are you looking for `mapTo()`?"); + return n.lift(new Cu(e, t)); + }; + } + function gn(e, t, n) { + if (t) { + if (!ad(t)) + return function() { + for (var r = [], o = 0; o < arguments.length; o++) + r[o] = arguments[o]; + return gn(e, n).apply(void 0, r).pipe(Ea(function(i) { + return hc(i) ? t.apply(void 0, i) : t(i); + })); + }; + n = t; + } + return function() { + for (var r = [], o = 0; o < arguments.length; o++) + r[o] = arguments[o]; + var i, s = this, u = { context: s, subject: i, callbackFunc: e, scheduler: n }; + return new ua(function(a) { + if (n) + return n.schedule(Du, 0, { args: r, subscriber: a, params: u }); + if (!i) { + i = new Sf(); + try { + e.apply(s, r.concat([function() { + for (var l = [], f = 0; f < arguments.length; f++) + l[f] = arguments[f]; + i.next(1 >= l.length ? l[0] : l), i.complete(); + }])); + } catch (l) { + Yi(i) ? i.error(l) : console.warn(l); + } + } + return i.subscribe(a); + }); + }; + } + function Du(e) { + var t = this, n = e.args, r = e.subscriber, o = e.params; + e = o.callbackFunc; + var i = o.context, s = o.scheduler, u = o.subject; + if (!u) { + u = o.subject = new Sf(), o = function() { + for (var a = [], l = 0; l < arguments.length; l++) + a[l] = arguments[l]; + t.add(s.schedule(Eu, 0, { value: 1 >= a.length ? a[0] : a, subject: u })); + }; + try { + e.apply(i, n.concat([o])); + } catch (a) { + u.error(a); + } + } + this.add(u.subscribe(r)); + } + function Eu(e) { + var t = e.subject; + t.next(e.value), t.complete(); + } + function hn(e, t, n) { + if (t) { + if (!ad(t)) + return function() { + for (var r = [], o = 0; o < arguments.length; o++) + r[o] = arguments[o]; + return hn(e, n).apply(void 0, r).pipe(Ea(function(i) { + return hc(i) ? t.apply(void 0, i) : t(i); + })); + }; + n = t; + } + return function() { + for (var r = [], o = 0; o < arguments.length; o++) + r[o] = arguments[o]; + var i = { subject: void 0, args: r, callbackFunc: e, scheduler: n, context: this }; + return new ua(function(s) { + var u = i.context, a = i.subject; + if (n) + return n.schedule(Fu, 0, { params: i, subscriber: s, context: u }); + if (!a) { + a = i.subject = new Sf(); + try { + e.apply(u, r.concat([function() { + for (var l = [], f = 0; f < arguments.length; f++) + l[f] = arguments[f]; + (f = l.shift()) ? a.error(f) : (a.next(1 >= l.length ? l[0] : l), a.complete()); + }])); + } catch (l) { + Yi(a) ? a.error(l) : console.warn(l); + } + } + return a.subscribe(s); + }); + }; + } + function Fu(e) { + var t = this, n = e.params, r = e.subscriber; + e = e.context; + var o = n.callbackFunc, i = n.args, s = n.scheduler, u = n.subject; + if (!u) { + u = n.subject = new Sf(), n = function() { + for (var a = [], l = 0; l < arguments.length; l++) + a[l] = arguments[l]; + (l = a.shift()) ? t.add(s.schedule(jn, 0, { err: l, subject: u })) : t.add(s.schedule(Gu, 0, { value: 1 >= a.length ? a[0] : a, subject: u })); + }; + try { + o.apply(e, i.concat([n])); + } catch (a) { + this.add(s.schedule(jn, 0, { err: a, subject: u })); + } + } + this.add(u.subscribe(r)); + } + function Gu(e) { + var t = e.subject; + t.next(e.value), t.complete(); + } + function jn(e) { + e.subject.error(e.err); + } + function kn(e) { + return !!e && typeof e.subscribe != "function" && typeof e.then == "function"; + } + function bj(e, t, n, r, o) { + if (o === void 0 && (o = new Hu(e, n, r)), !o.closed) + return t instanceof ua ? t.subscribe(o) : Tf(t)(o); + } + function Iu(e, t) { + return new ua(function(n) { + var r = new nb(); + return r.add(t.schedule(function() { + var o = e[Pe](); + r.add(o.subscribe({ next: function(i) { + r.add(t.schedule(function() { + return n.next(i); + })); + }, error: function(i) { + r.add(t.schedule(function() { + return n.error(i); + })); + }, complete: function() { + r.add(t.schedule(function() { + return n.complete(); + })); + } })); + })), r; + }); + } + function Ju(e, t) { + return new ua(function(n) { + var r = new nb(); + return r.add(t.schedule(function() { + return e.then(function(o) { + r.add(t.schedule(function() { + n.next(o), r.add(t.schedule(function() { + return n.complete(); + })); + })); + }, function(o) { + r.add(t.schedule(function() { + return n.error(o); + })); + }); + })), r; + }); + } + function Ku(e, t) { + if (!e) + throw Error("Iterable cannot be null"); + return new ua(function(n) { + var r, o = new nb(); + return o.add(function() { + r && typeof r.return == "function" && r.return(); + }), o.add(t.schedule(function() { + r = e[xd](), o.add(t.schedule(function() { + if (!n.closed) { + try { + var i = r.next(), s = i.value, u = i.done; + } catch (a) { + return void n.error(a); + } + u ? n.complete() : (n.next(s), this.schedule()); + } + })); + })), o; + }); + } + function ln(e, t) { + if (e != null) { + if (e && typeof e[Pe] == "function") + return Iu(e, t); + if (kn(e)) + return Ju(e, t); + if (mn(e)) + return $i(e, t); + if (e && typeof e[xd] == "function" || typeof e == "string") + return Ku(e, t); + } + throw new TypeError((e !== null && qa(e) || e) + " is not observable"); + } + function Jc(e, t) { + return t ? ln(e, t) : e instanceof ua ? e : new ua(Tf(e)); + } + function bd(e, t) { + if (!t.closed) { + if (e instanceof ua) + return e.subscribe(t); + try { + var n = Tf(e)(t); + } catch (r) { + t.error(r); + } + return n; + } + } + function Cb(e, t, n) { + return n === void 0 && (n = Number.POSITIVE_INFINITY), typeof t == "function" ? function(r) { + return r.pipe(Cb(function(o, i) { + return Jc(e(o, i)).pipe(Ea(function(s, u) { + return t(o, s, i, u); + })); + }, n)); + } : (typeof t == "number" && (n = t), function(r) { + return r.lift(new Lu(e, n)); + }); + } + function bh(e) { + return e === void 0 && (e = Number.POSITIVE_INFINITY), Cb(wd, e); + } + function nn() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return bh(1)(ob.apply(void 0, e)); + } + function yd(e) { + return new ua(function(t) { + try { + var n = e(); + } catch (r) { + return void t.error(r); + } + return (n ? Jc(n) : Qf()).subscribe(t); + }); + } + function ch(e, t) { + return new ua(function(n) { + var r = e.length; + if (r === 0) + n.complete(); + else + for (var o = Array(r), i = 0, s = 0, u = function(l) { + var f = Jc(e[l]), h = !1; + n.add(f.subscribe({ next: function(d) { + h || (h = !0, s++), o[l] = d; + }, error: function(d) { + return n.error(d); + }, complete: function() { + ++i !== r && h || (s === r && n.next(t ? t.reduce(function(d, p, v) { + return d[p] = o[v], d; + }, {}) : o), n.complete()); + } })); + }, a = 0; a < r; a++) + u(a); + }); + } + function Db(e, t, n, r) { + return Ne(n) && (r = n, n = void 0), r ? Db(e, t, n).pipe(Ea(function(o) { + return hc(o) ? r.apply(void 0, o) : r(o); + })) : new ua(function(o) { + on(e, t, function(i) { + 1 < arguments.length ? o.next(Array.prototype.slice.call(arguments)) : o.next(i); + }, o, n); + }); + } + function on(e, t, n, r, o) { + if (e && typeof e.addEventListener == "function" && typeof e.removeEventListener == "function") { + e.addEventListener(t, n, o); + var i = function() { + return e.removeEventListener(t, n, o); + }; + } else if (e && typeof e.on == "function" && typeof e.off == "function") + e.on(t, n), i = function() { + return e.off(t, n); + }; + else if (e && typeof e.addListener == "function" && typeof e.removeListener == "function") + e.addListener(t, n), i = function() { + return e.removeListener(t, n); + }; + else { + if (!e || !e.length) + throw new TypeError("Invalid event target"); + for (var s = 0, u = e.length; s < u; s++) + on(e[s], t, n, r, o); + } + r.add(i); + } + function pn(e, t, n) { + return n ? pn(e, t).pipe(Ea(function(r) { + return hc(r) ? n.apply(void 0, r) : n(r); + })) : new ua(function(r) { + var o = function() { + for (var s = [], u = 0; u < arguments.length; u++) + s[u] = arguments[u]; + return r.next(s.length === 1 ? s[0] : s); + }; + try { + var i = e(o); + } catch (s) { + return void r.error(s); + } + if (Ne(t)) + return function() { + return t(o, i); + }; + }); + } + function Mu(e) { + var t = e.subscriber, n = e.condition; + if (!t.closed) { + if (e.needIterate) + try { + e.state = e.iterate(e.state); + } catch (i) { + return void t.error(i); + } + else + e.needIterate = !0; + if (n) { + var r = void 0; + try { + r = n(e.state); + } catch (i) { + return void t.error(i); + } + if (!r) + return void t.complete(); + if (t.closed) + return; + } + try { + var o = e.resultSelector(e.state); + } catch (i) { + return void t.error(i); + } + if (!t.closed && (t.next(o), !t.closed)) + return this.schedule(e); + } + } + function cj(e) { + return !hc(e) && 0 <= e - parseFloat(e) + 1; + } + function Qe(e, t) { + return e === void 0 && (e = 0), t === void 0 && (t = cd), (!cj(e) || 0 > e) && (e = 0), t && typeof t.schedule == "function" || (t = cd), new ua(function(n) { + return n.add(t.schedule(Nu, e, { subscriber: n, counter: 0, period: e })), n; + }); + } + function Nu(e) { + var t = e.subscriber, n = e.counter; + e = e.period, t.next(n), this.schedule({ subscriber: t, counter: n + 1, period: e }, e); + } + function Jb() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + t = Number.POSITIVE_INFINITY; + var n = null, r = e[e.length - 1]; + return ad(r) ? (n = e.pop(), 1 < e.length && typeof e[e.length - 1] == "number" && (t = e.pop())) : typeof r == "number" && (t = e.pop()), n === null && e.length === 1 && e[0] instanceof ua ? e[0] : bh(t)(Rf(e, n)); + } + function dj() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + if (e.length === 0) + return Sb; + var n = e[0], r = e.slice(1); + return e.length === 1 && hc(n) ? dj.apply(void 0, n) : new ua(function(o) { + var i = function() { + return o.add(dj.apply(void 0, r).subscribe(o)); + }; + return Jc(n).subscribe({ next: function(s) { + o.next(s); + }, error: i, complete: i }); + }); + } + function Ou(e) { + var t = e.keys, n = e.index, r = e.subscriber, o = e.subscription; + if (e = e.obj, !r.closed) + if (n < t.length) { + var i = t[n]; + r.next([i, e[i]]), o.add(this.schedule({ keys: t, index: n + 1, subscriber: r, subscription: o, obj: e })); + } else + r.complete(); + } + function Pu(e, t) { + function n() { + return !n.pred.apply(n.thisArg, arguments); + } + return n.pred = e, n.thisArg = t, n; + } + function yb(e, t) { + return function(n) { + return n.lift(new Qu(e, t)); + }; + } + function fb() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + if (e.length === 1) { + if (!hc(e[0])) + return e[0]; + e = e[0]; + } + return Rf(e, void 0).lift(new Ru()); + } + function Su(e) { + var t = e.start, n = e.index, r = e.subscriber; + n >= e.count ? r.complete() : (r.next(t), r.closed || (e.index = n + 1, e.start = t + 1, this.schedule(e))); + } + function dd(e, t, n) { + e === void 0 && (e = 0); + var r = -1; + return cj(t) ? r = 1 > Number(t) ? 1 : Number(t) : ad(t) && (n = t), ad(n) || (n = cd), new ua(function(o) { + var i = cj(e) ? e : +e - n.now(); + return n.schedule(Tu, i, { index: 0, period: r, subscriber: o }); + }); + } + function Tu(e) { + var t = e.index, n = e.period, r = e.subscriber; + if (r.next(t), !r.closed) { + if (n === -1) + return r.complete(); + e.index = t + 1, this.schedule(e, n); + } + } + function ej() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return typeof (t = e[e.length - 1]) == "function" && e.pop(), Rf(e, void 0).lift(new Uu(t)); + } + function dh(e) { + var t = arguments.length, n = cd; + ad(arguments[arguments.length - 1]) && (n = arguments[arguments.length - 1], t--); + var r = null; + 2 <= t && (r = arguments[1]); + var o = Number.POSITIVE_INFINITY; + return 3 <= t && (o = arguments[2]), function(i) { + return i.lift(new Vu(e, r, o, n)); + }; + } + function qn(e) { + var t = e.subscriber, n = e.context; + n && t.closeContext(n), t.closed || (e.context = t.openContext(), e.context.closeAction = this.schedule(e, e.bufferTimeSpan)); + } + function Wu(e) { + var t = e.bufferCreationInterval, n = e.bufferTimeSpan, r = e.subscriber, o = e.scheduler, i = r.openContext(); + r.closed || (r.add(i.closeAction = o.schedule(rn, n, { subscriber: r, context: i })), this.schedule(e, t)); + } + function rn(e) { + e.subscriber.closeContext(e.context); + } + function ab(e) { + return function(t) { + var n = new Xu(e); + return t = t.lift(n), n.caught = t; + }; + } + function fj(e, t) { + return Cb(e, t, 1); + } + function sn(e) { + return e === void 0 && (e = null), function(t) { + return t.lift(new Yu(e)); + }; + } + function Zd(e, t) { + t === void 0 && (t = cd); + var n = e instanceof Date && !isNaN(+e) ? +e - t.now() : Math.abs(e); + return function(r) { + return r.lift(new Zu(n, t)); + }; + } + function tn(e, t) { + return function(n) { + return n.lift(new $u(e, t)); + }; + } + function $d(e) { + return e === void 0 && (e = av), function(t) { + return t.lift(new bv(e)); + }; + } + function av() { + return new eh(); + } + function hb(e) { + return function(t) { + return e === 0 ? Qf() : t.lift(new cv(e)); + }; + } + function fh(e) { + return function(t) { + return t.lift(new dv(e)); + }; + } + function Ca(e, t) { + var n = 2 <= arguments.length; + return function(r) { + return r.pipe(e ? yb(function(o, i) { + return e(o, i, r); + }) : wd, hb(1), n ? sn(t) : $d(function() { + return new eh(); + })); + }; + } + function ev() { + return function(e) { + return e.lift(new fv()); + }; + } + function un(e) { + return function(t) { + return e === 0 ? Qf() : t.lift(new gv(e)); + }; + } + function Uf(e) { + return function(t) { + return t.lift(new hv(e)); + }; + } + function gh(e, t) { + var n = !1; + return 2 <= arguments.length && (n = !0), function(r) { + return r.lift(new iv(e, t, n)); + }; + } + function vn(e, t) { + return 2 <= arguments.length ? function(n) { + return Zi(gh(e, t), un(1), sn(t))(n); + } : function(n) { + return Zi(gh(function(r, o, i) { + return e(r, o, i + 1); + }), un(1))(n); + }; + } + function jv(e, t) { + return function(n) { + var r = typeof e == "function" ? e : function() { + return e; + }; + if (typeof t == "function") + return n.lift(new kv(r, t)); + var o = Object.create(n, lv); + return o.source = n, o.subjectFactory = r, o; + }; + } + function Re(e) { + return function(t) { + return t.lift(new mv(e, t)); + }; + } + function nv() { + return new rb(); + } + function Se() { + return function(e) { + return dn()(jv(nv)(e)); + }; + } + function wn(e, t, n) { + var r = e && qa(e) === "object" ? e : { bufferSize: e, windowTime: t, refCount: !1, scheduler: n }; + return function(o) { + return o.lift(ov(r)); + }; + } + function ov(e) { + var t, n, r = e.bufferSize, o = r === void 0 ? Number.POSITIVE_INFINITY : r, i = (r = e.windowTime) === void 0 ? Number.POSITIVE_INFINITY : r, s = e.refCount, u = e.scheduler, a = 0, l = !1, f = !1; + return function(h) { + if (a++, !t || l) { + l = !1; + var d = (t = new Te(o, i, u)).subscribe(this); + n = h.subscribe({ next: function(p) { + t.next(p); + }, error: function(p) { + l = !0, t.error(p); + }, complete: function() { + f = !0, n = void 0, t.complete(); + } }), f && (n = void 0); + } else + d = t.subscribe(this); + this.add(function() { + a--, d.unsubscribe(), d = void 0, n && !f && s && a === 0 && (n.unsubscribe(), t = n = void 0); + }); + }; + } + function Kb(e, t) { + return typeof t == "function" ? function(n) { + return n.pipe(Kb(function(r, o) { + return Jc(e(r, o)).pipe(Ea(function(i, s) { + return t(r, i, o, s); + })); + })); + } : function(n) { + return n.lift(new pv(e)); + }; + } + function Kc(e) { + return function(t) { + return t.lift(new qv(e)); + }; + } + function sa(e, t, n) { + return function(r) { + return r.lift(new rv(e, t, n)); + }; + } + function sv(e, t, n) { + return t === void 0 && (t = cd), n === void 0 && (n = tv), function(r) { + return r.lift(new uv(e, t, n.leading, n.trailing)); + }; + } + function vv(e) { + e.subscriber.clearThrottle(); + } + function wv(e, t, n) { + return n === void 0 && (n = cd), function(r) { + var o = e instanceof Date && !isNaN(+e), i = o ? +e - n.now() : Math.abs(e); + return r.lift(new xv(i, o, t, n)); + }; + } + function Lb(e, t) { + return t === void 0 && (t = cd), wv(e, ra(new Tb()), t); + } + function yv() { + for (var e = [], t = 0; t < arguments.length; t++) + e[t] = arguments[t]; + return function(n) { + var r; + return typeof e[e.length - 1] == "function" && (r = e.pop()), n.lift(new zv(e, r)); + }; + } + function xn(e) { + (gj || e) && (yn.abort(), e && (yn = new AbortController()), gj = e); + } + function zn(e, t, n, r, o) { + e !== t && An(t, function(i, s) { + if (o || (o = new Ie()), Gb(i)) { + i = o; + var u = hj(e, s), a = hj(t, s), l = i.get(a); + if (l) + ij(e, s, l); + else { + var f = (l = r ? r(u, a, s + "", e, t, i) : void 0) === void 0; + if (f) { + var h = ub(a), d = !h && Nf(a), p = !h && !d && Ui(a); + l = a, h || d || p ? ub(u) ? l = u : Hc(u) && ae(u) ? l = Pi(u) : d ? (f = !1, l = Nm(a, !0)) : p ? (f = !1, l = Bn(a, !0)) : l = [] : Cn(a) || Vf(a) ? (l = u, Vf(u) ? l = Ue(u, Of(u)) : Gb(u) && !jj(u) || (l = Om(a))) : f = !1; + } + f && (i.set(a, l), zn(l, a, n, r, i), i.delete(a)), ij(e, s, l); + } + } else + (u = r ? r(hj(e, s), i, s + "", e, t, o) : void 0) === void 0 && (u = i), ij(e, s, u); + }, Of); + } + function Av(e) { + var t = 1, n = kj; + (1 >= arguments.length ? 0 : arguments.length - 1) == 1 ? typeof (1 >= arguments.length ? void 0 : arguments[1]) == "number" ? t = 1 >= arguments.length ? void 0 : arguments[1] : n = 1 >= arguments.length ? void 0 : arguments[1] : (1 >= arguments.length ? 0 : arguments.length - 1) == 2 && (t = 1 >= arguments.length ? void 0 : arguments[1], n = 2 >= arguments.length ? void 0 : arguments[2]); + var r = t || 1; + return function(o) { + return o.pipe(gh(function(i, s) { + var u = n.now(), a = u - e; + if ((i = i.filter(function(h) { + return h.until > a; + })).length >= r) { + var l = i[i.length - 1], f = i[0].until + e * Math.floor(i.length / r); + i.push({ delay: l.until < u ? f - u : f - l.until, until: f, value: s }); + } else + i.push({ delay: 0, until: u, value: s }); + return i; + }, []), Ea(function(i) { + return i[i.length - 1]; + }), fj(function(i) { + var s = ob(i.value); + return i.delay ? s.pipe(Zd(i.delay, n)) : s; + })); + }; + } + function Bv(e, t) { + var n = (t = t === void 0 ? { protocols: Dn, makeWebSocket: En } : t).protocols, r = n === void 0 ? Dn : n, o = (t = t.makeWebSocket) === void 0 ? En : t; + return new ua(function(i) { + var s, u = new rb(), a = o(e, r), l = !1, f = !1, h = !1, d = function(p) { + if (s) + throw l = !0, p = Error("Web socket message factory function called more than once"), i.error(p), p; + return s = p.subscribe(function(v) { + a.send(v); + }), u; + }; + return a.onopen = function() { + h = !0, f ? (l = !0, a.close()) : i.next(d); + }, a.onmessage = function(p) { + u.next(p.data); + }, a.onerror = function(p) { + l = !0, i.error(Error(p.message)); + }, a.onclose = function(p) { + l || (l = !0, f ? (i.complete(), u.complete()) : i.error(Error(p.code === 1e3 ? "Normal closure" : p.reason))); + }, function() { + f = !0, s && s.unsubscribe(), l || (l = !0, h && a.close()); + }; + }); + } + function hh() { + this._listeners = {}; + } + function Fn(e) { + return typeof Float32Array != "undefined" ? function() { + function t(a, l, f) { + i[0] = a, l[f] = s[0], l[f + 1] = s[1], l[f + 2] = s[2], l[f + 3] = s[3]; + } + function n(a, l, f) { + i[0] = a, l[f] = s[3], l[f + 1] = s[2], l[f + 2] = s[1], l[f + 3] = s[0]; + } + function r(a, l) { + return s[0] = a[l], s[1] = a[l + 1], s[2] = a[l + 2], s[3] = a[l + 3], i[0]; + } + function o(a, l) { + return s[3] = a[l], s[2] = a[l + 1], s[1] = a[l + 2], s[0] = a[l + 3], i[0]; + } + var i = new Float32Array([-0]), s = new Uint8Array(i.buffer), u = s[3] === 128; + e.writeFloatLE = u ? t : n, e.writeFloatBE = u ? n : t, e.readFloatLE = u ? r : o, e.readFloatBE = u ? o : r; + }() : function() { + function t(r, o, i, s) { + var u = 0 > o ? 1 : 0; + if (u && (o = -o), o === 0) + r(0 < 1 / o ? 0 : 2147483648, i, s); + else if (isNaN(o)) + r(2143289344, i, s); + else if (34028234663852886e22 < o) + r((u << 31 | 2139095040) >>> 0, i, s); + else if (11754943508222875e-54 > o) + r((u << 31 | Math.round(o / 1401298464324817e-60)) >>> 0, i, s); + else { + var a = Math.floor(Math.log(o) / Math.LN2); + r((u << 31 | a + 127 << 23 | 8388607 & Math.round(o * Math.pow(2, -a) * 8388608)) >>> 0, i, s); + } + } + function n(r, o, i) { + return i = r(o, i), r = 2 * (i >> 31) + 1, o = i >>> 23 & 255, i &= 8388607, o === 255 ? i ? NaN : 1 / 0 * r : o === 0 ? 1401298464324817e-60 * r * i : r * Math.pow(2, o - 150) * (i + 8388608); + } + e.writeFloatLE = t.bind(null, Gn), e.writeFloatBE = t.bind(null, Hn), e.readFloatLE = n.bind(null, In), e.readFloatBE = n.bind(null, Jn); + }(), typeof Float64Array != "undefined" ? function() { + function t(a, l, f) { + i[0] = a, l[f] = s[0], l[f + 1] = s[1], l[f + 2] = s[2], l[f + 3] = s[3], l[f + 4] = s[4], l[f + 5] = s[5], l[f + 6] = s[6], l[f + 7] = s[7]; + } + function n(a, l, f) { + i[0] = a, l[f] = s[7], l[f + 1] = s[6], l[f + 2] = s[5], l[f + 3] = s[4], l[f + 4] = s[3], l[f + 5] = s[2], l[f + 6] = s[1], l[f + 7] = s[0]; + } + function r(a, l) { + return s[0] = a[l], s[1] = a[l + 1], s[2] = a[l + 2], s[3] = a[l + 3], s[4] = a[l + 4], s[5] = a[l + 5], s[6] = a[l + 6], s[7] = a[l + 7], i[0]; + } + function o(a, l) { + return s[7] = a[l], s[6] = a[l + 1], s[5] = a[l + 2], s[4] = a[l + 3], s[3] = a[l + 4], s[2] = a[l + 5], s[1] = a[l + 6], s[0] = a[l + 7], i[0]; + } + var i = new Float64Array([-0]), s = new Uint8Array(i.buffer), u = s[7] === 128; + e.writeDoubleLE = u ? t : n, e.writeDoubleBE = u ? n : t, e.readDoubleLE = u ? r : o, e.readDoubleBE = u ? o : r; + }() : function() { + function t(r, o, i, s, u, a) { + var l = 0 > s ? 1 : 0; + if (l && (s = -s), s === 0) + r(0, u, a + o), r(0 < 1 / s ? 0 : 2147483648, u, a + i); + else if (isNaN(s)) + r(0, u, a + o), r(2146959360, u, a + i); + else if (17976931348623157e292 < s) + r(0, u, a + o), r((l << 31 | 2146435072) >>> 0, u, a + i); + else if (22250738585072014e-324 > s) + r((s /= 5e-324) >>> 0, u, a + o), r((l << 31 | s / 4294967296) >>> 0, u, a + i); + else { + var f = Math.floor(Math.log(s) / Math.LN2); + f === 1024 && (f = 1023), r(4503599627370496 * (s *= Math.pow(2, -f)) >>> 0, u, a + o), r((l << 31 | f + 1023 << 20 | 1048576 * s & 1048575) >>> 0, u, a + i); + } + } + function n(r, o, i, s, u) { + return o = r(s, u + o), s = r(s, u + i), r = 2 * (s >> 31) + 1, o = 4294967296 * (1048575 & s) + o, (i = s >>> 20 & 2047) === 2047 ? o ? NaN : 1 / 0 * r : i === 0 ? 5e-324 * r * o : r * Math.pow(2, i - 1075) * (o + 4503599627370496); + } + e.writeDoubleLE = t.bind(null, Gn, 0, 4), e.writeDoubleBE = t.bind(null, Hn, 4, 0), e.readDoubleLE = n.bind(null, In, 0, 4), e.readDoubleBE = n.bind(null, Jn, 4, 0); + }(), e; + } + function Gn(e, t, n) { + t[n] = 255 & e, t[n + 1] = e >>> 8 & 255, t[n + 2] = e >>> 16 & 255, t[n + 3] = e >>> 24; + } + function Hn(e, t, n) { + t[n] = e >>> 24, t[n + 1] = e >>> 16 & 255, t[n + 2] = e >>> 8 & 255, t[n + 3] = 255 & e; + } + function In(e, t) { + return (e[t] | e[t + 1] << 8 | e[t + 2] << 16 | e[t + 3] << 24) >>> 0; + } + function Jn(e, t) { + return (e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3]) >>> 0; + } + function vb(e, t) { + this.lo = e >>> 0, this.hi = t >>> 0; + } + function Wf(e, t, n) { + this.fn = e, this.len = t, this.next = void 0, this.val = n; + } + function lj() { + } + function Cv(e) { + this.head = e.head, this.tail = e.tail, this.len = e.len, this.next = e.states; + } + function Aa() { + this.len = 0, this.tail = this.head = new Wf(lj, 0, 0), this.states = null; + } + function mj(e, t, n) { + t[n] = 255 & e; + } + function nj(e, t) { + this.len = e, this.next = void 0, this.val = t; + } + function oj(e, t, n) { + for (; e.hi; ) + t[n++] = 127 & e.lo | 128, e.lo = (e.lo >>> 7 | e.hi << 25) >>> 0, e.hi >>>= 7; + for (; 127 < e.lo; ) + t[n++] = 127 & e.lo | 128, e.lo >>>= 7; + t[n++] = e.lo; + } + function pj(e, t, n) { + t[n] = 255 & e, t[n + 1] = e >>> 8 & 255, t[n + 2] = e >>> 16 & 255, t[n + 3] = e >>> 24; + } + function Lc() { + qj.call(this); + } + function Dv(e, t, n) { + 40 > e.length ? pa.utf8.write(e, t, n) : t.utf8Write ? t.utf8Write(e, n) : t.write(e, n); + } + function wc(e, t) { + return RangeError("index out of range: " + e.pos + " + " + (t || 1) + " > " + e.len); + } + function ib(e) { + this.buf = e, this.pos = 0, this.len = e.length; + } + function rj() { + var e = new Kn(0, 0), t = 0; + if (!(4 < this.len - this.pos)) { + for (; 3 > t; ++t) { + if (this.pos >= this.len) + throw wc(this); + if (e.lo = (e.lo | (127 & this.buf[this.pos]) << 7 * t) >>> 0, 128 > this.buf[this.pos++]) + return e; + } + return e.lo = (e.lo | (127 & this.buf[this.pos++]) << 7 * t) >>> 0, e; + } + for (; 4 > t; ++t) + if (e.lo = (e.lo | (127 & this.buf[this.pos]) << 7 * t) >>> 0, 128 > this.buf[this.pos++]) + return e; + if (e.lo = (e.lo | (127 & this.buf[this.pos]) << 28) >>> 0, e.hi = (e.hi | (127 & this.buf[this.pos]) >> 4) >>> 0, 128 > this.buf[this.pos++]) + return e; + if (t = 0, 4 < this.len - this.pos) { + for (; 5 > t; ++t) + if (e.hi = (e.hi | (127 & this.buf[this.pos]) << 7 * t + 3) >>> 0, 128 > this.buf[this.pos++]) + return e; + } else + for (; 5 > t; ++t) { + if (this.pos >= this.len) + throw wc(this); + if (e.hi = (e.hi | (127 & this.buf[this.pos]) << 7 * t + 3) >>> 0, 128 > this.buf[this.pos++]) + return e; + } + throw Error("invalid varint encoding"); + } + function ih(e, t) { + return (e[t - 4] | e[t - 3] << 8 | e[t - 2] << 16 | e[t - 1] << 24) >>> 0; + } + function Ln() { + if (this.pos + 8 > this.len) + throw wc(this, 8); + return new Kn(ih(this.buf, this.pos += 4), ih(this.buf, this.pos += 4)); + } + function be(e) { + sj.call(this, e); + } + function Xf(e, t, n) { + if (typeof e != "function") + throw TypeError("rpcImpl must be a function"); + pa.EventEmitter.call(this), this.rpcImpl = e, this.requestDelimited = !!t, this.responseDelimited = !!n; + } + function Mn(e) { + var t = []; + return function n(r) { + if (r === null || qa(r) !== "object") + return r; + if (t.indexOf(r) !== -1) + return "[Circular]"; + if (t.push(r), typeof r.toJSON == "function") + try { + var o = n(r.toJSON()); + return t.pop(), o; + } catch (i) { + return "[Throws: " + (i ? i.message : "?") + "]"; + } + return Array.isArray(r) ? (o = r.map(n), t.pop(), o) : (o = Object.keys(r).reduce(function(i, s) { + t: { + if (Ev.call(r, s)) + try { + var u = r[s]; + break t; + } catch (a) { + u = "[Throws: " + (a ? a.message : "?") + "]"; + break t; + } + u = r[s]; + } + return i[s] = n(u), i; + }, {}), t.pop(), o); + }(e); + } + function Fv(e) { + if (!(100 < (e = String(e)).length) && (e = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e))) { + var t = parseFloat(e[1]); + switch ((e[2] || "ms").toLowerCase()) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return 315576e5 * t; + case "weeks": + case "week": + case "w": + return 6048e5 * t; + case "days": + case "day": + case "d": + return 864e5 * t; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return 36e5 * t; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return 6e4 * t; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return 1e3 * t; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return t; + } + } + } + function jh(e, t, n, r) { + return Math.round(e / n) + " " + r + (t >= 1.5 * n ? "s" : ""); + } + function Gv(e) { + var t = e.areas, n = e.excludedArea; + if (t.length === 1 && t[0] === S.GLOBAL && n === S.CHINA) + return Ve([S.OVERSEA]); + if (t.includes(S.GLOBAL)) { + if (e = Yf(kh).filter(function(i) { + return i !== S.GLOBAL && i !== S.OVERSEA; + }), n in Zf) { + t = Zf[n]; + var r = [].concat(Z(t != null ? t : []), [n]); + return Ve(e.filter(function(i) { + return !r.includes(i); + })); + } + if (Nn(n)) { + var o = Hv(n); + return Ve(e.filter(function(i) { + return i !== n && i !== o; + })); + } + } + if (Nn(n) || n in Zf) + return Ve(t); + throw new ca("Invalid excludedArea area config"); + } + function jb(e, t, n) { + n === void 0 && (n = Object.getOwnPropertyDescriptor(e, t)); + var r = n.value; + return n.value = function() { + for (var o = this, i = arguments.length, s = Array(i), u = 0; u < i; u++) + s[u] = arguments[u]; + this.invokeTracker.apply(this, ["%s: ".concat(0 < s.length ? "%s with args: ".concat(s.map(function() { + return "%o"; + })) : "%s"), this.name, t].concat(Z(s.map(We)))); + try { + var a = r.apply(this, s); + } catch (f) { + throw this.logError.apply(this, ["".concat(f.code !== void 0 ? "Error Code ".concat(f.code, ": ") : "", "%s failed").concat(0 < s.length ? " with args: ".concat(s.map(function() { + return "%o"; + })) : ""), t].concat(Z(s.map(We)))), f.originalError && this.logError(f.originalError), this.errorTracker(f), f; + } + var l = Date.now(); + return ma(N.mark(function f() { + var h, d; + return N.wrap(function(p) { + for (; ; ) + switch (p.prev = p.next) { + case 0: + return p.prev = 0, p.next = 3, a; + case 3: + h = p.sent, p.next = 12; + break; + case 6: + return p.prev = 6, p.t0 = p.catch(0), o.logError.apply(o, ["".concat(p.t0.code !== void 0 ? "Error Code ".concat(p.t0.code, ": ") : "", "%s failed").concat(0 < s.length ? " with args: ".concat(s.map(function() { + return "%o"; + })) : ""), t].concat(Z(s.map(We)))), p.t0.originalError && o.logError(p.t0.originalError), o.errorTracker(p.t0), p.abrupt("return"); + case 12: + h !== a ? h === void 0 ? o.resultTracker("%s promise resolves after %dms", t, Date.now() - l) : o.resultTracker("%s promise resolves after %dms, result is %o", t, Date.now() - l, We(h)) : $c(h) !== "Object" || De(h) ? o.resultTracker("%s result is %o", t, We(h)) : o.resultTracker("%s result is %s", t, h.name || ((d = h.constructor) === null || d === void 0 ? void 0 : d.name)); + case 13: + case "end": + return p.stop(); + } + }, f, null, [[0, 6]]); + }))(), a; + }, n; + } + function Mc(e, t, n) { + n === void 0 && (n = Object.getOwnPropertyDescriptor(e, t)); + var r = n.value; + return n.value = function() { + for (var o = this, i = arguments.length, s = Array(i), u = 0; u < i; u++) + s[u] = arguments[u]; + this.invokeTracker.apply(this, ["%s: ".concat(0 < s.length ? "%s with args: ".concat(s.map(function() { + return "%o"; + })) : "%s"), this.name, t].concat(s)); + try { + var a = r.apply(this, s); + } catch (f) { + throw this.logError.apply(this, ["".concat(f.code !== void 0 ? "Error Code ".concat(f.code, ": ") : "", "%s failed").concat(0 < s.length ? " with args: ".concat(s.map(function() { + return "%o"; + })) : ""), t].concat(s)), f.originalError && this.logError(f.originalError), this.errorTracker(f), f; + } + var l = Date.now(); + return ma(N.mark(function f() { + var h, d; + return N.wrap(function(p) { + for (; ; ) + switch (p.prev = p.next) { + case 0: + return p.prev = 0, p.next = 3, a; + case 3: + h = p.sent, p.next = 12; + break; + case 6: + return p.prev = 6, p.t0 = p.catch(0), o.logError.apply(o, ["".concat(p.t0.code !== void 0 ? "Error Code ".concat(p.t0.code, ": ") : "", "%s failed").concat(0 < s.length ? " with args: ".concat(s.map(function() { + return "%o"; + })) : ""), t].concat(s)), p.t0.originalError && o.logError(p.t0.originalError), o.errorTracker(p.t0), p.abrupt("return"); + case 12: + h !== a ? h === void 0 ? o.resultTracker("%s promise resolves after %dms", t, Date.now() - l) : o.resultTracker("%s promise resolves after %dms, result is %o", t, Date.now() - l, h) : $c(h) !== "Object" || De(h) ? o.resultTracker("%s result is %o", t, h) : o.resultTracker("%s result is %s", t, h.name || ((d = h.constructor) === null || d === void 0 ? void 0 : d.name)); + case 13: + case "end": + return p.stop(); + } + }, f, null, [[0, 6]]); + }))(), a; + }, n; + } + function bb(e, t, n) { + return tj.apply(this, arguments); + } + function tj() { + return (tj = ma(N.mark(function e(t, n, r) { + var o, i, s, u = arguments; + return N.wrap(function(a) { + for (; ; ) + switch (a.prev = a.next) { + case 0: + return o = 3 < u.length && u[3] !== void 0 && u[3], i = Iv[t].encode(n).finish(), s = function() { + var l = ma(N.mark(function f(h) { + var d, p, v, y = arguments; + return N.wrap(function(g) { + for (; ; ) + switch (g.prev = g.next) { + case 0: + if (!(3 < (p = 1 < y.length && y[1] !== void 0 ? y[1] : 0))) { + g.next = 3; + break; + } + return g.abrupt("return"); + case 3: + if (v = Xe(v = r ? "https://".concat((d = fa == null ? void 0 : fa.PROXY_NGINX[0]) !== null && d !== void 0 ? d : "webrtc-cloud-proxy.sd-rtn.com", "/rs/?h=").concat(h, "&p=443&d=events/proto-raw") : "https://".concat(h, "/events/proto-raw"), "sentTs", Math.ceil(Date.now() / 1e3).toString()), v = Xe(v, "id", Jv[t].toString()), !o) { + g.next = 9; + break; + } + return g.next = 9, Kv(1e4); + case 9: + return g.next = 11, lh(v, { body: i, timeout: 2e4, headers: { "Content-Type": "application/octet-stream" } }).catch(function(m) { + return s(h, p + 1); + }); + case 11: + case "end": + return g.stop(); + } + }, f); + })); + return function(f) { + return l.apply(this, arguments); + }; + }(), a.prev = 3, a.next = 6, s((fa == null ? void 0 : fa.EVENT_REPORT_DOMAIN[0]) || $f(null) && null || "webcollector-rtm.agora.io"); + case 6: + a.next = 12; + break; + case 8: + return a.prev = 8, a.t0 = a.catch(3), a.next = 12, s(fa && On(1 < (fa == null ? void 0 : fa.EVENT_REPORT_DOMAIN.length) ? fa == null ? void 0 : fa.EVENT_REPORT_DOMAIN.slice(1) : fa == null ? void 0 : fa.EVENT_REPORT_DOMAIN) || "rtm.statscollector.sd-rtn.com"); + case 12: + case "end": + return a.stop(); + } + }, e, null, [[3, 8]]); + }))).apply(this, arguments); + } + function Xa(e) { + return e === void 0 ? P.fromNumber(0) : P.fromNumber(Date.now() - e); + } + function Ta(e) { + return typeof e == "string" && /^[\s\w!#$%&()+,.:;<=>?@[\]^{|}~-]{1,64}$/.test(e) && e !== "null"; + } + function Pn(e) { + try { + var t = e.split(".").map(function(r) { + return Number(r); + }); + } catch (r) { + return !1; + } + if (t.length !== 4 || t[0] === 0) + return !1; + for (e = 0; e < t.length; e++) { + var n = t[e]; + if (!Number.isInteger(n) || 0 > n || 255 < n) + return !1; + } + return !0; + } + function Qn(e, t) { + if (!Array.isArray(t) || t.length === 0 || 32 < t.length || t.some(function(n) { + return n.length === 0 || 32 < n.length; + })) + throw new ca("arguments is not valid", gb); + if (!Ta(e)) + throw new ca("ID is invalid", gb); + } + function ag(e) { + var t = e.attributes, n = e.attrSizeMap, r = e.maxAttrsCount, o = e.maxAttrValueSize; + if (e = e.maxTotalSize, !De(t)) + throw new ca("attributes must be an object", gb); + if (Object.keys(t).length > r) + throw new ic("Exceed the limit of ".concat(r, " attributes"), Ye); + if (Object.keys(t).length === 0) + throw new ca("The attributes is an empty object", gb); + var i = 0, s = 0; + for (t = Object.entries(t); s < t.length; s++) { + var u = $a(t[s], 2), a = u[1]; + u = new Blob([u[0]]).size; + var l = new Blob([a]).size; + if (u === 0 || 32 < u) + throw new ca("Invalid attribute key", gb); + if (l > o) + throw new ic("Invalid attribute value, over the limit of ".concat(o, " bytes"), Ye); + if (typeof a != "string" || a.length === 0) + throw new ca("Invalid attribute value", gb); + i += u, i += l; + } + if (i > e) + throw new ic("The attributes size overflow", Ye); + if (n !== void 0) { + if (Object.keys(n).length > r) + throw new ic("Exceed the limit of ".concat(r, " attributes"), Ye); + for (i = r = 0, n = Object.entries(n); i < n.length; i++) { + if (s = (t = $a(n[i], 2))[1], (t = new Blob([t[0]]).size) === 0) + throw new ca("Invalid attribute key", gb); + if (s > o) + throw new ic("Invalid attribute value, over the limit of ".concat(o, " bytes"), Ye); + r += t, r += s; + } + if (r > e) + throw new ic("The attributes size overflow", Ye); + } + } + function mh(e, t) { + return Math.floor(Math.random() * (Math.floor(t) - Math.ceil(e) + 1)) + e; + } + function nh() { + var e = mh(0, 4294967295), t = mh(1, 4294967295); + return new P(e, t, !0); + } + function sb(e) { + return e.toString().padEnd(32, "0"); + } + function Rn(e, t) { + return new TypeError("Unexpected ".concat(e, ": ").concat(t)); + } + function Sn(e, t) { + return e = e.split(".").map(function(n) { + return Number(n); + }), t = t.split(".").map(function(n) { + return Number(n); + }), Math.sqrt(1e3 * Math.pow(e[0] - t[0], 2) + 100 * Math.pow(e[1] - t[1], 2) + 10 * Math.pow(e[2] - t[2], 2) + 1 * Math.pow(e[3] - t[3], 2)); + } + function Tn(e) { + return e.lessThanOrEqual(Number.MAX_SAFE_INTEGER) ? e.toNumber() : e.toString(); + } + function uj(e, t) { + t = "".concat(e).concat(t || ""); + var n = Un.get(t) || 1; + return Un.set(t, n + 1), "".concat(e).concat(n); + } + function Vn(e, t) { + var n = typeof t == "number" ? t : t !== void 0 && typeof t != "string" ? t.code : void 0; + return t = typeof t != "number" && typeof t != "string" && t !== void 0 && t.serverCode !== void 0 ? t.serverCode : void 0, n = "".concat(n !== void 0 ? " Error Code ".concat(n) : "").concat(t !== void 0 ? ", server Code ".concat(t) : ""), e = typeof e == "string" && e ? oh(e) : Array.isArray(e) && typeof e[0] == "string" && e[0] ? oh(Wn.apply(void 0, [e[0]].concat(Z(e.slice(1))))) : "", "".concat(n === "" ? "" : "".concat(n, " - ")).concat(e); + } + function Kv(e, t) { + return vj.apply(this, arguments); + } + function vj() { + return (vj = ma(N.mark(function e(t, n) { + return N.wrap(function(r) { + for (; ; ) + switch (r.prev = r.next) { + case 0: + if (!n || !n.aborted) { + r.next = 2; + break; + } + return r.abrupt("return"); + case 2: + return r.abrupt("return", new Promise(function(o) { + setTimeout(o, t), n == null || n.addEventListener("abort", o); + })); + case 3: + case "end": + return r.stop(); + } + }, e); + }))).apply(this, arguments); + } + function lh(e, t, n) { + return wj.apply(this, arguments); + } + function wj() { + return (wj = ma(N.mark(function e(t, n, r) { + var o, i, s, u, a, l, f, h, d, p, v, y, g, m, E, w, C, q, J, B, Y, _e, k, L, T, U; + return N.wrap(function(O) { + for (; ; ) + switch (O.prev = O.next) { + case 0: + if (o = n.body, i = n.headers, s = i === void 0 ? {} : i, u = n.timeout, a = u === void 0 ? 1e4 : u, l = n.signal, f = n.withCredentials, h = f !== void 0 && f, d = (r || {}).useBinaryResponse, p = d !== void 0 && d, (v = new XMLHttpRequest()).open("POST", t, !0), v.responseType = p ? "arraybuffer" : "text", v.withCredentials = h, v.timeout = a, y = o instanceof FormData, g = o instanceof Uint8Array, !(1 < (m = Object.keys(s).filter(function(_) { + return _.toLowerCase() === "content-type"; + })).length)) { + O.next = 14; + break; + } + throw new RangeError("multiple content-type"); + case 14: + m.length === 0 && (g ? s["Content-Type"] = "application/octet-stream" : y || (s["Content-Type"] = "application/json")); + case 15: + if ("setRequestHeader" in v) { + O.next = 46; + break; + } + return v.abort(), O.next = 19, fetch(t, { body: y || g ? o : JSON.stringify(o), cache: "no-cache", credentials: h ? "include" : "same-origin", headers: s, method: "POST", mode: "cors", referrer: "no-referrer", signal: l }); + case 19: + if (E = O.sent, !(200 <= (w = E.status) && 300 > w || w === 304)) { + O.next = 31; + break; + } + if (!p) { + O.next = 27; + break; + } + return O.next = 25, E.arrayBuffer(); + case 25: + return C = O.sent, O.abrupt("return", { status: w, responseData: C }); + case 27: + return O.next = 29, E.text(); + case 29: + return q = O.sent, O.abrupt("return", { status: w, responseText: q }); + case 31: + return J = new Ja(["Post XHR failure, status %d", w]), O.prev = 32, O.next = 35, E.text(); + case 35: + throw B = O.sent, J.statusCode = w, J.message = B || "Request failed, status ".concat(w), J; + case 41: + throw O.prev = 41, O.t0 = O.catch(32), J.statusCode = w, J.message = "Request failed, status ".concat(w), J; + case 46: + if (Object.keys(s).length !== 0) + for (Y = 0, _e = Object.entries(s); Y < _e.length; Y++) + k = $a(_e[Y], 2), L = k[0], T = k[1], v.setRequestHeader(L, T); + return l !== void 0 && (U = function _() { + v.abort(), l.removeEventListener("abort", _); + }, l.addEventListener("abort", U)), y || g ? v.send(o) : v.send(JSON.stringify(o)), O.abrupt("return", new Promise(function(_, A) { + v.onload = function() { + var j = v.status; + if (200 <= j && 300 > j || j === 304) + _(p ? { status: j, responseData: v.response } : { status: j, responseText: v.responseText }); + else { + var F = new Ja(["Post XHR failure, status %d", j]); + F.statusCode = j, F.message = v.response || "Request failed, status ".concat(v.status), A(F); + } + }, v.ontimeout = function(j) { + A(new Ub(["XHR request timed out after %d ms", a], { originalError: j })); + }, v.onerror = function() { + var j = new Ja(["Post XHR failure, status %d", v.status]); + j.statusCode = v.status, j.message = v.response || "Request failed, status ".concat(v.status), A(j); + }, v.onabort = function() { + try { + A(new DOMException("The request aborted.", "AbortError")); + } catch (F) { + var j = Error("The request aborted."); + j.name = "AbortError", A(j); + } + }; + })); + case 50: + case "end": + return O.stop(); + } + }, e, null, [[32, 41]]); + }))).apply(this, arguments); + } + function Xn(e, t) { + if (!De(e)) + throw new ca("message object is not a plain object", t); + if (e.messageType === void 0) + if (e.rawMessage instanceof Uint8Array) { + if (e.messageType = "RAW", e.text !== void 0) + throw new ca("Raw messages cannot have text property. Use description instead", t); + } else { + if (typeof e.text != "string") + throw new ca("messageType is undefined", t); + if (e.messageType = "TEXT", e.rawMessage !== void 0) + throw new ca("Text messages cannot have rawMessage property", t); + } + } + function ph(e) { + return xj.apply(this, arguments); + } + function xj() { + return (xj = ma(N.mark(function e(t) { + var n, r, o, i, s, u, a, l, f, h, d, p, v, y, g, m, E, w, C, q, J; + return N.wrap(function(B) { + for (; ; ) + switch (B.prev = B.next) { + case 0: + if (n = t.message, r = t.peerId, o = t.toPeer, i = t.session, s = t.errorCodes, u = t.diff, a = t.logger, i !== void 0) { + B.next = 3; + break; + } + throw new da("The client is not logged in. Cannot do the operation", s.NOT_LOGGED_IN); + case 3: + if (l = !1, f = o ? n.messageType === "TEXT" ? Ka.P2pSMsgNoOfflineFlag : Ka.P2pRMsgNoOfflineFlag : n.messageType === "TEXT" ? Ka.ChannelSMsg : Ka.ChannelRMsg, n.messageType !== "TEXT" || !n.text.startsWith("AgoraRTMLegacyEndcallCompatibleMessagePrefix") || !o) { + B.next = 14; + break; + } + if (h = n.text.split("_"), d = $a(h, 3), p = d[0], v = d[1], d[2] !== void 0 && Ta(v) && p === "AgoraRTMLegacyEndcallCompatibleMessagePrefix") { + B.next = 13; + break; + } + throw i.emit("messageCount", { messageCategory: f, type: "common", key: "sentcount" }), i.emit("messageCount", { messageCategory: f, type: "common", key: "invalidmessagecount" }), new ca("Message is not valid", bg); + case 13: + l = !0; + case 14: + if (y = Date.now(), g = i.messageSentTimes.length - 1, !((m = i.messageSentTimes[g]) && m + 3e3 < y)) { + B.next = 21; + break; + } + i.messageSentTimes = [y], B.next = 34; + break; + case 21: + E = g; + case 22: + if (!(0 <= E)) { + B.next = 33; + break; + } + if (!(i.messageSentTimes[E] + 3e3 < y)) { + B.next = 26; + break; + } + return i.messageSentTimes = i.messageSentTimes.slice(E + 1, g + 1), B.abrupt("break", 33); + case 26: + if (!(180 <= g - E + 1)) { + B.next = 30; + break; + } + throw i.emit("messageCount", { messageCategory: f, type: "common", key: "sentcount" }), i.emit("messageCount", { messageCategory: f, type: "common", key: "toooftencount" }), new ic("Message sent failed, exceeded the 180 message in 3 seconds", s.TOO_OFTEN); + case 30: + E--, B.next = 22; + break; + case 33: + i.messageSentTimes.push(y); + case 34: + B.t0 = n.messageType, B.next = B.t0 === "TEXT" ? 37 : B.t0 === "RAW" ? 42 : 44; + break; + case 37: + if (!l) { + B.next = 41; + break; + } + return w = n.text.split("_"), C = $a(w, 3), q = C[1], J = C[2], a.info("[rtm-API] EndCall message send api is called"), B.abrupt("return", i.sendInvitationMessage({ peerId: r, type: "CallCancel", extra: J, channelId: q, callId: "0" })); + case 41: + return B.abrupt("return", i.sendTextMessage(n.text, r, o, 1e4 - u)); + case 42: + return n.description === void 0 && (n.description = ""), B.abrupt("return", i.sendRawMessage(n.rawMessage, n.description, r, o, 1e4 - u)); + case 44: + throw i.emit("messageCount", { messageCategory: f, type: "common", key: "sentcount" }), i.emit("messageCount", { messageCategory: f, type: "common", key: "invalidmessagecount" }), new ca("Invalid message type", bg); + case 47: + case "end": + return B.stop(); + } + }, e); + }))).apply(this, arguments); + } + function Lv(e) { + var t = !(1 < arguments.length && arguments[1] !== void 0) || arguments[1], n = e.replace(/(https?:\/\/)?(www.)?/i, ""); + return t || (n = n.split(".").slice(e.length - 2).join(".")), n.indexOf("/") !== -1 ? n.split("/")[0] : n; + } + function La(e) { + if (typeof e != "string") + return "[Sensitive Info]"; + var t = Math.floor(0.7 * e.length), n = e.length; + return Yn(e, t, n, "*".repeat(n - t)); + } + function Zn(e, t, n) { + function r(o) { + if (e === void 0) + return e; + if (Mm(o)) + return o; + if (Array.isArray(o)) + return o.map(r); + var i = {}, s = 0; + for (o = qh(o); s < o.length; s++) { + var u = $a(o[s], 2), a = u[0]; + if (typeof (u = u[1]) == "string" && n.includes(a)) { + i[a] = typeof u == "string" ? La(u) : "[Sensitive Info]"; + break; + } + t.includes(a) ? i[a] = "[Hidden Info]" : i[a] = u == null ? u : n.includes(a) ? "[Sensitive Info]" : r(u); + } + return i; + } + return Array.isArray(e) ? e.map(r) : r(e); + } + function $n(e) { + return Object.getOwnPropertyNames(e).forEach(function(t) { + qa(t = e[t]) == "object" && t !== null && $n(t); + }), Object.freeze(e); + } + function cg(e) { + return new TextDecoder("utf-8").decode(e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength)); + } + function rh(e) { + return new TextEncoder().encode(e).length; + } + function ao() { + for (var e = 0, t = arguments.length, n = Array(t), r = 0; r < t; r++) + n[r] = arguments[r]; + for (t = 0; t < n.length; t++) + e += n[t].length; + for (e = new Uint8Array(e), r = t = 0; r < n.length; r++) { + var o = n[r]; + e.set(o, t), t += o.length; + } + return e; + } + function Xe(e, t, n) { + var r = e.match(/([^?#]+)(\?[^#]*)?(#.*)?/); + if (e = r == null ? void 0 : r[1], r = r == null ? void 0 : r[2]) { + var o; + for (r = r.substr(1).split("&"), o = 0; o < r.length; o++) + if (r[o].split("=")[0] == t) { + r[o] = t + "=" + encodeURIComponent(n); + break; + } + return o == r.length && r.push(t + "=" + encodeURIComponent(n)), e + "?" + r.join("&"); + } + return e + "?" + t + "=" + encodeURIComponent(n); + } + function Yn(e, t, n, r) { + return typeof e != "string" ? "[Sensitive Info]" : e.substring(0, t) + r + e.substring(n); + } + function $f(e) { + return typeof e == "string" && e.length !== 0 && e !== "false" && e !== "null" && e !== "undefined"; + } + function Mv(e, t) { + var n = "".concat(e, "Uri"); + if (typeof (n = yj[n]) != "number" || n === 0) + throw new TypeError("Got Unknown URI Name"); + return t = new (e = bo[e])(t), t = e.encode(t).finish(), new Nv({ uri: n, data: t }); + } + function co(e, t) { + var n = $f(null); + return "".concat(e.split(".").join("-"), ".edge.").concat(n ? null : t ? "sd-rtn.com" : "agora.io"); + } + function sh(e, t) { + return P.fromValue(e).eq(t); + } + function th(e, t) { + var n = t === void 0 ? e.val : t, r = e.isBoolean; + t = e.isNumber; + var o = e.oneof, i = e.len; + if ([r, t, o].filter(function(s) { + return !s; + }).length !== 2) + throw new TypeError("invalid field type"); + if (n !== void 0 && (e = !1, o !== void 0 && (o = zj(o), Ov(o, sh).length === o.length && Pv(o, function(s) { + return sh(n, s); + }) !== void 0 && (e = !0)), r = r !== void 0 && (n === 0 || n === 1) && i === 1, t = t !== void 0 && n.toString(2).length <= i, !(e || r || t))) + throw Error("invalid field value"); + } + function eo(e) { + return e.reduce(function(t, n) { + return t.concat(n instanceof uh.UnsubscriptionError ? n.errors : n); + }, []); + } + function Qv(e, t) { + do + dg == 2147483647 ? dg = 0 : dg++; + while (Ze.hasOwnProperty(dg)); + var n = dg; + return Ze[n] = { callback: e, parameters: Array.prototype.slice.call(arguments, 2) }, Aj.postMessage({ name: "setInterval", fakeId: n, time: t }), n; + } + function fo(e) { + return function() { + var t = e(); + if (!t) + throw new da("Client is not logged in. Cannot do the operation"); + return t; + }; + } + var Ya = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof commonjsGlobal != "undefined" ? commonjsGlobal : typeof self != "undefined" ? self : {}, vh = function(e) { + return e && e.Math == Math && e; + }, R = vh(typeof globalThis == "object" && globalThis) || vh(typeof window == "object" && window) || vh(typeof self == "object" && self) || vh(typeof Ya == "object" && Ya) || function() { + return this; + }() || Function("return this")(), la = function(e) { + try { + return !!e(); + } catch (t) { + return !0; + } + }, wa = !la(function() { + return Object.defineProperty({}, 1, { get: function() { + return 7; + } })[1] != 7; + }), go = {}.propertyIsEnumerable, ho = Object.getOwnPropertyDescriptor, eg = ho && !go.call({ 1: 2 }, 1) ? function(e) { + return !!(e = ho(this, e)) && e.enumerable; + } : go, Nc = function(e, t) { + return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t }; + }, Rv = {}.toString, xc = function(e) { + return Rv.call(e).slice(8, -1); + }, Sv = "".split, fg = la(function() { + return !Object("z").propertyIsEnumerable(0); + }) ? function(e) { + return xc(e) == "String" ? Sv.call(e, "") : Object(e); + } : Object, Eb = function(e) { + if (e == null) + throw TypeError("Can't call method on " + e); + return e; + }, Mb = function(e) { + return fg(Eb(e)); + }, xa = function(e) { + return typeof e == "object" ? e !== null : typeof e == "function"; + }, Oc = function(e, t) { + if (!xa(e)) + return e; + var n, r; + if (t && typeof (n = e.toString) == "function" && !xa(r = n.call(e)) || typeof (n = e.valueOf) == "function" && !xa(r = n.call(e)) || !t && typeof (n = e.toString) == "function" && !xa(r = n.call(e))) + return r; + throw TypeError("Can't convert object to primitive value"); + }, pb = function(e) { + return Object(Eb(e)); + }, Tv = {}.hasOwnProperty, ka = function(e, t) { + return Tv.call(pb(e), t); + }, $e = R.document, wh = xa($e) && xa($e.createElement), io = !wa && !la(function() { + return Object.defineProperty(wh ? $e.createElement("div") : {}, "a", { get: function() { + return 7; + } }).a != 7; + }), jo = Object.getOwnPropertyDescriptor, dc = { f: wa ? jo : function(e, t) { + if (e = Mb(e), t = Oc(t, !0), io) + try { + return jo(e, t); + } catch (n) { + } + if (ka(e, t)) + return Nc(!eg.call(e, t), e[t]); + } }, Ia = function(e) { + if (!xa(e)) + throw TypeError(String(e) + " is not an object"); + return e; + }, ko = Object.defineProperty, qb = { f: wa ? ko : function(e, t, n) { + if (Ia(e), t = Oc(t, !0), Ia(n), io) + try { + return ko(e, t, n); + } catch (r) { + } + if ("get" in n || "set" in n) + throw TypeError("Accessors not supported"); + return "value" in n && (e[t] = n.value), e; + } }, kb = wa ? function(e, t, n) { + return qb.f(e, t, Nc(1, n)); + } : function(e, t, n) { + return e[t] = n, e; + }, Bj = function(e, t) { + try { + kb(R, e, t); + } catch (n) { + R[e] = t; + } + return t; + }, zd = R["__core-js_shared__"] || Bj("__core-js_shared__", {}), Uv = Function.toString; + typeof zd.inspectSource != "function" && (zd.inspectSource = function(e) { + return Uv.call(e); + }); + var Cj = zd.inspectSource, lo = R.WeakMap, Vv = typeof lo == "function" && /native code/.test(Cj(lo)), Ad = xb(function(e) { + (e.exports = function(t, n) { + return zd[t] || (zd[t] = n !== void 0 ? n : {}); + })("versions", []).push({ version: "3.12.1", mode: "global", copyright: "© 2021 Denis Pushkarev (zloirock.ru)" }); + }), Wv = 0, Xv = Math.random(), af = function(e) { + return "Symbol(" + String(e === void 0 ? "" : e) + ")_" + (++Wv + Xv).toString(36); + }, mo = Ad("keys"), xh = function(e) { + return mo[e] || (mo[e] = af(e)); + }, bf = {}, Yv = R.WeakMap; + if (Vv || zd.state) + var ce = zd.state || (zd.state = new Yv()), Zv = ce.get, no = ce.has, $v = ce.set, Dj = function(e, t) { + if (no.call(ce, e)) + throw new TypeError("Object already initialized"); + return t.facade = e, $v.call(ce, e, t), t; + }, yh = function(e) { + return Zv.call(ce, e) || {}; + }, Ej = function(e) { + return no.call(ce, e); + }; + else { + var cf = xh("state"); + bf[cf] = !0, Dj = function(e, t) { + if (ka(e, cf)) + throw new TypeError("Object already initialized"); + return t.facade = e, kb(e, cf, t), t; + }, yh = function(e) { + return ka(e, cf) ? e[cf] : {}; + }, Ej = function(e) { + return ka(e, cf); + }; + } + var cb = { set: Dj, get: yh, has: Ej, enforce: function(e) { + return Ej(e) ? yh(e) : Dj(e, {}); + }, getterFor: function(e) { + return function(t) { + var n; + if (!xa(t) || (n = yh(t)).type !== e) + throw TypeError("Incompatible receiver, " + e + " required"); + return n; + }; + } }, Za = xb(function(e) { + var t = cb.get, n = cb.enforce, r = String(String).split("String"); + (e.exports = function(o, i, s, u) { + var a = !!u && !!u.unsafe, l = !!u && !!u.enumerable; + if (u = !!u && !!u.noTargetGet, typeof s == "function") { + typeof i != "string" || ka(s, "name") || kb(s, "name", i); + var f = n(s); + f.source || (f.source = r.join(typeof i == "string" ? i : "")); + } + o === R ? l ? o[i] = s : Bj(i, s) : (a ? !u && o[i] && (l = !0) : delete o[i], l ? o[i] = s : kb(o, i, s)); + })(Function.prototype, "toString", function() { + return typeof this == "function" && t(this).source || Cj(this); + }); + }), oo = function(e) { + return typeof e == "function" ? e : void 0; + }, Pc = function(e, t) { + return 2 > arguments.length ? oo(R[e]) || oo(R[e]) : R[e] && R[e][t] || R[e] && R[e][t]; + }, aw = Math.ceil, bw = Math.floor, yc = function(e) { + return isNaN(e = +e) ? 0 : (0 < e ? bw : aw)(e); + }, cw = Math.min, Ma = function(e) { + return 0 < e ? cw(yc(e), 9007199254740991) : 0; + }, dw = Math.max, ew = Math.min, Vb = function(e, t) { + return 0 > (e = yc(e)) ? dw(e + t, 0) : ew(e, t); + }, po = function(e) { + return function(t, n, r) { + t = Mb(t); + var o = Ma(t.length); + if (r = Vb(r, o), e && n != n) { + for (; o > r; ) + if ((n = t[r++]) != n) + return !0; + } else + for (; o > r; r++) + if ((e || r in t) && t[r] === n) + return e || r || 0; + return !e && -1; + }; + }, qo = po(!0), Fj = po(!1), ro = function(e, t) { + e = Mb(e); + var n, r = 0, o = []; + for (n in e) + !ka(bf, n) && ka(e, n) && o.push(n); + for (; t.length > r; ) + ka(e, n = t[r++]) && (~Fj(o, n) || o.push(n)); + return o; + }, zh = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "), fw = zh.concat("length", "prototype"), de = { f: Object.getOwnPropertyNames || function(e) { + return ro(e, fw); + } }, gg = { f: Object.getOwnPropertySymbols }, so = Pc("Reflect", "ownKeys") || function(e) { + var t = de.f(Ia(e)), n = gg.f; + return n ? t.concat(n(e)) : t; + }, to = function(e, t) { + for (var n = so(t), r = qb.f, o = dc.f, i = 0; i < n.length; i++) { + var s = n[i]; + ka(e, s) || r(e, s, o(t, s)); + } + }, gw = /#|\.prototype\./, Qc = function(e, t) { + return (e = hw[iw(e)]) == jw || e != kw && (typeof t == "function" ? la(t) : !!t); + }, iw = Qc.normalize = function(e) { + return String(e).replace(gw, ".").toLowerCase(); + }, hw = Qc.data = {}, kw = Qc.NATIVE = "N", jw = Qc.POLYFILL = "P", lw = dc.f, ea = function(e, t) { + var n, r, o, i = e.target, s = e.global, u = e.stat; + if (r = s ? R : u ? R[i] || Bj(i, {}) : (R[i] || {}).prototype) + for (o in t) { + var a = t[o], l = e.noTargetGet ? (n = lw(r, o)) && n.value : r[o]; + if (!(n = Qc(s ? o : i + (u ? "." : "#") + o, e.forced)) && l !== void 0) { + if (typeof a == typeof l) + continue; + to(a, l); + } + (e.sham || l && l.sham) && kb(a, "sham", !0); + try { + Za(r, o, a, e); + } catch (f) { + } + } + }, Gj = function() { + var e = Ia(this), t = ""; + return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.dotAll && (t += "s"), e.unicode && (t += "u"), e.sticky && (t += "y"), t; + }, Rc = la(function() { + var e = /a/y; + return e.lastIndex = 2, e.exec("abcd") != null; + }), mw = la(function() { + var e = /^r/gy; + return e.lastIndex = 2, e.exec("str") != null; + }), Ah = RegExp.prototype.exec, nw = Ad("native-string-replace", String.prototype.replace), uo = Ah, Hj = (c = /a/, b = /b*/g, Ah.call(c, "a"), Ah.call(b, "a"), c.lastIndex !== 0 || b.lastIndex !== 0), vo = Rc || mw, Ij = /()??/.exec("")[1] !== void 0, c, b; + (Hj || Ij || vo) && (uo = function(e) { + var t, n = vo && this.sticky, r = Gj.call(this), o = this.source, i = 0, s = e; + if (n) { + (r = r.replace("y", "")).indexOf("g") === -1 && (r += "g"), s = String(e).slice(this.lastIndex), 0 < this.lastIndex && (!this.multiline || this.multiline && e[this.lastIndex - 1] !== ` +`) && (o = "(?: " + o + ")", s = " " + s, i++); + var u = new RegExp("^(?:" + o + ")", r); + } + if (Ij && (u = new RegExp("^" + o + "$(?!\\s)", r)), Hj) + var a = this.lastIndex; + var l = Ah.call(n ? u : this, s); + return n ? l ? (l.input = l.input.slice(i), l[0] = l[0].slice(i), l.index = this.lastIndex, this.lastIndex += l[0].length) : this.lastIndex = 0 : Hj && l && (this.lastIndex = this.global ? l.index + l[0].length : a), Ij && l && 1 < l.length && nw.call(l[0], u, function() { + for (t = 1; t < arguments.length - 2; t++) + arguments[t] === void 0 && (l[t] = void 0); + }), l; + }); + var hg = uo; + ea({ target: "RegExp", proto: !0, forced: /./.exec !== hg }, { exec: hg }); + var df = Pc("navigator", "userAgent") || "", wo = R.process, xo = wo && wo.versions, yo = xo && xo.v8; + if (yo) + var Bd = yo.split("."), Jj = 4 > Bd[0] ? 1 : Bd[0] + Bd[1]; + else + df && (Bd = df.match(/Edge\/(\d+)/), (!Bd || 74 <= Bd[1]) && (Bd = df.match(/Chrome\/(\d+)/)) && (Jj = Bd[1])); + var Cd = Jj && +Jj, Sc = !!Object.getOwnPropertySymbols && !la(function() { + return !String(Symbol()) || !Symbol.sham && Cd && 41 > Cd; + }), zo = Sc && !Symbol.sham && typeof Symbol.iterator == "symbol", ig = Ad("wks"), jg = R.Symbol, ow = zo ? jg : jg && jg.withoutSetter || af, Fa = function(e) { + return ka(ig, e) && (Sc || typeof ig[e] == "string") || (Sc && ka(jg, e) ? ig[e] = jg[e] : ig[e] = ow("Symbol." + e)), ig[e]; + }, pw = Fa("species"), Kj = RegExp.prototype, qw = !la(function() { + var e = /./; + return e.exec = function() { + var t = []; + return t.groups = { a: "7" }, t; + }, "".replace(e, "$") !== "7"; + }), Ao = "a".replace(/./, "$0") === "$0", Bo = Fa("replace"), Co = !!/./[Bo] && /./[Bo]("a", "$0") === "", rw = !la(function() { + var e = /(?:)/, t = e.exec; + return e.exec = function() { + return t.apply(this, arguments); + }, (e = "ab".split(e)).length !== 2 || e[0] !== "a" || e[1] !== "b"; + }), Bh = function(e, t, n, r) { + var o = Fa(e), i = !la(function() { + var l = {}; + return l[o] = function() { + return 7; + }, ""[e](l) != 7; + }), s = i && !la(function() { + var l = !1, f = /a/; + return e === "split" && ((f = { constructor: {} }).constructor[pw] = function() { + return f; + }, f.flags = "", f[o] = /./[o]), f.exec = function() { + return l = !0, null; + }, f[o](""), !l; + }); + if (!i || !s || e === "replace" && (!qw || !Ao || Co) || e === "split" && !rw) { + var u = /./[o], a = (n = n(o, ""[e], function(l, f, h, d, p) { + var v = f.exec; + return v === hg || v === Kj.exec ? i && !p ? { done: !0, value: u.call(f, h, d) } : { done: !0, value: l.call(h, f, d) } : { done: !1 }; + }, { REPLACE_KEEPS_$0: Ao, REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: Co }))[1]; + Za(String.prototype, e, n[0]), Za(Kj, o, t == 2 ? function(l, f) { + return a.call(l, this, f); + } : function(l) { + return a.call(l, this); + }); + } + r && kb(Kj[o], "sham", !0); + }, sw = Fa("match"), Lj = function(e) { + var t; + return xa(e) && ((t = e[sw]) !== void 0 ? !!t : xc(e) == "RegExp"); + }, Wb = function(e) { + if (typeof e != "function") + throw TypeError(String(e) + " is not a function"); + return e; + }, tw = Fa("species"), ee = function(e, t) { + var n; + return (e = Ia(e).constructor) === void 0 || (n = Ia(e)[tw]) == null ? t : Wb(n); + }, Do = function(e) { + return function(t, n) { + t = String(Eb(t)), n = yc(n); + var r, o = t.length; + if (0 > n || n >= o) + return e ? "" : void 0; + var i = t.charCodeAt(n); + return 55296 > i || 56319 < i || n + 1 === o || 56320 > (r = t.charCodeAt(n + 1)) || 57343 < r ? e ? t.charAt(n) : i : e ? t.slice(n, n + 2) : r - 56320 + (i - 55296 << 10) + 65536; + }; + }, uw = Do(!1), Eo = Do(!0), Mj = function(e, t, n) { + return t + (n ? Eo(e, t).length : 1); + }, ef = function(e, t) { + var n = e.exec; + if (typeof n == "function") { + if (typeof (e = n.call(e, t)) != "object") + throw TypeError("RegExp exec method returned something other than an Object or null"); + return e; + } + if (xc(e) !== "RegExp") + throw TypeError("RegExp#exec called on incompatible receiver"); + return hg.call(e, t); + }, vw = [].push, ww = Math.min; + Bh("split", 2, function(e, t, n) { + var r = "abbc".split(/(b)*/)[1] == "c" || "test".split(/(?:)/, -1).length != 4 || "ab".split(/(?:ab)*/).length != 2 || ".".split(/(.?)(.?)/).length != 4 || 1 < ".".split(/()()/).length || "".split(/.?/).length ? function(o, i) { + var s = String(Eb(this)); + if ((i = i === void 0 ? 4294967295 : i >>> 0) === 0) + return []; + if (o === void 0) + return [s]; + if (!Lj(o)) + return t.call(s, o, i); + var u, a, l, f = [], h = 0; + for (o = new RegExp(o.source, (o.ignoreCase ? "i" : "") + (o.multiline ? "m" : "") + (o.unicode ? "u" : "") + (o.sticky ? "y" : "") + "g"); (u = hg.call(o, s)) && !((a = o.lastIndex) > h && (f.push(s.slice(h, u.index)), 1 < u.length && u.index < s.length && vw.apply(f, u.slice(1)), l = u[0].length, h = a, f.length >= i)); ) + o.lastIndex === u.index && o.lastIndex++; + return h === s.length ? (l || !o.test("")) && f.push("") : f.push(s.slice(h)), f.length > i ? f.slice(0, i) : f; + } : "0".split(void 0, 0).length ? function(o, i) { + return o === void 0 && i === 0 ? [] : t.call(this, o, i); + } : t; + return [function(o, i) { + var s = Eb(this), u = o == null ? void 0 : o[e]; + return u !== void 0 ? u.call(o, s, i) : r.call(String(s), o, i); + }, function(o, i) { + var s = n(r, o, this, i, r !== t); + if (s.done) + return s.value; + var u = Ia(o); + o = String(this); + var a = ee(u, RegExp); + if (s = u.unicode, u = new a(Rc ? "^(?:" + u.source + ")" : u, (u.ignoreCase ? "i" : "") + (u.multiline ? "m" : "") + (u.unicode ? "u" : "") + (Rc ? "g" : "y")), (i = i === void 0 ? 4294967295 : i >>> 0) === 0) + return []; + if (o.length === 0) + return ef(u, o) === null ? [o] : []; + var l = 0, f = 0; + for (a = []; f < o.length; ) { + u.lastIndex = Rc ? 0 : f; + var h, d = ef(u, Rc ? o.slice(f) : o); + if (d === null || (h = ww(Ma(u.lastIndex + (Rc ? f : 0)), o.length)) === l) + f = Mj(o, f, s); + else { + if (a.push(o.slice(l, f)), a.length === i) + return a; + for (l = 1; l <= d.length - 1; l++) + if (a.push(d[l]), a.length === i) + return a; + f = l = h; + } + } + return a.push(o.slice(l)), a; + }]; + }, Rc); + var xw = /^[\t\n\x0B\f\r \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff][\t\n\x0B\f\r \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff]*/, yw = /[\t\n\x0B\f\r \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff][\t\n\x0B\f\r \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff]*$/, Nj = function(e) { + return function(t) { + return t = String(Eb(t)), 1 & e && (t = t.replace(xw, "")), 2 & e && (t = t.replace(yw, "")), t; + }; + }, Oj = Nj(3), Ch = R.parseInt, zw = /^[+-]?0[Xx]/, Fo = Ch(` +\v\f\r                 \u2028\u2029\uFEFF08`) !== 8 || Ch(` +\v\f\r                 \u2028\u2029\uFEFF0x16`) !== 22 ? function(e, t) { + return e = Oj(String(e)), Ch(e, t >>> 0 || (zw.test(e) ? 16 : 10)); + } : Ch; + ea({ global: !0, forced: parseInt != Fo }, { parseInt: Fo }); + var Dd = function(e, t, n) { + if (Wb(e), t === void 0) + return e; + switch (n) { + case 0: + return function() { + return e.call(t); + }; + case 1: + return function(r) { + return e.call(t, r); + }; + case 2: + return function(r, o) { + return e.call(t, r, o); + }; + case 3: + return function(r, o, i) { + return e.call(t, r, o, i); + }; + } + return function() { + return e.apply(t, arguments); + }; + }, Ed = Array.isArray || function(e) { + return xc(e) == "Array"; + }, Aw = Fa("species"), Dh = function(e, t) { + if (Ed(e)) { + var n = e.constructor; + typeof n != "function" || n !== Array && !Ed(n.prototype) ? xa(n) && (n = n[Aw]) === null && (n = void 0) : n = void 0; + } + return new (n === void 0 ? Array : n)(t === 0 ? 0 : t); + }, Go = [].push, Fd = function(e) { + var t = e == 1, n = e == 2, r = e == 3, o = e == 4, i = e == 6, s = e == 7, u = e == 5 || i; + return function(a, l, f, h) { + var d = pb(a), p = fg(d); + l = Dd(l, f, 3), f = Ma(p.length); + var v, y = 0; + for (h = h || Dh, a = t ? h(a, f) : n || s ? h(a, 0) : void 0; f > y; y++) + if ((u || y in p) && (v = l(h = p[y], y, d), e)) + if (t) + a[y] = v; + else if (v) + switch (e) { + case 3: + return !0; + case 5: + return h; + case 6: + return y; + case 2: + Go.call(a, h); + } + else + switch (e) { + case 4: + return !1; + case 7: + Go.call(a, h); + } + return i ? -1 : r || o ? o : a; + }; + }, fe = Fd(0), Ho = Fd(1), Io = Fd(2), Bw = Fd(3), Cw = Fd(4), Jo = Fd(5), Dw = Fd(6), Ew = Fa("species"), kg = function(e) { + return 51 <= Cd || !la(function() { + var t = []; + return (t.constructor = {})[Ew] = function() { + return { foo: 1 }; + }, t[e](Boolean).foo !== 1; + }); + }, Fw = kg("filter"); + ea({ target: "Array", proto: !0, forced: !Fw }, { filter: function(e) { + return Io(this, e, 1 < arguments.length ? arguments[1] : void 0); + } }); + var ed = Object.keys || function(e) { + return ro(e, zh); + }, Gw = la(function() { + ed(1); + }); + ea({ target: "Object", stat: !0, forced: Gw }, { keys: function(e) { + return ed(pb(e)); + } }); + var ff = function(e, t) { + var n = [][e]; + return !!n && la(function() { + n.call(null, t || function() { + throw 1; + }, 1); + }); + }, Hw = [].join, Iw = fg != Object, Jw = ff("join", ","); + ea({ target: "Array", proto: !0, forced: Iw || !Jw }, { join: function(e) { + return Hw.call(Mb(this), e === void 0 ? "," : e); + } }); + var Kw = kg("map"); + ea({ target: "Array", proto: !0, forced: !Kw }, { map: function(e) { + return Ho(this, e, 1 < arguments.length ? arguments[1] : void 0); + } }); + var Pj = function(e) { + var t = e.return; + if (t !== void 0) + return Ia(t.call(e)).value; + }, gf = {}, Lw = Fa("iterator"), Mw = Array.prototype, Qj = function(e) { + return e !== void 0 && (gf.Array === e || Mw[Lw] === e); + }, hf = function(e, t, n) { + (t = Oc(t)) in e ? qb.f(e, t, Nc(0, n)) : e[t] = n; + }, Nw = Fa("toStringTag"), Ko = {}; + Ko[Nw] = "z"; + var Rj = String(Ko) === "[object z]", Ow = Fa("toStringTag"), Pw = xc(function() { + return arguments; + }()) == "Arguments", jf = Rj ? xc : function(e) { + var t; + if (e === void 0) + var n = "Undefined"; + else { + if (e === null) + var r = "Null"; + else { + t: { + var o = e = Object(e); + try { + r = o[Ow]; + break t; + } catch (i) { + } + r = void 0; + } + r = typeof (n = r) == "string" ? n : Pw ? xc(e) : (t = xc(e)) == "Object" && typeof e.callee == "function" ? "Arguments" : t; + } + n = r; + } + return n; + }, Qw = Fa("iterator"), lg = function(e) { + if (e != null) + return e[Qw] || e["@@iterator"] || gf[jf(e)]; + }, ge = function(e) { + var t, n = pb(e), r = typeof this == "function" ? this : Array, o = arguments.length, i = 1 < o ? arguments[1] : void 0, s = i !== void 0, u = lg(n), a = 0; + if (s && (i = Dd(i, 2 < o ? arguments[2] : void 0, 2)), u == null || r == Array && Qj(u)) { + var l = Ma(n.length); + for (r = new r(l); l > a; a++) + u = s ? i(n[a], a) : n[a], hf(r, a, u); + } else + for (o = (n = u.call(n)).next, r = new r(); !(t = o.call(n)).done; a++) { + if (s) { + u = n; + var f = i; + t = [t.value, a]; + try { + l = f(Ia(t)[0], t[1]); + } catch (h) { + throw Pj(u), h; + } + } else + l = t.value; + hf(r, a, u = l); + } + return r.length = a, r; + }, Lo = Fa("iterator"), Mo = !1; + try { + var Rw = 0, No = { next: function() { + return { done: !!Rw++ }; + }, return: function() { + Mo = !0; + } }; + No[Lo] = function() { + return this; + }, Array.from(No, function() { + throw 2; + }); + } catch (e) { + } + var Eh = function(e, t) { + if (!t && !Mo) + return !1; + var n = !1; + try { + (t = {})[Lo] = function() { + return { next: function() { + return { done: n = !0 }; + } }; + }, e(t); + } catch (r) { + } + return n; + }, Sw = !Eh(function(e) { + Array.from(e); + }); + ea({ target: "Array", stat: !0, forced: Sw }, { from: ge }); + var Oo = !la(function() { + function e() { + } + return e.prototype.constructor = null, Object.getPrototypeOf(new e()) !== e.prototype; + }), Po = xh("IE_PROTO"), Tw = Object.prototype, uc = Oo ? Object.getPrototypeOf : function(e) { + return e = pb(e), ka(e, Po) ? e[Po] : typeof e.constructor == "function" && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? Tw : null; + }, Sj = Fa("iterator"), Qo = !1, Uw = function() { + return this; + }, he; + if ([].keys) { + var Ro = [].keys(); + if ("next" in Ro) { + var So = uc(uc(Ro)); + So !== Object.prototype && (he = So); + } else + Qo = !0; + } + (he == null || la(function() { + var e = {}; + return he[Sj].call(e) !== e; + })) && (he = {}), ka(he, Sj) || kb(he, Sj, Uw); + var Fh = he, Gh = Qo, To = wa ? Object.defineProperties : function(e, t) { + Ia(e); + for (var n, r = ed(t), o = r.length, i = 0; o > i; ) + qb.f(e, n = r[i++], t[n]); + return e; + }, Tj = Pc("document", "documentElement"), Uo = xh("IE_PROTO"), Uj = function() { + }, Vj, Hh = function() { + try { + Vj = document.domain && new ActiveXObject("htmlfile"); + } catch (t) { + } + if (Vj) { + var e = Vj; + e.write("